Есть фунция на 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, иногда наступает военное время и косинус оказывается больше единицы. Там надо явную проверку вставить, или есть какой-то более правильный способ это починить?