in libflatsurf we very commonly ask for a sign of the form sgn(a * b ± c * d). (E.g. when deciding collinearity, orthogonality, or relative length of two vectors.)
Currently, we cast everything to arb numbers, try there, and if this does not work, run the formula in e-antic. That's a bit inefficient since we then do the arb computation twice and this also creates a lot more allocations than necessary.