This repository has been archived on 2023-07-17. You can view files and clone it, but cannot push or open issues or pull requests.
bl_mcu_sdk/examples/dsp/QuaternionMathFunctions_part1/normalize.c

25 lines
772 B
C

#include "ref.h"
void ref_quaternion_normalize_f32(const float32_t *pInputQuaternions,
float32_t *pNormalizedQuaternions,
uint32_t nbQuaternions)
{
float32_t temp;
for(uint32_t i=0; i < nbQuaternions; i++)
{
temp = SQ(pInputQuaternions[4 * i + 0]) +
SQ(pInputQuaternions[4 * i + 1]) +
SQ(pInputQuaternions[4 * i + 2]) +
SQ(pInputQuaternions[4 * i + 3]);
temp = sqrtf(temp);
pNormalizedQuaternions[4 * i + 0] = pInputQuaternions[4 * i + 0] / temp;
pNormalizedQuaternions[4 * i + 1] = pInputQuaternions[4 * i + 1] / temp;
pNormalizedQuaternions[4 * i + 2] = pInputQuaternions[4 * i + 2] / temp;
pNormalizedQuaternions[4 * i + 3] = pInputQuaternions[4 * i + 3] / temp;
}
}