Home of the original IBM PC emulator for browsers.

[PCjs Machine "ibm5170"]

Waiting for machine "ibm5170" to load....

```
MTOOL is an easy-to-use mathematical tool used to define and
analyze functions of a single variable. The speed, power, and ease of
use make it ideal for science, engineering, and math students.
This program can evaluate a function for a range of points or for a
single point of the independent variable. It can numerically evaluate
derivatives and integrals. It can find solutions for the function, and
it can plot the function using CGA, EGA, VGA, or Hercules Graphics.
CONVERT is a conversion calculator that accepts arguments from the
command line and shows a list of equivalent quantities of different
units (English vs. Metric). This program is very useful because it
converts a variety of units concerning distance, area, volume, time,
rate, heat, energy, and force.
```

```
CONVERT
UNITS
CONVERSION
UTILITY
USER'S GUIDE
VERSION 1.1
(C) COPYRIGHT 1988 - ALL RIGHTS RESERVED
by
MARTIN J. MAHER
MJM ENGINEERING
P.O. BOX 2027
HAWTHORNE,CA 90251
Convert is a unit conversion utility for MS-DOS computers. The
usage directions for Convert are very simple. At the DOS prompt type
"convert" followed by a quantity and a unit. Convert reads the
argument list and types a list of unit conversions. Here's a sample:
C>convert 10 mi
10 mi = 5.2800000000E+04 feet
= 1.7600000000E+04 yards
= 8.68976 nautical miles
= 1.6093440000E+04 meters
= 16.09344 kilometers
Convert works best on hard disk systems. Make sure that
Convert.exe is in a directory on your path and you will be able to
use it from anyplace in your system. Since the Turbo Pascal 4.0
source code for Convert comes with the program, you can customize
your version to support any conversions you wish.
Most of the rest of this document is a table of units supported
by Convert with input strings that Convert recognizes and output
units for that input. The last two pages concern legalities and the
requested contribution.
1
UNIT INPUT STRINGS OUTPUT UNITS
---- ------------- ------------
Acre acre square feet
acres square yards
square miles
square meters
square kilometers
Astronomical au meters
Units astronomical unit kilometers
astronomical units miles
light years
parsecs
BTU btu joules
btus foot-pounds
BTU calories
BTUs kilowatt hours
Calories cal joules
calorie foot-pounds
calories ergs
BTU's
kilowatt-hours
electron volts
Calories/sec cal/s watts
cal/sec kilowatts
calories/second foot-pounds/sec
horsepower
Centimeters cm millimeters
centimeter meters
centimeters inches
feet
Cubic cc cubic millimeters
centimeters cubic cm cubic meters
cubic centimeter cubic inches
cu cm cubic feet
cubic centimeters cubic yards
liters
gallons
quarts
pints
ounces
2
UNIT INPUT STRINGS OUTPUT UNITS
---- ------------- ------------
Cubic feet cubic ft cubic inches
cubic foot cubic yards
cubic feet cubic centimeters
cu ft cubic meters
gallons
liters
Cubic inches cubic inch cubic feet
cubic in cubic yards
cubic inches cubic millimeters
cu in cubic centimeters
cubic meters
gallons
liters
Cubic cubic km cubic meters
kilometers cubic kilometer cubic feet
cubic kilometers cubic yards
cu km cubic miles
Cubic meters cubic m cubic millimeters
cubic meter cubic centimeters
cubic meters cubic kilometers
cu m cubic inches
cubic feet
cubic yards
cubic miles
Cubic miles cubic mi cubic feet
cubic mile cubic yards
cubic miles cubic meters
cu mi cubic kilometers
Cubic yards cu yd cubic inches
cubic yard cubic feet
cubic yards cubic centimeters
cubic meters
gallons
liters
3
UNIT INPUT STRINGS OUTPUT UNITS
---- ------------- ------------
Days day seconds
days minutes
hours
weeks
months
years
solar days
sidereal days
solar months
solar years
sidereal months
Degrees deg radians
degree
degrees
Dynes dyne newtons
dynes pounds
dy ounces
Electron ev joules
volts electron volt foot-pounds
electron volts ergs
calories
Ergs erg joules
ergs foot-pounds
calories
electron volts
Feet ft inches
foot yards
feet miles
centimeters
meters
kilometers
Feet per sec ft/s mph
feet per sec meters/sec
feet per second kilometers/hr
ft/sec
Foot-pounds ft-lb joules
foot-pound ergs
foot-pounds calories
BTU's
kilowatt-hours
electron volts
4
UNIT INPUT STRINGS OUTPUT UNITS
---- ------------- ------------
Foot-pounds ft-lb/s watts
per second ft-lb/sec kilowatts
foot-pound/sec calories/sec
foot-pounds/sec horsepower
Gallons gal cubic inches
gallon cubic feet
gallons cubic yards
cubic millimeters
cubic centimeters
cubic meters
liters
quarts
pints
ounces
Grams gm kilograms
gram ounces
grams pounds
gram-force
grams-force
Horsepower hp foot-pounds/sec
horsepower watts
kilowatts
calories/sec
Hours hr seconds
hour minutes
hours days
solar days
sidereal days
weeks
Inches in feet
inch yards
inches millimeters
centimeters
meters
Joules j foot-pounds
joule ergs
joules calories
BTU's
kilowatt-hours
electron volts
5
UNIT INPUT STRINGS OUTPUT UNITS
---- ------------- ------------
Kilograms kg grams
kilogram pounds
kilograms tons
kilogram-force metric tons
kilograms-force
Kilometers km meters
kilometer feet
kilometers yards
miles
nautical miles
Kilometers kph mph
per hour kilometers per hour feet/sec
km/hr meters/sec
Kilowatts kw watts
kilowatt foot-pounds/sec
kilowatts calories/sec
horsepower
Kilowatt kw-hr joules
hours kilowatt-hour foot-pounds
kilowatt-hours calories
BTU's
Light years light year meters
light years kilometers
ly miles
lightyear astronomical units
lightyears parsecs
Liters l cubic millimeters
liter cubic centimeters
liters cubic meters
cubic inches
cubic feet
cubic yards
gallons
quarts
pints
ounces
Meters m millimeters
meter centimeters
meters kilometers
inches
feet
yards
miles
6
UNIT INPUT STRINGS OUTPUT UNITS
---- ------------- ------------
Meters per m/s kilometers/hour
second meters per sec mph
meters per second feet/sec
Metric tons metric ton kilograms
metric tons pounds
tons
Miles mi feet
mile yards
miles nautical miles
meters
kilometers
Miles per mph feet/sec
hour miles per hour meters/sec
mi/hr kilometers/hour
Millimeters mm centimeters
millimeter meters
millimeters inches
feet
Minutes min seconds
minute hours
minutes days
solar days
sidereal days
Months mo days
month weeks
months sidereal months
years
solar years
sidereal years
Nautical nm feet
miles yards
miles
meters
kilometers
Newtons nt dynes
newton pounds
newtons tons
7
UNIT INPUT STRINGS OUTPUT UNITS
---- ------------- ------------
Ounces oz gallons
ounce quarts
ounces pints
liters
cubic millimeters
cubic centimeters
cubic meters
cubic inches
cubic feet
cubic yards
Parsecs parsec meters
parsecs kilometers
miles
astronomical units
light years
Pints pt gallons
pint quarts
pints ounces
liters
cubic millimeters
cubic centimeters
cubic meters
cubic inches
cubic feet
cubic yards
Pounds lb ounces
pound newtons
pounds dynes
kilograms
grams
tons
metric tons
Quarts qt gallons
quart pints
quarts ounces
liters
cubic millimeters
cubic centimeters
cubic meters
cubic inches
cubic feet
cubic yards
Radians rad degrees
radian
radians
8
UNIT INPUT STRINGS OUTPUT UNITS
---- ------------- ------------
Seconds s minutes
sec hours
second days
seconds solar days
sidereal days
Sidereal days sidereal day seconds
sidereal days minutes
hours
days
years
solar days
sidereal months
solar years
sidereal years
Sidereal sidereal month days
months sidereal months months
years
solar years
sidereal years
Sidereal sidereal year days
years sidereal years solar days
sidereal days
years
solar years
sidereal months
Solar days solar day seconds
solar days minutes
hours
days
sidereal days
sidereal months
years
solar years
sidereal years
Solar years solar year days
solar years solar days
sidereal days
years
sidereal years
Square sq cm square meters
Centimeters square centimeters square inches
square feet
square yards
9
UNIT INPUT STRINGS OUTPUT UNITS
---- ------------- ------------
Square feet sq ft square inches
square foot square yards
square feet acres
square miles
square millimeters
square centimeters
square meters
square kilometers
Square inches sq in square feet
square inches square yards
square millimeters
square centimeters
square meters
Square sq km square meters
kilometers square kilometer square feet
square kilometers square yards
acres
square miles
Square meters sq m square millimeters
square meters square centimeters
square kilometers
square inches
square feet
square yards
acres
square miles
Square miles sq mi square feet
square mile square yards
square miles acres
square meters
square kilometers
Square yards sq yd square inches
sq yds square feet
square yard acres
square yards square miles
square centimeters
square meters
square kilometers
Tons ton pounds
tons kilograms
metric tons
newtons
10
UNIT INPUT STRINGS OUTPUT UNITS
---- ------------- ------------
Watts w foot-pounds/sec
watt kilowatts
watts horsepower
calories/sec
Weeks wk days
week solar days
weeks sidereal days
months
sidereal months
years
solar years
sidereal years
Yards yd inches
yds feet
yard miles
yards meters
kilometers
Years yr seconds
year minutes
years hours
days
months
solar days
sidereal days
sidereal months
solar years
sidereal years
11
LEGALITIES
----------
Convert is shareware, also known as user-supported software.
The diskette with program, user's guide, and source code can be
freely copied and shared. The idea of shareware is that if the user
finds the program worthwhile then he can, at his own discretion,
support the author by sending him a contribution.
Convert, however, is not a public domain program. It is
copyright (c) 1988 by Martin J. Maher, and the author retains all
rights. In particular, he retains the right to distribute this
program and all source code and documentation for profit. There is
no guarantee that Convert will work correctly in all situations, and
in no event will the author be liable for any damages arising from
the use or misuse of this program.
User groups, bulletin boards, clubs, and public domain/shareware
distributors are authorized to distribute Convert under the following
conditions:
1. No charge is made for the software or the documentation.
A nominal distribution fee, not to exceed $8, may be charged
to cover copying and distribution costs.
2. Recipients are to be notified of the shareware concept
and should be encouraged to support it.
3. The program and documentation are not to be modified in any
way by user groups, bulletin boards, clubs, or shareware
distributors. This does not apply to end users - the source
code is distributed specifically so that they will be free to
customize Convert for their own use.
Turbo Pascal is a trademark of Borland International, Inc.
Compaq and Compaq Deskpro are trademarks of Compaq Computer Corp.
MS-DOS is a trademark of Microsoft, Inc. PC-DOS is a trademark of
International Business Machines, Inc.
12
CONTRIBUTIONS
-------------
The suggested contribution for Convert is $5.00. If you find
Convert useful and wish to make this contribution, send a check to
the address shown below. Since I am interested in how my programs are
being distributed, I would appreciate your filling out the form below
and returning it along with your contribution. Finally, if you have
any comments, complaints, bug reports, or suggestions I would very
much appreciate hearing from you.
Thank you for your support.
Mail to:
Martin J. Maher
MJM Engineering
P.O. Box 2027
Hawthorne, Ca. 90251
Name_________________________________________________________
Address______________________________________________________
City/State___________________________________________________
Zip Code _________________________
How did you first learn about Convert, or where did you receive
your copy of Convert?
___________________________________________________________________
___________________________________________________________________
Comments or suggestions
____________________________________________________________________
____________________________________________________________________
13
```

