Givaro 4.2.1
Poly1FactorDom< Domain, Tag, RandomIterator > Class Template Reference

Poly1FactorDom. More...

#include <givpoly1factor.h>

+ Inheritance diagram for Poly1FactorDom< Domain, Tag, RandomIterator >:

Public Types

typedef Poly1Dom< Domain, Tag >::Element Element
 
typedef RandomIterator random_generator
 
typedef Domain::Residu_t Residu_t
 
typedef Signed_Trait< typenameDomain::Element >::signed_type Element_t
 
typedef Poly1Dom< Domain, Tag >::Type_t Type_t
 

Public Member Functions

 Poly1FactorDom ()
 
 Poly1FactorDom (const Domain &d, const Indeter &X=Indeter(), const RandomIterator &g=RandomIterator())
 
 Poly1FactorDom (const Poly1Dom< Domain, Tag > &P, const RandomIterator &g=RandomIterator())
 
template<template< class, class > class Container, template< class > class Alloc>
void SplitFactor (Container< Rep, Alloc< Rep > > &L, const Rep &G, Degree d, Residu_t MOD) const
 
template<template< class, class > class Container, template< class > class Alloc>
void SplitFactor (Container< Rep, Alloc< Rep > > &L, const Rep &G, Degree d) const
 
RepSplitFactor (Rep &R, const Rep &G, Degree d, Residu_t MOD) const
 
RepSplitFactor (Rep &R, const Rep &G, Degree d) const
 
template<template< class, class > class Container, template< class > class Alloc>
void DistinctDegreeFactor (Container< Rep, Alloc< Rep > > &L, const Rep &f, Residu_t MOD) const
 
template<template< class, class > class Container, template< class > class Alloc>
void DistinctDegreeFactor (Container< Rep, Alloc< Rep > > &L, const Rep &f) const
 
template<template< class, class > class Container, template< class > class Alloc>
void CZfactor (Container< Rep, Alloc< Rep > > &Lf, Container< uint64_t, Alloc< uint64_t > > &Le, const Rep &f, Residu_t MOD) const
 
template<template< class, class > class Container, template< class > class Alloc>
void CZfactor (Container< Rep, Alloc< Rep > > &Lf, Container< uint64_t, Alloc< uint64_t > > &Le, const Rep &f) const
 
Repfactor (Rep &W, const Rep &P, Residu_t MOD) const
 
Repfactor (Rep &W, const Rep &P) const
 
template<class PolyCont>
PolyCont & factor (PolyCont &factors, std::vector< uint64_t > &exp, const Rep &P)
 
bool is_irreducible (const Rep &P, Residu_t MOD) const
 
bool is_irreducible (const Rep &P) const
 
bool is_irreducible2 (const Rep &P, Residu_t MOD) const
 
bool is_irreducible2 (const Rep &P) const
 
Elementrandom_irreducible (Element &P, Degree n) const
 random irreducible polynomial
 
Elementcreux_random_irreducible (Element &P, Degree n) const
 random irreducible polynomial tries to be sparse
 
Elementixe_irreducible (Element &R, Degree n) const
 random irreducible polynomial with X as primitive root
 
Elementixe_irreducible2 (Element &R, Degree n) const
 random irreducible polynomial with X as primitive root
 
IntegerDom::Element order (const Rep &P, const Rep &F) const
 
bool is_prim_root (const Rep &P, const Rep &F) const
 
Reprandom_prim_root (Rep &P, Rep &R, Degree n) const
 
Repgive_random_prim_root (Rep &R, const Rep &F) const
 
Repgive_prim_root (Rep &R, const Rep &F) const
 

Protected Types

typedef Poly1Dom< Domain, Tag >::Rep Rep
 

Protected Member Functions

template<class Residue>
bool find_irred_binomial (Element &R, Degree n, Residue MOD) const
 
bool find_irred_binomial (Element &R, Degree n, bool MOD) const
 
template<class Residue>
bool find_irred_binomial (Element &R, Degree n, Residue MOD, Element IXE) const
 
bool find_irred_binomial (Element &R, Degree n, bool MOD, Element IXE) const
 
template<class Residue>
bool find_irred_binomial2 (Element &R, Degree n, Residue MOD, Element IXE) const
 
bool find_irred_binomial2 (Element &R, Degree n, bool MOD, Element IXE) const
 
template<class Residue>
bool find_irred_trinomial (Element &R, Degree n, Residue MOD) const
 
bool find_irred_trinomial (Element &R, Degree n, bool MOD) const
 
