<!--
{
  "documentType" : "article",
  "framework" : "Accelerate",
  "identifier" : "/documentation/Accelerate/vforce-library",
  "metadataVersion" : "0.1.0",
  "role" : "collectionGroup",
  "title" : "vForce"
}
-->

# vForce

Perform transcendental and trigonometric functions on vectors of any length.

## Discussion

The vForce library provides a range of trigonometric and transcendental functions that work over large collections of single- and double-precision values. The collections can be of any length, and vForce supplies vectorized functions for the current architecture.

The functions declared in the vForce library have the customary mathematical names, but with the prefix `vv`, for example, [`vvsqrtf(_:_:_:)`](/documentation/Accelerate/vvsqrtf(_:_:_:)). Each mathematical function is available in two variants: one for single-precision data and one for double-precision data. The single-precision forms have the suffix `f`, whereas the double-precision forms have no suffix. For example, [`vvcosf(_:_:_:)`](/documentation/Accelerate/vvcosf(_:_:_:)) is the single-precision cosine function, and [`vvcos(_:_:_:)`](/documentation/Accelerate/vvcos(_:_:_:)) is the double-precision variant.

All of the vForce library functions follow a common format:

- The return type is `void`.
- The first parameter points to an array to hold the results. The only exceptions are [`vvsincosf(_:_:_:_:)`](/documentation/Accelerate/vvsincosf(_:_:_:_:)) and [`vvsincos(_:_:_:_:)`](/documentation/Accelerate/vvsincos(_:_:_:_:)), which have two result arrays that the first two parameters point to.
- One or more parameters point to operand arrays that are the same length as the result array.
- The last parameter is the array length.

> Note:
> Unless otherwise mentioned, vForce functions work in-place. That is, the input may exactly equal the output.

### Using vForce

The vForce library provides a high-performance alternative to `for` loops and `map(_:)` when applying operations on arrays of floating-point values.

For example, given an arbitrarily sized array, `x`, that contains single-precision values, the following code uses `map(_:)` to create a second array, `y`. On return, `y` contains the square root of each array element.

```swift
let n = 10_000

let x = (0..<n).map { _ in
    Float.random(in: 1 ... 10_000)
}

let y = x.map {
    return sqrt($0)
}
```

The equivalent functionality implemented in vForce runs significantly faster:

```swift
let y = [Float](unsafeUninitializedCapacity: n) { buffer, initializedCount in
    vForce.sqrt(x,
                result: &buffer)
    
    initializedCount = n
}
```

## Topics

### Swift Overlay

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

An enumeration that acts as a namespace for Swift overlays to vForce.

### Array-Oriented Arithmetic and Auxiliary Functions

[`ceil(_:)`](/documentation/Accelerate/vForce/ceil(_:)-9dsdt)

Returns the ceiling of each element in a vector of double-precision values.

[`ceil(_:)`](/documentation/Accelerate/vForce/ceil(_:)-57grr)

Returns the ceiling of each element in a vector of single-precision values.

[`ceil(_:result:)`](/documentation/Accelerate/vForce/ceil(_:result:)-4wev4)

Calculates the ceiling of each element in a vector of double-precision values.

[`ceil(_:result:)`](/documentation/Accelerate/vForce/ceil(_:result:)-6zm3u)

Calculates the ceiling of each element in a vector of single-precision values.

[`copysign(magnitudes:signs:)`](/documentation/Accelerate/vForce/copysign(magnitudes:signs:)-s0r3)

Returns each single-precision element in the magnitudes vector, setting its sign to the corresponding elements in the signs vector.

[`copysign(magnitudes:signs:)`](/documentation/Accelerate/vForce/copysign(magnitudes:signs:)-3jhf0)

Returns each single-precision element in the magnitudes vector, setting its sign to the corresponding elements in the signs vector.

[`copysign(magnitudes:signs:result:)`](/documentation/Accelerate/vForce/copysign(magnitudes:signs:result:)-3zoya)

Calculates each double-precision element in the magnitudes vector, setting its sign to the corresponding elements in the signs vector.

[`copysign(magnitudes:signs:result:)`](/documentation/Accelerate/vForce/copysign(magnitudes:signs:result:)-5umya)

Calculates each single-precision element in the magnitudes vector, setting its sign to the corresponding elements in the signs vector.

[`floor(_:)`](/documentation/Accelerate/vForce/floor(_:)-64hyu)

Returns the floor of each element in a vector of double-precision values.

[`floor(_:)`](/documentation/Accelerate/vForce/floor(_:)-5awna)

Returns the floor of each element in a vector of single-precision values.

[`floor(_:result:)`](/documentation/Accelerate/vForce/floor(_:result:)-61veb)

Calculates the floor of each element in a vector of double-precision values.

[`floor(_:result:)`](/documentation/Accelerate/vForce/floor(_:result:)-4mf4q)

Calculates the floor of each element in a vector of single-precision values.

[`nearestInteger(_:)`](/documentation/Accelerate/vForce/nearestInteger(_:)-5mppu)

Returns the nearest integer to each element in a vector of double-precision values.

[`nearestInteger(_:)`](/documentation/Accelerate/vForce/nearestInteger(_:)-386dx)

Returns the nearest integer to each element in a vector of single-precision values.

[`nearestInteger(_:result:)`](/documentation/Accelerate/vForce/nearestInteger(_:result:)-bbtt)

