Skip to content

Beliavsky/Burkardt-Fortran-90

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 

Repository files navigation

Fortran 90 codes of John Burkardt by category

Calendrical Calculations

calpak computes various simple calendrical quantities. These include converting from day-number/year to day/month/year format, calculating the time difference between two dates, finding the day of the week of a given date, and other feats.

doomsday given the year, month and day of a date, uses John Conway's doomsday algorithm to determine the corresponding day of the week.

weekday determines the day of the week corresponding to a given date.

Cluster Analysis

asa058 handles the K-Means problem, by David Sparks.

asa113 divides M points in N dimensions into K clusters seeking the division which minimizes a user-defined criterion, by Banfield and Bassill.

asa136: divides M points in N dimensions into K clusters so that the within-clusters sum of squares is minimized, by Hartigan and Wong.

cities works with problems involving intercity distances.

cluster_energy: organizes data into a given number of clusters, in a way which minimizes the cluster energy.

gene_cluster divides a set of genetic data into clusters.

kmeans handles the K-Means problem, which organizes a set of N points in M dimensions into K clusters

spaeth analyzes data by grouping it into clusters.

Combinatorics

asa172 generates all multidimensional indices in a given range, simulating the behavior of an arbitrary number of nested loops, by O'Flaherty and MacKenzie.

change_making considers the change making problem, in which a given sum is to be formed using coins of various denominations.

combo routines for ranking, unranking, enumerating and randomly selecting balanced sequences, cycles, graphs, Gray codes, subsets, partitions, permutations, restricted growth functions, Pruefer codes and trees.

knapsack_01 uses brute force to solve small versions of the 0/1 knapsack problem.

lau_np implements heuristic algorithms for certain "hard" problems, by Hang Tong Lau.

partial_digest recursive solutions of the partial digest problem.

partition_problem seeks solutions of the partition problem, splitting a set of integers into two subsets with equal sum.

set_theory: implements some of the operations of set theory.

subset enumerates, generates, randomizes, ranks and unranks combinatorial objects including combinations, compositions, Gray codes, index sets, partitions, permutations, polynomials, subsets, and Young tables.

subset_sum seeks solutions of the subset sum problem.

toms515 lists the subsets of size K selected from a set of size N, by Bill Buckles, Matthew Lybanon.

tsp_brute solves small versions of the traveling salesman problem, using brute force.

tsp_lau implements a heuristic algorithm for solution of the traveling salesman problem, by Hang Tong Lau.

Computational Geometry

cvt: computes Centroidal Voronoi Tessellation (CVT) datasets.

cvt_basis: uses discrete Centroidal Voronoi Tessellation (CVT) techniques to produce a small set of basis vectors that are good cluster centers for a large set of data vectors.

cvt_basis_flow: extracts representative solution modes of a set of solutions to a fluid flow PDE. The selection process uses K-Means clustering, which can be considered to be a discrete version of the CVT algorithm (Centroidal Voronoi Tessellation).

cvtp: creates CVTP's, that is, Centroidal Voronoi Tessellations of a periodic region.

cvt_triangulation: applies Centroidal Voronoi Tessellation (CVT) methods to produce triangularizations of various test regions.

delaunay_lmap_2d: computes the Delaunay triangulation of a set of points in the plane that have been transformed by a linear map A.

dutch: implements some computational geometry routines.

geometry: carries out geometric calculations, including angles, areas, containment, distances, intersections, lengths, and volumes.

geompack2: which carries out certain geometric computations, including the Voronoi diagram, and the Delaunay triangulation of a set of points in the plane, by Barry Joe.

geompack3: handles certain computational geometry problems, by Barry Joe. In particular, GEOMPACK3 can compute the Voronoi diagram, and the Delaunay triangulation, of a set of points in the plane, and can carry out analogous operations for points in 3D and in N-dimensional space.

mesh_bandwidth: computes the geometric bandwidth of a mesh.

sphere_delaunay: computes the Delaunay triangulation of points on the unit sphere.

stripack: carries out some computational geometry tasks on the unit sphere in 3D, by Robert Renka.

table_delaunay: computes the Delaunay triangulation of a set of points in the plane.

triangulation: library which computes a triangulation of a set of points in 2D, and carries out various other related operations on triangulations of order 3 or 6.

triangulation_boundary_nodes: analyzes the triangulation of a region, and identifies each boundary node with the label "1".

triangulation_corner: tries to correct situations in which a triangulation includes corner triangles, that is, triangles which have two sides on boundary.

triangulation_delaunay_discrepancy: computes the local Delaunay discrepancy of a triangulation.

triangulation_histogram: computes the number of points from a dataset that are contained in each triangle of a triangulation.