template<class Residue>
bool find_irred_trinomial (Element &R, Degree n, Residue MOD, Element IXE) const
 
bool find_irred_trinomial (Element &R, Degree n, bool MOD, Element IXE) const
 
template<class Residue>
bool find_irred_trinomial2 (Element &R, Degree n, Residue MOD, Element IXE) const
 
bool find_irred_trinomial2 (Element &R, Degree n, bool MOD, Element IXE) const
 
template<class Residue>
bool find_irred_randomial (Element &R, Degree n, Residue MOD) const
 
bool find_irred_randomial (Element &R, Degree n, bool MOD) const
 
template<class Residue>
bool find_irred_randomial (Element &R, Degree n, Residue MOD, Element IXE) const
 
bool find_irred_randomial (Element &R, Degree n, bool MOD, Element IXE) const
 
template<class Residue>
bool find_irred_randomial2 (Element &R, Degree n, Residue MOD, Element IXE) const
 
bool find_irred_randomial2 (Element &R, Degree n, bool MOD, Element IXE) const
 

Protected Attributes

RandomIterator _g
 

Detailed Description

template<class Domain, class Tag = Dense, class RandomIterator = GivRandom>
class Givaro::Poly1FactorDom< Domain, Tag, RandomIterator >

Poly1FactorDom.

Examples
examples/Integer/ModularSquareRoot.C, examples/Polynomial/isirred.C, examples/Polynomial/isprimitive.C, examples/Polynomial/pol_eval.C, and examples/Polynomial/pol_factor.C.

Member Typedef Documentation

◆ Rep

template<class Domain, class Tag = Dense, class RandomIterator = GivRandom>
typedef Poly1Dom<Domain,Tag>::Rep Rep
protected

◆ Element

template<class Domain, class Tag = Dense, class RandomIterator = GivRandom>
typedef Poly1Dom<Domain,Tag>::Element Element

◆ random_generator

template<class Domain, class Tag = Dense, class RandomIterator = GivRandom>
typedef RandomIterator random_generator

◆ Residu_t

template<class Domain, class Tag = Dense, class RandomIterator = GivRandom>
typedef Domain::Residu_t Residu_t

◆ Element_t

template<class Domain, class Tag = Dense, class RandomIterator = GivRandom>
typedef Signed_Trait<typenameDomain::Element>::signed_type Element_t

◆ Type_t

template<class Domain, class Tag = Dense, class RandomIterator = GivRandom>
typedef Poly1Dom<Domain,Tag>::Type_t Type_t

Constructor & Destructor Documentation

◆ Poly1FactorDom() [1/3]

template<class Domain, class Tag = Dense, class RandomIterator = GivRandom>
Poly1FactorDom ( )
inline

◆ Poly1FactorDom() [2/3]

template<class Domain, class Tag = Dense, class RandomIterator = GivRandom>
Poly1FactorDom ( const Domain & d,
const Indeter & X = Indeter(),
const RandomIterator & g = RandomIterator() )
inline
Warning
there is a copy of the random Iterator ...

◆ Poly1FactorDom() [3/3]

template<class Domain, class Tag = Dense, class RandomIterator = GivRandom>
Poly1FactorDom ( const Poly1Dom< Domain, Tag > & P,
const RandomIterator & g = RandomIterator() )
inline

Member Function Documentation

◆ SplitFactor() [1/4]

template<class Domain, class Tag, class RandomIterator>
template<template< class, class > class Container, template< class > class Alloc>
void SplitFactor ( Container< Rep, Alloc< Rep > > & L,
const Rep & G,
Degree d,
Residu_t MOD ) const
inline

◆ SplitFactor() [2/4]

template<class Domain, class Tag = Dense, class RandomIterator = GivRandom>
template<template< class, class > class Container, template< class > class Alloc>
void SplitFactor ( Container< Rep, Alloc< Rep > > & L,
const Rep & G,
Degree d ) const
inline

◆ SplitFactor() [3/4]

template<class Domain, class Tag, class RandomIterator>
Poly1FactorDom< Domain, Tag, RandomIterator >::Rep & SplitFactor ( Rep & R,
const Rep & G,
Degree d,
Residu_t MOD ) const
inline

◆ SplitFactor() [4/4]

template<class Domain, class Tag = Dense, class RandomIterator = GivRandom>
Rep & SplitFactor ( Rep & R,
const Rep & G,
Degree d ) const
inline

◆ DistinctDegreeFactor() [1/2]

