From: Jorge G. <cl...@us...> - 2007-12-19 15:39:40
|
Update of /cvsroot/easycalc/easycalc/mlib In directory sc8-pr-cvs17.sourceforge.net:/tmp/cvs-serv21643/mlib Modified Files: complex.c display.c mathem.c Log Message: improved the use of NaN & Inf Index: display.c =================================================================== RCS file: /cvsroot/easycalc/easycalc/mlib/display.c,v retrieving revision 1.12 retrieving revision 1.13 diff -C2 -d -r1.12 -r1.13 *** display.c 22 Aug 2007 19:24:03 -0000 1.12 --- display.c 19 Dec 2007 15:39:21 -0000 1.13 *************** *** 34,37 **** --- 34,38 ---- #include "fp.h" #include "stack.h" + #include "MathLib.h" TdispPrefs dispPrefs; *************** *** 61,68 **** if (number.real != 0.0 || number.imag==0.0) { fp_print_double(result,number.real); ! if (number.imag > 0.0) StrCat(result,"+"); } ! if (number.imag != 0.0) { fp_print_double(result+StrLen(result),number.imag); StrCat(result,"i"); --- 62,70 ---- if (number.real != 0.0 || number.imag==0.0) { fp_print_double(result,number.real); ! if (number.imag > 0.0 && finite(number.imag)) StrCat(result,"+"); } ! if (number.imag != 0.0 && !isnan(number.imag)) { ! if(number fp_print_double(result+StrLen(result),number.imag); StrCat(result,"i"); Index: complex.c =================================================================== RCS file: /cvsroot/easycalc/easycalc/mlib/complex.c,v retrieving revision 1.23 retrieving revision 1.24 diff -C2 -d -r1.23 -r1.24 *** complex.c 27 May 2007 01:34:09 -0000 1.23 --- complex.c 19 Dec 2007 15:39:21 -0000 1.24 *************** *** 573,578 **** break; case FUNC_DIVIDE: ! if (arg2.real==0.0 && arg2.imag==0.0) ! return c_divbyzero; result = cplx_div(arg1,arg2); break; --- 573,578 ---- break; case FUNC_DIVIDE: ! //if (arg2.real==0.0 && arg2.imag==0.0) ! //return c_divbyzero; result = cplx_div(arg1,arg2); break; *************** *** 594,598 **** } ! if (calcPrefs.reducePrecision) { if (fabs(result.real) < PRECISION_TO_ZERO) --- 594,598 ---- } ! if (calcPrefs.reducePrecision && finite(result.imag)) { if (fabs(result.real) < PRECISION_TO_ZERO) *************** *** 747,751 **** } ! if (calcPrefs.reducePrecision) { if (fabs(result.real) < PRECISION_TO_ZERO) result.real= 0.0; --- 747,751 ---- } ! if (calcPrefs.reducePrecision && finite(result.imag)) { if (fabs(result.real) < PRECISION_TO_ZERO) result.real= 0.0; Index: mathem.c =================================================================== RCS file: /cvsroot/easycalc/easycalc/mlib/mathem.c,v retrieving revision 1.37 retrieving revision 1.38 diff -C2 -d -r1.37 -r1.38 *** mathem.c 22 Aug 2007 19:24:03 -0000 1.37 --- mathem.c 19 Dec 2007 15:39:21 -0000 1.38 *************** *** 329,334 **** case FUNC_DIVIDE: if (arg2==0) ! return c_divbyzero; ! result=arg1/arg2; break; case FUNC_MOD: --- 329,336 ---- case FUNC_DIVIDE: if (arg2==0) ! //return c_divbyzero; ! result=!isnan(arg1)*sgn(arg1)/arg2; ! else ! result=arg1/arg2; break; case FUNC_MOD: *************** *** 723,727 **** /* Avoid the sin(pi) = 1E-15 problem */ ! if (calcPrefs.reducePrecision && fabs(res) < PRECISION_TO_ZERO) res = 0.0; --- 725,729 ---- /* Avoid the sin(pi) = 1E-15 problem */ ! if (calcPrefs.reducePrecision && finite(res) && fabs(res) < PRECISION_TO_ZERO) res = 0.0; |