Fix many spelling errors

This commit is contained in:
Landon Curt Noll
2021-02-12 22:09:47 -08:00
parent 486f4c5626
commit 507fe026e5
154 changed files with 482 additions and 476 deletions

22
CHANGES
View File

@@ -16,7 +16,7 @@ The following are the changes from calc version 2.12.8.0 to date:
calc without any compiler errors or warnings, calc without any compiler errors or warnings,
even with -Werror -Wextra -pedantic. even with -Werror -Wextra -pedantic.
To print out information about the calc compliation To print out information about the calc compilation
environment, we added the following make rule: environment, we added the following make rule:
make calcinfo make calcinfo
@@ -30,16 +30,18 @@ The following are the changes from calc version 2.12.8.0 to date:
question Email address. Created a new calc contribution Email question Email address. Created a new calc contribution Email
address. See the BUGS file for details. address. See the BUGS file for details.
Added "help questions" to print the QUESIONS help file. Added "help questions" to print the QUESTIONS help file.
If the environment variable $CALCHELP is defined and is non-empty, If the environment variable $CALCHELP is defined and is non-empty,
then calc help files will be in the direcgory by the $CALCHISTFILE then calc help files will be in the directory by the $CALCHISTFILE
environment variable. environment variable.
If the environment variable $CALCCUSTOMHELP is defined and is If the environment variable $CALCCUSTOMHELP is defined and is
non-empty, then custom calc help files will be in the direcgory non-empty, then custom calc help files will be in the directory
by the $CALCCUSTOMHELP environment variable. 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: The calc-tester mailing list has been retired. See:
* How to submit a calc bug report: * How to submit a calc bug report:
@@ -104,7 +106,7 @@ The following are the changes from calc version 2.12.7.1 to 2.12.7.5:
Copied missing description lines from help/intro to README.md Copied missing description lines from help/intro to README.md
"What is calc?" section. <<GitHub guilhermgonzaga>> "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 enabled by -Wextra and treated as an error due to -Wall so it
breaks compilation. See -Wimplicit-fallthrough in the GCC breaks compilation. See -Wimplicit-fallthrough in the GCC
manual. The default value is 3, which means a comment matching manual. The default value is 3, which means a comment matching
@@ -187,10 +189,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, Added regression tests 3729 thru 3732 to test E_TAN3, E_COT3,
E_SEC3 and E_CSC3 respectively. 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. 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: /usr/include. The INCDIR for macOS uses:
INCDIR= $(shell xcrun --show-sdk-path --sdk macosx)/usr/include INCDIR= $(shell xcrun --show-sdk-path --sdk macosx)/usr/include
@@ -244,7 +246,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 Fixed an error message buffer overflow thanks to a report by
Frank Peters <nlp at northernlightsphoto dot biz>. 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 use of the C funcion vsprintf() with vsnprintf().
Replaced all DONT_HAVE_VSPRINTF with DONT_HAVE_VSNPRINTF. Replaced all DONT_HAVE_VSPRINTF with DONT_HAVE_VSNPRINTF.
Replaced all Makefile var ${HAVE_VSPRINTF} with ${HAVE_VSNPRINTF}. Replaced all Makefile var ${HAVE_VSPRINTF} with ${HAVE_VSNPRINTF}.
@@ -380,7 +382,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 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 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 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. exhaustive search for a v1 value to return.
Removed lucas_tbl.cal calc resource file. This file was made Removed lucas_tbl.cal calc resource file. This file was made
@@ -684,7 +686,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' Silenced annoying warning about unused variable 'intp'
while compiling endian.c under some circumstances. while compiling endian.c under some circumstances.
Fixed typo in redeclaration warnings. Thanks to Fixed typo in re-declaration warnings. Thanks to
Christoph Zurnieden <czurnieden at gmx dot de> for this report. Christoph Zurnieden <czurnieden at gmx dot de> for this report.
Added a number of calc resource files by Added a number of calc resource files by

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 The top level Makefile and the custom/Makefile require a GNU
Make (such as gmake) or an equivalently advanced make. On many 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. one must use gmake instead of make.
Some report that under macOS, one has to declare the target 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 found below, comment out the Linux set and comment in that
set or edit the gcc set or the common cc set as needed. 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 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 The top level Makefile and the custom/Makefile require a GNU
Make (such as gmake) or an equivalently advanced make. On many 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. one must use gmake instead of make.
If your target system does not have GNU Make (or equivalent), then If your target system does not have GNU Make (or equivalent), then

View File

