use warnings; use strict; print "1..2\n"; use Math::Complex_C qw(:all); my $zero = Math::Complex_C::Long->new(0.0, 0.0); my $rop = Math::Complex_C::Long->new(); mul_c_nvl($rop, $zero, -1.1); my $re = real_cl($rop); my $im = imag_cl($rop); my $correct = 0; if(is_neg_zero($re)) { $correct = 1; print "ok 1\n"; } else { warn "\n \$re: $re (correct result is '-0')\n"; print "not ok 1\n"; } if(is_neg_zero($im)) { print "ok 2\n"; } elsif($correct && "$im" eq "0") { warn "\n \$im: $im\n"; warn " Skipping test 2 - this is a known bug with some (old) compilers\n"; warn " Correct result is '-0'\n"; print "ok 2\n"; } else { warn "\n \$im: $im (correct result is '-0')\n"; print "not ok 2\n"; }