diff options
Diffstat (limited to 'stm/math.c')
| -rw-r--r-- | stm/math.c | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/stm/math.c b/stm/math.c new file mode 100644 index 000000000..ac680f6b7 --- /dev/null +++ b/stm/math.c @@ -0,0 +1,48 @@ +#include <math.h> + +// these 2 functions seem to actually work... no idea why +// replacing with libgcc does not work (probably due to wrong calling conventions) +double __aeabi_f2d(float x) { + // TODO + return 0.0; +} + +float __aeabi_d2f(double x) { + // TODO + return 0.0; +} + +/* +double sqrt(double x) { + // TODO + return 0.0; +} +*/ + +float sqrtf(float x) { + asm volatile ( + "vsqrt.f32 %[r], %[x]\n" + : [r] "=t" (x) + : [x] "t" (x)); + return x; +} + +// TODO we need import these functions from some library (eg musl or newlib) +float powf(float x, float y) { return 0.0; } +float expf(float x) { return 0.0; } +float logf(float x) { return 0.0; } +float log2f(float x) { return 0.0; } +float log10f(float x) { return 0.0; } +float coshf(float x) { return 0.0; } +float sinhf(float x) { return 0.0; } +float tanhf(float x) { return 0.0; } +float acoshf(float x) { return 0.0; } +float asinhf(float x) { return 0.0; } +float atanhf(float x) { return 0.0; } +float cosf(float x) { return 0.0; } +float sinf(float x) { return 0.0; } +float tanf(float x) { return 0.0; } +float acosf(float x) { return 0.0; } +float asinf(float x) { return 0.0; } +float atanf(float x) { return 0.0; } +float atan2f(float x, float y) { return 0.0; } |
