В Lua 5.3 гиперболические функции устарели, поэтому я должен использовать их напрямую или переписать их? - PullRequest
0 голосов
/ 13 апреля 2019

Я создал научный калькулятор для командной строки, и мне было интересно добавить гиперболические функции (math.tanh, math.cosh, math.sinh), эти функции устарели, но все еще доступны через параметр совместимости, которыйактивирован по умолчанию.Должен ли я переопределить эти функции или использовать их напрямую?

1 Ответ

0 голосов
/ 13 апреля 2019

Вы можете переопределить функции. Вот пример повторной реализации:

http://lua -users.org / вики / HyperbolicFunctions

function M.sinh (x)
  if x == 0 then return 0.0 end
  local neg = false
  if x < 0 then x = -x; neg = true end
  if x < 1.0 then
    local y = x * x
    x = x + x * y *
        (((-0.78966127417357099479e0  * y +
           -0.16375798202630751372e3) * y +
           -0.11563521196851768270e5) * y +
           -0.35181283430177117881e6) /
        ((( 0.10000000000000000000e1  * y +
           -0.27773523119650701667e3) * y +
            0.36162723109421836460e5) * y +
           -0.21108770058106271242e7)
  else
    x =  exp(x)
    x = x / 2.0 - 0.5 / x
  end
  if neg then x = -x end
  return x
end

Обратите внимание на следующее, указанное на веб-странице

Предварительные тесты показывают, что они (функции) дают результаты, которые отличаются не более чем на один бит по сравнению с реализациями libC.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...