Generic Structure

# SIMD4

A vector of four scalar values.

## Topics

### Type Aliases

`typealias SIMD4.ArrayLiteralElement`

The type of the elements of an array literal.

`typealias SIMD4.MaskStorage`

The mask type resulting from pointwise comparisons of this vector type.

### Initializers

`init()`

Creates a vector with zero in all lanes.

`init(SCNVector4)`
`init(SCNVector4)`
`init<S>(S)`

Creates a vector from the given sequence.

`init<Other>(SIMD4<Other>)`

Creates a new vector from the given vector of floating-point values.

`init<Other>(SIMD4<Other>)`

Creates a new vector from the given vector of integers.

`init(SIMD3<Scalar>, Scalar)`

A four-element vector created by appending a scalar to a three-element vector.

`init(Scalar, Scalar, Scalar, Scalar)`

Creates a new vector from the given elements.

`init<Other>(SIMD4<Other>, rounding: FloatingPointRoundingRule)`

Creates a new vector from the given vector, rounding the given vector’s of elements using the specified rounding rule.

`init(arrayLiteral: Scalar...)`

Creates a vector from the specified elements.

`init<Other>(clamping: SIMD4<Other>)`

Creates a new vector from the given vector, clamping the values of the given vector’s elements if necessary.

`init(from: Decoder)`

Creates a new vector by decoding scalars from the given decoder.

`init(lowHalf: SIMD2<Scalar>, highHalf: SIMD2<Scalar>)`

Creates a new vector from two half-length vectors.

`init(repeating: Scalar)`

A vector with the specified value in all lanes.

`init<Other>(truncatingIfNeeded: SIMD4<Other>)`

Creates a new vector from the given vector, truncating the bit patterns of the given vector’s elements if necessary.

`init(x: Scalar, y: Scalar, z: Scalar, w: Scalar)`

Creates a new vector from the given elements.

### Instance Properties

`var debugDescription: String`

A textual representation of this instance, suitable for debugging.

`var description: String`

A textual description of the vector.

`var evenHalf: SIMD2<Scalar>`

A half-length vector made up of the even elements of the vector.

`var highHalf: SIMD2<Scalar>`

A half-length vector made up of the high elements of the vector.

`var indices: Range<Int>`

The valid indices for subscripting the vector.

`var leadingZeroBitCount: SIMD4<Scalar>`
`var lowHalf: SIMD2<Scalar>`

A half-length vector made up of the low elements of the vector.

`var nonzeroBitCount: SIMD4<Scalar>`
`var oddHalf: SIMD2<Scalar>`

A half-length vector made up of the odd elements of the vector.

`var scalarCount: Int`

The number of scalars in the vector.

`var trailingZeroBitCount: SIMD4<Scalar>`
`var w: Scalar`

The fourth element of the vector.

`var x: Scalar`

The first element of the vector.

`var y: Scalar`

The second element of the vector.

`var z: Scalar`

The third element of the vector.

### Type Properties

`static var one: SIMD4<Scalar>`

A vector with one in all lanes.

`static var one: SIMD4<Scalar>`

A vector with one in all lanes.

`static var scalarCount: Int`

The number of scalars, or elements, in a vector of this type.

`static var zero: SIMD4<Scalar>`

A vector with zero in all lanes.

`static var zero: SIMD4<Scalar>`

A vector with zero in all lanes.

### Instance Methods

`func addProduct(Scalar, SIMD4<Scalar>)`
`func addProduct(SIMD4<Scalar>, Scalar)`
`func addProduct(SIMD4<Scalar>, SIMD4<Scalar>)`
`func addingProduct(Scalar, SIMD4<Scalar>) -> SIMD4<Scalar>`
`func addingProduct(SIMD4<Scalar>, Scalar) -> SIMD4<Scalar>`
`func encode(to: Encoder)`

Encodes the scalars of this vector into the given encoder in an unkeyed container.

`func formSquareRoot()`
`func hash(into: inout Hasher)`

Hashes the elements of the vector using the given hasher.

`func max() -> Scalar`

Returns the greatest scalar in the vector.

`func max() -> Scalar`

The greatest element in the vector.

`func min() -> Scalar`

Returns the least scalar in the vector.

`func min() -> Scalar`

The least element in the vector.

`func replace(with: Scalar, where: SIMDMask<SIMD4<Scalar.SIMDMaskScalar>>)`

Replaces elements of this vector with `other` in the lanes where `mask` is `true`.

`func replace(with: SIMD4<Scalar>, where: SIMDMask<SIMD4<Scalar.SIMDMaskScalar>>)`

Replaces elements of this vector with elements of `other` in the lanes where `mask` is `true`.

`func replacing(with: Scalar, where: SIMDMask<SIMD4<Scalar.SIMDMaskScalar>>) -> SIMD4<Scalar>`

Returns a copy of this vector, with elements `other` in the lanes where `mask` is `true`.

`func replacing(with: SIMD4<Scalar>, where: SIMDMask<SIMD4<Scalar.SIMDMaskScalar>>) -> SIMD4<Scalar>`

Returns a copy of this vector, with elements replaced by elements of `other` in the lanes where `mask` is `true`.

`func round(FloatingPointRoundingRule)`
`func rounded(FloatingPointRoundingRule) -> SIMD4<Scalar>`
`func squareRoot() -> SIMD4<Scalar>`
`func sum() -> Scalar`

Returns the sum of the scalars in the vector.

`func wrappedSum() -> Scalar`

Returns the sum of the scalars in the vector, computed with wrapping addition.

### Type Methods

`static func random(in: ClosedRange<Scalar>) -> SIMD4<Scalar>`

Returns a vector with random values from within the specified range in all lanes.

`static func random(in: Range<Scalar>) -> SIMD4<Scalar>`

Returns a vector with random values from within the specified range in all lanes.

`static func random(in: ClosedRange<Scalar>) -> SIMD4<Scalar>`

Returns a vector with random values from within the specified range in all lanes.

`static func random(in: Range<Scalar>) -> SIMD4<Scalar>`

Returns a vector with random values from within the specified range in all lanes.

`static func random<T>(in: ClosedRange<Scalar>, using: inout T) -> SIMD4<Scalar>`

Returns a vector with random values from within the specified range in all lanes, using the given generator as a source for randomness.

`static func random<T>(in: Range<Scalar>, using: inout T) -> SIMD4<Scalar>`

Returns a vector with random values from within the specified range in all lanes, using the given generator as a source for randomness.

`static func random<T>(in: ClosedRange<Scalar>, using: inout T) -> SIMD4<Scalar>`

Returns a vector with random values from within the specified range in all lanes, using the given generator as a source for randomness.

`static func random<T>(in: Range<Scalar>, using: inout T) -> SIMD4<Scalar>`

Returns a vector with random values from within the specified range in all lanes, using the given generator as a source for randomness.

### Subscripts

`subscript(Int) -> Scalar`

Accesses the scalar at the specified position.

`subscript<Index>(SIMD2<Index>) -> SIMD2<Scalar>`

Extracts the scalars at specified indices to form a SIMD2.

`subscript<Index>(SIMD3<Index>) -> SIMD3<Scalar>`

Extracts the scalars at specified indices to form a SIMD3.

`subscript<Index>(SIMD4<Index>) -> SIMD4<Scalar>`

Extracts the scalars at specified indices to form a SIMD4.

`subscript<Index>(SIMD8<Index>) -> SIMD8<Scalar>`

Extracts the scalars at specified indices to form a SIMD8.

`subscript<Index>(SIMD16<Index>) -> SIMD16<Scalar>`

Extracts the scalars at specified indices to form a SIMD16.

`subscript<Index>(SIMD32<Index>) -> SIMD32<Scalar>`

Extracts the scalars at specified indices to form a SIMD32.

`subscript<Index>(SIMD64<Index>) -> SIMD64<Scalar>`

Extracts the scalars at specified indices to form a SIMD64.

### Operator Functions