@@ -25,7 +25,7 @@
# #
# This makefile contains only those critical rules (such as all, clean, etc.) # This makefile contains only those critical rules (such as all, clean, etc.)
# and the common rules needed in development (such as chk, check, 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). # string in the shipped makefiles (such as Makefile.ship).
# Copyright (C) 1999-2008,2014 Landon Curt Noll # Copyright (C) 1999-2008,2014 Landon Curt Noll
@@ -53,7 +53,7 @@
# calculator by David I. Bell with help/mods from others # calculator by David I. Bell with help/mods from others
# Makefile by Landon Curt Noll # 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),) ifeq ($(target),)
target=$(shell uname -s 2>/dev/null) target=$(shell uname -s 2>/dev/null)
@@ -110,7 +110,7 @@ TOP_MAKE_FILE= Makefile
EXT= EXT=
#EXT=.exe #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 RPM_TOP= ${HOME}/rpm/calc
@@ -170,7 +170,7 @@ V=@:
# #
XARG= 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}. # that invokes the ${MAKE_FILE}.
# #
XVAR= \ XVAR= \
@@ -574,7 +574,7 @@ custom/.all:
### ###
# #
# building calc-static and static lib*.a libraires # building calc-static and static lib*.a libraries
# #
### ###
@@ -603,7 +603,7 @@ libcustcalc.a:
# Home grown make dependency rules. Your system make not support # Home grown make dependency rules. Your system make not support
# or have the needed tools. You can ignore this section. # 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 # 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 # prevention lines. This allows us to build a static depend list that will
# satisfy all possible cpp symbol definition combinations. # satisfy all possible cpp symbol definition combinations.
@@ -712,7 +712,7 @@ chk:
# debug # debug
# #
# make calcinfo: # make calcinfo:
# * print information about the host ane compile environment # * print information about the host and compile environment
# #
# make env: # make env:
# * print major Makefile variables # * print major Makefile variables
@@ -836,7 +836,7 @@ inst_files:
${Q} ${MAKE} ${XARG} -f ${MAKE_FILE} $@ ${XVAR} ${Q} ${MAKE} ${XARG} -f ${MAKE_FILE} $@ ${XVAR}
${V} echo '=-=-=-=-= private Makefile $@ rule end =-=-=-=-=' ${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 # locations under the /usr/local directory. If you are using the
# new default values for ${BINDIR}, ${CALC_SHAREDIR}, ${INCDIR} and ${LIBDIR} # new default values for ${BINDIR}, ${CALC_SHAREDIR}, ${INCDIR} and ${LIBDIR}
# then you can use this rule to clean out the older calc stuff under # then you can use this rule to clean out the older calc stuff under
@@ -894,7 +894,7 @@ strip:
${Q} ${MAKE} ${XARG} -f ${MAKE_FILE} $@ ${XVAR} ${Q} ${MAKE} ${XARG} -f ${MAKE_FILE} $@ ${XVAR}
${V} echo '=-=-=-=-= private Makefile $@ rule end =-=-=-=-=' ${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: calc-symlink:
${V} echo '=-=-=-=-= private Makefile $@ rule start =-=-=-=-=' ${V} echo '=-=-=-=-= private Makefile $@ rule start =-=-=-=-='

View File

@@ -1123,7 +1123,7 @@ EXTRA_LDFLAGS=
# Architecture compile flags # Architecture compile flags
# #
# The ARCH_CFLAGS are ${CC} when compiling C files. They follow # 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= -march=native
#ARCH_CFLAGS= #ARCH_CFLAGS=
@@ -2088,7 +2088,7 @@ LICENSE= COPYING COPYING-LGPL
# #
DISTLIST= ${C_SRC} ${H_SRC} ${MAKE_FILE} BUGS CHANGES LIBRARY README.FIRST \ DISTLIST= ${C_SRC} ${H_SRC} ${MAKE_FILE} BUGS CHANGES LIBRARY README.FIRST \
README.WINDOWS calc.man HOWTO.INSTALL ${UTIL_MISC_SRC} ${LICENSE} \ README.WINDOWS calc.man HOWTO.INSTALL ${UTIL_MISC_SRC} ${LICENSE} \
sample.README calc.spec.in rpm.mk README.md QUESTION CONTRUB 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 # These files are used to make (but not build) a calc .a link library
# #
@@ -2199,7 +2199,7 @@ check_include:
echo "Without critical include files, we cannot compile." 1>&2; \ echo "Without critical include files, we cannot compile." 1>&2; \
echo "Perhaps your system isn't setup to compile C source?" 1>&2; \ echo "Perhaps your system isn't setup to compile C source?" 1>&2; \
echo 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 "must be installed." 1>&2; \
echo 1>&2; \ echo 1>&2; \
echo "Also macOS users might later to run this command:" 1>&2; \ echo "Also macOS users might later to run this command:" 1>&2; \
@@ -4039,7 +4039,7 @@ chk: ./cal/regress.cal
# debug # debug
# #
# make calcinfo: # make calcinfo:
# * print information about the host ane compile environment # * print information about the host and compile environment
# #
# make env: # make env:
# * print major Makefile variables # * print major Makefile variables

View File

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

View File

@@ -1040,7 +1040,7 @@ copyblk2num(BLOCK *sblk, long ssi, long num, NUMBER *dnum, long dsi,
NUMBER *ret; /* cloned and modified numerator */ NUMBER *ret; /* cloned and modified numerator */
#if CALC_BYTE_ORDER == BIG_ENDIAN #if CALC_BYTE_ORDER == BIG_ENDIAN
HALF *swapped; /* byte swapped input data */ 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 */ HALF *h; /* copy byteswap pointer */
unsigned long i; unsigned long i;
#endif #endif

View File

@@ -291,7 +291,7 @@ blkrealloc(BLOCK *blk, int newlen, int newchunk)
* Set the data length * Set the data length
* *
* We also know that the new block is not empty since we have * 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 * After this section of code, limit and datalen will be
* correct in terms of the new type. * correct in terms of the new type.

View File

@@ -55,7 +55,7 @@
* blkchunk defaults to BLK_CHUNKSIZE * blkchunk defaults to BLK_CHUNKSIZE
* *
* blkfree(x) * blkfree(x)
* Reduce storage down to 0 octetes. * Reduce storage down to 0 octets.
* *
* size(x) * size(x)
* The length of data stored in the block. * The length of data stored in the block.
@@ -88,7 +88,7 @@
* blkmove(dest, src, length [, dest_offset [, src_offset]]) * blkmove(dest, src, length [, dest_offset [, src_offset]])
* 0 <= length <= blksize(x) * 0 <= length <= blksize(x)
* offset's are restricted in value by block type * 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]]) * blkccpy(dest, src, stopval, length [, dest_offset [, src_offset]])
* 0 <= length <= blksize(x) * 0 <= length <= blksize(x)
@@ -104,7 +104,7 @@
* b = a*k for some integer k >= 1 * b = a*k for some integer k >= 1
* *
* scatter(src, dest1, dest2 [, dest3 ] ...) * 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 * restarting with dest1 after end of list
* stops at end of src * stops at end of src
* *
@@ -184,7 +184,7 @@ EXTERN int blk_debug; /* 0 => debug off */
/* length of data stored in a block */ /* length of data stored in a block */
#define blklen(blk) ((blk)->datalen) #define blklen(blk) ((blk)->datalen)
/* block footpint in memory */ /* block footprint in memory */
#define blksizeof(blk) ((blk)->maxsize) #define blksizeof(blk) ((blk)->maxsize)
/* block allocation chunk size */ /* block allocation chunk size */

View File

@@ -77,7 +77,7 @@ swap_b8_in_HALFs(HALF *dest, HALF *src, LEN len)
* NULL to allocate the storage * NULL to allocate the storage
* src - pointer to a ZVALUE to swap * src - pointer to a ZVALUE to swap
* all - TRUE => swap every element, FALSE => swap only the * all - TRUE => swap every element, FALSE => swap only the
* multiprecision storage * multi-precision storage
* *
* returns: * returns:
* pointer to where the swapped src has been put * 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 * NULL to allocate the storage
* src - pointer to a NUMBER to swap * src - pointer to a NUMBER to swap
* all - TRUE => swap every element, FALSE => swap only the * all - TRUE => swap every element, FALSE => swap only the
* multiprecision storage * multi-precision storage
* *
* returns: * returns:
* pointer to where the swapped src has been put * 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 * NULL to allocate the storage
* src - pointer to a COMPLEX to swap * src - pointer to a COMPLEX to swap
* all - TRUE => swap every element, FALSE => swap only the * all - TRUE => swap every element, FALSE => swap only the
* multiprecision storage * multi-precision storage
* *
* returns: * returns:
* pointer to where the swapped src has been put * 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 * NULL to allocate the storage
* src - pointer to a ZVALUE to swap * src - pointer to a ZVALUE to swap
* all - TRUE => swap every element, FALSE => swap only the * all - TRUE => swap every element, FALSE => swap only the
* multiprecision storage * multi-precision storage
* *
* returns: * returns:
* pointer to where the swapped src has been put * 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 * NULL to allocate the storage
* src - pointer to a NUMBER to swap * src - pointer to a NUMBER to swap
* all - TRUE => swap every element, FALSE => swap only the * all - TRUE => swap every element, FALSE => swap only the
* multiprecision storage * multi-precision storage
* *
* returns: * returns:
* pointer to where the swapped src has been put * 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 * NULL to allocate the storage
* src - pointer to a COMPLEX to swap * src - pointer to a COMPLEX to swap
* all - TRUE => swap every element, FALSE => swap only the * all - TRUE => swap every element, FALSE => swap only the
* multiprecision storage * multi-precision storage
* *
* returns: * returns:
* pointer to where the swapped src has been put * 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 * NULL to allocate the storage
* src - pointer to a ZVALUE to swap * src - pointer to a ZVALUE to swap
* all - TRUE => swap every element, FALSE => swap only the * all - TRUE => swap every element, FALSE => swap only the
* multiprecision storage * multi-precision storage
* *
* returns: * returns:
* pointer to where the swapped src has been put * 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 * NULL to allocate the storage
* src - pointer to a NUMBER to swap * src - pointer to a NUMBER to swap
* all - TRUE => swap every element, FALSE => swap only the * all - TRUE => swap every element, FALSE => swap only the
* multiprecision storage * multi-precision storage
* *
* returns: * returns:
* pointer to where the swapped src has been put * 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 * NULL to allocate the storage
* src - pointer to a COMPLEX to swap * src - pointer to a COMPLEX to swap
* all - TRUE => swap every element, FALSE => swap only the * all - TRUE => swap every element, FALSE => swap only the
* multiprecision storage * multi-precision storage
* *
* returns: * returns:
* pointer to where the swapped src has been put * pointer to where the swapped src has been put

View File

@@ -181,14 +181,14 @@ FMT= fmt
# The calc files to install # 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: # Please use:
# #
# make calc_files_list # make calc_files_list
# #
# to keep this list in nice sorted order and to check that these # 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 \ CALC_FILES= README alg_config.cal beer.cal bernoulli.cal \
bernpoly.cal bigprime.cal bindings brentsolve.cal chi.cal chrem.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. # sub-directory called calc/cal.
# #
# NOTE: Due to bogus shells found on one common system we must have # 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 \ if [ -f "${T}${CALC_SHAREDIR}/$$i" ]; then \
echo "cannot uninstall ${T}${CALC_SHAREDIR}/$$i"; \ echo "cannot uninstall ${T}${CALC_SHAREDIR}/$$i"; \
else \ else \
echo "uninstalled ${T}${CALC_SHAREDIR}/$$i"; \ echo "un-installed ${T}${CALC_SHAREDIR}/$$i"; \
fi; \ fi; \
fi; \ fi; \
done done

View File

@@ -213,12 +213,12 @@ brentsolve.cal
brentsolve(low, high,eps) 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) brentsolve2(low, high,which,eps)
The second function, brentsolve2(low, high,which,eps) has some lines 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". different from the obligatory "f".
See: See:
@@ -392,7 +392,7 @@ factorial2.cal
bigcatalan(n) 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 above n~50,000 but defaults to the builtin function for smaller
values.Meant as a complete replacement for catalan(n) with only a values.Meant as a complete replacement for catalan(n) with only a
very small overhead. See: very small overhead. See:
@@ -433,9 +433,9 @@ factorial2.cal
k = 0 k = 0
The other function stirling2caching(n,m) does it by way of the 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 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: a series. See:
http://en.wikipedia.org/wiki/Stirling_numbers_of_the_second_kind http://en.wikipedia.org/wiki/Stirling_numbers_of_the_second_kind
@@ -546,7 +546,7 @@ infinities.cal
pinf() pinf()
The symbolic handling of infinities. Needed for intnum.cal but might be The symbolic handling of infinities. Needed for intnum.cal but might be
usefull elsewhere, too. useful elsewhere, too.
intfile.cal intfile.cal
@@ -595,13 +595,13 @@ intnum.cal
This file offers some methods for numerical integration. Implemented are This file offers some methods for numerical integration. Implemented are
the Gauss-Legendre and the tanh-sinh quadrature. 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. 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 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 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). file infinities.cal (automatically linked in by intnum.cal).
Integration in parts and contour is supported by the "points" argument Integration in parts and contour is supported by the "points" argument
@@ -661,7 +661,7 @@ intnum.cal
The quad*core functions do not offer anything fancy but the third parameter 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. 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() ; quadgldeletenodes()
; define f(x){ return exp(x);} ; define f(x){ return exp(x);}
@@ -723,7 +723,7 @@ lambertw.cal
ProductLog[branch,z] with the tested values. ProductLog[branch,z] with the tested values.
The series is only valid for the branches 0,-1, real z, converges 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 be given the branches explicitly. See the code in lambertw.cal
for further information. for further information.
@@ -746,7 +746,7 @@ lnseries.cal
does so by computing the prime factorization of all of the number does so by computing the prime factorization of all of the number
sequence 1,2,3...n, calculates the natural logarithms of the primes 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 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 the primes in the factorization. This is faster for high precision
of the logarithms and/or long sequences. of the logarithms and/or long sequences.
@@ -806,7 +806,7 @@ mfactor.cal
at 2*start_k*n+1. Skips values that are multiples of primes <= p_elim. 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. 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 requires about ~13 Megs of memory. The p_elim == 13 overhead
takes about 3 seconds and requires ~1.5 Megs of memory. takes about 3 seconds and requires ~1.5 Megs of memory.
@@ -1317,7 +1317,7 @@ specialfunctions.cal
http://en.wikipedia.org/wiki/Polygamma http://en.wikipedia.org/wiki/Polygamma
http://dlmf.nist.gov/5 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. function depends on the script zeta2.cal.
@@ -1334,7 +1334,7 @@ specialfunctions.cal
zeta(s) 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://en.wikipedia.org/wiki/Riemann_zeta_function
http://dlmf.nist.gov/25.2 http://dlmf.nist.gov/25.2
@@ -1353,7 +1353,7 @@ statistics.cal
invbetainc(x,a,b) invbetainc(x,a,b)
Computes the inverse of the regularized beta function. Does so the 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) betapdf(x,a,b)
betacdf(x,a,b) betacdf(x,a,b)
@@ -1433,7 +1433,7 @@ sumtimes.cal
Give the user CPU time for various ways of evaluating sums, sums of Give the user CPU time for various ways of evaluating sums, sums of
squares, etc, for large lists and matrices. N is the size of squares, etc, for large lists and matrices. N is the size of
the list or matrix to use. The doalltimes() function will run the list or matrix to use. The doalltimes() function will run
all fo the sumtimes tests. For example: all of the sumtimes tests. For example:
doalltimes(1e6); doalltimes(1e6);

View File