triangulation_l2q: reads information describing a triangulation of a set of points using 3-node ("linear") triangles, and creates a 6-node ("quadratic") triangulation.

triangulation_mask: which reads the nodes and triangles that define a triangulation, calls a user routine which determines whether each triangle is to be preserved or discarded ("masked") from the triangulation, and writes out new node and triangle files that define the masked triangulation.

triangulation_node_to_element: reads datafiles describing a set of nodes, their triangulation, and the value of one or more quantities at each node, and outputs a file that averages the quantities for each element.

triangulation_orient: reads a triangulation, and reorients each triangle that has a negative area. If at least one such triangle is encountered, the program writes out a new copy of the triangle file in which all the triangles have been correctly oriented.

triangulation_plot: reads one file listing the nodes, and a second file consisting of groups of 3 or 6 nodes that make up triangles, and creates an Encapsulated PostScript image of the triangulation.

triangulation_q2l: reads information describing a triangulation of a set of points using 6-node ("quadratic") triangles, and creates a 3-node ("linear") triangulation.

triangulation_quad: reads information defining a triangulation, and estimates the integral of a function whose values are given at the nodes.

triangulation_quality: computes and prints quality measures for a given triangulation of a set of points in 2D.

triangulation_rcm: computes the Reverse Cuthill-McKee (RCM) reordering for nodes in a triangulation composed of 3-node or 6-node triangles.

triangulation_refine: reads information describing a triangulation of a set of points and creates a refined triangulation.

triangulation_triangle_neighbors: computes the three neighboring triangles of each triangle in a triangulation.

Eigenvalues

arpack computes eigenvalues and eigenvectors of large matrices, by Richard Lehoucq, Danny Sorensen, Chao Yang.

eispack calculates the eigenvalues and eigenvectors of a matrix.

jacobi_eigenvalue computes the eigenvalues and eigenvectors of a real symmetric matrix.

power_method Power Method for Eigenvalues and Eigenvectors.

test_eigen Test Matrices for Eigenvalue Analysis.

toms384 implements ACM TOMS algorithm 384, for computing the eigenvalues and eigenvectors of a symmetric matrix.

Fast Fourier Transform and other Transforms

cosine_transform demonstrates some simple properties of the discrete cosine transform (DCT) for real data.

fftpack5 computes Fast Fourier Transforms, by Paul Swarztrauber and Dick Valent. Real or complex data can be handled, there are separate routines for forward analysis (data => Fourier coefficients) and backward analysis (Fourier coefficients => data), there are sine and cosine transform routines, there are quarter wave sine and cosine transform routines, and the amount of data is NOT required to be a power of 2.

fftpack51 is a double precision version of fftpack5.

fft_serial computes a Fast Fourier Transform, and is intended as a starting point for developing a parallel version.

fftw_test calls fftw(), which computes fast Fourier transforms, written by Matteo Frigo and Steven Johnson.

sftpack implements the slow Fourier transform, intended as a teaching tool and comparison with the Fast Fourier Transform (FFT).

sine_transform demonstrates some simple properties of the discrete sine transform for real data.

Fortran Tools

extract extracts a subroutine, function or module by name from a FORTRAN file.

f77_to_f90 converts fixed source form to free source form.

fixcon converts the line continuation scheme used in a FORTRAN77 file to that used in FORTRAN90 files.

include_files makes a copy of a FORTRAN file, in which INCLUDE statements are replaced by the corresponding include files.

xerror collects information about errors that occur during a program's execution, and takes the appropriate action, which may include printing a message, diverting to a user routine, or aborting execution of the program.

Graph Algorithms

bellman_ford implements the Bellman-Ford algorithm for finding the shortest distance from a given node to all other nodes in a directed graph whose edges have been assigned real-valued lengths.

codepack: computes and compares "codes" for graphs, directed graphs, multigraphs, and other generalizations of an abstract graph.

digraph_adj: carries out operations on digraphs, a directed graph. Information is stored in an adjacency matrix. Operations include computing in- and out-degrees, computing the in- and out-degree sequences, counting the edges, printing the adjacency matrix, generating fixed and random examples.

digraph_arc: carries out operations on digraphs, a directed graph. Information is stored in an arc list, pairs of nodes forming edges. Operations include computing in- and out-degrees, computing the in- and out-degree sequences, counting the edges, printing the arc list, generating fixed and random examples.

djikstra implements a simple version of Dijkstra's algorithm for determining the minimum distance from one node in a graph to all other nodes.

floyd: implements Floyd's algorithm for finding the shortest distance between every pair of nodes in a directed graph.

grafpack performs common calculations involving (abstract mathematical) graphs.

