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

◆ IM2_RingElement_to_ComplexInterval()

gmp_CCiorNull IM2_RingElement_to_ComplexInterval ( const RingElement * a)

Definition at line 218 of file ringelement.cpp.

219{
220 const Ring *R = a->get_ring();
223
224 switch (R->ringID())
225 {
226 case M2::ring_RR:
230 mpfi_init2(result->re, 53);
231 mpfi_init2(result->im, 53);
232 mpfi_set_d(result->re, a->get_value().get_double());
233 mpfi_set_d(result->im, 0);
234 return moveTo_gmpCCi(result);
235 case M2::ring_RRR:
236 R1 =
237 dynamic_cast<const M2::ConcreteRing<M2::ARingCCi> *>(R);
241 mpfi_init2(result->re, R1->get_precision());
242 mpfi_init2(result->im, R1->get_precision());
243 mpfi_set_fr(result->re, a->get_value().get_mpfr());
244 mpfi_set_d(result->im, 0);
245 return moveTo_gmpCCi(result);
246 case M2::ring_RRi:
247 R1 =
248 dynamic_cast<const M2::ConcreteRing<M2::ARingCCi> *>(R);
252 mpfi_init2(result->re, R1->get_precision());
253 mpfi_init2(result->im, R1->get_precision());
254 mpfi_set(result->re, a->get_value().get_mpfi());
255 mpfi_set_d(result->im,0);
256 return moveTo_gmpCCi(result);
257 case M2::ring_CCC:
258 R1 =
259 dynamic_cast<const M2::ConcreteRing<M2::ARingCCi> *>(R);
263 mpfi_init2(result->re, R1->get_precision());
264 mpfi_init2(result->im, R1->get_precision());
265 mpfi_set_fr(result->re, &a->get_value().get_cc()->re);
266 mpfi_set_fr(result->im, &a->get_value().get_cc()->im);
267 return moveTo_gmpCCi(result);
268 case M2::ring_CCi:
269 R1 =
270 dynamic_cast<const M2::ConcreteRing<M2::ARingCCi> *>(R);
274 mpfi_init2(result->re, R1->get_precision());
275 mpfi_init2(result->im, R1->get_precision());
276 mpfi_set(result->re, &a->get_value().get_cci()->re);
277 mpfi_set(result->im, &a->get_value().get_cci()->im);
278 return moveTo_gmpCCi(result);
279 default:
280 ERROR("expected an element of CCi");
281 return nullptr;
282 }
283}
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
gmp_CCi moveTo_gmpCCi(gmp_CCimutable _z)
Definition gmp-util.h:174
@ ring_CCC
Definition aring.hpp:90
@ ring_RR
Definition aring.hpp:87
@ ring_RRR
Definition aring.hpp:89
@ ring_RRi
Definition aring.hpp:91
@ ring_CCi
Definition aring.hpp:92
const int ERROR
Definition m2-mem.cpp:55
VALGRIND_MAKE_MEM_DEFINED & result(result)
#define getmemstructtype(S)
Definition m2-mem.h:143
mpfi_ptr gmp_RRimutable
Definition m2-types.h:152
struct gmp_CCimutable_struct * gmp_CCimutable
Definition m2-types.h:165
mpfr_srcptr get_mpfr() const
Definition ringelem.hpp:130
mpfi_srcptr get_mpfi() const
Definition ringelem.hpp:131
double get_double() const
Definition ringelem.hpp:126
cc_srcptr get_cc() const
Definition ringelem.hpp:133
cci_srcptr get_cci() const
Definition ringelem.hpp:134

References ERROR, ring_elem::get_cc(), ring_elem::get_cci(), ring_elem::get_double(), ring_elem::get_mpfi(), ring_elem::get_mpfr(), M2::ConcreteRing< RingType >::get_precision(), RingElement::get_ring(), RingElement::get_value(), getmemstructtype, moveTo_gmpCCi(), result(), M2::ring_CCC, M2::ring_CCi, M2::ring_RR, M2::ring_RRi, M2::ring_RRR, and Ring::ringID().