addAndAss method
Implementation
MathFract addAndAss( dynamic r ){
if( r is MathFract ){
if( _mi != r._mi ){
// this -= -r
subAndAss( r.minus() );
} else if( _de == 0 ){
} else if( r._de == 0 ){
ass( r );
} else {
double de = ClipMath.lcm( _de, r._de );
_set( _nu * de / _de + r._nu * de / r._de, de );
}
} else {
double rr = ClipMath.toDouble(r);
if( _mi != (rr < 0.0) ){
// this -= -rr
subAndAss( -rr );
} else {
double t = (rr < 0.0) ? -rr : rr;
if( t == ClipMath.toInt( t ) ){
_set( _nu + t * _de, _de );
} else {
addAndAss( floatToFract( rr ) );
}
}
}
return this;
}