Skip to content

Releases: lcn2/calc

calc 2.15.0.7 release

28 May 02:12
Compare
Choose a tag to compare

The following are the changes in this release:

Thanks to GitHub user @bambooleafz a critical bug (GitHub issue
#148 - https://github.com/lcn2/calc/issues/148) they identified
was fixed.

calc 2.15.0.6 release

09 Feb 16:51
Compare
Choose a tag to compare
calc 2.15.0.6 release Pre-release
Pre-release

The following are the changes in this release:

 Thanks to GitHub user @ashamedbit, a long standing memory leak in
 zrandom.c has been fixed.

calc 2.15.0.5 release

02 Feb 05:17
Compare
Choose a tag to compare

The following are the changes in this release:

 make clobber now removes the legacy files: have_fpos.h, help/man,
 and help/usage.  The latter 2 are now managed as help aliases
 in help.c.

 make install now removes the legacy files: ${HELPDIR}/man
 and ${HELPDIR}/usage.

 Fixed a problem where, when calc was linked with and uses GNU
 readline then for any multi-line copy-and-paste, only the first
 line is executed.  Thanks to GitHub user @malfisya for reporting
 this problem, and thanks to GitHub user @gromit1811 for doing
 the research needed to overcome deficiencies in the GNU readline
 documentation, and for supplying the work-a-round to allow
 multi-line copy-and-paste to work as expected!

calc 2.15.0.4 release

21 Dec 14:14
Compare
Choose a tag to compare

The following are the changes in this release:

Fixed bug that caused calc to fail to compile filepos2z() in file.c
on little endian machines for the Debian apcalc package.  Thanks to
Martin Buck (m at rtin-buck dor de) for for fix.

Removed unused macros from zmath.h:

SWAP_B32_IN_HASH(dest, src)
SWAP_B16_IN_HASH(dest, src)
SWAP_B8_IN_HASH(dest, src)
SWAP_B32_IN_FLAG(dest, src)
SWAP_B16_IN_FLAG(dest, src)
SWAP_B8_IN_FLAG(dest, src)

When SWAP_HALF_IN_B32(dest, src), SWAP_B32_IN_FULL(dest, src),
SWAP_B16_IN_HALF(dest, src), SWAP_B32_IN_bool(dest, src),
or SWAP_B32_IN_LEN(dest, src), SWAP_HALF_IN_FILEPOS(dest, src)
is an assignment such as:

(*(dest) = *(src))

We now case the dest and src pointers to the proper type before
referencing and performing the assignment.

Documented unexpected behavior when calc is running in
"shell script mode" and the prompt builtin function is used
without the -p flag.  Updated help/prompt, help/unexpected
and the calc man page accordingly.

Unless calc is given the -p command line option, calc will reopen
stdin as /dev/null instead of just closing stdin.  This prevents
subsequent opens grabbing the 1st file descriptor.

Disable regress tests 4709, 4710, and 7763 because they print
multi-byte sequences, which are just fine for calc, the awk
used to evaluate the regression suite output in some legacy
systems report a "multibyte conversion failure".

Added a number of missing Makefile variables to the "make env" rule.

The man command is used to format the calc.1 man page into calc.usage.

The "help calc" command now prints the formatted calc man page (calc.usage).
The "help man" command now prints the formatted calc man page (calc.usage).
The "help usage" command now prints the formatted calc man page (calc.usage).

The file, calc.cat1, is formed by gzipping the calc.usage
formatted man page.  The calc.cat1 is installed as the calc
cat section 1 man page.

Updated the Copyright string in version.c to refer to
the COPYING file and the "help copying" command.

Added calc.cat1 to .gitignore.  Using "sort -d -u" to sort .gitignore content.

Avoiding use of modern [[ and ]] in Makefile for those legacy systems
whose shell do not support them.  Be sure to use ||'s between []'s
to avoid problems with legacy shell such as the Bourne shell. *sigh*

Fixed the order of "help full" to match the order of topics listed
buy the "help help" command.

Sorted the halias[] help topics table in help.c using sort -d -u.

calc 2.15.0.2 release

08 Dec 22:24
Compare
Choose a tag to compare

The following are the changes in this release:

Updated BUGS about MSYS2 on Windows compiling of calc.

Added more git related checks and sanity checks to chk_tree.

Added ${FSANITIZE} make variable to Makefile.config to hold
common Address Sanitizer (ASAN) optins to modern Linux and macOS.
The Address Sanitizer is NOT enabled not compiled in by default.
Improved comments in Makefile.local for RHEL9.2 (Linux) and for
macOS 14.0 that, when uncommented and calc is recompiled (i.e.,
make clobber all) will enable the Address Sanitizer (ASAN) for calc.

Fixed memory leaks in the logn, aversin, acoversin, avercos,
acovercos, ahaversin, ahavercos, ahacovercos, aexsec,
aexcsc, and acrd.

Fixed a compile error in zmath.h that impacted legacy 32-bit Big
Endian machines.  Thanks goes to GitHub user @gromit1811 for their
pull request.

Fixed the check for <sys/mount.h> when forming have_sys_mount.h.
Thanks goes to GitHub user @gromit1811 for their pull request.

Added "STATIC bool blum_initialized = false" to zrandom.c to improve
how the code detects if the Blum-Blum-Shub pseudo-random number
generator is seeded or not, and how to free the state correctly.

NOTE: There is a very minor memory leak in zrandom.c that will be
fixed in a later release.

calc 2.15.0.1 release

05 Oct 12:27
Compare
Choose a tag to compare

The following are the changes in this release:

The tarball for calc version 2.15.0.0 was missing version.h.
The version.h is now listed as part of the calc distribution.

Added the following new trigonometric functions:

versin(x [,eps])	versed trigonometric sine
coversin(x [,eps])	coversed trigonometric sine
vercos(x [,eps])	versed trigonometric cosine
covercos(x [,eps])	coversed trigonometric cosine
aversin(x [,eps])	inverse versed trigonometric sine
acoversin(x [,eps])	inverse coversed trigonometric sine
avercos(x [,eps])	inverse versed trigonometric cosine
acovercos(x [,eps])	inverse coversed trigonometric cosine
haversin(x [,eps])	half versed trigonometric sine
hacoversin(x [,eps])	half coversed trigonometric sine
havercos(x [,eps])	half versed trigonometric cosine
hacovercos(x [,eps])	half coversed trigonometric cosine
ahaversin(x [,eps])	inverse half versed trigonometric sine
ahacoversin(x [,eps])	inverse half coversed trigonometric sine
ahavercos(x [,eps])	inverse half versed trigonometric cosine
ahacovercos(x [,eps])	inverse half coversed trigonometric cosine
exsec(x [,eps])		exterior trigonometric secant
aexsec(x [,eps])	inverse exterior trigonometric secant
excsc(x [,eps])		exterior trigonometric cosecant
aexcsc(x [,eps])	inverse exterior trigonometric cosecant
crd(x [,eps])		trigonometric chord of a unit circle
acrd(x [,eps])		inverse trigonometric chord of a unit circle
cas(x [,eps])		trigonometric cosine plus sine
cis(x [,eps])		Euler's formula

As Msys2 is a fork of Cygwin, if the OSNAME is Msys, the Cygwin
target will be used.  Thanks to GitHub user @iahung2 for the
pull request.

Support for win32 and DJGPP has been dropped.  Calc version
2.14.3.5 was the last to make references to win32 and make
references to DJGPP.  Future versions of calc may work under
those systems, we just elected to remove the somewhat out of
date and awkward `win32.mkdef` and related win32 references.

If you are a win32 user, please feel free to create a win32
target in Makefile.target and submit as a pull request.
If you are a DJGPP user, please feel free to create a DJGPP
target in Makefile.target and submit as a pull request.
Until someone can test such systems, we prefer to wait
until someone is able to test and supply a pull request.

Added PTR_LEN (length of a pointer) and PTR_BITS (bit length
of a pointer) to longbits.h.

Moved calc version definition from version.c to version.h.

Sorted the order of symbols printed by "make env".

Test if <stdbool.h> exists and set HAVE_STDBOOL_H accordingly
in have_stdbool.h.  Added HAVE_STDBOOL_H to allow one to force
this value.

Added "bool.h" include file to support use of boolean symbols,
true and false for pre-c99 C compilers.  The "bool.h" include
file defines TRUE as true, FALSE as false, and BOOL as bool:
for backward compatibility.

Replaced in C source, TRUE with true, FALSE with false, and
BOOL with bool.

Fixed have_statfs optional executable file extension ${EXT{ in
the ${UTIL_PROGS} make variable.

Test if <stdint.h> exists and set HAVE_STDINT_H accordingly
in have_stdint.h.  Added HAVE_STDINT_H to allow one to force
this value.

Test if <inttypes.h> exists and set HAVE_INTTYPES_H accordingly
in have_inttypes.h.  Added HAVE_INTTYPES_H to allow one to force
this value.

Added c_chk.c to check the compiler and C include for calc
requirements.  If you are unable to compile this program, or
if this program when compiles does not exit 0, then your C
compiler and/or C include fails to meet calc requirements.
Compilers that are at least c99 MUST be able to compile this
program such that when run will exit 0.

The "make hsrc" file will attempt to compile and run c_chk and
will warn if the C compiler and/or C include fails to meet
calc requirements.  The "make debug" system will run c_chk -c
to print information about the C compiler and C include.
Currently failure to compile cc_chk.c or c_chk exiting non-0
will just print "WARNING!!" strings to stderr.

The make chk_c file also forms status.chk_c.h which either
defines CHK_C when the C compiler and select include files
appear to meet calc requirements, or undefines CHK_C
when it does not.

Added int.h as a central place for calc integer types and
integer macros.

Removed `-R release_file` and `-r release_file` command
line options from `ver_calc`.  Add `-h` option.  Updated
comments in "README.RELEASE", which serves as the contents
of the calc command "help release".

Added log2(x [,eps]) builtin function.  When x is an integer
power of 2, log2(x) will return an integer, otherwise it will
return the equivalent of ln(x)/ln(2).

Removed CALC2_COMPAT in favor of ckecking if MAJOR_VER < 3.

The sign element in a ZVALUE is now of type SIGN, which is either
SB32 when MAJOR_VER < 3, or a bool otherwise.

The len element in a ZVALUE is of type LEN.  LEN type is SB32 when
MAJOR_VER < 3, or a uintptr_t otherwise.

Setting an invalid epsilon via the epsilon(value) or confiv("epsilon",
value) triggers an error.  The epsilon value must be: 0 < epsilon < 1.

Added new logn(x, n [,eps]) builtin to compute logarithms to base n.

Verify that eps arguments (error tolerance arguments that override
the default epsilon value) to builtin functions have proper values.
Previously the eps argument had little to no value checks for
many builtin functions.

Document in help files for builtin functions that take eps arguments,
the LIMIT range for such eps values.

Removed old Makefile testing rules for make dbx and make gdb.

Improved "make run" to execute calccalc using shared libraries
from the local directory, and with reading of the startup scripts
disabled.

Changed "make prep" to perform various tests that are used to
help verify that calc is ready for a release.  Added the
update_ver tool, (formerly verupdate) and the trailblank tool
that existed outside of the calc source base but neverthless
used in the calc release process.  Both of these tools are used
by "make prep".

Added Makefile testing rule "make testfuncsort" to check for
the sort of the builtin function list.  Changed the order that
builtin functions are listed by "show builtin" and the help/builtin
to match the sorting of "LANG=C LC_ALL=C sort -d -u".

Added c_to_q(COMPLEX *c, bool cfree) to make is easier to convert
a COMPLEX value that is real (imag part is 0) into a NUMBER and
optionally free the COMPLEX value.  The func.c code now uses c_to_q().

Added q_to_c(NUMBER *q) to make it easier to convert a NUMBER
into an allocated COMPLEX value.

Added new vercos(x, [,eps]) for versed cosine and covercos(x, [,eps])
for inverse versed cosine.

Added new avercos(x, [,eps]) for inverse versed cosine and acovercos(x, [,eps])
for inverse coversed cosine.

Improved comments about use of the ${CALC_ENV} Makefile variable.
Noted in Makefile.cal where and how the ${CALC_ENV} is used.
Use ${CALC_ENV} Makefile variable were needed.

Modified regression test cal/regress.cal: in some cases test numbers
were adjusted.  Add comments indicate which test numbers apply to
which code.  Indicated where there is room for new tests.
Expanded the end of test numbers from 9999 to  99999.

To make the meaning a bit more clear in cal/regress.cal, we have
renamed the following test calc resource files that are related to
the calc regression test suite:

cal/test1700.cal -> cal/test8000.read.cal
cal/test2300.cal -> cal/test2300.obj_incdec.cal
cal/test2600.cal -> cal/test2600.numfunc.cal
cal/test2700.cal -> cal/test2700.isqrt.cal
cal/test3100.cal -> cal/test3100.matobj.cal
cal/test3400.cal -> cal/test3400.trig.cal
cal/test4000.cal -> cal/test4000.ptest.cal
cal/test4100.cal -> cal/test4100.redc.cal
cal/test4600.cal -> cal/test4600.fileop.cal
cal/test5100.cal -> cal/test5100.newdecl.cal
cal/test5200.cal -> cal/test5200.globstat.cal
cal/test8400.cal -> cal/test8400.quit.cal
cal/test8500.cal -> cal/test8500.divmod.cal
cal/test8600.cal -> cal/test8600.maxargs.cal
cal/set8700.cal -> cal/test8700.dotest.cal
cal/test8900.cal -> cal/test8900.special.cal
cal/test9300.cal -> cal/test9300.frem.cal

Added to test 94dd, read of a number of new calc resource files
that are not already read as a result of the calc regression test suite.

Fixed more documentation and code comments that referred to the
old additive 55 (a55) shuffle pseudo-random number generator.
We have been using the subtractive 100 shuffle pseudo-random
number generator in place of the additive 55 generator for a
while now.

Improved help files trigonometric functions.  They were corrected
to indicate that complex arguments are allowed: an oversight
from long ago when those trigonometric functions were expanded
to include complex arguments.  The EXAMPLE sections were expanded
and made consistent, where applicable, across the trigonometric
help files.  Documented libcalc functions in the SEE ALSO sections.

Improved "SEE ALSO" for the hyperbolic function help files.

Expanded the calc regression test suite test 34dd to test various
real and complex values for trigonometric functions.

Added complex multiple approximation function to commath.c so
that users of libcalc may directly round complex number to
nearest multiple of a given real number:

E_FUNC COMPLEX *cmappr(COMPLEX *c, NUMBER *e, ...
Read more

calc v2.14.3.5 release

17 Aug 22:06
Compare
Choose a tag to compare

The following are the changes in this release:

Under macOS, to reduce dependency chains, we remove functions
and data that are unreachable by the entry point or exported
symbols.  In particular, the macOS linker is used with both
"-dead_strip" and "-dead_strip_dylibs".

The libcalc shared library is now linked with libcustcalc.

calc 2.14.3.4 release

15 Aug 06:37
Compare
Choose a tag to compare
calc 2.14.3.4 release Pre-release
Pre-release

The following are the changes in this release:

Fix typo in the `make debug` Makefile rule.

Improved .gitignore to ignore .static, calc-static,
sample_many-static and sample_rand-static.

Improved error messages when trying to compile with
with one calc type (when BLD_TYPE=calc-dynamic-only or
BLD_TYPE=calc-static-only) and install with the other.

When installing with BLD_TYPE=calc-static-only, the
installed calc and calc-static are links to each other.
Thanks to GitHub user @TurtleWilly for this suggestion.

The dynamic shared libraries are not installed if they are not
built.  So when installing with BLD_TYPE=calc-static-only, the
install rule will not attempt to install dynamic shared libraries.
Thanks to GitHub user @TurtleWilly for bringing to our attention,
problems related to building a statically linked calc under macOS.

Updated comments in Makefile.local for how to Diagnosing memory,
thread, and crash issues under RHEL and macOS.

We no longer support the Makefile variable ${ALLOW_CUSTOM} to be empty.
Normally ${ALLOW_CUSTOM} is:

ALLOW_CUSTOM= -DCUSTOM

Now, to disable custom disable custom even if -C is given, use:

ALLOW_CUSTOM="-UCUSTOM"

Dropped support of Makefile.simple and custom/Makefile.simple.
The calc version 2.14.3.0 is the last release that supported
the Makefile.simple and custom/Makefile.simple files.
Now, a make that supports makefile conditional syntax is required.
The simple target, a target that only was used for Makefile.simple
was removed.

Moved makefile variables that configure calc and configure how to
compile calc from Makefile into a new Makefile.config file.

The Makeifle includes the Makefile.config file.
The cal/Makeifle includes the Makefile.config file.
The cscript/Makeifle includes the Makefile.config file.
The custom/Makeifle includes the Makefile.config file.
The help/Makeifle includes the Makefile.config file.

Now, the Makefile.config file will consistently configure
calc and how calc is compiled and built by all calc Makefiles.
The custom/Makefile no longer includes Makefile.

The platform target section from the old Makefile has been moved
to a new file, Makefile.target.  Improved the format and comments
in target information.

The Makeifle includes the Makefile.target file.
The cal/Makeifle includes the Makefile.target file.
The cscript/Makeifle includes the Makefile.target file.
The custom/Makeifle includes the Makefile.target file.
The help/Makeifle includes the Makefile.target file.

Now, the Makefile.target file will consistently set
target information for all calc Makefiles.

The cal/Makeifle includes the Makefile.local file.
The cscript/Makeifle includes the Makefile.local file.
The custom/Makeifle includes the Makefile.local file.
The help/Makeifle includes the Makefile.local file.

Thus, one may modify or append many Makefile variables
in all calc Makefiles.

Removed the ${CAL_PASSDOWN}, ${HELP_PASSDOWN}, ${HELP_PASSDOWN},
${CSCRIPT_PASSDOWN} Makefile variables as the new Makefile
include files keep Makefile variables in sync.

Fixed the ability of calc to compile when CUSTOM is undefined
(i.e., -UCUSTOM).  The libcustcalc is always built, regardless
of the $(ALLOW_CUSTOM} Makefile variable.  However when CUSTOM
is undefined, the bulk of custom functions are not defined.

Dropped the use of Makefile variable ${SET_INSTALL_NAME}.
Under macOS it was always needed, elsewhere it was not.

Added Makefile variable ${VER} to hold the calc major release version.
The calc major release version is a 3 level version (x.y.z).

Under macOS, the current version of both libcalc and libcustcalc
shared libraries are set to the current calc major release version.

Under macOS, to reduce dependency chains, we remove functions and
data that are unreachable by the entry point or exported symbols.
In particular, the macOS linker is used with "-dead_strip" by default.

While calc on macOS will execute if linker used with "-dead_strip_dylibs"
and CUSTOM is defined, other applications that use libcalc but not
libcustcalc (such as sample_many and sample_rand) will fail to execute
due to missile symbols.  Therefore "-dead_strip_dylibs" is not used
by default when ALLOW_CUSTOM is "-DCUSTOM" under macOS.
Thanks to GitHub user @TurtleWilly for bringing to our attention,
problems related to use of  "-dead_strip_dylibs".

When installing shared libraries, libcalc.x.y.z will be a link
to the libcalc shared library and libcustcalc.x.y.z will be a link
to the libcustcal shared library.

calc 2.14.3.1 release

14 Aug 04:33
Compare
Choose a tag to compare
calc 2.14.3.1 release Pre-release
Pre-release

The following are the changes in this release:

IMPORTANT: This is just a test release. Please do not use.

calc 2.14.3.0 release

02 Aug 23:35
Compare
Choose a tag to compare

The following are the changes in this release:

Updated COPYING to include the actual text of "The Unlicense".
Made minor formatting changes to the file.

The Darwin specific ${DARWIN_ARCH}, thay by default was unset,
is now the ${ARCH_CFLAGS} Makefile variable.  Comments about
various "-arch name" have been moved to the ${ARCH_CFLAGS} area.

For old Apple Power PC systems, the following is added:

COMMON_CFLAGS+= -std=gnu99
COMMON_LDFLAGS+= -std=gnu99
ARCH_CFLAGS+= -arch ppc

Old Apple Power PC systems should be detected by the
"uname -p" command returning "powerpc".  One may force the
Power PC mode by adding to the end of any make command:

make ...make_args... target=Darwin arch=powerpc

or by adding the following in the Makefile.local file:

target= Darwin
arch= powerpc

Improved the output of the calcinfo rule by adding echos
of various uname values as well as some top Makefile variables.

Fixed the BUGS file with respect to using `make debug`.

Added a final ls of `debug.out` for `make debug`.