Пример #1
0
Number* Rational::expt(Number* obj){
    if(sgn()<0){
        Complex* c = new Complex();
        c = SCAST_COMPLEX(c->convert(this));
        Complex* d = SCAST_COMPLEX(c->convert(obj));
        return c->expt(d);
    }else{
        Float* tmpf = new Float();
        tmpf = SCAST_FLOAT(tmpf->convert(obj));
        return new Float(pow(double(*this), double(*SCAST_RATIONAL(obj))));
    }
}
Пример #2
0
Number* Rational::expp(Number* number2)
{
    Rational* rtmp2 = SCAST_RATIONAL(number2);
    if (num_==ZERO_ && rtmp2->num_==ZERO_) return new Float(1);
    else if (num_==ZERO_ && rtmp2->num_!=ZERO_) return new Float(0);
    if(num_.sgn_)
    {
        Complex* c = new Complex;
        c = SCAST_COMPLEX(c->convert(this));
        Complex* d = SCAST_COMPLEX(c->convert(rtmp2));
        return c->expp(d);
    }
    else
    {
        Float* tmpf = new Float;
        tmpf = SCAST_FLOAT(tmpf->convert(rtmp2));
        return new Float(pow(SCAST_FLOAT(tmpf->convert(this))->number_, tmpf->number_));
    }
}