@@ -33,7 +33,7 @@ static test_time; /* try for this many seconds in loop test */
* given: * given:
* ratio the ratio of time between two algorithms * ratio the ratio of time between two algorithms
* *
* retuns: * returns:
* 1 When ratio is near 1.0 * 1 When ratio is near 1.0
* 0 otherwise * 0 otherwise
* *
@@ -354,7 +354,7 @@ define best_mul2()
local high; /* high loop value tested */ local high; /* high loop value tested */
local mid; /* between low and high */ local mid; /* between low and high */
local best_val; /* value found with ratio closest to unity */ 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 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"); printf("WARNING: This tool may not be computing the correct best value\n");
test_time = 5.0; test_time = 5.0;
printf("The best_mul2() function will take a LONG time to run!\n"); 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) { if (config("user_debug") <= 0) {
printf("To monitor progress, set user_debug to 2: " printf("To monitor progress, set user_debug to 2: "
"config(\"user_debug\", 2)\n"); "config(\"user_debug\", 2)\n");
@@ -392,7 +392,7 @@ define best_mul2()
*/ */
do { 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 * We will multiplicatively expand our test level until
* the ratio drops below 1.0. * the ratio drops below 1.0.
@@ -419,7 +419,7 @@ define best_mul2()
best_val = high; best_val = high;
best_ratio = ratio; best_ratio = ratio;
if (config("user_debug") > 1) { 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); best_val, best_ratio);
} }
} }
@@ -442,7 +442,7 @@ define best_mul2()
high /= 2; high /= 2;
low = high / 2; low = high / 2;
if (config("user_debug") > 0) { 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); high);
} }
ratio = mul_ratio(high); ratio = mul_ratio(high);
@@ -450,7 +450,8 @@ define best_mul2()
best_val = high; best_val = high;
best_ratio = ratio; best_ratio = ratio;
if (config("user_debug") > 1) { 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); best_val, best_ratio);
} }
} }
@@ -483,7 +484,7 @@ define best_mul2()
best_val = mid; best_val = mid;
best_ratio = ratio; best_ratio = ratio;
if (config("user_debug") > 1) { 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); best_val, best_ratio);
} }
} }
@@ -535,7 +536,7 @@ define best_mul2()
printf("config(\"mul2\", %d),;\n", best_val); printf("config(\"mul2\", %d),;\n", best_val);
printf("WARNING: It is believed that the output " printf("WARNING: It is believed that the output "
"of this resource file is bogus!\n"); "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; return mid;
} }
@@ -835,7 +836,7 @@ define best_sq2()
local high; /* high loop value tested */ local high; /* high loop value tested */
local mid; /* between low and high */ local mid; /* between low and high */
local best_val; /* value found with ratio closest to unity */ 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 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"); printf("WARNING: This tool may not be computing the correct best value\n");
test_time = 5.0; test_time = 5.0;
printf("The best_sq2() function will take a LONG time to run!\n"); 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) { if (config("user_debug") <= 0) {
printf("To monitor progress, set user_debug to 2: " printf("To monitor progress, set user_debug to 2: "
"config(\"user_debug\", 2)\n"); "config(\"user_debug\", 2)\n");
@@ -873,7 +874,7 @@ define best_sq2()
*/ */
do { 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 * We will multiplicatively expand our test level until
* the ratio drops below 1.0. * the ratio drops below 1.0.
@@ -900,7 +901,7 @@ define best_sq2()
best_val = high; best_val = high;
best_ratio = ratio; best_ratio = ratio;
if (config("user_debug") > 1) { 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); best_val, best_ratio);
} }
} }
@@ -923,7 +924,7 @@ define best_sq2()
high /= 2; high /= 2;
low = high / 2; low = high / 2;
if (config("user_debug") > 0) { 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); high);
} }
ratio = mul_ratio(high); ratio = mul_ratio(high);
@@ -931,7 +932,8 @@ define best_sq2()
best_val = high; best_val = high;
best_ratio = ratio; best_ratio = ratio;
if (config("user_debug") > 1) { 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); best_val, best_ratio);
} }
} }
@@ -964,7 +966,7 @@ define best_sq2()
best_val = mid; best_val = mid;
best_ratio = ratio; best_ratio = ratio;
if (config("user_debug") > 1) { 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); best_val, best_ratio);
} }
} }
@@ -1017,7 +1019,7 @@ define best_sq2()
printf("config(\"sq2\", %d),;\n", best_val); printf("config(\"sq2\", %d),;\n", best_val);
printf("WARNING: It is believed that the output " printf("WARNING: It is believed that the output "
"of this resource file is bogus!\n"); "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; return mid;
} }
@@ -1337,7 +1339,7 @@ define best_pow2()
local high; /* high loop value tested */ local high; /* high loop value tested */
local mid; /* between low and high */ local mid; /* between low and high */
local best_val; /* value found with ratio closest to unity */ 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 expand; /* how fast to expand the length */
local looped; /* 1 ==> we have expanded lengths before */ 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"); printf("WARNING: This tool may not be computing the correct best value\n");
test_time = 60.0; test_time = 60.0;
printf("The best_pow2() function will take a LONG time to run!\n"); 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) { if (config("user_debug") <= 0) {
printf("To monitor progress, set user_debug to 2: " printf("To monitor progress, set user_debug to 2: "
"config(\"user_debug\", 2)\n"); "config(\"user_debug\", 2)\n");
@@ -1358,7 +1360,7 @@ define best_pow2()
* firewall - must have a >1.02 ratio for the initial length * firewall - must have a >1.02 ratio for the initial length
* *
* We select 1.02 because of the precision of the CPU timing. We * 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. * dominates.
*/ */
low = 4; low = 4;
@@ -1375,7 +1377,7 @@ define best_pow2()
best_val = high; best_val = high;
best_ratio = ratio; best_ratio = ratio;
if (config("user_debug") > 1) { 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); best_val, best_ratio);
} }
} }
@@ -1397,7 +1399,7 @@ define best_pow2()
looped = 0; looped = 0;
do { 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 * We will multiplicatively expand our test level until
* the ratio drops below 1.0. * the ratio drops below 1.0.
@@ -1435,7 +1437,7 @@ define best_pow2()
best_val = high; best_val = high;
best_ratio = ratio; best_ratio = ratio;
if (config("user_debug") > 1) { 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); best_val, best_ratio);
} }
} }
@@ -1463,7 +1465,7 @@ define best_pow2()
best_val = mid; best_val = mid;
best_ratio = ratio; best_ratio = ratio;
if (config("user_debug") > 1) { 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); best_val, best_ratio);
} }
} }
@@ -1516,7 +1518,7 @@ define best_pow2()
printf("config(\"pow2\", %d),;\n", best_val); printf("config(\"pow2\", %d),;\n", best_val);
printf("WARNING: It is believed that the output " printf("WARNING: It is believed that the output "
"of this resource file is bogus!\n"); "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; return mid;
} }

View File

@@ -1,5 +1,5 @@
/* /*
* 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 David I. Bell and Landon Curt Noll
* *
@@ -26,9 +26,9 @@
/* /*
* Calculate the Nth Bernoulli number B(n). * 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 * (b+1)^(n+1) - b^(n+1) = 0
* *
@@ -42,7 +42,7 @@
* B(3) = -(6*B(2) + 4*B(1) + 1) / 4 * B(3) = -(6*B(2) + 4*B(1) + 1) / 4
* *
* The combinatorial factors in the expansion of the above formula are * 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 * 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. * values obtained are saved in an array for ease in repeated calculations.
*/ */

View File

@@ -1,5 +1,5 @@
/* /*
* 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 Christoph Zurnieden
* *

View File

@@ -143,7 +143,7 @@ define brentsolve2(low, high,which,eps){
switch(param(0)){ switch(param(0)){
case 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); case 2: eps = epsilon(epsilon()*1e-2);
which = 0;break; which = 0;break;
case 3: eps = epsilon(epsilon()*1e-2);break; case 3: eps = epsilon(epsilon()*1e-2);break;

View File

@@ -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. * 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; x2 = x*x;
x_term = 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. * 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 * 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. * NOTE: This function does not work well with odd degrees of freedom.
* Can somebody help / find a bug / provide a better method of * 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; /* index in finite sum */
local r_lim; /* limit value for r */ local r_lim; /* limit value for r */
local s; /* sum */ 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 chi_term; /* chi_sq^r */
local ret; /* return value */ local ret; /* return value */

View File

