Release calc version 2.11.5t0

This commit is contained in:
Landon Curt Noll
2001-02-25 14:22:09 -08:00
parent 3d55811205
commit fc85ac3791
21 changed files with 817 additions and 464 deletions

30
BUGS
View File

@@ -83,6 +83,32 @@ Problems with known work-a-rounds:
to fail the regression test. The work-a-round is to compile with -O
or to use gcc-2.96 or later.
This bug has been observed on the Sparc and the PowerPC machine.
On the PowerPC with gcc-2.95 when compiled with -O2, the following
patch seems to help:
*** zfunc.c.orig Fri Feb 23 18:18:39 2001
--- zfunc.c Fri Feb 23 18:39:33 2001
***************
*** 1481,1487 ****
{
HALF *a, *A, *b, *a0, u;
int i, j, j1, j2, k, k1, m, m0, m1, n, n0, o;
! FULL d, e, f, g, h, s, t, x, topbit;
int remsign;
BOOL up, onebit;
ZVALUE sqrt;
--- 1481,1488 ----
{
HALF *a, *A, *b, *a0, u;
int i, j, j1, j2, k, k1, m, m0, m1, n, n0, o;
! volatile FULL d;
! FULL e, f, g, h, s, t, x, topbit;
int remsign;
BOOL up, onebit;
ZVALUE sqrt;
* Solaris cc somtimes barfs while compiling zrand.c. In particular, calc
barfs on on the SVAL macro. The work-a-round is to use the Solaric cc
Makefile set sets -DFORCE_STDC. I.e,:
@@ -179,8 +205,8 @@ Problems with known work-a-rounds:
## received a copy with calc; if not, write to Free Software Foundation, Inc.
## 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
##
## @(#) $Revision: 29.5 $
## @(#) $Id: BUGS,v 29.5 2000/06/07 14:02:13 chongo Exp $
## @(#) $Revision: 29.7 $
## @(#) $Id: BUGS,v 29.7 2001/02/25 21:01:52 chongo Exp $
## @(#) $Source: /usr/local/src/cmd/calc/RCS/BUGS,v $
##
## Under source code control: 1994/03/18 14:06:13

25
CHANGES
View File

@@ -1,3 +1,21 @@
The following are the changes from calc version 2.11.5t0 to date:
Fixed a compile problem with Linux 2.4 / Debian. Thanks goes
to Martin Buck <m at rtin-buck dot de> for help with this issue.
Fixed a bug in how L64_FORMAT (it determined if "%ld" or "%lld"
is appropriate for printing of 64 bit long longs) was determined.
Thanks goes to Martin Buck <m at rtin-buck dot de> for reporting
this bug and testing the fix.
An effort was made to make calc easier to build under Windoz
using the Cygwin project (http://sources.redhat.com/cygwin/).
Thanks to the work of Thomas Jones-Low (tjoneslo and softstart
dot com), a number of #if defined(_WIN32)'s have been added
to calc source. These changes should not effect Windoz
free system such as GNU/Linux, Solaris, POSIX-like, etc ...
The following are the changes from calc version 2.11.4t1 to date:
Added missing test8600.cal test file.
@@ -24,6 +42,9 @@ The following are the changes from calc version 2.11.4t1 to date:
Return an error on malloc / realloc failures for bernoulli and
euler functions.
Added MAKEFILE_REV make variable to help determine Makefile version.
Fixed the way the env rule reports Makefile values.
The following are the changes from calc version 2.11.3t0 to 2.11.4:
@@ -5038,8 +5059,8 @@ Following is a list of visible changes to calc from version 1.24.7 to 1.26.1:
## received a copy with calc; if not, write to Free Software Foundation, Inc.
## 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
##
## @(#) $Revision: 29.16 $
## @(#) $Id: CHANGES,v 29.16 2000/12/17 13:07:54 chongo Exp $
## @(#) $Revision: 29.20 $
## @(#) $Id: CHANGES,v 29.20 2001/02/25 22:07:36 chongo Exp $
## @(#) $Source: /usr/local/src/cmd/calc/RCS/CHANGES,v $
##
## Under source code control: 1993/06/02 18:12:57

23
COPYING
View File

@@ -12,8 +12,8 @@ This file is Copyrighted
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
# @(#) $Revision: 29.3 $
# @(#) $Id: COPYING,v 29.3 2000/12/14 09:18:06 chongo Exp $
# @(#) $Revision: 29.5 $
# @(#) $Id: COPYING,v 29.5 2000/12/18 10:22:55 chongo Exp $
# @(#) $Source: /usr/local/src/cmd/calc/RCS/COPYING,v $
=-=
@@ -140,7 +140,7 @@ Calc copyrights and exception files
-----------------------------------
With the exception of the files listed below, Calc is covered under
the following Copyrights:
the following GNU Lesser General Public License Copyrights:
Copyright (C) year David I. Bell
Copyright (C) year David I. Bell and Landon Curt Noll
@@ -150,12 +150,11 @@ Calc copyrights and exception files
Copyright (C) year Ernest Bowen and Landon Curt Noll
Copyright (C) year Ernest Bowen
A few files are not covered under the GNU Lesser General Public
License. The source files not covered are:
These files are not covered under one of the Copyrights listed above:
shs1.c shs1.h shs.c shs.h
md5.c md5.h lib/qtime.cal COPYING
COPYING-LGPL
md5.c md5.h COPYING COPYING-LGPL
cal/qtime.cal
The file COPYING-LGPL, which contains a copy of the version 2.1
GNU Lesser General Public License, is itself Copyrighted by the
@@ -168,10 +167,12 @@ Calc copyrights and exception files
verbatim copies of this file but you may not modify this file.
Some of these exception files are in the public domain. Other
exception files have non-LGPL Copyrights. In all cases one may
use and distribute these exception files freely. And because one
may freely distribute the LGPL covered files, the entire calc
source may be freely used and distributed.
exception files have non-LGPL Copyrights. Other files are under a
LGPL Copyright but have different authors.
In all cases one may use and distribute these exception files freely.
And because one may freely distribute the LGPL covered files, the
entire calc source may be freely used and distributed.
=-=

183
Makefile
View File

@@ -20,8 +20,8 @@
# received a copy with calc; if not, write to Free Software Foundation, Inc.
# 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
#
# @(#) $Revision: 29.10 $
# @(#) $Id: Makefile.ship,v 29.10 2000/12/17 12:23:29 chongo Exp $
MAKEFILE_REV= $$Revision: 29.14 $$
# @(#) $Id: Makefile.ship,v 29.14 2001/02/25 22:07:36 chongo Exp $
# @(#) $Source: /usr/local/src/cmd/calc/RCS/Makefile.ship,v $
#
# Under source code control: 1990/02/15 01:48:41
@@ -1050,7 +1050,7 @@ LICENSE= COPYING COPYING-LGPL
# These files are found (but not built) in the distribution
#
DISTLIST= ${C_SRC} ${H_SRC} ${MAKE_FILE} BUGS CHANGES LIBRARY README \
calc.man HOWTO.INSTALL ${UTIL_MISC_SRC} ${LICENSE}
README.WINDOWS calc.man HOWTO.INSTALL ${UTIL_MISC_SRC} ${LICENSE}
# These files are used to make (but not built) a calc .a link library
#
@@ -2661,94 +2661,95 @@ chk: ./cal/regress.cal
env:
@echo '=-=-=-=-= dumping major make variables =-=-=-=-='
@echo "TERMCONTROL=${TERMCONTROL}"; echo ""
@echo "HAVE_VSPRINTF=${HAVE_VSPRINTF}"; echo ""
@echo "BYTE_ORDER=${BYTE_ORDER}"; echo ""
@echo "LONG_BITS=${LONG_BITS}"; echo ""
@echo "LONGLONG_BITS=${LONGLONG_BITS}"; echo ""
@echo "HAVE_FPOS=${HAVE_FPOS}"; echo ""
@echo "HAVE_FPOS_POS=${HAVE_FPOS_POS}"; echo ""
@echo "HAVE_OFFSCL=${HAVE_OFFSCL}"; echo ""
@echo "HAVE_POSSCL=${HAVE_POSSCL}"; echo ""
@echo "HAVE_CONST=${HAVE_CONST}"; echo ""
@echo "HAVE_UID_T=${HAVE_UID_T}"; echo ""
@echo "HAVE_NEWSTR=${HAVE_NEWSTR}"; echo ""
@echo "HAVE_USTAT=${HAVE_USTAT}"; echo ""
@echo "HAVE_GETSID=${HAVE_GETSID}"; echo ""
@echo "HAVE_GETPGID=${HAVE_GETPGID}"; echo ""
@echo "HAVE_GETTIME=${HAVE_GETTIME}"; echo ""
@echo "HAVE_GETPRID=${HAVE_GETPRID}"; echo ""
@echo "HAVE_URANDOM=${HAVE_URANDOM}"; echo ""
@echo "ALIGN32=${ALIGN32}"; echo ""
@echo "BINDIR=${BINDIR}"; echo ""
@echo "TOPDIR=${TOPDIR}"; echo ""
@echo "LIBDIR=${LIBDIR}"; echo ""
@echo "HELPDIR=${HELPDIR}"; echo ""
@echo "CUSTOMLIBDIR=${CUSTOMLIBDIR}"; echo ""
@echo "CUSTOMHELPDIR=${CUSTOMHELPDIR}"; echo ""
@echo "SCRIPTDIR=${SCRIPTDIR}"; echo ""
@echo "MANDIR=${MANDIR}"; echo ""
@echo "CATDIR=${CATDIR}"; echo ""
@echo "MANEXT=${MANEXT}"; echo ""
@echo "CATEXT=${CATEXT}"; echo ""
@echo "NROFF=${NROFF}"; echo ""
@echo "NROFF_ARG=${NROFF_ARG}"; echo ""
@echo "MANMAKE=${MANMAKE}"; echo ""
@echo "CALCPATH=${CALCPATH}"; echo ""
@echo "CALCRC=${CALCRC}"; echo ""
@echo "CALCPAGER=${CALCPAGER}"; echo ""
@echo "DEBUG=${DEBUG}"; echo ""
@echo "NO_SHARED=${NO_SHARED}"; echo ""
@echo "LD_NO_SHARED=${LD_NO_SHARED}"; echo ""
@echo "RANLIB=${RANLIB}"; echo ""
@echo "MAKE_FILE=${MAKE_FILE}"; echo ""
@echo "PURIFY=${PURIFY}"; echo ""
@echo "LD_DEBUG=${LD_DEBUG}"; echo ""
@echo "CALC_ENV=${CALC_ENV}"; echo ""
@echo "ALLOW_CUSTOM=${ALLOW_CUSTOM}"; echo ""
@echo "CCOPT=${CCOPT}"; echo ""
@echo "CCWARN=${CCWARN}"; echo ""
@echo "CCMISC=${CCMISC}"; echo ""
@echo "CFLAGS=${CFLAGS}"; echo ""
@echo "ICFLAGS=${ICFLAGS}"; echo ""
@echo "LDFLAGS=${LDFLAGS}"; echo ""
@echo "ILDFLAGS=${ILDFLAGS}"; echo ""
@echo "LCC=${LCC}"; echo ""
@echo "CC=${CC}"; echo ""
@echo "SHELL=${SHELL}"; echo ""
@echo "MAKE=${MAKE}"; echo ""
@echo "AWK=${AWK}"; echo ""
@echo "SED=${SED}"; echo ""
@echo "SORT=${SORT}"; echo ""
@echo "TEE=${TEE}"; echo ""
@echo "CTAGS=${CTAGS}"; echo ""
@echo "MAKEDEPEND=${MAKEDEPEND}"; echo ""
@echo "Q=${Q}"; echo ""
@echo "V=${V}"; echo ""
@echo "LIBSRC=${LIBSRC}"; echo ""
@echo "LIBOBJS=${LIBOBJS}"; echo ""
@echo "CALCSRC=${CALCSRC}"; echo ""
@echo "CALCOBJS=${CALCOBJS}"; echo ""
@echo "BUILD_H_SRC=${BUILD_H_SRC}"; echo ""
@echo "BUILD_C_SRC=${BUILD_C_SRC}"; echo ""
@echo "UTIL_C_SRC=${UTIL_C_SRC}"; echo ""
@echo "UTIL_MISC_SRC=${UTIL_MISC_SRC}"; echo ""
@echo "UTIL_OBJS=${UTIL_OBJS}"; echo ""
@echo "UTIL_TMP=${UTIL_TMP}"; echo ""
@echo "UTIL_PROGS=${UTIL_PROGS}"; echo ""
@echo "LIB_H_SRC=${LIB_H_SRC}"; echo ""
@echo "CUSTOM_PASSDOWN=${CUSTOM_PASSDOWN}"; echo ""
@echo "SAMPLE_PASSDOWN=${SAMPLE_PASSDOWN}"; echo ""
@echo "HELP_PASSDOWN=${HELP_PASSDOWN}"; echo ""
@echo "CAL_PASSDOWN=${CAL_PASSDOWN}"; echo ""
@echo "CSCRIPT_PASSDOWN=${CSCRIPT_PASSDOWN}"; echo ""
@echo "H_SRC=${H_SRC}"; echo ""
@echo "C_SRC=${C_SRC}"; echo ""
@echo "DISTLIST=${DISTLIST}"; echo ""
@echo "OBJS=${OBJS}"; echo ""
@echo "CALC_LIBS=${CALC_LIBS}"; echo ""
@echo "PROGS=${PROGS}"; echo ""
@echo "TARGETS=${TARGETS}"; echo ""
@echo 'MAKEFILE_REV=${MAKEFILE_REV}'; echo ''
@echo 'TERMCONTROL=${TERMCONTROL}'; echo ''
@echo 'HAVE_VSPRINTF=${HAVE_VSPRINTF}'; echo ''
@echo 'BYTE_ORDER=${BYTE_ORDER}'; echo ''
@echo 'LONG_BITS=${LONG_BITS}'; echo ''
@echo 'LONGLONG_BITS=${LONGLONG_BITS}'; echo ''
@echo 'HAVE_FPOS=${HAVE_FPOS}'; echo ''
@echo 'HAVE_FPOS_POS=${HAVE_FPOS_POS}'; echo ''
@echo 'HAVE_OFFSCL=${HAVE_OFFSCL}'; echo ''
@echo 'HAVE_POSSCL=${HAVE_POSSCL}'; echo ''
@echo 'HAVE_CONST=${HAVE_CONST}'; echo ''
@echo 'HAVE_UID_T=${HAVE_UID_T}'; echo ''
@echo 'HAVE_NEWSTR=${HAVE_NEWSTR}'; echo ''
@echo 'HAVE_USTAT=${HAVE_USTAT}'; echo ''
@echo 'HAVE_GETSID=${HAVE_GETSID}'; echo ''
@echo 'HAVE_GETPGID=${HAVE_GETPGID}'; echo ''
@echo 'HAVE_GETTIME=${HAVE_GETTIME}'; echo ''
@echo 'HAVE_GETPRID=${HAVE_GETPRID}'; echo ''
@echo 'HAVE_URANDOM=${HAVE_URANDOM}'; echo ''
@echo 'ALIGN32=${ALIGN32}'; echo ''
@echo 'BINDIR=${BINDIR}'; echo ''
@echo 'TOPDIR=${TOPDIR}'; echo ''
@echo 'LIBDIR=${LIBDIR}'; echo ''
@echo 'HELPDIR=${HELPDIR}'; echo ''
@echo 'CUSTOMLIBDIR=${CUSTOMLIBDIR}'; echo ''
@echo 'CUSTOMHELPDIR=${CUSTOMHELPDIR}'; echo ''
@echo 'SCRIPTDIR=${SCRIPTDIR}'; echo ''
@echo 'MANDIR=${MANDIR}'; echo ''
@echo 'CATDIR=${CATDIR}'; echo ''
@echo 'MANEXT=${MANEXT}'; echo ''
@echo 'CATEXT=${CATEXT}'; echo ''
@echo 'NROFF=${NROFF}'; echo ''
@echo 'NROFF_ARG=${NROFF_ARG}'; echo ''
@echo 'MANMAKE=${MANMAKE}'; echo ''
@echo 'CALCPATH=${CALCPATH}'; echo ''
@echo 'CALCRC=${CALCRC}'; echo ''
@echo 'CALCPAGER=${CALCPAGER}'; echo ''
@echo 'DEBUG=${DEBUG}'; echo ''
@echo 'NO_SHARED=${NO_SHARED}'; echo ''
@echo 'LD_NO_SHARED=${LD_NO_SHARED}'; echo ''
@echo 'RANLIB=${RANLIB}'; echo ''
@echo 'MAKE_FILE=${MAKE_FILE}'; echo ''
@echo 'PURIFY=${PURIFY}'; echo ''
@echo 'LD_DEBUG=${LD_DEBUG}'; echo ''
@echo 'CALC_ENV=${CALC_ENV}'; echo ''
@echo 'ALLOW_CUSTOM=${ALLOW_CUSTOM}'; echo ''
@echo 'CCOPT=${CCOPT}'; echo ''
@echo 'CCWARN=${CCWARN}'; echo ''
@echo 'CCMISC=${CCMISC}'; echo ''
@echo 'CFLAGS=${CFLAGS}'; echo ''
@echo 'ICFLAGS=${ICFLAGS}'; echo ''
@echo 'LDFLAGS=${LDFLAGS}'; echo ''
@echo 'ILDFLAGS=${ILDFLAGS}'; echo ''
@echo 'LCC=${LCC}'; echo ''
@echo 'CC=${CC}'; echo ''
@echo 'SHELL=${SHELL}'; echo ''
@echo 'MAKE=${MAKE}'; echo ''
@echo 'AWK=${AWK}'; echo ''
@echo 'SED=${SED}'; echo ''
@echo 'SORT=${SORT}'; echo ''
@echo 'TEE=${TEE}'; echo ''
@echo 'CTAGS=${CTAGS}'; echo ''
@echo 'MAKEDEPEND=${MAKEDEPEND}'; echo ''
@echo 'Q=${Q}'; echo ''
@echo 'V=${V}'; echo ''
@echo 'LIBSRC=${LIBSRC}'; echo ''
@echo 'LIBOBJS=${LIBOBJS}'; echo ''
@echo 'CALCSRC=${CALCSRC}'; echo ''
@echo 'CALCOBJS=${CALCOBJS}'; echo ''
@echo 'BUILD_H_SRC=${BUILD_H_SRC}'; echo ''
@echo 'BUILD_C_SRC=${BUILD_C_SRC}'; echo ''
@echo 'UTIL_C_SRC=${UTIL_C_SRC}'; echo ''
@echo 'UTIL_MISC_SRC=${UTIL_MISC_SRC}'; echo ''
@echo 'UTIL_OBJS=${UTIL_OBJS}'; echo ''
@echo 'UTIL_TMP=${UTIL_TMP}'; echo ''
@echo 'UTIL_PROGS=${UTIL_PROGS}'; echo ''
@echo 'LIB_H_SRC=${LIB_H_SRC}'; echo ''
@echo 'CUSTOM_PASSDOWN=${CUSTOM_PASSDOWN}'; echo ''
@echo 'SAMPLE_PASSDOWN=${SAMPLE_PASSDOWN}'; echo ''
@echo 'HELP_PASSDOWN=${HELP_PASSDOWN}'; echo ''
@echo 'CAL_PASSDOWN=${CAL_PASSDOWN}'; echo ''
@echo 'CSCRIPT_PASSDOWN=${CSCRIPT_PASSDOWN}'; echo ''
@echo 'H_SRC=${H_SRC}'; echo ''
@echo 'C_SRC=${C_SRC}'; echo ''
@echo 'DISTLIST=${DISTLIST}'; echo ''
@echo 'OBJS=${OBJS}'; echo ''
@echo 'CALC_LIBS=${CALC_LIBS}'; echo ''
@echo 'PROGS=${PROGS}'; echo ''
@echo 'TARGETS=${TARGETS}'; echo ''
@echo '=-=-=-=-= end of major make variable dump =-=-=-=-='
mkdebug: env version.c

113
README.WINDOWS Normal file
View File

@@ -0,0 +1,113 @@
Dear calc user on a Windoz based system,
See the HOWTO.INSTALL file for information on how to build and install calc.
See also the README file.
NOTE: The Windoz port is extremely experimental, untested and perhaps
incomplete. We are in the process of making it easier. The
following should help anyone who is trying to make a go of this
under the current code conditions.
NOTE: We are currently ONLY making an effort to support building under
Windoz using the Cygwin project (http://sources.redhat.com/cygwin/)
with the GCC compiler and Un*x tools for Windows.
NOTE: The main developers do not have access to a Windoz based platform.
While we will make an effort to not break calc Windoz based system,
our lack of a Windoz test environment will mean we will make mistakes
from time to time. Hopefully Windowz users can overcome these mistakes.
Of course you are welcome to send us any patches that fix your
Windoz build environment.
=-=
An effort is being made to allow windows users to compile calc using the
Cygwin project (http://sources.redhat.com/cygwin/) with the GCC compiler
and Un*x tools for Windows.
The major porting work was performed by Thomas Jones-Low
(tjoneslo at softstart dot com). He said:
I had previous stated to this group that I have successfully managed
to port a version of Calc to Windows, and promised some point to
post what was required, so here it is.
One obvious manner of doing this port is to get the latest version
of the Cygwin project (http://sources.redhat.com/cygwin/) with the
GCC compiler and Un*x tools for Windows and recompile.
I built my working version using Calc ... I am using Visual C++
version 7.0, which is an older version of the Microsoft development
tools. The make file provided with Calc is not compatible with
NMAKE, so I used the Visual Studio tools to generate another one
(not included). Calc is built in two parts, calc.dll, which is the
library, and calcexe.exe which is the command line interface.
He recommends that you generate by hand all of the header files generated
by the make file:
align32.h args.h calcerr.h conf.h endian_calc.h
fposval.h have_const.h have_fpos.h have_fpos_pos.h have_malloc.h
have_memmv.h have_newstr.h have_offscl.h have_posscl.h
have_stdlib.h have_string.h have_times.h have_uid_t.h
have_unistd.h longbits.h longlong.h terminal.h
have_ustat.h have_getsid.h have_getpgid.h
have_gettime.h have_getprid.h have_urandom.h have_rusage.h
have_strdup.h
NOTE: In a future release, a tarball of these files will be shipped with
calc so that you do not have to do much other than inspect them.
=-=
People who maintain calc need to keep in mind the following:
The following was added to opcodes.h, config.h, zmath.h and value.h:
#if defined (_WIN32)
#ifdef _EXPORTING
#define DLL __declspec(dllexport)
#else
#define DLL __declspec(dllimport)
#endif
#else /* Windoz free systems */
#define DLL
#endif /* Windoz free systems */
Then DLL was added in front of all the exported functions. For example:
extern int configtype(char*);
was changed to:
DLL extern int configtype(char*);
## Copyright (C) 2001 Landon Curt Noll and Thomas Jones-Low
##
## Calc is open software; you can redistribute it and/or modify it under
## the terms of the version 2.1 of the GNU Lesser General Public License
## as published by the Free Software Foundation.
##
## Calc is distributed in the hope that it will be useful, but WITHOUT
## ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
## or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General
## Public License for more details.
##
## A copy of version 2.1 of the GNU Lesser General Public License is
## distributed with calc under the filename COPYING-LGPL. You should have
## received a copy with calc; if not, write to Free Software Foundation, Inc.
## 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
##
## @(#) $Revision: 29.2 $
## @(#) $Id: README.WINDOWS,v 29.2 2001/02/25 22:20:38 chongo Exp $
## @(#) $Source: /usr/local/src/cmd/calc/RCS/README.WINDOWS,v $
##
## Under source code control: 2001/02/25 14:00:05
## File existed as early as: 2001
##
## chongo <was here> /\oo/\ http://www.isthe.com/chongo/
## Share and enjoy! :-) http://www.isthe.com/chongo/tech/comp/calc/

View File

@@ -1,24 +1,46 @@
/*
* qtime - Display time as English sentence
*
* Copyright (C) 1999 Klaus Alexander Seistrup and Landon Curt Noll
*
* Written by: Klaus Alexander Seistrup <kseis@magnetic-ink.dk>
* With mods by: Landon Curt Noll <http://www.isthe.com/chongo/>
*
* Calc is open software; you can redistribute it and/or modify it under
* the terms of the version 2.1 of the GNU Lesser General Public License
* as published by the Free Software Foundation.
*
* Calc is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General
* Public License for more details.
*
* A copy of version 2.1 of the GNU Lesser General Public License is
* distributed with calc under the filename COPYING-LGPL. You should have
* received a copy with calc; if not, write to Free Software Foundation, Inc.
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
*
* @(#) $Revision: 29.4 $
* @(#) $Id: qtime.cal,v 29.4 2000/12/18 10:18:40 chongo Exp $
* @(#) $Source: /usr/local/src/cmd/calc/cal/RCS/qtime.cal,v $
*
* Under source code control: 1999/10/13 04:10:33
* File existed as early as: 1999
*
* chongo <was here> /\oo/\ http://www.isthe.com/chongo/
* Share and enjoy! :-) http://www.isthe.com/chongo/tech/comp/calc/
*/
/*
* usage:
* qtime(utc_hr_offset)
*
* utc_hr_offset Offset from UTC in hours.
*
* Written by: Klaus Alexander Seistrup <kseis@magnetic-ink.dk>
* With minor mods by: Landon Curt Noll <http://www.isthe.com/chongo/>
*
* See:
* http://www.magnetic-ink.dk/download/qtime.html
*
* for examples of qtime() written on other languages.
*
* @(#) $Revision: 29.2 $
* @(#) $Id: qtime.cal,v 29.2 2000/06/07 14:02:25 chongo Exp $
* @(#) $Source: /usr/local/src/cmd/calc/cal/RCS/qtime.cal,v $
*
* This file is not covered under version 2.1 of the GNU LGPL.
*/

16
calc.c
View File

@@ -19,8 +19,8 @@
* received a copy with calc; if not, write to Free Software Foundation, Inc.
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
*
* @(#) $Revision: 29.5 $
* @(#) $Id: calc.c,v 29.5 2000/07/17 15:35:49 chongo Exp $
* @(#) $Revision: 29.6 $
* @(#) $Id: calc.c,v 29.6 2001/02/25 22:07:36 chongo Exp $
* @(#) $Source: /usr/local/src/cmd/calc/RCS/calc.c,v $
*
* Under source code control: 1990/02/15 01:48:11
@@ -36,6 +36,18 @@
#include <sys/types.h>
#include <ctype.h>
#if defined (_WIN32)
#include <io.h>
/*
* getopt.h file is from the Cygwin GNU library
*
* See:
* http://sources.redhat.com/cygwin/
*/
#include "../getopt/getopt.h"
#define strdup _strdup
#endif /* Windoz */
#define CALC_C
#include "calc.h"
#include "hist.h"

View File

@@ -19,8 +19,8 @@
* received a copy with calc; if not, write to Free Software Foundation, Inc.
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
*
* @(#) $Revision: 29.4 $
* @(#) $Id: config.h,v 29.4 2000/07/17 15:35:49 chongo Exp $
* @(#) $Revision: 29.5 $
* @(#) $Id: config.h,v 29.5 2001/02/25 22:07:36 chongo Exp $
* @(#) $Source: /usr/local/src/cmd/calc/RCS/config.h,v $
*
* Under source code control: 1995/11/01 22:20:17
@@ -35,6 +35,20 @@
#define __CONFIG_H__
#if defined (_WIN32)
#ifdef _EXPORTING
#define DLL __declspec(dllexport)
#else
#define DLL __declspec(dllimport)
#endif
#else /* Windoz free systems */
#define DLL
#endif /* Windoz free systems */
#include "nametype.h"
#include "qmath.h"
@@ -193,12 +207,12 @@ extern char *user_debug; /* !=NULL => value of config("user_debug") */
/*
* configuration externals
*/
extern CONFIG *config_copy(CONFIG *src);
extern void config_free(CONFIG *cfg);
extern void config_print(CONFIG *cfg);
extern int configtype(char*);
extern void config_print(CONFIG*);
extern BOOL config_cmp(CONFIG*, CONFIG*);
DLL extern CONFIG *config_copy(CONFIG *src);
DLL extern void config_free(CONFIG *cfg);
DLL extern void config_print(CONFIG *cfg);
DLL extern int configtype(char*);
DLL extern void config_print(CONFIG*);
DLL extern BOOL config_cmp(CONFIG*, CONFIG*);
#endif /* !__CONFIG_H__ */

View File

@@ -2,7 +2,7 @@
#
# sqaure - print the squares of input values
#
# Copyright (C) 2000 Landon Curt Noll
# Copyright (C) 2000 Ernest Bowen
#
# Calc is open software; you can redistribute it and/or modify it under
# the terms of the version 2.1 of the GNU Lesser General Public License
@@ -18,8 +18,8 @@
# received a copy with calc; if not, write to Free Software Foundation, Inc.
# 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
#
# @(#) $Revision: 29.1 $
# @(#) $Id: square.calc,v 29.1 2000/12/15 14:55:59 chongo Exp $
# @(#) $Revision: 29.3 $
# @(#) $Id: square.calc,v 29.3 2000/12/17 14:31:58 chongo Exp $
# @(#) $Source: /usr/local/src/cmd/calc/cscript/RCS/square.calc,v $
#
# Under source code control: 2000/12/15 06:52:01
@@ -27,8 +27,38 @@
#
# Share and enjoy! :-) http://www.isthe.com/chongo/tech/comp/calc/
# usage:
# mersenne exp
# Usage:
#
# From the shell:
#
# ./square
# cat file | ./square
# echo "123" | ./square
#
# Within calc:
#
# > read square
#
# With input from a terminal, there is no prompt but each non-empty
# line of input is evaluated as a calc expression and if it can be
# calculated, the square of the value of that expression is displayed.
# Execution stops when an empty line is input.
#
# From the shell:
#
# ./square
#
# The following shows lines of input followed by output:
#
# 1234
# 1522756
# ln(2)
# ~.48045301391820142467
# config("mode","frac"), bernoulli(10)
# 25/4356
# config("mode", "hex"), 0xff
# 0xfe01
#
global s;
while ((s = prompt("")))

9
file.c
View File

@@ -19,8 +19,8 @@
* received a copy with calc; if not, write to Free Software Foundation, Inc.
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
*
* @(#) $Revision: 29.3 $
* @(#) $Id: file.c,v 29.3 2000/12/17 12:24:42 chongo Exp $
* @(#) $Revision: 29.5 $
* @(#) $Id: file.c,v 29.5 2001/02/25 22:07:36 chongo Exp $
* @(#) $Source: /usr/local/src/cmd/calc/RCS/file.c,v $
*
* Under source code control: 1991/07/20 00:21:56
@@ -35,7 +35,10 @@
#include <sys/types.h>
#include <sys/stat.h>
#include <stdlib.h>
#include "have_unistd.h"
#if defined(HAVE_UNISTD_H)
#include <unistd.h>
#endif /* HAVE_UNISTD_H */
#include <ctype.h>
#include "calc.h"
#include "longbits.h"
@@ -1179,7 +1182,7 @@ filepos2z(FILEPOS pos)
ret.len = FILEPOS_BITS/BASEB;
ret.v = alloc(ret.len);
zclearval(ret);
SWAP_HALF_IN_FILEPOS(ret.v, &pos);
SWAP_HALF_IN_FILEPOS(ret.v, (HALF *)&pos);
ret.sign = 0;
ztrim(&ret);

View File

@@ -17,8 +17,8 @@
* received a copy with calc; if not, write to Free Software Foundation, Inc.
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
*
* @(#) $Revision: 29.3 $
* @(#) $Id: fposval.c,v 29.3 2000/12/17 12:25:36 chongo Exp $
* @(#) $Revision: 29.5 $
* @(#) $Id: fposval.c,v 29.5 2001/02/25 21:01:34 chongo Exp $
* @(#) $Source: /usr/local/src/cmd/calc/RCS/fposval.c,v $
*
* Under source code control: 1994/11/05 03:19:52
@@ -85,13 +85,12 @@ main(int argc, char **argv)
* print the file position information
*/
#if defined(HAVE_FPOS_POS)
printf("#undef FILEPOS_BITS\n");
printf("#define FILEPOS_BITS %d\n", FPOS_POS_BITS);
fileposlen = FPOS_POS_BITS;
#else /* ! HAVE_FPOS_POS */
fileposlen = sizeof(FILEPOS)*8;
#endif /* ! HAVE_FPOS_POS */
printf("#undef FILEPOS_BITS\n");
printf("#define FILEPOS_BITS %d\n", fileposlen);
#endif /* ! HAVE_FPOS_POS */
#if CALC_BYTE_ORDER == BIG_ENDIAN
/*
* Big Endian

13
func.c
View File

@@ -19,8 +19,8 @@
* received a copy with calc; if not, write to Free Software Foundation, Inc.
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
*
* @(#) $Revision: 29.5 $
* @(#) $Id: func.c,v 29.5 2000/12/04 19:32:33 chongo Exp $
* @(#) $Revision: 29.6 $
* @(#) $Id: func.c,v 29.6 2001/02/25 22:07:36 chongo Exp $
* @(#) $Source: /usr/local/src/cmd/calc/RCS/func.c,v $
*
* Under source code control: 1990/02/15 01:48:15
@@ -35,6 +35,11 @@
#include <sys/types.h>
#include <errno.h>
#if defined(_WIN32)
#include <io.h>
#define _access access
#endif /* Windoz */
#if defined(FUNCLIST)
#define CONST /* disabled for FUNCLIST in case NATIVE_CC doesn't have it */
@@ -4922,10 +4927,14 @@ f_listremove(VALUE *vp)
static NUMBER *
f_runtime(void)
{
#if defined(_WIN32)
return qlink(&_qzero_);
#else /* Windoz free systems */
struct tms buf;
times(&buf);
return iitoq((long) buf.tms_utime, (long) CLK_TCK);
#endif /* Windoz free systems */
}

8
help.c
View File

@@ -17,8 +17,8 @@
* received a copy with calc; if not, write to Free Software Foundation, Inc.
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
*
* @(#) $Revision: 29.4 $
* @(#) $Id: help.c,v 29.4 2000/06/07 14:02:13 chongo Exp $
* @(#) $Revision: 29.5 $
* @(#) $Id: help.c,v 29.5 2001/02/25 22:07:36 chongo Exp $
* @(#) $Source: /usr/local/src/cmd/calc/RCS/help.c,v $
*
* Under source code control: 1997/09/14 10:58:30
@@ -105,7 +105,11 @@ page_file(FILE *stream)
/*
* form a write pipe to a pager
*/
if (pager == NULL || pager[0] == '\0') {
cmd = stdout;
} else {
cmd = popen(pager, "w");
}
if (cmd == NULL) {
fprintf(stderr, "unable form pipe to pager: %s", pager);
return;

13
input.c
View File

@@ -17,8 +17,8 @@
* received a copy with calc; if not, write to Free Software Foundation, Inc.
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
*
* @(#) $Revision: 29.3 $
* @(#) $Id: input.c,v 29.3 2000/07/17 15:35:49 chongo Exp $
* @(#) $Revision: 29.4 $
* @(#) $Id: input.c,v 29.4 2001/02/25 22:07:36 chongo Exp $
* @(#) $Source: /usr/local/src/cmd/calc/RCS/input.c,v $
*
* Under source code control: 1990/02/15 01:48:16
@@ -35,7 +35,9 @@
#include <stdio.h>
#include <ctype.h>
#if !defined(_WIN32)
#include <pwd.h>
#endif /* Windoz free systems */
#include <sys/types.h>
#include <sys/stat.h>
@@ -257,6 +259,12 @@ opensearchfile(char *name, char *pathlist, char *extension, int rd_once)
static char *
homeexpand(char *name)
{
#if defined (_WIN32)
return NULL;
#else /* Windoz free systems */
struct passwd *ent; /* password entry */
char *home2; /* fullpath of the home directory */
char *fullpath; /* the malloced expanded path */
@@ -323,6 +331,7 @@ homeexpand(char *name)
}
sprintf(fullpath, "%s%s", home2, after);
return fullpath;
#endif /* Windoz free systems */
}

View File

@@ -17,8 +17,8 @@
* received a copy with calc; if not, write to Free Software Foundation, Inc.
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
*
* @(#) $Revision: 29.4 $
* @(#) $Id: lib_calc.c,v 29.4 2000/07/17 15:35:49 chongo Exp $
* @(#) $Revision: 29.5 $
* @(#) $Id: lib_calc.c,v 29.5 2001/02/25 22:07:36 chongo Exp $
* @(#) $Source: /usr/local/src/cmd/calc/RCS/lib_calc.c,v $
*
* Under source code control: 1996/06/17 18:06:19
@@ -68,11 +68,16 @@ typedef struct termios ttystruct;
# include <termio.h>
typedef struct termio ttystruct;
#else /* assume USE_SGTTY */
#elif defined(USE_SGTTY)
# include <sys/ioctl.h>
typedef struct sgttyb ttystruct;
#elif !defined(_WIN32)
-=*#*=- A Windoz free system without termio, termios or sgtty!!! -=*#*=-
-=*#*=- We do not know how to compile for such a host, sorry!!!! -=*#*=-
#endif
/*
@@ -192,7 +197,9 @@ libcalc_call_me_first(void)
* Disable SIGPIPE so that the pipe to the help file pager will
* not stop calc.
*/
#if !defined(_WIN32)
(void) signal(SIGPIPE, SIG_IGN);
#endif /* Windoz free systems */
/*
* determine the basename
@@ -373,7 +380,9 @@ cvmalloc_error(char *message)
static void
initenv(void)
{
#if !defined(_WIN32)
struct passwd *ent; /* our password entry */
#endif /* Windoz free systems */
char *c;
/* determine the $CALCPATH value */
@@ -402,6 +411,12 @@ initenv(void)
/* determine the $HOME value */
c = (no_env ? NULL : getenv(HOME));
home = (c ? strdup(c) : NULL);
#if defined(_WIN32)
if (home == NULL || home[0] == '\0') {
/* just assume . is home if all else fails */
home = ".";
}
#else /* Windoz free systems */
if (home == NULL || home[0] == '\0') {
ent = (struct passwd *)getpwuid(geteuid());
if (ent == NULL) {
@@ -411,6 +426,7 @@ initenv(void)
home = (char *)malloc(strlen(ent->pw_dir)+1);
strcpy(home, ent->pw_dir);
}
#endif /* Windoz free systems */
/* determine the $PAGER value */
c = (no_env ? NULL : getenv(PAGER));

View File

@@ -17,8 +17,8 @@
* received a copy with calc; if not, write to Free Software Foundation, Inc.
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
*
* @(#) $Revision: 29.2 $
* @(#) $Id: longlong.c,v 29.2 2000/06/07 14:02:13 chongo Exp $
* @(#) $Revision: 29.3 $
* @(#) $Id: longlong.c,v 29.3 2001/02/23 20:46:38 chongo Exp $
* @(#) $Source: /usr/local/src/cmd/calc/RCS/longlong.c,v $
*
* Under source code control: 1994/08/05 01:09:19
@@ -119,10 +119,10 @@ main(int argc, char **argv)
printf(" * if defined(L64_FORMAT), ok to use %%ld\n");
printf(" * if !defined(L64_FORMAT), use %%lld\n");
printf(" */\n");
if (buf[0] == '-') {
printf("#undef L64_FORMAT\n");
} else {
if (strcmp(buf, "1311768467284833366") == 0) {
printf("#define L64_FORMAT\n");
} else {
printf("#undef L64_FORMAT\n");
}
/*

View File

@@ -17,8 +17,8 @@
* received a copy with calc; if not, write to Free Software Foundation, Inc.
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
*
* @(#) $Revision: 29.2 $
* @(#) $Id: opcodes.h,v 29.2 2000/06/07 14:02:13 chongo Exp $
* @(#) $Revision: 29.3 $
* @(#) $Id: opcodes.h,v 29.3 2001/02/25 22:07:36 chongo Exp $
* @(#) $Source: /usr/local/src/cmd/calc/RCS/opcodes.h,v $
*
* Under source code control: 1990/02/15 01:48:35
@@ -32,6 +32,20 @@
#define __OPCODES_H__
#if defined (_WIN32)
#ifdef _EXPORTING
#define DLL __declspec(dllexport)
#else
#define DLL __declspec(dllimport)
#endif
#else /* Windoz free systems */
#define DLL
#endif /* Windoz free systems */
/*
* Opcodes
*/

73
seed.c
View File

@@ -17,8 +17,8 @@
* received a copy with calc; if not, write to Free Software Foundation, Inc.
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
*
* @(#) $Revision: 29.2 $
* @(#) $Id: seed.c,v 29.2 2000/06/07 14:02:13 chongo Exp $
* @(#) $Revision: 29.3 $
* @(#) $Id: seed.c,v 29.3 2001/02/25 22:07:36 chongo Exp $
* @(#) $Source: /usr/local/src/cmd/calc/RCS/seed.c,v $
*
* Under source code control: 1999/10/03 10:06:53
@@ -40,7 +40,16 @@
#include <stdio.h>
#include <errno.h>
#include "have_unistd.h"
#if defined(HAVE_UNISTD_H)
#include <unistd.h>
#endif
#if defined(_WIN32)
#include <process.h>
#define pid_t int
#endif /* Windoz */
/*
* PORTING NOTE:
@@ -55,10 +64,19 @@
*/
#include <sys/types.h>
#include <sys/stat.h>
#include "have_times.h"
#if defined(HAVE_TIME_H)
#include <time.h>
#endif
#if defined(HAVE_SYS_TIME_H)
#include <sys/time.h>
#endif
#if defined(HAVE_SYS_TIMES_H)
#include <sys/times.h>
#endif
#if !defined(_WIN32)
#include <sys/resource.h>
#endif /* Windoz free systems */
#include <setjmp.h>
#include "qmath.h"
#include "longbits.h"
@@ -69,14 +87,15 @@
#include "have_getprid.h"
#include "have_urandom.h"
#include "have_rusage.h"
#include "have_uid_t.h"
#if defined(HAVE_USTAT)
# include <ustat.h>
#endif /* HAVE_USTAT */
#endif
#if defined(HAVE_URANDOM)
# include <fcntl.h>
# define DEV_URANDOM "/dev/urandom"
# define DEV_URANDOM_POOL 16
#endif /* HAVE_URANDOM */
#endif
/*
@@ -272,26 +291,30 @@ pseudo_seed(void)
#if defined(HAVE_GETTIME)
# if defined(CLOCK_SGI_CYCLE)
struct timespec sgi_cycle; /* SGI hardware clock */
# endif /* CLOCK_SGI_CYCLE */
# endif
# if defined(CLOCK_REALTIME)
struct timespec realtime; /* POSIX realtime clock */
# endif /* CLOCK_REALTIME */
#endif /* HAVE_GETTIME */
# endif
#endif
#if defined(HAVE_GETPRID)
prid_t getprid; /* project ID */
#endif /* HAVE_GETPRID */
#endif
#if defined(HAVE_URANDOM)
int urandom_fd; /* open descriptor for /dev/urandom */
int urandom_ret; /* read() of /dev/random */
char urandom_pool[DEV_URANDOM_POOL]; /* /dev/urandom data pool */
#endif /* HAVE_URANDOM */
#endif
#if defined(HAVE_SYS_TIME_H)
struct timeval tp; /* time of day */
#endif
pid_t getpid; /* process ID */
pid_t getppid; /* parent process ID */
#if defined(HAVE_UID_T)
uid_t getuid; /* real user ID */
uid_t geteuid; /* effective user ID */
gid_t getgid; /* real group ID */
gid_t getegid; /* effective group ID */
#endif
struct stat stat_dot; /* stat of "." */
struct stat stat_dotdot; /* stat of ".." */
struct stat stat_tmp; /* stat of "/tmp" */
@@ -307,19 +330,21 @@ pseudo_seed(void)
struct ustat ustat_stdin; /* usage stat of stdin */
struct ustat ustat_stdout; /* usage stat of stdout */
struct ustat ustat_stderr; /* usage stat of stderr */
#endif /* HAVE_USTAT */
#endif
#if defined(HAVE_GETSID)
pid_t getsid; /* session ID */
#endif /* HAVE_GETSID */
#endif
#if defined(HAVE_GETPGID)
pid_t getpgid; /* process group ID */
#endif /* HAVE_GETPGID */
#endif
#if defined(HAVE_GETRUSAGE)
struct rusage rusage; /* resource utilization */
struct rusage rusage_chld; /* resource utilization of children */
#endif /* HAVE_GETRUSAGE */
#endif
#if defined(HAVE_SYS_TIME_H)
struct timeval tp2; /* time of day again */
struct tms times; /* process times */
#endif
time_t time; /* local time */
size_t size; /* size of this data structure */
jmp_buf env; /* setjmp() context */
@@ -339,14 +364,14 @@ pseudo_seed(void)
#if defined(HAVE_GETTIME)
# if defined(CLOCK_SGI_CYCLE)
(void) clock_gettime(CLOCK_SGI_CYCLE, &sdata.sgi_cycle);
# endif /* CLOCK_SGI_CYCLE */
# endif
# if defined(CLOCK_REALTIME)
(void) clock_gettime(CLOCK_REALTIME, &sdata.realtime);
# endif /* CLOCK_REALTIME */
#endif /* HAVE_GETTIME */
# endif
#endif
#if defined(HAVE_GETPRID)
sdata.getprid = getprid();
#endif /* HAVE_GETPRID */
#endif
#if defined(HAVE_URANDOM)
sdata.urandom_fd = open(DEV_URANDOM, O_NONBLOCK|O_RDONLY);
if (sdata.urandom_fd >= 0) {
@@ -358,13 +383,17 @@ pseudo_seed(void)
sdata.urandom_ret = EOF;
}
#endif /* HAVE_URANDOM */
#if defined(HAVE_SYS_TIME_H)
(void) gettimeofday(&sdata.tp, NULL);
#endif
sdata.getpid = getpid();
sdata.getppid = getppid();
#if defined(HAVE_UID_T)
sdata.getuid = getuid();
sdata.geteuid = geteuid();
sdata.getgid = getgid();
sdata.getegid = getegid();
#endif
(void) stat(".", &sdata.stat_dot);
(void) stat("..", &sdata.stat_dotdot);
(void) stat("/tmp", &sdata.stat_tmp);
@@ -380,19 +409,21 @@ pseudo_seed(void)
(void) ustat(sdata.fstat_stdin.st_dev, &sdata.ustat_stdin);
(void) ustat(sdata.fstat_stdout.st_dev, &sdata.ustat_stdout);
(void) ustat(sdata.fstat_stderr.st_dev, &sdata.ustat_stderr);
#endif /* HAVE_USTAT */
#endif
#if defined(HAVE_GETSID)
sdata.getsid = getsid((pid_t)0);
#endif /* HAVE_GETSID */
#endif
#if defined(HAVE_GETPGID)
sdata.getpgid = getpgid((pid_t)0);
#endif /* HAVE_GETPGID */
#endif
#if defined(HAVE_GETRUSAGE)
(void) getrusage(RUSAGE_SELF, &sdata.rusage);
(void) getrusage(RUSAGE_CHILDREN, &sdata.rusage_chld);
#endif /* HAVE_GETRUSAGE */
#endif
#if defined(HAVE_SYS_TIME_H)
(void) gettimeofday(&sdata.tp2, NULL);
(void) times(&sdata.times);
#endif
sdata.time = time(NULL);
sdata.size = sizeof(sdata);
(void) setjmp(sdata.env);

354
value.h
View File

@@ -17,8 +17,8 @@
* received a copy with calc; if not, write to Free Software Foundation, Inc.
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
*
* @(#) $Revision: 29.3 $
* @(#) $Id: value.h,v 29.3 2000/07/17 15:35:49 chongo Exp $
* @(#) $Revision: 29.4 $
* @(#) $Id: value.h,v 29.4 2001/02/25 22:07:36 chongo Exp $
* @(#) $Source: /usr/local/src/cmd/calc/RCS/value.h,v $
*
* Under source code control: 1993/07/30 19:42:47
@@ -32,6 +32,20 @@
#define __VALUE_H__
#if defined (_WIN32)
#ifdef _EXPORTING
#define DLL __declspec(dllexport)
#else
#define DLL __declspec(dllimport)
#endif
#else /* Windoz free systems */
#define DLL
#endif /* Windoz free systems */
#include "cmath.h"
#include "config.h"
#include "shs.h"
@@ -187,59 +201,59 @@ struct value {
/*
* value functions
*/
extern void freevalue(VALUE *vp);
extern void copyvalue(VALUE *vp, VALUE *vres);
extern void negvalue(VALUE *vp, VALUE *vres);
extern void addvalue(VALUE *v1, VALUE *v2, VALUE *vres);
extern void subvalue(VALUE *v1, VALUE *v2, VALUE *vres);
extern void mulvalue(VALUE *v1, VALUE *v2, VALUE *vres);
extern void orvalue(VALUE *v1, VALUE *v2, VALUE *vres);
extern void andvalue(VALUE *v1, VALUE *v2, VALUE *vres);
extern void compvalue(VALUE *vp, VALUE *vres);
extern void xorvalue(VALUE *v1, VALUE *v2, VALUE *vres);
extern void squarevalue(VALUE *vp, VALUE *vres);
extern void invertvalue(VALUE *vp, VALUE *vres);
extern void roundvalue(VALUE *v1, VALUE *v2, VALUE *v3, VALUE *vres);
extern void broundvalue(VALUE *v1, VALUE *v2, VALUE *v3, VALUE *vres);
extern void setminusvalue(VALUE *, VALUE *, VALUE *);
extern void backslashvalue(VALUE *, VALUE *);
extern void contentvalue(VALUE *, VALUE *);
extern void hashopvalue(VALUE *, VALUE *, VALUE *);
extern void apprvalue(VALUE *v1, VALUE *v2, VALUE *v3, VALUE *vres);
extern void intvalue(VALUE *vp, VALUE *vres);
extern void fracvalue(VALUE *vp, VALUE *vres);
extern void incvalue(VALUE *vp, VALUE *vres);
extern void decvalue(VALUE *vp, VALUE *vres);
extern void conjvalue(VALUE *vp, VALUE *vres);
extern void sqrtvalue(VALUE *v1, VALUE *v2, VALUE *v3, VALUE *vres);
extern void rootvalue(VALUE *v1, VALUE *v2, VALUE *v3, VALUE *vres);
extern void absvalue(VALUE *v1, VALUE *v2, VALUE *vres);
extern void normvalue(VALUE *vp, VALUE *vres);
extern void shiftvalue(VALUE *v1, VALUE *v2, BOOL rightshift, VALUE *vres);
extern void scalevalue(VALUE *v1, VALUE *v2, VALUE *vres);
extern void powivalue(VALUE *v1, VALUE *v2, VALUE *vres);
extern void powervalue(VALUE *v1, VALUE *v2, VALUE *v3, VALUE *vres);
extern void divvalue(VALUE *v1, VALUE *v2, VALUE *vres);
extern void quovalue(VALUE *v1, VALUE *v2, VALUE *v3, VALUE *vres);
extern void modvalue(VALUE *v1, VALUE *v2, VALUE *v3, VALUE *vres);
extern BOOL testvalue(VALUE *vp);
extern BOOL comparevalue(VALUE *v1, VALUE *v2);
extern BOOL acceptvalue(VALUE *v1, VALUE *v2);
extern void relvalue(VALUE *v1, VALUE *v2, VALUE *vres);
extern void sgnvalue(VALUE *vp, VALUE *vres);
extern QCKHASH hashvalue(VALUE *vp, QCKHASH val);
extern void printvalue(VALUE *vp, int flags);
extern BOOL precvalue(VALUE *v1, VALUE *v2);
extern VALUE error_value(int e);
extern int set_errno(int e);
extern int set_errcount(int e);
extern long countlistitems(LIST *lp);
extern void addlistitems(LIST *lp, VALUE *vres);
extern void addlistinv(LIST *lp, VALUE *vres);
extern void copy2octet(VALUE *, OCTET *);
extern int copystod(VALUE *, long, long, VALUE *, long);
extern void protectall(VALUE *, int);
extern void set_update(int);
DLL extern void freevalue(VALUE *vp);
DLL extern void copyvalue(VALUE *vp, VALUE *vres);
DLL extern void negvalue(VALUE *vp, VALUE *vres);
DLL extern void addvalue(VALUE *v1, VALUE *v2, VALUE *vres);
DLL extern void subvalue(VALUE *v1, VALUE *v2, VALUE *vres);
DLL extern void mulvalue(VALUE *v1, VALUE *v2, VALUE *vres);
DLL extern void orvalue(VALUE *v1, VALUE *v2, VALUE *vres);
DLL extern void andvalue(VALUE *v1, VALUE *v2, VALUE *vres);
DLL extern void compvalue(VALUE *vp, VALUE *vres);
DLL extern void xorvalue(VALUE *v1, VALUE *v2, VALUE *vres);
DLL extern void squarevalue(VALUE *vp, VALUE *vres);
DLL extern void invertvalue(VALUE *vp, VALUE *vres);
DLL extern void roundvalue(VALUE *v1, VALUE *v2, VALUE *v3, VALUE *vres);
DLL extern void broundvalue(VALUE *v1, VALUE *v2, VALUE *v3, VALUE *vres);
DLL extern void setminusvalue(VALUE *, VALUE *, VALUE *);
DLL extern void backslashvalue(VALUE *, VALUE *);
DLL extern void contentvalue(VALUE *, VALUE *);
DLL extern void hashopvalue(VALUE *, VALUE *, VALUE *);
DLL extern void apprvalue(VALUE *v1, VALUE *v2, VALUE *v3, VALUE *vres);
DLL extern void intvalue(VALUE *vp, VALUE *vres);
DLL extern void fracvalue(VALUE *vp, VALUE *vres);
DLL extern void incvalue(VALUE *vp, VALUE *vres);
DLL extern void decvalue(VALUE *vp, VALUE *vres);
DLL extern void conjvalue(VALUE *vp, VALUE *vres);
DLL extern void sqrtvalue(VALUE *v1, VALUE *v2, VALUE *v3, VALUE *vres);
DLL extern void rootvalue(VALUE *v1, VALUE *v2, VALUE *v3, VALUE *vres);
DLL extern void absvalue(VALUE *v1, VALUE *v2, VALUE *vres);
DLL extern void normvalue(VALUE *vp, VALUE *vres);
DLL extern void shiftvalue(VALUE *v1, VALUE *v2, BOOL rightshift, VALUE *vres);
DLL extern void scalevalue(VALUE *v1, VALUE *v2, VALUE *vres);
DLL extern void powivalue(VALUE *v1, VALUE *v2, VALUE *vres);
DLL extern void powervalue(VALUE *v1, VALUE *v2, VALUE *v3, VALUE *vres);
DLL extern void divvalue(VALUE *v1, VALUE *v2, VALUE *vres);
DLL extern void quovalue(VALUE *v1, VALUE *v2, VALUE *v3, VALUE *vres);
DLL extern void modvalue(VALUE *v1, VALUE *v2, VALUE *v3, VALUE *vres);
DLL extern BOOL testvalue(VALUE *vp);
DLL extern BOOL comparevalue(VALUE *v1, VALUE *v2);
DLL extern BOOL acceptvalue(VALUE *v1, VALUE *v2);
DLL extern void relvalue(VALUE *v1, VALUE *v2, VALUE *vres);
DLL extern void sgnvalue(VALUE *vp, VALUE *vres);
DLL extern QCKHASH hashvalue(VALUE *vp, QCKHASH val);
DLL extern void printvalue(VALUE *vp, int flags);
DLL extern BOOL precvalue(VALUE *v1, VALUE *v2);
DLL extern VALUE error_value(int e);
DLL extern int set_errno(int e);
DLL extern int set_errcount(int e);
DLL extern long countlistitems(LIST *lp);
DLL extern void addlistitems(LIST *lp, VALUE *vres);
DLL extern void addlistinv(LIST *lp, VALUE *vres);
DLL extern void copy2octet(VALUE *, OCTET *);
DLL extern int copystod(VALUE *, long, long, VALUE *, long);
DLL extern void protectall(VALUE *, int);
DLL extern void set_update(int);
/*
@@ -256,44 +270,44 @@ struct matrix {
#define matsize(n) (sizeof(MATRIX) - sizeof(VALUE) + ((n) * sizeof(VALUE)))
extern MATRIX *matadd(MATRIX *m1, MATRIX *m2);
extern MATRIX *matsub(MATRIX *m1, MATRIX *m2);
extern MATRIX *matmul(MATRIX *m1, MATRIX *m2);
extern MATRIX *matneg(MATRIX *m);
extern MATRIX *matalloc(long size);
extern MATRIX *matcopy(MATRIX *m);
extern MATRIX *matinit(MATRIX *m, VALUE *v1, VALUE *v2);
extern MATRIX *matsquare(MATRIX *m);
extern MATRIX *matinv(MATRIX *m);
extern MATRIX *matscale(MATRIX *m, long n);
extern MATRIX *matshift(MATRIX *m, long n);
extern MATRIX *matmulval(MATRIX *m, VALUE *vp);
extern MATRIX *matpowi(MATRIX *m, NUMBER *q);
extern MATRIX *matconj(MATRIX *m);
extern MATRIX *matquoval(MATRIX *m, VALUE *vp, VALUE *v3);
extern MATRIX *matmodval(MATRIX *m, VALUE *vp, VALUE *v3);
extern MATRIX *matint(MATRIX *m);
extern MATRIX *matfrac(MATRIX *m);
extern MATRIX *matappr(MATRIX *m, VALUE *v2, VALUE *v3);
extern VALUE mattrace(MATRIX *m);
extern MATRIX *mattrans(MATRIX *m);
extern MATRIX *matcross(MATRIX *m1, MATRIX *m2);
extern BOOL mattest(MATRIX *m);
extern void matsum(MATRIX *m, VALUE *vres);
extern BOOL matcmp(MATRIX *m1, MATRIX *m2);
extern int matsearch(MATRIX *m, VALUE *vp, long start, long end, ZVALUE *index);
extern int matrsearch(MATRIX *m, VALUE *vp, long start, long end, ZVALUE *index);
extern VALUE matdet(MATRIX *m);
extern VALUE matdot(MATRIX *m1, MATRIX *m2);
extern void matfill(MATRIX *m, VALUE *v1, VALUE *v2);
extern void matfree(MATRIX *m);
extern void matprint(MATRIX *m, long max_print);
extern VALUE *matindex(MATRIX *mp, BOOL create, long dim, VALUE *indices);
extern void matreverse(MATRIX *m);
extern void matsort(MATRIX *m);
extern BOOL matisident(MATRIX *m);
extern MATRIX *matround(MATRIX *m, VALUE *v2, VALUE *v3);
extern MATRIX *matbround(MATRIX *m, VALUE *v2, VALUE *v3);
DLL extern MATRIX *matadd(MATRIX *m1, MATRIX *m2);
DLL extern MATRIX *matsub(MATRIX *m1, MATRIX *m2);
DLL extern MATRIX *matmul(MATRIX *m1, MATRIX *m2);
DLL extern MATRIX *matneg(MATRIX *m);
DLL extern MATRIX *matalloc(long size);
DLL extern MATRIX *matcopy(MATRIX *m);
DLL extern MATRIX *matinit(MATRIX *m, VALUE *v1, VALUE *v2);
DLL extern MATRIX *matsquare(MATRIX *m);
DLL extern MATRIX *matinv(MATRIX *m);
DLL extern MATRIX *matscale(MATRIX *m, long n);
DLL extern MATRIX *matshift(MATRIX *m, long n);
DLL extern MATRIX *matmulval(MATRIX *m, VALUE *vp);
DLL extern MATRIX *matpowi(MATRIX *m, NUMBER *q);
DLL extern MATRIX *matconj(MATRIX *m);
DLL extern MATRIX *matquoval(MATRIX *m, VALUE *vp, VALUE *v3);
DLL extern MATRIX *matmodval(MATRIX *m, VALUE *vp, VALUE *v3);
DLL extern MATRIX *matint(MATRIX *m);
DLL extern MATRIX *matfrac(MATRIX *m);
DLL extern MATRIX *matappr(MATRIX *m, VALUE *v2, VALUE *v3);
DLL extern VALUE mattrace(MATRIX *m);
DLL extern MATRIX *mattrans(MATRIX *m);
DLL extern MATRIX *matcross(MATRIX *m1, MATRIX *m2);
DLL extern BOOL mattest(MATRIX *m);
DLL extern void matsum(MATRIX *m, VALUE *vres);
DLL extern BOOL matcmp(MATRIX *m1, MATRIX *m2);
DLL extern int matsearch(MATRIX *m, VALUE *vp, long start, long end, ZVALUE *index);
DLL extern int matrsearch(MATRIX *m, VALUE *vp, long start, long end, ZVALUE *index);
DLL extern VALUE matdet(MATRIX *m);
DLL extern VALUE matdot(MATRIX *m1, MATRIX *m2);
DLL extern void matfill(MATRIX *m, VALUE *v1, VALUE *v2);
DLL extern void matfree(MATRIX *m);
DLL extern void matprint(MATRIX *m, long max_print);
DLL extern VALUE *matindex(MATRIX *mp, BOOL create, long dim, VALUE *indices);
DLL extern void matreverse(MATRIX *m);
DLL extern void matsort(MATRIX *m);
DLL extern BOOL matisident(MATRIX *m);
DLL extern MATRIX *matround(MATRIX *m, VALUE *v2, VALUE *v3);
DLL extern MATRIX *matbround(MATRIX *m, VALUE *v2, VALUE *v3);
/*
@@ -320,32 +334,32 @@ struct list {
};
extern void insertlistfirst(LIST *lp, VALUE *vp);
extern void insertlistlast(LIST *lp, VALUE *vp);
extern void insertlistmiddle(LIST *lp, long index, VALUE *vp);
extern void removelistfirst(LIST *lp, VALUE *vp);
extern void removelistlast(LIST *lp, VALUE *vp);
extern void removelistmiddle(LIST *lp, long index, VALUE *vp);
extern void listfree(LIST *lp);
extern void listprint(LIST *lp, long max_print);
extern int listsearch(LIST *lp, VALUE *vp, long start, long end, ZVALUE *index);
extern int listrsearch(LIST *lp, VALUE *vp, long start, long end, ZVALUE *index);
extern BOOL listcmp(LIST *lp1, LIST *lp2);
extern VALUE *listfindex(LIST *lp, long index);
extern LIST *listalloc(void);
extern LIST *listcopy(LIST *lp);
extern void listreverse(LIST *lp);
extern void listsort(LIST *lp);
extern LIST *listappr(LIST *lp, VALUE *v2, VALUE *v3);
extern LIST *listround(LIST *m, VALUE *v2, VALUE *v3);
extern LIST *listbround(LIST *m, VALUE *v2, VALUE *v3);
extern LIST *listquo(LIST *lp, VALUE *v2, VALUE *v3);
extern LIST *listmod(LIST *lp, VALUE *v2, VALUE *v3);
extern BOOL evp(LISTELEM *cp, LISTELEM *x, VALUE *vres);
extern BOOL evalpoly(LIST *clist, LISTELEM *x, VALUE *vres);
extern void insertitems(LIST *lp1, LIST *lp2);
extern LISTELEM *listelement(LIST *, long);
extern LIST *listsegment(LIST *, long, long);
DLL extern void insertlistfirst(LIST *lp, VALUE *vp);
DLL extern void insertlistlast(LIST *lp, VALUE *vp);
DLL extern void insertlistmiddle(LIST *lp, long index, VALUE *vp);
DLL extern void removelistfirst(LIST *lp, VALUE *vp);
DLL extern void removelistlast(LIST *lp, VALUE *vp);
DLL extern void removelistmiddle(LIST *lp, long index, VALUE *vp);
DLL extern void listfree(LIST *lp);
DLL extern void listprint(LIST *lp, long max_print);
DLL extern int listsearch(LIST *lp, VALUE *vp, long start, long end, ZVALUE *index);
DLL extern int listrsearch(LIST *lp, VALUE *vp, long start, long end, ZVALUE *index);
DLL extern BOOL listcmp(LIST *lp1, LIST *lp2);
DLL extern VALUE *listfindex(LIST *lp, long index);
DLL extern LIST *listalloc(void);
DLL extern LIST *listcopy(LIST *lp);
DLL extern void listreverse(LIST *lp);
DLL extern void listsort(LIST *lp);
DLL extern LIST *listappr(LIST *lp, VALUE *v2, VALUE *v3);
DLL extern LIST *listround(LIST *m, VALUE *v2, VALUE *v3);
DLL extern LIST *listbround(LIST *m, VALUE *v2, VALUE *v3);
DLL extern LIST *listquo(LIST *lp, VALUE *v2, VALUE *v3);
DLL extern LIST *listmod(LIST *lp, VALUE *v2, VALUE *v3);
DLL extern BOOL evp(LISTELEM *cp, LISTELEM *x, VALUE *vres);
DLL extern BOOL evalpoly(LIST *clist, LISTELEM *x, VALUE *vres);
DLL extern void insertitems(LIST *lp1, LIST *lp2);
DLL extern LISTELEM *listelement(LIST *, long);
DLL extern LIST *listsegment(LIST *, long, long);
/*
@@ -370,15 +384,15 @@ struct assoc {
};
extern ASSOC *assocalloc(long initsize);
extern ASSOC *assoccopy(ASSOC *ap);
extern void assocfree(ASSOC *ap);
extern void assocprint(ASSOC *ap, long max_print);
extern int assocsearch(ASSOC *ap, VALUE *vp, long start, long end, ZVALUE *index);
extern int assocrsearch(ASSOC *ap, VALUE *vp, long start, long end, ZVALUE *index);
extern BOOL assoccmp(ASSOC *ap1, ASSOC *ap2);
extern VALUE *assocfindex(ASSOC *ap, long index);
extern VALUE *associndex(ASSOC *ap, BOOL create, long dim, VALUE *indices);
DLL extern ASSOC *assocalloc(long initsize);
DLL extern ASSOC *assoccopy(ASSOC *ap);
DLL extern void assocfree(ASSOC *ap);
DLL extern void assocprint(ASSOC *ap, long max_print);
DLL extern int assocsearch(ASSOC *ap, VALUE *vp, long start, long end, ZVALUE *index);
DLL extern int assocrsearch(ASSOC *ap, VALUE *vp, long start, long end, ZVALUE *index);
DLL extern BOOL assoccmp(ASSOC *ap1, ASSOC *ap2);
DLL extern VALUE *assocfindex(ASSOC *ap, long index);
DLL extern VALUE *associndex(ASSOC *ap, BOOL create, long dim, VALUE *indices);
/*
@@ -460,62 +474,62 @@ struct object {
(sizeof(OBJECT) + ((elements) - USUAL_ELEMENTS) * sizeof(VALUE))
extern OBJECT *objcopy(OBJECT *op);
extern OBJECT *objalloc(long index);
extern VALUE objcall(int action, VALUE *v1, VALUE *v2, VALUE *v3);
extern void objfree(OBJECT *op);
extern int addelement(char *name);
extern int defineobject(char *name, int indices[], int count);
extern int checkobject(char *name);
extern void showobjfuncs(void);
extern void showobjtypes(void);
extern int findelement(char *name);
extern char *objtypename(unsigned long index);
extern int objoffset(OBJECT *op, long index);
DLL extern OBJECT *objcopy(OBJECT *op);
DLL extern OBJECT *objalloc(long index);
DLL extern VALUE objcall(int action, VALUE *v1, VALUE *v2, VALUE *v3);
DLL extern void objfree(OBJECT *op);
DLL extern int addelement(char *name);
DLL extern int defineobject(char *name, int indices[], int count);
DLL extern int checkobject(char *name);
DLL extern void showobjfuncs(void);
DLL extern void showobjtypes(void);
DLL extern int findelement(char *name);
DLL extern char *objtypename(unsigned long index);
DLL extern int objoffset(OBJECT *op, long index);
/*
* Configuration parameter name and type.
*/
extern NAMETYPE configs[];
extern void config_value(CONFIG *cfg, int type, VALUE *ret);
extern void setconfig(int type, VALUE *vp);
extern void config_print(CONFIG *cfg); /* the CONFIG to print */
DLL extern void config_value(CONFIG *cfg, int type, VALUE *ret);
DLL extern void setconfig(int type, VALUE *vp);
DLL extern void config_print(CONFIG *cfg); /* the CONFIG to print */
/*
* size, memsize and sizeof support
*/
extern long elm_count(VALUE *vp);
extern long lsizeof(VALUE *vp);
extern long memsize(VALUE *vp);
DLL extern long elm_count(VALUE *vp);
DLL extern long lsizeof(VALUE *vp);
DLL extern long memsize(VALUE *vp);
/*
* String functions
*/
extern STRING *stringadd(STRING *, STRING *);
extern STRING *stringcopy(STRING *);
extern STRING *stringsub(STRING *, STRING *);
extern STRING *stringmul(NUMBER *, STRING *);
extern STRING *stringand(STRING *, STRING *);
extern STRING *stringor(STRING *, STRING *);
extern STRING *stringxor(STRING *, STRING *);
extern STRING *stringdiff(STRING *, STRING *);
extern STRING *stringsegment(STRING *, long, long);
extern STRING *stringshift(STRING *, long);
extern STRING *stringcomp(STRING *);
extern STRING *stringneg(STRING *);
extern STRING *stringcpy(STRING *, STRING *);
extern STRING *stringncpy(STRING *, STRING *, long);
extern long stringcontent(STRING *s);
extern long stringlowbit(STRING *s);
extern long stringhighbit(STRING *s);
extern BOOL stringcmp(STRING *, STRING *);
extern BOOL stringrel(STRING *, STRING *);
extern int stringbit(STRING *, long);
extern BOOL stringtest(STRING *);
extern int stringsetbit(STRING *, long, BOOL);
extern int stringsearch(STRING *, STRING *, long, long, ZVALUE *);
extern int stringrsearch(STRING *, STRING *, long, long, ZVALUE *);
DLL extern STRING *stringadd(STRING *, STRING *);
DLL extern STRING *stringcopy(STRING *);
DLL extern STRING *stringsub(STRING *, STRING *);
DLL extern STRING *stringmul(NUMBER *, STRING *);
DLL extern STRING *stringand(STRING *, STRING *);
DLL extern STRING *stringor(STRING *, STRING *);
DLL extern STRING *stringxor(STRING *, STRING *);
DLL extern STRING *stringdiff(STRING *, STRING *);
DLL extern STRING *stringsegment(STRING *, long, long);
DLL extern STRING *stringshift(STRING *, long);
DLL extern STRING *stringcomp(STRING *);
DLL extern STRING *stringneg(STRING *);
DLL extern STRING *stringcpy(STRING *, STRING *);
DLL extern STRING *stringncpy(STRING *, STRING *, long);
DLL extern long stringcontent(STRING *s);
DLL extern long stringlowbit(STRING *s);
DLL extern long stringhighbit(STRING *s);
DLL extern BOOL stringcmp(STRING *, STRING *);
DLL extern BOOL stringrel(STRING *, STRING *);
DLL extern int stringbit(STRING *, long);
DLL extern BOOL stringtest(STRING *);
DLL extern int stringsetbit(STRING *, long, BOOL);
DLL extern int stringsearch(STRING *, STRING *, long, long, ZVALUE *);
DLL extern int stringrsearch(STRING *, STRING *, long, long, ZVALUE *);
#endif /* !__VALUE_H__ */

View File

@@ -19,8 +19,8 @@
* received a copy with calc; if not, write to Free Software Foundation, Inc.
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
*
* @(#) $Revision: 29.18 $
* @(#) $Id: version.c,v 29.18 2000/12/17 12:31:05 chongo Exp $
* @(#) $Revision: 29.19 $
* @(#) $Id: version.c,v 29.19 2001/02/25 22:07:36 chongo Exp $
* @(#) $Source: /usr/local/src/cmd/calc/RCS/version.c,v $
*
* Under source code control: 1990/05/22 11:00:58
@@ -42,8 +42,8 @@ static char *program;
#define MAJOR_VER 2 /* major version */
#define MINOR_VER 11 /* minor version */
#define MAJOR_PATCH 4 /* patch level or 0 if no patch */
#define MINOR_PATCH "2" /* test number or empty string if no patch */
#define MAJOR_PATCH 5 /* patch level or 0 if no patch */
#define MINOR_PATCH "0" /* test number or empty string if no patch */
/*
* calc version constants

240
zmath.h
View File

@@ -17,8 +17,8 @@
* received a copy with calc; if not, write to Free Software Foundation, Inc.
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
*
* @(#) $Revision: 29.3 $
* @(#) $Id: zmath.h,v 29.3 2000/07/17 15:35:49 chongo Exp $
* @(#) $Revision: 29.4 $
* @(#) $Id: zmath.h,v 29.4 2001/02/25 22:07:36 chongo Exp $
* @(#) $Source: /usr/local/src/cmd/calc/RCS/zmath.h,v $
*
* Under source code control: 1993/07/30 19:42:48
@@ -38,6 +38,20 @@
#define __ZMATH_H__
#if defined (_WIN32)
#ifdef _EXPORTING
#define DLL __declspec(dllexport)
#else
#define DLL __declspec(dllimport)
#endif
#else /* Windoz free systems */
#define DLL
#endif /* Windoz free systems */
#include "alloc.h"
#include "endian_calc.h"
#include "longbits.h"
@@ -267,126 +281,126 @@ typedef struct {
/*
* Function prototypes for integer math routines.
*/
extern HALF * alloc(LEN len);
DLL extern HALF * alloc(LEN len);
#ifdef ALLOCTEST
extern void freeh(HALF *);
DLL extern void freeh(HALF *);
#endif
/*
* Input, output, and conversion routines.
*/
extern void zcopy(ZVALUE z, ZVALUE *res);
extern void itoz(long i, ZVALUE *res);
extern void utoz(FULL i, ZVALUE *res);
extern void str2z(char *s, ZVALUE *res);
extern long ztoi(ZVALUE z);
extern FULL ztou(ZVALUE z);
extern void zprintval(ZVALUE z, long decimals, long width);
extern void zprintx(ZVALUE z, long width);
extern void zprintb(ZVALUE z, long width);
extern void zprinto(ZVALUE z, long width);
extern void fitzprint(ZVALUE, long, long);
DLL extern void zcopy(ZVALUE z, ZVALUE *res);
DLL extern void itoz(long i, ZVALUE *res);
DLL extern void utoz(FULL i, ZVALUE *res);
DLL extern void str2z(char *s, ZVALUE *res);
DLL extern long ztoi(ZVALUE z);
DLL extern FULL ztou(ZVALUE z);
DLL extern void zprintval(ZVALUE z, long decimals, long width);
DLL extern void zprintx(ZVALUE z, long width);
DLL extern void zprintb(ZVALUE z, long width);
DLL extern void zprinto(ZVALUE z, long width);
DLL extern void fitzprint(ZVALUE, long, long);
/*
* Basic numeric routines.
*/
extern void zmuli(ZVALUE z, long n, ZVALUE *res);
extern long zdivi(ZVALUE z, long n, ZVALUE *res);
extern long zmodi(ZVALUE z, long n);
extern void zadd(ZVALUE z1, ZVALUE z2, ZVALUE *res);
extern void zsub(ZVALUE z1, ZVALUE z2, ZVALUE *res);
extern void zmul(ZVALUE z1, ZVALUE z2, ZVALUE *res);
extern long zdiv(ZVALUE z1, ZVALUE z2, ZVALUE *res, ZVALUE *rem, long R);
extern long zquo(ZVALUE z1, ZVALUE z2, ZVALUE *res, long R);
extern long zmod(ZVALUE z1, ZVALUE z2, ZVALUE *rem, long R);
extern void zequo(ZVALUE z1, ZVALUE z2, ZVALUE *res);
extern BOOL zdivides(ZVALUE z1, ZVALUE z2);
extern void zor(ZVALUE z1, ZVALUE z2, ZVALUE *res);
extern void zand(ZVALUE z1, ZVALUE z2, ZVALUE *res);
extern void zxor(ZVALUE z1, ZVALUE z2, ZVALUE *res);
extern void zandnot(ZVALUE z1, ZVALUE z2, ZVALUE *res);
extern long zpopcnt(ZVALUE z, int bitval);
extern void zshift(ZVALUE z, long n, ZVALUE *res);
extern void zsquare(ZVALUE z, ZVALUE *res);
extern long zlowbit(ZVALUE z);
extern LEN zhighbit(ZVALUE z);
extern void zbitvalue(long n, ZVALUE *res);
extern BOOL zisset(ZVALUE z, long n);
extern BOOL zisonebit(ZVALUE z);
extern BOOL zisallbits(ZVALUE z);
extern FLAG ztest(ZVALUE z);
extern FLAG zrel(ZVALUE z1, ZVALUE z2);
extern FLAG zabsrel(ZVALUE z1, ZVALUE z2);
extern BOOL zcmp(ZVALUE z1, ZVALUE z2);
DLL extern void zmuli(ZVALUE z, long n, ZVALUE *res);
DLL extern long zdivi(ZVALUE z, long n, ZVALUE *res);
DLL extern long zmodi(ZVALUE z, long n);
DLL extern void zadd(ZVALUE z1, ZVALUE z2, ZVALUE *res);
DLL extern void zsub(ZVALUE z1, ZVALUE z2, ZVALUE *res);
DLL extern void zmul(ZVALUE z1, ZVALUE z2, ZVALUE *res);
DLL extern long zdiv(ZVALUE z1, ZVALUE z2, ZVALUE *res, ZVALUE *rem, long R);
DLL extern long zquo(ZVALUE z1, ZVALUE z2, ZVALUE *res, long R);
DLL extern long zmod(ZVALUE z1, ZVALUE z2, ZVALUE *rem, long R);
DLL extern void zequo(ZVALUE z1, ZVALUE z2, ZVALUE *res);
DLL extern BOOL zdivides(ZVALUE z1, ZVALUE z2);
DLL extern void zor(ZVALUE z1, ZVALUE z2, ZVALUE *res);
DLL extern void zand(ZVALUE z1, ZVALUE z2, ZVALUE *res);
DLL extern void zxor(ZVALUE z1, ZVALUE z2, ZVALUE *res);
DLL extern void zandnot(ZVALUE z1, ZVALUE z2, ZVALUE *res);
DLL extern long zpopcnt(ZVALUE z, int bitval);
DLL extern void zshift(ZVALUE z, long n, ZVALUE *res);
DLL extern void zsquare(ZVALUE z, ZVALUE *res);
DLL extern long zlowbit(ZVALUE z);
DLL extern LEN zhighbit(ZVALUE z);
DLL extern void zbitvalue(long n, ZVALUE *res);
DLL extern BOOL zisset(ZVALUE z, long n);
DLL extern BOOL zisonebit(ZVALUE z);
DLL extern BOOL zisallbits(ZVALUE z);
DLL extern FLAG ztest(ZVALUE z);
DLL extern FLAG zrel(ZVALUE z1, ZVALUE z2);
DLL extern FLAG zabsrel(ZVALUE z1, ZVALUE z2);
DLL extern BOOL zcmp(ZVALUE z1, ZVALUE z2);
/*
* More complicated numeric functions.
*/
extern FULL uugcd(FULL i1, FULL i2);
extern long iigcd(long i1, long i2);
extern void zgcd(ZVALUE z1, ZVALUE z2, ZVALUE *res);
extern void zlcm(ZVALUE z1, ZVALUE z2, ZVALUE *res);
extern void zreduce(ZVALUE z1, ZVALUE z2, ZVALUE *z1res, ZVALUE *z2res);
extern void zfact(ZVALUE z, ZVALUE *dest);
extern void zperm(ZVALUE z1, ZVALUE z2, ZVALUE *res);
extern int zcomb(ZVALUE z1, ZVALUE z2, ZVALUE *res);
extern FLAG zjacobi(ZVALUE z1, ZVALUE z2);
extern void zfib(ZVALUE z, ZVALUE *res);
extern void zpowi(ZVALUE z1, ZVALUE z2, ZVALUE *res);
extern void ztenpow(long power, ZVALUE *res);
extern void zpowermod(ZVALUE z1, ZVALUE z2, ZVALUE z3, ZVALUE *res);
extern BOOL zmodinv(ZVALUE z1, ZVALUE z2, ZVALUE *res);
extern BOOL zrelprime(ZVALUE z1, ZVALUE z2);
extern long zlog(ZVALUE z1, ZVALUE z2);
extern long zlog10(ZVALUE z);
extern long zdivcount(ZVALUE z1, ZVALUE z2);
extern long zfacrem(ZVALUE z1, ZVALUE z2, ZVALUE *rem);
extern long zgcdrem(ZVALUE z1, ZVALUE z2, ZVALUE *res);
extern long zdigits(ZVALUE z1);
extern long zdigit(ZVALUE z1, long n);
extern FLAG zsqrt(ZVALUE z1, ZVALUE *dest, long R);
extern void zroot(ZVALUE z1, ZVALUE z2, ZVALUE *dest);
extern BOOL zissquare(ZVALUE z);
extern void zhnrmod(ZVALUE v, ZVALUE h, ZVALUE zn, ZVALUE zr, ZVALUE *res);
DLL extern FULL uugcd(FULL i1, FULL i2);
DLL extern long iigcd(long i1, long i2);
DLL extern void zgcd(ZVALUE z1, ZVALUE z2, ZVALUE *res);
DLL extern void zlcm(ZVALUE z1, ZVALUE z2, ZVALUE *res);
DLL extern void zreduce(ZVALUE z1, ZVALUE z2, ZVALUE *z1res, ZVALUE *z2res);
DLL extern void zfact(ZVALUE z, ZVALUE *dest);
DLL extern void zperm(ZVALUE z1, ZVALUE z2, ZVALUE *res);
DLL extern int zcomb(ZVALUE z1, ZVALUE z2, ZVALUE *res);
DLL extern FLAG zjacobi(ZVALUE z1, ZVALUE z2);
DLL extern void zfib(ZVALUE z, ZVALUE *res);
DLL extern void zpowi(ZVALUE z1, ZVALUE z2, ZVALUE *res);
DLL extern void ztenpow(long power, ZVALUE *res);
DLL extern void zpowermod(ZVALUE z1, ZVALUE z2, ZVALUE z3, ZVALUE *res);
DLL extern BOOL zmodinv(ZVALUE z1, ZVALUE z2, ZVALUE *res);
DLL extern BOOL zrelprime(ZVALUE z1, ZVALUE z2);
DLL extern long zlog(ZVALUE z1, ZVALUE z2);
DLL extern long zlog10(ZVALUE z);
DLL extern long zdivcount(ZVALUE z1, ZVALUE z2);
DLL extern long zfacrem(ZVALUE z1, ZVALUE z2, ZVALUE *rem);
DLL extern long zgcdrem(ZVALUE z1, ZVALUE z2, ZVALUE *res);
DLL extern long zdigits(ZVALUE z1);
DLL extern long zdigit(ZVALUE z1, long n);
DLL extern FLAG zsqrt(ZVALUE z1, ZVALUE *dest, long R);
DLL extern void zroot(ZVALUE z1, ZVALUE z2, ZVALUE *dest);
DLL extern BOOL zissquare(ZVALUE z);
DLL extern void zhnrmod(ZVALUE v, ZVALUE h, ZVALUE zn, ZVALUE zr, ZVALUE *res);
/*
* Prime related functions.
*/
extern FLAG zisprime(ZVALUE z);
extern FULL znprime(ZVALUE z);
extern FULL next_prime(FULL v);
extern FULL zpprime(ZVALUE z);
extern void zpfact(ZVALUE z, ZVALUE *dest);
extern BOOL zprimetest(ZVALUE z, long count, ZVALUE skip);
extern BOOL zredcprimetest(ZVALUE z, long count, ZVALUE skip);
extern BOOL znextcand(ZVALUE z1, long count, ZVALUE skip, ZVALUE res, ZVALUE mod, ZVALUE *cand);
extern BOOL zprevcand(ZVALUE z1, long count, ZVALUE skip, ZVALUE res, ZVALUE mod, ZVALUE *cand);
extern FULL zlowfactor(ZVALUE z, long count);
extern FLAG zfactor(ZVALUE z1, ZVALUE z2, ZVALUE *res);
extern long zpix(ZVALUE z1);
extern void zlcmfact(ZVALUE z, ZVALUE *dest);
DLL extern FLAG zisprime(ZVALUE z);
DLL extern FULL znprime(ZVALUE z);
DLL extern FULL next_prime(FULL v);
DLL extern FULL zpprime(ZVALUE z);
DLL extern void zpfact(ZVALUE z, ZVALUE *dest);
DLL extern BOOL zprimetest(ZVALUE z, long count, ZVALUE skip);
DLL extern BOOL zredcprimetest(ZVALUE z, long count, ZVALUE skip);
DLL extern BOOL znextcand(ZVALUE z1, long count, ZVALUE skip, ZVALUE res, ZVALUE mod, ZVALUE *cand);
DLL extern BOOL zprevcand(ZVALUE z1, long count, ZVALUE skip, ZVALUE res, ZVALUE mod, ZVALUE *cand);
DLL extern FULL zlowfactor(ZVALUE z, long count);
DLL extern FLAG zfactor(ZVALUE z1, ZVALUE z2, ZVALUE *res);
DLL extern long zpix(ZVALUE z1);
DLL extern void zlcmfact(ZVALUE z, ZVALUE *dest);
/*
* Misc misc functions. :-)
*/
extern void zsquaremod(ZVALUE z1, ZVALUE z2, ZVALUE *res);
extern void zminmod(ZVALUE z1, ZVALUE z2, ZVALUE *res);
extern BOOL zcmpmod(ZVALUE z1, ZVALUE z2, ZVALUE z3);
extern void zio_init(void);
DLL extern void zsquaremod(ZVALUE z1, ZVALUE z2, ZVALUE *res);
DLL extern void zminmod(ZVALUE z1, ZVALUE z2, ZVALUE *res);
DLL extern BOOL zcmpmod(ZVALUE z1, ZVALUE z2, ZVALUE z3);
DLL extern void zio_init(void);
/*
* These functions are for internal use only.
*/
extern void ztrim(ZVALUE *z);
extern void zshiftr(ZVALUE z, long n);
extern void zshiftl(ZVALUE z, long n);
extern HALF *zalloctemp(LEN len);
DLL extern void ztrim(ZVALUE *z);
DLL extern void zshiftr(ZVALUE z, long n);
DLL extern void zshiftl(ZVALUE z, long n);
DLL extern HALF *zalloctemp(LEN len);
/*
@@ -403,13 +417,13 @@ typedef struct {
ZVALUE one; /* REDC format for the number 1 */
} REDC;
extern REDC *zredcalloc(ZVALUE z1);
extern void zredcfree(REDC *rp);
extern void zredcencode(REDC *rp, ZVALUE z1, ZVALUE *res);
extern void zredcdecode(REDC *rp, ZVALUE z1, ZVALUE *res);
extern void zredcmul(REDC *rp, ZVALUE z1, ZVALUE z2, ZVALUE *res);
extern void zredcsquare(REDC *rp, ZVALUE z1, ZVALUE *res);
extern void zredcpower(REDC *rp, ZVALUE z1, ZVALUE z2, ZVALUE *res);
DLL extern REDC *zredcalloc(ZVALUE z1);
DLL extern void zredcfree(REDC *rp);
DLL extern void zredcencode(REDC *rp, ZVALUE z1, ZVALUE *res);
DLL extern void zredcdecode(REDC *rp, ZVALUE z1, ZVALUE *res);
DLL extern void zredcmul(REDC *rp, ZVALUE z1, ZVALUE z2, ZVALUE *res);
DLL extern void zredcsquare(REDC *rp, ZVALUE z1, ZVALUE *res);
DLL extern void zredcpower(REDC *rp, ZVALUE z1, ZVALUE z2, ZVALUE *res);
/*
@@ -550,32 +564,32 @@ extern void zredcpower(REDC *rp, ZVALUE z1, ZVALUE z2, ZVALUE *res);
/*
* Output routines for either FILE handles or strings.
*/
extern void math_chr(int ch);
extern void math_str(char *str);
extern void math_fill(char *str, long width);
extern void math_flush(void);
extern void math_divertio(void);
extern void math_cleardiversions(void);
extern char *math_getdivertedio(void);
extern int math_setmode(int mode);
extern LEN math_setdigits(LEN digits);
extern void math_fmt(char *, ...);
DLL extern void math_chr(int ch);
DLL extern void math_str(char *str);
DLL extern void math_fill(char *str, long width);
DLL extern void math_flush(void);
DLL extern void math_divertio(void);
DLL extern void math_cleardiversions(void);
DLL extern char *math_getdivertedio(void);
DLL extern int math_setmode(int mode);
DLL extern LEN math_setdigits(LEN digits);
DLL extern void math_fmt(char *, ...);
/*
* The error routine.
*/
extern void math_error(char *, ...);
DLL extern void math_error(char *, ...);
/*
* external swap functions
*/
extern HALF *swap_b8_in_HALFs(HALF *dest, HALF *src, LEN len);
extern ZVALUE *swap_b8_in_ZVALUE(ZVALUE *dest, ZVALUE *src, BOOL all);
extern HALF *swap_b16_in_HALFs(HALF *dest, HALF *src, LEN len);
extern ZVALUE *swap_b16_in_ZVALUE(ZVALUE *dest, ZVALUE *src, BOOL all);
extern ZVALUE *swap_HALF_in_ZVALUE(ZVALUE *dest, ZVALUE *src, BOOL all);
DLL extern HALF *swap_b8_in_HALFs(HALF *dest, HALF *src, LEN len);
DLL extern ZVALUE *swap_b8_in_ZVALUE(ZVALUE *dest, ZVALUE *src, BOOL all);
DLL extern HALF *swap_b16_in_HALFs(HALF *dest, HALF *src, LEN len);
DLL extern ZVALUE *swap_b16_in_ZVALUE(ZVALUE *dest, ZVALUE *src, BOOL all);
DLL extern ZVALUE *swap_HALF_in_ZVALUE(ZVALUE *dest, ZVALUE *src, BOOL all);
/*