Older FM News

Dr. David M. Smith
Professor of Mathematics (Emeritus)
Loyola Marymount University
Los Angeles, CA


October, 2017:
Many of the files have new code that works around the Mac gfortran  
bug in versions 6.1 -- 6.4. The gfortran developers say it should be  
fixed in 6.5, but since 6.3 is currently the latest version available  
as a Mac download, it could be a while before 6.5 appears.  
They suggested a way to avoid the problem by initializing the  
array-valued functions within FM. This version should still work  
on compilers that do the initializations correctly.  
The zip file below has the updated version of all the files.  

August, 2017:
All the source code and sample output files from the various pages of  
this site have now been put into one zip file.  
This is the May, 2017 version of the package -- there have been  
a few minor changes to several of the routines since the 2016 version.  
Mac gfortran (macOS Sierra (10.12): download gfortran 6.3)  
at https://gcc.gnu.org/wiki/GFortranBinaries has a bug that causes some  
FM programs to fail, including SampleFM.f95, TestFM.f95, and 7 of  
the programs on the FM Sample Programs page.  
It affects functions that return array function values of types (FM),  
(IM), (ZM), etc. This includes cases like A = B + C, where the  
variables are multiple precision vectors or matrices.  
In SampleFM, for example, the package detects that in the Sample10  
case, the compiler has not properly initialized a multiple precision  
array associated with the function value. The program then prints  
an error message and stops.  
gfortran 5.2 was the last version I tested that was ok. There is a  
gfortran 6.1 version, but I haven't tested it.  
Version 6.4 has just been released, but the bug has not yet been fixed  
The gfortran developers say it should be fixed in version 6.5.  

January, 2017:
And now for something completely different:  
a 50-digit calculator app for iPhones and iPads.  

July, 2016:
Three new modules are available that allow programs to work with FM  
when they explicitly declare some variables to be quadruple precision  
real or complex (128 bits), double length integer (64 bits), or  
quadruple length integer (128 bits).  
These modules are more general and can be more flexible for interfacing  
multiple precision type (fm), (im), or (zm) variables with user variables  
of these other three kinds.  
See below for a link to a page for these three modules.  

March, 2016:
A new package is available for multiple-precision exact rational  
arithmetic. See below for a link to a page for the files that define  
the package. Many of the other files here have changed, with some  
new code to support the rational arithmetic routines.  
Several files on the sample program page have also changed.  

July, 2015:
Some changes have been made to FM to support programs that need  
64-bit integer arithmetic. This version works with either 64-bit or  
32-bit integers.  
This version can be useful even for programs that don't need 64-bit  
integers if having extended FM over/underflow thresholds is useful.  
See the "Installing the FM package" section of file FM_User_Manual.txt  
below for more details.  

May, 2015:
Minor changes to FM.f95 have been made that can speed up the gamma  
function in some cases. Other functions that use gamma, such as  
factorial, binomial coefficients, beta, and incomplete gamma, can  
also be faster.  

August, 2014:
A new subroutine for high-precision numerical solution of  
differential equations has been added to the sample program page.  
It uses a 14th-order Runge Kutta method.  

July, 2014:
A new package for FM interval arithmetic is available.  
See below for a paper describing the package and giving several  
examples using interval arithmetic, and the link to a page for the  
files that define the package.  

June, 2014:
A few minor changes have been made to FMZM90.f95.  
can now return correct results in a few cases where some  
input values are very large or small and the previous version  
encountered overflow or underflow and gave unknown.  

January, 2013:
A few minor changes have been made to FM.f95.  
Some unused variables have been removed, and some new code for  
exception-handling in the complex arithmetic versions of exp, sin,  
cos, sinh, and cosh can now return overflowed results where the  
previous version gave unknown.  

July, 2011:
Some new routines and programs for multiple-precision integration  
have been added to the sample program page.  

May, 2011:
Version 1.3b of the FM package (April, 2011) is now available here.  
This is an update of version 1.3 as described in the TOMS 2011 paper.  
New features in this version:  
Many of the elementary and special functions are faster than the versions in 1.2 or 1.3.  
New Fortran-08 functions have been added:  
acosh(x), asinh(x), atanh(x) -- real and complex  
bessel_j0(x), bessel_j1(x), bessel_jn(n,x) -- standard names for existing functions  
bessel_y0(x), bessel_y1(x), bessel_yn(n,x)  
bessel_jn(n1,n2,x), bessel_yn(n1,n2,x)  
atan(x,y) -- name for atan2(x,y)  
hypot(x,y) -- for sqrt( x^2 + y^2 )  
norm2(a) -- for sqrt( a(1)^2 + a(2)^2 + ... + a(n)^2 )  

February, 2011:
This is a major revision of the FM package.  
The code on the ACM web site is version 1.3 of FM (June, 2010).  
This version of the FM package is described in a paper appearing in  
Transactions on Mathematical Software 37 (February, 2011) 1 -- 18.  
New functions in this version:  
bessel_j(n,x), bessel_y(n,x)  
cos_integral(x), sin_integral(x)  
cosh_integral(x), sinh_integral(x)  
erf(x), erfc(x), log_erfc(x)  
exp_integral_ei(x), exp_integral_en(n,x)  
fresnel_c(x), fresnel_s(x)  
New features in this version:  
Array syntax for the three multiple precision derived types.  
Support for much higher precision.  
Perfect rounding is now default.  
Use of undefined multiple-precision variables is detected.  

Back to the main FM page