Skip to content

Commit 31ec9d6

Browse files
committed
strict int32_t usage
1 parent 3d79e9c commit 31ec9d6

File tree

2 files changed

+15
-9
lines changed

2 files changed

+15
-9
lines changed

quaddtype/numpy_quaddtype/src/ops.hpp

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -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

10541054
static 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

10791081
static 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;

quaddtype/numpy_quaddtype/src/umath/binary_ops.cpp

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -345,10 +345,10 @@ quad_ldexp_strided_loop_unaligned(PyArrayMethod_Context *context, char *const da
345345
size_t elem_size = (backend == BACKEND_SLEEF) ? sizeof(Sleef_quad) : sizeof(long double);
346346

347347
quad_value in1, out;
348-
int in2;
348+
int32_t in2;
349349
while (N--) {
350350
memcpy(&in1, in1_ptr, elem_size);
351-
memcpy(&in2, in2_ptr, sizeof(int));
351+
memcpy(&in2, in2_ptr, sizeof(int32_t));
352352
if (backend == BACKEND_SLEEF) {
353353
out.sleef_value = sleef_op(&in1.sleef_value, &in2);
354354
} else {
@@ -382,10 +382,12 @@ quad_ldexp_strided_loop_aligned(PyArrayMethod_Context *context, char *const data
382382
QuadBackendType backend = descr->backend;
383383

384384
while (N--) {
385+
int32_t *exp = (int32_t *)in2_ptr;
386+
385387
if (backend == BACKEND_SLEEF) {
386-
*(Sleef_quad *)out_ptr = sleef_op((Sleef_quad *)in1_ptr, (int *)in2_ptr);
388+
*(Sleef_quad *)out_ptr = sleef_op((Sleef_quad *)in1_ptr, exp);
387389
} else {
388-
*(long double *)out_ptr = longdouble_op((long double *)in1_ptr, (int *)in2_ptr);
390+
*(long double *)out_ptr = longdouble_op((long double *)in1_ptr, exp);
389391
}
390392

391393
in1_ptr += in1_stride;

0 commit comments

Comments
 (0)