@@ -1,5 +1,5 @@
/* /*
* chrem - chinese remainder theorem/problem solver * chrem - Chinese remainder theorem/problem solver
* *
* Copyright (C) 1999 Ernest Bowen and Landon Curt Noll * Copyright (C) 1999 Ernest Bowen and Landon Curt Noll
* *
@@ -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: * of the form:
* *
* x = r1 (mod m1) * x = r1 (mod m1)
@@ -35,7 +35,7 @@
* *
* where the residues r1, r2, ... and the moduli m1, m2, ... are * where the residues r1, r2, ... and the moduli m1, m2, ... are
* given integers. The Chinese remainder theorem states that if * 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, ... * have a unique solution modulo m1 * m2 * ... If m1, m2, ...
* are not relatively prime in pairs, it is possible that no solution * are not relatively prime in pairs, it is possible that no solution
* exists. If solutions exist, the general solution is expressible as: * exists. If solutions exist, the general solution is expressible as:

View File

@@ -53,7 +53,7 @@ define dms_add(a, b)
{ {
local obj dms ans; /* return value */ local obj dms ans; /* return value */
/* initalize value to 1st arg */ /* initialize value to 1st arg */
if (istype(a, ans)) { if (istype(a, ans)) {
/* 1st arg is dms object, load it */ /* 1st arg is dms object, load it */
ans.deg = a.deg; ans.deg = a.deg;
@@ -110,7 +110,7 @@ define dms_sub(a, b)
{ {
local obj dms ans; /* return value */ local obj dms ans; /* return value */
/* initalize value to 1st arg */ /* initialize value to 1st arg */
if (istype(a, ans)) { if (istype(a, ans)) {
/* 1st arg is dms object, load it */ /* 1st arg is dms object, load it */
ans.deg = a.deg; ans.deg = a.deg;
@@ -352,11 +352,11 @@ define fixdms(a)
quit "attempt to fix a non dms object"; 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.min += frac(a.deg) * 60;
a.deg = int(a.deg); a.deg = int(a.deg);
/* force degrees to be intergral */ /* force degrees to be integral */
a.sec += frac(a.min) * 60; a.sec += frac(a.min) * 60;
a.min = int(a.min); a.min = int(a.min);

View File

@@ -8,8 +8,8 @@
* copyright this dotest_code. * copyright this dotest_code.
* *
* ERNEST BOWEN AND LANDON CURT NOLL DISCLAIMS ALL WARRANTIES WITH REGARD TO * ERNEST BOWEN AND LANDON CURT NOLL DISCLAIMS ALL WARRANTIES WITH REGARD TO
* THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MER- * THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MER-
* CHANTABILITY AND FITNESS. IN NO EVENT SHALL LANDON CURT * CHANTABILITY AND FITNESS. IN NO EVENT SHALL LANDON CURT
* NOLL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL * NOLL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
* DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF
* USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, * 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 * We increase the caller's error count by the number
* of line tests that failed, not the number of internal * of line tests that failed, not the number of internal

View File

@@ -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 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 the extreme case binomial(2N,N) but for a high price, the memory
needed is pi(N)--theoretically. needed is pi(N)--theoretically.
*/ */
@@ -626,7 +626,7 @@ define subfactorialrecursive(n){
return n * subfactorialrecursive(n-1) + (-1)^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*/ PARI/GP + GMP*/
define subfactorialiterative(n){ define subfactorialiterative(n){
local k temp1 temp2 ret; local k temp1 temp2 ret;

View File

@@ -53,7 +53,7 @@ define hms_add(a, b)
{ {
local obj hms ans; /* return value */ local obj hms ans; /* return value */
/* initalize value to 1st arg */ /* initialize value to 1st arg */
if (istype(a, ans)) { if (istype(a, ans)) {
/* 1st arg is hms object, load it */ /* 1st arg is hms object, load it */
ans.hour = a.hour; ans.hour = a.hour;
@@ -110,7 +110,7 @@ define hms_sub(a, b)
{ {
local obj hms ans; /* return value */ local obj hms ans; /* return value */
/* initalize value to 1st arg */ /* initialize value to 1st arg */
if (istype(a, ans)) { if (istype(a, ans)) {
/* 1st arg is hms object, load it */ /* 1st arg is hms object, load it */
ans.hour = a.hour; ans.hour = a.hour;
@@ -352,11 +352,11 @@ define fixhms(a)
quit "attempt to fix a non hms object"; 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.min += frac(a.hour) * 60;
a.hour = int(a.hour); a.hour = int(a.hour);
/* force hours to be intergral */ /* force hours to be integral */
a.sec += frac(a.min) * 60; a.sec += frac(a.min) * 60;
a.min = int(a.min); a.min = int(a.min);

View File

@@ -27,20 +27,20 @@
/* /*
* NOTE: Because leading HALF values are trimmed from integer, a file * NOTE: Because leading HALF values are trimmed from integer, a file
* that begins with lots of 0 bits (in the case of big 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) * or that ends with lots of 0 bits (in the case of little Endian)
* will be changed when the subsequent integer is written back. * 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: * given:
* filename filename to read * filename filename to read
* *
* returns: * returns:
* integer read from its contents on big endian order * integer read from its contents on big Endian order
*/ */
define file2be(filename) 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: * given:
* filename filename to read * filename filename to read
* *
* returns: * returns:
* integer read from its contents on little endian order * integer read from its contents on little Endian order
*/ */
define file2le(filename) 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: * given:
* v integer to write to the file * 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: * given:
* v integer to write to the file * v integer to write to the file

View File

@@ -295,7 +295,7 @@ define quadts(a, b, points)
* as the number of equally spaced intervals on a straight line * as the number of equally spaced intervals on a straight line
* connecting a and b. Computing the segments here is a bit * connecting a and b. Computing the segments here is a bit
* more complicated but not much, it should have been taught in * more complicated but not much, it should have been taught in
* highschool. * high school.
* Other contours by way of a list of points */ * Other contours by way of a list of points */
slope = (im(b) - im(a)) / (re(b) - re(a)); slope = (im(b) - im(a)) / (re(b) - re(a));
C = (im(a) + slope) * re(a); C = (im(a) + slope) * re(a);

View File

@@ -83,7 +83,7 @@ define __CZ__lambertw_m1(z,eps){
or by using the function lambertw_series_print() after running or by using the function lambertw_series_print() after running
lambertw_series(z,eps,branch,terms) at least once with the wanted number of 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 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.: The exact branch must be given explicitly, e.g.:
; lambertw(-exp(-1)+.001)-lambertw_series(-exp(-1)+.001,epsilon()*1e-10,0) ; lambertw(-exp(-1)+.001)-lambertw_series(-exp(-1)+.001,epsilon()*1e-10,0)

View File

@@ -29,7 +29,7 @@
* *
* given: * given:
* x0, y0 first known point on the line * 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 * x a given point to interpolate on
* *
* returns: * returns:

View File

@@ -947,7 +947,7 @@ rodseth_xhn(x, h, n)
* *
* Without Jacobi symbol value caching, it requires on average * Without Jacobi symbol value caching, it requires on average
* 4.851377 Jacobi symbol evaluations. With Jacobi symbol value caching * 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, * Given this information, when odd h is a multiple of 3 we try, in order,
* these odd values of X: * 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
* 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 * 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. * 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 * else
* v(1) = 4 * 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 1
* jacobi(X+2, h*2^n-1) == -1 part 2 * 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 * 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) * 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; testval = h*2^n-1;
for (i=0; i < x_tbl_len; ++i) { 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 * 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 * 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; x = next_x;
while (rodseth_xhn(x, h, n) != 1) { while (rodseth_xhn(x, h, n) != 1) {

View File

@@ -303,7 +303,7 @@ read -once "lucas.cal";
* [quiet] if given and != 0, then do not print individual test results * [quiet] if given and != 0, then do not print individual test results
* *
* returns: * returns:
* 1 all is ok * 1 all is OK
* 0 something went wrong * 0 something went wrong
*/ */
define define

View File

@@ -79,7 +79,7 @@
* hindx = 0; * hindx = 0;
* } while (test_factor < some_limit); * } 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[]) * 210.83 (prior to use of hset[])
* 78.35 (hset[] for p_elim = 7) * 78.35 (hset[] for p_elim = 7)
@@ -99,7 +99,7 @@
* 57.78 (hset[] for p_elim = 17) * 57.78 (hset[] for p_elim = 17)
* p_elim == 19 rejected because of memory size * 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 * requires about ~13 Megs of memory. The p_elim == 13 overhead
* takes about 3 seconds and requires ~1.5 Megs of memory. * 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; return q;
} else { } else {
/* report this loop */ /* report this loop */
printf("at 2*%d*%d+1, cpu: %f\n", printf("at 2*%d*%d+1, CPU: %f\n",
(q-1)/(2*n), n, usertime()); (q-1)/(2*n), n, usertime());
fflush(files(1)); fflush(files(1));
loop = 0; loop = 0;
@@ -269,14 +269,14 @@ define mfactor(n, start_k, rept_loop, p_elim)
*/ */
if (rept_loop <= ++loop) { if (rept_loop <= ++loop) {
/* report this loop */ /* report this loop */
printf("at 2*%d*%d+1, cpu: %f\n", printf("at 2*%d*%d+1, CPU: %f\n",
(q-1)/(2*n), n, usertime()); (q-1)/(2*n), n, usertime());
fflush(files(1)); fflush(files(1));
loop = 0; loop = 0;
} }
/* /*
* skip if divisable by a prime <= 449 * skip if divisible by a prime <= 449
* *
* The value 281 was determined by timing loops * The value 281 was determined by timing loops
* which found that 281 was at or near the * 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); * The addition of the do { ... } while (factor(q, 449)>1);
* loop reduced the factoring loop time (36504 k values with * loop reduced the factoring loop time (36504 k values with
* the hset[] initialization time removed) from 25.69 sec to * 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 { do {
/* /*

View File

@@ -76,7 +76,7 @@
* A \ B = set difference, integers in A but not in B * A \ B = set difference, integers in A but not in B
* *
* ~A = complement of A, integers not in A * ~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 = 1 or 0 according as A is empty or not empty
* +A = sum of the members of A * +A = sum of the members of A
* *
@@ -100,7 +100,7 @@
* A >= B = (B <= A) * A >= B = (B <= A)
* 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 * the usual way, with parentheses for variations from the usual precedence
* rules. For example * rules. For example
* *

View File

@@ -25,7 +25,7 @@
/* /*
* Solve Pell's equation; Returns the solution X to: X^2 - D * Y^2 = 1. * 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

@@ -35,7 +35,7 @@
* variable has only one name. For some purposes, a name like * variable has only one name. For some purposes, a name like
* "sin(t)" or "(a + b)" or "\lambda" might be useful; * "sin(t)" or "(a + b)" or "\lambda" might be useful;
* names like "*" or "-27" are legal but might give expressions * 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 * Polynomial expressions may be constructed from numbers and the
* independent variable and other polynomials by the algebraic * independent variable and other polynomials by the algebraic
@@ -43,7 +43,7 @@
* The operations // and % are defined to have the quotient and * The operations // and % are defined to have the quotient and
* remainder meanings as usually defined for polynomials. * 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 * 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 * 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 * would assign to q a number value. As with number expressions

View File

@@ -1,5 +1,5 @@
/* /*
* 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 Ernest Bowen
* *
@@ -61,9 +61,9 @@
* nothing to sum. The last line returns the value 3, i.e. the last * nothing to sum. The last line returns the value 3, i.e. the last
* non-null value found for the expressions separated by semicolons, * non-null value found for the expressions separated by semicolons,
* so sum will be increased by 3 after the "print sum^2;" command * 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 * 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, * 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 * 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)". * "sin(x)", "x^2 + 3*x", "exp(x, 1e-5)".
* *
* Values of the function so defined are returned for values of x * 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". * entering "end", "exit" or "quit".
*/ */

View File

@@ -1,5 +1,5 @@
/* /*
* 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 David I. Bell
* *

View File

@@ -45,9 +45,9 @@ randmprime(bits, seed, dbg)
local n; /* n as in h*2^n-1 */ local n; /* n as in h*2^n-1 */
local h; /* h 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 plush; /* value added to h since the beginning */
local init; /* initial cpu time */ local init; /* initial CPU time */
local start; /* cpu time before last test */ local start; /* CPU time before last test */
local stop; /* cpu time afte last test */ local stop; /* CPU time after last test */
local tmp; /* just a tmp place holder value */ local tmp; /* just a tmp place holder value */
local ret; /* h*2^n-1 that is prime */ local ret; /* h*2^n-1 that is prime */

View File

@@ -43,7 +43,7 @@ global prob; /* libregress.cal problem counter */
prob = 0; /* clear problem counter */ prob = 0; /* clear problem counter */
errcount(0),; /* clear error count */ errcount(0),; /* clear error count */
errmax(-1),; /* prevent errcount from abouting */ errmax(-1),; /* prevent errcount from aborting */
global ecnt; /* expected value of errcount() */ global ecnt; /* expected value of errcount() */
ecnt = 0; /* clear expected errcount() value */ ecnt = 0; /* clear expected errcount() value */
@@ -453,7 +453,7 @@ define test_config()
'539: config("more", ">> ") == ";; "'); '539: config("more", ">> ") == ";; "');
vrfy(config("all") == oldcfg, '540: config("all") == oldcfg'); 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, vrfy(config("all",callcfg) == oldcfg,
'541: 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"; read -once "test3300";
print '048: 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() define test_noarg()
{ {
@@ -5183,7 +5183,7 @@ define test_size()
'5715: sizeof(17^139 + 674)*2 == sizeof(q)'); '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; q = 1/13;
print '5716: 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 * 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}; mat m[] = {z,q,c};
print '5752: 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 loc; /* unassigned local variable */
local a; /* assoc */ local a; /* assoc */
local ofd; /* open file desriptor */ local ofd; /* open file descriptor */
local cfd; /* closed file descriptor */ local cfd; /* closed file descriptor */
local blk; /* unnamed block */ local blk; /* unnamed block */
local nblk; /* named block */ local nblk; /* named block */
@@ -5398,7 +5398,7 @@ define test_is()
local object; /* object */ local object; /* object */
local rand; /* rand seed */ local rand; /* rand seed */
local random; /* random seed */ local random; /* random seed */
local real; /* real non-intger value */ local real; /* real non-integer value */
local prime; /* odd prime */ local prime; /* odd prime */
local square; /* square of an odd prime */ local square; /* square of an odd prime */
local string; /* string */ 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() define test_exponentiation()
{ {
@@ -7573,7 +7573,7 @@ define test_quit()
quit; quit;
prob('quit did not end the test_quit() function'); 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()'; 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;
print '8500: Starting test of divmod' 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(config("dupvar_warn",0), '8652: config("dupvar_warn",0)');
vrfy(u_glob == 6, '8653: u_glob == 6'); vrfy(u_glob == 6, '8653: u_glob == 6');
global u_glob = 555; global u_glob = 555;
print '8654: reclare u_glob'; print '8654: declare u_glob';
vrfy(u_glob == 555, '8655: u_glob == 555'); vrfy(u_glob == 555, '8655: u_glob == 555');
define func_8650(u_glob) { local u_glob; return u_glob; } define func_8650(u_glob) { local u_glob; return u_glob; }
print '8656: u_glob as both local and parameter'; 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; print;
return test_exponentiation(); return test_exponentiation();
@@ -8074,7 +8074,7 @@ return test_functions2();
* *
* beer.cal - prints a bunch of things when loaded * beer.cal - prints a bunch of things when loaded
* hello.cal - designed to go into an infinite loop * 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 * lucas_chk.cal - already read by this file
* regress.cal - this file * regress.cal - this file
* surd.cal - already read by this file * surd.cal - already read by this file

View File

@@ -442,8 +442,8 @@ define lngamma(z)
if (tmp2 < tmp) { if (tmp2 < tmp) {
return return
newerror(strcat newerror(strcat
("lngamma(1): something happend that ", ("lngamma(1): something happened ",
"should not have happend")); "that shouldn't have happened"));
} }
} }
} }
@@ -519,8 +519,8 @@ define lngamma(z)
if (tmp2 < tmp) { if (tmp2 < tmp) {
return return
newerror(strcat newerror(strcat
("lngamma(1): something happend ", ("lngamma(1): something happened ",
"that should not have happend")); "that should not have happened"));
} }
} }
} }
@@ -576,8 +576,8 @@ define lngamma(z)
if (tmp2 < tmp) { if (tmp2 < tmp) {
return return
newerror(strcat newerror(strcat
("lngamma(1): something happend ", ("lngamma(1): something happened ",
"that should not have happend")); "that should not have happened"));
} }
} }
} }
@@ -1047,7 +1047,7 @@ define __CZ__ibeta_cf_var_dm(a, b, z, max)
} }
} }
if (m > max) { if (m > max) {
return newerror("ibeta: continous fraction does not converge"); return newerror("ibeta: continuous fraction does not converge");
} }
return f; return f;
} }
@@ -1290,7 +1290,7 @@ define __CZ__erfinvapprox(x)
- (2 / (pi() * a) + (ln(1 - x ^ 2)) / 2)); - (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 Henry E. Fettis. "A stable algorithm for computing the inverse error function
in the 'tail-end' region" Math. Comp., 28:585-587, 1974. in the 'tail-end' region" Math. Comp., 28:585-587, 1974.
*/ */
@@ -1324,7 +1324,7 @@ define __CZ__fettiscf(y, n)
return t / (1 + r); return t / (1 + r);
} }
/* inverse errror function, faster at about x<=.91*/ /* inverse error function, faster at about x<=.91*/
define __CZ__inverfbin(x) define __CZ__inverfbin(x)
{ {
local places approx flow fhigh eps high low mid fmid epsilon; local places approx flow fhigh eps high low mid fmid epsilon;
@@ -1370,7 +1370,7 @@ define erfinv(x)
x = -x; x = -x;
flag = 1; flag = 1;
} }
/* No need for full pecision */ /* No need for full precision */
eps = epsilon(1e-20); eps = epsilon(1e-20);
if (eps >= 1e-40) { if (eps >= 1e-40) {
/* Winitzki, Sergei (6 February 2008). "A handy approximation for the /* Winitzki, Sergei (6 February 2008). "A handy approximation for the

View File

@@ -106,7 +106,7 @@ define invbetainc_slow(x,a,b){
GW Cran, KJ Martin, GE Thomas, GW Cran, KJ Martin, GE Thomas,
Remark AS R19 and Algorithm AS 109: Remark AS R19 and Algorithm AS 109:
A Remark on Algorithms AS 63: The Incomplete Beta Integral 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, Applied Statistics,
Volume 26, Number 1, 1977, pages 111-114. Volume 26, Number 1, 1977, pages 111-114.

View File

@@ -50,7 +50,7 @@
* of b in power(a, b, eps) is large, the computation required for * of b in power(a, b, eps) is large, the computation required for
* a test may be very heavy. * a test may be very heavy.
* *
* Test funcations are called as: * Test functions are called as:
* *
* testabc(str, ..., verbose) * testabc(str, ..., verbose)
* *

View File

@@ -84,7 +84,7 @@ define mkfrac() = rand(2) ? mkposfrac() : -mkposfrac();
define mksquarereal() = mknonnegreal()^2; 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: * positive integer less than 1e6, could use:
* x = rand(1, 1000); * x = rand(1, 1000);
* return rand(x^2 + 1, (x + 1)^2); * return rand(x^2 + 1, (x + 1)^2);

View File

@@ -35,7 +35,7 @@ defaultverbose = 1; /* default verbose value */
* with zero value, when the definition is read. * with zero value, when the definition is read.
* *
* The variable a5100 is initialized with the value x if and when this * 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 * is similarly initialized if and when this function is first called positive
* odd x. * odd x.
* *

View File

@@ -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); rnd = rand(32);

View File

@@ -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 bernpoly.cal;
read -once brentsolve.cal; read -once brentsolve.cal;
@@ -45,7 +45,7 @@ read -once intnum.cal;
/* /*
* tests of correctness of the functions implemented by the above listed * tests of correctness of the functions implemented by the above listed
* author. All values tested against have been computed with at least two * 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() define t01()
{ {
@@ -1649,7 +1649,7 @@ define t03()
/* test 04 tests polygamma(m,z) for the following values (m==0 gets computed /* test 04 tests polygamma(m,z) for the following values (m==0 gets computed
* by psi()). * by psi()).
* Values tested against were computed with Mathematica(TM) only * 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() define t04()
{ {

View File

@@ -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 * produce_long_random_number(n) returns large pseudo-random numbers.
numbers, e.g.: * Really large numbers, e.g.:
produce_long_random_number(16) * produce_long_random_number(16)
is ca 4,128,561 bits (ca 1,242,821 dec. digits) large. Exact length is not * 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(). * pre-determinable because of the chaotic output of the function random().
*/ */
define __CZ__produce_long_random_number(n) define __CZ__produce_long_random_number(n)
{ {
local ret k; local ret k;

View File

@@ -1,5 +1,5 @@
/* /*
* 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 David I. Bell
* *

View File

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

4
calc.h
View File

@@ -232,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 long errmax; /* if >= 0, error when errcount exceeds errmax */
EXTERN int use_old_std; /* TRUE (-O) => use classic configuration */ EXTERN int use_old_std; /* TRUE (-O) => use classic configuration */
EXTERN int allow_read; /* FALSE => dont open any files for reading */ EXTERN int allow_read; /* FALSE => don't open any files for reading */
EXTERN int allow_write; /* FALSE => dont open any files for writing */ EXTERN int allow_write; /* FALSE => don't open any files for writing */
EXTERN int allow_exec; /* FALSE => may not execute any commands */ EXTERN int allow_exec; /* FALSE => may not execute any commands */
/* /*

View File

@@ -1401,7 +1401,7 @@ gziped (or compressed) tar file).
Please try to generate a patch against the most recent Please try to generate a patch against the most recent
version of calc, and if you use GitHub, the top of the version of calc, and if you use GitHub, the top of the
master branch: master branch:
sp .sp
.nf .nf
.in +0.5i .in +0.5i
https://github.com/lcn2/calc https://github.com/lcn2/calc

View File

@@ -2607,7 +2607,7 @@ getid(char *buf)
* global or if symtype is static and the old variable is at the same * 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 * level. Warnings are issued when a global or local variable is
* redeclared and when in the same body the variable will be accessible only * redeclared and when in the same body the variable will be accessible only
^ with the appropriate specfier. ^ with the appropriate specifier.
*/ */
S_FUNC void S_FUNC void
definesymbol(char *name, int symtype) definesymbol(char *name, int symtype)

View File

@@ -553,7 +553,7 @@ c_log(COMPLEX *c, NUMBER *epsilon)
/* first time call */ /* first time call */
cln_10_epsilon = qcopy(epsilon); cln_10_epsilon = qcopy(epsilon);
} else if (qcmp(cln_10_epsilon, epsilon) == TRUE) { } else if (qcmp(cln_10_epsilon, epsilon) == TRUE) {
/* replaced cacheed value with epsilon arg */ /* replaced cached value with epsilon arg */
qfree(cln_10_epsilon); qfree(cln_10_epsilon);
cln_10_epsilon = qcopy(epsilon); cln_10_epsilon = qcopy(epsilon);
} else if (cln_10 != NULL) { } else if (cln_10 != NULL) {

View File

@@ -130,7 +130,7 @@ struct config {
LEN sq2; /* size of number to use square algorithm 2 */ LEN sq2; /* size of number to use square algorithm 2 */
LEN pow2; /* size of modulus to use REDC for powers */ LEN pow2; /* size of modulus to use REDC for powers */
LEN redc2; /* size of modulus to use REDC algorithm 2 */ 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 */ BOOL tab_ok; /* ok to print tab before numeric values */
LEN quomod; /* quomod() default rounding mode */ LEN quomod; /* quomod() default rounding mode */
LEN quo; /* quotient // 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 */ BOOL *allow_custom; /* ptr to if custom functions are allowed */
char *version; /* calc version string */ char *version; /* calc version string */
int baseb; /* base for calculations */ 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 */ BOOL dupvar_warn; /* TRUE => warn of var name collisions */
}; };
typedef struct config CONFIG; typedef struct config CONFIG;

View File

@@ -76,7 +76,7 @@ mersenne exp
piforever 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 ... plus arg ...

View File

@@ -1,6 +1,6 @@
#!/usr/local/src/bin/calc/calc -q -s -f #!/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 Landon Curt Noll
* *

View File

@@ -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*/ /*ARGSUSED*/
void void

View File

@@ -35,7 +35,7 @@
* *
* before they include this file. * 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! * stuff in this file!
*/ */
@@ -45,7 +45,7 @@
/* /*
* arg count definitons * arg count definitions
*/ */
#define MAX_CUSTOM_ARGS 100 /* maximum number of custom arguments */ #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, NOTE: If you do not use any of the 3 function parameters,
then you should declare that function parameter to be UNUSED. then you should declare that function parameter to be UNUSED.
For example, if the count and vals parameters were not used 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*/ /*ARGSUSED*/
VALUE VALUE

View File

@@ -36,7 +36,7 @@
# #
# make ...__optional_arguments_... target=value # 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),) ifeq ($(target),)
target=$(shell uname -s 2>/dev/null) target=$(shell uname -s 2>/dev/null)
@@ -125,7 +125,7 @@ Q=@
#INCDIR= /dev/env/DJDIR/include #INCDIR= /dev/env/DJDIR/include
INCDIR= /usr/include INCDIR= /usr/include
# where to install calc realted things # where to install calc related things
# #
# ${BINDIR} where to install calc binary files # ${BINDIR} where to install calc binary files
# ${LIBDIR} where calc link library (*.a) files are installed # ${LIBDIR} where calc link library (*.a) files are installed
@@ -391,7 +391,7 @@ AWK= awk
# NOTE: These should be left blank in this Makefile to make it # NOTE: These should be left blank in this Makefile to make it
# easier to add stuff on the command line. If you want to # easier to add stuff on the command line. If you want to
# to change the way calc is compiled by this Makefile, change # 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_CFLAGS=
EXTRA_LDFLAGS= EXTRA_LDFLAGS=
@@ -1084,7 +1084,7 @@ CUSTCALC_OBJ= ${REQUIRED_OBJ} ${CUSTOM_OBJ}
# #
C_SRC= ${REQUIRED_SRC} ${CUSTOM_SRC} 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} 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 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} 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. # sub-directory called calc/lib.
# #
# NOTE: Due to bogus shells found on one common system we must have # 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 # Home grown make dependency rules. Your system make not support
# or have the needed tools. You can ignore this section. # 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 # 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 # prevention lines. This allows us to build a static depend list that will
# satisfy all possible cpp symbol definition combinations. # satisfy all possible cpp symbol definition combinations.
@@ -1531,7 +1531,7 @@ uninstall:
if [ -f "${T}${CUSTOMCALDIR}/libcustcalc.a" ]; then \ if [ -f "${T}${CUSTOMCALDIR}/libcustcalc.a" ]; then \
echo "cannot uninstall ${T}${CUSTOMCALDIR}/libcustcalc.a"; \ echo "cannot uninstall ${T}${CUSTOMCALDIR}/libcustcalc.a"; \
else \ else \
echo "uninstalled ${T}${CUSTOMCALDIR}/libcustcalc.a"; \ echo "un-installed ${T}${CUSTOMCALDIR}/libcustcalc.a"; \
fi; \ fi; \
fi fi
-${Q} for i in ${CUSTOM_HELP} /dev/null; do \ -${Q} for i in ${CUSTOM_HELP} /dev/null; do \
@@ -1543,7 +1543,7 @@ uninstall:
if [ -f "${T}${CUSTOMHELPDIR}/$$i" ]; then \ if [ -f "${T}${CUSTOMHELPDIR}/$$i" ]; then \
echo "cannot uninstall ${T}${CUSTOMHELPDIR}/$$i"; \ echo "cannot uninstall ${T}${CUSTOMHELPDIR}/$$i"; \
else \ else \
echo "uninstalled ${T}${CUSTOMHELPDIR}/$$i"; \ echo "un-installed ${T}${CUSTOMHELPDIR}/$$i"; \
fi; \ fi; \
fi; \ fi; \
done done
@@ -1556,7 +1556,7 @@ uninstall:
if [ -f "${T}${CUSTOMCALDIR}/$$i" ]; then \ if [ -f "${T}${CUSTOMCALDIR}/$$i" ]; then \
echo "cannot uninstall ${T}${CUSTOMCALDIR}/$$i"; \ echo "cannot uninstall ${T}${CUSTOMCALDIR}/$$i"; \
else \ else \
echo "uninstalled ${T}${CUSTOMCALDIR}/$$i"; \ echo "un-installed ${T}${CUSTOMCALDIR}/$$i"; \
fi; \ fi; \
fi; \ fi; \
done done
@@ -1569,7 +1569,7 @@ uninstall:
if [ -f "${T}${CUSTOMINCDIR}/$$i" ]; then \ if [ -f "${T}${CUSTOMINCDIR}/$$i" ]; then \
echo "cannot uninstall ${T}${CUSTOMINCDIR}/$$i"; \ echo "cannot uninstall ${T}${CUSTOMINCDIR}/$$i"; \
else \ else \
echo "uninstalled ${T}${CUSTOMINCDIR}/$$i"; \ echo "un-installed ${T}${CUSTOMINCDIR}/$$i"; \
fi; \ fi; \
fi; \ fi; \
done done

