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;
|