mirror of
https://github.com/lcn2/calc.git
synced 2025-08-16 01:03:29 +03:00
Release 2.12.6.10
Added a patch to replaces the manual search for include files in $(INCDIR) in the have_*.h targets with compiler invocations. Thanks goes to Helmut Grohne <helmut at subdivi dot de> who implemented the patch and posted it to the Debian bug tracker and Martin Buck (m at rtin-buck dor de) for forwarding it to us. The check_include make rule was fixed to not assume /usr/include. The qprintnum() function now takes outdigits as a 3rd argument. Most of the time, this 3rd argument is just conf->outdigits. But when it comes to the experimental '%g', this value can change. This avoids having to modify conf->outdigits.
This commit is contained in:
18
CHANGES
18
CHANGES
@@ -1,4 +1,20 @@
|
|||||||
The following are the changes from calc version 2.12.6.9 to date:
|
The following are the changes from calc version 2.12.6.10 to date:
|
||||||
|
|
||||||
|
Added a patch to replaces the manual search for include files
|
||||||
|
in $(INCDIR) in the have_*.h targets with compiler invocations.
|
||||||
|
Thanks goes to Helmut Grohne <helmut at subdivi dot de> who
|
||||||
|
implemented the patch and posted it to the Debian bug tracker
|
||||||
|
and Martin Buck (m at rtin-buck dor de) for forwarding it to us.
|
||||||
|
|
||||||
|
The check_include make rule was fixed to not assume /usr/include.
|
||||||
|
|
||||||
|
The qprintnum() function now takes outdigits as a 3rd argument.
|
||||||
|
Most of the time, this 3rd argument is just conf->outdigits.
|
||||||
|
But when it comes to the experimental '%g', this value can
|
||||||
|
change. This avoids having to modify conf->outdigits.
|
||||||
|
|
||||||
|
|
||||||
|
The following are the changes from calc version 2.12.6.9 to 2.12.6.9:
|
||||||
|
|
||||||
Fixed a number of core dump bugs related to the calculation of
|
Fixed a number of core dump bugs related to the calculation of
|
||||||
tan(), cot(), sec(), csc(), tanh(), coth(), sech(), and csch(),
|
tan(), cot(), sec(), csc(), tanh(), coth(), sech(), and csch(),
|
||||||
|
@@ -1054,7 +1054,7 @@ EXT=
|
|||||||
|
|
||||||
# The default calc versions
|
# The default calc versions
|
||||||
#
|
#
|
||||||
VERSION= 2.12.6.9
|
VERSION= 2.12.6.10
|
||||||
|
|
||||||
# Names of shared libraries with versions
|
# Names of shared libraries with versions
|
||||||
#
|
#
|
||||||
@@ -2179,25 +2179,15 @@ TARGETS= ${EARLY_TARGETS} ${BLD_TYPE} ${LATE_TARGETS}
|
|||||||
all: check_include ${BLD_TYPE} CHANGES
|
all: check_include ${BLD_TYPE} CHANGES
|
||||||
|
|
||||||
check_include:
|
check_include:
|
||||||
$(Q) if [ ! -d ${INCDIR} ]; then \
|
$(Q) if ! echo '#include <stdio.h>' | ${CC} -E - >/dev/null 2>&1; then \
|
||||||
echo "ERROR: critical directory missing: /usr/include" 1>&2; \
|
echo "ERROR: The critical <stdio.h> include file is missing." 1>&2; \
|
||||||
echo "Without this critical directory, we cannot compile." 1>&2; \
|
echo "Without critical include files, we cannot compile." 1>&2; \
|
||||||
echo 1>&2; \
|
|
||||||
echo "Perhaps your system isn't setup to compile C source?" 1>&2; \
|
echo "Perhaps your system isn't setup to compile C source?" 1>&2; \
|
||||||
echo "For example, Apple OS X / darwin requres that XCode" 1>&2; \
|
|
||||||
echo "must be installed and that you run the command:" 1>&2; \
|
|
||||||
echo 1>&2; \
|
echo 1>&2; \
|
||||||
echo " xcode-select --install" 1>&2; \
|
echo "For example, Apple macOS / Darwin requres that XCode" 1>&2; \
|
||||||
|
echo "must be installed." 1>&2; \
|
||||||
echo 1>&2; \
|
echo 1>&2; \
|
||||||
exit 1; \
|
echo "Also macOS users might later to run this command:" 1>&2; \
|
||||||
fi
|
|
||||||
$(Q) if [ ! -f ${INCDIR}/stdio.h ]; then \
|
|
||||||
echo "ERROR: critical include files are missing" 1>&2; \
|
|
||||||
echo "Without this critical directory, we cannot compile." 1>&2; \
|
|
||||||
echo 1>&2; \
|
|
||||||
echo "Perhaps your system isn't setup to compile C source?" 1>&2; \
|
|
||||||
echo "For example, Apple OS X / darwin requres that XCode" 1>&2; \
|
|
||||||
echo "must be installed and that you run the command:" 1>&2; \
|
|
||||||
echo 1>&2; \
|
echo 1>&2; \
|
||||||
echo " xcode-select --install" 1>&2; \
|
echo " xcode-select --install" 1>&2; \
|
||||||
echo 1>&2; \
|
echo 1>&2; \
|
||||||
@@ -2477,22 +2467,13 @@ endian_calc.h: endian${EXT} ${MAKE_FILE}
|
|||||||
${Q} echo '' >> endian_calc.h
|
${Q} echo '' >> endian_calc.h
|
||||||
${Q} echo '/* what byte order are we? */' >> endian_calc.h
|
${Q} echo '/* what byte order are we? */' >> endian_calc.h
|
||||||
-${Q} if [ X"${CALC_BYTE_ORDER}" = X ]; then \
|
-${Q} if [ X"${CALC_BYTE_ORDER}" = X ]; then \
|
||||||
if [ -f ${INCDIR}/endian.h ]; then \
|
if echo '#include <endian.h>' | ${CC} -E - >/dev/null 2>&1; then \
|
||||||
echo '#include <endian.h>' >> endian_calc.h; \
|
echo '#include <endian.h>' >> endian_calc.h; \
|
||||||
echo '#define CALC_BYTE_ORDER BYTE_ORDER' >> endian_calc.h; \
|
echo '#define CALC_BYTE_ORDER BYTE_ORDER' >> endian_calc.h; \
|
||||||
elif [ -f ${INCDIR}/machine/endian.h ]; then \
|
elif echo '#include <machine/endian.h>' | ${CC} -E - >/dev/null 2>&1; then \
|
||||||
echo '#include <machine/endian.h>' >> endian_calc.h; \
|
echo '#include <machine/endian.h>' >> endian_calc.h; \
|
||||||
echo '#define CALC_BYTE_ORDER BYTE_ORDER' >> endian_calc.h; \
|
echo '#define CALC_BYTE_ORDER BYTE_ORDER' >> endian_calc.h; \
|
||||||
elif [ -f ${INCDIR}/sys/endian.h ]; then \
|
elif echo '#include <sys/endian.h>' | ${CC} -E- >/dev/null 2>&1; then \
|
||||||
echo '#include <sys/endian.h>' >> endian_calc.h; \
|
|
||||||
echo '#define CALC_BYTE_ORDER BYTE_ORDER' >> endian_calc.h; \
|
|
||||||
elif [ -f /usr/include/endian.h ]; then \
|
|
||||||
echo '#include <endian.h>' >> endian_calc.h; \
|
|
||||||
echo '#define CALC_BYTE_ORDER BYTE_ORDER' >> endian_calc.h; \
|
|
||||||
elif [ -f /usr/include/machine/endian.h ]; then \
|
|
||||||
echo '#include <machine/endian.h>' >> endian_calc.h; \
|
|
||||||
echo '#define CALC_BYTE_ORDER BYTE_ORDER' >> endian_calc.h; \
|
|
||||||
elif [ -f /usr/include/sys/endian.h ]; then \
|
|
||||||
echo '#include <sys/endian.h>' >> endian_calc.h; \
|
echo '#include <sys/endian.h>' >> endian_calc.h; \
|
||||||
echo '#define CALC_BYTE_ORDER BYTE_ORDER' >> endian_calc.h; \
|
echo '#define CALC_BYTE_ORDER BYTE_ORDER' >> endian_calc.h; \
|
||||||
else \
|
else \
|
||||||
@@ -2559,9 +2540,7 @@ have_times.h: ${MAKE_FILE}
|
|||||||
echo '#define HAVE_TIMES_H /* yes */' >> have_times.h; \
|
echo '#define HAVE_TIMES_H /* yes */' >> have_times.h; \
|
||||||
elif [ X"${HAVE_TIMES_H}" = X"NO" ]; then \
|
elif [ X"${HAVE_TIMES_H}" = X"NO" ]; then \
|
||||||
echo '#undef HAVE_TIMES_H /* no */' >> have_times.h; \
|
echo '#undef HAVE_TIMES_H /* no */' >> have_times.h; \
|
||||||
elif [ -f ${INCDIR}/times.h ]; then \
|
elif echo '#include <times.h>' | ${CC} -E - >/dev/null 2>&1; then \
|
||||||
echo '#define HAVE_TIMES_H /* yes */' >> have_times.h; \
|
|
||||||
elif [ -f /usr/include/times.h ]; then \
|
|
||||||
echo '#define HAVE_TIMES_H /* yes */' >> have_times.h; \
|
echo '#define HAVE_TIMES_H /* yes */' >> have_times.h; \
|
||||||
else \
|
else \
|
||||||
echo '#undef HAVE_TIMES_H /* no */' >> have_times.h; \
|
echo '#undef HAVE_TIMES_H /* no */' >> have_times.h; \
|
||||||
@@ -2570,9 +2549,7 @@ have_times.h: ${MAKE_FILE}
|
|||||||
echo '#define HAVE_SYS_TIMES_H /* yes */' >> have_times.h; \
|
echo '#define HAVE_SYS_TIMES_H /* yes */' >> have_times.h; \
|
||||||
elif [ X"${HAVE_SYS_TIMES_H}" = X"NO" ]; then \
|
elif [ X"${HAVE_SYS_TIMES_H}" = X"NO" ]; then \
|
||||||
echo '#undef HAVE_SYS_TIMES_H /* no */' >> have_times.h; \
|
echo '#undef HAVE_SYS_TIMES_H /* no */' >> have_times.h; \
|
||||||
elif [ -f ${INCDIR}/sys/times.h ]; then \
|
elif echo '#include <sys/times.h>' | ${CC} -E - >/dev/null 2>&1; then \
|
||||||
echo '#define HAVE_SYS_TIMES_H /* yes */' >> have_times.h; \
|
|
||||||
elif [ -f /usr/include/sys/times.h ]; then \
|
|
||||||
echo '#define HAVE_SYS_TIMES_H /* yes */' >> have_times.h; \
|
echo '#define HAVE_SYS_TIMES_H /* yes */' >> have_times.h; \
|
||||||
else \
|
else \
|
||||||
echo '#undef HAVE_SYS_TIMES_H /* no */' >> have_times.h; \
|
echo '#undef HAVE_SYS_TIMES_H /* no */' >> have_times.h; \
|
||||||
@@ -2581,9 +2558,7 @@ have_times.h: ${MAKE_FILE}
|
|||||||
echo '#define HAVE_TIME_H /* yes */' >> have_times.h; \
|
echo '#define HAVE_TIME_H /* yes */' >> have_times.h; \
|
||||||
elif [ X"${HAVE_TIME_H}" = X"NO" ]; then \
|
elif [ X"${HAVE_TIME_H}" = X"NO" ]; then \
|
||||||
echo '#undef HAVE_TIME_H /* no */' >> have_times.h; \
|
echo '#undef HAVE_TIME_H /* no */' >> have_times.h; \
|
||||||
elif [ -f ${INCDIR}/time.h ]; then \
|
elif echo '#include <time.h>' | ${CC} -E - >/dev/null 2>&1; then \
|
||||||
echo '#define HAVE_TIME_H /* yes */' >> have_times.h; \
|
|
||||||
elif [ -f /usr/include/time.h ]; then \
|
|
||||||
echo '#define HAVE_TIME_H /* yes */' >> have_times.h; \
|
echo '#define HAVE_TIME_H /* yes */' >> have_times.h; \
|
||||||
else \
|
else \
|
||||||
echo '#undef HAVE_TIME_H /* no */' >> have_times.h; \
|
echo '#undef HAVE_TIME_H /* no */' >> have_times.h; \
|
||||||
@@ -2592,9 +2567,7 @@ have_times.h: ${MAKE_FILE}
|
|||||||
echo '#define HAVE_SYS_TIME_H /* yes */' >> have_times.h; \
|
echo '#define HAVE_SYS_TIME_H /* yes */' >> have_times.h; \
|
||||||
elif [ X"${HAVE_SYS_TIME_H}" = X"NO" ]; then \
|
elif [ X"${HAVE_SYS_TIME_H}" = X"NO" ]; then \
|
||||||
echo '#undef HAVE_SYS_TIME_H /* no */' >> have_times.h; \
|
echo '#undef HAVE_SYS_TIME_H /* no */' >> have_times.h; \
|
||||||
elif [ -f ${INCDIR}/sys/time.h ]; then \
|
elif echo '#include <sys/time.h>' | ${CC} -E - >/dev/null 2>&1; then \
|
||||||
echo '#define HAVE_SYS_TIME_H /* yes */' >> have_times.h; \
|
|
||||||
elif [ -f /usr/include/sys/time.h ]; then \
|
|
||||||
echo '#define HAVE_SYS_TIME_H /* yes */' >> have_times.h; \
|
echo '#define HAVE_SYS_TIME_H /* yes */' >> have_times.h; \
|
||||||
else \
|
else \
|
||||||
echo '#undef HAVE_SYS_TIME_H /* no */' >> have_times.h; \
|
echo '#undef HAVE_SYS_TIME_H /* no */' >> have_times.h; \
|
||||||
@@ -2630,9 +2603,7 @@ have_stdlib.h: ${MAKE_FILE}
|
|||||||
echo '#define HAVE_STDLIB_H /* yes */' >> have_stdlib.h; \
|
echo '#define HAVE_STDLIB_H /* yes */' >> have_stdlib.h; \
|
||||||
elif [ X"${HAVE_STDLIB_H}" = X"NO" ]; then \
|
elif [ X"${HAVE_STDLIB_H}" = X"NO" ]; then \
|
||||||
echo '#undef HAVE_STDLIB_H /* no */' >> have_stdlib.h; \
|
echo '#undef HAVE_STDLIB_H /* no */' >> have_stdlib.h; \
|
||||||
elif [ -f ${INCDIR}/stdlib.h ]; then \
|
elif echo '#include <stdlib.h>' | ${CC} -E - >/dev/null 2>&1; then \
|
||||||
echo '#define HAVE_STDLIB_H /* yes */' >> have_stdlib.h; \
|
|
||||||
elif [ -f /usr/include/stdlib.h ]; then \
|
|
||||||
echo '#define HAVE_STDLIB_H /* yes */' >> have_stdlib.h; \
|
echo '#define HAVE_STDLIB_H /* yes */' >> have_stdlib.h; \
|
||||||
else \
|
else \
|
||||||
echo '#undef HAVE_STDLIB_H /* no */' >> have_stdlib.h; \
|
echo '#undef HAVE_STDLIB_H /* no */' >> have_stdlib.h; \
|
||||||
@@ -2668,9 +2639,7 @@ have_unistd.h: ${MAKE_FILE}
|
|||||||
echo '#define HAVE_UNISTD_H /* yes */' >> have_unistd.h; \
|
echo '#define HAVE_UNISTD_H /* yes */' >> have_unistd.h; \
|
||||||
elif [ X"${HAVE_UNISTD_H}" = X"NO" ]; then \
|
elif [ X"${HAVE_UNISTD_H}" = X"NO" ]; then \
|
||||||
echo '#undef HAVE_UNISTD_H /* no */' >> have_unistd.h; \
|
echo '#undef HAVE_UNISTD_H /* no */' >> have_unistd.h; \
|
||||||
elif [ -f ${INCDIR}/unistd.h ]; then \
|
elif echo '#include <unistd.h>' | ${CC} -E - >/dev/null 2>&1; then \
|
||||||
echo '#define HAVE_UNISTD_H /* yes */' >> have_unistd.h; \
|
|
||||||
elif [ -f /usr/include/unistd.h ]; then \
|
|
||||||
echo '#define HAVE_UNISTD_H /* yes */' >> have_unistd.h; \
|
echo '#define HAVE_UNISTD_H /* yes */' >> have_unistd.h; \
|
||||||
else \
|
else \
|
||||||
echo '#undef HAVE_UNISTD_H /* no */' >> have_unistd.h; \
|
echo '#undef HAVE_UNISTD_H /* no */' >> have_unistd.h; \
|
||||||
@@ -2706,9 +2675,7 @@ have_string.h: ${MAKE_FILE}
|
|||||||
echo '#define HAVE_STRING_H /* yes */' >> have_string.h; \
|
echo '#define HAVE_STRING_H /* yes */' >> have_string.h; \
|
||||||
elif [ X"${HAVE_STRING_H}" = X"NO" ]; then \
|
elif [ X"${HAVE_STRING_H}" = X"NO" ]; then \
|
||||||
echo '#undef HAVE_STRING_H /* no */' >> have_string.h; \
|
echo '#undef HAVE_STRING_H /* no */' >> have_string.h; \
|
||||||
elif [ -f ${INCDIR}/string.h ]; then \
|
elif echo '#include <string.h>' | ${CC} -E - >/dev/null 2>&1; then \
|
||||||
echo '#define HAVE_STRING_H /* yes */' >> have_string.h; \
|
|
||||||
elif [ -f /usr/include/string.h ]; then \
|
|
||||||
echo '#define HAVE_STRING_H /* yes */' >> have_string.h; \
|
echo '#define HAVE_STRING_H /* yes */' >> have_string.h; \
|
||||||
else \
|
else \
|
||||||
echo '#undef HAVE_STRING_H /* no */' >> have_string.h; \
|
echo '#undef HAVE_STRING_H /* no */' >> have_string.h; \
|
||||||
@@ -2748,22 +2715,12 @@ terminal.h: ${MAKE_FILE}
|
|||||||
echo '#undef USE_TERMIOS /* <termios.h> */' >> terminal.h; \
|
echo '#undef USE_TERMIOS /* <termios.h> */' >> terminal.h; \
|
||||||
echo '#undef USE_TERMIO /* <termio.h> */' >> terminal.h; \
|
echo '#undef USE_TERMIO /* <termio.h> */' >> terminal.h; \
|
||||||
echo '#undef USE_SGTTY /* <sys/ioctl.h> */' >> terminal.h; \
|
echo '#undef USE_SGTTY /* <sys/ioctl.h> */' >> terminal.h; \
|
||||||
elif [ -f ${INCDIR}/termios.h ]; then \
|
elif echo '#include <termios.h>' | ${CC} -E - >/dev/null 2>&1; then \
|
||||||
echo '/* use termios */' >> terminal.h; \
|
echo '/* use termios */' >> terminal.h; \
|
||||||
echo '#define USE_TERMIOS /* <termios.h> */' >> terminal.h; \
|
echo '#define USE_TERMIOS /* <termios.h> */' >> terminal.h; \
|
||||||
echo '#undef USE_TERMIO /* <termio.h> */' >> terminal.h; \
|
echo '#undef USE_TERMIO /* <termio.h> */' >> terminal.h; \
|
||||||
echo '#undef USE_SGTTY /* <sys/ioctl.h> */' >> terminal.h; \
|
echo '#undef USE_SGTTY /* <sys/ioctl.h> */' >> terminal.h; \
|
||||||
elif [ -f ${INCDIR}/termio.h ]; then \
|
elif echo '#include <termio.h>' | ${CC} -E - >/dev/null 2>&1; then \
|
||||||
echo '/* use termio */' >> terminal.h; \
|
|
||||||
echo '#undef USE_TERMIOS /* <termios.h> */' >> terminal.h; \
|
|
||||||
echo '#define USE_TERMIO /* <termio.h> */' >> terminal.h; \
|
|
||||||
echo '#undef USE_SGTTY /* <sys/ioctl.h> */' >> terminal.h; \
|
|
||||||
elif [ -f /usr/include/termios.h ]; then \
|
|
||||||
echo '/* use termios */' >> terminal.h; \
|
|
||||||
echo '#define USE_TERMIOS /* <termios.h> */' >> terminal.h; \
|
|
||||||
echo '#undef USE_TERMIO /* <termio.h> */' >> terminal.h; \
|
|
||||||
echo '#undef USE_SGTTY /* <sys/ioctl.h> */' >> terminal.h; \
|
|
||||||
elif [ -f /usr/include/termio.h ]; then \
|
|
||||||
echo '/* use termio */' >> terminal.h; \
|
echo '/* use termio */' >> terminal.h; \
|
||||||
echo '#undef USE_TERMIOS /* <termios.h> */' >> terminal.h; \
|
echo '#undef USE_TERMIOS /* <termios.h> */' >> terminal.h; \
|
||||||
echo '#define USE_TERMIO /* <termio.h> */' >> terminal.h; \
|
echo '#define USE_TERMIO /* <termio.h> */' >> terminal.h; \
|
||||||
|
@@ -1182,7 +1182,7 @@ comprint(COMPLEX *c)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (!qiszero(c->real) || qiszero(c->imag))
|
if (!qiszero(c->real) || qiszero(c->imag))
|
||||||
qprintnum(c->real, MODE_DEFAULT);
|
qprintnum(c->real, MODE_DEFAULT, conf->outdigits);
|
||||||
qtmp = c->imag[0];
|
qtmp = c->imag[0];
|
||||||
if (qiszero(&qtmp))
|
if (qiszero(&qtmp))
|
||||||
return;
|
return;
|
||||||
@@ -1192,7 +1192,7 @@ comprint(COMPLEX *c)
|
|||||||
math_chr('-');
|
math_chr('-');
|
||||||
qtmp.num.sign = 0;
|
qtmp.num.sign = 0;
|
||||||
}
|
}
|
||||||
qprintnum(&qtmp, MODE_DEFAULT);
|
qprintnum(&qtmp, MODE_DEFAULT, conf->outdigits);
|
||||||
math_chr('i');
|
math_chr('i');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -348,7 +348,7 @@ EXT=
|
|||||||
|
|
||||||
# The default calc versions
|
# The default calc versions
|
||||||
#
|
#
|
||||||
VERSION= 2.12.6.9
|
VERSION= 2.12.6.10
|
||||||
|
|
||||||
# Names of shared libraries with versions
|
# Names of shared libraries with versions
|
||||||
#
|
#
|
||||||
|
@@ -348,7 +348,7 @@ EXT=
|
|||||||
|
|
||||||
# The default calc versions
|
# The default calc versions
|
||||||
#
|
#
|
||||||
VERSION= 2.12.6.9
|
VERSION= 2.12.6.10
|
||||||
|
|
||||||
# Names of shared libraries with versions
|
# Names of shared libraries with versions
|
||||||
#
|
#
|
||||||
|
2
func.c
2
func.c
@@ -335,7 +335,7 @@ f_str(VALUE *vp)
|
|||||||
break;
|
break;
|
||||||
case V_NUM:
|
case V_NUM:
|
||||||
math_divertio();
|
math_divertio();
|
||||||
qprintnum(vp->v_num, MODE_DEFAULT);
|
qprintnum(vp->v_num, MODE_DEFAULT, conf->outdigits);
|
||||||
cp = math_getdivertedio();
|
cp = math_getdivertedio();
|
||||||
result.v_str = makestring(cp);
|
result.v_str = makestring(cp);
|
||||||
break;
|
break;
|
||||||
|
31
qio.c
31
qio.c
@@ -183,7 +183,7 @@ qprintf(char *fmt, ...)
|
|||||||
* Integers are always printed as themselves.
|
* Integers are always printed as themselves.
|
||||||
*/
|
*/
|
||||||
void
|
void
|
||||||
qprintnum(NUMBER *q, int outmode)
|
qprintnum(NUMBER *q, int outmode, LEN outdigits)
|
||||||
{
|
{
|
||||||
NUMBER tmpval;
|
NUMBER tmpval;
|
||||||
long prec, exp;
|
long prec, exp;
|
||||||
@@ -202,13 +202,13 @@ qprintnum(NUMBER *q, int outmode)
|
|||||||
|
|
||||||
case MODE_REAL:
|
case MODE_REAL:
|
||||||
prec = qdecplaces(q);
|
prec = qdecplaces(q);
|
||||||
if ((prec < 0) || (prec > conf->outdigits)) {
|
if ((prec < 0) || (prec > outdigits)) {
|
||||||
if (conf->tilde_ok)
|
if (conf->tilde_ok)
|
||||||
PUTCHAR('~');
|
PUTCHAR('~');
|
||||||
}
|
}
|
||||||
if (conf->fullzero || (prec < 0) ||
|
if (conf->fullzero || (prec < 0) ||
|
||||||
(prec > conf->outdigits))
|
(prec > outdigits))
|
||||||
prec = conf->outdigits;
|
prec = outdigits;
|
||||||
qprintff(q, 0L, prec);
|
qprintff(q, 0L, prec);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@@ -225,7 +225,7 @@ qprintnum(NUMBER *q, int outmode)
|
|||||||
tmpval.num.sign = 0;
|
tmpval.num.sign = 0;
|
||||||
exp = qilog10(&tmpval);
|
exp = qilog10(&tmpval);
|
||||||
if (exp == 0) { /* in range to output as real */
|
if (exp == 0) { /* in range to output as real */
|
||||||
qprintnum(q, MODE_REAL);
|
qprintnum(q, MODE_REAL, outdigits);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
tmpval.num = _one_;
|
tmpval.num = _one_;
|
||||||
@@ -237,35 +237,22 @@ qprintnum(NUMBER *q, int outmode)
|
|||||||
q = qmul(q, &tmpval);
|
q = qmul(q, &tmpval);
|
||||||
zfree(tmpval.num);
|
zfree(tmpval.num);
|
||||||
zfree(tmpval.den);
|
zfree(tmpval.den);
|
||||||
qprintnum(q, MODE_REAL);
|
qprintnum(q, MODE_REAL, outdigits);
|
||||||
qfree(q);
|
qfree(q);
|
||||||
PRINTF1("e%ld", exp);
|
PRINTF1("e%ld", exp);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case MODE_REAL_AUTO:
|
case MODE_REAL_AUTO:
|
||||||
{
|
{
|
||||||
/*
|
|
||||||
* XXX - re-write to not modify conf->outdigits
|
|
||||||
*
|
|
||||||
* Modifying the configuration value could be dangerious
|
|
||||||
* when a calculation is aborted within an opcode.
|
|
||||||
* Better to use qprintfg() use inline code that
|
|
||||||
* does not depend on changing conf->outdigits.
|
|
||||||
*/
|
|
||||||
const int P = conf->outdigits ? conf->outdigits : 1;
|
const int P = conf->outdigits ? conf->outdigits : 1;
|
||||||
long olddigits;
|
|
||||||
tmpval = *q;
|
tmpval = *q;
|
||||||
tmpval.num.sign = 0;
|
tmpval.num.sign = 0;
|
||||||
exp = qilog10(&tmpval);
|
exp = qilog10(&tmpval);
|
||||||
olddigits = conf->outdigits;
|
|
||||||
if (P > exp && exp >= -P) {
|
if (P > exp && exp >= -P) {
|
||||||
conf->outdigits = P - 1 - exp;
|
qprintnum(q, MODE_REAL, P - 1 - exp);
|
||||||
qprintnum(q, MODE_REAL);
|
|
||||||
} else {
|
} else {
|
||||||
conf->outdigits = P - 1;
|
qprintnum(q, MODE_EXP, P - 1);
|
||||||
qprintnum(q, MODE_EXP);
|
|
||||||
}
|
}
|
||||||
conf->outdigits = olddigits;
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -288,7 +275,7 @@ qprintnum(NUMBER *q, int outmode)
|
|||||||
|
|
||||||
if (outmode2 != MODE2_OFF) {
|
if (outmode2 != MODE2_OFF) {
|
||||||
PUTSTR(" /* ");
|
PUTSTR(" /* ");
|
||||||
qprintnum(q, outmode2);
|
qprintnum(q, outmode2, outdigits);
|
||||||
PUTSTR(" */");
|
PUTSTR(" */");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
2
qmath.h
2
qmath.h
@@ -67,7 +67,7 @@ E_FUNC FULL qtou(NUMBER *q);
|
|||||||
E_FUNC SFULL qtos(NUMBER *q);
|
E_FUNC SFULL qtos(NUMBER *q);
|
||||||
E_FUNC long qparse(char *str, int flags);
|
E_FUNC long qparse(char *str, int flags);
|
||||||
E_FUNC void qfreenum(NUMBER *q);
|
E_FUNC void qfreenum(NUMBER *q);
|
||||||
E_FUNC void qprintnum(NUMBER *q, int mode);
|
E_FUNC void qprintnum(NUMBER *q, int mode, LEN outdigits);
|
||||||
E_FUNC void qprintff(NUMBER *q, long width, long precision);
|
E_FUNC void qprintff(NUMBER *q, long width, long precision);
|
||||||
E_FUNC void qprintfe(NUMBER *q, long width, long precision);
|
E_FUNC void qprintfe(NUMBER *q, long width, long precision);
|
||||||
E_FUNC void qprintfr(NUMBER *q, long width, BOOL force);
|
E_FUNC void qprintfr(NUMBER *q, long width, BOOL force);
|
||||||
|
2
qmod.c
2
qmod.c
@@ -404,7 +404,7 @@ showredcdata(void)
|
|||||||
for (i = 0, rcp = redc_cache; i < MAXREDC; i++, rcp++) {
|
for (i = 0, rcp = redc_cache; i < MAXREDC; i++, rcp++) {
|
||||||
if (rcp->age > 0) {
|
if (rcp->age > 0) {
|
||||||
printf("%-8ld%-8ld", i, rcp->age);
|
printf("%-8ld%-8ld", i, rcp->age);
|
||||||
qprintnum(rcp->rnum, 0);
|
qprintnum(rcp->rnum, 0, conf->outdigits);
|
||||||
printf("\n");
|
printf("\n");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
6
value.c
6
value.c
@@ -2774,7 +2774,7 @@ printvalue(VALUE *vp, int flags)
|
|||||||
}
|
}
|
||||||
switch (type) {
|
switch (type) {
|
||||||
case V_NUM:
|
case V_NUM:
|
||||||
qprintnum(vp->v_num, MODE_DEFAULT);
|
qprintnum(vp->v_num, MODE_DEFAULT, conf->outdigits);
|
||||||
if (conf->traceflags & TRACE_LINKS)
|
if (conf->traceflags & TRACE_LINKS)
|
||||||
math_fmt("#%ld", vp->v_num->links);
|
math_fmt("#%ld", vp->v_num->links);
|
||||||
break;
|
break;
|
||||||
@@ -2835,7 +2835,7 @@ printvalue(VALUE *vp, int flags)
|
|||||||
if (userfunc("octet_print", vp))
|
if (userfunc("octet_print", vp))
|
||||||
break;
|
break;
|
||||||
qtemp = itoq((long) *vp->v_octet);
|
qtemp = itoq((long) *vp->v_octet);
|
||||||
qprintnum(qtemp, MODE_DEFAULT);
|
qprintnum(qtemp, MODE_DEFAULT, conf->outdigits);
|
||||||
qfree(qtemp);
|
qfree(qtemp);
|
||||||
break;
|
break;
|
||||||
case V_OPTR:
|
case V_OPTR:
|
||||||
@@ -2888,7 +2888,7 @@ printestr(VALUE *vp)
|
|||||||
math_chr('"');
|
math_chr('"');
|
||||||
return;
|
return;
|
||||||
case V_NUM:
|
case V_NUM:
|
||||||
qprintnum(vp->v_num, MODE_FRAC);
|
qprintnum(vp->v_num, MODE_FRAC, conf->outdigits);
|
||||||
return;
|
return;
|
||||||
case V_COM:
|
case V_COM:
|
||||||
mode = math_setmode(MODE_FRAC);
|
mode = math_setmode(MODE_FRAC);
|
||||||
|
@@ -45,7 +45,7 @@ static char *program;
|
|||||||
#define MAJOR_VER 2 /* major library version */
|
#define MAJOR_VER 2 /* major library version */
|
||||||
#define MINOR_VER 12 /* minor library version */
|
#define MINOR_VER 12 /* minor library version */
|
||||||
#define MAJOR_PATCH 6 /* major software level under library version */
|
#define MAJOR_PATCH 6 /* major software level under library version */
|
||||||
#define MINOR_PATCH 9 /* minor software level or 0 if not patched */
|
#define MINOR_PATCH 10 /* minor software level or 0 if not patched */
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
Reference in New Issue
Block a user