Equal to: Difference between revisions

Jump to navigation Jump to search
1,580 bytes added ,  21:57, 28 November 2022
m
Miraheze>Marshall
(Created page with "{{Built-in|Equal to|<nowiki>=</nowiki>}} is a comparison function which tests whether argument elements are tolerantly equal to each other: it retu...")
 
 
(15 intermediate revisions by 6 users not shown)
Line 1: Line 1:
{{Built-in|Equal to|<nowiki>=</nowiki>}} is a [[comparison function]] which tests whether argument elements are [[Tolerant comparison|tolerantly]] equal to each other: it returns 1 if the [[element]]s being compared [[match]] and 0 if they do not. It is the [[Not|negation]] of [[Not equal to]] (<source lang=apl inline>≠</source>).
{{Built-in|Equal to|<nowiki>=</nowiki>}} is a [[comparison function]] which tests whether argument elements are tolerantly<ref>[[Robert Bernecky|Bernecky, Robert]]. [https://www.jsoftware.com/papers/satn23.htm "Comparison Tolerance"]. Sharp APL Technical Notes. 1977-06-10;.</ref> equal to each other: it returns 1 if the [[element]]s being compared [[match]] and 0 if they do not. It is the [[Not|negation]] of [[Not Equal to]] (<syntaxhighlight lang=apl inline>≠</syntaxhighlight>).
 
APL's <syntaxhighlight lang=apl inline>=</syntaxhighlight> differs from the usage of <math>=</math> in [[Comparison with traditional mathematics|traditional mathematical notation]] by having an implied [[Ken_Iverson#Iverson_bracket|Iverson bracket]]. Thus, <syntaxhighlight lang=apl inline>i=j</syntaxhighlight> is APL is equivalent to <math>[i=j]</math> or <math>\delta_{ij}</math> ([[wikipedia:Kronecker delta|Kronecker delta]]) in mathematics.


== Examples ==
== Examples ==


Equal to compares arrays one [[element]] at a time, returning 1 when elements match and 0 when they do not.
Equal to compares arrays one [[element]] at a time, returning 1 when elements match and 0 when they do not.
<source lang=apl>
<syntaxhighlight lang=apl>
       3 2 1 = 1 2 3
       3 2 1 = 1 2 3
0 1 0
0 1 0
Line 11: Line 13:
       3j2 2j2 1j2 = 2j2
       3j2 2j2 1j2 = 2j2
0 1 0
0 1 0
</source>
</syntaxhighlight>
It is subject to [[comparison tolerance]]: floating-point numbers which are very close together are considered equal, even though they are slightly different:
It is subject to [[comparison tolerance]]: floating-point numbers which are very close together are considered equal, even though they are slightly different:
<source lang=apl>
<syntaxhighlight lang=apl>
       ⎕CT
       ⎕CT
1E¯14
1E¯14
Line 23: Line 25:
       1 {⎕CT←0⋄⍺=⍵} x                  ⍝ Overriding ⎕CT within a dfn
       1 {⎕CT←0⋄⍺=⍵} x                  ⍝ Overriding ⎕CT within a dfn
0 0 1 0 0
0 0 1 0 0
</source>
</syntaxhighlight>
In a [[Nested array model|nested]] APL, Equal to is pervasive, and compares all [[simple scalar]]s found in a [[nested array]].
In a [[Nested array model|nested]] APL, Equal to is pervasive, and compares all [[simple scalar]]s found in a [[nested array]].
<source lang=apl>
<syntaxhighlight lang=apl>
       ⊢n ← ((2 1)0)(1 0 3)(2 2⍴4 0)
       ⎕←n ← ((2 1)0)(1 0 3)(2 2⍴4 0)
┌───────┬─────┬───┐
┌───────┬─────┬───┐
│┌───┬─┐│1 0 3│4 0│
│┌───┬─┐│1 0 3│4 0│
Line 38: Line 40:
│└───┴─┘│    │  │
│└───┴─┘│    │  │
└───────┴─────┴───┘
└───────┴─────┴───┘
</source>
</syntaxhighlight>
In a [[Flat array model|flat]] array language such as [[J]], it instead compares [[Box]]es directly, since they are the [[element]]s of a boxed array.
In a [[Flat array model|flat]] array language such as [[J]], it instead compares [[Box]]es directly, since they are the [[element]]s of a boxed array.
<source lang=j>
<syntaxhighlight lang=j>
   (<'string') = 'which';'is';'string';'?'
   (<'string') = 'which';'is';'string';'?'
0 0 1 0
0 0 1 0
</source>
</syntaxhighlight>


== Boolean function ==
== Boolean function ==
{{Main|Boolean function}}
When the arguments to Equal to are [[Boolean]], it is the [[wikipedia:Logical biconditional|Logical biconditional]] function, or the [[Not|negation]] of the [[xor]] function (which is [[Not Equal to]] restricted to Boolean arguments):
{|class=wikitable
!<syntaxhighlight lang=apl inline>=</syntaxhighlight>!!<syntaxhighlight lang=apl inline>0</syntaxhighlight>!!<syntaxhighlight lang=apl inline>1</syntaxhighlight>
|-
!<syntaxhighlight lang=apl inline>0</syntaxhighlight>
|<syntaxhighlight lang=apl inline>1</syntaxhighlight>||<syntaxhighlight lang=apl inline>0</syntaxhighlight>
|-
!<syntaxhighlight lang=apl inline>1</syntaxhighlight>
|<syntaxhighlight lang=apl inline>0</syntaxhighlight>||<syntaxhighlight lang=apl inline>1</syntaxhighlight>
|}
In the context of logic, it can be read as ''if and only if''. This function is also known as xnor or the Kronecker delta.


When the arguments to Equal to are [[Boolean]], it is the [[wikipedia:Logical biconditional|Logical biconditional]] function, or the [[Not|negation]] of the [[xor]] function (which is [[Not Equal to]] restricted to Boolean arguments.
[[Reduction]] with <syntaxhighlight lang=apl inline>=</syntaxhighlight> is the same as reduction with xor (<syntaxhighlight lang=apl inline>≠</syntaxhighlight>), but [[Not|inverted]] if the number of reduced elements is even. The left and right [[identity element]] for Boolean <syntaxhighlight lang=apl inline>=</syntaxhighlight> is 1.


[[Reduction]] with <source lang=apl inline>=</source> is the same as reduction with xor (<source lang=apl inline>≠</source>), but [[Not|inverted]] if the number of reduced elements is even. The left and right [[identity element]] for Boolean <source lang=apl inline>=</source> is 1.
== External links ==


== External links ==


=== Documentation ===
=== Documentation ===


* [http://help.dyalog.com/latest/index.htm#Language/Primitive%20Functions/Equal.htm Dyalog]
* [https://help.dyalog.com/latest/index.htm#Language/Primitive%20Functions/Equal.htm Dyalog]
* [http://microapl.com/apl_help/ch_020_020_310.htm APLX]
* [http://microapl.com/apl_help/ch_020_020_310.htm APLX]
* J [https://www.jsoftware.com/help/dictionary/d000.htm Dictionary], [https://code.jsoftware.com/wiki/Vocabulary/eq#dyadic NuVoc]
* J [https://www.jsoftware.com/help/dictionary/d000.htm Dictionary], [https://code.jsoftware.com/wiki/Vocabulary/eq#dyadic NuVoc]
* [https://mlochbaum.github.io/BQN/doc/arithmetic.html#comparisons BQN]
== References ==
<references />
{{APL built-ins}}[[Category:Primitive functions]][[Category:Comparison functions]]

Navigation menu