function subtract() {
  var set;
  if (subtract.arguments.length == 2)
   {
    set = subtract.arguments[1];
   }
  else if (subtract.arguments.length == 1)
   {
    set = this.plainMC;
   }
  else
   {
    throw "subtract(): " + subtract.arguments.length + " arguments given; expected 1 or 2";
   }
  var rhs = subtract.arguments[0];
  //--com.ibm.icu.math.BigDecimal newrhs;
  var newrhs;
  if (set.lostDigits)
   this.checkdigits(rhs,set.digits);
  // [add will recheck .. but would report -rhs]
  /* carry out the subtraction */
  // we could fastpath -0, but it is too rare.
  newrhs=this.clone(rhs); // safe copy
  newrhs.ind=-newrhs.ind; // prepare to subtract
  return this.add(newrhs,set); // arithmetic
  }
Returns a <code>BigDecimal</code> whose value is <code>this-rhs</code>.
<p>
Implements the subtraction (<b><code>-</code></b>) operator
(as defined in the decimal documentation, see {@link BigDecimal
class header}),
and returns the result as a <code>BigDecimal</code> object.

@param  rhs The <code>BigDecimal</code> for the right hand side of
            the subtraction.
@param  set The <code>MathContext</code> arithmetic settings.
@return     A <code>BigDecimal</code> whose value is
            <code>this-rhs</code>.
@stable ICU 2.0