diff --git a/Libraries/LibM/math.cpp b/Libraries/LibM/math.cpp index d189f86aad..f7d370cca4 100644 --- a/Libraries/LibM/math.cpp +++ b/Libraries/LibM/math.cpp @@ -84,6 +84,23 @@ double tanh(double x) return (plusX - minusX) / (plusX + minusX); } +double ampsin(double angle) +{ + double looped_angle = fmod(M_PI + angle, M_TAU) - M_PI; + double looped_angle_squared = looped_angle * looped_angle; + + double quadratic_term; + if (looped_angle > 0) { + quadratic_term = -looped_angle_squared; + } else { + quadratic_term = looped_angle_squared; + } + + double linear_term = M_PI * looped_angle; + + return quadratic_term + linear_term; +} + double tan(double angle) { return ampsin(angle) / ampsin(M_PI_2 + angle);