From: Alex M. <al...@us...> - 2003-12-30 09:21:20
|
Update of /cvsroot/gmpy/gmpy/src In directory sc8-pr-cvs1:/tmp/cvs-serv27759/src Modified Files: gmpy.c Log Message: Fixed bug in gmpy.fbinary(0), added unit tests to catch such bugs. Index: gmpy.c =================================================================== RCS file: /cvsroot/gmpy/gmpy/src/gmpy.c,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** gmpy.c 8 Aug 2003 09:48:57 -0000 1.7 --- gmpy.c 30 Dec 2003 09:21:16 -0000 1.8 *************** *** 1186,1189 **** --- 1186,1197 ---- cp = PyString_AsString(s); + /*** + * fprintf(stderr, "len is %d, cb=%d\n", len, *cp); + * fprintf(stderr, "the string is: "); + * for(i=0; i<len; ++i) + * fprintf(stderr, "%2.2x ", cp[i]); + * fprintf(stderr,"\n"); + ***/ + if(bits>0) { precision = bits; *************** *** 1205,1209 **** if(!(newob = Pympf_new(precision))) return NULL; ! if(256 == base) { /* --- 1213,1217 ---- if(!(newob = Pympf_new(precision))) return NULL; ! if(256 == base) { /* *************** *** 1224,1227 **** --- 1232,1240 ---- unsigned int expomag = 0; + /*** + * fprintf(stderr, "cb=%d, resusi=%d, exposi=%d, resuze=%d, precilen=%d\n", + * codebyte, resusign, exposign, resuzero, precilen); + ***/ + /* mpf zero has a very compact (1-byte) binary encoding!-) */ if(resuzero) { *************** *** 1583,1590 **** /* prepare codebyte */ sign = mpf_sgn(x->f); if(sign==0) { /* 0 -> single codebyte with 'zerovalue' bit set */ ! /* return Py_BuildValue("s", "\004"); */ ! codebyte = 0; } else if(sign<0) { codebyte = 1; --- 1596,1604 ---- /* prepare codebyte */ sign = mpf_sgn(x->f); + /* fprintf(stderr, "sign is %d\n", sign); */ if(sign==0) { /* 0 -> single codebyte with 'zerovalue' bit set */ ! return Py_BuildValue("s", "\004"); ! /* codebyte = 0; */ } else if(sign<0) { codebyte = 1; |