Disambiguation note 

The equality sign, equals sign, or "=" is a mathematical symbol used to indicate equality. It was invented in 1557 by Welshman Robert Recorde. The equals sign is placed between the things stated to be exactly the same, as in an equation. It is the Unicode and ASCII character 003D (in hexadecimal).
Contents 
The "=" symbol that is now universally accepted by mathematics for equality was first recorded by Welsh mathematician Robert Recorde in The Whetstone of Witte (1557). The original form of the symbol was much wider than the present form. In his book Recorde explains his design of the "Gemowe lines" (meaning twin lines, from the Latin gemini):
...to auoide the tediouſe repetition of theſe woordes : is equalle to : I will ſette as I doe often in woorke vſe, a paire of paralleles, or Gemowe lines of one lengthe, thus: =, bicauſe noe .2. thynges, can be moare equalle.
...to avoid the tedious repetition of these words: "is equal to", I will set (as I do often in work use) a pair of parallels (or Gemowe^{[1]} lines) of one length (thus =), because no two things can be more equal.
However, a manuscript from the University of Bologna, dated from 1550–68, features the same equality symbol, possibly predating its usage by Recorde.^{[citation needed]} According to Scotland's St Andrews University Maths History website:^{[2]}
The symbol '=' was not immediately popular. The symbol  was used by some and æ (or œ), from the Latin word aequalis meaning equal, was widely used into the 1700s.
In mathematics, the equals sign is used for both assignment (ex: let x = 2
) and for testing or denoting equality (ex: if x = 2 then x/2 = 1
).
In some computer programming languages, the equals sign likewise denotes both (e.g., in BASIC). In most computer programming languages, however, the equals sign only denotes either assignment (e.g., in Clike languages) or else equality testing (e.g., in Pascal or Eiffel), with some different operator denoting the other operation.
In some orthographies, the equals sign is also used as a tone letter.
The colon is also used as a grammatical tone letter in the orthographies of Budu in the CongoKinshasa, in Krumen, Mwan and Dan in the Ivory Coast.^{[3]}^{[4]} The Unicode character used for the tone letter (U+A78A) is different from the mathematical symbol (U+003D).
Symbols used to denote items that are approximately equal are "wavy" equals sign
The symbol used to denote when items are not equal is a slashed equals sign "≠" (Unicode 2260). In programming, "!=" is used instead as a way to circumvent the limited ASCII character set.
The triple bar symbol "≡" (Unicode 2261) is often used to indicate an identity, a definition (which can also be represented by "≝", Unicode 225D), or a congruence relation in modular arithmetic. The symbol "≘" can be used to express that an item corresponds to another.
The symbol “≅” is often used to indicate isomorphic algebraic structures or congruent geometric figures.
Equality of truth values, i.e. biimplication or logical equivalence, may be denoted by various symbols including =, ~, and ⇔.
Most programming languages, which are limited to the ASCII character set, use "~=", "!=", "/=", "=/=" or "<>" to represent "not equal to"; "!=" has carried over into newsgroups and Internet forums.
In programming languages, the equals sign may either denote a boolean operator to test equality of values (sometimes a double equals sign "=="), or it may denote an assignment (sometimes denoted with a colonequals ":=", or ≔, ≐^{[citation needed]}, ≗^{[citation needed]}). In some programming languages such as PHP a double equals sign ("==") denotes equality, meaning that the variables may not be of the same data type, but their values can be reduced to the same value.
In PHP, the triple equals sign ("===") denotes identicalness [1], meaning that not only do the two values evaluate to the same boolean value, they are also of the same data type. For instance, the expression ("0 == false") is true, but ("0 === false") is not, because the number 0 is an integer value (whereas false is a boolean).
JavaScript has the same semantics for ===, referred to as "equality without type coercion". However in JavaScript the behavior of == cannot be described by any simple consistent rules. The expression ("0 == false") is true, but ("0 == undefined") is false, even though both sides of the == act the same in boolean context. For this reason it is recommended to avoid the == operator in JavaScript in favor of ===.^{[5]}
In Ruby, equality under == requires both operands to be of identical type, e.g. ("0 == false") is false. === is flexible and may be defined arbitrarily by any given type. For example a value of type Range is a range of integers, such as (1800..1899). "(1800..1899) == 1844" is false, since the types are different (Range vs. integer); however "(1800..1899) === 1844" is true, since Range defines === to mean "inclusion in the range"^{[6]}. Note that under these semantics, === is noncommutative; e.g. "1844 === (1800..1899)" is false, since it is interpreted to mean integer === rather than Range ===.^{[7]}
The equals sign is often misused in steps of a mathematical argument, when used to connect steps of math rather than to show equality. For example, if one was finding the sum of the numbers 1, 2, 3, 4, and 5, one might say: 1 + 2 = 3 + 3 = 6 + 4 = 10 + 5 = 15. This is clearly incorrect, because each part of the equality has a different value. If interpreted strictly as it says, it implies 3 = 6 = 10 = 15. A correct version of the argument would be 1 + 2 = 3, 3 + 3 = 6, 6 + 4 = 10, 10 + 5 = 15.
