Compare commits

...

7 Commits

Author SHA1 Message Date
Landon Curt Noll
b7e15195f9 Release 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
2021-02-12 22:35:46 -08:00
Landon Curt Noll
c02725f036 Update copyright date to 2021 for all prev typo fixes 2021-02-12 22:27:51 -08:00
Landon Curt Noll
507fe026e5 Fix many spelling errors 2021-02-12 22:09:47 -08:00
Landon Curt Noll
486f4c5626 Update a few copyright years to 2021 2021-02-12 16:07:00 -08:00
Landon Curt Noll
91991bb729 Checkpoint on calc version 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 compliation
    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 QUESIONS help file.

    If the environment variable $CALCHELP is defined and is non-empty,
    then calc help files will be in the direcgory 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 direcgory
    by the $CALCCUSTOMHELP environment variable.

    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
2021-02-12 15:50:39 -08:00
Landon Curt Noll
71a116ca6f Fix gcc/9.3.1 and gcc/10.2.1 errors and warnings 2021-02-04 17:20:20 -08:00
Landon Curt Noll
8b7e01f426 Added missing malloc failure checks 2021-02-04 15:28:51 -08:00
173 changed files with 1533 additions and 1253 deletions

3
.gitignore vendored
View File

@@ -65,6 +65,7 @@ help/bugs
help/builtin
help/change
help/changes
help/contrib
help/copy
help/cscript
help/custom_cal
@@ -76,6 +77,8 @@ help/funclist.c
help/libcalc
help/man
help/new_custom
help/question
help/questions
help/resource
help/type
help/usage

154
BUGS
View File

@@ -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,67 +15,108 @@ 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.
@@ -130,7 +171,7 @@ Known bugs:
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.
=-=
@@ -183,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

104
CHANGES
View File

@@ -1,4 +1,61 @@
The following are the changes from calc version 2.12.7.1 to date:
The following are the changes from calc version 2.12.8.0 to date:
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
@@ -47,14 +104,14 @@ The following are the changes from calc version 2.12.7.1 to date:
Copied missing description lines from help/intro to README.md
"What is calc?" section. <<GitHub guilhermgonzaga>>
GCC 7 added a warning on fall throughs in case statements. It's
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.
<<thanks jcul>>
<<GitHub jcul>>
Fixed minor typo on help/power. <<GitHub thegithubr>>
@@ -64,7 +121,7 @@ The following are the changes from calc version 2.12.7.1 to date:
by the $CALCHISTFILE environment variable.
Calc as defined 0^0 as 1. However in the past, 0 raised to
an expression that evaluted to zero returned 1. The result
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.
@@ -130,10 +187,10 @@ The following are the changes from calc version 2.12.6.9 to 2.12.6.9:
Added regression tests 3729 thru 3732 to test E_TAN3, E_COT3,
E_SEC3 and E_CSC3 respectively.
Added experimential %g printf (and strprintf) format implementation
Added experimental %g printf (and strprintf) format implementation
based on pull request from github user 10110111.
Made exterimental changes to macOS builds to not require use of
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
@@ -187,7 +244,7 @@ The following are the changes from calc version 2.12.6.6 to 2.12.6.8:
Fixed an error message buffer overflow thanks to a report by
Frank Peters <nlp at northernlightsphoto dot biz>.
Replaced all use of the C funcion sprintf() with snprintf().
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}.
@@ -323,7 +380,7 @@ The following are the changes from calc version 2.12.5.4 to 2.12.5.6:
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
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
@@ -413,32 +470,6 @@ 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:
calc-bug-report at asthe dot com
@@ -653,7 +684,7 @@ The following are the changes from calc version 2.12.4.6 to version 2.12.4.10:
Silenced annoying warning about unused variable 'intp'
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
@@ -2763,7 +2794,6 @@ The following are the changes from calc version 2.11.2t0 to 2.11.2t1.0:
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
site dot domain> notation to reduce the potential for those folks
@@ -7503,7 +7533,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

100
CONTRIB-CODE Normal file
View 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/

61
COPYING
View File

@@ -6,7 +6,7 @@ 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
@@ -49,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
------------------------------------------------------------

View File

@@ -29,7 +29,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.
Some report that under macOS, one has to declare the target
@@ -120,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
@@ -152,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
@@ -198,7 +198,7 @@ Installing calc from the bzip2-ed tarball in 4 easy steps:
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

View File

@@ -8,11 +8,12 @@
# comments, this Makefile differs from the non-rpm bzip2-ed tarball
# source Makefile in the following ways:
#
# MAKEFILE_REV= $$Revision: 30.26 $$
# CCWERR= -Werror
# USE_READLINE= -DUSE_READLINE
# READLINE_LIB= -lreadline -lhistory -lncurses
#
# Copyright (C) 1999-2018,2021 Landon Curt Noll
#
# The Makefile.ship makefile becomes the Makefile found in the
# calc-*.tar.bz2 bzip2 source tarball.
#
@@ -24,7 +25,7 @@
#
# This makefile contains only those critical rules (such as all, clean, etc.)
# and the common rules needed in development (such as chk, check, etc.).
# This makefiile has a few special rules that are used to set the version
# This makefile has a few special rules that are used to set the version
# string in the shipped makefiles (such as Makefile.ship).
# Copyright (C) 1999-2008,2014 Landon Curt Noll
@@ -52,7 +53,7 @@
# calculator by David I. Bell with help/mods from others
# Makefile by Landon Curt Noll
# Try uname -s if the target was not alreadhy set on the make command line
# Try uname -s if the target was not already set on the make command line
#
ifeq ($(target),)
target=$(shell uname -s 2>/dev/null)
@@ -109,7 +110,7 @@ TOP_MAKE_FILE= Makefile
EXT=
#EXT=.exe
# This value is configured for chongo@theta.mellis.com.
# This value is configured for chongo for his laptop
#
RPM_TOP= ${HOME}/rpm/calc
@@ -169,7 +170,7 @@ V=@:
#
XARG=
# We pass these make varaibles to the end of each make command line
# We pass these make variables to the end of each make command line
# that invokes the ${MAKE_FILE}.
#
XVAR= \
@@ -573,7 +574,7 @@ custom/.all:
###
#
# building calc-static and static lib*.a libraires
# building calc-static and static lib*.a libraries
#
###
@@ -602,7 +603,7 @@ libcustcalc.a:
# Home grown make dependency rules. Your system make not support
# or have the needed tools. You can ignore this section.
#
# We will form a skelaton tree of *.c files containing only #include "foo.h"
# We will form a skeleton tree of *.c files containing only #include "foo.h"
# lines and .h files containing the same lines surrounded by multiple include
# prevention lines. This allows us to build a static depend list that will
# satisfy all possible cpp symbol definition combinations.
@@ -710,6 +711,9 @@ chk:
#
# debug
#
# make calcinfo:
# * print information about the host and compile environment
#
# make env:
# * print major Makefile variables
#
@@ -727,6 +731,11 @@ chk:
# * compile without optimizers to make debugging easier
##
calcinfo:
${V} echo '=-=-=-=-= private Makefile $@ rule start =-=-=-=-='
${Q} ${MAKE} ${XARG} -f ${MAKE_FILE} $@ ${XVAR}
${V} echo '=-=-=-=-= private Makefile $@ rule end =-=-=-=-='
env:
${V} echo '=-=-=-=-= private Makefile $@ rule start =-=-=-=-='
${Q} ${MAKE} ${XARG} -f ${MAKE_FILE} $@ ${XVAR}
@@ -827,7 +836,7 @@ inst_files:
${Q} ${MAKE} ${XARG} -f ${MAKE_FILE} $@ ${XVAR}
${V} echo '=-=-=-=-= private Makefile $@ rule end =-=-=-=-='
# The olduninstall rule will remove calc files from the older, histroic
# The olduninstall rule will remove calc files from the older, historic
# locations under the /usr/local directory. If you are using the
# new default values for ${BINDIR}, ${CALC_SHAREDIR}, ${INCDIR} and ${LIBDIR}
# then you can use this rule to clean out the older calc stuff under
@@ -885,7 +894,7 @@ strip:
${Q} ${MAKE} ${XARG} -f ${MAKE_FILE} $@ ${XVAR}
${V} echo '=-=-=-=-= private Makefile $@ rule end =-=-=-=-='
# calc-symlink - setup symlinks from stardard locations into the ${T} tree
# calc-symlink - setup symlinks from standard locations into the ${T} tree
#
calc-symlink:
${V} echo '=-=-=-=-= private Makefile $@ rule start =-=-=-=-='

View File

