📄 alan miller's fortran software.htm
字号:
href="http://users.bigpond.net.au/amiller/NSWC/dspslv.f90">dspslv.f90</A>
Solution of sparse systems of linear equations using Gaussian elimination.
<LI><A href="http://users.bigpond.net.au/amiller/NSWC/dsvdc.f90">dsvdc.f90</A>
Calculates the singular-value decomposition (SVD) of a real matrix. There is
also a test program: --
<LI><A href="http://users.bigpond.net.au/amiller/NSWC/t_svd.f90">t_svd.f90</A>
<LI><A href="http://users.bigpond.net.au/amiller/NSWC/fft.f90">fft.f90</A>
Fast Fourier Transform (FFT) for any length of series which has no prime
factor greater than 23. Also the inverse and multivariate FFT.
<LI><A href="http://users.bigpond.net.au/amiller/NSWC/hbrd.f90">hbrd.f90</A>
Solve sets of non-linear equations using Powell's Hybrid algorithm.
<LI><A
href="http://users.bigpond.net.au/amiller/NSWC/specfunc.zip">specfunc.zip</A>
A zip file containing all of the special functions from the NSWC library.
<LI><A
href="http://users.bigpond.net.au/amiller/NSWC/polyarea.f90">polyarea.f90</A>
Calculates the area of a polygon.
<LI><A
href="http://users.bigpond.net.au/amiller/NSWC/p_intcpt.f90">p_intcpt.f90</A>
Finds the crossing points of a finite line and a polygon.
<LI><A
href="http://users.bigpond.net.au/amiller/NSWC/bnd_solv.f90">bnd_solv.f90</A>
Solve banded linear equations using compact storage of the banded matrix.
There is a complex version of this -- <A
href="http://users.bigpond.net.au/amiller/NSWC/cbnd_slv.f90">cbnd_slv.f90</A>
<LI><A
href="http://users.bigpond.net.au/amiller/NSWC/big_solv.f90">big_solv.f90</A>
Solves a large set of n general linear equations using out-of-core methods,
requiring storage for about n^2/4 values.
<LI><A href="http://users.bigpond.net.au/amiller/NSWC/qagi.f90">qagi.f90</A>
Adaptive one-dimensional integration over infinite or semi-infinite ranges
(adapted from QUADPACK).
<LI><A href="http://users.bigpond.net.au/amiller/NSWC/qxgs.f90">qxgs.f90</A>
Adaptive one-dimensional integration over finite ranges (adapted from TOMS
algorithm 691).
<LI><A
href="http://users.bigpond.net.au/amiller/NSWC/inc_gam.f90">inc_gam.f90</A>
The incomplete gamma function and its inverse. Test program: <A
href="http://users.bigpond.net.au/amiller/NSWC/t_incgam.f90">t_incgam.f90</A>
based on TOMS algorithm 654.
<LI><A
href="http://users.bigpond.net.au/amiller/NSWC/constant.f90">constant.f90</A>
This is a module of constants used by some of the functions in the NSWC
collection of routines.
<LI><A
href="http://users.bigpond.net.au/amiller/NSWC/qsortd.f90">qsortd.f90</A> A
subroutine which implements a quicksort algorithm without changing the input
array. It returns an integer array containing the order.
<LI><A href="http://users.bigpond.net.au/amiller/NSWC/smplx.f90">smplx.f90</A>
Linear programming using the simplex algorithm. This is a translation of the
Fortran 66 program from the NSWC (Naval Surface Warfare Center) library
written by Alfred Morris. There is also a simple test program <A
href="http://users.bigpond.net.au/amiller/NSWC/t_smplx.f90">t_smplx.f90</A>.
Needs the module <A
href="http://users.bigpond.net.au/amiller/NSWC/constant.f90">constant.f90</A>
which defines the precision and returns certain machine constants.
<LI><A href="http://users.bigpond.net.au/amiller/NSWC/dmexp.f90">dmexp.f90</A>
Calculates the exponential of a matrix.
<LI><A href="http://users.bigpond.net.au/amiller/NSWC/fprob.f90">fprob.f90</A>
Cumulative F distribution. Requires <A
href="http://users.bigpond.net.au/amiller/NSWC/bratio.f90">bratio.f90</A> for
the incomplete gamma function, and <A
href="http://users.bigpond.net.au/amiller/NSWC/constant.f90">constant.f90</A>.
N.B. bratio.f90 contains code for a number of special functions including the
error function, the logarithm of the gamma function, the logarithm of the beta
function, and the digamma function. bratio was translated from the NSWC
library.
<LI><A
href="http://users.bigpond.net.au/amiller/NSWC/dceigv.f90">dceigv.f90</A>
Calculate the eigenvalues and vectors of a general complex matrix. Another
routine from the NSWC library. Needs <A
href="http://users.bigpond.net.au/amiller/NSWC/constant.f90">constant.f90</A>.
Based upon EISPACK routines. There is a test program: <A
href="http://users.bigpond.net.au/amiller/NSWC/t_dceigv.f90">t_dceigv.f90</A>
<LI><A href="http://users.bigpond.net.au/amiller/NSWC/locpt.f90">locpt.f90</A>
Is a point inside a polygon?
<LI><A href="http://users.bigpond.net.au/amiller/NSWC/qtcrt.f90">qtcrt.f90</A>
Solve quadratic, cubic and quartic equations. Includes a short driver program,
and hence includes the interfaces needed for your program. Adapted from the
NSWC library.
<LI><A
href="http://users.bigpond.net.au/amiller/NSWC/toeplitz.f90">toeplitz.f90</A>
Solution of Toeplitz systems of linear equations.
<LI><A
href="http://users.bigpond.net.au/amiller/NSWC/zeroin.f90">zeroin.f90</A>
Finds a zero of a user-supplied function in a specified range (a, b). </LI></UL>
<HR>
<H2>
<CENTER>Miscellaneous code</A></CENTER></H2>
<P><FONT size=2>
<HR>
<UL>
<LI><A href="http://users.bigpond.net.au/amiller/qsort.f90">qsort.f90</A> A
version of the quicksort algorithm adapted from Walt Brainerd's code.
<LI><A href="http://users.bigpond.net.au/amiller/cobyla.f90">cobyla.f90</A>
Mike Powell's routine for minimization of non-linear functions with smooth
non-linear constraints, using local linear approximations to the constraints.
<LI><A href="http://users.bigpond.net.au/amiller/tron.zip">tron.zip</A>
Newton's method for large bound-constrained optimization problems by Chih-Jen
Lin & Jorge More', a MINPACK-2 project. Use PKUNZIP or WINZIP to unpack
the file.
<LI><A href="http://users.bigpond.net.au/amiller/lm.zip">lm.zip</A>
Levenberg-Marquardt algorithm for non-linear least squares (unconstrained).
This is a translation of the MINPACK routines, LMDER & LMDIF. Use LMDER
for functions which can be differentiated, and LMDIF when it is necessary to
use differences. The ZIPped file includes the MINPACK test programs, and a
simple example fitting a 4-parameter logistic.
<LI><A href="http://users.bigpond.net.au/amiller/conmin.zip">conmin.zip</A>
The classic CONMIN package for constrained minimization updated to Fortran 90.
Test examples and the manual are included in the ZIP file. N.B. CONMIN is
included as just one of the algorithms in TOMS algorithm 734 which can be
downloaded from netlib (http://www.netlib.org).
<LI><A href="http://users.bigpond.net.au/amiller/minim.f90">minim.f90</A> The
Nelder-Mead simplex algorithm for unconstrained minimization. It does NOT
require or use derivatives. N.B. This is NOT for linear programming! <A
href="http://users.bigpond.net.au/amiller/t_minim.f90">t_minim.f90</A> is a
very simple test program for minim.f90 which may help users. This is now
ELF90-compatible.
<LI><A
href="http://users.bigpond.net.au/amiller/primefac.f90">primefac.f90</A> A
program to find prime factors.
<LI><A href="http://users.bigpond.net.au/amiller/uobyqa.f90">uobyqa.f90</A>
Mike Powell's package for unconstrained minimization when derivatives are not
available. There is a test/driver program:<BR><A
href="http://users.bigpond.net.au/amiller/t_uobyqa.f90">t_uobyqa.f90</A> and a
file of results from the test program:<BR><A
href="http://users.bigpond.net.au/amiller/test.out">test.out</A> The
documentation, which is in gzipped postscript, can be downloaded from the
Optimization Decision Tree at: <A
href="http://plato.lasu.edu/topics/problems/nlounres.html" A <>
<LI><A href="http://users.bigpond.net.au/amiller/tn.zip">tn.zip</A> Stephen
Nash's truncated-Newton code for the minimization of continuous functions. It
can use differences instead of derivatives, and bounds may be imposed on the
parameters.
<LI><A href="http://users.bigpond.net.au/amiller/xdlegf.f90">xdlegf.f90</A>
Legendre functions and polynomials, from the CMLIB library.
<LI><A href="http://users.bigpond.net.au/amiller/datesub.f90">datesub.f90</A>
Some date manipulation routines collected together by H.D. Knoble.
<LI><A href="http://users.bigpond.net.au/amiller/global.f90">global.f90</A> At
Arnold Neumaier's web site, this is recommended as the most successful of the
global optimization packages. There is a sample program <A
href="http://users.bigpond.net.au/amiller/fit.f90">fit.f90</A> and the
original documentation <A
href="http://users.bigpond.net.au/amiller/global.txt">global.txt</A> for the
f77 version. I have included <A
href="http://users.bigpond.net.au/amiller/testfunc.f90">testfunc.f90</A> which
will eventually contain all of Neumaier's 30 test functions. N.B. Users of
local optimization packages usually obtain satisfactory convergence after 10s
or sometimes 100s of function evaluations. Global optimization routines
usually require many 1000s of function evaluations.
<LI><A href="http://users.bigpond.net.au/toms/tensolve.zip">tensolve.zip</A> A
package for solving sets of non-linear equations using Robert Schnabel's
tensor method. This is a translation of TOMS algorithm 768. The file was
compressed using PKZIP. It is now compatible with version 4.0 of ELF90, but
misbehaves on example 2.
<LI><A href="http://users.bigpond.net.au/amiller/KS2.f90">KS2.f90</A>
Calculates 1 and 2-tail probabilities for the single-sample Kolmogorov-Smirnov
statistic. For 2-tail probabilities, it uses a combination of the first
algorithm from CACM 487, double the single-tail probability, and the
asymptotic distribution. See also TOMS algorithm 519.
<LI><A href="http://users.bigpond.net.au/amiller/nCr.f90">nCr.f90</A>
Calculates number of combinations of r out of n.
<LI><A href="http://users.bigpond.net.au/amiller/update.f90">update.f90</A>
Three very short subroutines to update the sample mean and sum of squares of
deviations about the mean (and hence update variances or std. deviations),
when one observation is added, dropped or replaced with another. Designed for
fast, repeated use with no checks.
<LI><A href="http://users.bigpond.net.au/amiller/mvnpack.f90">mvnpack.f90</A>
Alan Genz's package of 4 methods of evaluating multivariate normal integrals.
<LI><A href="http://users.bigpond.net.au/amiller/bivnorm.f90">bivnorm.f90</A>
A function for calculating bivariate normal probabilities, extracted from Alan
Genz's package for multivariate normal integration.
<LI><A
href="http://users.bigpond.net.au/amiller/genz2d3d.f90">genz2d3d.f90</A> This
is code for bivariate and trivariate normal integrals which I discovered on
Alan Genz's web site. I have made it compatible with ELF90. It is more recent
(January 2001) than bivnorm above.
<LI><A href="http://users.bigpond.net.au/amiller/dcuhre.f90">dcuhre.f90</A>
Alan Genz's program for general multivariate integration, not just of one
function but simultaneously for a vector of functions over the same
multivariate region. There is also a test program <A
href="http://users.bigpond.net.au/amiller/dtest1.f90">dtest1.f90</A> and a
text file <A
href="http://users.bigpond.net.au/amiller/dcuhre.txt">dcuhre.txt</A>. which
contains the results from the test program (run in single precision) N.B.
While the Fortran 77 version of this code is still at Alan Genz's web site, he
is referring users to the CUBPACK project at: <A
href="http://www.cs.kuleuven.ac.be/~nines/research/CUBPACK">CUBPACK</A>
<LI><A href="http://users.bigpond.net.au/amiller/tfunc.f90">tfunc.f90</A> A
module for calculating bivariate normal probabilities using code by Baughman
and Patefield.
<LI><A
href="http://users.bigpond.net.au/amiller/t_bivnor.f90">t_bivnor.f90</A>
Comparison of 3 functions for the bivariate normal - those of Donnelly (CACM
462), Genz, and Baughman/Patefield.
<LI><A href="http://users.bigpond.net.au/amiller/hash.f90">hash.f90</A> and <A
href="http://users.bigpond.net.au/amiller/hashord.f90">hashord.f90</A> Hashing
routines by Richard Brent and Donald Knuth, taken from Herman Noble's web site
(http://ftp.cac.psu.edu/pub/ger/fortran/).
<LI><A href="http://users.bigpond.net.au/amiller/elsunc.f90">elsunc.f90</A>
Per Lindstroem's package for non-linear least squares with upper & lower
bounds on parameter values. <A
href="http://users.bigpond.net.au/amiller/d_elsunc.f90">d_elsunc.f90</A>
demonstrates this package.
<LI><A href="http://users.bigpond.net.au/amiller/solvopt.zip">solvopt.zip</A>
The SolvOpt package minimizes or maximizes nonlinear functions, which may be
nonsmooth and may have constraints, using the so-called method of exact
penalization. This is a zip file containing several driver programs.
<LI><A href="http://users.bigpond.net.au/amiller/ga.zip">ga.zip</A> A package
for global minimization using genetic algorithms. Please note the copyright
conditions if you want to use this for commercial purposes. This is a ZIP
file.
<LI><A href="http://users.bigpond.net.au/amiller/pikaia.zip">pikaia.zip</A>
Another genetic algorithm for global optimization without derivatives. This
one comes from the High Altitude Observatory of NCAR. This is a ZIP file,
containing a number of interesting examples. There is an excellent manual, but
you will have to download it from <A
href="http://www.hao.ucar.edu/public/research/si/pikaia/pikaia.html">their web
site</A>. N.B. The manual is 120 pages long, and in postscript. Where does the
name Pikaia come from? Pikaia gracilens is a flattened worm-like beast about
5cm long which crawled in the mud on the sea floor about 530 million years
ago!
<LI><A href="http://users.bigpond.net.au/amiller/cdfcor.zip">cdfcor.zip</A> A
package for rational (Pade) approximation in one and two dimensions. Includes
a driver for 9 test problems, input data and output. This is a ZIP file.
<LI><A
href="http://users.bigpond.net.au/amiller/sym_band.f90">sym_band.f90</A> Find
the eigenvalues/vectors of a symmetric banded matrix stored in compact form.
Based upon EISPACK code.
<LI><A
href="http://users.bigpond.net.au/amiller/strassen.f90">strassen.f90</A> The
Strassen fast matrix multiply algorithm for large matrices. Code downloaded
from the comp.lang.fortran newsgroup.
<LI><A
href="http://users.bigpond.net.au/amiller/varpro/varpro.f90">varpro.f90</A>
The VARPRO package for separable nonlinear least squares is for fitting models
of the kind<BR>Y = a1.F1(x, b) + a2.F2(x, b) + ...<BR>in which the a's are
linear parameters, the vector b is a vector of nonlinear parameters, and the
F's are nonlinear functions. An important application is fitting sums of
exponential decay terms. A driver program <A
href="http://users.bigpond.net.au/amiller/varpro/twoexp.f90">twoexp.f90</A> is
provided, as well as the <A
href="http://users.bigpond.net.au/amiller/varpro/a.dat">data</A>.
<LI><A href="http://users.bigpond.net.au/amiller/bvls.f90">bvls.f90</A> Fits a
linear model using least squares but with upper and lower bounds as
constraints on each regression coefficient.
<LI><A
href="http://users.bigpond.net.au/amiller/foldat73.f90">foldat73.f90</A> There
is a compiler which accepts Fortran code in fixed format extending beyond
column 72, other than sequence numbers which occupy these columns in fixed
form. This simple program takes such code as input data and breaks long lines
after column 72 starting with a continuation character in column 6.
<LI><A
href="http://users.bigpond.net.au/amiller/diehard/diehard.f90">DIEHARD</A> A
version of George Marsaglia's random number tests in standard Fortran. You
will also need the files <A
href="http://users.bigpond.net.au/amiller/diehard/tests.txt">tests.txt</A> and
<A
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -