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

◆ rawTowerRing3()

const Ring * rawTowerRing3 ( const Ring * R1,
engine_RawRingElementArray eqns )

Definition at line 536 of file ring.cpp.

538{
539 try
540 {
541 const Tower *R = R1->cast_to_Tower();
542 if (R == nullptr)
543 {
544 ERROR("expected a tower coefficient ring");
545 return nullptr;
546 }
547 VECTOR(ring_elem) extensions;
548 for (int i = 0; i < eqns->len; i++)
549 {
550 const RingElement *f = eqns->array[i];
551 if (f->get_ring() != R1)
552 {
553 ERROR("extension element has incorrect base ring");
554 return nullptr;
555 }
556 extensions.push_back(f->get_value());
557 }
558 return Tower::create(R, extensions);
559 } catch (const exc::engine_error& e)
560 {
561 ERROR(e.what());
562 return nullptr;
563 }
564}
virtual const Tower * cast_to_Tower() const
Definition ring.hpp:241
ring_elem get_value() const
Definition relem.hpp:79
const Ring * get_ring() const
Definition relem.hpp:81
Front-end-visible "ring element" value: an engine ring_elem paired with the Ring* that gives it meani...
Definition relem.hpp:67
static Tower * create(int charac, M2_ArrayString names)
Definition tower.cpp:46
Ring subclass for tower polynomial rings (Z/p)[x_0][x_1]...[x_{n-1}] modulo a chain of algebraic exte...
Definition tower.hpp:59
const int ERROR
Definition m2-mem.cpp:55
#define VECTOR(T)
Definition newdelete.hpp:78

References Ring::cast_to_Tower(), Tower::create(), ERROR, RingElement::get_ring(), RingElement::get_value(), and VECTOR.