Section: Mathematical Operators
y = a - b
where a
and b
are n
-dimensional arrays of numerical type. In the
first case, the two arguments are the same size, in which case, the
output y
is the same size as the inputs, and is the element-wise
difference of a
and b
. In the second case, either a
or b
is a scalar,
in which case y
is the same size as the larger argument,
and is the difference of the scalar to each element of the other argument.
The type of y
depends on the types of a
and b
using the type
promotion rules. The types are ordered as:
uint8
- unsigned, 8-bit integers range [0,255]
int8
- signed, 8-bit integers [-127,128]
uint16
- unsigned, 16-bit integers [0,65535]
int16
- signed, 16-bit integers [-32768,32767]
uint32
- unsigned, 32-bit integers [0,4294967295]
int32
- signed, 32-bit integers [-2147483648,2147483647]
float
- 32-bit floating point
double
- 64-bit floating point
complex
- 32-bit complex floating point
dcomplex
- 64-bit complex floating point
C
. Numerical overflow rules are also the same as C
.
If a
is a scalar, then the output is computed via
On the other hand, if b
is a scalar, then the output is computed via
int32
is the default type used for
integer constants (same as in C
), hence the output is the
same type:
--> 3 - 8 ans = -5
Next, we use the floating point syntax to force one of the arguments
to be a double
, which results in the output being double
:
--> 3.1 - 2 ans = 1.1000
Note that if one of the arguments is complex-valued, the output will be complex also.
--> a = 3 + 4*i a = 3.0000 + 4.0000i --> b = a - 2.0f b = 1.0000 + 4.0000i
If a double
value is subtracted from a complex
, the result is
promoted to dcomplex
.
--> b = a - 2.0 b = 1.0000 + 4.0000i
We can also demonstrate the three forms of the subtraction operator. First the element-wise version:
--> a = [1,2;3,4] a = 1 2 3 4 --> b = [2,3;6,7] b = 2 3 6 7 --> c = a - b c = -1 -1 -3 -3
Then the scalar versions
--> c = a - 1 c = 0 1 2 3 --> c = 1 - b c = -1 -2 -5 -6