mirror of
https://github.com/lcn2/calc.git
synced 2025-08-19 01:13:27 +03:00
Compare commits
5 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
6fa83e417e | ||
|
c335809b5f | ||
|
ee99adf8ca | ||
|
87570b56fe | ||
|
afe37ec851 |
53
BUGS
53
BUGS
@@ -68,10 +68,6 @@ of a context diff patch).
|
||||
|
||||
Known bugs:
|
||||
|
||||
The stoponerror() facility does not seem to work, or perhaps
|
||||
the stoponerror help file is incorrect. The stoponerror help file
|
||||
lacks examples because of this problem.
|
||||
|
||||
We are sure some more bugs exist. When you find them, please let
|
||||
us know! See the above for details on how to report and were to
|
||||
EMail your bug reports and hopefully patches to fix them.
|
||||
@@ -114,51 +110,6 @@ Problems with old systems that have known work-a-rounds:
|
||||
to fail the regression test. The work-a-round is to compile with -O
|
||||
or to use gcc-2.96 or later.
|
||||
|
||||
This bug has been observed on the Sparc and the PowerPC machine.
|
||||
|
||||
On the PowerPC with gcc-2.95 when compiled with -O2, the following
|
||||
patch seems to help:
|
||||
|
||||
*** zfunc.c.orig Fri Feb 23 18:18:39 2001
|
||||
--- zfunc.c Fri Feb 23 18:39:33 2001
|
||||
***************
|
||||
*** 1481,1487 ****
|
||||
{
|
||||
HALF *a, *A, *b, *a0, u;
|
||||
int i, j, j1, j2, k, k1, m, m0, m1, n, n0, o;
|
||||
! FULL d, e, f, g, h, s, t, x, topbit;
|
||||
int remsign;
|
||||
BOOL up, onebit;
|
||||
ZVALUE sqrt;
|
||||
--- 1481,1488 ----
|
||||
{
|
||||
HALF *a, *A, *b, *a0, u;
|
||||
int i, j, j1, j2, k, k1, m, m0, m1, n, n0, o;
|
||||
! volatile FULL d;
|
||||
! FULL e, f, g, h, s, t, x, topbit;
|
||||
int remsign;
|
||||
BOOL up, onebit;
|
||||
ZVALUE sqrt;
|
||||
*** zmath.c 2000/06/07 14:02:13 29.2
|
||||
--- zmath.c 2001/03/13 19:47:03
|
||||
***************
|
||||
*** 1608,1614 ****
|
||||
void
|
||||
zbitvalue(long n, ZVALUE *res)
|
||||
{
|
||||
! ZVALUE z;
|
||||
|
||||
if (n < 0) n = 0;
|
||||
z.sign = 0;
|
||||
--- 1608,1614 ----
|
||||
void
|
||||
zbitvalue(long n, ZVALUE *res)
|
||||
{
|
||||
! volatile ZVALUE z;
|
||||
|
||||
if (n < 0) n = 0;
|
||||
z.sign = 0;
|
||||
|
||||
* There are problems compiling calc on the sparcv9 under 64 bit
|
||||
Solaris. On that platform, gcc-2.96 is able to compile calc, but
|
||||
calc dumps core very early on in startup. It is said that sparcv9
|
||||
@@ -190,8 +141,8 @@ Problems with old systems that have known work-a-rounds:
|
||||
## received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
## 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
##
|
||||
## @(#) $Revision: 29.24 $
|
||||
## @(#) $Id: BUGS,v 29.24 2006/05/21 07:54:13 chongo Exp $
|
||||
## @(#) $Revision: 29.25 $
|
||||
## @(#) $Id: BUGS,v 29.25 2006/08/20 17:51:25 chongo Exp $
|
||||
## @(#) $Source: /usr/local/src/cmd/calc/RCS/BUGS,v $
|
||||
##
|
||||
## Under source code control: 1994/03/18 14:06:13
|
||||
|
131
CHANGES
131
CHANGES
@@ -260,6 +260,128 @@ The following are the changes from calc version 2.12.0 to date:
|
||||
Updated the "help variable" text to reflect the current calc
|
||||
use of ` (backquote), * (star), and & (ampersand).
|
||||
|
||||
Removal of some restrictions on the use of the same identifier
|
||||
for more than one of parameter, local, static or global variable.
|
||||
|
||||
For example, at command level, one could use:
|
||||
|
||||
for (local x = 0; x < 10; x++) print sqrt(x);
|
||||
|
||||
At the beginning of a statement, "(global A)" is a way of
|
||||
indicating a reference to the variable A, whereas "global A"
|
||||
would be taken as a declaration. Parentheses are not required in
|
||||
"++global A" or "global A++" when "global" is used in this way.
|
||||
|
||||
The patch extends this "specifier" (or "qualifier") feature
|
||||
to static variables, but such that "static A" refers only
|
||||
to a static variable at the current file and function scope
|
||||
levels. (If there is already a static variable A at the current
|
||||
file and function levels, a declaration statement "static A"
|
||||
would end the scope of that variable and define a new static
|
||||
variable with identifier A. A "global A" declaration is more
|
||||
drastic in that it ends the scope of any static variable A at
|
||||
the same or higher scope levels.)
|
||||
|
||||
Unlike a static declaration in which an "initialization" occurs at
|
||||
most once, in the specifier case, "static A = expr" is simply an
|
||||
assignment which may be repeated any number of times. An example
|
||||
of its use is:
|
||||
|
||||
define np() = static a = nextprime(a);
|
||||
|
||||
For n not too large, the n-th call to this function will
|
||||
return the n-th prime. The variable a here will be private to
|
||||
the function.
|
||||
|
||||
Because one can use "global", "local" or "static" to specify a
|
||||
type of variable, there seems little point in restricting the
|
||||
ways identifiers that can be used in more than one of these
|
||||
or as parameters. Obviously, introducing A as a local variable
|
||||
when it is being used as a parameter can lead to confusion and a
|
||||
warning is appropriate, but if it is to be used only occasionally,
|
||||
it might be convenient to be able to refer to it as "local A"
|
||||
rather than introducing another identifier. While it may be
|
||||
silly to use the same identifier for both a parameter and local
|
||||
variable, it should not be illegal.
|
||||
|
||||
The provision of warnings for possibly questionable programming in
|
||||
function definitions.
|
||||
|
||||
Added config("redecl_warn", boolean) to control if calc issues
|
||||
warnings about variables being declared. The config("redecl_warn")
|
||||
value is TRUE by default.
|
||||
|
||||
Added config("dupvar_warn", boolean) to control if calc issues
|
||||
warnings about when variable names collide. Examples of variable name
|
||||
collisions include when:
|
||||
|
||||
* both local and static variables have the same name
|
||||
* both local and global variables have the same name
|
||||
* both function parameter and local variables have the same name
|
||||
* both function parameter and global variables have the same name
|
||||
|
||||
The config("dupvar_warn") value is TRUE by default.
|
||||
|
||||
Fix of a bug which causes some static variables not to be correctly
|
||||
unscoped when their identifiers are used in a global declaration.
|
||||
|
||||
Change of "undefine" from a command-level keyword to statement level and
|
||||
introduction of an "undefine static A" statement to end the scope of a
|
||||
static variable A at the current file/function levels.
|
||||
|
||||
Change/restored the syntax rules for "for" and "while" loops to
|
||||
recognize an unescaped newline in top-level command-level statements.
|
||||
|
||||
Updated help/avg, help/define, help/fprintf, help/gcd, help/hash,
|
||||
help/hmean, help/lcm, help/max, help/min, help/null, help/poly,
|
||||
help/printf, help/ssq, help/strcat, help/strprintf, help/sum,
|
||||
help/xor.
|
||||
|
||||
Changed the definition of the function ssq() to enable list arguments
|
||||
to be processed in the same way as in sum(). For example:
|
||||
|
||||
ssq(1,2, list(3,4,list(5,6)), list(), 7, 8)
|
||||
|
||||
returns the value of 1^2 + 2^2 + ... + 8^2 == 204.
|
||||
|
||||
Added the calc resource sumtimes.cal, to give the runtimes for
|
||||
various ways of evaluating sums, sums of squares, etc, for large
|
||||
lists and matrices. For example:
|
||||
|
||||
read sumtimes
|
||||
doalltimes(1e6)
|
||||
|
||||
Calc now ignores carrage returns (\r), vertical tabs (\v), and
|
||||
form feeds (\f) when token parsing. Thus users on Windoz systems
|
||||
can write files using their \r\n format and users on non-Windoz
|
||||
systems can read them without errors.
|
||||
|
||||
The quomod() builtin function now takes an optional 5th argument
|
||||
which controls the rounding mode like config("quomod") does, but
|
||||
only for that call. Now quomod() is in line with quo() and mod()
|
||||
in that the final augument is an optional rounding mode.
|
||||
|
||||
Added a "make uninstall" rule which will attempt to remove everything
|
||||
that was installed by a "make install".
|
||||
|
||||
Changed the "Copyright" line in the rpm spec file to a "License" line
|
||||
as per new rpm v4.4 syntax.
|
||||
|
||||
The quomod() builtin function does not allow constants for its 3rd
|
||||
and 4th arguments. Updated the "help quomod" file and added more
|
||||
quomod regression tests.
|
||||
|
||||
Added patch from Ernest Bowen <ebowen at une dot edu dot au> to
|
||||
add the builtin: estr(). The estr(x) will return a representation
|
||||
of a null, string, real number, complex number, list, matrix,
|
||||
object. block, named block, error as a string.
|
||||
|
||||
Added patch from Ernest Bowen <ebowen at une dot edu dot au> to
|
||||
add the builtin: fgetfile(). The fgetfile(x) will return the rest
|
||||
of an open file as a string.
|
||||
|
||||
Improved help files for fgetfield, fputs, name, or quomod.
|
||||
|
||||
|
||||
The following are the changes from calc version 2.11.10.1 to 2.11.11:
|
||||
|
||||
@@ -406,6 +528,9 @@ The following are the changes from calc version 2.11.10 to 2.11.10:
|
||||
that was reported for the PowerMac G5 2GHz MacOS 10.3 by
|
||||
Guillaume VERGNAUD <vergnaud at via dot ecp dot fr>.
|
||||
|
||||
Fixed a number of pending issues with help files filling in
|
||||
missing LIMITS, LINK LIBRARY, and SEE ALSO information,
|
||||
|
||||
|
||||
The following are the changes from calc version 2.11.9 to 2.11.9.3:
|
||||
|
||||
@@ -784,7 +909,7 @@ The following are the changes from calc version 2.11.5t4.1 to 2.11.5t4.4:
|
||||
For example when forming the calc rpm, the Makefile is called with
|
||||
T=$RPM_BUILD_ROOT. If $T is empty, calc is installed under /.
|
||||
|
||||
Removed all echo_XXX rules except for echo_inst_files from lower
|
||||
Removed all echo_XYZ rules except for echo_inst_files from lower
|
||||
level makefile. The calc.spec will use a make install rule
|
||||
with T=$RPM_BUILD_ROOT.
|
||||
|
||||
@@ -6077,8 +6202,8 @@ Following is a list of visible changes to calc from version 1.24.7 to 1.26.1:
|
||||
## received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
## 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
##
|
||||
## @(#) $Revision: 29.80 $
|
||||
## @(#) $Id: CHANGES,v 29.80 2006/06/11 07:52:58 chongo Exp $
|
||||
## @(#) $Revision: 29.86 $
|
||||
## @(#) $Id: CHANGES,v 29.86 2006/08/20 16:18:10 chongo Exp $
|
||||
## @(#) $Source: /usr/local/src/cmd/calc/RCS/CHANGES,v $
|
||||
##
|
||||
## Under source code control: 1993/06/02 18:12:57
|
||||
|
98
Makefile
98
Makefile
@@ -32,8 +32,8 @@
|
||||
# received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
# 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
#
|
||||
MAKEFILE_REV= $$Revision: 29.75 $$
|
||||
# @(#) $Id: Makefile.ship,v 29.75 2006/05/19 13:54:05 chongo Exp $
|
||||
MAKEFILE_REV= $$Revision: 29.76 $$
|
||||
# @(#) $Id: Makefile.ship,v 29.76 2006/06/26 05:46:06 chongo Exp $
|
||||
# @(#) $Source: /usr/local/src/cmd/calc/RCS/Makefile.ship,v $
|
||||
#
|
||||
# Under source code control: 1990/02/15 01:48:41
|
||||
@@ -3543,6 +3543,10 @@ clobber:
|
||||
-rm -rf win32
|
||||
${V} echo '=-=-=-=-= end of $@ rule =-=-=-=-='
|
||||
|
||||
# install everything
|
||||
#
|
||||
# NOTE: Keep the uninstall rule in reverse order to the install rule
|
||||
#
|
||||
install: calc libcalc.a ${LIB_H_SRC} ${BUILD_H_SRC} calc.1
|
||||
${V} echo '=-=-=-=-= start of $@ rule =-=-=-=-='
|
||||
-${Q}if [ ! -z "$T" ]; then \
|
||||
@@ -3744,6 +3748,96 @@ install: calc libcalc.a ${LIB_H_SRC} ${BUILD_H_SRC} calc.1
|
||||
fi
|
||||
${V} echo '=-=-=-=-= end of $@ rule =-=-=-=-='
|
||||
|
||||
# Try to remove everything that was installed
|
||||
#
|
||||
# NOTE: Keep the uninstall rule in reverse order to the install rule
|
||||
#
|
||||
uninstall:
|
||||
${V} echo '=-=-=-=-= start of $@ rule =-=-=-=-='
|
||||
-${Q}if [ -z "${CATDIR}" ]; then \
|
||||
true; \
|
||||
else \
|
||||
if [ -f "$T${CATDIR}/calc.${CATEXT}" ]; then \
|
||||
rm -f "$T${CATDIR}/calc.${CATEXT}"; \
|
||||
if [ -f "$T${CATDIR}/calc.${CATEXT}" ]; then \
|
||||
echo "cannot uninstall $T${CATDIR}/calc.${CATEXT}"; \
|
||||
else \
|
||||
echo "uninstalled $T${CATDIR}/calc.${CATEXT}"; \
|
||||
fi; \
|
||||
fi; \
|
||||
fi
|
||||
-${Q}if [ -z "${MANDIR}" ]; then \
|
||||
true; \
|
||||
else \
|
||||
if [ -f "$T${MANDIR}/calc.${MANEXT}" ]; then \
|
||||
rm -f "$T${MANDIR}/calc.${MANEXT}"; \
|
||||
if [ -f "$T${MANDIR}/calc.${MANEXT}" ]; then \
|
||||
echo "cannot uninstall $T${MANDIR}/calc.${MANEXT}"; \
|
||||
else \
|
||||
echo "uninstalled $T${MANDIR}/calc.${MANEXT}"; \
|
||||
fi; \
|
||||
fi; \
|
||||
fi
|
||||
-${Q}for i in ${BUILD_H_SRC} ${LIB_H_SRC} /dev/null; do \
|
||||
if [ "$$i" = "/dev/null" ]; then \
|
||||
continue; \
|
||||
fi; \
|
||||
if [ -f "$T${CALC_INCDIR}/$$i" ]; then \
|
||||
rm -f "$T${CALC_INCDIR}/$$i"; \
|
||||
if [ -f "$T${CALC_INCDIR}/$$i" ]; then \
|
||||
echo "cannot uninstall $T${CALC_INCDIR}/$$i"; \
|
||||
else \
|
||||
echo "uninstalled $T${CALC_INCDIR}/$$i"; \
|
||||
fi; \
|
||||
fi; \
|
||||
done
|
||||
-${Q}if [ -f "$T${LIBDIR}/libcalc.a" ]; then \
|
||||
rm -f "$T${LIBDIR}/libcalc.a"; \
|
||||
if [ -f "$T${LIBDIR}/libcalc.a" ]; then \
|
||||
echo "cannot uninstall $T${LIBDIR}/libcalc.a"; \
|
||||
else \
|
||||
echo "uninstalled $T${LIBDIR}/libcalc.a"; \
|
||||
fi; \
|
||||
fi
|
||||
${V} echo '=-=-=-=-= Invoking $@ rule for cscript =-=-=-=-='
|
||||
${Q}cd cscript; ${MAKE} -f Makefile ${CSCRIPT_PASSDOWN} uninstall
|
||||
${V} echo '=-=-=-=-= Back to the main Makefile for $@ rule =-=-=-=-='
|
||||
${V} echo '=-=-=-=-= Invoking $@ rule for sample =-=-=-=-='
|
||||
${Q}cd sample; ${MAKE} -f Makefile ${SAMPLE_PASSDOWN} uninstall
|
||||
${V} echo '=-=-=-=-= Back to the main Makefile for $@ rule =-=-=-=-='
|
||||
${V} echo '=-=-=-=-= Invoking $@ rule for custom =-=-=-=-='
|
||||
${Q}cd custom; ${MAKE} -f Makefile ${CUSTOM_PASSDOWN} uninstall
|
||||
${V} echo '=-=-=-=-= Back to the main Makefile for $@ rule =-=-=-=-='
|
||||
${V} echo '=-=-=-=-= Invoking $@ rule for cal =-=-=-=-='
|
||||
${Q}cd cal; ${MAKE} -f Makefile ${CAL_PASSDOWN} uninstall
|
||||
${V} echo '=-=-=-=-= Back to the main Makefile for $@ rule =-=-=-=-='
|
||||
${V} echo '=-=-=-=-= Invoking $@ rule for help =-=-=-=-='
|
||||
${Q}cd help; ${MAKE} -f Makefile ${HELP_PASSDOWN} uninstall
|
||||
${V} echo '=-=-=-=-= Back to the main Makefile for $@ rule =-=-=-=-='
|
||||
-${Q}if [ -f "$T${BINDIR}/calc${EXT}" ]; then \
|
||||
rm -f "$T${BINDIR}/calc${EXT}"; \
|
||||
if [ -f "$T${BINDIR}/calc${EXT}" ]; then \
|
||||
echo "cannot uninstall $T${BINDIR}/calc${EXT}"; \
|
||||
else \
|
||||
echo "uninstalled $T${BINDIR}/calc${EXT}"; \
|
||||
fi; \
|
||||
fi
|
||||
-${Q}for i in ${CATDIR} ${MANDIR} ${SCRIPTDIR} \
|
||||
${CUSTOMINCDIR} ${CUSTOMHELPDIR} ${CUSTOMCALDIR} \
|
||||
${CALC_INCDIR} ${LIBDIR} ${INCDIR} ${BINDIR}; do \
|
||||
if [ -d "$T$$i" ]; then \
|
||||
rmdir "$T$$i" 2>/dev/null; \
|
||||
echo "cleaned up $T$$i"; \
|
||||
fi; \
|
||||
done
|
||||
-${Q}if [ ! -z "$T" ]; then \
|
||||
if [ -d "$T" ]; then \
|
||||
rmdir "$T" 2>/dev/null; \
|
||||
echo "cleaned up $T"; \
|
||||
fi; \
|
||||
fi
|
||||
${V} echo '=-=-=-=-= end of $@ rule =-=-=-=-='
|
||||
|
||||
# splint - A tool for statically checking C programs
|
||||
#
|
||||
splint: #hsrc
|
||||
|
15
addop.c
15
addop.c
@@ -19,8 +19,8 @@
|
||||
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
*
|
||||
* @(#) $Revision: 29.12 $
|
||||
* @(#) $Id: addop.c,v 29.12 2006/06/03 22:47:28 chongo Exp $
|
||||
* @(#) $Revision: 29.13 $
|
||||
* @(#) $Id: addop.c,v 29.13 2006/06/20 10:28:06 chongo Exp $
|
||||
* @(#) $Source: /usr/local/src/cmd/calc/RCS/addop.c,v $
|
||||
*
|
||||
* Under source code control: 1990/02/15 01:48:10
|
||||
@@ -280,13 +280,13 @@ rmuserfunc(char *name)
|
||||
|
||||
index = findstr(&funcnames, name);
|
||||
if (index < 0) {
|
||||
errorcount--;
|
||||
scanerror(T_NULL,
|
||||
"Attempt to undefine an undefined function\n\t\"%s\"", name);
|
||||
warning("No function named \"%s\" to be undefined", name);
|
||||
return;
|
||||
}
|
||||
if (functions[index] == NULL)
|
||||
if (functions[index] == NULL) {
|
||||
warning("No defined function \"%s\" to be undefined", name);
|
||||
return;
|
||||
}
|
||||
freenumbers(functions[index]);
|
||||
free(functions[index]);
|
||||
if ((inputisterminal() && conf->resource_debug & RSCDBG_STDIN_FUNC) ||
|
||||
@@ -527,8 +527,7 @@ addop(long op)
|
||||
fp->f_opcodecount -= diff;
|
||||
oldop = OP_NOP;
|
||||
oldoldop = OP_NOP;
|
||||
errorcount--;
|
||||
scanerror(T_NULL, "Constant before comma operator");
|
||||
warning("Constant before comma operator");
|
||||
return;
|
||||
}
|
||||
break;
|
||||
|
35
cal/Makefile
35
cal/Makefile
@@ -18,8 +18,8 @@
|
||||
# received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
# 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
#
|
||||
# @(#) $Revision: 29.19 $
|
||||
# @(#) $Id: Makefile,v 29.19 2006/06/10 13:01:34 chongo Exp $
|
||||
# @(#) $Revision: 29.21 $
|
||||
# @(#) $Id: Makefile,v 29.21 2006/06/26 05:46:06 chongo Exp $
|
||||
# @(#) $Source: /usr/local/src/cmd/calc/cal/RCS/Makefile,v $
|
||||
#
|
||||
# Under source code control: 1991/07/21 05:00:54
|
||||
@@ -177,7 +177,7 @@ CALC_FILES= README bigprime.cal deg.cal ellip.cal lucas.cal lucas_chk.cal \
|
||||
beer.cal hello.cal test5100.cal test5200.cal randombitrun.cal \
|
||||
randomrun.cal repeat.cal xx_print.cal natnumset.cal qtime.cal \
|
||||
test8400.cal test8500.cal test8600.cal chi.cal intfile.cal screen.cal \
|
||||
dotest.cal set8700.cal set8700.line alg_config.cal
|
||||
dotest.cal set8700.cal set8700.line alg_config.cal sumtimes.cal
|
||||
|
||||
# These files are found (but not built) in the distribution
|
||||
#
|
||||
@@ -249,6 +249,10 @@ clean:
|
||||
clobber:
|
||||
rm -f .all
|
||||
|
||||
# install everything
|
||||
#
|
||||
# NOTE: Keep the uninstall rule in reverse order to the install rule
|
||||
#
|
||||
install: all
|
||||
-${Q}if [ ! -d $T${CALC_SHAREDIR} ]; then \
|
||||
echo mkdir $T${CALC_SHAREDIR}; \
|
||||
@@ -276,3 +280,28 @@ install: all
|
||||
echo "installed $T${CALC_SHAREDIR}/$$i"; \
|
||||
fi; \
|
||||
done
|
||||
|
||||
# Try to remove everything that was installed
|
||||
#
|
||||
# NOTE: Keep the uninstall rule in reverse order to the install rule
|
||||
#
|
||||
uninstall:
|
||||
-${Q}for i in ${CALC_FILES} /dev/null; do \
|
||||
if [ "$$i" = "/dev/null" ]; then \
|
||||
continue; \
|
||||
fi; \
|
||||
if [ -f "$T${CALC_SHAREDIR}/$$i" ]; then \
|
||||
rm -f "$T${CALC_SHAREDIR}/$$i"; \
|
||||
if [ -f "$T${CALC_SHAREDIR}/$$i" ]; then \
|
||||
echo "cannot uninstall $T${CALC_SHAREDIR}/$$i"; \
|
||||
else \
|
||||
echo "uninstalled $T${CALC_SHAREDIR}/$$i"; \
|
||||
fi; \
|
||||
fi; \
|
||||
done
|
||||
-${Q}for i in ${CALC_SHAREDIR}; do \
|
||||
if [ -d "$T$$i" ]; then \
|
||||
rmdir "$T$$i" 2>/dev/null; \
|
||||
echo "cleaned up $T$$i"; \
|
||||
fi; \
|
||||
done
|
||||
|
25
cal/README
25
cal/README
@@ -701,6 +701,27 @@ sumsq.cal
|
||||
4N+1, and always impossible for primes of the form 4N-1.
|
||||
|
||||
|
||||
sumtimes.cal
|
||||
|
||||
timematsum(N)
|
||||
timelistsum(N)
|
||||
timematsort(N)
|
||||
timelistsort(N)
|
||||
timematreverse(N)
|
||||
timelistreverse(N)
|
||||
timematssq(N)
|
||||
timelistssq(N)
|
||||
timehmean(N,M)
|
||||
doalltimes(N)
|
||||
|
||||
Give the runtimes for various ways of evaluating sums, sums of
|
||||
squares, etc, for large lists and matrices. N is the size of
|
||||
the list or matrix to use. The doalltimes() function will run
|
||||
all fo the sumtimes tests. For example:
|
||||
|
||||
doalltimes(1e6);
|
||||
|
||||
|
||||
surd.cal
|
||||
|
||||
surd(a, b)
|
||||
@@ -993,8 +1014,8 @@ xx_print.cal
|
||||
## received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
## 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
##
|
||||
## @(#) $Revision: 29.14 $
|
||||
## @(#) $Id: README,v 29.14 2006/06/11 07:22:05 chongo Exp $
|
||||
## @(#) $Revision: 29.15 $
|
||||
## @(#) $Id: README,v 29.15 2006/06/23 00:34:55 chongo Exp $
|
||||
## @(#) $Source: /usr/local/src/cmd/calc/cal/RCS/README,v $
|
||||
##
|
||||
## Under source code control: 1990/02/15 01:50:32
|
||||
|
@@ -17,8 +17,8 @@
|
||||
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
*
|
||||
* @(#) $Revision: 29.3 $
|
||||
* @(#) $Id: ellip.cal,v 29.3 2006/03/07 22:16:25 chongo Exp $
|
||||
* @(#) $Revision: 29.4 $
|
||||
* @(#) $Id: ellip.cal,v 29.4 2006/06/20 09:29:16 chongo Exp $
|
||||
* @(#) $Source: /usr/local/src/cmd/calc/cal/RCS/ellip.cal,v $
|
||||
*
|
||||
* Under source code control: 1990/02/15 01:50:33
|
||||
@@ -28,16 +28,17 @@
|
||||
*/
|
||||
|
||||
/*
|
||||
* Attempt to factor numbers using elliptic functions.
|
||||
* y^2 = x^3 + a*x + b (mod N).
|
||||
* Attempt to factor numbers using elliptic functions:
|
||||
*
|
||||
* Many points (x,y) (mod N) are found that solve the above equation,
|
||||
* y^2 = x^3 + a*x + b (mod ellip_N).
|
||||
*
|
||||
* Many points (x,y) (mod ellip_N) are found that solve the above equation,
|
||||
* starting from a trivial solution and 'multiplying' that point together
|
||||
* to generate high powers of the point, looking for such a point whose
|
||||
* order contains a common factor with N. The order of the group of points
|
||||
* varies almost randomly within a certain interval for each choice of a
|
||||
* and b, and thus each choice provides an independent opportunity to
|
||||
* factor N. To generate a trivial solution, a is chosen and then b is
|
||||
* order contains a common factor with ellip_N. The order of the group of
|
||||
* points varies almost randomly within a certain interval for each choice of
|
||||
* a and b, and thus each choice provides an independent opportunity to
|
||||
* factor ellip_N. To generate a trivial solution, a is chosen and then b is
|
||||
* selected so that (1,1) is a solution. The multiplication is done using
|
||||
* the basic fact that the equation is a cubic, and so if a line hits the
|
||||
* curve in two rational points, then the third intersection point must
|
||||
@@ -45,9 +46,9 @@
|
||||
* the number of rational solutions can be made very large. When modular
|
||||
* arithmetic is used, solving for the third point requires the taking of a
|
||||
* modular inverse (instead of division), and if this fails, then the GCD
|
||||
* of the failing value and N provides a factor of N. This description is
|
||||
* only an approximation, read "A Course in Number Theory and Cryptography"
|
||||
* by Neal Koblitz for a good explanation.
|
||||
* of the failing value and ellip_N provides a factor of ellip_N.
|
||||
* This description is only an approximation, read "A Course in Number
|
||||
* Theory and Cryptography" by Neal Koblitz for a good explanation.
|
||||
*
|
||||
* efactor(iN, ia, B, force)
|
||||
* iN is the number to be factored.
|
||||
@@ -81,15 +82,15 @@
|
||||
*
|
||||
* If a factor is found, it is returned and is also saved in the global
|
||||
* variable f. The number being factored is also saved in the global
|
||||
* variable N.
|
||||
* variable ellip_N.
|
||||
*/
|
||||
|
||||
|
||||
obj point {x, y};
|
||||
global N; /* number to factor */
|
||||
global a; /* first coefficient */
|
||||
global b; /* second coefficient */
|
||||
global f; /* found factor */
|
||||
global ellip_N; /* number to factor */
|
||||
global ellip_a; /* first coefficient */
|
||||
global ellip_b; /* second coefficient */
|
||||
global ellip_f; /* found factor */
|
||||
|
||||
|
||||
define efactor(iN, ia, B, force)
|
||||
@@ -103,28 +104,28 @@ define efactor(iN, ia, B, force)
|
||||
if (isnull(ia))
|
||||
ia = 1;
|
||||
obj point x;
|
||||
a = ia;
|
||||
b = -ia;
|
||||
N = iN;
|
||||
C = isqrt(N);
|
||||
ellip_a = ia;
|
||||
ellip_b = -ia;
|
||||
ellip_N = iN;
|
||||
C = isqrt(ellip_N);
|
||||
C = 2 * C + 2 * isqrt(C) + 1;
|
||||
f = 0;
|
||||
while (f == 0) {
|
||||
print "A =", a;
|
||||
ellip_f = 0;
|
||||
while (ellip_f == 0) {
|
||||
print "A =", ellip_a;
|
||||
x.x = 1;
|
||||
x.y = 1;
|
||||
print 2, x;
|
||||
x = x ^ (2 ^ (highbit(C) + 1));
|
||||
for (p = 3; ((p < B) && (f == 0)); p += 2) {
|
||||
for (p = 3; ((p < B) && (ellip_f == 0)); p += 2) {
|
||||
if (!ptest(p, 1))
|
||||
continue;
|
||||
print p, x;
|
||||
x = x ^ (p ^ ((highbit(C) // highbit(p)) + 1));
|
||||
}
|
||||
a++;
|
||||
b--;
|
||||
ellip_a++;
|
||||
ellip_b--;
|
||||
}
|
||||
return f;
|
||||
return ellip_f;
|
||||
}
|
||||
|
||||
|
||||
@@ -143,16 +144,16 @@ define point_mul(p1, p2)
|
||||
if (p1 == p2)
|
||||
return point_square(`p1);
|
||||
obj point r;
|
||||
m = (minv(p2.x - p1.x, N) * (p2.y - p1.y)) % N;
|
||||
m = (minv(p2.x - p1.x, ellip_N) * (p2.y - p1.y)) % ellip_N;
|
||||
if (m == 0) {
|
||||
if (f == 0)
|
||||
f = gcd(p2.x - p1.x, N);
|
||||
if (ellip_f == 0)
|
||||
ellip_f = gcd(p2.x - p1.x, ellip_N);
|
||||
r.x = 1;
|
||||
r.y = 1;
|
||||
return r;
|
||||
}
|
||||
r.x = (m^2 - p1.x - p2.x) % N;
|
||||
r.y = ((m * (p1.x - r.x)) - p1.y) % N;
|
||||
r.x = (m^2 - p1.x - p2.x) % ellip_N;
|
||||
r.y = ((m * (p1.x - r.x)) - p1.y) % ellip_N;
|
||||
return r;
|
||||
}
|
||||
|
||||
@@ -162,16 +163,16 @@ define point_square(p)
|
||||
local r, m;
|
||||
|
||||
obj point r;
|
||||
m = ((3 * p.x^2 + a) * minv(p.y << 1, N)) % N;
|
||||
m = ((3 * p.x^2 + ellip_a) * minv(p.y << 1, ellip_N)) % ellip_N;
|
||||
if (m == 0) {
|
||||
if (f == 0)
|
||||
f = gcd(p.y << 1, N);
|
||||
if (ellip_f == 0)
|
||||
ellip_f = gcd(p.y << 1, ellip_N);
|
||||
r.x = 1;
|
||||
r.y = 1;
|
||||
return r;
|
||||
}
|
||||
r.x = (m^2 - p.x - p.x) % N;
|
||||
r.y = ((m * (p.x - r.x)) - p.y) % N;
|
||||
r.x = (m^2 - p.x - p.x) % ellip_N;
|
||||
r.y = ((m * (p.x - r.x)) - p.y) % ellip_N;
|
||||
return r;
|
||||
}
|
||||
|
||||
@@ -184,7 +185,7 @@ define point_pow(p, pow)
|
||||
if (isodd(pow))
|
||||
r = p;
|
||||
t = p;
|
||||
for (bit = 2; ((bit <= pow) && (f == 0)); bit <<= 1) {
|
||||
for (bit = 2; ((bit <= pow) && (ellip_f == 0)); bit <<= 1) {
|
||||
t = point_square(`t);
|
||||
if (bit & pow)
|
||||
r = point_mul(`t, `r);
|
||||
|
@@ -17,8 +17,8 @@
|
||||
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
*
|
||||
* @(#) $Revision: 29.2 $
|
||||
* @(#) $Id: prompt.cal,v 29.2 2000/06/07 14:02:25 chongo Exp $
|
||||
* @(#) $Revision: 29.3 $
|
||||
* @(#) $Id: prompt.cal,v 29.3 2006/06/20 09:29:16 chongo Exp $
|
||||
* @(#) $Source: /usr/local/src/cmd/calc/cal/RCS/prompt.cal,v $
|
||||
*
|
||||
* Under source code control: 1995/12/18 04:43:25
|
||||
@@ -101,7 +101,7 @@ define adder() {
|
||||
}
|
||||
}
|
||||
|
||||
global x;
|
||||
global prompt_x;
|
||||
|
||||
define showvalues(str) {
|
||||
local s;
|
||||
@@ -109,8 +109,8 @@ define showvalues(str) {
|
||||
s = prompt("? ");
|
||||
if (s == "end")
|
||||
break;
|
||||
x = eval(s);
|
||||
if (!isnum(x)) {
|
||||
prompt_x = eval(s);
|
||||
if (!isnum(prompt_x)) {
|
||||
print "Please enter a number";
|
||||
continue;
|
||||
}
|
||||
|
148
cal/regress.cal
148
cal/regress.cal
@@ -17,8 +17,8 @@
|
||||
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
*
|
||||
* @(#) $Revision: 29.29 $
|
||||
* @(#) $Id: regress.cal,v 29.29 2006/06/11 07:07:23 chongo Exp $
|
||||
* @(#) $Revision: 29.35 $
|
||||
* @(#) $Id: regress.cal,v 29.35 2006/08/20 16:16:11 chongo Exp $
|
||||
* @(#) $Source: /usr/local/src/cmd/calc/cal/RCS/regress.cal,v $
|
||||
*
|
||||
* Under source code control: 1990/02/15 01:50:36
|
||||
@@ -201,7 +201,6 @@ define test_variables()
|
||||
local x1, x2, x3;
|
||||
global g1, g2;
|
||||
local t;
|
||||
global globalvar;
|
||||
local x;
|
||||
|
||||
print '350: Beginning test_variables';
|
||||
@@ -744,6 +743,7 @@ define test_functions()
|
||||
local pi;
|
||||
local h, n, r, m, v;
|
||||
local n2, m2, v2;
|
||||
local t;
|
||||
|
||||
print '700: Beginning test_functions';
|
||||
|
||||
@@ -1317,7 +1317,65 @@ define test_functions()
|
||||
*/
|
||||
vrfy(isstr(calcpath()), '1155: isstr(calcpath())');
|
||||
|
||||
print '1156: Ending test_functions';
|
||||
/*
|
||||
* ssq use of lists
|
||||
*/
|
||||
vrfy(ssq(1,2, list(3,4,list(5,6)), list(), 7, 8) == 204,
|
||||
'1156: ssq(1,2, list(3,4,list(5,6)), list(), 7, 8) == 204');
|
||||
|
||||
/*
|
||||
* quomod 5th argument rounding tests
|
||||
*/
|
||||
vrfy(quomod(10,-3,a,b,0) == 1, '1157: vrfy(quomod(10,-3,a,b,0) == 1');
|
||||
vrfy(a == -4, '1158: a == -4');
|
||||
vrfy(b == -2, '1159: b == -2');
|
||||
vrfy(quomod(-10,-3,a,b,1) == 1, '1160: vrfy(quomod(-10,-3,a,b,1) == 1');
|
||||
vrfy(a == 4, '1161: a == 4');
|
||||
vrfy(b == 2, '1162: b == 2');
|
||||
vrfy(quomod(10,3,a,b,2) == 1, '1163: vrfy(quomod(10,3,a,b,2) == 1');
|
||||
vrfy(a == 3, '1164: a == 3');
|
||||
vrfy(b == 1, '1165: b == 1');
|
||||
vrfy(quomod(-10,3,a,b,3) == 1, '1166: vrfy(quomod(-10,3,a,b,3) == 1');
|
||||
vrfy(a == -4, '1167: a == -4');
|
||||
vrfy(b == 2, '1168: b == 2');
|
||||
vrfy(quomod(10,-3,a,b,4) == 1, '1169: vrfy(quomod(10,-3,a,b,4) == 1');
|
||||
vrfy(a == -3, '1170: a == -3');
|
||||
vrfy(b == 1, '1171: b == 1');
|
||||
vrfy(quomod(-10,-3,a,b,5) == 1, '1172: vrfy(quomod(-10,-3,a,b,5) == 1');
|
||||
vrfy(a == 3, '1173: a == 3');
|
||||
vrfy(b == -1, '1174: b == -1');
|
||||
vrfy(quomod(10,3,a,b,6) == 1, '1175: vrfy(quomod(10,3,a,b,6) == 1');
|
||||
vrfy(a == 3, '1176: a == 3');
|
||||
vrfy(b == 1, '1177: b == 1');
|
||||
vrfy(quomod(-10,3,a,b,7) == 1, '1178: vrfy(quomod(-10,3,a,b,7) == 1');
|
||||
vrfy(a == -4, '1179: a == -4');
|
||||
vrfy(b == 2, '1180: b == 2');
|
||||
vrfy(quomod(10,-3,a,b,8) == 1, '1181: vrfy(quomod(10,-3,a,b,8) == 1');
|
||||
vrfy(a == -4, '1182: a == -4');
|
||||
vrfy(b == -2, '1183: b == -2');
|
||||
vrfy(quomod(-10,-3,a,b,9) == 1, '1184: vrfy(quomod(-10,-3,a,b,9) == 1');
|
||||
vrfy(a == 3, '1185: a == 3');
|
||||
vrfy(b == -1, '1186: b == -1');
|
||||
vrfy(quomod(10,3,a,b,10) == 1, '1187: vrfy(quomod(10,3,a,b,10) == 1');
|
||||
vrfy(a == 4, '1188: a == 4');
|
||||
vrfy(b == -2, '1189: b == -2');
|
||||
vrfy(quomod(-10,3,a,b,11) == 1, '1190: vrfy(quomod(-10,3,a,b,11) == 1');
|
||||
vrfy(a == -4, '1191: a == -4');
|
||||
vrfy(b == 2, '1192: b == 2');
|
||||
vrfy(quomod(10,-3,a,b,12) == 1, '1193: vrfy(quomod(10,-3,a,b,12) == 1');
|
||||
vrfy(a == -3, '1194: a == -3');
|
||||
vrfy(b == 1, '1195: b == 1');
|
||||
vrfy(quomod(-10,-3,a,b,13) == 1,'1196: vrfy(quomod(-10,-3,a,b,13) == 1');
|
||||
vrfy(a == 4, '1197: a == 4');
|
||||
vrfy(b == 2, '1198: b == 2');
|
||||
vrfy(quomod(10,3,a,b,14) == 1, '1199: vrfy(quomod(10,3,a,b,14) == 1');
|
||||
vrfy(a == 4, '1200: a == 4');
|
||||
vrfy(b == -2, '1201: b == -2');
|
||||
vrfy(quomod(-10,3,a,b,15) == 1, '1202: vrfy(quomod(-10,3,a,b,15) == 1');
|
||||
vrfy(a == -4, '1203: a == -4');
|
||||
vrfy(b == 2, '1204: b == 2');
|
||||
|
||||
print '1205: Ending test_functions';
|
||||
}
|
||||
print '017: parsed test_functions()';
|
||||
|
||||
@@ -1334,14 +1392,14 @@ define _test_underscore()
|
||||
local _a = 27;
|
||||
local __a = 23209;
|
||||
|
||||
print "1200: Beginning _test_underscore";
|
||||
print "1290: Beginning _test_underscore";
|
||||
|
||||
vrfy(_a == 27, '1201: _a == 27');
|
||||
vrfy(_ == 49, '1202: _ == 49');
|
||||
vrfy(__ == 63, '1203: __ == 63');
|
||||
vrfy(__a == 23209, '1204: __a == 23209');
|
||||
vrfy(_a == 27, '1291: _a == 27');
|
||||
vrfy(_ == 49, '1292: _ == 49');
|
||||
vrfy(__ == 63, '1293: __ == 63');
|
||||
vrfy(__a == 23209, '1294: __a == 23209');
|
||||
|
||||
print "1205: Ending _test_underscore";
|
||||
print "1295: Ending _test_underscore";
|
||||
}
|
||||
print '020: parsed _test_underscore';
|
||||
|
||||
@@ -3404,7 +3462,7 @@ print '070: parsed test_redc()';
|
||||
*/
|
||||
define test_fileops()
|
||||
{
|
||||
local a, b, c, f, m, n, p, r, x, y, z;
|
||||
local a, b, c, f, m, n, p, r, s, x, y, z;
|
||||
local L = "Landon";
|
||||
local C = "Curt";
|
||||
local N = "Noll";
|
||||
@@ -3529,15 +3587,38 @@ define test_fileops()
|
||||
++ecnt;
|
||||
print '4267: ++ecnt;';
|
||||
vrfy(isfile(p=fopen(long,"r")) == 0,
|
||||
'4268: isfile(p=fopen(long,"r")) == 0');
|
||||
'4268: isfile(p=fopen(long,"r")) == 0');
|
||||
|
||||
/*
|
||||
* test fgetfile() and fgetline()
|
||||
*/
|
||||
vrfy(!iserror(p=fopen("tmp4200","w")),
|
||||
'4269: !iserror(p=fopen("tmp4200","w"))');
|
||||
vrfy(!iserror(fputs(p,"chongo\n")),
|
||||
'4270: !iserror(fputs(p,"chongo\n"))');
|
||||
vrfy(!iserror(fputs(p,"w\0a\0s\n")),
|
||||
'4271: !iserror(fputs(p,"w\0a\0s\n"))');
|
||||
vrfy(!iserror(fputs(p,"here\n")),
|
||||
'4272: !iserror(fputs(p,"here\n"))');
|
||||
vrfy(!iserror(fclose(p)), '4273: !iserror(fclose(p))');
|
||||
vrfy(!iserror(p=fopen("tmp4200","r")),
|
||||
'4274: !iserror(p=fopen("tmp4200","r"))');
|
||||
vrfy(!iserror(s=fgetline(p)), '4275: !iserror(s=fgetline(p))');
|
||||
vrfy(strcmp(s,"chongo") == 0, '4276: strcmp(s,"chongo") == 0');
|
||||
vrfy(!iserror(s=fgetfile(p)), '4277: !iserror(s=fgetfile(p))');
|
||||
vrfy(strcmp(s,"w\0a\0s\nhere\n") == 0,
|
||||
'4278: strcmp(s,"w\0a\0s\nhere\n") == 0');
|
||||
vrfy(!iserror(fclose(p)), '4279: !iserror(fclose(p))');
|
||||
|
||||
/*
|
||||
* cleanup
|
||||
*/
|
||||
x = rm("junk4200");
|
||||
print '4269: x = rm("junk4200")';
|
||||
print '4280: x = rm("junk4200")';
|
||||
x = rm("tmp4200");
|
||||
print '4281: x = rm("tmp4200")';
|
||||
|
||||
print '4270: Ending test_fileops';
|
||||
print '4282: Ending test_fileops';
|
||||
}
|
||||
print '071: parsed test_fileops()';
|
||||
|
||||
@@ -3972,7 +4053,7 @@ print '088: parsed test_fileop()';
|
||||
/*
|
||||
* global and static assignment tests
|
||||
*/
|
||||
global a = 10, b, c d = 20, e, f;
|
||||
global a = 10, b, c d = 20, e;
|
||||
print '089: global a = 10, b, c d = 20, e, f';
|
||||
vrfy(a == 10, '090: a == 10');
|
||||
vrfy(b == 0, '091: b == 0');
|
||||
@@ -4672,13 +4753,11 @@ print '137: parsed test_random()';
|
||||
/*
|
||||
* test_newsyn - test new command completion syntax and scope rules
|
||||
*/
|
||||
for (s5500 = 0, i = 0; i < 5; i++)
|
||||
s5500 += i;
|
||||
for (s5500 = 0, i = 0; i < 5; i++) s5500 += i;
|
||||
print "138: for (s5500 = 0, i = 0; i < 5; i++) s5500 += i;";
|
||||
vrfy(s5500 == 10, '139: s5500 == 10');
|
||||
vrfy(i == 5, '140: i == 5');
|
||||
for (s5500 = 0, i = 0; i < 9; i++)
|
||||
{
|
||||
for (s5500 = 0, i = 0; i < 9; i++) {
|
||||
s5500 += i;
|
||||
}
|
||||
print "141: for (s5500 = 0, i = 0; i < 9; i++) { s5500 += i; }";
|
||||
@@ -4726,7 +4805,6 @@ define test_newsyn()
|
||||
vrfy(i == 3, '5509: i == 3');
|
||||
/**/
|
||||
{
|
||||
local i;
|
||||
for (s5500 = 0, i = 0; i < 11; i++)
|
||||
s5500 += i;
|
||||
vrfy(s5500 == 55, '5510: s5500 == 45');
|
||||
@@ -5138,8 +5216,6 @@ print '156: parsed test_size()';
|
||||
/*
|
||||
* test_assign - test assignment of constants and variables
|
||||
*/
|
||||
global A, B; /* A, B for "constants" */
|
||||
print '157: global A, B';
|
||||
global X5800, Y5800; /* X5800, Y5800 for "variables" */
|
||||
print '158: global X5800, Y5800';
|
||||
obj xy5800 {x, y};
|
||||
@@ -7818,7 +7894,27 @@ read -once "test8500";
|
||||
print;
|
||||
print '8600: Starting test of up to 1024 args'
|
||||
read -once "test8600";
|
||||
/* 86xx: Ending test of up to 1024 args is printed by test8600.cal */
|
||||
/* 860x: Ending test of up to 1024 args is printed by test8600.cal */
|
||||
|
||||
|
||||
/*
|
||||
* dupvar_warn and redecl_warn testing
|
||||
*/
|
||||
print;
|
||||
print '8650: Starting test of dupvar_warn and redecl_warn config parameters';
|
||||
vrfy(config("redecl_warn",0), '8651: config("redecl_warn",0)');
|
||||
vrfy(config("dupvar_warn",0), '8652: config("dupvar_warn",0)');
|
||||
vrfy(u_glob == 6, '8653: u_glob == 6');
|
||||
global u_glob = 555;
|
||||
print '8654: reclare u_glob';
|
||||
vrfy(u_glob == 555, '8655: u_glob == 555');
|
||||
define func_8650(u_glob) { local u_glob; return u_glob; }
|
||||
print '8656: u_glob as both local and parameter';
|
||||
define func_8650a(u_glob) { static u_glob; return u_glob; }
|
||||
print '8657: u_glob as both static and parameter';
|
||||
vrfy(config("redecl_warn",1)==0, '8658: config("redecl_warn",1)==0');
|
||||
vrfy(config("dupvar_warn",1)==0, '8659: config("dupvar_warn",1)==0');
|
||||
/* 865x: Ending test of up to 1024 args is printed by test8600.cal */
|
||||
|
||||
|
||||
/*
|
||||
@@ -7826,6 +7922,7 @@ read -once "test8600";
|
||||
*
|
||||
* We use the dotest driver to evaluate test-97xx data files.
|
||||
*/
|
||||
print;
|
||||
print '8700: Starting dotest runs'
|
||||
print '8701: read -once "dotest"';
|
||||
read -once "dotest";
|
||||
@@ -7835,6 +7932,7 @@ vrfy(dotest("set8700.line", 8703) == 0,
|
||||
'8703: dotest("set8700.line", 8703) == 0');
|
||||
/* 87xx: Ending dotest runs is printed by set8700.test */
|
||||
|
||||
|
||||
/*
|
||||
* read various calc resource files
|
||||
*
|
||||
@@ -7931,7 +8029,9 @@ print '9836: read -once linear';
|
||||
print '9837: skipping read -once beer.cal because it is an infinite loop';
|
||||
print '9838: skipping read -once hello.cal because it is an infinite loop';
|
||||
print '9839: skipping read -once xx_print.cal because it is a printing demo';
|
||||
print '9840: Ending read of selected calc resource files';
|
||||
read -once sumtimes;
|
||||
print '9840: read -once sumtimes';
|
||||
print '9841: Ending read of selected calc resource files';
|
||||
|
||||
|
||||
/*
|
||||
|
@@ -17,8 +17,8 @@
|
||||
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
*
|
||||
* @(#) $Revision: 29.1 $
|
||||
* @(#) $Id: set8700.cal,v 29.1 2006/05/20 19:35:33 chongo Exp $
|
||||
* @(#) $Revision: 29.2 $
|
||||
* @(#) $Id: set8700.cal,v 29.2 2006/08/20 16:16:11 chongo Exp $
|
||||
* @(#) $Source: /usr/local/src/cmd/calc/cal/RCS/set8700.cal,v $
|
||||
*
|
||||
* Under source code control: 2006/05/20 14:10:11
|
||||
@@ -70,3 +70,8 @@ define set8700_g(set8700_x)
|
||||
obj set8700_point {
|
||||
set8700_x, set8700_y, set8700_z
|
||||
}
|
||||
|
||||
global mat set8700_c[] = { 1, 2+3i, -5+4i, 5i+6, -7i };
|
||||
|
||||
global mat set8700_e[] = { 0, 1, 0, 0, 2, -3/2, 2, -1/2,
|
||||
-3, 0.5, -1.0, 0.5, 1.0, 0.0, 0.0, 0.0 };
|
||||
|
@@ -17,8 +17,8 @@
|
||||
## received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
## 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
##
|
||||
## @(#) $Revision: 29.1 $
|
||||
## @(#) $Id: set8700.line,v 29.1 2006/05/20 19:35:33 chongo Exp $
|
||||
## @(#) $Revision: 29.4 $
|
||||
## @(#) $Id: set8700.line,v 29.4 2006/08/20 16:16:11 chongo Exp $
|
||||
## @(#) $Source: /usr/local/src/cmd/calc/cal/RCS/set8700.line,v $
|
||||
##
|
||||
## Under source code control: 2006/05/20 14:10:11
|
||||
@@ -143,7 +143,7 @@ a #= 4, a == 1
|
||||
|
||||
## Binary # operator not defined for strings
|
||||
|
||||
global set8700_A; protect(set8700_A) == 0
|
||||
protect(set8700_A) == 0
|
||||
## Testing with one lvalue
|
||||
isnull(protect(set8700_A,65))
|
||||
protect(set8700_A) == 65
|
||||
@@ -302,7 +302,7 @@ protect(set8700_B,0), set8700_B = set8700_getA1(), protect(set8700_B) == 1024
|
||||
protect(set8700_B,0), set8700_B = set8700_getA2(), protect(set8700_B) == 1024
|
||||
set8700_B = set8700_getvar(), protect(set8700_B) == 1024 + 256
|
||||
|
||||
global set8700_x, set8700_y; set8700_x = 7, protect(set8700_x) == 0
|
||||
set8700_x = 7, protect(set8700_x) == 0
|
||||
protect(7,2) == error(10234)
|
||||
protect(set8700_x,2.5) == error(10235)
|
||||
protect(set8700_x,"abc") == error(10235)
|
||||
@@ -322,7 +322,6 @@ set8700_x++ == error(10385)
|
||||
set8700_x == 7
|
||||
set8700_x-- == error(10388)
|
||||
|
||||
global set8700_A, set8700_B; 1
|
||||
protect(set8700_A,0), protect(set8700_A,16), 1
|
||||
set8700_A = "abcdef", protect(set8700_A) == 16 ## No copy to set8700_A
|
||||
protect(set8700_B,0), set8700_B = "xyz", protect(set8700_B) == 0
|
||||
@@ -403,3 +402,28 @@ set8700_P == (obj set8700_point = {1,2,3})
|
||||
set8700_L = list(mat[1] = {set8700_P}), protect(set8700_L[0][0]) == 16
|
||||
set8700_L = {{{4,5,6}}}, set8700_L[0][0] == set8700_P
|
||||
protect(set8700_L,0,2), set8700_L = {{{4,5,6}}}, set8700_L[0][0] == (obj set8700_point = {4,5,6})
|
||||
|
||||
## Testing quomod
|
||||
quomod(14,5,3,4) == error(10374)
|
||||
global set8700_a,set8700_b; quomod("abc", 4, set8700_a, set8700_b) == error(10375)
|
||||
quomod(14,5,set8700_a,set8700_b,0) == 1 && set8700_a == 2 && set8700_b == 4
|
||||
quomod(14,5,set8700_a,set8700_b,1) == 1 && set8700_a == 3 && set8700_b == -1
|
||||
quomod("abc",2,set8700_a,set8700_b) == error(10375)
|
||||
set8700_a = "abc"; quomod(14,5,set8700_a,set8700_b) == error(10375)
|
||||
set8700_a = null(); quomod(14,5,set8700_a,set8700_b,24) == 1; set8700_a == 3 && set8700_b == -1
|
||||
quomod(14,5,set8700_a,set8700_a) == error(10374)
|
||||
quomod(14,5,set8700_a,set8700_b,-1) == error(10375)
|
||||
protect(set8700_a,1); quomod(17,2,set8700_a,set8700_b) == error(10376)
|
||||
protect(set8700_a,0); quomod(17,2,set8700_a,set8700_b); set8700_a == 8 && set8700_b == 1
|
||||
set8700_p = &set8700_a, set8700_q = &set8700_b; quomod(14,5,*set8700_p,*set8700_q); *set8700_p == 2 && *set8700_q == 4
|
||||
|
||||
## Testing estr
|
||||
base(1/3) == 10
|
||||
strcmp(estr(null()), "\"\"") == 0
|
||||
strcmp(estr(bernoulli(48)), "-5609403368997817686249127547/46410") == 0
|
||||
strcmp(estr(sin(3i)), "1001787492740990189897i/100000000000000000000") == 0
|
||||
base(10) == 1/3
|
||||
strcmp(estr("fizzbin"), "\"fizzbin\"") == 0
|
||||
strcmp(estr(set8700_c), "mat[5]={1,2+3i,-5+4i,6+5i,-7i}") == 0
|
||||
strcmp(estr(set8700_e), "mat[16]={0,1,0,0,2,-3/2,2,-1/2,-3,1/2,-1,1/2,1,0,0,0}") == 0
|
||||
strcmp(estr(list(2,3,5)), "list(2,3,5)") == 0
|
||||
|
186
cal/sumtimes.cal
Normal file
186
cal/sumtimes.cal
Normal file
@@ -0,0 +1,186 @@
|
||||
/*
|
||||
* sumtimes - runtimes evaluating sums & squares of large lists and mats
|
||||
*
|
||||
* Copyright (C) 2006 Ernest Bowen
|
||||
*
|
||||
* Calc is open software; you can redistribute it and/or modify it under
|
||||
* the terms of the version 2.1 of the GNU Lesser General Public License
|
||||
* as published by the Free Software Foundation.
|
||||
*
|
||||
* Calc is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
||||
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General
|
||||
* Public License for more details.
|
||||
*
|
||||
* A copy of version 2.1 of the GNU Lesser General Public License is
|
||||
* distributed with calc under the filename COPYING-LGPL. You should have
|
||||
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
*
|
||||
* @(#) $Revision: 29.1 $
|
||||
* @(#) $Id: sumtimes.cal,v 29.1 2006/06/23 00:35:30 chongo Exp $
|
||||
* @(#) $Source: /usr/local/src/cmd/calc/cal/RCS/sumtimes.cal,v $
|
||||
*
|
||||
* Under source code control: 2006/06/22 17:29
|
||||
* File existed as early as: 2006
|
||||
*
|
||||
* Share and enjoy! :-) http://www.isthe.com/chongo/tech/comp/calc/
|
||||
*/
|
||||
|
||||
|
||||
global sumtimes_t0, sumtimes_t1, sumtimes_t2, sumtimes_t3;
|
||||
global sumtimes_A, sumtimes_B;
|
||||
config("tilde", 0),;
|
||||
|
||||
define timematsum(N) {
|
||||
local n, s, p, ptop;
|
||||
|
||||
sumtimes_A = mat[N];
|
||||
|
||||
for (n = 0; n < N; n++) sumtimes_A[n] = rand(N);
|
||||
|
||||
ptop = &sumtimes_A[n-1];
|
||||
sumtimes_t0 = runtime();
|
||||
for (s = n = 0; n < N; n++) s += sumtimes_A[n];
|
||||
sumtimes_t1 = runtime();
|
||||
for (s = 0, p = &sumtimes_A[0]; p <= ptop; p++) s += *p;
|
||||
sumtimes_t2 = runtime();
|
||||
s = matsum(sumtimes_A);
|
||||
sumtimes_t3 = runtime();
|
||||
|
||||
print "Matrix sum runtimes";
|
||||
printf('\tStandard "for" loop:\t\t%.4f\n', sumtimes_t1 - sumtimes_t0);
|
||||
printf('\t"For" loop using pointers:\t\t%.4f\n', sumtimes_t2 - sumtimes_t1);
|
||||
printf('\tUsing builtin "matsum":\t\t%.4f\n', sumtimes_t3 - sumtimes_t2);
|
||||
}
|
||||
|
||||
define timelistsum(N) {
|
||||
local n, s;
|
||||
|
||||
sumtimes_A = makelist(N);
|
||||
for (n = 0; n < N; n++) sumtimes_A[n] = rand(N);
|
||||
|
||||
sumtimes_t0 = runtime();
|
||||
for (s = n = 0; n < N; n++) s += sumtimes_A[n];
|
||||
sumtimes_t1 = runtime();
|
||||
s = sum(sumtimes_A);
|
||||
sumtimes_t2 = runtime();
|
||||
print "List sum runtimes";
|
||||
printf('\tStandard "for" loop:\t\t%.4f\n', sumtimes_t1 - sumtimes_t0);
|
||||
printf('\tUsing builtin "sum":\t\t%.4f\n', sumtimes_t2 - sumtimes_t1);
|
||||
}
|
||||
|
||||
|
||||
define timematsort(N) {
|
||||
local n;
|
||||
|
||||
sumtimes_A = mat[N];
|
||||
for (n = 0; n < N; n++) sumtimes_A[n] = rand(N);
|
||||
sumtimes_t0 = runtime();
|
||||
sort(sumtimes_A);
|
||||
sumtimes_t1 = runtime();
|
||||
printf('\tMatrix sort runtime:\t\t%.4f\n', sumtimes_t1 - sumtimes_t0);
|
||||
}
|
||||
|
||||
|
||||
define timelistsort(N) {
|
||||
local n;
|
||||
|
||||
sumtimes_A = makelist(N);
|
||||
for (n = 0; n < N; n++) sumtimes_A[n] = rand(N);
|
||||
sumtimes_t0 = runtime();
|
||||
sort(sumtimes_A);
|
||||
sumtimes_t1 = runtime();
|
||||
printf('\tList sort runtime:\t\t%.4f\n', sumtimes_t1 - sumtimes_t0);
|
||||
}
|
||||
|
||||
define timematreverse(N) {
|
||||
local n;
|
||||
|
||||
sumtimes_A = mat[N];
|
||||
for (n = 0; n < N; n++) sumtimes_A[n] = rand(N);
|
||||
sumtimes_t0 = runtime();
|
||||
reverse(sumtimes_A);
|
||||
sumtimes_t1 = runtime();
|
||||
printf('\tMatrix reverse runtime %.4f\n', sumtimes_t1 - sumtimes_t0);
|
||||
}
|
||||
|
||||
define timelistreverse(N) {
|
||||
local n;
|
||||
|
||||
sumtimes_A = makelist(N);
|
||||
for (n = 0; n < N; n++) sumtimes_A[n] = rand(N);
|
||||
sumtimes_t0 = runtime();
|
||||
reverse(sumtimes_A);
|
||||
sumtimes_t1 = runtime();
|
||||
printf('\tList reverse runtime:\t\t%.4f\n', sumtimes_t1 - sumtimes_t0);
|
||||
}
|
||||
|
||||
define timematssq(N) {
|
||||
local n, s, p, ptop;
|
||||
|
||||
sumtimes_A = mat[N];
|
||||
|
||||
for (n = 0; n < N; n++) sumtimes_A[n] = rand(N);
|
||||
|
||||
ptop = &sumtimes_A[n-1];
|
||||
sumtimes_t0 = runtime();
|
||||
for (s = n = 0; n < N; n++) s += sumtimes_A[n]^2;
|
||||
sumtimes_t1 = runtime();
|
||||
for (s = 0, p = &sumtimes_A[0]; p <= ptop; p++) s += (*p)^2;
|
||||
sumtimes_t2 = runtime();
|
||||
|
||||
print "Matrix sum of squares runtimes";
|
||||
printf('\tStandard "for" loop:\t\t%.4f\n', sumtimes_t1 - sumtimes_t0);
|
||||
printf('\t"For" loop using pointers:\t\t%.4f\n', sumtimes_t2 - sumtimes_t1);
|
||||
}
|
||||
|
||||
define timelistssq(N) {
|
||||
local n, s;
|
||||
|
||||
sumtimes_A = makelist(N);
|
||||
for (n = 0; n < N; n++) sumtimes_A[n] = rand(N);
|
||||
|
||||
sumtimes_t0 = runtime();
|
||||
for (s = n = 0; n < N; n++) s += sumtimes_A[n]^2;
|
||||
sumtimes_t1 = runtime();
|
||||
s = ssq(sumtimes_A);
|
||||
sumtimes_t2 = runtime();
|
||||
print "List sum of squares runtimes";
|
||||
printf('\tStandard "for" loop:\t\t%.4f\n', sumtimes_t1 - sumtimes_t0);
|
||||
printf('\tUsing builtin "ssq":\t\t%.4f\n', sumtimes_t2 - sumtimes_t1);
|
||||
}
|
||||
|
||||
define timehmean(N, M = 10) {
|
||||
local n, s, v1, v2;
|
||||
|
||||
sumtimes_A = makelist(N);
|
||||
for (n = 0; n < N; n++) sumtimes_A[n] = rand(1, M);
|
||||
|
||||
sumtimes_t0 = runtime();
|
||||
for (s = n = 0; n < N; n++) s += 1/sumtimes_A[n];
|
||||
v1 = N/s;
|
||||
sumtimes_t1 = runtime();
|
||||
v2 = hmean(sumtimes_A);
|
||||
sumtimes_t2 = runtime();
|
||||
print v1, v2;
|
||||
print "List harmonic meanruntimes";
|
||||
printf('\tStandard "for" loop:\t\t%.4f\n', sumtimes_t1 - sumtimes_t0);
|
||||
printf('\tUsing builtin "hmean":\t\t%.4f\n', sumtimes_t2 - sumtimes_t1);
|
||||
}
|
||||
|
||||
define doalltimes(N) {
|
||||
timematsum(N);
|
||||
print;
|
||||
timelistsum(N);
|
||||
print;
|
||||
timematssq(N);
|
||||
print;
|
||||
timelistssq(N);
|
||||
print;
|
||||
timematsort(N);
|
||||
timelistsort(N);
|
||||
timematreverse(N);
|
||||
timelistreverse(N);
|
||||
print;
|
||||
}
|
@@ -19,8 +19,8 @@
|
||||
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
*
|
||||
* @(#) $Revision: 29.2 $
|
||||
* @(#) $Id: test2700.cal,v 29.2 2000/06/07 14:02:25 chongo Exp $
|
||||
* @(#) $Revision: 29.4 $
|
||||
* @(#) $Id: test2700.cal,v 29.4 2006/06/25 22:06:23 chongo Exp $
|
||||
* @(#) $Source: /usr/local/src/cmd/calc/cal/RCS/test2700.cal,v $
|
||||
*
|
||||
* Under source code control: 1995/11/01 22:52:25
|
||||
@@ -41,8 +41,7 @@
|
||||
*/
|
||||
|
||||
|
||||
global defaultverbose = 1;
|
||||
global err;
|
||||
defaultverbose = 1;
|
||||
|
||||
define mknonnegreal() {
|
||||
switch(rand(8)) {
|
||||
@@ -89,11 +88,11 @@ define mkfrac() = rand(2) ? mkposfrac() : -mkposfrac();
|
||||
define mksquarereal() = mknonnegreal()^2;
|
||||
|
||||
/*
|
||||
* XXX - Should be able to do better than the following. For nonsquare
|
||||
* positive integer less than 1e6, could use
|
||||
* We might be able to do better than the following. For nonsquare
|
||||
* positive integer less than 1e6, could use:
|
||||
* x = rand(1, 1000);
|
||||
* return rand(x^2 + 1, (x + 1)^2);
|
||||
* Maybe could do
|
||||
* Maybe could do:
|
||||
* do
|
||||
* x = mkreal_2700();
|
||||
* while
|
||||
|
@@ -19,8 +19,8 @@
|
||||
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
*
|
||||
* @(#) $Revision: 29.2 $
|
||||
* @(#) $Id: test3300.cal,v 29.2 2000/06/07 14:02:25 chongo Exp $
|
||||
* @(#) $Revision: 29.3 $
|
||||
* @(#) $Id: test3300.cal,v 29.3 2006/06/20 09:29:16 chongo Exp $
|
||||
* @(#) $Source: /usr/local/src/cmd/calc/cal/RCS/test3300.cal,v $
|
||||
*
|
||||
* Under source code control: 1995/12/02 04:27:41
|
||||
@@ -30,8 +30,7 @@
|
||||
*/
|
||||
|
||||
|
||||
global defaultverbose = 1; /* default verbose value */
|
||||
global err;
|
||||
defaultverbose = 1; /* default verbose value */
|
||||
|
||||
define testi(str, n, N, verbose)
|
||||
{
|
||||
|
@@ -19,8 +19,8 @@
|
||||
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
*
|
||||
* @(#) $Revision: 29.2 $
|
||||
* @(#) $Id: test3400.cal,v 29.2 2000/06/07 14:02:25 chongo Exp $
|
||||
* @(#) $Revision: 29.3 $
|
||||
* @(#) $Id: test3400.cal,v 29.3 2006/06/20 09:29:16 chongo Exp $
|
||||
* @(#) $Source: /usr/local/src/cmd/calc/cal/RCS/test3400.cal,v $
|
||||
*
|
||||
* Under source code control: 1995/12/02 05:20:11
|
||||
@@ -54,8 +54,7 @@
|
||||
*/
|
||||
|
||||
|
||||
global defaultverbose = 1; /* default verbose value */
|
||||
global err;
|
||||
defaultverbose = 1; /* default verbose value */
|
||||
|
||||
global pi1k = pi(1e-1000);
|
||||
|
||||
|
@@ -19,8 +19,8 @@
|
||||
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
*
|
||||
* @(#) $Revision: 29.2 $
|
||||
* @(#) $Id: test3500.cal,v 29.2 2000/06/07 14:02:25 chongo Exp $
|
||||
* @(#) $Revision: 29.3 $
|
||||
* @(#) $Id: test3500.cal,v 29.3 2006/06/20 09:29:16 chongo Exp $
|
||||
* @(#) $Source: /usr/local/src/cmd/calc/cal/RCS/test3500.cal,v $
|
||||
*
|
||||
* Under source code control: 1995/12/18 22:50:46
|
||||
@@ -53,8 +53,7 @@
|
||||
*/
|
||||
|
||||
|
||||
global defaultverbose = 1; /* default verbose value */
|
||||
global err;
|
||||
defaultverbose = 1; /* default verbose value */
|
||||
|
||||
define testfrem(x,y,verbose)
|
||||
{
|
||||
|
@@ -19,8 +19,8 @@
|
||||
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
*
|
||||
* @(#) $Revision: 29.2 $
|
||||
* @(#) $Id: test4000.cal,v 29.2 2000/06/07 14:02:25 chongo Exp $
|
||||
* @(#) $Revision: 29.3 $
|
||||
* @(#) $Id: test4000.cal,v 29.3 2006/06/20 09:29:16 chongo Exp $
|
||||
* @(#) $Source: /usr/local/src/cmd/calc/cal/RCS/test4000.cal,v $
|
||||
*
|
||||
* Under source code control: 1996/03/13 02:38:45
|
||||
@@ -75,8 +75,7 @@
|
||||
*/
|
||||
|
||||
|
||||
global defaultverbose = 1; /* default verbose value */
|
||||
global err;
|
||||
defaultverbose = 1; /* default verbose value */
|
||||
|
||||
/*
|
||||
* test defaults
|
||||
|
@@ -19,8 +19,8 @@
|
||||
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
*
|
||||
* @(#) $Revision: 29.3 $
|
||||
* @(#) $Id: test4100.cal,v 29.3 2006/06/10 20:19:20 chongo Exp $
|
||||
* @(#) $Revision: 29.4 $
|
||||
* @(#) $Id: test4100.cal,v 29.4 2006/06/20 09:29:16 chongo Exp $
|
||||
* @(#) $Source: /usr/local/src/cmd/calc/cal/RCS/test4100.cal,v $
|
||||
*
|
||||
* Under source code control: 1996/03/13 03:53:22
|
||||
@@ -70,18 +70,16 @@
|
||||
*/
|
||||
|
||||
|
||||
global defaultverbose = 1; /* default verbose value */
|
||||
global err;
|
||||
defaultverbose = 1; /* default verbose value */
|
||||
|
||||
/*
|
||||
* test defaults
|
||||
*/
|
||||
global K1 = 2^17;
|
||||
global K2 = 2^12;
|
||||
global BASEB = 16;
|
||||
global BASE = 2^BASEB;
|
||||
global test4100_K1 = 2^17;
|
||||
global test4100_K2 = 2^12;
|
||||
global test4100_BASE = 2^config("baseb");
|
||||
|
||||
define rlen_4100(N) = rand(BASE^(N-1), BASE^N);
|
||||
define rlen_4100(N) = rand(test4100_BASE^(N-1), test4100_BASE^N);
|
||||
|
||||
define olen(N)
|
||||
{
|
||||
@@ -234,7 +232,7 @@ define times(str,N,n,verbose)
|
||||
m = olen(N);
|
||||
m2 = m^2;
|
||||
if (isnull(n)) {
|
||||
n = ceil(K1/power(N,1.585));
|
||||
n = ceil(test4100_K1/power(N,1.585));
|
||||
if (verbose > 1)
|
||||
printf("n = %d\n", n);
|
||||
}
|
||||
@@ -308,7 +306,7 @@ define powtimes(str, N1, N2, n, verbose)
|
||||
N2 = 1;
|
||||
|
||||
if (isnull(n)) {
|
||||
n = ceil(K2/power(N1, 1.585)/N2);
|
||||
n = ceil(test4100_K2/power(N1, 1.585)/N2);
|
||||
printf ("n = %d\n", n);
|
||||
}
|
||||
mat A[n];
|
||||
@@ -408,7 +406,7 @@ define inittimes(str,N,n,verbose)
|
||||
}
|
||||
m = 0;
|
||||
if (isnull(n)) {
|
||||
n = ceil(K1/N^2);
|
||||
n = ceil(test4100_K1/N^2);
|
||||
if (verbose > 1) {
|
||||
printf ("n = %d\n", n);
|
||||
}
|
||||
|
@@ -19,8 +19,8 @@
|
||||
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
*
|
||||
* @(#) $Revision: 29.4 $
|
||||
* @(#) $Id: test4600.cal,v 29.4 2001/04/10 22:09:02 chongo Exp $
|
||||
* @(#) $Revision: 29.5 $
|
||||
* @(#) $Id: test4600.cal,v 29.5 2006/06/20 09:29:16 chongo Exp $
|
||||
* @(#) $Source: /usr/local/src/cmd/calc/cal/RCS/test4600.cal,v $
|
||||
*
|
||||
* Under source code control: 1996/07/02 20:04:40
|
||||
@@ -30,8 +30,7 @@
|
||||
*/
|
||||
|
||||
|
||||
global defaultverbose = 1 /* default verbose value */
|
||||
global err;
|
||||
defaultverbose = 1; /* default verbose value */
|
||||
|
||||
/*
|
||||
* test globals
|
||||
|
@@ -19,8 +19,8 @@
|
||||
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
*
|
||||
* @(#) $Revision: 29.2 $
|
||||
* @(#) $Id: test5100.cal,v 29.2 2000/06/07 14:02:25 chongo Exp $
|
||||
* @(#) $Revision: 29.3 $
|
||||
* @(#) $Id: test5100.cal,v 29.3 2006/06/20 09:29:16 chongo Exp $
|
||||
* @(#) $Source: /usr/local/src/cmd/calc/cal/RCS/test5100.cal,v $
|
||||
*
|
||||
* Under source code control: 1996/12/02 23:57:10
|
||||
@@ -30,8 +30,7 @@
|
||||
*/
|
||||
|
||||
|
||||
global defaultverbose = 1; /* default verbose value */
|
||||
global err;
|
||||
defaultverbose = 1; /* default verbose value */
|
||||
|
||||
/*
|
||||
* We test the new code generator declaration scope and order.
|
||||
|
@@ -19,8 +19,8 @@
|
||||
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
*
|
||||
* @(#) $Revision: 29.2 $
|
||||
* @(#) $Id: test5200.cal,v 29.2 2000/06/07 14:02:25 chongo Exp $
|
||||
* @(#) $Revision: 29.3 $
|
||||
* @(#) $Id: test5200.cal,v 29.3 2006/06/20 09:29:16 chongo Exp $
|
||||
* @(#) $Source: /usr/local/src/cmd/calc/cal/RCS/test5200.cal,v $
|
||||
*
|
||||
* Under source code control: 1997/02/07 02:48:10
|
||||
@@ -30,8 +30,7 @@
|
||||
*/
|
||||
|
||||
|
||||
global defaultverbose = 1; /* default verbose value */
|
||||
global err;
|
||||
defaultverbose = 1; /* default verbose value */
|
||||
|
||||
/*
|
||||
* test the fix of a global/static bug
|
||||
|
8
calc.h
8
calc.h
@@ -17,8 +17,8 @@
|
||||
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
*
|
||||
* @(#) $Revision: 29.18 $
|
||||
* @(#) $Id: calc.h,v 29.18 2006/05/21 07:28:54 chongo Exp $
|
||||
* @(#) $Revision: 29.19 $
|
||||
* @(#) $Id: calc.h,v 29.19 2006/08/20 15:01:30 chongo Exp $
|
||||
* @(#) $Source: /usr/local/src/cmd/calc/RCS/calc.h,v $
|
||||
*
|
||||
* Under source code control: 1990/02/15 01:48:31
|
||||
@@ -113,10 +113,10 @@ extern DLL int closeid(FILEID id);
|
||||
extern DLL int getcharid(FILEID id);
|
||||
extern DLL int idprintf(FILEID id, char *fmt, int count, VALUE **vals);
|
||||
extern DLL int idfputc(FILEID id, int ch);
|
||||
extern DLL int idfputs(FILEID id, char *str);
|
||||
extern DLL int idfputs(FILEID id, STRING *str);
|
||||
extern DLL int printid(FILEID id, int flags);
|
||||
extern DLL int flushid(FILEID id);
|
||||
extern DLL int readid(FILEID id, int flags, char **retptr);
|
||||
extern DLL int readid(FILEID id, int flags, STRING **retptr);
|
||||
extern DLL int getloc(FILEID id, ZVALUE *loc);
|
||||
extern DLL int setloc(FILEID id, ZVALUE zpos);
|
||||
extern DLL int getsize(FILEID id, ZVALUE *size);
|
||||
|
@@ -18,8 +18,8 @@
|
||||
# received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
# 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
#
|
||||
# @(#) $Revision: 29.15 $
|
||||
# @(#) $Id: calc.spec.in,v 29.15 2006/05/21 06:26:00 chongo Exp $
|
||||
# @(#) $Revision: 29.16 $
|
||||
# @(#) $Id: calc.spec.in,v 29.16 2006/06/26 05:50:44 chongo Exp $
|
||||
# @(#) $Source: /usr/local/src/cmd/calc/RCS/calc.spec.in,v $
|
||||
#
|
||||
# Under source code control: 2003/02/16 20:21:39
|
||||
@@ -38,7 +38,7 @@ Summary: Arbitrary precision calculator.
|
||||
Name: calc
|
||||
Version: <<<PROJECT_VERSION>>>
|
||||
Release: 0
|
||||
Copyright: LGPL
|
||||
License: LGPL
|
||||
Group: Applications/Engineering
|
||||
Source: %{name}-%{version}.tar.gz
|
||||
URL: http://www.isthe.com/chongo/tech/comp/calc/index.html
|
||||
@@ -101,6 +101,8 @@ rm -rf %{buildroot}
|
||||
%attr(644, root, root) %{_libdir}/*.a
|
||||
|
||||
%changelog
|
||||
* Sun Jun 25 2006 Landon Curt Noll http://www.isthe.com/chongo
|
||||
- Changed Copyright to License as per new rpm v4.4 syntax
|
||||
* Sun May 20 2006 Landon Curt Noll http://www.isthe.com/chongo
|
||||
- Release of calc-2.12.0
|
||||
- Added *.line set files to the list of packaged files
|
||||
|
16
calcerr.tbl
16
calcerr.tbl
@@ -1,7 +1,7 @@
|
||||
#
|
||||
# calcerr - error codes and messages
|
||||
#
|
||||
# Copyright (C) 1999 Ernest Bowen
|
||||
# Copyright (C) 1999-2006 Ernest Bowen
|
||||
#
|
||||
# Calc is open software; you can redistribute it and/or modify it under
|
||||
# the terms of the version 2.1 of the GNU Lesser General Public License
|
||||
@@ -17,8 +17,8 @@
|
||||
# received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
# 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
#
|
||||
# @(#) $Revision: 29.8 $
|
||||
# @(#) $Id: calcerr.tbl,v 29.8 2006/05/19 15:12:57 chongo Exp $
|
||||
# @(#) $Revision: 29.10 $
|
||||
# @(#) $Id: calcerr.tbl,v 29.10 2006/08/20 15:01:30 chongo Exp $
|
||||
# @(#) $Source: /usr/local/src/cmd/calc/RCS/calcerr.tbl,v $
|
||||
#
|
||||
# Under source code control: 1996/05/23 17:38:44
|
||||
@@ -404,9 +404,9 @@ E_ASSIGN8 No-type-change destination for assign
|
||||
E_ASSIGN9 No-error-value destination for assign
|
||||
E_SWAP1 No-copy argument for octet swap
|
||||
E_SWAP2 No-assign-to-or-from argument for swap
|
||||
E_SWAP3 Non-variable argument for swap
|
||||
E_QUOMOD1 Non-variable argument 4 or 4 for quomod
|
||||
E_QUOMOD2 Non-real-number argument 1 or 2 for quomod
|
||||
E_SWAP3 Non-lvalue argument for swap
|
||||
E_QUOMOD1 Non-lvalue argument 3 or 4 for quomod
|
||||
E_QUOMOD2 Non-real-number arg 1 or 2 or bad arg 5 for quomod
|
||||
E_QUOMOD3 No-assign-to argument 3 or 4 for quomod
|
||||
E_PREINC1 No-copy-to or no-change argument for octet preinc
|
||||
E_PREINC2 Non-variable argument for preinc
|
||||
@@ -445,3 +445,7 @@ E_FPATHOPEN1 Non-string arguments for fpathopen
|
||||
E_FPATHOPEN2 Unrecognized mode for fpathopen
|
||||
E_LOG1 Bad epsilon argument for log
|
||||
E_LOG2 Non-numeric first argument for log
|
||||
E_FGETFILE1 Non-file argument for fgetfile
|
||||
E_FGETFILE2 File argument for fgetfile not open for reading
|
||||
E_FGETFILE3 Unable to set file position in fgetfile
|
||||
E_ESTR Non-representable type for estr
|
||||
|
@@ -18,8 +18,8 @@
|
||||
# received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
# 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
#
|
||||
# @(#) $Revision: 29.3 $
|
||||
# @(#) $Id: check.awk,v 29.3 2006/05/20 19:43:39 chongo Exp $
|
||||
# @(#) $Revision: 29.4 $
|
||||
# @(#) $Id: check.awk,v 29.4 2006/08/20 16:16:31 chongo Exp $
|
||||
# @(#) $Source: /usr/local/src/cmd/calc/RCS/check.awk,v $
|
||||
#
|
||||
# Under source code control: 1996/05/25 22:07:58
|
||||
@@ -64,7 +64,7 @@ NF == 0 {
|
||||
end_seen = 1;
|
||||
}
|
||||
|
||||
$1 ~ /^[0-9]+:/ || $1 ~ /^[0-9]+-[0-9]*:/ {
|
||||
$1 ~ /^[0-9]+:/ || $1 ~ /^[0-9]+-[0-9]*:/ || $1 ~ /^"))$/ {
|
||||
if (error > 0) {
|
||||
if (havebuf2) {
|
||||
print buf2;
|
||||
|
169
codegen.c
169
codegen.c
@@ -19,8 +19,8 @@
|
||||
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
*
|
||||
* @(#) $Revision: 29.20 $
|
||||
* @(#) $Id: codegen.c,v 29.20 2006/06/11 07:25:14 chongo Exp $
|
||||
* @(#) $Revision: 29.21 $
|
||||
* @(#) $Id: codegen.c,v 29.21 2006/06/20 10:28:06 chongo Exp $
|
||||
* @(#) $Source: /usr/local/src/cmd/calc/RCS/codegen.c,v $
|
||||
*
|
||||
* Under source code control: 1990/02/15 01:48:13
|
||||
@@ -136,10 +136,6 @@ getcommands(BOOL toplevel)
|
||||
getfunction();
|
||||
break;
|
||||
|
||||
case T_UNDEFINE:
|
||||
ungetfunction();
|
||||
break;
|
||||
|
||||
case T_EOF:
|
||||
if (!toplevel)
|
||||
exitfilescope();
|
||||
@@ -306,9 +302,8 @@ ungetfunction(void)
|
||||
name = tokensymbol();
|
||||
type = getbuiltinfunc(name);
|
||||
if (type >= 0) {
|
||||
errorcount--;
|
||||
scanerror(T_NULL,
|
||||
"Attempt to undefine the builtin function \"%s\"", name);
|
||||
warning(
|
||||
"Cannot undefine builtin function \"%s\"", name);
|
||||
continue;
|
||||
}
|
||||
rmuserfunc(name);
|
||||
@@ -316,6 +311,16 @@ ungetfunction(void)
|
||||
case T_MULT:
|
||||
rmalluserfunc();
|
||||
continue;
|
||||
case T_STATIC:
|
||||
if (gettoken() != T_SYMBOL) {
|
||||
scanerror(T_SEMICOLON,
|
||||
"Non-identifier following \"undefine static\"");
|
||||
return;
|
||||
}
|
||||
name = tokensymbol();
|
||||
endscope(name, FALSE);
|
||||
continue;
|
||||
|
||||
case T_NEWLINE:
|
||||
case T_SEMICOLON:
|
||||
case T_EOF:
|
||||
@@ -634,6 +639,10 @@ getstatement(LABEL *contlabel, LABEL *breaklabel, LABEL *nextcaselabel, LABEL *d
|
||||
(void) getdeclarations(SYM_LOCAL);
|
||||
break;
|
||||
|
||||
case T_UNDEFINE:
|
||||
ungetfunction();
|
||||
break;
|
||||
|
||||
case T_RIGHTBRACE:
|
||||
scanerror(T_NULL, "Extraneous right brace");
|
||||
return;
|
||||
@@ -799,10 +808,10 @@ getstatement(LABEL *contlabel, LABEL *breaklabel, LABEL *nextcaselabel, LABEL *d
|
||||
setlabel(&label3);
|
||||
if (contlabel == NULL_LABEL)
|
||||
contlabel = &label3;
|
||||
(void) tokenmode(oldmode);
|
||||
getstatement(contlabel, breaklabel, NULL_LABEL, NULL_LABEL);
|
||||
addoplabel(OP_JUMP, contlabel);
|
||||
setlabel(breaklabel);
|
||||
(void) tokenmode(oldmode);
|
||||
return;
|
||||
|
||||
case T_WHILE:
|
||||
@@ -811,6 +820,7 @@ getstatement(LABEL *contlabel, LABEL *breaklabel, LABEL *nextcaselabel, LABEL *d
|
||||
clearlabel(contlabel);
|
||||
setlabel(contlabel);
|
||||
getcondition();
|
||||
(void) tokenmode(oldmode);
|
||||
if (gettoken() != T_SEMICOLON) {
|
||||
breaklabel = &label2;
|
||||
clearlabel(breaklabel);
|
||||
@@ -823,7 +833,6 @@ getstatement(LABEL *contlabel, LABEL *breaklabel, LABEL *nextcaselabel, LABEL *d
|
||||
} else {
|
||||
addoplabel(OP_JUMPNZ, contlabel);
|
||||
}
|
||||
(void) tokenmode(oldmode);
|
||||
return;
|
||||
|
||||
case T_DO:
|
||||
@@ -2124,7 +2133,8 @@ getterm(void)
|
||||
|
||||
case T_GLOBAL:
|
||||
if (gettoken() != T_SYMBOL) {
|
||||
scanerror(T_NULL, "Global id expected");
|
||||
scanerror(T_NULL,
|
||||
"No identifier after global specifier");
|
||||
break;
|
||||
}
|
||||
rescantoken();
|
||||
@@ -2133,19 +2143,30 @@ getterm(void)
|
||||
|
||||
case T_LOCAL:
|
||||
if (gettoken() != T_SYMBOL) {
|
||||
scanerror(T_NULL, "Local id expected");
|
||||
scanerror(T_NULL,
|
||||
"No identifier after local specifier");
|
||||
break;
|
||||
}
|
||||
rescantoken();
|
||||
type = getidexpr(TRUE, T_LOCAL);
|
||||
break;
|
||||
|
||||
case T_STATIC:
|
||||
if (gettoken() != T_SYMBOL) {
|
||||
scanerror(T_NULL,
|
||||
"No identifier after static specifier");
|
||||
break;
|
||||
}
|
||||
rescantoken();
|
||||
type = getidexpr(TRUE, T_STATIC);
|
||||
break;
|
||||
|
||||
case T_LEFTBRACKET:
|
||||
scanerror(T_NULL, "Bad index usage");
|
||||
scanerror(T_NULL, "Left bracket with no preceding lvalue");
|
||||
break;
|
||||
|
||||
case T_PERIOD:
|
||||
scanerror(T_NULL, "Bad element reference");
|
||||
scanerror(T_NULL, "Period with no preceding lvalue");
|
||||
break;
|
||||
|
||||
default:
|
||||
@@ -2207,7 +2228,8 @@ getidexpr(BOOL okmat, int autodef)
|
||||
type = 0;
|
||||
break;
|
||||
case T_ASSIGN:
|
||||
if (autodef != T_GLOBAL && autodef != T_LOCAL)
|
||||
if (autodef != T_GLOBAL && autodef != T_LOCAL &&
|
||||
autodef != T_STATIC)
|
||||
autodef = 1;
|
||||
/* fall into default case */
|
||||
default:
|
||||
@@ -2408,22 +2430,11 @@ getshowstatement(void)
|
||||
"stri\000"
|
||||
"lite\000"
|
||||
"opco\000", name);
|
||||
if (arg == 19) {
|
||||
if (gettoken() != T_SYMBOL) {
|
||||
rescantoken();
|
||||
scanerror(T_SEMICOLON,
|
||||
"Function name expected");
|
||||
return;
|
||||
}
|
||||
index = adduserfunc(tokensymbol());
|
||||
addopone(OP_SHOW, index + 19);
|
||||
return;
|
||||
}
|
||||
if (arg > 0)
|
||||
addopone(OP_SHOW, arg);
|
||||
else
|
||||
printf("Unknown SHOW parameter ignored\n");
|
||||
return;
|
||||
break;
|
||||
case T_GLOBAL:
|
||||
arg = 13; break;
|
||||
case T_STATIC:
|
||||
arg = 14; break;
|
||||
default:
|
||||
printf("SHOW command to be followed by at least ");
|
||||
printf("four letters of one of:\n");
|
||||
@@ -2438,6 +2449,21 @@ getshowstatement(void)
|
||||
return;
|
||||
|
||||
}
|
||||
if (arg == 19) {
|
||||
if (gettoken() != T_SYMBOL) {
|
||||
rescantoken();
|
||||
scanerror(T_SEMICOLON,
|
||||
"Function name expected for show statement");
|
||||
return;
|
||||
}
|
||||
index = adduserfunc(tokensymbol());
|
||||
addopone(OP_SHOW, index + 19);
|
||||
return;
|
||||
}
|
||||
if (arg > 0)
|
||||
addopone(OP_SHOW, arg);
|
||||
else
|
||||
warning("Unknown parameter for show statement");
|
||||
}
|
||||
|
||||
|
||||
@@ -2556,8 +2582,9 @@ getid(char *buf)
|
||||
* Define a symbol name to be of the specified symbol type. The scope
|
||||
* of a static variable with the same name is terminated if symtype is
|
||||
* global or if symtype is static and the old variable is at the same
|
||||
* level. A scan error occurs if the name is already in use in an
|
||||
* incompatible manner.
|
||||
* level. Warnings are issued when a global or local variable is
|
||||
* redeclared and when in the same body the variable will be accessible only
|
||||
^ with the appropriate specfier.
|
||||
*/
|
||||
static void
|
||||
definesymbol(char *name, int symtype)
|
||||
@@ -2566,25 +2593,48 @@ definesymbol(char *name, int symtype)
|
||||
case SYM_STATIC:
|
||||
if (symtype == SYM_GLOBAL || symtype == SYM_STATIC)
|
||||
endscope(name, symtype == SYM_GLOBAL);
|
||||
/*FALLTHRU*/
|
||||
case SYM_UNDEFINED:
|
||||
break;
|
||||
case SYM_GLOBAL:
|
||||
if (symtype == SYM_LOCAL)
|
||||
(void) addlocal(name);
|
||||
else
|
||||
(void) addglobal(name, (symtype == SYM_STATIC));
|
||||
if (symtype == SYM_GLOBAL && conf->redecl_warn) {
|
||||
warning("redeclaraion of global \"%s\"",
|
||||
name);
|
||||
return;
|
||||
}
|
||||
break;
|
||||
|
||||
case SYM_LOCAL:
|
||||
if (symtype == SYM_LOCAL)
|
||||
if (symtype == SYM_LOCAL && conf->redecl_warn) {
|
||||
warning("redeclaraion of local \"%s\"",
|
||||
name);
|
||||
return;
|
||||
/*FALLTHRU*/
|
||||
}
|
||||
if (symtype == SYM_GLOBAL && conf->dupvar_warn) {
|
||||
warning("both local and global \"%s\" defined", name);
|
||||
break;
|
||||
}
|
||||
if (conf->dupvar_warn) {
|
||||
warning("both local and static \"%s\" defined", name);
|
||||
}
|
||||
break;
|
||||
case SYM_PARAM:
|
||||
scanerror(T_COMMA,
|
||||
"Variable \"%s\" is already defined", name);
|
||||
return;
|
||||
if (symtype == SYM_LOCAL && conf->dupvar_warn) {
|
||||
warning("both local and parameter \"%s\" defined",
|
||||
name);
|
||||
break;
|
||||
}
|
||||
if (symtype == SYM_GLOBAL && conf->dupvar_warn) {
|
||||
warning("both global and parameter \"%s\" defined",
|
||||
name);
|
||||
break;
|
||||
}
|
||||
if (conf->dupvar_warn) {
|
||||
warning("both static and parameter \"%s\" defined", name);
|
||||
}
|
||||
}
|
||||
|
||||
if (symtype == SYM_LOCAL)
|
||||
(void) addlocal(name);
|
||||
else
|
||||
(void) addglobal(name, (symtype == SYM_STATIC));
|
||||
}
|
||||
|
||||
|
||||
@@ -2602,21 +2652,28 @@ definesymbol(char *name, int symtype)
|
||||
static void
|
||||
usesymbol(char *name, int autodef)
|
||||
{
|
||||
int type;
|
||||
|
||||
type = symboltype(name);
|
||||
if (autodef == T_GLOBAL) {
|
||||
addopptr(OP_GLOBALADDR, (char *) addglobal(name, FALSE));
|
||||
return;
|
||||
if (type == SYM_GLOBAL) {
|
||||
warning("Unnecessary global specifier");
|
||||
}
|
||||
addopptr(OP_GLOBALADDR, (char *) addglobal(name, FALSE));
|
||||
return;
|
||||
}
|
||||
if (autodef == T_STATIC) {
|
||||
addopptr(OP_GLOBALADDR, (char *) addglobal(name, TRUE));
|
||||
return;
|
||||
}
|
||||
if (autodef == T_LOCAL) {
|
||||
if (symboltype(name) == SYM_PARAM) {
|
||||
scanerror(T_COMMA,
|
||||
"Variable \"%s\" is already defined", name);
|
||||
return;
|
||||
}
|
||||
addopone(OP_LOCALADDR, addlocal(name));
|
||||
return;
|
||||
if (type == SYM_LOCAL) {
|
||||
warning("Unnecessary local specifier");
|
||||
}
|
||||
addopone(OP_LOCALADDR, addlocal(name));
|
||||
return;
|
||||
}
|
||||
switch (symboltype(name)) {
|
||||
switch (type) {
|
||||
case SYM_LOCAL:
|
||||
addopone(OP_LOCALADDR, (long) findlocal(name));
|
||||
return;
|
||||
|
49
config.c
49
config.c
@@ -19,8 +19,8 @@
|
||||
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
*
|
||||
* @(#) $Revision: 29.20 $
|
||||
* @(#) $Id: config.c,v 29.20 2006/06/11 00:08:56 chongo Exp $
|
||||
* @(#) $Revision: 29.22 $
|
||||
* @(#) $Id: config.c,v 29.22 2006/06/25 22:05:38 chongo Exp $
|
||||
* @(#) $Source: /usr/local/src/cmd/calc/RCS/config.c,v $
|
||||
*
|
||||
* Under source code control: 1991/07/20 00:21:56
|
||||
@@ -98,6 +98,8 @@ NAMETYPE configs[] = {
|
||||
{"allow_custom", CONFIG_ALLOW_CUSTOM},
|
||||
{"version", CONFIG_VERSION},
|
||||
{"baseb", CONFIG_BASEB},
|
||||
{"redecl_warn", CONFIG_REDECL_WARN},
|
||||
{"dupvar_warn", CONFIG_DUPVAR_WARN},
|
||||
{NULL, 0}
|
||||
};
|
||||
|
||||
@@ -162,6 +164,8 @@ CONFIG oldstd = { /* backward compatible standard configuration */
|
||||
&allow_custom, /* *TRUE=> custom functions are enabled */
|
||||
NULL, /* version */
|
||||
BASEB, /* base for calculations */
|
||||
TRUE, /* warn when redeclaring */
|
||||
TRUE, /* warn when variable names collide */
|
||||
};
|
||||
CONFIG newstd = { /* new non-backward compatible configuration */
|
||||
MODE_INITIAL, /* current output mode */
|
||||
@@ -220,6 +224,8 @@ CONFIG newstd = { /* new non-backward compatible configuration */
|
||||
&allow_custom, /* *TRUE=> custom functions are enabled */
|
||||
NULL, /* version */
|
||||
BASEB, /* base for calculations */
|
||||
TRUE, /* warn when redeclaring */
|
||||
TRUE, /* warn when variable names collide */
|
||||
};
|
||||
CONFIG *conf = NULL; /* loaded in at startup - current configuration */
|
||||
|
||||
@@ -408,7 +414,8 @@ lookup_name(NAMETYPE *set, long val)
|
||||
/*
|
||||
* Check whether VALUE at vp is a LEN (32-bit signed integer) and if so,
|
||||
* copy that integer to lp.
|
||||
* Return: 1, 2, 0, or -1 XXX
|
||||
*
|
||||
* Return: 1 ==> not an integer, 2 ==> int > 2^31, 0 ==> OK, -1 ==> error
|
||||
*/
|
||||
|
||||
static int
|
||||
@@ -906,6 +913,34 @@ setconfig(int type, VALUE *vp)
|
||||
math_error("The baseb config parameter is read-only");
|
||||
/*NOTREACHED*/
|
||||
|
||||
case CONFIG_REDECL_WARN:
|
||||
if (vp->v_type == V_NUM) {
|
||||
q = vp->v_num;
|
||||
conf->redecl_warn = !qiszero(q);
|
||||
} else if (vp->v_type == V_STR) {
|
||||
temp = lookup_long(truth, vp->v_str->s_str);
|
||||
if (temp < 0) {
|
||||
math_error("Illegal truth value for redecl_warn");
|
||||
/*NOTREACHED*/
|
||||
}
|
||||
conf->redecl_warn = (int)temp;
|
||||
}
|
||||
break;
|
||||
|
||||
case CONFIG_DUPVAR_WARN:
|
||||
if (vp->v_type == V_NUM) {
|
||||
q = vp->v_num;
|
||||
conf->dupvar_warn = !qiszero(q);
|
||||
} else if (vp->v_type == V_STR) {
|
||||
temp = lookup_long(truth, vp->v_str->s_str);
|
||||
if (temp < 0) {
|
||||
math_error("Illegal truth value for dupvar_warn");
|
||||
/*NOTREACHED*/
|
||||
}
|
||||
conf->dupvar_warn = (int)temp;
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
math_error("Setting illegal config parameter");
|
||||
/*NOTREACHED*/
|
||||
@@ -1287,6 +1322,14 @@ config_value(CONFIG *cfg, int type, VALUE *vp)
|
||||
i = BASEB;
|
||||
break;
|
||||
|
||||
case CONFIG_REDECL_WARN:
|
||||
i = (cfg->redecl_warn ? 1 : 0);
|
||||
break;
|
||||
|
||||
case CONFIG_DUPVAR_WARN:
|
||||
i = (cfg->dupvar_warn ? 1 : 0);
|
||||
break;
|
||||
|
||||
default:
|
||||
math_error("Getting illegal CONFIG element");
|
||||
/*NOTREACHED*/
|
||||
|
12
config.h
12
config.h
@@ -19,8 +19,8 @@
|
||||
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
*
|
||||
* @(#) $Revision: 29.18 $
|
||||
* @(#) $Id: config.h,v 29.18 2006/06/06 07:17:02 chongo Exp $
|
||||
* @(#) $Revision: 29.20 $
|
||||
* @(#) $Id: config.h,v 29.20 2006/06/25 22:05:38 chongo Exp $
|
||||
* @(#) $Source: /usr/local/src/cmd/calc/RCS/config.h,v $
|
||||
*
|
||||
* Under source code control: 1995/11/01 22:20:17
|
||||
@@ -95,6 +95,8 @@
|
||||
#define CONFIG_COMPILE_CUSTOM 41
|
||||
#define CONFIG_ALLOW_CUSTOM 42
|
||||
#define CONFIG_BASEB 43
|
||||
#define CONFIG_REDECL_WARN 44
|
||||
#define CONFIG_DUPVAR_WARN 45
|
||||
|
||||
|
||||
/*
|
||||
@@ -151,8 +153,8 @@ struct config {
|
||||
BOOL blkverbose; /* TRUE => print all lines if a block */
|
||||
int blkbase; /* block output base */
|
||||
int blkfmt; /* block output style */
|
||||
long calc_debug; /* internal debug, see CALC_DEBUG_XXX below */
|
||||
long resource_debug; /* resource debug, see RSCDBG_XXX below */
|
||||
long calc_debug; /* internal debug, see CALC_DEBUG_XYZ below */
|
||||
long resource_debug; /* resource debug, see RSCDBG_XYZ below */
|
||||
long user_debug; /* user defined debug value: 0 default */
|
||||
BOOL verbose_quit; /* TRUE => print Quit or abort executed msg */
|
||||
int ctrl_d; /* see CTRL_D_xyz below */
|
||||
@@ -164,6 +166,8 @@ struct config {
|
||||
BOOL *allow_custom; /* ptr to if custom functions are allowed */
|
||||
char *version; /* calc version string */
|
||||
int baseb; /* base for calculations */
|
||||
BOOL redecl_warn; /* TRUE => warn of redeclating variables */
|
||||
BOOL dupvar_warn; /* TRUE => warn of var name collisions */
|
||||
};
|
||||
typedef struct config CONFIG;
|
||||
|
||||
|
@@ -17,8 +17,8 @@
|
||||
# received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
# 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
#
|
||||
# @(#) $Revision: 29.23 $
|
||||
# @(#) $Id: Makefile,v 29.23 2003/01/14 01:58:18 chongo Exp $
|
||||
# @(#) $Revision: 29.24 $
|
||||
# @(#) $Id: Makefile,v 29.24 2006/06/26 05:46:06 chongo Exp $
|
||||
# @(#) $Source: /usr/local/src/cmd/calc/cscript/RCS/Makefile,v $
|
||||
#
|
||||
# Under source code control: 1999/11/29 11:10:26
|
||||
@@ -349,6 +349,10 @@ clean:
|
||||
clobber:
|
||||
-rm -f ${TARGETS}
|
||||
|
||||
# install everything
|
||||
#
|
||||
# NOTE: Keep the uninstall rule in reverse order to the install rule
|
||||
#
|
||||
install: all
|
||||
-${Q}if [ ! -d $T${BINDIR} ]; then \
|
||||
echo mkdir $T${BINDIR}; \
|
||||
@@ -389,6 +393,31 @@ install: all
|
||||
fi; \
|
||||
done
|
||||
|
||||
# Try to remove everything that was installed
|
||||
#
|
||||
# NOTE: Keep the uninstall rule in reverse order to the install rule
|
||||
#
|
||||
uninstall:
|
||||
-${Q}for i in ${SCRIPT} /dev/null; do \
|
||||
if [ "$$i" = "/dev/null" ]; then \
|
||||
continue; \
|
||||
fi; \
|
||||
if [ -f "$T${SCRIPTDIR}/$$i" ]; then \
|
||||
rm -f "$T${SCRIPTDIR}/$$i"; \
|
||||
if [ -f "$T${SCRIPTDIR}/$$i" ]; then \
|
||||
echo "cannot uninstall $T${SCRIPTDIR}/$$i"; \
|
||||
else \
|
||||
echo "uninstalled $T${SCRIPTDIR}/$$i"; \
|
||||
fi; \
|
||||
fi; \
|
||||
done
|
||||
-${Q}for i in ${SCRIPTDIR} ${BINDIR}; do \
|
||||
if [ -d "$T$$i" ]; then \
|
||||
rmdir "$T$$i" 2>/dev/null; \
|
||||
echo "cleaned up $T$$i"; \
|
||||
fi; \
|
||||
done
|
||||
|
||||
# DO NOT DELETE THIS LINE -- make depend depends on it.
|
||||
|
||||
4dsphere: 4dsphere.calc
|
||||
|
@@ -18,8 +18,8 @@
|
||||
# received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
# 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
#
|
||||
# @(#) $Revision: 29.24 $
|
||||
# @(#) $Id: Makefile,v 29.24 2004/07/29 08:38:18 chongo Exp $
|
||||
# @(#) $Revision: 29.25 $
|
||||
# @(#) $Id: Makefile,v 29.25 2006/06/26 05:46:06 chongo Exp $
|
||||
# @(#) $Source: /usr/local/src/cmd/calc/custom/RCS/Makefile,v $
|
||||
#
|
||||
# Under source code control: 1997/03/09 02:28:54
|
||||
@@ -599,6 +599,10 @@ clobber:
|
||||
-rm -f ${TARGETS}
|
||||
rm -f .all Makefile.tmp Makefile.bak
|
||||
|
||||
# install everything
|
||||
#
|
||||
# NOTE: Keep the uninstall rule in reverse order to the install rule
|
||||
#
|
||||
install: all
|
||||
-${Q}if [ ! -d $T${INCDIR} ]; then \
|
||||
echo mkdir $T${INCDIR}; \
|
||||
@@ -688,7 +692,7 @@ install: all
|
||||
if [ "$$i" = "/dev/null" ]; then \
|
||||
continue; \
|
||||
fi; \
|
||||
if ${CMP} -s tmp $T${CUSTOMINCDIR}/$$i; then \
|
||||
if ${CMP} -s "$$i" $T${CUSTOMINCDIR}/$$i; then \
|
||||
true; \
|
||||
else \
|
||||
rm -f $T${CUSTOMINCDIR}/$$i.new; \
|
||||
@@ -698,7 +702,6 @@ install: all
|
||||
echo "installed $T${CUSTOMINCDIR}/$$i"; \
|
||||
fi; \
|
||||
done
|
||||
-${Q}rm -f tmp
|
||||
-${Q}for i in ${CUSTOM_CALC_FILES} /dev/null; do \
|
||||
if [ "$$i" = "/dev/null" ]; then \
|
||||
continue; \
|
||||
@@ -741,6 +744,66 @@ install: all
|
||||
fi; \
|
||||
fi
|
||||
|
||||
# Try to remove everything that was installed
|
||||
#
|
||||
# NOTE: Keep the uninstall rule in reverse order to the install rule
|
||||
#
|
||||
uninstall:
|
||||
-${Q}if [ -f "$T${CUSTOMCALDIR}/libcustcalc.a" ]; then \
|
||||
rm -f "$T${CUSTOMCALDIR}/libcustcalc.a"; \
|
||||
if [ -f "$T${CUSTOMCALDIR}/libcustcalc.a" ]; then \
|
||||
echo "cannot uninstall $T${CUSTOMCALDIR}/libcustcalc.a"; \
|
||||
else \
|
||||
echo "uninstalled $T${CUSTOMCALDIR}/libcustcalc.a"; \
|
||||
fi; \
|
||||
fi
|
||||
-${Q}for i in ${CUSTOM_HELP} /dev/null; do \
|
||||
if [ "$$i" = "/dev/null" ]; then \
|
||||
continue; \
|
||||
fi; \
|
||||
if [ -f "$T${CUSTOMHELPDIR}/$$i" ]; then \
|
||||
rm -f "$T${CUSTOMHELPDIR}/$$i"; \
|
||||
if [ -f "$T${CUSTOMHELPDIR}/$$i" ]; then \
|
||||
echo "cannot uninstall $T${CUSTOMHELPDIR}/$$i"; \
|
||||
else \
|
||||
echo "uninstalled $T${CUSTOMHELPDIR}/$$i"; \
|
||||
fi; \
|
||||
fi; \
|
||||
done
|
||||
-${Q}for i in ${CUSTOM_CALC_FILES} /dev/null; do \
|
||||
if [ "$$i" = "/dev/null" ]; then \
|
||||
continue; \
|
||||
fi; \
|
||||
if [ -f "$T${CUSTOMCALDIR}/$$i" ]; then \
|
||||
rm -f "$T${CUSTOMCALDIR}/$$i"; \
|
||||
if [ -f "$T${CUSTOMCALDIR}/$$i" ]; then \
|
||||
echo "cannot uninstall $T${CUSTOMCALDIR}/$$i"; \
|
||||
else \
|
||||
echo "uninstalled $T${CUSTOMCALDIR}/$$i"; \
|
||||
fi; \
|
||||
fi; \
|
||||
done
|
||||
-${Q}for i in ${INSTALL_H_SRC} /dev/null; do \
|
||||
if [ "$$i" = "/dev/null" ]; then \
|
||||
continue; \
|
||||
fi; \
|
||||
if [ -f "$T${CUSTOMINCDIR}/$$i" ]; then \
|
||||
rm -f "$T${CUSTOMINCDIR}/$$i"; \
|
||||
if [ -f "$T${CUSTOMINCDIR}/$$i" ]; then \
|
||||
echo "cannot uninstall $T${CUSTOMINCDIR}/$$i"; \
|
||||
else \
|
||||
echo "uninstalled $T${CUSTOMINCDIR}/$$i"; \
|
||||
fi; \
|
||||
fi; \
|
||||
done
|
||||
-${Q}for i in ${CUSTOMINCDIR} ${CUSTOMHELPDIR} ${CUSTOMCALDIR} \
|
||||
${HELPDIR} ${CALC_INCDIR} ${CALC_SHAREDIR} ${INCDIR}; do \
|
||||
if [ -d "$T$$i" ]; then \
|
||||
rmdir "$T$$i" 2>/dev/null; \
|
||||
echo "cleaned up $T$$i"; \
|
||||
fi; \
|
||||
done
|
||||
|
||||
##
|
||||
#
|
||||
# make depend stuff
|
||||
|
@@ -17,8 +17,8 @@
|
||||
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
*
|
||||
* @(#) $Revision: 29.7 $
|
||||
* @(#) $Id: c_argv.c,v 29.7 2006/05/22 19:04:45 chongo Exp $
|
||||
* @(#) $Revision: 29.8 $
|
||||
* @(#) $Id: c_argv.c,v 29.8 2006/06/25 22:06:23 chongo Exp $
|
||||
* @(#) $Source: /usr/local/src/cmd/calc/custom/RCS/c_argv.c,v $
|
||||
*
|
||||
* Under source code control: 1997/03/09 20:27:37
|
||||
@@ -123,12 +123,9 @@ c_argv(char UNUSED *name, int count, VALUE **vals)
|
||||
case V_BLOCK: /* memory block */
|
||||
type = "octet_block";
|
||||
break;
|
||||
#if 0
|
||||
/* XXX - V_OCTET is subject to change */
|
||||
case V_OCTET: /* octet (unsigned char) */
|
||||
type = "octet";
|
||||
break;
|
||||
#endif
|
||||
default:
|
||||
type = "unknown";
|
||||
break;
|
||||
|
@@ -17,8 +17,8 @@
|
||||
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
*
|
||||
* @(#) $Revision: 29.3 $
|
||||
* @(#) $Id: c_pmodm127.c,v 29.3 2004/07/29 09:48:31 chongo Exp $
|
||||
* @(#) $Revision: 29.5 $
|
||||
* @(#) $Id: c_pmodm127.c,v 29.5 2006/06/25 22:08:42 chongo Exp $
|
||||
* @(#) $Source: /usr/local/src/cmd/calc/custom/RCS/c_pmodm127.c,v $
|
||||
*
|
||||
* Under source code control: 2004/07/28 22:12:25
|
||||
@@ -156,7 +156,11 @@ c_pmodm127(char UNUSED *name, int UNUSED count, VALUE **vals)
|
||||
#else
|
||||
zsquare(result.v_num->num, &temp); /* square */
|
||||
#endif
|
||||
/* XXX - we could manually shift to speed up a tiny bit */
|
||||
/*
|
||||
* We could manually shift here, but this would o speed
|
||||
* up the operation only a very tiny bit at the expense
|
||||
* of a bunch of special code.
|
||||
*/
|
||||
zfree(result.v_num->num);
|
||||
zshift(temp, 1, &result.v_num->num); /* times 2 */
|
||||
zfree(temp);
|
||||
|
38
file.c
38
file.c
@@ -19,8 +19,8 @@
|
||||
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
*
|
||||
* @(#) $Revision: 29.15 $
|
||||
* @(#) $Id: file.c,v 29.15 2006/05/22 19:04:45 chongo Exp $
|
||||
* @(#) $Revision: 29.16 $
|
||||
* @(#) $Id: file.c,v 29.16 2006/08/20 15:01:30 chongo Exp $
|
||||
* @(#) $Source: /usr/local/src/cmd/calc/RCS/file.c,v $
|
||||
*
|
||||
* Under source code control: 1991/07/20 00:21:56
|
||||
@@ -746,10 +746,10 @@ flushall(void)
|
||||
* given:
|
||||
* id file to read from
|
||||
* flags read flags (see above)
|
||||
* retptr returned pointer to string
|
||||
* retstr returned pointer to string
|
||||
*/
|
||||
int
|
||||
readid(FILEID id, int flags, char **retptr)
|
||||
readid(FILEID id, int flags, STRING **retstr)
|
||||
{
|
||||
FILEIO *fiop; /* file structure */
|
||||
FILE *fp;
|
||||
@@ -761,6 +761,7 @@ readid(FILEID id, int flags, char **retptr)
|
||||
int c;
|
||||
BOOL nlstop, nullstop, wsstop, rmstop, done;
|
||||
FILEPOS fpos;
|
||||
STRING *newstr;
|
||||
|
||||
totlen = 0;
|
||||
str = NULL;
|
||||
@@ -831,7 +832,10 @@ readid(FILEID id, int flags, char **retptr)
|
||||
if ((nullstop && c == '\0') && !rmstop)
|
||||
str[totlen - 1] = '\0';
|
||||
str[totlen] = '\0';
|
||||
*retptr = str;
|
||||
newstr = stralloc();
|
||||
newstr->s_len = totlen;
|
||||
newstr->s_str = str;
|
||||
*retstr = newstr;
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -895,7 +899,7 @@ printid(FILEID id, int flags)
|
||||
math_chr('"');
|
||||
return 0;
|
||||
}
|
||||
math_fmt("FILE %d \"%s\" (%s, ", id, fiop->name, fiop->mode);
|
||||
math_fmt("FILE %d \"%s\" (%s", id, fiop->name, fiop->mode);
|
||||
|
||||
/*
|
||||
* print file position
|
||||
@@ -904,11 +908,13 @@ printid(FILEID id, int flags)
|
||||
fp = fiop->fp;
|
||||
|
||||
if (get_open_pos(fp, &pos) < 0) {
|
||||
math_str("Error while determining file position!)");
|
||||
if (fileno(fp) > 2)
|
||||
math_str("Error while determining file position!");
|
||||
math_chr(')');
|
||||
return 0;
|
||||
}
|
||||
|
||||
math_str("pos ");
|
||||
math_str(", pos ");
|
||||
zprintval(pos, 0, 0);
|
||||
zfree(pos);
|
||||
|
||||
@@ -1233,10 +1239,13 @@ idungetc(FILEID id, int ch)
|
||||
* str string to write
|
||||
*/
|
||||
int
|
||||
idfputs(FILEID id, char *str)
|
||||
idfputs(FILEID id, STRING *str)
|
||||
{
|
||||
FILEIO *fiop;
|
||||
FILEPOS fpos;
|
||||
FILE *fp;
|
||||
char *c;
|
||||
long len;
|
||||
|
||||
/* get the file info pointer */
|
||||
fiop = findid(id, TRUE);
|
||||
@@ -1251,14 +1260,13 @@ idfputs(FILEID id, char *str)
|
||||
|
||||
fiop->action = 'w';
|
||||
|
||||
/* set output to file */
|
||||
math_setfp(fiop->fp);
|
||||
fp = fiop->fp;
|
||||
len = str->s_len;
|
||||
c = str->s_str;
|
||||
|
||||
/* write the string */
|
||||
math_str(str);
|
||||
while (len-- > 0)
|
||||
fputc(*c++, fp);
|
||||
|
||||
/* restore output to stdout */
|
||||
math_setfp(stdout);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
239
func.c
239
func.c
@@ -19,8 +19,8 @@
|
||||
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
*
|
||||
* @(#) $Revision: 29.26 $
|
||||
* @(#) $Id: func.c,v 29.26 2006/06/11 00:08:56 chongo Exp $
|
||||
* @(#) $Revision: 29.30 $
|
||||
* @(#) $Id: func.c,v 29.30 2006/08/20 15:01:30 chongo Exp $
|
||||
* @(#) $Source: /usr/local/src/cmd/calc/RCS/func.c,v $
|
||||
*
|
||||
* Under source code control: 1990/02/15 01:48:15
|
||||
@@ -357,6 +357,24 @@ f_str(VALUE *vp)
|
||||
}
|
||||
|
||||
|
||||
static VALUE
|
||||
f_estr(VALUE *vp)
|
||||
{
|
||||
VALUE result;
|
||||
char *cp;
|
||||
|
||||
/* initialize result */
|
||||
result.v_type = V_STR;
|
||||
result.v_subtype = V_NOSUBTYPE;
|
||||
|
||||
math_divertio();
|
||||
printestr(vp);
|
||||
cp = math_getdivertedio();
|
||||
result.v_str = makestring(cp);
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
static VALUE
|
||||
f_name(VALUE *vp)
|
||||
{
|
||||
@@ -1694,14 +1712,13 @@ sumlistitems(LIST *lp)
|
||||
NULL_VALUE, NULL_VALUE);
|
||||
break;
|
||||
default:
|
||||
copyvalue(vp, &term);
|
||||
addvalue(&sum, vp, &tmp);
|
||||
freevalue(&sum);
|
||||
if (tmp.v_type < 0)
|
||||
return tmp;
|
||||
sum = tmp;
|
||||
continue;
|
||||
}
|
||||
if (sum.v_type == V_NULL) {
|
||||
sum = term;
|
||||
continue;
|
||||
}
|
||||
if (term.v_type == V_NULL)
|
||||
continue;
|
||||
addvalue(&sum, &term, &tmp);
|
||||
freevalue(&sum);
|
||||
freevalue(&term);
|
||||
@@ -1728,7 +1745,6 @@ f_sum(int count, VALUE **vals)
|
||||
sum.v_subtype = V_NOSUBTYPE;
|
||||
term.v_type = V_NULL;
|
||||
term.v_subtype = V_NOSUBTYPE;
|
||||
|
||||
while (count-- > 0) {
|
||||
vp = *vals++;
|
||||
switch(vp->v_type) {
|
||||
@@ -1740,24 +1756,19 @@ f_sum(int count, VALUE **vals)
|
||||
NULL_VALUE, NULL_VALUE);
|
||||
break;
|
||||
default:
|
||||
copyvalue(vp, &term);
|
||||
}
|
||||
if (sum.v_type == V_NULL) {
|
||||
sum = term;
|
||||
continue;
|
||||
}
|
||||
if (term.v_type == V_NULL)
|
||||
continue;
|
||||
if (term.v_type < 0) {
|
||||
freevalue(&sum);
|
||||
return term;
|
||||
addvalue(&sum, vp, &tmp);
|
||||
freevalue(&sum);
|
||||
if (tmp.v_type < 0)
|
||||
return tmp;
|
||||
sum = tmp;
|
||||
continue;
|
||||
}
|
||||
addvalue(&sum, &term, &tmp);
|
||||
freevalue(&term);
|
||||
freevalue(&sum);
|
||||
sum = tmp;
|
||||
if (sum.v_type < 0)
|
||||
return sum;
|
||||
break;
|
||||
}
|
||||
return sum;
|
||||
}
|
||||
@@ -1904,26 +1915,70 @@ f_hnrmod(NUMBER *val1, NUMBER *val2, NUMBER *val3, NUMBER *val4)
|
||||
return res;
|
||||
}
|
||||
|
||||
VALUE
|
||||
ssqlistitems(LIST *lp)
|
||||
{
|
||||
LISTELEM *ep;
|
||||
VALUE *vp;
|
||||
VALUE term;
|
||||
VALUE tmp;
|
||||
VALUE sum;
|
||||
|
||||
/* initialize VALUEs */
|
||||
term.v_type = V_NULL;
|
||||
term.v_subtype = V_NOSUBTYPE;
|
||||
tmp.v_type = V_NULL;
|
||||
tmp.v_subtype = V_NOSUBTYPE;
|
||||
sum.v_type = V_NULL;
|
||||
sum.v_subtype = V_NOSUBTYPE;
|
||||
|
||||
for (ep = lp->l_first; ep; ep = ep->e_next) {
|
||||
vp = &ep->e_value;
|
||||
if (vp->v_type == V_LIST) {
|
||||
term = ssqlistitems(vp->v_list);
|
||||
} else {
|
||||
squarevalue(vp, &term);
|
||||
}
|
||||
addvalue(&sum, &term, &tmp);
|
||||
freevalue(&sum);
|
||||
freevalue(&term);
|
||||
sum = tmp;
|
||||
if (sum.v_type < 0)
|
||||
break;
|
||||
}
|
||||
return sum;
|
||||
}
|
||||
|
||||
static VALUE
|
||||
f_ssq(int count, VALUE **vals)
|
||||
{
|
||||
VALUE result, tmp1, tmp2;
|
||||
VALUE tmp;
|
||||
VALUE sum;
|
||||
VALUE term;
|
||||
VALUE *vp;
|
||||
|
||||
/* initialize VALUEs */
|
||||
result.v_subtype = V_NOSUBTYPE;
|
||||
tmp1.v_subtype = V_NOSUBTYPE;
|
||||
tmp2.v_subtype = V_NOSUBTYPE;
|
||||
|
||||
squarevalue(*vals++, &result);
|
||||
while (--count > 0) {
|
||||
squarevalue(*vals++, &tmp1);
|
||||
addvalue(&tmp1, &result, &tmp2);
|
||||
freevalue(&tmp1);
|
||||
freevalue(&result);
|
||||
result = tmp2;
|
||||
tmp.v_type = V_NULL;
|
||||
tmp.v_subtype = V_NOSUBTYPE;
|
||||
sum.v_type = V_NULL;
|
||||
sum.v_subtype = V_NOSUBTYPE;
|
||||
term.v_type = V_NULL;
|
||||
term.v_subtype = V_NOSUBTYPE;
|
||||
while (count-- > 0) {
|
||||
vp = *vals++;
|
||||
if (vp->v_type == V_LIST) {
|
||||
term = ssqlistitems(vp->v_list);
|
||||
} else {
|
||||
squarevalue(vp, &term);
|
||||
}
|
||||
addvalue(&sum, &term, &tmp);
|
||||
freevalue(&term);
|
||||
freevalue(&sum);
|
||||
sum = tmp;
|
||||
if (sum.v_type < 0)
|
||||
break;
|
||||
}
|
||||
return result;
|
||||
return sum;
|
||||
}
|
||||
|
||||
|
||||
@@ -3521,6 +3576,67 @@ f_mod(int count, VALUE **vals)
|
||||
return res;
|
||||
}
|
||||
|
||||
static VALUE
|
||||
f_quomod(int count, VALUE **vals)
|
||||
{
|
||||
VALUE *v1, *v2, *v3, *v4, *v5;
|
||||
VALUE result;
|
||||
long rnd;
|
||||
BOOL res;
|
||||
short s3, s4; /* to preserve subtypes of v3, v4 */
|
||||
|
||||
v1 = vals[0];
|
||||
v2 = vals[1];
|
||||
v3 = vals[2];
|
||||
v4 = vals[3];
|
||||
|
||||
if (v3->v_type != V_ADDR || v4->v_type != V_ADDR ||
|
||||
v3->v_addr == v4->v_addr)
|
||||
return error_value(E_QUOMOD1);
|
||||
if (count == 5) {
|
||||
v5 = vals[4];
|
||||
if (v5->v_type == V_ADDR)
|
||||
v5 = v5->v_addr;
|
||||
if (v5->v_type != V_NUM || qisfrac(v5->v_num) ||
|
||||
qisneg(v5->v_num) || zge31b(v5->v_num->num))
|
||||
return error_value(E_QUOMOD2);
|
||||
rnd = qtoi(v5->v_num);
|
||||
} else
|
||||
rnd = conf->quomod;
|
||||
|
||||
if (v1->v_type == V_ADDR)
|
||||
v1 = v1->v_addr;
|
||||
if (v2->v_type == V_ADDR)
|
||||
v2 = v2->v_addr;
|
||||
v3 = v3->v_addr;
|
||||
v4 = v4->v_addr;
|
||||
|
||||
if (v1->v_type != V_NUM || v2->v_type != V_NUM ||
|
||||
(v3->v_type != V_NUM && v3->v_type != V_NULL) ||
|
||||
(v4->v_type != V_NUM && v4->v_type != V_NULL))
|
||||
return error_value(E_QUOMOD2);
|
||||
|
||||
s3 = v3->v_subtype;
|
||||
s4 = v4->v_subtype;
|
||||
|
||||
if ((s3 | s4) & V_NOASSIGNTO)
|
||||
return error_value(E_QUOMOD3);
|
||||
|
||||
freevalue(v3);
|
||||
freevalue(v4);
|
||||
|
||||
v3->v_type = V_NUM;
|
||||
v4->v_type = V_NUM;
|
||||
|
||||
v3->v_subtype = s3;
|
||||
v4->v_subtype = s4;
|
||||
|
||||
res = qquomod(v1->v_num, v2->v_num, &v3->v_num, &v4->v_num, rnd);
|
||||
result.v_type = V_NUM;
|
||||
result.v_subtype = V_NOSUBTYPE;
|
||||
result.v_num = res ? qlink(&_qone_) : qlink(&_qzero_);
|
||||
return result;
|
||||
}
|
||||
|
||||
static VALUE
|
||||
f_mmin(VALUE *v1, VALUE *v2)
|
||||
@@ -5738,7 +5854,7 @@ strscan(char *s, int count, VALUE **vals)
|
||||
static int
|
||||
filescan(FILEID id, int count, VALUE **vals)
|
||||
{
|
||||
char *str;
|
||||
STRING *str;
|
||||
int i;
|
||||
int n = 0;
|
||||
VALUE val;
|
||||
@@ -5759,7 +5875,7 @@ filescan(FILEID id, int count, VALUE **vals)
|
||||
if (i > 0)
|
||||
return EOF;
|
||||
n++;
|
||||
val.v_str = makenewstring(str);
|
||||
val.v_str = str;
|
||||
result = f_eval(&val);
|
||||
var = *vals++;
|
||||
if (var->v_type == V_ADDR) {
|
||||
@@ -6006,7 +6122,7 @@ f_fputs(int count, VALUE **vals)
|
||||
return error_value(E_FPUTS2);
|
||||
}
|
||||
for (i = 1; i < count; i++) {
|
||||
err = idfputs(vals[0]->v_file, vals[i]->v_str->s_str);
|
||||
err = idfputs(vals[0]->v_file, vals[i]->v_str);
|
||||
if (err > 0)
|
||||
return error_value(E_FPUTS3);
|
||||
}
|
||||
@@ -6153,7 +6269,7 @@ static VALUE
|
||||
f_fgetline(VALUE *vp)
|
||||
{
|
||||
VALUE result;
|
||||
char *str;
|
||||
STRING *str;
|
||||
int i;
|
||||
|
||||
/* initialize VALUE */
|
||||
@@ -6167,7 +6283,7 @@ f_fgetline(VALUE *vp)
|
||||
result.v_type = V_NULL;
|
||||
if (i == 0) {
|
||||
result.v_type = V_STR;
|
||||
result.v_str = makestring(str);
|
||||
result.v_str = str;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
@@ -6177,7 +6293,7 @@ static VALUE
|
||||
f_fgets(VALUE *vp)
|
||||
{
|
||||
VALUE result;
|
||||
char *str;
|
||||
STRING *str;
|
||||
int i;
|
||||
|
||||
/* initialize VALUE */
|
||||
@@ -6191,7 +6307,7 @@ f_fgets(VALUE *vp)
|
||||
result.v_type = V_NULL;
|
||||
if (i == 0) {
|
||||
result.v_type = V_STR;
|
||||
result.v_str = makestring(str);
|
||||
result.v_str = str;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
@@ -6201,7 +6317,7 @@ static VALUE
|
||||
f_fgetstr(VALUE *vp)
|
||||
{
|
||||
VALUE result;
|
||||
char *str;
|
||||
STRING *str;
|
||||
int i;
|
||||
|
||||
/* initialize VALUE */
|
||||
@@ -6215,7 +6331,7 @@ f_fgetstr(VALUE *vp)
|
||||
result.v_type = V_NULL;
|
||||
if (i == 0) {
|
||||
result.v_type = V_STR;
|
||||
result.v_str = makestring(str);
|
||||
result.v_str = str;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
@@ -6225,7 +6341,7 @@ static VALUE
|
||||
f_fgetfield(VALUE *vp)
|
||||
{
|
||||
VALUE result;
|
||||
char *str;
|
||||
STRING *str;
|
||||
int i;
|
||||
|
||||
/* initialize VALUE */
|
||||
@@ -6239,7 +6355,32 @@ f_fgetfield(VALUE *vp)
|
||||
result.v_type = V_NULL;
|
||||
if (i == 0) {
|
||||
result.v_type = V_STR;
|
||||
result.v_str = makestring(str);
|
||||
result.v_str = str;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
static VALUE
|
||||
f_fgetfile(VALUE *vp)
|
||||
{
|
||||
VALUE result;
|
||||
STRING *str;
|
||||
int i;
|
||||
|
||||
/* initialize VALUE */
|
||||
result.v_subtype = V_NOSUBTYPE;
|
||||
|
||||
if (vp->v_type != V_FILE)
|
||||
return error_value(E_FGETFILE1);
|
||||
i = readid(vp->v_file, 0, &str);
|
||||
if (i == 1)
|
||||
return error_value(E_FGETFILE2);
|
||||
if (i == 3)
|
||||
return error_value(E_FGETFILE3);
|
||||
result.v_type = V_NULL;
|
||||
if (i == 0) {
|
||||
result.v_type = V_STR;
|
||||
result.v_str = str;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
@@ -8076,6 +8217,8 @@ static CONST struct builtin builtins[] = {
|
||||
"set or read calc_errno"},
|
||||
{"error", 0, 1, 0, OP_NOP, 0, f_error,
|
||||
"generate error value"},
|
||||
{"estr", 1, 1, 0, OP_NOP, 0, f_estr,
|
||||
"exact text string representation of value"},
|
||||
{"euler", 1, 1, 0, OP_NOP, 0, f_euler,
|
||||
"Euler number"},
|
||||
{"eval", 1, 1, 0, OP_NOP, 0, f_eval,
|
||||
@@ -8106,6 +8249,8 @@ static CONST struct builtin builtins[] = {
|
||||
"read next char from file"},
|
||||
{"fgetfield", 1, 1, 0, OP_NOP, 0, f_fgetfield,
|
||||
"read next white-space delimited field from file"},
|
||||
{"fgetfile", 1, 1, 0, OP_NOP, 0, f_fgetfile,
|
||||
"read to end of file"},
|
||||
{"fgetline", 1, 1, 0, OP_NOP, 0, f_fgetline,
|
||||
"read next line from file, newline removed"},
|
||||
{"fgets", 1, 1, 0, OP_NOP, 0, f_fgets,
|
||||
@@ -8374,7 +8519,7 @@ static CONST struct builtin builtins[] = {
|
||||
"define an environment variable"},
|
||||
{"quo", 2, 3, 0, OP_NOP, 0, f_quo,
|
||||
"integer quotient of a by b, rounding type c"},
|
||||
{"quomod", 4, 4, 0, OP_QUOMOD, 0, 0,
|
||||
{"quomod", 4, 5, FA, OP_NOP, 0, f_quomod,
|
||||
"set c and d to quotient and remainder of a\n\t\t\tdivided by b"},
|
||||
{"rand", 0, 2, 0, OP_NOP, f_rand, 0,
|
||||
"additive 55 random number [0,2^64), [0,a), or [a,b)"},
|
||||
|
6
hash.c
6
hash.c
@@ -17,8 +17,8 @@
|
||||
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
*
|
||||
* @(#) $Revision: 29.9 $
|
||||
* @(#) $Id: hash.c,v 29.9 2006/06/06 07:17:02 chongo Exp $
|
||||
* @(#) $Revision: 29.10 $
|
||||
* @(#) $Id: hash.c,v 29.10 2006/06/20 10:25:45 chongo Exp $
|
||||
* @(#) $Source: /usr/local/src/cmd/calc/RCS/hash.c,v $
|
||||
*
|
||||
* Under source code control: 1995/11/23 05:13:11
|
||||
@@ -996,6 +996,8 @@ hash_value(int type, void *v, HASH *state)
|
||||
}
|
||||
state = hash_str(type, value->v_config->version, state);
|
||||
state = hash_int(type, value->v_config->baseb, state);
|
||||
state = hash_bool(type, value->v_config->redecl_warn, state);
|
||||
state = hash_bool(type, value->v_config->dupvar_warn, state);
|
||||
break;
|
||||
|
||||
case V_HASH:
|
||||
|
@@ -18,8 +18,8 @@
|
||||
# received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
# 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
#
|
||||
# @(#) $Revision: 29.28 $
|
||||
# @(#) $Id: Makefile,v 29.28 2006/05/07 12:59:51 chongo Exp $
|
||||
# @(#) $Revision: 29.30 $
|
||||
# @(#) $Id: Makefile,v 29.30 2006/08/20 15:01:57 chongo Exp $
|
||||
# @(#) $Source: /usr/local/src/cmd/calc/help/RCS/Makefile,v $
|
||||
#
|
||||
# Under source code control: 1991/07/23 06:47:57
|
||||
@@ -267,15 +267,15 @@ BLT_HELP_FILES= ${BLT_HELP_FILES_3} ${BLT_HELP_FILES_5} \
|
||||
#
|
||||
DETAIL_HELP= abs access acos acosh acot acoth acsc acsch address agd append \
|
||||
appr arg argv arrow asec asech asin asinh assign atan atan2 atanh \
|
||||
avg base base2 bernoulli bit blk blkcpy blkfree blocks bround btrunc \
|
||||
calc_tty calclevel catalan ceil cfappr cfsim char cmdbuf cmp comb \
|
||||
conj cos cosh cot coth count cp csc csch ctime delete den dereference \
|
||||
det digit digits display dp epsilon errcount errmax errno error \
|
||||
euler eval exp fact factor fclose fcnt feof ferror fflush fgetc \
|
||||
fgetfield fgetline fgets fgetstr fib files floor fopen forall \
|
||||
fpathopen fprintf fputc fputs fputstr frac free freebernoulli \
|
||||
freeeuler freeglobals freeredc freestatics frem freopen fscan \
|
||||
fscanf fseek fsize ftell gcd gcdrem gd getenv hash head highbit \
|
||||
avg base base2 bernoulli bit blk blkcpy blkfree blocks bround \
|
||||
btrunc calc_tty calclevel catalan ceil cfappr cfsim char cmdbuf \
|
||||
cmp comb conj cos cosh cot coth count cp csc csch ctime delete den \
|
||||
dereference det digit digits display dp epsilon errcount errmax \
|
||||
errno error estr euler eval exp fact factor fclose fcnt feof ferror \
|
||||
fflush fgetc fgetfield fgetfile fgetline fgets fgetstr fib files \
|
||||
floor fopen forall fpathopen fprintf fputc fputs fputstr frac free \
|
||||
freebernoulli freeeuler freeglobals freeredc freestatics frem freopen \
|
||||
fscan fscanf fseek fsize ftell gcd gcdrem gd getenv hash head highbit \
|
||||
hmean hnrmod hypot ilog ilog10 ilog2 im indices inputlevel insert \
|
||||
int inverse iroot isassoc isatty isblk isconfig isdefined iserror \
|
||||
iseven isfile ishash isident isint islist ismat ismult isnull isnum \
|
||||
@@ -656,6 +656,10 @@ clobber:
|
||||
rm -f COPYING COPYING-LGPL
|
||||
rm -f ${SINGULAR_FILES} ${DETAIL_CLONE}
|
||||
|
||||
# install everything
|
||||
#
|
||||
# NOTE: Keep the uninstall rule in reverse order to the install rule
|
||||
#
|
||||
install: all
|
||||
-${Q}if [ ! -d $T${CALC_SHAREDIR} ]; then \
|
||||
echo mkdir $T${CALC_SHAREDIR}; \
|
||||
@@ -705,3 +709,37 @@ install: all
|
||||
mv -f $T${HELPDIR}/obj.new $T${HELPDIR}/obj; \
|
||||
echo "installed $T${HELPDIR}/obj"; \
|
||||
fi
|
||||
|
||||
# Try to remove everything that was installed
|
||||
#
|
||||
# NOTE: Keep the uninstall rule in reverse order to the install rule
|
||||
#
|
||||
uninstall:
|
||||
-${Q}if [ -f "$T${HELPDIR}/obj" ]; then \
|
||||
rm -f "$T${HELPDIR}/obj"; \
|
||||
if [ -f "$T${HELPDIR}/obj" ]; then \
|
||||
echo "cannot uninstall $T${HELPDIR}/obj"; \
|
||||
else \
|
||||
echo "uninstalled $T${HELPDIR}/obj"; \
|
||||
fi; \
|
||||
fi
|
||||
-${Q}for i in ${SINGULAR_FILES} ${DETAIL_HELP} full builtin \
|
||||
${BLT_HELP_FILES} ${STD_HELP_FILES} /dev/null; do \
|
||||
if [ "$$i" = "/dev/null" ]; then \
|
||||
continue; \
|
||||
fi; \
|
||||
if [ -f "$T${HELPDIR}/$$i" ]; then \
|
||||
rm -f "$T${HELPDIR}/$$i"; \
|
||||
if [ -f "$T${HELPDIR}/$$i" ]; then \
|
||||
echo "cannot uninstall $T${HELPDIR}/$$i"; \
|
||||
else \
|
||||
echo "uninstalled $T${HELPDIR}/$$i"; \
|
||||
fi; \
|
||||
fi; \
|
||||
done
|
||||
-${Q}for i in ${HELPDIR} ${CALC_SHAREDIR}; do \
|
||||
if [ -d "$T$$i" ]; then \
|
||||
rmdir "$T$$i" 2>/dev/null; \
|
||||
echo "cleaned up $T$$i"; \
|
||||
fi; \
|
||||
done
|
||||
|
@@ -57,9 +57,10 @@ LINK LIBRARY
|
||||
none
|
||||
|
||||
SEE ALSO
|
||||
delete, insert, islist, list, pop, push, remove, rsearch, search, size
|
||||
delete, insert, islist, pop, push, remove, rsearch, search,
|
||||
select, size
|
||||
|
||||
## Copyright (C) 1999 Landon Curt Noll
|
||||
## Copyright (C) 1999-2006 Landon Curt Noll
|
||||
##
|
||||
## Calc is open software; you can redistribute it and/or modify it under
|
||||
## the terms of the version 2.1 of the GNU Lesser General Public License
|
||||
@@ -75,8 +76,8 @@ SEE ALSO
|
||||
## received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
## 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
##
|
||||
## @(#) $Revision: 29.3 $
|
||||
## @(#) $Id: append,v 29.3 2006/05/07 07:25:46 chongo Exp $
|
||||
## @(#) $Revision: 29.4 $
|
||||
## @(#) $Id: append,v 29.4 2006/06/25 22:16:55 chongo Exp $
|
||||
## @(#) $Source: /usr/local/src/cmd/calc/help/RCS/append,v $
|
||||
##
|
||||
## Under source code control: 1994/03/19 03:13:17
|
||||
|
@@ -51,9 +51,9 @@ LINK LIBRARY
|
||||
none
|
||||
|
||||
SEE ALSO
|
||||
param, usage
|
||||
param, system, usage
|
||||
|
||||
## Copyright (C) 1999 Landon Curt Noll
|
||||
## Copyright (C) 1999-2006 Landon Curt Noll
|
||||
##
|
||||
## Calc is open software; you can redistribute it and/or modify it under
|
||||
## the terms of the version 2.1 of the GNU Lesser General Public License
|
||||
@@ -69,8 +69,8 @@ SEE ALSO
|
||||
## received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
## 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
##
|
||||
## @(#) $Revision: 29.3 $
|
||||
## @(#) $Id: argv,v 29.3 2006/05/07 07:25:46 chongo Exp $
|
||||
## @(#) $Revision: 29.4 $
|
||||
## @(#) $Id: argv,v 29.4 2006/06/25 22:16:55 chongo Exp $
|
||||
## @(#) $Source: /usr/local/src/cmd/calc/help/RCS/argv,v $
|
||||
##
|
||||
## Under source code control: 1999/11/23 19:45:05
|
||||
|
8
help/avg
8
help/avg
@@ -41,7 +41,7 @@ EXAMPLE
|
||||
[1,1] = 6
|
||||
|
||||
LIMITS
|
||||
The number of arguments is not to exceed 100.
|
||||
The number of arguments is not to exceed 1024.
|
||||
|
||||
LINK LIBRARY
|
||||
none
|
||||
@@ -49,7 +49,7 @@ LINK LIBRARY
|
||||
SEE ALSO
|
||||
hmean
|
||||
|
||||
## Copyright (C) 1999 Landon Curt Noll
|
||||
## Copyright (C) 1999-2006 Landon Curt Noll
|
||||
##
|
||||
## Calc is open software; you can redistribute it and/or modify it under
|
||||
## the terms of the version 2.1 of the GNU Lesser General Public License
|
||||
@@ -65,8 +65,8 @@ SEE ALSO
|
||||
## received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
## 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
##
|
||||
## @(#) $Revision: 29.3 $
|
||||
## @(#) $Id: avg,v 29.3 2006/05/07 07:25:46 chongo Exp $
|
||||
## @(#) $Revision: 29.4 $
|
||||
## @(#) $Id: avg,v 29.4 2006/06/22 23:49:22 chongo Exp $
|
||||
## @(#) $Source: /usr/local/src/cmd/calc/help/RCS/avg,v $
|
||||
##
|
||||
## Under source code control: 1994/09/25 20:22:31
|
||||
|
23
help/blk
23
help/blk
@@ -213,12 +213,27 @@ LIMITS
|
||||
1 <= chunk < 2^31
|
||||
|
||||
LINK LIBRARY
|
||||
XXX
|
||||
BLOCK *blkalloc(int len, int chunk)
|
||||
void blk_free(BLOCK *blk)
|
||||
BLOCK *blkrealloc(BLOCK *blk, int newlen, int newchunk)
|
||||
void blktrunc(BLOCK *blk)
|
||||
BLOCK *blk_copy(BLOCK *blk)
|
||||
int blk_cmp(BLOCK *a, BLOCK *b)
|
||||
void blk_print(BLOCK *blk)
|
||||
void nblock_print(NBLOCK *nblk)
|
||||
NBLOCK *reallocnblock(int id, int len, int chunk)
|
||||
NBLOCK *createnblock(char *name, int len, int chunk)
|
||||
int findnblockid(char * name)
|
||||
int removenblock(int id)
|
||||
int countnblocks(void)
|
||||
void shownblocks(void)
|
||||
NBLOCK *findnblock(int id)
|
||||
BLOCK *copyrealloc(BLOCK *blk, int newlen, int newchunk)
|
||||
|
||||
SEE ALSO
|
||||
blocks, blkfree
|
||||
|
||||
## Copyright (C) 1999 Landon Curt Noll
|
||||
## Copyright (C) 1999-2006 Landon Curt Noll
|
||||
##
|
||||
## Calc is open software; you can redistribute it and/or modify it under
|
||||
## the terms of the version 2.1 of the GNU Lesser General Public License
|
||||
@@ -234,8 +249,8 @@ SEE ALSO
|
||||
## received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
## 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
##
|
||||
## @(#) $Revision: 29.4 $
|
||||
## @(#) $Id: blk,v 29.4 2006/05/07 07:16:42 chongo Exp $
|
||||
## @(#) $Revision: 29.5 $
|
||||
## @(#) $Id: blk,v 29.5 2006/06/25 22:16:55 chongo Exp $
|
||||
## @(#) $Source: /usr/local/src/cmd/calc/help/RCS/blk,v $
|
||||
##
|
||||
## Under source code control: 1997/04/05 13:07:13
|
||||
|
@@ -26,9 +26,9 @@ LINK LIBRARY
|
||||
none
|
||||
|
||||
SEE ALSO
|
||||
XXX - fill in
|
||||
argv, system
|
||||
|
||||
## Copyright (C) 1999 Landon Curt Noll
|
||||
## Copyright (C) 1999-2006 Landon Curt Noll
|
||||
##
|
||||
## Calc is open software; you can redistribute it and/or modify it under
|
||||
## the terms of the version 2.1 of the GNU Lesser General Public License
|
||||
@@ -44,8 +44,8 @@ SEE ALSO
|
||||
## received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
## 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
##
|
||||
## @(#) $Revision: 29.2 $
|
||||
## @(#) $Id: cmdbuf,v 29.2 2000/06/07 14:02:33 chongo Exp $
|
||||
## @(#) $Revision: 29.3 $
|
||||
## @(#) $Id: cmdbuf,v 29.3 2006/06/25 22:16:55 chongo Exp $
|
||||
## @(#) $Source: /usr/local/src/cmd/calc/help/RCS/cmdbuf,v $
|
||||
##
|
||||
## Under source code control: 1995/07/09 04:05:58
|
||||
|
@@ -36,9 +36,9 @@ LINK LIBRARY
|
||||
void zcomb(ZVALUE x, ZVALUE y, ZVALUE *res)
|
||||
|
||||
SEE ALSO
|
||||
fact, perm
|
||||
fact, perm, randperm
|
||||
|
||||
## Copyright (C) 1999 Landon Curt Noll
|
||||
## Copyright (C) 1999-2006 Landon Curt Noll
|
||||
##
|
||||
## Calc is open software; you can redistribute it and/or modify it under
|
||||
## the terms of the version 2.1 of the GNU Lesser General Public License
|
||||
@@ -54,8 +54,8 @@ SEE ALSO
|
||||
## received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
## 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
##
|
||||
## @(#) $Revision: 29.3 $
|
||||
## @(#) $Id: comb,v 29.3 2006/05/07 07:25:46 chongo Exp $
|
||||
## @(#) $Revision: 29.4 $
|
||||
## @(#) $Id: comb,v 29.4 2006/06/25 22:16:55 chongo Exp $
|
||||
## @(#) $Source: /usr/local/src/cmd/calc/help/RCS/comb,v $
|
||||
##
|
||||
## Under source code control: 1994/10/20 04:03:02
|
||||
|
59
help/config
59
help/config
@@ -50,13 +50,13 @@ DESCRIPTION
|
||||
"prompt" default interactive prompt
|
||||
"more" default interactive multi-line input prompt
|
||||
"blkmaxprint" number of block octets to print, 0 means all
|
||||
"blkverbose" TRUE=>print all lines, FALSE=>skip duplicates
|
||||
"blkverbose" TRUE => print all lines, FALSE=>skip duplicates
|
||||
"blkbase" block output base
|
||||
"blkfmt" block output format
|
||||
"calc_debug" controls internal calc debug information
|
||||
"resource_debug" controls resource file debug information
|
||||
"user_debug" for user defined debug information
|
||||
"verbose_quit" TRUE=>print message on empty quit or abort
|
||||
"verbose_quit" TRUE => print message on empty quit or abort
|
||||
"ctrl_d" The interactive meaning of ^D (Control D)
|
||||
"program" Read-only calc program or shell script path
|
||||
"basename" Read-only basename of the program value
|
||||
@@ -66,6 +66,8 @@ DESCRIPTION
|
||||
"allow_custom" TRUE=>custom functions are enabled
|
||||
"version" Read-only calc version
|
||||
"baseb" bits in calculation base, a read-only value
|
||||
"redecl_warn" TRUE => warn when redeclaring
|
||||
"dupvar_warn" TRUE => warn when variable names collide
|
||||
|
||||
The "all" config value allows one to save/restore the configuration
|
||||
set of values. The return of:
|
||||
@@ -279,14 +281,14 @@ DESCRIPTION
|
||||
established on a 1.8GHz AMD 32-bit CPU of ~3406 BogoMIPS when
|
||||
the two algorithms are about equal in speed. For that CPU test,
|
||||
config("baseb") was 32. This means that by default numbers up to
|
||||
(3388*32)+31 = 108447 bits in length (< 32645 decinal digits) use
|
||||
(3388*32)+31 = 108447 bits in length (< 32645 decimal digits) use
|
||||
the 1st algorithm, for squaring.
|
||||
|
||||
The default value for config("mul2") is 1780. This default was
|
||||
established on a 1.8GHz AMD 32-bit CPU of ~3406 BogoMIPS when
|
||||
the two algorithms are about equal in speed. For that CPU test,
|
||||
config("baseb") was 32. This means that by default numbers up to
|
||||
(1779*32)+31 = 56927 bits in length (< 17137 decinal digits) use
|
||||
(1779*32)+31 = 56927 bits in length (< 17137 decimal digits) use
|
||||
the 1st algorithm, for multiplication.
|
||||
|
||||
A value of zero resets the parameter back to their default values.
|
||||
@@ -315,7 +317,7 @@ DESCRIPTION
|
||||
established on a 1.8GHz AMD 32-bit CPU of ~3406 BogoMIPS when
|
||||
the two algorithms are about equal in speed. For that CPU test,
|
||||
config("baseb") was 32. This means that by default numbers up to
|
||||
(176*32)+31 = 5663 bits in length (< 1704 decinal digits) use the
|
||||
(176*32)+31 = 5663 bits in length (< 1704 decimal digits) use the
|
||||
1st algorithm, for calculating powers modulo another number.
|
||||
|
||||
A value of zero resets the parameter back to their default values.
|
||||
@@ -344,7 +346,7 @@ DESCRIPTION
|
||||
established as 5/4 (the historical ratio of config("pow2") to
|
||||
config("pow2")) of the config("pow2") value. This means that if
|
||||
config("baseb") is 32, then by default numbers up to (220*32)+31 =
|
||||
7071 bits in length (< 2128 decinal digits) use the REDC algorithm,
|
||||
7071 bits in length (< 2128 decimal digits) use the REDC algorithm,
|
||||
for calculating powers modulo another number.
|
||||
|
||||
A value of zero resets the parameter back to their default values.
|
||||
@@ -428,9 +430,15 @@ DESCRIPTION
|
||||
by the various kinds of printing to the output: bits 0, 1, 3 and 4
|
||||
are used in the same way as for the functions round and bround.
|
||||
|
||||
The C language method of modulus and integer division is:
|
||||
|
||||
config("quomod", 2)
|
||||
config("quo", 2)
|
||||
config("mod", 2)
|
||||
|
||||
=-=
|
||||
|
||||
config("leadzero", bool)
|
||||
config("leadzero", boolean)
|
||||
|
||||
The "leadzero" parameter controls whether or not a 0 is printed
|
||||
before the decimal point in non-zero fractions with absolute value
|
||||
@@ -439,7 +447,7 @@ DESCRIPTION
|
||||
|
||||
=-=
|
||||
|
||||
config("fullzero", bool)
|
||||
config("fullzero", boolean)
|
||||
|
||||
The "fullzero" parameter controls whether or not in decimal floating-
|
||||
point printing, the digits are padded with zeros to reach the
|
||||
@@ -490,7 +498,7 @@ DESCRIPTION
|
||||
|
||||
=-=
|
||||
|
||||
config("blkverbose", bool)
|
||||
config("blkverbose", boolean)
|
||||
|
||||
The "blkverbose" determines if all lines, including duplicates
|
||||
should be printed. If TRUE, then all lines are printed. If false,
|
||||
@@ -656,7 +664,7 @@ DESCRIPTION
|
||||
|
||||
=-=
|
||||
|
||||
config("verbose_quit", bool)
|
||||
config("verbose_quit", boolean)
|
||||
|
||||
The "verbose_quit" controls the print of the message:
|
||||
|
||||
@@ -835,6 +843,31 @@ DESCRIPTION
|
||||
|
||||
This config parameter is read-only and cannot be set.
|
||||
|
||||
=-=
|
||||
|
||||
config("redecl_warn", boolean)
|
||||
|
||||
Config("redecl_warn") controls whether or not a warning is issued
|
||||
when redeclaring variables.
|
||||
|
||||
The initial "redecl_warn" value is 1.
|
||||
|
||||
=-=
|
||||
|
||||
config("dupvar_warn", boolean)
|
||||
|
||||
Config("dupvar_warn") controls whether or not a warning is issued
|
||||
when a variable name collides with an exist name of a higher scope.
|
||||
Examples of collisions are when:
|
||||
|
||||
* both local and static variables have the same name
|
||||
* both local and global variables have the same name
|
||||
* both function parameter and local variables have the same name
|
||||
* both function parameter and global variables have the same name
|
||||
|
||||
The initial "redecl_warn" value is 1.
|
||||
|
||||
|
||||
EXAMPLE
|
||||
; current_cfg = config("all");
|
||||
; config("tilde", off),;
|
||||
@@ -893,6 +926,8 @@ EXAMPLE
|
||||
allow_custom 0
|
||||
version "2.12.0"
|
||||
baseb 32
|
||||
redecl_warn 1
|
||||
dupvar_warn 1
|
||||
|
||||
; display()
|
||||
20
|
||||
@@ -925,8 +960,8 @@ SEE ALSO
|
||||
## received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
## 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
##
|
||||
## @(#) $Revision: 29.15 $
|
||||
## @(#) $Id: config,v 29.15 2006/06/11 07:22:05 chongo Exp $
|
||||
## @(#) $Revision: 29.17 $
|
||||
## @(#) $Id: config,v 29.17 2006/06/24 19:06:58 chongo Exp $
|
||||
## @(#) $Source: /usr/local/src/cmd/calc/help/RCS/config,v $
|
||||
##
|
||||
## Under source code control: 1991/07/21 04:37:17
|
||||
|
@@ -183,7 +183,7 @@ EXAMPLE
|
||||
;; }
|
||||
|
||||
LIMITS
|
||||
The number of arguments in a function-call cannot exceed 100.
|
||||
The number of arguments in a function-call cannot exceed 1024.
|
||||
|
||||
LIBRARY
|
||||
none
|
||||
@@ -207,8 +207,8 @@ SEE ALSO
|
||||
## received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
## 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
##
|
||||
## @(#) $Revision: 29.5 $
|
||||
## @(#) $Id: define,v 29.5 2006/06/10 12:28:10 chongo Exp $
|
||||
## @(#) $Revision: 29.6 $
|
||||
## @(#) $Id: define,v 29.6 2006/06/22 23:49:22 chongo Exp $
|
||||
## @(#) $Source: /usr/local/src/cmd/calc/help/RCS/define,v $
|
||||
##
|
||||
##
|
||||
|
@@ -39,9 +39,10 @@ LINK LIBRARY
|
||||
none
|
||||
|
||||
SEE ALSO
|
||||
append, insert, pop, push, remove, size
|
||||
append, insert, islist, pop, push, remove, rsearch, search,
|
||||
select, size
|
||||
|
||||
## Copyright (C) 1999 Landon Curt Noll
|
||||
## Copyright (C) 1999-2006 Landon Curt Noll
|
||||
##
|
||||
## Calc is open software; you can redistribute it and/or modify it under
|
||||
## the terms of the version 2.1 of the GNU Lesser General Public License
|
||||
@@ -57,8 +58,8 @@ SEE ALSO
|
||||
## received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
## 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
##
|
||||
## @(#) $Revision: 29.3 $
|
||||
## @(#) $Id: delete,v 29.3 2006/05/07 07:25:46 chongo Exp $
|
||||
## @(#) $Revision: 29.4 $
|
||||
## @(#) $Id: delete,v 29.4 2006/06/25 22:16:55 chongo Exp $
|
||||
## @(#) $Source: /usr/local/src/cmd/calc/help/RCS/delete,v $
|
||||
##
|
||||
## Under source code control: 1994/03/19 03:13:18
|
||||
|
45
help/estr
Normal file
45
help/estr
Normal file
@@ -0,0 +1,45 @@
|
||||
NAME
|
||||
estr - represent some types of value by text strings
|
||||
|
||||
|
||||
SYNOPSIS
|
||||
estr(x)
|
||||
|
||||
TYPES
|
||||
x null, string, real or complex number, list, matrix,
|
||||
object. block, named block, error
|
||||
|
||||
return string
|
||||
|
||||
DESCRIPTION
|
||||
This function attempts to represent x exactly by a string s of
|
||||
ordinary text characters such that eval(s) == x.
|
||||
|
||||
If x is null, estr(x) returns the string "".
|
||||
|
||||
If x is a string, estr(x) returns the string in which occurrences of
|
||||
newline, tab, ", \, etc. have been converted to \n, \t, \",
|
||||
\\, etc., '\0' to \000 or \0 according as the next character is
|
||||
or is not an octal digit, and other non-text characters to their
|
||||
escaped hex representation, e.g. char(165) becomes \xa5.
|
||||
|
||||
For real x, estr(x) represebts x in fractional mode.
|
||||
|
||||
|
||||
EXAMPLE
|
||||
; estr("abc\0xyz\00023\n\xa5\r\n")
|
||||
""abc\0xyz\00023\n\xa5\r\n""
|
||||
; estr(1.67)
|
||||
"167/100"
|
||||
; estr(mat[3] = {2, list(3,5), "abc"})
|
||||
"mat[3]={2,list(3,5),"abc""
|
||||
|
||||
LIMITS
|
||||
none
|
||||
|
||||
LINK LIBRARY
|
||||
none
|
||||
|
||||
SEE ALSO
|
||||
str, strprintf
|
||||
|
@@ -30,9 +30,9 @@ LINK LIBRARY
|
||||
void zfact(NUMBER x, *ret)
|
||||
|
||||
SEE ALSO
|
||||
comb, perm
|
||||
comb, perm, randperm
|
||||
|
||||
## Copyright (C) 1999 Landon Curt Noll
|
||||
## Copyright (C) 1999-2006 Landon Curt Noll
|
||||
##
|
||||
## Calc is open software; you can redistribute it and/or modify it under
|
||||
## the terms of the version 2.1 of the GNU Lesser General Public License
|
||||
@@ -48,8 +48,8 @@ SEE ALSO
|
||||
## received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
## 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
##
|
||||
## @(#) $Revision: 29.3 $
|
||||
## @(#) $Id: fact,v 29.3 2006/05/07 07:25:46 chongo Exp $
|
||||
## @(#) $Revision: 29.4 $
|
||||
## @(#) $Id: fact,v 29.4 2006/06/25 22:16:55 chongo Exp $
|
||||
## @(#) $Source: /usr/local/src/cmd/calc/help/RCS/fact,v $
|
||||
##
|
||||
## Under source code control: 1994/10/20 04:03:02
|
||||
|
@@ -47,7 +47,8 @@ LINK LIBRARY
|
||||
FLAG zfactor(ZVALUE n, ZVALUE limit, ZVALUE *res)
|
||||
|
||||
SEE ALSO
|
||||
lfactor
|
||||
isprime, lfactor, nextcand, nextprime, prevcand, prevprime,
|
||||
pfact, pix, ptest
|
||||
|
||||
## Copyright (C) 1999-2006 Landon Curt Noll
|
||||
##
|
||||
@@ -65,8 +66,8 @@ SEE ALSO
|
||||
## received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
## 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
##
|
||||
## @(#) $Revision: 29.4 $
|
||||
## @(#) $Id: factor,v 29.4 2006/06/01 11:36:02 chongo Exp $
|
||||
## @(#) $Revision: 29.5 $
|
||||
## @(#) $Id: factor,v 29.5 2006/06/25 22:16:55 chongo Exp $
|
||||
## @(#) $Source: /usr/local/src/cmd/calc/help/RCS/factor,v $
|
||||
##
|
||||
## Under source code control: 1995/12/18 12:34:57
|
||||
|
@@ -7,19 +7,18 @@ SYNOPSIS
|
||||
TYPES
|
||||
fs file stream open for reading
|
||||
|
||||
return string, null or error value
|
||||
return string or null
|
||||
|
||||
DESCRIPTION
|
||||
If characters cannot be read from the file, an error value is returned.
|
||||
|
||||
Otherwise starting at the current file position, any whitespace
|
||||
Starting at the current file position, any whitespace
|
||||
characters are skipped. If the reading reaches end-of-file, the
|
||||
null value is returned. If non-whitespace is encountered, formation
|
||||
of a string begins, continuing until whitespace of '\0' or end-of-file
|
||||
is reached. The returned value is this string (terminated as usual
|
||||
by a null character). After the operation, the file position will
|
||||
be immediately after the first whitespace character of '\0' or at
|
||||
end-of-file.
|
||||
null value is returned. Otherwise the function returns the empty
|
||||
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
|
||||
a white-space character or te end of the file is reached. In the
|
||||
cases where the reading is stopped by '\0' or white-space character,
|
||||
the file position will be that immediately after that character.
|
||||
|
||||
EXAMPLE
|
||||
|
||||
@@ -43,10 +42,10 @@ EXAMPLE
|
||||
"Beta"
|
||||
|
||||
LIMITS
|
||||
none - XXX - is this correct?
|
||||
none
|
||||
|
||||
LINK LIBRARY
|
||||
none - XXX - is this correct?
|
||||
none
|
||||
|
||||
SEE ALSO
|
||||
fgetstr, fputstr, fgets, fputs, fopen, files, fprintf
|
||||
@@ -67,8 +66,8 @@ SEE ALSO
|
||||
## received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
## 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
##
|
||||
## @(#) $Revision: 29.4 $
|
||||
## @(#) $Id: fgetfield,v 29.4 2006/06/10 12:28:10 chongo Exp $
|
||||
## @(#) $Revision: 29.6 $
|
||||
## @(#) $Id: fgetfield,v 29.6 2006/08/20 15:01:57 chongo Exp $
|
||||
## @(#) $Source: /usr/local/src/cmd/calc/help/RCS/fgetfield,v $
|
||||
##
|
||||
## Under source code control: 1996/04/30 03:05:17
|
||||
|
72
help/fgetfile
Normal file
72
help/fgetfile
Normal file
@@ -0,0 +1,72 @@
|
||||
NAME
|
||||
fgetfile - read the rest of a file to form a string
|
||||
|
||||
SYNOPSIS
|
||||
fgetfile(fs)
|
||||
|
||||
TYPES
|
||||
fs file stream open for reading
|
||||
|
||||
return string or null value
|
||||
|
||||
DESCRIPTION
|
||||
|
||||
If the current file position for fs is the end of the file, the
|
||||
null value is returned.
|
||||
|
||||
Otherwise the function returns the string formed from reading all
|
||||
characters from the current file position to the end of the file.
|
||||
|
||||
If the content of the file "newfile" is a sequence of statements that
|
||||
could form the body of function definition, the statement sequence
|
||||
|
||||
fs = fopen("newfile", "r");
|
||||
eval(fgetfile(fs));
|
||||
|
||||
achieves the same as the command
|
||||
|
||||
read newfile;
|
||||
|
||||
|
||||
EXAMPLE
|
||||
|
||||
; f = fopen("/tmp/newfile", "w")
|
||||
; fputs(f, "abc\0xyz\n\t\xb0\0\r\v123"
|
||||
; freopen(f, "r")
|
||||
; estr(fgetfile(f))
|
||||
""abc\0xyz\n\t\xb0\0\r\v123""
|
||||
|
||||
LIMITS
|
||||
none
|
||||
|
||||
LINK LIBRARY
|
||||
none
|
||||
|
||||
SEE ALSO
|
||||
fgets, fgetstr, files, fopen, fprintf, fputs, fputstr
|
||||
|
||||
## Copyright (C) 1999-2006 Landon Curt Noll
|
||||
##
|
||||
## Calc is open software; you can redistribute it and/or modify it under
|
||||
## the terms of the version 2.1 of the GNU Lesser General Public License
|
||||
## as published by the Free Software Foundation.
|
||||
##
|
||||
## Calc is distributed in the hope that it will be useful, but WITHOUT
|
||||
## ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
||||
## or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General
|
||||
## Public License for more details.
|
||||
##
|
||||
## A copy of version 2.1 of the GNU Lesser General Public License is
|
||||
## distributed with calc under the filename COPYING-LGPL. You should have
|
||||
## received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
## 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
##
|
||||
## @(#) $Revision: 29.2 $
|
||||
## @(#) $Id: fgetfile,v 29.2 2006/08/20 15:01:57 chongo Exp $
|
||||
## @(#) $Source: /usr/local/src/cmd/calc/help/RCS/fgetfile,v $
|
||||
##
|
||||
## Under source code control: 1996/04/30 03:05:17
|
||||
## File existed as early as: 1996
|
||||
##
|
||||
## chongo <was here> /\oo/\ http://www.isthe.com/chongo/
|
||||
## Share and enjoy! :-) http://www.isthe.com/chongo/tech/comp/calc/
|
@@ -38,10 +38,10 @@ EXAMPLE
|
||||
; fgetstr(f)
|
||||
|
||||
LIMITS
|
||||
none - XXX - is this correct?
|
||||
none
|
||||
|
||||
LINK LIBRARY
|
||||
none - XXX - is this correct?
|
||||
none
|
||||
|
||||
SEE ALSO
|
||||
fputstr, fgetword, fgets, fputs, fopen, files, fprintf
|
||||
@@ -62,8 +62,8 @@ SEE ALSO
|
||||
## received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
## 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
##
|
||||
## @(#) $Revision: 29.4 $
|
||||
## @(#) $Id: fgetstr,v 29.4 2006/06/10 12:28:10 chongo Exp $
|
||||
## @(#) $Revision: 29.5 $
|
||||
## @(#) $Id: fgetstr,v 29.5 2006/06/25 22:16:55 chongo Exp $
|
||||
## @(#) $Source: /usr/local/src/cmd/calc/help/RCS/fgetstr,v $
|
||||
##
|
||||
## Under source code control: 1996/04/30 03:05:17
|
||||
|
8
help/fib
8
help/fib
@@ -25,9 +25,9 @@ LINK LIBRARY
|
||||
NUMBER *qfib(NUMBER *n)
|
||||
|
||||
SEE ALSO
|
||||
XXX - fill in
|
||||
fact
|
||||
|
||||
## Copyright (C) 1999 Landon Curt Noll
|
||||
## Copyright (C) 1999-2006 Landon Curt Noll
|
||||
##
|
||||
## Calc is open software; you can redistribute it and/or modify it under
|
||||
## the terms of the version 2.1 of the GNU Lesser General Public License
|
||||
@@ -43,8 +43,8 @@ SEE ALSO
|
||||
## received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
## 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
##
|
||||
## @(#) $Revision: 29.3 $
|
||||
## @(#) $Id: fib,v 29.3 2006/05/07 07:25:46 chongo Exp $
|
||||
## @(#) $Revision: 29.4 $
|
||||
## @(#) $Id: fib,v 29.4 2006/06/25 22:16:55 chongo Exp $
|
||||
## @(#) $Source: /usr/local/src/cmd/calc/help/RCS/fib,v $
|
||||
##
|
||||
## Under source code control: 1995/10/25 04:03:45
|
||||
|
@@ -46,7 +46,7 @@ EXAMPLE
|
||||
[3] = NULL
|
||||
|
||||
LIMITS
|
||||
The number of arguments of fprintf() is not to exceed 100.
|
||||
The number of arguments of fprintf() is not to exceed 1024.
|
||||
|
||||
LINK LIBRARY
|
||||
none
|
||||
@@ -54,7 +54,7 @@ LINK LIBRARY
|
||||
SEE ALSO
|
||||
printf, strprintf, print
|
||||
|
||||
## Copyright (C) 1999 Landon Curt Noll
|
||||
## Copyright (C) 1999-2006 Landon Curt Noll
|
||||
##
|
||||
## Calc is open software; you can redistribute it and/or modify it under
|
||||
## the terms of the version 2.1 of the GNU Lesser General Public License
|
||||
@@ -70,8 +70,8 @@ SEE ALSO
|
||||
## received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
## 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
##
|
||||
## @(#) $Revision: 29.3 $
|
||||
## @(#) $Id: fprintf,v 29.3 2006/05/07 07:25:46 chongo Exp $
|
||||
## @(#) $Revision: 29.4 $
|
||||
## @(#) $Id: fprintf,v 29.4 2006/06/22 23:49:22 chongo Exp $
|
||||
## @(#) $Source: /usr/local/src/cmd/calc/help/RCS/fprintf,v $
|
||||
##
|
||||
## Under source code control: 1996/03/12 22:50:41
|
||||
|
24
help/fputs
24
help/fputs
@@ -2,34 +2,34 @@ NAME
|
||||
fputs - write a string to a file
|
||||
|
||||
SYNOPSIS
|
||||
fputs(fd, data)
|
||||
fputs(fd, s1, s2, ...)
|
||||
|
||||
TYPES
|
||||
fd file
|
||||
data str
|
||||
fd file stream open for writing
|
||||
s1, s2, ... strings
|
||||
|
||||
return nil
|
||||
return null value
|
||||
|
||||
DESCRIPTION
|
||||
This function writes the string found in data to the file
|
||||
associated with fd.
|
||||
This function writes in succession the strings s1, s2, ..., to the
|
||||
file associated with fd.
|
||||
|
||||
EXAMPLE
|
||||
; fd = fopen("/tmp/newfile", "w")
|
||||
; fputs(fd, "chongo was here\n")
|
||||
; fputs(fd, "chongo was", " here\n")
|
||||
; fd2 = fopen("/tmp/newfile", "r")
|
||||
; fgetline(fd2)
|
||||
"chongo was here"
|
||||
|
||||
LIMITS
|
||||
fd must be associated with an open file
|
||||
The number of arguments is not to exceed 1024
|
||||
|
||||
LINK LIBRARY
|
||||
none
|
||||
|
||||
SEE ALSO
|
||||
errno, fclose, feof, ferror, fflush, fgetc, fgetline, fgets, files, fopen,
|
||||
fprintf, fputc, fputs, fseek, fsize, ftell, isfile, printf, prompt
|
||||
errno, fclose, feof, ferror, fflush, fgetc, fgetfile, fgetline, fgets,
|
||||
files, fopen, fprintf, fputc, fseek, fsize, ftell, isfile
|
||||
|
||||
## Copyright (C) 1999 Landon Curt Noll
|
||||
##
|
||||
@@ -47,8 +47,8 @@ SEE ALSO
|
||||
## received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
## 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
##
|
||||
## @(#) $Revision: 29.3 $
|
||||
## @(#) $Id: fputs,v 29.3 2006/05/07 07:25:46 chongo Exp $
|
||||
## @(#) $Revision: 29.4 $
|
||||
## @(#) $Id: fputs,v 29.4 2006/08/20 15:01:57 chongo Exp $
|
||||
## @(#) $Source: /usr/local/src/cmd/calc/help/RCS/fputs,v $
|
||||
##
|
||||
## Under source code control: 1995/03/04 11:33:20
|
||||
|
@@ -31,10 +31,10 @@ EXAMPLE
|
||||
Error 72
|
||||
|
||||
LIMITS
|
||||
none - XXX - is this correct?
|
||||
none
|
||||
|
||||
LINK LIBRARY
|
||||
none - XXX - is this correct?
|
||||
none
|
||||
|
||||
SEE ALSO
|
||||
fgetstr, fgetfield, fgets, fputs, fopen, files, fprintf
|
||||
@@ -55,8 +55,8 @@ SEE ALSO
|
||||
## received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
## 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
##
|
||||
## @(#) $Revision: 29.4 $
|
||||
## @(#) $Id: fputstr,v 29.4 2006/06/10 12:28:10 chongo Exp $
|
||||
## @(#) $Revision: 29.5 $
|
||||
## @(#) $Id: fputstr,v 29.5 2006/06/25 22:16:55 chongo Exp $
|
||||
## @(#) $Source: /usr/local/src/cmd/calc/help/RCS/fputstr,v $
|
||||
##
|
||||
## Under source code control: 1996/04/30 03:05:18
|
||||
|
10
help/freopen
10
help/freopen
@@ -32,16 +32,16 @@ EXAMPLE
|
||||
Error 10013
|
||||
|
||||
LIMITS
|
||||
none - XXX - is this correct?
|
||||
none
|
||||
|
||||
LINK LIBRARY
|
||||
none - XXX - is this correct?
|
||||
none
|
||||
|
||||
SEE ALSO
|
||||
errno, fclose, feof, ferror, fflush, fgetc, fgetline, fgets, files, fopen,
|
||||
fprintf, fputc, fputs, fseek, fsize, ftell, isfile, printf, prompt
|
||||
|
||||
## Copyright (C) 1999 Landon Curt Noll
|
||||
## Copyright (C) 1999-2006 Landon Curt Noll
|
||||
##
|
||||
## Calc is open software; you can redistribute it and/or modify it under
|
||||
## the terms of the version 2.1 of the GNU Lesser General Public License
|
||||
@@ -57,8 +57,8 @@ SEE ALSO
|
||||
## received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
## 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
##
|
||||
## @(#) $Revision: 29.3 $
|
||||
## @(#) $Id: freopen,v 29.3 2006/05/07 07:18:56 chongo Exp $
|
||||
## @(#) $Revision: 29.4 $
|
||||
## @(#) $Id: freopen,v 29.4 2006/06/25 22:16:55 chongo Exp $
|
||||
## @(#) $Source: /usr/local/src/cmd/calc/help/RCS/freopen,v $
|
||||
##
|
||||
## Under source code control: 1996/04/30 03:05:18
|
||||
|
10
help/fscan
10
help/fscan
@@ -30,15 +30,15 @@ EXAMPLE
|
||||
7 a-2i word 49
|
||||
|
||||
LIMITS
|
||||
none - XXX - is this correct?
|
||||
The number of arguments is not to exceed 1024.
|
||||
|
||||
LINK LIBRARY
|
||||
none - XXX - is this correct?
|
||||
none
|
||||
|
||||
SEE ALSO
|
||||
scan, strscan, fscanf, scanf, strscanf, printf, fprintf, strprintf
|
||||
|
||||
## Copyright (C) 1999 Landon Curt Noll
|
||||
## Copyright (C) 1999-2006 Landon Curt Noll
|
||||
##
|
||||
## Calc is open software; you can redistribute it and/or modify it under
|
||||
## the terms of the version 2.1 of the GNU Lesser General Public License
|
||||
@@ -54,8 +54,8 @@ SEE ALSO
|
||||
## received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
## 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
##
|
||||
## @(#) $Revision: 29.3 $
|
||||
## @(#) $Id: fscan,v 29.3 2006/05/07 07:25:46 chongo Exp $
|
||||
## @(#) $Revision: 29.4 $
|
||||
## @(#) $Id: fscan,v 29.4 2006/06/25 22:16:55 chongo Exp $
|
||||
## @(#) $Source: /usr/local/src/cmd/calc/help/RCS/fscan,v $
|
||||
##
|
||||
## Under source code control: 1996/04/30 03:05:18
|
||||
|
10
help/fscanf
10
help/fscanf
@@ -121,15 +121,15 @@ EXAMPLE
|
||||
"mma"
|
||||
|
||||
LIMITS
|
||||
none - XXX - is this correct?
|
||||
The number of arguments is not to exceed 1024.
|
||||
|
||||
LINK LIBRARY
|
||||
none - XXX - is this correct?
|
||||
extern int fscanfid(FILEID id, char *fmt, int count, VALUE **vals);
|
||||
|
||||
SEE ALSO
|
||||
scanf, strscanf, printf, fprintf, strprintf, fscan, scan, strscan
|
||||
|
||||
## Copyright (C) 1999 Landon Curt Noll
|
||||
## Copyright (C) 1999-2006 Landon Curt Noll
|
||||
##
|
||||
## Calc is open software; you can redistribute it and/or modify it under
|
||||
## the terms of the version 2.1 of the GNU Lesser General Public License
|
||||
@@ -145,8 +145,8 @@ SEE ALSO
|
||||
## received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
## 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
##
|
||||
## @(#) $Revision: 29.3 $
|
||||
## @(#) $Id: fscanf,v 29.3 2006/05/07 07:25:46 chongo Exp $
|
||||
## @(#) $Revision: 29.4 $
|
||||
## @(#) $Id: fscanf,v 29.4 2006/06/25 22:16:55 chongo Exp $
|
||||
## @(#) $Source: /usr/local/src/cmd/calc/help/RCS/fscanf,v $
|
||||
##
|
||||
## Under source code control: 1996/04/30 03:05:18
|
||||
|
8
help/gcd
8
help/gcd
@@ -19,7 +19,7 @@ EXAMPLE
|
||||
6 .02 0
|
||||
|
||||
LIMITS
|
||||
The number of arguments may not to exceed 100.
|
||||
The number of arguments may not to exceed 1024.
|
||||
|
||||
LINK LIBRARY
|
||||
NUMBER *qgcd(NUMBER *x1, NUMBER *x2)
|
||||
@@ -27,7 +27,7 @@ LINK LIBRARY
|
||||
SEE ALSO
|
||||
lcm
|
||||
|
||||
## Copyright (C) 1999 Landon Curt Noll
|
||||
## Copyright (C) 1999-2006 Landon Curt Noll
|
||||
##
|
||||
## Calc is open software; you can redistribute it and/or modify it under
|
||||
## the terms of the version 2.1 of the GNU Lesser General Public License
|
||||
@@ -43,8 +43,8 @@ SEE ALSO
|
||||
## received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
## 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
##
|
||||
## @(#) $Revision: 29.3 $
|
||||
## @(#) $Id: gcd,v 29.3 2006/05/07 07:25:46 chongo Exp $
|
||||
## @(#) $Revision: 29.4 $
|
||||
## @(#) $Id: gcd,v 29.4 2006/06/22 23:49:22 chongo Exp $
|
||||
## @(#) $Source: /usr/local/src/cmd/calc/help/RCS/gcd,v $
|
||||
##
|
||||
## Under source code control: 1995/10/05 04:52:26
|
||||
|
@@ -29,7 +29,7 @@ EXAMPLE
|
||||
2378490456
|
||||
|
||||
LIMITS
|
||||
The number of arguments is not to exceed 100.
|
||||
The number of arguments is not to exceed 1024.
|
||||
|
||||
LINK LIBRARY
|
||||
none
|
||||
@@ -37,7 +37,7 @@ LINK LIBRARY
|
||||
SEE ALSO
|
||||
sha, sha1, md5
|
||||
|
||||
## Copyright (C) 1999-2003 Landon Curt Noll
|
||||
## Copyright (C) 1999-2006 Landon Curt Noll
|
||||
##
|
||||
## Calc is open software; you can redistribute it and/or modify it under
|
||||
## the terms of the version 2.1 of the GNU Lesser General Public License
|
||||
@@ -53,8 +53,8 @@ SEE ALSO
|
||||
## received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
## 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
##
|
||||
## @(#) $Revision: 29.4 $
|
||||
## @(#) $Id: hash,v 29.4 2006/05/07 07:25:46 chongo Exp $
|
||||
## @(#) $Revision: 29.5 $
|
||||
## @(#) $Id: hash,v 29.5 2006/06/22 23:49:22 chongo Exp $
|
||||
## @(#) $Source: /usr/local/src/cmd/calc/help/RCS/hash,v $
|
||||
##
|
||||
## Under source code control: 1996/03/12 23:10:01
|
||||
|
@@ -29,7 +29,7 @@ EXAMPLE
|
||||
1 4/3 18/11 48/25 0
|
||||
|
||||
LIMITS
|
||||
The number of arguments is not to exceed 100.
|
||||
The number of arguments is not to exceed 1024.
|
||||
|
||||
LINK LIBRARY
|
||||
none
|
||||
@@ -37,7 +37,7 @@ LINK LIBRARY
|
||||
SEE ALSO
|
||||
avg
|
||||
|
||||
## Copyright (C) 1999 Landon Curt Noll
|
||||
## Copyright (C) 1999-2006 Landon Curt Noll
|
||||
##
|
||||
## Calc is open software; you can redistribute it and/or modify it under
|
||||
## the terms of the version 2.1 of the GNU Lesser General Public License
|
||||
@@ -53,8 +53,8 @@ SEE ALSO
|
||||
## received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
## 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
##
|
||||
## @(#) $Revision: 29.3 $
|
||||
## @(#) $Id: hmean,v 29.3 2006/05/07 07:25:46 chongo Exp $
|
||||
## @(#) $Revision: 29.4 $
|
||||
## @(#) $Id: hmean,v 29.4 2006/06/22 23:49:22 chongo Exp $
|
||||
## @(#) $Source: /usr/local/src/cmd/calc/help/RCS/hmean,v $
|
||||
##
|
||||
## Under source code control: 1995/12/18 03:30:59
|
||||
|
@@ -56,9 +56,10 @@ LINK LIBRARY
|
||||
none
|
||||
|
||||
SEE ALSO
|
||||
append, delete, islist, list, pop, push, remove, rsearch, search, size
|
||||
append, delete, islist, pop, push, remove, rsearch, search,
|
||||
select, size
|
||||
|
||||
## Copyright (C) 1999 Landon Curt Noll
|
||||
## Copyright (C) 1999-2006 Landon Curt Noll
|
||||
##
|
||||
## Calc is open software; you can redistribute it and/or modify it under
|
||||
## the terms of the version 2.1 of the GNU Lesser General Public License
|
||||
@@ -74,8 +75,8 @@ SEE ALSO
|
||||
## received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
## 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
##
|
||||
## @(#) $Revision: 29.3 $
|
||||
## @(#) $Id: insert,v 29.3 2006/05/07 07:25:46 chongo Exp $
|
||||
## @(#) $Revision: 29.4 $
|
||||
## @(#) $Id: insert,v 29.4 2006/06/25 22:16:55 chongo Exp $
|
||||
## @(#) $Source: /usr/local/src/cmd/calc/help/RCS/insert,v $
|
||||
##
|
||||
## Under source code control: 1994/03/19 03:13:18
|
||||
|
@@ -34,7 +34,7 @@ LIMITS
|
||||
none
|
||||
|
||||
LINK LIBRARY
|
||||
none - XXX ???
|
||||
none
|
||||
|
||||
SEE ALSO
|
||||
blk, blocks, blkfree,
|
||||
@@ -43,7 +43,7 @@ SEE ALSO
|
||||
isobjtype, isodd, isprime, isrand, israndom, isreal, isrel,
|
||||
issimple, issq, isstr, istype
|
||||
|
||||
## Copyright (C) 1999 Landon Curt Noll
|
||||
## Copyright (C) 1999-2006 Landon Curt Noll
|
||||
##
|
||||
## Calc is open software; you can redistribute it and/or modify it under
|
||||
## the terms of the version 2.1 of the GNU Lesser General Public License
|
||||
@@ -59,8 +59,8 @@ SEE ALSO
|
||||
## received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
## 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
##
|
||||
## @(#) $Revision: 29.3 $
|
||||
## @(#) $Id: isblk,v 29.3 2006/05/07 07:25:46 chongo Exp $
|
||||
## @(#) $Revision: 29.4 $
|
||||
## @(#) $Id: isblk,v 29.4 2006/06/25 22:16:55 chongo Exp $
|
||||
## @(#) $Source: /usr/local/src/cmd/calc/help/RCS/isblk,v $
|
||||
##
|
||||
## Under source code control: 1997/04/06 03:03:23
|
||||
|
@@ -34,7 +34,7 @@ LIMITS
|
||||
none
|
||||
|
||||
LINK LIBRARY
|
||||
none - XXX ?
|
||||
none
|
||||
|
||||
SEE ALSO
|
||||
define, undefine,
|
||||
@@ -43,7 +43,7 @@ SEE ALSO
|
||||
isobjtype, isodd, isprime, isrand, israndom, isreal, isrel,
|
||||
issimple, issq, isstr, istype
|
||||
|
||||
## Copyright (C) 1999 Landon Curt Noll
|
||||
## Copyright (C) 1999-2006 Landon Curt Noll
|
||||
##
|
||||
## Calc is open software; you can redistribute it and/or modify it under
|
||||
## the terms of the version 2.1 of the GNU Lesser General Public License
|
||||
@@ -59,8 +59,8 @@ SEE ALSO
|
||||
## received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
## 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
##
|
||||
## @(#) $Revision: 29.3 $
|
||||
## @(#) $Id: isdefined,v 29.3 2006/05/07 07:25:46 chongo Exp $
|
||||
## @(#) $Revision: 29.4 $
|
||||
## @(#) $Id: isdefined,v 29.4 2006/06/25 22:16:55 chongo Exp $
|
||||
## @(#) $Source: /usr/local/src/cmd/calc/help/RCS/isdefined,v $
|
||||
##
|
||||
## Under source code control: 1997/04/05 14:10:17
|
||||
|
19
help/islist
19
help/islist
@@ -25,14 +25,15 @@ LINK LIBRARY
|
||||
none
|
||||
|
||||
SEE ALSO
|
||||
append, delete, insert, islist, pop, push, remove, rsearch,
|
||||
search, size, list,
|
||||
isassoc, isatty, isblk, isconfig, isdefined, iserror, iseven, isfile,
|
||||
ishash, isident, isint, ismat, ismult, isnull, isnum, isobj,
|
||||
isobjtype, isodd, isprime, isrand, israndom, isreal, isrel,
|
||||
issimple, issq, isstr, istype
|
||||
append, delete, insert, pop, push, remove, rsearch, search,
|
||||
select, size,
|
||||
|
||||
## Copyright (C) 1999 Landon Curt Noll
|
||||
isassoc, isatty, isblk, isconfig, isdefined, iserror, iseven, isfile,
|
||||
ishash, isident, isint, ismat, ismult, isnull, isnum, isobj,
|
||||
isobjtype, isodd, isprime, isrand, israndom, isreal, isrel,
|
||||
issimple, issq, isstr, istype
|
||||
|
||||
## Copyright (C) 1999-2006 Landon Curt Noll
|
||||
##
|
||||
## Calc is open software; you can redistribute it and/or modify it under
|
||||
## the terms of the version 2.1 of the GNU Lesser General Public License
|
||||
@@ -48,8 +49,8 @@ SEE ALSO
|
||||
## received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
## 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
##
|
||||
## @(#) $Revision: 29.3 $
|
||||
## @(#) $Id: islist,v 29.3 2006/05/07 07:25:46 chongo Exp $
|
||||
## @(#) $Revision: 29.4 $
|
||||
## @(#) $Id: islist,v 29.4 2006/06/25 22:16:55 chongo Exp $
|
||||
## @(#) $Source: /usr/local/src/cmd/calc/help/RCS/islist,v $
|
||||
##
|
||||
## Under source code control: 1994/03/19 03:13:19
|
||||
|
@@ -25,7 +25,7 @@ LIMITS
|
||||
none
|
||||
|
||||
LINK LIBRARY
|
||||
none - XXX ???
|
||||
none
|
||||
|
||||
SEE ALSO
|
||||
obj,
|
||||
@@ -34,7 +34,7 @@ SEE ALSO
|
||||
isodd, isprime, isrand, israndom, isreal, isrel,
|
||||
issimple, issq, isstr, istype
|
||||
|
||||
## Copyright (C) 1999 Landon Curt Noll
|
||||
## Copyright (C) 1999-2006 Landon Curt Noll
|
||||
##
|
||||
## Calc is open software; you can redistribute it and/or modify it under
|
||||
## the terms of the version 2.1 of the GNU Lesser General Public License
|
||||
@@ -50,8 +50,8 @@ SEE ALSO
|
||||
## received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
## 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
##
|
||||
## @(#) $Revision: 29.3 $
|
||||
## @(#) $Id: isobjtype,v 29.3 2006/05/07 07:25:46 chongo Exp $
|
||||
## @(#) $Revision: 29.4 $
|
||||
## @(#) $Id: isobjtype,v 29.4 2006/06/25 22:16:55 chongo Exp $
|
||||
## @(#) $Source: /usr/local/src/cmd/calc/help/RCS/isobjtype,v $
|
||||
##
|
||||
## Under source code control: 1997/04/05 14:10:17
|
||||
|
13
help/isprime
13
help/isprime
@@ -45,13 +45,10 @@ LINK LIBRARY
|
||||
FLAG zisprime(ZVALUE x) (return 1 if prime, 0 not prime, -1 if >= 2^32)
|
||||
|
||||
SEE ALSO
|
||||
factor, lfactor, nextprime, prevprime, pfact, pix,
|
||||
isassoc, isatty, isblk, isconfig, isdefined, iserror, iseven, isfile,
|
||||
ishash, isident, isint, islist, ismat, ismult, isnull, isnum, isobj,
|
||||
isobjtype, isodd, isrand, israndom, isreal, isrel,
|
||||
issimple, issq, isstr, istype
|
||||
factor, lfactor, nextcand, nextprime, prevcand, prevprime,
|
||||
pfact, pix, ptest
|
||||
|
||||
## Copyright (C) 1999 Landon Curt Noll
|
||||
## Copyright (C) 1999-2006 Landon Curt Noll
|
||||
##
|
||||
## Calc is open software; you can redistribute it and/or modify it under
|
||||
## the terms of the version 2.1 of the GNU Lesser General Public License
|
||||
@@ -67,8 +64,8 @@ SEE ALSO
|
||||
## received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
## 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
##
|
||||
## @(#) $Revision: 29.3 $
|
||||
## @(#) $Id: isprime,v 29.3 2006/05/07 07:25:46 chongo Exp $
|
||||
## @(#) $Revision: 29.4 $
|
||||
## @(#) $Id: isprime,v 29.4 2006/06/25 22:16:55 chongo Exp $
|
||||
## @(#) $Source: /usr/local/src/cmd/calc/help/RCS/isprime,v $
|
||||
##
|
||||
## Under source code control: 1994/10/21 02:21:29
|
||||
|
@@ -13,8 +13,6 @@ DESCRIPTION
|
||||
Determine if x is a Blum-Blum-Shub pseudo-random number generator state.
|
||||
This function will return 1 if x is a file, 0 otherwise.
|
||||
|
||||
XXX - the interface to the Blum generator has not been not written.
|
||||
|
||||
EXAMPLE
|
||||
; a = srandom(0)
|
||||
; print israndom(a), israndom(0);
|
||||
@@ -33,7 +31,7 @@ SEE ALSO
|
||||
isobjtype, isodd, isprime, isrand, isreal, isrel,
|
||||
issimple, issq, isstr, istype
|
||||
|
||||
## Copyright (C) 1999 Landon Curt Noll
|
||||
## Copyright (C) 1999-2006 Landon Curt Noll
|
||||
##
|
||||
## Calc is open software; you can redistribute it and/or modify it under
|
||||
## the terms of the version 2.1 of the GNU Lesser General Public License
|
||||
@@ -49,8 +47,8 @@ SEE ALSO
|
||||
## received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
## 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
##
|
||||
## @(#) $Revision: 29.3 $
|
||||
## @(#) $Id: israndom,v 29.3 2006/05/07 07:25:46 chongo Exp $
|
||||
## @(#) $Revision: 29.4 $
|
||||
## @(#) $Id: israndom,v 29.4 2006/06/25 22:16:55 chongo Exp $
|
||||
## @(#) $Source: /usr/local/src/cmd/calc/help/RCS/israndom,v $
|
||||
##
|
||||
## Under source code control: 1995/11/11 05:09:41
|
||||
|
8
help/lcm
8
help/lcm
@@ -21,7 +21,7 @@ EXAMPLE
|
||||
-120 79.2 2
|
||||
|
||||
LIMITS
|
||||
none
|
||||
The number of arguments is not to exceed 1024.
|
||||
|
||||
LINK LIBRARY
|
||||
NUMBER *qlcm(NUMBER *x1, NUMBER *x2)
|
||||
@@ -29,7 +29,7 @@ LINK LIBRARY
|
||||
SEE ALSO
|
||||
gcd
|
||||
|
||||
## Copyright (C) 1999 Landon Curt Noll
|
||||
## Copyright (C) 1999-2006 Landon Curt Noll
|
||||
##
|
||||
## Calc is open software; you can redistribute it and/or modify it under
|
||||
## the terms of the version 2.1 of the GNU Lesser General Public License
|
||||
@@ -45,8 +45,8 @@ SEE ALSO
|
||||
## received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
## 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
##
|
||||
## @(#) $Revision: 29.3 $
|
||||
## @(#) $Id: lcm,v 29.3 2006/05/07 07:25:46 chongo Exp $
|
||||
## @(#) $Revision: 29.4 $
|
||||
## @(#) $Id: lcm,v 29.4 2006/06/22 23:49:22 chongo Exp $
|
||||
## @(#) $Source: /usr/local/src/cmd/calc/help/RCS/lcm,v $
|
||||
##
|
||||
## Under source code control: 1995/10/05 04:52:26
|
||||
|
@@ -40,7 +40,8 @@ LINK LIBRARY
|
||||
FULL zlowfactor(ZVALUE z, long count)
|
||||
|
||||
SEE ALSO
|
||||
factor
|
||||
factor, isprime, nextcand, nextprime, prevcand, prevprime,
|
||||
pfact, pix, ptest
|
||||
|
||||
## Copyright (C) 1999-2006 Landon Curt Noll
|
||||
##
|
||||
@@ -58,8 +59,8 @@ SEE ALSO
|
||||
## received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
## 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
##
|
||||
## @(#) $Revision: 29.4 $
|
||||
## @(#) $Id: lfactor,v 29.4 2006/06/01 11:36:02 chongo Exp $
|
||||
## @(#) $Revision: 29.5 $
|
||||
## @(#) $Id: lfactor,v 29.5 2006/06/25 22:16:55 chongo Exp $
|
||||
## @(#) $Source: /usr/local/src/cmd/calc/help/RCS/lfactor,v $
|
||||
##
|
||||
## Under source code control: 1995/12/18 12:34:57
|
||||
|
10
help/mat
10
help/mat
@@ -410,9 +410,9 @@ LINK LIBRARY
|
||||
n/a
|
||||
|
||||
SEE ALSO
|
||||
ismat, matdim, matmax, matmin, mattrans, mattrace, matsum, det, inverse,
|
||||
isident, test, config, search, rsearch, reverse, copy, blkcpy, dp, cp,
|
||||
randperm, sort
|
||||
ismat, matdim, matmax, matmin, mattrans, mattrace, matsum, matfill,
|
||||
det, inverse, isident, test, config, search, rsearch, reverse, copy,
|
||||
blkcpy, dp, cp, randperm, sort
|
||||
|
||||
## Copyright (C) 1999-2006 Landon Curt Noll
|
||||
##
|
||||
@@ -430,8 +430,8 @@ SEE ALSO
|
||||
## received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
## 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
##
|
||||
## @(#) $Revision: 29.6 $
|
||||
## @(#) $Id: mat,v 29.6 2006/06/11 07:25:14 chongo Exp $
|
||||
## @(#) $Revision: 29.7 $
|
||||
## @(#) $Id: mat,v 29.7 2006/06/25 22:16:55 chongo Exp $
|
||||
## @(#) $Source: /usr/local/src/cmd/calc/help/RCS/mat,v $
|
||||
##
|
||||
## Under source code control: 1991/07/21 04:37:22
|
||||
|
10
help/matdim
10
help/matdim
@@ -24,9 +24,11 @@ LINK LIBRARY
|
||||
none
|
||||
|
||||
SEE ALSO
|
||||
XXX - fill in
|
||||
mat, ismat, matmax, matmin, mattrans, mattrace, matsum, matfill,
|
||||
det, inverse, isident, test, config, search, rsearch, reverse, copy,
|
||||
blkcpy, dp, cp, randperm, sort
|
||||
|
||||
## Copyright (C) 1999 Landon Curt Noll
|
||||
## Copyright (C) 1999-2006 Landon Curt Noll
|
||||
##
|
||||
## Calc is open software; you can redistribute it and/or modify it under
|
||||
## the terms of the version 2.1 of the GNU Lesser General Public License
|
||||
@@ -42,8 +44,8 @@ SEE ALSO
|
||||
## received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
## 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
##
|
||||
## @(#) $Revision: 29.3 $
|
||||
## @(#) $Id: matdim,v 29.3 2006/05/07 07:25:46 chongo Exp $
|
||||
## @(#) $Revision: 29.4 $
|
||||
## @(#) $Id: matdim,v 29.4 2006/06/25 22:16:55 chongo Exp $
|
||||
## @(#) $Source: /usr/local/src/cmd/calc/help/RCS/matdim,v $
|
||||
##
|
||||
## Under source code control: 1995/10/25 04:03:45
|
||||
|
10
help/matfill
10
help/matfill
@@ -37,9 +37,11 @@ LINK LIBRARY
|
||||
none
|
||||
|
||||
SEE ALSO
|
||||
XXX - fill in
|
||||
mat, ismat, matdim, matmax, matmin, mattrans, mattrace, matsum,
|
||||
det, inverse, isident, test, config, search, rsearch, reverse, copy,
|
||||
blkcpy, dp, cp, randperm, sort
|
||||
|
||||
## Copyright (C) 1999 Landon Curt Noll
|
||||
## Copyright (C) 1999-2006 Landon Curt Noll
|
||||
##
|
||||
## Calc is open software; you can redistribute it and/or modify it under
|
||||
## the terms of the version 2.1 of the GNU Lesser General Public License
|
||||
@@ -55,8 +57,8 @@ SEE ALSO
|
||||
## received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
## 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
##
|
||||
## @(#) $Revision: 29.3 $
|
||||
## @(#) $Id: matfill,v 29.3 2006/05/07 07:25:46 chongo Exp $
|
||||
## @(#) $Revision: 29.4 $
|
||||
## @(#) $Id: matfill,v 29.4 2006/06/25 22:16:55 chongo Exp $
|
||||
## @(#) $Source: /usr/local/src/cmd/calc/help/RCS/matfill,v $
|
||||
##
|
||||
## Under source code control: 1995/10/25 04:03:45
|
||||
|
10
help/matmax
10
help/matmax
@@ -26,9 +26,11 @@ LINK LIBRARY
|
||||
none
|
||||
|
||||
SEE ALSO
|
||||
XXX - fill in
|
||||
mat, ismat, matdim, matmin, mattrans, mattrace, matsum, matfill,
|
||||
det, inverse, isident, test, config, search, rsearch, reverse, copy,
|
||||
blkcpy, dp, cp, randperm, sort
|
||||
|
||||
## Copyright (C) 1999 Landon Curt Noll
|
||||
## Copyright (C) 1999-2006 Landon Curt Noll
|
||||
##
|
||||
## Calc is open software; you can redistribute it and/or modify it under
|
||||
## the terms of the version 2.1 of the GNU Lesser General Public License
|
||||
@@ -44,8 +46,8 @@ SEE ALSO
|
||||
## received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
## 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
##
|
||||
## @(#) $Revision: 29.3 $
|
||||
## @(#) $Id: matmax,v 29.3 2006/05/07 07:25:46 chongo Exp $
|
||||
## @(#) $Revision: 29.4 $
|
||||
## @(#) $Id: matmax,v 29.4 2006/06/25 22:16:55 chongo Exp $
|
||||
## @(#) $Source: /usr/local/src/cmd/calc/help/RCS/matmax,v $
|
||||
##
|
||||
## Under source code control: 1995/10/25 04:03:45
|
||||
|
10
help/matmin
10
help/matmin
@@ -26,9 +26,11 @@ LINK LIBRARY
|
||||
none
|
||||
|
||||
SEE ALSO
|
||||
XXX - fill in
|
||||
mat, ismat, matdim, matmax, mattrans, mattrace, matsum, matfill,
|
||||
det, inverse, isident, test, config, search, rsearch, reverse, copy,
|
||||
blkcpy, dp, cp, randperm, sort
|
||||
|
||||
## Copyright (C) 1999 Landon Curt Noll
|
||||
## Copyright (C) 1999-2006 Landon Curt Noll
|
||||
##
|
||||
## Calc is open software; you can redistribute it and/or modify it under
|
||||
## the terms of the version 2.1 of the GNU Lesser General Public License
|
||||
@@ -44,8 +46,8 @@ SEE ALSO
|
||||
## received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
## 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
##
|
||||
## @(#) $Revision: 29.3 $
|
||||
## @(#) $Id: matmin,v 29.3 2006/05/07 07:25:46 chongo Exp $
|
||||
## @(#) $Revision: 29.4 $
|
||||
## @(#) $Id: matmin,v 29.4 2006/06/25 22:16:55 chongo Exp $
|
||||
## @(#) $Source: /usr/local/src/cmd/calc/help/RCS/matmin,v $
|
||||
##
|
||||
## Under source code control: 1995/10/25 04:03:45
|
||||
|
10
help/matsum
10
help/matsum
@@ -25,9 +25,11 @@ LINK LIBRARY
|
||||
void matsum(MATRIX *m, VALUE *vres);
|
||||
|
||||
SEE ALSO
|
||||
XXX - fill in
|
||||
mat, ismat, matdim, matmax, matmin, mattrans, mattrace, matfill,
|
||||
det, inverse, isident, test, config, search, rsearch, reverse, copy,
|
||||
blkcpy, dp, cp, randperm, sort
|
||||
|
||||
## Copyright (C) 1999 Landon Curt Noll
|
||||
## Copyright (C) 1999-2006 Landon Curt Noll
|
||||
##
|
||||
## Calc is open software; you can redistribute it and/or modify it under
|
||||
## the terms of the version 2.1 of the GNU Lesser General Public License
|
||||
@@ -43,8 +45,8 @@ SEE ALSO
|
||||
## received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
## 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
##
|
||||
## @(#) $Revision: 29.3 $
|
||||
## @(#) $Id: matsum,v 29.3 2006/05/07 07:25:46 chongo Exp $
|
||||
## @(#) $Revision: 29.4 $
|
||||
## @(#) $Id: matsum,v 29.4 2006/06/25 22:16:55 chongo Exp $
|
||||
## @(#) $Source: /usr/local/src/cmd/calc/help/RCS/matsum,v $
|
||||
##
|
||||
## Under source code control: 1995/10/25 04:03:46
|
||||
|
@@ -31,9 +31,11 @@ LINK LIBRARY
|
||||
MATRIX *mattrans(MATRIX *m)
|
||||
|
||||
SEE ALSO
|
||||
XXX - fill in
|
||||
mat, ismat, matdim, matmax, matmin, mattrace, matsum, matfill,
|
||||
det, inverse, isident, test, config, search, rsearch, reverse, copy,
|
||||
blkcpy, dp, cp, randperm, sort
|
||||
|
||||
## Copyright (C) 1999 Landon Curt Noll
|
||||
## Copyright (C) 1999-2006 Landon Curt Noll
|
||||
##
|
||||
## Calc is open software; you can redistribute it and/or modify it under
|
||||
## the terms of the version 2.1 of the GNU Lesser General Public License
|
||||
@@ -49,8 +51,8 @@ SEE ALSO
|
||||
## received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
## 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
##
|
||||
## @(#) $Revision: 29.3 $
|
||||
## @(#) $Id: mattrans,v 29.3 2006/05/07 07:25:46 chongo Exp $
|
||||
## @(#) $Revision: 29.4 $
|
||||
## @(#) $Id: mattrans,v 29.4 2006/06/25 22:16:55 chongo Exp $
|
||||
## @(#) $Source: /usr/local/src/cmd/calc/help/RCS/mattrans,v $
|
||||
##
|
||||
## Under source code control: 1995/10/25 04:03:46
|
||||
|
8
help/max
8
help/max
@@ -62,7 +62,7 @@ EXAMPLE
|
||||
3
|
||||
|
||||
LIMITS
|
||||
The number of arguments is not to exceed 100.
|
||||
The number of arguments is not to exceed 1024.
|
||||
|
||||
LINK LIBRARY
|
||||
NUMBER *qmax(NUMBER *x1, NUMBER *x2)
|
||||
@@ -70,7 +70,7 @@ LINK LIBRARY
|
||||
SEE ALSO
|
||||
max, obj
|
||||
|
||||
## Copyright (C) 1999 Landon Curt Noll
|
||||
## Copyright (C) 1999-2006 Landon Curt Noll
|
||||
##
|
||||
## Calc is open software; you can redistribute it and/or modify it under
|
||||
## the terms of the version 2.1 of the GNU Lesser General Public License
|
||||
@@ -86,8 +86,8 @@ SEE ALSO
|
||||
## received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
## 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
##
|
||||
## @(#) $Revision: 29.3 $
|
||||
## @(#) $Id: max,v 29.3 2006/05/07 07:25:46 chongo Exp $
|
||||
## @(#) $Revision: 29.4 $
|
||||
## @(#) $Id: max,v 29.4 2006/06/22 23:49:22 chongo Exp $
|
||||
## @(#) $Source: /usr/local/src/cmd/calc/help/RCS/max,v $
|
||||
##
|
||||
## Under source code control: 1995/10/05 04:52:27
|
||||
|
10
help/min
10
help/min
@@ -62,15 +62,15 @@ EXAMPLE
|
||||
1
|
||||
|
||||
LIMITS
|
||||
The number of arguments is not to exceed 100.
|
||||
The number of arguments is not to exceed 1024.
|
||||
|
||||
LINK LIBRARY
|
||||
NUMBER *qmin(NUMBER *x1, NUMBER *x2)
|
||||
|
||||
SEE ALSO
|
||||
max, obj
|
||||
max, obj, sum, ssq
|
||||
|
||||
## Copyright (C) 1999 Landon Curt Noll
|
||||
## Copyright (C) 1999-2006 Landon Curt Noll
|
||||
##
|
||||
## Calc is open software; you can redistribute it and/or modify it under
|
||||
## the terms of the version 2.1 of the GNU Lesser General Public License
|
||||
@@ -86,8 +86,8 @@ SEE ALSO
|
||||
## received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
## 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
##
|
||||
## @(#) $Revision: 29.3 $
|
||||
## @(#) $Id: min,v 29.3 2006/05/07 07:25:46 chongo Exp $
|
||||
## @(#) $Revision: 29.4 $
|
||||
## @(#) $Id: min,v 29.4 2006/06/22 23:49:22 chongo Exp $
|
||||
## @(#) $Source: /usr/local/src/cmd/calc/help/RCS/min,v $
|
||||
##
|
||||
## Under source code control: 1995/10/05 04:52:27
|
||||
|
72
help/mod
72
help/mod
@@ -23,6 +23,24 @@ TYPES
|
||||
return number
|
||||
|
||||
DESCRIPTION
|
||||
The expression:
|
||||
|
||||
x % y
|
||||
|
||||
is equivalent to call:
|
||||
|
||||
mod(x, y)
|
||||
|
||||
The function:
|
||||
|
||||
mod(x, y, rnd)
|
||||
|
||||
is equivalent to:
|
||||
|
||||
config("mod", rnd), x % y
|
||||
|
||||
except that the global config("mod") value does not change.
|
||||
|
||||
If x is real or complex and y is zero, mod(x, y, rnd) returns x.
|
||||
|
||||
If x is complex, mod(x, y, rnd) returns
|
||||
@@ -32,18 +50,16 @@ DESCRIPTION
|
||||
|
||||
If x/y is an integer mod(x, y, rnd) returns zero.
|
||||
|
||||
If x/y is not an integer, mod(x, y, rnd) returns one of the two numbers
|
||||
r for which for some integer q, x = q * v + r and abs(r) < abs(y).
|
||||
Which of the two numbers is returned is controlled by rnd.
|
||||
If x/y is not an integer, mod(x, y, rnd) returns one of the two
|
||||
values of r for which for some integer q exists such that x = q * y + r
|
||||
and abs(r) < abs(y). Which of the two values or r that is returned is
|
||||
controlled by rnd.
|
||||
|
||||
If bit 4 of rnd is set (e.g. if 16 <= rnd < 32) abs(r) <= abs(y)/2;
|
||||
this uniquely determines r if abs(r) < abs(y)/2. If bit 4 of rnd is
|
||||
set and abs(r) = abs(y)/2, or if bit 4 of r is not set, the result for
|
||||
r depends on rnd as in the following table:
|
||||
|
||||
(Blank entries indicate that the description would be complicated
|
||||
and probably not of much interest.)
|
||||
|
||||
rnd & 15 sign of r parity of q
|
||||
|
||||
0 sgn(y)
|
||||
@@ -63,26 +79,36 @@ DESCRIPTION
|
||||
14 even if x > 0, otherwise odd
|
||||
15 odd if x > 0, otherwise even
|
||||
|
||||
This dependence on rnd is consistent with quo(x, y, rnd) and
|
||||
appr(x, y, rnd) in that for any real x and y and any integer rnd,
|
||||
NOTE: Blank entries in the table above indicate that the
|
||||
description would be complicated and probably not of
|
||||
much interest.
|
||||
|
||||
x = y * quo(x, y, rnd) + mod(x, y, rnd).
|
||||
mod(x, y, rnd) = x - appr(x, y, rnd)
|
||||
The C language method of modulus and integer division is:
|
||||
|
||||
If y and rnd are fixed and mod(x, y, rnd) is to be considered as
|
||||
a canonical residue of x modulo y, bits 1 and 3 of rnd should be
|
||||
zero: if 0 <= rnd < 32, it is only for rnd = 0, 1, 4, 5, 16, 17,
|
||||
20, or 21, that the set of possible values for mod(x, y, rnd)
|
||||
form an interval of length y, and for any x1, x2,
|
||||
config("quomod", 2)
|
||||
config("quo", 2)
|
||||
config("mod", 2)
|
||||
|
||||
mod(x1, y, rnd) = mod(x2, y, rnd)
|
||||
This dependence on rnd is consistent with quo(x, y, rnd) and
|
||||
appr(x, y, rnd) in that for any real x and y and any integer rnd,
|
||||
|
||||
is equivalent to:
|
||||
x = y * quo(x, y, rnd) + mod(x, y, rnd).
|
||||
mod(x, y, rnd) = x - appr(x, y, rnd)
|
||||
|
||||
x1 is congruent to x2 modulo y.
|
||||
If y and rnd are fixed and mod(x, y, rnd) is to be considered as
|
||||
a canonical residue of x % y, bits 1 and 3 of rnd should be
|
||||
zero: if 0 <= rnd < 32, it is only for rnd = 0, 1, 4, 5, 16, 17,
|
||||
20, or 21, that the set of possible values for mod(x, y, rnd)
|
||||
form an interval of length y, and for any x1, x2,
|
||||
|
||||
This is particularly relevant when working with the ring of
|
||||
integers modulo an integer y.
|
||||
mod(x1, y, rnd) = mod(x2, y, rnd)
|
||||
|
||||
is equivalent to:
|
||||
|
||||
x1 is congruent to x2 modulo y.
|
||||
|
||||
This is particularly relevant when working with the ring of
|
||||
integers modulo an integer y.
|
||||
|
||||
EXAMPLE
|
||||
; print mod(11,5,0), mod(11,5,1), mod(-11,5,2), mod(-11,-5,3)
|
||||
@@ -111,7 +137,7 @@ LINK LIBRARY
|
||||
SEE ALSO
|
||||
quo, quomod, //, %
|
||||
|
||||
## Copyright (C) 1999 Landon Curt Noll
|
||||
## Copyright (C) 1999-2006 Landon Curt Noll
|
||||
##
|
||||
## Calc is open software; you can redistribute it and/or modify it under
|
||||
## the terms of the version 2.1 of the GNU Lesser General Public License
|
||||
@@ -127,8 +153,8 @@ SEE ALSO
|
||||
## received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
## 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
##
|
||||
## @(#) $Revision: 29.3 $
|
||||
## @(#) $Id: mod,v 29.3 2006/05/07 07:25:46 chongo Exp $
|
||||
## @(#) $Revision: 29.5 $
|
||||
## @(#) $Id: mod,v 29.5 2006/06/24 19:06:58 chongo Exp $
|
||||
## @(#) $Source: /usr/local/src/cmd/calc/help/RCS/mod,v $
|
||||
##
|
||||
## Under source code control: 1995/09/18 02:09:31
|
||||
|
10
help/name
10
help/name
@@ -26,19 +26,19 @@ EXAMPLE
|
||||
; name(f)
|
||||
"/tmp/beta"
|
||||
|
||||
; names(files(0))
|
||||
; name(files(0))
|
||||
"(stdin)"
|
||||
|
||||
LIMITS
|
||||
none
|
||||
|
||||
LINK LIBRARY
|
||||
none - XXX ???
|
||||
none
|
||||
|
||||
SEE ALSO
|
||||
blk, fopen
|
||||
|
||||
## Copyright (C) 1999 Landon Curt Noll
|
||||
## Copyright (C) 1999-2006 Landon Curt Noll
|
||||
##
|
||||
## Calc is open software; you can redistribute it and/or modify it under
|
||||
## the terms of the version 2.1 of the GNU Lesser General Public License
|
||||
@@ -54,8 +54,8 @@ SEE ALSO
|
||||
## received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
## 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
##
|
||||
## @(#) $Revision: 29.3 $
|
||||
## @(#) $Id: name,v 29.3 2006/05/07 07:25:46 chongo Exp $
|
||||
## @(#) $Revision: 29.5 $
|
||||
## @(#) $Id: name,v 29.5 2006/08/20 15:01:57 chongo Exp $
|
||||
## @(#) $Source: /usr/local/src/cmd/calc/help/RCS/name,v $
|
||||
##
|
||||
## Under source code control: 1997/04/05 14:12:44
|
||||
|
@@ -74,9 +74,10 @@ LINK LIBRARY
|
||||
ZVALUE *cand)
|
||||
|
||||
SEE ALSO
|
||||
prevcand, ptest
|
||||
factor, isprime, lfactor, nextprime, prevcand, prevprime,
|
||||
pfact, pix, ptest
|
||||
|
||||
## Copyright (C) 1999 Landon Curt Noll
|
||||
## Copyright (C) 1999-2006 Landon Curt Noll
|
||||
##
|
||||
## Calc is open software; you can redistribute it and/or modify it under
|
||||
## the terms of the version 2.1 of the GNU Lesser General Public License
|
||||
@@ -92,8 +93,8 @@ SEE ALSO
|
||||
## received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
## 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
##
|
||||
## @(#) $Revision: 29.3 $
|
||||
## @(#) $Id: nextcand,v 29.3 2006/05/07 07:25:46 chongo Exp $
|
||||
## @(#) $Revision: 29.4 $
|
||||
## @(#) $Id: nextcand,v 29.4 2006/06/25 22:16:55 chongo Exp $
|
||||
## @(#) $Source: /usr/local/src/cmd/calc/help/RCS/nextcand,v $
|
||||
##
|
||||
## Under source code control: 1996/02/25 00:27:43
|
||||
|
@@ -33,9 +33,10 @@ LINK LIBRARY
|
||||
FULL znprime(ZVALUE z)
|
||||
|
||||
SEE ALSO
|
||||
prevprime
|
||||
factor, isprime, lfactor, nextcand, prevcand, prevprime,
|
||||
pfact, pix, ptest
|
||||
|
||||
## Copyright (C) 1999 Landon Curt Noll
|
||||
## Copyright (C) 1999-2006 Landon Curt Noll
|
||||
##
|
||||
## Calc is open software; you can redistribute it and/or modify it under
|
||||
## the terms of the version 2.1 of the GNU Lesser General Public License
|
||||
@@ -51,8 +52,8 @@ SEE ALSO
|
||||
## received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
## 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
##
|
||||
## @(#) $Revision: 29.3 $
|
||||
## @(#) $Id: nextprime,v 29.3 2006/05/07 07:25:46 chongo Exp $
|
||||
## @(#) $Revision: 29.4 $
|
||||
## @(#) $Id: nextprime,v 29.4 2006/06/25 22:16:55 chongo Exp $
|
||||
## @(#) $Source: /usr/local/src/cmd/calc/help/RCS/nextprime,v $
|
||||
##
|
||||
## Under source code control: 1995/12/18 12:34:57
|
||||
|
@@ -66,7 +66,7 @@ EXAMPLE
|
||||
27
|
||||
|
||||
LIMITS
|
||||
The number of arguments is not to exceed 100.
|
||||
The number of arguments is not to exceed 1024.
|
||||
|
||||
LINK LIBRARY
|
||||
none
|
||||
@@ -74,7 +74,7 @@ LINK LIBRARY
|
||||
SEE ALSO
|
||||
isnull, test
|
||||
|
||||
## Copyright (C) 1999 Landon Curt Noll
|
||||
## Copyright (C) 1999-2006 Landon Curt Noll
|
||||
##
|
||||
## Calc is open software; you can redistribute it and/or modify it under
|
||||
## the terms of the version 2.1 of the GNU Lesser General Public License
|
||||
@@ -90,8 +90,8 @@ SEE ALSO
|
||||
## received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
## 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
##
|
||||
## @(#) $Revision: 29.3 $
|
||||
## @(#) $Id: null,v 29.3 2006/05/07 07:25:46 chongo Exp $
|
||||
## @(#) $Revision: 29.4 $
|
||||
## @(#) $Id: null,v 29.4 2006/06/22 23:49:22 chongo Exp $
|
||||
## @(#) $Source: /usr/local/src/cmd/calc/help/RCS/null,v $
|
||||
##
|
||||
## Under source code control: 1996/03/12 23:10:01
|
||||
|
@@ -35,9 +35,9 @@ LINK LIBRARY
|
||||
void zperm(NUMBER x, y, *ret)
|
||||
|
||||
SEE ALSO
|
||||
comb, fact
|
||||
comb, fact, randperm
|
||||
|
||||
## Copyright (C) 1999 Landon Curt Noll
|
||||
## Copyright (C) 1999-2006 Landon Curt Noll
|
||||
##
|
||||
## Calc is open software; you can redistribute it and/or modify it under
|
||||
## the terms of the version 2.1 of the GNU Lesser General Public License
|
||||
@@ -53,8 +53,8 @@ SEE ALSO
|
||||
## received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
## 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
##
|
||||
## @(#) $Revision: 29.3 $
|
||||
## @(#) $Id: perm,v 29.3 2006/05/07 07:25:46 chongo Exp $
|
||||
## @(#) $Revision: 29.4 $
|
||||
## @(#) $Id: perm,v 29.4 2006/06/25 22:16:55 chongo Exp $
|
||||
## @(#) $Source: /usr/local/src/cmd/calc/help/RCS/perm,v $
|
||||
##
|
||||
## Under source code control: 1994/10/20 04:03:02
|
||||
|
@@ -24,9 +24,10 @@ LINK LIBRARY
|
||||
void zpfact(ZVALUE z, ZVALUE *dest)
|
||||
|
||||
SEE ALSO
|
||||
fact, lcmfact
|
||||
factor, isprime, lfactor, nextcand, nextprime, prevcand, prevprime,
|
||||
pix, ptest, fact, lcmfact
|
||||
|
||||
## Copyright (C) 1999 Landon Curt Noll
|
||||
## Copyright (C) 1999-2006 Landon Curt Noll
|
||||
##
|
||||
## Calc is open software; you can redistribute it and/or modify it under
|
||||
## the terms of the version 2.1 of the GNU Lesser General Public License
|
||||
@@ -42,8 +43,8 @@ SEE ALSO
|
||||
## received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
## 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
##
|
||||
## @(#) $Revision: 29.3 $
|
||||
## @(#) $Id: pfact,v 29.3 2006/05/07 07:25:46 chongo Exp $
|
||||
## @(#) $Revision: 29.4 $
|
||||
## @(#) $Id: pfact,v 29.4 2006/06/25 22:16:55 chongo Exp $
|
||||
## @(#) $Source: /usr/local/src/cmd/calc/help/RCS/pfact,v $
|
||||
##
|
||||
## Under source code control: 1995/12/18 12:34:57
|
||||
|
8
help/pi
8
help/pi
@@ -24,9 +24,9 @@ LINK LIBRARY
|
||||
NUMBER *qpi(NUMBER *eps)
|
||||
|
||||
SEE ALSO
|
||||
XXX - fill in
|
||||
atan2
|
||||
|
||||
## Copyright (C) 1999 Landon Curt Noll
|
||||
## Copyright (C) 1999-2006 Landon Curt Noll
|
||||
##
|
||||
## Calc is open software; you can redistribute it and/or modify it under
|
||||
## the terms of the version 2.1 of the GNU Lesser General Public License
|
||||
@@ -42,8 +42,8 @@ SEE ALSO
|
||||
## received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
## 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
##
|
||||
## @(#) $Revision: 29.3 $
|
||||
## @(#) $Id: pi,v 29.3 2006/05/07 07:25:46 chongo Exp $
|
||||
## @(#) $Revision: 29.4 $
|
||||
## @(#) $Id: pi,v 29.4 2006/06/25 22:16:55 chongo Exp $
|
||||
## @(#) $Source: /usr/local/src/cmd/calc/help/RCS/pi,v $
|
||||
##
|
||||
## Under source code control: 1995/10/25 04:03:46
|
||||
|
9
help/pix
9
help/pix
@@ -35,9 +35,10 @@ LINK LIBRARY
|
||||
FULL pix(FULL x)
|
||||
|
||||
SEE ALSO
|
||||
XXX - fill in
|
||||
factor, isprime, lfactor, nextcand, nextprime, prevcand, prevprime,
|
||||
pfact, ptest
|
||||
|
||||
## Copyright (C) 1999 Landon Curt Noll
|
||||
## Copyright (C) 1999-2006 Landon Curt Noll
|
||||
##
|
||||
## Calc is open software; you can redistribute it and/or modify it under
|
||||
## the terms of the version 2.1 of the GNU Lesser General Public License
|
||||
@@ -53,8 +54,8 @@ SEE ALSO
|
||||
## received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
## 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
##
|
||||
## @(#) $Revision: 29.3 $
|
||||
## @(#) $Id: pix,v 29.3 2006/05/07 07:25:46 chongo Exp $
|
||||
## @(#) $Revision: 29.4 $
|
||||
## @(#) $Id: pix,v 29.4 2006/06/25 22:16:55 chongo Exp $
|
||||
## @(#) $Source: /usr/local/src/cmd/calc/help/RCS/pix,v $
|
||||
##
|
||||
## Under source code control: 1995/12/18 12:34:58
|
||||
|
10
help/poly
10
help/poly
@@ -128,15 +128,15 @@ EXAMPLE
|
||||
113 113 113
|
||||
|
||||
LIMITS
|
||||
The number of arguments is not to exceed 100
|
||||
The number of arguments is not to exceed 1024
|
||||
|
||||
LINK LIBRARY
|
||||
BOOL evalpoly(LIST *clist, LISTELEM *x, VALUE *result);
|
||||
|
||||
SEE ALSO
|
||||
XXX - fill in
|
||||
list
|
||||
|
||||
## Copyright (C) 1999 Landon Curt Noll
|
||||
## Copyright (C) 1999-2006 Landon Curt Noll
|
||||
##
|
||||
## Calc is open software; you can redistribute it and/or modify it under
|
||||
## the terms of the version 2.1 of the GNU Lesser General Public License
|
||||
@@ -152,8 +152,8 @@ SEE ALSO
|
||||
## received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
## 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
##
|
||||
## @(#) $Revision: 29.3 $
|
||||
## @(#) $Id: poly,v 29.3 2006/05/07 07:25:46 chongo Exp $
|
||||
## @(#) $Revision: 29.4 $
|
||||
## @(#) $Id: poly,v 29.4 2006/06/22 23:49:22 chongo Exp $
|
||||
## @(#) $Source: /usr/local/src/cmd/calc/help/RCS/poly,v $
|
||||
##
|
||||
## Under source code control: 1995/12/02 02:40:43
|
||||
|
9
help/pop
9
help/pop
@@ -43,9 +43,10 @@ LINK LIBRARY
|
||||
none
|
||||
|
||||
SEE ALSO
|
||||
append, delete, insert, islist, list, push, remove, rsearch, search, size
|
||||
append, delete, insert, islist, push, remove, rsearch, search,
|
||||
select, size
|
||||
|
||||
## Copyright (C) 1999 Landon Curt Noll
|
||||
## Copyright (C) 1999-2006 Landon Curt Noll
|
||||
##
|
||||
## Calc is open software; you can redistribute it and/or modify it under
|
||||
## the terms of the version 2.1 of the GNU Lesser General Public License
|
||||
@@ -61,8 +62,8 @@ SEE ALSO
|
||||
## received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
## 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
##
|
||||
## @(#) $Revision: 29.3 $
|
||||
## @(#) $Id: pop,v 29.3 2006/05/07 07:25:46 chongo Exp $
|
||||
## @(#) $Revision: 29.4 $
|
||||
## @(#) $Id: pop,v 29.4 2006/06/25 22:16:55 chongo Exp $
|
||||
## @(#) $Source: /usr/local/src/cmd/calc/help/RCS/pop,v $
|
||||
##
|
||||
## Under source code control: 1994/03/19 03:13:20
|
||||
|
@@ -82,9 +82,10 @@ LINK LIBRARY
|
||||
ZVALUE *cand)
|
||||
|
||||
SEE ALSO
|
||||
nextcand, ptest
|
||||
factor, isprime, lfactor, nextcand, nextprime, prevprime,
|
||||
pfact, pix, ptest
|
||||
|
||||
## Copyright (C) 1999 Landon Curt Noll
|
||||
## Copyright (C) 1999-2006 Landon Curt Noll
|
||||
##
|
||||
## Calc is open software; you can redistribute it and/or modify it under
|
||||
## the terms of the version 2.1 of the GNU Lesser General Public License
|
||||
@@ -100,8 +101,8 @@ SEE ALSO
|
||||
## received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
## 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
##
|
||||
## @(#) $Revision: 29.3 $
|
||||
## @(#) $Id: prevcand,v 29.3 2006/05/07 07:25:46 chongo Exp $
|
||||
## @(#) $Revision: 29.4 $
|
||||
## @(#) $Id: prevcand,v 29.4 2006/06/25 22:16:55 chongo Exp $
|
||||
## @(#) $Source: /usr/local/src/cmd/calc/help/RCS/prevcand,v $
|
||||
##
|
||||
## Under source code control: 1996/02/25 00:27:43
|
||||
|
@@ -36,9 +36,10 @@ LINK LIBRARY
|
||||
FULL zpprime(ZVALUE z)
|
||||
|
||||
SEE ALSO
|
||||
nextprime
|
||||
factor, isprime, lfactor, nextcand, nextprime, prevcand,
|
||||
pfact, pix, ptest
|
||||
|
||||
## Copyright (C) 1999 Landon Curt Noll
|
||||
## Copyright (C) 1999-2006 Landon Curt Noll
|
||||
##
|
||||
## Calc is open software; you can redistribute it and/or modify it under
|
||||
## the terms of the version 2.1 of the GNU Lesser General Public License
|
||||
@@ -54,8 +55,8 @@ SEE ALSO
|
||||
## received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
## 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
##
|
||||
## @(#) $Revision: 29.3 $
|
||||
## @(#) $Id: prevprime,v 29.3 2006/05/07 07:25:46 chongo Exp $
|
||||
## @(#) $Revision: 29.4 $
|
||||
## @(#) $Id: prevprime,v 29.4 2006/06/25 22:16:55 chongo Exp $
|
||||
## @(#) $Source: /usr/local/src/cmd/calc/help/RCS/prevprime,v $
|
||||
##
|
||||
## Under source code control: 1995/12/18 12:34:58
|
||||
|
@@ -118,7 +118,7 @@ EXAMPLE
|
||||
|
||||
|
||||
LIMITS
|
||||
The number of arguments of printf() is not to exceed 100.
|
||||
The number of arguments of printf() is not to exceed 1024.
|
||||
|
||||
LINK LIBRARY
|
||||
none
|
||||
@@ -126,7 +126,7 @@ LINK LIBRARY
|
||||
SEE ALSO
|
||||
fprintf, strprintf, print
|
||||
|
||||
## Copyright (C) 1999 Landon Curt Noll
|
||||
## Copyright (C) 1999-2006 Landon Curt Noll
|
||||
##
|
||||
## Calc is open software; you can redistribute it and/or modify it under
|
||||
## the terms of the version 2.1 of the GNU Lesser General Public License
|
||||
@@ -142,8 +142,8 @@ SEE ALSO
|
||||
## received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
## 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
##
|
||||
## @(#) $Revision: 29.3 $
|
||||
## @(#) $Id: printf,v 29.3 2006/05/07 07:25:46 chongo Exp $
|
||||
## @(#) $Revision: 29.4 $
|
||||
## @(#) $Id: printf,v 29.4 2006/06/22 23:49:22 chongo Exp $
|
||||
## @(#) $Source: /usr/local/src/cmd/calc/help/RCS/printf,v $
|
||||
##
|
||||
## Under source code control: 1996/03/12 22:50:41
|
||||
|
@@ -35,7 +35,7 @@ LINK LIBRARY
|
||||
none
|
||||
|
||||
SEE ALSO
|
||||
XXX - fill in
|
||||
fgetfield, fgetline, fgetstr
|
||||
|
||||
## Copyright (C) 1999-2006 Landon Curt Noll
|
||||
##
|
||||
@@ -53,8 +53,8 @@ SEE ALSO
|
||||
## received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
## 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
##
|
||||
## @(#) $Revision: 29.4 $
|
||||
## @(#) $Id: prompt,v 29.4 2006/06/10 12:28:10 chongo Exp $
|
||||
## @(#) $Revision: 29.5 $
|
||||
## @(#) $Id: prompt,v 29.5 2006/06/25 22:16:55 chongo Exp $
|
||||
## @(#) $Source: /usr/local/src/cmd/calc/help/RCS/prompt,v $
|
||||
##
|
||||
## Under source code control: 1995/12/18 12:34:58
|
||||
|
@@ -126,9 +126,10 @@ LINK LIBRARY
|
||||
BOOL zprimetest(ZVALUE n, long count, long skip)
|
||||
|
||||
SEE ALSO
|
||||
isprime, prevcand, nextcand
|
||||
factor, isprime, lfactor, nextcand, nextprime, prevcand, prevprime,
|
||||
pfact, pix
|
||||
|
||||
## Copyright (C) 1999 Landon Curt Noll
|
||||
## Copyright (C) 1999-2006 Landon Curt Noll
|
||||
##
|
||||
## Calc is open software; you can redistribute it and/or modify it under
|
||||
## the terms of the version 2.1 of the GNU Lesser General Public License
|
||||
@@ -144,8 +145,8 @@ SEE ALSO
|
||||
## received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
## 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
##
|
||||
## @(#) $Revision: 29.3 $
|
||||
## @(#) $Id: ptest,v 29.3 2006/05/07 07:25:46 chongo Exp $
|
||||
## @(#) $Revision: 29.4 $
|
||||
## @(#) $Id: ptest,v 29.4 2006/06/25 22:16:55 chongo Exp $
|
||||
## @(#) $Source: /usr/local/src/cmd/calc/help/RCS/ptest,v $
|
||||
##
|
||||
## Under source code control: 1996/02/25 00:27:43
|
||||
|
@@ -52,9 +52,10 @@ LINK LIBRARY
|
||||
none
|
||||
|
||||
SEE ALSO
|
||||
append, delete, insert, islist, list, pop, remove, rsearch, search, size
|
||||
append, delete, insert, islist, pop, remove, rsearch, search,
|
||||
select, size
|
||||
|
||||
## Copyright (C) 1999 Landon Curt Noll
|
||||
## Copyright (C) 1999-2006 Landon Curt Noll
|
||||
##
|
||||
## Calc is open software; you can redistribute it and/or modify it under
|
||||
## the terms of the version 2.1 of the GNU Lesser General Public License
|
||||
@@ -70,8 +71,8 @@ SEE ALSO
|
||||
## received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
## 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
##
|
||||
## @(#) $Revision: 29.3 $
|
||||
## @(#) $Id: push,v 29.3 2006/05/07 07:25:46 chongo Exp $
|
||||
## @(#) $Revision: 29.4 $
|
||||
## @(#) $Id: push,v 29.4 2006/06/25 22:16:55 chongo Exp $
|
||||
## @(#) $Source: /usr/local/src/cmd/calc/help/RCS/push,v $
|
||||
##
|
||||
## Under source code control: 1994/03/19 03:13:20
|
||||
|
18
help/quo
18
help/quo
@@ -32,8 +32,8 @@ DESCRIPTION
|
||||
If x/y is an integer quo(x, y, rnd) returns x/y.
|
||||
|
||||
If x is real, y nonzero and x/y is not an integer, x // y returns
|
||||
one of the two integers v for which abs(x/y - v) < 1. Which
|
||||
integer is returned is controlled by rnd as follows:
|
||||
one of the two integers v for which abs(x/y - v) < 1. Which
|
||||
integer is returned is controlled by rnd as follows:
|
||||
|
||||
rnd sign of x/y - v Description of rounding
|
||||
|
||||
@@ -60,6 +60,16 @@ DESCRIPTION
|
||||
half-integer, as if
|
||||
rnd replaced by rnd & 15
|
||||
|
||||
NOTE: Blank entries in the table above indicate that the
|
||||
description would be complicated and probably not of
|
||||
much interest.
|
||||
|
||||
The C language method of modulus and integer division is:
|
||||
|
||||
config("quomod", 2)
|
||||
config("quo", 2)
|
||||
config("mod", 2)
|
||||
|
||||
EXAMPLE
|
||||
print quo(11,5,0), quo(11,5,1), quo(-11,5,2), quo(-11,-5,3)
|
||||
2 3 -2 3
|
||||
@@ -93,8 +103,8 @@ SEE ALSO
|
||||
## received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
## 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
##
|
||||
## @(#) $Revision: 29.2 $
|
||||
## @(#) $Id: quo,v 29.2 2000/06/07 14:02:33 chongo Exp $
|
||||
## @(#) $Revision: 29.3 $
|
||||
## @(#) $Id: quo,v 29.3 2006/06/24 19:06:58 chongo Exp $
|
||||
## @(#) $Source: /usr/local/src/cmd/calc/help/RCS/quo,v $
|
||||
##
|
||||
## Under source code control: 1995/09/18 04:01:44
|
||||
|
96
help/quomod
96
help/quomod
@@ -1,47 +1,105 @@
|
||||
NAME
|
||||
quomod - assign quotient and remainder to two variables
|
||||
quomod - assign quotient and remainder to two lvalues
|
||||
|
||||
SYNOPSIS
|
||||
quomod(x, y, q, r)
|
||||
quomod(x, y, Q, R [, rnd])
|
||||
|
||||
TYPES
|
||||
x real
|
||||
y real
|
||||
q any
|
||||
r any
|
||||
Q null-or-real-valued lvalue with assign-to permission
|
||||
R null-or-real-valued lvalue with assign-to permission
|
||||
rnd nonnegative integer, defaults to config("quomod")
|
||||
|
||||
return real
|
||||
return 0 or 1
|
||||
|
||||
DESCRIPTION
|
||||
Returns 0 or 1 according as x is or is not a multiple of y.
|
||||
Let x = q * y + r where q is an integer and 0 <= r < y
|
||||
This function assigns the values q and r to the variables
|
||||
Q and R. If x >= 0, the results for Q and R are the same as
|
||||
those given by Q = x // y, R = x % y.
|
||||
If y is nonzero and x/y is an integer q, this function assigns
|
||||
q to Q and zero to R, and returns zero.
|
||||
|
||||
If y is zero, zero is assigned to Q, x to R and 0 or 1 returned
|
||||
according as x is zero or nonzero.
|
||||
|
||||
In the remaining case, y nonzero and x/y not an intger, there
|
||||
are two pairs (q,r) for which x = q * y + r, q is an integer, and
|
||||
abs(r) < abs(y). Depending on the low 5 bits of rnd, the q and r
|
||||
of one of these pairs will be assigned to Q and R respectively,
|
||||
and the number 1 returned. The effects of rnd can be described in
|
||||
terms of the way q is related to x/y, e.g. by rounding down,
|
||||
rounding towards zero, rounding to a nearest integeri, etc. or
|
||||
by properties of the remainder r, e.g. positive, negative,
|
||||
smallest, etc. The effects of the most commonly used values of
|
||||
rnd are described in the following table:
|
||||
|
||||
rnd q r
|
||||
|
||||
0 round down. q = floor(x/y) same sign as y
|
||||
1 round up, q = ceil(x/y) opposite sign to y
|
||||
2 round to zero, q = int(x/y) same sign as x, r = y * frac(x/y)
|
||||
3 round from zero oppsite sign to x
|
||||
4 positive
|
||||
5 negative
|
||||
6 same sign as x/y
|
||||
7 opposite sigh to x/y
|
||||
|
||||
8 to nearest even
|
||||
9 to nearest odd
|
||||
|
||||
For 16 <= rnd < 32, the rounding is to the nearest integer and r
|
||||
is the smallest (in absolute value) remainder except when x/y is
|
||||
halfway between consecutive integers, in which case the rounding
|
||||
is as given by the 4 low bits of rnd. Using rnd = 24 gives the
|
||||
cpmmonly used principle of rounding: round to the nearest integer,
|
||||
but take the even integer when there are two equally close integers.
|
||||
|
||||
For more detail on the effects of rnd for values other than those
|
||||
listed above, see "help quo" and "help mod".
|
||||
|
||||
In all cases, the values assigned to Q and R by quomod(x, y, Q, R, rnd)
|
||||
are the same as those given by Q = quo(x,y,rnd), R = mod(x,y,rnd).
|
||||
If config("quo") == rnd, Q is also given by quo(x,y) or x // y.
|
||||
If config("mod") == rnd, R is also given by mod(x,y) or x % y.
|
||||
|
||||
The rounding used by the C language for x / y and x % y corresponds
|
||||
to rnd = 2.
|
||||
|
||||
An error values is returned and the values of Q and R are not changed
|
||||
if Q and R are not both lvalues, or if the current value of any
|
||||
argument is not as specified above, or if Q or R has no-assign-to
|
||||
prptection, e.g. after protect(Q,1).
|
||||
|
||||
XXX - need to document relationship with "quomod" config value
|
||||
|
||||
EXAMPLE
|
||||
; global u, v;
|
||||
; global mat M[2];
|
||||
; print quomod(13,5,u,v), u, v, quomod(15.6,5.2,M[0],M[1]), M[0], M[1];
|
||||
; 1 2 3 0 3 0
|
||||
1 2 3 0 3 0
|
||||
|
||||
; A = assoc();
|
||||
; print quomod(13, 5, A[1], A[2]), A[1], A[2]
|
||||
; 1 2 3
|
||||
|
||||
XXX - need examples of how the "quomod" config file changes results
|
||||
; print quomod(10, -3, u, v), u, v;
|
||||
1 -4 -2
|
||||
; print quomod(10, -3, u, v, 0), u, v;
|
||||
1 -4 -2
|
||||
; print quomod(10, -3, u, v, 1), u, v;
|
||||
1 -3 1
|
||||
; print quomod(10, -3, u, v, 2), u, v;
|
||||
1 -3 1
|
||||
; print quomod(-10, -3, u, v, 2), u, v;
|
||||
1 3 -1
|
||||
|
||||
LIMITS
|
||||
y > 0
|
||||
rnd < 2^31
|
||||
|
||||
LINK LIBRARY
|
||||
BOOL qquomod(NUMBER *q1, NUMBER *q2, NUMBER **retqdiv, NUMBER **retqmod)
|
||||
BOOL qquomod(NUMBER *q1, NUMBER *q2, NUMBER **quo, NUMBER **mod)
|
||||
|
||||
SEE ALSO
|
||||
//, %
|
||||
//, %, quo, mod, floor. ceil, int. frac
|
||||
|
||||
## Copyright (C) 1999 Landon Curt Noll
|
||||
## Copyright (C) 1999-2006 Landon Curt Noll
|
||||
##
|
||||
## Calc is open software; you can redistribute it and/or modify it under
|
||||
## the terms of the version 2.1 of the GNU Lesser General Public License
|
||||
@@ -57,8 +115,8 @@ SEE ALSO
|
||||
## received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
## 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
##
|
||||
## @(#) $Revision: 29.3 $
|
||||
## @(#) $Id: quomod,v 29.3 2006/05/07 07:25:46 chongo Exp $
|
||||
## @(#) $Revision: 29.7 $
|
||||
## @(#) $Id: quomod,v 29.7 2006/08/20 15:01:57 chongo Exp $
|
||||
## @(#) $Source: /usr/local/src/cmd/calc/help/RCS/quomod,v $
|
||||
##
|
||||
## Under source code control: 1995/05/07 03:17:03
|
||||
|
@@ -14,6 +14,9 @@ DESCRIPTION
|
||||
the elements have been randomly permuted. The value of x is not
|
||||
changed.
|
||||
|
||||
This function uses the rand() subtractive 100 shuffle pseudo-random
|
||||
number generator.
|
||||
|
||||
EXAMPLE
|
||||
; A = list(1,2,2,3,4)
|
||||
; randperm(A)
|
||||
@@ -41,9 +44,9 @@ LINK LIBRARY
|
||||
none
|
||||
|
||||
SEE ALSO
|
||||
XXX - fill in
|
||||
comp, fact, rand, perm
|
||||
|
||||
## Copyright (C) 1999 Landon Curt Noll
|
||||
## Copyright (C) 1999-2006 Landon Curt Noll
|
||||
##
|
||||
## Calc is open software; you can redistribute it and/or modify it under
|
||||
## the terms of the version 2.1 of the GNU Lesser General Public License
|
||||
@@ -59,8 +62,8 @@ SEE ALSO
|
||||
## received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
## 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
##
|
||||
## @(#) $Revision: 29.3 $
|
||||
## @(#) $Id: randperm,v 29.3 2006/05/07 07:25:46 chongo Exp $
|
||||
## @(#) $Revision: 29.4 $
|
||||
## @(#) $Id: randperm,v 29.4 2006/06/25 22:16:55 chongo Exp $
|
||||
## @(#) $Source: /usr/local/src/cmd/calc/help/RCS/randperm,v $
|
||||
##
|
||||
## Under source code control: 1995/07/10 02:09:31
|
||||
|
@@ -47,9 +47,10 @@ LINK LIBRARY
|
||||
none
|
||||
|
||||
SEE ALSO
|
||||
append, delete, insert, islist, list, push, pop, rsearch, search, size
|
||||
append, delete, insert, islist, pop, push, rsearch, search,
|
||||
select, size
|
||||
|
||||
## Copyright (C) 1999 Landon Curt Noll
|
||||
## Copyright (C) 1999-2006 Landon Curt Noll
|
||||
##
|
||||
## Calc is open software; you can redistribute it and/or modify it under
|
||||
## the terms of the version 2.1 of the GNU Lesser General Public License
|
||||
@@ -65,8 +66,8 @@ SEE ALSO
|
||||
## received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
## 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
##
|
||||
## @(#) $Revision: 29.3 $
|
||||
## @(#) $Id: remove,v 29.3 2006/05/07 07:25:46 chongo Exp $
|
||||
## @(#) $Revision: 29.4 $
|
||||
## @(#) $Id: remove,v 29.4 2006/06/25 22:16:55 chongo Exp $
|
||||
## @(#) $Source: /usr/local/src/cmd/calc/help/RCS/remove,v $
|
||||
##
|
||||
## Under source code control: 1996/03/12 23:10:01
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user