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

◆ IM2_RingElement_to_BigReal()

gmp_RRorNull IM2_RingElement_to_BigReal ( const RingElement * a)

Definition at line 136 of file ringelement.cpp.

137{
138 const Ring *R = a->get_ring();
141
142 switch (R->ringID())
143 {
144 case M2::ring_RR:
146 mpfr_init2(result, 53);
147 mpfr_set_d(result, a->get_value().get_double(), MPFR_RNDN);
148 return moveTo_gmpRR(result);
149 case M2::ring_RRR:
150 R1 =
151 dynamic_cast<const M2::ConcreteRing<M2::ARingRRR> *>(R);
153 mpfr_init2(result, R1->get_precision());
154 mpfr_set(result, a->get_value().get_mpfr(), MPFR_RNDN);
155 return moveTo_gmpRR(result);
156 default:
157 ERROR("expected an element of RRR");
158 return nullptr;
159 }
160}
virtual unsigned long get_precision() const
virtual M2::RingID ringID() const
Definition ring.hpp:164
ring_elem get_value() const
Definition relem.hpp:79
const Ring * get_ring() const
Definition relem.hpp:81
xxx xxx xxx
Definition ring.hpp:102
mpfr_srcptr moveTo_gmpRR(mpfr_ptr _z)
Definition gmp-util.h:153
@ ring_RR
Definition aring.hpp:87
@ ring_RRR
Definition aring.hpp:89
const int ERROR
Definition m2-mem.cpp:55
VALGRIND_MAKE_MEM_DEFINED & result(result)
#define getmemstructtype(S)
Definition m2-mem.h:143
mpfr_ptr gmp_RRmutable
Definition m2-types.h:150
mpfr_srcptr get_mpfr() const
Definition ringelem.hpp:130
double get_double() const
Definition ringelem.hpp:126

References ERROR, ring_elem::get_double(), ring_elem::get_mpfr(), M2::ConcreteRing< RingType >::get_precision(), RingElement::get_ring(), RingElement::get_value(), getmemstructtype, moveTo_gmpRR(), result(), M2::ring_RR, M2::ring_RRR, and Ring::ringID().