View File

@@ -36,7 +36,7 @@
# #
# make ...__optional_arguments_... target=value # 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),) ifeq ($(target),)
target=$(shell uname -s 2>/dev/null) target=$(shell uname -s 2>/dev/null)
@@ -125,7 +125,7 @@ Q=@
#INCDIR= /dev/env/DJDIR/include #INCDIR= /dev/env/DJDIR/include
INCDIR= /usr/include INCDIR= /usr/include
# where to install calc realted things # where to install calc related things
# #
# ${BINDIR} where to install calc binary files # ${BINDIR} where to install calc binary files
# ${LIBDIR} where calc link library (*.a) files are installed # ${LIBDIR} where calc link library (*.a) files are installed
@@ -391,7 +391,7 @@ AWK= awk
# NOTE: These should be left blank in this Makefile to make it # NOTE: These should be left blank in this Makefile to make it
# easier to add stuff on the command line. If you want to # easier to add stuff on the command line. If you want to
# to change the way calc is compiled by this Makefile, change # 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_CFLAGS=
EXTRA_LDFLAGS= EXTRA_LDFLAGS=

View File

@@ -32,7 +32,7 @@ CUSTCALC_OBJ= ${REQUIRED_OBJ} ${CUSTOM_OBJ}
# #
C_SRC= ${REQUIRED_SRC} ${CUSTOM_SRC} 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} 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 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} 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. # sub-directory called calc/lib.
# #
# NOTE: Due to bogus shells found on one common system we must have # 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 # Home grown make dependency rules. Your system make not support
# or have the needed tools. You can ignore this section. # 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 # 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 # prevention lines. This allows us to build a static depend list that will
# satisfy all possible cpp symbol definition combinations. # satisfy all possible cpp symbol definition combinations.
@@ -479,7 +479,7 @@ uninstall:
if [ -f "${T}${CUSTOMCALDIR}/libcustcalc.a" ]; then \ if [ -f "${T}${CUSTOMCALDIR}/libcustcalc.a" ]; then \
echo "cannot uninstall ${T}${CUSTOMCALDIR}/libcustcalc.a"; \ echo "cannot uninstall ${T}${CUSTOMCALDIR}/libcustcalc.a"; \
else \ else \
echo "uninstalled ${T}${CUSTOMCALDIR}/libcustcalc.a"; \ echo "un-installed ${T}${CUSTOMCALDIR}/libcustcalc.a"; \
fi; \ fi; \
fi fi
-${Q} for i in ${CUSTOM_HELP} /dev/null; do \ -${Q} for i in ${CUSTOM_HELP} /dev/null; do \
@@ -491,7 +491,7 @@ uninstall:
if [ -f "${T}${CUSTOMHELPDIR}/$$i" ]; then \ if [ -f "${T}${CUSTOMHELPDIR}/$$i" ]; then \
echo "cannot uninstall ${T}${CUSTOMHELPDIR}/$$i"; \ echo "cannot uninstall ${T}${CUSTOMHELPDIR}/$$i"; \
else \ else \
echo "uninstalled ${T}${CUSTOMHELPDIR}/$$i"; \ echo "un-installed ${T}${CUSTOMHELPDIR}/$$i"; \
fi; \ fi; \
fi; \ fi; \
done done
@@ -504,7 +504,7 @@ uninstall:
if [ -f "${T}${CUSTOMCALDIR}/$$i" ]; then \ if [ -f "${T}${CUSTOMCALDIR}/$$i" ]; then \
echo "cannot uninstall ${T}${CUSTOMCALDIR}/$$i"; \ echo "cannot uninstall ${T}${CUSTOMCALDIR}/$$i"; \
else \ else \
echo "uninstalled ${T}${CUSTOMCALDIR}/$$i"; \ echo "un-installed ${T}${CUSTOMCALDIR}/$$i"; \
fi; \ fi; \
fi; \ fi; \
done done
@@ -517,7 +517,7 @@ uninstall:
if [ -f "${T}${CUSTOMINCDIR}/$$i" ]; then \ if [ -f "${T}${CUSTOMINCDIR}/$$i" ]; then \
echo "cannot uninstall ${T}${CUSTOMINCDIR}/$$i"; \ echo "cannot uninstall ${T}${CUSTOMINCDIR}/$$i"; \
else \ else \
echo "uninstalled ${T}${CUSTOMINCDIR}/$$i"; \ echo "un-installed ${T}${CUSTOMINCDIR}/$$i"; \
fi; \ fi; \
fi; \ fi; \
done done

