Equal to
=

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: floatingpoint 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.
External links
Documentation
APL builtins [edit]  

Primitive functions  
Scalar  
Monadic  Conjugate ∙ Negate ∙ Signum ∙ Not ∙ Roll ∙ Type  
Dyadic  Add ∙ Subtract ∙ Times ∙ Divide ∙ Equal to (Xnor) ∙ Not Equal to (Xor) ∙ Minimum ∙ Maximum ∙ Comparison functions ∙ Complex  
NonScalar  
Structural  Shape ∙ Reshape ∙ Tally ∙ Depth ∙ Ravel ∙ Reverse ∙ Raze ∙ Mix ∙ Cut (K) ∙ Pair ∙ Replicate ∙ Partitioned Enclose  
Selection  First ∙ Take ∙ Drop ∙ Unique ∙ Identity ∙ Select ∙ Bracket index  
Selector  Index generator ∙ Interval Index ∙ Indices  
Computational  Match ∙ Not Match ∙ Nub Sieve ∙ Format ∙ Execute  
Primitive operators  Monadic  Each ∙ Replicate ∙ Commute ∙ Function axis  
Dyadic  Beside ∙ Bind ∙ Reverse Compose  
Quad names  
Arrays  Index origin ∙ Migration level  
Functions  
Operators 