mirror of
https://github.com/lcn2/calc.git
synced 2025-08-19 01:13:27 +03:00
Compare commits
11 Commits
2.11.5t1.1
...
2.11.5.6
Author | SHA1 | Date | |
---|---|---|---|
|
a57ee19ca5 | ||
|
a6e226fa80 | ||
|
86e0f98c8f | ||
|
e4dcbf7ecf | ||
|
10c0bd2d95 | ||
|
ad44f1e3ab | ||
|
fd436d7c15 | ||
|
d2cb9c81d5 | ||
|
a0aba073a6 | ||
|
59837e385c | ||
|
bea726fc16 |
76
BUGS
76
BUGS
@@ -29,13 +29,20 @@ The calc web site is located at:
|
|||||||
=-=
|
=-=
|
||||||
|
|
||||||
If you have tried all of the above and things still are not right,
|
If you have tried all of the above and things still are not right,
|
||||||
then it may be time to send in a bug report. You can send bug reports to:
|
then it may be time to send in a bug report. You can send bug
|
||||||
|
and bug fixes reports to:
|
||||||
|
|
||||||
calc-bugs at asthe dot com
|
calc-bugs at asthe dot com
|
||||||
|
|
||||||
[[ NOTE: Replace 'at' with @, 'dot' is with . and remove the spaces ]]
|
[[ NOTE: Replace 'at' with @, 'dot' is with . and remove the spaces ]]
|
||||||
[[ NOTE: The EMail address uses 'asthe', the web site URL uses 'isthe' ]]
|
[[ NOTE: The EMail address uses 'asthe', the web site URL uses 'isthe' ]]
|
||||||
|
|
||||||
|
Your subject must contain the words:
|
||||||
|
|
||||||
|
calc bug report
|
||||||
|
|
||||||
|
You may have additional words in your subject line.
|
||||||
|
|
||||||
When you send your report, please include the following information:
|
When you send your report, please include the following information:
|
||||||
|
|
||||||
* a description of the problem
|
* a description of the problem
|
||||||
@@ -54,18 +61,8 @@ When you send your report, please include the following information:
|
|||||||
|
|
||||||
Stack traces from core dumps are useful to send as well.
|
Stack traces from core dumps are useful to send as well.
|
||||||
|
|
||||||
=-=
|
Fell free to use the above address to send in big fixes (in the form
|
||||||
|
of a context diff patch).
|
||||||
Send any comments, compiler warning messages, suggestions and most
|
|
||||||
importantly, fixes (in the form of a context diff patch) to:
|
|
||||||
|
|
||||||
calc-bugs at asthe dot com
|
|
||||||
|
|
||||||
[[ NOTE: Replace 'at' with @, 'dot' is with . and remove the spaces ]]
|
|
||||||
[[ NOTE: The EMail address uses 'asthe', the web site URL uses 'isthe' ]]
|
|
||||||
|
|
||||||
You should use the above calc-bugs address for bug reports, if you are
|
|
||||||
not currently a member of the calc-tester mailing list.
|
|
||||||
|
|
||||||
=-=
|
=-=
|
||||||
|
|
||||||
@@ -75,10 +72,55 @@ Known bugs:
|
|||||||
us know! See the above for details on how to report and were to
|
us know! See the above for details on how to report and were to
|
||||||
EMail your bug reports and hopefully patches to fix them.
|
EMail your bug reports and hopefully patches to fix them.
|
||||||
|
|
||||||
=-=
|
|
||||||
|
|
||||||
Problems with known work-a-rounds:
|
Problems with known work-a-rounds:
|
||||||
|
|
||||||
|
* The gcc as shipped with Redhat 7 perhaps other Linux distributions
|
||||||
|
has a bug causes calc to dump core on startup when calc is:
|
||||||
|
|
||||||
|
compiled optimized (-O, -O1, -O2 or -O3)
|
||||||
|
|
||||||
|
AND
|
||||||
|
|
||||||
|
compiled with debugging (-g or -g3)
|
||||||
|
|
||||||
|
AND
|
||||||
|
|
||||||
|
when calc is compiled with readline (see USE_READLINE,
|
||||||
|
READLINE_LIB and READLINE_INCLUDE in the Makefile)
|
||||||
|
|
||||||
|
On Redhat, the gcc -v which has this problem is:
|
||||||
|
|
||||||
|
gcc version 2.96 20000731 (Red Hat Linux 7.1 2.96-85)
|
||||||
|
|
||||||
|
there may be other gcc versions that also suffer this fate.
|
||||||
|
|
||||||
|
The readlines associated with problem are:
|
||||||
|
|
||||||
|
readline-4.1-5
|
||||||
|
readline2.2.1-2.2.1-2
|
||||||
|
readline-devel-4.1-5
|
||||||
|
|
||||||
|
One work-a-round is to compile calc WITHOUT readline. In the
|
||||||
|
Makefile be sure that:
|
||||||
|
|
||||||
|
USE_READLINE=
|
||||||
|
READLINE_LIB=
|
||||||
|
READLINE_INCLUDE=
|
||||||
|
|
||||||
|
i.e., these Makefile vars are empty.
|
||||||
|
|
||||||
|
If you must use readline, then an alternate work-a-round is to
|
||||||
|
change the DEBUG Makefile variable to either:
|
||||||
|
|
||||||
|
compile for speed: -O3 (or -O2 if you do not have -O3)
|
||||||
|
compile to debug: -g3 (or -g if you do not have -g3)
|
||||||
|
|
||||||
|
but not both.
|
||||||
|
|
||||||
|
See RH bug #57889 for details:
|
||||||
|
|
||||||
|
http://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=57889
|
||||||
|
|
||||||
* There is a bug in gcc-2.95 that causes calc, when compiled with -O2,
|
* 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
|
to fail the regression test. The work-a-round is to compile with -O
|
||||||
or to use gcc-2.96 or later.
|
or to use gcc-2.96 or later.
|
||||||
@@ -246,8 +288,8 @@ Problems with known work-a-rounds:
|
|||||||
## 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.
|
## 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||||
##
|
##
|
||||||
## @(#) $Revision: 29.10 $
|
## @(#) $Revision: 29.17 $
|
||||||
## @(#) $Id: BUGS,v 29.10 2001/04/08 11:32:52 chongo Exp $
|
## @(#) $Id: BUGS,v 29.17 2001/12/31 22:12:35 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
|
||||||
|
227
CHANGES
227
CHANGES
@@ -1,4 +1,219 @@
|
|||||||
The following are the changes from calc version 2.11.5t0 to date:
|
The following are the changes from calc version 2.11.5.5 to date:
|
||||||
|
|
||||||
|
Now using version numbers of one of these forms:
|
||||||
|
|
||||||
|
x.y.z.w
|
||||||
|
x.y.z
|
||||||
|
x.y
|
||||||
|
|
||||||
|
Changed the READLINE_LIB Makefile variable to not link with -lreadline
|
||||||
|
by default. If you do have readline, we recommend that you use it.
|
||||||
|
If you can install the GNU readline:
|
||||||
|
|
||||||
|
http://freshmeat.net/projects/gnureadline/
|
||||||
|
http://cnswww.cns.cwru.edu/php/chet/readline/rltop.html
|
||||||
|
|
||||||
|
we recommend it. But if not, you should set the USE_READLINE,
|
||||||
|
READLINE_LIB, and READLINE_INCLUDE Makefile variables to empty.
|
||||||
|
NOTE: See the BUGS file for a Linux issue when compiling calc
|
||||||
|
with -O (or -O2 or -O3) AND with -g (or -g3) AND with readline.
|
||||||
|
|
||||||
|
|
||||||
|
The following are the changes from calc version 2.11.5t4.1 to 2.11.5t4.4:
|
||||||
|
|
||||||
|
Updated dependency rules in Makefiles.
|
||||||
|
|
||||||
|
NOTE: -DSRC, as used in 2.11.5t4.1 was renamed -DCALC_SRC
|
||||||
|
in a later version.
|
||||||
|
|
||||||
|
Calc include files use #include "foo.h" to include other calc
|
||||||
|
header files if -DCALC_SRC. Otherwise they use <calc/foo.h>.
|
||||||
|
The -DCALC_SRC symbol is defined by default in calc's Makefile
|
||||||
|
and so it uses the header files from within the calc src tree.
|
||||||
|
If an external non-calc program includes an installed calc
|
||||||
|
header file (from under /usr/include), and it does NOT define
|
||||||
|
CALC_SRC, then it will obtain the calc header files from the
|
||||||
|
correct system location (such as /usr/include/calc/foo.h).
|
||||||
|
|
||||||
|
Added calc builtin function: version() which returns the calc
|
||||||
|
version string.
|
||||||
|
|
||||||
|
Added subject requirements for the calc-tester-request and
|
||||||
|
calc-bugs-mail EMail aliases. See:
|
||||||
|
|
||||||
|
http://www.isthe.com/chongo/tech/comp/calc/email.html
|
||||||
|
|
||||||
|
for details.
|
||||||
|
|
||||||
|
Corrected a bug that incorrectly set the default calc path
|
||||||
|
back in version 2.11.5t4. The default CALCPATH is now:
|
||||||
|
|
||||||
|
.:./cal:~/.cal:/usr/share/calc:/usr/share/calc/custom
|
||||||
|
|
||||||
|
and the default CALCRC is now:
|
||||||
|
|
||||||
|
/usr/share/calc/startup:~/.calcrc:./.calcinit
|
||||||
|
|
||||||
|
This fixes the missing bindings error and it places the calc
|
||||||
|
resource files into the default path.
|
||||||
|
|
||||||
|
If you are using the GNU readline then the Makefile recommends that
|
||||||
|
you link with the ncurses library.
|
||||||
|
|
||||||
|
Applied Makefile, cscript/Makefile and custom/Makefile patches to
|
||||||
|
fix install mode problems, to deal with sorting and dates in I18n
|
||||||
|
environments (such as Japanese), to fix some problems with calc.spec
|
||||||
|
and to fix the cscript #! header lines. Thanks goes to KAWAMURA Masao
|
||||||
|
(kawamura at mlb.co.jp) for the bug report and patch!
|
||||||
|
|
||||||
|
Fixed headers on fproduct.calc powerterm.calc 4dsphere.calc so
|
||||||
|
that they are correcly changed on installation.
|
||||||
|
|
||||||
|
Added ${GREP} Makefile variable.
|
||||||
|
|
||||||
|
The top level Makefile now sets LANG=C and passes it down to
|
||||||
|
lower level Makefiles.
|
||||||
|
|
||||||
|
Updated URLs in cal/lucas.cal comments.
|
||||||
|
|
||||||
|
Now shipping calc.spec, inst_files, spec-template and Makefile.linux
|
||||||
|
with the standard calc source distribution. Note that the standard
|
||||||
|
Makefile has not changed. The Makefile.linux only in minor ways
|
||||||
|
needed to build calc rpms.
|
||||||
|
|
||||||
|
Added $T Makefile variable. $T is the top level directory under
|
||||||
|
which calc will be installed. The calc install is performed under $T,
|
||||||
|
the calc build is performed under /. The purpose for $T is to allow
|
||||||
|
someone to install calc somewhere other than into the system area.
|
||||||
|
For examplewhen forming the calc rpm, the Makefile is called with
|
||||||
|
T=$RPM_BUILD_ROOT. If $T is empty, calc is installed under /.
|
||||||
|
|
||||||
|
Removed all echo_XXX rules except for echo_inst_files from lower
|
||||||
|
level makefile. The calc.spec will use a make install rule
|
||||||
|
with T=$RPM_BUILD_ROOT.
|
||||||
|
|
||||||
|
Updated LIBRARY file with instructions related to -DCALC_SRC,
|
||||||
|
the new default include file locatin and -lcustcalc.
|
||||||
|
|
||||||
|
|
||||||
|
The following are the changes from calc version 2.11.5t3 to 2.11.5t4:
|
||||||
|
|
||||||
|
The Makefile will now send both stdout and sterr to /dev/null
|
||||||
|
when compiling hsrc intermeriates.
|
||||||
|
|
||||||
|
The config("verbose_quit") value was restored to a default
|
||||||
|
value of FALSE.
|
||||||
|
|
||||||
|
Added the cscript:
|
||||||
|
|
||||||
|
powerterm [base_limit] value
|
||||||
|
|
||||||
|
to write the value as the sum (or difference) of powers <= base_limit
|
||||||
|
where base_limit by default is 10000.
|
||||||
|
|
||||||
|
Applied a bug fix by Dr.D.J.Picton <dave at aps5.ph.bham.ac.uk>
|
||||||
|
to have help with no args print the default help file.
|
||||||
|
|
||||||
|
Renamed lavarand to LavaRnd.
|
||||||
|
|
||||||
|
Added rules to build a calc rpm.
|
||||||
|
|
||||||
|
All installed files are first formed as foo.new, and then moved
|
||||||
|
into place as foo via a atomic rename.
|
||||||
|
|
||||||
|
During installation, only files that are different are installed.
|
||||||
|
If the built file and the installed file are the same, no
|
||||||
|
installation is performed.
|
||||||
|
|
||||||
|
Calc has new default installation locations:
|
||||||
|
|
||||||
|
Makefile var old location new location
|
||||||
|
------------ ------------ ------------
|
||||||
|
TOPDIR /usr/local/lib <<no longer used>>
|
||||||
|
BINDIR /usr/local/bin /usr/bin
|
||||||
|
SHAREDIR <<not set>> /usr/share
|
||||||
|
INCDIR /usr/local/include /usr/include
|
||||||
|
LIBDIR /usr/local/lib/calc /usr/lib
|
||||||
|
CSHAREDIR <<not set>> /usr/share/calc
|
||||||
|
HELPDIR /usr/local/lib/calc/help /usr/share/calc/help
|
||||||
|
INCDIRCALC /usr/local/include/calc /usr/include/calc
|
||||||
|
CUSTOMLIBDIR /usr/local/lib/calc/custom /usr/share/calc/custom
|
||||||
|
CUSTOMHELPDIR /usr/local/lib/calc/help/custhelp /usr/share/calc/custhelp
|
||||||
|
CUSTOMINCDIR <<not set>> /usr/include/calc/custom
|
||||||
|
SCRIPTDIR /usr/local/bin/cscript /usr/bin/cscript
|
||||||
|
MANDIR <<not set>> /usr/share/man/man1
|
||||||
|
CATDIR <<not set>> <<not set>>
|
||||||
|
|
||||||
|
The Makefile variable ${TOPDIR} is no longer used. In some places
|
||||||
|
it has been replaced by a new Makefile variable ${SHAREDIR}. Some
|
||||||
|
of the old TOPDIR functionality has beenn replaced by ${CSHAREDIR}.
|
||||||
|
|
||||||
|
The install rules no longer remove old obsolete files. We assume
|
||||||
|
that these old files have long since vanished! :-)
|
||||||
|
|
||||||
|
Reduced the amount of output when doing a make all where nothing
|
||||||
|
needs to be made.
|
||||||
|
|
||||||
|
Reduced the amount of output when doing a make install where nothing
|
||||||
|
needs to be installed.
|
||||||
|
|
||||||
|
If you install using the new default locations, you can remove
|
||||||
|
old calc files installed in the old default location by doing:
|
||||||
|
|
||||||
|
make olduninstall
|
||||||
|
|
||||||
|
|
||||||
|
The following are the changes from calc version 2.11.5t2 to 2.11.5t2.1:
|
||||||
|
|
||||||
|
Fixed a bug, reported by Ernest Bowen <ernie at turing dot
|
||||||
|
une dot edu dot au> that caused command lines to be echoed in
|
||||||
|
interactive mode. Fixed a bug that sometimes left the terminal
|
||||||
|
in a non-echoing state when calc exited.
|
||||||
|
|
||||||
|
Renamed error codes E_FGETWORD1 and E_FGETWORD2 symbols to
|
||||||
|
E_FGETFIELD1 and E_FGETFIELD2.
|
||||||
|
|
||||||
|
Made a minor format change to the top of the calc man page.
|
||||||
|
|
||||||
|
The findid() function in file.c 2nd argument changed. The argument
|
||||||
|
is now mostly a writable flag. This function now finds the file
|
||||||
|
I/O structure for the specified file id, and verifies that
|
||||||
|
it is opened in the required manner (0 for reading or 1 for writing).
|
||||||
|
If the 2nd argument is -1, then no open checks are made at all and
|
||||||
|
NULL is then returned if the id represents a closed file.
|
||||||
|
|
||||||
|
The calc builtin function, fopen(), now allows one to specify
|
||||||
|
opening files in binary modes. On POSIX / Linux / Un*x-like systems,
|
||||||
|
text file is the same as a binary file and so 'b' to an fopen has
|
||||||
|
no effect and is ignored. However on systems such as MS Windoz
|
||||||
|
the 'b' / binary mode has meaning. See 'help fopen' for details.
|
||||||
|
|
||||||
|
On systems (such as MS Windoz), calc will produce a different error
|
||||||
|
message when it attempts to open /dev/tty. This will condition
|
||||||
|
will occur in things like calc scripts when they switch from ``batch
|
||||||
|
processing'' commands from and want to start interactive mode.
|
||||||
|
|
||||||
|
Regression tests fopen in binary mode in a few places where a
|
||||||
|
difference between text and binary string lengths matter.
|
||||||
|
The intfile calc resource file also uses binary mode.
|
||||||
|
|
||||||
|
Changed the rand() builtin and its related functions srand() and
|
||||||
|
randbit() to use the Subtractive 100 generator instead of the
|
||||||
|
additive 55 generator. This generator as improved random properties.
|
||||||
|
As a result, of this change, the values produced by rand(),
|
||||||
|
rand() and randbit() are now different.
|
||||||
|
|
||||||
|
Updated regression tests for new rand() and randbit() output.
|
||||||
|
|
||||||
|
Applied a bug fix from Ernest Bowen <ernie at turing dot une dot
|
||||||
|
edu dot au> dealing with one-line "static" declaration like:
|
||||||
|
|
||||||
|
static a = 1, b;
|
||||||
|
|
||||||
|
Added regression test 8310 to test for the static bug fix.
|
||||||
|
|
||||||
|
|
||||||
|
The following are the changes from calc version 2.11.5t0 to 2.11.5t1.1:
|
||||||
|
|
||||||
Fixed a compile problem with Linux 2.4 / Debian. Thanks goes
|
Fixed a compile problem with Linux 2.4 / Debian. Thanks goes
|
||||||
to Martin Buck <m at rtin-buck dot de> for help with this issue.
|
to Martin Buck <m at rtin-buck dot de> for help with this issue.
|
||||||
@@ -10,7 +225,7 @@ The following are the changes from calc version 2.11.5t0 to date:
|
|||||||
|
|
||||||
An effort was made to make calc easier to build under Windoz
|
An effort was made to make calc easier to build under Windoz
|
||||||
using the Cygwin project (http://sources.redhat.com/cygwin/).
|
using the Cygwin project (http://sources.redhat.com/cygwin/).
|
||||||
Thanks to the work of Thomas Jones-Low (tjoneslo and softstart
|
Thanks to the work of Thomas Jones-Low (tjoneslo at softstart
|
||||||
dot com), a number of #if defined(_WIN32)'s have been added
|
dot com), a number of #if defined(_WIN32)'s have been added
|
||||||
to calc source. These changes should not effect Windoz
|
to calc source. These changes should not effect Windoz
|
||||||
free system such as GNU/Linux, Solaris, POSIX-like, etc ...
|
free system such as GNU/Linux, Solaris, POSIX-like, etc ...
|
||||||
@@ -121,7 +336,7 @@ The following are the changes from calc version 2.11.5t0 to date:
|
|||||||
that have been attempted to be built for windoz.
|
that have been attempted to be built for windoz.
|
||||||
|
|
||||||
|
|
||||||
The following are the changes from calc version 2.11.4t1 to date:
|
The following are the changes from calc version 2.11.4t1 to 2.11.4t2:
|
||||||
|
|
||||||
Added missing test8600.cal test file.
|
Added missing test8600.cal test file.
|
||||||
|
|
||||||
@@ -5148,7 +5363,7 @@ Following is a list of visible changes to calc from version 1.24.7 to 1.26.1:
|
|||||||
|
|
||||||
A small bug in the library file regress.cal was fixed.
|
A small bug in the library file regress.cal was fixed.
|
||||||
|
|
||||||
## Copyright (C) 1999 Landon Curt Noll
|
## Copyright (C) 2001 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
|
||||||
@@ -5164,8 +5379,8 @@ Following is a list of visible changes to calc from version 1.24.7 to 1.26.1:
|
|||||||
## received a copy with calc; if not, write to Free Software Foundation, Inc.
|
## received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||||
## 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
## 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||||
##
|
##
|
||||||
## @(#) $Revision: 29.26 $
|
## @(#) $Revision: 29.45 $
|
||||||
## @(#) $Id: CHANGES,v 29.26 2001/04/08 11:03:37 chongo Exp $
|
## @(#) $Id: CHANGES,v 29.45 2001/12/31 22:12:35 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
|
||||||
|
27
COPYING
27
COPYING
@@ -12,8 +12,8 @@ This file is Copyrighted
|
|||||||
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.5 $
|
# @(#) $Revision: 29.6 $
|
||||||
# @(#) $Id: COPYING,v 29.5 2000/12/18 10:22:55 chongo Exp $
|
# @(#) $Id: COPYING,v 29.6 2001/06/01 11:26:53 chongo Exp $
|
||||||
# @(#) $Source: /usr/local/src/cmd/calc/RCS/COPYING,v $
|
# @(#) $Source: /usr/local/src/cmd/calc/RCS/COPYING,v $
|
||||||
|
|
||||||
=-=
|
=-=
|
||||||
@@ -55,13 +55,18 @@ Calc is covered by the GNU Lesser General Public License
|
|||||||
|
|
||||||
The contact addresses for calc is as follows:
|
The contact addresses for calc is as follows:
|
||||||
|
|
||||||
Web: http://www.isthe.com/chongo/tech/comp/calc/index.html
|
Web: http://www.isthe.com/chongo/tech/comp/calc/email.html
|
||||||
EMail: calc-contrib at asthe dot com
|
|
||||||
|
|
||||||
To join the calc-tester mailing list. Send a request to:
|
To join the low volume calc mailing list. Send a EMail message to:
|
||||||
|
|
||||||
calc-tester-request at asthe dot com
|
calc-tester-request at asthe dot com
|
||||||
|
|
||||||
|
Your subject must contain the words:
|
||||||
|
|
||||||
|
calc mailing list subscription
|
||||||
|
|
||||||
|
You may have additional words in your subject line.
|
||||||
|
|
||||||
Your message body (not the subject) should consist of:
|
Your message body (not the subject) should consist of:
|
||||||
|
|
||||||
subscribe calc-tester address
|
subscribe calc-tester address
|
||||||
@@ -71,13 +76,23 @@ Calc is covered by the GNU Lesser General Public License
|
|||||||
where ``address'' is your EMail address and ``your_full_name'' is
|
where ``address'' is your EMail address and ``your_full_name'' is
|
||||||
your full name.
|
your full name.
|
||||||
|
|
||||||
Calc bug reports, however should be sent to:
|
Feel free to follow the name line with additional EMail text as desired.
|
||||||
|
|
||||||
|
=-=
|
||||||
|
|
||||||
|
Calc bug reports and calc bug fixes should be sent to:
|
||||||
|
|
||||||
calc-bugs at asthe dot com
|
calc-bugs at asthe dot com
|
||||||
|
|
||||||
[[ NOTE: Replace 'at' with @, 'dot' is with . and remove the spaces ]]
|
[[ NOTE: Replace 'at' with @, 'dot' is with . and remove the spaces ]]
|
||||||
[[ NOTE: The EMail address uses 'asthe' and the web site URL uses 'isthe' ]]
|
[[ NOTE: The EMail address uses 'asthe' and the web site URL uses 'isthe' ]]
|
||||||
|
|
||||||
|
Your subject must contain the words:
|
||||||
|
|
||||||
|
calc bug report
|
||||||
|
|
||||||
|
You may have additional words in your subject line.
|
||||||
|
|
||||||
=-=
|
=-=
|
||||||
|
|
||||||
Calc's relationship to the GNU Lesser General Public License
|
Calc's relationship to the GNU Lesser General Public License
|
||||||
|
@@ -26,6 +26,13 @@ Installing calc in 4 easy steps:
|
|||||||
Set BINDIR to the place where calc is installed. As shipped
|
Set BINDIR to the place where calc is installed. As shipped
|
||||||
the Makefile assumes a BINDIR /usr/local/bin.
|
the Makefile assumes a BINDIR /usr/local/bin.
|
||||||
|
|
||||||
|
Some compilers (to put it mildly) have bugs. Sometimes the
|
||||||
|
DEBUG Makefile variable causes the compiler / optimizer to
|
||||||
|
produce bad code. Other compilers do just fine. If possible
|
||||||
|
try to use DEBUG=-O3 -g3 (maximum optimization and debug symbols).
|
||||||
|
If the calc test fails (see step 3), try lowering either the
|
||||||
|
-O value and/or the -g3. Also try using -Osomething without -g.
|
||||||
|
|
||||||
Adjust other Makefile variables as needed.
|
Adjust other Makefile variables as needed.
|
||||||
|
|
||||||
2) build calc:
|
2) build calc:
|
||||||
@@ -65,8 +72,8 @@ the calc help subsystem. See the README file for details.
|
|||||||
## 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.
|
## 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||||
##
|
##
|
||||||
## @(#) $Revision: 29.2 $
|
## @(#) $Revision: 29.3 $
|
||||||
## @(#) $Id: HOWTO.INSTALL,v 29.2 2000/06/07 14:02:13 chongo Exp $
|
## @(#) $Id: HOWTO.INSTALL,v 29.3 2001/12/11 02:51:00 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
|
||||||
|
28
LIBRARY
28
LIBRARY
@@ -48,12 +48,30 @@ convenient for outside use. So you should read the source for a routine
|
|||||||
to see if it really does what you think it does. I won't guarantee that
|
to see if it really does what you think it does. I won't guarantee that
|
||||||
obscure internal routines won't change or disappear in future releases!
|
obscure internal routines won't change or disappear in future releases!
|
||||||
|
|
||||||
When calc is installed, all of the include files needed to build
|
When calc is installed, all of libraries are installed into ${LIBDIR}.
|
||||||
libcalc.a along with the link library itself are installed into ${LIBDIR}.
|
All of the calc header files are installed under ${INCDIRCALC}.
|
||||||
|
|
||||||
|
If CALC_SRC is defined, then the calc header files will assume that
|
||||||
|
they are in or under the current directory. However, most external
|
||||||
|
programs most likely will not be located under calc'c source tree.
|
||||||
|
External programs most likely want to use the installed calc header
|
||||||
|
files under ${INCDIRCALC}. External programs most likely NOT want
|
||||||
|
to define CALC_SRC.
|
||||||
|
|
||||||
External programs may want to compile with:
|
External programs may want to compile with:
|
||||||
|
|
||||||
-I${LIBDIR} -L${LIBDIR} -lcalc
|
-L${LIBDIR} -lcalc
|
||||||
|
|
||||||
|
If custom functions are also used, they may want to compile with:
|
||||||
|
|
||||||
|
-L${LIBDIR} -lcalc -lcustcalc
|
||||||
|
|
||||||
|
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:
|
||||||
|
|
||||||
|
-UCALC_SRC
|
||||||
|
|
||||||
|
as well.
|
||||||
|
|
||||||
--------------
|
--------------
|
||||||
ERROR HANDLING
|
ERROR HANDLING
|
||||||
@@ -471,8 +489,8 @@ need call libcalc_call_me_last() only once.
|
|||||||
## 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.
|
## 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||||
##
|
##
|
||||||
## @(#) $Revision: 29.2 $
|
## @(#) $Revision: 29.5 $
|
||||||
## @(#) $Id: LIBRARY,v 29.2 2000/06/07 14:02:13 chongo Exp $
|
## @(#) $Id: LIBRARY,v 29.5 2001/06/08 22:57:35 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
|
||||||
|
24
README
24
README
@@ -73,13 +73,19 @@ for a wish/todo list. Code contributions are welcome.
|
|||||||
|
|
||||||
=-=
|
=-=
|
||||||
|
|
||||||
To join the calc-tester mailing list. Send a request to:
|
To join the calc-tester mailing list. Send an EMail message to:
|
||||||
|
|
||||||
calc-tester-request at asthe dot com
|
calc-tester-request at asthe dot com
|
||||||
|
|
||||||
[[ NOTE: Replace 'at' with @, 'dot' is with . and remove the spaces ]]
|
[[ NOTE: Replace 'at' with @, 'dot' is with . and remove the spaces ]]
|
||||||
[[ NOTE: The EMail address uses 'asthe' and the web site URL uses 'isthe' ]]
|
[[ NOTE: The EMail address uses 'asthe' and the web site URL uses 'isthe' ]]
|
||||||
|
|
||||||
|
Your subject must contain the words:
|
||||||
|
|
||||||
|
calc mailing list subscription
|
||||||
|
|
||||||
|
You may have additional words in your subject line.
|
||||||
|
|
||||||
Your message body (not the subject) should consist of:
|
Your message body (not the subject) should consist of:
|
||||||
|
|
||||||
subscribe calc-tester address
|
subscribe calc-tester address
|
||||||
@@ -89,7 +95,11 @@ Your message body (not the subject) should consist of:
|
|||||||
where ``address'' is your EMail address and ``your_full_name'' is
|
where ``address'' is your EMail address and ``your_full_name'' is
|
||||||
your full name.
|
your full name.
|
||||||
|
|
||||||
Calc bug reports, however should be sent to:
|
Feel free to follow the name line with additional EMail text as desired.
|
||||||
|
|
||||||
|
=-=
|
||||||
|
|
||||||
|
Send Calc bug and bug fixes to:
|
||||||
|
|
||||||
calc-bugs at asthe dot com
|
calc-bugs at asthe dot com
|
||||||
|
|
||||||
@@ -98,6 +108,12 @@ Calc bug reports, however should be sent to:
|
|||||||
|
|
||||||
but see the BUGS file first.
|
but see the BUGS file first.
|
||||||
|
|
||||||
|
Your subject must contain the words:
|
||||||
|
|
||||||
|
calc bug report
|
||||||
|
|
||||||
|
You may have additional words in your subject line.
|
||||||
|
|
||||||
The calc web site is located at:
|
The calc web site is located at:
|
||||||
|
|
||||||
http://www.isthe.com/chongo/tech/comp/calc/
|
http://www.isthe.com/chongo/tech/comp/calc/
|
||||||
@@ -118,8 +134,8 @@ The calc web site is located at:
|
|||||||
## 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.
|
## 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||||
##
|
##
|
||||||
## @(#) $Revision: 29.2 $
|
## @(#) $Revision: 29.3 $
|
||||||
## @(#) $Id: README,v 29.2 2000/06/07 14:02:13 chongo Exp $
|
## @(#) $Id: README,v 29.3 2001/06/01 11:26:53 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
|
||||||
|
@@ -57,8 +57,9 @@ by the make file:
|
|||||||
|
|
||||||
You will find generated versions of these files located in the win32
|
You will find generated versions of these files located in the win32
|
||||||
sub-directory. These files may be appropriate for your Cygwin building
|
sub-directory. These files may be appropriate for your Cygwin building
|
||||||
needs. Just copy the win32/*.[ch] files up into the mail calc
|
needs. Just copy the win32/*.[ch] files up into the top level calc
|
||||||
source directory.
|
source directory, edited (if needed) and build using the Cygwin GCC
|
||||||
|
compiler.
|
||||||
|
|
||||||
=-=
|
=-=
|
||||||
|
|
||||||
@@ -104,8 +105,8 @@ was changed to:
|
|||||||
## 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.
|
## 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||||
##
|
##
|
||||||
## @(#) $Revision: 29.5 $
|
## @(#) $Revision: 29.6 $
|
||||||
## @(#) $Id: README.WINDOWS,v 29.5 2001/04/08 10:57:56 chongo Exp $
|
## @(#) $Id: README.WINDOWS,v 29.6 2001/04/08 22:13:38 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
|
||||||
|
19
alloc.h
19
alloc.h
@@ -17,8 +17,8 @@
|
|||||||
* 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.
|
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||||
*
|
*
|
||||||
* @(#) $Revision: 29.2 $
|
* @(#) $Revision: 29.4 $
|
||||||
* @(#) $Id: alloc.h,v 29.2 2000/06/07 14:02:13 chongo Exp $
|
* @(#) $Id: alloc.h,v 29.4 2001/06/08 21:00:58 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
|
||||||
@@ -32,10 +32,17 @@
|
|||||||
#define __ALLOC_H__
|
#define __ALLOC_H__
|
||||||
|
|
||||||
|
|
||||||
#include "have_malloc.h"
|
#if defined(CALC_SRC) /* if we are building from the calc source tree */
|
||||||
#include "have_newstr.h"
|
# include "have_malloc.h"
|
||||||
#include "have_string.h"
|
# include "have_newstr.h"
|
||||||
#include "have_memmv.h"
|
# include "have_string.h"
|
||||||
|
# include "have_memmv.h"
|
||||||
|
#else
|
||||||
|
# include <calc/have_malloc.h>
|
||||||
|
# include <calc/have_newstr.h>
|
||||||
|
# include <calc/have_string.h>
|
||||||
|
# include <calc/have_memmv.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef HAVE_MALLOC_H
|
#ifdef HAVE_MALLOC_H
|
||||||
# include <malloc.h>
|
# include <malloc.h>
|
||||||
|
10
blkcpy.c
10
blkcpy.c
@@ -19,8 +19,8 @@
|
|||||||
* 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.
|
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||||
*
|
*
|
||||||
* @(#) $Revision: 29.2 $
|
* @(#) $Revision: 29.3 $
|
||||||
* @(#) $Id: blkcpy.c,v 29.2 2000/06/07 14:02:13 chongo Exp $
|
* @(#) $Id: blkcpy.c,v 29.3 2001/04/10 22:06: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
|
||||||
@@ -581,7 +581,7 @@ copyblk2file(BLOCK *sblk, long ssi, long num, FILEID id, long dsi)
|
|||||||
if (num == 0)
|
if (num == 0)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
fiop = findid(id, 'w');
|
fiop = findid(id, TRUE);
|
||||||
if (fiop == NULL)
|
if (fiop == NULL)
|
||||||
return E_COPYF1;
|
return E_COPYF1;
|
||||||
fp = fiop->fp;
|
fp = fiop->fp;
|
||||||
@@ -618,7 +618,7 @@ copyfile2blk(FILEID id, long ssi, long num, BLOCK *dblk, long dsi, BOOL noreloc)
|
|||||||
|
|
||||||
if (id < 3) /* excludes copying from stdin */
|
if (id < 3) /* excludes copying from stdin */
|
||||||
return E_COPYF1;
|
return E_COPYF1;
|
||||||
fiop = findid(id, 'r');
|
fiop = findid(id, FALSE);
|
||||||
if (fiop == NULL)
|
if (fiop == NULL)
|
||||||
return E_COPYF1;
|
return E_COPYF1;
|
||||||
|
|
||||||
@@ -690,7 +690,7 @@ copystr2file(STRING *str, long ssi, long num, FILEID id, long dsi)
|
|||||||
return 0;
|
return 0;
|
||||||
if ((USB32) ssi + num > len)
|
if ((USB32) ssi + num > len)
|
||||||
return E_COPY5; /* Insufficient memory in str */
|
return E_COPY5; /* Insufficient memory in str */
|
||||||
fiop = findid(id, 'w');
|
fiop = findid(id, TRUE);
|
||||||
if (fiop == NULL)
|
if (fiop == NULL)
|
||||||
return E_COPYF1;
|
return E_COPYF1;
|
||||||
fp = fiop->fp;
|
fp = fiop->fp;
|
||||||
|
10
byteswap.h
10
byteswap.h
@@ -17,8 +17,8 @@
|
|||||||
* 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.
|
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||||
*
|
*
|
||||||
* @(#) $Revision: 29.2 $
|
* @(#) $Revision: 29.4 $
|
||||||
* @(#) $Id: byteswap.h,v 29.2 2000/06/07 14:02:13 chongo Exp $
|
* @(#) $Id: byteswap.h,v 29.4 2001/06/08 21:00:58 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
|
||||||
@@ -33,7 +33,11 @@
|
|||||||
#define __BYTESWAP_H__
|
#define __BYTESWAP_H__
|
||||||
|
|
||||||
|
|
||||||
#include "longbits.h"
|
#if defined(CALC_SRC) /* if we are building from the calc source tree */
|
||||||
|
# include "longbits.h"
|
||||||
|
#else
|
||||||
|
# include <calc/longbits.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
91
cal/Makefile
91
cal/Makefile
@@ -18,8 +18,8 @@
|
|||||||
# 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.
|
# 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||||
#
|
#
|
||||||
# @(#) $Revision: 29.5 $
|
# @(#) $Revision: 29.12 $
|
||||||
# @(#) $Id: Makefile,v 29.5 2001/03/31 16:24:17 chongo Exp $
|
# @(#) $Id: Makefile,v 29.12 2001/06/08 22:38:53 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
|
||||||
@@ -40,11 +40,28 @@ MAKE_FILE = Makefile
|
|||||||
# 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.
|
||||||
#
|
#
|
||||||
# where to install things
|
# where to install things
|
||||||
TOPDIR= /usr/local/lib
|
#SHAREDIR= /usr/local/lib
|
||||||
#TOPDIR= /usr/lib
|
#SHAREDIR= /usr/lib
|
||||||
#TOPDIR= /usr/libdata
|
SHAREDIR= /usr/share
|
||||||
|
#SHAREDIR= /usr/libdata
|
||||||
|
|
||||||
LIBDIR= ${TOPDIR}/calc
|
CSHAREDIR= ${SHAREDIR}/calc
|
||||||
|
|
||||||
|
# T - top level directory under which calc will be installed
|
||||||
|
#
|
||||||
|
# The calc install is performed under $T, the calc build is
|
||||||
|
# performed under /. The purpose for $T is to allow someone to
|
||||||
|
# install calc somewhere other than into the system area. For example
|
||||||
|
# when forming the calc rpm, the Makefile is called with T=$RPM_BUILD_ROOT.
|
||||||
|
#
|
||||||
|
# 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
|
||||||
|
# calc is installed under $T, as if one had to chroot under
|
||||||
|
# $T for calc to operate.
|
||||||
|
#
|
||||||
|
# If in doubt, use T=
|
||||||
|
#
|
||||||
|
T=
|
||||||
|
|
||||||
# Makefile debug
|
# Makefile debug
|
||||||
#
|
#
|
||||||
@@ -57,6 +74,7 @@ Q=@
|
|||||||
# standard tools
|
# standard tools
|
||||||
#
|
#
|
||||||
CHMOD= chmod
|
CHMOD= chmod
|
||||||
|
CMP= cmp
|
||||||
|
|
||||||
# The calc files to install
|
# The calc files to install
|
||||||
#
|
#
|
||||||
@@ -116,34 +134,61 @@ calcliblist:
|
|||||||
fi; \
|
fi; \
|
||||||
done
|
done
|
||||||
|
|
||||||
|
##
|
||||||
|
#
|
||||||
|
# rpm rules
|
||||||
|
#
|
||||||
|
##
|
||||||
|
|
||||||
|
echo_inst_files:
|
||||||
|
${Q}for i in ${CALC_FILES}; do \
|
||||||
|
echo __file__ ${CSHAREDIR}/$$i; \
|
||||||
|
done
|
||||||
|
|
||||||
|
##
|
||||||
|
#
|
||||||
|
# Utility rules
|
||||||
|
#
|
||||||
|
##
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
|
|
||||||
clobber:
|
clobber:
|
||||||
rm -f .all
|
rm -f .all
|
||||||
|
|
||||||
install: all
|
install: all
|
||||||
-${Q}if [ ! -d ${TOPDIR} ]; then \
|
-${Q}if [ ! -d $T${SHAREDIR} ]; then \
|
||||||
echo mkdir ${TOPDIR}; \
|
echo mkdir $T${SHAREDIR}; \
|
||||||
mkdir ${TOPDIR}; \
|
mkdir $T${SHAREDIR}; \
|
||||||
|
if [ ! -d "$T${SHAREDIR}" ]; then \
|
||||||
|
echo mkdir -p "$T${SHAREDIR}"; \
|
||||||
|
mkdir -p "$T${SHAREDIR}"; \
|
||||||
|
fi; \
|
||||||
|
echo ${CHMOD} 0755 $T${SHAREDIR}; \
|
||||||
|
${CHMOD} 0755 $T${SHAREDIR}; \
|
||||||
else \
|
else \
|
||||||
true; \
|
true; \
|
||||||
fi
|
fi
|
||||||
-${Q}if [ ! -d ${LIBDIR} ]; then \
|
-${Q}if [ ! -d $T${CSHAREDIR} ]; then \
|
||||||
echo mkdir ${LIBDIR}; \
|
echo mkdir $T${CSHAREDIR}; \
|
||||||
mkdir ${LIBDIR}; \
|
mkdir $T${CSHAREDIR}; \
|
||||||
|
if [ ! -d "$T${CSHAREDIR}" ]; then \
|
||||||
|
echo mkdir -p "$T${CSHAREDIR}"; \
|
||||||
|
mkdir -p "$T${CSHAREDIR}"; \
|
||||||
|
fi; \
|
||||||
|
echo ${CHMOD} 0755 $T${CSHAREDIR}; \
|
||||||
|
${CHMOD} 0755 $T${CSHAREDIR}; \
|
||||||
else \
|
else \
|
||||||
true; \
|
true; \
|
||||||
fi
|
fi
|
||||||
${Q}for i in ${CALC_FILES}; do \
|
${Q}for i in ${CALC_FILES}; do \
|
||||||
echo rm -f ${LIBDIR}/$$i; \
|
if ${CMP} -s $$i $T${CSHAREDIR}/$$i; then \
|
||||||
rm -f ${LIBDIR}/$$i; \
|
true; \
|
||||||
echo cp $$i ${LIBDIR}; \
|
else \
|
||||||
cp $$i ${LIBDIR}; \
|
rm -f $T${CSHAREDIR}/$$i.new; \
|
||||||
echo ${CHMOD} 0444 ${LIBDIR}/$$i; \
|
cp -f $$i $T${CSHAREDIR}/$$i.new; \
|
||||||
${CHMOD} 0444 ${LIBDIR}/$$i; \
|
${CHMOD} 0444 $T${CSHAREDIR}/$$i.new; \
|
||||||
|
mv -f $T${CSHAREDIR}/$$i.new $T${CSHAREDIR}/$$i; \
|
||||||
|
echo "installed $T${CSHAREDIR}/$$i"; \
|
||||||
|
fi; \
|
||||||
done
|
done
|
||||||
${Q}echo remove files that are obsolete
|
|
||||||
-rm -f nextprime.cal nextprim.cal
|
|
||||||
-rm -f test1000.cal test2000.cal ${LIBDIR}/test2000.cal
|
|
||||||
-rm -f ${LIBDIR}/nextprime.cal ${LIBDIR}/nextprim.cal
|
|
||||||
-rm -f ${LIBDIR}/test1000.cal ${LIBDIR}/cryrand.cal
|
|
||||||
|
@@ -17,8 +17,8 @@
|
|||||||
* 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.
|
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||||
*
|
*
|
||||||
* @(#) $Revision: 29.4 $
|
* @(#) $Revision: 29.5 $
|
||||||
* @(#) $Id: intfile.cal,v 29.4 2001/04/08 08:13:10 chongo Exp $
|
* @(#) $Id: intfile.cal,v 29.5 2001/04/10 22:09:34 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
|
||||||
@@ -56,7 +56,7 @@ define file2be(filename)
|
|||||||
/*
|
/*
|
||||||
* open the file for reading
|
* open the file for reading
|
||||||
*/
|
*/
|
||||||
fd = fopen(filename, "r");
|
fd = fopen(filename, "rb");
|
||||||
if (!isfile(fd)) quit "file2be: cannot open file for reading";
|
if (!isfile(fd)) quit "file2be: cannot open file for reading";
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -98,7 +98,7 @@ define file2le(filename)
|
|||||||
/*
|
/*
|
||||||
* open the file for reading
|
* open the file for reading
|
||||||
*/
|
*/
|
||||||
fd = fopen(filename, "r");
|
fd = fopen(filename, "rb");
|
||||||
if (!isfile(fd)) quit "file2le: cannot open file for reading";
|
if (!isfile(fd)) quit "file2le: cannot open file for reading";
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -150,7 +150,7 @@ define be2file(v, filename)
|
|||||||
/*
|
/*
|
||||||
* open the file for writing
|
* open the file for writing
|
||||||
*/
|
*/
|
||||||
fd = fopen(filename, "w");
|
fd = fopen(filename, "wb");
|
||||||
if (!isfile(fd)) quit "be2file: cannot open file for writing";
|
if (!isfile(fd)) quit "be2file: cannot open file for writing";
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -199,7 +199,7 @@ define le2file(v, filename)
|
|||||||
/*
|
/*
|
||||||
* open the file for writing
|
* open the file for writing
|
||||||
*/
|
*/
|
||||||
fd = fopen(filename, "w");
|
fd = fopen(filename, "wb");
|
||||||
if (!isfile(fd)) quit "le2file: cannot open file for writing";
|
if (!isfile(fd)) quit "le2file: cannot open file for writing";
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@@ -17,8 +17,8 @@
|
|||||||
* 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.
|
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||||
*
|
*
|
||||||
* @(#) $Revision: 29.3 $
|
* @(#) $Revision: 29.5 $
|
||||||
* @(#) $Id: lucas.cal,v 29.3 2001/03/31 13:31:34 chongo Exp $
|
* @(#) $Id: lucas.cal,v 29.5 2001/06/08 20:07:29 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
|
||||||
@@ -28,6 +28,16 @@
|
|||||||
* Share and enjoy! :-) http://www.isthe.com/chongo/tech/comp/calc/
|
* Share and enjoy! :-) http://www.isthe.com/chongo/tech/comp/calc/
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* NOTE: This is a standard calc resource file. For information on calc see:
|
||||||
|
*
|
||||||
|
* http://www.isthe.com/chongo/tech/comp/calc/index.html
|
||||||
|
*
|
||||||
|
* To obtain your own copy of calc, see:
|
||||||
|
*
|
||||||
|
* http://www.isthe.com/chongo/tech/comp/calc/calc-download.html
|
||||||
|
*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* HISTORICAL NOTE:
|
* HISTORICAL NOTE:
|
||||||
*
|
*
|
||||||
@@ -52,12 +62,19 @@
|
|||||||
*
|
*
|
||||||
* At the time of discovery, this was the largest known twin prime pair.
|
* At the time of discovery, this was the largest known twin prime pair.
|
||||||
*
|
*
|
||||||
|
* See:
|
||||||
|
*
|
||||||
|
* http://www.isthe.com/chongo/tech/math/prime/amdahl6.html
|
||||||
|
*
|
||||||
|
* for more information on the Amdahl 6 group.
|
||||||
|
*
|
||||||
* NOTE: Both largest known and largest known twin prime records have been
|
* NOTE: Both largest known and largest known twin prime records have been
|
||||||
* broken. Rather than update this file each time, I'll just
|
* broken. Rather than update this file each time, I'll just
|
||||||
* congratulate the finders and encourage others to try for
|
* congratulate the finders and encourage others to try for
|
||||||
* larger finds. Records were made to be broken afterall!
|
* larger finds. Records were made to be broken afterall!
|
||||||
*
|
*/
|
||||||
* ON GAINING A WORLD RECORD:
|
|
||||||
|
/* ON GAINING A WORLD RECORD:
|
||||||
*
|
*
|
||||||
* The routines in calc were designed to be portable, and to work on
|
* The routines in calc were designed to be portable, and to work on
|
||||||
* numbers of 'sane' size. The Amdahl 6 team used a 'ultra-high speed
|
* numbers of 'sane' size. The Amdahl 6 team used a 'ultra-high speed
|
||||||
|
148
cal/regress.cal
148
cal/regress.cal
@@ -17,8 +17,8 @@
|
|||||||
* 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.
|
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||||
*
|
*
|
||||||
* @(#) $Revision: 29.7 $
|
* @(#) $Revision: 29.10 $
|
||||||
* @(#) $Id: regress.cal,v 29.7 2001/04/08 10:09:39 chongo Exp $
|
* @(#) $Id: regress.cal,v 29.10 2001/04/14 22:53:57 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
|
||||||
@@ -1567,31 +1567,31 @@ define test_rand()
|
|||||||
/* test the additive 55 shuffle generator */
|
/* test the additive 55 shuffle generator */
|
||||||
tmp = srand(0);
|
tmp = srand(0);
|
||||||
print '1505: tmp = srand(0)';
|
print '1505: tmp = srand(0)';
|
||||||
vrfy(rand() == 0xc79ef743e2e6849c, \
|
vrfy(rand() == 0x1fe5b46fba7e069d, \
|
||||||
'1506: rand() == 0xc79ef743e2e6849c');
|
'1506: rand() == 0x1fe5b46fba7e069d');
|
||||||
vrfy(rand() == 0x8d2dcb2bed321284, \
|
vrfy(rand() == 0x308d32d9bdf2dc6f, \
|
||||||
'1507: rand() == 0x8d2dcb2bed321284');
|
'1507: rand() == 0x308d32d9bdf2dc6f');
|
||||||
tmp = srand(init);
|
tmp = srand(init);
|
||||||
print '1508: tmp = srand(init)';
|
print '1508: tmp = srand(init)';
|
||||||
vrfy(rand() == 0xc79ef743e2e6849c, \
|
vrfy(rand() == 0x1fe5b46fba7e069d, \
|
||||||
'1509: rand() == 0xc79ef743e2e6849c');
|
'1509: rand() == 0x1fe5b46fba7e069d');
|
||||||
vrfy(rand() == 0x8d2dcb2bed321284, \
|
vrfy(rand() == 0x308d32d9bdf2dc6f, \
|
||||||
'1510: rand() == 0x8d2dcb2bed321284');
|
'1510: rand() == 0x308d32d9bdf2dc6f');
|
||||||
|
|
||||||
/* test range interface */
|
/* test range interface */
|
||||||
tmp = srand(0);
|
tmp = srand(0);
|
||||||
print '1511: tmp = srand(0)';
|
print '1511: tmp = srand(0)';
|
||||||
vrfy(rand(12345678901234567890) == 0x8d2dcb2bed321284, \
|
vrfy(rand(12345678901234567890) == 0x1fe5b46fba7e069d, \
|
||||||
'1512: rand(12345678901234567890) == 0x8d2dcb2bed321284');
|
'1512: rand(12345678901234567890) == 0x1fe5b46fba7e069d');
|
||||||
vrfy(rand(216091) == 0x13d2b, '1513: rand(216091) == 0x13d2b');
|
vrfy(rand(216091) == 0xc234, '1513: rand(216091) == 0xc234');
|
||||||
vrfy(rand(100) == 0x26, '1514: rand(100) == 0x26');
|
vrfy(rand(100) == 0x59, '1514: rand(100) == 0x59');
|
||||||
vrfy(rand(-46,46) == -0xf, '1515: rand(-46,46) == -0xf');
|
vrfy(rand(-46,46) == 0x2d, '1515: rand(-46,46) == 0x2d');
|
||||||
tmp = srand(0);
|
tmp = srand(0);
|
||||||
print '1516: tmp = srand(0)';
|
print '1516: tmp = srand(0)';
|
||||||
vrfy(rand(2^64) == 0xc79ef743e2e6849c, \
|
vrfy(rand(2^64) == 0x1fe5b46fba7e069d, \
|
||||||
'1517: rand(2^64) == 0xc79ef743e2e6849c');
|
'1517: rand(2^64) == 0x1fe5b46fba7e069d');
|
||||||
vrfy(rand(0,2^64) == 0x8d2dcb2bed321284, \
|
vrfy(rand(0,2^64) == 0x308d32d9bdf2dc6f, \
|
||||||
'1518: rand(0,2^64) == 0x8d2dcb2bed321284');
|
'1518: rand(0,2^64) == 0x308d32d9bdf2dc6f');
|
||||||
|
|
||||||
/* test different forms of seeding the initial state */
|
/* test different forms of seeding the initial state */
|
||||||
tmp = srand(0);
|
tmp = srand(0);
|
||||||
@@ -1599,7 +1599,7 @@ define test_rand()
|
|||||||
vrfy(srand() == init, '1520: srand() == init');
|
vrfy(srand() == init, '1520: srand() == init');
|
||||||
tmp = srand(0x87e6ec938ff55aa5<<64);
|
tmp = srand(0x87e6ec938ff55aa5<<64);
|
||||||
print '1521: tmp = srand(0x87e6ec938ff55aa5<<64)';
|
print '1521: tmp = srand(0x87e6ec938ff55aa5<<64)';
|
||||||
vrfy(srand() == init, '1522: srand() == init');
|
print '1522: test disabled';
|
||||||
tmp = srand(state0);
|
tmp = srand(state0);
|
||||||
print '1523: tmp = srand(state0)';
|
print '1523: tmp = srand(state0)';
|
||||||
vrfy(srand() == init, '1524: srand() == init');
|
vrfy(srand() == init, '1524: srand() == init');
|
||||||
@@ -1611,35 +1611,35 @@ define test_rand()
|
|||||||
/* test the bit length interface */
|
/* test the bit length interface */
|
||||||
tmp = srand(0);
|
tmp = srand(0);
|
||||||
print '1528: tmp = srand(0)';
|
print '1528: tmp = srand(0)';
|
||||||
vrfy(randbit(64) == 0xc79ef743e2e6849c, \
|
vrfy(randbit(64) == 0x1fe5b46fba7e069d, \
|
||||||
'1529: randbit(64) == 0xc79ef743e2e6849c');
|
'1529: randbit(64) == 0x1fe5b46fba7e069d');
|
||||||
vrfy(randbit(128) == 0x8d2dcb2bed3212844f4ad31f3818af34, \
|
vrfy(randbit(128) == 0x308d32d9bdf2dc6f45d3e3b3361b79e4, \
|
||||||
'1530: randbit(128) == 0x8d2dcb2bed3212844f4ad31f3818af34');
|
'1530: randbit(128) == 0x308d32d9bdf2dc6f45d3e3b3361b79e4');
|
||||||
vrfy(randbit(64) == 0x23a252f60bae4907, \
|
vrfy(randbit(64) == 0xd4ef1e3336022d81, \
|
||||||
'1531: randbit(64) == 0x23a252f60bae4907');
|
'1531: randbit(64) == 0xd4ef1e3336022d81');
|
||||||
vrfy(randbit(128) == 0xa8ed5b6203e2b1da32848cd9b3f1e3fa, \
|
vrfy(randbit(128) == 0x66b086e6c34e42124a1fc5d4e5c6f598, \
|
||||||
'1532: randbit(128) == 0xa8ed5b6203e2b1da32848cd9b3f1e3fa');
|
'1532: randbit(128) == 0x66b086e6c34e42124a1fc5d4e5c6f598');
|
||||||
tmp = srand(0);
|
tmp = srand(0);
|
||||||
print '1533: tmp = srand(0)';
|
print '1533: tmp = srand(0)';
|
||||||
vrfy(randbit(32) == 0xc79ef743, '1534: randbit(32) == 0xc79ef743');
|
vrfy(randbit(32) == 0x1fe5b46f, '1534: randbit(32) == 0x1fe5b46f');
|
||||||
vrfy(randbit(32) == 0xe2e6849c, '1535: randbit(32) == 0xe2e6849c');
|
vrfy(randbit(32) == 0xba7e069d, '1535: randbit(32) == 0xba7e069d');
|
||||||
vrfy(randbit(1) == 0x1, '1536: randbit(1) == 0x1');
|
vrfy(randbit(1) == 0x0, '1536: randbit(1) == 0x0');
|
||||||
vrfy(randbit(5) == 0x3, '1537: randbit(5) == 0x3');
|
vrfy(randbit(5) == 0xc, '1537: randbit(5) == 0xc');
|
||||||
vrfy(randbit(33) == 0x96e595f6, '1538: randbit(33) == 0x96e595f6');
|
vrfy(randbit(33) == 0x46996cde, '1538: randbit(33) == 0x46996cde');
|
||||||
vrfy(randbit(25) == 0x1321284, '1539: randbit(25) == 0x1321284');
|
vrfy(randbit(25) == 0x1f2dc6f, '1539: randbit(25) == 0x1f2dc6f');
|
||||||
vrfy(randbit(2) == 0x1, '1540: randbit(2) == 0x1');
|
vrfy(randbit(2) == 0x1, '1540: randbit(2) == 0x1');
|
||||||
vrfy(randbit(13) == 0x7a5, '1541: randbit(13) == 0x7a5');
|
vrfy(randbit(13) == 0x2e9, '1541: randbit(13) == 0x2e9');
|
||||||
vrfy(randbit(18) == 0x1a63e, '1542: randbit(18) == 0x1a63e');
|
vrfy(randbit(18) == 0x3c766, '1542: randbit(18) == 0x3c766');
|
||||||
vrfy(randbit(8) == 0x70, '1543: randbit(8) == 0x70');
|
vrfy(randbit(8) == 0x6c, '1543: randbit(8) == 0x6c');
|
||||||
vrfy(randbit(9) == 0x62, '1544: randbit(9) == 0x62');
|
vrfy(randbit(9) == 0x6d, '1544: randbit(9) == 0x6d');
|
||||||
vrfy(randbit(70) == 0x2f3423a252f60bae49, \
|
vrfy(randbit(70) == 0x39e4d4ef1e3336022d, \
|
||||||
'1545: randbit(70) == 0x2f3423a252f60bae49');
|
'1545: randbit(70) == 0x39e4d4ef1e3336022d');
|
||||||
print '1546: test unused';
|
print '1546: test unused';
|
||||||
vrfy(randbit(8) == 0x7, '1547: randbit(8) == 0x7');
|
vrfy(randbit(8) == 0x81, '1547: randbit(8) == 0x81');
|
||||||
vrfy(randbit(65) == 0x151dab6c407c563b4, \
|
vrfy(randbit(65) == 0xcd610dcd869c8424, \
|
||||||
'1548: randbit(65) == 0x151dab6c407c563b4');
|
'1548: randbit(65) == 0xcd610dcd869c8424');
|
||||||
vrfy(randbit(63) == 0x32848cd9b3f1e3fa, \
|
vrfy(randbit(63) == 0x4a1fc5d4e5c6f598, \
|
||||||
'1549: randbit(63) == 0x32848cd9b3f1e3fa');
|
'1549: randbit(63) == 0x4a1fc5d4e5c6f598');
|
||||||
|
|
||||||
/* check to be sure that the srand(1) bug was fixed */
|
/* check to be sure that the srand(1) bug was fixed */
|
||||||
tmp = srand(1);
|
tmp = srand(1);
|
||||||
@@ -1648,36 +1648,36 @@ define test_rand()
|
|||||||
print '1551: n = 1';
|
print '1551: n = 1';
|
||||||
vrfy(num(n), '1552: num(n)');
|
vrfy(num(n), '1552: num(n)');
|
||||||
vrfy(den(n), '1553: den(n)');
|
vrfy(den(n), '1553: den(n)');
|
||||||
vrfy(randbit(64) == 0x4280429f8069cb27, \
|
vrfy(randbit(64) == 0xbf989a4c504a541d, \
|
||||||
'1554: randbit(64) == 0x4280429f8069cb27');
|
'1554: randbit(64) == 0xbf989a4c504a541d');
|
||||||
|
|
||||||
/* test randbit skip interface */
|
/* test randbit skip interface */
|
||||||
tmp = srand(0);
|
tmp = srand(0);
|
||||||
print '1555: tmp = srand(0)';
|
print '1555: tmp = srand(0)';
|
||||||
vrfy(randbit(20) == 817647, '1556: randbit(20) == 817647');
|
vrfy(randbit(20) == 0x1fe5b, '1556: randbit(20) == 0x1fe5b');
|
||||||
vrfy(randbit(20) == 476130, '1557: randbit(20) == 476130');
|
vrfy(randbit(20) == 0x46fba, '1557: randbit(20) == 0x46fba');
|
||||||
vrfy(randbit(20) == 944201, '1558: randbit(20) == 944201');
|
vrfy(randbit(20) == 0x7e069, '1558: randbit(20) == 0x7e069');
|
||||||
vrfy(randbit(20) == 822573, '1559: randbit(20) == 822573');
|
vrfy(randbit(20) == 0xd308d, '1559: randbit(20) == 0xd308d');
|
||||||
tmp = srand(0);
|
tmp = srand(0);
|
||||||
print '1560: tmp = srand(0)';
|
print '1560: tmp = srand(0)';
|
||||||
vrfy(randbit(-20) == 20, '1561: randbit(-20) == 20');
|
vrfy(randbit(-20) == 20, '1561: randbit(-20) == 20');
|
||||||
vrfy(randbit(20) == 476130, '1562: randbit(20) == 476130');
|
vrfy(randbit(20) == 290746, '1562: randbit(20) == 290746');
|
||||||
vrfy(randbit(-20) == 20, '1563: randbit(-20) == 20');
|
vrfy(randbit(-20) == 20, '1563: randbit(-20) == 20');
|
||||||
vrfy(randbit(20) == 822573, '1564: randbit(20) == 822573');
|
vrfy(randbit(20) == 864397, '1564: randbit(20) == 864397');
|
||||||
|
|
||||||
/* test randbit without and arg */
|
/* test randbit without and arg */
|
||||||
tmp = srand(0);
|
tmp = srand(0);
|
||||||
print '1565: tmp = srand(0)';
|
print '1565: tmp = srand(0)';
|
||||||
vrfy(randbit() == 1, '1566: randbit() == 1');
|
vrfy(randbit() == 0, '1566: randbit() == 0');
|
||||||
vrfy(randbit() == 1, '1567: randbit() == 1');
|
vrfy(randbit() == 0, '1567: randbit() == 0');
|
||||||
vrfy(randbit() == 0, '1568: randbit() == 0');
|
vrfy(randbit() == 0, '1568: randbit() == 0');
|
||||||
|
vrfy(randbit() == 1, '1569: randbit() == 1');
|
||||||
|
|
||||||
/* test seed() as best as we can */
|
/* test seed() as best as we can */
|
||||||
vrfy(seed() >= 0, '1569: seed() >= 0');
|
vrfy(seed() >= 0, '1570: seed() >= 0');
|
||||||
vrfy(seed() < 2^64, '1570: seed() < 2^64');
|
vrfy(seed() < 2^64, '1571: seed() < 2^64');
|
||||||
vrfy(isrand(srand(seed())), '1571: isrand(srand(seed()))');
|
vrfy(isrand(srand(seed())), '1572: isrand(srand(seed()))');
|
||||||
|
|
||||||
print '1572: Ending rand test';
|
print '1573: Ending rand test';
|
||||||
}
|
}
|
||||||
print '025: parsed test_rand()';
|
print '025: parsed test_rand()';
|
||||||
|
|
||||||
@@ -5118,15 +5118,15 @@ define test_is()
|
|||||||
a = assoc();
|
a = assoc();
|
||||||
print '5901: a = assoc()';
|
print '5901: a = assoc()';
|
||||||
if (config("windows")) {
|
if (config("windows")) {
|
||||||
ofd = fopen("NUL:", "r");
|
ofd = fopen("NUL:", "rb");
|
||||||
print '5902: ofd = fopen("NUL:", "r")';
|
print '5902: ofd = fopen("NUL:", "rb")';
|
||||||
cfd = fopen("NUL:", "r");
|
cfd = fopen("NUL:", "rb");
|
||||||
print '5903: cfd = fopen("NUL:", "r")';
|
print '5903: cfd = fopen("NUL:", "rb")';
|
||||||
} else {
|
} else {
|
||||||
ofd = fopen("/dev/null", "r");
|
ofd = fopen("/dev/null","rb");
|
||||||
print '5902: ofd = fopen("/dev/null", "r")';
|
print '5902: ofd = fopen("/dev/null","rb")';
|
||||||
cfd = fopen("/dev/null", "r");
|
cfd = fopen("/dev/null","rb");
|
||||||
print '5903: cfd = fopen("/dev/null", "r")';
|
print '5903: cfd = fopen("/dev/null","rb")';
|
||||||
}
|
}
|
||||||
fclose(cfd);
|
fclose(cfd);
|
||||||
print '5904: fclose(cfd)';
|
print '5904: fclose(cfd)';
|
||||||
@@ -6305,8 +6305,8 @@ define test_blkcpy()
|
|||||||
|
|
||||||
/* blkcpy the last 5 octets of B1 to a new block C */
|
/* blkcpy the last 5 octets of B1 to a new block C */
|
||||||
|
|
||||||
blkcpy(C = blk(), B1, 5, ,100);
|
blkcpy(C = blk(), B1,5,,100);
|
||||||
print '6821: blkcpy(C = blk(), B1, 5, ,100);';
|
print '6821: blkcpy(C = blk(), B1,5,,100);';
|
||||||
vrfy(C == A, '6822: C == A');
|
vrfy(C == A, '6822: C == A');
|
||||||
|
|
||||||
/* blkcpy to and from a file */
|
/* blkcpy to and from a file */
|
||||||
@@ -6322,8 +6322,8 @@ define test_blkcpy()
|
|||||||
blkcpy(fs, A, ,100);
|
blkcpy(fs, A, ,100);
|
||||||
print '6828: blkcpy(fs, A, ,100);';
|
print '6828: blkcpy(fs, A, ,100);';
|
||||||
vrfy(size(fs) == 105, '6829: size(f) == 105');
|
vrfy(size(fs) == 105, '6829: size(f) == 105');
|
||||||
blkcpy(C = blk(), fs, 2, ,100);
|
blkcpy(C = blk(), fs,2,,100);
|
||||||
print '6830: blkcpy(C = blk(), fs, 2, ,100)';
|
print '6830: blkcpy(C = blk(), fs,2,,100)';
|
||||||
vrfy(C == (blk() = {1,2}), '6831: C == (blk() = {1,2}');
|
vrfy(C == (blk() = {1,2}), '6831: C == (blk() = {1,2}');
|
||||||
|
|
||||||
/* blkcpy string to a block */
|
/* blkcpy string to a block */
|
||||||
@@ -7605,7 +7605,9 @@ vrfy(j8300(10) == 11, '8307: j8300(10) == 11');
|
|||||||
{static k8300 = 5} define l8300(x) = k8300 + x;
|
{static k8300 = 5} define l8300(x) = k8300 + x;
|
||||||
print '8308: {static k8300 = 5} define l8300(x) = k8300 + x;';
|
print '8308: {static k8300 = 5} define l8300(x) = k8300 + x;';
|
||||||
vrfy(l8300(10) == 15, '8309: l8300(10) == 15');
|
vrfy(l8300(10) == 15, '8309: l8300(10) == 15');
|
||||||
print '8310: Ending define tests';
|
static a8300 = 1, b8300;
|
||||||
|
vrfy(a8300 == 1, '8310: a8300 == 1');
|
||||||
|
print '8311: Ending define tests';
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
107
cal/test4600.cal
107
cal/test4600.cal
@@ -19,8 +19,8 @@
|
|||||||
* 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.
|
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||||
*
|
*
|
||||||
* @(#) $Revision: 29.3 $
|
* @(#) $Revision: 29.4 $
|
||||||
* @(#) $Id: test4600.cal,v 29.3 2001/04/08 10:09:39 chongo Exp $
|
* @(#) $Id: test4600.cal,v 29.4 2001/04/10 22:09:02 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
|
||||||
@@ -53,10 +53,10 @@ define stest(str, verbose)
|
|||||||
/*
|
/*
|
||||||
* do file operations
|
* do file operations
|
||||||
*/
|
*/
|
||||||
f = fopen("junk4600", "w");
|
f = fopen("junk4600", "wb");
|
||||||
if (iserror(f)) {
|
if (iserror(f)) {
|
||||||
print 'failed';
|
print 'failed';
|
||||||
print '**** fopen("junk4600", "w") failed';
|
print '**** fopen("junk4600", "wb") failed';
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
if (iserror(fputs(f,
|
if (iserror(fputs(f,
|
||||||
@@ -67,9 +67,9 @@ define stest(str, verbose)
|
|||||||
print '**** fputs(f, "Fourscore ... failed';
|
print '**** fputs(f, "Fourscore ... failed';
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
if (iserror(freopen(f, "r"))) {
|
if (iserror(freopen(f, "rb"))) {
|
||||||
print 'failed';
|
print 'failed';
|
||||||
print '**** iserror(freopen(f, "r")) failed';
|
print '**** iserror(freopen(f, "rb")) failed';
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
if (iserror(rewind(f))) {
|
if (iserror(rewind(f))) {
|
||||||
@@ -87,68 +87,35 @@ define stest(str, verbose)
|
|||||||
print '**** ftell(f) != 13 failed';
|
print '**** ftell(f) != 13 failed';
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
if (config("windows")) {
|
if (search(f, "and") != 109) {
|
||||||
if (search(f, "and") != 110) {
|
print 'failed';
|
||||||
print 'failed';
|
print '**** search(f, "and") != 109 failed';
|
||||||
print '**** search(f, "and") != 110 failed';
|
return 1;
|
||||||
return 1;
|
}
|
||||||
}
|
if (ftell(f) != 112) {
|
||||||
if (ftell(f) != 113) {
|
print 'failed';
|
||||||
print 'failed';
|
print '**** ftell(f) != 112 failed';
|
||||||
print '**** ftell(f) != 113 failed';
|
return 1;
|
||||||
return 1;
|
}
|
||||||
}
|
if (!isnull(search(f, "and"))) {
|
||||||
if (!isnull(search(f, "and"))) {
|
print 'failed';
|
||||||
print 'failed';
|
print '**** !isnull(search(f, "and")) failed';
|
||||||
print '**** !isnull(search(f, "and")) failed';
|
return 1;
|
||||||
return 1;
|
}
|
||||||
}
|
if (ftell(f) != 172) {
|
||||||
if (ftell(f) != 174) {
|
print 'failed';
|
||||||
print 'failed';
|
print '**** ftell(f) != 172 failed';
|
||||||
print '**** ftell(f) != 174 failed';
|
return 1;
|
||||||
return 1;
|
}
|
||||||
}
|
if (rsearch(f, "and") != 109) {
|
||||||
if (rsearch(f, "and") != 110) {
|
print 'failed';
|
||||||
print 'failed';
|
print '**** rsearch(f, "and") != 109 failed';
|
||||||
print '**** rsearch(f, "and") != 110 failed';
|
return 1;
|
||||||
return 1;
|
}
|
||||||
}
|
if (ftell(f) != 111) {
|
||||||
if (ftell(f) != 112) {
|
print 'failed';
|
||||||
print 'failed';
|
print '**** ftell(f) != 111 failed';
|
||||||
print '**** ftell(f) != 112 failed';
|
return 1;
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
if (search(f, "and") != 109) {
|
|
||||||
print 'failed';
|
|
||||||
print '**** search(f, "and") != 109 failed';
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
if (ftell(f) != 112) {
|
|
||||||
print 'failed';
|
|
||||||
print '**** ftell(f) != 112 failed';
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
if (!isnull(search(f, "and"))) {
|
|
||||||
print 'failed';
|
|
||||||
print '**** !isnull(search(f, "and")) failed';
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
if (ftell(f) != 172) {
|
|
||||||
print 'failed';
|
|
||||||
print '**** ftell(f) != 172 failed';
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
if (rsearch(f, "and") != 109) {
|
|
||||||
print 'failed';
|
|
||||||
print '**** rsearch(f, "and") != 109 failed';
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
if (ftell(f) != 111) {
|
|
||||||
print 'failed';
|
|
||||||
print '**** ftell(f) != 111 failed';
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
if (iserror(fseek(f, -4, 1))) {
|
if (iserror(fseek(f, -4, 1))) {
|
||||||
print 'failed';
|
print 'failed';
|
||||||
@@ -206,7 +173,7 @@ define ttest(str, m, n, verbose)
|
|||||||
print str:":",:;
|
print str:":",:;
|
||||||
}
|
}
|
||||||
i = rm("-f", "junk4600");
|
i = rm("-f", "junk4600");
|
||||||
f = fopen("junk4600", "w");
|
f = fopen("junk4600", "wb");
|
||||||
|
|
||||||
if (isnull(n))
|
if (isnull(n))
|
||||||
n = 4;
|
n = 4;
|
||||||
@@ -231,7 +198,7 @@ define ttest(str, m, n, verbose)
|
|||||||
fflush(f);
|
fflush(f);
|
||||||
if (verbose > 1)
|
if (verbose > 1)
|
||||||
printf("File has size %d\n", pos[i]);
|
printf("File has size %d\n", pos[i]);
|
||||||
freopen(f, "r");
|
freopen(f, "rb");
|
||||||
if (size(f) != pos[i]) {
|
if (size(f) != pos[i]) {
|
||||||
print 'failed';
|
print 'failed';
|
||||||
printf("**** Failure 1 for file size\n");
|
printf("**** Failure 1 for file size\n");
|
||||||
|
22
calc.c
22
calc.c
@@ -19,8 +19,8 @@
|
|||||||
* 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.
|
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||||
*
|
*
|
||||||
* @(#) $Revision: 29.7 $
|
* @(#) $Revision: 29.8 $
|
||||||
* @(#) $Id: calc.c,v 29.7 2001/03/17 21:31:47 chongo Exp $
|
* @(#) $Id: calc.c,v 29.8 2001/04/10 22:03:13 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
|
||||||
@@ -625,9 +625,18 @@ main(int argc, char **argv)
|
|||||||
if (!p_flag && i_flag && !stdin_tty) {
|
if (!p_flag && i_flag && !stdin_tty) {
|
||||||
closeinput();
|
closeinput();
|
||||||
if(!freopen("/dev/tty", "r", stdin)) {
|
if(!freopen("/dev/tty", "r", stdin)) {
|
||||||
|
#if defined (_WIN32)
|
||||||
|
fprintf(stderr,
|
||||||
|
"/dev/tty does not exist on "
|
||||||
|
"this operating system. "
|
||||||
|
"Change operating systems\n"
|
||||||
|
"or don't use this calc mode "
|
||||||
|
"in the future, sorry!\n");
|
||||||
|
#else /* Windoz free systems */
|
||||||
fprintf(stderr,
|
fprintf(stderr,
|
||||||
"Unable to associate stdin"
|
"Unable to associate stdin"
|
||||||
" with /dev/tty");
|
" with /dev/tty");
|
||||||
|
#endif /* Windoz free systems */
|
||||||
set_run_state(RUN_EXIT_WITH_ERROR);
|
set_run_state(RUN_EXIT_WITH_ERROR);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -646,9 +655,18 @@ main(int argc, char **argv)
|
|||||||
!p_flag && (!havecommands||i_flag)) {
|
!p_flag && (!havecommands||i_flag)) {
|
||||||
closeinput();
|
closeinput();
|
||||||
if(!freopen("/dev/tty", "r", stdin)) {
|
if(!freopen("/dev/tty", "r", stdin)) {
|
||||||
|
#if defined (_WIN32)
|
||||||
|
fprintf(stderr,
|
||||||
|
"/dev/tty does not exist on "
|
||||||
|
"this operating system. "
|
||||||
|
"Change operating systems\n"
|
||||||
|
"or don't use this calc mode "
|
||||||
|
"in the future, sorry!\n");
|
||||||
|
#else /* Windoz free systems */
|
||||||
fprintf(stderr,
|
fprintf(stderr,
|
||||||
"Unable to associate stdin"
|
"Unable to associate stdin"
|
||||||
" with /dev/tty");
|
" with /dev/tty");
|
||||||
|
#endif /* Windoz free systems */
|
||||||
set_run_state(RUN_EXIT_WITH_ERROR);
|
set_run_state(RUN_EXIT_WITH_ERROR);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
18
calc.h
18
calc.h
@@ -17,8 +17,8 @@
|
|||||||
* 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.
|
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||||
*
|
*
|
||||||
* @(#) $Revision: 29.6 $
|
* @(#) $Revision: 29.9 $
|
||||||
* @(#) $Id: calc.h,v 29.6 2001/03/17 21:31:47 chongo Exp $
|
* @(#) $Id: calc.h,v 29.9 2001/12/11 02:28:47 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
|
||||||
@@ -32,9 +32,15 @@
|
|||||||
#define __CALC_H__
|
#define __CALC_H__
|
||||||
|
|
||||||
#include <setjmp.h>
|
#include <setjmp.h>
|
||||||
#include "win32dll.h"
|
#if defined(CALC_SRC) /* if we are building from the calc source tree */
|
||||||
#include "value.h"
|
# include "win32dll.h"
|
||||||
#include "have_const.h"
|
# include "value.h"
|
||||||
|
# include "have_const.h"
|
||||||
|
#else
|
||||||
|
# include <calc/win32dll.h>
|
||||||
|
# include <calc/value.h>
|
||||||
|
# include <calc/have_const.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -252,7 +258,7 @@ extern DLL char *run_state_name(run state);
|
|||||||
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 char *calc_minor_patch;
|
extern int calc_minor_patch;
|
||||||
extern char *Copyright;
|
extern char *Copyright;
|
||||||
extern DLL char *version(void);
|
extern DLL char *version(void);
|
||||||
|
|
||||||
|
96
calc.man
96
calc.man
@@ -15,8 +15,8 @@
|
|||||||
.\" 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.
|
.\" 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||||
.\"
|
.\"
|
||||||
.\" @(#) $Revision: 29.5 $
|
.\" @(#) $Revision: 29.7 $
|
||||||
.\" @(#) $Id: calc.man,v 29.5 2000/06/07 14:02:13 chongo Exp $
|
.\" @(#) $Id: calc.man,v 29.7 2001/06/01 11:26:53 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
|
||||||
@@ -36,20 +36,21 @@ calc \- arbitrary precision calculator
|
|||||||
.RB [ \-c ]
|
.RB [ \-c ]
|
||||||
.RB [ \-C ]
|
.RB [ \-C ]
|
||||||
.RB [ \-d ]
|
.RB [ \-d ]
|
||||||
.RB [ -D\ \&calc_debug[:resource_debug[:user_debug]] ]
|
|
||||||
.br
|
.br
|
||||||
.in +5n
|
.in +5n
|
||||||
|
.RB [ -D\ \&calc_debug[:resource_debug[:user_debug]] ]
|
||||||
|
.br
|
||||||
.RB [ \-e ]
|
.RB [ \-e ]
|
||||||
.RB [ \-h ]
|
.RB [ \-h ]
|
||||||
.RB [ \-i ]
|
.RB [ \-i ]
|
||||||
.RB [ \-m\ \&mode ]
|
.RB [ \-m\ \&mode ]
|
||||||
.RB [ \-n ]
|
.RB [ \-n ]
|
||||||
|
.br
|
||||||
.RB [ \-p ]
|
.RB [ \-p ]
|
||||||
.RB [ \-q ]
|
.RB [ \-q ]
|
||||||
.RB [ \-s ]
|
.RB [ \-s ]
|
||||||
.RB [ \-u ]
|
.RB [ \-u ]
|
||||||
.RB [ \-v ]
|
.RB [ \-v ]
|
||||||
.br
|
|
||||||
.RB [ calc_cmd\ \&.\|.\|. ]
|
.RB [ calc_cmd\ \&.\|.\|. ]
|
||||||
.in -5n
|
.in -5n
|
||||||
.sp
|
.sp
|
||||||
@@ -993,25 +994,58 @@ Copyright (C) 1999 Landon Curt Noll
|
|||||||
and is covered under version 2.1 GNU Lesser General
|
and is covered under version 2.1 GNU Lesser General
|
||||||
Public License.
|
Public License.
|
||||||
.sp
|
.sp
|
||||||
.SH "BUG REPORTS / BUG FIXES / ENHANCEMENTS"
|
.SH "CALC MAILING LIST / CALC UPDATES / ENHANCEMENTS"
|
||||||
\&
|
\&
|
||||||
.br
|
.br
|
||||||
.sp
|
.sp
|
||||||
Send comments, suggestions, bug fixes, enhancements
|
To contribute comments, suggestions, enhancements
|
||||||
and interesting
|
and interesting
|
||||||
.B calc
|
.B calc
|
||||||
resource files,
|
resource files, and
|
||||||
.B calc
|
shell scripts please join the low volume calc mailing list.
|
||||||
shell scripts that you would like you see included
|
.sp
|
||||||
in future distributions to:
|
To join the low volume calc mailing list, send EMail to:
|
||||||
.sp
|
.sp
|
||||||
.in +0.5i
|
.in +0.5i
|
||||||
.nf
|
.nf
|
||||||
calc-contrib at asthe dot com
|
calc-tester-request at asthe dot com
|
||||||
.fi
|
.fi
|
||||||
.in -0.5i
|
.in -0.5i
|
||||||
.sp
|
.sp
|
||||||
Bug reports are sent to:
|
Your subject must contain the words:
|
||||||
|
.sp
|
||||||
|
.in +0.5i
|
||||||
|
.nf
|
||||||
|
calc mailing list subscription
|
||||||
|
.fi
|
||||||
|
.in -0.5i
|
||||||
|
.sp
|
||||||
|
You may have additional words in your subject line.
|
||||||
|
.sp
|
||||||
|
Your message body must contain:
|
||||||
|
.sp
|
||||||
|
.in +0.5i
|
||||||
|
.nf
|
||||||
|
subscribe calc-tester address
|
||||||
|
end
|
||||||
|
name your_full_name
|
||||||
|
.fi
|
||||||
|
.in -0.5i
|
||||||
|
.sp
|
||||||
|
where
|
||||||
|
.B address
|
||||||
|
s your EMail address and
|
||||||
|
.B your_full_name
|
||||||
|
is your full name.
|
||||||
|
Feel free to follow the
|
||||||
|
.B name
|
||||||
|
line with additional EMail text as desired.
|
||||||
|
.sp
|
||||||
|
.SH "BUG REPORTS / BUG FIXES"
|
||||||
|
\&
|
||||||
|
.br
|
||||||
|
.sp
|
||||||
|
Send bug reports and bug fixes to:
|
||||||
.sp
|
.sp
|
||||||
.in +0.5i
|
.in +0.5i
|
||||||
.nf
|
.nf
|
||||||
@@ -1022,6 +1056,16 @@ calc-bugs at asthe dot com
|
|||||||
.fi
|
.fi
|
||||||
.in -0.5i
|
.in -0.5i
|
||||||
.sp
|
.sp
|
||||||
|
Your subject must contain the words:
|
||||||
|
.sp
|
||||||
|
.in +0.5i
|
||||||
|
.nf
|
||||||
|
calc bug report
|
||||||
|
.fi
|
||||||
|
.in -0.5i
|
||||||
|
.sp
|
||||||
|
You may have additional words in your subject line.
|
||||||
|
.sp
|
||||||
See the
|
See the
|
||||||
.I BUGS
|
.I BUGS
|
||||||
source file or use the
|
source file or use the
|
||||||
@@ -1036,7 +1080,7 @@ help bugs
|
|||||||
.sp
|
.sp
|
||||||
for more information about bug reporting.
|
for more information about bug reporting.
|
||||||
.sp
|
.sp
|
||||||
.SH "CALC WEB SITE / MAILING LIST"
|
.SH "CALC WEB SITE"
|
||||||
\&
|
\&
|
||||||
.br
|
.br
|
||||||
Landon Noll maintains the the
|
Landon Noll maintains the the
|
||||||
@@ -1047,30 +1091,4 @@ web site is located at:
|
|||||||
http://www.isthe.com/chongo/tech/comp/calc/
|
http://www.isthe.com/chongo/tech/comp/calc/
|
||||||
.in -0.5i
|
.in -0.5i
|
||||||
.sp
|
.sp
|
||||||
One may join the
|
|
||||||
.B calc
|
|
||||||
testing group by sending a request to:
|
|
||||||
.sp
|
|
||||||
.in +0.5i
|
|
||||||
.nf
|
|
||||||
calc-tester-request at asthe dot com
|
|
||||||
|
|
||||||
[[ NOTE: Replace 'at' with @, 'dot' is with . and remove the spaces ]]
|
|
||||||
[[ NOTE: The EMail address uses 'asthe' and the web site URL uses 'isthe' ]]
|
|
||||||
.fi
|
|
||||||
.in -0.5i
|
|
||||||
.sp
|
|
||||||
Your message body (not the subject) should consist of:
|
|
||||||
.sp
|
|
||||||
.in +0.5i
|
|
||||||
.nf
|
|
||||||
subscribe calc-tester address
|
|
||||||
end
|
|
||||||
name your_full_name
|
|
||||||
.fi
|
|
||||||
.in -0.5i
|
|
||||||
.sp
|
|
||||||
where "address" is your EMail address and "your_full_name"
|
|
||||||
is your full name.
|
|
||||||
.sp
|
|
||||||
Share and Enjoy! :\-)
|
Share and Enjoy! :\-)
|
||||||
|
@@ -17,8 +17,8 @@
|
|||||||
# 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.
|
# 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||||
#
|
#
|
||||||
# @(#) $Revision: 29.3 $
|
# @(#) $Revision: 29.4 $
|
||||||
# @(#) $Id: calcerr.tbl,v 29.3 2000/07/17 15:35:49 chongo Exp $
|
# @(#) $Id: calcerr.tbl,v 29.4 2001/04/10 22:06: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
|
||||||
@@ -108,8 +108,8 @@ E_FGETSTR1 Non-file first argument for fgetstr
|
|||||||
E_FGETSTR2 File not open for reading for fgetstr
|
E_FGETSTR2 File not open for reading for fgetstr
|
||||||
E_FGETLINE1 Non-file argument for fgetline
|
E_FGETLINE1 Non-file argument for fgetline
|
||||||
E_FGETLINE2 File not open for reading for fgetline
|
E_FGETLINE2 File not open for reading for fgetline
|
||||||
E_FGETWORD1 Non-file argument for fgetword
|
E_FGETFIELD1 Non-file argument for fgetfield
|
||||||
E_FGETWORD2 File not open for reading for fgetword
|
E_FGETFIELD2 File not open for reading for fgetfield
|
||||||
E_REWIND1 Non-file argument for rewind
|
E_REWIND1 Non-file argument for rewind
|
||||||
E_FILES Non-integer argument for files
|
E_FILES Non-integer argument for files
|
||||||
E_PRINTF1 Non-string fmt argument for fprint
|
E_PRINTF1 Non-string fmt argument for fprint
|
||||||
|
10
cmath.h
10
cmath.h
@@ -17,8 +17,8 @@
|
|||||||
* 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.
|
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||||
*
|
*
|
||||||
* @(#) $Revision: 29.3 $
|
* @(#) $Revision: 29.5 $
|
||||||
* @(#) $Id: cmath.h,v 29.3 2000/07/17 15:35:49 chongo Exp $
|
* @(#) $Id: cmath.h,v 29.5 2001/06/08 21:00:58 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
|
||||||
@@ -32,7 +32,11 @@
|
|||||||
#define __CMATH_H__
|
#define __CMATH_H__
|
||||||
|
|
||||||
|
|
||||||
#include "qmath.h"
|
#if defined(CALC_SRC) /* if we are building from the calc source tree */
|
||||||
|
# include "qmath.h"
|
||||||
|
#else
|
||||||
|
# include <calc/qmath.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
20
codegen.c
20
codegen.c
@@ -19,8 +19,8 @@
|
|||||||
* 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.
|
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||||
*
|
*
|
||||||
* @(#) $Revision: 29.4 $
|
* @(#) $Revision: 29.6 $
|
||||||
* @(#) $Id: codegen.c,v 29.4 2001/03/17 21:31:47 chongo Exp $
|
* @(#) $Id: codegen.c,v 29.6 2001/05/08 06:29:24 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
|
||||||
@@ -127,6 +127,7 @@ getcommands(BOOL toplevel)
|
|||||||
if (!toplevel)
|
if (!toplevel)
|
||||||
enterfilescope();
|
enterfilescope();
|
||||||
for (;;) {
|
for (;;) {
|
||||||
|
int i;
|
||||||
(void) tokenmode(TM_NEWLINES);
|
(void) tokenmode(TM_NEWLINES);
|
||||||
switch (gettoken()) {
|
switch (gettoken()) {
|
||||||
|
|
||||||
@@ -144,10 +145,14 @@ getcommands(BOOL toplevel)
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
case T_HELP:
|
case T_HELP:
|
||||||
for (;;) {
|
for (i=1;;i++) {
|
||||||
switch(getfilename(name, NULL)) {
|
switch(getfilename(name, NULL)) {
|
||||||
case 1:
|
case -1:
|
||||||
strcpy(name, DEFAULTCALCHELP);
|
if(i == 1) {
|
||||||
|
strcpy(name, DEFAULTCALCHELP);
|
||||||
|
givehelp(name);
|
||||||
|
}
|
||||||
|
break;
|
||||||
case 0:
|
case 0:
|
||||||
givehelp(name);
|
givehelp(name);
|
||||||
continue;
|
continue;
|
||||||
@@ -522,9 +527,10 @@ getsimpledeclaration(int symtype)
|
|||||||
switch (gettoken()) {
|
switch (gettoken()) {
|
||||||
case T_SYMBOL:
|
case T_SYMBOL:
|
||||||
rescantoken();
|
rescantoken();
|
||||||
res = getonevariable(symtype);
|
if (getonevariable(symtype)) {
|
||||||
if (res)
|
res = 1;
|
||||||
addop(OP_POP);
|
addop(OP_POP);
|
||||||
|
}
|
||||||
continue;
|
continue;
|
||||||
case T_COMMA:
|
case T_COMMA:
|
||||||
continue;
|
continue;
|
||||||
|
8
config.c
8
config.c
@@ -19,8 +19,8 @@
|
|||||||
* 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.
|
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||||
*
|
*
|
||||||
* @(#) $Revision: 29.6 $
|
* @(#) $Revision: 29.7 $
|
||||||
* @(#) $Id: config.c,v 29.6 2001/04/08 10:07:19 chongo Exp $
|
* @(#) $Id: config.c,v 29.7 2001/04/25 07:15:22 chongo Exp $
|
||||||
* @(#) $Source: /usr/local/src/cmd/calc/RCS/config.c,v $
|
* @(#) $Source: /usr/local/src/cmd/calc/RCS/config.c,v $
|
||||||
*
|
*
|
||||||
* Under source code control: 1991/07/20 00:21:56
|
* Under source code control: 1991/07/20 00:21:56
|
||||||
@@ -133,7 +133,7 @@ CONFIG oldstd = { /* backward compatible standard configuration */
|
|||||||
0, /* internal calc debug level */
|
0, /* internal calc debug level */
|
||||||
3, /* calc resource file debug level */
|
3, /* calc resource file debug level */
|
||||||
0, /* user defined debug level */
|
0, /* user defined debug level */
|
||||||
TRUE, /* print Quit or abort executed messages */
|
FALSE, /* print Quit or abort executed messages */
|
||||||
CTRL_D_VIRGIN_EOF, /* ^D only exits on virgin lines */
|
CTRL_D_VIRGIN_EOF, /* ^D only exits on virgin lines */
|
||||||
NULL, /* our name */
|
NULL, /* our name */
|
||||||
NULL, /* basename of our name */
|
NULL, /* basename of our name */
|
||||||
@@ -178,7 +178,7 @@ CONFIG newstd = { /* new non-backward compatible configuration */
|
|||||||
0, /* internal calc debug level */
|
0, /* internal calc debug level */
|
||||||
3, /* calc resource file debug level */
|
3, /* calc resource file debug level */
|
||||||
0, /* user defined debug level */
|
0, /* user defined debug level */
|
||||||
TRUE, /* print Quit or abort executed messages */
|
FALSE, /* print Quit or abort executed messages */
|
||||||
CTRL_D_VIRGIN_EOF, /* ^D only exits on virgin lines */
|
CTRL_D_VIRGIN_EOF, /* ^D only exits on virgin lines */
|
||||||
NULL, /* our name */
|
NULL, /* our name */
|
||||||
NULL, /* basename of our name */
|
NULL, /* basename of our name */
|
||||||
|
19
config.h
19
config.h
@@ -19,8 +19,8 @@
|
|||||||
* 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.
|
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||||
*
|
*
|
||||||
* @(#) $Revision: 29.8 $
|
* @(#) $Revision: 29.11 $
|
||||||
* @(#) $Id: config.h,v 29.8 2001/04/08 09:08:57 chongo Exp $
|
* @(#) $Id: config.h,v 29.11 2001/06/08 21:00:58 chongo Exp $
|
||||||
* @(#) $Source: /usr/local/src/cmd/calc/RCS/config.h,v $
|
* @(#) $Source: /usr/local/src/cmd/calc/RCS/config.h,v $
|
||||||
*
|
*
|
||||||
* Under source code control: 1995/11/01 22:20:17
|
* Under source code control: 1995/11/01 22:20:17
|
||||||
@@ -35,9 +35,15 @@
|
|||||||
#define __CONFIG_H__
|
#define __CONFIG_H__
|
||||||
|
|
||||||
|
|
||||||
#include "win32dll.h"
|
#if defined(CALC_SRC) /* if we are building from the calc source tree */
|
||||||
#include "nametype.h"
|
# include "win32dll.h"
|
||||||
#include "qmath.h"
|
# include "nametype.h"
|
||||||
|
# include "qmath.h"
|
||||||
|
#else
|
||||||
|
# include <calc/win32dll.h>
|
||||||
|
# include <calc/nametype.h>
|
||||||
|
# include <calc/qmath.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -173,7 +179,8 @@ typedef struct config CONFIG;
|
|||||||
#define CALCDBG_BLOCK (0x00000008) /* block debug */
|
#define CALCDBG_BLOCK (0x00000008) /* block debug */
|
||||||
#define CALCDBG_TTY (0x00000010) /* report TTY state changes */
|
#define CALCDBG_TTY (0x00000010) /* report TTY state changes */
|
||||||
#define CALCDBG_RUNSTATE (0x00000020) /* report run_state changes */
|
#define CALCDBG_RUNSTATE (0x00000020) /* report run_state changes */
|
||||||
#define CALCDBG_MASK (0x0000003f)
|
#define CALCDBG_RAND (0x00000040) /* report rand() activity */
|
||||||
|
#define CALCDBG_MASK (0x0000007f)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* ctrl-d meanings
|
* ctrl-d meanings
|
||||||
|
320
cscript/4dsphere.calc
Normal file
320
cscript/4dsphere.calc
Normal file
@@ -0,0 +1,320 @@
|
|||||||
|
#!/usr/local/src/cmd/calc/calc -q -s -f
|
||||||
|
/*
|
||||||
|
* 4dsphere - determine if 6 points lie on the surface of a sphere in R^4
|
||||||
|
*
|
||||||
|
* usage:
|
||||||
|
* 4dsphere x0 y0 z0 w0 x1 y1 z1 w1 ... x5 y5 z5 w5
|
||||||
|
*
|
||||||
|
* x0 y0 z0 w0 point 0 in R^4
|
||||||
|
* x1 y1 z1 w1 point 1 in R^4
|
||||||
|
* ... ...
|
||||||
|
* x5 y5 z5 w5 point 5 in R^4
|
||||||
|
*
|
||||||
|
* Copyright (C) 2001 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.
|
||||||
|
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||||
|
*
|
||||||
|
* @(#) $Revision: 1.3 $
|
||||||
|
* @(#) $Id: 4dsphere.calc,v 1.3 2001/06/06 09:06:29 chongo Exp $
|
||||||
|
* @(#) $Source: /usr/local/src/cmd/calc/cscript/RCS/4dsphere.calc,v $
|
||||||
|
*
|
||||||
|
* Under source code control: 2001/05/03 19:02:03
|
||||||
|
* File existed as early as: 2001
|
||||||
|
*
|
||||||
|
* chongo <was here> /\oo/\ http://www.isthe.com/chongo/
|
||||||
|
* Share and enjoy! :-) http://www.isthe.com/chongo/tech/comp/calc/
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* parse args
|
||||||
|
*/
|
||||||
|
argc = argv();
|
||||||
|
if (argc != 25) {
|
||||||
|
fprintf(files(2), "usage: %s x0 y0 z0 w0 x1 y1 z1 w1 ... x5 y5 z5 w5\n",
|
||||||
|
argv(0));
|
||||||
|
exit;
|
||||||
|
}
|
||||||
|
x0 = eval(argv(1));
|
||||||
|
y0 = eval(argv(2));
|
||||||
|
z0 = eval(argv(3));
|
||||||
|
w0 = eval(argv(4));
|
||||||
|
x1 = eval(argv(5));
|
||||||
|
y1 = eval(argv(6));
|
||||||
|
z1 = eval(argv(7));
|
||||||
|
w1 = eval(argv(8));
|
||||||
|
x2 = eval(argv(9));
|
||||||
|
y2 = eval(argv(10));
|
||||||
|
z2 = eval(argv(11));
|
||||||
|
w2 = eval(argv(12));
|
||||||
|
x3 = eval(argv(13));
|
||||||
|
y3 = eval(argv(14));
|
||||||
|
z3 = eval(argv(15));
|
||||||
|
w3 = eval(argv(16));
|
||||||
|
x4 = eval(argv(17));
|
||||||
|
y4 = eval(argv(18));
|
||||||
|
z4 = eval(argv(19));
|
||||||
|
w4 = eval(argv(20));
|
||||||
|
x5 = eval(argv(21));
|
||||||
|
y5 = eval(argv(22));
|
||||||
|
z5 = eval(argv(23));
|
||||||
|
w5 = eval(argv(24));
|
||||||
|
|
||||||
|
/*
|
||||||
|
* verbose output setup
|
||||||
|
*/
|
||||||
|
print "(":x0:",":y0:",":z0:",":w0:") ":;
|
||||||
|
print "(":x1:",":y1:",":z1:",":w1:") ":;
|
||||||
|
print "(":x2:",":y2:",":z2:",":w2:") ":;
|
||||||
|
print "(":x3:",":y3:",":z3:",":w3:") ":;
|
||||||
|
print "(":x4:",":y4:",":z4:",":w4:") ":;
|
||||||
|
print "(":x5:",":y5:",":z5:",":w5:") ":;
|
||||||
|
|
||||||
|
/*
|
||||||
|
*
|
||||||
|
* Given the 5 points:
|
||||||
|
*
|
||||||
|
* (x0,y1,z1,w1)
|
||||||
|
* (x1,y1,z1,w1)
|
||||||
|
* (x2,y2,z2,w2)
|
||||||
|
* (x3,y3,z3,w3)
|
||||||
|
* (x4,y4,z4,w4)
|
||||||
|
* (x5,y5,z5,w5)
|
||||||
|
*
|
||||||
|
* we can determine if they lie in the surface of 4D sphere in R^4 if the
|
||||||
|
* following matrix is 0:
|
||||||
|
*
|
||||||
|
* | x0^2+y0^2+z0^2+w0^2 x0 y0 z0 w0 1 |
|
||||||
|
* | x1^2+y1^2+z1^2+w1^2 x1 y1 z1 w1 1 |
|
||||||
|
* | x2^2+y2^2+z2^2+w2^2 x2 y2 z2 w2 1 | = 0
|
||||||
|
* | x3^2+y3^2+z3^2+w3^2 x3 y3 z3 w3 1 |
|
||||||
|
* | x4^2+y4^2+z4^2+w4^2 x4 y4 z4 w4 1 |
|
||||||
|
* | x5^2+y5^2+z5^2+w5^2 x5 y5 z5 w5 1 |
|
||||||
|
*/
|
||||||
|
if ((w0*(-x1*(-y2*(-z4*(z5^2+y5^2+x5^2+w5^2)
|
||||||
|
-z3*(-z5^2+z4^2-y5^2+y4^2-x5^2+x4^2-w5^2+w4^2) +
|
||||||
|
(z4^2+y4^2+x4^2+w4^2)*z5+ (z3^2+y3^2+x3^2+w3^2)*(z4-z5))
|
||||||
|
+y3*((z4^2+y4^2+x4^2+w4^2)*z5-z4*(z5^2+y5^2+x5^2+w5^2))
|
||||||
|
+z2*(-y4*(z5^2+y5^2+x5^2+w5^2)
|
||||||
|
-y3*(-z5^2+z4^2-y5^2+y4^2-x5^2+x4^2-w5^2+w4^2)
|
||||||
|
+y5*(z4^2+y4^2+x4^2+w4^2) + (y4-y5)*(z3^2+y3^2+x3^2+w3^2))
|
||||||
|
-z3*(y5*(z4^2+y4^2+x4^2+w4^2) -y4*(z5^2+y5^2+x5^2+w5^2)) +
|
||||||
|
(z2^2+y2^2+x2^2+w2^2)*(y4*z5+y3*(z4-z5) -y5*z4- (y4-y5)*z3) -
|
||||||
|
(z3^2+y3^2+x3^2+w3^2)*(y4*z5-y5*z4)) +y1*(-x2*(-z4*(z5^2+y5^2+x5^2+w5^2)
|
||||||
|
-z3*(-z5^2+z4^2-y5^2+y4^2-x5^2+x4^2-w5^2+w4^2) +
|
||||||
|
(z4^2+y4^2+x4^2+w4^2)*z5+ (z3^2+y3^2+x3^2+w3^2)*(z4-z5))
|
||||||
|
+x3*((z4^2+y4^2+x4^2+w4^2)*z5-z4*(z5^2+y5^2+x5^2+w5^2))
|
||||||
|
+z2*(-x4*(z5^2+y5^2+x5^2+w5^2)
|
||||||
|
-x3*(-z5^2+z4^2-y5^2+y4^2-x5^2+x4^2-w5^2+w4^2) +x5*(z4^2+y4^2+x4^2+w4^2)
|
||||||
|
+ (x4-x5)*(z3^2+y3^2+x3^2+w3^2)) -z3*(x5*(z4^2+y4^2+x4^2+w4^2)
|
||||||
|
-x4*(z5^2+y5^2+x5^2+w5^2)) + (z2^2+y2^2+x2^2+w2^2)*(x4*z5+x3*(z4-z5)
|
||||||
|
-x5*z4- (x4-x5)*z3) - (z3^2+y3^2+x3^2+w3^2)*(x4*z5-x5*z4))
|
||||||
|
-x2*(-y3*((z4^2+y4^2+x4^2+w4^2)*z5-z4*(z5^2+y5^2+x5^2+w5^2))
|
||||||
|
+z3*(y5*(z4^2+y4^2+x4^2+w4^2) -y4*(z5^2+y5^2+x5^2+w5^2))
|
||||||
|
+ (z3^2+y3^2+x3^2+w3^2)*(y4*z5-y5*z4))
|
||||||
|
+y2*(-x3*((z4^2+y4^2+x4^2+w4^2)*z5-z4*(z5^2+y5^2+x5^2+w5^2))
|
||||||
|
+z3*(x5*(z4^2+y4^2+x4^2+w4^2) -x4*(z5^2+y5^2+x5^2+w5^2)) +
|
||||||
|
(z3^2+y3^2+x3^2+w3^2)*(x4*z5-x5*z4)) -z1*(-x2*(-y4*(z5^2+y5^2+x5^2+w5^2)
|
||||||
|
-y3*(-z5^2+z4^2-y5^2+y4^2-x5^2+x4^2-w5^2+w4^2) +y5*(z4^2+y4^2+x4^2+w4^2)
|
||||||
|
+ (y4-y5)*(z3^2+y3^2+x3^2+w3^2)) +x3*(y5*(z4^2+y4^2+x4^2+w4^2)
|
||||||
|
-y4*(z5^2+y5^2+x5^2+w5^2)) +y2*(-x4*(z5^2+y5^2+x5^2+w5^2)
|
||||||
|
-x3*(-z5^2+z4^2-y5^2+y4^2-x5^2+x4^2-w5^2+w4^2)
|
||||||
|
+x5*(z4^2+y4^2+x4^2+w4^2) + (x4-x5)*(z3^2+y3^2+x3^2+w3^2))
|
||||||
|
-y3*(x5*(z4^2+y4^2+x4^2+w4^2) -x4*(z5^2+y5^2+x5^2+w5^2)) -
|
||||||
|
(x4*y5-x5*y4)*(z3^2+y3^2+x3^2+w3^2) + (x4*y5+x3*(y4-y5) -x5*y4-
|
||||||
|
(x4-x5)*y3)*(z2^2+y2^2+x2^2+w2^2)) -z2*(-x3*(y5*(z4^2+y4^2+x4^2+w4^2)
|
||||||
|
-y4*(z5^2+y5^2+x5^2+w5^2)) +y3*(x5*(z4^2+y4^2+x4^2+w4^2)
|
||||||
|
-x4*(z5^2+y5^2+x5^2+w5^2)) + (x4*y5-x5*y4)*(z3^2+y3^2+x3^2+w3^2))
|
||||||
|
+ (z1^2+y1^2+x1^2+w1^2)*(x2*(y4*z5+y3*(z4-z5) -y5*z4-
|
||||||
|
(y4-y5)*z3) -x3*(y4*z5-y5*z4) -y2*(x4*z5+x3*(z4-z5) -x5*z4-
|
||||||
|
(x4-x5)*z3) +y3*(x4*z5-x5*z4) - (x4*y5-x5*y4)*z3+
|
||||||
|
(x4*y5+x3*(y4-y5) -x5*y4- (x4-x5)*y3)*z2) +
|
||||||
|
(z2^2+y2^2+x2^2+w2^2)*(x3*(y4*z5-y5*z4) -y3*(x4*z5-x5*z4) +
|
||||||
|
(x4*y5-x5*y4)*z3)) -x0*(-w1*(-y2*(-z4*(z5^2+y5^2+x5^2+w5^2)
|
||||||
|
-z3*(-z5^2+z4^2-y5^2+y4^2-x5^2+x4^2-w5^2+w4^2) +
|
||||||
|
(z4^2+y4^2+x4^2+w4^2)*z5+ (z3^2+y3^2+x3^2+w3^2)*(z4-z5))
|
||||||
|
+y3*((z4^2+y4^2+x4^2+w4^2)*z5-z4*(z5^2+y5^2+x5^2+w5^2))
|
||||||
|
+z2*(-y4*(z5^2+y5^2+x5^2+w5^2)
|
||||||
|
-y3*(-z5^2+z4^2-y5^2+y4^2-x5^2+x4^2-w5^2+w4^2)
|
||||||
|
+y5*(z4^2+y4^2+x4^2+w4^2) + (y4-y5)*(z3^2+y3^2+x3^2+w3^2))
|
||||||
|
-z3*(y5*(z4^2+y4^2+x4^2+w4^2) -y4*(z5^2+y5^2+x5^2+w5^2)) +
|
||||||
|
(z2^2+y2^2+x2^2+w2^2)*(y4*z5+y3*(z4-z5) -y5*z4- (y4-y5)*z3) -
|
||||||
|
(z3^2+y3^2+x3^2+w3^2)*(y4*z5-y5*z4)) -y1*(w2*(-z4*(z5^2+y5^2+x5^2+w5^2)
|
||||||
|
-z3*(-z5^2+z4^2-y5^2+y4^2-x5^2+x4^2-w5^2+w4^2) +
|
||||||
|
(z4^2+y4^2+x4^2+w4^2)*z5+ (z3^2+y3^2+x3^2+w3^2)*(z4-z5))
|
||||||
|
-w3*((z4^2+y4^2+x4^2+w4^2)*z5-z4*(z5^2+y5^2+x5^2+w5^2))
|
||||||
|
-z2*(-w4*(z5^2+y5^2+x5^2+w5^2)
|
||||||
|
-w3*(-z5^2+z4^2-y5^2+y4^2-x5^2+x4^2-w5^2+w4^2) +w5*(z4^2+y4^2+x4^2+w4^2)
|
||||||
|
+ (w4-w5)*(z3^2+y3^2+x3^2+w3^2)) +z3*(w5*(z4^2+y4^2+x4^2+w4^2)
|
||||||
|
-w4*(z5^2+y5^2+x5^2+w5^2)) + (z2^2+y2^2+x2^2+w2^2)*(-w4*z5-w3*(z4-z5)
|
||||||
|
+w5*z4+ (w4-w5)*z3) - (z3^2+y3^2+x3^2+w3^2)*(w5*z4-w4*z5))
|
||||||
|
-w2*(-y3*((z4^2+y4^2+x4^2+w4^2)*z5-z4*(z5^2+y5^2+x5^2+w5^2))
|
||||||
|
+z3*(y5*(z4^2+y4^2+x4^2+w4^2) -y4*(z5^2+y5^2+x5^2+w5^2))
|
||||||
|
+ (z3^2+y3^2+x3^2+w3^2)*(y4*z5-y5*z4))
|
||||||
|
-y2*(w3*((z4^2+y4^2+x4^2+w4^2)*z5-z4*(z5^2+y5^2+x5^2+w5^2))
|
||||||
|
-z3*(w5*(z4^2+y4^2+x4^2+w4^2) -w4*(z5^2+y5^2+x5^2+w5^2)) +
|
||||||
|
(z3^2+y3^2+x3^2+w3^2)*(w5*z4-w4*z5)) +z1*(w2*(-y4*(z5^2+y5^2+x5^2+w5^2)
|
||||||
|
-y3*(-z5^2+z4^2-y5^2+y4^2-x5^2+x4^2-w5^2+w4^2) +y5*(z4^2+y4^2+x4^2+w4^2)
|
||||||
|
+ (y4-y5)*(z3^2+y3^2+x3^2+w3^2)) -w3*(y5*(z4^2+y4^2+x4^2+w4^2)
|
||||||
|
-y4*(z5^2+y5^2+x5^2+w5^2)) -y2*(-w4*(z5^2+y5^2+x5^2+w5^2)
|
||||||
|
-w3*(-z5^2+z4^2-y5^2+y4^2-x5^2+x4^2-w5^2+w4^2)
|
||||||
|
+w5*(z4^2+y4^2+x4^2+w4^2) + (w4-w5)*(z3^2+y3^2+x3^2+w3^2))
|
||||||
|
+y3*(w5*(z4^2+y4^2+x4^2+w4^2) -w4*(z5^2+y5^2+x5^2+w5^2)) -
|
||||||
|
(w5*y4-w4*y5)*(z3^2+y3^2+x3^2+w3^2) + (-w4*y5-w3*(y4-y5) +w5*y4+
|
||||||
|
(w4-w5)*y3)*(z2^2+y2^2+x2^2+w2^2)) +z2*(w3*(y5*(z4^2+y4^2+x4^2+w4^2)
|
||||||
|
-y4*(z5^2+y5^2+x5^2+w5^2)) -y3*(w5*(z4^2+y4^2+x4^2+w4^2)
|
||||||
|
-w4*(z5^2+y5^2+x5^2+w5^2)) + (w5*y4-w4*y5)*(z3^2+y3^2+x3^2+w3^2))
|
||||||
|
+ (z1^2+y1^2+x1^2+w1^2)*(w2*(y4*z5+y3*(z4-z5) -y5*z4-
|
||||||
|
(y4-y5)*z3) -w3*(y4*z5-y5*z4) +y2*(-w4*z5-w3*(z4-z5)
|
||||||
|
+w5*z4+ (w4-w5)*z3) -y3*(w5*z4-w4*z5) + (w5*y4-w4*y5)*z3-
|
||||||
|
(-w4*y5-w3*(y4-y5) +w5*y4+ (w4-w5)*y3)*z2) +
|
||||||
|
(z2^2+y2^2+x2^2+w2^2)*(w3*(y4*z5-y5*z4) +y3*(w5*z4-w4*z5) -
|
||||||
|
(w5*y4-w4*y5)*z3)) +y0*(-w1*(-x2*(-z4*(z5^2+y5^2+x5^2+w5^2)
|
||||||
|
-z3*(-z5^2+z4^2-y5^2+y4^2-x5^2+x4^2-w5^2+w4^2) +
|
||||||
|
(z4^2+y4^2+x4^2+w4^2)*z5+ (z3^2+y3^2+x3^2+w3^2)*(z4-z5))
|
||||||
|
+x3*((z4^2+y4^2+x4^2+w4^2)*z5-z4*(z5^2+y5^2+x5^2+w5^2))
|
||||||
|
+z2*(-x4*(z5^2+y5^2+x5^2+w5^2)
|
||||||
|
-x3*(-z5^2+z4^2-y5^2+y4^2-x5^2+x4^2-w5^2+w4^2)
|
||||||
|
+x5*(z4^2+y4^2+x4^2+w4^2) + (x4-x5)*(z3^2+y3^2+x3^2+w3^2))
|
||||||
|
-z3*(x5*(z4^2+y4^2+x4^2+w4^2) -x4*(z5^2+y5^2+x5^2+w5^2)) +
|
||||||
|
(z2^2+y2^2+x2^2+w2^2)*(x4*z5+x3*(z4-z5) -x5*z4- (x4-x5)*z3) -
|
||||||
|
(z3^2+y3^2+x3^2+w3^2)*(x4*z5-x5*z4)) -x1*(w2*(-z4*(z5^2+y5^2+x5^2+w5^2)
|
||||||
|
-z3*(-z5^2+z4^2-y5^2+y4^2-x5^2+x4^2-w5^2+w4^2) +
|
||||||
|
(z4^2+y4^2+x4^2+w4^2)*z5+ (z3^2+y3^2+x3^2+w3^2)*(z4-z5))
|
||||||
|
-w3*((z4^2+y4^2+x4^2+w4^2)*z5-z4*(z5^2+y5^2+x5^2+w5^2))
|
||||||
|
-z2*(-w4*(z5^2+y5^2+x5^2+w5^2)
|
||||||
|
-w3*(-z5^2+z4^2-y5^2+y4^2-x5^2+x4^2-w5^2+w4^2) +w5*(z4^2+y4^2+x4^2+w4^2)
|
||||||
|
+ (w4-w5)*(z3^2+y3^2+x3^2+w3^2)) +z3*(w5*(z4^2+y4^2+x4^2+w4^2)
|
||||||
|
-w4*(z5^2+y5^2+x5^2+w5^2)) + (z2^2+y2^2+x2^2+w2^2)*(-w4*z5-w3*(z4-z5)
|
||||||
|
+w5*z4+ (w4-w5)*z3) - (z3^2+y3^2+x3^2+w3^2)*(w5*z4-w4*z5))
|
||||||
|
-w2*(-x3*((z4^2+y4^2+x4^2+w4^2)*z5-z4*(z5^2+y5^2+x5^2+w5^2))
|
||||||
|
+z3*(x5*(z4^2+y4^2+x4^2+w4^2) -x4*(z5^2+y5^2+x5^2+w5^2))
|
||||||
|
+ (z3^2+y3^2+x3^2+w3^2)*(x4*z5-x5*z4))
|
||||||
|
-x2*(w3*((z4^2+y4^2+x4^2+w4^2)*z5-z4*(z5^2+y5^2+x5^2+w5^2))
|
||||||
|
-z3*(w5*(z4^2+y4^2+x4^2+w4^2) -w4*(z5^2+y5^2+x5^2+w5^2)) +
|
||||||
|
(z3^2+y3^2+x3^2+w3^2)*(w5*z4-w4*z5)) +z1*(w2*(-x4*(z5^2+y5^2+x5^2+w5^2)
|
||||||
|
-x3*(-z5^2+z4^2-y5^2+y4^2-x5^2+x4^2-w5^2+w4^2) +x5*(z4^2+y4^2+x4^2+w4^2)
|
||||||
|
+ (x4-x5)*(z3^2+y3^2+x3^2+w3^2)) -w3*(x5*(z4^2+y4^2+x4^2+w4^2)
|
||||||
|
-x4*(z5^2+y5^2+x5^2+w5^2)) -x2*(-w4*(z5^2+y5^2+x5^2+w5^2)
|
||||||
|
-w3*(-z5^2+z4^2-y5^2+y4^2-x5^2+x4^2-w5^2+w4^2)
|
||||||
|
+w5*(z4^2+y4^2+x4^2+w4^2) + (w4-w5)*(z3^2+y3^2+x3^2+w3^2))
|
||||||
|
+x3*(w5*(z4^2+y4^2+x4^2+w4^2) -w4*(z5^2+y5^2+x5^2+w5^2)) -
|
||||||
|
(w5*x4-w4*x5)*(z3^2+y3^2+x3^2+w3^2) + (-w4*x5-w3*(x4-x5) +w5*x4+
|
||||||
|
(w4-w5)*x3)*(z2^2+y2^2+x2^2+w2^2)) +z2*(w3*(x5*(z4^2+y4^2+x4^2+w4^2)
|
||||||
|
-x4*(z5^2+y5^2+x5^2+w5^2)) -x3*(w5*(z4^2+y4^2+x4^2+w4^2)
|
||||||
|
-w4*(z5^2+y5^2+x5^2+w5^2)) + (w5*x4-w4*x5)*(z3^2+y3^2+x3^2+w3^2)) +
|
||||||
|
(z1^2+y1^2+x1^2+w1^2)*(w2*(x4*z5+x3*(z4-z5) -x5*z4- (x4-x5)*z3)
|
||||||
|
-w3*(x4*z5-x5*z4) +x2*(-w4*z5-w3*(z4-z5) +w5*z4+ (w4-w5)*z3)
|
||||||
|
-x3*(w5*z4-w4*z5) + (w5*x4-w4*x5)*z3- (-w4*x5-w3*(x4-x5) +w5*x4+
|
||||||
|
(w4-w5)*x3)*z2) + (z2^2+y2^2+x2^2+w2^2)*(w3*(x4*z5-x5*z4)
|
||||||
|
+x3*(w5*z4-w4*z5) - (w5*x4-w4*x5)*z3))
|
||||||
|
-w1*(-x2*(-y3*((z4^2+y4^2+x4^2+w4^2)*z5-z4*(z5^2+y5^2+x5^2+w5^2))
|
||||||
|
+z3*(y5*(z4^2+y4^2+x4^2+w4^2) -y4*(z5^2+y5^2+x5^2+w5^2))
|
||||||
|
+ (z3^2+y3^2+x3^2+w3^2)*(y4*z5-y5*z4))
|
||||||
|
+y2*(-x3*((z4^2+y4^2+x4^2+w4^2)*z5-z4*(z5^2+y5^2+x5^2+w5^2))
|
||||||
|
+z3*(x5*(z4^2+y4^2+x4^2+w4^2) -x4*(z5^2+y5^2+x5^2+w5^2)) +
|
||||||
|
(z3^2+y3^2+x3^2+w3^2)*(x4*z5-x5*z4)) -z2*(-x3*(y5*(z4^2+y4^2+x4^2+w4^2)
|
||||||
|
-y4*(z5^2+y5^2+x5^2+w5^2)) +y3*(x5*(z4^2+y4^2+x4^2+w4^2)
|
||||||
|
-x4*(z5^2+y5^2+x5^2+w5^2)) + (x4*y5-x5*y4)*(z3^2+y3^2+x3^2+w3^2))
|
||||||
|
+ (z2^2+y2^2+x2^2+w2^2)*(x3*(y4*z5-y5*z4)
|
||||||
|
-y3*(x4*z5-x5*z4) + (x4*y5-x5*y4)*z3))
|
||||||
|
+x1*(-w2*(-y3*((z4^2+y4^2+x4^2+w4^2)*z5-z4*(z5^2+y5^2+x5^2+w5^2))
|
||||||
|
+z3*(y5*(z4^2+y4^2+x4^2+w4^2) -y4*(z5^2+y5^2+x5^2+w5^2))
|
||||||
|
+ (z3^2+y3^2+x3^2+w3^2)*(y4*z5-y5*z4))
|
||||||
|
-y2*(w3*((z4^2+y4^2+x4^2+w4^2)*z5-z4*(z5^2+y5^2+x5^2+w5^2))
|
||||||
|
-z3*(w5*(z4^2+y4^2+x4^2+w4^2) -w4*(z5^2+y5^2+x5^2+w5^2)) +
|
||||||
|
(z3^2+y3^2+x3^2+w3^2)*(w5*z4-w4*z5)) +z2*(w3*(y5*(z4^2+y4^2+x4^2+w4^2)
|
||||||
|
-y4*(z5^2+y5^2+x5^2+w5^2)) -y3*(w5*(z4^2+y4^2+x4^2+w4^2)
|
||||||
|
-w4*(z5^2+y5^2+x5^2+w5^2)) + (w5*y4-w4*y5)*(z3^2+y3^2+x3^2+w3^2))
|
||||||
|
+ (z2^2+y2^2+x2^2+w2^2)*(w3*(y4*z5-y5*z4)
|
||||||
|
+y3*(w5*z4-w4*z5) - (w5*y4-w4*y5)*z3))
|
||||||
|
-y1*(-w2*(-x3*((z4^2+y4^2+x4^2+w4^2)*z5-z4*(z5^2+y5^2+x5^2+w5^2))
|
||||||
|
+z3*(x5*(z4^2+y4^2+x4^2+w4^2) -x4*(z5^2+y5^2+x5^2+w5^2))
|
||||||
|
+ (z3^2+y3^2+x3^2+w3^2)*(x4*z5-x5*z4))
|
||||||
|
-x2*(w3*((z4^2+y4^2+x4^2+w4^2)*z5-z4*(z5^2+y5^2+x5^2+w5^2))
|
||||||
|
-z3*(w5*(z4^2+y4^2+x4^2+w4^2) -w4*(z5^2+y5^2+x5^2+w5^2)) +
|
||||||
|
(z3^2+y3^2+x3^2+w3^2)*(w5*z4-w4*z5)) +z2*(w3*(x5*(z4^2+y4^2+x4^2+w4^2)
|
||||||
|
-x4*(z5^2+y5^2+x5^2+w5^2)) -x3*(w5*(z4^2+y4^2+x4^2+w4^2)
|
||||||
|
-w4*(z5^2+y5^2+x5^2+w5^2)) + (w5*x4-w4*x5)*(z3^2+y3^2+x3^2+w3^2))
|
||||||
|
+ (z2^2+y2^2+x2^2+w2^2)*(w3*(x4*z5-x5*z4) +x3*(w5*z4-w4*z5)
|
||||||
|
- (w5*x4-w4*x5)*z3)) -z0*(-w1*(-x2*(-y4*(z5^2+y5^2+x5^2+w5^2)
|
||||||
|
-y3*(-z5^2+z4^2-y5^2+y4^2-x5^2+x4^2-w5^2+w4^2) +y5*(z4^2+y4^2+x4^2+w4^2)
|
||||||
|
+ (y4-y5)*(z3^2+y3^2+x3^2+w3^2)) +x3*(y5*(z4^2+y4^2+x4^2+w4^2)
|
||||||
|
-y4*(z5^2+y5^2+x5^2+w5^2)) +y2*(-x4*(z5^2+y5^2+x5^2+w5^2)
|
||||||
|
-x3*(-z5^2+z4^2-y5^2+y4^2-x5^2+x4^2-w5^2+w4^2)
|
||||||
|
+x5*(z4^2+y4^2+x4^2+w4^2) + (x4-x5)*(z3^2+y3^2+x3^2+w3^2))
|
||||||
|
-y3*(x5*(z4^2+y4^2+x4^2+w4^2) -x4*(z5^2+y5^2+x5^2+w5^2)) -
|
||||||
|
(x4*y5-x5*y4)*(z3^2+y3^2+x3^2+w3^2) + (x4*y5+x3*(y4-y5) -x5*y4-
|
||||||
|
(x4-x5)*y3)*(z2^2+y2^2+x2^2+w2^2)) -x1*(w2*(-y4*(z5^2+y5^2+x5^2+w5^2)
|
||||||
|
-y3*(-z5^2+z4^2-y5^2+y4^2-x5^2+x4^2-w5^2+w4^2) +y5*(z4^2+y4^2+x4^2+w4^2)
|
||||||
|
+ (y4-y5)*(z3^2+y3^2+x3^2+w3^2)) -w3*(y5*(z4^2+y4^2+x4^2+w4^2)
|
||||||
|
-y4*(z5^2+y5^2+x5^2+w5^2)) -y2*(-w4*(z5^2+y5^2+x5^2+w5^2)
|
||||||
|
-w3*(-z5^2+z4^2-y5^2+y4^2-x5^2+x4^2-w5^2+w4^2)
|
||||||
|
+w5*(z4^2+y4^2+x4^2+w4^2) + (w4-w5)*(z3^2+y3^2+x3^2+w3^2))
|
||||||
|
+y3*(w5*(z4^2+y4^2+x4^2+w4^2) -w4*(z5^2+y5^2+x5^2+w5^2)) -
|
||||||
|
(w5*y4-w4*y5)*(z3^2+y3^2+x3^2+w3^2) + (-w4*y5-w3*(y4-y5) +w5*y4+
|
||||||
|
(w4-w5)*y3)*(z2^2+y2^2+x2^2+w2^2)) -w2*(-x3*(y5*(z4^2+y4^2+x4^2+w4^2)
|
||||||
|
-y4*(z5^2+y5^2+x5^2+w5^2)) +y3*(x5*(z4^2+y4^2+x4^2+w4^2)
|
||||||
|
-x4*(z5^2+y5^2+x5^2+w5^2)) + (x4*y5-x5*y4)*(z3^2+y3^2+x3^2+w3^2))
|
||||||
|
-x2*(w3*(y5*(z4^2+y4^2+x4^2+w4^2) -y4*(z5^2+y5^2+x5^2+w5^2))
|
||||||
|
-y3*(w5*(z4^2+y4^2+x4^2+w4^2) -w4*(z5^2+y5^2+x5^2+w5^2)) +
|
||||||
|
(w5*y4-w4*y5)*(z3^2+y3^2+x3^2+w3^2)) +y1*(w2*(-x4*(z5^2+y5^2+x5^2+w5^2)
|
||||||
|
-x3*(-z5^2+z4^2-y5^2+y4^2-x5^2+x4^2-w5^2+w4^2) +x5*(z4^2+y4^2+x4^2+w4^2)
|
||||||
|
+ (x4-x5)*(z3^2+y3^2+x3^2+w3^2)) -w3*(x5*(z4^2+y4^2+x4^2+w4^2)
|
||||||
|
-x4*(z5^2+y5^2+x5^2+w5^2)) -x2*(-w4*(z5^2+y5^2+x5^2+w5^2)
|
||||||
|
-w3*(-z5^2+z4^2-y5^2+y4^2-x5^2+x4^2-w5^2+w4^2) +w5*(z4^2+y4^2+x4^2+w4^2)
|
||||||
|
+ (w4-w5)*(z3^2+y3^2+x3^2+w3^2)) +x3*(w5*(z4^2+y4^2+x4^2+w4^2)
|
||||||
|
-w4*(z5^2+y5^2+x5^2+w5^2)) - (w5*x4-w4*x5)*(z3^2+y3^2+x3^2+w3^2)
|
||||||
|
+ (-w4*x5-w3*(x4-x5) +w5*x4+ (w4-w5)*x3)*(z2^2+y2^2+x2^2+w2^2))
|
||||||
|
+y2*(w3*(x5*(z4^2+y4^2+x4^2+w4^2) -x4*(z5^2+y5^2+x5^2+w5^2))
|
||||||
|
-x3*(w5*(z4^2+y4^2+x4^2+w4^2) -w4*(z5^2+y5^2+x5^2+w5^2)) +
|
||||||
|
(w5*x4-w4*x5)*(z3^2+y3^2+x3^2+w3^2)) + (w3*(x4*y5-x5*y4) +x3*(w5*y4-w4*y5)
|
||||||
|
- (w5*x4-w4*x5)*y3)*(z2^2+y2^2+x2^2+w2^2) + (w2*(x4*y5+x3*(y4-y5)
|
||||||
|
-x5*y4- (x4-x5)*y3) -w3*(x4*y5-x5*y4) +x2*(-w4*y5-w3*(y4-y5)
|
||||||
|
+w5*y4+ (w4-w5)*y3) -x3*(w5*y4-w4*y5) + (w5*x4-w4*x5)*y3-
|
||||||
|
(-w4*x5-w3*(x4-x5) +w5*x4+ (w4-w5)*x3)*y2)*(z1^2+y1^2+x1^2+w1^2))
|
||||||
|
+z1*(-w2*(-x3*(y5*(z4^2+y4^2+x4^2+w4^2) -y4*(z5^2+y5^2+x5^2+w5^2))
|
||||||
|
+y3*(x5*(z4^2+y4^2+x4^2+w4^2) -x4*(z5^2+y5^2+x5^2+w5^2)) +
|
||||||
|
(x4*y5-x5*y4)*(z3^2+y3^2+x3^2+w3^2)) -x2*(w3*(y5*(z4^2+y4^2+x4^2+w4^2)
|
||||||
|
-y4*(z5^2+y5^2+x5^2+w5^2)) -y3*(w5*(z4^2+y4^2+x4^2+w4^2)
|
||||||
|
-w4*(z5^2+y5^2+x5^2+w5^2)) + (w5*y4-w4*y5)*(z3^2+y3^2+x3^2+w3^2))
|
||||||
|
+y2*(w3*(x5*(z4^2+y4^2+x4^2+w4^2) -x4*(z5^2+y5^2+x5^2+w5^2))
|
||||||
|
-x3*(w5*(z4^2+y4^2+x4^2+w4^2) -w4*(z5^2+y5^2+x5^2+w5^2)) +
|
||||||
|
(w5*x4-w4*x5)*(z3^2+y3^2+x3^2+w3^2)) + (w3*(x4*y5-x5*y4)
|
||||||
|
+x3*(w5*y4-w4*y5) - (w5*x4-w4*x5)*y3)*(z2^2+y2^2+x2^2+w2^2)) +
|
||||||
|
(z0^2+y0^2+x0^2+w0^2)*(-w1*(x2*(y4*z5+y3*(z4-z5) -y5*z4- (y4-y5)*z3)
|
||||||
|
-x3*(y4*z5-y5*z4) -y2*(x4*z5+x3*(z4-z5) -x5*z4- (x4-x5)*z3)
|
||||||
|
+y3*(x4*z5-x5*z4) - (x4*y5-x5*y4)*z3+ (x4*y5+x3*(y4-y5) -x5*y4-
|
||||||
|
(x4-x5)*y3)*z2) +x1*(w2*(y4*z5+y3*(z4-z5) -y5*z4- (y4-y5)*z3)
|
||||||
|
-w3*(y4*z5-y5*z4) +y2*(-w4*z5-w3*(z4-z5) +w5*z4+ (w4-w5)*z3)
|
||||||
|
-y3*(w5*z4-w4*z5) + (w5*y4-w4*y5)*z3- (-w4*y5-w3*(y4-y5) +w5*y4+
|
||||||
|
(w4-w5)*y3)*z2) -w2*(x3*(y4*z5-y5*z4) -y3*(x4*z5-x5*z4) +
|
||||||
|
(x4*y5-x5*y4)*z3) +x2*(w3*(y4*z5-y5*z4) +y3*(w5*z4-w4*z5) -
|
||||||
|
(w5*y4-w4*y5)*z3) -y1*(w2*(x4*z5+x3*(z4-z5) -x5*z4- (x4-x5)*z3)
|
||||||
|
-w3*(x4*z5-x5*z4) +x2*(-w4*z5-w3*(z4-z5) +w5*z4+ (w4-w5)*z3)
|
||||||
|
-x3*(w5*z4-w4*z5) + (w5*x4-w4*x5)*z3- (-w4*x5-w3*(x4-x5) +w5*x4+
|
||||||
|
(w4-w5)*x3)*z2) -y2*(w3*(x4*z5-x5*z4) +x3*(w5*z4-w4*z5) -
|
||||||
|
(w5*x4-w4*x5)*z3) + (w3*(x4*y5-x5*y4) +x3*(w5*y4-w4*y5) -
|
||||||
|
(w5*x4-w4*x5)*y3)*z2+ (w2*(x4*y5+x3*(y4-y5) -x5*y4- (x4-x5)*y3)
|
||||||
|
-w3*(x4*y5-x5*y4) +x2*(-w4*y5-w3*(y4-y5) +w5*y4+ (w4-w5)*y3)
|
||||||
|
-x3*(w5*y4-w4*y5) + (w5*x4-w4*x5)*y3- (-w4*x5-w3*(x4-x5) +w5*x4+
|
||||||
|
(w4-w5)*x3)*y2)*z1) - (z1^2+y1^2+x1^2+w1^2)*(-w2*(x3*(y4*z5-y5*z4)
|
||||||
|
-y3*(x4*z5-x5*z4) + (x4*y5-x5*y4)*z3) +x2*(w3*(y4*z5-y5*z4)
|
||||||
|
+y3*(w5*z4-w4*z5) - (w5*y4-w4*y5)*z3) -y2*(w3*(x4*z5-x5*z4)
|
||||||
|
+x3*(w5*z4-w4*z5) - (w5*x4-w4*x5)*z3) + (w3*(x4*y5-x5*y4)
|
||||||
|
+x3*(w5*y4-w4*y5) - (w5*x4-w4*x5)*y3)*z2)) == 0) {
|
||||||
|
print "are in the surface of a 4D sphere";
|
||||||
|
} else {
|
||||||
|
print "are NOT on a 4D sphere surface";
|
||||||
|
}
|
118
cscript/Makefile
118
cscript/Makefile
@@ -17,8 +17,8 @@
|
|||||||
# 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.
|
# 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||||
#
|
#
|
||||||
# @(#) $Revision: 29.9 $
|
# @(#) $Revision: 29.20 $
|
||||||
# @(#) $Id: Makefile,v 29.9 2001/04/08 10:53:52 chongo Exp $
|
# @(#) $Id: Makefile,v 29.20 2001/06/10 19:35:02 chongo Exp $
|
||||||
# @(#) $Source: /usr/local/src/cmd/calc/cscript/RCS/Makefile,v $
|
# @(#) $Source: /usr/local/src/cmd/calc/cscript/RCS/Makefile,v $
|
||||||
#
|
#
|
||||||
# Under source code control: 1999/11/29 11:10:26
|
# Under source code control: 1999/11/29 11:10:26
|
||||||
@@ -39,12 +39,28 @@ 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.
|
||||||
#
|
#
|
||||||
BINDIR= /usr/local/bin
|
#BINDIR= /usr/local/bin
|
||||||
#BINDIR= /usr/bin
|
BINDIR= /usr/bin
|
||||||
#BINDIR= /usr/contrib/bin
|
#BINDIR= /usr/contrib/bin
|
||||||
#
|
#
|
||||||
SCRIPTDIR= ${BINDIR}/cscript
|
SCRIPTDIR= ${BINDIR}/cscript
|
||||||
|
|
||||||
|
# T - top level directory under which calc will be installed
|
||||||
|
#
|
||||||
|
# The calc install is performed under $T, the calc build is
|
||||||
|
# performed under /. The purpose for $T is to allow someone to
|
||||||
|
# install calc somewhere other than into the system area. For example
|
||||||
|
# when forming the calc rpm, the Makefile is called with T=$RPM_BUILD_ROOT.
|
||||||
|
#
|
||||||
|
# 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
|
||||||
|
# calc is installed under $T, as if one had to chroot under
|
||||||
|
# $T for calc to operate.
|
||||||
|
#
|
||||||
|
# If in doubt, use T=
|
||||||
|
#
|
||||||
|
T=
|
||||||
|
|
||||||
# Makefile debug
|
# Makefile debug
|
||||||
#
|
#
|
||||||
# Q=@ do not echo internal makefile actions (quiet mode)
|
# Q=@ do not echo internal makefile actions (quiet mode)
|
||||||
@@ -59,6 +75,7 @@ CHMOD= chmod
|
|||||||
SED= sed
|
SED= sed
|
||||||
SORT= sort
|
SORT= sort
|
||||||
FMT= fmt
|
FMT= fmt
|
||||||
|
CMP= cmp
|
||||||
|
|
||||||
# The ${SCRIPT} list is the list of calc shell script files (without the .calc
|
# The ${SCRIPT} list is the list of calc shell script files (without the .calc
|
||||||
# extension) which will be installed.
|
# extension) which will be installed.
|
||||||
@@ -76,10 +93,11 @@ FMT= fmt
|
|||||||
#
|
#
|
||||||
# make detaillist
|
# make detaillist
|
||||||
#
|
#
|
||||||
SCRIPT= mersenne piforever plus simple square fproduct
|
SCRIPT= 4dsphere fproduct mersenne piforever plus powerterm \
|
||||||
|
simple square
|
||||||
|
|
||||||
SCRIPT_SRC= mersenne.calc piforever.calc plus.calc simple.calc square.calc \
|
SCRIPT_SRC= 4dsphere.calc fproduct.calc mersenne.calc \
|
||||||
fproduct.calc
|
piforever.calc plus.calc powerterm.calc simple.calc square.calc
|
||||||
|
|
||||||
# These files are found (but not built) in the distribution
|
# These files are found (but not built) in the distribution
|
||||||
#
|
#
|
||||||
@@ -89,9 +107,17 @@ DISTLIST= ${SCRIPT_SRC} ${MAKE_FILE} README
|
|||||||
#
|
#
|
||||||
CALCLIBLIST=
|
CALCLIBLIST=
|
||||||
|
|
||||||
|
# complete list of targets
|
||||||
|
#
|
||||||
|
# NOTE: This list MUST be co-ordinated with the ${CSCRIPT_TARGETS} variable
|
||||||
|
# in the upper level ../Makefile
|
||||||
|
#
|
||||||
|
CSCRIPT_TARGETS= ${SCRIPT}
|
||||||
|
TARGETS= ${CSCRIPT_TARGETS}
|
||||||
|
|
||||||
# The reason for this Makefile
|
# The reason for this Makefile
|
||||||
#
|
#
|
||||||
all: ${SCRIPT} ${SCRIPT_SRC} .all
|
all: ${TARGETS} .all
|
||||||
|
|
||||||
# used by the upper level Makefile to determine if we have done all
|
# used by the upper level Makefile to determine if we have done all
|
||||||
#
|
#
|
||||||
@@ -185,7 +211,7 @@ depend:
|
|||||||
${Q}echo "" >> Makefile
|
${Q}echo "" >> Makefile
|
||||||
${Q}${SED} -n '3,$$p' makedep.out >> Makefile
|
${Q}${SED} -n '3,$$p' makedep.out >> Makefile
|
||||||
-${Q}rm -f makedep.out
|
-${Q}rm -f makedep.out
|
||||||
-${Q}if cmp -s Makefile.bak Makefile; then \
|
-${Q}if ${CMP} -s Makefile.bak Makefile; then \
|
||||||
echo 'sample Makefile was already up to date'; \
|
echo 'sample Makefile was already up to date'; \
|
||||||
mv -f Makefile.bak Makefile; \
|
mv -f Makefile.bak Makefile; \
|
||||||
else \
|
else \
|
||||||
@@ -200,36 +226,76 @@ depend:
|
|||||||
fi; \
|
fi; \
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
##
|
||||||
|
#
|
||||||
|
# rpm rules
|
||||||
|
#
|
||||||
|
##
|
||||||
|
|
||||||
|
echo_inst_files:
|
||||||
|
${Q}for i in ${SCRIPT}; do \
|
||||||
|
echo __file__ ${SCRIPTDIR}/$$i; \
|
||||||
|
done
|
||||||
|
|
||||||
|
##
|
||||||
|
#
|
||||||
|
# Utility rules
|
||||||
|
#
|
||||||
|
##
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
-rm -f makedep.out
|
-rm -f makedep.out
|
||||||
|
|
||||||
clobber:
|
clobber:
|
||||||
-rm -f ${SCRIPT}
|
-rm -f ${TARGETS}
|
||||||
|
|
||||||
install: all
|
install: all
|
||||||
-${Q}if [ ! -d ${BINDIR} ]; then \
|
-${Q}if [ ! -d $T${BINDIR} ]; then \
|
||||||
echo mkdir ${BINDIR}; \
|
echo mkdir $T${BINDIR}; \
|
||||||
mkdir ${BINDIR}; \
|
mkdir $T${BINDIR}; \
|
||||||
|
if [ ! -d "$T${BINDIR}" ]; then \
|
||||||
|
echo mkdir -p "$T${BINDIR}"; \
|
||||||
|
mkdir -p "$T${BINDIR}"; \
|
||||||
|
fi; \
|
||||||
|
echo ${CHMOD} 0755 $T${BINDIR}; \
|
||||||
|
${CHMOD} 0755 $T${BINDIR}; \
|
||||||
else \
|
else \
|
||||||
true; \
|
true; \
|
||||||
fi
|
fi
|
||||||
-${Q}if [ ! -d ${SCRIPTDIR} ]; then \
|
-${Q}if [ ! -d $T${SCRIPTDIR} ]; then \
|
||||||
echo mkdir ${SCRIPTDIR}; \
|
echo mkdir $T${SCRIPTDIR}; \
|
||||||
mkdir ${SCRIPTDIR}; \
|
mkdir $T${SCRIPTDIR}; \
|
||||||
|
if [ ! -d "$T${SCRIPTDIR}" ]; then \
|
||||||
|
echo mkdir -p "$T${SCRIPTDIR}"; \
|
||||||
|
mkdir -p "$T${SCRIPTDIR}"; \
|
||||||
|
fi; \
|
||||||
|
echo ${CHMOD} 0755 $T${SCRIPTDIR}; \
|
||||||
|
${CHMOD} 0755 $T${SCRIPTDIR}; \
|
||||||
else \
|
else \
|
||||||
true; \
|
true; \
|
||||||
fi
|
fi
|
||||||
${Q}for i in ${SCRIPT}; do \
|
${Q}for i in ${SCRIPT}; do \
|
||||||
echo rm -f ${SCRIPTDIR}/$$i; \
|
if ${CMP} -s $$i $T${SCRIPTDIR}/$$i; then \
|
||||||
rm -f ${SCRIPTDIR}/$$i; \
|
true; \
|
||||||
echo cp $$i ${SCRIPTDIR}; \
|
else \
|
||||||
cp $$i ${SCRIPTDIR}; \
|
rm -f $T${SCRIPTDIR}/$$i.new; \
|
||||||
echo ${CHMOD} 0555 ${SCRIPTDIR}/$$i; \
|
cp -f $$i $T${SCRIPTDIR}/$$i.new; \
|
||||||
${CHMOD} 0555 ${SCRIPTDIR}/$$i; \
|
${CHMOD} 0555 $T${SCRIPTDIR}/$$i.new; \
|
||||||
|
mv -f $T${SCRIPTDIR}/$$i.new $T${SCRIPTDIR}/$$i; \
|
||||||
|
echo "installed $T${SCRIPTDIR}/$$i"; \
|
||||||
|
fi; \
|
||||||
done
|
done
|
||||||
|
|
||||||
# DO NOT DELETE THIS LINE -- make depend depends on it.
|
# DO NOT DELETE THIS LINE -- make depend depends on it.
|
||||||
|
|
||||||
|
4dsphere: 4dsphere.calc
|
||||||
|
rm -f $@
|
||||||
|
${SED} -e "1s:^#!/usr/local/src/cmd/calc/calc:#!${BINDIR}/calc:" $?>$@
|
||||||
|
${CHMOD} +x $@
|
||||||
|
fproduct: fproduct.calc
|
||||||
|
rm -f $@
|
||||||
|
${SED} -e "1s:^#!/usr/local/src/cmd/calc/calc:#!${BINDIR}/calc:" $?>$@
|
||||||
|
${CHMOD} +x $@
|
||||||
mersenne: mersenne.calc
|
mersenne: mersenne.calc
|
||||||
rm -f $@
|
rm -f $@
|
||||||
${SED} -e "1s:^#!/usr/local/src/cmd/calc/calc:#!${BINDIR}/calc:" $?>$@
|
${SED} -e "1s:^#!/usr/local/src/cmd/calc/calc:#!${BINDIR}/calc:" $?>$@
|
||||||
@@ -242,6 +308,10 @@ plus: plus.calc
|
|||||||
rm -f $@
|
rm -f $@
|
||||||
${SED} -e "1s:^#!/usr/local/src/cmd/calc/calc:#!${BINDIR}/calc:" $?>$@
|
${SED} -e "1s:^#!/usr/local/src/cmd/calc/calc:#!${BINDIR}/calc:" $?>$@
|
||||||
${CHMOD} +x $@
|
${CHMOD} +x $@
|
||||||
|
powerterm: powerterm.calc
|
||||||
|
rm -f $@
|
||||||
|
${SED} -e "1s:^#!/usr/local/src/cmd/calc/calc:#!${BINDIR}/calc:" $?>$@
|
||||||
|
${CHMOD} +x $@
|
||||||
simple: simple.calc
|
simple: simple.calc
|
||||||
rm -f $@
|
rm -f $@
|
||||||
${SED} -e "1s:^#!/usr/local/src/cmd/calc/calc:#!${BINDIR}/calc:" $?>$@
|
${SED} -e "1s:^#!/usr/local/src/cmd/calc/calc:#!${BINDIR}/calc:" $?>$@
|
||||||
@@ -250,7 +320,3 @@ square: square.calc
|
|||||||
rm -f $@
|
rm -f $@
|
||||||
${SED} -e "1s:^#!/usr/local/src/cmd/calc/calc:#!${BINDIR}/calc:" $?>$@
|
${SED} -e "1s:^#!/usr/local/src/cmd/calc/calc:#!${BINDIR}/calc:" $?>$@
|
||||||
${CHMOD} +x $@
|
${CHMOD} +x $@
|
||||||
fproduct: fproduct.calc
|
|
||||||
rm -f $@
|
|
||||||
${SED} -e "1s:^#!/usr/local/src/cmd/calc/calc:#!${BINDIR}/calc:" $?>$@
|
|
||||||
${CHMOD} +x $@
|
|
||||||
|
@@ -19,6 +19,18 @@ For more info, see:
|
|||||||
|
|
||||||
=-=
|
=-=
|
||||||
|
|
||||||
|
4dsphere
|
||||||
|
|
||||||
|
Determine if 6 points lie on the surface of a 4-dimensional sphere in R^4.
|
||||||
|
|
||||||
|
4dsphere x0 y0 z0 w0 x1 y1 z1 w1 ... x5 y5 z5 w5
|
||||||
|
|
||||||
|
x0 y0 z0 w0 point 0 in R^4
|
||||||
|
x1 y1 z1 w1 point 1 in R^4
|
||||||
|
... ...
|
||||||
|
x5 y5 z5 w5 point 5 in R^4
|
||||||
|
|
||||||
|
|
||||||
fproduct filename term ...
|
fproduct filename term ...
|
||||||
|
|
||||||
Write the big Endian product of terms to a file. Use - for stdout.
|
Write the big Endian product of terms to a file. Use - for stdout.
|
||||||
@@ -39,6 +51,12 @@ plus arg ...
|
|||||||
Print the sum of 1 or more arguments.
|
Print the sum of 1 or more arguments.
|
||||||
|
|
||||||
|
|
||||||
|
powerterm [base_limit] value
|
||||||
|
|
||||||
|
Print the value as a sum (or difference) of powers of integers up
|
||||||
|
to and including powers <= base_limit. By default, base_limit is 10000.
|
||||||
|
|
||||||
|
|
||||||
simple
|
simple
|
||||||
|
|
||||||
A trivial example of a calc shell script.
|
A trivial example of a calc shell script.
|
||||||
@@ -59,8 +77,8 @@ simple
|
|||||||
## 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.
|
## 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||||
##
|
##
|
||||||
## @(#) $Revision: 29.5 $
|
## @(#) $Revision: 29.10 $
|
||||||
## @(#) $Id: README,v 29.5 2001/04/08 08:24:40 chongo Exp $
|
## @(#) $Id: README,v 29.10 2001/06/10 19:34:40 chongo Exp $
|
||||||
## @(#) $Source: /usr/local/src/cmd/calc/cscript/RCS/README,v $
|
## @(#) $Source: /usr/local/src/cmd/calc/cscript/RCS/README,v $
|
||||||
##
|
##
|
||||||
## Under source code control: 1999/12/17 10:23:40
|
## Under source code control: 1999/12/17 10:23:40
|
||||||
|
@@ -1,4 +1,4 @@
|
|||||||
#!/usr/local/bin/calc -q -s -f
|
#!/usr/local/src/cmd/calc/calc -q -s -f
|
||||||
/*
|
/*
|
||||||
* fproduct - write the big Endian product of terms to a file
|
* fproduct - write the big Endian product of terms to a file
|
||||||
*
|
*
|
||||||
@@ -24,8 +24,8 @@
|
|||||||
* 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.
|
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||||
*
|
*
|
||||||
* @(#) $Revision: 29.1 $
|
* @(#) $Revision: 29.2 $
|
||||||
* @(#) $Id: fproduct.calc,v 29.1 2001/04/08 08:25:15 chongo Exp $
|
* @(#) $Id: fproduct.calc,v 29.2 2001/06/06 09:06:29 chongo Exp $
|
||||||
* @(#) $Source: /usr/local/src/cmd/calc/cscript/RCS/fproduct.calc,v $
|
* @(#) $Source: /usr/local/src/cmd/calc/cscript/RCS/fproduct.calc,v $
|
||||||
*
|
*
|
||||||
* Under source code control: 2001/04/07 20:13:11
|
* Under source code control: 2001/04/07 20:13:11
|
||||||
|
185
cscript/powerterm.calc
Normal file
185
cscript/powerterm.calc
Normal file
@@ -0,0 +1,185 @@
|
|||||||
|
#!/usr/local/src/cmd/calc/calc -q -s -f
|
||||||
|
/*
|
||||||
|
* powerterm - print the argument as a sum of powers of integers
|
||||||
|
*
|
||||||
|
* usage:
|
||||||
|
* powerterm [base_limit] value
|
||||||
|
*
|
||||||
|
* base_limit largest base we will consider (def: 10000)
|
||||||
|
* value value to convert into sums of powers of integers
|
||||||
|
*
|
||||||
|
* Copyright (C) 2001 Landon Curt Noll
|
||||||
|
*
|
||||||
|
* Calc is open software; you can redistribute it and/or modify it under
|
||||||
|
* the powerterm of the version 2.1 of the GNU Lesser General Public License
|
||||||
|
* as published by the Free Software Foundation.
|
||||||
|
*
|
||||||
|
* Calc is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
||||||
|
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General
|
||||||
|
* Public License for more details.
|
||||||
|
*
|
||||||
|
* A copy of version 2.1 of the GNU Lesser General Public License is
|
||||||
|
* distributed with calc under the filename COPYING-LGPL. You should have
|
||||||
|
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||||
|
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||||
|
*
|
||||||
|
* @(#) $Revision: 29.6 $
|
||||||
|
* @(#) $Id: powerterm.calc,v 29.6 2001/06/06 09:06:29 chongo Exp $
|
||||||
|
* @(#) $Source: /usr/local/src/cmd/calc/cscript/RCS/powerterm.calc,v $
|
||||||
|
*
|
||||||
|
* Under source code control: 2001/04/24 23:49:11
|
||||||
|
* File existed as early as: 2001
|
||||||
|
*
|
||||||
|
* chongo <was here> /\oo/\ http://www.isthe.com/chongo/
|
||||||
|
* Share and enjoy! :-) http://www.isthe.com/chongo/tech/comp/calc/
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* parse args
|
||||||
|
*/
|
||||||
|
config("verbose_quit", 0),;
|
||||||
|
base_lim = 10000; /* default: highest base we will consider */
|
||||||
|
if (argv() < 2 || argv() > 3) {
|
||||||
|
fprintf(files(2), "usage: %s [base_limit] value\n", argv(0));
|
||||||
|
exit;
|
||||||
|
}
|
||||||
|
if (argv() == 3) {
|
||||||
|
x = eval(argv(2));
|
||||||
|
base_lim = eval(argv(1));
|
||||||
|
} else {
|
||||||
|
x = eval(argv(1));
|
||||||
|
}
|
||||||
|
if (! isint(x)) {
|
||||||
|
fprintf(files(2), "%s: value must be an integer\n");
|
||||||
|
exit;
|
||||||
|
}
|
||||||
|
if (! isint(base_lim)) {
|
||||||
|
fprintf(files(2), "%s: base limit must be an integer\n");
|
||||||
|
exit;
|
||||||
|
}
|
||||||
|
if (base_lim <= 1) {
|
||||||
|
fprintf(files(2), "%s: base limit is too small\n");
|
||||||
|
exit;
|
||||||
|
}
|
||||||
|
++base_lim;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* setup loop variables
|
||||||
|
*/
|
||||||
|
term = 0; /* number of powerterm found */
|
||||||
|
|
||||||
|
/*
|
||||||
|
* log constants
|
||||||
|
*/
|
||||||
|
if (base_lim <= 2^20+1) { /* 2^20 requires ~96 Megs of memory */
|
||||||
|
mat lni[base_lim]; /* log of integers */
|
||||||
|
for (i=2; i < base_lim; ++i) {
|
||||||
|
lni[i] = ln(i);
|
||||||
|
}
|
||||||
|
have_lni = 1; /* have lni[x] array */
|
||||||
|
} else {
|
||||||
|
mat lni[1]; /* not used */
|
||||||
|
have_lni = 0; /* base_lim too large for array */
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* remove nestest powers
|
||||||
|
*/
|
||||||
|
while (abs(x) >= base_lim) {
|
||||||
|
|
||||||
|
/*
|
||||||
|
* look for the nearest power
|
||||||
|
*/
|
||||||
|
lnx = ln(abs(x)); /* log of the remaining co-factor */
|
||||||
|
closest = 0.5;
|
||||||
|
base = 1;
|
||||||
|
exponent = 0;
|
||||||
|
if (have_lni) {
|
||||||
|
|
||||||
|
/*
|
||||||
|
* use pre-calculated log array when looking for the nearest power
|
||||||
|
*/
|
||||||
|
for (i = 2; i < base_lim; ++i) {
|
||||||
|
|
||||||
|
/*
|
||||||
|
* determine exponent closeness to an integer
|
||||||
|
*/
|
||||||
|
ex = lnx / lni[i];
|
||||||
|
power = int(ex + 0.5);
|
||||||
|
diff = ex - power;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* look for a closer power
|
||||||
|
*/
|
||||||
|
if (abs(diff) < closest) {
|
||||||
|
closest = abs(diff);
|
||||||
|
base = i;
|
||||||
|
exponent = power;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
} else {
|
||||||
|
|
||||||
|
/*
|
||||||
|
* re-calculate logs when looking for the nearest power
|
||||||
|
*/
|
||||||
|
for (i = 2; i < base_lim; ++i) {
|
||||||
|
|
||||||
|
/*
|
||||||
|
* determine exponent closeness to an integer
|
||||||
|
*/
|
||||||
|
ex = lnx / ln(i);
|
||||||
|
power = int(ex + 0.5);
|
||||||
|
diff = ex - power;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* look for a closer power
|
||||||
|
*/
|
||||||
|
if (abs(diff) < closest) {
|
||||||
|
closest = abs(diff);
|
||||||
|
base = i;
|
||||||
|
exponent = power;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* output current term and then subtract it
|
||||||
|
*/
|
||||||
|
if (x != 0) {
|
||||||
|
if (x < 0) {
|
||||||
|
print "-",;
|
||||||
|
} else if (term > 0) {
|
||||||
|
print "+",;
|
||||||
|
}
|
||||||
|
if (exponent > 1) {
|
||||||
|
print base: "^": exponent,;
|
||||||
|
} else {
|
||||||
|
print base,;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* subtract (or add) this near power
|
||||||
|
*/
|
||||||
|
if (x < 0) {
|
||||||
|
x = x + base^exponent;
|
||||||
|
} else {
|
||||||
|
x = x - base^exponent;
|
||||||
|
}
|
||||||
|
++term;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* print the final term
|
||||||
|
*/
|
||||||
|
if (x < 0) {
|
||||||
|
print "-", -x;
|
||||||
|
} else if (x > 0) {
|
||||||
|
print "+", x;
|
||||||
|
} else {
|
||||||
|
print "";
|
||||||
|
}
|
||||||
|
exit;
|
282
custom/Makefile
282
custom/Makefile
@@ -18,8 +18,8 @@
|
|||||||
# 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.
|
# 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||||
#
|
#
|
||||||
# @(#) $Revision: 29.6 $
|
# @(#) $Revision: 29.17 $
|
||||||
# @(#) $Id: Makefile,v 29.6 2001/04/08 10:53:52 chongo Exp $
|
# @(#) $Id: Makefile,v 29.17 2001/06/08 22:38:53 chongo Exp $
|
||||||
# @(#) $Source: /usr/local/src/cmd/calc/custom/RCS/Makefile,v $
|
# @(#) $Source: /usr/local/src/cmd/calc/custom/RCS/Makefile,v $
|
||||||
#
|
#
|
||||||
# Under source code control: 1997/03/09 02:28:54
|
# Under source code control: 1997/03/09 02:28:54
|
||||||
@@ -93,21 +93,44 @@ Q=@
|
|||||||
#
|
#
|
||||||
# where to install things
|
# where to install things
|
||||||
#
|
#
|
||||||
# ${TOPDIR} is the directory under which the calc directory will be placed.
|
# ${SHAREDIR} where most common shared files are kept
|
||||||
# ${LIBDIR} is where the *.cal, *.h, *.a, bindings and help dir are installed.
|
# ${INCDIR} where most .h files are kept
|
||||||
# ${HELPDIR} is where the help directory is installed.
|
|
||||||
# ${CUSTOMLIBDIR} is where custom lib files are installed.
|
|
||||||
# ${CUSTOMHELPDIR} is where custom help files are installed.
|
|
||||||
#
|
#
|
||||||
TOPDIR= /usr/local/lib
|
# ${CSHAREDIR} where most common shared calc files are kept
|
||||||
#TOPDIR= /usr/lib
|
# ${HELPDIR} where the help directory is installed.
|
||||||
#TOPDIR= /usr/libdata
|
# ${INCDIRCALC} where the calc include files are installed
|
||||||
#TOPDIR= /usr/contrib/lib
|
# ${CUSTOMLIBDIR} where custom *.cal files & libcustcalc.a are installed.
|
||||||
|
# ${CUSTOMHELPDIR} where custom help files are installed.
|
||||||
|
# ${CUSTOMINCPDIR} where custom .h files are installed.
|
||||||
#
|
#
|
||||||
LIBDIR= ${TOPDIR}/calc
|
#SHAREDIR= /usr/local/lib
|
||||||
HELPDIR= ${LIBDIR}/help
|
SHAREDIR= /usr/share
|
||||||
CUSTOMLIBDIR= ${LIBDIR}/custom
|
#
|
||||||
CUSTOMHELPDIR= ${HELPDIR}/custhelp
|
#INCDIR= /usr/local/include
|
||||||
|
INCDIR= /usr/include
|
||||||
|
#
|
||||||
|
CSHAREDIR= ${SHAREDIR}/calc
|
||||||
|
HELPDIR= ${CSHAREDIR}/help
|
||||||
|
INCDIRCALC= ${INCDIR}/calc
|
||||||
|
CUSTOMLIBDIR= ${CSHAREDIR}/custom
|
||||||
|
CUSTOMHELPDIR= ${CSHAREDIR}/custhelp
|
||||||
|
CUSTOMINCDIR= ${INCDIRCALC}/custom
|
||||||
|
|
||||||
|
# T - top level directory under which calc will be installed
|
||||||
|
#
|
||||||
|
# The calc install is performed under $T, the calc build is
|
||||||
|
# performed under /. The purpose for $T is to allow someone to
|
||||||
|
# install calc somewhere other than into the system area. For example
|
||||||
|
# when forming the calc rpm, the Makefile is called with T=$RPM_BUILD_ROOT.
|
||||||
|
#
|
||||||
|
# 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
|
||||||
|
# calc is installed under $T, as if one had to chroot under
|
||||||
|
# $T for calc to operate.
|
||||||
|
#
|
||||||
|
# If in doubt, use T=
|
||||||
|
#
|
||||||
|
T=
|
||||||
|
|
||||||
# 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.
|
||||||
@@ -288,9 +311,13 @@ DISTLIST= ${CUSTCALC_SRC} ${CUSTOM_CALC_FILES} ${CUSTOM_HELP} \
|
|||||||
#
|
#
|
||||||
CALCLIBLIST= ${CUSTCALC_SRC} ${INSTALL_H_SRC} ${MAKE_FILE} HOW_TO_ADD
|
CALCLIBLIST= ${CUSTCALC_SRC} ${INSTALL_H_SRC} ${MAKE_FILE} HOW_TO_ADD
|
||||||
|
|
||||||
|
# This is the custom .a link library that is build
|
||||||
|
#
|
||||||
|
CALC_LIBCUSTOM= libcustcalc.a
|
||||||
|
|
||||||
# complete list of targets
|
# complete list of targets
|
||||||
#
|
#
|
||||||
TARGETS= libcustcalc.a ${CUSTCALC_OBJ}
|
TARGETS= ${CALC_LIBCUSTOM} ${CUSTCALC_OBJ}
|
||||||
|
|
||||||
# required vars
|
# required vars
|
||||||
#
|
#
|
||||||
@@ -303,6 +330,7 @@ SED= sed
|
|||||||
MAKEDEPEND= makedepend
|
MAKEDEPEND= makedepend
|
||||||
CHMOD= chmod
|
CHMOD= chmod
|
||||||
SORT= sort
|
SORT= sort
|
||||||
|
CMP= cmp
|
||||||
|
|
||||||
##
|
##
|
||||||
#
|
#
|
||||||
@@ -313,7 +341,7 @@ SORT= sort
|
|||||||
all: ${TARGETS} ${INSTALL_H_SRC} ${CUSTOM_CALC_FILES} \
|
all: ${TARGETS} ${INSTALL_H_SRC} ${CUSTOM_CALC_FILES} \
|
||||||
${CUSTOM_HELP} ${MAKE_FILE} .all
|
${CUSTOM_HELP} ${MAKE_FILE} .all
|
||||||
|
|
||||||
libcustcalc.a: ${CUSTCALC_OBJ} ${MAKE_FILE} ../Makefile
|
libcustcalc.a: ${CUSTCALC_OBJ} ${MAKE_FILE} ../${MAKE_FILE}
|
||||||
-rm -f libcustcalc.a
|
-rm -f libcustcalc.a
|
||||||
ar qc libcustcalc.a ${CUSTCALC_OBJ}
|
ar qc libcustcalc.a ${CUSTCALC_OBJ}
|
||||||
${RANLIB} libcustcalc.a
|
${RANLIB} libcustcalc.a
|
||||||
@@ -422,7 +450,7 @@ depend:
|
|||||||
${Q}echo forming custom dependency list
|
${Q}echo forming custom dependency list
|
||||||
${Q}echo "# DO NOT DELETE THIS LINE -- make depend depends on it." > \
|
${Q}echo "# DO NOT DELETE THIS LINE -- make depend depends on it." > \
|
||||||
skel/custom/makedep.out
|
skel/custom/makedep.out
|
||||||
${Q}cd skel/custom; ${MAKEDEPEND} -w 1 -m -f makedep.out ${C_SRC}
|
${Q}cd skel/custom; ${MAKEDEPEND} -w 1 -f makedep.out ${C_SRC}
|
||||||
-${Q}for i in ${C_SRC}; do \
|
-${Q}for i in ${C_SRC}; do \
|
||||||
echo "$$i" | ${SED} 's/^\(.*\)\.c/\1.o: \1.c/'; \
|
echo "$$i" | ${SED} 's/^\(.*\)\.c/\1.o: \1.c/'; \
|
||||||
done >> skel/custom/makedep.out
|
done >> skel/custom/makedep.out
|
||||||
@@ -435,7 +463,7 @@ depend:
|
|||||||
${Q}${SED} -n '3,$$p' skel/custom/makedep.out | \
|
${Q}${SED} -n '3,$$p' skel/custom/makedep.out | \
|
||||||
LANG=C ${SORT} -u >> Makefile
|
LANG=C ${SORT} -u >> Makefile
|
||||||
-${Q}rm -rf skel
|
-${Q}rm -rf skel
|
||||||
-${Q}if cmp -s Makefile.bak Makefile; then \
|
-${Q}if ${CMP} -s Makefile.bak Makefile; then \
|
||||||
echo 'custom Makefile was already up to date'; \
|
echo 'custom Makefile was already up to date'; \
|
||||||
mv -f Makefile.bak Makefile; \
|
mv -f Makefile.bak Makefile; \
|
||||||
else \
|
else \
|
||||||
@@ -450,6 +478,26 @@ depend:
|
|||||||
fi; \
|
fi; \
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
##
|
||||||
|
#
|
||||||
|
# rpm rules
|
||||||
|
#
|
||||||
|
##
|
||||||
|
|
||||||
|
echo_inst_files:
|
||||||
|
${Q}for i in ${INSTALL_H_SRC}; do \
|
||||||
|
echo __file__ ${CUSTOMINCDIR}/$$i; \
|
||||||
|
done
|
||||||
|
${Q}for i in ${CUSTOM_HELP}; do \
|
||||||
|
echo __file__ ${CUSTOMHELPDIR}/$$i; \
|
||||||
|
done
|
||||||
|
${Q}for i in ${CUSTOM_CALC_FILES}; do \
|
||||||
|
echo __file__ ${CUSTOMLIBDIR}/$$i; \
|
||||||
|
done
|
||||||
|
${Q}for i in ${CALC_LIBCUSTOM}; do \
|
||||||
|
echo __file__ ${CUSTOMLIBDIR}/$$i; \
|
||||||
|
done
|
||||||
|
|
||||||
##
|
##
|
||||||
#
|
#
|
||||||
# Utility rules
|
# Utility rules
|
||||||
@@ -464,70 +512,148 @@ clobber:
|
|||||||
rm -f .all Makefile.tmp Makefile.bak
|
rm -f .all Makefile.tmp Makefile.bak
|
||||||
|
|
||||||
install: all
|
install: all
|
||||||
-${Q}if [ ! -d ${TOPDIR} ]; then \
|
-${Q}if [ ! -d $T${SHAREDIR} ]; then \
|
||||||
echo mkdir ${TOPDIR}; \
|
echo mkdir $T${SHAREDIR}; \
|
||||||
mkdir ${TOPDIR}; \
|
mkdir $T${SHAREDIR}; \
|
||||||
|
if [ ! -d "$T${SHAREDIR}" ]; then \
|
||||||
|
echo mkdir -p "$T${SHAREDIR}"; \
|
||||||
|
mkdir -p "$T${SHAREDIR}"; \
|
||||||
|
fi; \
|
||||||
|
echo ${CHMOD} 0755 $T${SHAREDIR}; \
|
||||||
|
${CHMOD} 0755 $T${SHAREDIR}; \
|
||||||
else \
|
else \
|
||||||
true; \
|
true; \
|
||||||
fi
|
fi
|
||||||
-${Q}if [ ! -d ${LIBDIR} ]; then \
|
-${Q}if [ ! -d $T${INCDIR} ]; then \
|
||||||
echo mkdir ${LIBDIR}; \
|
echo mkdir $T${INCDIR}; \
|
||||||
mkdir ${LIBDIR}; \
|
mkdir $T${INCDIR}; \
|
||||||
|
if [ ! -d "$T${INCDIR}" ]; then \
|
||||||
|
echo mkdir -p "$T${INCDIR}"; \
|
||||||
|
mkdir -p "$T${INCDIR}"; \
|
||||||
|
fi; \
|
||||||
|
echo ${CHMOD} 0755 $T${INCDIR}; \
|
||||||
|
${CHMOD} 0755 $T${INCDIR}; \
|
||||||
else \
|
else \
|
||||||
true; \
|
true; \
|
||||||
fi
|
fi
|
||||||
-${Q}if [ ! -d ${HELPDIR} ]; then \
|
-${Q}if [ ! -d $T${CSHAREDIR} ]; then \
|
||||||
echo mkdir ${HELPDIR}; \
|
echo mkdir $T${CSHAREDIR}; \
|
||||||
mkdir ${HELPDIR}; \
|
mkdir $T${CSHAREDIR}; \
|
||||||
|
if [ ! -d "$T${CSHAREDIR}" ]; then \
|
||||||
|
echo mkdir -p "$T${CSHAREDIR}"; \
|
||||||
|
mkdir -p "$T${CSHAREDIR}"; \
|
||||||
|
fi; \
|
||||||
|
echo ${CHMOD} 0755 $T${CSHAREDIR}; \
|
||||||
|
${CHMOD} 0755 $T${CSHAREDIR}; \
|
||||||
else \
|
else \
|
||||||
true; \
|
true; \
|
||||||
fi
|
fi
|
||||||
-${Q}if [ ! -d ${CUSTOMLIBDIR} ]; then \
|
-${Q}if [ ! -d $T${INCDIRCALC} ]; then \
|
||||||
echo mkdir ${CUSTOMLIBDIR}; \
|
echo mkdir $T${INCDIRCALC}; \
|
||||||
mkdir ${CUSTOMLIBDIR}; \
|
mkdir $T${INCDIRCALC}; \
|
||||||
|
if [ ! -d "$T${INCDIRCALC}" ]; then \
|
||||||
|
echo mkdir -p "$T${INCDIRCALC}"; \
|
||||||
|
mkdir -p "$T${INCDIRCALC}"; \
|
||||||
|
fi; \
|
||||||
|
echo ${CHMOD} 0755 $T${INCDIRCALC}; \
|
||||||
|
${CHMOD} 0755 $T${INCDIRCALC}; \
|
||||||
else \
|
else \
|
||||||
true; \
|
true; \
|
||||||
fi
|
fi
|
||||||
-${Q}if [ ! -d ${CUSTOMHELPDIR} ]; then \
|
-${Q}if [ ! -d $T${HELPDIR} ]; then \
|
||||||
echo mkdir ${CUSTOMHELPDIR}; \
|
echo mkdir $T${HELPDIR}; \
|
||||||
mkdir ${CUSTOMHELPDIR}; \
|
mkdir $T${HELPDIR}; \
|
||||||
|
if [ ! -d "$T${HELPDIR}" ]; then \
|
||||||
|
echo mkdir -p "$T${HELPDIR}"; \
|
||||||
|
mkdir -p "$T${HELPDIR}"; \
|
||||||
|
fi; \
|
||||||
|
echo ${CHMOD} 0755 $T${HELPDIR}; \
|
||||||
|
${CHMOD} 0755 $T${HELPDIR}; \
|
||||||
else \
|
else \
|
||||||
true; \
|
true; \
|
||||||
fi
|
fi
|
||||||
${Q}for i in ${INSTALL_H_SRC} /dev/null; do \
|
-${Q}if [ ! -d $T${CUSTOMLIBDIR} ]; then \
|
||||||
if [ X$$i = X/dev/null ]; then continue; fi; \
|
echo mkdir $T${CUSTOMLIBDIR}; \
|
||||||
echo rm -f ${CUSTOMLIBDIR}/$$i; \
|
mkdir $T${CUSTOMLIBDIR}; \
|
||||||
rm -f ${CUSTOMLIBDIR}/$$i; \
|
if [ ! -d "$T${CUSTOMLIBDIR}" ]; then \
|
||||||
echo cp $$i ${CUSTOMLIBDIR}; \
|
echo mkdir -p "$T${CUSTOMLIBDIR}"; \
|
||||||
cp $$i ${CUSTOMLIBDIR}; \
|
mkdir -p "$T${CUSTOMLIBDIR}"; \
|
||||||
echo ${CHMOD} 0444 ${CUSTOMLIBDIR}/$$i; \
|
fi; \
|
||||||
${CHMOD} 0444 ${CUSTOMLIBDIR}/$$i; \
|
echo ${CHMOD} 0755 $T${CUSTOMLIBDIR}; \
|
||||||
|
${CHMOD} 0755 $T${CUSTOMLIBDIR}; \
|
||||||
|
else \
|
||||||
|
true; \
|
||||||
|
fi
|
||||||
|
-${Q}if [ ! -d $T${CUSTOMHELPDIR} ]; then \
|
||||||
|
echo mkdir $T${CUSTOMHELPDIR}; \
|
||||||
|
mkdir $T${CUSTOMHELPDIR}; \
|
||||||
|
if [ ! -d "$T${CUSTOMHELPDIR}" ]; then \
|
||||||
|
echo mkdir -p "$T${CUSTOMHELPDIR}"; \
|
||||||
|
mkdir -p "$T${CUSTOMHELPDIR}"; \
|
||||||
|
fi; \
|
||||||
|
echo ${CHMOD} 0755 $T${CUSTOMHELPDIR}; \
|
||||||
|
${CHMOD} 0755 $T${CUSTOMHELPDIR}; \
|
||||||
|
else \
|
||||||
|
true; \
|
||||||
|
fi
|
||||||
|
-${Q}if [ ! -d $T${CUSTOMINCDIR} ]; then \
|
||||||
|
echo mkdir $T${CUSTOMINCDIR}; \
|
||||||
|
mkdir $T${CUSTOMINCDIR}; \
|
||||||
|
if [ ! -d "$T${CUSTOMINCDIR}" ]; then \
|
||||||
|
echo mkdir -p "$T${CUSTOMINCDIR}"; \
|
||||||
|
mkdir -p "$T${CUSTOMINCDIR}"; \
|
||||||
|
fi; \
|
||||||
|
echo ${CHMOD} 0755 $T${CUSTOMINCDIR}; \
|
||||||
|
${CHMOD} 0755 $T${CUSTOMINCDIR}; \
|
||||||
|
else \
|
||||||
|
true; \
|
||||||
|
fi
|
||||||
|
-${Q}for i in ${INSTALL_H_SRC}; do \
|
||||||
|
if ${CMP} -s tmp $T${CUSTOMINCDIR}/$$i; then \
|
||||||
|
true; \
|
||||||
|
else \
|
||||||
|
rm -f $T${CUSTOMINCDIR}/$$i.new; \
|
||||||
|
cp -f $$i $T${CUSTOMINCDIR}/$$i.new; \
|
||||||
|
${CHMOD} 0444 $T${CUSTOMINCDIR}/$$i.new; \
|
||||||
|
mv -f $T${CUSTOMINCDIR}/$$i.new $T${CUSTOMINCDIR}/$$i; \
|
||||||
|
echo "installed $T${CUSTOMINCDIR}/$$i"; \
|
||||||
|
fi; \
|
||||||
done
|
done
|
||||||
${Q}for i in ${CUSTOM_CALC_FILES}; do \
|
-${Q}rm -f tmp
|
||||||
echo rm -f ${CUSTOMLIBDIR}/$$i; \
|
-${Q}for i in ${CUSTOM_CALC_FILES}; do \
|
||||||
rm -f ${CUSTOMLIBDIR}/$$i; \
|
if ${CMP} -s $$i $T${CUSTOMLIBDIR}/$$i; then \
|
||||||
echo cp $$i ${CUSTOMLIBDIR}; \
|
true; \
|
||||||
cp $$i ${CUSTOMLIBDIR}; \
|
else \
|
||||||
echo ${CHMOD} 0444 ${CUSTOMLIBDIR}/$$i; \
|
rm -f $T${CUSTOMLIBDIR}/$$i.new; \
|
||||||
${CHMOD} 0444 ${CUSTOMLIBDIR}/$$i; \
|
cp -f $$i $T${CUSTOMLIBDIR}/$$i.new; \
|
||||||
|
${CHMOD} 0444 $T${CUSTOMLIBDIR}/$$i.new; \
|
||||||
|
mv -f $T${CUSTOMLIBDIR}/$$i.new $T${CUSTOMLIBDIR}/$$i; \
|
||||||
|
echo "installed $T${CUSTOMLIBDIR}/$$i"; \
|
||||||
|
fi; \
|
||||||
done
|
done
|
||||||
${Q}for i in ${CUSTOM_HELP}; do \
|
-${Q}for i in ${CUSTOM_HELP}; do \
|
||||||
echo rm -f ${CUSTOMHELPDIR}/$$i; \
|
if ${CMP} -s $$i $T${CUSTOMHELPDIR}/$$i; then \
|
||||||
rm -f ${CUSTOMHELPDIR}/$$i; \
|
true; \
|
||||||
echo cp $$i ${CUSTOMHELPDIR}; \
|
else \
|
||||||
cp $$i ${CUSTOMHELPDIR}; \
|
rm -f $T${CUSTOMHELPDIR}/$$i.new; \
|
||||||
echo ${CHMOD} 0444 ${CUSTOMHELPDIR}/$$i; \
|
cp -f $$i $T${CUSTOMHELPDIR}/$$i.new; \
|
||||||
${CHMOD} 0444 ${CUSTOMHELPDIR}/$$i; \
|
${CHMOD} 0444 $T${CUSTOMHELPDIR}/$$i.new; \
|
||||||
|
mv -f $T${CUSTOMHELPDIR}/$$i.new $T${CUSTOMHELPDIR}/$$i; \
|
||||||
|
echo "installed $T${CUSTOMHELPDIR}/$$i"; \
|
||||||
|
fi; \
|
||||||
done
|
done
|
||||||
-${Q}if [ ! -z ${ALLOW_CUSTOM} ]; then \
|
-${Q}if [ ! -z ${ALLOW_CUSTOM} ]; then \
|
||||||
echo "rm -f ${CUSTOMLIBDIR}/libcustcalc.a"; \
|
if ${CMP} -s libcustcalc.a $T${CUSTOMLIBDIR}/libcustcalc.a; then \
|
||||||
rm -f ${CUSTOMLIBDIR}/libcustcalc.a; \
|
true; \
|
||||||
echo "cp libcustcalc.a ${CUSTOMLIBDIR}/libcustcalc.a"; \
|
else \
|
||||||
cp libcustcalc.a ${CUSTOMLIBDIR}/libcustcalc.a; \
|
rm -f $T${CUSTOMLIBDIR}/libcustcalc.a.new; \
|
||||||
echo "${CHMOD} 0644 ${CUSTOMLIBDIR}/libcustcalc.a"; \
|
cp -f libcustcalc.a $T${CUSTOMLIBDIR}/libcustcalc.a.new; \
|
||||||
${CHMOD} 0644 ${CUSTOMLIBDIR}/libcustcalc.a; \
|
${CHMOD} 0644 $T${CUSTOMLIBDIR}/libcustcalc.a.new; \
|
||||||
echo "${RANLIB} ${CUSTOMLIBDIR}/libcustcalc.a"; \
|
mv -f $T${CUSTOMLIBDIR}/libcustcalc.a.new \
|
||||||
${RANLIB} ${CUSTOMLIBDIR}/libcustcalc.a; \
|
$T${CUSTOMLIBDIR}/libcustcalc.a; \
|
||||||
|
${RANLIB} $T${CUSTOMLIBDIR}/libcustcalc.a; \
|
||||||
|
echo "installed $T${CUSTOMLIBDIR}/libcustcalc.a"; \
|
||||||
|
fi; \
|
||||||
fi
|
fi
|
||||||
|
|
||||||
##
|
##
|
||||||
@@ -542,9 +668,8 @@ install: all
|
|||||||
c_argv.o: ../alloc.h
|
c_argv.o: ../alloc.h
|
||||||
c_argv.o: ../block.h
|
c_argv.o: ../block.h
|
||||||
c_argv.o: ../byteswap.h
|
c_argv.o: ../byteswap.h
|
||||||
c_argv.o: ../calcerr.h
|
|
||||||
c_argv.o: ../calc.h
|
c_argv.o: ../calc.h
|
||||||
c_argv.o: c_argv.c
|
c_argv.o: ../calcerr.h
|
||||||
c_argv.o: ../cmath.h
|
c_argv.o: ../cmath.h
|
||||||
c_argv.o: ../config.h
|
c_argv.o: ../config.h
|
||||||
c_argv.o: ../custom.h
|
c_argv.o: ../custom.h
|
||||||
@@ -560,17 +685,17 @@ c_argv.o: ../longbits.h
|
|||||||
c_argv.o: ../md5.h
|
c_argv.o: ../md5.h
|
||||||
c_argv.o: ../nametype.h
|
c_argv.o: ../nametype.h
|
||||||
c_argv.o: ../qmath.h
|
c_argv.o: ../qmath.h
|
||||||
c_argv.o: ../shs1.h
|
|
||||||
c_argv.o: ../shs.h
|
c_argv.o: ../shs.h
|
||||||
|
c_argv.o: ../shs1.h
|
||||||
c_argv.o: ../string.h
|
c_argv.o: ../string.h
|
||||||
c_argv.o: ../value.h
|
c_argv.o: ../value.h
|
||||||
c_argv.o: ../win32dll.h
|
c_argv.o: ../win32dll.h
|
||||||
c_argv.o: ../zmath.h
|
c_argv.o: ../zmath.h
|
||||||
|
c_argv.o: c_argv.c
|
||||||
c_devnull.o: ../alloc.h
|
c_devnull.o: ../alloc.h
|
||||||
c_devnull.o: ../block.h
|
c_devnull.o: ../block.h
|
||||||
c_devnull.o: ../byteswap.h
|
c_devnull.o: ../byteswap.h
|
||||||
c_devnull.o: ../calcerr.h
|
c_devnull.o: ../calcerr.h
|
||||||
c_devnull.o: c_devnull.c
|
|
||||||
c_devnull.o: ../cmath.h
|
c_devnull.o: ../cmath.h
|
||||||
c_devnull.o: ../config.h
|
c_devnull.o: ../config.h
|
||||||
c_devnull.o: ../custom.h
|
c_devnull.o: ../custom.h
|
||||||
@@ -586,17 +711,17 @@ c_devnull.o: ../longbits.h
|
|||||||
c_devnull.o: ../md5.h
|
c_devnull.o: ../md5.h
|
||||||
c_devnull.o: ../nametype.h
|
c_devnull.o: ../nametype.h
|
||||||
c_devnull.o: ../qmath.h
|
c_devnull.o: ../qmath.h
|
||||||
c_devnull.o: ../shs1.h
|
|
||||||
c_devnull.o: ../shs.h
|
c_devnull.o: ../shs.h
|
||||||
|
c_devnull.o: ../shs1.h
|
||||||
c_devnull.o: ../string.h
|
c_devnull.o: ../string.h
|
||||||
c_devnull.o: ../value.h
|
c_devnull.o: ../value.h
|
||||||
c_devnull.o: ../win32dll.h
|
c_devnull.o: ../win32dll.h
|
||||||
c_devnull.o: ../zmath.h
|
c_devnull.o: ../zmath.h
|
||||||
|
c_devnull.o: c_devnull.c
|
||||||
c_help.o: ../alloc.h
|
c_help.o: ../alloc.h
|
||||||
c_help.o: ../block.h
|
c_help.o: ../block.h
|
||||||
c_help.o: ../byteswap.h
|
c_help.o: ../byteswap.h
|
||||||
c_help.o: ../calcerr.h
|
c_help.o: ../calcerr.h
|
||||||
c_help.o: c_help.c
|
|
||||||
c_help.o: ../cmath.h
|
c_help.o: ../cmath.h
|
||||||
c_help.o: ../config.h
|
c_help.o: ../config.h
|
||||||
c_help.o: ../custom.h
|
c_help.o: ../custom.h
|
||||||
@@ -612,19 +737,19 @@ c_help.o: ../longbits.h
|
|||||||
c_help.o: ../md5.h
|
c_help.o: ../md5.h
|
||||||
c_help.o: ../nametype.h
|
c_help.o: ../nametype.h
|
||||||
c_help.o: ../qmath.h
|
c_help.o: ../qmath.h
|
||||||
c_help.o: ../shs1.h
|
|
||||||
c_help.o: ../shs.h
|
c_help.o: ../shs.h
|
||||||
|
c_help.o: ../shs1.h
|
||||||
c_help.o: ../string.h
|
c_help.o: ../string.h
|
||||||
c_help.o: ../value.h
|
c_help.o: ../value.h
|
||||||
c_help.o: ../win32dll.h
|
c_help.o: ../win32dll.h
|
||||||
c_help.o: ../zmath.h
|
c_help.o: ../zmath.h
|
||||||
|
c_help.o: c_help.c
|
||||||
c_pzasusb8.o: ../alloc.h
|
c_pzasusb8.o: ../alloc.h
|
||||||
c_pzasusb8.o: ../block.h
|
c_pzasusb8.o: ../block.h
|
||||||
c_pzasusb8.o: ../byteswap.h
|
c_pzasusb8.o: ../byteswap.h
|
||||||
c_pzasusb8.o: ../calcerr.h
|
c_pzasusb8.o: ../calcerr.h
|
||||||
c_pzasusb8.o: ../cmath.h
|
c_pzasusb8.o: ../cmath.h
|
||||||
c_pzasusb8.o: ../config.h
|
c_pzasusb8.o: ../config.h
|
||||||
c_pzasusb8.o: c_pzasusb8.c
|
|
||||||
c_pzasusb8.o: ../custom.h
|
c_pzasusb8.o: ../custom.h
|
||||||
c_pzasusb8.o: ../endian_calc.h
|
c_pzasusb8.o: ../endian_calc.h
|
||||||
c_pzasusb8.o: ../hash.h
|
c_pzasusb8.o: ../hash.h
|
||||||
@@ -638,21 +763,21 @@ c_pzasusb8.o: ../longbits.h
|
|||||||
c_pzasusb8.o: ../md5.h
|
c_pzasusb8.o: ../md5.h
|
||||||
c_pzasusb8.o: ../nametype.h
|
c_pzasusb8.o: ../nametype.h
|
||||||
c_pzasusb8.o: ../qmath.h
|
c_pzasusb8.o: ../qmath.h
|
||||||
c_pzasusb8.o: ../shs1.h
|
|
||||||
c_pzasusb8.o: ../shs.h
|
c_pzasusb8.o: ../shs.h
|
||||||
|
c_pzasusb8.o: ../shs1.h
|
||||||
c_pzasusb8.o: ../string.h
|
c_pzasusb8.o: ../string.h
|
||||||
c_pzasusb8.o: ../value.h
|
c_pzasusb8.o: ../value.h
|
||||||
c_pzasusb8.o: ../win32dll.h
|
c_pzasusb8.o: ../win32dll.h
|
||||||
c_pzasusb8.o: ../zmath.h
|
c_pzasusb8.o: ../zmath.h
|
||||||
|
c_pzasusb8.o: c_pzasusb8.c
|
||||||
c_sysinfo.o: ../alloc.h
|
c_sysinfo.o: ../alloc.h
|
||||||
c_sysinfo.o: ../block.h
|
c_sysinfo.o: ../block.h
|
||||||
c_sysinfo.o: ../byteswap.h
|
c_sysinfo.o: ../byteswap.h
|
||||||
c_sysinfo.o: ../calcerr.h
|
|
||||||
c_sysinfo.o: ../calc.h
|
c_sysinfo.o: ../calc.h
|
||||||
|
c_sysinfo.o: ../calcerr.h
|
||||||
c_sysinfo.o: ../cmath.h
|
c_sysinfo.o: ../cmath.h
|
||||||
c_sysinfo.o: ../conf.h
|
c_sysinfo.o: ../conf.h
|
||||||
c_sysinfo.o: ../config.h
|
c_sysinfo.o: ../config.h
|
||||||
c_sysinfo.o: c_sysinfo.c
|
|
||||||
c_sysinfo.o: ../custom.h
|
c_sysinfo.o: ../custom.h
|
||||||
c_sysinfo.o: ../endian_calc.h
|
c_sysinfo.o: ../endian_calc.h
|
||||||
c_sysinfo.o: ../fposval.h
|
c_sysinfo.o: ../fposval.h
|
||||||
@@ -670,14 +795,15 @@ c_sysinfo.o: ../md5.h
|
|||||||
c_sysinfo.o: ../nametype.h
|
c_sysinfo.o: ../nametype.h
|
||||||
c_sysinfo.o: ../prime.h
|
c_sysinfo.o: ../prime.h
|
||||||
c_sysinfo.o: ../qmath.h
|
c_sysinfo.o: ../qmath.h
|
||||||
c_sysinfo.o: ../shs1.h
|
|
||||||
c_sysinfo.o: ../shs.h
|
c_sysinfo.o: ../shs.h
|
||||||
|
c_sysinfo.o: ../shs1.h
|
||||||
c_sysinfo.o: ../string.h
|
c_sysinfo.o: ../string.h
|
||||||
c_sysinfo.o: ../value.h
|
c_sysinfo.o: ../value.h
|
||||||
c_sysinfo.o: ../win32dll.h
|
c_sysinfo.o: ../win32dll.h
|
||||||
c_sysinfo.o: ../zmath.h
|
c_sysinfo.o: ../zmath.h
|
||||||
c_sysinfo.o: ../zrand.h
|
c_sysinfo.o: ../zrand.h
|
||||||
c_sysinfo.o: ../zrandom.h
|
c_sysinfo.o: ../zrandom.h
|
||||||
|
c_sysinfo.o: c_sysinfo.c
|
||||||
custtbl.o: ../alloc.h
|
custtbl.o: ../alloc.h
|
||||||
custtbl.o: ../block.h
|
custtbl.o: ../block.h
|
||||||
custtbl.o: ../byteswap.h
|
custtbl.o: ../byteswap.h
|
||||||
@@ -685,7 +811,6 @@ custtbl.o: ../calcerr.h
|
|||||||
custtbl.o: ../cmath.h
|
custtbl.o: ../cmath.h
|
||||||
custtbl.o: ../config.h
|
custtbl.o: ../config.h
|
||||||
custtbl.o: ../custom.h
|
custtbl.o: ../custom.h
|
||||||
custtbl.o: custtbl.c
|
|
||||||
custtbl.o: ../endian_calc.h
|
custtbl.o: ../endian_calc.h
|
||||||
custtbl.o: ../hash.h
|
custtbl.o: ../hash.h
|
||||||
custtbl.o: ../have_const.h
|
custtbl.o: ../have_const.h
|
||||||
@@ -698,9 +823,10 @@ custtbl.o: ../longbits.h
|
|||||||
custtbl.o: ../md5.h
|
custtbl.o: ../md5.h
|
||||||
custtbl.o: ../nametype.h
|
custtbl.o: ../nametype.h
|
||||||
custtbl.o: ../qmath.h
|
custtbl.o: ../qmath.h
|
||||||
custtbl.o: ../shs1.h
|
|
||||||
custtbl.o: ../shs.h
|
custtbl.o: ../shs.h
|
||||||
|
custtbl.o: ../shs1.h
|
||||||
custtbl.o: ../string.h
|
custtbl.o: ../string.h
|
||||||
custtbl.o: ../value.h
|
custtbl.o: ../value.h
|
||||||
custtbl.o: ../win32dll.h
|
custtbl.o: ../win32dll.h
|
||||||
custtbl.o: ../zmath.h
|
custtbl.o: ../zmath.h
|
||||||
|
custtbl.o: custtbl.c
|
||||||
|
@@ -17,8 +17,8 @@
|
|||||||
* 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.
|
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||||
*
|
*
|
||||||
* @(#) $Revision: 29.4 $
|
* @(#) $Revision: 29.5 $
|
||||||
* @(#) $Id: c_sysinfo.c,v 29.4 2000/07/17 15:37:12 chongo Exp $
|
* @(#) $Id: c_sysinfo.c,v 29.5 2001/04/14 23:04:17 chongo Exp $
|
||||||
* @(#) $Source: /usr/local/src/cmd/calc/custom/RCS/c_sysinfo.c,v $
|
* @(#) $Source: /usr/local/src/cmd/calc/custom/RCS/c_sysinfo.c,v $
|
||||||
*
|
*
|
||||||
* Under source code control: 1997/03/09 23:14:40
|
* Under source code control: 1997/03/09 23:14:40
|
||||||
@@ -64,7 +64,7 @@ struct infoname {
|
|||||||
FULL nmbr; /* if str==NULL ==> value fo #define as a FULL */
|
FULL nmbr; /* if str==NULL ==> value fo #define as a FULL */
|
||||||
};
|
};
|
||||||
static struct infoname sys_info[] = {
|
static struct infoname sys_info[] = {
|
||||||
{"A55", "slots in an additive 55 table", NULL, (FULL)A55},
|
{"S100", "slots in an subtractive 100 table", NULL, (FULL)S100},
|
||||||
{"BASE", "base for calculations", NULL, (FULL)BASE},
|
{"BASE", "base for calculations", NULL, (FULL)BASE},
|
||||||
{"BASE1", "one less than base", NULL, (FULL)BASE},
|
{"BASE1", "one less than base", NULL, (FULL)BASE},
|
||||||
{"BASEB", "bits in the calculation base", NULL, (FULL)BASEB},
|
{"BASEB", "bits in the calculation base", NULL, (FULL)BASEB},
|
||||||
|
142
file.c
142
file.c
@@ -19,8 +19,8 @@
|
|||||||
* 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.
|
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||||
*
|
*
|
||||||
* @(#) $Revision: 29.6 $
|
* @(#) $Revision: 29.7 $
|
||||||
* @(#) $Id: file.c,v 29.6 2001/03/17 21:31:47 chongo Exp $
|
* @(#) $Id: file.c,v 29.7 2001/04/10 22:06:46 chongo Exp $
|
||||||
* @(#) $Source: /usr/local/src/cmd/calc/RCS/file.c,v $
|
* @(#) $Source: /usr/local/src/cmd/calc/RCS/file.c,v $
|
||||||
*
|
*
|
||||||
* Under source code control: 1991/07/20 00:21:56
|
* Under source code control: 1991/07/20 00:21:56
|
||||||
@@ -158,7 +158,7 @@ file_init(void)
|
|||||||
} else {
|
} else {
|
||||||
fp = (FILE *) fdopen(i, "w");
|
fp = (FILE *) fdopen(i, "w");
|
||||||
if (fp) {
|
if (fp) {
|
||||||
strcpy(files[idnum].mode, "w?");
|
strcpy(files[idnum].mode, "w");
|
||||||
files[idnum].reading = FALSE;
|
files[idnum].reading = FALSE;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@@ -207,7 +207,7 @@ openid(char *name, char *mode)
|
|||||||
int i;
|
int i;
|
||||||
|
|
||||||
if (idnum >= MAXFILES)
|
if (idnum >= MAXFILES)
|
||||||
return -77;
|
return -E_FOPEN3;
|
||||||
|
|
||||||
fiop = &files[3];
|
fiop = &files[3];
|
||||||
for (i = 3; i < MAXFILES; fiop++,i++) {
|
for (i = 3; i < MAXFILES; fiop++,i++) {
|
||||||
@@ -243,11 +243,32 @@ openid(char *name, char *mode)
|
|||||||
fiop->reading = TRUE;
|
fiop->reading = TRUE;
|
||||||
fiop->writing = TRUE;
|
fiop->writing = TRUE;
|
||||||
fiop->action = 0;
|
fiop->action = 0;
|
||||||
if (mode[1] == '\0') {
|
|
||||||
if (*mode == 'r')
|
/*
|
||||||
|
* determine file open mode
|
||||||
|
*
|
||||||
|
* While a leading 'r' is for reading and a leading 'w' is
|
||||||
|
* for writing, the presense of a '+' in the string means
|
||||||
|
* both reading and writing. A leading 'a' means append
|
||||||
|
* which is writing.
|
||||||
|
*/
|
||||||
|
if (mode[0] == 'r') {
|
||||||
|
fiop->reading = TRUE;
|
||||||
|
if (strchr(mode, '+') == NULL) {
|
||||||
fiop->writing = FALSE;
|
fiop->writing = FALSE;
|
||||||
else
|
} else {
|
||||||
|
fiop->writing = TRUE;
|
||||||
|
}
|
||||||
|
} else if (mode[0] == 'w' || mode[0] == 'a') {
|
||||||
|
fiop->writing = TRUE;
|
||||||
|
if (strchr(mode, '+') == NULL) {
|
||||||
fiop->reading = FALSE;
|
fiop->reading = FALSE;
|
||||||
|
} else {
|
||||||
|
fiop->reading = TRUE;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
fiop->reading = FALSE;
|
||||||
|
fiop->writing = FALSE;
|
||||||
}
|
}
|
||||||
strcpy(fiop->mode, mode);
|
strcpy(fiop->mode, mode);
|
||||||
return id;
|
return id;
|
||||||
@@ -346,11 +367,32 @@ reopenid(FILEID id, char *mode, char *name)
|
|||||||
fiop->reading = TRUE;
|
fiop->reading = TRUE;
|
||||||
fiop->writing = TRUE;
|
fiop->writing = TRUE;
|
||||||
fiop->action = 0;
|
fiop->action = 0;
|
||||||
if (mode[1] == '\0') {
|
|
||||||
if (*mode == 'r')
|
/*
|
||||||
|
* determine file open mode
|
||||||
|
*
|
||||||
|
* While a leading 'r' is for reading and a leading 'w' is
|
||||||
|
* for writing, the presense of a '+' in the string means
|
||||||
|
* both reading and writing. A leading 'a' means append
|
||||||
|
* which is writing.
|
||||||
|
*/
|
||||||
|
if (mode[0] == 'r') {
|
||||||
|
fiop->reading = TRUE;
|
||||||
|
if (strchr(mode, '+') == NULL) {
|
||||||
fiop->writing = FALSE;
|
fiop->writing = FALSE;
|
||||||
else
|
} else {
|
||||||
|
fiop->writing = TRUE;
|
||||||
|
}
|
||||||
|
} else if (mode[0] == 'w' || mode[0] == 'a') {
|
||||||
|
fiop->writing = TRUE;
|
||||||
|
if (strchr(mode, '+') == NULL) {
|
||||||
fiop->reading = FALSE;
|
fiop->reading = FALSE;
|
||||||
|
} else {
|
||||||
|
fiop->reading = TRUE;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
fiop->reading = FALSE;
|
||||||
|
fiop->writing = FALSE;
|
||||||
}
|
}
|
||||||
strcpy(fiop->mode, mode);
|
strcpy(fiop->mode, mode);
|
||||||
return id;
|
return id;
|
||||||
@@ -358,13 +400,13 @@ reopenid(FILEID id, char *mode, char *name)
|
|||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Find the file I/O structure for the specified file id, and verify that
|
* Find the file I/O structure for the specified file id, and verifies that
|
||||||
* it is opened in the required manner ('r' for reading or 'w' for writing).
|
* it is opened in the required manner (0 for reading or 1 for writing).
|
||||||
* If mode is 0, then no open checks are made at all, and NULL is then
|
* If writable is -1, then no open checks are made at all and NULL is then
|
||||||
* returned if the id represents a closed file.
|
* returned if the id represents a closed file.
|
||||||
*/
|
*/
|
||||||
FILEIO *
|
FILEIO *
|
||||||
findid(FILEID id, int mode)
|
findid(FILEID id, int writable)
|
||||||
{
|
{
|
||||||
FILEIO *fiop; /* file structure */
|
FILEIO *fiop; /* file structure */
|
||||||
int i;
|
int i;
|
||||||
@@ -383,21 +425,11 @@ findid(FILEID id, int mode)
|
|||||||
if (i == idnum)
|
if (i == idnum)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
switch (mode) {
|
if (writable >= 0) {
|
||||||
case 'r':
|
if ((writable && !fiop->writing) ||
|
||||||
if (!fiop->reading)
|
(!writable && !fiop->reading)) {
|
||||||
return NULL;
|
return NULL;
|
||||||
break;
|
}
|
||||||
case 'w':
|
|
||||||
if (!fiop->writing)
|
|
||||||
return NULL;
|
|
||||||
break;
|
|
||||||
case 0:
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
/* This should not happen */
|
|
||||||
math_error("Unknown findid mode");
|
|
||||||
/*NOTREACHED*/
|
|
||||||
}
|
}
|
||||||
return fiop;
|
return fiop;
|
||||||
}
|
}
|
||||||
@@ -409,7 +441,7 @@ findid(FILEID id, int mode)
|
|||||||
BOOL
|
BOOL
|
||||||
validid(FILEID id)
|
validid(FILEID id)
|
||||||
{
|
{
|
||||||
return (findid(id, 0) != NULL);
|
return (findid(id, -1) != NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -505,7 +537,7 @@ errorid(FILEID id)
|
|||||||
{
|
{
|
||||||
FILEIO *fiop; /* file structure */
|
FILEIO *fiop; /* file structure */
|
||||||
|
|
||||||
fiop = findid(id, 0);
|
fiop = findid(id, -1);
|
||||||
if (fiop == NULL)
|
if (fiop == NULL)
|
||||||
return EOF;
|
return EOF;
|
||||||
return (ferror(fiop->fp) != 0);
|
return (ferror(fiop->fp) != 0);
|
||||||
@@ -520,7 +552,7 @@ eofid(FILEID id)
|
|||||||
{
|
{
|
||||||
FILEIO *fiop; /* file structure */
|
FILEIO *fiop; /* file structure */
|
||||||
|
|
||||||
fiop = findid(id, 0);
|
fiop = findid(id, -1);
|
||||||
if (fiop == NULL)
|
if (fiop == NULL)
|
||||||
return EOF;
|
return EOF;
|
||||||
return (feof(fiop->fp) != 0);
|
return (feof(fiop->fp) != 0);
|
||||||
@@ -535,7 +567,7 @@ flushid(FILEID id)
|
|||||||
{
|
{
|
||||||
FILEIO *fiop; /* file structure */
|
FILEIO *fiop; /* file structure */
|
||||||
|
|
||||||
fiop = findid(id, 0);
|
fiop = findid(id, -1);
|
||||||
if (fiop == NULL)
|
if (fiop == NULL)
|
||||||
return 0;
|
return 0;
|
||||||
if (!fiop->writing || fiop->action == 'r')
|
if (!fiop->writing || fiop->action == 'r')
|
||||||
@@ -598,7 +630,7 @@ readid(FILEID id, int flags, char **retptr)
|
|||||||
totlen = 0;
|
totlen = 0;
|
||||||
str = NULL;
|
str = NULL;
|
||||||
|
|
||||||
fiop = findid(id, 'r');
|
fiop = findid(id, FALSE);
|
||||||
if (fiop == NULL)
|
if (fiop == NULL)
|
||||||
return 1;
|
return 1;
|
||||||
nlstop = (flags & 1);
|
nlstop = (flags & 1);
|
||||||
@@ -679,7 +711,7 @@ getcharid(FILEID id)
|
|||||||
FILEIO *fiop;
|
FILEIO *fiop;
|
||||||
FILEPOS fpos;
|
FILEPOS fpos;
|
||||||
|
|
||||||
fiop = findid(id, 'r');
|
fiop = findid(id, FALSE);
|
||||||
if (fiop == NULL)
|
if (fiop == NULL)
|
||||||
return -2;
|
return -2;
|
||||||
if (fiop->action == 'w') {
|
if (fiop->action == 'w') {
|
||||||
@@ -710,7 +742,7 @@ printid(FILEID id, int flags)
|
|||||||
/*
|
/*
|
||||||
* filewall - file is closed
|
* filewall - file is closed
|
||||||
*/
|
*/
|
||||||
fiop = findid(id, 0);
|
fiop = findid(id, -1);
|
||||||
if (fiop == NULL) {
|
if (fiop == NULL) {
|
||||||
if (flags & PRINT_UNAMBIG)
|
if (flags & PRINT_UNAMBIG)
|
||||||
math_fmt("FILE %d closed", id);
|
math_fmt("FILE %d closed", id);
|
||||||
@@ -787,7 +819,7 @@ idprintf(FILEID id, char *fmt, int count, VALUE **vals)
|
|||||||
BOOL printstring;
|
BOOL printstring;
|
||||||
BOOL printchar;
|
BOOL printchar;
|
||||||
|
|
||||||
fiop = findid(id, 'w');
|
fiop = findid(id, TRUE);
|
||||||
if (fiop == NULL)
|
if (fiop == NULL)
|
||||||
return 1;
|
return 1;
|
||||||
if (fiop->action == 'r') {
|
if (fiop->action == 'r') {
|
||||||
@@ -1014,7 +1046,7 @@ idfputc(FILEID id, int ch)
|
|||||||
FILEPOS fpos;
|
FILEPOS fpos;
|
||||||
|
|
||||||
/* get the file info pointer */
|
/* get the file info pointer */
|
||||||
fiop = findid(id, 'w');
|
fiop = findid(id, TRUE);
|
||||||
if (fiop == NULL)
|
if (fiop == NULL)
|
||||||
return 1;
|
return 1;
|
||||||
if (fiop->action == 'r') {
|
if (fiop->action == 'r') {
|
||||||
@@ -1049,7 +1081,7 @@ idungetc(FILEID id, int ch)
|
|||||||
{
|
{
|
||||||
FILEIO *fiop;
|
FILEIO *fiop;
|
||||||
|
|
||||||
fiop = findid(id, 'r');
|
fiop = findid(id, FALSE);
|
||||||
if (fiop == NULL)
|
if (fiop == NULL)
|
||||||
return -2;
|
return -2;
|
||||||
if (fiop->action != 'r')
|
if (fiop->action != 'r')
|
||||||
@@ -1072,7 +1104,7 @@ idfputs(FILEID id, char *str)
|
|||||||
FILEPOS fpos;
|
FILEPOS fpos;
|
||||||
|
|
||||||
/* get the file info pointer */
|
/* get the file info pointer */
|
||||||
fiop = findid(id, 'w');
|
fiop = findid(id, TRUE);
|
||||||
if (fiop == NULL)
|
if (fiop == NULL)
|
||||||
return 1;
|
return 1;
|
||||||
|
|
||||||
@@ -1110,7 +1142,7 @@ idfputstr(FILEID id, char *str)
|
|||||||
FILEPOS fpos;
|
FILEPOS fpos;
|
||||||
|
|
||||||
/* get the file info pointer */
|
/* get the file info pointer */
|
||||||
fiop = findid(id, 'w');
|
fiop = findid(id, TRUE);
|
||||||
if (fiop == NULL)
|
if (fiop == NULL)
|
||||||
return 1;
|
return 1;
|
||||||
|
|
||||||
@@ -1140,7 +1172,7 @@ int
|
|||||||
rewindid(FILEID id)
|
rewindid(FILEID id)
|
||||||
{
|
{
|
||||||
FILEIO *fiop;
|
FILEIO *fiop;
|
||||||
fiop = findid(id, 0);
|
fiop = findid(id, -1);
|
||||||
if (fiop == NULL)
|
if (fiop == NULL)
|
||||||
return 1;
|
return 1;
|
||||||
rewind(fiop->fp);
|
rewind(fiop->fp);
|
||||||
@@ -1328,7 +1360,7 @@ getloc(FILEID id, ZVALUE *res)
|
|||||||
/*
|
/*
|
||||||
* convert id to stream
|
* convert id to stream
|
||||||
*/
|
*/
|
||||||
fiop = findid(id, 0);
|
fiop = findid(id, -1);
|
||||||
if (fiop == NULL) {
|
if (fiop == NULL) {
|
||||||
/* file not open */
|
/* file not open */
|
||||||
return -1;
|
return -1;
|
||||||
@@ -1353,7 +1385,7 @@ ftellid(FILEID id, ZVALUE *res)
|
|||||||
FILEPOS fpos; /* current file position */
|
FILEPOS fpos; /* current file position */
|
||||||
|
|
||||||
/* get FILEIO */
|
/* get FILEIO */
|
||||||
fiop = findid(id, 0);
|
fiop = findid(id, -1);
|
||||||
if (fiop == NULL)
|
if (fiop == NULL)
|
||||||
return -2;
|
return -2;
|
||||||
|
|
||||||
@@ -1376,7 +1408,7 @@ fseekid(FILEID id, ZVALUE offset, int whence)
|
|||||||
int ret = 0; /* return code */
|
int ret = 0; /* return code */
|
||||||
|
|
||||||
/* setup */
|
/* setup */
|
||||||
fiop = findid(id, 0);
|
fiop = findid(id, -1);
|
||||||
if (fiop == NULL)
|
if (fiop == NULL)
|
||||||
return -2;
|
return -2;
|
||||||
|
|
||||||
@@ -1501,7 +1533,7 @@ setloc(FILEID id, ZVALUE zpos)
|
|||||||
/*
|
/*
|
||||||
* convert id to stream
|
* convert id to stream
|
||||||
*/
|
*/
|
||||||
fiop = findid(id, 0);
|
fiop = findid(id, -1);
|
||||||
if (fiop == NULL) {
|
if (fiop == NULL) {
|
||||||
/* file not open */
|
/* file not open */
|
||||||
return -1;
|
return -1;
|
||||||
@@ -1669,7 +1701,7 @@ getsize(FILEID id, ZVALUE *res)
|
|||||||
/*
|
/*
|
||||||
* convert id to stream
|
* convert id to stream
|
||||||
*/
|
*/
|
||||||
fiop = findid(id, 0);
|
fiop = findid(id, -1);
|
||||||
if (fiop == NULL) {
|
if (fiop == NULL) {
|
||||||
/* file not open */
|
/* file not open */
|
||||||
return 1;
|
return 1;
|
||||||
@@ -1705,7 +1737,7 @@ get_device(FILEID id, ZVALUE *dev)
|
|||||||
/*
|
/*
|
||||||
* convert id to stream
|
* convert id to stream
|
||||||
*/
|
*/
|
||||||
fiop = findid(id, 0);
|
fiop = findid(id, -1);
|
||||||
if (fiop == NULL) {
|
if (fiop == NULL) {
|
||||||
/* file not open */
|
/* file not open */
|
||||||
return -1;
|
return -1;
|
||||||
@@ -1738,7 +1770,7 @@ get_inode(FILEID id, ZVALUE *inode)
|
|||||||
/*
|
/*
|
||||||
* convert id to stream
|
* convert id to stream
|
||||||
*/
|
*/
|
||||||
fiop = findid(id, 0);
|
fiop = findid(id, -1);
|
||||||
if (fiop == NULL) {
|
if (fiop == NULL) {
|
||||||
/* file not open */
|
/* file not open */
|
||||||
return -1;
|
return -1;
|
||||||
@@ -1774,7 +1806,7 @@ zfilesize(FILEID id)
|
|||||||
ZVALUE ret; /* file size as a ZVALUE return value */
|
ZVALUE ret; /* file size as a ZVALUE return value */
|
||||||
|
|
||||||
/* file FILEIO */
|
/* file FILEIO */
|
||||||
fiop = findid(id, 0);
|
fiop = findid(id, -1);
|
||||||
if (fiop == NULL) {
|
if (fiop == NULL) {
|
||||||
/* return neg value for non-file error */
|
/* return neg value for non-file error */
|
||||||
itoz(-1, &ret);
|
itoz(-1, &ret);
|
||||||
@@ -2144,7 +2176,7 @@ fscanfid(FILEID id, char *fmt, int count, VALUE **vals)
|
|||||||
FILE *fp;
|
FILE *fp;
|
||||||
FILEPOS fpos;
|
FILEPOS fpos;
|
||||||
|
|
||||||
fiop = findid(id, 'r');
|
fiop = findid(id, FALSE);
|
||||||
if (fiop == NULL)
|
if (fiop == NULL)
|
||||||
return -2;
|
return -2;
|
||||||
|
|
||||||
@@ -2408,7 +2440,7 @@ isattyid(FILEID id)
|
|||||||
{
|
{
|
||||||
FILEIO *fiop;
|
FILEIO *fiop;
|
||||||
|
|
||||||
fiop = findid(id, 0);
|
fiop = findid(id, -1);
|
||||||
if (fiop == NULL)
|
if (fiop == NULL)
|
||||||
return -2;
|
return -2;
|
||||||
return isatty(fileno(fiop->fp));
|
return isatty(fileno(fiop->fp));
|
||||||
@@ -2445,7 +2477,7 @@ fsearch(FILEID id, char *str, ZVALUE start, ZVALUE end, ZVALUE *res)
|
|||||||
long k = 0;
|
long k = 0;
|
||||||
|
|
||||||
/* get FILEIO */
|
/* get FILEIO */
|
||||||
fiop = findid(id, 'r');
|
fiop = findid(id, FALSE);
|
||||||
if (fiop == NULL)
|
if (fiop == NULL)
|
||||||
return -2;
|
return -2;
|
||||||
|
|
||||||
@@ -2564,7 +2596,7 @@ frsearch(FILEID id, char *str, ZVALUE first, ZVALUE last, ZVALUE *res)
|
|||||||
char *s; /* str comparison pointer */
|
char *s; /* str comparison pointer */
|
||||||
|
|
||||||
/* get FILEIO */
|
/* get FILEIO */
|
||||||
fiop = findid(id, 'r');
|
fiop = findid(id, FALSE);
|
||||||
if (fiop == NULL)
|
if (fiop == NULL)
|
||||||
return -2;
|
return -2;
|
||||||
|
|
||||||
@@ -2641,7 +2673,7 @@ findfname(FILEID id)
|
|||||||
{
|
{
|
||||||
FILEIO *fiop;
|
FILEIO *fiop;
|
||||||
|
|
||||||
fiop = findid(id, 0);
|
fiop = findid(id, -1);
|
||||||
|
|
||||||
if (fiop == NULL)
|
if (fiop == NULL)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
14
file.h
14
file.h
@@ -19,8 +19,8 @@
|
|||||||
* 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.
|
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||||
*
|
*
|
||||||
* @(#) $Revision: 29.2 $
|
* @(#) $Revision: 29.5 $
|
||||||
* @(#) $Id: file.h,v 29.2 2000/06/07 14:02:13 chongo Exp $
|
* @(#) $Id: file.h,v 29.5 2001/06/08 21:00:58 chongo Exp $
|
||||||
* @(#) $Source: /usr/local/src/cmd/calc/RCS/file.h,v $
|
* @(#) $Source: /usr/local/src/cmd/calc/RCS/file.h,v $
|
||||||
*
|
*
|
||||||
* Under source code control: 1996/05/24 05:55:58
|
* Under source code control: 1996/05/24 05:55:58
|
||||||
@@ -35,7 +35,11 @@
|
|||||||
#define __FILE_H__
|
#define __FILE_H__
|
||||||
|
|
||||||
|
|
||||||
#include "have_fpos.h"
|
#if defined(CALC_SRC) /* if we are building from the calc source tree */
|
||||||
|
# include "have_fpos.h"
|
||||||
|
#else
|
||||||
|
# include <calc/have_fpos.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -50,7 +54,7 @@ typedef struct {
|
|||||||
BOOL reading; /* TRUE if opened for reading */
|
BOOL reading; /* TRUE if opened for reading */
|
||||||
BOOL writing; /* TRUE if opened for writing */
|
BOOL writing; /* TRUE if opened for writing */
|
||||||
char action; /* most recent use for 'r', 'w' or 0 */
|
char action; /* most recent use for 'r', 'w' or 0 */
|
||||||
char mode[3]; /* open mode */
|
char mode[sizeof("rb+")];/* open mode */
|
||||||
} FILEIO;
|
} FILEIO;
|
||||||
|
|
||||||
|
|
||||||
@@ -85,7 +89,7 @@ typedef struct {
|
|||||||
/*
|
/*
|
||||||
* external functions
|
* external functions
|
||||||
*/
|
*/
|
||||||
extern FILEIO * findid(FILEID id, int mode);
|
extern FILEIO * findid(FILEID id, int writable);
|
||||||
extern int fgetposid(FILEID id, FILEPOS *ptr);
|
extern int fgetposid(FILEID id, FILEPOS *ptr);
|
||||||
extern int fsetposid(FILEID id, FILEPOS *ptr);
|
extern int fsetposid(FILEID id, FILEPOS *ptr);
|
||||||
extern int get_open_siz(FILE *fp, ZVALUE *res);
|
extern int get_open_siz(FILE *fp, ZVALUE *res);
|
||||||
|
59
func.c
59
func.c
@@ -19,8 +19,8 @@
|
|||||||
* 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.
|
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||||
*
|
*
|
||||||
* @(#) $Revision: 29.8 $
|
* @(#) $Revision: 29.10 $
|
||||||
* @(#) $Id: func.c,v 29.8 2001/04/08 10:06:56 chongo Exp $
|
* @(#) $Id: func.c,v 29.10 2001/05/29 00:41:22 chongo Exp $
|
||||||
* @(#) $Source: /usr/local/src/cmd/calc/RCS/func.c,v $
|
* @(#) $Source: /usr/local/src/cmd/calc/RCS/func.c,v $
|
||||||
*
|
*
|
||||||
* Under source code control: 1990/02/15 01:48:15
|
* Under source code control: 1990/02/15 01:48:15
|
||||||
@@ -4987,24 +4987,31 @@ f_fopen(VALUE *v1, VALUE *v2)
|
|||||||
/* initialize VALUE */
|
/* initialize VALUE */
|
||||||
result.v_subtype = V_NOSUBTYPE;
|
result.v_subtype = V_NOSUBTYPE;
|
||||||
|
|
||||||
|
/* check for a valid mode [rwa][b+\0][b+\0] */
|
||||||
if (v1->v_type != V_STR || v2->v_type != V_STR)
|
if (v1->v_type != V_STR || v2->v_type != V_STR)
|
||||||
return error_value(E_FOPEN1);
|
return error_value(E_FOPEN1);
|
||||||
mode = v2->v_str->s_str;
|
mode = v2->v_str->s_str;
|
||||||
|
|
||||||
if ((*mode != 'r') && (*mode != 'w') && (*mode != 'a'))
|
if ((*mode != 'r') && (*mode != 'w') && (*mode != 'a'))
|
||||||
return error_value(E_FOPEN2);
|
return error_value(E_FOPEN2);
|
||||||
if (mode[1] != '\0') {
|
if (mode[1] != '\0') {
|
||||||
if (mode[1] != '+')
|
if (mode[1] != '+' && mode[1] != 'b')
|
||||||
return error_value(E_FOPEN2);
|
|
||||||
if (mode[2] != '\0')
|
|
||||||
return error_value(E_FOPEN2);
|
return error_value(E_FOPEN2);
|
||||||
|
if (mode[2] != '\0') {
|
||||||
|
if ((mode[2] != '+' && mode[2] != 'b') ||
|
||||||
|
mode[1] == mode[2])
|
||||||
|
return error_value(E_FOPEN2);
|
||||||
|
if (mode[3] != '\0')
|
||||||
|
return error_value(E_FOPEN2);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* try to open */
|
||||||
errno = 0;
|
errno = 0;
|
||||||
id = openid(v1->v_str->s_str, v2->v_str->s_str);
|
id = openid(v1->v_str->s_str, v2->v_str->s_str);
|
||||||
if (id == FILEID_NONE)
|
if (id == FILEID_NONE)
|
||||||
return error_value(errno);
|
return error_value(errno);
|
||||||
if (id < 0)
|
if (id < 0)
|
||||||
return error_value(E_FOPEN3);
|
return error_value(-id);
|
||||||
result.v_type = V_FILE;
|
result.v_type = V_FILE;
|
||||||
result.v_file = id;
|
result.v_file = id;
|
||||||
return result;
|
return result;
|
||||||
@@ -5021,21 +5028,27 @@ f_freopen(int count, VALUE **vals)
|
|||||||
/* initialize VALUE */
|
/* initialize VALUE */
|
||||||
result.v_subtype = V_NOSUBTYPE;
|
result.v_subtype = V_NOSUBTYPE;
|
||||||
|
|
||||||
|
/* check for a valid mode [rwa][b+\0][b+\0] */
|
||||||
if (vals[0]->v_type != V_FILE)
|
if (vals[0]->v_type != V_FILE)
|
||||||
return error_value(E_FREOPEN1);
|
return error_value(E_FREOPEN1);
|
||||||
if (vals[1]->v_type != V_STR)
|
if (vals[1]->v_type != V_STR)
|
||||||
return error_value(E_FREOPEN2);
|
return error_value(E_FREOPEN2);
|
||||||
|
|
||||||
mode = vals[1]->v_str->s_str;
|
mode = vals[1]->v_str->s_str;
|
||||||
|
|
||||||
if ((*mode != 'r') && (*mode != 'w') && (*mode != 'a'))
|
if ((*mode != 'r') && (*mode != 'w') && (*mode != 'a'))
|
||||||
return error_value(E_FREOPEN2);
|
return error_value(E_FREOPEN2);
|
||||||
if (mode[1] != '\0') {
|
if (mode[1] != '\0') {
|
||||||
if (mode[1] != '+')
|
if (mode[1] != '+' && mode[1] != 'b')
|
||||||
return error_value(E_FREOPEN2);
|
|
||||||
if (mode[2] != '\0')
|
|
||||||
return error_value(E_FREOPEN2);
|
return error_value(E_FREOPEN2);
|
||||||
|
if (mode[2] != '\0') {
|
||||||
|
if ((mode[2] != '+' && mode[2] != 'b') ||
|
||||||
|
mode[1] == mode[2])
|
||||||
|
return error_value(E_FOPEN2);
|
||||||
|
if (mode[3] != '\0')
|
||||||
|
return error_value(E_FREOPEN2);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* try to reopen */
|
||||||
errno = 0;
|
errno = 0;
|
||||||
if (count == 2) {
|
if (count == 2) {
|
||||||
id = reopenid(vals[0]->v_file, mode, NULL);
|
id = reopenid(vals[0]->v_file, mode, NULL);
|
||||||
@@ -6141,10 +6154,10 @@ f_fgetfield(VALUE *vp)
|
|||||||
result.v_subtype = V_NOSUBTYPE;
|
result.v_subtype = V_NOSUBTYPE;
|
||||||
|
|
||||||
if (vp->v_type != V_FILE)
|
if (vp->v_type != V_FILE)
|
||||||
return error_value(E_FGETWORD1);
|
return error_value(E_FGETFIELD1);
|
||||||
i = readid(vp->v_file, 14, &str);
|
i = readid(vp->v_file, 14, &str);
|
||||||
if (i > 0)
|
if (i > 0)
|
||||||
return error_value(E_FGETWORD2);
|
return error_value(E_FGETFIELD2);
|
||||||
result.v_type = V_NULL;
|
result.v_type = V_NULL;
|
||||||
if (i == 0) {
|
if (i == 0) {
|
||||||
result.v_type = V_STR;
|
result.v_type = V_STR;
|
||||||
@@ -7290,6 +7303,7 @@ f_free(int count, VALUE **vals)
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static VALUE
|
static VALUE
|
||||||
f_freeglobals(void)
|
f_freeglobals(void)
|
||||||
{
|
{
|
||||||
@@ -7303,6 +7317,7 @@ f_freeglobals(void)
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static VALUE
|
static VALUE
|
||||||
f_freeredc(void)
|
f_freeredc(void)
|
||||||
{
|
{
|
||||||
@@ -7710,6 +7725,20 @@ f_argv(int count, VALUE **vals)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static VALUE
|
||||||
|
f_version(void)
|
||||||
|
{
|
||||||
|
VALUE result;
|
||||||
|
|
||||||
|
/* return the calc verstion string */
|
||||||
|
result.v_type = V_STR;
|
||||||
|
result.v_subtype = V_NOSUBTYPE;
|
||||||
|
result.v_str = makestring(strdup(version()));
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
#endif /* !FUNCLIST */
|
#endif /* !FUNCLIST */
|
||||||
|
|
||||||
|
|
||||||
@@ -8312,6 +8341,8 @@ static CONST struct builtin builtins[] = {
|
|||||||
"truncate a to b number of decimal places"},
|
"truncate a to b number of decimal places"},
|
||||||
{"ungetc", 2, 2, 0, OP_NOP, 0, f_ungetc,
|
{"ungetc", 2, 2, 0, OP_NOP, 0, f_ungetc,
|
||||||
"unget char read from file"},
|
"unget char read from file"},
|
||||||
|
{"version", 0, 0, 0, OP_NOP, 0, f_version,
|
||||||
|
"calc version string"},
|
||||||
{"xor", 1, IN, 0, OP_NOP, 0, f_xor,
|
{"xor", 1, IN, 0, OP_NOP, 0, f_xor,
|
||||||
"logical xor"},
|
"logical xor"},
|
||||||
|
|
||||||
|
13
func.h
13
func.h
@@ -17,8 +17,8 @@
|
|||||||
* 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.
|
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||||
*
|
*
|
||||||
* @(#) $Revision: 29.2 $
|
* @(#) $Revision: 29.4 $
|
||||||
* @(#) $Id: func.h,v 29.2 2000/06/07 14:02:13 chongo Exp $
|
* @(#) $Id: func.h,v 29.4 2001/06/08 21:00:58 chongo Exp $
|
||||||
* @(#) $Source: /usr/local/src/cmd/calc/RCS/func.h,v $
|
* @(#) $Source: /usr/local/src/cmd/calc/RCS/func.h,v $
|
||||||
*
|
*
|
||||||
* Under source code control: 1990/02/15 01:48:33
|
* Under source code control: 1990/02/15 01:48:33
|
||||||
@@ -32,8 +32,13 @@
|
|||||||
#define __FUNC_H__
|
#define __FUNC_H__
|
||||||
|
|
||||||
|
|
||||||
#include "calc.h"
|
#if defined(CALC_SRC) /* if we are building from the calc source tree */
|
||||||
#include "label.h"
|
# include "calc.h"
|
||||||
|
# include "label.h"
|
||||||
|
#else
|
||||||
|
# include <calc/calc.h>
|
||||||
|
# include <calc/label.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
5
hash.c
5
hash.c
@@ -17,8 +17,8 @@
|
|||||||
* 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.
|
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||||
*
|
*
|
||||||
* @(#) $Revision: 29.3 $
|
* @(#) $Revision: 29.4 $
|
||||||
* @(#) $Id: hash.c,v 29.3 2000/06/07 14:02:13 chongo Exp $
|
* @(#) $Id: hash.c,v 29.4 2001/04/14 22:47:21 chongo Exp $
|
||||||
* @(#) $Source: /usr/local/src/cmd/calc/RCS/hash.c,v $
|
* @(#) $Source: /usr/local/src/cmd/calc/RCS/hash.c,v $
|
||||||
*
|
*
|
||||||
* Under source code control: 1995/11/23 05:13:11
|
* Under source code control: 1995/11/23 05:13:11
|
||||||
@@ -911,6 +911,7 @@ hash_value(int type, void *v, HASH *state)
|
|||||||
(USB8 *)value->v_rand->buffer, SLEN*FULL_BITS/8);
|
(USB8 *)value->v_rand->buffer, SLEN*FULL_BITS/8);
|
||||||
state = hash_int(type, value->v_rand->j, state);
|
state = hash_int(type, value->v_rand->j, state);
|
||||||
state = hash_int(type, value->v_rand->k, state);
|
state = hash_int(type, value->v_rand->k, state);
|
||||||
|
state = hash_int(type, value->v_rand->need_to_skip, state);
|
||||||
(state->update)(state,
|
(state->update)(state,
|
||||||
(USB8 *)value->v_rand->slot, SCNT*FULL_BITS/8);
|
(USB8 *)value->v_rand->slot, SCNT*FULL_BITS/8);
|
||||||
(state->update)(state,
|
(state->update)(state,
|
||||||
|
19
hash.h
19
hash.h
@@ -17,8 +17,8 @@
|
|||||||
* 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.
|
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||||
*
|
*
|
||||||
* @(#) $Revision: 29.2 $
|
* @(#) $Revision: 29.4 $
|
||||||
* @(#) $Id: hash.h,v 29.2 2000/06/07 14:02:13 chongo Exp $
|
* @(#) $Id: hash.h,v 29.4 2001/06/08 21:00:58 chongo Exp $
|
||||||
* @(#) $Source: /usr/local/src/cmd/calc/RCS/hash.h,v $
|
* @(#) $Source: /usr/local/src/cmd/calc/RCS/hash.h,v $
|
||||||
*
|
*
|
||||||
* Under source code control: 1995/11/14 23:57:45
|
* Under source code control: 1995/11/14 23:57:45
|
||||||
@@ -33,10 +33,17 @@
|
|||||||
#define __HASH_H__
|
#define __HASH_H__
|
||||||
|
|
||||||
|
|
||||||
#include "shs.h"
|
#if defined(CALC_SRC) /* if we are building from the calc source tree */
|
||||||
#include "shs1.h"
|
# include "shs.h"
|
||||||
#include "md5.h"
|
# include "shs1.h"
|
||||||
#include "zmath.h"
|
# include "md5.h"
|
||||||
|
# include "zmath.h"
|
||||||
|
#else
|
||||||
|
# include <calc/shs.h>
|
||||||
|
# include <calc/shs1.h>
|
||||||
|
# include <calc/md5.h>
|
||||||
|
# include <calc/zmath.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
/* MAX_CHUNKSIZE is the largest chunksize of any hash */
|
/* MAX_CHUNKSIZE is the largest chunksize of any hash */
|
||||||
|
138
help/Makefile
138
help/Makefile
@@ -18,8 +18,8 @@
|
|||||||
# 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.
|
# 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||||
#
|
#
|
||||||
# @(#) $Revision: 29.6 $
|
# @(#) $Revision: 29.18 $
|
||||||
# @(#) $Id: Makefile,v 29.6 2001/04/08 10:53:52 chongo Exp $
|
# @(#) $Id: Makefile,v 29.18 2001/06/08 22:57:54 chongo Exp $
|
||||||
# @(#) $Source: /usr/local/src/cmd/calc/help/RCS/Makefile,v $
|
# @(#) $Source: /usr/local/src/cmd/calc/help/RCS/Makefile,v $
|
||||||
#
|
#
|
||||||
# Under source code control: 1991/07/23 06:47:57
|
# Under source code control: 1991/07/23 06:47:57
|
||||||
@@ -36,15 +36,42 @@
|
|||||||
SHELL= /bin/sh
|
SHELL= /bin/sh
|
||||||
MAKE_FILE = Makefile
|
MAKE_FILE = Makefile
|
||||||
|
|
||||||
# Normally, the upper level makefile will set these values. We provide
|
# ${SHAREDIR} where most common shared files are kept
|
||||||
# a default here just in case you want to build from this directory.
|
# ${INCDIR} where most .h files are kept
|
||||||
|
# ${LIBDIR} where *.a files are installed
|
||||||
#
|
#
|
||||||
TOPDIR= /usr/local/lib
|
# ${CSHAREDIR} where most common shared calc files are kept
|
||||||
#TOPDIR= /usr/lib
|
# ${HELPDIR} where the help directory is installed.
|
||||||
#TOPDIR= /usr/libdata
|
# ${INCDIRCALC} where the calc include files are installed
|
||||||
|
#
|
||||||
|
#SHAREDIR= /usr/local/lib
|
||||||
|
SHAREDIR= /usr/share
|
||||||
|
|
||||||
LIBDIR= ${TOPDIR}/calc
|
#INCDIR= /usr/local/include
|
||||||
HELPDIR= ${LIBDIR}/help
|
INCDIR= /usr/include
|
||||||
|
|
||||||
|
#LIBDIR= /usr/local/lib
|
||||||
|
LIBDIR= /usr/lib
|
||||||
|
|
||||||
|
CSHAREDIR= ${SHAREDIR}/calc
|
||||||
|
HELPDIR= ${CSHAREDIR}/help
|
||||||
|
INCDIRCALC= ${INCDIR}/calc
|
||||||
|
|
||||||
|
# T - top level directory under which calc will be installed
|
||||||
|
#
|
||||||
|
# The calc install is performed under $T, the calc build is
|
||||||
|
# performed under /. The purpose for $T is to allow someone to
|
||||||
|
# install calc somewhere other than into the system area. For example
|
||||||
|
# when forming the calc rpm, the Makefile is called with T=$RPM_BUILD_ROOT.
|
||||||
|
#
|
||||||
|
# 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
|
||||||
|
# calc is installed under $T, as if one had to chroot under
|
||||||
|
# $T for calc to operate.
|
||||||
|
#
|
||||||
|
# If in doubt, use T=
|
||||||
|
#
|
||||||
|
T=
|
||||||
|
|
||||||
# Makefile debug
|
# Makefile debug
|
||||||
#
|
#
|
||||||
@@ -63,6 +90,7 @@ CHMOD= chmod
|
|||||||
SED= sed
|
SED= sed
|
||||||
SORT= sort
|
SORT= sort
|
||||||
FMT= fmt
|
FMT= fmt
|
||||||
|
CMP= cmp
|
||||||
|
|
||||||
# Standard and Builtin help files
|
# Standard and Builtin help files
|
||||||
#
|
#
|
||||||
@@ -164,7 +192,7 @@ DETAIL_HELP= abs access acos acosh acot acoth acsc acsch address agd append \
|
|||||||
runtime saveval scale scan scanf search sec sech seed segment select \
|
runtime saveval scale scan scanf search sec sech seed segment select \
|
||||||
sgn sha sha1 sin sinh size sizeof sleep sort sqrt srand srandom \
|
sgn sha sha1 sin sinh size sizeof sleep sort sqrt srand srandom \
|
||||||
ssq str strcat strerror strlen strpos strprintf strscan strscanf \
|
ssq str strcat strerror strlen strpos strprintf strscan strscanf \
|
||||||
substr sum swap system tail tan tanh test time trunc xor
|
substr sum swap system tail tan tanh test time trunc version xor
|
||||||
|
|
||||||
# This list is of files that are clones of DETAIL_HELP files. They are
|
# This list is of files that are clones of DETAIL_HELP files. They are
|
||||||
# built from DETAIL_HELP files.
|
# built from DETAIL_HELP files.
|
||||||
@@ -238,7 +266,8 @@ changes: ../CHANGES
|
|||||||
|
|
||||||
libcalc: ../LIBRARY
|
libcalc: ../LIBRARY
|
||||||
rm -f $@
|
rm -f $@
|
||||||
${SED} -e 's:$${LIBDIR}:${LIBDIR}:g' < ../LIBRARY > $@
|
${SED} -e 's:$${LIBDIR}:${LIBDIR}:g' \
|
||||||
|
-e 's:$${INCDIRCALC}:${INCDIRCALC}:g' < ../LIBRARY > $@
|
||||||
${CHMOD} 0444 $@
|
${CHMOD} 0444 $@
|
||||||
-@if [ -z "${Q}" ]; then \
|
-@if [ -z "${Q}" ]; then \
|
||||||
echo ''; \
|
echo ''; \
|
||||||
@@ -489,6 +518,25 @@ detaillist:
|
|||||||
${SED} -e '1s/xxxxx/DETAIL_HELP=/' -e '2,$$s/^/ /' \
|
${SED} -e '1s/xxxxx/DETAIL_HELP=/' -e '2,$$s/^/ /' \
|
||||||
-e 's/$$/ \\/' -e '$$s/ \\$$//'
|
-e 's/$$/ \\/' -e '$$s/ \\$$//'
|
||||||
|
|
||||||
|
##
|
||||||
|
#
|
||||||
|
# rpm rules
|
||||||
|
#
|
||||||
|
##
|
||||||
|
|
||||||
|
echo_inst_files:
|
||||||
|
${Q}for i in ${STD_HELP_FILES} full ${BLT_HELP_FILES} \
|
||||||
|
builtin ${DETAIL_HELP} ${SINGULAR_FILES}; do \
|
||||||
|
echo __file__ ${HELPDIR}/$$i; \
|
||||||
|
done
|
||||||
|
${Q}echo __file__ ${HELPDIR}/obj
|
||||||
|
|
||||||
|
##
|
||||||
|
#
|
||||||
|
# Utility rules
|
||||||
|
#
|
||||||
|
##
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
rm -f obj mkbuiltin funclist.c funclist.o funclist
|
rm -f obj mkbuiltin funclist.c funclist.o funclist
|
||||||
rm -f COPYING COPYING-LGPL
|
rm -f COPYING COPYING-LGPL
|
||||||
@@ -500,36 +548,60 @@ clobber:
|
|||||||
rm -f ${SINGULAR_FILES} ${DETAIL_CLONE}
|
rm -f ${SINGULAR_FILES} ${DETAIL_CLONE}
|
||||||
|
|
||||||
install: all
|
install: all
|
||||||
-${Q}if [ ! -d ${TOPDIR} ]; then \
|
-${Q}if [ ! -d ${SHAREDIR} ]; then \
|
||||||
echo mkdir ${TOPDIR}; \
|
echo mkdir $T${SHAREDIR}; \
|
||||||
mkdir ${TOPDIR}; \
|
mkdir $T${SHAREDIR}; \
|
||||||
|
if [ ! -d "$T${SHAREDIR}" ]; then \
|
||||||
|
echo mkdir -p "$T${SHAREDIR}"; \
|
||||||
|
mkdir -p "$T${SHAREDIR}"; \
|
||||||
|
fi; \
|
||||||
|
echo ${CHMOD} 0755 $T${SHAREDIR}; \
|
||||||
|
${CHMOD} 0755 $T${SHAREDIR}; \
|
||||||
else \
|
else \
|
||||||
true; \
|
true; \
|
||||||
fi
|
fi
|
||||||
-${Q}if [ ! -d ${LIBDIR} ]; then \
|
-${Q}if [ ! -d $T${CSHAREDIR} ]; then \
|
||||||
echo mkdir ${LIBDIR}; \
|
echo mkdir $T${CSHAREDIR}; \
|
||||||
mkdir ${LIBDIR}; \
|
mkdir $T${CSHAREDIR}; \
|
||||||
|
if [ ! -d "$T${CSHAREDIR}" ]; then \
|
||||||
|
echo mkdir -p "$T${CSHAREDIR}"; \
|
||||||
|
mkdir -p "$T${CSHAREDIR}"; \
|
||||||
|
fi; \
|
||||||
|
echo ${CHMOD} 0755 $T${CSHAREDIR}; \
|
||||||
|
${CHMOD} 0755 $T${CSHAREDIR}; \
|
||||||
else \
|
else \
|
||||||
true; \
|
true; \
|
||||||
fi
|
fi
|
||||||
-${Q}if [ ! -d ${HELPDIR} ]; then \
|
-${Q}if [ ! -d $T${HELPDIR} ]; then \
|
||||||
echo mkdir ${HELPDIR}; \
|
echo mkdir $T${HELPDIR}; \
|
||||||
mkdir ${HELPDIR}; \
|
mkdir $T${HELPDIR}; \
|
||||||
|
if [ ! -d "$T${HELPDIR}" ]; then \
|
||||||
|
echo mkdir -p "$T${HELPDIR}"; \
|
||||||
|
mkdir -p "$T${HELPDIR}"; \
|
||||||
|
fi; \
|
||||||
|
echo ${CHMOD} 0755 $T${HELPDIR}; \
|
||||||
|
${CHMOD} 0755 $T${HELPDIR}; \
|
||||||
else \
|
else \
|
||||||
true; \
|
true; \
|
||||||
fi
|
fi
|
||||||
${Q}for i in ${STD_HELP_FILES} ${BLT_HELP_FILES} builtin \
|
-${Q}for i in ${STD_HELP_FILES} ${BLT_HELP_FILES} builtin \
|
||||||
full ${DETAIL_HELP} ${SINGULAR_FILES}; do \
|
full ${DETAIL_HELP} ${SINGULAR_FILES}; do \
|
||||||
echo rm -f ${HELPDIR}/$$i; \
|
if ${CMP} -s $$i $T${HELPDIR}/$$i; then \
|
||||||
rm -f ${HELPDIR}/$$i; \
|
true; \
|
||||||
echo cp $$i ${HELPDIR}; \
|
else \
|
||||||
cp $$i ${HELPDIR}; \
|
rm -f $T${HELPDIR}/$$i.new; \
|
||||||
echo ${CHMOD} 0444 ${HELPDIR}/$$i; \
|
cp -f $$i $T${HELPDIR}/$$i.new; \
|
||||||
${CHMOD} 0444 ${HELPDIR}/$$i; \
|
${CHMOD} 0444 $T${HELPDIR}/$$i.new; \
|
||||||
|
mv -f $T${HELPDIR}/$$i.new $T${HELPDIR}/$$i; \
|
||||||
|
echo "installed $T${HELPDIR}/$$i"; \
|
||||||
|
fi; \
|
||||||
done
|
done
|
||||||
rm -f ${HELPDIR}/obj
|
-${Q}if ${CMP} -s obj.file $T${HELPDIR}/obj; then \
|
||||||
cp obj.file ${HELPDIR}/obj
|
true; \
|
||||||
${CHMOD} 0444 ${HELPDIR}/obj
|
else \
|
||||||
${Q}echo remove files that are obsolete
|
rm -f $T${HELPDIR}/obj.new; \
|
||||||
-rm -f rmblk block stdlib
|
cp -f obj.file $T${HELPDIR}/obj.new; \
|
||||||
-rm -f ${HELPDIR}/rmblk ${HELPDIR}/block ${HELPDIR}/stdlib
|
${CHMOD} 0444 $T${HELPDIR}/obj.new; \
|
||||||
|
mv -f $T${HELPDIR}/obj.new $T${HELPDIR}/obj; \
|
||||||
|
echo "installed $T${HELPDIR}/obj"; \
|
||||||
|
fi
|
||||||
|
12
help/config
12
help/config
@@ -510,7 +510,9 @@ Detailed config descriptions
|
|||||||
|
|
||||||
5 Report on changes to the run state of calc.
|
5 Report on changes to the run state of calc.
|
||||||
|
|
||||||
Bits >= 6 are reserved for future use and should not be used at this time.
|
6 Report on rand() subtractive 100 shuffle generator issues.
|
||||||
|
|
||||||
|
Bits >= 7 are reserved for future use and should not be used at this time.
|
||||||
|
|
||||||
By default, "calc_debug" is 0. The initial value may be overridden
|
By default, "calc_debug" is 0. The initial value may be overridden
|
||||||
by the -D command line option.
|
by the -D command line option.
|
||||||
@@ -578,12 +580,14 @@ Detailed config descriptions
|
|||||||
|
|
||||||
The "verbose_quit" controls the print of the message:
|
The "verbose_quit" controls the print of the message:
|
||||||
|
|
||||||
Quit or abort executed
|
quit or abort executed
|
||||||
|
|
||||||
when a non-interactive quit or abort without an argument is encountered.
|
when a non-interactive quit or abort without an argument is encountered.
|
||||||
A quit of abort without an argument does not display a message when
|
A quit of abort without an argument does not display a message when
|
||||||
invoked at the interactive level.
|
invoked at the interactive level.
|
||||||
|
|
||||||
|
By deafult, "verbose_quit" is false.
|
||||||
|
|
||||||
=-=
|
=-=
|
||||||
|
|
||||||
config("ctrl_d", "ctrl_d_string")
|
config("ctrl_d", "ctrl_d_string")
|
||||||
@@ -709,8 +713,8 @@ Detailed config descriptions
|
|||||||
## 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.
|
## 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||||
##
|
##
|
||||||
## @(#) $Revision: 29.4 $
|
## @(#) $Revision: 29.6 $
|
||||||
## @(#) $Id: config,v 29.4 2001/04/08 09:08:27 chongo Exp $
|
## @(#) $Id: config,v 29.6 2001/04/25 07:17:38 chongo Exp $
|
||||||
## @(#) $Source: /usr/local/src/cmd/calc/help/RCS/config,v $
|
## @(#) $Source: /usr/local/src/cmd/calc/help/RCS/config,v $
|
||||||
##
|
##
|
||||||
## Under source code control: 1991/07/21 04:37:17
|
## Under source code control: 1991/07/21 04:37:17
|
||||||
|
43
help/contrib
43
help/contrib
@@ -35,24 +35,41 @@ If your change is large, you should send entire files (either
|
|||||||
as a diff -c /dev/null your-file patch, or as a uuencoded and
|
as a diff -c /dev/null your-file patch, or as a uuencoded and
|
||||||
gziped (or compressed) tar file).
|
gziped (or compressed) tar file).
|
||||||
|
|
||||||
You should send submissions to:
|
To contribute code, scripts, resource files and/or to help please
|
||||||
|
join the low volume calc mailing list by sending EMail to:
|
||||||
|
|
||||||
calc-contrib at asthe dot com
|
calc-contrib at asthe dot com
|
||||||
|
|
||||||
[[ NOTE: Replace 'at' with @, 'dot' is with . and remove the spaces ]]
|
[[ NOTE: Replace 'at' with @, 'dot' is with . and remove the spaces ]]
|
||||||
[[ NOTE: The EMail address uses 'asthe' and the web site URL uses 'isthe' ]]
|
[[ NOTE: The EMail address uses 'asthe' and the web site URL uses 'isthe' ]]
|
||||||
|
|
||||||
|
Your subject must contain the words:
|
||||||
|
|
||||||
|
calc mailing list subscription
|
||||||
|
|
||||||
|
You may have additional words in your subject line.
|
||||||
|
|
||||||
|
Feel free to follow the name line with additional EMail text as desired.
|
||||||
|
|
||||||
Thanks for considering submitting code to calc. Calc is a collective
|
Thanks for considering submitting code to calc. Calc is a collective
|
||||||
work by a number of people. It would not be what it is today without
|
work by a number of people. It would not be what it is today without
|
||||||
your efforts and submissions!
|
your efforts and submissions!
|
||||||
|
|
||||||
Calc bug reports, however, should be sent to:
|
=-=
|
||||||
|
|
||||||
|
Calc bug reports and calc bug fixes should be sent to:
|
||||||
|
|
||||||
calc-bugs at asthe dot com
|
calc-bugs at asthe dot com
|
||||||
|
|
||||||
[[ NOTE: Replace 'at' with @, 'dot' is with . and remove the spaces ]]
|
[[ NOTE: Replace 'at' with @, 'dot' is with . and remove the spaces ]]
|
||||||
[[ NOTE: The EMail address uses 'asthe' and the web site URL uses 'isthe' ]]
|
[[ NOTE: The EMail address uses 'asthe' and the web site URL uses 'isthe' ]]
|
||||||
|
|
||||||
|
Your subject must contain the words:
|
||||||
|
|
||||||
|
calc bug report
|
||||||
|
|
||||||
|
You may have additional words in your subject line.
|
||||||
|
|
||||||
See the BUGS file or try the help command:
|
See the BUGS file or try the help command:
|
||||||
|
|
||||||
help bugs
|
help bugs
|
||||||
@@ -61,26 +78,10 @@ for details on bug reporting.
|
|||||||
|
|
||||||
=-=
|
=-=
|
||||||
|
|
||||||
One may join the calc testing group by sending a request to:
|
|
||||||
|
|
||||||
calc-tester-request at asthe dot com
|
|
||||||
|
|
||||||
[[ NOTE: Replace 'at' with @, 'dot' is with . and remove the spaces ]]
|
|
||||||
[[ NOTE: The EMail address uses 'asthe' and the web site URL uses 'isthe' ]]
|
|
||||||
|
|
||||||
Your message body (not the subject) should consist of:
|
|
||||||
|
|
||||||
subscribe calc-tester address
|
|
||||||
end
|
|
||||||
name your_full_name
|
|
||||||
|
|
||||||
where "address" is your EMail address and "your_full_name"
|
|
||||||
is your full name.
|
|
||||||
|
|
||||||
Landon Curt Noll
|
Landon Curt Noll
|
||||||
http://www.isthe.com/chongo/
|
http://www.isthe.com/chongo/
|
||||||
|
|
||||||
chongo <was here> /\../\
|
chongo (share and enjoy) /\../\
|
||||||
|
|
||||||
## Copyright (C) 1999 Landon Curt Noll
|
## Copyright (C) 1999 Landon Curt Noll
|
||||||
##
|
##
|
||||||
@@ -98,8 +99,8 @@ chongo <was here> /\../\
|
|||||||
## 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.
|
## 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||||
##
|
##
|
||||||
## @(#) $Revision: 29.2 $
|
## @(#) $Revision: 29.4 $
|
||||||
## @(#) $Id: contrib,v 29.2 2000/06/07 14:02:33 chongo Exp $
|
## @(#) $Id: contrib,v 29.4 2001/06/01 11:37:14 chongo Exp $
|
||||||
## @(#) $Source: /usr/local/src/cmd/calc/help/RCS/contrib,v $
|
## @(#) $Source: /usr/local/src/cmd/calc/help/RCS/contrib,v $
|
||||||
##
|
##
|
||||||
## Under source code control: 1997/03/09 16:33:22
|
## Under source code control: 1997/03/09 16:33:22
|
||||||
|
40
help/fopen
40
help/fopen
@@ -15,9 +15,39 @@ DESCRIPTION
|
|||||||
opened for either reading, writing, or appending. The mode
|
opened for either reading, writing, or appending. The mode
|
||||||
is controlled by the mode flag as follows:
|
is controlled by the mode flag as follows:
|
||||||
|
|
||||||
"r" reading
|
allow allow file is positioned file(*)
|
||||||
"w" writing
|
mode reading writing truncated at mode
|
||||||
"a" appending
|
---- ------- ------- --------- --------- ----
|
||||||
|
r Y N N beginning text
|
||||||
|
rb Y N N beginning binary
|
||||||
|
r+ Y N N beginning text
|
||||||
|
r+b Y N N beginning binary
|
||||||
|
rb+ Y N N beginning binary
|
||||||
|
|
||||||
|
w N Y Y beginning text
|
||||||
|
wb N Y Y beginning binary
|
||||||
|
w+ Y Y Y beginning text
|
||||||
|
w+b Y Y Y beginning binary
|
||||||
|
wb+ Y Y Y beginning binary
|
||||||
|
|
||||||
|
a N Y Y end text
|
||||||
|
ab N Y Y end binary
|
||||||
|
a+ Y Y Y end text
|
||||||
|
a+b Y Y Y end binary
|
||||||
|
ab+ Y Y Y end binary
|
||||||
|
|
||||||
|
(*) NOTE on 'b' / binary/text mode:
|
||||||
|
|
||||||
|
The 'b' or fopen binary mode has no effect on POSIX / Linux
|
||||||
|
/ Un*x-like systems. On those systems a text file is the
|
||||||
|
same as a binary file (as it should be for any modern-day
|
||||||
|
operating system). Adding 'b' to an fopen has no effect
|
||||||
|
and is ignored.
|
||||||
|
|
||||||
|
Some non-POSIX systems sucn as MS Windoz treat text files
|
||||||
|
and binary files differently. In text mode MS Windoz consider
|
||||||
|
"\r\n" and end-of-line character. On an Apple MAC, the
|
||||||
|
text mode end-of-line character is "\r".
|
||||||
|
|
||||||
Names of files are subject to ~ expansion just like the C or
|
Names of files are subject to ~ expansion just like the C or
|
||||||
Korn shell. For example, the file name:
|
Korn shell. For example, the file name:
|
||||||
@@ -90,8 +120,8 @@ SEE ALSO
|
|||||||
## 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.
|
## 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||||
##
|
##
|
||||||
## @(#) $Revision: 29.2 $
|
## @(#) $Revision: 29.3 $
|
||||||
## @(#) $Id: fopen,v 29.2 2000/06/07 14:02:33 chongo Exp $
|
## @(#) $Id: fopen,v 29.3 2001/04/10 21:46:45 chongo Exp $
|
||||||
## @(#) $Source: /usr/local/src/cmd/calc/help/RCS/fopen,v $
|
## @(#) $Source: /usr/local/src/cmd/calc/help/RCS/fopen,v $
|
||||||
##
|
##
|
||||||
## Under source code control: 1994/10/27 03:04:17
|
## Under source code control: 1994/10/27 03:04:17
|
||||||
|
82
help/rand
82
help/rand
@@ -1,5 +1,5 @@
|
|||||||
NAME
|
NAME
|
||||||
rand - additive 55 shuffle pseudo-random number generator
|
rand - subtractive 100 shuffle pseudo-random number generator
|
||||||
|
|
||||||
SYNOPSIS
|
SYNOPSIS
|
||||||
rand([[min, ] max])
|
rand([[min, ] max])
|
||||||
@@ -11,7 +11,7 @@ TYPES
|
|||||||
return integer
|
return integer
|
||||||
|
|
||||||
DESCRIPTION
|
DESCRIPTION
|
||||||
Generate a pseudo-random number using an additive 55 shuffle generator.
|
Generate a pseudo-random number using an subtractive 100 shuffle generator.
|
||||||
We return a pseudo-random number over the half closed interval [min,max).
|
We return a pseudo-random number over the half closed interval [min,max).
|
||||||
By default, min is 0 and max is 2^64.
|
By default, min is 0 and max is 2^64.
|
||||||
|
|
||||||
@@ -38,36 +38,40 @@ DESCRIPTION
|
|||||||
|
|
||||||
when seeded with the same seed.
|
when seeded with the same seed.
|
||||||
|
|
||||||
The rand generator has two distinct parts, the additive 55 method
|
The rand generator has two distinct parts, the subtractive 100 method
|
||||||
and the shuffle method. The additive 55 method is described in:
|
and the shuffle method. The subtractive 100 method is described in:
|
||||||
|
|
||||||
"The Art of Computer Programming - Seminumerical Algorithms"
|
"The Art of Computer Programming - Seminumerical Algorithms",
|
||||||
by Knuth, Vol 2, 2nd edition (1981), Section 3.2.2, page 27,
|
Vol 2, 3rd edition (1998), Section 3.6, page 186, formula (2).
|
||||||
Algorithm A.
|
|
||||||
|
|
||||||
The period and other properties of the additive 55 method
|
The "use only the first 100 our of every 1009" is described in
|
||||||
|
Knuth's "The Art of Computer Programming - Seminumerical Algorithms",
|
||||||
|
Vol 2, 3rd edition (1998), Section 3.6, page 188".
|
||||||
|
|
||||||
|
The period and other properties of the subtractive 100 method
|
||||||
make it very useful to 'seed' other generators.
|
make it very useful to 'seed' other generators.
|
||||||
|
|
||||||
The shuffle method is feed values by the additive 55 method.
|
The shuffle method is feed values by the subtractive 100 method.
|
||||||
The shuffle method is described in:
|
The shuffle method is described in:
|
||||||
|
|
||||||
"The Art of Computer Programming - Seminumerical Algorithms"
|
"The Art of Computer Programming - Seminumerical Algorithms",
|
||||||
by Knuth, Vol 2, 2nd edition (1981), Section 3.2.2, page 32,
|
Vol 2, 3rd edition (1998), Section 3.2.2, page 34, Algorithm B.
|
||||||
Algorithm B.
|
|
||||||
|
|
||||||
The rand generator has a good period, and is fast. It is reasonable as
|
The rand generator has a good period, and is fast. It is reasonable as
|
||||||
generators go, though there are better ones available. The shuffle
|
generators go, though there are better ones available. The shuffle
|
||||||
method has a very good period, and is fast. It is fairly good as
|
method has a very good period, and is fast. It is fairly good as
|
||||||
generators go, particularly when it is feed reasonably random
|
generators go, particularly when it is feed reasonably random
|
||||||
numbers. Because of this, we use feed values from the additive 55
|
numbers. Because of this, we use feed values from the subtractive 100
|
||||||
method into the shuffle method.
|
method into the shuffle method.
|
||||||
|
|
||||||
The rand generator uses two internal tables:
|
The rand generator uses two internal tables:
|
||||||
|
|
||||||
additive table - 55 entries of 64 bits used by the additive 55 method
|
additive table - 100 entries of 64 bits used by the subtractive
|
||||||
|
100 method
|
||||||
|
|
||||||
shuffle table - 256 entries of 64 bits used by the shuffle method
|
shuffle table - 256 entries of 64 bits used by the shuffle method
|
||||||
feed by the additive 55 method from the additive table
|
feed by the subtractive 100 method from the
|
||||||
|
subtractive table
|
||||||
|
|
||||||
The goals of this generator are:
|
The goals of this generator are:
|
||||||
|
|
||||||
@@ -95,21 +99,21 @@ DESCRIPTION
|
|||||||
a standard against which other generators may be measured.
|
a standard against which other generators may be measured.
|
||||||
|
|
||||||
The Rand book of numbers was groups into groups of 20 digits. The
|
The Rand book of numbers was groups into groups of 20 digits. The
|
||||||
first 55 groups < 2^64 were used to initialize the default additive
|
first 100 groups < 2^64 were used to initialize the default additive
|
||||||
table. The size of 20 digits was used because 2^64 is 20 digits
|
table. The size of 20 digits was used because 2^64 is 20 digits
|
||||||
long. The restriction of < 2^64 was used to prevent modulus biasing.
|
long. The restriction of < 2^64 was used to prevent modulus biasing.
|
||||||
|
|
||||||
The shuffle table size is longer than the 100 entries recommended
|
The shuffle table size is longer than the 100 entries recommended
|
||||||
by Knuth. We use a power of 2 shuffle table length so that the
|
by Knuth. We use a power of 2 shuffle table length so that the
|
||||||
shuffle process can select a table entry from a new additive 55
|
shuffle process can select a table entry from a new subtractive 100
|
||||||
value by extracting its low order bits. The value 256 is convenient
|
value by extracting its low order bits. The value 256 is convenient
|
||||||
in that it is the size of a byte which allows for easy extraction.
|
in that it is the size of a byte which allows for easy extraction.
|
||||||
|
|
||||||
We use the upper byte of the additive 55 value to select the
|
We use the upper byte of the subtractive 100 value to select the
|
||||||
shuffle table entry because it allows all of 64 bits to play a part
|
shuffle table entry because it allows all of 64 bits to play a part
|
||||||
in the entry selection. If we were to select a lower 8 bits in the
|
in the entry selection. If we were to select a lower 8 bits in the
|
||||||
64 bit value, carries that propagate above our 8 bits would not
|
64 bit value, carries that propagate above our 8 bits would not
|
||||||
impact the additive 55 generator output.
|
impact the subtractive 100 generator output.
|
||||||
|
|
||||||
It is 'nice' when a seed of "n" produces a 'significantly different'
|
It is 'nice' when a seed of "n" produces a 'significantly different'
|
||||||
sequence than a seed of "n+1". Generators, by convention, assign
|
sequence than a seed of "n+1". Generators, by convention, assign
|
||||||
@@ -161,7 +165,7 @@ DESCRIPTION
|
|||||||
The values 'a' and 'c for randreseed64 are taken from the Rand book
|
The values 'a' and 'c for randreseed64 are taken from the Rand book
|
||||||
of numbers. Because m=2^64 is 20 decimal digits long, we will
|
of numbers. Because m=2^64 is 20 decimal digits long, we will
|
||||||
search the Rand book of numbers 20 at a time. We will skip any of
|
search the Rand book of numbers 20 at a time. We will skip any of
|
||||||
the 55 values that were used to initialize the additive 55
|
the 100 values that were used to initialize the subtractive 100
|
||||||
generators. The values obtained from the Rand book are:
|
generators. The values obtained from the Rand book are:
|
||||||
|
|
||||||
a = 6316878969928993981
|
a = 6316878969928993981
|
||||||
@@ -190,36 +194,40 @@ DESCRIPTION
|
|||||||
|
|
||||||
The truly paranoid might suggest that my claims in the MAGIC NUMBERS
|
The truly paranoid might suggest that my claims in the MAGIC NUMBERS
|
||||||
section are a lie intended to entrap people. Well they are not, but
|
section are a lie intended to entrap people. Well they are not, but
|
||||||
you need not take my (Landon Curt Noll) word for it.
|
if you that paranoid why would you use a non-cryprographically strong
|
||||||
|
pseudo-random number generator in the first place? You would be
|
||||||
|
better off using the random() builtin function.
|
||||||
|
|
||||||
The random numbers from the Rand book of random numbers can be
|
The two constants that were picked from the Rand Book of Random Numbers
|
||||||
|
The random numbers from the Rand Book of Random Numbers can be
|
||||||
verified by anyone who obtains the book. As these numbers were
|
verified by anyone who obtains the book. As these numbers were
|
||||||
created before I (Landon Curt Noll) was born (you can look up my
|
created before I (Landon Curt Noll) was born (you can look up
|
||||||
birth record if you want), I claim to have no possible influence on
|
my birth record if you want), I claim to have no possible influence
|
||||||
their generation.
|
on their generation.
|
||||||
|
|
||||||
There is a very slight chance that the electronic copy of the
|
There is a very slight chance that the electronic copy of the
|
||||||
Rand book that I was given access to differs from the printed text.
|
Rand Book of Random Numbers that I was given access to differs
|
||||||
I am willing to provide access to this electronic copy should
|
from the printed text. I am willing to provide access to this
|
||||||
anyone wants to compare it to the printed text.
|
electronic copy should anyone wants to compare it to the printed text.
|
||||||
|
|
||||||
When using the a55 generator, one may select your own 55 additive
|
When using the s100 generator, one may select your own 100 subtractive
|
||||||
values by calling:
|
values by calling:
|
||||||
|
|
||||||
srand(mat55)
|
srand(mat100)
|
||||||
|
|
||||||
and avoid using my magic numbers. Of course, you must pick good
|
and avoid using my magic numbers. The randreseed64 process is NOT
|
||||||
additive 55 values yourself!
|
applied to the matrix values. Of course, you must pick good subtractive
|
||||||
|
100 values yourself!
|
||||||
|
|
||||||
EXAMPLE
|
EXAMPLE
|
||||||
> print srand(0), rand(), rand(), rand()
|
> print srand(0), rand(), rand(), rand()
|
||||||
RAND state 14384206130809570460 10173010522823332484 5713611208311484212
|
RAND state 2298441576805697181 3498508396312845423 5031615567549397476
|
||||||
|
|
||||||
> print rand(123), rand(123), rand(123), rand(123), rand(123), rand(123)
|
> print rand(123), rand(123), rand(123), rand(123), rand(123), rand(123)
|
||||||
17 104 74 47 48 46
|
106 59 99 99 25 88
|
||||||
|
|
||||||
> print rand(2,12), rand(2^50,3^50), rand(0,2), rand(-400000, 120000)
|
> print rand(2,12), rand(2^50,3^50), rand(0,2), rand(-400000, 120000)
|
||||||
11 170570393286648531699560 1 -96605
|
2 658186291252503497642116 1 -324097
|
||||||
|
|
||||||
LIMITS
|
LIMITS
|
||||||
min < max
|
min < max
|
||||||
@@ -248,8 +256,8 @@ SEE ALSO
|
|||||||
## 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.
|
## 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||||
##
|
##
|
||||||
## @(#) $Revision: 29.2 $
|
## @(#) $Revision: 29.3 $
|
||||||
## @(#) $Id: rand,v 29.2 2000/06/07 14:02:33 chongo Exp $
|
## @(#) $Id: rand,v 29.3 2001/04/14 22:46:33 chongo Exp $
|
||||||
## @(#) $Source: /usr/local/src/cmd/calc/help/RCS/rand,v $
|
## @(#) $Source: /usr/local/src/cmd/calc/help/RCS/rand,v $
|
||||||
##
|
##
|
||||||
## Under source code control: 1996/01/01 02:16:09
|
## Under source code control: 1996/01/01 02:16:09
|
||||||
|
@@ -19,9 +19,9 @@ DESCRIPTION
|
|||||||
is almost certainly non-chaotic. This function is likely not
|
is almost certainly non-chaotic. This function is likely not
|
||||||
suitable for applications (such as cryptographic applications)
|
suitable for applications (such as cryptographic applications)
|
||||||
where the unpredictability of seeds is critical. For such critical
|
where the unpredictability of seeds is critical. For such critical
|
||||||
applications, lavarand should be used. See the URL:
|
applications, LavaRnd should be used. See the URL:
|
||||||
|
|
||||||
http://lavarand.sgi.com/index.html
|
http://www.LavaRnd.org/
|
||||||
|
|
||||||
for information about seeding a pseudo-random number generator
|
for information about seeding a pseudo-random number generator
|
||||||
(such as rand() or random()) with the cryptographic hash of the
|
(such as rand() or random()) with the cryptographic hash of the
|
||||||
@@ -67,8 +67,8 @@ SEE ALSO
|
|||||||
## 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.
|
## 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||||
##
|
##
|
||||||
## @(#) $Revision: 29.2 $
|
## @(#) $Revision: 29.3 $
|
||||||
## @(#) $Id: seed,v 29.2 2000/06/07 14:02:33 chongo Exp $
|
## @(#) $Id: seed,v 29.3 2001/05/13 13:26:26 chongo Exp $
|
||||||
## @(#) $Source: /usr/local/src/cmd/calc/help/RCS/seed,v $
|
## @(#) $Source: /usr/local/src/cmd/calc/help/RCS/seed,v $
|
||||||
##
|
##
|
||||||
## Under source code control: 1999/10/03 10:04:29
|
## Under source code control: 1999/10/03 10:04:29
|
||||||
|
74
help/srand
74
help/srand
@@ -1,5 +1,5 @@
|
|||||||
NAME
|
NAME
|
||||||
srand - seed the additive 55 shuffle pseudo-random number generator
|
srand - seed the subtractive 100 shuffle pseudo-random number generator
|
||||||
|
|
||||||
SYNOPSIS
|
SYNOPSIS
|
||||||
srand([seed])
|
srand([seed])
|
||||||
@@ -10,43 +10,43 @@ TYPES
|
|||||||
return rand state
|
return rand state
|
||||||
|
|
||||||
DESCRIPTION
|
DESCRIPTION
|
||||||
Seed the pseudo-random number using an additive 55 shuffle generator.
|
Seed the pseudo-random number using an subtractive 100 shuffle generator.
|
||||||
|
|
||||||
For integer seed != 0:
|
For integer seed != 0:
|
||||||
|
|
||||||
Any buffered rand generator bits are flushed. The additive table
|
Any buffered rand generator bits are flushed. The subtractive table
|
||||||
for the rand generator is loaded with the default additive table.
|
for the rand generator is loaded with the default subtractive table.
|
||||||
The low order 64 bits of seed is xor-ed against each table value.
|
The low order 64 bits of seed is xor-ed against each table value.
|
||||||
The additive table is shuffled according to seed/2^64.
|
The subtractive table is shuffled according to seed/2^64.
|
||||||
|
|
||||||
The following calc code produces the same effect on the internal
|
The following calc code produces the same effect on the internal
|
||||||
additive table:
|
subtractive table:
|
||||||
|
|
||||||
/* reload default additive table xor-ed with low 64 seed bits */
|
/* reload default subtractive table xor-ed with low 64 seed bits */
|
||||||
seed_xor = seed & ((1<<64)-1);
|
seed_xor = seed & ((1<<64)-1);
|
||||||
for (i=0; i < 55; ++i) {
|
for (i=0; i < 100; ++i) {
|
||||||
additive[i] = xor(default_additive[i], seed_xor);
|
subtractive[i] = xor(default_subtractive[i], seed_xor);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* shuffle the additive table */
|
/* shuffle the subtractive table */
|
||||||
seed >>= 64;
|
seed >>= 64;
|
||||||
for (i=55; seed > 0 && i > 0; --i) {
|
for (i=100; seed > 0 && i > 0; --i) {
|
||||||
quomod(seed, i+1, seed, j);
|
quomod(seed, i+1, seed, j);
|
||||||
swap(additive[i], additive[j]);
|
swap(subtractive[i], subtractive[j]);
|
||||||
}
|
}
|
||||||
|
|
||||||
Seed must be >= 0. All seed values < 0 are reserved for future use.
|
Seed must be >= 0. All seed values < 0 are reserved for future use.
|
||||||
|
|
||||||
The additive table pointers are reset to additive[23] and additive[54].
|
The subtractive table pointers are reset to subtractive[36]
|
||||||
Last the shuffle table is loaded with successive values from the
|
and subtractive[99]. Last the shuffle table is loaded with
|
||||||
additive 55 generator.
|
successive values from the subtractive 100 generator.
|
||||||
|
|
||||||
There is no limit on the size of a seed. On the other hand,
|
There is no limit on the size of a seed. On the other hand,
|
||||||
extremely large seeds require large tables and long seed times.
|
extremely large seeds require large tables and long seed times.
|
||||||
Using a seed in the range of [2^64, 2^64 * 55!) should be
|
Using a seed in the range of [2^64, 2^64 * 100!) should be
|
||||||
sufficient for most purposes. An easy way to stay within this
|
sufficient for most purposes. An easy way to stay within this
|
||||||
range to to use seeds that are between 21 and 93 digits, or
|
range to to use seeds that are between 21 and 178 digits, or
|
||||||
64 to 308 bits long.
|
64 to 588 bits long.
|
||||||
|
|
||||||
To help make the generator produced by seed S, significantly
|
To help make the generator produced by seed S, significantly
|
||||||
different from S+1, seeds are scrambled prior to use. The
|
different from S+1, seeds are scrambled prior to use. The
|
||||||
@@ -68,9 +68,9 @@ DESCRIPTION
|
|||||||
After this call, the rand generator is restored to its initial
|
After this call, the rand generator is restored to its initial
|
||||||
state after calc started.
|
state after calc started.
|
||||||
|
|
||||||
The additive 55 pointers are reset to additive[23] and additive[54].
|
The subtractive 100 pointers are reset to subtractive[36]
|
||||||
Last the shuffle table is loaded with successive values from the
|
and subtractive[99]. Last the shuffle table is loaded with
|
||||||
additive 55 generator.
|
successive values from the subtractive 100 generator.
|
||||||
|
|
||||||
The call:
|
The call:
|
||||||
|
|
||||||
@@ -80,14 +80,14 @@ DESCRIPTION
|
|||||||
|
|
||||||
For matrix arg:
|
For matrix arg:
|
||||||
|
|
||||||
Any buffered random bits are flushed. The additive table with the
|
Any buffered random bits are flushed. The subtractive table with the
|
||||||
first 55 entries of the matrix mod 2^64.
|
first 100 entries of the matrix mod 2^64.
|
||||||
|
|
||||||
The additive 55 pointers are reset to additive[23] and additive[54].
|
The subtractive 100 pointers are reset to subtractive[36]
|
||||||
Last the shuffle table is loaded with successive values from the
|
and subtractive[99]. Last the shuffle table is loaded with
|
||||||
additive 55 generator.
|
successive values from the subtractive 100 generator.
|
||||||
|
|
||||||
This form allows one to load the internal additive 55 generator
|
This form allows one to load the internal subtractive 100 generator
|
||||||
with user supplied values.
|
with user supplied values.
|
||||||
|
|
||||||
The randreseed64 process is NOT applied to the matrix values.
|
The randreseed64 process is NOT applied to the matrix values.
|
||||||
@@ -114,7 +114,7 @@ DESCRIPTION
|
|||||||
|
|
||||||
For no arg given:
|
For no arg given:
|
||||||
|
|
||||||
Return current a55 generator state. This call does not alter
|
Return current s100 generator state. This call does not alter
|
||||||
the generator state.
|
the generator state.
|
||||||
|
|
||||||
This call allows one to take a snapshot of the current generator state.
|
This call allows one to take a snapshot of the current generator state.
|
||||||
@@ -126,25 +126,25 @@ EXAMPLE
|
|||||||
RAND state
|
RAND state
|
||||||
> state = srand();
|
> state = srand();
|
||||||
> print rand(123), rand(123), rand(123), rand(123), rand(123), rand(123);
|
> print rand(123), rand(123), rand(123), rand(123), rand(123), rand(123);
|
||||||
32 60 67 71 1 77
|
80 95 41 78 100 27
|
||||||
> print rand(123), rand(123), rand(123), rand(123), rand(123), rand(123);
|
> print rand(123), rand(123), rand(123), rand(123), rand(123), rand(123);
|
||||||
52 72 110 15 69 58
|
122 109 12 95 80 32
|
||||||
> state2 = srand(state);
|
> state2 = srand(state);
|
||||||
> print rand(123), rand(123), rand(123), rand(123), rand(123), rand(123);
|
> print rand(123), rand(123), rand(123), rand(123), rand(123), rand(123);
|
||||||
32 60 67 71 1 77
|
80 95 41 78 100 27
|
||||||
> print rand(123), rand(123), rand(123), rand(123), rand(123), rand(123);
|
> print rand(123), rand(123), rand(123), rand(123), rand(123), rand(123);
|
||||||
52 72 110 15 69 58
|
122 109 12 95 80 32
|
||||||
> state3 = srand();
|
> state3 = srand();
|
||||||
> print state3 == state2;
|
> print state3 == state2;
|
||||||
1
|
1
|
||||||
> print rand();
|
> print rand();
|
||||||
641407694185874626
|
10710588361472584495
|
||||||
|
|
||||||
LIMITS
|
LIMITS
|
||||||
for matrix arg, the matrix must have at least 55 integers
|
for matrix arg, the matrix must have at least 100 integers
|
||||||
|
|
||||||
LINK LIBRARY
|
LINK LIBRARY
|
||||||
RAND *zsrand(ZVALUE *pseed, MATRIX *pmat55)
|
RAND *zsrand(ZVALUE *pseed, MATRIX *pmat100)
|
||||||
RAND *zsetrand(RAND *state)
|
RAND *zsetrand(RAND *state)
|
||||||
|
|
||||||
SEE ALSO
|
SEE ALSO
|
||||||
@@ -166,8 +166,8 @@ SEE ALSO
|
|||||||
## 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.
|
## 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||||
##
|
##
|
||||||
## @(#) $Revision: 29.2 $
|
## @(#) $Revision: 29.3 $
|
||||||
## @(#) $Id: srand,v 29.2 2000/06/07 14:02:33 chongo Exp $
|
## @(#) $Id: srand,v 29.3 2001/04/14 22:46:33 chongo Exp $
|
||||||
## @(#) $Source: /usr/local/src/cmd/calc/help/RCS/srand,v $
|
## @(#) $Source: /usr/local/src/cmd/calc/help/RCS/srand,v $
|
||||||
##
|
##
|
||||||
## Under source code control: 1996/01/01 04:19:07
|
## Under source code control: 1996/01/01 04:19:07
|
||||||
|
10
help/srandom
10
help/srandom
@@ -220,11 +220,11 @@ DESCRIPTION
|
|||||||
Blum moduli.
|
Blum moduli.
|
||||||
|
|
||||||
The pre-defined Blum moduli and quadratic residues were selected
|
The pre-defined Blum moduli and quadratic residues were selected
|
||||||
by lavarand, a hardware random number generator. See the URL:
|
by LavaRnd, a hardware random number generator. See the URL:
|
||||||
|
|
||||||
http://lavarand.sgi.com/index.html
|
http://www.LavaRnd.org/
|
||||||
|
|
||||||
for an explanation of how the lavarand random number generator works.
|
for an explanation of how the LavaRnd random number generator works.
|
||||||
For more information, see the comments at the top of the calc
|
For more information, see the comments at the top of the calc
|
||||||
source file, zrandom.c.
|
source file, zrandom.c.
|
||||||
|
|
||||||
@@ -354,8 +354,8 @@ SEE ALSO
|
|||||||
## 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.
|
## 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||||
##
|
##
|
||||||
## @(#) $Revision: 29.2 $
|
## @(#) $Revision: 29.3 $
|
||||||
## @(#) $Id: srandom,v 29.2 2000/06/07 14:02:33 chongo Exp $
|
## @(#) $Id: srandom,v 29.3 2001/05/13 13:26:26 chongo Exp $
|
||||||
## @(#) $Source: /usr/local/src/cmd/calc/help/RCS/srandom,v $
|
## @(#) $Source: /usr/local/src/cmd/calc/help/RCS/srandom,v $
|
||||||
##
|
##
|
||||||
## Under source code control: 1997/02/17 01:18:22
|
## Under source code control: 1997/02/17 01:18:22
|
||||||
|
59
help/version
Normal file
59
help/version
Normal file
@@ -0,0 +1,59 @@
|
|||||||
|
NAME
|
||||||
|
version - return the calc version string
|
||||||
|
|
||||||
|
SYNOPSIS
|
||||||
|
version()
|
||||||
|
|
||||||
|
TYPES
|
||||||
|
return string
|
||||||
|
|
||||||
|
DESCRIPTION
|
||||||
|
Returns the calc version string.
|
||||||
|
|
||||||
|
Calc version strings can be of the form:
|
||||||
|
|
||||||
|
x.y.z.w
|
||||||
|
x.y.z
|
||||||
|
x.y
|
||||||
|
|
||||||
|
where x, y, z, w, v are integers (without leading 0's) and,
|
||||||
|
t is the the liternal character 't'.
|
||||||
|
|
||||||
|
EXAMPLE
|
||||||
|
> version()
|
||||||
|
"2.11.5.4"
|
||||||
|
|
||||||
|
LIMITS
|
||||||
|
none
|
||||||
|
|
||||||
|
LINK LIBRARY
|
||||||
|
none
|
||||||
|
|
||||||
|
SEE ALSO
|
||||||
|
n/a
|
||||||
|
|
||||||
|
## Copyright (C) 2001 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.
|
||||||
|
## 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||||
|
##
|
||||||
|
## @(#) $Revision: 29.3 $
|
||||||
|
## @(#) $Id: version,v 29.3 2001/06/09 23:32:45 chongo Exp $
|
||||||
|
## @(#) $Source: /usr/local/src/cmd/calc/help/RCS/version,v $
|
||||||
|
##
|
||||||
|
## Under source code control: 2001/05/28 17:38:01
|
||||||
|
## File existed as early as: 2001
|
||||||
|
##
|
||||||
|
## chongo <was here> /\oo/\ http://www.isthe.com/chongo/
|
||||||
|
## Share and enjoy! :-) http://www.isthe.com/chongo/tech/comp/calc/
|
12
jump.h
12
jump.h
@@ -17,8 +17,8 @@
|
|||||||
* 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.
|
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||||
*
|
*
|
||||||
* @(#) $Revision: 29.2 $
|
* @(#) $Revision: 29.4 $
|
||||||
* @(#) $Id: jump.h,v 29.2 2000/06/07 14:02:13 chongo Exp $
|
* @(#) $Id: jump.h,v 29.4 2001/06/08 21:00:58 chongo Exp $
|
||||||
* @(#) $Source: /usr/local/src/cmd/calc/RCS/jump.h,v $
|
* @(#) $Source: /usr/local/src/cmd/calc/RCS/jump.h,v $
|
||||||
*
|
*
|
||||||
* Under source code control: 1994/06/29 04:03:55
|
* Under source code control: 1994/06/29 04:03:55
|
||||||
@@ -65,7 +65,13 @@
|
|||||||
#if !defined(__JUMP_H__)
|
#if !defined(__JUMP_H__)
|
||||||
#define __JUMP_H__
|
#define __JUMP_H__
|
||||||
|
|
||||||
#include "have_const.h"
|
|
||||||
|
#if defined(CALC_SRC) /* if we are building from the calc source tree */
|
||||||
|
# include "have_const.h"
|
||||||
|
#else
|
||||||
|
# include <calc/have_const.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* trivial prime CONSTants
|
* trivial prime CONSTants
|
||||||
|
10
label.h
10
label.h
@@ -17,8 +17,8 @@
|
|||||||
* 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.
|
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||||
*
|
*
|
||||||
* @(#) $Revision: 29.2 $
|
* @(#) $Revision: 29.4 $
|
||||||
* @(#) $Id: label.h,v 29.2 2000/06/07 14:02:13 chongo Exp $
|
* @(#) $Id: label.h,v 29.4 2001/06/08 21:00:58 chongo Exp $
|
||||||
* @(#) $Source: /usr/local/src/cmd/calc/RCS/label.h,v $
|
* @(#) $Source: /usr/local/src/cmd/calc/RCS/label.h,v $
|
||||||
*
|
*
|
||||||
* Under source code control: 1990/02/15 01:48:33
|
* Under source code control: 1990/02/15 01:48:33
|
||||||
@@ -32,7 +32,11 @@
|
|||||||
#define __LABEL_H__
|
#define __LABEL_H__
|
||||||
|
|
||||||
|
|
||||||
#include "zmath.h"
|
#if defined(CALC_SRC) /* if we are building from the calc source tree */
|
||||||
|
# include "zmath.h"
|
||||||
|
#else
|
||||||
|
# include <calc/zmath.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
#define NULL_LABEL ((LABEL *) 0)
|
#define NULL_LABEL ((LABEL *) 0)
|
||||||
|
10
lib_calc.c
10
lib_calc.c
@@ -17,8 +17,8 @@
|
|||||||
* 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.
|
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||||
*
|
*
|
||||||
* @(#) $Revision: 29.6 $
|
* @(#) $Revision: 29.7 $
|
||||||
* @(#) $Id: lib_calc.c,v 29.6 2001/03/17 21:31:47 chongo Exp $
|
* @(#) $Id: lib_calc.c,v 29.7 2001/04/08 22:05:40 chongo Exp $
|
||||||
* @(#) $Source: /usr/local/src/cmd/calc/RCS/lib_calc.c,v $
|
* @(#) $Source: /usr/local/src/cmd/calc/RCS/lib_calc.c,v $
|
||||||
*
|
*
|
||||||
* Under source code control: 1996/06/17 18:06:19
|
* Under source code control: 1996/06/17 18:06:19
|
||||||
@@ -753,10 +753,10 @@ calc_tty(int fd)
|
|||||||
printf("calc_tty: stty -ECHO -ECHOE -ECHOK -ICANON +ISTRIP "
|
printf("calc_tty: stty -ECHO -ECHOE -ECHOK -ICANON +ISTRIP "
|
||||||
"VMIN=1 VTIME=0: fd %d\n", fd);
|
"VMIN=1 VTIME=0: fd %d\n", fd);
|
||||||
|
|
||||||
#elif defined (USE_SGTTY)/* assume USE_SGTTY */
|
#elif defined (USE_TERMIOS)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* assume USE_SGTTY tty state method
|
* USE_TERMIOS tty state method
|
||||||
*/
|
*/
|
||||||
if (fd_setup[slot] < 0 && tcgetattr(fd, fd_orig+slot) < 0) {
|
if (fd_setup[slot] < 0 && tcgetattr(fd, fd_orig+slot) < 0) {
|
||||||
if (conf->calc_debug & CALCDBG_TTY)
|
if (conf->calc_debug & CALCDBG_TTY)
|
||||||
@@ -848,7 +848,7 @@ orig_tty(int fd)
|
|||||||
if (conf->calc_debug & CALCDBG_TTY)
|
if (conf->calc_debug & CALCDBG_TTY)
|
||||||
printf("orig_tty: TCSETAW restored fd %d\n", fd);
|
printf("orig_tty: TCSETAW restored fd %d\n", fd);
|
||||||
|
|
||||||
#elif defined (USE_SGTTY)/* assume USE_SGTTY */
|
#elif defined (USE_TERMIOS)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* assume USE_SGTTY tty state method
|
* assume USE_SGTTY tty state method
|
||||||
|
10
math_error.h
10
math_error.h
@@ -17,8 +17,8 @@
|
|||||||
* 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.
|
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||||
*
|
*
|
||||||
* @(#) $Revision: 29.3 $
|
* @(#) $Revision: 29.5 $
|
||||||
* @(#) $Id: math_error.h,v 29.3 2001/03/17 21:31:47 chongo Exp $
|
* @(#) $Id: math_error.h,v 29.5 2001/06/08 21:00:58 chongo Exp $
|
||||||
* @(#) $Source: /usr/local/src/cmd/calc/RCS/math_error.h,v $
|
* @(#) $Source: /usr/local/src/cmd/calc/RCS/math_error.h,v $
|
||||||
*
|
*
|
||||||
* Under source code control: 1997/03/23 18:37:10
|
* Under source code control: 1997/03/23 18:37:10
|
||||||
@@ -33,7 +33,11 @@
|
|||||||
#define __MATH_ERROR_H__
|
#define __MATH_ERROR_H__
|
||||||
|
|
||||||
|
|
||||||
#include "win32dll.h"
|
#if defined(CALC_SRC) /* if we are building from the calc source tree */
|
||||||
|
# include "win32dll.h"
|
||||||
|
#else
|
||||||
|
# include <calc/win32dll.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@@ -19,8 +19,8 @@
|
|||||||
* 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.
|
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||||
*
|
*
|
||||||
* @(#) $Revision: 29.3 $
|
* @(#) $Revision: 29.4 $
|
||||||
* @(#) $Id: opcodes.c,v 29.3 2000/07/17 15:35:49 chongo Exp $
|
* @(#) $Id: opcodes.c,v 29.4 2001/04/25 07:16:26 chongo Exp $
|
||||||
* @(#) $Source: /usr/local/src/cmd/calc/RCS/opcodes.c,v $
|
* @(#) $Source: /usr/local/src/cmd/calc/RCS/opcodes.c,v $
|
||||||
*
|
*
|
||||||
* Under source code control: 1990/02/15 01:48:19
|
* Under source code control: 1990/02/15 01:48:19
|
||||||
@@ -3234,7 +3234,7 @@ o_quit(FUNC *fp, long index)
|
|||||||
if (cp)
|
if (cp)
|
||||||
printf("%s\n", cp);
|
printf("%s\n", cp);
|
||||||
else if (conf->verbose_quit)
|
else if (conf->verbose_quit)
|
||||||
printf("Quit or abort executed\n");
|
printf("quit or abort executed\n");
|
||||||
if (!inputisterminal() && !strcmp(fp->f_name, "*"))
|
if (!inputisterminal() && !strcmp(fp->f_name, "*"))
|
||||||
closeinput();
|
closeinput();
|
||||||
go = FALSE;
|
go = FALSE;
|
||||||
|
10
opcodes.h
10
opcodes.h
@@ -17,8 +17,8 @@
|
|||||||
* 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.
|
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||||
*
|
*
|
||||||
* @(#) $Revision: 29.4 $
|
* @(#) $Revision: 29.6 $
|
||||||
* @(#) $Id: opcodes.h,v 29.4 2001/03/17 21:31:47 chongo Exp $
|
* @(#) $Id: opcodes.h,v 29.6 2001/06/08 21:00:58 chongo Exp $
|
||||||
* @(#) $Source: /usr/local/src/cmd/calc/RCS/opcodes.h,v $
|
* @(#) $Source: /usr/local/src/cmd/calc/RCS/opcodes.h,v $
|
||||||
*
|
*
|
||||||
* Under source code control: 1990/02/15 01:48:35
|
* Under source code control: 1990/02/15 01:48:35
|
||||||
@@ -32,7 +32,11 @@
|
|||||||
#define __OPCODES_H__
|
#define __OPCODES_H__
|
||||||
|
|
||||||
|
|
||||||
#include "win32dll.h"
|
#if defined(CALC_SRC) /* if we are building from the calc source tree */
|
||||||
|
# include "win32dll.h"
|
||||||
|
#else
|
||||||
|
# include <calc/win32dll.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
13
prime.h
13
prime.h
@@ -17,8 +17,8 @@
|
|||||||
* 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.
|
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||||
*
|
*
|
||||||
* @(#) $Revision: 29.2 $
|
* @(#) $Revision: 29.4 $
|
||||||
* @(#) $Id: prime.h,v 29.2 2000/06/07 14:02:13 chongo Exp $
|
* @(#) $Id: prime.h,v 29.4 2001/06/08 21:00:58 chongo Exp $
|
||||||
* @(#) $Source: /usr/local/src/cmd/calc/RCS/prime.h,v $
|
* @(#) $Source: /usr/local/src/cmd/calc/RCS/prime.h,v $
|
||||||
*
|
*
|
||||||
* Under source code control: 1994/06/04 03:26:15
|
* Under source code control: 1994/06/04 03:26:15
|
||||||
@@ -33,8 +33,13 @@
|
|||||||
#define __PRIME_H__
|
#define __PRIME_H__
|
||||||
|
|
||||||
|
|
||||||
#include "qmath.h"
|
#if defined(CALC_SRC) /* if we are building from the calc source tree */
|
||||||
#include "have_const.h"
|
# include "qmath.h"
|
||||||
|
# include "have_const.h"
|
||||||
|
#else
|
||||||
|
# include <calc/math.h>
|
||||||
|
# include <calc/have_const.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
#define MAX_MAP_PRIME ((FULL)65521) /* (2^16-15) larest prime in prmap */
|
#define MAX_MAP_PRIME ((FULL)65521) /* (2^16-15) larest prime in prmap */
|
||||||
|
11
qmath.h
11
qmath.h
@@ -17,8 +17,8 @@
|
|||||||
* 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.
|
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||||
*
|
*
|
||||||
* @(#) $Revision: 29.3 $
|
* @(#) $Revision: 29.5 $
|
||||||
* @(#) $Id: qmath.h,v 29.3 2000/07/17 15:35:49 chongo Exp $
|
* @(#) $Id: qmath.h,v 29.5 2001/06/08 21:00:58 chongo Exp $
|
||||||
* @(#) $Source: /usr/local/src/cmd/calc/RCS/qmath.h,v $
|
* @(#) $Source: /usr/local/src/cmd/calc/RCS/qmath.h,v $
|
||||||
*
|
*
|
||||||
* Under source code control: 1993/07/30 19:42:47
|
* Under source code control: 1993/07/30 19:42:47
|
||||||
@@ -32,7 +32,12 @@
|
|||||||
#define __QMATH_H__
|
#define __QMATH_H__
|
||||||
|
|
||||||
|
|
||||||
#include "zmath.h"
|
#if defined(CALC_SRC) /* if we are building from the calc source tree */
|
||||||
|
# include "zmath.h"
|
||||||
|
#else
|
||||||
|
# include <calc/zmath.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
#define INITCONSTCOUNT 9 /* number of initnumbs[] pre-defined constants */
|
#define INITCONSTCOUNT 9 /* number of initnumbs[] pre-defined constants */
|
||||||
|
|
||||||
|
@@ -17,8 +17,8 @@
|
|||||||
* 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.
|
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||||
*
|
*
|
||||||
* @(#) $Revision: 29.3 $
|
* @(#) $Revision: 29.4 $
|
||||||
* @(#) $Id: quickhash.c,v 29.3 2000/06/07 14:02:13 chongo Exp $
|
* @(#) $Id: quickhash.c,v 29.4 2001/04/14 22:47:21 chongo Exp $
|
||||||
* @(#) $Source: /usr/local/src/cmd/calc/RCS/quickhash.c,v $
|
* @(#) $Source: /usr/local/src/cmd/calc/RCS/quickhash.c,v $
|
||||||
*
|
*
|
||||||
* Under source code control: 1995/03/04 11:34:23
|
* Under source code control: 1995/03/04 11:34:23
|
||||||
@@ -304,7 +304,7 @@ objhash(OBJECT *op, QCKHASH val)
|
|||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* randhash - return a trivial hash for an a55 state
|
* randhash - return a trivial hash for an s100 state
|
||||||
*
|
*
|
||||||
* given:
|
* given:
|
||||||
* state - state to hash
|
* state - state to hash
|
||||||
@@ -326,6 +326,7 @@ randhash(RAND *r, QCKHASH val)
|
|||||||
val = fnv(r->j, V_RAND+val);
|
val = fnv(r->j, V_RAND+val);
|
||||||
val = fnv(r->k, val);
|
val = fnv(r->k, val);
|
||||||
val = fnv(r->bits, val);
|
val = fnv(r->bits, val);
|
||||||
|
val = fnv(r->need_to_skip, val);
|
||||||
|
|
||||||
/* hash the state arrays */
|
/* hash the state arrays */
|
||||||
return fnv_fullhash(&r->buffer[0], SLEN+SCNT+SHUFLEN, val);
|
return fnv_fullhash(&r->buffer[0], SLEN+SCNT+SHUFLEN, val);
|
||||||
|
@@ -17,8 +17,8 @@
|
|||||||
# 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.
|
# 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||||
#
|
#
|
||||||
# @(#) $Revision: 29.5 $
|
# @(#) $Revision: 29.14 $
|
||||||
# @(#) $Id: Makefile,v 29.5 2001/04/08 10:53:52 chongo Exp $
|
# @(#) $Id: Makefile,v 29.14 2001/06/08 22:38:53 chongo Exp $
|
||||||
# @(#) $Source: /usr/local/src/cmd/calc/sample/RCS/Makefile,v $
|
# @(#) $Source: /usr/local/src/cmd/calc/sample/RCS/Makefile,v $
|
||||||
#
|
#
|
||||||
# Under source code control: 1997/04/19 22:46:49
|
# Under source code control: 1997/04/19 22:46:49
|
||||||
@@ -78,20 +78,48 @@ Q=@
|
|||||||
# 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.
|
||||||
#
|
#
|
||||||
# where to install things
|
# where things go
|
||||||
#
|
#
|
||||||
# ${TOPDIR} is the directory under which the calc directory will be placed.
|
# ${BINDIR} where to install binary files
|
||||||
# ${LIBDIR} is where the *.cal, *.h, *.a, bindings and help dir are installed.
|
# ${SHAREDIR} where most common shared files are kept
|
||||||
# ${HELPDIR} is where the help directory is installed.
|
# ${INCDIR} where most .h files are kept
|
||||||
|
# ${LIBDIR} where *.a files are installed
|
||||||
#
|
#
|
||||||
TOPDIR= /usr/local/lib
|
# ${CSHAREDIR} where most common shared calc files are kept
|
||||||
#TOPDIR= /usr/lib
|
# ${HELPDIR} where the help directory is installed.
|
||||||
#TOPDIR= /usr/libdata
|
|
||||||
#TOPDIR= /usr/contrib/lib
|
|
||||||
#
|
#
|
||||||
LIBDIR= ${TOPDIR}/calc
|
#BINDIR= /usr/local/bin
|
||||||
|
BINDIR= /usr/bin
|
||||||
|
#BINDIR= /usr/contrib/bin
|
||||||
|
#
|
||||||
|
#SHAREDIR= /usr/local/lib
|
||||||
|
SHAREDIR= /usr/share
|
||||||
|
#
|
||||||
|
#INCDIR= /usr/local/include
|
||||||
|
INCDIR= /usr/include
|
||||||
|
#
|
||||||
|
#LIBDIR= /usr/local/lib
|
||||||
|
LIBDIR= /usr/lib
|
||||||
|
|
||||||
|
CSHAREDIR= ${SHAREDIR}/calc
|
||||||
HELPDIR= ${LIBDIR}/help
|
HELPDIR= ${LIBDIR}/help
|
||||||
|
|
||||||
|
# T - top level directory under which calc will be installed
|
||||||
|
#
|
||||||
|
# The calc install is performed under $T, the calc build is
|
||||||
|
# performed under /. The purpose for $T is to allow someone to
|
||||||
|
# install calc somewhere other than into the system area. For example
|
||||||
|
# when forming the calc rpm, the Makefile is called with T=$RPM_BUILD_ROOT.
|
||||||
|
#
|
||||||
|
# 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
|
||||||
|
# calc is installed under $T, as if one had to chroot under
|
||||||
|
# $T for calc to operate.
|
||||||
|
#
|
||||||
|
# If in doubt, use T=
|
||||||
|
#
|
||||||
|
T=
|
||||||
|
|
||||||
# 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.
|
||||||
#
|
#
|
||||||
@@ -266,12 +294,15 @@ CALCLIBLIST= ${C_SRC} ${H_SRC} ${MAKE_FILE} README_SAMPLE
|
|||||||
|
|
||||||
# complete list of targets
|
# complete list of targets
|
||||||
#
|
#
|
||||||
TARGETS= many_random test_random
|
# NOTE: This list MUST be co-ordinated with the ${SAMPLE_TARGETS} variable
|
||||||
|
# in the upper level ../Makefile
|
||||||
|
#
|
||||||
|
SAMPLE_TARGETS= many_random test_random
|
||||||
|
TARGETS= ${SAMPLE_TARGETS}
|
||||||
|
|
||||||
# required vars
|
# required vars
|
||||||
#
|
#
|
||||||
SHELL= /bin/sh
|
SHELL= /bin/sh
|
||||||
MAKE_FILE= Makefile
|
|
||||||
|
|
||||||
# standard tools
|
# standard tools
|
||||||
#
|
#
|
||||||
@@ -279,6 +310,7 @@ SED= sed
|
|||||||
MAKEDEPEND= makedepend
|
MAKEDEPEND= makedepend
|
||||||
CHMOD= chmod
|
CHMOD= chmod
|
||||||
SORT= sort
|
SORT= sort
|
||||||
|
CMP= cmp
|
||||||
|
|
||||||
##
|
##
|
||||||
#
|
#
|
||||||
@@ -287,6 +319,7 @@ SORT= sort
|
|||||||
##
|
##
|
||||||
|
|
||||||
all: ${TARGETS} .all
|
all: ${TARGETS} .all
|
||||||
|
@true
|
||||||
|
|
||||||
test_random.o: test_random.c
|
test_random.o: test_random.c
|
||||||
${CC} ${CFLAGS} ${ALLOW_CUSTOM} test_random.c -c
|
${CC} ${CFLAGS} ${ALLOW_CUSTOM} test_random.c -c
|
||||||
@@ -394,7 +427,7 @@ depend:
|
|||||||
${Q}echo forming sample dependency list
|
${Q}echo forming sample dependency list
|
||||||
${Q}echo "# DO NOT DELETE THIS LINE -- make depend depends on it." > \
|
${Q}echo "# DO NOT DELETE THIS LINE -- make depend depends on it." > \
|
||||||
skel/sample/makedep.out
|
skel/sample/makedep.out
|
||||||
${Q}cd skel/sample; ${MAKEDEPEND} -w 1 -m -f makedep.out -I.. ${C_SRC}
|
${Q}cd skel/sample; ${MAKEDEPEND} -w 1 -f makedep.out -I.. ${C_SRC}
|
||||||
-${Q}for i in ${C_SRC}; do \
|
-${Q}for i in ${C_SRC}; do \
|
||||||
echo "$$i" | ${SED} 's/^\(.*\)\.c/\1.o: \1.c/'; \
|
echo "$$i" | ${SED} 's/^\(.*\)\.c/\1.o: \1.c/'; \
|
||||||
done >> skel/sample/makedep.out
|
done >> skel/sample/makedep.out
|
||||||
@@ -407,7 +440,7 @@ depend:
|
|||||||
${Q}${SED} -n '3,$$p' skel/sample/makedep.out | \
|
${Q}${SED} -n '3,$$p' skel/sample/makedep.out | \
|
||||||
LANG=C ${SORT} -u >> Makefile
|
LANG=C ${SORT} -u >> Makefile
|
||||||
-${Q}rm -rf skel
|
-${Q}rm -rf skel
|
||||||
-${Q}if cmp -s Makefile.bak Makefile; then \
|
-${Q}if ${CMP} -s Makefile.bak Makefile; then \
|
||||||
echo 'sample Makefile was already up to date'; \
|
echo 'sample Makefile was already up to date'; \
|
||||||
mv -f Makefile.bak Makefile; \
|
mv -f Makefile.bak Makefile; \
|
||||||
else \
|
else \
|
||||||
@@ -422,6 +455,15 @@ depend:
|
|||||||
fi; \
|
fi; \
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
##
|
||||||
|
#
|
||||||
|
# rpm rules
|
||||||
|
#
|
||||||
|
##
|
||||||
|
|
||||||
|
echo_inst_files: Makefile
|
||||||
|
|
||||||
|
|
||||||
##
|
##
|
||||||
#
|
#
|
||||||
# Utility rules
|
# Utility rules
|
||||||
@@ -437,7 +479,9 @@ clobber:
|
|||||||
rm -f .all Makefile.tmp sample
|
rm -f .all Makefile.tmp sample
|
||||||
|
|
||||||
# for right now we will not install anything
|
# for right now we will not install anything
|
||||||
|
#
|
||||||
install: all
|
install: all
|
||||||
|
@true
|
||||||
|
|
||||||
##
|
##
|
||||||
#
|
#
|
||||||
@@ -451,8 +495,8 @@ install: all
|
|||||||
many_random.o: ../alloc.h
|
many_random.o: ../alloc.h
|
||||||
many_random.o: ../block.h
|
many_random.o: ../block.h
|
||||||
many_random.o: ../byteswap.h
|
many_random.o: ../byteswap.h
|
||||||
many_random.o: ../calcerr.h
|
|
||||||
many_random.o: ../calc.h
|
many_random.o: ../calc.h
|
||||||
|
many_random.o: ../calcerr.h
|
||||||
many_random.o: ../cmath.h
|
many_random.o: ../cmath.h
|
||||||
many_random.o: ../config.h
|
many_random.o: ../config.h
|
||||||
many_random.o: ../endian_calc.h
|
many_random.o: ../endian_calc.h
|
||||||
@@ -465,22 +509,22 @@ many_random.o: ../have_stdlib.h
|
|||||||
many_random.o: ../have_string.h
|
many_random.o: ../have_string.h
|
||||||
many_random.o: ../lib_util.h
|
many_random.o: ../lib_util.h
|
||||||
many_random.o: ../longbits.h
|
many_random.o: ../longbits.h
|
||||||
many_random.o: many_random.c
|
|
||||||
many_random.o: ../md5.h
|
many_random.o: ../md5.h
|
||||||
many_random.o: ../nametype.h
|
many_random.o: ../nametype.h
|
||||||
many_random.o: ../qmath.h
|
many_random.o: ../qmath.h
|
||||||
many_random.o: ../shs1.h
|
|
||||||
many_random.o: ../shs.h
|
many_random.o: ../shs.h
|
||||||
|
many_random.o: ../shs1.h
|
||||||
many_random.o: ../string.h
|
many_random.o: ../string.h
|
||||||
many_random.o: ../value.h
|
many_random.o: ../value.h
|
||||||
many_random.o: ../win32dll.h
|
many_random.o: ../win32dll.h
|
||||||
many_random.o: ../zmath.h
|
many_random.o: ../zmath.h
|
||||||
many_random.o: ../zrandom.h
|
many_random.o: ../zrandom.h
|
||||||
|
many_random.o: many_random.c
|
||||||
test_random.o: ../alloc.h
|
test_random.o: ../alloc.h
|
||||||
test_random.o: ../block.h
|
test_random.o: ../block.h
|
||||||
test_random.o: ../byteswap.h
|
test_random.o: ../byteswap.h
|
||||||
test_random.o: ../calcerr.h
|
|
||||||
test_random.o: ../calc.h
|
test_random.o: ../calc.h
|
||||||
|
test_random.o: ../calcerr.h
|
||||||
test_random.o: ../cmath.h
|
test_random.o: ../cmath.h
|
||||||
test_random.o: ../config.h
|
test_random.o: ../config.h
|
||||||
test_random.o: ../endian_calc.h
|
test_random.o: ../endian_calc.h
|
||||||
@@ -496,11 +540,11 @@ test_random.o: ../longbits.h
|
|||||||
test_random.o: ../md5.h
|
test_random.o: ../md5.h
|
||||||
test_random.o: ../nametype.h
|
test_random.o: ../nametype.h
|
||||||
test_random.o: ../qmath.h
|
test_random.o: ../qmath.h
|
||||||
test_random.o: ../shs1.h
|
|
||||||
test_random.o: ../shs.h
|
test_random.o: ../shs.h
|
||||||
|
test_random.o: ../shs1.h
|
||||||
test_random.o: ../string.h
|
test_random.o: ../string.h
|
||||||
test_random.o: test_random.c
|
|
||||||
test_random.o: ../value.h
|
test_random.o: ../value.h
|
||||||
test_random.o: ../win32dll.h
|
test_random.o: ../win32dll.h
|
||||||
test_random.o: ../zmath.h
|
test_random.o: ../zmath.h
|
||||||
test_random.o: ../zrandom.h
|
test_random.o: ../zrandom.h
|
||||||
|
test_random.o: test_random.c
|
||||||
|
12
seed.c
12
seed.c
@@ -17,8 +17,8 @@
|
|||||||
* 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.
|
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||||
*
|
*
|
||||||
* @(#) $Revision: 29.4 $
|
* @(#) $Revision: 29.5 $
|
||||||
* @(#) $Id: seed.c,v 29.4 2001/03/17 21:31:47 chongo Exp $
|
* @(#) $Id: seed.c,v 29.5 2001/05/08 06:44:29 chongo Exp $
|
||||||
* @(#) $Source: /usr/local/src/cmd/calc/RCS/seed.c,v $
|
* @(#) $Source: /usr/local/src/cmd/calc/RCS/seed.c,v $
|
||||||
*
|
*
|
||||||
* Under source code control: 1999/10/03 10:06:53
|
* Under source code control: 1999/10/03 10:06:53
|
||||||
@@ -31,10 +31,10 @@
|
|||||||
/*
|
/*
|
||||||
* Generate a quasi-random seed based on system and process information.
|
* Generate a quasi-random seed based on system and process information.
|
||||||
*
|
*
|
||||||
* NOTE: This is not a good source of chaotic data. The lavarand
|
* NOTE: This is not a good source of chaotic data. The LavaRnd
|
||||||
* system does a much better job of that. See:
|
* system does a much better job of that. See:
|
||||||
*
|
*
|
||||||
* http://lavarand.sgi.com/index.html
|
* http://www.LavaRnd.org/
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
@@ -270,10 +270,10 @@ hash_buf(char *buf, unsigned len)
|
|||||||
*
|
*
|
||||||
* Generate a quasi-random seed based on system and process information.
|
* Generate a quasi-random seed based on system and process information.
|
||||||
*
|
*
|
||||||
* NOTE: This is not a good source of chaotic data. The lavarand
|
* NOTE: This is not a good source of chaotic data. The LavaRnd
|
||||||
* system does a much better job of that. See:
|
* system does a much better job of that. See:
|
||||||
*
|
*
|
||||||
* http://lavarand.sgi.com/index.html
|
* http://www.LavaRnd.org/
|
||||||
*
|
*
|
||||||
* PORTING NOTE:
|
* PORTING NOTE:
|
||||||
* If when porting this code to your system and something
|
* If when porting this code to your system and something
|
||||||
|
10
string.h
10
string.h
@@ -17,8 +17,8 @@
|
|||||||
* 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.
|
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||||
*
|
*
|
||||||
* @(#) $Revision: 29.2 $
|
* @(#) $Revision: 29.4 $
|
||||||
* @(#) $Id: string.h,v 29.2 2000/06/07 14:02:13 chongo Exp $
|
* @(#) $Id: string.h,v 29.4 2001/06/08 21:00:58 chongo Exp $
|
||||||
* @(#) $Source: /usr/local/src/cmd/calc/RCS/string.h,v $
|
* @(#) $Source: /usr/local/src/cmd/calc/RCS/string.h,v $
|
||||||
*
|
*
|
||||||
* Under source code control: 1990/02/15 01:48:36
|
* Under source code control: 1990/02/15 01:48:36
|
||||||
@@ -32,7 +32,11 @@
|
|||||||
#define __CALCSTRING_H__
|
#define __CALCSTRING_H__
|
||||||
|
|
||||||
|
|
||||||
#include "zmath.h"
|
#if defined(CALC_SRC) /* if we are building from the calc source tree */
|
||||||
|
# include "zmath.h"
|
||||||
|
#else
|
||||||
|
# include <calc/zmath.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
struct string {
|
struct string {
|
||||||
|
10
symbol.h
10
symbol.h
@@ -17,8 +17,8 @@
|
|||||||
* 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.
|
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||||
*
|
*
|
||||||
* @(#) $Revision: 29.2 $
|
* @(#) $Revision: 29.4 $
|
||||||
* @(#) $Id: symbol.h,v 29.2 2000/06/07 14:02:13 chongo Exp $
|
* @(#) $Id: symbol.h,v 29.4 2001/06/08 21:00:58 chongo Exp $
|
||||||
* @(#) $Source: /usr/local/src/cmd/calc/RCS/symbol.h,v $
|
* @(#) $Source: /usr/local/src/cmd/calc/RCS/symbol.h,v $
|
||||||
*
|
*
|
||||||
* Under source code control: 1990/02/15 01:48:37
|
* Under source code control: 1990/02/15 01:48:37
|
||||||
@@ -32,7 +32,11 @@
|
|||||||
#define __SYMBOL_H__
|
#define __SYMBOL_H__
|
||||||
|
|
||||||
|
|
||||||
#include "zmath.h"
|
#if defined(CALC_SRC) /* if we are building from the calc source tree */
|
||||||
|
# include "zmath.h"
|
||||||
|
#else
|
||||||
|
# include <calc/zmath.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
10
token.h
10
token.h
@@ -17,8 +17,8 @@
|
|||||||
* 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.
|
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||||
*
|
*
|
||||||
* @(#) $Revision: 29.2 $
|
* @(#) $Revision: 29.4 $
|
||||||
* @(#) $Id: token.h,v 29.2 2000/06/07 14:02:13 chongo Exp $
|
* @(#) $Id: token.h,v 29.4 2001/06/08 21:00:58 chongo Exp $
|
||||||
* @(#) $Source: /usr/local/src/cmd/calc/RCS/token.h,v $
|
* @(#) $Source: /usr/local/src/cmd/calc/RCS/token.h,v $
|
||||||
*
|
*
|
||||||
* Under source code control: 1990/02/15 01:48:37
|
* Under source code control: 1990/02/15 01:48:37
|
||||||
@@ -32,7 +32,11 @@
|
|||||||
#define __TOKEN_H__
|
#define __TOKEN_H__
|
||||||
|
|
||||||
|
|
||||||
#include "zmath.h"
|
#if defined(CALC_SRC) /* if we are building from the calc source tree */
|
||||||
|
# include "zmath.h"
|
||||||
|
#else
|
||||||
|
# include <calc/zmath.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
35
value.h
35
value.h
@@ -17,8 +17,8 @@
|
|||||||
* 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.
|
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||||
*
|
*
|
||||||
* @(#) $Revision: 29.5 $
|
* @(#) $Revision: 29.7 $
|
||||||
* @(#) $Id: value.h,v 29.5 2001/03/17 21:31:47 chongo Exp $
|
* @(#) $Id: value.h,v 29.7 2001/06/08 21:00:58 chongo Exp $
|
||||||
* @(#) $Source: /usr/local/src/cmd/calc/RCS/value.h,v $
|
* @(#) $Source: /usr/local/src/cmd/calc/RCS/value.h,v $
|
||||||
*
|
*
|
||||||
* Under source code control: 1993/07/30 19:42:47
|
* Under source code control: 1993/07/30 19:42:47
|
||||||
@@ -32,15 +32,28 @@
|
|||||||
#define __VALUE_H__
|
#define __VALUE_H__
|
||||||
|
|
||||||
|
|
||||||
#include "win32dll.h"
|
#if defined(CALC_SRC) /* if we are building from the calc source tree */
|
||||||
#include "cmath.h"
|
# include "win32dll.h"
|
||||||
#include "config.h"
|
# include "cmath.h"
|
||||||
#include "shs.h"
|
# include "config.h"
|
||||||
#include "calcerr.h"
|
# include "shs.h"
|
||||||
#include "hash.h"
|
# include "calcerr.h"
|
||||||
#include "block.h"
|
# include "hash.h"
|
||||||
#include "nametype.h"
|
# include "block.h"
|
||||||
#include "string.h"
|
# include "nametype.h"
|
||||||
|
# include "string.h"
|
||||||
|
#else
|
||||||
|
# include <calc/win32dll.h>
|
||||||
|
# include <calc/cmath.h>
|
||||||
|
# include <calc/config.h>
|
||||||
|
# include <calc/shs.h>
|
||||||
|
# include <calc/calcerr.h>
|
||||||
|
# include <calc/hash.h>
|
||||||
|
# include <calc/block.h>
|
||||||
|
# include <calc/nametype.h>
|
||||||
|
# include <calc/string.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
#define MAXDIM 4 /* maximum number of dimensions in matrices */
|
#define MAXDIM 4 /* maximum number of dimensions in matrices */
|
||||||
#define USUAL_ELEMENTS 4 /* usual number of elements for objects */
|
#define USUAL_ELEMENTS 4 /* usual number of elements for objects */
|
||||||
|
178
version.c
178
version.c
@@ -19,8 +19,8 @@
|
|||||||
* 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.
|
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||||
*
|
*
|
||||||
* @(#) $Revision: 29.21 $
|
* @(#) $Revision: 29.37 $
|
||||||
* @(#) $Id: version.c,v 29.21 2001/04/08 10:09:20 chongo Exp $
|
* @(#) $Id: version.c,v 29.37 2001/12/31 22:12:35 chongo Exp $
|
||||||
* @(#) $Source: /usr/local/src/cmd/calc/RCS/version.c,v $
|
* @(#) $Source: /usr/local/src/cmd/calc/RCS/version.c,v $
|
||||||
*
|
*
|
||||||
* Under source code control: 1990/05/22 11:00:58
|
* Under source code control: 1990/05/22 11:00:58
|
||||||
@@ -32,6 +32,9 @@
|
|||||||
|
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
#include <errno.h>
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
#if defined(CALC_VER)
|
#if defined(CALC_VER)
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
@@ -43,7 +46,8 @@ static char *program;
|
|||||||
#define MAJOR_VER 2 /* major version */
|
#define MAJOR_VER 2 /* major version */
|
||||||
#define MINOR_VER 11 /* minor version */
|
#define MINOR_VER 11 /* minor version */
|
||||||
#define MAJOR_PATCH 5 /* patch level or 0 if no patch */
|
#define MAJOR_PATCH 5 /* patch level or 0 if no patch */
|
||||||
#define MINOR_PATCH "1.1" /* test number or empty string if no patch */
|
#define MINOR_PATCH 6 /* test number or 0 if no minor patch */
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* calc version constants
|
* calc version constants
|
||||||
@@ -51,7 +55,7 @@ static char *program;
|
|||||||
int calc_major_ver = MAJOR_VER;
|
int calc_major_ver = MAJOR_VER;
|
||||||
int calc_minor_ver = MINOR_VER;
|
int calc_minor_ver = MINOR_VER;
|
||||||
int calc_major_patch = MAJOR_PATCH;
|
int calc_major_patch = MAJOR_PATCH;
|
||||||
char *calc_minor_patch = MINOR_PATCH;
|
int calc_minor_patch = MINOR_PATCH;
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -95,7 +99,7 @@ char *Copyright = "\n"
|
|||||||
* This function returns a malloced version string. This version
|
* This function returns a malloced version string. This version
|
||||||
* string does not contain the title, just:
|
* string does not contain the title, just:
|
||||||
*
|
*
|
||||||
* x.y.ztw
|
* x.y.z.w
|
||||||
* x.y.z
|
* x.y.z
|
||||||
* x.y
|
* x.y
|
||||||
*/
|
*/
|
||||||
@@ -114,15 +118,17 @@ version(void)
|
|||||||
/*
|
/*
|
||||||
* form the version buffer
|
* form the version buffer
|
||||||
*/
|
*/
|
||||||
if (sizeof(MINOR_PATCH) > 1) {
|
if (MINOR_PATCH > 0) {
|
||||||
sprintf(verbuf,
|
snprintf(verbuf, BUFSIZ,
|
||||||
"%d.%d.%dt%s", calc_major_ver, calc_minor_ver,
|
"%d.%d.%d.%d", calc_major_ver, calc_minor_ver,
|
||||||
calc_major_patch, calc_minor_patch);
|
calc_major_patch, calc_minor_patch);
|
||||||
} else if (MAJOR_PATCH > 0) {
|
} else if (MAJOR_PATCH > 0) {
|
||||||
sprintf(verbuf,
|
snprintf(verbuf, BUFSIZ,
|
||||||
"%d.%d.%d", calc_major_ver, calc_minor_ver, calc_major_patch);
|
"%d.%d.%d", calc_major_ver,
|
||||||
|
calc_minor_ver, calc_major_patch);
|
||||||
} else {
|
} else {
|
||||||
sprintf(verbuf, "%d.%d", calc_major_ver, calc_minor_ver);
|
snprintf(verbuf, BUFSIZ,
|
||||||
|
"%d.%d", calc_major_ver, calc_minor_ver);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -131,7 +137,7 @@ version(void)
|
|||||||
stored_version = (char *)malloc(strlen(verbuf)+1);
|
stored_version = (char *)malloc(strlen(verbuf)+1);
|
||||||
if (stored_version == NULL) {
|
if (stored_version == NULL) {
|
||||||
fprintf(stderr, "%s: version formation value\n", program);
|
fprintf(stderr, "%s: version formation value\n", program);
|
||||||
exit(2);
|
exit(1);
|
||||||
}
|
}
|
||||||
strcpy(stored_version, verbuf);
|
strcpy(stored_version, verbuf);
|
||||||
|
|
||||||
@@ -144,6 +150,129 @@ version(void)
|
|||||||
|
|
||||||
#if defined(CALC_VER)
|
#if defined(CALC_VER)
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* print_rpm_version - print just the version string, rpm style
|
||||||
|
*
|
||||||
|
* This function prints a version string, rpm style:
|
||||||
|
*
|
||||||
|
* x.y.z.w-r
|
||||||
|
* x.y.z-r
|
||||||
|
* x.y-r
|
||||||
|
*
|
||||||
|
* where 'r' comes from the content of the release file.
|
||||||
|
*/
|
||||||
|
void
|
||||||
|
print_rpm_version(char *release)
|
||||||
|
{
|
||||||
|
FILE *file; /* open file */
|
||||||
|
char buf[BUFSIZ+1]; /* release file buffer */
|
||||||
|
char *p;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* obtain the release
|
||||||
|
*/
|
||||||
|
file = fopen(release, "r");
|
||||||
|
if (file == NULL) {
|
||||||
|
fprintf(stderr, "%s: cannot open %s: %s\n",
|
||||||
|
program, release, strerror(errno));
|
||||||
|
exit(2);
|
||||||
|
}
|
||||||
|
buf[BUFSIZ] = '\0';
|
||||||
|
if (fgets(buf, BUFSIZ, file) == NULL) {
|
||||||
|
fprintf(stderr, "%s: cannot read %s: %s\n",
|
||||||
|
program, release, strerror(errno));
|
||||||
|
exit(3);
|
||||||
|
}
|
||||||
|
p = strchr(buf, '\n');
|
||||||
|
if (p != NULL) {
|
||||||
|
*p = '\0';
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* form the version buffer
|
||||||
|
*/
|
||||||
|
if (MINOR_PATCH > 0) {
|
||||||
|
printf("%d.%d.%d.%d-%s\n", calc_major_ver, calc_minor_ver,
|
||||||
|
calc_major_patch, calc_minor_patch, buf);
|
||||||
|
} else if (MAJOR_PATCH > 0) {
|
||||||
|
printf("%d.%d.%d-%s\n", calc_major_ver, calc_minor_ver,
|
||||||
|
calc_major_patch, buf);
|
||||||
|
} else {
|
||||||
|
printf("%d.%d-%s\n", calc_major_ver, calc_minor_ver, buf);
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* print_rpm_major - print just the major part version string
|
||||||
|
*
|
||||||
|
* This function prints the major part version string:
|
||||||
|
*
|
||||||
|
* x.y.z
|
||||||
|
* x.y
|
||||||
|
*/
|
||||||
|
void
|
||||||
|
print_rpm_major(void)
|
||||||
|
{
|
||||||
|
/*
|
||||||
|
* form the version buffer
|
||||||
|
*/
|
||||||
|
if (MAJOR_PATCH > 0) {
|
||||||
|
printf("%d.%d.%d\n", calc_major_ver, calc_minor_ver,
|
||||||
|
calc_major_patch);
|
||||||
|
} else {
|
||||||
|
printf("%d.%d\n", calc_major_ver, calc_minor_ver);
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* print_rpm_release - print just the rpm release
|
||||||
|
*
|
||||||
|
* This function prints the rpm release:
|
||||||
|
*
|
||||||
|
* r
|
||||||
|
*
|
||||||
|
* where 'r' comes from the content of the release file.
|
||||||
|
*/
|
||||||
|
void
|
||||||
|
print_rpm_release(char *release)
|
||||||
|
{
|
||||||
|
FILE *file; /* open file */
|
||||||
|
char buf[BUFSIZ+1]; /* release file buffer */
|
||||||
|
char *p;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* obtain the release
|
||||||
|
*/
|
||||||
|
file = fopen(release, "r");
|
||||||
|
if (file == NULL) {
|
||||||
|
fprintf(stderr, "%s: cannot open %s: %s\n",
|
||||||
|
program, release, strerror(errno));
|
||||||
|
exit(2);
|
||||||
|
}
|
||||||
|
buf[BUFSIZ] = '\0';
|
||||||
|
if (fgets(buf, BUFSIZ, file) == NULL) {
|
||||||
|
fprintf(stderr, "%s: cannot read %s: %s\n",
|
||||||
|
program, release, strerror(errno));
|
||||||
|
exit(3);
|
||||||
|
}
|
||||||
|
p = strchr(buf, '\n');
|
||||||
|
if (p != NULL) {
|
||||||
|
*p = '\0';
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* form the version buffer
|
||||||
|
*/
|
||||||
|
printf("%s\n", buf);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* version - print the calc version
|
* version - print the calc version
|
||||||
*/
|
*/
|
||||||
@@ -151,9 +280,26 @@ version(void)
|
|||||||
int
|
int
|
||||||
main(int argc, char *argv[])
|
main(int argc, char *argv[])
|
||||||
{
|
{
|
||||||
program = argv[0];
|
program = argv[0];
|
||||||
printf("%s\n", version());
|
if (argc == 3 && strcmp(argv[1], "-r") == 0) {
|
||||||
return 0;
|
print_rpm_version(argv[2]);
|
||||||
|
|
||||||
|
} else if (argc == 3 && strcmp(argv[1], "-R") == 0) {
|
||||||
|
print_rpm_release(argv[2]);
|
||||||
|
|
||||||
|
} else if (argc == 2 && strcmp(argv[1], "-V") == 0) {
|
||||||
|
print_rpm_major();
|
||||||
|
|
||||||
|
} else if (argc == 1) {
|
||||||
|
printf("%s\n", version());
|
||||||
|
|
||||||
|
} else {
|
||||||
|
fprintf(stderr,
|
||||||
|
"usage: %s [-V] [-R release_file] [-r release_file]\n",
|
||||||
|
program);
|
||||||
|
exit(4);
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif /* CALC_VER */
|
#endif /* CALC_VER */
|
||||||
|
58
win32.mkdef
Normal file
58
win32.mkdef
Normal file
@@ -0,0 +1,58 @@
|
|||||||
|
TERMCONTROL=-DUSE_WIN32
|
||||||
|
HAVE_VSPRINTF=-UDONT_HAVE_VSPRINTF
|
||||||
|
BYTE_ORDER=-DLITTLE_ENDIAN
|
||||||
|
LONG_BITS=32
|
||||||
|
LONGLONG_BITS=0
|
||||||
|
HAVE_FPOS=-DHAVE_NO_FPOS
|
||||||
|
HAVE_FPOS_POS=-DHAVE_NO_FPOS_POS
|
||||||
|
FPOS_POS_BITS=-UFPOS_POS_BITS
|
||||||
|
FPOS_BITS=-DFPOS_BITS=64
|
||||||
|
OFF_T_BITS=-DOFF_T_BITS=32
|
||||||
|
DEV_BITS=-DDEV_BITS=32
|
||||||
|
INODE_BITS=-DINODE_BITS=16
|
||||||
|
HAVE_OFFSCL=-UOFF_T_NON_SCALAR
|
||||||
|
HAVE_POSSCL=-UFILEPOS_NON_SCALAR
|
||||||
|
HAVE_CONST=-UHAVE_NO_CONST
|
||||||
|
HAVE_UID_T=-DHAVE_NO_UID_T
|
||||||
|
HAVE_NEWSTR=-UHAVE_NO_NEWSTR
|
||||||
|
HAVE_MEMMOVE=-UHAVE_NO_MEMMOVE
|
||||||
|
HAVE_USTAT=-DHAVE_NO_USTAT
|
||||||
|
HAVE_GETSID=-DHAVE_NO_GETSID
|
||||||
|
HAVE_GETPGID=-DHAVE_NO_GETPGID
|
||||||
|
HAVE_GETTIME=-DHAVE_NO_GETTIME
|
||||||
|
HAVE_GETPRID=-DHAVE_NO_GETPRID
|
||||||
|
HAVE_URANDOM_H=NO
|
||||||
|
HAVE_GETRUSAGE=-DHAVE_NO_GETRUSAGE
|
||||||
|
HAVE_STRDUP=-UHAVE_NO_STRDUP
|
||||||
|
ALIGN32=-UMUST_ALIGN32
|
||||||
|
HAVE_MALLOC_H=YES
|
||||||
|
HAVE_STDLIB_H=YES
|
||||||
|
HAVE_STRING_H=YES
|
||||||
|
HAVE_TIMES_H=NO
|
||||||
|
HAVE_SYS_TIMES_H=NO
|
||||||
|
HAVE_TIME_H=YES
|
||||||
|
HAVE_SYS_TIME_H=NO
|
||||||
|
HAVE_UNISTD_H=NO
|
||||||
|
|
||||||
|
LIBDIR=/lib/calc
|
||||||
|
HELPDIR=/lib/calc/help
|
||||||
|
INCDIRCALC=/include/calc
|
||||||
|
CUSTOMLIBDIR=/lib/calc/custom
|
||||||
|
CUSTOMHELPDIR=/lib/calc/help/custhelp
|
||||||
|
SCRIPTDIR=/lib/calc/cscript
|
||||||
|
MANDIR=
|
||||||
|
CATDIR=
|
||||||
|
MANEXT=
|
||||||
|
CATEXT=
|
||||||
|
NROFF=
|
||||||
|
NROFF_ARG=
|
||||||
|
MANMAKE=
|
||||||
|
MANMODE=
|
||||||
|
CALCPATH=./cal
|
||||||
|
CALCRC='/lib/calc/startup:~/.calcrc:./.calcinit'
|
||||||
|
USE_READLINE=
|
||||||
|
READLINE_LIB=
|
||||||
|
READLINE_INCLUDE=
|
||||||
|
CALCPAGER=
|
||||||
|
|
||||||
|
ECHO=
|
@@ -90,8 +90,8 @@ CONST char *error_table[E__COUNT+2] = {
|
|||||||
"File not open for reading for fgetstr",
|
"File not open for reading for fgetstr",
|
||||||
"Non-file argument for fgetline",
|
"Non-file argument for fgetline",
|
||||||
"File not open for reading for fgetline",
|
"File not open for reading for fgetline",
|
||||||
"Non-file argument for fgetword",
|
"Non-file argument for fgetfield",
|
||||||
"File not open for reading for fgetword",
|
"File not open for reading for fgetfield",
|
||||||
"Non-file argument for rewind",
|
"Non-file argument for rewind",
|
||||||
"Non-integer argument for files",
|
"Non-integer argument for files",
|
||||||
"Non-string fmt argument for fprint",
|
"Non-string fmt argument for fprint",
|
||||||
|
@@ -87,8 +87,8 @@
|
|||||||
#define E_FGETSTR2 10074 /* File not open for reading for fgetstr */
|
#define E_FGETSTR2 10074 /* File not open for reading for fgetstr */
|
||||||
#define E_FGETLINE1 10075 /* Non-file argument for fgetline */
|
#define E_FGETLINE1 10075 /* Non-file argument for fgetline */
|
||||||
#define E_FGETLINE2 10076 /* File not open for reading for fgetline */
|
#define E_FGETLINE2 10076 /* File not open for reading for fgetline */
|
||||||
#define E_FGETWORD1 10077 /* Non-file argument for fgetword */
|
#define E_FGETFIELD1 10077 /* Non-file argument for fgetfield */
|
||||||
#define E_FGETWORD2 10078 /* File not open for reading for fgetword */
|
#define E_FGETFIELD2 10078 /* File not open for reading for fgetfield */
|
||||||
#define E_REWIND1 10079 /* Non-file argument for rewind */
|
#define E_REWIND1 10079 /* Non-file argument for rewind */
|
||||||
#define E_FILES 10080 /* Non-integer argument for files */
|
#define E_FILES 10080 /* Non-integer argument for files */
|
||||||
#define E_PRINTF1 10081 /* Non-string fmt argument for fprint */
|
#define E_PRINTF1 10081 /* Non-string fmt argument for fprint */
|
||||||
|
26
zmath.h
26
zmath.h
@@ -17,8 +17,8 @@
|
|||||||
* 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.
|
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||||
*
|
*
|
||||||
* @(#) $Revision: 29.5 $
|
* @(#) $Revision: 29.7 $
|
||||||
* @(#) $Id: zmath.h,v 29.5 2001/03/17 21:31:47 chongo Exp $
|
* @(#) $Id: zmath.h,v 29.7 2001/06/08 21:00:58 chongo Exp $
|
||||||
* @(#) $Source: /usr/local/src/cmd/calc/RCS/zmath.h,v $
|
* @(#) $Source: /usr/local/src/cmd/calc/RCS/zmath.h,v $
|
||||||
*
|
*
|
||||||
* Under source code control: 1993/07/30 19:42:48
|
* Under source code control: 1993/07/30 19:42:48
|
||||||
@@ -38,13 +38,21 @@
|
|||||||
#define __ZMATH_H__
|
#define __ZMATH_H__
|
||||||
|
|
||||||
|
|
||||||
#include "win32dll.h"
|
#if defined(CALC_SRC) /* if we are building from the calc source tree */
|
||||||
#include "alloc.h"
|
# include "win32dll.h"
|
||||||
#include "endian_calc.h"
|
# include "alloc.h"
|
||||||
#include "longbits.h"
|
# include "endian_calc.h"
|
||||||
#include "byteswap.h"
|
# include "longbits.h"
|
||||||
|
# include "byteswap.h"
|
||||||
#include "have_stdlib.h"
|
# include "have_stdlib.h"
|
||||||
|
#else
|
||||||
|
# include <calc/win32dll.h>
|
||||||
|
# include <calc/alloc.h>
|
||||||
|
# include <calc/endian_calc.h>
|
||||||
|
# include <calc/longbits.h>
|
||||||
|
# include <calc/byteswap.h>
|
||||||
|
# include <calc/have_stdlib.h>
|
||||||
|
#endif
|
||||||
#ifdef HAVE_STDLIB_H
|
#ifdef HAVE_STDLIB_H
|
||||||
# include <stdlib.h>
|
# include <stdlib.h>
|
||||||
#endif
|
#endif
|
||||||
|
67
zrand.h
67
zrand.h
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* zrand - additive 55 shuffle generator
|
* zrand - subtractive 100 shuffle generator
|
||||||
*
|
*
|
||||||
* Copyright (C) 1999 Landon Curt Noll
|
* Copyright (C) 1999 Landon Curt Noll
|
||||||
*
|
*
|
||||||
@@ -17,8 +17,8 @@
|
|||||||
* 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.
|
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||||
*
|
*
|
||||||
* @(#) $Revision: 29.2 $
|
* @(#) $Revision: 29.5 $
|
||||||
* @(#) $Id: zrand.h,v 29.2 2000/06/07 14:02:13 chongo Exp $
|
* @(#) $Id: zrand.h,v 29.5 2001/06/08 21:00:58 chongo Exp $
|
||||||
* @(#) $Source: /usr/local/src/cmd/calc/RCS/zrand.h,v $
|
* @(#) $Source: /usr/local/src/cmd/calc/RCS/zrand.h,v $
|
||||||
*
|
*
|
||||||
* Under source code control: 1995/01/07 09:45:26
|
* Under source code control: 1995/01/07 09:45:26
|
||||||
@@ -37,24 +37,29 @@
|
|||||||
#define __ZRAND_H__
|
#define __ZRAND_H__
|
||||||
|
|
||||||
|
|
||||||
#include "value.h"
|
#if defined(CALC_SRC) /* if we are building from the calc source tree */
|
||||||
#include "have_const.h"
|
# include "value.h"
|
||||||
|
# include "have_const.h"
|
||||||
|
#else
|
||||||
|
# include <calc/value.h>
|
||||||
|
# include <calc/have_const.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* a55 generator defines
|
* s100 generator defines
|
||||||
*
|
*
|
||||||
* NOTE: SBITS must be a power of two to make the (&= (SBITS-1))
|
* NOTE: SBITS must be a power of two to make the (&= (SBITS-1))
|
||||||
* in slotcp() to work.
|
* in slotcp() to work.
|
||||||
*/
|
*/
|
||||||
#define SBITS (64) /* size of additive or shuffle entry in bits */
|
#define SBITS (64) /* size of subtractive or shuffle entry in bits */
|
||||||
#define SBYTES (SBITS/8) /* size of additive or shuffle entry in bytes */
|
#define SBYTES (SBITS/8) /* size of subtractive or shuffle entry in bytes */
|
||||||
#define SHALFS (SBYTES/sizeof(HALF)) /* size in HALFs */
|
#define SHALFS (SBYTES/sizeof(HALF)) /* size in HALFs */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* seed defines
|
* seed defines
|
||||||
*/
|
*/
|
||||||
#define SEEDXORBITS 64 /* low bits of a55 seed devoted to xor */
|
#define SEEDXORBITS 64 /* low bits of s100 seed devoted to xor */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* shuffle table defines
|
* shuffle table defines
|
||||||
@@ -65,18 +70,18 @@
|
|||||||
#define SHUFMASK (SHUFLEN-1) /* mask for shuffle table entry selection */
|
#define SHUFMASK (SHUFLEN-1) /* mask for shuffle table entry selection */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* additive 55 constants
|
* subtractive 100 constants
|
||||||
*/
|
*/
|
||||||
#define A55 55 /* slots in an additive 55 table */
|
#define S100 100 /* slots in an subtractive 100 table */
|
||||||
#define INIT_J 23 /* initial first walking table index */
|
#define INIT_J 36 /* initial first walking table index */
|
||||||
#define INIT_K 54 /* initial second walking table index */
|
#define INIT_K 99 /* initial second walking table index */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* additive 55 table defines
|
* subtractive 100 table defines
|
||||||
*
|
*
|
||||||
* SLEN - length in FULLs of an additive 55 slot
|
* SLEN - length in FULLs of an subtractive 100 slot
|
||||||
*
|
*
|
||||||
* SVAL(a,b) - form a 64 bit hex slot entry in the additive 55 table
|
* SVAL(a,b) - form a 64 bit hex slot entry in the subtractive 100 table
|
||||||
* a: up to 8 hex digits without the leading 0x (upper half)
|
* a: up to 8 hex digits without the leading 0x (upper half)
|
||||||
* b: up to 8 hex digits without the leading 0x (lower half)
|
* b: up to 8 hex digits without the leading 0x (lower half)
|
||||||
*
|
*
|
||||||
@@ -90,12 +95,12 @@
|
|||||||
*
|
*
|
||||||
* NOTE: Due to a SunOS cc bug, don't put spaces in the SHVAL call!
|
* NOTE: Due to a SunOS cc bug, don't put spaces in the SHVAL call!
|
||||||
*
|
*
|
||||||
* SLOAD(s,i,z) - load table slot i from additive 55 state s with zvalue z
|
* SLOAD(s,i,z) - load table slot i from subtractive 100 state s with zvalue z
|
||||||
* s: type RAND
|
* s: type RAND
|
||||||
* i: type int, s.slot[i] slot index
|
* i: type int, s.slot[i] slot index
|
||||||
* z: type ZVALUE, what to load into s.slot[i]
|
* z: type ZVALUE, what to load into s.slot[i]
|
||||||
*
|
*
|
||||||
* SADD(s,k,j) - slot[k] += slot[j]
|
* SSUB(s,k,j) - slot[k] -= slot[j]
|
||||||
* s: type RAND
|
* s: type RAND
|
||||||
* k: type int, s.slot[k] slot index, what to gets changed
|
* k: type int, s.slot[k] slot index, what to gets changed
|
||||||
* j: type int, s.slot[j] slot index, what to add to s.slot[k]
|
* j: type int, s.slot[j] slot index, what to add to s.slot[k]
|
||||||
@@ -106,7 +111,7 @@
|
|||||||
* k: type int, s.slot[k] slot index, selects shuffle entry
|
* k: type int, s.slot[k] slot index, selects shuffle entry
|
||||||
* result type int, refers to s.shuf[SINDX(s,k)]
|
* result type int, refers to s.shuf[SINDX(s,k)]
|
||||||
*
|
*
|
||||||
* SBUFFER(s,t) - load a55 buffer with t
|
* SBUFFER(s,t) - load s100 buffer with t
|
||||||
* s: type RAND
|
* s: type RAND
|
||||||
* t: type int, s.shuf[t] entry index, replace buffer with it
|
* t: type int, s.shuf[t] entry index, replace buffer with it
|
||||||
*
|
*
|
||||||
@@ -130,7 +135,7 @@
|
|||||||
* i: type int, s.slot[i] slot index, what gets xored
|
* i: type int, s.slot[i] slot index, what gets xored
|
||||||
* v: type FULL*, 64 bit value to xor into s.slot[i]
|
* v: type FULL*, 64 bit value to xor into s.slot[i]
|
||||||
*
|
*
|
||||||
* SCNT - length of an additive 55 table in FULLs
|
* SCNT - length of an subtractive 100 table in FULLs
|
||||||
*/
|
*/
|
||||||
#if FULL_BITS == SBITS
|
#if FULL_BITS == SBITS
|
||||||
|
|
||||||
@@ -143,7 +148,7 @@
|
|||||||
# define SHVAL(a,b,c,d) (HALF)0x/**/c/**/d,(HALF)0x/**/a/**/b
|
# define SHVAL(a,b,c,d) (HALF)0x/**/c/**/d,(HALF)0x/**/a/**/b
|
||||||
# endif
|
# endif
|
||||||
#define SLOAD(s,i,z) ((s).slot[i] = ztofull(z))
|
#define SLOAD(s,i,z) ((s).slot[i] = ztofull(z))
|
||||||
#define SADD(s,k,j) ((s).slot[k] += (s).slot[j])
|
#define SSUB(s,k,j) ((s).slot[k] -= (s).slot[j])
|
||||||
#define SINDX(s,k) ((int)((s).slot[k] >> (FULL_BITS - SHUFPOW)))
|
#define SINDX(s,k) ((int)((s).slot[k] >> (FULL_BITS - SHUFPOW)))
|
||||||
#define SBUFFER(s,t) {(s).buffer[0] = ((s).shuf[t] & BASE1); \
|
#define SBUFFER(s,t) {(s).buffer[0] = ((s).shuf[t] & BASE1); \
|
||||||
(s).buffer[1] = ((s).shuf[t] >> BASEB); \
|
(s).buffer[1] = ((s).shuf[t] >> BASEB); \
|
||||||
@@ -176,9 +181,9 @@
|
|||||||
(((z).len == 3) ? (FULL)((z).v[2]) : \
|
(((z).len == 3) ? (FULL)((z).v[2]) : \
|
||||||
((FULL)((z).v[2]) + ((FULL)((z).v[3]) << BASEB)))); \
|
((FULL)((z).v[2]) + ((FULL)((z).v[3]) << BASEB)))); \
|
||||||
}
|
}
|
||||||
#define SADD(s,k,j) {FULL tmp = (s).slot[(k)<<1]; \
|
#define SSUB(s,k,j) {FULL tmp = (s).slot[(k)<<1]; \
|
||||||
(s).slot[(k)<<1] += (s).slot[(j)<<1]; \
|
(s).slot[(k)<<1] -= (s).slot[(j)<<1]; \
|
||||||
(s).slot[1+((k)<<1)] += ((tmp <= (s).slot[(k)<<1]) ? \
|
(s).slot[1+((k)<<1)] -= ((tmp <= (s).slot[(k)<<1]) ? \
|
||||||
(s).slot[1+((j)<<1)] : \
|
(s).slot[1+((j)<<1)] : \
|
||||||
(s).slot[1+((j)<<1)] + 1); \
|
(s).slot[1+((j)<<1)] + 1); \
|
||||||
}
|
}
|
||||||
@@ -213,11 +218,14 @@
|
|||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define SCNT (SLEN*A55) /* length of additive 55 table in FULLs */
|
#define SCNT (SLEN*S100) /* length of subtractive 100 table in FULLs */
|
||||||
|
|
||||||
|
#define RAND_CONSEQ_USE (100) /* use this many before skipping */
|
||||||
|
#define RAND_SKIP (1009-RAND_CONSEQ_USE) /* skip this many after use */
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* a55 generator state
|
* s100 generator state
|
||||||
*/
|
*/
|
||||||
struct rand {
|
struct rand {
|
||||||
int seeded; /* 1 => state has been seeded */
|
int seeded; /* 1 => state has been seeded */
|
||||||
@@ -225,15 +233,16 @@ struct rand {
|
|||||||
FULL buffer[SLEN]; /* unused random bits from last call */
|
FULL buffer[SLEN]; /* unused random bits from last call */
|
||||||
int j; /* first walking table index */
|
int j; /* first walking table index */
|
||||||
int k; /* second walking table index */
|
int k; /* second walking table index */
|
||||||
FULL slot[SCNT]; /* additive 55 table */
|
int need_to_skip; /* 1 => skip the next 909 values */
|
||||||
|
FULL slot[SCNT]; /* subtractive 100 table */
|
||||||
FULL shuf[SHUFLEN]; /* shuffle table entries */
|
FULL shuf[SHUFLEN]; /* shuffle table entries */
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* a55 generator function declarations
|
* s100 generator function declarations
|
||||||
*/
|
*/
|
||||||
extern RAND *zsrand(CONST ZVALUE *seed, CONST MATRIX *pmat55);
|
extern RAND *zsrand(CONST ZVALUE *seed, CONST MATRIX *pmat100);
|
||||||
extern RAND *zsetrand(CONST RAND *state);
|
extern RAND *zsetrand(CONST RAND *state);
|
||||||
extern void zrandskip(long count);
|
extern void zrandskip(long count);
|
||||||
extern void zrand(long count, ZVALUE *res);
|
extern void zrand(long count, ZVALUE *res);
|
||||||
|
22
zrandom.c
22
zrandom.c
@@ -17,8 +17,8 @@
|
|||||||
* 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.
|
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||||
*
|
*
|
||||||
* @(#) $Revision: 29.2 $
|
* @(#) $Revision: 29.3 $
|
||||||
* @(#) $Id: zrandom.c,v 29.2 2000/06/07 14:02:13 chongo Exp $
|
* @(#) $Id: zrandom.c,v 29.3 2001/05/08 06:44:29 chongo Exp $
|
||||||
* @(#) $Source: /usr/local/src/cmd/calc/RCS/zrandom.c,v $
|
* @(#) $Source: /usr/local/src/cmd/calc/RCS/zrandom.c,v $
|
||||||
*
|
*
|
||||||
* Under source code control: 1997/02/15 04:01:56
|
* Under source code control: 1997/02/15 04:01:56
|
||||||
@@ -356,33 +356,33 @@
|
|||||||
*
|
*
|
||||||
* The pre-defined Blum moduli was computed by searching for Blum
|
* The pre-defined Blum moduli was computed by searching for Blum
|
||||||
* primes (primes == 3 mod 4) starting from new values that
|
* primes (primes == 3 mod 4) starting from new values that
|
||||||
* were selected by lavarand, a hardware random number generator.
|
* were selected by LavaRnd, a hardware random number generator.
|
||||||
* See the URL:
|
* See the URL:
|
||||||
*
|
*
|
||||||
* http://lavarand.sgi.com/index.html
|
* http://www.LavaRnd.org/
|
||||||
*
|
*
|
||||||
* for an explination of how the lavarand random number generator works.
|
* for an explination of how the LavaRnd random number generator works.
|
||||||
*
|
*
|
||||||
* For a given newn, we select a given bit length. For 0 < newn <= 20,
|
* For a given newn, we select a given bit length. For 0 < newn <= 20,
|
||||||
* the bit length selected was by:
|
* the bit length selected was by:
|
||||||
*
|
*
|
||||||
* bitlen = 2^(int((newn-1)/4)+7) + small_random_value;
|
* bitlen = 2^(int((newn-1)/4)+7) + small_random_value;
|
||||||
*
|
*
|
||||||
* where small_random_value is also generated by lavarand. For
|
* where small_random_value is also generated by LavaRnd. For
|
||||||
* 1 <= newn <= 16, small_random_value is a random value in [0,40).
|
* 1 <= newn <= 16, small_random_value is a random value in [0,40).
|
||||||
* For 17 < newn <= 20, small_random_value is a random value in [0,120).
|
* For 17 < newn <= 20, small_random_value is a random value in [0,120).
|
||||||
* Given two random integers generated by lavarand, we used the following
|
* Given two random integers generated by LavaRnd, we used the following
|
||||||
* to compute Blum primes:
|
* to compute Blum primes:
|
||||||
*
|
*
|
||||||
* (* find the first Blum prime *)
|
* (* find the first Blum prime *)
|
||||||
* fp = int((ip-1)/2); (* ip was generated by lavarand *)
|
* fp = int((ip-1)/2); (* ip was generated by LavaRnd *)
|
||||||
* do {
|
* do {
|
||||||
* fp = nextcand(fp+2, 25, 0, 3, 4);
|
* fp = nextcand(fp+2, 25, 0, 3, 4);
|
||||||
* p = 2*fp+1;
|
* p = 2*fp+1;
|
||||||
* } while (ptest(p, 25) == 0);
|
* } while (ptest(p, 25) == 0);
|
||||||
*
|
*
|
||||||
* (* find the 2nd Blum prime *)
|
* (* find the 2nd Blum prime *)
|
||||||
* fq = int((iq-1)/2); (* iq was generated by lavarand *)
|
* fq = int((iq-1)/2); (* iq was generated by LavaRnd *)
|
||||||
* do {
|
* do {
|
||||||
* fq = nextcand(fq+2, 25, 0, 3, 4);
|
* fq = nextcand(fq+2, 25, 0, 3, 4);
|
||||||
* q = 2*fq+1;
|
* q = 2*fq+1;
|
||||||
@@ -391,8 +391,8 @@
|
|||||||
* (* compute the Blum modulus *)
|
* (* compute the Blum modulus *)
|
||||||
* n[newn] = p * q;
|
* n[newn] = p * q;
|
||||||
*
|
*
|
||||||
* The pre-defined quadratic residues was also generated by lavarand.
|
* The pre-defined quadratic residues was also generated by LavaRnd.
|
||||||
* The value produced by lavarand was squared mod the Blum moduli
|
* The value produced by LavaRnd was squared mod the Blum moduli
|
||||||
* that was previously computed.
|
* that was previously computed.
|
||||||
*
|
*
|
||||||
* The purpose of these pre-defined Blum moduli is to provide users with
|
* The purpose of these pre-defined Blum moduli is to provide users with
|
||||||
|
13
zrandom.h
13
zrandom.h
@@ -17,8 +17,8 @@
|
|||||||
* 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.
|
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||||
*
|
*
|
||||||
* @(#) $Revision: 29.2 $
|
* @(#) $Revision: 29.4 $
|
||||||
* @(#) $Id: zrandom.h,v 29.2 2000/06/07 14:02:13 chongo Exp $
|
* @(#) $Id: zrandom.h,v 29.4 2001/06/08 21:00:58 chongo Exp $
|
||||||
* @(#) $Source: /usr/local/src/cmd/calc/RCS/zrandom.h,v $
|
* @(#) $Source: /usr/local/src/cmd/calc/RCS/zrandom.h,v $
|
||||||
*
|
*
|
||||||
* Under source code control: 1997/02/15 04:01:56
|
* Under source code control: 1997/02/15 04:01:56
|
||||||
@@ -33,8 +33,13 @@
|
|||||||
#define __ZRANDOM_H__
|
#define __ZRANDOM_H__
|
||||||
|
|
||||||
|
|
||||||
#include "value.h"
|
#if defined(CALC_SRC) /* if we are building from the calc source tree */
|
||||||
#include "have_const.h"
|
# include "value.h"
|
||||||
|
# include "have_const.h"
|
||||||
|
#else
|
||||||
|
# include <calc/value.h>
|
||||||
|
# include <calc/have_const.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
Reference in New Issue
Block a user