Calculates the nearest integer to each element in a vector of double-precision values.

[`nearestInteger(_:result:)`](/documentation/Accelerate/vForce/nearestInteger(_:result:)-1izut)

Calculates the nearest integer to each element in a vector of double-precision values.

[`reciprocal(_:)`](/documentation/Accelerate/vForce/reciprocal(_:)-555of)

Returns the reciprocal of each element in a vector of double-precision values.

[`reciprocal(_:)`](/documentation/Accelerate/vForce/reciprocal(_:)-8lozf)

Returns the reciprocal of each element in a vector of single-precision values.

[`reciprocal(_:result:)`](/documentation/Accelerate/vForce/reciprocal(_:result:)-pvu0)

Calculates the reciprocal of each element in a vector of double-precision values.

[`reciprocal(_:result:)`](/documentation/Accelerate/vForce/reciprocal(_:result:)-7hu7a)

Calculates the reciprocal of each element in a vector of single-precision values.

[`remainder(dividends:divisors:)`](/documentation/Accelerate/vForce/remainder(dividends:divisors:)-5rcri)

Returns the remainder of the double-precision elements in `dividends` divided by the elements in `divisors`, using truncating division.

[`remainder(dividends:divisors:)`](/documentation/Accelerate/vForce/remainder(dividends:divisors:)-j4a5)

Returns the remainder of the single-precision elements in `dividends` divided by the elements in `divisors`, using truncating division.

[`remainder(dividends:divisors:result:)`](/documentation/Accelerate/vForce/remainder(dividends:divisors:result:)-bj3f)

Calculates the remainder of the double-precision elements in `dividends` divided by the elements in `divisors`, using truncating division.

[`remainder(dividends:divisors:result:)`](/documentation/Accelerate/vForce/remainder(dividends:divisors:result:)-31qe5)

Calculates the remainder of the single-precision elements in `dividends` divided by the elements in `divisors`, using truncating division.

[`rsqrt(_:)`](/documentation/Accelerate/vForce/rsqrt(_:)-9gm1h)

Returns the reciprocal square root of each element in a vector of double-precision values.

[`rsqrt(_:)`](/documentation/Accelerate/vForce/rsqrt(_:)-2xjyq)

Returns the reciprocal square root of each element in a vector of single-precision values.

[`rsqrt(_:result:)`](/documentation/Accelerate/vForce/rsqrt(_:result:)-9vniv)

Calculates the reciprocal square root of each element in a vector of double-precision values.

[`rsqrt(_:result:)`](/documentation/Accelerate/vForce/rsqrt(_:result:)-6o0ky)

Calculates the reciprocal square root of each element in a vector of single-precision values.

[`sqrt(_:)`](/documentation/Accelerate/vForce/sqrt(_:)-7ze6m)

Returns the square root of each element in a vector of double-precision values.

[`sqrt(_:)`](/documentation/Accelerate/vForce/sqrt(_:)-8wla9)

Returns the square root each element in a vector of single-precision values.

[`sqrt(_:result:)`](/documentation/Accelerate/vForce/sqrt(_:result:)-2ixfw)

Calculates the square root of each element in a vector of double-precision values.

[`sqrt(_:result:)`](/documentation/Accelerate/vForce/sqrt(_:result:)-63m91)

Calculates the square root of each element in a vector of single-precision values.

[`trunc(_:)`](/documentation/Accelerate/vForce/trunc(_:)-11ss3)

Returns the integer truncation of each element in a vector of double-precision values.

[`trunc(_:)`](/documentation/Accelerate/vForce/trunc(_:)-5wx8z)

Returns the integer truncation of each element in a vector of single-precision values.

[`trunc(_:result:)`](/documentation/Accelerate/vForce/trunc(_:result:)-8luud)

Calculates the integer truncation of each element in a vector of double-precision values.

[`trunc(_:result:)`](/documentation/Accelerate/vForce/trunc(_:result:)-4xeiu)

Calculates the integer truncation of each element in a vector of single-precision values.

[`truncatingRemainder(dividends:divisors:)`](/documentation/Accelerate/vForce/truncatingRemainder(dividends:divisors:)-11bh4)

Returns the remainder of the double-precision elements in `dividends` divided by the elements in `divisors`, using truncating division.

[`truncatingRemainder(dividends:divisors:)`](/documentation/Accelerate/vForce/truncatingRemainder(dividends:divisors:)-9ofow)

Returns the remainder of the single-precision elements in `dividends` divided by the elements in `divisors`, using truncating division.

[`truncatingRemainder(dividends:divisors:result:)`](/documentation/Accelerate/vForce/truncatingRemainder(dividends:divisors:result:)-6forr)

Calculates the remainder of the double-precision elements in `dividends` divided by the elements in `divisors`, using truncating division.

[`truncatingRemainder(dividends:divisors:result:)`](/documentation/Accelerate/vForce/truncatingRemainder(dividends:divisors:result:)-23mq2)

Calculates the remainder of the single-precision elements in `dividends` divided by the elements in `divisors`, using truncating division.

[`vvceil(_:_:_:)`](/documentation/Accelerate/vvceil(_:_:_:))

Calculates the ceiling of each element in an array of double-precision values.

[`vvceilf(_:_:_:)`](/documentation/Accelerate/vvceilf(_:_:_:))

