[libc-commits] [libc] [libc] Add sinpif16 function (PR #110994)

via libc-commits libc-commits at lists.llvm.org
Thu Oct 3 06:50:41 PDT 2024


github-actions[bot] wrote:

<!--LLVM CODE FORMAT COMMENT: {clang-format}-->


:warning: C/C++ code formatter, clang-format found issues in your code. :warning:

<details>
<summary>
You can test this locally with the following command:
</summary>

``````````bash
git-clang-format --diff 82f5acfbec65e1a645d902f746253eeaf0bd2d70 663fbd51d8992daf763772bc61b5942a5a1e8249 --extensions h,cpp -- libc/src/math/generic/sinpif16.cpp libc/src/math/sinpif16.h libc/test/src/math/smoke/sinpif16_test.cpp
``````````

</details>

<details>
<summary>
View the diff from clang-format here.
</summary>

``````````diff
diff --git a/libc/src/math/generic/sinpif16.cpp b/libc/src/math/generic/sinpif16.cpp
index b878e09d54..eff3871a3b 100644
--- a/libc/src/math/generic/sinpif16.cpp
+++ b/libc/src/math/generic/sinpif16.cpp
@@ -30,9 +30,8 @@ constexpr float PI_OVER_32 = 0x1.921fb6p-4f;
 // > TL = chebyshevform(sin(x), 9, [-pi / 32, pi / 32]);
 // > TL[0];
 const float SIN_COEFF[10] = {
-  0x1.d333p-26, 0x1.000048p0, -0x1.a5d2p-14, -0x1.628588p-3, 0x1.c1eep-5,
-  0x1.4455p1, -0x1.317a8p3, -0x1.6bb9p8, 0x1.00ef8p9, 0x1.0edcp14
-};
+    0x1.d333p-26, 0x1.000048p0, -0x1.a5d2p-14, -0x1.628588p-3, 0x1.c1eep-5,
+    0x1.4455p1,   -0x1.317a8p3, -0x1.6bb9p8,   0x1.00ef8p9,    0x1.0edcp14};
 // In Sollya generate 10 coefficients for a degree-9 chebyshev polynomial
 // approximating the sine function in [-pi/32, pi/32] with the following
 // commands:
@@ -40,49 +39,78 @@ const float SIN_COEFF[10] = {
 // > TL = chebyshevform(cos(x), 9, [-pi / 32, pi / 32]);
 // > TL[0];
 const float COS_COEFF[10] = {
-  0x1.000006p0, 0x1.e1eap-15, -0x1.0071p-1, -0x1.3b56p-4, 0x1.f3dfp-2,
-  0x1.ccbap4, -0x1.3034p6, -0x1.f817p11, 0x1.fc59p11, 0x1.7079p17
-};
+    0x1.000006p0, 0x1.e1eap-15, -0x1.0071p-1, -0x1.3b56p-4, 0x1.f3dfp-2,
+    0x1.ccbap4,   -0x1.3034p6,  -0x1.f817p11, 0x1.fc59p11,  0x1.7079p17};
 // Lookup table for sin(k * pi / 32) with k = 0, ..., 63.
 // Table is generated with Sollya as follows:
 // > display = hexadecimmal;
 // > prec = 24;
 // > for k from 0 to 63 do {sin(k * pi/32);};
 