@@ -23,7 +23,7 @@
# READLINE_LIB= -lreadline
# READLINE_EXTRAS= -lhistory -lncurses
#
# Copyright (C) 1999-2018 Landon Curt Noll
# Copyright (C) 1999-2018,2021 Landon Curt Noll
#
# Calc is open software; you can redistribute it and/or modify it under
# the terms of version 2.1 of the GNU Lesser General Public License
@@ -39,8 +39,6 @@
# received a copy with calc; if not, write to Free Software Foundation, Inc.
# 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
#
MAKEFILE_REV= $$Revision: 30.88 $$
#
# Under source code control: 1990/02/15 01:48:41
# File existed as early as: before 1990
#
@@ -1028,7 +1026,8 @@ LD_DEBUG=
#
# CALC_ENV= CALCPATH=./cal LD_LIBRARY_PATH=.:./custom DYLD_LIBRARY_PATH=.
#
CALC_ENV= CALCPATH=./cal LD_LIBRARY_PATH=. DYLD_LIBRARY_PATH=.
CALC_ENV= CALCPATH=./cal LD_LIBRARY_PATH=. DYLD_LIBRARY_PATH=. CALCHELP=./help \
CALCCUSTOMHELP=./custom
#CALC_ENV= CALCPATH=./cal DYLD_LIBRARY_PATH=. \
# MALLOC_VERBOSE=1 MALLOC_TRACING=1 \
# MALLOC_FASTCHK=1 MALLOC_FULLWARN=1 LD_LIBRARY_PATH=.:./custom
@@ -1054,7 +1053,7 @@ EXT=
# The default calc versions
#
VERSION= 2.12.7.6
VERSION= 2.12.8.0
# Names of shared libraries with versions
#
@@ -1064,34 +1063,39 @@ LIB_EXT_VERSION= ${LIB_EXT}.${VERSION}
# standard utilities used during make
#
SHELL= /bin/sh
LANG= C
MAKE= make
AR= ar
AWK= awk
SED= sed
DIFF= diff
GREP= egrep
SORT= sort
TEE= tee
CTAGS= ctags
CAT= cat
CHMOD= chmod
FMT= fmt
XARGS= xargs
CMP= cmp
CO= co
COL= col
CP= cp
CTAGS= ctags
DATE= date
DIFF= diff
FMT= fmt
GREP= egrep
HOSTNAME= hostname
LANG= C
LDCONFIG= ldconfig
LN= ln
MAKE= make
MKDIR= mkdir
MV= mv
PWDCMD= pwd
RM= rm
RMDIR= rmdir
SED= sed
SORT= sort
SPLINT= splint
SPLINT_OPTS=
RM= rm
TEE= tee
TOUCH= touch
RMDIR= rmdir
CP= cp
MV= mv
CO= co
AR= ar
TRUE= true
CAT= cat
COL= col
LN= ln
LDCONFIG= ldconfig
UNAME= uname
XARGS= xargs
# assume the X11 makedepend tool for the depend rule
MAKEDEPEND= makedepend
STRIP= strip
@@ -1119,7 +1123,7 @@ EXTRA_LDFLAGS=
# Architecture compile flags
#
# The ARCH_CFLAGS are ${CC} when compiling C files. They follow
# CCMISC and preceed EXTRA_CFLAGS.
# CCMISC and precede EXTRA_CFLAGS.
#
ARCH_CFLAGS= -march=native
#ARCH_CFLAGS=
@@ -1202,7 +1206,7 @@ COMMON_LDFLAGS= ${EXTRA_LDFLAGS}
# #
# calc-contrib at asthe dot com #
# #
# EMail address an "ifeq ($(target),YOUR_TARGET_NAME)" ... "endif" #
# Email address an "ifeq ($(target),YOUR_TARGET_NAME)" ... "endif" #
# set of lines so that we can consider them for the next release. #
##########################################################################
@@ -2084,7 +2088,7 @@ LICENSE= COPYING COPYING-LGPL
#
DISTLIST= ${C_SRC} ${H_SRC} ${MAKE_FILE} BUGS CHANGES LIBRARY README.FIRST \
README.WINDOWS calc.man HOWTO.INSTALL ${UTIL_MISC_SRC} ${LICENSE} \
sample.README calc.spec.in rpm.mk README.md
sample.README calc.spec.in rpm.mk README.md QUESTION CONTRIB-CODE
# These files are used to make (but not build) a calc .a link library
#
@@ -2195,7 +2199,7 @@ check_include:
echo "Without critical include files, we cannot compile." 1>&2; \
echo "Perhaps your system isn't setup to compile C source?" 1>&2; \
echo 1>&2; \
echo "For example, Apple macOS / Darwin requres that XCode" 1>&2; \
echo "For example, Apple macOS / Darwin requires that XCode" 1>&2; \
echo "must be installed." 1>&2; \
echo 1>&2; \
echo "Also macOS users might later to run this command:" 1>&2; \
@@ -2322,6 +2326,7 @@ calc.1: calc.man ${MAKE_FILE}
-e 's,$${CALC_INCDIR},${CALC_INCDIR},g' \
-e 's,$${CUSTOMCALDIR},${CUSTOMCALDIR},g' \
-e 's,$${CUSTOMINCDIR},${CUSTOMINCDIR},g' \
-e 's,$${HELPDIR},${HELPDIR},g' \
-e 's,$${CUSTOMHELPDIR},${CUSTOMHELPDIR},g' \
-e 's,$${CALCRC},${CALCRC},g' < calc.man > calc.1
${Q} echo calc.1 formed
@@ -2333,7 +2338,7 @@ calc.usage: calc.1 ${MAKE_FILE}
LESSCHARSET=iso8859 ${CALCPAGER} calc.1; \
else \
${NROFF} -man calc.1; \
fi | ${COL} -b > $@
fi 2>&1 | ${GREP} -v 'cannot adjust line' | ${COL} -b > $@
${Q} echo calc.usage formed
@@ -4033,6 +4038,9 @@ chk: ./cal/regress.cal
#
# debug
#
# make calcinfo:
# * print information about the host and compile environment
#
# make env:
# * print major Makefile variables
#
@@ -4047,6 +4055,53 @@ chk: ./cal/regress.cal
# * run the regression tests
###
calcinfo:
@echo '=-=-=-=-= ${MAKE_FILE} start of $@ rule =-=-=-=-='
@echo
@echo '=-=-= UNAME=${UNAME} =-=-='
@echo
@echo '=-=-= output of $${UNAME} -a follows =-=-='
-@${UNAME} -a
@echo '=-=-= end of output of $${UNAME} -a =-=-='
@echo
@echo '=-=-= HOSTNAME=${HOSTNAME} =-=-='
@echo
@echo '=-=-= output of $${HOSTNAME} follows =-=-='
-@${HOSTNAME}
@echo '=-=-= end of output of $${HOSTNAME} =-=-='
@echo
@echo '=-=-= DATE=${DATE} =-=-='
@echo
@echo '=-=-= output of $${DATE} follows =-=-='
-@${DATE}
@echo '=-=-= end of output of $${DATE} =-=-='
@echo
@echo '=-=-= LCC=${LCC} =-=-='
@echo
@echo '=-=-= output of $${LCC} -v follows =-=-='
-@${LCC} -v
@echo '=-=-= end of output of $${LCC} -v =-=-='
@echo
@echo '=-=-= PWD=${PWD} =-=-='
@echo
@echo '=-=-= output of echo $${PWD} follows =-=-='
-@echo ${PWD}
@echo '=-=-= end of output of echo $${PWD} =-=-='
@echo
@echo '=-=-= PWDCMD=${PWDCMD} =-=-='
@echo
@echo '=-=-= output of $${PWDCMD} follows =-=-='
-@${PWDCMD}
@echo '=-=-= end of output of $${PWDCMD} =-=-='
@echo
@echo '=-=-= VERSION=${VERSION} =-=-='
@echo
@echo '=-=-= output of echo $${VERSION} follows =-=-='
-@echo ${VERSION}
@echo '=-=-= end of output of echo $${VERSION} =-=-='
@echo
@echo '=-=-=-=-= ${MAKE_FILE} end of $@ rule =-=-=-=-='
env:
@echo '=-=-=-=-= dumping major make variables =-=-=-=-='
@echo 'ALIGN32=${ALIGN32}'; echo ''
@@ -4097,6 +4152,7 @@ env:
@echo 'CUSTOMINCDIR=${CUSTOMINCDIR}'; echo ''
@echo 'CUSTOM_PASSDOWN=${CUSTOM_PASSDOWN}'; echo ''
@echo 'C_SRC=${C_SRC}'; echo ''
@echo 'DATE=${DATE}'; echo ''
@echo 'DEBUG=${DEBUG}'; echo ''
@echo 'DEFAULT_LIB_INSTALL_PATH=${DEFAULT_LIB_INSTALL_PATH}'; echo ''
@echo 'DEV_BITS=${DEV_BITS}'; echo ''
@@ -4134,6 +4190,7 @@ env:
@echo 'HAVE_VSNPRINTF=${HAVE_VSNPRINTF}'; echo ''
@echo 'HELPDIR=${HELPDIR}'; echo ''
@echo 'HELP_PASSDOWN=${HELP_PASSDOWN}'; echo ''
@echo 'HOSTNAME=${HOSTNAME}'; echo ''
@echo 'H_SRC=${H_SRC}'; echo ''
@echo 'ICFLAGS=${ICFLAGS}'; echo ''
@echo 'ILDFLAGS=${ILDFLAGS}'; echo ''
@@ -4157,7 +4214,6 @@ env:
@echo 'LONG_BITS=${LONG_BITS}'; echo ''
@echo 'MAKE=${MAKE}'; echo ''
@echo 'MAKEDEPEND=${MAKEDEPEND}'; echo ''
@echo 'MAKEFILE_REV=${MAKEFILE_REV}'; echo ''
@echo 'MAKE_FILE=${MAKE_FILE}'; echo ''
@echo 'MANDIR=${MANDIR}'; echo ''
@echo 'MANEXT=${MANEXT}'; echo ''
@@ -4170,6 +4226,8 @@ env:
@echo 'OBJS=${OBJS}'; echo ''
@echo 'OFF_T_BITS=${OFF_T_BITS}'; echo ''
@echo 'PURIFY=${PURIFY}'; echo ''
@echo 'PWD=${PWD}'; echo ''
@echo 'PWDCMD=${PWDCMD}'; echo ''
@echo 'Q=${Q}'; echo ''
@echo 'RANLIB=${RANLIB}'; echo ''
@echo 'READLINE_EXTRAS=${READLINE_EXTRAS}'; echo ''
@@ -4196,11 +4254,12 @@ env:
@echo 'TOP_MAKE_FILE=${TOP_MAKE_FILE}'; echo ''
@echo 'TOUCH=${TOUCH}'; echo ''
@echo 'TRUE=${TRUE}'; echo ''
@echo 'UNAME=${UNAME}'; echo ''
@echo 'USE_READLINE=${USE_READLINE}'; echo ''
@echo 'UTIL_C_SRC=${UTIL_C_SRC}'; echo ''
@echo 'UTIL_FILES=${UTIL_FILES}'; echo ''
@echo 'UTIL_MISC_SRC=${UTIL_MISC_SRC}'; echo ''
@echo 'UTIL_OBJS=${UTIL_OBJS}'; echo ''
@echo 'UTIL_FILES=${UTIL_FILES}'; echo ''
@echo 'UTIL_PROGS=${UTIL_PROGS}'; echo ''
@echo 'UTIL_TMP=${UTIL_TMP}'; echo ''
@echo 'V=${V}'; echo ''
@@ -4222,7 +4281,7 @@ mkdebug: env version.c
@echo '=-=-=-= Back to the main Makefile for $@ rule =-=-=-='
@echo '=-=-=-=-= ${MAKE_FILE} end of $@ rule =-=-=-=-='
debug: env
debug: calcinfo env
@echo '=-=-=-=-= ${MAKE_FILE} start of $@ rule =-=-=-=-='
@echo '=-=-=-= Invoking ${MAKE} -f Makefile Q= V=@ clobber =-=-=-='
@${MAKE} -f Makefile Q= V=@ clobber
@@ -4237,7 +4296,7 @@ debug: env
@echo '=-=-=-= Back to the main Makefile for $@ rule =-=-=-='
@echo -n '=-=-=-= Print #defile values if custom functions '
@echo 'are allowed =-=-=-='
-@./calc${EXT} -e -q -C 'print custom("sysinfo", 2);'
-@${CALC_ENV} ./calc${EXT} -e -q -C 'print custom("sysinfo", 2);'
@echo '=-=-=-= Back to the main Makefile for $@ rule =-=-=-='
@echo '=-=-=-= Invoking ${MAKE} -f Makefile Q= V=@ check =-=-=-='
@echo '=-=-= this may take a while =-=-='
@@ -5449,6 +5508,7 @@ help.o: have_string.h
help.o: have_unistd.h
help.o: help.c
help.o: longbits.h
help.o: lib_calc.h
help.o: nametype.h
help.o: qmath.h
help.o: sha1.h

54
QUESTIONS Normal file
View 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/

View File

@@ -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,2017 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

View File

