====== add ======
===== Description =====
Add two numbers.
===== Function prototype =====
variant add  
===== Arguments =====
^  Name  ^  Type  ^ Comment ^
|  //arg1//  |  variant  | The first number to be added. |
|  //arg2//  |  variant  | The second number to be added. |
If the type of //arg1// is not equal to that of //arg2//, the ordering of the arguments may change the result of calls to ''add''. See [[#Algebra of variables of dissimilar types]].
===== Return value =====
The sum of //arg1// and //arg2//, in the data type of //arg1//.
===== Example =====
float f
set f 50.1
echo 
... the output of which is written to the event log by [[plugins:general:zeoscript:reference:functions:echo]] as:
70.1
===== Comments =====
==== Algebra of variables of dissimilar types ====
If the type of //arg2// is different to that of //arg1//, //arg2// will be typecast to the type of //arg1//. Thus, in certain circumstances, the the result of ''add'' will be different if the argument order is swapped, even if the values are unchanged.
For example, consider the case of adding a float (//f// = 4.5) and an integer (//i// = 4):
float f
int i
set f 4.5
set i 4
echo  // 'f' goes first, so comparing as floats
echo  // 'i' goes first, so comparing as integers
The result of this code is:
8.5
8
In the first addition in the above script (''echo ''), the first argument is a float (//f// = 4.5) so the second argument (//i// = 4) will be typecast to a float with the value of 4.0. The sum of 4.5 and 4.0 is 8.5.
In the second addition in the above script (''echo ''), the first argument is a integer (//i// = 4) so the second argument (//f// = 4.5) will be typecast to an integer with the value of 4. The sum of 4 and 4 is 8.
The moral of the story is: when performing algebraic operations on variables, consider the type of the variables when deciding the argument order.
===== See also =====
  * [[plugins:general:zeoscript:reference:functions:sub]]
  * [[plugins:general:zeoscript:reference:functions:mul]]
  * [[plugins:general:zeoscript:reference:functions:div]]
  * [[plugins:general:zeoscript:reference:functions:mod]]
  * [[plugins:general:zeoscript:reference:functions:incr]]
  * [[plugins:general:zeoscript:reference:functions:decr]]