From: Ton v. O. <tvo...@us...> - 2007-07-25 01:19:54
|
Update of /cvsroot/easycalc/easycalc/mlib In directory sc8-pr-cvs17:/tmp/cvs-serv815 Modified Files: fp.c stack.c Log Message: Only use "reduce precision" in calculations, *not* in display. Index: stack.c =================================================================== RCS file: /cvsroot/easycalc/easycalc/mlib/stack.c,v retrieving revision 1.37 retrieving revision 1.38 diff -C2 -d -r1.37 -r1.38 *** stack.c 29 May 2007 15:19:13 -0000 1.37 --- stack.c 25 Jul 2007 01:19:41 -0000 1.38 *************** *** 438,447 **** reduce_precision(double value) { ! double m,l; l = round(ROUND_OFFSET - log10(value)); if (finite(l) && l > 2.0) { ! m = pow(10.0,l); ! value = round(m*value)/m; } return value; --- 438,447 ---- reduce_precision(double value) { ! double m, l; l = round(ROUND_OFFSET - log10(value)); if (finite(l) && l > 2.0) { ! m = pow(10.0, l); ! value = round(m * value) / m; } return value; Index: fp.c =================================================================== RCS file: /cvsroot/easycalc/easycalc/mlib/fp.c,v retrieving revision 1.13 retrieving revision 1.14 diff -C2 -d -r1.13 -r1.14 *** fp.c 12 Sep 2006 19:40:56 -0000 1.13 --- fp.c 25 Jul 2007 01:19:41 -0000 1.14 *************** *** 42,49 **** static double SCI_LIMIT_MAX; /* Above this number show it as xEy */ static double SCI_LIMIT_MIN; /* Under this number show as xE-y */ ! static double DISP_MIN_LIMIT = 1E-15; /* Show numbers as sin(pi) as 1E-16, ! it's 0 */ ! static double DISP_MAX_LIMIT = 1E300; /* Don't show bigger numbers, it ! * makes problems */ static double BASE = 10.0; char flPointChar = '.'; --- 42,49 ---- static double SCI_LIMIT_MAX; /* Above this number show it as xEy */ static double SCI_LIMIT_MIN; /* Under this number show as xE-y */ ! //static double DISP_MIN_LIMIT = 1E-15; /* Show numbers as sin(pi) as 1E-16, ! // it's 0 */ ! //static double DISP_MAX_LIMIT = 1E300; /* Don't show bigger numbers, it ! // * makes problems */ static double BASE = 10.0; char flPointChar = '.'; *************** *** 54,58 **** * 9.999999987E-10 */ ! static double REDUCE_PREC = 1E-6; #define REDUCE_TO 6 --- 54,58 ---- * 9.999999987E-10 */ ! //static double REDUCE_PREC = 1E-6; #define REDUCE_TO 6 *************** *** 118,123 **** // REDUCE_PREC = 1E-6; // } else { ! DISP_MIN_LIMIT = 1E-100; ! REDUCE_PREC = 1E-90; // } } --- 118,123 ---- // REDUCE_PREC = 1E-6; // } else { ! // DISP_MIN_LIMIT = 1E-100; ! // REDUCE_PREC = 1E-90; // } } *************** *** 253,257 **** cvt_fltoa(str,fpart); strP += StrLen(strP); ! if (dispPrefs.stripZeros) { /* remove trailing 0's */ --- 253,264 ---- cvt_fltoa(str,fpart); strP += StrLen(strP); ! ! if (!dispPrefs.stripZeros && fpart < 1.0) { ! *strP++ = flPointChar; ! for (i = 0; i < myfrac; i++) { ! *strP++ = '0'; ! } ! *strP = '\0'; ! } if (dispPrefs.stripZeros) { /* remove trailing 0's */ *************** *** 318,330 **** fp_print(strP,value,dispPrefs.decPoints); } ! else if (fabs(value)>DISP_MAX_LIMIT) { ! StrCopy(strP,"It's too big"); ! } ! else if (fabs(value)<DISP_MIN_LIMIT) { ! /* Don't show too small numbers */ ! fp_print(strP,0,dispPrefs.decPoints); ! if (dispPrefs.mode!=disp_normal) ! fp_print_exp(strP+StrLen(strP),0); ! } else if (fabs(value)>=1 && dispPrefs.mode==disp_eng) { /* Engineer mode selected */ --- 325,337 ---- fp_print(strP,value,dispPrefs.decPoints); } ! // else if (fabs(value)>DISP_MAX_LIMIT) { ! // StrCopy(strP,"It's too big"); ! // } ! // else if (fabs(value)<DISP_MIN_LIMIT) { ! // /* Don't show too small numbers */ ! // fp_print(strP,0,dispPrefs.decPoints); ! // if (dispPrefs.mode!=disp_normal) ! // fp_print_exp(strP+StrLen(strP),0); ! // } else if (fabs(value)>=1 && dispPrefs.mode==disp_eng) { /* Engineer mode selected */ |