From 0c20c96a7e8fdde74744df89266a815dc01bb80f Mon Sep 17 00:00:00 2001 From: Landon Curt Noll Date: Mon, 23 May 2011 16:05:32 -0700 Subject: [PATCH] Release calc version 2.12.4.4 --- CHANGES | 16 ++++-- Makefile | 81 +++++++++++++++++++++++++++++-- Makefile.simple | 81 +++++++++++++++++++++++++++++-- cal/Makefile | 6 +-- cal/README | 11 ++++- cal/gvec.cal | 107 +++++++++++++++++++++++++++++++++++++++++ custom/Makefile | 2 +- custom/Makefile.head | 2 +- custom/Makefile.simple | 2 +- version.c | 6 +-- 10 files changed, 294 insertions(+), 20 deletions(-) create mode 100644 cal/gvec.cal diff --git a/CHANGES b/CHANGES index 0b95224..5002b2c 100644 --- a/CHANGES +++ b/CHANGES @@ -1,4 +1,14 @@ -The following are the changes from calc version 2.12.4.0 to date: +The following are the changes from calc version 2.12.4.3 to date: + + Added gvec.cal resource script. + + Added calc-symlink make rulle to setup symlinks from stardard locations + into a tree specified by a non-empty ${T} makefile variable. Added + calc-unsymlink to remove any symlinks that may have been created by + the calc-symlink rule. + + +The following are the changes from calc version 2.12.4.0 to 2.12.4.2: Fixed a documentation bug for the sgn() builtin. @@ -6798,8 +6808,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. ## 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. ## -## @(#) $Revision: 30.21 $ -## @(#) $Id: CHANGES,v 30.21 2010/09/02 09:50:19 chongo Exp $ +## @(#) $Revision: 30.22 $ +## @(#) $Id: CHANGES,v 30.22 2011/05/23 22:48:17 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 e535131..0aac6e7 100644 --- a/Makefile +++ b/Makefile @@ -39,8 +39,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: 30.46 $$ -# @(#) $Id: Makefile.ship,v 30.46 2010/09/02 09:48:41 chongo Exp $ +MAKEFILE_REV= $$Revision: 30.47 $$ +# @(#) $Id: Makefile.ship,v 30.47 2011/05/23 22:47:49 chongo Exp $ # @(#) $Source: /usr/local/src/cmd/calc/RCS/Makefile.ship,v $ # # Under source code control: 1990/02/15 01:48:41 @@ -997,7 +997,7 @@ EXT= # The default calc versions # -VERSION= 2.12.4.3 +VERSION= 2.12.4.4 VERS= 2.12.4 VER= 2.12 VE= 2 @@ -4811,6 +4811,81 @@ strip: done ${V} echo '=-=-=-=-= ${MAKE_FILE} end of $@ rule =-=-=-=-=' +# calc-symlink - setup symlinks from stardard locations into the ${T} tree +# +calc-symlink: + ${Q}if [ -z "${T}" ]; then \ + echo "cannot use $@ make rule when T make var is empty" 1>&2; \ + echo "aborting" 1>&2; \ + exit 1; \ + fi + -${Q} for i in ${BINDIR}/calc${EXT} \ + ${BINDIR}/calc-static${EXT} \ + ${SCRIPTDIR} \ + ${LIBDIR}/libcalc${LIB_EXT_VERSION} \ + ${LIBDIR}/libcustcalc${LIB_EXT_VERSION} \ + ${MANDIR}/calc.${MANEXT} \ + ${CALC_SHAREDIR} \ + ${CALC_INCDIR} \ + ; do \ + if [ -e "${T}$$i" ]; then \ + if [ "${T}$$i" -ef "$$i" ]; then \ + echo "ERROR: ${T}$$i is the same as $$i" 1>&2; \ + else \ + if [ -e "$$i" ]; then \ + echo ${RM} -f "$$i"; \ + ${RM} -f "$$i"; \ + fi; \ + echo ${LN} -s "${T}$$i" "$$i"; \ + ${LN} -s "${T}$$i" "$$i"; \ + fi; \ + else \ + echo "Warning: not found: ${T}$$i" 1>&2; \ + fi; \ + done + -${Q} if [ -n "${CATDIR}" ]; then \ + if [ -e "${T}${CATDIR}/calc.${CATEXT}" ]; then \ + if [ "${T}${CATDIR}/calc.${CATEXT}" -ef "${CATDIR}/calc.${CATEXT}" ]; then \ + echo "ERROR: ${T}${CATDIR}/calc.${CATEXT} is the same as ${CATDIR}/calc.${CATEXT}" 1>&2; \ + else \ + if [ -e "${CATDIR}/calc.${CATEXT}" ]; then \ + echo ${RM} -f "${CATDIR}/calc.${CATEXT}"; \ + ${RM} -f "${CATDIR}/calc.${CATEXT}"; \ + fi; \ + echo ${LN} -s "${T}${CATDIR}/calc.${CATEXT}" "${CATDIR}/calc.${CATEXT}"; \ + ${LN} -s "${T}${CATDIR}/calc.${CATEXT}" "${CATDIR}/calc.${CATEXT}"; \ + fi; \ + fi; \ + fi + +# remove any symlinks that may have been created by calc-symlink +# +calc-unsymlink: + -${Q} for i in ${BINDIR}/calc${EXT} \ + ${BINDIR}/calc-static${EXT} \ + ${SCRIPTDIR} \ + ${LIBDIR}/libcalc${LIB_EXT_VERSION} \ + ${LIBDIR}/libcustcalc${LIB_EXT_VERSION} \ + ${MANDIR}/calc.${MANEXT} \ + ${CALC_SHAREDIR} \ + ${CALC_INCDIR} \ + ; do \ + if [ -L "$$i" ]; then \ + echo ${RM} -f "$$i"; \ + ${RM} -f "$$i"; \ + else \ + echo "Warning: ignoring non-symlink: $$i" 1>&2; \ + fi; \ + done + -${Q} if [ -n "${CATDIR}" ]; then \ + if [ -L "${CATDIR}/calc.${CATEXT}" ]; then \ + echo ${RM} -f "${CATDIR}/calc.${CATEXT}"; \ + ${RM} -f "${CATDIR}/calc.${CATEXT}"; \ + else \ + echo "Warning: ignoring non-symlink: ${CATDIR}/calc.${CATEXT}" 1>&2; \ + fi; \ + fi + ### # # make depend stuff diff --git a/Makefile.simple b/Makefile.simple index 90cfe58..b34f492 100644 --- a/Makefile.simple +++ b/Makefile.simple @@ -39,8 +39,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: 30.46 $$ -# @(#) $Id: Makefile.ship,v 30.46 2010/09/02 09:48:41 chongo Exp $ +MAKEFILE_REV= $$Revision: 30.47 $$ +# @(#) $Id: Makefile.ship,v 30.47 2011/05/23 22:47:49 chongo Exp $ # @(#) $Source: /usr/local/src/cmd/calc/RCS/Makefile.ship,v $ # # Under source code control: 1990/02/15 01:48:41 @@ -974,7 +974,7 @@ EXT= # The default calc versions # -VERSION= 2.12.4.3 +VERSION= 2.12.4.4 VERS= 2.12.4 VER= 2.12 VE= 2 @@ -4331,6 +4331,81 @@ strip: done ${V} echo '=-=-=-=-= ${MAKE_FILE} end of $@ rule =-=-=-=-=' +# calc-symlink - setup symlinks from stardard locations into the ${T} tree +# +calc-symlink: + ${Q}if [ -z "${T}" ]; then \ + echo "cannot use $@ make rule when T make var is empty" 1>&2; \ + echo "aborting" 1>&2; \ + exit 1; \ + fi + -${Q} for i in ${BINDIR}/calc${EXT} \ + ${BINDIR}/calc-static${EXT} \ + ${SCRIPTDIR} \ + ${LIBDIR}/libcalc${LIB_EXT_VERSION} \ + ${LIBDIR}/libcustcalc${LIB_EXT_VERSION} \ + ${MANDIR}/calc.${MANEXT} \ + ${CALC_SHAREDIR} \ + ${CALC_INCDIR} \ + ; do \ + if [ -e "${T}$$i" ]; then \ + if [ "${T}$$i" -ef "$$i" ]; then \ + echo "ERROR: ${T}$$i is the same as $$i" 1>&2; \ + else \ + if [ -e "$$i" ]; then \ + echo ${RM} -f "$$i"; \ + ${RM} -f "$$i"; \ + fi; \ + echo ${LN} -s "${T}$$i" "$$i"; \ + ${LN} -s "${T}$$i" "$$i"; \ + fi; \ + else \ + echo "Warning: not found: ${T}$$i" 1>&2; \ + fi; \ + done + -${Q} if [ -n "${CATDIR}" ]; then \ + if [ -e "${T}${CATDIR}/calc.${CATEXT}" ]; then \ + if [ "${T}${CATDIR}/calc.${CATEXT}" -ef "${CATDIR}/calc.${CATEXT}" ]; then \ + echo "ERROR: ${T}${CATDIR}/calc.${CATEXT} is the same as ${CATDIR}/calc.${CATEXT}" 1>&2; \ + else \ + if [ -e "${CATDIR}/calc.${CATEXT}" ]; then \ + echo ${RM} -f "${CATDIR}/calc.${CATEXT}"; \ + ${RM} -f "${CATDIR}/calc.${CATEXT}"; \ + fi; \ + echo ${LN} -s "${T}${CATDIR}/calc.${CATEXT}" "${CATDIR}/calc.${CATEXT}"; \ + ${LN} -s "${T}${CATDIR}/calc.${CATEXT}" "${CATDIR}/calc.${CATEXT}"; \ + fi; \ + fi; \ + fi + +# remove any symlinks that may have been created by calc-symlink +# +calc-unsymlink: + -${Q} for i in ${BINDIR}/calc${EXT} \ + ${BINDIR}/calc-static${EXT} \ + ${SCRIPTDIR} \ + ${LIBDIR}/libcalc${LIB_EXT_VERSION} \ + ${LIBDIR}/libcustcalc${LIB_EXT_VERSION} \ + ${MANDIR}/calc.${MANEXT} \ + ${CALC_SHAREDIR} \ + ${CALC_INCDIR} \ + ; do \ + if [ -L "$$i" ]; then \ + echo ${RM} -f "$$i"; \ + ${RM} -f "$$i"; \ + else \ + echo "Warning: ignoring non-symlink: $$i" 1>&2; \ + fi; \ + done + -${Q} if [ -n "${CATDIR}" ]; then \ + if [ -L "${CATDIR}/calc.${CATEXT}" ]; then \ + echo ${RM} -f "${CATDIR}/calc.${CATEXT}"; \ + ${RM} -f "${CATDIR}/calc.${CATEXT}"; \ + else \ + echo "Warning: ignoring non-symlink: ${CATDIR}/calc.${CATEXT}" 1>&2; \ + fi; \ + fi + ### # # make depend stuff diff --git a/cal/Makefile b/cal/Makefile index 3d27025..1bd275a 100644 --- a/cal/Makefile +++ b/cal/Makefile @@ -18,8 +18,8 @@ # received a copy with calc; if not, write to Free Software Foundation, Inc. # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # -# @(#) $Revision: 30.4 $ -# @(#) $Id: Makefile,v 30.4 2010/09/02 06:01:39 chongo Exp $ +# @(#) $Revision: 30.5 $ +# @(#) $Id: Makefile,v 30.5 2011/05/23 22:50:18 chongo Exp $ # @(#) $Source: /usr/local/src/cmd/calc/cal/RCS/Makefile,v $ # # Under source code control: 1991/07/21 05:00:54 @@ -194,7 +194,7 @@ CALC_FILES= README bigprime.cal deg.cal ellip.cal lucas.cal lucas_chk.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 sumtimes.cal \ - dms.cal hms.cal + dms.cal hms.cal gvec.cal # These files are found (but not built) in the distribution # diff --git a/cal/README b/cal/README index cbef739..5a2090f 100644 --- a/cal/README +++ b/cal/README @@ -298,6 +298,13 @@ ellip.cal Attempt to factor using the elliptic functions: y^2 = x^3 + a*x + b. +gvec.cal + + gvec(function, vector) + + Vectorize any single-input function or trailing operator. + + hello.cal Calc's contribution to the Hello World! page: @@ -1058,8 +1065,8 @@ xx_print.cal ## received a copy with calc; if not, write to Free Software Foundation, Inc. ## 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. ## -## @(#) $Revision: 30.2 $ -## @(#) $Id: README,v 30.2 2010/09/02 06:01:39 chongo Exp $ +## @(#) $Revision: 30.3 $ +## @(#) $Id: README,v 30.3 2011/05/23 22:50:32 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/gvec.cal b/cal/gvec.cal new file mode 100644 index 0000000..e2f929f --- /dev/null +++ b/cal/gvec.cal @@ -0,0 +1,107 @@ +/* + * gvec - vectorize any single-input function or trailing operator + * + * This version accepts arbitrary number of arguments, but of course + * they must all be same length vectors. + * + * The gvec function is for use in either a two-arg function or a two-arg + * operation "function" must be first; calc doesn't care how many more + * arguments there actually are. + * + * @(#) $Revision: 30.3 $ + * @(#) $Id: gvec.cal,v 30.3 2011/05/23 23:00:55 chongo Exp $ + * @(#) $Source: /usr/local/src/cmd/calc/cal/RCS/gvec.cal,v $ + * + * Under source code control: 2011/03/31 17:54:55 + * File existed as early as: 2010 + * + * By Carl Witthoft carl at witthoft dot com + */ + +define gvec(function, vector) +{ + local xlen,y,foo; + local precx = 1e-50; /* default for now */ + local argc = param(0)-1; + local old_tilde; /* previous config("tilde") */ + + /* + * parse args + */ + local plist = mat[argc]; + if (config("resource_debug") & 8) { + print "plist=", plist; + print "argc=", argc; + } + for(local i = 0; i< argc; i++) { + local ii = i + 2; + if (config("resource_debug") & 8) { + print "ii=", ii; + print "param(" : ii : "}=", param(ii); + print "size(param(" : ii : ")=", size(param(ii)); + } + plist[i] = size(param(ii)); + } + local slist=sort(plist); + if (config("resource_debug") & 8) { + print "plist=", plist; + } + local argm = argc-1; + if (config("resource_debug") & 8) { + print "argm=", argm; + } + if (slist[0] != slist[argm]) { + quit "lengths don't match"; + } + xlen = size(vector); + y = mat[xlen]; + + /* + * We can't do str(vector[j]) outside loop, eval() petulantly refuses to + * look at local variables. + * + * Also we need to config("tilde",0) to turn off lead tilde + * (so str(vector[j]) looks like a number. + */ + old_tilde = config("tilde",0); + + /* + * Ok, now check to see if "function" is a function. If not, it's an + * operation and it's up to user to make it valid + */ + if (isdefined(function)) { + + /* yep, it's a function, either builtin or user-defined */ + for (local j=0; j