Closed p5pRT closed 22 years ago
I figured out what was causing the problem with lib/Math/Trig.t with my patch to fix num.t - off-by-one error. Does the below look OK? It applies to 17849 (patch -p1) and does a partial cure for the sprintf bug and a full cure for the num.t bug (#48 on IRIX smoketesting with long doubles)\, with no problems with lib/Math/Trig.t either with or without long doubles\, and adds further checks for the bugs in question. I've tested it on IRIX64 with:
O O O O -Duseperlio O O O O -Duseperlio -Duse64bitint O O O O -Duseperlio -Duselongdouble O O O O -Duseperlio -Dusemorebits | | | +- PERLIO = perlio -DDEBUGGING | | +--- PERLIO = stdio -DDEBUGGING | +----- PERLIO = perlio +------- PERLIO = stdio
This contrasts to 17849 without the patches:
O O O O -Duseperlio F F F F -Duseperlio -Duselongdouble O O O O -Duseperlio -Duse64bitint F F F F -Duseperlio -Dusemorebits O O O O -Duseperlio -Duse64bitall F F ? ? -Duseperlio -Duse64bitall -Duselongdouble | | | +- PERLIO = perlio -DDEBUGGING | | +--- PERLIO = stdio -DDEBUGGING | +----- PERLIO = perlio +------- PERLIO = stdio
Failures:
irix stdio/perlio -Duseperlio -Duselongdouble irix stdio/perlio -DDEBUGGING -Duseperlio -Duselongdouble irix stdio/perlio -Duseperlio -Dusemorebits irix stdio/perlio -DDEBUGGING -Duseperlio -Dusemorebits irix stdio/perlio -Duseperlio -Duse64bitall -Duselongdouble t/base/num...........................FAILED at test 48 ...../t/base/num....FAILED test 48
It doesn't even get to the sprintf tests when using long double\, as you can see. Also see prior IRIX smoketesting.
-Allen
# This is a patch for cpan-current-unpatched to update it to cpan-current-patched # # To apply this patch: # STEP 1: Chdir to the source directory. # STEP 2: Run the 'applypatch' program with this patch file as input. # # If you do not have 'applypatch'\, it is part of the 'makepatch' package # that you can fetch from the Comprehensive Perl Archive Network: # http://www.perl.com/CPAN/authors/Johan_Vromans/makepatch-x.y.tar.gz # In the above URL\, 'x' should be 2 or higher. # # To apply this patch without the use of 'applypatch': # STEP 1: Chdir to the source directory. # STEP 2: Run the 'patch' program with this file as input. # #### End of Preamble ####
#### Patch data follows #### diff -audBb 'cpan-current-unpatched/hints/irix_6.sh' 'cpan-current-patched/hints/irix_6.sh' Index: ./hints/irix_6.sh
Index: ./numeric.c
Index: ./perl.h
Index: ./sv.c
Index: ./t/base/num.t
Index: ./t/op/sprintf.t
#### ApplyPatch data follows #### # Data version : 1.0 # Date generated : Thu Sep 5 22:55:34 2002 # Generated by : makepatch 2.00_07* # Recurse directories : Yes # Excluded files : (\A|/).*\~\Z # (\A|/).*\.a\Z # (\A|/).*\.bak\Z # (\A|/).*\.BAK\Z # (\A|/).*\.elc\Z # (\A|/).*\.exe\Z # (\A|/).*\.gz\Z # (\A|/).*\.ln\Z # (\A|/).*\.o\Z # (\A|/).*\.obj\Z # (\A|/).*\.olb\Z # (\A|/).*\.old\Z # (\A|/).*\.orig\Z # (\A|/).*\.rej\Z # (\A|/).*\.so\Z # (\A|/).*\.Z\Z # (\A|/)\.del\-.*\Z # (\A|/)\.make\.state\Z # (\A|/)\.nse_depinfo\Z # (\A|/)core\Z # (\A|/)tags\Z # (\A|/)TAGS\Z # (\A|/)\.patch\Z # (\A|/)patchlevel\.h\Z # (\A|/)Porting\/repository\.pod\Z # (\A|/)pod\/perlapi\.pod\Z # p 'hints/irix_6.sh' 16920 1031193491 0100444 # p 'numeric.c' 28122 1031278565 0100644 # p 'perl.h' 119618 1031193462 0100444 # p 'sv.c' 272515 1031193649 0100444 # p 't/base/num.t' 5196 1031280701 0100444 # p 't/op/sprintf.t' 14612 1031193611 0100555 #### End of ApplyPatch data ####
#### End of Patch kit [created: Thu Sep 5 22:55:34 2002] #### #### Patch checksum: 592 17141 31996 #### #### Checksum: 610 17846 25559 ####
-- Allen Smith http://cesario.rutgers.edu/easmith/ September 11\, 2001 A Day That Shall Live In Infamy II "They that can give up essential liberty to obtain a little temporary safety deserve neither liberty nor safety." - Benjamin Franklin
allens@cpan.org - Status changed from 'new' to 'open'
This is related to the 15073 bug in that the fix for that one turned out not to _quite_ fix it for long doubles\, at least on IRIX\, and one of the tests the patch for 15073\, namely 17736\, added is still failing on IRIX with long doubles (namely #48 in t/base/num.t). Given that this is a base test\, no further testing occurs past it\, of course.
This patch has it doing the numbers before and after the decimal point seperately\, so that we aren't winding up\, if there are a huge number of digits after the decimal point being taken into account (which only happens when NV_DIG is large because of using LDBL_DIG instead of DBL_DIG)\, having to first multiply repeatedly to add in the (NV) accumulator when it overflows\, then dividing by a large number to get the correct placement of the decimal point\, all of which introduce massive inaccuracies (especially in odd long double systems like IRIX).
allens@cpan.org - Status changed from 'open' to 'resolved'
Migrated from rt.perl.org#17066 (status was 'resolved')
Searchable as RT17066$