1 | initial version |

When such computation is fast, it depends on some optimized library, and that one depends on the type of polynomials. If you do:

```
sage: R.<x> = QQ[]
sage: P = R.random_element()
sage: P.is_irreducible??
```

You will see that `flint`

is used.

If you do the same by replacing `QQ`

with `GF(2)`

, you will see that the `gf2x`

library is used but for `GF(p)`

with p>2, the `nmod_poly_is_irreducible`

function is used and that one relies on `flint`

as well, and so on.

So, you have to see the source of those upstream programs to see which algorithm they are using.

2 | No.2 Revision |

When such computation is fast, it depends on some optimized library, and that one depends on the type of polynomials. If you do:

```
sage: R.<x> = QQ[]
sage: P = R.random_element()
sage: P.is_irreducible??
```

You will see that `flint`

is used.

If you do the same by replacing `QQ`

with `GF(2)`

, you will see that the `gf2x`

library is used but for `GF(p)`

with p>2, the `nmod_poly_is_irreducible`

function is used and that one relies on `flint`

as ~~well, ~~well. If you have polynomials over `ZZ`

, then you will see that the `factor`

method is used, and there you will see that `pari`

is used when the degree of the polyomial is between 30 and 300, and `ntl`

is used otherwise, and so on.

So, you have to see the source of those upstream programs to see which algorithm they are using.

3 | No.3 Revision |

When such computation is fast, it depends on some optimized library, and that one depends on the type of polynomials. If you do:

```
sage: R.<x> = QQ[]
sage: P = R.random_element()
sage: P.is_irreducible??
```

You will see that `flint`

is used.

If you do the same by replacing `QQ`

with `GF(2)`

, you will see that the `gf2x`

library is used but for `GF(p)`

with p>2, the `nmod_poly_is_irreducible`

function is used and that one relies on `flint`

as well. If you have polynomials over `ZZ`

, then you will see that the `factor`

method is used, and there you will see that `pari`

is used when the degree of the polyomial is between 30 and 300, and `ntl`

is used otherwise, and so on.

So, you have to see the source of those upstream programs to see which algorithm and optimizations they are using.

4 | No.4 Revision |

```
sage: R.<x> = QQ[]
sage: P = R.random_element()
sage: P.is_irreducible??
```

You will see that `flint`

is used.

If you do the same by replacing `QQ`

with `GF(2)`

, you will see that the `gf2x`

library is used but for `GF(p)`

with p>2, the `nmod_poly_is_irreducible`

function is used and that one relies on `flint`

as well. If you have polynomials over `ZZ`

, then you will see that the `factor`

method is used, and there you will see that `pari`

is used when the degree of the polyomial is between 30 and 300, and `ntl`

is used otherwise, and so on.

So, you have to see the source of ~~those ~~the corresponding upstream ~~programs ~~program to see which algorithm and optimizations they are using.

5 | No.5 Revision |

When such computation is fast, it depends on some optimized ~~library, ~~library (note that Sage can be seen as a bundle of optimized libraries behind a uniform Python interface), and that one depends on the type of polynomials. If you do:

```
sage: R.<x> = QQ[]
sage: P = R.random_element()
sage: P.is_irreducible??
```

You will see that `flint`

is used.

If you do the same by replacing `QQ`

with `GF(2)`

, you will see that the `gf2x`

library is used but for `GF(p)`

with p>2, the `nmod_poly_is_irreducible`

function is used and that one relies on `flint`

as well. If you have polynomials over `ZZ`

, then you will see that the `factor`

method is used, and there you will see that `pari`

is used when the degree of the polyomial is between 30 and 300, and `ntl`

is used otherwise, and so on.

So, you have to see the source of the corresponding upstream program to see which algorithm and optimizations they are using.

Copyright Sage, 2010. Some rights reserved under creative commons license. Content on this site is licensed under a Creative Commons Attribution Share Alike 3.0 license.