POLPAK\
Recursive Polynomials {#polpak-recursive-polynomials align=”center”}
=====================
POLPAK is a C++ library which evaluates a variety of mathematical
functions.
It includes routines to evaluate the recursively-defined polynomial
families of
- Bernoulli
- Bernstein
- Cardan
- Charlier
- Chebyshev
- Euler
- Gegenbauer
- Hermite
- Jacobi
- Krawtchouk
- Laguerre
- Legendre
- Meixner
- Zernike
A variety of other polynomials and functions have been added.
Licensing: {#licensing align=”center”}
The computer code and data files described and made available on this
web page are distributed under the GNU LGPL
license.
Languages: {#languages align=”center”}
POLPAK is available in a C version
and a C++ version and a FORTRAN77
version and a FORTRAN90
version and a MATLAB
version and a Python
version
BERNSTEIN_POLYNOMIAL,
a C++ library which evaluates the Bernstein polynomials, useful for
uniform approximation of functions;
BESSELJ, a C++ library which
evaluates Bessel J functions of noninteger order.
CHEBYSHEV_POLYNOMIAL,
a C++ library which evaluates the Chebyshev polynomial and associated
functions.
CLAUSEN, a C++ library which
evaluates a Chebyshev interpolant to the Clausen function Cl2(x).
CORDIC, a C++ library which uses the
CORDIC method to compute certain elementary functions.
FN, a C++ library which evaluates elementary
and special functions, by Wayne Fullerton.
GSL a C++ library which evaluates many
special functions.
HERMITE_POLYNOMIAL,
a C++ library which evaluates the physicist’s Hermite polynomial, the
probabilist’s Hermite polynomial, the Hermite function, and related
functions.
JACOBI_POLYNOMIAL,
a C++ library which evaluates the Jacobi polynomial and associated
functions.
LAGUERRE_POLYNOMIAL,
a C++ library which evaluates the Laguerre polynomial, the generalized
Laguerre polynomial, and the Laguerre function.
LEGENDRE_POLYNOMIAL,
a C++ library which evaluates the Legendre polynomial and associated
functions.
LEGENDRE_PRODUCT_POLYNOMIAL,
a C++ library which defines Legendre product polynomials, creating a
multivariate polynomial as the product of univariate Legendre
polynomials.
LOBATTO_POLYNOMIAL,
a C++ library which evaluates Lobatto polynomials, similar to Legendre
polynomials except that they are zero at both endpoints.
TEST_VALUES, a C++
library which stores values of many mathematical functions, and can be
used for testing.
Reference: {#reference align=”center”}
- Milton Abramowitz, Irene Stegun,\
Handbook of Mathematical Functions,\
National Bureau of Standards, 1964,\
ISBN: 0-486-61272-4,\
LC: QA47.A34.
- Robert Banks,\
Slicing Pizzas, Racing Turtles, and Further Adventures in Applied
Mathematics,\
Princeton, 1999,\
ISBN13: 9780691059471,\
LC: QA93.B358.
- Frank Benford,\
The Law of Anomalous Numbers,\
Proceedings of the American Philosophical Society,\
Volume 78, 1938, pages 551-572.
- Paul Bratley, Bennett Fox, Linus Schrage,\
A Guide to Simulation,\
Second Edition,\
Springer, 1987,\
ISBN: 0387964673,\
LC: QA76.9.C65.B73.
- Chad Brewbaker,\
Lonesum (0,1)-matrices and poly-Bernoulli numbers of negative
index,\
Master of Science Thesis,\
Computer Science Department,\
Iowa State University, 2005.
- William Briggs, Van Emden Henson,\
The DFT: An Owner’s Manual for the Discrete Fourier Transform,\
SIAM, 1995,\
ISBN13: 978-0-898713-42-8,\
LC: QA403.5.B75.
- Theodore Chihara,\
An Introduction to Orthogonal Polynomials,\
Gordon and Breach, 1978,\
ISBN: 0677041500,\
LC: QA404.5 C44.
- William Cody,\
Rational Chebyshev Approximations for the Error Function,\
Mathematics of Computation,\
Volume 23, Number 107, July 1969, pages 631-638.
- Robert Corless, Gaston Gonnet, David Hare, David Jeffrey, Donald
Knuth,\
On the Lambert W Function,\
Advances in Computational Mathematics,\
Volume 5, Number 1, December 1996, pages 329-359.
- Bennett Fox,\
Algorithm 647: Implementation and Relative Efficiency of Quasirandom
Sequence Generators,\
ACM Transactions on Mathematical Software,\
Volume 12, Number 4, December 1986, pages 362-376.
- Walter Gautschi,\
Orthogonal Polynomials: Computation and Approximation,\
Oxford, 2004,\
ISBN: 0-19-850672-4,\
LC: QA404.5 G3555.
- Ralph Hartley,\
A More Symmetrical Fourier Analysis Applied to Transmission
Problems,\
Proceedings of the Institute of Radio Engineers,\
Volume 30, 1942, pages 144-150.
- Brian Hayes,\
The Vibonacci Numbers,\
American Scientist,\
Volume 87, Number 4, July-August 1999, pages 296-301.
- Brian Hayes,\
Why W?,\
American Scientist,\
Volume 93, Number 2, March-April 2005, pages 104-108.
- Ted Hill,\
The First Digit Phenomenon,\
American Scientist,\
Volume 86, Number 4, July/August 1998, pages 358-363.
- Douglas Hofstadter,\
Goedel, Escher, Bach,\
Basic Books, 1979,\
ISBN: 0465026567,\
LC: QA9.8H63.
- Masanobu Kaneko,\
Poly-Bernoulli Numbers,\
Journal Theorie des Nombres Bordeaux,\
Volume 9, Number 1, 1997, pages 221-228.
- Cleve Moler,\
Trigonometry is a Complex Subject,\
MATLAB News and Notes, Summer 1998.
- Thomas Osler,\
Cardan Polynomials and the Reduction of Radicals,\
Mathematics Magazine,\
Volume 74, Number 1, February 2001, pages 26-32.
- J Simoes Pereira,\
Algorithm 234: Poisson-Charliers Polynomials,\
Communications of the ACM,\
Volume 7, Number 7, July 1964, page 420.
- Charles Pinter,\
A Book of Abstract Algebra,\
Second Edition,\
McGraw Hill, 2003,\
ISBN: 0072943505,\
LC: QA162.P56.
- Ralph Raimi,\
The Peculiar Distribution of First Digits,\
Scientific American,\
December 1969, pages 109-119.
- Dennis Stanton, Dennis White,\
Constructive Combinatorics,\
Springer, 1986,\
ISBN: 0387963472,\
LC: QA164.S79.
- Gabor Szego,\
Orthogonal Polynomials,\
American Mathematical Society, 1992,\
ISBN: 0821810235,\
LC: QA3.A5.v23.
- Daniel Velleman, Gregory Call,\
Permutations and Combination Locks,\
Mathematics Magazine,\
Volume 68, Number 4, October 1995, pages 243-253.
- Divakar Viswanath,\
Random Fibonacci sequences and the number 1.13198824,\
Mathematics of Computation,\
Volume 69, Number 231, July 2000, pages 1131-1155.
- Michael Waterman,\
Introduction to Computational Biology,\
Chapman and Hall, 1995,\
ISBN: 0412993910,\
LC: QH438.4.M33.W38.
- Eric Weisstein,\
CRC Concise Encyclopedia of Mathematics,\
CRC Press, 2002,\
Second edition,\
ISBN: 1584883472,\
LC: QA5.W45
- Stephen Wolfram,\
The Mathematica Book,\
Fourth Edition,\
Cambridge University Press, 1999,\
ISBN: 0-521-64314-7,\
LC: QA76.95.W65.
- ML Wolfson, HV Wright,\
ACM Algorithm 160: Combinatorial of M Things Taken N at a Time,\
Communications of the ACM,\
Volume 6, Number 4, April 1963, page 161.
- Shanjie Zhang, Jianming Jin,\
Computation of Special Functions,\
Wiley, 1996,\
ISBN: 0-471-11963-6,\
LC: QA351.C45.
- Daniel Zwillinger, editor,\
CRC Standard Mathematical Tables and Formulae,\
30th Edition,\
CRC Press, 1996,\
ISBN: 0-8493-2479-3,\
LC: QA47.M315.
Source Code: {#source-code align=”center”}
Examples and Tests: {#examples-and-tests align=”center”}
List of Routines: {#list-of-routines align=”center”}
- AGM computes the arithmetic-geometric mean of A and B.
- AGM_VALUES returns some values of the AGM.
- AGUD evaluates the inverse Gudermannian function.
- ALIGN_ENUM counts the alignments of two sequences of M and N
elements.
- ARC_COSINE computes the arc cosine function, with argument
truncation.
- ARC_SINE computes the arc sine function, with argument
truncation.
- ASINH2 returns the inverse hyperbolic sine of a number.
- ATAN4 computes the inverse tangent of the ratio Y / X.
- ATANH2 returns the inverse hyperbolic tangent of a number.
- BELL returns the Bell numbers from 0 to N.
- BELL_VALUES returns some values of the Bell numbers.
- BENFORD returns the Benford probability of one or more
significant digits.
- BERNOULLI_NUMBER computes the value of the Bernoulli numbers
B(0) through B(N).
- BERNOULLI_NUMBER2 evaluates the Bernoulli numbers.
- BERNOULLI_NUMBER3 computes the value of the Bernoulli number
B(N).
- BERNOULLI_NUMBER_VALUES returns some values of the Bernoulli
numbers.
- BERNOULLI_POLY evaluates the Bernoulli polynomial of order N
at X.
- BERNOULLI_POLY2 evaluates the N-th Bernoulli polynomial at X.
- BERNSTEIN_POLY evaluates the Bernstein polynomials at a
point X.
- BERNSTEIN_POLY_VALUES returns some values of the Bernstein
polynomials.
- BETA returns the value of the Beta function.
- BETA_VALUES returns some values of the Beta function.
- BPAB evaluates at X the Bernstein polynomials based in [A,B].
- CARDAN evaluates the Cardan polynomials.
- CARDAN_POLY_COEF computes the coefficients of the N-th Cardan
polynomial.
- CARDINAL_COS evaluates the J-th cardinal cosine basis function.
- CARDINAL_SIN evaluates the J-th cardinal sine basis function.
- CATALAN computes the Catalan numbers, from C(0) to C(N).
- CATALAN_ROW_NEXT computes row N of Catalan’s triangle.
- CATALAN_VALUES returns some values of the Catalan numbers.
- CHARLIER evaluates Charlier polynomials at a point.
- CHEBY_T_POLY evaluates Chebyshev polynomials T(n,x).
- CHEBY_T_POLY_COEF evaluates coefficients of Chebyshev
polynomials T(n,x).
- CHEBY_T_POLY_VALUES returns values of Chebyshev polynomials
T(n,x).
- CHEBY_T_POLY_ZERO returns zeroes of Chebyshev polynomials
T(n,x).
- CHEBY_U_POLY evaluates Chebyshev polynomials U(n,x).
- CHEBY_U_POLY_COEF evaluates coefficients of Chebyshev
polynomials U(n,x).
- CHEBY_U_POLY_VALUES returns values of Chebyshev polynomials
U(n,x).
- CHEBY_U_POLY_ZERO returns zeroes of Chebyshev polynomials
U(n,x).
- CHEBYSHEV_DISCRETE evaluates discrete Chebyshev polynomials at
a point.
- COLLATZ_COUNT counts the number of terms in a Collatz sequence.
- COLLATZ_COUNT_MAX seeks the maximum Collatz count for 1
through N.
- COLLATZ_COUNT_VALUES returns some values of the Collatz count
function.
- COMB_ROW computes row N of Pascal’s triangle.
- COMMUL computes a multinomial combinatorial coefficient.
- COMPLETE_SYMMETRIC_POLY evaluates a complete symmetric
polynomial.
- COS_DEG returns the cosine of an angle given in degrees.
- COS_POWER_INT evaluates the cosine power integral.
- COS_POWER_INT_VALUES returns some values of the sine power
integral.
- E_CONSTANT returns the value of the base of the natural
logarithm system.
- ERF_VALUES returns some values of the ERF or “error” function.
- ERROR_F evaluates the error function ERF(X).
- ERROR_F_INVERSE inverts the error function ERF.
- EULER_CONSTANT returns the value of the Euler-Mascheroni
constant.
- EULER_NUMBER computes the Euler numbers.
- EULER_NUMBER2 computes the Euler numbers.
- EULER_NUMBER_VALUES returns some values of the Euler numbers.
- EULER_POLY evaluates the N-th Euler polynomial at X.
- EULERIAN computes the Eulerian number E(N,K).
- F_HOFSTADTER computes the Hofstadter F sequence.
- FIBONACCI_DIRECT computes the N-th Fibonacci number directly.
- FIBONACCI_FLOOR returns the largest Fibonacci number less or
equal to N.
- FIBONACCI_RECURSIVE computes the first N Fibonacci numbers.
- G_HOFSTADTER computes the Hofstadter G sequence.
- GAMMA_LOG_VALUES returns some values of the Log Gamma
function.
- GAMMA_VALUES returns some values of the Gamma function.
- GEGENBAUER_POLY computes the Gegenbauer polynomials
C(0:N,ALPHA,X).
- GEGENBAUER_POLY_VALUES returns some values of the Gegenbauer
polynomials.
- GEN_HERMITE_POLY evaluates the generalized Hermite polynomials
at X.
- GEN_LAGUERRE_POLY evaluates generalized Laguerre polynomials.
- GUD evaluates the Gudermannian function.
- GUD_VALUES returns some values of the Gudermannian function.
- H_HOFSTADTER computes the Hofstadter H sequence.
- HAIL computes the hail function.
- HERMITE_POLY evaluates the Hermite polynomials at X.
- HERMITE_POLY_COEF evaluates the coefficients of the
physicist’s Hermite polynomial H(n,x).
- HERMITE_POLY_VALUES returns some values of the Hermite
polynomial.
- HYPERGEOMETRIC_CDF_VALUES returns some values of the
hypergeometric function 2F1.
- I4_CHOOSE computes the binomial coefficient C(N,K).
- I4_FACTOR factors an integer into prime factors.
- I4_FACTORIAL computes the factorial of N.
- I4_FACTORIAL_VALUES returns values of the factorial function.
- I4_FACTORIAL2 computes the double factorial function.
- I4_FACTORIAL2_VALUES returns values of the double factorial
function.
- I4_GCD finds the greatest common divisor of two I4’s.
- I4_IS_PRIME reports whether an I4 is prime.
- I4_IS_TRIANGULAR determines whether an I4 is triangular.
- I4_MAX returns the maximum of two I4’s.
- I4_MIN returns the smaller of two I4’s.
- I4_MODP returns the nonnegative remainder of I4 division.
- I4_PARTITION_DISTINCT_COUNT returns any value of Q(N).
- I4_POCHHAMMER returns the value of ( I * (I+1) * … *
(J-1) * J ).
- I4_SIGN returns the sign of an integer.
- I4_SWAP switches two integer values.
- I4_TO_TRIANGLE converts an integer to triangular coordinates.
- I4_UNIFORM_AB returns a scaled pseudorandom I4.
- I4MAT_PRINT prints an I4MAT.
- I4MAT_PRINT_SOME prints some of an I4MAT.
- JACOBI_POLY evaluates the Jacobi polynomials at X.
- JACOBI_POLY_VALUES returns some values of the Jacobi
polynomial.
- JACOBI_SYMBOL evaluates the Jacobi symbol (Q/P).
- KRAWTCHOUK evaluates the Krawtchouk polynomials at X.
- LAGUERRE_ASSOCIATED evaluates the associated Laguerre
polynomials L(N,M,X) at X.
- LAGUERRE_POLY evaluates the Laguerre polynomials at X.
- LAGUERRE_POLY_COEF evaluates the Laguerre polynomial
coefficients.
- LAGUERRE_POLYNOMIAL_VALUES returns some values of the Laguerre
polynomial.
- LEGENDRE_ASSOCIATED evaluates the associated Legendre
functions.
- LEGENDRE_ASSOCIATED_NORMALIZED: normalized associated Legendre
functions.
- LEGENDRE_ASSOCIATED_NORMALIZED_VALUES: normalied associated
Legendre.
- LEGENDRE_ASSOCIATED_VALUES returns values of associated
Legendre functions.
- LEGENDRE_FUNCTION_Q evaluates the Legendre Q functions.
- LEGENDRE_FUNCTION_Q_VALUES returns values of the Legendre Q
function.
- LEGENDRE_POLY evaluates the Legendre polynomials.
- LEGENDRE_POLY_COEF evaluates the Legendre polynomial
coefficients.
- LEGENDRE_POLY_VALUES returns values of the Legendre
polynomials.
- LEGENDRE_SYMBOL evaluates the Legendre symbol (Q/P).
- LERCH estimates the Lerch transcendent function.
- LERCH_VALUES returns some values of the Lerch transcendent
function.
- LOCK returns the number of codes for a lock with N buttons.
- MEIXNER evaluates Meixner polynomials at a point.
- MERTENS evaluates the Mertens function.
- MERTENS_VALUES returns some values of the Mertens function.
- MOEBIUS returns the value of MU(N), the Moebius function of N.
- MOEBIUS_VALUES returns some values of the Moebius function.
- MOTZKIN returns the Motzkin numbers up to order N.
- NORMAL_01_CDF_INV inverts the standard normal CDF.
- OMEGA returns OMEGA(N), the number of distinct prime divisors
of N.
- OMEGA_VALUES returns some values of the OMEGA function.
- PARTITION_COUNT_VALUES returns values of the integer partition
count.
- PARTITION_DISTINCT_COUNT_VALUES returns some values of Q(N).
- PENTAGON_NUM computes the N-th pentagonal number.
- PHI computes the number of relatively prime predecessors of an
integer.
- PHI_VALUES returns some values of the PHI function.
- PLANE_PARTITION_NUM returns the number of plane partitions of
the integer N.
- POLY_BERNOULLI evaluates the poly-Bernolli numbers with
negative index.
- POLY_COEF_COUNT: polynomial coefficient count given dimension
and degree.
- PRIME returns any of the first PRIME_MAX prime numbers.
- PSI_VALUES returns some values of the Psi or Digamma function.
- PYRAMID_NUM returns the N-th pyramidal number.
- R8_ABS returns the absolute value of an R8.
- R8_ACOSH returns the inverse hyperbolic cosine of a number.
- R8_ASINH returns the inverse hyperbolic sine of a number.
- R8_ATANH returns the inverse hyperbolic tangent of a number.
- R8_CHOOSE computes the combinatorial coefficient C(N,K).
- R8_COT returns the cotangent of an angle.
- R8_COT_DEG returns the cotangent of an angle given in degrees.
- R8_CSC returns the cosecant of X.
- R8_CSC_DEG returns the cosecant of an angle given in degrees.
- R8_EPSILON returns the R8 roundoff unit.
- R8_FACTORIAL returns the factorial function as an R8.
- R8_FACTORIAL_LOG computes the natural logarithm of the
factorial function.
- R8_FACTORIAL_LOG_VALUES returns values of log(factorial(n)).
- R8_FACTORIAL_VALUES returns values of the real factorial
function.
- R8_FACTORIAL2 computes the double factorial function.
- R8_GAMMA evaluates Gamma(X) for a real argument.
- R8_GAMMA_LOG calculates the natural logarithm of GAMMA ( X )
for positive X.
- R8_HUGE returns a “huge” R8.
- R8_HYPER_2F1 evaluates the hypergeometric function F(A,B,C,X).
- R8_MAX returns the maximum of two R8’s.
- R8_MIN returns the minimum of two R8’s.
- R8_MOP returns the I-th power of -1 as an R8 value.
- R8_NINT returns the integer that is nearest to a real value.
- R8_PI returns the value of PI.
- R8_PSI evaluates the function Psi(X).
- R8_UNIFORM_01 is a portable pseudorandom number generator.
- R8POLY_DEGREE returns the degree of a polynomial.
- R8POLY_PRINT prints out a polynomial.
- R8POLY_VALUE evaluates a double precision polynomial.
- R8VEC_LINSPACE_NEW creates a vector of linearly spaced values.
- R8VEC_PRINT prints an R8VEC.
- R8VEC_ZERO zeroes a real vector.
- S_LEN_TRIM returns the length of a string to the last
nonblank.
- SEC_DEG returns the secant of an angle given in degrees.
- SIGMA returns the value of SIGMA(N), the divisor sum.
- SIGMA_VALUES returns some values of the Sigma function.
- SIN_DEG returns the sine of an angle given in degrees.
- SIN_POWER_INT evaluates the sine power integral.
- SIN_POWER_INT_VALUES returns some values of the sine power
integral.
- SLICE: maximum number of pieces created by a given number of
slices.
- SPHERICAL_HARMONIC evaluates spherical harmonic functions.
- SPHERICAL_HARMONIC_VALUES returns values of spherical harmonic
functions.
- STIRLING1 computes the Stirling numbers of the first kind.
- STIRLING2 computes the Stirling numbers of the second kind.
- TAN_DEG returns the tangent of an angle given in degrees.
- TAU returns the value of TAU(N), the number of distinct divisors
of N.
- TAU_VALUES returns some values of the Tau function.
- TETRAHEDRON_NUM returns the N-th tetrahedral number.
- TIMESTAMP prints the current YMDHMS date as a time stamp.
- TRIANGLE_NUM returns the N-th triangular number.
- TRIANGLE_TO_I4 converts a triangular coordinate to an integer.
- V_HOFSTADTER computes the Hofstadter V sequence.
- VIBONACCI computes the first N Vibonacci numbers.
- ZECKENDORF produces the Zeckendorf decomposition of a positive
integer.
- ZERNIKE_POLY evaluates a Zernike polynomial at RHO.
- ZERNIKE_POLY_COEF: coefficients of a Zernike polynomial.
- ZETA estimates the Riemann Zeta function.
- ZETA_VALUES returns some values of the Riemann Zeta function.
You can go up one level to the C++ source codes.
Last revised on 13 May 2014.