Случайно наткнулся на ошибку в Math.cos для аргумента PI/2.
irb(main):002:0> cos(PI/2)<br/>
=> 6.123031769111886e-17
На ruby-talk это обсуждали… как я понял это проблема «малых чисел» и имплементации тригонометрии.
«so of course it's reasonable to say that Math.cos( Math::PI/2 ) â 0.0, but perhaps not exactly. 9e-17 is insignificantly small. „
Для меня 9е-17 это “значимая» погрешность, т.к. косинус и синус использую в кватернионах для вращения векторов.
Эта погрешность только вблизи граничных результатов или на всей области определения?
Как корректно обойти эту ситуацию?
Переопределить косинус как мне надо (для PI/2 возвращать 0) и считать что для всех остальных аргументов вычисления верны?