The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
use strict;
use warnings;
use Math::MPFR;

eval{require Math::GMPz;};

if($@) {
  warn "\n\$\@:$@\n";
  warn "\n Skipping all tests - couldn't load Math::GMPz\n";
  print "1..1\n";
  print "ok 1\n";
  exit 0;
}

print "1..8\n";

my $nan = Math::MPFR->new();
my $fop = Math::MPFR->new('10.3');
my $zop = Math::GMPz->new(5);

if($nan == $zop || $nan < $zop || $nan > $zop || $nan <= $zop || $nan >= $zop) {print "not ok 1\n"}
else {print "ok 1\n"}

if($nan != $zop) {print "ok 2\n"}
else {print "not ok 2\n"}

my $undef = $nan <=> $zop;
if(!defined($undef)) {print "ok 3\n"}
else {print "not ok 3\n"}

if($fop == $zop) {print "not ok 4\n"}
else {print "ok 4\n"}

if($fop > $zop && $fop >= $zop && -$fop < $zop && -$fop <= $zop && $fop != $zop) {print "ok 5\n"}
else {print "not ok 5\n"}

my $def = $fop <=> $zop;

if($def > 0) {print "ok 6\n"}
else {print "not ok 6\n"}

$def = -$fop <=> $zop;

if($def < 0) {print "ok 7\n"}
else {print "not ok 7\n"}

$def = Math::MPFR->new(2.0) <=> Math::GMPz->new(2);

if($def == 0) {print "ok 8\n"}
else {print "not ok 8\n"}