The term
symbolic is used to distinguish this problem from that of
numerical integration, where the value of
F is sought at a particular input or set of inputs, rather than a general formula for
F. Both problems were held to be of practical and theoretical importance long before the time of digital computers, but they are now generally considered the domain of
computer science, as computers are most often used currently to tackle individual instances. Finding the derivative of an expression is a straightforward process for which it is easy to construct an
algorithm. The reverse question of finding the integral is much more difficult. Many expressions that are relatively simple do not have integrals that can be expressed in
closed form. See
antiderivative and
nonelementary integral for more details. A procedure called the
Risch algorithm exists that is capable of determining whether the integral of an
elementary function (function built from a finite number of
exponentials,
logarithms,
constants, and
nth roots through
composition and combinations using the four
elementary operations) is elementary and returning it if it is. In its original form, the Risch algorithm was not suitable for a direct implementation, and its complete implementation took a long time. It was first implemented in
Reduce in the case of purely
transcendental functions; the case of purely
algebraic functions was solved and implemented in Reduce by
James H. Davenport; the general case was solved by Manuel Bronstein, who implemented almost all of it in
Axiom, though to date there is no implementation of the Risch algorithm that can deal with all of the special cases and branches in it. However, the Risch algorithm applies only to
indefinite integrals, while most of the integrals of interest to physicists, theoretical chemists, and engineers are
definite integrals often related to
Laplace transforms,
Fourier transforms, and
Mellin transforms. Lacking a general algorithm, the developers of
computer algebra systems have implemented
heuristics based on pattern-matching and the exploitation of special functions, in particular the
incomplete gamma function. Although this approach is heuristic rather than algorithmic, it is nonetheless an effective method for solving many definite integrals encountered by practical engineering applications. Earlier systems such as
Macsyma had a few definite integrals related to special functions within a look-up table. However this particular method, involving differentiation of special functions with respect to its parameters, variable transformation,
pattern matching and other manipulations, was pioneered by developers of the
Maple system and then later emulated by
Mathematica,
Axiom,
MuPAD and other systems. ==Recent advances==