33#include < cmath>
44#include " constants.hpp"
55
6- // Quad Constants, generated with qutil
7- #define QUAD_ONE sleef_q (+0x1000000000000LL , 0x0000000000000000ULL , 0 )
8-
96// Unary Quad Operations
107typedef Sleef_quad (*unary_op_quad_def)(const Sleef_quad *);
118// Unary Quad operations with 2 outputs (for modf, frexp)
@@ -104,7 +101,7 @@ quad_cbrt(const Sleef_quad *op)
104101
105102 // Compute 1/3 as a quad precision constant
106103 Sleef_quad three = Sleef_cast_from_int64q1 (3 );
107- Sleef_quad one_third = Sleef_divq1_u05 (QUAD_ONE , three);
104+ Sleef_quad one_third = Sleef_divq1_u05 (QUAD_PRECISION_ONE , three);
108105
109106 // Handle negative values: cbrt(-x) = -cbrt(x)
110107 if (Sleef_icmpltq1 (*op, QUAD_PRECISION_ZERO)) {
@@ -126,7 +123,7 @@ quad_square(const Sleef_quad *op)
126123static inline Sleef_quad
127124quad_reciprocal (const Sleef_quad *op)
128125{
129- return Sleef_divq1_u05 (QUAD_ONE , *op);
126+ return Sleef_divq1_u05 (QUAD_PRECISION_ONE , *op);
130127}
131128
132129static inline Sleef_quad
@@ -492,7 +489,7 @@ quad_signbit(const Sleef_quad *op)
492489{
493490 // FIXME @juntyr or @SwayamInSync: replace with binary implementation
494491 // once we test big and little endian in CI
495- Sleef_quad one_signed = Sleef_copysignq1 (QUAD_ONE , *op);
492+ Sleef_quad one_signed = Sleef_copysignq1 (QUAD_PRECISION_ONE , *op);
496493 // signbit(x) = 1 iff copysign(1, x) == -1
497494 return Sleef_icmpltq1 (one_signed, QUAD_PRECISION_ZERO);
498495}
@@ -600,7 +597,7 @@ quad_floor_divide(const Sleef_quad *a, const Sleef_quad *b)
600597 // But NOT when numerator is ±0.0 (then result stays as ±0.0)
601598 if (Sleef_icmpeqq1 (result, QUAD_PRECISION_ZERO) && quad_signbit (&result) &&
602599 !Sleef_icmpeqq1 (*a, QUAD_PRECISION_ZERO)) {
603- return Sleef_negq1 (QUAD_ONE ); // -1.0
600+ return Sleef_negq1 (QUAD_PRECISION_ONE ); // -1.0
604601 }
605602
606603 return result;
@@ -687,7 +684,7 @@ quad_fmod(const Sleef_quad *a, const Sleef_quad *b)
687684
688685 if (Sleef_icmpeqq1 (result, QUAD_PRECISION_ZERO)) {
689686 // Preserve sign of dividend (first argument)
690- Sleef_quad sign_test = Sleef_copysignq1 (QUAD_ONE , *a);
687+ Sleef_quad sign_test = Sleef_copysignq1 (QUAD_PRECISION_ONE , *a);
691688 if (Sleef_icmpltq1 (sign_test, QUAD_PRECISION_ZERO)) {
692689 return Sleef_negq1 (QUAD_PRECISION_ZERO); // -0.0
693690 }
@@ -715,7 +712,7 @@ quad_minimum(const Sleef_quad *in1, const Sleef_quad *in2)
715712 }
716713 // minimum(-0.0, +0.0) = -0.0
717714 if (Sleef_icmpeqq1 (*in1, QUAD_PRECISION_ZERO) && Sleef_icmpeqq1 (*in2, QUAD_PRECISION_ZERO)) {
718- return Sleef_icmpleq1 (Sleef_copysignq1 (QUAD_ONE , *in1), Sleef_copysignq1 (QUAD_ONE , *in2)) ? *in1 : *in2;
715+ return Sleef_icmpleq1 (Sleef_copysignq1 (QUAD_PRECISION_ONE , *in1), Sleef_copysignq1 (QUAD_PRECISION_ONE , *in2)) ? *in1 : *in2;
719716 }
720717 return Sleef_fminq1 (*in1, *in2);
721718}
@@ -728,7 +725,7 @@ quad_maximum(const Sleef_quad *in1, const Sleef_quad *in2)
728725 }
729726 // maximum(-0.0, +0.0) = +0.0
730727 if (Sleef_icmpeqq1 (*in1, QUAD_PRECISION_ZERO) && Sleef_icmpeqq1 (*in2, QUAD_PRECISION_ZERO)) {
731- return Sleef_icmpgeq1 (Sleef_copysignq1 (QUAD_ONE , *in1), Sleef_copysignq1 (QUAD_ONE , *in2)) ? *in1 : *in2;
728+ return Sleef_icmpgeq1 (Sleef_copysignq1 (QUAD_PRECISION_ONE , *in1), Sleef_copysignq1 (QUAD_PRECISION_ONE , *in2)) ? *in1 : *in2;
732729 }
733730 return Sleef_fmaxq1 (*in1, *in2);
734731}
@@ -741,7 +738,7 @@ quad_fmin(const Sleef_quad *in1, const Sleef_quad *in2)
741738 }
742739 // fmin(-0.0, +0.0) = -0.0
743740 if (Sleef_icmpeqq1 (*in1, QUAD_PRECISION_ZERO) && Sleef_icmpeqq1 (*in2, QUAD_PRECISION_ZERO)) {
744- return Sleef_icmpleq1 (Sleef_copysignq1 (QUAD_ONE , *in1), Sleef_copysignq1 (QUAD_ONE , *in2)) ? *in1 : *in2;
741+ return Sleef_icmpleq1 (Sleef_copysignq1 (QUAD_PRECISION_ONE , *in1), Sleef_copysignq1 (QUAD_PRECISION_ONE , *in2)) ? *in1 : *in2;
745742 }
746743 return Sleef_fminq1 (*in1, *in2);
747744}
@@ -754,7 +751,7 @@ quad_fmax(const Sleef_quad *in1, const Sleef_quad *in2)
754751 }
755752 // maximum(-0.0, +0.0) = +0.0
756753 if (Sleef_icmpeqq1 (*in1, QUAD_PRECISION_ZERO) && Sleef_icmpeqq1 (*in2, QUAD_PRECISION_ZERO)) {
757- return Sleef_icmpgeq1 (Sleef_copysignq1 (QUAD_ONE , *in1), Sleef_copysignq1 (QUAD_ONE , *in2)) ? *in1 : *in2;
754+ return Sleef_icmpgeq1 (Sleef_copysignq1 (QUAD_PRECISION_ONE , *in1), Sleef_copysignq1 (QUAD_PRECISION_ONE , *in2)) ? *in1 : *in2;
758755 }
759756 return Sleef_fmaxq1 (*in1, *in2);
760757}
@@ -849,7 +846,7 @@ quad_logaddexp2(const Sleef_quad *x, const Sleef_quad *y)
849846 Sleef_quad abs_diff = Sleef_fabsq1 (diff);
850847 Sleef_quad neg_abs_diff = Sleef_negq1 (abs_diff);
851848 Sleef_quad exp2_term = Sleef_exp2q1_u10 (neg_abs_diff);
852- Sleef_quad one_plus_exp2 = Sleef_addq1_u05 (QUAD_ONE , exp2_term);
849+ Sleef_quad one_plus_exp2 = Sleef_addq1_u05 (QUAD_PRECISION_ONE , exp2_term);
853850 Sleef_quad log2_term = Sleef_log2q1_u10 (one_plus_exp2);
854851
855852 Sleef_quad max_val = Sleef_icmpgtq1 (*x, *y) ? *x : *y;
@@ -872,7 +869,7 @@ quad_heaviside(const Sleef_quad *x1, const Sleef_quad *x2)
872869 return *x2; // When x1 == 0, return x2 (even if x2 is NaN)
873870 }
874871 else {
875- return QUAD_ONE ;
872+ return QUAD_PRECISION_ONE ;
876873 }
877874}
878875
0 commit comments