Formula Specification in Templates
The list of formula specifications used in Templates. (Notes: bold inputs for functions are linked to the data in program).
Logical
| Name | Syntax, parameters | Description | Example | 
|---|---|---|---|
| AND | AND(Boolean1;Boolean2; ... ) | Returns TRUE if all of its arguments are TRUE | AND(3=3;2=2) ⇒ TRUE | 
| OR | OR(Boolean1;Boolean2; ... ) | Returns TRUE if any of its arguments are TRUE | OR(3=4;2=3) ⇒ FALSE | 
| TRUE | TRUE() | Returns the logical value TRUE | IF(TRUE();1;2) ⇒ 1 | 
| FALSE | FALSE() | Returns the logical value FALSE | IF(FALSE();1;2) ⇒ 2 | 
| IF | IF(Test;Then;Else) | Specifies a logical test to perform
 - inputs can be linked to data - result can be number, text, logical value  | 
Result is number (bold inputs linked to data X[0;1;2;3;4;5;6]):
 IF(220>200;220-200;200-220) ⇒ 20 IF(120>MAX({X⇕});120;-1) ⇒ 120 IF(MAX({X⇓2:⇓3})>{X⇓7};MAX({X⇓2:⇓3});{X⇓7})) ⇒ 6 IF(MAX(1;2)>6;MAX(1;2);6) ⇒ 6 Result is text: Input {Coordinate Z} = 210;{GWT} = 180 IF({Coordinate Z}>0;"Above terrain";"Under terrain") ⇒ "Top above terrain" IF({GWT}<{Coordinate Z};"GWT under top of the test.";"Measure error.") ⇒ "GWT under top of the test."  | 
| IFS | IFS(Test1;Then1;Test2;Then2; ... ;Else) | Checks whether one or more conditions are met and returns a value that corresponds to the first TRUE condition | Input {GWT} = 15
 IFS({GWT}>8;10;{GWT}>6;9;{GWT}>3;8;-1) ⇒ 10  | 
| NOT | NOT(Boolean) | Reverses the logic of its argument | IF(NOT(5>6);175;155) ⇒ 175
 IF(NOT(5>4);175;155) ⇒ 155 IF(NOT("A"="B");175;155)⇒ 175  | 
| SWITCH | SWITCH(Switch;Case1;Result1;Case2;Result2; ... ;[ Else ]) | Evaluates an expression against a list of values and returns the result corresponding to the first matching value. If there is no match, an optional default value may be returned | SWITCH(50>6;TRUE();44;FALSE();56;-111) ⇒ 44
 SWITCH(30/6;3;120;4;220;5;320;420) ⇒ 320  | 
Mathematical
| Name | Syntax, parameters | Description | Example | 
|---|---|---|---|
| ABS | ABS(Number) | Returns the absolute value of a number | ABS(120) ⇒ 120; ABS(-120) ⇒ 120 | 
| ACOS | ACOS(Number) | Returns the arccosine of a number ⟨-Pi/2; Pi/2⟩ | for Number=0.5 ... DEGREES(ACOS(0.5)) ⇒ 60° | 
| ACOT | ACOT(Number) | Returns the arccotangent of a number ⟨0; Pi⟩ | for Number=1 ... DEGREES(ACOT(1)) ⇒ 45° | 
| ASIN | ASIN(Number) | Returns the arcsine of a number ⟨-Pi/2; Pi/2⟩ | for Number=0.5 ... DEGREES(ASIN(0.5)) ⇒ 30° | 
| ATAN | ATAN(Number) | Returns the arctangent of a number ⟨-Pi/2; Pi/2⟩ | for Number=1 ... DEGREES(ATAN(1)) ⇒ 45° | 
| CEILING | CEILING(Number;[Multiple=1];[Mode=0]) | Rounds a number to the nearest integer or to the nearest multiple of significance
 - if Number<0 and Mode<>0 ⇒ result is rounded up - if Number<0 and Mode=0 ⇒ result is rounded down  | 