`static func % (Scalar, SIMD4<Scalar>) -> SIMD4<Scalar>`
`static func % (SIMD4<Scalar>, Scalar) -> SIMD4<Scalar>`
`static func % (SIMD4<Scalar>, SIMD4<Scalar>) -> SIMD4<Scalar>`
`static func %= (inout SIMD4<Scalar>, Scalar)`
`static func %= (inout SIMD4<Scalar>, SIMD4<Scalar>)`
`static func & (Scalar, SIMD4<Scalar>) -> SIMD4<Scalar>`
`static func & (SIMD4<Scalar>, Scalar) -> SIMD4<Scalar>`
`static func & (SIMD4<Scalar>, SIMD4<Scalar>) -> SIMD4<Scalar>`
`static func &* (Scalar, SIMD4<Scalar>) -> SIMD4<Scalar>`
`static func &* (SIMD4<Scalar>, Scalar) -> SIMD4<Scalar>`
`static func &* (SIMD4<Scalar>, SIMD4<Scalar>) -> SIMD4<Scalar>`
`static func &*= (inout SIMD4<Scalar>, Scalar)`
`static func &*= (inout SIMD4<Scalar>, SIMD4<Scalar>)`
`static func &+ (Scalar, SIMD4<Scalar>) -> SIMD4<Scalar>`
`static func &+ (SIMD4<Scalar>, Scalar) -> SIMD4<Scalar>`
`static func &+ (SIMD4<Scalar>, SIMD4<Scalar>) -> SIMD4<Scalar>`
`static func &+= (inout SIMD4<Scalar>, Scalar)`
`static func &+= (inout SIMD4<Scalar>, SIMD4<Scalar>)`
`static func &- (Scalar, SIMD4<Scalar>) -> SIMD4<Scalar>`
`static func &- (SIMD4<Scalar>, Scalar) -> SIMD4<Scalar>`
`static func &- (SIMD4<Scalar>, SIMD4<Scalar>) -> SIMD4<Scalar>`
`static func &-= (inout SIMD4<Scalar>, Scalar)`
`static func &-= (inout SIMD4<Scalar>, SIMD4<Scalar>)`
`static func &<< (Scalar, SIMD4<Scalar>) -> SIMD4<Scalar>`
`static func &<< (SIMD4<Scalar>, Scalar) -> SIMD4<Scalar>`
`static func &<< (SIMD4<Scalar>, SIMD4<Scalar>) -> SIMD4<Scalar>`
`static func &<<= (inout SIMD4<Scalar>, Scalar)`
`static func &<<= (inout SIMD4<Scalar>, SIMD4<Scalar>)`
`static func &= (inout SIMD4<Scalar>, Scalar)`
`static func &= (inout SIMD4<Scalar>, SIMD4<Scalar>)`
`static func &>> (Scalar, SIMD4<Scalar>) -> SIMD4<Scalar>`
`static func &>> (SIMD4<Scalar>, Scalar) -> SIMD4<Scalar>`
`static func &>> (SIMD4<Scalar>, SIMD4<Scalar>) -> SIMD4<Scalar>`
`static func &>>= (inout SIMD4<Scalar>, Scalar)`
`static func &>>= (inout SIMD4<Scalar>, SIMD4<Scalar>)`
`static func * (Scalar, SIMD4<Scalar>) -> SIMD4<Scalar>`
`static func * (SIMD4<Scalar>, Scalar) -> SIMD4<Scalar>`
`static func *= (inout SIMD4<Scalar>, Scalar)`
`static func *= (inout SIMD4<Scalar>, SIMD4<Scalar>)`
`static func + (Scalar, SIMD4<Scalar>) -> SIMD4<Scalar>`
`static func + (SIMD4<Scalar>, Scalar) -> SIMD4<Scalar>`
`static func += (inout SIMD4<Scalar>, Scalar)`
`static func += (inout SIMD4<Scalar>, SIMD4<Scalar>)`
`static func - (SIMD4<Scalar>) -> SIMD4<Scalar>`
`static func - (Scalar, SIMD4<Scalar>) -> SIMD4<Scalar>`
`static func - (SIMD4<Scalar>, Scalar) -> SIMD4<Scalar>`
`static func -= (inout SIMD4<Scalar>, Scalar)`
`static func -= (inout SIMD4<Scalar>, SIMD4<Scalar>)`
`static func .!= (Scalar, SIMD4<Scalar>) -> SIMDMask<SIMD4<Scalar.SIMDMaskScalar>>`

Returns a vector mask with the result of a pointwise inequality comparison.

`static func .!= (SIMD4<Scalar>, Scalar) -> SIMDMask<SIMD4<Scalar.SIMDMaskScalar>>`

Returns a vector mask with the result of a pointwise inequality comparison.

`static func .!= (SIMD4<Scalar>, SIMD4<Scalar>) -> SIMDMask<SIMD4<Scalar.SIMDMaskScalar>>`

Returns a vector mask with the result of a pointwise inequality comparison.

`static func .< (Scalar, SIMD4<Scalar>) -> SIMDMask<SIMD4<Scalar.SIMDMaskScalar>>`

Returns a vector mask with the result of a pointwise less than comparison.

`static func .< (SIMD4<Scalar>, Scalar) -> SIMDMask<SIMD4<Scalar.SIMDMaskScalar>>`

Returns a vector mask with the result of a pointwise less than comparison.

`static func .< (SIMD4<Scalar>, SIMD4<Scalar>) -> SIMDMask<SIMD4<Scalar.SIMDMaskScalar>>`

Returns a vector mask with the result of a pointwise less than comparison.

`static func .<= (Scalar, SIMD4<Scalar>) -> SIMDMask<SIMD4<Scalar.SIMDMaskScalar>>`

Returns a vector mask with the result of a pointwise less than or equal comparison.

