<TeXmacs|1.0.7.19>

<style|<tuple|mmxdoc|mathemagix>>

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

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

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

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

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

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

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

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

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

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

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

        <explain-header|<mmx|irreducible_factorization : Polynomial (Series
        (Rational)) -\<gtr\> Vector (Irreducible_factor (Polynomial (Series
        (Rational))))><explain-synopsis|Native>>

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

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

        <explain-header|<mmx|irreducible_factorization : Polynomial (Series
        (Modular (Integer))) -\<gtr\> Vector (Irreducible_factor (Polynomial
        (Series (Modular (Integer)))))><explain-synopsis|Native>>

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

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

    <\unfolded-io>
      <mmx-prompt|4>
    <|unfolded-io>
      irreducible? 35164639
    <|unfolded-io>
      <math|true>
    </unfolded-io>

    <\unfolded-io>
      <mmx-prompt|5>
    <|unfolded-io>
      irreducible_factorization 100!
    <|unfolded-io>
      <math|53*59*61*67*71*73*79*83*89*97*37<rsup|2>*41<rsup|2>*43<rsup|2>*47<rsup|2>*29<rsup|3>*31<rsup|3>*23<rsup|4>*17<rsup|5>*19<rsup|5>*13<rsup|7>*11<rsup|9>*7<rsup|16>*5<rsup|24>*3<rsup|48>*2<rsup|97>>
    </unfolded-io>

    <\unfolded-io>
      <mmx-prompt|6>
    <|unfolded-io>
      x == polynomial (0, 1)
    <|unfolded-io>
      <math|x>
    </unfolded-io>

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

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

    <\unfolded-io>
      <mmx-prompt|9>
    <|unfolded-io>
      irreducible_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|10>
    <|unfolded-io>
      irreducible_factorization (1000640091 * 9 * (x^10-1)^3 * (x-2)^2)
    <|unfolded-io>
      <math|11*30322427*<around*|(|x-2|)><rsup|2>*3<rsup|3>*<around*|(|x+1|)><rsup|3>*<around*|(|x-1|)><rsup|3>*<around*|(|x<rsup|4>-x<rsup|3>+x<rsup|2>-x+1|)><rsup|3>*<around*|(|x<rsup|4>+x<rsup|3>+x<rsup|2>+x+1|)><rsup|3>>
    </unfolded-io>

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

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

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

    <\input>
      <mmx-prompt|14>
    <|input>
      p == modulus 3;
    </input>

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

    <\unfolded-io>
      <mmx-prompt|16>
    <|unfolded-io>
      q == irreducible_polynomial (x, 3)
    <|unfolded-io>
      <math|x<rsup|3>+2*x<rsup|2>+x+1>
    </unfolded-io>

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

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

    <\unfolded-io>
      <mmx-prompt|19>
    <|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|20>
    <|input>
      zero == ffe (polynomial (0) mod p, q);

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

    <\unfolded-io>
      <mmx-prompt|21>
    <|unfolded-io>
      irreducible_factorization (x^27-x)
    <|unfolded-io>
      <math|<around*|(|x+a<rsup|2>+2|)>*x*<around*|(|x+a+2|)>*<around*|(|x+2*a<rsup|2>+2*a+2|)>*<around*|(|x+a<rsup|2>+2*a|)>*<around*|(|x+2*a<rsup|2>|)>*<around*|(|x+2*a<rsup|2>+a+1|)>*<around*|(|x+1|)>*<around*|(|x+a<rsup|2>+a|)>*<around*|(|x+2|)>*<around*|(|x+a<rsup|2>+a+1|)>*<around*|(|x+a<rsup|2>+2*a+1|)>*<around*|(|x+2*a<rsup|2>+a+2|)>*<around*|(|x+2*a|)>*<around*|(|x+a<rsup|2>+1|)>*<around*|(|x+2*a+1|)>*<around*|(|x+a<rsup|2>+2*a+2|)>*<around*|(|x+a+1|)>*<around*|(|x+2*a+2|)>*<around*|(|x+a|)>*<around*|(|x+2*a<rsup|2>+a|)>*<around*|(|x+2*a<rsup|2>+2*a|)>*<around*|(|x+2*a<rsup|2>+2*a+1|)>*<around*|(|x+2*a<rsup|2>+1|)>*<around*|(|x+a<rsup|2>|)>*<around*|(|x+2*a<rsup|2>+2|)>*<around*|(|x+a<rsup|2>+a+2|)>>
    </unfolded-io>

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

    <\unfolded-io>
      <mmx-prompt|23>
    <|unfolded-io>
      f == (y - x - a)^2 * (y^7 - x^6 - x + one)
    <|unfolded-io>
      <math|y<rsup|9>+<around*|(|x+a|)>*y<rsup|8>+<around*|(|x<rsup|2>+2*a*x+a<rsup|2>|)>*y<rsup|7>+<around*|(|2*x<rsup|6>+2*x+1|)>*y<rsup|2>+<around*|(|2*x<rsup|7>+2*a*x<rsup|6>+2*x<rsup|2>+<around*|(|2*a+1|)>*x+a|)>*y+2*x<rsup|8>+a*x<rsup|7>+2*a<rsup|2>*x<rsup|6>+2*x<rsup|3>+<around*|(|a+1|)>*x<rsup|2>+<around*|(|2*a<rsup|2>+2*a|)>*x+a<rsup|2>>
    </unfolded-io>

    <\unfolded-io>
      <mmx-prompt|24>
    <|unfolded-io>
      irreducible_factorization f
    <|unfolded-io>
      <math|<around*|(|y<rsup|7>+2*x<rsup|6>+2*x+1|)>*<around*|(|y+2*x+2*a|)><rsup|2>>
    </unfolded-io>
  </session>

  <tmdoc-copyright|2013|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>>
