Wednesday, July 26, 2006

Currency Conversion in Dicom

Currency in Dicom is treated like any another physical quantity (like mass, length, time, etc.). So syntax to convert one currency from another is same as you convert units.

10 USD to EUR

The above will convert 10 US dollars to Euro. Note that Dicom's 3 character long currency symbols are standard ISO symbols that are also being used by renowned systems like, SAP, etc.

One advantage of treating currency as another physical quantity is, you can calculate expression that involves currency along with other units.

10 USD/mi to EUR/km

Updating Currency Rate

Needless to say that Currency value is ever changing. So, you need to update currency rate. In Dicom it is plain and simple, you just assign the new value.

1 EUR = 1.1 USD
1 GBP = 1.7 USD

Unfortunately, version 4.0 do not automatically update currency from internet. You can, however still update using a batch file.

Updating Currency Rate in a Batch

Write down all your currency assignments as in the example above in a text file. You can use notepad to edit your file. You may separate each assignment either by newline or by semicolon.
Save your file.

In Dicom calculator enter the following command:

RUN '<input file>'

Replace <input file> with the actual path and filename. Single quotes are required. Press enter. Dicom will update the currencies as instructed in the file.

Dicom's RUN command can take an optional output file name, like:

RUN '<input file>' '<output fle>'

You may use the above syntax to check out the results and errors if any. You may collect up to date currency rate from

You may use RUN command for other purposes also e.g. to set up Dicom environment. The input file is not a Dicom document file but a batch of calculator commands and expressions. So input file content should be simple text file containing barebone commands, expressions and functions (without any document tags and document specific commands) that you can execute from Dicom calculator.

Monday, July 24, 2006

Solving Equations in Dicom

To some extent Dicom conversion calculator can be used to solve equations. If an equation can be written in a manner so that it converges on each iteration you can easily solve that equation in Dicom.

Let us consider the following equation:


The equation is a polynomial of third degree. We may re-write it as


The process of solving this equation is - at first we assume a value of x and then calculate the right hand side (RHS) with the assumed value of x. We then better our assumption with the new value of x as the calculated value and continue this process untill assumed value and calculated value converge within the range we can tolerate.

If we solve the equation manually with an assumed value of x=1, the result will be as follows:

Iteration Assumed (x) Calculated (RHS)
1 x=1.00 1.71
2 x=1.71 2.57
3 x=2.57 3.16
4 x=3.16 3.47
.. .. ..
After a few iterations we will have x=3.71 and RHS=3.71 which may be considered as the solution to the value of x with acceptable accurcy.

Using Dicom this process can be carried out automatically. To do this we need to use expression opeartor (:=) and Loop() function in Dicom.

Expression Operator

The expression operator is an unique feature of Dicom conversion calculator which tells Dicom to remember the expression and recalculate whenever a variable of the expression is changed. This operator is different from assignment (=) opeartor.

In short, the difference between expression operator (:=) and assignment operator (=) is that the expression operator assigns expression to a memory variable, while the assignment operator assigns value to a memory variable.

We can define the right hand side of the equation as the expression y as below:
y := (17*x-12)^(1/3)

to see how expression (:=) operator works in Dicom, enter the following in Dicom calculator and press enter.

x=1; y

You will see the result being1.7099759466767. N
ow change the value of x=1 to x=2 and press enter. Voila, the value of y has also been changed to 2.80203933065539.

Loop() Function

Now we need to evaluate y with calculated value on each iteration. Dicom Loop() function syntax is as below:

Loop( intNum, 'exprn')

Where, intNum is an integer number denoting the no of iterations and exprn is the expression to iterate and should be written within single quotes.

We want to assume the first value of x=1; then we calculate the value of y and assign the calculated value to x. So expression we want to iterate is 'x=y'. Let's iterate it 20 times. Below is the resulting dicom instructions:

y := (17*x-12)^(1/3)
; x=1; Loop(20, 'x=y')

Cut and paste the above instructions in Dicom calculator. You will get the value of x after 20 iteration and it is 3.71021341594725.

Let's recalculate it for 100 iterations:

y := (17*x-12)^(1/3)
; x=1; Loop(100, 'x=y')

And we get x=

To clear out Dicom memory i.e. any previous assignment, expression, etc. you may use RECLAIM command before issuing new instructions to Dicom that stores memory varables.

