Writing Dicom Expression

Dicom expression may be dimensional or dimension-less. You can intuitively write an expression, not so complicated, without knowing any rule.

For example: "1+2*3/4" is a simple dimension-less expression, and "3ft.+1m." is a simple dimensional expression.

Precedence and Associativity rule in Dicom is similar to C/C++ or any other programming language statement. In fact Dicom's operators are a subset of C++ language operators. Some of the functions of Dicom also behave like C/C++ functions.

Apart from the common operators like +, -, *, /, etc. Dicom deals with numerous other operators. Those are listed in Operator Reference in order of their precedence. You can also find this list in Dicom Explorer.

General Rules

You can write expressions in a Dicom Document or Dicom Calculator. Usually a Document is used to calculate many related expressions for a particular task. For ad-hoc calculation Calculator can be used.


Enclose any expression within the begin and end tags when you are writing in a Document. The default begin tag and end tag are [' and '] respectively. So, to evaluate 1+2*3/4 in a document, you have to write ['1+2*3/4'].


You can define suitable begin and end tag of your choice, by using _DOC:, _BEGIN, and _END commands.


Do not use any tag when you are writing expression in Calculator.


Use ";" (semicolon) to separate expressions or commands. Example: length in {inch.}; area in {inch.}^2; x=5 ft; mArea=x^2

Rules for Dimension

Allowable operators in a dimension are as follows:

“*” : Multiplication operator. Associativity is left to right. No operator between two units also mean multiplication.

“/” : Division operator. Associatively is left to right.

“^” or “**” : Exponentiation operator. Exponentiation has higher precedence than multiplication or division.


Dot, [], or {} with a unit are optional, Example: {acre.} is same as acre


Blank between two units is optional if dot is used. Example: acre.ft. Blank between two units is necessary if dot, [] or {} is not used. Example: acre ft


A “*” can also be used to mean multiplication. Example: acre*ft


Use “/ “ in case of “per”. Example: Btu./h./sft. This is not same as Btu./h.sft. The second unit means Btu./(h.sft.)


If you do not know the exact symbol for writing a particular unit, you can select it from the explorer.


To convert one unit to another in an expression, you can use converter operator ("to" or "->"). For example, to convert ft. to {inch.} write ft.-> {inch.} or ft. to {inch.} the result will be obviously 12 {inch.}