Our great sponsors
-
reduce-algebra
reduce-algebra: a portable general-purpose computer algebra system, automatically mirrored from https://svn.code.sf.net/p/reduce-algebra/code/. Please visit the REDUCE Homepage, https://reduce-algebra.sourceforge.io/, to report any bugs or request assistance.
-
InfluxDB
Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.
Most of the old Fortran code isn't that great. To the extent it's optimized, it's optimized for PDP era hardware where memory was fast, floating point was slow, fma didn't exist, vectorization didn't exist, computers weren't fast enough to do tedious symbolic math to find better routines, and they weren't fast enough to test hundreds of millions of inputs to ensure correctness and accuracy. The datastructures, algorithms and tuning and testing were never great, and are worse on modern computers. For a simple example of how much of a difference this can make, look at https://github.com/JuliaMath/Bessels.jl which is often 10x faster than AMOS (the old reliable Fortran code).
I idly wonder how these compare to the arbitrary-precision implementations in REDUCE (https://github.com/reduce-algebra/reduce-algebra/blob/master...) - written mostly by me, 30 years ago in the unusual, Lisp-based but largely procedural, language of REDUCE. Can't remember much about the subject now.
The citations in the Julia source file are certainly newer - Abramowitz and Stegun was basically all I had.
I think the REDUCE functions were considered quite fast (for higher precision) at the time, but it was certainly true that they weren't tested as thoroughly as would be the norm now.
If you need to clear memory in the local scope, you need to deallocate a variable explicitly. Otherwise, all Fortran variables are cleared automatically when they go out of scope. One exception are Fortran pointers (different from C pointers) which are discouraged unless really necessary. We have a discussion for a high-level wrapper for files here: https://github.com/fortran-lang/stdlib/issues/14. So, it's in scope we just haven't gotten far with the design and implementation.
I wrote https://github.com/toddjm/projects/blob/master/science/dqmc.... in 1999, and it compiles and runs just fine with gfortran on my Mac.
So I'd say you're good for at least 23 years :)