static void check_specials (void) { mpfr_t x, y; mpfr_init2 (x, 123L); mpfr_init2 (y, 123L); mpfr_set_nan (x); mpfr_csc (y, x, MPFR_RNDN); if (! mpfr_nan_p (y)) { printf ("Error: csc(NaN) != NaN\n"); exit (1); } mpfr_set_inf (x, 1); mpfr_csc (y, x, MPFR_RNDN); if (! mpfr_nan_p (y)) { printf ("Error: csc(Inf) != NaN\n"); exit (1); } mpfr_set_inf (x, -1); mpfr_csc (y, x, MPFR_RNDN); if (! mpfr_nan_p (y)) { printf ("Error: csc(-Inf) != NaN\n"); exit (1); } /* csc(+/-0) = +/-Inf */ mpfr_set_ui (x, 0, MPFR_RNDN); mpfr_csc (y, x, MPFR_RNDN); if (! (mpfr_inf_p (y) && mpfr_sgn (y) > 0)) { printf ("Error: csc(+0) != +Inf\n"); exit (1); } mpfr_neg (x, x, MPFR_RNDN); mpfr_csc (y, x, MPFR_RNDN); if (! (mpfr_inf_p (y) && mpfr_sgn (y) < 0)) { printf ("Error: csc(-0) != -Inf\n"); exit (1); } mpfr_clear (x); mpfr_clear (y); }
MpfrFloat MpfrFloat::csc(const MpfrFloat& value) { MpfrFloat retval(MpfrFloat::kNoInitialization); mpfr_csc(retval.mData->mFloat, value.mData->mFloat, GMP_RNDN); return retval; }
void bvisit(const Csc &x) { apply(result_, *(x.get_arg())); mpfr_csc(result_, result_, rnd_); }