Algorithm 36 - SNIFF: Efficient self-tuning algorithm for numerical integration. A new adaptive algorithm for the integration of analytic functions is presented. The algorithm processes the integration interval by generating local subintervals whose length is controlled through a feedback loop. Control is performed by means of a relation derived on an analytical basis and valid for an arbitrary integration rule: two different estimates of an integral are used to compute the interval length necessary to obtain an integral estimate with accuracy within the assigned error bounds. The implied method for local generation of subintervals and an effective assumption of error partition among subintervals give rise to an adaptive algorithm provided with an accurate and very efficient integration process. The particular algorithm obtained by choosing the 6-point Gauß-Legendre integration rule is considered and extensive comparisons are made with other outstanding integration algorithms.