diff --git a/BUGS b/BUGS index 13e5d2e..f07ad8e 100644 --- a/BUGS +++ b/BUGS @@ -90,7 +90,7 @@ Known bugs: This is not an error in the ellip standard calc resource files. It is a bug inside calc. Versions going back as far as version - 2.11.4t2 in the year 2000 (and perhaps even further) alll have + 2.11.4t2 in the year 2000 (and perhaps even further) all have this bug. Anyone want to track down and fix this bug? @@ -323,8 +323,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.21 $ -## @(#) $Id: BUGS,v 29.21 2004/10/23 01:13:51 chongo Exp $ +## @(#) $Revision: 29.22 $ +## @(#) $Id: BUGS,v 29.22 2004/10/23 02:25:02 chongo Exp $ ## @(#) $Source: /usr/local/src/cmd/calc/RCS/BUGS,v $ ## ## Under source code control: 1994/03/18 14:06:13 diff --git a/CHANGES b/CHANGES index 3dbad27..5963aba 100644 --- a/CHANGES +++ b/CHANGES @@ -24,6 +24,33 @@ The following are the changes from calc version 2.11.10.1 to date: to the BUGS file. See "help bugs" or the BUGS source file for details. Anyone want to track down and fix this bug? + Fixed typo in the "help mat" example and improved the mat_print example. + + Renamed most COMPLEX C function names to start with c_ to avoid + conflicts with new C standard functions. Note that the calc + builtin function names remain the same. The C function names + inside the C source that calc is written in changed. This means + that code that linked to libcalc.a will need to change in order + to call calc's functions instead of the C standard functions. + See cmath.h, comfunc.c, and commath.c for details. See also + http://www.opengroup.org/onlinepubs/009695399/basedefs/complex.h.html + for names of the new C standard functions. + + Changed the calc man page to note that using -- in the command will + separate calc options from arguments as in: + + calc -p -- -1 - -7 + + Noted how Apple OS X can make use of readline in the Makefile. + In particular: + + # For Apple OS X: install fink from http://fink.sourceforge.net + # and then do a 'fink install readline' and then use: + # + READLINE_LIB= -L/sw/lib -lreadline -lhistory -lncurses + + Added linear.cal as a calc standard resource file. + The following are the changes from calc version 2.11.10 to 2.11.10: @@ -5785,8 +5812,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.70 $ -## @(#) $Id: CHANGES,v 29.70 2004/10/23 01:16:23 chongo Exp $ +## @(#) $Revision: 29.71 $ +## @(#) $Id: CHANGES,v 29.71 2005/12/12 06:47:21 chongo Exp $ ## @(#) $Source: /usr/local/src/cmd/calc/RCS/CHANGES,v $ ## ## Under source code control: 1993/06/02 18:12:57 diff --git a/Makefile b/Makefile index 3a8b210..de12146 100644 --- a/Makefile +++ b/Makefile @@ -33,8 +33,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.73 $$ -# @(#) $Id: Makefile.ship,v 29.73 2004/07/28 12:52:37 chongo Exp $ +MAKEFILE_REV= $$Revision: 29.74 $$ +# @(#) $Id: Makefile.ship,v 29.74 2005/10/18 11:53:37 chongo Exp $ # @(#) $Source: /usr/local/src/cmd/calc/RCS/Makefile.ship,v $ # # Under source code control: 1990/02/15 01:48:41 @@ -794,6 +794,11 @@ READLINE_LIB= #READLINE_LIB= -L/usr/gnu/lib -lreadline -lhistory -lncurses #READLINE_LIB= -L/usr/local/lib -lreadline -lhistory -lncurses # +# For Apple OS X: install fink from http://fink.sourceforge.net +# and then do a 'fink install readline' and then use: +# +#READLINE_LIB= -L/sw/lib -lreadline -lhistory -lncurses +# READLINE_INCLUDE= #READLINE_INCLUDE= -I/usr/gnu/include #READLINE_INCLUDE= -I/usr/local/include diff --git a/cal/Makefile b/cal/Makefile index b2764c1..d4a353f 100644 --- a/cal/Makefile +++ b/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.15 $ -# @(#) $Id: Makefile,v 29.15 2003/01/05 08:10:56 chongo Exp $ +# @(#) $Revision: 29.16 $ +# @(#) $Id: Makefile,v 29.16 2005/12/12 06:42:30 chongo Exp $ # @(#) $Source: /usr/local/src/cmd/calc/cal/RCS/Makefile,v $ # # Under source code control: 1991/07/21 05:00:54 @@ -170,7 +170,7 @@ CALC_FILES= README bigprime.cal deg.cal ellip.cal lucas.cal lucas_chk.cal \ lucas_tbl.cal mersenne.cal mod.cal pell.cal pi.cal pix.cal \ pollard.cal poly.cal psqrt.cal quat.cal regress.cal solve.cal \ sumsq.cal surd.cal unitfrac.cal varargs.cal chrem.cal mfactor.cal \ - bindings randmprime.cal test1700.cal randrun.cal \ + bindings randmprime.cal test1700.cal randrun.cal linear.cal \ randbitrun.cal bernoulli.cal test2300.cal test2600.cal \ test2700.cal test3100.cal test3300.cal test3400.cal prompt.cal \ test3500.cal seedrandom.cal test4000.cal test4100.cal test4600.cal \ diff --git a/cal/README b/cal/README index cc032b0..4985429 100644 --- a/cal/README +++ b/cal/README @@ -222,6 +222,14 @@ intfile.cal of the integer become the last octets of the file. +linear.cal + + linear(x0, y0, x1, y1, x) + + Returns the value y such that (x,y) in on the line (x0,y0), (x1,y1). + Requires x0 != y0. + + lucas.cal lucas(h, n) @@ -825,8 +833,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.9 $ -## @(#) $Id: README,v 29.9 2003/01/05 08:10:56 chongo Exp $ +## @(#) $Revision: 29.10 $ +## @(#) $Id: README,v 29.10 2005/12/12 06:39:18 chongo Exp $ ## @(#) $Source: /usr/local/src/cmd/calc/cal/RCS/README,v $ ## ## Under source code control: 1990/02/15 01:50:32 diff --git a/cal/linear.cal b/cal/linear.cal new file mode 100644 index 0000000..1e8501f --- /dev/null +++ b/cal/linear.cal @@ -0,0 +1,26 @@ +/* + * linear - perform a simple two point 2D linear interpolation + * + * given: + * x0, y0 first known point on the line + * x1, y1 second knonw point on the line + * x a given point to interpolate on + * + * returns: + * y such that (x,y) is on the line defined by (x0,y0) and (x1,y1) + * + * NOTE: The line cannot be vertical. So x0 != y0. + */ +define linear(x0, y0, x1, y1, x) +{ + /* firewall */ + if (!isnum(x0) || ! isnum(y0) || !isnum(x1) || ! isnum(y1) || !isnum(x)) { + quit "non-numeric argument passed to linear"; + } + if (x0 == x1) { + quit "linear given a line with an infinite slope"; + } + + /* return y = y0 + (delta_Y/delta_X) * (x - x0) */ + return y0 + (((y1-y0)/(x1-x0)) * (x - x0)); +} diff --git a/calc.man b/calc.man index e3a0b86..fde003e 100644 --- a/calc.man +++ b/calc.man @@ -15,8 +15,8 @@ .\" received a copy with calc; if not, write to Free Software Foundation, Inc. .\" 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. .\" -.\" @(#) $Revision: 29.17 $ -.\" @(#) $Id: calc.man,v 29.17 2004/10/23 00:58:33 chongo Exp $ +.\" @(#) $Revision: 29.18 $ +.\" @(#) $Id: calc.man,v 29.18 2005/10/18 11:10:18 chongo Exp $ .\" @(#) $Source: /usr/local/src/cmd/calc/RCS/calc.man,v $ .\" .\" Under source code control: 1991/07/23 05:48:26 @@ -51,7 +51,7 @@ calc \- arbitrary precision calculator .RB [ \-s ] .RB [ \-u ] .RB [ \-v ] -.RB [ calc_cmd\ \&.\|.\|. ] +.RB [ [\-\-]\ calc_cmd\ \&.\|.\|. ] .in -5n .sp \fI#!${BINDIR}/calc\fP\ [other_flags\ \&...] \fB\-f\fP @@ -435,6 +435,21 @@ Disable buffering of stdin and stdout. Print the .B calc version number and exit. + +.TP +.B \-\- +The double dash indicates to calc that no more option follow. +Thus calc will ignore a later argument on the command line +even if it starts with a dash. +This is useful when entering negative values on the command line as in: +.sp 1 +.in +5n +.nf +calc \-p \-\- \-1 - -7 +.sp 1 +.fi +.in -5n + .PP \& @@ -477,32 +492,50 @@ calc 23 + 47 .fi .in -5n .sp 1 -should respond with display of 70, but +will print 70. +However, command lines will have problems: .sp 1 .in +5n .nf calc 23 * 47 +.sp 1 +calc -23 + 47 .fi .in -5n .sp 1 -may fail. -Such cases can usually be made to work as expected by -enclosing the command between single marks as in: +The first example above fails because the shell interprets the '*' +as a file glob. +The second example fails because '\-23' is viewed as a calc option +(which it is not) and do calc objects to that it thinks of as an unknown option. +These cases can usually be made to work as expected by +enclosing the command between quotes: .sp 1 .in +5n .nf -calc "23 * 47" -.fi -.in -5n +calc '23 * 47' .sp 1 -and -.sp 1 -.in +5n -.nf calc "print sqrt(2), exp(1)" .fi .in -5n -.sp +.sp 1 +or in parentheses and quotes to avoid leading \-'s as in: +.sp 1 +.in +5n +.nf +calc '(-23 + 47)' +.fi +.in -5n +.sp 1 +One may also use a double dash to denote that calc options have ended as in: +.sp 1 +.in +5n +.nf +calc -- -23 + 47 +.sp 1 +calc -q -- -23 + 47 +.fi +.in -5n +.sp 1 If '!' is to be used to indicate the factorial function, for shells like .BI csh (1) diff --git a/calc.spec.in b/calc.spec.in index bcd346c..1ab34f0 100644 --- a/calc.spec.in +++ b/calc.spec.in @@ -2,7 +2,7 @@ # # calc.spec.in - template specfile for calc # -# Copyright (C) 2003-2004 Petteri Kettunen and Landon Curt Noll +# Copyright (C) 2003-2005 Petteri Kettunen and Landon Curt Noll # # Calc is open software; you can redistribute it and/or modify it under # the terms of the version 2.1 of the GNU Lesser General Public License @@ -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.13 $ -# @(#) $Id: calc.spec.in,v 29.13 2004/02/23 14:04:01 chongo Exp $ +# @(#) $Revision: 29.14 $ +# @(#) $Id: calc.spec.in,v 29.14 2005/12/12 06:57:27 chongo Exp $ # @(#) $Source: /usr/local/src/cmd/calc/RCS/calc.spec.in,v $ # # Under source code control: 2003/02/16 20:21:39 @@ -30,7 +30,7 @@ # BUGS # - Uninstalling calc and calc-devel leaves empty dirs /usr/include/calc -# and /usr/share/calc and its subdird. In case e.g. %{_includedir}/calc +# and /usr/share/calc and its subdirs. In case e.g. %{_includedir}/calc # is defined in `%files devel' section, then rpmbuild complains that # header files are defined twice - rpmbuild bug or bug in specfile conf??? @@ -48,11 +48,11 @@ BuildRoot: %{_tmppath}/%{name}-root %description Calc is arbitrary precision C-like arithmetic system that is a -calculator, an algorithm prototyper and mathematical research +calculator, an algorithm prototype and mathematical research tool. Calc comes with a rich set of builtin mathematical and programmatic functions. -For the latest calc release, see the project home page: +For the latest calc release, see the calc project home page: http://www.isthe.com/chongo/tech/comp/calc/index.html @@ -100,6 +100,9 @@ rm -rf %{buildroot} %attr(644, root, root) %{_libdir}/*.a %changelog +* Sun Dec 11 2006 Landon Curt Noll http://www.isthe.com/chongo +- Release of calc-2.11.11 +- Fixed description in spec file * Wed Feb 26 2003 Landon Curt Noll http://www.isthe.com/chongo - Release of calc-2.11.7-2 - Fixed attributes on include and lib calc-devel files diff --git a/cmath.h b/cmath.h index 56743c3..9a79589 100644 --- a/cmath.h +++ b/cmath.h @@ -17,8 +17,8 @@ * received a copy with calc; if not, write to Free Software Foundation, Inc. * 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. * - * @(#) $Revision: 29.6 $ - * @(#) $Id: cmath.h,v 29.6 2002/03/12 09:38:26 chongo Exp $ + * @(#) $Revision: 29.7 $ + * @(#) $Id: cmath.h,v 29.7 2005/10/18 10:43:49 chongo Exp $ * @(#) $Source: /usr/local/src/cmd/calc/RCS/cmath.h,v $ * * Under source code control: 1993/07/30 19:42:45 @@ -63,63 +63,63 @@ extern void cprintfr(COMPLEX *c); * Basic numeric routines. */ -extern COMPLEX *cadd(COMPLEX *c1, COMPLEX *c2); -extern COMPLEX *csub(COMPLEX *c1, COMPLEX *c2); -extern COMPLEX *cmul(COMPLEX *c1, COMPLEX *c2); -extern COMPLEX *cdiv(COMPLEX *c1, COMPLEX *c2); -extern COMPLEX *caddq(COMPLEX *c, NUMBER *q); -extern COMPLEX *csubq(COMPLEX *c, NUMBER *q); -extern COMPLEX *cmulq(COMPLEX *c, NUMBER *q); -extern COMPLEX *cdivq(COMPLEX *c, NUMBER *q); -extern COMPLEX *cscale(COMPLEX *c, long i); -extern COMPLEX *cshift(COMPLEX *c, long i); -extern COMPLEX *csquare(COMPLEX *c); -extern COMPLEX *cconj(COMPLEX *c); +extern COMPLEX *c_add(COMPLEX *c1, COMPLEX *c2); +extern COMPLEX *c_sub(COMPLEX *c1, COMPLEX *c2); +extern COMPLEX *c_mul(COMPLEX *c1, COMPLEX *c2); +extern COMPLEX *c_div(COMPLEX *c1, COMPLEX *c2); +extern COMPLEX *c_addq(COMPLEX *c, NUMBER *q); +extern COMPLEX *c_subq(COMPLEX *c, NUMBER *q); +extern COMPLEX *c_mulq(COMPLEX *c, NUMBER *q); +extern COMPLEX *c_divq(COMPLEX *c, NUMBER *q); +extern COMPLEX *c_scale(COMPLEX *c, long i); +extern COMPLEX *c_shift(COMPLEX *c, long i); +extern COMPLEX *c_square(COMPLEX *c); +extern COMPLEX *c_conj(COMPLEX *c); extern COMPLEX *c_real(COMPLEX *c); extern COMPLEX *c_imag(COMPLEX *c); -extern COMPLEX *cneg(COMPLEX *c); -extern COMPLEX *cinv(COMPLEX *c); -extern COMPLEX *cint(COMPLEX *c); -extern COMPLEX *cfrac(COMPLEX *c); -extern BOOL ccmp(COMPLEX *c1, COMPLEX *c2); +extern COMPLEX *c_neg(COMPLEX *c); +extern COMPLEX *c_inv(COMPLEX *c); +extern COMPLEX *c_int(COMPLEX *c); +extern COMPLEX *c_frac(COMPLEX *c); +extern BOOL c_cmp(COMPLEX *c1, COMPLEX *c2); /* * More complicated functions. */ -extern COMPLEX *cpowi(COMPLEX *c, NUMBER *q); -extern NUMBER *cilog(COMPLEX *c, ZVALUE base); +extern COMPLEX *c_powi(COMPLEX *c, NUMBER *q); +extern NUMBER *c_ilog(COMPLEX *c, ZVALUE base); /* * Transcendental routines. These all take an epsilon argument to * specify how accurately these are to be calculated. */ -extern COMPLEX *cpower(COMPLEX *c1, COMPLEX *c2, NUMBER *epsilon); -extern COMPLEX *csqrt(COMPLEX *c, NUMBER *epsilon, long R); -extern COMPLEX *croot(COMPLEX *c, NUMBER *q, NUMBER *epsilon); -extern COMPLEX *cexp(COMPLEX *c, NUMBER *epsilon); -extern COMPLEX *cln(COMPLEX *c, NUMBER *epsilon); -extern COMPLEX *ccos(COMPLEX *c, NUMBER *epsilon); -extern COMPLEX *csin(COMPLEX *c, NUMBER *epsilon); -extern COMPLEX *ccosh(COMPLEX *c, NUMBER *epsilon); -extern COMPLEX *csinh(COMPLEX *c, NUMBER *epsilon); -extern COMPLEX *cpolar(NUMBER *q1, NUMBER *q2, NUMBER *epsilon); -extern COMPLEX *crel(COMPLEX *c1, COMPLEX *c2); -extern COMPLEX *casin(COMPLEX *c, NUMBER *epsilon); -extern COMPLEX *cacos(COMPLEX *c, NUMBER *epsilon); -extern COMPLEX *catan(COMPLEX *c, NUMBER *epsilon); -extern COMPLEX *cacot(COMPLEX *c, NUMBER *epsilon); -extern COMPLEX *casec(COMPLEX *c, NUMBER *epsilon); -extern COMPLEX *cacsc(COMPLEX *c, NUMBER *epsilon); -extern COMPLEX *casinh(COMPLEX *c, NUMBER *epsilon); -extern COMPLEX *cacosh(COMPLEX *c, NUMBER *epsilon); -extern COMPLEX *catanh(COMPLEX *c, NUMBER *epsilon); -extern COMPLEX *cacoth(COMPLEX *c, NUMBER *epsilon); -extern COMPLEX *casech(COMPLEX *c, NUMBER *epsilon); -extern COMPLEX *cacsch(COMPLEX *c, NUMBER *epsilon); -extern COMPLEX *cgd(COMPLEX *c, NUMBER *epsilon); -extern COMPLEX *cagd(COMPLEX *c, NUMBER *epsilon); +extern COMPLEX *c_power(COMPLEX *c1, COMPLEX *c2, NUMBER *epsilon); +extern COMPLEX *c_sqrt(COMPLEX *c, NUMBER *epsilon, long R); +extern COMPLEX *c_root(COMPLEX *c, NUMBER *q, NUMBER *epsilon); +extern COMPLEX *c_exp(COMPLEX *c, NUMBER *epsilon); +extern COMPLEX *c_ln(COMPLEX *c, NUMBER *epsilon); +extern COMPLEX *c_cos(COMPLEX *c, NUMBER *epsilon); +extern COMPLEX *c_sin(COMPLEX *c, NUMBER *epsilon); +extern COMPLEX *c_cosh(COMPLEX *c, NUMBER *epsilon); +extern COMPLEX *c_sinh(COMPLEX *c, NUMBER *epsilon); +extern COMPLEX *c_polar(NUMBER *q1, NUMBER *q2, NUMBER *epsilon); +extern COMPLEX *c_rel(COMPLEX *c1, COMPLEX *c2); +extern COMPLEX *c_asin(COMPLEX *c, NUMBER *epsilon); +extern COMPLEX *c_acos(COMPLEX *c, NUMBER *epsilon); +extern COMPLEX *c_atan(COMPLEX *c, NUMBER *epsilon); +extern COMPLEX *c_acot(COMPLEX *c, NUMBER *epsilon); +extern COMPLEX *c_asec(COMPLEX *c, NUMBER *epsilon); +extern COMPLEX *c_acsc(COMPLEX *c, NUMBER *epsilon); +extern COMPLEX *c_asinh(COMPLEX *c, NUMBER *epsilon); +extern COMPLEX *c_acosh(COMPLEX *c, NUMBER *epsilon); +extern COMPLEX *c_atanh(COMPLEX *c, NUMBER *epsilon); +extern COMPLEX *c_acoth(COMPLEX *c, NUMBER *epsilon); +extern COMPLEX *c_asech(COMPLEX *c, NUMBER *epsilon); +extern COMPLEX *c_acsch(COMPLEX *c, NUMBER *epsilon); +extern COMPLEX *c_gd(COMPLEX *c, NUMBER *epsilon); +extern COMPLEX *c_agd(COMPLEX *c, NUMBER *epsilon); diff --git a/comfunc.c b/comfunc.c index ff7d8d5..95a866f 100644 --- a/comfunc.c +++ b/comfunc.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.3 $ - * @(#) $Id: comfunc.c,v 29.3 2000/07/17 15:35:49 chongo Exp $ + * @(#) $Revision: 29.4 $ + * @(#) $Id: comfunc.c,v 29.4 2005/10/18 10:43:49 chongo Exp $ * @(#) $Source: /usr/local/src/cmd/calc/RCS/comfunc.c,v $ * * Under source code control: 1990/02/15 01:48:13 @@ -41,7 +41,7 @@ * q power to raise it to */ COMPLEX * -cpowi(COMPLEX *c, NUMBER *q) +c_powi(COMPLEX *c, NUMBER *q) { COMPLEX *tmp, *res; /* temporary values */ long power; /* power to raise to */ @@ -74,22 +74,22 @@ cpowi(COMPLEX *c, NUMBER *q) case 1: return clink(c); case -1: - return cinv(c); + return c_inv(c); case 2: - return csquare(c); + return c_square(c); case -2: - tmp = csquare(c); - res = cinv(tmp); + tmp = c_square(c); + res = c_inv(tmp); comfree(tmp); return res; case 3: - tmp = csquare(c); - res = cmul(c, tmp); + tmp = c_square(c); + res = c_mul(c, tmp); comfree(tmp); return res; case 4: - tmp = csquare(c); - res = csquare(tmp); + tmp = c_square(c); + res = c_square(tmp); comfree(tmp); return res; } @@ -102,26 +102,26 @@ cpowi(COMPLEX *c, NUMBER *q) while ((bit & power) == 0) bit >>= 1L; bit >>= 1L; - res = csquare(c); + res = c_square(c); if (bit & power) { - tmp = cmul(res, c); + tmp = c_mul(res, c); comfree(res); res = tmp; } bit >>= 1L; while (bit) { - tmp = csquare(res); + tmp = c_square(res); comfree(res); res = tmp; if (bit & power) { - tmp = cmul(res, c); + tmp = c_mul(res, c); comfree(res); res = tmp; } bit >>= 1L; } if (sign < 0) { - tmp = cinv(res); + tmp = c_inv(res); comfree(res); res = tmp; } @@ -134,7 +134,7 @@ cpowi(COMPLEX *c, NUMBER *q) * Type of rounding of each component specified by R as for qsqrt(). */ COMPLEX * -csqrt(COMPLEX *c, NUMBER *epsilon, long R) +c_sqrt(COMPLEX *c, NUMBER *epsilon, long R) { COMPLEX *r; NUMBER *es, *aes, *bes, *u, *v, qtemp; @@ -363,7 +363,7 @@ csqrt(COMPLEX *c, NUMBER *epsilon, long R) * Each component of the result is within the specified error. */ COMPLEX * -croot(COMPLEX *c, NUMBER *q, NUMBER *epsilon) +c_root(COMPLEX *c, NUMBER *q, NUMBER *epsilon) { COMPLEX *r; NUMBER *a2pb2, *root, *tmp1, *tmp2, *epsilon2; @@ -376,7 +376,7 @@ croot(COMPLEX *c, NUMBER *q, NUMBER *epsilon) if (cisone(c) || qisone(q)) return clink(c); if (qistwo(q)) - return csqrt(c, epsilon, 24L); + return c_sqrt(c, epsilon, 24L); if (cisreal(c) && !qisneg(c->real)) { tmp1 = qroot(c->real, q, epsilon); if (tmp1 == NULL) @@ -388,8 +388,8 @@ croot(COMPLEX *c, NUMBER *q, NUMBER *epsilon) } /* * Calculate the root using the formula: - * croot(a + bi, n) = - * cpolar(qroot(a^2 + b^2, 2 * n), qatan2(b, a) / n). + * c_root(a + bi, n) = + * c_polar(qroot(a^2 + b^2, 2 * n), qatan2(b, a) / n). */ n = qilog2(epsilon); epsilon2 = qbitvalue(n - 4); @@ -415,7 +415,7 @@ croot(COMPLEX *c, NUMBER *q, NUMBER *epsilon) qfree(epsilon2); tmp2 = qqdiv(tmp1, q); qfree(tmp1); - r = cpolar(root, tmp2, epsilon); + r = c_polar(root, tmp2, epsilon); qfree(root); qfree(tmp2); return r; @@ -428,7 +428,7 @@ croot(COMPLEX *c, NUMBER *q, NUMBER *epsilon) * exp(a + bi) = exp(a) * (cos(b) + i * sin(b)). */ COMPLEX * -cexp(COMPLEX *c, NUMBER *epsilon) +c_exp(COMPLEX *c, NUMBER *epsilon) { COMPLEX *r; NUMBER *sin, *cos, *tmp1, *tmp2, *epsilon1; @@ -485,7 +485,7 @@ cexp(COMPLEX *c, NUMBER *epsilon) * ln(a + bi) = ln(a^2 + b^2) / 2 + i * atan2(b, a). */ COMPLEX * -cln(COMPLEX *c, NUMBER *epsilon) +c_ln(COMPLEX *c, NUMBER *epsilon) { COMPLEX *r; NUMBER *a2b2, *tmp1, *tmp2, *epsilon1; @@ -526,7 +526,7 @@ cln(COMPLEX *c, NUMBER *epsilon) * cos(x) = (exp(1i * x) + exp(-1i * x))/2; */ COMPLEX * -ccos(COMPLEX *c, NUMBER *epsilon) +c_cos(COMPLEX *c, NUMBER *epsilon) { COMPLEX *r, *ctmp1, *ctmp2, *ctmp3; NUMBER *epsilon1; @@ -545,7 +545,7 @@ ccos(COMPLEX *c, NUMBER *epsilon) ctmp1->real = neg ? qneg(c->imag) : qlink(c->imag); ctmp1->imag = neg ? qlink(c->real) : qneg(c->real); epsilon1 = qbitvalue(n - 2); - ctmp2 = cexp(ctmp1, epsilon1); + ctmp2 = c_exp(ctmp1, epsilon1); comfree(ctmp1); qfree(epsilon1); if (ctmp2 == NULL) @@ -554,11 +554,11 @@ ccos(COMPLEX *c, NUMBER *epsilon) comfree(ctmp2); return clink(&_czero_); } - ctmp1 = cinv(ctmp2); - ctmp3 = cadd(ctmp2, ctmp1); + ctmp1 = c_inv(ctmp2); + ctmp3 = c_add(ctmp2, ctmp1); comfree(ctmp1); comfree(ctmp2); - ctmp1 = cscale(ctmp3, -1); + ctmp1 = c_scale(ctmp3, -1); comfree(ctmp3); r = comalloc(); qfree(r->real); @@ -576,7 +576,7 @@ ccos(COMPLEX *c, NUMBER *epsilon) * sin(x) = (exp(1i * x) - exp(-i1*x))/(2i). */ COMPLEX * -csin(COMPLEX *c, NUMBER *epsilon) +c_sin(COMPLEX *c, NUMBER *epsilon) { COMPLEX *r, *ctmp1, *ctmp2, *ctmp3; NUMBER *qtmp, *epsilon1; @@ -597,7 +597,7 @@ csin(COMPLEX *c, NUMBER *epsilon) ctmp1->real = neg ? qneg(c->imag) : qlink(c->imag); ctmp1->imag = neg ? qlink(c->real) : qneg(c->real); epsilon1 = qbitvalue(n - 2); - ctmp2 = cexp(ctmp1, epsilon1); + ctmp2 = c_exp(ctmp1, epsilon1); comfree(ctmp1); qfree(epsilon1); if (ctmp2 == NULL) @@ -606,11 +606,11 @@ csin(COMPLEX *c, NUMBER *epsilon) comfree(ctmp2); return clink(&_czero_); } - ctmp1 = cinv(ctmp2); - ctmp3 = csub(ctmp2, ctmp1); + ctmp1 = c_inv(ctmp2); + ctmp3 = c_sub(ctmp2, ctmp1); comfree(ctmp1); comfree(ctmp2); - ctmp1 = cscale(ctmp3, -1); + ctmp1 = c_scale(ctmp3, -1); comfree(ctmp3); r = comalloc(); qtmp = neg ? qlink(ctmp1->imag) : qneg(ctmp1->imag); @@ -627,105 +627,105 @@ csin(COMPLEX *c, NUMBER *epsilon) COMPLEX * -ccosh(COMPLEX *c, NUMBER *epsilon) +c_cosh(COMPLEX *c, NUMBER *epsilon) { COMPLEX *tmp1, *tmp2, *tmp3; - tmp1 = cexp(c, epsilon); + tmp1 = c_exp(c, epsilon); if (tmp1 == NULL) return NULL; - tmp2 = cneg(c); - tmp3 = cexp(tmp2, epsilon); + tmp2 = c_neg(c); + tmp3 = c_exp(tmp2, epsilon); comfree(tmp2); if (tmp3 == NULL) return NULL; - tmp2 = cadd(tmp1, tmp3); + tmp2 = c_add(tmp1, tmp3); comfree(tmp1); comfree(tmp3); - tmp1 = cscale(tmp2, -1); + tmp1 = c_scale(tmp2, -1); comfree(tmp2); return tmp1; } COMPLEX * -csinh(COMPLEX *c, NUMBER *epsilon) +c_sinh(COMPLEX *c, NUMBER *epsilon) { COMPLEX *tmp1, *tmp2, *tmp3; - tmp1 = cexp(c, epsilon); + tmp1 = c_exp(c, epsilon); if (tmp1 == NULL) return NULL; - tmp2 = cneg(c); - tmp3 = cexp(tmp2, epsilon); + tmp2 = c_neg(c); + tmp3 = c_exp(tmp2, epsilon); comfree(tmp2); if (tmp3 == NULL) return NULL; - tmp2 = csub(tmp1, tmp3); + tmp2 = c_sub(tmp1, tmp3); comfree(tmp1); comfree(tmp3); - tmp1 = cscale(tmp2, -1); + tmp1 = c_scale(tmp2, -1); comfree(tmp2); return tmp1; } COMPLEX * -casin(COMPLEX *c, NUMBER *epsilon) +c_asin(COMPLEX *c, NUMBER *epsilon) { COMPLEX *tmp1, *tmp2; - tmp1 = cmul(&_conei_, c); - tmp2 = casinh(tmp1, epsilon); + tmp1 = c_mul(&_conei_, c); + tmp2 = c_asinh(tmp1, epsilon); comfree(tmp1); - tmp1 = cdiv(tmp2, &_conei_); + tmp1 = c_div(tmp2, &_conei_); comfree(tmp2); return tmp1; } COMPLEX * -cacos(COMPLEX *c, NUMBER *epsilon) +c_acos(COMPLEX *c, NUMBER *epsilon) { COMPLEX *tmp1, *tmp2; - tmp1 = csquare(c); - tmp2 = csub(&_cone_, tmp1); + tmp1 = c_square(c); + tmp2 = c_sub(&_cone_, tmp1); comfree(tmp1); - tmp1 = csqrt(tmp2, epsilon, 24); + tmp1 = c_sqrt(tmp2, epsilon, 24); comfree(tmp2); - tmp2 = cmul(&_conei_, tmp1); + tmp2 = c_mul(&_conei_, tmp1); comfree(tmp1); - tmp1 = cadd(c, tmp2); + tmp1 = c_add(c, tmp2); comfree(tmp2); - tmp2 = cln(tmp1, epsilon); + tmp2 = c_ln(tmp1, epsilon); comfree(tmp1); - tmp1 = cdiv(tmp2, &_conei_); + tmp1 = c_div(tmp2, &_conei_); comfree(tmp2); return tmp1; } COMPLEX * -casinh(COMPLEX *c, NUMBER *epsilon) +c_asinh(COMPLEX *c, NUMBER *epsilon) { COMPLEX *tmp1, *tmp2, *tmp3; BOOL neg; neg = qisneg(c->real); - tmp1 = neg ? cneg(c) : clink(c); - tmp2 = csquare(tmp1); - tmp3 = cadd(&_cone_, tmp2); + tmp1 = neg ? c_neg(c) : clink(c); + tmp2 = c_square(tmp1); + tmp3 = c_add(&_cone_, tmp2); comfree(tmp2); - tmp2 = csqrt(tmp3, epsilon, 24); + tmp2 = c_sqrt(tmp3, epsilon, 24); comfree(tmp3); - tmp3 = cadd(tmp2, tmp1); + tmp3 = c_add(tmp2, tmp1); comfree(tmp1); comfree(tmp2); - tmp1 = cln(tmp3, epsilon); + tmp1 = c_ln(tmp3, epsilon); comfree(tmp3); if (neg) { - tmp2 = cneg(tmp1); + tmp2 = c_neg(tmp1); comfree(tmp1); return tmp2; } @@ -734,153 +734,153 @@ casinh(COMPLEX *c, NUMBER *epsilon) COMPLEX * -cacosh(COMPLEX *c, NUMBER *epsilon) +c_acosh(COMPLEX *c, NUMBER *epsilon) { COMPLEX *tmp1, *tmp2; - tmp1 = csquare(c); - tmp2 = csub(tmp1, &_cone_); + tmp1 = c_square(c); + tmp2 = c_sub(tmp1, &_cone_); comfree(tmp1); - tmp1 = csqrt(tmp2, epsilon, 24); + tmp1 = c_sqrt(tmp2, epsilon, 24); comfree(tmp2); - tmp2 = cadd(c, tmp1); + tmp2 = c_add(c, tmp1); comfree(tmp1); - tmp1 = cln(tmp2, epsilon); + tmp1 = c_ln(tmp2, epsilon); comfree(tmp2); return tmp1; } COMPLEX * -catan(COMPLEX *c, NUMBER *epsilon) +c_atan(COMPLEX *c, NUMBER *epsilon) { COMPLEX *tmp1, *tmp2, *tmp3; if (qiszero(c->real) && qisunit(c->imag)) return NULL; - tmp1 = csub(&_conei_, c); - tmp2 = cadd(&_conei_, c); - tmp3 = cdiv(tmp1, tmp2); + tmp1 = c_sub(&_conei_, c); + tmp2 = c_add(&_conei_, c); + tmp3 = c_div(tmp1, tmp2); comfree(tmp1); comfree(tmp2); - tmp1 = cln(tmp3, epsilon); + tmp1 = c_ln(tmp3, epsilon); comfree(tmp3); - tmp2 = cscale(tmp1, -1); + tmp2 = c_scale(tmp1, -1); comfree(tmp1); - tmp1 = cdiv(tmp2, &_conei_); + tmp1 = c_div(tmp2, &_conei_); comfree(tmp2); return tmp1; } COMPLEX * -cacot(COMPLEX *c, NUMBER *epsilon) +c_acot(COMPLEX *c, NUMBER *epsilon) { COMPLEX *tmp1, *tmp2, *tmp3; if (qiszero(c->real) && qisunit(c->imag)) return NULL; - tmp1 = cadd(c, &_conei_); - tmp2 = csub(c, &_conei_); - tmp3 = cdiv(tmp1, tmp2); + tmp1 = c_add(c, &_conei_); + tmp2 = c_sub(c, &_conei_); + tmp3 = c_div(tmp1, tmp2); comfree(tmp1); comfree(tmp2); - tmp1 = cln(tmp3, epsilon); + tmp1 = c_ln(tmp3, epsilon); comfree(tmp3); - tmp2 = cscale(tmp1, -1); + tmp2 = c_scale(tmp1, -1); comfree(tmp1); - tmp1 = cdiv(tmp2, &_conei_); + tmp1 = c_div(tmp2, &_conei_); comfree(tmp2); return tmp1; } COMPLEX * -casec(COMPLEX *c, NUMBER *epsilon) +c_asec(COMPLEX *c, NUMBER *epsilon) { COMPLEX *tmp1, *tmp2; - tmp1 = cinv(c); - tmp2 = cacos(tmp1, epsilon); + tmp1 = c_inv(c); + tmp2 = c_acos(tmp1, epsilon); comfree(tmp1); return tmp2; } COMPLEX * -cacsc(COMPLEX *c, NUMBER *epsilon) +c_acsc(COMPLEX *c, NUMBER *epsilon) { COMPLEX *tmp1, *tmp2; - tmp1 = cinv(c); - tmp2 = casin(tmp1, epsilon); + tmp1 = c_inv(c); + tmp2 = c_asin(tmp1, epsilon); comfree(tmp1); return tmp2; } COMPLEX * -catanh(COMPLEX *c, NUMBER *epsilon) +c_atanh(COMPLEX *c, NUMBER *epsilon) { COMPLEX *tmp1, *tmp2, *tmp3; if (qiszero(c->imag) && qisunit(c->real)) return NULL; - tmp1 = cadd(&_cone_, c); - tmp2 = csub(&_cone_, c); - tmp3 = cdiv(tmp1, tmp2); + tmp1 = c_add(&_cone_, c); + tmp2 = c_sub(&_cone_, c); + tmp3 = c_div(tmp1, tmp2); comfree(tmp1); comfree(tmp2); - tmp1 = cln(tmp3, epsilon); + tmp1 = c_ln(tmp3, epsilon); comfree(tmp3); - tmp2 = cscale(tmp1, -1); + tmp2 = c_scale(tmp1, -1); comfree(tmp1); return tmp2; } COMPLEX * -cacoth(COMPLEX *c, NUMBER *epsilon) +c_acoth(COMPLEX *c, NUMBER *epsilon) { COMPLEX *tmp1, *tmp2, *tmp3; if (qiszero(c->imag) && qisunit(c->real)) return NULL; - tmp1 = cadd(c, &_cone_); - tmp2 = csub(c, &_cone_); - tmp3 = cdiv(tmp1, tmp2); + tmp1 = c_add(c, &_cone_); + tmp2 = c_sub(c, &_cone_); + tmp3 = c_div(tmp1, tmp2); comfree(tmp1); comfree(tmp2); - tmp1 = cln(tmp3, epsilon); + tmp1 = c_ln(tmp3, epsilon); comfree(tmp3); - tmp2 = cscale(tmp1, -1); + tmp2 = c_scale(tmp1, -1); comfree(tmp1); return tmp2; } COMPLEX * -casech(COMPLEX *c, NUMBER *epsilon) +c_asech(COMPLEX *c, NUMBER *epsilon) { COMPLEX *tmp1, *tmp2; - tmp1 = cinv(c); - tmp2 = cacosh(tmp1, epsilon); + tmp1 = c_inv(c); + tmp2 = c_acosh(tmp1, epsilon); comfree(tmp1); return tmp2; } COMPLEX * -cacsch(COMPLEX *c, NUMBER *epsilon) +c_acsch(COMPLEX *c, NUMBER *epsilon) { COMPLEX *tmp1, *tmp2; - tmp1 = cinv(c); - tmp2 = casinh(tmp1, epsilon); + tmp1 = c_inv(c); + tmp2 = c_asinh(tmp1, epsilon); comfree(tmp1); return tmp2; } COMPLEX * -cgd(COMPLEX *c, NUMBER *epsilon) +c_gd(COMPLEX *c, NUMBER *epsilon) { COMPLEX *tmp1, *tmp2, *tmp3; NUMBER *q1, *q2; @@ -947,30 +947,30 @@ cgd(COMPLEX *c, NUMBER *epsilon) return tmp1; } neg = qisneg(c->real); - tmp1 = neg ? cneg(c) : clink(c); - tmp2 = cexp(tmp1, epsilon); + tmp1 = neg ? c_neg(c) : clink(c); + tmp2 = c_exp(tmp1, epsilon); comfree(tmp1); if (tmp2 == NULL) return NULL; - tmp1 = cmul(&_conei_, tmp2); - tmp3 = cadd(&_conei_, tmp2); + tmp1 = c_mul(&_conei_, tmp2); + tmp3 = c_add(&_conei_, tmp2); comfree(tmp2); - tmp2 = cadd(tmp1, &_cone_); + tmp2 = c_add(tmp1, &_cone_); comfree(tmp1); if (ciszero(tmp2) || ciszero(tmp3)) { comfree(tmp2); comfree(tmp3); return NULL; } - tmp1 = cdiv(tmp2, tmp3); + tmp1 = c_div(tmp2, tmp3); comfree(tmp2); comfree(tmp3); - tmp2 = cln(tmp1, epsilon); + tmp2 = c_ln(tmp1, epsilon); comfree(tmp1); - tmp1 = cdiv(tmp2, &_conei_); + tmp1 = c_div(tmp2, &_conei_); comfree(tmp2); if (neg) { - tmp2 = cneg(tmp1); + tmp2 = c_neg(tmp1); comfree(tmp1); return tmp2; } @@ -979,16 +979,16 @@ cgd(COMPLEX *c, NUMBER *epsilon) COMPLEX * -cagd(COMPLEX *c, NUMBER *epsilon) +c_agd(COMPLEX *c, NUMBER *epsilon) { COMPLEX *tmp1, *tmp2; - tmp1 = cmul(&_conei_, c); - tmp2 = cgd(tmp1, epsilon); + tmp1 = c_mul(&_conei_, c); + tmp2 = c_gd(tmp1, epsilon); comfree(tmp1); if (tmp2 == NULL) return NULL; - tmp1 = cdiv(tmp2, &_conei_); + tmp1 = c_div(tmp2, &_conei_); comfree(tmp2); return tmp1; } @@ -1000,7 +1000,7 @@ cagd(COMPLEX *c, NUMBER *epsilon) * q1 * cos(q2) + q1 * sin(q2) * i. */ COMPLEX * -cpolar(NUMBER *q1, NUMBER *q2, NUMBER *epsilon) +c_polar(NUMBER *q1, NUMBER *q2, NUMBER *epsilon) { COMPLEX *r; NUMBER *tmp, *cos, *sin; @@ -1042,7 +1042,7 @@ cpolar(NUMBER *q1, NUMBER *q2, NUMBER *epsilon) * specified error. */ COMPLEX * -cpower(COMPLEX *c1, COMPLEX *c2, NUMBER *epsilon) +c_power(COMPLEX *c1, COMPLEX *c2, NUMBER *epsilon) { COMPLEX *ctmp1, *ctmp2; long k1, k2, k, m1, m2, m, n; @@ -1099,11 +1099,11 @@ cpower(COMPLEX *c1, COMPLEX *c2, NUMBER *epsilon) if (k < n) return clink(&_czero_); epsilon1 = qbitvalue(n - k - m - 2); - ctmp1 = cln(c1, epsilon1); + ctmp1 = c_ln(c1, epsilon1); qfree(epsilon1); - ctmp2 = cmul(ctmp1, c2); + ctmp2 = c_mul(ctmp1, c2); comfree(ctmp1); - ctmp1 = cexp(ctmp2, epsilon); + ctmp1 = c_exp(ctmp2, epsilon); comfree(ctmp2); return ctmp1; } @@ -1165,7 +1165,7 @@ cprintfr(COMPLEX *c) NUMBER * -cilog(COMPLEX *c, ZVALUE base) +c_ilog(COMPLEX *c, ZVALUE base) { NUMBER *qr, *qi; diff --git a/commath.c b/commath.c index d14a4c4..de82857 100644 --- a/commath.c +++ b/commath.c @@ -17,8 +17,8 @@ * received a copy with calc; if not, write to Free Software Foundation, Inc. * 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. * - * @(#) $Revision: 29.3 $ - * @(#) $Id: commath.c,v 29.3 2002/03/12 09:38:26 chongo Exp $ + * @(#) $Revision: 29.4 $ + * @(#) $Id: commath.c,v 29.4 2005/10/18 10:43:49 chongo Exp $ * @(#) $Source: /usr/local/src/cmd/calc/RCS/commath.c,v $ * * Under source code control: 1990/02/15 01:48:10 @@ -42,7 +42,7 @@ static COMPLEX _cnegone_ = { &_qnegone_, &_qzero_, 1 }; * Add two complex numbers. */ COMPLEX * -cadd(COMPLEX *c1, COMPLEX *c2) +c_add(COMPLEX *c1, COMPLEX *c2) { COMPLEX *r; @@ -67,7 +67,7 @@ cadd(COMPLEX *c1, COMPLEX *c2) * Subtract two complex numbers. */ COMPLEX * -csub(COMPLEX *c1, COMPLEX *c2) +c_sub(COMPLEX *c1, COMPLEX *c2) { COMPLEX *r; @@ -98,7 +98,7 @@ csub(COMPLEX *c1, COMPLEX *c2) * Then (a+bi) * (c+di) = (q2 - q3) + (q1 - q2 - q3)i. */ COMPLEX * -cmul(COMPLEX *c1, COMPLEX *c2) +c_mul(COMPLEX *c1, COMPLEX *c2) { COMPLEX *r; NUMBER *q1, *q2, *q3, *q4; @@ -110,9 +110,9 @@ cmul(COMPLEX *c1, COMPLEX *c2) if (cisone(c2)) return clink(c1); if (cisreal(c2)) - return cmulq(c1, c2->real); + return c_mulq(c1, c2->real); if (cisreal(c1)) - return cmulq(c2, c1->real); + return c_mulq(c2, c1->real); /* * Need to do the full calculation. */ @@ -141,7 +141,7 @@ cmul(COMPLEX *c1, COMPLEX *c2) * Square a complex number. */ COMPLEX * -csquare(COMPLEX *c) +c_square(COMPLEX *c) { COMPLEX *r; NUMBER *q1, *q2; @@ -183,7 +183,7 @@ csquare(COMPLEX *c) * Divide two complex numbers. */ COMPLEX * -cdiv(COMPLEX *c1, COMPLEX *c2) +c_div(COMPLEX *c1, COMPLEX *c2) { COMPLEX *r; NUMBER *q1, *q2, *q3, *den; @@ -254,7 +254,7 @@ cdiv(COMPLEX *c1, COMPLEX *c2) * Invert a complex number. */ COMPLEX * -cinv(COMPLEX *c) +c_inv(COMPLEX *c) { COMPLEX *r; NUMBER *q1, *q2, *den; @@ -296,7 +296,7 @@ cinv(COMPLEX *c) * Negate a complex number. */ COMPLEX * -cneg(COMPLEX *c) +c_neg(COMPLEX *c) { COMPLEX *r; @@ -320,7 +320,7 @@ cneg(COMPLEX *c) * This means take the integer part of both components. */ COMPLEX * -cint(COMPLEX *c) +c_int(COMPLEX *c) { COMPLEX *r; @@ -340,7 +340,7 @@ cint(COMPLEX *c) * This means take the fractional part of both components. */ COMPLEX * -cfrac(COMPLEX *c) +c_frac(COMPLEX *c) { COMPLEX *r; @@ -360,7 +360,7 @@ cfrac(COMPLEX *c) * This negates the complex part. */ COMPLEX * -cconj(COMPLEX *c) +c_conj(COMPLEX *c) { COMPLEX *r; @@ -417,7 +417,7 @@ c_imag(COMPLEX *c) * Add a real number to a complex number. */ COMPLEX * -caddq(COMPLEX *c, NUMBER *q) +c_addq(COMPLEX *c, NUMBER *q) { COMPLEX *r; @@ -436,7 +436,7 @@ caddq(COMPLEX *c, NUMBER *q) * Subtract a real number from a complex number. */ COMPLEX * -csubq(COMPLEX *c, NUMBER *q) +c_subq(COMPLEX *c, NUMBER *q) { COMPLEX *r; @@ -456,7 +456,7 @@ csubq(COMPLEX *c, NUMBER *q) * number of bits. Negative values shift to the right. */ COMPLEX * -cshift(COMPLEX *c, long n) +c_shift(COMPLEX *c, long n) { COMPLEX *r; @@ -475,7 +475,7 @@ cshift(COMPLEX *c, long n) * Scale a complex number by a power of two. */ COMPLEX * -cscale(COMPLEX *c, long n) +c_scale(COMPLEX *c, long n) { COMPLEX *r; @@ -494,7 +494,7 @@ cscale(COMPLEX *c, long n) * Multiply a complex number by a real number. */ COMPLEX * -cmulq(COMPLEX *c, NUMBER *q) +c_mulq(COMPLEX *c, NUMBER *q) { COMPLEX *r; @@ -503,7 +503,7 @@ cmulq(COMPLEX *c, NUMBER *q) if (qisone(q)) return clink(c); if (qisnegone(q)) - return cneg(c); + return c_neg(c); r = comalloc(); qfree(r->real); qfree(r->imag); @@ -517,7 +517,7 @@ cmulq(COMPLEX *c, NUMBER *q) * Divide a complex number by a real number. */ COMPLEX * -cdivq(COMPLEX *c, NUMBER *q) +c_divq(COMPLEX *c, NUMBER *q) { COMPLEX *r; @@ -528,7 +528,7 @@ cdivq(COMPLEX *c, NUMBER *q) if (qisone(q)) return clink(c); if (qisnegone(q)) - return cneg(c); + return c_neg(c); r = comalloc(); qfree(r->real); qfree(r->imag); @@ -564,7 +564,7 @@ qqtoc(NUMBER *q1, NUMBER *q2) * and TRUE if they differ. */ BOOL -ccmp(COMPLEX *c1, COMPLEX *c2) +c_cmp(COMPLEX *c1, COMPLEX *c2) { BOOL i; @@ -581,7 +581,7 @@ ccmp(COMPLEX *c1, COMPLEX *c2) * imaginary parts of the two numbers. */ COMPLEX * -crel(COMPLEX *c1, COMPLEX *c2) +c_rel(COMPLEX *c1, COMPLEX *c2) { COMPLEX *c; diff --git a/config.c b/config.c index 54d9fb0..cb4bf2f 100644 --- a/config.c +++ b/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.14 $ - * @(#) $Id: config.c,v 29.14 2004/02/25 23:56:13 chongo Exp $ + * @(#) $Revision: 29.15 $ + * @(#) $Id: config.c,v 29.15 2005/12/12 06:45:41 chongo Exp $ * @(#) $Source: /usr/local/src/cmd/calc/RCS/config.c,v $ * * Under source code control: 1991/07/20 00:21:56 @@ -432,7 +432,7 @@ setconfig(int type, VALUE *vp) NUMBER *q; CONFIG *newconf; /* new configuration to set */ long temp; - LEN len; + LEN len = 0; char *p; switch (type) { diff --git a/custom.c b/custom.c index 0c9e49c..ea5df9f 100644 --- a/custom.c +++ b/custom.c @@ -19,7 +19,7 @@ * * @(#) $Revision: 29.4 $ * @(#) $Id: custom.c,v 29.4 2004/02/25 23:54:40 chongo Exp $ - * @(#) $Source: /usr/local/src/cmd/calc/custom/../RCS/custom.c,v $ + * @(#) $Source: /usr/local/src/cmd/calc/RCS/custom.c,v $ * * Under source code control: 1997/03/03 04:53:08 * File existed as early as: 1997 diff --git a/custom/HOW_TO_ADD b/custom/HOW_TO_ADD index 2bfa2fa..36395df 100644 --- a/custom/HOW_TO_ADD +++ b/custom/HOW_TO_ADD @@ -41,7 +41,6 @@ Step 1: Do some background work custom.c custom.h - custom/custom.h custom/custtbl.c custom/c_*.[ch] custom/*.cal @@ -648,8 +647,8 @@ Step 12: Contribute ## 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: HOW_TO_ADD,v 29.4 2004/07/29 08:38:05 chongo Exp $ +## @(#) $Revision: 29.5 $ +## @(#) $Id: HOW_TO_ADD,v 29.5 2005/10/18 11:18:34 chongo Exp $ ## @(#) $Source: /usr/local/src/cmd/calc/custom/RCS/HOW_TO_ADD,v $ ## ## Under source code control: 1997/03/10 03:03:21 diff --git a/custom/custtbl.c b/custom/custtbl.c index 208dd80..b056b4e 100644 --- a/custom/custtbl.c +++ b/custom/custtbl.c @@ -17,8 +17,8 @@ * received a copy with calc; if not, write to Free Software Foundation, Inc. * 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. * - * @(#) $Revision: 29.3 $ - * @(#) $Id: custtbl.c,v 29.3 2004/07/29 08:37:53 chongo Exp $ + * @(#) $Revision: 29.4 $ + * @(#) $Id: custtbl.c,v 29.4 2005/02/05 06:16:19 chongo Exp $ * @(#) $Source: /usr/local/src/cmd/calc/custom/RCS/custtbl.c,v $ * * Under source code control: 1997/03/09 02:28:54 @@ -106,7 +106,7 @@ CONST struct custom cust[] = { { "sysinfo", "return a calc #define value", 0, 1, c_sysinfo }, - { "pzasusb8", "print ZCALUE as USB8", + { "pzasusb8", "print ZVALUE as USB8", 0, 1, c_pzasusb8 }, { "pmodm127", "calculate q mod 2^(2^127-1)", diff --git a/custom/pzasusb8 b/custom/pzasusb8 index f536a5f..684caf1 100644 --- a/custom/pzasusb8 +++ b/custom/pzasusb8 @@ -19,7 +19,7 @@ DESCRIPTION custom("sysinfo", "BASEB") custom("sysinfo", "CALC_BYTE_ORDER") - foe details. + for details. This custom function is intented for testing of the general custom interface. @@ -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.2 $ -## @(#) $Id: pzasusb8,v 29.2 2000/06/07 14:03:03 chongo Exp $ +## @(#) $Revision: 29.3 $ +## @(#) $Id: pzasusb8,v 29.3 2005/10/18 11:18:34 chongo Exp $ ## @(#) $Source: /usr/local/src/cmd/calc/custom/RCS/pzasusb8,v $ ## ## Under source code control: 1999/10/06 04:05:43 diff --git a/func.c b/func.c index dfea819..c41a6c6 100644 --- a/func.c +++ b/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.15 $ - * @(#) $Id: func.c,v 29.15 2004/07/26 05:55:37 chongo Exp $ + * @(#) $Revision: 29.16 $ + * @(#) $Id: func.c,v 29.16 2005/10/18 10:43:49 chongo Exp $ * @(#) $Source: /usr/local/src/cmd/calc/RCS/func.c,v $ * * Under source code control: 1990/02/15 01:48:15 @@ -1974,7 +1974,7 @@ f_exp(int count, VALUE **vals) result.v_type = V_NUM; break; case V_COM: - c = cexp(vals[0]->v_com, eps); + c = c_exp(vals[0]->v_com, eps); if (c == NULL) return error_value(E_EXP3); result.v_com = c; @@ -2018,10 +2018,10 @@ f_ln(int count, VALUE **vals) ctmp.real = vals[0]->v_num; ctmp.imag = qlink(&_qzero_); ctmp.links = 1; - c = cln(&ctmp, err); + c = c_ln(&ctmp, err); break; case V_COM: - c = cln(vals[0]->v_com, err); + c = c_ln(vals[0]->v_com, err); break; default: return error_value(E_LN2); @@ -2059,7 +2059,7 @@ f_cos(int count, VALUE **vals) result.v_type = V_NUM; break; case V_COM: - c = ccos(vals[0]->v_com, eps); + c = c_cos(vals[0]->v_com, eps); if (c == NULL) return error_value(E_COS3); result.v_com = c; @@ -2099,7 +2099,7 @@ f_sin(int count, VALUE **vals) result.v_type = V_NUM; break; case V_COM: - c = csin(vals[0]->v_com, eps); + c = c_sin(vals[0]->v_com, eps); if (c == NULL) return error_value(E_SIN3); result.v_com = c; @@ -2142,9 +2142,9 @@ f_tan(int count, VALUE **vals) break; case V_COM: tmp1.v_type = V_COM; - tmp1.v_com = csin(vals[0]->v_com, err); + tmp1.v_com = c_sin(vals[0]->v_com, err); tmp2.v_type = V_COM; - tmp2.v_com = ccos(vals[0]->v_com, err); + tmp2.v_com = c_cos(vals[0]->v_com, err); divvalue(&tmp1, &tmp2, &result); comfree(tmp1.v_com); comfree(tmp2.v_com); @@ -2179,7 +2179,7 @@ f_sec(int count, VALUE **vals) break; case V_COM: tmp.v_type = V_COM; - tmp.v_com = ccos(vals[0]->v_com, err); + tmp.v_com = c_cos(vals[0]->v_com, err); invertvalue(&tmp, &result); comfree(tmp.v_com); break; @@ -2217,9 +2217,9 @@ f_cot(int count, VALUE **vals) break; case V_COM: tmp1.v_type = V_COM; - tmp1.v_com = ccos(vals[0]->v_com, err); + tmp1.v_com = c_cos(vals[0]->v_com, err); tmp2.v_type = V_COM; - tmp2.v_com = csin(vals[0]->v_com, err); + tmp2.v_com = c_sin(vals[0]->v_com, err); divvalue(&tmp1, &tmp2, &result); comfree(tmp1.v_com); comfree(tmp2.v_com); @@ -2257,7 +2257,7 @@ f_csc(int count, VALUE **vals) break; case V_COM: tmp.v_type = V_COM; - tmp.v_com = csin(vals[0]->v_com, err); + tmp.v_com = c_sin(vals[0]->v_com, err); invertvalue(&tmp, &result); comfree(tmp.v_com); break; @@ -2293,7 +2293,7 @@ f_sinh(int count, VALUE **vals) result.v_type = V_NUM; break; case V_COM: - c = csinh(vals[0]->v_com, eps); + c = c_sinh(vals[0]->v_com, eps); if (c == NULL) return error_value(E_SINH3); result.v_com = c; @@ -2336,7 +2336,7 @@ f_cosh(int count, VALUE **vals) result.v_type = V_NUM; break; case V_COM: - c = ccosh(vals[0]->v_com, eps); + c = c_cosh(vals[0]->v_com, eps); if (c == NULL) return error_value(E_COSH3); result.v_com = c; @@ -2379,9 +2379,9 @@ f_tanh(int count, VALUE **vals) break; case V_COM: tmp1.v_type = V_COM; - tmp1.v_com = csinh(vals[0]->v_com, err); + tmp1.v_com = c_sinh(vals[0]->v_com, err); tmp2.v_type = V_COM; - tmp2.v_com = ccosh(vals[0]->v_com, err); + tmp2.v_com = c_cosh(vals[0]->v_com, err); divvalue(&tmp1, &tmp2, &result); comfree(tmp1.v_com); comfree(tmp2.v_com); @@ -2420,9 +2420,9 @@ f_coth(int count, VALUE **vals) break; case V_COM: tmp1.v_type = V_COM; - tmp1.v_com = ccosh(vals[0]->v_com, err); + tmp1.v_com = c_cosh(vals[0]->v_com, err); tmp2.v_type = V_COM; - tmp2.v_com = csinh(vals[0]->v_com, err); + tmp2.v_com = c_sinh(vals[0]->v_com, err); divvalue(&tmp1, &tmp2, &result); comfree(tmp1.v_com); comfree(tmp2.v_com); @@ -2458,7 +2458,7 @@ f_sech(int count, VALUE **vals) break; case V_COM: tmp.v_type = V_COM; - tmp.v_com = ccosh(vals[0]->v_com, err); + tmp.v_com = c_cosh(vals[0]->v_com, err); invertvalue(&tmp, &result); comfree(tmp.v_com); break; @@ -2495,7 +2495,7 @@ f_csch(int count, VALUE **vals) break; case V_COM: tmp.v_type = V_COM; - tmp.v_com = csinh(vals[0]->v_com, err); + tmp.v_com = c_sinh(vals[0]->v_com, err); invertvalue(&tmp, &result); comfree(tmp.v_com); break; @@ -2528,7 +2528,7 @@ f_atan(int count, VALUE **vals) result.v_type = V_NUM; break; case V_COM: - tmp = catan(vals[0]->v_com, err); + tmp = c_atan(vals[0]->v_com, err); if (tmp == NULL) return error_value(E_LOGINF); result.v_type = V_COM; @@ -2568,7 +2568,7 @@ f_acot(int count, VALUE **vals) result.v_type = V_NUM; break; case V_COM: - tmp = cacot(vals[0]->v_com, err); + tmp = c_acot(vals[0]->v_com, err); if (tmp == NULL) return error_value(E_LOGINF); result.v_type = V_COM; @@ -2611,12 +2611,12 @@ f_asin(int count, VALUE **vals) qfree(tmp->real); tmp->real = qlink(vals[0]->v_num); result.v_type = V_COM; - result.v_com = casin(tmp, err); + result.v_com = c_asin(tmp, err); comfree(tmp); } break; case V_COM: - result.v_com = casin(vals[0]->v_com, err); + result.v_com = c_asin(vals[0]->v_com, err); result.v_type = V_COM; break; default: @@ -2657,12 +2657,12 @@ f_acos(int count, VALUE **vals) qfree(tmp->real); tmp->real = qlink(vals[0]->v_num); result.v_type = V_COM; - result.v_com = cacos(tmp, err); + result.v_com = c_acos(tmp, err); comfree(tmp); } break; case V_COM: - result.v_com = cacos(vals[0]->v_com, err); + result.v_com = c_acos(vals[0]->v_com, err); result.v_type = V_COM; break; default: @@ -2705,13 +2705,13 @@ f_asec(int count, VALUE **vals) tmp = comalloc(); qfree(tmp->real); tmp->real = qlink(vals[0]->v_num); - result.v_com = casec(tmp, err); + result.v_com = c_asec(tmp, err); result.v_type = V_COM; comfree(tmp); } break; case V_COM: - result.v_com = casec(vals[0]->v_com, err); + result.v_com = c_asec(vals[0]->v_com, err); result.v_type = V_COM; break; default: @@ -2758,13 +2758,13 @@ f_acsc(int count, VALUE **vals) tmp = comalloc(); qfree(tmp->real); tmp->real = qlink(vals[0]->v_num); - result.v_com = cacsc(tmp, err); + result.v_com = c_acsc(tmp, err); result.v_type = V_COM; comfree(tmp); } break; case V_COM: - result.v_com = cacsc(vals[0]->v_com, err); + result.v_com = c_acsc(vals[0]->v_com, err); result.v_type = V_COM; break; default: @@ -2806,7 +2806,7 @@ f_asinh(int count, VALUE **vals) result.v_type = V_NUM; break; case V_COM: - tmp = casinh(vals[0]->v_com, err); + tmp = c_asinh(vals[0]->v_com, err); result.v_type = V_COM; result.v_com = tmp; if (cisreal(tmp)) { @@ -2847,13 +2847,13 @@ f_acosh(int count, VALUE **vals) tmp = comalloc(); qfree(tmp->real); tmp->real = qlink(vals[0]->v_num); - result.v_com = cacosh(tmp, err); + result.v_com = c_acosh(tmp, err); result.v_type = V_COM; comfree(tmp); } break; case V_COM: - result.v_com = cacosh(vals[0]->v_com, err); + result.v_com = c_acosh(vals[0]->v_com, err); result.v_type = V_COM; break; default: @@ -2894,13 +2894,13 @@ f_atanh(int count, VALUE **vals) tmp = comalloc(); qfree(tmp->real); tmp->real = qlink(vals[0]->v_num); - result.v_com = catanh(tmp, err); + result.v_com = c_atanh(tmp, err); result.v_type = V_COM; comfree(tmp); } break; case V_COM: - result.v_com = catanh(vals[0]->v_com, err); + result.v_com = c_atanh(vals[0]->v_com, err); result.v_type = V_COM; break; default: @@ -2945,13 +2945,13 @@ f_acoth(int count, VALUE **vals) tmp = comalloc(); qfree(tmp->real); tmp->real = qlink(vals[0]->v_num); - result.v_com = cacoth(tmp, err); + result.v_com = c_acoth(tmp, err); result.v_type = V_COM; comfree(tmp); } break; case V_COM: - result.v_com = cacoth(vals[0]->v_com, err); + result.v_com = c_acoth(vals[0]->v_com, err); result.v_type = V_COM; break; default: @@ -2998,13 +2998,13 @@ f_asech(int count, VALUE **vals) tmp = comalloc(); qfree(tmp->real); tmp->real = qlink(vals[0]->v_num); - result.v_com = casech(tmp, err); + result.v_com = c_asech(tmp, err); result.v_type = V_COM; comfree(tmp); } break; case V_COM: - result.v_com = casech(vals[0]->v_com, err); + result.v_com = c_asech(vals[0]->v_com, err); result.v_type = V_COM; break; default: @@ -3051,13 +3051,13 @@ f_acsch(int count, VALUE **vals) tmp = comalloc(); qfree(tmp->real); tmp->real = qlink(vals[0]->v_num); - result.v_com = cacsch(tmp, err); + result.v_com = c_acsch(tmp, err); result.v_type = V_COM; comfree(tmp); } break; case V_COM: - result.v_com = cacsch(vals[0]->v_com, err); + result.v_com = c_acsch(vals[0]->v_com, err); result.v_type = V_COM; break; default: @@ -3105,11 +3105,11 @@ f_gd(int count, VALUE **vals) tmp = comalloc(); qfree(tmp->real); tmp->real = qlink(vals[0]->v_num); - result.v_com = cgd(tmp, eps); + result.v_com = c_gd(tmp, eps); comfree(tmp); break; case V_COM: - result.v_com = cgd(vals[0]->v_com, eps); + result.v_com = c_gd(vals[0]->v_com, eps); break; default: return error_value(E_GD2); @@ -3154,11 +3154,11 @@ f_agd(int count, VALUE **vals) tmp = comalloc(); qfree(tmp->real); tmp->real = qlink(vals[0]->v_num); - result.v_com = cagd(tmp, eps); + result.v_com = c_agd(tmp, eps); comfree(tmp); break; case V_COM: - result.v_com = cagd(vals[0]->v_com, eps); + result.v_com = c_agd(vals[0]->v_com, eps); break; default: return error_value(E_AGD2); @@ -3652,7 +3652,7 @@ f_polar(int count, VALUE **vals) return error_value(E_POLAR1); if ((vp->v_type != V_NUM) || qisneg(vp->v_num) || qiszero(vp->v_num)) return error_value(E_POLAR2); - c = cpolar(vals[0]->v_num, vals[1]->v_num, vp->v_num); + c = c_polar(vals[0]->v_num, vals[1]->v_num, vp->v_num); result.v_com = c; result.v_type = V_COM; if (cisreal(c)) { @@ -3678,7 +3678,7 @@ f_ilog(VALUE *v1, VALUE *v2) res.v_num = qilog(v1->v_num, v2->v_num->num); break; case V_COM: - res.v_num = cilog(v1->v_com, v2->v_num->num); + res.v_num = c_ilog(v1->v_com, v2->v_num->num); break; default: return error_value(E_ILOG); @@ -3703,7 +3703,7 @@ f_ilog2(VALUE *vp) res.v_num = qilog(vp->v_num, _two_); break; case V_COM: - res.v_num = cilog(vp->v_com, _two_); + res.v_num = c_ilog(vp->v_com, _two_); break; default: return error_value(E_ILOG2); @@ -3728,7 +3728,7 @@ f_ilog10(VALUE *vp) res.v_num = qilog(vp->v_num, _ten_); break; case V_COM: - res.v_num = cilog(vp->v_com, _ten_); + res.v_num = c_ilog(vp->v_com, _ten_); break; default: return error_value(E_ILOG10); diff --git a/help/agd b/help/agd index 229f154..ab8aa0c 100644 --- a/help/agd +++ b/help/agd @@ -51,7 +51,7 @@ LIMITS none LINK LIBRARY - COMPLEX *cagd(COMPLEX *x, NUMBER *eps) + COMPLEX *c_agd(COMPLEX *x, NUMBER *eps) SEE ALSO gd, exp, ln, sin, sinh, etc. @@ -72,8 +72,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: agd,v 29.2 2000/06/07 14:02:33 chongo Exp $ +## @(#) $Revision: 29.3 $ +## @(#) $Id: agd,v 29.3 2005/10/18 10:48:29 chongo Exp $ ## @(#) $Source: /usr/local/src/cmd/calc/help/RCS/agd,v $ ## ## Under source code control: 1997/09/06 20:03:34 diff --git a/help/cos b/help/cos index a010527..dd5e336 100644 --- a/help/cos +++ b/help/cos @@ -30,7 +30,7 @@ LIMITS LINK LIBRARY NUMBER *qcos(NUMBER *x, NUMBER *eps) - COMPLEX *ccos(COMPLEX *x, NUMBER *eps) + COMPLEX *c_cos(COMPLEX *x, NUMBER *eps) SEE ALSO sin, tan, sec, csc, cot, epsilon @@ -51,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.2 $ -## @(#) $Id: cos,v 29.2 2000/06/07 14:02:33 chongo Exp $ +## @(#) $Revision: 29.3 $ +## @(#) $Id: cos,v 29.3 2005/10/18 10:48:29 chongo Exp $ ## @(#) $Source: /usr/local/src/cmd/calc/help/RCS/cos,v $ ## ## Under source code control: 1994/03/19 01:40:27 diff --git a/help/exp b/help/exp index 63e03dc..2acd076 100644 --- a/help/exp +++ b/help/exp @@ -35,7 +35,7 @@ LIMITS LINK LIBRARY NUMBER *qexp(NUMBER *x, NUMBER *eps) - COMPLEX *cexp(COMPLEX *x, NUMBER *eps) + COMPLEX *c_exp(COMPLEX *x, NUMBER *eps) SEE ALSO ln, cosh, sinh, tanh @@ -56,8 +56,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: exp,v 29.2 2000/06/07 14:02:33 chongo Exp $ +## @(#) $Revision: 29.3 $ +## @(#) $Id: exp,v 29.3 2005/10/18 10:48:29 chongo Exp $ ## @(#) $Source: /usr/local/src/cmd/calc/help/RCS/exp,v $ ## ## Under source code control: 1995/10/11 04:41:26 diff --git a/help/frac b/help/frac index ad84e09..c423c8a 100644 --- a/help/frac +++ b/help/frac @@ -35,7 +35,7 @@ LIMITS LINK LIBRARY NUMBER *qfrac(NUMBER *x) - COMPLEX *cfrac(COMPLEX *x) + COMPLEX *c_frac(COMPLEX *x) MATRIX *matfrac(MATRIX *x) SEE ALSO @@ -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.2 $ -## @(#) $Id: frac,v 29.2 2000/06/07 14:02:33 chongo Exp $ +## @(#) $Revision: 29.3 $ +## @(#) $Id: frac,v 29.3 2005/10/18 10:48:29 chongo Exp $ ## @(#) $Source: /usr/local/src/cmd/calc/help/RCS/frac,v $ ## ## Under source code control: 1995/12/18 03:30:59 diff --git a/help/gd b/help/gd index aaa6786..50eba28 100644 --- a/help/gd +++ b/help/gd @@ -45,7 +45,7 @@ LIMITS none LINK LIBRARY - COMPLEX *cgd(COMPLEX *x, NUMBER *eps) + COMPLEX *c_gd(COMPLEX *x, NUMBER *eps) SEE ALSO agd, exp, ln, sin, sinh, etc. @@ -66,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.2 $ -## @(#) $Id: gd,v 29.2 2000/06/07 14:02:33 chongo Exp $ +## @(#) $Revision: 29.3 $ +## @(#) $Id: gd,v 29.3 2005/10/18 10:48:29 chongo Exp $ ## @(#) $Source: /usr/local/src/cmd/calc/help/RCS/gd,v $ ## ## Under source code control: 1997/09/06 20:03:35 diff --git a/help/int b/help/int index 4296a82..0d313a5 100644 --- a/help/int +++ b/help/int @@ -34,7 +34,7 @@ LIMITS LINK LIBRARY NUMBER *qint(NUMBER *x) - COMPLEX *cint(COMPLEX *x) + COMPLEX *c_int(COMPLEX *x) MATRIX *matint(MATRIX *x) SEE ALSO @@ -56,8 +56,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: int,v 29.2 2000/06/07 14:02:33 chongo Exp $ +## @(#) $Revision: 29.3 $ +## @(#) $Id: int,v 29.3 2005/10/18 10:48:29 chongo Exp $ ## @(#) $Source: /usr/local/src/cmd/calc/help/RCS/int,v $ ## ## Under source code control: 1994/09/30 00:57:18 diff --git a/help/inverse b/help/inverse index 4b49202..a5aac60 100644 --- a/help/inverse +++ b/help/inverse @@ -42,7 +42,7 @@ LIMITS LINK LIBRARY void invertvalue(VALUE *x, VALUE *vres) NUMBER *qinv(NUMBER *x) - COMPLEX *cinv(COMPLEX *x) + COMPLEX *c_inv(COMPLEX *x) MATRIX *matinv(MATRIX *x) SEE ALSO @@ -63,8 +63,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: inverse,v 29.2 2000/06/07 14:02:33 chongo Exp $ +## @(#) $Revision: 29.3 $ +## @(#) $Id: inverse,v 29.3 2005/10/18 10:48:29 chongo Exp $ ## @(#) $Source: /usr/local/src/cmd/calc/help/RCS/inverse,v $ ## ## Under source code control: 1996/03/12 23:10:01 diff --git a/help/ln b/help/ln index 2f48892..0be4f57 100644 --- a/help/ln +++ b/help/ln @@ -29,7 +29,7 @@ LIMITS LINK LIBRARY NUMBER *qln(NUMBER *x, NUMBER *eps) - COMPLEX *cln(COMPLEX *x, NUMBER *eps) + COMPLEX *c_ln(COMPLEX *x, NUMBER *eps) SEE ALSO exp, acosh, asinh, atanh @@ -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.2 $ -## @(#) $Id: ln,v 29.2 2000/06/07 14:02:33 chongo Exp $ +## @(#) $Revision: 29.3 $ +## @(#) $Id: ln,v 29.3 2005/10/18 10:48:29 chongo Exp $ ## @(#) $Source: /usr/local/src/cmd/calc/help/RCS/ln,v $ ## ## Under source code control: 1995/10/11 04:41:26 diff --git a/help/mat b/help/mat index f01878c..ac1e255 100644 --- a/help/mat +++ b/help/mat @@ -1,185 +1,200 @@ NAME - mat - keyword to create a matrix value + mat - keyword to create a matrix value SYNOPSIS - mat [index-range-list] [ = {value_0. ...} ] - mat [] [= {value_0, ...}] - mat variable_1 ... [index-range-list] [ = {value_0, ...} ] - mat variable_1 ... [] [ = {value_0, ...} ] + mat [index-range-list] [ = {value_0. ...} ] + mat [] [= {value_0, ...}] + mat variable_1 ... [index-range-list] [ = {value_0, ...} ] + mat variable_1 ... [] [ = {value_0, ...} ] - mat [index-range-list_1[index-ranges-list_2] ... [ = { { ...} ...} ] + mat [index-range-list_1[index-ranges-list_2] ... [ = { { ...} ...} ] - decl id_1 id_2 ... [index-range-list] ... + decl id_1 id_2 ... [index-range-list] ... TYPES - index-range-list range_1 [, range_2, ...] up to 4 ranges - range_1, ... integer, or integer_1 : integer_2 - value, value_1, ... any - variable_1 ... lvalue - decl declarator = global, static or local - id_1, ... identifier + index-range-list range_1 [, range_2, ...] up to 4 ranges + range_1, ... integer, or integer_1 : integer_2 + value, value_1, ... any + variable_1 ... lvalue + decl declarator = global, static or local + id_1, ... identifier DESCRIPTION - The expression mat [index-range-list] returns a matrix value. - This may be assigned to one or more lvalues A, B, ... by either + The expression mat [index-range-list] returns a matrix value. + This may be assigned to one or more lvalues A, B, ... by either mat A B ... [index-range-list] - or + or A = B = ... = mat[index-range-list] - If a variable is specified by an expression that is not a symbol with - possibly object element specifiers, the expression should be enclosed - in parentheses. For example, parentheses are required in - mat (A[2]) [3] and mat (*p) [3] but mat P.x [3] is acceptable. + If a variable is specified by an expression that is not a symbol with + possibly object element specifiers, the expression should be enclosed + in parentheses. For example, parentheses are required in + mat (A[2]) [3] and mat (*p) [3] but mat P.x [3] is acceptable. - When an index-range is specified as integer_1 : integer_2, where - integer_1 and integer_2 are expressions which evaluate to integers, - the index-range consists of all integers from the minimum of the - two integers to the maximum of the two integers. For example, - mat[2:5, 0:4] and mat[5:2, 4:0] return the same matrix value. + When an index-range is specified as integer_1 : integer_2, where + integer_1 and integer_2 are expressions which evaluate to integers, + the index-range consists of all integers from the minimum of the + two integers to the maximum of the two integers. For example, + mat[2:5, 0:4] and mat[5:2, 4:0] return the same matrix value. - If an index-range is an expression which evaluates to an integer, - the range is as if specified by 0 : integer - 1. For example, - mat[4] and mat[0:3] return the same 4-element matrix; mat[-2] and - mat[-3:0] return the same 4-element matrix. + If an index-range is an expression which evaluates to an integer, + the range is as if specified by 0 : integer - 1. For example, + mat[4] and mat[0:3] return the same 4-element matrix; mat[-2] and + mat[-3:0] return the same 4-element matrix. - If the variable A has a matrix value, then for integer indices - i_1, i_2, ..., equal in number to the number of ranges specified at - its creation, and such that each index is in the corresponding range, - the matrix element associated with those index list is given as an - lvalue by the expressions A[i_1, i_2, ...]. + If the variable A has a matrix value, then for integer indices + i_1, i_2, ..., equal in number to the number of ranges specified at + its creation, and such that each index is in the corresponding range, + the matrix element associated with those index list is given as an + lvalue by the expressions A[i_1, i_2, ...]. - The elements of the matrix are stored internally as a linear array - in which locations are arranged in order of increasing indices. - For example, in order of location, the six element of A = mat [2,3] - are + The elements of the matrix are stored internally as a linear array + in which locations are arranged in order of increasing indices. + For example, in order of location, the six element of A = mat [2,3] + are A[0,0], A[0,1], A[0,2], A[1,0], A[1,,1], A[1,2]. - These elements may also be specified using the double-bracket operator - with a single integer index as in A[[0]], A[[1]], ..., A[[5]]. - If p is assigned the value &A[0.0], the address of A[[i]] for 0 <= i < 6 - is p + i as long as A exists and a new value is not assigned to A. + These elements may also be specified using the double-bracket operator + with a single integer index as in A[[0]], A[[1]], ..., A[[5]]. + If p is assigned the value &A[0.0], the address of A[[i]] for 0 <= i < 6 + is p + i as long as A exists and a new value is not assigned to A. - When a matrix is created, each element is initially assigned the - value zero. Other values may be assigned then or later using the - "= {...}" assignment operation. Thus + When a matrix is created, each element is initially assigned the + value zero. Other values may be assigned then or later using the + "= {...}" assignment operation. Thus A = {value_0, value_1, ...} - assigns the values value_0, value_1, ... to the elements A[[0]], - A[[1]], ... Any blank "value" is passed over. For example, + assigns the values value_0, value_1, ... to the elements A[[0]], + A[[1]], ... Any blank "value" is passed over. For example, A = {1, , 2} - will assign the value 1 to A[[0]], 2 to A[[2]] and leave all other - elements unchanged. Values may also be assigned to elements by - simple assignments, as in A[0,0] = 1, A[0,2] = 2; + will assign the value 1 to A[[0]], 2 to A[[2]] and leave all other + elements unchanged. Values may also be assigned to elements by + simple assignments, as in A[0,0] = 1, A[0,2] = 2; - If the index-range is left blank but an initializer list is specified - as in + If the index-range is left blank but an initializer list is specified + as in mat A[] = {1, 2 } B = mat[] = {1, , 3, } - the matrix created is one-dimensional. If the list contains a - positive number n of values or blanks, the result is as if the - range were specified by [n], i.e. the range of indices is from - 0 to n - 1. In the above examples, A is of size 2 with A[0] = 1 - and A[1] = 2; B is of size 4 with B[0] = 1, B[1] = B[3] = 0, - B[2] = 3. The specification mat[] = { } creates the same as mat[1]. + the matrix created is one-dimensional. If the list contains a + positive number n of values or blanks, the result is as if the + range were specified by [n], i.e. the range of indices is from + 0 to n - 1. In the above examples, A is of size 2 with A[0] = 1 + and A[1] = 2; B is of size 4 with B[0] = 1, B[1] = B[3] = 0, + B[2] = 3. The specification mat[] = { } creates the same as mat[1]. - If the index-range is left blank and no initializer list is specified, - as in mat C[] or C = mat[], the matrix assigned to C has zero - dimension; this has one element C[]. To assign a value using "= { ...}" - at the same time as creating C, parentheses are required as in - (mat[]) = {value} or (mat C[]) = {value}. Later a value may be - assigned to C[] by C[] = value or C = {value}. + If the index-range is left blank and no initializer list is specified, + as in mat C[] or C = mat[], the matrix assigned to C has zero + dimension; this has one element C[]. To assign a value using "= { ...}" + at the same time as creating C, parentheses are required as in + (mat[]) = {value} or (mat C[]) = {value}. Later a value may be + assigned to C[] by C[] = value or C = {value}. - The value assigned at any time to any element of a matrix can be of - any type - number, string, list, matrix, object of previously specified - type, etc. For some matrix operations there are of course conditions - that elements may have to satisfy: for example, addition of matrices - requires that addition of corresponding elements be possible. - If an element of a matrix is a structure for which indices or an - object element specifier is required, an element of that structure is - referred to by appropriate uses of [ ] or ., and so on if an element - of that element is required. For example, one may have an expressions - like + The value assigned at any time to any element of a matrix can be of + any type - number, string, list, matrix, object of previously specified + type, etc. For some matrix operations there are of course conditions + that elements may have to satisfy: for example, addition of matrices + requires that addition of corresponding elements be possible. + If an element of a matrix is a structure for which indices or an + object element specifier is required, an element of that structure is + referred to by appropriate uses of [ ] or ., and so on if an element + of that element is required. For example, one may have an expressions + like A[1,2][3].alpha[2]; - if A[1,2][3].alpha is a list with at least three elements, A[1,2][3] is - an object of a type like obj {alpha, beta}, A[1,2] is a matrix of - type mat[4] and A is a mat[2,3] matrix. When an element of a matrix - is a matrix and the total number of indices does not exceed 4, the - indices can be combined into one list, e.g. the A[1,2][3] in the - above example can be shortened to A[1,2,3]. (Unlike C, A[1,2] cannot - be expressed as A[1][2].) + if A[1,2][3].alpha is a list with at least three elements, A[1,2][3] is + an object of a type like obj {alpha, beta}, A[1,2] is a matrix of + type mat[4] and A is a mat[2,3] matrix. When an element of a matrix + is a matrix and the total number of indices does not exceed 4, the + indices can be combined into one list, e.g. the A[1,2][3] in the + above example can be shortened to A[1,2,3]. (Unlike C, A[1,2] cannot + be expressed as A[1][2].) - The function ismat(V) returns 1 if V is a matrix, 0 otherwise. + The function ismat(V) returns 1 if V is a matrix, 0 otherwise. - isident(V) returns 1 if V is a square matrix with diagonal elements 1, - off-diagonal elements zero, or a zero- or one-dimensional matrix with - every element 1; otherwise zero is returned. Thus isident(V) = 1 - indicates that for V * A and A * V where A is any matrix of - for which either product is defined and the elements of A are real - or complex numbers, that product will equal A. + isident(V) returns 1 if V is a square matrix with diagonal elements 1, + off-diagonal elements zero, or a zero- or one-dimensional matrix with + every element 1; otherwise zero is returned. Thus isident(V) = 1 + indicates that for V * A and A * V where A is any matrix of + for which either product is defined and the elements of A are real + or complex numbers, that product will equal A. - If V is matrix-valued, test(V) returns 0 if every element of V tests - as zero; otherwise 1 is returned. + If V is matrix-valued, test(V) returns 0 if every element of V tests + as zero; otherwise 1 is returned. - The dimension of a matrix A, i.e. the number of index-ranges in the - initial creation of the matrix, is returned by the function matdim(A). - For 1 <= i <= matdim(A), the minimum and maximum values for the i-th - index range are returned by matmin(A, i) and matmax(A,i), respectively. - The total number of elements in the matrix is returned by size(A). - The sum of the elements in the matrix is returned by matsum(A). + The dimension of a matrix A, i.e. the number of index-ranges in the + initial creation of the matrix, is returned by the function matdim(A). + For 1 <= i <= matdim(A), the minimum and maximum values for the i-th + index range are returned by matmin(A, i) and matmax(A,i), respectively. + The total number of elements in the matrix is returned by size(A). + The sum of the elements in the matrix is returned by matsum(A). - The default method of printing matrices is to give a line of information - about the matrix, and to list on separate lines up to 15 elements, - the indices and either the value (for numbers, strings, objects) or - some descriptive information for lists or matrices, etc. - Numbers are displayed in the current number-printing mode. - The maximum number of elements to be printed can be assigned - any nonnegative integer value m by config("maxprint", m). + The default method of printing matrices is to give a line of information + about the matrix, and to list on separate lines up to 15 elements, + the indices and either the value (for numbers, strings, objects) or + some descriptive information for lists or matrices, etc. + Numbers are displayed in the current number-printing mode. + The maximum number of elements to be printed can be assigned + any nonnegative integer value m by config("maxprint", m). - Users may define another method of printing matrices by defining a - function mat_print(M); for example, for a not too big 2-dimensional - matrix A it is a common practice to use a loop like: + Users may define another method of printing matrices by defining a + function mat_print(M); for example, for a not too big 2-dimensional + matrix A it is a common practice to use a loop like: + + define mat_print(A) { + local i,j; for (i = matmin(A,1); i <= matmax(A,1); i++) { + if (i != matmin(A,1)) + printf("\t"); for (j = matmin(A,2); j <= matmax(A,2); j++) - printf("%8d", A[i,j]; - print; - } + printf(" [%d,%d]: %e", i, j, A[i,j]); + if (i != matmax(A,1)) + printf("\n"); + } + } - The default printing may be restored by + So that when one defines a 2D matrix such as: + + mat X[2,3] = {1,2,3,4,5,6} + + then printing X results in: + + [0,0]: 1 [0,1]: 2 [0,2]: 3 + [1,0]: 4 [1,1]: 5 [1,2]: 6 + + The default printing may be restored by undefine mat_print; - - The keyword "mat" followed by two or more index-range-lists returns a - matrix with indices specified by the first list, whose elements are - matrices as determined by the later index-range-lists. For - example mat[2][3] is a 2-element matrix, each of whose elements has - as its value a 3-element matrix. Values may be assigned to the - elements of the innermost matrices by nested = {...} operations as in + The keyword "mat" followed by two or more index-range-lists returns a + matrix with indices specified by the first list, whose elements are + matrices as determined by the later index-range-lists. For + example mat[2][3] is a 2-element matrix, each of whose elements has + as its value a 3-element matrix. Values may be assigned to the + elements of the innermost matrices by nested = {...} operations as in mat [2][3] = {{1,2,3},{4,5,6}} - An example of the use of mat with a declarator is + An example of the use of mat with a declarator is global mat A B [2,3], C [4] - This creates, if they do not already exist, three global variables with - names A, B, C, and assigns to A and B the value mat[2,3] and to C mat[4]. + This creates, if they do not already exist, three global variables with + names A, B, C, and assigns to A and B the value mat[2,3] and to C mat[4]. - Some operations are defined for matrices. + Some operations are defined for matrices. - A == B + A == B Returns 1 if A and B are of the same "shape" and "corresponding" elements are equal; otherwise 0 is returned. Being of the same shape means they have the same dimension d, and for each i <= d, @@ -191,14 +206,14 @@ DESCRIPTION double-bracket indices; thus A == B implies that A[[i]] == B[[i]] for 0 <= i < size(A) == size(B). - A + B - A - B + A + B + A - B These are defined A and B have the same shape, the element with double-bracket index j being evaluated by A[[j]] + B[[j]] and A[[j]] - B[[j]], respectively. The index-ranges for the results are those for the matrix A. - A[i,j] + A[i,j] If A is two-dimensional, it is customary to speak of the indices i, j in A[i,j] as referring to rows and columns; the number of rows is matmax(A,1) - matmin(A,1) + 1; the number of columns if @@ -206,7 +221,7 @@ DESCRIPTION if it is two-dimensional and the number of rows is equal to the number of columns. - A * B + A * B Multiplication is defined provided certain conditions by the dimensions and shapes of A and B are satisfied. If both have dimension 2 and the column-index-list for A is the same as @@ -263,7 +278,7 @@ DESCRIPTION a matrix indexed in the same way as A with each element inverted. - The following functions are defined to return matrices with the same + The following functions are defined to return matrices with the same index-ranges as A and the specified operations performed on all elements of A. Here num is an arbitrary complex number (nonzero when it is a divisor), int an integer, rnd a rounding-type @@ -285,52 +300,52 @@ DESCRIPTION A % real A ^ int - If A and B are one-dimensional of the same size dp(A, B) returns + If A and B are one-dimensional of the same size dp(A, B) returns their dot-product, i.e. the sum of the products of corresponding elements. - If A and B are one-dimension and of size 3, cp(A, B) returns their + If A and B are one-dimension and of size 3, cp(A, B) returns their cross-product. - randperm(A) returns a matrix indexed the same as A in which the elements + randperm(A) returns a matrix indexed the same as A in which the elements of A have been randomly permuted. - sort(A) returns a matrix indexed the same as A in which the elements + sort(A) returns a matrix indexed the same as A in which the elements of A have been sorted. - If A is an lvalue whose current value is a matrix, matfill(A, v) + If A is an lvalue whose current value is a matrix, matfill(A, v) assigns the value v to every element of A, and if also, A is square, matfill(A, v1, v2) assigns v1 to the off-diagonal elements, v2 to the diagonal elements. To create and assign to A the unit n * n matrix, one may use matfill(mat A[n,n], 0, 1). - For a square matrix A, mattrace(A) returns the trace of A, i.e. the + For a square matrix A, mattrace(A) returns the trace of A, i.e. the sum of the diagonal elements. For zero- or one-dimensional A, mattrace(A) returns the sum of the elements of A. - For a two-dimensional matrix A, mattrans(A) returns the transpose + For a two-dimensional matrix A, mattrans(A) returns the transpose of A, i.e. if A is mat[m,n], it returns a mat[n,m] matrix with [i,j] element equal to A[j,i]. For zero- or one-dimensional A, mattrace(A) returns a matrix with the same value as A. - The functions search(A, value, start, end]) and - rsearch(A, value, start, end]) return the first or last index i - for which A[[i]] == value and start <= i < end, or if there is - no such index, the null value. For further information on default - values and the use of an "accept" function, see the help files for - search and rsearch. + The functions search(A, value, start, end]) and + rsearch(A, value, start, end]) return the first or last index i + for which A[[i]] == value and start <= i < end, or if there is + no such index, the null value. For further information on default + values and the use of an "accept" function, see the help files for + search and rsearch. - reverse(A) returns a matrix with the same index-lists as A but the - elements in reversed order. + reverse(A) returns a matrix with the same index-lists as A but the + elements in reversed order. - The copy and blkcpy functions may be used to copy data to a matrix from - a matrix or list, or from a matrix to a list. In copying from a - matrix to a matrix the matrices need not have the same dimension; - in effect they are treated as linear arrays. + The copy and blkcpy functions may be used to copy data to a matrix from + a matrix or list, or from a matrix to a list. In copying from a + matrix to a matrix the matrices need not have the same dimension; + in effect they are treated as linear arrays. EXAMPLE > obj point {x,y} - > mat A[5] = {1, 2+3i, "ab", mat[2] = {4,5}. obj point = {6,7}} + > mat A[5] = {1, 2+3i, "ab", mat[2] = {4,5}, obj point = {6,7}} > A mat [5] (5 elements, 5 nonzero): [0] = 1 @@ -381,20 +396,20 @@ EXAMPLE [3] = 4 LIMITS - The theoretical upper bound for the absolute values of indices is - 2^31 - 1, but the size of matrices that can be handled in practice will - be limited by the availability of memory and what is an acceptable - runtime. For example, although it may take only a fraction of a - second to invert a 10 * 10 matrix, it will probably take about 1000 - times as long to invert a 100 * 100 matrix. + The theoretical upper bound for the absolute values of indices is + 2^31 - 1, but the size of matrices that can be handled in practice will + be limited by the availability of memory and what is an acceptable + runtime. For example, although it may take only a fraction of a + second to invert a 10 * 10 matrix, it will probably take about 1000 + times as long to invert a 100 * 100 matrix. LINK LIBRARY - n/a + 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, det, inverse, + isident, test, config, search, rsearch, reverse, copy, blkcpy, dp, cp, + randperm, sort ## Copyright (C) 1999 Landon Curt Noll ## @@ -412,8 +427,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: mat,v 29.2 2000/06/07 14:02:33 chongo Exp $ +## @(#) $Revision: 29.4 $ +## @(#) $Id: mat,v 29.4 2005/10/18 10:08:45 chongo Exp $ ## @(#) $Source: /usr/local/src/cmd/calc/help/RCS/mat,v $ ## ## Under source code control: 1991/07/21 04:37:22 diff --git a/help/polar b/help/polar index dff89a7..36a6ac4 100644 --- a/help/polar +++ b/help/polar @@ -29,7 +29,7 @@ LIMITS none LINK LIBRARY - COMPLEX * cpolar(NUMBER *r, NUMBER *t, NUMBER *eps); + COMPLEX *c_polar(NUMBER *r, NUMBER *t, NUMBER *eps); SEE ALSO abs, arg, re, im @@ -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.2 $ -## @(#) $Id: polar,v 29.2 2000/06/07 14:02:33 chongo Exp $ +## @(#) $Revision: 29.3 $ +## @(#) $Id: polar,v 29.3 2005/10/18 10:48:29 chongo Exp $ ## @(#) $Source: /usr/local/src/cmd/calc/help/RCS/polar,v $ ## ## Under source code control: 1995/10/25 04:03:46 diff --git a/help/power b/help/power index e5d4210..685d9c6 100644 --- a/help/power +++ b/help/power @@ -50,7 +50,7 @@ LIMITS LINK LIBRARY void powervalue(VALUE *x, VALUE *y, VALUE *eps, VALUE *result) NUMBER *qpower(NUMBER *x, NUMBER *y, NUMBER *eps) - COMPLEX *cpower(COMPLEX *x, COMPLEX *y, NUMBER *eps) + COMPLEX *c_power(COMPLEX *x, COMPLEX *y, NUMBER *eps) SEE ALSO root @@ -71,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.2 $ -## @(#) $Id: power,v 29.2 2000/06/07 14:02:33 chongo Exp $ +## @(#) $Revision: 29.3 $ +## @(#) $Id: power,v 29.3 2005/10/18 10:48:29 chongo Exp $ ## @(#) $Source: /usr/local/src/cmd/calc/help/RCS/power,v $ ## ## Under source code control: 1995/10/25 04:03:46 diff --git a/help/root b/help/root index 6c8c962..801299a 100644 --- a/help/root +++ b/help/root @@ -47,7 +47,7 @@ LIMITS LINK LIBRARY void rootvalue(VALUE *x, VALUE *n, VALUE *eps, VALUE *result) NUMBER *qroot(NUMBER *x, NUMBER *n, NUMBER *eps) - COMPLEX *qroot(COMPLEX *x, NUMBER *n, NUMBER *eps) + COMPLEX *c_root(COMPLEX *x, NUMBER *n, NUMBER *eps) SEE ALSO power @@ -68,8 +68,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: root,v 29.2 2000/06/07 14:02:33 chongo Exp $ +## @(#) $Revision: 29.3 $ +## @(#) $Id: root,v 29.3 2005/10/18 10:48:29 chongo Exp $ ## @(#) $Source: /usr/local/src/cmd/calc/help/RCS/root,v $ ## ## Under source code control: 1995/10/25 04:03:46 diff --git a/help/scale b/help/scale index d5aa9a1..fc39bf3 100644 --- a/help/scale +++ b/help/scale @@ -31,7 +31,7 @@ LIMITS LINK LIBRARY NUMBER *qscale(NUMBER *x, long n) - COMPLEX *cscale(COMPLEX *x, long n) + COMPLEX *c_scale(COMPLEX *x, long n) MATRIX *matscale(MATRIX *x, long n) SEE ALSO @@ -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.2 $ -## @(#) $Id: scale,v 29.2 2000/06/07 14:02:33 chongo Exp $ +## @(#) $Revision: 29.3 $ +## @(#) $Id: scale,v 29.3 2005/10/18 10:48:29 chongo Exp $ ## @(#) $Source: /usr/local/src/cmd/calc/help/RCS/scale,v $ ## ## Under source code control: 1995/12/18 12:34:58 diff --git a/help/sin b/help/sin index a0c66de..8a25ef0 100644 --- a/help/sin +++ b/help/sin @@ -30,7 +30,7 @@ LIMITS LINK LIBRARY NUMBER *qsin(NUMBER *x, NUMBER *eps) - COMPLEX *csin(COMPLEX *x, NUMBER *eps) + COMPLEX *c_sin(COMPLEX *x, NUMBER *eps) SEE ALSO cos, tan, sec, csc, cot, epsilon @@ -51,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.2 $ -## @(#) $Id: sin,v 29.2 2000/06/07 14:02:33 chongo Exp $ +## @(#) $Revision: 29.3 $ +## @(#) $Id: sin,v 29.3 2005/10/18 10:48:29 chongo Exp $ ## @(#) $Source: /usr/local/src/cmd/calc/help/RCS/sin,v $ ## ## Under source code control: 1994/03/19 01:40:28 diff --git a/help/sqrt b/help/sqrt index 836b67f..da88732 100644 --- a/help/sqrt +++ b/help/sqrt @@ -123,7 +123,7 @@ LIMITS none LINK LIBRARY - COMPLEX *csqrt(COMPLEX *x, NUMBER *ep, long z) + COMPLEX *c_sqrt(COMPLEX *x, NUMBER *ep, long z) NUMBER *qisqrt(NUMBER *q) NUMBER *qsqrt(NUMBER *x, NUMBER *ep, long z) FLAG zsqrt(ZVALUE x, ZVALUE *result, long z) @@ -147,8 +147,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: sqrt,v 29.2 2000/06/07 14:02:33 chongo Exp $ +## @(#) $Revision: 29.3 $ +## @(#) $Id: sqrt,v 29.3 2005/10/18 10:48:29 chongo Exp $ ## @(#) $Source: /usr/local/src/cmd/calc/help/RCS/sqrt,v $ ## ## Under source code control: 1995/09/18 03:54:32 diff --git a/value.c b/value.c index 01a6387..5c96a23 100644 --- a/value.c +++ b/value.c @@ -17,8 +17,8 @@ * received a copy with calc; if not, write to Free Software Foundation, Inc. * 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. * - * @(#) $Revision: 29.3 $ - * @(#) $Id: value.c,v 29.3 2000/07/17 15:35:49 chongo Exp $ + * @(#) $Revision: 29.4 $ + * @(#) $Id: value.c,v 29.4 2005/10/18 10:43:49 chongo Exp $ * @(#) $Source: /usr/local/src/cmd/calc/RCS/value.c,v $ * * Under source code control: 1990/02/15 01:48:25 @@ -320,7 +320,7 @@ negvalue(VALUE *vp, VALUE *vres) vres->v_num = qneg(vp->v_num); return; case V_COM: - vres->v_com = cneg(vp->v_com); + vres->v_com = c_neg(vp->v_com); return; case V_MAT: vres->v_mat = matneg(vp->v_mat); @@ -386,14 +386,14 @@ addvalue(VALUE *v1, VALUE *v2, VALUE *vres) vres->v_num = qqadd(v1->v_num, v2->v_num); return; case TWOVAL(V_COM, V_NUM): - vres->v_com = caddq(v1->v_com, v2->v_num); + vres->v_com = c_addq(v1->v_com, v2->v_num); return; case TWOVAL(V_NUM, V_COM): - vres->v_com = caddq(v2->v_com, v1->v_num); + vres->v_com = c_addq(v2->v_com, v1->v_num); vres->v_type = V_COM; return; case TWOVAL(V_COM, V_COM): - vres->v_com = cadd(v1->v_com, v2->v_com); + vres->v_com = c_add(v1->v_com, v2->v_com); c = vres->v_com; if (!cisreal(c)) return; @@ -463,16 +463,16 @@ subvalue(VALUE *v1, VALUE *v2, VALUE *vres) vres->v_num = qsub(v1->v_num, v2->v_num); return; case TWOVAL(V_COM, V_NUM): - vres->v_com = csubq(v1->v_com, v2->v_num); + vres->v_com = c_subq(v1->v_com, v2->v_num); return; case TWOVAL(V_NUM, V_COM): - c = csubq(v2->v_com, v1->v_num); + c = c_subq(v2->v_com, v1->v_num); vres->v_type = V_COM; - vres->v_com = cneg(c); + vres->v_com = c_neg(c); comfree(c); return; case TWOVAL(V_COM, V_COM): - vres->v_com = csub(v1->v_com, v2->v_com); + vres->v_com = c_sub(v1->v_com, v2->v_com); c = vres->v_com; if (!cisreal(c)) return; @@ -549,14 +549,14 @@ mulvalue(VALUE *v1, VALUE *v2, VALUE *vres) vres->v_num = qmul(v1->v_num, v2->v_num); return; case TWOVAL(V_COM, V_NUM): - vres->v_com = cmulq(v1->v_com, v2->v_num); + vres->v_com = c_mulq(v1->v_com, v2->v_num); break; case TWOVAL(V_NUM, V_COM): - vres->v_com = cmulq(v2->v_com, v1->v_num); + vres->v_com = c_mulq(v2->v_com, v1->v_num); vres->v_type = V_COM; break; case TWOVAL(V_COM, V_COM): - vres->v_com = cmul(v1->v_com, v2->v_com); + vres->v_com = c_mul(v1->v_com, v2->v_com); break; case TWOVAL(V_MAT, V_MAT): vres->v_mat = matmul(v1->v_mat, v2->v_mat); @@ -620,7 +620,7 @@ squarevalue(VALUE *vp, VALUE *vres) vres->v_num = qsquare(vp->v_num); return; case V_COM: - vres->v_com = csquare(vp->v_com); + vres->v_com = c_square(vp->v_com); c = vres->v_com; if (!cisreal(c)) return; @@ -664,7 +664,7 @@ invertvalue(VALUE *vp, VALUE *vres) vres->v_num = qinv(vp->v_num); return; case V_COM: - vres->v_com = cinv(vp->v_com); + vres->v_com = c_inv(vp->v_com); return; case V_MAT: vres->v_mat = matinv(vp->v_mat); @@ -1270,7 +1270,7 @@ intvalue(VALUE *vp, VALUE *vres) vres->v_com = clink(vp->v_com); return; } - vres->v_com = cint(vp->v_com); + vres->v_com = c_int(vp->v_com); c = vres->v_com; if (cisreal(c)) { vres->v_num = qlink(c->real); @@ -1317,7 +1317,7 @@ fracvalue(VALUE *vp, VALUE *vres) vres->v_type = V_NUM; return; } - vres->v_com = cfrac(vp->v_com); + vres->v_com = c_frac(vp->v_com); c = vres->v_com; if (cisreal(c)) { vres->v_num = qlink(c->real); @@ -1353,7 +1353,7 @@ incvalue(VALUE *vp, VALUE *vres) vres->v_num = qinc(vp->v_num); break; case V_COM: - vres->v_com = caddq(vp->v_com, &_qone_); + vres->v_com = c_addq(vp->v_com, &_qone_); break; case V_OBJ: *vres = objcall(OBJ_INC, vp, NULL_VALUE, NULL_VALUE); @@ -1389,7 +1389,7 @@ decvalue(VALUE *vp, VALUE *vres) vres->v_num = qdec(vp->v_num); break; case V_COM: - vres->v_com = caddq(vp->v_com, &_qnegone_); + vres->v_com = c_addq(vp->v_com, &_qnegone_); break; case V_OBJ: *vres = objcall(OBJ_DEC, vp, NULL_VALUE, NULL_VALUE); @@ -1504,7 +1504,7 @@ sqrtvalue(VALUE *v1, VALUE *v2, VALUE *v3, VALUE *vres) vres->v_type = V_COM; break; case V_COM: - vres->v_com = csqrt(v1->v_com, q, R); + vres->v_com = c_sqrt(v1->v_com, q, R); break; default: *vres = error_value(E_SQRT); @@ -1567,10 +1567,10 @@ rootvalue(VALUE *v1, VALUE *v2, VALUE *v3, VALUE *vres) ctmp.real = v1->v_num; ctmp.imag = &_qzero_; ctmp.links = 1; - c = croot(&ctmp, q2, q3); + c = c_root(&ctmp, q2, q3); break; case V_COM: - c = croot(v1->v_com, q2, q3); + c = c_root(v1->v_com, q2, q3); break; case V_OBJ: *vres = objcall(OBJ_ROOT, v1, v2, v3); @@ -1725,7 +1725,7 @@ shiftvalue(VALUE *v1, VALUE *v2, BOOL rightshift, VALUE *vres) *vres = error_value(E_SHIFT); return; } - c = cshift(v1->v_com, n); + c = c_shift(v1->v_com, n); if (!cisreal(c)) { vres->v_com = c; return; @@ -1800,7 +1800,7 @@ scalevalue(VALUE *v1, VALUE *v2, VALUE *vres) vres->v_num = qscale(v1->v_num, n); return; case V_COM: - vres->v_com = cscale(v1->v_com, n); + vres->v_com = c_scale(v1->v_com, n); return; case V_MAT: vres->v_mat = matscale(v1->v_mat, n); @@ -1860,7 +1860,7 @@ powivalue(VALUE *v1, VALUE *v2, VALUE *vres) vres->v_num = qpowi(v1->v_num, q); return; case V_COM: - vres->v_com = cpowi(v1->v_com, q); + vres->v_com = c_powi(v1->v_com, q); c = vres->v_com; if (!cisreal(c)) return; @@ -1916,7 +1916,7 @@ powervalue(VALUE *v1, VALUE *v2, VALUE *v3, VALUE *vres) ctmp2.real = v2->v_num; ctmp2.imag = &_qzero_; ctmp2.links = 1; - c = cpower(&ctmp1, &ctmp2, epsilon); + c = c_power(&ctmp1, &ctmp2, epsilon); break; } vres->v_num = qpower(v1->v_num, v2->v_num, epsilon); @@ -1928,16 +1928,16 @@ powervalue(VALUE *v1, VALUE *v2, VALUE *v3, VALUE *vres) ctmp1.real = v1->v_num; ctmp1.imag = &_qzero_; ctmp1.links = 1; - c = cpower(&ctmp1, v2->v_com, epsilon); + c = c_power(&ctmp1, v2->v_com, epsilon); break; case TWOVAL(V_COM, V_NUM): ctmp2.real = v2->v_num; ctmp2.imag = &_qzero_; ctmp2.links = 1; - c = cpower(v1->v_com, &ctmp2, epsilon); + c = c_power(v1->v_com, &ctmp2, epsilon); break; case TWOVAL(V_COM, V_COM): - c = cpower(v1->v_com, v2->v_com, epsilon); + c = c_power(v1->v_com, v2->v_com, epsilon); break; default: *vres = error_value(E_POWER); @@ -1994,7 +1994,7 @@ divvalue(VALUE *v1, VALUE *v2, VALUE *vres) vres->v_num = qqdiv(v1->v_num, v2->v_num); return; case TWOVAL(V_COM, V_NUM): - vres->v_com = cdivq(v1->v_com, v2->v_num); + vres->v_com = c_divq(v1->v_com, v2->v_num); return; case TWOVAL(V_NUM, V_COM): if (qiszero(v1->v_num)) { @@ -2004,11 +2004,11 @@ divvalue(VALUE *v1, VALUE *v2, VALUE *vres) ctmp.real = v1->v_num; ctmp.imag = &_qzero_; ctmp.links = 1; - vres->v_com = cdiv(&ctmp, v2->v_com); + vres->v_com = c_div(&ctmp, v2->v_com); vres->v_type = V_COM; return; case TWOVAL(V_COM, V_COM): - vres->v_com = cdiv(v1->v_com, v2->v_com); + vres->v_com = c_div(v1->v_com, v2->v_com); c = vres->v_com; if (cisreal(c)) { vres->v_num = qlink(c->real); @@ -2299,7 +2299,7 @@ comparevalue(VALUE *v1, VALUE *v2) r = qcmp(v1->v_num, v2->v_num); break; case V_COM: - r = ccmp(v1->v_com, v2->v_com); + r = c_cmp(v1->v_com, v2->v_com); break; case V_STR: r = stringcmp(v1->v_str, v2->v_str); diff --git a/version.c b/version.c index aca6536..b04377c 100644 --- a/version.c +++ b/version.c @@ -19,8 +19,8 @@ * received a copy with calc; if not, write to Free Software Foundation, Inc. * 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. * - * @(#) $Revision: 29.54 $ - * @(#) $Id: version.c,v 29.54 2004/10/23 01:16:23 chongo Exp $ + * @(#) $Revision: 29.55 $ + * @(#) $Id: version.c,v 29.55 2005/12/12 06:47:21 chongo Exp $ * @(#) $Source: /usr/local/src/cmd/calc/RCS/version.c,v $ * * Under source code control: 1990/05/22 11:00:58 @@ -47,8 +47,8 @@ static char *program; #define MAJOR_VER 2 /* major version */ #define MINOR_VER 11 /* minor version */ -#define MAJOR_PATCH 10 /* patch level or 0 if no patch */ -#define MINOR_PATCH 1 /* test number or 0 if no minor patch */ +#define MAJOR_PATCH 11 /* patch level or 0 if no patch */ +#define MINOR_PATCH 0 /* test number or 0 if no minor patch */ /*