From: <jay...@us...> - 2011-04-16 07:13:57
|
Revision: 414 http://ggnfs.svn.sourceforge.net/ggnfs/?rev=414&view=rev Author: jaysonking Date: 2011-04-16 07:13:51 +0000 (Sat, 16 Apr 2011) Log Message: ----------- Low-impact fixlet: The a[4] polynomial coefficient may (rarely) be zero, which caused the initial optimization to choose an infinite skew, leading to unexpected program behavior or crash. Found by biwema. Modified Paths: -------------- trunk/src/experimental/pol5/stage2/translate.c trunk/src/pol5/pol51opt.c Modified: trunk/src/experimental/pol5/stage2/translate.c =================================================================== --- trunk/src/experimental/pol5/stage2/translate.c 2011-03-20 11:34:07 UTC (rev 413) +++ trunk/src/experimental/pol5/stage2/translate.c 2011-04-16 07:13:51 UTC (rev 414) @@ -152,8 +152,12 @@ for (i = 0; i < 6; i++) dbl_a[i] = mpz_get_d(c->gmp_a[i]); dbl_d = mpz_get_d(c->gmp_d); - s = sqrt(fabs(dbl_a[2] / dbl_a[4])); - s0 = fabs(dbl_a[2] / dbl_a[3]); + s = 1.; + if (dbl_a[4] != 0) + s = sqrt(fabs(dbl_a[2] / dbl_a[4])); + s0 = 1.; + if (dbl_a[3] != 0) + s0 = fabs(dbl_a[2] / dbl_a[3]); if (s0 > s) s = s0; ds = 2.; Modified: trunk/src/pol5/pol51opt.c =================================================================== --- trunk/src/pol5/pol51opt.c 2011-03-20 11:34:07 UTC (rev 413) +++ trunk/src/pol5/pol51opt.c 2011-04-16 07:13:51 UTC (rev 414) @@ -574,8 +574,14 @@ niter=0; for (i=0; i<6; i++) dbl_a[i]=mpz_get_d(gmp_a[i]); dbl_d=mpz_get_d(gmp_d); - s=sqrt(fabs(dbl_a[2]/dbl_a[4])); - s0=fabs(dbl_a[2]/dbl_a[3]); if (s0>s) s=s0; + s=1.; + if (dbl_a[4]!=0) + s=sqrt(fabs(dbl_a[2]/dbl_a[4])); + s0=1.; + if (dbl_a[3]!=0) + s0=fabs(dbl_a[2]/dbl_a[3]); + if (s0>s) + s=s0; ds=2.; di1=(int64_t)(dbl_a[1]/dbl_d); di0=(int64_t)(dbl_a[0]/dbl_d); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |