News:
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. | |
Calc-50 |
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. | |
Functions DOT_PRODUCT, MATMUL, PRODUCT, and SUM | |
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) | |
erfc_scaled(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) | |
log_integral(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. |