Skip to content

Commit d63cf62

Browse files
committed
fixed mpfr_cospi() evaluation for MPFR version < 4.2
1 parent a7f9f81 commit d63cf62

File tree

1 file changed

+4
-14
lines changed

1 file changed

+4
-14
lines changed

libc/utils/MPFRWrapper/MPFRUtils.cpp

Lines changed: 4 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -255,19 +255,9 @@ class MPFRNumber {
255255
mpfr_cospi(result.value, value, mpfr_rounding);
256256
return result;
257257
#else
258-
MPFRNumber value_frac(*this);
259-
mpfr_frac(value_frac.value, value, MPFR_RNDN);
260-
261-
if (mpfr_cmp_si(value_frac.value, 0.0) == 0) {
262-
mpz_t integer_part;
263-
mpz_init(integer_part);
264-
mpfr_get_z(integer_part, value, MPFR_RNDN);
265-
266-
if (mpz_tstbit(integer_part, 0)) {
267-
mpfr_set_si(result.value, -1.0, MPFR_RNDN); // odd
268-
} else {
269-
mpfr_set_si(result.value, 1.0, MPFR_RNDN); // even
270-
}
258+
if (mpfr_integer_p(value)) {
259+
auto d = mpfr_get_si(value, mpfr_rounding);
260+
mpfr_set_si(result.value, (d & 1) ? -1 : 1, mpfr_rounding);
271261
return result;
272262
}
273263

@@ -277,7 +267,7 @@ class MPFRNumber {
277267
mpfr_cos(result.value, value_pi.value, mpfr_rounding);
278268

279269
return result;
280-
#endif
270+
//#endif
281271
}
282272

283273
MPFRNumber erf() const {

0 commit comments

Comments
 (0)