View File

@@ -124,7 +124,7 @@ c_pmodm127(char UNUSED *name, int UNUSED count, VALUE **vals)
result.v_type = V_NUM; 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: * We implement the following calc code in C:
* *

View File

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

View File

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

View File

@@ -40,7 +40,7 @@
/* /*
* add your forward custom function declaractions here * add your forward custom function declarations here
* *
* Declare custom functions as follows: * Declare custom functions as follows:
* *

View File

@@ -10,7 +10,7 @@ TYPES
return null return null
DESCRIPTION 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. of the general custom interface.
EXAMPLE EXAMPLE

View File

@@ -21,7 +21,7 @@ DESCRIPTION
for details. for details.
This custom function is intented for testing of the general This custom function is intended for testing of the general
custom interface. custom interface.
EXAMPLE EXAMPLE

View File

@@ -1,5 +1,5 @@
/* /*
* 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 Ernest Bowen and Landon Curt Noll
* *

View File

@@ -20,14 +20,14 @@ DESCRIPTION
The number of custom registers is defined at compile time. The number of custom registers is defined at compile time.
There will be at least 32 registers although there could be more 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") custom("sysinfo", "REGNUM_MAX")
The custom registers are initialized to 0 by the internal The custom registers are initialized to 0 by the internal
function libcalc_call_me_first() during calc startup. 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. with special purpose hardware.
EXAMPLE EXAMPLE
@@ -46,7 +46,7 @@ EXAMPLE
LIMITS LIMITS
calc must be built with ALLOW_CUSTOM= -DCUSTOM calc must be built with ALLOW_CUSTOM= -DCUSTOM
calc must be executed with a -C arg. 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. REGNUM_MAX is a compile time constant that is >= 32.
LIBRARY LIBRARY

View File

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

View File

@@ -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, ... * Little Endian: Vax, 32k, Spim (Dec Mips), i386, i486, ...
*/ */

12
file.c
View File

@@ -99,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 *. * On some systems, one cannot initialize a pointer to a FILE *.
* This routine, called once at startup is a work-a-round for * This routine, called once at startup is a work-a-round for
@@ -240,7 +240,7 @@ init_fileio(FILEIO *fiop, char *name, char *mode,
* determine file open mode * determine file open mode
* *
* While a leading 'r' is for reading and a leading 'w' is * 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 * both reading and writing. A leading 'a' means append
* which is writing. * which is writing.
*/ */
@@ -1408,7 +1408,7 @@ z2filepos(ZVALUE zpos)
/* /*
* firewall * 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 * quick return if the position can fit into a long
@@ -1649,7 +1649,7 @@ set_open_pos(FILE *fp, ZVALUE zpos)
} }
/* /*
* return sucess * return success
*/ */
return 0; return 0;
} }
@@ -2606,7 +2606,7 @@ isattyid(FILEID id)
* given: * given:
* id FILEID to search * id FILEID to search
* str string to look for * str string to look for
* pos file postion to start at (NULL => current position) * pos file position to start at (NULL => current position)
* *
* returns: * returns:
* EOF if system error * EOF if system error
@@ -2616,7 +2616,7 @@ isattyid(FILEID id)
* *
* XXX - This search is a translation of the original search that did not * XXX - This search is a translation of the original search that did not
* work with large files. The search algorithm used is slow and * work with large files. The search algorithm used is slow and
* should be spead up much more. * should be speed up much more.
*/ */
int int
fsearch(FILEID id, char *str, ZVALUE start, ZVALUE end, ZVALUE *res) fsearch(FILEID id, char *str, ZVALUE start, ZVALUE end, ZVALUE *res)

2
file.h
View File

@@ -63,7 +63,7 @@ typedef struct {
* Seek loc bytes from the beginning of the open file, stream. * Seek loc bytes from the beginning of the open file, stream.
* *
* f_tell(FILE *stream, FILEPOS *loc) * 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, * 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). * then it will have a FILEPOS that is a scalar type (e.g., long).

View File

