1 ;;; Compiled by f2cl version:
2 ;;; ("f2cl1.l,v 95098eb54f13 2013/04/01 00:45:16 toy $"
3 ;;; "f2cl2.l,v 95098eb54f13 2013/04/01 00:45:16 toy $"
4 ;;; "f2cl3.l,v 96616d88fb7e 2008/02/22 22:19:34 rtoy $"
5 ;;; "f2cl4.l,v 96616d88fb7e 2008/02/22 22:19:34 rtoy $"
6 ;;; "f2cl5.l,v 95098eb54f13 2013/04/01 00:45:16 toy $"
7 ;;; "f2cl6.l,v 1d5cbacbb977 2008/08/24 00:56:27 rtoy $"
8 ;;; "macros.l,v 1409c1352feb 2013/03/24 20:44:50 toy $")
10 ;;; Using Lisp CMU Common Lisp snapshot-2020-04 (21D Unicode)
12 ;;; Options: ((:prune-labels nil) (:auto-save t) (:relaxed-array-decls t)
13 ;;; (:coerce-assigns :as-needed) (:array-type ':array)
14 ;;; (:array-slicing t) (:declare-common nil)
15 ;;; (:float-format double-float))
17 (in-package "HOMPACK")
21 (declare (type (f2cl-lib:integer4
1000 1000) limitd
) (ignorable limitd
))
36 (declare (type (double-float) wk s relerr hold h abserr
)
37 (type (f2cl-lib:integer4
) pcgwk np1 limit jw iter iflagc
)
38 (type f2cl-lib
:logical start crash
))
40 (n y iflag arcre arcae ansre ansae trace$ a nfe arclen yp yold ypold
41 qr lenqr pivot pp rhovec z0 dz t$ work sspar par ipar
)
42 (declare (type (array f2cl-lib
:integer4
(*)) ipar
)
43 (type (array double-float
(*)) par
)
44 (type (array double-float
(*)) sspar
)
45 (type (array f2cl-lib
:integer4
(*)) pivot
)
46 (type (double-float) arclen ansae ansre arcae arcre
)
47 (type (array double-float
(*)) work t$ dz z0 rhovec pp qr ypold
49 (type (f2cl-lib:integer4
) lenqr nfe trace$ iflag n
))
50 (f2cl-lib:with-multi-array-data
51 ((y double-float y-%data% y-%offset%
)
52 (a double-float a-%data% a-%offset%
)
53 (yp double-float yp-%data% yp-%offset%
)
54 (yold double-float yold-%data% yold-%offset%
)
55 (ypold double-float ypold-%data% ypold-%offset%
)
56 (qr double-float qr-%data% qr-%offset%
)
57 (pp double-float pp-%data% pp-%offset%
)
58 (rhovec double-float rhovec-%data% rhovec-%offset%
)
59 (z0 double-float z0-%data% z0-%offset%
)
60 (dz double-float dz-%data% dz-%offset%
)
61 (t$ double-float t$-%data% t$-%offset%
)
62 (work double-float work-%data% work-%offset%
)
63 (pivot f2cl-lib
:integer4 pivot-%data% pivot-%offset%
)
64 (sspar double-float sspar-%data% sspar-%offset%
)
65 (par double-float par-%data% par-%offset%
)
66 (ipar f2cl-lib
:integer4 ipar-%data% ipar-%offset%
))
69 (if (or (<= n
0) (<= ansre
0.0f0
) (< ansae
0.0f0
)) (setf iflag
7))
70 (if (and (>= iflag -
2) (<= iflag
0)) (go label10
))
71 (if (= iflag
2) (go label50
))
72 (if (= iflag
3) (go label40
))
76 (setf arclen
(coerce 0.0f0
'double-float
))
77 (if (<= arcre
0.0f0
) (setf arcre
(* 0.5f0
(f2cl-lib:fsqrt ansre
))))
78 (if (<= arcae
0.0f0
) (setf arcae
(* 0.5f0
(f2cl-lib:fsqrt ansae
))))
81 (setf np1
(f2cl-lib:int-add n
1))
82 (setf pcgwk
(f2cl-lib:int-add
(f2cl-lib:int-mul
2 n
) 3))
83 (setf start f2cl-lib
:%true%
)
84 (setf crash f2cl-lib
:%false%
)
87 (setf hold
(coerce 1.0f0
'double-float
))
88 (setf h
(coerce 0.1f0
'double-float
))
89 (setf s
(coerce 0.0f0
'double-float
))
90 (setf (f2cl-lib:fref ypold-%data%
92 ((1 (f2cl-lib:int-add n
1)))
94 (coerce 1.0f0
'double-float
))
95 (setf (f2cl-lib:fref y-%data%
97 ((1 (f2cl-lib:int-add n
1)))
99 (coerce 0.0f0
'double-float
))
100 (f2cl-lib:fdo
(jw 1 (f2cl-lib:int-add jw
1))
103 (setf (f2cl-lib:fref ypold-%data%
105 ((1 (f2cl-lib:int-add n
1)))
107 (coerce 0.0f0
'double-float
))
110 (<= (f2cl-lib:fref sspar-%data%
(1) ((1 4)) sspar-%offset%
) 0.0f0
)
111 (setf (f2cl-lib:fref sspar-%data%
(1) ((1 4)) sspar-%offset%
)
112 (* (+ (f2cl-lib:fsqrt
(+ n
1.0f0
)) 4.0f0
)
113 (f2cl-lib:d1mach
4))))
115 (<= (f2cl-lib:fref sspar-%data%
(2) ((1 4)) sspar-%offset%
) 0.0f0
)
116 (setf (f2cl-lib:fref sspar-%data%
(2) ((1 4)) sspar-%offset%
)
117 (coerce 1.0f0
'double-float
)))
119 (<= (f2cl-lib:fref sspar-%data%
(3) ((1 4)) sspar-%offset%
) 0.0f0
)
120 (setf (f2cl-lib:fref sspar-%data%
(3) ((1 4)) sspar-%offset%
)
121 (coerce 0.1f0
'double-float
)))
123 (<= (f2cl-lib:fref sspar-%data%
(4) ((1 4)) sspar-%offset%
) 0.0f0
)
124 (setf (f2cl-lib:fref sspar-%data%
(4) ((1 4)) sspar-%offset%
)
125 (coerce 7.0f0
'double-float
)))
127 ((>= iflagc
(f2cl-lib:int-sub
1))
132 (f2cl-lib:fdo
(iter 1 (f2cl-lib:int-add iter
1))
136 ((< (f2cl-lib:fref y
(np1) ((1 (f2cl-lib:int-add n
1)))) 0.0f0
)
141 (var-0 var-1 var-2 var-3 var-4 var-5 var-6 var-7 var-8
142 var-9 var-10 var-11 var-12 var-13 var-14 var-15 var-16
143 var-17 var-18 var-19 var-20 var-21 var-22 var-23 var-24
144 var-25 var-26 var-27
)
145 (stepqs n nfe iflagc lenqr start crash hold h wk relerr
146 abserr s y yp yold ypold a qr pivot pp rhovec z0 dz t$ work
148 (declare (ignore var-0 var-3 var-12 var-13 var-14 var-15 var-16
149 var-17 var-18 var-19 var-20 var-21 var-22
150 var-23 var-24 var-25 var-26 var-27
))
163 (f2cl-lib:fformat trace
164 ("~%" " STEP" 1 (("~5D")) "~3@T" "NFE =" 1
165 (("~5D")) "~3@T" "ARC LENGTH =" 1
166 (("~9,4,0,'*,F")) "~3@T" "LAMBDA =" 1
167 (("~7,4,0,'*,F")) "~5@T" "X vector:" "~%" t
168 ("~1@T" 6 (("~12,4,2,0,'*,,'EE"))) "~%")
172 (f2cl-lib:fref y-%data%
174 ((1 (f2cl-lib:int-add n
1)))
176 (do ((jw 1 (f2cl-lib:int-add jw
1))
178 ((> jw n
) (nreverse %ret
))
179 (declare (type f2cl-lib
:integer4 jw
))
181 (f2cl-lib:fref y-%data%
184 (f2cl-lib:int-add n
1)))
198 (setf ansre relerr
)))
199 (if (< arcae abserr
) (setf arcae abserr
))
200 (setf limit
(f2cl-lib:int-sub limit iter
))
204 (f2cl-lib:fref y-%data%
206 ((1 (f2cl-lib:int-add n
1)))
215 (dcopy np1 yold
1 t$
1)
217 (var-0 var-1 var-2 var-3 var-4 var-5 var-6 var-7 var-8 var-9
218 var-10 var-11 var-12 var-13 var-14 var-15 var-16 var-17 var-18
220 (rootqs n nfe iflagc lenqr ansre ansae y yp yold ypold a qr pivot
222 (f2cl-lib:array-slice work-%data%
233 (declare (ignore var-0 var-3 var-4 var-5 var-6 var-7 var-8 var-9
234 var-10 var-11 var-12 var-13 var-14 var-15 var-16
235 var-17 var-18 var-19
))
239 (if (> iflagc
0) (setf iflag iflagc
))
241 (setf wk
(coerce -
1.0f0
'double-float
))
242 (daxpy np1 wk t$
1 dz
1)
243 (setf arclen
(+ (- s hold
) (dnrm2 np1 dz
1)))
274 (in-package #-gcl
#:cl-user
#+gcl
"CL-USER")
275 #+#.
(cl:if
(cl:find-package
'#:f2cl
) '(and) '(or))
276 (eval-when (:load-toplevel
:compile-toplevel
:execute
)
277 (setf (gethash 'fortran-to-lisp
::fixpqs
278 fortran-to-lisp
::*f2cl-function-info
*)
279 (fortran-to-lisp::make-f2cl-finfo
280 :arg-types
'((fortran-to-lisp::integer4
) (array double-float
(*))
281 (fortran-to-lisp::integer4
) (double-float)
282 (double-float) (double-float) (double-float)
283 (fortran-to-lisp::integer4
) (array double-float
(*))
284 (fortran-to-lisp::integer4
) (double-float)
285 (array double-float
(*)) (array double-float
(*))
286 (array double-float
(*)) (array double-float
(*))
287 (fortran-to-lisp::integer4
)
288 (array fortran-to-lisp
::integer4
(*))
289 (array double-float
(*)) (array double-float
(*))
290 (array double-float
(*)) (array double-float
(*))
291 (array double-float
(*)) (array double-float
(*))
292 (array double-float
(*)) (array double-float
(*))
293 (array fortran-to-lisp
::integer4
(*)))
294 :return-values
'(nil nil fortran-to-lisp
::iflag
295 fortran-to-lisp
::arcre fortran-to-lisp
::arcae
296 fortran-to-lisp
::ansre nil nil nil
297 fortran-to-lisp
::nfe fortran-to-lisp
::arclen nil
298 nil nil nil nil nil nil nil nil nil nil nil nil nil
300 :calls
'(fortran-to-lisp::dnrm2 fortran-to-lisp
::daxpy
301 fortran-to-lisp
::dcopy fortran-to-lisp
::rootqs
302 fortran-to-lisp
::stepqs fortran-to-lisp
::d1mach
))))