home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Crawly Crypt Collection 2
/
crawlyvol2.bin
/
apps
/
math
/
calcb_11
/
doc
/
clac.man
< prev
next >
Wrap
Text File
|
1994-12-13
|
6KB
|
237 lines
NAME
Clac - a simple command line arithmetic calculator
SYNOPSIS
clac [-options] [@filename | expression]
DESCRIPTION
Clac calculates expressions following precedence (order of
operations). Functions, variables and mode identifiers are
case-insensitive for the user's convenience.
Clac has three modes of operation:
- An expression is parsed from arguments.
- Without a filename or expression Clac enters
interactive mode. Expressions are evaluated as
they are entered.
- Expressions are read from a file.
If file named 'cli.ini' exists in the current directory, it's
executed before anything else is done.
The parser catches common mistakes like unmatched parenthesis or
divide by zero and gives an (hopefully helpful) error message.
Unrecognized characters produce also an error message.
You can exit from interactive mode by giving Clac an empty line.
OPTIONS
command line options recognized by Clac.
-d Output result in decimals. Default.
-b Output result in binary.
-o Output result in octal decimals.
-h Output result in hex decimals.
-r Trigonometric arguments as radians. Default.
-g Trigonometric arguments as degrees.
-c Complex numbers are output as real and imaginary
components 'a + bi'. Default.
-v Complex numbers are output as vectors '(x, y)'.
-p Complex numbers are output in polar co-ordinates
'(magnitude, direction)'. Trigonometric mode
defines whether the direction is in degreees or
radians.
-q Quiet mode. Output only results.
SYNTAX: CHARACTERS AND OPERATORS
Clac recognizes the following characters and operators:
<Enter> Evaluate expression or exit if none entered.
|, & Bitwise OR and AND operators.
>, < Operators for shifting bits right and left.
+, - Addition and subtraction operators.
% Modulo operator.
*, / Multiply and divide operators.
^ Exponentiation operator.
+, - Signs. Signed numbers should be in parenthesis.
( and ) Parenthesis.
. Decimal point.
= Assignment operator. Eg. 'test = 3.5'.
: Mode (look at options) change character. Eg. ':b'.
Zi Value Z is an imaginary number (1 + 2i).
Z! value Z is a factor (3! = 1*2*3).
'Z Value Z is in binary format.
#Z Value Z is in octal format.
$Z, 0xZ Value Z is in hexadecimal format.
"Z Value Z is in ascii format. Notice: Value is
ended with a ' '.
E Variable containing value of Napier's constant.
PI Variable containing value of pi.
? Gives a brief overview of the operators and
functions that Clac supports at the moment and
lists all the defined variables and their
values.
Decimal numbers can have exponent notation (ie. a number
immediatly followed by 'e' and a number). Eg. 1e2 = 1 * 10^2
and 5e-1 = 5 * 10^(-1) = 0.5. Exponent has to be an integer.
You can change the values of all variables including e and pi
(if you're one of those people that insist on pi being 3).
Variable names may contain only letters and numbers. Variable
names have to start with a letter.
SYNTAX: UNUSED CHARACTERS
Characters, that are NOT used by Clac's expression evaluation:
':', '@', '[', ']', '\', '_', '`', '{', '}' and '~'.
SYNTAX: FUNCTIONS WITH SINGLE ARGUMENT
ln(x) Natural logarithm of x.
lg(x) Logarithm of x in base 10.
deg(x) Convert x radians to degrees.
rad(x) Convert x degrees to radians.
sin(x) Sine of x.
cos(x) Cosine of x.
tan(x) Tangent of x.
asin(x) Arcus sine of x.
acos(x) Arcus cosine of x.
atan(x) Arcus tangent of x.
sinh(x) Hyperbolic sine of x.
cosh(x) Hyperbolic cosine of x.
tanh(x) Hyperbolic tangent of x.
sqrt(x) Square root of x.
rnd(x) Random number between 0 and x.
abs(x) Absolute of x.
int(x) Integer part of x.
frac(x) Fraction part of x.
real(x) Real part of x.
imag(x) Imaginary part of x.
SYNTAX: FUNCTIONS WITH MULTIPLE ARGUMENTS
rtop(a, b) Rectangular co-ordinate a (if complex)
or co-ordinate pair (a, b) (if two reals)
is converted to polar one.
ptor(a, b) Polar co-ordinate a (if complex vector)
or co-ordinate pair (a, b) (if two reals)
is converted to rectangular one.
over(n, k) The number of k component group combinations
in n components.
root(n, x) Nth root of x.
time(h, m, s) Change time into seconds.
min(a, b, c) Smallest number of a, b, c.
max(a, b, c) Largest number of a, b, c.
avg(a, b, c) Average of numbers a, b, c.
std(a, b, c) Standard deviation of numbers a, b, c.
Number of arguments is unlimited in the min(), max(), avg() and
std() functions.
EXAMPLES
From a command line:
clac '42 + $FF.8 - (("ET * 12) + 5) / 3.7 + (-1)'
Interactively:
clac -g -b
Expression: foo = sin(90)
%1
Expression: foo + 12
%1101
Expression: a = 1 + 2i
1.0 + 2.0i
Expression: b = 2 + 1i
2.0 + 1.0i
Expression: a / b
0.8 + 0.6i
PROGRAM STRUCTURE
Clac is composed of two nearly separate 'modules':
- 'clac.c', which evaluates expressions.
- 'cli.c', which gets expressions from the user, command line
arguments or from a file. It also takes care of the variable
assignments and the help function.
Communication between these to parts is done with a exp_packet
structure which is better documented on the 'clac.h' file.
For more info see 'clac.dvi' and 'cli.dvi' files.
LIMITATIONS
255 character limit for expressions (do you need more?).
Values are internally calculated using double precision numbers.
No overflow check.
ADVANTAGES
Uses little memory because evaluating is done in the sync with
the parsering.
IMO easy to use and add new functions (to 'function.h' and
function.c).
BUGS
Sure. Before I sent this I had fixed all errors that I had
found. Please report any bugs that you'll happen to found
(especially the 'logical' ones).
THANKS TO
- Jarkko Kniivil"a, who advised me on C syntax.
- Gernot Saltzer for bugreports and suggestions.
- J"urgen Lock, who patiently answered to my mail.
- Helpful people on #atari (irc), whom I have
chatted with: Dirch, Gryf, Infy, Aviva...
COPYRIGHT
Eero Tamminen / puujalka (irc), t150315@cc.tut.fi.
Freeware. This code may be used freely in other freeware
programs on condition that my effort has been mentioned
on the program documentation. I would also like to get
a copy of the program which incorporates my code...
CHECK ALSO
Sketches of Spain (Miles Davis).
v 1.10 Release: 10th November 1994 CLAC(1)