sub method
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 );
}
}