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

◆ towerExtendedGCD()

const RingElement * towerExtendedGCD ( const RingElement * F,
const RingElement * G,
const RingElement ** A,
const RingElement ** B )

Definition at line 446 of file tower.cpp.

450{
451 const Tower *R = F->get_ring()->cast_to_Tower();
452 const Tower *S = G->get_ring()->cast_to_Tower();
453 if (R == nullptr || R != S)
454 {
455 ERROR("encountered different rings");
456 }
457
458 ring_elem u, v;
459 ring_elem result = R->gcd_extended(F->get_value(), G->get_value(), u, v);
460 *A = RingElement::make_raw(R, u);
461 *B = RingElement::make_raw(R, v);
462 return RingElement::make_raw(R, result);
463}
virtual const Tower * cast_to_Tower() const
Definition ring.hpp:241
ring_elem get_value() const
Definition relem.hpp:79
static RingElement * make_raw(const Ring *R, ring_elem f)
Definition relem.cpp:20
const Ring * get_ring() const
Definition relem.hpp:81
ring_elem gcd_extended(const ring_elem f, const ring_elem g, ring_elem &u, ring_elem &v) const
Definition tower.cpp:374
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
VALGRIND_MAKE_MEM_DEFINED & result(result)
tbb::flow::graph G

References Ring::cast_to_Tower(), ERROR, G, Tower::gcd_extended(), RingElement::get_ring(), RingElement::get_value(), RingElement::make_raw(), and result().

Referenced by rawExtendedGCDRingElement().