From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on polar.synack.me X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=unavailable autolearn_force=no version=3.4.4 Path: eternal-september.org!reader01.eternal-september.org!reader02.eternal-september.org!news.eternal-september.org!mx02.eternal-september.org!.POSTED!not-for-mail From: "Jeffrey R. Carter" Newsgroups: comp.lang.ada Subject: Re: getting same output as gfortran, long_float Date: Thu, 30 Apr 2015 18:16:52 -0700 Organization: Also freenews.netfront.net; news.tornevall.net; news.eternal-september.org Message-ID: References: Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit Injection-Date: Fri, 1 May 2015 01:15:52 +0000 (UTC) Injection-Info: mx02.eternal-september.org; posting-host="a3855fbfe1a666be9aefba0563039ed5"; logging-data="23973"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX18t9uFl91goMvCF3gzuoBnjNGWQZcyffRc=" User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.6.0 In-Reply-To: Cancel-Lock: sha1:WS5MykTg/SEJE8Zkf5xVlh58fjk= Xref: news.eternal-september.org comp.lang.ada:25675 Date: 2015-04-30T18:16:52-07:00 List-Id: On 04/30/2015 03:32 PM, Nasser M. Abbasi wrote: > > With Ada.Text_IO; > with system; > procedure Foo_However_Many is > type Big is digits System.Max_Digits; > X : Big := 12.0 * 0.0001 / (1.0 * (1.0 - 0.1) ** 4); > begin -- Foo_However_Many > Ada.Text_IO.Put_Line (Item => X'Img); > end Foo_However_Many; > > ./foo_however_many > 1.82898948331047096E-03 You could always do with Ada.Text_IO; with PragmARC.Rational_Numbers; with PragmARC.Unbounded_Integers; procedure Foo_Rational is use PragmARC; use type Rational_Numbers.Rational; use type Unbounded_Integers.Unbounded_Integer; One_I : constant Unbounded_Integers.Unbounded_Integer := +1; Twelve : constant Rational_Numbers.Rational := Unbounded_Integers."+" (12) / One_I; P0001 : constant Rational_Numbers.Rational := One_I / (+10_000); -- 0.0001 P1 : constant Rational_Numbers.Rational := One_I / (+10); -- 0.1 One : Rational_Numbers.Rational renames Rational_Numbers.One; Result : constant Rational_Numbers.Rational := Twelve * P0001 / (One * (One - P1) ** 4); begin -- Foo_Rational Ada.Text_IO.Put_Line (Item => Rational_Numbers.Image (Result) ); end Foo_Rational; $ gnatmake -gnatano -gnatwa -O2 -fstack-check -I../RAC foo_rational.adb gcc-4.6 -c -gnatano -gnatwa -O2 -fstack-check -I../RAC foo_rational.adb gnatbind -I../RAC -x foo_rational.ali gnatlink foo_rational.ali -O2 -fstack-check jrcarter@jcarter-singo-laptop:~/Code$ ./foo_rational 0.0018289894833104709647919524462734339277549154092363968907178783721993598536808413351623228166438042981252857796067672610882487425697302240512117055326931870141746684956561499771376314586191129401005944215820759030635573845450388660265203475080018289894833104709647919524462734339277549154092363968907178783721993598536808413351623228166438042981252857796067672610882487425697302240512117055326931870141746684956561499771376314586191129401005944215820759030635573845450388660265203475080018289894833104709647919524462734339277549154092363968907178783721993598536808413351623228166438042981252857796067672610882487425697302240512117055326931870141746684956561499771376314586191129401005944215820759030635573845450388660265203475080018289894833104709647919524462734339277549154092363968907178783721993598536808413351623228166438042981252857796067672610882487425697302240512117055326931870141746684956561499771376314586191129401005944215820759030635573845450388660265203475080018289894833104709647919 524462 The referenced PragmARC pkgs are available in the beta version of the PragmAda Reusable Components available from https://pragmada.x10hosting.com/pragmarc.htm -- Jeff Carter "Many times we're given rhymes that are quite unsingable." Monty Python and the Holy Grail 57