1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-25 18:27:35 +00:00

LibM: Use fcos for cosine

For some reason we were using sin(x+M_PI_2) instead
This commit is contained in:
Hendiadyoin1 2021-07-05 16:08:37 +02:00 committed by Andreas Kling
parent fdb5367da1
commit 119f280f34

View file

@ -357,23 +357,40 @@ long double truncl(long double x) NOEXCEPT
long double cosl(long double angle) NOEXCEPT long double cosl(long double angle) NOEXCEPT
{ {
return sinl(angle + M_PI_2); long double ret = 0.0;
asm(
"fcos"
: "=t"(ret)
: "0"(angle));
return ret;
} }
double cos(double angle) NOEXCEPT double cos(double angle) NOEXCEPT
{ {
return sin(angle + M_PI_2); double ret = 0.0;
asm(
"fcos"
: "=t"(ret)
: "0"(angle));
return ret;
} }
float cosf(float angle) NOEXCEPT float cosf(float angle) NOEXCEPT
{ {
return sinf(angle + static_cast<float>(M_PI_2)); float ret = 0.0;
asm(
"fcos"
: "=t"(ret)
: "0"(angle));
return ret;
} }
long double sinl(long double angle) NOEXCEPT long double sinl(long double angle) NOEXCEPT
{ {
long double ret = 0.0; long double ret = 0.0;
__asm__( asm(
"fsin" "fsin"
: "=t"(ret) : "=t"(ret)
: "0"(angle)); : "0"(angle));
@ -388,7 +405,7 @@ long double sinl(long double angle) NOEXCEPT
double sin(double angle) NOEXCEPT double sin(double angle) NOEXCEPT
{ {
double ret = 0.0; double ret = 0.0;
__asm__( asm(
"fsin" "fsin"
: "=t"(ret) : "=t"(ret)
: "0"(angle)); : "0"(angle));
@ -399,7 +416,7 @@ double sin(double angle) NOEXCEPT
float sinf(float angle) NOEXCEPT float sinf(float angle) NOEXCEPT
{ {
float ret = 0.0f; float ret = 0.0f;
__asm__( asm(
"fsin" "fsin"
: "=t"(ret) : "=t"(ret)
: "0"(angle)); : "0"(angle));