
(/VERSIONCHECK 2) 

(DEFUN |SOLVEFOR;mapSolve;UPMR;1| (|p| |fn| $)
  (PROG (|locmap| |slist|)
    (RETURN
     (SEQ (LETT |locmap| |fn| . #1=(|SOLVEFOR;mapSolve;UPMR;1|))
          (SETELT $ 10 (IDENTITY |locmap|)) (SETELT $ 9 'T) (SETELT $ 8 NIL)
          (LETT |slist| (SPADCALL |p| (QREFELT $ 12)) . #1#) (SETELT $ 9 'NIL)
          (LETT |locmap| (LIST #'|SOLVEFOR;mapSolve;UPMR;1!0|) . #1#)
          (SETELT $ 10 (IDENTITY |locmap|))
          (EXIT (CONS |slist| (QREFELT $ 8))))))) 

(DEFUN |SOLVEFOR;mapSolve;UPMR;1!0| (|x| $$) (IDENTITY |x|)) 

(DEFUN |SOLVEFOR;part| (|s| $)
  (PROG (|t|)
    (RETURN
     (SEQ
      (COND
       ((QREFELT $ 9)
        (SEQ (LETT |t| (SPADCALL |s| (QREFELT $ 10)) |SOLVEFOR;part|)
             (EXIT
              (COND ((SPADCALL |t| |s| (QREFELT $ 18)) |s|)
                    (#1='T
                     (SEQ (SETELT $ 8 (CONS (CONS |t| |s|) (QREFELT $ 8)))
                          (EXIT |t|)))))))
       (#1# |s|)))))) 

(DEFUN |SOLVEFOR;intsolve| (|u| $)
  (PROG (|n|)
    (RETURN
     (SEQ
      (LETT |u|
            (QCAR
             (SPADCALL (SPADCALL (SPADCALL |u| (QREFELT $ 20)) (QREFELT $ 24))
                       1 (QREFELT $ 26)))
            . #1=(|SOLVEFOR;intsolve|))
      (LETT |n| (SPADCALL |u| (QREFELT $ 28)) . #1#)
      (EXIT
       (COND
        ((EQL |n| 1)
         (SPADCALL (SPADCALL |u| 1 (QREFELT $ 31))
                   (SPADCALL |u| 0 (QREFELT $ 31)) (QREFELT $ 34)))
        ((EQL |n| 2)
         (SPADCALL (SPADCALL |u| 2 (QREFELT $ 31))
                   (SPADCALL |u| 1 (QREFELT $ 31))
                   (SPADCALL |u| 0 (QREFELT $ 31)) (QREFELT $ 35)))
        ((EQL |n| 3)
         (SPADCALL (SPADCALL |u| 3 (QREFELT $ 31))
                   (SPADCALL |u| 2 (QREFELT $ 31))
                   (SPADCALL |u| 1 (QREFELT $ 31))
                   (SPADCALL |u| 0 (QREFELT $ 31)) (QREFELT $ 36)))
        ((EQL |n| 4)
         (SPADCALL (SPADCALL |u| 4 (QREFELT $ 31))
                   (SPADCALL |u| 3 (QREFELT $ 31))
                   (SPADCALL |u| 2 (QREFELT $ 31))
                   (SPADCALL |u| 1 (QREFELT $ 31))
                   (SPADCALL |u| 0 (QREFELT $ 31)) (QREFELT $ 37)))
        ('T
         (|error| "All sqfr factors of polynomial must be of degree < 5")))))))) 

(DEFUN |SOLVEFOR;solve;UPL;4| (|u| $)
  (PROG (|ls| #1=#:G1846 |i| |lsf| #2=#:G1845 |f|)
    (RETURN
     (SEQ (LETT |ls| NIL . #3=(|SOLVEFOR;solve;UPL;4|))
          (SEQ (LETT |f| NIL . #3#)
               (LETT #2#
                     (SPADCALL (SPADCALL |u| (QREFELT $ 20)) (QREFELT $ 24))
                     . #3#)
               G190
               (COND
                ((OR (ATOM #2#) (PROGN (LETT |f| (CAR #2#) . #3#) NIL))
                 #4=(GO G191)))
               (SEQ (LETT |lsf| (|SOLVEFOR;intsolve| (QCAR |f|) $) . #3#)
                    (EXIT
                     (SEQ (LETT |i| 1 . #3#) (LETT #1# (QCDR |f|) . #3#) G190
                          (COND ((QSGREATERP |i| #1#) #4#))
                          (SEQ (EXIT (LETT |ls| (APPEND |lsf| |ls|) . #3#)))
                          (LETT |i| (QSADD1 |i|) . #3#) #5=(GO G190) G191
                          (EXIT NIL))))
               (LETT #2# (CDR #2#) . #3#) #5# G191 (EXIT NIL))
          (EXIT |ls|))))) 

(DEFUN |SOLVEFOR;particularSolution;UPF;5| (|u| $)
  (PROG (|n|)
    (RETURN
     (SEQ
      (LETT |u|
            (QCAR
             (SPADCALL (SPADCALL (SPADCALL |u| (QREFELT $ 20)) (QREFELT $ 24))
                       1 (QREFELT $ 26)))
            . #1=(|SOLVEFOR;particularSolution;UPF;5|))
      (LETT |n| (SPADCALL |u| (QREFELT $ 28)) . #1#)
      (EXIT
       (COND
        ((EQL |n| 1)
         (SPADCALL (SPADCALL |u| 1 (QREFELT $ 31))
                   (SPADCALL |u| 0 (QREFELT $ 31)) (QREFELT $ 38)))
        ((EQL |n| 2)
         (SPADCALL (SPADCALL |u| 2 (QREFELT $ 31))
                   (SPADCALL |u| 1 (QREFELT $ 31))
                   (SPADCALL |u| 0 (QREFELT $ 31)) (QREFELT $ 39)))
        ((EQL |n| 3)
         (SPADCALL (SPADCALL |u| 3 (QREFELT $ 31))
                   (SPADCALL |u| 2 (QREFELT $ 31))
                   (SPADCALL |u| 1 (QREFELT $ 31))
                   (SPADCALL |u| 0 (QREFELT $ 31)) (QREFELT $ 40)))
        ((EQL |n| 4)
         (SPADCALL (SPADCALL |u| 4 (QREFELT $ 31))
                   (SPADCALL |u| 3 (QREFELT $ 31))
                   (SPADCALL |u| 2 (QREFELT $ 31))
                   (SPADCALL |u| 1 (QREFELT $ 31))
                   (SPADCALL |u| 0 (QREFELT $ 31)) (QREFELT $ 41)))
        ('T
         (|error| "All sqfr factors of polynomial must be of degree < 5")))))))) 

(DEFUN |SOLVEFOR;needDegree| (|n| |u| $)
  (COND ((EQL (SPADCALL |u| (QREFELT $ 28)) |n|) 'T)
        ('T
         (|error|
          (|concat| "Polynomial must be of degree " (|::| |n| (|String|))))))) 

(DEFUN |SOLVEFOR;needLcoef| (|cn| $)
  (COND
   ((SPADCALL |cn| (|spadConstant| $ 33) (QREFELT $ 18))
    (|error| "Leading coefficient must not be 0."))
   ('T 'T))) 

(DEFUN |SOLVEFOR;needChar0| ($)
  (COND ((EQL (SPADCALL (QREFELT $ 43)) 0) 'T)
        ('T (|error| "Formula defined only for fields of characteristic 0.")))) 

(DEFUN |SOLVEFOR;linear;UPL;9| (|u| $)
  (SEQ (|SOLVEFOR;needDegree| 1 |u| $)
       (EXIT
        (SPADCALL (SPADCALL |u| 1 (QREFELT $ 31))
                  (SPADCALL |u| 0 (QREFELT $ 31)) (QREFELT $ 34))))) 

(DEFUN |SOLVEFOR;quadratic;UPL;10| (|u| $)
  (SEQ (|SOLVEFOR;needDegree| 2 |u| $)
       (EXIT
        (SPADCALL (SPADCALL |u| 2 (QREFELT $ 31))
                  (SPADCALL |u| 1 (QREFELT $ 31))
                  (SPADCALL |u| 0 (QREFELT $ 31)) (QREFELT $ 35))))) 

(DEFUN |SOLVEFOR;cubic;UPL;11| (|u| $)
  (SEQ (|SOLVEFOR;needDegree| 3 |u| $)
       (EXIT
        (SPADCALL (SPADCALL |u| 3 (QREFELT $ 31))
                  (SPADCALL |u| 2 (QREFELT $ 31))
                  (SPADCALL |u| 1 (QREFELT $ 31))
                  (SPADCALL |u| 0 (QREFELT $ 31)) (QREFELT $ 36))))) 

(DEFUN |SOLVEFOR;quartic;UPL;12| (|u| $)
  (SEQ (|SOLVEFOR;needDegree| 4 |u| $)
       (EXIT
        (SPADCALL (SPADCALL |u| 4 (QREFELT $ 31))
                  (SPADCALL |u| 3 (QREFELT $ 31))
                  (SPADCALL |u| 2 (QREFELT $ 31))
                  (SPADCALL |u| 1 (QREFELT $ 31))
                  (SPADCALL |u| 0 (QREFELT $ 31)) (QREFELT $ 37))))) 

(DEFUN |SOLVEFOR;equ| (|x| |y| $)
  (COND
   ((QEQCAR (SPADCALL (SPADCALL |x| |y| (QREFELT $ 48)) (QREFELT $ 50)) 1) 'T)
   ('T 'NIL))) 

(DEFUN |SOLVEFOR;linear;2FL;14| (|c1| |c0| $)
  (SEQ (|SOLVEFOR;needLcoef| |c1| $)
       (EXIT
        (LIST (SPADCALL (SPADCALL |c0| |c1| (QREFELT $ 51)) (QREFELT $ 52)))))) 

(DEFUN |SOLVEFOR;aLinear;3F;15| (|c1| |c0| $)
  (|SPADfirst| (SPADCALL |c1| |c0| (QREFELT $ 34)))) 

(DEFUN |SOLVEFOR;quadratic;3FL;16| (|c2| |c1| |c0| $)
  (PROG (D)
    (RETURN
     (SEQ (|SOLVEFOR;needLcoef| |c2| $) (|SOLVEFOR;needChar0| $)
          (EXIT
           (COND
            ((SPADCALL |c0| (|spadConstant| $ 33) (QREFELT $ 18))
             (CONS (|spadConstant| $ 33) (SPADCALL |c2| |c1| (QREFELT $ 34))))
            ((SPADCALL |c1| (|spadConstant| $ 33) (QREFELT $ 18))
             (LIST
              (SPADCALL
               (SPADCALL (SPADCALL |c0| |c2| (QREFELT $ 51)) (QREFELT $ 52))
               (SPADCALL 1 2 (QREFELT $ 54)) (QREFELT $ 55))
              (SPADCALL
               (SPADCALL
                (SPADCALL (SPADCALL |c0| |c2| (QREFELT $ 51)) (QREFELT $ 52))
                (SPADCALL 1 2 (QREFELT $ 54)) (QREFELT $ 55))
               (QREFELT $ 52))))
            ('T
             (SEQ
              (LETT D
                    (SPADCALL
                     (|SOLVEFOR;part|
                      (SPADCALL (SPADCALL |c1| 2 (QREFELT $ 57))
                                (SPADCALL (SPADCALL 4 |c2| (QREFELT $ 58)) |c0|
                                          (QREFELT $ 59))
                                (QREFELT $ 48))
                      $)
                     (SPADCALL 1 2 (QREFELT $ 54)) (QREFELT $ 55))
                    |SOLVEFOR;quadratic;3FL;16|)
              (EXIT
               (LIST
                (SPADCALL
                 (SPADCALL (SPADCALL |c1| (QREFELT $ 52)) D (QREFELT $ 60))
                 (SPADCALL 2 |c2| (QREFELT $ 58)) (QREFELT $ 51))
                (SPADCALL
                 (SPADCALL (SPADCALL |c1| (QREFELT $ 52)) D (QREFELT $ 48))
                 (SPADCALL 2 |c2| (QREFELT $ 58)) (QREFELT $ 51)))))))))))) 

(DEFUN |SOLVEFOR;aQuadratic;4F;17| (|c2| |c1| |c0| $)
  (PROG (D)
    (RETURN
     (SEQ (|SOLVEFOR;needLcoef| |c2| $) (|SOLVEFOR;needChar0| $)
          (EXIT
           (COND
            ((SPADCALL |c0| (|spadConstant| $ 33) (QREFELT $ 18))
             (|spadConstant| $ 33))
            ((SPADCALL |c1| (|spadConstant| $ 33) (QREFELT $ 18))
             (SPADCALL
              (SPADCALL (SPADCALL |c0| |c2| (QREFELT $ 51)) (QREFELT $ 52))
              (SPADCALL 1 2 (QREFELT $ 54)) (QREFELT $ 55)))
            ('T
             (SEQ
              (LETT D
                    (SPADCALL
                     (|SOLVEFOR;part|
                      (SPADCALL (SPADCALL |c1| 2 (QREFELT $ 57))
                                (SPADCALL (SPADCALL 4 |c2| (QREFELT $ 58)) |c0|
                                          (QREFELT $ 59))
                                (QREFELT $ 48))
                      $)
                     (SPADCALL 1 2 (QREFELT $ 54)) (QREFELT $ 55))
                    |SOLVEFOR;aQuadratic;4F;17|)
              (EXIT
               (SPADCALL
                (SPADCALL (SPADCALL |c1| (QREFELT $ 52)) D (QREFELT $ 60))
                (SPADCALL 2 |c2| (QREFELT $ 58)) (QREFELT $ 51))))))))))) 

(DEFUN |SOLVEFOR;cubic;4FL;18| (|c3| |c2| |c1| |c0| $)
  (PROG (#1=#:G1892 |u| #2=#:G1891 S D R Q #3=#:G1890 #4=#:G1889 P #5=#:G1888
         #6=#:G1887 |a3| |a2| |a1|)
    (RETURN
     (SEQ (|SOLVEFOR;needLcoef| |c3| $) (|SOLVEFOR;needChar0| $)
          (EXIT
           (COND
            ((SPADCALL |c0| (|spadConstant| $ 33) (QREFELT $ 18))
             (CONS (|spadConstant| $ 33)
                   (SPADCALL |c3| |c2| |c1| (QREFELT $ 35))))
            (#7='T
             (SEQ
              (LETT |a1| (SPADCALL |c2| |c3| (QREFELT $ 51))
                    . #8=(|SOLVEFOR;cubic;4FL;18|))
              (LETT |a2| (SPADCALL |c1| |c3| (QREFELT $ 51)) . #8#)
              (LETT |a3| (SPADCALL |c0| |c3| (QREFELT $ 51)) . #8#)
              (COND
               ((SPADCALL |a1| (|spadConstant| $ 33) (QREFELT $ 18))
                (COND
                 ((SPADCALL |a2| (|spadConstant| $ 33) (QREFELT $ 18))
                  (EXIT
                   (PROGN
                    (LETT #6# NIL . #8#)
                    (SEQ (LETT |u| NIL . #8#)
                         (LETT #5#
                               (LIST (|spadConstant| $ 30) (QREFELT $ 62)
                                     (SPADCALL (QREFELT $ 62) 2
                                               (QREFELT $ 57)))
                               . #8#)
                         G190
                         (COND
                          ((OR (ATOM #5#)
                               (PROGN (LETT |u| (CAR #5#) . #8#) NIL))
                           #9=(GO G191)))
                         (SEQ
                          (EXIT
                           (LETT #6#
                                 (CONS
                                  (SPADCALL |u|
                                            (SPADCALL
                                             (SPADCALL |a3| (QREFELT $ 52))
                                             (SPADCALL 1 3 (QREFELT $ 54))
                                             (QREFELT $ 55))
                                            (QREFELT $ 59))
                                  #6#)
                                 . #8#)))
                         (LETT #5# (CDR #5#) . #8#) #10=(GO G190) G191
                         (EXIT (NREVERSE0 #6#)))))))))
              (LETT P
                    (|SOLVEFOR;part|
                     (SPADCALL
                      (SPADCALL |a1| (SPADCALL 3 (QREFELT $ 61))
                                (QREFELT $ 51))
                      (QREFELT $ 52))
                     $)
                    . #8#)
              (EXIT
               (COND
                ((|SOLVEFOR;equ| (SPADCALL |a1| 2 (QREFELT $ 57))
                  (SPADCALL 3 |a2| (QREFELT $ 58)) $)
                 (SEQ
                  (LETT S
                        (|SOLVEFOR;part|
                         (SPADCALL
                          (SPADCALL (SPADCALL |a3| (QREFELT $ 52))
                                    (SPADCALL (SPADCALL |a1| 3 (QREFELT $ 57))
                                              (SPADCALL 27 (QREFELT $ 61))
                                              (QREFELT $ 51))
                                    (QREFELT $ 60))
                          (SPADCALL 1 3 (QREFELT $ 54)) (QREFELT $ 55))
                         $)
                        . #8#)
                  (EXIT
                   (PROGN
                    (LETT #4# NIL . #8#)
                    (SEQ (LETT |u| NIL . #8#)
                         (LETT #3#
                               (LIST (|spadConstant| $ 30) (QREFELT $ 62)
                                     (SPADCALL (QREFELT $ 62) 2
                                               (QREFELT $ 57)))
                               . #8#)
                         G190
                         (COND
                          ((OR (ATOM #3#)
                               (PROGN (LETT |u| (CAR #3#) . #8#) NIL))
                           #9#))
                         (SEQ
                          (EXIT
                           (LETT #4#
                                 (CONS
                                  (SPADCALL P (SPADCALL S |u| (QREFELT $ 59))
                                            (QREFELT $ 60))
                                  #4#)
                                 . #8#)))
                         (LETT #3# (CDR #3#) . #8#) #10# G191
                         (EXIT (NREVERSE0 #4#)))))))
                (#7#
                 (SEQ
                  (LETT Q
                        (|SOLVEFOR;part|
                         (SPADCALL
                          (SPADCALL (SPADCALL 3 |a2| (QREFELT $ 58))
                                    (SPADCALL |a1| 2 (QREFELT $ 57))
                                    (QREFELT $ 48))
                          (SPADCALL 9 (QREFELT $ 61)) (QREFELT $ 51))
                         $)
                        . #8#)
                  (LETT R
                        (|SOLVEFOR;part|
                         (SPADCALL
                          (SPADCALL
                           (SPADCALL
                            (SPADCALL (SPADCALL 9 |a1| (QREFELT $ 58)) |a2|
                                      (QREFELT $ 59))
                            (SPADCALL 27 |a3| (QREFELT $ 58)) (QREFELT $ 48))
                           (SPADCALL 2 (SPADCALL |a1| 3 (QREFELT $ 57))
                                     (QREFELT $ 58))
                           (QREFELT $ 48))
                          (SPADCALL 54 (QREFELT $ 61)) (QREFELT $ 51))
                         $)
                        . #8#)
                  (LETT D
                        (SPADCALL
                         (|SOLVEFOR;part|
                          (SPADCALL (SPADCALL Q 3 (QREFELT $ 57))
                                    (SPADCALL R 2 (QREFELT $ 57))
                                    (QREFELT $ 60))
                          $)
                         (SPADCALL 1 2 (QREFELT $ 54)) (QREFELT $ 55))
                        . #8#)
                  (LETT S
                        (SPADCALL
                         (|SOLVEFOR;part| (SPADCALL R D (QREFELT $ 60)) $)
                         (SPADCALL 1 3 (QREFELT $ 54)) (QREFELT $ 55))
                        . #8#)
                  (EXIT
                   (PROGN
                    (LETT #2# NIL . #8#)
                    (SEQ (LETT |u| NIL . #8#)
                         (LETT #1#
                               (LIST (|spadConstant| $ 30) (QREFELT $ 62)
                                     (SPADCALL (QREFELT $ 62) 2
                                               (QREFELT $ 57)))
                               . #8#)
                         G190
                         (COND
                          ((OR (ATOM #1#)
                               (PROGN (LETT |u| (CAR #1#) . #8#) NIL))
                           #9#))
                         (SEQ
                          (EXIT
                           (LETT #2#
                                 (CONS
                                  (SPADCALL
                                   (SPADCALL P (SPADCALL S |u| (QREFELT $ 59))
                                             (QREFELT $ 60))
                                   (SPADCALL Q (SPADCALL S |u| (QREFELT $ 59))
                                             (QREFELT $ 51))
                                   (QREFELT $ 48))
                                  #2#)
                                 . #8#)))
                         (LETT #1# (CDR #1#) . #8#) #10# G191
                         (EXIT (NREVERSE0 #2#))))))))))))))))) 

(DEFUN |SOLVEFOR;aCubic;5F;19| (|c3| |c2| |c1| |c0| $)
  (PROG (S D R Q P |a3| |a2| |a1|)
    (RETURN
     (SEQ (|SOLVEFOR;needLcoef| |c3| $) (|SOLVEFOR;needChar0| $)
          (EXIT
           (COND
            ((SPADCALL |c0| (|spadConstant| $ 33) (QREFELT $ 18))
             (|spadConstant| $ 33))
            (#1='T
             (SEQ
              (LETT |a1| (SPADCALL |c2| |c3| (QREFELT $ 51))
                    . #2=(|SOLVEFOR;aCubic;5F;19|))
              (LETT |a2| (SPADCALL |c1| |c3| (QREFELT $ 51)) . #2#)
              (LETT |a3| (SPADCALL |c0| |c3| (QREFELT $ 51)) . #2#)
              (COND
               ((SPADCALL |a1| (|spadConstant| $ 33) (QREFELT $ 18))
                (COND
                 ((SPADCALL |a2| (|spadConstant| $ 33) (QREFELT $ 18))
                  (EXIT
                   (SPADCALL (SPADCALL |a3| (QREFELT $ 52))
                             (SPADCALL 1 3 (QREFELT $ 54)) (QREFELT $ 55)))))))
              (LETT P
                    (|SOLVEFOR;part|
                     (SPADCALL
                      (SPADCALL |a1| (SPADCALL 3 (QREFELT $ 61))
                                (QREFELT $ 51))
                      (QREFELT $ 52))
                     $)
                    . #2#)
              (EXIT
               (COND
                ((|SOLVEFOR;equ| (SPADCALL |a1| 2 (QREFELT $ 57))
                  (SPADCALL 3 |a2| (QREFELT $ 58)) $)
                 (SEQ
                  (LETT S
                        (|SOLVEFOR;part|
                         (SPADCALL
                          (SPADCALL (SPADCALL |a3| (QREFELT $ 52))
                                    (SPADCALL (SPADCALL |a1| 3 (QREFELT $ 57))
                                              (SPADCALL 27 (QREFELT $ 61))
                                              (QREFELT $ 51))
                                    (QREFELT $ 60))
                          (SPADCALL 1 3 (QREFELT $ 54)) (QREFELT $ 55))
                         $)
                        . #2#)
                  (EXIT (SPADCALL P S (QREFELT $ 60)))))
                (#1#
                 (SEQ
                  (LETT Q
                        (|SOLVEFOR;part|
                         (SPADCALL
                          (SPADCALL (SPADCALL 3 |a2| (QREFELT $ 58))
                                    (SPADCALL |a1| 2 (QREFELT $ 57))
                                    (QREFELT $ 48))
                          (SPADCALL 9 (QREFELT $ 61)) (QREFELT $ 51))
                         $)
                        . #2#)
                  (LETT R
                        (|SOLVEFOR;part|
                         (SPADCALL
                          (SPADCALL
                           (SPADCALL
                            (SPADCALL (SPADCALL 9 |a1| (QREFELT $ 58)) |a2|
                                      (QREFELT $ 59))
                            (SPADCALL 27 |a3| (QREFELT $ 58)) (QREFELT $ 48))
                           (SPADCALL 2 (SPADCALL |a1| 3 (QREFELT $ 57))
                                     (QREFELT $ 58))
                           (QREFELT $ 48))
                          (SPADCALL 54 (QREFELT $ 61)) (QREFELT $ 51))
                         $)
                        . #2#)
                  (LETT D
                        (SPADCALL
                         (|SOLVEFOR;part|
                          (SPADCALL (SPADCALL Q 3 (QREFELT $ 57))
                                    (SPADCALL R 2 (QREFELT $ 57))
                                    (QREFELT $ 60))
                          $)
                         (SPADCALL 1 2 (QREFELT $ 54)) (QREFELT $ 55))
                        . #2#)
                  (LETT S
                        (SPADCALL
                         (|SOLVEFOR;part| (SPADCALL R D (QREFELT $ 60)) $)
                         (SPADCALL 1 3 (QREFELT $ 54)) (QREFELT $ 55))
                        . #2#)
                  (EXIT
                   (SPADCALL (SPADCALL P S (QREFELT $ 60))
                             (SPADCALL Q S (QREFELT $ 51))
                             (QREFELT $ 48))))))))))))))) 

(DEFUN |SOLVEFOR;quartic;5FL;20| (|c4| |c3| |c2| |c1| |c0| $)
  (PROG (#1=#:G1904 |s| #2=#:G1903 |slist| |rt| |t0| |r| |q| |p| |a4| |a3| |a2|
         |a1|)
    (RETURN
     (SEQ (|SOLVEFOR;needLcoef| |c4| $) (|SOLVEFOR;needChar0| $)
          (EXIT
           (COND
            ((SPADCALL |c0| (|spadConstant| $ 33) (QREFELT $ 18))
             (CONS (|spadConstant| $ 33)
                   (SPADCALL |c4| |c3| |c2| |c1| (QREFELT $ 36))))
            (#3='T
             (SEQ
              (LETT |a1| (SPADCALL |c3| |c4| (QREFELT $ 51))
                    . #4=(|SOLVEFOR;quartic;5FL;20|))
              (LETT |a2| (SPADCALL |c2| |c4| (QREFELT $ 51)) . #4#)
              (LETT |a3| (SPADCALL |c1| |c4| (QREFELT $ 51)) . #4#)
              (LETT |a4| (SPADCALL |c0| |c4| (QREFELT $ 51)) . #4#)
              (COND
               ((SPADCALL |a1| (|spadConstant| $ 33) (QREFELT $ 18))
                (COND
                 ((SPADCALL |a2| (|spadConstant| $ 33) (QREFELT $ 18))
                  (COND
                   ((SPADCALL |a3| (|spadConstant| $ 33) (QREFELT $ 18))
                    (EXIT
                     (APPEND
                      (SPADCALL (|spadConstant| $ 30) (|spadConstant| $ 33)
                                (SPADCALL (SPADCALL |a4| (QREFELT $ 52))
                                          (SPADCALL 1 2 (QREFELT $ 54))
                                          (QREFELT $ 55))
                                (QREFELT $ 35))
                      (SPADCALL (|spadConstant| $ 30) (|spadConstant| $ 33)
                                (SPADCALL
                                 (SPADCALL (SPADCALL |a4| (QREFELT $ 52))
                                           (SPADCALL 1 2 (QREFELT $ 54))
                                           (QREFELT $ 55))
                                 (QREFELT $ 52))
                                (QREFELT $ 35))))))))))
              (LETT |p|
                    (|SOLVEFOR;part|
                     (SPADCALL |a2|
                               (SPADCALL
                                (SPADCALL (SPADCALL 3 |a1| (QREFELT $ 58)) |a1|
                                          (QREFELT $ 59))
                                (SPADCALL 8 (QREFELT $ 61)) (QREFELT $ 51))
                               (QREFELT $ 48))
                     $)
                    . #4#)
              (LETT |q|
                    (|SOLVEFOR;part|
                     (SPADCALL
                      (SPADCALL |a3|
                                (SPADCALL (SPADCALL |a1| |a2| (QREFELT $ 59))
                                          (SPADCALL 2 (QREFELT $ 61))
                                          (QREFELT $ 51))
                                (QREFELT $ 48))
                      (SPADCALL (SPADCALL |a1| 3 (QREFELT $ 57))
                                (SPADCALL 8 (QREFELT $ 61)) (QREFELT $ 51))
                      (QREFELT $ 60))
                     $)
                    . #4#)
              (LETT |r|
                    (|SOLVEFOR;part|
                     (SPADCALL
                      (SPADCALL
                       (SPADCALL |a4|
                                 (SPADCALL (SPADCALL |a1| |a3| (QREFELT $ 59))
                                           (SPADCALL 4 (QREFELT $ 61))
                                           (QREFELT $ 51))
                                 (QREFELT $ 48))
                       (SPADCALL
                        (SPADCALL (SPADCALL |a1| 2 (QREFELT $ 57)) |a2|
                                  (QREFELT $ 59))
                        (SPADCALL 16 (QREFELT $ 61)) (QREFELT $ 51))
                       (QREFELT $ 60))
                      (SPADCALL
                       (SPADCALL 3 (SPADCALL |a1| 4 (QREFELT $ 57))
                                 (QREFELT $ 58))
                       (SPADCALL 256 (QREFELT $ 61)) (QREFELT $ 51))
                      (QREFELT $ 48))
                     $)
                    . #4#)
              (COND
               ((|SOLVEFOR;equ| |q| (|spadConstant| $ 33) $)
                (LETT |t0|
                      (|SOLVEFOR;part|
                       (SPADCALL 2
                                 (SPADCALL |r| (SPADCALL 1 2 (QREFELT $ 54))
                                           (QREFELT $ 55))
                                 (QREFELT $ 58))
                       $)
                      . #4#))
               (#3#
                (LETT |t0|
                      (SPADCALL (|spadConstant| $ 30)
                                (SPADCALL |p| (QREFELT $ 52))
                                (SPADCALL (SPADCALL 4 |r| (QREFELT $ 58))
                                          (QREFELT $ 52))
                                (SPADCALL
                                 (SPADCALL (SPADCALL 4 |p| (QREFELT $ 58)) |r|
                                           (QREFELT $ 59))
                                 (SPADCALL |q| 2 (QREFELT $ 57))
                                 (QREFELT $ 48))
                                (QREFELT $ 40))
                      . #4#)))
              (LETT |rt|
                    (SPADCALL
                     (|SOLVEFOR;part| (SPADCALL |t0| |p| (QREFELT $ 48)) $)
                     (SPADCALL 1 2 (QREFELT $ 54)) (QREFELT $ 55))
                    . #4#)
              (LETT |slist|
                    (APPEND
                     (SPADCALL (|spadConstant| $ 30) |rt|
                               (SPADCALL
                                (SPADCALL
                                 (SPADCALL (SPADCALL |q| |rt| (QREFELT $ 51))
                                           (QREFELT $ 52))
                                 |t0| (QREFELT $ 60))
                                (SPADCALL 2 (QREFELT $ 61)) (QREFELT $ 51))
                               (QREFELT $ 35))
                     (SPADCALL (|spadConstant| $ 30)
                               (SPADCALL |rt| (QREFELT $ 52))
                               (SPADCALL
                                (SPADCALL (SPADCALL |q| |rt| (QREFELT $ 51))
                                          |t0| (QREFELT $ 60))
                                (SPADCALL 2 (QREFELT $ 61)) (QREFELT $ 51))
                               (QREFELT $ 35)))
                    . #4#)
              (EXIT
               (PROGN
                (LETT #2# NIL . #4#)
                (SEQ (LETT |s| NIL . #4#) (LETT #1# |slist| . #4#) G190
                     (COND
                      ((OR (ATOM #1#) (PROGN (LETT |s| (CAR #1#) . #4#) NIL))
                       (GO G191)))
                     (SEQ
                      (EXIT
                       (LETT #2#
                             (CONS
                              (SPADCALL |s|
                                        (SPADCALL |a1|
                                                  (SPADCALL 4 (QREFELT $ 61))
                                                  (QREFELT $ 51))
                                        (QREFELT $ 48))
                              #2#)
                             . #4#)))
                     (LETT #1# (CDR #1#) . #4#) (GO G190) G191
                     (EXIT (NREVERSE0 #2#))))))))))))) 

(DEFUN |SOLVEFOR;aQuartic;6F;21| (|c4| |c3| |c2| |c1| |c0| $)
  (PROG (|s| |rt| |t0| |r| |q| |p| |a4| |a3| |a2| |a1|)
    (RETURN
     (SEQ (|SOLVEFOR;needLcoef| |c4| $) (|SOLVEFOR;needChar0| $)
          (EXIT
           (COND
            ((SPADCALL |c0| (|spadConstant| $ 33) (QREFELT $ 18))
             (|spadConstant| $ 33))
            (#1='T
             (SEQ
              (LETT |a1| (SPADCALL |c3| |c4| (QREFELT $ 51))
                    . #2=(|SOLVEFOR;aQuartic;6F;21|))
              (LETT |a2| (SPADCALL |c2| |c4| (QREFELT $ 51)) . #2#)
              (LETT |a3| (SPADCALL |c1| |c4| (QREFELT $ 51)) . #2#)
              (LETT |a4| (SPADCALL |c0| |c4| (QREFELT $ 51)) . #2#)
              (COND
               ((SPADCALL |a1| (|spadConstant| $ 33) (QREFELT $ 18))
                (COND
                 ((SPADCALL |a2| (|spadConstant| $ 33) (QREFELT $ 18))
                  (COND
                   ((SPADCALL |a3| (|spadConstant| $ 33) (QREFELT $ 18))
                    (EXIT
                     (SPADCALL (SPADCALL |a4| (QREFELT $ 52))
                               (SPADCALL 1 4 (QREFELT $ 54))
                               (QREFELT $ 55)))))))))
              (LETT |p|
                    (|SOLVEFOR;part|
                     (SPADCALL |a2|
                               (SPADCALL
                                (SPADCALL (SPADCALL 3 |a1| (QREFELT $ 58)) |a1|
                                          (QREFELT $ 59))
                                (SPADCALL 8 (QREFELT $ 61)) (QREFELT $ 51))
                               (QREFELT $ 48))
                     $)
                    . #2#)
              (LETT |q|
                    (|SOLVEFOR;part|
                     (SPADCALL
                      (SPADCALL |a3|
                                (SPADCALL (SPADCALL |a1| |a2| (QREFELT $ 59))
                                          (SPADCALL 2 (QREFELT $ 61))
                                          (QREFELT $ 51))
                                (QREFELT $ 48))
                      (SPADCALL
                       (SPADCALL (SPADCALL |a1| 2 (QREFELT $ 57)) |a1|
                                 (QREFELT $ 59))
                       (SPADCALL 8 (QREFELT $ 61)) (QREFELT $ 51))
                      (QREFELT $ 60))
                     $)
                    . #2#)
              (LETT |r|
                    (|SOLVEFOR;part|
                     (SPADCALL
                      (SPADCALL
                       (SPADCALL |a4|
                                 (SPADCALL (SPADCALL |a1| |a3| (QREFELT $ 59))
                                           (SPADCALL 4 (QREFELT $ 61))
                                           (QREFELT $ 51))
                                 (QREFELT $ 48))
                       (SPADCALL
                        (SPADCALL (SPADCALL |a1| 2 (QREFELT $ 57)) |a2|
                                  (QREFELT $ 59))
                        (SPADCALL 16 (QREFELT $ 61)) (QREFELT $ 51))
                       (QREFELT $ 60))
                      (SPADCALL
                       (SPADCALL 3 (SPADCALL |a1| 4 (QREFELT $ 57))
                                 (QREFELT $ 58))
                       (SPADCALL 256 (QREFELT $ 61)) (QREFELT $ 51))
                      (QREFELT $ 48))
                     $)
                    . #2#)
              (COND
               ((|SOLVEFOR;equ| |q| (|spadConstant| $ 33) $)
                (LETT |t0|
                      (|SOLVEFOR;part|
                       (SPADCALL 2
                                 (SPADCALL |r| (SPADCALL 1 2 (QREFELT $ 54))
                                           (QREFELT $ 55))
                                 (QREFELT $ 58))
                       $)
                      . #2#))
               (#1#
                (LETT |t0|
                      (SPADCALL (|spadConstant| $ 30)
                                (SPADCALL |p| (QREFELT $ 52))
                                (SPADCALL (SPADCALL 4 |r| (QREFELT $ 58))
                                          (QREFELT $ 52))
                                (SPADCALL
                                 (SPADCALL (SPADCALL 4 |p| (QREFELT $ 58)) |r|
                                           (QREFELT $ 59))
                                 (SPADCALL |q| 2 (QREFELT $ 57))
                                 (QREFELT $ 48))
                                (QREFELT $ 40))
                      . #2#)))
              (LETT |rt|
                    (SPADCALL
                     (|SOLVEFOR;part| (SPADCALL |t0| |p| (QREFELT $ 48)) $)
                     (SPADCALL 1 2 (QREFELT $ 54)) (QREFELT $ 55))
                    . #2#)
              (LETT |s|
                    (SPADCALL (|spadConstant| $ 30) |rt|
                              (SPADCALL
                               (SPADCALL
                                (SPADCALL (SPADCALL |q| |rt| (QREFELT $ 51))
                                          (QREFELT $ 52))
                                |t0| (QREFELT $ 60))
                               (SPADCALL 2 (QREFELT $ 61)) (QREFELT $ 51))
                              (QREFELT $ 39))
                    . #2#)
              (EXIT
               (SPADCALL |s|
                         (SPADCALL |a1| (SPADCALL 4 (QREFELT $ 61))
                                   (QREFELT $ 51))
                         (QREFELT $ 48))))))))))) 

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

(DEFUN |PolynomialSolveByFormulas;| (|#1| |#2|)
  (PROG (|pv$| $ |dv$| DV$2 DV$1)
    (RETURN
     (PROGN
      (LETT DV$1 (|devaluate| |#1|) . #1=(|PolynomialSolveByFormulas|))
      (LETT DV$2 (|devaluate| |#2|) . #1#)
      (LETT |dv$| (LIST '|PolynomialSolveByFormulas| DV$1 DV$2) . #1#)
      (LETT $ (GETREFV 63) . #1#)
      (QSETREFV $ 0 |dv$|)
      (QSETREFV $ 3 (LETT |pv$| (|buildPredVector| 0 0 NIL) . #1#))
      (|haddProp| |$ConstructorCache| '|PolynomialSolveByFormulas|
                  (LIST DV$1 DV$2) (CONS 1 $))
      (|stuffDomainSlots| $)
      (QSETREFV $ 6 |#1|)
      (QSETREFV $ 7 |#2|)
      (QSETREFV $ 8 NIL)
      (QSETREFV $ 9 'NIL)
      (QSETREFV $ 10 'NIL)
      (QSETREFV $ 62
                (SPADCALL
                 (SPADCALL (SPADCALL (|spadConstant| $ 30) (QREFELT $ 52))
                           (SPADCALL
                            (SPADCALL (SPADCALL 3 (QREFELT $ 61))
                                      (QREFELT $ 52))
                            (SPADCALL 1 2 (QREFELT $ 54)) (QREFELT $ 55))
                           (QREFELT $ 60))
                 (SPADCALL 2 (QREFELT $ 61)) (QREFELT $ 51)))
      $)))) 

(MAKEPROP '|PolynomialSolveByFormulas| '|infovec|
          (LIST
           '#(NIL NIL NIL NIL NIL NIL (|local| |#1|) (|local| |#2|) '|maplist|
              '|mapSolving?| '|map| (|List| 7) |SOLVEFOR;solve;UPL;4|
              (|Record| (|:| |arg| 7) (|:| |res| 7))
              (|Record| (|:| |solns| 11) (|:| |maps| (|List| 13)))
              (|Mapping| 7 7) |SOLVEFOR;mapSolve;UPMR;1| (|Boolean|) (0 . =)
              (|Factored| $) (6 . |squareFree|)
              (|Record| (|:| |factor| 6) (|:| |exponent| 25)) (|List| 21)
              (|Factored| 6) (11 . |factors|) (|Integer|) (16 . |elt|)
              (|NonNegativeInteger|) (22 . |degree|) (27 . |One|) (31 . |One|)
              (35 . |coefficient|) (41 . |Zero|) (45 . |Zero|)
              |SOLVEFOR;linear;2FL;14| |SOLVEFOR;quadratic;3FL;16|
              |SOLVEFOR;cubic;4FL;18| |SOLVEFOR;quartic;5FL;20|
              |SOLVEFOR;aLinear;3F;15| |SOLVEFOR;aQuadratic;4F;17|
              |SOLVEFOR;aCubic;5F;19| |SOLVEFOR;aQuartic;6F;21|
              |SOLVEFOR;particularSolution;UPF;5| (49 . |characteristic|)
              |SOLVEFOR;linear;UPL;9| |SOLVEFOR;quadratic;UPL;10|
              |SOLVEFOR;cubic;UPL;11| |SOLVEFOR;quartic;UPL;12| (53 . -)
              (|Union| $ '"failed") (59 . |recip|) (64 . /) (70 . -)
              (|Fraction| 25) (75 . /) (81 . ^) (|PositiveInteger|) (87 . ^)
              (93 . *) (99 . *) (105 . +) (111 . |coerce|) '|w3|)
           '#(|solve| 116 |quartic| 121 |quadratic| 135 |particularSolution|
              147 |mapSolve| 152 |linear| 158 |cubic| 169 |aQuartic| 182
              |aQuadratic| 191 |aLinear| 198 |aCubic| 204)
           'NIL
           (CONS (|makeByteWordVec2| 1 'NIL)
                 (CONS '#()
                       (CONS '#()
                             (|makeByteWordVec2| 61
                                                 '(2 7 17 0 0 18 1 6 19 0 20 1
                                                   23 22 0 24 2 22 21 0 25 26 1
                                                   6 27 0 28 0 6 0 29 0 7 0 30
                                                   2 6 7 0 27 31 0 6 0 32 0 7 0
                                                   33 0 7 27 43 2 7 0 0 0 48 1
                                                   7 49 0 50 2 7 0 0 0 51 1 7 0
                                                   0 52 2 53 0 25 25 54 2 7 0 0
                                                   53 55 2 7 0 0 56 57 2 7 0 56
                                                   0 58 2 7 0 0 0 59 2 7 0 0 0
                                                   60 1 7 0 25 61 1 0 11 6 12 1
                                                   0 11 6 47 5 0 11 7 7 7 7 7
                                                   37 1 0 11 6 45 3 0 11 7 7 7
                                                   35 1 0 7 6 42 2 0 14 6 15 16
                                                   1 0 11 6 44 2 0 11 7 7 34 1
                                                   0 11 6 46 4 0 11 7 7 7 7 36
                                                   5 0 7 7 7 7 7 7 41 3 0 7 7 7
                                                   7 39 2 0 7 7 7 38 4 0 7 7 7
                                                   7 7 40)))))
           '|lookupComplete|)) 
