mirror of
https://github.com/lcn2/calc.git
synced 2025-08-19 01:13:27 +03:00
Compare commits
20 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
e229393250 | ||
|
a407c7d197 | ||
|
9ea569152a | ||
|
cbcb5801fb | ||
|
bdf495150e | ||
|
b3648f030f | ||
|
71e88bdc91 | ||
|
ca0dd4560b | ||
|
f62d9fa1e6 | ||
|
253b47942f | ||
|
c773ee736f | ||
|
7d0cc52afe | ||
|
2441df7fdc | ||
|
5c565a7cea | ||
|
810e541281 | ||
|
ee30d787ea | ||
|
4e92927183 | ||
|
fb4a03c1f1 | ||
|
81a523043e | ||
|
2c0d0bbc1b |
58
BUGS
58
BUGS
@@ -74,12 +74,39 @@ Known bugs:
|
|||||||
|
|
||||||
=-=
|
=-=
|
||||||
|
|
||||||
|
Problems that have known work-a-rounds:
|
||||||
|
|
||||||
|
* There is a bug in gcc v4.1.0 that causes calc to fail the regression
|
||||||
|
test. The work-a-round is to compile with gcc v4.1.1 or later. This
|
||||||
|
problems was observed on Fedora 5.
|
||||||
|
|
||||||
|
=-=
|
||||||
|
|
||||||
mis-features in calc:
|
mis-features in calc:
|
||||||
|
|
||||||
Some problems are not bugs but rarther mis-features / things that could
|
Some problems are not bugs but rarther mis-features / things that could
|
||||||
work better. The following is a list of mis-features that should be
|
work better. The following is a list of mis-features that should be
|
||||||
addressed and improved someday.
|
addressed and improved someday.
|
||||||
|
|
||||||
|
* When statement is of the form { ... }, the leading { MUST BE ON
|
||||||
|
THE SAME LINE as the if, for, while or do keyword.
|
||||||
|
|
||||||
|
This works as expected:
|
||||||
|
|
||||||
|
if (expr) {
|
||||||
|
...
|
||||||
|
}
|
||||||
|
|
||||||
|
However this WILL NOT WORK AS EXPECTED:
|
||||||
|
|
||||||
|
if (expr)
|
||||||
|
{
|
||||||
|
...
|
||||||
|
}
|
||||||
|
|
||||||
|
This needs to be changed. See also "help statement", "help unexpected",
|
||||||
|
and "help todo".
|
||||||
|
|
||||||
* The chi.cal resource file does not work well with odd degrees
|
* The chi.cal resource file does not work well with odd degrees
|
||||||
of freedom. Can someone improve this algorithm?
|
of freedom. Can someone improve this algorithm?
|
||||||
|
|
||||||
@@ -102,30 +129,7 @@ mis-features in calc:
|
|||||||
|
|
||||||
will not.
|
will not.
|
||||||
|
|
||||||
=-=
|
## Copyright (C) 1999-2007 Landon Curt Noll
|
||||||
|
|
||||||
Problems with old systems that have known work-a-rounds:
|
|
||||||
|
|
||||||
* There is a bug in gcc-2.95 that causes calc, when compiled with -O2,
|
|
||||||
to fail the regression test. The work-a-round is to compile with -O
|
|
||||||
or to use gcc-2.96 or later.
|
|
||||||
|
|
||||||
* There are problems compiling calc on the sparcv9 under 64 bit
|
|
||||||
Solaris. On that platform, gcc-2.96 is able to compile calc, but
|
|
||||||
calc dumps core very early on in startup. It is said that sparcv9
|
|
||||||
support in gcc-2.96 is very unofficial and thus there is no
|
|
||||||
work-a-round for gcc-2-96.
|
|
||||||
|
|
||||||
There is a work-a-round for this architecture us one is using the
|
|
||||||
Solaris CC on the sparcv9. It has been reported that setting the
|
|
||||||
following Makefile variables will produce a working version of
|
|
||||||
calc on the sparcv9 under 64 bit Solaris:
|
|
||||||
|
|
||||||
LCC="cc -xarch=v9"
|
|
||||||
CCWARN="-DFORCE_STDC -w"
|
|
||||||
DEBUG="-fast -xarch=v9"
|
|
||||||
|
|
||||||
## Copyright (C) 1999-2006 Landon Curt Noll
|
|
||||||
##
|
##
|
||||||
## Calc is open software; you can redistribute it and/or modify it under
|
## 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
|
## the terms of the version 2.1 of the GNU Lesser General Public License
|
||||||
@@ -139,10 +143,10 @@ Problems with old systems that have known work-a-rounds:
|
|||||||
## A copy of version 2.1 of the GNU Lesser General Public License is
|
## 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
|
## distributed with calc under the filename COPYING-LGPL. You should have
|
||||||
## received a copy with calc; if not, write to Free Software Foundation, Inc.
|
## received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||||
## 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
## 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
##
|
##
|
||||||
## @(#) $Revision: 29.25 $
|
## @(#) $Revision: 30.1 $
|
||||||
## @(#) $Id: BUGS,v 29.25 2006/08/20 17:51:25 chongo Exp $
|
## @(#) $Id: BUGS,v 30.1 2007/03/16 11:09:46 chongo Exp $
|
||||||
## @(#) $Source: /usr/local/src/cmd/calc/RCS/BUGS,v $
|
## @(#) $Source: /usr/local/src/cmd/calc/RCS/BUGS,v $
|
||||||
##
|
##
|
||||||
## Under source code control: 1994/03/18 14:06:13
|
## Under source code control: 1994/03/18 14:06:13
|
||||||
|
608
CHANGES
608
CHANGES
@@ -1,10 +1,606 @@
|
|||||||
The following are the changes from calc version 2.12.1 to date:
|
The following are the changes from calc version 2.12.4.0 to date:
|
||||||
|
|
||||||
|
Fixed a documentation bug for the sgn() builtin.
|
||||||
|
|
||||||
|
Added the 1<<8/2 evaluation example to "help unexpected". That
|
||||||
|
expression evalutes to 128, not 16 as some C programmers might expect.
|
||||||
|
|
||||||
|
Fixed a bug in solve.cal where high was not returned in some situations.
|
||||||
|
|
||||||
|
Fixed a bug reported by Paul & Karen Tomlinson (paulnkaz at pktomlinson
|
||||||
|
dot fsnet dot co dot uk) where calling log multiple times with different
|
||||||
|
values of epsilon resulted in an incorrect value.
|
||||||
|
|
||||||
|
Removed cvd rule from Makefiles.
|
||||||
|
|
||||||
|
The Makefile used in the source rpm (calc-*.src.rpm) no longer uses
|
||||||
|
the -Werror compile flag. This is to help those distributions with
|
||||||
|
compilers that make produce (hopefully) complination warnings.
|
||||||
|
NOTE: For testing and calc build purposes will recommend and will
|
||||||
|
continue to use the -Werror flag.
|
||||||
|
|
||||||
|
Fixed a typo in the Makefile where the make variable ${SAMPLE_OBJ}
|
||||||
|
was misspelled as ${SAMPLE_OBJS}.
|
||||||
|
|
||||||
|
Added prep makefile rule to make is easier to compile calc without
|
||||||
|
an optimizer. By doing:
|
||||||
|
|
||||||
|
make clobber prep
|
||||||
|
|
||||||
|
one may build a calc binary that is easier to debug.
|
||||||
|
|
||||||
|
Fixed a bug where an certains typos (e.g., calling an unknown
|
||||||
|
function) would previously cause calc to exit.
|
||||||
|
|
||||||
|
Updated the COPYING file to reflect the new filenames associated
|
||||||
|
with the SHA1 hash function, and removed mention of files related
|
||||||
|
to the SHA (SHA0, not SHA1) and the MD5 hash functions (which is
|
||||||
|
no longer supported in calc).
|
||||||
|
|
||||||
|
Fixed a bug where a calling vsnprintf() twice created problems.
|
||||||
|
The thanks for this fix goes to Matthew Miller (mattdm at mattdm
|
||||||
|
dot org) for this patch.
|
||||||
|
|
||||||
|
Michael Penk (mpenk at wuska dot com) reported success in installs
|
||||||
|
under windoz via Cygwin by making a change to the Cygwin target.
|
||||||
|
These changes have been folded into the main calc Makefile.
|
||||||
|
The old recommendation of using 'make win32_hsrc' is no longer
|
||||||
|
required for Cygwin. See the README.WINDOWS file for details.
|
||||||
|
|
||||||
|
Added dms.cal and hms.cal resource files. The dms.cal is a more
|
||||||
|
functional version of deg.cal. It is a superset except that increment
|
||||||
|
and decrement is on the arc second level. The hms.cal is for
|
||||||
|
24-hour cycle instread of the 360 degree cycle of dms.cal.
|
||||||
|
|
||||||
|
Changed deg.cal object name from dms to deg so that the more functional
|
||||||
|
dms.cal can own the dms object name.
|
||||||
|
|
||||||
|
Updated 'help obj' to reflect changes to 'show objfunctions' and
|
||||||
|
resource file example list since 1999.
|
||||||
|
|
||||||
|
|
||||||
|
The following are the changes from calc version 2.12.3.0 to 2.12.3.3:
|
||||||
|
|
||||||
|
Fixed the Jacobi function where it returned 1 when it should have
|
||||||
|
returned 0. Thanks goes to Kevin Sopp (baraclese at googlemail dot com)
|
||||||
|
for discovering the problem and suggesting the nature if the fix.
|
||||||
|
|
||||||
|
Calc versions will always be of the form x.y.z.w even when the
|
||||||
|
MINOR_PATCH (w) is 0. Thus, 2.12.3.0 will be printed as 2.12.3.0
|
||||||
|
instread of just 2.12.3.
|
||||||
|
|
||||||
|
Added MINGW32_NT-5.0 compile target based on a patch from
|
||||||
|
Brian L. Angus (angus at eng dot utah dot edu).
|
||||||
|
|
||||||
|
Removed the use of rpm.release in the Makefile.
|
||||||
|
|
||||||
|
Mac OS Darwin targets no longer attempt to use ldconfig. Under the
|
||||||
|
Darwin target, the LDCONFIG make variable is redefined to be
|
||||||
|
an empty value. Thanks goes to Ralf Trinler (art at infra dot de)
|
||||||
|
for reporting this problem.
|
||||||
|
|
||||||
|
The ${CALC_INCDIR}/custom is no longer being removed at install time
|
||||||
|
if it is empty. Now when ${ALLOW_CUSTOM} make variable is empty,
|
||||||
|
an empty ${CALC_INCDIR}/custom may be left hehind.
|
||||||
|
|
||||||
|
Fixed a problem where a "make clobber" would remove custom/Makefile
|
||||||
|
and fail to rebuilt it.
|
||||||
|
|
||||||
|
|
||||||
|
The following are the changes from calc version 2.12.2.3 to 2.12.2.4:
|
||||||
|
|
||||||
|
Added OpenBSD target.
|
||||||
|
|
||||||
|
Using the -r test instead of the -e test in Makefiles because some
|
||||||
|
out of date shells still do not have the -e test.
|
||||||
|
|
||||||
|
The Makefile now avoids the use of if ! command because some out of
|
||||||
|
date shells to not support the ! construct.
|
||||||
|
|
||||||
|
|
||||||
|
The following are the changes from calc version 2.12.1.1 to 2.12.2.2:
|
||||||
|
|
||||||
|
Added an explicit Solaris target.
|
||||||
|
|
||||||
|
Fixed confusion in Makefile where some uses of ${EXT} were misnamed ${EXE}.
|
||||||
|
|
||||||
|
Added a "make strip" rule, per suggestion from Igor Furlan <primorec
|
||||||
|
at sbcglobal dot net>, to allow one to strip previously built binary
|
||||||
|
executables and libraries.
|
||||||
|
|
||||||
|
Under the Darwin / OS X target, ${DARWIN_ARCH} is left empty meaning
|
||||||
|
that calc is compiled for the native CPU type instead of Universal
|
||||||
|
Binary (Intel and PPC).
|
||||||
|
|
||||||
|
By default, the calc binary that is built for the rpm forces
|
||||||
|
${LD_SHARE} to be empty. An empty ${LD_SHARE} means that the calc
|
||||||
|
from the rpm does not set rpath. This in turn causes the default
|
||||||
|
system path to be searched when looking for libcalc and libcustcalc.
|
||||||
|
|
||||||
|
The Makefile shipped with calc still sets ${LD_SHARE} for host targets.
|
||||||
|
By default, the dynamic shared library search path for all targets
|
||||||
|
starts with the source directory. Starting the search in the source
|
||||||
|
directory is convenient for testing and debugging but is not appropriate
|
||||||
|
for installation on a production system. To get the same effect
|
||||||
|
as the calc binary in the calc rpm, try:
|
||||||
|
|
||||||
|
make clobber
|
||||||
|
make calc-dynamic-only BLD_TYPE=calc-dynamic-only LD_SHARE=
|
||||||
|
make install
|
||||||
|
|
||||||
|
The libcalc and libcustcalc shared libraries are now tied to
|
||||||
|
the 4 level calc version instead of just 3 levels. For example,
|
||||||
|
under Linux calc version 2.12.2.1 uses /usr/lib/libcalc.so.2.12.2.1
|
||||||
|
instead of just the /usr/lib/libcalc.so.2.12.2 file. This change
|
||||||
|
was made so that calc produced by 'make clobber; make all install'
|
||||||
|
is consistent with the calc rpm.
|
||||||
|
|
||||||
|
Calc is now releasing the calc-debuginfo rpm for those RPM users who
|
||||||
|
which to use non-stripped libraries and binaries for debugging
|
||||||
|
purposes. By default, the calc rpm installed stripped binaries
|
||||||
|
and libraries.
|
||||||
|
|
||||||
|
Added this high priority item to the calc help/todo list:
|
||||||
|
|
||||||
|
It is overkill to have nearly everything wind up in libcalc.
|
||||||
|
Form a libcalcmath and a libcalclang so that an application
|
||||||
|
that just wants to link with the calc math libs can use them
|
||||||
|
without dragging in all of the other calc language, I/O,
|
||||||
|
and builtin functions.
|
||||||
|
|
||||||
|
Fixed the wording for the -i flag in the calc man page.
|
||||||
|
|
||||||
|
Added some notes to the help/unexpected file regarding calc
|
||||||
|
and interactice shells.
|
||||||
|
|
||||||
|
Fixed bug where a FILEPOS was copied FPOS_POS_BITS octets instead of
|
||||||
|
FPOS_POS_LEN octets.
|
||||||
|
|
||||||
|
Split out ${READLINE_EXTRAS} Makefile variables from ${READLINE_LIB}
|
||||||
|
to better deal with Fedora rpm requirements.
|
||||||
|
|
||||||
|
Bit 8 (0x80) of calc_debug is reserved for custom debugging.
|
||||||
|
See help/config and custom/HOW_TO_ADD for details.
|
||||||
|
|
||||||
|
When the Makefile variable ${ALLOW_CUSTOM} is not defined or empty,
|
||||||
|
the libcustcalc library is not built or linked against, certain make
|
||||||
|
rules skip going into the custom sub-directory, the install
|
||||||
|
rule skips certain custom installation actions, and the common
|
||||||
|
C flags (${COMMON_CFLAGS}) is given -UCUSTOM. Other make rules such
|
||||||
|
as "make clean" and "make clobber" still work as before. Also
|
||||||
|
the Makefile.simple assumes that the Makefile variable ${ALLOW_CUSTOM}
|
||||||
|
is -DCUSTOM.
|
||||||
|
|
||||||
|
Clarified that the calc builtin functions rand() and random()
|
||||||
|
operate over a half closed interval. The help/rand and help/random
|
||||||
|
refer to the top of the interval as "beyond" instead of "max".
|
||||||
|
|
||||||
|
Releaseing source tar balls using bzip2 instead of with gzip. So
|
||||||
|
what was calc-something.tar.gz is now calc-something.tar.bz2.
|
||||||
|
To "uncompress" use:
|
||||||
|
|
||||||
|
bunzip2 calc-something.tar.bz2
|
||||||
|
|
||||||
|
On some systems, one may untar directly by:
|
||||||
|
|
||||||
|
tar -jxvf calc-something.tar.bz2
|
||||||
|
|
||||||
|
The Makefile variable ${BYTE_ORDER} was replaced by ${CALC_BYTE_ORDER}.
|
||||||
|
|
||||||
|
Changed the way the Makefile can force the calc byte order. If you set
|
||||||
|
the Makefile variable ${CALC_BYTE_ORDER} to be -DCALC_BIG_ENDIAN then
|
||||||
|
endian.h will force the CPP symbol CALC_BYTE_ORDER to be BIG_ENDIAN.
|
||||||
|
If you set ${CALC_BYTE_ORDER} to be -DCALC_LITTLE_ENDIAN then endian.h
|
||||||
|
will force the CPP symbol CALC_BYTE_ORDER to be LITTLE_ENDIAN.
|
||||||
|
If the Makefile variable ${CALC_BYTE_ORDER} is empty, then the CPP
|
||||||
|
symbol CALC_BYTE_ORDER will set to the CPP symbol BYTE_ORDER as
|
||||||
|
defined by some system include file (if the Makefile can find such
|
||||||
|
an include file), or the Makefile compiling endian.c and hopefully
|
||||||
|
using that result to set CPP symbol CALC_BYTE_ORDER. Regardless of
|
||||||
|
how it happens, the CPP symbol CALC_BYTE_ORDER should end up set in
|
||||||
|
endian_calc.h include file.
|
||||||
|
|
||||||
|
|
||||||
|
The following are the changes from calc version 2.12.1.10 to 2.12.2:
|
||||||
|
|
||||||
|
Put back the missing -s flags on the cscripts: mersenne, 4dsphere,
|
||||||
|
fprodcut, plus, and powerterm. Thanks goes to Bradley Reed
|
||||||
|
<bradreed1 at gmail dot com> for discovering this problem.
|
||||||
|
|
||||||
|
All static variables are now declared with the symbol STATIC.
|
||||||
|
All extern variables are now declared with the symbol EXTERN.
|
||||||
|
All static functions are now declared with the symbol S_FUNC.
|
||||||
|
All extern functions are now declared with the symbol E_FUNC.
|
||||||
|
The include file decl.h defines these 4 symbols by default
|
||||||
|
to static, extern, static, and extern respectively. Under
|
||||||
|
Windoz, DLL is also defined according to the _EXPORTING symbol
|
||||||
|
and is prepended to the EXTERN and E_FUNC symbols. The decl.h
|
||||||
|
file has replaced the win32dll.h file.
|
||||||
|
|
||||||
|
When WITH_TLS is defined, calc attempts to compile with Thread Local
|
||||||
|
Storage. As of version 2.12.1.12 this mode is extremely experimental.
|
||||||
|
Calc may not compile when WITH_TLS defined.
|
||||||
|
|
||||||
|
Fixed E_FUNC vs EXTERN issues discovered by Mirko Viviani
|
||||||
|
<mirko at objectlab dot org>.
|
||||||
|
|
||||||
|
Removed include of <malloc.h>. The building of the include file
|
||||||
|
"have_malloc.h" has been removed from the Makefile. One some
|
||||||
|
systems such as FreeBSD, the file /usr/include/malloc.h exists
|
||||||
|
and contains an forced error saying that stdlib.h should be used
|
||||||
|
instead. The Makefile symbol HAVE_MALLOC has been removed.
|
||||||
|
|
||||||
|
Moved the sample code in the sample sub-directory up into the
|
||||||
|
main source level. The sample/many_random.c source file is
|
||||||
|
now sample_many.c. The sample/test_random.c source file is now
|
||||||
|
sample_rand.c. The sample Makefile and the sub-directory is no more.
|
||||||
|
|
||||||
|
Renamed the following source files:
|
||||||
|
|
||||||
|
math_error.h ==> lib_calc.h
|
||||||
|
string.c ==> str.c
|
||||||
|
string.h ==> str.h
|
||||||
|
|
||||||
|
Renamed the following variables related to calc error processing:
|
||||||
|
|
||||||
|
int calc_jmp ==> int calc_use_matherr_jmpbuf
|
||||||
|
jmp_buf calc_jmp_buf ==> jmp_buf calc_matherr_jmpbuf
|
||||||
|
|
||||||
|
int post_init ==> int calc_use_scanerr_jmpbuf
|
||||||
|
jmp_buf jmpbuf ==> jmpbuf calc_scanerr_jmpbuf
|
||||||
|
|
||||||
|
char *calc_error ==> char calc_err_msg[MAXERROR+1]
|
||||||
|
|
||||||
|
These values are now declared in the lib_calc.h include file.
|
||||||
|
The value MAXERROR is now defined in lib_calc.h instead of calc.h.
|
||||||
|
The calc_err_msg[] buffer is now used for math errors as well
|
||||||
|
as scan and parse errors.
|
||||||
|
|
||||||
|
Parse/scan errors will not be printed if calc_print_scanerr_msg
|
||||||
|
is zero. By default:
|
||||||
|
|
||||||
|
int calc_print_scanerr_msg = 1;
|
||||||
|
|
||||||
|
This variable is declared in the lib_calc.h include file. Storage
|
||||||
|
comes from libcalc.
|
||||||
|
|
||||||
|
Parse/scan warnings will not be printed if calc_print_scanwarn_msg
|
||||||
|
is zero. By default:
|
||||||
|
|
||||||
|
int calc_print_scanwarn_msg = 1;
|
||||||
|
|
||||||
|
This variable is declared in the lib_calc.h include file. Storage
|
||||||
|
comes from libcalc.
|
||||||
|
|
||||||
|
The last parse/scan error message is stored in the calc_err_msg[]
|
||||||
|
buffer. This happens even when calc_print_scanerr_msg is zero.
|
||||||
|
|
||||||
|
The last parse/scan warning message is stored in the calc_warn_msg[]
|
||||||
|
buffer. After each parse/scan warning condition is detected,
|
||||||
|
the value calc_warn_cnt is incremented. This happens even when
|
||||||
|
calc_print_scanwarn_msg is zero.
|
||||||
|
|
||||||
|
The calc_warn_msg[] buffer and calc_warn_cnt variables are declared
|
||||||
|
in the lib_calc.h include file. Storage comes from libcalc.
|
||||||
|
|
||||||
|
See the file, LIBRARY or use the calc command "help libcalc" for
|
||||||
|
more information on calc error processing. This file has been
|
||||||
|
updated to reflect the changes noted above in this section.
|
||||||
|
|
||||||
|
The make install rule removes std_arg.h, have_malloc.h, math_error.h,
|
||||||
|
string.h, and win32dll.h from ${INCDIR} if they exist. These calc
|
||||||
|
include files are no longer supported.
|
||||||
|
|
||||||
|
Do reduce the number of special case .o build rules, the
|
||||||
|
${ALLOW_CUSTOM} make flag is added to ${CFLAGS} by default. This means
|
||||||
|
that if ALLOW_CUSTOM= -DCUSTOM, then -DCUSTOM is given to the compile
|
||||||
|
line of most .c files.
|
||||||
|
|
||||||
|
Calc -v reports "w/custom functions" or "w/o custom functions" on
|
||||||
|
the version string depending on if calc was compiled with the
|
||||||
|
ALLOW_CUSTOM= -DCUSTOM or not.
|
||||||
|
|
||||||
|
Replaced the concept of compiler sets in the Makefile with
|
||||||
|
host target section in the Makefile. Initial host targets are:
|
||||||
|
|
||||||
|
Linux
|
||||||
|
Darwin
|
||||||
|
FreeBSD
|
||||||
|
(default) <<== Target does not match any previous target name
|
||||||
|
Simple
|
||||||
|
|
||||||
|
NOTE: If your target is not supported below and the default target
|
||||||
|
is not suitable for your needs, please send to the:
|
||||||
|
|
||||||
|
calc-contrib at asthe dot com
|
||||||
|
|
||||||
|
EMail address an "ifeq ($(target),YOUR_TARGET_NAME)"
|
||||||
|
... "endif" set of lines from the Makefile so that
|
||||||
|
we can consider them for the next release.
|
||||||
|
|
||||||
|
The custom/Makefile is now constructed from 3 parts: custom/Makefile.head,
|
||||||
|
the host target section in Makefile, and the custom/Makefile.tail.
|
||||||
|
|
||||||
|
The top level Makefile and the custom/Makefile require a GNU Make
|
||||||
|
(such as gmake) or an equivalently advanced make. On many targets,
|
||||||
|
the default make is sufficient. On FreeBSD for example, one must
|
||||||
|
use gmake instead of make.
|
||||||
|
|
||||||
|
If your target system does not have GNU Make (or equivalent), then
|
||||||
|
you should try using the Makefile.simple and custom/Makefile.simple
|
||||||
|
files:
|
||||||
|
|
||||||
|
mv Makefile Makefile.gmake
|
||||||
|
cp Makefile.simple Makefile
|
||||||
|
mv custom/Makefile custom/Makefile.gmake
|
||||||
|
cp custom/Makefile.simple custom/Makefile
|
||||||
|
make all
|
||||||
|
|
||||||
|
Added the ability to build calc with dynamic libraries, static
|
||||||
|
libraries or both. Many thanks goes to Matthew Miller (mattdm
|
||||||
|
at mattdm dot org) and Mirko Viviani (mirko at objectlab dot
|
||||||
|
org) for this help, encouragement, and testing of this major change!
|
||||||
|
|
||||||
|
Added BLD_TYPE Makefile variable to control how calc is
|
||||||
|
built. The BLD_TYPE value may be one of:
|
||||||
|
|
||||||
|
BLD_TYPE= calc-dynamic-only
|
||||||
|
BLD_TYPE= calc-static-only
|
||||||
|
|
||||||
|
Each host target establishes a default BLD_TYPE value. Of course
|
||||||
|
one can override the host target BLD_TYPE on the make command line:
|
||||||
|
|
||||||
|
make clobber
|
||||||
|
make calc-dynamic-only BLD_TYPE=calc-dynamic-only
|
||||||
|
|
||||||
|
make clobber
|
||||||
|
make calc-static-only BLD_TYPE=calc-static-only
|
||||||
|
|
||||||
|
NOTE: It is a very good idea to first clobber (remove) any previously
|
||||||
|
built .o, libs and executables before switching the build
|
||||||
|
between static and dynamic.
|
||||||
|
|
||||||
|
which have the same effect as make all with a given build phase set.
|
||||||
|
|
||||||
|
For Linux and Darwin, the default BLD_TYPE is calc-dynamic-only.
|
||||||
|
For the simple case, BLD_TYPE is calc-static-only. For the
|
||||||
|
default target (the target does not match any of the previous
|
||||||
|
defined targets), BLD_TYPE is calc-static-only.
|
||||||
|
|
||||||
|
Added ${CSFLAGS} make variable to hold the {$CC} flags for compiling
|
||||||
|
without shared library. By default, ${CFLAGS} is ${CSFLAGS} with
|
||||||
|
${CC_SHARE} added to it.
|
||||||
|
|
||||||
|
Added ${CC_SHARE}, ${LIBCALC_SHLIB}, ${LIBCUSTCALC_SHLIB}, and
|
||||||
|
${LD_SHARE} to the remaining compiler sets.
|
||||||
|
|
||||||
|
Fixed make depend and make uninstall rules. Performed various
|
||||||
|
makefile syntax cleanups.
|
||||||
|
|
||||||
|
Removed ${PROGS} and ${STATIC_PROGS} Makefile variables due to
|
||||||
|
the new BLD_TYPE system (see above).
|
||||||
|
|
||||||
|
Added missing help for cp, calcpath, and stoponerror.
|
||||||
|
|
||||||
|
Noted that calc fails the regression test (and will crash at
|
||||||
|
various times) when compiled with gcc v4.1.0. This problem was
|
||||||
|
first reported under Fedora Core 5 by Christian Siebert.
|
||||||
|
|
||||||
|
Set the LESSCHARSET to iso8859 so that less will not confuse or
|
||||||
|
upset the col utility with Invalid or incomplete multi-byte or wide
|
||||||
|
characters.
|
||||||
|
|
||||||
|
Updated the Free Software Foundation postal address and updated
|
||||||
|
the COPYING-LGPL from http://www.fsf.org/licensing/licenses/lgpl.txt
|
||||||
|
on 2007-Mar-14. Calc is using the same Version 2.1 of the LGPL,
|
||||||
|
only the postal address of the Free Software Foundation has
|
||||||
|
been updated. All source files were updated to RCS level 30.
|
||||||
|
Thanks goes to Martin Buck (m at rtin-buck dor de) for this patch.
|
||||||
|
|
||||||
|
Added printf arg checking for GNU C compilers that helps check
|
||||||
|
printf-style functions in calc. Thanks goes to Martin Buck (m at
|
||||||
|
rtin-buck dor de) for this patch.
|
||||||
|
|
||||||
|
Fixed issues where the argument of a printf-like did not match the
|
||||||
|
format type.
|
||||||
|
|
||||||
|
Removed build function md5(). The MD5 hash has been compromised to
|
||||||
|
such a degree that is it no longer advisable to use this function.
|
||||||
|
|
||||||
|
Removed build function sha(). The SHA hash has been compromised to
|
||||||
|
such a degree that is it no longer advisable to use this function.
|
||||||
|
Note that the SHA-1 hash has not been compromised to the same degree
|
||||||
|
and so this hash function remains.
|
||||||
|
|
||||||
|
Renamed shs1.c to sha1.c. Renamed shs1.h to sha1.h.
|
||||||
|
|
||||||
|
Added custom registers. The custom register function:
|
||||||
|
|
||||||
|
custom("register", 3)
|
||||||
|
|
||||||
|
returns the value of custom register 3. Custom registers, initialized
|
||||||
|
with 0, may take on any calc value:
|
||||||
|
|
||||||
|
custom("register", regnum, value)
|
||||||
|
|
||||||
|
Added REGNUM_MAX to the sysinfo custom function to return the maximum
|
||||||
|
register number:
|
||||||
|
|
||||||
|
custom("sysinfo", "REGNUM_MAX")
|
||||||
|
|
||||||
|
which defaults to 31. The first custom register is 0 and thus the
|
||||||
|
default number of custom registers is 32.
|
||||||
|
|
||||||
|
Added E_OK #define in calc.h to indicate no error (0).
|
||||||
|
|
||||||
|
Renamed C function powivalue() in value.c to powvalue() because it
|
||||||
|
now handles raising NUMBER or COMPLEX to a NUMBER or COMPLEX power.
|
||||||
|
|
||||||
|
The powervalue() function in value.c may be given a NULL epsilon
|
||||||
|
which will cause to the builtin epsilon value to be used.
|
||||||
|
|
||||||
|
Calc supports both real and complex exponentiation bases and exponents.
|
||||||
|
For a ^ b and a ** b, "a" and "b" can be a real value or a complex value:
|
||||||
|
|
||||||
|
2^3 3i^4
|
||||||
|
2.5 ^ 3.5 0.5i ^ 0.25
|
||||||
|
2.5 ^ 2.718i 3.13145i ^ 0.30103i
|
||||||
|
|
||||||
|
Fixed typos in the calc man page thanks to a Debian bug report
|
||||||
|
by A. Costa <agcosta at gis dot .net> that wsa kindly forwarded
|
||||||
|
to us by Martin Buck <m at rtin-buck dot de>.
|
||||||
|
|
||||||
|
|
||||||
|
The following are the changes from calc version 2.12.1.8 to 2.12.1.9:
|
||||||
|
|
||||||
|
Fixed calc cscripts that contained comments that were not valid calc
|
||||||
|
comments. Improved calc comment documentation in "help unexpected"
|
||||||
|
to help other avoid similar mistakes. Calc comments are of the form:
|
||||||
|
|
||||||
|
/* c style comments */
|
||||||
|
/*
|
||||||
|
* multi-line
|
||||||
|
* comments
|
||||||
|
*/
|
||||||
|
## two or more #-signs
|
||||||
|
### in a row
|
||||||
|
### Note that # along is a calc unary and binary operator
|
||||||
|
|
||||||
|
Added "help pound" or "help #' to document the # operator, comments,
|
||||||
|
and the first line of cscript files.
|
||||||
|
|
||||||
|
Documented these help commands in "help help":
|
||||||
|
|
||||||
|
help ->
|
||||||
|
help *
|
||||||
|
help .
|
||||||
|
help %
|
||||||
|
help //
|
||||||
|
help #
|
||||||
|
|
||||||
|
The usage help file is now formed from the contents of the calc man page.
|
||||||
|
So "help usage" prints the version of the calc man page. Added ${COL}
|
||||||
|
makefile symbol to support the formation of the calc.usage file from
|
||||||
|
calc.1 via the CALCPAGER (less) or NROFF (if NROFF is non-empty).
|
||||||
|
|
||||||
|
The "help calc" command is now equivalent to "help help".
|
||||||
|
|
||||||
|
The "help define" command is now equivalent to "help command".
|
||||||
|
|
||||||
|
Fixed calc command line usage message.
|
||||||
|
|
||||||
|
Fixed missing README.src file in RPM src and tgz src tarball.
|
||||||
|
|
||||||
|
Removed HAVE_SNPRINTF test in version.c. We now assume that
|
||||||
|
all systems come with the standard snprintf() library function.
|
||||||
|
|
||||||
|
Make does not assume that DONT_HAVE_VSPRINTF must be defined in
|
||||||
|
order to test for varargs (via have_varvs.c). Instead it uses the
|
||||||
|
${HAVE_VSPRINTF} to determine if the vsprintf() and vsnprintf()
|
||||||
|
should be tested to assumed to exist or not exist.
|
||||||
|
|
||||||
|
Tests for the existence of vsprintf() now also require the existence
|
||||||
|
of vsnprintf(). Test for the existence of vsnprintf() now also
|
||||||
|
require the existence of vsprintf().
|
||||||
|
|
||||||
|
The #define CALC_SIZE_T was never used except when memmove() was
|
||||||
|
not found. This symbol was renamed to MEMMOVE_SIZE_T. Calc
|
||||||
|
requires that size_t must be a known type.
|
||||||
|
|
||||||
|
Calc and cscripts are installed mode 0755 instead of 0555 to
|
||||||
|
make rpmlint happy.
|
||||||
|
|
||||||
|
Make clobber cleanup as suggested by Martin Buck <m at rtin-buck dot de>.
|
||||||
|
The clobber rule now depends on the clean rule.
|
||||||
|
|
||||||
|
|
||||||
|
The following are the changes from calc version 2.12.1.6 to 2.12.1.7:
|
||||||
|
|
||||||
|
Added the calc builtin function, usertime(), to return the amount of
|
||||||
|
user CPU time used by the current process. Unlike the old runtime()
|
||||||
|
builtin, the CPU time reported for long running processes will not
|
||||||
|
wrap around to 0 after only a few months.
|
||||||
|
|
||||||
|
Added the calc built0in function, systime(), to return the amount of
|
||||||
|
kernel CPU time used by the current process.
|
||||||
|
|
||||||
|
The runtime() builtin function now returns the total amount of CPU
|
||||||
|
time used by the current process. This time includes both user mode
|
||||||
|
and kernel mode time. Unlike the old runtime() builtin, the builtin
|
||||||
|
includes time spent executing operating system code on behalf of
|
||||||
|
the current process.
|
||||||
|
|
||||||
|
Fixed runtime() so that the CPU time reported for long running
|
||||||
|
processes will wrap around to 0 for a long time.
|
||||||
|
|
||||||
|
Added config("hz") to return the clock tick rate. This is
|
||||||
|
a read-only configuration value.
|
||||||
|
|
||||||
|
Added regression tests for recently added config() parameters.
|
||||||
|
|
||||||
|
Fixed the #define symbols that were created in have_strdup.h.
|
||||||
|
Previously this file looked as if have_rusage.h has been
|
||||||
|
included already.
|
||||||
|
|
||||||
|
Restored the function of "help" (without any args) printing the
|
||||||
|
default help file. Thanks for this fix goes to Silvan Minghetti
|
||||||
|
<bullet at users dot sourceforge dot net>.
|
||||||
|
|
||||||
|
Fixed a problem where some old MS environments failed some of the
|
||||||
|
regression tests because "read -once foo.cal" was not behaving
|
||||||
|
correctly due to how the _fullpath() was being called. Thanks for
|
||||||
|
this fix goes to Anatoly <notexistent-anb at yandex dot ru>.
|
||||||
|
|
||||||
|
Documented the mis-feature about how calc parses if, for, while
|
||||||
|
and do statements in an unexpected way. For example:
|
||||||
|
|
||||||
|
This works as expected:
|
||||||
|
|
||||||
|
if (expr) {
|
||||||
|
...
|
||||||
|
}
|
||||||
|
|
||||||
|
However this WILL NOT WORK AS EXPECTED:
|
||||||
|
|
||||||
|
if (expr)
|
||||||
|
{
|
||||||
|
...
|
||||||
|
}
|
||||||
|
|
||||||
|
because calc will parse the if being terminated by
|
||||||
|
an empty statement followed by a
|
||||||
|
|
||||||
|
if (expr) ;
|
||||||
|
{
|
||||||
|
...
|
||||||
|
}
|
||||||
|
|
||||||
|
See also "help statement", "help unexpected", "help todo", and
|
||||||
|
"help bugs".
|
||||||
|
|
||||||
|
|
||||||
|
The following are the changes from calc version 2.12.1 to 2.12.1.5:
|
||||||
|
|
||||||
Fixed minor typos in the 'version 2.12.0 to 2.12.0.8' section below.
|
Fixed minor typos in the 'version 2.12.0 to 2.12.0.8' section below.
|
||||||
Made minor formatting changes as well.
|
Made minor formatting changes as well.
|
||||||
|
|
||||||
Changed use of ${Q} in the Makefile to avoid an make "feature"
|
Changed use of ${Q} in the Makefile to avoid an make "feature"
|
||||||
related to OpenBSD.
|
related to OpenBSD. Added ${RM} make variable for make tools that
|
||||||
|
do not have builtin defined terms.
|
||||||
|
|
||||||
|
Removed the ECHO_PROG Makefile variable. Also removed it from
|
||||||
|
the sysinfo() custom function.
|
||||||
|
|
||||||
|
Improved the support for cross-compiled environments by using
|
||||||
|
make symbols for all non-shell commands executed by Makefiles.
|
||||||
|
|
||||||
|
Fixed a problem with the make chk awk script which failed under
|
||||||
|
OS X 10.4.7.
|
||||||
|
|
||||||
|
Fixed a few minor variables that were not set to default values in
|
||||||
|
lower level Makefiles.
|
||||||
|
|
||||||
|
Fixed a reference to a non-existent make variable in HOWTO.INSTALL.
|
||||||
|
|
||||||
|
|
||||||
The following are the changes from calc version 2.12.0 to 2.12.0.8:
|
The following are the changes from calc version 2.12.0 to 2.12.0.8:
|
||||||
@@ -2566,8 +3162,6 @@ The following are the changes from calc version 2.10.3t5.38 to 2.11.3t5.46:
|
|||||||
into a single section.
|
into a single section.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
The following are the changes from calc version 2.10.3t5.34 to 2.10.3t5.37:
|
The following are the changes from calc version 2.10.3t5.34 to 2.10.3t5.37:
|
||||||
|
|
||||||
Per request from David I Bell, the README line:
|
Per request from David I Bell, the README line:
|
||||||
@@ -6199,10 +6793,10 @@ Following is a list of visible changes to calc from version 1.24.7 to 1.26.1:
|
|||||||
## A copy of version 2.1 of the GNU Lesser General Public License is
|
## 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
|
## distributed with calc under the filename COPYING-LGPL. You should have
|
||||||
## received a copy with calc; if not, write to Free Software Foundation, Inc.
|
## received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||||
## 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
## 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
##
|
##
|
||||||
## @(#) $Revision: 29.87 $
|
## @(#) $Revision: 30.20 $
|
||||||
## @(#) $Id: CHANGES,v 29.87 2006/09/17 23:50:45 chongo Exp $
|
## @(#) $Id: CHANGES,v 30.20 2010/09/02 06:36:48 chongo Exp $
|
||||||
## @(#) $Source: /usr/local/src/cmd/calc/RCS/CHANGES,v $
|
## @(#) $Source: /usr/local/src/cmd/calc/RCS/CHANGES,v $
|
||||||
##
|
##
|
||||||
## Under source code control: 1993/06/02 18:12:57
|
## Under source code control: 1993/06/02 18:12:57
|
||||||
|
24
COPYING
24
COPYING
@@ -6,14 +6,14 @@ This file is Copyrighted
|
|||||||
|
|
||||||
This file is covered under the following Copyright:
|
This file is covered under the following Copyright:
|
||||||
|
|
||||||
Copyright (C) 1999 Landon Curt Noll
|
Copyright (C) 1999-2008 Landon Curt Noll
|
||||||
All rights reserved.
|
All rights reserved.
|
||||||
|
|
||||||
Everyone is permitted to copy and distribute verbatim copies
|
Everyone is permitted to copy and distribute verbatim copies
|
||||||
of this license document, but changing it is not allowed.
|
of this license document, but changing it is not allowed.
|
||||||
|
|
||||||
# @(#) $Revision: 29.8 $
|
# @(#) $Revision: 30.2 $
|
||||||
# @(#) $Id: COPYING,v 29.8 2006/05/01 19:16:57 chongo Exp $
|
# @(#) $Id: COPYING,v 30.2 2008/10/24 10:46:52 chongo Exp $
|
||||||
# @(#) $Source: /usr/local/src/cmd/calc/RCS/COPYING,v $
|
# @(#) $Source: /usr/local/src/cmd/calc/RCS/COPYING,v $
|
||||||
|
|
||||||
=-=
|
=-=
|
||||||
@@ -45,12 +45,12 @@ Calc is covered by the GNU Lesser General Public License
|
|||||||
Public License by the calc command: help copying-lgpl
|
Public License by the calc command: help copying-lgpl
|
||||||
|
|
||||||
You should have received a copy of the version 2.1 GNU Lesser General
|
You should have received a copy of the version 2.1 GNU Lesser General
|
||||||
Public License with calc; if not, write to:
|
Public License with calc; if not, write to the following address:
|
||||||
|
|
||||||
Free Software Foundation, Inc.
|
Free Software Foundation, Inc.
|
||||||
59 Temple Place
|
51 Franklin Street
|
||||||
Suite 330
|
Fifth Floor
|
||||||
Boston, MA 02111-1307
|
Boston, MA 02110-1301
|
||||||
USA
|
USA
|
||||||
|
|
||||||
The contact addresses for calc is as follows:
|
The contact addresses for calc is as follows:
|
||||||
@@ -168,9 +168,8 @@ Calc copyrights and exception files
|
|||||||
|
|
||||||
These files are not covered under one of the Copyrights listed above:
|
These files are not covered under one of the Copyrights listed above:
|
||||||
|
|
||||||
shs1.c shs1.h shs.c shs.h
|
sha1.c sha1.h COPYING
|
||||||
md5.c md5.h COPYING COPYING-LGPL
|
COPYING-LGPL cal/qtime.cal cal/screen.cal
|
||||||
cal/qtime.cal cal/screen.cal
|
|
||||||
|
|
||||||
The file COPYING-LGPL, which contains a copy of the version 2.1
|
The file COPYING-LGPL, which contains a copy of the version 2.1
|
||||||
GNU Lesser General Public License, is itself Copyrighted by the
|
GNU Lesser General Public License, is itself Copyrighted by the
|
||||||
@@ -182,9 +181,8 @@ Calc copyrights and exception files
|
|||||||
top of this file. It is important to note that you may distribute
|
top of this file. It is important to note that you may distribute
|
||||||
verbatim copies of this file but you may not modify this file.
|
verbatim copies of this file but you may not modify this file.
|
||||||
|
|
||||||
Some of these exception files are in the public domain. Other
|
Some of these exception files are in the public domain. Other files
|
||||||
exception files have non-LGPL Copyrights. Other files are under a
|
are under the LGPL but have different authors that those listed above.
|
||||||
LGPL Copyright but have different authors.
|
|
||||||
|
|
||||||
In all cases one may use and distribute these exception files freely.
|
In all cases one may use and distribute these exception files freely.
|
||||||
And because one may freely distribute the LGPL covered files, the
|
And because one may freely distribute the LGPL covered files, the
|
||||||
|
@@ -2,7 +2,7 @@
|
|||||||
Version 2.1, February 1999
|
Version 2.1, February 1999
|
||||||
|
|
||||||
Copyright (C) 1991, 1999 Free Software Foundation, Inc.
|
Copyright (C) 1991, 1999 Free Software Foundation, Inc.
|
||||||
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
|
||||||
Everyone is permitted to copy and distribute verbatim copies
|
Everyone is permitted to copy and distribute verbatim copies
|
||||||
of this license document, but changing it is not allowed.
|
of this license document, but changing it is not allowed.
|
||||||
|
|
||||||
@@ -476,7 +476,7 @@ convey the exclusion of warranty; and each file should have at least the
|
|||||||
This library is free software; you can redistribute it and/or
|
This library is free software; you can redistribute it and/or
|
||||||
modify it under the terms of the GNU Lesser General Public
|
modify it under the terms of the GNU Lesser General Public
|
||||||
License as published by the Free Software Foundation; either
|
License as published by the Free Software Foundation; either
|
||||||
version 2 of the License, or (at your option) any later version.
|
version 2.1 of the License, or (at your option) any later version.
|
||||||
|
|
||||||
This library is distributed in the hope that it will be useful,
|
This library is distributed in the hope that it will be useful,
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
@@ -485,7 +485,7 @@ convey the exclusion of warranty; and each file should have at least the
|
|||||||
|
|
||||||
You should have received a copy of the GNU Lesser General Public
|
You should have received a copy of the GNU Lesser General Public
|
||||||
License along with this library; if not, write to the Free Software
|
License along with this library; if not, write to the Free Software
|
||||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
|
||||||
|
|
||||||
Also add information on how to contact you by electronic and paper mail.
|
Also add information on how to contact you by electronic and paper mail.
|
||||||
|
|
||||||
|
@@ -1,4 +1,4 @@
|
|||||||
Installing calc from the gziped tarball in 4 easy steps:
|
Installing calc from the bzip2-ed tarball in 4 easy steps:
|
||||||
|
|
||||||
0) If your platform supports i686 RPMs, you may want to go to:
|
0) If your platform supports i686 RPMs, you may want to go to:
|
||||||
|
|
||||||
@@ -17,16 +17,30 @@ Installing calc from the gziped tarball in 4 easy steps:
|
|||||||
|
|
||||||
The following 4 steps apply to calc source tree that comes from either:
|
The following 4 steps apply to calc source tree that comes from either:
|
||||||
|
|
||||||
gunzip -c calc-*.tar.gz | tar -xvf -
|
bunzip2 -c calc-*.tar.bz2 | tar -xvf -
|
||||||
|
|
||||||
or from:
|
or from:
|
||||||
|
|
||||||
rpm -ivh calc-*.src.rpm
|
rpm -ivh calc-*.src.rpm
|
||||||
cd /var/tmp
|
cd /var/tmp
|
||||||
gunzip -c /usr/src/redhat/SOURCES/calc-*.tar.gz | tar -xvf -
|
bunzip2 -c /usr/src/redhat/SOURCES/calc-*.tar.bz2 | tar -xvf -
|
||||||
|
|
||||||
1) Look at the makefile, and adjust it to suit your needs.
|
1) Look at the makefile, and adjust it to suit your needs.
|
||||||
|
|
||||||
|
The top level Makefile and the custom/Makefile require a GNU
|
||||||
|
Make (such as gmake) or an equivalently advanced make. On many
|
||||||
|
targets, the default make is sufficent. On FreeBSD for example,
|
||||||
|
one must use gmake instead of make.
|
||||||
|
|
||||||
|
If your target system does not have GNU Make (or equivalent), then
|
||||||
|
you should try using the Makefile.simple and custom/Makefile.simple
|
||||||
|
files:
|
||||||
|
|
||||||
|
mv Makefile Makefile.gmake
|
||||||
|
cp Makefile.simple Makefile
|
||||||
|
mv custom/Makefile custom/Makefile.gmake
|
||||||
|
cp custom/Makefile.simple custom/Makefile
|
||||||
|
|
||||||
The Makefile, as shipped, is suitable for installation under
|
The Makefile, as shipped, is suitable for installation under
|
||||||
Linux and Un*x-like environments. For the most part, the default
|
Linux and Un*x-like environments. For the most part, the default
|
||||||
values should work. If in doubt, follow the 'When in doubt'
|
values should work. If in doubt, follow the 'When in doubt'
|
||||||
@@ -52,14 +66,14 @@ Installing calc from the gziped tarball in 4 easy steps:
|
|||||||
CALC_INCDIR where the calc include files are installed
|
CALC_INCDIR where the calc include files are installed
|
||||||
CUSTOMCALDIR where custom *.cal files are installed
|
CUSTOMCALDIR where custom *.cal files are installed
|
||||||
CUSTOMHELPDIR where custom help files are installed
|
CUSTOMHELPDIR where custom help files are installed
|
||||||
CUSTOMINCPDIR where custom .h files are installed
|
CUSTOMINCDIR where custom .h files are installed
|
||||||
SCRIPTDIR where calc shell scripts are installed
|
SCRIPTDIR where calc shell scripts are installed
|
||||||
|
|
||||||
If you want to install calc files under a top level directory,
|
If you want to install calc files under a top level directory,
|
||||||
then set the T value:
|
then set the T value:
|
||||||
|
|
||||||
The calc install is performed under $T, the calc build is
|
The calc install is performed under ${T}, the calc build is
|
||||||
performed under /. The purpose for $T is to allow someone
|
performed under /. The purpose for ${T} is to allow someone
|
||||||
to install calc somewhere other than into the system area.
|
to install calc somewhere other than into the system area.
|
||||||
|
|
||||||
For example, if:
|
For example, if:
|
||||||
@@ -79,10 +93,10 @@ Installing calc from the gziped tarball in 4 easy steps:
|
|||||||
calc help, .cal ...: /var/tmp/testing/usr/share/calc
|
calc help, .cal ...: /var/tmp/testing/usr/share/calc
|
||||||
... etc ... /var/tmp/testing/...
|
... etc ... /var/tmp/testing/...
|
||||||
|
|
||||||
If $T is empty, calc is installed under /, which is the same
|
If ${T} is empty, calc is installed under /, which is the same
|
||||||
top of tree for which it was built. If $T is non-empty, then
|
top of tree for which it was built. If ${T} is non-empty, then
|
||||||
calc is installed under $T, as if one had to chroot under
|
calc is installed under ${T}, as if one had to chroot under
|
||||||
$T for calc to operate.
|
${T} for calc to operate.
|
||||||
|
|
||||||
Look for the section that starts:
|
Look for the section that starts:
|
||||||
|
|
||||||
@@ -126,12 +140,36 @@ Installing calc from the gziped tarball in 4 easy steps:
|
|||||||
|
|
||||||
2) build calc:
|
2) build calc:
|
||||||
|
|
||||||
|
The top level Makefile and the custom/Makefile require a GNU
|
||||||
|
Make (such as gmake) or an equivalently advanced make. On many
|
||||||
|
targets, the default make is sufficent. On FreeBSD for example,
|
||||||
|
one must use gmake instead of make.
|
||||||
|
|
||||||
|
If your target system does not have GNU Make (or equivalent), then
|
||||||
|
you should try using the Makefile.simple and custom/Makefile.simple
|
||||||
|
files:
|
||||||
|
|
||||||
|
mv Makefile Makefile.gmake
|
||||||
|
cp Makefile.simple Makefile
|
||||||
|
mv custom/Makefile custom/Makefile.gmake
|
||||||
|
cp custom/Makefile.simple custom/Makefile
|
||||||
|
|
||||||
make all
|
make all
|
||||||
|
|
||||||
==> We are interested in any compiler warnings (and errors) that
|
==> We are interested in any compiler warnings (and errors) that
|
||||||
you may find. See the BUGS file if you find any compiler
|
you may find. See the BUGS file if you find any compiler
|
||||||
warning or errors.
|
warning or errors.
|
||||||
|
|
||||||
|
NOTE: You can force calc to build with only static libs:
|
||||||
|
|
||||||
|
make clobber
|
||||||
|
make calc-static-only BLD_TYPE=calc-static-only
|
||||||
|
|
||||||
|
or force calc to build with only dynamic libs:
|
||||||
|
|
||||||
|
make clobber
|
||||||
|
make calc-dynamic-only BLD_TYPE=calc-dynamic-only
|
||||||
|
|
||||||
3) test calc:
|
3) test calc:
|
||||||
|
|
||||||
make check
|
make check
|
||||||
@@ -139,6 +177,10 @@ Installing calc from the gziped tarball in 4 easy steps:
|
|||||||
==> If you run into problems, read the BUGS file and follow
|
==> If you run into problems, read the BUGS file and follow
|
||||||
the instructions found in there.
|
the instructions found in there.
|
||||||
|
|
||||||
|
NOTE: For a quiet check which only prints if something goes wrong:
|
||||||
|
|
||||||
|
make chk
|
||||||
|
|
||||||
4) install calc:
|
4) install calc:
|
||||||
|
|
||||||
make install
|
make install
|
||||||
@@ -146,7 +188,7 @@ Installing calc from the gziped tarball in 4 easy steps:
|
|||||||
We suggest that you might want to read the README file and look at
|
We suggest that you might want to read the README file and look at
|
||||||
the calc help subsystem. See the README file for details.
|
the calc help subsystem. See the README file for details.
|
||||||
|
|
||||||
## Copyright (C) 1999 Landon Curt Noll
|
## Copyright (C) 1999-2007 Landon Curt Noll
|
||||||
##
|
##
|
||||||
## Calc is open software; you can redistribute it and/or modify it under
|
## 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
|
## the terms of the version 2.1 of the GNU Lesser General Public License
|
||||||
@@ -160,10 +202,10 @@ the calc help subsystem. See the README file for details.
|
|||||||
## A copy of version 2.1 of the GNU Lesser General Public License is
|
## 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
|
## distributed with calc under the filename COPYING-LGPL. You should have
|
||||||
## received a copy with calc; if not, write to Free Software Foundation, Inc.
|
## received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||||
## 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
## 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
##
|
##
|
||||||
## @(#) $Revision: 29.7 $
|
## @(#) $Revision: 30.6 $
|
||||||
## @(#) $Id: HOWTO.INSTALL,v 29.7 2003/04/15 03:38:34 chongo Exp $
|
## @(#) $Id: HOWTO.INSTALL,v 30.6 2007/10/16 12:22:22 chongo Exp $
|
||||||
## @(#) $Source: /usr/local/src/cmd/calc/RCS/HOWTO.INSTALL,v $
|
## @(#) $Source: /usr/local/src/cmd/calc/RCS/HOWTO.INSTALL,v $
|
||||||
##
|
##
|
||||||
## Under source code control: 1999/09/27 20:48:44
|
## Under source code control: 1999/09/27 20:48:44
|
||||||
|
251
LIBRARY
251
LIBRARY
@@ -58,13 +58,18 @@ External programs most likely want to use the installed calc header
|
|||||||
files under ${INCDIRCALC}. External programs most likely NOT want
|
files under ${INCDIRCALC}. External programs most likely NOT want
|
||||||
to define CALC_SRC.
|
to define CALC_SRC.
|
||||||
|
|
||||||
|
You need to include the following file to get the symbols and variables
|
||||||
|
related to error handling:
|
||||||
|
|
||||||
|
lib_calc.h
|
||||||
|
|
||||||
External programs may want to compile with:
|
External programs may want to compile with:
|
||||||
|
|
||||||
-L${LIBDIR} -lcalc
|
-I${INCDIR} -L${LIBDIR} -lcalc
|
||||||
|
|
||||||
If custom functions are also used, they may want to compile with:
|
If custom functions are also used, they may want to compile with:
|
||||||
|
|
||||||
-L${LIBDIR} -lcalc -lcustcalc
|
-I${INCDIR} -L${LIBDIR} -lcalc -lcustcalc
|
||||||
|
|
||||||
The CALC_SRC symbol should NOT be defined by default. However if you are
|
The CALC_SRC symbol should NOT be defined by default. However if you are
|
||||||
feeling pedantic you may want to force CALC_SRC to be undefined:
|
feeling pedantic you may want to force CALC_SRC to be undefined:
|
||||||
@@ -73,71 +78,215 @@ feeling pedantic you may want to force CALC_SRC to be undefined:
|
|||||||
|
|
||||||
as well.
|
as well.
|
||||||
|
|
||||||
--------------
|
-------------------
|
||||||
ERROR HANDLING
|
MATH ERROR HANDLING
|
||||||
--------------
|
-------------------
|
||||||
|
|
||||||
Your program MUST provide a function called math_error. This is called by
|
The math_error() function is called by the math routines on an error
|
||||||
the math routines on an error condition, such as malloc failures or a
|
condition, such as malloc failures, division by zero, or some form of
|
||||||
division by zero. The routine is called in the manner of printf, with a
|
an internal computation error. The routine is called in the manner of
|
||||||
format string and optional arguments. (However, none of the low level math
|
printf, with a format string and optional arguments:
|
||||||
routines currently uses formatting, so if you are lazy you can simply use
|
|
||||||
the first argument as a simple error string.) For example, one of the
|
|
||||||
error calls you might expect to receive is:
|
|
||||||
|
|
||||||
math_error("Division by zero");
|
void math_error(char *fmt, ...);
|
||||||
|
|
||||||
Your program can handle errors in basically one of two ways. Firstly, it
|
Your program must handle math errors in one of three ways:
|
||||||
can simply print the error message and then exit. Secondly, you can make
|
|
||||||
use of setjmp and longjmp in your program. Use setjmp at some appropriate
|
|
||||||
level in your program, and use longjmp in the math_error routine to return
|
|
||||||
to that level and so recover from the error. This is what the calc program
|
|
||||||
does.
|
|
||||||
|
|
||||||
For convenience, the link library libcalc.a contains a math_error routine.
|
1) Print the error message and then exit
|
||||||
By default, this routine simply prints a message to stderr and then exits.
|
|
||||||
By simply linking in this link library, any calc errors will result in a
|
|
||||||
error message on stderr followed by an exit.
|
|
||||||
|
|
||||||
External programs that wish to use this math_error may want to compile with:
|
There is a math_error() function supplied with the calc library.
|
||||||
|
By default, this routine simply prints a message to stderr and
|
||||||
|
then exits. By simply linking in this link library, any calc
|
||||||
|
errors will result in a error message on stderr followed by
|
||||||
|
an exit.
|
||||||
|
|
||||||
-I${LIBDIR} -L${LIBDIR} -lcalc
|
2) Use setjmp and longjmp in your program
|
||||||
|
|
||||||
If one sets up calc_jmp_buf, and then sets calc_jmp to non-zero then
|
Use setjmp at some appropriate level in your program, and let
|
||||||
this routine will longjmp back (with the value of calc_jmp) instead.
|
the longjmp in math_error() return to that level and to allow you
|
||||||
In addition, the last calc error message will be found in calc_error;
|
to recover from the error. This is what the calc program does.
|
||||||
this error is not printed to stderr. The calc error message will
|
|
||||||
not have a trailing newline.
|
|
||||||
|
|
||||||
For example:
|
If one sets up calc_matherr_jmpbuf, and then sets
|
||||||
|
calc_use_matherr_jmpbuf to non-zero then math_error() will
|
||||||
|
longjmp back with the return value of calc_use_matherr_jmpbuf.
|
||||||
|
In addition, the last calc error message will be found in
|
||||||
|
calc_err_msg; this error is not printed to stderr. The calc
|
||||||
|
error message will not have a trailing newline.
|
||||||
|
|
||||||
#include <setjmp.h>
|
For example:
|
||||||
|
|
||||||
extern jmp_buf calc_jmp_buf;
|
#include <setjmp.h>
|
||||||
extern int calc_jmp;
|
#include "lib_calc.h"
|
||||||
extern char *calc_error;
|
|
||||||
int error;
|
|
||||||
|
|
||||||
...
|
int error;
|
||||||
|
|
||||||
if ((error = setjmp(calc_jmp_buf)) != 0) {
|
...
|
||||||
|
|
||||||
/* reinitialize calc after a longjmp */
|
if ((error = setjmp(calc_matherr_jmpbuf)) != 0) {
|
||||||
reinitialize();
|
|
||||||
|
/* report the error */
|
||||||
|
printf("Ouch: %s\n", calc_err_msg);
|
||||||
|
|
||||||
|
/* reinitialize calc after the longjmp */
|
||||||
|
reinitialize();
|
||||||
|
}
|
||||||
|
calc_use_matherr_jmpbuf = 1;
|
||||||
|
|
||||||
|
If calc_use_matherr_jmpbuf is non-zero, then the jmp_buf value
|
||||||
|
calc_matherr_jmpbuf must be initialized by the setjmp() function
|
||||||
|
or your program will crash.
|
||||||
|
|
||||||
|
3) Supply your own math_error function:
|
||||||
|
|
||||||
|
void math_error(char *fmt, ...);
|
||||||
|
|
||||||
|
Your math_error() function may exit or transfer control to outside
|
||||||
|
of the calc library, but it must never return or calc will crash.
|
||||||
|
|
||||||
|
External programs can obtain the appropriate calc symbols by compiling with:
|
||||||
|
|
||||||
|
-I${INCDIR} -L${LIBDIR} -lcalc
|
||||||
|
|
||||||
|
-------------------------
|
||||||
|
PARSE/SCAN ERROR HANDLING
|
||||||
|
-------------------------
|
||||||
|
|
||||||
|
The scanerror() function is called when calc encounters a parse/scan
|
||||||
|
error. For example, scanerror() is called when calc is given code
|
||||||
|
with a syntax error.
|
||||||
|
|
||||||
|
The variable, calc_print_scanerr_msg, controls if calc prints to stderr,
|
||||||
|
any parse/scan errors. By default, this variable it set to 1 and so
|
||||||
|
parse/scan errors are printed to stderr. By setting this value to zero,
|
||||||
|
parse/scan errors are not printed:
|
||||||
|
|
||||||
|
#include "lib_calc.h"
|
||||||
|
|
||||||
|
/* do not print parse/scan errors to stderr */
|
||||||
|
calc_print_scanerr_msg = 0;
|
||||||
|
|
||||||
|
The last calc math error or calc parse/scan error message is kept
|
||||||
|
in the NUL terminated buffer:
|
||||||
|
|
||||||
|
char calc_err_msg[MAXERROR+1];
|
||||||
|
|
||||||
|
The value of calc_print_scanerr_msg does not change the use
|
||||||
|
of the calc_err_msg[] buffer. Messages are stored in that
|
||||||
|
buffer regardless of the calc_print_scanerr_msg value.
|
||||||
|
|
||||||
|
The calc_print_scanerr_msg and the calc_err_msg[] buffer are declared
|
||||||
|
lib_calc.h include file. The initialized storage for these variables
|
||||||
|
comes from the calc library. The MAXERROR symbol is also declared in
|
||||||
|
the lib_calc.h include file.
|
||||||
|
|
||||||
|
Your program must handle parse/scan errors in one of two ways:
|
||||||
|
|
||||||
|
1) exit on error
|
||||||
|
|
||||||
|
If you do not setup the calc_scanerr_jmpbuf, then when calc
|
||||||
|
encounters a parse/scan error, a message will be printed to
|
||||||
|
stderr and calc will exit.
|
||||||
|
|
||||||
|
2) Use setjmp and longjmp in your program
|
||||||
|
|
||||||
|
Use setjmp at some appropriate level in your program, and let
|
||||||
|
the longjmp in scanerror() return to that level and to allow you
|
||||||
|
to recover from the error. This is what the calc program does.
|
||||||
|
|
||||||
|
If one sets up calc_scanerr_jmpbuf, and then sets
|
||||||
|
calc_use_scanerr_jmpbuf to non-zero then scanerror() will longjmp
|
||||||
|
back with the return with a non-zero code. In addition, the last
|
||||||
|
calc error message will be found in calc_err_msg[]; this error is
|
||||||
|
not printed to stderr. The calc error message will not have a
|
||||||
|
trailing newline.
|
||||||
|
|
||||||
|
For example:
|
||||||
|
|
||||||
|
#include <setjmp.h>
|
||||||
|
#include "lib_calc.h"
|
||||||
|
|
||||||
|
int scan_error;
|
||||||
|
|
||||||
|
...
|
||||||
|
|
||||||
|
/* delay the printing of the parse/scan error */
|
||||||
|
calc_use_scanerr_jmpbuf = 0; /* this is optional */
|
||||||
|
|
||||||
|
if ((scan_error = setjmp(calc_scanerr_jmpbuf)) != 0) {
|
||||||
|
|
||||||
|
/* report the parse/scan */
|
||||||
|
if (calc_use_scanerr_jmpbuf == 0) {
|
||||||
|
printf("parse error: %s\n", calc_err_msg);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* initialize calc after the longjmp */
|
||||||
|
initialize();
|
||||||
|
}
|
||||||
|
calc_use_scanerr_jmpbuf = 1;
|
||||||
|
|
||||||
|
If calc_use_scanerr_jmpbuf is non-zero, then the jmp_buf value
|
||||||
|
calc_scanerr_jmpbuf must be initialized by the setjmp() function
|
||||||
|
or your program will crash.
|
||||||
|
|
||||||
|
External programs can obtain the appropriate calc symbols by compiling with:
|
||||||
|
|
||||||
|
-I${INCDIR} -L${LIBDIR} -lcalc
|
||||||
|
|
||||||
|
---------------------------
|
||||||
|
PARSE/SCAN WARNING HANDLING
|
||||||
|
---------------------------
|
||||||
|
|
||||||
|
Calc parse/scan warning message are printed to stderr by the warning()
|
||||||
|
function. The routine is called in the manner of printf, with a format
|
||||||
|
string and optional arguments:
|
||||||
|
|
||||||
|
void warning(char *fmt, ...);
|
||||||
|
|
||||||
|
The variable, calc_print_scanwarn_msg, controls if calc prints to stderr,
|
||||||
|
any parse/scan warnings. By default, this variable it set to 1 and so
|
||||||
|
parse/scan warnings are printed to stderr. By setting this value to zero,
|
||||||
|
parse/scan warnings are not printed:
|
||||||
|
|
||||||
|
#include "lib_calc.h"
|
||||||
|
|
||||||
|
/* do not print parse/scan warnings to stderr */
|
||||||
|
calc_print_scanwarn_msg = 0;
|
||||||
|
|
||||||
|
The last calc calc parse/scan warning message is kept in the NUL
|
||||||
|
terminated buffer:
|
||||||
|
|
||||||
|
char calc_warn_msg[MAXERROR+1];
|
||||||
|
|
||||||
|
The value of calc_print_scanwarn_msg does not change the use
|
||||||
|
of the calc_warn_msg[] buffer. Messages are stored in that
|
||||||
|
buffer regardless of the calc_print_scanwarn_msg value.
|
||||||
|
|
||||||
|
Your program must handle parse/scan warnings in one of two ways:
|
||||||
|
|
||||||
|
1) print the warning to stderr and continue
|
||||||
|
|
||||||
|
The warning() from libcalc prints warning messages to
|
||||||
|
stderr and returns. The flow of execution is not changed.
|
||||||
|
This is what calc does by default.
|
||||||
|
|
||||||
|
2) Supply your own warning function:
|
||||||
|
|
||||||
|
void warning(char *fmt, ...);
|
||||||
|
|
||||||
|
Your warning function should simply return when it is finished.
|
||||||
|
|
||||||
|
External programs can obtain the appropriate calc symbols by compiling with:
|
||||||
|
|
||||||
|
-I${INCDIR} -L${LIBDIR} -lcalc
|
||||||
|
|
||||||
/* report the error */
|
|
||||||
printf("Ouch: %s\n", calc_error);
|
|
||||||
}
|
|
||||||
calc_jmp = 1;
|
|
||||||
|
|
||||||
---------------
|
---------------
|
||||||
OUTPUT ROUTINES
|
OUTPUT ROUTINES
|
||||||
---------------
|
---------------
|
||||||
|
|
||||||
The output from the routines in the link library normally goes to stdout. You
|
The output from the routines in the link library normally goes to stdout.
|
||||||
can divert that output to either another FILE handle, or else to a string.
|
You can divert that output to either another FILE handle, or else
|
||||||
Read the routines in zio.c to see what is available. Diversions can be
|
to a string. Read the routines in zio.c to see what is available.
|
||||||
nested.
|
Diversions can be nested.
|
||||||
|
|
||||||
You use math_setfp to divert output to another FILE handle. Calling
|
You use math_setfp to divert output to another FILE handle. Calling
|
||||||
math_setfp with stdout restores output to stdout.
|
math_setfp with stdout restores output to stdout.
|
||||||
@@ -487,10 +636,10 @@ need call libcalc_call_me_last() only once.
|
|||||||
## A copy of version 2.1 of the GNU Lesser General Public License is
|
## 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
|
## distributed with calc under the filename COPYING-LGPL. You should have
|
||||||
## received a copy with calc; if not, write to Free Software Foundation, Inc.
|
## received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||||
## 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
## 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
##
|
##
|
||||||
## @(#) $Revision: 29.5 $
|
## @(#) $Revision: 30.1 $
|
||||||
## @(#) $Id: LIBRARY,v 29.5 2001/06/08 22:57:35 chongo Exp $
|
## @(#) $Id: LIBRARY,v 30.1 2007/03/16 11:09:46 chongo Exp $
|
||||||
## @(#) $Source: /usr/local/src/cmd/calc/RCS/LIBRARY,v $
|
## @(#) $Source: /usr/local/src/cmd/calc/RCS/LIBRARY,v $
|
||||||
##
|
##
|
||||||
## Under source code control: 1993/07/30 19:44:49
|
## Under source code control: 1993/07/30 19:44:49
|
||||||
|
5603
Makefile.simple
Normal file
5603
Makefile.simple
Normal file
File diff suppressed because it is too large
Load Diff
6
README
6
README
@@ -132,10 +132,10 @@ The calc web site is located at:
|
|||||||
## A copy of version 2.1 of the GNU Lesser General Public License is
|
## 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
|
## distributed with calc under the filename COPYING-LGPL. You should have
|
||||||
## received a copy with calc; if not, write to Free Software Foundation, Inc.
|
## received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||||
## 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
## 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
##
|
##
|
||||||
## @(#) $Revision: 29.3 $
|
## @(#) $Revision: 30.1 $
|
||||||
## @(#) $Id: README,v 29.3 2001/06/01 11:26:53 chongo Exp $
|
## @(#) $Id: README,v 30.1 2007/03/16 11:09:46 chongo Exp $
|
||||||
## @(#) $Source: /usr/local/src/cmd/calc/RCS/README,v $
|
## @(#) $Source: /usr/local/src/cmd/calc/RCS/README,v $
|
||||||
##
|
##
|
||||||
## Under source code control: 1995/10/25 05:27:59
|
## Under source code control: 1995/10/25 05:27:59
|
||||||
|
140
README.WINDOWS
140
README.WINDOWS
@@ -10,6 +10,63 @@ NOTE: The main developers do not have access to a Windoz based platform.
|
|||||||
Of course you are welcome to send us any patches that fix your
|
Of course you are welcome to send us any patches that fix your
|
||||||
Windoz build environment.
|
Windoz build environment.
|
||||||
|
|
||||||
|
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
|
||||||
|
=-= compiling with Cygwin =-=
|
||||||
|
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
|
||||||
|
|
||||||
|
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 for Cygwin was performed by Thomas Jones-Low
|
||||||
|
(tjoneslo at softstart dot com).
|
||||||
|
|
||||||
|
In March 2009, Michael Penk (mpenk at wuska dot com) reported success in
|
||||||
|
installs under Cygwin:
|
||||||
|
|
||||||
|
On my fairly complete Cygwin installs, everything compiles,
|
||||||
|
checks, and installs correctly. My Cygwin is configured
|
||||||
|
in a very standard way (out of the box, using all of Cygwin's
|
||||||
|
defaults). The install worked on 5 different machines with
|
||||||
|
Cygwin on them: one XP home, one XP professional, and three
|
||||||
|
Vista professionals.
|
||||||
|
|
||||||
|
Using the calc Makefile, he did the following:
|
||||||
|
|
||||||
|
make all target=Cygwin
|
||||||
|
make check
|
||||||
|
make install
|
||||||
|
|
||||||
|
He also reports:
|
||||||
|
|
||||||
|
Of course, one should be logged in as an Administrator when
|
||||||
|
one builds and installs calc.
|
||||||
|
|
||||||
|
He was compiling calc 2.12.4.0 with Cygwin version 1.5.25-15.
|
||||||
|
|
||||||
|
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
|
||||||
|
=-= If all else fails, for Cygwin =-=
|
||||||
|
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
|
||||||
|
|
||||||
|
Much earlier (2001?) Thomas Jones-Low (tjoneslo at softstart dot com)
|
||||||
|
recommended that you generate by hand all of the header files that
|
||||||
|
by the Makefile. This has been done for you via the makefile rule:
|
||||||
|
|
||||||
|
make win32_hsrc
|
||||||
|
|
||||||
|
which uses the Makefile variables in win32.mkdef to form these header
|
||||||
|
files under win32 directory.
|
||||||
|
|
||||||
|
You will find generated versions of these files located in the win32
|
||||||
|
sub-directory. These files may be appropriate for your Cygwin building
|
||||||
|
needs.
|
||||||
|
|
||||||
|
In particular:
|
||||||
|
|
||||||
|
Just copy the win32/*.[ch] files up into the top level calc
|
||||||
|
source directory, edit them (if needed) and build using the
|
||||||
|
Cygwin GCC compiler and Cygwin build environment.
|
||||||
|
|
||||||
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
|
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
|
||||||
=-= compiling under DJGPP =-=
|
=-= compiling under DJGPP =-=
|
||||||
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
|
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
|
||||||
@@ -56,7 +113,7 @@ recommends the following settings:
|
|||||||
CALCPATH= .;./cal;~/.cal;${CALC_SHAREDIR};${CUSTOMCALDIR}
|
CALCPATH= .;./cal;~/.cal;${CALC_SHAREDIR};${CUSTOMCALDIR}
|
||||||
CALCRC= ${CALC_SHAREDIR}/startup;~/.calcrc;./.calcinit
|
CALCRC= ${CALC_SHAREDIR}/startup;~/.calcrc;./.calcinit
|
||||||
CALCPAGER= less.exe -ci
|
CALCPAGER= less.exe -ci
|
||||||
DEBUG= -O2 -gstabs+
|
DEBUG= -O2 -gstabs+ -DWINDOZ
|
||||||
|
|
||||||
The 'Linux set' or 'gcc set' (see the Select your compiler type section)
|
The 'Linux set' or 'gcc set' (see the Select your compiler type section)
|
||||||
should work for DJGPP systems if you set the above Makefile variables.
|
should work for DJGPP systems if you set the above Makefile variables.
|
||||||
@@ -68,81 +125,8 @@ Look for Makefile comments of the form:
|
|||||||
Follow those recommendations. In cases where they conflict with
|
Follow those recommendations. In cases where they conflict with
|
||||||
the above Makefile list, follow the recommendation in the Makefile.
|
the above Makefile list, follow the recommendation in the Makefile.
|
||||||
|
|
||||||
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
|
|
||||||
=-= compiling with Cygwin =-=
|
|
||||||
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
|
|
||||||
|
|
||||||
An effort is being made to allow windows users to compile calc using the
|
## Copyright (C) 2002-2009 Landon Curt Noll and Thomas Jones-Low
|
||||||
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 calc.exe which is the command line interface.
|
|
||||||
|
|
||||||
He recommended that you generate by hand all of the header files that
|
|
||||||
by the Makefile. This has been done for you via the makefile rule:
|
|
||||||
|
|
||||||
make win32_hsrc
|
|
||||||
|
|
||||||
which uses the Makefile variables in win32.mkdef to form these header
|
|
||||||
files under win32 directory.
|
|
||||||
|
|
||||||
You will find generated versions of these files located in the win32
|
|
||||||
sub-directory. These files may be appropriate for your Cygwin building
|
|
||||||
needs.
|
|
||||||
|
|
||||||
In particular:
|
|
||||||
|
|
||||||
Just copy the win32/*.[ch] files up into the top level calc
|
|
||||||
source directory, edit them (if needed) and build using the
|
|
||||||
Cygwin GCC compiler and Cygwin build environment.
|
|
||||||
|
|
||||||
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
|
|
||||||
=-=-= calc maintenance folk =-=-=
|
|
||||||
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
|
|
||||||
|
|
||||||
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) 2002 Landon Curt Noll and Thomas Jones-Low
|
|
||||||
##
|
##
|
||||||
## Calc is open software; you can redistribute it and/or modify it under
|
## 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
|
## the terms of the version 2.1 of the GNU Lesser General Public License
|
||||||
@@ -156,10 +140,10 @@ was changed to:
|
|||||||
## A copy of version 2.1 of the GNU Lesser General Public License is
|
## 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
|
## distributed with calc under the filename COPYING-LGPL. You should have
|
||||||
## received a copy with calc; if not, write to Free Software Foundation, Inc.
|
## received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||||
## 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
## 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
##
|
##
|
||||||
## @(#) $Revision: 29.12 $
|
## @(#) $Revision: 30.2 $
|
||||||
## @(#) $Id: README.WINDOWS,v 29.12 2004/07/28 12:52:01 chongo Exp $
|
## @(#) $Id: README.WINDOWS,v 30.2 2009/03/14 02:29:31 chongo Exp $
|
||||||
## @(#) $Source: /usr/local/src/cmd/calc/RCS/README.WINDOWS,v $
|
## @(#) $Source: /usr/local/src/cmd/calc/RCS/README.WINDOWS,v $
|
||||||
##
|
##
|
||||||
## Under source code control: 2001/02/25 14:00:05
|
## Under source code control: 2001/02/25 14:00:05
|
||||||
|
32
addop.c
32
addop.c
@@ -1,7 +1,7 @@
|
|||||||
/*
|
/*
|
||||||
* addop - add opcodes to a function being compiled
|
* addop - add opcodes to a function being compiled
|
||||||
*
|
*
|
||||||
* Copyright (C) 1999-2006 David I. Bell and Ernest Bowen
|
* Copyright (C) 1999-2007 David I. Bell and Ernest Bowen
|
||||||
*
|
*
|
||||||
* Primary author: David I. Bell
|
* Primary author: David I. Bell
|
||||||
*
|
*
|
||||||
@@ -17,10 +17,10 @@
|
|||||||
* A copy of version 2.1 of the GNU Lesser General Public License is
|
* 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
|
* distributed with calc under the filename COPYING-LGPL. You should have
|
||||||
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||||
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
*
|
*
|
||||||
* @(#) $Revision: 29.13 $
|
* @(#) $Revision: 30.1 $
|
||||||
* @(#) $Id: addop.c,v 29.13 2006/06/20 10:28:06 chongo Exp $
|
* @(#) $Id: addop.c,v 30.1 2007/03/16 11:09:46 chongo Exp $
|
||||||
* @(#) $Source: /usr/local/src/cmd/calc/RCS/addop.c,v $
|
* @(#) $Source: /usr/local/src/cmd/calc/RCS/addop.c,v $
|
||||||
*
|
*
|
||||||
* Under source code control: 1990/02/15 01:48:10
|
* Under source code control: 1990/02/15 01:48:10
|
||||||
@@ -33,7 +33,7 @@
|
|||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include "calc.h"
|
#include "calc.h"
|
||||||
#include "opcodes.h"
|
#include "opcodes.h"
|
||||||
#include "string.h"
|
#include "str.h"
|
||||||
#include "func.h"
|
#include "func.h"
|
||||||
#include "token.h"
|
#include "token.h"
|
||||||
#include "label.h"
|
#include "label.h"
|
||||||
@@ -44,17 +44,17 @@
|
|||||||
#define OPCODEALLOCSIZE 100 /* reallocate size for opcodes in functions */
|
#define OPCODEALLOCSIZE 100 /* reallocate size for opcodes in functions */
|
||||||
|
|
||||||
|
|
||||||
static unsigned long maxopcodes;/* number of opcodes available */
|
STATIC unsigned long maxopcodes;/* number of opcodes available */
|
||||||
static long newindex; /* index of new function */
|
STATIC long newindex; /* index of new function */
|
||||||
static char *newname; /* name of new function */
|
STATIC char *newname; /* name of new function */
|
||||||
static long oldop; /* previous opcode */
|
STATIC long oldop; /* previous opcode */
|
||||||
static long oldoldop; /* opcode before previous opcode */
|
STATIC long oldoldop; /* opcode before previous opcode */
|
||||||
static long debugline; /* line number of latest debug opcode */
|
STATIC long debugline; /* line number of latest debug opcode */
|
||||||
static long funccount; /* number of functions */
|
STATIC long funccount; /* number of functions */
|
||||||
static long funcavail; /* available number of functions */
|
STATIC long funcavail; /* available number of functions */
|
||||||
static FUNC *functemplate; /* function definition template */
|
STATIC FUNC *functemplate; /* function definition template */
|
||||||
static FUNC **functions; /* table of functions */
|
STATIC FUNC **functions; /* table of functions */
|
||||||
static STRINGHEAD funcnames; /* function names */
|
STATIC STRINGHEAD funcnames; /* function names */
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@@ -15,10 +15,10 @@
|
|||||||
* A copy of version 2.1 of the GNU Lesser General Public License is
|
* 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
|
* distributed with calc under the filename COPYING-LGPL. You should have
|
||||||
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||||
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
*
|
*
|
||||||
* @(#) $Revision: 29.2 $
|
* @(#) $Revision: 30.1 $
|
||||||
* @(#) $Id: align32.c,v 29.2 2000/06/07 14:02:13 chongo Exp $
|
* @(#) $Id: align32.c,v 30.1 2007/03/16 11:09:46 chongo Exp $
|
||||||
* @(#) $Source: /usr/local/src/cmd/calc/RCS/align32.c,v $
|
* @(#) $Source: /usr/local/src/cmd/calc/RCS/align32.c,v $
|
||||||
*
|
*
|
||||||
* Under source code control: 1995/11/23 05:18:06
|
* Under source code control: 1995/11/23 05:18:06
|
||||||
|
59
alloc.h
59
alloc.h
@@ -1,7 +1,7 @@
|
|||||||
/*
|
/*
|
||||||
* alloc - storage allocation and storage debug macros
|
* alloc - storage allocation and storage debug macros
|
||||||
*
|
*
|
||||||
* Copyright (C) 1999 David I. Bell
|
* Copyright (C) 1999-2007 David I. Bell
|
||||||
*
|
*
|
||||||
* Calc is open software; you can redistribute it and/or modify it under
|
* 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
|
* the terms of the version 2.1 of the GNU Lesser General Public License
|
||||||
@@ -15,10 +15,10 @@
|
|||||||
* A copy of version 2.1 of the GNU Lesser General Public License is
|
* 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
|
* distributed with calc under the filename COPYING-LGPL. You should have
|
||||||
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||||
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
*
|
*
|
||||||
* @(#) $Revision: 29.4 $
|
* @(#) $Revision: 30.2 $
|
||||||
* @(#) $Id: alloc.h,v 29.4 2001/06/08 21:00:58 chongo Exp $
|
* @(#) $Id: alloc.h,v 30.2 2008/04/15 21:17:57 chongo Exp $
|
||||||
* @(#) $Source: /usr/local/src/cmd/calc/RCS/alloc.h,v $
|
* @(#) $Source: /usr/local/src/cmd/calc/RCS/alloc.h,v $
|
||||||
*
|
*
|
||||||
* Under source code control: 1990/02/15 01:48:29
|
* Under source code control: 1990/02/15 01:48:29
|
||||||
@@ -33,54 +33,41 @@
|
|||||||
|
|
||||||
|
|
||||||
#if defined(CALC_SRC) /* if we are building from the calc source tree */
|
#if defined(CALC_SRC) /* if we are building from the calc source tree */
|
||||||
# include "have_malloc.h"
|
|
||||||
# include "have_newstr.h"
|
# include "have_newstr.h"
|
||||||
# include "have_string.h"
|
# include "have_string.h"
|
||||||
# include "have_memmv.h"
|
# include "have_memmv.h"
|
||||||
#else
|
#else
|
||||||
# include <calc/have_malloc.h>
|
|
||||||
# include <calc/have_newstr.h>
|
# include <calc/have_newstr.h>
|
||||||
# include <calc/have_string.h>
|
# include <calc/have_string.h>
|
||||||
# include <calc/have_memmv.h>
|
# include <calc/have_memmv.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef HAVE_MALLOC_H
|
|
||||||
# include <malloc.h>
|
|
||||||
#else
|
|
||||||
#if defined(FORCE_STDC) || (defined(__STDC__) && __STDC__ != 0) || defined(__cplusplus)
|
|
||||||
extern void *malloc();
|
|
||||||
extern void *realloc();
|
|
||||||
extern void free();
|
|
||||||
# else
|
|
||||||
extern char *malloc();
|
|
||||||
extern char *realloc();
|
|
||||||
extern void free();
|
|
||||||
# endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef HAVE_STRING_H
|
#ifdef HAVE_STRING_H
|
||||||
# include <string.h>
|
# include <string.h>
|
||||||
|
|
||||||
#else
|
#else
|
||||||
|
#if defined(_WIN32) && defined(NOTCYGWIN)
|
||||||
|
#include <stdio.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
# if defined(HAVE_NEWSTR)
|
# if defined(HAVE_NEWSTR)
|
||||||
extern void *memcpy();
|
E_FUNC void *memcpy();
|
||||||
extern void *memset();
|
E_FUNC void *memset();
|
||||||
#if defined(FORCE_STDC) || (defined(__STDC__) && __STDC__ != 0) || defined(__cplusplus)
|
#if defined(FORCE_STDC) || (defined(__STDC__) && __STDC__ != 0) || defined(__cplusplus)
|
||||||
extern size_t strlen();
|
E_FUNC size_t strlen();
|
||||||
# else
|
# else
|
||||||
extern long strlen();
|
E_FUNC long strlen();
|
||||||
# endif
|
# endif
|
||||||
# else /* HAVE_NEWSTR */
|
# else /* HAVE_NEWSTR */
|
||||||
extern void bcopy();
|
E_FUNC void bcopy();
|
||||||
extern void bfill();
|
E_FUNC void bfill();
|
||||||
extern char *index();
|
E_FUNC char *index();
|
||||||
# endif /* HAVE_NEWSTR */
|
# endif /* HAVE_NEWSTR */
|
||||||
extern char *strchr();
|
E_FUNC char *strchr();
|
||||||
extern char *strcpy();
|
E_FUNC char *strcpy();
|
||||||
extern char *strncpy();
|
E_FUNC char *strncpy();
|
||||||
extern char *strcat();
|
E_FUNC char *strcat();
|
||||||
extern int strcmp();
|
E_FUNC int strcmp();
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@@ -94,13 +81,13 @@ extern int strcmp();
|
|||||||
#endif /* HAVE_NEWSTR */
|
#endif /* HAVE_NEWSTR */
|
||||||
|
|
||||||
#if !defined(HAVE_MEMMOVE)
|
#if !defined(HAVE_MEMMOVE)
|
||||||
# undef CALC_SIZE_T
|
# undef MEMMOVE_SIZE_T
|
||||||
#if defined(FORCE_STDC) || (defined(__STDC__) && __STDC__ != 0) || defined(__cplusplus)
|
#if defined(FORCE_STDC) || (defined(__STDC__) && __STDC__ != 0) || defined(__cplusplus)
|
||||||
# define CALC_SIZE_T size_t
|
# define MEMMOVE_SIZE_T size_t
|
||||||
# else
|
# else
|
||||||
# define CALC_SIZE_T long
|
# define MEMMOVE_SIZE_T long
|
||||||
# endif
|
# endif
|
||||||
extern void *memmove(void *s1, const void *s2, CALC_SIZE_T n);
|
E_FUNC void *memmove(void *s1, CONST void *s2, MEMMOVE_SIZE_T n);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#endif /* !__ALLOC_H__ */
|
#endif /* !__ALLOC_H__ */
|
||||||
|
26
assocfunc.c
26
assocfunc.c
@@ -1,7 +1,7 @@
|
|||||||
/*
|
/*
|
||||||
* assocfunc - association table routines
|
* assocfunc - association table routines
|
||||||
*
|
*
|
||||||
* Copyright (C) 1999 David I. Bell
|
* Copyright (C) 1999-2007 David I. Bell
|
||||||
*
|
*
|
||||||
* Calc is open software; you can redistribute it and/or modify it under
|
* 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
|
* the terms of the version 2.1 of the GNU Lesser General Public License
|
||||||
@@ -15,10 +15,10 @@
|
|||||||
* A copy of version 2.1 of the GNU Lesser General Public License is
|
* 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
|
* distributed with calc under the filename COPYING-LGPL. You should have
|
||||||
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||||
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
*
|
*
|
||||||
* @(#) $Revision: 29.2 $
|
* @(#) $Revision: 30.1 $
|
||||||
* @(#) $Id: assocfunc.c,v 29.2 2000/06/07 14:02:13 chongo Exp $
|
* @(#) $Id: assocfunc.c,v 30.1 2007/03/16 11:09:46 chongo Exp $
|
||||||
* @(#) $Source: /usr/local/src/cmd/calc/RCS/assocfunc.c,v $
|
* @(#) $Source: /usr/local/src/cmd/calc/RCS/assocfunc.c,v $
|
||||||
*
|
*
|
||||||
* Under source code control: 1993/07/20 23:04:27
|
* Under source code control: 1993/07/20 23:04:27
|
||||||
@@ -46,10 +46,10 @@
|
|||||||
#define ELEMSIZE(n) (sizeof(ASSOCELEM) + (sizeof(VALUE) * ((n) - 1)))
|
#define ELEMSIZE(n) (sizeof(ASSOCELEM) + (sizeof(VALUE) * ((n) - 1)))
|
||||||
|
|
||||||
|
|
||||||
static ASSOCELEM *elemindex(ASSOC *ap, long index);
|
S_FUNC ASSOCELEM *elemindex(ASSOC *ap, long index);
|
||||||
static BOOL compareindices(VALUE *v1, VALUE *v2, long dim);
|
S_FUNC BOOL compareindices(VALUE *v1, VALUE *v2, long dim);
|
||||||
static void resize(ASSOC *ap, long newsize);
|
S_FUNC void resize(ASSOC *ap, long newsize);
|
||||||
static void assoc_elemfree(ASSOCELEM *ep);
|
S_FUNC void assoc_elemfree(ASSOCELEM *ep);
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -69,7 +69,7 @@ associndex(ASSOC *ap, BOOL create, long dim, VALUE *indices)
|
|||||||
{
|
{
|
||||||
ASSOCELEM **listhead;
|
ASSOCELEM **listhead;
|
||||||
ASSOCELEM *ep;
|
ASSOCELEM *ep;
|
||||||
static VALUE val;
|
STATIC VALUE val;
|
||||||
QCKHASH hash;
|
QCKHASH hash;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
@@ -200,7 +200,7 @@ assocrsearch(ASSOC *ap, VALUE *vp, long i, long j, ZVALUE *index)
|
|||||||
* ap association to index into
|
* ap association to index into
|
||||||
* index index of desired element
|
* index index of desired element
|
||||||
*/
|
*/
|
||||||
static ASSOCELEM *
|
S_FUNC ASSOCELEM *
|
||||||
elemindex(ASSOC *ap, long index)
|
elemindex(ASSOC *ap, long index)
|
||||||
{
|
{
|
||||||
ASSOCELEM *ep;
|
ASSOCELEM *ep;
|
||||||
@@ -356,7 +356,7 @@ assoccopy(ASSOC *oldap)
|
|||||||
* This is only actually done if the growth from the previous size is
|
* This is only actually done if the growth from the previous size is
|
||||||
* enough to make this worthwhile.
|
* enough to make this worthwhile.
|
||||||
*/
|
*/
|
||||||
static void
|
S_FUNC void
|
||||||
resize(ASSOC *ap, long newsize)
|
resize(ASSOC *ap, long newsize)
|
||||||
{
|
{
|
||||||
ASSOCELEM **oldtable;
|
ASSOCELEM **oldtable;
|
||||||
@@ -400,7 +400,7 @@ resize(ASSOC *ap, long newsize)
|
|||||||
/*
|
/*
|
||||||
* Free an association element, along with any contained values.
|
* Free an association element, along with any contained values.
|
||||||
*/
|
*/
|
||||||
static void
|
S_FUNC void
|
||||||
assoc_elemfree(ASSOCELEM *ep)
|
assoc_elemfree(ASSOCELEM *ep)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
@@ -520,7 +520,7 @@ assocprint(ASSOC *ap, long max_print)
|
|||||||
* Compare two lists of index values to see if they are identical.
|
* Compare two lists of index values to see if they are identical.
|
||||||
* Returns TRUE if they are the same.
|
* Returns TRUE if they are the same.
|
||||||
*/
|
*/
|
||||||
static BOOL
|
S_FUNC BOOL
|
||||||
compareindices(VALUE *v1, VALUE *v2, long dim)
|
compareindices(VALUE *v1, VALUE *v2, long dim)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
|
12
blkcpy.c
12
blkcpy.c
@@ -1,7 +1,7 @@
|
|||||||
/*
|
/*
|
||||||
* blkcpy - general values and related routines used by the calculator
|
* blkcpy - general values and related routines used by the calculator
|
||||||
*
|
*
|
||||||
* Copyright (C) 1999-2006 Landon Curt Noll and Ernest Bowen
|
* Copyright (C) 1999-2007 Landon Curt Noll and Ernest Bowen
|
||||||
*
|
*
|
||||||
* Primary author: Landon Curt Noll
|
* Primary author: Landon Curt Noll
|
||||||
*
|
*
|
||||||
@@ -17,10 +17,10 @@
|
|||||||
* A copy of version 2.1 of the GNU Lesser General Public License is
|
* 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
|
* distributed with calc under the filename COPYING-LGPL. You should have
|
||||||
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||||
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
*
|
*
|
||||||
* @(#) $Revision: 29.9 $
|
* @(#) $Revision: 30.1 $
|
||||||
* @(#) $Id: blkcpy.c,v 29.9 2006/05/20 08:43:55 chongo Exp $
|
* @(#) $Id: blkcpy.c,v 30.1 2007/03/16 11:09:46 chongo Exp $
|
||||||
* @(#) $Source: /usr/local/src/cmd/calc/RCS/blkcpy.c,v $
|
* @(#) $Source: /usr/local/src/cmd/calc/RCS/blkcpy.c,v $
|
||||||
*
|
*
|
||||||
* Under source code control: 1997/04/18 20:41:26
|
* Under source code control: 1997/04/18 20:41:26
|
||||||
@@ -36,7 +36,7 @@
|
|||||||
#include "value.h"
|
#include "value.h"
|
||||||
#include "file.h"
|
#include "file.h"
|
||||||
#include "blkcpy.h"
|
#include "blkcpy.h"
|
||||||
#include "string.h"
|
#include "str.h"
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -935,7 +935,7 @@ copyostr2blk(char *str,long ssi,long num,BLOCK *dblk,long dsi,BOOL noreloc)
|
|||||||
* s1
|
* s1
|
||||||
*/
|
*/
|
||||||
void *
|
void *
|
||||||
memmove(void *s1, const void *s2, CALC_SIZE_T n)
|
memmove(void *s1, CONST void *s2, MEMMOVE_SIZE_T n)
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
* firewall
|
* firewall
|
||||||
|
44
blkcpy.h
44
blkcpy.h
@@ -1,7 +1,7 @@
|
|||||||
/*
|
/*
|
||||||
* blkcpy - general values and related routines used by the calculator
|
* blkcpy - general values and related routines used by the calculator
|
||||||
*
|
*
|
||||||
* Copyright (C) 1999 Landon Curt Noll and Ernest Bowen
|
* Copyright (C) 1999-2007 Landon Curt Noll and Ernest Bowen
|
||||||
*
|
*
|
||||||
* Primary author: Landon Curt Noll
|
* Primary author: Landon Curt Noll
|
||||||
*
|
*
|
||||||
@@ -17,10 +17,10 @@
|
|||||||
* A copy of version 2.1 of the GNU Lesser General Public License is
|
* 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
|
* distributed with calc under the filename COPYING-LGPL. You should have
|
||||||
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||||
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
*
|
*
|
||||||
* @(#) $Revision: 29.2 $
|
* @(#) $Revision: 30.1 $
|
||||||
* @(#) $Id: blkcpy.h,v 29.2 2000/06/07 14:02:13 chongo Exp $
|
* @(#) $Id: blkcpy.h,v 30.1 2007/03/16 11:09:46 chongo Exp $
|
||||||
* @(#) $Source: /usr/local/src/cmd/calc/RCS/blkcpy.h,v $
|
* @(#) $Source: /usr/local/src/cmd/calc/RCS/blkcpy.h,v $
|
||||||
*
|
*
|
||||||
* Under source code control: 1997/04/18 20:41:25
|
* Under source code control: 1997/04/18 20:41:25
|
||||||
@@ -36,27 +36,27 @@
|
|||||||
/*
|
/*
|
||||||
* the main copy gateway function
|
* the main copy gateway function
|
||||||
*/
|
*/
|
||||||
extern int copystod(VALUE *, long, long, VALUE *, long);
|
E_FUNC int copystod(VALUE *, long, long, VALUE *, long);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* specific copy functions
|
* specific copy functions
|
||||||
*/
|
*/
|
||||||
extern int copyblk2blk(BLOCK *, long, long, BLOCK *, long, BOOL);
|
E_FUNC int copyblk2blk(BLOCK *, long, long, BLOCK *, long, BOOL);
|
||||||
extern int copyblk2file(BLOCK *, long, long, FILEID, long);
|
E_FUNC int copyblk2file(BLOCK *, long, long, FILEID, long);
|
||||||
extern int copyblk2mat(BLOCK *, long, long, MATRIX *, long);
|
E_FUNC int copyblk2mat(BLOCK *, long, long, MATRIX *, long);
|
||||||
extern int copyblk2num(BLOCK *, long, long, NUMBER *, long, NUMBER **);
|
E_FUNC int copyblk2num(BLOCK *, long, long, NUMBER *, long, NUMBER **);
|
||||||
extern int copyblk2str(BLOCK *, long, long, STRING *, long);
|
E_FUNC int copyblk2str(BLOCK *, long, long, STRING *, long);
|
||||||
extern int copyfile2blk(FILEID, long, long, BLOCK *, long, BOOL);
|
E_FUNC int copyfile2blk(FILEID, long, long, BLOCK *, long, BOOL);
|
||||||
extern int copylist2list(LIST *, long, long, LIST *, long);
|
E_FUNC int copylist2list(LIST *, long, long, LIST *, long);
|
||||||
extern int copylist2mat(LIST *, long, long, MATRIX *, long);
|
E_FUNC int copylist2mat(LIST *, long, long, MATRIX *, long);
|
||||||
extern int copymat2blk(MATRIX *, long, long, BLOCK *, long, BOOL);
|
E_FUNC int copymat2blk(MATRIX *, long, long, BLOCK *, long, BOOL);
|
||||||
extern int copymat2list(MATRIX *, long, long, LIST *, long);
|
E_FUNC int copymat2list(MATRIX *, long, long, LIST *, long);
|
||||||
extern int copymat2mat(MATRIX *, long, long, MATRIX *, long);
|
E_FUNC int copymat2mat(MATRIX *, long, long, MATRIX *, long);
|
||||||
extern int copynum2blk(NUMBER *, long, long, BLOCK *, long, BOOL);
|
E_FUNC int copynum2blk(NUMBER *, long, long, BLOCK *, long, BOOL);
|
||||||
extern int copyostr2blk(char *, long, long, BLOCK *, long, BOOL);
|
E_FUNC int copyostr2blk(char *, long, long, BLOCK *, long, BOOL);
|
||||||
extern int copyostr2str(char *, long, long, STRING *, long);
|
E_FUNC int copyostr2str(char *, long, long, STRING *, long);
|
||||||
extern int copystr2blk(STRING *, long, long, BLOCK *, long, BOOL);
|
E_FUNC int copystr2blk(STRING *, long, long, BLOCK *, long, BOOL);
|
||||||
extern int copystr2file(STRING *, long, long, FILEID, long);
|
E_FUNC int copystr2file(STRING *, long, long, FILEID, long);
|
||||||
extern int copystr2str(STRING *, long, long, STRING *, long);
|
E_FUNC int copystr2str(STRING *, long, long, STRING *, long);
|
||||||
|
|
||||||
#endif /* !__BLKCPY_H__ */
|
#endif /* !__BLKCPY_H__ */
|
||||||
|
22
block.c
22
block.c
@@ -1,7 +1,7 @@
|
|||||||
/*
|
/*
|
||||||
* block - fixed, dynamic, fifo and circular memory blocks
|
* block - fixed, dynamic, fifo and circular memory blocks
|
||||||
*
|
*
|
||||||
* Copyright (C) 1999 Landon Curt Noll and Ernest Bowen
|
* Copyright (C) 1999-2007 Landon Curt Noll and Ernest Bowen
|
||||||
*
|
*
|
||||||
* Primary author: Landon Curt Noll
|
* Primary author: Landon Curt Noll
|
||||||
*
|
*
|
||||||
@@ -17,10 +17,10 @@
|
|||||||
* A copy of version 2.1 of the GNU Lesser General Public License is
|
* 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
|
* distributed with calc under the filename COPYING-LGPL. You should have
|
||||||
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||||
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
*
|
*
|
||||||
* @(#) $Revision: 29.3 $
|
* @(#) $Revision: 30.1 $
|
||||||
* @(#) $Id: block.c,v 29.3 2006/05/01 19:16:57 chongo Exp $
|
* @(#) $Id: block.c,v 30.1 2007/03/16 11:09:46 chongo Exp $
|
||||||
* @(#) $Source: /usr/local/src/cmd/calc/RCS/block.c,v $
|
* @(#) $Source: /usr/local/src/cmd/calc/RCS/block.c,v $
|
||||||
*
|
*
|
||||||
* Under source code control: 1997/02/27 00:29:40
|
* Under source code control: 1997/02/27 00:29:40
|
||||||
@@ -37,19 +37,19 @@
|
|||||||
#include "config.h"
|
#include "config.h"
|
||||||
#include "block.h"
|
#include "block.h"
|
||||||
#include "nametype.h"
|
#include "nametype.h"
|
||||||
#include "string.h"
|
#include "str.h"
|
||||||
#include "calcerr.h"
|
#include "calcerr.h"
|
||||||
|
|
||||||
#define NBLOCKCHUNK 16
|
#define NBLOCKCHUNK 16
|
||||||
|
|
||||||
static long nblockcount = 0;
|
STATIC long nblockcount = 0;
|
||||||
static long maxnblockcount = 0;
|
STATIC long maxnblockcount = 0;
|
||||||
static STRINGHEAD nblocknames;
|
STATIC STRINGHEAD nblocknames;
|
||||||
static NBLOCK **nblocks;
|
STATIC NBLOCK **nblocks;
|
||||||
|
|
||||||
|
|
||||||
/* forward declarations */
|
/* forward declarations */
|
||||||
static void blkchk(BLOCK*);
|
S_FUNC void blkchk(BLOCK*);
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -154,7 +154,7 @@ blk_free(BLOCK *blk)
|
|||||||
* if all is ok, otherwise math_error() is called and this
|
* if all is ok, otherwise math_error() is called and this
|
||||||
* function does not return
|
* function does not return
|
||||||
*/
|
*/
|
||||||
static void
|
S_FUNC void
|
||||||
blkchk(BLOCK *blk)
|
blkchk(BLOCK *blk)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
42
block.h
42
block.h
@@ -1,7 +1,7 @@
|
|||||||
/*
|
/*
|
||||||
* block - fixed, dynamic, fifo and circular memory blocks
|
* block - fixed, dynamic, fifo and circular memory blocks
|
||||||
*
|
*
|
||||||
* Copyright (C) 1999 Landon Curt Noll and Ernest Bowen
|
* Copyright (C) 1999-2007 Landon Curt Noll and Ernest Bowen
|
||||||
*
|
*
|
||||||
* Primary author: Landon Curt Noll
|
* Primary author: Landon Curt Noll
|
||||||
*
|
*
|
||||||
@@ -17,10 +17,10 @@
|
|||||||
* A copy of version 2.1 of the GNU Lesser General Public License is
|
* 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
|
* distributed with calc under the filename COPYING-LGPL. You should have
|
||||||
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||||
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
*
|
*
|
||||||
* @(#) $Revision: 29.2 $
|
* @(#) $Revision: 30.1 $
|
||||||
* @(#) $Id: block.h,v 29.2 2000/06/07 14:02:13 chongo Exp $
|
* @(#) $Id: block.h,v 30.1 2007/03/16 11:09:46 chongo Exp $
|
||||||
* @(#) $Source: /usr/local/src/cmd/calc/RCS/block.h,v $
|
* @(#) $Source: /usr/local/src/cmd/calc/RCS/block.h,v $
|
||||||
*
|
*
|
||||||
* Under source code control: 1997/02/21 05:03:39
|
* Under source code control: 1997/02/21 05:03:39
|
||||||
@@ -160,7 +160,7 @@ typedef struct nblock NBLOCK;
|
|||||||
/*
|
/*
|
||||||
* block debug
|
* block debug
|
||||||
*/
|
*/
|
||||||
extern int blk_debug; /* 0 => debug off */
|
EXTERN int blk_debug; /* 0 => debug off */
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -204,22 +204,22 @@ typedef USB8 OCTET;
|
|||||||
/*
|
/*
|
||||||
* external functions
|
* external functions
|
||||||
*/
|
*/
|
||||||
extern BLOCK *blkalloc(int, int);
|
E_FUNC BLOCK *blkalloc(int, int);
|
||||||
extern void blk_free(BLOCK*);
|
E_FUNC void blk_free(BLOCK*);
|
||||||
extern BLOCK *blkrealloc(BLOCK*, int, int);
|
E_FUNC BLOCK *blkrealloc(BLOCK*, int, int);
|
||||||
extern void blktrunc(BLOCK*);
|
E_FUNC void blktrunc(BLOCK*);
|
||||||
extern BLOCK *blk_copy(BLOCK*);
|
E_FUNC BLOCK *blk_copy(BLOCK*);
|
||||||
extern int blk_cmp(BLOCK*, BLOCK*);
|
E_FUNC int blk_cmp(BLOCK*, BLOCK*);
|
||||||
extern void blk_print(BLOCK*);
|
E_FUNC void blk_print(BLOCK*);
|
||||||
extern void nblock_print(NBLOCK *);
|
E_FUNC void nblock_print(NBLOCK *);
|
||||||
extern NBLOCK *createnblock(char *, int, int);
|
E_FUNC NBLOCK *createnblock(char *, int, int);
|
||||||
extern NBLOCK *reallocnblock(int, int, int);
|
E_FUNC NBLOCK *reallocnblock(int, int, int);
|
||||||
extern int removenblock(int);
|
E_FUNC int removenblock(int);
|
||||||
extern int findnblockid(char *);
|
E_FUNC int findnblockid(char *);
|
||||||
extern NBLOCK *findnblock(int);
|
E_FUNC NBLOCK *findnblock(int);
|
||||||
extern BLOCK *copyrealloc(BLOCK*, int, int);
|
E_FUNC BLOCK *copyrealloc(BLOCK*, int, int);
|
||||||
extern int countnblocks(void);
|
E_FUNC int countnblocks(void);
|
||||||
extern void shownblocks(void);
|
E_FUNC void shownblocks(void);
|
||||||
|
|
||||||
|
|
||||||
#endif /* !__BLOCK_H__ */
|
#endif /* !__BLOCK_H__ */
|
||||||
|
@@ -15,10 +15,10 @@
|
|||||||
* A copy of version 2.1 of the GNU Lesser General Public License is
|
* 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
|
* distributed with calc under the filename COPYING-LGPL. You should have
|
||||||
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||||
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
*
|
*
|
||||||
* @(#) $Revision: 29.2 $
|
* @(#) $Revision: 30.1 $
|
||||||
* @(#) $Id: byteswap.c,v 29.2 2000/06/07 14:02:13 chongo Exp $
|
* @(#) $Id: byteswap.c,v 30.1 2007/03/16 11:09:46 chongo Exp $
|
||||||
* @(#) $Source: /usr/local/src/cmd/calc/RCS/byteswap.c,v $
|
* @(#) $Source: /usr/local/src/cmd/calc/RCS/byteswap.c,v $
|
||||||
*
|
*
|
||||||
* Under source code control: 1995/10/11 04:44:01
|
* Under source code control: 1995/10/11 04:44:01
|
||||||
|
@@ -15,10 +15,10 @@
|
|||||||
* A copy of version 2.1 of the GNU Lesser General Public License is
|
* 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
|
* distributed with calc under the filename COPYING-LGPL. You should have
|
||||||
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||||
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
*
|
*
|
||||||
* @(#) $Revision: 29.4 $
|
* @(#) $Revision: 30.1 $
|
||||||
* @(#) $Id: byteswap.h,v 29.4 2001/06/08 21:00:58 chongo Exp $
|
* @(#) $Id: byteswap.h,v 30.1 2007/03/16 11:09:46 chongo Exp $
|
||||||
* @(#) $Source: /usr/local/src/cmd/calc/RCS/byteswap.h,v $
|
* @(#) $Source: /usr/local/src/cmd/calc/RCS/byteswap.h,v $
|
||||||
*
|
*
|
||||||
* Under source code control: 1995/10/11 04:44:01
|
* Under source code control: 1995/10/11 04:44:01
|
||||||
|
143
cal/Makefile
143
cal/Makefile
@@ -2,7 +2,7 @@
|
|||||||
#
|
#
|
||||||
# cal - makefile for calc standard resource files
|
# cal - makefile for calc standard resource files
|
||||||
#
|
#
|
||||||
# Copyright (C) 1999 Landon Curt Noll
|
# Copyright (C) 1999-2006 Landon Curt Noll
|
||||||
#
|
#
|
||||||
# Calc is open software; you can redistribute it and/or modify it under
|
# 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
|
# the terms of the version 2.1 of the GNU Lesser General Public License
|
||||||
@@ -16,10 +16,10 @@
|
|||||||
# A copy of version 2.1 of the GNU Lesser General Public License is
|
# 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
|
# distributed with calc under the filename COPYING-LGPL. You should have
|
||||||
# received a copy with calc; if not, write to Free Software Foundation, Inc.
|
# received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||||
# 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
#
|
#
|
||||||
# @(#) $Revision: 29.21 $
|
# @(#) $Revision: 30.4 $
|
||||||
# @(#) $Id: Makefile,v 29.21 2006/06/26 05:46:06 chongo Exp $
|
# @(#) $Id: Makefile,v 30.4 2010/09/02 06:01:39 chongo Exp $
|
||||||
# @(#) $Source: /usr/local/src/cmd/calc/cal/RCS/Makefile,v $
|
# @(#) $Source: /usr/local/src/cmd/calc/cal/RCS/Makefile,v $
|
||||||
#
|
#
|
||||||
# Under source code control: 1991/07/21 05:00:54
|
# Under source code control: 1991/07/21 05:00:54
|
||||||
@@ -33,14 +33,31 @@
|
|||||||
|
|
||||||
# required vars
|
# required vars
|
||||||
#
|
#
|
||||||
SHELL = /bin/sh
|
SHELL= /bin/sh
|
||||||
MAKE_FILE = Makefile
|
|
||||||
|
|
||||||
####
|
####
|
||||||
# Normally, the upper level makefile will set these values. We provide
|
# Normally, the upper level makefile will set these values. We provide
|
||||||
# a default here just in case you want to build from this directory.
|
# a default here just in case you want to build from this directory.
|
||||||
####
|
####
|
||||||
|
|
||||||
|
# Normally certain files depend on the Makefile. If the Makefile is
|
||||||
|
# changed, then certain steps should be redone. If MAKE_FILE is
|
||||||
|
# set to Makefile, then these files will depend on Makefile. If
|
||||||
|
# MAKE_FILE is empty, then they wont.
|
||||||
|
#
|
||||||
|
# If in doubt, set MAKE_FILE to Makefile
|
||||||
|
#
|
||||||
|
MAKE_FILE= Makefile
|
||||||
|
|
||||||
|
# Controlling file makefile basename (without the path)
|
||||||
|
#
|
||||||
|
# This is the basename same of the makefile that may/does/will drive
|
||||||
|
# this makefile.
|
||||||
|
#
|
||||||
|
# If in doubt, set TOP_MAKE_FILE to Makefile
|
||||||
|
#
|
||||||
|
TOP_MAKE_FILE= Makefile
|
||||||
|
|
||||||
# Where the system include (.h) files are kept
|
# Where the system include (.h) files are kept
|
||||||
#
|
#
|
||||||
# For DJGPP, select:
|
# For DJGPP, select:
|
||||||
@@ -62,9 +79,9 @@ INCDIR= /usr/include
|
|||||||
# ${LIBDIR} where calc link library (*.a) files are installed
|
# ${LIBDIR} where calc link library (*.a) files are installed
|
||||||
# ${CALC_SHAREDIR} where to install calc help, .cal, startup, config files
|
# ${CALC_SHAREDIR} where to install calc help, .cal, startup, config files
|
||||||
#
|
#
|
||||||
# NOTE: The install rule prepends installation paths with $T, which
|
# NOTE: The install rule prepends installation paths with ${T}, which
|
||||||
# by default is empty. If $T is non-empty, then installation
|
# by default is empty. If ${T} is non-empty, then installation
|
||||||
# locations will be relative to the $T directory.
|
# locations will be relative to the ${T} directory.
|
||||||
#
|
#
|
||||||
# For DJGPP, select:
|
# For DJGPP, select:
|
||||||
#
|
#
|
||||||
@@ -94,35 +111,26 @@ CALC_SHAREDIR= /usr/share/calc
|
|||||||
# ---------------------------------------------------------------
|
# ---------------------------------------------------------------
|
||||||
# ${HELPDIR} where the help directory is installed
|
# ${HELPDIR} where the help directory is installed
|
||||||
# ${CALC_INCDIR} where the calc include files are installed
|
# ${CALC_INCDIR} where the calc include files are installed
|
||||||
# ${CUSTOMCALDIR} where custom *.cal files are installed
|
|
||||||
# ${CUSTOMHELPDIR} where custom help files are installed
|
|
||||||
# ${CUSTOMINCPDIR} where custom .h files are installed
|
|
||||||
# ${SCRIPTDIR} where calc shell scripts are installed
|
# ${SCRIPTDIR} where calc shell scripts are installed
|
||||||
#
|
#
|
||||||
# NOTE: The install rule prepends installation paths with $T, which
|
# NOTE: The install rule prepends installation paths with ${T}, which
|
||||||
# by default is empty. If $T is non-empty, then installation
|
# by default is empty. If ${T} is non-empty, then installation
|
||||||
# locations will be relative to the $T directory.
|
# locations will be relative to the ${T} directory.
|
||||||
#
|
#
|
||||||
# If in doubt, set:
|
# If in doubt, set:
|
||||||
#
|
#
|
||||||
# HELPDIR= ${CALC_SHAREDIR}/help
|
# HELPDIR= ${CALC_SHAREDIR}/help
|
||||||
# CALC_INCDIR= ${INCDIR}/calc
|
# CALC_INCDIR= ${INCDIR}/calc
|
||||||
# CUSTOMCALDIR= ${CALC_SHAREDIR}/custom
|
|
||||||
# CUSTOMHELPDIR= ${CALC_SHAREDIR}/custhelp
|
|
||||||
# CUSTOMINCDIR= ${CALC_INCDIR}/custom
|
|
||||||
# SCRIPTDIR= ${BINDIR}/cscript
|
# SCRIPTDIR= ${BINDIR}/cscript
|
||||||
#
|
#
|
||||||
HELPDIR= ${CALC_SHAREDIR}/help
|
HELPDIR= ${CALC_SHAREDIR}/help
|
||||||
CALC_INCDIR= ${INCDIR}/calc
|
CALC_INCDIR= ${INCDIR}/calc
|
||||||
CUSTOMCALDIR= ${CALC_SHAREDIR}/custom
|
|
||||||
CUSTOMHELPDIR= ${CALC_SHAREDIR}/custhelp
|
|
||||||
CUSTOMINCDIR= ${CALC_INCDIR}/custom
|
|
||||||
SCRIPTDIR= ${BINDIR}/cscript
|
SCRIPTDIR= ${BINDIR}/cscript
|
||||||
|
|
||||||
# T - top level directory under which calc will be installed
|
# T - top level directory under which calc will be installed
|
||||||
#
|
#
|
||||||
# The calc install is performed under $T, the calc build is
|
# The calc install is performed under ${T}, the calc build is
|
||||||
# performed under /. The purpose for $T is to allow someone
|
# performed under /. The purpose for ${T} is to allow someone
|
||||||
# to install calc somewhere other than into the system area.
|
# to install calc somewhere other than into the system area.
|
||||||
#
|
#
|
||||||
# For example, if:
|
# For example, if:
|
||||||
@@ -142,10 +150,10 @@ SCRIPTDIR= ${BINDIR}/cscript
|
|||||||
# calc help, .cal ...: /var/tmp/testing/usr/share/calc
|
# calc help, .cal ...: /var/tmp/testing/usr/share/calc
|
||||||
# ... etc ... /var/tmp/testing/...
|
# ... etc ... /var/tmp/testing/...
|
||||||
#
|
#
|
||||||
# If $T is empty, calc is installed under /, which is the same
|
# If ${T} is empty, calc is installed under /, which is the same
|
||||||
# top of tree for which it was built. If $T is non-empty, then
|
# top of tree for which it was built. If ${T} is non-empty, then
|
||||||
# calc is installed under $T, as if one had to chroot under
|
# calc is installed under ${T}, as if one had to chroot under
|
||||||
# $T for calc to operate.
|
# ${T} for calc to operate.
|
||||||
#
|
#
|
||||||
# If in doubt, use T=
|
# If in doubt, use T=
|
||||||
#
|
#
|
||||||
@@ -163,6 +171,14 @@ Q=@
|
|||||||
#
|
#
|
||||||
CHMOD= chmod
|
CHMOD= chmod
|
||||||
CMP= cmp
|
CMP= cmp
|
||||||
|
RM= rm
|
||||||
|
MKDIR= mkdir
|
||||||
|
RMDIR= rmdir
|
||||||
|
CP= cp
|
||||||
|
MV= mv
|
||||||
|
CO= co
|
||||||
|
TRUE= true
|
||||||
|
TOUCH= touch
|
||||||
|
|
||||||
# The calc files to install
|
# The calc files to install
|
||||||
#
|
#
|
||||||
@@ -177,7 +193,8 @@ CALC_FILES= README bigprime.cal deg.cal ellip.cal lucas.cal lucas_chk.cal \
|
|||||||
beer.cal hello.cal test5100.cal test5200.cal randombitrun.cal \
|
beer.cal hello.cal test5100.cal test5200.cal randombitrun.cal \
|
||||||
randomrun.cal repeat.cal xx_print.cal natnumset.cal qtime.cal \
|
randomrun.cal repeat.cal xx_print.cal natnumset.cal qtime.cal \
|
||||||
test8400.cal test8500.cal test8600.cal chi.cal intfile.cal screen.cal \
|
test8400.cal test8500.cal test8600.cal chi.cal intfile.cal screen.cal \
|
||||||
dotest.cal set8700.cal set8700.line alg_config.cal sumtimes.cal
|
dotest.cal set8700.cal set8700.line alg_config.cal sumtimes.cal \
|
||||||
|
dms.cal hms.cal
|
||||||
|
|
||||||
# These files are found (but not built) in the distribution
|
# These files are found (but not built) in the distribution
|
||||||
#
|
#
|
||||||
@@ -192,8 +209,8 @@ all: ${CALC_FILES} ${MAKE_FILE} .all
|
|||||||
# used by the upper level Makefile to determine of we have done all
|
# used by the upper level Makefile to determine of we have done all
|
||||||
#
|
#
|
||||||
.all:
|
.all:
|
||||||
rm -f .all
|
${RM} -f .all
|
||||||
touch .all
|
${TOUCH} .all
|
||||||
|
|
||||||
##
|
##
|
||||||
#
|
#
|
||||||
@@ -209,17 +226,17 @@ all: ${CALC_FILES} ${MAKE_FILE} .all
|
|||||||
##
|
##
|
||||||
|
|
||||||
distlist: ${DISTLIST}
|
distlist: ${DISTLIST}
|
||||||
${Q}for i in ${DISTLIST} /dev/null; do \
|
${Q} for i in ${DISTLIST} /dev/null; do \
|
||||||
if [ X"$$i" != X"/dev/null" ]; then \
|
if [ X"$$i" != X"/dev/null" ]; then \
|
||||||
echo cal/$$i; \
|
echo cal/$$i; \
|
||||||
fi; \
|
fi; \
|
||||||
done
|
done
|
||||||
|
|
||||||
distdir:
|
distdir:
|
||||||
${Q}echo cal
|
${Q} echo cal
|
||||||
|
|
||||||
calcliblist:
|
calcliblist:
|
||||||
${Q}for i in ${CALCLIBLIST} /dev/null; do \
|
${Q} for i in ${CALCLIBLIST} /dev/null; do \
|
||||||
if [ X"$$i" != X"/dev/null" ]; then \
|
if [ X"$$i" != X"/dev/null" ]; then \
|
||||||
echo cal/$$i; \
|
echo cal/$$i; \
|
||||||
fi; \
|
fi; \
|
||||||
@@ -232,7 +249,7 @@ calcliblist:
|
|||||||
##
|
##
|
||||||
|
|
||||||
echo_inst_files:
|
echo_inst_files:
|
||||||
${Q}for i in ${CALC_FILES} /dev/null; do \
|
${Q} for i in ${CALC_FILES} /dev/null; do \
|
||||||
if [ X"$$i" != X"/dev/null" ]; then \
|
if [ X"$$i" != X"/dev/null" ]; then \
|
||||||
echo __file__ ${CALC_SHAREDIR}/$$i; \
|
echo __file__ ${CALC_SHAREDIR}/$$i; \
|
||||||
fi; \
|
fi; \
|
||||||
@@ -246,38 +263,38 @@ echo_inst_files:
|
|||||||
|
|
||||||
clean:
|
clean:
|
||||||
|
|
||||||
clobber:
|
clobber: clean
|
||||||
rm -f .all
|
${RM} -f .all
|
||||||
|
|
||||||
# install everything
|
# install everything
|
||||||
#
|
#
|
||||||
# NOTE: Keep the uninstall rule in reverse order to the install rule
|
# NOTE: Keep the uninstall rule in reverse order to the install rule
|
||||||
#
|
#
|
||||||
install: all
|
install: all
|
||||||
-${Q}if [ ! -d $T${CALC_SHAREDIR} ]; then \
|
-${Q} if [ ! -d ${T}${CALC_SHAREDIR} ]; then \
|
||||||
echo mkdir $T${CALC_SHAREDIR}; \
|
echo ${MKDIR} ${T}${CALC_SHAREDIR}; \
|
||||||
mkdir $T${CALC_SHAREDIR}; \
|
${MKDIR} ${T}${CALC_SHAREDIR}; \
|
||||||
if [ ! -d "$T${CALC_SHAREDIR}" ]; then \
|
if [ ! -d "${T}${CALC_SHAREDIR}" ]; then \
|
||||||
echo mkdir -p "$T${CALC_SHAREDIR}"; \
|
echo ${MKDIR} -p "${T}${CALC_SHAREDIR}"; \
|
||||||
mkdir -p "$T${CALC_SHAREDIR}"; \
|
${MKDIR} -p "${T}${CALC_SHAREDIR}"; \
|
||||||
fi; \
|
fi; \
|
||||||
echo ${CHMOD} 0755 $T${CALC_SHAREDIR}; \
|
echo ${CHMOD} 0755 ${T}${CALC_SHAREDIR}; \
|
||||||
${CHMOD} 0755 $T${CALC_SHAREDIR}; \
|
${CHMOD} 0755 ${T}${CALC_SHAREDIR}; \
|
||||||
else \
|
else \
|
||||||
true; \
|
${TRUE}; \
|
||||||
fi
|
fi
|
||||||
${Q}for i in ${CALC_FILES} /dev/null; do \
|
${Q} for i in ${CALC_FILES} /dev/null; do \
|
||||||
if [ "$$i" = "/dev/null" ]; then \
|
if [ "$$i" = "/dev/null" ]; then \
|
||||||
continue; \
|
continue; \
|
||||||
fi; \
|
fi; \
|
||||||
if ${CMP} -s $$i $T${CALC_SHAREDIR}/$$i; then \
|
if ${CMP} -s $$i ${T}${CALC_SHAREDIR}/$$i; then \
|
||||||
true; \
|
${TRUE}; \
|
||||||
else \
|
else \
|
||||||
rm -f $T${CALC_SHAREDIR}/$$i.new; \
|
${RM} -f ${T}${CALC_SHAREDIR}/$$i.new; \
|
||||||
cp -f $$i $T${CALC_SHAREDIR}/$$i.new; \
|
${CP} -f $$i ${T}${CALC_SHAREDIR}/$$i.new; \
|
||||||
${CHMOD} 0444 $T${CALC_SHAREDIR}/$$i.new; \
|
${CHMOD} 0444 ${T}${CALC_SHAREDIR}/$$i.new; \
|
||||||
mv -f $T${CALC_SHAREDIR}/$$i.new $T${CALC_SHAREDIR}/$$i; \
|
${MV} -f ${T}${CALC_SHAREDIR}/$$i.new ${T}${CALC_SHAREDIR}/$$i; \
|
||||||
echo "installed $T${CALC_SHAREDIR}/$$i"; \
|
echo "installed ${T}${CALC_SHAREDIR}/$$i"; \
|
||||||
fi; \
|
fi; \
|
||||||
done
|
done
|
||||||
|
|
||||||
@@ -286,22 +303,22 @@ install: all
|
|||||||
# NOTE: Keep the uninstall rule in reverse order to the install rule
|
# NOTE: Keep the uninstall rule in reverse order to the install rule
|
||||||
#
|
#
|
||||||
uninstall:
|
uninstall:
|
||||||
-${Q}for i in ${CALC_FILES} /dev/null; do \
|
-${Q} for i in ${CALC_FILES} /dev/null; do \
|
||||||
if [ "$$i" = "/dev/null" ]; then \
|
if [ "$$i" = "/dev/null" ]; then \
|
||||||
continue; \
|
continue; \
|
||||||
fi; \
|
fi; \
|
||||||
if [ -f "$T${CALC_SHAREDIR}/$$i" ]; then \
|
if [ -f "${T}${CALC_SHAREDIR}/$$i" ]; then \
|
||||||
rm -f "$T${CALC_SHAREDIR}/$$i"; \
|
${RM} -f "${T}${CALC_SHAREDIR}/$$i"; \
|
||||||
if [ -f "$T${CALC_SHAREDIR}/$$i" ]; then \
|
if [ -f "${T}${CALC_SHAREDIR}/$$i" ]; then \
|
||||||
echo "cannot uninstall $T${CALC_SHAREDIR}/$$i"; \
|
echo "cannot uninstall ${T}${CALC_SHAREDIR}/$$i"; \
|
||||||
else \
|
else \
|
||||||
echo "uninstalled $T${CALC_SHAREDIR}/$$i"; \
|
echo "uninstalled ${T}${CALC_SHAREDIR}/$$i"; \
|
||||||
fi; \
|
fi; \
|
||||||
fi; \
|
fi; \
|
||||||
done
|
done
|
||||||
-${Q}for i in ${CALC_SHAREDIR}; do \
|
-${Q} for i in ${CALC_SHAREDIR}; do \
|
||||||
if [ -d "$T$$i" ]; then \
|
if [ -d "${T}$$i" ]; then \
|
||||||
rmdir "$T$$i" 2>/dev/null; \
|
${RMDIR} "${T}$$i" 2>/dev/null; \
|
||||||
echo "cleaned up $T$$i"; \
|
echo "cleaned up ${T}$$i"; \
|
||||||
fi; \
|
fi; \
|
||||||
done
|
done
|
||||||
|
54
cal/README
54
cal/README
@@ -226,14 +226,37 @@ chrem.cal
|
|||||||
|
|
||||||
deg.cal
|
deg.cal
|
||||||
|
|
||||||
|
deg(deg, min, sec)
|
||||||
|
deg_add(a, b)
|
||||||
|
deg_neg(a)
|
||||||
|
deg_sub(a, b)
|
||||||
|
deg_mul(a, b)
|
||||||
|
deg_print(a)
|
||||||
|
|
||||||
|
Calculate in degrees, minutes, and seconds. For a more functional
|
||||||
|
version see dms.cal.
|
||||||
|
|
||||||
|
|
||||||
|
dms.cal
|
||||||
|
|
||||||
dms(deg, min, sec)
|
dms(deg, min, sec)
|
||||||
dms_add(a, b)
|
dms_add(a, b)
|
||||||
dms_neg(a)
|
dms_neg(a)
|
||||||
dms_sub(a, b)
|
dms_sub(a, b)
|
||||||
dms_mul(a, b)
|
dms_mul(a, b)
|
||||||
dms_print(a)
|
dms_print(a)
|
||||||
|
dms_abs(a)
|
||||||
|
dms_norm(a)
|
||||||
|
dms_test(a)
|
||||||
|
dms_int(a)
|
||||||
|
dms_frac(a)
|
||||||
|
dms_rel(a,b)
|
||||||
|
dms_cmp(a,b)
|
||||||
|
dms_inc(a)
|
||||||
|
dms_dec(a)
|
||||||
|
|
||||||
Calculate in degrees, minutes, and seconds.
|
Calculate in degrees, minutes, and seconds. Unlike deg.cal, increments
|
||||||
|
are on the arc second level. See also hms.cal.
|
||||||
|
|
||||||
|
|
||||||
dotest.cal
|
dotest.cal
|
||||||
@@ -285,6 +308,27 @@ hello.cal
|
|||||||
NOTE: This resource produces a lot of output. :-)
|
NOTE: This resource produces a lot of output. :-)
|
||||||
|
|
||||||
|
|
||||||
|
hms.cal
|
||||||
|
|
||||||
|
hms(hour, min, sec)
|
||||||
|
hms_add(a, b)
|
||||||
|
hms_neg(a)
|
||||||
|
hms_sub(a, b)
|
||||||
|
hms_mul(a, b)
|
||||||
|
hms_print(a)
|
||||||
|
hms_abs(a)
|
||||||
|
hms_norm(a)
|
||||||
|
hms_test(a)
|
||||||
|
hms_int(a)
|
||||||
|
hms_frac(a)
|
||||||
|
hms_rel(a,b)
|
||||||
|
hms_cmp(a,b)
|
||||||
|
hms_inc(a)
|
||||||
|
hms_dec(a)
|
||||||
|
|
||||||
|
Calculate in hours, minutes, and seconds. See also dmscal.
|
||||||
|
|
||||||
|
|
||||||
intfile.cal
|
intfile.cal
|
||||||
|
|
||||||
file2be(filename)
|
file2be(filename)
|
||||||
@@ -714,7 +758,7 @@ sumtimes.cal
|
|||||||
timehmean(N,M)
|
timehmean(N,M)
|
||||||
doalltimes(N)
|
doalltimes(N)
|
||||||
|
|
||||||
Give the runtimes for various ways of evaluating sums, sums of
|
Give the user CPU time for various ways of evaluating sums, sums of
|
||||||
squares, etc, for large lists and matrices. N is the size of
|
squares, etc, for large lists and matrices. N is the size of
|
||||||
the list or matrix to use. The doalltimes() function will run
|
the list or matrix to use. The doalltimes() function will run
|
||||||
all fo the sumtimes tests. For example:
|
all fo the sumtimes tests. For example:
|
||||||
@@ -1012,10 +1056,10 @@ xx_print.cal
|
|||||||
## A copy of version 2.1 of the GNU Lesser General Public License is
|
## 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
|
## distributed with calc under the filename COPYING-LGPL. You should have
|
||||||
## received a copy with calc; if not, write to Free Software Foundation, Inc.
|
## received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||||
## 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
## 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
##
|
##
|
||||||
## @(#) $Revision: 29.15 $
|
## @(#) $Revision: 30.2 $
|
||||||
## @(#) $Id: README,v 29.15 2006/06/23 00:34:55 chongo Exp $
|
## @(#) $Id: README,v 30.2 2010/09/02 06:01:39 chongo Exp $
|
||||||
## @(#) $Source: /usr/local/src/cmd/calc/cal/RCS/README,v $
|
## @(#) $Source: /usr/local/src/cmd/calc/cal/RCS/README,v $
|
||||||
##
|
##
|
||||||
## Under source code control: 1990/02/15 01:50:32
|
## Under source code control: 1990/02/15 01:50:32
|
||||||
|
@@ -15,10 +15,10 @@
|
|||||||
* A copy of version 2.1 of the GNU Lesser General Public License is
|
* 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
|
* distributed with calc under the filename COPYING-LGPL. You should have
|
||||||
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||||
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
*
|
*
|
||||||
* @(#) $Revision: 29.14 $
|
* @(#) $Revision: 30.1 $
|
||||||
* @(#) $Id: alg_config.cal,v 29.14 2006/06/11 07:22:05 chongo Exp $
|
* @(#) $Id: alg_config.cal,v 30.1 2007/03/16 11:09:54 chongo Exp $
|
||||||
* @(#) $Source: /usr/local/src/cmd/calc/cal/RCS/alg_config.cal,v $
|
* @(#) $Source: /usr/local/src/cmd/calc/cal/RCS/alg_config.cal,v $
|
||||||
*
|
*
|
||||||
* Under source code control: 2006/06/07 14:10:11
|
* Under source code control: 2006/06/07 14:10:11
|
||||||
@@ -85,7 +85,7 @@ define mul_loop(repeat, x)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* multiply pairwise, all sets of a given length */
|
/* multiply pairwise, all sets of a given length */
|
||||||
start = runtime();
|
start = usertime();
|
||||||
for (i=0; i < repeat; ++i) {
|
for (i=0; i < repeat; ++i) {
|
||||||
|
|
||||||
if (len == 1) {
|
if (len == 1) {
|
||||||
@@ -130,7 +130,7 @@ define mul_loop(repeat, x)
|
|||||||
/*
|
/*
|
||||||
* return duration
|
* return duration
|
||||||
*/
|
*/
|
||||||
end = runtime();
|
end = usertime();
|
||||||
return end-start;
|
return end-start;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -477,7 +477,7 @@ define sq_loop(repeat, x)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* square pairwise, all sets of a given length */
|
/* square pairwise, all sets of a given length */
|
||||||
start = runtime();
|
start = usertime();
|
||||||
for (i=0; i < repeat; ++i) {
|
for (i=0; i < repeat; ++i) {
|
||||||
|
|
||||||
if (len == 1) {
|
if (len == 1) {
|
||||||
@@ -524,7 +524,7 @@ define sq_loop(repeat, x)
|
|||||||
/*
|
/*
|
||||||
* return duration
|
* return duration
|
||||||
*/
|
*/
|
||||||
end = runtime();
|
end = usertime();
|
||||||
return end-start;
|
return end-start;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -874,7 +874,7 @@ define pow_loop(repeat, x, ex)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* pmod pairwise, all sets of a given length */
|
/* pmod pairwise, all sets of a given length */
|
||||||
start = runtime();
|
start = usertime();
|
||||||
for (i=0; i < repeat; ++i) {
|
for (i=0; i < repeat; ++i) {
|
||||||
|
|
||||||
if (len == 1) {
|
if (len == 1) {
|
||||||
@@ -927,7 +927,7 @@ define pow_loop(repeat, x, ex)
|
|||||||
/*
|
/*
|
||||||
* return duration
|
* return duration
|
||||||
*/
|
*/
|
||||||
end = runtime();
|
end = usertime();
|
||||||
return end-start;
|
return end-start;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -15,10 +15,10 @@
|
|||||||
* A copy of version 2.1 of the GNU Lesser General Public License is
|
* 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
|
* distributed with calc under the filename COPYING-LGPL. You should have
|
||||||
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||||
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
*
|
*
|
||||||
* @(#) $Revision: 29.2 $
|
* @(#) $Revision: 30.1 $
|
||||||
* @(#) $Id: beer.cal,v 29.2 2000/06/07 14:02:25 chongo Exp $
|
* @(#) $Id: beer.cal,v 30.1 2007/03/16 11:09:54 chongo Exp $
|
||||||
* @(#) $Source: /usr/local/src/cmd/calc/cal/RCS/beer.cal,v $
|
* @(#) $Source: /usr/local/src/cmd/calc/cal/RCS/beer.cal,v $
|
||||||
*
|
*
|
||||||
* Under source code control: 1996/11/13 13:21:05
|
* Under source code control: 1996/11/13 13:21:05
|
||||||
|
@@ -15,10 +15,10 @@
|
|||||||
* A copy of version 2.1 of the GNU Lesser General Public License is
|
* 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
|
* distributed with calc under the filename COPYING-LGPL. You should have
|
||||||
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||||
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
*
|
*
|
||||||
* @(#) $Revision: 29.3 $
|
* @(#) $Revision: 30.1 $
|
||||||
* @(#) $Id: bernoulli.cal,v 29.3 2000/12/17 12:26:04 chongo Exp $
|
* @(#) $Id: bernoulli.cal,v 30.1 2007/03/16 11:09:54 chongo Exp $
|
||||||
* @(#) $Source: /usr/local/src/cmd/calc/cal/RCS/bernoulli.cal,v $
|
* @(#) $Source: /usr/local/src/cmd/calc/cal/RCS/bernoulli.cal,v $
|
||||||
*
|
*
|
||||||
* Under source code control: 1991/09/30 11:18:41
|
* Under source code control: 1991/09/30 11:18:41
|
||||||
|
@@ -15,10 +15,10 @@
|
|||||||
* A copy of version 2.1 of the GNU Lesser General Public License is
|
* 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
|
* distributed with calc under the filename COPYING-LGPL. You should have
|
||||||
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||||
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
*
|
*
|
||||||
* @(#) $Revision: 29.2 $
|
* @(#) $Revision: 30.1 $
|
||||||
* @(#) $Id: bigprime.cal,v 29.2 2000/06/07 14:02:25 chongo Exp $
|
* @(#) $Id: bigprime.cal,v 30.1 2007/03/16 11:09:54 chongo Exp $
|
||||||
* @(#) $Source: /usr/local/src/cmd/calc/cal/RCS/bigprime.cal,v $
|
* @(#) $Source: /usr/local/src/cmd/calc/cal/RCS/bigprime.cal,v $
|
||||||
*
|
*
|
||||||
* Under source code control: 1991/05/22 21:56:32
|
* Under source code control: 1991/05/22 21:56:32
|
||||||
|
@@ -14,10 +14,10 @@
|
|||||||
# A copy of version 2.1 of the GNU Lesser General Public License is
|
# 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
|
# distributed with calc under the filename COPYING-LGPL. You should have
|
||||||
# received a copy with calc; if not, write to Free Software Foundation, Inc.
|
# received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||||
# 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
#
|
#
|
||||||
# @(#) $Revision: 29.2 $
|
# @(#) $Revision: 30.1 $
|
||||||
# @(#) $Id: bindings,v 29.2 2000/06/07 14:02:25 chongo Exp $
|
# @(#) $Id: bindings,v 30.1 2007/03/16 11:09:54 chongo Exp $
|
||||||
# @(#) $Source: /usr/local/src/cmd/calc/cal/RCS/bindings,v $
|
# @(#) $Source: /usr/local/src/cmd/calc/cal/RCS/bindings,v $
|
||||||
#
|
#
|
||||||
# Under source code control: 1993/05/02 20:09:19
|
# Under source code control: 1993/05/02 20:09:19
|
||||||
|
@@ -15,10 +15,10 @@
|
|||||||
* A copy of version 2.1 of the GNU Lesser General Public License is
|
* 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
|
* distributed with calc under the filename COPYING-LGPL. You should have
|
||||||
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||||
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
*
|
*
|
||||||
* @(#) $Revision: 29.2 $
|
* @(#) $Revision: 30.1 $
|
||||||
* @(#) $Id: chi.cal,v 29.2 2001/04/08 10:21:23 chongo Exp $
|
* @(#) $Id: chi.cal,v 30.1 2007/03/16 11:09:54 chongo Exp $
|
||||||
* @(#) $Source: /usr/local/src/cmd/calc/cal/RCS/chi.cal,v $
|
* @(#) $Source: /usr/local/src/cmd/calc/cal/RCS/chi.cal,v $
|
||||||
*
|
*
|
||||||
* Under source code control: 2001/03/27 14:10:11
|
* Under source code control: 2001/03/27 14:10:11
|
||||||
|
@@ -17,10 +17,10 @@
|
|||||||
* A copy of version 2.1 of the GNU Lesser General Public License is
|
* 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
|
* distributed with calc under the filename COPYING-LGPL. You should have
|
||||||
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||||
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
*
|
*
|
||||||
* @(#) $Revision: 29.2 $
|
* @(#) $Revision: 30.1 $
|
||||||
* @(#) $Id: chrem.cal,v 29.2 2000/06/07 14:02:25 chongo Exp $
|
* @(#) $Id: chrem.cal,v 30.1 2007/03/16 11:09:54 chongo Exp $
|
||||||
* @(#) $Source: /usr/local/src/cmd/calc/cal/RCS/chrem.cal,v $
|
* @(#) $Source: /usr/local/src/cmd/calc/cal/RCS/chrem.cal,v $
|
||||||
*
|
*
|
||||||
* Under source code control: 1992/09/26 01:00:47
|
* Under source code control: 1992/09/26 01:00:47
|
||||||
|
40
cal/deg.cal
40
cal/deg.cal
@@ -15,10 +15,10 @@
|
|||||||
* A copy of version 2.1 of the GNU Lesser General Public License is
|
* 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
|
* distributed with calc under the filename COPYING-LGPL. You should have
|
||||||
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||||
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
*
|
*
|
||||||
* @(#) $Revision: 29.4 $
|
* @(#) $Revision: 30.2 $
|
||||||
* @(#) $Id: deg.cal,v 29.4 2003/01/26 19:32:41 chongo Exp $
|
* @(#) $Id: deg.cal,v 30.2 2010/09/02 06:01:14 chongo Exp $
|
||||||
* @(#) $Source: /usr/local/src/cmd/calc/cal/RCS/deg.cal,v $
|
* @(#) $Source: /usr/local/src/cmd/calc/cal/RCS/deg.cal,v $
|
||||||
*
|
*
|
||||||
* Under source code control: 1990/02/15 01:50:33
|
* Under source code control: 1990/02/15 01:50:33
|
||||||
@@ -28,9 +28,9 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
obj dms {deg, min, sec};
|
obj deg {deg, min, sec};
|
||||||
|
|
||||||
define dms(deg, min, sec)
|
define deg(deg, min, sec)
|
||||||
{
|
{
|
||||||
local ans;
|
local ans;
|
||||||
|
|
||||||
@@ -38,18 +38,18 @@ define dms(deg, min, sec)
|
|||||||
sec = 0;
|
sec = 0;
|
||||||
if (isnull(min))
|
if (isnull(min))
|
||||||
min = 0;
|
min = 0;
|
||||||
obj dms ans;
|
obj deg ans;
|
||||||
ans.deg = deg;
|
ans.deg = deg;
|
||||||
ans.min = min;
|
ans.min = min;
|
||||||
ans.sec = sec;
|
ans.sec = sec;
|
||||||
fixdms(ans);
|
fixdeg(ans);
|
||||||
return ans;
|
return ans;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
define dms_add(a, b)
|
define deg_add(a, b)
|
||||||
{
|
{
|
||||||
local obj dms ans;
|
local obj deg ans;
|
||||||
|
|
||||||
ans.deg = 0;
|
ans.deg = 0;
|
||||||
ans.min = 0;
|
ans.min = 0;
|
||||||
@@ -66,14 +66,14 @@ define dms_add(a, b)
|
|||||||
ans.sec += b.sec;
|
ans.sec += b.sec;
|
||||||
} else
|
} else
|
||||||
ans.deg += b;
|
ans.deg += b;
|
||||||
fixdms(ans);
|
fixdeg(ans);
|
||||||
return ans;
|
return ans;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
define dms_neg(a)
|
define deg_neg(a)
|
||||||
{
|
{
|
||||||
local obj dms ans;
|
local obj deg ans;
|
||||||
|
|
||||||
ans.deg = -a.deg;
|
ans.deg = -a.deg;
|
||||||
ans.min = -a.min;
|
ans.min = -a.min;
|
||||||
@@ -82,15 +82,15 @@ define dms_neg(a)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
define dms_sub(a, b)
|
define deg_sub(a, b)
|
||||||
{
|
{
|
||||||
return a - b;
|
return a - b;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
define dms_mul(a, b)
|
define deg_mul(a, b)
|
||||||
{
|
{
|
||||||
local obj dms ans;
|
local obj deg ans;
|
||||||
|
|
||||||
if (istype(a, ans) && istype(b, ans))
|
if (istype(a, ans) && istype(b, ans))
|
||||||
quit "Cannot multiply degrees together";
|
quit "Cannot multiply degrees together";
|
||||||
@@ -103,24 +103,24 @@ define dms_mul(a, b)
|
|||||||
ans.min = b.min * a;
|
ans.min = b.min * a;
|
||||||
ans.sec = b.sec * a;
|
ans.sec = b.sec * a;
|
||||||
}
|
}
|
||||||
fixdms(ans);
|
fixdeg(ans);
|
||||||
return ans;
|
return ans;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
define dms_print(a)
|
define deg_print(a)
|
||||||
{
|
{
|
||||||
print a.deg : 'd' : a.min : 'm' : a.sec : 's' :;
|
print a.deg : 'd' : a.min : 'm' : a.sec : 's' :;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
define dms_abs(a)
|
define deg_abs(a)
|
||||||
{
|
{
|
||||||
return a.deg + a.min / 60 + a.sec / 3600;
|
return a.deg + a.min / 60 + a.sec / 3600;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
define fixdms(a)
|
define fixdeg(a)
|
||||||
{
|
{
|
||||||
a.min += frac(a.deg) * 60;
|
a.min += frac(a.deg) * 60;
|
||||||
a.deg = int(a.deg);
|
a.deg = int(a.deg);
|
||||||
@@ -134,5 +134,5 @@ define fixdms(a)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (config("resource_debug") & 3) {
|
if (config("resource_debug") & 3) {
|
||||||
print "obj dms {deg, min, sec} defined";
|
print "obj deg {deg, min, sec} defined";
|
||||||
}
|
}
|
||||||
|
384
cal/dms.cal
Normal file
384
cal/dms.cal
Normal file
@@ -0,0 +1,384 @@
|
|||||||
|
/*
|
||||||
|
* dms - calculate in degrees, minutes, and seconds (based on deg)
|
||||||
|
*
|
||||||
|
* Copyright (C) 1999,2010 David I. Bell and Landon Curt Noll
|
||||||
|
*
|
||||||
|
* 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.
|
||||||
|
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
|
*
|
||||||
|
* @(#) $Revision: 30.2 $
|
||||||
|
* @(#) $Id: dms.cal,v 30.2 2010/09/02 06:14:16 chongo Exp $
|
||||||
|
* @(#) $Source: /usr/local/src/cmd/calc/cal/RCS/dms.cal,v $
|
||||||
|
*
|
||||||
|
* Under source code control: 1990/02/15 01:50:33
|
||||||
|
* File existed as early as: before 1990
|
||||||
|
*
|
||||||
|
* Share and enjoy! :-) http://www.isthe.com/chongo/tech/comp/calc/
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
obj dms {deg, min, sec};
|
||||||
|
|
||||||
|
define dms(deg, min, sec)
|
||||||
|
{
|
||||||
|
local obj dms ans; /* return value */
|
||||||
|
|
||||||
|
/* default missing args to 0 */
|
||||||
|
if (isnull(sec)) {
|
||||||
|
sec = 0;
|
||||||
|
}
|
||||||
|
if (isnull(min)) {
|
||||||
|
min = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* load object */
|
||||||
|
ans.deg = deg;
|
||||||
|
ans.min = min;
|
||||||
|
ans.sec = sec;
|
||||||
|
|
||||||
|
/* return properly formed object */
|
||||||
|
ans = fixdms(ans);
|
||||||
|
return ans;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
define dms_add(a, b)
|
||||||
|
{
|
||||||
|
local obj dms ans; /* return value */
|
||||||
|
|
||||||
|
/* initalize value to 1st arg */
|
||||||
|
if (istype(a, ans)) {
|
||||||
|
/* 1st arg is dms object, load it */
|
||||||
|
ans.deg = a.deg;
|
||||||
|
ans.min = a.min;
|
||||||
|
ans.sec = a.sec;
|
||||||
|
} else {
|
||||||
|
/* 1st arg is not dms, assume scalar degrees */
|
||||||
|
ans.deg = a;
|
||||||
|
ans.min = 0;
|
||||||
|
ans.sec = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* add value of 2nd arg */
|
||||||
|
if (istype(b, ans)) {
|
||||||
|
/* 2nd arg is dms object, add it */
|
||||||
|
ans.deg += b.deg;
|
||||||
|
ans.min += b.min;
|
||||||
|
ans.sec += b.sec;
|
||||||
|
} else {
|
||||||
|
/* 2nd arg is not dms, add scalar degrees */
|
||||||
|
ans.deg += b;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* return normalized result */
|
||||||
|
ans = fixdms(ans);
|
||||||
|
return ans;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
define dms_neg(a)
|
||||||
|
{
|
||||||
|
local obj dms ans; /* return value */
|
||||||
|
|
||||||
|
/* negate argument */
|
||||||
|
if (istype(a, ans)) {
|
||||||
|
/* 1st arg is dms object, load it */
|
||||||
|
ans.deg = -a.deg;
|
||||||
|
ans.min = -a.min;
|
||||||
|
ans.sec = -a.sec;
|
||||||
|
} else {
|
||||||
|
/* 2nd arg is not dms, negate scalar degrees */
|
||||||
|
ans.deg = -a;
|
||||||
|
ans.min = 0;
|
||||||
|
ans.sec = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* return normalized result */
|
||||||
|
ans = fixdms(ans);
|
||||||
|
return ans;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
define dms_sub(a, b)
|
||||||
|
{
|
||||||
|
local obj dms ans; /* return value */
|
||||||
|
|
||||||
|
/* initalize value to 1st arg */
|
||||||
|
if (istype(a, ans)) {
|
||||||
|
/* 1st arg is dms object, load it */
|
||||||
|
ans.deg = a.deg;
|
||||||
|
ans.min = a.min;
|
||||||
|
ans.sec = a.sec;
|
||||||
|
} else {
|
||||||
|
/* 1st arg is not dms, assume scalar degrees */
|
||||||
|
ans.deg = a;
|
||||||
|
ans.min = 0;
|
||||||
|
ans.sec = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* subtract value of 2nd arg */
|
||||||
|
if (istype(b, ans)) {
|
||||||
|
/* 2nd arg is dms object, subtract it */
|
||||||
|
ans.deg -= b.deg;
|
||||||
|
ans.min -= b.min;
|
||||||
|
ans.sec -= b.sec;
|
||||||
|
} else {
|
||||||
|
/* 2nd arg is not dms, subtract scalar degrees */
|
||||||
|
ans.deg -= b;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* return normalized result */
|
||||||
|
ans = fixdms(ans);
|
||||||
|
return ans;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
define dms_mul(a, b)
|
||||||
|
{
|
||||||
|
local obj dms ans; /* return value */
|
||||||
|
|
||||||
|
/* dms object multiplication */
|
||||||
|
if (istype(a, ans) && istype(b, ans)) {
|
||||||
|
ans.deg = dms_abs(a) * dms_abs(b);
|
||||||
|
ans.min = 0;
|
||||||
|
ans.sec = 0;
|
||||||
|
|
||||||
|
/* scalar multiplication */
|
||||||
|
} else if (istype(a, ans)) {
|
||||||
|
ans.deg = a.deg * b;
|
||||||
|
ans.min = a.min * b;
|
||||||
|
ans.sec = a.sec * b;
|
||||||
|
} else {
|
||||||
|
ans.deg = b.deg * a;
|
||||||
|
ans.min = b.min * a;
|
||||||
|
ans.sec = b.sec * a;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* return normalized result */
|
||||||
|
ans = fixdms(ans);
|
||||||
|
return ans;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
define dms_print(a)
|
||||||
|
{
|
||||||
|
local obj dms ans; /* temp object for dms type testing */
|
||||||
|
|
||||||
|
/* firewall - arg must be a dms object */
|
||||||
|
if (! istype(a, ans)) {
|
||||||
|
quit "dms_print called with non dms object";
|
||||||
|
}
|
||||||
|
|
||||||
|
/* print in dms form */
|
||||||
|
print a.deg : 'd' : a.min : 'm' : a.sec : 's' :;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
define dms_abs(a)
|
||||||
|
{
|
||||||
|
local obj dms ans; /* temp object for dms type testing */
|
||||||
|
local deg; /* return scalar value */
|
||||||
|
|
||||||
|
/* firewall - just absolute value non dms objects */
|
||||||
|
if (! istype(a, ans)) {
|
||||||
|
return abs(a);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* compute degrees */
|
||||||
|
deg = a.deg + a.min / 60 + a.sec / 3600;
|
||||||
|
|
||||||
|
/* return degrees */
|
||||||
|
return deg;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
define dms_norm(a)
|
||||||
|
{
|
||||||
|
local obj dms ans; /* temp object for dms type testing */
|
||||||
|
local deg; /* degrees */
|
||||||
|
|
||||||
|
/* firewall - arg must be a dms object */
|
||||||
|
if (! istype(a, ans)) {
|
||||||
|
quit "dms_norm called with non dms object";
|
||||||
|
}
|
||||||
|
|
||||||
|
/* square degrees (norm is the square of absolute value */
|
||||||
|
deg = dms_abs(a);
|
||||||
|
|
||||||
|
/* return degrees */
|
||||||
|
return deg*deg;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
define dms_test(a)
|
||||||
|
{
|
||||||
|
local obj dms ans; /* temp value */
|
||||||
|
|
||||||
|
/* firewall - arg must be a dms object */
|
||||||
|
if (! istype(a, ans)) {
|
||||||
|
quit "dms_test called with non dms object";
|
||||||
|
}
|
||||||
|
|
||||||
|
/* return false of non-zero */
|
||||||
|
ans = fixdms(a);
|
||||||
|
if (ans.deg == 0 && ans.min == 0 && ans.sec == 0) {
|
||||||
|
/* false */
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
/* true */
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
define dms_int(a)
|
||||||
|
{
|
||||||
|
local obj dms ans; /* return value */
|
||||||
|
|
||||||
|
/* firewall - arg must be a dms object */
|
||||||
|
if (! istype(a, ans)) {
|
||||||
|
quit "dms_int called with non dms object";
|
||||||
|
}
|
||||||
|
|
||||||
|
/* normalize the argument */
|
||||||
|
ans = fixdms(a);
|
||||||
|
|
||||||
|
/* truncate to the nearest second */
|
||||||
|
ans.sec = int(ans.sec);
|
||||||
|
|
||||||
|
/* return value to the nearest second */
|
||||||
|
return ans;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
define dms_frac(a)
|
||||||
|
{
|
||||||
|
local obj dms ans; /* return value */
|
||||||
|
|
||||||
|
/* firewall - arg must be a dms object */
|
||||||
|
if (! istype(a, ans)) {
|
||||||
|
quit "dms_frac called with non dms object";
|
||||||
|
}
|
||||||
|
|
||||||
|
/* normalize the argument */
|
||||||
|
ans = fixdms(a);
|
||||||
|
|
||||||
|
/* remove all but fractional seconds */
|
||||||
|
ans.deg = 0;
|
||||||
|
ans.min = 0;
|
||||||
|
ans.sec = frac(ans.sec);
|
||||||
|
|
||||||
|
/* return value to the second fraction */
|
||||||
|
return ans;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
define dms_rel(a,b)
|
||||||
|
{
|
||||||
|
local abs_a, abs_b; /* scalars of the arguments */
|
||||||
|
|
||||||
|
/* compute scalars of the arguments */
|
||||||
|
abs_a = dms_abs(a);
|
||||||
|
abs_b = dms_abs(b);
|
||||||
|
|
||||||
|
/* return the comparison */
|
||||||
|
return cmp(abs_a, abs_b);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
define dms_cmp(a,b)
|
||||||
|
{
|
||||||
|
local abs_a, abs_b; /* scalars of the arguments */
|
||||||
|
|
||||||
|
/* compute scalars of the arguments */
|
||||||
|
abs_a = dms_abs(a);
|
||||||
|
abs_b = dms_abs(b);
|
||||||
|
|
||||||
|
/* return the equality comparison */
|
||||||
|
return (abs_a == abs_b);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
define dms_inc(a)
|
||||||
|
{
|
||||||
|
local obj dms ans; /* return value */
|
||||||
|
|
||||||
|
/* increment a dms object */
|
||||||
|
if (istype(a, ans)) {
|
||||||
|
ans = a;
|
||||||
|
++ans.sec;
|
||||||
|
|
||||||
|
/* return normalized result */
|
||||||
|
ans = fixdms(ans);
|
||||||
|
return ans;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* increment a scalar */
|
||||||
|
return a+1;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
define dms_dec(a)
|
||||||
|
{
|
||||||
|
local obj dms ans; /* return value */
|
||||||
|
|
||||||
|
/* decrement a dms object */
|
||||||
|
if (istype(a, ans)) {
|
||||||
|
ans = a;
|
||||||
|
--ans.sec;
|
||||||
|
|
||||||
|
/* return normalized result */
|
||||||
|
ans = fixdms(ans);
|
||||||
|
return ans;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* decrement a scalar */
|
||||||
|
return a-1;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
define fixdms(a)
|
||||||
|
{
|
||||||
|
local obj dms ans; /* temp value */
|
||||||
|
|
||||||
|
/* firewall */
|
||||||
|
if (! istype(a, ans)) {
|
||||||
|
quit "attempt to fix a non dms object";
|
||||||
|
}
|
||||||
|
|
||||||
|
/* force minutes to be intergral */
|
||||||
|
a.min += frac(a.deg) * 60;
|
||||||
|
a.deg = int(a.deg);
|
||||||
|
|
||||||
|
/* force degrees to be intergral */
|
||||||
|
a.sec += frac(a.min) * 60;
|
||||||
|
a.min = int(a.min);
|
||||||
|
|
||||||
|
/* carry excess seconds into minutes */
|
||||||
|
a.min += a.sec // 60;
|
||||||
|
a.sec %= 60;
|
||||||
|
|
||||||
|
/* carry excess minutes into degrees */
|
||||||
|
a.deg += a.min // 60;
|
||||||
|
a.min %= 60;
|
||||||
|
|
||||||
|
/* round degrees :-) */
|
||||||
|
a.deg %= 360;
|
||||||
|
|
||||||
|
/* return normalized result */
|
||||||
|
return a;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (config("resource_debug") & 3) {
|
||||||
|
print "obj dms {deg, min, sec} defined";
|
||||||
|
}
|
@@ -16,8 +16,8 @@
|
|||||||
* NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
|
* NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
|
||||||
* CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
* CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||||
*
|
*
|
||||||
* @(#) $Revision: 29.2 $
|
* @(#) $Revision: 30.2 $
|
||||||
* @(#) $Id: dotest.cal,v 29.2 2006/05/21 00:55:27 chongo Exp $
|
* @(#) $Id: dotest.cal,v 30.2 2007/03/16 11:09:54 chongo Exp $
|
||||||
* @(#) $Source: /usr/local/src/cmd/calc/cal/RCS/dotest.cal,v $
|
* @(#) $Source: /usr/local/src/cmd/calc/cal/RCS/dotest.cal,v $
|
||||||
*
|
*
|
||||||
* This file is not covered under version 2.1 of the GNU LGPL.
|
* This file is not covered under version 2.1 of the GNU LGPL.
|
||||||
|
@@ -15,10 +15,10 @@
|
|||||||
* A copy of version 2.1 of the GNU Lesser General Public License is
|
* 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
|
* distributed with calc under the filename COPYING-LGPL. You should have
|
||||||
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||||
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
*
|
*
|
||||||
* @(#) $Revision: 29.4 $
|
* @(#) $Revision: 30.1 $
|
||||||
* @(#) $Id: ellip.cal,v 29.4 2006/06/20 09:29:16 chongo Exp $
|
* @(#) $Id: ellip.cal,v 30.1 2007/03/16 11:09:54 chongo Exp $
|
||||||
* @(#) $Source: /usr/local/src/cmd/calc/cal/RCS/ellip.cal,v $
|
* @(#) $Source: /usr/local/src/cmd/calc/cal/RCS/ellip.cal,v $
|
||||||
*
|
*
|
||||||
* Under source code control: 1990/02/15 01:50:33
|
* Under source code control: 1990/02/15 01:50:33
|
||||||
|
@@ -15,10 +15,10 @@
|
|||||||
* A copy of version 2.1 of the GNU Lesser General Public License is
|
* 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
|
* distributed with calc under the filename COPYING-LGPL. You should have
|
||||||
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||||
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
*
|
*
|
||||||
* @(#) $Revision: 29.2 $
|
* @(#) $Revision: 30.1 $
|
||||||
* @(#) $Id: hello.cal,v 29.2 2000/06/07 14:02:25 chongo Exp $
|
* @(#) $Id: hello.cal,v 30.1 2007/03/16 11:09:54 chongo Exp $
|
||||||
* @(#) $Source: /usr/local/src/cmd/calc/cal/RCS/hello.cal,v $
|
* @(#) $Source: /usr/local/src/cmd/calc/cal/RCS/hello.cal,v $
|
||||||
*
|
*
|
||||||
* Under source code control: 1996/11/13 13:25:43
|
* Under source code control: 1996/11/13 13:25:43
|
||||||
|
384
cal/hms.cal
Normal file
384
cal/hms.cal
Normal file
@@ -0,0 +1,384 @@
|
|||||||
|
/*
|
||||||
|
* hms - calculate in hours, minutes, and seconds
|
||||||
|
*
|
||||||
|
* Copyright (C) 2010 Landon Curt Noll
|
||||||
|
*
|
||||||
|
* 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.
|
||||||
|
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
|
*
|
||||||
|
* @(#) $Revision: 30.2 $
|
||||||
|
* @(#) $Id: hms.cal,v 30.2 2010/09/02 06:14:16 chongo Exp $
|
||||||
|
* @(#) $Source: /usr/local/src/cmd/calc/cal/RCS/hms.cal,v $
|
||||||
|
*
|
||||||
|
* Under source code control: 2010/09/01 17:14:55
|
||||||
|
* File existed as early as: 2010
|
||||||
|
*
|
||||||
|
* Share and enjoy! :-) http://www.isthe.com/chongo/tech/comp/calc/
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
obj hms {hour, min, sec};
|
||||||
|
|
||||||
|
define hms(hour, min, sec)
|
||||||
|
{
|
||||||
|
local obj hms ans; /* return value */
|
||||||
|
|
||||||
|
/* default missing args to 0 */
|
||||||
|
if (isnull(sec)) {
|
||||||
|
sec = 0;
|
||||||
|
}
|
||||||
|
if (isnull(min)) {
|
||||||
|
min = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* load object */
|
||||||
|
ans.hour = hour;
|
||||||
|
ans.min = min;
|
||||||
|
ans.sec = sec;
|
||||||
|
|
||||||
|
/* return properly formed object */
|
||||||
|
ans = fixhms(ans);
|
||||||
|
return ans;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
define hms_add(a, b)
|
||||||
|
{
|
||||||
|
local obj hms ans; /* return value */
|
||||||
|
|
||||||
|
/* initalize value to 1st arg */
|
||||||
|
if (istype(a, ans)) {
|
||||||
|
/* 1st arg is hms object, load it */
|
||||||
|
ans.hour = a.hour;
|
||||||
|
ans.min = a.min;
|
||||||
|
ans.sec = a.sec;
|
||||||
|
} else {
|
||||||
|
/* 1st arg is not hms, assume scalar hours */
|
||||||
|
ans.hour = a;
|
||||||
|
ans.min = 0;
|
||||||
|
ans.sec = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* add value of 2nd arg */
|
||||||
|
if (istype(b, ans)) {
|
||||||
|
/* 2nd arg is hms object, add it */
|
||||||
|
ans.hour += b.hour;
|
||||||
|
ans.min += b.min;
|
||||||
|
ans.sec += b.sec;
|
||||||
|
} else {
|
||||||
|
/* 2nd arg is not hms, add scalar hours */
|
||||||
|
ans.hour += b;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* return normalized result */
|
||||||
|
ans = fixhms(ans);
|
||||||
|
return ans;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
define hms_neg(a)
|
||||||
|
{
|
||||||
|
local obj hms ans; /* return value */
|
||||||
|
|
||||||
|
/* negate argument */
|
||||||
|
if (istype(a, ans)) {
|
||||||
|
/* 1st arg is hms object, load it */
|
||||||
|
ans.hour = -a.hour;
|
||||||
|
ans.min = -a.min;
|
||||||
|
ans.sec = -a.sec;
|
||||||
|
} else {
|
||||||
|
/* 2nd arg is not hms, negate scalar hours */
|
||||||
|
ans.hour = -a;
|
||||||
|
ans.min = 0;
|
||||||
|
ans.sec = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* return normalized result */
|
||||||
|
ans = fixhms(ans);
|
||||||
|
return ans;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
define hms_sub(a, b)
|
||||||
|
{
|
||||||
|
local obj hms ans; /* return value */
|
||||||
|
|
||||||
|
/* initalize value to 1st arg */
|
||||||
|
if (istype(a, ans)) {
|
||||||
|
/* 1st arg is hms object, load it */
|
||||||
|
ans.hour = a.hour;
|
||||||
|
ans.min = a.min;
|
||||||
|
ans.sec = a.sec;
|
||||||
|
} else {
|
||||||
|
/* 1st arg is not hms, assume scalar hours */
|
||||||
|
ans.hour = a;
|
||||||
|
ans.min = 0;
|
||||||
|
ans.sec = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* subtract value of 2nd arg */
|
||||||
|
if (istype(b, ans)) {
|
||||||
|
/* 2nd arg is hms object, subtract it */
|
||||||
|
ans.hour -= b.hour;
|
||||||
|
ans.min -= b.min;
|
||||||
|
ans.sec -= b.sec;
|
||||||
|
} else {
|
||||||
|
/* 2nd arg is not hms, subtract scalar hours */
|
||||||
|
ans.hour -= b;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* return normalized result */
|
||||||
|
ans = fixhms(ans);
|
||||||
|
return ans;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
define hms_mul(a, b)
|
||||||
|
{
|
||||||
|
local obj hms ans; /* return value */
|
||||||
|
|
||||||
|
/* hms object multiplication */
|
||||||
|
if (istype(a, ans) && istype(b, ans)) {
|
||||||
|
ans.hour = hms_abs(a) * hms_abs(b);
|
||||||
|
ans.min = 0;
|
||||||
|
ans.sec = 0;
|
||||||
|
|
||||||
|
/* scalar multiplication */
|
||||||
|
} else if (istype(a, ans)) {
|
||||||
|
ans.hour = a.hour * b;
|
||||||
|
ans.min = a.min * b;
|
||||||
|
ans.sec = a.sec * b;
|
||||||
|
} else {
|
||||||
|
ans.hour = b.hour * a;
|
||||||
|
ans.min = b.min * a;
|
||||||
|
ans.sec = b.sec * a;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* return normalized result */
|
||||||
|
ans = fixhms(ans);
|
||||||
|
return ans;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
define hms_print(a)
|
||||||
|
{
|
||||||
|
local obj hms ans; /* temp object for hms type testing */
|
||||||
|
|
||||||
|
/* firewall - arg must be a hms object */
|
||||||
|
if (! istype(a, ans)) {
|
||||||
|
quit "hms_print called with non hms object";
|
||||||
|
}
|
||||||
|
|
||||||
|
/* print in hms form */
|
||||||
|
print a.hour : ':' : a.min : ':' : a.sec :;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
define hms_abs(a)
|
||||||
|
{
|
||||||
|
local obj hms ans; /* temp object for hms type testing */
|
||||||
|
local hour; /* return scalar value */
|
||||||
|
|
||||||
|
/* firewall - just absolute value non hms objects */
|
||||||
|
if (! istype(a, ans)) {
|
||||||
|
return abs(a);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* compute hours */
|
||||||
|
hour = a.hour + a.min / 60 + a.sec / 3600;
|
||||||
|
|
||||||
|
/* return hours */
|
||||||
|
return hour;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
define hms_norm(a)
|
||||||
|
{
|
||||||
|
local obj hms ans; /* temp object for hms type testing */
|
||||||
|
local hour; /* hours */
|
||||||
|
|
||||||
|
/* firewall - arg must be a hms object */
|
||||||
|
if (! istype(a, ans)) {
|
||||||
|
quit "hms_norm called with non hms object";
|
||||||
|
}
|
||||||
|
|
||||||
|
/* square hours (norm is the square of absolute value */
|
||||||
|
hour = hms_abs(a);
|
||||||
|
|
||||||
|
/* return hours */
|
||||||
|
return hour*hour;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
define hms_test(a)
|
||||||
|
{
|
||||||
|
local obj hms ans; /* temp value */
|
||||||
|
|
||||||
|
/* firewall - arg must be a hms object */
|
||||||
|
if (! istype(a, ans)) {
|
||||||
|
quit "hms_test called with non hms object";
|
||||||
|
}
|
||||||
|
|
||||||
|
/* return false of non-zero */
|
||||||
|
ans = fixhms(a);
|
||||||
|
if (ans.hour == 0 && ans.min == 0 && ans.sec == 0) {
|
||||||
|
/* false */
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
/* true */
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
define hms_int(a)
|
||||||
|
{
|
||||||
|
local obj hms ans; /* return value */
|
||||||
|
|
||||||
|
/* firewall - arg must be a hms object */
|
||||||
|
if (! istype(a, ans)) {
|
||||||
|
quit "hms_int called with non hms object";
|
||||||
|
}
|
||||||
|
|
||||||
|
/* normalize the argument */
|
||||||
|
ans = fixhms(a);
|
||||||
|
|
||||||
|
/* truncate to the nearest second */
|
||||||
|
ans.sec = int(ans.sec);
|
||||||
|
|
||||||
|
/* return value to the nearest second */
|
||||||
|
return ans;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
define hms_frac(a)
|
||||||
|
{
|
||||||
|
local obj hms ans; /* return value */
|
||||||
|
|
||||||
|
/* firewall - arg must be a hms object */
|
||||||
|
if (! istype(a, ans)) {
|
||||||
|
quit "hms_frac called with non hms object";
|
||||||
|
}
|
||||||
|
|
||||||
|
/* normalize the argument */
|
||||||
|
ans = fixhms(a);
|
||||||
|
|
||||||
|
/* remove all but fractional seconds */
|
||||||
|
ans.hour = 0;
|
||||||
|
ans.min = 0;
|
||||||
|
ans.sec = frac(ans.sec);
|
||||||
|
|
||||||
|
/* return value to the second fraction */
|
||||||
|
return ans;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
define hms_rel(a,b)
|
||||||
|
{
|
||||||
|
local abs_a, abs_b; /* scalars of the arguments */
|
||||||
|
|
||||||
|
/* compute scalars of the arguments */
|
||||||
|
abs_a = hms_abs(a);
|
||||||
|
abs_b = hms_abs(b);
|
||||||
|
|
||||||
|
/* return the comparison */
|
||||||
|
return cmp(abs_a, abs_b);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
define hms_cmp(a,b)
|
||||||
|
{
|
||||||
|
local abs_a, abs_b; /* scalars of the arguments */
|
||||||
|
|
||||||
|
/* compute scalars of the arguments */
|
||||||
|
abs_a = hms_abs(a);
|
||||||
|
abs_b = hms_abs(b);
|
||||||
|
|
||||||
|
/* return the equality comparison */
|
||||||
|
return (abs_a == abs_b);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
define hms_inc(a)
|
||||||
|
{
|
||||||
|
local obj hms ans; /* return value */
|
||||||
|
|
||||||
|
/* increment a hms object */
|
||||||
|
if (istype(a, ans)) {
|
||||||
|
ans = a;
|
||||||
|
++ans.sec;
|
||||||
|
|
||||||
|
/* return normalized result */
|
||||||
|
ans = fixhms(ans);
|
||||||
|
return ans;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* increment a scalar */
|
||||||
|
return a+1;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
define hms_dec(a)
|
||||||
|
{
|
||||||
|
local obj hms ans; /* return value */
|
||||||
|
|
||||||
|
/* decrement a hms object */
|
||||||
|
if (istype(a, ans)) {
|
||||||
|
ans = a;
|
||||||
|
--ans.sec;
|
||||||
|
|
||||||
|
/* return normalized result */
|
||||||
|
ans = fixhms(ans);
|
||||||
|
return ans;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* decrement a scalar */
|
||||||
|
return a-1;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
define fixhms(a)
|
||||||
|
{
|
||||||
|
local obj hms ans; /* temp value */
|
||||||
|
|
||||||
|
/* firewall */
|
||||||
|
if (! istype(a, ans)) {
|
||||||
|
quit "attempt to fix a non hms object";
|
||||||
|
}
|
||||||
|
|
||||||
|
/* force minutes to be intergral */
|
||||||
|
a.min += frac(a.hour) * 60;
|
||||||
|
a.hour = int(a.hour);
|
||||||
|
|
||||||
|
/* force hours to be intergral */
|
||||||
|
a.sec += frac(a.min) * 60;
|
||||||
|
a.min = int(a.min);
|
||||||
|
|
||||||
|
/* carry excess seconds into minutes */
|
||||||
|
a.min += a.sec // 60;
|
||||||
|
a.sec %= 60;
|
||||||
|
|
||||||
|
/* carry excess minutes into hours */
|
||||||
|
a.hour += a.min // 60;
|
||||||
|
a.min %= 60;
|
||||||
|
|
||||||
|
/* round hours by day */
|
||||||
|
a.hour %= 24;
|
||||||
|
|
||||||
|
/* return normalized result */
|
||||||
|
return a;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (config("resource_debug") & 3) {
|
||||||
|
print "obj hms {hour, min, sec} defined";
|
||||||
|
}
|
@@ -15,10 +15,10 @@
|
|||||||
* A copy of version 2.1 of the GNU Lesser General Public License is
|
* 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
|
* distributed with calc under the filename COPYING-LGPL. You should have
|
||||||
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||||
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
*
|
*
|
||||||
* @(#) $Revision: 29.5 $
|
* @(#) $Revision: 30.1 $
|
||||||
* @(#) $Id: intfile.cal,v 29.5 2001/04/10 22:09:34 chongo Exp $
|
* @(#) $Id: intfile.cal,v 30.1 2007/03/16 11:09:54 chongo Exp $
|
||||||
* @(#) $Source: /usr/local/src/cmd/calc/cal/RCS/intfile.cal,v $
|
* @(#) $Source: /usr/local/src/cmd/calc/cal/RCS/intfile.cal,v $
|
||||||
*
|
*
|
||||||
* Under source code control: 2001/03/31 08:13:11
|
* Under source code control: 2001/03/31 08:13:11
|
||||||
|
@@ -1,3 +1,33 @@
|
|||||||
|
/*
|
||||||
|
* linear - perform a simple two point 2D linear interpolation
|
||||||
|
*
|
||||||
|
* Copyright (C) 2005-2007 Landon Curt Noll
|
||||||
|
*
|
||||||
|
* 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.
|
||||||
|
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
|
*
|
||||||
|
* @(#) $Revision: 30.2 $
|
||||||
|
* @(#) $Id: linear.cal,v 30.2 2007/03/17 05:57:42 chongo Exp $
|
||||||
|
* @(#) $Source: /usr/local/src/cmd/calc/cal/RCS/linear.cal,v $
|
||||||
|
*
|
||||||
|
* Under source code control: 2005/12/12 06:41:50
|
||||||
|
* File existed as early as: 2005
|
||||||
|
*
|
||||||
|
* chongo <was here> /\oo/\ http://www.isthe.com/chongo/
|
||||||
|
* Share and enjoy! :-) http://www.isthe.com/chongo/tech/comp/calc/
|
||||||
|
*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* linear - perform a simple two point 2D linear interpolation
|
* linear - perform a simple two point 2D linear interpolation
|
||||||
*
|
*
|
||||||
|
@@ -15,10 +15,10 @@
|
|||||||
* A copy of version 2.1 of the GNU Lesser General Public License is
|
* 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
|
* distributed with calc under the filename COPYING-LGPL. You should have
|
||||||
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||||
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
*
|
*
|
||||||
* @(#) $Revision: 29.6 $
|
* @(#) $Revision: 30.1 $
|
||||||
* @(#) $Id: lucas.cal,v 29.6 2002/07/10 09:43:46 chongo Exp $
|
* @(#) $Id: lucas.cal,v 30.1 2007/03/16 11:09:54 chongo Exp $
|
||||||
* @(#) $Source: /usr/local/src/cmd/calc/cal/RCS/lucas.cal,v $
|
* @(#) $Source: /usr/local/src/cmd/calc/cal/RCS/lucas.cal,v $
|
||||||
*
|
*
|
||||||
* Under source code control: 1990/05/03 16:49:51
|
* Under source code control: 1990/05/03 16:49:51
|
||||||
|
@@ -15,10 +15,10 @@
|
|||||||
* A copy of version 2.1 of the GNU Lesser General Public License is
|
* 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
|
* distributed with calc under the filename COPYING-LGPL. You should have
|
||||||
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||||
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
*
|
*
|
||||||
* @(#) $Revision: 29.3 $
|
* @(#) $Revision: 30.1 $
|
||||||
* @(#) $Id: lucas_chk.cal,v 29.3 2001/03/31 13:31:34 chongo Exp $
|
* @(#) $Id: lucas_chk.cal,v 30.1 2007/03/16 11:09:54 chongo Exp $
|
||||||
* @(#) $Source: /usr/local/src/cmd/calc/cal/RCS/lucas_chk.cal,v $
|
* @(#) $Source: /usr/local/src/cmd/calc/cal/RCS/lucas_chk.cal,v $
|
||||||
*
|
*
|
||||||
* Under source code control: 1991/01/11 05:41:43
|
* Under source code control: 1991/01/11 05:41:43
|
||||||
|
@@ -15,10 +15,10 @@
|
|||||||
* A copy of version 2.1 of the GNU Lesser General Public License is
|
* 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
|
* distributed with calc under the filename COPYING-LGPL. You should have
|
||||||
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||||
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
*
|
*
|
||||||
* @(#) $Revision: 29.2 $
|
* @(#) $Revision: 30.1 $
|
||||||
* @(#) $Id: lucas_tbl.cal,v 29.2 2000/06/07 14:02:25 chongo Exp $
|
* @(#) $Id: lucas_tbl.cal,v 30.1 2007/03/16 11:09:54 chongo Exp $
|
||||||
* @(#) $Source: /usr/local/src/cmd/calc/cal/RCS/lucas_tbl.cal,v $
|
* @(#) $Source: /usr/local/src/cmd/calc/cal/RCS/lucas_tbl.cal,v $
|
||||||
*
|
*
|
||||||
* Under source code control: 1991/01/26 02:43:43
|
* Under source code control: 1991/01/26 02:43:43
|
||||||
|
@@ -17,10 +17,10 @@
|
|||||||
* A copy of version 2.1 of the GNU Lesser General Public License is
|
* 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
|
* distributed with calc under the filename COPYING-LGPL. You should have
|
||||||
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||||
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
*
|
*
|
||||||
* @(#) $Revision: 29.2 $
|
* @(#) $Revision: 30.1 $
|
||||||
* @(#) $Id: mersenne.cal,v 29.2 2000/06/07 14:02:25 chongo Exp $
|
* @(#) $Id: mersenne.cal,v 30.1 2007/03/16 11:09:54 chongo Exp $
|
||||||
* @(#) $Source: /usr/local/src/cmd/calc/cal/RCS/mersenne.cal,v $
|
* @(#) $Source: /usr/local/src/cmd/calc/cal/RCS/mersenne.cal,v $
|
||||||
*
|
*
|
||||||
* Under source code control: 1991/05/22 21:56:36
|
* Under source code control: 1991/05/22 21:56:36
|
||||||
|
@@ -15,10 +15,10 @@
|
|||||||
* A copy of version 2.1 of the GNU Lesser General Public License is
|
* 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
|
* distributed with calc under the filename COPYING-LGPL. You should have
|
||||||
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||||
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
*
|
*
|
||||||
* @(#) $Revision: 29.2 $
|
* @(#) $Revision: 30.1 $
|
||||||
* @(#) $Id: mfactor.cal,v 29.2 2000/06/07 14:02:25 chongo Exp $
|
* @(#) $Id: mfactor.cal,v 30.1 2007/03/16 11:09:54 chongo Exp $
|
||||||
* @(#) $Source: /usr/local/src/cmd/calc/cal/RCS/mfactor.cal,v $
|
* @(#) $Source: /usr/local/src/cmd/calc/cal/RCS/mfactor.cal,v $
|
||||||
*
|
*
|
||||||
* Under source code control: 1996/07/06 06:09:40
|
* Under source code control: 1996/07/06 06:09:40
|
||||||
@@ -261,7 +261,7 @@ define mfactor(n, start_k, rept_loop, p_elim)
|
|||||||
} else {
|
} else {
|
||||||
/* report this loop */
|
/* report this loop */
|
||||||
printf("at 2*%d*%d+1, cpu: %f\n",
|
printf("at 2*%d*%d+1, cpu: %f\n",
|
||||||
(q-1)/(2*n), n, runtime());
|
(q-1)/(2*n), n, usertime());
|
||||||
fflush(files(1));
|
fflush(files(1));
|
||||||
loop = 0;
|
loop = 0;
|
||||||
}
|
}
|
||||||
@@ -274,7 +274,7 @@ define mfactor(n, start_k, rept_loop, p_elim)
|
|||||||
if (rept_loop <= ++loop) {
|
if (rept_loop <= ++loop) {
|
||||||
/* report this loop */
|
/* report this loop */
|
||||||
printf("at 2*%d*%d+1, cpu: %f\n",
|
printf("at 2*%d*%d+1, cpu: %f\n",
|
||||||
(q-1)/(2*n), n, runtime());
|
(q-1)/(2*n), n, usertime());
|
||||||
fflush(files(1));
|
fflush(files(1));
|
||||||
loop = 0;
|
loop = 0;
|
||||||
}
|
}
|
||||||
|
@@ -15,10 +15,10 @@
|
|||||||
* A copy of version 2.1 of the GNU Lesser General Public License is
|
* 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
|
* distributed with calc under the filename COPYING-LGPL. You should have
|
||||||
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||||
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
*
|
*
|
||||||
* @(#) $Revision: 29.2 $
|
* @(#) $Revision: 30.1 $
|
||||||
* @(#) $Id: mod.cal,v 29.2 2000/06/07 14:02:25 chongo Exp $
|
* @(#) $Id: mod.cal,v 30.1 2007/03/16 11:09:54 chongo Exp $
|
||||||
* @(#) $Source: /usr/local/src/cmd/calc/cal/RCS/mod.cal,v $
|
* @(#) $Source: /usr/local/src/cmd/calc/cal/RCS/mod.cal,v $
|
||||||
*
|
*
|
||||||
* Under source code control: 1990/02/15 01:50:34
|
* Under source code control: 1990/02/15 01:50:34
|
||||||
|
@@ -15,10 +15,10 @@
|
|||||||
* A copy of version 2.1 of the GNU Lesser General Public License is
|
* 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
|
* distributed with calc under the filename COPYING-LGPL. You should have
|
||||||
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||||
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
*
|
*
|
||||||
* @(#) $Revision: 29.3 $
|
* @(#) $Revision: 30.1 $
|
||||||
* @(#) $Id: natnumset.cal,v 29.3 2006/05/01 19:19:46 chongo Exp $
|
* @(#) $Id: natnumset.cal,v 30.1 2007/03/16 11:09:54 chongo Exp $
|
||||||
* @(#) $Source: /usr/local/src/cmd/calc/cal/RCS/natnumset.cal,v $
|
* @(#) $Source: /usr/local/src/cmd/calc/cal/RCS/natnumset.cal,v $
|
||||||
*
|
*
|
||||||
* Under source code control: 1997/09/07 23:53:51
|
* Under source code control: 1997/09/07 23:53:51
|
||||||
|
@@ -15,10 +15,10 @@
|
|||||||
* A copy of version 2.1 of the GNU Lesser General Public License is
|
* 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
|
* distributed with calc under the filename COPYING-LGPL. You should have
|
||||||
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||||
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
*
|
*
|
||||||
* @(#) $Revision: 29.2 $
|
* @(#) $Revision: 30.1 $
|
||||||
* @(#) $Id: pell.cal,v 29.2 2000/06/07 14:02:25 chongo Exp $
|
* @(#) $Id: pell.cal,v 30.1 2007/03/16 11:09:54 chongo Exp $
|
||||||
* @(#) $Source: /usr/local/src/cmd/calc/cal/RCS/pell.cal,v $
|
* @(#) $Source: /usr/local/src/cmd/calc/cal/RCS/pell.cal,v $
|
||||||
*
|
*
|
||||||
* Under source code control: 1990/02/15 01:50:34
|
* Under source code control: 1990/02/15 01:50:34
|
||||||
|
@@ -15,10 +15,10 @@
|
|||||||
* A copy of version 2.1 of the GNU Lesser General Public License is
|
* 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
|
* distributed with calc under the filename COPYING-LGPL. You should have
|
||||||
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||||
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
*
|
*
|
||||||
* @(#) $Revision: 29.5 $
|
* @(#) $Revision: 30.1 $
|
||||||
* @(#) $Id: pi.cal,v 29.5 2004/02/23 14:04:01 chongo Exp $
|
* @(#) $Id: pi.cal,v 30.1 2007/03/16 11:09:54 chongo Exp $
|
||||||
* @(#) $Source: /usr/local/src/cmd/calc/cal/RCS/pi.cal,v $
|
* @(#) $Source: /usr/local/src/cmd/calc/cal/RCS/pi.cal,v $
|
||||||
*
|
*
|
||||||
* Under source code control: 1991/05/22 21:56:37
|
* Under source code control: 1991/05/22 21:56:37
|
||||||
|
@@ -15,10 +15,10 @@
|
|||||||
* A copy of version 2.1 of the GNU Lesser General Public License is
|
* 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
|
* distributed with calc under the filename COPYING-LGPL. You should have
|
||||||
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||||
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
*
|
*
|
||||||
* @(#) $Revision: 29.2 $
|
* @(#) $Revision: 30.1 $
|
||||||
* @(#) $Id: pix.cal,v 29.2 2000/06/07 14:02:25 chongo Exp $
|
* @(#) $Id: pix.cal,v 30.1 2007/03/16 11:09:54 chongo Exp $
|
||||||
* @(#) $Source: /usr/local/src/cmd/calc/cal/RCS/pix.cal,v $
|
* @(#) $Source: /usr/local/src/cmd/calc/cal/RCS/pix.cal,v $
|
||||||
*
|
*
|
||||||
* Under source code control: 1996/07/09 03:14:14
|
* Under source code control: 1996/07/09 03:14:14
|
||||||
|
@@ -15,10 +15,10 @@
|
|||||||
* A copy of version 2.1 of the GNU Lesser General Public License is
|
* 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
|
* distributed with calc under the filename COPYING-LGPL. You should have
|
||||||
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||||
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
*
|
*
|
||||||
* @(#) $Revision: 29.2 $
|
* @(#) $Revision: 30.1 $
|
||||||
* @(#) $Id: pollard.cal,v 29.2 2000/06/07 14:02:25 chongo Exp $
|
* @(#) $Id: pollard.cal,v 30.1 2007/03/16 11:09:54 chongo Exp $
|
||||||
* @(#) $Source: /usr/local/src/cmd/calc/cal/RCS/pollard.cal,v $
|
* @(#) $Source: /usr/local/src/cmd/calc/cal/RCS/pollard.cal,v $
|
||||||
*
|
*
|
||||||
* Under source code control: 1991/05/22 21:56:37
|
* Under source code control: 1991/05/22 21:56:37
|
||||||
|
@@ -15,10 +15,10 @@
|
|||||||
* A copy of version 2.1 of the GNU Lesser General Public License is
|
* 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
|
* distributed with calc under the filename COPYING-LGPL. You should have
|
||||||
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||||
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
*
|
*
|
||||||
* @(#) $Revision: 29.2 $
|
* @(#) $Revision: 30.1 $
|
||||||
* @(#) $Id: poly.cal,v 29.2 2000/06/07 14:02:25 chongo Exp $
|
* @(#) $Id: poly.cal,v 30.1 2007/03/16 11:09:54 chongo Exp $
|
||||||
* @(#) $Source: /usr/local/src/cmd/calc/cal/RCS/poly.cal,v $
|
* @(#) $Source: /usr/local/src/cmd/calc/cal/RCS/poly.cal,v $
|
||||||
*
|
*
|
||||||
* Under source code control: 1990/02/15 01:50:35
|
* Under source code control: 1990/02/15 01:50:35
|
||||||
|
@@ -15,10 +15,10 @@
|
|||||||
* A copy of version 2.1 of the GNU Lesser General Public License is
|
* 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
|
* distributed with calc under the filename COPYING-LGPL. You should have
|
||||||
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||||
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
*
|
*
|
||||||
* @(#) $Revision: 29.3 $
|
* @(#) $Revision: 30.1 $
|
||||||
* @(#) $Id: prompt.cal,v 29.3 2006/06/20 09:29:16 chongo Exp $
|
* @(#) $Id: prompt.cal,v 30.1 2007/03/16 11:09:54 chongo Exp $
|
||||||
* @(#) $Source: /usr/local/src/cmd/calc/cal/RCS/prompt.cal,v $
|
* @(#) $Source: /usr/local/src/cmd/calc/cal/RCS/prompt.cal,v $
|
||||||
*
|
*
|
||||||
* Under source code control: 1995/12/18 04:43:25
|
* Under source code control: 1995/12/18 04:43:25
|
||||||
|
@@ -15,10 +15,10 @@
|
|||||||
* A copy of version 2.1 of the GNU Lesser General Public License is
|
* 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
|
* distributed with calc under the filename COPYING-LGPL. You should have
|
||||||
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||||
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
*
|
*
|
||||||
* @(#) $Revision: 29.2 $
|
* @(#) $Revision: 30.1 $
|
||||||
* @(#) $Id: psqrt.cal,v 29.2 2000/06/07 14:02:25 chongo Exp $
|
* @(#) $Id: psqrt.cal,v 30.1 2007/03/16 11:09:54 chongo Exp $
|
||||||
* @(#) $Source: /usr/local/src/cmd/calc/cal/RCS/psqrt.cal,v $
|
* @(#) $Source: /usr/local/src/cmd/calc/cal/RCS/psqrt.cal,v $
|
||||||
*
|
*
|
||||||
* Under source code control: 1990/02/15 01:50:35
|
* Under source code control: 1990/02/15 01:50:35
|
||||||
|
@@ -18,10 +18,10 @@
|
|||||||
* A copy of version 2.1 of the GNU Lesser General Public License is
|
* 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
|
* distributed with calc under the filename COPYING-LGPL. You should have
|
||||||
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||||
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
*
|
*
|
||||||
* @(#) $Revision: 29.4 $
|
* @(#) $Revision: 30.1 $
|
||||||
* @(#) $Id: qtime.cal,v 29.4 2000/12/18 10:18:40 chongo Exp $
|
* @(#) $Id: qtime.cal,v 30.1 2007/03/16 11:09:54 chongo Exp $
|
||||||
* @(#) $Source: /usr/local/src/cmd/calc/cal/RCS/qtime.cal,v $
|
* @(#) $Source: /usr/local/src/cmd/calc/cal/RCS/qtime.cal,v $
|
||||||
*
|
*
|
||||||
* Under source code control: 1999/10/13 04:10:33
|
* Under source code control: 1999/10/13 04:10:33
|
||||||
|
@@ -15,10 +15,10 @@
|
|||||||
* A copy of version 2.1 of the GNU Lesser General Public License is
|
* 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
|
* distributed with calc under the filename COPYING-LGPL. You should have
|
||||||
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||||
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
*
|
*
|
||||||
* @(#) $Revision: 29.2 $
|
* @(#) $Revision: 30.1 $
|
||||||
* @(#) $Id: quat.cal,v 29.2 2000/06/07 14:02:25 chongo Exp $
|
* @(#) $Id: quat.cal,v 30.1 2007/03/16 11:09:54 chongo Exp $
|
||||||
* @(#) $Source: /usr/local/src/cmd/calc/cal/RCS/quat.cal,v $
|
* @(#) $Source: /usr/local/src/cmd/calc/cal/RCS/quat.cal,v $
|
||||||
*
|
*
|
||||||
* Under source code control: 1990/02/15 01:50:35
|
* Under source code control: 1990/02/15 01:50:35
|
||||||
|
@@ -15,10 +15,10 @@
|
|||||||
* A copy of version 2.1 of the GNU Lesser General Public License is
|
* 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
|
* distributed with calc under the filename COPYING-LGPL. You should have
|
||||||
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||||
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
*
|
*
|
||||||
* @(#) $Revision: 29.2 $
|
* @(#) $Revision: 30.1 $
|
||||||
* @(#) $Id: randbitrun.cal,v 29.2 2000/06/07 14:02:25 chongo Exp $
|
* @(#) $Id: randbitrun.cal,v 30.1 2007/03/16 11:09:54 chongo Exp $
|
||||||
* @(#) $Source: /usr/local/src/cmd/calc/cal/RCS/randbitrun.cal,v $
|
* @(#) $Source: /usr/local/src/cmd/calc/cal/RCS/randbitrun.cal,v $
|
||||||
*
|
*
|
||||||
* Under source code control: 1995/02/13 03:43:11
|
* Under source code control: 1995/02/13 03:43:11
|
||||||
|
@@ -15,10 +15,10 @@
|
|||||||
* A copy of version 2.1 of the GNU Lesser General Public License is
|
* 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
|
* distributed with calc under the filename COPYING-LGPL. You should have
|
||||||
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||||
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
*
|
*
|
||||||
* @(#) $Revision: 29.2 $
|
* @(#) $Revision: 30.1 $
|
||||||
* @(#) $Id: randmprime.cal,v 29.2 2000/06/07 14:02:25 chongo Exp $
|
* @(#) $Id: randmprime.cal,v 30.1 2007/03/16 11:09:54 chongo Exp $
|
||||||
* @(#) $Source: /usr/local/src/cmd/calc/cal/RCS/randmprime.cal,v $
|
* @(#) $Source: /usr/local/src/cmd/calc/cal/RCS/randmprime.cal,v $
|
||||||
*
|
*
|
||||||
* Under source code control: 1994/03/14 23:11:21
|
* Under source code control: 1994/03/14 23:11:21
|
||||||
@@ -88,8 +88,8 @@ randmprime(bits, seed, dbg)
|
|||||||
* loop until we find a prime
|
* loop until we find a prime
|
||||||
*/
|
*/
|
||||||
if (dbg >= 1) {
|
if (dbg >= 1) {
|
||||||
start = runtime();
|
start = usertime();
|
||||||
init = runtime();
|
init = usertime();
|
||||||
plush = 0;
|
plush = 0;
|
||||||
print "DEBUG1: testing (h+" : plush : ")*2^" : n : "-1";
|
print "DEBUG1: testing (h+" : plush : ")*2^" : n : "-1";
|
||||||
}
|
}
|
||||||
@@ -97,7 +97,7 @@ randmprime(bits, seed, dbg)
|
|||||||
|
|
||||||
/* bump h, and n if needed */
|
/* bump h, and n if needed */
|
||||||
if (dbg >= 2) {
|
if (dbg >= 2) {
|
||||||
stop = runtime();
|
stop = usertime();
|
||||||
print "DEBUG2: last test:", stop-start, " total time:", stop-init;
|
print "DEBUG2: last test:", stop-start, " total time:", stop-init;
|
||||||
}
|
}
|
||||||
if (dbg >= 1) {
|
if (dbg >= 1) {
|
||||||
@@ -116,7 +116,7 @@ randmprime(bits, seed, dbg)
|
|||||||
|
|
||||||
/* found a prime */
|
/* found a prime */
|
||||||
if (dbg >= 2) {
|
if (dbg >= 2) {
|
||||||
stop = runtime();
|
stop = usertime();
|
||||||
print "DEBUG2: last test:", stop-start, " total time:", stop-init;
|
print "DEBUG2: last test:", stop-start, " total time:", stop-init;
|
||||||
print "DEBUG3: " : h : "*2^" : n : "-1 is prime";
|
print "DEBUG3: " : h : "*2^" : n : "-1 is prime";
|
||||||
}
|
}
|
||||||
|
@@ -15,10 +15,10 @@
|
|||||||
* A copy of version 2.1 of the GNU Lesser General Public License is
|
* 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
|
* distributed with calc under the filename COPYING-LGPL. You should have
|
||||||
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||||
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
*
|
*
|
||||||
* @(#) $Revision: 29.2 $
|
* @(#) $Revision: 30.1 $
|
||||||
* @(#) $Id: randombitrun.cal,v 29.2 2000/06/07 14:02:25 chongo Exp $
|
* @(#) $Id: randombitrun.cal,v 30.1 2007/03/16 11:09:54 chongo Exp $
|
||||||
* @(#) $Source: /usr/local/src/cmd/calc/cal/RCS/randombitrun.cal,v $
|
* @(#) $Source: /usr/local/src/cmd/calc/cal/RCS/randombitrun.cal,v $
|
||||||
*
|
*
|
||||||
* Under source code control: 1995/02/13 03:43:11
|
* Under source code control: 1995/02/13 03:43:11
|
||||||
|
@@ -15,10 +15,10 @@
|
|||||||
* A copy of version 2.1 of the GNU Lesser General Public License is
|
* 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
|
* distributed with calc under the filename COPYING-LGPL. You should have
|
||||||
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||||
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
*
|
*
|
||||||
* @(#) $Revision: 29.2 $
|
* @(#) $Revision: 30.1 $
|
||||||
* @(#) $Id: randomrun.cal,v 29.2 2000/06/07 14:02:25 chongo Exp $
|
* @(#) $Id: randomrun.cal,v 30.1 2007/03/16 11:09:54 chongo Exp $
|
||||||
* @(#) $Source: /usr/local/src/cmd/calc/cal/RCS/randomrun.cal,v $
|
* @(#) $Source: /usr/local/src/cmd/calc/cal/RCS/randomrun.cal,v $
|
||||||
*
|
*
|
||||||
* Under source code control: 1997/02/19 03:35:59
|
* Under source code control: 1997/02/19 03:35:59
|
||||||
|
@@ -15,10 +15,10 @@
|
|||||||
* A copy of version 2.1 of the GNU Lesser General Public License is
|
* 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
|
* distributed with calc under the filename COPYING-LGPL. You should have
|
||||||
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||||
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
*
|
*
|
||||||
* @(#) $Revision: 29.2 $
|
* @(#) $Revision: 30.1 $
|
||||||
* @(#) $Id: randrun.cal,v 29.2 2000/06/07 14:02:25 chongo Exp $
|
* @(#) $Id: randrun.cal,v 30.1 2007/03/16 11:09:54 chongo Exp $
|
||||||
* @(#) $Source: /usr/local/src/cmd/calc/cal/RCS/randrun.cal,v $
|
* @(#) $Source: /usr/local/src/cmd/calc/cal/RCS/randrun.cal,v $
|
||||||
*
|
*
|
||||||
* Under source code control: 1995/02/12 20:00:06
|
* Under source code control: 1995/02/12 20:00:06
|
||||||
|
391
cal/regress.cal
391
cal/regress.cal
@@ -15,10 +15,10 @@
|
|||||||
* A copy of version 2.1 of the GNU Lesser General Public License is
|
* 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
|
* distributed with calc under the filename COPYING-LGPL. You should have
|
||||||
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||||
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
*
|
*
|
||||||
* @(#) $Revision: 29.35 $
|
* @(#) $Revision: 30.6 $
|
||||||
* @(#) $Id: regress.cal,v 29.35 2006/08/20 16:16:11 chongo Exp $
|
* @(#) $Id: regress.cal,v 30.6 2010/09/02 06:09:06 chongo Exp $
|
||||||
* @(#) $Source: /usr/local/src/cmd/calc/cal/RCS/regress.cal,v $
|
* @(#) $Source: /usr/local/src/cmd/calc/cal/RCS/regress.cal,v $
|
||||||
*
|
*
|
||||||
* Under source code control: 1990/02/15 01:50:36
|
* Under source code control: 1990/02/15 01:50:36
|
||||||
@@ -497,7 +497,33 @@ define test_config()
|
|||||||
vrfy(config("mode2") == "off",
|
vrfy(config("mode2") == "off",
|
||||||
'556: config("mode2") == "off"');
|
'556: config("mode2") == "off"');
|
||||||
|
|
||||||
print '557: Ending test_config';
|
/* hz is numeric */
|
||||||
|
vrfy(isint(config("hz")), '557: isint(config("hz"))');
|
||||||
|
|
||||||
|
/* compile_custom is simple */
|
||||||
|
vrfy(issimple(config("compile_custom")),
|
||||||
|
'558: issimple(config("compile_custom"))');
|
||||||
|
|
||||||
|
/* allow_custom is simple */
|
||||||
|
vrfy(issimple(config("allow_custom")),
|
||||||
|
'559: issimple(config("allow_custom"))');
|
||||||
|
|
||||||
|
/* allow_custom is simple */
|
||||||
|
vrfy(issimple(config("allow_custom")),
|
||||||
|
'559: issimple(config("allow_custom"))');
|
||||||
|
|
||||||
|
/* baseb is numeric */
|
||||||
|
vrfy(isint(config("baseb")), '560: isint(config("baseb"))');
|
||||||
|
|
||||||
|
/* redecl_warn is simple */
|
||||||
|
vrfy(issimple(config("redecl_warn")),
|
||||||
|
'561: issimple(config("redecl_warn"))');
|
||||||
|
|
||||||
|
/* dupvar_warn is simple */
|
||||||
|
vrfy(issimple(config("dupvar_warn")),
|
||||||
|
'562: issimple(config("rdupvar_warn"))');
|
||||||
|
|
||||||
|
print '563: Ending test_config';
|
||||||
}
|
}
|
||||||
print '010: parsed test_config()';
|
print '010: parsed test_config()';
|
||||||
|
|
||||||
@@ -570,12 +596,18 @@ print '012: parsed squarecheck(a, b, str)';
|
|||||||
define powercheck(a, p1, p2, str)
|
define powercheck(a, p1, p2, str)
|
||||||
{
|
{
|
||||||
local a1, a2, a3;
|
local a1, a2, a3;
|
||||||
|
local b1, b2, b3;
|
||||||
|
|
||||||
a1 = (a^p1)^p2;
|
a1 = (a^p1)^p2;
|
||||||
a2 = (a^p2)^p1;
|
a2 = (a^p2)^p1;
|
||||||
a3 = a^(p1*p2);
|
a3 = a^(p1*p2);
|
||||||
|
b1 = (a**p1)**p2;
|
||||||
|
b2 = (a**p2)**p1;
|
||||||
|
b3 = a**(p1*p2);
|
||||||
if (a1 != a2) {print '**** (a^p1)^p2 != (a^p2)^p1:', str; ++prob;}
|
if (a1 != a2) {print '**** (a^p1)^p2 != (a^p2)^p1:', str; ++prob;}
|
||||||
if (a1 != a3) {print '**** (a^p1)^p2 != a^(p1*p2):', str; ++prob;}
|
if (a1 != a3) {print '**** (a^p1)^p2 != a^(p1*p2):', str; ++prob;}
|
||||||
|
if (b1 != b2) {print '**** (b^p1)^p2 != (b^p2)^p1:', str; ++prob;}
|
||||||
|
if (b1 != b3) {print '**** (b^p1)^p2 != b^(p1*p2):', str; ++prob;}
|
||||||
print str;
|
print str;
|
||||||
}
|
}
|
||||||
print '013: parsed powercheck(a, p1, p2, str)';
|
print '013: parsed powercheck(a, p1, p2, str)';
|
||||||
@@ -1375,7 +1407,44 @@ define test_functions()
|
|||||||
vrfy(a == -4, '1203: a == -4');
|
vrfy(a == -4, '1203: a == -4');
|
||||||
vrfy(b == 2, '1204: b == 2');
|
vrfy(b == 2, '1204: b == 2');
|
||||||
|
|
||||||
print '1205: Ending test_functions';
|
/* runtime(), systime(), usertime() return numeric values */
|
||||||
|
vrfy(isnum(runtime()), '1205: isnum(runtime())');
|
||||||
|
vrfy(isnum(systime()), '1206: isnum(systime())');
|
||||||
|
vrfy(isnum(usertime()), '1207: isnum(usertime())');
|
||||||
|
|
||||||
|
/* more jacobi tests */
|
||||||
|
vrfy(jacobi(987897,987) == 0, '1208: jacobi(987897,987) == 0');
|
||||||
|
vrfy(jacobi(897,987) == 0, '1209: jacobi(897,987) == 0');
|
||||||
|
vrfy(jacobi(987,897) == 0, '1210: jacobi(987,897) == 0');
|
||||||
|
vrfy(jacobi(90,897) == 0, '1211: jacobi(90,897) == 0');
|
||||||
|
vrfy(jacobi(45,897) == 0, '1212: jacobi(45,897) == 0');
|
||||||
|
vrfy(jacobi(897,45) == 0, '1213: jacobi(897,45) == 0');
|
||||||
|
vrfy(jacobi(42,45) == 0, '1214: jacobi(42,45) == 0');
|
||||||
|
vrfy(jacobi(21,45) == 0, '1215: jacobi(21,45) == 0');
|
||||||
|
vrfy(jacobi(45,21) == 0, '1216: jacobi(45,21) == 0');
|
||||||
|
vrfy(jacobi(3,21) == 0, '1217: jacobi(3,21) == 0');
|
||||||
|
vrfy(jacobi(0,21) == 0, '1218: jacobi(0,21) == 0');
|
||||||
|
vrfy(jacobi(0,20003) == 0, '1219: jacobi(0,20003) == 0');
|
||||||
|
vrfy(jacobi(1,20003) == 1, '1220: jacobi(1,20003) == 1');
|
||||||
|
vrfy(jacobi(1236,20003) == 1, '1221: jacobi(1236,20003) == 1');
|
||||||
|
vrfy(jacobi(618,20003) == -1, '1222: jacobi(618,20003) == -1');
|
||||||
|
vrfy(jacobi(309,20003) == 1, '1223: jacobi(309,20003) == 1');
|
||||||
|
vrfy(jacobi(227,309) == 1, '1224: jacobi(227,309) == 1');
|
||||||
|
vrfy(jacobi(82,227) == 1, '1225: jacobi(82,227) == 1');
|
||||||
|
vrfy(jacobi(41,227) == -1, '1226: jacobi(41,227) == -1');
|
||||||
|
vrfy(jacobi(22,41) == -1, '1227: jacobi(22,41) == -1');
|
||||||
|
vrfy(jacobi(11,41) == -1, '1228: jacobi(11,41) == -1');
|
||||||
|
vrfy(jacobi(8,11) == -1, '1229: jacobi(8,11) == -1');
|
||||||
|
vrfy(jacobi(4,11) == 1, '1230: jacobi(4,11) == 1');
|
||||||
|
vrfy(jacobi(2,11) == -1, '1231: jacobi(2,11) == -1');
|
||||||
|
vrfy(jacobi(1,11) == 1, '1232: jacobi(1,11) == 1');
|
||||||
|
vrfy(jacobi(0,11) == 0, '1233: jacobi(0,11) == 0');
|
||||||
|
vrfy(jacobi(0,0) == 0, '1234: jacobi(0,0) == 0');
|
||||||
|
vrfy(jacobi(-1,0) == 0, '1235: jacobi(-1,0) == 0');
|
||||||
|
vrfy(jacobi(-1,-1) == 0, '1236: jacobi(-1,-1) == 0');
|
||||||
|
vrfy(jacobi(0,-1) == 0, '1237: jacobi(0,-1) == 0');
|
||||||
|
|
||||||
|
print '1238: Ending test_functions';
|
||||||
}
|
}
|
||||||
print '017: parsed test_functions()';
|
print '017: parsed test_functions()';
|
||||||
|
|
||||||
@@ -2669,11 +2738,24 @@ define test_2600()
|
|||||||
vrfy(log(1e127) == 127,
|
vrfy(log(1e127) == 127,
|
||||||
strcat(str(tnum++), ': log(1e127)) == 127'));
|
strcat(str(tnum++), ': log(1e127)) == 127'));
|
||||||
vrfy(round(log(17^47),10) == 57.8310993048,
|
vrfy(round(log(17^47),10) == 57.8310993048,
|
||||||
strcat(str(tnum++),
|
strcat(str(tnum++),
|
||||||
': round(log(17^47),10) == 57.8310993048'));
|
': round(log(17^47),10) == 57.8310993048'));
|
||||||
vrfy(round(log(127),10) == 2.103803721,
|
vrfy(round(log(127),10) == 2.103803721,
|
||||||
strcat(str(tnum++),
|
strcat(str(tnum++),
|
||||||
': round(log(127),10) == 2.103803721'));
|
': round(log(127),10) == 2.103803721'));
|
||||||
|
vrfy(round(log(0.25,0.00001),5) == -0.60206,
|
||||||
|
strcat(str(tnum++),
|
||||||
|
': round(log(0.25,0.00001),5) == -0.60206'));
|
||||||
|
vrfy(round(log(0.25,1e-10),10) == -0.6020599913,
|
||||||
|
strcat(str(tnum++),
|
||||||
|
': round(log(0.25,1e-10),10) == -0.6020599913'));
|
||||||
|
vrfy(round( log(1.2+1.2i,1e-5),5) == 0.2297+0.34109i,
|
||||||
|
strcat(str(tnum++),
|
||||||
|
': round(log(1.2+1.2i,1e-5),5) == 0.2297+0.34109i'));
|
||||||
|
vrfy(round( log(1.2+1.2i,1e-10),10) == 0.2296962439+0.3410940885i,
|
||||||
|
strcat(str(tnum++),
|
||||||
|
': round(log(1.2+1.2i,1e-10),10) == ',
|
||||||
|
'0.2296962439+0.3410940885i'));
|
||||||
epsilon(i),;
|
epsilon(i),;
|
||||||
print tnum++: ': epsilon(i),;';
|
print tnum++: ': epsilon(i),;';
|
||||||
|
|
||||||
@@ -3228,7 +3310,7 @@ define test_error()
|
|||||||
'3654: scale(3,2^31) == error(10034)');
|
'3654: scale(3,2^31) == error(10034)');
|
||||||
vrfy("x" ^ 3 == error(10035), '3655: "x" ^ 3 == error(10035)');
|
vrfy("x" ^ 3 == error(10035), '3655: "x" ^ 3 == error(10035)');
|
||||||
vrfy(2 ^ "x" == error(10036), '3656: 2 ^ "x" == error(10036)');
|
vrfy(2 ^ "x" == error(10036), '3656: 2 ^ "x" == error(10036)');
|
||||||
vrfy(2 ^ 2.5 == error(10036), '3657: 2 ^ 2.5 == error(10036)');
|
vrfy(2 ^ "2" == error(10036), '3657: 2 ^ "2" == error(10036)');
|
||||||
vrfy(power("x",2.1) == error(10037),
|
vrfy(power("x",2.1) == error(10037),
|
||||||
'3658: power("x",2.1) == error(10037)');
|
'3658: power("x",2.1) == error(10037)');
|
||||||
vrfy(power(2,"x") == error(10038),
|
vrfy(power(2,"x") == error(10038),
|
||||||
@@ -5289,7 +5371,7 @@ define test_is()
|
|||||||
local nerr; /* new error value */
|
local nerr; /* new error value */
|
||||||
local odd; /* odd integer */
|
local odd; /* odd integer */
|
||||||
local even; /* even integer that is 10 times odd */
|
local even; /* even integer that is 10 times odd */
|
||||||
local hash; /* sha hash value */
|
local hash; /* sha1 hash value */
|
||||||
local id; /* identity matrix */
|
local id; /* identity matrix */
|
||||||
local list; /* list value */
|
local list; /* list value */
|
||||||
local matrix; /* non-identity matrix */
|
local matrix; /* non-identity matrix */
|
||||||
@@ -5344,8 +5426,8 @@ define test_is()
|
|||||||
print '5911: odd = 23209';
|
print '5911: odd = 23209';
|
||||||
even = odd*10;
|
even = odd*10;
|
||||||
print '5912: even = odd*10';
|
print '5912: even = odd*10';
|
||||||
hash = sha();
|
hash = sha1();
|
||||||
print '5913: hash = sha()';
|
print '5913: hash = sha1()';
|
||||||
mat id[3,3] = {1,0,0,0,1,0,0,0,1};
|
mat id[3,3] = {1,0,0,0,1,0,0,0,1};
|
||||||
print '5914: id[3,3] = {1,0,0,0,1,0,0,0,1}';
|
print '5914: id[3,3] = {1,0,0,0,1,0,0,0,1}';
|
||||||
list = list(2,3,4);
|
list = list(2,3,4);
|
||||||
@@ -5668,7 +5750,7 @@ define test_is()
|
|||||||
vrfy(ishash(nerr) == 0, '6178: ishash(nerr) == 0');
|
vrfy(ishash(nerr) == 0, '6178: ishash(nerr) == 0');
|
||||||
vrfy(ishash(odd) == 0, '6179: ishash(odd) == 0');
|
vrfy(ishash(odd) == 0, '6179: ishash(odd) == 0');
|
||||||
vrfy(ishash(even) == 0, '6180: ishash(even) == 0');
|
vrfy(ishash(even) == 0, '6180: ishash(even) == 0');
|
||||||
vrfy(ishash(hash) == 1, '6181: ishash(hash) == 1');
|
vrfy(ishash(hash) == 2, '6181: ishash(hash) == 2');
|
||||||
vrfy(ishash(id) == 0, '6182: ishash(id) == 0');
|
vrfy(ishash(id) == 0, '6182: ishash(id) == 0');
|
||||||
vrfy(ishash(list) == 0, '6183: ishash(list) == 0');
|
vrfy(ishash(list) == 0, '6183: ishash(list) == 0');
|
||||||
vrfy(ishash(matrix) == 0, '6184: ishash(matrix) == 0');
|
vrfy(ishash(matrix) == 0, '6184: ishash(matrix) == 0');
|
||||||
@@ -6761,108 +6843,6 @@ define test_blkprintf()
|
|||||||
print '172: parsed test_blkprintf()';
|
print '172: parsed test_blkprintf()';
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* test_sha - test the sha hash
|
|
||||||
*/
|
|
||||||
define test_sha()
|
|
||||||
{
|
|
||||||
local a, b, c, d, e, f, x, y, z, L, M, B1, B2, B;
|
|
||||||
|
|
||||||
print '7100: Beginning test_sha';
|
|
||||||
y = sha();
|
|
||||||
print '7101: y = sha();';
|
|
||||||
z = sha();
|
|
||||||
print '7102: z = sha();';
|
|
||||||
vrfy(y == z, '7103: y == z');
|
|
||||||
vrfy(sha("") == y, '7104: sha("") == y');
|
|
||||||
y = sha(y,1);
|
|
||||||
print '7105: y = sha(y,1);';
|
|
||||||
vrfy(y == sha(1), '7106: y == sha(1)');
|
|
||||||
vrfy(sha(y,2) == sha(1,2), '7107: sha(y,2) == sha(1,2)');
|
|
||||||
|
|
||||||
vrfy(sha(sha()) == 0xf96cea198ad1dd5617ac084a3d92c6107708c0ef,
|
|
||||||
'7108: sha(sha()) == 0xf96cea198ad1dd5617ac084a3d92c6107708c0ef');
|
|
||||||
|
|
||||||
vrfy(sha(sha("a"))==0x37f297772fae4cb1ba39b6cf9cf0381180bd62f2,
|
|
||||||
'7109: sha(sha("a"))==0x37f297772fae4cb1ba39b6cf9cf0381180bd62f2');
|
|
||||||
|
|
||||||
vrfy(sha(sha("ab"))==0x488373d362684af3d3f7a6a408b59dfe85419e09,
|
|
||||||
'7110: sha(sha("ab"))==0x488373d362684af3d3f7a6a408b59dfe85419e09');
|
|
||||||
vrfy(sha(sha("abc"))==0x0164b8a914cd2a5e74c4f7ff082c4d97f1edf880,
|
|
||||||
'7111: sha(sha("abc"))==0x0164b8a914cd2a5e74c4f7ff082c4d97f1edf880');
|
|
||||||
vrfy(sha(sha("abcd"))==0x082c73b06f71185d840fb4b28eb3abade67714bc,
|
|
||||||
'7112: sha(sha("abcd"))==0x082c73b06f71185d840fb4b28eb3abade67714bc');
|
|
||||||
vrfy(sha(sha("abcde"))==0xd624e34951bb800f0acae773001df8cffe781ba8,
|
|
||||||
'7113: sha(sha("abcde"))==0xd624e34951bb800f0acae773001df8cffe781ba8');
|
|
||||||
vrfy(sha(sha("abcdef"))==0x2a589f7750598dc0ea0a608719e04327f609279a,
|
|
||||||
'7114: sha(sha("abcdef"))==0x2a589f7750598dc0ea0a608719e04327f609279a');
|
|
||||||
vrfy(sha(sha("abcdefg"))==0x5bdf01f9298e9d19d3f8d15520fd74eed600b497,
|
|
||||||
'7115: sha(sha("abcdefg"))==0x5bdf01f9298e9d19d3f8d15520fd74eed600b497');
|
|
||||||
vrfy(sha(sha("abcdefgh"))==0x734ba8b31975d0dbae4d6e249f4e8da270796c94,
|
|
||||||
'7116: sha(sha("abcdefgh"))==0x734ba8b31975d0dbae4d6e249f4e8da270796c94');
|
|
||||||
|
|
||||||
vrfy(sha(sha(1)) == 0x864c8d09e828c7c31d62693736a5a9302c282777,
|
|
||||||
'7117: sha(sha(1)) == 0x864c8d09e828c7c31d62693736a5a9302c282777');
|
|
||||||
|
|
||||||
vrfy(sha(sha(2)) == 0x2c0b59c512cb20fad6bb0883b69c9f5a46545808,
|
|
||||||
'7118: sha(sha(2)) == 0x2c0b59c512cb20fad6bb0883b69c9f5a46545808');
|
|
||||||
|
|
||||||
vrfy(sha(sha(22/7))==0x7ddb7f8a7e9d70757f157744fddea7a6c6a6bcc6,
|
|
||||||
'7119: sha(sha(22/7)==0x7ddb7f8a7e9d70757f157744fddea7a6c6a6bcc6');
|
|
||||||
vrfy(sha(sha(isqrt(2e1000))) ==
|
|
||||||
0x6db8d9cf0b018b8f9cbbf5aa1edb8066d19e1bb0,
|
|
||||||
'7120: sha(sha(isqrt(2e1000)==0x6db8d9cf0b018b8f9cbbf5aa1edb8066d19e1bb0');
|
|
||||||
vrfy(sha("x", "y", "z") == sha("xyz"),
|
|
||||||
'7121: sha("x", "y", "z") == sha("xyz")');
|
|
||||||
|
|
||||||
vrfy(sha(sha("this is", 7^19-8, "a composit", 3i+4.5, "hash")) ==
|
|
||||||
0x21e42319a26787046c2b28b7ae70f1b54bf0ba2a,
|
|
||||||
'7122: sha(sha("this is", 7^19-8, ..., "hash")) == 0x21e4...');
|
|
||||||
|
|
||||||
z = sha(list(1,2,3), "curds and whey", 2^21701-1, pi(1e-100));
|
|
||||||
print '7123: z = sha(list(1,2,3), "curds and whey", 2^21701-1, pi(1e-100));';
|
|
||||||
vrfy(sha(z) == 257075527903934749824451356785709876382198951165,
|
|
||||||
'7124: sha(z) == 257075527903934749824451356785709876382198951165');
|
|
||||||
|
|
||||||
y = sha();
|
|
||||||
print '7125: y = sha()';
|
|
||||||
y = sha(y, list(1,2,3), "curds and whey");
|
|
||||||
print '7126: y = sha(y, list(1,2,3), "curds and whey")';
|
|
||||||
y = sha(y, 2^21701-1);
|
|
||||||
print '7127: y = sha(y, 2^21701-1)';
|
|
||||||
y = sha(y, pi(1e-100));
|
|
||||||
print '7128: y = sha(y, pi(1e-100))';
|
|
||||||
vrfy(y == z, '7129: y == z');
|
|
||||||
|
|
||||||
B = blk() = {"a", "b", "c"};
|
|
||||||
print '7130: B = blk() = {"a", "b", "c"};';
|
|
||||||
vrfy(sha(B) == sha("abc"), '7131: sha(B) == sha("abc")');
|
|
||||||
|
|
||||||
B1 = blk() = {1,2,3,4};
|
|
||||||
print '7132: B1 = blk() = {1,2,3,4};';
|
|
||||||
B2 = blk() = {5,6,7,8};
|
|
||||||
print '7133: B2 = blk() = {5,6,7,8};';
|
|
||||||
B = blk() = {1,2,3,4,5,6,7,8};
|
|
||||||
print '7134: B = blk() = {1,2,3,4,5,6,7,8};';
|
|
||||||
|
|
||||||
vrfy(sha(B1, B2) == sha(B), '7135: sha(B1, B2) == sha(B)');
|
|
||||||
vrfy(sha(B[1], B[3], B[5]) == sha("\02\04\06"),
|
|
||||||
'7136: sha(B[1], B[3], B[5]) == sha("\02\04\06")');
|
|
||||||
|
|
||||||
L = list(1,2,3);
|
|
||||||
print '7137: L = list(1,2,3)';
|
|
||||||
mat M[3] = {4,5,6};
|
|
||||||
print '7138: mat M[3] = {4,5,6}';
|
|
||||||
vrfy(sha(sha(L), M, B) == sha(L, M, B),
|
|
||||||
'7139: sha(sha(L), M, B) == sha(L, M, B)');
|
|
||||||
vrfy(sha(sha(L,M), B) == sha(L, M, B),
|
|
||||||
'7140: sha(sha(L, M), B) == sha(L, M, B)');
|
|
||||||
|
|
||||||
print '7141: Ending test_sha';
|
|
||||||
}
|
|
||||||
print '173: parsed test_sha()';
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* test_sha1 - test the sha1 hash
|
* test_sha1 - test the sha1 hash
|
||||||
*/
|
*/
|
||||||
@@ -6948,88 +6928,6 @@ define test_sha1()
|
|||||||
print '174: parsed test_sha1()';
|
print '174: parsed test_sha1()';
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* test_md5 - test the md5 hash
|
|
||||||
*/
|
|
||||||
define test_md5()
|
|
||||||
{
|
|
||||||
local a, b, c, d, e, f, x, y, z, L, M, B;
|
|
||||||
|
|
||||||
print '7300: Beginning test_md5';
|
|
||||||
y = md5();
|
|
||||||
print '7301: y = md5();';
|
|
||||||
z = md5();
|
|
||||||
print '7302: z = md5();';
|
|
||||||
vrfy(y == z, '7303: y == z');
|
|
||||||
y = md5(y,1);
|
|
||||||
print '7304: y = md5(y,1);';
|
|
||||||
z = md5(1);
|
|
||||||
print '7305: z = md5(1);';
|
|
||||||
vrfy(y == z, '7306: y == z');
|
|
||||||
vrfy(md5(z,2) == md5(1,2), '7307: md5(z,2) == md5(1,2)');
|
|
||||||
|
|
||||||
vrfy(md5(md5()) == 0xd41d8cd98f00b204e9800998ecf8427e,
|
|
||||||
'7308: md5(md5()) == 0xd41d8cd98f00b204e9800998ecf8427e');
|
|
||||||
vrfy(md5("x", "y", "z") == md5("xyz"),
|
|
||||||
'7309: md5("x", "y", "z") == md5("xyz")');
|
|
||||||
|
|
||||||
vrfy(md5(md5("this is", 7^19-8, "a composit", 3i+4.5, "hash")) ==
|
|
||||||
0x39a5a8e24a2eb65a51af462c8bdd5e3,
|
|
||||||
'7310: md5(md5("this is", 7^19-8, "a composit", 3i+4.5, "hash")) == ...');
|
|
||||||
|
|
||||||
|
|
||||||
z = md5(list(1,2,3), "curds and whey", 2^21701-1, pi(1e-100));
|
|
||||||
print '7311: z = md5(list(1,2,3), "curds and whey", 2^21701-1, pi(1e-100));';
|
|
||||||
vrfy(md5(z) == 0x487462e577eabef0302dd13af6632546,
|
|
||||||
'7312: md5(z) == 0x487462e577eabef0302dd13af6632546');
|
|
||||||
y = md5();
|
|
||||||
print '7313: y = md5();';
|
|
||||||
y = md5(y, list(1,2,3), "curds and whey");
|
|
||||||
print '7314: y = md5(y, list(1,2,3), "curds and whey")';
|
|
||||||
y = md5(y, 2^21701-1);
|
|
||||||
print '7315: y = md5(y, 2^21701-1);';
|
|
||||||
y = md5(y, pi(1e-100));
|
|
||||||
print '7316: y = md5(y, pi(1e-100));';
|
|
||||||
vrfy(y == z, '7317: y == z');
|
|
||||||
|
|
||||||
vrfy(md5(md5("a")) == 0x0cc175b9c0f1b6a831c399e269772661,
|
|
||||||
'7318: md5(md5("a")) == 0x0cc175b9c0f1b6a831c399e269772661');
|
|
||||||
vrfy(md5(md5("ab")) == 0x187ef4436122d1cc2f40dc2b92f0eba0,
|
|
||||||
'7319: md5(md5("ab")) == 0x187ef4436122d1cc2f40dc2b92f0eba0');
|
|
||||||
vrfy(md5(md5("abc")) == 0x900150983cd24fb0d6963f7d28e17f72,
|
|
||||||
'7320: md5(md5("abc")) == 0x900150983cd24fb0d6963f7d28e17f72');
|
|
||||||
vrfy(md5(md5("abcd")) == 0xe2fc714c4727ee9395f324cd2e7f331f,
|
|
||||||
'7321: md5(md5("abcd")) == 0xe2fc714c4727ee9395f324cd2e7f331f');
|
|
||||||
vrfy(md5(md5("abcde")) == 0xab56b4d92b40713acc5af89985d4b786,
|
|
||||||
'7322: md5(md5("abcde")) == 0xab56b4d92b40713acc5af89985d4b786');
|
|
||||||
vrfy(md5(md5("abcdef")) == 0xe80b5017098950fc58aad83c8c14978e,
|
|
||||||
'7323: md5(md5("abcdef")) == 0xe80b5017098950fc58aad83c8c14978e');
|
|
||||||
vrfy(md5(md5("abcdefg")) == 0x7ac66c0f148de9519b8bd264312c4d64,
|
|
||||||
'7324: md5(md5("abcdefg")) == 0x7ac66c0f148de9519b8bd264312c4d64');
|
|
||||||
vrfy(md5(md5("abcdefgh")) == 0xe8dc4081b13434b45189a720b77b6818,
|
|
||||||
'7325: md5(md5("abcdefgh")) == 0xe8dc4081b13434b45189a720b77b6818');
|
|
||||||
vrfy(md5(md5(1)) == 0x44fe7987067ac45311c88772038f60d1,
|
|
||||||
'7326: md5(md5(1)) == 0x44fe7987067ac45311c88772038f60d1');
|
|
||||||
vrfy(md5(md5(22/7)) == 0x9274b951e1dfb9cba22af1c127daa8e7,
|
|
||||||
'7327: md5(md5(22/7) == 0x9274b951e1dfb9cba22af1c127daa8e7');
|
|
||||||
vrfy(md5(md5(isqrt(2e1000))) == 0xe56ac4b8cad869e738a04fedc97058f3,
|
|
||||||
'7328: md5(md5(isqrt(2e1000))) == 0xe56ac4b8cad869e738a04fedc97058f3');
|
|
||||||
L = list(1,2,3);
|
|
||||||
print '7329: L = list(1,2,3)';
|
|
||||||
mat M[3] = {4,5,6};
|
|
||||||
print '7330: mat M[3] = {4,5,6}';
|
|
||||||
B = blk() = {7,8,9};
|
|
||||||
print '7331: B = blk() = {7,8,9}';
|
|
||||||
vrfy(md5(md5(L), M, B) == md5(L, M, B),
|
|
||||||
'7332: md5(md5(L), M, B) == md5(L, M, B)');
|
|
||||||
vrfy(md5(md5(L,M), B) == md5(L, M, B),
|
|
||||||
'7333: md5(md5(L, M), B) == md5(L, M, B)');
|
|
||||||
|
|
||||||
print '7334: Ending test_md5';
|
|
||||||
}
|
|
||||||
print '175: parsed test_md5()';
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* The 7400's contain tests for saveval and dot. These tests are
|
* The 7400's contain tests for saveval and dot. These tests are
|
||||||
* done inline near the bottom.
|
* done inline near the bottom.
|
||||||
@@ -7562,6 +7460,85 @@ define test_somenew()
|
|||||||
print '190: parsed test_somenew()';
|
print '190: parsed test_somenew()';
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* test_exponentiation - test new exponentiation functionaltiy
|
||||||
|
*/
|
||||||
|
define test_exponentiation()
|
||||||
|
{
|
||||||
|
local a;
|
||||||
|
|
||||||
|
print '8800: Starting test_somenew';
|
||||||
|
|
||||||
|
/* unexpected help file cases */
|
||||||
|
vrfy(2^3 == 8, '8801: 2^3 == 8');
|
||||||
|
vrfy(2.5 ^ 3.5 == power(2.5, 3.5),
|
||||||
|
'8802: 2.5 ^ 3.5 == power(2.5, 3.5)');
|
||||||
|
vrfy(2.5 ^ 2.718i == power(2.5, 2.718i),
|
||||||
|
'8803: 2.5 ^ 2.718i == power(2.5, 2.718i)');
|
||||||
|
vrfy(3i^4 == 81, '8804: 3i^4 == 81');
|
||||||
|
vrfy(0.5i ^ 0.25 == power(0.5i, 0.25),
|
||||||
|
'8804: 0.5i ^ 0.25 == power(0.5i, 0.25)');
|
||||||
|
vrfy(3.13145i^0.30103i == power(3.13145i, 0.30103i),
|
||||||
|
'8806: 3.13145i^0.30103i == power(3.13145i, 0.30103i)');
|
||||||
|
|
||||||
|
/* deal with some corner error cases */
|
||||||
|
ecnt += 12;
|
||||||
|
print '8807: ecnt += 2';
|
||||||
|
vrfy((1/0) ^ -1 == 0, '8808: (1/0) ^ -1 == 0');
|
||||||
|
vrfy((1/0) ^ -2 == 0, '8809: (1/0) ^ -2 == 0');
|
||||||
|
vrfy((1/0) ^ 0 == error(10001), '8810: (1/0) ^ 0 == error(10001)');
|
||||||
|
vrfy((1/0) ^ 3 == error(10001), '8811: (1/0) ^ 3 == error(10001)');
|
||||||
|
vrfy(0 ^ -2 == error(10001), '8812: 0 ^ -2 == error(10001)');
|
||||||
|
vrfy((1/0) ^ 1i == error(10001),'8813: (1/0) ^ 1i == error(10001)');
|
||||||
|
vrfy((1/0) ^ 0i == error(10001),'8814: (1/0) ^ 0i == error(10001)');
|
||||||
|
|
||||||
|
/* real ^ real */
|
||||||
|
vrfy(5^6 == 15625, '8815: 5^6 == 15625');
|
||||||
|
vrfy(10^31 == 1e31, '8816: 10^31 == 1e31');
|
||||||
|
vrfy(10 ^ (127/31) == power(10, 127/31),
|
||||||
|
'8817: 10 ^ (127/31) == power(10, 127/31)');
|
||||||
|
vrfy((10^31) ^ 10 == 1e310, '8818: (10^31) ^ 10 == 1e310');
|
||||||
|
|
||||||
|
/* complex ^ real */
|
||||||
|
vrfy(10i ^ 10 == -1e10, '8819: 10i ^ 10 == -1e10');
|
||||||
|
vrfy((-10i) ^ 10 == -1e10, '8820: (-10i) ^ 10 == -1e10');
|
||||||
|
vrfy((1+1i) ^ 4 == -4, '8821: (1+1i) ^ 4 == -4');
|
||||||
|
vrfy((1+1i) ^ 65536 == 2^32768, '8822: (1+1i) ^ 65536 == 2^32768');
|
||||||
|
vrfy((1+1i) ^ (2^20) == 2^(2^19),
|
||||||
|
'8823: (1+1i) ^ (2^20) == 2^(2^19)');
|
||||||
|
vrfy((31+17i) ^ pi() == power(31+17i, pi()),
|
||||||
|
'8824: (31+17i) ^ pi() == power(31+17i, pi()');
|
||||||
|
vrfy((5+7i) ^ exp(5) == power(5+7i, exp(5)),
|
||||||
|
'8825: (5+7i) ^ exp(5) == power(5+7i, exp(5))');
|
||||||
|
|
||||||
|
/* real ^ complex */
|
||||||
|
vrfy(10 ^ 1i == power(10, 1i), '8826: 10 ^ 1i == power(10, 1i)');
|
||||||
|
vrfy(10 ^ (2+3i) == power(10, 2+3i),
|
||||||
|
'8827: 10 ^ (2+3i) == power(10, 2+3i)');
|
||||||
|
vrfy(pi() ^ (2+3i) == power(pi(), 2+3i),
|
||||||
|
'8828: pi() ^ (2+3i) == power(pi(), 2+3i)');
|
||||||
|
vrfy(exp(64) ^ (2+3i) == power(exp(64), 2+3i),
|
||||||
|
'8828: exp(64) ^ (2+3i) == power(exp(64), 2+3i)');
|
||||||
|
vrfy(pi() ^ (257+127i) == power(pi(), 257+127i),
|
||||||
|
'8829: pi() ^ (257+127i) == power(pi(), 257+127i)');
|
||||||
|
vrfy(pi() ^ asin(-2) == power(pi(), asin(-2)),
|
||||||
|
'8830: pi() ^ asin(-2) == power(pi(), asin(-2)');
|
||||||
|
|
||||||
|
/* complex ^ complex */
|
||||||
|
vrfy((3+4i) ^ (2+3i) == power(3+4i, 2+3i),
|
||||||
|
'8831: (3+4i) ^ (2+3i) == power(3+4i, 2+3i)');
|
||||||
|
vrfy(ln(-10) ^ (2+3i) == power(ln(-10), 2+3i),
|
||||||
|
'8832: ln(-10) ^ (2+3i) == power(ln(-10), 2+3i)');
|
||||||
|
vrfy((pi()*1i) ^ asin(-2) == power(pi()*1i, asin(-2)),
|
||||||
|
'8833: (pi()*1i) ^ asin(-2) == power(pi()*1i, asin(-2))');
|
||||||
|
vrfy((exp(1)+pi()*1i) ^ asin(-2) == power(exp(1)+pi()*1i, asin(-2)),
|
||||||
|
'8834: (exp(1)+pi()*1i) ^ asin(-2) == power(exp(1)+pi()*1i, asin(-2))');
|
||||||
|
|
||||||
|
print '8835: Ending test_somenew';
|
||||||
|
}
|
||||||
|
print '191: parsed test_exponentiation()';
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* test_quit - test the QUIT functionality
|
* test_quit - test the QUIT functionality
|
||||||
*/
|
*/
|
||||||
@@ -7789,12 +7766,8 @@ return test_name();
|
|||||||
print;
|
print;
|
||||||
return test_blkprintf();
|
return test_blkprintf();
|
||||||
print;
|
print;
|
||||||
return test_sha();
|
|
||||||
print;
|
|
||||||
return test_sha1();
|
return test_sha1();
|
||||||
print;
|
print;
|
||||||
return test_md5();
|
|
||||||
print;
|
|
||||||
|
|
||||||
print '7400: Beginning test_savedot';
|
print '7400: Beginning test_savedot';
|
||||||
print '7401: saveval(1);';
|
print '7401: saveval(1);';
|
||||||
@@ -7933,6 +7906,14 @@ vrfy(dotest("set8700.line", 8703) == 0,
|
|||||||
/* 87xx: Ending dotest runs is printed by set8700.test */
|
/* 87xx: Ending dotest runs is printed by set8700.test */
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* new exponentiation functionaltiy
|
||||||
|
*/
|
||||||
|
print;
|
||||||
|
return test_exponentiation();
|
||||||
|
/* 88xx: test exponentiation */
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* read various calc resource files
|
* read various calc resource files
|
||||||
*
|
*
|
||||||
@@ -8031,7 +8012,11 @@ print '9838: skipping read -once hello.cal because it is an infinite loop';
|
|||||||
print '9839: skipping read -once xx_print.cal because it is a printing demo';
|
print '9839: skipping read -once xx_print.cal because it is a printing demo';
|
||||||
read -once sumtimes;
|
read -once sumtimes;
|
||||||
print '9840: read -once sumtimes';
|
print '9840: read -once sumtimes';
|
||||||
print '9841: Ending read of selected calc resource files';
|
read -once dms;
|
||||||
|
print '9841: read -once dms';
|
||||||
|
read -once hms;
|
||||||
|
print '9842: read -once hms';
|
||||||
|
print '9843: Ending read of selected calc resource files';
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@@ -15,10 +15,10 @@
|
|||||||
* A copy of version 2.1 of the GNU Lesser General Public License is
|
* 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
|
* distributed with calc under the filename COPYING-LGPL. You should have
|
||||||
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||||
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
*
|
*
|
||||||
* @(#) $Revision: 29.4 $
|
* @(#) $Revision: 30.1 $
|
||||||
* @(#) $Id: repeat.cal,v 29.4 2003/01/26 19:42:03 chongo Exp $
|
* @(#) $Id: repeat.cal,v 30.1 2007/03/16 11:09:54 chongo Exp $
|
||||||
* @(#) $Source: /usr/local/src/cmd/calc/cal/RCS/repeat.cal,v $
|
* @(#) $Source: /usr/local/src/cmd/calc/cal/RCS/repeat.cal,v $
|
||||||
*
|
*
|
||||||
* Under source code control: 2003/01/05 00:00:01
|
* Under source code control: 2003/01/05 00:00:01
|
||||||
|
@@ -15,8 +15,8 @@
|
|||||||
* NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
|
* NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
|
||||||
* CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
* CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||||
*
|
*
|
||||||
* @(#) $Revision: 29.2 $
|
* @(#) $Revision: 30.2 $
|
||||||
* @(#) $Id: screen.cal,v 29.2 2006/05/01 19:21:18 chongo Exp $
|
* @(#) $Id: screen.cal,v 30.2 2007/03/16 11:09:54 chongo Exp $
|
||||||
* @(#) $Source: /usr/local/src/cmd/calc/cal/RCS/screen.cal,v $
|
* @(#) $Source: /usr/local/src/cmd/calc/cal/RCS/screen.cal,v $
|
||||||
*
|
*
|
||||||
* This file is not covered under version 2.1 of the GNU LGPL.
|
* This file is not covered under version 2.1 of the GNU LGPL.
|
||||||
|
@@ -15,10 +15,10 @@
|
|||||||
* A copy of version 2.1 of the GNU Lesser General Public License is
|
* 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
|
* distributed with calc under the filename COPYING-LGPL. You should have
|
||||||
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||||
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
*
|
*
|
||||||
* @(#) $Revision: 29.3 $
|
* @(#) $Revision: 30.1 $
|
||||||
* @(#) $Id: seedrandom.cal,v 29.3 2001/03/31 13:31:34 chongo Exp $
|
* @(#) $Id: seedrandom.cal,v 30.1 2007/03/16 11:09:54 chongo Exp $
|
||||||
* @(#) $Source: /usr/local/src/cmd/calc/cal/RCS/seedrandom.cal,v $
|
* @(#) $Source: /usr/local/src/cmd/calc/cal/RCS/seedrandom.cal,v $
|
||||||
*
|
*
|
||||||
* Under source code control: 1996/01/01 08:21:00
|
* Under source code control: 1996/01/01 08:21:00
|
||||||
|
@@ -15,10 +15,10 @@
|
|||||||
* A copy of version 2.1 of the GNU Lesser General Public License is
|
* 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
|
* distributed with calc under the filename COPYING-LGPL. You should have
|
||||||
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||||
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
*
|
*
|
||||||
* @(#) $Revision: 29.2 $
|
* @(#) $Revision: 30.1 $
|
||||||
* @(#) $Id: set8700.cal,v 29.2 2006/08/20 16:16:11 chongo Exp $
|
* @(#) $Id: set8700.cal,v 30.1 2007/03/16 11:09:54 chongo Exp $
|
||||||
* @(#) $Source: /usr/local/src/cmd/calc/cal/RCS/set8700.cal,v $
|
* @(#) $Source: /usr/local/src/cmd/calc/cal/RCS/set8700.cal,v $
|
||||||
*
|
*
|
||||||
* Under source code control: 2006/05/20 14:10:11
|
* Under source code control: 2006/05/20 14:10:11
|
||||||
|
@@ -15,10 +15,10 @@
|
|||||||
## A copy of version 2.1 of the GNU Lesser General Public License is
|
## 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
|
## distributed with calc under the filename COPYING-LGPL. You should have
|
||||||
## received a copy with calc; if not, write to Free Software Foundation, Inc.
|
## received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||||
## 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
## 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
##
|
##
|
||||||
## @(#) $Revision: 29.4 $
|
## @(#) $Revision: 30.1 $
|
||||||
## @(#) $Id: set8700.line,v 29.4 2006/08/20 16:16:11 chongo Exp $
|
## @(#) $Id: set8700.line,v 30.1 2007/03/16 11:09:54 chongo Exp $
|
||||||
## @(#) $Source: /usr/local/src/cmd/calc/cal/RCS/set8700.line,v $
|
## @(#) $Source: /usr/local/src/cmd/calc/cal/RCS/set8700.line,v $
|
||||||
##
|
##
|
||||||
## Under source code control: 2006/05/20 14:10:11
|
## Under source code control: 2006/05/20 14:10:11
|
||||||
|
@@ -15,10 +15,10 @@
|
|||||||
* A copy of version 2.1 of the GNU Lesser General Public License is
|
* 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
|
* distributed with calc under the filename COPYING-LGPL. You should have
|
||||||
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||||
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
*
|
*
|
||||||
* @(#) $Revision: 29.2 $
|
* @(#) $Revision: 30.2 $
|
||||||
* @(#) $Id: solve.cal,v 29.2 2000/06/07 14:02:25 chongo Exp $
|
* @(#) $Id: solve.cal,v 30.2 2008/05/10 13:30:00 chongo Exp $
|
||||||
* @(#) $Source: /usr/local/src/cmd/calc/cal/RCS/solve.cal,v $
|
* @(#) $Source: /usr/local/src/cmd/calc/cal/RCS/solve.cal,v $
|
||||||
*
|
*
|
||||||
* Under source code control: 1990/02/15 01:50:37
|
* Under source code control: 1990/02/15 01:50:37
|
||||||
@@ -47,7 +47,7 @@ define solve(low, high, epsilon)
|
|||||||
if (abs(flow) < epsilon)
|
if (abs(flow) < epsilon)
|
||||||
return low;
|
return low;
|
||||||
fhigh = f(high);
|
fhigh = f(high);
|
||||||
if (abs(flow) < epsilon)
|
if (abs(fhigh) < epsilon)
|
||||||
return high;
|
return high;
|
||||||
if (sgn(flow) == sgn(fhigh))
|
if (sgn(flow) == sgn(fhigh))
|
||||||
quit "Non-opposite signs";
|
quit "Non-opposite signs";
|
||||||
|
@@ -15,10 +15,10 @@
|
|||||||
* A copy of version 2.1 of the GNU Lesser General Public License is
|
* 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
|
* distributed with calc under the filename COPYING-LGPL. You should have
|
||||||
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||||
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
*
|
*
|
||||||
* @(#) $Revision: 29.2 $
|
* @(#) $Revision: 30.1 $
|
||||||
* @(#) $Id: sumsq.cal,v 29.2 2000/06/07 14:02:25 chongo Exp $
|
* @(#) $Id: sumsq.cal,v 30.1 2007/03/16 11:09:54 chongo Exp $
|
||||||
* @(#) $Source: /usr/local/src/cmd/calc/cal/RCS/sumsq.cal,v $
|
* @(#) $Source: /usr/local/src/cmd/calc/cal/RCS/sumsq.cal,v $
|
||||||
*
|
*
|
||||||
* Under source code control: 1990/02/15 01:50:37
|
* Under source code control: 1990/02/15 01:50:37
|
||||||
|
@@ -15,10 +15,10 @@
|
|||||||
* A copy of version 2.1 of the GNU Lesser General Public License is
|
* 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
|
* distributed with calc under the filename COPYING-LGPL. You should have
|
||||||
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||||
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
*
|
*
|
||||||
* @(#) $Revision: 29.1 $
|
* @(#) $Revision: 30.1 $
|
||||||
* @(#) $Id: sumtimes.cal,v 29.1 2006/06/23 00:35:30 chongo Exp $
|
* @(#) $Id: sumtimes.cal,v 30.1 2007/03/16 11:09:54 chongo Exp $
|
||||||
* @(#) $Source: /usr/local/src/cmd/calc/cal/RCS/sumtimes.cal,v $
|
* @(#) $Source: /usr/local/src/cmd/calc/cal/RCS/sumtimes.cal,v $
|
||||||
*
|
*
|
||||||
* Under source code control: 2006/06/22 17:29
|
* Under source code control: 2006/06/22 17:29
|
||||||
@@ -40,13 +40,13 @@ define timematsum(N) {
|
|||||||
for (n = 0; n < N; n++) sumtimes_A[n] = rand(N);
|
for (n = 0; n < N; n++) sumtimes_A[n] = rand(N);
|
||||||
|
|
||||||
ptop = &sumtimes_A[n-1];
|
ptop = &sumtimes_A[n-1];
|
||||||
sumtimes_t0 = runtime();
|
sumtimes_t0 = usertime();
|
||||||
for (s = n = 0; n < N; n++) s += sumtimes_A[n];
|
for (s = n = 0; n < N; n++) s += sumtimes_A[n];
|
||||||
sumtimes_t1 = runtime();
|
sumtimes_t1 = usertime();
|
||||||
for (s = 0, p = &sumtimes_A[0]; p <= ptop; p++) s += *p;
|
for (s = 0, p = &sumtimes_A[0]; p <= ptop; p++) s += *p;
|
||||||
sumtimes_t2 = runtime();
|
sumtimes_t2 = usertime();
|
||||||
s = matsum(sumtimes_A);
|
s = matsum(sumtimes_A);
|
||||||
sumtimes_t3 = runtime();
|
sumtimes_t3 = usertime();
|
||||||
|
|
||||||
print "Matrix sum runtimes";
|
print "Matrix sum runtimes";
|
||||||
printf('\tStandard "for" loop:\t\t%.4f\n', sumtimes_t1 - sumtimes_t0);
|
printf('\tStandard "for" loop:\t\t%.4f\n', sumtimes_t1 - sumtimes_t0);
|
||||||
@@ -60,11 +60,11 @@ define timelistsum(N) {
|
|||||||
sumtimes_A = makelist(N);
|
sumtimes_A = makelist(N);
|
||||||
for (n = 0; n < N; n++) sumtimes_A[n] = rand(N);
|
for (n = 0; n < N; n++) sumtimes_A[n] = rand(N);
|
||||||
|
|
||||||
sumtimes_t0 = runtime();
|
sumtimes_t0 = usertime();
|
||||||
for (s = n = 0; n < N; n++) s += sumtimes_A[n];
|
for (s = n = 0; n < N; n++) s += sumtimes_A[n];
|
||||||
sumtimes_t1 = runtime();
|
sumtimes_t1 = usertime();
|
||||||
s = sum(sumtimes_A);
|
s = sum(sumtimes_A);
|
||||||
sumtimes_t2 = runtime();
|
sumtimes_t2 = usertime();
|
||||||
print "List sum runtimes";
|
print "List sum runtimes";
|
||||||
printf('\tStandard "for" loop:\t\t%.4f\n', sumtimes_t1 - sumtimes_t0);
|
printf('\tStandard "for" loop:\t\t%.4f\n', sumtimes_t1 - sumtimes_t0);
|
||||||
printf('\tUsing builtin "sum":\t\t%.4f\n', sumtimes_t2 - sumtimes_t1);
|
printf('\tUsing builtin "sum":\t\t%.4f\n', sumtimes_t2 - sumtimes_t1);
|
||||||
@@ -76,9 +76,9 @@ define timematsort(N) {
|
|||||||
|
|
||||||
sumtimes_A = mat[N];
|
sumtimes_A = mat[N];
|
||||||
for (n = 0; n < N; n++) sumtimes_A[n] = rand(N);
|
for (n = 0; n < N; n++) sumtimes_A[n] = rand(N);
|
||||||
sumtimes_t0 = runtime();
|
sumtimes_t0 = usertime();
|
||||||
sort(sumtimes_A);
|
sort(sumtimes_A);
|
||||||
sumtimes_t1 = runtime();
|
sumtimes_t1 = usertime();
|
||||||
printf('\tMatrix sort runtime:\t\t%.4f\n', sumtimes_t1 - sumtimes_t0);
|
printf('\tMatrix sort runtime:\t\t%.4f\n', sumtimes_t1 - sumtimes_t0);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -88,9 +88,9 @@ define timelistsort(N) {
|
|||||||
|
|
||||||
sumtimes_A = makelist(N);
|
sumtimes_A = makelist(N);
|
||||||
for (n = 0; n < N; n++) sumtimes_A[n] = rand(N);
|
for (n = 0; n < N; n++) sumtimes_A[n] = rand(N);
|
||||||
sumtimes_t0 = runtime();
|
sumtimes_t0 = usertime();
|
||||||
sort(sumtimes_A);
|
sort(sumtimes_A);
|
||||||
sumtimes_t1 = runtime();
|
sumtimes_t1 = usertime();
|
||||||
printf('\tList sort runtime:\t\t%.4f\n', sumtimes_t1 - sumtimes_t0);
|
printf('\tList sort runtime:\t\t%.4f\n', sumtimes_t1 - sumtimes_t0);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -99,9 +99,9 @@ define timematreverse(N) {
|
|||||||
|
|
||||||
sumtimes_A = mat[N];
|
sumtimes_A = mat[N];
|
||||||
for (n = 0; n < N; n++) sumtimes_A[n] = rand(N);
|
for (n = 0; n < N; n++) sumtimes_A[n] = rand(N);
|
||||||
sumtimes_t0 = runtime();
|
sumtimes_t0 = usertime();
|
||||||
reverse(sumtimes_A);
|
reverse(sumtimes_A);
|
||||||
sumtimes_t1 = runtime();
|
sumtimes_t1 = usertime();
|
||||||
printf('\tMatrix reverse runtime %.4f\n', sumtimes_t1 - sumtimes_t0);
|
printf('\tMatrix reverse runtime %.4f\n', sumtimes_t1 - sumtimes_t0);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -110,9 +110,9 @@ define timelistreverse(N) {
|
|||||||
|
|
||||||
sumtimes_A = makelist(N);
|
sumtimes_A = makelist(N);
|
||||||
for (n = 0; n < N; n++) sumtimes_A[n] = rand(N);
|
for (n = 0; n < N; n++) sumtimes_A[n] = rand(N);
|
||||||
sumtimes_t0 = runtime();
|
sumtimes_t0 = usertime();
|
||||||
reverse(sumtimes_A);
|
reverse(sumtimes_A);
|
||||||
sumtimes_t1 = runtime();
|
sumtimes_t1 = usertime();
|
||||||
printf('\tList reverse runtime:\t\t%.4f\n', sumtimes_t1 - sumtimes_t0);
|
printf('\tList reverse runtime:\t\t%.4f\n', sumtimes_t1 - sumtimes_t0);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -124,11 +124,11 @@ define timematssq(N) {
|
|||||||
for (n = 0; n < N; n++) sumtimes_A[n] = rand(N);
|
for (n = 0; n < N; n++) sumtimes_A[n] = rand(N);
|
||||||
|
|
||||||
ptop = &sumtimes_A[n-1];
|
ptop = &sumtimes_A[n-1];
|
||||||
sumtimes_t0 = runtime();
|
sumtimes_t0 = usertime();
|
||||||
for (s = n = 0; n < N; n++) s += sumtimes_A[n]^2;
|
for (s = n = 0; n < N; n++) s += sumtimes_A[n]^2;
|
||||||
sumtimes_t1 = runtime();
|
sumtimes_t1 = usertime();
|
||||||
for (s = 0, p = &sumtimes_A[0]; p <= ptop; p++) s += (*p)^2;
|
for (s = 0, p = &sumtimes_A[0]; p <= ptop; p++) s += (*p)^2;
|
||||||
sumtimes_t2 = runtime();
|
sumtimes_t2 = usertime();
|
||||||
|
|
||||||
print "Matrix sum of squares runtimes";
|
print "Matrix sum of squares runtimes";
|
||||||
printf('\tStandard "for" loop:\t\t%.4f\n', sumtimes_t1 - sumtimes_t0);
|
printf('\tStandard "for" loop:\t\t%.4f\n', sumtimes_t1 - sumtimes_t0);
|
||||||
@@ -141,11 +141,11 @@ define timelistssq(N) {
|
|||||||
sumtimes_A = makelist(N);
|
sumtimes_A = makelist(N);
|
||||||
for (n = 0; n < N; n++) sumtimes_A[n] = rand(N);
|
for (n = 0; n < N; n++) sumtimes_A[n] = rand(N);
|
||||||
|
|
||||||
sumtimes_t0 = runtime();
|
sumtimes_t0 = usertime();
|
||||||
for (s = n = 0; n < N; n++) s += sumtimes_A[n]^2;
|
for (s = n = 0; n < N; n++) s += sumtimes_A[n]^2;
|
||||||
sumtimes_t1 = runtime();
|
sumtimes_t1 = usertime();
|
||||||
s = ssq(sumtimes_A);
|
s = ssq(sumtimes_A);
|
||||||
sumtimes_t2 = runtime();
|
sumtimes_t2 = usertime();
|
||||||
print "List sum of squares runtimes";
|
print "List sum of squares runtimes";
|
||||||
printf('\tStandard "for" loop:\t\t%.4f\n', sumtimes_t1 - sumtimes_t0);
|
printf('\tStandard "for" loop:\t\t%.4f\n', sumtimes_t1 - sumtimes_t0);
|
||||||
printf('\tUsing builtin "ssq":\t\t%.4f\n', sumtimes_t2 - sumtimes_t1);
|
printf('\tUsing builtin "ssq":\t\t%.4f\n', sumtimes_t2 - sumtimes_t1);
|
||||||
@@ -157,12 +157,12 @@ define timehmean(N, M = 10) {
|
|||||||
sumtimes_A = makelist(N);
|
sumtimes_A = makelist(N);
|
||||||
for (n = 0; n < N; n++) sumtimes_A[n] = rand(1, M);
|
for (n = 0; n < N; n++) sumtimes_A[n] = rand(1, M);
|
||||||
|
|
||||||
sumtimes_t0 = runtime();
|
sumtimes_t0 = usertime();
|
||||||
for (s = n = 0; n < N; n++) s += 1/sumtimes_A[n];
|
for (s = n = 0; n < N; n++) s += 1/sumtimes_A[n];
|
||||||
v1 = N/s;
|
v1 = N/s;
|
||||||
sumtimes_t1 = runtime();
|
sumtimes_t1 = usertime();
|
||||||
v2 = hmean(sumtimes_A);
|
v2 = hmean(sumtimes_A);
|
||||||
sumtimes_t2 = runtime();
|
sumtimes_t2 = usertime();
|
||||||
print v1, v2;
|
print v1, v2;
|
||||||
print "List harmonic meanruntimes";
|
print "List harmonic meanruntimes";
|
||||||
printf('\tStandard "for" loop:\t\t%.4f\n', sumtimes_t1 - sumtimes_t0);
|
printf('\tStandard "for" loop:\t\t%.4f\n', sumtimes_t1 - sumtimes_t0);
|
||||||
|
@@ -15,10 +15,10 @@
|
|||||||
* A copy of version 2.1 of the GNU Lesser General Public License is
|
* 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
|
* distributed with calc under the filename COPYING-LGPL. You should have
|
||||||
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||||
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
*
|
*
|
||||||
* @(#) $Revision: 29.2 $
|
* @(#) $Revision: 30.1 $
|
||||||
* @(#) $Id: surd.cal,v 29.2 2000/06/07 14:02:25 chongo Exp $
|
* @(#) $Id: surd.cal,v 30.1 2007/03/16 11:09:54 chongo Exp $
|
||||||
* @(#) $Source: /usr/local/src/cmd/calc/cal/RCS/surd.cal,v $
|
* @(#) $Source: /usr/local/src/cmd/calc/cal/RCS/surd.cal,v $
|
||||||
*
|
*
|
||||||
* Under source code control: 1990/02/15 01:50:38
|
* Under source code control: 1990/02/15 01:50:38
|
||||||
|
@@ -15,10 +15,10 @@
|
|||||||
* A copy of version 2.1 of the GNU Lesser General Public License is
|
* 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
|
* distributed with calc under the filename COPYING-LGPL. You should have
|
||||||
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||||
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
*
|
*
|
||||||
* @(#) $Revision: 29.2 $
|
* @(#) $Revision: 30.1 $
|
||||||
* @(#) $Id: test1700.cal,v 29.2 2000/06/07 14:02:25 chongo Exp $
|
* @(#) $Id: test1700.cal,v 30.1 2007/03/16 11:09:54 chongo Exp $
|
||||||
* @(#) $Source: /usr/local/src/cmd/calc/cal/RCS/test1700.cal,v $
|
* @(#) $Source: /usr/local/src/cmd/calc/cal/RCS/test1700.cal,v $
|
||||||
*
|
*
|
||||||
* Under source code control: 1994/03/14 23:12:51
|
* Under source code control: 1994/03/14 23:12:51
|
||||||
|
@@ -15,10 +15,10 @@
|
|||||||
* A copy of version 2.1 of the GNU Lesser General Public License is
|
* 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
|
* distributed with calc under the filename COPYING-LGPL. You should have
|
||||||
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||||
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
*
|
*
|
||||||
* @(#) $Revision: 29.2 $
|
* @(#) $Revision: 30.1 $
|
||||||
* @(#) $Id: test2300.cal,v 29.2 2000/06/07 14:02:25 chongo Exp $
|
* @(#) $Id: test2300.cal,v 30.1 2007/03/16 11:09:54 chongo Exp $
|
||||||
* @(#) $Source: /usr/local/src/cmd/calc/cal/RCS/test2300.cal,v $
|
* @(#) $Source: /usr/local/src/cmd/calc/cal/RCS/test2300.cal,v $
|
||||||
*
|
*
|
||||||
* Under source code control: 1995/07/09 06:12:13
|
* Under source code control: 1995/07/09 06:12:13
|
||||||
|
103
cal/test2600.cal
103
cal/test2600.cal
@@ -17,10 +17,10 @@
|
|||||||
* A copy of version 2.1 of the GNU Lesser General Public License is
|
* 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
|
* distributed with calc under the filename COPYING-LGPL. You should have
|
||||||
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||||
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
*
|
*
|
||||||
* @(#) $Revision: 29.2 $
|
* @(#) $Revision: 30.2 $
|
||||||
* @(#) $Id: test2600.cal,v 29.2 2000/06/07 14:02:25 chongo Exp $
|
* @(#) $Id: test2600.cal,v 30.2 2007/07/11 22:57:23 chongo Exp $
|
||||||
* @(#) $Source: /usr/local/src/cmd/calc/cal/RCS/test2600.cal,v $
|
* @(#) $Source: /usr/local/src/cmd/calc/cal/RCS/test2600.cal,v $
|
||||||
*
|
*
|
||||||
* Under source code control: 1995/10/13 00:13:14
|
* Under source code control: 1995/10/13 00:13:14
|
||||||
@@ -313,6 +313,102 @@ define testpower(str, n, b, eps, verbose)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
define testpower2(str, n, eps, verbose)
|
||||||
|
{
|
||||||
|
local i, a, c, m, min, max;
|
||||||
|
local b;
|
||||||
|
local num;
|
||||||
|
local c2;
|
||||||
|
local oldeps;
|
||||||
|
|
||||||
|
if (isnull(verbose)) verbose = 2;
|
||||||
|
if (verbose > 0) {
|
||||||
|
print str:":",:;
|
||||||
|
}
|
||||||
|
if (isnull(eps))
|
||||||
|
eps = epsilon();
|
||||||
|
oldeps = epsilon(eps);
|
||||||
|
epsilon(eps),;
|
||||||
|
if (!isnum(b))
|
||||||
|
quit "Second argument (exponent) to be a number";
|
||||||
|
min = 1000;
|
||||||
|
max = -1000;
|
||||||
|
for (i = 1; i <= n; i++) {
|
||||||
|
if (verbose > 2) print i,:;
|
||||||
|
|
||||||
|
/* real ^ real */
|
||||||
|
a = rand(1,1e20);
|
||||||
|
a = a / (int(a/2)+rand(1,1e20));
|
||||||
|
b = rand(1,1e20);
|
||||||
|
b = b / (int(b/2)+rand(1,1e20));
|
||||||
|
c = a ^ b;
|
||||||
|
c2 = power(a, b);
|
||||||
|
if (c != c2) {
|
||||||
|
m++;
|
||||||
|
if (verbose > 1) {
|
||||||
|
printf("*** real^real failure for a = %d\n", a);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* complex ^ real */
|
||||||
|
a = rand(1,1e20);
|
||||||
|
a = a / (int(a/2)+rand(1,1e20));
|
||||||
|
b = rand(1,1e20);
|
||||||
|
b = b / (int(b/2)+rand(1,1e20));
|
||||||
|
c = (a*1i) ^ b;
|
||||||
|
c2 = power(a*1i, b);
|
||||||
|
if (c != c2) {
|
||||||
|
m++;
|
||||||
|
if (verbose > 1) {
|
||||||
|
printf("*** comp^real failure for a = %d\n", a);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* real ^ complex */
|
||||||
|
a = rand(1,1e20);
|
||||||
|
a = a / (int(a/2)+rand(1,1e20));
|
||||||
|
b = rand(1,1e20);
|
||||||
|
b = b / (int(b/2)+rand(1,1e20));
|
||||||
|
c = a ^ (b*1i);
|
||||||
|
c2 = power(a, b*1i);
|
||||||
|
if (c != c2) {
|
||||||
|
m++;
|
||||||
|
if (verbose > 1) {
|
||||||
|
printf("*** real^comp failure for a = %d\n", a);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* complex ^ complex */
|
||||||
|
a = rand(1,1e20);
|
||||||
|
a = a / (int(a/2)+rand(1,1e20));
|
||||||
|
b = rand(1,1e20);
|
||||||
|
b = b / (int(b/2)+rand(1,1e20));
|
||||||
|
c = (a*1i) ^ (b*1i);
|
||||||
|
c2 = power(a*1i, b*1i);
|
||||||
|
if (c != c2) {
|
||||||
|
m++;
|
||||||
|
if (verbose > 1) {
|
||||||
|
printf("*** comp^comp failure for a = %d\n", a);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
epsilon(oldeps),;
|
||||||
|
if (verbose > 0) {
|
||||||
|
if (m) {
|
||||||
|
printf("*** %d error(s)\n", m);
|
||||||
|
printf(" %s: rem/eps min=%d, max=%d\n",
|
||||||
|
str, min, max);
|
||||||
|
} else {
|
||||||
|
printf("no errors\n");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (verbose > 1) {
|
||||||
|
printf(" %s: rem/eps min=%0.4d, max=%0.4d\n", str, min, max);
|
||||||
|
}
|
||||||
|
return m;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
define cpow(a, b, eps) /* Find rem/eps for power(a,b,eps) */
|
define cpow(a, b, eps) /* Find rem/eps for power(a,b,eps) */
|
||||||
{
|
{
|
||||||
local v, v1, c, n, d, h;
|
local v, v1, c, n, d, h;
|
||||||
@@ -504,6 +600,7 @@ define test2600(verbose, tnum)
|
|||||||
err += testsqrt(strcat(str(tnum++),": sqrt",str(i)), n*10,
|
err += testsqrt(strcat(str(tnum++),": sqrt",str(i)), n*10,
|
||||||
ep, verbose);
|
ep, verbose);
|
||||||
}
|
}
|
||||||
|
err += testpower2(strcat(str(tnum++),": power"), n*4, ep, verbose);
|
||||||
if (verbose > 1) {
|
if (verbose > 1) {
|
||||||
if (err) {
|
if (err) {
|
||||||
print "***", err, "error(s) found in test2600";
|
print "***", err, "error(s) found in test2600";
|
||||||
|
@@ -17,10 +17,10 @@
|
|||||||
* A copy of version 2.1 of the GNU Lesser General Public License is
|
* 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
|
* distributed with calc under the filename COPYING-LGPL. You should have
|
||||||
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||||
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
*
|
*
|
||||||
* @(#) $Revision: 29.4 $
|
* @(#) $Revision: 30.1 $
|
||||||
* @(#) $Id: test2700.cal,v 29.4 2006/06/25 22:06:23 chongo Exp $
|
* @(#) $Id: test2700.cal,v 30.1 2007/03/16 11:09:54 chongo Exp $
|
||||||
* @(#) $Source: /usr/local/src/cmd/calc/cal/RCS/test2700.cal,v $
|
* @(#) $Source: /usr/local/src/cmd/calc/cal/RCS/test2700.cal,v $
|
||||||
*
|
*
|
||||||
* Under source code control: 1995/11/01 22:52:25
|
* Under source code control: 1995/11/01 22:52:25
|
||||||
|
@@ -17,10 +17,10 @@
|
|||||||
* A copy of version 2.1 of the GNU Lesser General Public License is
|
* 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
|
* distributed with calc under the filename COPYING-LGPL. You should have
|
||||||
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||||
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
*
|
*
|
||||||
* @(#) $Revision: 29.2 $
|
* @(#) $Revision: 30.1 $
|
||||||
* @(#) $Id: test3100.cal,v 29.2 2000/06/07 14:02:25 chongo Exp $
|
* @(#) $Id: test3100.cal,v 30.1 2007/03/16 11:09:54 chongo Exp $
|
||||||
* @(#) $Source: /usr/local/src/cmd/calc/cal/RCS/test3100.cal,v $
|
* @(#) $Source: /usr/local/src/cmd/calc/cal/RCS/test3100.cal,v $
|
||||||
*
|
*
|
||||||
* Under source code control: 1995/11/28 11:56:57
|
* Under source code control: 1995/11/28 11:56:57
|
||||||
|
@@ -17,10 +17,10 @@
|
|||||||
* A copy of version 2.1 of the GNU Lesser General Public License is
|
* 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
|
* distributed with calc under the filename COPYING-LGPL. You should have
|
||||||
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||||
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
*
|
*
|
||||||
* @(#) $Revision: 29.3 $
|
* @(#) $Revision: 30.1 $
|
||||||
* @(#) $Id: test3300.cal,v 29.3 2006/06/20 09:29:16 chongo Exp $
|
* @(#) $Id: test3300.cal,v 30.1 2007/03/16 11:09:54 chongo Exp $
|
||||||
* @(#) $Source: /usr/local/src/cmd/calc/cal/RCS/test3300.cal,v $
|
* @(#) $Source: /usr/local/src/cmd/calc/cal/RCS/test3300.cal,v $
|
||||||
*
|
*
|
||||||
* Under source code control: 1995/12/02 04:27:41
|
* Under source code control: 1995/12/02 04:27:41
|
||||||
@@ -81,9 +81,9 @@ define testr(str, n, N, verbose)
|
|||||||
for (i = 0; i < n; i++)
|
for (i = 0; i < n; i++)
|
||||||
for (j = 0; j < n; j++)
|
for (j = 0; j < n; j++)
|
||||||
A[i,j] = rand(-(N^2), N^2)/rand(1, N);
|
A[i,j] = rand(-(N^2), N^2)/rand(1, N);
|
||||||
t = runtime();
|
t = usertime();
|
||||||
d1 = det(A);
|
d1 = det(A);
|
||||||
t = runtime() - t;
|
t = usertime() - t;
|
||||||
d2 = det(A^2);
|
d2 = det(A^2);
|
||||||
if (d2 != d1^2) {
|
if (d2 != d1^2) {
|
||||||
if (verbose > 0) {
|
if (verbose > 0) {
|
||||||
|
@@ -17,10 +17,10 @@
|
|||||||
* A copy of version 2.1 of the GNU Lesser General Public License is
|
* 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
|
* distributed with calc under the filename COPYING-LGPL. You should have
|
||||||
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||||
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
*
|
*
|
||||||
* @(#) $Revision: 29.3 $
|
* @(#) $Revision: 30.1 $
|
||||||
* @(#) $Id: test3400.cal,v 29.3 2006/06/20 09:29:16 chongo Exp $
|
* @(#) $Id: test3400.cal,v 30.1 2007/03/16 11:09:54 chongo Exp $
|
||||||
* @(#) $Source: /usr/local/src/cmd/calc/cal/RCS/test3400.cal,v $
|
* @(#) $Source: /usr/local/src/cmd/calc/cal/RCS/test3400.cal,v $
|
||||||
*
|
*
|
||||||
* Under source code control: 1995/12/02 05:20:11
|
* Under source code control: 1995/12/02 05:20:11
|
||||||
|
@@ -17,10 +17,10 @@
|
|||||||
* A copy of version 2.1 of the GNU Lesser General Public License is
|
* 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
|
* distributed with calc under the filename COPYING-LGPL. You should have
|
||||||
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||||
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
*
|
*
|
||||||
* @(#) $Revision: 29.3 $
|
* @(#) $Revision: 30.1 $
|
||||||
* @(#) $Id: test3500.cal,v 29.3 2006/06/20 09:29:16 chongo Exp $
|
* @(#) $Id: test3500.cal,v 30.1 2007/03/16 11:09:54 chongo Exp $
|
||||||
* @(#) $Source: /usr/local/src/cmd/calc/cal/RCS/test3500.cal,v $
|
* @(#) $Source: /usr/local/src/cmd/calc/cal/RCS/test3500.cal,v $
|
||||||
*
|
*
|
||||||
* Under source code control: 1995/12/18 22:50:46
|
* Under source code control: 1995/12/18 22:50:46
|
||||||
|
@@ -17,10 +17,10 @@
|
|||||||
* A copy of version 2.1 of the GNU Lesser General Public License is
|
* 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
|
* distributed with calc under the filename COPYING-LGPL. You should have
|
||||||
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||||
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
*
|
*
|
||||||
* @(#) $Revision: 29.3 $
|
* @(#) $Revision: 30.1 $
|
||||||
* @(#) $Id: test4000.cal,v 29.3 2006/06/20 09:29:16 chongo Exp $
|
* @(#) $Id: test4000.cal,v 30.1 2007/03/16 11:09:54 chongo Exp $
|
||||||
* @(#) $Source: /usr/local/src/cmd/calc/cal/RCS/test4000.cal,v $
|
* @(#) $Source: /usr/local/src/cmd/calc/cal/RCS/test4000.cal,v $
|
||||||
*
|
*
|
||||||
* Under source code control: 1996/03/13 02:38:45
|
* Under source code control: 1996/03/13 02:38:45
|
||||||
@@ -145,7 +145,7 @@ define ptimes(str, N, n, count, skip, verbose)
|
|||||||
mat A[n];
|
mat A[n];
|
||||||
for (i = 0; i < n; i++)
|
for (i = 0; i < n; i++)
|
||||||
A[i] = plen(N);
|
A[i] = plen(N);
|
||||||
t = runtime();
|
t = usertime();
|
||||||
for (i = 0; i < n; i++) {
|
for (i = 0; i < n; i++) {
|
||||||
p = ptest(A[i], count, skip);
|
p = ptest(A[i], count, skip);
|
||||||
if (!p) {
|
if (!p) {
|
||||||
@@ -159,7 +159,7 @@ define ptimes(str, N, n, count, skip, verbose)
|
|||||||
if (m) {
|
if (m) {
|
||||||
printf("*** %d error(s)\n", m);
|
printf("*** %d error(s)\n", m);
|
||||||
} else {
|
} else {
|
||||||
t = round(runtime() - t, 4);
|
t = round(usertime() - t, 4);
|
||||||
if (verbose > 1) {
|
if (verbose > 1) {
|
||||||
printf("%d probable primes: time = %d\n", n, t);
|
printf("%d probable primes: time = %d\n", n, t);
|
||||||
} else {
|
} else {
|
||||||
@@ -194,7 +194,7 @@ define ctimes(str, N, n, count, skip, verbose)
|
|||||||
mat A[n];
|
mat A[n];
|
||||||
for (i = 0; i < n; i++)
|
for (i = 0; i < n; i++)
|
||||||
A[i] = clen(N);
|
A[i] = clen(N);
|
||||||
t = runtime();
|
t = usertime();
|
||||||
for (i = 0; i < n; i++) {
|
for (i = 0; i < n; i++) {
|
||||||
p = ptest(A[i], count, skip);
|
p = ptest(A[i], count, skip);
|
||||||
if (p) {
|
if (p) {
|
||||||
@@ -208,7 +208,7 @@ define ctimes(str, N, n, count, skip, verbose)
|
|||||||
if (m) {
|
if (m) {
|
||||||
printf("*** %d error(s)\n", m);
|
printf("*** %d error(s)\n", m);
|
||||||
} else {
|
} else {
|
||||||
t = round(runtime() - t, 4);
|
t = round(usertime() - t, 4);
|
||||||
if (verbose > 1) {
|
if (verbose > 1) {
|
||||||
printf("%d probable primes: time = %d\n", n, t);
|
printf("%d probable primes: time = %d\n", n, t);
|
||||||
} else {
|
} else {
|
||||||
@@ -242,7 +242,7 @@ define crtimes(str, a, b, n, count, skip, verbose)
|
|||||||
A[i] = rand(a,b);
|
A[i] = rand(a,b);
|
||||||
P[i] = ptest(A[i], 20, 0);
|
P[i] = ptest(A[i], 20, 0);
|
||||||
}
|
}
|
||||||
t = runtime();
|
t = usertime();
|
||||||
for (i = 0; i < n; i++) {
|
for (i = 0; i < n; i++) {
|
||||||
p = ptest(A[i], count, skip);
|
p = ptest(A[i], count, skip);
|
||||||
if (p != P[i]) {
|
if (p != P[i]) {
|
||||||
@@ -257,7 +257,7 @@ define crtimes(str, a, b, n, count, skip, verbose)
|
|||||||
if (m) {
|
if (m) {
|
||||||
printf("*** %d error(s)?\n", m);
|
printf("*** %d error(s)?\n", m);
|
||||||
} else {
|
} else {
|
||||||
t = round(runtime() - t, 4);
|
t = round(usertime() - t, 4);
|
||||||
if (verbose > 1) {
|
if (verbose > 1) {
|
||||||
printf("%d probable primes: time = %d\n", n, t);
|
printf("%d probable primes: time = %d\n", n, t);
|
||||||
} else {
|
} else {
|
||||||
@@ -295,16 +295,16 @@ define ntimes(str, N, n, count, skip, residue, modulus, verbose)
|
|||||||
mat A[n];
|
mat A[n];
|
||||||
for (i = 0; i < n; i++)
|
for (i = 0; i < n; i++)
|
||||||
A[i] = rlen(N);
|
A[i] = rlen(N);
|
||||||
t = runtime();
|
t = usertime();
|
||||||
for (i = 0; i < n; i++) {
|
for (i = 0; i < n; i++) {
|
||||||
p = nextcand(A[i], count, skip, residue, modulus);
|
p = nextcand(A[i], count, skip, residue, modulus);
|
||||||
}
|
}
|
||||||
tnext = round(runtime() - t, 4);
|
tnext = round(usertime() - t, 4);
|
||||||
t = runtime();
|
t = usertime();
|
||||||
for (i = 0; i < n; i++) {
|
for (i = 0; i < n; i++) {
|
||||||
p = prevcand(A[i], count, skip, residue, modulus);
|
p = prevcand(A[i], count, skip, residue, modulus);
|
||||||
}
|
}
|
||||||
tprev = round(runtime() - t, 4);
|
tprev = round(usertime() - t, 4);
|
||||||
if (verbose > 0) {
|
if (verbose > 0) {
|
||||||
printf("%d evaluations, nextcand: %d, prevcand: %d\n", n, tnext, tprev);
|
printf("%d evaluations, nextcand: %d, prevcand: %d\n", n, tnext, tprev);
|
||||||
}
|
}
|
||||||
|
@@ -17,10 +17,10 @@
|
|||||||
* A copy of version 2.1 of the GNU Lesser General Public License is
|
* 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
|
* distributed with calc under the filename COPYING-LGPL. You should have
|
||||||
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||||
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
*
|
*
|
||||||
* @(#) $Revision: 29.4 $
|
* @(#) $Revision: 30.1 $
|
||||||
* @(#) $Id: test4100.cal,v 29.4 2006/06/20 09:29:16 chongo Exp $
|
* @(#) $Id: test4100.cal,v 30.1 2007/03/16 11:09:54 chongo Exp $
|
||||||
* @(#) $Source: /usr/local/src/cmd/calc/cal/RCS/test4100.cal,v $
|
* @(#) $Source: /usr/local/src/cmd/calc/cal/RCS/test4100.cal,v $
|
||||||
*
|
*
|
||||||
* Under source code control: 1996/03/13 03:53:22
|
* Under source code control: 1996/03/13 03:53:22
|
||||||
@@ -245,38 +245,38 @@ define times(str,N,n,verbose)
|
|||||||
C[i] = rand(m2);
|
C[i] = rand(m2);
|
||||||
}
|
}
|
||||||
z = rcin(0,m); /* to initialize redc and maybe lastmod information */
|
z = rcin(0,m); /* to initialize redc and maybe lastmod information */
|
||||||
t = runtime();
|
t = usertime();
|
||||||
for (i = 0; i < n; i++)
|
for (i = 0; i < n; i++)
|
||||||
z = rcin(A[i],m);
|
z = rcin(A[i],m);
|
||||||
trcin = round(runtime() - t, 3);
|
trcin = round(usertime() - t, 3);
|
||||||
t = runtime();
|
t = usertime();
|
||||||
for (i = 0; i < n; i++)
|
for (i = 0; i < n; i++)
|
||||||
z = rcout(A[i],m);
|
z = rcout(A[i],m);
|
||||||
trcout = round(runtime() - t, 3);
|
trcout = round(usertime() - t, 3);
|
||||||
t = runtime();
|
t = usertime();
|
||||||
for (i = 0; i < n; i++)
|
for (i = 0; i < n; i++)
|
||||||
z = rcmul(A[i],B[i],m);
|
z = rcmul(A[i],B[i],m);
|
||||||
trcmul = round(runtime() - t, 3);
|
trcmul = round(usertime() - t, 3);
|
||||||
t = runtime();
|
t = usertime();
|
||||||
for (i = 0; i < n; i++)
|
for (i = 0; i < n; i++)
|
||||||
z = rcsq(A[i],m);
|
z = rcsq(A[i],m);
|
||||||
trcsq = round(runtime() - t, 3);
|
trcsq = round(usertime() - t, 3);
|
||||||
t = runtime();
|
t = usertime();
|
||||||
for (i = 0; i < n; i++)
|
for (i = 0; i < n; i++)
|
||||||
z = A[i] * B[i];
|
z = A[i] * B[i];
|
||||||
tmul = round(runtime() - t, 3);
|
tmul = round(usertime() - t, 3);
|
||||||
t = runtime();
|
t = usertime();
|
||||||
for (i = 0; i < n; i++)
|
for (i = 0; i < n; i++)
|
||||||
z = A[i]^2;
|
z = A[i]^2;
|
||||||
tsq = round(runtime() - t, 3);
|
tsq = round(usertime() - t, 3);
|
||||||
t = runtime();
|
t = usertime();
|
||||||
for (i = 0; i < n; i++)
|
for (i = 0; i < n; i++)
|
||||||
z = C[i] % A[i];
|
z = C[i] % A[i];
|
||||||
tmod = round(runtime() - t, 3);
|
tmod = round(usertime() - t, 3);
|
||||||
t = runtime();
|
t = usertime();
|
||||||
for (i = 0; i < n; i++)
|
for (i = 0; i < n; i++)
|
||||||
quomod(C[i], A[i], x, y);
|
quomod(C[i], A[i], x, y);
|
||||||
tquomod = round(runtime() - t,3);
|
tquomod = round(usertime() - t,3);
|
||||||
|
|
||||||
if (verbose > 1) {
|
if (verbose > 1) {
|
||||||
printf("rcin: %d, rcout: %d, rcmul: %d, rcsq: %d\n",
|
printf("rcin: %d, rcout: %d, rcmul: %d, rcsq: %d\n",
|
||||||
@@ -326,29 +326,29 @@ define powtimes(str, N1, N2, n, verbose)
|
|||||||
Ar[i] = rcin(A[i], v);
|
Ar[i] = rcin(A[i], v);
|
||||||
B[i] = rlen_4100(N2);
|
B[i] = rlen_4100(N2);
|
||||||
}
|
}
|
||||||
t = runtime();
|
t = usertime();
|
||||||
for (i = 0; i < n; i++)
|
for (i = 0; i < n; i++)
|
||||||
z1 += pmod(A[i], B[i], v);
|
z1 += pmod(A[i], B[i], v);
|
||||||
tbignum = round(runtime() - t, 4);
|
tbignum = round(usertime() - t, 4);
|
||||||
config("pow2", 1e6);
|
config("pow2", 1e6);
|
||||||
t = runtime();
|
t = usertime();
|
||||||
for (i = 0; i < n; i++)
|
for (i = 0; i < n; i++)
|
||||||
z2 += pmod(A[i], B[i], v);
|
z2 += pmod(A[i], B[i], v);
|
||||||
tnormal = round(runtime() - t, 4);
|
tnormal = round(usertime() - t, 4);
|
||||||
config("redc2",1e6);
|
config("redc2",1e6);
|
||||||
t = runtime();
|
t = usertime();
|
||||||
for (i = 0; i < n; i++)
|
for (i = 0; i < n; i++)
|
||||||
z3 += pmod(A[i], B[i], v);
|
z3 += pmod(A[i], B[i], v);
|
||||||
tsmall = round(runtime() - t, 4);
|
tsmall = round(usertime() - t, 4);
|
||||||
t = runtime();
|
t = usertime();
|
||||||
for (i = 0; i < n; i++)
|
for (i = 0; i < n; i++)
|
||||||
z4 += rcpow(Ar[i], B[i], v);
|
z4 += rcpow(Ar[i], B[i], v);
|
||||||
trcsmall = round(runtime() - t, 4);
|
trcsmall = round(usertime() - t, 4);
|
||||||
config("redc2", 2);
|
config("redc2", 2);
|
||||||
t = runtime();
|
t = usertime();
|
||||||
for (i = 0; i < n; i++)
|
for (i = 0; i < n; i++)
|
||||||
z5 += rcpow(Ar[i], B[i], v);
|
z5 += rcpow(Ar[i], B[i], v);
|
||||||
trcbig = round(runtime() - t, 4);
|
trcbig = round(usertime() - t, 4);
|
||||||
|
|
||||||
if (z1 != z2) {
|
if (z1 != z2) {
|
||||||
++m;
|
++m;
|
||||||
@@ -419,13 +419,13 @@ define inittimes(str,N,n,verbose)
|
|||||||
M[i] = olen(N);
|
M[i] = olen(N);
|
||||||
A[i] = rand(M[i]);
|
A[i] = rand(M[i]);
|
||||||
}
|
}
|
||||||
t = runtime();
|
t = usertime();
|
||||||
for (i = 0; i < n; i++)
|
for (i = 0; i < n; i++)
|
||||||
R[i] = rcin(A[i], M[i]);
|
R[i] = rcin(A[i], M[i]);
|
||||||
trcin = round(runtime() - t, 4);
|
trcin = round(usertime() - t, 4);
|
||||||
for (i = 0; i < n; i++)
|
for (i = 0; i < n; i++)
|
||||||
B[i] = rcout(R[i], M[i]);
|
B[i] = rcout(R[i], M[i]);
|
||||||
trcout = round(runtime() - t, 4);
|
trcout = round(usertime() - t, 4);
|
||||||
for (i = 0; i < n; i++) {
|
for (i = 0; i < n; i++) {
|
||||||
if (B[i] != A[i]) {
|
if (B[i] != A[i]) {
|
||||||
++m;
|
++m;
|
||||||
|
@@ -17,10 +17,10 @@
|
|||||||
* A copy of version 2.1 of the GNU Lesser General Public License is
|
* 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
|
* distributed with calc under the filename COPYING-LGPL. You should have
|
||||||
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||||
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
*
|
*
|
||||||
* @(#) $Revision: 29.5 $
|
* @(#) $Revision: 30.1 $
|
||||||
* @(#) $Id: test4600.cal,v 29.5 2006/06/20 09:29:16 chongo Exp $
|
* @(#) $Id: test4600.cal,v 30.1 2007/03/16 11:09:54 chongo Exp $
|
||||||
* @(#) $Source: /usr/local/src/cmd/calc/cal/RCS/test4600.cal,v $
|
* @(#) $Source: /usr/local/src/cmd/calc/cal/RCS/test4600.cal,v $
|
||||||
*
|
*
|
||||||
* Under source code control: 1996/07/02 20:04:40
|
* Under source code control: 1996/07/02 20:04:40
|
||||||
|
@@ -17,10 +17,10 @@
|
|||||||
* A copy of version 2.1 of the GNU Lesser General Public License is
|
* 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
|
* distributed with calc under the filename COPYING-LGPL. You should have
|
||||||
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||||
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
*
|
*
|
||||||
* @(#) $Revision: 29.3 $
|
* @(#) $Revision: 30.1 $
|
||||||
* @(#) $Id: test5100.cal,v 29.3 2006/06/20 09:29:16 chongo Exp $
|
* @(#) $Id: test5100.cal,v 30.1 2007/03/16 11:09:54 chongo Exp $
|
||||||
* @(#) $Source: /usr/local/src/cmd/calc/cal/RCS/test5100.cal,v $
|
* @(#) $Source: /usr/local/src/cmd/calc/cal/RCS/test5100.cal,v $
|
||||||
*
|
*
|
||||||
* Under source code control: 1996/12/02 23:57:10
|
* Under source code control: 1996/12/02 23:57:10
|
||||||
|
@@ -17,10 +17,10 @@
|
|||||||
* A copy of version 2.1 of the GNU Lesser General Public License is
|
* 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
|
* distributed with calc under the filename COPYING-LGPL. You should have
|
||||||
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||||
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
*
|
*
|
||||||
* @(#) $Revision: 29.3 $
|
* @(#) $Revision: 30.1 $
|
||||||
* @(#) $Id: test5200.cal,v 29.3 2006/06/20 09:29:16 chongo Exp $
|
* @(#) $Id: test5200.cal,v 30.1 2007/03/16 11:09:54 chongo Exp $
|
||||||
* @(#) $Source: /usr/local/src/cmd/calc/cal/RCS/test5200.cal,v $
|
* @(#) $Source: /usr/local/src/cmd/calc/cal/RCS/test5200.cal,v $
|
||||||
*
|
*
|
||||||
* Under source code control: 1997/02/07 02:48:10
|
* Under source code control: 1997/02/07 02:48:10
|
||||||
|
@@ -15,10 +15,10 @@
|
|||||||
* A copy of version 2.1 of the GNU Lesser General Public License is
|
* 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
|
* distributed with calc under the filename COPYING-LGPL. You should have
|
||||||
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||||
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
*
|
*
|
||||||
* @(#) $Revision: 29.2 $
|
* @(#) $Revision: 30.1 $
|
||||||
* @(#) $Id: test8400.cal,v 29.2 2000/06/07 14:02:25 chongo Exp $
|
* @(#) $Id: test8400.cal,v 30.1 2007/03/16 11:09:54 chongo Exp $
|
||||||
* @(#) $Source: /usr/local/src/cmd/calc/cal/RCS/test8400.cal,v $
|
* @(#) $Source: /usr/local/src/cmd/calc/cal/RCS/test8400.cal,v $
|
||||||
*
|
*
|
||||||
* Under source code control: 1999/10/31 01:00:03
|
* Under source code control: 1999/10/31 01:00:03
|
||||||
|
@@ -17,10 +17,10 @@
|
|||||||
* A copy of version 2.1 of the GNU Lesser General Public License is
|
* 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
|
* distributed with calc under the filename COPYING-LGPL. You should have
|
||||||
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||||
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
*
|
*
|
||||||
* @(#) $Revision: 29.2 $
|
* @(#) $Revision: 30.1 $
|
||||||
* @(#) $Id: test8500.cal,v 29.2 2000/06/07 14:02:25 chongo Exp $
|
* @(#) $Id: test8500.cal,v 30.1 2007/03/16 11:09:54 chongo Exp $
|
||||||
* @(#) $Source: /usr/local/src/cmd/calc/cal/RCS/test8500.cal,v $
|
* @(#) $Source: /usr/local/src/cmd/calc/cal/RCS/test8500.cal,v $
|
||||||
*
|
*
|
||||||
* Under source code control: 1999/11/12 20:59:59
|
* Under source code control: 1999/11/12 20:59:59
|
||||||
|
@@ -17,10 +17,10 @@
|
|||||||
* A copy of version 2.1 of the GNU Lesser General Public License is
|
* 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
|
* distributed with calc under the filename COPYING-LGPL. You should have
|
||||||
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||||
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
*
|
*
|
||||||
* @(#) $Revision: 29.1 $
|
* @(#) $Revision: 30.1 $
|
||||||
* @(#) $Id: test8600.cal,v 29.1 2000/12/04 19:57:02 chongo Exp $
|
* @(#) $Id: test8600.cal,v 30.1 2007/03/16 11:09:54 chongo Exp $
|
||||||
* @(#) $Source: /usr/local/src/cmd/calc/cal/RCS/test8600.cal,v $
|
* @(#) $Source: /usr/local/src/cmd/calc/cal/RCS/test8600.cal,v $
|
||||||
*
|
*
|
||||||
* Under source code control: 2000/12/04 19:57:02
|
* Under source code control: 2000/12/04 19:57:02
|
||||||
|
@@ -15,10 +15,10 @@
|
|||||||
* A copy of version 2.1 of the GNU Lesser General Public License is
|
* 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
|
* distributed with calc under the filename COPYING-LGPL. You should have
|
||||||
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||||
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
*
|
*
|
||||||
* @(#) $Revision: 29.2 $
|
* @(#) $Revision: 30.1 $
|
||||||
* @(#) $Id: unitfrac.cal,v 29.2 2000/06/07 14:02:25 chongo Exp $
|
* @(#) $Id: unitfrac.cal,v 30.1 2007/03/16 11:09:54 chongo Exp $
|
||||||
* @(#) $Source: /usr/local/src/cmd/calc/cal/RCS/unitfrac.cal,v $
|
* @(#) $Source: /usr/local/src/cmd/calc/cal/RCS/unitfrac.cal,v $
|
||||||
*
|
*
|
||||||
* Under source code control: 1990/02/15 01:50:38
|
* Under source code control: 1990/02/15 01:50:38
|
||||||
|
@@ -15,10 +15,10 @@
|
|||||||
* A copy of version 2.1 of the GNU Lesser General Public License is
|
* 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
|
* distributed with calc under the filename COPYING-LGPL. You should have
|
||||||
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||||
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
*
|
*
|
||||||
* @(#) $Revision: 29.2 $
|
* @(#) $Revision: 30.1 $
|
||||||
* @(#) $Id: varargs.cal,v 29.2 2000/06/07 14:02:25 chongo Exp $
|
* @(#) $Id: varargs.cal,v 30.1 2007/03/16 11:09:54 chongo Exp $
|
||||||
* @(#) $Source: /usr/local/src/cmd/calc/cal/RCS/varargs.cal,v $
|
* @(#) $Source: /usr/local/src/cmd/calc/cal/RCS/varargs.cal,v $
|
||||||
*
|
*
|
||||||
* Under source code control: 1991/05/22 21:56:34
|
* Under source code control: 1991/05/22 21:56:34
|
||||||
|
@@ -15,10 +15,10 @@
|
|||||||
* A copy of version 2.1 of the GNU Lesser General Public License is
|
* 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
|
* distributed with calc under the filename COPYING-LGPL. You should have
|
||||||
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||||
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
*
|
*
|
||||||
* @(#) $Revision: 29.2 $
|
* @(#) $Revision: 30.1 $
|
||||||
* @(#) $Id: xx_print.cal,v 29.2 2000/06/07 14:02:25 chongo Exp $
|
* @(#) $Id: xx_print.cal,v 30.1 2007/03/16 11:09:54 chongo Exp $
|
||||||
* @(#) $Source: /usr/local/src/cmd/calc/cal/RCS/xx_print.cal,v $
|
* @(#) $Source: /usr/local/src/cmd/calc/cal/RCS/xx_print.cal,v $
|
||||||
*
|
*
|
||||||
* Under source code control: 1997/04/17 00:08:50
|
* Under source code control: 1997/04/17 00:08:50
|
||||||
|
115
calc.c
115
calc.c
@@ -1,7 +1,7 @@
|
|||||||
/*
|
/*
|
||||||
* calc - arbitrary precision calculator
|
* calc - arbitrary precision calculator
|
||||||
*
|
*
|
||||||
* Copyright (C) 1999-2006 David I. Bell, Landon Curt Noll and Ernest Bowen
|
* Copyright (C) 1999-2007 David I. Bell, Landon Curt Noll and Ernest Bowen
|
||||||
*
|
*
|
||||||
* Primary author: David I. Bell
|
* Primary author: David I. Bell
|
||||||
*
|
*
|
||||||
@@ -17,10 +17,10 @@
|
|||||||
* A copy of version 2.1 of the GNU Lesser General Public License is
|
* 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
|
* distributed with calc under the filename COPYING-LGPL. You should have
|
||||||
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||||
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
*
|
*
|
||||||
* @(#) $Revision: 29.13 $
|
* @(#) $Revision: 30.4 $
|
||||||
* @(#) $Id: calc.c,v 29.13 2006/05/19 15:26:10 chongo Exp $
|
* @(#) $Id: calc.c,v 30.4 2008/04/15 21:17:57 chongo Exp $
|
||||||
* @(#) $Source: /usr/local/src/cmd/calc/RCS/calc.c,v $
|
* @(#) $Source: /usr/local/src/cmd/calc/RCS/calc.c,v $
|
||||||
*
|
*
|
||||||
* Under source code control: 1990/02/15 01:48:11
|
* Under source code control: 1990/02/15 01:48:11
|
||||||
@@ -42,6 +42,7 @@
|
|||||||
|
|
||||||
#if defined(_WIN32)
|
#if defined(_WIN32)
|
||||||
# include <io.h>
|
# include <io.h>
|
||||||
|
# if !defined(NOTCYGWIN)
|
||||||
/*
|
/*
|
||||||
* getopt.h file is from the Cygwin GNU library
|
* getopt.h file is from the Cygwin GNU library
|
||||||
*
|
*
|
||||||
@@ -49,6 +50,7 @@
|
|||||||
* http://sources.redhat.com/cygwin/
|
* http://sources.redhat.com/cygwin/
|
||||||
*/
|
*/
|
||||||
# include "../getopt/getopt.h"
|
# include "../getopt/getopt.h"
|
||||||
|
# endif
|
||||||
# define strdup _strdup
|
# define strdup _strdup
|
||||||
# define isatty _isatty
|
# define isatty _isatty
|
||||||
#endif /* Windoz */
|
#endif /* Windoz */
|
||||||
@@ -64,7 +66,7 @@
|
|||||||
#include "have_uid_t.h"
|
#include "have_uid_t.h"
|
||||||
#include "have_const.h"
|
#include "have_const.h"
|
||||||
#include "custom.h"
|
#include "custom.h"
|
||||||
#include "math_error.h"
|
#include "lib_calc.h"
|
||||||
#include "args.h"
|
#include "args.h"
|
||||||
#include "zmath.h"
|
#include "zmath.h"
|
||||||
|
|
||||||
@@ -87,11 +89,12 @@
|
|||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* static definitions and functions
|
* S_FUNC definitions and functions
|
||||||
*/
|
*/
|
||||||
static void intint(int arg); /* interrupt routine */
|
S_FUNC void intint(int arg); /* interrupt routine */
|
||||||
static int nextcp(char **cpp, int *ip, int argc, char **argv, BOOL haveendstr);
|
S_FUNC void calc_interrupt(char *fmt, ...);
|
||||||
static void set_run_state(run state);
|
S_FUNC int nextcp(char **cpp, int *ip, int argc, char **argv, BOOL haveendstr);
|
||||||
|
S_FUNC void set_run_state(run state);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Top level calculator routine.
|
* Top level calculator routine.
|
||||||
@@ -188,7 +191,7 @@ main(int argc, char **argv)
|
|||||||
fprintf(stderr,
|
fprintf(stderr,
|
||||||
"-m expects"
|
"-m expects"
|
||||||
" argument");
|
" argument");
|
||||||
exit (1);
|
exit(2);
|
||||||
}
|
}
|
||||||
cp = argv[index];
|
cp = argv[index];
|
||||||
}
|
}
|
||||||
@@ -203,7 +206,7 @@ main(int argc, char **argv)
|
|||||||
fprintf(stderr,
|
fprintf(stderr,
|
||||||
"%s: unknown -m arg\n",
|
"%s: unknown -m arg\n",
|
||||||
program);
|
program);
|
||||||
exit(1);
|
exit(3);
|
||||||
}
|
}
|
||||||
allow_read = (((*cp-'0') & 04) > 0);
|
allow_read = (((*cp-'0') & 04) > 0);
|
||||||
allow_write = (((*cp-'0') & 02) > 0);
|
allow_write = (((*cp-'0') & 02) > 0);
|
||||||
@@ -211,7 +214,7 @@ main(int argc, char **argv)
|
|||||||
cp++;
|
cp++;
|
||||||
if (*cp != ' ' && *cp != '\0') {
|
if (*cp != ' ' && *cp != '\0') {
|
||||||
fprintf(stderr, "??? m-arg");
|
fprintf(stderr, "??? m-arg");
|
||||||
exit(1);
|
exit(4);
|
||||||
}
|
}
|
||||||
havearg = TRUE;
|
havearg = TRUE;
|
||||||
break;
|
break;
|
||||||
@@ -245,8 +248,13 @@ main(int argc, char **argv)
|
|||||||
* call libcalc_call_me_last() -
|
* call libcalc_call_me_last() -
|
||||||
* nothing to cleanup
|
* nothing to cleanup
|
||||||
*/
|
*/
|
||||||
printf("%s (version %s)\n",
|
fputs(CALC_TITLE, stdout);
|
||||||
CALC_TITLE, version());
|
#if defined(CUSTOM)
|
||||||
|
fputs(" w/custom functions", stdout);
|
||||||
|
#else
|
||||||
|
fputs(" w/o custom functions", stdout);
|
||||||
|
#endif /* CUSTOM */
|
||||||
|
printf(" (version %s)\n", version());
|
||||||
exit(0);
|
exit(0);
|
||||||
case 'D':
|
case 'D':
|
||||||
/*
|
/*
|
||||||
@@ -262,7 +270,7 @@ main(int argc, char **argv)
|
|||||||
FALSE)) {
|
FALSE)) {
|
||||||
fprintf(stderr,
|
fprintf(stderr,
|
||||||
"-D expects argument\n");
|
"-D expects argument\n");
|
||||||
exit (1);
|
exit(5);
|
||||||
}
|
}
|
||||||
havearg = TRUE;
|
havearg = TRUE;
|
||||||
if (*cp != ':') {
|
if (*cp != ':') {
|
||||||
@@ -270,7 +278,7 @@ main(int argc, char **argv)
|
|||||||
fprintf(stderr,
|
fprintf(stderr,
|
||||||
"-D expects"
|
"-D expects"
|
||||||
" integer\n");
|
" integer\n");
|
||||||
exit (1);
|
exit(6);
|
||||||
}
|
}
|
||||||
calc_debug = cp;
|
calc_debug = cp;
|
||||||
(void) strtol(cp, &endcp, 10);
|
(void) strtol(cp, &endcp, 10);
|
||||||
@@ -280,7 +288,7 @@ main(int argc, char **argv)
|
|||||||
fprintf(stderr,
|
fprintf(stderr,
|
||||||
"Bad syntax im -D"
|
"Bad syntax im -D"
|
||||||
" arg\n");
|
" arg\n");
|
||||||
exit (1);
|
exit(7);
|
||||||
}
|
}
|
||||||
if (*cp != ':') {
|
if (*cp != ':') {
|
||||||
if (nextcp(&cp, &index,
|
if (nextcp(&cp, &index,
|
||||||
@@ -295,14 +303,14 @@ main(int argc, char **argv)
|
|||||||
fprintf(stderr,
|
fprintf(stderr,
|
||||||
"-D : expects"
|
"-D : expects"
|
||||||
" argument\n");
|
" argument\n");
|
||||||
exit (1);
|
exit(8);
|
||||||
}
|
}
|
||||||
if (*cp != ':') {
|
if (*cp != ':') {
|
||||||
if (*cp < '0' || *cp > '9') {
|
if (*cp < '0' || *cp > '9') {
|
||||||
fprintf(stderr,
|
fprintf(stderr,
|
||||||
"-D : expects"
|
"-D : expects"
|
||||||
" integer\n");
|
" integer\n");
|
||||||
exit (1);
|
exit(9);
|
||||||
}
|
}
|
||||||
resource_debug = cp;
|
resource_debug = cp;
|
||||||
(void) strtol(cp, &endcp, 10);
|
(void) strtol(cp, &endcp, 10);
|
||||||
@@ -312,7 +320,7 @@ main(int argc, char **argv)
|
|||||||
fprintf(stderr,
|
fprintf(stderr,
|
||||||
"Bad syntax im -D"
|
"Bad syntax im -D"
|
||||||
" : arg\n");
|
" : arg\n");
|
||||||
exit (1);
|
exit(10);
|
||||||
}
|
}
|
||||||
if (*cp != ':') {
|
if (*cp != ':') {
|
||||||
if (nextcp(&cp, &index,
|
if (nextcp(&cp, &index,
|
||||||
@@ -327,12 +335,12 @@ main(int argc, char **argv)
|
|||||||
FALSE)) {
|
FALSE)) {
|
||||||
fprintf(stderr, "-D : : expects"
|
fprintf(stderr, "-D : : expects"
|
||||||
" argument\n");
|
" argument\n");
|
||||||
exit (1);
|
exit(11);
|
||||||
}
|
}
|
||||||
if (*cp < '0' || *cp > '9') {
|
if (*cp < '0' || *cp > '9') {
|
||||||
fprintf(stderr, "-D :: expects"
|
fprintf(stderr, "-D :: expects"
|
||||||
" integer\n");
|
" integer\n");
|
||||||
exit (1);
|
exit(12);
|
||||||
}
|
}
|
||||||
user_debug = cp;
|
user_debug = cp;
|
||||||
(void) strtol(cp, &endcp, 10);
|
(void) strtol(cp, &endcp, 10);
|
||||||
@@ -340,7 +348,7 @@ main(int argc, char **argv)
|
|||||||
if (*cp != '\0' && *cp != ' ') {
|
if (*cp != '\0' && *cp != ' ') {
|
||||||
fprintf(stderr, "Bad syntax in"
|
fprintf(stderr, "Bad syntax in"
|
||||||
" -D : : arg\n");
|
" -D : : arg\n");
|
||||||
exit (1);
|
exit(13);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 'f':
|
case 'f':
|
||||||
@@ -349,13 +357,13 @@ main(int argc, char **argv)
|
|||||||
haveendstr)) {
|
haveendstr)) {
|
||||||
fprintf(stderr, "-f expects"
|
fprintf(stderr, "-f expects"
|
||||||
" filename\n");
|
" filename\n");
|
||||||
exit (1);
|
exit(14);
|
||||||
}
|
}
|
||||||
if (*cp == ';') {
|
if (*cp == ';') {
|
||||||
fprintf(stderr,
|
fprintf(stderr,
|
||||||
"-f expects"
|
"-f expects"
|
||||||
" filename\n");
|
" filename\n");
|
||||||
exit (1);
|
exit(15);
|
||||||
}
|
}
|
||||||
havearg = TRUE;
|
havearg = TRUE;
|
||||||
if (cmdlen > 0)
|
if (cmdlen > 0)
|
||||||
@@ -373,7 +381,7 @@ main(int argc, char **argv)
|
|||||||
fprintf(stderr, "-f -once"
|
fprintf(stderr, "-f -once"
|
||||||
" expects"
|
" expects"
|
||||||
" filename\n");
|
" filename\n");
|
||||||
exit (1);
|
exit(16);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
bp = cmdbuf + cmdlen;
|
bp = cmdbuf + cmdlen;
|
||||||
@@ -383,13 +391,13 @@ main(int argc, char **argv)
|
|||||||
fprintf(stderr,
|
fprintf(stderr,
|
||||||
"Null"
|
"Null"
|
||||||
" filename!");
|
" filename!");
|
||||||
exit (1);
|
exit(17);
|
||||||
}
|
}
|
||||||
if (cmdlen + len + 2 > MAXCMD) {
|
if (cmdlen + len + 2 > MAXCMD) {
|
||||||
fprintf(stderr,
|
fprintf(stderr,
|
||||||
"Commands too"
|
"Commands too"
|
||||||
" long");
|
" long");
|
||||||
exit (1);
|
exit(18);
|
||||||
}
|
}
|
||||||
/* XXX What if *cp = '\''? */
|
/* XXX What if *cp = '\''? */
|
||||||
*bp++ = '\'';
|
*bp++ = '\'';
|
||||||
@@ -404,7 +412,7 @@ main(int argc, char **argv)
|
|||||||
fprintf(stderr,
|
fprintf(stderr,
|
||||||
"Commands"
|
"Commands"
|
||||||
" too long");
|
" too long");
|
||||||
exit (1);
|
exit(19);
|
||||||
}
|
}
|
||||||
*bp++ = *cp++;
|
*bp++ = *cp++;
|
||||||
cmdlen++;
|
cmdlen++;
|
||||||
@@ -416,6 +424,7 @@ main(int argc, char **argv)
|
|||||||
cp++;
|
cp++;
|
||||||
*bp++ = ';';
|
*bp++ = ';';
|
||||||
cmdlen++;
|
cmdlen++;
|
||||||
|
s_flag = TRUE; /* -f implies -s */
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 's':
|
case 's':
|
||||||
@@ -431,12 +440,14 @@ main(int argc, char **argv)
|
|||||||
fprintf(stderr, "Illegal option -%c\n",
|
fprintf(stderr, "Illegal option -%c\n",
|
||||||
c);
|
c);
|
||||||
fprintf(stderr,
|
fprintf(stderr,
|
||||||
"usage: %s [-a] [-c] [-C] [-d] [-e] [-h] [-i] [-m mode]\n"
|
"usage: %s [-c] [-C] [-d] [-e] [-h] [-i] [-m mode]\n"
|
||||||
"\t[-D calc_debug[:resource_debug[:user_debug]]]\n"
|
"\t[-D calc_debug[:resource_debug[:user_debug]]]\n"
|
||||||
"\t[-O] [-p] [-q] [-u] [-v] "
|
"\t[-O] [-p] [-q] [-s] [-u] [-v] "
|
||||||
"[--] [calc_cmd ...]\n",
|
"[--] [calc_cmd ...]\n"
|
||||||
program);
|
"usage: %s ... -f filename\n"
|
||||||
exit(1);
|
"1st cscript line: #/path/to/calc ... -f\n",
|
||||||
|
program, program);
|
||||||
|
exit(20);
|
||||||
}
|
}
|
||||||
if (havearg)
|
if (havearg)
|
||||||
break;
|
break;
|
||||||
@@ -462,7 +473,7 @@ main(int argc, char **argv)
|
|||||||
fprintf(stderr,
|
fprintf(stderr,
|
||||||
"%s: commands too long\n",
|
"%s: commands too long\n",
|
||||||
program);
|
program);
|
||||||
exit(1);
|
exit(21);
|
||||||
}
|
}
|
||||||
strncpy(cmdbuf + cmdlen, cp, cplen+1);
|
strncpy(cmdbuf + cmdlen, cp, cplen+1);
|
||||||
cmdlen = newcmdlen;
|
cmdlen = newcmdlen;
|
||||||
@@ -533,14 +544,13 @@ main(int argc, char **argv)
|
|||||||
/*
|
/*
|
||||||
* establish error longjump point with initial conditions
|
* establish error longjump point with initial conditions
|
||||||
*/
|
*/
|
||||||
if (setjmp(jmpbuf) == 0) {
|
if (setjmp(calc_scanerr_jmpbuf) == 0) {
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* reset/initialize the computing environment
|
* reset/initialize the computing environment
|
||||||
*/
|
*/
|
||||||
if (post_init)
|
initialize();
|
||||||
initialize();
|
calc_use_scanerr_jmpbuf = 1;
|
||||||
post_init = TRUE;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -710,12 +720,12 @@ main(int argc, char **argv)
|
|||||||
* arg to keep ANSI C happy
|
* arg to keep ANSI C happy
|
||||||
*/
|
*/
|
||||||
/*ARGSUSED*/
|
/*ARGSUSED*/
|
||||||
static void
|
S_FUNC void
|
||||||
intint(int UNUSED arg)
|
intint(int UNUSED arg)
|
||||||
{
|
{
|
||||||
(void) signal(SIGINT, intint);
|
(void) signal(SIGINT, intint);
|
||||||
if (inputwait || (++abortlevel >= ABORT_NOW)) {
|
if (inputwait || (++abortlevel >= ABORT_NOW)) {
|
||||||
math_error("\nABORT");
|
calc_interrupt("\nABORT");
|
||||||
/*NOTREACHED*/
|
/*NOTREACHED*/
|
||||||
}
|
}
|
||||||
if (abortlevel >= ABORT_MATH)
|
if (abortlevel >= ABORT_MATH)
|
||||||
@@ -725,14 +735,12 @@ intint(int UNUSED arg)
|
|||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Routine called on any runtime error, to complain about it (with possible
|
* report an interrupt
|
||||||
* arguments), and then longjump back to the top level command scanner.
|
|
||||||
*/
|
*/
|
||||||
void
|
static void
|
||||||
math_error(char *fmt, ...)
|
calc_interrupt(char *fmt, ...)
|
||||||
{
|
{
|
||||||
va_list ap;
|
va_list ap;
|
||||||
char buf[MAXERROR+1];
|
|
||||||
|
|
||||||
if (funcname && (*funcname != '*'))
|
if (funcname && (*funcname != '*'))
|
||||||
fprintf(stderr, "\"%s\": ", funcname);
|
fprintf(stderr, "\"%s\": ", funcname);
|
||||||
@@ -740,12 +748,13 @@ math_error(char *fmt, ...)
|
|||||||
!inputisterminal()))
|
!inputisterminal()))
|
||||||
fprintf(stderr, "line %ld: ", funcline);
|
fprintf(stderr, "line %ld: ", funcline);
|
||||||
va_start(ap, fmt);
|
va_start(ap, fmt);
|
||||||
vsprintf(buf, fmt, ap);
|
vsnprintf(calc_err_msg, MAXERROR, fmt, ap);
|
||||||
va_end(ap);
|
va_end(ap);
|
||||||
fprintf(stderr, "%s\n", buf);
|
calc_err_msg[MAXERROR] = '\0';
|
||||||
|
fprintf(stderr, "%s\n\n", calc_err_msg);
|
||||||
funcname = NULL;
|
funcname = NULL;
|
||||||
if (post_init) {
|
if (calc_use_scanerr_jmpbuf != 0) {
|
||||||
longjmp(jmpbuf, 1);
|
longjmp(calc_scanerr_jmpbuf, 22);
|
||||||
} else {
|
} else {
|
||||||
fprintf(stderr, "It is too early provide a command line prompt "
|
fprintf(stderr, "It is too early provide a command line prompt "
|
||||||
"so we must simply exit. Sorry!\n");
|
"so we must simply exit. Sorry!\n");
|
||||||
@@ -753,11 +762,11 @@ math_error(char *fmt, ...)
|
|||||||
* don't call libcalc_call_me_last() -- we might loop
|
* don't call libcalc_call_me_last() -- we might loop
|
||||||
* and besides ... this is an unusual internal error case
|
* and besides ... this is an unusual internal error case
|
||||||
*/
|
*/
|
||||||
exit(3);
|
exit(22);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
S_FUNC int
|
||||||
nextcp(char **cpp, int *ip, int argc, char **argv, BOOL haveendstr)
|
nextcp(char **cpp, int *ip, int argc, char **argv, BOOL haveendstr)
|
||||||
{
|
{
|
||||||
char *cp;
|
char *cp;
|
||||||
@@ -796,7 +805,7 @@ nextcp(char **cpp, int *ip, int argc, char **argv, BOOL haveendstr)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static void
|
S_FUNC void
|
||||||
set_run_state(run state)
|
set_run_state(run state)
|
||||||
{
|
{
|
||||||
if (conf->calc_debug & CALCDBG_RUNSTATE)
|
if (conf->calc_debug & CALCDBG_RUNSTATE)
|
||||||
|
239
calc.h
239
calc.h
@@ -1,7 +1,7 @@
|
|||||||
/*
|
/*
|
||||||
* calc - definitions for calculator program
|
* calc - definitions for calculator program
|
||||||
*
|
*
|
||||||
* Copyright (C) 1999-2006 David I. Bell
|
* Copyright (C) 1999-2007 David I. Bell
|
||||||
*
|
*
|
||||||
* Calc is open software; you can redistribute it and/or modify it under
|
* 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
|
* the terms of the version 2.1 of the GNU Lesser General Public License
|
||||||
@@ -15,10 +15,10 @@
|
|||||||
* A copy of version 2.1 of the GNU Lesser General Public License is
|
* 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
|
* distributed with calc under the filename COPYING-LGPL. You should have
|
||||||
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||||
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
*
|
*
|
||||||
* @(#) $Revision: 29.19 $
|
* @(#) $Revision: 30.2 $
|
||||||
* @(#) $Id: calc.h,v 29.19 2006/08/20 15:01:30 chongo Exp $
|
* @(#) $Id: calc.h,v 30.2 2007/07/10 17:44:52 chongo Exp $
|
||||||
* @(#) $Source: /usr/local/src/cmd/calc/RCS/calc.h,v $
|
* @(#) $Source: /usr/local/src/cmd/calc/RCS/calc.h,v $
|
||||||
*
|
*
|
||||||
* Under source code control: 1990/02/15 01:48:31
|
* Under source code control: 1990/02/15 01:48:31
|
||||||
@@ -33,11 +33,11 @@
|
|||||||
|
|
||||||
#include <setjmp.h>
|
#include <setjmp.h>
|
||||||
#if defined(CALC_SRC) /* if we are building from the calc source tree */
|
#if defined(CALC_SRC) /* if we are building from the calc source tree */
|
||||||
# include "win32dll.h"
|
# include "decl.h"
|
||||||
# include "value.h"
|
# include "value.h"
|
||||||
# include "have_const.h"
|
# include "have_const.h"
|
||||||
#else
|
#else
|
||||||
# include <calc/win32dll.h>
|
# include <calc/decl.h>
|
||||||
# include <calc/value.h>
|
# include <calc/value.h>
|
||||||
# include <calc/have_const.h>
|
# include <calc/have_const.h>
|
||||||
#endif
|
#endif
|
||||||
@@ -66,7 +66,6 @@
|
|||||||
#define LISTCHAR ':' /* char which separates paths in a list */
|
#define LISTCHAR ':' /* char which separates paths in a list */
|
||||||
#endif
|
#endif
|
||||||
#define MAXCMD 16384 /* maximum length of command invocation */
|
#define MAXCMD 16384 /* maximum length of command invocation */
|
||||||
#define MAXERROR 512 /* maximum length of error message string */
|
|
||||||
|
|
||||||
#define SYMBOLSIZE 256 /* maximum symbol name size */
|
#define SYMBOLSIZE 256 /* maximum symbol name size */
|
||||||
#define MAXLABELS 100 /* maximum number of user labels in function */
|
#define MAXLABELS 100 /* maximum number of user labels in function */
|
||||||
@@ -91,6 +90,7 @@
|
|||||||
#define ABORT_NOW 4 /* abort right away */
|
#define ABORT_NOW 4 /* abort right away */
|
||||||
|
|
||||||
#define ERRMAX 20 /* default errmax value */
|
#define ERRMAX 20 /* default errmax value */
|
||||||
|
#define E_OK 0 /* no error */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* File ids corresponding to standard in, out, error, and when not in use.
|
* File ids corresponding to standard in, out, error, and when not in use.
|
||||||
@@ -103,141 +103,138 @@
|
|||||||
/*
|
/*
|
||||||
* File I/O routines.
|
* File I/O routines.
|
||||||
*/
|
*/
|
||||||
extern DLL FILEID openid(char *name, char *mode);
|
E_FUNC FILEID openid(char *name, char *mode);
|
||||||
extern DLL FILEID openpathid(char *name, char *mode, char *pathlist);
|
E_FUNC FILEID openpathid(char *name, char *mode, char *pathlist);
|
||||||
extern DLL FILEID indexid(long index);
|
E_FUNC FILEID indexid(long index);
|
||||||
extern DLL BOOL validid(FILEID id);
|
E_FUNC BOOL validid(FILEID id);
|
||||||
extern DLL BOOL errorid(FILEID id);
|
E_FUNC BOOL errorid(FILEID id);
|
||||||
extern DLL BOOL eofid(FILEID id);
|
E_FUNC BOOL eofid(FILEID id);
|
||||||
extern DLL int closeid(FILEID id);
|
E_FUNC int closeid(FILEID id);
|
||||||
extern DLL int getcharid(FILEID id);
|
E_FUNC int getcharid(FILEID id);
|
||||||
extern DLL int idprintf(FILEID id, char *fmt, int count, VALUE **vals);
|
E_FUNC int idprintf(FILEID id, char *fmt, int count, VALUE **vals);
|
||||||
extern DLL int idfputc(FILEID id, int ch);
|
E_FUNC int idfputc(FILEID id, int ch);
|
||||||
extern DLL int idfputs(FILEID id, STRING *str);
|
E_FUNC int idfputs(FILEID id, STRING *str);
|
||||||
extern DLL int printid(FILEID id, int flags);
|
E_FUNC int printid(FILEID id, int flags);
|
||||||
extern DLL int flushid(FILEID id);
|
E_FUNC int flushid(FILEID id);
|
||||||
extern DLL int readid(FILEID id, int flags, STRING **retptr);
|
E_FUNC int readid(FILEID id, int flags, STRING **retptr);
|
||||||
extern DLL int getloc(FILEID id, ZVALUE *loc);
|
E_FUNC int getloc(FILEID id, ZVALUE *loc);
|
||||||
extern DLL int setloc(FILEID id, ZVALUE zpos);
|
E_FUNC int setloc(FILEID id, ZVALUE zpos);
|
||||||
extern DLL int getsize(FILEID id, ZVALUE *size);
|
E_FUNC int getsize(FILEID id, ZVALUE *size);
|
||||||
extern DLL int get_device(FILEID id, ZVALUE *dev);
|
E_FUNC int get_device(FILEID id, ZVALUE *dev);
|
||||||
extern DLL int get_inode(FILEID id, ZVALUE *ino);
|
E_FUNC int get_inode(FILEID id, ZVALUE *ino);
|
||||||
extern DLL FILEID reopenid(FILEID id, char *mode, char *name);
|
E_FUNC FILEID reopenid(FILEID id, char *mode, char *name);
|
||||||
extern DLL int closeall(void);
|
E_FUNC int closeall(void);
|
||||||
|
|
||||||
#if !defined(_WIN32)
|
#if !defined(_WIN32)
|
||||||
extern DLL int flushall(void);
|
E_FUNC int flushall(void);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
extern DLL int idfputstr(FILEID id, char *str);
|
E_FUNC int idfputstr(FILEID id, char *str);
|
||||||
extern DLL int rewindid(FILEID id);
|
E_FUNC int rewindid(FILEID id);
|
||||||
extern DLL void rewindall(void);
|
E_FUNC void rewindall(void);
|
||||||
extern DLL ZVALUE zfilesize(FILEID id);
|
E_FUNC ZVALUE zfilesize(FILEID id);
|
||||||
extern DLL void showfiles(void);
|
E_FUNC void showfiles(void);
|
||||||
extern DLL int fscanfid(FILEID id, char *fmt, int count, VALUE **vals);
|
E_FUNC int fscanfid(FILEID id, char *fmt, int count, VALUE **vals);
|
||||||
extern DLL int scanfstr(char *str, char *fmt, int count, VALUE **vals);
|
E_FUNC int scanfstr(char *str, char *fmt, int count, VALUE **vals);
|
||||||
extern DLL int ftellid(FILEID id, ZVALUE *res);
|
E_FUNC int ftellid(FILEID id, ZVALUE *res);
|
||||||
extern DLL int fseekid(FILEID id, ZVALUE offset, int whence);
|
E_FUNC int fseekid(FILEID id, ZVALUE offset, int whence);
|
||||||
extern DLL int isattyid(FILEID id);
|
E_FUNC int isattyid(FILEID id);
|
||||||
extern DLL int fsearch(FILEID id, char *str, ZVALUE start, ZVALUE end, ZVALUE *res);
|
E_FUNC int fsearch(FILEID id, char *str, ZVALUE start, ZVALUE end, ZVALUE *res);
|
||||||
extern DLL int frsearch(FILEID id, char *str, ZVALUE first, ZVALUE last, ZVALUE *res);
|
E_FUNC int frsearch(FILEID id, char *str, ZVALUE first, ZVALUE last, ZVALUE *res);
|
||||||
extern DLL void showconstants(void);
|
E_FUNC void showconstants(void);
|
||||||
extern DLL void freeconstant(unsigned long);
|
E_FUNC void freeconstant(unsigned long);
|
||||||
extern DLL void freestringconstant(long);
|
E_FUNC void freestringconstant(long);
|
||||||
extern DLL void trimconstants(void);
|
E_FUNC void trimconstants(void);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Input routines.
|
* Input routines.
|
||||||
*/
|
*/
|
||||||
extern DLL int openstring(char *str, size_t num);
|
E_FUNC int openstring(char *str, size_t num);
|
||||||
extern DLL int openterminal(void);
|
E_FUNC int openterminal(void);
|
||||||
extern DLL int opensearchfile(char *name, char *pathlist, char *exten, int reopen_ok);
|
E_FUNC int opensearchfile(char *name, char *pathlist, char *exten, int reopen_ok);
|
||||||
extern DLL char *nextline(void);
|
E_FUNC char *nextline(void);
|
||||||
extern DLL int nextchar(void);
|
E_FUNC int nextchar(void);
|
||||||
extern DLL void reread(void);
|
E_FUNC void reread(void);
|
||||||
extern DLL void resetinput(void);
|
E_FUNC void resetinput(void);
|
||||||
extern DLL void setprompt(char *);
|
E_FUNC void setprompt(char *);
|
||||||
extern DLL BOOL inputisterminal(void);
|
E_FUNC BOOL inputisterminal(void);
|
||||||
extern DLL int inputlevel(void);
|
E_FUNC int inputlevel(void);
|
||||||
extern DLL long calclevel(void);
|
E_FUNC long calclevel(void);
|
||||||
extern DLL char *inputname(void);
|
E_FUNC char *inputname(void);
|
||||||
extern DLL long linenumber(void);
|
E_FUNC long linenumber(void);
|
||||||
extern DLL void runrcfiles(void);
|
E_FUNC void runrcfiles(void);
|
||||||
extern DLL void closeinput(void);
|
E_FUNC void closeinput(void);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Other routines.
|
* Other routines.
|
||||||
*/
|
*/
|
||||||
extern DLL NUMBER *constvalue(unsigned long index);
|
E_FUNC NUMBER *constvalue(unsigned long index);
|
||||||
extern DLL long addnumber(char *str);
|
E_FUNC long addnumber(char *str);
|
||||||
extern DLL long addqconstant(NUMBER *q);
|
E_FUNC long addqconstant(NUMBER *q);
|
||||||
extern DLL void initstack(void);
|
E_FUNC void initstack(void);
|
||||||
extern DLL void getcommands(BOOL toplevel);
|
E_FUNC void getcommands(BOOL toplevel);
|
||||||
extern DLL void givehelp(char *type);
|
E_FUNC void givehelp(char *type);
|
||||||
extern DLL void libcalc_call_me_first(void);
|
E_FUNC void libcalc_call_me_first(void);
|
||||||
extern DLL void libcalc_call_me_last(void);
|
E_FUNC void libcalc_call_me_last(void);
|
||||||
extern DLL BOOL calc_tty(int fd);
|
E_FUNC BOOL calc_tty(int fd);
|
||||||
extern DLL BOOL orig_tty(int fd);
|
E_FUNC BOOL orig_tty(int fd);
|
||||||
extern DLL void showerrors(void);
|
E_FUNC void showerrors(void);
|
||||||
extern DLL char *calc_strdup(CONST char *);
|
E_FUNC char *calc_strdup(CONST char *);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Initialization
|
* Initialization
|
||||||
*/
|
*/
|
||||||
extern DLL void initialize(void);
|
E_FUNC void initialize(void);
|
||||||
extern DLL void reinitialize(void);
|
E_FUNC void reinitialize(void);
|
||||||
#if !defined (_WIN32)
|
#if !defined (_WIN32)
|
||||||
extern DLL int isatty(int tty); /* TRUE if fd is a tty */
|
E_FUNC int isatty(int tty); /* TRUE if fd is a tty */
|
||||||
#endif
|
#endif
|
||||||
extern DLL char *version(void); /* return version string */
|
E_FUNC char *version(void); /* return version string */
|
||||||
extern DLL int post_init; /* TRUE => math_error setjmp is ready */
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* global flags and definitions
|
* global flags and definitions
|
||||||
*/
|
*/
|
||||||
extern DLL int abortlevel; /* current level of aborts */
|
EXTERN int abortlevel; /* current level of aborts */
|
||||||
extern DLL BOOL inputwait; /* TRUE if in a terminal input wait */
|
EXTERN BOOL inputwait; /* TRUE if in a terminal input wait */
|
||||||
extern DLL jmp_buf jmpbuf; /* for errors */
|
|
||||||
|
|
||||||
extern DLL int p_flag; /* TRUE => pipe mode */
|
EXTERN int p_flag; /* TRUE => pipe mode */
|
||||||
extern DLL int q_flag; /* TRUE => don't execute rc files */
|
EXTERN int q_flag; /* TRUE => don't execute rc files */
|
||||||
extern DLL int u_flag; /* TRUE => unbuffer stdin and stdout */
|
EXTERN int u_flag; /* TRUE => unbuffer stdin and stdout */
|
||||||
extern DLL int d_flag; /* TRUE => disable heading, resource_debug */
|
EXTERN int d_flag; /* TRUE => disable heading, resource_debug */
|
||||||
extern DLL int c_flag; /* TRUE => continue after error if permitted */
|
EXTERN int c_flag; /* TRUE => continue after error if permitted */
|
||||||
extern DLL int i_flag; /* TRUE => try to go interactive after error */
|
EXTERN int i_flag; /* TRUE => try to go interactive after error */
|
||||||
extern DLL int s_flag; /* TRUE => keep args as strings for argv() */
|
E_FUNC int s_flag; /* TRUE => keep args as strings for argv() */
|
||||||
extern DLL long stoponerror; /* >0 => stop, <0 => continue, ==0 => use -c */
|
EXTERN long stoponerror; /* >0 => stop, <0 => continue, ==0 => use -c */
|
||||||
extern DLL BOOL abort_now; /* TRUE => try to go interactive */
|
EXTERN BOOL abort_now; /* TRUE => try to go interactive */
|
||||||
|
|
||||||
extern DLL int argc_value; /* count of argv[] strings for argv() builtin */
|
E_FUNC int argc_value; /* count of argv[] strings for argv() builtin */
|
||||||
extern DLL char **argv_value; /* argv[] strings for argv() builtin */
|
E_FUNC char **argv_value; /* argv[] strings for argv() builtin */
|
||||||
|
|
||||||
extern DLL char *pager; /* $PAGER or default */
|
EXTERN char *pager; /* $PAGER or default */
|
||||||
extern DLL int stdin_tty; /* TRUE if stdin is a tty */
|
EXTERN int stdin_tty; /* TRUE if stdin is a tty */
|
||||||
extern DLL int havecommands; /* TRUE if have cmd args) */
|
EXTERN int havecommands; /* TRUE if have cmd args) */
|
||||||
extern DLL char *program; /* our name */
|
EXTERN char *program; /* our name */
|
||||||
extern DLL char *base_name; /* basename of our name */
|
EXTERN char *base_name; /* basename of our name */
|
||||||
extern DLL char cmdbuf[]; /* command line expression */
|
EXTERN char cmdbuf[]; /* command line expression */
|
||||||
|
|
||||||
extern DLL int abortlevel; /* current level of aborts */
|
EXTERN int abortlevel; /* current level of aborts */
|
||||||
extern DLL BOOL inputwait; /* TRUE if in a terminal input wait */
|
EXTERN BOOL inputwait; /* TRUE if in a terminal input wait */
|
||||||
extern DLL VALUE *stack; /* execution stack */
|
EXTERN VALUE *stack; /* execution stack */
|
||||||
extern DLL int dumpnames; /* TRUE => dump names rather than indices */
|
EXTERN int dumpnames; /* TRUE => dump names rather than indices */
|
||||||
|
|
||||||
extern DLL char *calcpath; /* $CALCPATH or default */
|
EXTERN char *calcpath; /* $CALCPATH or default */
|
||||||
extern DLL char *calcrc; /* $CALCRC or default */
|
EXTERN char *calcrc; /* $CALCRC or default */
|
||||||
extern DLL char *calcbindings; /* $CALCBINDINGS or default */
|
EXTERN char *calcbindings; /* $CALCBINDINGS or default */
|
||||||
extern DLL char *home; /* $HOME or default */
|
EXTERN char *home; /* $HOME or default */
|
||||||
extern DLL char *shell; /* $SHELL or default */
|
EXTERN char *shell; /* $SHELL or default */
|
||||||
extern DLL char *program; /* our name (argv[0]) */
|
|
||||||
|
|
||||||
extern DLL int no_env; /* TRUE (-e) => ignore env vars on startup */
|
EXTERN int no_env; /* TRUE (-e) => ignore env vars on startup */
|
||||||
extern DLL long errmax; /* if >= 0, error when errcount exceeds errmax */
|
EXTERN long errmax; /* if >= 0, error when errcount exceeds errmax */
|
||||||
extern DLL int use_old_std; /* TRUE (-O) => use classic configuration */
|
EXTERN int use_old_std; /* TRUE (-O) => use classic configuration */
|
||||||
|
|
||||||
extern DLL int allow_read; /* FALSE => dont open any files for reading */
|
EXTERN int allow_read; /* FALSE => dont open any files for reading */
|
||||||
extern DLL int allow_write; /* FALSE => dont open any files for writing */
|
EXTERN int allow_write; /* FALSE => dont open any files for writing */
|
||||||
extern DLL int allow_exec; /* FALSE => may not execute any commands */
|
EXTERN int allow_exec; /* FALSE => may not execute any commands */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* calc startup and run state
|
* calc startup and run state
|
||||||
@@ -253,19 +250,19 @@ typedef enum {
|
|||||||
RUN_EXIT, /* normal exit from calc */
|
RUN_EXIT, /* normal exit from calc */
|
||||||
RUN_EXIT_WITH_ERROR /* exit with error */
|
RUN_EXIT_WITH_ERROR /* exit with error */
|
||||||
} run;
|
} run;
|
||||||
extern DLL run run_state;
|
EXTERN run run_state;
|
||||||
extern DLL char *run_state_name(run state);
|
E_FUNC char *run_state_name(run state);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* calc version information
|
* calc version information
|
||||||
*/
|
*/
|
||||||
#define CALC_TITLE "C-style arbitrary precision calculator"
|
#define CALC_TITLE "C-style arbitrary precision calculator"
|
||||||
extern int calc_major_ver;
|
EXTERN int calc_major_ver;
|
||||||
extern int calc_minor_ver;
|
EXTERN int calc_minor_ver;
|
||||||
extern int calc_major_patch;
|
EXTERN int calc_major_patch;
|
||||||
extern int calc_minor_patch;
|
EXTERN int calc_minor_patch;
|
||||||
extern char *Copyright;
|
EXTERN char *Copyright;
|
||||||
extern DLL char *version(void);
|
E_FUNC char *version(void);
|
||||||
|
|
||||||
|
|
||||||
#endif /* !__CALC_H__ */
|
#endif /* !__CALC_H__ */
|
||||||
|
36
calc.man
36
calc.man
@@ -1,5 +1,5 @@
|
|||||||
.\"
|
.\"
|
||||||
.\" Copyright (C) 1999-2004 Landon Curt Noll
|
.\" Copyright (C) 1999-2007 Landon Curt Noll
|
||||||
.\"
|
.\"
|
||||||
.\" Calc is open software; you can redistribute it and/or modify it under
|
.\" 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
|
.\" the terms of the version 2.1 of the GNU Lesser General Public License
|
||||||
@@ -13,10 +13,10 @@
|
|||||||
.\" A copy of version 2.1 of the GNU Lesser General Public License is
|
.\" 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
|
.\" distributed with calc under the filename COPYING-LGPL. You should have
|
||||||
.\" received a copy with calc; if not, write to Free Software Foundation, Inc.
|
.\" received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||||
.\" 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
.\" 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
.\"
|
.\"
|
||||||
.\" @(#) $Revision: 29.20 $
|
.\" @(#) $Revision: 30.3 $
|
||||||
.\" @(#) $Id: calc.man,v 29.20 2006/06/01 12:04:16 chongo Exp $
|
.\" @(#) $Id: calc.man,v 30.3 2007/09/08 02:53:09 chongo Exp $
|
||||||
.\" @(#) $Source: /usr/local/src/cmd/calc/RCS/calc.man,v $
|
.\" @(#) $Source: /usr/local/src/cmd/calc/RCS/calc.man,v $
|
||||||
.\"
|
.\"
|
||||||
.\" Under source code control: 1991/07/23 05:48:26
|
.\" Under source code control: 1991/07/23 05:48:26
|
||||||
@@ -28,7 +28,7 @@
|
|||||||
.\" calculator by David I. Bell
|
.\" calculator by David I. Bell
|
||||||
.\" man page by Landon Noll
|
.\" man page by Landon Noll
|
||||||
.\"
|
.\"
|
||||||
.TH calc 1 "^..^" "1999-11-30"
|
.TH calc 1 "^..^" "2007-02-06"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
calc \- arbitrary precision calculator
|
calc \- arbitrary precision calculator
|
||||||
.SH SYNOPSIS
|
.SH SYNOPSIS
|
||||||
@@ -63,7 +63,7 @@ CALC OPTIONS
|
|||||||
|
|
||||||
.TP
|
.TP
|
||||||
.B \-c
|
.B \-c
|
||||||
Continue reading command lines even after an scan/parse
|
Continue reading command lines even after a scan/parse
|
||||||
error has caused the abandonment of a line.
|
error has caused the abandonment of a line.
|
||||||
Note that this option only deals with scanning and
|
Note that this option only deals with scanning and
|
||||||
parsing of the calc language.
|
parsing of the calc language.
|
||||||
@@ -225,7 +225,7 @@ filename
|
|||||||
.sp 1
|
.sp 1
|
||||||
On systems that treat an executable that begins with
|
On systems that treat an executable that begins with
|
||||||
.B #!
|
.B #!
|
||||||
as a script, the path of the execurable is appended by the kernel
|
as a script, the path of the executable is appended by the kernel
|
||||||
as the final argument to the exec() system call.
|
as the final argument to the exec() system call.
|
||||||
This is why the
|
This is why the
|
||||||
.B \-f
|
.B \-f
|
||||||
@@ -275,18 +275,14 @@ See
|
|||||||
.TP
|
.TP
|
||||||
.B \-i
|
.B \-i
|
||||||
Become interactive if possible.
|
Become interactive if possible.
|
||||||
If
|
|
||||||
.I calc_cmd
|
|
||||||
args are given,
|
|
||||||
.B calc
|
|
||||||
by default, calc will execute them and exit.
|
|
||||||
This flag causes
|
|
||||||
.B calc
|
|
||||||
to drop into interactive mode after the commands are executed.
|
|
||||||
This flag will cause
|
This flag will cause
|
||||||
.B calc
|
.B calc
|
||||||
to drop into interactive mode after the
|
to drop into interactive mode after the
|
||||||
commands are executed.
|
.I calc_cmd
|
||||||
|
arguments on the command line are evaluated.
|
||||||
|
Without this flag,
|
||||||
|
.B calc
|
||||||
|
will exit after they are evaluated.
|
||||||
.sp 1
|
.sp 1
|
||||||
For example:
|
For example:
|
||||||
.sp 1
|
.sp 1
|
||||||
@@ -706,7 +702,7 @@ the rest of the file will be processed in
|
|||||||
.BR "shell script mode" .
|
.BR "shell script mode" .
|
||||||
Note that
|
Note that
|
||||||
.B \-f
|
.B \-f
|
||||||
must at the end of the intiial ``#!'' line.
|
must at the end of the initial ``#!'' line.
|
||||||
Any other optional
|
Any other optional
|
||||||
.B "other_flags"
|
.B "other_flags"
|
||||||
must come before
|
must come before
|
||||||
@@ -1078,9 +1074,9 @@ If you do not have these files, write to:
|
|||||||
.in +0.5i
|
.in +0.5i
|
||||||
.nf
|
.nf
|
||||||
Free Software Foundation, Inc.
|
Free Software Foundation, Inc.
|
||||||
59 Temple Place
|
51 Franklin Street
|
||||||
Suite 330
|
Fifth Floor
|
||||||
Boston, MA 02111-1307
|
Boston, MA 02110-1301
|
||||||
USA
|
USA
|
||||||
.fi
|
.fi
|
||||||
.in -0.5i
|
.in -0.5i
|
||||||
|
70
calc.spec.in
70
calc.spec.in
@@ -2,7 +2,7 @@
|
|||||||
#
|
#
|
||||||
# calc.spec.in - template specfile for calc
|
# calc.spec.in - template specfile for calc
|
||||||
#
|
#
|
||||||
# Copyright (C) 2003-2005 Petteri Kettunen and Landon Curt Noll
|
# Copyright (C) 2003-2007 Petteri Kettunen and Landon Curt Noll
|
||||||
#
|
#
|
||||||
# Calc is open software; you can redistribute it and/or modify it under
|
# 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
|
# the terms of the version 2.1 of the GNU Lesser General Public License
|
||||||
@@ -16,10 +16,10 @@
|
|||||||
# A copy of version 2.1 of the GNU Lesser General Public License is
|
# 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
|
# distributed with calc under the filename COPYING-LGPL. You should have
|
||||||
# received a copy with calc; if not, write to Free Software Foundation, Inc.
|
# received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||||
# 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
#
|
#
|
||||||
# @(#) $Revision: 29.16 $
|
# @(#) $Revision: 30.6 $
|
||||||
# @(#) $Id: calc.spec.in,v 29.16 2006/06/26 05:50:44 chongo Exp $
|
# @(#) $Id: calc.spec.in,v 30.6 2007/10/16 12:22:22 chongo Exp $
|
||||||
# @(#) $Source: /usr/local/src/cmd/calc/RCS/calc.spec.in,v $
|
# @(#) $Source: /usr/local/src/cmd/calc/RCS/calc.spec.in,v $
|
||||||
#
|
#
|
||||||
# Under source code control: 2003/02/16 20:21:39
|
# Under source code control: 2003/02/16 20:21:39
|
||||||
@@ -37,10 +37,10 @@
|
|||||||
Summary: Arbitrary precision calculator.
|
Summary: Arbitrary precision calculator.
|
||||||
Name: calc
|
Name: calc
|
||||||
Version: <<<PROJECT_VERSION>>>
|
Version: <<<PROJECT_VERSION>>>
|
||||||
Release: 0
|
Release: 1.1
|
||||||
License: LGPL
|
License: LGPL
|
||||||
Group: Applications/Engineering
|
Group: Applications/Engineering
|
||||||
Source: %{name}-%{version}.tar.gz
|
Source: %{name}-%{version}.tar.bz2
|
||||||
URL: http://www.isthe.com/chongo/tech/comp/calc/index.html
|
URL: http://www.isthe.com/chongo/tech/comp/calc/index.html
|
||||||
Requires: ncurses >= 5.2-26, readline >= 4.2, less >= 358
|
Requires: ncurses >= 5.2-26, readline >= 4.2, less >= 358
|
||||||
BuildRequires: ncurses-devel >= 5.2-26, readline-devel >= 4.2
|
BuildRequires: ncurses-devel >= 5.2-26, readline-devel >= 4.2
|
||||||
@@ -73,12 +73,40 @@ For the latest calc release, see the project home page:
|
|||||||
%setup -q
|
%setup -q
|
||||||
|
|
||||||
%build
|
%build
|
||||||
make %{?_smp_mflags} T=%{buildroot} BINDIR=%{_bindir} LIBDIR=%{_libdir} CALC_SHAREDIR=%{_datadir}/%{name} CALC_INCDIR=%{_includedir}/calc MANDIR=%{_mandir}/man1 all chk
|
echo '-=- calc.spec beginning make clobber -=-'
|
||||||
|
make %{?_smp_mflags} T=%{buildroot} BINDIR=%{_bindir} LIBDIR=%{_libdir} CALC_SHAREDIR=%{_datadir}/%{name} CALC_INCDIR=%{_includedir}/calc MANDIR=%{_mandir}/man1 EXT= V=@ clobber
|
||||||
|
echo '-=- calc.spec ending make clobber -=-'
|
||||||
|
echo '-=- calc.spec beginning make calc-static-only -=-'
|
||||||
|
make %{?_smp_mflags} T=%{buildroot} BINDIR=%{_bindir} LIBDIR=%{_libdir} CALC_SHAREDIR=%{_datadir}/%{name} CALC_INCDIR=%{_includedir}/calc MANDIR=%{_mandir}/man1 EXT= V=@ calc-static-only BLD_TYPE=calc-static-only
|
||||||
|
echo '-=- calc.spec ending make calc-static-only -=-'
|
||||||
|
echo '-=- calc.spec beginning make rpm-hide-static -=-'
|
||||||
|
make %{?_smp_mflags} T=%{buildroot} BINDIR=%{_bindir} LIBDIR=%{_libdir} CALC_SHAREDIR=%{_datadir}/%{name} CALC_INCDIR=%{_includedir}/calc MANDIR=%{_mandir}/man1 EXT= V=@ rpm-hide-static
|
||||||
|
echo '-=- calc.spec ending make rpm-hide-static -=-'
|
||||||
|
echo '-=- calc.spec beginning make clobber (again) -=-'
|
||||||
|
make %{?_smp_mflags} T=%{buildroot} BINDIR=%{_bindir} LIBDIR=%{_libdir} CALC_SHAREDIR=%{_datadir}/%{name} CALC_INCDIR=%{_includedir}/calc MANDIR=%{_mandir}/man1 EXT= V=@ clobber
|
||||||
|
echo '-=- calc.spec ending make clobber (again) -=-'
|
||||||
|
echo '-=- calc.spec beginning make calc-dynamic-only -=-'
|
||||||
|
make %{?_smp_mflags} T=%{buildroot} BINDIR=%{_bindir} LIBDIR=%{_libdir} CALC_SHAREDIR=%{_datadir}/%{name} CALC_INCDIR=%{_includedir}/calc MANDIR=%{_mandir}/man1 EXT= V=@ calc-dynamic-only BLD_TYPE=calc-dynamic-only LD_SHARE=
|
||||||
|
echo '-=- calc.spec ending make calc-dynamic-only -=-'
|
||||||
|
echo '-=- calc.spec beginning make chk -=-'
|
||||||
|
make %{?_smp_mflags} T=%{buildroot} BINDIR=%{_bindir} LIBDIR=%{_libdir} CALC_SHAREDIR=%{_datadir}/%{name} CALC_INCDIR=%{_includedir}/calc MANDIR=%{_mandir}/man1 EXT= V=@ chk
|
||||||
|
echo '-=- calc.spec ending make chk -=-'
|
||||||
|
echo '-=- calc.spec beginning make rpm-unhide-static -=-'
|
||||||
|
make %{?_smp_mflags} T=%{buildroot} BINDIR=%{_bindir} LIBDIR=%{_libdir} CALC_SHAREDIR=%{_datadir}/%{name} CALC_INCDIR=%{_includedir}/calc MANDIR=%{_mandir}/man1 EXT= V=@ rpm-unhide-static
|
||||||
|
echo '-=- calc.spec ending make rpm-unhide-static -=-'
|
||||||
|
echo '-=- calc.spec beginning make rpm-clean-static -=-'
|
||||||
|
make %{?_smp_mflags} T=%{buildroot} BINDIR=%{_bindir} LIBDIR=%{_libdir} CALC_SHAREDIR=%{_datadir}/%{name} CALC_INCDIR=%{_includedir}/calc MANDIR=%{_mandir}/man1 EXT= V=@ rpm-clean-static
|
||||||
|
echo '-=- calc.spec ending make rpm-clean-static -=-'
|
||||||
|
echo '-=- calc.spec beginning make rpm-chk-static -=-'
|
||||||
|
make %{?_smp_mflags} T=%{buildroot} BINDIR=%{_bindir} LIBDIR=%{_libdir} CALC_SHAREDIR=%{_datadir}/%{name} CALC_INCDIR=%{_includedir}/calc MANDIR=%{_mandir}/man1 EXT= V=@ rpm-chk-static
|
||||||
|
echo '-=- calc.spec ending make rpm-chk-static -=-'
|
||||||
|
|
||||||
%install
|
%install
|
||||||
rm -rf %{buildroot}
|
rm -rf %{buildroot}
|
||||||
mkdir -p %{buildroot}
|
mkdir -p %{buildroot}
|
||||||
make T=%{buildroot} BINDIR=%{_bindir} LIBDIR=%{_libdir} CALC_SHAREDIR=%{_datadir}/%{name} CALC_INCDIR=%{_includedir}/calc MANDIR=%{_mandir}/man1 install
|
echo '-=- calc.spec beginning make install -=-'
|
||||||
|
make T=%{buildroot} BINDIR=%{_bindir} LIBDIR=%{_libdir} CALC_SHAREDIR=%{_datadir}/%{name} CALC_INCDIR=%{_includedir}/calc MANDIR=%{_mandir}/man1 EXT= V=@ install
|
||||||
|
echo '-=- calc.spec ending make install -=-'
|
||||||
|
|
||||||
%clean
|
%clean
|
||||||
rm -rf %{buildroot}
|
rm -rf %{buildroot}
|
||||||
@@ -86,21 +114,31 @@ rm -rf %{buildroot}
|
|||||||
%files
|
%files
|
||||||
%defattr(-, root, root)
|
%defattr(-, root, root)
|
||||||
%doc BUGS CHANGES COPYING COPYING-LGPL
|
%doc BUGS CHANGES COPYING COPYING-LGPL
|
||||||
%{_bindir}/*
|
%attr(755, root, root) %{_bindir}/calc
|
||||||
%{_mandir}/man1/*
|
%attr(755, root, root) %{_bindir}/cscript/*
|
||||||
%{_datadir}/%{name}/*/*
|
%attr(644, root, root) %{_mandir}/man1/calc.1.gz
|
||||||
%{_datadir}/%{name}/bindings
|
%attr(644, root, root) %{_datadir}/%{name}/README
|
||||||
%{_datadir}/%{name}/README
|
%attr(644, root, root) %{_datadir}/%{name}/bindings
|
||||||
%{_datadir}/%{name}/*.cal
|
%attr(644, root, root) %{_datadir}/%{name}/custhelp/*
|
||||||
%{_datadir}/%{name}/*.line
|
%attr(644, root, root) %{_datadir}/%{name}/custom/*.cal
|
||||||
|
%attr(644, root, root) %{_datadir}/%{name}/help/*
|
||||||
|
%attr(644, root, root) %{_datadir}/%{name}/*.cal
|
||||||
|
%attr(644, root, root) %{_datadir}/%{name}/*.line
|
||||||
|
%attr(644, root, root) %{_libdir}/libcalc.so.%{version}
|
||||||
|
%attr(644, root, root) %{_libdir}/libcustcalc.so.%{version}
|
||||||
|
|
||||||
%files devel
|
%files devel
|
||||||
%defattr(-, root, root)
|
%defattr(-, root, root)
|
||||||
%doc BUGS COPYING COPYING-LGPL LIBRARY
|
%doc BUGS COPYING COPYING-LGPL LIBRARY
|
||||||
|
%attr(755, root, root) %{_bindir}/calc-static
|
||||||
%attr(644, root, root) %{_includedir}/calc/*
|
%attr(644, root, root) %{_includedir}/calc/*
|
||||||
%attr(644, root, root) %{_libdir}/*.a
|
%attr(644, root, root) %{_libdir}/libcalc.a
|
||||||
|
%attr(644, root, root) %{_libdir}/libcustcalc.a
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Sun Sep 01 2007 Landon Curt Noll http://www.isthe.com/chongo
|
||||||
|
- Release of calc-2.12.2
|
||||||
|
- Calc builds with shared libraries
|
||||||
* Sun Jun 25 2006 Landon Curt Noll http://www.isthe.com/chongo
|
* Sun Jun 25 2006 Landon Curt Noll http://www.isthe.com/chongo
|
||||||
- Changed Copyright to License as per new rpm v4.4 syntax
|
- Changed Copyright to License as per new rpm v4.4 syntax
|
||||||
* Sun May 20 2006 Landon Curt Noll http://www.isthe.com/chongo
|
* Sun May 20 2006 Landon Curt Noll http://www.isthe.com/chongo
|
||||||
|
@@ -15,10 +15,10 @@
|
|||||||
# A copy of version 2.1 of the GNU Lesser General Public License is
|
# 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
|
# distributed with calc under the filename COPYING-LGPL. You should have
|
||||||
# received a copy with calc; if not, write to Free Software Foundation, Inc.
|
# received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||||
# 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
#
|
#
|
||||||
# @(#) $Revision: 29.10 $
|
# @(#) $Revision: 30.1 $
|
||||||
# @(#) $Id: calcerr.tbl,v 29.10 2006/08/20 15:01:30 chongo Exp $
|
# @(#) $Id: calcerr.tbl,v 30.1 2007/03/16 11:09:46 chongo Exp $
|
||||||
# @(#) $Source: /usr/local/src/cmd/calc/RCS/calcerr.tbl,v $
|
# @(#) $Source: /usr/local/src/cmd/calc/RCS/calcerr.tbl,v $
|
||||||
#
|
#
|
||||||
# Under source code control: 1996/05/23 17:38:44
|
# Under source code control: 1996/05/23 17:38:44
|
||||||
|
@@ -16,10 +16,10 @@
|
|||||||
# A copy of version 2.1 of the GNU Lesser General Public License is
|
# 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
|
# distributed with calc under the filename COPYING-LGPL. You should have
|
||||||
# received a copy with calc; if not, write to Free Software Foundation, Inc.
|
# received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||||
# 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
#
|
#
|
||||||
# @(#) $Revision: 29.2 $
|
# @(#) $Revision: 30.1 $
|
||||||
# @(#) $Id: calcerr_c.awk,v 29.2 2000/06/07 14:02:13 chongo Exp $
|
# @(#) $Id: calcerr_c.awk,v 30.1 2007/03/16 11:09:46 chongo Exp $
|
||||||
# @(#) $Source: /usr/local/src/cmd/calc/RCS/calcerr_c.awk,v $
|
# @(#) $Source: /usr/local/src/cmd/calc/RCS/calcerr_c.awk,v $
|
||||||
#
|
#
|
||||||
# Under source code control: 1996/05/24 03:15:35
|
# Under source code control: 1996/05/24 03:15:35
|
||||||
|
@@ -16,10 +16,10 @@
|
|||||||
# A copy of version 2.1 of the GNU Lesser General Public License is
|
# 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
|
# distributed with calc under the filename COPYING-LGPL. You should have
|
||||||
# received a copy with calc; if not, write to Free Software Foundation, Inc.
|
# received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||||
# 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
#
|
#
|
||||||
# @(#) $Revision: 29.2 $
|
# @(#) $Revision: 30.1 $
|
||||||
# @(#) $Id: calcerr_c.sed,v 29.2 2000/06/07 14:02:13 chongo Exp $
|
# @(#) $Id: calcerr_c.sed,v 30.1 2007/03/16 11:09:46 chongo Exp $
|
||||||
# @(#) $Source: /usr/local/src/cmd/calc/RCS/calcerr_c.sed,v $
|
# @(#) $Source: /usr/local/src/cmd/calc/RCS/calcerr_c.sed,v $
|
||||||
#
|
#
|
||||||
# Under source code control: 1996/05/24 03:15:35
|
# Under source code control: 1996/05/24 03:15:35
|
||||||
|
@@ -16,10 +16,10 @@
|
|||||||
# A copy of version 2.1 of the GNU Lesser General Public License is
|
# 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
|
# distributed with calc under the filename COPYING-LGPL. You should have
|
||||||
# received a copy with calc; if not, write to Free Software Foundation, Inc.
|
# received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||||
# 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
#
|
#
|
||||||
# @(#) $Revision: 29.2 $
|
# @(#) $Revision: 30.1 $
|
||||||
# @(#) $Id: calcerr_h.awk,v 29.2 2000/06/07 14:02:13 chongo Exp $
|
# @(#) $Id: calcerr_h.awk,v 30.1 2007/03/16 11:09:46 chongo Exp $
|
||||||
# @(#) $Source: /usr/local/src/cmd/calc/RCS/calcerr_h.awk,v $
|
# @(#) $Source: /usr/local/src/cmd/calc/RCS/calcerr_h.awk,v $
|
||||||
#
|
#
|
||||||
# Under source code control: 1996/05/23 17:38:44
|
# Under source code control: 1996/05/23 17:38:44
|
||||||
|
@@ -16,10 +16,10 @@
|
|||||||
# A copy of version 2.1 of the GNU Lesser General Public License is
|
# 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
|
# distributed with calc under the filename COPYING-LGPL. You should have
|
||||||
# received a copy with calc; if not, write to Free Software Foundation, Inc.
|
# received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||||
# 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
#
|
#
|
||||||
# @(#) $Revision: 29.2 $
|
# @(#) $Revision: 30.1 $
|
||||||
# @(#) $Id: calcerr_h.sed,v 29.2 2000/06/07 14:02:13 chongo Exp $
|
# @(#) $Id: calcerr_h.sed,v 30.1 2007/03/16 11:09:46 chongo Exp $
|
||||||
# @(#) $Source: /usr/local/src/cmd/calc/RCS/calcerr_h.sed,v $
|
# @(#) $Source: /usr/local/src/cmd/calc/RCS/calcerr_h.sed,v $
|
||||||
#
|
#
|
||||||
# Under source code control: 1996/05/23 17:38:44
|
# Under source code control: 1996/05/23 17:38:44
|
||||||
|
@@ -16,10 +16,10 @@
|
|||||||
# A copy of version 2.1 of the GNU Lesser General Public License is
|
# 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
|
# distributed with calc under the filename COPYING-LGPL. You should have
|
||||||
# received a copy with calc; if not, write to Free Software Foundation, Inc.
|
# received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||||
# 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
#
|
#
|
||||||
# @(#) $Revision: 29.4 $
|
# @(#) $Revision: 30.1 $
|
||||||
# @(#) $Id: check.awk,v 29.4 2006/08/20 16:16:31 chongo Exp $
|
# @(#) $Id: check.awk,v 30.1 2007/03/16 11:09:46 chongo Exp $
|
||||||
# @(#) $Source: /usr/local/src/cmd/calc/RCS/check.awk,v $
|
# @(#) $Source: /usr/local/src/cmd/calc/RCS/check.awk,v $
|
||||||
#
|
#
|
||||||
# Under source code control: 1996/05/25 22:07:58
|
# Under source code control: 1996/05/25 22:07:58
|
||||||
@@ -64,7 +64,7 @@ NF == 0 {
|
|||||||
end_seen = 1;
|
end_seen = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
$1 ~ /^[0-9]+:/ || $1 ~ /^[0-9]+-[0-9]*:/ || $1 ~ /^"))$/ {
|
$1 ~ /^[0-9]+:/ || $1 ~ /^[0-9]+-[0-9]*:/ || $1 ~ /^"\)\)$/ {
|
||||||
if (error > 0) {
|
if (error > 0) {
|
||||||
if (havebuf2) {
|
if (havebuf2) {
|
||||||
print buf2;
|
print buf2;
|
||||||
|
120
cmath.h
120
cmath.h
@@ -1,7 +1,7 @@
|
|||||||
/*
|
/*
|
||||||
* cmath - data structures for extended precision complex arithmetic
|
* cmath - data structures for extended precision complex arithmetic
|
||||||
*
|
*
|
||||||
* Copyright (C) 1999 David I. Bell
|
* Copyright (C) 1999-2007 David I. Bell
|
||||||
*
|
*
|
||||||
* Calc is open software; you can redistribute it and/or modify it under
|
* 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
|
* the terms of the version 2.1 of the GNU Lesser General Public License
|
||||||
@@ -15,10 +15,10 @@
|
|||||||
* A copy of version 2.1 of the GNU Lesser General Public License is
|
* 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
|
* distributed with calc under the filename COPYING-LGPL. You should have
|
||||||
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||||
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
*
|
*
|
||||||
* @(#) $Revision: 29.7 $
|
* @(#) $Revision: 30.1 $
|
||||||
* @(#) $Id: cmath.h,v 29.7 2005/10/18 10:43:49 chongo Exp $
|
* @(#) $Id: cmath.h,v 30.1 2007/03/16 11:09:46 chongo Exp $
|
||||||
* @(#) $Source: /usr/local/src/cmd/calc/RCS/cmath.h,v $
|
* @(#) $Source: /usr/local/src/cmd/calc/RCS/cmath.h,v $
|
||||||
*
|
*
|
||||||
* Under source code control: 1993/07/30 19:42:45
|
* Under source code control: 1993/07/30 19:42:45
|
||||||
@@ -52,84 +52,84 @@ typedef struct {
|
|||||||
/*
|
/*
|
||||||
* Input, output, and conversion routines.
|
* Input, output, and conversion routines.
|
||||||
*/
|
*/
|
||||||
extern COMPLEX *comalloc(void);
|
E_FUNC COMPLEX *comalloc(void);
|
||||||
extern COMPLEX *qqtoc(NUMBER *q1, NUMBER *q2);
|
E_FUNC COMPLEX *qqtoc(NUMBER *q1, NUMBER *q2);
|
||||||
extern void comfree(COMPLEX *c);
|
E_FUNC void comfree(COMPLEX *c);
|
||||||
extern void comprint(COMPLEX *c);
|
E_FUNC void comprint(COMPLEX *c);
|
||||||
extern void cprintfr(COMPLEX *c);
|
E_FUNC void cprintfr(COMPLEX *c);
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Basic numeric routines.
|
* Basic numeric routines.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
extern COMPLEX *c_add(COMPLEX *c1, COMPLEX *c2);
|
E_FUNC COMPLEX *c_add(COMPLEX *c1, COMPLEX *c2);
|
||||||
extern COMPLEX *c_sub(COMPLEX *c1, COMPLEX *c2);
|
E_FUNC COMPLEX *c_sub(COMPLEX *c1, COMPLEX *c2);
|
||||||
extern COMPLEX *c_mul(COMPLEX *c1, COMPLEX *c2);
|
E_FUNC COMPLEX *c_mul(COMPLEX *c1, COMPLEX *c2);
|
||||||
extern COMPLEX *c_div(COMPLEX *c1, COMPLEX *c2);
|
E_FUNC COMPLEX *c_div(COMPLEX *c1, COMPLEX *c2);
|
||||||
extern COMPLEX *c_addq(COMPLEX *c, NUMBER *q);
|
E_FUNC COMPLEX *c_addq(COMPLEX *c, NUMBER *q);
|
||||||
extern COMPLEX *c_subq(COMPLEX *c, NUMBER *q);
|
E_FUNC COMPLEX *c_subq(COMPLEX *c, NUMBER *q);
|
||||||
extern COMPLEX *c_mulq(COMPLEX *c, NUMBER *q);
|
E_FUNC COMPLEX *c_mulq(COMPLEX *c, NUMBER *q);
|
||||||
extern COMPLEX *c_divq(COMPLEX *c, NUMBER *q);
|
E_FUNC COMPLEX *c_divq(COMPLEX *c, NUMBER *q);
|
||||||
extern COMPLEX *c_scale(COMPLEX *c, long i);
|
E_FUNC COMPLEX *c_scale(COMPLEX *c, long i);
|
||||||
extern COMPLEX *c_shift(COMPLEX *c, long i);
|
E_FUNC COMPLEX *c_shift(COMPLEX *c, long i);
|
||||||
extern COMPLEX *c_square(COMPLEX *c);
|
E_FUNC COMPLEX *c_square(COMPLEX *c);
|
||||||
extern COMPLEX *c_conj(COMPLEX *c);
|
E_FUNC COMPLEX *c_conj(COMPLEX *c);
|
||||||
extern COMPLEX *c_real(COMPLEX *c);
|
E_FUNC COMPLEX *c_real(COMPLEX *c);
|
||||||
extern COMPLEX *c_imag(COMPLEX *c);
|
E_FUNC COMPLEX *c_imag(COMPLEX *c);
|
||||||
extern COMPLEX *c_neg(COMPLEX *c);
|
E_FUNC COMPLEX *c_neg(COMPLEX *c);
|
||||||
extern COMPLEX *c_inv(COMPLEX *c);
|
E_FUNC COMPLEX *c_inv(COMPLEX *c);
|
||||||
extern COMPLEX *c_int(COMPLEX *c);
|
E_FUNC COMPLEX *c_int(COMPLEX *c);
|
||||||
extern COMPLEX *c_frac(COMPLEX *c);
|
E_FUNC COMPLEX *c_frac(COMPLEX *c);
|
||||||
extern BOOL c_cmp(COMPLEX *c1, COMPLEX *c2);
|
E_FUNC BOOL c_cmp(COMPLEX *c1, COMPLEX *c2);
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* More complicated functions.
|
* More complicated functions.
|
||||||
*/
|
*/
|
||||||
extern COMPLEX *c_powi(COMPLEX *c, NUMBER *q);
|
E_FUNC COMPLEX *c_powi(COMPLEX *c, NUMBER *q);
|
||||||
extern NUMBER *c_ilog(COMPLEX *c, ZVALUE base);
|
E_FUNC NUMBER *c_ilog(COMPLEX *c, ZVALUE base);
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Transcendental routines. These all take an epsilon argument to
|
* Transcendental routines. These all take an epsilon argument to
|
||||||
* specify how accurately these are to be calculated.
|
* specify how accurately these are to be calculated.
|
||||||
*/
|
*/
|
||||||
extern COMPLEX *c_power(COMPLEX *c1, COMPLEX *c2, NUMBER *epsilon);
|
E_FUNC COMPLEX *c_power(COMPLEX *c1, COMPLEX *c2, NUMBER *epsilon);
|
||||||
extern COMPLEX *c_sqrt(COMPLEX *c, NUMBER *epsilon, long R);
|
E_FUNC COMPLEX *c_sqrt(COMPLEX *c, NUMBER *epsilon, long R);
|
||||||
extern COMPLEX *c_root(COMPLEX *c, NUMBER *q, NUMBER *epsilon);
|
E_FUNC COMPLEX *c_root(COMPLEX *c, NUMBER *q, NUMBER *epsilon);
|
||||||
extern COMPLEX *c_exp(COMPLEX *c, NUMBER *epsilon);
|
E_FUNC COMPLEX *c_exp(COMPLEX *c, NUMBER *epsilon);
|
||||||
extern COMPLEX *c_ln(COMPLEX *c, NUMBER *epsilon);
|
E_FUNC COMPLEX *c_ln(COMPLEX *c, NUMBER *epsilon);
|
||||||
extern COMPLEX *c_log(COMPLEX *c, NUMBER *epsilon);
|
E_FUNC COMPLEX *c_log(COMPLEX *c, NUMBER *epsilon);
|
||||||
extern COMPLEX *c_cos(COMPLEX *c, NUMBER *epsilon);
|
E_FUNC COMPLEX *c_cos(COMPLEX *c, NUMBER *epsilon);
|
||||||
extern COMPLEX *c_sin(COMPLEX *c, NUMBER *epsilon);
|
E_FUNC COMPLEX *c_sin(COMPLEX *c, NUMBER *epsilon);
|
||||||
extern COMPLEX *c_cosh(COMPLEX *c, NUMBER *epsilon);
|
E_FUNC COMPLEX *c_cosh(COMPLEX *c, NUMBER *epsilon);
|
||||||
extern COMPLEX *c_sinh(COMPLEX *c, NUMBER *epsilon);
|
E_FUNC COMPLEX *c_sinh(COMPLEX *c, NUMBER *epsilon);
|
||||||
extern COMPLEX *c_polar(NUMBER *q1, NUMBER *q2, NUMBER *epsilon);
|
E_FUNC COMPLEX *c_polar(NUMBER *q1, NUMBER *q2, NUMBER *epsilon);
|
||||||
extern COMPLEX *c_rel(COMPLEX *c1, COMPLEX *c2);
|
E_FUNC COMPLEX *c_rel(COMPLEX *c1, COMPLEX *c2);
|
||||||
extern COMPLEX *c_asin(COMPLEX *c, NUMBER *epsilon);
|
E_FUNC COMPLEX *c_asin(COMPLEX *c, NUMBER *epsilon);
|
||||||
extern COMPLEX *c_acos(COMPLEX *c, NUMBER *epsilon);
|
E_FUNC COMPLEX *c_acos(COMPLEX *c, NUMBER *epsilon);
|
||||||
extern COMPLEX *c_atan(COMPLEX *c, NUMBER *epsilon);
|
E_FUNC COMPLEX *c_atan(COMPLEX *c, NUMBER *epsilon);
|
||||||
extern COMPLEX *c_acot(COMPLEX *c, NUMBER *epsilon);
|
E_FUNC COMPLEX *c_acot(COMPLEX *c, NUMBER *epsilon);
|
||||||
extern COMPLEX *c_asec(COMPLEX *c, NUMBER *epsilon);
|
E_FUNC COMPLEX *c_asec(COMPLEX *c, NUMBER *epsilon);
|
||||||
extern COMPLEX *c_acsc(COMPLEX *c, NUMBER *epsilon);
|
E_FUNC COMPLEX *c_acsc(COMPLEX *c, NUMBER *epsilon);
|
||||||
extern COMPLEX *c_asinh(COMPLEX *c, NUMBER *epsilon);
|
E_FUNC COMPLEX *c_asinh(COMPLEX *c, NUMBER *epsilon);
|
||||||
extern COMPLEX *c_acosh(COMPLEX *c, NUMBER *epsilon);
|
E_FUNC COMPLEX *c_acosh(COMPLEX *c, NUMBER *epsilon);
|
||||||
extern COMPLEX *c_atanh(COMPLEX *c, NUMBER *epsilon);
|
E_FUNC COMPLEX *c_atanh(COMPLEX *c, NUMBER *epsilon);
|
||||||
extern COMPLEX *c_acoth(COMPLEX *c, NUMBER *epsilon);
|
E_FUNC COMPLEX *c_acoth(COMPLEX *c, NUMBER *epsilon);
|
||||||
extern COMPLEX *c_asech(COMPLEX *c, NUMBER *epsilon);
|
E_FUNC COMPLEX *c_asech(COMPLEX *c, NUMBER *epsilon);
|
||||||
extern COMPLEX *c_acsch(COMPLEX *c, NUMBER *epsilon);
|
E_FUNC COMPLEX *c_acsch(COMPLEX *c, NUMBER *epsilon);
|
||||||
extern COMPLEX *c_gd(COMPLEX *c, NUMBER *epsilon);
|
E_FUNC COMPLEX *c_gd(COMPLEX *c, NUMBER *epsilon);
|
||||||
extern COMPLEX *c_agd(COMPLEX *c, NUMBER *epsilon);
|
E_FUNC COMPLEX *c_agd(COMPLEX *c, NUMBER *epsilon);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* external functions
|
* external functions
|
||||||
*/
|
*/
|
||||||
extern COMPLEX *swap_b8_in_COMPLEX(COMPLEX *dest, COMPLEX *src, BOOL all);
|
E_FUNC COMPLEX *swap_b8_in_COMPLEX(COMPLEX *dest, COMPLEX *src, BOOL all);
|
||||||
extern COMPLEX *swap_b16_in_COMPLEX(COMPLEX *dest, COMPLEX *src, BOOL all);
|
E_FUNC COMPLEX *swap_b16_in_COMPLEX(COMPLEX *dest, COMPLEX *src, BOOL all);
|
||||||
extern COMPLEX *swap_HALF_in_COMPLEX(COMPLEX *dest, COMPLEX *src, BOOL all);
|
E_FUNC COMPLEX *swap_HALF_in_COMPLEX(COMPLEX *dest, COMPLEX *src, BOOL all);
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -153,7 +153,7 @@ extern COMPLEX *swap_HALF_in_COMPLEX(COMPLEX *dest, COMPLEX *src, BOOL all);
|
|||||||
/*
|
/*
|
||||||
* Pre-defined values.
|
* Pre-defined values.
|
||||||
*/
|
*/
|
||||||
extern COMPLEX _czero_, _cone_, _conei_;
|
EXTERN COMPLEX _czero_, _cone_, _conei_;
|
||||||
|
|
||||||
|
|
||||||
#endif /* !__CMATH_H__ */
|
#endif /* !__CMATH_H__ */
|
||||||
|
205
codegen.c
205
codegen.c
@@ -1,7 +1,7 @@
|
|||||||
/*
|
/*
|
||||||
* codegen - module to generate opcodes from the input tokens
|
* codegen - module to generate opcodes from the input tokens
|
||||||
*
|
*
|
||||||
* Copyright (C) 1999-2006 David I. Bell and Ernest Bowen
|
* Copyright (C) 1999-2007 David I. Bell and Ernest Bowen
|
||||||
*
|
*
|
||||||
* Primary author: David I. Bell
|
* Primary author: David I. Bell
|
||||||
*
|
*
|
||||||
@@ -17,10 +17,10 @@
|
|||||||
* A copy of version 2.1 of the GNU Lesser General Public License is
|
* 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
|
* distributed with calc under the filename COPYING-LGPL. You should have
|
||||||
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||||
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
*
|
*
|
||||||
* @(#) $Revision: 29.21 $
|
* @(#) $Revision: 30.2 $
|
||||||
* @(#) $Id: codegen.c,v 29.21 2006/06/20 10:28:06 chongo Exp $
|
* @(#) $Id: codegen.c,v 30.2 2007/07/05 13:30:38 chongo Exp $
|
||||||
* @(#) $Source: /usr/local/src/cmd/calc/RCS/codegen.c,v $
|
* @(#) $Source: /usr/local/src/cmd/calc/RCS/codegen.c,v $
|
||||||
*
|
*
|
||||||
* Under source code control: 1990/02/15 01:48:13
|
* Under source code control: 1990/02/15 01:48:13
|
||||||
@@ -36,12 +36,13 @@
|
|||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#include "lib_calc.h"
|
||||||
#include "calc.h"
|
#include "calc.h"
|
||||||
#include "token.h"
|
#include "token.h"
|
||||||
#include "symbol.h"
|
#include "symbol.h"
|
||||||
#include "label.h"
|
#include "label.h"
|
||||||
#include "opcodes.h"
|
#include "opcodes.h"
|
||||||
#include "string.h"
|
#include "str.h"
|
||||||
#include "func.h"
|
#include "func.h"
|
||||||
#include "conf.h"
|
#include "conf.h"
|
||||||
|
|
||||||
@@ -49,61 +50,61 @@
|
|||||||
# include <direct.h>
|
# include <direct.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
static BOOL rdonce; /* TRUE => do not reread this file */
|
STATIC BOOL rdonce; /* TRUE => do not reread this file */
|
||||||
|
|
||||||
FUNC *curfunc;
|
FUNC *curfunc;
|
||||||
|
|
||||||
static int getsymvalue(char *name, VALUE *v_p);
|
S_FUNC int getsymvalue(char *name, VALUE *v_p);
|
||||||
static int getfilename(char *name, size_t namelen, BOOL *once);
|
S_FUNC int getfilename(char *name, size_t namelen, BOOL *once);
|
||||||
static BOOL getid(char *buf);
|
S_FUNC BOOL getid(char *buf);
|
||||||
static void getshowstatement(void);
|
S_FUNC void getshowstatement(void);
|
||||||
static void getfunction(void);
|
S_FUNC void getfunction(void);
|
||||||
static void ungetfunction(void);
|
S_FUNC void ungetfunction(void);
|
||||||
static void getbody(LABEL *contlabel, LABEL *breaklabel,
|
S_FUNC void getbody(LABEL *contlabel, LABEL *breaklabel,
|
||||||
LABEL *nextcaselabel, LABEL *defaultlabel);
|
LABEL *nextcaselabel, LABEL *defaultlabel);
|
||||||
static int getdeclarations(int symtype);
|
S_FUNC int getdeclarations(int symtype);
|
||||||
static int getsimpledeclaration (int symtype);
|
S_FUNC int getsimpledeclaration (int symtype);
|
||||||
static int getonevariable (int symtype);
|
S_FUNC int getonevariable (int symtype);
|
||||||
static void getstatement(LABEL *contlabel, LABEL *breaklabel,
|
S_FUNC void getstatement(LABEL *contlabel, LABEL *breaklabel,
|
||||||
LABEL *nextcaselabel, LABEL *defaultlabel);
|
LABEL *nextcaselabel, LABEL *defaultlabel);
|
||||||
static void getobjdeclaration(int symtype);
|
S_FUNC void getobjdeclaration(int symtype);
|
||||||
static void getoneobj(long index, int symtype);
|
S_FUNC void getoneobj(long index, int symtype);
|
||||||
static void getobjvars(char *name, int symtype);
|
S_FUNC void getobjvars(char *name, int symtype);
|
||||||
static void getmatdeclaration(int symtype);
|
S_FUNC void getmatdeclaration(int symtype);
|
||||||
static void getonematrix(int symtype);
|
S_FUNC void getonematrix(int symtype);
|
||||||
static void creatematrix(void);
|
S_FUNC void creatematrix(void);
|
||||||
static void getsimplebody(void);
|
S_FUNC void getsimplebody(void);
|
||||||
static void getcondition(void);
|
S_FUNC void getcondition(void);
|
||||||
static void getmatargs(void);
|
S_FUNC void getmatargs(void);
|
||||||
static void getelement(void);
|
S_FUNC void getelement(void);
|
||||||
static void usesymbol(char *name, int autodef);
|
S_FUNC void usesymbol(char *name, int autodef);
|
||||||
static void definesymbol(char *name, int symtype);
|
S_FUNC void definesymbol(char *name, int symtype);
|
||||||
static void getcallargs(char *name);
|
S_FUNC void getcallargs(char *name);
|
||||||
static void do_changedir(void);
|
S_FUNC void do_changedir(void);
|
||||||
static int getexprlist(void);
|
S_FUNC int getexprlist(void);
|
||||||
static int getopassignment(void);
|
S_FUNC int getopassignment(void);
|
||||||
static int getassignment(void);
|
S_FUNC int getassignment(void);
|
||||||
static int getaltcond(void);
|
S_FUNC int getaltcond(void);
|
||||||
static int getorcond(void);
|
S_FUNC int getorcond(void);
|
||||||
static int getandcond(void);
|
S_FUNC int getandcond(void);
|
||||||
static int getrelation(void);
|
S_FUNC int getrelation(void);
|
||||||
static int getsum(void);
|
S_FUNC int getsum(void);
|
||||||
static int getproduct(void);
|
S_FUNC int getproduct(void);
|
||||||
static int getorexpr(void);
|
S_FUNC int getorexpr(void);
|
||||||
static int getandexpr(void);
|
S_FUNC int getandexpr(void);
|
||||||
static int getshiftexpr(void);
|
S_FUNC int getshiftexpr(void);
|
||||||
static int getreference(void);
|
S_FUNC int getreference(void);
|
||||||
static int getincdecexpr(void);
|
S_FUNC int getincdecexpr(void);
|
||||||
static int getterm(void);
|
S_FUNC int getterm(void);
|
||||||
static int getidexpr(BOOL okmat, int autodef);
|
S_FUNC int getidexpr(BOOL okmat, int autodef);
|
||||||
static long getinitlist(void);
|
S_FUNC long getinitlist(void);
|
||||||
|
|
||||||
#define INDICALLOC 8
|
#define INDICALLOC 8
|
||||||
|
|
||||||
static int quickindices[INDICALLOC];
|
STATIC int quickindices[INDICALLOC];
|
||||||
static int * newindices;
|
STATIC int * newindices;
|
||||||
static int * indices;
|
STATIC int * indices;
|
||||||
static int maxindices;
|
STATIC int maxindices;
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -144,6 +145,7 @@ getcommands(BOOL toplevel)
|
|||||||
case T_HELP:
|
case T_HELP:
|
||||||
for (i=1;;i++) {
|
for (i=1;;i++) {
|
||||||
switch(getfilename(name, MAXCMD+1, NULL)) {
|
switch(getfilename(name, MAXCMD+1, NULL)) {
|
||||||
|
case 1:
|
||||||
case -1:
|
case -1:
|
||||||
if(i == 1) {
|
if(i == 1) {
|
||||||
strcpy(name, DEFAULTCALCHELP);
|
strcpy(name, DEFAULTCALCHELP);
|
||||||
@@ -226,7 +228,14 @@ getcommands(BOOL toplevel)
|
|||||||
run_state = RUN_EXIT;
|
run_state = RUN_EXIT;
|
||||||
else if (run_state < RUN_PRE_TOP_LEVEL)
|
else if (run_state < RUN_PRE_TOP_LEVEL)
|
||||||
run_state = RUN_PRE_TOP_LEVEL;
|
run_state = RUN_PRE_TOP_LEVEL;
|
||||||
longjmp(jmpbuf, 1);
|
if (calc_use_scanerr_jmpbuf != 0) {
|
||||||
|
longjmp(calc_scanerr_jmpbuf, 30);
|
||||||
|
} else {
|
||||||
|
fprintf(stderr,
|
||||||
|
"calc_scanerr_jmpbuf not setup, exiting code 30\n");
|
||||||
|
libcalc_call_me_last();
|
||||||
|
exit(30);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -288,7 +297,7 @@ evaluate(BOOL nestflag)
|
|||||||
/*
|
/*
|
||||||
* Undefine one or more functions
|
* Undefine one or more functions
|
||||||
*/
|
*/
|
||||||
static void
|
S_FUNC void
|
||||||
ungetfunction(void)
|
ungetfunction(void)
|
||||||
{
|
{
|
||||||
char *name;
|
char *name;
|
||||||
@@ -339,7 +348,7 @@ ungetfunction(void)
|
|||||||
* func = name '(' '' | name [ ',' name] ... ')' simplebody
|
* func = name '(' '' | name [ ',' name] ... ')' simplebody
|
||||||
* | name '(' '' | name [ ',' name] ... ')' body.
|
* | name '(' '' | name [ ',' name] ... ')' body.
|
||||||
*/
|
*/
|
||||||
static void
|
S_FUNC void
|
||||||
getfunction(void)
|
getfunction(void)
|
||||||
{
|
{
|
||||||
char *name; /* parameter name */
|
char *name; /* parameter name */
|
||||||
@@ -428,7 +437,7 @@ getfunction(void)
|
|||||||
* Get a simple assignment style body for a function declaration.
|
* Get a simple assignment style body for a function declaration.
|
||||||
* simplebody = '=' assignment '\n'.
|
* simplebody = '=' assignment '\n'.
|
||||||
*/
|
*/
|
||||||
static void
|
S_FUNC void
|
||||||
getsimplebody(void)
|
getsimplebody(void)
|
||||||
{
|
{
|
||||||
(void) tokenmode(TM_NEWLINES);
|
(void) tokenmode(TM_NEWLINES);
|
||||||
@@ -443,7 +452,7 @@ getsimplebody(void)
|
|||||||
* | [ declarations ] ... [statement ] ... '\n'
|
* | [ declarations ] ... [statement ] ... '\n'
|
||||||
*/
|
*/
|
||||||
/*ARGSUSED*/
|
/*ARGSUSED*/
|
||||||
static void
|
S_FUNC void
|
||||||
getbody(LABEL *contlabel, LABEL *breaklabel, LABEL *nextcaselabel, LABEL *defaultlabel)
|
getbody(LABEL *contlabel, LABEL *breaklabel, LABEL *nextcaselabel, LABEL *defaultlabel)
|
||||||
{
|
{
|
||||||
int oldmode;
|
int oldmode;
|
||||||
@@ -473,7 +482,7 @@ getbody(LABEL *contlabel, LABEL *breaklabel, LABEL *nextcaselabel, LABEL *defaul
|
|||||||
* declarations = { LOCAL | GLOBAL | STATIC } onedeclaration
|
* declarations = { LOCAL | GLOBAL | STATIC } onedeclaration
|
||||||
* [ ',' onedeclaration ] ... ';'.
|
* [ ',' onedeclaration ] ... ';'.
|
||||||
*/
|
*/
|
||||||
static int
|
S_FUNC int
|
||||||
getdeclarations(int symtype)
|
getdeclarations(int symtype)
|
||||||
{
|
{
|
||||||
int res = 0;
|
int res = 0;
|
||||||
@@ -525,7 +534,7 @@ getdeclarations(int symtype)
|
|||||||
* Subsequences end with "," or at end of line; spaces indicate
|
* Subsequences end with "," or at end of line; spaces indicate
|
||||||
* repeated assignment, e.g. "c d = 2" has the effect of "c = 2, d = 2".
|
* repeated assignment, e.g. "c d = 2" has the effect of "c = 2, d = 2".
|
||||||
*/
|
*/
|
||||||
static int
|
S_FUNC int
|
||||||
getsimpledeclaration(int symtype)
|
getsimpledeclaration(int symtype)
|
||||||
{
|
{
|
||||||
int res = 0;
|
int res = 0;
|
||||||
@@ -553,9 +562,9 @@ getsimpledeclaration(int symtype)
|
|||||||
* Get one variable in a sequence of simple identifiers.
|
* Get one variable in a sequence of simple identifiers.
|
||||||
* Returns 1 if the subsequence in which the variable occurs ends with
|
* Returns 1 if the subsequence in which the variable occurs ends with
|
||||||
* an assignment, e.g. for the variables b, c, d, in
|
* an assignment, e.g. for the variables b, c, d, in
|
||||||
* static a, b = 1, c d = 2, d;
|
* S_FUNC a, b = 1, c d = 2, d;
|
||||||
*/
|
*/
|
||||||
static int
|
S_FUNC int
|
||||||
getonevariable(int symtype)
|
getonevariable(int symtype)
|
||||||
{
|
{
|
||||||
char *name;
|
char *name;
|
||||||
@@ -607,7 +616,7 @@ getonevariable(int symtype)
|
|||||||
* nextcaselabel label for next case statement
|
* nextcaselabel label for next case statement
|
||||||
* defaultlabel label for default case
|
* defaultlabel label for default case
|
||||||
*/
|
*/
|
||||||
static void
|
S_FUNC void
|
||||||
getstatement(LABEL *contlabel, LABEL *breaklabel, LABEL *nextcaselabel, LABEL *defaultlabel)
|
getstatement(LABEL *contlabel, LABEL *breaklabel, LABEL *nextcaselabel, LABEL *defaultlabel)
|
||||||
{
|
{
|
||||||
LABEL label;
|
LABEL label;
|
||||||
@@ -1058,7 +1067,7 @@ getstatement(LABEL *contlabel, LABEL *breaklabel, LABEL *nextcaselabel, LABEL *d
|
|||||||
* is an OBJ statement, otherwise this is part of a declaration which will
|
* is an OBJ statement, otherwise this is part of a declaration which will
|
||||||
* define new symbols with the specified type.
|
* define new symbols with the specified type.
|
||||||
*/
|
*/
|
||||||
static void
|
S_FUNC void
|
||||||
getobjdeclaration(int symtype)
|
getobjdeclaration(int symtype)
|
||||||
{
|
{
|
||||||
char *name; /* name of object type */
|
char *name; /* name of object type */
|
||||||
@@ -1164,7 +1173,7 @@ getobjdeclaration(int symtype)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static void
|
S_FUNC void
|
||||||
getoneobj(long index, int symtype)
|
getoneobj(long index, int symtype)
|
||||||
{
|
{
|
||||||
char *symname;
|
char *symname;
|
||||||
@@ -1191,7 +1200,7 @@ getoneobj(long index, int symtype)
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
* Routine to assign a specified object-type value to each of a set of
|
* Routine to assign a specified object-type value to each of a set of
|
||||||
* variables in a "global", "local" or "static" declaration, or, if
|
* variables in a "global", "local" or "S_FUNC" declaration, or, if
|
||||||
* symtype is SYM_UNDEFINED, to create one object value of the specified
|
* symtype is SYM_UNDEFINED, to create one object value of the specified
|
||||||
* type.
|
* type.
|
||||||
*
|
*
|
||||||
@@ -1199,7 +1208,7 @@ getoneobj(long index, int symtype)
|
|||||||
* name object name
|
* name object name
|
||||||
* symtype declaration type
|
* symtype declaration type
|
||||||
*/
|
*/
|
||||||
static void
|
S_FUNC void
|
||||||
getobjvars(char *name, int symtype)
|
getobjvars(char *name, int symtype)
|
||||||
{
|
{
|
||||||
long index; /* index for object */
|
long index; /* index for object */
|
||||||
@@ -1223,7 +1232,7 @@ getobjvars(char *name, int symtype)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static void
|
S_FUNC void
|
||||||
getmatdeclaration(int symtype)
|
getmatdeclaration(int symtype)
|
||||||
{
|
{
|
||||||
for (;;) {
|
for (;;) {
|
||||||
@@ -1243,7 +1252,7 @@ getmatdeclaration(int symtype)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static void
|
S_FUNC void
|
||||||
getonematrix(int symtype)
|
getonematrix(int symtype)
|
||||||
{
|
{
|
||||||
long dim;
|
long dim;
|
||||||
@@ -1339,7 +1348,7 @@ getonematrix(int symtype)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static void
|
S_FUNC void
|
||||||
creatematrix(void)
|
creatematrix(void)
|
||||||
{
|
{
|
||||||
long dim;
|
long dim;
|
||||||
@@ -1361,7 +1370,7 @@ creatematrix(void)
|
|||||||
rescantoken();
|
rescantoken();
|
||||||
if (++dim > MAXDIM) {
|
if (++dim > MAXDIM) {
|
||||||
scanerror(T_SEMICOLON,
|
scanerror(T_SEMICOLON,
|
||||||
"Only %ld dimensions allowed", MAXDIM);
|
"Only %d dimensions allowed", MAXDIM);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
(void) getopassignment();
|
(void) getopassignment();
|
||||||
@@ -1397,7 +1406,7 @@ creatematrix(void)
|
|||||||
* Returns the number of elements that are in the list, or -1 on parse error.
|
* Returns the number of elements that are in the list, or -1 on parse error.
|
||||||
* initlist = { assignment [ , assignment ] ... }.
|
* initlist = { assignment [ , assignment ] ... }.
|
||||||
*/
|
*/
|
||||||
static long
|
S_FUNC long
|
||||||
getinitlist(void)
|
getinitlist(void)
|
||||||
{
|
{
|
||||||
long index;
|
long index;
|
||||||
@@ -1453,7 +1462,7 @@ getinitlist(void)
|
|||||||
* Get a condition.
|
* Get a condition.
|
||||||
* condition = '(' assignment ')'.
|
* condition = '(' assignment ')'.
|
||||||
*/
|
*/
|
||||||
static void
|
S_FUNC void
|
||||||
getcondition(void)
|
getcondition(void)
|
||||||
{
|
{
|
||||||
if (gettoken() != T_LEFTPAREN) {
|
if (gettoken() != T_LEFTPAREN) {
|
||||||
@@ -1477,7 +1486,7 @@ getcondition(void)
|
|||||||
* Returns flags describing the type of the last assignment or expression found.
|
* Returns flags describing the type of the last assignment or expression found.
|
||||||
* exprlist = assignment [ ',' assignment ] ...
|
* exprlist = assignment [ ',' assignment ] ...
|
||||||
*/
|
*/
|
||||||
static int
|
S_FUNC int
|
||||||
getexprlist(void)
|
getexprlist(void)
|
||||||
{
|
{
|
||||||
int type;
|
int type;
|
||||||
@@ -1510,7 +1519,7 @@ getexprlist(void)
|
|||||||
* | lvalue '**=' assignment
|
* | lvalue '**=' assignment
|
||||||
* | orcond.
|
* | orcond.
|
||||||
*/
|
*/
|
||||||
static int
|
S_FUNC int
|
||||||
getopassignment(void)
|
getopassignment(void)
|
||||||
{
|
{
|
||||||
int type; /* type of expression */
|
int type; /* type of expression */
|
||||||
@@ -1586,7 +1595,7 @@ getopassignment(void)
|
|||||||
* Get an assignment (lvalue = ...) or possibly just an expression
|
* Get an assignment (lvalue = ...) or possibly just an expression
|
||||||
*/
|
*/
|
||||||
|
|
||||||
static int
|
S_FUNC int
|
||||||
getassignment (void)
|
getassignment (void)
|
||||||
{
|
{
|
||||||
int type; /* type of expression */
|
int type; /* type of expression */
|
||||||
@@ -1656,7 +1665,7 @@ getassignment (void)
|
|||||||
* Flags are returned indicating the type of expression found.
|
* Flags are returned indicating the type of expression found.
|
||||||
* altcond = orcond [ '?' orcond ':' altcond ].
|
* altcond = orcond [ '?' orcond ':' altcond ].
|
||||||
*/
|
*/
|
||||||
static int
|
S_FUNC int
|
||||||
getaltcond(void)
|
getaltcond(void)
|
||||||
{
|
{
|
||||||
int type; /* type of expression */
|
int type; /* type of expression */
|
||||||
@@ -1690,7 +1699,7 @@ getaltcond(void)
|
|||||||
* Flags are returned indicating the type of expression found.
|
* Flags are returned indicating the type of expression found.
|
||||||
* orcond = andcond [ '||' andcond ] ...
|
* orcond = andcond [ '||' andcond ] ...
|
||||||
*/
|
*/
|
||||||
static int
|
S_FUNC int
|
||||||
getorcond(void)
|
getorcond(void)
|
||||||
{
|
{
|
||||||
int type; /* type of expression */
|
int type; /* type of expression */
|
||||||
@@ -1714,7 +1723,7 @@ getorcond(void)
|
|||||||
* Flags are returned indicating the type of expression found.
|
* Flags are returned indicating the type of expression found.
|
||||||
* andcond = relation [ '&&' relation ] ...
|
* andcond = relation [ '&&' relation ] ...
|
||||||
*/
|
*/
|
||||||
static int
|
S_FUNC int
|
||||||
getandcond(void)
|
getandcond(void)
|
||||||
{
|
{
|
||||||
int type; /* type of expression */
|
int type; /* type of expression */
|
||||||
@@ -1744,7 +1753,7 @@ getandcond(void)
|
|||||||
* | sum '>' sum
|
* | sum '>' sum
|
||||||
* | sum.
|
* | sum.
|
||||||
*/
|
*/
|
||||||
static int
|
S_FUNC int
|
||||||
getrelation(void)
|
getrelation(void)
|
||||||
{
|
{
|
||||||
int type; /* type of expression */
|
int type; /* type of expression */
|
||||||
@@ -1775,7 +1784,7 @@ getrelation(void)
|
|||||||
* Flags indicating the type of expression found are returned.
|
* Flags indicating the type of expression found are returned.
|
||||||
* sum = product [ {'+' | '-'} product ] ...
|
* sum = product [ {'+' | '-'} product ] ...
|
||||||
*/
|
*/
|
||||||
static int
|
S_FUNC int
|
||||||
getsum(void)
|
getsum(void)
|
||||||
{
|
{
|
||||||
int type; /* type of expression found */
|
int type; /* type of expression found */
|
||||||
@@ -1818,7 +1827,7 @@ getsum(void)
|
|||||||
* Flags indicating the type of expression found are returned.
|
* Flags indicating the type of expression found are returned.
|
||||||
* product = orexpr [ {'*' | '/' | '//' | '%'} orexpr ] ...
|
* product = orexpr [ {'*' | '/' | '//' | '%'} orexpr ] ...
|
||||||
*/
|
*/
|
||||||
static int
|
S_FUNC int
|
||||||
getproduct(void)
|
getproduct(void)
|
||||||
{
|
{
|
||||||
int type; /* type of value found */
|
int type; /* type of value found */
|
||||||
@@ -1849,7 +1858,7 @@ getproduct(void)
|
|||||||
* Flags indicating the type of expression found are returned.
|
* Flags indicating the type of expression found are returned.
|
||||||
* orexpr = andexpr [ '|' andexpr ] ...
|
* orexpr = andexpr [ '|' andexpr ] ...
|
||||||
*/
|
*/
|
||||||
static int
|
S_FUNC int
|
||||||
getorexpr(void)
|
getorexpr(void)
|
||||||
{
|
{
|
||||||
int type; /* type of value found */
|
int type; /* type of value found */
|
||||||
@@ -1872,7 +1881,7 @@ getorexpr(void)
|
|||||||
* Flags indicating the type of expression found are returned.
|
* Flags indicating the type of expression found are returned.
|
||||||
* andexpr = shiftexpr [ '&' shiftexpr ] ...
|
* andexpr = shiftexpr [ '&' shiftexpr ] ...
|
||||||
*/
|
*/
|
||||||
static int
|
S_FUNC int
|
||||||
getandexpr(void)
|
getandexpr(void)
|
||||||
{
|
{
|
||||||
int type; /* type of value found */
|
int type; /* type of value found */
|
||||||
@@ -1911,7 +1920,7 @@ getandexpr(void)
|
|||||||
* | reference '>>' shiftexpr
|
* | reference '>>' shiftexpr
|
||||||
* | reference.
|
* | reference.
|
||||||
*/
|
*/
|
||||||
static int
|
S_FUNC int
|
||||||
getshiftexpr(void)
|
getshiftexpr(void)
|
||||||
{
|
{
|
||||||
int type; /* type of value found */
|
int type; /* type of value found */
|
||||||
@@ -1955,7 +1964,7 @@ getshiftexpr(void)
|
|||||||
* address = '&' term
|
* address = '&' term
|
||||||
* dereference = '*' term
|
* dereference = '*' term
|
||||||
*/
|
*/
|
||||||
static int
|
S_FUNC int
|
||||||
getreference(void)
|
getreference(void)
|
||||||
{
|
{
|
||||||
int type;
|
int type;
|
||||||
@@ -1992,7 +2001,7 @@ getreference(void)
|
|||||||
* get an increment or decrement expression
|
* get an increment or decrement expression
|
||||||
* ++expr, --expr, expr++, expr--
|
* ++expr, --expr, expr++, expr--
|
||||||
*/
|
*/
|
||||||
static int
|
S_FUNC int
|
||||||
getincdecexpr(void)
|
getincdecexpr(void)
|
||||||
{
|
{
|
||||||
int type;
|
int type;
|
||||||
@@ -2050,7 +2059,7 @@ getincdecexpr(void)
|
|||||||
* | function [ '(' [assignment [',' assignment] ] ')' ]
|
* | function [ '(' [assignment [',' assignment] ] ')' ]
|
||||||
* | '!' term
|
* | '!' term
|
||||||
*/
|
*/
|
||||||
static int
|
S_FUNC int
|
||||||
getterm(void)
|
getterm(void)
|
||||||
{
|
{
|
||||||
int type; /* type of term found */
|
int type; /* type of term found */
|
||||||
@@ -2210,7 +2219,7 @@ getterm(void)
|
|||||||
* element references. The symbol can be a global or a local variable name.
|
* element references. The symbol can be a global or a local variable name.
|
||||||
* Returns the type of expression found.
|
* Returns the type of expression found.
|
||||||
*/
|
*/
|
||||||
static int
|
S_FUNC int
|
||||||
getidexpr(BOOL okmat, int autodef)
|
getidexpr(BOOL okmat, int autodef)
|
||||||
{
|
{
|
||||||
int type;
|
int type;
|
||||||
@@ -2285,7 +2294,7 @@ getidexpr(BOOL okmat, int autodef)
|
|||||||
* to get the value of a symbol. It should NOT be used in the
|
* to get the value of a symbol. It should NOT be used in the
|
||||||
* general op code generation / calc code parsing case.
|
* general op code generation / calc code parsing case.
|
||||||
*/
|
*/
|
||||||
static int
|
S_FUNC int
|
||||||
getsymvalue(char *name, VALUE *v_p)
|
getsymvalue(char *name, VALUE *v_p)
|
||||||
{
|
{
|
||||||
GLOBAL *g_ret; /* global return from findglobal() */
|
GLOBAL *g_ret; /* global return from findglobal() */
|
||||||
@@ -2318,7 +2327,7 @@ getsymvalue(char *name, VALUE *v_p)
|
|||||||
* namelen length of filename buffer including NUL byte
|
* namelen length of filename buffer including NUL byte
|
||||||
* once non-NULL => set to TRUE of -once read
|
* once non-NULL => set to TRUE of -once read
|
||||||
*/
|
*/
|
||||||
static int
|
S_FUNC int
|
||||||
getfilename(char *name, size_t namelen, BOOL *once)
|
getfilename(char *name, size_t namelen, BOOL *once)
|
||||||
{
|
{
|
||||||
STRING *s;
|
STRING *s;
|
||||||
@@ -2400,7 +2409,7 @@ getfilename(char *name, size_t namelen, BOOL *once)
|
|||||||
/*
|
/*
|
||||||
* Read the show command to display useful information
|
* Read the show command to display useful information
|
||||||
*/
|
*/
|
||||||
static void
|
S_FUNC void
|
||||||
getshowstatement(void)
|
getshowstatement(void)
|
||||||
{
|
{
|
||||||
char name[5];
|
char name[5];
|
||||||
@@ -2471,7 +2480,7 @@ getshowstatement(void)
|
|||||||
* Read in a set of matrix index arguments, surrounded with square brackets.
|
* Read in a set of matrix index arguments, surrounded with square brackets.
|
||||||
* This also handles double square brackets for 'fast indexing'.
|
* This also handles double square brackets for 'fast indexing'.
|
||||||
*/
|
*/
|
||||||
static void
|
S_FUNC void
|
||||||
getmatargs(void)
|
getmatargs(void)
|
||||||
{
|
{
|
||||||
int dim;
|
int dim;
|
||||||
@@ -2533,7 +2542,7 @@ getmatargs(void)
|
|||||||
* Get an element of an object reference.
|
* Get an element of an object reference.
|
||||||
* The leading period which introduces the element has already been read.
|
* The leading period which introduces the element has already been read.
|
||||||
*/
|
*/
|
||||||
static void
|
S_FUNC void
|
||||||
getelement(void)
|
getelement(void)
|
||||||
{
|
{
|
||||||
long index;
|
long index;
|
||||||
@@ -2554,7 +2563,7 @@ getelement(void)
|
|||||||
* Read in a single symbol name and copy its value into the given buffer.
|
* Read in a single symbol name and copy its value into the given buffer.
|
||||||
* Returns TRUE if a valid symbol id was found.
|
* Returns TRUE if a valid symbol id was found.
|
||||||
*/
|
*/
|
||||||
static BOOL
|
S_FUNC BOOL
|
||||||
getid(char *buf)
|
getid(char *buf)
|
||||||
{
|
{
|
||||||
int type;
|
int type;
|
||||||
@@ -2586,7 +2595,7 @@ getid(char *buf)
|
|||||||
* redeclared and when in the same body the variable will be accessible only
|
* redeclared and when in the same body the variable will be accessible only
|
||||||
^ with the appropriate specfier.
|
^ with the appropriate specfier.
|
||||||
*/
|
*/
|
||||||
static void
|
S_FUNC void
|
||||||
definesymbol(char *name, int symtype)
|
definesymbol(char *name, int symtype)
|
||||||
{
|
{
|
||||||
switch (symboltype(name)) {
|
switch (symboltype(name)) {
|
||||||
@@ -2649,7 +2658,7 @@ definesymbol(char *name, int symtype)
|
|||||||
* autodef 1 => define if symbol is not known
|
* autodef 1 => define if symbol is not known
|
||||||
* T_GLOBAL => get global, define if necessary
|
* T_GLOBAL => get global, define if necessary
|
||||||
*/
|
*/
|
||||||
static void
|
S_FUNC void
|
||||||
usesymbol(char *name, int autodef)
|
usesymbol(char *name, int autodef)
|
||||||
{
|
{
|
||||||
int type;
|
int type;
|
||||||
@@ -2706,7 +2715,7 @@ usesymbol(char *name, int autodef)
|
|||||||
* given:
|
* given:
|
||||||
* name name of function
|
* name name of function
|
||||||
*/
|
*/
|
||||||
static void
|
S_FUNC void
|
||||||
getcallargs(char *name)
|
getcallargs(char *name)
|
||||||
{
|
{
|
||||||
long index; /* function index */
|
long index; /* function index */
|
||||||
@@ -2775,7 +2784,7 @@ getcallargs(char *name)
|
|||||||
/*
|
/*
|
||||||
* Change the current directory. If no directory is given, assume home.
|
* Change the current directory. If no directory is given, assume home.
|
||||||
*/
|
*/
|
||||||
static void
|
S_FUNC void
|
||||||
do_changedir(void)
|
do_changedir(void)
|
||||||
{
|
{
|
||||||
char *p;
|
char *p;
|
||||||
|
22
comfunc.c
22
comfunc.c
@@ -1,7 +1,7 @@
|
|||||||
/*
|
/*
|
||||||
* comfunc - extended precision complex arithmetic non-primitive routines
|
* comfunc - extended precision complex arithmetic non-primitive routines
|
||||||
*
|
*
|
||||||
* Copyright (C) 1999 David I. Bell and Ernest Bowen
|
* Copyright (C) 1999-2007 David I. Bell and Ernest Bowen
|
||||||
*
|
*
|
||||||
* Primary author: David I. Bell
|
* Primary author: David I. Bell
|
||||||
*
|
*
|
||||||
@@ -17,10 +17,10 @@
|
|||||||
* A copy of version 2.1 of the GNU Lesser General Public License is
|
* 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
|
* distributed with calc under the filename COPYING-LGPL. You should have
|
||||||
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||||
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
*
|
*
|
||||||
* @(#) $Revision: 29.6 $
|
* @(#) $Revision: 30.3 $
|
||||||
* @(#) $Id: comfunc.c,v 29.6 2006/05/20 08:43:55 chongo Exp $
|
* @(#) $Id: comfunc.c,v 30.3 2008/10/24 07:09:41 chongo Exp $
|
||||||
* @(#) $Source: /usr/local/src/cmd/calc/RCS/comfunc.c,v $
|
* @(#) $Source: /usr/local/src/cmd/calc/RCS/comfunc.c,v $
|
||||||
*
|
*
|
||||||
* Under source code control: 1990/02/15 01:48:13
|
* Under source code control: 1990/02/15 01:48:13
|
||||||
@@ -36,10 +36,10 @@
|
|||||||
/*
|
/*
|
||||||
* cache the natural logarithm of 10
|
* cache the natural logarithm of 10
|
||||||
*/
|
*/
|
||||||
static COMPLEX *cln_10 = NULL;
|
STATIC COMPLEX *cln_10 = NULL;
|
||||||
static NUMBER *cln_10_epsilon = NULL;
|
STATIC NUMBER *cln_10_epsilon = NULL;
|
||||||
static NUMBER _q10_ = { { _tenval_, 1, 0 }, { _oneval_, 1, 0 }, 1, NULL };
|
STATIC NUMBER _q10_ = { { _tenval_, 1, 0 }, { _oneval_, 1, 0 }, 1, NULL };
|
||||||
static NUMBER _q0_ = { { _zeroval_, 1, 0 }, { _oneval_, 1, 0 }, 1, NULL };
|
STATIC NUMBER _q0_ = { { _zeroval_, 1, 0 }, { _oneval_, 1, 0 }, 1, NULL };
|
||||||
COMPLEX _cten_ = { &_q10_, &_q0_, 1 };
|
COMPLEX _cten_ = { &_q10_, &_q0_, 1 };
|
||||||
|
|
||||||
|
|
||||||
@@ -556,7 +556,7 @@ c_log(COMPLEX *c, NUMBER *epsilon)
|
|||||||
if (cln_10_epsilon == NULL) {
|
if (cln_10_epsilon == NULL) {
|
||||||
/* first time call */
|
/* first time call */
|
||||||
cln_10_epsilon = qcopy(epsilon);
|
cln_10_epsilon = qcopy(epsilon);
|
||||||
} else if (qcmp(cln_10_epsilon, epsilon) == FALSE) {
|
} else if (qcmp(cln_10_epsilon, epsilon) == TRUE) {
|
||||||
/* replaced cacheed value with epsilon arg */
|
/* replaced cacheed value with epsilon arg */
|
||||||
qfree(cln_10_epsilon);
|
qfree(cln_10_epsilon);
|
||||||
cln_10_epsilon = qcopy(epsilon);
|
cln_10_epsilon = qcopy(epsilon);
|
||||||
@@ -1117,8 +1117,8 @@ c_power(COMPLEX *c1, COMPLEX *c2, NUMBER *epsilon)
|
|||||||
/*NOTREACHED*/
|
/*NOTREACHED*/
|
||||||
}
|
}
|
||||||
if (ciszero(c1)) {
|
if (ciszero(c1)) {
|
||||||
if (qisneg(c2->real) || qiszero(c2->real)) {
|
if (cisreal(c2) && qisneg(c2->real)) {
|
||||||
math_error ("Non-positive exponent of zero");
|
math_error ("Non-positive real exponent of zero");
|
||||||
/*NOTREACHED*/
|
/*NOTREACHED*/
|
||||||
}
|
}
|
||||||
return clink(&_czero_);
|
return clink(&_czero_);
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user