mirror of
https://github.com/lcn2/calc.git
synced 2025-08-19 01:13:27 +03:00
Compare commits
101 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
ac0d84eef8 | ||
|
9b4580d861 | ||
|
2085361df1 | ||
|
bf4657c138 | ||
|
1b5636afed | ||
|
7eba99ac29 | ||
|
de6474bf28 | ||
|
55bc690cd1 | ||
|
0aca07d278 | ||
|
1ab3b2c313 | ||
|
64e2c6a262 | ||
|
eac02835ed | ||
|
33657bb2cc | ||
|
8af0b351ae | ||
|
3260f90a73 | ||
|
b7e15195f9 | ||
|
c02725f036 | ||
|
507fe026e5 | ||
|
486f4c5626 | ||
|
91991bb729 | ||
|
71a116ca6f | ||
|
8b7e01f426 | ||
|
229345ade8 | ||
|
0f902b95cf | ||
|
8684e1be9c | ||
|
ae3a6129b2 | ||
|
2c72570b8d | ||
|
41803b878e | ||
|
a8be58becb | ||
|
067afc140a | ||
|
41128fada9 | ||
|
f5fae012f9 | ||
|
3d25fb30cb | ||
|
8374586275 | ||
|
68c2edf610 | ||
|
d58a55a1ed | ||
|
ccfa797b68 | ||
|
0f030f0759 | ||
|
af59b9dab2 | ||
|
fa173cd9aa | ||
|
1f8269c0e2 | ||
|
51462b8612 | ||
|
9b69648921 | ||
|
c5e416c41f | ||
|
37ad43c7fd | ||
|
a877cb52c0 | ||
|
4bec694df3 | ||
|
4870a7a164 | ||
|
84ccb37bc3 | ||
|
29c6e9325f | ||
|
81a4a4f828 | ||
|
1cdb5172d8 | ||
|
54a7a3f7bc | ||
|
2ea77e6151 | ||
|
5cfa6199e5 | ||
|
da6ccc146f | ||
|
fcfe237375 | ||
|
5fb3db4558 | ||
|
c8705c1198 | ||
|
0558bafcb6 | ||
|
f58277f53d | ||
|
e555a718c0 | ||
|
b29fcf2dd5 | ||
|
4f86703843 | ||
|
07d8bf0f3e | ||
|
b4cd692bae | ||
|
83c898cc2b | ||
|
c585d7aa78 | ||
|
f42a003d04 | ||
|
8da0471f07 | ||
|
1c20261b93 | ||
|
aeb9a9d473 | ||
|
66883b390d | ||
|
ea533659ce | ||
|
9e81971f25 | ||
|
cbbd866535 | ||
|
bf23f82c29 | ||
|
ec5c584785 | ||
|
6bbb8c0e42 | ||
|
438554b0ed | ||
|
61ba4bc5c8 | ||
|
0145883396 | ||
|
f91bfaab70 | ||
|
36ab4fdc1b | ||
|
1cd89398ad | ||
|
bd3a381783 | ||
|
618f42c960 | ||
|
1363b58060 | ||
|
2c659f40ff | ||
|
4c243a69fe | ||
|
f80eee7a09 | ||
|
a044b9325b | ||
|
c028ea478f | ||
|
62bdba6d22 | ||
|
4d9511243c | ||
|
188fd372ea | ||
|
44ffb0eec9 | ||
|
beb13bf89f | ||
|
a31078bbec | ||
|
7ae4f4009c | ||
|
40fc854006 |
107
.gitignore
vendored
Normal file
107
.gitignore
vendored
Normal file
@@ -0,0 +1,107 @@
|
||||
# files and directories created during the building of calc and other Makefile actions
|
||||
#
|
||||
# NOTE: While many of these might be part of a released calc tarball, they are
|
||||
# not consider development source. Some other file(s) and/or programs
|
||||
# generate these files.
|
||||
#
|
||||
.dynamic
|
||||
.hsrc
|
||||
Makefile.simple
|
||||
NOTES
|
||||
align32.h
|
||||
args.h
|
||||
cal/.all
|
||||
calc
|
||||
calc.1
|
||||
calc.usage
|
||||
calcerr.c
|
||||
calcerr.h
|
||||
conf.h
|
||||
cscript/.all
|
||||
cscript/4dsphere
|
||||
cscript/README
|
||||
cscript/fproduct
|
||||
cscript/mersenne
|
||||
cscript/piforever
|
||||
cscript/plus
|
||||
cscript/powerterm
|
||||
cscript/simple
|
||||
cscript/square
|
||||
custom/.all
|
||||
custom/Makefile.simple
|
||||
custom/libcustcalc*
|
||||
endian
|
||||
endian_calc.h
|
||||
fposval.h
|
||||
have_ban_pragma.h
|
||||
have_const.h
|
||||
have_fpos.h
|
||||
have_fpos_pos.h
|
||||
have_getpgid.h
|
||||
have_getprid.h
|
||||
have_getsid.h
|
||||
have_gettime.h
|
||||
have_memmv.h
|
||||
have_newstr.h
|
||||
have_offscl.h
|
||||
have_posscl.h
|
||||
have_rusage.h
|
||||
have_stdlib.h
|
||||
have_stdvs
|
||||
have_strdup.h
|
||||
have_string.h
|
||||
have_strlcat.h
|
||||
have_strlcpy.h
|
||||
have_times.h
|
||||
have_uid_t.h
|
||||
have_unistd.h
|
||||
have_unused.h
|
||||
have_urandom.h
|
||||
have_ustat.h
|
||||
help/.all
|
||||
help/COPYING
|
||||
help/COPYING-LGPL
|
||||
help/binding
|
||||
help/bindings
|
||||
help/bug
|
||||
help/bugs
|
||||
help/builtin
|
||||
help/change
|
||||
help/changes
|
||||
help/contrib
|
||||
help/copy
|
||||
help/cscript
|
||||
help/custom_cal
|
||||
help/errorcode
|
||||
help/errorcodes
|
||||
help/full
|
||||
help/funclist
|
||||
help/funclist.c
|
||||
help/libcalc
|
||||
help/man
|
||||
help/new_custom
|
||||
help/question
|
||||
help/questions
|
||||
help/resource
|
||||
help/type
|
||||
help/usage
|
||||
libcalc*
|
||||
libcustcalc*
|
||||
longbits
|
||||
longbits.h
|
||||
sample_many
|
||||
sample_rand
|
||||
tags
|
||||
terminal.h
|
||||
ver_calc
|
||||
|
||||
# other commonly excluded patterns
|
||||
#
|
||||
*~
|
||||
*.BAK
|
||||
core*
|
||||
.DS_Store
|
||||
*.dSYM/
|
||||
*.[oa]
|
||||
.*.swp
|
||||
*,v
|
206
BUGS
206
BUGS
@@ -1,12 +1,12 @@
|
||||
If you notice something wrong, strange or broken, try rereading:
|
||||
|
||||
README.FIRST
|
||||
HOWTO.INSTALL
|
||||
BUGS (this file)
|
||||
README.FIRST
|
||||
HOWTO.INSTALL
|
||||
BUGS (this file)
|
||||
|
||||
If that does not help, cd to the calc source directory and try:
|
||||
|
||||
make check
|
||||
make check
|
||||
|
||||
Look at the end of the output, it should say something like:
|
||||
|
||||
@@ -15,74 +15,163 @@ Look at the end of the output, it should say something like:
|
||||
|
||||
If it does not, then something is really broken!
|
||||
|
||||
To be sure that your version of calc is up to date, check out:
|
||||
|
||||
http://www.isthe.com/chongo/tech/comp/calc/calc-mirror.html
|
||||
|
||||
If you made and modifications to calc beyond the simple Makefile
|
||||
configuration, try backing them out and see if things get better.
|
||||
|
||||
To be sure that your version of calc is up to date, check out:
|
||||
|
||||
http://www.isthe.com/chongo/tech/comp/calc/calc-download.html
|
||||
|
||||
The calc web site is located at:
|
||||
|
||||
http://www.isthe.com/chongo/tech/comp/calc/index.html
|
||||
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.
|
||||
|
||||
=-=
|
||||
|
||||
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
|
||||
and bug fixes reports to:
|
||||
The BEST WAY TO SEND IN A BUG REPORT is via calc GitHub issue URL:
|
||||
|
||||
calc-bug-report at asthe dot com
|
||||
https://github.com/lcn2/calc/issues
|
||||
|
||||
NOTE: Remove spaces and replace 'at' with @, 'dot' with .
|
||||
If you see an existing issue that matches your problem, look
|
||||
over the notes and if needed, add your own observation,
|
||||
even if you just add to an existing issue:
|
||||
|
||||
This replaces the old calc-bugs at asthe dot com address.
|
||||
I have this issue too
|
||||
|
||||
To be sure we see your EMail reporting a calc bug, please use the
|
||||
following phase in your EMail Subject line:
|
||||
If you don't see your issue addressed, then on the above
|
||||
GitHub web page, click on this button:
|
||||
|
||||
calc bug report
|
||||
((New Issue))
|
||||
|
||||
That phrase in your subject line will help ensure your request
|
||||
will get past our anti-spam filters. You may have additional
|
||||
words in your subject line.
|
||||
=-=
|
||||
|
||||
However, you may find it more helpful to simply subscribe
|
||||
to the calc-tester mailing list (see below) and then to
|
||||
send your report to that mailing list as a wider set calc
|
||||
testers may be able to help you.
|
||||
If you prefer to not use GitHub, then you
|
||||
may send bug and bug fixes reports to:
|
||||
|
||||
When you send your report, please include the following information:
|
||||
calc-bugrept-mail at asthe dot com
|
||||
|
||||
* a description of the problem
|
||||
* the version of calc you are using (if you cannot get calc
|
||||
to run, then send us the 4 #define lines from version.c)
|
||||
* if you modified calc from an official patch, send me the mods you made
|
||||
* the type of system you were using
|
||||
* the type of compiler you were using
|
||||
* any compiler warnings or errors that you saw
|
||||
* cd to the calc source directory, and type:
|
||||
NOTE: Remove spaces and replace 'at' with @, 'dot' with .
|
||||
|
||||
make debug > debug.out 2>&1 (sh, ksh, bash users)
|
||||
make debug >& debug.out (csh, tcsh users)
|
||||
NOTE: This replaces the old calc-bugs at asthe dot com address.
|
||||
|
||||
and send the contents of the 'debug.out' file.
|
||||
PLEASE put following the SPECIAL PHRASE somewhere in your Email Subject line:
|
||||
|
||||
Stack traces from core dumps are useful to send as well.
|
||||
calc bug report
|
||||
|
||||
Fell free to use the above address to send in big fixes (in the form
|
||||
You may add additional words to your subject line.
|
||||
|
||||
Suggestion:
|
||||
|
||||
From time to time, the Email address and Subject SPECIAL PHRASE
|
||||
may change so verify you have the current info by visiting:
|
||||
|
||||
http://www.isthe.com/chongo/tech/comp/calc/calc-bugrept.html
|
||||
|
||||
IMPORTANT:
|
||||
|
||||
PLEASE use the above SPECIAL PHRASE somewhere in the Subject line or
|
||||
the mail system won't deliver your Email message.
|
||||
|
||||
Keep in mind that the best way to report on a calc bug is
|
||||
via the above mentioned calc GitHub issue URL.
|
||||
|
||||
Please be patient as we cannot always respond to Email messages quickly.
|
||||
|
||||
=-=
|
||||
|
||||
When you send your report, via the calc GitHub issue URL or Email,
|
||||
please include the following information:
|
||||
|
||||
* A description of the problem
|
||||
|
||||
* Version of calc you are using
|
||||
|
||||
If you cannot compile calc, then look at version.c
|
||||
and report the #define that start with:
|
||||
|
||||
#define MAJOR_VER
|
||||
#define MINOR_VER
|
||||
#define MAJOR_PATCH
|
||||
#define MINOR_PATCH
|
||||
|
||||
* If you modified calc from an official patch,
|
||||
send us the mods you made
|
||||
|
||||
* Type and version of the operating system
|
||||
|
||||
* Type and version of compiler
|
||||
|
||||
* Send us all compiler warnings or errors you find
|
||||
|
||||
* If calc dumped core, try to send us a core dump stack trace
|
||||
|
||||
* cd to the calc source directory, and send the contents
|
||||
of debug.out produced by this command:
|
||||
|
||||
make debug > debug.out 2>&1
|
||||
|
||||
Fell free to use the above address to send in bug fixes (in the form
|
||||
of a context diff patch).
|
||||
|
||||
=-=
|
||||
|
||||
Known bugs:
|
||||
Known bugs in calc:
|
||||
|
||||
Under macOS, the installation of the calc man page fails.
|
||||
|
||||
The output of the alg_config.cal resource file is bogus.
|
||||
We would welcome a replacement for this code.
|
||||
|
||||
Calc shell scripts do not read from stdin properly,
|
||||
we all as a number of the cscript examples.
|
||||
|
||||
The argv() function is behaving differently
|
||||
when run in calc shell script mode:
|
||||
|
||||
When calc is run as:
|
||||
|
||||
calc -s a bb ccc
|
||||
|
||||
and given this input on the command prompt:
|
||||
|
||||
print "config(\"program\")=", config("program");
|
||||
print "argv()=", argv();
|
||||
argc = argv();
|
||||
for (i=0; i < argc; ++i) {
|
||||
print "argv(":i:")=", argv(i);
|
||||
}
|
||||
|
||||
calc prints:
|
||||
|
||||
config("program")= calc
|
||||
argv()= 3
|
||||
argv(0)= a
|
||||
argv(1)= bb
|
||||
argv(2)= ccc
|
||||
|
||||
but when it is run as a script called ./simple:
|
||||
|
||||
#!/usr/local/bin/calc -q -s -f
|
||||
print "config(\"program\")=", config("program");
|
||||
print "argv()=", argv();
|
||||
argc = argv();
|
||||
for (i=0; i < argc; ++i) {
|
||||
print "argv(":i:")=", argv(i);
|
||||
}
|
||||
|
||||
under Linux prints:
|
||||
|
||||
config("program")= /usr/bin/calc
|
||||
argv()= 4
|
||||
argv(0)= ./simple
|
||||
argv(1)= a
|
||||
argv(2)= bb
|
||||
argv(3)= ccc
|
||||
|
||||
and under macOS simply enters into interactive mode.
|
||||
|
||||
We are sure some more bugs exist. When you find them, please let
|
||||
us know! See the above for details on how to report and were to
|
||||
EMail your bug reports and hopefully patches to fix them.
|
||||
Email your bug reports and hopefully patches to fix them.
|
||||
|
||||
=-=
|
||||
|
||||
@@ -135,32 +224,7 @@ mis-features in calc:
|
||||
|
||||
=-=
|
||||
|
||||
To subscribe to the calc-tester mailing list, visit the following URL:
|
||||
|
||||
http://www.isthe.com/chongo/tech/comp/calc/calc-tester.html
|
||||
|
||||
This is a low volume moderated mailing list.
|
||||
|
||||
This mailing list replaces calc-tester at asthe dot com list.
|
||||
|
||||
If you need a human to help you with your mailing list subscription,
|
||||
please send EMail to our special:
|
||||
|
||||
calc-tester-maillist-help at asthe dot com
|
||||
|
||||
NOTE: Remove spaces and replace 'at' with @, 'dot' with .
|
||||
|
||||
address. To be sure we see your EMail asking for help with your
|
||||
mailing list subscription, please use the following phase in your
|
||||
EMail Subject line:
|
||||
|
||||
calc tester mailing list help
|
||||
|
||||
That phrase in your subject line will help ensure your
|
||||
request will get past our anti-spam filters. You may have
|
||||
additional words in your subject line.
|
||||
|
||||
## Copyright (C) 1999-2014 Landon Curt Noll
|
||||
## Copyright (C) 1999-2014,2021 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
|
||||
@@ -176,10 +240,6 @@ To subscribe to the calc-tester mailing list, visit the following URL:
|
||||
## received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
## 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
##
|
||||
## @(#) $Revision: 30.5 $
|
||||
## @(#) $Id: BUGS,v 30.5 2014/10/12 12:23:43 chongo Exp $
|
||||
## @(#) $Source: /usr/local/src/bin/calc/RCS/BUGS,v $
|
||||
##
|
||||
## Under source code control: 1994/03/18 14:06:13
|
||||
## File existed as early as: 1994
|
||||
##
|
||||
|
651
CHANGES
651
CHANGES
@@ -1,4 +1,495 @@
|
||||
The following are the changes from calc version 2.12.5.4 to date:
|
||||
The following are the changes from calc version 2.12.9.0 to date:
|
||||
|
||||
Added notes to help/unexpected about:
|
||||
|
||||
display() will limit the number of digits printed after decimal point
|
||||
|
||||
%d will format after the decimal point for non-integer numeric values
|
||||
|
||||
%x will format as fractions for non-integer numeric values
|
||||
|
||||
fprintf(fd, "%d\n", huge_value) may need fflush(fd) to finish
|
||||
|
||||
Fixed Makefile dependencies for the args.h rule.
|
||||
|
||||
Fixed Makefile cases where echo with -n is used. On some systems,
|
||||
/bin/sh does not use -n, so we must call /bin/echo -n instead
|
||||
via the ${ECHON} Makefile variable.
|
||||
|
||||
Add missing standard tools to sub-Makefiles to make them
|
||||
easier to invoke directly.
|
||||
|
||||
Sort lists of standard tool Makefile variables and remove duplicates.
|
||||
|
||||
Declare the SHELL at the top of Makefiles.
|
||||
|
||||
Fixed the depend rule in the custom Makefile.
|
||||
|
||||
Improved the messages produced by the depend in the Makefiles.
|
||||
|
||||
Changed the UNUSED define in have_unused.h to be a macro with
|
||||
a parameter. Changed all use of UNUSED in *.c to be UNUSED(x).
|
||||
|
||||
Removed need for HAVE_UNUSED in building the have_unused.h file.
|
||||
|
||||
CCBAN is given to ${CC} in order to control if banned.h is in effect.
|
||||
|
||||
The banned.h attempts to ban the use of certain dangerous functions
|
||||
that, if improperly used, could compromise the computational integrity
|
||||
if calculations.
|
||||
|
||||
In the case of calc, we are motivated in part by the desire for calc
|
||||
to correctly calculate: even during extremely long calculations.
|
||||
|
||||
If UNBAN is NOT defined, then calling certain functions
|
||||
will result in a call to a non-existent function (link error).
|
||||
|
||||
While we do NOT encourage defining UNBAN, there may be
|
||||
a system / compiler environment where re-defining a
|
||||
function may lead to a fatal compiler complication.
|
||||
If that happens, consider compiling as:
|
||||
|
||||
make clobber all chk CCBAN=-DUNBAN
|
||||
|
||||
as see if this is a work-a-round.
|
||||
|
||||
If YOU discover a need for the -DUNBAN work-a-round, PLEASE tell us!
|
||||
Please send us a bug report. See the file:
|
||||
|
||||
BUGS
|
||||
|
||||
or the URL:
|
||||
|
||||
http://www.isthe.com/chongo/tech/comp/calc/calc-bugrept.html
|
||||
|
||||
for how to send us such a bug report.
|
||||
|
||||
Added the building of have_ban_pragma.h, which will determine
|
||||
if "#pragma GCC poison func_name" is supported. If it is not,
|
||||
or of HAVE_PRAGMA_GCC_POSION=-DHAVE_NO_PRAGMA_GCC_POSION, then
|
||||
banned.h will have no effect.
|
||||
|
||||
Fixed building of the have_getpgid.h file.
|
||||
Fixed building of the have_getprid.h file.
|
||||
Fixed building of the have_getsid.h file.
|
||||
Fixed building of the have_gettime.h file.
|
||||
Fixed building of the have_strdup.h file.
|
||||
Fixed building of the have_ustat.h file.
|
||||
Fixed building of the have_rusage.h file.
|
||||
|
||||
Added HAVE_NO_STRLCPY to control if we want to test if
|
||||
the system has a strlcpy() function. This in turn produces
|
||||
the have_strlcpy.h file wherein the symbol HAVE_STRLCPY will
|
||||
be defined, or not depending if the system comes with a
|
||||
strlcpy() function.
|
||||
|
||||
If the system does not have a strlcpy() function, we
|
||||
compile our own strlcpy() function. See strl.c for details.
|
||||
|
||||
Added HAVE_NO_STRLCAT to control if we want to test if
|
||||
the system has a strlcat() function. This in turn produces
|
||||
the have_strlcat.h file wherein the symbol HAVE_STRLCAT will
|
||||
be defined, or not depending if the system comes with a
|
||||
strlcat() function.
|
||||
|
||||
If the system does not have a strlcat() function, we
|
||||
compile our own strlcat() function. See strl.c for details.
|
||||
|
||||
Fixed places were <string.h>, using #ifdef HAVE_STRING_H
|
||||
for legacy systems that do not have that include file.
|
||||
|
||||
Added ${H} Makefile symbol to control the announcement
|
||||
of forming and having formed hsrc related files. By default
|
||||
H=@ (announce hsrc file formation) vs. H=@: to silence hsrc
|
||||
related file formation.
|
||||
|
||||
Explicitly turn off quiet mode (set Makefile variable ${Q} to
|
||||
be empty) when building rpms.
|
||||
|
||||
Improved and fixed the hsrc build process.
|
||||
|
||||
Forming rpms is performed in verbose mode to assist debugging
|
||||
to the rpm build process.
|
||||
|
||||
Compile custom code, if needed, after main code is compiled.
|
||||
|
||||
|
||||
The following are the changes from calc version 2.12.8.1 to 2.12.8.2:
|
||||
|
||||
Fixed how the *.tar.bz2 are formed. The calc-2.12.8.0.tar.bz2 file
|
||||
that was formed for calc version 2.12.8.0 was missing most files.
|
||||
|
||||
Expanded 'make chk' to also verify that 'make distchk' and 'make
|
||||
distlist' execute successfully. This will help check a regression
|
||||
of the bug that produced the bogus calc-2.12.8.0.tar.bz2 file.
|
||||
|
||||
Added additional regression tests related 0^(zero_expression)==1.
|
||||
|
||||
Calc can now correctly compile without CUSTOM being defined,
|
||||
thanks to a report by <GitHub user barsnick>.
|
||||
|
||||
|
||||
|
||||
The following are the changes from calc version 2.12.7.5 to 2.12.8.0:
|
||||
|
||||
Fixed a mistake in "help intro" where some inserted text changed
|
||||
the value of "." and thus made the next result incorrect.
|
||||
|
||||
Clarified in "help factor" that 1 is returned if no
|
||||
factor below the limit was found.
|
||||
|
||||
Removed Makefile variable ${MAKEFILE_REV}.
|
||||
|
||||
The missing cscript/square.calc file has been restored.
|
||||
|
||||
Fixed compiler errors and warnings related to GCC. In particular,
|
||||
gcc/9.3.1 and gcc/10.2.1 now compile calc without any compiler
|
||||
errors or warnings, even with -Werror -Wextra -pedantic.
|
||||
|
||||
To print out information about the calc compilation
|
||||
environment, we added the following make rule:
|
||||
|
||||
make calcinfo
|
||||
|
||||
Improved how 'make debug' operates.
|
||||
|
||||
Moved help/contrib to CONTRIB-CODE. The help/contrib file
|
||||
is now build from a copy of CONTRIB-CODE.
|
||||
|
||||
Created a new calc bug report Email address. Created a new
|
||||
calc question Email address. Created a new calc contribution
|
||||
Email address. See the BUGS file for details.
|
||||
|
||||
Added "help questions" to print the QUESTIONS help file.
|
||||
|
||||
If the environment variable $CALCHELP is defined and is non-empty,
|
||||
then calc help files will be in the directory by the $CALCHISTFILE
|
||||
environment variable.
|
||||
|
||||
If the environment variable $CALCCUSTOMHELP is defined and is
|
||||
non-empty, then custom calc help files will be in the directory
|
||||
by the $CALCCUSTOMHELP environment variable.
|
||||
|
||||
Fixed a number of typos in text and in source code comments.
|
||||
|
||||
The calc-tester mailing list has been retired. See:
|
||||
|
||||
* How to submit a calc bug report:
|
||||
|
||||
http://www.isthe.com/chongo/tech/comp/calc/calc-bugrept.html
|
||||
|
||||
* How to contribute code to calc:
|
||||
|
||||
http://www.isthe.com/chongo/tech/comp/calc/calc-contrib.html
|
||||
|
||||
* How to submit a question about calc:
|
||||
|
||||
http://www.isthe.com/chongo/tech/comp/calc/calc-question.html
|
||||
|
||||
|
||||
The following are the changes from calc version 2.12.7.1 to 2.12.7.5:
|
||||
|
||||
Corrected CHANGES notes that were mixed up for TAB, VT, CR &
|
||||
NL. The code in 2.12.7.0 is correct. The CHANGE notes should
|
||||
have read:
|
||||
|
||||
The following is a partial list of escape sequences recognized
|
||||
in strings and in printf formats:
|
||||
|
||||
\a audible bell byte 0x07 in ASCII encoding
|
||||
\b backspace byte 0x08 in ASCII encoding
|
||||
\f form feed byte 0x0c in ASCII encoding
|
||||
\n newline byte 0x0a in ASCII encoding
|
||||
\r return byte 0x0d in ASCII encoding
|
||||
\t tab byte 0x09 in ASCII encoding
|
||||
\v vertical tab byte 0x0b in ASCII encoding
|
||||
|
||||
Fixed a segfault when getpwuid() returned NULL during initialization.
|
||||
Thanks goes to baratharon GitHub user for reporting this issue.
|
||||
|
||||
Requiring calc shell scripts to use -s -f at the end of the
|
||||
initial #! line.
|
||||
|
||||
Fixed /tmp/mersenne example in calc(1) man page.
|
||||
|
||||
Added make variable ${ARCH_CFLAGS}. The ${ARCH_CFLAGS} is
|
||||
added after ${CCMISC} and before ${EXTRA_CFLAGS} when building
|
||||
the ${CFLAGS} for compiling C code. are ${CC} when compiling
|
||||
C files. The default value is:
|
||||
|
||||
ARCH_CFLAGS= -march=native
|
||||
|
||||
which directs C compiler to compile for the native machine.
|
||||
To disable use of '-march=native', set ARCH_CFLAGS to the empty
|
||||
string as in:
|
||||
|
||||
make all ARCH_CFLAGS=
|
||||
|
||||
To make calc RPMs more portable, they are compiled with an
|
||||
empty ARCH_CFLAGS.
|
||||
|
||||
Fixed issues relating to compiling on macOS. Fixed issues
|
||||
where <unistd.h> is needed.
|
||||
|
||||
Fixed typos in help/intro and README.md. <<GitHub guilhermgonzaga>>
|
||||
|
||||
Copied missing description lines from help/intro to README.md
|
||||
"What is calc?" section. <<GitHub guilhermgonzaga>>
|
||||
|
||||
GCC 7 added a warning on fall through in case statements. It's
|
||||
enabled by -Wextra and treated as an error due to -Wall so it
|
||||
breaks compilation. See -Wimplicit-fallthrough in the GCC
|
||||
manual. The default value is 3, which means a comment matching
|
||||
some specific regexes is enough to disable the warning.
|
||||
Fixed spaces vs tabs and use FALLTHRU as it's used elsewhere.
|
||||
Fixed one FALLTHRU comment that was inconsistent with others.
|
||||
<<GitHub jcul>>
|
||||
|
||||
Fixed minor typo on help/power. <<GitHub thegithubr>>
|
||||
|
||||
By default, the calc history file is located in ~/.calc_history.
|
||||
Now, if the environment variable $CALCHISTFILE is defined
|
||||
and is non-empty, then calc history file will be defined
|
||||
by the $CALCHISTFILE environment variable.
|
||||
|
||||
Calc as defined 0^0 as 1. However in the past, 0 raised to
|
||||
an expression that evaluated to zero returned 1. The result
|
||||
was that 0^0 was different than 0^(6-6) or even 0^(0).
|
||||
Now, calc will return 1 for 0^(0) and 0^zero when zero == 0.
|
||||
|
||||
The missing cscript/square.calc file has been restored.
|
||||
|
||||
|
||||
The following are the changes from calc version 2.12.6.10: to 2.12.7.0:
|
||||
|
||||
Added a patch to replaces the manual search for include files
|
||||
in $(INCDIR) in the have_*.h targets with compiler invocations.
|
||||
Thanks goes to Helmut Grohne (helmut at subdivi dot de) who
|
||||
implemented the patch and posted it to the Debian bug tracker
|
||||
and Martin Buck (m at rtin-buck dor de) for forwarding it to us.
|
||||
|
||||
The check_include make rule was fixed to not assume /usr/include.
|
||||
|
||||
The qprintnum() function now takes outdigits as a 3rd argument.
|
||||
Most of the time, this 3rd argument is just conf->outdigits.
|
||||
But when it comes to the experimental '%g', this value can
|
||||
change. This avoids having to modify conf->outdigits.
|
||||
|
||||
Fixed a problem where gcc complains about E_FUNC not being defined
|
||||
for Linux systems as reported by Martin Buck (m at rtin-buck dor de).
|
||||
|
||||
Updated the help files help/config, help/display, help/epsilon,
|
||||
help/fprint, help/printf, and help/strprintf to give more
|
||||
examples of how display digits and epsilon precision interact
|
||||
with displaying values.
|
||||
|
||||
Added more information about %g in the help file help/printf.
|
||||
|
||||
The '\a' is now recognized in a printf format string as the
|
||||
single byte audible bell character (byte 0x07 in ASCII encoding).
|
||||
|
||||
The following is a partial list of escape sequences recognized
|
||||
in strings and in printf formats:
|
||||
|
||||
\a audible bell byte 0x07 in ASCII encoding
|
||||
\b backspace byte 0x08 in ASCII encoding
|
||||
\f form feed byte 0x0c in ASCII encoding
|
||||
\n newline byte 0x0a in ASCII encoding
|
||||
\r return byte 0x0d in ASCII encoding
|
||||
\t tab byte 0x09 in ASCII encoding
|
||||
\v vertical tab byte 0x0b in ASCII encoding
|
||||
|
||||
|
||||
The following are the changes from calc version 2.12.6.9 to 2.12.6.9:
|
||||
|
||||
Fixed a number of core dump bugs related to the calculation of
|
||||
tan(), cot(), sec(), csc(), tanh(), coth(), sech(), and csch(),
|
||||
asin(), acos(), asinh(), acosh(), where when a call to an
|
||||
underlying function produced an invalid value. Thanks goes to
|
||||
github user wuxiuheng for reporting this problem.
|
||||
|
||||
A number of trigonometric and hyperbolic functions that incorrectly
|
||||
returned E_LOGINF, now return a new error code that is more
|
||||
specific to the trigonometric or hyperbolic function. The
|
||||
following is a list of these new error codes: E_TAN3 E_TAN4
|
||||
E_COT3 E_COT4 E_SEC3 E_CSC3 E_TANH3 E_TANH4 E_COTH3 E_COTH4
|
||||
E_SECH3 E_CSCH3 E_ASIN3 E_ACOS3 E_ASINH3 E_ACOSH3 E_ATAN3 E_ACOT3
|
||||
E_ASEC3 E_ACSC3 E_ATANH3 E_ACOTH3 E_ASECH3 E_ACSCH3.
|
||||
|
||||
Added regression tests 3729 thru 3732 to test E_TAN3, E_COT3,
|
||||
E_SEC3 and E_CSC3 respectively.
|
||||
|
||||
Added experimental %g printf (and strprintf) format implementation
|
||||
based on pull request from github user 10110111.
|
||||
|
||||
Made experimental changes to macOS builds to not require use of
|
||||
/usr/include. The INCDIR for macOS uses:
|
||||
|
||||
INCDIR= $(shell xcrun --show-sdk-path --sdk macosx)/usr/include
|
||||
|
||||
to determine the upper path of the /usr/include directory for macOS.
|
||||
In some rare cases, the Darwin target seems to not automatically detected.
|
||||
If you are running under macOS, and that happens, you can force
|
||||
the target to be Darwin:
|
||||
|
||||
# for macOS users only, force the target to be darwin
|
||||
#
|
||||
make target=Darwin clobber
|
||||
make target=Darwin all
|
||||
make target=Darwin chk
|
||||
make target=Darwin install
|
||||
|
||||
|
||||
The following are the changes from calc version 2.12.6.6 to 2.12.6.8:
|
||||
|
||||
For historical purposes, in lucas.cal, gen_v1(1, n) always returns 4.
|
||||
|
||||
Fixed some compiler warnings, thanks to a report by Mike
|
||||
<michael dot d dot ince at gmail dot com>.
|
||||
|
||||
Added work around for a gcc warning bug, thanks to a report by Mike
|
||||
<michael dot d dot ince at gmail dot com>.
|
||||
|
||||
Fixed errors in various help files such as:
|
||||
|
||||
mat randbit seed srandom types
|
||||
|
||||
Removed the MAXSTRING symbol because it was no longer used by calc.
|
||||
|
||||
Increased HIST_SIZE (depth of the history stack) from 10k to 32k.
|
||||
|
||||
Increased TTYSIZE (reallocation size for terminal buffers) from 100 to 8191.
|
||||
|
||||
Increased MAXDEPTH (maximum depth of input stack) from 10 to 255.
|
||||
|
||||
Increased interactive input buffer size from 1024 to 256k. This has the
|
||||
effect of increasing the maximum length of an input line from a tty.
|
||||
This helps with an interactive bug that was reported by Ruslan Kabatsayev
|
||||
(b7 dot 10110111 at gmail dot com).
|
||||
|
||||
The calc man page indicates that -d also disables the printing of the
|
||||
leading tilde.
|
||||
|
||||
Added information to "help command" about how to silence messages
|
||||
while reading calc resource files.
|
||||
|
||||
Fixed an error message buffer overflow thanks to a report by
|
||||
Frank Peters <nlp at northernlightsphoto dot biz>.
|
||||
|
||||
Replaced all use of the C function sprintf() with snprintf().
|
||||
Replaced all use of the C funcion vsprintf() with vsnprintf().
|
||||
Replaced all DONT_HAVE_VSPRINTF with DONT_HAVE_VSNPRINTF.
|
||||
Replaced all Makefile var ${HAVE_VSPRINTF} with ${HAVE_VSNPRINTF}.
|
||||
|
||||
|
||||
The following are the changes from calc version 2.12.6.4 to 2.12.6.5:
|
||||
|
||||
Fixed warning about undefined operations involving the qlink(q)
|
||||
macro by replacing that macro with an inline-function. Thanks goes
|
||||
to David Haller <dnh at opensuse dot org> for this fix.
|
||||
|
||||
NOTE for Windows 10 users: Pavel Nemec <pane at seznam dot cz>
|
||||
reported that calc version 2.12.6.4 has been successfully
|
||||
compiled, installed and running on Windows 10. See README.WINDOWS
|
||||
for more details.
|
||||
|
||||
|
||||
The following are the changes from calc version 2.12.6.1 to 2.12.6.3:
|
||||
|
||||
Improved gen_v1(h,n) in lucas.cal to use an even faster search method.
|
||||
|
||||
Improved are checking in lucas.cal. In particular both h and n must be
|
||||
integers >= 1. In the case of both rodseth_xhn(x, h, n) and gen_v1(h, n)
|
||||
h must be odd.
|
||||
|
||||
Fixed an C code indenting issue that was reported by Thomas Walter
|
||||
<th dot walter42 at gmx dot de> in zfunc.c.
|
||||
|
||||
Fixed a man page warning about ./myfile where the leading dot
|
||||
was mistook for an nroff macro. Thanks goes to David Haller
|
||||
<dnh at opensuse dot org> for providing the patch.
|
||||
|
||||
Improved gen_v1(h,n) in lucas.cal for cases where h is not a
|
||||
multiple of 3. Optimized the search for v(1) when h is a
|
||||
multiple of 3.
|
||||
|
||||
Fixed a Makefile problem, reported by Doug Hays <doughays6 at gmail
|
||||
dot com>, where if a macOS user set BINDIR, LIBDIR, CALC_SHAREDIR
|
||||
or INCDIR in the top section, their values will be overwritten by
|
||||
the Darwin specific section.
|
||||
|
||||
|
||||
The following are the changes from calc version 2.12.6.0 to 2.12.6.0:
|
||||
|
||||
Added the makefile variable ${COMMON_ADD} that will add flags
|
||||
to all compile and link commands. The ${COMMON_ADD} flags are
|
||||
appended to both ${COMMON_CFLAGS} and ${COMMON_LDFLAGS}. This
|
||||
facility is available to nearly all platforms except those with
|
||||
very old make commands that do not understand the += operator.
|
||||
|
||||
Example on macOS (Darwin), one may invoke clang's -fsanitize
|
||||
facility by:
|
||||
|
||||
make clobber all \
|
||||
COMMON_ADD='-fsanitize=undefined -fsanitize=address'
|
||||
|
||||
Another example. To force C warnings to be treated as errors:
|
||||
|
||||
make COMMON_ADD='-Werror'
|
||||
|
||||
Created a GitHub repository for calc:
|
||||
|
||||
https://github.com/lcn2/calc
|
||||
|
||||
NOTE: The calc GitHub repository represents the an active
|
||||
development stream. While an effort will be made to keep
|
||||
the master branch of the calc GitHub repository in working
|
||||
order, that tree may be unstable. Those wishing for more
|
||||
reliable releases use releases found at calc mirror sites:
|
||||
|
||||
http://www.isthe.com/chongo/tech/comp/calc/calc-mirror.html
|
||||
|
||||
IMPORTANT NOTE:
|
||||
|
||||
On 2017 June 05, the calc GitHub history was re-written.
|
||||
Anyone who was tracking the calc "pre-release" on GitHub prior
|
||||
to version 2.12.6.0 should do a:
|
||||
|
||||
git reset --hard origin/master
|
||||
git cleanup -f
|
||||
|
||||
Or you may just want to start over:
|
||||
|
||||
rm -rf calc
|
||||
git clone https://github.com/lcn2/calc.git
|
||||
|
||||
Sorry about that. The previous GitHub repository was an useful
|
||||
experiment. Based on what we learned, we decided to rebuild it.
|
||||
|
||||
Renamed README to README.FIRST. Added README.md for the
|
||||
GitHub repository.
|
||||
|
||||
Fixed reading from standard input (stdin) when -p is given on
|
||||
the command line. This now prints hello:
|
||||
|
||||
echo hello | calc -p 'stdin = files(0); print fgetline(stdin);'
|
||||
|
||||
Added more debugging related to stdin when bit 4 of calc_debug
|
||||
is set (e.g., running calc with -D16).
|
||||
|
||||
Updated the calc(1) man page and 'help file' to explain about
|
||||
reading from standard input (stdin).
|
||||
|
||||
Added some clarifying remarks for 'help ptest' explaining that
|
||||
the ptest builtin can return 1 is some cases where the test
|
||||
value is a pseudoprime.
|
||||
|
||||
Removed duplicate copyright comments from the help/builtin that
|
||||
is built.
|
||||
|
||||
Fixed a number of typos in the CHANGES file.
|
||||
|
||||
The following are the changes from calc version 2.12.5.4 to 2.12.5.6:
|
||||
|
||||
Recompile to match current RHEL7.2 libc and friends.
|
||||
|
||||
@@ -21,13 +512,13 @@ The following are the changes from calc version 2.12.5.4 to date:
|
||||
The improved gen_v1() function is capable of returning a value
|
||||
for all valid values of h and n. As a result, the trial tables
|
||||
used by gen_v1() have been changed to a short list of values
|
||||
to try, in order ot likelyhood of success, before doing an
|
||||
enhaustive search for a v1 value to return.
|
||||
to try, in order ot likelihood of success, before doing an
|
||||
exhaustive search for a v1 value to return.
|
||||
|
||||
Removed lucas_tbl.cal calc resource file. This file was made
|
||||
obsolete by the above rewrite of the lucas.cal resource file.
|
||||
This file will be removed from the local cal directory and
|
||||
from CALC_SHAREDIR during a 'make install', 'make cobber',
|
||||
from CALC_SHAREDIR during a 'make install', 'make clobber',
|
||||
and 'make uninstall'.
|
||||
|
||||
Renamed gen_u0() to gen_u2() in lucas.cal. Provided a gen_u0()
|
||||
@@ -35,7 +526,7 @@ The following are the changes from calc version 2.12.5.4 to date:
|
||||
|
||||
The old gen_v1() method used by the Amdahl 6 group has been
|
||||
renamed legacy_gen_v1() in lucas.cal. This function is no
|
||||
longer usde by the lucas(h, n) function to test the primality of
|
||||
longer used by the lucas(h, n) function to test the primality of
|
||||
h*2^n-1. It is preserved in lucas.cal for historical purposes.
|
||||
|
||||
The 'make clobber' rule will attempt to remove all files that
|
||||
@@ -52,18 +543,23 @@ The following are the changes from calc version 2.12.5.4 to date:
|
||||
that the BUILDROOT directory had been improperly put into various
|
||||
paths and binaries. This has been fixed in 2.12.5.5.
|
||||
|
||||
Fixed a crash that showed up on macOS (Darwin) that was reported
|
||||
by Richard Outerbridge <outer at interlog dot com> and
|
||||
fixed by Stuart Henderson <stu at spacehopper dot org>.
|
||||
Thanks goes to both!
|
||||
|
||||
|
||||
The following are the changes from calc version 2.12.5.3 to 2.12.5.3:
|
||||
|
||||
Calc version 2.12.5.2 for Darwin (Mac OS X) users, code to installed
|
||||
Calc version 2.12.5.2 for macOS (Darwin) users, code to installed
|
||||
calc under /opt/calc. Moreover the CHANGES file did not mention
|
||||
/opt/calc. Sorry about that!.
|
||||
|
||||
A much better tree for Darwin (Mac OS X) users would have been
|
||||
to install cal under /opt/calc. This release ONLY changes the Darwin
|
||||
(Mac OS X) install tree to /usr/local.
|
||||
A much better tree for macOS (Darwin) users would have been
|
||||
to install cal under /opt/calc. This release ONLY changes the
|
||||
macOS (Darwin) install tree to /usr/local.
|
||||
|
||||
Darwin (Mac OS X) users who installed calc version 2.12.5.2
|
||||
macOS (Darwin) users who installed calc version 2.12.5.2
|
||||
should, after installing version 2.12.5.3:
|
||||
|
||||
rm -rf /opt/calc
|
||||
@@ -71,15 +567,15 @@ The following are the changes from calc version 2.12.5.3 to 2.12.5.3:
|
||||
|
||||
The following are the changes from calc version 2.12.5.1 to 2.12.5.2:
|
||||
|
||||
NOTE: calc version 2.12.5.2, for Darwin (Mac OS X) users,
|
||||
NOTE: calc version 2.12.5.2, for macOS (Darwin) users,
|
||||
installed under /opt/calc. We neglected to mention this
|
||||
AND /usr/local would have been a better choice. Sorry!
|
||||
Fixed in calc version 2.12.5.3.
|
||||
|
||||
Removed rules and makefile variables assocated with shortened
|
||||
Removed rules and makefile variables associated with shortened
|
||||
calc version numbers of less than 4 levels.
|
||||
|
||||
Under OS X (darwin), if /usr/include is missing, warnings
|
||||
Under OS X (Darwin), if /usr/include is missing, warnings
|
||||
are issued to help the user use xcode-select --install
|
||||
so that one may properly compile C code.
|
||||
|
||||
@@ -106,40 +602,14 @@ The following are the changes from calc version 2.12.5.1 to 2.12.5.2:
|
||||
|
||||
The following are the changes from calc version 2.12.5.0 to 2.12.5.1:
|
||||
|
||||
Calc has a new calc-tester mailing list. This list is for those
|
||||
who are using/testing calc. We also use this list to announce
|
||||
new versions of calc. To subscribe to the calc-tester mailing
|
||||
list, visit the following URL:
|
||||
|
||||
http://www.isthe.com/chongo/tech/comp/calc/calc-tester.html
|
||||
|
||||
This is a low volume moderated mailing list.
|
||||
|
||||
This mailing list replaces calc-tester at asthe dot com list.
|
||||
|
||||
If you need a human to help you with your mailing list subscription,
|
||||
please send EMail to our special:
|
||||
|
||||
calc-tester-maillist-help at asthe dot com
|
||||
|
||||
address. To be sure we see your EMail asking for help with your
|
||||
mailing list subscription, please use the following phase in your
|
||||
EMail Subject line:
|
||||
|
||||
calc tester mailing list help
|
||||
|
||||
That phrase in your subject line will help ensure your
|
||||
request will get past our anti-spam filters. You may have
|
||||
additional words in your subject line.
|
||||
|
||||
There is a new calc bug report EMail address:
|
||||
There is a new calc bug report Email address:
|
||||
|
||||
calc-bug-report at asthe dot com
|
||||
|
||||
This replaces the old calc-bugs at asthe dot com address.
|
||||
|
||||
To be sure we see your EMail reporting a calc bug, please use the
|
||||
following phase in your EMail Subject line:
|
||||
To be sure we see your Email reporting a calc bug, please use the
|
||||
following phase in your Email Subject line:
|
||||
|
||||
calc bug report
|
||||
|
||||
@@ -161,7 +631,7 @@ The following are the changes from calc version 2.12.5.0 to 2.12.5.1:
|
||||
|
||||
Noted that the hash() builtin function, internally known as
|
||||
quickhash (used for internal objects such as the associative
|
||||
arrays as well as other internal processes) uses the deprcated
|
||||
arrays as well as other internal processes) uses the deprecated
|
||||
32-bit FNV-0 hash. The use of this deprecated hash is sufficient
|
||||
for calc internal purposes. Use of FNV-1a is recommended for
|
||||
a general non-cryptographic quick hash.
|
||||
@@ -197,7 +667,7 @@ The following are the changes from calc version 2.12.4.14 to 2.12.5.0:
|
||||
|
||||
We made important fixes to the calc command line history:
|
||||
|
||||
Fixed a bug in the command line history where calc would somtimes
|
||||
Fixed a bug in the command line history where calc would sometimes
|
||||
crash. There was code that used memcpy() instead of memmove()
|
||||
that could corrupt the command line history when entering a
|
||||
into into history that was similar to a previous entry. Thanks
|
||||
@@ -207,7 +677,7 @@ The following are the changes from calc version 2.12.4.14 to 2.12.5.0:
|
||||
The calc command line history code, in general was not robust.
|
||||
We made use a patch from Mathias Buhr <napcode at users dot sf
|
||||
dot net>, that while it uses a bit more memory: is much more
|
||||
flexible, readable and robust. This patch replaced the improer
|
||||
flexible, readable and robust. This patch replaced the improper
|
||||
use of memcpy() (see above) with better code. Thanks!
|
||||
|
||||
The alg_config.cal calc resource file has been reworked to produce
|
||||
@@ -340,26 +810,26 @@ The following are the changes from calc version 2.12.4.6 to version 2.12.4.10:
|
||||
Set MACOSX_DEPLOYMENT_TARGET=10.8 as we upgraded all of
|
||||
our development Mac OS X to 10.8.
|
||||
|
||||
Libraries are chmodded as 0644 to allow for building rpms
|
||||
Libraries are chmod-ed as 0644 to allow for building rpms
|
||||
without root.
|
||||
|
||||
Silenced annoying warning about unused variable 'intp'
|
||||
while compiline endian.c under some circumstances.
|
||||
while compiling endian.c under some circumstances.
|
||||
|
||||
Fixed typo in redeclaration warnings. Thanks to
|
||||
Fixed typo in re-declaration warnings. Thanks to
|
||||
Christoph Zurnieden <czurnieden at gmx dot de> for this report.
|
||||
|
||||
Added a number of calc resource files by
|
||||
Christoph Zurnieden <czurnieden at gmx dot de> including:
|
||||
|
||||
bernpoly.cal - Computes the nth Bernoulli polynomial at z for any n,z
|
||||
brentsolve.cal - root-finder implementwed with the Brent-Dekker trick
|
||||
brentsolve.cal - root-finder implemented with the Brent-Dekker trick
|
||||
factorial.cal - product of the positive integers
|
||||
factorial2.cal - variety of integer functions quasi-related to factoral
|
||||
factorial2.cal - variety of integer functions quasi-related to factorial
|
||||
lambertw.cal - Computes Lambert's W-function at "z" at branch "branch"
|
||||
lnseries.cal - Calculates a series of natural logarithms at 1,2,3,4...n
|
||||
specialfunctions.cal - Calculates the value of the beta function
|
||||
statistics.cal - a wide vareity of stastical functions
|
||||
statistics.cal - a wide variety of statistical functions
|
||||
toomcook.cal - Multiply by way of the Toom-Cook algorithm
|
||||
zeta2.cal - Calculate the value of the Hurwitz Zeta function
|
||||
|
||||
@@ -372,7 +842,7 @@ The following are the changes from calc version 2.12.4.6 to version 2.12.4.10:
|
||||
|
||||
We replaced COPYING-LGPL with the version that is found at
|
||||
http://www.gnu.org/licenses/lgpl-2.1.txt because that version
|
||||
contans some whitespace formatting cleanup. Otherwise the
|
||||
contains some whitespace formatting cleanup. Otherwise the
|
||||
license is the same.
|
||||
|
||||
We fixed a number of places where "the the" was used
|
||||
@@ -398,7 +868,7 @@ The following are the changes from calc version 2.12.4.3 to 2.12.4.5:
|
||||
|
||||
Added gvec.cal resource script.
|
||||
|
||||
Added calc-symlink make rule to setup symlinks from stardard locations
|
||||
Added calc-symlink make rule to setup symlinks from standard locations
|
||||
into a tree specified by a non-empty ${T} makefile variable. Added
|
||||
calc-unsymlink to remove any symlinks that may have been created by
|
||||
the calc-symlink rule.
|
||||
@@ -418,7 +888,7 @@ The following are the changes from calc version 2.12.4.0 to 2.12.4.2:
|
||||
Fixed a documentation bug for the sgn() builtin.
|
||||
|
||||
Added the 1<<8/2 evaluation example to "help unexpected". That
|
||||
expression evalutes to 128, not 16 as some C programmers might expect.
|
||||
expression evaluates to 128, not 16 as some C programmers might expect.
|
||||
|
||||
Fixed a bug in solve.cal where high was not returned in some situations.
|
||||
|
||||
@@ -430,7 +900,7 @@ The following are the changes from calc version 2.12.4.0 to 2.12.4.2:
|
||||
|
||||
The Makefile used in the source rpm (calc-*.src.rpm) no longer uses
|
||||
the -Werror compile flag. This is to help those distributions with
|
||||
compilers that make produce (hopefully) complination warnings.
|
||||
compilers that make produce (hopefully) compilation warnings.
|
||||
NOTE: For testing and calc build purposes will recommend and will
|
||||
continue to use the -Werror flag.
|
||||
|
||||
@@ -444,7 +914,7 @@ The following are the changes from calc version 2.12.4.0 to 2.12.4.2:
|
||||
|
||||
one may build a calc binary that is easier to debug.
|
||||
|
||||
Fixed a bug where an certains typos (e.g., calling an unknown
|
||||
Fixed a bug where an certain typos (e.g., calling an unknown
|
||||
function) would previously cause calc to exit.
|
||||
|
||||
Updated the COPYING file to reflect the new filenames associated
|
||||
@@ -465,7 +935,7 @@ The following are the changes from calc version 2.12.4.0 to 2.12.4.2:
|
||||
Added dms.cal and hms.cal resource files. The dms.cal is a more
|
||||
functional version of deg.cal. It is a superset except that increment
|
||||
and decrement is on the arc second level. The hms.cal is for
|
||||
24-hour cycle instread of the 360 degree cycle of dms.cal.
|
||||
24-hour cycle instead of the 360 degree cycle of dms.cal.
|
||||
|
||||
Changed deg.cal object name from dms to deg so that the more functional
|
||||
dms.cal can own the dms object name.
|
||||
@@ -473,7 +943,7 @@ The following are the changes from calc version 2.12.4.0 to 2.12.4.2:
|
||||
Updated 'help obj' to reflect changes to 'show objfunctions' and
|
||||
resource file example list since 1999.
|
||||
|
||||
Fixed problem where CALC_BYTE_ORDER refering to CALC_BIG_ENDIAN
|
||||
Fixed problem where CALC_BYTE_ORDER referring to CALC_BIG_ENDIAN
|
||||
and CALC_LITTLE_ENDIAN instead of BIG_ENDIAN and LITTLE_ENDIAN.
|
||||
|
||||
|
||||
@@ -485,7 +955,7 @@ The following are the changes from calc version 2.12.3.0 to 2.12.3.3:
|
||||
|
||||
Calc versions will always be of the form x.y.z.w even when the
|
||||
MINOR_PATCH (w) is 0. Thus, 2.12.3.0 will be printed as 2.12.3.0
|
||||
instread of just 2.12.3.
|
||||
instead of just 2.12.3.
|
||||
|
||||
Added MINGW32_NT-5.0 compile target based on a patch from
|
||||
Brian L. Angus (angus at eng dot utah dot edu).
|
||||
@@ -499,7 +969,7 @@ The following are the changes from calc version 2.12.3.0 to 2.12.3.3:
|
||||
|
||||
The ${CALC_INCDIR}/custom is no longer being removed at install time
|
||||
if it is empty. Now when ${ALLOW_CUSTOM} make variable is empty,
|
||||
an empty ${CALC_INCDIR}/custom may be left hehind.
|
||||
an empty ${CALC_INCDIR}/custom may be left behind.
|
||||
|
||||
Fixed a problem where a "make clobber" would remove custom/Makefile
|
||||
and fail to rebuilt it.
|
||||
@@ -569,7 +1039,7 @@ The following are the changes from calc version 2.12.1.1 to 2.12.2.2:
|
||||
Fixed the wording for the -i flag in the calc man page.
|
||||
|
||||
Added some notes to the help/unexpected file regarding calc
|
||||
and interactice shells.
|
||||
and interactive shells.
|
||||
|
||||
Fixed bug where a FILEPOS was copied FPOS_POS_BITS octets instead of
|
||||
FPOS_POS_LEN octets.
|
||||
@@ -593,7 +1063,7 @@ The following are the changes from calc version 2.12.1.1 to 2.12.2.2:
|
||||
operate over a half closed interval. The help/rand and help/random
|
||||
refer to the top of the interval as "beyond" instead of "max".
|
||||
|
||||
Releaseing source tar balls using bzip2 instead of with gzip. So
|
||||
Releasing source tar balls using bzip2 instead of with gzip. So
|
||||
what was calc-something.tar.gz is now calc-something.tar.bz2.
|
||||
To "uncompress" use:
|
||||
|
||||
@@ -732,7 +1202,7 @@ The following are the changes from calc version 2.12.1.10 to 2.12.2:
|
||||
|
||||
calc-contrib at asthe dot com
|
||||
|
||||
EMail address an "ifeq ($(target),YOUR_TARGET_NAME)"
|
||||
Email address an "ifeq ($(target),YOUR_TARGET_NAME)"
|
||||
... "endif" set of lines from the Makefile so that
|
||||
we can consider them for the next release.
|
||||
|
||||
@@ -865,7 +1335,7 @@ The following are the changes from calc version 2.12.1.10 to 2.12.2:
|
||||
2.5 ^ 2.718i 3.13145i ^ 0.30103i
|
||||
|
||||
Fixed typos in the calc man page thanks to a Debian bug report
|
||||
by A. Costa <agcosta at gis dot .net> that wsa kindly forwarded
|
||||
by A. Costa <agcosta at gis dot .net> that was kindly forwarded
|
||||
to us by Martin Buck <m at rtin-buck dot de>.
|
||||
|
||||
|
||||
@@ -1486,7 +1956,7 @@ The following are the changes from calc version 2.11.10 to 2.11.10:
|
||||
and ${L64_FORMAT}. Removed longlong.c and longlong.h. The use
|
||||
of HAVE_LONGLONG=0 was problematic. The lack of complaints about
|
||||
the HAVE_LONGLONG=0 shows that the 'long long' type is wide spread
|
||||
enough warrent not trying to support compilers without 'long long'.
|
||||
enough to warrant not trying to support compilers without 'long long'.
|
||||
|
||||
Removed the SVAL and SHVAL macros from zrand.c, zrand.h, and zmath.h
|
||||
as they were causing too many broken C pre-processors and C checkers
|
||||
@@ -1500,7 +1970,7 @@ The following are the changes from calc version 2.11.10 to 2.11.10:
|
||||
could test calc. Best wishes to the former BSDI folk and thanks
|
||||
for breaking important ground in the Open Source Movement!
|
||||
|
||||
Fixed several typos found in the documentation and buildin
|
||||
Fixed several typos found in the documentation and builtin
|
||||
function output by C Smith <smichr at hotmail dot com>.
|
||||
|
||||
Fixed -d so that:
|
||||
@@ -1872,7 +2342,7 @@ The following are the changes from calc version 2.11.5t4.1 to 2.11.5t4.4:
|
||||
version string.
|
||||
|
||||
Added subject requirements for the calc-tester-request and
|
||||
calc-bugs-mail EMail aliases. See:
|
||||
calc-bugs-mail Email aliases. See:
|
||||
|
||||
http://www.isthe.com/chongo/tech/comp/calc/email.html
|
||||
|
||||
@@ -1900,7 +2370,7 @@ The following are the changes from calc version 2.11.5t4.1 to 2.11.5t4.4:
|
||||
(kawamura at mlb.co.jp) for the bug report and patch!
|
||||
|
||||
Fixed headers on fproduct.calc powerterm.calc 4dsphere.calc so
|
||||
that they are correcly changed on installation.
|
||||
that they are correctly changed on installation.
|
||||
|
||||
Added ${GREP} Makefile variable.
|
||||
|
||||
@@ -2184,7 +2654,7 @@ The following are the changes from calc version 2.11.4t1 to 2.11.4t2:
|
||||
function. It remains for backward compatibility.
|
||||
|
||||
The Makefile now builds have_fpos_pos.h to determine if the
|
||||
a non-scalar FILEPOS has a __pos stucture element. If it does,
|
||||
a non-scalar FILEPOS has a __pos structure element. If it does,
|
||||
the FILEPOS_BITS is taken to be the size of just the __pos element.
|
||||
|
||||
Misc fixes related to non-scalar (e.g., structure) FILEPOS. Fixed
|
||||
@@ -2449,16 +2919,15 @@ The following are the changes from calc version 2.11.2t0 to 2.11.2t1.0:
|
||||
Fixed a bug whereby help files are not displayed correctly on
|
||||
systems such as NetBSD 1.4.1. Thanks to a fix from Jakob Naumann.
|
||||
|
||||
Changed EMail addresses to use asthe.com. Changed URLs to use
|
||||
www.isthe.com. NOTE: The EMail address uses 'asthe' and the web
|
||||
Changed Email addresses to use asthe.com. Changed URLs to use
|
||||
www.isthe.com. NOTE: The Email address uses 'asthe' and the web
|
||||
site URL uses 'isthe'.
|
||||
|
||||
Using calc-bugs at asthe dot com for calc bug reports,
|
||||
calc-contrib at asthe dot com for calc contributions,
|
||||
calc-tester-request at asthe dot com for requests to join calc-tester and
|
||||
calc-tester at asthe dot com for the calc tester mailing list.
|
||||
|
||||
Replaced explicit EMail addresses found this file with the <user at
|
||||
Replaced explicit Email addresses found this file with the <user at
|
||||
site dot domain> notation to reduce the potential for those folks
|
||||
to be spammed.
|
||||
|
||||
@@ -2934,7 +3403,7 @@ The following are the changes from calc version 2.11.0t8.9.1 to 2.11.0t9.4.5:
|
||||
by Prentice-Hall (UK) Ltd., 1990.) The piforever() function prints
|
||||
digits of pi for as long as your memory and system uptime allows. :-)
|
||||
|
||||
Fixed the URLs found thruout the source and documentation which did
|
||||
Fixed the URLs found throughout the source and documentation which did
|
||||
not and in /, but should for performance and server load reasons.
|
||||
|
||||
Cleaned up and improved handling of "mat" and "obj". The comma in:
|
||||
@@ -3013,7 +3482,7 @@ The following are the changes from calc version 2.11.0t8.9.1 to 2.11.0t9.4.5:
|
||||
and investigated by Michel van der List <vanderlistmj at sbphrd dot com>.
|
||||
|
||||
Made an effort to ensure that the v_subtype of VALUES are initialized
|
||||
to V_NOSUBTYPE thruout the source code.
|
||||
to V_NOSUBTYPE through out the source code.
|
||||
|
||||
Established a separate calc-bugs address from the calc-tester
|
||||
mailing list. Using anti-spam address forms in order to try and
|
||||
@@ -3046,7 +3515,7 @@ The following are the changes from calc version 2.11.0t8 to 2.11.0t8.9:
|
||||
If $CALCRC has more than one file as in file1:file2 and an error
|
||||
occurs in file1, then calc -c will not read file2.
|
||||
|
||||
Fixed some of the old EMail addresses found in calc documentation.
|
||||
Fixed some of the old Email addresses found in calc documentation.
|
||||
|
||||
Added HAVE_USTAT, HAVE_GETSID, HAVE_GETPGID, HAVE_GETTIME, HAVE_GETPRID
|
||||
and HAVE_URANDOM symbols to the Makefile. These symbols, along with
|
||||
@@ -3504,7 +3973,7 @@ The following are the changes from calc version 2.11.0t1 to 2.11.0t6.3:
|
||||
A patch from Ernest Bowen <ernie at turing dot une dot edu dot au> now
|
||||
defines special meaning to the first 2 bits of config("lib_debug"):
|
||||
|
||||
bit 0 set => messages printed when inputisterminal
|
||||
bit 0 set => messages printed when input is from a terminal
|
||||
bit 1 set => messages printed when reading from a file
|
||||
|
||||
The lib/regress.cal regression suite does:
|
||||
@@ -4453,7 +4922,7 @@ The following are the changes from calc version 2.10.3t5.28 to 2.10.3t5.33:
|
||||
long Mersenne factorizations. The default reporting loop
|
||||
is now 10000 cycles.
|
||||
|
||||
SGI Mips r10k compile set is speced for IRIX6.5 with v7.2
|
||||
SGI Mips r10k compile set is specified for IRIX6.5 with v7.2
|
||||
compilers. A note for pre-IRIX6.5 and/or pre-v7.2 compilers
|
||||
is given in the compile set.
|
||||
|
||||
@@ -4714,7 +5183,7 @@ The following are the changes from calc version 2.10.3t5.1 to 2.10.3t5.10:
|
||||
surprises that C programmers may encounter.
|
||||
|
||||
Updated the 'help', 'intro' and 'overview' to reflect the
|
||||
full list of non-builtin function help files. Reorered the
|
||||
full list of non-builtin function help files. Reordered the
|
||||
'full' help file.
|
||||
|
||||
The blkalloc() builtin has been renamed blk().
|
||||
@@ -5665,7 +6134,7 @@ The following are the changes from calc version 2.10.2t4 to 2.10.2t24:
|
||||
|
||||
The regression test suite output has been changed so that it will
|
||||
output the same information regardless of CPU performance. In
|
||||
particular, cpu times of certain tests are not printed. This allows
|
||||
particular, CPU times of certain tests are not printed. This allows
|
||||
one to compare the regression output of two different systems easier.
|
||||
|
||||
A matrix or object declaration is now considered an expression
|
||||
@@ -5988,11 +6457,11 @@ The following are the changes from calc version 2.10.2t1 to 2.10.2t3:
|
||||
y = fgetstr(f); /* returns "Curt" */
|
||||
z = fgetstr(f); /* returns "Noll" */
|
||||
|
||||
The builtin fgetfield() returns the next field of non-whitepsace
|
||||
The builtin fgetfield() returns the next field of non-whitespace
|
||||
characters.
|
||||
|
||||
The builtins scan(), fscan(), strscan() read tokens (fields of
|
||||
non-whitepsace characters) and evaluates them. Thus:
|
||||
non-whitespace characters) and evaluates them. Thus:
|
||||
|
||||
global a,b,c;
|
||||
strscan("2+3 4^2\n c=a+b", a, b, 0);
|
||||
@@ -6271,7 +6740,7 @@ The following are the changes from calc version 2.10.1t11 to 2.10.1t19:
|
||||
config("all", "newstd")
|
||||
|
||||
Renamed config.h (configuration file built during the make) to conf.h.
|
||||
Added a new config.h to contain info on thw V_CONFIG type.
|
||||
Added a new config.h to contain info on the V_CONFIG type.
|
||||
|
||||
Fixed some ANSI C compile warnings.
|
||||
|
||||
@@ -6836,7 +7305,7 @@ The following are the changes from calc version 2.9.3t8 to 2.9.3t9.2:
|
||||
the rand() builtin does not match the additive 55 / shuffle
|
||||
generators from the old cryrand.cal file.
|
||||
|
||||
Added Makfile support for building BSD/386 releases.
|
||||
Added Makefile support for building BSD/386 releases.
|
||||
|
||||
The cmp() builtin can now compare complex values.
|
||||
|
||||
@@ -6887,10 +7356,10 @@ The following are the changes from calc version 2.9.3t8 to 2.9.3t9.2:
|
||||
which is built from have_const.c will determine if we can or should
|
||||
use const. See the Makefile for details.
|
||||
|
||||
Some systems do not have uid_t. The file have_uid_t.h, which is
|
||||
built from have_uid_t.c will determine if we can or should depend
|
||||
on uid_t being typefed by the system include files. See the Makefile
|
||||
for details.
|
||||
Some systems do not have uid_t. The file have_uid_t.h, which
|
||||
is built from have_uid_t.c will determine if we can or should
|
||||
depend on uid_t being typedefed by the system include files.
|
||||
See the Makefile for details.
|
||||
|
||||
Some systems do not have memcpy(), memset() and strchr(). The
|
||||
file have_newstr.h, which is built from have_newstr.c will
|
||||
@@ -7196,7 +7665,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) 2001-2017 Landon Curt Noll
|
||||
## Copyright (C) 2001-2017,2021 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
|
||||
@@ -7212,10 +7681,6 @@ 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.
|
||||
## 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
##
|
||||
## @(#) $Revision: 30.55 $
|
||||
## @(#) $Id: CHANGES,v 30.55 2017/05/21 02:22:22 chongo Exp $
|
||||
## @(#) $Source: /usr/local/src/bin/calc-RHEL7/RCS/CHANGES,v $
|
||||
##
|
||||
## Under source code control: 1993/06/02 18:12:57
|
||||
## File existed as early as: 1989
|
||||
##
|
||||
|
100
CONTRIB-CODE
Normal file
100
CONTRIB-CODE
Normal file
@@ -0,0 +1,100 @@
|
||||
Calc is open source. Contributions of code are welcome.
|
||||
|
||||
We welcome and encourage you to send us:
|
||||
|
||||
* calc resource files (cal/*.cal files)
|
||||
* calc shell scripts (cscript/*.calc files)
|
||||
* builtin functions that you have modified or written, i.e.:
|
||||
assocfunc.c comfunc.c func.c func.h
|
||||
listfunc.c matfunc.c qfunc.c zfunc.c
|
||||
* custom functions that you have modified or written
|
||||
* help files modified or written (help/*)
|
||||
* Makefile improvements (Makefile, */Makefile)
|
||||
* other source code modifications (*.c, *.h)
|
||||
* etc. (* */* :) )
|
||||
|
||||
In order to consider integrating your code, we need:
|
||||
|
||||
* calc version you are working with (please try use the latest version)
|
||||
* new help files or help file patches, if applicable (documentation)
|
||||
* proposed text for the CHANGES file (brief description of what it does)
|
||||
* regress.cal test patch as needed
|
||||
* your source code and/or source code changes (:-))
|
||||
|
||||
If you add functionality to calc, please be sure to modify/patch/add
|
||||
Makefiles, help files, cal/regress.cal test code as well.
|
||||
Regression test cases are vital to maintaining calc's level
|
||||
of correctness and helps us avoid code bug regression.
|
||||
|
||||
Please try to generate a patch against the most recent
|
||||
version of calc, and if you use GitHub, the top of the
|
||||
master branch:
|
||||
|
||||
https://github.com/lcn2/calc
|
||||
|
||||
The best way contribute to calc bug is to generate calc
|
||||
GitHub pull request:
|
||||
|
||||
https://github.com/lcn2/calc/pulls
|
||||
|
||||
Your code needs to be contributed under either the 2.1 of the GNU
|
||||
Lesser General Public License (LGPL 2.1) or in the public domain.
|
||||
|
||||
If you do not want to use calc GitHub, then send Email to:
|
||||
|
||||
calc-contrib-mail at asthe dot com
|
||||
|
||||
NOTE: Remove spaces and replace 'at' with @, 'dot' with .
|
||||
|
||||
You MUST use following SPECIAL PHRASE in your Email Subject line:
|
||||
|
||||
calc contribution
|
||||
|
||||
You may add additional words to your subject line.
|
||||
|
||||
Suggestion:
|
||||
|
||||
From time to time, the Email address and Subject SPECIAL PHRASE
|
||||
may change so verify you have the current info by visiting:
|
||||
|
||||
http://www.isthe.com/chongo/tech/comp/calc/calc-contrib.html
|
||||
|
||||
IMPORTANT: If your Email doesn't contain the above phrase,
|
||||
then we WILL NOT SEE your Email.
|
||||
|
||||
PLEASE BE SURE you have that SPECIAL PHRASE somewhere in the subject line!
|
||||
|
||||
Keep in mind that the best way to report on a calc bug is to use
|
||||
the above mentioned calc GitHub procedure.
|
||||
|
||||
Please be patient as we cannot always respond to Email messages quickly.
|
||||
|
||||
=-=
|
||||
|
||||
See also the calc wishlist by running the calc command:
|
||||
|
||||
; help wishlist
|
||||
|
||||
=-=
|
||||
|
||||
## Copyright (C) 1999,2014,2021 Landon Curt Noll
|
||||
##
|
||||
## Calc is open software; you can redistribute it and/or modify it under
|
||||
## the terms of the version 2.1 of the GNU Lesser General Public License
|
||||
## as published by the Free Software Foundation.
|
||||
##
|
||||
## Calc is distributed in the hope that it will be useful, but WITHOUT
|
||||
## ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
||||
## or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General
|
||||
## Public License for more details.
|
||||
##
|
||||
## A copy of version 2.1 of the GNU Lesser General Public License is
|
||||
## distributed with calc under the filename COPYING-LGPL. You should have
|
||||
## received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
## 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
##
|
||||
## Under source code control: 1997/03/09 16:33:22
|
||||
## File existed as early as: 1997
|
||||
##
|
||||
## chongo <was here> /\oo/\ http://www.isthe.com/chongo/
|
||||
## Share and enjoy! :-) http://www.isthe.com/chongo/tech/comp/calc/
|
65
COPYING
65
COPYING
@@ -6,16 +6,12 @@ This file is Copyrighted
|
||||
|
||||
This file is covered under the following Copyright:
|
||||
|
||||
Copyright (C) 1999-2014 Landon Curt Noll
|
||||
Copyright (C) 1999-2021 Landon Curt Noll
|
||||
All rights reserved.
|
||||
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
# @(#) $Revision: 30.6 $
|
||||
# @(#) $Id: COPYING,v 30.6 2014/10/12 12:23:43 chongo Exp $
|
||||
# @(#) $Source: /usr/local/src/bin/calc/RCS/COPYING,v $
|
||||
|
||||
-=-
|
||||
|
||||
Calc is covered by the GNU Lesser General Public License
|
||||
@@ -53,65 +49,6 @@ Calc is covered by the GNU Lesser General Public License
|
||||
Boston, MA 02110-1301
|
||||
USA
|
||||
|
||||
To subscribe to the calc-tester mailing list, visit the following URL:
|
||||
|
||||
http://www.isthe.com/chongo/tech/comp/calc/calc-tester.html
|
||||
|
||||
This is a low volume moderated mailing list.
|
||||
|
||||
This mailing list replaces calc-tester at asthe dot com list.
|
||||
|
||||
If you need a human to help you with your mailing list subscription,
|
||||
please send EMail to our special:
|
||||
|
||||
calc-tester-maillist-help at asthe dot com
|
||||
|
||||
NOTE: Remove spaces and replace 'at' with @, 'dot' with .
|
||||
|
||||
address. To be sure we see your EMail asking for help with your
|
||||
mailing list subscription, please use the following phase in your
|
||||
EMail Subject line:
|
||||
|
||||
calc tester mailing list help
|
||||
|
||||
That phrase in your subject line will help ensure your
|
||||
request will get past our anti-spam filters. You may have
|
||||
additional words in your subject line.
|
||||
|
||||
-=-
|
||||
|
||||
Calc bug reports and calc bug fixes should be sent to:
|
||||
|
||||
calc-bug-report at asthe dot com
|
||||
|
||||
NOTE: Remove spaces and replace 'at' with @, 'dot' with .
|
||||
|
||||
This replaces the old calc-bugs at asthe dot com address.
|
||||
|
||||
To be sure we see your EMail reporting a calc bug, please use the
|
||||
following phase in your EMail Subject line:
|
||||
|
||||
calc bug report
|
||||
|
||||
That phrase in your subject line will help ensure your
|
||||
request will get past our anti-spam filters. You may have
|
||||
additional words in your subject line.
|
||||
|
||||
However, you may find it more helpful to simply subscribe
|
||||
to the calc-tester mailing list (see above) and then to
|
||||
send your report to that mailing list as a wider set calc
|
||||
testers may be able to help you.
|
||||
|
||||
-=-
|
||||
|
||||
The calc web site is located at:
|
||||
|
||||
http://www.isthe.com/chongo/tech/comp/calc/
|
||||
|
||||
NOTE: The EMail address uses 'asthe', while the web site uses 'isthe'.
|
||||
|
||||
-=-
|
||||
|
||||
Calc's relationship to the GNU Lesser General Public License
|
||||
------------------------------------------------------------
|
||||
|
||||
|
@@ -29,9 +29,19 @@ Installing calc from the bzip2-ed tarball in 4 easy steps:
|
||||
|
||||
The top level Makefile and the custom/Makefile require a GNU
|
||||
Make (such as gmake) or an equivalently advanced make. On many
|
||||
targets, the default make is sufficent. On FreeBSD for example,
|
||||
targets, the default make is sufficient. On FreeBSD for example,
|
||||
one must use gmake instead of make.
|
||||
|
||||
Some report that under macOS, one has to declare the target
|
||||
to be darwin. So for macOS, one might have to do:
|
||||
|
||||
# for macOS users only, force the target to be darwin
|
||||
#
|
||||
make target=Darwin clobber
|
||||
make target=Darwin all
|
||||
make target=Darwin chk
|
||||
make target=Darwin install
|
||||
|
||||
If your target system does not have GNU Make (or equivalent), then
|
||||
you should try using the Makefile.simple and custom/Makefile.simple
|
||||
files:
|
||||
@@ -110,7 +120,7 @@ Installing calc from the bzip2-ed tarball in 4 easy steps:
|
||||
found below, comment out the Linux set and comment in that
|
||||
set or edit the gcc set or the common cc set as needed.
|
||||
|
||||
You may want to change these Makrfile variables from their defaults:
|
||||
You may want to change these Makefile variables from their defaults:
|
||||
|
||||
RANLIB
|
||||
|
||||
@@ -142,7 +152,7 @@ Installing calc from the bzip2-ed tarball in 4 easy steps:
|
||||
|
||||
The top level Makefile and the custom/Makefile require a GNU
|
||||
Make (such as gmake) or an equivalently advanced make. On many
|
||||
targets, the default make is sufficent. On FreeBSD for example,
|
||||
targets, the default make is sufficient. On FreeBSD for example,
|
||||
one must use gmake instead of make.
|
||||
|
||||
If your target system does not have GNU Make (or equivalent), then
|
||||
@@ -185,10 +195,10 @@ Installing calc from the bzip2-ed tarball in 4 easy steps:
|
||||
|
||||
make install
|
||||
|
||||
We suggest that you might want to read the README file and look at
|
||||
the calc help subsystem. See the README file for details.
|
||||
We suggest that you might want to read the README.FIRST file and look at
|
||||
the calc help subsystem. See also the README.md file.
|
||||
|
||||
## Copyright (C) 1999-2007 Landon Curt Noll
|
||||
## Copyright (C) 1999-2007,2021 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
|
||||
@@ -204,10 +214,6 @@ the calc help subsystem. See the README file for details.
|
||||
## received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
## 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
##
|
||||
## @(#) $Revision: 30.6 $
|
||||
## @(#) $Id: HOWTO.INSTALL,v 30.6 2007/10/16 12:22:22 chongo Exp $
|
||||
## @(#) $Source: /usr/local/src/bin/calc/RCS/HOWTO.INSTALL,v $
|
||||
##
|
||||
## Under source code control: 1999/09/27 20:48:44
|
||||
## File existed as early as: 1999
|
||||
##
|
||||
|
4
LIBRARY
4
LIBRARY
@@ -638,10 +638,6 @@ need call libcalc_call_me_last() only once.
|
||||
## received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
## 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
##
|
||||
## @(#) $Revision: 30.1 $
|
||||
## @(#) $Id: LIBRARY,v 30.1 2007/03/16 11:09:46 chongo Exp $
|
||||
## @(#) $Source: /usr/local/src/bin/calc/RCS/LIBRARY,v $
|
||||
##
|
||||
## Under source code control: 1993/07/30 19:44:49
|
||||
## File existed as early as: 1993
|
||||
##
|
||||
|
File diff suppressed because it is too large
Load Diff
54
QUESTIONS
Normal file
54
QUESTIONS
Normal file
@@ -0,0 +1,54 @@
|
||||
If you have a simple general question about calc, send Email to:
|
||||
|
||||
calc-quest-mail at asthe dot com
|
||||
|
||||
NOTE: Remove spaces and replace 'at' with @, and 'dot' with .
|
||||
|
||||
PLEASE put following the SPECIAL PHRASE somewhere in your Email Subject line:
|
||||
|
||||
calc question
|
||||
|
||||
You may add additional words to your subject line.
|
||||
|
||||
IMPORTANT: If your Email doesn't contain the above phrase,
|
||||
then we WILL NOT SEE your Email.
|
||||
|
||||
PLEASE BE SURE you have that SPECIAL PHRASE somewhere in the subject line!
|
||||
|
||||
Suggestion:
|
||||
|
||||
From time to time, the Email address and Subject SPECIAL PHRASE
|
||||
may change so verify you have the current info by visiting:
|
||||
|
||||
http://www.isthe.com/chongo/tech/comp/calc/calc-question.html
|
||||
|
||||
Please limit your questions to general questions about calc. We
|
||||
cannot go into great detail in our answers, nor can we do your
|
||||
homework, nor can we do much more than answer short general questions
|
||||
about calc.
|
||||
|
||||
Please be patient as we cannot always respond to Email messages quickly.
|
||||
|
||||
=-=
|
||||
|
||||
## Copyright (C) 2021 Landon Curt Noll
|
||||
##
|
||||
## Calc is open software; you can redistribute it and/or modify it under
|
||||
## the terms of the version 2.1 of the GNU Lesser General Public License
|
||||
## as published by the Free Software Foundation.
|
||||
##
|
||||
## Calc is distributed in the hope that it will be useful, but WITHOUT
|
||||
## ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
||||
## or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General
|
||||
## Public License for more details.
|
||||
##
|
||||
## A copy of version 2.1 of the GNU Lesser General Public License is
|
||||
## distributed with calc under the filename COPYING-LGPL. You should have
|
||||
## received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
## 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
##
|
||||
## Under source code control: 2021/02/10 00:15:05
|
||||
## File existed as early as: 2021
|
||||
##
|
||||
## chongo <was here> /\oo/\ http://www.isthe.com/chongo/
|
||||
## Share and enjoy! :-) http://www.isthe.com/chongo/tech/comp/calc/
|
@@ -32,30 +32,30 @@ something that you type in.
|
||||
|
||||
For list of help topics:
|
||||
|
||||
> help
|
||||
; help
|
||||
|
||||
For overview of calc overview:
|
||||
|
||||
> help intro
|
||||
> help overview
|
||||
> help command
|
||||
> help define
|
||||
> help statement
|
||||
> help variable
|
||||
> help usage
|
||||
; help intro
|
||||
; help overview
|
||||
; help command
|
||||
; help define
|
||||
; help statement
|
||||
; help variable
|
||||
; help usage
|
||||
|
||||
For list of builtin functions:
|
||||
|
||||
> help builtin
|
||||
; help builtin
|
||||
|
||||
C programmers should note some unexpected differences in the calc syntax:
|
||||
|
||||
> help unexpected
|
||||
; help unexpected
|
||||
|
||||
Calc is shipped with a standard collection of calc resource files.
|
||||
For a list of calc standard resource files see:
|
||||
|
||||
> help resource
|
||||
; help resource
|
||||
|
||||
=-=
|
||||
|
||||
@@ -71,66 +71,33 @@ or run:
|
||||
|
||||
for a wish/todo list. Code contributions are welcome.
|
||||
|
||||
=-=
|
||||
-=-
|
||||
|
||||
To subscribe to the calc-tester mailing list, visit the following URL:
|
||||
If you you notice something wrong, strange or broken, see the file:
|
||||
|
||||
http://www.isthe.com/chongo/tech/comp/calc/calc-tester.html
|
||||
BUGS
|
||||
|
||||
This is a low volume moderated mailing list.
|
||||
or run:
|
||||
|
||||
This mailing list replaces calc-tester at asthe dot com list.
|
||||
calc help bugs
|
||||
|
||||
If you need a human to help you with your mailing list subscription,
|
||||
please send EMail to our special:
|
||||
|
||||
calc-tester-maillist-help at asthe dot com
|
||||
|
||||
NOTE: Remove spaces and replace 'at' with @, 'dot' with .
|
||||
|
||||
address. To be sure we see your EMail asking for help with your
|
||||
mailing list subscription, please use the following phase in your
|
||||
EMail Subject line:
|
||||
|
||||
calc tester mailing list help
|
||||
|
||||
That phrase in your subject line will help ensure your
|
||||
request will get past our anti-spam filters. You may have
|
||||
additional words in your subject line.
|
||||
for information about how to report a bug.
|
||||
|
||||
-=-
|
||||
|
||||
Calc bug reports and calc bug fixes should be sent to:
|
||||
If you have a general question about calc, see the file:
|
||||
|
||||
calc-bug-report at asthe dot com
|
||||
QUESTIONS
|
||||
|
||||
NOTE: Remove spaces and replace 'at' with @, 'dot' with .
|
||||
or run:
|
||||
|
||||
This replaces the old calc-bugs at asthe dot com address.
|
||||
calc help questions
|
||||
|
||||
To be sure we see your EMail reporting a calc bug, please use the
|
||||
following phase in your EMail Subject line:
|
||||
|
||||
calc bug report
|
||||
|
||||
That phrase in your subject line will help ensure your
|
||||
request will get past our anti-spam filters. You may have
|
||||
additional words in your subject line.
|
||||
|
||||
However, you may find it more helpful to simply subscribe
|
||||
to the calc-tester mailing list (see above) and then to
|
||||
send your report to that mailing list as a wider set calc
|
||||
testers may be able to help you.
|
||||
for information about how to ask a question.
|
||||
|
||||
-=-
|
||||
|
||||
The calc web site is located at:
|
||||
|
||||
http://www.isthe.com/chongo/tech/comp/calc/
|
||||
|
||||
NOTE: The EMail address uses 'asthe', while the web site uses 'isthe'.
|
||||
|
||||
## Copyright (C) 1999,2014 Landon Curt Noll
|
||||
## Copyright (C) 1999,2014,2017,2021 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
|
||||
@@ -146,10 +113,6 @@ NOTE: The EMail address uses 'asthe', while the web site uses 'isthe'.
|
||||
## received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
## 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
##
|
||||
## @(#) $Revision: 30.3 $
|
||||
## @(#) $Id: README,v 30.3 2014/10/12 12:23:43 chongo Exp $
|
||||
## @(#) $Source: /usr/local/src/bin/calc/RCS/README,v $
|
||||
##
|
||||
## Under source code control: 1995/10/25 05:27:59
|
||||
## File existed as early as: 1995
|
||||
##
|
@@ -10,6 +10,21 @@ NOTE: The main developers do not have access to a Windoz based platform.
|
||||
Of course you are welcome to send us any patches that fix your
|
||||
Windoz build environment.
|
||||
|
||||
|
||||
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
|
||||
=-= compiling with Windows Subsystem for Linux (WSL) =-Cygwin =-=
|
||||
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
|
||||
|
||||
It has been reported that calc version 2.12.6.4 has been successfully
|
||||
compiled, installed and running on Windows 10 on 2018 Jan 21.
|
||||
|
||||
We were told:
|
||||
|
||||
"The Windows Subsystem for Linux (WSL) is a new Windows 10 feature that
|
||||
enables you to run native Linux command-line tools directly on Windows"
|
||||
|
||||
https://docs.microsoft.com/cs-cz/windows/wsl/about
|
||||
|
||||
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
|
||||
=-= compiling with Cygwin =-=
|
||||
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
|
||||
@@ -142,10 +157,6 @@ the above Makefile list, follow the recommendation in the Makefile.
|
||||
## received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
## 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
##
|
||||
## @(#) $Revision: 30.2 $
|
||||
## @(#) $Id: README.WINDOWS,v 30.2 2009/03/14 02:29:31 chongo Exp $
|
||||
## @(#) $Source: /usr/local/src/bin/calc/RCS/README.WINDOWS,v $
|
||||
##
|
||||
## Under source code control: 2001/02/25 14:00:05
|
||||
## File existed as early as: 2001
|
||||
##
|
||||
|
263
README.md
Normal file
263
README.md
Normal file
@@ -0,0 +1,263 @@
|
||||
# What is calc?
|
||||
|
||||
Calc is an interactive calculator which provides for easy large
|
||||
numeric calculations, but which also can be easily programmed
|
||||
for difficult or long calculations. It can accept a command line
|
||||
argument, in which case it executes that single command and exits.
|
||||
Otherwise, it enters interactive mode. In this mode, it accepts
|
||||
commands one at a time, processes them, and displays the answers.
|
||||
In the simplest case, commands are simply expressions which are
|
||||
evaluated. For example, the following line can be input:
|
||||
|
||||
```sh
|
||||
3 * (4 + 1)
|
||||
```
|
||||
|
||||
and the calculator will print:
|
||||
|
||||
```sh
|
||||
15
|
||||
```
|
||||
|
||||
Calc has the usual collection of arithmetic operators +, -, /, * as
|
||||
well as ^ (exponentiation), % (modulus) and // (integer divide).
|
||||
For example:
|
||||
|
||||
```sh
|
||||
3 * 19^43 - 1
|
||||
```
|
||||
|
||||
will produce:
|
||||
|
||||
```sh
|
||||
29075426613099201338473141505176993450849249622191102976
|
||||
```
|
||||
|
||||
Notice that calc values can be very large. For example:
|
||||
|
||||
```sh
|
||||
2^23209-1
|
||||
```
|
||||
|
||||
will print:
|
||||
|
||||
```sh
|
||||
402874115778988778181873329071 ... many digits ... 3779264511
|
||||
```
|
||||
|
||||
The special '.' symbol (called dot), represents the result of the
|
||||
last command expression, if any. This is of great use when a series
|
||||
of partial results are calculated, or when the output mode is changed
|
||||
and the last result needs to be redisplayed. For example, the above
|
||||
result can be modified by typing:
|
||||
|
||||
```sh
|
||||
. % (2^127-1)
|
||||
```
|
||||
|
||||
and the calculator will print:
|
||||
|
||||
```sh
|
||||
47385033654019111249345128555354223304
|
||||
```
|
||||
|
||||
For more complex calculations, variables can be used to save the
|
||||
intermediate results. For example, the result of adding 7 to the
|
||||
previous result can be saved by typing:
|
||||
|
||||
```sh
|
||||
curds = 15
|
||||
whey = 7 + 2*curds
|
||||
```
|
||||
|
||||
Functions can be used in expressions. There are a great number of
|
||||
pre-defined functions. For example, the following will calculate
|
||||
the factorial of the value of 'whey':
|
||||
|
||||
```sh
|
||||
fact(whey)
|
||||
```
|
||||
|
||||
and the calculator prints:
|
||||
|
||||
```sh
|
||||
13763753091226345046315979581580902400000000
|
||||
```
|
||||
|
||||
The calculator also knows about complex numbers, so that typing:
|
||||
|
||||
```sh
|
||||
(2+3i) * (4-3i)
|
||||
cos(.)
|
||||
```
|
||||
|
||||
will print:
|
||||
|
||||
```sh
|
||||
17+6i
|
||||
-55.50474777265624667147+193.9265235748927986537i
|
||||
```
|
||||
|
||||
The calculator can calculate transcendental functions, and accept and
|
||||
display numbers in real or exponential format. For example, typing:
|
||||
|
||||
```sh
|
||||
config("display", 70),
|
||||
epsilon(1e-70),
|
||||
sin(1)
|
||||
```
|
||||
|
||||
prints:
|
||||
|
||||
```sh
|
||||
0.8414709848078965066525023216302989996225630607983710656727517099919104
|
||||
```
|
||||
|
||||
Calc can output values in terms of fractions, octal or hexadecimal.
|
||||
For example:
|
||||
|
||||
```sh
|
||||
config("mode", "fraction"),
|
||||
(17/19)^23
|
||||
print
|
||||
base(16),
|
||||
(19/17)^29
|
||||
print
|
||||
log(79.3i)
|
||||
```
|
||||
|
||||
will print:
|
||||
|
||||
```sh
|
||||
19967568900859523802559065713/257829627945307727248226067259
|
||||
|
||||
0x9201e65bdbb801eaf403f657efcf863/0x5cd2e2a01291ffd73bee6aa7dcf7d1
|
||||
|
||||
0x17b5164ac24ee836bf/0xc7b7a8e3ef5fcf752+0x883eaf5adadd26be3/0xc7b7a8e3ef5fcf752i
|
||||
```
|
||||
|
||||
All numbers are represented as fractions with arbitrarily large
|
||||
numerators and denominators which are always reduced to lowest terms.
|
||||
Real or exponential format numbers can be input and are converted
|
||||
to the equivalent fraction. Hex, binary, or octal numbers can be
|
||||
input by using numbers with leading '0x', '0b' or '0' characters.
|
||||
Complex numbers can be input using a trailing 'i', as in '2+3i'.
|
||||
Strings and characters are input by using single or double quotes.
|
||||
|
||||
Commands are statements in a C-like language, where each input
|
||||
line is treated as the body of a procedure. Thus the command
|
||||
line can contain variable declarations, expressions, labels,
|
||||
conditional tests, and loops. Assignments to any variable name
|
||||
will automatically define that name as a global variable. The
|
||||
other important thing to know is that all non-assignment expressions
|
||||
which are evaluated are automatically printed. Thus, you can evaluate
|
||||
an expression's value by simply typing it in.
|
||||
|
||||
Many useful built-in mathematical functions are available. Use the:
|
||||
|
||||
```sh
|
||||
help builtin
|
||||
```
|
||||
|
||||
command to list them.
|
||||
|
||||
You can also define your own functions by using the 'define' keyword,
|
||||
followed by a function declaration very similar to C.
|
||||
|
||||
```sh
|
||||
define f2(n)
|
||||
{
|
||||
local ans;
|
||||
|
||||
ans = 1;
|
||||
while (n > 1)
|
||||
ans *= (n -= 2);
|
||||
return ans;
|
||||
}
|
||||
```
|
||||
|
||||
Thus the input:
|
||||
|
||||
```sh
|
||||
f2(79)
|
||||
```
|
||||
|
||||
will produce:
|
||||
|
||||
```sh
|
||||
1009847364737869270905302433221592504062302663202724609375
|
||||
```
|
||||
|
||||
Functions which only need to return a simple expression can be defined
|
||||
using an equals sign, as in the example:
|
||||
|
||||
```sh
|
||||
define sc(a,b) = a^3 + b^3
|
||||
```
|
||||
|
||||
Thus the input:
|
||||
|
||||
```sh
|
||||
sc(31, 61)
|
||||
```
|
||||
|
||||
will produce:
|
||||
|
||||
```sh
|
||||
256772
|
||||
```
|
||||
|
||||
Variables in functions can be defined as either 'global', 'local',
|
||||
or 'static'. Global variables are common to all functions and the
|
||||
command line, whereas local variables are unique to each function
|
||||
level, and are destroyed when the function returns. Static variables
|
||||
are scoped within single input files, or within functions, and are
|
||||
never destroyed. Variables are not typed at definition time, but
|
||||
dynamically change as they are used.
|
||||
|
||||
For more information about the calc language and features, try:
|
||||
|
||||
```sh
|
||||
help overview
|
||||
```
|
||||
|
||||
Calc has a help command that will produce information about
|
||||
every builtin function, command as well as a number of other
|
||||
aspects of calc usage. Try the command:
|
||||
|
||||
```sh
|
||||
help help
|
||||
```
|
||||
|
||||
for and overview of the help system. The command:
|
||||
|
||||
```sh
|
||||
help builtin
|
||||
```
|
||||
|
||||
provides information on built-in mathematical functions, whereas:
|
||||
|
||||
```sh
|
||||
help asinh
|
||||
```
|
||||
|
||||
will provides information a specific function. The following
|
||||
help files:
|
||||
|
||||
```sh
|
||||
help command
|
||||
help define
|
||||
help operator
|
||||
help statement
|
||||
help variable
|
||||
```
|
||||
|
||||
provide a good overview of the calc language. If you are familiar
|
||||
with C, you should also try:
|
||||
|
||||
```sh
|
||||
help unexpected
|
||||
```
|
||||
|
||||
It contains information about differences between C and calc
|
||||
that may surprise C programmers.
|
10
addop.c
10
addop.c
@@ -1,7 +1,7 @@
|
||||
/*
|
||||
* addop - add opcodes to a function being compiled
|
||||
*
|
||||
* Copyright (C) 1999-2007 David I. Bell and Ernest Bowen
|
||||
* Copyright (C) 1999-2007,2021 David I. Bell and Ernest Bowen
|
||||
*
|
||||
* Primary author: David I. Bell
|
||||
*
|
||||
@@ -19,10 +19,6 @@
|
||||
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* @(#) $Revision: 30.1 $
|
||||
* @(#) $Id: addop.c,v 30.1 2007/03/16 11:09:46 chongo Exp $
|
||||
* @(#) $Source: /usr/local/src/bin/calc/RCS/addop.c,v $
|
||||
*
|
||||
* Under source code control: 1990/02/15 01:48:10
|
||||
* File existed as early as: before 1990
|
||||
*
|
||||
@@ -32,6 +28,7 @@
|
||||
|
||||
#include <stdio.h>
|
||||
#include "calc.h"
|
||||
#include "alloc.h"
|
||||
#include "opcodes.h"
|
||||
#include "str.h"
|
||||
#include "func.h"
|
||||
@@ -40,6 +37,9 @@
|
||||
#include "symbol.h"
|
||||
|
||||
|
||||
#include "banned.h" /* include after system header <> includes */
|
||||
|
||||
|
||||
#define FUNCALLOCSIZE 20 /* reallocate size for functions */
|
||||
#define OPCODEALLOCSIZE 100 /* reallocate size for opcodes in functions */
|
||||
|
||||
|
10
align32.c
10
align32.c
@@ -1,7 +1,7 @@
|
||||
/*
|
||||
* align32 - determine if 32 bit accesses must be aligned
|
||||
*
|
||||
* Copyright (C) 1999 Landon Curt Noll
|
||||
* Copyright (C) 1999,2021 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
|
||||
@@ -17,10 +17,6 @@
|
||||
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* @(#) $Revision: 30.1 $
|
||||
* @(#) $Id: align32.c,v 30.1 2007/03/16 11:09:46 chongo Exp $
|
||||
* @(#) $Source: /usr/local/src/bin/calc/RCS/align32.c,v $
|
||||
*
|
||||
* Under source code control: 1995/11/23 05:18:06
|
||||
* File existed as early as: 1995
|
||||
*
|
||||
@@ -38,6 +34,10 @@
|
||||
#include <unistd.h>
|
||||
#endif
|
||||
|
||||
|
||||
#include "banned.h" /* include after system header <> includes */
|
||||
|
||||
|
||||
static void buserr(void); /* catch alignment errors */
|
||||
|
||||
|
||||
|
4
alloc.h
4
alloc.h
@@ -17,10 +17,6 @@
|
||||
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* @(#) $Revision: 30.5 $
|
||||
* @(#) $Id: alloc.h,v 30.5 2014/08/24 21:56:51 chongo Exp $
|
||||
* @(#) $Source: /usr/local/src/bin/calc/RCS/alloc.h,v $
|
||||
*
|
||||
* Under source code control: 1990/02/15 01:48:29
|
||||
* File existed as early as: before 1990
|
||||
*
|
||||
|
@@ -1,7 +1,7 @@
|
||||
/*
|
||||
* assocfunc - association table routines
|
||||
*
|
||||
* Copyright (C) 1999-2007 David I. Bell
|
||||
* Copyright (C) 1999-2007,2021 David I. Bell
|
||||
*
|
||||
* 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
|
||||
@@ -17,10 +17,6 @@
|
||||
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* @(#) $Revision: 30.3 $
|
||||
* @(#) $Id: assocfunc.c,v 30.3 2014/09/30 00:55:11 chongo Exp $
|
||||
* @(#) $Source: /usr/local/src/bin/calc/RCS/assocfunc.c,v $
|
||||
*
|
||||
* Under source code control: 1993/07/20 23:04:27
|
||||
* File existed as early as: 1993
|
||||
*
|
||||
@@ -40,6 +36,9 @@
|
||||
#include "value.h"
|
||||
|
||||
|
||||
#include "banned.h" /* include after system header <> includes */
|
||||
|
||||
|
||||
#define MINHASHSIZE 31 /* minimum size of hash tables */
|
||||
#define GROWHASHSIZE 50 /* approximate growth for hash tables */
|
||||
#define CHAINLENGTH 10 /* desired number of elements on a hash chain */
|
||||
|
180
banned.h
Normal file
180
banned.h
Normal file
@@ -0,0 +1,180 @@
|
||||
/*
|
||||
* banned - optionally ban dqngerious functions
|
||||
*
|
||||
* Unless UNBAN is defined, this file will turn the use
|
||||
* of certain dangerous functions into syntax errors.
|
||||
*
|
||||
* In the case of calc, we are motivated in part by the desire for
|
||||
* calc to correctly calculate: even durings extremely long calculations.
|
||||
*
|
||||
* If UNBAN is NOT defined, then calling certain functions
|
||||
* will result in a syntaxc error.
|
||||
*
|
||||
* If we define UNBAN, then the effect of this file is disabled.
|
||||
*
|
||||
* The banned.h attempts to ban the use of certain dangerous functions
|
||||
* that, if improperly used, could compromise the computational integrity
|
||||
* if calculations.
|
||||
*
|
||||
* In the case of calc, we are motivated in part by the desire for calc
|
||||
* to correctly calculate: even durings extremely long calculations.
|
||||
*
|
||||
* If UNBAN is NOT defined, then calling certain functions
|
||||
* will result in a call to a non-existent function (link error).
|
||||
*
|
||||
* While we do NOT encourage defining UNBAN, there may be
|
||||
* a system / compiler environment where re-defining a
|
||||
* function may lead to a fatal compiler complication.
|
||||
* If that happens, consider compiling as:
|
||||
*
|
||||
* make clobber all chk CCBAN=-DUNBAN
|
||||
*
|
||||
* as see if this is a work-a-round.
|
||||
*
|
||||
* If YOU discover a need for the -DUNBAN work-a-round, PLEASE tell us!
|
||||
* Please send us a bug report. See the file:
|
||||
*
|
||||
* BUGS
|
||||
*
|
||||
* or the URL:
|
||||
*
|
||||
* http://www.isthe.com/chongo/tech/comp/calc/calc-bugrept.html
|
||||
*
|
||||
* for how to send us such a bug report.
|
||||
*
|
||||
* Copyright (C) 2021 Landon Curt Noll
|
||||
*
|
||||
* Calc is open software; you can redistribute it and/or modify it under
|
||||
* the terms of the version 2.1 of the GNU Lesser General Public License
|
||||
* as published by the Free Software Foundation.
|
||||
*
|
||||
* Calc is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
||||
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General
|
||||
* Public License for more details.
|
||||
*
|
||||
* A copy of version 2.1 of the GNU Lesser General Public License is
|
||||
* distributed with calc under the filename COPYING-LGPL. You should have
|
||||
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* Under source code control: 2021/03/06 21:07:31
|
||||
* File existed as early as: 2021
|
||||
*
|
||||
* chongo <was here> /\oo/\ http://www.isthe.com/chongo/
|
||||
* Share and enjoy! :-) http://www.isthe.com/chongo/tech/comp/calc/
|
||||
*/
|
||||
|
||||
|
||||
#if !defined(PRE_HAVE_BAN_PRAGMA_H)
|
||||
#include "have_ban_pragma.h"
|
||||
#endif /* ! PRE_HAVE_BAN_PRAGMA_H */
|
||||
|
||||
|
||||
#if !defined(INCLUDE_BANNED_H)
|
||||
#define INCLUDE_BANNED_H
|
||||
|
||||
/*
|
||||
* If we define UNBAN, then the effect of this file is disabled.
|
||||
*/
|
||||
#if !defined(UNBAN)
|
||||
|
||||
/*
|
||||
* In the spirit of:
|
||||
*
|
||||
* https://github.com/git/git/blob/master/banned.h
|
||||
*
|
||||
* we will ban the use of certain unsafe functions by turning
|
||||
* then into function calls that do not exist.
|
||||
*
|
||||
* In the case of calc, we are motivated in part by the desire
|
||||
* for calc to correctly calculate: even durings extremely long
|
||||
* calculations.
|
||||
*
|
||||
* If UNBAN is NOT defined, then calling certain functions
|
||||
* will result in a syntaxc error.
|
||||
*
|
||||
* Unlike the above URL, we suggest an alternative function.
|
||||
* In many cases, additional logic is required to use the
|
||||
* alternative function, we cannot simply replace one function
|
||||
* with another.
|
||||
*/
|
||||
|
||||
/*
|
||||
* If one is not careful, strcpy() can lead to buffer overflows.
|
||||
* Use strlcpy() instead.
|
||||
*/
|
||||
#if defined(HAVE_PRAGMA_GCC_POSION)
|
||||
#undef strcpy
|
||||
#pragma GCC poison strcpy
|
||||
#endif /* HAVE_PRAGMA_GCC_POSION */
|
||||
|
||||
/*
|
||||
* If one is not careful, strcat() can lead to buffer overflows.
|
||||
* Use strlcat() instead.
|
||||
*/
|
||||
#if defined(HAVE_PRAGMA_GCC_POSION)
|
||||
#undef strcat
|
||||
#pragma GCC poison strcat
|
||||
#endif /* HAVE_PRAGMA_GCC_POSION */
|
||||
|
||||
/*
|
||||
* If one is not careful, strncpy() can lead to buffer overflows.
|
||||
* Use memccpy() instead.
|
||||
*/
|
||||
#if defined(HAVE_PRAGMA_GCC_POSION)
|
||||
#undef strncpy
|
||||
#pragma GCC poison strncpy
|
||||
#endif /* HAVE_PRAGMA_GCC_POSION */
|
||||
|
||||
/*
|
||||
* If one is not careful, strncat() can lead to buffer overflows.
|
||||
* Use memccpy() instead.
|
||||
*/
|
||||
#if defined(HAVE_PRAGMA_GCC_POSION)
|
||||
#undef strncat
|
||||
#pragma GCC poison strncat
|
||||
#endif /* HAVE_PRAGMA_GCC_POSION */
|
||||
|
||||
/*
|
||||
* If one is not careful, sprintf() can lead to buffer overflows.
|
||||
* Use snprintf() instead.
|
||||
*/
|
||||
#if defined(HAVE_PRAGMA_GCC_POSION)
|
||||
#undef sprintf
|
||||
#pragma GCC poison sprintf
|
||||
#endif /* HAVE_PRAGMA_GCC_POSION */
|
||||
|
||||
/*
|
||||
* If one is not careful, vsprintf() can lead to buffer overflows.
|
||||
* Use vsnprintf() instead.
|
||||
*/
|
||||
#if defined(HAVE_PRAGMA_GCC_POSION)
|
||||
#undef vsprintf
|
||||
#pragma GCC poison vsprintf
|
||||
#endif /* HAVE_PRAGMA_GCC_POSION */
|
||||
|
||||
/*
|
||||
* XXX - As of 2021, functions such as:
|
||||
*
|
||||
* gmtime_s
|
||||
* localtime_s
|
||||
* ctime_s
|
||||
* asctime_s
|
||||
*
|
||||
* are not universal. We cannot yet ban the following
|
||||
* functions because we do not have a portable AND
|
||||
* widely available alternative. Therefore we just
|
||||
* have to be extra careful when using:
|
||||
*
|
||||
* gmtime
|
||||
* localtime
|
||||
* ctime
|
||||
* ctime_r
|
||||
* asctime
|
||||
* asctime_r
|
||||
*/
|
||||
|
||||
#endif /* !UNBAN */
|
||||
|
||||
#endif /* !INCLUDE_BANNED_H */
|
12
blkcpy.c
12
blkcpy.c
@@ -1,7 +1,7 @@
|
||||
/*
|
||||
* blkcpy - general values and related routines used by the calculator
|
||||
*
|
||||
* Copyright (C) 1999-2007 Landon Curt Noll and Ernest Bowen
|
||||
* Copyright (C) 1999-2007,2021 Landon Curt Noll and Ernest Bowen
|
||||
*
|
||||
* Primary author: Landon Curt Noll
|
||||
*
|
||||
@@ -19,10 +19,6 @@
|
||||
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* @(#) $Revision: 30.2 $
|
||||
* @(#) $Id: blkcpy.c,v 30.2 2013/08/11 08:41:38 chongo Exp $
|
||||
* @(#) $Source: /usr/local/src/bin/calc/RCS/blkcpy.c,v $
|
||||
*
|
||||
* Under source code control: 1997/04/18 20:41:26
|
||||
* File existed as early as: 1997
|
||||
*
|
||||
@@ -33,12 +29,16 @@
|
||||
#include <stdio.h>
|
||||
#include <sys/types.h>
|
||||
#include "calc.h"
|
||||
#include "alloc.h"
|
||||
#include "value.h"
|
||||
#include "file.h"
|
||||
#include "blkcpy.h"
|
||||
#include "str.h"
|
||||
|
||||
|
||||
#include "banned.h" /* include after system header <> includes */
|
||||
|
||||
|
||||
/*
|
||||
* copystod - copy num indexed items from source value to destination value
|
||||
*
|
||||
@@ -1044,7 +1044,7 @@ copyblk2num(BLOCK *sblk, long ssi, long num, NUMBER *dnum, long dsi,
|
||||
NUMBER *ret; /* cloned and modified numerator */
|
||||
#if CALC_BYTE_ORDER == BIG_ENDIAN
|
||||
HALF *swapped; /* byte swapped input data */
|
||||
unsigned long halflen; /* length of the input ounded up to HALFs */
|
||||
unsigned long halflen; /* length of the input rounded up to HALFs */
|
||||
HALF *h; /* copy byteswap pointer */
|
||||
unsigned long i;
|
||||
#endif
|
||||
|
4
blkcpy.h
4
blkcpy.h
@@ -19,10 +19,6 @@
|
||||
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* @(#) $Revision: 30.3 $
|
||||
* @(#) $Id: blkcpy.h,v 30.3 2014/08/24 21:56:51 chongo Exp $
|
||||
* @(#) $Source: /usr/local/src/bin/calc/RCS/blkcpy.h,v $
|
||||
*
|
||||
* Under source code control: 1997/04/18 20:41:25
|
||||
* File existed as early as: 1997
|
||||
*
|
||||
|
17
block.c
17
block.c
@@ -1,7 +1,7 @@
|
||||
/*
|
||||
* block - fixed, dynamic, fifo and circular memory blocks
|
||||
*
|
||||
* Copyright (C) 1999-2007 Landon Curt Noll and Ernest Bowen
|
||||
* Copyright (C) 1999-2007,2021 Landon Curt Noll and Ernest Bowen
|
||||
*
|
||||
* Primary author: Landon Curt Noll
|
||||
*
|
||||
@@ -19,10 +19,6 @@
|
||||
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* @(#) $Revision: 30.1 $
|
||||
* @(#) $Id: block.c,v 30.1 2007/03/16 11:09:46 chongo Exp $
|
||||
* @(#) $Source: /usr/local/src/bin/calc/RCS/block.c,v $
|
||||
*
|
||||
* Under source code control: 1997/02/27 00:29:40
|
||||
* File existed as early as: 1997
|
||||
*
|
||||
@@ -32,6 +28,11 @@
|
||||
|
||||
|
||||
#include <stdio.h>
|
||||
#include "have_string.h"
|
||||
#ifdef HAVE_STRING_H
|
||||
# include <string.h>
|
||||
#endif
|
||||
#include "alloc.h"
|
||||
#include "value.h"
|
||||
#include "zmath.h"
|
||||
#include "config.h"
|
||||
@@ -40,6 +41,10 @@
|
||||
#include "str.h"
|
||||
#include "calcerr.h"
|
||||
|
||||
|
||||
#include "banned.h" /* include after system header <> includes */
|
||||
|
||||
|
||||
#define NBLOCKCHUNK 16
|
||||
|
||||
STATIC long nblockcount = 0;
|
||||
@@ -295,7 +300,7 @@ blkrealloc(BLOCK *blk, int newlen, int newchunk)
|
||||
* Set the data length
|
||||
*
|
||||
* We also know that the new block is not empty since we have
|
||||
* already dealth with that case above.
|
||||
* already dealt with that case above.
|
||||
*
|
||||
* After this section of code, limit and datalen will be
|
||||
* correct in terms of the new type.
|
||||
|
14
block.h
14
block.h
@@ -1,7 +1,7 @@
|
||||
/*
|
||||
* block - fixed, dynamic, fifo and circular memory blocks
|
||||
*
|
||||
* Copyright (C) 1999-2007,2014 Landon Curt Noll and Ernest Bowen
|
||||
* Copyright (C) 1999-2007,2014,2021 Landon Curt Noll and Ernest Bowen
|
||||
*
|
||||
* Primary author: Landon Curt Noll
|
||||
*
|
||||
@@ -19,10 +19,6 @@
|
||||
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* @(#) $Revision: 30.3 $
|
||||
* @(#) $Id: block.h,v 30.3 2014/08/24 21:56:51 chongo Exp $
|
||||
* @(#) $Source: /usr/local/src/bin/calc/RCS/block.h,v $
|
||||
*
|
||||
* Under source code control: 1997/02/21 05:03:39
|
||||
* File existed as early as: 1997
|
||||
*
|
||||
@@ -59,7 +55,7 @@
|
||||
* blkchunk defaults to BLK_CHUNKSIZE
|
||||
*
|
||||
* blkfree(x)
|
||||
* Reduce storage down to 0 octetes.
|
||||
* Reduce storage down to 0 octets.
|
||||
*
|
||||
* size(x)
|
||||
* The length of data stored in the block.
|
||||
@@ -92,7 +88,7 @@
|
||||
* blkmove(dest, src, length [, dest_offset [, src_offset]])
|
||||
* 0 <= length <= blksize(x)
|
||||
* offset's are restricted in value by block type
|
||||
* overlapping moves are handeled correctly
|
||||
* overlapping moves are handled correctly
|
||||
*
|
||||
* blkccpy(dest, src, stopval, length [, dest_offset [, src_offset]])
|
||||
* 0 <= length <= blksize(x)
|
||||
@@ -108,7 +104,7 @@
|
||||
* b = a*k for some integer k >= 1
|
||||
*
|
||||
* scatter(src, dest1, dest2 [, dest3 ] ...)
|
||||
* copy sucessive octets from src into dest1, dest2, ...
|
||||
* copy successive octets from src into dest1, dest2, ...
|
||||
* restarting with dest1 after end of list
|
||||
* stops at end of src
|
||||
*
|
||||
@@ -188,7 +184,7 @@ EXTERN int blk_debug; /* 0 => debug off */
|
||||
/* length of data stored in a block */
|
||||
#define blklen(blk) ((blk)->datalen)
|
||||
|
||||
/* block footpint in memory */
|
||||
/* block footprint in memory */
|
||||
#define blksizeof(blk) ((blk)->maxsize)
|
||||
|
||||
/* block allocation chunk size */
|
||||
|
27
byteswap.c
27
byteswap.c
@@ -1,7 +1,7 @@
|
||||
/*
|
||||
* byteswap - byte swapping routines
|
||||
*
|
||||
* Copyright (C) 1999 Landon Curt Noll
|
||||
* Copyright (C) 1999,2021 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
|
||||
@@ -17,10 +17,6 @@
|
||||
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* @(#) $Revision: 30.2 $
|
||||
* @(#) $Id: byteswap.c,v 30.2 2013/08/11 08:41:38 chongo Exp $
|
||||
* @(#) $Source: /usr/local/src/bin/calc/RCS/byteswap.c,v $
|
||||
*
|
||||
* Under source code control: 1995/10/11 04:44:01
|
||||
* File existed as early as: 1995
|
||||
*
|
||||
@@ -33,6 +29,9 @@
|
||||
#include "byteswap.h"
|
||||
|
||||
|
||||
#include "banned.h" /* include after system header <> includes */
|
||||
|
||||
|
||||
/*
|
||||
* swap_b8_in_HALFs - swap 8 and if needed, 16 bits in an array of HALFs
|
||||
*
|
||||
@@ -81,7 +80,7 @@ swap_b8_in_HALFs(HALF *dest, HALF *src, LEN len)
|
||||
* NULL to allocate the storage
|
||||
* src - pointer to a ZVALUE to swap
|
||||
* all - TRUE => swap every element, FALSE => swap only the
|
||||
* multiprecision storage
|
||||
* multi-precision storage
|
||||
*
|
||||
* returns:
|
||||
* pointer to where the swapped src has been put
|
||||
@@ -149,7 +148,7 @@ swap_b8_in_ZVALUE(ZVALUE *dest, ZVALUE *src, BOOL all)
|
||||
* NULL to allocate the storage
|
||||
* src - pointer to a NUMBER to swap
|
||||
* all - TRUE => swap every element, FALSE => swap only the
|
||||
* multiprecision storage
|
||||
* multi-precision storage
|
||||
*
|
||||
* returns:
|
||||
* pointer to where the swapped src has been put
|
||||
@@ -213,7 +212,7 @@ swap_b8_in_NUMBER(NUMBER *dest, NUMBER *src, BOOL all)
|
||||
* NULL to allocate the storage
|
||||
* src - pointer to a COMPLEX to swap
|
||||
* all - TRUE => swap every element, FALSE => swap only the
|
||||
* multiprecision storage
|
||||
* multi-precision storage
|
||||
*
|
||||
* returns:
|
||||
* pointer to where the swapped src has been put
|
||||
@@ -317,7 +316,7 @@ swap_b16_in_HALFs(HALF *dest, HALF *src, LEN len)
|
||||
* NULL to allocate the storage
|
||||
* src - pointer to a ZVALUE to swap
|
||||
* all - TRUE => swap every element, FALSE => swap only the
|
||||
* multiprecision storage
|
||||
* multi-precision storage
|
||||
*
|
||||
* returns:
|
||||
* pointer to where the swapped src has been put
|
||||
@@ -384,7 +383,7 @@ swap_b16_in_ZVALUE(ZVALUE *dest, ZVALUE *src, BOOL all)
|
||||
* NULL to allocate the storage
|
||||
* src - pointer to a NUMBER to swap
|
||||
* all - TRUE => swap every element, FALSE => swap only the
|
||||
* multiprecision storage
|
||||
* multi-precision storage
|
||||
*
|
||||
* returns:
|
||||
* pointer to where the swapped src has been put
|
||||
@@ -448,7 +447,7 @@ swap_b16_in_NUMBER(NUMBER *dest, NUMBER *src, BOOL all)
|
||||
* NULL to allocate the storage
|
||||
* src - pointer to a COMPLEX to swap
|
||||
* all - TRUE => swap every element, FALSE => swap only the
|
||||
* multiprecision storage
|
||||
* multi-precision storage
|
||||
*
|
||||
* returns:
|
||||
* pointer to where the swapped src has been put
|
||||
@@ -512,7 +511,7 @@ swap_b16_in_COMPLEX(COMPLEX *dest, COMPLEX *src, BOOL all)
|
||||
* NULL to allocate the storage
|
||||
* src - pointer to a ZVALUE to swap
|
||||
* all - TRUE => swap every element, FALSE => swap only the
|
||||
* multiprecision storage
|
||||
* multi-precision storage
|
||||
*
|
||||
* returns:
|
||||
* pointer to where the swapped src has been put
|
||||
@@ -580,7 +579,7 @@ swap_HALF_in_ZVALUE(ZVALUE *dest, ZVALUE *src, BOOL all)
|
||||
* NULL to allocate the storage
|
||||
* src - pointer to a NUMBER to swap
|
||||
* all - TRUE => swap every element, FALSE => swap only the
|
||||
* multiprecision storage
|
||||
* multi-precision storage
|
||||
*
|
||||
* returns:
|
||||
* pointer to where the swapped src has been put
|
||||
@@ -644,7 +643,7 @@ swap_HALF_in_NUMBER(NUMBER *dest, NUMBER *src, BOOL all)
|
||||
* NULL to allocate the storage
|
||||
* src - pointer to a COMPLEX to swap
|
||||
* all - TRUE => swap every element, FALSE => swap only the
|
||||
* multiprecision storage
|
||||
* multi-precision storage
|
||||
*
|
||||
* returns:
|
||||
* pointer to where the swapped src has been put
|
||||
|
@@ -17,10 +17,6 @@
|
||||
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* @(#) $Revision: 30.3 $
|
||||
* @(#) $Id: byteswap.h,v 30.3 2014/08/24 21:56:51 chongo Exp $
|
||||
* @(#) $Source: /usr/local/src/bin/calc/RCS/byteswap.h,v $
|
||||
*
|
||||
* Under source code control: 1995/10/11 04:44:01
|
||||
* File existed as early as: 1995
|
||||
*
|
||||
|
98
cal/Makefile
98
cal/Makefile
@@ -2,7 +2,7 @@
|
||||
#
|
||||
# cal - makefile for calc standard resource files
|
||||
#
|
||||
# Copyright (C) 1999-2006,2017 Landon Curt Noll
|
||||
# Copyright (C) 1999-2006,2017,2021 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
|
||||
@@ -18,10 +18,6 @@
|
||||
# received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
#
|
||||
# @(#) $Revision: 30.12 $
|
||||
# @(#) $Id: Makefile,v 30.12 2017/05/19 16:09:14 chongo Exp $
|
||||
# @(#) $Source: /usr/local/src/bin/calc-RHEL7/cal/RCS/Makefile,v $
|
||||
#
|
||||
# Under source code control: 1991/07/21 05:00:54
|
||||
# File existed as early as: 1991
|
||||
#
|
||||
@@ -31,9 +27,28 @@
|
||||
# calculator by David I. Bell with help/mods from others
|
||||
# Makefile by Landon Curt Noll
|
||||
|
||||
# required vars
|
||||
|
||||
# The shell used by this Makefile
|
||||
#
|
||||
# On some systems, /bin/sh is a rather reduced shell with
|
||||
# deprecated behavor.
|
||||
#
|
||||
# If your system has a up to date, bash shell, then
|
||||
# you may wish to use:
|
||||
#
|
||||
# SHELL= /bin/bash
|
||||
#
|
||||
# On some systems such as macOS, the bash shell is very
|
||||
# far behind to the point wehre is cannot be depended on.
|
||||
# On such systems, the zsh may be a much better alternative
|
||||
# shell for this Makefile to use:
|
||||
#
|
||||
# SHELL= /bin/zsh
|
||||
#
|
||||
SHELL= /bin/sh
|
||||
#SHELL= /bin/bash
|
||||
#SHELL= /bin/zsh
|
||||
|
||||
|
||||
####
|
||||
# Normally, the upper level makefile will set these values. We provide
|
||||
@@ -171,45 +186,44 @@ Q=@
|
||||
#
|
||||
CHMOD= chmod
|
||||
CMP= cmp
|
||||
RM= rm
|
||||
MKDIR= mkdir
|
||||
RMDIR= rmdir
|
||||
CP= cp
|
||||
MV= mv
|
||||
CO= co
|
||||
TRUE= true
|
||||
TOUCH= touch
|
||||
CP= cp
|
||||
FMT= fmt
|
||||
MKDIR= mkdir
|
||||
MV= mv
|
||||
RM= rm
|
||||
RMDIR= rmdir
|
||||
SED= sed
|
||||
SORT= sort
|
||||
FMT= fmt
|
||||
TOUCH= touch
|
||||
TRUE= true
|
||||
|
||||
# The calc files to install
|
||||
#
|
||||
# This list is prodiced by the detaillist rule when no WARNINGS are detected.
|
||||
# This list is produced by the detaillist rule when no WARNINGS are detected.
|
||||
#
|
||||
# Please use:
|
||||
#
|
||||
# make calc_files_list
|
||||
#
|
||||
# to keep this list in nice sorted order and to check that these
|
||||
# deailed help files are under RCS control.
|
||||
# to keep this list in nice sorted order.
|
||||
#
|
||||
CALC_FILES= README alg_config.cal beer.cal bernoulli.cal \
|
||||
bernpoly.cal bigprime.cal bindings brentsolve.cal chi.cal chrem.cal \
|
||||
constants.cal deg.cal dms.cal dotest.cal ellip.cal factorial.cal \
|
||||
factorial2.cal gvec.cal hello.cal hms.cal infinities.cal \
|
||||
intfile.cal intnum.cal lambertw.cal linear.cal lnseries.cal \
|
||||
lucas.cal lucas_chk.cal mersenne.cal mfactor.cal \
|
||||
mod.cal natnumset.cal pell.cal pi.cal pix.cal pollard.cal poly.cal \
|
||||
prompt.cal psqrt.cal qtime.cal quat.cal randbitrun.cal randmprime.cal \
|
||||
randombitrun.cal randomrun.cal randrun.cal regress.cal repeat.cal \
|
||||
screen.cal seedrandom.cal set8700.cal set8700.line smallfactors.cal \
|
||||
solve.cal specialfunctions.cal statistics.cal strings.cal sumsq.cal \
|
||||
sumtimes.cal surd.cal test1700.cal test2300.cal test2600.cal \
|
||||
test2700.cal test3100.cal test3300.cal test3400.cal test3500.cal \
|
||||
test4000.cal test4100.cal test4600.cal test5100.cal test5200.cal \
|
||||
test8400.cal test8500.cal test8600.cal test8900.cal toomcook.cal \
|
||||
unitfrac.cal varargs.cal xx_print.cal zeta2.cal
|
||||
factorial2.cal gvec.cal hello.cal hms.cal infinities.cal intfile.cal \
|
||||
intnum.cal lambertw.cal linear.cal lnseries.cal lucas.cal \
|
||||
lucas_chk.cal mersenne.cal mfactor.cal mod.cal natnumset.cal pell.cal \
|
||||
pi.cal pix.cal pollard.cal poly.cal prompt.cal psqrt.cal qtime.cal \
|
||||
quat.cal randbitrun.cal randmprime.cal randombitrun.cal randomrun.cal \
|
||||
randrun.cal regress.cal repeat.cal screen.cal seedrandom.cal \
|
||||
set8700.cal set8700.line smallfactors.cal solve.cal \
|
||||
specialfunctions.cal statistics.cal strings.cal sumsq.cal sumtimes.cal \
|
||||
surd.cal test1700.cal test2300.cal test2600.cal test2700.cal \
|
||||
test3100.cal test3300.cal test3400.cal test3500.cal test4000.cal \
|
||||
test4100.cal test4600.cal test5100.cal test5200.cal test8400.cal \
|
||||
test8500.cal test8600.cal test8900.cal toomcook.cal unitfrac.cal \
|
||||
varargs.cal xx_print.cal zeta2.cal
|
||||
|
||||
# These calc files are now obsolete and are removed by the install rule.
|
||||
#
|
||||
@@ -240,7 +254,7 @@ all: ${CALC_FILES} ${MAKE_FILE} .all
|
||||
# sub-directory called calc/cal.
|
||||
#
|
||||
# NOTE: Due to bogus shells found on one common system we must have
|
||||
# an non-emoty else clause for every if condition. *sigh*
|
||||
# an non-empty else clause for every if condition. *sigh*
|
||||
#
|
||||
##
|
||||
|
||||
@@ -265,19 +279,13 @@ calcliblist:
|
||||
#
|
||||
calc_files_list:
|
||||
${Q} -(find . -mindepth 1 -maxdepth 1 -type f -name '*.cal' -print | \
|
||||
while read i; do \
|
||||
if [ X"$$i" != X"/dev/null" ]; then \
|
||||
if [ ! -f RCS/$$i,v ]; then \
|
||||
echo "WARNING: $$i not under RCS control" 1>&2; \
|
||||
else \
|
||||
echo $$i; \
|
||||
fi; \
|
||||
fi; \
|
||||
done; \
|
||||
echo '--first_line--'; \
|
||||
echo README; \
|
||||
echo set8700.line; \
|
||||
echo bindings) | \
|
||||
while read i; do \
|
||||
echo $$i; \
|
||||
done; \
|
||||
echo '--first_line--'; \
|
||||
echo README; \
|
||||
echo set8700.line; \
|
||||
echo bindings) | \
|
||||
${SED} -e 's:^\./::' | LANG=C ${SORT} | ${FMT} -70 | \
|
||||
${SED} -e '1s/--first_line--/CALC_FILES=/' -e '2,$$s/^/ /' \
|
||||
-e 's/$$/ \\/' -e '$$s/ \\$$//'
|
||||
@@ -395,7 +403,7 @@ uninstall:
|
||||
if [ -f "${T}${CALC_SHAREDIR}/$$i" ]; then \
|
||||
echo "cannot uninstall ${T}${CALC_SHAREDIR}/$$i"; \
|
||||
else \
|
||||
echo "uninstalled ${T}${CALC_SHAREDIR}/$$i"; \
|
||||
echo "un-installed ${T}${CALC_SHAREDIR}/$$i"; \
|
||||
fi; \
|
||||
fi; \
|
||||
done
|
||||
|
77
cal/README
77
cal/README
@@ -38,43 +38,6 @@ Calc resource file files are provided because they serve as examples of
|
||||
how use the calc language, and/or because the authors thought them to
|
||||
be useful!
|
||||
|
||||
If you write something that you think is useful, please join the
|
||||
low volume calc mailing list calc-tester. Then send your contribution
|
||||
to the calc-tester mailing list.
|
||||
|
||||
To subscribe to the calc-tester mailing list, visit the following URL:
|
||||
|
||||
https://www.listbox.com/subscribe/?list_id=239342
|
||||
|
||||
To help determine you are a human and not just a spam bot,
|
||||
you will be required to provide the following additional info:
|
||||
|
||||
Your Name
|
||||
Calc Version
|
||||
Operating System
|
||||
The date 7 days ago
|
||||
|
||||
This is a low volume moderated mailing list.
|
||||
|
||||
This mailing list replaces calc-tester at asthe dot com list.
|
||||
|
||||
If you need a human to help you with your mailing list subscription,
|
||||
please send EMail to our special:
|
||||
|
||||
calc-tester-maillist-help at asthe dot com
|
||||
|
||||
NOTE: Remove spaces and replace 'at' with @, 'dot' with .
|
||||
|
||||
address. To be sure we see your EMail asking for help with your
|
||||
mailing list subscription, please use the following phase in your
|
||||
EMail Subject line:
|
||||
|
||||
calc tester mailing list help
|
||||
|
||||
That phrase in your subject line will help ensure your
|
||||
request will get past our anti-spam filters. You may have
|
||||
additional words in your subject line.
|
||||
|
||||
=-=
|
||||
|
||||
By convention, a resource file only defines and/or initializes functions,
|
||||
@@ -250,12 +213,12 @@ brentsolve.cal
|
||||
|
||||
brentsolve(low, high,eps)
|
||||
|
||||
A root-finder implementwed with the Brent-Dekker trick.
|
||||
A root-finder implemented with the Brent-Dekker trick.
|
||||
|
||||
brentsolve2(low, high,which,eps)
|
||||
|
||||
The second function, brentsolve2(low, high,which,eps) has some lines
|
||||
added to make it easier to hardcode the name of the helper function
|
||||
added to make it easier to hard-code the name of the helper function
|
||||
different from the obligatory "f".
|
||||
|
||||
See:
|
||||
@@ -429,7 +392,7 @@ factorial2.cal
|
||||
|
||||
bigcatalan(n)
|
||||
|
||||
Calculates the n-th Catalan number for n large. It is usefull
|
||||
Calculates the n-th Catalan number for n large. It is useful
|
||||
above n~50,000 but defaults to the builtin function for smaller
|
||||
values.Meant as a complete replacement for catalan(n) with only a
|
||||
very small overhead. See:
|
||||
@@ -470,9 +433,9 @@ factorial2.cal
|
||||
k = 0
|
||||
|
||||
The other function stirling2caching(n,m) does it by way of the
|
||||
reccurence relation and keeps all earlier results. This function
|
||||
re-occurrence relation and keeps all earlier results. This function
|
||||
is much slower for computing a single value than stirling2(n,m) but
|
||||
is very usefull if many Stirling numbers are needed, for example in
|
||||
is very useful if many Stirling numbers are needed, for example in
|
||||
a series. See:
|
||||
|
||||
http://en.wikipedia.org/wiki/Stirling_numbers_of_the_second_kind
|
||||
@@ -583,7 +546,7 @@ infinities.cal
|
||||
pinf()
|
||||
|
||||
The symbolic handling of infinities. Needed for intnum.cal but might be
|
||||
usefull elsewhere, too.
|
||||
useful elsewhere, too.
|
||||
|
||||
|
||||
intfile.cal
|
||||
@@ -632,13 +595,13 @@ intnum.cal
|
||||
This file offers some methods for numerical integration. Implemented are
|
||||
the Gauss-Legendre and the tanh-sinh quadrature.
|
||||
|
||||
All functions are usefull to some extend but the main function for
|
||||
All functions are useful to some extend but the main function for
|
||||
quadrature is quad(), which is not much more than an abstraction layer.
|
||||
|
||||
The main workers are quadgl() for Gauss-legendre and quadts() for the
|
||||
The main workers are quadgl() for Gauss-Legendre and quadts() for the
|
||||
tanh-sinh quadrature. The limits of the integral can be anything in the
|
||||
complex plane and the extended real line. The latter means that infinite
|
||||
limits are supported by way of the smbolic infinities implemented in the
|
||||
limits are supported by way of the symbolic infinities implemented in the
|
||||
file infinities.cal (automatically linked in by intnum.cal).
|
||||
|
||||
Integration in parts and contour is supported by the "points" argument
|
||||
@@ -698,7 +661,7 @@ intnum.cal
|
||||
|
||||
The quad*core functions do not offer anything fancy but the third parameter
|
||||
controls the so called "order" which is just the number of nodes computed.
|
||||
This can be quite usefull in some circumstances.
|
||||
This can be quite useful in some circumstances.
|
||||
|
||||
; quadgldeletenodes()
|
||||
; define f(x){ return exp(x);}
|
||||
@@ -760,7 +723,7 @@ lambertw.cal
|
||||
ProductLog[branch,z] with the tested values.
|
||||
|
||||
The series is only valid for the branches 0,-1, real z, converges
|
||||
for values of z _very_ near the branchpoint -exp(-1) only, and must
|
||||
for values of z _very_ near the branch-point -exp(-1) only, and must
|
||||
be given the branches explicitly. See the code in lambertw.cal
|
||||
for further information.
|
||||
|
||||
@@ -783,7 +746,7 @@ lnseries.cal
|
||||
does so by computing the prime factorization of all of the number
|
||||
sequence 1,2,3...n, calculates the natural logarithms of the primes
|
||||
in 1,2,3...n and uses the above factorization to build the natural
|
||||
logarithms of the rest of the sequence by sadding the logarithms of
|
||||
logarithms of the rest of the sequence by adding the logarithms of
|
||||
the primes in the factorization. This is faster for high precision
|
||||
of the logarithms and/or long sequences.
|
||||
|
||||
@@ -843,7 +806,7 @@ mfactor.cal
|
||||
at 2*start_k*n+1. Skips values that are multiples of primes <= p_elim.
|
||||
By default, start_k == 1, rept_loop = 10000 and p_elim = 17.
|
||||
|
||||
The p_elim == 17 overhead takes ~3 minutes on an 200 Mhz r4k CPU and
|
||||
The p_elim == 17 overhead takes ~3 minutes on an 200 MHz r4k CPU and
|
||||
requires about ~13 Megs of memory. The p_elim == 13 overhead
|
||||
takes about 3 seconds and requires ~1.5 Megs of memory.
|
||||
|
||||
@@ -1354,7 +1317,7 @@ specialfunctions.cal
|
||||
http://en.wikipedia.org/wiki/Polygamma
|
||||
http://dlmf.nist.gov/5
|
||||
|
||||
for information on the n-th derivative ofthe Euler gamma function. This
|
||||
for information on the n-th derivative of the Euler gamma function. This
|
||||
function depends on the script zeta2.cal.
|
||||
|
||||
|
||||
@@ -1371,7 +1334,7 @@ specialfunctions.cal
|
||||
|
||||
zeta(s)
|
||||
|
||||
Calculates the value of the Rieman Zeta function at s. See:
|
||||
Calculates the value of the Riemann Zeta function at s. See:
|
||||
|
||||
http://en.wikipedia.org/wiki/Riemann_zeta_function
|
||||
http://dlmf.nist.gov/25.2
|
||||
@@ -1390,7 +1353,7 @@ statistics.cal
|
||||
invbetainc(x,a,b)
|
||||
|
||||
Computes the inverse of the regularized beta function. Does so the
|
||||
brute-force way wich makes it a bit slower.
|
||||
brute-force way which makes it a bit slower.
|
||||
|
||||
betapdf(x,a,b)
|
||||
betacdf(x,a,b)
|
||||
@@ -1470,7 +1433,7 @@ sumtimes.cal
|
||||
Give the user CPU time for various ways of evaluating sums, sums of
|
||||
squares, etc, for large lists and matrices. N is the size of
|
||||
the list or matrix to use. The doalltimes() function will run
|
||||
all fo the sumtimes tests. For example:
|
||||
all of the sumtimes tests. For example:
|
||||
|
||||
doalltimes(1e6);
|
||||
|
||||
@@ -1816,7 +1779,7 @@ zeta2.cal
|
||||
for information on this special zeta function.
|
||||
|
||||
|
||||
## Copyright (C) 2000,2014,2017 David I. Bell and Landon Curt Noll
|
||||
## Copyright (C) 2000,2014,2017,2021 David I. Bell and Landon Curt Noll
|
||||
##
|
||||
## Primary author: Landon Curt Noll
|
||||
##
|
||||
@@ -1834,10 +1797,6 @@ zeta2.cal
|
||||
## received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
## 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
##
|
||||
## @(#) $Revision: 30.10 $
|
||||
## @(#) $Id: README,v 30.10 2017/05/19 16:09:14 chongo Exp $
|
||||
## @(#) $Source: /usr/local/src/bin/calc-RHEL7/cal/RCS/README,v $
|
||||
##
|
||||
## Under source code control: 1990/02/15 01:50:32
|
||||
## File existed as early as: before 1990
|
||||
##
|
||||
|
@@ -1,7 +1,7 @@
|
||||
/*
|
||||
* alg_config - help determine optimal values for algorithm levels
|
||||
*
|
||||
* Copyright (C) 2006,2014 Landon Curt Noll
|
||||
* Copyright (C) 2006,2014,2021 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
|
||||
@@ -17,10 +17,6 @@
|
||||
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* @(#) $Revision: 30.12 $
|
||||
* @(#) $Id: alg_config.cal,v 30.12 2016/02/06 08:38:56 chongo Exp $
|
||||
* @(#) $Source: /usr/local/src/bin/calc/cal/RCS/alg_config.cal,v $
|
||||
*
|
||||
* Under source code control: 2006/06/07 14:10:11
|
||||
* File existed as early as: 2006
|
||||
*
|
||||
@@ -37,7 +33,7 @@ static test_time; /* try for this many seconds in loop test */
|
||||
* given:
|
||||
* ratio the ratio of time between two algorithms
|
||||
*
|
||||
* retuns:
|
||||
* returns:
|
||||
* 1 When ratio is near 1.0
|
||||
* 0 otherwise
|
||||
*
|
||||
@@ -358,7 +354,7 @@ define best_mul2()
|
||||
local high; /* high loop value tested */
|
||||
local mid; /* between low and high */
|
||||
local best_val; /* value found with ratio closest to unity */
|
||||
local best_ratio; /* cloest ratio found to unity */
|
||||
local best_ratio; /* closest ratio found to unity */
|
||||
local expand; /* how fast to expand the length */
|
||||
|
||||
/*
|
||||
@@ -367,7 +363,7 @@ define best_mul2()
|
||||
printf("WARNING: This tool may not be computing the correct best value\n");
|
||||
test_time = 5.0;
|
||||
printf("The best_mul2() function will take a LONG time to run!\n");
|
||||
printf("It is important that best_mul2() run on an othwewise idle host!\n");
|
||||
printf("It is important that best_mul2() run on an otherwise idle host!\n");
|
||||
if (config("user_debug") <= 0) {
|
||||
printf("To monitor progress, set user_debug to 2: "
|
||||
"config(\"user_debug\", 2)\n");
|
||||
@@ -396,7 +392,7 @@ define best_mul2()
|
||||
*/
|
||||
do {
|
||||
/*
|
||||
* determine the paramters of the next ratio test
|
||||
* determine the parameters of the next ratio test
|
||||
*
|
||||
* We will multiplicatively expand our test level until
|
||||
* the ratio drops below 1.0.
|
||||
@@ -423,7 +419,7 @@ define best_mul2()
|
||||
best_val = high;
|
||||
best_ratio = ratio;
|
||||
if (config("user_debug") > 1) {
|
||||
printf(" len %d has a new cloest ratio to unity: %.6f\n",
|
||||
printf(" len %d has a new closest ratio to unity: %.6f\n",
|
||||
best_val, best_ratio);
|
||||
}
|
||||
}
|
||||
@@ -446,7 +442,7 @@ define best_mul2()
|
||||
high /= 2;
|
||||
low = high / 2;
|
||||
if (config("user_debug") > 0) {
|
||||
printf("retesting multiply alg1/alg2 ratio for len = %d\n",
|
||||
printf("re-testing multiply alg1/alg2 ratio for len = %d\n",
|
||||
high);
|
||||
}
|
||||
ratio = mul_ratio(high);
|
||||
@@ -454,7 +450,8 @@ define best_mul2()
|
||||
best_val = high;
|
||||
best_ratio = ratio;
|
||||
if (config("user_debug") > 1) {
|
||||
printf(" len %d has a new cloest ratio to unity: %.6f\n",
|
||||
printf(" len %d has a new closest ratio "
|
||||
"to unity: %.6f\n",
|
||||
best_val, best_ratio);
|
||||
}
|
||||
}
|
||||
@@ -487,7 +484,7 @@ define best_mul2()
|
||||
best_val = mid;
|
||||
best_ratio = ratio;
|
||||
if (config("user_debug") > 1) {
|
||||
printf(" len %d has a new cloest ratio to unity: %.6f\n",
|
||||
printf(" len %d has a new closest ratio to unity: %.6f\n",
|
||||
best_val, best_ratio);
|
||||
}
|
||||
}
|
||||
@@ -539,7 +536,7 @@ define best_mul2()
|
||||
printf("config(\"mul2\", %d),;\n", best_val);
|
||||
printf("WARNING: It is believed that the output "
|
||||
"of this resource file is bogus!\n");
|
||||
printf("WARNING: You may NOT wish to follow the above suggeston.\n");
|
||||
printf("WARNING: You may NOT wish to follow the above suggestion.\n");
|
||||
}
|
||||
return mid;
|
||||
}
|
||||
@@ -839,7 +836,7 @@ define best_sq2()
|
||||
local high; /* high loop value tested */
|
||||
local mid; /* between low and high */
|
||||
local best_val; /* value found with ratio closest to unity */
|
||||
local best_ratio; /* cloest ratio found to unity */
|
||||
local best_ratio; /* closest ratio found to unity */
|
||||
local expand; /* how fast to expand the length */
|
||||
|
||||
/*
|
||||
@@ -848,7 +845,7 @@ define best_sq2()
|
||||
printf("WARNING: This tool may not be computing the correct best value\n");
|
||||
test_time = 5.0;
|
||||
printf("The best_sq2() function will take a LONG time to run!\n");
|
||||
printf("It is important that best_sq2() run on an othwewise idle host!\n");
|
||||
printf("It is important that best_sq2() run on an otherwise idle host!\n");
|
||||
if (config("user_debug") <= 0) {
|
||||
printf("To monitor progress, set user_debug to 2: "
|
||||
"config(\"user_debug\", 2)\n");
|
||||
@@ -877,7 +874,7 @@ define best_sq2()
|
||||
*/
|
||||
do {
|
||||
/*
|
||||
* determine the paramters of the next ratio test
|
||||
* determine the parameters of the next ratio test
|
||||
*
|
||||
* We will multiplicatively expand our test level until
|
||||
* the ratio drops below 1.0.
|
||||
@@ -904,7 +901,7 @@ define best_sq2()
|
||||
best_val = high;
|
||||
best_ratio = ratio;
|
||||
if (config("user_debug") > 1) {
|
||||
printf(" len %d has a new cloest ratio to unity: %.6f\n",
|
||||
printf(" len %d has a new closest ratio to unity: %.6f\n",
|
||||
best_val, best_ratio);
|
||||
}
|
||||
}
|
||||
@@ -927,7 +924,7 @@ define best_sq2()
|
||||
high /= 2;
|
||||
low = high / 2;
|
||||
if (config("user_debug") > 0) {
|
||||
printf("retesting multiply alg1/alg2 ratio for len = %d\n",
|
||||
printf("re-testing multiply alg1/alg2 ratio for len = %d\n",
|
||||
high);
|
||||
}
|
||||
ratio = mul_ratio(high);
|
||||
@@ -935,7 +932,8 @@ define best_sq2()
|
||||
best_val = high;
|
||||
best_ratio = ratio;
|
||||
if (config("user_debug") > 1) {
|
||||
printf(" len %d has a new cloest ratio to unity: %.6f\n",
|
||||
printf(" len %d has a new closest ratio "
|
||||
"to unity: %.6f\n",
|
||||
best_val, best_ratio);
|
||||
}
|
||||
}
|
||||
@@ -968,7 +966,7 @@ define best_sq2()
|
||||
best_val = mid;
|
||||
best_ratio = ratio;
|
||||
if (config("user_debug") > 1) {
|
||||
printf(" len %d has a new cloest ratio to unity: %.6f\n",
|
||||
printf(" len %d has a new closest ratio to unity: %.6f\n",
|
||||
best_val, best_ratio);
|
||||
}
|
||||
}
|
||||
@@ -1021,7 +1019,7 @@ define best_sq2()
|
||||
printf("config(\"sq2\", %d),;\n", best_val);
|
||||
printf("WARNING: It is believed that the output "
|
||||
"of this resource file is bogus!\n");
|
||||
printf("WARNING: You may NOT wish to follow the above suggeston.\n");
|
||||
printf("WARNING: You may NOT wish to follow the above suggestion.\n");
|
||||
}
|
||||
return mid;
|
||||
}
|
||||
@@ -1341,7 +1339,7 @@ define best_pow2()
|
||||
local high; /* high loop value tested */
|
||||
local mid; /* between low and high */
|
||||
local best_val; /* value found with ratio closest to unity */
|
||||
local best_ratio; /* cloest ratio found to unity */
|
||||
local best_ratio; /* closest ratio found to unity */
|
||||
local expand; /* how fast to expand the length */
|
||||
local looped; /* 1 ==> we have expanded lengths before */
|
||||
|
||||
@@ -1351,7 +1349,7 @@ define best_pow2()
|
||||
printf("WARNING: This tool may not be computing the correct best value\n");
|
||||
test_time = 60.0;
|
||||
printf("The best_pow2() function will take a LONG time to run!\n");
|
||||
printf("It is important that best_pow2() run on an othwewise idle host!\n");
|
||||
printf("It is important that best_pow2() run on an otherwise idle host!\n");
|
||||
if (config("user_debug") <= 0) {
|
||||
printf("To monitor progress, set user_debug to 2: "
|
||||
"config(\"user_debug\", 2)\n");
|
||||
@@ -1362,7 +1360,7 @@ define best_pow2()
|
||||
* firewall - must have a >1.02 ratio for the initial length
|
||||
*
|
||||
* We select 1.02 because of the precision of the CPU timing. We
|
||||
* want to firt move into an area where the 1st algoritm clearly
|
||||
* want to first move into an area where the 1st algorithm clearly
|
||||
* dominates.
|
||||
*/
|
||||
low = 4;
|
||||
@@ -1379,7 +1377,7 @@ define best_pow2()
|
||||
best_val = high;
|
||||
best_ratio = ratio;
|
||||
if (config("user_debug") > 1) {
|
||||
printf(" len %d has a new cloest ratio to unity: %.6f\n",
|
||||
printf(" len %d has a new closest ratio to unity: %.6f\n",
|
||||
best_val, best_ratio);
|
||||
}
|
||||
}
|
||||
@@ -1401,7 +1399,7 @@ define best_pow2()
|
||||
looped = 0;
|
||||
do {
|
||||
/*
|
||||
* determine the paramters of the next ratio test
|
||||
* determine the parameters of the next ratio test
|
||||
*
|
||||
* We will multiplicatively expand our test level until
|
||||
* the ratio drops below 1.0.
|
||||
@@ -1439,7 +1437,7 @@ define best_pow2()
|
||||
best_val = high;
|
||||
best_ratio = ratio;
|
||||
if (config("user_debug") > 1) {
|
||||
printf(" len %d has a new cloest ratio to unity: %.6f\n",
|
||||
printf(" len %d has a new closest ratio to unity: %.6f\n",
|
||||
best_val, best_ratio);
|
||||
}
|
||||
}
|
||||
@@ -1467,7 +1465,7 @@ define best_pow2()
|
||||
best_val = mid;
|
||||
best_ratio = ratio;
|
||||
if (config("user_debug") > 1) {
|
||||
printf(" len %d has a new cloest ratio to unity: %.6f\n",
|
||||
printf(" len %d has a new closest ratio to unity: %.6f\n",
|
||||
best_val, best_ratio);
|
||||
}
|
||||
}
|
||||
@@ -1520,7 +1518,7 @@ define best_pow2()
|
||||
printf("config(\"pow2\", %d),;\n", best_val);
|
||||
printf("WARNING: It is believed that the output "
|
||||
"of this resource file is bogus!\n");
|
||||
printf("WARNING: You may NOT wish to follow the above suggeston.\n");
|
||||
printf("WARNING: You may NOT wish to follow the above suggestion.\n");
|
||||
}
|
||||
return mid;
|
||||
}
|
||||
|
@@ -17,10 +17,6 @@
|
||||
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* @(#) $Revision: 30.1 $
|
||||
* @(#) $Id: beer.cal,v 30.1 2007/03/16 11:09:54 chongo Exp $
|
||||
* @(#) $Source: /usr/local/src/bin/calc/cal/RCS/beer.cal,v $
|
||||
*
|
||||
* Under source code control: 1996/11/13 13:21:05
|
||||
* File existed as early as: 1996
|
||||
*
|
||||
|
@@ -1,7 +1,7 @@
|
||||
/*
|
||||
* bernoulli - clculate the Nth Bernoulli number B(n)
|
||||
* bernoulli - calculate the Nth Bernoulli number B(n)
|
||||
*
|
||||
* Copyright (C) 2000 David I. Bell and Landon Curt Noll
|
||||
* Copyright (C) 2000,2021 David I. Bell and Landon Curt Noll
|
||||
*
|
||||
* Calc is open software; you can redistribute it and/or modify it under
|
||||
* the terms of the version 2.1 of the GNU Lesser General Public License
|
||||
@@ -17,10 +17,6 @@
|
||||
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* @(#) $Revision: 30.1 $
|
||||
* @(#) $Id: bernoulli.cal,v 30.1 2007/03/16 11:09:54 chongo Exp $
|
||||
* @(#) $Source: /usr/local/src/bin/calc/cal/RCS/bernoulli.cal,v $
|
||||
*
|
||||
* Under source code control: 1991/09/30 11:18:41
|
||||
* File existed as early as: 1991
|
||||
*
|
||||
@@ -30,9 +26,9 @@
|
||||
/*
|
||||
* Calculate the Nth Bernoulli number B(n).
|
||||
*
|
||||
* NOTE: This is now a bulitin function.
|
||||
* NOTE: This is now a builtin function.
|
||||
*
|
||||
* The non-buildin code used the following symbolic formula to calculate B(n):
|
||||
* The non-builtin code used the following symbolic formula to calculate B(n):
|
||||
*
|
||||
* (b+1)^(n+1) - b^(n+1) = 0
|
||||
*
|
||||
@@ -46,7 +42,7 @@
|
||||
* B(3) = -(6*B(2) + 4*B(1) + 1) / 4
|
||||
*
|
||||
* The combinatorial factors in the expansion of the above formula are
|
||||
* calculated interatively, and we use the fact that B(2i+1) = 0 if i > 0.
|
||||
* calculated interactively, and we use the fact that B(2i+1) = 0 if i > 0.
|
||||
* Since all previous B(n)'s are needed to calculate a particular B(n), all
|
||||
* values obtained are saved in an array for ease in repeated calculations.
|
||||
*/
|
||||
|
@@ -1,7 +1,7 @@
|
||||
/*
|
||||
* bernpoly - Bernoully polynomials B_n(z) for arbitrary n,z..
|
||||
* bernpoly - Bernoulli polynomials B_n(z) for arbitrary n,z..
|
||||
*
|
||||
* Copyright (C) 2013 Christoph Zurnieden
|
||||
* Copyright (C) 2013,2021 Christoph Zurnieden
|
||||
*
|
||||
* 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
|
||||
@@ -17,10 +17,6 @@
|
||||
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* @(#) $Revision: 30.4 $
|
||||
* @(#) $Id: bernpoly.cal,v 30.4 2013/08/18 20:01:53 chongo Exp $
|
||||
* @(#) $Source: /usr/local/src/bin/calc/cal/RCS/bernpoly.cal,v $
|
||||
*
|
||||
* Under source code control: 2013/08/11 01:31:28
|
||||
* File existed as early as: 2013
|
||||
*/
|
||||
|
@@ -17,10 +17,6 @@
|
||||
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* @(#) $Revision: 30.1 $
|
||||
* @(#) $Id: bigprime.cal,v 30.1 2007/03/16 11:09:54 chongo Exp $
|
||||
* @(#) $Source: /usr/local/src/bin/calc/cal/RCS/bigprime.cal,v $
|
||||
*
|
||||
* Under source code control: 1991/05/22 21:56:32
|
||||
* File existed as early as: 1991
|
||||
*
|
||||
|
@@ -16,10 +16,6 @@
|
||||
# received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
#
|
||||
# @(#) $Revision: 30.1 $
|
||||
# @(#) $Id: bindings,v 30.1 2007/03/16 11:09:54 chongo Exp $
|
||||
# @(#) $Source: /usr/local/src/bin/calc/cal/RCS/bindings,v $
|
||||
#
|
||||
# Under source code control: 1993/05/02 20:09:19
|
||||
# File existed as early as: 1993
|
||||
#
|
||||
|
@@ -1,7 +1,7 @@
|
||||
/*
|
||||
* brentsolve - Root finding with the Brent-Dekker trick
|
||||
*
|
||||
* Copyright (C) 2013 Christoph Zurnieden
|
||||
* Copyright (C) 2013,2021 Christoph Zurnieden
|
||||
*
|
||||
* 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
|
||||
@@ -17,10 +17,6 @@
|
||||
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* @(#) $Revision: 30.4 $
|
||||
* @(#) $Id: brentsolve.cal,v 30.4 2013/08/18 20:01:53 chongo Exp $
|
||||
* @(#) $Source: /usr/local/src/bin/calc/cal/RCS/brentsolve.cal,v $
|
||||
*
|
||||
* Under source code control: 2013/08/11 01:31:28
|
||||
* File existed as early as: 2013
|
||||
*/
|
||||
@@ -147,7 +143,7 @@ define brentsolve2(low, high,which,eps){
|
||||
|
||||
switch(param(0)){
|
||||
case 0:
|
||||
case 1: return newerror("brentsolve2: not enough argments");
|
||||
case 1: return newerror("brentsolve2: not enough arguments");
|
||||
case 2: eps = epsilon(epsilon()*1e-2);
|
||||
which = 0;break;
|
||||
case 3: eps = epsilon(epsilon()*1e-2);break;
|
||||
|
14
cal/chi.cal
14
cal/chi.cal
@@ -1,7 +1,7 @@
|
||||
/*
|
||||
* chi - chi^2 probabilities with degrees of freedom for null hypothesis
|
||||
*
|
||||
* Copyright (C) 2001 Landon Curt Noll
|
||||
* Copyright (C) 2001,2021 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
|
||||
@@ -17,10 +17,6 @@
|
||||
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* @(#) $Revision: 30.1 $
|
||||
* @(#) $Id: chi.cal,v 30.1 2007/03/16 11:09:54 chongo Exp $
|
||||
* @(#) $Source: /usr/local/src/bin/calc/cal/RCS/chi.cal,v $
|
||||
*
|
||||
* Under source code control: 2001/03/27 14:10:11
|
||||
* File existed as early as: 2001
|
||||
*
|
||||
@@ -55,7 +51,7 @@ define Z(x, eps_term)
|
||||
|
||||
|
||||
/*
|
||||
* P(x[, eps]) asymtotic P(x) expansion for x>0 to an given epsilon error term
|
||||
* P(x[, eps]) asymptotic P(x) expansion for x>0 to an given epsilon error term
|
||||
*
|
||||
* NOTE: If eps is omitted, the stored epsilon value is used.
|
||||
*
|
||||
@@ -103,7 +99,7 @@ define P(x, eps_term)
|
||||
}
|
||||
|
||||
/*
|
||||
* aproximate sum(n=0; n < infinity){x^(2*n+1)/(1*3*5*...(2*n+1)}
|
||||
* approximate sum(n=0; n < infinity){x^(2*n+1)/(1*3*5*...(2*n+1)}
|
||||
*/
|
||||
x2 = x*x;
|
||||
x_term = x;
|
||||
@@ -134,7 +130,7 @@ define P(x, eps_term)
|
||||
*
|
||||
* 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).
|
||||
* a sufficiently small error term as the degrees 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
|
||||
@@ -190,7 +186,7 @@ define chi_prob(chi_sq, v, eps_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 d; /* denominator (2*4*6*... or 1*3*5...) */
|
||||
local chi_term; /* chi_sq^r */
|
||||
local ret; /* return value */
|
||||
|
||||
|
@@ -1,7 +1,7 @@
|
||||
/*
|
||||
* chrem - chinese remainder theorem/problem solver
|
||||
* chrem - Chinese remainder theorem/problem solver
|
||||
*
|
||||
* Copyright (C) 1999 Ernest Bowen and Landon Curt Noll
|
||||
* Copyright (C) 1999,2021 Ernest Bowen and Landon Curt Noll
|
||||
*
|
||||
* Primary author: Ernest Bowen
|
||||
*
|
||||
@@ -19,10 +19,6 @@
|
||||
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* @(#) $Revision: 30.1 $
|
||||
* @(#) $Id: chrem.cal,v 30.1 2007/03/16 11:09:54 chongo Exp $
|
||||
* @(#) $Source: /usr/local/src/bin/calc/cal/RCS/chrem.cal,v $
|
||||
*
|
||||
* Under source code control: 1992/09/26 01:00:47
|
||||
* File existed as early as: 1992
|
||||
*
|
||||
@@ -30,7 +26,7 @@
|
||||
*/
|
||||
|
||||
/*
|
||||
* When possible, chrem finds solutions for x of a set of congruences
|
||||
* When possible, chrem finds solutions for x of a set of congruence
|
||||
* of the form:
|
||||
*
|
||||
* x = r1 (mod m1)
|
||||
@@ -39,7 +35,7 @@
|
||||
*
|
||||
* where the residues r1, r2, ... and the moduli m1, m2, ... are
|
||||
* given integers. The Chinese remainder theorem states that if
|
||||
* m1, m2, ... are relatively prime in pairs, the above congruences
|
||||
* m1, m2, ... are relatively prime in pairs, the above congruence
|
||||
* have a unique solution modulo m1 * m2 * ... If m1, m2, ...
|
||||
* are not relatively prime in pairs, it is possible that no solution
|
||||
* exists. If solutions exist, the general solution is expressible as:
|
||||
|
@@ -17,10 +17,6 @@
|
||||
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* @(#) $Revision: 30.4 $
|
||||
* @(#) $Id: constants.cal,v 30.4 2013/08/18 20:01:53 chongo Exp $
|
||||
* @(#) $Source: /usr/local/src/bin/calc/cal/RCS/constants.cal,v $
|
||||
*
|
||||
* Under source code control: 2013/08/11 01:31:28
|
||||
* File existed as early as: 2013
|
||||
*/
|
||||
|
@@ -17,10 +17,6 @@
|
||||
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* @(#) $Revision: 30.2 $
|
||||
* @(#) $Id: deg.cal,v 30.2 2010/09/02 06:01:14 chongo Exp $
|
||||
* @(#) $Source: /usr/local/src/bin/calc/cal/RCS/deg.cal,v $
|
||||
*
|
||||
* Under source code control: 1990/02/15 01:50:33
|
||||
* File existed as early as: before 1990
|
||||
*
|
||||
|
14
cal/dms.cal
14
cal/dms.cal
@@ -1,7 +1,7 @@
|
||||
/*
|
||||
* dms - calculate in degrees, minutes, and seconds (based on deg)
|
||||
*
|
||||
* Copyright (C) 1999,2010 David I. Bell and Landon Curt Noll
|
||||
* Copyright (C) 1999,2010,2021 David I. Bell and Landon Curt Noll
|
||||
*
|
||||
* Calc is open software; you can redistribute it and/or modify it under
|
||||
* the terms of the version 2.1 of the GNU Lesser General Public License
|
||||
@@ -17,10 +17,6 @@
|
||||
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* @(#) $Revision: 30.2 $
|
||||
* @(#) $Id: dms.cal,v 30.2 2010/09/02 06:14:16 chongo Exp $
|
||||
* @(#) $Source: /usr/local/src/bin/calc/cal/RCS/dms.cal,v $
|
||||
*
|
||||
* Under source code control: 1990/02/15 01:50:33
|
||||
* File existed as early as: before 1990
|
||||
*
|
||||
@@ -57,7 +53,7 @@ define dms_add(a, b)
|
||||
{
|
||||
local obj dms ans; /* return value */
|
||||
|
||||
/* initalize value to 1st arg */
|
||||
/* initialize value to 1st arg */
|
||||
if (istype(a, ans)) {
|
||||
/* 1st arg is dms object, load it */
|
||||
ans.deg = a.deg;
|
||||
@@ -114,7 +110,7 @@ define dms_sub(a, b)
|
||||
{
|
||||
local obj dms ans; /* return value */
|
||||
|
||||
/* initalize value to 1st arg */
|
||||
/* initialize value to 1st arg */
|
||||
if (istype(a, ans)) {
|
||||
/* 1st arg is dms object, load it */
|
||||
ans.deg = a.deg;
|
||||
@@ -356,11 +352,11 @@ define fixdms(a)
|
||||
quit "attempt to fix a non dms object";
|
||||
}
|
||||
|
||||
/* force minutes to be intergral */
|
||||
/* force minutes to be integral */
|
||||
a.min += frac(a.deg) * 60;
|
||||
a.deg = int(a.deg);
|
||||
|
||||
/* force degrees to be intergral */
|
||||
/* force degrees to be integral */
|
||||
a.sec += frac(a.min) * 60;
|
||||
a.min = int(a.min);
|
||||
|
||||
|
@@ -8,18 +8,14 @@
|
||||
* copyright this dotest_code.
|
||||
*
|
||||
* ERNEST BOWEN AND LANDON CURT NOLL DISCLAIMS ALL WARRANTIES WITH REGARD TO
|
||||
* THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MER-
|
||||
* CHANTABILITY AND FITNESS. IN NO EVENT SHALL LANDON CURT
|
||||
* THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MER-
|
||||
* CHANTABILITY AND FITNESS. IN NO EVENT SHALL LANDON CURT
|
||||
* NOLL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
|
||||
* DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF
|
||||
* USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
|
||||
* NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
|
||||
* CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*
|
||||
* @(#) $Revision: 30.2 $
|
||||
* @(#) $Id: dotest.cal,v 30.2 2007/03/16 11:09:54 chongo Exp $
|
||||
* @(#) $Source: /usr/local/src/bin/calc/cal/RCS/dotest.cal,v $
|
||||
*
|
||||
* This file is not covered under version 2.1 of the GNU LGPL.
|
||||
*
|
||||
* Under source dotest_code control: 2006/03/08 05:54:09
|
||||
@@ -177,7 +173,7 @@ define dotest(dotest_file, dotest_code = 0, dotest_maxcond = -1)
|
||||
}
|
||||
|
||||
/*
|
||||
* preppare to return to the caller environment
|
||||
* prepare to return to the caller environment
|
||||
*
|
||||
* We increase the caller's error count by the number
|
||||
* of line tests that failed, not the number of internal
|
||||
|
@@ -17,10 +17,6 @@
|
||||
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* @(#) $Revision: 30.1 $
|
||||
* @(#) $Id: ellip.cal,v 30.1 2007/03/16 11:09:54 chongo Exp $
|
||||
* @(#) $Source: /usr/local/src/bin/calc/cal/RCS/ellip.cal,v $
|
||||
*
|
||||
* Under source code control: 1990/02/15 01:50:33
|
||||
* File existed as early as: before 1990
|
||||
*
|
||||
|
@@ -17,10 +17,6 @@
|
||||
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* @(#) $Revision: 30.4 $
|
||||
* @(#) $Id: factorial.cal,v 30.4 2013/08/18 20:01:53 chongo Exp $
|
||||
* @(#) $Source: /usr/local/src/bin/calc/cal/RCS/factorial.cal,v $
|
||||
*
|
||||
* Under source code control: 2013/08/11 01:31:28
|
||||
* File existed as early as: 2013
|
||||
*/
|
||||
|
@@ -1,7 +1,7 @@
|
||||
/*
|
||||
* factorial2 - implementation of different factorial related functions
|
||||
*
|
||||
* Copyright (C) 2013 Christoph Zurnieden
|
||||
* Copyright (C) 2013,2021 Christoph Zurnieden
|
||||
*
|
||||
* 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
|
||||
@@ -17,10 +17,6 @@
|
||||
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* @(#) $Revision: 30.4 $
|
||||
* @(#) $Id: factorial2.cal,v 30.4 2013/08/18 20:01:53 chongo Exp $
|
||||
* @(#) $Source: /usr/local/src/bin/calc/cal/RCS/factorial2.cal,v $
|
||||
*
|
||||
* Under source code control: 2013/08/11 01:31:28
|
||||
* File existed as early as: 2013
|
||||
*/
|
||||
@@ -285,10 +281,10 @@ define __CZ__multiply_factored_factorial(matrix,stop){
|
||||
}
|
||||
|
||||
/*
|
||||
Compute binomial coeficients n!/(k!(n-k)!)
|
||||
Compute binomial coefficients n!/(k!(n-k)!)
|
||||
|
||||
One of the rare cases where a formula once meant to ease manual computation
|
||||
is actually the (aymptotically) fastest way to do it (in July 2013) for
|
||||
is actually the (asymptotically) fastest way to do it (in July 2013) for
|
||||
the extreme case binomial(2N,N) but for a high price, the memory
|
||||
needed is pi(N)--theoretically.
|
||||
*/
|
||||
@@ -630,7 +626,7 @@ define subfactorialrecursive(n){
|
||||
return n * subfactorialrecursive(n-1) + (-1)^n;
|
||||
}
|
||||
|
||||
/* This is, quite amusingely, faster than the very same algorithm in
|
||||
/* This is, quite amusingly, faster than the very same algorithm in
|
||||
PARI/GP + GMP*/
|
||||
define subfactorialiterative(n){
|
||||
local k temp1 temp2 ret;
|
||||
|
@@ -8,10 +8,6 @@
|
||||
* operation "function" must be first; calc doesn't care how many more
|
||||
* arguments there actually are.
|
||||
*
|
||||
* @(#) $Revision: 30.3 $
|
||||
* @(#) $Id: gvec.cal,v 30.3 2011/05/23 23:00:55 chongo Exp $
|
||||
* @(#) $Source: /usr/local/src/bin/calc/cal/RCS/gvec.cal,v $
|
||||
*
|
||||
* Under source code control: 2011/03/31 17:54:55
|
||||
* File existed as early as: 2010
|
||||
*
|
||||
|
@@ -17,10 +17,6 @@
|
||||
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* @(#) $Revision: 30.1 $
|
||||
* @(#) $Id: hello.cal,v 30.1 2007/03/16 11:09:54 chongo Exp $
|
||||
* @(#) $Source: /usr/local/src/bin/calc/cal/RCS/hello.cal,v $
|
||||
*
|
||||
* Under source code control: 1996/11/13 13:25:43
|
||||
* File existed as early as: 1996
|
||||
*
|
||||
|
14
cal/hms.cal
14
cal/hms.cal
@@ -1,7 +1,7 @@
|
||||
/*
|
||||
* hms - calculate in hours, minutes, and seconds
|
||||
*
|
||||
* Copyright (C) 2010 Landon Curt Noll
|
||||
* Copyright (C) 2010,2021 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
|
||||
@@ -17,10 +17,6 @@
|
||||
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* @(#) $Revision: 30.2 $
|
||||
* @(#) $Id: hms.cal,v 30.2 2010/09/02 06:14:16 chongo Exp $
|
||||
* @(#) $Source: /usr/local/src/bin/calc/cal/RCS/hms.cal,v $
|
||||
*
|
||||
* Under source code control: 2010/09/01 17:14:55
|
||||
* File existed as early as: 2010
|
||||
*
|
||||
@@ -57,7 +53,7 @@ define hms_add(a, b)
|
||||
{
|
||||
local obj hms ans; /* return value */
|
||||
|
||||
/* initalize value to 1st arg */
|
||||
/* initialize value to 1st arg */
|
||||
if (istype(a, ans)) {
|
||||
/* 1st arg is hms object, load it */
|
||||
ans.hour = a.hour;
|
||||
@@ -114,7 +110,7 @@ define hms_sub(a, b)
|
||||
{
|
||||
local obj hms ans; /* return value */
|
||||
|
||||
/* initalize value to 1st arg */
|
||||
/* initialize value to 1st arg */
|
||||
if (istype(a, ans)) {
|
||||
/* 1st arg is hms object, load it */
|
||||
ans.hour = a.hour;
|
||||
@@ -356,11 +352,11 @@ define fixhms(a)
|
||||
quit "attempt to fix a non hms object";
|
||||
}
|
||||
|
||||
/* force minutes to be intergral */
|
||||
/* force minutes to be integral */
|
||||
a.min += frac(a.hour) * 60;
|
||||
a.hour = int(a.hour);
|
||||
|
||||
/* force hours to be intergral */
|
||||
/* force hours to be integral */
|
||||
a.sec += frac(a.min) * 60;
|
||||
a.min = int(a.min);
|
||||
|
||||
|
@@ -1,7 +1,7 @@
|
||||
/*
|
||||
* intfile - integer to file and file to integer conversion
|
||||
*
|
||||
* Copyright (C) 2001 Landon Curt Noll
|
||||
* Copyright (C) 2001,2021 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
|
||||
@@ -17,10 +17,6 @@
|
||||
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* @(#) $Revision: 30.1 $
|
||||
* @(#) $Id: intfile.cal,v 30.1 2007/03/16 11:09:54 chongo Exp $
|
||||
* @(#) $Source: /usr/local/src/bin/calc/cal/RCS/intfile.cal,v $
|
||||
*
|
||||
* Under source code control: 2001/03/31 08:13:11
|
||||
* File existed as early as: 2001
|
||||
*
|
||||
@@ -31,20 +27,20 @@
|
||||
|
||||
/*
|
||||
* 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)
|
||||
* 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
|
||||
* file2be - convert a file into an big Endian integer
|
||||
*
|
||||
* given:
|
||||
* filename filename to read
|
||||
*
|
||||
* returns:
|
||||
* integer read from its contents on big endian order
|
||||
* integer read from its contents on big Endian order
|
||||
*/
|
||||
define file2be(filename)
|
||||
{
|
||||
@@ -79,13 +75,13 @@ define file2be(filename)
|
||||
|
||||
|
||||
/*
|
||||
* file2le - convert a file into an little endian integer
|
||||
* file2le - convert a file into an little Endian integer
|
||||
*
|
||||
* given:
|
||||
* filename filename to read
|
||||
*
|
||||
* returns:
|
||||
* integer read from its contents on little endian order
|
||||
* integer read from its contents on little Endian order
|
||||
*/
|
||||
define file2le(filename)
|
||||
{
|
||||
@@ -122,7 +118,7 @@ define file2le(filename)
|
||||
|
||||
|
||||
/*
|
||||
* be2file - convert a big endian integer into a file
|
||||
* be2file - convert a big Endian integer into a file
|
||||
*
|
||||
* given:
|
||||
* v integer to write to the file
|
||||
@@ -172,7 +168,7 @@ define be2file(v, filename)
|
||||
|
||||
|
||||
/*
|
||||
* le2file - convert a little endian integer into a file
|
||||
* le2file - convert a little Endian integer into a file
|
||||
*
|
||||
* given:
|
||||
* v integer to write to the file
|
||||
|
@@ -1,7 +1,7 @@
|
||||
/*
|
||||
* intnum - implementation of tanhsinh- and Gauss-Legendre quadrature
|
||||
*
|
||||
* Copyright (C) 2013 Christoph Zurnieden
|
||||
* Copyright (C) 2013,2021 Christoph Zurnieden
|
||||
*
|
||||
* 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
|
||||
@@ -295,7 +295,7 @@ define quadts(a, b, points)
|
||||
* as the number of equally spaced intervals on a straight line
|
||||
* connecting a and b. Computing the segments here is a bit
|
||||
* more complicated but not much, it should have been taught in
|
||||
* highschool.
|
||||
* high school.
|
||||
* Other contours by way of a list of points */
|
||||
slope = (im(b) - im(a)) / (re(b) - re(a));
|
||||
C = (im(a) + slope) * re(a);
|
||||
|
@@ -1,7 +1,7 @@
|
||||
/*
|
||||
* lambertw - Lambert's W-function
|
||||
*
|
||||
* Copyright (C) 2013 Christoph Zurnieden
|
||||
* Copyright (C) 2013,2021 Christoph Zurnieden
|
||||
*
|
||||
* 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
|
||||
@@ -17,10 +17,6 @@
|
||||
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* @(#) $Revision: 30.4 $
|
||||
* @(#) $Id: lambertw.cal,v 30.4 2013/08/18 20:01:53 chongo Exp $
|
||||
* @(#) $Source: /usr/local/src/bin/calc/cal/RCS/lambertw.cal,v $
|
||||
*
|
||||
* Under source code control: 2013/08/11 01:31:28
|
||||
* File existed as early as: 2013
|
||||
*/
|
||||
@@ -87,7 +83,7 @@ define __CZ__lambertw_m1(z,eps){
|
||||
or by using the function lambertw_series_print() after running
|
||||
lambertw_series(z,eps,branch,terms) at least once with the wanted number of
|
||||
terms and z = 1 (which might throw an error because the series will not
|
||||
converge in anybodies lifetime for something that far from the branchpoint).
|
||||
converge in anybodies lifetime for something that far from the branch point).
|
||||
|
||||
|
||||
*/
|
||||
@@ -109,7 +105,7 @@ define lambertw_series_print(){
|
||||
}
|
||||
|
||||
/*
|
||||
The series is fast but only if _very_ close to the branchpoint
|
||||
The series is fast but only if _very_ close to the branch point
|
||||
The exact branch must be given explicitly, e.g.:
|
||||
|
||||
; lambertw(-exp(-1)+.001)-lambertw_series(-exp(-1)+.001,epsilon()*1e-10,0)
|
||||
|
@@ -1,7 +1,7 @@
|
||||
/*
|
||||
* linear - perform a simple two point 2D linear interpolation
|
||||
*
|
||||
* Copyright (C) 2005-2007 Landon Curt Noll
|
||||
* Copyright (C) 2005-2007,2021 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
|
||||
@@ -17,10 +17,6 @@
|
||||
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* @(#) $Revision: 30.2 $
|
||||
* @(#) $Id: linear.cal,v 30.2 2007/03/17 05:57:42 chongo Exp $
|
||||
* @(#) $Source: /usr/local/src/bin/calc/cal/RCS/linear.cal,v $
|
||||
*
|
||||
* Under source code control: 2005/12/12 06:41:50
|
||||
* File existed as early as: 2005
|
||||
*
|
||||
@@ -33,7 +29,7 @@
|
||||
*
|
||||
* given:
|
||||
* x0, y0 first known point on the line
|
||||
* x1, y1 second knonw point on the line
|
||||
* x1, y1 second known point on the line
|
||||
* x a given point to interpolate on
|
||||
*
|
||||
* returns:
|
||||
|
@@ -17,10 +17,6 @@
|
||||
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* @(#) $Revision: 30.4 $
|
||||
* @(#) $Id: lnseries.cal,v 30.4 2013/08/18 20:01:53 chongo Exp $
|
||||
* @(#) $Source: /usr/local/src/bin/calc/cal/RCS/lnseries.cal,v $
|
||||
*
|
||||
* Under source code control: 2013/08/11 01:31:28
|
||||
* File existed as early as: 2013
|
||||
*/
|
||||
|
471
cal/lucas.cal
471
cal/lucas.cal
@@ -1,7 +1,7 @@
|
||||
/*
|
||||
* lucas - perform a Lucas primality test on h*2^n-1
|
||||
*
|
||||
* Copyright (C) 1999,2017 Landon Curt Noll
|
||||
* Copyright (C) 1999,2017,2018,2021 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
|
||||
@@ -17,10 +17,6 @@
|
||||
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* @(#) $Revision: 30.4 $
|
||||
* @(#) $Id: lucas.cal,v 30.4 2017/05/20 21:54:16 chongo Exp $
|
||||
* @(#) $Source: /usr/local/src/bin/calc-RHEL7/cal/RCS/lucas.cal,v $
|
||||
*
|
||||
* Under source code control: 1990/05/03 16:49:51
|
||||
* File existed as early as: 1990
|
||||
*
|
||||
@@ -32,6 +28,10 @@
|
||||
* For a general tutorial on how to find a new largest known prime, see:
|
||||
*
|
||||
* http://www.isthe.com/chongo/tech/math/prime/prime-tutorial.pdf
|
||||
*
|
||||
* Also see the reference code, available both C and go:
|
||||
*
|
||||
* https://github.com/arcetri/goprime
|
||||
*/
|
||||
|
||||
/*
|
||||
@@ -158,6 +158,12 @@
|
||||
*
|
||||
* Finally, one should eliminate all values of 'h*2^n-1' where
|
||||
* 'h*2^n+1' is divisible by a small primes.
|
||||
*
|
||||
* NOTE: Today, for world record sized h*2^n-1 primes, one might
|
||||
* search for factors < 2^46 or more. By excluding h*2^n-1
|
||||
* with prime factors < 2^46, where h*2^n-1 is a bit larger
|
||||
* than the largest known prime, one may exclude about 96.5%
|
||||
* of candidates that have "small" prime factors.
|
||||
*/
|
||||
|
||||
pprod256 = 0; /* product of "primes up to 256" / "primes up to 46" */
|
||||
@@ -175,6 +181,11 @@ pprod256 = 0; /* product of "primes up to 256" / "primes up to 46" */
|
||||
* "Lucasian Criteria for the Primality of N=h*2^n-1", by Hans Riesel,
|
||||
* Mathematics of Computation, Vol 23 #108, pp. 869-875, Oct 1969
|
||||
*
|
||||
* http://www.ams.org/journals/mcom/1969-23-108/S0025-5718-1969-0262163-1/
|
||||
* S0025-5718-1969-0262163-1.pdf
|
||||
*
|
||||
* NOTE: Join the above two lines for the complete URL of the paper.
|
||||
*
|
||||
* The following book is also useful:
|
||||
*
|
||||
* Ref2:
|
||||
@@ -242,8 +253,8 @@ pprod256 = 0; /* product of "primes up to 256" / "primes up to 46" */
|
||||
* do make this so.
|
||||
*
|
||||
* input:
|
||||
* h the h as in h*2^n-1
|
||||
* n the n as in h*2^n-1
|
||||
* h h as in h*2^n-1 (must be >= 1)
|
||||
* n n as in h*2^n-1 (must be >= 1)
|
||||
*
|
||||
* returns:
|
||||
* 1 => h*2^n-1 is prime
|
||||
@@ -266,13 +277,17 @@ lucas(h, n)
|
||||
* check arg types
|
||||
*/
|
||||
if (!isint(h)) {
|
||||
ldebug("lucas", "h is non-int");
|
||||
quit "FATAL: bad args: h must be an integer";
|
||||
}
|
||||
if (h < 1) {
|
||||
quit "FATAL: bad args: h must be an integer >= 1";
|
||||
}
|
||||
if (!isint(n)) {
|
||||
ldebug("lucas", "n is non-int");
|
||||
quit "FATAL: bad args: n must be an integer";
|
||||
}
|
||||
if (n < 1) {
|
||||
quit "FATAL: bad args: n must be an integer >= 1";
|
||||
}
|
||||
|
||||
/*
|
||||
* reduce h if even
|
||||
@@ -358,41 +373,53 @@ lucas(h, n)
|
||||
return 1; /* 239 is prime */
|
||||
}
|
||||
|
||||
/*
|
||||
* Verify that h*2^n-1 is not a multiple of 3
|
||||
*
|
||||
* The case for h*2^n-1 == 3 is handled above.
|
||||
*/
|
||||
if (((h % 3 == 1) && (n % 2 == 0)) || ((h % 3 == 2) && (n % 2 == 1))) {
|
||||
/* no need to test h*2^n-1, it is a multiple of 3 */
|
||||
ldebug("lucas","not-prime: != 3 and is a multiple of 3");
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Avoid any numbers divisible by small primes
|
||||
*/
|
||||
/*
|
||||
* check for 3 <= prime factors < 29
|
||||
* pfact(28)/2 = 111546435
|
||||
* check for 5 <= prime factors < 31
|
||||
* pfact(30)/6 = 1078282205
|
||||
*/
|
||||
testval = h*2^n - 1;
|
||||
if (gcd(testval, 111546435) > 1) {
|
||||
/* a small 3 <= prime < 29 divides h*2^n-1 */
|
||||
ldebug("lucas","not-prime: 3<=prime<29 divides h*2^n-1");
|
||||
if (gcd(testval, 1078282205) > 1) {
|
||||
/* a small 5 <= prime < 31 divides h*2^n-1 */
|
||||
ldebug("lucas",\
|
||||
"not-prime: a small 5<=prime<31 divides h*2^n-1");
|
||||
return 0;
|
||||
}
|
||||
/*
|
||||
* check for 29 <= prime factors < 47
|
||||
* pfact(46)/pfact(28) = 5864229
|
||||
* check for 31 <= prime factors < 53
|
||||
* pfact(52)/pfact(30) = 95041567
|
||||
*/
|
||||
if (gcd(testval, 58642669) > 1) {
|
||||
/* a small 29 <= prime < 47 divides h*2^n-1 */
|
||||
ldebug("lucas","not-prime: 29<=prime<47 divides h*2^n-1");
|
||||
if (gcd(testval, 95041567) > 1) {
|
||||
/* a small 31 <= prime < 53 divides h*2^n-1 */
|
||||
ldebug("lucas","not-prime: 31<=prime<53 divides h*2^n-1");
|
||||
return 0;
|
||||
}
|
||||
/*
|
||||
* check for prime 47 <= factors < 257, if h*2^n-1 is large
|
||||
* 2^282 > pfact(256)/pfact(46) > 2^281
|
||||
* check for prime 53 <= factors < 257, if h*2^n-1 is large
|
||||
* 2^276 > pfact(256)/pfact(52) > 2^275
|
||||
*/
|
||||
bits = highbit(testval);
|
||||
if (bits >= 281) {
|
||||
if (bits >= 275) {
|
||||
if (pprod256 <= 0) {
|
||||
pprod256 = pfact(256)/pfact(46);
|
||||
pprod256 = pfact(256)/pfact(52);
|
||||
}
|
||||
if (gcd(testval, pprod256) > 1) {
|
||||
/* a small 47 <= prime < 257 divides h*2^n-1 */
|
||||
/* a small 53 <= prime < 257 divides h*2^n-1 */
|
||||
ldebug("lucas",\
|
||||
"not-prime: 47<=prime<257 divides h*2^n-1");
|
||||
"not-prime: 53<=prime<257 divides h*2^n-1");
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
@@ -408,7 +435,9 @@ lucas(h, n)
|
||||
* generate a test for h*2^n-1. The legacy function,
|
||||
* legacy_gen_v1() used by the Amdahl 6 could have returned
|
||||
* -1. The new gen_v1() based on the method outlined in Ref4
|
||||
* will never return -1.
|
||||
* will never return -1 if h*2^n-1 is not a multiple of 3.
|
||||
* Because the "multiple of 3" case is handled above, the
|
||||
* call below to gen_v1() will never return -1.
|
||||
*/
|
||||
v1 = gen_v1(h, n);
|
||||
if (v1 < 0) {
|
||||
@@ -483,9 +512,9 @@ lucas(h, n)
|
||||
* See the function gen_v1() for details on the value of v(1).
|
||||
*
|
||||
* input:
|
||||
* h - h as in h*2^n-1
|
||||
* n - n as in h*2^n-1
|
||||
* v1 - gen_v1(h,n) (see function below)
|
||||
* h - h as in h*2^n-1 (must be >= 1)
|
||||
* n - n as in h*2^n-1 (must be >= 1)
|
||||
* v1 - gen_v1(h,n) (must be >= 3) (see function below)
|
||||
*
|
||||
* returns:
|
||||
* u(2) - initial value for Lucas test on h*2^n-1
|
||||
@@ -498,6 +527,8 @@ gen_u2(h, n, v1)
|
||||
local r; /* low value: v(n) */
|
||||
local s; /* high value: v(n+1) */
|
||||
local hbits; /* highest bit set in h */
|
||||
local oldh; /* pre-reduced h */
|
||||
local oldn; /* pre-reduced n */
|
||||
local i;
|
||||
|
||||
/*
|
||||
@@ -506,24 +537,45 @@ gen_u2(h, n, v1)
|
||||
if (!isint(h)) {
|
||||
quit "bad args: h must be an integer";
|
||||
}
|
||||
if (h < 0) {
|
||||
quit "bad args: h must be an integer >= 1";
|
||||
}
|
||||
if (!isint(n)) {
|
||||
quit "bad args: n must be an integer";
|
||||
}
|
||||
if (n < 1) {
|
||||
quit "bad args: n must be an integer >= 1";
|
||||
}
|
||||
if (!isint(v1)) {
|
||||
quit "bad args: v1 must be an integer";
|
||||
}
|
||||
if (v1 <= 0) {
|
||||
quit "bogus arg: v1 is <= 0";
|
||||
if (v1 < 3) {
|
||||
quit "bogus arg: v1 must be an integer >= 3";
|
||||
}
|
||||
|
||||
/*
|
||||
* reduce h if even
|
||||
*
|
||||
* we will force h to be odd by moving powers of two over to 2^n
|
||||
*/
|
||||
oldh = h;
|
||||
oldn = n;
|
||||
shiftdown = fcnt(h,2); /* h % 2^shiftdown == 0, max shiftdown */
|
||||
if (shiftdown > 0) {
|
||||
h >>= shiftdown;
|
||||
n += shiftdown;
|
||||
}
|
||||
|
||||
/*
|
||||
* enforce the h > 0 and n >= 2 rules
|
||||
*/
|
||||
if (h <= 0 || n < 1) {
|
||||
print " ERROR: h=":oldh, "n=":oldn, "reduced h=":h, "n=":n;
|
||||
quit "reduced args violate the rule: 0 < h < 2^n";
|
||||
}
|
||||
hbits = highbit(h);
|
||||
if (hbits >= n) {
|
||||
print " ERROR: h=":oldh, "n=":oldn, "reduced h=":h, "n=":n;
|
||||
quit "reduced args violate the rule: 0 < h < 2^n";
|
||||
}
|
||||
|
||||
@@ -598,8 +650,8 @@ gen_u2(h, n, v1)
|
||||
* See the function gen_u2() for details.
|
||||
*
|
||||
* input:
|
||||
* h - h as in h*2^n-1
|
||||
* n - n as in h*2^n-1
|
||||
* h - h as in h*2^n-1 (must be >= 1)
|
||||
* n - n as in h*2^n-1 (must be >= 1)
|
||||
* v1 - gen_v1(h,n) (see function below)
|
||||
*
|
||||
* returns:
|
||||
@@ -637,9 +689,9 @@ gen_u0(h, n, v1)
|
||||
* x > 2
|
||||
*
|
||||
* input:
|
||||
* x - potential v(1) value
|
||||
* h - h as in h*2^n-1
|
||||
* n - n as in h*2^n-1
|
||||
* x potential v(1) value
|
||||
* h h as in h*2^n-1 (h must be odd >= 1)
|
||||
* n n as in h*2^n-1 (must be >= 1)
|
||||
*
|
||||
* returns:
|
||||
* 1 if v(1) == x for h*2^n-1
|
||||
@@ -656,9 +708,18 @@ rodseth_xhn(x, h, n)
|
||||
if (!isint(h)) {
|
||||
quit "bad args: h must be an integer";
|
||||
}
|
||||
if (iseven(h)) {
|
||||
quit "bad args: h must be an odd integer";
|
||||
}
|
||||
if (h < 1) {
|
||||
quit "bad args: h must be an integer >= 1";
|
||||
}
|
||||
if (!isint(n)) {
|
||||
quit "bad args: n must be an integer";
|
||||
}
|
||||
if (n < 1) {
|
||||
quit "bad args: n must be an integer >= 1";
|
||||
}
|
||||
if (!isint(x)) {
|
||||
quit "bad args: x must be an integer";
|
||||
}
|
||||
@@ -702,9 +763,9 @@ rodseth_xhn(x, h, n)
|
||||
* We can show that X > 2. See the comments in the rodseth_xhn(x,h,n) above.
|
||||
*
|
||||
* Some values of X satisfy more often than others. For example a large sample
|
||||
* of odd h, h multiple of 3 and large n (some around 1e4, some near 1e6, others
|
||||
* near 3e7) where the sample size was 66 973 365, here is the count of the
|
||||
* smallest value of X that satisfies conditions in Ref4, condition 1:
|
||||
* of h*2^n-1, h odd multiple of 3, and large n (some around 1e4, some near 1e6,
|
||||
* others near 3e7) where the sample size was 66 973 365, here is the count of
|
||||
* the smallest value of X that satisfies conditions in Ref4, condition 1:
|
||||
*
|
||||
* count X
|
||||
* ----------
|
||||
@@ -762,45 +823,161 @@ rodseth_xhn(x, h, n)
|
||||
* 1 161
|
||||
* 1 155
|
||||
*
|
||||
* It is important that we select the smallest possible v(1). While testing
|
||||
* various values of X for V(1) is fast, using larger than necessary values
|
||||
* of V(1) of can slow down calculating V(h).
|
||||
*
|
||||
* The above distribution was found to hold fairly well over many values of
|
||||
* odd h that are a multiple of 3 and for many values of n where h < 2^n.
|
||||
* odd h that are also a multiple of 3 and for many values of n where h < 2^n.
|
||||
*
|
||||
* For example for in a sample size of 1000000 numbers of the form h*2^n-1
|
||||
* where h is an odd multiple of 3, 12996351 <= h <= 13002351,
|
||||
* 4331116 <= n <= 4332116, these are the smallest v(1) values that were found:
|
||||
*
|
||||
* smallest percentage
|
||||
* v(1) used
|
||||
* -------- ---------
|
||||
* 3 40.0000 %
|
||||
* 5 25.6833 %
|
||||
* 9 11.6924 %
|
||||
* 11 10.4528 %
|
||||
* 15 4.8048 %
|
||||
* 17 2.3458 %
|
||||
* 21 1.3734 %
|
||||
* 29 1.0527 %
|
||||
* 20 0.8595 %
|
||||
* 27 0.5758 %
|
||||
* 35 0.4420 %
|
||||
* 36 0.2433 %
|
||||
* 39 0.1779 %
|
||||
* 41 0.0885 %
|
||||
* 45 0.0571 %
|
||||
* 32 0.0337 %
|
||||
* 51 0.0289 %
|
||||
* 44 0.0205 %
|
||||
* 49 0.0176 %
|
||||
* 56 0.0137 %
|
||||
* 59 0.0108 %
|
||||
* 57 0.0053 %
|
||||
* 65 0.0047 %
|
||||
* 55 0.0045 %
|
||||
* 69 0.0031 %
|
||||
* 71 0.0024 %
|
||||
* 66 0.0011 %
|
||||
* 95 0.0008 %
|
||||
* 81 0.0008 %
|
||||
* 77 0.0006 %
|
||||
* 72 0.0005 %
|
||||
* 99 0.0004 %
|
||||
* 80 0.0003 %
|
||||
* 74 0.0003 %
|
||||
* 84 0.0002 %
|
||||
* 67 0.0002 %
|
||||
* 87 0.0001 %
|
||||
* 104 0.0001 %
|
||||
* 129 0.0001 %
|
||||
*
|
||||
* However, a case can be made for considering only odd values for v(1)
|
||||
* candidates. When h * 2^n-1 is prime and h is an odd multiple of 3,
|
||||
* a smallest v(1) that is even is extremely rate. Of the list of 146553
|
||||
* known primes of the form h*2^n-1 when h is an odd a multiple of 3,
|
||||
* none has an smallest v(1) that was even.
|
||||
*
|
||||
* See:
|
||||
*
|
||||
* https://github.com/arcetri/verified-prime
|
||||
*
|
||||
* for that list of 146553 known primes of the form h*2^n-1.
|
||||
*
|
||||
* That same example for in a sample size of 1000000 numbers of the
|
||||
* form h*2^n-1 where h is an odd multiple of 3, 12996351 <= h <= 13002351,
|
||||
* 4331116 <= n <= 4332116, these are the smallest odd v(1) values that were
|
||||
* found:
|
||||
*
|
||||
* smallest percentage
|
||||
* odd v(1) used
|
||||
* -------- ---------
|
||||
* 3 40.0000 %
|
||||
* 5 25.6833 %
|
||||
* 9 11.6924 %
|
||||
* 11 10.4528 %
|
||||
* 15 4.8048 %
|
||||
* 17 2.3458 %
|
||||
* 21 1.6568 %
|
||||
* 29 1.6174 %
|
||||
* 35 0.4529 %
|
||||
* 27 0.3546 %
|
||||
* 39 0.3470 %
|
||||
* 41 0.2159 %
|
||||
* 45 0.1173 %
|
||||
* 31 0.0661 %
|
||||
* 51 0.0619 %
|
||||
* 55 0.0419 %
|
||||
* 59 0.0250 %
|
||||
* 49 0.0170 %
|
||||
* 69 0.0110 %
|
||||
* 65 0.0098 %
|
||||
* 71 0.0078 %
|
||||
* 85 0.0048 %
|
||||
* 81 0.0044 %
|
||||
* 95 0.0038 %
|
||||
* 99 0.0021 %
|
||||
* 125 0.0009 %
|
||||
* 57 0.0007 %
|
||||
* 111 0.0005 %
|
||||
* 77 0.0003 %
|
||||
* 165 0.0003 %
|
||||
* 155 0.0002 %
|
||||
* 129 0.0002 %
|
||||
* 101 0.0002 %
|
||||
* 53 0.0001 %
|
||||
*
|
||||
* Moreover when evaluating odd candidates for v(1), one may cache Jacobi
|
||||
* symbol evaluations to reduce the number of Jacobi symbol evaluations to
|
||||
* a minimum. For example, if one tests 5 and finds that the 2nd case fails:
|
||||
*
|
||||
* jacobi(5+2, h*2^n-1) != -1
|
||||
*
|
||||
* Then if one is later testing 9, the Jacobi symbol value for the first
|
||||
* 1st case:
|
||||
*
|
||||
* jacobi(7-2, h*2^n-1)
|
||||
*
|
||||
* is already known.
|
||||
*
|
||||
* Without Jacobi symbol value caching, it requires on average
|
||||
* 4.851377 Jacobi symbol evaluations. With Jacobi symbol value caching
|
||||
* cacheing, an average of 4.348820 Jacobi symbol evaluations is needed.
|
||||
*
|
||||
* Given this information, when odd h is a multiple of 3 we try, in order,
|
||||
* these values of X:
|
||||
* these odd values of X:
|
||||
*
|
||||
* 3, 5, 9, 11, 15, 17, 21, 29, 20, 27, 35, 36, 39, 41, 45, 32, 51, 44,
|
||||
* 56, 49, 59, 57, 65, 55, 69, 71, 77, 81, 66, 95, 80, 67, 84, 99, 72,
|
||||
* 74, 87, 90, 104, 101, 105, 109, 116, 111, 92
|
||||
* 3, 5, 9, 11, 15, 17, 21, 29, 27, 35, 39, 41, 31, 45, 51, 55, 49, 59,
|
||||
* 69, 65, 71, 57, 85, 81, 95, 99, 77, 53, 67, 125, 111, 105, 87, 129,
|
||||
* 101, 83, 165, 155, 149, 141, 121, 109
|
||||
*
|
||||
* And stop on the first value of X where:
|
||||
*
|
||||
* jacobi(X-2, h*2^n-1) == 1
|
||||
* jacobi(X+2, h*2^n-1) == -1
|
||||
*
|
||||
* If no value in that list works, we start simple search starting with X = 120
|
||||
* and incrementing by 1 until a value of X is found.
|
||||
* Less than 1 case out of 1000000 will not be satisfied by the above list.
|
||||
* If no value in that list works, we start simple search starting with X = 167
|
||||
* and incrementing by 2 until a value of X is found.
|
||||
*
|
||||
* The x_tbl[] matrix contains those common values of X to try in order.
|
||||
* If all x_tbl_len fail to satisfy Ref4 condition 1, then we begin a
|
||||
* linear search at next_x until we find a proper X value.
|
||||
*
|
||||
* IMPORTANT NOTE: Using this table will not find the smallest possible v(1)
|
||||
* for a given h and n. This is not a problem because using
|
||||
* a larger value of v(1) does not impact the primality test.
|
||||
* Furthermore after lucas(h, n) generates a few u(n) terms,
|
||||
* the values will wrap (due to computing mod h*2^n-1).
|
||||
* Finally on average, about 1/4 of the values of X work as
|
||||
* v(1) for a given n when h is a multiple of 3. Skipping
|
||||
* rarely used v(1) will not doom gen_v1() to a long search.
|
||||
* The x_tbl[] matrix contains those values of X to try in order.
|
||||
* If all x_tbl_len fail to satisfy Ref4 condition 1 (this happens less than
|
||||
* 1 in 1000000 cases), then we begin a linear search of odd values starting at
|
||||
* next_x until we find a proper X value.
|
||||
*/
|
||||
x_tbl_len = 45;
|
||||
x_tbl_len = 42;
|
||||
mat x_tbl[x_tbl_len];
|
||||
x_tbl = {
|
||||
3, 5, 9, 11, 15, 17, 21, 29, 20, 27, 35, 36, 39, 41, 45, 32, 51, 44,
|
||||
56, 49, 59, 57, 65, 55, 69, 71, 77, 81, 66, 95, 80, 67, 84, 99, 72,
|
||||
74, 87, 90, 104, 101, 105, 109, 116, 111, 92
|
||||
3, 5, 9, 11, 15, 17, 21, 29, 27, 35, 39, 41, 31, 45, 51, 55, 49, 59,
|
||||
69, 65, 71, 57, 85, 81, 95, 99, 77, 53, 67, 125, 111, 105, 87, 129,
|
||||
101, 83, 165, 155, 149, 141, 121, 109
|
||||
};
|
||||
next_x = 120;
|
||||
next_x = 167; /* must be 2 more than the largest value in x_tbl[] */
|
||||
|
||||
/*
|
||||
* gen_v1 - compute the v(1) for a given h*2^n-1 if we can
|
||||
@@ -840,7 +1017,13 @@ next_x = 120;
|
||||
* u(2) = alpha^h + alpha^(-h) (NOTE: some call this u(2))
|
||||
* r = abs(2^2 - 1^2*3) = 1
|
||||
*
|
||||
* and the bottom of Ref1, page 872 states:
|
||||
* where these values work for Case 1: (h mod 3 != 0)
|
||||
*
|
||||
* a = 1
|
||||
* b = 2
|
||||
* D = 1
|
||||
*
|
||||
* Now at the bottom of Ref1, page 872 states:
|
||||
*
|
||||
* v(x) = alpha^x + alpha^(-x)
|
||||
*
|
||||
@@ -852,12 +1035,22 @@ next_x = 120;
|
||||
*
|
||||
* u(2) = v(h) (NOTE: some call this u(2))
|
||||
*
|
||||
* so we simply return
|
||||
* so we can always return
|
||||
*
|
||||
* v(1) = alpha^1 + alpha^(-1)
|
||||
* = (2+sqrt(3)) + (2-sqrt(3))
|
||||
* = 4
|
||||
*
|
||||
* In 40% of the cases when h is not a multiple of 3, 3 is a valid value
|
||||
* for v(1). We can test if 3 is a valid value for v(1) in this case:
|
||||
*
|
||||
* if jacobi(1, h*2^n-1) == 1 and jacobi(5, h*2^n-1) == -1, then
|
||||
* v(1) = 3
|
||||
* else
|
||||
* v(1) = 4
|
||||
*
|
||||
* NOTE: The above "if then else" works only of h is not a multiple of 3.
|
||||
*
|
||||
***
|
||||
*
|
||||
* Case 2: (h mod 3 == 0)
|
||||
@@ -949,17 +1142,22 @@ next_x = 120;
|
||||
***
|
||||
*
|
||||
* input:
|
||||
* h h as in h*2^n-1
|
||||
* n n as in h*2^n-1
|
||||
* h h as in h*2^n-1 (h must be odd >= 1)
|
||||
* n n as in h*2^n-1 (must be >= 1)
|
||||
*
|
||||
* output:
|
||||
* returns v(1), or -1 is there is no quick way
|
||||
* returns v(1), or
|
||||
* -1 when h*2^n-1 is a multiple of 3
|
||||
*/
|
||||
define
|
||||
gen_v1(h, n)
|
||||
{
|
||||
local x; /* potential v(1) to test */
|
||||
local i; /* x_tbl index */
|
||||
local v1m2; /* X-2 1st case */
|
||||
local v1p2; /* X+2 2nd case */
|
||||
local testval; /* h*2^n-1 - value we are testing if prime */
|
||||
local mat cached_v1[next_x]; /* cached Jacobi symbol values or 0 */
|
||||
|
||||
/*
|
||||
* check arg types
|
||||
@@ -967,58 +1165,131 @@ gen_v1(h, n)
|
||||
if (!isint(h)) {
|
||||
quit "bad args: h must be an integer";
|
||||
}
|
||||
if (iseven(h)) {
|
||||
quit "bad args: h must be an odd integer";
|
||||
}
|
||||
if (h < 1) {
|
||||
quit "bad args: h must be an integer >= 1";
|
||||
}
|
||||
if (!isint(n)) {
|
||||
quit "bad args: n must be an integer";
|
||||
}
|
||||
if (n < 1) {
|
||||
quit "bad args: n must be an integer >= 1";
|
||||
}
|
||||
|
||||
/*
|
||||
* pretest: Verify that h*2^n-1 is not a multiple of 3
|
||||
*/
|
||||
if (((h % 3 == 1) && (n % 2 == 0)) || ((h % 3 == 2) && (n % 2 == 1))) {
|
||||
/* no need to test h*2^n-1, it is not prime */
|
||||
return -1;
|
||||
}
|
||||
|
||||
/*
|
||||
* Common Mersenne number case:
|
||||
*
|
||||
* For Mersenne numbers:
|
||||
*
|
||||
* 2^n-1
|
||||
*
|
||||
* we can use, 40% of the time, v(1) == 3. However nearly all code that
|
||||
* implements the Lucas-Lehmer test uses v(1) == 4. Whenever for
|
||||
* h != 0 mod 3, and particular the Mersenne number case of when h == 1:
|
||||
*
|
||||
* 1*2^n-1
|
||||
*
|
||||
* v(1) == 4 always works. For this reason, we return 4 when h == 1.
|
||||
*/
|
||||
if (h == 1) {
|
||||
/* v(1) == 4 always works for the Mersenne number case */
|
||||
return 4;
|
||||
}
|
||||
|
||||
/*
|
||||
* check for Case 1: (h mod 3 != 0)
|
||||
*/
|
||||
if (h % 3 != 0) {
|
||||
/* v(1) is easy to compute */
|
||||
return 4;
|
||||
if (rodseth_xhn(3, h, n) == 1) {
|
||||
/* 40% of the time, 3 works when h mod 3 != 0 */
|
||||
return 3;
|
||||
} else {
|
||||
/* otherwise 4 always works when h mod 3 != 0 */
|
||||
return 4;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* What follow is Case 2: (h mod 3 == 0)
|
||||
*/
|
||||
|
||||
/*
|
||||
* clear cache
|
||||
*/
|
||||
matfill(cached_v1, 0);
|
||||
|
||||
/*
|
||||
* We will look for x that satisfies conditions in Ref4, condition 1:
|
||||
*
|
||||
* jacobi(X-2, h*2^n-1) == 1 part 1
|
||||
* jacobi(X+2, h*2^n-1) == -1 part 2
|
||||
*
|
||||
* NOTE: If we wanted to be super optimal, we would cache
|
||||
* jacobi(X+2, h*2^n-1) that that when we increment X
|
||||
* to the next odd value, the now jacobi(X-2, h*2^n-1)
|
||||
* does not need to be re-evaluated.
|
||||
*/
|
||||
testval = h*2^n-1;
|
||||
for (i=0; i < x_tbl_len; ++i) {
|
||||
|
||||
/*
|
||||
* test Ref4 condition 1:
|
||||
* obtain the next test candidate
|
||||
*/
|
||||
x = x_tbl[i];
|
||||
if (rodseth_xhn(x, h, n) == 1) {
|
||||
|
||||
/*
|
||||
* found a x that satisfies Ref4 condition 1
|
||||
*/
|
||||
ldebug("gen_v1", "h= " + str(h) + " n= " + str(n) +
|
||||
" v1= " + str(x) + " using tbl[ " +
|
||||
str(i) + " ]");
|
||||
return x;
|
||||
/*
|
||||
* Check x for condition 1 part 1
|
||||
*
|
||||
* jacobi(x-2, h*2^n-1) == 1
|
||||
*/
|
||||
v1m2 = x-2;
|
||||
if (cached_v1[v1m2] == 0) {
|
||||
cached_v1[v1m2] = jacobi(v1m2, testval);
|
||||
}
|
||||
if (cached_v1[v1m2] != 1) {
|
||||
continue;
|
||||
}
|
||||
|
||||
/*
|
||||
* Check x for condition 1 part 2
|
||||
*
|
||||
* jacobi(x+2, h*2^n-1) == -1
|
||||
*/
|
||||
v1p2 = x+2;
|
||||
if (cached_v1[v1p2] == 0) {
|
||||
cached_v1[v1p2] = jacobi(v1p2, testval);
|
||||
}
|
||||
if (cached_v1[v1p2] != -1) {
|
||||
continue;
|
||||
}
|
||||
|
||||
/*
|
||||
* found a x that satisfies Ref4 condition 1
|
||||
*/
|
||||
ldebug("gen_v1", "h= " + str(h) + " n= " + str(n) +
|
||||
" v1= " + str(x) + " using tbl[ " +
|
||||
str(i) + " ]");
|
||||
return x;
|
||||
}
|
||||
|
||||
/*
|
||||
* We are in that rare case (about 1 in 2 300 000) where none of the
|
||||
* We are in that rare case (less than 1 in 1 000 000) where none of the
|
||||
* common X values satisfy Ref4 condition 1. We start a linear search
|
||||
* at next_x from here on.
|
||||
*
|
||||
* However, we also need to keep in mind that when x+2 >= 257, we
|
||||
* need to verify that gcd(x-2, h*2^n-1) == 1 and
|
||||
* and to verify that gcd(x+2, h*2^n-1) == 1.
|
||||
* of odd values at next_x from here on.
|
||||
*/
|
||||
x = next_x;
|
||||
while (rodseth_xhn(x, h, n) != 1) {
|
||||
++x;
|
||||
x += 2;
|
||||
}
|
||||
/* finally found a v(1) value */
|
||||
ldebug("gen_v1", "h= " + str(h) + " n= " + str(n) +
|
||||
@@ -1143,7 +1414,13 @@ legacy_d_qval[7] = 19; legacy_v1_qval[7] = 74; /* a=38 b=1 r=2 */
|
||||
* u(2) = alpha^h + alpha^(-h)
|
||||
* r = abs(2^2 - 1^2*3) = 1
|
||||
*
|
||||
* and the bottom of Ref1, page 872 states:
|
||||
* where these values work for Case 1: (h mod 3 != 0)
|
||||
*
|
||||
* a = 1
|
||||
* b = 2
|
||||
* D = 1
|
||||
*
|
||||
* Now at the bottom of Ref1, page 872 states:
|
||||
*
|
||||
* v(x) = alpha^x + alpha^(-x)
|
||||
*
|
||||
@@ -1444,8 +1721,8 @@ legacy_d_qval[7] = 19; legacy_v1_qval[7] = 74; /* a=38 b=1 r=2 */
|
||||
***
|
||||
*
|
||||
* input:
|
||||
* h h as in h*2^n-1
|
||||
* n n as in h*2^n-1
|
||||
* h h as in h*2^n-1 (must be >= 1)
|
||||
* n n as in h*2^n-1 (must be >= 1)
|
||||
*
|
||||
* output:
|
||||
* returns v(1), or -1 is there is no quick way
|
||||
@@ -1457,6 +1734,22 @@ legacy_gen_v1(h, n)
|
||||
local val_mod; /* h*2^n-1 mod 'D' */
|
||||
local i;
|
||||
|
||||
/*
|
||||
* check arg types
|
||||
*/
|
||||
if (!isint(h)) {
|
||||
quit "bad args: h must be an integer";
|
||||
}
|
||||
if (h < 1) {
|
||||
quit "bad args: h must be an integer >= 1";
|
||||
}
|
||||
if (!isint(n)) {
|
||||
quit "bad args: n must be an integer";
|
||||
}
|
||||
if (n < 1) {
|
||||
quit "bad args: n must be an integer >= 1";
|
||||
}
|
||||
|
||||
/*
|
||||
* check for case 1
|
||||
*/
|
||||
|
@@ -1,7 +1,7 @@
|
||||
/*
|
||||
* lucas_chk - test all primes of the form h*2^n-1, 1<=h<200 and n <= high_n
|
||||
*
|
||||
* Copyright (C) 1999 Landon Curt Noll
|
||||
* Copyright (C) 1999,2021 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
|
||||
@@ -17,10 +17,6 @@
|
||||
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* @(#) $Revision: 30.1 $
|
||||
* @(#) $Id: lucas_chk.cal,v 30.1 2007/03/16 11:09:54 chongo Exp $
|
||||
* @(#) $Source: /usr/local/src/bin/calc/cal/RCS/lucas_chk.cal,v $
|
||||
*
|
||||
* Under source code control: 1991/01/11 05:41:43
|
||||
* File existed as early as: 1991
|
||||
*
|
||||
@@ -307,7 +303,7 @@ read -once "lucas.cal";
|
||||
* [quiet] if given and != 0, then do not print individual test results
|
||||
*
|
||||
* returns:
|
||||
* 1 all is ok
|
||||
* 1 all is OK
|
||||
* 0 something went wrong
|
||||
*/
|
||||
define
|
||||
|
@@ -19,10 +19,6 @@
|
||||
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* @(#) $Revision: 30.1 $
|
||||
* @(#) $Id: mersenne.cal,v 30.1 2007/03/16 11:09:54 chongo Exp $
|
||||
* @(#) $Source: /usr/local/src/bin/calc/cal/RCS/mersenne.cal,v $
|
||||
*
|
||||
* Under source code control: 1991/05/22 21:56:36
|
||||
* File existed as early as: 1991
|
||||
*
|
||||
|
@@ -1,7 +1,7 @@
|
||||
/*
|
||||
* mfactor - return the lowest factor of 2^n-1, for n > 0
|
||||
*
|
||||
* Copyright (C) 1999 Landon Curt Noll
|
||||
* Copyright (C) 1999,2021 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
|
||||
@@ -17,10 +17,6 @@
|
||||
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* @(#) $Revision: 30.1 $
|
||||
* @(#) $Id: mfactor.cal,v 30.1 2007/03/16 11:09:54 chongo Exp $
|
||||
* @(#) $Source: /usr/local/src/bin/calc/cal/RCS/mfactor.cal,v $
|
||||
*
|
||||
* Under source code control: 1996/07/06 06:09:40
|
||||
* File existed as early as: 1996
|
||||
*
|
||||
@@ -83,7 +79,7 @@
|
||||
* hindx = 0;
|
||||
* } while (test_factor < some_limit);
|
||||
*
|
||||
* The test, mfactor(67, 1, 10000) took on an 200 Mhz r4k (user CPU seconds):
|
||||
* The test, mfactor(67, 1, 10000) took on an 200 MHz r4k (user CPU seconds):
|
||||
*
|
||||
* 210.83 (prior to use of hset[])
|
||||
* 78.35 (hset[] for p_elim = 7)
|
||||
@@ -103,7 +99,7 @@
|
||||
* 57.78 (hset[] for p_elim = 17)
|
||||
* p_elim == 19 rejected because of memory size
|
||||
*
|
||||
* The p_elim == 17 overhead takes ~3 minutes on an 200 Mhz r4k CPU and
|
||||
* The p_elim == 17 overhead takes ~3 minutes on an 200 MHz r4k CPU and
|
||||
* requires about ~13 Megs of memory. The p_elim == 13 overhead
|
||||
* takes about 3 seconds and requires ~1.5 Megs of memory.
|
||||
*
|
||||
@@ -260,7 +256,7 @@ define mfactor(n, start_k, rept_loop, p_elim)
|
||||
return q;
|
||||
} else {
|
||||
/* report this loop */
|
||||
printf("at 2*%d*%d+1, cpu: %f\n",
|
||||
printf("at 2*%d*%d+1, CPU: %f\n",
|
||||
(q-1)/(2*n), n, usertime());
|
||||
fflush(files(1));
|
||||
loop = 0;
|
||||
@@ -273,14 +269,14 @@ define mfactor(n, start_k, rept_loop, p_elim)
|
||||
*/
|
||||
if (rept_loop <= ++loop) {
|
||||
/* report this loop */
|
||||
printf("at 2*%d*%d+1, cpu: %f\n",
|
||||
printf("at 2*%d*%d+1, CPU: %f\n",
|
||||
(q-1)/(2*n), n, usertime());
|
||||
fflush(files(1));
|
||||
loop = 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* skip if divisable by a prime <= 449
|
||||
* skip if divisible by a prime <= 449
|
||||
*
|
||||
* The value 281 was determined by timing loops
|
||||
* which found that 281 was at or near the
|
||||
@@ -289,7 +285,7 @@ define mfactor(n, start_k, rept_loop, p_elim)
|
||||
* The addition of the do { ... } while (factor(q, 449)>1);
|
||||
* loop reduced the factoring loop time (36504 k values with
|
||||
* the hset[] initialization time removed) from 25.69 sec to
|
||||
* 15.62 sec of CPU time on a 200Mhz r4k.
|
||||
* 15.62 sec of CPU time on a 200MHz r4k.
|
||||
*/
|
||||
do {
|
||||
/*
|
||||
|
@@ -17,10 +17,6 @@
|
||||
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* @(#) $Revision: 30.1 $
|
||||
* @(#) $Id: mod.cal,v 30.1 2007/03/16 11:09:54 chongo Exp $
|
||||
* @(#) $Source: /usr/local/src/bin/calc/cal/RCS/mod.cal,v $
|
||||
*
|
||||
* Under source code control: 1990/02/15 01:50:34
|
||||
* File existed as early as: before 1990
|
||||
*
|
||||
|
@@ -1,7 +1,7 @@
|
||||
/*
|
||||
* natnumset - functions for sets of natural numbers not exceeding a fixed bound
|
||||
*
|
||||
* Copyright (C) 1999 Ernest Bowen
|
||||
* Copyright (C) 1999,2021 Ernest Bowen
|
||||
*
|
||||
* Calc is open software; you can redistribute it and/or modify it under
|
||||
* the terms of the version 2.1 of the GNU Lesser General Public License
|
||||
@@ -17,10 +17,6 @@
|
||||
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* @(#) $Revision: 30.1 $
|
||||
* @(#) $Id: natnumset.cal,v 30.1 2007/03/16 11:09:54 chongo Exp $
|
||||
* @(#) $Source: /usr/local/src/bin/calc/cal/RCS/natnumset.cal,v $
|
||||
*
|
||||
* Under source code control: 1997/09/07 23:53:51
|
||||
* File existed as early as: 1997
|
||||
*
|
||||
@@ -80,7 +76,7 @@
|
||||
* A \ B = set difference, integers in A but not in B
|
||||
*
|
||||
* ~A = complement of A, integers not in A
|
||||
* #A = number ofintegers in A
|
||||
* #A = number of integers in A
|
||||
* !A = 1 or 0 according as A is empty or not empty
|
||||
* +A = sum of the members of A
|
||||
*
|
||||
@@ -104,7 +100,7 @@
|
||||
* A >= B = (B <= A)
|
||||
* A > B = (B < A)
|
||||
*
|
||||
* Expresssions may be formed from the above "arithmetic" operations in
|
||||
* Expressions may be formed from the above "arithmetic" operations in
|
||||
* the usual way, with parentheses for variations from the usual precedence
|
||||
* rules. For example
|
||||
*
|
||||
|
@@ -1,7 +1,7 @@
|
||||
/*
|
||||
* pell - solve Pell's equation
|
||||
*
|
||||
* Copyright (C) 1999 David I. Bell
|
||||
* Copyright (C) 1999,2021 David I. Bell
|
||||
*
|
||||
* 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
|
||||
@@ -17,10 +17,6 @@
|
||||
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* @(#) $Revision: 30.1 $
|
||||
* @(#) $Id: pell.cal,v 30.1 2007/03/16 11:09:54 chongo Exp $
|
||||
* @(#) $Source: /usr/local/src/bin/calc/cal/RCS/pell.cal,v $
|
||||
*
|
||||
* Under source code control: 1990/02/15 01:50:34
|
||||
* File existed as early as: before 1990
|
||||
*
|
||||
@@ -29,7 +25,7 @@
|
||||
|
||||
/*
|
||||
* Solve Pell's equation; Returns the solution X to: X^2 - D * Y^2 = 1.
|
||||
* Type the solution to pells equation for a particular D.
|
||||
* Type the solution to Pell's equation for a particular D.
|
||||
*/
|
||||
|
||||
|
||||
|
@@ -17,10 +17,6 @@
|
||||
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* @(#) $Revision: 30.1 $
|
||||
* @(#) $Id: pi.cal,v 30.1 2007/03/16 11:09:54 chongo Exp $
|
||||
* @(#) $Source: /usr/local/src/bin/calc/cal/RCS/pi.cal,v $
|
||||
*
|
||||
* Under source code control: 1991/05/22 21:56:37
|
||||
* File existed as early as: 1991
|
||||
*
|
||||
|
@@ -17,10 +17,6 @@
|
||||
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* @(#) $Revision: 30.1 $
|
||||
* @(#) $Id: pix.cal,v 30.1 2007/03/16 11:09:54 chongo Exp $
|
||||
* @(#) $Source: /usr/local/src/bin/calc/cal/RCS/pix.cal,v $
|
||||
*
|
||||
* Under source code control: 1996/07/09 03:14:14
|
||||
* File existed as early as: 1996
|
||||
*
|
||||
|
@@ -17,10 +17,6 @@
|
||||
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* @(#) $Revision: 30.1 $
|
||||
* @(#) $Id: pollard.cal,v 30.1 2007/03/16 11:09:54 chongo Exp $
|
||||
* @(#) $Source: /usr/local/src/bin/calc/cal/RCS/pollard.cal,v $
|
||||
*
|
||||
* Under source code control: 1991/05/22 21:56:37
|
||||
* File existed as early as: 1991
|
||||
*
|
||||
|
10
cal/poly.cal
10
cal/poly.cal
@@ -1,7 +1,7 @@
|
||||
/*
|
||||
* poly - calculate with polynomials of one variable
|
||||
*
|
||||
* Copyright (C) 1999 Ernest Bowen
|
||||
* Copyright (C) 1999,2021 Ernest Bowen
|
||||
*
|
||||
* Calc is open software; you can redistribute it and/or modify it under
|
||||
* the terms of the version 2.1 of the GNU Lesser General Public License
|
||||
@@ -17,10 +17,6 @@
|
||||
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* @(#) $Revision: 30.1 $
|
||||
* @(#) $Id: poly.cal,v 30.1 2007/03/16 11:09:54 chongo Exp $
|
||||
* @(#) $Source: /usr/local/src/bin/calc/cal/RCS/poly.cal,v $
|
||||
*
|
||||
* Under source code control: 1990/02/15 01:50:35
|
||||
* File existed as early as: before 1990
|
||||
*
|
||||
@@ -39,7 +35,7 @@
|
||||
* variable has only one name. For some purposes, a name like
|
||||
* "sin(t)" or "(a + b)" or "\lambda" might be useful;
|
||||
* names like "*" or "-27" are legal but might give expressions
|
||||
* that are difficult to intepret.
|
||||
* that are difficult to interpret.
|
||||
*
|
||||
* Polynomial expressions may be constructed from numbers and the
|
||||
* independent variable and other polynomials by the algebraic
|
||||
@@ -47,7 +43,7 @@
|
||||
* The operations // and % are defined to have the quotient and
|
||||
* remainder meanings as usually defined for polynomials.
|
||||
*
|
||||
* When polynomials are assigned to idenfifiers, it is convenient to
|
||||
* When polynomials are assigned to identifiers, it is convenient to
|
||||
* think of the polynomials as values. For example, p = (x - 1)^2
|
||||
* assigns to p a polynomial value in the same way as q = (7 - 1)^2
|
||||
* would assign to q a number value. As with number expressions
|
||||
|
@@ -1,7 +1,7 @@
|
||||
/*
|
||||
* prompt - eemonstration of some uses of prompt() and eval()
|
||||
* prompt - demonstration of some uses of prompt() and eval()
|
||||
*
|
||||
* Copyright (C) 1999 Ernest Bowen
|
||||
* Copyright (C) 1999,2021 Ernest Bowen
|
||||
*
|
||||
* Calc is open software; you can redistribute it and/or modify it under
|
||||
* the terms of the version 2.1 of the GNU Lesser General Public License
|
||||
@@ -17,10 +17,6 @@
|
||||
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* @(#) $Revision: 30.1 $
|
||||
* @(#) $Id: prompt.cal,v 30.1 2007/03/16 11:09:54 chongo Exp $
|
||||
* @(#) $Source: /usr/local/src/bin/calc/cal/RCS/prompt.cal,v $
|
||||
*
|
||||
* Under source code control: 1995/12/18 04:43:25
|
||||
* File existed as early as: 1995
|
||||
*
|
||||
@@ -65,9 +61,9 @@
|
||||
* nothing to sum. The last line returns the value 3, i.e. the last
|
||||
* non-null value found for the expressions separated by semicolons,
|
||||
* so sum will be increased by 3 after the "print sum^2;" command
|
||||
* is executed. xxx The terminating semicolon is essential in the
|
||||
* is executed. XXX The terminating semicolon is essential in the
|
||||
* last two lines. A command like eval("print 7;") is acceptable to
|
||||
* calc but eval("print 7") causes an exit from calc. xxx)
|
||||
* calc but eval("print 7") causes an exit from calc. XXX)
|
||||
*
|
||||
* If the value returned is not a number (e.g. the name of a list or matrix,
|
||||
* or if the string has syntax errors as in "2 + ", in which case the
|
||||
@@ -79,7 +75,7 @@
|
||||
* "sin(x)", "x^2 + 3*x", "exp(x, 1e-5)".
|
||||
*
|
||||
* Values of the function so defined are returned for values of x
|
||||
* entered in reponse to the ? prompt. Operation is terminated by
|
||||
* entered in response to the ? prompt. Operation is terminated by
|
||||
* entering "end", "exit" or "quit".
|
||||
*/
|
||||
|
||||
|
@@ -17,10 +17,6 @@
|
||||
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* @(#) $Revision: 30.1 $
|
||||
* @(#) $Id: psqrt.cal,v 30.1 2007/03/16 11:09:54 chongo Exp $
|
||||
* @(#) $Source: /usr/local/src/bin/calc/cal/RCS/psqrt.cal,v $
|
||||
*
|
||||
* Under source code control: 1990/02/15 01:50:35
|
||||
* File existed as early as: before 1990
|
||||
*
|
||||
|
@@ -20,10 +20,6 @@
|
||||
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* @(#) $Revision: 30.1 $
|
||||
* @(#) $Id: qtime.cal,v 30.1 2007/03/16 11:09:54 chongo Exp $
|
||||
* @(#) $Source: /usr/local/src/bin/calc/cal/RCS/qtime.cal,v $
|
||||
*
|
||||
* Under source code control: 1999/10/13 04:10:33
|
||||
* File existed as early as: 1999
|
||||
*
|
||||
|
@@ -1,7 +1,7 @@
|
||||
/*
|
||||
* quat - alculate using quaternions of the form: a + bi + cj + dk
|
||||
* quat - calculate using quaternions of the form: a + bi + cj + dk
|
||||
*
|
||||
* Copyright (C) 1999 David I. Bell
|
||||
* Copyright (C) 1999,2021 David I. Bell
|
||||
*
|
||||
* 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
|
||||
@@ -17,10 +17,6 @@
|
||||
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* @(#) $Revision: 30.2 $
|
||||
* @(#) $Id: quat.cal,v 30.2 2013/08/11 08:41:38 chongo Exp $
|
||||
* @(#) $Source: /usr/local/src/bin/calc/cal/RCS/quat.cal,v $
|
||||
*
|
||||
* Under source code control: 1990/02/15 01:50:35
|
||||
* File existed as early as: before 1990
|
||||
*
|
||||
|
@@ -17,10 +17,6 @@
|
||||
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* @(#) $Revision: 30.1 $
|
||||
* @(#) $Id: randbitrun.cal,v 30.1 2007/03/16 11:09:54 chongo Exp $
|
||||
* @(#) $Source: /usr/local/src/bin/calc/cal/RCS/randbitrun.cal,v $
|
||||
*
|
||||
* Under source code control: 1995/02/13 03:43:11
|
||||
* File existed as early as: 1995
|
||||
*
|
||||
|
@@ -1,7 +1,7 @@
|
||||
/*
|
||||
* randmprime - generate a random prime of the form h*2^n-1
|
||||
*
|
||||
* Copyright (C) 1999 Landon Curt Noll
|
||||
* Copyright (C) 1999,2021 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
|
||||
@@ -17,10 +17,6 @@
|
||||
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* @(#) $Revision: 30.1 $
|
||||
* @(#) $Id: randmprime.cal,v 30.1 2007/03/16 11:09:54 chongo Exp $
|
||||
* @(#) $Source: /usr/local/src/bin/calc/cal/RCS/randmprime.cal,v $
|
||||
*
|
||||
* Under source code control: 1994/03/14 23:11:21
|
||||
* File existed as early as: 1994
|
||||
*
|
||||
@@ -49,9 +45,9 @@ randmprime(bits, seed, dbg)
|
||||
local n; /* n as in h*2^n-1 */
|
||||
local h; /* h as in h*2^n-1 */
|
||||
local plush; /* value added to h since the beginning */
|
||||
local init; /* initial cpu time */
|
||||
local start; /* cpu time before last test */
|
||||
local stop; /* cpu time afte last test */
|
||||
local init; /* initial CPU time */
|
||||
local start; /* CPU time before last test */
|
||||
local stop; /* CPU time after last test */
|
||||
local tmp; /* just a tmp place holder value */
|
||||
local ret; /* h*2^n-1 that is prime */
|
||||
|
||||
|
@@ -17,10 +17,6 @@
|
||||
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* @(#) $Revision: 30.1 $
|
||||
* @(#) $Id: randombitrun.cal,v 30.1 2007/03/16 11:09:54 chongo Exp $
|
||||
* @(#) $Source: /usr/local/src/bin/calc/cal/RCS/randombitrun.cal,v $
|
||||
*
|
||||
* Under source code control: 1995/02/13 03:43:11
|
||||
* File existed as early as: 1995
|
||||
*
|
||||
|
@@ -17,10 +17,6 @@
|
||||
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* @(#) $Revision: 30.1 $
|
||||
* @(#) $Id: randomrun.cal,v 30.1 2007/03/16 11:09:54 chongo Exp $
|
||||
* @(#) $Source: /usr/local/src/bin/calc/cal/RCS/randomrun.cal,v $
|
||||
*
|
||||
* Under source code control: 1997/02/19 03:35:59
|
||||
* File existed as early as: 1997
|
||||
*
|
||||
|
@@ -17,10 +17,6 @@
|
||||
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* @(#) $Revision: 30.1 $
|
||||
* @(#) $Id: randrun.cal,v 30.1 2007/03/16 11:09:54 chongo Exp $
|
||||
* @(#) $Source: /usr/local/src/bin/calc/cal/RCS/randrun.cal,v $
|
||||
*
|
||||
* Under source code control: 1995/02/12 20:00:06
|
||||
* File existed as early as: 1995
|
||||
*
|
||||
|
100
cal/regress.cal
100
cal/regress.cal
@@ -1,7 +1,7 @@
|
||||
/*
|
||||
* regress - calc regression and correctness test suite
|
||||
*
|
||||
* Copyright (C) 1999-2017 David I. Bell and Landon Curt Noll
|
||||
* Copyright (C) 1999-2017,2021 David I. Bell and Landon Curt Noll
|
||||
*
|
||||
* Calc is open software; you can redistribute it and/or modify it under
|
||||
* the terms of the version 2.1 of the GNU Lesser General Public License
|
||||
@@ -17,10 +17,6 @@
|
||||
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* @(#) $Revision: 30.14 $
|
||||
* @(#) $Id: regress.cal,v 30.14 2017/05/19 16:09:14 chongo Exp $
|
||||
* @(#) $Source: /usr/local/src/bin/calc-RHEL7/cal/RCS/regress.cal,v $
|
||||
*
|
||||
* Under source code control: 1990/02/15 01:50:36
|
||||
* File existed as early as: before 1990
|
||||
*
|
||||
@@ -47,7 +43,7 @@ global prob; /* libregress.cal problem counter */
|
||||
prob = 0; /* clear problem counter */
|
||||
|
||||
errcount(0),; /* clear error count */
|
||||
errmax(-1),; /* prevent errcount from abouting */
|
||||
errmax(-1),; /* prevent errcount from aborting */
|
||||
|
||||
global ecnt; /* expected value of errcount() */
|
||||
ecnt = 0; /* clear expected errcount() value */
|
||||
@@ -360,8 +356,18 @@ define test_arithmetic()
|
||||
vrfy(-16^-2 == -1/256, '447: -16^-2 == -1/256');
|
||||
vrfy(-7^2 == -49, '448: -7^2 == -49');
|
||||
vrfy(-3! == -6, '449: -3! == -6');
|
||||
vrfy(0^(0-0) == 1, '450: 0^(0-0) == 1');
|
||||
vrfy(0^(2-2) == 1, '451: 0^(2-2) == 1');
|
||||
vrfy(2^0 == 1, '452: 2^0 == 1');
|
||||
vrfy(2^(0-0) == 1, '453: 2^(0-0) == 1');
|
||||
vrfy(2^(2-2) == 1, '454: 2^(2-2) == 1');
|
||||
vrfy((2^23209-1)^0 == 1, '455: (2^23209-1)^0 == 1');
|
||||
vrfy((2^23209-1)^(0-0) == 1, '456: (2^23209-1)^(0-0) == 1');
|
||||
vrfy((2^23209-1)^(2-2) == 1, '457: (2^23209-1)^(2-2) == 1');
|
||||
vrfy((2^23209-1)^((2^23209-1)-(2^23209-1)) == 1,
|
||||
'458: (2^23209-1)^((2^23209-1)-(2^23209-1)) == 1');
|
||||
|
||||
print '450: Ending test_arithmetic';
|
||||
print '459: Ending test_arithmetic';
|
||||
}
|
||||
print '009: parsed test_arithmetic()';
|
||||
|
||||
@@ -457,7 +463,7 @@ define test_config()
|
||||
'539: config("more", ">> ") == ";; "');
|
||||
vrfy(config("all") == oldcfg, '540: config("all") == oldcfg');
|
||||
|
||||
/* restore the configation at the start of this function */
|
||||
/* restore the configuration at the start of this function */
|
||||
vrfy(config("all",callcfg) == oldcfg,
|
||||
'541: config("all",callcfg) == oldcfg');
|
||||
|
||||
@@ -3160,7 +3166,7 @@ print '047: parsed test_poly()';
|
||||
|
||||
|
||||
/*
|
||||
* test_det - more determinent testing
|
||||
* test_det - more determinant testing
|
||||
*/
|
||||
read -once "test3300";
|
||||
print '048: read -once test3300';
|
||||
@@ -3231,9 +3237,9 @@ define test_error()
|
||||
|
||||
print '3600: Beginning test_error';
|
||||
|
||||
/* bump ecnt up by 148 */
|
||||
ecnt += 148;
|
||||
print '3601: ecnt += 148';
|
||||
/* bump ecnt up by 156 */
|
||||
ecnt += 156;
|
||||
print '3601: ecnt += 156';
|
||||
|
||||
strx = "x";
|
||||
print '3602: strx = "x"';
|
||||
@@ -3422,11 +3428,15 @@ define test_error()
|
||||
n = 8191;
|
||||
print '3727: n = 8191';
|
||||
/* test 3728 removed due to non-portable strerror() output */
|
||||
vrfy(tan(2e9i) == error(10435), '3729: tan(2e9i) == error(10435)');
|
||||
vrfy(cot(2e9i) == error(10437), '3730: cot(2e9i) == error(10437)');
|
||||
vrfy(sec(2e9i) == error(10439), '3731: sec(2e9i) == error(10439)');
|
||||
vrfy(csc(2e9i) == error(10440), '3732: csc(2e9i) == error(10440)');
|
||||
|
||||
/* errmax and errcount should be bumped up the 148 errors above */
|
||||
vrfy(errcount() == ecnt, '3729: errcount() == ecnt');
|
||||
vrfy(errcount() == ecnt, '3733: errcount() == ecnt');
|
||||
|
||||
print '3730: Ending test_error';
|
||||
print '3734: Ending test_error';
|
||||
}
|
||||
print '054: parsed test_error()';
|
||||
|
||||
@@ -3473,7 +3483,7 @@ print '065: parsed test_param()';
|
||||
|
||||
|
||||
/*
|
||||
* test_noarg - test missing argment functionality
|
||||
* test_noarg - test missing argument functionality
|
||||
*/
|
||||
define test_noarg()
|
||||
{
|
||||
@@ -4106,38 +4116,46 @@ define test_strprintf()
|
||||
'4821: strprintf("%b", 27/29) == "0b11011/0b11101"');
|
||||
vrfy(strprintf("%e", 12345) == "~1.23e4",
|
||||
'4822: strprintf("%e", 12345) == "~1.23e4"');
|
||||
vrfy(strprintf("%g", .385) == "~.38",
|
||||
'4823: strprintf("%g", .385) == "~.38"');
|
||||
vrfy(strprintf("%g", 385) == "~3.8e2",
|
||||
'4824: strprintf("%g", 385) == "~3.8e2"');
|
||||
|
||||
/* mode tests with tilde == 0 */
|
||||
c = config("tilde", 0);
|
||||
print '4823: c = config("tilde", 0)';
|
||||
print '4825: c = config("tilde", 0)';
|
||||
vrfy(strprintf("%e", 12345) == "1.23e4",
|
||||
'4824: strprintf("%e", 12345) == "1.23e4"');
|
||||
'4826: strprintf("%e", 12345) == "1.23e4"');
|
||||
vrfy(strprintf("%.3e", 12345) == "1.234e4",
|
||||
'4825: strprintf("%.3e", 12345) == "1.234e4"');
|
||||
'4827: strprintf("%.3e", 12345) == "1.234e4"');
|
||||
vrfy(strprintf("%e", .00012345) == "1.23e-4",
|
||||
'4826: strprintf("%e", .00012345) == "1.23e-4"');
|
||||
'4828: strprintf("%e", .00012345) == "1.23e-4"');
|
||||
vrfy(strprintf("%d %d", 27) == "27 ",
|
||||
'4827: strprintf("%d %d", 27) == "27 "');
|
||||
'4829: strprintf("%d %d", 27) == "27 "');
|
||||
vrfy(strprintf("%d", 27, 29) == "27",
|
||||
'4828: strprintf("%d", 27, 29) == "27"');
|
||||
'4830: strprintf("%d", 27, 29) == "27"');
|
||||
vrfy(strprintf("%r = %f", 27/29, 27/29) == "27/29 = .93",
|
||||
'4829: strprintf("%r = %f", 27/29, 27/29) == "27/29 = .93"');
|
||||
'4831: strprintf("%r = %f", 27/29, 27/29) == "27/29 = .93"');
|
||||
vrfy(strprintf("%s", "abc") == "abc",
|
||||
'4830: strprintf("%s", "abc") == "abc"');
|
||||
'4832: strprintf("%s", "abc") == "abc"');
|
||||
vrfy(strprintf("%f", "abc") == "abc",
|
||||
'4831: strprintf("%f", "abc") == "abc"');
|
||||
'4833: strprintf("%f", "abc") == "abc"');
|
||||
vrfy(strprintf("%e", "abc") == "abc",
|
||||
'4832: strprintf("%e", "abc") == "abc"');
|
||||
'4834: strprintf("%e", "abc") == "abc"');
|
||||
vrfy(strprintf("%5s", "abc") == " abc",
|
||||
'4833: strprintf("%5s", "abc") == " abc"');
|
||||
'4835: strprintf("%5s", "abc") == " abc"');
|
||||
vrfy(strprintf("%-5s", "abc") == "abc ",
|
||||
'4834: strprintf("%-5s", "abc") == "abc "');
|
||||
'4836: strprintf("%-5s", "abc") == "abc "');
|
||||
vrfy(strprintf("%g", .385) == ".38",
|
||||
'4837: strprintf("%g", .385) == ".38"');
|
||||
vrfy(strprintf("%g", 385) == "3.8e2",
|
||||
'4838: strprintf("%g", 385) == "3.8e2"');
|
||||
|
||||
/* restore config */
|
||||
c = config("all", callcfg);
|
||||
print '4835: c = config("all", callcfg)';
|
||||
print '4839: c = config("all", callcfg)';
|
||||
|
||||
print '4836: Ending test_strprintf';
|
||||
print '4840: Ending test_strprintf';
|
||||
}
|
||||
print '088: parsed test_fileop()';
|
||||
|
||||
@@ -5175,7 +5193,7 @@ define test_size()
|
||||
'5715: sizeof(17^139 + 674)*2 == sizeof(q)');
|
||||
|
||||
/*
|
||||
* recipricals are the same size of their integer inverses
|
||||
* reciprocals are the same size of their integer inverses
|
||||
*/
|
||||
q = 1/13;
|
||||
print '5716: q = 1/13';
|
||||
@@ -5253,7 +5271,7 @@ define test_size()
|
||||
|
||||
/*
|
||||
* size of a matrix is the sum of the sizes of the elements
|
||||
* sizeof of a matrix is the sum of the sizeofs of the elements
|
||||
* sizeof of a matrix is the sum of the sizeof's of the elements
|
||||
*/
|
||||
mat m[] = {z,q,c};
|
||||
print '5752: mat m[] = {z,q,c}';
|
||||
@@ -5373,7 +5391,7 @@ define test_is()
|
||||
{
|
||||
local loc; /* unassigned local variable */
|
||||
local a; /* assoc */
|
||||
local ofd; /* open file desriptor */
|
||||
local ofd; /* open file descriptor */
|
||||
local cfd; /* closed file descriptor */
|
||||
local blk; /* unnamed block */
|
||||
local nblk; /* named block */
|
||||
@@ -5390,7 +5408,7 @@ define test_is()
|
||||
local object; /* object */
|
||||
local rand; /* rand seed */
|
||||
local random; /* random seed */
|
||||
local real; /* real non-intger value */
|
||||
local real; /* real non-integer value */
|
||||
local prime; /* odd prime */
|
||||
local square; /* square of an odd prime */
|
||||
local string; /* string */
|
||||
@@ -7474,7 +7492,7 @@ print '190: parsed test_somenew()';
|
||||
|
||||
|
||||
/*
|
||||
* test_exponentiation - test new exponentiation functionaltiy
|
||||
* test_exponentiation - test new exponentiation functionality
|
||||
*/
|
||||
define test_exponentiation()
|
||||
{
|
||||
@@ -7565,7 +7583,7 @@ define test_quit()
|
||||
quit;
|
||||
prob('quit did not end the test_quit() function');
|
||||
|
||||
/* 8400 serise continued after return, do not print end here */
|
||||
/* 8400 series continued after return, do not print end here */
|
||||
}
|
||||
print '191: parsed test_quit()';
|
||||
|
||||
@@ -7866,7 +7884,7 @@ print '8406: Ending test_quit';
|
||||
|
||||
|
||||
/*
|
||||
* test_divmod - psuedo-random tests on the // and % with various rounding modes
|
||||
* test_divmod - pseudo-random tests on the // and % with various rounding modes
|
||||
*/
|
||||
print;
|
||||
print '8500: Starting test of divmod'
|
||||
@@ -7892,7 +7910,7 @@ vrfy(config("redecl_warn",0), '8651: config("redecl_warn",0)');
|
||||
vrfy(config("dupvar_warn",0), '8652: config("dupvar_warn",0)');
|
||||
vrfy(u_glob == 6, '8653: u_glob == 6');
|
||||
global u_glob = 555;
|
||||
print '8654: reclare u_glob';
|
||||
print '8654: declare u_glob';
|
||||
vrfy(u_glob == 555, '8655: u_glob == 555');
|
||||
define func_8650(u_glob) { local u_glob; return u_glob; }
|
||||
print '8656: u_glob as both local and parameter';
|
||||
@@ -7920,7 +7938,7 @@ vrfy(dotest("set8700.line", 8703) == 0,
|
||||
|
||||
|
||||
/*
|
||||
* new exponentiation functionaltiy
|
||||
* new exponentiation functionality
|
||||
*/
|
||||
print;
|
||||
return test_exponentiation();
|
||||
@@ -7936,8 +7954,8 @@ print '8901: read -once "test8900"';
|
||||
read -once "test8900";
|
||||
print '8902: about to run test8900(1,,8903)';
|
||||
testnum = test8900(1,,8903);
|
||||
print '8999: ecnt = 203;'
|
||||
ecnt = 203;
|
||||
print '8999: ecnt = 211;'
|
||||
ecnt = 211;
|
||||
/* 89xx: test calc resource functions by Christoph Zurnieden */
|
||||
|
||||
|
||||
@@ -8066,7 +8084,7 @@ return test_functions2();
|
||||
*
|
||||
* beer.cal - prints a bunch of things when loaded
|
||||
* hello.cal - designed to go into an infinite loop
|
||||
* lucal.cal - already read by this file
|
||||
* lucas.cal - already read by this file
|
||||
* lucas_chk.cal - already read by this file
|
||||
* regress.cal - this file
|
||||
* surd.cal - already read by this file
|
||||
|
@@ -17,10 +17,6 @@
|
||||
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* @(#) $Revision: 30.1 $
|
||||
* @(#) $Id: repeat.cal,v 30.1 2007/03/16 11:09:54 chongo Exp $
|
||||
* @(#) $Source: /usr/local/src/bin/calc/cal/RCS/repeat.cal,v $
|
||||
*
|
||||
* Under source code control: 2003/01/05 00:00:01
|
||||
* File existed as early as: 2003
|
||||
*
|
||||
|
@@ -15,10 +15,6 @@
|
||||
* NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
|
||||
* CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*
|
||||
* @(#) $Revision: 30.2 $
|
||||
* @(#) $Id: screen.cal,v 30.2 2007/03/16 11:09:54 chongo Exp $
|
||||
* @(#) $Source: /usr/local/src/bin/calc/cal/RCS/screen.cal,v $
|
||||
*
|
||||
* This file is not covered under version 2.1 of the GNU LGPL.
|
||||
*
|
||||
* Under source code control: 2006/03/08 05:54:09
|
||||
|
@@ -17,10 +17,6 @@
|
||||
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* @(#) $Revision: 30.1 $
|
||||
* @(#) $Id: seedrandom.cal,v 30.1 2007/03/16 11:09:54 chongo Exp $
|
||||
* @(#) $Source: /usr/local/src/bin/calc/cal/RCS/seedrandom.cal,v $
|
||||
*
|
||||
* Under source code control: 1996/01/01 08:21:00
|
||||
* File existed as early as: 1996
|
||||
*
|
||||
|
@@ -17,10 +17,6 @@
|
||||
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* @(#) $Revision: 30.1 $
|
||||
* @(#) $Id: set8700.cal,v 30.1 2007/03/16 11:09:54 chongo Exp $
|
||||
* @(#) $Source: /usr/local/src/bin/calc/cal/RCS/set8700.cal,v $
|
||||
*
|
||||
* Under source code control: 2006/05/20 14:10:11
|
||||
* File existed as early as: 2006
|
||||
*
|
||||
|
@@ -17,10 +17,6 @@
|
||||
## received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
## 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
##
|
||||
## @(#) $Revision: 30.1 $
|
||||
## @(#) $Id: set8700.line,v 30.1 2007/03/16 11:09:54 chongo Exp $
|
||||
## @(#) $Source: /usr/local/src/bin/calc/cal/RCS/set8700.line,v $
|
||||
##
|
||||
## Under source code control: 2006/05/20 14:10:11
|
||||
## File existed as early as: 2006
|
||||
##
|
||||
|
@@ -17,10 +17,6 @@
|
||||
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* @(#) $Revision: 30.3 $
|
||||
* @(#) $Id: solve.cal,v 30.3 2013/08/11 08:41:38 chongo Exp $
|
||||
* @(#) $Source: /usr/local/src/bin/calc/cal/RCS/solve.cal,v $
|
||||
*
|
||||
* Under source code control: 1990/02/15 01:50:37
|
||||
* File existed as early as: before 1990
|
||||
*
|
||||
|
@@ -1,7 +1,7 @@
|
||||
/*
|
||||
* specialfunctions - special functions (e.g.: gamma, zeta, psi)
|
||||
*
|
||||
* Copyright (C) 2013 Christoph Zurnieden
|
||||
* Copyright (C) 2013,2021 Christoph Zurnieden
|
||||
*
|
||||
* 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
|
||||
@@ -17,10 +17,6 @@
|
||||
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* @(#) $Revision: 30.6 $
|
||||
* @(#) $Id: specialfunctions.cal,v 30.6 2013/09/01 17:48:27 chongo Exp $
|
||||
* @(#) $Source: /usr/local/src/bin/calc/cal/RCS/specialfunctions.cal,v $
|
||||
*
|
||||
* Under source code control: 2013/08/11 01:31:28
|
||||
* File existed as early as: 2013
|
||||
*/
|
||||
@@ -446,8 +442,8 @@ define lngamma(z)
|
||||
if (tmp2 < tmp) {
|
||||
return
|
||||
newerror(strcat
|
||||
("lngamma(1): something happend that ",
|
||||
"should not have happend"));
|
||||
("lngamma(1): something happened ",
|
||||
"that shouldn't have happened"));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -523,8 +519,8 @@ define lngamma(z)
|
||||
if (tmp2 < tmp) {
|
||||
return
|
||||
newerror(strcat
|
||||
("lngamma(1): something happend ",
|
||||
"that should not have happend"));
|
||||
("lngamma(1): something happened ",
|
||||
"that should not have happened"));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -580,8 +576,8 @@ define lngamma(z)
|
||||
if (tmp2 < tmp) {
|
||||
return
|
||||
newerror(strcat
|
||||
("lngamma(1): something happend ",
|
||||
"that should not have happend"));
|
||||
("lngamma(1): something happened ",
|
||||
"that should not have happened"));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1051,7 +1047,7 @@ define __CZ__ibeta_cf_var_dm(a, b, z, max)
|
||||
}
|
||||
}
|
||||
if (m > max) {
|
||||
return newerror("ibeta: continous fraction does not converge");
|
||||
return newerror("ibeta: continuous fraction does not converge");
|
||||
}
|
||||
return f;
|
||||
}
|
||||
@@ -1294,7 +1290,7 @@ define __CZ__erfinvapprox(x)
|
||||
- (2 / (pi() * a) + (ln(1 - x ^ 2)) / 2));
|
||||
}
|
||||
|
||||
/* complementary inverse errror function, faster at about x < 1-.91
|
||||
/* complementary inverse error function, faster at about x < 1-.91
|
||||
Henry E. Fettis. "A stable algorithm for computing the inverse error function
|
||||
in the 'tail-end' region" Math. Comp., 28:585-587, 1974.
|
||||
*/
|
||||
@@ -1328,7 +1324,7 @@ define __CZ__fettiscf(y, n)
|
||||
return t / (1 + r);
|
||||
}
|
||||
|
||||
/* inverse errror function, faster at about x<=.91*/
|
||||
/* inverse error function, faster at about x<=.91*/
|
||||
define __CZ__inverfbin(x)
|
||||
{
|
||||
local places approx flow fhigh eps high low mid fmid epsilon;
|
||||
@@ -1374,7 +1370,7 @@ define erfinv(x)
|
||||
x = -x;
|
||||
flag = 1;
|
||||
}
|
||||
/* No need for full pecision */
|
||||
/* No need for full precision */
|
||||
eps = epsilon(1e-20);
|
||||
if (eps >= 1e-40) {
|
||||
/* Winitzki, Sergei (6 February 2008). "A handy approximation for the
|
||||
|
@@ -1,7 +1,7 @@
|
||||
/*
|
||||
* statistics - Some assorted statistics functions.
|
||||
*
|
||||
* Copyright (C) 2013 Christoph Zurnieden
|
||||
* Copyright (C) 2013,2021 Christoph Zurnieden
|
||||
*
|
||||
* 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
|
||||
@@ -17,10 +17,6 @@
|
||||
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* @(#) $Revision: 30.4 $
|
||||
* @(#) $Id: statistics.cal,v 30.4 2013/08/18 20:01:53 chongo Exp $
|
||||
* @(#) $Source: /usr/local/src/bin/calc/cal/RCS/statistics.cal,v $
|
||||
*
|
||||
* Under source code control: 2013/08/11 01:31:28
|
||||
* File existed as early as: 2013
|
||||
*/
|
||||
@@ -110,7 +106,7 @@ define invbetainc_slow(x,a,b){
|
||||
GW Cran, KJ Martin, GE Thomas,
|
||||
Remark AS R19 and Algorithm AS 109:
|
||||
A Remark on Algorithms AS 63: The Incomplete Beta Integral
|
||||
and AS 64: Inverse of the Incomplete Beta Integeral,
|
||||
and AS 64: Inverse of the Incomplete Beta integral,
|
||||
Applied Statistics,
|
||||
Volume 26, Number 1, 1977, pages 111-114.
|
||||
|
||||
|
@@ -17,10 +17,6 @@
|
||||
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* @(#) $Revision: 30.1 $
|
||||
* @(#) $Id: sumsq.cal,v 30.1 2007/03/16 11:09:54 chongo Exp $
|
||||
* @(#) $Source: /usr/local/src/bin/calc/cal/RCS/sumsq.cal,v $
|
||||
*
|
||||
* Under source code control: 1990/02/15 01:50:37
|
||||
* File existed as early as: before 1990
|
||||
*
|
||||
|
@@ -17,10 +17,6 @@
|
||||
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* @(#) $Revision: 30.1 $
|
||||
* @(#) $Id: sumtimes.cal,v 30.1 2007/03/16 11:09:54 chongo Exp $
|
||||
* @(#) $Source: /usr/local/src/bin/calc/cal/RCS/sumtimes.cal,v $
|
||||
*
|
||||
* Under source code control: 2006/06/22 17:29
|
||||
* File existed as early as: 2006
|
||||
*
|
||||
|
@@ -17,10 +17,6 @@
|
||||
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* @(#) $Revision: 30.1 $
|
||||
* @(#) $Id: surd.cal,v 30.1 2007/03/16 11:09:54 chongo Exp $
|
||||
* @(#) $Source: /usr/local/src/bin/calc/cal/RCS/surd.cal,v $
|
||||
*
|
||||
* Under source code control: 1990/02/15 01:50:38
|
||||
* File existed as early as: before 1990
|
||||
*
|
||||
|
@@ -17,10 +17,6 @@
|
||||
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* @(#) $Revision: 30.1 $
|
||||
* @(#) $Id: test1700.cal,v 30.1 2007/03/16 11:09:54 chongo Exp $
|
||||
* @(#) $Source: /usr/local/src/bin/calc/cal/RCS/test1700.cal,v $
|
||||
*
|
||||
* Under source code control: 1994/03/14 23:12:51
|
||||
* File existed as early as: 1994
|
||||
*
|
||||
|
@@ -17,10 +17,6 @@
|
||||
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* @(#) $Revision: 30.1 $
|
||||
* @(#) $Id: test2300.cal,v 30.1 2007/03/16 11:09:54 chongo Exp $
|
||||
* @(#) $Source: /usr/local/src/bin/calc/cal/RCS/test2300.cal,v $
|
||||
*
|
||||
* Under source code control: 1995/07/09 06:12:13
|
||||
* File existed as early as: 1995
|
||||
*
|
||||
|
@@ -1,7 +1,7 @@
|
||||
/*
|
||||
* test2600 - 2600 series of the regress.cal test suite
|
||||
*
|
||||
* Copyright (C) 1999 Ernest Bowen and Landon Curt Noll
|
||||
* Copyright (C) 1999,2021 Ernest Bowen and Landon Curt Noll
|
||||
*
|
||||
* Primary author: Ernest Bowen
|
||||
*
|
||||
@@ -19,10 +19,6 @@
|
||||
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* @(#) $Revision: 30.3 $
|
||||
* @(#) $Id: test2600.cal,v 30.3 2013/08/11 08:41:38 chongo Exp $
|
||||
* @(#) $Source: /usr/local/src/bin/calc/cal/RCS/test2600.cal,v $
|
||||
*
|
||||
* Under source code control: 1995/10/13 00:13:14
|
||||
* File existed as early as: 1995
|
||||
*
|
||||
@@ -54,7 +50,7 @@
|
||||
* of b in power(a, b, eps) is large, the computation required for
|
||||
* a test may be very heavy.
|
||||
*
|
||||
* Test funcations are called as:
|
||||
* Test functions are called as:
|
||||
*
|
||||
* testabc(str, ..., verbose)
|
||||
*
|
||||
|
@@ -1,7 +1,7 @@
|
||||
/*
|
||||
* test2700 - 2700 series of the regress.cal test suite
|
||||
*
|
||||
* Copyright (C) 1999 Ernest Bowen and Landon Curt Noll
|
||||
* Copyright (C) 1999,2021 Ernest Bowen and Landon Curt Noll
|
||||
*
|
||||
* Primary author: Ernest Bowen
|
||||
*
|
||||
@@ -19,10 +19,6 @@
|
||||
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* @(#) $Revision: 30.2 $
|
||||
* @(#) $Id: test2700.cal,v 30.2 2013/08/11 08:41:38 chongo Exp $
|
||||
* @(#) $Source: /usr/local/src/bin/calc/cal/RCS/test2700.cal,v $
|
||||
*
|
||||
* Under source code control: 1995/11/01 22:52:25
|
||||
* File existed as early as: 1995
|
||||
*
|
||||
@@ -88,7 +84,7 @@ define mkfrac() = rand(2) ? mkposfrac() : -mkposfrac();
|
||||
define mksquarereal() = mknonnegreal()^2;
|
||||
|
||||
/*
|
||||
* We might be able to do better than the following. For nonsquare
|
||||
* We might be able to do better than the following. For non-square
|
||||
* positive integer less than 1e6, could use:
|
||||
* x = rand(1, 1000);
|
||||
* return rand(x^2 + 1, (x + 1)^2);
|
||||
|
@@ -19,10 +19,6 @@
|
||||
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* @(#) $Revision: 30.1 $
|
||||
* @(#) $Id: test3100.cal,v 30.1 2007/03/16 11:09:54 chongo Exp $
|
||||
* @(#) $Source: /usr/local/src/bin/calc/cal/RCS/test3100.cal,v $
|
||||
*
|
||||
* Under source code control: 1995/11/28 11:56:57
|
||||
* File existed as early as: 1995
|
||||
*
|
||||
|
@@ -19,10 +19,6 @@
|
||||
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* @(#) $Revision: 30.1 $
|
||||
* @(#) $Id: test3300.cal,v 30.1 2007/03/16 11:09:54 chongo Exp $
|
||||
* @(#) $Source: /usr/local/src/bin/calc/cal/RCS/test3300.cal,v $
|
||||
*
|
||||
* Under source code control: 1995/12/02 04:27:41
|
||||
* File existed as early as: 1995
|
||||
*
|
||||
|
@@ -19,10 +19,6 @@
|
||||
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* @(#) $Revision: 30.1 $
|
||||
* @(#) $Id: test3400.cal,v 30.1 2007/03/16 11:09:54 chongo Exp $
|
||||
* @(#) $Source: /usr/local/src/bin/calc/cal/RCS/test3400.cal,v $
|
||||
*
|
||||
* Under source code control: 1995/12/02 05:20:11
|
||||
* File existed as early as: 1995
|
||||
*
|
||||
|
@@ -19,10 +19,6 @@
|
||||
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* @(#) $Revision: 30.1 $
|
||||
* @(#) $Id: test3500.cal,v 30.1 2007/03/16 11:09:54 chongo Exp $
|
||||
* @(#) $Source: /usr/local/src/bin/calc/cal/RCS/test3500.cal,v $
|
||||
*
|
||||
* Under source code control: 1995/12/18 22:50:46
|
||||
* File existed as early as: 1995
|
||||
*
|
||||
|
@@ -19,10 +19,6 @@
|
||||
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* @(#) $Revision: 30.2 $
|
||||
* @(#) $Id: test4000.cal,v 30.2 2013/08/11 08:41:38 chongo Exp $
|
||||
* @(#) $Source: /usr/local/src/bin/calc/cal/RCS/test4000.cal,v $
|
||||
*
|
||||
* Under source code control: 1996/03/13 02:38:45
|
||||
* File existed as early as: 1996
|
||||
*
|
||||
|
@@ -19,10 +19,6 @@
|
||||
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* @(#) $Revision: 30.1 $
|
||||
* @(#) $Id: test4100.cal,v 30.1 2007/03/16 11:09:54 chongo Exp $
|
||||
* @(#) $Source: /usr/local/src/bin/calc/cal/RCS/test4100.cal,v $
|
||||
*
|
||||
* Under source code control: 1996/03/13 03:53:22
|
||||
* File existed as early as: 1996
|
||||
*
|
||||
|
@@ -19,10 +19,6 @@
|
||||
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* @(#) $Revision: 30.1 $
|
||||
* @(#) $Id: test4600.cal,v 30.1 2007/03/16 11:09:54 chongo Exp $
|
||||
* @(#) $Source: /usr/local/src/bin/calc/cal/RCS/test4600.cal,v $
|
||||
*
|
||||
* Under source code control: 1996/07/02 20:04:40
|
||||
* File existed as early as: 1996
|
||||
*
|
||||
|
@@ -1,7 +1,7 @@
|
||||
/*
|
||||
* test5100 - 5100 series of the regress.cal test suite
|
||||
*
|
||||
* Copyright (C) 1999 Ernest Bowen and Landon Curt Noll
|
||||
* Copyright (C) 1999,2021 Ernest Bowen and Landon Curt Noll
|
||||
*
|
||||
* Primary author: Ernest Bowen
|
||||
*
|
||||
@@ -19,10 +19,6 @@
|
||||
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* @(#) $Revision: 30.1 $
|
||||
* @(#) $Id: test5100.cal,v 30.1 2007/03/16 11:09:54 chongo Exp $
|
||||
* @(#) $Source: /usr/local/src/bin/calc/cal/RCS/test5100.cal,v $
|
||||
*
|
||||
* Under source code control: 1996/12/02 23:57:10
|
||||
* File existed as early as: 1996
|
||||
*
|
||||
@@ -39,7 +35,7 @@ defaultverbose = 1; /* default verbose value */
|
||||
* with zero value, when the definition is read.
|
||||
*
|
||||
* The variable a5100 is initialized with the value x if and when this
|
||||
* function is first called with a positive even x. The varable b5100
|
||||
* function is first called with a positive even x. The variable b5100
|
||||
* is similarly initialized if and when this function is first called positive
|
||||
* odd x.
|
||||
*
|
||||
|
@@ -19,10 +19,6 @@
|
||||
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* @(#) $Revision: 30.1 $
|
||||
* @(#) $Id: test5200.cal,v 30.1 2007/03/16 11:09:54 chongo Exp $
|
||||
* @(#) $Source: /usr/local/src/bin/calc/cal/RCS/test5200.cal,v $
|
||||
*
|
||||
* Under source code control: 1997/02/07 02:48:10
|
||||
* File existed as early as: 1997
|
||||
*
|
||||
|
@@ -17,10 +17,6 @@
|
||||
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* @(#) $Revision: 30.1 $
|
||||
* @(#) $Id: test8400.cal,v 30.1 2007/03/16 11:09:54 chongo Exp $
|
||||
* @(#) $Source: /usr/local/src/bin/calc/cal/RCS/test8400.cal,v $
|
||||
*
|
||||
* Under source code control: 1999/10/31 01:00:03
|
||||
* File existed as early as: 1999
|
||||
*
|
||||
|
@@ -1,7 +1,7 @@
|
||||
/*
|
||||
* test8500 - 8500 series of the regress.cal test suite
|
||||
*
|
||||
* Copyright (C) 1999 Ernest Bowen and Landon Curt Noll
|
||||
* Copyright (C) 1999,2021 Ernest Bowen and Landon Curt Noll
|
||||
*
|
||||
* Primary author: Ernest Bowen
|
||||
*
|
||||
@@ -19,10 +19,6 @@
|
||||
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* @(#) $Revision: 30.2 $
|
||||
* @(#) $Id: test8500.cal,v 30.2 2013/08/11 08:41:38 chongo Exp $
|
||||
* @(#) $Source: /usr/local/src/bin/calc/cal/RCS/test8500.cal,v $
|
||||
*
|
||||
* Under source code control: 1999/11/12 20:59:59
|
||||
* File existed as early as: 1999
|
||||
*
|
||||
@@ -173,7 +169,7 @@ define divmod_8500(N = 10, M1 = 2^128, M2 = 2^64, testnum = 0)
|
||||
}
|
||||
|
||||
/*
|
||||
* seelect one of the 32 rounding modes at random
|
||||
* select one of the 32 rounding modes at random
|
||||
*/
|
||||
rnd = rand(32);
|
||||
|
||||
|
@@ -19,10 +19,6 @@
|
||||
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* @(#) $Revision: 30.1 $
|
||||
* @(#) $Id: test8600.cal,v 30.1 2007/03/16 11:09:54 chongo Exp $
|
||||
* @(#) $Source: /usr/local/src/bin/calc/cal/RCS/test8600.cal,v $
|
||||
*
|
||||
* Under source code control: 2000/12/04 19:57:02
|
||||
* File existed as early as: 2000
|
||||
*
|
||||
|
@@ -1,7 +1,7 @@
|
||||
/*
|
||||
* test8900 - 8900 series of the regress.cal test suite
|
||||
*
|
||||
* Copyright (C) 2013 Christoph Zurnieden
|
||||
* Copyright (C) 2013,2021 Christoph Zurnieden
|
||||
*
|
||||
* 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
|
||||
@@ -17,10 +17,6 @@
|
||||
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* @(#) $Revision: 30.6 $
|
||||
* @(#) $Id: test8900.cal,v 30.6 2013/09/01 22:16:21 chongo Exp $
|
||||
* @(#) $Source: /usr/local/src/bin/calc/cal/RCS/test8900.cal,v $
|
||||
*
|
||||
* Under source code control: 2013/08/11 01:31:28
|
||||
* File existed as early as: 2013
|
||||
*/
|
||||
@@ -30,7 +26,7 @@ static __CZ__eps = 1e-20;
|
||||
|
||||
|
||||
/*
|
||||
* load once, the calc resource functions contribued by Christoph Zurnieden
|
||||
* load once, the calc resource functions contributed by Christoph Zurnieden
|
||||
*/
|
||||
read -once bernpoly.cal;
|
||||
read -once brentsolve.cal;
|
||||
@@ -49,7 +45,7 @@ read -once intnum.cal;
|
||||
/*
|
||||
* tests of correctness of the functions implemented by the above listed
|
||||
* author. All values tested against have been computed with at least two
|
||||
* independant algorithms where possible (indicated if not).
|
||||
* independent algorithms where possible (indicated if not).
|
||||
*/
|
||||
define t01()
|
||||
{
|
||||
@@ -1653,7 +1649,7 @@ define t03()
|
||||
/* test 04 tests polygamma(m,z) for the following values (m==0 gets computed
|
||||
* by psi()).
|
||||
* Values tested against were computed with Mathematica(TM) only
|
||||
* (z in the left complex halfplane does not get computed yet)
|
||||
* (z in the left complex half plane does not get computed yet)
|
||||
*/
|
||||
define t04()
|
||||
{
|
||||
@@ -2061,7 +2057,12 @@ define t010()
|
||||
epsilon(eps);
|
||||
return 5;
|
||||
}
|
||||
if ((stirling2(10, 5) - (42525)) != 0) {
|
||||
/*
|
||||
* Once, when an expression such as 0^(6-6) returned 0,
|
||||
* then stirling2(10, 5) == 42525. However when we made9
|
||||
* 0^(6-6) == 0^0 == 1, then stirling2(10, 5) == 5102999/120.
|
||||
*/
|
||||
if ((stirling2(10, 5) - (5102999/120)) != 0) {
|
||||
epsilon(eps);
|
||||
return 6;
|
||||
}
|
||||
|
@@ -1,7 +1,7 @@
|
||||
/*
|
||||
* toomcook - implementation of Toom-Cook(3,4) multiplication algorithm
|
||||
*
|
||||
* Copyright (C) 2013 Christoph Zurnieden
|
||||
* Copyright (C) 2013,2021 Christoph Zurnieden
|
||||
*
|
||||
* 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
|
||||
@@ -17,10 +17,6 @@
|
||||
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* @(#) $Revision: 30.4 $
|
||||
* @(#) $Id: toomcook.cal,v 30.4 2013/08/18 20:01:53 chongo Exp $
|
||||
* @(#) $Source: /usr/local/src/bin/calc/cal/RCS/toomcook.cal,v $
|
||||
*
|
||||
* Under source code control: 2013/08/11 01:31:28
|
||||
* File existed as early as: 2013
|
||||
*/
|
||||
@@ -324,16 +320,16 @@ define toomcook4square(a){
|
||||
}
|
||||
|
||||
/*
|
||||
TODO: Implement the asymmetric variations
|
||||
*/
|
||||
* TODO: Implement the asymmetric variations
|
||||
*/
|
||||
|
||||
/*
|
||||
produce_long_random_number(n) returns large pseudorandom numbers. Really large
|
||||
numbers, e.g.:
|
||||
produce_long_random_number(16)
|
||||
is ca 4,128,561 bits (ca 1,242,821 dec. digits) large. Exact length is not
|
||||
predeterminable because of the chaotic output of the function random().
|
||||
*/
|
||||
* produce_long_random_number(n) returns large pseudo-random numbers.
|
||||
* Really large numbers, e.g.:
|
||||
* produce_long_random_number(16)
|
||||
* is ca 4,128,561 bits (ca 1,242,821 dec. digits) large. Exact length is not
|
||||
* pre-determinable because of the chaotic output of the function random().
|
||||
*/
|
||||
define __CZ__produce_long_random_number(n)
|
||||
{
|
||||
local ret k;
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user