CEILING(10.4) ⇒ 11
 CEILING(10.4;1) ⇒ 11 CEILING(10.4;5) ⇒ 15 CEILING(10.8;5) ⇒ 15 CEILING(-10.4;5;0) ⇒ -10 CEILING(-10.4;5;1) ⇒ -15 CEILING(-10.4;2;0) ⇒ -10 CEILING(-10.4;2;1) ⇒ -12  | 
| COS | COS(Angle[rad]) | Returns the cosine of the given angle in rad | for α=60° ... COS(RADIANS(60)) ⇒ 0.5 | 
| SIN | SIN(Angle[rad]) | Returns the sine of the given angle in rad | for α=30° ... SIN(RADIANS(30)) ⇒ 0.5 | 
| COT | COT(Angle[rad]) | Returns the cotangent of an angle in rad | for α=45° ... COT(RADIANS(45)) ⇒ 1 | 
| TAN | TAN(Angle[rad]) | Returns the tangent of an angle in rad | for α=45° ... TAN(RADIANS(45)) ⇒ 1 | 
| EXP | EXP(Number) | Returns e raised to the power of a given number | EXP(1) ⇒ 2.71828 | 
| FLOOR | FLOOR(Number;[Multiple=1];[Mode=0]) | Rounds a number down, to the nearest integer multiple of significance
 - if Number<0 and Mode<>0 ⇒ result is rounded to zero - if Number<0 and Mode=0 ⇒ result is rounded away from zero  | 
FLOOR(10.4;1;0) ⇒ 10
 FLOOR(10.9;1;0) ⇒ 10 FLOOR(10.4;7;0) ⇒ 7 FLOOR(-10.4;1;0) ⇒ -11 FLOOR(-10.4;1;1) ⇒ -10 FLOOR(-10.4;7;0) ⇒ -14 FLOOR(-10.4;7;1) ⇒ -7  | 
| LN | LN(Number) | Returns the natural logarithm of a number | LN(1)) ⇒ 0; LN(EXP(1)) ⇒ 1 | 
| LOG | LOG(Number;[Base=10]) | Returns the logarithm of a number to a specified base (10 if missing) | LOG(1; 10) ⇒ 0; LOG(10; 10) ⇒ 1 | 
| LOG10 | LOG10(Number) | Returns the base-10 logarithm of a number | LOG10(1) ⇒ 0; LOG10(10) ⇒ 1 | 
| MROUND | MROUND(Number;Multiple) | Returns a number rounded to the desired multiple
 - rounds up, if the remainder after dividing the number by the multiple is ≥ to Multiple / 2.  | 
