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

19 lines
362 B
C
Executable File

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