use Math::MPFI qw(:mpfi); use Math::MPFR qw(:mpfr); use warnings; use strict; print "1..8\n"; Rmpfi_set_default_prec(50); my $rop = Math::MPFI->new(); my $op = Math::MPFI->new(50); Rmpfi_log($rop, $op); if($rop == log(50)) {print "ok 1\n"} else { warn "\$rop: $rop\nlog(50): ", log(50), "\n"; print "not ok 1\n"; } Rmpfi_set_d($op, 5.75); Rmpfi_exp($rop, $op); if($rop == exp(5.75)) {print "ok 2\n"} else { warn "\$rop: $rop\nexp(5.75): ", exp(5.75), "\n"; print "not ok 2\n"; } Rmpfi_exp2($rop, $op); if($rop == 2 ** 5.75) {print "ok 3\n"} else { warn "\$rop: $rop\n2 ** 5.75: ", 2 ** 5.75, "\n"; print "not ok 3\n"; } Rmpfi_expm1($rop, $op); if($rop == exp(5.75) - 1) {print "ok 4\n"} else { warn "\$rop: $rop\nexp(5.75) - 1: ", exp(5.75) - 1, "\n"; print "not ok 4\n"; } Rmpfi_set_ui($op, 50); Rmpfi_log1p($rop, $op); if($rop == log(51)) {print "ok 5\n"} else { warn "\$rop: $rop\nlog(51): ", log(51), "\n"; print "not ok 5\n"; } Rmpfi_log2($rop, $op); if($rop == _log2(50)) {print "ok 6\n"} else { warn "\$rop: $rop\nlog2(50): ", _log2(50), "\n"; print "not ok 6\n"; } Rmpfi_log10($rop, $op); if($rop == _log10(50)) {print "ok 7\n"} else { warn "\$rop: $rop\nlog10(50): ", _log10(50), "\n"; print "not ok 7\n"; } Rmpfi_const_log2($rop); if($rop == log(2)) {print "ok 8\n"} else { warn "\$rop: $rop\nlog(2): ", log(2), "\n"; print "not ok 8\n"; } sub _log10 { my $n = shift; return log($n)/log(10); } sub _log2 { my $n = shift; return log($n)/log(2); }