#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; };