graph_arc: carries out operations on graphs. Information is stored in an arc list, pairs of nodes forming edges. Operations include the chromatic polynomial, computing degrees, computing the degree sequence, counting the edges, determining edge and node connectivity, Euler circuits, spanning trees, shortest path, printing the arc list, generating fixed and random examples.

graph_theory: carries out operations on abstract graphs, such as a breadth-first-search, the computation of a minimum spanning tree, an Euler or Hamilton circuit, blocks, chromatic polynomial, or transitive closure. Objects include undirected and directed graphs, weighted graphs, and trees.

laupack computes properties of mathematical graphs, including Euler circuits, Hamiltonian circuits, cliques, strongly connected components, minimal spanning tree, chromatic number, shortest paths, maximal flow, and planarity.

maze: carries out some simple operations on mazes. It can generate a random maze, determine the diameter of a maze, or find a path through a maze.

toms097 computes the distance between all pairs of nodes in a directed graph with weighted edges, using Floyd's algorithm.

treepack performs common calculations involving a special kind of graph known as a tree.

Graphics

dislin_test illustrates the use of the DISLIN scientific plotting package.

graphics_dislin_test illustrates how various kinds of data can be displayed and analyzed graphically, using the dislin() graphics package.

graphics_gnuplot_test illustrate how various kinds of data can be displayed and analyzed graphically, using the gnuplot() graphics package.

gnufor interface to the GNUPLOT plotting software.

Interpolation and Approximation

barycentric_interp_1d defines and evaluates the Lagrange polynomial p(x) which interpolates a set of data, so that p(x(i)) = y(i).

bivar interpolates scattered bivariate data, by Hiroshi Akima.

chebyshev constructs the Chebyshev interpolant to a function.

chebyshev_interp_1d determines the combination of Chebyshev polynomials which interpolates a set of data, so that p(x(i)) = y(i).

chebyshev_series evaluate a Chebyshev series approximating a function f(x), while efficiently computing one, two or three derivatives of the series, which approximate f'(x), f''(x), and f'''(x), by Manfred Zimmer.

divdif creates, prints and manipulates divided difference polynomials based on data tabulated at evenly spaced or unevenly spaced argument values.

hermite constructs the Hermite polynomial which interpolates function and derivative values at given points.

interp takes a set of data associated with successive values of a parameter, and produces an interpolating function which can be evaluated over a continuous range of the parameter.

lagrange_interp_1d defines and evaluates the Lagrange polynomial p(x) which interpolates a set of data, so that p(x(i)) = y(i).

lagrange_interp_2d defines and evaluates the Lagrange polynomial p(x,y) which interpolates a set of data depending on a 2D argument that was evaluated on a product grid, so that p(x(i),y(j)) = z(i,j).

lagrange_interp_nd defines and evaluates the Lagrange polynomial p(x) which interpolates a set of data depending on a M-dimensional argument that was evaluated on a product grid, so that p(x(i)) = z(i).

lagrange_nd given a set of ND points X() in D-dimensional space, constructs a family of ND Lagrange polynomials P()(X), associating polynomial P(i) with point X(i), such that, for 1 <= i <= ND, P(i)(X(i)) = 1 but, if i =/= j P(i)(X(j)) = 0

nearest_interp_1d interpolates a set of data using a piecewise constant interpolant defined by the nearest neighbor criterion, creating graphics files for processing by GNUPLOT.

newton_interp_1d finds a polynomial interpolant to data using Newton divided differences.

pppack: evaluates piecewise polynomial functions, including cubic splines. The original FORTRAN77 library is by Carl de Boor.

pwl_approx_1d defines and evaluates a piecewise linear function, using NC "control points", which approximates a set of ND data points (x(i),y(i)).

pwl_interp_1d interpolates a set of data with a piecewise linear function.

pwl_interp_2d evaluates a piecewise linear interpolant of data depending on a 2D argument, defined on on a product grid, so that p(x(i),y(j)) = z(i,j).

pwl_interp_2d_scattered produces a piecewise linear interpolant to 2D scattered data, that is, data that is not guaranteed to lie on a regular grid.

rbf_interp_1d defines and evaluates radial basis function (RBF) interpolants to 1D data.

rbf_interp_2d defines and evaluates radial basis function (RBF) interpolants to 2D data.

rbf_interp_nd defines and evaluates radial basis function (RBF) interpolants to multidimensional data.

shephard_interp_nd defines and evaluates Shepard interpolants to multidimensional data, based on inverse distance weighting.

sparse_interp_nd construct a sparse interpolant to a function f(x) of a multidimensional argument x.

