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

◆ IM2_Ring_localization()

const Ring * IM2_Ring_localization ( const Ring * R,
Computation * C )

Definition at line 359 of file ring.cpp.

360{
361 try
362 {
363 const PolyRing *PR = R->cast_to_PolyRing(); // FIXME should this get a PolyRing or Ring?
365 if (PR == nullptr)
366 {
367 ERROR("expected a polynomial ring");
368 return nullptr;
369 }
370 if (P == nullptr)
371 {
372 ERROR("expected a Grobner basis computation");
373 return nullptr;
374 }
375 if (P->get_ring() != PR)
376 {
377 ERROR("expected matrix to be over the same ring");
378 return nullptr;
379 }
380 return LocalRing::create(PR, P);
381 } catch (const exc::engine_error& e)
382 {
383 ERROR(e.what());
384 return nullptr;
385 }
386}
virtual GBComputation * cast_to_GBComputation()
Definition comp.hpp:111
virtual const Ring * get_ring() const =0
base class for Groebner basis computations.
Definition comp-gb.hpp:69
static LocalRing * create(const PolyRing *R, GBComputation *P)
Definition localring.cpp:18
Concrete PolyRingFlat subclass implementing ordinary commutative polynomial rings K[x_1,...
Definition poly.hpp:64
virtual const PolyRing * cast_to_PolyRing() const
Definition ring.hpp:245
const int ERROR
Definition m2-mem.cpp:55

References Computation::cast_to_GBComputation(), Ring::cast_to_PolyRing(), LocalRing::create(), ERROR, and GBComputation::get_ring().