- cl_I s = ::lcm(::denominator(The(::cl_RA)(r)), ::denominator(The(::cl_RA)(i)));
- return numeric(::complex(::numerator(The(::cl_RA)(r))*(exquo(s,::denominator(The(::cl_RA)(r)))),
- ::numerator(The(::cl_RA)(i))*(exquo(s,::denominator(The(::cl_RA)(i))))));
- }
- }
-#else
- else if (instanceof(*value, ::cl_RA_ring)) {
- return numeric(TheRatio(*value)->numerator);
- }
- else if (!this->is_real()) { // complex case, handle Q(i):
- cl_R r = ::realpart(*value);
- cl_R i = ::imagpart(*value);
- if (instanceof(r, ::cl_I_ring) && instanceof(i, ::cl_I_ring))
- return numeric(*this);
- if (instanceof(r, ::cl_I_ring) && instanceof(i, ::cl_RA_ring))
- return numeric(::complex(r*TheRatio(i)->denominator, TheRatio(i)->numerator));
- if (instanceof(r, ::cl_RA_ring) && instanceof(i, ::cl_I_ring))
- return numeric(::complex(TheRatio(r)->numerator, i*TheRatio(r)->denominator));
- if (instanceof(r, ::cl_RA_ring) && instanceof(i, ::cl_RA_ring)) {
- cl_I s = ::lcm(TheRatio(r)->denominator, TheRatio(i)->denominator);
- return numeric(::complex(TheRatio(r)->numerator*(exquo(s,TheRatio(r)->denominator)),
- TheRatio(i)->numerator*(exquo(s,TheRatio(i)->denominator))));
+ cl_I s = ::lcm(::denominator(The(::cl_RA)(r)), ::denominator(The(::cl_RA)(i)));
+ return numeric(::complex(::numerator(The(::cl_RA)(r))*(exquo(s,::denominator(The(::cl_RA)(r)))),
+ ::numerator(The(::cl_RA)(i))*(exquo(s,::denominator(The(::cl_RA)(i))))));