Забавная арифметика.

Sep 20, 2017 19:47


Есть фунция на Julia

function pconcat(x,y,arc)
xe = exp(x)
xm = 1.0/xe
ye = exp(y)
ym = 1.0/ye
c = cos(arc)

xc = xe+xm
xs = xe-xm
yc = ye+ym
ys = ye-ym

l = (xc*yc + xs*ys*c)/4

larc = (xc*l - yc)/(xs*(sqrt((l-1)*(l+1))))

(acosh(l), acos(larc)*sign(arc))
end

Вольфрам альфа говорит, что pconcat(x,y,0) должен быть равен (x+y,0). Чаще всего так оно и есть, но если вдруг x и y окажутся близки к N*1.09054966350708617, иногда наступает военное время и косинус оказывается больше единицы. Там надо явную проверку вставить, или есть какой-то более правильный способ это починить?
Previous post Next post
Up