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

◆ IM2_RingElement_divmod()

engine_RawRingElementPair IM2_RingElement_divmod ( const RingElement * a,
const RingElement * b )

Definition at line 347 of file ringelement.cpp.

349{
350 try
351 {
352 const Ring *R = a->get_ring();
353 if (R != b->get_ring())
354 {
355 ERROR(
356 "ring remainder requires both elements to have the same base "
357 "ring");
358 return nullptr;
359 }
360 ring_elem fquot;
361 ring_elem frem =
362 R->remainderAndQuotient(a->get_value(), b->get_value(), fquot);
363 if (error()) return nullptr;
364
365 engine_RawRingElementPair result = new engine_RawRingElementPair_struct;
366 result->a = RingElement::make_raw(R, fquot);
367 result->b = RingElement::make_raw(R, frem);
368 return result;
369 } catch (const exc::engine_error& e)
370 {
371 ERROR(e.what());
372 return nullptr;
373 }
374}
virtual ring_elem remainderAndQuotient(const ring_elem f, const ring_elem g, ring_elem &quot) const
Definition ring.cpp:223
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
xxx xxx xxx
Definition ring.hpp:102
int error()
Definition error.c:48
const int ERROR
Definition m2-mem.cpp:55
VALGRIND_MAKE_MEM_DEFINED & result(result)
struct engine_RawRingElementPair_struct * engine_RawRingElementPair
Definition m2-types.h:206

References ERROR, error(), RingElement::get_ring(), RingElement::get_value(), RingElement::make_raw(), Ring::remainderAndQuotient(), and result().