Add: Difference between revisions

Jump to navigation Jump to search
562 bytes added ,  22:11, 10 September 2022
m
Text replacement - "<source" to "<syntaxhighlight"
Miraheze>Adám Brudzewsky
m (Text replacement - "<source" to "<syntaxhighlight")
 
(17 intermediate revisions by 6 users not shown)
Line 1: Line 1:
{{Primitive|+|Add}}, '''Plus''', '''Addition''', or '''Sum''', is a [[dyadic]] [[scalar function]] that [https://en.wikipedia.org/wiki/Addition adds] numbers together. As a [[basic arithmetic]] operation, Add is subject to the language's [[number]] specification. Add shares the glyph <source lang=apl inline>+</source> with the [[monadic]] function [[Conjugate]], and is closely related to [[Subtract]] (<source lang=apl inline>-</source>).
{{Built-in|Add|+}}, '''Plus''', '''Addition''', or '''Sum''', is a [[dyadic]] [[scalar function]] that [[wikipedia:Addition|adds]] numbers together. As a basic arithmetic operation, Add is subject to the language's [[number]] specification. Add shares the glyph <syntaxhighlight lang=apl inline>+</syntaxhighlight> with the [[monadic]] function [[Conjugate]], and is closely related to [[Subtract]] (<syntaxhighlight lang=apl inline>-</syntaxhighlight>).


== Examples ==
== Examples ==


<source lang=apl>
<syntaxhighlight lang=apl>
       1 2 3 + 2 3 4
       1 2 3 + 2 3 4
3 5 7
3 5 7
       0.1 + 3 4 5
       0.1 + 3 4 5
3.1 4.1 5.1
3.1 4.1 5.1
</source>
</syntaxhighlight>


== Properties ==
== Properties ==


Addition is [https://en.wikipedia.org/wiki/Commutative_property commutative] in almost all number systems. It is [https://en.wikipedia.org/wiki/Associative_property associative] when performed with no rounding, but is unlikely to be associative when rounded to an inexact precision (see [[#Floating point error|Floating point error]]).
Addition is [[wikipedia:Commutative property|commutative]] in almost all number systems. It is [[wikipedia:Associative property|associative]] when performed with no rounding, but is unlikely to be associative when rounded to an inexact precision (see [[#Floating point error|Floating point error]]).


The [[identity element]] for Add is <source lang=apl inline>0</source>. The [[inverse]] of the function <source lang=apl inline>n∘+</source> or the equivalent function <source lang=apl inline>+∘n</source> is <source lang=apl inline>-∘n</source>. Using [[Commute]] (<source lang=apl inline>⍨</source>), we can write <source lang=apl inline>+⍣¯1</source> {{←→}} <source lang=apl inline>-⍨</source>.
The [[identity element]] for Add is <syntaxhighlight lang=apl inline>0</syntaxhighlight>. The [[inverse]] of the function <syntaxhighlight lang=apl inline>n∘+</syntaxhighlight> or the equivalent function <syntaxhighlight lang=apl inline>+∘n</syntaxhighlight> is <syntaxhighlight lang=apl inline>-∘n</syntaxhighlight>. Using [[Commute]] (<syntaxhighlight lang=apl inline>⍨</syntaxhighlight>), we can write <syntaxhighlight lang=apl inline>+⍣¯1</syntaxhighlight> {{←→}} <syntaxhighlight lang=apl inline>-⍨</syntaxhighlight>.
 
Since adding a number to itself is equivalent to doubling that number, we can express the ''double'' function as <syntaxhighlight lang=apl inline>+⍨</syntaxhighlight>.
 
=== Reduction ===
 
[[Reduction]] with Add gives the sum of the whole list.


== Scalar mapping ==
== Scalar mapping ==


In mathematics, addition of two identical structures almost always follows the same rules as in APL: it maps over the structures element-wise. This is a fundamental property of a (finite-dimensional) [https://en.wikipedia.org/wiki/Vector_space vector space], in which addition of two vectors is equivalent to adding the coefficients of basis vectors one by one. This property likely inspired APL's definition of a scalar function.
In mathematics, addition of two identical structures almost always follows the same rules as in APL: it maps over the structures element-wise. This is a fundamental property of a (finite-dimensional) [[wikipedia:vector space|vector space]], in which addition of two vectors is equivalent to adding the coefficients of basis vectors one by one. This property likely inspired APL's definition of a scalar function.


Addition of [[Complex number|complex]] and [[hypercomplex numbers]] can also be considered an element-wise operation, since each of these types of numbers forms a vector space over the reals. Addition of scalars is always performed within a single domain: mixed-type addition such as adding a real to a complex number treats the real number as complex with imaginary part zero.
Addition of [[Complex number|complex]] and [[hypercomplex number]]s can also be considered an element-wise operation, since each of these types of numbers forms a vector space over the reals. Addition of scalars is always performed within a single domain: mixed-type addition such as adding a real to a complex number treats the real number as complex with imaginary part zero.


Addition in mathematics does not exhibit [[scalar extension]]: there is usually no way to add values of different types. The [[Multiply]] function on vector spaces does extend scalars, in that a scalar element of a field can be multiplied by a vector over that field.
Addition in mathematics does not exhibit [[scalar extension]]: there is usually no way to add values of different types. The [[Multiply]] function on vector spaces does extend scalars, in that a scalar element of a field can be multiplied by a vector over that field.
Line 27: Line 33:


When using a limited-precision format such as 8-byte floats, the results of addition are rounded in order to fit into the result type. This rounding can cause the results of adding several numbers to be different depending on the order in which they are added, that is, addition fails to be associative:
When using a limited-precision format such as 8-byte floats, the results of addition are rounded in order to fit into the result type. This rounding can cause the results of adding several numbers to be different depending on the order in which they are added, that is, addition fails to be associative:
<source lang=apl>
<syntaxhighlight lang=apl>
       1e20 + ¯1e20 + 1
       1e20 + ¯1e20 + 1
0
0
Line 34: Line 40:
       (1e20 + ¯1e20) + 1      ⍝ Not equivalent
       (1e20 + ¯1e20) + 1      ⍝ Not equivalent
1
1
</source>
</syntaxhighlight>


Addition of floating-point numbers may also be subject to [[overflow]], resulting in a [[DOMAIN ERROR]] or an [[infinite]] result.
Addition of floating-point numbers may also be subject to [[overflow]], resulting in a [[DOMAIN ERROR]] or an [[infinite]] result.
== See also ==
* [[Times]]
* [[Or]]
* [[Union]]


== External Links ==
== External Links ==
Line 42: Line 53:
=== Documentation ===
=== Documentation ===


* [http://help.dyalog.com/latest/Content/Language/Primitive%20Functions/Add.htm Dyalog]
* [https://help.dyalog.com/latest/index.htm#Language/Primitive%20Functions/Add.htm Dyalog]
 
* [http://microapl.com/apl_help/ch_020_020_020.htm APLX]
* [http://microapl.com/apl_help/ch_020_020_020.htm APLX]
* [https://www.jsoftware.com/help/dictionary/d100.htm J Dictionary], [https://code.jsoftware.com/wiki/Vocabulary/plus#dyadic J NuVoc]
* [https://www.jsoftware.com/help/dictionary/d100.htm J Dictionary], [https://code.jsoftware.com/wiki/Vocabulary/plus#dyadic J NuVoc]
 
* [https://mlochbaum.github.io/BQN/doc/arithmetic.html#basic-arithmetic BQN]
{{APL built-ins}}
{{APL built-ins}}[[Category:Primitive functions]][[Category:Scalar dyadic functions]]

Navigation menu