RECLAIM; y := (17*x-12)^(1/3) ; x=1; Loop(100, 'x=y')

Grab a copy of Dicom, it is absolutely free. You can download it here.

Thursday, July 20, 2006

Date and Time Functions in Dicom Unit Conversion Calculator

Dicom conversion calculator has numerous built in date and time functions. Discussed here are some of the most commonly used ones:

  • Cdate( [date_args] ) - returns date part of the date/time specified by the parameters
  • Ctime( [date_args] ) - returns time part of the date/time specified by the parameters
  • Cdatex( [date_args] ) - returns date and time specified by the parameters

date_args in each of the cases is optional. When date_args is omitted the functions return current date and time as appropriate.

That means:

  • Cdate() = Current Date. The Today() function also produces same output.
  • Ctime() = Current Time
  • Cdatex() = Current Date and Time. The Now() function also returns same output.

Date Parameters

In place of date_args you can optionaly specify day, month, year, hour, minute and second.

date_args = day [, month [, [year [, [hour [, [minute [, second ] ] ] ] ] ]

The defults for missing parameters are assumed as month=January, year=0001, hour=00, minute=00, and second=00.

Thus, the valid syntaxes for the Cdate() function are:

Cdate() = current date
Cdate(20) = 20 January 0001
Cdate(20,2) = 20 February 0001
Cdate(20,2,2006) = 20 February 2006

Ctime() = current time
Ctime(20,2,2006) = 00:00:00
Ctime(20,2,2006,13) = 13:00:00
Ctime(20,2,2006,13,30) = 13:15:00
Ctime(20,2,2006,13,30,5) = 13:15:05

Cdatex() function works in a similar manner also.

There are many date/time related functions in dicom that require date_args, for example:

  • Age( [date_args] ) - Seconds elapsed between current and speified date/time
  • Cdow( [date_args] ) - Name of the day of the week
  • Cmonth( [date_args] ) - Name of the month
  • Day( [date_args] ) - Day of the month
  • DayNum( [date_args] ) - Day serial of the year, 1 January being 1st day
  • DaySerial( [date_args] ) - Day serial since 01-Jan-0001
  • Dow( [date_args] ) - Day of the week (0=Sunday, 6=Saturday)
  • DowISO( [date_args] ) - ISO day of the week (0=Moday, 6=Sunday)
  • Month( [date_args] ) - Month no (1-12) of the year
  • Second( [date_args] ) - Seconds elapsed since 01-Jan-0001 00:00:00
  • WeekNum( [date_args] ) - Week no (1-52) of the year
  • WeekNumISO( [date_args] ) - ISO week no (0-52) of the year
  • Year( [date_args] ) - Year of the date

Note that in each of the above functions date_args are optional and if you don't specify it, current date/time will be assumed.

You can assign the ouput of Cdate(), Ctime() or Cdatex() functions to a memory variable and use that variable in place of date_args as well.


LandingOnMoon = Cdate(16, 7, 1969); TimePassed = Age(LandingOnMoon)

You may also use: Age(16, 7, 1969)

Tuesday, July 18, 2006

Controlling Precision and Presentation - DECIMAL, DIGIT and FORMAT

Dicom calculation result can be formatted using DECIMAL, DIGIT, and FORMAT command.

  • DECIMAL is used to set number of digits after decimal point, large value is displayed in normal notation
  • DIGIT is used to set number of significant digits, large value is displayed using exponential notation
  • FORMAT is used to format the result

Syntax of DECIMAL Command


n can be any value between 0 and 18. If it is not specified or 0 the decimal is reset to default 15.


DECIMAL; 2.34^15 = 345332.824799534
DECIAML 2; 2.34^15 = 345332.82

Syntax of DIGIT Command


n can be any value between 0 and 18. If it is not specified or 0 the decimal is reset to default 15.


DIGIT; 2.34^15 = 345332.824799534
DIGIT 2; 2.34^15 =3.5e+005

You may notice that DIGIT or DECIMAL without any value specified defaults to same format, which is 15 significant digits with exponential form for large value.

Syntax of FORMAT Command


spec is the format specifier enclosed within single quotes ( ' )
The spec follows the C/C++ format convention. Some examples are shown below:


FORMAT '%x' ; 255 = ff (hexadecimal)
FORMAT '%i' ; 13/3 = 4 (signed integer)
FORMAT '%f' ; 13/3 = 4.333333 (6 decimal float)
FORMAT '%.15g' ; 13/3 = 4.33333333333333 (dicom default i.e. 15 decimal float, may use exponential notation when required)

Clik here to visit Knowbotron's web site.

Monday, July 17, 2006

Dicom Conversion Calculator can Handle Binary, Octal, Hexadecimal and Arbitrary Based Numbers

Converting a Base-N Number to Decimal Number

In Dicom a value without any base indicator is a decimal value as usual.

Example: 100, 1.234, 1e-10 etc.

However you can specify the base value of a number in Dicom. To do this you need to follow the syntax below:

0b<base value>:<number>

Here, base value can be any value between 2 and 36


Binary number or base-2

0b2:10101010 (decimal 170)

Octal number or base-8

0b8:1234567 (decimal 342391)

Hexadecimal number or base-16

0b16:2345FF (decimal 2311679)

An arbitrary base-36 number

0b36:19ADZ (decimal 2112983)

Note that the digits and letters allowed in an arbitrary N (36>=N>=2) based number are first N number of digits and letters from the list below:

0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z

Thus for a binary number only allowed digits are: 0 and 1.

For an octal number allowed digits are 0 to 7.

For a hexadecimal number allowed digits are 0 to 9 and letters A to F.

For a 36 based number all 36 values (0 to 9 plus A to Z) are allowed.

If you don't specify digits and letters from the allowed range an "Unknown string" or "Missing operator" error will occur.

Converting a Decimal Number to a Base-N Number

You can use FORMAT command to specify the base value to be converted to. The syntax is as below:

FORMAT '0b<base value>'


FORMAT '0b2'; 170

= 0b2:10101010

FORMAT '0b8'; 342391

= 0b8:1234567

FORMAT '0b16'; 2311679

= 0b16:2345ff

FORMAT '0b36'; 2112983

= 0b36:19adz

Note that FORMAT command without any specification will reset Dicom to decimal value formatting.

Converting a Base-X number to a Base-Y Number

Set FORMAT to specify base value Y to convert to. Enter the X-based representation of the number to convert.

Example: Convert binary 10101010 to hexadecimal number

FORMAT '0b16'; 0b2:10101010

= 0b16:aa

Sunday, July 16, 2006

Runtime Modes of Dicom Unit Conversion Calculator

Dicom unit conversion calculator in normal mode
Dicom unit conversion calculator can run in any of the four modes described below.

Compact Mode - Document and Calculator view, suitable for adhoc calculation.

Normal Mode - Explorer, Document, Calculator, and Converter all are on stage (in the figure above). The normal view is suitable for document based mass computation.

Custom Mode - As configured by you. As an example you may want just the calculator to be in front when you run Dicom

Tray Only - Only tray Icon view, suitable if you always want dicom to be active and ready for calculation and conversion.

You can select runtime mode from the menu, choose "File > Preferences... > Mode Settings > Startup Mode"

Dicom unit conversion calculator is available here for free download.

Dicom Working Set

Dicom unit conversion calculator - working setDicom unit conversion calculator has 650 built-in unit symbols. These are the symbols that can define a physical quantity on its own. You can combine these symbols in an infinite number of ways as required (eg. ft./s. is a combination of ft. and s. to represent speed).

However, you may not require all these units for your day to day business. Your profession may require just a limited set of symbols. To address this issue Dicom implemented a concept of Working Set.

An Working Set is a collection of unit symbols for a particular purpose. Dicom has some pre-defined working set for fields such as Astronomy, Business, Civil Engineering, Electrical Engineering, Grocery Shop, Jwellery, Kitchen, etc. However, you can create your own working set of units.

Create your own Working Set

  • Activate Dicom Explorer. If it is not already active you can choose View > Explorer to display it.
  • Click on Unit tab of the explorer
  • Right Clcik on the Working Set from the tree
  • From the context menu select Add a New Working Set
  • Enter a name for your working set on the dialog box that is displayd and press Apply. The working set will be created. Close the dialog box.

Add Units and Composite Units to your Working Set

  • Right click on newly created working set and select Add New Unit/Composition
  • From the Dialog box select your units one by one and complete filling up of your working set
Note that you can also add and delete units to and from any of the dicom defined working set.

Dicom unit conversion calculator is available here for free download.

Saturday, July 15, 2006

Examples of Calculation with Dicom Document

Dicom unit conversion calculator - example calculationsYou can find numerous examples installed with Dicom unit conversion calculator. Those examples demonstrate varoius syntaxes, functionalities and calculations in dicom.

The default installation path of the example folder is "C:\Program Files\Dicom4\Examples".

To try out the examples click on the menu path "File > Open... " and navigate to the examples directory. Dicom document files are either plain text (.txt) files or rich text (.rtf) files.

Once loaded the selected file will be opened in the Dicom document's input tab.

Simply press [F8] to calculate the document. The ouput of the document will be placed in the output tab.

Hope you would find those examples very helpful to master Dicom unit conversion calculator.

Dicom unit conversion calculator is available here for free download.

Friday, July 14, 2006

Some Useful Shortcut Keys for Dicom Unit Conversion Calculator

1. Calculate document

Press [F8]

2. Apply expression begin and end tags to the selected text

Method (1) Press [F4]
Method (2) Click [XB] or [XE] button on Dicom Calculator

3. Calculate Expression entered on calculator

Method (1) Press [ENTER]
Method (2) Click [Enter] or [En] button on Dicom Calculator

4. Calculate Expression entered in Dicom document (calculate immediately on the input document)

If expression is not enclosed between begin and end tags follow step 2, then press [F5]
In another way: select expression + Press [F4] + Press [F5]

5. Check a Keyword in an expression on Dicom Document

Auto Check keywords is off (File > Preferences... > Calculation and Editing > Check Keywords) keywords can still be checked on Dicom document by pressing [F2]. The single keyword for units or functions, which the cursor is on, will be checked and autoformatted.

6. Check Keywords in Dicom Calculator

Auto check keyword option works on Dicom document. But same option for Dicom Calculator can be toggled on/off by pressing [F6]

7. Superscript and Subscript

[Ctrl+] and [Ctrl-] keys can be used to format (toggled on/off) selected text as superscript and subscript. Dicom can deal with superscripts within an expression too! For example, you can write ft^2 or ft with a superscripted 2 to mean "square of a foot".

Dicom unit conversion calculator is available here for free download.

Tuesday, July 11, 2006

Dicom Unit Symbol Convention

When you use units in calculation or conversion you can express that in Dicom Calculator and Dicom Document in one of the the followoing three manners:

1. Unit symbols without any braces - these are the unit symbols standarised by International System of Unit (SI).

m. - metre
ft. - feet
mi. - miles

2. Unit symbols with curly braces {}
- these are not standard symbols but widely used.

{inch.} - inches
{km.} -kilometres
{cm.} - centimetres

3. Unit symbols with square braces []
- these are non-standard symbols and also not widely used.

[fath.] - fathom
[micron.] - micro metre

In all of the cases above use of period (.) next to the unit symbol is optional. Also the use of {} or [] are optional.When the option "File > Preferences... > Calculation and Editing > Check keywords" is checked on (by default it is on) any unit symbol written is automatically reformatted in Dicom Calculator and Dicom Document.

That means you can write {inch.} in any of the following manner:
and even [inch] or [inch.]

Dicom will reformat to its standard convention - {inch.}

Dicom unit conversion calculator is available here for free download.

Friday, July 07, 2006

Array Handling in Dicom Conversion Calculator - Part 2

In part-1 we discussed six functions related to array handling in Dicom. The functions ArSet() and ArGet() are used to set and get array elements as the name implies. However, Array elements in Dicom can also be assigned and retrived in a much easier way.


ArSet(1,10,arX) is equivalent to arX(1)=10

Similarly ArGet(1,arX) is equivalent to simply arX(1)

Array and Aggregate Functions

Following aggregate functions in Dicom apply to an array elements or a series of values or quantities. The functions are used respectively to determine Maximum, Minimum, Average, Sum, Count, and Standard Deviation of the values supplied.

Max( array | qty1 , qty2 [ , qty3…] )
Min( array | qty1 , qty2 [ , qty3…] )
Avg( array | qty1 , qty2 [ , qty3…] )
Sum( array | qty1 , qty2 [ , qty3…] )
Count( array | qty1 , qty2 [ , qty3…] )
Stdev( array | qty1 , qty2 [ , qty3…] )

Example of aggregate functions with list of values

Max(1,2,3) = 3
Max(1 ft, 6 inch, 250 mm) to ft = 1.00 ft

Min(1,2,3) = 1
Min(1 ft, 6 inch, 250 mm) to ft = 0.50 ft

Avg(1,2,3) = 2
Avg(1 ft, 6 inch, 250 mm) to ft = 0.77 ft

Sum(1,2,3) = 6
Sum(1 ft, 6 inch, 250 mm) to ft = 2.32 ft

Count(1,2,3) = 3
Count(1 ft, 6 inch, 250 mm) = 3

Stdev(1,2,3) = 0.81649
Stdev(1 ft, 6 inch, 250 mm) to ft = 0.2068 ft

Example of aggregate functions with Array

Note that there is no limit to the number of comma separated list of values. And as you noticed already, the list of values can be with or without units. However, for long list of values instead of using comma separated list you can use an array.

Above Examples are re-written below using array, just cut and paste the following code in a Dicom document and press [f8] to execute.


ArAdd(1 ft, 6 inch, 250 {mm.}, arY);

Max(arX); Max(arY);
Min(arX); Min(arY);
Avg(arX); Avg(arY);
Sum(arX); Avg(arY);
Count(arX); Count(arY);
Stdev(arX); Stdev(arY);

  • [' and '] are used in a Dicom document to distinguish the expressions to be evaluated from the rest of the document text. These are so called expresson tags.
  • Multiple expressions in Dicom are separated with semicolon (;)

Dicom unit conversion calculator is available here for free download.

Thursday, July 06, 2006

Array Handling in Dicom Conversion Calculator - Part 1

Arrays are useful in analysing data set. Dicom statistical functions use arrays as parameters.

Dicom is unique in its ability to handle array. Array can be named or unnamed. The array elements can be with unit or unit-less. Array can be single or multi-dimensional. With dicom you can deal with one-dimensional list, two-dimensional table, and three-dimensional pages of table.

Function Description with Examples

There are 6 Array handling functions in dicom as described below.

1. To create single or multidimensional array use:
Dim( columns [, rows [,pages]] )

Dim (3) - list of 3 values.
Dim (3, 4) - a 3 columns by 4 rows table
Dim (3, 4, 100) - 100 pages of 3x4 table

Note that index of Dicom array elements starts with 1.
Assigning an array to a name is convenient.

arX = Dim(3)
arY = Dim(3, 4)

In the above example, arX and arY are two named arrays.

2. To append array elements use:
ArAdd( arg1, arg2, …[, array] )

arX = Dim(5) - an array of five values
ArAdd(10,20,30,40,50,arX) - add all 5 values to the array in one go.

Alternately yo can append one by one or any number of values at a time.

arX = Dim(5) - an array of five values
ArAdd(10,20,30,arX) - add first 3 values to the array.
ArAdd(40,50,arX) - add next 2 values to the array.

3. To set an array element use:
ArSet( pos, [array,] value )

ArSet(2, arX, 20.5) - change the value of the second element to 20.5

4. To get an array element use:
ArGet( pos [,array] )

ArGet(2, arX) = 20.5

5. To delete an array use:
ArDel( [array] )


6. To reference an unnamed array use:
Res( )

ArAdd(100,200,300, Res())
ArGet(2,Res()) - will return 200

However, you can omit the array parameter (as it is optional in all of the array handling functions) if you want to deal with the unnamed array.


As you may rightly guessed, you can deal with only one unnamed array at a time. But of course, there is no limit for the number of named arrays one can use.

Before concluding, please recall that Dicom arrays can deal with unit too.

ArAdd(5ft, 60 kg, 35 yr)
ArGet(1) to inch : will return 60 inch (inches)
ArGet(2) to lb : will return 132.27 lb (pound)
ArGet(3) to d : will return 12783.47 d (days)

In the next part "Array Handling in Dicom Conversion Calculator - Part 2" we will see some use of arrays in Dicom conversion calculator. Happy computing!

Dicom unit conversion calculator is available here for free download.

Tuesday, July 04, 2006

Dicom as a Body Mass Index (BMI) Calculator

BMI Definition

Body mass index (BMI) is a measure of body fat based on height and weight that applies to both adult men and women. BMI is always expressed in kilogram per square meter and therefore often left out. Dicom treat BMI as an unitless index.

For details see also:

BMI Categories

Underweight: BMI < 18.5
Normal weight: BMI >= 18.5 and < 25.0
Overweight: BMI >= 25.0 and < 30.0
Obesity: BMI >= 30.0

Dicom BMI Function

BodyMass( height[m] [, weight[kg] ] )
  • The BodyMass function takes two parameters: height and weight.
  • Units are optional. If you don't want to mention the units, you should enter height figure in meter and weight figure in kilogram.
  • If you want to specify units you can do so in whatever unit you feel is convenient.
  • The function returns unitless BMI when you specify both height and weight.
  • However, the weight parameter is optional and if you omit this, the BMI function returns ideal weight (assuming a BMI of 24) and the return value is associated with the unit of weight.
BMI Calculation Example

You can try each of the following statement in Dicom calculator:

BodyMass(6 ft, 70 kg)
BodyMass(6 ft, 150 lb)
BodyMass(5 ft 9 inch, 60 kg 750 g)
BodyMass(6 ft) to lb
BodyMass(6 ft) to kg
BodyMass(1.8, 70)

Alternately you can cut and paste the following code in the Dicom document and then press F8 to execute.

['BodyMass(6 ft, 70 kg)']
['BodyMass(6 ft, 150 lb)']
['BodyMass(5 ft 9 inch, 60 kg 750 g)']
['BodyMass(6 ft) to lb']
['BodyMass(6 ft) to kg']
['BodyMass(1.8, 70)']

The result will be as below:

BodyMass(6 ft, 70 kg) = 20.9298258102689
BodyMass(6 ft, 150 lb) = 20.3434498304182
BodyMass(5 ft 9 inch, 60 kg 750 g) = 19.7779223535763
BodyMass(6 ft) to lb = 176.961136385883 lb.
BodyMass(6 ft) to kg = 80.26822656 kg.
BodyMass(1.8, 70) = 21.6049382716049

Dicom unit conversion calculator is available here for free download.

Monday, July 03, 2006

Dicom as a Financial Calculator: Compound Interest Rate

Function Description

Following Dicom financial function calculates the compound interest rate of an one time investment:

Irr1(nper, pval[USD], fval[USD])

  • In the above function syntax, units in square brackets [] are optional.
  • nper is the number of period to be invested. It is a value without unit.
  • pval is the present value of invested amount. It can be without unit or with currency unit such as USD.
  • fval is the future value of invested amount. It can be without unit or with currency unit such as USD.

Calculate the annual compound interest rate for an 100 US Dollars investment if the expected net future value is 200 US dollars after a period of 10 years.

Using pct for percentage:
Irr1( 10, 100 USD, 200 USD ) = 0.0717734625362931

Without using currency unit:
Irr1( 10, 100, 200 ) = 0.0717734625362931

So the compound interest rate is approximately 7.18%.

Dicom unit conversion calculator is available here for free download.

Dicom as a Financial Calculator: Net future value of a one time investment

Function Description

Following Dicom financial function calculates net future value of a one time investment:

Nfv1( rate[pct], nper, pval[USD] )

  • In the above function syntax, units in square brackets [] are optional.
  • rate is interest rate. If the interest rate is 5%, it can be written as either .05 or 5 pct
  • nper is the number of period to be invested. It is a value without unit. Note that interest rate is based on this period.
  • pval is the present value of invested amount. It can be unit-less or with currency unit such as USD.

Calculate net future value of 100 US dollars invested for a period of 10 years at an interest rate of 4% per year.

Using pct for percentage:
Nfv1( 4 pct, 10, 100 USD ) = 148.024428491834 USD.

Using fraction for percentage:
Nfv1( .04, 10, 100 USD ) = 148.024428491834 USD.

Without using currency unit (note that the answer is unit-less):
Nfv1( .04, 10, 100 ) = 148.024428491834

Dicom unit conversion calculator is available here for free download.

Sunday, July 02, 2006

Dicom 4.0: Knowbotron Unit Conversion Calculator

Knowbotron's calculator is a free unit aware calculator that performs unit conversion as well as unit calculation. The calculator is called Dicom (version 4.0 is so far the latest).

The calculator can deal with 650 units covering the whole range of physical quantities. However, an infinite number of combination of these units are also possible. Dicom also allows users to define custom units that become an integral part of Dicom and therefore can also be used in unit calculations. Dicom also has some 150 buil-in functions from various disciplines.

Calculation with units means numbers and units together can form a mathematical expression to be evaluated. For example : "30 ft. + 6 m. " is such an expression that can be evaluated to ft. (feet) or m. (meter) or any other unit of length.

Dicom 4.0 can be downloaded from