List Info

Thread: BigInt bug with non-integer accuracy/precision




BigInt bug with non-integer accuracy/precision
user name
2007-09-16 06:23:33
MOIN,

WHILE TRYING TO IMPLEMENT BORWEIN'S ALGORITHM TO CALCULATE
?, I CAME ACROSS 
THE FOLLOWING BUG:
	
	# PERL -MBIGNUM -WLE 'PRINT 2->BSQRT(11)'
	1.4142135624
	# PERL -MBIGNUM -WLE 'PRINT 2->BSQRT(11.1)'
	1.41421356237
	# PERL -MBIGNUM -WLE 'PRINT 2->BSQRT(11.6)'
	4.4721359550
	# PERL -MBIGNUM=L,GMP -WLE 'PRINT 2->BSQRT(11)'
	1.4142135624
	# PERL -MBIGNUM=L,GMP -WLE 'PRINT 2->BSQRT(11.1)'
	1.0000000000
	# PERL -MBIGNUM=L,GMP -WLE 'PRINT 2->BSQRT(11.6)'
	1.0000000000

IN SHORT, PASSING NON-INTEGER ARGUMENTS AS A (NUMBER OF
SIGNIFICANT DIGITS 
IN RESULT) MAKES BSQRT() (AND THUS ALSO BROOT()) AND
PROBABLY OTHERS QUITE 
UNHAPPY.

THIS WAS TRIGGERED BY NAïVE CODE LIKE:

	MY $N = 100;
	MY $Y = MATH::BIHGFLOAT->NEW(2)->BSQRT($N + $N / 1000
+ 4);

BDIV() SEEMS ONLY AFFECTED IN GMP:

	# PERL -MBIGNUM -WLE 'PRINT SCALAR 1->BDIV(3,11)'
	0.33333333333
	# PERL -MBIGNUM -WLE 'PRINT SCALAR 1->BDIV(3,11.1)'
	0.333333333333
	# PERL -MBIGNUM -WLE 'PRINT SCALAR 1->BDIV(3,11.6)'
	0.333333333333

	# PERL -MBIGNUM=L,GMP -WLE 'PRINT SCALAR 1->BDIV(3,11)'
	0.33333333333
	# PERL -MBIGNUM=L,GMP -WLE 'PRINT SCALAR
1->BDIV(3,11.1)'
	0
	# PERL -MBIGNUM=L,GMP -WLE 'PRINT SCALAR
1->BDIV(3,11.6)'
	0

BUT P IS AFFECTED AS WELL AS A:

	# PERL -MBIGNUM=L,GMP -WLE 'PRINT SCALAR
1->BDIV(3,UNDEF,-11)'
	0.33333333333
	# PERL -MBIGNUM=L,GMP -WLE 'PRINT SCALAR
1->BDIV(3,UNDEF,-11.1)'
	0.00000000000
	# PERL -MBIGNUM=L,GMP -WLE 'PRINT SCALAR
1->BDIV(3,UNDEF,-11.6)'
	0.00000000000

UGH. TRACKED HERE:

	HTTP://RT.CPAN.ORG/TICKET/DISPLAY.HTML?ID=29388

ALL THE BEST,

TELS

-- 
 SIGNED ON SUN SEP 16 13:13:28 2007 WITH KEY 0X93B84C15.
 GET ONE OF MY PHOTO POSTERS: HTTP://BLOODGATE.COM/POSTERS
 PGP KEY ON HTTP://BLOODGATE.COM/TELS.ASC OR PER EMAIL.

 "A WITTY SAYING PROVES NOTHING."

  -- VOLTAIRE
Re: BigInt bug with non-integer accuracy/precision
user name
2007-09-22 04:33:34
MOIN, ON SUNDAY 16 SEPTEMBER 2007 13:23:33 TELS WROTE: > MOIN, > > WHILE TRYING TO IMPLEMENT BORWEIN'S ALGORITHM TO CALCULATE ?, I CAME > ACROSS THE FOLLOWING BUG: > > # PERL -MBIGNUM -WLE 'PRINT 2->BSQRT(11)' > 1.4142135624 > # PERL -MBIGNUM -WLE 'PRINT 2->BSQRT(11.1)' > 1.41421356237 > # PERL -MBIGNUM -WLE 'PRINT 2->BSQRT(11.6)' > 4.4721359550 > # PERL -MBIGNUM=L,GMP -WLE 'PRINT 2->BSQRT(11)' > 1.4142135624 > # PERL -MBIGNUM=L,GMP -WLE 'PRINT 2->BSQRT(11.1)' > 1.0000000000 > # PERL -MBIGNUM=L,GMP -WLE 'PRINT 2->BSQRT(11.6)' > 1.0000000000 THE ATTACHED PATCH FIXES THAT ISSUE BY TRUNCATING ALL A OR P PARAMETERS TO INTEGERS, PLUS SOME MORE DOC FOR BFROUND(). IT ALSO ADDS A NEW TESTFILE ROUND.T TO TEST FOR THIS PROBLEM. THE PRE-RELEASE PACKAGE OF 1.88: HTTP://BLOODGATE.COM/PERL/PACKAGES/DEVEL/ WAS ALSO UPDATED. ALL THE BEST, TELS -- SIGNED ON SAT SEP 22 11:30:21 2007 WITH KEY 0X93B84C15. GET ONE OF MY PHOTO POSTERS: HTTP://BLOODGATE.COM/POSTERS PGP KEY ON HTTP://BLOODGATE.COM/TELS.ASC OR PER EMAIL. HARRISBERGER'S FOURTH LAW OF THE LAB: EXPERIENCE IS DIRECTLY PROPORTIONAL TO THE AMOUNT OF EQUIPMENT RUINED.
  Approximate file size 7780 bytes
Re: Re: BigInt bug with non-integer accuracy/precision
user name
2007-09-24 07:37:47
On 22/09/2007, Tels <nospam-abusebloodgate.com> wrote:
>
> The attached patch fixes that issue by truncating all A
or P parameters to
> integers, plus some more doc for bfround(). It also
adds a new testfile
> round.t to test for this problem.

Thanks, applied as #31951.

[1-3]

about | contact  Other archives ( Real Estate discussion Medical topics )