15extern const fix32 sintab_f32[1024];
16extern const fix16 sintab_f16[1024];
18extern const fix16 log2tab_f16[0x10000];
19extern const fix16 log10tab_f16[0x10000];
20extern const fix16 sqrttab_f16[0x10000];
27#define min(X, Y) (((X) < (Y))?(X):(Y))
33#define max(X, Y) (((X) > (Y))?(X):(Y))
39#define clamp(X, L, H) (min(max((X), (L)), (H)))
41#if (ENABLE_NEWLIB == 0)
46#define abs(X) (((X) < 0)?-(X):(X))
54#define PI 3.14159265358979323846
58#define FIX16_INT_BITS 10
59#define FIX16_FRAC_BITS (16 - FIX16_INT_BITS)
61#define FIX16_INT_MASK (((1 << FIX16_INT_BITS) - 1) << FIX16_FRAC_BITS)
62#define FIX16_FRAC_MASK ((1 << FIX16_FRAC_BITS) - 1)
65#define FIX32_INT_BITS 22
66#define FIX32_FRAC_BITS (32 - FIX32_INT_BITS)
68#define FIX32_INT_MASK (((1 << FIX32_INT_BITS) - 1) << FIX32_FRAC_BITS)
69#define FIX32_FRAC_MASK ((1 << FIX32_FRAC_BITS) - 1)
72#define FASTFIX16_INT_BITS 8
73#define FASTFIX16_FRAC_BITS (16 - FASTFIX16_INT_BITS)
75#define FASTFIX16_INT_MASK (((1 << FASTFIX16_INT_BITS) - 1) << FASTFIX16_FRAC_BITS)
76#define FASTFIX16_FRAC_MASK ((1 << FASTFIX16_FRAC_BITS) - 1)
79#define FASTFIX32_INT_BITS 16
80#define FASTFIX32_FRAC_BITS (32 - FASTFIX32_INT_BITS)
82#define FASTFIX32_INT_MASK (((1 << FASTFIX32_INT_BITS) - 1) << FASTFIX32_FRAC_BITS)
83#define FASTFIX32_FRAC_MASK ((1 << FASTFIX32_FRAC_BITS) - 1)
93#define FIX16(value) ((fix16) ((value) * (1 << FIX16_FRAC_BITS)))
102#define FIX32(value) ((fix32) ((value) * (1 << FIX32_FRAC_BITS)))
111#define FASTFIX16(value) ((fastfix16) ((value) * (1 << FASTFIX16_FRAC_BITS)))
120#define FASTFIX32(value) ((fastfix32) ((value) * (1 << FASTFIX32_FRAC_BITS)))
575#define fix16Add(a, b) _Pragma("GCC error \"This method is deprecated, simply use '+' operator to add fix16 values together.\"")
576#define fix16Sub(a, b) _Pragma("GCC error \"This method is deprecated, simply use '-' operator to subtract fix16 values.\"")
577#define fix16Neg(a) _Pragma("GCC error \"This method is deprecated, simply use '0 - value' to get the negative fix16 value.\"")
662#define fix32Add(a, b) _Pragma("GCC error \"This method is deprecated, simply use '+' operator to add fix32 values together.\"")
663#define fix32Sub(a, b) _Pragma("GCC error \"This method is deprecated, simply use '-' operator to subtract fix32 values.\"")
664#define fix32Neg(a) _Pragma("GCC error \"This method is deprecated, simply use '0 - value' to get the negative fix32 value.\"")
808#define distance_approx(dx, dy) _Pragma("GCC error \"This method is deprecated, use getApproximatedDistance(..) instead.\"")
fix16 sinFix16(u16 value)
Compute sinus of specified value and return it as fix16. The input value is an integer defined as [0...
Definition maths.c:165
Vect2D_u32 V2u32
alias for Vect2D_u32
Definition maths.h:367
fix32 fix32Frac(fix32 value)
Return fractional part of the specified value (fix32).
Definition maths.c:196
Vect3D_u16 V3u16
alias for Vect3D_u16
Definition maths.h:384
s32 getApproximatedLog2(s32 value)
Return 16.16 fixed point approximation of log2 of the specified 16.16 fixed point value....
Definition maths.c:411
fix16 fix16Div(fix16 val1, fix16 val2)
Compute and return the result of the division of val1 by val2 (fix16).
Definition maths.c:139
u32 getNextPow2(u32 value)
Return next pow2 value which is greater than specified 32 bits unsigned value. Ex: getNextPow2(700) ...
Definition maths.c:523
fix32 fix32Avg(fix32 val1, fix32 val2)
Compute and return the result of the average of val1 by val2 (fix32).
Definition maths.c:223
Vect4D_f32 V4f32
alias for Vect4D_f32
Definition maths.h:413
fastfix32 fastFix32Div(fastfix32 val1, fastfix32 val2)
Compute and return the result of the division of val1 by val2 (fastfix32). WARNING: result can easil...
Definition maths.c:331
fix16 fix16Int(fix16 value)
Return integer part of the specified value (fix16).
Definition maths.c:128
fix32 fix32Int(fix32 value)
Return integer part of the specified value (fix32).
Definition maths.c:201
fix16 fix16Sqrt(fix16 value)
Compute and return the result of the root square of specified value (fix16).
Definition maths.c:160
fastfix16 fastFix16Mul(fastfix16 val1, fastfix16 val2)
Compute and return the result of the multiplication of val1 and val2 (fastfix16).
Definition maths.c:282
u16 divu(u32 op1, u16 op2)
Direct divu instruction (unsigned 32/16=16:16) access using inline assembly to process op1/op2 operat...
Definition maths.c:40
Vect3D_s16 V3s16
alias for Vect3D_s16
Definition maths.h:388
s32 muls(s16 op1, s16 op2)
16x16=32 signed multiplication. Force GCC to use proper 68000 muls instruction.
Definition maths.c:15
Vect2D_f16 V2f16
alias for Vect2D_f16
Definition maths.h:375
fix32 intToFix32(s32 value)
Convert integer to fix32.
Definition maths.c:176
fix32 fix32Mul(fix32 val1, fix32 val2)
Compute and return the result of the multiplication of val1 and val2 (fix32). WARNING: result can ea...
Definition maths.c:207
Mat4D_f16 M4f16
alias for Mat4D_f16
Definition maths.h:434
s32 divmods(s32 op1, s16 op2)
Direct divs instruction (signed 32/16=16:16) access using inline assembly to process op1/op2 operatio...
Definition maths.c:92
fix16 fix16Log2(fix16 value)
Compute and return the result of the Log2 of specified value (fix16).
Definition maths.c:150
fastfix16 fastFix16Div(fastfix16 val1, fastfix16 val2)
Compute and return the result of the division of val1 by val2 (fastfix16).
Definition maths.c:287
fastfix32 fastFix32Round(fastfix32 value)
Round the specified value to nearest integer (fastfix32).
Definition maths.c:303
Mat3D_f32 M3f32
alias for Mat3D_f32
Definition maths.h:430
u16 modu(u32 op1, u16 op2)
Direct divu instruction (unsigned 32/16=16:16) access using inline assembly.
Definition maths.c:60
fix32 fix16ToFix32(fix16 value)
Convert specified fix16 value to fix32.
Definition maths.c:234
s16 fastFix16ToRoundedInt(fastfix16 value)
Round and convert the specified fastfix16 value to integer (fastfix16).
Definition maths.c:266
fix16 fix16Mul(fix16 val1, fix16 val2)
Compute and return the result of the multiplication of val1 and val2 (fix16).
Definition maths.c:134
fastfix16 fastFix16Frac(fastfix16 value)
Return fractional part of the specified value (fastfix16).
Definition maths.c:271
Vect3D_f16 V3f16
alias for Vect3D_f16
Definition maths.h:400
s16 fastFix16ToInt(fastfix16 value)
Convert fastfix16 to integer.
Definition maths.c:256
s16 fix16ToInt(fix16 value)
Convert fix16 to integer.
Definition maths.c:108
fix16 fix16Frac(fix16 value)
Return fractional part of the specified value (fix16).
Definition maths.c:123
Vect2D_s16 V2s16
alias for Vect2D_s16
Definition maths.h:363
s16 fix16ToRoundedInt(fix16 value)
Round and convert the specified fix16 value to integer.
Definition maths.c:118
s32 fix32ToInt(fix32 value)
Convert fix32 to integer.
Definition maths.c:181
fastfix32 fastFix32Mul(fastfix32 val1, fastfix32 val2)
Compute and return the result of the multiplication of val1 and val2 (fastfix32). WARNING: result ca...
Definition maths.c:323
fix16 fix16Round(fix16 value)
Round the specified value to nearest integer (fix16).
Definition maths.c:113
s16 divs(s32 op1, s16 op2)
Direct divs instruction (signed 32/16=16:16) access using inline assembly to process op1/op2 operatio...
Definition maths.c:50
Mat2D_f32 M2f32
alias for Mat2D_f32
Definition maths.h:422
Vect2D_u16 V2u16
alias for Vect2D_u16
Definition maths.h:359
fastfix32 fastFix32Frac(fastfix32 value)
Return fractional part of the specified value (fastfix32).
Definition maths.c:313
Mat2D_f16 M2f16
alias for Mat2D_f16
Definition maths.h:418
fix32 sinFix32(u16 value)
Compute sinus of specified value and return it as fix32. The input value is an integer defined as [0...
Definition maths.c:240
Vect4D_f16 V4f16
alias for Vect4D_f16
Definition maths.h:409
u32 getApproximatedDistance(s32 dx, s32 dy)
Return euclidean distance approximation for specified vector. The returned distance is not 100% perf...
Definition maths.c:382
fix16 fix16Log10(fix16 value)
Compute and return the result of the Log10 of specified value (fix16).
Definition maths.c:155
u32 divmodu(u32 op1, u16 op2)
Direct divu instruction (unsigned 32/16=16:16) access using inline assembly to process op1/op2 operat...
Definition maths.c:82
fastfix32 fastFix32Int(fastfix32 value)
Return integer part of the specified value (fastfix32).
Definition maths.c:318
u16 getLog2Int(u32 value)
Return integer log2 of specified 32 bits unsigned value. Ex: getLog2Int(1024) = 10 getLog2Int(12345...
Definition maths.c:493
Vect3D_u32 V3u32
alias for Vect3D_u32
Definition maths.h:392
u32 mulu(u16 op1, u16 op2)
16x16=32 unsigned multiplication. Force GCC to use proper 68000 mulu instruction.
Definition maths.c:10
Vect3D_f32 V3f32
alias for Vect3D_f32
Definition maths.h:404
Vect2D_f32 V2f32
alias for Vect2D_f32
Definition maths.h:379
u32 intToBCD(u32 value)
Binary to Decimal conversion.
Definition maths.c:340
s32 fix32ToRoundedInt(fix32 value)
Round and convert the specified fix32 value to integer.
Definition maths.c:191
s16 mods(s32 op1, s16 op2)
Direct divs instruction (signed 32/16=16:16) access using inline assembly.
Definition maths.c:71
s32 fastFix32ToRoundedInt(fastfix32 value)
Round and convert the specified fastfix32 value to integer.
Definition maths.c:308
fix16 fix32ToFix16(fix32 value)
Convert specified fix32 value to fix16.
Definition maths.c:229
fastfix16 fastFix16Int(fastfix16 value)
Return integer part of the specified value (fastfix16).
Definition maths.c:276
fix16 fix16Avg(fix16 val1, fix16 val2)
Compute and return the result of the average of val1 by val2 (fix16).
Definition maths.c:144
Vect3D_s32 V3s32
alias for Vect3D_s32
Definition maths.h:396
fastfix16 fastFix16Round(fastfix16 value)
Round the specified value to nearest integer (fastfix16).
Definition maths.c:261
fastfix16 intToFastFix16(s16 value)
Convert integer to fastfix16.
Definition maths.c:251
u32 getApproximatedDistanceV(V2s32 *v)
Return euclidean distance approximation for specified vector. The returned distance is not 100% perf...
Definition maths.c:405
Vect2D_s32 V2s32
alias for Vect2D_s32
Definition maths.h:371
fastfix32 intToFastFix32(s16 value)
Convert integer to fastfix32.
Definition maths.c:293
fix16 intToFix16(s16 value)
Convert integer to fix16.
Definition maths.c:103
Mat4D_f32 M4f32
alias for Mat4D_f32
Definition maths.h:438
fix32 cosFix32(u16 value)
Compute cosinus of specified value and return it as fix32. The input value is an integer defined as ...
Definition maths.c:245
fix32 fix32Round(fix32 value)
Round the specified value to nearest integer (fix32).
Definition maths.c:186
Mat3D_f16 M3f16
alias for Mat3D_f16
Definition maths.h:426
s16 fastFix32ToInt(fastfix32 value)
Convert fastfix32 to integer.
Definition maths.c:298
fix32 fix32Div(fix32 val1, fix32 val2)
Compute and return the result of the division of val1 by val2 (fix32). WARNING: result can easily ov...
Definition maths.c:215
fix16 cosFix16(u16 value)
Compute cosinus of specified value and return it as fix16. The input value is an integer defined as ...
Definition maths.c:170
2x2 Matrice structure - f16 (fix16) type. Internally uses 2 2D vectors.
Definition maths.h:191
2x2 Matrice structure - f32 (fix32) type. Internally uses 2 2D vectors.
Definition maths.h:202
3x3 Matrice structure - f16 (fix16) type. Internally uses 3 3D vectors.
Definition maths.h:282
3x3 Matrice structure - f32 (fix32) type. Internally uses 3 3D vectors.
Definition maths.h:294
4x4 Matrice structure - f16 (fix16) type. Internally uses 4 4D vectors.
Definition maths.h:333
4x4 Matrice structure - f32 (fix32) type. Internally uses 4 4D vectors.
Definition maths.h:346
2D Vector structure - f16 (fix16) type.
Definition maths.h:170
2D Vector structure - f32 (fix32) type.
Definition maths.h:180
2D Vector structure - s16 type.
Definition maths.h:140
2D Vector structure - s32 type.
Definition maths.h:160
2D Vector structure - u16 type.
Definition maths.h:130
2D Vector structure - u32 type.
Definition maths.h:150
3D Vector structure - f16 (fix16) type.
Definition maths.h:259
3D Vector structure - f32 (fix32) type.
Definition maths.h:270
3D Vector structure - s16 type.
Definition maths.h:226
3D Vector structure - s32 type.
Definition maths.h:248
3D Vector structure - u16 type.
Definition maths.h:215
3D Vector structure - u32 type.
Definition maths.h:237
4D Vector structure - f16 (fix16) type.
Definition maths.h:308
4D Vector structure - f32 (fix32) type.
Definition maths.h:320
s32 fastfix32
Definition types.h:207
s16 fastfix16
Definition types.h:202
unsigned long u32
Definition types.h:105
s32 fix32
Definition types.h:186
unsigned short u16
Definition types.h:100
long s32
Definition types.h:89
short s16
Definition types.h:84
s16 fix16
Definition types.h:181