`static func .<= (SIMD4<Scalar>, Scalar) -> SIMDMask<SIMD4<Scalar.SIMDMaskScalar>>`

Returns a vector mask with the result of a pointwise less than or equal comparison.

`static func .<= (SIMD4<Scalar>, SIMD4<Scalar>) -> SIMDMask<SIMD4<Scalar.SIMDMaskScalar>>`

Returns a vector mask with the result of a pointwise less than or equal comparison.

`static func .== (Scalar, SIMD4<Scalar>) -> SIMDMask<SIMD4<Scalar.SIMDMaskScalar>>`

Returns a vector mask with the result of a pointwise equality comparison.

`static func .== (SIMD4<Scalar>, Scalar) -> SIMDMask<SIMD4<Scalar.SIMDMaskScalar>>`

Returns a vector mask with the result of a pointwise equality comparison.

`static func .== (SIMD4<Scalar>, SIMD4<Scalar>) -> SIMDMask<SIMD4<Scalar.SIMDMaskScalar>>`

Returns a vector mask with the result of a pointwise equality comparison.

`static func .> (Scalar, SIMD4<Scalar>) -> SIMDMask<SIMD4<Scalar.SIMDMaskScalar>>`

Returns a vector mask with the result of a pointwise greater than comparison.

`static func .> (SIMD4<Scalar>, Scalar) -> SIMDMask<SIMD4<Scalar.SIMDMaskScalar>>`

Returns a vector mask with the result of a pointwise greater than comparison.

`static func .> (SIMD4<Scalar>, SIMD4<Scalar>) -> SIMDMask<SIMD4<Scalar.SIMDMaskScalar>>`

Returns a vector mask with the result of a pointwise greater than comparison.

`static func .>= (Scalar, SIMD4<Scalar>) -> SIMDMask<SIMD4<Scalar.SIMDMaskScalar>>`

Returns a vector mask with the result of a pointwise greater than or equal comparison.

`static func .>= (SIMD4<Scalar>, Scalar) -> SIMDMask<SIMD4<Scalar.SIMDMaskScalar>>`

Returns a vector mask with the result of a pointwise greater than or equal comparison.

`static func .>= (SIMD4<Scalar>, SIMD4<Scalar>) -> SIMDMask<SIMD4<Scalar.SIMDMaskScalar>>`

Returns a vector mask with the result of a pointwise greater than or equal comparison.

`static func / (Scalar, SIMD4<Scalar>) -> SIMD4<Scalar>`
`static func / (SIMD4<Scalar>, Scalar) -> SIMD4<Scalar>`
`static func / (Scalar, SIMD4<Scalar>) -> SIMD4<Scalar>`
`static func / (SIMD4<Scalar>, Scalar) -> SIMD4<Scalar>`
`static func / (SIMD4<Scalar>, SIMD4<Scalar>) -> SIMD4<Scalar>`
`static func /= (inout SIMD4<Scalar>, Scalar)`
`static func /= (inout SIMD4<Scalar>, SIMD4<Scalar>)`
`static func /= (inout SIMD4<Scalar>, Scalar)`
`static func /= (inout SIMD4<Scalar>, SIMD4<Scalar>)`
`static func == (SIMD4<Scalar>, SIMD4<Scalar>) -> Bool`

Returns a Boolean value indicating whether two vectors are equal.

`static func ^ (Scalar, SIMD4<Scalar>) -> SIMD4<Scalar>`
`static func ^ (SIMD4<Scalar>, Scalar) -> SIMD4<Scalar>`
`static func ^ (SIMD4<Scalar>, SIMD4<Scalar>) -> SIMD4<Scalar>`
`static func ^= (inout SIMD4<Scalar>, Scalar)`
`static func ^= (inout SIMD4<Scalar>, SIMD4<Scalar>)`
`static func | (Scalar, SIMD4<Scalar>) -> SIMD4<Scalar>`
`static func | (SIMD4<Scalar>, Scalar) -> SIMD4<Scalar>`
`static func | (SIMD4<Scalar>, SIMD4<Scalar>) -> SIMD4<Scalar>`
`static func |= (inout SIMD4<Scalar>, Scalar)`
`static func |= (inout SIMD4<Scalar>, SIMD4<Scalar>)`
`static func ~ (SIMD4<Scalar>) -> SIMD4<Scalar>`

## Relationships

### SIMD Vectors

`struct SIMD2`

A vector of two scalar values.

`struct SIMD3`

A vector of three scalar values.

`struct SIMD8`

A vector of eight scalar values.

`struct SIMD16`

A vector of 16 scalar values.

`struct SIMD32`

A vector of 32 scalar values.

`struct SIMD64`

A vector of 64 scalar values.