Давайте я пожалуюсь.
1) Вычислять "знак числа" через POW(-1, TO_FLOAT(NOT(GT(x, 0)))) это круто.
С extract'ом же правильно поняли.
Т.е. XOR(NOT(GT(x, 0)), TO_INT(fDIV(x, pi))) и потом extract нулевого бита.
2) Подаю на вход sin_x значение 3,14158 (~179.99927 градусов), получаю на выходе -4,3E-04 == -0.00043
Реальное значение sin(3.14158) == 1.26536e-5 == 0.0000126536
Ошибка просто огроменная: целых 3600% == (0.0000126536 + 0.00043)/0.0000126536 == 36
При углах 179.97..180 градусов ошибка превышает 100%
Конечно, считать sin(x) при x порядка pi это неблагодарное занятие, но если перед "записью в Y" ещё сделать преобразование "если Y>pi/2, то записать pi-Y", то точность около pi повысится просто невероятно. Можно и y^11 выкидывать смело будет.
Вот график относительной ошибки для вашего алгоритма около pi





