sub method

void sub(
  1. MPData ret,
  2. MPData a,
  3. MPData b
)

Implementation

void sub( MPData ret, MPData a, MPData b ){
	a = clone( a );
	b = clone( b );

	if( a.val(0) < 0 && b.val(0) >= 0 ){
		b.set( 0, -b.val(0) );
		add( ret, a, b );
		return;
	} else if( a.val(0) >= 0 && b.val(0) < 0 ){
		b.set( 0, -b.val(0) );
		add( ret, a, b );
		return;
	} else if( a.val(0) < 0 && b.val(0) < 0 ){
		a.set( 0, -a.val(0) );
		b.set( 0, -b.val(0) );
		sub( ret, b, a );
		return;
	}

	if( cmp( a, b ) < 0 ){
		_sub( ret, b, a );
		ret.set( 0, -ret.val(0) );
	} else {
		_sub( ret, a, b );
	}
}