Squarefree factorization
Mmx]  
use "factorix"
Mmx]  
help squarefree_factorization

squarefree_factorization : Rational -> Vector (Squarefree_factor (Rational))
(Native)
squarefree_factorization : Integer -> Vector (Squarefree_factor (Integer))
(Native)
squarefree_factorization : Modular (Integer) -> Vector (Squarefree_factor (Modular (Integer)))
(Native)
squarefree_factorization : Ffe (Modular (Integer)) -> Vector (Squarefree_factor (Ffe (Modular (Integer))))
(Native)
squarefree_factorization : Polynomial (Integer) -> Vector (Squarefree_factor (Polynomial (Integer)))
(Native)
squarefree_factorization : Polynomial (Rational) -> Vector (Squarefree_factor (Polynomial (Rational)))
(Native)
squarefree_factorization : Polynomial (Modular (Integer)) -> Vector (Squarefree_factor (Polynomial (Modular (Integer))))
(Native)
squarefree_factorization : Polynomial (Polynomial (Integer)) -> Vector (Squarefree_factor (Polynomial (Polynomial (Integer))))
(Native)
squarefree_factorization : Polynomial (Polynomial (Rational)) -> Vector (Squarefree_factor (Polynomial (Polynomial (Rational))))
(Native)
squarefree_factorization : Polynomial (Ffe (Modular (Integer))) -> Vector (Squarefree_factor (Polynomial (Ffe (Modular (Integer)))))
(Native)
squarefree_factorization : Polynomial (Polynomial (Modular (Integer))) -> Vector (Squarefree_factor (Polynomial (Polynomial (Modular (Integer)))))
(Native)
squarefree_factorization : Polynomial (Polynomial (Ffe (Modular (Integer)))) -> Vector (Squarefree_factor (Polynomial (Polynomial (Ffe (Modular (Integer))))))
(Native)

Mmx]  
x == polynomial (0 :> Rational, 1 :> Rational);
Mmx]  
squarefree_factorization (-(x-1)^10 * (x-2)^2)

Mmx]  
x == polynomial (0 :> Integer, 1 :> Integer);
Mmx]  
squarefree_factorization ((x-1)^10 * (x-2)^2 mod modulus 5)

Mmx]  
separable_factorization ((x-1)^10 * (x-2)^2 mod modulus 5)

Mmx]  
squarefree_factorization (100064500091 * 9 * (x^10-1)^3 * (x-2)^2)

Mmx]  
squarefree_factorization% (100064500091 * (x^10-1)^3 * (x-2)^2)

Mmx]  
y == polynomial (polynomial (0 :> Rational), polynomial (1 :> Rational));
Mmx]  
f == (y - x - 1)^2 * (y^2 - x^10 - 2 * x +1)

Mmx]  
squarefree_factorization f

Mmx]  
y == polynomial (polynomial (0 :> Integer), polynomial (1 :> Integer));
Mmx]  
f == (y - x - 1)^2 * (y^2 - x^10 - 2 * x +1)

Mmx]  
squarefree_factorization f

Mmx]  
squarefree_factorization (f mod modulus 2)

Mmx]  
p == modulus 2;
Mmx]  
x == polynomial (0, 1) mod p;
Mmx]  
q == irreducible_polynomial (x, 8)

Mmx]  
a == ffe (x, q);
Mmx]  
set_variable_name (a, 'a);
Mmx]  
x == polynomial (ffe (polynomial (0) mod p, q),
                 ffe (polynomial (1) mod p, q))

Mmx]  
zero == ffe (polynomial (0) mod p, q);
one  == ffe (polynomial (1) mod p, q);
Mmx]  
squarefree_factorization ((x-one)^10 * (x^2+x+one)^2)

Mmx]  
y == polynomial (polynomial zero, polynomial one);
Mmx]  
f == (y - x - one) * (y^2 - x^10 - x - x + one)

Mmx]  
squarefree_factorization f

Permission is granted to copy, distribute and/or modify this document under the terms of the GNU General Public License. If you don't have this file, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.