Mathematical Functions—Wolfram Documentation (original) (raw)
TECH NOTE
Mathematical Functions
Mathematical functions in the Wolfram Language are given names according to definite rules. As with most Wolfram Language functions, the names are usually complete English words, fully spelled out. For a few very common functions, the Wolfram Language uses the traditional abbreviations. Thus the modulo function, for example, is Mod, not Modulo.
Mathematical functions that are usually referred to by a person's name have names in the Wolfram Language of the form PersonSymbol. Thus, for example, the Legendre polynomials
are denoted LegendreP[n,x]. Although this convention does lead to longer function names, it avoids any ambiguity or confusion.
When the standard notation for a mathematical function involves both subscripts and superscripts, the subscripts are given before the superscripts in the Wolfram Language form. Thus, for example, the associated Legendre polynomials
are denoted LegendreP[n,m,x].
Generic and Non‐Generic Cases
For the special case of
, however, the correct result is different:
The overall goal of symbolic computation is typically to get formulas that are valid for many possible values of the variables that appear in them. It is however often not practical to try to get formulas that are valid for absolutely every possible value of each variable.
If
is equal to 0, however, then the true result is not 0:
This construct treats both cases, but would be quite unwieldy to use:
If the Wolfram Language did not automatically replace
by 0, then few symbolic computations would get very far. But you should realize that the practical necessity of making such replacements can cause misleading results to be obtained when exceptional values of parameters are used.
The basic operations of the Wolfram Language are nevertheless carefully set up so that whenever possible the results obtained will be valid for almost all values of each variable.
If it were, then the result here would be
, which is incorrect:
This makes the assumption that
is a positive real variable, and does the replacement:
Functions relating real numbers and integers.
Extracting integer and fractional parts.
IntegerPart[x] and FractionalPart[x] can be thought of as extracting digits to the left and right of the decimal point. Round[x] is often used for forcing numbers that are close to integers to be exactly integers. Floor[x] and Ceiling[x] often arise in working out how many elements there will be in sequences of numbers with non‐integer spacings.
| RealSign[x] | 1 for x>0, -1 for x<0 |
|---|---|
| UnitStep[x] | 1 for x≥0, 0 for x<0 |
| RealAbs[x] | absolute value x of x |
| Clip[x] | x clipped to be between -1 and +1 |
| Rescale[x,{xmin,xmax}] | x rescaled to run from 0 to 1 |
| Max[x1,x2,…] or Max[{x1,x2,…},…] | |
| the maximum of x1, x2, … | |
| Min[x1,x2,…] or Min[{x1,x2,…},…] | |
| the minimum of x1, x2, … |
Numerical functions of real variables.
| x+I y | the complex number x+iy |
|---|---|
| Re[z] | the real part Re z |
| Im[z] | the imaginary part Im z |
| Conjugate[z] | the complex conjugate z* or ![]() |
| Abs[z] | the absolute value z |
| Arg[z] | the argument ϕ such that z=zei ϕ |
| Sign[z] | the complex sign z/z for z≠0 |
Numerical functions of complex variables.
Turning conditions into numbers.
Boole[expr] is a basic function that turns True and False into 1 and 0. It is sometimes known as the characteristic function or indicator function.
This gives the area of a unit disk:
| Piecewise[{{val1,cond1},{val2,cond2},…}] | |
|---|---|
| give the first vali for which condi is True | |
| Piecewise[{{val1,cond1},…},val] | give val if all condi are False |
It is often convenient to have functions with different forms in different regions. You can do this using Piecewise.
This plots a piecewise function:
Piecewise functions appear in systems where there is discrete switching between different domains. They are also at the core of many computational methods, including splines and finite elements. Special cases include such functions as RealAbs, UnitStep, Clip, RealSign, Floor, and Max. The Wolfram Language handles piecewise functions in both symbolic and numerical situations.
This generates a square wave:
Here is the integral of the square wave:
The Wolfram Language has three functions for generating pseudorandom numbers that are distributed uniformly over a range of values.
Pseudorandom number generation.
| RandomReal[range,n] , RandomComplex[range,n] , RandomInteger[range,n] |
|---|
| a list of n pseudorandom numbers from the given range |
| RandomReal[range,{n1,n2,…}] , RandomComplex[range,{n1,n2,…}] , RandomInteger[range,{n1,n2,…}] |
| an n1×n2×… array of pseudorandom numbers |
Generating tables of pseudorandom numbers.
This will give 0 or 1 with equal probability:
This gives a pseudorandom complex number:
This gives a list of 10 pseudorandom integers between 0 and 9 (inclusive):
This gives a matrix of pseudorandom reals between 0 and 1:
RandomReal and RandomComplex allow you to obtain pseudorandom numbers with any precision.
Changing the precision for pseudorandom numbers.
Here is a 30‐digit pseudorandom real number in the range 0 to 1:
Here is a list of four 20-digit pseudorandom complex numbers:
If you get arrays of pseudorandom numbers repeatedly, you should get a "typical" sequence of numbers, with no particular pattern. There are many ways to use such numbers.
One common way to use pseudorandom numbers is in making numerical tests of hypotheses. For example, if you believe that two symbolic expressions are mathematically equal, you can test this by plugging in "typical" numerical values for symbolic parameters, and then comparing the numerical results. (If you do this, you should be careful about numerical accuracy problems and about functions of complex variables that may not have unique values.)
Here is a symbolic equation:
Substituting in a random numerical value shows that the equation is not always True:
Other common uses of pseudorandom numbers include simulating probabilistic processes, and sampling large spaces of possibilities. The pseudorandom numbers that the Wolfram Language generates for a range of numbers are always uniformly distributed over the range you specify.
RandomInteger, RandomReal, and RandomComplex are unlike almost any other Wolfram Language functions in that every time you call them, you potentially get a different result. If you use them in a calculation, therefore, you may get different answers on different occasions.
The sequences that you get from RandomInteger, RandomReal, and RandomComplex are not in most senses "truly random", although they should be "random enough" for practical purposes. The sequences are in fact produced by applying a definite mathematical algorithm, starting from a particular "seed". If you give the same seed, then you get the same sequence.
When the Wolfram Language starts up, it takes the time of day (measured in small fractions of a second) as the seed for the pseudorandom number generator. Two different Wolfram Language sessions will therefore almost always give different sequences of pseudorandom numbers.
If you want to make sure that you always get the same sequence of pseudorandom numbers, you can explicitly give a seed for the pseudorandom generator, using SeedRandom.
| SeedRandom[] | reseed the pseudorandom generator, with the time of day |
|---|---|
| SeedRandom[s] | reseed with the integer s |
Pseudorandom number generator seed.
This reseeds the pseudorandom generator:
Here are three pseudorandom numbers:
If you reseed the pseudorandom generator with the same seed, you get the same sequence of pseudorandom numbers:
Every single time RandomInteger, RandomReal, or RandomComplex is called, the internal state of the pseudorandom generator that it uses is changed. This means that subsequent calls to these functions made in subsidiary calculations will have an effect on the numbers returned in your main calculation. To avoid any problems associated with this, you can localize this effect of their use by doing the calculation inside of BlockRandom.
| BlockRandom[expr] | evaluates expr with the current state of the pseudorandom generators localized |
|---|
By localizing the calculation inside BlockRandom, the internal state of the pseudorandom generator is restored after generating the first list:
Many applications require random numbers from non‐uniform distributions. The Wolfram Language has many distributions built into the system. You can give a distribution with appropriate parameters instead of a range to RandomInteger or RandomReal.
| RandomInteger[dist] , RandomReal[dist] |
|---|
| a pseudorandom number distributed by the random distribution dist |
| RandomInteger[dist,n] , RandomReal[dist,n] |
| a list of n pseudorandom numbers distributed by the random distribution dist |
| RandomInteger[dist,{n1,n2,…}] , RandomReal[dist,{n1,n2,…}] |
| an n1×n2×… array of pseudorandom numbers distributed by the random distribution dist |
Generating pseudorandom numbers with non-uniform distributions.
This generates 12 integers distributed by the Poisson distribution with mean 3:
This generates a 4×4 matrix of real numbers using the standard normal distribution:
This generates five high-precision real numbers distributed normally with mean 2 and standard deviation 4:
An additional use of pseudorandom numbers is for selecting from a list. RandomChoice selects with replacement and RandomSample samples without replacement.
| RandomChoice[list, n] | choose n items at random from list |
|---|---|
| RandomChoice[list,{n1,n2,…}] | an n1×n2×… array of values chosen randomly from list |
| RandomSample[list, n] | a sample of size n from list |
Choose 10 items at random from the digits 0 through 9:
Chances are very high that at least one of the choices was repeated in the output. That is because when an element is chosen, it is immediately replaced. On the other hand, if you want to select from an actual set of elements, there should be no replacement.
Sample 10 items at random from the digits 0 through 9 without replacement. The result is a random permutation of the digits:
Sample 10 items from a set having different frequencies for each digit:
Integer and Number Theoretic Functions
| Mod[k,n] | k modulo n (remainder from dividing k by n) |
|---|---|
| Quotient[m,n] | the quotient of m and n (truncation of m/n) |
| QuotientRemainder[m,n] | a list of the quotient and the remainder |
| Divisible[m,n] | test whether m is divisible by n |
| CoprimeQ[n1,n2,…] | test whether the ni are pairwise relatively prime |
| GCD[n1,n2,…] | the greatest common divisor of n1, n2, … |
| LCM[n1,n2,…] | the least common multiple of n1, n2, … |
| KroneckerDelta[n1,n2,…] | the Kronecker delta equal to 1 if all the ni are equal, and 0 otherwise |
| IntegerDigits[n,b] | the digits of n in base b |
| IntegerExponent[n,b] | the highest power of b that divides n |
The remainder on dividing 17 by 3:
The integer part of 17/3:
Mod also works with real numbers:
The result from Mod always has the same sign as the second argument:
For any integers a and b, it is always true that b*Quotient[a,b]+Mod[a,b] is equal to a.
| Mod[k,n] | result in the range 0 to n-1 |
|---|---|
| Mod[k,n,1] | result in the range 1 to n |
| Mod[k,n,-n/2] | result in the range ⌈-n/2⌉ to ⌊+n/2⌋ |
| Mod[k,n,d] | result in the range d to d+n-1 |
Integer remainders with offsets.
Particularly when you are using Mod to get indices for parts of objects, you will often find it convenient to specify an offset.
This effectively extracts the 18 th part of the list, with the list treated cyclically:
The greatest common divisor function GCD[n1,n2,…] gives the largest integer that divides all the ni exactly. When you enter a ratio of two integers, the Wolfram Language effectively uses GCD to cancel out common factors and give a rational number in lowest terms.
The least common multiple function LCM[n1,n2,…] gives the smallest integer that contains all the factors of each of the ni.
The largest integer that divides both 24 and 15 is 3:
The Kronecker delta function KroneckerDelta[n1,n2,…] is equal to 1 if all the ni are equal, and is 0 otherwise.
can be thought of as a totally symmetric tensor.
This gives a totally symmetric tensor of rank 3:
Integer factoring and related functions.
Here are the factors of a larger integer:
You should realize that according to current mathematical thinking, integer factoring is a fundamentally difficult computational problem. As a result, you can easily type in an integer that the Wolfram Language will not be able to factor in anything short of an astronomical length of time. But as long as the integers you give are less than about 50 digits long, FactorInteger should have no trouble. And in special cases it will be able to deal with much longer integers.
Here is a rather special long integer:
The Wolfram Language can easily factor this special integer:
Although the Wolfram Language may not be able to factor a large integer, it can often still test whether or not the integer is a prime. In addition, the Wolfram Language has a fast way of finding the
th prime number.
It is often much faster to test whether a number is prime than to factor it:
Here is a plot of the first 100 primes:
This is the millionth prime:
This gives the number of primes less than a billion:
PrimeNu gives the number of distinct primes in the factorization of n:
PrimeOmega gives the number of prime factors counting multiplicities
in n:
The Mangoldt function returns the log of prime power base or zero when composite:
Over the Gaussian integers, 2 can be factored as
:
Here are the factors of a Gaussian integer:
| PowerMod[a,b,n] | the power ab modulo n |
|---|---|
| DirichletCharacter[k,j,n] | the Dirichlet character ![]() |
| EulerPhi[n] | the Euler totient function ![]() |
| MoebiusMu[n] | the Möbius function ![]() |
| DivisorSigma[k,n] | the divisor function ![]() |
| DivisorSum[n,form] | the sum of form[i] for all i that divide n |
| DivisorSum[n,form,cond] | the sum for only those divisors for which cond[i] gives True |
| JacobiSymbol[n,m] | the Jacobi symbol ![]() |
| ExtendedGCD[n1,n2,…] | the extended GCD of n1, n2, … |
| MultiplicativeOrder[k,n] | the multiplicative order of k modulo n |
| MultiplicativeOrder[k,n,{r1,r2,…}] | the generalized multiplicative order with residues ri |
| CarmichaelLambda[n] | the Carmichael function ![]() |
| PrimitiveRoot[n] | a primitive root of n |
Some functions from number theory.
The modular power function PowerMod[a,b,n] gives exactly the same results as Mod[a^b,n] for b>0. PowerMod is much more efficient, however, because it avoids generating the full form of a^b.
This gives the modular inverse of 3 modulo 7:
Multiplying the inverse by 3 modulo 7 gives 1, as expected:
This verifies the result:
This returns all integers less than 11 which satisfy the relation:
If d does not have a square root modulo n, PowerMod[d,n] will remain unevaluated and PowerModList will return an empty list:
This checks that 3 is not a square modulo 5:
Even for a large modulus, the square root can be computed fairly quickly:
PowerMod[d,n] also works for composite
:
There are
distinct Dirichlet characters for a given modulus k, as labeled by the index j. Different conventions can give different orderings for the possible characters.
The result is 1, as guaranteed by Fermat's little theorem:
This gives a list of all the divisors of 24:
gives the total number of distinct divisors of 24:
The function DivisorSum[n,form] represents the sum of form[i] for all i that divide n. DivisorSum[n,form,cond] includes only those divisors for which cond[i] gives True.
This gives a list of sums for the divisors of five positive integers:
This imposes the condition that the value of each divisor i must be less than 6:
The first number in the list is the GCD of 105 and 196:
The second pair of numbers satisfies
:
The generalized multiplicative order function MultiplicativeOrder[k,n,{r1,r2,…}] gives the smallest integer
such that
for some
. MultiplicativeOrder[k,n,{-1,1}] is sometimes known as the suborder function of
modulo
, denoted
. MultiplicativeOrder[k,n,{a}] is sometimes known as the discrete log of
with respect to the base
modulo
.
| ContinuedFraction[x,n] | generate the first n terms in the continued fraction representation of x |
|---|---|
| FromContinuedFraction[list] | reconstruct a number from its continued fraction representation |
| Rationalize[x,dx] | find a rational approximation to x with tolerance dx |
This generates the first 10 terms in the continued fraction representation for
:
This reconstructs the number represented by the list of continued fraction terms:
The result is close to
:
This gives directly a rational approximation to
:
Continued fractions appear in many number theoretic settings. Rational numbers have terminating continued fraction representations. Quadratic irrational numbers have continued fraction representations that become repetitive.
| ContinuedFraction[x] | the complete continued fraction representation for a rational or quadratic irrational number |
|---|---|
| QuadraticIrrationalQ[x] | test whether x is a quadratic irrational |
| RealDigits[x] | the complete digit sequence for a rational number |
| RealDigits[x,b] | the complete digit sequence in base b |
Complete representations for numbers.
The continued fraction representation of
starts with the term 8, then involves a sequence of terms that repeat forever:
This reconstructs
from its continued fraction representation:
This number is a quadratic irrational:
This shows the recurring sequence of decimal digits in 3/7:
| Convergents[x] | give a list of rational approximations of x |
|---|---|
| Convergents[x,n] | give only the first n approximations |
Continued fraction convergents.
This gives a list of rational approximations of 101/9801, derived from its continued fraction expansion:
This lists only the first 10 convergents:
This lists successive rational approximations to
, until the numerical precision is exhausted:
With an exact irrational number, you have to explicitly ask for a certain number of terms:
Functions for integer lattices.
Three unit vectors along the three coordinate axes already form a reduced basis:
This gives the reduced basis for a lattice in four‐dimensional space specified by three vectors:
Notice that in the last example, LatticeReduce replaces vectors that are nearly parallel by vectors that are more perpendicular. In the process, it finds some quite short basis vectors.
In this case, the original matrix is recovered because it was in row echelon form:
This satisfies the required identities:
Here the second matrix has some pivots larger than 1, and nonzero entries over pivots:
| DigitCount[n,b,d] | the number of d digits in the base b representation of n |
|---|
Here are the digits in the base 2 representation of the number 77:
This directly computes the number of ones in the base 2 representation:
The plot of the digit count function is self‐similar:
| BitAnd[n1,n2,…] | bitwise AND of the integers ni |
|---|---|
| BitOr[n1,n2,…] | bitwise OR of the integers ni |
| BitXor[n1,n2,…] | bitwise XOR of the integers ni |
| BitNot[n] | bitwise NOT of the integer n |
| BitLength[n] | number of binary bits in the integer n |
| BitSet[n,k] | set bit k to 1 in the integer n |
| BitGet[n,k] | get bit k from the integer n |
| BitClear[n,k] | set bit k to 0 in the integer n |
| BitShiftLeft[n,k] | shift the integer n to the left by k bits, padding with zeros |
| BitShiftRight[n,k] | shift to the right, dropping the last k bits |
Bitwise operations act on integers represented as binary bits. BitAnd[n1,n2,…] yields the integer whose binary bit representation has ones at positions where the binary bit representations of all of the ni have ones. BitOr[n1,n2,…] yields the integer with ones at positions where any of the ni have ones. BitXor[n1,n2] yields the integer with ones at positions where n1 or n2 but not both have ones. BitXor[n1,n2,…] has ones where an odd number of the ni have ones.
This finds the bitwise AND of the numbers 23 and 29 entered in base 2:
Bitwise operations are used in various combinatorial algorithms. They are also commonly used in manipulating bitfields in low‐level computer languages. In such languages, however, integers normally have a limited number of digits, typically a multiple of 8. Bitwise operations in the Wolfram Language in effect allow integers to have an unlimited number of digits. When an integer is negative, it is taken to be represented in two's complement form, with an infinite sequence of ones on the left. This allows BitNot[n] to be equivalent simply to
.
Testing for a squared factor.
SquareFreeQ[n] checks to see if n has a square prime factor. This is done by computing MoebiusMu[n] and seeing if the result is zero; if it is, then n is not squarefree, otherwise it is. Computing MoebiusMu[n] involves finding the smallest prime factor q of n. If n has a small prime factor (less than or equal to
), this is very fast. Otherwise, FactorInteger is used to find q.
This product of primes contains no squared factors:
The square number 4 divides 60:
| NextPrime[n] | give the smallest prime larger than n |
|---|---|
| RandomPrime[{min,max}] | return a random prime number between min and max |
| RandomPrime[max] | return a random prime number less than or equal to max |
| RandomPrime[{min,max},n] | return n random prime numbers between min and max |
| RandomPrime[max,n] | return n random prime numbers less than or equal to max |
NextPrime[n] finds the smallest prime p such that p>n. The algorithm does a direct search using PrimeQ on the odd numbers greater than n.
This gives the next prime after 10:
Even for large numbers, the next prime can be computed rather quickly:
This gives the largest prime less than 34:
For RandomPrime[{min,max}] and RandomPrime[max], a random prime p is obtained by randomly selecting from a prime lookup table if max is small and by a random search of integers in the range if max is large. If no prime exists in the specified range, the input is returned unevaluated with an error message.
Here is a random prime between 10 and 100:
| PrimePowerQ[n] | determine whether n is a positive integer power of a rational prime |
|---|
Testing for involving prime powers.
The algorithm for PrimePowerQ involves first computing the least prime factor p of n and then attempting division by p until either 1 is obtained, in which case n is a prime power, or until division is no longer possible, in which case n is not a prime power.
Here is a number that is a power of a single prime:
Solving simultaneous congruences.
The Chinese remainder theorem states that a certain class of simultaneous congruences always has a solution. ChineseRemainder[list1,list2] finds the smallest non‐negative integer r such that Mod[r,list2] is list1. The solution is unique modulo the least common multiple of the elements of list2.
This confirms the result:
Longer lists are still quite fast:
| PrimitiveRoot[n] | give a primitive root of n, where n is a prime power or twice a prime power |
|---|
Computing primitive roots.
PrimitiveRoot[n] returns a generator for the group of numbers relatively prime to n under multiplication
. This has a generator if and only if n is 2, 4, a power of an odd prime, or twice a power of an odd prime. If n is a prime or prime power, the least positive primitive root will be returned.
Here is a primitive root of 5:
This confirms that it does generate the group:
Here is a primitive root of a prime power:
Here is a primitive root of twice a prime power:
If the argument is composite and not a prime power or twice a prime power, the function does not evaluate:
| SquaresR[d,n] | give the number of representations of an integer n as a sum of d squares |
|---|---|
| PowersRepresentations[n,k,p] | give the distinct representations of the integer n as a sum of k non-negative p th integer powers |
Representing an integer as a sum of squares or other powers.
Here are the representations of 101 as a sum of 3 squares:
| n! | factorial ![]() |
|---|---|
| n!! | double factorial ![]() |
| Binomial[n,m] | binomial coefficient ![]() |
| Multinomial[n1,n2,…] | multinomial coefficient ![]() |
| CatalanNumber[n] | Catalan number ![]() |
| Hyperfactorial[n] | hyperfactorial ![]() |
| BarnesG[n] | Barnes G-function ![]() |
| Subfactorial[n] | number of derangements of objects |
| Fibonacci[n] | Fibonacci number ![]() |
| Fibonacci[n,x] | Fibonacci polynomial ![]() |
| LucasL[n] | Lucas number ![]() |
| LucasL[n,x] | Lucas polynomial ![]() |
| HarmonicNumber[n] | harmonic number ![]() |
| HarmonicNumber[n,r] | harmonic number of order ![]() |
| BernoulliB[n] | Bernoulli number ![]() |
| BernoulliB[n,x] | Bernoulli polynomial ![]() |
| NorlundB[n,a] | Nörlund polynomial ![]() |
| NorlundB[n,a,x] | generalized Bernoulli polynomial ![]() |
| EulerE[n] | Euler number ![]() |
| EulerE[n,x] | Euler polynomial ![]() |
| StirlingS1[n,m] | Stirling number of the first kind ![]() |
| StirlingS2[n,m] | Stirling number of the second kind ![]() |
| BellB[n] | Bell number ![]() |
| BellB[n,x] | Bell polynomial ![]() |
| PartitionsP[n] | the number of unrestricted partitions of the integer ![]() |
| IntegerPartitions[n] | partitions of an integer |
| PartitionsQ[n] | the number of partitions of into distinct parts |
| Signature[{i1,i2,…}] | the signature of a permutation |
The Wolfram Language gives the exact integer result for the factorial of an integer:
For non‐integers, the Wolfram Language evaluates factorials using the gamma function:
The Wolfram Language can give symbolic results for some binomial coefficients:
This gives the number of ways of partitioning
objects into sets containing 6 and 5 objects:
The result is the same as
:
Numerical values for Bernoulli numbers are needed in many numerical algorithms. You can always get these numerical values by first finding exact rational results using BernoulliB[n], and then applying N.
This gives the second Bernoulli polynomial
:
You can also get Bernoulli polynomials by explicitly computing the power series for the generating function:
BernoulliB[n] gives exact rational‐number results for Bernoulli numbers:
IntegerPartitions[n] gives a list of the partitions of
, with length PartitionsP[n].
This gives a table of Stirling numbers of the first kind:
The Stirling numbers appear as coefficients in this product:
Here are the partitions of 4:
This gives the number of partitions of 100, with and without the constraint that the terms should be distinct:
Most of the functions here allow you to count various kinds of combinatorial objects. Functions like IntegerPartitions and Permutations allow you instead to generate lists of various combinations of elements.
| ClebschGordan[{j1,m1},{j2,m2},{j,m}] | Clebsch–Gordan coefficient |
|---|---|
| ThreeJSymbol[{j1,m1},{j2,m2},{j3,m3}] | Wigner 3‐j symbol |
| SixJSymbol[{j1,j2,j3},{j4,j5,j6}] | Racah 6‐j symbol |
Rotational coupling coefficients.
The 3‐j symbols or Wigner coefficients ThreeJSymbol[{j1,m1},{j2,m2},{j3,m3}] are a more symmetrical form of Clebsch–Gordan coefficients. In the Wolfram Language, the Clebsch–Gordan coefficients are given in terms of 3‐j symbols by
.
The 6‐j symbols SixJSymbol[{j1,j2,j3},{j4,j5,j6}] give the couplings of three quantum mechanical angular momentum states. The Racah coefficients are related by a phase to the 6‐j symbols.
You can give symbolic parameters in 3‐j symbols:
Elementary Transcendental Functions
| Exp[z] | exponential function ![]() |
|---|---|
| Log[z] | logarithm ![]() |
| Log[b,z] | logarithm to base ![]() |
| Log2[z] , Log10[z] | logarithm to base 2 and 10 |
| Sin[z] , Cos[z] , Tan[z] , Csc[z] , Sec[z] , Cot[z] | |
| trigonometric functions (with arguments in radians) | |
| ArcSin[z] , ArcCos[z] , ArcTan[z] , ArcCsc[z] , ArcSec[z] , ArcCot[z] | |
| inverse trigonometric functions (giving results in radians) | |
| ArcTan[x,y] | the argument of ![]() |
| Sinh[z] , Cosh[z] , Tanh[z] , Csch[z] , Sech[z] , Coth[z] | |
| hyperbolic functions | |
| ArcSinh[z] , ArcCosh[z] , ArcTanh[z] , ArcCsch[z] , ArcSech[z] , ArcCoth[z] | |
| inverse hyperbolic functions | |
| Sinc[z] | sinc function ![]() |
| Haversine[z] | haversine function ![]() |
| InverseHaversine[z] | inverse haversine function ![]() |
| Gudermannian[z] | Gudermannian function ![]() |
| InverseGudermannian[z] | inverse Gudermannian function ![]() |
Elementary transcendental functions.
The Wolfram Language gives exact results for logarithms whenever it can. Here is
:
You can find the numerical values of mathematical functions to any precision:
This gives a complex number result:
The Wolfram Language can evaluate logarithms with complex arguments:
The arguments of trigonometric functions are always given in radians:
You can convert from degrees by explicitly multiplying by the constant Degree:
Here is a plot of the hyperbolic tangent function. It has a characteristic "sigmoidal" form:
Functions That Do Not Have Unique Values
The need to make one choice from two solutions means that Sqrt[x] cannot be a true inverse function for x^2. Taking a number, squaring it, and then taking the square root can give you a different number than you started with.
Squaring and taking the square root does not necessarily give you the number you started with:
The branch cut in Sqrt along the negative real axis means that values of Sqrt[z] with
just above and below the axis are very different:
Their squares are nevertheless close:
The discontinuity along the negative real axis is quite clear in this three‐dimensional picture of the imaginary part of the square root function:
This takes the tenth power of a complex number. The result is unique:
There are 10 possible tenth roots. The Wolfram Language chooses one of them. In this case it is not the number whose tenth power you took:
There are many mathematical functions which, like roots, essentially give solutions to equations. The logarithm function and the inverse trigonometric functions are examples. In almost all cases, there are many possible solutions to the equations. Unique "principal" values nevertheless have to be chosen for the functions. The choices cannot be made continuous over the whole complex plane. Instead, lines of discontinuity, or branch cuts, must occur. The positions of these branch cuts are often quite arbitrary. The Wolfram Language makes the most standard mathematical choices for them.
Some branch‐cut discontinuities in the complex plane.
ArcSin is a multiple‐valued function, so there is no guarantee that it always gives the "inverse" of Sin:
Values of ArcSin[z] on opposite sides of the branch cut can be very different:
A three‐dimensional picture, showing the two branch cuts for the function
:
Khinchin's constant Khinchin (sometimes called Khintchine's constant) is given by
. It gives the geometric mean of the terms in the continued fraction representation for a typical real number.
Mathematical constants can be evaluated to arbitrary precision:
Exact computations can also be done with them:
| LegendreP[n,x] | Legendre polynomials ![]() |
|---|---|
| LegendreP[n,m,x] | associated Legendre polynomials ![]() |
| SphericalHarmonicY[l,m,θ,ϕ] | spherical harmonics ![]() |
| GegenbauerC[n,m,x] | Gegenbauer polynomials (x) |
| ChebyshevT[n,x] , ChebyshevU[n,x] | Chebyshev polynomials and of the first and second kinds |
| HermiteH[n,x] | Hermite polynomials ![]() |
| LaguerreL[n,x] | Laguerre polynomials ![]() |
| LaguerreL[n,a,x] | generalized Laguerre polynomials ![]() |
| ZernikeR[n,m,x] | Zernike radial polynomials ![]() |
| JacobiP[n,a,b,x] | Jacobi polynomials ![]() |
This gives the algebraic form of the Legendre polynomial
:
The integral
gives zero by virtue of the orthogonality of the Legendre polynomials:
Integrating the square of a single Legendre polynomial gives a nonzero result:
High‐degree Legendre polynomials oscillate rapidly:
The associated Legendre "polynomials" involve fractional powers:
"Special Functions" discusses the generalization of Legendre polynomials to Legendre functions, which can have noninteger degrees:
Gegenbauer polynomials GegenbauerC[n,m,x] can be viewed as generalizations of the Legendre polynomials to systems with
‐dimensional spherical symmetry. They are sometimes known as ultraspherical polynomials.
The name "Chebyshev" is a transliteration from the Cyrillic alphabet; several other spellings, such as "Tschebyscheff", are sometimes used.
This gives the density for an excited state of a quantum‐mechanical harmonic oscillator. The average of the wiggles is roughly the classical physics result:
You can get formulas for generalized Laguerre polynomials with arbitrary values of
:
The Wolfram System includes all the common special functions of mathematical physics found in standard handbooks. Each of the various classes of functions is discussed in turn.
One point you should realize is that in the technical literature there are often several conflicting definitions of any particular special function. When you use a special function in the Wolfram System, therefore, you should be sure to look at the definition given here to confirm that it is exactly what you want.
The Wolfram System gives exact results for some values of special functions:
No exact result is known here:
A numerical result, to arbitrary precision, can nevertheless be found:
You can give complex arguments to special functions:
Special functions automatically get applied to each element in a list:
The Wolfram System knows analytic properties of special functions, such as derivatives:
You can use FindRoot to find roots of special functions:
Special functions in the Wolfram System can usually be evaluated for arbitrary complex values of their arguments. Often, however, the defining relations given in this tutorial apply only for some special choices of arguments. In these cases, the full function corresponds to a suitable extension or analytic continuation of these defining relations. Thus, for example, integral representations of functions are valid only when the integral exists, but the functions themselves can usually be defined elsewhere by analytic continuation.
Gamma and Related Functions
| Beta[a,b] | Euler beta function ![]() |
|---|---|
| Beta[z,a,b] | incomplete beta function ![]() |
| BetaRegularized[z,a,b] | regularized incomplete beta function ![]() |
| Gamma[z] | Euler gamma function ![]() |
| Gamma[a,z] | incomplete gamma function ![]() |
| Gamma[a,z0,z1] | generalized incomplete gamma function ![]() |
| GammaRegularized[a,z] | regularized incomplete gamma function ![]() |
| InverseBetaRegularized[s,a,b] | inverse beta function |
| InverseGammaRegularized[a,s] | inverse gamma function |
| Pochhammer[a,n] | Pochhammer symbol ![]() |
| PolyGamma[z] | digamma function ![]() |
| PolyGamma[n,z] | th derivative of the digamma function ![]() |
| LogGamma[z] | Euler log-gamma function ![]() |
| LogBarnesG[z] | logarithm of Barnes G-function ![]() |
| BarnesG[z] | Barnes G-function ![]() |
| Hyperfactorial[n] | hyperfactorial function ![]() |
Gamma and related functions.
There are some computations, particularly in number theory, where the logarithm of the gamma function often appears. For positive real arguments, you can evaluate this simply as Log[Gamma[z]]. For complex arguments, however, this form yields spurious discontinuities. The Wolfram System therefore includes the separate function LogGamma[z], which yields the logarithm of the gamma function with a single branch cut along the negative real axis.
The Euler beta function Beta[a,b] is
.
The Pochhammer symbol or rising factorial Pochhammer[a,n] is
. It often appears in series expansions for hypergeometric functions. Note that the Pochhammer symbol has a definite value even when the gamma functions that appear in its definition are infinite.
The alternative incomplete gamma function
can therefore be obtained in the Wolfram System as Gamma[a,0,z].
BarnesG[z] is a generalization of the Gamma function and is defined by its functional identity BarnesG[z+1]=Gamma[z] BarnesG[z], where the third derivative of the logarithm of BarnesG is positive for positive z. BarnesG is an entire function in the complex plane.
LogBarnesG[z] is a holomorphic function with a branch cut along the negative real-axis such that Exp[LogBarnesG[z]]=BarnesG[z].
Hyperfactorial[n] is a generalization of
to the complex plane.
Many exact results for gamma and polygamma functions are built into the Wolfram System:
Here is a contour plot of the gamma function in the complex plane:
Zeta and Related Functions
| DirichletL[k,j,s] | Dirichlet L-function ![]() |
|---|---|
| LerchPhi[z,s,a] | Lerch's transcendent ![]() |
| PolyLog[n,z] | polylogarithm function ![]() |
| PolyLog[n,p,z] | Nielsen generalized polylogarithm function ![]() |
| RamanujanTau[n] | Ramanujan function ![]() |
| RamanujanTauL[n] | Ramanujan Dirichlet L-function ![]() |
| RamanujanTauTheta[n] | Ramanujan theta function ![]() |
| RamanujanTauZ[n] | Ramanujan Z-function ![]() |
| RiemannSiegelTheta[t] | Riemann–Siegel function ![]() |
| RiemannSiegelZ[t] | Riemann–Siegel function ![]() |
| StieltjesGamma[n] | Stieltjes constants ![]() |
| Zeta[s] | Riemann zeta function ![]() |
| Zeta[s,a] | generalized Riemann zeta function ![]() |
| HurwitzZeta[s,a] | Hurwitz zeta function ![]() |
| HurwitzLerchPhi[z,s,a] | Hurwitz–Lerch transcendent ![]() |
Zeta and related functions.
The Hurwitz zeta function HurwitzZeta[s,a] is implemented as
.
Here is the numerical approximation for
:
Here is a three-dimensional picture of the real part of a Dirichlet L-function:
The Wolfram System gives exact results for
:
Here is a three‐dimensional picture of the Riemann zeta function in the complex plane:
This is a plot of the absolute value of the Riemann zeta function on the critical line
. You can see the first few zeros of the zeta function:
The Lerch transcendent is related to integrals of the Fermi–Dirac distribution in statistical mechanics by
.
LerchPhi[z,s,a,DoublyInfinite->True] gives the doubly infinite sum
.
The Hurwitz–Lerch transcendent HurwitzLerchPhi[z,s,a] generalizes HurwitzZeta[s,a] and is defined by
.
Zeros of the zeta function.
ZetaZero[1] represents the first nontrivial zero of
:
This gives its numerical value:
This gives the first zero with height greater than 15:
Exponential Integral and Related Functions
Exponential integral and related functions.
The Wolfram System has two forms of exponential integral: ExpIntegralE and ExpIntegralEi.
The exponential integral function ExpIntegralE[n,z] is defined by
.
Error Function and Related Functions
Error function and related functions.
Bessel and Related Functions
| AiryAi[z]andAiryBi[z] | Airy functions and ![]() |
|---|---|
| AiryAiPrime[z]andAiryBiPrime[z] | derivatives of Airy functions and ![]() |
| BesselJ[n,z]andBesselY[n,z] | Bessel functions and ![]() |
| BesselI[n,z]andBesselK[n,z] | modified Bessel functions and ![]() |
| KelvinBer[n,z]andKelvinBei[n,z] | Kelvin functions and ![]() |
| KelvinKer[n,z]andKelvinKei[n,z] | Kelvin functions and ![]() |
| HankelH1[n,z]andHankelH2[n,z] | Hankel functions and ![]() |
| SphericalBesselJ[n,z]andSphericalBesselY[n,z] | |
spherical Bessel functions and ![]() |
|
| SphericalHankelH1[n,z]andSphericalHankelH2[n,z] | |
spherical Hankel functions and ![]() |
|
| StruveH[n,z]andStruveL[n,z] | Struve function and modified Struve function ![]() |
Bessel and related functions.
Bessel functions arise in solving differential equations for systems with cylindrical symmetry.
The Hankel functions (or Bessel functions of the third kind) HankelH1[n,z] and HankelH2[n,z] give an alternative pair of solutions to the Bessel differential equation, related according to
.
The spherical Bessel functions SphericalBesselJ[n,z] and SphericalBesselY[n,z], as well as the spherical Hankel functions SphericalHankelH1[n,z] and SphericalHankelH2[n,z], arise in studying wave phenomena with spherical symmetry. These are related to the ordinary functions by
, where
and
can be
and
,
and
, or
and
. For integer
, spherical Bessel functions can be expanded in terms of elementary functions by using FunctionExpand.
Here is a plot of
. This is a curve that an idealized chain hanging from one end can form when you wiggle it:
The Wolfram System generates explicit formulas for half‐integer‐order Bessel functions:
The Airy function plotted here gives the quantum‐mechanical amplitude for a particle in a potential that increases linearly from left to right. The amplitude is exponentially damped in the classically inaccessible region on the right:
Zeros of Bessel and Airy functions.
This gives its numerical value:
Legendre and Related Functions
Legendre and related functions.
Legendre functions arise in studies of quantum‐mechanical scattering processes.
| LegendreP[n,m,z] or LegendreP[n,m,1,z] | |
|---|---|
type 1 function containing ![]() |
|
| LegendreP[n,m,2,z] | type 2 function containing ![]() |
| LegendreP[n,m,3,z] | type 3 function containing ![]() |
Types of Legendre functions. Analogous types exist for LegendreQ.
In the same way, you can use the functions GegenbauerC and so on with arbitrary complex indices to get Gegenbauer functions, Chebyshev functions, Hermite functions, Jacobi functions and Laguerre functions. Unlike for associated Legendre functions, however, there is no need to distinguish different types in such cases.
Hypergeometric Functions and Generalizations
| Hypergeometric0F1[a,z] | hypergeometric function ![]() |
|---|---|
| Hypergeometric0F1Regularized[a,z] | regularized hypergeometric function ![]() |
| Hypergeometric1F1[a,b,z] | Kummer confluent hypergeometric function ![]() |
| Hypergeometric1F1Regularized[a,b,z] | regularized confluent hypergeometric function ![]() |
| HypergeometricU[a,b,z] | confluent hypergeometric function ![]() |
| WhittakerM[k,m,z]andWhittakerW[k,m,z] | |
Whittaker functions and ![]() |
|
| ParabolicCylinderD[ν,z] | parabolic cylinder function ![]() |
| CoulombF[l,η,ρ] | regular Coulomb wavefunction ![]() |
| CoulombG[l,η,ρ] | irregular Coulomb wavefunction ![]() |
Confluent hypergeometric functions and related functions.
Many of the special functions that have been discussed so far can be viewed as special cases of the confluent hypergeometric function Hypergeometric1F1[a,b,z].
Among the functions that can be obtained from
are the Bessel functions, error function, incomplete gamma function, and Hermite and Laguerre polynomials.
The parabolic cylinder functions ParabolicCylinderD[ν,z] are related to the Hermite functions by
.
The outgoing and incoming irregular Coulomb wavefunctions CoulombH1[l,η,ρ] and CoulombH2[l,η,ρ] are a linear combination of the regular and irregular Coulomb wavefunctions, related according to
.
A limiting form of the confluent hypergeometric function that often appears is Hypergeometric0F1[a,z]. This function is obtained as the limit
.
Bessel functions of the first kind can be expressed in terms of the
function.
| Hypergeometric2F1[a,b,c,z] | hypergeometric function ![]() |
|---|---|
| Hypergeometric2F1Regularized[a,b,c,z] | |
regularized hypergeometric function ![]() |
|
| HypergeometricPFQ[{a1,…,ap},{b1,…,bq},z] | |
generalized hypergeometric function ![]() |
|
| HypergeometricPFQRegularized[{a1,…,ap},{b1,…,bq},z] | |
| regularized generalized hypergeometric function | |
| MeijerG[{{a1,…,an},{an+1,…,ap}},{{b1,…,bm},{bm+1,…,bq}},z] | |
| Meijer G-function | |
| AppellF1[a,b1,b2,c,x,y] | Appell hypergeometric function of two variables ![]() |
Hypergeometric functions and generalizations.
The hypergeometric function can also be written as an integral:
.
The hypergeometric function is also sometimes denoted by
, and is known as the Gauss series or the Kummer series.
The Legendre functions, and the functions that give generalizations of other orthogonal polynomials, can be expressed in terms of the hypergeometric function. Complete elliptic integrals can also be expressed in terms of the
function.
The Riemann P function, which gives solutions to Riemann's differential equation, is also a
function.
The generalized hypergeometric function or Barnes extended hypergeometric function HypergeometricPFQ[{a1,…,ap},{b1,…,bq},z] has series expansion
.
The Meijer G-function MeijerG[{{a1,…,an},{an+1,…,ap}},{{b1,…,bm},{bm+1,…,bq}},z] is defined by the contour integral representation
, where the contour of integration is set up to lie between the poles of
and the poles of
. MeijerG is a very general function whose special cases cover most of the functions discussed in the past few sections.
The Appell hypergeometric function of two variables AppellF1[a,b1,b2,c,x,y] has series expansion
. This function appears for example in integrating cubic polynomials to arbitrary powers.
The _q_-Series and Related Functions
| QPochhammer[z,q] | -Pochhammer symbol ![]() |
|---|---|
| QPochhammer[z,q,n] | -Pochhammer symbol ![]() |
| QFactorial[z,q] | -analog of factorial |
| QBinomial[n,m,q] | -analog of binomial coefficient |
| QGamma[z,q] | -analog of Euler gamma function ![]() |
| QPolyGamma[z,q] | -digamma function |
| QPolyGamma[n,z,q] | th derivative of the -digamma function |
| QHypergeometricPFQ[{a1,…,ap},{b1,…,bq},q,z] | |
| basic hypergeometric series |
-series and related functions.
The Product Log Function
The product log function.
Spheroidal Functions
| SpheroidalS1[n,m,γ,z] and SpheroidalS2[n,m,γ,z] | |
|---|---|
radial spheroidal functions and ![]() |
|
| SpheroidalS1Prime[n,m,γ,z] and SpheroidalS2Prime[n,m,γ,z] | |
| z derivatives of radial spheroidal functions | |
| SpheroidalPS[n,m,γ,z] and SpheroidalQS[n,m,γ,z] | |
angular spheroidal functions and ![]() |
|
| SpheroidalPSPrime[n,m,γ,z] and SpheroidalQSPrime[n,m,γ,z] | |
| z derivatives of angular spheroidal functions | |
| SpheroidalEigenvalue[n,m,γ] | spheroidal eigenvalue of degree n and order m |
The radial spheroidal functions SpheroidalS1[n,m,γ,z] and SpheroidalS2[n,m,γ,z] and angular spheroidal functions SpheroidalPS[n,m,γ,z] and SpheroidalQS[n,m,γ,z] appear in solutions to the wave equation in spheroidal regions. Both types of functions are solutions to the equation
. This equation has normalizable solutions only when
is a spheroidal eigenvalue given by SpheroidalEigenvalue[n,m,γ]. The spheroidal functions also appear as eigenfunctions of finite analogs of Fourier transforms.
Many different normalizations for spheroidal functions are used in the literature. The Wolfram Systemuses the Meixner–Schäfke normalization scheme.
Angular spheroidal functions can be viewed as deformations of Legendre functions:
This plots angular spheroidal functions for various spheroidicity parameters:
The Mathieu functions are a special case of spheroidal functions.
An angular spheroidal function with
gives Mathieu angular functions:
Elliptic Integrals and Elliptic Functions
Even more so than for other special functions, you need to be very careful about the arguments you give to elliptic integrals and elliptic functions. There are several incompatible conventions in common use, and often these conventions are distinguished only by the specific names given to arguments or by the presence of separators other than commas between arguments.
Common argument conventions for elliptic integrals and elliptic functions.
Converting between different argument conventions.
Elliptic Integrals
Note that the arguments of the elliptic integrals are sometimes given in the opposite order from what is used in the Wolfram Language.
The Jacobi zeta function JacobiZeta[ϕ,m] is given by
.
The Heuman lambda function is given by
.
The elliptic integral of the third kind EllipticPi[n,ϕ,m] is given by
.
The complete elliptic integral of the third kind EllipticPi[n,m] is given by
.
Here is a plot of the complete elliptic integral of the second kind
:
The elliptic integrals have a complicated structure in the complex plane:
Elliptic Functions
| JacobiAmplitude[u,m] | amplitude function ![]() |
|---|---|
| JacobiSN[u,m] , JacobiCN[u,m] , etc. | |
Jacobi elliptic functions , etc. |
|
| InverseJacobiSN[v,m] , InverseJacobiCN[v,m] , etc. | |
inverse Jacobi elliptic functions , etc. |
|
| EllipticTheta[a,u,q] | theta functions ( , …, ) |
| EllipticThetaPrime[a,u,q] | derivatives of theta functions ( , …, ) |
| SiegelTheta[τ,s] | Siegel theta function ![]() |
| SiegelTheta[v,τ,s] | Siegel theta function ![]() |
| WeierstrassP[u,{g2,g3}] | Weierstrass elliptic function ![]() |
| WeierstrassPPrime[u,{g2,g3}] | derivative of Weierstrass elliptic function ![]() |
| InverseWeierstrassP[p,{g2,g3}] | inverse Weierstrass elliptic function |
| WeierstrassSigma[u,{g2,g3}] | Weierstrass sigma function ![]() |
| WeierstrassZeta[u,{g2,g3}] | Weierstrass zeta function ![]() |
Elliptic and related functions.
Rational functions involving square roots of quadratic forms can be integrated in terms of inverse trigonometric functions. The trigonometric functions can thus be defined as inverses of the functions obtained from these integrals.
By analogy, elliptic functions are defined as inverses of the functions obtained from elliptic integrals.
This shows two complete periods in each direction of the absolute value of the Jacobi elliptic function
:
The four theta functions
are obtained from EllipticTheta[a,u,q] by taking a to be 1, 2, 3, or 4. The functions are defined by
,
,
,
. The theta functions are often written as
with the parameter
not explicitly given. The theta functions are sometimes written in the form
, where
is related to
by
. In addition,
is sometimes replaced by
, given by
. All the theta functions satisfy a diffusion‐like differential equation
.
The Jacobi elliptic functions can be expressed as ratios of the theta functions.
The Weierstrass zeta and sigma functions are not strictly elliptic functions since they are not periodic.
Elliptic Modular Functions
Elliptic modular functions.
The Klein invariant modular function KleinInvariantJ[τ] and the Dedekind eta function DedekindEta[τ] satisfy the relations
.
Generalized Elliptic Integrals and Functions
Generalized elliptic integrals and functions.
The definitions for elliptic integrals and functions given above are based on traditional usage. For modern algebraic geometry, it is convenient to use slightly more general definitions.
The function EllipticExp[u,{a,b}] is the inverse of EllipticLog. It returns the list {x,y} that appears in EllipticLog. EllipticExp is an elliptic function, doubly periodic in the complex
plane.
Mathieu and Related Functions
| MathieuC[a,q,z] | even Mathieu functions with characteristic value a and parameter q |
|---|---|
| MathieuS[b,q,z] | odd Mathieu functions with characteristic value b and parameter q |
| MathieuCPrime[a,q,z] andMathieuSPrime[b,q,z] | z derivatives of Mathieu functions |
| MathieuCharacteristicA[r,q] | characteristic value ar for even Mathieu functions with characteristic exponent r and parameter q |
| MathieuCharacteristicB[r,q] | characteristic value br for odd Mathieu functions with characteristic exponent r and parameter q |
| MathieuCharacteristicExponent[a,q] | characteristic exponent r for Mathieu functions with characteristic value a and parameter q |
Mathieu and related functions.
Working with Special Functions
| automatic evaluation | exact results for specific arguments |
|---|---|
| N[expr,n] | numerical approximations to any precision |
| D[expr,x] | exact results for derivatives |
| N[D[expr,x]] | numerical approximations to derivatives |
| Series[expr,{x,x0,n}] | series expansions |
| Integrate[expr,x] | exact results for integrals |
| NIntegrate[expr,x] | numerical approximations to integrals |
| FindRoot[expr==0,{x,x0}] | numerical approximations to roots |
Some common operations on special functions.
Most special functions have simpler forms when given certain specific arguments. The Wolfram System will automatically simplify special functions in such cases.
The Wolfram System automatically writes this in terms of standard mathematical constants:
Here again the Wolfram System reduces a special case of the Airy function to an expression involving gamma functions:
For most choices of arguments, no exact reductions of special functions are possible. But in such cases, the Wolfram System allows you to find numerical approximations to any degree of precision. The algorithms that are built into the Wolfram System cover essentially all values of parameters—real and complex—for which the special functions are defined.
There is no exact result known here:
This gives a numerical approximation to 40 digits of precision:
The result here is a huge complex number, but the Wolfram System can still find it:
Most special functions have derivatives that can be expressed in terms of elementary functions or other special functions. But even in cases where this is not so, you can still use N to find numerical approximations to derivatives.
This derivative comes out in terms of elementary functions:
This evaluates the derivative of the gamma function at the point 3:
There is no exact formula for this derivative of the zeta function:
Applying N gives a numerical approximation:
The Wolfram System incorporates a vast amount of knowledge about special functions—including essentially all the results that have been derived over the years. You access this knowledge whenever you do operations on special functions in the Wolfram System.
Here is a series expansion for a Fresnel function:
The Wolfram System knows how to do a vast range of integrals involving special functions:
One feature of working with special functions is that there are a large number of relations between different functions, and these relations can often be used in simplifying expressions.
| FullSimplify[expr] | try to simplify expr using a range of transformation rules |
|---|
Simplifying expressions involving special functions.
This uses the reflection formula for the gamma function:
This makes use of a representation for Chebyshev polynomials:
The Airy functions are related to Bessel functions:
Manipulating expressions involving special functions.
This expands the Gauss hypergeometric function into simpler functions:
Here is an example involving Bessel functions:
In this case the final result does not even involve PolyGamma:
This finds an expression for a derivative of the Hurwitz zeta function:
Related Guides
▪
- Bitwise Operations ▪
- Cryptographic Number Theory ▪
- Elementary Functions ▪
- Hyperbolic Functions ▪
- Trigonometric Functions ▪
- Special Functions ▪
- Bessel-Related Functions ▪
- Error and Exponential Integral Functions ▪
- Hypergeometric Functions ▪
- Zeta Functions & Polylogarithms ▪
- Spheroidal and Related Functions ▪
- Elliptic Integrals ▪
- Elliptic Functions ▪
- Mathieu and Related Functions

equal to 1 if all the ni are equal, and 0 otherwise












objects




of order 










of unrestricted partitions of the integer 
of partitions of
into distinct parts

to base 









(x)
and
of the first and second kinds













th derivative of the digamma function 








function 
Dirichlet L-function 
theta function 
Z-function 







and 
and 
and 
and 
and 
and 
and 
and 
and 
and modified Struve function 








and 







-Pochhammer symbol 
-Pochhammer symbol 
-analog of factorial
-analog of binomial coefficient
-analog of Euler gamma function 
-digamma function
th derivative of the
-digamma function
and 
and 

, etc.
, etc.
(
, …,
)
(
, …,
)




