((0 <) (-1 *) when) :abs ((dup 0 ==) (pop abs) (swap over mod) () linrec) :gcd (over over gcd '* dip div) :lcm