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=-0.3 required=5.0 tests=BAYES_00, REPLYTO_WITHOUT_TO_CC autolearn=no 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!feeder.eternal-september.org!aioe.org!.POSTED!not-for-mail From: "Nasser M. Abbasi" Newsgroups: comp.lang.ada Subject: Re: getting same output as gfortran, long_float Date: Thu, 30 Apr 2015 17:32:32 -0500 Organization: Aioe.org NNTP Server Message-ID: References: Reply-To: nma@12000.org NNTP-Posting-Host: CV72NQ0GT7rQd8cP1ZYi/A.user.speranza.aioe.org Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit X-Complaints-To: abuse@aioe.org User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:31.0) Gecko/20100101 Thunderbird/31.6.0 X-Notice: Filtered by postfilter v. 0.8.2 Xref: news.eternal-september.org comp.lang.ada:25670 Date: 2015-04-30T17:32:32-05:00 List-Id: On 4/30/2015 5:12 PM, Jeffrey R. Carter wrote: > On 04/30/2015 02:17 PM, Nasser M. Abbasi wrote: >> >> with ada.text_io; use ada.text_io; >> procedure foo_2 is >> x : Long_Long_Float; >> begin >> x := 12.0 * 0.0001/(1.0 * (1.0 - 0.1)**4 ); >> put_line(Long_Long_Float'image(x)); >> end foo_2; > > What do you get with this: > > With Ada.Text_IO; > procedure Foo_However_Many is > X : constant := 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; > > ? You probably can't get any more significant digits from GNAT than this gives > you. You could also try a type defined as > > type Big is digits System.Max_Digits; > ---------------------------------- gnatmake foo_however_many.adb gcc-4.8 -c foo_however_many.adb gnatbind -x foo_however_many.ali gnatlink foo_however_many.ali >./foo_however_many 1.82898948331047096E-03 -------------------------------- And with type Big is digits System.Max_Digits; I get same ---------------------------------- 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 thanks, --Nasser