```
Disk No 1183
Program Title: MTOOL and CONVERT
PC-SIG version 1
MTOOL is an easy-to-use mathematic function interpreter that will
analyze functions of a single variable defined by the user. This
program can evaluate a function for a range of points or for a single
point of the independant variable. It can also evaluate the derivative
of the function for any value of the independent variable. The
function can be numerically integrated. This program can also find
solutions for the function over a range of values for the independant
variable. MTOOL can plot the function using a 640x200 resolution
screen.
CONVERT is a unit-conversion utility that accepts arguments from the
command line and shows a list of equivalent quantities of different
units. This program is very useful as it will convert a variety of
units concerning distance, area, volume, time, rate, heat, energy and
force.
Usage: Unit Conversion/Function Analysis.
Special Requirements: A 640 x 200 high resolution screen is required to
plot the function.
How to Start: Type GO (press enter).
Suggested Registration: $5.00 for CONVERT and $20.00 for MTOOL.
File Descriptions:
CCONV PAS Turbo Pascal source code for CONVERT.
CONVERT EXE CONVERT, main program.
CONVERT DOC Documentation for CONVERT.
CONVERT PAS Turbo Pascal source code for CONVERT.
MTOOL EXE MTOOL, main program.
MTOOL DOC Documentation for MTOOL.
READ ME Program introduction.
PC-SIG
1030D E Duane Avenue
Sunnyvale CA 94086
(408) 730-9291
(c) Copyright 1988 PC-SIG, Inc.
```

