You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
87 lines
2.4 KiB
Python
87 lines
2.4 KiB
Python
import os.path
|
|
import numpy as np
|
|
import itertools
|
|
import Tools
|
|
import math
|
|
|
|
# Those patterns are used for tests and benchmarks.
|
|
# For tests, there is the need to add tests for saturation
|
|
|
|
# For benchmarks
|
|
NBSAMPLES=256
|
|
|
|
|
|
def writeTests(config,format):
|
|
|
|
a1=np.array([0,math.pi/4,math.pi/2,3*math.pi/4,math.pi,5*math.pi/4,3*math.pi/2,2*math.pi-1e-6])
|
|
a2=np.array([-math.pi/4,-math.pi/2,-3*math.pi/4,-math.pi,-5*math.pi/4,-3*math.pi/2,-2*math.pi-1e-6])
|
|
a3 = a1 + 2*math.pi
|
|
angles=np.concatenate((a1,a2,a3))
|
|
refcos = np.cos(angles)
|
|
refsin = np.sin(angles)
|
|
|
|
|
|
vals=np.array([0.0, 0.0, 0.1,1.0,2.0,3.0,3.5,3.6])
|
|
sqrtvals=np.sqrt(vals)
|
|
|
|
# Negative values in CMSIS are giving 0
|
|
vals[0] = -0.4
|
|
sqrtvals[0] = 0.0
|
|
|
|
if format != 0:
|
|
angles=np.concatenate((a1,a2,a1))
|
|
angles = angles / (2*math.pi)
|
|
config.writeInput(1, angles,"Angles")
|
|
config.writeInput(1, vals,"SqrtInput")
|
|
config.writeReference(1, refcos,"Cos")
|
|
config.writeReference(1, refsin,"Sin")
|
|
config.writeReference(1, sqrtvals,"Sqrt")
|
|
|
|
# For benchmarks
|
|
samples=np.random.randn(NBSAMPLES)
|
|
samples = np.abs(Tools.normalize(samples))
|
|
config.writeInput(1, samples,"Samples")
|
|
|
|
|
|
def writeTestsF32(config,format):
|
|
writeTests(config,format)
|
|
|
|
data1 = np.random.randn(20)
|
|
data1 = np.abs(data1)
|
|
data1 = data1 + 1e-3 # To avoid zero values
|
|
data1 = Tools.normalize(data1)
|
|
|
|
samples=np.concatenate((np.array([0.1,0.3,0.5,1.0,2.0]) , data1))
|
|
config.writeInput(1, samples,"LogInput")
|
|
v = np.log(samples)
|
|
config.writeReference(1, v,"Log")
|
|
|
|
samples=np.concatenate((np.array([0.0,1.0]),np.linspace(-0.4,0.4)))
|
|
config.writeInput(1, samples,"ExpInput")
|
|
v = np.exp(samples)
|
|
config.writeReference(1, v,"Exp")
|
|
|
|
# For benchmarks
|
|
samples=np.random.randn(NBSAMPLES)
|
|
samples = np.abs(Tools.normalize(samples))
|
|
config.writeInput(1, samples,"Samples")
|
|
|
|
|
|
def generatePatterns():
|
|
PATTERNDIR = os.path.join("Patterns","DSP","FastMath","FastMath")
|
|
PARAMDIR = os.path.join("Parameters","DSP","FastMath","FastMath")
|
|
|
|
configf32=Tools.Config(PATTERNDIR,PARAMDIR,"f32")
|
|
configq31=Tools.Config(PATTERNDIR,PARAMDIR,"q31")
|
|
configq15=Tools.Config(PATTERNDIR,PARAMDIR,"q15")
|
|
|
|
|
|
writeTestsF32(configf32,0)
|
|
writeTests(configq31,31)
|
|
writeTests(configq15,15)
|
|
|
|
|
|
if __name__ == '__main__':
|
|
generatePatterns()
|
|
|