<!--
{
  "availability" : [
    "iOS: 13.0.0 -",
    "iPadOS: 13.0.0 -",
    "macCatalyst: -",
    "macOS: 10.15.0 -",
    "tvOS: 13.0.0 -",
    "visionOS: -",
    "watchOS: 6.0.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "Accelerate",
  "identifier" : "/documentation/Accelerate/Quadrature",
  "metadataVersion" : "0.1.0",
  "role" : "Structure",
  "symbol" : {
    "kind" : "Structure",
    "modules" : [
      "Accelerate"
    ],
    "preciseIdentifier" : "s:10Accelerate10QuadratureV"
  },
  "title" : "Quadrature"
}
-->

# Quadrature

A structure that approximates the definite integral of a function over a finite interval.

```
struct Quadrature
```

## Overview

The following code illustrates using a Quadrature structure to calculate the area under a curve, defined by `y = sqrt(radius * radius - pow(x - radius, 2))`:

```swift
let quadrature = Quadrature(integrator: .qags(maxIntervals: 10),
                            absoluteTolerance: 1.0e-8,
                            relativeTolerance: 1.0e-2)

let result = quadrature.integrate(over: 0.0 ... 25.0) { x in
    let radius: Double = 12.5
    return sqrt(radius * radius - pow(x - radius, 2))
}

switch result {
case .success(let integralResult, let estimatedAbsoluteError):
    print("quadrature success:", integralResult,
          estimatedAbsoluteError)
case .failure(let error):
    print("quadrature error:", error.errorDescription)
}
```

Alternatively, you can integrate over a function that uses vectors for its source and destination. For example:

```swift
func vectorExp(x: UnsafeBufferPointer<Double>,
               y: UnsafeMutableBufferPointer<Double>) {
    let radius: Double = 12.5
    for i in 0 ..< x.count {
        y[i] = sqrt(radius * radius - pow(x[i] - radius, 2))
    }
}

let vRresult = quadrature.integrate(over: 0.0 ... diameter,
                                    integrand: vectorExp)
```

## Topics

### Initializers

[`init(integrator:absoluteTolerance:relativeTolerance:)`](/documentation/Accelerate/Quadrature/init(integrator:absoluteTolerance:relativeTolerance:))

Initializes and returns a quadrature instance.

### Instance Properties

[`absoluteTolerance`](/documentation/Accelerate/Quadrature/absoluteTolerance)

The requested absolute tolerance on the result.

[`relativeTolerance`](/documentation/Accelerate/Quadrature/relativeTolerance)

The requested relative tolerance on the result.

### Instance Methods

[`integrate(over:integrand:)`](/documentation/Accelerate/Quadrature/integrate(over:integrand:)-2d2y2)

Performs the integration over the supplied scalar function.

[`integrate(over:integrand:)`](/documentation/Accelerate/Quadrature/integrate(over:integrand:)-56h8b)

Performs the integration over the supplied vector function.

### Structures

[`Quadrature.QAGPointsPerInterval`](/documentation/Accelerate/Quadrature/QAGPointsPerInterval)

Constants that specify the number of points per interval for the globally adaptive integrator.

### Enumerations

[`Quadrature.Error`](/documentation/Accelerate/Quadrature/Error)

Errors thrown by the Quadrature structure.

[`Quadrature.Integrator`](/documentation/Accelerate/Quadrature/Integrator)

Constants that define different integrators.

### Type Aliases

[`quadrature_function_array`](/documentation/Accelerate/quadrature_function_array)

[`quadrature_integrate_function`](/documentation/Accelerate/quadrature_integrate_function)

[`quadrature_integrate_options`](/documentation/Accelerate/quadrature_integrate_options)



---

Copyright &copy; 2026 Apple Inc. All rights reserved. | [Terms of Use](https://www.apple.com/legal/internet-services/terms/site.html) | [Privacy Policy](https://www.apple.com/privacy/privacy-policy)