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