comp.lang.ada
 help / color / mirror / Atom feed
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



  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