Equal to: Difference between revisions
Miraheze>Adám Brudzewsky No edit summary |
m (Text replacement - "http://help.dyalog.com" to "https://help.dyalog.com") |
||
(9 intermediate revisions by 4 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 | {{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>). | ||
APL's <source lang=apl inline>=</source> 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, <source lang=apl inline>i=j</source> is APL is equivalent to <math>[i=j]</math> or <math>\delta_{ij}</math> ([[wikipedia:Kronecker delta|Kronecker delta]]) in mathematics. | APL's <source lang=apl inline>=</source> 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, <source lang=apl inline>i=j</source> is APL is equivalent to <math>[i=j]</math> or <math>\delta_{ij}</math> ([[wikipedia:Kronecker delta|Kronecker delta]]) in mathematics. | ||
Line 28: | Line 28: | ||
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> | <source lang=apl> | ||
⎕←n ← ((2 1)0)(1 0 3)(2 2⍴4 0) | |||
┌───────┬─────┬───┐ | ┌───────┬─────┬───┐ | ||
│┌───┬─┐│1 0 3│4 0│ | │┌───┬─┐│1 0 3│4 0│ | ||
Line 48: | Line 48: | ||
== 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, also known as | 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 | |||
!<source lang=apl inline>=</source>!!<source lang=apl inline>0</source>!!<source lang=apl inline>1</source> | |||
|- | |||
!<source lang=apl inline>0</source> | |||
|<source lang=apl inline>1</source>||<source lang=apl inline>0</source> | |||
|- | |||
!<source lang=apl inline>1</source> | |||
|<source lang=apl inline>0</source>||<source lang=apl inline>1</source> | |||
|} | |||
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. | |||
[[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. | [[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. | ||
Line 57: | Line 67: | ||
=== Documentation === | === Documentation === | ||
* [ | * [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] | ||
{{APL built-ins}} | {{APL built-ins}}[[Category:Primitive functions]][[Category:Comparison functions]] |
Revision as of 14:23, 14 July 2020
=
|
Equal to (=
) is a comparison function which tests whether argument elements are tolerantly equal to each other: it returns 1 if the elements being compared match and 0 if they do not. It is the negation of Not Equal to (≠
).
APL's =
differs from the usage of in traditional mathematical notation by having an implied Iverson bracket. Thus, i=j
is APL is equivalent to or (Kronecker delta) in mathematics.
Examples
Equal to compares arrays one element at a time, returning 1 when elements match and 0 when they do not.
3 2 1 = 1 2 3 0 1 0 '321' = '123' 0 1 0 3j2 2j2 1j2 = 2j2 0 1 0
It is subject to comparison tolerance: floating-point numbers which are very close together are considered equal, even though they are slightly different:
⎕CT 1E¯14 x ← 1 + (⎕CT×0.6)ׯ2 ¯1 0 1 2 ⍝ Numbers close to 1 1 - x ⍝ Nonzero difference 1.199040867E¯14 5.995204333E¯15 0 ¯5.995204333E¯15 ¯1.199040867E¯14 1 = x ⍝ Close but different values are equal 0 1 1 1 0 1 {⎕CT←0⋄⍺=⍵} x ⍝ Overriding ⎕CT within a dfn 0 0 1 0 0
In a nested APL, Equal to is pervasive, and compares all simple scalars found in a nested array.
⎕←n ← ((2 1)0)(1 0 3)(2 2⍴4 0) ┌───────┬─────┬───┐ │┌───┬─┐│1 0 3│4 0│ ││2 1│0││ │4 0│ │└───┴─┘│ │ │ └───────┴─────┴───┘ 0 = n ┌───────┬─────┬───┐ │┌───┬─┐│0 1 0│0 1│ ││0 0│1││ │0 1│ │└───┴─┘│ │ │ └───────┴─────┴───┘
In a flat array language such as J, it instead compares Boxes directly, since they are the elements of a boxed array.
(<'string') = 'which';'is';'string';'?' 0 0 1 0
Boolean function
- Main article: Boolean function
When the arguments to Equal to are Boolean, it is the Logical biconditional function, or the negation of the xor function (which is Not Equal to restricted to Boolean arguments):
= |
0 |
1
|
---|---|---|
0
|
1 |
0
|
1
|
0 |
1
|
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.
Reduction with =
is the same as reduction with xor (≠
), but inverted if the number of reduced elements is even. The left and right identity element for Boolean =
is 1.