use strict; use warnings; use Math::MPFR qw(:mpfr); use Math::GMPf qw(:mpf); use Math::GMPq qw(:mpq); my $PREC = 128; # Compute log(3) my $fr = Rmpfr_init2($PREC); Rmpfr_set_ui($fr, 3, MPFR_RNDN); Rmpfr_log($fr, $fr, MPFR_RNDN); print "$fr\n"; # print as float # MPFR -> floating-point my $f = Rmpf_init2($PREC); Rmpfr_get_f($f, $fr, MPFR_RNDN); # floating-point -> rational my $q = Rmpq_init(); Rmpq_set_f($q, $f); print "$q\n"; # print as rational