Contents

vDSP_vsmfixu24

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

Declaration

void vDSP_vsmfixu24(const float vDSP_input1[], ptrdiff_t vDSP_stride1, const float vDSP_input2[], vDSP_uint24 *vDSP_input3, ptrdiff_t vDSP_stride2, size_t vDSP_size);

Parameters

  • __A:

    The single-precision floating-point input vector.

  • __IA:

    The stride for input vector A.

  • __B:

    A pointer to a floating-point scaling factor.

  • __C:

    The 24-bit integer output vector.

  • __IC:

    The stride for output vector C.

  • __N:

    The number of values to convert.

Discussion

This function scales vector A by the scalar *B and converts each resulting value to an unsigned 24-bit integer, placing the results in C. After scaling, the function clamps values that are outside the range that unsigned 24-bit integers can represent to the largest or smallest representable values.

This function performs the following operations:

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

In this pseudocode, UINT24_MAX is equal to 2^24 - 1.

See Also

Conversion Functions