MROUND(10.4;1) ⇒ 10
 MROUND(10.4;2) ⇒ 10 MROUND(10;3) ⇒ 9 (Remainder = 1 < 1.5 (Multiple/2) MROUND(11;3) ⇒ 12 (Remainder = 2 > 1.5 (Multiple/2)  | 
| PI | PI() | Returns the value of pi | PI() ⇒ 3.141592653 | 
| POWER | POWER(Base;Number) | Returns the result of a number raised to a power | POWER(2;4) ⇒ 16 | 
| SQR | SQR(Number) | Returns the result of a squared number | SQR(5) ⇒ 25; SQR(-5) ⇒ 25 | 
| SQRT | SQRT(Number) | Returns a positive square root of a positive Number | SQRT(36) ⇒ 6; SQRT(-36) ⇒ NAN | 
| SUM | SUM(Number1;Number2; ... ) | Returns the sum of a series of numbers | Inputs linked to data X[0;1;2;3;4;5;6]):
 SUM({X⇓2:⇓5}) ... SUM(1; 2; 3; 4) ⇒ 10 SUM({X⇕}) ⇒ 21  | 
| SUMIF | Returns the sum of all the values that meet a given criteria | ||
| SUMIFS | Returns the sum of all the values that meet the given criterias | ||
| DEG | DEGREES(Angle [rad]) | Converts radians into degrees | DEGREES(PI()) ⇒ 180°; DEGREES(PI()/2) ⇒ 90° | 
| RADIANS | RADIANS(Number) | Converts degrees to radians | RADIANS(180) ⇒ π (3.141592653) | 
| ROUND | ROUND(Number;Places) | Rounds a number to a specified number of digits
 - negative Places round to the left of the decimal point  | 
ROUND(58.563;3) ⇒ 58.563
 ROUND(58.563;2) ⇒ 58.56 ROUND(58.563;1) ⇒ 58.6 ROUND(58.563;0) ⇒ 59 ROUND(58.563;-1) ⇒ 60 ROUND(58.563;-2) ⇒ 100  | 
| ROUNDUP | ROUNDUP(Number;Places) | Rounds a number up, toward zero | ROUNDUP(58.563;3) ⇒ 58.564
 ROUNDUP(58.563;2) ⇒ 58.57 ROUNDUP(58.563;1) ⇒ 58.6 ROUNDUP(58.563;0) ⇒ 59  | 
| ROUNDDOWN | ROUNDDOWN(Number;Places) | Rounds a number down, toward zero | ROUNDDOWN(58.563;3) ⇒ 58.563
 ROUNDDOWN(58.563;2) ⇒ 58.56 ROUNDDOWN(58.563;1) ⇒ 58.5 ROUNDDOWN(58.563;0) ⇒ 58 ROUNDDOWN(58.563;-1) ⇒ 50 ROUNDDOWN(58.563;-2) ⇒ 0  | 
Text
| Name | Syntax, parameters | Description | Example | 
|---|---|---|---|
| CONCAT | CONCAT(Value1;Value2; ... ) | Combines the text from multiple ranges and/or strings, but it doesn't provide the delimiter or IgnoreEmpty arguments
 - Value1, Value2, ... can be as Text or Number  | 
CONCAT(12;34;56) ⇒ 123456.000
 CONCAT("12";"34";"56") ⇒ 123456.000 CONCAT(12;"34";56) ⇒ 123456.000 Input {GWTb} = 15 CONCAT({GWTb};" m") ⇒ "15 m"  | 
| LEFT | LEFT(Text;[Count=1]) | Returns the leftmost characters from a text value | LEFT("qwert";3) ⇒ "qwe"
 LEFT("qwert";1) ⇒ "q"  | 
| LEN | LEN(Text) | Returns the number of characters in a text string | LEN("qwert") ⇒ 5
 LEN("") ⇒ 0  | 
| RIGHT | RIGHT(Text;[Count=1]) | Returns the rightmost characters from a text value | RIGHT("qwert";3) ⇒ "ert"
 RIGHT("qwert";1) ⇒ "t"  | 
| SEARCH | SEARCH(Find text;Within text;[Start=1]) | Finds one text value within another (not case-sensitive) | SEARCH("G";"Hello GEO!";1) ⇒ 7 | 
| TEXT | Converts number to text | 
Statistical
| Name | Syntax, parameters | Description | Example | 
|---|---|---|---|
| AVERAGE | AVERAGE(Number1;Number2; ... ) | Returns the average of its arguments | AVERAGE(3;5;1) ⇒ 3
 Inputs linked to data X[0;1;2;3;4;5;6]): AVERAGE({X⇓3:⇓5}) ... AVERAGE(2; 3; 4) ⇒ 3  | 
| AVERAGEIF | Returns the average (arithmetic mean) of all the values that meet a given criteria | ||
| AVERAGEIFS | Returns the average (arithmetic mean) of all the values that meet the given criterias | ||
| MAX | MAX(Number1;Number2; ... ) | Returns the maximum value in a list of arguments | MAX(3;5;1) ⇒ 5
 Inputs linked to data X[0;1;2;3;4;5;6]): MAX({X⇓3:⇓5}) ... AVERAGE(2; 3; 4) ⇒ 3  | 
