avr-fw-modules/core/src/fp_acos.c

20 lines
375 B
C
Executable File

#include "hwo/fixpoint.h"
/* fp_acos() returns: 0..180 */
fixpoint_t fp_acos(fixpoint_t cos)
{
if ((cos >= fp_make(1)))
return 0;
if (cos == fp_make(0))
return fp_make(90);
if (cos == fp_make(-1))
return fp_make(180);
if (cos > 0)
return fp_make(90) - fp_sin_lookup_reverse(cos);
if (cos < 0)
return fp_make(90) + fp_sin_lookup_reverse(-cos);
return 0;
};