lib/libm/math: Remove implementations of float conversion functions.
These implementations are incorrect (eg f2d and d2f don't handle special values like 0.0) and proper versions can be provided by libgcc (or equivalent depending on the toolchain). libgcc is now linked with the stmhal port so that library will provide these functions from now on.
This commit is contained in:
parent
c064f0a36a
commit
3bedff0b3c
|
@ -36,56 +36,6 @@ typedef union {
|
|||
};
|
||||
} float_s_t;
|
||||
|
||||
typedef union {
|
||||
double d;
|
||||
struct {
|
||||
uint64_t m : 52;
|
||||
uint64_t e : 11;
|
||||
uint64_t s : 1;
|
||||
};
|
||||
} double_s_t;
|
||||
|
||||
#if defined(__thumb__)
|
||||
|
||||
double __attribute__((pcs("aapcs"))) __aeabi_i2d(int32_t x) {
|
||||
return (float)x;
|
||||
}
|
||||
|
||||
// TODO
|
||||
long long __attribute__((pcs("aapcs"))) __aeabi_f2lz(float x) {
|
||||
return (long)x;
|
||||
}
|
||||
|
||||
double __attribute__((pcs("aapcs"))) __aeabi_f2d(float x) {
|
||||
float_s_t fx={0};
|
||||
double_s_t dx={0};
|
||||
|
||||
fx.f = x;
|
||||
dx.s = (fx.s);
|
||||
dx.e = (fx.e-127+1023) & 0x7FF;
|
||||
dx.m = fx.m;
|
||||
dx.m <<=(52-23); // left justify
|
||||
return dx.d;
|
||||
}
|
||||
|
||||
float __attribute__((pcs("aapcs"))) __aeabi_d2f(double x) {
|
||||
float_s_t fx={0};
|
||||
double_s_t dx={0};
|
||||
|
||||
dx.d = x;
|
||||
fx.s = (dx.s);
|
||||
fx.e = (dx.e-1023+127) & 0xFF;
|
||||
fx.m = (dx.m>>(52-23)); // right justify
|
||||
return fx.f;
|
||||
}
|
||||
|
||||
double __aeabi_dmul(double x , double y) {
|
||||
return 0.0;
|
||||
|
||||
}
|
||||
|
||||
#endif // defined(__thumb__)
|
||||
|
||||
#ifndef NDEBUG
|
||||
float copysignf(float x, float y) {
|
||||
float_s_t fx={.f = x};
|
||||
|
|
Loading…
Reference in New Issue