@@ -260,4 +260,4 @@ help unexpected
```
It contains information about differences between C and calc
that may surprize C programmers.
that may surprise C programmers.

View File

@@ -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
*
@@ -1040,7 +1040,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

View File

@@ -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
*
@@ -291,7 +291,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.

10
block.h
View File

@@ -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
*
@@ -55,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.
@@ -88,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)
@@ -104,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
*
@@ -184,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 */

View File

@@ -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
@@ -77,7 +77,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
@@ -145,7 +145,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
@@ -209,7 +209,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
@@ -313,7 +313,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
@@ -380,7 +380,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
@@ -444,7 +444,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
@@ -508,7 +508,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
@@ -576,7 +576,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
@@ -640,7 +640,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

View File

@@ -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
@@ -181,14 +181,14 @@ FMT= fmt
# 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.
# detailed help files are under RCS control.
#
CALC_FILES= README alg_config.cal beer.cal bernoulli.cal \
bernpoly.cal bigprime.cal bindings brentsolve.cal chi.cal chrem.cal \
@@ -236,7 +236,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*
#
##
@@ -391,7 +391,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

View File

@@ -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
##

View File

@@ -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
@@ -33,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
*
@@ -354,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 */
/*
@@ -363,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");
@@ -392,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.
@@ -419,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);
}
}
@@ -442,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);
@@ -450,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);
}
}
@@ -483,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);
}
}
@@ -535,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;
}
@@ -835,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 */
/*
@@ -844,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");
@@ -873,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.
@@ -900,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);
}
}
@@ -923,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);
@@ -931,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);
}
}
@@ -964,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);
}
}
@@ -1017,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;
}
@@ -1337,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 */
@@ -1347,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");
@@ -1358,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;
@@ -1375,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);
}
}
@@ -1397,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.
@@ -1435,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);
}
}
@@ -1463,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);
}
}
@@ -1516,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;
}

View File

@@ -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
@@ -26,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
*
@@ -42,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.
*/

View File

@@ -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

View File

@@ -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
@@ -143,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;

View File

@@ -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
@@ -51,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.
*
@@ -99,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;
@@ -130,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
@@ -186,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 */

View File

@@ -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
*
@@ -26,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)
@@ -35,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:

View File

@@ -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
@@ -53,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;
@@ -110,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;
@@ -352,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);

View File

@@ -8,8 +8,8 @@
* 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,
@@ -173,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

View File

@@ -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
@@ -281,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.
*/
@@ -626,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;

View File

@@ -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
@@ -53,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;
@@ -110,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;
@@ -352,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);

View File

@@ -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
@@ -27,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)
{
@@ -75,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)
{
@@ -118,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
@@ -168,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

View 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);

View File

@@ -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
@@ -83,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).
*/
@@ -105,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)

View File

@@ -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
@@ -29,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:

View File

@@ -1,7 +1,7 @@
/*
* lucas - perform a Lucas primality test on h*2^n-1
*
* Copyright (C) 1999,2017,2018 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
@@ -947,7 +947,7 @@ rodseth_xhn(x, h, n)
*
* Without Jacobi symbol value caching, it requires on average
* 4.851377 Jacobi symbol evaluations. With Jacobi symbol value caching
* cacheing, an averare of 4.348820 Jacobi symbol evaluations is needed.
* 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 odd values of X:
@@ -961,7 +961,7 @@ rodseth_xhn(x, h, n)
* jacobi(X-2, h*2^n-1) == 1
* jacobi(X+2, h*2^n-1) == -1
*
* Less than 1 case out of 1000000 will not be satisifed by the above list.
* 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.
*
@@ -1049,7 +1049,7 @@ next_x = 167; /* must be 2 more than the largest value in x_tbl[] */
* else
* v(1) = 4
*
* HOTE: The above "if then else" works only of h is not a multiple of 3.
* NOTE: The above "if then else" works only of h is not a multiple of 3.
*
***
*
@@ -1234,10 +1234,10 @@ gen_v1(h, n)
* 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 optimial, we would cache
* 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-evaluted.
* does not need to be re-evaluated.
*/
testval = h*2^n-1;
for (i=0; i < x_tbl_len; ++i) {
@@ -1285,7 +1285,7 @@ gen_v1(h, n)
/*
* 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
* of odd vules at next_x from here on.
* of odd values at next_x from here on.
*/
x = next_x;
while (rodseth_xhn(x, h, n) != 1) {

View File

@@ -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
@@ -303,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

View File

@@ -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
@@ -79,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)
@@ -99,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.
*
@@ -256,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;
@@ -269,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
@@ -285,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 {
/*

View File

@@ -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
@@ -76,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
*
@@ -100,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
*

View File

@@ -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
@@ -25,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.
*/

View File

@@ -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
@@ -35,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
@@ -43,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

View File

@@ -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
@@ -61,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
@@ -75,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".
*/

View File

@@ -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

View File

@@ -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
@@ -45,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 */

View File

@@ -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
@@ -43,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 */
@@ -453,7 +453,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');
@@ -3156,7 +3156,7 @@ print '047: parsed test_poly()';
/*
* test_det - more determinent testing
* test_det - more determinant testing
*/
read -once "test3300";
print '048: read -once test3300';
@@ -3473,7 +3473,7 @@ print '065: parsed test_param()';
/*
* test_noarg - test missing argment functionality
* test_noarg - test missing argument functionality
*/
define test_noarg()
{
@@ -5183,7 +5183,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';
@@ -5261,7 +5261,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}';
@@ -5381,7 +5381,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 */
@@ -5398,7 +5398,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 */
@@ -7482,7 +7482,7 @@ print '190: parsed test_somenew()';
/*
* test_exponentiation - test new exponentiation functionaltiy
* test_exponentiation - test new exponentiation functionality
*/
define test_exponentiation()
{
@@ -7573,7 +7573,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()';
@@ -7874,7 +7874,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'
@@ -7900,7 +7900,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';
@@ -7928,7 +7928,7 @@ vrfy(dotest("set8700.line", 8703) == 0,
/*
* new exponentiation functionaltiy
* new exponentiation functionality
*/
print;
return test_exponentiation();
@@ -8074,7 +8074,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

View File

@@ -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
@@ -442,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"));
}
}
}
@@ -519,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"));
}
}
}
@@ -576,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"));
}
}
}
@@ -1047,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;
}
@@ -1290,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.
*/
@@ -1324,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;
@@ -1370,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

View File

@@ -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
@@ -106,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.

View File

@@ -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
*
@@ -50,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)
*

View File

@@ -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
*
@@ -84,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);

View File

@@ -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
*
@@ -35,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.
*

View File

@@ -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
*
@@ -169,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);

View File

@@ -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
@@ -26,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;
@@ -45,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()
{
@@ -1649,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()
{

View File

@@ -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
@@ -320,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;

View File

@@ -1,7 +1,7 @@
/*
* unixfrac - represent a fraction as a sum of distince unit fractions
* unixfrac - represent a fraction as a sum of distance unit fractions
*
* 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

View File

@@ -34,7 +34,7 @@ define hurwitzzeta(s,a){
/*
According to Linas Vepstas' "An efficient algorithm for accelerating
the convergence of oscillatory series, useful for computing the
polylogarithm and Hurwitz zeta functions" the Euler-Maclaurin series
poly-logarithm and Hurwitz zeta functions" the Euler-Maclaurin series
is the fastest in most cases.
With a lot of help of the PARI/GP implementation by Prof. Henri Cohen,
@@ -78,7 +78,7 @@ define hurwitzzeta(s,a){
print "limit = " limit;
print "prec = " precision;
}
/* Full precison plus 5 digits angstzuschlag*/
/* Full precision plus 5 digits angstzuschlag*/
epsilon( (10^(-precision)) * 1e-5);
tmp3=(a+limit_function+0.)^(-s);
sum3 = tmp3/2;

22
calc.c
View File

@@ -1,7 +1,8 @@
/*
* calc - arbitrary precision calculator
*
* Copyright (C) 1999-2013 David I. Bell, Landon Curt Noll and Ernest Bowen
* Copyright (C) 1999-2013,2021 David I. Bell, Landon Curt Noll
* and Ernest Bowen
*
* Primary author: David I. Bell
*
@@ -403,7 +404,7 @@ main(int argc, char **argv)
" long");
exit(18);
}
/* XXX What if *cp = '\''? */
/* XXX - what if *cp = '\''? */
*bp++ = '\'';
strncpy(bp, cp, len+1);
bp += len;
@@ -479,7 +480,22 @@ main(int argc, char **argv)
program);
exit(21);
}
strncpy(cmdbuf + cmdlen, cp, cplen+1);
/*
* The next statement could be:
*
* strncpy(cmdbuf + cmdlen, cp, cplen);
*
* however compilers like gcc would issue warnings such as:
*
* specified bound depends on the length of the
* source argument
*
* even though we terminate the string by setting a NUL
* byte following the copy. Therefore we call memcpy()
* instead to avoid such warnings.
*/
memcpy(cmdbuf + cmdlen, cp, cplen);
cmdbuf[newcmdlen] = '\0';
cmdlen = newcmdlen;
index++;
if (index < maxindex)

8
calc.h
View File

@@ -1,7 +1,7 @@
/*
* calc - definitions for calculator program
*
* Copyright (C) 1999-2007,2014 David I. Bell
* Copyright (C) 1999-2007,2014,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
@@ -49,6 +49,8 @@
#define PAGER "PAGER" /* environment variable for help */
#define SHELL "SHELL" /* environment variable for shell */
#define CALCHISTFILE "CALCHISTFILE" /* history file environment variable */
#define CALCHELP "CALCHELP" /* help directory env variable */
#define CALCCUSTOMHELP "CALCCUSTOMHELP"/* custom help directory env variable */
#define DEFAULTCALCBINDINGS "bindings" /* default calc bindings file */
#define DEFAULTCALCHELP "help" /* help file that -h prints */
#define DEFAULTSHELL "sh" /* default shell to use */
@@ -230,8 +232,8 @@ EXTERN int no_env; /* TRUE (-e) => ignore env vars on startup */
EXTERN long errmax; /* if >= 0, error when errcount exceeds errmax */
EXTERN int use_old_std; /* TRUE (-O) => use classic configuration */
EXTERN int allow_read; /* FALSE => dont open any files for reading */
EXTERN int allow_write; /* FALSE => dont open any files for writing */
EXTERN int allow_read; /* FALSE => don't open any files for reading */
EXTERN int allow_write; /* FALSE => don't open any files for writing */
EXTERN int allow_exec; /* FALSE => may not execute any commands */
/*

295
calc.man
View File

@@ -24,7 +24,7 @@
.\" calculator by David I. Bell
.\" man page by Landon Noll
.\"
.TH calc 1 "^..^" "2007-02-06"
.TH calc 1 "^..^" "Share and enjoy! :-)"
.SH NAME
calc \- arbitrary precision calculator
.SH SYNOPSIS
@@ -226,7 +226,7 @@ This flag is required when using calc in
It must be at the end of the initial
.B #!
line of the script
and must be immedately preceeded by the
and must be immediately preceded by the
.B \-s
flag.
.sp 1
@@ -1111,6 +1111,18 @@ Default value: ~/.calc_history
.sp
This variable is not used if calc was compiled with GNU-readline support.
.sp
.TP 5
CALCHELP
Location of the calc help directory.
.sp
Default value: ${HELPDIR}
.sp
.TP 5
CALCCUSTOMHELP
Location of the calc custom help directory.
.sp
Default value: ${CUSTOMHELPDIR}
.sp
.SH CREDIT
\&
.br
@@ -1120,7 +1132,7 @@ was written by David I. Bell.
.sp
The
.B calc
primary mirror, calc mailing list and calc bug report
primary mirror, and calc bug report
processing is performed by Landon Curt Noll.
.sp
Landon Curt Noll maintains the master reference source, performs
@@ -1199,76 +1211,71 @@ This man page is:
.sp
.in +0.5i
.nf
Copyright (C) 1999 Landon Curt Noll
Copyright (C) 1999-2021 Landon Curt Noll
.fi
.in -0.5i
.sp
and is covered under version 2.1 GNU Lesser General
Public License.
.sp
.SH "CALC MAILING LIST / CALC UPDATES / ENHANCEMENTS"
.SH "CALC QUESTIONS"
\&
.br
If you have a simple general question about calc, send Email to:
.sp
To contribute comments, suggestions, enhancements
and interesting
.B calc
resource files, and
shell scripts please join the calc-tester
low volume moderated calc mailing list.
.in +0.5i
calc-quest-mail at asthe dot com
.sp
To the calc-tester mailing list, visit the following URL:
NOTE: Remove spaces and replace 'at' with @, and 'dot' with .
.in -0.5i
.sp
.in +0.5i
NOTE: Yes, the Email address uses 'asthe',
while the web site uses 'isthe'.
.in -0.5i
.sp
.B PLEASE
put following the
.B SPECIAL PHRASE
somewhere in your Email Subject line:
.sp
.in +0.5i
.B calc question
.in -0.5i
.sp
You may add additional words to your subject line.
.sp
.B IMPORTANT:
If your Email doesn't contain the above phrase,
then we
.B WILL NOT SEE
your Email.
.sp
.B PLEASE BE SURE
you have that
.B SPECIAL PHRASE
somewhere in the subject line!
.sp
.B Suggestion:
.sp
.in +0.5i
From time to time, the Email address and Subject
.B SPECIAL PHRASE
may change so verify you have the current info by visiting:
.sp
.in +0.5i
.nf
https://www.listbox.com/subscribe/?list_id=239342
http://www.isthe.com/chongo/tech/comp/calc/calc-question.html
.fi
.in -0.5i
.sp
To help determine you are a human and not just a spam bot,
you will be required to provide the following additional information:
.sp
.in +0.5i
.nf
Your Name
Calc Version
For example, the current version is: ${VERSION}
Operating System
If you don't know your operating system, enter: unknown
The date 7 days ago
Consult a calendar :-)
.fi
.in -0.5i
.sp
If you need a human to help you with your mailing list subscription,
or if you have problems with the above procedure, please
send EMail to our special address:
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.
.sp
.in +0.5i
.nf
calc-tester-maillist-help at asthe dot com
NOTE: Remove spaces and replace 'at' with @, 'dot' with .
NOTE: Yes, the EMail address uses 'asthe',
while the web site uses 'isthe'.
.fi
.in -0.5i
.sp
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
your subject must contain the words:
.sp
.in +0.5i
.nf
calc tester mailing list help
.fi
.in -0.5i
.sp
You may have additional words in your subject line.
Please be patient as we cannot always respond to Email messages quickly.
.sp
.SH "BUG REPORTS / BUG FIXES"
\&
@@ -1278,28 +1285,51 @@ Send bug reports and bug fixes to:
.sp
.in +0.5i
.nf
calc-bug-report at asthe dot com
NOTE: Remove spaces and replace 'at' with @, 'dot' with .
NOTE: Yes, the EMail address uses 'asthe',
while the web site uses 'isthe'.
calc-bugrept at asthe dot com
.fi
.sp
NOTE: Remove spaces and replace 'at' with @, 'dot' with .
.sp
NOTE: Yes, the Email address uses 'asthe',
while the web site uses 'isthe'.
.in -0.5i
.sp
Your subject must contain the words:
You
.B MUST
use following
.B SPECIAL PHRASE
in your Email Subject line:
.sp
.in +0.5i
.B calc bug report
.in -0.5i
.sp
You may add additional words to your subject line.
.sp
.B Suggestion:
.sp
.in +0.5i
From time to time, the Email address and Subject
.B SPECIAL PHRASE
may change so verify you have the current info by visiting:
.sp
.in +0.5i
.nf
calc bug report
http://www.isthe.com/chongo/tech/comp/calc/calc-bugrept.html
.fi
.in -0.5i
.in -0.5i
.sp
You may have additional words in your subject line.
.in
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.
.B IMPORTANT:
If your Email doesn't contain the above phrase,
then we
.B WILL NOT SEE
your Email.
.sp
.B PLEASE BE SURE
you have that
.B SPECIAL PHRASE
somewhere in the subject line!
.sp
See the
.I BUGS
@@ -1315,6 +1345,135 @@ help bugs
.sp
for more information about bug reporting.
.sp
Please be patient as we cannot always respond to Email messages quickly.
.sp
.SH "CONTRIBUTING CODE TO CALC"
\&
.br
.sp
.I Calc
is open source.
Contributions of code are welcome.
.sp
We welcome and encourage you to send us:
.sp
.sp
.in +0.5i
.nf
* calc resource files (cal/*.cal)
* calc shell scripts (cscript/*.calc)
* 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 (custom/*)
* help files modified or written (help/*)
* brief description of you added, fixed, improved in CHANGES
* regression test cases (cal/regress.cal)
* Makefile improvements (Makefile, */Makefile)
* other source code modifications (*.c, *.h)
* etc. (* */* :) )
.fi
.in -0.5i
.sp
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.
.sp
In order to consider integrating your code, we need:
.sp
.nf
.in +0.5i
* 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 (:-))
.in -0.5i
.fi
.sp
The best way to send us new code, if your changes are small, is
via a patch (diff -c from the latest alpha code to your code).
If your change is large, you should send entire files (either
as a diff -c /dev/null your-file patch, or as a uuencoded and
gziped (or compressed) tar file).
.sp
Please try to generate a patch against the most recent
version of calc, and if you use GitHub, the top of the
master branch:
.sp
.nf
.in +0.5i
https://github.com/lcn2/calc
.in -0.5i
.fi
.sp
.sp
The best way contribute to calc bug is to generate calc
GitHub pull request:
.sp
.nf
.in +0.5i
https://github.com/lcn2/calc/pulls
.in -0.5i
.fi
.sp
Your code needs to be contributed under either the 2.1 of the
.B GNU Lesser General Public License (LGPL 2.1)
or be in the public domain.
.sp
If you do not want to use calc GitHub, then send EMail to:
.sp
.in +0.5i
.nf
calc-contrib at asthe dot com
.fi
.sp
NOTE: Remove spaces and replace 'at' with @, 'dot' with .
.sp
NOTE: Yes, the Email address uses 'asthe',
while the web site uses 'isthe'.
.in -0.5i
.sp
You
.B MUST
use following
.B SPECIAL PHRASE
in your Email Subject line:
.sp
.in +0.5i
.B calc contribution
.in -0.5i
.sp
You may add additional words to your subject line.
.sp
.B Suggestion:
.sp
.in +0.5i
From time to time, the Email address and Subject
.B SPECIAL PHRASE
may change so verify you have the current info by visiting:
.sp
.in +0.5i
.nf
http://www.isthe.com/chongo/tech/comp/calc/calc-contrib.html
.fi
.in -0.5i
.in -0.5i
.sp
.B IMPORTANT:
If your Email doesn't contain the above phrase,
then we
.B WILL NOT SEE
your Email.
.sp
.B PLEASE BE SURE
you have that
.B SPECIAL PHRASE
somewhere in the subject line!
.sp
Please be patient as we cannot always respond to Email messages quickly.
.sp
.SH "CALC WEB SITE"
\&
.br

View File

@@ -1,7 +1,7 @@
/*
* codegen - module to generate opcodes from the input tokens
*
* Copyright (C) 1999-2007,2017 David I. Bell and Ernest Bowen
* Copyright (C) 1999-2007,2017,2021 David I. Bell and Ernest Bowen
*
* Primary author: David I. Bell
*
@@ -2607,7 +2607,7 @@ getid(char *buf)
* global or if symtype is static and the old variable is at the same
* level. Warnings are issued when a global or local variable is
* redeclared and when in the same body the variable will be accessible only
^ with the appropriate specfier.
^ with the appropriate specifier.
*/
S_FUNC void
definesymbol(char *name, int symtype)

View File

@@ -1,7 +1,7 @@
/*
* comfunc - extended precision complex arithmetic non-primitive routines
*
* 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
*
@@ -553,7 +553,7 @@ c_log(COMPLEX *c, NUMBER *epsilon)
/* first time call */
cln_10_epsilon = qcopy(epsilon);
} else if (qcmp(cln_10_epsilon, epsilon) == TRUE) {
/* replaced cacheed value with epsilon arg */
/* replaced cached value with epsilon arg */
qfree(cln_10_epsilon);
cln_10_epsilon = qcopy(epsilon);
} else if (cln_10 != NULL) {

View File

@@ -1,7 +1,7 @@
/*
* config - configuration routines
*
* Copyright (C) 1999-2007,2014 Landon Curt Noll and David I. Bell
* Copyright (C) 1999-2007,2014,2021 Landon Curt Noll and David I. Bell
*
* Primary author: Landon Curt Noll
*
@@ -130,7 +130,7 @@ struct config {
LEN sq2; /* size of number to use square algorithm 2 */
LEN pow2; /* size of modulus to use REDC for powers */
LEN redc2; /* size of modulus to use REDC algorithm 2 */
BOOL tilde_ok; /* ok to print a tilde on aproximations */
BOOL tilde_ok; /* ok to print a tilde on approximations */
BOOL tab_ok; /* ok to print tab before numeric values */
LEN quomod; /* quomod() default rounding mode */
LEN quo; /* quotient // default rounding mode */
@@ -163,7 +163,7 @@ struct config {
BOOL *allow_custom; /* ptr to if custom functions are allowed */
char *version; /* calc version string */
int baseb; /* base for calculations */
BOOL redecl_warn; /* TRUE => warn of redeclating variables */
BOOL redecl_warn; /* TRUE => warn of redeclaring variables */
BOOL dupvar_warn; /* TRUE => warn of var name collisions */
};
typedef struct config CONFIG;

View File

@@ -52,37 +52,6 @@ For more info, see:
#####
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:
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.
=-=
4dsphere
Determine if 6 points lie on the surface of a 4-dimensional sphere in R^4.
@@ -107,7 +76,7 @@ mersenne exp
piforever
Print the value of pi forever, or as long as you cpu / memory allows.
Print the value of pi forever, or as long as you CPU / memory allows.
plus arg ...
@@ -125,7 +94,7 @@ simple
A trivial example of a calc shell script.
## 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

View File

@@ -1,8 +1,8 @@
#!/usr/local/src/bin/calc/calc -q -s -f
/*
* piforever - print digits of pi forever (or as long as your mem/cpu allow)
* piforever - print digits of pi forever (or as long as your mem/CPU allow)
*
* Copyright (C) 1999-2007,2014,2019 Landon Curt Noll
* Copyright (C) 1999-2007,2014,2019,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

View File

@@ -1,7 +1,7 @@
/*
* custom - interface for custom software and hardware interfaces
*
* Copyright (C) 1999-2006,2018 Landon Curt Noll
* Copyright (C) 1999-2006,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
@@ -109,7 +109,7 @@ custom(char *name, int count, VALUE **vals)
/*
* showcustom - display the names and brief descriptins of custom functions
* showcustom - display the names and brief descriptions of custom functions
*/
/*ARGSUSED*/
void

View File

@@ -1,7 +1,7 @@
/*
* custom - interface for custom software and hardware interfaces
*
* 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
@@ -35,7 +35,7 @@
*
* before they include this file.
*
* Keep this file down to a minimum. Don't put custom builtin funcion
* Keep this file down to a minimum. Don't put custom builtin function
* stuff in this file!
*/
@@ -45,7 +45,7 @@
/*
* arg count definitons
* arg count definitions
*/
#define MAX_CUSTOM_ARGS 100 /* maximum number of custom arguments */

View File

@@ -220,7 +220,7 @@ Step 5: Write your custom function
NOTE: If you do not use any of the 3 function parameters,
then you should declare that function parameter to be UNUSED.
For example, if the count and vals parameters were not used
in your custom function, then your declaraction should be:
in your custom function, then your declaration should be:
/*ARGSUSED*/
VALUE
@@ -645,7 +645,7 @@ Step 12: Contribute
and consider submitting your custom function for possible
inclusion in later versions of calc.
## 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

View File

@@ -2,7 +2,7 @@
#
# custom - makefile for calc custom routines
#
# Copyright (C) 1999-2006,2014,2017-2018 Landon Curt Noll
# Copyright (C) 1999-2006,2014,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
@@ -36,7 +36,7 @@
#
# make ...__optional_arguments_... target=value
# Try uname -s if the target was not alreadhy set on the make command line
# Try uname -s if the target was not already set on the make command line
#
ifeq ($(target),)
target=$(shell uname -s 2>/dev/null)
@@ -125,7 +125,7 @@ Q=@
#INCDIR= /dev/env/DJDIR/include
INCDIR= /usr/include
# where to install calc realted things
# where to install calc related things
#
# ${BINDIR} where to install calc binary files
# ${LIBDIR} where calc link library (*.a) files are installed
@@ -348,7 +348,7 @@ EXT=
# The default calc versions
#
VERSION= 2.12.7.6
VERSION= 2.12.8.0
# Names of shared libraries with versions
#
@@ -391,7 +391,7 @@ AWK= awk
# NOTE: These should be left blank in this Makefile to make it
# easier to add stuff on the command line. If you want to
# to change the way calc is compiled by this Makefile, change
# the appropirate host target section below or a flag above.
# the appropriate host target section below or a flag above.
#
EXTRA_CFLAGS=
EXTRA_LDFLAGS=
@@ -493,7 +493,7 @@ LDFLAGS= ${LD_DEBUG} ${ILDFLAGS}
# #
# calc-contrib at asthe dot com #
# #
# EMail address an "ifeq ($(target),YOUR_TARGET_NAME)" ... "endif" #
# Email address an "ifeq ($(target),YOUR_TARGET_NAME)" ... "endif" #
# set of lines so that we can consider them for the next release. #
##########################################################################
@@ -1084,7 +1084,7 @@ CUSTCALC_OBJ= ${REQUIRED_OBJ} ${CUSTOM_OBJ}
#
C_SRC= ${REQUIRED_SRC} ${CUSTOM_SRC}
# These .h files are used to build the dependecy list
# These .h files are used to build the dependency list
#
H_SRC= ${CUSTOM_H_SRC}
@@ -1101,7 +1101,7 @@ DISTLIST= ${CUSTCALC_SRC} ${CUSTOM_CALC_FILES} ${CUSTOM_HELP} \
#
CALCLIBLIST= ${CUSTCALC_SRC} ${INSTALL_H_SRC} ${MAKE_FILE} HOW_TO_ADD
# This is the custom dynbamic shared library that is build
# This is the custom dynamic shared library that is build
#
CALC_DYNAMIC_LIBCUSTCALC= libcustcalc${LIB_EXT_VERSION}
@@ -1155,7 +1155,7 @@ c_sysinfo.o: c_sysinfo.c ${MAKE_FILE}
###
#
# building calc-static and static lib*.a libraires
# building calc-static and static lib*.a libraries
#
###
@@ -1174,7 +1174,7 @@ libcustcalc.a: ${CUSTCALC_OBJ} ${MAKE_FILE}
# sub-directory called calc/lib.
#
# 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*
#
##
@@ -1213,7 +1213,7 @@ Makefile.simple: ${MAKE_FILE}
# Home grown make dependency rules. Your system make not support
# or have the needed tools. You can ignore this section.
#
# We will form a skelaton tree of *.c files containing only #include "foo.h"
# We will form a skeleton tree of *.c files containing only #include "foo.h"
# lines and .h files containing the same lines surrounded by multiple include
# prevention lines. This allows us to build a static depend list that will
# satisfy all possible cpp symbol definition combinations.
@@ -1531,7 +1531,7 @@ uninstall:
if [ -f "${T}${CUSTOMCALDIR}/libcustcalc.a" ]; then \
echo "cannot uninstall ${T}${CUSTOMCALDIR}/libcustcalc.a"; \
else \
echo "uninstalled ${T}${CUSTOMCALDIR}/libcustcalc.a"; \
echo "un-installed ${T}${CUSTOMCALDIR}/libcustcalc.a"; \
fi; \
fi
-${Q} for i in ${CUSTOM_HELP} /dev/null; do \
@@ -1543,7 +1543,7 @@ uninstall:
if [ -f "${T}${CUSTOMHELPDIR}/$$i" ]; then \
echo "cannot uninstall ${T}${CUSTOMHELPDIR}/$$i"; \
else \
echo "uninstalled ${T}${CUSTOMHELPDIR}/$$i"; \
echo "un-installed ${T}${CUSTOMHELPDIR}/$$i"; \
fi; \
fi; \
done
@@ -1556,7 +1556,7 @@ uninstall:
if [ -f "${T}${CUSTOMCALDIR}/$$i" ]; then \
echo "cannot uninstall ${T}${CUSTOMCALDIR}/$$i"; \
else \
echo "uninstalled ${T}${CUSTOMCALDIR}/$$i"; \
echo "un-installed ${T}${CUSTOMCALDIR}/$$i"; \
fi; \
fi; \
done
@@ -1569,7 +1569,7 @@ uninstall:
if [ -f "${T}${CUSTOMINCDIR}/$$i" ]; then \
echo "cannot uninstall ${T}${CUSTOMINCDIR}/$$i"; \
else \
echo "uninstalled ${T}${CUSTOMINCDIR}/$$i"; \
echo "un-installed ${T}${CUSTOMINCDIR}/$$i"; \
fi; \
fi; \
done

View File

@@ -2,7 +2,7 @@
#
# custom - makefile for calc custom routines
#
# Copyright (C) 1999-2006,2014,2017-2018 Landon Curt Noll
# Copyright (C) 1999-2006,2014,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
@@ -36,7 +36,7 @@
#
# make ...__optional_arguments_... target=value
# Try uname -s if the target was not alreadhy set on the make command line
# Try uname -s if the target was not already set on the make command line
#
ifeq ($(target),)
target=$(shell uname -s 2>/dev/null)
@@ -125,7 +125,7 @@ Q=@
#INCDIR= /dev/env/DJDIR/include
INCDIR= /usr/include
# where to install calc realted things
# where to install calc related things
#
# ${BINDIR} where to install calc binary files
# ${LIBDIR} where calc link library (*.a) files are installed
@@ -348,7 +348,7 @@ EXT=
# The default calc versions
#
VERSION= 2.12.7.6
VERSION= 2.12.8.0
# Names of shared libraries with versions
#
@@ -391,7 +391,7 @@ AWK= awk
# NOTE: These should be left blank in this Makefile to make it
# easier to add stuff on the command line. If you want to
# to change the way calc is compiled by this Makefile, change
# the appropirate host target section below or a flag above.
# the appropriate host target section below or a flag above.
#
EXTRA_CFLAGS=
EXTRA_LDFLAGS=

View File

@@ -32,7 +32,7 @@ CUSTCALC_OBJ= ${REQUIRED_OBJ} ${CUSTOM_OBJ}
#
C_SRC= ${REQUIRED_SRC} ${CUSTOM_SRC}
# These .h files are used to build the dependecy list
# These .h files are used to build the dependency list
#
H_SRC= ${CUSTOM_H_SRC}
@@ -49,7 +49,7 @@ DISTLIST= ${CUSTCALC_SRC} ${CUSTOM_CALC_FILES} ${CUSTOM_HELP} \
#
CALCLIBLIST= ${CUSTCALC_SRC} ${INSTALL_H_SRC} ${MAKE_FILE} HOW_TO_ADD
# This is the custom dynbamic shared library that is build
# This is the custom dynamic shared library that is build
#
CALC_DYNAMIC_LIBCUSTCALC= libcustcalc${LIB_EXT_VERSION}
@@ -103,7 +103,7 @@ c_sysinfo.o: c_sysinfo.c ${MAKE_FILE}
###
#
# building calc-static and static lib*.a libraires
# building calc-static and static lib*.a libraries
#
###
@@ -122,7 +122,7 @@ libcustcalc.a: ${CUSTCALC_OBJ} ${MAKE_FILE}
# sub-directory called calc/lib.
#
# 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*
#
##
@@ -161,7 +161,7 @@ Makefile.simple: ${MAKE_FILE}
# Home grown make dependency rules. Your system make not support
# or have the needed tools. You can ignore this section.
#
# We will form a skelaton tree of *.c files containing only #include "foo.h"
# We will form a skeleton tree of *.c files containing only #include "foo.h"
# lines and .h files containing the same lines surrounded by multiple include
# prevention lines. This allows us to build a static depend list that will
# satisfy all possible cpp symbol definition combinations.
@@ -479,7 +479,7 @@ uninstall:
if [ -f "${T}${CUSTOMCALDIR}/libcustcalc.a" ]; then \
echo "cannot uninstall ${T}${CUSTOMCALDIR}/libcustcalc.a"; \
else \
echo "uninstalled ${T}${CUSTOMCALDIR}/libcustcalc.a"; \
echo "un-installed ${T}${CUSTOMCALDIR}/libcustcalc.a"; \
fi; \
fi
-${Q} for i in ${CUSTOM_HELP} /dev/null; do \
@@ -491,7 +491,7 @@ uninstall:
if [ -f "${T}${CUSTOMHELPDIR}/$$i" ]; then \
echo "cannot uninstall ${T}${CUSTOMHELPDIR}/$$i"; \
else \
echo "uninstalled ${T}${CUSTOMHELPDIR}/$$i"; \
echo "un-installed ${T}${CUSTOMHELPDIR}/$$i"; \
fi; \
fi; \
done
@@ -504,7 +504,7 @@ uninstall:
if [ -f "${T}${CUSTOMCALDIR}/$$i" ]; then \
echo "cannot uninstall ${T}${CUSTOMCALDIR}/$$i"; \
else \
echo "uninstalled ${T}${CUSTOMCALDIR}/$$i"; \
echo "un-installed ${T}${CUSTOMCALDIR}/$$i"; \
fi; \
fi; \
done
@@ -517,7 +517,7 @@ uninstall:
if [ -f "${T}${CUSTOMINCDIR}/$$i" ]; then \
echo "cannot uninstall ${T}${CUSTOMINCDIR}/$$i"; \
else \
echo "uninstalled ${T}${CUSTOMINCDIR}/$$i"; \
echo "un-installed ${T}${CUSTOMINCDIR}/$$i"; \
fi; \
fi; \
done

View File

@@ -1,7 +1,7 @@
/*
* c_pmodm127 - calculate q mod 2^(2^127-1)
*
* Copyright (C) 2004-2007 Landon Curt Noll
* Copyright (C) 2004-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
@@ -124,7 +124,7 @@ c_pmodm127(char UNUSED *name, int UNUSED count, VALUE **vals)
result.v_type = V_NUM;
/*
* compute 2^(2^127-1) mod q by modular exponentation
* compute 2^(2^127-1) mod q by modular exponentiation
*
* We implement the following calc code in C:
*

View File

@@ -1,7 +1,7 @@
/*
* c_pzasusb8 - print numereator as a string of USB8s
* c_pzasusb8 - print numerator as a string of USB8s
*
* Copyright (C) 1999-2004 Ernest Bowen
* Copyright (C) 1999-2004,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
@@ -36,7 +36,7 @@
#include "have_unused.h"
/*
* c_pzasusb8 - print numereator as a string of USB8s
* c_pzasusb8 - print numerator as a string of USB8s
*
* given:
* count = 1;

View File

@@ -1,7 +1,7 @@
/*
* c_sysinfo - names and values of selected #defines
*
* 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
@@ -177,15 +177,15 @@ STATIC struct infoname sys_info[] = {
(FULL)MAXUFULL},
{"MAXULONG", "largest unsigned long val", NULL,
(FULL)MAXULONG},
{"MAX_MAP_PRIME", "larest prime in pr_map", NULL,
{"MAX_MAP_PRIME", "largest prime in pr_map", NULL,
(FULL)MAX_MAP_PRIME},
{"MAX_MAP_VAL", "larest bit in pr_map", NULL,
{"MAX_MAP_VAL", "largest bit in pr_map", NULL,
(FULL)MAX_MAP_VAL},
{"MAX_PFACT_VAL", "max x, for which pfact(x) is a long", NULL,
(FULL)MAX_PFACT_VAL},
{"MAX_SM_PRIME", "larest 32 bit prime", NULL,
{"MAX_SM_PRIME", "largest 32 bit prime", NULL,
(FULL)MAX_SM_PRIME},
{"MAX_SM_VAL", "larest 32 bit value", NULL,
{"MAX_SM_VAL", "largest 32 bit value", NULL,
(FULL)MAX_SM_VAL},
{"MUL_ALG2", "default size for alternative multiply", NULL,
(FULL)MUL_ALG2},

View File

@@ -1,7 +1,7 @@
/*
* custtbl - custom interface table
*
* 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
@@ -40,7 +40,7 @@
/*
* add your forward custom function declaractions here
* add your forward custom function declarations here
*
* Declare custom functions as follows:
*

View File

@@ -10,7 +10,7 @@ TYPES
return null
DESCRIPTION
This custom function does nothing. It is intented for testing
This custom function does nothing. It is intended for testing
of the general custom interface.
EXAMPLE
@@ -26,7 +26,7 @@ LIBRARY
SEE ALSO
custom
## 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

View File

@@ -25,7 +25,7 @@ DESCRIPTION
SPECIAL NOTE:
Can you find a value, q, for which this custom function returns 1?
If you do, send the value of q to chongo using the EMail address
If you do, send the value of q to chongo using the Email address
found at:
http://www.isthe.com/chongo/address.html
@@ -51,7 +51,7 @@ LIBRARY
SEE ALSO
custom
## Copyright (C) 2004 Landon Curt Noll
## Copyright (C) 2004,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

View File

@@ -21,7 +21,7 @@ DESCRIPTION
for details.
This custom function is intented for testing of the general
This custom function is intended for testing of the general
custom interface.
EXAMPLE
@@ -49,7 +49,7 @@ LIBRARY
SEE ALSO
custom
## 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

View File

@@ -1,7 +1,7 @@
/*
* pzasusb8 - print numereator as a string of USB8s
* pzasusb8 - print numerator as a string of USB8s
*
* Copyright (C) 1999,2004 Ernest Bowen and Landon Curt Noll
* Copyright (C) 1999,2004,2021 Ernest Bowen and Landon Curt Noll
*
* Primary author: Ernest Bowen
*

View File

@@ -20,14 +20,14 @@ DESCRIPTION
The number of custom registers is defined at compile time.
There will be at least 32 registers although there could be more
added in the future. It may be deterimed by:
added in the future. It may be determined by:
custom("sysinfo", "REGNUM_MAX")
The custom registers are initialized to 0 by the internal
function libcalc_call_me_first() during calc startup.
This custom interface is intented to make it easier to interface
This custom interface is intended to make it easier to interface
with special purpose hardware.
EXAMPLE
@@ -46,7 +46,7 @@ EXAMPLE
LIMITS
calc must be built with ALLOW_CUSTOM= -DCUSTOM
calc must be executed with a -C arg.
The regnum numbe bee an integer >= 0 and < REGNUM_MAX where
The regnum number bee an integer >= 0 and < REGNUM_MAX where
REGNUM_MAX is a compile time constant that is >= 32.
LIBRARY
@@ -55,7 +55,7 @@ LIBRARY
SEE ALSO
custom
## Copyright (C) 2007 Landon Curt Noll
## Copyright (C) 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

View File

@@ -13,7 +13,7 @@ DESCRIPTION
This custom function will return the value certain selected #define
values. The infoname arg must be a string that matches the given
#define name. For conveience, the case infoname does not matter,
#define name. For convenience, the case infoname does not matter,
so "baseb" and "BASEB" refer to the same #define value.
The return value is either an integer or a string depending on
@@ -53,7 +53,7 @@ LIBRARY
SEE ALSO
custom
## 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

View File

@@ -1,7 +1,7 @@
/*
* endian - determine the byte order of a long on your machine
*
* Copyright (C) 1999-2013 Landon Curt Noll
* Copyright (C) 1999-2013,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
@@ -25,7 +25,7 @@
*/
/*
* Big Endian: Amdahl, 68k, Pyramid, Mips, Sparc, ...
* Big Endian: Amdahl, 68k, Pyramid, MIPS, Sparc, ...
* Little Endian: Vax, 32k, Spim (Dec Mips), i386, i486, ...
*/

39
file.c
View File

@@ -1,7 +1,7 @@
/*
* file - file I/O routines callable by users
*
* Copyright (C) 1999-2007,2018 David I. Bell and Landon Curt Noll
* Copyright (C) 1999-2007,2018,2021 David I. Bell and Landon Curt Noll
*
* Primary author: David I. Bell
*
@@ -50,6 +50,8 @@
#define READSIZE 1024 /* buffer size for reading */
#define MIN(a,b) (((a) <= (b)) ? (a) : (b))
/*
* external STDIO functions
*/
@@ -97,7 +99,7 @@ S_FUNC void fskipnum(FILE *fp);
/*
* file_init - perform needed initilization work
* file_init - perform needed initialization work
*
* On some systems, one cannot initialize a pointer to a FILE *.
* This routine, called once at startup is a work-a-round for
@@ -238,7 +240,7 @@ init_fileio(FILEIO *fiop, char *name, char *mode,
* determine file open mode
*
* While a leading 'r' is for reading and a leading 'w' is
* for writing, the presense of a '+' in the string means
* for writing, the presence of a '+' in the string means
* both reading and writing. A leading 'a' means append
* which is writing.
*/
@@ -1406,7 +1408,7 @@ z2filepos(ZVALUE zpos)
/*
* firewall
*/
zpos.sign = 0; /* deal only with the absolue value */
zpos.sign = 0; /* deal only with the absolute value */
/*
* quick return if the position can fit into a long
@@ -1414,23 +1416,22 @@ z2filepos(ZVALUE zpos)
#if FILEPOS_BITS == FULL_BITS
/* ztofull puts the value into native byte order */
pos = ztofull(zpos);
/* on some hosts, FILEPOS is not a scalar */
memset(&ret, 0, sizeof(FILEPOS));
memcpy((void *)&ret, (void *)&pos, sizeof(FILEPOS));
memset(&ret, 0, sizeof(ret)); /* FILEPOS could be non-scalar */
memcpy((void *)&ret, (void *)&pos, MIN(sizeof(ret), sizeof(pos)));
return ret;
#elif FILEPOS_BITS < FULL_BITS
/* ztofull puts the value into native byte order */
pos = ztolong(zpos);
/* on some hosts, FILEPOS is not a scalar */
memset(&ret, 0, sizeof(FILEPOS));
memcpy((void *)&ret, (void *)&pos, sizeof(pos));
memset(&ret, 0, sizeof(ret)); /* FILEPOS could be non-scalar */
memcpy((void *)&ret, (void *)&pos, MIN(sizeof(ret), sizeof(pos)));
return ret;
#else /* FILEPOS_BITS > FULL_BITS */
if (!zgtmaxfull(zpos)) {
/* ztofull puts the value into native byte order */
pos = ztofull(zpos);
memset(&ret, 0, sizeof(FILEPOS));
memcpy((void *)&ret, (void *)&pos, sizeof(pos));
memset(&ret, 0, sizeof(ret)); /* FILEPOS could be non-scalar */
memcpy((void *)&ret, (void *)&pos,
MIN(sizeof(ret), sizeof(pos)));
return ret;
}
@@ -1439,11 +1440,13 @@ z2filepos(ZVALUE zpos)
*/
if (zpos.len >= FILEPOS_BITS/BASEB) {
/* copy the lower FILEPOS_BITS of the ZVALUE */
memcpy(&tmp, zpos.v, sizeof(FILEPOS));
memset(&tmp, 0, sizeof(tmp)); /* FILEPOS could be non-scalar */
memcpy(&tmp, zpos.v, MIN(sizeof(tmp), FILEPOS_LEN);
} else {
/* copy what bits we can into the temp value */
memset(&tmp, 0, sizeof(FILEPOS));
memcpy(&tmp, zpos.v, zpos.len*BASEB/8);
memset(&tmp, 0, sizeof(tmp)); /* FILEPOS could be non-scalar */
memcpy(&tmp, zpos.v, MIN(sizeof(tmp),
MIN(zpos.len*BASEB/8, FILEPOS_LEN)));
}
/* swap into native byte order */
SWAP_HALF_IN_FILEPOS(&ret, &tmp);
@@ -1646,7 +1649,7 @@ set_open_pos(FILE *fp, ZVALUE zpos)
}
/*
* return sucess
* return success
*/
return 0;
}
@@ -2603,7 +2606,7 @@ isattyid(FILEID id)
* given:
* id FILEID to search
* str string to look for
* pos file postion to start at (NULL => current position)
* pos file position to start at (NULL => current position)
*
* returns:
* EOF if system error
@@ -2613,7 +2616,7 @@ isattyid(FILEID id)
*
* XXX - This search is a translation of the original search that did not
* work with large files. The search algorithm used is slow and
* should be spead up much more.
* should be speed up much more.
*/
int
fsearch(FILEID id, char *str, ZVALUE start, ZVALUE end, ZVALUE *res)

4
file.h
View File

@@ -1,7 +1,7 @@
/*
* file - file I/O routines callable by users
*
* Copyright (C) 1999-2007,2014 David I. Bell and Landon Curt Noll
* Copyright (C) 1999-2007,2014,2021 David I. Bell and Landon Curt Noll
*
* Primary author: David I. Bell
*
@@ -63,7 +63,7 @@ typedef struct {
* Seek loc bytes from the beginning of the open file, stream.
*
* f_tell(FILE *stream, FILEPOS *loc)
* Set loc to bytes from the beinning of the open file, stream.
* Set loc to bytes from the beginning of the open file, stream.
*
* We assume that if your system does not have fgetpos/fsetpos,
* then it will have a FILEPOS that is a scalar type (e.g., long).

View File

@@ -1,7 +1,7 @@
/*
* fposval - Determine information about the file position type
*
* 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
@@ -122,7 +122,7 @@ main(int argc, char **argv)
#else /* HAVE_FILEPOS_SCALAR */
/*
* Normally a "(*(dest) = *(src))" would do, but on some
* systems a FILEPOS is not a scalar hince we must memcpy.
* systems a FILEPOS is not a scalar hence we must memcpy.
*/
printf("#define SWAP_HALF_IN_FILEPOS(dest, src)\t%s\n",
"\\\n\tmemcpy((void *)(dest), (void *)(src), "
@@ -163,7 +163,7 @@ main(int argc, char **argv)
* Little Endian
*
* Normally a "(*(dest) = *(src))" would do, but on some
* systems an off_t is not a scalar hince we must memcpy.
* systems an off_t is not a scalar hence we must memcpy.
*/
#if defined(HAVE_OFF_T_SCALAR)
printf("#define SWAP_HALF_IN_OFF_T(dest, src)\t\t%s\n",
@@ -171,7 +171,7 @@ main(int argc, char **argv)
#else /* HAVE_OFF_T_SCALAR */
/*
* Normally a "(*(dest) = *(src))" would do, but on some
* systems, a off_t is not a scalar hince we must memcpy.
* systems, a off_t is not a scalar hence we must memcpy.
*/
printf("#define SWAP_HALF_IN_OFF_T(dest, src)\t%s%d%s\n",
"memcpy((void *)(dest), (void *)(src), ", stsizelen/8, ")");
@@ -214,7 +214,7 @@ main(int argc, char **argv)
* Little Endian
*
* Normally a "(*(dest) = *(src))" would do, but on some
* systems, a DEV is not a scalar hince we must memcpy.
* systems, a DEV is not a scalar hence we must memcpy.
*/
printf("#define SWAP_HALF_IN_DEV(dest, src)\t%s%d%s\n",
"memcpy((void *)(dest), (void *)(src), ", devlen/8, ")");
@@ -256,7 +256,7 @@ main(int argc, char **argv)
* Little Endian
*
* Normally a "(*(dest) = *(src))" would do, but on some
* systems, a INODE is not a scalar hince we must memcpy.
* systems, a INODE is not a scalar hence we must memcpy.
*/
printf("#define SWAP_HALF_IN_INODE(dest, src)\t%s%d%s\n",
"memcpy((void *)(dest), (void *)(src), ", inodelen/8, ")");

104
func.c
View File

@@ -1,7 +1,8 @@
/*
* func - built-in functions implemented here
*
* Copyright (C) 1999-2007,2018 David I. Bell, Landon Curt Noll & Ernest Bowen
* Copyright (C) 1999-2007,2018,2021 David I. Bell, Landon Curt Noll
* and Ernest Bowen
*
* Primary author: David I. Bell
*
@@ -268,7 +269,22 @@ f_prompt(VALUE *vp)
math_error("Cannot allocate string");
/*NOTREACHED*/
}
strncpy(newcp, cp, len+1);
/*
* The next statement could be::
*
* strncpy(newcp, cp, len);
*
* however compilers like gcc would issue warnings such as:
*
* specified bound depends on the length of the
* source argument
*
* even though we terminate the string by setting a NUL
* byte following the copy. Therefore we call memcpy()
* instead to avoid such warnings.
*/
memcpy(newcp, cp, len);
newcp[len] = '\0';
result.v_str = makestring(newcp);
return result;
}
@@ -5522,7 +5538,7 @@ f_usertime(void)
NUMBER *secret; /* whole sconds of CPU time to return */
NUMBER *usecret; /* microseconds of CPU time to return */
/* get the resource informaion for ourself */
/* get the resource information for ourself */
status = getrusage(who, &usage);
if (status < 0) {
/* system call error, so return 0 */
@@ -5561,7 +5577,7 @@ f_systime(void)
NUMBER *secret; /* whole sconds of CPU time to return */
NUMBER *usecret; /* microseconds of CPU time to return */
/* get the resource informaion for ourself */
/* get the resource information for ourself */
status = getrusage(who, &usage);
if (status < 0) {
/* system call error, so return 0 */
@@ -5601,7 +5617,7 @@ f_runtime(void)
NUMBER *secret; /* whole sconds of CPU time to return */
NUMBER *usecret; /* microseconds of CPU time to return */
/* get the resource informaion for ourself */
/* get the resource information for ourself */
status = getrusage(who, &usage);
if (status < 0) {
/* system call error, so return 0 */
@@ -5718,7 +5734,7 @@ f_fpathopen(int count, VALUE **vals)
/* initialize VALUE */
result.v_subtype = V_NOSUBTYPE;
/* check for valid strongs */
/* check for valid strong */
if (vals[0]->v_type != V_STR || vals[1]->v_type != V_STR) {
return error_value(E_FPATHOPEN1);
}
@@ -7446,7 +7462,26 @@ f_cmdbuf(void)
cmdbuf_len = strlen(cmdbuf);
newcp = (char *)malloc(cmdbuf_len+1);
strncpy(newcp, cmdbuf, cmdbuf_len+1);
if (newcp == NULL) {
math_error("Cannot allocate string in cmdbuf");
/*NOTREACHED*/
}
/*
* The next statement could be::
*
* strncpy(newcp, cmdbuf, cmdbuf_len);
*
* however compilers like gcc would issue warnings such as:
*
* specified bound depends on the length of the
* source argument
*
* even though we terminate the string by setting a NUL
* byte following the copy. Therefore we call memcpy()
* instead to avoid such warnings.
*/
memcpy(newcp, cmdbuf, cmdbuf_len);
newcp[cmdbuf_len] = '\0';
result.v_str = makestring(newcp);
return result;
}
@@ -7624,17 +7659,35 @@ f_putenv(int count, VALUE **vals)
/* convert putenv("foo","bar") into putenv("foo=bar") */
snprintf_len = vals[0]->v_str->s_len + 1 +
vals[1]->v_str->s_len + 1;
vals[1]->v_str->s_len;
putenv_str = (char *)malloc(snprintf_len+1);
if (putenv_str == NULL) {
math_error("Cannot allocate string in putenv");
/*NOTREACHED*/
}
snprintf(putenv_str, snprintf_len,
"%s=%s", vals[0]->v_str->s_str,
vals[1]->v_str->s_str);
putenv_str[snprintf_len] = '\0'; /* paranoia */
/*
* The next statement could be::
*
* snprintf(putenv_str, snprintf_len,
* "%s=%s", vals[0]->v_str->s_str,
* vals[1]->v_str->s_str);
*
* however compilers like gcc would issue warnings such as:
*
* null destination pointer
*
* even though we check that putenv_str is non-NULL
* above before using it. Therefore we call memcpy()
* twice and make an assignment instead to avoid such warnings.
*/
memcpy(putenv_str,
vals[0]->v_str->s_str,
vals[0]->v_str->s_len);
putenv_str[vals[0]->v_str->s_len] = '=';
memcpy(putenv_str + vals[0]->v_str->s_len + 1,
vals[1]->v_str->s_str,
vals[1]->v_str->s_len);
putenv_str[snprintf_len] = '\0';
} else {
/* firewall */
@@ -7658,8 +7711,9 @@ f_putenv(int count, VALUE **vals)
math_error("Cannot allocate string in putenv");
/*NOTREACHED*/
}
strncpy(putenv_str, vals[0]->v_str->s_str,
vals[0]->v_str->s_len + 1);
memcpy(putenv_str, vals[0]->v_str->s_str,
vals[0]->v_str->s_len);
putenv_str[vals[0]->v_str->s_len] = '\0';
}
/* return putenv result */
@@ -7786,7 +7840,7 @@ f_base(int count, NUMBER **vals)
return base_value(conf->outmode, conf->outmode);
}
/* deal with the specal modes first */
/* deal with the special modes first */
if (qisfrac(vals[0])) {
return base_value(math_setmode(MODE_FRAC), conf->outmode);
}
@@ -7837,7 +7891,7 @@ f_base2(int count, NUMBER **vals)
return base_value(conf->outmode2, conf->outmode2);
}
/* deal with the specal modes first */
/* deal with the special modes first */
if (qisfrac(vals[0])) {
return base_value(math_setmode2(MODE_FRAC), conf->outmode2);
}
@@ -8457,7 +8511,7 @@ f_version(void)
{
VALUE result;
/* return the calc verstion string */
/* return the calc version string */
result.v_type = V_STR;
result.v_subtype = V_NOSUBTYPE;
result.v_str = makestring(strdup(version()));
@@ -8523,7 +8577,7 @@ STATIC CONST struct builtin builtins[] = {
{"acsch", 1, 2, 0, OP_NOP, 0, f_acsch,
"inverse csch of a within accuracy b"},
{"agd", 1, 2, 0, OP_NOP, 0, f_agd,
"inverse gudermannian function"},
"inverse Gudermannian function"},
{"append", 1, IN, FA, OP_NOP, 0, f_listappend,
"append values to end of list"},
{"appr", 1, 3, 0, OP_NOP, 0, f_appr,
@@ -8734,7 +8788,7 @@ STATIC CONST struct builtin builtins[] = {
{"gcdrem", 2, 2, 0, OP_NOP, qgcdrem, 0,
"a divided repeatedly by gcd with b"},
{"gd", 1, 2, 0, OP_NOP, 0, f_gd,
"gudermannian function"},
"Gudermannian function"},
{"getenv", 1, 1, 0, OP_NOP, 0, f_getenv,
"value of environment variable (or NULL)"},
{"hash", 1, IN, 0, OP_NOP, 0, f_hash,
@@ -9014,7 +9068,7 @@ STATIC CONST struct builtin builtins[] = {
"reverse search matrix or list for value b\n"
"\t\t\tstarting at index c"},
{"runtime", 0, 0, 0, OP_NOP, f_runtime, 0,
"user and kernel mode cpu time in seconds"},
"user and kernel mode CPU time in seconds"},
{"saveval", 1, 1, 0, OP_SAVEVAL, 0, 0,
"set flag for saving values"},
{"scale", 2, 2, 0, OP_SCALE, 0, 0,
@@ -9033,7 +9087,7 @@ STATIC CONST struct builtin builtins[] = {
{"sech", 1, 2, 0, OP_NOP, 0, f_sech,
"hyperbolic secant of a within accuracy b"},
{"seed", 0, 0, 0, OP_NOP, f_seed, 0,
"return a 64 bit seed for a psuedo-random generator"},
"return a 64 bit seed for a pseudo-random generator"},
{"segment", 2, 3, 0, OP_NOP, 0, f_segment,
"specified segment of specified list"},
{"select", 2, 2, 0, OP_NOP, 0, f_select,
@@ -9107,7 +9161,7 @@ STATIC CONST struct builtin builtins[] = {
{"system", 1, 1, 0, OP_NOP, 0, f_system,
"call Unix command"},
{"systime", 0, 0, 0, OP_NOP, f_systime, 0,
"kernel mode cpu time in seconds"},
"kernel mode CPU time in seconds"},
{"tail", 2, 2, 0, OP_NOP, 0, f_tail,
"retain list of specified number at tail of list"},
{"tan", 1, 2, 0, OP_NOP, 0, f_tan,
@@ -9123,7 +9177,7 @@ STATIC CONST struct builtin builtins[] = {
{"ungetc", 2, 2, 0, OP_NOP, 0, f_ungetc,
"unget char read from file"},
{"usertime", 0, 0, 0, OP_NOP, f_usertime, 0,
"user mode cpu time in seconds"},
"user mode CPU time in seconds"},
{"version", 0, 0, 0, OP_NOP, 0, f_version,
"calc version string"},
{"xor", 1, IN, 0, OP_NOP, 0, f_xor,
@@ -9140,7 +9194,7 @@ STATIC CONST struct builtin builtins[] = {
*
* When FUNCLIST is defined, we are being compiled by rules from the help
* sub-directory to form a program that will produce the main part of the
* buiiltin help file.
* builtin help file.
*
* See the builtin rule in the help/Makefile for details.
*/

4
hash.c
View File

@@ -1,7 +1,7 @@
/*
* hash - one-way hash routines
*
* 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
@@ -270,7 +270,7 @@ hash_final(HASH *state)
* The input is a long. If a long is smaller than 64 bits, we will
* hash a final 32 bits of zeros.
*
* This function is OK to hash BOOL's, unslogned long's, unsigned int's
* This function is OK to hash BOOL's, unsigned long's, unsigned int's
* signed int's as well as FLAG's and LEN's.
*/
HASH *

View File

@@ -1,7 +1,7 @@
/*
* have_const - Determine if we want or can support ansi const
* have_const - Determine if we want or can support ANSI const
*
* 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

View File

@@ -55,8 +55,8 @@ int
main(void)
{
#if !defined(OFF_T_NON_SCALAR)
off_t value; /* an off_t to perform arithmatic on */
off_t value2; /* an off_t to perform arithmatic on */
off_t value; /* an off_t to perform arithmetic on */
off_t value2; /* an off_t to perform arithmetic on */
/*
* do some math opts on an off_t

View File

@@ -55,8 +55,8 @@ int
main(void)
{
#if !defined(FILEPOS_NON_SCALAR)
FILEPOS value; /* an FILEPOS to perform arithmatic on */
FILEPOS value2; /* an FILEPOS to perform arithmatic on */
FILEPOS value; /* an FILEPOS to perform arithmetic on */
FILEPOS value2; /* an FILEPOS to perform arithmetic on */
/*
* do some math opts on an FILEPOS

54
help.c
View File

@@ -1,7 +1,7 @@
/*
* help - display help for calc
*
* Copyright (C) 1999-2007,2014,2018 Landon Curt Noll
* Copyright (C) 1999-2007,2014,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
@@ -32,6 +32,7 @@
#include "calc.h"
#include "conf.h"
#include "lib_calc.h"
#include "have_unistd.h"
#if defined(HAVE_UNISTD_H)
@@ -78,6 +79,7 @@ STATIC struct help_alias {
{"cd", "command"},
{"show", "command"},
{"stdlib", "resource"},
{"question", "questions"},
{NULL, NULL}
};
@@ -246,22 +248,13 @@ givehelp(char *type)
/*
* open the helpfile (looking in HELPDIR first)
*/
#if defined(CUSTOM)
if (sizeof(CUSTOMHELPDIR) > sizeof(HELPDIR)) {
snprintf_len = sizeof(CUSTOMHELPDIR)+1+strlen(type) + 1;
} else {
snprintf_len = sizeof(HELPDIR)+1+strlen(type) + 1;
}
snprintf_len = strlen(calc_helpdir)+1+strlen(type) + 1;
helppath = (char *)malloc(snprintf_len+1);
#else /* CUSTOM */
snprintf_len = sizeof(HELPDIR)+1+strlen(type) + 1;
helppath = (char *)malloc(snprintf_len+1);
#endif /* CUSTOM */
if (helppath == NULL) {
fprintf(stderr, "malloc failure in givehelp()\n");
fprintf(stderr, "malloc failure in givehelp #0\n");
return;
}
snprintf(helppath, snprintf_len, "%s/%s", HELPDIR, type);
snprintf(helppath, snprintf_len, "%s/%s", calc_helpdir, type);
helppath[snprintf_len] = '\0'; /* paranoia */
stream = fopen(helppath, "r");
if (stream != NULL) {
@@ -277,22 +270,30 @@ givehelp(char *type)
* open the helpfile (looking in CUSTOMHELPDIR last)
*/
} else {
char *cust_helppath; /* path to the custom help file */
size_t cust_snprintf_len; /* malloced custom snprintf buf len */
snprintf(helppath, snprintf_len, "%s/%s", CUSTOMHELPDIR, type);
helppath[snprintf_len] = '\0'; /* paranoia */
stream = fopen(helppath, "r");
if (stream == NULL) {
cust_snprintf_len = strlen(calc_customhelpdir)+1+strlen(type) + 1;
cust_helppath = (char *)malloc(cust_snprintf_len+1);
if (cust_helppath == NULL) {
fprintf(stderr, "malloc failure for givehelp #1\n");
return;
}
snprintf(cust_helppath, cust_snprintf_len,
"%s/%s", calc_customhelpdir, type);
cust_helppath[cust_snprintf_len] = '\0'; /* paranoia */
stream = fopen(cust_helppath, "r");
if (stream != NULL) {
/* no such help file */
fprintf(stderr,
"%s: no such help file, try: help help\n",
type);
} else {
/*
* we have the help file open, now display it
*/
page_file(stream);
(void) fclose(stream);
}
free(cust_helppath);
cust_helppath = NULL;
/* we have the help file open, now display it */
page_file(stream);
(void) fclose(stream);
}
#endif /* CUSTOM */
}
@@ -300,5 +301,6 @@ givehelp(char *type)
* cleanup
*/
free(helppath);
helppath = NULL;
return;
}

View File

@@ -2,7 +2,7 @@
#
# help - makefile for calc help 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
@@ -69,7 +69,7 @@ TOP_MAKE_FILE= Makefile
#INCDIR= /dev/env/DJDIR/include
INCDIR= /usr/include
# where to install calc realted things
# where to install calc related things
#
# ${BINDIR} where to install calc binary files
# ${LIBDIR} where calc link library (*.a) files are installed
@@ -209,7 +209,7 @@ BLT_HELP_FILES_5= errorcodes
STD_HELP_FILES_6= file history interrupt list mat
# beacuse obj is built special (due to confusion with it as
# because obj is built special (due to confusion with it as
# a symlink for some built environments, we treat obj specially
# and call it obj.file
#
@@ -231,9 +231,9 @@ STD_HELP_FILES_12= archive
BLT_HELP_FILES_13= bugs changes
STD_HELP_FILES_14= contrib credit
STD_HELP_FILES_14= credit
BLT_HELP_FILES_14= COPYING COPYING-LGPL
BLT_HELP_FILES_14= contrib COPYING COPYING-LGPL question
STD_HELP_FILES_15= wishlist todo
@@ -249,7 +249,7 @@ FULL_HELP_FILES= ${STD_HELP_FILES_1} ${STD_HELP_FILES_2} \
${BLT_HELP_FILES_13} ${STD_HELP_FILES_14} \
${BLT_HELP_FILES_14} ${STD_HELP_FILES_15}
# These full files are those who are not built or constrcuted
# These full files are those who are not built or constructed
#
STD_HELP_FILES= ${STD_HELP_FILES_1} ${STD_HELP_FILES_2} \
${STD_HELP_FILES_4} ${STD_HELP_FILES_6} \
@@ -271,7 +271,7 @@ BLT_HELP_FILES= ${BLT_HELP_FILES_3} ${BLT_HELP_FILES_5} \
# The detailed list of help 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:
#
@@ -338,7 +338,7 @@ all: ${FULL_HELP_FILES} full ${DETAIL_HELP} ${DETAIL_CLONE} \
# used by the upper level Makefile to determine of we have done all
#
# 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*
#
.all:
${RM} -f .all
@@ -405,6 +405,18 @@ bugs: ../BUGS
${TRUE}; \
fi
contrib: ../CONTRIB-CODE
${RM} -f $@
${CP} ../CONTRIB-CODE $@
${CHMOD} 0444 $@
-@if [ -z "${Q}" ]; then \
echo ''; \
echo '=-=-= skipping the ${CAT} of help/$@ =-=-='; \
echo ''; \
else \
${TRUE}; \
fi
errorcodes: ../calcerr.h errorcodes.hdr errorcodes.sed
${RM} -f $@
${CAT} errorcodes.hdr > $@
@@ -505,6 +517,18 @@ COPYING-LGPL: ../COPYING-LGPL
${TRUE}; \
fi
question: ../QUESTIONS
${RM} -f $@
${CP} ../QUESTIONS $@
${CHMOD} 0444 $@
-@if [ -z "${Q}" ]; then \
echo ''; \
echo '=-=-= skipping the ${CAT} of help/$@ =-=-='; \
echo ''; \
else \
${TRUE}; \
fi
cscript: ../cscript/README
${RM} -f $@
${CP} ../cscript/README $@
@@ -572,18 +596,18 @@ ${SINGULAR_FILES}: ${PLURAL_FILES}
# Form the builtin file
#
# We ave a "chicken-and-egg" problem. We want the builtn help file to
# We have a "chicken-and-egg" problem. We want the builtin help file to
# accurately reflect the function list. It would be nice if we could
# just execute calc show builtin, but calc may not have been built or
# buildable at this point. The hack-a-round used is to convert ../func.c
# into a standalone program that generates a suitable function list
# that is standwiched between the top and bottom builtin help text.
# build-able at this point. The hack-a-round used is to convert ../func.c
# into a stand-alone program that generates a suitable function list
# that is sandwiched between the top and bottom builtin help text.
#
# We form funclist.c by sedding out unwanted stuff from builtins table,
# converting NUMBER* and VALUE into harmless types and converting
# the showbuiltins() function into main(). Combined with the -DFUNCLIST
# we will avoid all of the complex calc types, macros and defines and
# be left with just main() and a mininal builtins table.
# be left with just main() and a minimal builtins table.
#
# Building funclist.o a portable fashion is ugly because some systems
# do not treat -I.. correctly!
@@ -638,7 +662,7 @@ calcliblist:
done
# The BSDI cdrom makefile expects all help files to be pre-built. This rule
# creats these fils so that the release can be shipped off to BSDI. You can
# creates these files so that the release can be shipped off to BSDI. You can
# ignore this rule.
#
bsdi: all
@@ -662,7 +686,7 @@ detail_help_list:
! -name mat ! -name obj.file ! -name operator \
! -name overview ! -name script ! -name statement \
! -name todo ! -name types ! -name unexpected \
! -name variable ! -name wishlist \
! -name variable ! -name wishlist ! -name question \
-print | \
while read i; do \
if [ X"$$i" != X"/dev/null" ]; then \
@@ -701,7 +725,7 @@ echo_inst_files:
clean:
${RM} -f obj mkbuiltin funclist.c funclist.o funclist${EXT}
${RM} -f COPYING COPYING-LGPL
${RM} -f COPYING COPYING-LGPL question
clobber: clean
${RM} -f ${BLT_HELP_FILES} full .all calc

View File

@@ -75,7 +75,7 @@ DESCRIPTION
Except in cases like strcat(A, "") when *A identified with a literal
string as above, definitions of string values using strcat() or substr()
will copy the relevant strings to newly allocated addresses which will
be useable only while the variables retain these defined values.
be usable only while the variables retain these defined values.
For example, after
; B = C = strcat("a", "bc");
@@ -160,7 +160,7 @@ LINK LIBRARY
SEE ALSO
dereference, isptr
## Copyright (C) 1999-2006 Landon Curt Noll
## Copyright (C) 1999-2006,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

View File

@@ -1,5 +1,5 @@
NAME
agd - inverse gudermannian function
agd - inverse Gudermannian function
SYNOPSIS
agd(z [,eps])
@@ -11,7 +11,7 @@ TYPES
return number or infinite error value
DESCRIPTION
Calculate the inverse gudermannian of z to a nultiple of eps with
Calculate the inverse Gudermannian of z to a multiple of eps with
errors in real and imaginary parts less in absolute value than .75 * eps,
or an error value if z is very close to one of the one of the branch
points of agd(z)..
@@ -56,7 +56,7 @@ LINK LIBRARY
SEE ALSO
gd, exp, ln, sin, sinh, etc.
## 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

View File

@@ -56,7 +56,7 @@
ptest(a,1,0)
Normally ptest performs a some checks to determine if the
value is divisable by some trivial prime. If the 2nd
value is divisible by some trivial prime. If the 2nd
argument is < 0, then the trivial check is omitted.
For example, ptest(a,10) performs the same work as:
@@ -199,7 +199,7 @@
For convenience, any non-integer value is assumed to mean "frac",
and any integer >= 2^64 is assumed to mean "exp".
## Copyright (C) 1999-2017 Landon Curt Noll
## Copyright (C) 1999-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

View File

@@ -20,7 +20,7 @@ DESCRIPTION
combinatorial problems, e.g. for n >= 1, catalan(n) is the number of
ways of using parentheses to express a product of n + 1 letters in
terms of binary products; it is the number of ways of dissecting a
convex polygon with n + 2 sides into triangles by nonintersecting
convex polygon with n + 2 sides into triangles by non-intersecting
diagonals; it is the number of integer-component-incrementing paths
from (x,y) = (0,0) to (x,y) = (n,n) for which always y <= x.
@@ -37,7 +37,7 @@ LINK LIBRARY
SEE ALSO
comb, fact, perm
## Copyright (C) 2000 Ernest Bowen
## Copyright (C) 2000,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

View File

@@ -30,7 +30,7 @@ DESCRIPTION
This corresponds to the use of rnd for functions like round(x, n, rnd).
If bit 3 or 4 of rnd is set, the lower order bits are ignored; bit 3
is ignored if bit 4 is set. Thusi, for rnd > 3, it sufficient to
is ignored if bit 4 is set. Thus, for rnd > 3, it sufficient to
consider the two cases rnd = 8 and rnd = 16.
If den(x) > 2, cfsim(x, 8) returns the value of the penultimate simple
@@ -113,7 +113,7 @@ LINK LIBRARY
SEE ALSO
cfappr
## 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

View File

@@ -47,7 +47,7 @@ DESCRIPTION
obj point {x,y};
if points with real components are to be partially ordered by their
euclidean distance from the origin, an appropriate point_rel
Euclidean distance from the origin, an appropriate point_rel
function may be that given by
define point_rel(a,b) = sgn(a.x^2 + a.y^2 - b.x^2 - b.y^2);
@@ -114,7 +114,7 @@ LINK LIBRARY
SEE ALSO
sgn, test, operator
## 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

View File

@@ -200,7 +200,7 @@ Command sequence
cd
cd dir
Change the current directory to 'dir'. If 'dir' is ommitted,
Change the current directory to 'dir'. If 'dir' is omitted,
change the current directory to the home directory, if $HOME
is set in the environment.
@@ -286,10 +286,10 @@ Command sequence
q() defined
a() defined
start statment #1
start statement #1
quit from q()
after statment #1
start statment #2
after statement #1
start statement #2
abort from a()
The QUIT within the q() function prevented the ``end of q()''
@@ -309,10 +309,10 @@ Command sequence
q() defined
a() defined
start statment #1
start statement #1
quit from q()
after statment #1
start statment #2
after statement #1
start statement #2
abort from a()
; <==== calc interactive prompt
@@ -330,10 +330,10 @@ Command sequence
q() defined
a() defined
start statment #1
start statement #1
quit from q()
after statment #1
start statment #2
after statement #1
start statement #2
abort from a()
The ABORT inside function a() halts the processing of statements
@@ -352,11 +352,11 @@ Command sequence
a() defined
; x = 3;
; {print "start #1"; if (x > 1) q()} print "after #1";
start statment #1
start statement #1
quit from q()
after statment #1
after statement #1
; {print "start #2"; if (x > 1) a()} print "after #2";
start statment #2
start statement #2
abort from a()
; {print "start #3"; if (x > 1) quit "quit from 3rd statement"}
start #3
@@ -375,7 +375,7 @@ Command sequence
statement flow control and declaration statements
usage how to invoke the calc command and calc -options
## Copyright (C) 1999-2006,2018 Landon Curt Noll
## Copyright (C) 1999-2006,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

View File

@@ -25,7 +25,7 @@ DESCRIPTION
"trace" turns tracing features on or off
"display" sets number of digits in prints.
"epsilon" sets error value for transcendentals.
"epsilon" sets error value for transcendental.
"maxprint" sets maximum number of elements printed.
"mode" sets printout mode.
"mode2" sets 2nd base printout mode.
@@ -1000,7 +1000,7 @@ LINK LIBRARY
SEE ALSO
custom, custom_cal, display, epsilon, fprintf, printf, strprintf, usage
## Copyright (C) 1999-2007,2018 Landon Curt Noll
## Copyright (C) 1999-2007,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

View File

@@ -1,134 +0,0 @@
We welcome and encourage you to send us:
* calc resource files
* calc shell scripts
* any builtin functions that you have modified or written
* custom functions that you have modified or written
* any other source code modifications
Prior to doing so, you should consider applying your changes to the most
recent version of calc.
Landon Noll maintains the official calc home page at:
http://www.isthe.com/chongo/tech/comp/calc/
See:
http://www.isthe.com/chongo/tech/comp/calc/calc-download.html
for information on how to obtain up a recent version of calc.
=-=
In order to consider integrating your code, we need:
* the calc version you are working with (use the latest calc, see above)
* 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, if applicable
* your source code and/or source code changes (:-))
The best way to send us new code, if your changes are small, is
via a patch (diff -c from the latest alpha code to your code).
If your change is large, you should send entire files (either
as a diff -c /dev/null your-file patch, or as a uuencoded and
gziped (or compressed) tar file).
To contribute code, scripts, resource files and/or to help 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.
=-=
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'.
=-=
Landon Curt Noll
http://www.isthe.com/chongo/
chongo (share and enjoy) /\../\
## Copyright (C) 1999,2014 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/

View File

@@ -52,7 +52,7 @@ DESCRIPTION
In the definition of a function, the builtin function param(n)
provides a way of referring to the parameters. If n (which may
result from evaluating an expreession) is zero, it returns the number
result from evaluating an expression) is zero, it returns the number
of arguments in a call to the function, and if 1 <= n <= param(0),
param(n) refers to the parameter with index n.
@@ -63,7 +63,7 @@ DESCRIPTION
In the statement form, if a return statement is encountered,
the "return" keyword is to be either immediately followed by an
expression or by a statement terminator (semicolon or rightbrace);
expression or by a statement terminator (semicolon or right-brace);
in the former case, the expression is evaluated, evaluation of
the function ceases, and the value obtained for the expression is
returned as the "value of the function"; in the no-expression case,
@@ -93,7 +93,7 @@ DESCRIPTION
definition has no effect on the new definition, but if the definition
is completed successfully, the new definition replaces the old one;
otherwise the old definition is retained. The number of parameters
and their names in the new definiton may be quite different from
and their names in the new definition may be quite different from
those in the old definition.
An attempt at a definition may fail because of scanerrors as the
@@ -191,7 +191,8 @@ LIBRARY
SEE ALSO
param, variable, undefine, show
## Copyright (C) 2000-2006 David I. Bell, Landon Curt Noll and Ernest Bowen
## Copyright (C) 2000-2006,2021 David I. Bell, Landon Curt Noll
## and 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

View File

@@ -25,7 +25,7 @@ DESCRIPTION
digits(12.3456) == 2 computes with the integer part only
digits(-1234) == 4 computes with the absolute value only
digits(0) == 1 specical case
digits(0) == 1 special case
digits(-0.123) == 1 combination of all of the above
EXAMPLE
@@ -50,7 +50,7 @@ LINK LIBRARY
SEE ALSO
digit, places
## Copyright (C) 1999-2003 Landon Curt Noll
## Copyright (C) 1999-2003,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

View File

@@ -101,6 +101,21 @@ Environment variables
variable is an empty string, then ~/.calc_history
is used.
CALCHELP
Location of the calc help directory.
If this variable does not exist, or if this
variable is an empty string, then ${HELPDIR}
CALCCUSTOMHELP
Location of the calc custom help directory.
If this variable does not exist, or if this
variable is an empty string, then ${CUSTOMHELPDIR}
is used.
## Copyright (C) 1999,2021 Landon Curt Noll
##
## Calc is open software; you can redistribute it and/or modify it under

View File

@@ -22,7 +22,7 @@ DESCRIPTION
or is not an octal digit, and other non-text characters to their
escaped hex representation, e.g. char(165) becomes \xa5.
For real x, estr(x) represebts x in fractional mode.
For real x, estr(x) represents x in fractional mode.
EXAMPLE
@@ -42,7 +42,7 @@ LINK LIBRARY
SEE ALSO
str, strprintf
## Copyright (C) 2006 Ernest Bowen
## Copyright (C) 2006,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

View File

@@ -21,7 +21,7 @@ DESCRIPTION
If euler(k) is called with negative k, zero is returned and the
memory used by the table iu freed.
Considerable runtime and memery are required for calculating
Considerable runtime and memory are required for calculating
euler(n) for large even n.
EXAMPLE
@@ -37,7 +37,7 @@ LINK LIBRARY
SEE ALSO
bernoulli, bell, catalan, comb, fact, perm
## Copyright (C) 2000 Ernest Bowen
## Copyright (C) 2000,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

Some files were not shown because too many files have changed in this diff Show More