Calculates the ceiling of each element in an array of single-precision values.

[`vvfloor(_:_:_:)`](/documentation/Accelerate/vvfloor(_:_:_:))

Calculates the floor of each element in an array of double-precision values.

[`vvfloorf(_:_:_:)`](/documentation/Accelerate/vvfloorf(_:_:_:))

Calculates the floor of each element in an array of single-precision values.

[`vvcopysign(_:_:_:_:)`](/documentation/Accelerate/vvcopysign(_:_:_:_:))

Copies an array, setting the sign of each element based on a second array of double-precision values.

[`vvcopysignf(_:_:_:_:)`](/documentation/Accelerate/vvcopysignf(_:_:_:_:))

Copies an array, setting the sign of each element based on a second array of single-precision values.

[`vvdiv(_:_:_:_:)`](/documentation/Accelerate/vvdiv(_:_:_:_:))

Divides each element in an array by the corresponding value in a second array of double-precision values.

[`vvdivf(_:_:_:_:)`](/documentation/Accelerate/vvdivf(_:_:_:_:))

Divides each element in an array by the corresponding value in a second array of single-precision values.

[`vvfabs(_:_:_:)`](/documentation/Accelerate/vvfabs(_:_:_:))

Calculates the absolute value for each element in an array of double-precision values.

[`vvfabsf(_:_:_:)`](/documentation/Accelerate/vvfabsf(_:_:_:))

Calculates the absolute value for each element in an array of single-precision values.

[`vvfmod(_:_:_:_:)`](/documentation/Accelerate/vvfmod(_:_:_:_:))

Calculates the modulus after dividing each element in an array by the corresponding element in a second array of double-precision values.

[`vvfmodf(_:_:_:_:)`](/documentation/Accelerate/vvfmodf(_:_:_:_:))

Calculates the modulus after dividing each element in an array by the corresponding element in a second array of single-precision values.

[`vvremainder(_:_:_:_:)`](/documentation/Accelerate/vvremainder(_:_:_:_:))

Calculates the remainder after dividing each element in an array by the corresponding element in a second array of double-precision values.

[`vvremainderf(_:_:_:_:)`](/documentation/Accelerate/vvremainderf(_:_:_:_:))

Calculates the remainder after dividing each element in an array by the corresponding element in a second array of single-precision values.

[`vvint(_:_:_:)`](/documentation/Accelerate/vvint(_:_:_:))

Calculates the integer truncation for each element in an array of double-precision values.

[`vvintf(_:_:_:)`](/documentation/Accelerate/vvintf(_:_:_:))

Calculates the integer truncation for each element in an array of single-precision values.

[`vvnint(_:_:_:)`](/documentation/Accelerate/vvnint(_:_:_:))

Calculates the nearest integer for each element in an array of double-precision values.

[`vvnintf(_:_:_:)`](/documentation/Accelerate/vvnintf(_:_:_:))

Calculates the nearest integer for each element in an array of single-precision values.

[`vvrsqrt(_:_:_:)`](/documentation/Accelerate/vvrsqrt(_:_:_:))

Calculates the reciprocal square root of each element in an array of double-precision values.

[`vvrsqrtf(_:_:_:)`](/documentation/Accelerate/vvrsqrtf(_:_:_:))

Calculates the reciprocal square root of each element in an array of single-precision values.

[`vvsqrt(_:_:_:)`](/documentation/Accelerate/vvsqrt(_:_:_:))

Calculates the square root of each element in an array of double-precision values.

[`vvsqrtf(_:_:_:)`](/documentation/Accelerate/vvsqrtf(_:_:_:))

Calculates the square root of each element in an array of single-precision values.

[`vvrec(_:_:_:)`](/documentation/Accelerate/vvrec(_:_:_:))

Calculates the reciprocal of each element in an array of double-precision values.

[`vvrecf(_:_:_:)`](/documentation/Accelerate/vvrecf(_:_:_:))

Calculates the reciprocal of each element in an array of single-precision values.

[`vvnextafter(_:_:_:_:)`](/documentation/Accelerate/vvnextafter(_:_:_:_:))

Calculates the next machine-representable value for each element in an array of double-precision values.

[`vvnextafterf(_:_:_:_:)`](/documentation/Accelerate/vvnextafterf(_:_:_:_:))

Calculates the next machine-representable value for each element in an array of single-precision values.

### Array-Oriented Exponential and Logarithmic Functions

[`exp(_:)`](/documentation/Accelerate/vForce/exp(_:)-76nrd)

Returns the *e*, raised to the power of each element in a vector of double-precision values.

[`exp(_:)`](/documentation/Accelerate/vForce/exp(_:)-5iaun)

Returns the *e*, raised to the power of each element in a vector of single-precision values.

[`exp(_:result:)`](/documentation/Accelerate/vForce/exp(_:result:)-34nxw)

Calculates the *e*, raised to the power of each element in a vector of double-precision values.

[`exp(_:result:)`](/documentation/Accelerate/vForce/exp(_:result:)-4k85n)

Calculates the *e*, raised to the power of each element in a vector of single-precision values.

[`exp2(_:)`](/documentation/Accelerate/vForce/exp2(_:)-2m5q)

Returns the 2, raised to the power of each element in a vector of double-precision values.

