
(SDEFUN |PFECAT-;charthRoot;SU;1| ((|f| S) ($ |Union| S "failed"))
        (SPROG ((|ans| (|Union| (|Vector| S) "failed")) (|m| (|Matrix| S)))
               (SEQ
                (COND
                 ((SPADCALL |f| (QREFELT $ 8)) (CONS 0 (|spadConstant| $ 9)))
                 (#1='T
                  (SEQ
                   (LETT |m|
                         (SPADCALL
                          (LIST
                           (LIST (|spadConstant| $ 10)
                                 (SPADCALL |f| (QREFELT $ 11))))
                          (QREFELT $ 14))
                         . #2=(|PFECAT-;charthRoot;SU;1|))
                   (LETT |ans| (SPADCALL |m| (QREFELT $ 17)) . #2#)
                   (EXIT
                    (COND ((QEQCAR |ans| 1) (CONS 1 "failed"))
                          (#1#
                           (SPADCALL (SPADCALL (QCDR |ans|) 1 (QREFELT $ 20))
                                     (SPADCALL (QCDR |ans|) 2 (QREFELT $ 20))
                                     (QREFELT $ 22))))))))))) 

(SDEFUN |PFECAT-;solveLinearPolynomialEquation;LSupU;2|
        ((|lf| |List| (|SparseUnivariatePolynomial| S))
         (|g| |SparseUnivariatePolynomial| S)
         ($ |Union| (|List| (|SparseUnivariatePolynomial| S)) "failed"))
        (SPADCALL |lf| |g| (QREFELT $ 27))) 

(SDEFUN |PFECAT-;solveLinearPolynomialEquation;LSupU;3|
        ((|lf| |List| (|SparseUnivariatePolynomial| S))
         (|g| |SparseUnivariatePolynomial| S)
         ($ |Union| (|List| (|SparseUnivariatePolynomial| S)) "failed"))
        (SPADCALL |lf| |g| (QREFELT $ 35))) 

(DECLAIM (NOTINLINE |PolynomialFactorizationExplicit&;|)) 

(DEFUN |PolynomialFactorizationExplicit&| (|#1|)
  (SPROG ((|pv$| NIL) ($ NIL) (|dv$| NIL) (DV$1 NIL))
         (PROGN
          (LETT DV$1 (|devaluate| |#1|)
                . #1=(|PolynomialFactorizationExplicit&|))
          (LETT |dv$| (LIST '|PolynomialFactorizationExplicit&| DV$1) . #1#)
          (LETT $ (GETREFV 36) . #1#)
          (QSETREFV $ 0 |dv$|)
          (QSETREFV $ 3
                    (LETT |pv$|
                          (|buildPredVector| 0 0
                                             (LIST
                                              (|HasCategory| |#1|
                                                             '(|CharacteristicNonZero|))))
                          . #1#))
          (|stuffDomainSlots| $)
          (QSETREFV $ 6 |#1|)
          (SETF |pv$| (QREFELT $ 3))
          (COND
           ((|testBitVector| |pv$| 1)
            (QSETREFV $ 23
                      (CONS (|dispatchFunction| |PFECAT-;charthRoot;SU;1|)
                            $))))
          (COND
           ((|HasCategory| |#1| '(|Field|))
            (QSETREFV $ 31
                      (CONS
                       (|dispatchFunction|
                        |PFECAT-;solveLinearPolynomialEquation;LSupU;2|)
                       $)))
           ('T
            (QSETREFV $ 31
                      (CONS
                       (|dispatchFunction|
                        |PFECAT-;solveLinearPolynomialEquation;LSupU;3|)
                       $))))
          $))) 

(MAKEPROP '|PolynomialFactorizationExplicit&| '|infovec|
          (LIST
           '#(NIL NIL NIL NIL NIL NIL (|local| |#1|) (|Boolean|) (0 . |zero?|)
              (5 . |Zero|) (9 . |One|) (13 . -) (|List| (|List| 6))
              (|Matrix| 6) (18 . |matrix|) (|Union| (|Vector| $) '"failed")
              (|Matrix| $) (23 . |conditionP|) (|Integer|) (|Vector| 6)
              (28 . |elt|) (|Union| $ '"failed") (34 . |exquo|)
              (40 . |charthRoot|) (|Union| 25 '"failed") (|List| $)
              (|SparseUnivariatePolynomial| 6) (45 . |multiEuclidean|)
              (|Union| 29 '"failed") (|List| 30)
              (|SparseUnivariatePolynomial| $)
              (51 . |solveLinearPolynomialEquation|) (|Union| 33 '"failed")
              (|List| 26) (|LinearPolynomialEquationByFractions| 6)
              (57 . |solveLinearPolynomialEquationByFractions|))
           '#(|solveLinearPolynomialEquation| 63 |charthRoot| 69) 'NIL
           (CONS (|makeByteWordVec2| 1 'NIL)
                 (CONS '#()
                       (CONS '#()
                             (|makeByteWordVec2| 35
                                                 '(1 6 7 0 8 0 6 0 9 0 6 0 10 1
                                                   6 0 0 11 1 13 0 12 14 1 6 15
                                                   16 17 2 19 6 0 18 20 2 6 21
                                                   0 0 22 1 0 21 0 23 2 26 24
                                                   25 0 27 2 0 28 29 30 31 2 34
                                                   32 33 26 35 2 0 28 29 30 31
                                                   1 0 21 0 23)))))
           '|lookupComplete|)) 
