develooper Front page | perl.perl5.porters | Postings from August 2019

Re: Perl 5.31.3 Release and Scalar-List-Utils Test Failure

Thread Previous | Thread Next
From:
sisyphus
Date:
August 18, 2019 05:40
Subject:
Re: Perl 5.31.3 Release and Scalar-List-Utils Test Failure
Message ID:
CADZSBj1K0W7PJdUC2h=aWoXPNaJTmT3LRnVVeVNFag2ks97xOw@mail.gmail.com
use strict;
use warnings;
use List::Util;
use Config; # to determine nvsize
use Test::More tests => 2;

my ($uniq_count1, $uniq_count2, $equiv);

if($Config{nvsize} == 8) {
  # NV is either 'double' or 8-byte 'long double'

  # The 2 values should be unequal - but just in case perl is buggy:
  $equiv = 1 if 1.4142135623730951 == 1.4142135623730954;

  $uniq_count1 = List::Util::uniqnum (1.4142135623730951,
                                      1.4142135623730954 );

  $uniq_count2 = List::Util::uniqnum('1.4142135623730951',
                                     '1.4142135623730954');
}

elsif(length(sqrt(2)) > 25) {
  # NV is either IEEE 'long double' or '__float128'

  # The 2 values should be unequal - but just in case perl is buggy:
  $equiv = 1 if 1.7320508075688772935274463415058722 == 1.73205080756887729352744634150587224;

  $uniq_count1 = List::Util::uniqnum (1.7320508075688772935274463415058722,
                                      1.73205080756887729352744634150587224 );

  $uniq_count2 = List::Util::uniqnum('1.7320508075688772935274463415058722',
                                     '1.73205080756887729352744634150587224');
}

else {
  # NV is extended precision 'long double'

  # The 2 values should be unequal - but just in case perl is buggy:
  $equiv = 1 if 2.2360679774997896963 == 2.23606797749978969634;

  $uniq_count1 = List::Util::uniqnum (2.2360679774997896963,
                                      2.23606797749978969634 );

  $uniq_count2 = List::Util::uniqnum('2.2360679774997896963',
                                     '2.23606797749978969634');
}

if($equiv) {
  is($uniq_count1, 1, 'uniqnum preserves uniqness of high precision floats');
  is($uniq_count2, 1, 'uniqnum preserves uniqness of high precision floats (stringified)');
}

else {
  is($uniq_count1, 2, 'uniqnum preserves uniqness of high precision floats');
  is($uniq_count2, 2, 'uniqnum preserves uniqness of high precision floats (stringified)');
}

Thread Previous | Thread Next


nntp.perl.org: Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at ask@perl.org | Group listing | About