[`exp2(_:)`](/documentation/Accelerate/vForce/exp2(_:)-4mm9y)

Returns the 2, raised to the power of each element in a vector of single-precision values.

[`exp2(_:result:)`](/documentation/Accelerate/vForce/exp2(_:result:)-6ru6m)

Calculates the 2, raised to the power of each element in a vector of double-precision values.

[`exp2(_:result:)`](/documentation/Accelerate/vForce/exp2(_:result:)-8m564)

Calculates the 2, raised to the power of each element in a vector of single-precision values.

[`expm1(_:)`](/documentation/Accelerate/vForce/expm1(_:)-xkzx)

Returns the *eˣ-1* for each element in a vector of double-precision values.

[`expm1(_:)`](/documentation/Accelerate/vForce/expm1(_:)-mfq5)

Returns the *eˣ-1* for each element in a vector of single-precision values.

[`expm1(_:result:)`](/documentation/Accelerate/vForce/expm1(_:result:)-4dpl4)

Calculates the *eˣ-1* for each element in a vector of double-precision values.

[`expm1(_:result:)`](/documentation/Accelerate/vForce/expm1(_:result:)-2yhs3)

Calculates the *eˣ-1* for each element in a vector of single-precision values.

[`log10(_:)`](/documentation/Accelerate/vForce/log10(_:)-9wr68)

Returns the base 10 logarithm of each element in a vector of double-precision values.

[`log(_:)`](/documentation/Accelerate/vForce/log(_:)-2gh9a)

Returns the natural logarithm for each element in a vector of double-precision values.

[`log(_:)`](/documentation/Accelerate/vForce/log(_:)-5ffby)

Returns the natural logarithm for each element in a vector of single-precision values.

[`log(_:result:)`](/documentation/Accelerate/vForce/log(_:result:)-84hv7)

Calculates the natural logarithm for each element in a vector of double-precision values.

[`log(_:result:)`](/documentation/Accelerate/vForce/log(_:result:)-4k52e)

Calculates the natural logarithm for each element in a vector of single-precision values.

[`log1p(_:)`](/documentation/Accelerate/vForce/log1p(_:)-5admq)

Returns *log(1+x)* for each element in a vector of double-precision values.

[`log1p(_:)`](/documentation/Accelerate/vForce/log1p(_:)-3wn9e)

Returns *log(1+x)* for each element in a vector of single-precision values.

[`log1p(_:result:)`](/documentation/Accelerate/vForce/log1p(_:result:)-8kk0n)

Calculates *log(1+x)* for each element in a vector of double-precision values.

[`log1p(_:result:)`](/documentation/Accelerate/vForce/log1p(_:result:)-5ckl)

Calculates *log(1+x)* for each element in a vector of single-precision values.

[`log10(_:)`](/documentation/Accelerate/vForce/log10(_:)-81jwh)

Returns the base 10 logarithm of each element in a vector of single-precision values.

[`log10(_:result:)`](/documentation/Accelerate/vForce/log10(_:result:)-3j9cp)

Calculates the base 10 logarithm of each element in a vector of double-precision values.

[`log10(_:result:)`](/documentation/Accelerate/vForce/log10(_:result:)-35727)

Calculates the base 10 logarithm of each element in a vector of single-precision values.

[`log2(_:)`](/documentation/Accelerate/vForce/log2(_:)-2gkui)

Returns the base 2 logarithm of each element in a vector of double-precision values.

[`log2(_:)`](/documentation/Accelerate/vForce/log2(_:)-9b3yo)

Returns the base 2 logarithm of each element in a vector of single-precision values.

[`log2(_:result:)`](/documentation/Accelerate/vForce/log2(_:result:)-5xk1k)

Calculates the base 2 logarithm of each element in a vector of double-precision values.

[`log2(_:result:)`](/documentation/Accelerate/vForce/log2(_:result:)-2i9yi)

Calculates the base 2 logarithm of each element in a vector of single-precision values.

[`logb(_:)`](/documentation/Accelerate/vForce/logb(_:)-6irl7)

Returns the unbiased exponent of each element in a vector of double-precision values.

[`logb(_:)`](/documentation/Accelerate/vForce/logb(_:)-6hwhw)

Returns the unbiased exponent of each element in a vector of double-precision values.

[`logb(_:result:)`](/documentation/Accelerate/vForce/logb(_:result:)-14tuo)

Calculates the unbiased exponent of each element in a vector of double-precision values.

[`logb(_:result:)`](/documentation/Accelerate/vForce/logb(_:result:)-1m3o3)

Calculates the unbiased exponent of each element in a vector of single-precision values.

[`vvexp(_:_:_:)`](/documentation/Accelerate/vvexp(_:_:_:))

Calculates *e* raised to the power of each element in an array of double-precision values.

[`vvexpf(_:_:_:)`](/documentation/Accelerate/vvexpf(_:_:_:))

Calculates *e* raised to the power of each element in an array of single-precision values.

[`vvexp2(_:_:_:)`](/documentation/Accelerate/vvexp2(_:_:_:))

Calculates 2 raised to the power of each element in an array of double-precision values.

[`vvexp2f(_:_:_:)`](/documentation/Accelerate/vvexp2f(_:_:_:))

Calculates 2 raised to the power of each element in an array of single-precision values.