| MIN | MIN(Number1;Number2; ... ) | Returns the minimum value in a list of arguments | MIN(3;5;1) ⇒ 1
 Inputs linked to data X[0;1;2;3;4;5;6]): MIN({X⇓3:⇓5}) ... AVERAGE(2; 3; 4) ⇒ 2  | 
| PERCENTIL | PERCENTILE(Array;k) | Returns the k-th percentile of values in a range | Inputs linked to data X[1;2;3;4;5]):
 PERCENTILE({X⇕};0.5) ⇒ 3  | 
| PERCENTILE.EXC | PERCENTILE.EXC(Array;k) | Returns the k-th percentile of values in a range, where k is in the range 0..1, exclusive | Inputs linked to data X[1;2;3;4;5]):
 PERCENTILE.INC({X⇕};1) ⇒ NAN PERCENTILE.INC({X⇕};0.4) ⇒ 2.4  | 
| PERCENTILE.INC | PERCENTILE.INC(Array;k) | Returns the k-th percentile of values in a range | Inputs linked to data X[1;2;3;4;5]):
 PERCENTILE.INC({X⇕};1) ⇒ 5  | 
| STDEV | STDEV(Number1;Number2; ... ) | Estimates standard deviation based on a sample | Inputs linked to data X[1;2;3;4;5]):
 STDEV({X⇕}) ⇒ 1.581  | 
| STDEV.P | STDEV.P(Number1;Number2; ... ) | Calculates standard deviation based on the entire population | Inputs linked to data X[1;2;3;4;5]):
 STDEV.P({X⇕}) ⇒ 1.414  | 
| STDEV.S | STDEV.S(Number1;Number2; ... ) | Estimates standard deviation based on a sample | Inputs linked to data X[1;2;3;4;5]):
 STDEV.S({X⇕}) ⇒ 1.581  | 
| TRIMMEAN | Returns the mean of the interior of a data set | ||
| MODE | MODE(Number1;Number2; ... ) | Returns the most common value in a data set | Inputs linked to data X[1;2;3;4;5]):
 MODE(({X⇕}) ⇒ NAN MODE(({X⇕};3) ⇒ 3  | 
| MEDIAN | MEDIAN(Number1;Number2; ... ) | Returns the median of the given numbers | MEDIAN(1;2;3;4;5;6;7) ⇒ 4 | 
Lookup
| Name | Syntax, parameters | Description | Example | |
|---|---|---|---|---|
| INDEX | INDEX(Array;Index) | Uses an index to choose a value from a reference or array | Inputs linked to data Y[15;16;11;27;22]):
 INDEX({Y⇓};2) ⇒ 16 INDEX({Y⇓};4) ⇒ 27 INDEX({Y⇓};9) ⇒ NAN  | 
|
| LINEARINTERPOLATION | LINEARINTERPOLATION(X;Coordinates X;Coordinates Y) | Calculates Y corresponding to X based upon linear interpolation of coordinates X, Y | ||
| MATCH | MATCH(Value;Array;[ Type = 1 ]) | Looks up values in a reference or array
 - Type = 1 find max. value less or equal to Value ...values in Array must be sorted in ascending order - Type = -1 find min. value greater or equal to Value ...values in Array must be sorted in descending order - Type = 0 find first value equal to Value ...values in Array needn't to be sorted  | 
Inputs linked to data Y[15;16;11;27;22]):
 MATCH(11;{Y⇕}) ⇒ 3 MATCH(27;{Y⇕}) ⇒ 4 MATCH(999;{Y⇕}) ⇒ NAN  | 
Matrix
| Name | Syntax, parameters | Description | Example | ||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| FILTERTABLE | FILTERTABLE(Coordinates X;Coordinates Y) | Filters repeating values and keeps the last one of them
 Returns matrix with 2 columns: Column 1: X - Filtered X Column 2: Y - Filtered Y  | 
