65 q31_t number, temp1, bits_val1, var1, signBits1, half;
78 signBits1 =
__CLZ(number) - 1;
81 if((signBits1 % 2) == 0)
83 number = number << signBits1;
87 number = number << (signBits1 - 1);
96 temp_float1 = number * 4.6566128731e-010f;
98 tempconv.floatval = temp_float1;
99 bits_val1 = tempconv.fracval;
101 bits_val1 = 0x5f3759df - (bits_val1 >> 1);
103 tempconv.fracval = bits_val1;
104 temp_float1 = tempconv.floatval;
106 var1 = (
q31_t) (temp_float1 * 1073741824);
112 (((
q63_t) var1 * var1) >> 31)) *
113 (
q63_t) half) >> 31))) >> 31)) << 2;
118 (((
q63_t) var1 * var1) >> 31)) *
119 (
q63_t) half) >> 31))) >> 31)) << 2;
124 (((
q63_t) var1 * var1) >> 31)) *
125 (
q63_t) half) >> 31))) >> 31)) << 2;
128 var1 = ((
q31_t) (((
q63_t) temp1 * var1) >> 31)) << 1;
131 if((signBits1 % 2) == 0)
133 var1 = var1 >> (signBits1 / 2);
137 var1 = var1 >> ((signBits1 - 1) / 2);
float float32_t
32-bit floating-point type definition.
int64_t q63_t
64-bit fractional data type in 1.63 format.
arm_status arm_sqrt_q31(q31_t in, q31_t *pOut)
Q31 square root function.
int32_t q31_t
32-bit fractional data type in 1.31 format.
#define __CLZ
Count leading zeros.
arm_status
Error status returned by some functions in the library.