[`vvexpm1(_:_:_:)`](/documentation/Accelerate/vvexpm1(_:_:_:))

Calculates *eˣ-1* for each element in an array of double-precision values.

[`vvexpm1f(_:_:_:)`](/documentation/Accelerate/vvexpm1f(_:_:_:))

Calculates *eˣ-1* for each element in an array of single-precision values.

[`vvlog(_:_:_:)`](/documentation/Accelerate/vvlog(_:_:_:))

Calculates the natural logarithm for each element in an array of double-precision values.

[`vvlogf(_:_:_:)`](/documentation/Accelerate/vvlogf(_:_:_:))

Calculates the natural logarithm for each element in an array of single-precision values.

[`vvlog1p(_:_:_:)`](/documentation/Accelerate/vvlog1p(_:_:_:))

Calculates *log(1+x)* for each element in an array of double-precision values.

[`vvlog1pf(_:_:_:)`](/documentation/Accelerate/vvlog1pf(_:_:_:))

Calculates *log(1+x)* for each element in an array of single-precision values.

[`vvlog2(_:_:_:)`](/documentation/Accelerate/vvlog2(_:_:_:))

Calculates the base 2 logarithm of each element in an array of double-precision values.

[`vvlog2f(_:_:_:)`](/documentation/Accelerate/vvlog2f(_:_:_:))

Calculates the base 2 logarithm of each element in an array of single-precision values.

[`vvlog10(_:_:_:)`](/documentation/Accelerate/vvlog10(_:_:_:))

Calculates the base 10 logarithm of each element in an array of double-precision values.

[`vvlog10f(_:_:_:)`](/documentation/Accelerate/vvlog10f(_:_:_:))

Calculates the base 10 logarithm of each element in an array of single-precision values.

[`vvlogb(_:_:_:)`](/documentation/Accelerate/vvlogb(_:_:_:))

Calculates the unbiased exponent of each element in an array of double-precision values.

[`vvlogbf(_:_:_:)`](/documentation/Accelerate/vvlogbf(_:_:_:))

Calculates the unbiased exponent of each element in an array of single-precision values.

### Array-Oriented Power Functions

[`pow(bases:exponents:)`](/documentation/Accelerate/vForce/pow(bases:exponents:)-94dha)

Returns each double-precision element in the bases vector, raised to the power of the corresponding element in the exponents vector.

[`pow(bases:exponents:)`](/documentation/Accelerate/vForce/pow(bases:exponents:)-3gl7v)

Returns each single-precision element in the bases vector, raised to the power of the corresponding element in the exponents vector.

[`pow(bases:exponents:result:)`](/documentation/Accelerate/vForce/pow(bases:exponents:result:)-4bso)

Calculates each double-precision element in the bases vector, raised to the power of the corresponding element in the exponents vector.

[`pow(bases:exponents:result:)`](/documentation/Accelerate/vForce/pow(bases:exponents:result:)-6pffz)

Calculates each single-precision element in the bases vector, raised to the power of the corresponding element in the exponents vector.

[`vvpow(_:_:_:_:)`](/documentation/Accelerate/vvpow(_:_:_:_:))

Raises each element in an array to the power of the corresponding element in a second array of double-precision values.

[`vvpowf(_:_:_:_:)`](/documentation/Accelerate/vvpowf(_:_:_:_:))

Raises each element in an array to the power of the corresponding element in a second array of single-precision values.

### Array-Oriented Trigonometric Functions

[`acos(_:)`](/documentation/Accelerate/vForce/acos(_:)-8srk)

Returns the arccosine of each element in a vector of double-precision values.

[`acos(_:)`](/documentation/Accelerate/vForce/acos(_:)-3hl5t)

Returns the arccosine of each element in a vector of single-precision values.

[`acos(_:result:)`](/documentation/Accelerate/vForce/acos(_:result:)-3c9qz)

Calculates the arccosine of each element in a vector of double-precision values.

[`acos(_:result:)`](/documentation/Accelerate/vForce/acos(_:result:)-6rc2f)

Calculates the arccosine of each element in a vector of single-precision values.

[`asin(_:)`](/documentation/Accelerate/vForce/asin(_:)-454ds)

Returns the arcsine of each element in a vector of double-precision values.

[`asin(_:)`](/documentation/Accelerate/vForce/asin(_:)-8vvt1)

Returns the arcsine of each element in a vector of single-precision values.

[`asin(_:result:)`](/documentation/Accelerate/vForce/asin(_:result:)-94jmy)

Calculates the arcsine of each element in a vector of double-precision values.

[`asin(_:result:)`](/documentation/Accelerate/vForce/asin(_:result:)-ooti)

Calculates the arcsine of each element in a vector of single-precision values.

[`atan(_:)`](/documentation/Accelerate/vForce/atan(_:)-1ghr3)

Returns the arctangent of each element in a vector of double-precision values.

[`atan(_:)`](/documentation/Accelerate/vForce/atan(_:)-5ejvk)

Returns the arctangent of each element in a vector of single-precision values.

[`atan(_:result:)`](/documentation/Accelerate/vForce/atan(_:result:)-691jp)

Calculates the arctangent of each element in a vector of double-precision values.

[`atan(_:result:)`](/documentation/Accelerate/vForce/atan(_:result:)-6bb8n)

Calculates the arctangent of each element in a vector of single-precision values.

