Routines (alphabetical) > Routines: Q > QROMO

# QROMO

The QROMO function evaluates the integral of a function over the open interval (A, B) using a modified Romberg’s method.

## Examples

Consider the following function:

FUNCTION hyper, X

RETURN, 1.0 / X^4

END

This example integrates the HYPER function over the open interval (2, ∞) and prints the result:

PRINT, QROMO('hyper', 2.0, /MIDEXP)

IDL prints:

0.0412050

Note: When using the MIDEXP keyword, the upper integration limit is assumed to be infinity and is not supplied.

## Syntax

Result = QROMO(Func, A [, B] [, /DOUBLE] [, EPS=value] [, JMAX=value] [, K=value] [, /MIDEXP | , /MIDINF | , /MIDPNT | , /MIDSQL | , /MIDSQU] )

## Return Value

Returns the integral of the function.

## Arguments

### Func

A scalar string specifying the name of a user-supplied IDL function to be integrated. This function must accept a single scalar argument X and return a scalar result. It must be defined over the open interval (A, B).

For example, if we wish to integrate the fourth-order polynomial

y = 1 / x4

we define a function HYPER to express this relationship in the IDL language:

FUNCTION hyper, X

RETURN, 1.0 / X^4

END

Note: If QROMO is complex then only the real part is used for the computation.

### A

The lower limit of the integration. A can be either a scalar or an array.

### B

The upper limit of the integration. B can be either a scalar or an array. If the MIDEXP keyword is specified, B is assumed to be infinite, and should not be supplied by the user.

Note: If arrays are specified for A and B, then QROMO integrates the user-supplied function over the interval [Ai, Bi] for each i. If either A or B is a scalar and the other an array, the scalar is paired with each array element in turn.

## Keywords

### DOUBLE

Set this keyword to force the computation to be done in double-precision arithmetic.

### EPS

The fractional accuracy desired, as determined by the extrapolation error estimate. For single-precision calculations, the default value is 1.0 x 10-6. For double-precision calculations, the default value is 1.0 x 10-12.

### JMAX

Set to specify the maximum allowed number of mid quadrature points to be 3(JMAX - 1). The default value is 14.

### K

Integration is performed by Romberg’s method of order 2K. If not specified, the default is K=5.

### MIDEXP

Use the `midexp()` function (see Numerical Recipes, section 4.4) as the integrating function. If the MIDEXP keyword is specified, argument B is assumed to be infinite, and should not be supplied by the user.

### MIDINF

Use the `midinf()` function (see Numerical Recipes, section 4.4) as the integrating function.

### MIDPNT

Use the `midpnt()` function (see Numerical Recipes, section 4.4) as the integrating function. This is the default if no other integrating function keyword is specified.

### MIDSQL

Use the `midsql()` function (see Numerical Recipes, section 4.4) as the integrating function.

### MIDSQU

Use the `midsqu()` function (see Numerical Recipes, section 4.4) as the integrating function.

## Version History

4.0 | Introduced

## Resources and References

QROMO is based on the routine `qromo` described in section 4.4 of Numerical Recipes in C: The Art of Scientific Computing (Second Edition), published by Cambridge University Press, and is used by permission.

## See Also

INT_2, INT_3D, INT_TABULATED, QROMB, QSIMP