spline: interpolates and approximates via splines. There are a variety of types of approximation curves available, including least squares polynomials, divided difference polynomials, piecewise polynomials, B splines, Bernstein splines, beta splines, Bezier splines, Hermite splines, and Overhauser (or Catmull-Rom) splines. Also included are a set of routines that return the local "basis matrix", which allows the evaluation of the spline in terms of local function data.

test_interp_nd provides test functions for multidimensional interpolation.

toms446 implements ACM TOMS algorithm 446, for the manipulation of Chebyshev series, by Roger Broucke.

toms526 interpolates scattered bivariate data, by Hiroshi Akima.

toms660 interpolates scattered 2D data, also called "qshep2d", by Robert Renka.

toms661 interpolates scattered 3D data, also known as "qshep3d", by Robert Renka.

toms790 constructs an interpolant to scattered 2D data, by Robert Renka.

toms886 implements an interpolation procedure based on "Padua points", defined in the square [-1,+1]^2, whose interpolating power is especially good.

Linear Algebra

blas Basic Linear Algebra Subprograms.

condition computes or estimates the condition number of a matrix.

hankel_cholesky compute the upper Cholesky factor of a positive definite symmetric (PDS) Hankel matrix H, that is, H = R' * R.

hankel_pds computes a lower triangular matrix L which is the Cholesky factor of a positive definite (symmetric) Hankel matrix H, that is, H = L * L'.

lapack_d routines for solving systems of simultaneous linear equations, least-squares solutions of linear systems of equations, eigenvalue problems, and singular value problems.

matrix_exponential compares some algorithms for approximating the matrix exponential function.

r8ge basic linear algebra operations on R8GE matrices (real 64 bit precision general MxN format). There is r8lt for lower triangular and r83 for tridiagonal matrices.

sparsekit carries out a number of operations on sparse matrices, particularly conversion between various sparse formats.

toeplitz_cholesky computes the Cholesky factorization of a positive semidefinite symmetric (PSS) Toeplitz matrix.

Linear Algebra (Sparse)

cc_io reads and writes compressed column (CC) sparse matrix files.

cc_to_st converts sparse matrix information from compressed column (CC) to sparse triplet (ST) format.

hb_io reads and writes files in the Harwell Boeing sparse matrix format.

hb_to_st reads the definition of a sparse matrix from a file in Harwell-Boeing format, and writes the information into a Sparse Triplet file.

mm_io reads and writes files in the Matrix Market (MM) format.

st_io: reads and writes files in the Sparse Triplet (ST) format used for storing sparse matrices.

Linear Equations

bvls solves a least squares problem with bounds on the variables, by Charles Lawson and Richard Hanson.

cg simple version of the conjugate gradient (CG) method for solving a system of linear equations of the form A*x=b, suitable for situations in which the matrix A is positive definite (only real, positive eigenvalues) and symmetric.

cg_rc conjugate gradient (CG) method for solving a positive definite sparse linear system A*x=b, using reverse communication (RC).

dlap routines for solving sparse linear systems, by Anne Greenbaum and Mark Seager.

dlap_io: reads and writes files in the DLAP sparse matrix format.

gauss_seidel: uses the Gauss-Seidel iteration to solve a linear system with a symmetric positive definite (SPD) matrix.

jacobi Jacobi iteration for linear systems.

lawson solve least squares problems.

linpack analyze and solve linear equations and linear least-squares problems.

mgmres restarted Generalized Minimum Residual (GMRES) algorithm to solve a sparse linear system, using compressed row (CR) or sparse triplet (ST) format, by Lili Ju.

qr_solve computes a linear least squares (LLS) solution of a system A*x=b.

sparsepak old version of the Waterloo Sparse Matrix Package that solves large sparse systems of linear equations.

superlu_test illustrate the use of the SUPERLU library for the fast direct solution of large sparse systems of linear equations.

templates outlines the most common iterative methods of solving a linear system.

toeplitz solves a variety of Toeplitz and circulant linear systems.

Nonlinear Equations and Nonlinear Least Squares

dqed solves (square) systems of nonlinear equations, or minimizes the residual in a set of nonlinear equations, using least squares, by Richard Hanson and Fred Krogh.

fsolve solves systems of nonlinear equations, inspired by the fsolve() function in MATLAB, and based on the minpack() minimization package.

minpack solves systems of nonlinear equations, or carries out the least squares minimization of the residual of a set of linear or nonlinear equations, by Jorge More, Danny Sorenson, Burton Garbow, Kenneth Hillstrom.

newton_rc solves a system of nonlinear equations by Newton's method, using reverse communication (RC).

nl2sol implements an adaptive nonlinear least-squares algorithm, by John Dennis, David Gay, Roy Welsch.