[`atan2(x:y:)`](/documentation/Accelerate/vForce/atan2(x:y:)-h54u)

Returns the arctangent of each pair of elements in two vectors of double-precision values.

[`atan2(x:y:)`](/documentation/Accelerate/vForce/atan2(x:y:)-3lku3)

Returns the arctangent of each pair of elements in two vectors of single-precision values.

[`atan2(x:y:result:)`](/documentation/Accelerate/vForce/atan2(x:y:result:)-184b6)

Calculates the arctangent of each pair of elements in two vectors of double-precision values.

[`atan2(x:y:result:)`](/documentation/Accelerate/vForce/atan2(x:y:result:)-6j6xb)

Calculates the arctangent of each pair of elements in two vectors of single-precision values.

[`cos(_:)`](/documentation/Accelerate/vForce/cos(_:)-5eeyc)

Returns the cosine of each element in a vector of double-precision values.

[`cos(_:)`](/documentation/Accelerate/vForce/cos(_:)-3q2fu)

Returns the cosine of each element in a vector of single-precision values.

[`cos(_:result:)`](/documentation/Accelerate/vForce/cos(_:result:)-95syy)

Calculates the cosine of each element in a vector of double-precision values.

[`cos(_:result:)`](/documentation/Accelerate/vForce/cos(_:result:)-lrow)

Calculates the cosine of each element in a vector of single-precision values.

[`cosPi(_:)`](/documentation/Accelerate/vForce/cosPi(_:)-8ouii)

Returns the cosine of pi, multiplied by each element in a vector of double-precision values.

[`cosPi(_:)`](/documentation/Accelerate/vForce/cosPi(_:)-578sc)

Returns the cosine of pi, multiplied by each element in a vector of single-precision values.

[`cosPi(_:result:)`](/documentation/Accelerate/vForce/cosPi(_:result:)-4rha2)

Calculates the cosine of pi, multiplied by each element in a vector of double-precision values.

[`cosPi(_:result:)`](/documentation/Accelerate/vForce/cosPi(_:result:)-5ubws)

Calculates the cosine of pi, multiplied by each element in a vector of single-precision values.

[`sin(_:)`](/documentation/Accelerate/vForce/sin(_:)-61sn)

Returns the sine of each element in a vector of double-precision values.

[`sin(_:)`](/documentation/Accelerate/vForce/sin(_:)-6o1ao)

Returns the sine of each element in a vector of single-precision values.

[`sin(_:result:)`](/documentation/Accelerate/vForce/sin(_:result:)-6xo5w)

Calculates the sine of each element in a vector of double-precision values.

[`sin(_:result:)`](/documentation/Accelerate/vForce/sin(_:result:)-oida)

Calculates the sine of each element in a vector of single-precision values.

[`sinPi(_:)`](/documentation/Accelerate/vForce/sinPi(_:)-1wh5u)

Returns the sine of pi, multiplied by each element in a vector of double-precision values.

[`sinPi(_:)`](/documentation/Accelerate/vForce/sinPi(_:)-3a7fm)

Returns the sine of pi, multiplied by each element in a vector of single-precision values.

[`sinPi(_:result:)`](/documentation/Accelerate/vForce/sinPi(_:result:)-88a6o)

Calculates the sine of pi, multiplied by each element in a vector of double-precision values.

[`sinPi(_:result:)`](/documentation/Accelerate/vForce/sinPi(_:result:)-9p5xq)

Calculates the sine of pi, multiplied by each element in a vector of single-precision values.

[`sincos(_:sinResult:cosResult:)`](/documentation/Accelerate/vForce/sincos(_:sinResult:cosResult:)-93te)

Calculates the sine and cosine of each element in a vector of double-precision values.

[`sincos(_:sinResult:cosResult:)`](/documentation/Accelerate/vForce/sincos(_:sinResult:cosResult:)-tk1q)

Calculates the sine and cosine of each element in a vector of double-precision values.

[`tan(_:)`](/documentation/Accelerate/vForce/tan(_:)-6n5qw)

Returns the tangent of each element in a vector of double-precision values.

[`tan(_:)`](/documentation/Accelerate/vForce/tan(_:)-3i3c1)

Returns the tangent of each element in a vector of single-precision values.

[`tan(_:result:)`](/documentation/Accelerate/vForce/tan(_:result:)-8bosl)

Calculates the tangent of each element in a vector of double-precision values.

[`tan(_:result:)`](/documentation/Accelerate/vForce/tan(_:result:)-4wevz)

Calculates the tangent of each element in a vector of single-precision values.

[`tanPi(_:)`](/documentation/Accelerate/vForce/tanPi(_:)-9lrix)

Returns the tangent of pi, multiplied by each element in a vector of double-precision values.

[`tanPi(_:)`](/documentation/Accelerate/vForce/tanPi(_:)-4z418)

Returns the tangent of pi, multiplied by each element in a vector of single-precision values.

[`tanPi(_:result:)`](/documentation/Accelerate/vForce/tanPi(_:result:)-9d72p)

Calculates the tangent of pi, multiplied by each element in a vector of double-precision values.

[`tanPi(_:result:)`](/documentation/Accelerate/vForce/tanPi(_:result:)-1gp8g)

Calculates the tangent of pi, multiplied by each element in a vector of single-precision values.