-const float SIN_K_PI_OVER_32[64] = {
-  0, 0x1.917a6cp-4,
-  0x1.8f8b84p-3, 0x1.294062p-2,
-  0x1.87de2ap-2, 0x1.e2b5d4p-2,
-  0x1.1c73b4p-1, 0x1.44cf32p-1,
-  0x1.6a09e6p-1, 0x1.8bc806p-1,
-  0x1.a9b662p-1, 0x1.c38b3p-1,
-  0x1.d906bcp-1, 0x1.e9f416p-1,
-  0x1.f6297cp-1, 0x1.fd88dap-1,
-  0x1p0, 0x1.fd88dap-1,
-  0x1.f6297cp-1, 0x1.e9f416p-1,
-  0x1.d906bcp-1, 0x1.c38b3p-1,
-  0x1.a9b662p-1, 0x1.8bc806p-1,
-  0x1.6a09e6p-1, 0x1.44cf32p-1,
-  0x1.1c73b4p-1, 0x1.e2b5d4p-2,
-  0x1.87de2ap-2, 0x1.294062p-2,
-  0x1.8f8b84p-3, 0x1.917a6cp-4,
-  0, -0x1.917a6cp-4,
-  -0x1.8f8b84p-3, -0x1.294062p-2,
-  -0x1.87de2ap-2, -0x1.e2b5d4p-2,
-  -0x1.1c73b4p-1, -0x1.44cf32p-1,
-  -0x1.6a09e6p-1, -0x1.8bc806p-1,
-  -0x1.a9b662p-1, -0x1.c38b3p-1,
-  -0x1.d906bcp-1, -0x1.e9f416p-1,
-  -0x1.f6297ep-1, -0x1.fd88dap-1,
-  -0x1p0, -0x1.fd88dap-1,
-  -0x1.f6297cp-1, -0x1.e9f416p-1,
-  -0x1.d906bcp-1, -0x1.c38b3p-1,
-  -0x1.a9b662p-1, -0x1.8bc806p-1,
-  -0x1.6a09e6p-1, -0x1.44cf32p-1,
-  -0x1.1c73b4p-1, -0x1.e2b5d4p-2,
-  -0x1.87de2ap-2, -0x1.294062p-2,
-  -0x1.8f8b84p-3, -0x1.917a6cp-4
-};
+const float SIN_K_PI_OVER_32[64] = {0,
+                                    0x1.917a6cp-4,
+                                    0x1.8f8b84p-3,
+                                    0x1.294062p-2,
+                                    0x1.87de2ap-2,
+                                    0x1.e2b5d4p-2,
+                                    0x1.1c73b4p-1,
+                                    0x1.44cf32p-1,
+                                    0x1.6a09e6p-1,
+                                    0x1.8bc806p-1,
+                                    0x1.a9b662p-1,
+                                    0x1.c38b3p-1,
+                                    0x1.d906bcp-1,
+                                    0x1.e9f416p-1,
+                                    0x1.f6297cp-1,
+                                    0x1.fd88dap-1,
+                                    0x1p0,
+                                    0x1.fd88dap-1,
+                                    0x1.f6297cp-1,
+                                    0x1.e9f416p-1,
+                                    0x1.d906bcp-1,
+                                    0x1.c38b3p-1,
+                                    0x1.a9b662p-1,
+                                    0x1.8bc806p-1,
+                                    0x1.6a09e6p-1,
+                                    0x1.44cf32p-1,
+                                    0x1.1c73b4p-1,
+                                    0x1.e2b5d4p-2,
+                                    0x1.87de2ap-2,
+                                    0x1.294062p-2,
+                                    0x1.8f8b84p-3,
+                                    0x1.917a6cp-4,
+                                    0,
+                                    -0x1.917a6cp-4,
+                                    -0x1.8f8b84p-3,
+                                    -0x1.294062p-2,
+                                    -0x1.87de2ap-2,
+                                    -0x1.e2b5d4p-2,
+                                    -0x1.1c73b4p-1,
+                                    -0x1.44cf32p-1,
+                                    -0x1.6a09e6p-1,
+                                    -0x1.8bc806p-1,
+                                    -0x1.a9b662p-1,
+                                    -0x1.c38b3p-1,
+                                    -0x1.d906bcp-1,
+                                    -0x1.e9f416p-1,
+                                    -0x1.f6297ep-1,
+                                    -0x1.fd88dap-1,
+                                    -0x1p0,
+                                    -0x1.fd88dap-1,
+                                    -0x1.f6297cp-1,
+                                    -0x1.e9f416p-1,
+                                    -0x1.d906bcp-1,
+                                    -0x1.c38b3p-1,
+                                    -0x1.a9b662p-1,
+                                    -0x1.8bc806p-1,
+                                    -0x1.6a09e6p-1,
+                                    -0x1.44cf32p-1,
+                                    -0x1.1c73b4p-1,
+                                    -0x1.e2b5d4p-2,
+                                    -0x1.87de2ap-2,
+                                    -0x1.294062p-2,
+                                    -0x1.8f8b84p-3,
+                                    -0x1.917a6cp-4};
 
 int32_t range_reduction(float x, float &y) {
   float kf = fputil::nearest_integer(x * 32);
@@ -132,9 +160,9 @@ LLVM_LIBC_FUNCTION(float16, sinpif16, (float16 x)) {
       // If value is equal to infinity
       if (x_abs == 0x7c00) {
         fputil::set_errno_if_required(EDOM);
-	fputil::raise_except_if_required(FE_INVALID);
+        fputil::raise_except_if_required(FE_INVALID);
       }
-      
+
       // If value is NaN
       return x + FPBits::quiet_nan().get_val();
     }
@@ -153,18 +181,14 @@ LLVM_LIBC_FUNCTION(float16, sinpif16, (float16 x)) {
     cos_y = 1;
     sin_y = 0;
   } else {
-    cos_y = fputil::polyeval(y * PI_OVER_32,
-	COS_COEFF[0], COS_COEFF[1],
-	COS_COEFF[2], COS_COEFF[3],
-	COS_COEFF[4], COS_COEFF[5],
-	COS_COEFF[6], COS_COEFF[7],
-	COS_COEFF[8], COS_COEFF[9]);
-    sin_y = fputil::polyeval(y * PI_OVER_32,
-        SIN_COEFF[0], SIN_COEFF[1],
-	SIN_COEFF[2], SIN_COEFF[3],
-	SIN_COEFF[4], SIN_COEFF[5],
-	SIN_COEFF[6], SIN_COEFF[7],
-	SIN_COEFF[8], SIN_COEFF[9]);
+    cos_y = fputil::polyeval(y * PI_OVER_32, COS_COEFF[0], COS_COEFF[1],
+                             COS_COEFF[2], COS_COEFF[3], COS_COEFF[4],
+                             COS_COEFF[5], COS_COEFF[6], COS_COEFF[7],
+                             COS_COEFF[8], COS_COEFF[9]);
+    sin_y = fputil::polyeval(y * PI_OVER_32, SIN_COEFF[0], SIN_COEFF[1],
+                             SIN_COEFF[2], SIN_COEFF[3], SIN_COEFF[4],
+                             SIN_COEFF[5], SIN_COEFF[6], SIN_COEFF[7],
+                             SIN_COEFF[8], SIN_COEFF[9]);
   }
 
   return static_cast<float16>(fputil::multiply_add(

``````````

</details>


https://github.com/llvm/llvm-project/pull/110994


More information about the libc-commits mailing list