template<class Domain, class Tag, class RandomIterator>
template<template< class, class > class Container, template< class > class Alloc>
void DistinctDegreeFactor ( Container< Rep, Alloc< Rep > > & L,
const Rep & f,
Residu_t MOD ) const
inline

◆ DistinctDegreeFactor() [2/2]

template<class Domain, class Tag = Dense, class RandomIterator = GivRandom>
template<template< class, class > class Container, template< class > class Alloc>
void DistinctDegreeFactor ( Container< Rep, Alloc< Rep > > & L,
const Rep & f ) const
inline

◆ CZfactor() [1/2]

template<class Domain, class Tag, class RandomIterator>
template<template< class, class > class Container, template< class > class Alloc>
void CZfactor ( Container< Rep, Alloc< Rep > > & Lf,
Container< uint64_t, Alloc< uint64_t > > & Le,
const Rep & f,
Residu_t MOD ) const
inline

◆ CZfactor() [2/2]

template<class Domain, class Tag = Dense, class RandomIterator = GivRandom>
template<template< class, class > class Container, template< class > class Alloc>
void CZfactor ( Container< Rep, Alloc< Rep > > & Lf,
Container< uint64_t, Alloc< uint64_t > > & Le,
const Rep & f ) const
inline

◆ factor() [1/3]

template<class Domain, class Tag, class RandomIterator>
Poly1FactorDom< Domain, Tag, RandomIterator >::Rep & factor ( Rep & W,
const Rep & P,
Residu_t MOD ) const
inline

◆ factor() [2/3]

template<class Domain, class Tag = Dense, class RandomIterator = GivRandom>
Rep & factor ( Rep & W,
const Rep & P ) const
inline

◆ factor() [3/3]

template<class Domain, class Tag = Dense, class RandomIterator = GivRandom>
template<class PolyCont>
PolyCont & factor ( PolyCont & factors,
std::vector< uint64_t > & exp,
const Rep & P )
inline

◆ is_irreducible() [1/2]

template<class Domain, class Tag, class RandomIterator>
bool is_irreducible ( const Rep & P,
Residu_t MOD ) const
inline

◆ is_irreducible() [2/2]

template<class Domain, class Tag = Dense, class RandomIterator = GivRandom>
bool is_irreducible ( const Rep & P) const
inline

◆ is_irreducible2() [1/2]

template<class Domain, class Tag, class RandomIterator>
bool is_irreducible2 ( const Rep & P,
Residu_t MOD ) const
inline

◆ is_irreducible2() [2/2]

template<class Domain, class Tag = Dense, class RandomIterator = GivRandom>
bool is_irreducible2 ( const Rep & P) const
inline

◆ random_irreducible()

template<class Domain, class Tag, class RandomIterator>
Poly1FactorDom< Domain, Tag, RandomIterator >::Element & random_irreducible ( Element & P,
Degree n ) const
inline

random irreducible polynomial

◆ creux_random_irreducible()

template<class Domain, class Tag, class RandomIterator>
Poly1FactorDom< Domain, Tag, RandomIterator >::Element & creux_random_irreducible ( Element & P,
Degree n ) const
inline

random irreducible polynomial tries to be sparse

◆ ixe_irreducible()

template<class Domain, class Tag, class RandomIterator>
Poly1FactorDom< Domain, Tag, RandomIterator >::Element & ixe_irreducible ( Element & R,
Degree n ) const
inline

random irreducible polynomial with X as primitive root

◆ ixe_irreducible2()

template<class Domain, class Tag, class RandomIterator>
Poly1FactorDom< Domain, Tag, RandomIterator >::Element & ixe_irreducible2 ( Element & R,
Degree n ) const
inline

random irreducible polynomial with X as primitive root

◆ order()

template<class Domain, class Tag, class RandomIterator>
IntegerDom::Element order ( const Rep & P,
const Rep & F ) const
inline

◆ is_prim_root()

template<class Domain, class Tag, class RandomIterator>
bool is_prim_root ( const Rep & P,
const Rep & F ) const

◆ random_prim_root()

template<class Domain, class Tag, class RandomIterator>
Poly1FactorDom< Domain, Tag, RandomIterator >::Rep & random_prim_root ( Rep & P,
Rep & R,
Degree n ) const
inline

◆ give_random_prim_root()

template<class Domain, class Tag, class RandomIterator>
Poly1FactorDom< Domain, Tag, RandomIterator >::Rep & give_random_prim_root ( Rep & R,
const Rep & F ) const
inline

