📄 alan miller's fortran software.htm
字号:
href="http://users.bigpond.net.au/amiller/diehard/operm5d.ata">operm5d.ata</A>,
and you will need to generate a binary file containing just over 11 million
random 32-bit integers using the random number generator which you want to
test. I have provided a short note <A
href="http://users.bigpond.net.au/amiller/diehard/diehard.txt">diehard.txt</A>
and an example <A
href="http://users.bigpond.net.au/amiller/diehard/t_taus88.f90">t_taus88.f90</A>
showing how to generate the binary file using Pierre L'Ecuyer's TAUS88 random
number generator.
<LI><A
href="http://users.bigpond.net.au/amiller/sortchar.f90">sortchar.f90</A> Code
for sorting character strings. This was made available on the
comp.lang.fortran newsgroup. Author unknown.
<LI><A
href="http://users.bigpond.net.au/amiller/VanHuffel/total_ls.f90">total_ls.f90</A>
Van Huffel's Total Least Squares. It can be used for least-squares regressions
in which there are errors in both the X and Y variables, but the user must
have first scaled the variables so that the errors in all variables are all
the same. Can be used for ODR (orthogonal distance regression) after the same
scaling, otherwise use ODRPACK (a much larger package) from netlib, or Applied
Statistics algorithm AS 286. <A
href="http://users.bigpond.net.au/amiller/VanHuffel/test_tls.f90">test_tls.f90</A>
A test program for total_ls requiring <A
href="http://users.bigpond.net.au/amiller/VanHuffel/test_tls.dat">test_tls.dat</A>.
<A
href="http://users.bigpond.net.au/amiller/VanHuffel/ptls-doc.txt">ptls-doc.txt</A>
is Van Huffel's doc-file.
<LI><A
href="http://users.bigpond.net.au/amiller/K_smooth.zip">K_smooth.zip</A> Eva
Hermann's software for kernel smoothing, both local (lokern) and global
(glkern). You will need PKUNZIP or WinZip to extract the individual files.
<LI><A href="http://users.bigpond.net.au/amiller/ewma.f90">ewma.f90</A> Code
for updating exponentially-weighted moving averages, including updating a
residual sum of squares.
<LI><A
href="http://users.bigpond.net.au/amiller/adventur.zip">Adventur.zip</A> This
is a Fortran 90 version of the classic Adventure game.
<LI><A
href="http://users.bigpond.net.au/amiller/zhangjin.zip">zhangjin.zip</A> The
source code from `Computation of Special Functions' by Zhang & Jin,
published by Wiley, 1996. As well as the `usual' functions such as gamma,
error function, Bessel and Airy functions, there are the confluent
hypergeometric, parabolic cylinder, Mathieu, spheroidal wave, and various
exponential integrals, etc.
<LI><A href="http://users.bigpond.net.au/amiller/dli.f90">dli.f90</A> Code
from the Slatec library for the logarithmic integral, Li(x), and the
exponential integrals, Ei(x) and E1(x).
<LI><A href="http://users.bigpond.net.au/amiller/dcosint.f90">dcosint.f90</A>
& <A
href="http://users.bigpond.net.au/amiller/dsinint.f90">dsinint.f90</A> are for
evaluating the cosine, Ci(x), and sine, Si(x), integrals respectively. They
are translations of Numerical Algorithm NA 12. There are corresponding test
programs <A
href="http://users.bigpond.net.au/amiller/dcitest.f90">dcitest.f90</A> &
<A href="http://users.bigpond.net.au/amiller/dsitest.f90">dsitest.f90</A>
<LI><A href="http://users.bigpond.net.au/amiller/r_zeta.f90">r_zeta.f90</A>
Riemann's zeta function for real argument. Adapted from DRIZET in the MATHLIB
library from CERN.
<LI><A href="http://users.bigpond.net.au/amiller/cincgam.f90">cincgam.f90</A>
The incomplete gamma function for complex arguments.
<LI><A href="http://users.bigpond.net.au/amiller/assndx.f90">assndx.f90</A>
The Munkres algorithm for solution of the assignment problem. Adapted from a
routine in the MATHLIB library from CERN. </LI></UL>
<LI><A href="http://users.bigpond.net.au/amiller/Easter.f90">Easter.f90</A> When
is Easter in year XXXX?
<LI><A href="http://users.bigpond.net.au/amiller/nnes.zip">nnes.zip</A> Code for
the solution of simultaneous non-linear equations using a variety of algorithms.
No documentation, but 3 example programs, one of which (MDR) contains 10
different problems. Warning: This code contains the statement `Copyright
R.S.Bain (1991)', but attempts to contact Rod Bain have been unsuccesful. This
too is a zipped file.
<LI><A href="http://users.bigpond.net.au/amiller/lanczos.f90">lanczos.f90</A> A
simple algorithm for the logarithm of the gamma function.
<LI><A href="http://users.bigpond.net.au/amiller/to_f90.f90">to_f90.f90</A> This
program takes Fortran 77 code and converts it to make it look more like Fortran
90.
<LI><A href="http://users.bigpond.net.au/amiller/kaiser.f90">kaiser.f90</A> A
simple routine to calculate the eigenvalues and eigenvectors of a symmetric
positive definite, e.g. a covariance matrix.
<LI><A href="http://users.bigpond.net.au/amiller/singlton.f90">singlton.f90</A>
The classic Singleton multi-dimensional FFT algorithm for series whose length is
not necessarily a power of 2.
<LI><A href="http://users.bigpond.net.au/amiller/fft.f90">fft.f90</A> A simple
Fast Fourier routine for the case in which the series length is a power of 2.
<LI><A href="http://users.bigpond.net.au/amiller/apstat/chirp.f90">chirp.f90</A>
The Chirp-Z algorithm for the FFT of a series of any length.
<LI><A href="http://users.bigpond.net.au/amiller/fft235.f90">fft235.f90</A> Fast
Fourier Transform for the case in which the series length is a multiple of some
or all of the integers 2, 3 and 5 (e.g. length = 60 or 240).
<LI><A href="http://users.bigpond.net.au/amiller/hartly2d.f90">hartly2d.f90</A>
Hartley 2D Fast Fourier Transform.
<LI><A name="Solve polynomials"><A
href="http://users.bigpond.net.au/amiller/pzeros.f90">pzeros.f90</A></A> Solve
polynomial equations using Aberth's method. Translated from a Fortran 77
algorithm by Dario Bini published in Numerical Algorithms, vol.13 (1996). A
short test program <A
href="http://users.bigpond.net.au/amiller/poly20.f90">poly20.f90</A> is also
available. Dario Bini has a package called MPSolve which does it in multiple
precision. It can be downloaded by ftp from:
http://fibonacci.dm.unipi.it/~bini/ric.html.
<LI><A href="http://users.bigpond.net.au/amiller/envelope.f90">envelope.f90</A>
A simple but efficient routine for finding 2D convex hulls, i.e. in finding the
minimum polygon to enclose a set of points.
<LI><A href="http://users.bigpond.net.au/amiller/median.f90">median.f90</A>
Finds the median of a set of numbers using a truncated quicksort algorithm.
<LI><A href="http://users.bigpond.net.au/amiller/hermite.f90">hermite.f90</A>
Hermite integration, that is integration of f(x).p(x) from minus infinity to
plus infinity, where f(x) is the user's function and p(x) = exp(-x^2).
<LI><A href="http://users.bigpond.net.au/amiller/hh.f90">hh.f90</A> Half-Hermite
integration, that is from zero to plus infinity. <A
href="http://users.bigpond.net.au/amiller/hh_test.f90">hh_test.f90</A> is a test
program which also serves as an illustration of how to use hh. See below for a
program to calculate in quadruple precision the weights and abscissae.
<LI><A href="http://users.bigpond.net.au/amiller/chi_sq.f90">chi_sq.f90</A>
Chi-squared distribution function. Requires as239.f90 and lanczos.f90.
<LI><A href="http://users.bigpond.net.au/amiller/hyperg.f90">hyperg.f90</A>
Calculate hypergeometric probabilities.
<LI><A href="http://users.bigpond.net.au/amiller/rhohat.f90">rhohat.f90</A>
Maximum likelihood estimation of the shape parameter of the gamma (Erlang)
distribution, including calculation of the derivatives of the log-gamma
function.
<LI><A href="http://users.bigpond.net.au/amiller/fnprod.f90">fnprod.f90</A>
Computes the distribution function for the product of two correlated normal
variates using the algorithm of Meeker & Escobar. Needs <A
href="http://users.bigpond.net.au/amiller/constant.f90">constant.f90</A> and <A
href="http://users.bigpond.net.au/amiller/qxgs.f90">qxgs.f90</A>.
<LI><A href="http://users.bigpond.net.au/amiller/twodqd.f90">twodqd.f90</A> A
translation of Kahaner & Rechard's 1984 program for bivariate integration
over triangular regions, including a test program.
<LI><A href="http://users.bigpond.net.au/amiller/simann.f90">simann.f90</A> is a
module and test program for simulated annealing based upon the algorithm of
Corana.
<HR>
<LI><A href="http://users.bigpond.net.au/amiller/ives.f90">ives.f90</A> is a
routine for generating all combinations of n objects.
<LI><A href="http://users.bigpond.net.au/amiller/mace.f90">mace.f90</A> is an
F90 version of Jerry Friedman's program to estimate multiple optimal
transformations for regression and correlation by alternating conditional
expectation estimates.
<CENTER>
<H2>NAS FortranPlus<BR></H2></CENTER><A
href="http://users.bigpond.net.au/amiller/NAS.html">Software for NAS
FortranPlus</A> This exploits the 10-byte REAL data type which is supported by
this compiler. At the moment, it only contains a special version of my quadruple
precision package which gives about 38 decimal digit representation of quadruple
precision numbers. N.B. It is extremely unlikely that this will give correct
answers with any other compiler (e.g. Salford) which supports 10-byte REALs.
<HR>
<CENTER>
<H2>Code for Imagine1's free F compiler</H2></CENTER>
<CENTER>
<H2>Windows version ONLY</H2></CENTER>
<CENTER><A href="http://users.bigpond.net.au/amiller/F.html">Click
here</A></CENTER>
<HR>
<CENTER>
<H2>Some linear least-squares examples and tests<BR></H2></CENTER><BR><FONT
size=2>
<HR>
<UL>
<LI><A
href="http://users.bigpond.net.au/amiller/lsq/fit_poly.f90">fit_poly.f90</A>
Fit a polynomial to a set of (x,y) data.
<LI><A
href="http://users.bigpond.net.au/amiller/lsq/quadsurf.f90">quadsurf.f90</A>
Fit a quadratic surface to a set of (x,y,z) data, i.e. fit:<BR>Z = b0 + b10.X
+ b01.Y + b20.X^2 + b11.X.Y + b02.Y^2 <BR>There is a module <A
href="http://users.bigpond.net.au/amiller/lsq/ridge.f90">ridge.f90</A> for
ridge regression / regularization. It uses the output from the module lsq to
form the singular value decomposition (SVD) and offers a choice of 4 different
methods of regularization, or the user can input their own vector to add to
the diagonal of the X'X-matrix.
<LI><A
href="http://users.bigpond.net.au/amiller/lsq/wtd_quin.f90">wtd_quin.f90</A>
This is a program to fit a quintic polynomial with exponential weighting of
past values. It was developed for someone who had reason to believe that his
process was well approximated locally by a quintic, but wanted to give
progressively less weight to old observations. The slope and 2nd derivative
(acceleration) of the smoothing polynomial are output after each new case is
read. This is suitable for real time applications. It demonstrates the use of
the least-squares package's updating algorithm.
<LI><A
href="http://users.bigpond.net.au/amiller/lsq/spline5.f90">spline5.f90</A>
This program fits quintic splines with user-chosen but evenly-spaced knots.
The slope and 2nd derivative (acceleration) of the smoothing polynomial are
output, but only after all of the data have been read. The smoothed fit and
derivatives at any point are based upon the data from both before and after
the point.
<HR>
<P>
<H2>
<CENTER>Some other useful web sites:</CENTER></H2>
<P>Try the <A href="http://www.fortran.com/fortran">Fortran Market</A> for
general information on Fortran compilers, tutorials, books and access to some
sources of Fortran code, Gary Scott's <A
href="http://www.fortranlib.com/">Fortran Library</A> web site. <BR>The
Fortran90 FAQ (frequently asked questions) can be obtained from: <A
href="http://www.ifremer.fr/ditigo/molagnon/fortran90/engfaq.html">F90FAQ</A>.
<BR>For an extensive set of routines for sorting and ranking real numbers see
<A href="http://www.fortran-2000.com/">OrderPack</A>. <BR><A
href="http://www.nag.co.uk/nagware/Examples.asp">NAG F90 Software
Repository</A> is a source of useful Fortran 90 code. <BR>The ACM collection
of <A href="http://www.netlib.org/toms/index.html">TOMS algorithms</A> is a
source of refereed code, mainly in Fortran, for a wide range of numerical
calculations. <BR>A collection of functions and subroutines covering a wide
area of mathematical <BR>John Monahan's site contains the software from his
book `Numerical Methods of Statistics'. It covers a very similar are to this
web site, and is at: <A
href="http://www4.stat.ncsu.edu/~monahan/aug00/toc.htm">Monahan's web
site</A>. operations can be found at <A
href="http://perso.wanadoo.fr/jean-pierre.moreau/fortran.html">Jean-Pierre
Moreau's web site</A>. <BR>For a guide to available mathematical software,
refer to <A href="http://gams.nist.gov/">GAMS</A>, and for the numerical
analysis FAQ <A
href="http://www.mathcom.com/corpdir/techinfo.mdir/scifaq/">numafaq</A>.
<BR>If you are interested in object-oriented programming in Fortran, you
should see <A
href="http://www.cs.rpi.edu/~szymansk/oof90.html">oof90.html</A>. <BR>For
statistical software in a variety of languages try <A
href="http://lib.stat.cmu.edu/">statlib</A>. For distribution functions,
random number generation and other statistical programs, try <A
href="http://odin.mdacc.tmc.edu/pub/source">cdflib/ranlib</A>. <BR>For
optimization, particularly constrained optimization, see <A
href="http://plato.la.asu.edu/guide.html">the Optimization Decision Tree</A>,
or Arnold Neumaier's <A
href="http://www.mat.univie.ac.at/~neum/glopt.html">Global Optimization</A>
web site. The latter also contains many general links to mathematical and
statistical software. <BR>For multivariate normal integrals, and for multiple
integration in general, look at <A
href="http://www.math.wsu.edu/math/faculty/genz/homepage">Alan Genz's</A> home
page. <BR>Michel Olagnon's ORDERPACK is for sorting and ranking. It can be
found at: <A href="http://www.fortran-2000.com/">ORDERPACK</A>. <BR>Australian
Fortran users will find the web page of <A
href="http://www.labyrinth.net.au/~ctrans">Computer Transition Systems</A>
useful. (This company distributes Lahey, Salford, Edinburgh Portable
Compilers, Digital Visual Fortran and other compilers in Australia.) <BR>To
download Lahey's cheap Fortran 90 compiler click on <A
href="http://www.lahey.com/">ELF90</A>. </P><BR>There is an interpreter for a
subset of Fortran 90 available from: <A href="http://www.hicest.com/">Georg
Petrich's interpreter</A>. I have not tried it myself, so comments would be
welcome. It can be downloaded freely, but I understand it is a shareware
product. <BR>For a wide range of code for the FFT, in several computer
languages, see: <A href="http://www.fftw.org/links.html">The FFT Home
Page</A>. and: <A href="http://www.jjj.de/fft/fftpage.html">Another FFT Home
Page</A>.
<P>
<H2><B>email:</B> <A
href="mailto:amiller@bigpond.net.au">mailto:amiller@bigpond.net.au</A><BR>
<P></P>
<HR>
<CENTER><I>Updated 4 February
2004</I></CENTER></H2></LI></UL></FONT></LI></FONT></FONT></FONT></FONT></FONT></FONT></FONT></FONT></FONT></FONT></FONT></BODY></HTML>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -