From: Niklas Holsti <niklas.holsti@tidorum.invalid>
Subject: Re: Why this error, value not in range of subtype of "Standard.Integer"?
Date: Tue, 26 Jun 2012 21:00:15 +0300
Date: 2012-06-26T21:00:15+03:00 [thread overview]
Message-ID: <a4ublfFfesU1@mid.individual.net> (raw)
In-Reply-To: <jsclls$3bv$1@speranza.aioe.org>
On 12-06-26 18:49 , Nasser M. Abbasi wrote:
> experts;
>
> If I write this, I get an error as show: (notice the B
> matrix declaration, that is where the problem is)
No, the problem is in the declaration of the A matrix. Or really in the
difference in their declarations.
> -------------- this does not work ------
> with Ada.Numerics.Real_Arrays; use Ada.Numerics.Real_Arrays;
>
> procedure foo2 is
> A : constant Real_Matrix :=
> (( 1.0, 2.0, 3.0),
> ( 4.0, 5.0, 6.0),
> ( 7.0, 8.0, 9.0));
The Real_Matrix type is defined in Ada.Numerics.Real_Arrays with Integer
as the index type:
type Real_Matrix is array (Integer range <>, Integer range <>)
of Real'Base;
This means that the matrix A, which is constrained by its initial value,
has the lower index bounds Integer'First, which in the case of 32-bit
integers is -2147483648, and the upper index bound is Integer'First + 2,
which is -2147483646. Far out of the range of the indices of B, 1..3.
Change the declaration of A to specify the index ranges:
A : constant Real_Matrix (1 .. 3, 1 .. 3) :=
> But if I change the declaration of B from
> B : Real_Matrix(1 .. 3,1 .. 3);
> to
> B : Real_Matrix(A'RANGE(1), A'RANGE(2));
>
> then Ada is happy now.
Yep. Now B also has the index range Integer'First .. Integer'First + 2.
> Isn't A'RANGE(1) the same as 1 .. 3 and A'RANGE(2) the same as 1 .. 3?
That would be the case, if Real_Matrix were defined with Positive as the
index range. But not with Integer.
--
Niklas Holsti
Tidorum Ltd
niklas holsti tidorum fi
. @ .
next prev parent reply other threads:[~2012-06-26 18:00 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-06-26 15:49 Why this error, value not in range of subtype of "Standard.Integer"? Nasser M. Abbasi
2012-06-26 17:20 ` Adam Beneschan
2012-06-26 18:00 ` Niklas Holsti [this message]
2012-06-26 21:39 ` Robert A Duff
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox