mirror of
https://github.com/lcn2/calc.git
synced 2025-08-16 01:03:29 +03:00
Release calc version 2.11.0t3
This commit is contained in:
156
BUGS
156
BUGS
@@ -1,8 +1,8 @@
|
|||||||
If you notice something wrong, strange or broken, try rereading:
|
If you notice something wrong, strange or broken, try rereading:
|
||||||
|
|
||||||
README.FIRST
|
README.FIRST
|
||||||
README
|
HOWTO.INSTALL
|
||||||
BUGS (in particular the bottom problems or mis-features section)
|
BUGS (this file)
|
||||||
|
|
||||||
If that does not help, cd to the calc source directory and try:
|
If that does not help, cd to the calc source directory and try:
|
||||||
|
|
||||||
@@ -18,13 +18,13 @@ If it does not, then something is really broken!
|
|||||||
If you made and modifications to calc beyond the simple Makefile
|
If you made and modifications to calc beyond the simple Makefile
|
||||||
configuration, try backing them out and see if things get better.
|
configuration, try backing them out and see if things get better.
|
||||||
|
|
||||||
Check to see if the version of calc you are using is current. Calc
|
To be sure that your version of calc is up to date, check out:
|
||||||
distributions may be obtained from the official calc repository:
|
|
||||||
|
|
||||||
ftp://ftp.uu.net/pub/calc
|
http://reality.sgi.com/chongo/calc/calc-download.html
|
||||||
|
|
||||||
If you are an alpha or beta tester, you may have a special pre-released
|
The calc web site is located at:
|
||||||
version that is more advanced than what is in the ftp archive.
|
|
||||||
|
http://reality.sgi.com/chongo/calc
|
||||||
|
|
||||||
=-=
|
=-=
|
||||||
|
|
||||||
@@ -46,6 +46,8 @@ When you send your report, please include the following information:
|
|||||||
|
|
||||||
* the type of compiler you were using
|
* the type of compiler you were using
|
||||||
|
|
||||||
|
* any compiler warnings or erros that you saw
|
||||||
|
|
||||||
* cd to the calc source directory, and type:
|
* cd to the calc source directory, and type:
|
||||||
|
|
||||||
make debug > debug.out 2>&1 (sh, ksh, bash users)
|
make debug > debug.out 2>&1 (sh, ksh, bash users)
|
||||||
@@ -57,22 +59,8 @@ Stack traces from core dumps are useful to send as well.
|
|||||||
|
|
||||||
=-=
|
=-=
|
||||||
|
|
||||||
The official calc repository is located in:
|
Send any comments, compiler warning messages, suggestions and most
|
||||||
|
importantly, fixes (in the form of a context diff patch) to:
|
||||||
ftp://ftp.uu.net/pub/calc
|
|
||||||
|
|
||||||
If you don't have ftp access to that site, or if your version is more
|
|
||||||
recent than what has been released to the ftp archive, you may, as a
|
|
||||||
last resort, send EMail to:
|
|
||||||
|
|
||||||
chongo@toad.com
|
|
||||||
|
|
||||||
Indicate the version you have and that you would like a more up to date version.
|
|
||||||
|
|
||||||
=-=
|
|
||||||
|
|
||||||
Send any comments, suggestions and most importantly, fixes (in the form
|
|
||||||
of a context diff patch) to:
|
|
||||||
|
|
||||||
calc-tester@postofc.corp.sgi.com
|
calc-tester@postofc.corp.sgi.com
|
||||||
|
|
||||||
@@ -118,103 +106,45 @@ Known problems or mis-features:
|
|||||||
8 getcommands(toplevel = 536864560) ["codegen.c":122, 0x1200284dc]
|
8 getcommands(toplevel = 536864560) ["codegen.c":122, 0x1200284dc]
|
||||||
9 main() ["calc.c":279, 0x12001f61c]
|
9 main() ["calc.c":279, 0x12001f61c]
|
||||||
|
|
||||||
However On 25-Sep-99 9:18, Ernest Bowen wrote:
|
Michel van der List reports that he was using the Dec compiler.
|
||||||
|
|
||||||
Last night I downloaded 2.11.0t1 and without changing Makefile
|
However On 25-Sep-99 9:18, Ernest Bowen wrote:
|
||||||
or anything else did a make and make check. Absolutely no
|
|
||||||
reported errors or warnings and the check "passed all tests".
|
|
||||||
The machine I'm using is a Dec 20 alpha running Digitial
|
|
||||||
UNIX V4.0B (Rev 564).
|
|
||||||
|
|
||||||
Any ideas on how to reconcile these different results?
|
Last night I downloaded 2.11.0t1 and without changing Makefile
|
||||||
|
or anything else did a make and make check. Absolutely no
|
||||||
|
reported errors or warnings and the check "passed all tests".
|
||||||
|
The machine I'm using is a Dec 20 alpha running Digitial
|
||||||
|
UNIX V4.0B (Rev 564).
|
||||||
|
|
||||||
* On Sun SPARCstation running Solaris 2.5.1 compiling with
|
Ernest Bowen was using gcc.
|
||||||
cc version 4.0 with -Xc option 'make check' fails on the hash
|
|
||||||
functions. However when compiled with gcc everything seems to
|
|
||||||
work just fine.
|
|
||||||
|
|
||||||
From: "Dr.D.J.Picton" <dave@aps5.ph.bham.ac.uk>
|
We definitely want to hunt down this Dec's cc compiler issue. It
|
||||||
Date: Fri, 8 May 1998 10:54:43 +0100
|
could very well be that gcc is letting something slide where as
|
||||||
|
Dec's cc compiler is compiling it faithfully into core dumping code.
|
||||||
|
The fault could very well be the calc code and not the compiler.
|
||||||
|
|
||||||
Platform: Sun SPARCstation
|
Any more information on calc core dumps compiled with Dec's cc compiler
|
||||||
|
would be most appreciated!
|
||||||
|
|
||||||
Operating system: Solaris 2.5.1
|
* To compile calc using the Solaris cc, the -Xc flag is required.
|
||||||
|
Unfortunately this change results in the loss of 'long long' and
|
||||||
|
the resulting code runs slower.
|
||||||
|
|
||||||
Compiler: cc version 4.0 with -Xc option.
|
Dr.D.J.Picton <dave@aps5.ph.bham.ac.uk> reports that -Xc is
|
||||||
|
required for at compiling zrand.c.
|
||||||
|
|
||||||
The code compiled OK but the sha() and sha1() functions give errors with
|
* Calc compiled with Solaris cc -Xc results in some test failures:
|
||||||
make check. These functions clearly are broken. For example,
|
|
||||||
sha(sha()) gives
|
|
||||||
|
|
||||||
0xea19f96cdd568ad1084a17acc6103d92c0ef7708 not
|
CALCPATH=./lib ./calc -i -q read regress 2>&1 | nawk -f check.awk
|
||||||
0xf96cea198ad1dd5617ac084a3d92c6107708c0ef
|
**** Non-true result (0): 7120: sha(sha(isqrt(2e1000)==0x6db8d9cf0b018b8f9cbbf5aa1edb8066d19e1bb0
|
||||||
|
**** Non-true result (0): 7122: sha(sha("this is", 7^19-8, ..., "hash")) == 0x21e4...
|
||||||
|
**** Non-true result (0): 7124: sha(z) == 0x36dcca3e51865c30a2cf738023cda446f1368340
|
||||||
|
**** Non-true result (0): 7209: sha1(sha1("this is",7^19-8,"a composit",3i+4.5,"hash")) == ...
|
||||||
|
**** Non-true result (0): 7211: sha1(z) == 0xc19e7317675dbf71e293b4c41e117169e9da5b6f
|
||||||
|
**** Non-true result (0): 7227: sha1(sha1(isqrt(2e1000)))==0x6852a1365c51050c3d039e3c5d9cf29c12283ef4
|
||||||
|
**** Non-true result (0): 7310: md5(md5("this is", 7^19-8, "a composit", 3i+4.5, "hash")) == ...
|
||||||
|
**** Non-true result (0): 7312: md5(z) == 0x63d2b2fccae2de265227c30b05abb6b5
|
||||||
|
**** Non-true result (0): 7328: md5(md5(isqrt(2e1000))) == 0xe56ac4b8cad869e738a04fedc97058f3
|
||||||
|
|
||||||
Interestingly, the consistency checks work OK e.g.
|
**** 9 error(s) found \/++\/
|
||||||
>B = blk() = {"a", "b", "c"};
|
9999: Ending regression tests
|
||||||
>sha(B) == sha("abc");
|
|
||||||
1
|
|
||||||
|
|
||||||
**** Non-true result (0): 7108: sha(sha()) ==
|
|
||||||
0xf96cea198ad1dd5617ac084a3d92c6107708c0ef
|
|
||||||
**** Non-true result (0): 7109:
|
|
||||||
sha(sha("a"))==0x37f297772fae4cb1ba39b6cf9cf0381180bd62f2
|
|
||||||
**** Non-true result (0): 7110:
|
|
||||||
sha(sha("ab"))==0x488373d362684af3d3f7a6a408b59dfe85419e09
|
|
||||||
**** Non-true result (0): 7111:
|
|
||||||
sha(sha("abc"))==0x0164b8a914cd2a5e74c4f7ff082c4d97f1edf880
|
|
||||||
**** Non-true result (0): 7112:
|
|
||||||
sha(sha("abcd"))==0x082c73b06f71185d840fb4b28eb3abade67714bc
|
|
||||||
**** Non-true result (0): 7113:
|
|
||||||
sha(sha("abcde"))==0xd624e34951bb800f0acae773001df8cffe781ba8
|
|
||||||
**** Non-true result (0): 7114:
|
|
||||||
sha(sha("abcdef"))==0x2a589f7750598dc0ea0a608719e04327f609279a
|
|
||||||
**** Non-true result (0): 7115:
|
|
||||||
sha(sha("abcdefg"))==0x5bdf01f9298e9d19d3f8d15520fd74eed600b497
|
|
||||||
**** Non-true result (0): 7116:
|
|
||||||
sha(sha("abcdefgh"))==0x734ba8b31975d0dbae4d6e249f4e8da270796c94
|
|
||||||
**** Non-true result (0): 7117: sha(sha(1)) ==
|
|
||||||
0x864c8d09e828c7c31d62693736a5a9302c282777
|
|
||||||
**** Non-true result (0): 7118: sha(sha(2)) ==
|
|
||||||
0x2c0b59c512cb20fad6bb0883b69c9f5a46545808
|
|
||||||
**** Non-true result (0): 7119:
|
|
||||||
sha(sha(22/7)==0x7ddb7f8a7e9d70757f157744fddea7a6c6a6bcc6
|
|
||||||
**** Non-true result (0): 7120:
|
|
||||||
sha(sha(isqrt(2e1000)==0x6db8d9cf0b018b8f9cbbf5aa1edb8066d19e1bb0
|
|
||||||
7121: sha("x", "y", "z") == sha("xyz")
|
|
||||||
**** Non-true result (0): 7122: sha(sha("this is", 7^19-8, ..., "hash")) ==
|
|
||||||
0x21e4...
|
|
||||||
7123: z = sha(list(1,2,3), "curds and whey", 2^21701-1, pi());
|
|
||||||
**** Non-true result (0): 7124: sha(z) ==
|
|
||||||
0x36dcca3e51865c30a2cf738023cda446f1368340
|
|
||||||
|
|
||||||
**** Non-true result (0): 7207: sha1(sha1()) ==
|
|
||||||
0xda39a3ee5e6b4b0d3255bfef95601890afd80709
|
|
||||||
7208: sha1("x", "y", "z") == sha1("xyz")
|
|
||||||
**** Non-true result (0): 7209: sha1(sha1("this is",7^19-8,"a
|
|
||||||
composit",3i+4.5,"hash")) == ...
|
|
||||||
7210: z = sha1(list(1,2,3), "curds and whey", 2^21701-1, pi());
|
|
||||||
**** Non-true result (0): 7211: sha1(z) ==
|
|
||||||
0xc19e7317675dbf71e293b4c41e117169e9da5b6f
|
|
||||||
|
|
||||||
**** Non-true result (0): 7217:
|
|
||||||
sha1(sha1("a"))==0x86f7e437faa5a7fce15d1ddcb9eaeaea377667b8
|
|
||||||
**** Non-true result (0): 7218:
|
|
||||||
sha1(sha1("ab"))==0xda23614e02469a0d7c7bd1bdab5c9c474b1904dc
|
|
||||||
**** Non-true result (0): 7219:
|
|
||||||
sha1(sha1("abc"))==0xa9993e364706816aba3e25717850c26c9cd0d89d
|
|
||||||
**** Non-true result (0): 7220:
|
|
||||||
sha1(sha1("abcd"))==0x81fe8bfe87576c3ecb22426f8e57847382917acf
|
|
||||||
**** Non-true result (0): 7221:
|
|
||||||
sha1(sha1("abcde"))==0x03de6c570bfe24bfc328ccd7ca46b76eadaf4334
|
|
||||||
**** Non-true result (0): 7222:
|
|
||||||
sha1(sha1("abcdef"))==0x1f8ac10f23c5b5bc1167bda84b833e5c057a77d2
|
|
||||||
**** Non-true result (0): 7223:
|
|
||||||
sha1(sha1("abcdefg"))==0x2fb5e13419fc89246865e7a324f476ec624e8740
|
|
||||||
**** Non-true result (0): 7224:
|
|
||||||
sha1(sha1("abcdefgh"))==0x425af12a0743502b322e93a015bcf868e324d56a
|
|
||||||
**** Non-true result (0): 7225:
|
|
||||||
sha1(sha1(1))==0x53dd4e1734ad47d45e41c23e4ce42d7f1f98c1e8
|
|
||||||
**** Non-true result (0): 7226:
|
|
||||||
sha1(sha1(22/7))==0xf8e2510f85f7b9bf088b321188e9f70620f44246
|
|
||||||
**** Non-true result (0): 7227:
|
|
||||||
sha1(sha1(isqrt(2e1000)))==0x6852a1365c51050c3d039e3c5d9cf29c12283ef4
|
|
||||||
|
24
CHANGES
24
CHANGES
@@ -8,8 +8,6 @@ Following is the change from calc version 2.11.0t1 to date:
|
|||||||
whereas most of calc uses 8 character indentation. These imported
|
whereas most of calc uses 8 character indentation. These imported
|
||||||
sources have been changed to conform better with the calc style.
|
sources have been changed to conform better with the calc style.
|
||||||
|
|
||||||
Fixed misc compile warnings.
|
|
||||||
|
|
||||||
Added the program calc_errno.c and the Makefile symbol ERRNO_DECL.
|
Added the program calc_errno.c and the Makefile symbol ERRNO_DECL.
|
||||||
If ERRNO_DECL is empty, calc_errno.c will try various ways to
|
If ERRNO_DECL is empty, calc_errno.c will try various ways to
|
||||||
declare errno, sys_errlist and sys_nerr. On success or when
|
declare errno, sys_errlist and sys_nerr. On success or when
|
||||||
@@ -21,6 +19,28 @@ Following is the change from calc version 2.11.0t1 to date:
|
|||||||
The func.c file now includes the constructed header file calc_errno.h
|
The func.c file now includes the constructed header file calc_errno.h
|
||||||
to ensure that errno, sys_errlist and sys_nerr are declared correctly.
|
to ensure that errno, sys_errlist and sys_nerr are declared correctly.
|
||||||
|
|
||||||
|
Changed check.awk to be more 'old awk' friendly.
|
||||||
|
|
||||||
|
Made some of the source a little more ++ friendly. We are NOT
|
||||||
|
porting calc to C++! We will NOT support C++ compilation of calc.
|
||||||
|
Calc will written ANSI C. We just compiled with a suggestion from
|
||||||
|
Love-Jensen, John <jlove-jensen@globalmt.com> to make calc's version
|
||||||
|
of C a little more to C++ compilers. Avoiding symbols such as new
|
||||||
|
or try for example.
|
||||||
|
|
||||||
|
Thanks to the efforts of Ernest Bowen <ernie@neumann.une.edu.au> and
|
||||||
|
Dr.D.J.Picton <dave@aps5.ph.bham.ac.uk>, a nasty endian-ness bug
|
||||||
|
in the sha and sha1 hash functions that showed up on machines such
|
||||||
|
as the Sparc was fixed.
|
||||||
|
|
||||||
|
Updated README.FIRST and BUGS to reflect new URLs and addresses.
|
||||||
|
|
||||||
|
Added a HOWTO.INSTALL file.
|
||||||
|
|
||||||
|
Reordered cc Makefile variable sets in the main Makefile.
|
||||||
|
|
||||||
|
Fixed misc compile warnings and notices.
|
||||||
|
|
||||||
|
|
||||||
Following is the change from calc version 2.10.3t5.38 to 2.11.0t0:
|
Following is the change from calc version 2.10.3t5.38 to 2.11.0t0:
|
||||||
|
|
||||||
|
53
HOWTO.INSTALL
Normal file
53
HOWTO.INSTALL
Normal file
@@ -0,0 +1,53 @@
|
|||||||
|
Installing calc in 4 easy steps:
|
||||||
|
|
||||||
|
1) Look at the makefile, and adjust it to suit your needs.
|
||||||
|
|
||||||
|
Here are some Makefile hints:
|
||||||
|
|
||||||
|
Select a compiler set by commenting in the appropriate
|
||||||
|
set of cc options. As shipped the Makefile assumes
|
||||||
|
a gcc-like environment such as Linux.
|
||||||
|
|
||||||
|
If a more appropriate cc set if found below, comment
|
||||||
|
out the Linux set and comment in that set or edit
|
||||||
|
the gcc set or the common cc set as needed.
|
||||||
|
|
||||||
|
You may or may not need RANLIB when building libraries.
|
||||||
|
As shipped the Makefile assumes RANLIB is needed.
|
||||||
|
Comment the in/out the RANLIB value if ranlib does
|
||||||
|
not work or does not exist.
|
||||||
|
|
||||||
|
You may want to change the default pager used by calc.
|
||||||
|
As shipped the Makefile assumes 'more'. On your system
|
||||||
|
you may find 'less' to be a better pager.
|
||||||
|
|
||||||
|
The CALCBINDINGS is matter of personal taste. As shipped
|
||||||
|
the Makefile assumes a default quasi-emacs-like command
|
||||||
|
line editor. Changing CALCBINDINGS= altbind will cause ^D
|
||||||
|
to end calc in a fashion similar to that of the bc(1) command.
|
||||||
|
|
||||||
|
Set TOPDIR to be the place under which help files, calc,
|
||||||
|
include files and calc libs are to be installed. As shipped
|
||||||
|
the Makefile assumes a TOPDIR of /usr/local/lib.
|
||||||
|
|
||||||
|
Set BINDIR to the place where calc is installed. As shipped
|
||||||
|
the Makefile assumes a BINDIR /usr/local/bin.
|
||||||
|
|
||||||
|
Adjust other Makefile variables as needed.
|
||||||
|
|
||||||
|
2) build calc:
|
||||||
|
|
||||||
|
make all
|
||||||
|
|
||||||
|
==> We are interested in any compiler warnings (and errors) that
|
||||||
|
you may find. See the BUGS file if you find any.
|
||||||
|
|
||||||
|
3) test calc:
|
||||||
|
|
||||||
|
make check
|
||||||
|
|
||||||
|
==> If you run into problems, follow the instructions in the BUGS file
|
||||||
|
|
||||||
|
4) install calc:
|
||||||
|
|
||||||
|
make install
|
83
Makefile
83
Makefile
@@ -314,7 +314,8 @@ CATEXT= 1
|
|||||||
# The cat page is not built or installed
|
# The cat page is not built or installed
|
||||||
#
|
#
|
||||||
# If in doubt and you don't want to fool with man pages, set MANDIR
|
# If in doubt and you don't want to fool with man pages, set MANDIR
|
||||||
# and CATDIR to empty and ignore the lines below.
|
# and CATDIR to empty and ignore the NROFF, NROFF_ARG and MANMAKE
|
||||||
|
# lines below.
|
||||||
#
|
#
|
||||||
NROFF= nroff
|
NROFF= nroff
|
||||||
#NROFF=
|
#NROFF=
|
||||||
@@ -526,9 +527,37 @@ ALLOW_CUSTOM= -DCUSTOM
|
|||||||
#
|
#
|
||||||
###
|
###
|
||||||
#
|
#
|
||||||
# common cc set
|
# Linux set
|
||||||
#
|
#
|
||||||
#CCWARN=
|
# Tested on Red Hat 6.0 Linux but should run on almost any Linux release.
|
||||||
|
#
|
||||||
|
# for better performance, set the following above:
|
||||||
|
# DEBUG= -O2
|
||||||
|
#
|
||||||
|
CCWARN= -Wall -Wno-implicit -Wno-comment
|
||||||
|
CCOPT= ${DEBUG} ${NO_SHARED}
|
||||||
|
CCMISC=
|
||||||
|
#
|
||||||
|
CFLAGS= ${CCWARN} ${CCOPT} ${CCMISC}
|
||||||
|
ICFLAGS= ${CCWARN} ${CCMISC}
|
||||||
|
#
|
||||||
|
CCMAIN= ${ICFLAGS}
|
||||||
|
CCSHS= ${CFLAGS}
|
||||||
|
#
|
||||||
|
LCFLAGS=
|
||||||
|
LDFLAGS= ${NO_SHARED} ${LD_NO_SHARED}
|
||||||
|
ILDFLAGS=
|
||||||
|
#
|
||||||
|
CC= ${PURIFY} gcc
|
||||||
|
#
|
||||||
|
###
|
||||||
|
#
|
||||||
|
# gcc set (some call it gcc2, some call it gcc)
|
||||||
|
#
|
||||||
|
# for better performance, set the following above:
|
||||||
|
# DEBUG= -O2
|
||||||
|
#
|
||||||
|
#CCWARN= -Wall -Wno-implicit -Wno-comment
|
||||||
#CCOPT= ${DEBUG} ${NO_SHARED}
|
#CCOPT= ${DEBUG} ${NO_SHARED}
|
||||||
#CCMISC=
|
#CCMISC=
|
||||||
#
|
#
|
||||||
@@ -542,26 +571,16 @@ ALLOW_CUSTOM= -DCUSTOM
|
|||||||
#LDFLAGS= ${NO_SHARED} ${LD_NO_SHARED}
|
#LDFLAGS= ${NO_SHARED} ${LD_NO_SHARED}
|
||||||
#ILDFLAGS=
|
#ILDFLAGS=
|
||||||
#
|
#
|
||||||
#CC= ${PURIFY} cc
|
#CC= ${PURIFY} gcc
|
||||||
|
#CC= ${PURIFY} gcc2
|
||||||
#
|
#
|
||||||
###
|
###
|
||||||
#
|
#
|
||||||
# SGI IRIX5.3 (or earlier) -o32 C Compiler
|
# common cc set
|
||||||
#
|
#
|
||||||
# You must set above:
|
#CCWARN=
|
||||||
# RANLIB=:
|
|
||||||
# LONGLONG_BITS= 0
|
|
||||||
#
|
|
||||||
# for better performance, set the following above:
|
|
||||||
# DEBUG= -O2 -g3
|
|
||||||
#
|
|
||||||
# If you have the directory /usr/lib/nonshared, then set the following above:
|
|
||||||
# NO_SHARED= -non_shared
|
|
||||||
# LD_NO_SHARED= -Wl,-rdata_shared
|
|
||||||
#
|
|
||||||
#CCWARN= -fullwarn -woff 835
|
|
||||||
#CCOPT= ${DEBUG} ${NO_SHARED}
|
#CCOPT= ${DEBUG} ${NO_SHARED}
|
||||||
#CCMISC= -use_readonly_const
|
#CCMISC=
|
||||||
#
|
#
|
||||||
#CFLAGS= ${CCWARN} ${CCOPT} ${CCMISC}
|
#CFLAGS= ${CCWARN} ${CCOPT} ${CCMISC}
|
||||||
#ICFLAGS= ${CCWARN} ${CCMISC}
|
#ICFLAGS= ${CCWARN} ${CCMISC}
|
||||||
@@ -678,30 +697,7 @@ ALLOW_CUSTOM= -DCUSTOM
|
|||||||
#
|
#
|
||||||
###
|
###
|
||||||
#
|
#
|
||||||
# Red Hat Linux 6.0 and BSDI's BSD/OS 4.0 (or later) set
|
# BSDI's BSD/OS 4.0 (or later) set
|
||||||
#
|
|
||||||
# for better performance, set the following above:
|
|
||||||
# DEBUG= -O2
|
|
||||||
#
|
|
||||||
CCWARN= -Wall -Wno-implicit -Wno-comment
|
|
||||||
CCOPT= ${DEBUG} ${NO_SHARED}
|
|
||||||
CCMISC=
|
|
||||||
#
|
|
||||||
CFLAGS= ${CCWARN} ${CCOPT} ${CCMISC}
|
|
||||||
ICFLAGS= ${CCWARN} ${CCMISC}
|
|
||||||
#
|
|
||||||
CCMAIN= ${ICFLAGS}
|
|
||||||
CCSHS= ${CFLAGS}
|
|
||||||
#
|
|
||||||
LCFLAGS=
|
|
||||||
LDFLAGS= ${NO_SHARED} ${LD_NO_SHARED}
|
|
||||||
ILDFLAGS=
|
|
||||||
#
|
|
||||||
CC= ${PURIFY} gcc
|
|
||||||
#
|
|
||||||
###
|
|
||||||
#
|
|
||||||
# gcc set (some call it gcc2, some call it gcc)
|
|
||||||
#
|
#
|
||||||
# for better performance, set the following above:
|
# for better performance, set the following above:
|
||||||
# DEBUG= -O2
|
# DEBUG= -O2
|
||||||
@@ -721,7 +717,6 @@ CC= ${PURIFY} gcc
|
|||||||
#ILDFLAGS=
|
#ILDFLAGS=
|
||||||
#
|
#
|
||||||
#CC= ${PURIFY} gcc
|
#CC= ${PURIFY} gcc
|
||||||
#CC= ${PURIFY} gcc2
|
|
||||||
|
|
||||||
##############################################################################
|
##############################################################################
|
||||||
#-=-=-=-=-=-=-=-=- Be careful if you change something below -=-=-=-=-=-=-=-=-#
|
#-=-=-=-=-=-=-=-=- Be careful if you change something below -=-=-=-=-=-=-=-=-#
|
||||||
@@ -920,7 +915,7 @@ C_SRC= ${LIBSRC} ${CALCSRC} ${UTIL_C_SRC}
|
|||||||
# These files are found (but not built) in the distribution
|
# These files are found (but not built) in the distribution
|
||||||
#
|
#
|
||||||
DISTLIST= ${C_SRC} ${H_SRC} ${MAKE_FILE} BUGS CHANGES LIBRARY README \
|
DISTLIST= ${C_SRC} ${H_SRC} ${MAKE_FILE} BUGS CHANGES LIBRARY README \
|
||||||
calc.man lint.sed README.FIRST ${UTIL_MISC_SRC}
|
calc.man lint.sed README.FIRST HOWTO.INSTALL ${UTIL_MISC_SRC}
|
||||||
|
|
||||||
# complete list of .o files
|
# complete list of .o files
|
||||||
#
|
#
|
||||||
|
5
README
5
README
@@ -4,6 +4,11 @@
|
|||||||
#
|
#
|
||||||
# Arbitrary precision calculator.
|
# Arbitrary precision calculator.
|
||||||
|
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
NOTE: This is an old historic README. We recommend that you
|
||||||
|
read README.FIRST and HOWTO.INSTALL for more info.
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
I am allowing this calculator to be freely distributed for your enjoyment.
|
I am allowing this calculator to be freely distributed for your enjoyment.
|
||||||
Like all multi-precision programs, you should not depend absolutely on
|
Like all multi-precision programs, you should not depend absolutely on
|
||||||
its results, since bugs in such programs can be insidious and only rarely
|
its results, since bugs in such programs can be insidious and only rarely
|
||||||
|
60
README.FIRST
60
README.FIRST
@@ -1,12 +1,17 @@
|
|||||||
Dear alpha tester,
|
Dear calc user,
|
||||||
|
|
||||||
Thanks for taking the time to try out this alpha version of calc! We are
|
See the HOWTO.INSTALL file for information on how to build and install calc.
|
||||||
interested in any/all feedback that you may have on this version. In
|
|
||||||
particular we would like to hear about:
|
|
||||||
|
|
||||||
|
To be sure that your version of calc is up to date, check out:
|
||||||
|
|
||||||
|
http://reality.sgi.com/chongo/calc/calc-download.html
|
||||||
|
|
||||||
|
We are interested in any/all feedback on recent versions of calc.
|
||||||
|
In particular we would like to hear about:
|
||||||
|
|
||||||
|
* compiler warnings
|
||||||
* compile problems
|
* compile problems
|
||||||
* regression test problems (try: make check)
|
* regression test problems (try: make check)
|
||||||
* compiler warnings
|
|
||||||
* special compile flags/options that you needed
|
* special compile flags/options that you needed
|
||||||
* Makefile problems
|
* Makefile problems
|
||||||
* help file problems
|
* help file problems
|
||||||
@@ -15,38 +20,35 @@ particular we would like to hear about:
|
|||||||
We would like to offer a clean compile across a wide verity of platforms,
|
We would like to offer a clean compile across a wide verity of platforms,
|
||||||
so if you can test on several, so much the better!
|
so if you can test on several, so much the better!
|
||||||
|
|
||||||
Calc distributions may be obtained from:
|
If you run into problems, see the BUGS file.
|
||||||
|
|
||||||
ftp://ftp.uu.net/pub/calc
|
|
||||||
|
|
||||||
If you don't have ftp access to that site, or if you do not find a more
|
|
||||||
recent version (you may have a special pre-released version that is
|
|
||||||
more advanced than what is in the ftp archive) send EMail to:
|
|
||||||
|
|
||||||
chongo@toad.com
|
|
||||||
|
|
||||||
Indicate the version you have and that you would like a more up
|
|
||||||
to date version.
|
|
||||||
|
|
||||||
=-=
|
=-=
|
||||||
|
|
||||||
Misc items TODO before Beta release:
|
See the file:
|
||||||
|
|
||||||
* improve the coverage in the 'SEE ALSO' help file lists
|
help/todo
|
||||||
|
|
||||||
* where reasonable, be sure that regress.cal tests builtin functions
|
or run:
|
||||||
|
|
||||||
* add the Blum-Blum-Shub random() generator code
|
calc 'help todo'
|
||||||
|
|
||||||
* add code to allow of the reading, writing and processing of binary data
|
for a wish/todo list. Code contributions are welcome.
|
||||||
|
|
||||||
* add shs, shs-1 and md5 hashing functions. Use align32.h.
|
=-=
|
||||||
|
|
||||||
* add mod h*2^n+/-1 function for integers
|
To join the calc-tester mailing list. Send a request to:
|
||||||
|
|
||||||
* be sure that CHANGES is up to date,
|
calc-tester-request@postofc.corp.sgi.com
|
||||||
look over the help/todo file and update as needed,
|
|
||||||
revisit issues in the BUGS file and
|
|
||||||
change this file :-)
|
|
||||||
|
|
||||||
* clean the source code and document it better
|
Your message body (not the subject) should consist of:
|
||||||
|
|
||||||
|
subscribe calc-tester address
|
||||||
|
end
|
||||||
|
name your_full_name
|
||||||
|
|
||||||
|
where ``address'' is your EMail address and ``your_full_name'' is
|
||||||
|
your full name.
|
||||||
|
|
||||||
|
The calc web site is located at:
|
||||||
|
|
||||||
|
http://reality.sgi.com/chongo/calc
|
||||||
|
48
block.c
48
block.c
@@ -71,7 +71,7 @@ static void blkchk(BLOCK*);
|
|||||||
BLOCK *
|
BLOCK *
|
||||||
blkalloc(int len, int chunk)
|
blkalloc(int len, int chunk)
|
||||||
{
|
{
|
||||||
BLOCK *new; /* new block allocated */
|
BLOCK *nblk; /* new block allocated */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* firewall
|
* firewall
|
||||||
@@ -84,8 +84,8 @@ blkalloc(int len, int chunk)
|
|||||||
/*
|
/*
|
||||||
* allocate BLOCK
|
* allocate BLOCK
|
||||||
*/
|
*/
|
||||||
new = (BLOCK *)malloc(sizeof(BLOCK));
|
nblk = (BLOCK *)malloc(sizeof(BLOCK));
|
||||||
if (new == NULL) {
|
if (nblk == NULL) {
|
||||||
math_error("cannot allocate block");
|
math_error("cannot allocate block");
|
||||||
/*NOTREACHED*/
|
/*NOTREACHED*/
|
||||||
}
|
}
|
||||||
@@ -93,23 +93,23 @@ blkalloc(int len, int chunk)
|
|||||||
/*
|
/*
|
||||||
* initialize BLOCK
|
* initialize BLOCK
|
||||||
*/
|
*/
|
||||||
new->blkchunk = chunk;
|
nblk->blkchunk = chunk;
|
||||||
new->maxsize = ((len+chunk)/chunk)*chunk;
|
nblk->maxsize = ((len+chunk)/chunk)*chunk;
|
||||||
new->data = (USB8*)malloc(new->maxsize);
|
nblk->data = (USB8*)malloc(nblk->maxsize);
|
||||||
if (new->data == NULL) {
|
if (nblk->data == NULL) {
|
||||||
math_error("cannot allocate block data storage");
|
math_error("cannot allocate block data storage");
|
||||||
/*NOTREACHED*/
|
/*NOTREACHED*/
|
||||||
}
|
}
|
||||||
memset(new->data, 0, new->maxsize);
|
memset(nblk->data, 0, nblk->maxsize);
|
||||||
new->datalen = len;
|
nblk->datalen = len;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* return BLOCK
|
* return BLOCK
|
||||||
*/
|
*/
|
||||||
if (conf->calc_debug > 0) {
|
if (conf->calc_debug > 0) {
|
||||||
blkchk(new);
|
blkchk(nblk);
|
||||||
}
|
}
|
||||||
return new;
|
return nblk;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -227,7 +227,7 @@ blkchk(BLOCK *blk)
|
|||||||
BLOCK *
|
BLOCK *
|
||||||
blkrealloc(BLOCK *blk, int newlen, int newchunk)
|
blkrealloc(BLOCK *blk, int newlen, int newchunk)
|
||||||
{
|
{
|
||||||
USB8 *new; /* realloced storage */
|
USB8 *nblk; /* realloced storage */
|
||||||
int newmax; /* new maximum stoage size */
|
int newmax; /* new maximum stoage size */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -258,20 +258,20 @@ blkrealloc(BLOCK *blk, int newlen, int newchunk)
|
|||||||
if (newmax != blk->maxsize) {
|
if (newmax != blk->maxsize) {
|
||||||
|
|
||||||
/* reallocate new storage */
|
/* reallocate new storage */
|
||||||
new = (USB8*)realloc(blk->data, newmax);
|
nblk = (USB8*)realloc(blk->data, newmax);
|
||||||
if (new == NULL) {
|
if (nblk == NULL) {
|
||||||
math_error("cannot reallocate block storage");
|
math_error("cannot reallocate block storage");
|
||||||
/*NOTREACHED*/
|
/*NOTREACHED*/
|
||||||
}
|
}
|
||||||
|
|
||||||
/* clear any new storage */
|
/* clear any new storage */
|
||||||
if (newmax > blk->maxsize) {
|
if (newmax > blk->maxsize) {
|
||||||
memset(new + blk->maxsize, 0, (newmax - blk->maxsize));
|
memset(nblk+blk->maxsize, 0, (newmax-blk->maxsize));
|
||||||
}
|
}
|
||||||
blk->maxsize = newmax;
|
blk->maxsize = newmax;
|
||||||
|
|
||||||
/* restore the data pointers */
|
/* restore the data pointers */
|
||||||
blk->data = new;
|
blk->data = nblk;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -391,13 +391,13 @@ blktrunc(BLOCK *blk)
|
|||||||
BLOCK *
|
BLOCK *
|
||||||
blk_copy(BLOCK *blk)
|
blk_copy(BLOCK *blk)
|
||||||
{
|
{
|
||||||
BLOCK *new; /* copy of blk */
|
BLOCK *nblk; /* copy of blk */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* malloc new block
|
* malloc new block
|
||||||
*/
|
*/
|
||||||
new = (BLOCK *)malloc(sizeof(BLOCK));
|
nblk = (BLOCK *)malloc(sizeof(BLOCK));
|
||||||
if (new == NULL) {
|
if (nblk == NULL) {
|
||||||
math_error("blk_copy: cannot malloc BLOCK");
|
math_error("blk_copy: cannot malloc BLOCK");
|
||||||
/*NOTREACHED*/
|
/*NOTREACHED*/
|
||||||
}
|
}
|
||||||
@@ -405,18 +405,18 @@ blk_copy(BLOCK *blk)
|
|||||||
/*
|
/*
|
||||||
* duplicate most of the block
|
* duplicate most of the block
|
||||||
*/
|
*/
|
||||||
*new = *blk;
|
*nblk = *blk;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* duplicate block data
|
* duplicate block data
|
||||||
*/
|
*/
|
||||||
new->data = (USB8 *)malloc(blk->maxsize);
|
nblk->data = (USB8 *)malloc(blk->maxsize);
|
||||||
if (new->data == NULL) {
|
if (nblk->data == NULL) {
|
||||||
math_error("blk_copy: cannot duplicate block data");
|
math_error("blk_copy: cannot duplicate block data");
|
||||||
/*NOTREACHED*/
|
/*NOTREACHED*/
|
||||||
}
|
}
|
||||||
memcpy(new->data, blk->data, blk->maxsize);
|
memcpy(nblk->data, blk->data, blk->maxsize);
|
||||||
return new;
|
return nblk;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@@ -71,5 +71,9 @@ END {
|
|||||||
if (error > 0 && havebuf0) {
|
if (error > 0 && havebuf0) {
|
||||||
print buf0;
|
print buf0;
|
||||||
}
|
}
|
||||||
exit (error > 0);
|
if (error > 0) {
|
||||||
|
exit(1);
|
||||||
|
} else {
|
||||||
|
exit(0);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
10
hash.c
10
hash.c
@@ -147,13 +147,13 @@ hash_free(HASH *state)
|
|||||||
HASH *
|
HASH *
|
||||||
hash_copy(HASH *state)
|
hash_copy(HASH *state)
|
||||||
{
|
{
|
||||||
HASH *new; /* copy of state */
|
HASH *hnew; /* copy of state */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* malloc new state
|
* malloc new state
|
||||||
*/
|
*/
|
||||||
new = (HASH *)malloc(sizeof(HASH));
|
hnew = (HASH *)malloc(sizeof(HASH));
|
||||||
if (new == NULL) {
|
if (hnew == NULL) {
|
||||||
math_error("hash_init: cannot malloc HASH");
|
math_error("hash_init: cannot malloc HASH");
|
||||||
/*NOTREACHED*/
|
/*NOTREACHED*/
|
||||||
}
|
}
|
||||||
@@ -161,8 +161,8 @@ hash_copy(HASH *state)
|
|||||||
/*
|
/*
|
||||||
* duplicate state
|
* duplicate state
|
||||||
*/
|
*/
|
||||||
memcpy((void *)new, (void *)state, sizeof(HASH));
|
memcpy((void *)hnew, (void *)state, sizeof(HASH));
|
||||||
return new;
|
return hnew;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@@ -54,7 +54,7 @@ char buf[BUFSIZ];
|
|||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
try(char *fmt, ...)
|
try_this(char *fmt, ...)
|
||||||
{
|
{
|
||||||
va_list ap;
|
va_list ap;
|
||||||
|
|
||||||
@@ -79,7 +79,7 @@ main(void)
|
|||||||
/*
|
/*
|
||||||
* test variable args and vsprintf/sprintf
|
* test variable args and vsprintf/sprintf
|
||||||
*/
|
*/
|
||||||
try("@%d:%s:%d@", 1, "hi", 2);
|
try_this("@%d:%s:%d@", 1, "hi", 2);
|
||||||
if (strcmp(buf, "@1:hi:2@") != 0) {
|
if (strcmp(buf, "@1:hi:2@") != 0) {
|
||||||
#if !defined(DONT_HAVE_VSPRINTF)
|
#if !defined(DONT_HAVE_VSPRINTF)
|
||||||
/* <stdarg.h> with vsprintf() didn't work */
|
/* <stdarg.h> with vsprintf() didn't work */
|
||||||
@@ -88,7 +88,7 @@ main(void)
|
|||||||
#endif
|
#endif
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
try("%s %d%s%d%d %s",
|
try_this("%s %d%s%d%d %s",
|
||||||
"Landon Noll 1st proved that", 2, "^", 23209, -1, "was prime");
|
"Landon Noll 1st proved that", 2, "^", 23209, -1, "was prime");
|
||||||
if (strcmp(buf,
|
if (strcmp(buf,
|
||||||
"Landon Noll 1st proved that 2^23209-1 was prime") != 0) {
|
"Landon Noll 1st proved that 2^23209-1 was prime") != 0) {
|
||||||
|
@@ -52,7 +52,7 @@ char buf[BUFSIZ];
|
|||||||
#include <varargs.h>
|
#include <varargs.h>
|
||||||
|
|
||||||
void
|
void
|
||||||
try(char *fmt, ...)
|
try_this(char *fmt, ...)
|
||||||
{
|
{
|
||||||
va_list ap;
|
va_list ap;
|
||||||
|
|
||||||
@@ -68,7 +68,7 @@ try(char *fmt, ...)
|
|||||||
#else
|
#else
|
||||||
|
|
||||||
void
|
void
|
||||||
try(char *a, int b, char *c, int d)
|
try_this(char *a, int b, char *c, int d)
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -87,7 +87,7 @@ main(void)
|
|||||||
/*
|
/*
|
||||||
* test variable args and vsprintf/sprintf
|
* test variable args and vsprintf/sprintf
|
||||||
*/
|
*/
|
||||||
try("@%d:%s:%d@", 1, "hi", 2);
|
try_this("@%d:%s:%d@", 1, "hi", 2);
|
||||||
if (strcmp(buf, "@1:hi:2@") != 0) {
|
if (strcmp(buf, "@1:hi:2@") != 0) {
|
||||||
#if !defined(DONT_HAVE_VSPRINTF)
|
#if !defined(DONT_HAVE_VSPRINTF)
|
||||||
/* <varargs.h> with vsprintf() didn't work */
|
/* <varargs.h> with vsprintf() didn't work */
|
||||||
@@ -96,7 +96,7 @@ main(void)
|
|||||||
#endif
|
#endif
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
try("%s %d%s%d%d %s",
|
try_this("%s %d%s%d%d %s",
|
||||||
"Landon Noll 1st proved that", 2, "^", 23209, -1, "was prime");
|
"Landon Noll 1st proved that", 2, "^", 23209, -1, "was prime");
|
||||||
if (strcmp(buf,
|
if (strcmp(buf,
|
||||||
"Landon Noll 1st proved that 2^23209-1 was prime") != 0) {
|
"Landon Noll 1st proved that 2^23209-1 was prime") != 0) {
|
||||||
|
@@ -235,3 +235,11 @@ Needed enhancements
|
|||||||
One should make available a the fundimental math operations
|
One should make available a the fundimental math operations
|
||||||
on ZVALUE, NUMBER and perhaps COMPLEX (without all of the
|
on ZVALUE, NUMBER and perhaps COMPLEX (without all of the
|
||||||
other stuff) in a separate library.
|
other stuff) in a separate library.
|
||||||
|
|
||||||
|
* improve the coverage in the 'SEE ALSO' help file lists
|
||||||
|
|
||||||
|
* where reasonable, be sure that regress.cal tests builtin functions
|
||||||
|
|
||||||
|
* add mod h*2^n+/-1 function for integers
|
||||||
|
|
||||||
|
* clean the source code and document it better
|
||||||
|
2
shs.c
2
shs.c
@@ -598,7 +598,7 @@ shs_final_state(HASH *state)
|
|||||||
/*
|
/*
|
||||||
* load ZVALUE
|
* load ZVALUE
|
||||||
*/
|
*/
|
||||||
#if BASEB == 16
|
#if BASEB == 16 && CALC_BYTE_ORDER == LITTLE_ENDIAN
|
||||||
for (i=0; i < ret.len; i+=2) {
|
for (i=0; i < ret.len; i+=2) {
|
||||||
ret.v[ret.len-i-1] = ((HALF*)dig->digest)[i+1];
|
ret.v[ret.len-i-1] = ((HALF*)dig->digest)[i+1];
|
||||||
ret.v[ret.len-i-2] = ((HALF*)dig->digest)[i];
|
ret.v[ret.len-i-2] = ((HALF*)dig->digest)[i];
|
||||||
|
2
shs1.c
2
shs1.c
@@ -574,7 +574,7 @@ shs1_final_state(HASH *state)
|
|||||||
/*
|
/*
|
||||||
* load ZVALUE
|
* load ZVALUE
|
||||||
*/
|
*/
|
||||||
#if BASEB == 16
|
#if BASEB == 16 && CALC_BYTE_ORDER == LITTLE_ENDIAN
|
||||||
for (i=0; i < ret.len; i+=2) {
|
for (i=0; i < ret.len; i+=2) {
|
||||||
ret.v[ret.len-i-1] = ((HALF*)dig->digest)[i+1];
|
ret.v[ret.len-i-1] = ((HALF*)dig->digest)[i+1];
|
||||||
ret.v[ret.len-i-2] = ((HALF*)dig->digest)[i];
|
ret.v[ret.len-i-2] = ((HALF*)dig->digest)[i];
|
||||||
|
@@ -12,7 +12,7 @@
|
|||||||
#define MAJOR_VER 2 /* major version */
|
#define MAJOR_VER 2 /* major version */
|
||||||
#define MINOR_VER 11 /* minor version */
|
#define MINOR_VER 11 /* minor version */
|
||||||
#define MAJOR_PATCH 0 /* patch level or 0 if no patch */
|
#define MAJOR_PATCH 0 /* patch level or 0 if no patch */
|
||||||
#define MINOR_PATCH "2" /* test number or empty string if no patch */
|
#define MINOR_PATCH "3" /* test number or empty string if no patch */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* calc version constants
|
* calc version constants
|
||||||
|
36
zfunc.c
36
zfunc.c
@@ -1683,7 +1683,7 @@ done: if (s == 0) {
|
|||||||
void
|
void
|
||||||
zroot(ZVALUE z1, ZVALUE z2, ZVALUE *dest)
|
zroot(ZVALUE z1, ZVALUE z2, ZVALUE *dest)
|
||||||
{
|
{
|
||||||
ZVALUE try, quo, old, temp, temp2;
|
ZVALUE ztry, quo, old, temp, temp2;
|
||||||
ZVALUE k1; /* holds k - 1 */
|
ZVALUE k1; /* holds k - 1 */
|
||||||
int sign;
|
int sign;
|
||||||
long i;
|
long i;
|
||||||
@@ -1733,12 +1733,12 @@ zroot(ZVALUE z1, ZVALUE z2, ZVALUE *dest)
|
|||||||
* is unimportant.
|
* is unimportant.
|
||||||
*/
|
*/
|
||||||
highbit = (highbit + k - 1) / k;
|
highbit = (highbit + k - 1) / k;
|
||||||
try.len = (highbit / BASEB) + 1;
|
ztry.len = (highbit / BASEB) + 1;
|
||||||
try.v = alloc(try.len);
|
ztry.v = alloc(ztry.len);
|
||||||
zclearval(try);
|
zclearval(ztry);
|
||||||
try.v[try.len-1] = ((HALF)1 << (highbit % BASEB));
|
ztry.v[ztry.len-1] = ((HALF)1 << (highbit % BASEB));
|
||||||
try.sign = 0;
|
ztry.sign = 0;
|
||||||
old.v = alloc(try.len);
|
old.v = alloc(ztry.len);
|
||||||
old.len = 1;
|
old.len = 1;
|
||||||
zclearval(old);
|
zclearval(old);
|
||||||
old.sign = 0;
|
old.sign = 0;
|
||||||
@@ -1746,10 +1746,10 @@ zroot(ZVALUE z1, ZVALUE z2, ZVALUE *dest)
|
|||||||
* Main divide and average loop
|
* Main divide and average loop
|
||||||
*/
|
*/
|
||||||
for (;;) {
|
for (;;) {
|
||||||
zpowi(try, k1, &temp);
|
zpowi(ztry, k1, &temp);
|
||||||
zquo(z1, temp, &quo, 0);
|
zquo(z1, temp, &quo, 0);
|
||||||
zfree(temp);
|
zfree(temp);
|
||||||
i = zrel(try, quo);
|
i = zrel(ztry, quo);
|
||||||
if (i <= 0) {
|
if (i <= 0) {
|
||||||
/*
|
/*
|
||||||
* Current try is less than or equal to the root since it is
|
* Current try is less than or equal to the root since it is
|
||||||
@@ -1758,24 +1758,24 @@ zroot(ZVALUE z1, ZVALUE z2, ZVALUE *dest)
|
|||||||
* we are done since no improvement occurred.
|
* we are done since no improvement occurred.
|
||||||
* If not, save the improved value and loop some more.
|
* If not, save the improved value and loop some more.
|
||||||
*/
|
*/
|
||||||
if ((i == 0) || (zcmp(old, try) == 0)) {
|
if ((i == 0) || (zcmp(old, ztry) == 0)) {
|
||||||
zfree(quo);
|
zfree(quo);
|
||||||
zfree(old);
|
zfree(old);
|
||||||
try.sign = (BOOL)((HALF)sign);
|
ztry.sign = (BOOL)((HALF)sign);
|
||||||
zquicktrim(try);
|
zquicktrim(ztry);
|
||||||
*dest = try;
|
*dest = ztry;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
old.len = try.len;
|
old.len = ztry.len;
|
||||||
zcopyval(try, old);
|
zcopyval(ztry, old);
|
||||||
}
|
}
|
||||||
/* average current try and quotent for the new try */
|
/* average current try and quotent for the new try */
|
||||||
zmul(try, k1, &temp);
|
zmul(ztry, k1, &temp);
|
||||||
zfree(try);
|
zfree(ztry);
|
||||||
zadd(quo, temp, &temp2);
|
zadd(quo, temp, &temp2);
|
||||||
zfree(temp);
|
zfree(temp);
|
||||||
zfree(quo);
|
zfree(quo);
|
||||||
zquo(temp2, z2, &try, 0);
|
zquo(temp2, z2, &ztry, 0);
|
||||||
zfree(temp2);
|
zfree(temp2);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
4
zmath.h
4
zmath.h
@@ -577,7 +577,7 @@ typedef struct {
|
|||||||
*/
|
*/
|
||||||
#if FULL_BITS == 64
|
#if FULL_BITS == 64
|
||||||
|
|
||||||
# if defined(__STDC__) && __STDC__ != 0
|
# if (defined(__STDC__) && __STDC__ != 0) || defined(__cplusplus)
|
||||||
# define HVAL(a,b) (HALF)(0x ## a ## b)
|
# define HVAL(a,b) (HALF)(0x ## a ## b)
|
||||||
# else
|
# else
|
||||||
# define HVAL(a,b) (HALF)(0x/**/a/**/b)
|
# define HVAL(a,b) (HALF)(0x/**/a/**/b)
|
||||||
@@ -585,7 +585,7 @@ typedef struct {
|
|||||||
|
|
||||||
#elif 2*FULL_BITS == 64
|
#elif 2*FULL_BITS == 64
|
||||||
|
|
||||||
# if defined(__STDC__) && __STDC__ != 0
|
# if (defined(__STDC__) && __STDC__ != 0) || defined(__cplusplus)
|
||||||
# define HVAL(a,b) (HALF)0x##b, (HALF)0x##a
|
# define HVAL(a,b) (HALF)0x##b, (HALF)0x##a
|
||||||
# else
|
# else
|
||||||
/* NOTE: Due to a SunOS cc bug, don't put spaces in the HVAL call! */
|
/* NOTE: Due to a SunOS cc bug, don't put spaces in the HVAL call! */
|
||||||
|
4
zrand.h
4
zrand.h
@@ -142,7 +142,7 @@
|
|||||||
#if FULL_BITS == SBITS
|
#if FULL_BITS == SBITS
|
||||||
|
|
||||||
# define SLEN 1 /* a 64 bit slot can be held in a FULL */
|
# define SLEN 1 /* a 64 bit slot can be held in a FULL */
|
||||||
# if defined(__STDC__) && __STDC__ != 0
|
# if (defined(__STDC__) && __STDC__ != 0) || defined(__cplusplus)
|
||||||
# define SVAL(a,b) (FULL)U(0x ## a ## b)
|
# define SVAL(a,b) (FULL)U(0x ## a ## b)
|
||||||
# define SHVAL(a,b,c,d) (HALF)0x ## c ## d, (HALF)0x ## a ## b
|
# define SHVAL(a,b,c,d) (HALF)0x ## c ## d, (HALF)0x ## a ## b
|
||||||
# else
|
# else
|
||||||
@@ -166,7 +166,7 @@
|
|||||||
#elif 2*FULL_BITS == SBITS
|
#elif 2*FULL_BITS == SBITS
|
||||||
|
|
||||||
# define SLEN 2 /* a 64 bit slot needs 2 FULLs */
|
# define SLEN 2 /* a 64 bit slot needs 2 FULLs */
|
||||||
# if defined(__STDC__) && __STDC__ != 0
|
# if (defined(__STDC__) && __STDC__ != 0) || defined(__cplusplus)
|
||||||
# define SVAL(a,b) (FULL)0x##b, (FULL)0x##a
|
# define SVAL(a,b) (FULL)0x##b, (FULL)0x##a
|
||||||
# define SHVAL(a,b,c,d) (HALF)0x##d, (HALF)0x##c, \
|
# define SHVAL(a,b,c,d) (HALF)0x##d, (HALF)0x##c, \
|
||||||
(HALF)0x##b, (HALF)0x##a
|
(HALF)0x##b, (HALF)0x##a
|
||||||
|
Reference in New Issue
Block a user