Square Root

__STATIC_FORCEINLINE riscv_status riscv_sqrt_f32 (const float32_t in, float32_t *pOut)
riscv_status riscv_sqrt_q31(q31_t in, q31_t *pOut)
riscv_status riscv_sqrt_q15(q15_t in, q15_t *pOut)
__STATIC_FORCEINLINE riscv_status riscv_sqrt_f16 (float16_t in, float16_t *pOut)
group SQRT

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:

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:

Functions

__STATIC_FORCEINLINE riscv_status riscv_sqrt_f32 (const float32_t in, float32_t *pOut)

Floating-point square root function.

Parameters
  • in[in] input value

  • pOut[out] square root of input value

Returns

execution status

  • RISCV_MATH_SUCCESS : input value is positive

  • RISCV_MATH_ARGUMENT_ERROR : input value is negative; *pOut is set to 0

riscv_status riscv_sqrt_q31(q31_t in, q31_t *pOut)

Q31 square root function.

Parameters
  • in[in] input value. The range of the input value is [0 +1) or 0x00000000 to 0x7FFFFFFF

  • pOut[out] points to square root of input value

Returns

execution status

  • RISCV_MATH_SUCCESS : input value is positive

  • RISCV_MATH_ARGUMENT_ERROR : input value is negative; *pOut is set to 0

riscv_status riscv_sqrt_q15(q15_t in, q15_t *pOut)

Q15 square root function.

Parameters
  • in[in] input value. The range of the input value is [0 +1) or 0x0000 to 0x7FFF

  • pOut[out] points to square root of input value

Returns

execution status

  • RISCV_MATH_SUCCESS : input value is positive

  • RISCV_MATH_ARGUMENT_ERROR : input value is negative; *pOut is set to 0

__STATIC_FORCEINLINE riscv_status riscv_sqrt_f16 (float16_t in, float16_t *pOut)

Floating-point square root function.

Parameters
  • in[in] input value

  • pOut[out] square root of input value

Returns

execution status

  • RISCV_MATH_SUCCESS : input value is positive

  • RISCV_MATH_ARGUMENT_ERROR : input value is negative; *pOut is set to 0