<TeXmacs|1.0.7.19>

<style|<tuple|mmxdoc|mathemagix>>

<\body>
  <tmdoc-title|Squarefree factorization>

  <\session|mathemagix|default>
    <\input>
      <mmx-prompt|1>
    <|input>
      use "factorix"
    </input>

    <\unfolded-io>
      <mmx-prompt|2>
    <|unfolded-io>
      help squarefree_factorization
    <|unfolded-io>
      <\text>
        <explain-header|<mmx|squarefree_factorization : Rational -\<gtr\>
        Vector (Squarefree_factor (Rational))><explain-synopsis|Native>>

        <explain-header|<mmx|squarefree_factorization : Integer -\<gtr\>
        Vector (Squarefree_factor (Integer))><explain-synopsis|Native>>

        <explain-header|<mmx|squarefree_factorization : Modular (Integer)
        -\<gtr\> Vector (Squarefree_factor (Modular
        (Integer)))><explain-synopsis|Native>>

        <explain-header|<mmx|squarefree_factorization : Ffe (Modular
        (Integer)) -\<gtr\> Vector (Squarefree_factor (Ffe (Modular
        (Integer))))><explain-synopsis|Native>>

        <explain-header|<mmx|squarefree_factorization : Polynomial (Integer)
        -\<gtr\> Vector (Squarefree_factor (Polynomial
        (Integer)))><explain-synopsis|Native>>

        <explain-header|<mmx|squarefree_factorization : Polynomial (Rational)
        -\<gtr\> Vector (Squarefree_factor (Polynomial
        (Rational)))><explain-synopsis|Native>>

        <explain-header|<mmx|squarefree_factorization : Polynomial (Modular
        (Integer)) -\<gtr\> Vector (Squarefree_factor (Polynomial (Modular
        (Integer))))><explain-synopsis|Native>>

        <explain-header|<mmx|squarefree_factorization : Polynomial
        (Polynomial (Integer)) -\<gtr\> Vector (Squarefree_factor (Polynomial
        (Polynomial (Integer))))><explain-synopsis|Native>>

        <explain-header|<mmx|squarefree_factorization : Polynomial
        (Polynomial (Rational)) -\<gtr\> Vector (Squarefree_factor
        (Polynomial (Polynomial (Rational))))><explain-synopsis|Native>>

        <explain-header|<mmx|squarefree_factorization : Polynomial (Ffe
        (Modular (Integer))) -\<gtr\> Vector (Squarefree_factor (Polynomial
        (Ffe (Modular (Integer)))))><explain-synopsis|Native>>

        <explain-header|<mmx|squarefree_factorization : Polynomial
        (Polynomial (Modular (Integer))) -\<gtr\> Vector (Squarefree_factor
        (Polynomial (Polynomial (Modular (Integer)))))><explain-synopsis|Native>>

        <explain-header|<mmx|squarefree_factorization : Polynomial
        (Polynomial (Ffe (Modular (Integer)))) -\<gtr\> Vector
        (Squarefree_factor (Polynomial (Polynomial (Ffe (Modular
        (Integer))))))><explain-synopsis|Native>>
      </text>
    </unfolded-io>

    <\input>
      <mmx-prompt|4>
    <|input>
      x == polynomial (0 :\<gtr\> Rational, 1 :\<gtr\> Rational);
    </input>

    <\unfolded-io>
      <mmx-prompt|5>
    <|unfolded-io>
      squarefree_factorization (-(x-1)^10 * (x-2)^2)
    <|unfolded-io>
      <math|-<around*|(|x-2|)><rsup|2>*<around*|(|x-1|)><rsup|10>>
    </unfolded-io>

    <\input>
      <mmx-prompt|6>
    <|input>
      x == polynomial (0 :\<gtr\> Integer, 1 :\<gtr\> Integer);
    </input>

    <\unfolded-io>
      <mmx-prompt|7>
    <|unfolded-io>
      squarefree_factorization ((x-1)^10 * (x-2)^2 mod modulus 5)
    <|unfolded-io>
      <math|<around*|(|x+3|)><rsup|2>*<around*|(|x+4|)><rsup|10>>
    </unfolded-io>

    <\unfolded-io>
      <mmx-prompt|8>
    <|unfolded-io>
      separable_factorization ((x-1)^10 * (x-2)^2 mod modulus 5)
    <|unfolded-io>
      <math|<around*|(|x+3|)><rsup|2>*<around*|(|x<rsup|5>+4|)><rsup|2>>
    </unfolded-io>

    <\unfolded-io>
      <mmx-prompt|9>
    <|unfolded-io>
      squarefree_factorization (100064500091 * 9 * (x^10-1)^3 * (x-2)^2)
    <|unfolded-io>
      <math|619*161655089*3<rsup|2>*<around*|(|x-2|)><rsup|2>*<around*|(|x<rsup|10>-1|)><rsup|3>>
    </unfolded-io>

    <\unfolded-io>
      <mmx-prompt|10>
    <|unfolded-io>
      squarefree_factorization% (100064500091 * (x^10-1)^3 * (x-2)^2)
    <|unfolded-io>
      <math|619*161655089*<around*|(|x-2|)><rsup|2>*<around*|(|x<rsup|10>-1|)><rsup|3>>
    </unfolded-io>

    <\input>
      <mmx-prompt|11>
    <|input>
      y == polynomial (polynomial (0 :\<gtr\> Rational), polynomial (1
      :\<gtr\> Rational));
    </input>

    <\unfolded-io>
      <mmx-prompt|12>
    <|unfolded-io>
      f == (y - x - 1)^2 * (y^2 - x^10 - 2 * x +1)
    <|unfolded-io>
      <math|y<rsup|4>+<around*|(|-2*x-2|)>*y<rsup|3>+<around*|(|-x<rsup|10>+x<rsup|2>+2|)>*y<rsup|2>+<around*|(|2*x<rsup|11>+2*x<rsup|10>+4*x<rsup|2>+2*x-2|)>*y-x<rsup|12>-2*x<rsup|11>-x<rsup|10>-2*x<rsup|3>-3*x<rsup|2>+1>
    </unfolded-io>

    <\unfolded-io>
      <mmx-prompt|13>
    <|unfolded-io>
      squarefree_factorization f
    <|unfolded-io>
      <math|<around*|(|y<rsup|2>-x<rsup|10>-2*x+1|)>*<around*|(|y-x-1|)><rsup|2>>
    </unfolded-io>

    <\input>
      <mmx-prompt|14>
    <|input>
      y == polynomial (polynomial (0 :\<gtr\> Integer), polynomial (1
      :\<gtr\> Integer));
    </input>

    <\unfolded-io>
      <mmx-prompt|15>
    <|unfolded-io>
      f == (y - x - 1)^2 * (y^2 - x^10 - 2 * x +1)
    <|unfolded-io>
      <math|y<rsup|4>+<around*|(|-2*x-2|)>*y<rsup|3>+<around*|(|-x<rsup|10>+x<rsup|2>+2|)>*y<rsup|2>+<around*|(|2*x<rsup|11>+2*x<rsup|10>+4*x<rsup|2>+2*x-2|)>*y-x<rsup|12>-2*x<rsup|11>-x<rsup|10>-2*x<rsup|3>-3*x<rsup|2>+1>
    </unfolded-io>

    <\unfolded-io>
      <mmx-prompt|16>
    <|unfolded-io>
      squarefree_factorization f
    <|unfolded-io>
      <math|<around*|(|y<rsup|2>-x<rsup|10>-2*x+1|)>*<around*|(|y-x-1|)><rsup|2>>
    </unfolded-io>

    <\unfolded-io>
      <mmx-prompt|17>
    <|unfolded-io>
      squarefree_factorization (f mod modulus 2)
    <|unfolded-io>
      <math|<around*|(|y<rsup|2>+<around*|(|x<rsup|5>+x|)>*y+x<rsup|6>+x<rsup|5>+x+1|)><rsup|2>>
    </unfolded-io>

    <\input>
      <mmx-prompt|18>
    <|input>
      p == modulus 2;
    </input>

    <\input>
      <mmx-prompt|19>
    <|input>
      x == polynomial (0, 1) mod p;
    </input>

    <\unfolded-io>
      <mmx-prompt|20>
    <|unfolded-io>
      q == irreducible_polynomial (x, 8)
    <|unfolded-io>
      <math|x<rsup|8>+x<rsup|7>+x<rsup|5>+x+1>
    </unfolded-io>

    <\input>
      <mmx-prompt|21>
    <|input>
      a == ffe (x, q);
    </input>

    <\input>
      <mmx-prompt|22>
    <|input>
      set_variable_name (a, 'a);
    </input>

    <\unfolded-io>
      <mmx-prompt|23>
    <|unfolded-io>
      x == polynomial (ffe (polynomial (0) mod p, q),

      \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ ffe (polynomial (1) mod p, q))
    <|unfolded-io>
      <math|x>
    </unfolded-io>

    <\input>
      <mmx-prompt|24>
    <|input>
      zero == ffe (polynomial (0) mod p, q);

      one \ == ffe (polynomial (1) mod p, q);
    </input>

    <\unfolded-io>
      <mmx-prompt|25>
    <|unfolded-io>
      squarefree_factorization ((x-one)^10 * (x^2+x+one)^2)
    <|unfolded-io>
      <math|<around*|(|x<rsup|2>+x+1|)><rsup|2>*<around*|(|x+1|)><rsup|10>>
    </unfolded-io>

    <\input>
      <mmx-prompt|26>
    <|input>
      y == polynomial (polynomial zero, polynomial one);
    </input>

    <\unfolded-io>
      <mmx-prompt|27>
    <|unfolded-io>
      f == (y - x - one) * (y^2 - x^10 - x - x + one)
    <|unfolded-io>
      <math|y<rsup|3>+<around*|(|x+1|)>*y<rsup|2>+<around*|(|x<rsup|10>+1|)>*y+x<rsup|11>+x<rsup|10>+x+1>
    </unfolded-io>

    <\unfolded-io>
      <mmx-prompt|28>
    <|unfolded-io>
      squarefree_factorization f
    <|unfolded-io>
      <math|<around*|(|y+x+1|)>*<around*|(|y+x<rsup|5>+1|)><rsup|2>>
    </unfolded-io>
  </session>

  <tmdoc-copyright|2012|Grégoire Lecerf>

  <tmdoc-license|Permission is granted to copy, distribute and/or modify this
  document under the terms of the <hlink|GNU General Public
  License|http://www.gnu.org/licenses/gpl.txt>. If you don't have this file,
  write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  Boston, MA 02111-1307, USA.>
</body>

<initial|<\collection>
</collection>>
