Division by zero
- From: Nicolas.Capens@xxxxxxxxx
- Date: 26 Dec 2006 18:04:09 -0800
Hi all,
I have a theory to work with division by zero, and it might have some
use in computer science.
I got inspired by Dr. Anderson's 'nullity' number:
http://www.bookofparagon.com/News/News_00012.htm. But as far as I know
it doesn't solve any real problem. At the best he proves that by
allowing a nullity number off the real number line, 0^0 = 0 / 0, in
other words NaN = NaN unlike IEEE 754. I don't think that really helps
us. My proposal does solve actual division by zero problems.
Though it might sound crazy to even -want- be able to work with divsion
by zero, remember that we've been working with square roots of negative
numbers for quite a while...
But let me start with an intuitive example. Suppose we want to compute
a * b, but we only get a / x, x, and b. So we have to compute (a / x) *
(b * x). This works for every x except zero. But to avoid division by
zero we can keep a and set a field that indicates division by zero. To
be able to compute a * b, we also have to keep the value of b after
multiplying with zero, and set a field that indicates multiplication by
zero. When computing (a / x) * (b * x), we multiply the values of a and
b, and the division by zero and multiplication by zero fields cancel
each other.
Mathematically, we can introduce a number Q defined as 1 * 0 = Q. This
makes it possible to write 1 / 0 = Q^-1, much in the same way that i^2
= -1. With this we can solve the above division by zero as: (a * Q^-1)
* (b * Q) = (a * b) * (Q^-1 * Q) = a * b. When x is not zero, the
division can return a/x * Q^0 and the multiplication b*x * Q^0. Also,
when dividing by zero twice we get Q^-2, and multiplying by zero twice
gives Q^2. The most important axioms are:
a = a * Q^0
a * b =
a * b * Q^0 {a != 0, b != 0}
a * Q^1 {b = 0}
b * Q^1 {a = 0}
1 * Q^2 {a = 0, b = 0}
a / b =
a / b * Q^0 {a != 0, b != 0}
a * Q^-1 {b = 0}
0 * Q^0 {a = 0}
0 * Q^-1 {a = 0, b = 0}
Note that for a computer implementation, two bits suffice to represent
Q^-2, Q^-1, Q^0 and Q^1, enough to cover the most common issues with
division by zero. Basically it converts (a / x) * (b * x) to a * b for
us. I don't really know a situation where we -want- a division by zero
exception for this (we can still test x = 0 for aborting computations).
Arguable it's the programmer's responsability to compute a * b directly
and avoid all chance for division by zero. But the same reasoning can
be used for complex numbers...
One problem is that addition of numbers with different Q exponent can't
be defined in a useful way. Powers and roots are definable, but then
the Q exponents are no longer integers. For example the square root of
-4 / 0 is 2*i*Q^-0.5. This illustrates that i and Q are orthogonal,
thus defining a three-dimensional space. In this space 0^0 is still
undefined though.
Any thoughts about this?
Nicolas Capens
.
- Follow-Ups:
- Re: Division by zero
- From: Proginoskes
- Re: Division by zero
- From: Patricia Shanahan
- Re: Division by zero
- Prev by Date: pumping lemma question
- Next by Date: Re: Division by zero
- Previous by thread: pumping lemma question
- Next by thread: Re: Division by zero
- Index(es):
Relevant Pages
|