Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.forth > #57584

Re: real to rational number

From Paul Rubin <no.email@nospam.invalid>
Newsgroups comp.lang.forth
Subject Re: real to rational number
Date 2017-04-19 00:41 -0700
Organization A noiseless patient Spider
Message-ID <87zifcetey.fsf@nightsong.com> (permalink)
References <d34926ea-ca84-4918-aa2f-82ebb21c6470@googlegroups.com> <87efwpf7cw.fsf@nightsong.com> <718428df-9808-4765-a9a1-48d43a971d24@googlegroups.com>

Show all headers | View raw


krishna.myneni@ccreweb.org writes:
> Just so the problem is clear, I have a double precision value for r,
> which means I know it to about 16 significant digits. I know r, with
> infinite precision, is a rational number, but my machine
> representation is a rounded version to the limited precision. Now, I
> want to find "a" and "b" where r = a/b. Dividing the floating point
> representations of a and b, ra and rb, should give me a number equal
> to r in the machine representation.

For the r you gave, it's 8/105 in 64-bit gforth:

 7.61904761904762e-02 fvariable r  
 8e 105e f/ fvariable q
 q r f- f. 

=>   0.  ok

If you want to find the ratio by continued fractions, here's Haskell
code that I just wrote:

    import Data.Ratio
    import Control.Monad (forM_)

    r = 7.61904761904762e-02

    -- turn real number into continued fraction sequence
    contFrac :: RealFrac a => a -> [Integer]
    contFrac x = a : contFrac (1/b) where
      (a,b) = properFraction x

    -- turn truncated continued fraction into a rational number
    unFrac :: Integral a => [a] -> Ratio Integer
    unFrac [c] = fromIntegral c
    unFrac (c:cs) = fromIntegral c + 1/unFrac cs

    -- make rational from first n terms of cont frac of a real
    approx :: RealFrac a => Int -> a -> Ratio Integer
    approx n x = unFrac . take n . contFrac $ x

    -- print first 4 rational approximations of r
    main = forM_ [1..4] $ \i -> do
              print (approx i r)

The output for the first 4 terms is:

    *Main> main
    0 % 1
    1 % 13
    8 % 105
    70368744177665 % 923589767331853

You can see the 4th approximant is basically noise.  The 5th is much
worse noise, several dozen digits.

Back to comp.lang.forth | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread


Thread

real to rational number krishna.myneni@ccreweb.org - 2017-04-18 04:49 -0700
  Re: real to rational number lehs <skydda.barnen@gmail.com> - 2017-04-18 06:48 -0700
    Re: real to rational number krishna.myneni@ccreweb.org - 2017-04-18 19:09 -0700
      Re: real to rational number lehs <skydda.barnen@gmail.com> - 2017-04-18 22:53 -0700
        Re: real to rational number krishna.myneni@ccreweb.org - 2017-04-19 04:43 -0700
          Re: real to rational number rickman <gnuarm@gmail.com> - 2017-04-19 15:41 -0400
            Re: real to rational number Paul Rubin <no.email@nospam.invalid> - 2017-04-19 13:03 -0700
              Re: real to rational number "Rudy Velthuis" <newsgroups@rvelthuis.de> - 2017-04-20 17:26 +0000
              Re: real to rational number hughaguilar96@gmail.com - 2017-04-20 14:29 -0700
      Re: real to rational number "Rudy Velthuis" <newsgroups@rvelthuis.de> - 2017-04-19 23:44 +0000
        Re: real to rational number Paul Rubin <no.email@nospam.invalid> - 2017-04-19 19:30 -0700
          Re: real to rational number "Rudy Velthuis" <newsgroups@rvelthuis.de> - 2017-04-20 17:08 +0000
            Re: real to rational number Paul Rubin <no.email@nospam.invalid> - 2017-04-20 11:46 -0700
              Re: real to rational number "Rudy Velthuis" <newsgroups@rvelthuis.de> - 2017-04-21 09:47 +0000
            Re: real to rational number lehs <skydda.barnen@gmail.com> - 2017-04-20 20:49 -0700
    Re: real to rational number rickman <gnuarm@gmail.com> - 2017-04-19 15:36 -0400
      Re: real to rational number krishna.myneni@ccreweb.org - 2017-04-20 18:44 -0700
  Re: real to rational number hughaguilar96@gmail.com - 2017-04-18 07:06 -0700
    Re: real to rational number krishna.myneni@ccreweb.org - 2017-04-18 19:17 -0700
      Re: real to rational number Paul Rubin <no.email@nospam.invalid> - 2017-04-18 19:45 -0700
        Re: real to rational number krishna.myneni@ccreweb.org - 2017-04-18 19:57 -0700
        Re: real to rational number anton@mips.complang.tuwien.ac.at (Anton Ertl) - 2017-04-19 05:35 +0000
      Re: real to rational number hughaguilar96@gmail.com - 2017-04-18 23:42 -0700
        Re: real to rational number krishna.myneni@ccreweb.org - 2017-04-19 04:53 -0700
          Re: real to rational number hughaguilar96@gmail.com - 2017-04-19 11:32 -0700
  Re: real to rational number minforth@arcor.de - 2017-04-18 08:23 -0700
    Re: real to rational number krishna.myneni@ccreweb.org - 2017-04-18 19:24 -0700
      Re: real to rational number Paul Rubin <no.email@nospam.invalid> - 2017-04-18 19:48 -0700
        Re: real to rational number krishna.myneni@ccreweb.org - 2017-04-18 20:01 -0700
  Re: real to rational number Paul Rubin <no.email@nospam.invalid> - 2017-04-18 19:39 -0700
    Re: real to rational number krishna.myneni@ccreweb.org - 2017-04-18 19:56 -0700
      Re: real to rational number Paul Rubin <no.email@nospam.invalid> - 2017-04-19 00:41 -0700
        Re: real to rational number krishna.myneni@ccreweb.org - 2017-04-19 04:48 -0700
        Re: real to rational number hughaguilar96@gmail.com - 2017-04-19 11:30 -0700
      Re: real to rational number albert@cherry.spenarnc.xs4all.nl (Albert van der Horst) - 2017-04-20 20:15 +0200
        Re: real to rational number krishna.myneni@ccreweb.org - 2017-04-20 15:23 -0700
          Re: real to rational number Paul Rubin <no.email@nospam.invalid> - 2017-04-20 18:52 -0700
  Re: real to rational number Pablo Hugo Reda <pabloreda@gmail.com> - 2017-04-18 19:58 -0700
    Re: real to rational number krishna.myneni@ccreweb.org - 2017-04-18 20:05 -0700
      Re: real to rational number Pablo Hugo Reda <pabloreda@gmail.com> - 2017-04-19 05:30 -0700
        Re: real to rational number Pablo Hugo Reda <pabloreda@gmail.com> - 2017-04-19 05:35 -0700
          Re: real to rational number Pablo Hugo Reda <pabloreda@gmail.com> - 2017-04-19 05:41 -0700
            Re: real to rational number krishna.myneni@ccreweb.org - 2017-04-19 19:39 -0700
  Re: real to rational number "Rudy Velthuis" <newsgroups@rvelthuis.de> - 2017-04-19 23:16 +0000
    Re: real to rational number krishna.myneni@ccreweb.org - 2017-04-19 19:42 -0700
      Re: real to rational number "Rudy Velthuis" <newsgroups@rvelthuis.de> - 2017-04-20 17:15 +0000
        Re: real to rational number krishna.myneni@ccreweb.org - 2017-04-20 15:11 -0700
          Re: real to rational number hughaguilar96@gmail.com - 2017-04-20 15:49 -0700
            Re: real to rational number Alex <alex@rivadpm.com> - 2017-04-21 00:20 +0100
              Re: real to rational number krishna.myneni@ccreweb.org - 2017-04-20 18:49 -0700
                Re: real to rational number The Beez <the.beez.speaks@gmail.com> - 2017-04-21 03:18 -0700
                Re: real to rational number krishna.myneni@ccreweb.org - 2017-04-21 18:39 -0700
                Re: real to rational number krishna.myneni@ccreweb.org - 2017-04-21 18:46 -0700
                Re: real to rational number Paul Rubin <no.email@nospam.invalid> - 2017-04-21 21:55 -0700
                Re: real to rational number krishna.myneni@ccreweb.org - 2017-04-22 08:33 -0700
                Re: real to rational number Paul Rubin <no.email@nospam.invalid> - 2017-04-22 13:35 -0700
                Re: real to rational number The Beez <the.beez.speaks@gmail.com> - 2017-04-24 00:58 -0700
                Re: real to rational number minforth@arcor.de - 2017-04-24 01:08 -0700
                Re: real to rational number minforth@arcor.de - 2017-04-23 02:28 -0700
                Re: real to rational number hughaguilar96@gmail.com - 2017-04-21 18:43 -0700
                rationalising  reality,   was Re: real to rational number Jan Coombs <jenfhaomndgfwutc@murmic.plus.com> - 2017-04-22 10:28 +0100
                Re: rationalising  reality,   was Re: real to rational number Mark Wills <markwills1970@gmail.com> - 2017-04-22 02:33 -0700
            Re: real to rational number krishna.myneni@ccreweb.org - 2017-04-20 16:22 -0700
              Re: real to rational number hughaguilar96@gmail.com - 2017-04-20 22:02 -0700
                Re: real to rational number Julian Fondren <julian.fondren@gmail.com> - 2017-04-21 00:12 -0700
                Re: real to rational number "Rudy Velthuis" <newsgroups@rvelthuis.de> - 2017-04-21 09:55 +0000
                Re: real to rational number hughaguilar96@gmail.com - 2017-04-25 10:52 -0700
                Re: real to rational number "Rudy Velthuis" <newsgroups@rvelthuis.de> - 2017-04-29 03:16 +0000
              Re: real to rational number "Rudy Velthuis" <newsgroups@rvelthuis.de> - 2017-04-21 09:52 +0000
              Re: real to rational number lehs <skydda.barnen@gmail.com> - 2017-04-21 05:35 -0700
                Re: real to rational number hughaguilar96@gmail.com - 2017-04-21 19:05 -0700
                Re: real to rational number The Beez <the.beez.speaks@gmail.com> - 2017-04-24 01:14 -0700
                Re: real to rational number Cecil Bayona <cbayona@cbayona.com> - 2017-04-24 11:31 -0500
                Re: real to rational number The Beez <the.beez.speaks@gmail.com> - 2017-04-25 00:52 -0700
                Re: real to rational number hughaguilar96@gmail.com - 2017-04-24 11:43 -0700
                Re: real to rational number The Beez <the.beez.speaks@gmail.com> - 2017-04-25 00:35 -0700
                Re: real to rational number The Beez <the.beez.speaks@gmail.com> - 2017-04-25 01:09 -0700
                Re: real to rational number minforth@arcor.de - 2017-04-26 01:55 -0700

csiph-web