Inputs linked to data
 FILTERTABLE({X-value⇕};{Y-value⇕}) ( 
  | 
||||||||||||||||||||||||||||||||||||||||||||||||||||
| LINEARTREND | LINEARTREND(Coordinates X;Coordinates Y) | Returns the linear trend line
 Returns matrix with 1 row and 2 columns: 
  | 
Inputs linked to data
 X[1;2;3;4;5]; Y[15;16;11;27;22] LINEARTREND({X⇕};{Y⇕}) NumRows = 1 
  | 
||||||||||||||||||||||||||||||||||||||||||||||||||||
| LINEARTRENDANDPOINTS | LINEARTRENDANDPOINTS(Coordinates X;Coordinates Y) | Returns the linear trend line and its point representation
 Returns matrix with 2 rows and 4 columns: 
  | 
Inputs linked to data
 X[1;2;3;4;5]; Y[15;16;11;27;22] LINEARTREND({X⇕};{Y⇕}) NumRows = 2; 
  | ||||||||||||||||||||||||||||||||||||||||||||||||||||
| LINEARTRENDSC | LINEARTRENDSC(Center X;Radius) | Returns the linear trend line for semi-circles
 Returns matrix with 1 row and 2 columns: 
  | 
Inputs linked to data
 X[4;8;15]; R[3;5;8] LINEARTRENDSC({X⇕};{R⇕}) NumRows = 1 
  | 
||||||||||||||||||||||||||||||||||||||||||||||||||||
| LINEARTRENDSCANDPOINTS | LINEARTRENDSCANDPOINTS(Center X;Radius) | Returns the linear trend line for semi-circles and its point representation
 Returns matrix with 2 rows and 4 columns: 
  | 
Inputs linked to data
 X[4;8;15]; R[3;5;8] LINEARTRENDSCANDPOINTS({X⇕};{R⇕}) NumRows = 2 
  | ||||||||||||||||||||||||||||||||||||||||||||||||||||
| LINEARTRENDTOPOINTS | LINEARTRENDTOPOINTS(Slope;Offset) | Returns points of the linear trend line
 Returns matrix with 2 rows and 2 columns: 
  | 
LINEARTRENDTOPOINTS(0,5;3)
 NumRows = 2 
  | 
||||||||||||||||||||||||||||||||||||||||||||||||||||
| SEMICIRCLETOPOINTS | SEMICIRCLETOPOINTS(Center X;Radius;[Points count 10]) | Returns points of the semi-circle
 Returns matrix with 2 rows and [Points count] columns: 
  | 
SEMICIRCLETOPOINTS(0,5;3;10)
 NumRows = 10 
  | 
||||||||||||||||||||||||||||||||||||||||||||||||||||
| POLYNOMIALTREND | POLYNOMIALTREND(Coordinates X;Coordinates Y;[Order=2];[Force origin=False]) | Returns the polynomial trend curve
 Returns matrix with 1 columns: Column 1 coefficients: c - Coefficients c0 + c1*x + c2*x2 + ...  | 
POLYNOMIALTRENDANDPOINTS({X-Input⇕};{Y-Input⇕};2;9)
 Order = 2 Points count = 9 Coeff.: c0 = 8,238; c1 = 13.203; c2 = -1.32 Approx. formula: y = -1,32x2 + 13,203x + 8,238 Results: 
  | 
||||||||||||||||||||||||||||||||||||||||||||||||||||
| POLYNOMIALTRENDANDPOINTS | POLYNOMIALTRENDANDPOINTS(Coordinates X;Coordinates Y;[Order=2 ];[Points count=10];[Force origin=False]) | Returns the polynomial trend curve and its point representation
 Returns matrix with 3 columns: Column 1 coefficients: c - Coefficients c0 + c1*x + c2*x2 + ... Column 2: X - Coordinates X Column 3: Y - Coordinates Y Force origin: True ... if you want include point (0,0) in Coordinates X and Y  | |||||||||||||||||||||||||||||||||||||||||||||||||||||
| SPLINE | SPLINE(Coordinates X;Coordinates Y;[Points count=20]) | Returns points of the spline running through given points
 Returns matrix with 2 columns: Column 1: X - Coordinates X Column 2: Y - Coordinates Y Coordinates X and Y are part of the Spline curve Inputs: 
  | 
SPLINE({X-Input⇕};{Y-Input⇕};[Num of Points])
 Num of Points = 8 Results: 
  | 
Informative
| Name | Syntax, parameters | Description | Example | |
|---|---|---|---|---|
| ISIMPERIAL | ISIMPERIAL() | Returns TRUE if project is calculated in imperial units | If the project is in imperial [ft, in, ...] units:
 ISIMPERIAL() ⇒ TRUE; ⇒ 1 ISMETRIC() ⇒ FALSE; ⇒ 0  | 
|
| ISMETRIC | ISMETRIC() | Returns TRUE if project is calculated in metric units | If the project is in metric [m, mm, ...] units:
 ISMETRIC() ⇒ TRUE; ⇒ 1 ISIMPERIAL() ⇒ FALSE; ⇒ 0  | 
|
| ISNUMBER | Returns TRUE if argument is number | |||
| ISTEXT | Returns TRUE if argument is text | |||
| LANG | LANG() | LANG([ Application = False ]) | If the application is in English and output language is Spanish:
 LANG(FALSE()) ⇒ EN; LANG(0) ⇒ EN LANG(TRUE()) ⇒ ES; LANG(1) ⇒ ES  | 
Geotechnic
| Name | Syntax, parameters | Description | Example | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| FINESOILCLASSIFICATION | FINESOILCLASSIFICATION(Plasticity Index [-];Moisture [-];
 Method 0 = EN ISO 14688-2 (2018); 1 = EN ISO 14688-2 (2013); 2 = ČSN 73 6133) For classification we can use these standards for plasticity diagram: | 
Returns the classification of fine soil according to selected method
 For inputs use number from interval (0;1) FINESOILCLASSIFICATION(0.137;0.333;0) ⇒ ClL or percetage FINESOILCLASSIFICATION(13.7/100;33.3/100;0) ⇒ ClL or inputs linked to data according to unit FINESOILCLASSIFICATION({I\_p\-⇓ [-]}/100;{LiqLimit⇓ [-]}/100;0) or inputs linked to data with unit setup FINESOILCLASSIFICATION({I\_p\-⇓ [-]};{LiqLimit⇓ [-]};0) | 
FINESOILCLASSIFICATION(0.137;0.333;0) ⇒ ClLFINESOILCLASSIFICATION(0.137;0.333;1) ⇒ ClL | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| SOILCLASSIFICATION | SOILCLASSIFICATION(Size [mm];Fall [-];Method 0 = EN ISO 14688-2 (2018)) | Returns the classification of soil according to selected method | 
  | 
Date and Time
| Name | Syntax, parameters | Description | Example | 
|---|---|---|---|
| DATE | DATE(Year;Month;Day) | Returns the serial number of a particular date | DATE(1899;12;30) ⇒ 0
 DATE(2024;10;31) ⇒ 45596 Inputs linked to data {MyYear}=2024;{MyMonth}=10;{MyDay}=31 DATE({MyYear};{MyMonth};{MyDay}) ⇒ 45596  | 
| NOW | NOW() | Returns the serial number of the current date and time | For date and time 20.12.2024 13:48:04 is
 NOW() ⇒ 45646.5750510648 For date and time 01.01.1900 00:00:00 is NOW() ⇒ 1.00  | 
| TIME | TIME(Hour;Minute;Second) | Returns the serial number of a particular time | TIME(0;0;0) ⇒ 0
 TIME(18;15;20) ⇒ 0.760648 Inputs linked to data {MyHour}=10[hour];{MyMinute}=15[min.];{MySecond}=25[sec.] TIME({MyHour};{MyMinute};{MySecond}) ⇒ 0.42737  | 
| TODAY | TODAY() | Returns the serial number of the current date | For date 20:12:2024
 TODAY() ⇒ 45646 For date 1.1.1900 TODAY() ⇒ 1  | 