[`vvsin(_:_:_:)`](/documentation/Accelerate/vvsin(_:_:_:))

Calculates the sine of each element in an array of double-precision values.

[`vvsinf(_:_:_:)`](/documentation/Accelerate/vvsinf(_:_:_:))

Calculates the sine of each element in an array of single-precision values.

[`vvsinpi(_:_:_:)`](/documentation/Accelerate/vvsinpi(_:_:_:))

Calculates the sine of pi multiplied by each element in an array of double-precision values.

[`vvsinpif(_:_:_:)`](/documentation/Accelerate/vvsinpif(_:_:_:))

Calculates the sine of pi multiplied by each element in an array of single-precision values.

[`vvcos(_:_:_:)`](/documentation/Accelerate/vvcos(_:_:_:))

Calculates the cosine of each element in an array of double-precision values.

[`vvcosf(_:_:_:)`](/documentation/Accelerate/vvcosf(_:_:_:))

Calculates the cosine of each element in an array of single-precision values.

[`vvcospi(_:_:_:)`](/documentation/Accelerate/vvcospi(_:_:_:))

Calculates the cosine of pi multiplied by each element in an array of double-precision values.

[`vvcospif(_:_:_:)`](/documentation/Accelerate/vvcospif(_:_:_:))

Calculates the cosine of pi multiplied by each element in an array of single-precision values.

[`vvcosisin(_:_:_:)`](/documentation/Accelerate/vvcosisin(_:_:_:))

Calculates the cosine and sine of each element in an array of double-precision values.

[`vvcosisinf(_:_:_:)`](/documentation/Accelerate/vvcosisinf(_:_:_:))

Calculates the cosine and sine of each element in an array of single-precision values.

[`vvsincos(_:_:_:_:)`](/documentation/Accelerate/vvsincos(_:_:_:_:))

Calculates the cosine and sine of each element in an array of double-precision values.

[`vvsincosf(_:_:_:_:)`](/documentation/Accelerate/vvsincosf(_:_:_:_:))

Calculates the cosine and sine of each element in an array of single-precision values.

[`vvtan(_:_:_:)`](/documentation/Accelerate/vvtan(_:_:_:))

Calculates the tangent of each element in an array of double-precision values.

[`vvtanf(_:_:_:)`](/documentation/Accelerate/vvtanf(_:_:_:))

Calculates the tangent of each element in an array of single-precision values.

[`vvtanpi(_:_:_:)`](/documentation/Accelerate/vvtanpi(_:_:_:))

Calculates the tangent of pi multiplied by each element in an array of double-precision values.

[`vvtanpif(_:_:_:)`](/documentation/Accelerate/vvtanpif(_:_:_:))

Calculates the tangent of pi multiplied by each element in an array of single-precision values.

[`vvasin(_:_:_:)`](/documentation/Accelerate/vvasin(_:_:_:))

Calculates the arcsine of each element in an array of double-precision values.

[`vvasinf(_:_:_:)`](/documentation/Accelerate/vvasinf(_:_:_:))

Calculates the arcsine of each element in an array of single-precision values.

[`vvacos(_:_:_:)`](/documentation/Accelerate/vvacos(_:_:_:))

Calculates the arccosine of each element in an array of double-precision values.

[`vvacosf(_:_:_:)`](/documentation/Accelerate/vvacosf(_:_:_:))

Calculates the arccosine of each element in an array of single-precision values.

[`vvatan(_:_:_:)`](/documentation/Accelerate/vvatan(_:_:_:))

Calculates the arctangent of each element in an array of double-precision values.

[`vvatanf(_:_:_:)`](/documentation/Accelerate/vvatanf(_:_:_:))

Calculates the arctangent of each element in an array of single-precision values.

[`vvatan2(_:_:_:_:)`](/documentation/Accelerate/vvatan2(_:_:_:_:))

Calculates the arctangent of each pair of elements in two arrays of double-precision values.

[`vvatan2f(_:_:_:_:)`](/documentation/Accelerate/vvatan2f(_:_:_:_:))

Calculates the arctangent of each pair of elements in two arrays of single-precision values.

### Array-Oriented Hyperbolic Functions

[`acosh(_:)`](/documentation/Accelerate/vForce/acosh(_:)-1j3qt)

Returns the inverse hyperbolic cosine of each element in a vector of double-precision values.

[`acosh(_:)`](/documentation/Accelerate/vForce/acosh(_:)-8zjay)

Returns the inverse hyperbolic cosine of each element in a vector of single-precision values.

[`acosh(_:result:)`](/documentation/Accelerate/vForce/acosh(_:result:)-4cip0)

Calculates the inverse hyperbolic cosine of each element in a vector of double-precision values.

[`acosh(_:result:)`](/documentation/Accelerate/vForce/acosh(_:result:)-2r23w)

Calculates the inverse hyperbolic cosine of each element in a vector of single-precision values.

[`asinh(_:)`](/documentation/Accelerate/vForce/asinh(_:)-ue6b)

Returns the inverse hyperbolic sine of each element in a vector of double-precision values.

[`asinh(_:)`](/documentation/Accelerate/vForce/asinh(_:)-284n7)

Returns the inverse hyperbolic sine of each element in a vector of single-precision values.

[`asinh(_:result:)`](/documentation/Accelerate/vForce/asinh(_:result:)-7wn57)

