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