# how are the math node operations in cycles calculated?

How does the math node do calculations with a specific operation:

the usual operations of add,subtract, multiply and divide are quite understandable and are(empirically) very similar to some of the operations in MixRGB node. But, how do the operations such as Sine, Power, Logarithm, Minimum, Maximum, Modulo, Round, etc,.. interpret with the values. How can we visualize this in realtime?

• do you want to see the math behind them or visualize them – Chebhou Jan 17 '16 at 12:13
• actually both, so the output would be much more predictable. – bzal Jan 17 '16 at 23:12

Here is a list of the mathematical equivalents of each operation.

• Add: Out = Value1 + Value2.
• Subtract: Out = Value1 - Value2.
• Multiply: Out = Value1 * Value2.
• Divide: Out = Value1 / Value2.
• Sine: Out = Sin(Value1).
• Cosine: Out = Cos(Value1).
• Tangent: Out = Tan(Value1).
• Arcsin: Out = Sin⁻¹(Value1).
• Arccosine: Out = Cos⁻¹(Value1).
• Arctangent: Out = Tan⁻¹(Value1).
• Power: Out = Value1 ^ Value2.
• Logarithm: Out = log(Value2, Value1).††
• Minimum: Out = Smaller Value of (Value1, Value2).
• Maximum: Out = larger value of (Value1, Value2).
• Round: Out = Value1 rounded to nearest integer.
• Less Than: Out = 1 if Value1 < Value2, else 0'
• Greater Than: Out = 1 if Value1 > Value2, else 0'
• Modulo: Out = Value1 (mod Value2).

Note that some operations use only the first input, in such cases the second input is ignored completely.

†. All trigonometric functions use radians.
††. log(x, y) = the logarithm of x to the base y.
‡. x mod y = the remainder when x is divided by y.

• Is the second input value useless for trigonometric functions? – bzal Jan 17 '16 at 23:12
• @bzal Yes, see edit. – PGmath Jan 18 '16 at 0:57
• what is the clamp for? – bzal Jan 18 '16 at 5:02
• clamp keeps the result between 0 and 1 – sambler Jan 18 '16 at 7:02
• It doesn't work, for example Cosine with a value of 90 should give me 0 I have tried with a translate node with X at 0, I have attached the node and the image moves (more visible with a multiply node in between). – Danyl Bekhoucha Mar 8 '18 at 20:16

It is worth noting that the math is calculated a bit differently than you might think. It has to do with limitations of storing and representing floating point numbers (reals) in a computer (in binary format).

For the same reasons you cannot represent 1/3 in decimal exactly (it is 0.333...) you cannot represent exactly (for example) 1/10 in binary (but it is easy in decimal as 0.1).

The decimal floating-point numbers you enter are only approximated by the binary floating-point numbers actually stored in the machine.

This can result in some surprises. You can see what the number stored in machine actually is like this in a Python Console:

from decimal import Decimal
Decimal(2.675) = 2.67499999999999982236431605997495353221893310546875


So when rounding this number to 2 decimal places it will result in 2.67 instead of 2.68 you expect.

When building large nets of Math Nodes such "errors" can lead to a butterfly effect causing big differences in the end on the output.