File: cmp_uj_sj.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 (65 lines) | stat: -rwxr-xr-x 2,809 bytes parent folder | download | duplicates (2)
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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
use strict;
use warnings;
use Math::MPFR qw(:mpfr);
use Config;
use Test::More;

if(Math::MPFR::_has_longlong()) { # MATH_MPFR_NEED_LONG_LONG_INT is defined
  # Note: The Math::MPFR objects have 54-bit precision.
  my $fr1 = Math::MPFR->new(2 ** 64);
  my $fr2 = Math::MPFR->new(2 ** 63);
  my $uv  = Math::MPFR->new(~0);

  cmp_ok(Rmpfr_cmp   ( $fr1, $uv ), '==', 0, "Math::MPFR->new(2 ** 64) == Math::MPFR->new(~0)");
  cmp_ok(Rmpfr_cmp_uj( $fr1, ~0  ), '>',  0, "Math::MPFR->new(2 ** 64) > ~0");
  cmp_ok(Rmpfr_cmp_IV( $fr1, ~0  ), '>',  0, "Rmpfr_cmp_IV and Rmpfr_cmp_uj are the same");

  my $iv = Math::MPFR->new(~0 >> 1);

  cmp_ok(Rmpfr_cmp   ( $fr2, $iv      ), '==', 0, "Math::MPFR->new(2 ** 63) == Math::MPFR->new(~0 >> 1)");
  cmp_ok(Rmpfr_cmp_sj( $fr2, ~0 >> 1  ), '>',  0, "Math::MPFR->new(2 ** 63) > ~0 >> 1");
  cmp_ok(Rmpfr_cmp_IV( $fr2, ~0 >> 1  ), '>',  0, "Rmpfr_cmp_IV and Rmpfr_cmp_sj are the same");

}
else {

  cmp_ok( Rmpfr_cmp_uj(Math::MPFR->new(~0), ~0), '==', Rmpfr_cmp_ui(Math::MPFR->new(~0), ~0), "Rmpfr_cmp_uj and Rmpfr_cmp_ui agree" );
  my $s_max = (~0) >> 1;
  $s_max *= -1;
  print "\$s_max: $s_max\n";
  cmp_ok( Rmpfr_cmp_sj(Math::MPFR->new($s_max), $s_max), '==', Rmpfr_cmp_si(Math::MPFR->new($s_max), $s_max), "Rmpfr_cmp_sj and Rmpfr_cmp_si agree" );

  if($Config{ivsize} == 8) {
    my $fr1 = Math::MPFR->new(2 ** 64);
    my $fr2 = Math::MPFR->new(2 ** 63);
    my $uv  = Math::MPFR->new(~0);

    cmp_ok(Rmpfr_cmp   ( $fr1, $uv ), '==', 0, "Math::MPFR->new(2 ** 64) == Math::MPFR->new(~0)");
    cmp_ok(Rmpfr_cmp_ui( $fr1, ~0  ), '>',  0, "Math::MPFR->new(2 ** 64) > ~0");
    cmp_ok(Rmpfr_cmp_IV( $fr1, ~0  ), '>',  0, "Rmpfr_cmp_IV and Rmpfr_cmp_ui are the same");

    my $iv = Math::MPFR->new(~0 >> 1);

    cmp_ok(Rmpfr_cmp   ( $fr2, $iv      ), '==', 0, "Math::MPFR->new(2 ** 63) == Math::MPFR->new(~0 >> 1)");
    cmp_ok(Rmpfr_cmp_si( $fr2, ~0 >> 1  ), '>',  0, "Math::MPFR->new(2 ** 63) > ~0 >> 1");
    cmp_ok(Rmpfr_cmp_IV( $fr2, ~0 >> 1  ), '>',  0, "Rmpfr_cmp_IV and Rmpfr_cmp_si are the same");
  }
  else {
    my $fr1 = Math::MPFR->new(2 ** 32);
    my $fr2 = Math::MPFR->new(2 ** 31);
    my $uv  = Math::MPFR->new(~0);

    cmp_ok(Rmpfr_cmp   ( $fr1, $uv ), '>', 0, "Math::MPFR->new(2 ** 32) > Math::MPFR->new(~0)");
    cmp_ok(Rmpfr_cmp_ui( $fr1, ~0  ), '>', 0, "Math::MPFR->new(2 ** 32) > ~0");
    cmp_ok(Rmpfr_cmp_IV( $fr1, ~0  ), '>', 0, "Rmpfr_cmp_IV and Rmpfr_cmp_ui are the same");

    my $iv = Math::MPFR->new(~0 >> 1);

    cmp_ok(Rmpfr_cmp   ( $fr2, $iv      ), '>', 0, "Math::MPFR->new(2 ** 31) > Math::MPFR->new(~0 >> 1)");
    cmp_ok(Rmpfr_cmp_si( $fr2, ~0 >> 1  ), '>', 0, "Math::MPFR->new(2 ** 31) > ~0 >> 1");
    cmp_ok(Rmpfr_cmp_IV( $fr2, ~0 >> 1  ), '>', 0, "Rmpfr_cmp_IV and Rmpfr_cmp_si are the same");
  }
}

done_testing();