2024-02-17 01:04:22 +03:00
|
|
|
#include "sys.h"
|
2023-10-30 00:19:30 +03:00
|
|
|
|
2024-02-17 01:04:22 +03:00
|
|
|
f32 Math_TanF(f32 x) {
|
2024-04-03 19:42:03 +03:00
|
|
|
return tanf(x);
|
2023-11-03 02:36:13 +03:00
|
|
|
}
|
2023-10-30 00:19:30 +03:00
|
|
|
|
2024-02-17 01:04:22 +03:00
|
|
|
f32 Math_FloorF(f32 x) {
|
2024-04-03 19:42:03 +03:00
|
|
|
return floorf(x);
|
2023-11-03 02:36:13 +03:00
|
|
|
}
|
2023-10-30 00:19:30 +03:00
|
|
|
|
2024-02-17 01:04:22 +03:00
|
|
|
f32 Math_CeilF(f32 x) {
|
2024-04-03 19:42:03 +03:00
|
|
|
return ceilf(x);
|
2023-11-03 02:36:13 +03:00
|
|
|
}
|
2023-10-30 00:19:30 +03:00
|
|
|
|
2024-02-17 01:04:22 +03:00
|
|
|
f64 Math_Fabs(f64 x) {
|
2023-11-03 02:36:13 +03:00
|
|
|
return (x < 0.0) ? -x : x;
|
|
|
|
}
|
2023-10-30 00:19:30 +03:00
|
|
|
|
2024-02-17 01:04:22 +03:00
|
|
|
f32 Math_FabsF(f32 x) {
|
2023-11-03 02:36:13 +03:00
|
|
|
return (x < 0.0f) ? -x : x;
|
|
|
|
}
|
2023-10-30 00:19:30 +03:00
|
|
|
|
2024-02-17 01:04:22 +03:00
|
|
|
f32 Math_NearbyIntF(f32 x) {
|
|
|
|
return __nearbyintf(x);
|
2023-11-03 02:36:13 +03:00
|
|
|
}
|
2023-10-30 00:19:30 +03:00
|
|
|
|
2024-02-17 01:04:22 +03:00
|
|
|
f32 Math_TruncF(f32 x) {
|
|
|
|
return __truncf(x);
|
2023-11-03 02:36:13 +03:00
|
|
|
}
|
2023-10-30 00:19:30 +03:00
|
|
|
|
2024-02-17 01:04:22 +03:00
|
|
|
f32 Math_RoundF(f32 x) {
|
|
|
|
return __roundf(x);
|
2023-11-03 02:36:13 +03:00
|
|
|
}
|
2023-10-30 00:19:30 +03:00
|
|
|
|
2023-11-03 02:36:13 +03:00
|
|
|
f32 Math_FAtanF(f32 x) {
|
2024-04-03 19:42:03 +03:00
|
|
|
return atanf(x);
|
|
|
|
/*
|
2023-11-03 02:36:13 +03:00
|
|
|
s32 sector;
|
|
|
|
s32 i;
|
|
|
|
f32 sq;
|
|
|
|
f32 conv = 0.0f;
|
|
|
|
f32 z;
|
2023-10-30 00:19:30 +03:00
|
|
|
|
2023-11-03 02:36:13 +03:00
|
|
|
if (x > 1.0f) {
|
|
|
|
sector = 1;
|
|
|
|
x = 1.0f / x;
|
|
|
|
} else if (x < -1.0f) {
|
|
|
|
sector = -1;
|
|
|
|
x = 1.0f / x;
|
|
|
|
} else {
|
|
|
|
sector = 0;
|
|
|
|
}
|
2023-10-30 00:19:30 +03:00
|
|
|
|
2023-11-03 02:36:13 +03:00
|
|
|
sq = SQ(x);
|
2023-10-30 00:19:30 +03:00
|
|
|
|
2023-11-03 02:36:13 +03:00
|
|
|
for (z = i = 24; i != 0; i--) {
|
|
|
|
conv = SQ(z) * sq / (2.0f * z + 1.0f + conv);
|
|
|
|
z -= 1.0f;
|
|
|
|
}
|
|
|
|
|
|
|
|
if (sector > 0) {
|
2023-12-07 03:16:49 +03:00
|
|
|
return M_PI / 2.0f - (x / (1.0f + conv));
|
2023-11-03 02:36:13 +03:00
|
|
|
} else if (sector < 0) {
|
2023-12-07 03:16:49 +03:00
|
|
|
return -M_PI / 2.0f - (x / (1.0f + conv));
|
2023-11-03 02:36:13 +03:00
|
|
|
} else {
|
|
|
|
return x / (1.0f + conv);
|
|
|
|
}
|
2024-04-03 19:42:03 +03:00
|
|
|
*/
|
2023-11-03 02:36:13 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
f32 Math_FAtan2F(f32 y, f32 x) {
|
2024-04-03 19:42:03 +03:00
|
|
|
return atan2f(y, x);
|
|
|
|
/*
|
2023-11-03 02:36:13 +03:00
|
|
|
if ((y == 0.0f) && (x == 0.0f)) {
|
|
|
|
return 0.0f;
|
|
|
|
}
|
|
|
|
if (x == 0.0f) {
|
|
|
|
if (y < 0.0f) {
|
2023-12-07 03:16:49 +03:00
|
|
|
return -M_PI / 2.0f;
|
2023-11-03 02:36:13 +03:00
|
|
|
}
|
2023-12-07 03:16:49 +03:00
|
|
|
return M_PI / 2.0f;
|
2023-11-03 02:36:13 +03:00
|
|
|
}
|
|
|
|
if (x < 0.0f) {
|
|
|
|
if (y < 0.0f) {
|
|
|
|
return -(M_PI - Math_FAtanF(fabs(y / x)));
|
|
|
|
}
|
|
|
|
return M_PI - Math_FAtanF(fabs(y / x));
|
|
|
|
}
|
|
|
|
return Math_FAtanF(y / x);
|
2024-04-03 19:42:03 +03:00
|
|
|
*/
|
2023-11-03 02:36:13 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
f32 Math_FAsinF(f32 x) {
|
2024-04-03 19:42:03 +03:00
|
|
|
return asinf(x);
|
2023-11-03 02:36:13 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
f32 Math_FAcosF(f32 x) {
|
2024-04-03 19:42:03 +03:00
|
|
|
return acosf(x);
|
2023-11-03 02:36:13 +03:00
|
|
|
}
|