mirror of
https://github.com/lcn2/calc.git
synced 2025-08-19 01:13:27 +03:00
Compare commits
8 Commits
2.11.5t1.0
...
2.11.5t4.3
Author | SHA1 | Date | |
---|---|---|---|
|
10c0bd2d95 | ||
|
ad44f1e3ab | ||
|
fd436d7c15 | ||
|
d2cb9c81d5 | ||
|
a0aba073a6 | ||
|
59837e385c | ||
|
bea726fc16 | ||
|
fc0a3dd183 |
51
BUGS
51
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,
|
||||
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
|
||||
|
||||
[[ NOTE: Replace 'at' with @, 'dot' is with . and remove the spaces ]]
|
||||
[[ 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:
|
||||
|
||||
* 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.
|
||||
|
||||
=-=
|
||||
|
||||
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.
|
||||
Fell free to use the above address to send in big fixes (in the form
|
||||
of a context diff patch).
|
||||
|
||||
=-=
|
||||
|
||||
@@ -75,8 +72,6 @@ Known bugs:
|
||||
us know! See the above for details on how to report and were to
|
||||
EMail your bug reports and hopefully patches to fix them.
|
||||
|
||||
=-=
|
||||
|
||||
Problems with known work-a-rounds:
|
||||
|
||||
* There is a bug in gcc-2.95 that causes calc, when compiled with -O2,
|
||||
@@ -208,6 +203,28 @@ Problems with known work-a-rounds:
|
||||
or performance. The work-a-round is to ignore these warnings
|
||||
under BSDI.
|
||||
|
||||
* The chi.cal resource file does not work well with odd degrees
|
||||
of freedom. Can someone improve this algorithm?
|
||||
|
||||
* The intfile.cal resource file reads and writes big or little Endian
|
||||
integers to/from files the hard way. It does NOT use blkcpy. The
|
||||
following code:
|
||||
|
||||
i = (ord("\n") << 16) | (ord("i") << 8) | ord("H")
|
||||
b = blk()
|
||||
copy(i, b)
|
||||
fd = fopen("file", "w")
|
||||
copy(b, fd);
|
||||
fclose(fd)
|
||||
|
||||
will write an extra NUL octet to the file. Where as:
|
||||
|
||||
read intfile
|
||||
i = (ord("\n") << 16) | (ord("i") << 8) | ord("H")
|
||||
be2file(i, "file2")
|
||||
|
||||
will not.
|
||||
|
||||
## Copyright (C) 1999 Landon Curt Noll
|
||||
##
|
||||
## Calc is open software; you can redistribute it and/or modify it under
|
||||
@@ -224,8 +241,8 @@ Problems with known work-a-rounds:
|
||||
## received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
## 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
##
|
||||
## @(#) $Revision: 29.9 $
|
||||
## @(#) $Id: BUGS,v 29.9 2001/03/18 03:34:41 chongo Exp $
|
||||
## @(#) $Revision: 29.12 $
|
||||
## @(#) $Id: BUGS,v 29.12 2001/06/01 11:32:01 chongo Exp $
|
||||
## @(#) $Source: /usr/local/src/cmd/calc/RCS/BUGS,v $
|
||||
##
|
||||
## Under source code control: 1994/03/18 14:06:13
|
||||
|
238
CHANGES
238
CHANGES
@@ -1,4 +1,160 @@
|
||||
The following are the changes from calc version 2.11.5t0 to date:
|
||||
The following are the changes from calc version 2.11.5t4.1 to date:
|
||||
|
||||
Updated dependency rules in Makefiles.
|
||||
|
||||
Calc include files use #include "foo.h" to include other calc
|
||||
header files if -DSRC. Otherwise they use <calc/foo.h>.
|
||||
The -DSRC 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
|
||||
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.
|
||||
|
||||
|
||||
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
|
||||
to Martin Buck <m at rtin-buck dot de> for help with this issue.
|
||||
@@ -48,8 +204,80 @@ The following are the changes from calc version 2.11.5t0 to date:
|
||||
|
||||
Fixed a bug in the way file offsets, device and inode values are copied.
|
||||
|
||||
Added chi.cal for a initial stab as a Chi^2 function. The chi_prob()
|
||||
function does not work well with odd degrees of freedom, however.
|
||||
|
||||
The following are the changes from calc version 2.11.4t1 to date:
|
||||
Added big 3 to config("resource_debug"). Calc resource file scripts
|
||||
check for config("resource_debug") & 8 prior to printing internal debug
|
||||
statements. Thus by default they do not print them.
|
||||
|
||||
Added intfile.cal as a calc resource file script:
|
||||
|
||||
file2be(filename)
|
||||
|
||||
Read filename and return an integer that is built from the
|
||||
octets in that file in Big Endian order. The first octets
|
||||
of the file become the most significant bits of the integer.
|
||||
|
||||
file2le(filename)
|
||||
|
||||
Read filename and return an integer that is built from the
|
||||
octets in that file in Little Endian order. The first octets
|
||||
of the file become the most significant bits of the integer.
|
||||
|
||||
be2file(v, filename)
|
||||
|
||||
Write the absolute value of v into filename in Big Endian order.
|
||||
The v argument must be on integer. The most significant bits
|
||||
of the integer become the first octets of the file.
|
||||
|
||||
le2file(v, filename)
|
||||
|
||||
Write the absolute value of v into filename in Little Endian order.
|
||||
The v argument must be on integer. The least significant bits
|
||||
of the integer become the last octets of the file.
|
||||
|
||||
Added the following help aliases:
|
||||
|
||||
copy blkcpy
|
||||
read command
|
||||
write command
|
||||
quit command
|
||||
exit command
|
||||
abort command
|
||||
cd command
|
||||
show command
|
||||
|
||||
Added the cscript:
|
||||
|
||||
fproduct filename term ...
|
||||
|
||||
to write the big Endian product of terms to a filename. Use - for stdout.
|
||||
|
||||
Fixed calc path in help/script.
|
||||
|
||||
Added read-only parameter, config("windows") to indicate if the system
|
||||
is MS windowz WIN32 like system.
|
||||
|
||||
Configuration values that used to return "true" or "false" now return
|
||||
1 (a true value) or 0 (a false value). Thus one can do:
|
||||
|
||||
if (config("tab")) { ... } else { ... }
|
||||
|
||||
The configuration values that now return 1 or 0 are:
|
||||
|
||||
config("tilde")
|
||||
config("tab")
|
||||
config("leadzero")
|
||||
config("blkverbose")
|
||||
config("verbose_quit")
|
||||
config("windows")
|
||||
|
||||
Now shipping a win32 sub-directory that contains hsrc .h files
|
||||
that have been attempted to be built for windoz.
|
||||
|
||||
|
||||
The following are the changes from calc version 2.11.4t1 to 2.11.4t2:
|
||||
|
||||
Added missing test8600.cal test file.
|
||||
|
||||
@@ -5076,7 +5304,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.
|
||||
|
||||
## 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
|
||||
## the terms of the version 2.1 of the GNU Lesser General Public License
|
||||
@@ -5092,8 +5320,8 @@ Following is a list of visible changes to calc from version 1.24.7 to 1.26.1:
|
||||
## received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
## 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
##
|
||||
## @(#) $Revision: 29.22 $
|
||||
## @(#) $Id: CHANGES,v 29.22 2001/03/18 03:27:28 chongo Exp $
|
||||
## @(#) $Revision: 29.35 $
|
||||
## @(#) $Id: CHANGES,v 29.35 2001/06/01 21:44:44 chongo Exp $
|
||||
## @(#) $Source: /usr/local/src/cmd/calc/RCS/CHANGES,v $
|
||||
##
|
||||
## 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
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
# @(#) $Revision: 29.5 $
|
||||
# @(#) $Id: COPYING,v 29.5 2000/12/18 10:22:55 chongo Exp $
|
||||
# @(#) $Revision: 29.6 $
|
||||
# @(#) $Id: COPYING,v 29.6 2001/06/01 11:26:53 chongo Exp $
|
||||
# @(#) $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:
|
||||
|
||||
Web: http://www.isthe.com/chongo/tech/comp/calc/index.html
|
||||
EMail: calc-contrib at asthe dot com
|
||||
Web: http://www.isthe.com/chongo/tech/comp/calc/email.html
|
||||
|
||||
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
|
||||
|
||||
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:
|
||||
|
||||
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
|
||||
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
|
||||
|
||||
[[ 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 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
|
||||
|
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
|
||||
|
||||
[[ 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 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:
|
||||
|
||||
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
|
||||
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
|
||||
|
||||
@@ -98,6 +108,12 @@ Calc bug reports, however should be sent to:
|
||||
|
||||
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:
|
||||
|
||||
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.
|
||||
## 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
##
|
||||
## @(#) $Revision: 29.2 $
|
||||
## @(#) $Id: README,v 29.2 2000/06/07 14:02:13 chongo Exp $
|
||||
## @(#) $Revision: 29.3 $
|
||||
## @(#) $Id: README,v 29.3 2001/06/01 11:26:53 chongo Exp $
|
||||
## @(#) $Source: /usr/local/src/cmd/calc/RCS/README,v $
|
||||
##
|
||||
## Under source code control: 1995/10/25 05:27:59
|
||||
|
@@ -55,8 +55,11 @@ by the make file:
|
||||
have_gettime.h have_getprid.h have_urandom.h have_rusage.h
|
||||
have_strdup.h
|
||||
|
||||
NOTE: In a future release, a tarball of these files will be shipped with
|
||||
calc so that you do not have to do much other than inspect them.
|
||||
You will find generated versions of these files located in the win32
|
||||
sub-directory. These files may be appropriate for your Cygwin building
|
||||
needs. Just copy the win32/*.[ch] files up into the top level calc
|
||||
source directory, edited (if needed) and build using the Cygwin GCC
|
||||
compiler.
|
||||
|
||||
=-=
|
||||
|
||||
@@ -102,8 +105,8 @@ was changed to:
|
||||
## 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: README.WINDOWS,v 29.3 2001/03/17 21:31:47 chongo Exp $
|
||||
## @(#) $Revision: 29.6 $
|
||||
## @(#) $Id: README.WINDOWS,v 29.6 2001/04/08 22:13:38 chongo Exp $
|
||||
## @(#) $Source: /usr/local/src/cmd/calc/RCS/README.WINDOWS,v $
|
||||
##
|
||||
## 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.
|
||||
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
*
|
||||
* @(#) $Revision: 29.2 $
|
||||
* @(#) $Id: alloc.h,v 29.2 2000/06/07 14:02:13 chongo Exp $
|
||||
* @(#) $Revision: 29.3 $
|
||||
* @(#) $Id: alloc.h,v 29.3 2001/05/29 00:16:53 chongo Exp $
|
||||
* @(#) $Source: /usr/local/src/cmd/calc/RCS/alloc.h,v $
|
||||
*
|
||||
* Under source code control: 1990/02/15 01:48:29
|
||||
@@ -32,10 +32,17 @@
|
||||
#define __ALLOC_H__
|
||||
|
||||
|
||||
#include "have_malloc.h"
|
||||
#include "have_newstr.h"
|
||||
#include "have_string.h"
|
||||
#include "have_memmv.h"
|
||||
#if defined(SRC) /* if we are building from the calc source tree */
|
||||
# include "have_malloc.h"
|
||||
# include "have_newstr.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
|
||||
# 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.
|
||||
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
*
|
||||
* @(#) $Revision: 29.2 $
|
||||
* @(#) $Id: blkcpy.c,v 29.2 2000/06/07 14:02:13 chongo Exp $
|
||||
* @(#) $Revision: 29.3 $
|
||||
* @(#) $Id: blkcpy.c,v 29.3 2001/04/10 22:06:46 chongo Exp $
|
||||
* @(#) $Source: /usr/local/src/cmd/calc/RCS/blkcpy.c,v $
|
||||
*
|
||||
* 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)
|
||||
return 0;
|
||||
|
||||
fiop = findid(id, 'w');
|
||||
fiop = findid(id, TRUE);
|
||||
if (fiop == NULL)
|
||||
return E_COPYF1;
|
||||
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 */
|
||||
return E_COPYF1;
|
||||
fiop = findid(id, 'r');
|
||||
fiop = findid(id, FALSE);
|
||||
if (fiop == NULL)
|
||||
return E_COPYF1;
|
||||
|
||||
@@ -690,7 +690,7 @@ copystr2file(STRING *str, long ssi, long num, FILEID id, long dsi)
|
||||
return 0;
|
||||
if ((USB32) ssi + num > len)
|
||||
return E_COPY5; /* Insufficient memory in str */
|
||||
fiop = findid(id, 'w');
|
||||
fiop = findid(id, TRUE);
|
||||
if (fiop == NULL)
|
||||
return E_COPYF1;
|
||||
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.
|
||||
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
*
|
||||
* @(#) $Revision: 29.2 $
|
||||
* @(#) $Id: byteswap.h,v 29.2 2000/06/07 14:02:13 chongo Exp $
|
||||
* @(#) $Revision: 29.3 $
|
||||
* @(#) $Id: byteswap.h,v 29.3 2001/05/29 00:16:53 chongo Exp $
|
||||
* @(#) $Source: /usr/local/src/cmd/calc/RCS/byteswap.h,v $
|
||||
*
|
||||
* Under source code control: 1995/10/11 04:44:01
|
||||
@@ -33,7 +33,11 @@
|
||||
#define __BYTESWAP_H__
|
||||
|
||||
|
||||
#include "longbits.h"
|
||||
#if defined(SRC) /* if we are building from the calc source tree */
|
||||
# include "longbits.h"
|
||||
#else
|
||||
# include <calc/longbits.h>
|
||||
#endif
|
||||
|
||||
|
||||
/*
|
||||
|
72
cal/Makefile
72
cal/Makefile
@@ -18,8 +18,8 @@
|
||||
# received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
# 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
#
|
||||
# @(#) $Revision: 29.3 $
|
||||
# @(#) $Id: Makefile,v 29.3 2000/12/15 14:42:52 chongo Exp $
|
||||
# @(#) $Revision: 29.9 $
|
||||
# @(#) $Id: Makefile,v 29.9 2001/05/28 21:56:08 chongo Exp $
|
||||
# @(#) $Source: /usr/local/src/cmd/calc/cal/RCS/Makefile,v $
|
||||
#
|
||||
# Under source code control: 1991/07/21 05:00:54
|
||||
@@ -40,11 +40,12 @@ MAKE_FILE = Makefile
|
||||
# a default here just in case you want to build from this directory.
|
||||
#
|
||||
# where to install things
|
||||
TOPDIR= /usr/local/lib
|
||||
#TOPDIR= /usr/lib
|
||||
#TOPDIR= /usr/libdata
|
||||
#SHAREDIR= /usr/local/lib
|
||||
#SHAREDIR= /usr/lib
|
||||
SHAREDIR= /usr/share
|
||||
#SHAREDIR= /usr/libdata
|
||||
|
||||
LIBDIR= ${TOPDIR}/calc
|
||||
CSHAREDIR= ${SHAREDIR}/calc
|
||||
|
||||
# Makefile debug
|
||||
#
|
||||
@@ -57,6 +58,7 @@ Q=@
|
||||
# standard tools
|
||||
#
|
||||
CHMOD= chmod
|
||||
CMP= cmp
|
||||
|
||||
# The calc files to install
|
||||
#
|
||||
@@ -70,7 +72,7 @@ CALC_FILES= README bigprime.cal deg.cal ellip.cal lucas.cal lucas_chk.cal \
|
||||
test3500.cal seedrandom.cal test4000.cal test4100.cal test4600.cal \
|
||||
beer.cal hello.cal test5100.cal test5200.cal randombitrun.cal \
|
||||
randomrun.cal xx_print.cal natnumset.cal qtime.cal test8400.cal \
|
||||
test8500.cal test8600.cal
|
||||
test8500.cal test8600.cal chi.cal intfile.cal
|
||||
|
||||
# These files are found (but not built) in the distribution
|
||||
#
|
||||
@@ -116,34 +118,56 @@ calcliblist:
|
||||
fi; \
|
||||
done
|
||||
|
||||
##
|
||||
#
|
||||
# rpm rules
|
||||
#
|
||||
##
|
||||
|
||||
echo_CALC_FILES: ${MAKE_FILE}
|
||||
@echo ${CALC_FILES}
|
||||
|
||||
echo_install.list: ${MAKE_FILE}
|
||||
@for i in ${CALC_FILES}; do \
|
||||
echo ${CSHAREDIR}/$$i; \
|
||||
done
|
||||
|
||||
##
|
||||
#
|
||||
# Utility rules
|
||||
#
|
||||
##
|
||||
|
||||
clean:
|
||||
|
||||
clobber:
|
||||
rm -f .all
|
||||
|
||||
install: all
|
||||
-${Q}if [ ! -d ${TOPDIR} ]; then \
|
||||
echo mkdir ${TOPDIR}; \
|
||||
mkdir ${TOPDIR}; \
|
||||
-${Q}if [ ! -d ${SHAREDIR} ]; then \
|
||||
echo mkdir ${SHAREDIR}; \
|
||||
mkdir ${SHAREDIR}; \
|
||||
echo ${CHMOD} 0755 ${SHAREDIR}; \
|
||||
${CHMOD} 0755 ${SHAREDIR}; \
|
||||
else \
|
||||
true; \
|
||||
fi
|
||||
-${Q}if [ ! -d ${LIBDIR} ]; then \
|
||||
echo mkdir ${LIBDIR}; \
|
||||
mkdir ${LIBDIR}; \
|
||||
-${Q}if [ ! -d ${CSHAREDIR} ]; then \
|
||||
echo mkdir ${CSHAREDIR}; \
|
||||
mkdir ${CSHAREDIR}; \
|
||||
echo ${CHMOD} 0755 ${CSHAREDIR}; \
|
||||
${CHMOD} 0755 ${CSHAREDIR}; \
|
||||
else \
|
||||
true; \
|
||||
fi
|
||||
${Q}for i in ${CALC_FILES}; do \
|
||||
echo rm -f ${LIBDIR}/$$i; \
|
||||
rm -f ${LIBDIR}/$$i; \
|
||||
echo cp $$i ${LIBDIR}; \
|
||||
cp $$i ${LIBDIR}; \
|
||||
echo ${CHMOD} 0444 ${LIBDIR}/$$i; \
|
||||
${CHMOD} 0444 ${LIBDIR}/$$i; \
|
||||
if ${CMP} -s $$i ${CSHAREDIR}/$$i; then \
|
||||
true; \
|
||||
else \
|
||||
rm -f ${CSHAREDIR}/$$i.new; \
|
||||
cp -f $$i ${CSHAREDIR}/$$i.new; \
|
||||
${CHMOD} 0444 ${CSHAREDIR}/$$i.new; \
|
||||
mv -f ${CSHAREDIR}/$$i.new ${CSHAREDIR}/$$i; \
|
||||
echo "installed ${CSHAREDIR}/$$i"; \
|
||||
fi; \
|
||||
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
|
||||
|
65
cal/README
65
cal/README
@@ -64,7 +64,7 @@ Zero value of config("resource_debug") means that no such information
|
||||
is displayed. For other values, the non-zero bits which currently
|
||||
have meanings are as follows:
|
||||
|
||||
n Meaning of bit n of config("resource_debug")
|
||||
n Meaning of bit n of config("resource_debug")
|
||||
|
||||
0 When a function is defined, redefined or undefined at
|
||||
interactive level, a message saying what has been done
|
||||
@@ -74,6 +74,12 @@ have meanings are as follows:
|
||||
the reading of a file, a message saying what has been done
|
||||
is displayed.
|
||||
|
||||
2 Show func will display more information about a functions
|
||||
arguments as well as more argument sdummary information.
|
||||
|
||||
3 During execution, allow calc standard resource files
|
||||
to output additional debugging information.
|
||||
|
||||
The value for config("resource_debug") in both oldstd and newstd is 3,
|
||||
but if calc is invoked with the -d flag, its initial value is zero.
|
||||
Thus, if calc is started without the -d flag, until config("resource_debug")
|
||||
@@ -97,6 +103,14 @@ either of the bottom 2 bits set:
|
||||
print "funcB(size, mass, ...) defined";
|
||||
}
|
||||
|
||||
If your the resource file needs to output special debugging informatin,
|
||||
we recommend that you check for bit 3 of the config("resource_debug")
|
||||
before printing the debug statement:
|
||||
|
||||
if (config("resource_debug") & 8) {
|
||||
print "DEBUG: This a sample debug statement";
|
||||
}
|
||||
|
||||
=-=
|
||||
|
||||
The following is a brief description of some of the calc resource files
|
||||
@@ -128,6 +142,24 @@ bigprime.cal
|
||||
A prime test, base a, on p*2^x+1 for even x>m.
|
||||
|
||||
|
||||
chi.cal
|
||||
|
||||
Z(x[, eps])
|
||||
P(x[, eps])
|
||||
chi_prob(chi_sq, v[, eps])
|
||||
|
||||
Computes the Probability, given the Null Hypothesis, that a given
|
||||
Chi squared values >= chi_sq with v degrees of freedom.
|
||||
|
||||
The chi_prob() function does not work well with odd degrees of freedom.
|
||||
It is reasonable with even degrees of freedom, although one must give
|
||||
a sifficently small error term as the degress gets large (>100).
|
||||
|
||||
The Z(x) and P(x) are internal statistical funcions.
|
||||
|
||||
eps is an optional epsilon() like error term.
|
||||
|
||||
|
||||
chrem.cal
|
||||
|
||||
chrem(r1,m1 [,r2,m2, ...])
|
||||
@@ -163,6 +195,33 @@ hello.cal
|
||||
http://www.latech.edu/~acm/helloworld/calc.html
|
||||
|
||||
|
||||
intfile.cal
|
||||
|
||||
file2be(filename)
|
||||
|
||||
Read filename and return an integer that is built from the
|
||||
octets in that file in Big Endian order. The first octets
|
||||
of the file become the most significant bits of the integer.
|
||||
|
||||
file2le(filename)
|
||||
|
||||
Read filename and return an integer that is built from the
|
||||
octets in that file in Little Endian order. The first octets
|
||||
of the file become the most significant bits of the integer.
|
||||
|
||||
be2file(v, filename)
|
||||
|
||||
Write the absolute value of v into filename in Big Endian order.
|
||||
The v argument must be on integer. The most significant bits
|
||||
of the integer become the first octets of the file.
|
||||
|
||||
le2file(v, filename)
|
||||
|
||||
Write the absolute value of v into filename in Little Endian order.
|
||||
The v argument must be on integer. The least significant bits
|
||||
of the integer become the last octets of the file.
|
||||
|
||||
|
||||
lucas.cal
|
||||
|
||||
lucas(h, n)
|
||||
@@ -756,8 +815,8 @@ xx_print.cal
|
||||
## received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
## 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
##
|
||||
## @(#) $Revision: 29.4 $
|
||||
## @(#) $Id: README,v 29.4 2000/12/17 12:26:04 chongo Exp $
|
||||
## @(#) $Revision: 29.8 $
|
||||
## @(#) $Id: README,v 29.8 2001/03/31 16:26:23 chongo Exp $
|
||||
## @(#) $Source: /usr/local/src/cmd/calc/cal/RCS/README,v $
|
||||
##
|
||||
## Under source code control: 1990/02/15 01:50:32
|
||||
|
251
cal/chi.cal
Normal file
251
cal/chi.cal
Normal file
@@ -0,0 +1,251 @@
|
||||
/*
|
||||
* chi - chi^2 probabilities with degrees of freedom for null hypothesis
|
||||
*
|
||||
* 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.2 $
|
||||
* @(#) $Id: chi.cal,v 29.2 2001/04/08 10:21:23 chongo Exp $
|
||||
* @(#) $Source: /usr/local/src/cmd/calc/cal/RCS/chi.cal,v $
|
||||
*
|
||||
* Under source code control: 2001/03/27 14:10: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/
|
||||
*/
|
||||
|
||||
|
||||
/*
|
||||
* Z(x)
|
||||
*
|
||||
* From Handbook of Mathematical Functions
|
||||
* 10th printing, Dec 1972 with corrections
|
||||
* National Bureau of Standards
|
||||
*
|
||||
* Section 26.2.1, p931.
|
||||
*/
|
||||
define Z(x, eps_term)
|
||||
{
|
||||
local eps; /* error term */
|
||||
|
||||
/* obtain the error term */
|
||||
if (isnull(eps_term)) {
|
||||
eps = epsilon();
|
||||
} else {
|
||||
eps = eps_term;
|
||||
}
|
||||
|
||||
/* compute Z(x) value */
|
||||
return exp(-x*x/2, eps) / sqrt(2*pi(eps), eps);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* P(x[, eps]) asymtotic P(x) expansion for x>0 to an given epsilon error term
|
||||
*
|
||||
* NOTE: If eps is omitted, the stored epsilon value is used.
|
||||
*
|
||||
* From Handbook of Mathematical Functions
|
||||
* 10th printing, Dec 1972 with corrections
|
||||
* National Bureau of Standards
|
||||
*
|
||||
* 26.2.11, p932:
|
||||
*
|
||||
* P(x) = 1/2 + Z(x) * sum(n=0; n < infinity){x^(2*n+1)/(1*3*5*...(2*n+1)};
|
||||
*
|
||||
* We continue the fraction until it is less than epsilon error term.
|
||||
*
|
||||
* Also note 26.2.5:
|
||||
*
|
||||
* P(x) + Q(x) = 1
|
||||
*/
|
||||
define P(x, eps_term)
|
||||
{
|
||||
local eps; /* error term */
|
||||
local s; /* sum */
|
||||
local x2; /* x^2 */
|
||||
local x_term; /* x^(2*r+1) */
|
||||
local odd_prod; /* 1*3*5* ... */
|
||||
local odd_term; /* next odd value to multiply into odd_prod */
|
||||
local term; /* the recent term added to the sum */
|
||||
|
||||
/* obtain the error term */
|
||||
if (isnull(eps_term)) {
|
||||
eps = epsilon();
|
||||
} else {
|
||||
eps = eps_term;
|
||||
}
|
||||
|
||||
/* firewall */
|
||||
if (x <= 0) {
|
||||
if (x == 0) {
|
||||
return 0; /* hack */
|
||||
} else {
|
||||
quit "Q(x[,eps]) 1st argument must be >= 0";
|
||||
}
|
||||
}
|
||||
if (eps <= 0) {
|
||||
quit "Q(x[,eps]) 2nd argument must be > 0";
|
||||
}
|
||||
|
||||
/*
|
||||
* aproximate sum(n=0; n < infinity){x^(2*n+1)/(1*3*5*...(2*n+1)}
|
||||
*/
|
||||
x2 = x*x;
|
||||
x_term = x;
|
||||
s = x_term; /* 1st term */
|
||||
odd_term = 1;
|
||||
odd_prod = 1;
|
||||
do {
|
||||
|
||||
/* compute the term */
|
||||
odd_term += 2;
|
||||
odd_prod *= odd_term;
|
||||
x_term *= x2;
|
||||
term = x_term / odd_prod;
|
||||
s += term;
|
||||
|
||||
} while (term >= eps);
|
||||
|
||||
/* apply term and factor */
|
||||
return 0.5 + Z(x,eps)*s;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* chi_prob(chi_sq, v[, eps]) - Prob of >= chi^2 with v degrees of freedom
|
||||
*
|
||||
* Computes the Probability, given the Null Hypothesis, that a given
|
||||
* Chi squared values >= chi_sq with v degrees of freedom.
|
||||
*
|
||||
* The chi_prob() function does not work well with odd degrees of freedom.
|
||||
* It is reasonable with even degrees of freedom, although one must give
|
||||
* a sifficently small error term as the degress gets large (>100).
|
||||
*
|
||||
* NOTE: This function does not work well with odd degrees of freedom.
|
||||
* Can somebody help / find a bug / provide a better method of
|
||||
* this odd degrees of freedom case?
|
||||
*
|
||||
* NOTE: This function works well with even degrees of freedom. However
|
||||
* when the even degrees gets large (say, as you approach 100), you
|
||||
* need to increase your error term.
|
||||
*
|
||||
* From Handbook of Mathematical Functions
|
||||
* 10th printing, Dec 1972 with corrections
|
||||
* National Bureau of Standards
|
||||
*
|
||||
* Section 26.4.4, p941:
|
||||
*
|
||||
* For odd v:
|
||||
*
|
||||
* Q(chi_sq, v) = 2*Q(chi) + 2*Z(chi) * (
|
||||
* sum(r=1, r<=(r-1)/2) {(chi_sq^r/chi) / (1*3*5*...(2*r-1)});
|
||||
*
|
||||
* chi = sqrt(chi_sq)
|
||||
*
|
||||
* NOTE: Q(x) = 1-P(x)
|
||||
*
|
||||
* Section 26.4.5, p941.
|
||||
*
|
||||
* For even v:
|
||||
*
|
||||
* Q(chi_sq, v) = sqrt(2*pi()) * Z(chi) * ( 1 +
|
||||
* sum(r=1, r=((v-2)/2)) { chi_sq^r / (2*4*...*(2r)) } );
|
||||
*
|
||||
* chi = sqrt(chi_sq)
|
||||
*
|
||||
* Observe that:
|
||||
*
|
||||
* Z(x) = exp(-x*x/2) / sqrt(2*pi()); (Section 26.2.1, p931)
|
||||
*
|
||||
* and thus:
|
||||
*
|
||||
* sqrt(2*pi()) * Z(chi) =
|
||||
* sqrt(2*pi()) * Z(sqrt(chi_sq)) =
|
||||
* sqrt(2*pi()) * exp(-sqrt(chi_sq)*sqrt(chi_sq)/2) / sqrt(2*pi()) =
|
||||
* exp(-sqrt(chi_sq)*sqrt(chi_sq)/2) =
|
||||
* exp(-sqrt(-chi_sq/2)
|
||||
*
|
||||
* So:
|
||||
*
|
||||
* Q(chi_sq, v) = exp(-sqrt(-chi_sq/2) * ( 1 + sum(....){...} );
|
||||
*/
|
||||
define chi_prob(chi_sq, v, eps_term)
|
||||
{
|
||||
local eps; /* error term */
|
||||
local r; /* index in finite sum */
|
||||
local r_lim; /* limit value for r */
|
||||
local s; /* sum */
|
||||
local d; /* demoninator (2*4*6*... or 1*3*5...) */
|
||||
local chi_term; /* chi_sq^r */
|
||||
local ret; /* return value */
|
||||
|
||||
/* obtain the error term */
|
||||
if (isnull(eps_term)) {
|
||||
eps = epsilon();
|
||||
} else {
|
||||
eps = eps_term;
|
||||
}
|
||||
|
||||
/*
|
||||
* odd degrees of freedom
|
||||
*/
|
||||
if (isodd(v)) {
|
||||
|
||||
local chi; /* sqrt(chi_sq) */
|
||||
|
||||
/* setup for sum */
|
||||
s = 1;
|
||||
d = 1;
|
||||
chi = sqrt(abs(chi_sq), eps);
|
||||
chi_term = chi;
|
||||
r_lim = (v-1)/2;
|
||||
|
||||
/* compute sum(r=1, r=((v-1)/2)) {(chi_sq^r/chi) / (1*3*5...*(2r-1))} */
|
||||
for (r=2; r <= r_lim; ++r) {
|
||||
chi_term *= chi_sq;
|
||||
d *= (2*r)-1;
|
||||
s += chi_term/d;
|
||||
}
|
||||
|
||||
/* apply term and factor, Q(x) = 1-P(x) */
|
||||
ret = 2*(1-P(chi)) + 2*Z(chi)*s;
|
||||
|
||||
/*
|
||||
* even degrees of freedom
|
||||
*/
|
||||
} else {
|
||||
|
||||
/* setup for sum */
|
||||
s =1;
|
||||
d = 1;
|
||||
chi_term = 1;
|
||||
r_lim = (v-2)/2;
|
||||
|
||||
/* compute sum(r=1, r=((v-2)/2)) { chi_sq^r / (2*4*...*(2r)) } */
|
||||
for (r=1; r <= r_lim; ++r) {
|
||||
chi_term *= chi_sq;
|
||||
d *= r*2;
|
||||
s += chi_term/d;
|
||||
}
|
||||
|
||||
/* apply factor - see observation in the main comment above */
|
||||
ret = exp(-chi_sq/2, eps) * s;
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
222
cal/intfile.cal
Normal file
222
cal/intfile.cal
Normal file
@@ -0,0 +1,222 @@
|
||||
/*
|
||||
* intfile - integer to file and file to integer conversion
|
||||
*
|
||||
* 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.5 $
|
||||
* @(#) $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 $
|
||||
*
|
||||
* Under source code control: 2001/03/31 08:13: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/
|
||||
*/
|
||||
|
||||
|
||||
/*
|
||||
* NOTE: Because leading HALF values are trimmed from integer, a file
|
||||
* that begins with lots of 0 bits (in the case of big endian)
|
||||
* or that ends with lots of 0 bits (in the case of little endian)
|
||||
* will be changed when the subsequent integer is written back.
|
||||
*/
|
||||
|
||||
|
||||
/*
|
||||
* file2be - convert a file into an big endian integer
|
||||
*
|
||||
* given:
|
||||
* filename filename to read
|
||||
*
|
||||
* returns:
|
||||
* integer read from its contents on big endian order
|
||||
*/
|
||||
define file2be(filename)
|
||||
{
|
||||
local fd; /* open file */
|
||||
local ret; /* integer to return */
|
||||
local c; /* character read from the file */
|
||||
local i;
|
||||
|
||||
/*
|
||||
* open the file for reading
|
||||
*/
|
||||
fd = fopen(filename, "rb");
|
||||
if (!isfile(fd)) quit "file2be: cannot open file for reading";
|
||||
|
||||
/*
|
||||
* read the contents of the file
|
||||
*
|
||||
* The first octets become the most significant bits of the integer.
|
||||
*/
|
||||
ret = 0;
|
||||
while (! isnull(c = fgetc(fd))) {
|
||||
ret <<= 8;
|
||||
ret += ord(c);
|
||||
}
|
||||
|
||||
/*
|
||||
* cleanup and return the integer
|
||||
*/
|
||||
fclose(fd);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* file2le - convert a file into an little endian integer
|
||||
*
|
||||
* given:
|
||||
* filename filename to read
|
||||
*
|
||||
* returns:
|
||||
* integer read from its contents on little endian order
|
||||
*/
|
||||
define file2le(filename)
|
||||
{
|
||||
local fd; /* open file */
|
||||
local ret; /* integer to return */
|
||||
local c; /* character read from the file */
|
||||
local shft; /* bit shift for the c value */
|
||||
local i;
|
||||
|
||||
/*
|
||||
* open the file for reading
|
||||
*/
|
||||
fd = fopen(filename, "rb");
|
||||
if (!isfile(fd)) quit "file2le: cannot open file for reading";
|
||||
|
||||
/*
|
||||
* read the contents of the file into a string
|
||||
*
|
||||
* The first octets become are the least significant bits of the integer.
|
||||
*/
|
||||
ret = 0;
|
||||
shft = 0;
|
||||
while (! isnull(c = fgetc(fd))) {
|
||||
ret |= (ord(c) << shft);
|
||||
shft += 8;
|
||||
}
|
||||
|
||||
/*
|
||||
* cleanup and return the integer
|
||||
*/
|
||||
fclose(fd);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* be2file - convert a big endian integer into a file
|
||||
*
|
||||
* given:
|
||||
* v integer to write to the file
|
||||
* filename filename to write
|
||||
*
|
||||
* returns:
|
||||
* The number of octets written to the file.
|
||||
*
|
||||
* NOTE: The absolute value of the integer is written to the file.
|
||||
*/
|
||||
define be2file(v, filename)
|
||||
{
|
||||
local fd; /* open file */
|
||||
local octlen; /* length of v in octets */
|
||||
local i;
|
||||
|
||||
/*
|
||||
* firewall
|
||||
*/
|
||||
if (!isint(v)) {
|
||||
quit "be2file: 1st arg not an integer";
|
||||
}
|
||||
v = abs(v);
|
||||
|
||||
/*
|
||||
* open the file for writing
|
||||
*/
|
||||
fd = fopen(filename, "wb");
|
||||
if (!isfile(fd)) quit "be2file: cannot open file for writing";
|
||||
|
||||
/*
|
||||
* write the octets to the file
|
||||
*
|
||||
* The most significant bits of the integer become the first file octets.
|
||||
*/
|
||||
octlen = int((highbit(v)+8) / 8);
|
||||
for (i=octlen-1; i >= 0; --i) {
|
||||
fputc(fd, char(v >> (i*8)));
|
||||
}
|
||||
|
||||
/*
|
||||
* cleanup
|
||||
*/
|
||||
fclose(fd);
|
||||
return octlen;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* le2file - convert a little endian integer into a file
|
||||
*
|
||||
* given:
|
||||
* v integer to write to the file
|
||||
* filename filename to write
|
||||
*
|
||||
* returns:
|
||||
* The number of octets written to the file.
|
||||
*
|
||||
* NOTE: The absolute value of the integer is written to the file.
|
||||
*/
|
||||
define le2file(v, filename)
|
||||
{
|
||||
local fd; /* open file */
|
||||
local cnt; /* octets written */
|
||||
|
||||
/*
|
||||
* firewall
|
||||
*/
|
||||
if (!isint(v)) {
|
||||
quit "be2file: 1st arg not an integer";
|
||||
}
|
||||
v = abs(v);
|
||||
|
||||
/*
|
||||
* open the file for writing
|
||||
*/
|
||||
fd = fopen(filename, "wb");
|
||||
if (!isfile(fd)) quit "le2file: cannot open file for writing";
|
||||
|
||||
/*
|
||||
* Write the octets to the file.
|
||||
*
|
||||
* The least significant bits of the integer become the first file octets.
|
||||
*/
|
||||
cnt = 0;
|
||||
while (v > 0) {
|
||||
fputc(fd, char(v));
|
||||
v >>= 8;
|
||||
++cnt;
|
||||
}
|
||||
|
||||
/*
|
||||
* cleanup
|
||||
*/
|
||||
fclose(fd);
|
||||
return cnt;
|
||||
}
|
@@ -17,8 +17,8 @@
|
||||
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
*
|
||||
* @(#) $Revision: 29.2 $
|
||||
* @(#) $Id: lucas.cal,v 29.2 2000/06/07 14:02:25 chongo Exp $
|
||||
* @(#) $Revision: 29.3 $
|
||||
* @(#) $Id: lucas.cal,v 29.3 2001/03/31 13:31:34 chongo Exp $
|
||||
* @(#) $Source: /usr/local/src/cmd/calc/cal/RCS/lucas.cal,v $
|
||||
*
|
||||
* Under source code control: 1990/05/03 16:49:51
|
||||
@@ -1030,7 +1030,7 @@ gen_v1(h, n)
|
||||
define
|
||||
ldebug(funct, str)
|
||||
{
|
||||
if (config("resource_debug") & 3) {
|
||||
if (config("resource_debug") & 8) {
|
||||
print "DEBUG:", funct:":", str;
|
||||
}
|
||||
return;
|
||||
|
@@ -17,8 +17,8 @@
|
||||
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
*
|
||||
* @(#) $Revision: 29.2 $
|
||||
* @(#) $Id: lucas_chk.cal,v 29.2 2000/06/07 14:02:25 chongo Exp $
|
||||
* @(#) $Revision: 29.3 $
|
||||
* @(#) $Id: lucas_chk.cal,v 29.3 2001/03/31 13:31:34 chongo Exp $
|
||||
* @(#) $Source: /usr/local/src/cmd/calc/cal/RCS/lucas_chk.cal,v $
|
||||
*
|
||||
* Under source code control: 1991/01/11 05:41:43
|
||||
@@ -336,7 +336,7 @@ lucas_chk(high_n, quiet)
|
||||
|
||||
/* skip primes where h>=2^n */
|
||||
if (highbit(h_p[i]) >= n_p[i]) {
|
||||
if (config("resource_debug") & 3) {
|
||||
if (config("resource_debug") & 8) {
|
||||
print "h>=2^n skip:", h_p[i]:"*2^":n_p[i]:"-1";
|
||||
}
|
||||
continue;
|
||||
|
188
cal/regress.cal
188
cal/regress.cal
@@ -17,8 +17,8 @@
|
||||
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
*
|
||||
* @(#) $Revision: 29.6 $
|
||||
* @(#) $Id: regress.cal,v 29.6 2000/12/17 12:26:42 chongo Exp $
|
||||
* @(#) $Revision: 29.10 $
|
||||
* @(#) $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 $
|
||||
*
|
||||
* Under source code control: 1990/02/15 01:50:36
|
||||
@@ -411,10 +411,10 @@ define test_config()
|
||||
'516: config("pow2") == 40');
|
||||
vrfy(config("redc2") == 50,
|
||||
'517: config("redc2") == 50');
|
||||
vrfy(config("tilde") == "true",
|
||||
'518: config("tilde") == "true"');
|
||||
vrfy(config("tab") == "true",
|
||||
'519: config("tab") == "true"');
|
||||
vrfy(config("tilde"),
|
||||
'518: config("tilde")');
|
||||
vrfy(config("tab"),
|
||||
'519: config("tab")');
|
||||
vrfy(config("quomod") == 0,
|
||||
'520: config("quomod") == 0');
|
||||
vrfy(config("quo") == 2,
|
||||
@@ -433,10 +433,10 @@ define test_config()
|
||||
'527: config("outround") == 2');
|
||||
vrfy(config("round") == 24,
|
||||
'528: config("round") == 24');
|
||||
vrfy(config("leadzero") == "false",
|
||||
'529: config("leadzero") == "false"');
|
||||
vrfy(config("fullzero") == "false",
|
||||
'530: config("fullzero") == "false"');
|
||||
vrfy(config("leadzero") == 0,
|
||||
'529: config("leadzero") == 0');
|
||||
vrfy(config("fullzero") == 0,
|
||||
'530: config("fullzero") == 0');
|
||||
vrfy(config("maxscan") == 20,
|
||||
'531: config("maxscan") == 20');
|
||||
vrfy(config("prompt") == "> ",
|
||||
@@ -452,10 +452,10 @@ define test_config()
|
||||
vrfy(config("quo", 0) == 2, '536: config("quo", 0) == 2');
|
||||
vrfy(config("outround", 24) == 2,
|
||||
'537: config("outround", 24) == 2');
|
||||
vrfy(config("leadzero","y") == "false",
|
||||
'538: config("leadzero","y") == "false"');
|
||||
vrfy(config("fullzero", 1) == "false",
|
||||
'539: config("fullzero", 1) == "false"');
|
||||
vrfy(config("leadzero","y") == 0,
|
||||
'538: config("leadzero","y") == 0');
|
||||
vrfy(config("fullzero", 1) == 0,
|
||||
'539: config("fullzero", 1) == 0');
|
||||
vrfy(config("prompt", "; ") == "> ",
|
||||
'540: config("prompt", "; ") == "> "');
|
||||
vrfy(config("more", ";; ") == ">> ",
|
||||
@@ -467,14 +467,14 @@ define test_config()
|
||||
'543: config("all",callcfg) == newcfg');
|
||||
vrfy(config("display",2) == 20,
|
||||
'544: config("display",2) == 20');
|
||||
vrfy(config("fullzero",1) == "false",
|
||||
'545: config("fullzero",1) == "false"');
|
||||
vrfy(config("fullzero",1) == 0,
|
||||
'545: config("fullzero",1) == 0');
|
||||
vrfy(strprintf("%d %d %d", 0, 1, 2) == ".00 1.00 2.00",
|
||||
'546: strprintf("%d %d %d", 0, 1, 2) == ".00 1.00 2.00"');
|
||||
vrfy(config("display",20) == 2,
|
||||
'547: config("display",20) == 2');
|
||||
vrfy(config("fullzero",0) == "true",
|
||||
'548: config("fullzero",0) == "true"');
|
||||
vrfy(config("fullzero",0),
|
||||
'548: config("fullzero",0)');
|
||||
vrfy(strprintf("%d %d %d", 0, 1, 2) == "0 1 2",
|
||||
'549: strprintf("%d %d %d", 0, 1, 2) == "0 1 2"');
|
||||
|
||||
@@ -996,8 +996,13 @@ define test_functions()
|
||||
vrfy(strpos(a, "abc") == 1, '946: strpos(a, "abc") == 1');
|
||||
vrfy(strpos(a, "xyz") == 0, '947: strpos(a, "xyz") == 0');
|
||||
vrfy(strpos(a, a) == 1, '948: strpos(a, a) == 1');
|
||||
vrfy(system("") == 0, '949: system("") == 0');
|
||||
vrfy(system("true") == 0, '950: system("true") == 0');
|
||||
if (config("windows")) {
|
||||
print '949: test skipped for windows systems';
|
||||
print '950: test skipped for windows systems';
|
||||
} else {
|
||||
vrfy(system("") == 0, '949: system("") == 0');
|
||||
vrfy(system("true") == 0, '950: system("true") == 0');
|
||||
}
|
||||
print '951: test disabled due to stdin dependency';
|
||||
print '952: test removed';
|
||||
print '953: test removed';
|
||||
@@ -1562,31 +1567,31 @@ define test_rand()
|
||||
/* test the additive 55 shuffle generator */
|
||||
tmp = srand(0);
|
||||
print '1505: tmp = srand(0)';
|
||||
vrfy(rand() == 0xc79ef743e2e6849c, \
|
||||
'1506: rand() == 0xc79ef743e2e6849c');
|
||||
vrfy(rand() == 0x8d2dcb2bed321284, \
|
||||
'1507: rand() == 0x8d2dcb2bed321284');
|
||||
vrfy(rand() == 0x1fe5b46fba7e069d, \
|
||||
'1506: rand() == 0x1fe5b46fba7e069d');
|
||||
vrfy(rand() == 0x308d32d9bdf2dc6f, \
|
||||
'1507: rand() == 0x308d32d9bdf2dc6f');
|
||||
tmp = srand(init);
|
||||
print '1508: tmp = srand(init)';
|
||||
vrfy(rand() == 0xc79ef743e2e6849c, \
|
||||
'1509: rand() == 0xc79ef743e2e6849c');
|
||||
vrfy(rand() == 0x8d2dcb2bed321284, \
|
||||
'1510: rand() == 0x8d2dcb2bed321284');
|
||||
vrfy(rand() == 0x1fe5b46fba7e069d, \
|
||||
'1509: rand() == 0x1fe5b46fba7e069d');
|
||||
vrfy(rand() == 0x308d32d9bdf2dc6f, \
|
||||
'1510: rand() == 0x308d32d9bdf2dc6f');
|
||||
|
||||
/* test range interface */
|
||||
tmp = srand(0);
|
||||
print '1511: tmp = srand(0)';
|
||||
vrfy(rand(12345678901234567890) == 0x8d2dcb2bed321284, \
|
||||
'1512: rand(12345678901234567890) == 0x8d2dcb2bed321284');
|
||||
vrfy(rand(216091) == 0x13d2b, '1513: rand(216091) == 0x13d2b');
|
||||
vrfy(rand(100) == 0x26, '1514: rand(100) == 0x26');
|
||||
vrfy(rand(-46,46) == -0xf, '1515: rand(-46,46) == -0xf');
|
||||
vrfy(rand(12345678901234567890) == 0x1fe5b46fba7e069d, \
|
||||
'1512: rand(12345678901234567890) == 0x1fe5b46fba7e069d');
|
||||
vrfy(rand(216091) == 0xc234, '1513: rand(216091) == 0xc234');
|
||||
vrfy(rand(100) == 0x59, '1514: rand(100) == 0x59');
|
||||
vrfy(rand(-46,46) == 0x2d, '1515: rand(-46,46) == 0x2d');
|
||||
tmp = srand(0);
|
||||
print '1516: tmp = srand(0)';
|
||||
vrfy(rand(2^64) == 0xc79ef743e2e6849c, \
|
||||
'1517: rand(2^64) == 0xc79ef743e2e6849c');
|
||||
vrfy(rand(0,2^64) == 0x8d2dcb2bed321284, \
|
||||
'1518: rand(0,2^64) == 0x8d2dcb2bed321284');
|
||||
vrfy(rand(2^64) == 0x1fe5b46fba7e069d, \
|
||||
'1517: rand(2^64) == 0x1fe5b46fba7e069d');
|
||||
vrfy(rand(0,2^64) == 0x308d32d9bdf2dc6f, \
|
||||
'1518: rand(0,2^64) == 0x308d32d9bdf2dc6f');
|
||||
|
||||
/* test different forms of seeding the initial state */
|
||||
tmp = srand(0);
|
||||
@@ -1594,7 +1599,7 @@ define test_rand()
|
||||
vrfy(srand() == init, '1520: srand() == init');
|
||||
tmp = srand(0x87e6ec938ff55aa5<<64);
|
||||
print '1521: tmp = srand(0x87e6ec938ff55aa5<<64)';
|
||||
vrfy(srand() == init, '1522: srand() == init');
|
||||
print '1522: test disabled';
|
||||
tmp = srand(state0);
|
||||
print '1523: tmp = srand(state0)';
|
||||
vrfy(srand() == init, '1524: srand() == init');
|
||||
@@ -1606,35 +1611,35 @@ define test_rand()
|
||||
/* test the bit length interface */
|
||||
tmp = srand(0);
|
||||
print '1528: tmp = srand(0)';
|
||||
vrfy(randbit(64) == 0xc79ef743e2e6849c, \
|
||||
'1529: randbit(64) == 0xc79ef743e2e6849c');
|
||||
vrfy(randbit(128) == 0x8d2dcb2bed3212844f4ad31f3818af34, \
|
||||
'1530: randbit(128) == 0x8d2dcb2bed3212844f4ad31f3818af34');
|
||||
vrfy(randbit(64) == 0x23a252f60bae4907, \
|
||||
'1531: randbit(64) == 0x23a252f60bae4907');
|
||||
vrfy(randbit(128) == 0xa8ed5b6203e2b1da32848cd9b3f1e3fa, \
|
||||
'1532: randbit(128) == 0xa8ed5b6203e2b1da32848cd9b3f1e3fa');
|
||||
vrfy(randbit(64) == 0x1fe5b46fba7e069d, \
|
||||
'1529: randbit(64) == 0x1fe5b46fba7e069d');
|
||||
vrfy(randbit(128) == 0x308d32d9bdf2dc6f45d3e3b3361b79e4, \
|
||||
'1530: randbit(128) == 0x308d32d9bdf2dc6f45d3e3b3361b79e4');
|
||||
vrfy(randbit(64) == 0xd4ef1e3336022d81, \
|
||||
'1531: randbit(64) == 0xd4ef1e3336022d81');
|
||||
vrfy(randbit(128) == 0x66b086e6c34e42124a1fc5d4e5c6f598, \
|
||||
'1532: randbit(128) == 0x66b086e6c34e42124a1fc5d4e5c6f598');
|
||||
tmp = srand(0);
|
||||
print '1533: tmp = srand(0)';
|
||||
vrfy(randbit(32) == 0xc79ef743, '1534: randbit(32) == 0xc79ef743');
|
||||
vrfy(randbit(32) == 0xe2e6849c, '1535: randbit(32) == 0xe2e6849c');
|
||||
vrfy(randbit(1) == 0x1, '1536: randbit(1) == 0x1');
|
||||
vrfy(randbit(5) == 0x3, '1537: randbit(5) == 0x3');
|
||||
vrfy(randbit(33) == 0x96e595f6, '1538: randbit(33) == 0x96e595f6');
|
||||
vrfy(randbit(25) == 0x1321284, '1539: randbit(25) == 0x1321284');
|
||||
vrfy(randbit(32) == 0x1fe5b46f, '1534: randbit(32) == 0x1fe5b46f');
|
||||
vrfy(randbit(32) == 0xba7e069d, '1535: randbit(32) == 0xba7e069d');
|
||||
vrfy(randbit(1) == 0x0, '1536: randbit(1) == 0x0');
|
||||
vrfy(randbit(5) == 0xc, '1537: randbit(5) == 0xc');
|
||||
vrfy(randbit(33) == 0x46996cde, '1538: randbit(33) == 0x46996cde');
|
||||
vrfy(randbit(25) == 0x1f2dc6f, '1539: randbit(25) == 0x1f2dc6f');
|
||||
vrfy(randbit(2) == 0x1, '1540: randbit(2) == 0x1');
|
||||
vrfy(randbit(13) == 0x7a5, '1541: randbit(13) == 0x7a5');
|
||||
vrfy(randbit(18) == 0x1a63e, '1542: randbit(18) == 0x1a63e');
|
||||
vrfy(randbit(8) == 0x70, '1543: randbit(8) == 0x70');
|
||||
vrfy(randbit(9) == 0x62, '1544: randbit(9) == 0x62');
|
||||
vrfy(randbit(70) == 0x2f3423a252f60bae49, \
|
||||
'1545: randbit(70) == 0x2f3423a252f60bae49');
|
||||
vrfy(randbit(13) == 0x2e9, '1541: randbit(13) == 0x2e9');
|
||||
vrfy(randbit(18) == 0x3c766, '1542: randbit(18) == 0x3c766');
|
||||
vrfy(randbit(8) == 0x6c, '1543: randbit(8) == 0x6c');
|
||||
vrfy(randbit(9) == 0x6d, '1544: randbit(9) == 0x6d');
|
||||
vrfy(randbit(70) == 0x39e4d4ef1e3336022d, \
|
||||
'1545: randbit(70) == 0x39e4d4ef1e3336022d');
|
||||
print '1546: test unused';
|
||||
vrfy(randbit(8) == 0x7, '1547: randbit(8) == 0x7');
|
||||
vrfy(randbit(65) == 0x151dab6c407c563b4, \
|
||||
'1548: randbit(65) == 0x151dab6c407c563b4');
|
||||
vrfy(randbit(63) == 0x32848cd9b3f1e3fa, \
|
||||
'1549: randbit(63) == 0x32848cd9b3f1e3fa');
|
||||
vrfy(randbit(8) == 0x81, '1547: randbit(8) == 0x81');
|
||||
vrfy(randbit(65) == 0xcd610dcd869c8424, \
|
||||
'1548: randbit(65) == 0xcd610dcd869c8424');
|
||||
vrfy(randbit(63) == 0x4a1fc5d4e5c6f598, \
|
||||
'1549: randbit(63) == 0x4a1fc5d4e5c6f598');
|
||||
|
||||
/* check to be sure that the srand(1) bug was fixed */
|
||||
tmp = srand(1);
|
||||
@@ -1643,36 +1648,36 @@ define test_rand()
|
||||
print '1551: n = 1';
|
||||
vrfy(num(n), '1552: num(n)');
|
||||
vrfy(den(n), '1553: den(n)');
|
||||
vrfy(randbit(64) == 0x4280429f8069cb27, \
|
||||
'1554: randbit(64) == 0x4280429f8069cb27');
|
||||
|
||||
vrfy(randbit(64) == 0xbf989a4c504a541d, \
|
||||
'1554: randbit(64) == 0xbf989a4c504a541d');
|
||||
/* test randbit skip interface */
|
||||
tmp = srand(0);
|
||||
print '1555: tmp = srand(0)';
|
||||
vrfy(randbit(20) == 817647, '1556: randbit(20) == 817647');
|
||||
vrfy(randbit(20) == 476130, '1557: randbit(20) == 476130');
|
||||
vrfy(randbit(20) == 944201, '1558: randbit(20) == 944201');
|
||||
vrfy(randbit(20) == 822573, '1559: randbit(20) == 822573');
|
||||
vrfy(randbit(20) == 0x1fe5b, '1556: randbit(20) == 0x1fe5b');
|
||||
vrfy(randbit(20) == 0x46fba, '1557: randbit(20) == 0x46fba');
|
||||
vrfy(randbit(20) == 0x7e069, '1558: randbit(20) == 0x7e069');
|
||||
vrfy(randbit(20) == 0xd308d, '1559: randbit(20) == 0xd308d');
|
||||
tmp = srand(0);
|
||||
print '1560: tmp = srand(0)';
|
||||
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) == 822573, '1564: randbit(20) == 822573');
|
||||
vrfy(randbit(20) == 864397, '1564: randbit(20) == 864397');
|
||||
|
||||
/* test randbit without and arg */
|
||||
tmp = srand(0);
|
||||
print '1565: tmp = srand(0)';
|
||||
vrfy(randbit() == 1, '1566: randbit() == 1');
|
||||
vrfy(randbit() == 1, '1567: randbit() == 1');
|
||||
vrfy(randbit() == 0, '1566: randbit() == 0');
|
||||
vrfy(randbit() == 0, '1567: randbit() == 0');
|
||||
vrfy(randbit() == 0, '1568: randbit() == 0');
|
||||
vrfy(randbit() == 1, '1569: randbit() == 1');
|
||||
|
||||
/* test seed() as best as we can */
|
||||
vrfy(seed() >= 0, '1569: seed() >= 0');
|
||||
vrfy(seed() < 2^64, '1570: seed() < 2^64');
|
||||
vrfy(isrand(srand(seed())), '1571: isrand(srand(seed()))');
|
||||
vrfy(seed() >= 0, '1570: seed() >= 0');
|
||||
vrfy(seed() < 2^64, '1571: seed() < 2^64');
|
||||
vrfy(isrand(srand(seed())), '1572: isrand(srand(seed()))');
|
||||
|
||||
print '1572: Ending rand test';
|
||||
print '1573: Ending rand test';
|
||||
}
|
||||
print '025: parsed test_rand()';
|
||||
|
||||
@@ -5112,10 +5117,17 @@ define test_is()
|
||||
*/
|
||||
a = assoc();
|
||||
print '5901: a = assoc()';
|
||||
ofd = fopen("/dev/null", "r");
|
||||
print '5902: ofd = fopen("/dev/null", "r")';
|
||||
cfd = fopen("/dev/null", "r");
|
||||
print '5903: cfd = fopen("/dev/null", "r")';
|
||||
if (config("windows")) {
|
||||
ofd = fopen("NUL:", "rb");
|
||||
print '5902: ofd = fopen("NUL:", "rb")';
|
||||
cfd = fopen("NUL:", "rb");
|
||||
print '5903: cfd = fopen("NUL:", "rb")';
|
||||
} else {
|
||||
ofd = fopen("/dev/null","rb");
|
||||
print '5902: ofd = fopen("/dev/null","rb")';
|
||||
cfd = fopen("/dev/null","rb");
|
||||
print '5903: cfd = fopen("/dev/null","rb")';
|
||||
}
|
||||
fclose(cfd);
|
||||
print '5904: fclose(cfd)';
|
||||
blk = blk();
|
||||
@@ -6293,8 +6305,8 @@ define test_blkcpy()
|
||||
|
||||
/* blkcpy the last 5 octets of B1 to a new block C */
|
||||
|
||||
blkcpy(C = blk(), B1, 5, ,100);
|
||||
print '6821: blkcpy(C = blk(), B1, 5, ,100);';
|
||||
blkcpy(C = blk(), B1,5,,100);
|
||||
print '6821: blkcpy(C = blk(), B1,5,,100);';
|
||||
vrfy(C == A, '6822: C == A');
|
||||
|
||||
/* blkcpy to and from a file */
|
||||
@@ -6310,8 +6322,8 @@ define test_blkcpy()
|
||||
blkcpy(fs, A, ,100);
|
||||
print '6828: blkcpy(fs, A, ,100);';
|
||||
vrfy(size(fs) == 105, '6829: size(f) == 105');
|
||||
blkcpy(C = blk(), fs, 2, ,100);
|
||||
print '6830: blkcpy(C = blk(), fs, 2, ,100)';
|
||||
blkcpy(C = blk(), fs,2,,100);
|
||||
print '6830: blkcpy(C = blk(), fs,2,,100)';
|
||||
vrfy(C == (blk() = {1,2}), '6831: C == (blk() = {1,2}');
|
||||
|
||||
/* blkcpy string to a block */
|
||||
@@ -7593,7 +7605,9 @@ vrfy(j8300(10) == 11, '8307: j8300(10) == 11');
|
||||
{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');
|
||||
print '8310: Ending define tests';
|
||||
static a8300 = 1, b8300;
|
||||
vrfy(a8300 == 1, '8310: a8300 == 1');
|
||||
print '8311: Ending define tests';
|
||||
|
||||
|
||||
/*
|
||||
|
@@ -17,8 +17,8 @@
|
||||
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
*
|
||||
* @(#) $Revision: 29.2 $
|
||||
* @(#) $Id: seedrandom.cal,v 29.2 2000/06/07 14:02:25 chongo Exp $
|
||||
* @(#) $Revision: 29.3 $
|
||||
* @(#) $Id: seedrandom.cal,v 29.3 2001/03/31 13:31:34 chongo Exp $
|
||||
* @(#) $Source: /usr/local/src/cmd/calc/cal/RCS/seedrandom.cal,v $
|
||||
*
|
||||
* Under source code control: 1996/01/01 08:21:00
|
||||
@@ -115,7 +115,7 @@ define seedrandom(seed1, seed2, size, trials)
|
||||
p = 2*fp+1;
|
||||
} while (ptest(p,1,0) == 0);
|
||||
} while(ptest(p, trials) == 0 || ptest(fp, trials) == 0);
|
||||
if (config("resource_debug") & 3) {
|
||||
if (config("resource_debug") & 8) {
|
||||
print "/* 1st Blum prime */ p=", p;
|
||||
}
|
||||
|
||||
@@ -129,7 +129,7 @@ define seedrandom(seed1, seed2, size, trials)
|
||||
q = 2*fq+1;
|
||||
} while (ptest(q,1,0) == 0);
|
||||
} while(ptest(q, trials) == 0 || ptest(fq, trials) == 0);
|
||||
if (config("resource_debug") & 3) {
|
||||
if (config("resource_debug") & 8) {
|
||||
print "/* 2nd Blum prime */ q=", q;
|
||||
}
|
||||
|
||||
@@ -139,7 +139,7 @@ define seedrandom(seed1, seed2, size, trials)
|
||||
n = p*q; /* the Blum modulus */
|
||||
binsize = highbit(n)+1; /* smallest power of 2 > p*q */
|
||||
r = pmod(rand(1<<ceil(binsize*4/5), 1<<(binsize-2)), 2, n);
|
||||
if (config("resource_debug") & 3) {
|
||||
if (config("resource_debug") & 8) {
|
||||
print "/* seed quadratic residue */ r=", r;
|
||||
print "/* newn", binsize, "bit quadratic residue*/ newn=", n;
|
||||
}
|
||||
|
@@ -19,8 +19,8 @@
|
||||
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
*
|
||||
* @(#) $Revision: 29.2 $
|
||||
* @(#) $Id: test4600.cal,v 29.2 2000/06/07 14:02:25 chongo Exp $
|
||||
* @(#) $Revision: 29.4 $
|
||||
* @(#) $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 $
|
||||
*
|
||||
* Under source code control: 1996/07/02 20:04:40
|
||||
@@ -53,10 +53,10 @@ define stest(str, verbose)
|
||||
/*
|
||||
* do file operations
|
||||
*/
|
||||
f = fopen("junk4600", "w");
|
||||
f = fopen("junk4600", "wb");
|
||||
if (iserror(f)) {
|
||||
print 'failed';
|
||||
print '**** fopen("junk4600", "w") failed';
|
||||
print '**** fopen("junk4600", "wb") failed';
|
||||
return 1;
|
||||
}
|
||||
if (iserror(fputs(f,
|
||||
@@ -67,9 +67,9 @@ define stest(str, verbose)
|
||||
print '**** fputs(f, "Fourscore ... failed';
|
||||
return 1;
|
||||
}
|
||||
if (iserror(freopen(f, "r"))) {
|
||||
if (iserror(freopen(f, "rb"))) {
|
||||
print 'failed';
|
||||
print '**** iserror(freopen(f, "r")) failed';
|
||||
print '**** iserror(freopen(f, "rb")) failed';
|
||||
return 1;
|
||||
}
|
||||
if (iserror(rewind(f))) {
|
||||
@@ -173,7 +173,7 @@ define ttest(str, m, n, verbose)
|
||||
print str:":",:;
|
||||
}
|
||||
i = rm("-f", "junk4600");
|
||||
f = fopen("junk4600", "w");
|
||||
f = fopen("junk4600", "wb");
|
||||
|
||||
if (isnull(n))
|
||||
n = 4;
|
||||
@@ -198,7 +198,7 @@ define ttest(str, m, n, verbose)
|
||||
fflush(f);
|
||||
if (verbose > 1)
|
||||
printf("File has size %d\n", pos[i]);
|
||||
freopen(f, "r");
|
||||
freopen(f, "rb");
|
||||
if (size(f) != pos[i]) {
|
||||
print 'failed';
|
||||
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.
|
||||
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
*
|
||||
* @(#) $Revision: 29.7 $
|
||||
* @(#) $Id: calc.c,v 29.7 2001/03/17 21:31:47 chongo Exp $
|
||||
* @(#) $Revision: 29.8 $
|
||||
* @(#) $Id: calc.c,v 29.8 2001/04/10 22:03:13 chongo Exp $
|
||||
* @(#) $Source: /usr/local/src/cmd/calc/RCS/calc.c,v $
|
||||
*
|
||||
* 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) {
|
||||
closeinput();
|
||||
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,
|
||||
"Unable to associate stdin"
|
||||
" with /dev/tty");
|
||||
#endif /* Windoz free systems */
|
||||
set_run_state(RUN_EXIT_WITH_ERROR);
|
||||
break;
|
||||
}
|
||||
@@ -646,9 +655,18 @@ main(int argc, char **argv)
|
||||
!p_flag && (!havecommands||i_flag)) {
|
||||
closeinput();
|
||||
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,
|
||||
"Unable to associate stdin"
|
||||
" with /dev/tty");
|
||||
#endif /* Windoz free systems */
|
||||
set_run_state(RUN_EXIT_WITH_ERROR);
|
||||
break;
|
||||
}
|
||||
|
16
calc.h
16
calc.h
@@ -17,8 +17,8 @@
|
||||
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
*
|
||||
* @(#) $Revision: 29.6 $
|
||||
* @(#) $Id: calc.h,v 29.6 2001/03/17 21:31:47 chongo Exp $
|
||||
* @(#) $Revision: 29.7 $
|
||||
* @(#) $Id: calc.h,v 29.7 2001/05/29 00:16:53 chongo Exp $
|
||||
* @(#) $Source: /usr/local/src/cmd/calc/RCS/calc.h,v $
|
||||
*
|
||||
* Under source code control: 1990/02/15 01:48:31
|
||||
@@ -32,9 +32,15 @@
|
||||
#define __CALC_H__
|
||||
|
||||
#include <setjmp.h>
|
||||
#include "win32dll.h"
|
||||
#include "value.h"
|
||||
#include "have_const.h"
|
||||
#if defined(SRC) /* if we are building from the calc source tree */
|
||||
# include "win32dll.h"
|
||||
# include "value.h"
|
||||
# include "have_const.h"
|
||||
#else
|
||||
# include <calc/win32dll.h>
|
||||
# include <calc/value.h>
|
||||
# include <calc/have_const.h>
|
||||
#endif
|
||||
|
||||
|
||||
/*
|
||||
|
96
calc.man
96
calc.man
@@ -15,8 +15,8 @@
|
||||
.\" received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
.\" 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
.\"
|
||||
.\" @(#) $Revision: 29.5 $
|
||||
.\" @(#) $Id: calc.man,v 29.5 2000/06/07 14:02:13 chongo Exp $
|
||||
.\" @(#) $Revision: 29.7 $
|
||||
.\" @(#) $Id: calc.man,v 29.7 2001/06/01 11:26:53 chongo Exp $
|
||||
.\" @(#) $Source: /usr/local/src/cmd/calc/RCS/calc.man,v $
|
||||
.\"
|
||||
.\" Under source code control: 1991/07/23 05:48:26
|
||||
@@ -36,20 +36,21 @@ calc \- arbitrary precision calculator
|
||||
.RB [ \-c ]
|
||||
.RB [ \-C ]
|
||||
.RB [ \-d ]
|
||||
.RB [ -D\ \&calc_debug[:resource_debug[:user_debug]] ]
|
||||
.br
|
||||
.in +5n
|
||||
.RB [ -D\ \&calc_debug[:resource_debug[:user_debug]] ]
|
||||
.br
|
||||
.RB [ \-e ]
|
||||
.RB [ \-h ]
|
||||
.RB [ \-i ]
|
||||
.RB [ \-m\ \&mode ]
|
||||
.RB [ \-n ]
|
||||
.br
|
||||
.RB [ \-p ]
|
||||
.RB [ \-q ]
|
||||
.RB [ \-s ]
|
||||
.RB [ \-u ]
|
||||
.RB [ \-v ]
|
||||
.br
|
||||
.RB [ calc_cmd\ \&.\|.\|. ]
|
||||
.in -5n
|
||||
.sp
|
||||
@@ -993,25 +994,58 @@ Copyright (C) 1999 Landon Curt Noll
|
||||
and is covered under version 2.1 GNU Lesser General
|
||||
Public License.
|
||||
.sp
|
||||
.SH "BUG REPORTS / BUG FIXES / ENHANCEMENTS"
|
||||
.SH "CALC MAILING LIST / CALC UPDATES / ENHANCEMENTS"
|
||||
\&
|
||||
.br
|
||||
.sp
|
||||
Send comments, suggestions, bug fixes, enhancements
|
||||
To contribute comments, suggestions, enhancements
|
||||
and interesting
|
||||
.B calc
|
||||
resource files,
|
||||
.B calc
|
||||
shell scripts that you would like you see included
|
||||
in future distributions to:
|
||||
resource files, and
|
||||
shell scripts please join the low volume calc mailing list.
|
||||
.sp
|
||||
To join the low volume calc mailing list, send EMail to:
|
||||
.sp
|
||||
.in +0.5i
|
||||
.nf
|
||||
calc-contrib at asthe dot com
|
||||
calc-tester-request at asthe dot com
|
||||
.fi
|
||||
.in -0.5i
|
||||
.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
|
||||
.in +0.5i
|
||||
.nf
|
||||
@@ -1022,6 +1056,16 @@ calc-bugs at asthe dot com
|
||||
.fi
|
||||
.in -0.5i
|
||||
.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
|
||||
.I BUGS
|
||||
source file or use the
|
||||
@@ -1036,7 +1080,7 @@ help bugs
|
||||
.sp
|
||||
for more information about bug reporting.
|
||||
.sp
|
||||
.SH "CALC WEB SITE / MAILING LIST"
|
||||
.SH "CALC WEB SITE"
|
||||
\&
|
||||
.br
|
||||
Landon Noll maintains the the
|
||||
@@ -1047,30 +1091,4 @@ web site is located at:
|
||||
http://www.isthe.com/chongo/tech/comp/calc/
|
||||
.in -0.5i
|
||||
.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! :\-)
|
||||
|
@@ -17,8 +17,8 @@
|
||||
# received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
# 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
#
|
||||
# @(#) $Revision: 29.3 $
|
||||
# @(#) $Id: calcerr.tbl,v 29.3 2000/07/17 15:35:49 chongo Exp $
|
||||
# @(#) $Revision: 29.4 $
|
||||
# @(#) $Id: calcerr.tbl,v 29.4 2001/04/10 22:06:46 chongo Exp $
|
||||
# @(#) $Source: /usr/local/src/cmd/calc/RCS/calcerr.tbl,v $
|
||||
#
|
||||
# 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_FGETLINE1 Non-file argument for fgetline
|
||||
E_FGETLINE2 File not open for reading for fgetline
|
||||
E_FGETWORD1 Non-file argument for fgetword
|
||||
E_FGETWORD2 File not open for reading for fgetword
|
||||
E_FGETFIELD1 Non-file argument for fgetfield
|
||||
E_FGETFIELD2 File not open for reading for fgetfield
|
||||
E_REWIND1 Non-file argument for rewind
|
||||
E_FILES Non-integer argument for files
|
||||
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.
|
||||
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
*
|
||||
* @(#) $Revision: 29.3 $
|
||||
* @(#) $Id: cmath.h,v 29.3 2000/07/17 15:35:49 chongo Exp $
|
||||
* @(#) $Revision: 29.4 $
|
||||
* @(#) $Id: cmath.h,v 29.4 2001/05/29 00:16:53 chongo Exp $
|
||||
* @(#) $Source: /usr/local/src/cmd/calc/RCS/cmath.h,v $
|
||||
*
|
||||
* Under source code control: 1993/07/30 19:42:45
|
||||
@@ -32,7 +32,11 @@
|
||||
#define __CMATH_H__
|
||||
|
||||
|
||||
#include "qmath.h"
|
||||
#if defined(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.
|
||||
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
*
|
||||
* @(#) $Revision: 29.4 $
|
||||
* @(#) $Id: codegen.c,v 29.4 2001/03/17 21:31:47 chongo Exp $
|
||||
* @(#) $Revision: 29.6 $
|
||||
* @(#) $Id: codegen.c,v 29.6 2001/05/08 06:29:24 chongo Exp $
|
||||
* @(#) $Source: /usr/local/src/cmd/calc/RCS/codegen.c,v $
|
||||
*
|
||||
* Under source code control: 1990/02/15 01:48:13
|
||||
@@ -127,6 +127,7 @@ getcommands(BOOL toplevel)
|
||||
if (!toplevel)
|
||||
enterfilescope();
|
||||
for (;;) {
|
||||
int i;
|
||||
(void) tokenmode(TM_NEWLINES);
|
||||
switch (gettoken()) {
|
||||
|
||||
@@ -144,10 +145,14 @@ getcommands(BOOL toplevel)
|
||||
return;
|
||||
|
||||
case T_HELP:
|
||||
for (;;) {
|
||||
for (i=1;;i++) {
|
||||
switch(getfilename(name, NULL)) {
|
||||
case 1:
|
||||
strcpy(name, DEFAULTCALCHELP);
|
||||
case -1:
|
||||
if(i == 1) {
|
||||
strcpy(name, DEFAULTCALCHELP);
|
||||
givehelp(name);
|
||||
}
|
||||
break;
|
||||
case 0:
|
||||
givehelp(name);
|
||||
continue;
|
||||
@@ -522,9 +527,10 @@ getsimpledeclaration(int symtype)
|
||||
switch (gettoken()) {
|
||||
case T_SYMBOL:
|
||||
rescantoken();
|
||||
res = getonevariable(symtype);
|
||||
if (res)
|
||||
if (getonevariable(symtype)) {
|
||||
res = 1;
|
||||
addop(OP_POP);
|
||||
}
|
||||
continue;
|
||||
case T_COMMA:
|
||||
continue;
|
||||
|
66
config.c
66
config.c
@@ -19,8 +19,8 @@
|
||||
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
*
|
||||
* @(#) $Revision: 29.4 $
|
||||
* @(#) $Id: config.c,v 29.4 2000/07/17 15:35:49 chongo Exp $
|
||||
* @(#) $Revision: 29.7 $
|
||||
* @(#) $Id: config.c,v 29.7 2001/04/25 07:15:22 chongo Exp $
|
||||
* @(#) $Source: /usr/local/src/cmd/calc/RCS/config.c,v $
|
||||
*
|
||||
* Under source code control: 1991/07/20 00:21:56
|
||||
@@ -90,6 +90,7 @@ NAMETYPE configs[] = {
|
||||
{"ctrl-d", CONFIG_CTRL_D}, /* alias for ctrl_d */
|
||||
{"program", CONFIG_PROGRAM},
|
||||
{"basename", CONFIG_BASENAME},
|
||||
{"windows", CONFIG_WINDOWS},
|
||||
{"version", CONFIG_VERSION},
|
||||
{NULL, 0}
|
||||
};
|
||||
@@ -132,10 +133,15 @@ CONFIG oldstd = { /* backward compatible standard configuration */
|
||||
0, /* internal calc debug level */
|
||||
3, /* calc resource file 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 */
|
||||
NULL, /* our name */
|
||||
NULL, /* basename of our name */
|
||||
#if defined(_WIN32)
|
||||
TRUE, /* running under windows */
|
||||
#else
|
||||
FALSE, /* congrats, you are not using windows */
|
||||
#endif
|
||||
NULL /* version */
|
||||
};
|
||||
CONFIG newstd = { /* new non-backward compatible configuration */
|
||||
@@ -172,10 +178,15 @@ CONFIG newstd = { /* new non-backward compatible configuration */
|
||||
0, /* internal calc debug level */
|
||||
3, /* calc resource file 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 */
|
||||
NULL, /* our name */
|
||||
NULL, /* basename of our name */
|
||||
#if defined(_WIN32)
|
||||
TRUE, /* running under windows */
|
||||
#else
|
||||
FALSE, /* congrats, you are not using windows */
|
||||
#endif
|
||||
NULL /* version */
|
||||
};
|
||||
CONFIG *conf = NULL; /* loaded in at startup - current configuration */
|
||||
@@ -822,11 +833,15 @@ setconfig(int type, VALUE *vp)
|
||||
/*NOTREACHED*/
|
||||
|
||||
case CONFIG_BASENAME:
|
||||
math_error("The program config parameter is read-only");
|
||||
math_error("The basename config parameter is read-only");
|
||||
/*NOTREACHED*/
|
||||
|
||||
case CONFIG_WINDOWS:
|
||||
math_error("The windows config parameter is read-only");
|
||||
/*NOTREACHED*/
|
||||
|
||||
case CONFIG_VERSION:
|
||||
math_error("The program config parameter is read-only");
|
||||
math_error("The version config parameter is read-only");
|
||||
/*NOTREACHED*/
|
||||
|
||||
default:
|
||||
@@ -1028,20 +1043,18 @@ config_value(CONFIG *cfg, int type, VALUE *vp)
|
||||
break;
|
||||
|
||||
case CONFIG_TILDE:
|
||||
vp->v_type = V_STR;
|
||||
if (cfg->tilde_ok) {
|
||||
vp->v_str = makenewstring(TRUE_STRING);
|
||||
vp->v_num = itoq(1);
|
||||
} else {
|
||||
vp->v_str = makenewstring(FALSE_STRING);
|
||||
vp->v_num = itoq(0);
|
||||
}
|
||||
return;
|
||||
|
||||
case CONFIG_TAB:
|
||||
vp->v_type = V_STR;
|
||||
if (cfg->tab_ok) {
|
||||
vp->v_str = makenewstring(TRUE_STRING);
|
||||
vp->v_num = itoq(1);
|
||||
} else {
|
||||
vp->v_str = makenewstring(FALSE_STRING);
|
||||
vp->v_num = itoq(0);
|
||||
}
|
||||
return;
|
||||
|
||||
@@ -1082,20 +1095,18 @@ config_value(CONFIG *cfg, int type, VALUE *vp)
|
||||
break;
|
||||
|
||||
case CONFIG_LEADZERO:
|
||||
vp->v_type = V_STR;
|
||||
if (cfg->leadzero) {
|
||||
vp->v_str = makenewstring(TRUE_STRING);
|
||||
vp->v_num = itoq(1);
|
||||
} else {
|
||||
vp->v_str = makenewstring(FALSE_STRING);
|
||||
vp->v_num = itoq(0);
|
||||
}
|
||||
return;
|
||||
|
||||
case CONFIG_FULLZERO:
|
||||
vp->v_type = V_STR;
|
||||
if (cfg->fullzero) {
|
||||
vp->v_str = makenewstring(TRUE_STRING);
|
||||
vp->v_num = itoq(1);
|
||||
} else {
|
||||
vp->v_str = makenewstring(FALSE_STRING);
|
||||
vp->v_num = itoq(0);
|
||||
}
|
||||
return;
|
||||
|
||||
@@ -1118,11 +1129,10 @@ config_value(CONFIG *cfg, int type, VALUE *vp)
|
||||
break;
|
||||
|
||||
case CONFIG_BLKVERBOSE:
|
||||
vp->v_type = V_STR;
|
||||
if (cfg->blkverbose) {
|
||||
vp->v_str = makenewstring(TRUE_STRING);
|
||||
vp->v_num = itoq(1);
|
||||
} else {
|
||||
vp->v_str = makenewstring(FALSE_STRING);
|
||||
vp->v_num = itoq(0);
|
||||
}
|
||||
return;
|
||||
|
||||
@@ -1159,11 +1169,10 @@ config_value(CONFIG *cfg, int type, VALUE *vp)
|
||||
break;
|
||||
|
||||
case CONFIG_VERBOSE_QUIT:
|
||||
vp->v_type = V_STR;
|
||||
if (cfg->verbose_quit) {
|
||||
vp->v_str = makenewstring(TRUE_STRING);
|
||||
vp->v_num = itoq(1);
|
||||
} else {
|
||||
vp->v_str = makenewstring(FALSE_STRING);
|
||||
vp->v_num = itoq(0);
|
||||
}
|
||||
return;
|
||||
|
||||
@@ -1195,6 +1204,14 @@ config_value(CONFIG *cfg, int type, VALUE *vp)
|
||||
}
|
||||
return;
|
||||
|
||||
case CONFIG_WINDOWS:
|
||||
if (cfg->windows) {
|
||||
vp->v_num = itoq(1);
|
||||
} else {
|
||||
vp->v_num = itoq(0);
|
||||
}
|
||||
return;
|
||||
|
||||
case CONFIG_VERSION:
|
||||
vp->v_type = V_STR;
|
||||
if (cfg->version == NULL) {
|
||||
@@ -1295,6 +1312,7 @@ config_cmp(CONFIG *cfg1, CONFIG *cfg2)
|
||||
|
||||
(cfg1->version == NULL && cfg2->version != NULL) ||
|
||||
(cfg1->version != NULL && cfg2->version == NULL) ||
|
||||
cfg1->windows != cfg2->windows ||
|
||||
(cfg1->version != NULL && cfg2->version != NULL &&
|
||||
strcmp(cfg1->version, cfg2->version) != 0);
|
||||
}
|
||||
|
24
config.h
24
config.h
@@ -19,8 +19,8 @@
|
||||
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
*
|
||||
* @(#) $Revision: 29.6 $
|
||||
* @(#) $Id: config.h,v 29.6 2001/03/17 21:31:47 chongo Exp $
|
||||
* @(#) $Revision: 29.10 $
|
||||
* @(#) $Id: config.h,v 29.10 2001/05/29 00:16:53 chongo Exp $
|
||||
* @(#) $Source: /usr/local/src/cmd/calc/RCS/config.h,v $
|
||||
*
|
||||
* Under source code control: 1995/11/01 22:20:17
|
||||
@@ -35,9 +35,15 @@
|
||||
#define __CONFIG_H__
|
||||
|
||||
|
||||
#include "win32dll.h"
|
||||
#include "nametype.h"
|
||||
#include "qmath.h"
|
||||
#if defined(SRC) /* if we are building from the calc source tree */
|
||||
# include "win32dll.h"
|
||||
# include "nametype.h"
|
||||
# include "qmath.h"
|
||||
#else
|
||||
# include <calc/win32dll.h>
|
||||
# include <calc/nametype.h>
|
||||
# include <calc/qmath.h>
|
||||
#endif
|
||||
|
||||
|
||||
/*
|
||||
@@ -83,6 +89,7 @@
|
||||
#define CONFIG_PROGRAM 35
|
||||
#define CONFIG_BASENAME 36
|
||||
#define CONFIG_VERSION 37
|
||||
#define CONFIG_WINDOWS 38
|
||||
|
||||
|
||||
/*
|
||||
@@ -147,6 +154,7 @@ struct config {
|
||||
int ctrl_d; /* see CTRL_D_xyz below */
|
||||
char *program; /* our name */
|
||||
char *base_name; /* basename of our name */
|
||||
BOOL windows; /* TRUE => running under MS windows */
|
||||
char *version; /* calc version string */
|
||||
};
|
||||
typedef struct config CONFIG;
|
||||
@@ -158,7 +166,8 @@ typedef struct config CONFIG;
|
||||
#define RSCDBG_STDIN_FUNC (0x00000001) /* interactive func define debug */
|
||||
#define RSCDBG_FILE_FUNC (0x00000002) /* file read func define debug */
|
||||
#define RSCDBG_FUNC_INFO (0x00000004) /* print extra info for show func */
|
||||
#define RSCDBG_MASK (0x00000007)
|
||||
#define RSCDBG_PRINT_DBG (0x00000008) /* print debug messages */
|
||||
#define RSCDBG_MASK (0x0000000f)
|
||||
|
||||
|
||||
/*
|
||||
@@ -170,7 +179,8 @@ typedef struct config CONFIG;
|
||||
#define CALCDBG_BLOCK (0x00000008) /* block debug */
|
||||
#define CALCDBG_TTY (0x00000010) /* report TTY 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
|
||||
|
320
cscript/4dsphere.calc
Normal file
320
cscript/4dsphere.calc
Normal file
@@ -0,0 +1,320 @@
|
||||
#!/usr/local/bin/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.2 $
|
||||
* @(#) $Id: 4dsphere.calc,v 1.2 2001/05/29 00:48:46 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";
|
||||
}
|
@@ -17,8 +17,8 @@
|
||||
# received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
# 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
#
|
||||
# @(#) $Revision: 29.6 $
|
||||
# @(#) $Id: Makefile,v 29.6 2000/12/15 14:56:14 chongo Exp $
|
||||
# @(#) $Revision: 29.14 $
|
||||
# @(#) $Id: Makefile,v 29.14 2001/05/28 23:08:22 chongo Exp $
|
||||
# @(#) $Source: /usr/local/src/cmd/calc/cscript/RCS/Makefile,v $
|
||||
#
|
||||
# Under source code control: 1999/11/29 11:10:26
|
||||
@@ -39,8 +39,8 @@ MAKE_FILE = Makefile
|
||||
# Normally, the upper level makefile will set these values. We provide
|
||||
# a default here just in case you want to build from this directory.
|
||||
#
|
||||
BINDIR= /usr/local/bin
|
||||
#BINDIR= /usr/bin
|
||||
#BINDIR= /usr/local/bin
|
||||
BINDIR= /usr/bin
|
||||
#BINDIR= /usr/contrib/bin
|
||||
#
|
||||
SCRIPTDIR= ${BINDIR}/cscript
|
||||
@@ -59,6 +59,7 @@ CHMOD= chmod
|
||||
SED= sed
|
||||
SORT= sort
|
||||
FMT= fmt
|
||||
CMP= cmp
|
||||
|
||||
# The ${SCRIPT} list is the list of calc shell script files (without the .calc
|
||||
# extension) which will be installed.
|
||||
@@ -76,9 +77,11 @@ FMT= fmt
|
||||
#
|
||||
# make detaillist
|
||||
#
|
||||
SCRIPT= mersenne piforever plus simple square
|
||||
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 piforever.calc \
|
||||
plus.calc powerterm.calc simple.calc square.calc
|
||||
|
||||
# These files are found (but not built) in the distribution
|
||||
#
|
||||
@@ -88,9 +91,17 @@ DISTLIST= ${SCRIPT_SRC} ${MAKE_FILE} README
|
||||
#
|
||||
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
|
||||
#
|
||||
all: ${SCRIPT} ${SCRIPT_SRC} .all
|
||||
all: ${TARGETS} .all
|
||||
|
||||
# used by the upper level Makefile to determine if we have done all
|
||||
#
|
||||
@@ -114,7 +125,7 @@ all: ${SCRIPT} ${SCRIPT_SRC} .all
|
||||
distlist: ${DISTLIST}
|
||||
${Q}for i in ${DISTLIST}; do \
|
||||
echo cscript/$$i; \
|
||||
done | ${SORT}
|
||||
done | LANG=C ${SORT}
|
||||
|
||||
distdir:
|
||||
${Q}echo cscript
|
||||
@@ -131,7 +142,7 @@ detaillist:
|
||||
else \
|
||||
echo $$i; \
|
||||
fi; \
|
||||
done | ${SORT}) | ${FMT} -70 | \
|
||||
done | LANG=C ${SORT}) | ${FMT} -70 | \
|
||||
${SED} -e '1s/xxxxxxx/SCRIPT=/' -e '2,$$s/^/ /' \
|
||||
-e 's/$$/ \\/' -e '$$s/ \\$$//'
|
||||
${Q}echo
|
||||
@@ -142,7 +153,7 @@ detaillist:
|
||||
else \
|
||||
echo $$i.calc; \
|
||||
fi; \
|
||||
done | ${SORT}) | ${FMT} -70 | \
|
||||
done | LANG=C ${SORT}) | ${FMT} -70 | \
|
||||
${SED} -e '1s/xxxxxxxxxxx/SCRIPT_SRC=/' -e '2,$$s/^/ /' \
|
||||
-e 's/$$/ \\/' -e '$$s/ \\$$//'
|
||||
|
||||
@@ -184,7 +195,7 @@ depend:
|
||||
${Q}echo "" >> Makefile
|
||||
${Q}${SED} -n '3,$$p' makedep.out >> Makefile
|
||||
-${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'; \
|
||||
mv -f Makefile.bak Makefile; \
|
||||
else \
|
||||
@@ -199,36 +210,71 @@ depend:
|
||||
fi; \
|
||||
fi
|
||||
|
||||
##
|
||||
#
|
||||
# rpm rules
|
||||
#
|
||||
##
|
||||
|
||||
echo_SCRIPT: ${MAKE_FILE}
|
||||
@echo ${SCRIPT}
|
||||
|
||||
|
||||
echo_install.list: ${MAKE_FILE}
|
||||
@for i in ${SCRIPT}; do \
|
||||
echo ${SCRIPTDIR}/$$i; \
|
||||
done
|
||||
##
|
||||
#
|
||||
# Utility rules
|
||||
#
|
||||
##
|
||||
|
||||
clean:
|
||||
-rm -f makedep.out
|
||||
|
||||
clobber:
|
||||
-rm -f ${SCRIPT}
|
||||
-rm -f ${TARGETS}
|
||||
|
||||
install: all
|
||||
-${Q}if [ ! -d ${BINDIR} ]; then \
|
||||
echo mkdir ${BINDIR}; \
|
||||
mkdir ${BINDIR}; \
|
||||
echo mkdir ${BINDIR}; \
|
||||
mkdir ${BINDIR}; \
|
||||
echo ${CHMOD} 0755 ${BINDIR}; \
|
||||
${CHMOD} 0755 ${BINDIR}; \
|
||||
else \
|
||||
true; \
|
||||
fi
|
||||
-${Q}if [ ! -d ${SCRIPTDIR} ]; then \
|
||||
echo mkdir ${SCRIPTDIR}; \
|
||||
mkdir ${SCRIPTDIR}; \
|
||||
echo mkdir ${SCRIPTDIR}; \
|
||||
mkdir ${SCRIPTDIR}; \
|
||||
echo ${CHMOD} 0755 ${SCRIPTDIR}; \
|
||||
${CHMOD} 0755 ${SCRIPTDIR}; \
|
||||
else \
|
||||
true; \
|
||||
fi
|
||||
${Q}for i in ${SCRIPT}; do \
|
||||
echo rm -f ${SCRIPTDIR}/$$i; \
|
||||
rm -f ${SCRIPTDIR}/$$i; \
|
||||
echo cp $$i ${SCRIPTDIR}; \
|
||||
cp $$i ${SCRIPTDIR}; \
|
||||
echo ${CHMOD} 0555 ${SCRIPTDIR}/$$i; \
|
||||
if ${CMP} -s $$i ${SCRIPTDIR}/$$i; then \
|
||||
true; \
|
||||
else \
|
||||
rm -f ${SCRIPTDIR}/$$i.new; \
|
||||
cp -f $$i ${SCRIPTDIR}/$$i.new; \
|
||||
${CHMOD} 0555 ${SCRIPTDIR}/$$i; \
|
||||
mv -f ${SCRIPTDIR}/$$i.new ${SCRIPTDIR}/$$i; \
|
||||
echo "installed ${SCRIPTDIR}/$$i"; \
|
||||
fi; \
|
||||
done
|
||||
|
||||
# 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
|
||||
rm -f $@
|
||||
${SED} -e "1s:^#!/usr/local/src/cmd/calc/calc:#!${BINDIR}/calc:" $?>$@
|
||||
@@ -241,6 +287,10 @@ plus: plus.calc
|
||||
rm -f $@
|
||||
${SED} -e "1s:^#!/usr/local/src/cmd/calc/calc:#!${BINDIR}/calc:" $?>$@
|
||||
${CHMOD} +x $@
|
||||
powerterm: powerterm.calc
|
||||
rm -f $@
|
||||
${SED} -e "1s:^#!/usr/local/src/cmd/calc/calc:#!${BINDIR}/calc:" $?>$@
|
||||
${CHMOD} +x $@
|
||||
simple: simple.calc
|
||||
rm -f $@
|
||||
${SED} -e "1s:^#!/usr/local/src/cmd/calc/calc:#!${BINDIR}/calc:" $?>$@
|
||||
|
@@ -19,6 +19,23 @@ For more info, see:
|
||||
|
||||
=-=
|
||||
|
||||
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
|
||||
|
||||
|
||||
fproduct filename term ...
|
||||
|
||||
Write the big Endian product of terms to a file. Use - for stdout.
|
||||
|
||||
|
||||
mersenne exp
|
||||
|
||||
Print the value of 2^exp-1.
|
||||
@@ -34,6 +51,12 @@ plus arg ...
|
||||
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
|
||||
|
||||
A trivial example of a calc shell script.
|
||||
@@ -54,8 +77,8 @@ simple
|
||||
## received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
## 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
##
|
||||
## @(#) $Revision: 29.4 $
|
||||
## @(#) $Id: README,v 29.4 2000/06/07 14:02:59 chongo Exp $
|
||||
## @(#) $Revision: 29.7 $
|
||||
## @(#) $Id: README,v 29.7 2001/05/28 23:08:22 chongo Exp $
|
||||
## @(#) $Source: /usr/local/src/cmd/calc/cscript/RCS/README,v $
|
||||
##
|
||||
## Under source code control: 1999/12/17 10:23:40
|
||||
|
88
cscript/fproduct.calc
Normal file
88
cscript/fproduct.calc
Normal file
@@ -0,0 +1,88 @@
|
||||
#!/usr/local/bin/calc -q -s -f
|
||||
/*
|
||||
* fproduct - write the big Endian product of terms to a file
|
||||
*
|
||||
* usage:
|
||||
* fproduct filename term [term ...]
|
||||
*
|
||||
* filename where to write the product, use - for stdout
|
||||
* term ... terms to multiply
|
||||
*
|
||||
* 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.1 $
|
||||
* @(#) $Id: fproduct.calc,v 29.1 2001/04/08 08:25:15 chongo Exp $
|
||||
* @(#) $Source: /usr/local/src/cmd/calc/cscript/RCS/fproduct.calc,v $
|
||||
*
|
||||
* Under source code control: 2001/04/07 20:13: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
|
||||
*/
|
||||
argc = argv();
|
||||
if (argc < 2) {
|
||||
fprintf(files(2), "usage: %s term [term ...]\n", argv(0));
|
||||
exit;
|
||||
}
|
||||
filename = argv(1);
|
||||
|
||||
|
||||
/*
|
||||
* build the product
|
||||
*/
|
||||
product = 1;
|
||||
for (i=2; i < argc; ++i) {
|
||||
product *= eval(argv(i));
|
||||
}
|
||||
product = abs(product);
|
||||
|
||||
|
||||
/*
|
||||
* open the file for writing, "-" is stdout
|
||||
*/
|
||||
if (filename == "-") {
|
||||
fd = files(1);
|
||||
} else {
|
||||
fd = fopen(filename, "w");
|
||||
if (!isfile(fd)) quit "be2file: cannot open file for writing";
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* write the octets to the file
|
||||
*
|
||||
* The most significant bits of the integer become the first file octets.
|
||||
*/
|
||||
if (product > 0) {
|
||||
octlen = int((highbit(product)+8) / 8);
|
||||
for (i=octlen-1; i >= 0; --i) {
|
||||
fputc(fd, char(product >> (i*8)));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* cleanup
|
||||
*/
|
||||
if (filename != "-") {
|
||||
fclose(fd);
|
||||
}
|
185
cscript/powerterm.calc
Normal file
185
cscript/powerterm.calc
Normal file
@@ -0,0 +1,185 @@
|
||||
#!/usr/local/bin/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.5 $
|
||||
* @(#) $Id: powerterm.calc,v 29.5 2001/04/25 08:41:36 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;
|
223
custom/Makefile
223
custom/Makefile
@@ -18,8 +18,8 @@
|
||||
# received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
# 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
#
|
||||
# @(#) $Revision: 29.5 $
|
||||
# @(#) $Id: Makefile,v 29.5 2001/03/17 21:39:24 chongo Exp $
|
||||
# @(#) $Revision: 29.13 $
|
||||
# @(#) $Id: Makefile,v 29.13 2001/05/28 23:54:53 chongo Exp $
|
||||
# @(#) $Source: /usr/local/src/cmd/calc/custom/RCS/Makefile,v $
|
||||
#
|
||||
# Under source code control: 1997/03/09 02:28:54
|
||||
@@ -93,21 +93,28 @@ Q=@
|
||||
#
|
||||
# where to install things
|
||||
#
|
||||
# ${TOPDIR} is the directory under which the calc directory will be placed.
|
||||
# ${LIBDIR} is where the *.cal, *.h, *.a, bindings and help dir are installed.
|
||||
# ${HELPDIR} is where the help directory is installed.
|
||||
# ${CUSTOMLIBDIR} is where custom lib files are installed.
|
||||
# ${CUSTOMHELPDIR} is where custom help files are installed.
|
||||
# ${SHAREDIR} where most common shared files are kept
|
||||
# ${INCDIR} where most .h files are kept
|
||||
#
|
||||
TOPDIR= /usr/local/lib
|
||||
#TOPDIR= /usr/lib
|
||||
#TOPDIR= /usr/libdata
|
||||
#TOPDIR= /usr/contrib/lib
|
||||
# ${CSHAREDIR} where most common shared calc files are kept
|
||||
# ${HELPDIR} where the help directory is installed.
|
||||
# ${INCDIRCALC} where the calc include files are installed
|
||||
# ${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
|
||||
HELPDIR= ${LIBDIR}/help
|
||||
CUSTOMLIBDIR= ${LIBDIR}/custom
|
||||
CUSTOMHELPDIR= ${HELPDIR}/custhelp
|
||||
#SHAREDIR= /usr/local/lib
|
||||
SHAREDIR= /usr/share
|
||||
#
|
||||
#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
|
||||
|
||||
# Normally, the upper level makefile will set these values. We provide
|
||||
# a default here just in case you want to build from this directory.
|
||||
@@ -288,9 +295,13 @@ DISTLIST= ${CUSTCALC_SRC} ${CUSTOM_CALC_FILES} ${CUSTOM_HELP} \
|
||||
#
|
||||
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
|
||||
#
|
||||
TARGETS= libcustcalc.a ${CUSTCALC_OBJ}
|
||||
TARGETS= ${CALC_LIBCUSTOM} ${CUSTCALC_OBJ}
|
||||
|
||||
# required vars
|
||||
#
|
||||
@@ -303,6 +314,7 @@ SED= sed
|
||||
MAKEDEPEND= makedepend
|
||||
CHMOD= chmod
|
||||
SORT= sort
|
||||
CMP= cmp
|
||||
|
||||
##
|
||||
#
|
||||
@@ -313,7 +325,7 @@ SORT= sort
|
||||
all: ${TARGETS} ${INSTALL_H_SRC} ${CUSTOM_CALC_FILES} \
|
||||
${CUSTOM_HELP} ${MAKE_FILE} .all
|
||||
|
||||
libcustcalc.a: ${CUSTCALC_OBJ} ${MAKE_FILE} ../Makefile
|
||||
libcustcalc.a: ${CUSTCALC_OBJ} ${MAKE_FILE} ../${MAKE_FILE}
|
||||
-rm -f libcustcalc.a
|
||||
ar qc libcustcalc.a ${CUSTCALC_OBJ}
|
||||
${RANLIB} libcustcalc.a
|
||||
@@ -422,7 +434,7 @@ depend:
|
||||
${Q}echo forming custom dependency list
|
||||
${Q}echo "# DO NOT DELETE THIS LINE -- make depend depends on it." > \
|
||||
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 \
|
||||
echo "$$i" | ${SED} 's/^\(.*\)\.c/\1.o: \1.c/'; \
|
||||
done >> skel/custom/makedep.out
|
||||
@@ -432,9 +444,10 @@ depend:
|
||||
${Q}mv Makefile Makefile.bak
|
||||
${Q}${SED} -n '1,/^# DO NOT DELETE THIS LINE/p' Makefile.bak > Makefile
|
||||
${Q}echo "" >> Makefile
|
||||
${Q}${SED} -n '3,$$p' skel/custom/makedep.out | ${SORT} -u >> Makefile
|
||||
${Q}${SED} -n '3,$$p' skel/custom/makedep.out | \
|
||||
LANG=C ${SORT} -u >> Makefile
|
||||
-${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'; \
|
||||
mv -f Makefile.bak Makefile; \
|
||||
else \
|
||||
@@ -449,6 +462,35 @@ depend:
|
||||
fi; \
|
||||
fi
|
||||
|
||||
##
|
||||
#
|
||||
# rpm rules
|
||||
#
|
||||
##
|
||||
|
||||
echo_INSTALL_H_SRC: ${MAKE_FILE}
|
||||
@echo ${INSTALL_H_SRC}
|
||||
|
||||
echo_CUSTOM_CALC_FILES: ${MAKE_FILE}
|
||||
@echo ${CUSTOM_CALC_FILES}
|
||||
|
||||
echo_CUSTOM_HELP: ${MAKE_FILE}
|
||||
@echo ${CUSTOM_HELP}
|
||||
|
||||
echo_install.list: ${MAKE_FILE}
|
||||
@for i in ${INSTALL_H_SRC}; do \
|
||||
echo ${CUSTOMINCDIR}/$$i; \
|
||||
done
|
||||
@for i in ${CUSTOM_HELP}; do \
|
||||
echo ${CUSTOMHELPDIR}/$$i; \
|
||||
done
|
||||
@for i in ${CUSTOM_CALC_FILES}; do \
|
||||
echo ${CUSTOMLIBDIR}/$$i; \
|
||||
done
|
||||
@for i in ${CALC_LIBCUSTOM}; do \
|
||||
echo ${CUSTOMLIBDIR}/$$i; \
|
||||
done
|
||||
|
||||
##
|
||||
#
|
||||
# Utility rules
|
||||
@@ -463,70 +505,119 @@ clobber:
|
||||
rm -f .all Makefile.tmp Makefile.bak
|
||||
|
||||
install: all
|
||||
-${Q}if [ ! -d ${TOPDIR} ]; then \
|
||||
echo mkdir ${TOPDIR}; \
|
||||
mkdir ${TOPDIR}; \
|
||||
-${Q}if [ ! -d ${SHAREDIR} ]; then \
|
||||
echo mkdir ${SHAREDIR}; \
|
||||
mkdir ${SHAREDIR}; \
|
||||
echo ${CHMOD} 0755 ${SHAREDIR}; \
|
||||
${CHMOD} 0755 ${SHAREDIR}; \
|
||||
else \
|
||||
true; \
|
||||
fi
|
||||
-${Q}if [ ! -d ${LIBDIR} ]; then \
|
||||
echo mkdir ${LIBDIR}; \
|
||||
mkdir ${LIBDIR}; \
|
||||
-${Q}if [ ! -d ${INCDIR} ]; then \
|
||||
echo mkdir ${INCDIR}; \
|
||||
mkdir ${INCDIR}; \
|
||||
echo ${CHMOD} 0755 ${INCDIR}; \
|
||||
${CHMOD} 0755 ${INCDIR}; \
|
||||
else \
|
||||
true; \
|
||||
fi
|
||||
-${Q}if [ ! -d ${CSHAREDIR} ]; then \
|
||||
echo mkdir ${CSHAREDIR}; \
|
||||
mkdir ${CSHAREDIR}; \
|
||||
echo ${CHMOD} 0755 ${CSHAREDIR}; \
|
||||
${CHMOD} 0755 ${CSHAREDIR}; \
|
||||
else \
|
||||
true; \
|
||||
fi
|
||||
-${Q}if [ ! -d ${INCDIRCALC} ]; then \
|
||||
echo mkdir ${INCDIRCALC}; \
|
||||
mkdir ${INCDIRCALC}; \
|
||||
echo ${CHMOD} 0755 ${INCDIRCALC}; \
|
||||
${CHMOD} 0755 ${INCDIRCALC}; \
|
||||
else \
|
||||
true; \
|
||||
fi
|
||||
-${Q}if [ ! -d ${HELPDIR} ]; then \
|
||||
echo mkdir ${HELPDIR}; \
|
||||
mkdir ${HELPDIR}; \
|
||||
echo ${CHMOD} 0755 ${HELPDIR}; \
|
||||
${CHMOD} 0755 ${HELPDIR}; \
|
||||
else \
|
||||
true; \
|
||||
fi
|
||||
-${Q}if [ ! -d ${CUSTOMLIBDIR} ]; then \
|
||||
echo mkdir ${CUSTOMLIBDIR}; \
|
||||
mkdir ${CUSTOMLIBDIR}; \
|
||||
echo ${CHMOD} 0755 ${CUSTOMLIBDIR}; \
|
||||
${CHMOD} 0755 ${CUSTOMLIBDIR}; \
|
||||
else \
|
||||
true; \
|
||||
fi
|
||||
-${Q}if [ ! -d ${CUSTOMHELPDIR} ]; then \
|
||||
echo mkdir ${CUSTOMHELPDIR}; \
|
||||
mkdir ${CUSTOMHELPDIR}; \
|
||||
echo ${CHMOD} 0755 ${CUSTOMHELPDIR}; \
|
||||
${CHMOD} 0755 ${CUSTOMHELPDIR}; \
|
||||
else \
|
||||
true; \
|
||||
fi
|
||||
${Q}for i in ${INSTALL_H_SRC} /dev/null; do \
|
||||
if [ X$$i = X/dev/null ]; then continue; fi; \
|
||||
echo rm -f ${CUSTOMLIBDIR}/$$i; \
|
||||
rm -f ${CUSTOMLIBDIR}/$$i; \
|
||||
echo cp $$i ${CUSTOMLIBDIR}; \
|
||||
cp $$i ${CUSTOMLIBDIR}; \
|
||||
echo ${CHMOD} 0444 ${CUSTOMLIBDIR}/$$i; \
|
||||
${CHMOD} 0444 ${CUSTOMLIBDIR}/$$i; \
|
||||
-${Q}if [ ! -d ${CUSTOMINCDIR} ]; then \
|
||||
echo mkdir ${CUSTOMINCDIR}; \
|
||||
mkdir ${CUSTOMINCDIR}; \
|
||||
echo ${CHMOD} 0755 ${CUSTOMINCDIR}; \
|
||||
${CHMOD} 0755 ${CUSTOMINCDIR}; \
|
||||
else \
|
||||
true; \
|
||||
fi
|
||||
-${Q}for i in ${INSTALL_H_SRC}; do \
|
||||
rm -f tmp; \
|
||||
${SED} -e 's/^\(#[ ]*include[ ][ ]*\)"/\1"calc\//' $$i > tmp; \
|
||||
if ${CMP} -s tmp ${CUSTOMINCDIR}/$$i; then \
|
||||
true; \
|
||||
else \
|
||||
rm -f ${CUSTOMINCDIR}/$$i; \
|
||||
cp -f tmp ${INCDIRCALC}/$$i.new; \
|
||||
cp -f $$i ${CUSTOMINCDIR}/$$i.new; \
|
||||
${CHMOD} 0444 ${CUSTOMINCDIR}/$$i.new; \
|
||||
mv -f ${CUSTOMINCDIR}/$$i.new ${CUSTOMINCDIR}/$$i; \
|
||||
echo "installed ${CUSTOMINCDIR}/$$i"; \
|
||||
fi; \
|
||||
done
|
||||
${Q}for i in ${CUSTOM_CALC_FILES}; do \
|
||||
echo rm -f ${CUSTOMLIBDIR}/$$i; \
|
||||
-${Q}rm -f tmp
|
||||
-${Q}for i in ${CUSTOM_CALC_FILES}; do \
|
||||
if ${CMP} -s $$i ${CUSTOMLIBDIR}/$$i; then \
|
||||
true; \
|
||||
else \
|
||||
rm -f ${CUSTOMLIBDIR}/$$i; \
|
||||
echo cp $$i ${CUSTOMLIBDIR}; \
|
||||
cp $$i ${CUSTOMLIBDIR}; \
|
||||
echo ${CHMOD} 0444 ${CUSTOMLIBDIR}/$$i; \
|
||||
${CHMOD} 0444 ${CUSTOMLIBDIR}/$$i; \
|
||||
cp -f $$i ${CUSTOMLIBDIR}/$$i; \
|
||||
${CHMOD} 0444 ${CUSTOMLIBDIR}/$$i.new; \
|
||||
mv -f ${CUSTOMLIBDIR}/$$i.new ${CUSTOMLIBDIR}/$$i; \
|
||||
echo "installed ${CUSTOMLIBDIR}/$$i"; \
|
||||
fi; \
|
||||
done
|
||||
${Q}for i in ${CUSTOM_HELP}; do \
|
||||
echo rm -f ${CUSTOMHELPDIR}/$$i; \
|
||||
-${Q}for i in ${CUSTOM_HELP}; do \
|
||||
if ${CMP} -s $$i ${CUSTOMHELPDIR}/$$i; then \
|
||||
true; \
|
||||
else \
|
||||
rm -f ${CUSTOMHELPDIR}/$$i; \
|
||||
echo cp $$i ${CUSTOMHELPDIR}; \
|
||||
cp $$i ${CUSTOMHELPDIR}; \
|
||||
echo ${CHMOD} 0444 ${CUSTOMHELPDIR}/$$i; \
|
||||
${CHMOD} 0444 ${CUSTOMHELPDIR}/$$i; \
|
||||
cp -f $$i ${CUSTOMHELPDIR}/$$i.new; \
|
||||
${CHMOD} 0444 ${CUSTOMHELPDIR}/$$i.new; \
|
||||
mv -f ${CUSTOMHELPDIR}/$$i.new ${CUSTOMHELPDIR}/$$i; \
|
||||
echo "installed ${CUSTOMHELPDIR}/$$i"; \
|
||||
fi; \
|
||||
done
|
||||
-${Q}if [ ! -z ${ALLOW_CUSTOM} ]; then \
|
||||
echo "rm -f ${CUSTOMLIBDIR}/libcustcalc.a"; \
|
||||
rm -f ${CUSTOMLIBDIR}/libcustcalc.a; \
|
||||
echo "cp libcustcalc.a ${CUSTOMLIBDIR}/libcustcalc.a"; \
|
||||
cp libcustcalc.a ${CUSTOMLIBDIR}/libcustcalc.a; \
|
||||
echo "${CHMOD} 0644 ${CUSTOMLIBDIR}/libcustcalc.a"; \
|
||||
if ${CMP} -s libcustcalc.a ${CUSTOMLIBDIR}/libcustcalc.a; then \
|
||||
true; \
|
||||
else \
|
||||
rm -f ${CUSTOMLIBDIR}/libcustcalc.a.new; \
|
||||
cp -f libcustcalc.a ${CUSTOMLIBDIR}/libcustcalc.a.new; \
|
||||
${CHMOD} 0644 ${CUSTOMLIBDIR}/libcustcalc.a; \
|
||||
echo "${RANLIB} ${CUSTOMLIBDIR}/libcustcalc.a"; \
|
||||
mv -f ${CUSTOMLIBDIR}/libcustcalc.a.new \
|
||||
${CUSTOMLIBDIR}/libcustcalc.a; \
|
||||
${RANLIB} ${CUSTOMLIBDIR}/libcustcalc.a; \
|
||||
echo "installed ${CUSTOMLIBDIR}/libcustcalc.a"; \
|
||||
fi; \
|
||||
fi
|
||||
|
||||
##
|
||||
@@ -541,9 +632,8 @@ install: all
|
||||
c_argv.o: ../alloc.h
|
||||
c_argv.o: ../block.h
|
||||
c_argv.o: ../byteswap.h
|
||||
c_argv.o: ../calcerr.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: ../config.h
|
||||
c_argv.o: ../custom.h
|
||||
@@ -559,17 +649,17 @@ c_argv.o: ../longbits.h
|
||||
c_argv.o: ../md5.h
|
||||
c_argv.o: ../nametype.h
|
||||
c_argv.o: ../qmath.h
|
||||
c_argv.o: ../shs1.h
|
||||
c_argv.o: ../shs.h
|
||||
c_argv.o: ../shs1.h
|
||||
c_argv.o: ../string.h
|
||||
c_argv.o: ../value.h
|
||||
c_argv.o: ../win32dll.h
|
||||
c_argv.o: ../zmath.h
|
||||
c_argv.o: c_argv.c
|
||||
c_devnull.o: ../alloc.h
|
||||
c_devnull.o: ../block.h
|
||||
c_devnull.o: ../byteswap.h
|
||||
c_devnull.o: ../calcerr.h
|
||||
c_devnull.o: c_devnull.c
|
||||
c_devnull.o: ../cmath.h
|
||||
c_devnull.o: ../config.h
|
||||
c_devnull.o: ../custom.h
|
||||
@@ -585,17 +675,17 @@ c_devnull.o: ../longbits.h
|
||||
c_devnull.o: ../md5.h
|
||||
c_devnull.o: ../nametype.h
|
||||
c_devnull.o: ../qmath.h
|
||||
c_devnull.o: ../shs1.h
|
||||
c_devnull.o: ../shs.h
|
||||
c_devnull.o: ../shs1.h
|
||||
c_devnull.o: ../string.h
|
||||
c_devnull.o: ../value.h
|
||||
c_devnull.o: ../win32dll.h
|
||||
c_devnull.o: ../zmath.h
|
||||
c_devnull.o: c_devnull.c
|
||||
c_help.o: ../alloc.h
|
||||
c_help.o: ../block.h
|
||||
c_help.o: ../byteswap.h
|
||||
c_help.o: ../calcerr.h
|
||||
c_help.o: c_help.c
|
||||
c_help.o: ../cmath.h
|
||||
c_help.o: ../config.h
|
||||
c_help.o: ../custom.h
|
||||
@@ -611,19 +701,19 @@ c_help.o: ../longbits.h
|
||||
c_help.o: ../md5.h
|
||||
c_help.o: ../nametype.h
|
||||
c_help.o: ../qmath.h
|
||||
c_help.o: ../shs1.h
|
||||
c_help.o: ../shs.h
|
||||
c_help.o: ../shs1.h
|
||||
c_help.o: ../string.h
|
||||
c_help.o: ../value.h
|
||||
c_help.o: ../win32dll.h
|
||||
c_help.o: ../zmath.h
|
||||
c_help.o: c_help.c
|
||||
c_pzasusb8.o: ../alloc.h
|
||||
c_pzasusb8.o: ../block.h
|
||||
c_pzasusb8.o: ../byteswap.h
|
||||
c_pzasusb8.o: ../calcerr.h
|
||||
c_pzasusb8.o: ../cmath.h
|
||||
c_pzasusb8.o: ../config.h
|
||||
c_pzasusb8.o: c_pzasusb8.c
|
||||
c_pzasusb8.o: ../custom.h
|
||||
c_pzasusb8.o: ../endian_calc.h
|
||||
c_pzasusb8.o: ../hash.h
|
||||
@@ -637,21 +727,21 @@ c_pzasusb8.o: ../longbits.h
|
||||
c_pzasusb8.o: ../md5.h
|
||||
c_pzasusb8.o: ../nametype.h
|
||||
c_pzasusb8.o: ../qmath.h
|
||||
c_pzasusb8.o: ../shs1.h
|
||||
c_pzasusb8.o: ../shs.h
|
||||
c_pzasusb8.o: ../shs1.h
|
||||
c_pzasusb8.o: ../string.h
|
||||
c_pzasusb8.o: ../value.h
|
||||
c_pzasusb8.o: ../win32dll.h
|
||||
c_pzasusb8.o: ../zmath.h
|
||||
c_pzasusb8.o: c_pzasusb8.c
|
||||
c_sysinfo.o: ../alloc.h
|
||||
c_sysinfo.o: ../block.h
|
||||
c_sysinfo.o: ../byteswap.h
|
||||
c_sysinfo.o: ../calcerr.h
|
||||
c_sysinfo.o: ../calc.h
|
||||
c_sysinfo.o: ../calcerr.h
|
||||
c_sysinfo.o: ../cmath.h
|
||||
c_sysinfo.o: ../conf.h
|
||||
c_sysinfo.o: ../config.h
|
||||
c_sysinfo.o: c_sysinfo.c
|
||||
c_sysinfo.o: ../custom.h
|
||||
c_sysinfo.o: ../endian_calc.h
|
||||
c_sysinfo.o: ../fposval.h
|
||||
@@ -669,14 +759,15 @@ c_sysinfo.o: ../md5.h
|
||||
c_sysinfo.o: ../nametype.h
|
||||
c_sysinfo.o: ../prime.h
|
||||
c_sysinfo.o: ../qmath.h
|
||||
c_sysinfo.o: ../shs1.h
|
||||
c_sysinfo.o: ../shs.h
|
||||
c_sysinfo.o: ../shs1.h
|
||||
c_sysinfo.o: ../string.h
|
||||
c_sysinfo.o: ../value.h
|
||||
c_sysinfo.o: ../win32dll.h
|
||||
c_sysinfo.o: ../zmath.h
|
||||
c_sysinfo.o: ../zrand.h
|
||||
c_sysinfo.o: ../zrandom.h
|
||||
c_sysinfo.o: c_sysinfo.c
|
||||
custtbl.o: ../alloc.h
|
||||
custtbl.o: ../block.h
|
||||
custtbl.o: ../byteswap.h
|
||||
@@ -684,7 +775,6 @@ custtbl.o: ../calcerr.h
|
||||
custtbl.o: ../cmath.h
|
||||
custtbl.o: ../config.h
|
||||
custtbl.o: ../custom.h
|
||||
custtbl.o: custtbl.c
|
||||
custtbl.o: ../endian_calc.h
|
||||
custtbl.o: ../hash.h
|
||||
custtbl.o: ../have_const.h
|
||||
@@ -697,9 +787,10 @@ custtbl.o: ../longbits.h
|
||||
custtbl.o: ../md5.h
|
||||
custtbl.o: ../nametype.h
|
||||
custtbl.o: ../qmath.h
|
||||
custtbl.o: ../shs1.h
|
||||
custtbl.o: ../shs.h
|
||||
custtbl.o: ../shs1.h
|
||||
custtbl.o: ../string.h
|
||||
custtbl.o: ../value.h
|
||||
custtbl.o: ../win32dll.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.
|
||||
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
*
|
||||
* @(#) $Revision: 29.4 $
|
||||
* @(#) $Id: c_sysinfo.c,v 29.4 2000/07/17 15:37:12 chongo Exp $
|
||||
* @(#) $Revision: 29.5 $
|
||||
* @(#) $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 $
|
||||
*
|
||||
* 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 */
|
||||
};
|
||||
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},
|
||||
{"BASE1", "one less than base", NULL, (FULL)BASE},
|
||||
{"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.
|
||||
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
*
|
||||
* @(#) $Revision: 29.6 $
|
||||
* @(#) $Id: file.c,v 29.6 2001/03/17 21:31:47 chongo Exp $
|
||||
* @(#) $Revision: 29.7 $
|
||||
* @(#) $Id: file.c,v 29.7 2001/04/10 22:06:46 chongo Exp $
|
||||
* @(#) $Source: /usr/local/src/cmd/calc/RCS/file.c,v $
|
||||
*
|
||||
* Under source code control: 1991/07/20 00:21:56
|
||||
@@ -158,7 +158,7 @@ file_init(void)
|
||||
} else {
|
||||
fp = (FILE *) fdopen(i, "w");
|
||||
if (fp) {
|
||||
strcpy(files[idnum].mode, "w?");
|
||||
strcpy(files[idnum].mode, "w");
|
||||
files[idnum].reading = FALSE;
|
||||
}
|
||||
else
|
||||
@@ -207,7 +207,7 @@ openid(char *name, char *mode)
|
||||
int i;
|
||||
|
||||
if (idnum >= MAXFILES)
|
||||
return -77;
|
||||
return -E_FOPEN3;
|
||||
|
||||
fiop = &files[3];
|
||||
for (i = 3; i < MAXFILES; fiop++,i++) {
|
||||
@@ -243,11 +243,32 @@ openid(char *name, char *mode)
|
||||
fiop->reading = TRUE;
|
||||
fiop->writing = TRUE;
|
||||
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;
|
||||
else
|
||||
} else {
|
||||
fiop->writing = TRUE;
|
||||
}
|
||||
} else if (mode[0] == 'w' || mode[0] == 'a') {
|
||||
fiop->writing = TRUE;
|
||||
if (strchr(mode, '+') == NULL) {
|
||||
fiop->reading = FALSE;
|
||||
} else {
|
||||
fiop->reading = TRUE;
|
||||
}
|
||||
} else {
|
||||
fiop->reading = FALSE;
|
||||
fiop->writing = FALSE;
|
||||
}
|
||||
strcpy(fiop->mode, mode);
|
||||
return id;
|
||||
@@ -346,11 +367,32 @@ reopenid(FILEID id, char *mode, char *name)
|
||||
fiop->reading = TRUE;
|
||||
fiop->writing = TRUE;
|
||||
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;
|
||||
else
|
||||
} else {
|
||||
fiop->writing = TRUE;
|
||||
}
|
||||
} else if (mode[0] == 'w' || mode[0] == 'a') {
|
||||
fiop->writing = TRUE;
|
||||
if (strchr(mode, '+') == NULL) {
|
||||
fiop->reading = FALSE;
|
||||
} else {
|
||||
fiop->reading = TRUE;
|
||||
}
|
||||
} else {
|
||||
fiop->reading = FALSE;
|
||||
fiop->writing = FALSE;
|
||||
}
|
||||
strcpy(fiop->mode, mode);
|
||||
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
|
||||
* it is opened in the required manner ('r' for reading or 'w' for writing).
|
||||
* If mode is 0, then no open checks are made at all, and NULL is then
|
||||
* Find 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 writable is -1, then no open checks are made at all and NULL is then
|
||||
* returned if the id represents a closed file.
|
||||
*/
|
||||
FILEIO *
|
||||
findid(FILEID id, int mode)
|
||||
findid(FILEID id, int writable)
|
||||
{
|
||||
FILEIO *fiop; /* file structure */
|
||||
int i;
|
||||
@@ -383,21 +425,11 @@ findid(FILEID id, int mode)
|
||||
if (i == idnum)
|
||||
return NULL;
|
||||
|
||||
switch (mode) {
|
||||
case 'r':
|
||||
if (!fiop->reading)
|
||||
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*/
|
||||
if (writable >= 0) {
|
||||
if ((writable && !fiop->writing) ||
|
||||
(!writable && !fiop->reading)) {
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
return fiop;
|
||||
}
|
||||
@@ -409,7 +441,7 @@ findid(FILEID id, int mode)
|
||||
BOOL
|
||||
validid(FILEID id)
|
||||
{
|
||||
return (findid(id, 0) != NULL);
|
||||
return (findid(id, -1) != NULL);
|
||||
}
|
||||
|
||||
|
||||
@@ -505,7 +537,7 @@ errorid(FILEID id)
|
||||
{
|
||||
FILEIO *fiop; /* file structure */
|
||||
|
||||
fiop = findid(id, 0);
|
||||
fiop = findid(id, -1);
|
||||
if (fiop == NULL)
|
||||
return EOF;
|
||||
return (ferror(fiop->fp) != 0);
|
||||
@@ -520,7 +552,7 @@ eofid(FILEID id)
|
||||
{
|
||||
FILEIO *fiop; /* file structure */
|
||||
|
||||
fiop = findid(id, 0);
|
||||
fiop = findid(id, -1);
|
||||
if (fiop == NULL)
|
||||
return EOF;
|
||||
return (feof(fiop->fp) != 0);
|
||||
@@ -535,7 +567,7 @@ flushid(FILEID id)
|
||||
{
|
||||
FILEIO *fiop; /* file structure */
|
||||
|
||||
fiop = findid(id, 0);
|
||||
fiop = findid(id, -1);
|
||||
if (fiop == NULL)
|
||||
return 0;
|
||||
if (!fiop->writing || fiop->action == 'r')
|
||||
@@ -598,7 +630,7 @@ readid(FILEID id, int flags, char **retptr)
|
||||
totlen = 0;
|
||||
str = NULL;
|
||||
|
||||
fiop = findid(id, 'r');
|
||||
fiop = findid(id, FALSE);
|
||||
if (fiop == NULL)
|
||||
return 1;
|
||||
nlstop = (flags & 1);
|
||||
@@ -679,7 +711,7 @@ getcharid(FILEID id)
|
||||
FILEIO *fiop;
|
||||
FILEPOS fpos;
|
||||
|
||||
fiop = findid(id, 'r');
|
||||
fiop = findid(id, FALSE);
|
||||
if (fiop == NULL)
|
||||
return -2;
|
||||
if (fiop->action == 'w') {
|
||||
@@ -710,7 +742,7 @@ printid(FILEID id, int flags)
|
||||
/*
|
||||
* filewall - file is closed
|
||||
*/
|
||||
fiop = findid(id, 0);
|
||||
fiop = findid(id, -1);
|
||||
if (fiop == NULL) {
|
||||
if (flags & PRINT_UNAMBIG)
|
||||
math_fmt("FILE %d closed", id);
|
||||
@@ -787,7 +819,7 @@ idprintf(FILEID id, char *fmt, int count, VALUE **vals)
|
||||
BOOL printstring;
|
||||
BOOL printchar;
|
||||
|
||||
fiop = findid(id, 'w');
|
||||
fiop = findid(id, TRUE);
|
||||
if (fiop == NULL)
|
||||
return 1;
|
||||
if (fiop->action == 'r') {
|
||||
@@ -1014,7 +1046,7 @@ idfputc(FILEID id, int ch)
|
||||
FILEPOS fpos;
|
||||
|
||||
/* get the file info pointer */
|
||||
fiop = findid(id, 'w');
|
||||
fiop = findid(id, TRUE);
|
||||
if (fiop == NULL)
|
||||
return 1;
|
||||
if (fiop->action == 'r') {
|
||||
@@ -1049,7 +1081,7 @@ idungetc(FILEID id, int ch)
|
||||
{
|
||||
FILEIO *fiop;
|
||||
|
||||
fiop = findid(id, 'r');
|
||||
fiop = findid(id, FALSE);
|
||||
if (fiop == NULL)
|
||||
return -2;
|
||||
if (fiop->action != 'r')
|
||||
@@ -1072,7 +1104,7 @@ idfputs(FILEID id, char *str)
|
||||
FILEPOS fpos;
|
||||
|
||||
/* get the file info pointer */
|
||||
fiop = findid(id, 'w');
|
||||
fiop = findid(id, TRUE);
|
||||
if (fiop == NULL)
|
||||
return 1;
|
||||
|
||||
@@ -1110,7 +1142,7 @@ idfputstr(FILEID id, char *str)
|
||||
FILEPOS fpos;
|
||||
|
||||
/* get the file info pointer */
|
||||
fiop = findid(id, 'w');
|
||||
fiop = findid(id, TRUE);
|
||||
if (fiop == NULL)
|
||||
return 1;
|
||||
|
||||
@@ -1140,7 +1172,7 @@ int
|
||||
rewindid(FILEID id)
|
||||
{
|
||||
FILEIO *fiop;
|
||||
fiop = findid(id, 0);
|
||||
fiop = findid(id, -1);
|
||||
if (fiop == NULL)
|
||||
return 1;
|
||||
rewind(fiop->fp);
|
||||
@@ -1328,7 +1360,7 @@ getloc(FILEID id, ZVALUE *res)
|
||||
/*
|
||||
* convert id to stream
|
||||
*/
|
||||
fiop = findid(id, 0);
|
||||
fiop = findid(id, -1);
|
||||
if (fiop == NULL) {
|
||||
/* file not open */
|
||||
return -1;
|
||||
@@ -1353,7 +1385,7 @@ ftellid(FILEID id, ZVALUE *res)
|
||||
FILEPOS fpos; /* current file position */
|
||||
|
||||
/* get FILEIO */
|
||||
fiop = findid(id, 0);
|
||||
fiop = findid(id, -1);
|
||||
if (fiop == NULL)
|
||||
return -2;
|
||||
|
||||
@@ -1376,7 +1408,7 @@ fseekid(FILEID id, ZVALUE offset, int whence)
|
||||
int ret = 0; /* return code */
|
||||
|
||||
/* setup */
|
||||
fiop = findid(id, 0);
|
||||
fiop = findid(id, -1);
|
||||
if (fiop == NULL)
|
||||
return -2;
|
||||
|
||||
@@ -1501,7 +1533,7 @@ setloc(FILEID id, ZVALUE zpos)
|
||||
/*
|
||||
* convert id to stream
|
||||
*/
|
||||
fiop = findid(id, 0);
|
||||
fiop = findid(id, -1);
|
||||
if (fiop == NULL) {
|
||||
/* file not open */
|
||||
return -1;
|
||||
@@ -1669,7 +1701,7 @@ getsize(FILEID id, ZVALUE *res)
|
||||
/*
|
||||
* convert id to stream
|
||||
*/
|
||||
fiop = findid(id, 0);
|
||||
fiop = findid(id, -1);
|
||||
if (fiop == NULL) {
|
||||
/* file not open */
|
||||
return 1;
|
||||
@@ -1705,7 +1737,7 @@ get_device(FILEID id, ZVALUE *dev)
|
||||
/*
|
||||
* convert id to stream
|
||||
*/
|
||||
fiop = findid(id, 0);
|
||||
fiop = findid(id, -1);
|
||||
if (fiop == NULL) {
|
||||
/* file not open */
|
||||
return -1;
|
||||
@@ -1738,7 +1770,7 @@ get_inode(FILEID id, ZVALUE *inode)
|
||||
/*
|
||||
* convert id to stream
|
||||
*/
|
||||
fiop = findid(id, 0);
|
||||
fiop = findid(id, -1);
|
||||
if (fiop == NULL) {
|
||||
/* file not open */
|
||||
return -1;
|
||||
@@ -1774,7 +1806,7 @@ zfilesize(FILEID id)
|
||||
ZVALUE ret; /* file size as a ZVALUE return value */
|
||||
|
||||
/* file FILEIO */
|
||||
fiop = findid(id, 0);
|
||||
fiop = findid(id, -1);
|
||||
if (fiop == NULL) {
|
||||
/* return neg value for non-file error */
|
||||
itoz(-1, &ret);
|
||||
@@ -2144,7 +2176,7 @@ fscanfid(FILEID id, char *fmt, int count, VALUE **vals)
|
||||
FILE *fp;
|
||||
FILEPOS fpos;
|
||||
|
||||
fiop = findid(id, 'r');
|
||||
fiop = findid(id, FALSE);
|
||||
if (fiop == NULL)
|
||||
return -2;
|
||||
|
||||
@@ -2408,7 +2440,7 @@ isattyid(FILEID id)
|
||||
{
|
||||
FILEIO *fiop;
|
||||
|
||||
fiop = findid(id, 0);
|
||||
fiop = findid(id, -1);
|
||||
if (fiop == NULL)
|
||||
return -2;
|
||||
return isatty(fileno(fiop->fp));
|
||||
@@ -2445,7 +2477,7 @@ fsearch(FILEID id, char *str, ZVALUE start, ZVALUE end, ZVALUE *res)
|
||||
long k = 0;
|
||||
|
||||
/* get FILEIO */
|
||||
fiop = findid(id, 'r');
|
||||
fiop = findid(id, FALSE);
|
||||
if (fiop == NULL)
|
||||
return -2;
|
||||
|
||||
@@ -2564,7 +2596,7 @@ frsearch(FILEID id, char *str, ZVALUE first, ZVALUE last, ZVALUE *res)
|
||||
char *s; /* str comparison pointer */
|
||||
|
||||
/* get FILEIO */
|
||||
fiop = findid(id, 'r');
|
||||
fiop = findid(id, FALSE);
|
||||
if (fiop == NULL)
|
||||
return -2;
|
||||
|
||||
@@ -2641,7 +2673,7 @@ findfname(FILEID id)
|
||||
{
|
||||
FILEIO *fiop;
|
||||
|
||||
fiop = findid(id, 0);
|
||||
fiop = findid(id, -1);
|
||||
|
||||
if (fiop == 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.
|
||||
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
*
|
||||
* @(#) $Revision: 29.2 $
|
||||
* @(#) $Id: file.h,v 29.2 2000/06/07 14:02:13 chongo Exp $
|
||||
* @(#) $Revision: 29.4 $
|
||||
* @(#) $Id: file.h,v 29.4 2001/05/29 00:16:53 chongo Exp $
|
||||
* @(#) $Source: /usr/local/src/cmd/calc/RCS/file.h,v $
|
||||
*
|
||||
* Under source code control: 1996/05/24 05:55:58
|
||||
@@ -35,7 +35,11 @@
|
||||
#define __FILE_H__
|
||||
|
||||
|
||||
#include "have_fpos.h"
|
||||
#if defined(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 writing; /* TRUE if opened for writing */
|
||||
char action; /* most recent use for 'r', 'w' or 0 */
|
||||
char mode[3]; /* open mode */
|
||||
char mode[sizeof("rb+")];/* open mode */
|
||||
} FILEIO;
|
||||
|
||||
|
||||
@@ -85,7 +89,7 @@ typedef struct {
|
||||
/*
|
||||
* 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 fsetposid(FILEID id, FILEPOS *ptr);
|
||||
extern int get_open_siz(FILE *fp, ZVALUE *res);
|
||||
|
77
func.c
77
func.c
@@ -19,8 +19,8 @@
|
||||
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
*
|
||||
* @(#) $Revision: 29.7 $
|
||||
* @(#) $Id: func.c,v 29.7 2001/03/17 21:31:47 chongo Exp $
|
||||
* @(#) $Revision: 29.10 $
|
||||
* @(#) $Id: func.c,v 29.10 2001/05/29 00:41:22 chongo Exp $
|
||||
* @(#) $Source: /usr/local/src/cmd/calc/RCS/func.c,v $
|
||||
*
|
||||
* Under source code control: 1990/02/15 01:48:15
|
||||
@@ -1225,8 +1225,10 @@ f_primetest(int count, NUMBER **vals)
|
||||
{
|
||||
/* parse args */
|
||||
switch (count) {
|
||||
case 1: return itoq((long) qprimetest(vals[0], &_qone_, &_qone_));
|
||||
case 2: return itoq((long) qprimetest(vals[0], vals[1], &_qone_));
|
||||
case 1: return itoq((long) qprimetest(vals[0],
|
||||
qlink(&_qone_), qlink(&_qone_)));
|
||||
case 2: return itoq((long) qprimetest(vals[0],
|
||||
vals[1], qlink(&_qone_)));
|
||||
default: return itoq((long) qprimetest(vals[0], vals[1], vals[2]));
|
||||
}
|
||||
}
|
||||
@@ -2013,7 +2015,7 @@ f_ln(int count, VALUE **vals)
|
||||
return result;
|
||||
}
|
||||
ctmp.real = vals[0]->v_num;
|
||||
ctmp.imag = &_qzero_;
|
||||
ctmp.imag = qlink(&_qzero_);
|
||||
ctmp.links = 1;
|
||||
c = cln(&ctmp, err);
|
||||
break;
|
||||
@@ -3351,7 +3353,7 @@ f_trunc(int count, NUMBER **vals)
|
||||
{
|
||||
NUMBER *val;
|
||||
|
||||
val = &_qzero_;
|
||||
val = qlink(&_qzero_);
|
||||
if (count == 2)
|
||||
val = vals[1];
|
||||
return qtrunc(*vals, val);
|
||||
@@ -3433,7 +3435,7 @@ f_btrunc(int count, NUMBER **vals)
|
||||
{
|
||||
NUMBER *val;
|
||||
|
||||
val = &_qzero_;
|
||||
val = qlink(&_qzero_);
|
||||
if (count == 2)
|
||||
val = vals[1];
|
||||
return qbtrunc(*vals, val);
|
||||
@@ -3538,7 +3540,7 @@ f_ceil(VALUE *val)
|
||||
tmp.v_subtype = V_NOSUBTYPE;
|
||||
|
||||
tmp.v_type = V_NUM;
|
||||
tmp.v_num = &_qone_;
|
||||
tmp.v_num = qlink(&_qone_);
|
||||
apprvalue(val, &tmp, &tmp, &res);
|
||||
return res;
|
||||
}
|
||||
@@ -3555,9 +3557,9 @@ f_floor(VALUE *val)
|
||||
tmp2.v_subtype = V_NOSUBTYPE;
|
||||
|
||||
tmp1.v_type = V_NUM;
|
||||
tmp1.v_num = &_qone_;
|
||||
tmp1.v_num = qlink(&_qone_);
|
||||
tmp2.v_type = V_NUM;
|
||||
tmp2.v_num = &_qzero_;
|
||||
tmp2.v_num = qlink(&_qzero_);
|
||||
apprvalue(val, &tmp1, &tmp2, &res);
|
||||
return res;
|
||||
}
|
||||
@@ -4985,24 +4987,31 @@ f_fopen(VALUE *v1, VALUE *v2)
|
||||
/* initialize VALUE */
|
||||
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)
|
||||
return error_value(E_FOPEN1);
|
||||
mode = v2->v_str->s_str;
|
||||
|
||||
if ((*mode != 'r') && (*mode != 'w') && (*mode != 'a'))
|
||||
return error_value(E_FOPEN2);
|
||||
if (mode[1] != '\0') {
|
||||
if (mode[1] != '+')
|
||||
return error_value(E_FOPEN2);
|
||||
if (mode[2] != '\0')
|
||||
if (mode[1] != '+' && mode[1] != 'b')
|
||||
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;
|
||||
id = openid(v1->v_str->s_str, v2->v_str->s_str);
|
||||
if (id == FILEID_NONE)
|
||||
return error_value(errno);
|
||||
if (id < 0)
|
||||
return error_value(E_FOPEN3);
|
||||
return error_value(-id);
|
||||
result.v_type = V_FILE;
|
||||
result.v_file = id;
|
||||
return result;
|
||||
@@ -5019,21 +5028,27 @@ f_freopen(int count, VALUE **vals)
|
||||
/* initialize VALUE */
|
||||
result.v_subtype = V_NOSUBTYPE;
|
||||
|
||||
/* check for a valid mode [rwa][b+\0][b+\0] */
|
||||
if (vals[0]->v_type != V_FILE)
|
||||
return error_value(E_FREOPEN1);
|
||||
if (vals[1]->v_type != V_STR)
|
||||
return error_value(E_FREOPEN2);
|
||||
|
||||
mode = vals[1]->v_str->s_str;
|
||||
|
||||
if ((*mode != 'r') && (*mode != 'w') && (*mode != 'a'))
|
||||
return error_value(E_FREOPEN2);
|
||||
if (mode[1] != '\0') {
|
||||
if (mode[1] != '+')
|
||||
return error_value(E_FREOPEN2);
|
||||
if (mode[2] != '\0')
|
||||
if (mode[1] != '+' && mode[1] != 'b')
|
||||
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;
|
||||
if (count == 2) {
|
||||
id = reopenid(vals[0]->v_file, mode, NULL);
|
||||
@@ -6139,10 +6154,10 @@ f_fgetfield(VALUE *vp)
|
||||
result.v_subtype = V_NOSUBTYPE;
|
||||
|
||||
if (vp->v_type != V_FILE)
|
||||
return error_value(E_FGETWORD1);
|
||||
return error_value(E_FGETFIELD1);
|
||||
i = readid(vp->v_file, 14, &str);
|
||||
if (i > 0)
|
||||
return error_value(E_FGETWORD2);
|
||||
return error_value(E_FGETFIELD2);
|
||||
result.v_type = V_NULL;
|
||||
if (i == 0) {
|
||||
result.v_type = V_STR;
|
||||
@@ -7288,6 +7303,7 @@ f_free(int count, VALUE **vals)
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
static VALUE
|
||||
f_freeglobals(void)
|
||||
{
|
||||
@@ -7301,6 +7317,7 @@ f_freeglobals(void)
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
static VALUE
|
||||
f_freeredc(void)
|
||||
{
|
||||
@@ -7708,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 */
|
||||
|
||||
|
||||
@@ -8310,6 +8341,8 @@ static CONST struct builtin builtins[] = {
|
||||
"truncate a to b number of decimal places"},
|
||||
{"ungetc", 2, 2, 0, OP_NOP, 0, f_ungetc,
|
||||
"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,
|
||||
"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.
|
||||
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
*
|
||||
* @(#) $Revision: 29.2 $
|
||||
* @(#) $Id: func.h,v 29.2 2000/06/07 14:02:13 chongo Exp $
|
||||
* @(#) $Revision: 29.3 $
|
||||
* @(#) $Id: func.h,v 29.3 2001/05/29 00:16:53 chongo Exp $
|
||||
* @(#) $Source: /usr/local/src/cmd/calc/RCS/func.h,v $
|
||||
*
|
||||
* Under source code control: 1990/02/15 01:48:33
|
||||
@@ -32,8 +32,13 @@
|
||||
#define __FUNC_H__
|
||||
|
||||
|
||||
#include "calc.h"
|
||||
#include "label.h"
|
||||
#if defined(SRC) /* if we are building from the calc source tree */
|
||||
# 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.
|
||||
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
*
|
||||
* @(#) $Revision: 29.3 $
|
||||
* @(#) $Id: hash.c,v 29.3 2000/06/07 14:02:13 chongo Exp $
|
||||
* @(#) $Revision: 29.4 $
|
||||
* @(#) $Id: hash.c,v 29.4 2001/04/14 22:47:21 chongo Exp $
|
||||
* @(#) $Source: /usr/local/src/cmd/calc/RCS/hash.c,v $
|
||||
*
|
||||
* 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);
|
||||
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->need_to_skip, state);
|
||||
(state->update)(state,
|
||||
(USB8 *)value->v_rand->slot, SCNT*FULL_BITS/8);
|
||||
(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.
|
||||
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
*
|
||||
* @(#) $Revision: 29.2 $
|
||||
* @(#) $Id: hash.h,v 29.2 2000/06/07 14:02:13 chongo Exp $
|
||||
* @(#) $Revision: 29.3 $
|
||||
* @(#) $Id: hash.h,v 29.3 2001/05/29 00:16:53 chongo Exp $
|
||||
* @(#) $Source: /usr/local/src/cmd/calc/RCS/hash.h,v $
|
||||
*
|
||||
* Under source code control: 1995/11/14 23:57:45
|
||||
@@ -33,10 +33,17 @@
|
||||
#define __HASH_H__
|
||||
|
||||
|
||||
#include "shs.h"
|
||||
#include "shs1.h"
|
||||
#include "md5.h"
|
||||
#include "zmath.h"
|
||||
#if defined(SRC) /* if we are building from the calc source tree */
|
||||
# include "shs.h"
|
||||
# include "shs1.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 */
|
||||
|
12
help.c
12
help.c
@@ -17,8 +17,8 @@
|
||||
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
*
|
||||
* @(#) $Revision: 29.6 $
|
||||
* @(#) $Id: help.c,v 29.6 2001/03/17 21:31:47 chongo Exp $
|
||||
* @(#) $Revision: 29.8 $
|
||||
* @(#) $Id: help.c,v 29.8 2001/04/08 08:29:28 chongo Exp $
|
||||
* @(#) $Source: /usr/local/src/cmd/calc/RCS/help.c,v $
|
||||
*
|
||||
* Under source code control: 1997/09/14 10:58:30
|
||||
@@ -62,6 +62,7 @@ static struct help_alias {
|
||||
{".", "oldvalue"},
|
||||
{"%", "mod"},
|
||||
{"//", "quo"},
|
||||
{"copy", "blkcpy"},
|
||||
{"copying", "COPYING"},
|
||||
{"copying-lgpl", "COPYING-LGPL"},
|
||||
{"copying_lgpl", "COPYING-LGPL"},
|
||||
@@ -70,6 +71,13 @@ static struct help_alias {
|
||||
{"COPYRIGHT", "copyright"},
|
||||
{"Copyleft", "copyright"},
|
||||
{"COPYLEFT", "copyright"},
|
||||
{"read", "command"},
|
||||
{"write", "command"},
|
||||
{"quit", "command"},
|
||||
{"exit", "command"},
|
||||
{"abort", "command"},
|
||||
{"cd", "command"},
|
||||
{"show", "command"},
|
||||
{"stdlib", "resource"},
|
||||
{NULL, NULL}
|
||||
};
|
||||
|
107
help/Makefile
107
help/Makefile
@@ -18,8 +18,8 @@
|
||||
# received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
# 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
#
|
||||
# @(#) $Revision: 29.5 $
|
||||
# @(#) $Id: Makefile,v 29.5 2000/12/14 10:33:06 chongo Exp $
|
||||
# @(#) $Revision: 29.13 $
|
||||
# @(#) $Id: Makefile,v 29.13 2001/05/29 00:41:11 chongo Exp $
|
||||
# @(#) $Source: /usr/local/src/cmd/calc/help/RCS/Makefile,v $
|
||||
#
|
||||
# Under source code control: 1991/07/23 06:47:57
|
||||
@@ -36,15 +36,16 @@
|
||||
SHELL= /bin/sh
|
||||
MAKE_FILE = Makefile
|
||||
|
||||
# Normally, the upper level makefile will set these values. We provide
|
||||
# a default here just in case you want to build from this directory.
|
||||
# ${SHAREDIR} where most common shared files are kept
|
||||
#
|
||||
TOPDIR= /usr/local/lib
|
||||
#TOPDIR= /usr/lib
|
||||
#TOPDIR= /usr/libdata
|
||||
# ${CSHAREDIR} where most common shared calc files are kept
|
||||
# ${HELPDIR} where the help directory is installed.
|
||||
#
|
||||
#SHAREDIR= /usr/local/lib
|
||||
SHAREDIR= /usr/share
|
||||
|
||||
LIBDIR= ${TOPDIR}/calc
|
||||
HELPDIR= ${LIBDIR}/help
|
||||
CSHAREDIR= ${SHAREDIR}/calc
|
||||
HELPDIR= ${CSHAREDIR}/help
|
||||
|
||||
# Makefile debug
|
||||
#
|
||||
@@ -63,6 +64,7 @@ CHMOD= chmod
|
||||
SED= sed
|
||||
SORT= sort
|
||||
FMT= fmt
|
||||
CMP= cmp
|
||||
|
||||
# Standard and Builtin help files
|
||||
#
|
||||
@@ -164,7 +166,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 \
|
||||
sgn sha sha1 sin sinh size sizeof sleep sort sqrt srand srandom \
|
||||
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
|
||||
# built from DETAIL_HELP files.
|
||||
@@ -455,7 +457,7 @@ builtin: builtin.top builtin.end ../func.c funclist.sed
|
||||
distlist: ${DISTLIST}
|
||||
${Q}for i in ${DISTLIST}; do \
|
||||
echo help/$$i; \
|
||||
done | ${SORT}
|
||||
done | LANG=C ${SORT}
|
||||
|
||||
distdir:
|
||||
${Q}echo help
|
||||
@@ -485,10 +487,41 @@ detaillist:
|
||||
else \
|
||||
echo $$i; \
|
||||
fi; \
|
||||
done | ${SORT}) | ${FMT} -70 | \
|
||||
done | LANG=C ${SORT}) | ${FMT} -70 | \
|
||||
${SED} -e '1s/xxxxx/DETAIL_HELP=/' -e '2,$$s/^/ /' \
|
||||
-e 's/$$/ \\/' -e '$$s/ \\$$//'
|
||||
|
||||
##
|
||||
#
|
||||
# rpm rules
|
||||
#
|
||||
##
|
||||
|
||||
echo_STD_HELP_FILES: ${MAKE_FILE}
|
||||
@echo ${STD_HELP_FILES}
|
||||
|
||||
echo_BLT_HELP_FILES: ${MAKE_FILE}
|
||||
@echo ${BLT_HELP_FILES}
|
||||
|
||||
echo_DETAIL_HELP: ${MAKE_FILE}
|
||||
@echo ${DETAIL_HELP}
|
||||
|
||||
echo_SINGULAR_FILES: ${MAKE_FILE}
|
||||
@echo ${SINGULAR_FILES}
|
||||
|
||||
echo_install.list: ${MAKE_FILE}
|
||||
@for i in ${STD_HELP_FILES} full ${BLT_HELP_FILES} \
|
||||
builtin ${DETAIL_HELP} ${SINGULAR_FILES}; do \
|
||||
echo ${HELPDIR}/$$i; \
|
||||
done
|
||||
@echo ${HELPDIR}/obj
|
||||
|
||||
##
|
||||
#
|
||||
# Utility rules
|
||||
#
|
||||
##
|
||||
|
||||
clean:
|
||||
rm -f obj mkbuiltin funclist.c funclist.o funclist
|
||||
rm -f COPYING COPYING-LGPL
|
||||
@@ -500,36 +533,48 @@ clobber:
|
||||
rm -f ${SINGULAR_FILES} ${DETAIL_CLONE}
|
||||
|
||||
install: all
|
||||
-${Q}if [ ! -d ${TOPDIR} ]; then \
|
||||
echo mkdir ${TOPDIR}; \
|
||||
mkdir ${TOPDIR}; \
|
||||
-${Q}if [ ! -d ${SHAREDIR} ]; then \
|
||||
echo mkdir ${SHAREDIR}; \
|
||||
mkdir ${SHAREDIR}; \
|
||||
echo ${CHMOD} 0755 ${SHAREDIR}; \
|
||||
${CHMOD} 0755 ${SHAREDIR}; \
|
||||
else \
|
||||
true; \
|
||||
fi
|
||||
-${Q}if [ ! -d ${LIBDIR} ]; then \
|
||||
echo mkdir ${LIBDIR}; \
|
||||
mkdir ${LIBDIR}; \
|
||||
-${Q}if [ ! -d ${CSHAREDIR} ]; then \
|
||||
echo mkdir ${CSHAREDIR}; \
|
||||
mkdir ${CSHAREDIR}; \
|
||||
echo ${CHMOD} 0755 ${CSHAREDIR}; \
|
||||
${CHMOD} 0755 ${CSHAREDIR}; \
|
||||
else \
|
||||
true; \
|
||||
fi
|
||||
-${Q}if [ ! -d ${HELPDIR} ]; then \
|
||||
echo mkdir ${HELPDIR}; \
|
||||
mkdir ${HELPDIR}; \
|
||||
echo ${CHMOD} 0755 ${HELPDIR}; \
|
||||
${CHMOD} 0755 ${HELPDIR}; \
|
||||
else \
|
||||
true; \
|
||||
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 \
|
||||
echo rm -f ${HELPDIR}/$$i; \
|
||||
rm -f ${HELPDIR}/$$i; \
|
||||
echo cp $$i ${HELPDIR}; \
|
||||
cp $$i ${HELPDIR}; \
|
||||
echo ${CHMOD} 0444 ${HELPDIR}/$$i; \
|
||||
${CHMOD} 0444 ${HELPDIR}/$$i; \
|
||||
if ${CMP} -s $$i ${HELPDIR}/$$i; then \
|
||||
true; \
|
||||
else \
|
||||
rm -f ${HELPDIR}/$$i.new; \
|
||||
cp -f $$i ${HELPDIR}/$$i.new; \
|
||||
${CHMOD} 0444 ${HELPDIR}/$$i.new; \
|
||||
mv -f ${HELPDIR}/$$i.new ${HELPDIR}/$$i; \
|
||||
echo "installed ${HELPDIR}/$$i"; \
|
||||
fi; \
|
||||
done
|
||||
rm -f ${HELPDIR}/obj
|
||||
cp obj.file ${HELPDIR}/obj
|
||||
${CHMOD} 0444 ${HELPDIR}/obj
|
||||
${Q}echo remove files that are obsolete
|
||||
-rm -f rmblk block stdlib
|
||||
-rm -f ${HELPDIR}/rmblk ${HELPDIR}/block ${HELPDIR}/stdlib
|
||||
-${Q}if ${CMP} -s obj.file ${HELPDIR}/obj; then \
|
||||
true; \
|
||||
else \
|
||||
rm -f ${HELPDIR}/obj.new; \
|
||||
cp -f obj.file ${HELPDIR}/obj.new; \
|
||||
${CHMOD} 0444 ${HELPDIR}/obj.new; \
|
||||
mv -f ${HELPDIR}/obj.new ${HELPDIR}/obj; \
|
||||
echo "installed ${HELPDIR}/obj"; \
|
||||
fi
|
||||
|
23
help/config
23
help/config
@@ -47,6 +47,7 @@ Configuration parameters
|
||||
"ctrl_d" The interactive meaning of ^D (Control D)
|
||||
"program" Read-only calc program or shell script path
|
||||
"basename" Read-only basename of the program value
|
||||
"windows" Read-only indicator of MS windows
|
||||
"version" Read-only calc version
|
||||
|
||||
The "all" config value allows one to save/restore the configuration
|
||||
@@ -509,7 +510,9 @@ Detailed config descriptions
|
||||
|
||||
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 the -D command line option.
|
||||
@@ -539,6 +542,9 @@ Detailed config descriptions
|
||||
2 Show func will display more information about a functions
|
||||
arguments as well as more argument sdummary information.
|
||||
|
||||
3 During execution, allow calc standard resource files
|
||||
to output additional debugging information.
|
||||
|
||||
The value for config("resource_debug") in both oldstd and newstd is 3,
|
||||
but if calc is invoked with the -d flag, its initial value is zero.
|
||||
Thus, if calc is started without the -d flag, until config("resource_debug")
|
||||
@@ -574,12 +580,14 @@ Detailed config descriptions
|
||||
|
||||
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.
|
||||
A quit of abort without an argument does not display a message when
|
||||
invoked at the interactive level.
|
||||
|
||||
By deafult, "verbose_quit" is false.
|
||||
|
||||
=-=
|
||||
|
||||
config("ctrl_d", "ctrl_d_string")
|
||||
@@ -674,6 +682,13 @@ Detailed config descriptions
|
||||
|
||||
=-=
|
||||
|
||||
config("windows") <== NOTE: This is a read-only config value
|
||||
|
||||
Returns TRUE if you are running on a MS windows system, false if you
|
||||
are running on an operating system that does not hate you.
|
||||
|
||||
=-=
|
||||
|
||||
config("version") <== NOTE: This is a read-only config value
|
||||
|
||||
The version string of the calc program can be obtained by:
|
||||
@@ -698,8 +713,8 @@ Detailed config descriptions
|
||||
## received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
## 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
##
|
||||
## @(#) $Revision: 29.2 $
|
||||
## @(#) $Id: config,v 29.2 2000/06/07 14:02:33 chongo Exp $
|
||||
## @(#) $Revision: 29.6 $
|
||||
## @(#) $Id: config,v 29.6 2001/04/25 07:17:38 chongo Exp $
|
||||
## @(#) $Source: /usr/local/src/cmd/calc/help/RCS/config,v $
|
||||
##
|
||||
## 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
|
||||
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
|
||||
|
||||
[[ 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 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
|
||||
work by a number of people. It would not be what it is today without
|
||||
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
|
||||
|
||||
[[ 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 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:
|
||||
|
||||
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
|
||||
http://www.isthe.com/chongo/
|
||||
|
||||
chongo <was here> /\../\
|
||||
chongo (share and enjoy) /\../\
|
||||
|
||||
## 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.
|
||||
## 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
##
|
||||
## @(#) $Revision: 29.2 $
|
||||
## @(#) $Id: contrib,v 29.2 2000/06/07 14:02:33 chongo Exp $
|
||||
## @(#) $Revision: 29.4 $
|
||||
## @(#) $Id: contrib,v 29.4 2001/06/01 11:37:14 chongo Exp $
|
||||
## @(#) $Source: /usr/local/src/cmd/calc/help/RCS/contrib,v $
|
||||
##
|
||||
## 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
|
||||
is controlled by the mode flag as follows:
|
||||
|
||||
"r" reading
|
||||
"w" writing
|
||||
"a" appending
|
||||
allow allow file is positioned file(*)
|
||||
mode reading writing truncated at mode
|
||||
---- ------- ------- --------- --------- ----
|
||||
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
|
||||
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.
|
||||
## 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
##
|
||||
## @(#) $Revision: 29.2 $
|
||||
## @(#) $Id: fopen,v 29.2 2000/06/07 14:02:33 chongo Exp $
|
||||
## @(#) $Revision: 29.3 $
|
||||
## @(#) $Id: fopen,v 29.3 2001/04/10 21:46:45 chongo Exp $
|
||||
## @(#) $Source: /usr/local/src/cmd/calc/help/RCS/fopen,v $
|
||||
##
|
||||
## Under source code control: 1994/10/27 03:04:17
|
||||
|
82
help/rand
82
help/rand
@@ -1,5 +1,5 @@
|
||||
NAME
|
||||
rand - additive 55 shuffle pseudo-random number generator
|
||||
rand - subtractive 100 shuffle pseudo-random number generator
|
||||
|
||||
SYNOPSIS
|
||||
rand([[min, ] max])
|
||||
@@ -11,7 +11,7 @@ TYPES
|
||||
return integer
|
||||
|
||||
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).
|
||||
By default, min is 0 and max is 2^64.
|
||||
|
||||
@@ -38,36 +38,40 @@ DESCRIPTION
|
||||
|
||||
when seeded with the same seed.
|
||||
|
||||
The rand generator has two distinct parts, the additive 55 method
|
||||
and the shuffle method. The additive 55 method is described in:
|
||||
The rand generator has two distinct parts, the subtractive 100 method
|
||||
and the shuffle method. The subtractive 100 method is described in:
|
||||
|
||||
"The Art of Computer Programming - Seminumerical Algorithms"
|
||||
by Knuth, Vol 2, 2nd edition (1981), Section 3.2.2, page 27,
|
||||
Algorithm A.
|
||||
"The Art of Computer Programming - Seminumerical Algorithms",
|
||||
Vol 2, 3rd edition (1998), Section 3.6, page 186, formula (2).
|
||||
|
||||
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.
|
||||
|
||||
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 Art of Computer Programming - Seminumerical Algorithms"
|
||||
by Knuth, Vol 2, 2nd edition (1981), Section 3.2.2, page 32,
|
||||
Algorithm B.
|
||||
"The Art of Computer Programming - Seminumerical Algorithms",
|
||||
Vol 2, 3rd edition (1998), Section 3.2.2, page 34, Algorithm B.
|
||||
|
||||
The rand generator has a good period, and is fast. It is reasonable as
|
||||
generators go, though there are better ones available. The shuffle
|
||||
method has a very good period, and is fast. It is fairly good as
|
||||
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.
|
||||
|
||||
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
|
||||
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:
|
||||
|
||||
@@ -95,21 +99,21 @@ DESCRIPTION
|
||||
a standard against which other generators may be measured.
|
||||
|
||||
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
|
||||
long. The restriction of < 2^64 was used to prevent modulus biasing.
|
||||
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
impact the additive 55 generator output.
|
||||
impact the subtractive 100 generator output.
|
||||
|
||||
It is 'nice' when a seed of "n" produces a 'significantly different'
|
||||
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
|
||||
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
|
||||
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:
|
||||
|
||||
a = 6316878969928993981
|
||||
@@ -190,36 +194,40 @@ DESCRIPTION
|
||||
|
||||
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
|
||||
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
|
||||
created before I (Landon Curt Noll) was born (you can look up my
|
||||
birth record if you want), I claim to have no possible influence on
|
||||
their generation.
|
||||
created before I (Landon Curt Noll) was born (you can look up
|
||||
my birth record if you want), I claim to have no possible influence
|
||||
on their generation.
|
||||
|
||||
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.
|
||||
I am willing to provide access to this electronic copy should
|
||||
anyone wants to compare it to the printed text.
|
||||
Rand Book of Random Numbers that I was given access to differs
|
||||
from the printed text. I am willing to provide access to this
|
||||
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:
|
||||
|
||||
srand(mat55)
|
||||
srand(mat100)
|
||||
|
||||
and avoid using my magic numbers. Of course, you must pick good
|
||||
additive 55 values yourself!
|
||||
and avoid using my magic numbers. The randreseed64 process is NOT
|
||||
applied to the matrix values. Of course, you must pick good subtractive
|
||||
100 values yourself!
|
||||
|
||||
EXAMPLE
|
||||
> 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)
|
||||
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)
|
||||
11 170570393286648531699560 1 -96605
|
||||
2 658186291252503497642116 1 -324097
|
||||
|
||||
LIMITS
|
||||
min < max
|
||||
@@ -248,8 +256,8 @@ SEE ALSO
|
||||
## received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
## 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
##
|
||||
## @(#) $Revision: 29.2 $
|
||||
## @(#) $Id: rand,v 29.2 2000/06/07 14:02:33 chongo Exp $
|
||||
## @(#) $Revision: 29.3 $
|
||||
## @(#) $Id: rand,v 29.3 2001/04/14 22:46:33 chongo Exp $
|
||||
## @(#) $Source: /usr/local/src/cmd/calc/help/RCS/rand,v $
|
||||
##
|
||||
## Under source code control: 1996/01/01 02:16:09
|
||||
|
10
help/script
10
help/script
@@ -144,9 +144,9 @@ Calc shell scripts
|
||||
For systems that support interpreter files, essentially the
|
||||
same thing may be done more efficiently by using calc as an
|
||||
interpreter. Assuming the full path for calc is
|
||||
/usr/bin/calc, one could use the file addall3 with contents
|
||||
/usr/local/bin/calc, one could use the file addall3 with contents
|
||||
|
||||
#!/usr/bin/calc -q -s -f
|
||||
#!/usr/local/bin/calc -q -s -f
|
||||
global i, n, s;
|
||||
n = argv();
|
||||
for (i = 1; i <= n; i++)
|
||||
@@ -166,7 +166,7 @@ Calc shell scripts
|
||||
|
||||
or what is essentially an interpreter equivalent sqrts2:
|
||||
|
||||
#!/usr/bin/calc -q -f
|
||||
#!/usr/local/bin/calc -q -f
|
||||
global s;
|
||||
while (scanf('%s', s) == 1)
|
||||
print sqrt(eval(s));
|
||||
@@ -283,8 +283,8 @@ For more information use the following calc commands:
|
||||
## received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
## 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
##
|
||||
## @(#) $Revision: 29.4 $
|
||||
## @(#) $Id: script,v 29.4 2000/07/17 15:36:26 chongo Exp $
|
||||
## @(#) $Revision: 29.5 $
|
||||
## @(#) $Id: script,v 29.5 2001/04/08 07:56:32 chongo Exp $
|
||||
## @(#) $Source: /usr/local/src/cmd/calc/help/RCS/script,v $
|
||||
##
|
||||
## Under source code control: 1999/11/30 05:29:48
|
||||
|
@@ -19,9 +19,9 @@ DESCRIPTION
|
||||
is almost certainly non-chaotic. This function is likely not
|
||||
suitable for applications (such as cryptographic applications)
|
||||
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
|
||||
(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.
|
||||
## 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
##
|
||||
## @(#) $Revision: 29.2 $
|
||||
## @(#) $Id: seed,v 29.2 2000/06/07 14:02:33 chongo Exp $
|
||||
## @(#) $Revision: 29.3 $
|
||||
## @(#) $Id: seed,v 29.3 2001/05/13 13:26:26 chongo Exp $
|
||||
## @(#) $Source: /usr/local/src/cmd/calc/help/RCS/seed,v $
|
||||
##
|
||||
## Under source code control: 1999/10/03 10:04:29
|
||||
|
74
help/srand
74
help/srand
@@ -1,5 +1,5 @@
|
||||
NAME
|
||||
srand - seed the additive 55 shuffle pseudo-random number generator
|
||||
srand - seed the subtractive 100 shuffle pseudo-random number generator
|
||||
|
||||
SYNOPSIS
|
||||
srand([seed])
|
||||
@@ -10,43 +10,43 @@ TYPES
|
||||
return rand state
|
||||
|
||||
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:
|
||||
|
||||
Any buffered rand generator bits are flushed. The additive table
|
||||
for the rand generator is loaded with the default additive table.
|
||||
Any buffered rand generator bits are flushed. The subtractive 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 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
|
||||
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);
|
||||
for (i=0; i < 55; ++i) {
|
||||
additive[i] = xor(default_additive[i], seed_xor);
|
||||
for (i=0; i < 100; ++i) {
|
||||
subtractive[i] = xor(default_subtractive[i], seed_xor);
|
||||
}
|
||||
|
||||
/* shuffle the additive table */
|
||||
/* shuffle the subtractive table */
|
||||
seed >>= 64;
|
||||
for (i=55; seed > 0 && i > 0; --i) {
|
||||
for (i=100; seed > 0 && i > 0; --i) {
|
||||
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.
|
||||
|
||||
The additive table pointers are reset to additive[23] and additive[54].
|
||||
Last the shuffle table is loaded with successive values from the
|
||||
additive 55 generator.
|
||||
The subtractive table pointers are reset to subtractive[36]
|
||||
and subtractive[99]. Last the shuffle table is loaded with
|
||||
successive values from the subtractive 100 generator.
|
||||
|
||||
There is no limit on the size of a seed. On the other hand,
|
||||
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
|
||||
range to to use seeds that are between 21 and 93 digits, or
|
||||
64 to 308 bits long.
|
||||
range to to use seeds that are between 21 and 178 digits, or
|
||||
64 to 588 bits long.
|
||||
|
||||
To help make the generator produced by seed S, significantly
|
||||
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
|
||||
state after calc started.
|
||||
|
||||
The additive 55 pointers are reset to additive[23] and additive[54].
|
||||
Last the shuffle table is loaded with successive values from the
|
||||
additive 55 generator.
|
||||
The subtractive 100 pointers are reset to subtractive[36]
|
||||
and subtractive[99]. Last the shuffle table is loaded with
|
||||
successive values from the subtractive 100 generator.
|
||||
|
||||
The call:
|
||||
|
||||
@@ -80,14 +80,14 @@ DESCRIPTION
|
||||
|
||||
For matrix arg:
|
||||
|
||||
Any buffered random bits are flushed. The additive table with the
|
||||
first 55 entries of the matrix mod 2^64.
|
||||
Any buffered random bits are flushed. The subtractive table with the
|
||||
first 100 entries of the matrix mod 2^64.
|
||||
|
||||
The additive 55 pointers are reset to additive[23] and additive[54].
|
||||
Last the shuffle table is loaded with successive values from the
|
||||
additive 55 generator.
|
||||
The subtractive 100 pointers are reset to subtractive[36]
|
||||
and subtractive[99]. Last the shuffle table is loaded with
|
||||
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.
|
||||
|
||||
The randreseed64 process is NOT applied to the matrix values.
|
||||
@@ -114,7 +114,7 @@ DESCRIPTION
|
||||
|
||||
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.
|
||||
|
||||
This call allows one to take a snapshot of the current generator state.
|
||||
@@ -126,25 +126,25 @@ EXAMPLE
|
||||
RAND state
|
||||
> state = srand();
|
||||
> 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);
|
||||
52 72 110 15 69 58
|
||||
122 109 12 95 80 32
|
||||
> state2 = srand(state);
|
||||
> 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);
|
||||
52 72 110 15 69 58
|
||||
122 109 12 95 80 32
|
||||
> state3 = srand();
|
||||
> print state3 == state2;
|
||||
1
|
||||
> print rand();
|
||||
641407694185874626
|
||||
10710588361472584495
|
||||
|
||||
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
|
||||
RAND *zsrand(ZVALUE *pseed, MATRIX *pmat55)
|
||||
RAND *zsrand(ZVALUE *pseed, MATRIX *pmat100)
|
||||
RAND *zsetrand(RAND *state)
|
||||
|
||||
SEE ALSO
|
||||
@@ -166,8 +166,8 @@ SEE ALSO
|
||||
## received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
## 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
##
|
||||
## @(#) $Revision: 29.2 $
|
||||
## @(#) $Id: srand,v 29.2 2000/06/07 14:02:33 chongo Exp $
|
||||
## @(#) $Revision: 29.3 $
|
||||
## @(#) $Id: srand,v 29.3 2001/04/14 22:46:33 chongo Exp $
|
||||
## @(#) $Source: /usr/local/src/cmd/calc/help/RCS/srand,v $
|
||||
##
|
||||
## Under source code control: 1996/01/01 04:19:07
|
||||
|
10
help/srandom
10
help/srandom
@@ -220,11 +220,11 @@ DESCRIPTION
|
||||
Blum moduli.
|
||||
|
||||
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
|
||||
source file, zrandom.c.
|
||||
|
||||
@@ -354,8 +354,8 @@ SEE ALSO
|
||||
## received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
## 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
##
|
||||
## @(#) $Revision: 29.2 $
|
||||
## @(#) $Id: srandom,v 29.2 2000/06/07 14:02:33 chongo Exp $
|
||||
## @(#) $Revision: 29.3 $
|
||||
## @(#) $Id: srandom,v 29.3 2001/05/13 13:26:26 chongo Exp $
|
||||
## @(#) $Source: /usr/local/src/cmd/calc/help/RCS/srandom,v $
|
||||
##
|
||||
## Under source code control: 1997/02/17 01:18:22
|
||||
|
60
help/version
Normal file
60
help/version
Normal file
@@ -0,0 +1,60 @@
|
||||
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.ztw.v
|
||||
x.y.ztw
|
||||
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.5t4.1"
|
||||
|
||||
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.2 $
|
||||
## @(#) $Id: version,v 29.2 2001/05/29 00:43:54 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.
|
||||
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
*
|
||||
* @(#) $Revision: 29.2 $
|
||||
* @(#) $Id: jump.h,v 29.2 2000/06/07 14:02:13 chongo Exp $
|
||||
* @(#) $Revision: 29.3 $
|
||||
* @(#) $Id: jump.h,v 29.3 2001/05/29 00:16:53 chongo Exp $
|
||||
* @(#) $Source: /usr/local/src/cmd/calc/RCS/jump.h,v $
|
||||
*
|
||||
* Under source code control: 1994/06/29 04:03:55
|
||||
@@ -65,7 +65,13 @@
|
||||
#if !defined(__JUMP_H__)
|
||||
#define __JUMP_H__
|
||||
|
||||
#include "have_const.h"
|
||||
|
||||
#if defined(SRC) /* if we are building from the calc source tree */
|
||||
# include "have_const.h"
|
||||
#else
|
||||
# include <calc/have_const.h>
|
||||
#endif
|
||||
|
||||
|
||||
/*
|
||||
* 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.
|
||||
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
*
|
||||
* @(#) $Revision: 29.2 $
|
||||
* @(#) $Id: label.h,v 29.2 2000/06/07 14:02:13 chongo Exp $
|
||||
* @(#) $Revision: 29.3 $
|
||||
* @(#) $Id: label.h,v 29.3 2001/05/29 00:16:53 chongo Exp $
|
||||
* @(#) $Source: /usr/local/src/cmd/calc/RCS/label.h,v $
|
||||
*
|
||||
* Under source code control: 1990/02/15 01:48:33
|
||||
@@ -32,7 +32,11 @@
|
||||
#define __LABEL_H__
|
||||
|
||||
|
||||
#include "zmath.h"
|
||||
#if defined(SRC) /* if we are building from the calc source tree */
|
||||
# include "zmath.h"
|
||||
#else
|
||||
# include <calc/zmath.h>
|
||||
#endif
|
||||
|
||||
|
||||
#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.
|
||||
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
*
|
||||
* @(#) $Revision: 29.6 $
|
||||
* @(#) $Id: lib_calc.c,v 29.6 2001/03/17 21:31:47 chongo Exp $
|
||||
* @(#) $Revision: 29.7 $
|
||||
* @(#) $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 $
|
||||
*
|
||||
* 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 "
|
||||
"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 (conf->calc_debug & CALCDBG_TTY)
|
||||
@@ -848,7 +848,7 @@ orig_tty(int fd)
|
||||
if (conf->calc_debug & CALCDBG_TTY)
|
||||
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
|
||||
|
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.
|
||||
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
*
|
||||
* @(#) $Revision: 29.3 $
|
||||
* @(#) $Id: math_error.h,v 29.3 2001/03/17 21:31:47 chongo Exp $
|
||||
* @(#) $Revision: 29.4 $
|
||||
* @(#) $Id: math_error.h,v 29.4 2001/05/29 00:16:53 chongo Exp $
|
||||
* @(#) $Source: /usr/local/src/cmd/calc/RCS/math_error.h,v $
|
||||
*
|
||||
* Under source code control: 1997/03/23 18:37:10
|
||||
@@ -33,7 +33,11 @@
|
||||
#define __MATH_ERROR_H__
|
||||
|
||||
|
||||
#include "win32dll.h"
|
||||
#if defined(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.
|
||||
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
*
|
||||
* @(#) $Revision: 29.3 $
|
||||
* @(#) $Id: opcodes.c,v 29.3 2000/07/17 15:35:49 chongo Exp $
|
||||
* @(#) $Revision: 29.4 $
|
||||
* @(#) $Id: opcodes.c,v 29.4 2001/04/25 07:16:26 chongo Exp $
|
||||
* @(#) $Source: /usr/local/src/cmd/calc/RCS/opcodes.c,v $
|
||||
*
|
||||
* Under source code control: 1990/02/15 01:48:19
|
||||
@@ -3234,7 +3234,7 @@ o_quit(FUNC *fp, long index)
|
||||
if (cp)
|
||||
printf("%s\n", cp);
|
||||
else if (conf->verbose_quit)
|
||||
printf("Quit or abort executed\n");
|
||||
printf("quit or abort executed\n");
|
||||
if (!inputisterminal() && !strcmp(fp->f_name, "*"))
|
||||
closeinput();
|
||||
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.
|
||||
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
*
|
||||
* @(#) $Revision: 29.4 $
|
||||
* @(#) $Id: opcodes.h,v 29.4 2001/03/17 21:31:47 chongo Exp $
|
||||
* @(#) $Revision: 29.5 $
|
||||
* @(#) $Id: opcodes.h,v 29.5 2001/05/29 00:16:53 chongo Exp $
|
||||
* @(#) $Source: /usr/local/src/cmd/calc/RCS/opcodes.h,v $
|
||||
*
|
||||
* Under source code control: 1990/02/15 01:48:35
|
||||
@@ -32,7 +32,11 @@
|
||||
#define __OPCODES_H__
|
||||
|
||||
|
||||
#include "win32dll.h"
|
||||
#if defined(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.
|
||||
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
*
|
||||
* @(#) $Revision: 29.2 $
|
||||
* @(#) $Id: prime.h,v 29.2 2000/06/07 14:02:13 chongo Exp $
|
||||
* @(#) $Revision: 29.3 $
|
||||
* @(#) $Id: prime.h,v 29.3 2001/05/29 00:16:53 chongo Exp $
|
||||
* @(#) $Source: /usr/local/src/cmd/calc/RCS/prime.h,v $
|
||||
*
|
||||
* Under source code control: 1994/06/04 03:26:15
|
||||
@@ -33,8 +33,13 @@
|
||||
#define __PRIME_H__
|
||||
|
||||
|
||||
#include "qmath.h"
|
||||
#include "have_const.h"
|
||||
#if defined(SRC) /* if we are building from the calc source tree */
|
||||
# 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 */
|
||||
|
11
qmath.h
11
qmath.h
@@ -17,8 +17,8 @@
|
||||
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
*
|
||||
* @(#) $Revision: 29.3 $
|
||||
* @(#) $Id: qmath.h,v 29.3 2000/07/17 15:35:49 chongo Exp $
|
||||
* @(#) $Revision: 29.4 $
|
||||
* @(#) $Id: qmath.h,v 29.4 2001/05/29 00:16:53 chongo Exp $
|
||||
* @(#) $Source: /usr/local/src/cmd/calc/RCS/qmath.h,v $
|
||||
*
|
||||
* Under source code control: 1993/07/30 19:42:47
|
||||
@@ -32,7 +32,12 @@
|
||||
#define __QMATH_H__
|
||||
|
||||
|
||||
#include "zmath.h"
|
||||
#if defined(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 */
|
||||
|
||||
|
@@ -17,8 +17,8 @@
|
||||
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
*
|
||||
* @(#) $Revision: 29.3 $
|
||||
* @(#) $Id: quickhash.c,v 29.3 2000/06/07 14:02:13 chongo Exp $
|
||||
* @(#) $Revision: 29.4 $
|
||||
* @(#) $Id: quickhash.c,v 29.4 2001/04/14 22:47:21 chongo Exp $
|
||||
* @(#) $Source: /usr/local/src/cmd/calc/RCS/quickhash.c,v $
|
||||
*
|
||||
* 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:
|
||||
* state - state to hash
|
||||
@@ -326,6 +326,7 @@ randhash(RAND *r, QCKHASH val)
|
||||
val = fnv(r->j, V_RAND+val);
|
||||
val = fnv(r->k, val);
|
||||
val = fnv(r->bits, val);
|
||||
val = fnv(r->need_to_skip, val);
|
||||
|
||||
/* hash the state arrays */
|
||||
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.
|
||||
# 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
#
|
||||
# @(#) $Revision: 29.4 $
|
||||
# @(#) $Id: Makefile,v 29.4 2001/03/17 21:37:54 chongo Exp $
|
||||
# @(#) $Revision: 29.11 $
|
||||
# @(#) $Id: Makefile,v 29.11 2001/05/28 23:54:53 chongo Exp $
|
||||
# @(#) $Source: /usr/local/src/cmd/calc/sample/RCS/Makefile,v $
|
||||
#
|
||||
# Under source code control: 1997/04/19 22:46:49
|
||||
@@ -78,18 +78,30 @@ Q=@
|
||||
# Normally, the upper level makefile will set these values. We provide
|
||||
# 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.
|
||||
# ${LIBDIR} is where the *.cal, *.h, *.a, bindings and help dir are installed.
|
||||
# ${HELPDIR} is where the help directory is installed.
|
||||
# ${BINDIR} where to install binary files
|
||||
# ${SHAREDIR} where most common shared files are kept
|
||||
# ${INCDIR} where most .h files are kept
|
||||
# ${LIBDIR} where *.a files are installed
|
||||
#
|
||||
TOPDIR= /usr/local/lib
|
||||
#TOPDIR= /usr/lib
|
||||
#TOPDIR= /usr/libdata
|
||||
#TOPDIR= /usr/contrib/lib
|
||||
# ${CSHAREDIR} where most common shared calc files are kept
|
||||
# ${HELPDIR} where the help directory is installed.
|
||||
#
|
||||
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
|
||||
|
||||
# Normally, the upper level makefile will set these values. We provide
|
||||
@@ -266,12 +278,15 @@ CALCLIBLIST= ${C_SRC} ${H_SRC} ${MAKE_FILE} README_SAMPLE
|
||||
|
||||
# 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
|
||||
#
|
||||
SHELL= /bin/sh
|
||||
MAKE_FILE= Makefile
|
||||
|
||||
# standard tools
|
||||
#
|
||||
@@ -279,6 +294,7 @@ SED= sed
|
||||
MAKEDEPEND= makedepend
|
||||
CHMOD= chmod
|
||||
SORT= sort
|
||||
CMP= cmp
|
||||
|
||||
##
|
||||
#
|
||||
@@ -287,6 +303,7 @@ SORT= sort
|
||||
##
|
||||
|
||||
all: ${TARGETS} .all
|
||||
@true
|
||||
|
||||
test_random.o: test_random.c
|
||||
${CC} ${CFLAGS} ${ALLOW_CUSTOM} test_random.c -c
|
||||
@@ -394,7 +411,7 @@ depend:
|
||||
${Q}echo forming sample dependency list
|
||||
${Q}echo "# DO NOT DELETE THIS LINE -- make depend depends on it." > \
|
||||
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 \
|
||||
echo "$$i" | ${SED} 's/^\(.*\)\.c/\1.o: \1.c/'; \
|
||||
done >> skel/sample/makedep.out
|
||||
@@ -404,9 +421,10 @@ depend:
|
||||
${Q}mv Makefile Makefile.bak
|
||||
${Q}${SED} -n '1,/^# DO NOT DELETE THIS LINE/p' Makefile.bak > Makefile
|
||||
${Q}echo "" >> Makefile
|
||||
${Q}${SED} -n '3,$$p' skel/sample/makedep.out | ${SORT} -u >> Makefile
|
||||
${Q}${SED} -n '3,$$p' skel/sample/makedep.out | \
|
||||
LANG=C ${SORT} -u >> Makefile
|
||||
-${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'; \
|
||||
mv -f Makefile.bak Makefile; \
|
||||
else \
|
||||
@@ -421,6 +439,15 @@ depend:
|
||||
fi; \
|
||||
fi
|
||||
|
||||
##
|
||||
#
|
||||
# rpm rules
|
||||
#
|
||||
##
|
||||
|
||||
echo_install.list: Makefile
|
||||
|
||||
|
||||
##
|
||||
#
|
||||
# Utility rules
|
||||
@@ -436,7 +463,9 @@ clobber:
|
||||
rm -f .all Makefile.tmp sample
|
||||
|
||||
# for right now we will not install anything
|
||||
#
|
||||
install: all
|
||||
@true
|
||||
|
||||
##
|
||||
#
|
||||
@@ -450,8 +479,8 @@ install: all
|
||||
many_random.o: ../alloc.h
|
||||
many_random.o: ../block.h
|
||||
many_random.o: ../byteswap.h
|
||||
many_random.o: ../calcerr.h
|
||||
many_random.o: ../calc.h
|
||||
many_random.o: ../calcerr.h
|
||||
many_random.o: ../cmath.h
|
||||
many_random.o: ../config.h
|
||||
many_random.o: ../endian_calc.h
|
||||
@@ -464,22 +493,22 @@ many_random.o: ../have_stdlib.h
|
||||
many_random.o: ../have_string.h
|
||||
many_random.o: ../lib_util.h
|
||||
many_random.o: ../longbits.h
|
||||
many_random.o: many_random.c
|
||||
many_random.o: ../md5.h
|
||||
many_random.o: ../nametype.h
|
||||
many_random.o: ../qmath.h
|
||||
many_random.o: ../shs1.h
|
||||
many_random.o: ../shs.h
|
||||
many_random.o: ../shs1.h
|
||||
many_random.o: ../string.h
|
||||
many_random.o: ../value.h
|
||||
many_random.o: ../win32dll.h
|
||||
many_random.o: ../zmath.h
|
||||
many_random.o: ../zrandom.h
|
||||
many_random.o: many_random.c
|
||||
test_random.o: ../alloc.h
|
||||
test_random.o: ../block.h
|
||||
test_random.o: ../byteswap.h
|
||||
test_random.o: ../calcerr.h
|
||||
test_random.o: ../calc.h
|
||||
test_random.o: ../calcerr.h
|
||||
test_random.o: ../cmath.h
|
||||
test_random.o: ../config.h
|
||||
test_random.o: ../endian_calc.h
|
||||
@@ -495,11 +524,11 @@ test_random.o: ../longbits.h
|
||||
test_random.o: ../md5.h
|
||||
test_random.o: ../nametype.h
|
||||
test_random.o: ../qmath.h
|
||||
test_random.o: ../shs1.h
|
||||
test_random.o: ../shs.h
|
||||
test_random.o: ../shs1.h
|
||||
test_random.o: ../string.h
|
||||
test_random.o: test_random.c
|
||||
test_random.o: ../value.h
|
||||
test_random.o: ../win32dll.h
|
||||
test_random.o: ../zmath.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.
|
||||
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
*
|
||||
* @(#) $Revision: 29.4 $
|
||||
* @(#) $Id: seed.c,v 29.4 2001/03/17 21:31:47 chongo Exp $
|
||||
* @(#) $Revision: 29.5 $
|
||||
* @(#) $Id: seed.c,v 29.5 2001/05/08 06:44:29 chongo Exp $
|
||||
* @(#) $Source: /usr/local/src/cmd/calc/RCS/seed.c,v $
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
* 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:
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
* 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:
|
||||
*
|
||||
* http://lavarand.sgi.com/index.html
|
||||
* http://www.LavaRnd.org/
|
||||
*
|
||||
* PORTING NOTE:
|
||||
* If when porting this code to your system and something
|
||||
|
98
spec-template
Normal file
98
spec-template
Normal file
@@ -0,0 +1,98 @@
|
||||
Summary: C-style arbitrary precision calculator
|
||||
Name: calc
|
||||
Version: ${VERSION}
|
||||
Release: ${RELEASE}
|
||||
Copyright: LGPL
|
||||
Group: Applications/Engineering
|
||||
Source: http://www.isthe.com/chongo/src/calc/calc-${VER_CALC}.tar.gz
|
||||
BuildRoot: /var/tmp/%{name}-buildroot
|
||||
|
||||
%description
|
||||
Calc is an interactive calculator which provides for easy large numeric
|
||||
calculations, but which also can be easily programmed for difficult or
|
||||
long calculations.
|
||||
|
||||
All numbers are represented as fractions with arbitrarily large numerators
|
||||
and denominators which are always reduced to lowest terms. Real or
|
||||
exponential format numbers are converted to the equivalent fraction.
|
||||
One use enter decinal, hex, octal, binary and complex values.
|
||||
|
||||
Commands are statements in a C-like language, where each input line is
|
||||
treated as the body of a procedure. You can define your own functions
|
||||
by using the 'define' keyword, followed by a function declaration very
|
||||
similar to C. Calc also comes with a rich set of builtin functions
|
||||
and calc shell commands.
|
||||
|
||||
In addition to numeric global, local and static variables, Calc as
|
||||
lists, associated arrays, matrices, byte blocks, dymanic strings and
|
||||
user defined objects.
|
||||
|
||||
%prep
|
||||
%setup -q
|
||||
|
||||
%build
|
||||
make RPM_OPT_FLAGS="$RPM_OPT_FLAGS"
|
||||
|
||||
%install
|
||||
rm -rf $RPM_BUILD_ROOT
|
||||
mkdir -p $RPM_BUILD_ROOT${BINDIR}
|
||||
mkdir -p $RPM_BUILD_ROOT${SHAREDIR}
|
||||
mkdir -p $RPM_BUILD_ROOT${INCDIR}
|
||||
mkdir -p $RPM_BUILD_ROOT${LIBDIR}
|
||||
mkdir -p $RPM_BUILD_ROOT${CSHAREDIR}
|
||||
mkdir -p $RPM_BUILD_ROOT${HELPDIR}
|
||||
mkdir -p $RPM_BUILD_ROOT${INCDIRCALC}
|
||||
mkdir -p $RPM_BUILD_ROOT${CUSTOMLIBDIR}
|
||||
mkdir -p $RPM_BUILD_ROOT${CUSTOMHELPDIR}
|
||||
mkdir -p $RPM_BUILD_ROOT${CUSTOMINCDIR}
|
||||
mkdir -p $RPM_BUILD_ROOT${SCRIPTDIR}
|
||||
mkdir -p $RPM_BUILD_ROOT${MANDIR}
|
||||
|
||||
install -m 0555 calc $RPM_BUILD_ROOT${BINDIR}
|
||||
|
||||
(cd help
|
||||
install -m 0444 ${STD_HELP_FILES} $RPM_BUILD_ROOT${HELPDIR}
|
||||
install -m 0444 ${BLT_HELP_FILES} $RPM_BUILD_ROOT${HELPDIR}
|
||||
install -m 0444 builtin full $RPM_BUILD_ROOT${HELPDIR}
|
||||
install -m 0444 ${DETAIL_HELP} $RPM_BUILD_ROOT${HELPDIR}
|
||||
install -m 0444 ${SINGULAR_FILES} $RPM_BUILD_ROOT${HELPDIR}
|
||||
install -m 0444 obj.file $RPM_BUILD_ROOT${HELPDIR}/obj
|
||||
)
|
||||
|
||||
(cd cal; install -m 0444 ${CALC_FILES} $RPM_BUILD_ROOT${LIBDIR})
|
||||
|
||||
(cd custom
|
||||
if [ ! -z "${INSTALL_H_SRC}" ]; then
|
||||
install -m 0444 ${INSTALL_H_SRC} $RPM_BUILD_ROOT${CUSTOMINCDIR}
|
||||
fi
|
||||
install -m 0444 ${CUSTOM_CALC_FILES} $RPM_BUILD_ROOT${CUSTOMLIBDIR}
|
||||
install -m 0444 ${CUSTOM_HELP} $RPM_BUILD_ROOT${CUSTOMHELPDIR}
|
||||
if [ ! -z "${ALLOW_CUSTOM}" ]; then
|
||||
install -m 0644 libcustcalc.a $RPM_BUILD_ROOT${CUSTOMLIBDIR}
|
||||
${RANLIB} $RPM_BUILD_ROOT${CUSTOMLIBDIR}
|
||||
fi
|
||||
)
|
||||
|
||||
(cd cscript
|
||||
install -m 0555 ${SCRIPT} $RPM_BUILD_ROOT${SCRIPTDIR}
|
||||
)
|
||||
|
||||
install -m 0444 libcalc.a $RPM_BUILD_ROOT${LIBDIR}
|
||||
${RANLIB} $RPM_BUILD_ROOT${LIBDIR}
|
||||
install -m 0444 ${LIB_H_SRC} $RPM_BUILD_ROOT${INCDIRCALC}
|
||||
install -m 0444 ${BUILD_H_SRC} $RPM_BUILD_ROOT${INCDIRCALC}
|
||||
install -m 0444 calc.1 $RPM_BUILD_ROOT${MANDIR}.${MANEXT}
|
||||
|
||||
%clean
|
||||
rm -rf $RPM_BUILD_ROOT
|
||||
|
||||
%files -f install.list
|
||||
%defattr(-,root,root)
|
||||
%doc BUGS README COPYING COPYING-LGPL HOWTO.INSTALL
|
||||
%doc README LIBRARY README.WINDOWS calc.1
|
||||
%doc help/resource help/errorcodes help/custom_cal help/new_custom
|
||||
%doc help/cscript help/full
|
||||
|
||||
%changelog
|
||||
* ${DATE} Landon Curt Noll <http://www.isthe.com/chongo/index.html>
|
||||
- calc version ${VER_CALC}
|
10
string.h
10
string.h
@@ -17,8 +17,8 @@
|
||||
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
*
|
||||
* @(#) $Revision: 29.2 $
|
||||
* @(#) $Id: string.h,v 29.2 2000/06/07 14:02:13 chongo Exp $
|
||||
* @(#) $Revision: 29.3 $
|
||||
* @(#) $Id: string.h,v 29.3 2001/05/29 00:16:53 chongo Exp $
|
||||
* @(#) $Source: /usr/local/src/cmd/calc/RCS/string.h,v $
|
||||
*
|
||||
* Under source code control: 1990/02/15 01:48:36
|
||||
@@ -32,7 +32,11 @@
|
||||
#define __CALCSTRING_H__
|
||||
|
||||
|
||||
#include "zmath.h"
|
||||
#if defined(SRC) /* if we are building from the calc source tree */
|
||||
# include "zmath.h"
|
||||
#else
|
||||
# include <calc/zmath.h>
|
||||
#endif
|
||||
|
||||
|
||||
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.
|
||||
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
*
|
||||
* @(#) $Revision: 29.2 $
|
||||
* @(#) $Id: symbol.h,v 29.2 2000/06/07 14:02:13 chongo Exp $
|
||||
* @(#) $Revision: 29.3 $
|
||||
* @(#) $Id: symbol.h,v 29.3 2001/05/29 00:16:53 chongo Exp $
|
||||
* @(#) $Source: /usr/local/src/cmd/calc/RCS/symbol.h,v $
|
||||
*
|
||||
* Under source code control: 1990/02/15 01:48:37
|
||||
@@ -32,7 +32,11 @@
|
||||
#define __SYMBOL_H__
|
||||
|
||||
|
||||
#include "zmath.h"
|
||||
#if defined(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.
|
||||
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
*
|
||||
* @(#) $Revision: 29.2 $
|
||||
* @(#) $Id: token.h,v 29.2 2000/06/07 14:02:13 chongo Exp $
|
||||
* @(#) $Revision: 29.3 $
|
||||
* @(#) $Id: token.h,v 29.3 2001/05/29 00:16:53 chongo Exp $
|
||||
* @(#) $Source: /usr/local/src/cmd/calc/RCS/token.h,v $
|
||||
*
|
||||
* Under source code control: 1990/02/15 01:48:37
|
||||
@@ -32,7 +32,11 @@
|
||||
#define __TOKEN_H__
|
||||
|
||||
|
||||
#include "zmath.h"
|
||||
#if defined(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.
|
||||
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
*
|
||||
* @(#) $Revision: 29.5 $
|
||||
* @(#) $Id: value.h,v 29.5 2001/03/17 21:31:47 chongo Exp $
|
||||
* @(#) $Revision: 29.6 $
|
||||
* @(#) $Id: value.h,v 29.6 2001/05/29 00:16:53 chongo Exp $
|
||||
* @(#) $Source: /usr/local/src/cmd/calc/RCS/value.h,v $
|
||||
*
|
||||
* Under source code control: 1993/07/30 19:42:47
|
||||
@@ -32,15 +32,28 @@
|
||||
#define __VALUE_H__
|
||||
|
||||
|
||||
#include "win32dll.h"
|
||||
#include "cmath.h"
|
||||
#include "config.h"
|
||||
#include "shs.h"
|
||||
#include "calcerr.h"
|
||||
#include "hash.h"
|
||||
#include "block.h"
|
||||
#include "nametype.h"
|
||||
#include "string.h"
|
||||
#if defined(SRC) /* if we are building from the calc source tree */
|
||||
# include "win32dll.h"
|
||||
# include "cmath.h"
|
||||
# include "config.h"
|
||||
# include "shs.h"
|
||||
# include "calcerr.h"
|
||||
# include "hash.h"
|
||||
# include "block.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 USUAL_ELEMENTS 4 /* usual number of elements for objects */
|
||||
|
92
version.c
92
version.c
@@ -19,8 +19,8 @@
|
||||
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
*
|
||||
* @(#) $Revision: 29.20 $
|
||||
* @(#) $Id: version.c,v 29.20 2001/03/17 21:31:47 chongo Exp $
|
||||
* @(#) $Revision: 29.29 $
|
||||
* @(#) $Id: version.c,v 29.29 2001/06/01 21:44:44 chongo Exp $
|
||||
* @(#) $Source: /usr/local/src/cmd/calc/RCS/version.c,v $
|
||||
*
|
||||
* Under source code control: 1990/05/22 11:00:58
|
||||
@@ -43,7 +43,7 @@ static char *program;
|
||||
#define MAJOR_VER 2 /* major version */
|
||||
#define MINOR_VER 11 /* minor version */
|
||||
#define MAJOR_PATCH 5 /* patch level or 0 if no patch */
|
||||
#define MINOR_PATCH "1.0" /* test number or empty string if no patch */
|
||||
#define MINOR_PATCH "4.3" /* test number or empty string if no patch */
|
||||
|
||||
/*
|
||||
* calc version constants
|
||||
@@ -144,6 +144,82 @@ version(void)
|
||||
|
||||
#if defined(CALC_VER)
|
||||
|
||||
|
||||
/*
|
||||
* print_rpm_version_release - print the rpm style version-release
|
||||
*
|
||||
* This function prints a version-release string, rpm style:
|
||||
*
|
||||
* x.y.z-w
|
||||
* x.y.z-0
|
||||
* x.y-0
|
||||
*/
|
||||
void
|
||||
print_rpm_version_release(void)
|
||||
{
|
||||
/*
|
||||
* form the version buffer
|
||||
*/
|
||||
if (sizeof(MINOR_PATCH) > 1) {
|
||||
printf("%d.%d.%d-%s\n", calc_major_ver, calc_minor_ver,
|
||||
calc_major_patch, calc_minor_patch);
|
||||
} else if (MAJOR_PATCH > 0) {
|
||||
printf("%d.%d.%d-0\n", calc_major_ver, calc_minor_ver,
|
||||
calc_major_patch);
|
||||
} else {
|
||||
printf("%d.%d-0\n", calc_major_ver, calc_minor_ver);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* print_rpm_version - print just the version string, rpm style
|
||||
*
|
||||
* This function prints a version string, rpm style:
|
||||
*
|
||||
* x.y.z
|
||||
* x.y
|
||||
*/
|
||||
void
|
||||
print_rpm_version(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 release string, rpm style
|
||||
*
|
||||
* This function prints a release string, rpm style:
|
||||
*
|
||||
* w
|
||||
* 0
|
||||
*/
|
||||
void
|
||||
print_rpm_release(void)
|
||||
{
|
||||
/*
|
||||
* form the version buffer
|
||||
*/
|
||||
if (sizeof(MINOR_PATCH) > 1) {
|
||||
printf("%s\n", calc_minor_patch);
|
||||
} else {
|
||||
printf("0\n");
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* version - print the calc version
|
||||
*/
|
||||
@@ -152,7 +228,15 @@ int
|
||||
main(int argc, char *argv[])
|
||||
{
|
||||
program = argv[0];
|
||||
printf("%s\n", version());
|
||||
if (argc == 2 && strcmp(argv[1], "-R") == 0) {
|
||||
print_rpm_version_release();
|
||||
} else if (argc == 2 && strcmp(argv[1], "-v") == 0) {
|
||||
print_rpm_version();
|
||||
} else if (argc == 2 && strcmp(argv[1], "-r") == 0) {
|
||||
print_rpm_release();
|
||||
} else {
|
||||
printf("%s\n", version());
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
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=
|
15
win32/align32.h
Normal file
15
win32/align32.h
Normal file
@@ -0,0 +1,15 @@
|
||||
/*
|
||||
* DO NOT EDIT -- generated by the Makefile
|
||||
*/
|
||||
|
||||
|
||||
#if !defined(__MUST_ALIGN32_H__)
|
||||
#define __MUST_ALIGN32_H__
|
||||
|
||||
|
||||
/* must we always align 32 bit accesses? */
|
||||
/* forced to not require 32 bit alignment */
|
||||
#undef MUST_ALIGN32
|
||||
|
||||
|
||||
#endif /* !__MUST_ALIGN32_H__ */
|
18
win32/args.h
Normal file
18
win32/args.h
Normal file
@@ -0,0 +1,18 @@
|
||||
/*
|
||||
* DO NOT EDIT -- generated by the Makefile
|
||||
*/
|
||||
|
||||
|
||||
#if !defined(__ARGS_H__)
|
||||
#define __ARGS_H__
|
||||
|
||||
|
||||
/* what type of variable args do we have? */
|
||||
#define STDARG /* use <stdarg.h> */
|
||||
#include <stdarg.h>
|
||||
|
||||
/* should we use vsprintf()? */
|
||||
#define HAVE_VS /* yes */
|
||||
|
||||
|
||||
#endif /* !__ARGS_H__ */
|
379
win32/calcerr.c
Normal file
379
win32/calcerr.c
Normal file
@@ -0,0 +1,379 @@
|
||||
/*
|
||||
* DO NOT EDIT
|
||||
*
|
||||
* generated by calcerr.tbl via Makefile
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
#include "calcerr.h"
|
||||
|
||||
#include "have_const.h"
|
||||
|
||||
/*
|
||||
* names of calc error values
|
||||
*/
|
||||
CONST char *error_table[E__COUNT+2] = {
|
||||
"No error",
|
||||
"Division by zero",
|
||||
"Indeterminate (0/0)",
|
||||
"Bad arguments for +",
|
||||
"Bad arguments for binary -",
|
||||
"Bad arguments for *",
|
||||
"Bad arguments for /",
|
||||
"Bad argument for unary -",
|
||||
"Bad argument for squaring",
|
||||
"Bad argument for inverse",
|
||||
"Bad argument for ++",
|
||||
"Bad argument for --",
|
||||
"Bad argument for int",
|
||||
"Bad argument for frac",
|
||||
"Bad argument for conj",
|
||||
"Bad first argument for appr",
|
||||
"Bad second argument for appr",
|
||||
"Bad third argument for appr",
|
||||
"Bad first argument for round",
|
||||
"Bad second argument for round",
|
||||
"Bad third argument for round",
|
||||
"Bad first argument for bround",
|
||||
"Bad second argument for bround",
|
||||
"Bad third argument for bround",
|
||||
"Bad first argument for sqrt",
|
||||
"Bad second argument for sqrt",
|
||||
"Bad third argument for sqrt",
|
||||
"Bad first argument for root",
|
||||
"Bad second argument for root",
|
||||
"Bad third argument for root",
|
||||
"Bad argument for norm",
|
||||
"Bad first argument for << or >>",
|
||||
"Bad second argument for << or >>",
|
||||
"Bad first argument for scale",
|
||||
"Bad second argument for scale",
|
||||
"Bad first argument for ^",
|
||||
"Bad second argument for ^",
|
||||
"Bad first argument for power",
|
||||
"Bad second argument for power",
|
||||
"Bad third argument for power",
|
||||
"Bad first argument for quo or //",
|
||||
"Bad second argument for quo or //",
|
||||
"Bad third argument for quo",
|
||||
"Bad first argument for mod or %",
|
||||
"Bad second argument for mod or %",
|
||||
"Bad third argument for mod",
|
||||
"Bad argument for sgn",
|
||||
"Bad first argument for abs",
|
||||
"Bad second argument for abs",
|
||||
"Scan error in argument for eval",
|
||||
"Non-simple type for str",
|
||||
"Non-real epsilon for exp",
|
||||
"Bad first argument for exp",
|
||||
"Non-file first argument for fputc",
|
||||
"Bad second argument for fputc",
|
||||
"File not open for writing for fputc",
|
||||
"Non-file first argument for fgetc",
|
||||
"File not open for reading for fgetc",
|
||||
"Non-string arguments for fopen",
|
||||
"Unrecognized mode for fopen",
|
||||
"Non-file first argument for freopen",
|
||||
"Non-string or unrecognized mode for freopen",
|
||||
"Non-string third argument for freopen",
|
||||
"Non-file argument for fclose",
|
||||
"Non-file argument for fflush",
|
||||
"Non-file first argument for fputs",
|
||||
"Non-string argument after first for fputs",
|
||||
"File not open for writing for fputs",
|
||||
"Non-file argument for fgets",
|
||||
"File not open for reading for fgets",
|
||||
"Non-file first argument for fputstr",
|
||||
"Non-string argument after first for fputstr",
|
||||
"File not open for writing for fputstr",
|
||||
"Non-file first argument for fgetstr",
|
||||
"File not open for reading for fgetstr",
|
||||
"Non-file argument for fgetline",
|
||||
"File not open for reading for fgetline",
|
||||
"Non-file argument for fgetfield",
|
||||
"File not open for reading for fgetfield",
|
||||
"Non-file argument for rewind",
|
||||
"Non-integer argument for files",
|
||||
"Non-string fmt argument for fprint",
|
||||
"Stdout not open for writing to ???",
|
||||
"Non-file first argument for fprintf",
|
||||
"Non-string second (fmt) argument for fprintf",
|
||||
"File not open for writing for fprintf",
|
||||
"Non-string first (fmt) argument for strprintf",
|
||||
"Error in attempting strprintf ???",
|
||||
"Non-file first argument for fscan",
|
||||
"File not open for reading for fscan",
|
||||
"Non-string first argument for strscan",
|
||||
"Non-file first argument for fscanf",
|
||||
"Non-string second (fmt) argument for fscanf",
|
||||
"Non-lvalue argument after second for fscanf",
|
||||
"File not open for reading or other error for fscanf",
|
||||
"Non-string first argument for strscanf",
|
||||
"Non-string second (fmt) argument for strscanf",
|
||||
"Non-lvalue argument after second for strscanf",
|
||||
"Some error in attempting strscanf ???",
|
||||
"Non-string first (fmt) argument for scanf",
|
||||
"Non-lvalue argument after first for scanf",
|
||||
"Some error in attempting scanf ???",
|
||||
"Non-file argument for ftell",
|
||||
"File not open or other error for ftell",
|
||||
"Non-file first argument for fseek",
|
||||
"Non-integer or negative second argument for fseek",
|
||||
"File not open or other error for fseek",
|
||||
"Non-file argument for fsize",
|
||||
"File not open or other error for fsize",
|
||||
"Non-file argument for feof",
|
||||
"File not open or other error for feof",
|
||||
"Non-file argument for ferror",
|
||||
"File not open or other error for ferror",
|
||||
"Non-file argument for ungetc",
|
||||
"File not open for reading for ungetc",
|
||||
"Bad second argument or other error for ungetc",
|
||||
"Exponent too big in scanning",
|
||||
"E_ISATTY1 is no longer used",
|
||||
"E_ISATTY2 is no longer used",
|
||||
"Non-string first argument for access",
|
||||
"Bad second argument for access",
|
||||
"Bad first argument for search",
|
||||
"Bad second argument for search",
|
||||
"Bad third argument for search",
|
||||
"Bad fourth argument for search",
|
||||
"Cannot find fsize or fpos for search",
|
||||
"File not readable for search",
|
||||
"Bad first argument for rsearch",
|
||||
"Bad second argument for rsearch",
|
||||
"Bad third argument for rsearch",
|
||||
"Bad fourth argument for rsearch",
|
||||
"Cannot find fsize or fpos for rsearch",
|
||||
"File not readable for rsearch",
|
||||
"Too many open files",
|
||||
"Attempt to rewind a file that is not open",
|
||||
"Bad argument type for strerror",
|
||||
"Index out of range for strerror",
|
||||
"Bad epsilon for cos",
|
||||
"Bad first argument for cos",
|
||||
"Bad epsilon for sin",
|
||||
"Bad first argument for sin",
|
||||
"Non-string argument for eval",
|
||||
"Bad epsilon for arg",
|
||||
"Bad first argument for arg",
|
||||
"Non-real argument for polar",
|
||||
"Bad epsilon for polar",
|
||||
"Non-integral argument for fcnt",
|
||||
"Non-variable first argument for matfill",
|
||||
"Non-matrix first argument-value for matfill",
|
||||
"Non-matrix argument for matdim",
|
||||
"Non-matrix argument for matsum",
|
||||
"E_ISIDENT is no longer used",
|
||||
"Non-matrix argument for mattrans",
|
||||
"Non-two-dimensional matrix for mattrans",
|
||||
"Non-matrix argument for det",
|
||||
"Matrix for det not of dimension 2",
|
||||
"Non-square matrix for det",
|
||||
"Non-matrix first argument for matmin",
|
||||
"Non-positive-integer second argument for matmin",
|
||||
"Second argument for matmin exceeds dimension",
|
||||
"Non-matrix first argument for matmin",
|
||||
"Second argument for matmax not positive integer",
|
||||
"Second argument for matmax exceeds dimension",
|
||||
"Non-matrix argument for cp",
|
||||
"Non-one-dimensional matrix for cp",
|
||||
"Matrix size not 3 for cp",
|
||||
"Non-matrix argument for dp",
|
||||
"Non-one-dimensional matrix for dp",
|
||||
"Different-size matrices for dp",
|
||||
"Non-string argument for strlen",
|
||||
"Non-string argument for strcat",
|
||||
"Non-string first argument for strcat",
|
||||
"Non-non-negative integer second argument for strcat",
|
||||
"Bad argument for char",
|
||||
"Non-string argument for ord",
|
||||
"Non-list-variable first argument for insert",
|
||||
"Non-integral second argument for insert",
|
||||
"Non-list-variable first argument for push",
|
||||
"Non-list-variable first argument for append",
|
||||
"Non-list-variable first argument for delete",
|
||||
"Non-integral second argument for delete",
|
||||
"Non-list-variable argument for pop",
|
||||
"Non-list-variable argument for remove",
|
||||
"Bad epsilon argument for ln",
|
||||
"Non-numeric first argument for ln",
|
||||
"Non-integer argument for error",
|
||||
"Argument outside range for error",
|
||||
"Attempt to eval at maximum input depth",
|
||||
"Unable to open string for reading",
|
||||
"First argument for rm is not a non-empty string",
|
||||
"Unable to remove a file",
|
||||
"Operation allowed because calc mode disallows read operations",
|
||||
"Operation allowed because calc mode disallows write operations",
|
||||
"Operation allowed because calc mode disallows exec operations",
|
||||
"Unordered arguments for min",
|
||||
"Unordered arguments for max",
|
||||
"Unordered items for minimum of list",
|
||||
"Unordered items for maximum of list",
|
||||
"Size undefined for argument type",
|
||||
"Calc must be run with a -C argument to use custom function",
|
||||
"Calc was built with custom functions disabled",
|
||||
"Custom function unknown, try: show custom",
|
||||
"Non-integral length for block",
|
||||
"Negative or too-large length for block",
|
||||
"Non-integral chunksize for block",
|
||||
"Negative or too-large chunksize for block",
|
||||
"Named block does not exist for blkfree",
|
||||
"Non-integral id specification for blkfree",
|
||||
"Block with specified id does not exist",
|
||||
"Block already freed",
|
||||
"No-realloc protection prevents blkfree",
|
||||
"Non-integer argument for blocks",
|
||||
"Non-allocated index number for blocks",
|
||||
"Non-integer or negative source index for copy",
|
||||
"Source index too large for copy",
|
||||
"E_COPY3 is no longer used",
|
||||
"Non-integer or negative number for copy",
|
||||
"Number too large for copy",
|
||||
"Non-integer or negative destination index for copy",
|
||||
"Destination index too large for copy",
|
||||
"Freed block source for copy",
|
||||
"Unsuitable source type for copy",
|
||||
"Freed block destinction for copy",
|
||||
"Unsuitable destination type for copy",
|
||||
"Incompatible source and destination for copy",
|
||||
"No-copy-from source variable",
|
||||
"No-copy-to destination variable",
|
||||
"No-copy-from source named block",
|
||||
"No-copy-to destination named block",
|
||||
"No-relocation destination for copy",
|
||||
"File not open for copy",
|
||||
"fseek or fsize failure for copy",
|
||||
"fwrite error for copy",
|
||||
"fread error for copy",
|
||||
"Non-variable first argument for protect",
|
||||
"Non-integer second argument for protect",
|
||||
"Out-of-range second argument for protect",
|
||||
"No-copy-to destination for matfill",
|
||||
"No-assign-from source for matfill",
|
||||
"Non-matrix argument for mattrace",
|
||||
"Non-two-dimensional argument for mattrace",
|
||||
"Non-square argument for mattrace",
|
||||
"Bad epsilon for tan",
|
||||
"Bad argument for tan",
|
||||
"Bad epsilon for cot",
|
||||
"Bad argument for cot",
|
||||
"Bad epsilon for sec",
|
||||
"Bad argument for sec",
|
||||
"Bad epsilon for csc",
|
||||
"Bad argument for csc",
|
||||
"Bad epsilon for sinh",
|
||||
"Bad argument for sinh",
|
||||
"Bad epsilon for cosh",
|
||||
"Bad argument for cosh",
|
||||
"Bad epsilon for tanh",
|
||||
"Bad argument for tanh",
|
||||
"Bad epsilon for coth",
|
||||
"Bad argument for coth",
|
||||
"Bad epsilon for sech",
|
||||
"Bad argument for sech",
|
||||
"Bad epsilon for csch",
|
||||
"Bad argument for csch",
|
||||
"Bad epsilon for asin",
|
||||
"Bad argument for asin",
|
||||
"Bad epsilon for acos",
|
||||
"Bad argument for acos",
|
||||
"Bad epsilon for atan",
|
||||
"Bad argument for atan",
|
||||
"Bad epsilon for acot",
|
||||
"Bad argument for acot",
|
||||
"Bad epsilon for asec",
|
||||
"Bad argument for asec",
|
||||
"Bad epsilon for acsc",
|
||||
"Bad argument for acsc",
|
||||
"Bad epsilon for asin",
|
||||
"Bad argument for asinh",
|
||||
"Bad epsilon for acosh",
|
||||
"Bad argument for acosh",
|
||||
"Bad epsilon for atanh",
|
||||
"Bad argument for atanh",
|
||||
"Bad epsilon for acoth",
|
||||
"Bad argument for acoth",
|
||||
"Bad epsilon for asech",
|
||||
"Bad argument for asech",
|
||||
"Bad epsilon for acsch",
|
||||
"Bad argument for acsch",
|
||||
"Bad epsilon for gd",
|
||||
"Bad argument for gd",
|
||||
"Bad epsilon for agd",
|
||||
"Bad argument for agd",
|
||||
"Log of zero or infinity",
|
||||
"String addition failure",
|
||||
"String multiplication failure",
|
||||
"String reversal failure",
|
||||
"String subtraction failure",
|
||||
"Bad argument type for bit",
|
||||
"Index too large for bit",
|
||||
"Non-integer second argument for setbit",
|
||||
"Out-of-range index for setbit",
|
||||
"Non-string first argument for setbit",
|
||||
"Bad argument for or",
|
||||
"Bad argument for and",
|
||||
"Allocation failure for string or",
|
||||
"Allocation failure for string and",
|
||||
"Bad argument for xorvalue",
|
||||
"Bad argument for comp",
|
||||
"Allocation failure for string diff",
|
||||
"Allocation failure for string comp",
|
||||
"Bad first argument for segment",
|
||||
"Bad second argument for segment",
|
||||
"Bad third argument for segment",
|
||||
"Failure for string segment",
|
||||
"Bad argument type for highbit",
|
||||
"Non-integer argument for highbit",
|
||||
"Bad argument type for lowbit",
|
||||
"Non-integer argument for lowbit",
|
||||
"Bad argument type for unary hash op",
|
||||
"Bad argument type for binary hash op",
|
||||
"Bad first argument for head",
|
||||
"Bad second argument for head",
|
||||
"Failure for strhead",
|
||||
"Bad first argument for tail",
|
||||
"Bad second argument for tail",
|
||||
"Failure for strtail",
|
||||
"Failure for strshift",
|
||||
"Non-string argument for strcmp",
|
||||
"Bad argument type for strncmp",
|
||||
"Varying types of argument for xor",
|
||||
"Bad argument type for xor",
|
||||
"Bad argument type for strcpy",
|
||||
"Bad argument type for strncpy",
|
||||
"Bad argument type for unary backslash",
|
||||
"Bad argument type for setminus",
|
||||
"Bad first argument type for indices",
|
||||
"Bad second argument for indices",
|
||||
"Too-large re(argument) for exp",
|
||||
"Too-large re(argument) for sinh",
|
||||
"Too-large re(argument) for cosh",
|
||||
"Too-large im(argument) for sin",
|
||||
"Too-large im(argument) for cos",
|
||||
"Infinite or too-large result for gd",
|
||||
"Infinite or too-large result for agd",
|
||||
"Too-large value for power",
|
||||
"Too-large value for root",
|
||||
"Non-real first arg for digit",
|
||||
"Non-integral second arg for digit",
|
||||
"Bad third arg for digit",
|
||||
"Bad first argument for places",
|
||||
"Bad second argument for places",
|
||||
"Bad first argument for digits",
|
||||
"Bad second argument for digits",
|
||||
"Bad first argument for ilog",
|
||||
"Bad second argument for ilog",
|
||||
"Bad argument for ilog10",
|
||||
"Bad argument for ilog2",
|
||||
"Non-integer second arg for comb",
|
||||
"Too-large second arg for comb",
|
||||
"Bad argument for catalan",
|
||||
"Bad argument for bern",
|
||||
"Bad argument for euler",
|
||||
"Bad argument for sleep",
|
||||
"calc_tty failure",
|
||||
NULL
|
||||
};
|
383
win32/calcerr.h
Normal file
383
win32/calcerr.h
Normal file
@@ -0,0 +1,383 @@
|
||||
/*
|
||||
* DO NOT EDIT
|
||||
*
|
||||
* generated by calcerr.tbl via Makefile
|
||||
*/
|
||||
|
||||
|
||||
#if !defined(__CALCERR_H__)
|
||||
#define __CALCERR_H__
|
||||
|
||||
|
||||
#define E__BASE 10000 /* calc errors start above here */
|
||||
|
||||
#define E_1OVER0 10001 /* Division by zero */
|
||||
#define E_0OVER0 10002 /* Indeterminate (0/0) */
|
||||
#define E_ADD 10003 /* Bad arguments for + */
|
||||
#define E_SUB 10004 /* Bad arguments for binary - */
|
||||
#define E_MUL 10005 /* Bad arguments for * */
|
||||
#define E_DIV 10006 /* Bad arguments for / */
|
||||
#define E_NEG 10007 /* Bad argument for unary - */
|
||||
#define E_SQUARE 10008 /* Bad argument for squaring */
|
||||
#define E_INV 10009 /* Bad argument for inverse */
|
||||
#define E_INCV 10010 /* Bad argument for ++ */
|
||||
#define E_DECV 10011 /* Bad argument for -- */
|
||||
#define E_INT 10012 /* Bad argument for int */
|
||||
#define E_FRAC 10013 /* Bad argument for frac */
|
||||
#define E_CONJ 10014 /* Bad argument for conj */
|
||||
#define E_APPR 10015 /* Bad first argument for appr */
|
||||
#define E_APPR2 10016 /* Bad second argument for appr */
|
||||
#define E_APPR3 10017 /* Bad third argument for appr */
|
||||
#define E_ROUND 10018 /* Bad first argument for round */
|
||||
#define E_ROUND2 10019 /* Bad second argument for round */
|
||||
#define E_ROUND3 10020 /* Bad third argument for round */
|
||||
#define E_BROUND 10021 /* Bad first argument for bround */
|
||||
#define E_BROUND2 10022 /* Bad second argument for bround */
|
||||
#define E_BROUND3 10023 /* Bad third argument for bround */
|
||||
#define E_SQRT 10024 /* Bad first argument for sqrt */
|
||||
#define E_SQRT2 10025 /* Bad second argument for sqrt */
|
||||
#define E_SQRT3 10026 /* Bad third argument for sqrt */
|
||||
#define E_ROOT 10027 /* Bad first argument for root */
|
||||
#define E_ROOT2 10028 /* Bad second argument for root */
|
||||
#define E_ROOT3 10029 /* Bad third argument for root */
|
||||
#define E_NORM 10030 /* Bad argument for norm */
|
||||
#define E_SHIFT 10031 /* Bad first argument for << or >> */
|
||||
#define E_SHIFT2 10032 /* Bad second argument for << or >> */
|
||||
#define E_SCALE 10033 /* Bad first argument for scale */
|
||||
#define E_SCALE2 10034 /* Bad second argument for scale */
|
||||
#define E_POWI 10035 /* Bad first argument for ^ */
|
||||
#define E_POWI2 10036 /* Bad second argument for ^ */
|
||||
#define E_POWER 10037 /* Bad first argument for power */
|
||||
#define E_POWER2 10038 /* Bad second argument for power */
|
||||
#define E_POWER3 10039 /* Bad third argument for power */
|
||||
#define E_QUO 10040 /* Bad first argument for quo or // */
|
||||
#define E_QUO2 10041 /* Bad second argument for quo or // */
|
||||
#define E_QUO3 10042 /* Bad third argument for quo */
|
||||
#define E_MOD 10043 /* Bad first argument for mod or % */
|
||||
#define E_MOD2 10044 /* Bad second argument for mod or % */
|
||||
#define E_MOD3 10045 /* Bad third argument for mod */
|
||||
#define E_SGN 10046 /* Bad argument for sgn */
|
||||
#define E_ABS 10047 /* Bad first argument for abs */
|
||||
#define E_ABS2 10048 /* Bad second argument for abs */
|
||||
#define E_EVAL 10049 /* Scan error in argument for eval */
|
||||
#define E_STR 10050 /* Non-simple type for str */
|
||||
#define E_EXP1 10051 /* Non-real epsilon for exp */
|
||||
#define E_EXP2 10052 /* Bad first argument for exp */
|
||||
#define E_FPUTC1 10053 /* Non-file first argument for fputc */
|
||||
#define E_FPUTC2 10054 /* Bad second argument for fputc */
|
||||
#define E_FPUTC3 10055 /* File not open for writing for fputc */
|
||||
#define E_FGETC1 10056 /* Non-file first argument for fgetc */
|
||||
#define E_FGETC2 10057 /* File not open for reading for fgetc */
|
||||
#define E_FOPEN1 10058 /* Non-string arguments for fopen */
|
||||
#define E_FOPEN2 10059 /* Unrecognized mode for fopen */
|
||||
#define E_FREOPEN1 10060 /* Non-file first argument for freopen */
|
||||
#define E_FREOPEN2 10061 /* Non-string or unrecognized mode for freopen */
|
||||
#define E_FREOPEN3 10062 /* Non-string third argument for freopen */
|
||||
#define E_FCLOSE1 10063 /* Non-file argument for fclose */
|
||||
#define E_FFLUSH 10064 /* Non-file argument for fflush */
|
||||
#define E_FPUTS1 10065 /* Non-file first argument for fputs */
|
||||
#define E_FPUTS2 10066 /* Non-string argument after first for fputs */
|
||||
#define E_FPUTS3 10067 /* File not open for writing for fputs */
|
||||
#define E_FGETS1 10068 /* Non-file argument for fgets */
|
||||
#define E_FGETS2 10069 /* File not open for reading for fgets */
|
||||
#define E_FPUTSTR1 10070 /* Non-file first argument for fputstr */
|
||||
#define E_FPUTSTR2 10071 /* Non-string argument after first for fputstr */
|
||||
#define E_FPUTSTR3 10072 /* File not open for writing for fputstr */
|
||||
#define E_FGETSTR1 10073 /* Non-file first argument for fgetstr */
|
||||
#define E_FGETSTR2 10074 /* File not open for reading for fgetstr */
|
||||
#define E_FGETLINE1 10075 /* Non-file argument for fgetline */
|
||||
#define E_FGETLINE2 10076 /* File not open for reading for fgetline */
|
||||
#define E_FGETFIELD1 10077 /* Non-file argument for fgetfield */
|
||||
#define E_FGETFIELD2 10078 /* File not open for reading for fgetfield */
|
||||
#define E_REWIND1 10079 /* Non-file argument for rewind */
|
||||
#define E_FILES 10080 /* Non-integer argument for files */
|
||||
#define E_PRINTF1 10081 /* Non-string fmt argument for fprint */
|
||||
#define E_PRINTF2 10082 /* Stdout not open for writing to ??? */
|
||||
#define E_FPRINTF1 10083 /* Non-file first argument for fprintf */
|
||||
#define E_FPRINTF2 10084 /* Non-string second (fmt) argument for fprintf */
|
||||
#define E_FPRINTF3 10085 /* File not open for writing for fprintf */
|
||||
#define E_STRPRINTF1 10086 /* Non-string first (fmt) argument for strprintf */
|
||||
#define E_STRPRINTF2 10087 /* Error in attempting strprintf ??? */
|
||||
#define E_FSCAN1 10088 /* Non-file first argument for fscan */
|
||||
#define E_FSCAN2 10089 /* File not open for reading for fscan */
|
||||
#define E_STRSCAN 10090 /* Non-string first argument for strscan */
|
||||
#define E_FSCANF1 10091 /* Non-file first argument for fscanf */
|
||||
#define E_FSCANF2 10092 /* Non-string second (fmt) argument for fscanf */
|
||||
#define E_FSCANF3 10093 /* Non-lvalue argument after second for fscanf */
|
||||
#define E_FSCANF4 10094 /* File not open for reading or other error for fscanf */
|
||||
#define E_STRSCANF1 10095 /* Non-string first argument for strscanf */
|
||||
#define E_STRSCANF2 10096 /* Non-string second (fmt) argument for strscanf */
|
||||
#define E_STRSCANF3 10097 /* Non-lvalue argument after second for strscanf */
|
||||
#define E_STRSCANF4 10098 /* Some error in attempting strscanf ??? */
|
||||
#define E_SCANF1 10099 /* Non-string first (fmt) argument for scanf */
|
||||
#define E_SCANF2 10100 /* Non-lvalue argument after first for scanf */
|
||||
#define E_SCANF3 10101 /* Some error in attempting scanf ??? */
|
||||
#define E_FTELL1 10102 /* Non-file argument for ftell */
|
||||
#define E_FTELL2 10103 /* File not open or other error for ftell */
|
||||
#define E_FSEEK1 10104 /* Non-file first argument for fseek */
|
||||
#define E_FSEEK2 10105 /* Non-integer or negative second argument for fseek */
|
||||
#define E_FSEEK3 10106 /* File not open or other error for fseek */
|
||||
#define E_FSIZE1 10107 /* Non-file argument for fsize */
|
||||
#define E_FSIZE2 10108 /* File not open or other error for fsize */
|
||||
#define E_FEOF1 10109 /* Non-file argument for feof */
|
||||
#define E_FEOF2 10110 /* File not open or other error for feof */
|
||||
#define E_FERROR1 10111 /* Non-file argument for ferror */
|
||||
#define E_FERROR2 10112 /* File not open or other error for ferror */
|
||||
#define E_UNGETC1 10113 /* Non-file argument for ungetc */
|
||||
#define E_UNGETC2 10114 /* File not open for reading for ungetc */
|
||||
#define E_UNGETC3 10115 /* Bad second argument or other error for ungetc */
|
||||
#define E_BIGEXP 10116 /* Exponent too big in scanning */
|
||||
#define E_ISATTY1 10117 /* E_ISATTY1 is no longer used */
|
||||
#define E_ISATTY2 10118 /* E_ISATTY2 is no longer used */
|
||||
#define E_ACCESS1 10119 /* Non-string first argument for access */
|
||||
#define E_ACCESS2 10120 /* Bad second argument for access */
|
||||
#define E_SEARCH1 10121 /* Bad first argument for search */
|
||||
#define E_SEARCH2 10122 /* Bad second argument for search */
|
||||
#define E_SEARCH3 10123 /* Bad third argument for search */
|
||||
#define E_SEARCH4 10124 /* Bad fourth argument for search */
|
||||
#define E_SEARCH5 10125 /* Cannot find fsize or fpos for search */
|
||||
#define E_SEARCH6 10126 /* File not readable for search */
|
||||
#define E_RSEARCH1 10127 /* Bad first argument for rsearch */
|
||||
#define E_RSEARCH2 10128 /* Bad second argument for rsearch */
|
||||
#define E_RSEARCH3 10129 /* Bad third argument for rsearch */
|
||||
#define E_RSEARCH4 10130 /* Bad fourth argument for rsearch */
|
||||
#define E_RSEARCH5 10131 /* Cannot find fsize or fpos for rsearch */
|
||||
#define E_RSEARCH6 10132 /* File not readable for rsearch */
|
||||
#define E_FOPEN3 10133 /* Too many open files */
|
||||
#define E_REWIND2 10134 /* Attempt to rewind a file that is not open */
|
||||
#define E_STRERROR1 10135 /* Bad argument type for strerror */
|
||||
#define E_STRERROR2 10136 /* Index out of range for strerror */
|
||||
#define E_COS1 10137 /* Bad epsilon for cos */
|
||||
#define E_COS2 10138 /* Bad first argument for cos */
|
||||
#define E_SIN1 10139 /* Bad epsilon for sin */
|
||||
#define E_SIN2 10140 /* Bad first argument for sin */
|
||||
#define E_EVAL2 10141 /* Non-string argument for eval */
|
||||
#define E_ARG1 10142 /* Bad epsilon for arg */
|
||||
#define E_ARG2 10143 /* Bad first argument for arg */
|
||||
#define E_POLAR1 10144 /* Non-real argument for polar */
|
||||
#define E_POLAR2 10145 /* Bad epsilon for polar */
|
||||
#define E_FCNT 10146 /* Non-integral argument for fcnt */
|
||||
#define E_MATFILL1 10147 /* Non-variable first argument for matfill */
|
||||
#define E_MATFILL2 10148 /* Non-matrix first argument-value for matfill */
|
||||
#define E_MATDIM 10149 /* Non-matrix argument for matdim */
|
||||
#define E_MATSUM 10150 /* Non-matrix argument for matsum */
|
||||
#define E_ISIDENT 10151 /* E_ISIDENT is no longer used */
|
||||
#define E_MATTRANS1 10152 /* Non-matrix argument for mattrans */
|
||||
#define E_MATTRANS2 10153 /* Non-two-dimensional matrix for mattrans */
|
||||
#define E_DET1 10154 /* Non-matrix argument for det */
|
||||
#define E_DET2 10155 /* Matrix for det not of dimension 2 */
|
||||
#define E_DET3 10156 /* Non-square matrix for det */
|
||||
#define E_MATMIN1 10157 /* Non-matrix first argument for matmin */
|
||||
#define E_MATMIN2 10158 /* Non-positive-integer second argument for matmin */
|
||||
#define E_MATMIN3 10159 /* Second argument for matmin exceeds dimension */
|
||||
#define E_MATMAX1 10160 /* Non-matrix first argument for matmin */
|
||||
#define E_MATMAX2 10161 /* Second argument for matmax not positive integer */
|
||||
#define E_MATMAX3 10162 /* Second argument for matmax exceeds dimension */
|
||||
#define E_CP1 10163 /* Non-matrix argument for cp */
|
||||
#define E_CP2 10164 /* Non-one-dimensional matrix for cp */
|
||||
#define E_CP3 10165 /* Matrix size not 3 for cp */
|
||||
#define E_DP1 10166 /* Non-matrix argument for dp */
|
||||
#define E_DP2 10167 /* Non-one-dimensional matrix for dp */
|
||||
#define E_DP3 10168 /* Different-size matrices for dp */
|
||||
#define E_STRLEN 10169 /* Non-string argument for strlen */
|
||||
#define E_STRCAT 10170 /* Non-string argument for strcat */
|
||||
#define E_SUBSTR1 10171 /* Non-string first argument for strcat */
|
||||
#define E_SUBSTR2 10172 /* Non-non-negative integer second argument for strcat */
|
||||
#define E_CHAR 10173 /* Bad argument for char */
|
||||
#define E_ORD 10174 /* Non-string argument for ord */
|
||||
#define E_INSERT1 10175 /* Non-list-variable first argument for insert */
|
||||
#define E_INSERT2 10176 /* Non-integral second argument for insert */
|
||||
#define E_PUSH 10177 /* Non-list-variable first argument for push */
|
||||
#define E_APPEND 10178 /* Non-list-variable first argument for append */
|
||||
#define E_DELETE1 10179 /* Non-list-variable first argument for delete */
|
||||
#define E_DELETE2 10180 /* Non-integral second argument for delete */
|
||||
#define E_POP 10181 /* Non-list-variable argument for pop */
|
||||
#define E_REMOVE 10182 /* Non-list-variable argument for remove */
|
||||
#define E_LN1 10183 /* Bad epsilon argument for ln */
|
||||
#define E_LN2 10184 /* Non-numeric first argument for ln */
|
||||
#define E_ERROR1 10185 /* Non-integer argument for error */
|
||||
#define E_ERROR2 10186 /* Argument outside range for error */
|
||||
#define E_EVAL3 10187 /* Attempt to eval at maximum input depth */
|
||||
#define E_EVAL4 10188 /* Unable to open string for reading */
|
||||
#define E_RM1 10189 /* First argument for rm is not a non-empty string */
|
||||
#define E_RM2 10190 /* Unable to remove a file */
|
||||
#define E_RDPERM 10191 /* Operation allowed because calc mode disallows read operations */
|
||||
#define E_WRPERM 10192 /* Operation allowed because calc mode disallows write operations */
|
||||
#define E_EXPERM 10193 /* Operation allowed because calc mode disallows exec operations */
|
||||
#define E_MIN 10194 /* Unordered arguments for min */
|
||||
#define E_MAX 10195 /* Unordered arguments for max */
|
||||
#define E_LISTMIN 10196 /* Unordered items for minimum of list */
|
||||
#define E_LISTMAX 10197 /* Unordered items for maximum of list */
|
||||
#define E_SIZE 10198 /* Size undefined for argument type */
|
||||
#define E_NO_C_ARG 10199 /* Calc must be run with a -C argument to use custom function */
|
||||
#define E_NO_CUSTOM 10200 /* Calc was built with custom functions disabled */
|
||||
#define E_UNK_CUSTOM 10201 /* Custom function unknown, try: show custom */
|
||||
#define E_BLK1 10202 /* Non-integral length for block */
|
||||
#define E_BLK2 10203 /* Negative or too-large length for block */
|
||||
#define E_BLK3 10204 /* Non-integral chunksize for block */
|
||||
#define E_BLK4 10205 /* Negative or too-large chunksize for block */
|
||||
#define E_BLKFREE1 10206 /* Named block does not exist for blkfree */
|
||||
#define E_BLKFREE2 10207 /* Non-integral id specification for blkfree */
|
||||
#define E_BLKFREE3 10208 /* Block with specified id does not exist */
|
||||
#define E_BLKFREE4 10209 /* Block already freed */
|
||||
#define E_BLKFREE5 10210 /* No-realloc protection prevents blkfree */
|
||||
#define E_BLOCKS1 10211 /* Non-integer argument for blocks */
|
||||
#define E_BLOCKS2 10212 /* Non-allocated index number for blocks */
|
||||
#define E_COPY1 10213 /* Non-integer or negative source index for copy */
|
||||
#define E_COPY2 10214 /* Source index too large for copy */
|
||||
#define E_COPY3 10215 /* E_COPY3 is no longer used */
|
||||
#define E_COPY4 10216 /* Non-integer or negative number for copy */
|
||||
#define E_COPY5 10217 /* Number too large for copy */
|
||||
#define E_COPY6 10218 /* Non-integer or negative destination index for copy */
|
||||
#define E_COPY7 10219 /* Destination index too large for copy */
|
||||
#define E_COPY8 10220 /* Freed block source for copy */
|
||||
#define E_COPY9 10221 /* Unsuitable source type for copy */
|
||||
#define E_COPY10 10222 /* Freed block destinction for copy */
|
||||
#define E_COPY11 10223 /* Unsuitable destination type for copy */
|
||||
#define E_COPY12 10224 /* Incompatible source and destination for copy */
|
||||
#define E_COPY13 10225 /* No-copy-from source variable */
|
||||
#define E_COPY14 10226 /* No-copy-to destination variable */
|
||||
#define E_COPY15 10227 /* No-copy-from source named block */
|
||||
#define E_COPY16 10228 /* No-copy-to destination named block */
|
||||
#define E_COPY17 10229 /* No-relocation destination for copy */
|
||||
#define E_COPYF1 10230 /* File not open for copy */
|
||||
#define E_COPYF2 10231 /* fseek or fsize failure for copy */
|
||||
#define E_COPYF3 10232 /* fwrite error for copy */
|
||||
#define E_COPYF4 10233 /* fread error for copy */
|
||||
#define E_PROTECT1 10234 /* Non-variable first argument for protect */
|
||||
#define E_PROTECT2 10235 /* Non-integer second argument for protect */
|
||||
#define E_PROTECT3 10236 /* Out-of-range second argument for protect */
|
||||
#define E_MATFILL3 10237 /* No-copy-to destination for matfill */
|
||||
#define E_MATFILL4 10238 /* No-assign-from source for matfill */
|
||||
#define E_MATTRACE1 10239 /* Non-matrix argument for mattrace */
|
||||
#define E_MATTRACE2 10240 /* Non-two-dimensional argument for mattrace */
|
||||
#define E_MATTRACE3 10241 /* Non-square argument for mattrace */
|
||||
#define E_TAN1 10242 /* Bad epsilon for tan */
|
||||
#define E_TAN2 10243 /* Bad argument for tan */
|
||||
#define E_COT1 10244 /* Bad epsilon for cot */
|
||||
#define E_COT2 10245 /* Bad argument for cot */
|
||||
#define E_SEC1 10246 /* Bad epsilon for sec */
|
||||
#define E_SEC2 10247 /* Bad argument for sec */
|
||||
#define E_CSC1 10248 /* Bad epsilon for csc */
|
||||
#define E_CSC2 10249 /* Bad argument for csc */
|
||||
#define E_SINH1 10250 /* Bad epsilon for sinh */
|
||||
#define E_SINH2 10251 /* Bad argument for sinh */
|
||||
#define E_COSH1 10252 /* Bad epsilon for cosh */
|
||||
#define E_COSH2 10253 /* Bad argument for cosh */
|
||||
#define E_TANH1 10254 /* Bad epsilon for tanh */
|
||||
#define E_TANH2 10255 /* Bad argument for tanh */
|
||||
#define E_COTH1 10256 /* Bad epsilon for coth */
|
||||
#define E_COTH2 10257 /* Bad argument for coth */
|
||||
#define E_SECH1 10258 /* Bad epsilon for sech */
|
||||
#define E_SECH2 10259 /* Bad argument for sech */
|
||||
#define E_CSCH1 10260 /* Bad epsilon for csch */
|
||||
#define E_CSCH2 10261 /* Bad argument for csch */
|
||||
#define E_ASIN1 10262 /* Bad epsilon for asin */
|
||||
#define E_ASIN2 10263 /* Bad argument for asin */
|
||||
#define E_ACOS1 10264 /* Bad epsilon for acos */
|
||||
#define E_ACOS2 10265 /* Bad argument for acos */
|
||||
#define E_ATAN1 10266 /* Bad epsilon for atan */
|
||||
#define E_ATAN2 10267 /* Bad argument for atan */
|
||||
#define E_ACOT1 10268 /* Bad epsilon for acot */
|
||||
#define E_ACOT2 10269 /* Bad argument for acot */
|
||||
#define E_ASEC1 10270 /* Bad epsilon for asec */
|
||||
#define E_ASEC2 10271 /* Bad argument for asec */
|
||||
#define E_ACSC1 10272 /* Bad epsilon for acsc */
|
||||
#define E_ACSC2 10273 /* Bad argument for acsc */
|
||||
#define E_ASINH1 10274 /* Bad epsilon for asin */
|
||||
#define E_ASINH2 10275 /* Bad argument for asinh */
|
||||
#define E_ACOSH1 10276 /* Bad epsilon for acosh */
|
||||
#define E_ACOSH2 10277 /* Bad argument for acosh */
|
||||
#define E_ATANH1 10278 /* Bad epsilon for atanh */
|
||||
#define E_ATANH2 10279 /* Bad argument for atanh */
|
||||
#define E_ACOTH1 10280 /* Bad epsilon for acoth */
|
||||
#define E_ACOTH2 10281 /* Bad argument for acoth */
|
||||
#define E_ASECH1 10282 /* Bad epsilon for asech */
|
||||
#define E_ASECH2 10283 /* Bad argument for asech */
|
||||
#define E_ACSCH1 10284 /* Bad epsilon for acsch */
|
||||
#define E_ACSCH2 10285 /* Bad argument for acsch */
|
||||
#define E_GD1 10286 /* Bad epsilon for gd */
|
||||
#define E_GD2 10287 /* Bad argument for gd */
|
||||
#define E_AGD1 10288 /* Bad epsilon for agd */
|
||||
#define E_AGD2 10289 /* Bad argument for agd */
|
||||
#define E_LOGINF 10290 /* Log of zero or infinity */
|
||||
#define E_STRADD 10291 /* String addition failure */
|
||||
#define E_STRMUL 10292 /* String multiplication failure */
|
||||
#define E_STRNEG 10293 /* String reversal failure */
|
||||
#define E_STRSUB 10294 /* String subtraction failure */
|
||||
#define E_BIT1 10295 /* Bad argument type for bit */
|
||||
#define E_BIT2 10296 /* Index too large for bit */
|
||||
#define E_SETBIT1 10297 /* Non-integer second argument for setbit */
|
||||
#define E_SETBIT2 10298 /* Out-of-range index for setbit */
|
||||
#define E_SETBIT3 10299 /* Non-string first argument for setbit */
|
||||
#define E_OR 10300 /* Bad argument for or */
|
||||
#define E_AND 10301 /* Bad argument for and */
|
||||
#define E_STROR 10302 /* Allocation failure for string or */
|
||||
#define E_STRAND 10303 /* Allocation failure for string and */
|
||||
#define E_XOR 10304 /* Bad argument for xorvalue */
|
||||
#define E_COMP 10305 /* Bad argument for comp */
|
||||
#define E_STRDIFF 10306 /* Allocation failure for string diff */
|
||||
#define E_STRCOMP 10307 /* Allocation failure for string comp */
|
||||
#define E_SEG1 10308 /* Bad first argument for segment */
|
||||
#define E_SEG2 10309 /* Bad second argument for segment */
|
||||
#define E_SEG3 10310 /* Bad third argument for segment */
|
||||
#define E_STRSEG 10311 /* Failure for string segment */
|
||||
#define E_HIGHBIT1 10312 /* Bad argument type for highbit */
|
||||
#define E_HIGHBIT2 10313 /* Non-integer argument for highbit */
|
||||
#define E_LOWBIT1 10314 /* Bad argument type for lowbit */
|
||||
#define E_LOWBIT2 10315 /* Non-integer argument for lowbit */
|
||||
#define E_CONTENT 10316 /* Bad argument type for unary hash op */
|
||||
#define E_HASHOP 10317 /* Bad argument type for binary hash op */
|
||||
#define E_HEAD1 10318 /* Bad first argument for head */
|
||||
#define E_HEAD2 10319 /* Bad second argument for head */
|
||||
#define E_STRHEAD 10320 /* Failure for strhead */
|
||||
#define E_TAIL1 10321 /* Bad first argument for tail */
|
||||
#define E_TAIL2 10322 /* Bad second argument for tail */
|
||||
#define E_STRTAIL 10323 /* Failure for strtail */
|
||||
#define E_STRSHIFT 10324 /* Failure for strshift */
|
||||
#define E_STRCMP 10325 /* Non-string argument for strcmp */
|
||||
#define E_STRNCMP 10326 /* Bad argument type for strncmp */
|
||||
#define E_XOR1 10327 /* Varying types of argument for xor */
|
||||
#define E_XOR2 10328 /* Bad argument type for xor */
|
||||
#define E_STRCPY 10329 /* Bad argument type for strcpy */
|
||||
#define E_STRNCPY 10330 /* Bad argument type for strncpy */
|
||||
#define E_BACKSLASH 10331 /* Bad argument type for unary backslash */
|
||||
#define E_SETMINUS 10332 /* Bad argument type for setminus */
|
||||
#define E_INDICES1 10333 /* Bad first argument type for indices */
|
||||
#define E_INDICES2 10334 /* Bad second argument for indices */
|
||||
#define E_EXP3 10335 /* Too-large re(argument) for exp */
|
||||
#define E_SINH3 10336 /* Too-large re(argument) for sinh */
|
||||
#define E_COSH3 10337 /* Too-large re(argument) for cosh */
|
||||
#define E_SIN3 10338 /* Too-large im(argument) for sin */
|
||||
#define E_COS3 10339 /* Too-large im(argument) for cos */
|
||||
#define E_GD3 10340 /* Infinite or too-large result for gd */
|
||||
#define E_AGD3 10341 /* Infinite or too-large result for agd */
|
||||
#define E_POWER4 10342 /* Too-large value for power */
|
||||
#define E_ROOT4 10343 /* Too-large value for root */
|
||||
#define E_DGT1 10344 /* Non-real first arg for digit */
|
||||
#define E_DGT2 10345 /* Non-integral second arg for digit */
|
||||
#define E_DGT3 10346 /* Bad third arg for digit */
|
||||
#define E_PLCS1 10347 /* Bad first argument for places */
|
||||
#define E_PLCS2 10348 /* Bad second argument for places */
|
||||
#define E_DGTS1 10349 /* Bad first argument for digits */
|
||||
#define E_DGTS2 10350 /* Bad second argument for digits */
|
||||
#define E_ILOG 10351 /* Bad first argument for ilog */
|
||||
#define E_ILOGB 10352 /* Bad second argument for ilog */
|
||||
#define E_ILOG10 10353 /* Bad argument for ilog10 */
|
||||
#define E_ILOG2 10354 /* Bad argument for ilog2 */
|
||||
#define E_COMB1 10355 /* Non-integer second arg for comb */
|
||||
#define E_COMB2 10356 /* Too-large second arg for comb */
|
||||
#define E_CTLN 10357 /* Bad argument for catalan */
|
||||
#define E_BERN 10358 /* Bad argument for bern */
|
||||
#define E_EULER 10359 /* Bad argument for euler */
|
||||
#define E_SLEEP 10360 /* Bad argument for sleep */
|
||||
#define E_TTY 10361 /* calc_tty failure */
|
||||
|
||||
#define E__HIGHEST 10361 /* highest calc error */
|
||||
#define E__COUNT 361 /* number of calc errors */
|
||||
#define E_USERDEF 20000 /* base of user defined errors */
|
||||
|
||||
/* names of calc error values */
|
||||
|
||||
|
||||
#endif /* !__CALCERR_H__ */
|
41
win32/conf.h
Normal file
41
win32/conf.h
Normal file
@@ -0,0 +1,41 @@
|
||||
/*
|
||||
* DO NOT EDIT -- generated by the Makefile
|
||||
*/
|
||||
|
||||
|
||||
#if !defined(__CONF_H__)
|
||||
#define __CONF_H__
|
||||
|
||||
|
||||
/* the default :-separated search path */
|
||||
#if !defined(DEFAULTCALCPATH)
|
||||
#define DEFAULTCALCPATH "./cal"
|
||||
#endif /* DEFAULTCALCPATH */
|
||||
|
||||
/* the default :-separated startup file list */
|
||||
#if !defined(DEFAULTCALCRC)
|
||||
#define DEFAULTCALCRC "/lib/calc/startup:~/.calcrc:./.calcinit"
|
||||
#endif /* DEFAULTCALCRC */
|
||||
|
||||
/* the location of the help directory */
|
||||
#if !defined(HELPDIR)
|
||||
#define HELPDIR "/lib/calc/help"
|
||||
#endif /* HELPDIR */
|
||||
|
||||
/* the location of the custom help directory */
|
||||
#if !defined(CUSTOMHELPDIR)
|
||||
#define CUSTOMHELPDIR "/lib/calc/help/custhelp"
|
||||
#endif /* CUSTOMHELPDIR */
|
||||
|
||||
/* the default pager to use */
|
||||
#if !defined(DEFAULTCALCPAGER)
|
||||
#define DEFAULTCALCPAGER ""
|
||||
#endif /* DEFAULTCALCPAGER */
|
||||
|
||||
/* where the echo command is located */
|
||||
#if !defined(ECHO_PROG)
|
||||
#define ECHO_PROG ""
|
||||
#endif /* ECHO_PROG */
|
||||
|
||||
|
||||
#endif /* !__CONF_H__ */
|
16
win32/endian_calc.h
Normal file
16
win32/endian_calc.h
Normal file
@@ -0,0 +1,16 @@
|
||||
/*
|
||||
* DO NOT EDIT -- generated by the Makefile
|
||||
*/
|
||||
|
||||
|
||||
#if !defined(__ENDIAN_CALC_H__)
|
||||
#define __ENDIAN_CALC_H__
|
||||
|
||||
|
||||
/* what byte order are we? */
|
||||
#define BIG_ENDIAN 4321
|
||||
#define LITTLE_ENDIAN 1234
|
||||
#define CALC_BYTE_ORDER LITTLE_ENDIAN
|
||||
|
||||
|
||||
#endif /* !__ENDIAN_CALC_H__ */
|
28
win32/fposval.h
Normal file
28
win32/fposval.h
Normal file
@@ -0,0 +1,28 @@
|
||||
/*
|
||||
* DO NOT EDIT -- generated by the Makefile
|
||||
*/
|
||||
|
||||
|
||||
#if !defined(__FPOSVAL_H__)
|
||||
#define __FPOSVAL_H__
|
||||
|
||||
|
||||
/* what are our file position & size types? */
|
||||
#undef FILEPOS_BITS
|
||||
#define FILEPOS_BITS 64
|
||||
#define SWAP_HALF_IN_FILEPOS(dest, src) (*(dest) = *(src))
|
||||
|
||||
#undef OFF_T_BITS
|
||||
#define OFF_T_BITS 32
|
||||
#define SWAP_HALF_IN_OFF_T(dest, src) (*(dest) = *(src))
|
||||
|
||||
#undef DEV_BITS
|
||||
#define DEV_BITS 32
|
||||
#define SWAP_HALF_IN_DEV(dest, src) memcpy((void *)(dest), (void *)(src), 4)
|
||||
|
||||
#undef INODE_BITS
|
||||
#define INODE_BITS 16
|
||||
#define SWAP_HALF_IN_INODE(dest, src) memcpy((void *)(dest), (void *)(src), 2)
|
||||
|
||||
|
||||
#endif /* !__FPOSVAL_H__ */
|
16
win32/have_const.h
Normal file
16
win32/have_const.h
Normal file
@@ -0,0 +1,16 @@
|
||||
/*
|
||||
* DO NOT EDIT -- generated by the Makefile
|
||||
*/
|
||||
|
||||
|
||||
#if !defined(__HAVE_CONST_H__)
|
||||
#define __HAVE_CONST_H__
|
||||
|
||||
|
||||
/* do we have or want const? */
|
||||
#define HAVE_CONST /* yes */
|
||||
#undef CONST
|
||||
#define CONST const /* yes */
|
||||
|
||||
|
||||
#endif /* !__HAVE_CONST_H__ */
|
16
win32/have_fpos.h
Normal file
16
win32/have_fpos.h
Normal file
@@ -0,0 +1,16 @@
|
||||
/*
|
||||
* DO NOT EDIT -- generated by the Makefile
|
||||
*/
|
||||
|
||||
|
||||
#if !defined(__HAVE_FPOS_H__)
|
||||
#define __HAVE_FPOS_H__
|
||||
|
||||
|
||||
/* do we have fgetpos & fsetpos functions? */
|
||||
#undef HAVE_FPOS /* no */
|
||||
|
||||
typedef long FILEPOS;
|
||||
|
||||
|
||||
#endif /* !__HAVE_FPOS_H__ */
|
15
win32/have_fpos_pos.h
Normal file
15
win32/have_fpos_pos.h
Normal file
@@ -0,0 +1,15 @@
|
||||
/*
|
||||
* DO NOT EDIT -- generated by the Makefile
|
||||
*/
|
||||
|
||||
|
||||
#if !defined(__HAVE_FPOS_POS_H__)
|
||||
#define __HAVE_FPOS_POS_H__
|
||||
|
||||
|
||||
/* do we have fgetpos & fsetpos functions? */
|
||||
#undef HAVE_FPOS_POS /* no */
|
||||
#undef FPOS_POS_BITS
|
||||
|
||||
|
||||
#endif /* !__HAVE_FPOS_POS_H__ */
|
14
win32/have_getpgid.h
Normal file
14
win32/have_getpgid.h
Normal file
@@ -0,0 +1,14 @@
|
||||
/*
|
||||
* DO NOT EDIT -- generated by the Makefile
|
||||
*/
|
||||
|
||||
|
||||
#if !defined(__HAVE_GETPGID_H__)
|
||||
#define __HAVE_GETPGID_H__
|
||||
|
||||
|
||||
/* do we have or want getpgid()? */
|
||||
#undef HAVE_GETPGID /* no */
|
||||
|
||||
|
||||
#endif /* !__HAVE_GETPGID_H__ */
|
14
win32/have_getprid.h
Normal file
14
win32/have_getprid.h
Normal file
@@ -0,0 +1,14 @@
|
||||
/*
|
||||
* DO NOT EDIT -- generated by the Makefile
|
||||
*/
|
||||
|
||||
|
||||
#if !defined(__HAVE_GETPRID_H__)
|
||||
#define __HAVE_GETPRID_H__
|
||||
|
||||
|
||||
/* do we have or want getprid()? */
|
||||
#undef HAVE_GETPRID /* no */
|
||||
|
||||
|
||||
#endif /* !__HAVE_GETPRID_H__ */
|
14
win32/have_getsid.h
Normal file
14
win32/have_getsid.h
Normal file
@@ -0,0 +1,14 @@
|
||||
/*
|
||||
* DO NOT EDIT -- generated by the Makefile
|
||||
*/
|
||||
|
||||
|
||||
#if !defined(__HAVE_GETSID_H__)
|
||||
#define __HAVE_GETSID_H__
|
||||
|
||||
|
||||
/* do we have or want getsid()? */
|
||||
#undef HAVE_GETSID /* no */
|
||||
|
||||
|
||||
#endif /* !__HAVE_GETSID_H__ */
|
14
win32/have_gettime.h
Normal file
14
win32/have_gettime.h
Normal file
@@ -0,0 +1,14 @@
|
||||
/*
|
||||
* DO NOT EDIT -- generated by the Makefile
|
||||
*/
|
||||
|
||||
|
||||
#if !defined(__HAVE_GETTIME_H__)
|
||||
#define __HAVE_GETTIME_H__
|
||||
|
||||
|
||||
/* do we have or want clock_gettime()? */
|
||||
#undef HAVE_GETTIME /* no */
|
||||
|
||||
|
||||
#endif /* !__HAVE_GETTIME_H__ */
|
14
win32/have_malloc.h
Normal file
14
win32/have_malloc.h
Normal file
@@ -0,0 +1,14 @@
|
||||
/*
|
||||
* DO NOT EDIT -- generated by the Makefile
|
||||
*/
|
||||
|
||||
|
||||
#if !defined(__HAVE_MALLOC_H__)
|
||||
#define __HAVE_MALLOC_H__
|
||||
|
||||
|
||||
/* do we have /usr/include/malloc.h? */
|
||||
#define HAVE_MALLOC_H /* yes */
|
||||
|
||||
|
||||
#endif /* !__HAVE_MALLOC_H__ */
|
14
win32/have_memmv.h
Normal file
14
win32/have_memmv.h
Normal file
@@ -0,0 +1,14 @@
|
||||
/*
|
||||
* DO NOT EDIT -- generated by the Makefile
|
||||
*/
|
||||
|
||||
|
||||
#if !defined(__HAVE_MEMMV_H__)
|
||||
#define __HAVE_MEMMV_H__
|
||||
|
||||
|
||||
/* do we have or want memmove()? */
|
||||
#define HAVE_MEMMOVE /* yes */
|
||||
|
||||
|
||||
#endif /* !__HAVE_MEMMV_H__ */
|
14
win32/have_newstr.h
Normal file
14
win32/have_newstr.h
Normal file
@@ -0,0 +1,14 @@
|
||||
/*
|
||||
* DO NOT EDIT -- generated by the Makefile
|
||||
*/
|
||||
|
||||
|
||||
#if !defined(__HAVE_NEWSTR_H__)
|
||||
#define __HAVE_NEWSTR_H__
|
||||
|
||||
|
||||
/* do we have or want memcpy(), memset() & strchr()? */
|
||||
#define HAVE_NEWSTR /* yes */
|
||||
|
||||
|
||||
#endif /* !__HAVE_NEWSTR_H__ */
|
14
win32/have_offscl.h
Normal file
14
win32/have_offscl.h
Normal file
@@ -0,0 +1,14 @@
|
||||
/*
|
||||
* DO NOT EDIT -- generated by the Makefile
|
||||
*/
|
||||
|
||||
|
||||
#if !defined(__HAVE_OFFSCL_H__)
|
||||
#define __HAVE_OFFSCL_H__
|
||||
|
||||
|
||||
#undef HAVE_OFF_T_SCALAR
|
||||
#define HAVE_OFF_T_SCALAR /* off_t is a simple value */
|
||||
|
||||
|
||||
#endif /* !__HAVE_OFFSCL_H__ */
|
14
win32/have_posscl.h
Normal file
14
win32/have_posscl.h
Normal file
@@ -0,0 +1,14 @@
|
||||
/*
|
||||
* DO NOT EDIT -- generated by the Makefile
|
||||
*/
|
||||
|
||||
|
||||
#if !defined(__HAVE_POSSCL_H__)
|
||||
#define __HAVE_POSSCL_H__
|
||||
|
||||
|
||||
#undef HAVE_FILEPOS_SCALAR
|
||||
#define HAVE_FILEPOS_SCALAR /* FILEPOS is a simple value */
|
||||
|
||||
|
||||
#endif /* !__HAVE_POSSCL_H__ */
|
14
win32/have_rusage.h
Normal file
14
win32/have_rusage.h
Normal file
@@ -0,0 +1,14 @@
|
||||
/*
|
||||
* DO NOT EDIT -- generated by the Makefile
|
||||
*/
|
||||
|
||||
|
||||
#if !defined(__HAVE_RUSAGE_H__)
|
||||
#define __HAVE_RUSAGE_H__
|
||||
|
||||
|
||||
/* do we have or want getrusage()? */
|
||||
#undef HAVE_GETRUSAGE /* no */
|
||||
|
||||
|
||||
#endif /* !__HAVE_RUSAGE_H__ */
|
14
win32/have_stdlib.h
Normal file
14
win32/have_stdlib.h
Normal file
@@ -0,0 +1,14 @@
|
||||
/*
|
||||
* DO NOT EDIT -- generated by the Makefile
|
||||
*/
|
||||
|
||||
|
||||
#if !defined(__HAVE_STDLIB_H__)
|
||||
#define __HAVE_STDLIB_H__
|
||||
|
||||
|
||||
/* do we have /usr/include/stdlib.h? */
|
||||
#define HAVE_STDLIB_H /* yes */
|
||||
|
||||
|
||||
#endif /* !__HAVE_STDLIB_H__ */
|
14
win32/have_strdup.h
Normal file
14
win32/have_strdup.h
Normal file
@@ -0,0 +1,14 @@
|
||||
/*
|
||||
* DO NOT EDIT -- generated by the Makefile
|
||||
*/
|
||||
|
||||
|
||||
#if !defined(__HAVE_RUSAGE_H__)
|
||||
#define __HAVE_RUSAGE_H__
|
||||
|
||||
|
||||
/* do we have or want getstrdup()? */
|
||||
#define HAVE_STRDUP /* yes */
|
||||
|
||||
|
||||
#endif /* !__HAVE_RUSAGE_H__ */
|
14
win32/have_string.h
Normal file
14
win32/have_string.h
Normal file
@@ -0,0 +1,14 @@
|
||||
/*
|
||||
* DO NOT EDIT -- generated by the Makefile
|
||||
*/
|
||||
|
||||
|
||||
#if !defined(__HAVE_STRING_H__)
|
||||
#define __HAVE_STRING_H__
|
||||
|
||||
|
||||
/* do we have /usr/include/string.h? */
|
||||
#define HAVE_STRING_H /* yes */
|
||||
|
||||
|
||||
#endif /* !__HAVE_STRING_H__ */
|
17
win32/have_times.h
Normal file
17
win32/have_times.h
Normal file
@@ -0,0 +1,17 @@
|
||||
/*
|
||||
* DO NOT EDIT -- generated by the Makefile
|
||||
*/
|
||||
|
||||
|
||||
#if !defined(__HAVE_TIMES_H__)
|
||||
#define __HAVE_TIMES_H__
|
||||
|
||||
|
||||
/* do we have /usr/include/times.h? */
|
||||
#undef HAVE_TIMES_H /* no */
|
||||
#undef HAVE_SYS_TIMES_H /* no */
|
||||
#define HAVE_TIME_H /* yes */
|
||||
#undef HAVE_SYS_TIME_H /* no */
|
||||
|
||||
|
||||
#endif /* !__HAVE_TIMES_H__ */
|
14
win32/have_uid_t.h
Normal file
14
win32/have_uid_t.h
Normal file
@@ -0,0 +1,14 @@
|
||||
/*
|
||||
* DO NOT EDIT -- generated by the Makefile
|
||||
*/
|
||||
|
||||
|
||||
#if !defined(__HAVE_UID_T_H__)
|
||||
#define __HAVE_UID_T_H__
|
||||
|
||||
|
||||
/* do we have or want uid_t? */
|
||||
#undef HAVE_UID_T /* no */
|
||||
|
||||
|
||||
#endif /* !__HAVE_UID_T_H__ */
|
14
win32/have_unistd.h
Normal file
14
win32/have_unistd.h
Normal file
@@ -0,0 +1,14 @@
|
||||
/*
|
||||
* DO NOT EDIT -- generated by the Makefile
|
||||
*/
|
||||
|
||||
|
||||
#if !defined(__HAVE_UNISTD_H__)
|
||||
#define __HAVE_UNISTD_H__
|
||||
|
||||
|
||||
/* do we have /usr/include/unistd.h? */
|
||||
#undef HAVE_UNISTD_H /* no */
|
||||
|
||||
|
||||
#endif /* !__HAVE_UNISTD_H__ */
|
14
win32/have_urandom.h
Normal file
14
win32/have_urandom.h
Normal file
@@ -0,0 +1,14 @@
|
||||
/*
|
||||
* DO NOT EDIT -- generated by the Makefile
|
||||
*/
|
||||
|
||||
|
||||
#if !defined(__HAVE_URANDOM_H__)
|
||||
#define __HAVE_URANDOM_H__
|
||||
|
||||
|
||||
/* do we have /dev/urandom? */
|
||||
#undef HAVE_URANDOM_H /* no */
|
||||
|
||||
|
||||
#endif /* !__HAVE_URANDOM_H__ */
|
14
win32/have_ustat.h
Normal file
14
win32/have_ustat.h
Normal file
@@ -0,0 +1,14 @@
|
||||
/*
|
||||
* DO NOT EDIT -- generated by the Makefile
|
||||
*/
|
||||
|
||||
|
||||
#if !defined(__HAVE_USTAT_H__)
|
||||
#define __HAVE_USTAT_H__
|
||||
|
||||
|
||||
/* do we have or want ustat()? */
|
||||
#undef HAVE_USTAT /* no */
|
||||
|
||||
|
||||
#endif /* !__HAVE_USTAT_H__ */
|
31
win32/longbits.h
Normal file
31
win32/longbits.h
Normal file
@@ -0,0 +1,31 @@
|
||||
/*
|
||||
* DO NOT EDIT -- generated by the Makefile
|
||||
*/
|
||||
|
||||
|
||||
#if !defined(__LONGBITS_H__)
|
||||
#define __LONGBITS_H__
|
||||
|
||||
|
||||
#undef LONG_BITS
|
||||
#define LONG_BITS 32 /* bit length of a long */
|
||||
|
||||
/* size of long was forced */
|
||||
|
||||
typedef unsigned char USB8; /* unsigned 8 bits */
|
||||
typedef signed char SB8; /* signed 8 bits */
|
||||
|
||||
typedef unsigned short USB16; /* unsigned 16 bits */
|
||||
typedef short SB16; /* signed 16 bits */
|
||||
|
||||
typedef unsigned long USB32; /* unsigned 32 bits */
|
||||
typedef long SB32; /* signed 32 bits */
|
||||
|
||||
#undef HAVE_B64 /* we have no USB64 and no SB64 types */
|
||||
|
||||
/* no 64 bit constants */
|
||||
#define U(x) no 33 to 64 bit constants - do not use this macro!
|
||||
#define L(x) no 33 to 64 bit constants - do not use this macro!
|
||||
|
||||
|
||||
#endif /* !__LONGBITS_H__ */
|
16
win32/longlong.h
Normal file
16
win32/longlong.h
Normal file
@@ -0,0 +1,16 @@
|
||||
/*
|
||||
* DO NOT EDIT -- generated by the Makefile
|
||||
*/
|
||||
|
||||
|
||||
#if !defined(__LONGLONG_H__)
|
||||
#define __LONGLONG_H__
|
||||
|
||||
|
||||
/* do we have/want to use a long long type? */
|
||||
#undef HAVE_LONGLONG
|
||||
#define LONGLONG_BITS 0 /* no */
|
||||
#undef L64_FORMAT
|
||||
|
||||
|
||||
#endif /* !__LONGLONG_H__ */
|
23
win32/terminal.h
Normal file
23
win32/terminal.h
Normal file
@@ -0,0 +1,23 @@
|
||||
/*
|
||||
* DO NOT EDIT -- generated by the Makefile
|
||||
*/
|
||||
|
||||
|
||||
#if !defined(__TERMINAL_H__)
|
||||
#define __TERMINAL_H__
|
||||
|
||||
|
||||
/* determine the type of terminal interface */
|
||||
#if !defined(USE_TERMIOS)
|
||||
#if !defined(USE_TERMIO)
|
||||
#if !defined(USE_SGTTY)
|
||||
/* windoz, use none of these modes */
|
||||
#undef USE_TERMIOS /* <termios.h> */
|
||||
#undef USE_TERMIO /* <termio.h> */
|
||||
#undef USE_SGTTY /* <sys/ioctl.h> */
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
|
||||
|
||||
#endif /* !__TERMINAL_H__ */
|
26
zmath.h
26
zmath.h
@@ -17,8 +17,8 @@
|
||||
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
*
|
||||
* @(#) $Revision: 29.5 $
|
||||
* @(#) $Id: zmath.h,v 29.5 2001/03/17 21:31:47 chongo Exp $
|
||||
* @(#) $Revision: 29.6 $
|
||||
* @(#) $Id: zmath.h,v 29.6 2001/05/29 00:16:53 chongo Exp $
|
||||
* @(#) $Source: /usr/local/src/cmd/calc/RCS/zmath.h,v $
|
||||
*
|
||||
* Under source code control: 1993/07/30 19:42:48
|
||||
@@ -38,13 +38,21 @@
|
||||
#define __ZMATH_H__
|
||||
|
||||
|
||||
#include "win32dll.h"
|
||||
#include "alloc.h"
|
||||
#include "endian_calc.h"
|
||||
#include "longbits.h"
|
||||
#include "byteswap.h"
|
||||
|
||||
#include "have_stdlib.h"
|
||||
#if defined(SRC) /* if we are building from the calc source tree */
|
||||
# include "win32dll.h"
|
||||
# include "alloc.h"
|
||||
# include "endian_calc.h"
|
||||
# include "longbits.h"
|
||||
# include "byteswap.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
|
||||
# include <stdlib.h>
|
||||
#endif
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user