modAndAss method
Implementation
MathFract modAndAss( dynamic r ){
if( r is MathFract ){
if( _de == 0 ){
} else if( r._de == 0 ){
_nu = r._nu;
_de = r._de;
} else {
double de = ClipMath.lcm( _de, r._de );
double d = r._nu * de / r._de;
if( d == 0.0 ){
_de = 0;
} else {
_set( ClipMath.fmod( _nu * de / _de, d ), de );
}
}
} else {
double rr = ClipMath.toDouble(r);
double t = (rr < 0.0) ? -rr : rr;
if( t == ClipMath.toInt( t ) ){
if( _de == 0 ){
} else if( t == 0.0 ){
_nu = 0;
_de = 0;
} else {
_set( ClipMath.fmod( _nu, t * _de ), _de );
}
} else {
modAndAss( floatToFract( rr ) );
}
}
return this;
}