```
╔═════════════════════════════════════════════════════════════════════════╗
║ <<<< Disk No 1183 MTOOL & CONVERT >>>> ║
╠═════════════════════════════════════════════════════════════════════════╣
║ To start MTOOL, type MTOOL (press enter) ║
║ ║
║ To copy documentation for MTOOL to the printer, type MTDOC (press enter)║
║ ║
║ To start CONVERT, type CONVERT (press enter) ║
║ ║
║ To copy CONVERT documentation to the printer, type CDOC (press enter) ║
╚═════════════════════════════════════════════════════════════════════════╝
```

```
MATHTOOL
AN INTERACTIVE
MATHEMATICAL
FUNCTION INTERPRETER
USER'S GUIDE
VERSION 1.1
(C) COPYRIGHT 1988 - ALL RIGHTS RESERVED
by
MARTIN J. MAHER
MJM Engineering
P.O. BOX 2027
HAWTHORNE,CA 90251
TABLE OF CONTENTS
-----------------
ITEM PAGE
---- ----
TABLE OF CONTENTS .................................. 1
INTRODUCTION ...................................... 2
HISTORY ............................................ 3
USING MTOOL ........................................ 4
EDITING ............................................ 5
ENTERING A FUNCTION ................................ 6
MAIN MENU .......................................... 10
EVALUATION AT A SINGLE POINT ....................... 11
EVALUATION OVER A RANGE OF POINTS .................. 12
INTEGRATION ........................................ 13
EVALUATION AND INTEGRATION COMBINED ................ 14
DERIVATIVE ......................................... 15
SOLUTIONS .......................................... 16
GRAPHICS ........................................... 17
DIFFICULTIES ....................................... 19
LOOPING ............................................ 20
APPLICATIONS ....................................... 21
LEGALITIES ......................................... 25
SHAREWARE .......................................... 26
REGISTRATION FORM .................................. 27
1
INTRODUCTION
------------
Mtool is a function interpreter. The "M" in Mtool stands for
"Math." The program can handle virtually any well-behaved
mathematical function of a single variable. It is designed to be easy
to use, prompting the user at every step for whatever information it
needs. Once you have defined a function, Mtool gives you the
following capabilities:
1) Evaluate the function for any value of the independent
variable.
2) Evaluate the function over a range of values of the
independent variable.
3) Numerically integrate the function.
4) Evaluate the derivative of the function for a given
value of the independent variable.
5) Find solutions of the function over some range of
the independent variable.
6) Plot the function.
Mtool is written in Turbo Pascal, and all of its operations are
carried out completely in memory. Mtool requires a minimum of 256k
of memory. Since Mtool uses dynamic data structures, it can access
as much memory as is available. Testing shows, however, that even
very complicated functions rarely require more than about 50k of
memory. The plotting capability requires graphics capability. Since
Mtool is written in Turbo Pascal, version 4.0, it supports all common
PCompatible graphics standards - CGA, EGA, VGA, and Hercules.
2
HISTORY
-------
Mtool fills a need that I first perceived several years ago when
I was a student in engineering school. Often when I was reading some
text or other, I came across a complicated mathematical function or
formula. Normally the author of the text would make some statements
about the formula regarding its behavior or certain of its
properties. Usually at this point I thought that seeing a plot of
the function would make things much clearer. Most of the time I had
three alternatives - look in vain in the text for a plot; plot it
myself by hand, a job only a masochist could enjoy; or forget about
it. Naturally, alternative three was my usual choice.
Eventually, I became the owner of a Compaq Deskpro and a copy of
the Turbo Pascal compiler. I started writing a program that would
plot any function that I could type in. My purpose, at first, was
only to learn Turbo Pascal. Then I started adding some other things,
like integration and derivatives. The idea gradually grew that Mtool
might make a good shareware program, and so here it is.
The full power of Mtool is demonstrated later in this document
with the inclusion of script that you can use to generate some very
complicated results. The program is powerful enough that I wish I
would have had it when I was in engineering school, for it certainly
adds a fourth and most attractive alternative to the list above.
3
USING MTOOL
-----------
Using Mtool is easy. It is merely a matter of answering prompts
the program issues, and of making menu choices. First, the program
leads you through a series of steps which define your function.
Options such as the ability to define characters representing
constants and subfunctions add to the complexity of function that you
can define.
After your function is defined, Mtool presents you with its main
menu. Depending on your choice Mtool further prompts you for any
information it needs. Finally, after Mtool has completed your choice
of operations, it allows you the options of continuing to use the
same function, of defining a new function, of editing your function,
or of leaving the program.
The next several sections of this document give a detailed
description of how to use Mtool, including many examples.
4
EDITING
-------
Mtool includes some simple editing tools as part of its user
interface. It shows, in reverse video, the length of string that can
be entered in reply to a prompt. For example, the main function
definition can hold as many as 73 characters, so the main function
prompt is followed by a reverse video bar 73 spaces long. Another
example is the independent variable definition which allows only one
character and so is followed by one reverse video space.
Mtool supports five editing keys. The keys and their functions
are:
Left arrow - moves cursor to left.
Right arrow - moves cursor to right as far as end of string.
Backspace - deletes a character and moves cursor to left.
End - moves cursor to end of string.
Home - deletes entire string.
A character is replaced by placing the cursor directly on it and
typing the desired character - that is, the editor works in
overstrike mode. Insert mode is not supported at this time.
Suppose that you had entered the string
cos98*x) + cos(7*x)
and wished to replace the "9" with a "(". Assuming that the cursor
is at the end of the string, hold down the left arrow key until the
cursor is on the "9", press "(", then press "End" to return the
cursor to the end of the string. One note of caution - if you press
the return key the string will be truncated at the cursor position.
Any characters to the right of the cursor will be lost, so pressing
the end key before the return key is important.
These simple editing keys apply at all Mtool prompts.
5
ENTERING A FUNCTION
-------------------
Mtool starts with a message from the author. After this
advertisement, Mtool issues its first prompt:
Independent variable:
Any lower case letter except for the first four are legal
responses to this prompt. The letters "a" through "d" are reserved
for use as subfunctions, which will be described below. If you try
to enter an answer that the program does not allow, it will issue a
warning, beep, and prompt again:
Independent variable:
Invalid choice - try again.
This will continue until Mtool gets an answer it likes, namely,
any lower case letter from "e" to "z".
Defining an independent variable does not mean that the other
letters from "e" to "z" are off limits. You can use any of them
anywhere in your function, and Mtool will consider them to be
constants and query you for their values - more on this later.
Next, Mtool asks for subfunctions. A subfunction is best
described with an example. Suppose that
f(x) = a + b
where a = cos(8*x) and b = cos(9*x).
Then a and b are subfunctions. Mtool allows you to define as many as
four subfunctions, each of which may contain as many as fifty
characters. Any operation that can be performed on a variable can be
performed on a subfunction, so in the example above we could have
f(x) = a*b, or f(x) = a/b, or f(x) = a^b, etc.
The program asks how many subfunctions you wish to define. The
appearance of the second screen depends on your answer to this
prompt. The number of subfunction lines which appear is the same as
your answer. An example of the first two screens with four
subfunction definitions and a main function definition appears on the
next page.
6
INITIALIZATION
Independent variable: x
How many subfunctions(min 0; max 4): 4
ENTER FUNCTION
f(x) =
where a =
b =
c =
d =
a = cos(3*x)
b = cos(5*x)
c = cos(7*x)
d = cos(9*x)
f(x) = a + b + c + d
Before the program accepts a subfunction definition, it makes a
first pass at parsing the expression. In this pass it is looking for
errors or constructions that it cannot deal with. Examples are
unbalanced parentheses or back-to-back operators. If the program
detects any errors, it will issue a warning message and prompt again
for the same subfunction. It will not allow you to enter a string of
more than fifty characters as a subfunction.
The next prompt after the subfunctions have been defined is the
main function prompt. This string may be as long as 73 characters.
Once again, the program will make a first pass at the string looking
for errors or bad constructions. It will also make sure that you
have not attempted to use an undefined subfunction character. If it
finds any problems, it will issue a message and prompt again for the
function definition.
Besides variables and constants, Mtool recognizes several
operators and many standard mathematical functions. A complete list,
with examples, follows on the next page.
7
Operators
---------
Addition + 2 + 2 = 4
Subtraction - 3 - 2 = 1
Multiplication * 3 * 2 = 6
Division / 4 / 2 = 2
Exponential ^ 2 ^ 3 = 8
Mathematical Functions
----------------------
Absolute value abs(x)
Exponential exp(x)
Cosine cos(x)
Sine sin(x)
Tangent tan(x)
Inverse cosine acos(x)
Inverse sine asin(x)
Inverse tangent atan(x)
Factorial fac(x)
Hyperbolic sine sinh(x)
Hyperbolic cosine cosh(x)
Hyperbolic tangent tanh(x)
Inverse hyperbolic sine asinh(x)
Inverse hyperbolic cosine acosh(x)
Inverse hyperbolic tangent atanh(x)
Logarithm, base 10 log(x)
Natural logarithm ln(x)
The x in each math function represents the argument of the
function. It must be enclosed within parentheses. This argument can
be any legal Mtool expression. The arguments for trigonometric
functions and the values of inverse trigonometric fuctions are
assumed to be in radians. If you wish to use degrees, then include a
factor to convert from degrees to radians. This can be done by using
two constants, setting one equal to pi and the other equal to 180.
An example of how to do this is shown in the Main Menu section below.
Some examples follow. These examples show all the Mtool prompts
and all the necessary replies to define functions.
Example 1 - Fifth degree polynomial
Independent variable: x
How many subfunctions(min 0; max 4): 0
Function definition:
f(x) = x^5 + 4*x^4 - 7*x^3 + 10*x^2 + 2*x - 12
8
Example 2 - Trigonometric function with constants
Independent variable: x
How many subfunctions(min 0; max 4): 0
Function definition:
f(x) = cos(m*x) + cos(n*x)
(Later Mtool will ask for values for m and n.)
Example 3 - Function with one subfunction
Independent variable: x
How many subfunctions(min 0; max 4): 1
Subfunction definition:
a = 3*x^3 + 2*x^2
Function definition:
f(x) = cos(a)
Example 4 - Function with four subfunctions
Independent variable: t
How many subfunctions(min 0; max 4): 4
Subfunction definitions:
a = cos(t) + cos(3*t)
b = cos(5*t) + cos(7*t)
c = cos(9*t) + cos(11*t)
d = cos(13*t) + cos(15*t)
Function definition:
f(t) = a + b + c + d
9
MAIN MENU
---------
After the function has been defined, Mtool will echo the
function definition and list the main menu. If the function were the
one in Example 4 above, then Mtool would put this on the screen:
f(t) = a + b + c + d
where a = cos(t) + cos(3*t)
b = cos(5*t) + cos(7*t)
c = cos(9*t) + cos(11*t)
d = cos(13*t) + cos(15*t)
1) Evaluate at a single point.
2) Evaluate over a range of points.
3) Integrate.
4) Both 2 and 3.
5) Derivative.
6) Solve.
7) Graph.
Enter choice:
Mtool expects you to answer with a number from 1 to 7 depending
on what you want it to do. After you make your choice Mtool will ask
you for any other information it needs. This information, and thus
Mtool's prompts, vary depending on your choice. The next several
sections will describe these prompts and possible responses.
10
EVALUATION AT A SINGLE POINT
----------------------------
The first choice in the menu causes Mtool to evaluate the
function for a single value of the independent variable. This means,
of course, that Mtool must query you for the value you wish to use.
Mtool will also query you for the values of any constants that may
have been included in your function. An example that includes
constants is shown below.
f(x) = cos(m*x) + cos(n*x)
What is the value of x: 0.2000
What is the value of n: 9.0000
m = 8.0000
n = 9.0000
Evaluating function
f( 0.2000 ) = -2.5640161698E-01
Press any key to continue.
Note that the arguments of the cosine terms in this function
have the unit radians. Also note that the spacing that appears on
the screen is accurately represented in this example. The prompt
asking for the value of m was issued but is not shown here because it
was overwritten by the prompt for n.
11
EVALUATION OVER A RANGE OF POINTS
---------------------------------
The second menu selection causes Mtool to evaluate the function
over a range of points. How this works should be clear from the
example below. Screen formats are not reproduced in this example.
f(x) = cos(p*x/n)
1) Evaluate at a single point.
2) Evaluate over a range of points.
3) Integrate.
4) Both 2 and 3.
5) Derivative.
6) Solve.
7) Graph.
Enter choice: 2
What is the value of p: 3.141592654
n = 180.0000
Lower limit of x: 0.0000
Upper limit of x: 10.0000
Number of subdivisions(even for integration): 10
Evaluating function...
f( 0.0000000000E+00 ) = 9.9999999999E-01
f( 1.0000 ) = 9.9984769515E-01
f( 2.0000 ) = 9.9939082702E-01
f( 3.0000 ) = 9.9862953475E-01
f( 4.0000 ) = 9.9756405026E-01
f( 5.0000 ) = 9.9619469809E-01
f( 6.0000 ) = 9.9452189537E-01
f( 7.0000 ) = 9.9254615164E-01
f( 8.0000 ) = 9.9026806874E-01
f( 9.0000 ) = 9.8768834059E-01
f( 10.0000 ) = 9.8480775301E-01
Press any key to continue.
Several things should be noted here. First, the total range of
values of the independent variable is defined by the responses to the
lower and upper limit prompts. Second, the number of points at which
the function is evaluated is always one greater than the number of
subdivisions. Third, the independent variable increment is the total
range divided by the number of subdivisions.
This example also shows how conversion from radians to degrees
works. The evaluated values are the cosines of angles from zero to
ten degrees at one degree intervals.
12
INTEGRATION
-----------
Mtool uses Simpson's Rule to numerically integrate. Simpson's
Rule requires that the interval of integration be divided into an
even number of subintervals. The greater the number of subintervals,
the more accurate the answer. Here's an example of how this works in
Mtool. All Mtool output is present, but screen formats are not
reproduced.
f(x) = 6*x^2
1) Evaluate at a single point.
2) Evaluate over a range of points.
3) Integrate.
4) Both 2 and 3.
5) Derivative.
6) Solve.
7) Graph.
Enter choice: 3
Lower limit of x: 0.0000
Upper limit of x: 5.0000
Number of subdivisions(even for integration): 20
Evaluating integral...
From 0.0000000000E+00 to 5.0000000000E+00
integral = 2.5000000000E+02
The antiderivative of this function is 2*x^3, and this evaluated
over the interval zero to five gives 250.0, which agrees exactly with
Mtool's result.
13
INTEGRATION AND EVALUATION OVER A RANGE OF POINTS
-------------------------------------------------
This selection combines the two previous functions. The inputs
and outputs are the same as before, as the following example shows.
Once again, all output is present, but screen formats are not
preserved.
f(x) = 6*x^2
1) Evaluate at a single point.
2) Evaluate over a range of points.
3) Integrate.
4) Both 2 and 3.
5) Derivative.
6) Solve.
7) Graph.
Enter choice: 4
Lower limit of x: 0.0000
Upper limit of x: 5.0000
Number of subdivisions(even for integration): 10
Evaluating function and integral...
f( 0.0000000000E+00 ) = 0.0000000000E+00
f( 0.5000 ) = 1.5000000000E+00
f( 1.0000 ) = 6.0000000000E+00
f( 1.5000 ) = 1.3500000000E+01
f( 2.0000 ) = 2.4000000000E+01
f( 2.5000 ) = 3.7500000000E+01
f( 3.0000 ) = 5.4000000000E+01
f( 3.5000 ) = 7.3500000000E+01
f( 4.0000 ) = 9.6000000000E+01
f( 4.5000 ) = 1.2150000000E+02
f( 5.0000 ) = 1.5000000000E+02
From 0.0000000000E+00 to 5.0000000000E+00
integral = 2.5000000000E+02
Press any key to continue.
14
DERIVATIVE
----------
This selection evaluates the derivative of the function for some
particular value of the independent variable. It uses the standard
definition of the derivative as a limit. This definition can be
found in any elementary calculus text. Only one prompt is necessary
after the menu choice, the value of the independent variable. The
following example shows how it works.
f(x) = 6*x^2
1) Evaluate at a single point.
2) Evaluate over a range of points.
3) Integrate.
4) Both 2 and 3.
5) Derivative.
6) Solve.
7) Graph.
Enter choice: 5
Value of x : 2
Evaluating derivative....
fprime( 2.0000000000E+00) = 2.3997318793E+01
Mtool's result is returned as fprime. Of course, the derivative
of 6*x^2 is 12*x, and for x = 2, 12*x = 24. Mtool's result is close
to this, but not exactly correct. This is an unavoidable byproduct
of the differing natures of computation and mathematics, but the
accuracy of derivatives in Mtool will rarely if ever be less than
four places.
15
SOLUTIONS
---------
One of Mtool's most powerful functions is its ability to find
roots of equations. All it requires is a range of independent
variable values within which to look. The example below shows a case
in which eleven roots are found.
f(x) = cos(8*x) + cos(9*x)
1) Evaluate at a single point.
2) Evaluate over a range of points.
3) Integrate.
4) Both 2 and 3.
5) Derivative.
6) Solve.
7) Graph.
Enter choice: 6
Enter range to search for solution.
Lower bound: 0.0000
Upper bound: 4
Solutions between x = 0.0000000000E+00 and x = 4.0000000000E+00
At x = 3.8807909265E+00 f(x) = 9.1622496257E-09
At x = 3.5111917891E+00 f(x) = 7.7397999121E-10
At x = 3.1415927394E+00 f(x) = 9.0949470177E-13
At x = 2.7719935179E+00 f(x) = 6.3664629124E-12
At x = 2.4023943823E+00 f(x) = -7.7034201240E-10
At x = 2.0327952467E+00 f(x) = 2.2337189876E-09
At x = 1.6631961111E+00 f(x) = -4.2809915612E-09
At x = 1.2935969755E+00 f(x) = 6.7411747295E-09
At x = 9.2399783991E-01 f(x) = -9.4601091405E-09
At x = 5.5439870339E-01 f(x) = -3.0299815990E-09
At x = 1.8479956780E-01 f(x) = 1.0559233488E-09
Press any key to continue.
The criterion used by Mtool is that, if the absolute value of
f(x) is less than 1.0e-8, then x qualifies as a root. Two cautions
are necessary. First, for some functions such as very high-order
polynomials, Mtool may not have great enough precision to find a
small enough value of f(x). In these cases Mtool will write its best
estimate along with the value of f(x) so that you can judge whether
it is indeed a root. Second, it may rarely occur that Mtool might
miss a root. This may occur when two roots are so close together
with respect to the size of the range being searched that Mtool sees
only one of them. Reducing the size of the range will allow Mtool to
see both. Coordinating Mtool's solution finding and graphics
capabilities will help you deal with these possibilities.
16
GRAPHICS
--------
Probably the most useful of Mtool's functions is its ability to
quickly generate plots of functions. Certainly this is the one that
I find most useful - indeed, it was just to have this that I wrote
the program in the first place. Once again, getting Mtool to do its
thing is very simple. Two examples are shown below - one for
automatic scaling and one for user-defined scaling.
EXAMPLE 1
---------
f(x) = cos(8*x) + cos(9*x)
1) Evaluate at a single point.
2) Evaluate over a range of points.
3) Integrate.
4) Both 2 and 3.
5) Derivative.
6) Solve.
7) Graph.
Enter choice: 7
Lower limit of x: 0.0000
Upper limit of x: 10.0000
Number of subdivisions(even for integration): 400
Automatic y-axis scaling(Y/N): y
EXAMPLE 2
---------
f(x) = cos(8*x) + cos(9*x)
1) Evaluate at a single point.
2) Evaluate over a range of points.
3) Integrate.
4) Both 2 and 3.
5) Derivative.
6) Solve.
7) Graph.
Enter choice: 7
Lower limit of x: 0.0000
Upper limit of x: 10.0000
Number of subdivisions(even for integration): 400
Automatic y-axis scaling(Y/N): n
Minimum y-axis value: -2
Maximum y-axis value: 2
17
The one thing missing in each of these examples is, of course,
the plot. But this is simple for you to remedy - just run Mtool,
type in the values shown, and you'll have the plots in about a minute
or so for each.
The autoscaling works by finding the maximum and minimum values
the function takes over the range of the plot, and setting the y-axis
accordingly. The user-defined option allows you to set the scale of
the y-axis so that you can compare different curves.
Mtool supports all common graphics standards - CGA, EGA, VGA,
and Hercules. It automatically detects what graphics board you have
in your computer and adjusts itself. This capability is one of the
many features added in version 4.0 of Turbo Pascal and - free
advertising for Borland International - a good reason to upgrade if
you haven't already.
Finally, if you have a graphics printer you can get printouts of
your plots. Before running Mtool run the program Graphics included
with PC/MS-DOS. This enables the computer to do a dump of a graphics
screen to the printer. When you have a plot that you wish to print,
just push the PrintScreen key.
18
DIFFICULTIES
------------
In the introduction I mentioned that Mtool can handle virtually
any well-behaved function of a single variable. A definition of what
constitutes a well-behaved function for Mtool is difficult, although
certainly any function that fits the calculus definition of a
continous function would qualify as well-behaved.
Functions that are not continuous can cause problems. Generally
speaking, there are three ways that a function can fail to be
continuous. All three can potentially cause problems for Mtool,
especially in the graphics area.
First, it may happen that a function does not exist at some
point. An example would be a rational function at a point where its
denominator becomes zero. If Mtool attempts to evaluate the function
at this point, it will issue an error message. However, it may occur
that you ask for a plot of this function over a range that includes
such a point but because of the choice of endpoints and number of
subdivisions, Mtool does not attempt to evaluate the function at that
point. A plot will appear, but the fact that the function does not
exist at some point will not be apparent from the plot. You would
only become aware of this discontinuity if Mtool tried to evaluate
the function at this point and issued a division by zero error
message.
Second, consider the function
f(x) = sin(x)/x , x <> 0
f(x) = 0, x = 0
Discontinuous functions of this nature cannot be defined in Mtool.
Only one of the two parts, say the first, could be defined. Then
f(x) = sin(x)/x becomes a type one function.
Third, and most troublesome to Mtool, are functions that are not
defined at some point, but do have limits that vary depending on the
direction of approach to the point. An example of this type of
function is tan(x). As x approaches pi/2 from below, tan(x) goes to
infinity. As x approaches pi/2 from above, tan(x) goes to negative
infinity. If you plot tan(x) from x = 1 to x = 2, you will see a
nearly vertical line near x = pi/2 because Mtool connects the points
on either side of pi/2.
The upshot of all this is, if you are dealing with
non-continuous functions, be careful, and if you get plots that seem
strange, check your function to see if it is one of these types.
19
LOOPING
-------
After any main menu operation has been completed, Mtool offers
you the chance to use the same function again without reentering the
subfunction and function definitions. The menu that it presents
looks like this:
f(t) = a + b + c + d
where a = cos(t) + cos(3*t)
b = cos(5*t) + cos(7*t)
c = cos(9*t) + cos(11*t)
d = cos(13*t) + cos(15*t)
S)ame function
N)ew function
E)dit function
Q)uit
Enter choice:
Mtool displays your current function definition and its simple
menu. The choices are obvious.
If you do choose to reuse the same function and if the function
contains constants, then Mtool will ask if you wish to change their
values. The prompts look like this:
Value of m same( 8.0000000000E+00)..(Y/N): y
Value of n same( 9.0000000000E+00)..(Y/N): y
Mtool shows the current value of the constant and asks if you
wish to leave it unchanged. If you answer no for any constant, then
at the normal position following the main menu, Mtool will ask you
for the new value. Immediately after you have answered these
constant prompts, Mtool goes into the main menu.
20
APPLICATIONS
------------
This section includes two rather complicated applications to
give you a taste of the types of things you can do with Mtool. Both
applications relate directly to the earlier History section because
they are both specific cases where I had wished that I had a tool
like Mtool.
Taylor Series
-------------
A Taylor Series can be found for any function f that has
derivatives of all orders at some point a. If we let T(x) be the
Taylor Series then
T(x) = f(a) + f'(a)(x-a) + f''(a)(x-a)^2/2! + ... +
fk(a)(x-a)^k/k! + ....
where fk denotes the kth derivative of f. The special case of the
Taylor Series about the point a = 0 is called the Maclaurin series.
These series are discussed at length in introductory calculus texts.
One application of these series is to approximate certain
functions. For example, the Maclaurin series for f(x) = e^x is given
by
1 + x + x^2/2 + x^3/3! + x^4/4! + ....
Given sufficient terms, this series converges to e^x for all x. My
questions were, how many terms are necessary, and how closely does
some number of terms, say 4 or 5 or 10, approach e^x, and over what
range of values of x does this approximation hold. If you are
familiar with Taylor and Maclaurin series, then you know that there
exists a formula for the remainder which gives the maximum error for
the series, but this will not give you the same feel for the accuracy
of the series approximation as a plot. For a plot of the error of a
twelve term Maclaurin series approximation to e^x, type the function
on the next page into Mtool.
21
f(x) = a + b + c + d - exp(x)
where a = 1 + x + x^2/2 + x^3/fac(3)
b = x^4/fac(4) + x^5/fac(5) + x^6/fac(6)
c = x^7/fac(7) + x^8/fac(8) + x^9/fac(9)
d = x^10/fac(10) + x^11/fac(11)
1) Evaluate at a single point.
2) Evaluate over a range of points.
3) Integrate.
4) Both 2 and 3.
5) Derivative.
6) Solve.
7) Graph.
Enter choice: 7
Lower limit of x: -2.0000
Upper limit of x: 2.0000
Number of subdivisions(even for integration): 200
Automatic y-axis scaling(Y/N): y
In about the same amount of time that it takes you to enter this
function you'll have a plot showing how closely this series matches
e^x over the given range of x. Using the "same" response to the loop
menu, you will be able to play with different ranges of x and with
different numbers of points to plot. If you're like me, you will
quickly get a much better feel for the accuracy of this approximation
than you would ever get from a formula or two.
22
Fourier Series
--------------
The second application comes from one of my engineering courses.
According to Fourier analysis, a square wave can be approximated by
the series
f(t) = 1/2 + (2/pi)cos(t) - (2/3*pi)cos(3t) + (2/5*pi)cos(5t) - ....
The greater the number of terms the nearer the series approaches a
square wave. Usually in a text there will one and only one graph
that shows this. It would be nice to play around with this and see
how close series of different lengths actually do come to a square
wave. With Mtool this is possible. The following script shows how
to get a plot of the series when it has nine terms:
f(t) = a + b + c + d
where a = 1/2 + 2*cos(t)/p - 2*cos(3*t)/(3*p)
b = 2*cos(5*t)/(5*p) - 2*cos(7*t)/(7*p)
c = 2*cos(9*t)/(9*p) - 2*cos(11*t)/(11*p)
d = 2*cos(13*t)/(13*p) - 2*cos(15*t)/(15*p)
1) Evaluate at a single point.
2) Evaluate over a range of points.
3) Integrate.
4) Both 2 and 3.
5) Derivative.
6) Solve.
7) Graph.
Enter choice: 7
What is the value of p: 3.141592654
Lower limit of t: 0.0000
Upper limit of t: 10.0000
Number of subdivisions(even for integration): 200
Automatic y-axis scaling(Y/N): y
Once again, after a wait of about a minute or so, you'll be able
to see just how close this series approximates a square wave. If you
want you can zoom in on any part of the curve simply by choosing
"same" on the loop menu and resetting the range over which to plot.
23
LEGALITIES
----------
Mtool is shareware, also known as user-supported software. The
diskette with program and user's guide can be freely copied and
shared. The idea of shareware is that if the user finds the program
worthwhile then he can, at his own discretion, support the author by
sending him a contribution.
Mtool is NOT a public domain program. It is copyright (c) 1988
by Martin J. Maher, and the author retains all rights. In
particular, he retains the right to distribute this program and all
source code and documentation for profit. There is no guarantee that
Mtool will work correctly in all situations, and in no event will the
author be liable for any damages arising from the use or misuse of
this program.
User groups, bulletin boards, clubs, and shareware distributors
are authorized to distribute Mtool under the following conditions:
1. No charge is made for the software or the documentation. A
nominal distribution fee may be charged to cover copying
and distribution costs.
2. Recipients are to be notified of the shareware concept and
should be encouraged to support it.
3. The program and documentation are not to be modified in any
way.
4. The source code for Mtool is available to registered users.
They may alter it for their own use but may not distribute
it for profit.
Turbo Pascal is a trademark of Borland International, Inc.
Compaq and Compaq Deskpro are trademarks of Compaq Computer Corp.
MS-DOS is a trademark of Microsoft, Inc. PC-DOS, CGA, EGA, and VGA
are trademarks of International Business Machines, Inc. Hercules is
a trademark of Hercules Computer Technologies, Inc.
24
SHAREWARE
---------
My hopes are that you will find this program useful and that,
of course, you will decide to become a registered user of Mtool by
filling out the registration form on the last page and mailing it to
me along with a check for $10.00. In addition to the warm glow of
virtue, registration will bring you the following benefits:
1) The most recent version of the program.
2) The most recent version of the program that supports the
80x87 math coprocessor chips. This version runs
significantly faster.
3) Notification of future major upgrades.
4) Reduced prices for future major upgrades.
The source code for Mtool is available to registered users. The
purchase price is $10.00, so that the total for both registration and
source code is $20.00.
Above I mention future major upgrades. These upgrades may
include, but are not limited to, logarithmic and semi-logarithmic
plots, file support, expanded function definition capabilities, and
improved user interfaces. Finally, if you have any comments,
complaints, bug reports, or suggestions I would very much appreciate
hearing from you.
25
REGISTRATION FORM
-----------------
You may register your copy of Mtool by filling out the following
form and mailing it with a check for $10.00 to the address below.
You will promptly receive a diskette with the most recent version of
Mtool, a version of Mtool that supports the 80x87 math coprocessor,
and the most recent version of the user's guide. You will also be
placed on our mailing list so that you may be notified of future
versions, and you will qualify for discounted prices on those future
versions. If your check is for $20.00, all Mtool source code will be
included on the diskette.
Thank you for your support.
Mail to:
Martin J. Maher
MJM Engineering
P.O. Box 2027
Hawthorne, Ca. 90251
Name_________________________________________________________
Address______________________________________________________
City/State___________________________________________________
Zip Code _________________________
How did you first learn about Mtool, or where did you receive
your first copy of Mtool?
___________________________________________________________________
___________________________________________________________________
Comments or suggestions
_____________________________________________________________________
_____________________________________________________________________
26
```

```
Volume in drive A has no label
Directory of A:\
CCONV PAS 58874 2-05-88 2:24a
CDOC BAT 153 10-21-88 10:43a
CONVERT DOC 30084 5-03-88 1:34a
CONVERT EXE 47664 2-05-88 2:24a
CONVERT PAS 515 2-05-88 2:14a
FILE1183 BAK 1586 10-21-88 10:32a
FILE1183 TXT 1609 10-24-88 1:58p
GO BAT 38 1-18-88 1:38p
GO TXT 848 10-21-88 10:42a
MTDOC BAT 151 10-21-88 10:42a
MTOOL DOC 47741 5-03-88 1:34a
MTOOL EXE 108176 4-25-88 2:16a
READ ME 1415 2-08-88 1:37a
13 file(s) 298854 bytes
16384 bytes free
```