This functionality does not run in MATLAB.
_subtract(x, y) subtracts y from x.
The difference operator - does not call _subtract(x, y). The difference x - y is equivalent to x + (-y) = _plus (x, _negate(y)).
To implement the slot d::_subtract for your domain d, use the following convention:
If both x and y are elements of d, the slot must return an appropriate difference of type d.
If x or y is not an element of d and cannot be converted to an element of d, the slot must return FAIL.
If x or y is not an element of d, but can be converted to type d, use the following approach. This object must be converted to an element of d only if the mathematical semantics is obvious to all users of d, including the users who treat this domain as a "black box". For example, you can regard integers as rational numbers because of the natural mathematical embedding, but you must make sure that all users are aware of this approach. Otherwise, the "_subtract" method must return FAIL instead of using implicit conversions. If you use implicit conversions for the elements of your domain, document these conversions.
In the MuPAD® standard installation, most of the library domains comply with this convention.
_subtract can subtract polynomials of the DOM_POLY type from a polynomial of the same type. The polynomials must have the same indeterminates and the same coefficient ring.
_subtract can subtract finite sets from a finite set. For finite sets X and Y, the difference is the set .
Compute the difference of the following arithmetical expressions by using the _subtract method. Then, compute the difference of the same expressions by using the difference operator:
_subtract(x, y), x - y
Although both _subtract and the difference operator return the same result for these expressions, the _subtract call is not equivalent to x - y:
type(hold(x - y)), type(hold(_subtract(x, y)))
Use the _subtract function when combining the following lists:
zip([a, b, c, d], [1, 2, 3, 4], _subtract)