roots_rc seeks solutions of a system of nonlinear equations, using reverse communication (RC), by Gaston Gonnet.

Non-uniform Random Number Generation

asa053 returns samples from the Wishart distribution.

normal: returns a sequence of normally distributed pseudorandom numbers.

pdflib evaluates Probability Density Functions (PDF's) and produces random samples from them, including beta, binomial, chi, exponential, gamma, inverse chi, inverse gamma, multinomial, normal, scaled inverse chi, and uniform.

random_data uses a random number generator (RNG) to sample points for various probability distributions, spatial dimensions, and geometries, including the M-dimensional cube, ellipsoid, simplex and sphere.

ranlib produces random samples from Probability Density Functions (PDF's), including Beta, Chi-square Exponential, F, Gamma, Multivariate normal, Noncentral chi-square, Noncentral F, Univariate normal, random permutations, Real uniform, Binomial, Negative Binomial, Multinomial, Poisson and Integer uniform, by Barry Brown and James Lovato.

walker_sample: efficiently samples a discrete probability vector.

wishart produces sample matrices from the Wishart or Bartlett distributions, useful for sampling random covariance matrices.

ziggurat random number generator (RNG) for the uniform, normal or exponential distributions, by Marsaglia and Tsang.

Numerical Methods

nms accompanies the text "Numerical Methods and Software".

slatec general purpose mathematical and statistical routines.

Optimization-1D

glomin finds a global minimizer of a scalar function of a scalar variable, by Richard Brent. The method does not require the use of derivatives, and does not assume that the function is differentiable.

local_min_rc seeks a local minimum of a scalar function of a scalar variable, without requiring derivatives, or assuming the function is differentiable, using reverse communication (RC), by Richard Brent.

test_min defines problems involving the minimization of a scalar function of a scalar argument.

Optimization

asa047 minimize a scalar function of several variables using the Nelder-Mead algorithm, by R ONeill.

compass_search minimizes of a scalar function of several variables using compass search, a direct search algorithm that does not use derivatives.

praxis minimizes a scalar function of a vector argument, without needing derivative information, by Richard Brent.

test_opt defines test problems for the scalar function optimization problem.

test_opt_con Test Functions for Scalar Optimization Constrained to a Hyper-Rectangle.

toms178 uses the Hooke-Jeeves direct search algorithm to seek the minimizing point of a function F(X) of several variables, by Arthur Kaupe.

toms611 minimizes a scalar functional of multiple variables.

uncmin seeks to minimize a scalar function of N variables.

Ordinary Differential Equations

etdrk4 uses the ETD RK4 method to solve systems of stiff ODE's, by Aly-Khan Kassam, Lloyd Trefethen.

euler solves one or more ordinary differential equations (ODEs) using the forward Euler method.

midpoint_explicit solves one or more ordinary differential equations (ODE) using the (explicit) midpoint method, also known as the modified Euler method.

ode solves a system of ordinary differential equations (ODE), by Shampine and Gordon.

rk4 implements a simple Runge-Kutta solver for an initial value problem.

Polynomials

bernstein_polynomial evaluates the Bernstein polynomials, useful for uniform approximation of functions.

chebyshev_polynomial considers the Chebyshev polynomials T(i,x), U(i,x), V(i,x) and W(i,x). Functions are provided to evaluate the polynomials, determine their zeros, produce their polynomial coefficients, produce related quadrature rules, project other functions onto these polynomial bases, and integrate double and triple products of the polynomials.

gegenbauer_polynomial evaluates Gegenbauer polynomials and associated functions.

hermite_polynomial evaluates the physicist's Hermite polynomial, the probabilist's Hermite polynomial, the Hermite function, and related functions.

jacobi_polynomial evaluates the Jacobi polynomial. The definition of the Jacobi polynomials is general enough that it includes the Legendre, Chebyshev, and Gegenbauer polynomials as special cases.

laguerre_polynomial evaluates the Laguerre polynomial, the generalized Laguerre polynomials, and the Laguerre function.

lobatto_polynomial evaluates the completed Lobatto polynomial and associated functions.

polpak evaluates a variety of mathematical functions, polynomials, and sequences, including Bell, Benford, Bernoulli, Bernstein, Cardan, Catalan, Charlier, Chebyshev, Collatz, Delannoy, Euler, Fibonacci, Gegenbauer, Gudermannian, Harmonic, Hermite, Hofstadter, Jacobi, Krawtchouk, Laguerre, Lambert, Legendre, Lerch, Meixner, Mertens, Moebius, Motzkin, Phi, Stirling, Tau, Tribonacci, Zernike.

Probability Distributions

asa005 evaluates the lower tail of the noncentral student's T cumulative density function (CDF), by BE Cooper.

asa066 computes the cumulative density function (CDF) of the standard normal distribution, by David Hill.

asa076 evaluates Owen's T function, by Young and Minder. The function T(h, a) gives the probability of the event (X > h and 0 < Y < aX) where X and Y are independent standard normal random variables.

asa091 computes the percentage points of the Chi-Squared probability density function, by Best and Roberts.

asa111 computes the percentage points of the normal probability density function, by Beasley and Springer.

asa152 computes the cumulative probabilities associated with the hypergeometric probability distribution, by Richard Lund.

asa189: does a maximum likelihood estimation of the parameters of a Beta Binomial Probability Density Function (PDF), by D Smith.

asa226 evaluates the cumulative distribution function (CDF) of the noncentral Beta Distribution, by Russell Lenth.

asa241 computes the inverse of the Normal Cumulative Density Function (CDF), by Michael Wichura.

asa243 computes the cumulative density function (CDF) of the noncentral Student's T probability density function, by Russell Lenth.

asa266 estimates the parameters of a Dirichlet probability density function (PDF).

asa310 computes the cumulative density function (CDF) of the noncentral Beta distribution, by Chattamvelli and Shanmugam.

bdmlib: estimates the weights W in a Dirichlet mixture PDF (probability density function) by analyzing events that were generated by the mixture.

beta_nc evaluates the cumulative distribution function (CDF) of the noncentral Beta distribution.

cdflib evaluates the cumulative density function (CDF) associated with common probability distributions, by Barry Brown, James Lovato, Kathy Russell.

getwgt: library which handles Dirichlet Mixture estimation.

log_normal: evaluate quantities associated with the log normal Probability Density Function (PDF).

log_normal_truncated_ab: evaluate quantities associated with the log normal Probability Density Function (PDF) truncated to the interval [A,B].

owens evaluates Owen's T function.

prob routines for evaluating and inverting the normal CDF, and many other distributions.

truncated_normal: computes quantities associated with the truncated normal distribution.

Quadrature

alpert_rule sets up an Alpert quadrature rule for functions which are regular, log(x) singular, or 1/sqrt(x) singular.

cauchy_principal_value: uses Gauss-Legendre quadrature to estimate the Cauchy Principal Value (CPV) of certain singular integrals.

ccn_rule defines a nested Clenshaw Curtis quadrature rule.

chebyshev1_rule computes and prints a Gauss-Chebyshev type 1 quadrature rule.

chebyshev2_rule computes and prints a Gauss-Chebyshev type 2 quadrature rule.

clenshaw_curtis_rule generates a Clenshaw Curtis quadrature rule based on user input.

cubpack estimates the integral of a function (or vector of functions) over a collection of N-dimensional hyperrectangles and simplices, by Alan Genz and Ronald Cools.

fastgl fast computation of the K-th value and weight of an N-point Gauss-Legendre quadrature rule, by Ignace Bogaert.

filon approximate integrals in which the integrand includes an oscillatory factor of sin(kx) or cos(kx).

gegenbauer_rule computes and prints a Gauss-Gegenbauer quadrature rule.

gen_hermite_rule computes and prints a generalized Gauss-Hermite quadrature rule.

gen_laguerre_rule computes and prints a generalized Gauss-Laguerre quadrature rule.

gl_fast_rule carries out the fast computation of the K-th value and weight of an N-point Gauss-Legendre quadrature rule, by Ignace Bogaert.

hermite_rule computes and prints a Gauss-Hermite quadrature rule

intlib contains routines for numerical estimation of integrals in 1d.

jacobi_rule computes and prints a Gauss-Jacobi quadrature rule.

kronrod computes both a Gauss quadrature rule of order N, and the Gauss-Kronrod rule of order 2*N+1.

laguerre_rule computes and prints a Gauss-Laguerre quadrature rule.

legendre_rule computes and prints a Gauss-Legendre quadrature rule.

legendre_rule_fast uses a fast (order n) algorithm to compute a Gauss-Legendre quadrature rule of given order.

line_integrals returns the exact value of the integral of any monomial over the length of the unit line in 1d.

line_ncc_rule computes a Newton Cotes Closed (ncc) quadrature rule for the line, that is, for an interval of the form [a,b], using equally spaced points which include the endpoints.

line_nco_rule computes a Newton Cotes Open (nco) quadrature rule, using equally spaced points, over the interior of a line segment in 1d.

patterson_rule returns the points and weights of a 1d Gauss-Patterson quadrature rule of order 1, 3, 7, 15, 31, 63, 127, 255 or 511.

patterson_rule_compute computes the points and weights of a 1d Gauss-Patterson quadrature rule of order 1, 3, 7, 15, 31, 63, 127, 255 or 511.

quadmom computes a Gaussian quadrature rule for a weight function rho(x) based on the Golub-Welsch procedure that only requires knowledge of the moments of rho(x).

quadpack estimates integrals using numerical quadrature, by Piessens, deDoncker-Kapenga, Ueberhuber, and Kahaner.

quadrule defines 1-dimensional quadrature rules.

romberg Integral Estimation using Repeated Quadrature and Extrapolation.

stroud defines quadrature rules for various geometric shapes.

test_int contains a number of functions that may be used as test integrands for quadrature rules in 1D.

test_int_2d defines test integrands for 2D quadrature rules.

toms341 implements ACM TOMS algorithm 351, for modified Romberg quadrature.

toms370 SQUANK (Simpson Quadrature Used Adaptively - Noise Killed).

toms468 Automatic Numerical Integration Over a Finite Interval.

toms655 computes weights for interpolatory quadrature schemes, by Sylvan Elhay and Jaroslav Kautsky.

truncated_normal_rule computes a quadrature rule for a normal distribution that has been truncated to [A,+oo), (-oo,B] or [a,b].

Quadrature-N-Dimensional

ball_integrals returns the exact value of the integral of any monomial over the interior of the unit ball in 3d.

circle_integrals returns the exact value of the integral of any monomial along the circumference of the unit circle in 2D.

circle_monte_carlo uses the Monte Carlo method to estimate the integral of a function over the circumference of the unit circle in 2d.

circle_rule computes quadrature rules for approximating integrals over the circumference of the unit circle.

cube_felippa_rule generates the points and weights of a Felippa quadrature rule over the interior of a cube in 3D.

cube_integrals returns the exact value of the integral of any monomial over the interior of the unit cube in 3d.

disk_rule computes quadrature rules for approximating integrals over the interior of the general disk in 2D.

disk01_integrals returns the exact value of the integral of any monomial over the interior of the unit disk in 2d.

hyperball_integrals returns the exact value of the integral of any monomial over the interior of the unit hyperball in m dimensions.

hypercube_integrals returns the exact value of the integral of any monomial over the interior of the unit hypercube in m dimensions.

hypersphere_integrals returns the exact value of the integral of any monomial over the surface of the unit hypersphere in m dimensions.

nintlib estimates integrals over multi-dimensional regions.

polygon_integrals returns the exact value of the integral of any monomial over the interior of a polygon in 2d.

pyramid_felippa_rule returns Felippa quadrature rules over the interior of the unit pyramid in 3D.

pyramid_integrals returns the exact value of the integral of any monomial over the interior of the unit pyramid in 3d.

simpack: approximates the integral of a vector of functions over a multidimensional simplex, or a region which is the sum of multidimensional simplexes, by Alan Genz.

simplex_integrals returns the exact value of the integral of any monomial over the interior of the unit simplex in m dimensions.

sphere_integrals returns the exact value of the integral of any monomial over the surface of the unit sphere in 3d.

sphere_lebedev_rule computes Lebedev quadrature rules on the surface of the unit sphere in 3D.

sphere_quad estimates the integral of a scalar function F(X,Y,Z) over the surface of the unit sphere centered at the origin.

square_felippa_rule returns the points and weights of a Felippa quadrature rule over the interior of a square in 2D.

square_integrals returns the exact value of the integral of any monomial over the interior of the unit square in 2d.

tetrahedron_felippa_rule returns Felippa's quadratures rules for approximating integrals over the interior of a tetrahedron in 3D.

tetrahedron_integrals returns the exact value of the integral of any monomial over the interior of the unit tetrahedron in 3d.

triangle_felippa_rule returns Felippa's quadratures rules for approximating integrals over the interior of a triangle in 2D.

triangle_integrals returns the exact value of the integral of any monomial over the interior of the unit triangle in 2d.

wedge_felippa_rule returns quadratures rules for approximating integrals over the interior of the unit wedge in 3D.

wedge_integrals returns the exact value of the integral of any monomial over the interior of the unit wedge in 3d.

Quasirandom Number Generation

faure Faure quasirandom sequence.

halton Halton Quasi Monte Carlo (QMC) sequence using a simple interface.

hammersley Hammersley Quasi Monte Carlo (QMC) sequence using a simple interface.

niederreiter Niederreiter quasirandom sequence, using an "arbitrary" base.

niederreiter2 Niederreiter quasirandom sequence, using a base of 2.

sobol Sobol quasirandom sequence, by Bennett Fox.

van_der_corput van der Corput Quasi Monte Carlo (QMC) sequence, using a simple interface.

Root-finding

bisection applies the bisection method to seek a root of f(x) over a change-of-sign interval a <= x <= b.

bisection_integer seeks an integer solution to the equation F(X)=0, using bisection within a user-supplied change of sign interval [A,B].

bisection_rc bisection method for solving a scalar equation in a change of sign interval, using reverse communication (RC).

brent finds zeros or minima of a scalar function of a scalar variable, by Richard Brent.

root_rc: solves a scalar nonlinear equation f(x)=0, using reverse communication (RC), by Gaston Gonnet.

test_zero defines nonlinear functions that may be used to test zero finders.

toms365 finds a root of a complex analytic function.

toms429 localization of the roots of a polynomial.

toms493 seeks the roots of a real polynomial

zero_chandrupatla: finds a zero of a scalar function of a scalar variable, starting from a change of sign interval, using the Chandrupatla method, which can converge faster than bisection, regula falsi, or Brent's method.

zero_itp: finds a zero of a scalar function of a scalar variable, starting from a change of sign interval, using the Interpolate/Truncate/Project (ITP) method, which has faster convergence than the bisection method.

zero_laguerre: uses Laguerre's method to find the zero of a function. The method needs first and second derivative information. The method almost always works when the function is a polynomial.

zero_muller seeks a root of a nonlinear equation using Muller's method, with complex arithmetic.

zero_rc seeks a solution of a scalar nonlinear equation f(x)=0, using reverse communication (RC), by Richard Brent.

zoomin seeks a root of a scalar function.

Sorting

sort_rc sorts a list of any kind of objects, using reverse communication (RC).

Special Functions

asa103 evaluates the digamma or psi function, by Jose Bernardo.

asa121: evaluates the trigamma function, by BE Schneider.

asa239 evaluates the incomplete Gamma function, by Shea.

besselj evaluates Bessel J functions of noninteger order.

clausen evaluates a Chebyshev interpolant to the Clausen function Cl2(x).

cordic uses the CORDIC algorithm to evaluate certain functions, in particular the sine and cosine.

fn evaluates elementary and special functions using Chebyshev polynomials.

hyper_2f1: evaluates the hypergeometric functions 2F1(a,b,c;x) for real or complex parameters a, b, c, and argument x, by N. Michel and M. Stoitsov.

hypergeometric: evaluates the generalized hypergeometric functions pFq, for integer p and q, for complex arguments of large magnitude, by Warren Perger, Atul Bhalla, and Mark Nardin.

sncndn: evaluates the Jacobi elliptic functions SN, CN, and DN.

specfun evaluates special functions, including Bessel I, J, K and Y functions, Dawson Integral, Error (Erf), Exponential Integral (E1 and EI), Gamma, log Gamma, and Psi/Digamma, by William Cody and Laura Stoltz.

special_functions evaluates special functions, including Airy, Associated Legendre Bessel, Beta, Complete Elliptic Integral, Confluent Hypergeometric, Cosine Integral, Elliptic Integral, Error, Exponential Integral, Fresnel Integral, Gamma, Hankel, Hypergeometric, Incomplete Beta, Incomplete Gamma, Jacobian Elliptic, Kelvin, Lambda, Legendre, Mathieu, Modified Spherical Bessel, Parabolic Cylinder, Psi, Riccati-Bessel, Sine Integral, Spheroidal Wave, Struve, Whittaker, as well as Bernoulli Numbers, Euler Numbers, Hermite Polynomials, Laguerre Polynomials, Legendre Polynomials, by Shanjie Zhang, Jianming Jin.

toms435 evaluates the modified incomplete Gamma function.

toms708 computes the Incomplete Beta Function ratio.

toms715 evaluates special functions, including the Bessel I, J, K, and Y functions of order 0, of order 1, and of any real order, Dawson's integral, the error function, exponential integrals, the gamma function, the normal distribution function, the psi function.

Statistics

regression routines for linear regression by Helmut Spaeth, for L2 (least-squares), L1 (least-absolute), and L-infinity norms.

starpac nonlinear least squares regression, time series analysis (in both time and frequency domains), line printer graphics, basic statistical analysis, and linear least squares regression.

Uniform Random Number Generation

asa183 random number generator (RNG), by Wichman and Hill.

randlc random number generator (RNG) used by the NAS Parallel Benchmarks.

random_sorted create a vector of random values which are already sorted.

rnglib random number generators (RNG's) which can generate one or more streams of random numbers.

uniform random number generator is based on a simple, old, and limited linear congruential random number generator originally used in the IBM System 360.

Wavelet Transforms

haar_transform computes the Haar transform of data.

walsh_transform implements versions of the Walsh and Haar transforms.

wavelet utilities for computations involving wavelets.