ComplexMaths.py 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. import os.path
  2. import numpy as np
  3. import itertools
  4. import Tools
  5. # Those patterns are used for tests and benchmarks.
  6. # For tests, there is the need to add tests for saturation
  7. def randComplex(nb):
  8. data = np.random.randn(2*nb)
  9. data = data/max(data)
  10. data_comp = data.view(dtype=np.complex128)
  11. return(data_comp)
  12. def asReal(a):
  13. #return(a.view(dtype=np.float64))
  14. return(a.reshape(np.size(a)).view(dtype=np.float64))
  15. def writeTests(config):
  16. NBSAMPLES=256
  17. data1=randComplex(NBSAMPLES)
  18. data2=randComplex(NBSAMPLES)
  19. data3=np.random.randn(NBSAMPLES)
  20. data3 = data3/max(data3)
  21. config.writeInput(1, asReal(data1))
  22. config.writeInput(2, asReal(data2))
  23. config.writeInput(3, data3)
  24. ref = np.conj(data1)
  25. config.writeReference(1, asReal(ref))
  26. ref = np.array(np.dot(data1 ,data2))
  27. config.writeReference(2, asReal(ref))
  28. ref = np.absolute(data1)**2
  29. config.writeReference(3, asReal(ref))
  30. ref = data1 * data2
  31. config.writeReference(4, asReal(ref))
  32. ref = data1 * data3
  33. config.writeReference(5, asReal(ref))
  34. PATTERNDIR = os.path.join("Patterns","DSP","ComplexMaths","ComplexMaths")
  35. PARAMDIR = os.path.join("Parameters","DSP","ComplexMaths","ComplexMaths")
  36. configf32=Tools.Config(PATTERNDIR,PARAMDIR,"f32")
  37. configq31=Tools.Config(PATTERNDIR,PARAMDIR,"q31")
  38. configq15=Tools.Config(PATTERNDIR,PARAMDIR,"q15")
  39. #configq7=Tools.Config(PATTERNDIR,PARAMDIR,"q7")
  40. writeTests(configf32)
  41. writeTests(configq31)
  42. writeTests(configq15)
  43. #writeTests(configq7)