Function

vDSP_vsmfix24(_:_:_:_:_:_:)

Scales and converts single-precision floating-point values to signed 24-bit integer values.

Declaration

func vDSP_vsmfix24(_ __A: UnsafePointer<Float>, _ __IA: vDSP_Stride, _ __B: UnsafePointer<Float>, _ __C: UnsafeMutablePointer<vDSP_int24>, _ __IC: vDSP_Stride, _ __N: vDSP_Length)

Parameters

__A

Single-precision floating-point input vector.

__IA

Stride for A.

__B

Pointer to a floating-point scaling factor.

__C

Signed 24-bit output vector.

__IC

Stride for C.

__N

The number of values to convert.

Discussion

This function scales vector A by the scalar *B and converts each resulting value to a signed 24-bit integer, placing the results in C. Values (after scaling) that are outside the range that can be represented by signed 24-bit integers are clamped to the largest or smallest representable values.

This function performs the following operations:

    for (n = 0; n < N; ++n)
    {
        if     (A[n*IA] * *B < INT24_MIN)
            C[n*IC] = INT24_MIN
        else if (A[n*IA] * *B > INT24_MAX)
            C[n*IC] = INT24_MAX
        else
            C[n*IC] = (int24)(A[n*IA] * *B);
    }

In this pseudocode, INT24_MIN is equal to -(2^23), and INT24_MAX is equal to 2^23 - 1.

See Also

Floating Point to 24-Bit Integer Conversion

func vDSP_vsmfixu24(UnsafePointer<Float>, vDSP_Stride, UnsafePointer<Float>, UnsafeMutablePointer<vDSP_uint24>, vDSP_Stride, vDSP_Length)

Scales and converts single-precision floating-point values to unsigned 24-bit integer values.

func vDSP_vflt24(UnsafePointer<vDSP_int24>, vDSP_Stride, UnsafeMutablePointer<Float>, vDSP_Stride, vDSP_Length)

Converts signed 24-bit integer values to single-precision floating-point values.

func vDSP_vfltu24(UnsafePointer<vDSP_uint24>, vDSP_Stride, UnsafeMutablePointer<Float>, vDSP_Stride, vDSP_Length)

Converts unsigned 24-bit integer values to single-precision floating-point values.

func vDSP_vfltsm24(UnsafePointer<vDSP_int24>, vDSP_Stride, UnsafePointer<Float>, UnsafeMutablePointer<Float>, vDSP_Stride, vDSP_Length)

Converts and scales signed 24-bit integer values to single-precision floating-point values.

func vDSP_vfltsmu24(UnsafePointer<vDSP_uint24>, vDSP_Stride, UnsafePointer<Float>, UnsafeMutablePointer<Float>, vDSP_Stride, vDSP_Length)

Converts and scales unsigned 24-bit integer values to single-precision floating-point values.

struct vDSP_uint24

A data structure that holds a 24-bit unsigned integer value.

struct vDSP_int24

A data structure that holds a 24-bit signed integer value.