piątek, 6 stycznia 2012

Szybkie potęgowanie

double bpow(double x, long long int n){
        double r=1;
        double xf, xi;
        xf=modf(x, &xi);
        while( 1 ){
                if( n & 1 ){
                        r = r*xi + r*xf; }
                if( n>>=1 ) {
                        xf  = xf*xf + 2*xi*xf;
                        xi *= xi; }
                else 
                        return r; }}

Brak komentarzy:

Prześlij komentarz