From: Robert A Duff <bobduff@shell01.TheWorld.com>
Subject: Re: What about big integers in Ada 2005?
Date: 30 Sep 2005 13:41:52 -0400
Date: 2005-09-30T13:41:52-04:00 [thread overview]
Message-ID: <wccmzlu3127.fsf@shell01.TheWorld.com> (raw)
In-Reply-To: mN2Xe.1823$2J3.1559@newssvr21.news.prodigy.com
<adaworks@sbcglobal.net> writes:
> "Martin Krischik" <krischik@users.sourceforge.net> wrote in message
> news:1581461.uQ1jN63t33@linux1.krischik.com...
> > jtg wrote:
> >
> > > When I started to learn Ada, one of the most interesting features for me
> > > was the possibility to declare integer type of the specified range.
> > > I imagined that the integer type may be of any size.
> > > However, several years later I needed big integers and I was
> > > disappointed - Ada95 does not support integers of ANY size,
> > > it can support only those integers that are supported
> > > by the processor, or smaller.
> >
> > You are mistaken here. i.E GNAT supports 64 integers for 32 bit CPUs. It's
> > all up to the particular compiler. In theory you could create an Ada
> > compiler which supports intergers up to the memory limit - it would still
> > conform to the standart.
I'm not sure that would work very well. Programmers today often write
things like "range 0..System.Max_Int", which wouldn't work well if
Max_Int requires something like 2**36 bits to store. That is,
programmers sometimes _rely_ on the fact that Ada compilers limit
integers to a small number of machine words (like one or two).
Anyway, it's not very interesting when compilers are _allowed_ to
provide some capability. The interesting features (to me) are the ones
that I can count on existing in _every_ compiler -- because I usually
want to write portable code.
> I interepreted this question to refer to integers of arbitrary size such as
> those in Smalltalk. In Ada compilers, as with other language with
> implementations tied to the underlying platrform, numbers are related
> to the word size of the targeted machine. For example, I cannot define,
> on any Ada compiler that I know of, an Integer such as,
>
> type Number is range 0..2**78;
>
> since this would overflow contemporary (not future) architectures. In
> Smalltalk,
> and many other languages, we can do arithmetic on numbers such as,
>
> 34567345754784567745464478456345356675
> and
> 99874257918340987932560129346591237523
>
> Of course, this is not an inherent limitation of Ada. One can create a package
> to do this kind of arithmetic, but it is not all that easy to do so.
One annoying thing is that every Ada compiler must implement such a
package, yet this package is not (portably) available to Ada
programmers. Some such package has to exist in every implementation,
because static expressions are evaluated with arbitrarily-large range at
compile time. But that functionality is not (standardly) available at
run time. Sigh.
The other annoying thing is that even if you have such a package, you
have to use different (uglier) notations for various things (literals,
case statements, range constraints, etc). So if I want an integer range
1..2**40, say, should I use an arbitrary-range arithmetic package and
write ugly-but-portable code? Or should I take advantage of a
particular Ada compiler that supports it? Neither choice is good.
I happen to think "range 0..2**78" should be required of all Ada
implementations. Or even "0..2**(2**12)".
> Richard Riehle
- Bob
next prev parent reply other threads:[~2005-09-30 17:41 UTC|newest]
Thread overview: 40+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-09-15 17:06 What about big integers in Ada 2005? jtg
2005-09-15 17:26 ` Pascal Obry
2005-09-15 17:30 ` Martin Dowie
2005-09-15 17:26 ` Martin Krischik
2005-09-15 19:37 ` Martin Dowie
2005-09-15 21:08 ` Larry Kilgallen
2005-09-15 20:33 ` jtg
2005-09-15 21:10 ` Larry Kilgallen
2005-09-18 0:46 ` adaworks
2005-09-30 17:41 ` Robert A Duff [this message]
2005-09-30 20:18 ` Jeffrey R. Carter
2005-10-02 0:27 ` adaworks
[not found] ` <imsuj1h8vevg4un71rmh0nc41pnee5ihjl@4ax.com>
2005-10-02 10:33 ` Martin Krischik
2005-10-02 16:20 ` adaworks
2005-10-04 5:24 ` adaworks
2005-10-04 7:22 ` tmoran
2005-10-04 8:25 ` Dmitry A. Kazakov
2005-10-04 11:57 ` Simon Clubley
2005-10-04 16:10 ` Robert A Duff
2005-10-04 17:24 ` Simon Clubley
2005-10-04 19:44 ` Robert A Duff
2005-10-04 13:46 ` adaworks
2005-10-04 16:38 ` Robert A Duff
2005-10-04 16:52 ` Martin Dowie
2005-10-04 17:16 ` Robert A Duff
2005-10-04 13:50 ` adaworks
2005-10-04 14:59 ` Larry Kilgallen
2005-10-04 16:03 ` Robert A Duff
2005-10-04 18:56 ` adaworks
2005-10-10 5:36 ` Dave Thompson
2005-10-14 0:31 ` adaworks
2005-10-06 14:21 ` Adrian Hoe
2005-10-07 6:48 ` Martin Krischik
2005-10-02 0:48 ` Brian May
2005-10-02 10:28 ` Martin Krischik
2005-10-02 10:52 ` Brian May
2005-10-02 15:12 ` Simon Wright
2005-10-02 17:11 ` Martin Dowie
2005-09-16 14:33 ` gautier_niouzes
2005-09-17 3:43 ` Craig Carey <research@ijs.co.nz>
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox