mpPow method
Implementation
void mpPow( ClipParam param, MPData ret, MPData x, int y ){
x = _procMp.clone( x );
if( param.mode() == ClipGlobal.modeFMultiPrec ){
/*
_procMp.fset( ret, x );
for( int i = 1; i < y; i++ ){
_procMp.fmul( ret, ret, x, param.mpPrec() + 1 );
}
*/
_procMp.fset( ret, _procMp.F( "1.0" ) );
while( y > 0 ){
if( (y % 2) == 0 ){
_procMp.fmul( x, x, x, param.mpPrec() + 1 );
y = y ~/ 2;
} else {
_procMp.fmul( ret, ret, x, param.mpPrec() + 1 );
y--;
}
}
} else {
/*
_procMp.set( ret, x );
for( int i = 1; i < y; i++ ){
_procMp.mul( ret, ret, x );
}
*/
_procMp.set( ret, _procMp.I( "1" ) );
while( y > 0 ){
if( (y % 2) == 0 ){
_procMp.mul( x, x, x );
y = y ~/ 2;
} else {
_procMp.mul( ret, ret, x );
y--;
}
}
}
}