
(/VERSIONCHECK 2) 

(DEFUN |ODESYS;solve;MVMU;1| (|mm| |v| |solve| $)
  (PROG (|k| |l| |m| |solVec| #1=#:G1861 |s| |nn| |er| |i| #2=#:G1860 |sol|
         |SolMatrix| #3=#:G1859 |part| |n| |sols| #4=#:G1857 |u| #5=#:G1858 |e|
         |rec|)
    (RETURN
     (SEQ
      (EXIT
       (SEQ
        (LETT |rec| (SPADCALL |mm| |v| (QREFELT $ 14))
              . #6=(|ODESYS;solve;MVMU;1|))
        (LETT |sols| NIL . #6#)
        (SEQ (LETT |e| NIL . #6#) (LETT #5# (QCDR |rec|) . #6#) G190
             (COND
              ((OR (ATOM #5#) (PROGN (LETT |e| (CAR #5#) . #6#) NIL))
               #7=(GO G191)))
             (SEQ
              (LETT |u| (SPADCALL (QVELT |e| 2) (QVELT |e| 3) |solve|) . #6#)
              (EXIT
               (COND
                ((QEQCAR |u| 1)
                 (PROGN (LETT #4# (CONS 1 "failed") . #6#) (GO #4#)))
                ('T (LETT |sols| (CONS (QCDR |u|) |sols|) . #6#)))))
             (LETT #5# (CDR #5#) . #6#) #8=(GO G190) G191 (EXIT NIL))
        (LETT |n| (QVSIZE (QCAR |rec|)) . #6#) (LETT |k| 0 . #6#)
        (LETT |i| 0 . #6#) (LETT |m| 0 . #6#)
        (LETT |part| (MAKEARR1 |n| (|spadConstant| $ 15)) . #6#)
        (SEQ (LETT |sol| NIL . #6#) (LETT #3# |sols| . #6#) G190
             (COND
              ((OR (ATOM #3#) (PROGN (LETT |sol| (CAR #3#) . #6#) NIL)) #7#))
             (SEQ
              (EXIT
               (LETT |m|
                     (+ |m|
                        (SPADCALL (CONS #'|ODESYS;solve;MVMU;1!0| $)
                                  (QCDR |sol|) (QREFELT $ 24)))
                     . #6#)))
             (LETT #3# (CDR #3#) . #6#) #8# G191 (EXIT NIL))
        (LETT |SolMatrix|
              (SPADCALL |n| |m| (|spadConstant| $ 15) (QREFELT $ 25)) . #6#)
        (LETT |m| 0 . #6#)
        (SEQ (LETT |sol| NIL . #6#) (LETT #2# (NREVERSE |sols|) . #6#) G190
             (COND
              ((OR (ATOM #2#) (PROGN (LETT |sol| (CAR #2#) . #6#) NIL)) #7#))
             (SEQ (LETT |i| (+ |i| 1) . #6#)
                  (LETT |er| (SPADCALL (QCDR |rec|) |i| (QREFELT $ 30)) . #6#)
                  (LETT |nn| (QVSIZE (QVELT |er| 1)) . #6#)
                  (SEQ (LETT |s| NIL . #6#) (LETT #1# (QCDR |sol|) . #6#) G190
                       (COND
                        ((OR (ATOM #1#) (PROGN (LETT |s| (CAR #1#) . #6#) NIL))
                         #7#))
                       (SEQ
                        (LETT |solVec| (MAKEARR1 |n| (|spadConstant| $ 15))
                              . #6#)
                        (SPADCALL |solVec| (+ |k| 1) |s| (QREFELT $ 31))
                        (SEQ (LETT |l| 2 . #6#) G190
                             (COND ((QSGREATERP |l| |nn|) #7#))
                             (SEQ
                              (EXIT
                               (SPADCALL |solVec| (+ |k| |l|)
                                         (SPADCALL (QREFELT $ 9)
                                                   (SPADCALL |solVec|
                                                             (- (+ |k| |l|) 1)
                                                             (QREFELT $ 32))
                                                   (QREFELT $ 33))
                                         (QREFELT $ 31))))
                             (LETT |l| (QSADD1 |l|) . #6#) #8# G191 (EXIT NIL))
                        (LETT |m| (+ |m| 1) . #6#)
                        (EXIT
                         (SPADCALL |SolMatrix| |m| |solVec| (QREFELT $ 34))))
                       (LETT #1# (CDR #1#) . #6#) #8# G191 (EXIT NIL))
                  (SPADCALL |part| (+ |k| 1) (QCAR |sol|) (QREFELT $ 31))
                  (SEQ (LETT |l| 2 . #6#) G190
                       (COND ((QSGREATERP |l| |nn|) #7#))
                       (SEQ
                        (EXIT
                         (SPADCALL |part| (+ |k| |l|)
                                   (SPADCALL
                                    (SPADCALL (QREFELT $ 9)
                                              (SPADCALL |part|
                                                        (- (+ |k| |l|) 1)
                                                        (QREFELT $ 32))
                                              (QREFELT $ 33))
                                    (SPADCALL (QVELT |er| 1) (- |l| 1)
                                              (QREFELT $ 32))
                                    (QREFELT $ 35))
                                   (QREFELT $ 31))))
                       (LETT |l| (QSADD1 |l|) . #6#) #8# G191 (EXIT NIL))
                  (EXIT (LETT |k| (+ |k| |nn|) . #6#)))
             (LETT #2# (CDR #2#) . #6#) #8# G191 (EXIT NIL))
        (EXIT
         (CONS 0
               (CONS (SPADCALL (QCAR |rec|) |part| (QREFELT $ 36))
                     (SPADCALL (QCAR |rec|) |SolMatrix| (QREFELT $ 37)))))))
      #4# (EXIT #4#))))) 

(DEFUN |ODESYS;solve;MVMU;1!0| (|f1| $)
  (COND
   ((SPADCALL |f1| (|spadConstant| $ 15) (QREFELT $ 18)) (|spadConstant| $ 19))
   ('T (|spadConstant| $ 20)))) 

(DEFUN |ODESYS;triangulate;MVR;2| (|m| |v| $)
  (PROG (|k| |ler| |h0| |j| #1=#:G1879 |sum| |op| #2=#:G1878 |n| #3=#:G1877
         |er| |l| |rat|)
    (RETURN
     (SEQ (LETT |k| 0 . #4=(|ODESYS;triangulate;MVR;2|))
          (LETT |rat|
                (SPADCALL |m| (|spadConstant| $ 45)
                          (CONS #'|ODESYS;triangulate;MVR;2!0|
                                (VECTOR $ (QREFELT $ 9)))
                          (QREFELT $ 50))
                . #4#)
          (LETT |l|
                (SPADCALL (QVELT |rat| 0)
                          (SPADCALL (QVELT |rat| 2) |v| (QREFELT $ 36))
                          (QREFELT $ 53))
                . #4#)
          (LETT |ler| NIL . #4#)
          (SEQ (LETT |er| NIL . #4#) (LETT #3# |l| . #4#) G190
               (COND
                ((OR (ATOM #3#) (PROGN (LETT |er| (CAR #3#) . #4#) NIL))
                 #5=(GO G191)))
               (SEQ (LETT |n| (QVSIZE (QCAR |er|)) . #4#)
                    (LETT |op| (|spadConstant| $ 16) . #4#)
                    (SEQ (LETT |j| 0 . #4#) (LETT #2# (- |n| 1) . #4#) G190
                         (COND ((QSGREATERP |j| #2#) #5#))
                         (SEQ
                          (EXIT
                           (LETT |op|
                                 (SPADCALL |op|
                                           (SPADCALL
                                            (SPADCALL (QCAR |er|) |n| (+ |j| 1)
                                                      (QREFELT $ 54))
                                            |j| (QREFELT $ 55))
                                           (QREFELT $ 56))
                                 . #4#)))
                         (LETT |j| (QSADD1 |j|) . #4#) #6=(GO G190) G191
                         (EXIT NIL))
                    (LETT |op|
                          (SPADCALL
                           (SPADCALL (|spadConstant| $ 26) |n| (QREFELT $ 55))
                           |op| (QREFELT $ 57))
                          . #4#)
                    (LETT |sum| (MAKEARR1 |n| (|spadConstant| $ 15)) . #4#)
                    (SEQ (LETT |j| 1 . #4#) (LETT #1# (- |n| 1) . #4#) G190
                         (COND ((QSGREATERP |j| #1#) #5#))
                         (SEQ
                          (EXIT
                           (SPADCALL |sum| (+ |j| 1)
                                     (SPADCALL
                                      (SPADCALL (QREFELT $ 9)
                                                (SPADCALL |sum| |j|
                                                          (QREFELT $ 32))
                                                (QREFELT $ 33))
                                      (SPADCALL (QCDR |er|) |j| (QREFELT $ 32))
                                      (QREFELT $ 58))
                                     (QREFELT $ 31))))
                         (LETT |j| (QSADD1 |j|) . #4#) #6# G191 (EXIT NIL))
                    (LETT |h0| (|spadConstant| $ 15) . #4#)
                    (SEQ (LETT |j| 1 . #4#) G190
                         (COND ((QSGREATERP |j| |n|) #5#))
                         (SEQ
                          (EXIT
                           (LETT |h0|
                                 (SPADCALL |h0|
                                           (SPADCALL
                                            (SPADCALL (QCAR |er|) |n| |j|
                                                      (QREFELT $ 54))
                                            (SPADCALL |sum| |j| (QREFELT $ 32))
                                            (QREFELT $ 59))
                                           (QREFELT $ 35))
                                 . #4#)))
                         (LETT |j| (QSADD1 |j|) . #4#) #6# G191 (EXIT NIL))
                    (LETT |h0|
                          (SPADCALL
                           (SPADCALL |h0|
                                     (SPADCALL (QREFELT $ 9)
                                               (SPADCALL |sum| |n|
                                                         (QREFELT $ 32))
                                               (QREFELT $ 33))
                                     (QREFELT $ 58))
                           (SPADCALL (QCDR |er|) |n| (QREFELT $ 32))
                           (QREFELT $ 58))
                          . #4#)
                    (LETT |ler|
                          (CONS (VECTOR (QCAR |er|) (QCDR |er|) |op| |h0|)
                                |ler|)
                          . #4#)
                    (EXIT (LETT |k| (+ |k| |n|) . #4#)))
               (LETT #3# (CDR #3#) . #4#) #6# G191 (EXIT NIL))
          (EXIT (CONS (QVELT |rat| 1) |ler|)))))) 

(DEFUN |ODESYS;triangulate;MVR;2!0| (|f1| $$)
  (PROG (|diff| $)
    (LETT |diff| (QREFELT $$ 1) . #1=(|ODESYS;triangulate;MVR;2|))
    (LETT $ (QREFELT $$ 0) . #1#)
    (RETURN
     (PROGN (SPADCALL (SPADCALL |diff| |f1| (QREFELT $ 33)) (QREFELT $ 46)))))) 

(DEFUN |ODESYS;backsolve| (|m| |v| |solve| $)
  (PROG (|bas| #1=#:G1908 |i| #2=#:G1907 |n| #3=#:G1906 |a| |eq| |c| |r|
         #4=#:G1904 #5=#:G1905 |b| |hom| #6=#:G1887 |part| |part?| |u| |dim|
         #7=#:G1885 |rec| |offset| |mr|)
    (RETURN
     (SEQ (LETT |r| (SPADCALL |m| (QREFELT $ 61)) . #8=(|ODESYS;backsolve|))
          (LETT |offset| (- (SPADCALL |v| (QREFELT $ 62)) (LETT |mr| 1 . #8#))
                . #8#)
          (SEQ G190
               (COND
                ((NULL
                  (COND ((< |r| |mr|) 'NIL)
                        ('T
                         (SPADCALL (ELT $ 63) (SPADCALL |m| |r| (QREFELT $ 65))
                                   (QREFELT $ 67)))))
                 #9=(GO G191)))
               (SEQ (EXIT (LETT |r| (- |r| 1) . #8#))) NIL #10=(GO G190) G191
               (EXIT NIL))
          (EXIT
           (COND ((< |r| |mr|) (|error| "backsolve: system has a 0 matrix"))
                 ((NULL
                   (EQL (LETT |c| (|ODESYS;firstnonzero| |m| |r| $) . #8#)
                        (SPADCALL |m| (QREFELT $ 68))))
                  (|error| "backsolve: undetermined system"))
                 ('T
                  (SEQ
                   (LETT |rec|
                         (SPADCALL (SPADCALL |m| |r| |c| (QREFELT $ 69))
                                   (SPADCALL |v| (+ |r| |offset|)
                                             (QREFELT $ 32))
                                   |solve|)
                         . #8#)
                   (LETT |dim|
                         (PROG1 (LETT #7# (+ (- |r| |mr|) 1) . #8#)
                           (|check-subtype| (>= #7# 0) '(|NonNegativeInteger|)
                                            #7#))
                         . #8#)
                   (SEQ
                    (LETT |part?| (QEQCAR (LETT |u| (QCAR |rec|) . #8#) 0)
                          . #8#)
                    (EXIT
                     (COND
                      (|part?|
                       (SEQ
                        (LETT |part| (MAKEARR1 |dim| (|spadConstant| $ 15))
                              . #8#)
                        (EXIT
                         (SPADCALL |part| (+ |r| |offset|)
                                   (PROG2
                                       (LETT #6# |u| . #8#)
                                       (QCDR #6#)
                                     (|check-union| (QEQCAR #6# 0)
                                                    (QREFELT $ 6) #6#))
                                   (QREFELT $ 31))))))))
                   (LETT |hom|
                         (SPADCALL |dim| (LENGTH (QCDR |rec|))
                                   (|spadConstant| $ 15) (QREFELT $ 25))
                         . #8#)
                   (SEQ (LETT |b| NIL . #8#) (LETT #5# (QCDR |rec|) . #8#)
                        (LETT |i| 1 . #8#)
                        (LETT #4# (SPADCALL |hom| (QREFELT $ 70)) . #8#) G190
                        (COND
                         ((OR (QSGREATERP |i| #4#) (ATOM #5#)
                              (PROGN (LETT |b| (CAR #5#) . #8#) NIL))
                          #9#))
                        (SEQ
                         (EXIT (SPADCALL |hom| |r| |i| |b| (QREFELT $ 71))))
                        (LETT |i|
                              (PROG1 (QSADD1 |i|) (LETT #5# (CDR #5#) . #8#))
                              . #8#)
                        #10# G191 (EXIT NIL))
                   (LETT |n| 1 . #8#)
                   (SEQ G190 (COND ((NULL (< |mr| |r|)) #9#))
                        (SEQ (LETT |r| (- |r| 1) . #8#)
                             (LETT |c| (- |c| 1) . #8#)
                             (COND
                              ((NULL
                                (EQL (|ODESYS;firstnonzero| |m| |r| $) |c|))
                               (EXIT
                                (|error| "backsolve: undetermined system"))))
                             (EXIT
                              (COND
                               ((< 0
                                   (SPADCALL
                                    (LETT |eq|
                                          (SPADCALL |m| |r| |c| (QREFELT $ 69))
                                          . #8#)
                                    (QREFELT $ 72)))
                                (|error| "backsolve: pivot of order > 0"))
                               ('T
                                (SEQ
                                 (LETT |a| (SPADCALL |eq| (QREFELT $ 73))
                                       . #8#)
                                 (COND
                                  (|part?|
                                   (SPADCALL |part| (+ |r| |offset|)
                                             (SPADCALL
                                              (SPADCALL
                                               (SPADCALL |v| (+ |r| |offset|)
                                                         (QREFELT $ 32))
                                               (|ODESYS;applyLodo| |m| |r|
                                                |part| |n| $)
                                               (QREFELT $ 35))
                                              |a| (QREFELT $ 74))
                                             (QREFELT $ 31))))
                                 (SEQ (LETT |i| 1 . #8#)
                                      (LETT #3# (SPADCALL |hom| (QREFELT $ 70))
                                            . #8#)
                                      G190 (COND ((QSGREATERP |i| #3#) #9#))
                                      (SEQ
                                       (EXIT
                                        (SPADCALL |hom| |r| |i|
                                                  (SPADCALL
                                                   (|ODESYS;applyLodo0| |m| |r|
                                                    |hom| |i| |n| $)
                                                   (QREFELT $ 46))
                                                  (QREFELT $ 71))))
                                      (LETT |i| (QSADD1 |i|) . #8#) #10# G191
                                      (EXIT NIL))
                                 (EXIT (LETT |n| (+ |n| 1) . #8#)))))))
                        NIL #10# G191 (EXIT NIL))
                   (LETT |bas|
                         (PROGN
                          (LETT #2# NIL . #8#)
                          (SEQ (LETT |i| 1 . #8#)
                               (LETT #1# (SPADCALL |hom| (QREFELT $ 70)) . #8#)
                               G190 (COND ((QSGREATERP |i| #1#) #9#))
                               (SEQ
                                (EXIT
                                 (LETT #2#
                                       (CONS
                                        (SPADCALL |hom| |i| (QREFELT $ 75))
                                        #2#)
                                       . #8#)))
                               (LETT |i| (QSADD1 |i|) . #8#) #10# G191
                               (EXIT (NREVERSE0 #2#))))
                         . #8#)
                   (EXIT
                    (COND (|part?| (CONS (CONS 0 |part|) |bas|))
                          ('T (CONS (CONS 1 "failed") |bas|)))))))))))) 

(DEFUN |ODESYS;solveInField;MVMR;4| (|m| |v| |solve| $)
  (PROG (|rec| #1=#:G1933 #2=#:G1947 |i| #3=#:G1946 |rc| |uu| |u| #4=#:G1945
         #5=#:G1944 |n|)
    (RETURN
     (SEQ
      (EXIT
       (SEQ
        (COND
         ((EQL (LETT |n| (QVSIZE |m|) . #6=(|ODESYS;solveInField;MVMR;4|))
               (SPADCALL |m| (QREFELT $ 76)))
          (SEQ
           (LETT |u|
                 (|ODESYS;M2F|
                  (SPADCALL
                   (SPADCALL
                    (PROGN
                     (LETT #5# (GETREFV |n|) . #6#)
                     (SEQ (LETT #4# 0 . #6#) (LETT |i| 1 . #6#) G190
                          (COND ((QSGREATERP |i| |n|) #7=(GO G191)))
                          (SEQ (EXIT (SETELT #5# #4# (QREFELT $ 9))))
                          (LETT |i|
                                (PROG1 (QSADD1 |i|)
                                  (LETT #4# (QSADD1 #4#) . #6#))
                                . #6#)
                          #8=(GO G190) G191 (EXIT NIL))
                     #5#)
                    (QREFELT $ 77))
                   |m| (QREFELT $ 78))
                  $)
                 . #6#)
           (EXIT
            (COND
             ((QEQCAR |u| 0)
              (PROGN
               (LETT #1#
                     (SEQ
                      (LETT |uu|
                            (SPADCALL (QCDR |u|) |v|
                                      (CONS #'|ODESYS;solveInField;MVMR;4!0|
                                            (VECTOR $ |solve|))
                                      (QREFELT $ 43))
                            . #6#)
                      (EXIT
                       (COND ((QEQCAR |uu| 1) (CONS (CONS 1 "failed") NIL))
                             ('T
                              (SEQ (LETT |rc| (QCDR |uu|) . #6#)
                                   (EXIT
                                    (CONS (CONS 0 (QCAR |rc|))
                                          (PROGN
                                           (LETT #3# NIL . #6#)
                                           (SEQ (LETT |i| 1 . #6#)
                                                (LETT #2#
                                                      (SPADCALL (QCDR |rc|)
                                                                (QREFELT $ 79))
                                                      . #6#)
                                                G190
                                                (COND
                                                 ((QSGREATERP |i| #2#) #7#))
                                                (SEQ
                                                 (EXIT
                                                  (LETT #3#
                                                        (CONS
                                                         (SPADCALL (QCDR |rc|)
                                                                   |i|
                                                                   (QREFELT $
                                                                            75))
                                                         #3#)
                                                        . #6#)))
                                                (LETT |i| (QSADD1 |i|) . #6#)
                                                #8# G191
                                                (EXIT (NREVERSE0 #3#)))))))))))
                     . #6#)
               (GO #1#))))))))
        (LETT |rec| (SPADCALL |m| |v| (QREFELT $ 81)) . #6#)
        (EXIT (|ODESYS;backsolve| (QCAR |rec|) (QCDR |rec|) |solve| $))))
      #1# (EXIT #1#))))) 

(DEFUN |ODESYS;solveInField;MVMR;4!0| (|l1| |f2| $$)
  (PROG (|solve| $)
    (LETT |solve| (QREFELT $$ 1) . #1=(|ODESYS;solveInField;MVMR;4|))
    (LETT $ (QREFELT $$ 0) . #1#)
    (RETURN (PROGN (|ODESYS;FSL2USL| (SPADCALL |l1| |f2| |solve|) $))))) 

(DEFUN |ODESYS;M2F| (|m| $)
  (PROG (#1=#:G1958 |u| #2=#:G1960 |j| #3=#:G1959 |i| |mf|)
    (RETURN
     (SEQ
      (EXIT
       (SEQ
        (LETT |mf|
              (SPADCALL (QVSIZE |m|) (SPADCALL |m| (QREFELT $ 76))
                        (|spadConstant| $ 15) (QREFELT $ 25))
              . #4=(|ODESYS;M2F|))
        (SEQ (LETT |i| 1 . #4#) (LETT #3# (SPADCALL |m| (QREFELT $ 61)) . #4#)
             G190 (COND ((QSGREATERP |i| #3#) #5=(GO G191)))
             (SEQ
              (EXIT
               (SEQ (LETT |j| 1 . #4#)
                    (LETT #2# (SPADCALL |m| (QREFELT $ 68)) . #4#) G190
                    (COND ((QSGREATERP |j| #2#) #5#))
                    (SEQ
                     (LETT |u|
                           (SPADCALL (SPADCALL |m| |i| |j| (QREFELT $ 69))
                                     (QREFELT $ 88))
                           . #4#)
                     (EXIT
                      (COND
                       ((QEQCAR |u| 1)
                        (PROGN (LETT #1# (CONS 1 "failed") . #4#) (GO #1#)))
                       ('T
                        (SPADCALL |mf| |i| |j| (QCDR |u|) (QREFELT $ 71))))))
                    (LETT |j| (QSADD1 |j|) . #4#) #6=(GO G190) G191
                    (EXIT NIL))))
             (LETT |i| (QSADD1 |i|) . #4#) #6# G191 (EXIT NIL))
        (EXIT (CONS 0 |mf|))))
      #1# (EXIT #1#))))) 

(DEFUN |ODESYS;FSL2USL| (|rec| $)
  (PROG (#1=#:G1967)
    (RETURN
     (COND ((QEQCAR (QCAR |rec|) 1) (CONS 1 "failed"))
           ('T
            (CONS 0
                  (CONS
                   (PROG2
                       (LETT #1# (QCAR |rec|) |ODESYS;FSL2USL|)
                       (QCDR #1#)
                     (|check-union| (QEQCAR #1# 0) (QREFELT $ 6) #1#))
                   (QCDR |rec|)))))))) 

(DEFUN |ODESYS;firstnonzero| (|m| |r| $)
  (PROG (#1=#:G1972 #2=#:G1974 #3=#:G1975 |c|)
    (RETURN
     (SEQ
      (EXIT
       (SEQ
        (SEQ
         (EXIT
          (SEQ (LETT |c| 1 . #4=(|ODESYS;firstnonzero|))
               (LETT #3# (SPADCALL |m| (QREFELT $ 68)) . #4#) G190
               (COND ((QSGREATERP |c| #3#) (GO G191)))
               (SEQ
                (EXIT
                 (COND
                  ((NULL
                    (SPADCALL (SPADCALL |m| |r| |c| (QREFELT $ 69))
                              (|spadConstant| $ 16) (QREFELT $ 89)))
                   (PROGN
                    (LETT #1# (PROGN (LETT #2# |c| . #4#) (GO #2#)) . #4#)
                    (GO #1#))))))
               (LETT |c| (QSADD1 |c|) . #4#) (GO G190) G191 (EXIT NIL)))
         #1# (EXIT #1#))
        (EXIT (|error| "firstnonzero: zero row"))))
      #2# (EXIT #2#))))) 

(DEFUN |ODESYS;applyLodo| (|m| |r| |v| |n| $)
  (PROG (|cv| |c| |ans| |i|)
    (RETURN
     (SEQ (LETT |ans| (|spadConstant| $ 15) . #1=(|ODESYS;applyLodo|))
          (LETT |c| (SPADCALL |m| (QREFELT $ 68)) . #1#)
          (LETT |cv| (QVSIZE |v|) . #1#)
          (SEQ (LETT |i| 1 . #1#) G190 (COND ((QSGREATERP |i| |n|) (GO G191)))
               (SEQ
                (LETT |ans|
                      (SPADCALL |ans|
                                (SPADCALL (SPADCALL |m| |r| |c| (QREFELT $ 69))
                                          (SPADCALL |v| |cv| (QREFELT $ 32))
                                          (QREFELT $ 33))
                                (QREFELT $ 58))
                      . #1#)
                (LETT |c| (- |c| 1) . #1#) (EXIT (LETT |cv| (- |cv| 1) . #1#)))
               (LETT |i| (QSADD1 |i|) . #1#) (GO G190) G191 (EXIT NIL))
          (EXIT |ans|))))) 

(DEFUN |ODESYS;applyLodo0| (|m| |r| |mm| |c| |n| $)
  (PROG (|rr| |cc| |ans| |i|)
    (RETURN
     (SEQ (LETT |ans| (|spadConstant| $ 15) . #1=(|ODESYS;applyLodo0|))
          (LETT |rr| (SPADCALL |mm| (QREFELT $ 90)) . #1#)
          (LETT |cc| (SPADCALL |m| (QREFELT $ 68)) . #1#)
          (SEQ (LETT |i| 1 . #1#) G190 (COND ((QSGREATERP |i| |n|) (GO G191)))
               (SEQ
                (LETT |ans|
                      (SPADCALL |ans|
                                (SPADCALL
                                 (SPADCALL |m| |r| |cc| (QREFELT $ 69))
                                 (SPADCALL |mm| |rr| |c| (QREFELT $ 54))
                                 (QREFELT $ 33))
                                (QREFELT $ 58))
                      . #1#)
                (LETT |cc| (- |cc| 1) . #1#)
                (EXIT (LETT |rr| (- |rr| 1) . #1#)))
               (LETT |i| (QSADD1 |i|) . #1#) (GO G190) G191 (EXIT NIL))
          (EXIT |ans|))))) 

(DEFUN |ODESYS;triangulate;MVR;10| (|m| |v| $)
  (PROG (|i| |k1| |b| |a| |l| |k| |x| |rown| #1=#:G1996 |j| |offset| |minr|
         |ncols| |nrows| |w|)
    (RETURN
     (SEQ
      (LETT |x| (SPADCALL |m| (QREFELT $ 91))
            . #2=(|ODESYS;triangulate;MVR;10|))
      (LETT |w| (SPADCALL |v| (QREFELT $ 92)) . #2#)
      (LETT |nrows| (SPADCALL |x| (QREFELT $ 61)) . #2#)
      (LETT |ncols| (SPADCALL |x| (QREFELT $ 68)) . #2#)
      (LETT |minr| (LETT |i| 1 . #2#) . #2#)
      (LETT |offset| (- (SPADCALL |w| (QREFELT $ 62)) |minr|) . #2#)
      (SEQ
       (EXIT
        (SEQ (LETT |j| 1 . #2#) G190
             (COND ((QSGREATERP |j| |ncols|) #3=(GO G191)))
             (SEQ
              (COND ((< |nrows| |i|) (PROGN (LETT #1# |x| . #2#) (GO #1#))))
              (LETT |rown| (- |minr| 1) . #2#)
              (SEQ (LETT |k| |i| . #2#) G190 (COND ((> |k| |nrows|) #3#))
                   (SEQ
                    (COND
                     ((NULL
                       (SPADCALL (SPADCALL |x| |k| |j| (QREFELT $ 69))
                                 (|spadConstant| $ 16) (QREFELT $ 89)))
                      (COND
                       ((OR (EQL |rown| (- |minr| 1))
                            (<
                             (SPADCALL (SPADCALL |x| |k| |j| (QREFELT $ 69))
                                       (QREFELT $ 72))
                             (SPADCALL (SPADCALL |x| |rown| |j| (QREFELT $ 69))
                                       (QREFELT $ 72))))
                        (LETT |rown| |k| . #2#)))))
                    (EXIT
                     (COND ((EQL |rown| (- |minr| 1)) "enuf")
                           ('T
                            (SEQ
                             (LETT |x| (SPADCALL |x| |i| |rown| (QREFELT $ 93))
                                   . #2#)
                             (EXIT
                              (SPADCALL |w| (+ |i| |offset|)
                                        (+ |rown| |offset|)
                                        (QREFELT $ 95))))))))
                   (LETT |k| (+ |k| 1) . #2#) #4=(GO G190) G191 (EXIT NIL))
              (SEQ (LETT |k| (+ |i| 1) . #2#) G190 (COND ((> |k| |nrows|) #3#))
                   (SEQ
                    (EXIT
                     (COND
                      ((COND
                        ((SPADCALL (SPADCALL |x| |k| |j| (QREFELT $ 69))
                                   (|spadConstant| $ 16) (QREFELT $ 89))
                         'NIL)
                        ('T 'T))
                       (SEQ
                        (LETT |l|
                              (SPADCALL (SPADCALL |x| |i| |j| (QREFELT $ 69))
                                        (SPADCALL |x| |k| |j| (QREFELT $ 69))
                                        (QREFELT $ 96))
                              . #2#)
                        (LETT |a|
                              (SPADCALL |l|
                                        (SPADCALL |x| |i| |j| (QREFELT $ 69))
                                        (QREFELT $ 97))
                              . #2#)
                        (LETT |b|
                              (SPADCALL |l|
                                        (SPADCALL |x| |k| |j| (QREFELT $ 69))
                                        (QREFELT $ 97))
                              . #2#)
                        (SEQ (LETT |k1| (+ |j| 1) . #2#) G190
                             (COND ((> |k1| |ncols|) #3#))
                             (SEQ
                              (EXIT
                               (SPADCALL |x| |k| |k1|
                                         (SPADCALL
                                          (SPADCALL |a|
                                                    (SPADCALL |x| |i| |k1|
                                                              (QREFELT $ 69))
                                                    (QREFELT $ 98))
                                          (SPADCALL |b|
                                                    (SPADCALL |x| |k| |k1|
                                                              (QREFELT $ 69))
                                                    (QREFELT $ 98))
                                          (QREFELT $ 57))
                                         (QREFELT $ 99))))
                             (LETT |k1| (+ |k1| 1) . #2#) #4# G191 (EXIT NIL))
                        (SPADCALL |x| |k| |j| (|spadConstant| $ 16)
                                  (QREFELT $ 99))
                        (EXIT
                         (SPADCALL |w| (+ |k| |offset|)
                                   (SPADCALL
                                    (SPADCALL |a|
                                              (SPADCALL |w| (+ |i| |offset|)
                                                        (QREFELT $ 32))
                                              (QREFELT $ 33))
                                    (SPADCALL |b|
                                              (SPADCALL |w| (+ |k| |offset|)
                                                        (QREFELT $ 32))
                                              (QREFELT $ 33))
                                    (QREFELT $ 35))
                                   (QREFELT $ 31))))))))
                   (LETT |k| (+ |k| 1) . #2#) #4# G191 (EXIT NIL))
              (EXIT (LETT |i| (+ |i| 1) . #2#)))
             (LETT |j| (QSADD1 |j|) . #2#) #4# G191 (EXIT NIL)))
       #1# (EXIT #1#))
      (EXIT (CONS |x| |w|)))))) 

(DEFUN |SystemODESolver| (&REST #1=#:G1999)
  (PROG ()
    (RETURN
     (PROG (#2=#:G2000)
       (RETURN
        (COND
         ((LETT #2#
                (|lassocShiftWithFunction| (|devaluateList| #1#)
                                           (HGET |$ConstructorCache|
                                                 '|SystemODESolver|)
                                           '|domainEqualList|)
                . #3=(|SystemODESolver|))
          (|CDRwithIncrement| #2#))
         ('T
          (UNWIND-PROTECT
              (PROG1 (APPLY (|function| |SystemODESolver;|) #1#)
                (LETT #2# T . #3#))
            (COND
             ((NOT #2#) (HREM |$ConstructorCache| '|SystemODESolver|))))))))))) 

(DEFUN |SystemODESolver;| (|#1| |#2|)
  (PROG (|pv$| $ |dv$| DV$2 DV$1)
    (RETURN
     (PROGN
      (LETT DV$1 (|devaluate| |#1|) . #1=(|SystemODESolver|))
      (LETT DV$2 (|devaluate| |#2|) . #1#)
      (LETT |dv$| (LIST '|SystemODESolver| DV$1 DV$2) . #1#)
      (LETT $ (GETREFV 100) . #1#)
      (QSETREFV $ 0 |dv$|)
      (QSETREFV $ 3 (LETT |pv$| (|buildPredVector| 0 0 NIL) . #1#))
      (|haddProp| |$ConstructorCache| '|SystemODESolver| (LIST DV$1 DV$2)
                  (CONS 1 $))
      (|stuffDomainSlots| $)
      (QSETREFV $ 6 |#1|)
      (QSETREFV $ 7 |#2|)
      (QSETREFV $ 9 (SPADCALL (QREFELT $ 8)))
      $)))) 

(MAKEPROP '|SystemODESolver| '|infovec|
          (LIST
           '#(NIL NIL NIL NIL NIL NIL (|local| |#1|) (|local| |#2|) (0 . D)
              '|diff|
              (|Record| (|:| C 12) (|:| |g| 13) (|:| |eq| 7) (|:| |rh| 6))
              (|Record| (|:| A 12) (|:| |eqs| 29)) (|Matrix| 6) (|Vector| 6)
              |ODESYS;triangulate;MVR;2| (4 . |Zero|) (8 . |Zero|) (|Boolean|)
              (12 . =) (18 . |false|) (22 . |true|) (|NonNegativeInteger|)
              (|Mapping| 17 6) (|List| 6) (26 . |count|) (32 . |new|)
              (39 . |One|) (43 . |One|) (|Integer|) (|List| 10) (47 . |elt|)
              (53 . |setelt|) (60 . |elt|) (66 . |elt|) (72 . |setColumn!|)
              (79 . -) (85 . *) (91 . *)
              (|Record| (|:| |particular| 13) (|:| |basis| 12))
              (|Union| 38 '"failed")
              (|Record| (|:| |particular| 6) (|:| |basis| 23))
              (|Union| 40 '"failed") (|Mapping| 41 7 6) |ODESYS;solve;MVMU;1|
              (|Automorphism| 6) (97 . |One|) (101 . -)
              (|Record| (|:| R 12) (|:| A 12) (|:| |Ainv| 12)) (|Mapping| 6 6)
              (|PseudoLinearNormalForm| 6) (106 . |normalForm|)
              (|Record| (|:| C 12) (|:| |g| 13)) (|List| 51)
              (113 . |companionBlocks|) (119 . |elt|) (126 . |monomial|)
              (132 . +) (138 . -) (144 . +) (150 . *) (|Matrix| 7)
              (156 . |maxRowIndex|) (161 . |minIndex|) (166 . |zero?|)
              (|Vector| 7) (171 . |row|) (|Mapping| 17 7) (177 . |every?|)
              (183 . |maxColIndex|) (188 . |elt|) (195 . |maxColIndex|)
              (200 . |setelt|) (208 . |degree|) (213 . |leadingCoefficient|)
              (218 . /) (224 . |column|) (230 . |ncols|)
              (235 . |diagonalMatrix|) (240 . -) (246 . |ncols|)
              (|Record| (|:| |mat| 60) (|:| |vec| 13))
              |ODESYS;triangulate;MVR;10| (|Union| 13 '"failed")
              (|Record| (|:| |particular| 82) (|:| |basis| (|List| 13)))
              (|Union| 6 '"failed")
              (|Record| (|:| |particular| 84) (|:| |basis| 23))
              (|Mapping| 85 7 6) |ODESYS;solveInField;MVMR;4|
              (251 . |retractIfCan|) (256 . =) (262 . |maxRowIndex|)
              (267 . |copy|) (272 . |copy|) (277 . |swapRows!|) (|Void|)
              (284 . |swap!|) (291 . |rightLcm|) (297 . |rightQuotient|)
              (303 . *) (309 . |setelt|))
           '#(|triangulate| 317 |solveInField| 329 |solve| 336) 'NIL
           (CONS (|makeByteWordVec2| 1 'NIL)
                 (CONS '#()
                       (CONS '#()
                             (|makeByteWordVec2| 99
                                                 '(0 7 0 8 0 6 0 15 0 7 0 16 2
                                                   6 17 0 0 18 0 17 0 19 0 17 0
                                                   20 2 23 21 22 0 24 3 12 0 21
                                                   21 6 25 0 6 0 26 0 7 0 27 2
                                                   29 10 0 28 30 3 13 6 0 28 6
                                                   31 2 13 6 0 28 32 2 7 6 0 6
                                                   33 3 12 0 0 28 13 34 2 6 0 0
                                                   0 35 2 12 13 0 13 36 2 12 0
                                                   0 0 37 0 44 0 45 1 6 0 0 46
                                                   3 49 47 12 44 48 50 2 49 52
                                                   12 13 53 3 12 6 0 28 28 54 2
                                                   7 0 6 21 55 2 7 0 0 0 56 2 7
                                                   0 0 0 57 2 6 0 0 0 58 2 6 0
                                                   0 0 59 1 60 28 0 61 1 13 28
                                                   0 62 1 7 17 0 63 2 60 64 0
                                                   28 65 2 64 17 66 0 67 1 60
                                                   28 0 68 3 60 7 0 28 28 69 1
                                                   12 28 0 70 4 12 6 0 28 28 6
                                                   71 1 7 21 0 72 1 7 6 0 73 2
                                                   6 0 0 0 74 2 12 13 0 28 75 1
                                                   60 21 0 76 1 60 0 64 77 2 60
                                                   0 0 0 78 1 12 21 0 79 1 7 84
                                                   0 88 2 7 17 0 0 89 1 12 28 0
                                                   90 1 60 0 0 91 1 13 0 0 92 3
                                                   60 0 0 28 28 93 3 13 94 0 28
                                                   28 95 2 7 0 0 0 96 2 7 0 0 0
                                                   97 2 7 0 0 0 98 4 60 7 0 28
                                                   28 7 99 2 0 80 60 13 81 2 0
                                                   11 12 13 14 3 0 83 60 13 86
                                                   87 3 0 39 12 13 42 43)))))
           '|lookupComplete|)) 
