Hi,
As this is essentially a request for some testing to be done, I thought "Meditations" was probably the best place for it.
I'm not actively seeking wisdom with this post but, of course, receiving wisdom is always fine, even if it hasn't been requested ;-)
If you have a perl that you've built using a Microsoft Compiler, I'd be most interested to learn of any problems or failures involved in running:
cpan -i List::Uniqnum
In fact, feel free to provide feedback for any build of perl that you have.
The cpantesters smokers have been happily chewing on List-Uniqnum-0.04 for a couple of days, but there are very few Windows smokers out there.
And, AFAIK, none of those smokers employ Microsoft compilers.
Of course, Darwin and Solaris are probably also missing from those cpantesters systems - so join in with them, too .... or anything else that takes your fancy.
I released List::Uniqnum to test changes that I want to make to the dual-life module List::Util's uniqnum() function - in order to improve that function's portability.
A new release of List::Util (Scalar-List-Utils-1.54) hit cpan over the weekend. It still doesn't utilize the changes I was hoping would be included.
If you run
cpan -i List::Util you'll probably find that it passes all tests and installs cleanly.
List-Util-1.54's uniqnum function actually works correctly on Linux, unless perl was built with -Duselongdouble or -Dusequadmath - in which case the test suite still passes, but only because it doesn't run tests that will reveal the problem.
1.54 works fine on Windows, too, but again only if perl's nvtype is
double.
For it to work correctly on Windows if perl's ivtype is
long long, it also requires that perl was built with __USE_MINGW_ANSI_STDIO, which only started happening wih the release of 5.26.0.
Thankfully, Strawberry Perl 5.26 onwards is built with __USE_MINGW_ANSI_STDIO defined.
Try
cpan -i List::Util on a 64-bit-integer build of Strawberry perl-5.24.0 or earlier, and you'll see a test failure.
If you want to know what's failing with your particular installation of List::Util's uniqnum function, here is something you can run:
use Config; # for test 5
use strict;
use warnings;
use List::Util qw(uniqnum);
#use List::Uniqnum qw(uniqnum);
my $count;
# test 1
if(1.4142135623730951 !=
1.4142135623730954) {
$count = uniqnum(1.4142135623730951,
1.4142135623730954);
print "test 1 failed (returned $count)\n"
unless $count == 2;
}
# test 2
if(10.770329614269008063 !=
10.7703296142690080625) {
$count = uniqnum(10.770329614269008063,
10.7703296142690080625);
print "test 2 failed (returned $count)\n"
unless $count == 2;
}
# test 3
if(1005.1022829201930645202916159776901 !=
1005.10228292019306452029161597769015) {
$count = uniqnum(1005.1022829201930645202916159776901,
1005.10228292019306452029161597769015);
print "test 3 failed (returned $count)\n"
unless $count == 2;
}
# test 4
$count = uniqnum(0, -0.0);
print "test 4 failed (returned $count)\n"
unless $count == 1;
# test 5
if($Config{ivsize} == 8) {
# These 2 (the first is an IV, the second is an NV)
# both exactly represent the value 762939453127 * (2 ** 21)
$count = uniqnum(100000000000262144, 1.00000000000262144e+17);
print "test 5 failed (returned $count)\n"
unless $count == 1;
}
It only announces failures. If there's no output, then everything is good.
If you install List::Uniqnum, you can then modify the script to test List::Uniqnum.
If you do that, and it produces some output, please let me know.
Cheers,
Rob
Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
Read Where should I post X? if you're not absolutely sure you're posting in the right place.
Please read these before you post! —
Posts may use any of the Perl Monks Approved HTML tags:
- a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
| |
For: |
|
Use: |
| & | | & |
| < | | < |
| > | | > |
| [ | | [ |
| ] | | ] |
Link using PerlMonks shortcuts! What shortcuts can I use for linking?
See Writeup Formatting Tips and other pages linked from there for more info.