CMSIS-DSP: Square Root

| CMSIS-DSP Version 1.10.0 CMSIS DSP Software Library

- Main Page
- Usage and Description
- Reference

All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
Macros | Functions
Square Root
Fast Math Functions

## Macros

#define | Q12QUARTER
| Q15 square root function. More...
#define | Q28QUARTER
| Q31 square root function. More...

## Functions

__STATIC_FORCEINLINE arm_status | arm_sqrt_f32 (const float32_t in, float32_t *pOut)
| Floating-point square root function. More...
arm_status | arm_sqrt_q31 (q31_t in, q31_t *pOut)
| Q31 square root function. More...
arm_status | arm_sqrt_q15 (q15_t in, q15_t *pOut)
| Q15 square root function. More...
__STATIC_FORCEINLINE arm_status | arm_sqrt_f16 (float16_t in, float16_t *pOut)
| Floating-point square root function. More...

## Description

Computes the square root of a number. There are separate functions for Q15, Q31, and floating-point data types. The square root function is computed using the Newton-Raphson algorithm. This is an iterative algorithm of the form:

         x1 = x0 - f(x0)/f'(x0)

where `x1` is the current estimate, `x0` is the previous estimate, and `f'(x0)` is the derivative of `f()` evaluated at `x0`. For the square root function, the algorithm reduces to:

        x0 = in/2                         [initial guess]
        x1 = 1/2 * ( x0 + in / x0)        [each iteration]

## Macro Definition Documentation

#define Q12QUARTER

Parameters

  [in] | in | input value. The range of the input value is [0 +1) or 0x0000 to 0x7FFF
  [out] | pOut | points to square root of input value

Returns
  execution status
  - ARM_MATH_SUCCESS : input value is positive
  - ARM_MATH_ARGUMENT_ERROR : input value is negative; *pOut is set to 0

#define Q28QUARTER

Parameters

  [in] | in | input value. The range of the input value is [0 +1) or 0x00000000 to 0x7FFFFFFF
  [out] | pOut | points to square root of input value

Returns
  execution status
  - ARM_MATH_SUCCESS : input value is positive
  - ARM_MATH_ARGUMENT_ERROR : input value is negative; *pOut is set to 0

## Function Documentation

__STATIC_FORCEINLINE arm_status arm_sqrt_f16 | ( | float16_t | in,
|  | float16_t * | pOut
| ) |  |

Parameters

  [in] | in | input value
  [out] | pOut | square root of input value

Returns
  execution status
  - ARM_MATH_SUCCESS : input value is positive
  - ARM_MATH_ARGUMENT_ERROR : input value is negative; *pOut is set to 0

__STATIC_FORCEINLINE arm_status arm_sqrt_f32 | ( | const float32_t | in,
|  | float32_t * | pOut
| ) |  |

Parameters

  [in] | in | input value
  [out] | pOut | square root of input value

Returns
  execution status
  - ARM_MATH_SUCCESS : input value is positive
  - ARM_MATH_ARGUMENT_ERROR : input value is negative; *pOut is set to 0

arm_status arm_sqrt_q15 | ( | q15_t | in,
|  | q15_t * | pOut
| ) |  |

Parameters

  [in] | in | input value. The range of the input value is [0 +1) or 0x0000 to 0x7FFF
  [out] | pOut | points to square root of input value

Returns
  execution status
  - ARM_MATH_SUCCESS : input value is positive
  - ARM_MATH_ARGUMENT_ERROR : input value is negative; *pOut is set to 0

arm_status arm_sqrt_q31 | ( | q31_t | in,
|  | q31_t * | pOut
| ) |  |

Parameters

  [in] | in | input value. The range of the input value is [0 +1) or 0x00000000 to 0x7FFFFFFF
  [out] | pOut | points to square root of input value

Returns
  execution status
  - ARM_MATH_SUCCESS : input value is positive
  - ARM_MATH_ARGUMENT_ERROR : input value is negative; *pOut is set to 0