@@ -1047,14 +1047,15 @@ quad_spacing(const Sleef_quad *x)
10471047 return result;
10481048}
10491049
1050- // Mixed-type operations (quad, int ) -> quad
1051- typedef Sleef_quad (*ldexp_op_quad_def)(const Sleef_quad *, const int *);
1052- typedef long double (*ldexp_op_longdouble_def)(const long double *, const int *);
1050+ // Mixed-type operations (quad, int32 ) -> quad
1051+ typedef Sleef_quad (*ldexp_op_quad_def)(const Sleef_quad *, const int32_t *);
1052+ typedef long double (*ldexp_op_longdouble_def)(const long double *, const int32_t *);
10531053
10541054static inline Sleef_quad
1055- quad_ldexp (const Sleef_quad *x, const int *exp)
1055+ quad_ldexp (const Sleef_quad *x, const int32_t *exp)
10561056{
10571057 // ldexp(x, exp) returns x * 2^exp
1058+ // SLEEF expects: Sleef_quad, int32_t
10581059
10591060 // NaN input -> NaN output (with sign preserved)
10601061 if (Sleef_iunordq1 (*x, *x)) {
@@ -1071,15 +1072,17 @@ quad_ldexp(const Sleef_quad *x, const int *exp)
10711072 return *x;
10721073 }
10731074
1075+ // Pass dereferenced values directly to SLEEF (no conversion needed)
10741076 Sleef_quad result = Sleef_ldexpq1 (*x, *exp);
10751077
10761078 return result;
10771079}
10781080
10791081static inline long double
1080- ld_ldexp (const long double *x, const int *exp)
1082+ ld_ldexp (const long double *x, const int32_t *exp)
10811083{
10821084 // ldexp(x, exp) returns x * 2^exp
1085+ // stdlib ldexpl expects: long double, int
10831086
10841087 // NaN input -> NaN output
10851088 if (isnan (*x)) {
@@ -1096,6 +1099,7 @@ ld_ldexp(const long double *x, const int *exp)
10961099 return *x;
10971100 }
10981101
1102+ // Cast int32_t to int for stdlib function
10991103 long double result = ldexpl (*x, *exp);
11001104
11011105 return result;
0 commit comments