;; x values must fall within the range -PI ... PI
(bind-func fastsin
(let ((p 0.225) ; :_abuf* (alloc))
(b (/ 4.0 SPI))
(c (/ -4.0 (* SPI SPI))))
(lambda (x)
(let ((y (+ (* b x) (* c x (fabs x)))))
(+ (* p (- (* y (fabs y)) y)) y)))))