(defun cauchy (nn bnd pt q) (declare (type fixnum nn)) (declare (type double-float bnd)) (declare (type (simple-array double-float (*)) pt)) (declare (type (simple-array double-float (*)) q)) (prog ((x 0.0d0) (xm 0.0d0) (f 0.0d0) (dx 0.0d0) (df 0.0d0) (i 0) (n 0)) (declare (type double-float x)) (declare (type double-float xm)) (declare (type double-float f)) (declare (type double-float dx)) (declare (type double-float df)) (declare (type fixnum i)) (declare (type fixnum n)) (fset (fref pt nn) (- (fref pt nn))) (setf n (+ nn (- 1))) (setf x (dexp (/ (+ (dlog (- (fref pt nn))) (- (dlog (fref pt 1)))) (dble (float n))) )) (if (= (fref pt n) 0.0d0) (go label20)) (setf xm (/ (* -1 (fref pt nn)) (fref pt n))) (if (< xm x) (setf x xm)) label20 (setf xm (* 0.1d0 x)) (setf f (fref pt 1)) (fdo ((i 2 (+ i 1))) ((> i nn) nil) (tagbody (setf f (+ (* f xm) (fref pt i)))) ) (if (<= f 0.0d0) (go label40)) (setf x xm) (go label20) label40 (setf dx x) label50 (if (<= (dabs (/ dx x)) 0.005d0) (go label70)) (fset (fref q 1) (fref pt 1)) (fdo ((i 2 (+ i 1))) ((> i nn) nil) (tagbody (fset (fref q i) (+ (* (fref q (+ i (- 1))) x) (fref pt i)))) ) (setf f (fref q nn)) (setf df (fref q 1)) (fdo ((i 2 (+ i 1))) ((> i n) nil) (tagbody (setf df (+ (* df x) (fref q i)))) ) (setf dx (/ f df)) (setf x (+ x (- dx))) (go label50) label70 (setf bnd x) (return (values nn bnd pt q)) ))