> After working out the algebra by hand, I think the attached is correct
> (and it does pass the regression tests, yay). I also made the
> line_parallel and line_perp tests more symmetric and zero-divide-free.
It looks better to me, though not completely symmetric:
hasegeli=# select '{0.000001,1000,0}'::line ?|| '{0.00009,90000,0}'::line;
?column?
----------
f
(1 row)
hasegeli=# select '{0.00009,90000,0}'::line ?|| '{0.000001,1000,0}'::line;
?column?
----------
t
(1 row)