GNU fussy : A programmable calculator for automatic error propagation

fussy is a language with automatic propagation of random measurement errors in arbitrary mathematical expressions. It is internally implemented as a virtual machine for efficient run time performance. Mathematical expressions can be implemented as a collection of sub-expressions, as sub-program units (functions or procedures) or as single atomic expressions. Errors are correctly propagated when a complex expression is broken up into smaller sub-expressions. Sub-expressions are assigned to temporary variables which can then be used to write the final expression. These temporary variables are not independent variables and the information about their dependence on other constituent independent variables is preserved for error propagation.

The syntax of fussy is similar to that of the C programming language. It is therefore easy to use with minimal learning in every-day scientific work and can be a replacement for an interactive scientific calculator. E.g.

       >sin(x)/cos(x)            /* Compute tan(x) as sin(x)/cos(x) */
           1.55741 +/-    0.34255
       >tan(x)                   /* Direct computation of tan(x) */
           1.55741 +/-    0.34255
       >s:=sin(x);c:=cos(x);     /*Construct two variables s & c dependent on x*/
       >s/c                      /* Compute tan(x) using two dependent variables */
           1.55741 +/-    0.34255
       >s2=s;                    /* Convert s to an independent variable s2 */
       >s2/c                     /* Compute tan(x) with two independent variables. Error propagates differently */
           1.55741 +/-    0.26236


Currently the best way to download fussy is to clone its Git repository using the following command:

     git clone

This will create a directory named "fussy". The fussy can be compiled on most GNU Linux/Linux-like OSes by running the "build" script in this directory.


Documentation for fussy is available online, as is documentation for most GNU software. The manual as man-pages and info pages are in the process of being written.

The "help" command of the fussy interpreter also provides brief help about available features and fussy language syntax.

Mailing lists

fussy has the following mailing lists:

  • bug-fussy is used to discuss most aspects of fussy, including development and enhancement requests, as well as bug reports.
  • help-fussy is for general user help and discussion.

Announcements about fussy and most other GNU software are made on info-gnu (archive).

Security reports that should not be made immediately public can be sent directly to the maintainer. If there is no response to an urgent issue, you can escalate to the general security mailing list for advice.

Getting involved

Development of fussy, and GNU in general, is a volunteer effort, and you can contribute. For information, please read How to help GNU. If you'd like to get involved, it's a good idea to join the discussion mailing list (see above).

For development sources, issue trackers, and other information, please see the fussy project page at
fussy is currently being maintained by Sanjay Bhatnagar and Daniel K. Lyons. Please use the mailing lists for contact.


fussy is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version.