News:
January, 2024:
| This update of version 1.4 of the FM package has several slight | |
| speedups to various functions. |
August, 2023:
| For this update of version 1.4 of the FM package there have been | |
| a few more improvements to the way overflow, underflow and unknown | |
| results are handled. In addition, a general cleanup of the code | |
| has been done to improve its readability. |
July, 2022:
| For this update of version 1.4 of the FM package I have made | |
| some improvements to the way overflow and underflow results are | |
| handled. These exceptions are rare, but in cases like expressions | |
| containing 1 + 2*exp(-x**2), when the exponential underflows, | |
| previous versions returned unknown after multiplying by 2. | |
| Now there is some extra information saved so that most of the | |
| time FM can tell that 2 times the underflowed exponential is still | |
| underflow. Now adding 1 to that gives 1 instead of unknown. |
September, 2021:
| For this release of version 1.4 of the FM package I have | |
| learned of a way to modify FM to work around the gfortran bug | |
| mentioned in the August, 2021 release of the package (thanks, | |
| Luo Zhangping). All the sample and test programs below now | |
| work on all three compilers I have tested. | |
| Read more details about the standard FM 1.4 here |
August, 2021:
| A new version 1.4 of the FM package is available. | |
| The changes in version 1.4 were made to enable a thread-safe | |
| special version of FM to be created, see file FM_parallel.f95. | |
| Read more details about the parallel FM 1.4 here |
February, 2021:
| I have started making complex FM versions of some of the mathematical | |
| special functions. Functions in the Feb., 2021 version that now support | |
| complex input and results: | |
| erf(z), erfc(z), erfc_scaled(z) -- error function, complimentary | |
| error function, scaled complimentary error function, | |
| gamma(z), log_gamma(z), factorial(z) -- gamma, log_gamma, z! |
March, 2019:
| There is a new version for the Calc-50 high-precision calculator app | |
| for iPhones and iPads. Version 1.3 has added a new function for | |
| extrapolation and the sum function has been enhanced so it can | |
| handle infinite series automatically. | |
| There are new example pages showing how these features can be used. | |
| Calc-50 |
January, 2018:
| This multiple precision web site has been moved to a new server. | |
| The old site at http://myweb.lmu.edu/dmsmith/FMLIB.html has been shut | |
| down, and any reference to any of the pages at the old myweb site | |
| should now be automatically re-directed to this page on the new server: | |
| http://dmsmith.lmu.build |
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. |