Scilab Home Page | Wiki | Bug Tracker | Forge | Mailing List Archives | Scilab Online Help | ATOMS
File : Details
Please login or create an account

Physical Calculus

Calculate with physical units.
(1480 downloads for this version - 1480 downloads for all versions)
Denis Marion
Supported Scilab Version
Creation Date
February 4, 2010
            Any scientist has already experienced errors in their results or their
predictions of physical parameters. These errors are very often due to a
conversion between two initial data or formulas expressed in different systems
of units.
Yet the PhysCalc package does not ensure that your calculations will be
correct, it still can be of great help when dealing with values and constants
gathered from different bibliographical sources, hence possibly expressed in
varied systems of units.
PhysCalc facilitates the declaration and the correct use of physical quantities
in Scilab. Once all your constants and parameters are declared (with a very
light syntax), any operation and Scilab function can be used to work on them.
While you are concentrated on your work and the physical meaning of your
results, PhysCalc:
- checks for you that your operations have a sense (e.g. that you are not
adding or concatenating speeds and energies...)
- makes implicitly the appropriate conversions when adding two quantities of
identical physical meaning (e.g., a speed in International Units and a speed in
CGS units).
- calculates the unit of the result of every operation (addition, division,
multiplication, exponentiation,...) based on physical operands.
- lets you add, multiply, exponentiate, extract, insert and concatenate all
your physical vectors (provided that the operation is correct!) and use every
other Scilab function on them.
- displays your results with their unit in a nice, human-readable format in
the Scilab prompt.

A number of practical units and physics constants are already included in the

As this is my first attempt to submit a Scilab package, there may be bugs in the
present work (however, this is pretty simple). So, please feel free to write a
comment and/or let me know by email if you encounter something wrong.            
Files (1)
[110.52 kB]
Source code archive

News (0)
Comments (3)     Leave a comment 
Comment from Samuel Gougeon -- February 23, 2011, 02:41:10 PM    
This is likely a bug: When a variable is complex, its imaginary part is not displayed:

-->a=1-%i & 1/_m
 a  =
         1	m      (#SI)
Best regards
Comment from Samuel Gougeon -- July 22, 2011, 07:09:01 PM    
The issue comes from printf(), that is unable to print correctly complex values.
Here are some lines replacing the last corresponding ones in %UNIT_p() and fixing the
if (length(a.values) == 1)
    // if 'a' is a scalar, print the value and the dimension on the same line in the
    disp(strcat(printedExps)+" "+string(a.values)+" 
Comment from Samuel Gougeon -- October 25, 2013, 09:18:15 AM    

with Scilab 5.4.1, PhysCalc.sci yields the following error:

Attention : La fonction code2str est obsolte.
Attention : Veuillez utiliser ascii  la place.
Attention : Cette fonction sera dfinitivement supprime dans Scilab 6.0.0

It occurs in function %UNIT_p(a)
Just replace the line
separatorChar= code2str(283);   // the character "" will separate the units.
separatorChar= ascii(183);   // the character "" will separate the units.

Indeed, ascii(code2str(283)) => 183

Leave a comment
You must register and log in before leaving a comment.
Email notifications
Send me email when this toolbox has changes, new files or a new release.
You must register and log in before setting up notifications.