in hype/manifolds/lorentz.py [0:0]
def angle_at_u(self, u, v):
uvldot = LorentzDot.apply(u, v)
u0 = u.narrow(-1, 0, 1).squeeze(-1)
num = th.add(v.narrow(-1, 0, 1).squeeze(-1), th.mul(u0, uvldot))
tmp = th.pow(uvldot, 2) - 1.
den = th.sqrt(th.pow(u0, 2) - 1.) * th.sqrt(tmp.clamp_(min=self.eps))
frac = th.div(num, den)
if self.debug and (frac != frac).any():
import ipdb; ipdb.set_trace()
frac.data.clamp_(min=-1 + self.eps, max=1 - self.eps)
ksi = frac.acos()
return ksi