Есть ли способ использовать программные FPU для вычисления синуса и косинуса одновременно?
Косинус - это просто результат изменения значения синуса на 90 градусов. Я использую микроконтроллер с программным обеспечением IEEE754 32-битный FPU, который имеет функции sin и cos. Sin и cos относительно медленны (около 800 циклов каждый), поэтому было бы быстрее, если бы я мог вычислить значение синуса или косинуса и каким-то образом получить недостающее значение. Является ли это возможным?
1 ответ
Решение
Как быстро sqrt
на вашем программном обеспечении FPU? Если это быстрее, чем sin/cos, тогда вы можете использовать тождество: sin(x)^2 + cos(x)^2 = 1
т.е.
cos(x) = sqrt(1 - sin(x)^2)
Конечно, вам нужно позаботиться о знаке +/-, но это не проблема, если вы знаете, в каком квадранте вы находитесь.