Calculates the inverse hyperbolic sine of each element in a vector of double-precision values.

[`asinh(_:result:)`](/documentation/Accelerate/vForce/asinh(_:result:)-17vv4)

Calculates the inverse hyperbolic sine of each element in a vector of single-precision values.

[`atanh(_:)`](/documentation/Accelerate/vForce/atanh(_:)-922d)

Returns the inverse hyperbolic tangent of each element in a vector of double-precision values.

[`atanh(_:)`](/documentation/Accelerate/vForce/atanh(_:)-2t372)

Returns the inverse hyperbolic tangent of each element in a vector of single-precision values.

[`atanh(_:result:)`](/documentation/Accelerate/vForce/atanh(_:result:)-6waj3)

Calculates the inverse hyperbolic tangent of each element in a vector of double-precision values.

[`atanh(_:result:)`](/documentation/Accelerate/vForce/atanh(_:result:)-596wg)

Calculates the inverse hyperbolic tangent of each element in a vector of single-precision values.

[`cosh(_:)`](/documentation/Accelerate/vForce/cosh(_:)-4dmhm)

Returns the hyperbolic cosine of each element in a vector of double-precision values.

[`cosh(_:)`](/documentation/Accelerate/vForce/cosh(_:)-5ax3f)

Returns the hyperbolic cosine of each element in a vector of single-precision values.

[`cosh(_:result:)`](/documentation/Accelerate/vForce/cosh(_:result:)-4f7in)

Calculates the hyperbolic cosine of each element in a vector of double-precision values.

[`cosh(_:result:)`](/documentation/Accelerate/vForce/cosh(_:result:)-3x3wu)

Calculates the hyperbolic cosine of each element in a vector of single-precision values.

[`sinh(_:)`](/documentation/Accelerate/vForce/sinh(_:)-54hpe)

Returns the hyperbolic sine of each element in a vector of double-precision values.

[`sinh(_:)`](/documentation/Accelerate/vForce/sinh(_:)-fwj2)

Returns the hyperbolic sine of each element in a vector of single-precision values.

[`sinh(_:result:)`](/documentation/Accelerate/vForce/sinh(_:result:)-6xge8)

Calculates the hyperbolic sine of each element in a vector of double-precision values.

[`sinh(_:result:)`](/documentation/Accelerate/vForce/sinh(_:result:)-1ag0e)

Calculates the hyperbolic sine of each element in a vector of single-precision values.

[`tanh(_:)`](/documentation/Accelerate/vForce/tanh(_:)-89qjn)

Returns the hyperbolic tangent of each element in a vector of double-precision values.

[`tanh(_:)`](/documentation/Accelerate/vForce/tanh(_:)-4h4en)

Returns the hyperbolic tangent of each element in a vector of single-precision values.

[`tanh(_:result:)`](/documentation/Accelerate/vForce/tanh(_:result:)-3fuc9)

Calculates the hyperbolic tangent of each element in a vector of double-precision values.

[`tanh(_:result:)`](/documentation/Accelerate/vForce/tanh(_:result:)-1fzsa)

Calculates the hyperbolic tangent of each element in a vector of single-precision values.

[`vvsinh(_:_:_:)`](/documentation/Accelerate/vvsinh(_:_:_:))

Calculates the hyperbolic sine of each element in an array of double-precision values.

[`vvsinhf(_:_:_:)`](/documentation/Accelerate/vvsinhf(_:_:_:))

Calculates the hyperbolic sine of each element in an array of single-precision values.

[`vvcosh(_:_:_:)`](/documentation/Accelerate/vvcosh(_:_:_:))

Calculates the hyperbolic cosine of each element in an array of double-precision values.

[`vvcoshf(_:_:_:)`](/documentation/Accelerate/vvcoshf(_:_:_:))

Calculates the hyperbolic cosine of each element in an array of single-precision values.

[`vvtanh(_:_:_:)`](/documentation/Accelerate/vvtanh(_:_:_:))

Calculates the hyperbolic tangent of each element in an array of double-precision values.

[`vvtanhf(_:_:_:)`](/documentation/Accelerate/vvtanhf(_:_:_:))

Calculates the hyperbolic tangent of each element in an array of single-precision values.

[`vvasinh(_:_:_:)`](/documentation/Accelerate/vvasinh(_:_:_:))

Calculates the inverse hyperbolic sine of each element in an array of double-precision values.

[`vvasinhf(_:_:_:)`](/documentation/Accelerate/vvasinhf(_:_:_:))

Calculates the inverse hyperbolic sine of each element in an array of single-precision values.

[`vvacosh(_:_:_:)`](/documentation/Accelerate/vvacosh(_:_:_:))

Calculates the inverse hyperbolic cosine of each element in an array of double-precision values.

[`vvacoshf(_:_:_:)`](/documentation/Accelerate/vvacoshf(_:_:_:))

Calculates the inverse hyperbolic cosine of each element in an array of single-precision values.

[`vvatanh(_:_:_:)`](/documentation/Accelerate/vvatanh(_:_:_:))

Calculates the inverse hyperbolic tangent of each element in an array of double-precision values.

[`vvatanhf(_:_:_:)`](/documentation/Accelerate/vvatanhf(_:_:_:))

Calculates the inverse hyperbolic tangent of each element in an array of single-precision values.

### Data Types

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

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



---

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)