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 */
|