◆ give_prim_root()

template<class Domain, class Tag, class RandomIterator>
Poly1FactorDom< Domain, Tag, RandomIterator >::Rep & give_prim_root ( Rep & R,
const Rep & F ) const
inline

◆ find_irred_binomial() [1/4]

template<class Domain, class Tag, class RandomIterator>
template<class Residue>
bool find_irred_binomial ( Element & R,
Degree n,
Residue MOD ) const
inlineprotected

◆ find_irred_binomial() [2/4]

template<class Domain, class Tag, class RandomIterator>
bool find_irred_binomial ( Element & R,
Degree n,
bool MOD ) const
inlineprotected

◆ find_irred_binomial() [3/4]

template<class Domain, class Tag, class RandomIterator>
template<class Residue>
bool find_irred_binomial ( Element & R,
Degree n,
Residue MOD,
Element IXE ) const
inlineprotected

◆ find_irred_binomial() [4/4]

template<class Domain, class Tag, class RandomIterator>
bool find_irred_binomial ( Element & R,
Degree n,
bool MOD,
Element IXE ) const
inlineprotected

◆ find_irred_binomial2() [1/2]

template<class Domain, class Tag, class RandomIterator>
template<class Residue>
bool find_irred_binomial2 ( Element & R,
Degree n,
Residue MOD,
Element IXE ) const
inlineprotected

◆ find_irred_binomial2() [2/2]

template<class Domain, class Tag, class RandomIterator>
bool find_irred_binomial2 ( Element & R,
Degree n,
bool MOD,
Element IXE ) const
inlineprotected

◆ find_irred_trinomial() [1/4]

template<class Domain, class Tag, class RandomIterator>
template<class Residue>
bool find_irred_trinomial ( Element & R,
Degree n,
Residue MOD ) const
inlineprotected

◆ find_irred_trinomial() [2/4]

template<class Domain, class Tag, class RandomIterator>
bool find_irred_trinomial ( Element & R,
Degree n,
bool MOD ) const
inlineprotected

◆ find_irred_trinomial() [3/4]

template<class Domain, class Tag, class RandomIterator>
template<class Residue>
bool find_irred_trinomial ( Element & R,
Degree n,
Residue MOD,
Element IXE ) const
inlineprotected

◆ find_irred_trinomial() [4/4]

template<class Domain, class Tag, class RandomIterator>
bool find_irred_trinomial ( Element & R,
Degree n,
bool MOD,
Element IXE ) const
inlineprotected

◆ find_irred_trinomial2() [1/2]

template<class Domain, class Tag, class RandomIterator>
template<class Residue>
bool find_irred_trinomial2 ( Element & R,
Degree n,
Residue MOD,
Element IXE ) const
inlineprotected

◆ find_irred_trinomial2() [2/2]

template<class Domain, class Tag, class RandomIterator>
bool find_irred_trinomial2 ( Element & R,
Degree n,
bool MOD,
Element IXE ) const
inlineprotected

◆ find_irred_randomial() [1/4]

template<class Domain, class Tag, class RandomIterator>
template<class Residue>
bool find_irred_randomial ( Element & R,
Degree n,
Residue MOD ) const
inlineprotected

◆ find_irred_randomial() [2/4]

template<class Domain, class Tag, class RandomIterator>
bool find_irred_randomial ( Element & R,
Degree n,
bool MOD ) const
inlineprotected

◆ find_irred_randomial() [3/4]

template<class Domain, class Tag, class RandomIterator>
template<class Residue>
bool find_irred_randomial ( Element & R,
Degree n,
Residue MOD,
Element IXE ) const
inlineprotected

◆ find_irred_randomial() [4/4]

template<class Domain, class Tag, class RandomIterator>
bool find_irred_randomial ( Element & R,
Degree n,
bool MOD,
Element IXE ) const
inlineprotected

◆ find_irred_randomial2() [1/2]

template<class Domain, class Tag, class RandomIterator>
template<class Residue>
bool find_irred_randomial2 ( Element & R,
Degree n,
Residue MOD,
Element IXE ) const
inlineprotected

◆ find_irred_randomial2() [2/2]

template<class Domain, class Tag, class RandomIterator>
bool find_irred_randomial2 ( Element & R,
Degree n,
bool MOD,
Element IXE ) const
inlineprotected

Field Documentation

◆ _g

template<class Domain, class Tag = Dense, class RandomIterator = GivRandom>
RandomIterator _g
mutableprotected

The documentation for this class was generated from the following files: