home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Current Shareware 1994 January
/
SHAR194.ISO
/
calculat
/
ex122.zip
/
EX.DOC
next >
Wrap
Text File
|
1993-06-28
|
63KB
|
1,853 lines
Ex
====
A Scientific Calculator
Version 1.22
by J. Andrzej Wrotniak
June 28, 1993
If you have a need for scientific or engineering calculations
exceeding capabilities of an electronic calculator (including the
HP Calc, built into the HP Palmtop), or if you find some of the
advanced math programs too difficult to use, then Ex may be the
program you need.
Table of Contents
1. Introduction
1.1. What does Ex do?
1.2. PC-DOS and HP95LX mutations
1.3. Extended (registered) version
1.4. Disclaimer
2. The Main Screen
2.1. The Expression Line.
2.1.1. Editing the Expression Line
2.1.2. Switching between expressions
2.1.3. Clear, cut and paste
2.2. The Status Line
2.2.1. Line number
2.2.2. Last result
2.2.3. Significant digits
2.2.4. Angular mode
2.2.5. F-Key menu indicator
2.3. Variables
2.4. The F-Key Menu
2.4.1. Nested menus
2.4.2. Nested F-Key notation
2.4.3. Toggle markers
2.4.4. Help and Exit keys
2.5. The Prompt Line
3. Evaluating expressions
3.1. Input format
3.2. Expression reformatting
3.3. Errors
3.3.1. Syntax errors
3.3.2. Unassigned variables
3.3.3. Computation errors
3.4. Error diagnostics
3.5. Arithmetic precision and range
3.6. Syntax check
4. Expression components
4.1. Numeric constants.
4.2. Variables.
4.3. Symbolic constants.
4.4. Arithmetic operators.
4.5. Implied multiplication
4.6. Functions.
4.7. Separators.
4.8. Angles in DMS notation
5. Implemented functions
5.1. Logarithmic and exponential
5.2. Trigonometric and inverse
5.3. Hyperbolic and inverse
5.4. Miscellaneous arithmetic
5.5. Euler and related functions
5.6. Conditional functions
5.7. User-defined functions
5.8. Statistical functions
5.8.1. Function types
5.8.2. Supported distributions
5.9. Feet and pounds functions
6. Operation priority
7. Other operations on expressions
7.1. Numerical integration
7.2. Numerical differentiation
7.3. Equation solving
7.4. Computing sums
8. Function plotting.
8.1. Logarithmic scale
8.2. Axis and grid visibility
8.3. Plot precision
8.4. Errors and points out of range
8.5. Plot screen buffering
8.6. Plot overlays
9. User-defined functions
9.1. Defining a user function
9.2. Recalling a user function
10. Data conversions
10.1. Unit conversion
10.1.1. The unit menus
10.1.2. Units supported
10.2. Angle display as DMS
10.3. Conversion to fractions
10.4. Feet and pounds
10.5. Result rounding
11. Miscellaneous operations
11.1. On-line help
11.2. Display precision
11.3. Autoscroll
11.4. Angular modes
11.5. Clearing expressions and data
11.6. Exiting the program
12. Program installation and use
12.1. The packing list
12.2. Installing Ex on your computer
12.3. Character set compatibility
12.3.1. Screen (PC)
12.3.2. Printer (HP)
12.4. Running Ex from DOS
12.5. Running from the Filer (HP)
12.6. Making a loader file (HP)
12.7. Saving disk space (HP)
13. Registration and distribution
13.1. How to register
13.2. The extra goodies
13.3. Registration fees
13.4. Distribution
13.5. Support
13.6. Improvements and new features
13.7. Credits
13.8. About the author
1. Introduction
1.1. What does Ex do?
At its simplest level, Ex is a calculator. It will accept an
arithmetic expression, compute its value, and store the result in
a variable. For example, typing in
2.5*12+log 1000 = t
will evaluate the expression, display the result (33) and store it
in the variable t.
Expressions can be more complicated, while still readable, as in
ln(sq sin 2t + sq cos .5t) = u
If t already contains some value, the expression will be computed,
and the result will be stored in the variable u.
Being able to see the whole expression before and after its
evaluation, you can modify and re-compute it at any moment. This
is more convenient than seeing just the current intermediate
result and re-entering everything from scratch in case of an
error.
This alone would have justified the effort of writing Ex, but the
program is more than just a handy calculator.
An expression can be more than just evaluated. Treated as a
function of the selected variable, it can be plotted or submitted
to some numerical operations: integration, differentiation,
summation or root finding.
Therefore, Ex can be understood as an arithmetic expression
processor and its usability should exceed that of an electronic
calculator, although in each case you will be judge of this claim.
1.2. PC-DOS and HP95LX mutations
Ex has been originally written for the Hewlett-Packard 95LX
palmtop computer. Although the latter runs under a version of DOS,
its screen handling is significantly different than on "regular"
DOS machines.
This is why a separate mutation of the program has been created,
with "PC" in the version number, while the HP palmtop program is
denoted as "HP". Except for the screen driver, both versions are
identical.
The PC version of Ex (for example, 1.20/PC) will run on virtually
all PC-DOS clones with a CGA, EGA or VGA display. On computers
with other video adapters the graphic operations will be disabled.
A math coprocessor, if present, will be detected and used.
On the new HP100LX palmtop you may run either version, although
the HP one is recommended (in the 95 compatibility mode).
1.3. Extended (registered) version
Ex is shareware; the details on its distribution and registration
are given in Chapter 13.
*** Some of the enhanced program features, introduced in Version
1.2 and above, are available only in registered copies of Ex,
distributed exclusively to those who paid the registration fee.
These are designated with letter "R" in the version number (e.g.,
1.20R/HP).
*** Parts of this document referring specifically to the
registered version are marked with a "***" string.
1.4. Disclaimer
Although the author has extensively tested the software and
reviewed the documentation, he makes no warrant or representation,
explicit or implied, with respect to this package, its quality,
performance, merchantability or fitness for a particular purpose,
in any hardware or software environment.
In no event shall the author be liable for direct, indirect,
special, incidental or consequential damages arising out of the
use, misuse or inability to use the software or documentation.
2. The Main Screen
When you run Ex, you will find yourself first in the program's
Main Screen, which consists of four parts.
┌──────────────────────────────────────┐
│2/3+sin 2D-3·sin 24°12'32"/H²=X │
├───┬─────────────────────────┬──┬─┬───┤
│ 1│X: 1.429336169866998 │16│R│Top│
├───┴────────┬────────────┬───┴──┴─┴───┤
│@ │I │R │
│A │J │S │
│B │K │T │
│C │L │U │
│D 1.04719755│M │V │
│E │N │W │
│F │O │X 1.42933617│
│G │P │Y │
│H 3.45000000│Q │Z │
└────────────┴────────────┴────────────┘
Hlp Set Plt Num Con Def Sho Clr Exit
These are, from top to bottom, Expression Line, Status Line,
Variable Fields and the F-Key Menu. The last one is sometimes
taken over by prompts asking for some input.
2.1. The Expression Line
This is the long (initially empty) line near the top. The
expression being typed in is displayed here. Its length is limited
to 37 characters.
*** In the registered version the maximum expression length is 75
characters, and the text will, if necessary, scroll across the
Expression Line, with arrows indicating parts extending in either
direction.
2.1.1. Editing the Expression Line
Most of the typing will show in the Expression Line the way you
would expect it to.
The Backspace and Delete keys retain their customary functions and
so do the left and right arrow keys.
Editing is in the insert mode: new characters are inserted at the
cursor.
The Home and End keys (on the HP: shifted left and right arrow)
will jump to the beginning or to the end of the line,
respectively.
Page Up and Page Down (on the HP: shifted up and down arrow) will
change the case of the character under cursor, and step to the
right. This is useful in correcting syntax errors.
2.1.2. Switching between expressions
Ex remembers up to twelve expressions at any time. Pressing the up
and down arrow keys allows to switch between them.
*** The registered version of Ex has 24 expression lines.
2.1.3. Clear, cut and paste
Pressing Escape clears the Expression Line. The text is, however,
not lost; it is stored in the Paste Buffer.
Pressing Escape when the Expression Line is already empty puts the
contents of the buffer back into the line.
This means that to copy a line, without clearing it, into the
buffer, Escape has to be pressed twice: the second keystroke
restores the line, but its contents remains in the buffer as well.
Pressing the Insert key (Shift+Delete on the HP) swaps the
contents of the buffer with the current line, unless the current
line is empty: then Ex will just paste the buffer without clearing
it.
2.2. The Status Line
This line is located below the Expression Line and contains the
following information (left to right).
2.2.1. Line number
This is the number of the currently displayed expression. A down
arrow in front of it denotes that the autoscroll mode (see Section
11.3) is on.
2.2.2. Last result
The next field shows the result of the last operation and the
variable where that result has been stored. The display precision
can be adjusted as described in Section 11.2.
The last result is also used as a base for some operations
(conversions, rounding), see Chapter 11.
2.2.3. Significant digits
This field shows the precision with which the results are
displayed in the Last Result field.
Preceded with a dot (e.g., ".6"), it denotes the number of digits
after the decimal point; without the dot - the total number of
significant digits. In the latter case the trailing zeros will be
truncated. See Section 11.2 for more on this subject.
2.2.4. Angular mode
"R" or "D" is displayed here, depending on whether the
trigonometric functions expect arguments (or return results, as
appropriate) in radians or degrees. Switching between angular
modes is described in Section 11.4.
2.2.5. F-Key Menu indicator
This field shows which of the function key menus is currently
active and shown at the bottom of the screen (see Section 2.4). It
makes the navigation between different menus easier.
2.3. Variables
27 Variable Fields show the names and values of Ex variables A..Z
and @ (the "default variable").
Values in these fields are always shown using an eleven-character
width (usually nine significant digits), except for those computed
in the Financial Mode, see Section 11.2.
2.4. The F-Key Menu
The bottom line is taken by the Function Key Menu with mnemonics
for the function keys F1..F10. We will be referring to function
keys with these abbreviations in square brackets, e.g., [Hlp]
instead of F1.
2.4.1. Nested menus
Some of the function keys do not cause any immediate action.
Pressing such a key will, instead, bring up a new menu with
different operations assigned to the F-keys.
For example, F2, marked as [Set], will bring up another menu;
while that one is active, F4, denoted as [Deg], will toggle
between Deg and Rad angular modes.
2.4.2. Nested F-Key notation
Nested function key sequences are denoted in this manual with key
mnemonics separated by a vertical bar; thus the operation
described above would be referred to as [Set|Deg].
As the current menu is indicated with the key mnemonic in the
Status Line, [Set|Deg] may be also interpreted as "Press the [Deg]
key while [Set] is being displayed in the F-Key Menu Indicator".
2.4.3. Toggle markers
If a function key toggles a feature on and off, an arrow pointing
to it (at its left) denotes the "on" status.
2.4.4. Help and Exit keys
In all function key menus, F1 activates on-line help, while F10 is
used to return to the next higher menu level or, in case of the
top menu, to leave the program.
2.5. The Prompt Line
Some times Ex will ask you for a numeric or textual input by
displaying a prompt at the bottom of the screen, temporarily
replacing the F-key menu.
A default (or previous) answer will be shown after the prompt. It
can be edited with use of the special keys: arrows, Delete,
Backspace, Home and End.
After having entered the appropriate response, press Enter to
continue. The same effect can be achieved by pressing again the
same F-key in response to which the prompt has been displayed.
Pressing Escape when any input is present on the Prompt Line will
clear it. The same key with no input present will exit the prompt,
and the operation of which the prompted input was a part, will be
abandoned.
3. Evaluating expressions
To evaluate an arithmetic expression, enter it into the Display
Line, following with the equal sign and a variable name:
Expression = Variable
Pressing the Return key will now compute the expression value and
store it in the selected variable. The result will be shown in the
Last Result Field as well as in the appropriate Variable Field.
If Variable is not entered, then the result will be stored in the
default variable, @, i.e. "=@" will be appended to the line.
Note that this convention is opposite to the one used in most
programming languages, where "A=B+C" means "add A to B and store
the result in C". In Ex the same operation has to be entered as
"B+C=A". In the long term we find the latter notation more
convenient, although this is, obviously, a matter of personal
preferences.
The details of expression syntax will be given in Chapters 4 and
6; now we will discuss the general aspects of the process.
3.1. Input format
An expression may consist of components (or tokens) of the
following kinds:
- numeric constants, e.g., 3.25
- angular (DMS) constants, e.g., 3°32'
- variables, e.g., X
- symbolic constants: ⌠ (Pi) and É (e)
- arithmetic operators, e.g., + or ²
- functions, e.g., sin
- separators (parentheses, comma)
Descriptions of these classes will be given in Chapter 4; here we
will focus on how they are identified in the expression text.
Ex is quite smart in parsing the expression, i.e. in recognizing
its tokens. You will not find many surprises here.
First, any sequence of spaces is converted into a single space.
Characters separated with a space are never treated as a single
token.
For example, "3 5.2" will be understood as a sequence of two
numeric constants: "3" followed by "5.2", and not as "3.52".
Even without a separating space Ex may split a sequence of
characters into separate tokens. This happens if the sequence does
not make sense as a single token. For example, "asin" will be
interpreted as the arc sine function name, but "bsin" will be
split into two symbols, as in "B sin".
Any upper case letters are treated as variable names: "Asin" means
"A sin" and "SIN" will be understood as a sequence of three
variables, "S I N". (This does not mean that variables have to be
entered in uppercase; see below.)
A series of related examples will illustrate these rules.
"bsina" will be interpreted as "B sin A": Ex knows about "sin" but
not "bsin" or "sina" (the list of recognized functions will be
presented in Chapter 5).
"asina" means "asin A": "asin" denotes the asin (arc sine)
function.
"as ina" means "A S I N A" (a sequence of five variable names),
because the space prevents Ex from treating "s in" as "sin".
Similarly, "asIna" will be treated the same way, because the
capital "I" prevents Ex from recognizing "sIn" as a single token.
And finally, "as int" means "A S int", because Ex recognizes an
int function.
3.2. Expression reformatting
Immediately before computing the expression Ex will redisplay it
in a standard format. Variable names are converted to upper case,
and spaces are removed or added as necessary.
If a sequence of two tokens has been interpreted as implied
multiplication (see Section 4.5), Ex may insert a small dot, "·",
between them, to make this fact obvious.
Additionally, some numeric or angular constants may be reformatted
to a standard format. For example, "2.5000" will be shown as
"2.5", and "0.0000012" as "1.2e-6".
It may happen that, as a result of this reformatting, the length
of an expression line will increase beyond the allowed maximum
(See Section 2.1). The line will be then truncated and an
appropriate error reported.
3.3. Errors
During an attempt of expression evaluation, three kinds of errors
may occur.
3.3.1. Syntax errors
The first are syntax errors, due either to symbols unrecognized by
the parser or to wrong symbol sequence. For example,
sin 2:3+cos X
contains an illegal symbol, ":", while
2.5-*8-log(2,5)
contains two illegal sequences: a "-" followed by "*", and two
arguments for the log function.
Ex will stop parsing the expression as soon as the first error is
detected.
3.3.2. Unassigned variables
At the moment of expression evaluation all variables used in it
have to contain previously assigned values. (Other operations on
expressions allow for one exception from this rule; this will be
discussed later.)
If this is not the case, an error will be diagnosed.
3.3.3. Computation errors
Only if no errors of the above types have been detected, the
actual computation begins. During this stage other errors may
occur.
An attempt to divide by zero is an obvious case. Others include
illegal values of function arguments (e.g., a square root of a
negative value), or a numeric overflow.
3.4. Error diagnostics
When an error is detected, a message will be shown at the bottom
of the Main Screen. To clear the message and continue, press any
key.
In case of syntax errors, the cursor will be placed at the point
where the error has occurred (at least where Ex thinks it did).
Some errors just cannot be diagnosed properly, i.e. with Ex
guessing what you really wanted to do. For example, mistyping
"sin" as "son" will be interpreted as a product of three
variables: S, O and N (the "*" operator is not always necessary in
Ex, see Section 4.5).
3.5. Arithmetic precision and range
Regardless of the display accuracy, the arithmetic operations are
performed in Ex with a precision of about 18 decimal digits (some
functions, like sin or log, may be less accurate: 16 digits or so,
depending on the argument).
The range of expression values (this includes also some of the
intermediate results) is limited by the highest absolute value of
9.99e999. As the total number of elementary particles in the known
Universe is a few orders of magnitude less than 1e60, our range
should be large enough for most practical purposes.
3.6. Syntax checking
In order just to check the expression syntax, without computing
its value, press the Tab key.
If the expression contains any syntax errors, a diagnostics will
appear. The Expression Line will be reformatted in the standard
way.
4. Expression components
An arithmetic expression in Ex may consist of the following
elements.
4.1. Numeric constants
These are just numbers, using digits, decimal point and/or letter
"e" (lower case only!) as the decimal exponent sign. A minus sign
may precede the whole number and/or its exponent value.
A numeric constant should not contain spaces, and the leading zero
before the decimal point is optional.
It is usually clear from the context whether a lowercase "e" is a
variable or a part of a constant. In case of doubt, the latter
will be assumed. If this is not what you want, use a space to
break the constant up.
For example, "2e-3" will be interpreted as a constant (.002). In
order to enter two times variable E minus three, type "2E-3" or "2
e-3" or "2e -3" etc.
4.2. Variables
Variables are denoted with letters from A to Z; additionally, the
"default" variable @ is available.
4.3. Symbolic constants
Two of these are supported: Pi and Euler's e (=2.71...). They are
shown in the display as "⌠" and "É" (see Section 12.3 if these
symbols are not shown or printed properly).
The symbolic constants can be entered from the keyboard as Alt-p
and Alt-e or, on the HP Palmtop, as Char-p and Char-e (usually the
[Alt] key needs to be held down while [p] or [e] is being pressed;
this is not necessary with [Char]).
4.4. Arithmetic operators
In addition to the common +, -, * and / (where + and - may be
unary or binary), there is a power operator, ^, like in A^B (A to
the power of B).
If the first operand (i.e. the base) in the power operation is
negative, then the second one has to have an integer value,
otherwise an arithmetic error will be detected. Similarly, for the
base equal zero, only whole positive exponents are allowed.
There are also three operators used after a single operand: square
"²" (a superscript "2", entered as Alt-2 or Char-2), cube "ⁿ" (a
superscript "3", entered as Alt-3 or Char-3), and factorial "!".
These operators are duplicated by functions sq, cu and fac,
respectively.
(Square and cube may not be displayed or printed properly on your
installation, see Section 12.3.)
4.5. Implied multiplication
The multiplication operator between two operands, x and y, can be
skipped if
(i) x is a variable or a constant (symbolic or numeric),
and
(ii) y is a variable, a symbolic constant, a function invocation,
or a "(".
The difference between explicit and implied multiplication is that
the latter has the highest priority (see the next section).
Here are some examples of legal and illegal attempts to use
implied multiplication:
Legal Equivalent Illegal
3XYZ 3*X*Y*Z XY3Z
2⌠R 2*⌠*R 2 3.1416 R
9 sin X 9*sin(X) (C+1)sin X
ln X exp Y ln(X*exp(Y)) ln(X)exp Y
sin 2AB sin(2*A*B) (sin 2A)B
sin 2(A+B) sin(2*(A+B)) sin (A+B)C
⌠R² ⌠*(R²) R²⌠
The traditional "blackboard" notation is somewhat inconsistent
here: "exp 3 ln X" is usually interpreted by a human writer as
"exp(3*ln(X))" while "2 sin X cos X" as "2*sin(X)*cos(X)". Ex will
always chose the first way, interpreting the latter example as
"2*sin(X*cos(X))".
If in doubt, use the "*" operator and/or parentheses.
After the expression has been interpreted and re-formatted, the
implied multiplication will be displayed as a small dot, e.g.,
"3.5·sin Y".
4.6. Functions
Functions supported by Ex include trigonometric and inverse,
hyperbolic, logarithmic and exponential (with three different base
values). Euler's Gamma and Beta (complete and incomplete) are also
provided. For the full function list see Chapter 5.
Most of the functions accept a single argument. If this argument
is just a constant, a variable or another function invocation,
then it does not have to be enclosed in parentheses (see Section
4.7).
4.7. Separators
The parentheses () are used to change the order of expression
evaluation, or to group multiple function arguments. This is not
necessary for one-argument functions; for example, "ln X" is as
good as "ln(X)".
A comma is used to separate multiple function arguments, as in
"atn2(X,1+Y)".
4.8. Angles in DMS notation
An expression may also contain angular values expressed in the
degree, minute and second notation, e.g., -14°07'30". Such values
will be, regardless of where they occur, converted to degrees
(here: -14.125) or to radians, depending on the current angular
mode.
The degree symbol is entered as Alt-d or Char-d, minutes as Alt-m
or Char-m and seconds - as Alt-s or Char-s. For the two latter,
the single- and double quote keys,['] and ["], are also OK. (As
before, the Char- sequences are available only on the HP Palmtop).
Any of the three values may be omitted (together with its symbol);
a zero will then be assumed. Fractional values are not allowed.
Leading zeros are optional. The min/sec values do not have to be
less than 60; a proper reformatting will take place, if necessary,
before the computation starts.
Examples:
5°99' means 6°39'
5°99" means 5°01'39"
5000" means 1°23'20"
5. Implemented functions
The functions available in Ex can be divided into several groups.
5.1. Logarithmic and exponential
ln(x) - natural logarithm
log(x) - decimal (common) logarithm
lg2(x) - logarithm base two
exp(x) - exponent
ten(x) - ten to x
two(x) - two to x
The arguments of ln, log and lg2 have to be positive.
5.2. Trigonometric and inverse
sin(x), cos(x) - sine, cosine
tan(x), cot(x) - tangent, cotangent
asin(x), acos(x), atan(x), acot(x) - inverses of the above
atn2(y,x) - arc tangent of y/x, with result in the proper
quadrant
Depending on the angular mode (see Section 11.4), these functions
accept arguments or return results (whichever applicable) in
degrees or in radians. The arguments, obviously, can also be
entered in DMS notation, as described in Section 4.8.
There are also the usual limitations on arguments of asin, acos,
tan and cot. No restrictions exist on the arguments of atn2.
5.3. Hyperbolic and inverse
sinh(x), cosh(x), tanh(x), coth(h) - the basic hyperbolic
functions
asinh(x), acosh(x), atanh(x), acoth(x) - their inverses
The inverse hyperbolic functions impose restrictions on their
arguments: acosh requires that x>=1, atanh needs abs(x)<1 and
acoth that abs(x)>1.
5.4. Miscellaneous arithmetic
abs(x) - the absolute value
inv(x) - reciprocal, equivalent to 1/x
sq(x), cu(x) - square and cube
sqr(x), cur(x) - square and cubic root
int(x) - integer part rounded towards zero; int(-2.5) is -2
ent(x) - entier (truncated down; ent(-2.5) is -3)
fra(x) - fractional part, i.e. x-int(x)
sgn(x) - the sign of x (-1, 0 or 1)
min(x,y) - the smaller of both arguments
max(x,y) - the larger of both arguments
mod(x,y) - remainder of x divided by abs(y), always positive or
zero
rou(x,y) - rounds x to the nearest whole multiple of y
rad(x,y) - square root of sum of squares
(Functions sq and cu are duplicated as operators: ² and ⁿ,
respectively).
While sqr requires that x>=0, there are no limitations on the
argument of cur.
Functions int and ent work only for abs(x)<2^31 (approximately
2.1e9); for mod, x/y has to stay within this limit.
5.5. Euler and related functions
gam(x) - the (complete) Gamma function
lgam(x) - the (natural) logarithm of abs(gam(x)) (larger arguments
allowed than for gam)
fac(x) - factorial of x, i.e. x! - computed as gam(x-1) so that x
does not have to be integer (this function is duplicated as the !
operator)
bet(x,y) - the (complete) Beta function: gam(x)*gam(y)/gam(x+y)
com(n,k) - combinations (Newton symbol) of n over k, defined as
n!/(k!(n-k)!) with n and k not necessarily integer
igam(a,x) - incomplete Gamma function
ibet(a,b,x) - incomplete Beta function
5.6. Conditional functions
These functions accept three arguments and, depending on the value
of the first one, compute and return the value of the second or
the third argument:
ifn(a,b,c) returns b if a<0, else c
ifz(a,b,c) returns b if a=0, else c
ifp(a,b,c) returns b if a>0, else c
The function names translate into "if negative", "if zero" and "if
positive", respectively.
Most importantly, only the needed argument will be computed. For
example, the expression "ifz(x,1,sin x/x)" will be evaluated
without an error for any value of x.
5.7. User-defined functions
Up to six functions can be defined by the user. Their names are
dfa..dff. See Chapter 9 devoted entirely to this subject.
5.8. Statistical functions
For statistical applications Ex provides you with a choice of
distribution functions for various distributions.
For example, in order to build a 95% mean value confidence
interval based on a Normal sample of N data points, we need to
know the value of Student variable (the t-distribution) with N-1
degrees of freedom such that the probability integral from -t to t
will be 0.95. Computing this value is not a trivial task. Ex does
it with a single function call: iastu(.95,N-1).
The functions follow a simple naming convention. The last three
letters denote the distribution (e.g., "chi" for Chi-square, "gau"
for Normal or Gaussian), while the one- or two-letter prefix
describes the type of the function (e.g., density or cumulative).
The following two sections are devoted to these two aspects.
Statistical functions are computed with an accuracy of 16 decimal
digits.
5.8.1. Function types
For the supported continuous distributions the following function
types are available:
- Probability density (or dP/dx), denoted with an "f" prefix,
e.g., fchi(x,r). This is often called PDF (probability
distribution function).
- Left probability integral, i.e. P(<=x), prefixed with a "p",
e.g., pgau(x,m,s). This function is also known as CDF, cumulative
distribution function.
- Central probability integral (for symmetrical distributions
only, i.e. Gaussian and Student), prefixed with an "a", e.g.,
astu(x,r). If m is the center of the distribution, then the
central probability is defined as an integral of the PDF over an
interval from m-|x-m| to m+|x-m|, i.e. where the random variate
departing from m by less than x does.
- Functions inverse to integrals use prefixes "ip" and "ia",
respectively. For example, ipchi(p,r) returns a value of x such
that pchi(x,r)=p.
In other words, inverse probability functions will find a value of
x, corresponding to a given probability integral. This is
frequently used in confidence interval building and in hypothesis
testing.
For discrete distributions (Binomial and Poisson) similar types of
functions are provided, except that "probability density" in the
descriptions above should be replaced with "probability", and
"integral" with "sum".
Note that the symbol "<=" used in our definition of the "p"
(cumulative) functions is meaningfully different from a "<" only
for discrete distributions. Some authors use "<" instead, so that
their discrete formulae may have to be modified before being used
with Ex.
5.8.2. Supported distributions
The following distributions are supported, with x denoting the
random variate and other function arguments standing for
distribution parameters.
fgau(x,m,s)
Gaussian (Normal) distribution with mean m and standard deviation
s>0.
fchi(x,r)
Chi-square distribution with r>0 degrees of freedom.
fstu(x,r)
Student (t) distribution with r>0 degrees of freedom.
fsne(x,r1,r2)
Snedecor (F) distribution with r1>0 and r2>0 degrees of freedom.
fpoi(x,m)
Poisson distribution with the parameter (mean) m>0.
fbin(x,n,p)
Binomial distribution with success probability 0<p<1 and number of
tries n>=0.
fgam(x,a)
Gamma distribution with the parameter a>0.
fbet(x,a,b)
Beta distribution with parameters a>0 and b>0.
Replacing "f" with "p" or "a" gives cumulative probabilities, and
with "ip" and "ia" - functions inverse to cumulative
probabilities.
5.9. Feet and pounds functions
Two convenience functions are supplied for use with non-metric
units:
lb(x,y) - converts x pounds and y ounces into pounds
ft(x,y) - converts x feet and y inches into feet
Obviously, lb(x,y) is defined as x+y/16, while ft(x,y) as x+y/12.
Both x and y may be any arithmetic expressions. For example,
ft(3,1+1/2) will result in 3.125.
Conversions in the inverse direction, e.g., translating feet into
feet-inches and fraction are described in Section 10.4.
6. Operation priority
Functions and operators are executed from high to low priority, as
listed below:
- High priority: "^", "!", "²" (square), "ⁿ" (cube), implied
multiplication, functions
- Medium priority: "*" and "/"
- Low priority: "+" and "-"
An operand with operators on both sides of it will associate with
the higher priority operator of the two. If both priorities are
the same, then the left operator (low and medium priority) or the
right one (high priority) is applied first.
This order can be arbitrarily changed with parentheses, as in the
commonly accepted notation.
Examples:
2*sin 2x means 2*sin(2*X)
2sin 2*x means 2*sin(2)*X
a^b^cd means A^(B^(C*D))
a+b*cd^3.1 means A+(B*(C*(D^3.1)))
a sin hx means A*sin(H*X)
asinh x means asinh(X)
ln xⁿ means ln(Xⁿ)
7. Other operations on expressions
Evaluation is just one of the operations which Ex can perform on
expressions. The other operations are performed in two steps.
First, enter
Expression = Variable
into the Display Line. The expression defines a function, F(x),
and variable, x, or the function argument, with respect to which
the operation on F(x) is performed. The result will be also stored
in x (if not supplied, @ will be used as a default.)
Other variables can be used in F(x) as constant parameters, and
must have values assigned before the operation is performed.
After the function and its argument are defined, pressing one of
the assigned F-keys will perform the operation, prompting you for
the necessary parameters. Here we will discuss the numeric
operations, while plotting will be postponed until the next
chapter.
7.1. Numerical integration
Computing a definite integral of F(x) over x is done by pressing
[Num|Int]. Ex will prompt you for the integration limits (two
numbers separated with a space) and for the desired accuracy.
The Romberg algorithm used here is usually more efficient than the
well-known Simpson method.
The accuracy parameter needs more explanation. Instead of
terminating the algorithm when two subsequent iterations, r1 and
r2, differ by less than some absolute or relative value, Ex does
it when
abs(r1-r2)/(1+abs(r2)) < h
where h is the entered accuracy.
Note that for abs(r2)<<1 the value of h is equivalent to the
absolute, while for abs(r2)>>1 - to the relative accuracy limit.
7.2. Numerical differentiation
Similarly, pressing [Num|Der] for a given expression will
numerically compute the derivative of F(x) with respect to x.
The program will ask for the argument value at which the
derivative is to be computed, and then for initial step for the
self-adjusting numerical algorithm it uses.
(This is NOT the step for a linear approximation of a derivative
with an increment ratio, or for the square approximation used in
Version 1.0; we now use a better algorithm, described by W.Press
et al. in Numerical Recipes, 2nd Ed.)
If the argument value is x and the entered step h, the algorithm
uses the initial step of d = h*(1+abs(x)), reducing it to get the
most accurate estimate, at least for well-behaved functions. For
most functions the default value of h=0.01 is close to optimum.
As in the case of integration, the h parameter corresponds to an
absolute step value for abs(x)<<1 and to a relative one for
abs(x)>>1.
7.3. Equation solving
To solve an equation F(x)=0, press [Num|Zer]. Ex will prompt you
for the initial interval estimate, (x1,x2), and the required
accuracy, h.
The solution is found using the bisection method.
It is expected that F(x1)*F(x2)<0, or an error will be diagnosed.
This is equivalent to asking for an odd number of solutions inside
(x1,x2). If it is greater than one, just one (any) solution will
be found. Plotting F(x) may be a good way to estimate the initial
interval.
The accuracy parameter h is, again, defined in our specific style:
if the reached solution is x, then its error will be
dx<h*(1+abs(x)). Our default h=1e-6 seems to be just fine for
general use.
7.4. Computing sums
[Num|Sum] will compute the sum of F(x) for x ranging from x1 to x2
with step h. You will be prompted for the values of these three
parameters.
More precisely, the sum will be computed as
F(x1)+F(x1+h)+F(x1+2*h)+...+F(x1+n*h)
where n is the largest integer such that
x1+n*h < x2+h/2 for h>0
or
x1+n*h > x2+h/2 for h<0.
8. Function plotting.
A function defined by an expression line as F(x) can be plotted by
using the [Plt|Plt] F-key sequence. After prompting you for the
horizontal and vertical plot range, the function will be drawn
together with the plot box, scale ticks and tick labels.
Pressing F10 while plotting is in progress will interrupt it.
(Whatever has been drawn will still be buffered as described in
Section 8.5, unless you exit the plot screen by pressing F10
again.)
Before the actual plotting, however, you may want to adjust some
of the plot style parameters. This is done with use of the other
[Plt|...] keys.
8.1. Logarithmic scale
The [Plt|LgX] and [Plt|LgY] keys toggle the logarithmic scales
along the x- and y-axis, respectively.
An attempt to use logarithmic scale while any of the limits is
non-positive, will cause an error diagnostic.
8.2. Axis and grid visibility
The x- and y-axis visibility is toggled by the [Plt|Axs] key,
while the grid - by [Plt|Grd]. The former option does not have to
be selected if the latter is.
The grid spacing and tick values are selected automatically by the
program.
8.3. Plot precision
Our plotting algorithm draws the function curve by joining a
series of (x,y) points with straight line segments. Obviously, the
acceptable segment length depends on function shape (more exactly:
its local curvature).
The algorithm adjusts the segment length appropriately for the
local curvature. This may be done in two slightly different ways,
differing in drawing speed and in plot accuracy.
For most functions, the low accuracy setting (default) should be
good enough. You can always switch into the higher accuracy with
use of [Plot|Acc], paying the price of slower drawing process.
8.4. Errors and points out of range
Any arithmetic errors during the computation of the plotted
function will be ignored, together with the point in question. Ex
will try to bring the function line as close to any such bad point
as possible, usually closer than one pixel along the x-axis.
Any parts of the function curve outside the plot range will be
clipped off. This may, however, lead to Ex missing a very narrow
spike (or dip) entering the plot range and then leaving it again.
Such an effect is possible if the width of the whole effect is
less than two screen pixels.
8.5. Plot screen buffering
When a plot is ready, pressing any key will save the screen in a
plot buffer and return you to the Main Screen. There is one
exception: pressing the F10 key will exit the plot without saving
the buffer (its old contents will not be overwritten).
The last saved plot screen can be recalled by pressing [Plo|Sho].
8.6. Plot overlays
Instead of plotting a function on a clean slate by pressing
[Plt|Plt], it can also be done on top of the previously buffered
screen, with [Plt|Add]. This operation does not ask for plot
limits, using the ones for which the buffered plot has been drawn.
Similarly, any changes in plot style parameters (except accuracy)
will be ignored, and the saved settings will be used instead.
9. User-defined functions
Ex allows you to introduce up to six user-defined functions. These
functions, dfa..dff, can be then used in expressions exactly like
the built-in ones.
9.1. Defining a user function
Any expression can be defined as a function of a single variable.
To do it, enter
Expression = Variable
and press [Def]. At the "Define function:" prompt, enter the
function name: dfa..dff. The expression will be then defined as a
function of the specified variable (i.e. the one following the
"=").
The function parameter variable is just a dummy, used only in the
function definition. The "real" Ex variable of that name will not
be modified by any subsequent function evaluations.
A user-defined function may refer to others of that kind. It
cannot, however, refer to itself, directly or indirectly (i.e. via
other functions). Such illegal uses will be detected at an attempt
to evaluate an expression.
9.2. Recalling a user function
To recall and review a user-defined function, press [Sho] and
answer the prompt with the function name. The function formula
will be displayed in the Expression Line.
The function can be then modified and re-defined.
10. Data conversions
All operations discussed in this chapter are applied directly to
the variable displayed in the Last Result Field, without involving
the Expression Line at all.
They are activated from the Conversion Menu, available by pressing
[Con] in the Main Menu.
10.1. Unit conversion
Pressing [Con|Uni] will convert the value of the last Result
Variable from a chosen physical unit to another. The conversion
result will be stored in the Result Variable again.
If the Last Result Field is empty (i.e. the Result Variable has
not been designated), Ex will convert a single unit, storing the
result in the Default Variable, @.
10.1.1. The unit menus
Before the conversion, a sequence of three pop-up menus will query
you for the following information:
- The quantity to convert (e.g., length)
- Units to convert from
- Units to convert to
Inside a pop-up menu use arrow keys to move around, and Return to
make a selection. Pressing Esc or F10 at any moment will abandon
the operation.
10.1.2. Units supported
In the current non-registered version Ex converts units of length,
area, volume, time, speed, mass, force, energy, power and
pressure. Units range from metric (with SI displayed always at the
top of a menu), to American (miles, gallons), traditional (kWh,
calories).
Temperature conversions between Fahrenheit and Celsius degrees are
not supported.
The precision of unit conversions is determined by the accuracy of
coefficients used; a care has been taken to use the most accurate
coefficients available.
*** The registered versions of Ex come with a setup program,
taking a text file with any unit definitions supplied by the user,
and converting it into a customized .UNI file. This way the unit
conversion feature can be customized and/or extended. The setup
program is described in a separate document.
10.2. Angle display as DMS
The value of the last Result Variable can be, treated as an
angular quantity, converted to degrees, minutes and seconds. To do
it, press [Con|Dms].
The input is assumed to be in degrees or radians, depending on the
current angular mode. (This means the mode at the moment the
conversion is performed, not when the value was computed.)
The operation does not affect the value of the Result Variable,
just the way in which it is displayed.
Pressing [Con|Dms] again will return to the previous display mode.
10.3. Conversion to fractions
[Con|Fra] will attempt to display the Result Variable in a form
consisting of a whole part and a (proper) fraction. For example,
if the Result Variable has a value of -3.375, the display will be
"-3 3/8".
Ex will find the lowest fraction denominator providing a relative
accuracy better than 10e-16. The largest denominator considered
this way is 360; if none is found, 1000 will be used, and the
representation will be only approximate.
This operation does not affect the value of the Result Variable.
It is also possible to force the result (by rounding it) into a
given denominator value; see Section 10.5.
10.4. Feet and pounds
Pressing [Con|Ft] and [Con|Lb], will treat the value of the Result
Variable expressed in feet (pounds), and display it as two
integers: feet and inches (or pounds and ounces) and a proper
fraction of an inch (ounce).
As described in the previous section, Ex will try to find the
lowest value of the inch (ounce) value denominator with the
maximum relative accuracy better than 1e-6. Again, if no value up
to 360 is found, 1000 will be used.
Both operations affect only the way in which the last result is
displayed; its actual value remains unchanged.
If you need a particular value of the inch (ounce) denominator,
use the result rounding feature, described in the next section.
10.5. Result rounding
The current result value can be rounded to the nearest whole
multiplicity of 1/n (with n>0, for which you will be prompted) by
pressing [Con|Rou]. The result value will actually be affected by
this.
If, at the moment of this operation, the result is being displayed
in the feet/inches (pounds/ounces) mode, then the rounding will be
done to the nearest 1/n-th of an inch (ounce). If the result is
shown as DMS, then it will be rounded to 1/n-th of a degree
(regardless of the current angular mode). After rounding, the
result will be displayed in the same notation as before.
11. Miscellaneous operations
As it is easy to guess, this chapter will contain information
which did not fit anywhere else.
11.1. On-line help
Ex has a rudimentary on-line help, activated by pressing the [Hlp]
key in any menu. The Help Screen contains a list of topics
available. Entering the topic's first few letters (enough to
distinguish it from others) at the prompt and pressing Return,
will bring the proper help page.
Pressing any key then will bring you back to the Help Screen, from
where you can return to the Main Screen using Return or F10.
11.2. Display precision
[Set|Dig] sets the way the result is displayed in the Status Line.
You will be prompted for the required display precision, which can
be entered in one of two ways:
(1) As the total number of significant digits to display - enter
the desired value, from 1 to 16. The actual number of digits shown
in a given result may differ, as the trailing (insignificant)
zeros will be dropped.
(2) As the number of digits after the decimal point - enter the
point followed by the desired value, from 0 to 9, e.g.,".6". The
trailing zeros will be shown in this mode, and the entered number
of fractional digits may be adjusted so that the total number of
digits shown will not exceed 16.
Additionally, entering just the letter "f" at the prompt will set
the "financial" display mode in which two digits after the decimal
point are displayed. This mode is denoted with "$$" shown in the
Status Line.
The values computed in the financial mode will be shown in the
above fashion also in the Variable Fields.
In the other modes these fields will not be affected by the
display accuracy setting, always using an 11-character display
width.
11.3. Autoscroll
[Set|Scl] enables the autoscroll mode, so that after a successful
expression evaluation (not a numeric operation or plotting!) Ex
will move to the next line, clearing it. Line 1 follows again
after the last line.
Obviously, the old line can be recalled with the up arrow key.
No line change occurs if an error has been detected.
Enabled autoscroll is indicated by an arrow sign next to the line
number, in addition to an arrow before the "Scl" mnemonics in the
Set menu.
11.4. Angular modes
To switch between Rad and Deg mode, press [Set|Deg]. An arrow
before "Deg" denotes that the degree mode is selected, and "R" or
"D" will be shown on the Status Line.
The angular mode affects the arguments of trigonometric functions,
results of inverse trigonometric functions and angle conversions
to and from the DMS form.
11.5. Clearing expressions and data
Pressing [Clr] will, after a confirmation, clear all expression
lines, variables and user-defined functions. The graphic screen
will be cleared as well.
11.6. Exiting the program
[Exit] will leave the program, after a confirmation prompt. Before
the prompt, however, the current status of Ex (including
expression lines, variables, user-defined functions, the graphic
screen and all settings) will be saved to disk as EX.ENV.
This file is automatically read in as Ex is executed, so that you
can exit the program, do something else, and re-enter it without
losing continuity of your work.
The exit prompt shows the version and (for registered copies)
serial number.
To exit quickly without saving (and with no confirmation prompt),
press Shift+F10; going to the Top Menu is not necessary.
12. Program installation and use
Users of the PC-DOS mutation of Ex will be interested only in the
first three sections of this chapter; the remaining ones contain
information specific to the HP95LX.
12.1. The packing list
Whatever was the source from which you obtained Ex, you should
have the following files:
EX.EXE - the program itself
EX.UNI - the file with unit conversion coefficients
EX.HLP - the text file used by on-line help
EX.ERR - the text file with error messages
EX.DOC - the manual (you are reading it now)
WHATS.NEW - a brief list of changes since the last version
READ_ME.1ST - the introductory file
*** Registered copies of Ex should contain a number of additional
files:
EXSET.EXE - a setup program
EXSET.DOC - its documentation
UNITS.TXT - a text file with user-editable definitions of units
EXTUT.DOC - file with tutorials for some of the features.
12.2. Installing Ex on your computer
This is a simple task. Just copy the files EX.EXE, EX.UNI, EX.HLP
and EX.ERR to one directory, e.g., C:\EX.
If that directory is included in the PATH definition in your
AUTOEXEC.BAT file, you will be able to run Ex while anywhere in
the system, as explained in the Section 12.4.
12.3. Character set compatibility
Ex uses a number of characters beyond ASCII 127. All of them are
displayed properly on the HP95LX. Other PC-DOS computers, however,
offer you a choice of character sets; the same is true about
printers. Although possible incompatibilities are only mildly
annoying (you may just skip all this and jump to Section 12.4),
here is how to avoid them.
12.3.1. Screen (PC)
Most PC-DOS machines use a DOS screen font defined as English
(code-page 437, whatever that means). This is just fine with Ex:
the only minor incompatibility is that the cube operator, "ⁿ"
(superscript "3") will be displayed as a superscript "n". Also,
when you read this documentation off the screen, the "⌠" (Pi)
symbol may look like the top half of an integral sign. Tough luck.
If you are bothered with this, or if your setup uses a less
compatible character set (Portuguese, Slavic, Nordic etc.), you
may switch to the Multilingual character set (code-page 850), 100%
compatible with Ex. This is quite simple under DOS 5 or higher.
(1) Modify your CONFIG.SYS file (very carefully!) by adding the
following line:
DEVICE=C:\DOS\DISPLAY.SYS CON=(EGA,850,1)
If appropriate, you can use DEVICEHIGH instead of DEVICE, and the
C:\DOS path may have to be changed to something else. On a laptop
you may need "LCD" instead of "EGA".
(2) Use the following two DOS commands (either manually or by
adding them to your AUTOEXEC.BAT file):
MODE CON CP PREP=((850)C:\DOS\EGA.CPI)
MODE CON CP SELECT=850
The same lines may be then used to go back to your previous
character set, except that "850" has to be replaced with the
proper code-page number (437 for English).
12.3.2. Printer
A few of the upper-ASCII characters in this documentation may not
print right on your printer. You can avoid that by setting your
printer to the 850 Multilingual Character Set (HP LaserJet III has
it, others may or may not, don't ask me!).
You may also request your neatly printed copy of this manual at
the time of program registration.
12.4. Running Ex from DOS
To run Ex we must assure that
(i) DOS will find the program file, EX.EXE
and
(ii) Ex will find its related files EX.HLP, EX.ERR, EX.UNI and
EX.ENV.
The first is done either by moving (with use of the CD command) to
the directory where Ex resides before running it, or, preferably,
by specifying this directory in the PATH statement in your
AUTOEXEC.BAT file.
The second is done by setting the environment variable named EX to
the Ex directory path. (This is needed only if you run Ex from a
directory other than its own.)
For example, if Ex resides in C:\EX, then your AUTOEXEC.BAT should
have a line like
EX=C:\EX
An optional trailing backslash is allowed for compatibility with
earlier versions.
12.5. Running from the Filer (HP)
As distributed, Ex for the HP95LX palmtop does not work under
System Manager.
You may run it from DOS as explained above, or from the Filer, by
highlighting EX.EXE and pressing F4.
In that case the "SET EX" line in AUTOEXEC.BAT is not necessary,
although you may leave it there.
12.6. Making a loader (HP)
The Loader Maker shareware utility by David Goodman can be used to
make an EX.EXM file, allowing to run Ex from the built-in HP
applications by pressing a "hot key" (on the other hand, these
applications will not be accessible until you exit Ex).
The process is described in the Loader Maker's instructions.
12.7. Saving disk space (HP)
The RAMdisk space on the HP95LX is quite limited; every kilobyte
counts, and the program itself is quite large (about 80k).
You may save some space by shrinking EX.EXE with the shareware
Diet program by Teddy Matsumoto. For the price of a few second
delay in program loading, you will save almost 30k!
After you become familiar with Ex, you can get rid of the EX.HLP
file. The on-line help will become disabled, but you will gain
about 8k of extra space on your disk.
Removing the EX.ERR file is also possible, although not
recommended: the gain is much smaller, and error diagnostic will
be reduced to cryptic error numbers - not worth the trouble.
Similarly, removing EX.UNI will save about 3k, disabling the unit
conversion.
13. Registration and distribution
Ex is a copyrighted program, released as shareware. You are free
to use any evaluation (non-registered) copy of it on a trial basis
for a month or so. If you decide to use it afterwards, you are
expected to register it (as described below); otherwise please
delete it from your system.
13.1. How to register
To register, send your name and address (including GEnie,
CompuServe or Internet, if applicable) together with the
appropriate registration fee - a check or money order (U.S. funds,
drawn on a U.S. bank) to
J.A.Wrotniak
2057 Happy Lane
Crofton, MD 21114-1917
Please state your current version number and computer type (HP
palmtop versus any other DOS machine).
The basic registration fee is $30, and the complete price list can
be found in Section 13.3.
13.2. The extra goodies
Let as face the sad reality: 99% of people using shareware
programs never pay a penny to the authors.
To increase chances that you keep your end of the deal, those who
pay the registration fee will receive a package of extra goodies,
including:
* The newest registered (enhanced) version of Ex on a 3.5" DD
floppy disk
* A setup program for customization of the Ex unit file
* A file with step-by-step tutorials
* A printout of this documentation (if requested)
*** Registered copies of Ex, denoted with an "R" in the version
number (e.g., 1.16R/HP or 1.16R/PC), cannot be distributed:
resold, leased, given away, placed on electronic bulletin boards
etc.
*** The owner may make backup copies only for his/her own use,
safety and convenience.
*** Every registered copy of Ex has a unique serial number
embedded inside and displayed at the program exit prompt. Please
refer to this number in all related correspondence.
13.3. Registration fees
Here is the complete price list:
- A single copy of Ex (PC or HP): $30
- Both versions at the same time: $45
- The other mutation ordered later: $20
- A single update to a new version: $10
- Both updates at the same time: $15
13.4. Distribution
You are free to distribute Ex (only evaluation copies, without an
"R" in the version number) to anyone, as long as all original
files, as in the Packing List above, are enclosed. This permission
extends to the electronic distribution.
Please do not distribute (give away, sell, lease, post on
electronic bulletin boards etc.) any registered versions of Ex.
Public Domain and shareware vendors are granted the right to
include complete evaluation copies of Ex into their libraries only
if the total cost to the user stays within the limit of $6 per
disk; otherwise my explicit permission is required.
(I would, however, recommend contacting me ahead of time; I may
already have a newer version.)
13.5. Support
If you have any questions, suggestions or problem reports, I can
be contacted on GEnie (J.WROTNIAK) or CompuServe (70611,2552). My
email address on the Internet is "wrotniak@umdhep.umd.edu".
If you do not have an access to these services, write under the
address shown above. I read all letters and answer most of them.
13.2. Improvements and new features
Ex is still changing and growing. I am using it a lot;
unavoidably, the program reflects, to a large extent at least, my
own preferences and working habits. In your own interest, let me
know what you like and dislike about Ex, and how would you like it
to evolve.
13.7. Credits
Ex has been developed in Turbo Pascal 6.0 from Borland
International, and contains library code copyrighted by Borland.
Some of the math algorithms used in Ex have been borrowed from my
other program, El_Cal, running on the Atari ST series (the real
computers!) and distributed by Debonair Software.
13.6. About the Author
Lest you use a program written by a complete stranger, let me
introduce myself.
I am a physicist by education, with M.Sc. and Ph.D. from the
University of Lodz, Poland, where I have spent 16 years doing
research in high-energy cosmic ray physics, at the same time
teaching physics, numerical methods and computer science.
In the United States since 1984, currently I am working as a
software systems engineer and Chief Scientist for Aerospace
Research Associates, Inc. in Maryland.
Outside of my regular job, I still do physics. I am also active
among the Atari ST computer enthusiasts, programming quite a lot
for that machine and writing a regular column for the Current
Notes magazine.