home | help
SPAR(1) 		     General Commands Manual			 SPAR(1)

NAME
     spar - a modular console calculator

SYNOPSIS
     spar [options] [--] expression

DESCRIPTION
     Spar is a console calculator, primarily intended for problem solving in ar-
     bitrary  precision.  It  supports also modules (aka code that can be loaded
     dynamically) and a number of other features, such as: user variables, func-
     tions, and constants.

   OPTIONS
     -d, --decimals
	 Set the decimal precision (number of digits printed after the point).

     -i, --integers
	 Set the integer precision (number of digits printed before the point).

     -c, --config
	 Use a user-defined modules configuration file.

     -q, --quiet
	 Don't display the welcome message.

     -h, --help
	 Display usage information and exit.

     -v, --version
	 Print version information and exit.

     --  Terminate option list: now all arguments is interpreted as  an  expres-
	 sion to evaluate.

NUMBERS
     The most basic element in spar is the number.  Numbers are double precision
     numbers.  All  numbers  are  represented  internally as a standard C double
     variable. There are no attributes of numbers, but the precision can  affect
     the number output. This precision is both in the integer part and the deci-
     mal part.

     For  example:  The number 0.123456789 is represented internally as a double
     precision variable, but if we change the precision, the output will change:
     0.123456789 = 0.123457

VARIABLES
     Numbers can be stored in named variables. Variable names begin with a  let-
     ter followed by any number of letters, digits and underscores. The variable
     names  are  case  sensitive.  Variables may have values assigned to them as
     well as used in expressions and it contains  a  special  data  member  that
     stores the "previous" value".

     To  declare  a  variable you must supply both a name and a value. Any unde-
     clared variable generate an error.  For example, to declare the variable  i
     of value 5 enter:
	       i = 5

CONSTANTS
     Constants	are special variables that is read-only. This means that you can
     read a constant value but you can modify. There is a number of  "preloaded"
     variables such as "e", "pi" ecc.

FUNCTIONS
     spar support a number of often used scientific functions (directly from The
     Spar  Library). For example, to get the value of the natural logarithm in 0
     enter:
	       log(0)

   Trig Functions
     These are the familiar `sin', `cos', and `tan' functions.	The arguments to
     all of these functions are in units of  radians;  recall  that  pi  radians
     equals 180 degrees.

   Inverse Trig Functions
     These  are  the usual arc sine, arc cosine and arc tangent functions, which
     are the inverses of the sine, cosine and tangent functions respectively.

   Exponents and Logarithms
     These are the 'exp' group, 'log' group, 'pow' group and 'sqrt' group.

   Hyperbolic Functions
     sinh, cosh, tanh. The functions in this section are related to the exponen-
     tial functions.

   Inverse Hyperbolic Functions
     asinh, acosh, atanh. The functions in this section are related to	the  Hy-
     perbolicfunctions.

   Infinite Functions
     isnan, finite, isinf.

   Special Functions
     Factorial, sum, and other specific spar functions.

EXPRESSIONS
     The  numbers are manipulated by expressions and statements.  Since the math
     parser was implemented to be interactive, statements  and	expressions  are
     executed as soon as possible.

     A	simple	expression is just a constant. spar displays constants using the
     current precision (see OPTIONS). Full expressions are similar to many other
     high level languages. Since there is only one kind of number, there are  no
     rules for mixing types.

     In the following descriptions of legal expressions, "expr" refers to a com-
     plete expression and "var" refers to a simple variable.

     - expr The result is the negation of the expression.

     expr + expr
	    The result of the expression is the sum of the two expressions.

     expr - expr
	    The  result  of  the expression is the difference of the two expres-
	    sions.

     expr * expr
	    The result of the expression is the product of the two expressions.

     expr / expr
	    The result of the expression is the quotient of the two expressions.

     expr % expr
	    The result of the expression is the "remainder" and it  is	computed
	    in the following way.

     expr ^ expr
	    The result of the expression is the value of the first raised to the
	    second.

     ( expr )
	    This  alters  the standard precedence to force the evaluation of the
	    expression.

     var = expr
	    The variable is assigned the value of the expression.

     var    This prints variable value's: note that "var" could be also  a  con-
	    stant.

COMMANDS
     help   Print a brief commands notice. If a command name is supplied print a
	    detailed command report.

     warranty
	    Print a longer warranty notice. No arguments.

     commentAdd a comment to a variable. At least two arguments.

     consts Print the built-in constants table. No arguments.

     funcs  Print the built-in functions table. No arguments.

     modulesPrint the all loaded modules. No arguments.

     old    Swap the current variable value with the old one. One argument.

     quit   Program termination.

     run    Run  a  module. Note that you must supply a valid module name other-
	    wise, the list of the loaded modules is printed.

     vars   Print all user variables.

FEATURES
     Spar supports terminal features (termios) to allow the program to	be  more
     user-friendly and also more robust.

   READLINE OPTION
     Spar  can	be compiled (via configure script) to use the GNU readline input
     editor library.  This allows the user to do more editing  of  lines  before
     sending them to spar.

     It  also  allows  for a history of previous lines typed: the history can be
     viewed by '' key, whereas the readline auto-completion was  implemented  by
     the  TAB key. For more information, read the user manuals for the GNU read-
     line and history libraries.  Instead the key '!' run the last command  and,
     finally the key ':' can be used to display a specific history item. For ex-
     ample: ':1' shows the first history item.

   SIGNALS SUPPORT
     During  a	session,  the  SIGINT signal (usually generated by the control-C
     character from the terminal), SIGSTP signal (usually generated by the  con-
     trol-Z character from the terminal) and SIGTERM signal will cause execution
     to  be  interrupted.  After all run-time structures have been cleaned up, a
     message will be printed to notify the user that spar is aborted.  All vari-
     ables and modules are removed during the clean up process.

   TERMCAP SUPPORT
     The control key EOF is inhibited. spar restore this setting on exit.

BUGS
     The best way to submit a bug report for Spar is to use the file BUG-REPORT,
     that will enable me to fix the problem. Please visit the Spar homepages at:

	  http://spar.sourceforge.net/index.html (main site)
	  http://web.tiscalinet.it/Davide18/index.html

     for the latest version, patches and documentation.

FILES
     /usr/local/bin/spar		     Spar
     /usr/local/lib/libspar.so		     Spar Library
     /usr/local/include/spar/*		     Spar Headers
     /usr/local/lib/spar/*		     Spar modules
     /usr/local/share/spar/modules_config    Spar modules config

AUTHOR
     Davide Angelocola davide178@inwind.it

ACKNOWLEDGMENTS
     The author  would	like  to  thank  Sebastian  Ritterbusch  (Rascal@Ritter-
     busch.de)	for his extensive help in testing the program and the documenta-
     tion.  Many  great  suggestions  were  given.  Please  visit  his	 website
     http://rascal.sourceforge.net  or the sourceforge project at http://source-
     forge.net/projects/rascal.

SEE ALSO
     bc(1)    An arbitrary precision calculator language
     Spar can be used also as library, a API reference can be founded via web at
     http://sourceforge.net/projects/spar. Please help me to extend and  correct
     it.

				   26 Jun 2001				 SPAR(1)

home | help