File: Rmpfr_fmod_ui.t

package info (click to toggle)
libmath-mpfr-perl 4.45-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 1,716 kB
  • sloc: perl: 1,508; ansic: 517; makefile: 9
file content (40 lines) | stat: -rwxr-xr-x 1,169 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
######################################################
# Testing mpfr_fmod_ui, introduced in mpfr-4.2.0-dev #
# However, Rmpfr_fmod_ui works against aearlier      #
# versions of the mpfr library - albeit suboptimally #
# when mpfr version is older than 4.2.0              #
######################################################

use warnings;
use strict;
use Math::MPFR qw(:mpfr);
use Test::More;

my $div = 2015;
my $den = Rmpfr_init2(64);

my $rop1 = Math::MPFR->new();
my $rop2 = Math::MPFR->new();
my $num = Math::MPFR->new(7000.2);
Rmpfr_set_ui($den, $div, MPFR_RNDN);
Rmpfr_fmod    ( $rop1, $num, $den, MPFR_RNDN);
Rmpfr_fmod_ui ( $rop2, $num, $div, MPFR_RNDN );

cmp_ok($rop1, '==', $rop2, '53-bit prec: Rmpfr_fmod and Rmpfr_fmod_ui agree');

Rmpfr_set_default_prec(6);

my $rop3 = Math::MPFR->new();
my $rop4 = Math::MPFR->new();

for(1..149) {
  my $div = int(rand(2048)) + 1;
  my $num = Math::MPFR->new(1 + rand(6000));
  Rmpfr_set_ui($den, $div, MPFR_RNDN);
  Rmpfr_fmod    ( $rop3, $num, $den, MPFR_RNDN);
  Rmpfr_fmod_ui ( $rop4, $num, $div, MPFR_RNDN );

  cmp_ok($rop3, '==', $rop4, "$num $div: Rmpfr_fmod and Rmpfr_fmod_ui agree");
}

done_testing()