Difference between revisions of "Subtract"
m (5 revisions imported: Migrate from miraheze) 
m 

Line 53:  Line 53:  
* [http://microapl.com/apl_help/ch_020_020_040.htm APLX]  * [http://microapl.com/apl_help/ch_020_020_040.htm APLX]  
* J [https://www.jsoftware.com/help/dictionary/d120.htm Dictionary], [https://code.jsoftware.com/wiki/Vocabulary/minus#dyadic NuVoc]  * J [https://www.jsoftware.com/help/dictionary/d120.htm Dictionary], [https://code.jsoftware.com/wiki/Vocabulary/minus#dyadic NuVoc]  
+  {{APL builtins}} 
Latest revision as of 00:32, 13 January 2020
 This page describes the dyadic arithmetic function. For negation of a single argument, see Negate. For subtraction of sets, see Without.


Subtract (
), Minus, Subtraction, or Difference is a dyadic scalar function which gives the arithmetic difference of its arguments. Subtract shares the glyph 
with the arithmetic function Negate, and its result is the left argument plus the negation of the right.
Examples
¯2 9 5  3 ¯4 6
¯5 13 ¯1
× 3  2 3 4.5 ⍝ Sign of difference
1 0 ¯1
The second example computes a threeway comparison of each pair of arguments, with a result of 1
to indicate the left argument was greater, 0
to indicate the arguments are intolerantly equal, and ¯1
to indicate the right argument was greater.
Properties
See also Plus#Properties.
Subtraction is anticommutative: swapping the arguments negates the result, or using Commute, ⍨

.
Reduction and scan
Reduction with Subtract gives an alternating sum of the argument array, that is, elements are alternately added and subtracted to the result. The first element, third element, and so on are added to the final result while the second, fourth, and so on are subtracted.
6  1  2
7
/ 6 1 2
7
In the absense of rounding error we have /v
+/v×(⍴v)⍴1 ¯1
for a vector v
.
An interesting property of the alternating difference is that it can be used as a divisibility test for division by 11, a counterpart to the betterknown test for divisibility by 9. A number is divisible by 11 if and only if the sum of its digits is divisible by 11, so repeatedly taking the alternating sum of the digits determines divisibility by 11.
11  946 943
0 8
⌿ 10 (⊥⍣¯1) 946 943
11 8
(⌿ 10 ⊥⍣¯1 ⊢)⍣≡ 946 943
0 2
Scan with subtraction produces a prefix of an alternating series. This property is one of the reasons why scan was designed to reduce prefixes rather than suffixes of the argument array. As an example, we can see that an alternating series using the powers of two begins to converge to a third:
\ ÷2*⍳6
0.5 0.25 0.375 0.3125 0.34375 0.328125
External links
Documentation
APL builtins [edit]  

Primitive functions  
Scalar  
Monadic  Conjugate ∙ Not ∙ Roll ∙ Type  
Dyadic  Add ∙ Subtract ∙ Equal to (Xnor) ∙ Not Equal to (Xor)  
NonScalar  
Structural  Shape ∙ Reshape ∙ Tally ∙ Depth ∙ Ravel ∙ Reverse ∙ Raze ∙ Mix ∙ Cut (K)  
Selection  Take ∙ Drop ∙ Unique ∙ Identity  
Selector  Interval Index  
Computational  Match ∙ Not Match ∙ Nub Sieve  
Primitive operators  Each  
Quad names  
Arrays  Index origin ∙ Migration level  
Functions  
Operators  
Other  Zilde ∙ High minus ∙ Function axis 