Add some basic letsimp tests based on bug #3950
[maxima.git] / share / colnew / lisp / subfor.lisp
blob05a12709b53b8982789ef01e0555705dbeccce4d
1 ;;; Compiled by f2cl version:
2 ;;; ("f2cl1.l,v 1.221 2010/05/26 19:25:52 rtoy Exp $"
3 ;;; "f2cl2.l,v 1.37 2008/02/22 22:19:33 rtoy Exp $"
4 ;;; "f2cl3.l,v 1.6 2008/02/22 22:19:33 rtoy Exp $"
5 ;;; "f2cl4.l,v 1.7 2008/02/22 22:19:34 rtoy Exp $"
6 ;;; "f2cl5.l,v 1.204 2010/02/23 05:21:30 rtoy Exp $"
7 ;;; "f2cl6.l,v 1.48 2008/08/24 00:56:27 rtoy Exp $"
8 ;;; "macros.l,v 1.114 2010/05/17 01:42:14 rtoy Exp $")
10 ;;; Using Lisp CMU Common Lisp CVS Head 2010-05-25 18:21:07 (20A Unicode)
11 ;;;
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 :colnew)
20 (defun subfor (w ipivot nrow last$ x)
21 (declare (type (f2cl-lib:integer4) last$ nrow)
22 (type (array f2cl-lib:integer4 (*)) ipivot)
23 (type (array double-float (*)) x w))
24 (f2cl-lib:with-multi-array-data
25 ((w double-float w-%data% w-%offset%)
26 (x double-float x-%data% x-%offset%)
27 (ipivot f2cl-lib:integer4 ipivot-%data% ipivot-%offset%))
28 (prog ((t$ 0.0) (ip 0) (k 0) (kp1 0) (lstep 0) (i 0))
29 (declare (type (f2cl-lib:integer4) i lstep kp1 k ip)
30 (type (double-float) t$))
31 (if (= nrow 1) (go end_label))
32 (setf lstep (f2cl-lib:min0 (f2cl-lib:int-sub nrow 1) last$))
33 (f2cl-lib:fdo (k 1 (f2cl-lib:int-add k 1))
34 ((> k lstep) nil)
35 (tagbody
36 (setf kp1 (f2cl-lib:int-add k 1))
37 (setf ip
38 (f2cl-lib:fref ipivot-%data%
39 (k)
40 ((1 last$))
41 ipivot-%offset%))
42 (setf t$ (f2cl-lib:fref x-%data% (ip) ((1 nrow)) x-%offset%))
43 (setf (f2cl-lib:fref x-%data% (ip) ((1 nrow)) x-%offset%)
44 (f2cl-lib:fref x-%data% (k) ((1 nrow)) x-%offset%))
45 (setf (f2cl-lib:fref x-%data% (k) ((1 nrow)) x-%offset%) t$)
46 (if (= t$ 0.0) (go label20))
47 (f2cl-lib:fdo (i kp1 (f2cl-lib:int-add i 1))
48 ((> i nrow) nil)
49 (tagbody
50 label10
51 (setf (f2cl-lib:fref x-%data% (i) ((1 nrow)) x-%offset%)
52 (+ (f2cl-lib:fref x-%data% (i) ((1 nrow)) x-%offset%)
54 (f2cl-lib:fref w-%data%
55 (i k)
56 ((1 nrow) (1 last$))
57 w-%offset%)
58 t$)))))
59 label20))
60 label30
61 (go end_label)
62 end_label
63 (return (values nil nil nil nil nil)))))
65 (in-package #-gcl #:cl-user #+gcl "CL-USER")
66 #+#.(cl:if (cl:find-package '#:f2cl) '(and) '(or))
67 (eval-when (:load-toplevel :compile-toplevel :execute)
68 (setf (gethash 'fortran-to-lisp::subfor
69 fortran-to-lisp::*f2cl-function-info*)
70 (fortran-to-lisp::make-f2cl-finfo
71 :arg-types '((array double-float (*))
72 (array fortran-to-lisp::integer4 (*))
73 (fortran-to-lisp::integer4) (fortran-to-lisp::integer4)
74 (array double-float (*)))
75 :return-values '(nil nil nil nil nil)
76 :calls 'nil)))