> 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)