@@ -122,7 +122,7 @@ main(int argc, char **argv)
#else /* HAVE_FILEPOS_SCALAR */ #else /* HAVE_FILEPOS_SCALAR */
/* /*
* Normally a "(*(dest) = *(src))" would do, but on some * 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", printf("#define SWAP_HALF_IN_FILEPOS(dest, src)\t%s\n",
"\\\n\tmemcpy((void *)(dest), (void *)(src), " "\\\n\tmemcpy((void *)(dest), (void *)(src), "
@@ -163,7 +163,7 @@ main(int argc, char **argv)
* Little Endian * Little Endian
* *
* Normally a "(*(dest) = *(src))" would do, but on some * 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) #if defined(HAVE_OFF_T_SCALAR)
printf("#define SWAP_HALF_IN_OFF_T(dest, src)\t\t%s\n", 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 */ #else /* HAVE_OFF_T_SCALAR */
/* /*
* Normally a "(*(dest) = *(src))" would do, but on some * 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", printf("#define SWAP_HALF_IN_OFF_T(dest, src)\t%s%d%s\n",
"memcpy((void *)(dest), (void *)(src), ", stsizelen/8, ")"); "memcpy((void *)(dest), (void *)(src), ", stsizelen/8, ")");
@@ -214,7 +214,7 @@ main(int argc, char **argv)
* Little Endian * Little Endian
* *
* Normally a "(*(dest) = *(src))" would do, but on some * 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", printf("#define SWAP_HALF_IN_DEV(dest, src)\t%s%d%s\n",
"memcpy((void *)(dest), (void *)(src), ", devlen/8, ")"); "memcpy((void *)(dest), (void *)(src), ", devlen/8, ")");
@@ -256,7 +256,7 @@ main(int argc, char **argv)
* Little Endian * Little Endian
* *
* Normally a "(*(dest) = *(src))" would do, but on some * 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", printf("#define SWAP_HALF_IN_INODE(dest, src)\t%s%d%s\n",
"memcpy((void *)(dest), (void *)(src), ", inodelen/8, ")"); "memcpy((void *)(dest), (void *)(src), ", inodelen/8, ")");

28
func.c
View File

@@ -5538,7 +5538,7 @@ f_usertime(void)
NUMBER *secret; /* whole sconds of CPU time to return */ NUMBER *secret; /* whole sconds of CPU time to return */
NUMBER *usecret; /* microseconds 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); status = getrusage(who, &usage);
if (status < 0) { if (status < 0) {
/* system call error, so return 0 */ /* system call error, so return 0 */
@@ -5577,7 +5577,7 @@ f_systime(void)
NUMBER *secret; /* whole sconds of CPU time to return */ NUMBER *secret; /* whole sconds of CPU time to return */
NUMBER *usecret; /* microseconds 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); status = getrusage(who, &usage);
if (status < 0) { if (status < 0) {
/* system call error, so return 0 */ /* system call error, so return 0 */
@@ -5617,7 +5617,7 @@ f_runtime(void)
NUMBER *secret; /* whole sconds of CPU time to return */ NUMBER *secret; /* whole sconds of CPU time to return */
NUMBER *usecret; /* microseconds 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); status = getrusage(who, &usage);
if (status < 0) { if (status < 0) {
/* system call error, so return 0 */ /* system call error, so return 0 */
@@ -5734,7 +5734,7 @@ f_fpathopen(int count, VALUE **vals)
/* initialize VALUE */ /* initialize VALUE */
result.v_subtype = V_NOSUBTYPE; 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) { if (vals[0]->v_type != V_STR || vals[1]->v_type != V_STR) {
return error_value(E_FPATHOPEN1); return error_value(E_FPATHOPEN1);
} }
@@ -7840,7 +7840,7 @@ f_base(int count, NUMBER **vals)
return base_value(conf->outmode, conf->outmode); return base_value(conf->outmode, conf->outmode);
} }
/* deal with the specal modes first */ /* deal with the special modes first */
if (qisfrac(vals[0])) { if (qisfrac(vals[0])) {
return base_value(math_setmode(MODE_FRAC), conf->outmode); return base_value(math_setmode(MODE_FRAC), conf->outmode);
} }
@@ -7891,7 +7891,7 @@ f_base2(int count, NUMBER **vals)
return base_value(conf->outmode2, conf->outmode2); return base_value(conf->outmode2, conf->outmode2);
} }
/* deal with the specal modes first */ /* deal with the special modes first */
if (qisfrac(vals[0])) { if (qisfrac(vals[0])) {
return base_value(math_setmode2(MODE_FRAC), conf->outmode2); return base_value(math_setmode2(MODE_FRAC), conf->outmode2);
} }
@@ -8511,7 +8511,7 @@ f_version(void)
{ {
VALUE result; VALUE result;
/* return the calc verstion string */ /* return the calc version string */
result.v_type = V_STR; result.v_type = V_STR;
result.v_subtype = V_NOSUBTYPE; result.v_subtype = V_NOSUBTYPE;
result.v_str = makestring(strdup(version())); result.v_str = makestring(strdup(version()));
@@ -8577,7 +8577,7 @@ STATIC CONST struct builtin builtins[] = {
{"acsch", 1, 2, 0, OP_NOP, 0, f_acsch, {"acsch", 1, 2, 0, OP_NOP, 0, f_acsch,
"inverse csch of a within accuracy b"}, "inverse csch of a within accuracy b"},
{"agd", 1, 2, 0, OP_NOP, 0, f_agd, {"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", 1, IN, FA, OP_NOP, 0, f_listappend,
"append values to end of list"}, "append values to end of list"},
{"appr", 1, 3, 0, OP_NOP, 0, f_appr, {"appr", 1, 3, 0, OP_NOP, 0, f_appr,
@@ -8788,7 +8788,7 @@ STATIC CONST struct builtin builtins[] = {
{"gcdrem", 2, 2, 0, OP_NOP, qgcdrem, 0, {"gcdrem", 2, 2, 0, OP_NOP, qgcdrem, 0,
"a divided repeatedly by gcd with b"}, "a divided repeatedly by gcd with b"},
{"gd", 1, 2, 0, OP_NOP, 0, f_gd, {"gd", 1, 2, 0, OP_NOP, 0, f_gd,
"gudermannian function"}, "Gudermannian function"},
{"getenv", 1, 1, 0, OP_NOP, 0, f_getenv, {"getenv", 1, 1, 0, OP_NOP, 0, f_getenv,
"value of environment variable (or NULL)"}, "value of environment variable (or NULL)"},
{"hash", 1, IN, 0, OP_NOP, 0, f_hash, {"hash", 1, IN, 0, OP_NOP, 0, f_hash,
@@ -9068,7 +9068,7 @@ STATIC CONST struct builtin builtins[] = {
"reverse search matrix or list for value b\n" "reverse search matrix or list for value b\n"
"\t\t\tstarting at index c"}, "\t\t\tstarting at index c"},
{"runtime", 0, 0, 0, OP_NOP, f_runtime, 0, {"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, {"saveval", 1, 1, 0, OP_SAVEVAL, 0, 0,
"set flag for saving values"}, "set flag for saving values"},
{"scale", 2, 2, 0, OP_SCALE, 0, 0, {"scale", 2, 2, 0, OP_SCALE, 0, 0,
@@ -9087,7 +9087,7 @@ STATIC CONST struct builtin builtins[] = {
{"sech", 1, 2, 0, OP_NOP, 0, f_sech, {"sech", 1, 2, 0, OP_NOP, 0, f_sech,
"hyperbolic secant of a within accuracy b"}, "hyperbolic secant of a within accuracy b"},
{"seed", 0, 0, 0, OP_NOP, f_seed, 0, {"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, {"segment", 2, 3, 0, OP_NOP, 0, f_segment,
"specified segment of specified list"}, "specified segment of specified list"},
{"select", 2, 2, 0, OP_NOP, 0, f_select, {"select", 2, 2, 0, OP_NOP, 0, f_select,
@@ -9161,7 +9161,7 @@ STATIC CONST struct builtin builtins[] = {
{"system", 1, 1, 0, OP_NOP, 0, f_system, {"system", 1, 1, 0, OP_NOP, 0, f_system,
"call Unix command"}, "call Unix command"},
{"systime", 0, 0, 0, OP_NOP, f_systime, 0, {"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, {"tail", 2, 2, 0, OP_NOP, 0, f_tail,
"retain list of specified number at tail of list"}, "retain list of specified number at tail of list"},
{"tan", 1, 2, 0, OP_NOP, 0, f_tan, {"tan", 1, 2, 0, OP_NOP, 0, f_tan,
@@ -9177,7 +9177,7 @@ STATIC CONST struct builtin builtins[] = {
{"ungetc", 2, 2, 0, OP_NOP, 0, f_ungetc, {"ungetc", 2, 2, 0, OP_NOP, 0, f_ungetc,
"unget char read from file"}, "unget char read from file"},
{"usertime", 0, 0, 0, OP_NOP, f_usertime, 0, {"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, {"version", 0, 0, 0, OP_NOP, 0, f_version,
"calc version string"}, "calc version string"},
{"xor", 1, IN, 0, OP_NOP, 0, f_xor, {"xor", 1, IN, 0, OP_NOP, 0, f_xor,
@@ -9194,7 +9194,7 @@ STATIC CONST struct builtin builtins[] = {
* *
* When FUNCLIST is defined, we are being compiled by rules from the help * 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 * 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. * See the builtin rule in the help/Makefile for details.
*/ */

2
hash.c
View File

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

View File

@@ -1,5 +1,5 @@
/* /*
* 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 Landon Curt Noll
* *

View File

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

View File

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

View File

@@ -69,7 +69,7 @@ TOP_MAKE_FILE= Makefile
#INCDIR= /dev/env/DJDIR/include #INCDIR= /dev/env/DJDIR/include
INCDIR= /usr/include INCDIR= /usr/include
# where to install calc realted things # where to install calc related things
# #
# ${BINDIR} where to install calc binary files # ${BINDIR} where to install calc binary files
# ${LIBDIR} where calc link library (*.a) files are installed # ${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 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 # a symlink for some built environments, we treat obj specially
# and call it obj.file # and call it obj.file
# #
@@ -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_13} ${STD_HELP_FILES_14} \
${BLT_HELP_FILES_14} ${STD_HELP_FILES_15} ${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= ${STD_HELP_FILES_1} ${STD_HELP_FILES_2} \
${STD_HELP_FILES_4} ${STD_HELP_FILES_6} \ ${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 # 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: # 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 # 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 # 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: .all:
${RM} -f .all ${RM} -f .all
@@ -596,18 +596,18 @@ ${SINGULAR_FILES}: ${PLURAL_FILES}
# Form the builtin file # 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 # 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 # 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 # build-able at this point. The hack-a-round used is to convert ../func.c
# into a standalone program that generates a suitable function list # into a stand-alone program that generates a suitable function list
# that is standwiched between the top and bottom builtin help text. # that is sandwiched between the top and bottom builtin help text.
# #
# We form funclist.c by sedding out unwanted stuff from builtins table, # We form funclist.c by sedding out unwanted stuff from builtins table,
# converting NUMBER* and VALUE into harmless types and converting # converting NUMBER* and VALUE into harmless types and converting
# the showbuiltins() function into main(). Combined with the -DFUNCLIST # the showbuiltins() function into main(). Combined with the -DFUNCLIST
# we will avoid all of the complex calc types, macros and defines and # 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 # Building funclist.o a portable fashion is ugly because some systems
# do not treat -I.. correctly! # do not treat -I.. correctly!
@@ -662,7 +662,7 @@ calcliblist:
done done
# The BSDI cdrom makefile expects all help files to be pre-built. This rule # 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. # ignore this rule.
# #
bsdi: all bsdi: all

View File

@@ -75,7 +75,7 @@ DESCRIPTION
Except in cases like strcat(A, "") when *A identified with a literal Except in cases like strcat(A, "") when *A identified with a literal
string as above, definitions of string values using strcat() or substr() string as above, definitions of string values using strcat() or substr()
will copy the relevant strings to newly allocated addresses which will 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 For example, after
; B = C = strcat("a", "bc"); ; B = C = strcat("a", "bc");

View File

@@ -1,5 +1,5 @@
NAME NAME
agd - inverse gudermannian function agd - inverse Gudermannian function
SYNOPSIS SYNOPSIS
agd(z [,eps]) agd(z [,eps])
@@ -11,7 +11,7 @@ TYPES
return number or infinite error value return number or infinite error value
DESCRIPTION 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, 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 or an error value if z is very close to one of the one of the branch
points of agd(z).. points of agd(z)..

View File

@@ -56,7 +56,7 @@
ptest(a,1,0) ptest(a,1,0)
Normally ptest performs a some checks to determine if the 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. argument is < 0, then the trivial check is omitted.
For example, ptest(a,10) performs the same work as: For example, ptest(a,10) performs the same work as:

View File

@@ -20,7 +20,7 @@ DESCRIPTION
combinatorial problems, e.g. for n >= 1, catalan(n) is the number of 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 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 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 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. from (x,y) = (0,0) to (x,y) = (n,n) for which always y <= x.

View File

@@ -30,7 +30,7 @@ DESCRIPTION
This corresponds to the use of rnd for functions like round(x, n, rnd). 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 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. consider the two cases rnd = 8 and rnd = 16.
If den(x) > 2, cfsim(x, 8) returns the value of the penultimate simple If den(x) > 2, cfsim(x, 8) returns the value of the penultimate simple

View File

@@ -47,7 +47,7 @@ DESCRIPTION
obj point {x,y}; obj point {x,y};
if points with real components are to be partially ordered by their 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 function may be that given by
define point_rel(a,b) = sgn(a.x^2 + a.y^2 - b.x^2 - b.y^2); define point_rel(a,b) = sgn(a.x^2 + a.y^2 - b.x^2 - b.y^2);

View File

@@ -200,7 +200,7 @@ Command sequence
cd cd
cd dir 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 change the current directory to the home directory, if $HOME
is set in the environment. is set in the environment.
@@ -286,10 +286,10 @@ Command sequence
q() defined q() defined
a() defined a() defined
start statment #1 start statement #1
quit from q() quit from q()
after statment #1 after statement #1
start statment #2 start statement #2
abort from a() abort from a()
The QUIT within the q() function prevented the ``end of q()'' The QUIT within the q() function prevented the ``end of q()''
@@ -309,10 +309,10 @@ Command sequence
q() defined q() defined
a() defined a() defined
start statment #1 start statement #1
quit from q() quit from q()
after statment #1 after statement #1
start statment #2 start statement #2
abort from a() abort from a()
; <==== calc interactive prompt ; <==== calc interactive prompt
@@ -330,10 +330,10 @@ Command sequence
q() defined q() defined
a() defined a() defined
start statment #1 start statement #1
quit from q() quit from q()
after statment #1 after statement #1
start statment #2 start statement #2
abort from a() abort from a()
The ABORT inside function a() halts the processing of statements The ABORT inside function a() halts the processing of statements
@@ -352,11 +352,11 @@ Command sequence
a() defined a() defined
; x = 3; ; x = 3;
; {print "start #1"; if (x > 1) q()} print "after #1"; ; {print "start #1"; if (x > 1) q()} print "after #1";
start statment #1 start statement #1
quit from q() quit from q()
after statment #1 after statement #1
; {print "start #2"; if (x > 1) a()} print "after #2"; ; {print "start #2"; if (x > 1) a()} print "after #2";
start statment #2 start statement #2
abort from a() abort from a()
; {print "start #3"; if (x > 1) quit "quit from 3rd statement"} ; {print "start #3"; if (x > 1) quit "quit from 3rd statement"}
start #3 start #3

View File

@@ -25,7 +25,7 @@ DESCRIPTION
"trace" turns tracing features on or off "trace" turns tracing features on or off
"display" sets number of digits in prints. "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. "maxprint" sets maximum number of elements printed.
"mode" sets printout mode. "mode" sets printout mode.
"mode2" sets 2nd base printout mode. "mode2" sets 2nd base printout mode.

View File

@@ -52,7 +52,7 @@ DESCRIPTION
In the definition of a function, the builtin function param(n) In the definition of a function, the builtin function param(n)
provides a way of referring to the parameters. If n (which may 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), of arguments in a call to the function, and if 1 <= n <= param(0),
param(n) refers to the parameter with index n. param(n) refers to the parameter with index n.
@@ -63,7 +63,7 @@ DESCRIPTION
In the statement form, if a return statement is encountered, In the statement form, if a return statement is encountered,
the "return" keyword is to be either immediately followed by an 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 in the former case, the expression is evaluated, evaluation of
the function ceases, and the value obtained for the expression is the function ceases, and the value obtained for the expression is
returned as the "value of the function"; in the no-expression case, 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 definition has no effect on the new definition, but if the definition
is completed successfully, the new definition replaces the old one; is completed successfully, the new definition replaces the old one;
otherwise the old definition is retained. The number of parameters 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. those in the old definition.
An attempt at a definition may fail because of scanerrors as the An attempt at a definition may fail because of scanerrors as the

View File

@@ -25,7 +25,7 @@ DESCRIPTION
digits(12.3456) == 2 computes with the integer part only digits(12.3456) == 2 computes with the integer part only
digits(-1234) == 4 computes with the absolute value 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 digits(-0.123) == 1 combination of all of the above
EXAMPLE EXAMPLE

View File

@@ -22,7 +22,7 @@ DESCRIPTION
or is not an octal digit, and other non-text characters to their or is not an octal digit, and other non-text characters to their
escaped hex representation, e.g. char(165) becomes \xa5. 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 EXAMPLE

View File

@@ -21,7 +21,7 @@ DESCRIPTION
If euler(k) is called with negative k, zero is returned and the If euler(k) is called with negative k, zero is returned and the
memory used by the table iu freed. 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. euler(n) for large even n.
EXAMPLE EXAMPLE

View File

@@ -16,7 +16,7 @@ DESCRIPTION
null value is returned. Otherwise the function returns the empty null value is returned. Otherwise the function returns the empty
string "" if the first non-white character is '\0', and in other cases, string "" if the first non-white character is '\0', and in other cases,
the string formed by the non-white-space characters read until '\0' or the string formed by the non-white-space characters read until '\0' or
a white-space character or te end of the file is reached. In the a white-space character or the end of the file is reached. In the
cases where the reading is stopped by '\0' or white-space character, cases where the reading is stopped by '\0' or white-space character,
the file position will be that immediately after that character. the file position will be that immediately after that character.

View File

@@ -1,5 +1,5 @@
NAME NAME
freopen - close (if necessary) and reopen a filestream freopen - close (if necessary) and reopen a file stream
SYNOPSIS SYNOPSIS
freopen(fs, mode [,filename]) freopen(fs, mode [,filename])

View File

@@ -1,5 +1,5 @@
NAME NAME
gd - gudermannian function gd - Gudermannian function
SYNOPSIS SYNOPSIS
gd(z [,eps]) gd(z [,eps])
@@ -11,7 +11,7 @@ TYPES
return number or "Log of zero or infinity" error value return number or "Log of zero or infinity" error value
DESCRIPTION DESCRIPTION
Calculate the gudermannian of z to a nultiple of eps with errors in Calculate the Gudermannian of z to a multiple of eps with errors in
real and imaginary parts less in absolute value than .75 * eps, real and imaginary parts less in absolute value than .75 * eps,
or return an error value if z is close to one of the branch points or return an error value if z is close to one of the branch points
at odd multiples of (pi/2) * i. at odd multiples of (pi/2) * i.

View File

@@ -14,7 +14,7 @@ DESCRIPTION
eval(S) for some expression S which evaluates to a string. It eval(S) for some expression S which evaluates to a string. It
decreases by 1 when a file being read reaches EOF or a string decreases by 1 when a file being read reaches EOF or a string
being eval-ed reaches '\0', or earlier if a quit statement is being eval-ed reaches '\0', or earlier if a quit statement is
encountered at top calculation-level in the flle or string. It encountered at top calculation-level in the file or string. It
decreases to zero if an abort statement is encountered at any decreases to zero if an abort statement is encountered at any
function-level in the file or string. If a quit or abort function-level in the file or string. If a quit or abort
statement is encountered at top calculation-level at top input-level, statement is encountered at top calculation-level at top input-level,

View File

@@ -1,5 +1,5 @@
NAME NAME
isatty - returns 1 if fd assocatied with a tty isatty - returns 1 if fd is associated with a tty
SYNOPSIS SYNOPSIS
isatty(fd) isatty(fd)

View File

@@ -18,7 +18,7 @@ DESCRIPTION
3 if x is a string-pointer 3 if x is a string-pointer
4 if x is a number-pointer 4 if x is a number-pointer
Pointers are initially defined by using the addreess (&) operator Pointers are initially defined by using the address (&) operator
with an "addressable" value; currently, these are octets, lvalues, with an "addressable" value; currently, these are octets, lvalues,
strings and real numbers. strings and real numbers.

View File

@@ -184,7 +184,7 @@ DESCRIPTION
The above calc pseudo code is provided to help illustrate the The above calc pseudo code is provided to help illustrate the
properties of the jacobi symbol only. The use of calc's jacobi properties of the jacobi symbol only. The use of calc's jacobi
builtin is recommended for both speed as well as to handle builtin is recommended for both speed as well as to handle
specical cases. special cases.
For more information on the Legendre symbol and the Jacobi symbol: For more information on the Legendre symbol and the Jacobi symbol:

View File

@@ -12,7 +12,7 @@ TYPES
DESCRIPTION DESCRIPTION
If an argument x_i is a list with elements e_1, e_2, ..., e_n, it If an argument x_i is a list with elements e_1, e_2, ..., e_n, it
is treated as if x_i were replaced by e_1, e_2, ..., e_n; this may is treated as if x_i were replaced by e_1, e_2, ..., e_n; this may
continue recurively if any of the e_j is a list. continue recursively if any of the e_j is a list.
If an argument x_i is an object of type xx, then x_i is replaced by If an argument x_i is an object of type xx, then x_i is replaced by
xx_max(x_i) if the function xx_max() has been defined. If the xx_max(x_i) if the function xx_max() has been defined. If the
@@ -29,14 +29,14 @@ DESCRIPTION
will return the same as max(a, b, c). will return the same as max(a, b, c).
Assuming the above replacements, and that the x_1, x_2, ..., are Assuming the above replacements, and that the x_1, x_2, ..., are
of sufficently simple ordered types (e.g. real numbers or strings), of sufficiently simple ordered types (e.g. real numbers or strings),
or, if some are objects, the relevant xx_rel(a,b) has been defined or, if some are objects, the relevant xx_rel(a,b) has been defined
and returns a real-number value for any comparison that has to be made, and returns a real-number value for any comparison that has to be made,
max(x_1, x_2, ...) returns the value determined by max(x_1) = x_1, max(x_1, x_2, ...) returns the value determined by max(x_1) = x_1,
and succesively for later arguments, by the use of the equivalent of and successively for later arguments, by the use of the equivalent of
max(a,b) = (a < b) ? b : a. If the ordering determined by < is total, max(a,b) = (a < b) ? b : a. If the ordering determined by < is total,
max(x_1, ...) will be the maximum value among the arguments. For a max(x_1, ...) will be the maximum value among the arguments. For a
preorder relation it may be one of several maximal values. For pre-order relation it may be one of several maximal values. For
other relations, it may be difficult to predict the result. other relations, it may be difficult to predict the result.
EXAMPLE EXAMPLE

View File

@@ -12,13 +12,13 @@ TYPES
DESCRIPTION DESCRIPTION
This is analogous to the C operator sizeof. It attempts to assess This is analogous to the C operator sizeof. It attempts to assess
the number of bytes in memory used to store a value and all its the number of bytes in memory used to store a value and all its
components plus all of the related structue overhead. Unlike components plus all of the related structure overhead. Unlike
sizeof(x), this builtin includes overhead. sizeof(x), this builtin includes overhead.
Unlike size(x), this builtin incldues the trailing \0 byte on the Unlike size(x), this builtin includes the trailing \0 byte on the
end of strings. end of strings.
Unlike sizeof(x), this builtin includes the size demonitor for integers Unlike sizeof(x), this builtin includes the size denominator for integers
and the imaginary part for complex values. Storage for holding and the imaginary part for complex values. Storage for holding
0, 1 and -1 values are also included. 0, 1 and -1 values are also included.

View File

@@ -1,5 +1,5 @@
NAME NAME
meq - test for equality modulo a specifed number meq - test for equality modulo a specified number
SYNOPSIS SYNOPSIS
meq(x, y, md) meq(x, y, md)

View File

@@ -12,7 +12,7 @@ TYPES
DESCRIPTION DESCRIPTION
If an argument x_i is a list with elements e_1, e_2, ..., e_n, it If an argument x_i is a list with elements e_1, e_2, ..., e_n, it
is treated as if x_i were replaced by e_1, e_2, ..., e_n; this may is treated as if x_i were replaced by e_1, e_2, ..., e_n; this may
continue recurively if any of the e_j is a list. continue recursively if any of the e_j is a list.
If an argument x_i is an object of type xx, then x_i is replaced by If an argument x_i is an object of type xx, then x_i is replaced by
xx_min(x_i) if the function xx_min() has been defined. If the xx_min(x_i) if the function xx_min() has been defined. If the
@@ -29,14 +29,14 @@ DESCRIPTION
will return the same as min(a, b, c). will return the same as min(a, b, c).
Assuming the above replacements, and that the x_1, x_2, ..., are Assuming the above replacements, and that the x_1, x_2, ..., are
of sufficently simple ordered types (e.g. real numbers or strings), of sufficiently simple ordered types (e.g. real numbers or strings),
or, if some are objects, the relevant xx_rel(a,b) has been defined or, if some are objects, the relevant xx_rel(a,b) has been defined
and returns a real-number value for any comparison that has to be made, and returns a real-number value for any comparison that has to be made,
min(x_1, x_2, ...) returns the value determined by min(x_1) = x_1, min(x_1, x_2, ...) returns the value determined by min(x_1) = x_1,
and succesively for later arguments, by the use of the equivalent of and successively for later arguments, by the use of the equivalent of
min(a,b) = (a < b) ? a : b. If the ordering determined by < is total, min(a,b) = (a < b) ? a : b. If the ordering determined by < is total,
min(x_1, ...) will be the minimum value among the arguments. For a min(x_1, ...) will be the minimum value among the arguments. For a
preorder relation it may be one of several minimal values. For other pre-order relation it may be one of several minimal values. For other
relations, it may be difficult to predict the result. relations, it may be difficult to predict the result.
EXAMPLE EXAMPLE

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