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

◆ lift()

bool SchurRing2::lift ( const Ring * R,
const ring_elem f,
ring_elem & result ) const
virtual

Implements Ring.

Definition at line 466 of file schur2.cpp.

469{
470 const schur_poly *f1 = f.get_schur_poly();
471 if (Rg == coefficientRing || Rg == globalZZ)
472 {
473 if (get_scalar(f1, result))
474 {
475 if (Rg == globalZZ)
476 return coefficientRing->lift(globalZZ, result, result);
477 return true;
478 }
479 }
480 else
481 {
482 const SchurRing2 *Sg = Rg->cast_to_SchurRing2();
483 if (Sg != nullptr)
484 {
486 {
487 result = Sg->truncate(f);
488 return true;
489 }
490
491 return lift_coeffs(Sg, f, result);
492 }
493 }
494 return false;
495}
bool get_scalar(const schur_poly *f, ring_elem &result) const
Definition schur2.cpp:273
ring_elem truncate(const ring_elem f) const
Definition schur2.cpp:512
bool lift_coeffs(const SchurRing2 *Sg, const ring_elem f, ring_elem &resultRE) const
Definition schur2.cpp:407
const Ring * getCoefficientRing() const
Definition schur2.hpp:175
const Ring * coefficientRing
Definition schur2.hpp:154
RingZZ * globalZZ
Definition relem.cpp:13
VALGRIND_MAKE_MEM_DEFINED & result(result)
const schur_poly * get_schur_poly() const
Definition ringelem.hpp:137

References Ring::cast_to_SchurRing2(), coefficientRing, get_scalar(), ring_elem::get_schur_poly(), getCoefficientRing(), globalZZ, lift_coeffs(), result(), Ring::Ring(), SchurRing2(), and truncate().