subAndAss method

MathValue subAndAss(
  1. dynamic r
)

Implementation

MathValue subAndAss( r ){
	if( r is MathValue ){
		switch( r._type ){
		case ClipMath.valueTypeComplex:
			switch( type() ){
			case ClipMath.valueTypeComplex: _c.subAndAss( r._c           ); break;
			case ClipMath.valueTypeFract  : _f.subAndAss( r._c.toFloat() ); break;
			case ClipMath.valueTypeTime   : _t.subAndAss( r._c.toFloat() ); break;
			}
			break;
		case ClipMath.valueTypeFract:
			switch( type() ){
			case ClipMath.valueTypeComplex: _c.subAndAss( r._f.toFloat() ); break;
			case ClipMath.valueTypeFract  : _f.subAndAss( r._f           ); break;
			case ClipMath.valueTypeTime   : _t.subAndAss( r._f.toFloat() ); break;
			}
			break;
		case ClipMath.valueTypeTime:
			switch( type() ){
			case ClipMath.valueTypeComplex: _c.subAndAss( r._t.toFloat() ); break;
			case ClipMath.valueTypeFract  : _f.subAndAss( r._t.toFloat() ); break;
			case ClipMath.valueTypeTime   : _t.subAndAss( r._t           ); break;
			}
			break;
		}
	} else {
		switch( type() ){
		case ClipMath.valueTypeComplex: _c.subAndAss( ClipMath.toDouble(r) ); break;
		case ClipMath.valueTypeFract  : _f.subAndAss( ClipMath.toDouble(r) ); break;
		case ClipMath.valueTypeTime   : _t.subAndAss( ClipMath.toDouble(r) ); break;
		}
	}
	return this;
}