Macaulay2 Engine
Loading...
Searching...
No Matches

◆ initialize_PolynomialRing()

void PolynomialRing::initialize_PolynomialRing ( const Ring * K,
const Monoid * M,
const PolyRing * numeratorR,
const PolynomialRing * ambientR,
const Ring * denomR )
protected

Definition at line 29 of file polyring.cpp.

34{
35 nvars_ = M->n_vars();
36 K_ = K;
37 M_ = M;
38 numerR_ = numeratorR;
39 ambientR_ = ambientR;
40 denomR_ = denomR;
41
43
44 if (K->is_QQ() || (K == globalZZ && denomR != nullptr))
46 else if (K == globalZZ && denomR == nullptr)
48 else
50
51 is_weyl_ = false;
52 is_solvable_ = false;
53 is_skew_ = false;
54 overZZ_ = false;
55 qinfo_ = new QRingInfo;
56 is_ZZ_quotient_ = false;
58
59 if (numeratorR != this)
60 {
61 // We must set the non-commutative settings ourselves at this time
62 if (numeratorR->cast_to_WeylAlgebra() != nullptr)
63 is_weyl_ = true;
64 else if (numeratorR->cast_to_SolvableAlgebra() != nullptr)
65 is_solvable_ = true;
66 else if (numeratorR->is_skew_commutative())
67 {
68 is_skew_ = true;
69 skew_ = numeratorR->getSkewInfo();
70 }
71 }
72
73 poly_size_ = 0; // The callee needs to set this later
74 gb_ring_ = nullptr; // The callee needs to set this later
75
76 // Also: callee should call setIsGraded, and set oneV, minus_oneV, zeroV
77}
int n_vars() const
Definition monoid.hpp:207
Ring::CoefficientType coeff_type_
Definition polyring.hpp:109
QRingInfo * qinfo_
Definition polyring.hpp:111
SkewMultiplication skew_
Definition polyring.hpp:104
const Ring * K_
Definition polyring.hpp:123
ring_elem ZZ_quotient_value_
Definition polyring.hpp:115
const Ring * denomR_
Definition polyring.hpp:132
const PolynomialRing * ambientR_
Definition polyring.hpp:136
size_t poly_size_
Definition polyring.hpp:118
const Monoid * M_
Definition polyring.hpp:124
const PolyRing * numerR_
Definition polyring.hpp:125
GBRing * gb_ring_
Definition polyring.hpp:140
const SkewMultiplication & getSkewInfo() const
Definition polyring.hpp:241
bool is_skew_commutative() const
Definition polyring.hpp:237
virtual const SolvableAlgebra * cast_to_SolvableAlgebra() const
Definition ring.hpp:286
@ COEFF_QQ
Definition ring.hpp:222
@ COEFF_ZZ
Definition ring.hpp:222
@ COEFF_BASIC
Definition ring.hpp:222
virtual const WeylAlgebra * cast_to_WeylAlgebra() const
Definition ring.hpp:288
virtual bool is_QQ() const
Definition ring.hpp:172
RingZZ * globalZZ
Definition relem.cpp:13
#define EXPONENT_BYTE_SIZE(nvars)
Definition monoid.hpp:63
#define ZERO_RINGELEM
Definition ring.hpp:677

References ambientR_, Ring::cast_to_SolvableAlgebra(), Ring::cast_to_WeylAlgebra(), Ring::COEFF_BASIC, Ring::COEFF_QQ, coeff_type_, Ring::COEFF_ZZ, denomR_, exp_size, EXPONENT_BYTE_SIZE, gb_ring_, getSkewInfo(), globalZZ, Ring::is_QQ(), is_skew_, is_skew_commutative(), is_solvable_, is_weyl_, is_ZZ_quotient_, K_, M_, Monoid::n_vars(), numerR_, nvars_, overZZ_, poly_size_, PolynomialRing(), qinfo_, Ring::Ring(), skew_, ZERO_RINGELEM, and ZZ_quotient_value_.

Referenced by PolyRing::initialize_poly_ring().