(1) Apparently, gcl 2.7 has a fix; see http://www.mail-archive.com/gcl-devel at gnu.org/msg01867.html
(2) The function addk calls timeslk, but timeslk sends its arguments through *red. That's
a bit inefficient, I think. Likely, there should be a test for the g = 1 case too.
(3) This discussion is far removed from the CCL or GCL question for Windows.
I don't have much of an opinion about that. But if I were trying to get
cl-ppcre to work with Windows, likely I would favor CCL.
--Barton
(defun addk (xx yy)
(cond ((equal xx 0) yy)
((equal yy 0) xx)
((and (numberp xx) (numberp yy)) (+ xx yy))
((or ($bfloatp xx) ($bfloatp yy)) ($bfloat (list '(mplus) xx yy)))
(t (prog (g a b (x xx)(y yy))
(cond ((numberp x)
(cond ((floatp x) (return (+ x (fpcofrat y))))
(t (setq x (list '(rat) x 1)))))
((numberp y)
(cond ((floatp y) (return (+ y (fpcofrat x))))
(t (setq y (list '(rat) y 1))))))
(setq g (gcd (caddr x) (caddr y)))
(setq a (truncate (caddr x) g)
b (truncate (caddr y) g))
(setq g (timeskl (list '(rat) 1 g)
(list '(rat)
(+ (* (cadr x) b)
(* (cadr y) a))
(* a b))))
(return (cond ((numberp g) g)
((equal (caddr g) 1) (cadr g))
($float (fpcofrat g))
(t g)))))))