 
     October 30, 1992

     I just bought and installed a math coprocessor in my computer. I have
     several programs that benefit greatly from this upgrade. I have an
     80386 DX / 33 Mhz computer. I chose a Cyrix 83D87 math chip. It is
     basically a clone of the Intel 80387 with a lower price tag. The Intel
     chip goes for about $180.00 by mail order usually, while the Cyrix can
     be mail-ordered for about $135.00. Tomorrow the prices may be even
     lower. In my case, the firm that I bought my computer from offers
     upgrades to their customers at even lower prices. I paid $116.00.

     A math chip does what is called "floating point math". Here's what that
     means: Consider only whole numbers. If you add whole numbers, the sum
     is a whole number. If you multiply or subtract whole numbers, the
     result is always whole numbers. But if you divide 2 whole numbers, the
     result may or may not be a whole number. The result may be a decimal
     number. Division of whole numbers goes by a name in the math world
     called `rational expression'. (In this paper I am using the term "whole
     number" very loosely, it can include zero or negatives for my purposes
     here. The type of whole numbers I mean can also be called integers).
     Well, decimal numbers is what in the computer world is called floating
     point math. In a computer without a math chip, decimal numbers are
     handled by the CPU. (In my case, it would be handled by the 80386). But
     it can be a tough, time-consuming process, in comparison to whole
     number types of operations. There are 2 types of decimal numbers, one
     eventually results in a repeating pattern, as in 2.000000000 or
     2143333333333...etc (which is 643 divided by 300, the 3s never end).
     Another might be 3.143789789789...etc, the 789s never end. The other
     type has a non-repeating pattern, as in 1.2345678910 or 3.1415926535.
     The repeaters are called rational numbers. The non-repeaters are called
     irrational numbers. Here is how we know which is which: Division of
     whole numbers results in rational answers. Division involving any
     decimal numbers results in irrational answers.

     In the ideal case, a math chip would always take over all decimal
     operations. This would make for essentially 8 different kinds of math:
     addition, subtraction, multiplication, and division of whole numbers,
     and the same 4 operations involving any decimal numbers. The 8th is
     called irrational math, also involving decimals (non-repeating decimal
     patterns, that are gotten by dividing any decimals). The math chip
     would then take over 5 of those 8 operations, since 5 of them are
     floating point operations, allowing the CPU to do other stuff eight-
     fifths of the time. Eight-fifths = 1.6, so then the computer would run
     exactly 60% faster.

     But alas, it isn't quite that simple. Software must be specifically
     written to use the math chip. If it isn't, the chip remains idle. There
     are 2 different kinds of such softwares: The kind that requires a math
     chip to even run, and the kind that doesn't require it but uses a math
     chip if it is there. I have several of the latter kind, including EZ
     Cosmos (an astronomy program), Mercury (a math program), etc. EZ Cosmos
     runs 5 times faster than it used to, and Mercury runs 5.5 times faster
     than it used to. Many softwares don't use a math chip at all. I also
     have other math-chip-aware programs. One must read the fine print.

     Do not ever install a TSR math chip emulator. The only purpose of these
     is to allow the running of programs that require a math coprocessor to
     even run. If it works, you are running a huge risk of the program
     crashing at an inconvenient time, resulting in lost data. Secondly,
     many programmers know how to write software to tell the difference
     between an emulator, and the real chip. If this programmer(s) happens
     to be buddy-buddy with a math chip manufacturer, then he/she might
     write their program to refuse to run if only an emulator is present.
     Furthermore, for the kind of program that runs without a math chip, but
     runs much faster with one, it won't run a smidgen faster if only an
     emulator is present. Typically an author of an emulator wants anywhere
     from $5.00 to $55.00 for their software emulator. Some will admit the
     limitations and risks of their programs, while others won't. You are
     much better off investing in the real chip for $116.00 to $180.00.

     To change the subject, I will address the proof that division by zero
     is not defined.

                  8
     If you say  --- = 2, you can check it by multiplying the result of 2
                  4       times the denominator of 4, and 2 x 4 = 8, the
                          numerator.

                  0
     If you say  --- = 0, you can check it by multiplying the result of 0
                  4       times the denominator of 4, and 0 x 4 = 0, the
                          numerator.

                  4
     However,    --- = what, because   what x 0 = 4?   This is undefined.
                  0


                  0
     If you say  --- = 0, guess what, that's wrong! The zero denominator may
                  0       as well be ANY number, since:   0 x Anything = 0.



     Zero in the denominator is never defined. If you are doing a long,
     complicated algebra problem, and somewhere along the line you end with
     a zero denominator, then either

     1) You made a mistake somewhere along the line.
     2) The problem is trying to tell you it can't be solved.

     If 2, then

     A) Possibly useful; you have a vertical slope on your Cartesian graph.
     B) Possibly useful; since you realize that you aren't working with a
        function in this part of the problem.
     C) Give up and try to think of something happy.

     If you are using a math program, and for whatever reason a division by
     zero is attempted, one of three things will happen:

     1) The program recognizes the offense, notifies you, and gives you
        a chance to correct things. So far this is a quality program.
     2) The program recognizes the offense, and returns control of the
        computer to the operating system. Annoying. Possible lost data.
     3) The program does not recognize the error, and the computer "hangs",
        and all you can hope to do is power down and re-boot. Infuriating.
        Possible lost data. Try to think of something happy.

     Actually, it takes under 10 lines of text source code for a programmer
     to test for a zero denominator, if it's found then put a message on the
     screen, abort the division before it's attempted, and return control
     within the program to the request for input. Except for beginning
     programmers, there's hardly an excuse to not program the computer this
     way. In 2 and 3 this was left out, and it is up to the compiler (a
     small part of every program) to either return to the operating system,
     or to freak out and hang the computer (cheap compiler). Borland's Turbo
     Pascal compiler simply jumps to the operating system.
 