fsqrt method

bool fsqrt(
  1. MPData ret,
  2. MPData a,
  3. int prec
)

Implementation

bool fsqrt( MPData ret, MPData a, int prec ){
	a = clone( a );
	if( fcmp( a, F( "0" ) ) > 0 ){
		MPData l = MPData();
		MPData s = MPData();
		MPData t = MPData();
		if( fcmp( a, F( "1" ) ) > 0 ){
			set( s, a );
		} else {
			set( s, F( "1" ) );
		}
		do {
			set( l, s );
			fdiv2( t, a, s, prec );
			fadd( t, t, s );
			fmul( t, t, F( "0.5" ), prec );
			set( s, t );
		} while( fcmp( s, l ) < 0 );
		set( ret, l );
		return false;
	}
	set( ret, F( "0" ) );
	return (fcmp( a, F( "0" ) ) != 0);
}