<!--
{
  "availability" : [

  ],
  "documentType" : "symbol",
  "framework" : "Accelerate",
  "identifier" : "/documentation/simd/simd_quatd",
  "metadataVersion" : "0.1.0",
  "role" : "Structure",
  "symbol" : {
    "kind" : "Structure",
    "modules" : [
      "simd"
    ],
    "preciseIdentifier" : "c:@SA@simd_quatd"
  },
  "title" : "simd_quatd"
}
-->

# simd_quatd

A double-precision quaternion.

```
struct simd_quatd
```

## Topics

### Initializing a quaternion

[`init()`](/documentation/simd/simd_quatd/init())

Creates a new quaternion.

[`init(vector:)`](/documentation/simd/simd_quatd/init(vector:))

Creates a new quaternion from a four-element vector.

[`init(_:)`](/documentation/simd/simd_quatd/init(_:)-791zk)

Creates a new quaternion from a 3 x 3 rotation matrix.

[`init(_:)`](/documentation/simd/simd_quatd/init(_:)-5vcd5)

Creates a new quaternion from a 4 x 4 rotation matrix.

[`init(angle:axis:)`](/documentation/simd/simd_quatd/init(angle:axis:))

Creates a new quaternion with an action that’s a rotation about an axis.

[`init(from:to:)`](/documentation/simd/simd_quatd/init(from:to:))

Creates a new quaternion with an action that’s a rotation between two vectors.

[`init(ix:iy:iz:r:)`](/documentation/simd/simd_quatd/init(ix:iy:iz:r:))

Creates a new quaternion from four scalar values that specify the imaginary and real parts.

[`init(real:imag:)`](/documentation/simd/simd_quatd/init(real:imag:))

Creates a new quaternion from a scalar real part and a vector imaginary part.

### Querying a quaternion’s properties

[`angle`](/documentation/simd/simd_quatd/angle)

The angle, in radians, by which the quaternion’s action rotates.

[`axis`](/documentation/simd/simd_quatd/axis)

The normalized axis about which the quaternion’s action rotates.

[`conjugate`](/documentation/simd/simd_quatd/conjugate)

The conjugate of the quaternion.

[`imag`](/documentation/simd/simd_quatd/imag)

The imaginary part of the quaternion.

[`real`](/documentation/simd/simd_quatd/real)

The real part of the quaternion.

[`inverse`](/documentation/simd/simd_quatd/inverse)

The inverse of the quaternion.

[`length`](/documentation/simd/simd_quatd/length)

The length of the quaternion.

[`normalized`](/documentation/simd/simd_quatd/normalized)

The unit quaternion of the quaternion.

[`vector`](/documentation/simd/simd_quatd/vector)

The underlying vector of the quaternion.

### Creating a quaternion from other data types

[`simd_quaternion(_:_:_:_:)`](/documentation/simd/simd_quaternion(_:_:_:_:)-1adm9)

Returns a new quaternion from 4 scalar values.

[`simd_quaternion(_:_:)`](/documentation/simd/simd_quaternion(_:_:)-2jzvc)

Returns a new quaternion from a scalar value and a three-element vector.

[`simd_quaternion(_:)`](/documentation/simd/simd_quaternion(_:)-8kl4p)

Returns a new quaternion from a pointer to scalar values.

[`simd_quaternion(_:_:)`](/documentation/simd/simd_quaternion(_:_:)-2yoqw)

Returns a new quaternion from 2 three-element vectors.

[`simd_quaternion(_:)`](/documentation/simd/simd_quaternion(_:)-7paor)

Returns a new quaternion from a 3 x 3 matrix.

[`simd_quaternion(_:)`](/documentation/simd/simd_quaternion(_:)-459vs)

Returns a new quaternion from a four-element vector.

[`simd_quaternion(_:)`](/documentation/simd/simd_quaternion(_:)-8e0xf)

Returns a new quaternion from a 4 x 4 matrix.

### Applying arithmetic operations to quaternions

[`simd_add(_:_:)`](/documentation/simd/simd_add(_:_:)-6ohmq)

Returns the sum of two quaternions.

[`simd_mul(_:_:)`](/documentation/simd/simd_mul(_:_:)-531pe)

Returns the product of two quaternions.

[`simd_mul(_:_:)`](/documentation/simd/simd_mul(_:_:)-8aedk)

[`simd_mul(_:_:)`](/documentation/simd/simd_mul(_:_:)-8uidm)

[`simd_sub(_:_:)`](/documentation/simd/simd_sub(_:_:)-87caf)

Returns the difference between two quaternions.

[`exp(_:)`](/documentation/simd/exp(_:)-9nl1f)

[`log(_:)`](/documentation/simd/log(_:)-77xdo)

### Applying geometric operations to quaternions

[`simd_act(_:_:)`](/documentation/simd/simd_act(_:_:)-47h09)

Returns a vector rotated by a quaternion.

[`act(_:)`](/documentation/simd/simd_quatd/act(_:))

Returns the specified vector rotated by the quaternion.

[`simd_angle(_:)`](/documentation/simd/simd_angle(_:)-zuvx)

Returns the angle by which a quaternion rotates.

[`simd_axis(_:)`](/documentation/simd/simd_axis(_:)-56wf4)

Returns the normalized axis about which the action of the specified quaternion rotates.

[`simd_bezier(_:_:_:_:_:)`](/documentation/simd/simd_bezier(_:_:_:_:_:)-556xd)

Returns the spherical cubic Bezier interpolation between quaternions.

[`simd_conjugate(_:)`](/documentation/simd/simd_conjugate(_:)-98awl)

Returns the conjugate of a quaternion.

[`simd_imag(_:)`](/documentation/simd/simd_imag(_:)-2c7fz)

Returns the imaginary (vector) part of a quaternion.

[`simd_negate(_:)`](/documentation/simd/simd_negate(_:)-3ysgu)

Returns the negation of a quaternion.

[`simd_real(_:)`](/documentation/simd/simd_real(_:)-75t5f)

Returns the real (scalar) part of a quaternion.

[`simd_slerp(_:_:_:)`](/documentation/simd/simd_slerp(_:_:_:)-65dt5)

Returns a spherical linearly interpolated value along the shortest arc between two quaternions.

[`simd_slerp_longest(_:_:_:)`](/documentation/simd/simd_slerp_longest(_:_:_:)-8hbz2)

Returns a spherical linearly interpolated value along the longest arc between two quaternions.

[`simd_spline(_:_:_:_:_:)`](/documentation/simd/simd_spline(_:_:_:_:_:)-19wbg)

Returns an interpolated value between two quaternions along a spherical cubic spline.

[`simd_dot(_:_:)`](/documentation/simd/simd_dot(_:_:)-2bnqp)

Returns the dot product of two quaternions.

[`dot(_:_:)`](/documentation/simd/dot(_:_:)-438xp)

[`simd_length(_:)`](/documentation/simd/simd_length(_:)-52o29)

Returns the length of a quaternion.

[`simd_normalize(_:)`](/documentation/simd/simd_normalize(_:)-ud11)

Returns a quaternion pointing in the same direction as the supplied quaternion with a length of 1.

### Inverting a quaternion

[`simd_inverse(_:)`](/documentation/simd/simd_inverse(_:)-3cvvi)

Returns the inverse of a quaternion.

### Providing a hash value

[`hash(into:)`](/documentation/simd/simd_quatd/hash(into:))

Hashes the essential components of this value by feeding them into the given hasher.



---

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)