blob: 896de2046fce4d433e03d21eb10bd4df1530afc9 [file] [log] [blame]
Christophe Favergeon18383772021-04-30 15:00:14 +02001import numpy as np
2
3def q31sat(x):
4 if x > 0x7FFFFFFF:
5 return(np.int32(0x7FFFFFFF))
6 elif x < -0x80000000:
7 return(np.int32(0x80000000))
8 else:
9 return(np.int32(x))
10
11q31satV=np.vectorize(q31sat)
12
13def toQ31(x):
14 return(q31satV(np.round(x * (1<<31))))
15
16def q15sat(x):
17 if x > 0x7FFF:
18 return(np.int16(0x7FFF))
19 elif x < -0x8000:
20 return(np.int16(0x8000))
21 else:
22 return(np.int16(x))
23
24q15satV=np.vectorize(q15sat)
25
26def toQ15(x):
27 return(q15satV(np.round(x * (1<<15))))
28
29def q7sat(x):
30 if x > 0x7F:
31 return(np.int8(0x7F))
32 elif x < -0x80:
33 return(np.int8(0x80))
34 else:
35 return(np.int8(x))
36
37q7satV=np.vectorize(q7sat)
38
39def toQ7(x):
40 return(q7satV(np.round(x * (1<<7))))
41
42def Q31toF32(x):
43 return(1.0*x / 2**31)
44
45def Q15toF32(x):
46 return(1.0*x / 2**15)
47
48def Q7toF32(x):
49 return(1.0*x / 2**7)