Arithmetic
#
Addition
#
| Razor expression | Go Template | Result | Note | 
|---|
| @(1 + 2); | {{ add 1 2 }} | 3 | Addition | 
| @add(4, 5); | {{ add 4 5 }} | 9 | or add | 
| @sum(6,7); | {{ sum 6 7 }} | 13 | or sum | 
| @(2+3); | {{ add 2 3 }} | 5 | Spaces are optional | 
| @( 8 + 9 ); | {{ add 8 9 }} | 17 | You can insert an arbitrary number of spaces in expressions | 
| @sum(1.2, 3.4); | {{ sum 1.2 3.4 }} | 4.6 | It also works with floating point numbers | 
| @sum(1, 2, 3, 4); | {{ sum 1 2 3 4 }} | 10 | It is possible to supply multiple arguments to addition operation | 
| @add(list(1,2,3,4)); | {{ add (list 1 2 3 4) }} | 10 | this is useful on this line since there is ambiguity on where the expression finish | 
Subtraction
#
| Razor expression | Go Template | Result | Note | 
|---|
| @(4 - 2); | {{ sub 4 2 }} | 2 | Subtraction | 
| @sub(4, 2); | {{ sub 4 2 }} | 2 | or sub | 
| @subtract(4, 2); | {{ subtract 4 2 }} | 2 | or subtract | 
Negative values
#
| Razor expression | Go Template | Result | Note | 
|---|
| @(-23); | {{ -23 }} | -23 | Negative value | 
| @(2 + -23); | {{ add 2 -23 }} | -21 | Operation with negative value | 
| @(2 + -(5 * 3)); | {{ add 2 (sub 0 (mul 5 3)) }} | -13 | Operation with negative expression | 
Product
#
| Razor expression | Go Template | Result | Note | 
|---|
| @(2 * 3); | {{ mul 2 3 }} | 6 | Multiplication | 
| @mul(4, 5); | {{ mul 4 5 }} | 20 | or mul | 
| @multiply(6, 7); | {{ multiply 6 7 }} | 42 | or multiply | 
| @prod(8, 9); | {{ prod 8 9 }} | 42 | or prod | 
| @product(10, 11); | {{ product 10 11 }} | 110 | or product | 
| @mul(1, 2, 3, 4); | {{ mul 1 2 3 4 }} | 24 | It is possible to supply multiple arguments to multiplication operation | 
| @mul(list(5,6,7,8)); | {{ mul (list 5 6 7 8) }} | 1680 | or even an array | 
Division
#
| Razor expression | Go Template | Result | Note | 
|---|
| @(4 / 2); | {{ div 4 2 }} | 2 | Division | 
| @(13 ÷ 3); | {{ div 13 3 }} | 4.333333333333333 | you can use the ÷ character instead of / | 
| @div(20, 4); | {{ div 20 4 }} | 5 | or div | 
| @divide(10, 4); | {{ divide 10 4 }} | 2.5 | or divide | 
| @quotient(22, 10); | {{ quotient 22 10 }} | 2.2 | or quotient | 
modulo
#
| Razor expression | Go Template | Result | Note | 
|---|
| @(4 % 3); | {{ mod 4 3 }} | 1 | Modulo | 
| @mod(12, 5); | {{ mod 12 5 }} | 2 | or mod | 
| @modulo(20, 6) | {{ modulo 20 6 }} | 2 | or modulo | 
Power
#
| Razor expression | Go Template | Result | Note | 
|---|
| @(4 ** 3); | {{ pow 4 3 }} | 64 | Power | 
| @pow(12, 5); | {{ pow 12 5 }} | 248832 | or pow | 
| @power(3, 8); | {{ power 3 8 }} | 6561 | or power | 
| @pow10(3); | {{ pow10 3 }} | 1000 | Power 10 | 
| @power10(5); | {{ power10 5 }} | 100000 | or power10 | 
| @(1e+5); | {{ 1e+5 }} | 100000 | Scientific notation (positive) | 
| @(2e-3); | {{ 2e-3 }} | 0.002 | Scientific notation (negative) | 
Bit operators
#
| Razor expression | Go Template | Result | Note | 
|---|
| @(1 « 8); | {{ lshift 1 8 }} | 256 | Left shift | 
| @lshift(3, 5); | {{ lshift 3 5 }} | 96 | or lshift | 
| @leftShift(4, 4); | {{ leftShift 4 4 }} | 64 | or leftShift | 
| @(1024 » 4); | {{ rshift 1024 4 }} | 64 | Right shift | 
| @rshift(456, 3); | {{ rshift 456 3 }} | 57 | or rshift | 
| @rightShift(72, 1); | {{ rightShift 72 1 }} | 36 | or rightShift | 
| @(65535 & 512); | {{ band 65535 512 }} | 512 | Bitwise AND | 
| @band(12345, 678); | {{ band 12345 678 }} | 32 | or band | 
| @bitwiseAND(222, 111); | {{ bitwiseAND 222 111 }} | 78 | or bitwiseAND | 
| @@(1 | 2 | 4); | {{ bor (bor 1 2) 4 }} | 7 | Bitwise OR | 
| @bor(100, 200, 300); | {{ bor 100 200 300 }} | 492 | or bor | 
| @bitwiseOR(64, 256, 4); | {{ bitwiseOR 64 256 4 }} | 324 | or bitwiseOR | 
| @(1 ^ 2 ^ 4); | {{ bxor (bxor 1 2) 4 }} | 7 | Bitwise XOR | 
| @bxor(100, 200, 300); | {{ bxor 100 200 300 }} | 384 | or bxor | 
| @bitwiseXOR(64, 256, 4); | {{ bitwiseXOR 64 256 4 }} | 324 | or bitwiseXOR | 
| @(255 &^ 4); | {{ bclear 255 4 }} | - | Bitwise Clear | 
| @bclear(0xff, 3, 8); | {{ bclear 0xff 3 8 }} | - | or bclear | 
| @bitwiseClear(0xf, 7); | {{ bitwiseClear 0xf 7 }} | - | or bitwiseClear | 
Other mathematic functions
#
Special cases
#
There are special behavior for certain operators depending of the arguments:
String multiplication
#
@("" * 100) will result in {{ mul “” 100 }} which result in: