Related articles |
---|
rational to floating point thant@acm.org (Thant Tessman) (2003-03-09) |
Re: rational to floating point chase@theworld.com (David Chase) (2003-03-14) |
Re: rational to floating point nmm1@cus.cam.ac.uk (2003-03-14) |
Re: rational to floating point thant@acm.org (Thant Tessman) (2003-03-14) |
Re: rational to floating point joachim_d@gmx.de (Joachim Durchholz) (2003-03-14) |
Re: rational to floating point ajo@andrew.cmu.edu (Arthur J. O'Dwyer) (2003-03-14) |
Re: rational to floating point gah@ugcs.caltech.edu (Glen Herrmannsfeldt) (2003-03-14) |
Re: rational to floating point tmk@netvision.net.il (2003-03-14) |
Re: rational to floating point Peter-Lawrence.Montgomery@cwi.nl (2003-03-14) |
Re: rational to floating point francis@thibault.org (John Stracke) (2003-03-14) |
From: | tmk@netvision.net.il (Michael Tiomkin) |
Newsgroups: | comp.compilers |
Date: | 14 Mar 2003 11:51:23 -0500 |
Organization: | http://groups.google.com/ |
References: | 03-03-035 |
Keywords: | arithmetic |
Posted-Date: | 14 Mar 2003 11:51:23 EST |
Thant Tessman <thant@acm.org> wrote in message news:03-03-035...
> ... Currently the interpreter displays rational
> numbers as the ratio of two integers. I'd like it to display rational
> numbers as floating-point numbers whenever the conversion to floating
> point won't produce an infinite (repeating) stream of digits.
>
> The question is: Under what conditions will a rational number produce
> an infinite stream of digits for a given base? ...
> Is my reasoning sound? Is there a simpler test?
I think it's wrong, while your base equation, b^n = c * d, is right.
Let a rational number be normalized, i.e. gcd(n,d) is 1 and d > 0
(n is numerator and d is denominator). When the base b is equal
to p_1^n_1 *...* p_k^n_k, p_i are prime numbers and n_i>0,
the number can be represented as a finite fp number with base b
if and only if d is a multiplication of powers of p_1,...,p_k.
In other words, the stream of digits will be infinite if d is divisible
by a prime number that does not divide b.
In the terms of prime factors, the stream of digits is finite if
and only if the set of prime factors of d is a subset of the set
of prime factors of b.
By the way, why can't you print your number with repeating stream
of digits, like 1/3 in decimal notaion as 0.(3)^* ?
In this case you'll always be able to print a rational number
as a floating point number.
Michael
Return to the
comp.compilers page.
Search the
comp.compilers archives again.