comp.lang.ada
 help / color / mirror / Atom feed
From: Niklas Holsti <niklas.holsti@tidorum.invalid>
Subject: Re: Numerical calculations: Why not use fixed point types for everything?
Date: Mon, 04 Feb 2013 08:43:14 +0200
Date: 2013-02-04T08:43:14+02:00	[thread overview]
Message-ID: <an93k2Fbg9jU1@mid.individual.net> (raw)
In-Reply-To: <8ee504a6-b371-42ef-a91e-bbb70e3b81d8@googlegroups.com>

On 13-02-04 08:23 , Ada novice wrote:
> On Sunday, February 3, 2013 5:05:22 AM UTC+1, Shark8 wrote:
>>
>>
>>     Type P is delta 0.1 digits 3 range 0.0..10.0;
>>
>>     
>>
>>     declare
>>
>> 	Index : P := P'First;
>>
>>     begin
>>
>> 	loop
>>
>> 	    Ada.Text_IO.Put_Line( Index'Img );
>>
>> 	    Exit when Index = P'Last;
>>
>> 	    Index:= P'Succ(Index);
>>
>> 	End loop;
>>
>>     end;
>>
> 
> I was working an example based on the working code you gave:
> 
> with Ada.Text_IO;
> with Ada.Long_Float_Text_IO;
> 
> procedure Test is
> 
> type P is delta 0.1 digits 3 range 0.0..10.0;
> 
>         Index: P := P'First;
>         Number   : Long_Float := 100.0;
> 
> 
>    begin
>       loop
>          Ada.Text_IO.Put(Index'Img);Ada.Text_IO.Put("  ");
> 
>          Ada.Long_Float_Text_IO.Put (Item => Long_Float(Index)*Number, Fore => 3, Aft  => 3, Exp  => 0);Ada.Text_IO.Put("  ");
> 
>          --Number := Long_Float(Index)*Number;
>          Ada.Long_Float_Text_IO.Put (Item => Number, Fore => 3, Aft  => 3, Exp  => 0);
> 
>          Ada.Text_IO.New_Line;
> 
>          exit when Index = P'Last;
> 
>          Index := P'Succ(Index);
> 
> 
>       end loop;
> 
> end Test;
> 
> 
> On running I get:
> 
>  0.0    0.000  100.000
>  0.1   10.000  100.000
>  0.2   20.000  100.000
>  0.3   30.000  100.000
>  0.4   40.000  100.000
>  0.5   50.000  100.000
> ... and so on
> 
> which is expected.
> 
> Now, when I un-comment the line 
> 
> --Number := Long_Float(Index)*Number;
> 
> and run the code again, I get:
> 
>  0.0    0.000    0.000
>  0.1    0.000    0.000
>  0.2    0.000    0.000
>  0.3    0.000    0.000
>  0.4    0.000    0.000
>  0.5    0.000    0.000
> 
> ... and so on.
> 
> This is a weird behaviour.

No, it is expected.

> Why are the second and third columns all zeros now?

On the first iteration of the loop, Index = 0.0. Therefore the
uncommented statemement assigns the value Long_Float (0.0) * Number,
which is zero, to Number. In the next iteration the same statement
assigns Long_Float (0.1) * Number, which is again zero, to Number. So
Number stays at zero throughout the loop.

Perhaps you intended to assign a different variable? As in

   Number2 := Long_Float (Index) * Number;


-- 
Niklas Holsti
Tidorum Ltd
niklas holsti tidorum fi
      .      @       .



  reply	other threads:[~2013-02-04  6:43 UTC|newest]

Thread overview: 47+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-01-17 10:33 Numerical calculations: Why not use fixed point types for everything? Ada novice
2013-01-17 14:40 ` Nasser M. Abbasi
2013-01-17 16:16   ` Adam Beneschan
2013-01-17 17:00     ` Georg Bauhaus
2013-01-17 16:25 ` Adam Beneschan
2013-01-18  9:17   ` Ada novice
2013-01-18 17:24     ` J-P. Rosen
2013-01-18 17:52       ` Jeffrey Carter
2013-01-18 18:15     ` Dennis Lee Bieber
2013-01-18 18:59       ` Adam Beneschan
2013-01-19  4:41         ` Dennis Lee Bieber
2013-01-19  6:26           ` Jeffrey Carter
2013-01-19 14:14             ` Robert A Duff
2013-01-25 12:16               ` Paul Colin Gloster
2013-01-24 10:55             ` Ada novice
2013-01-24 11:47               ` Simon Wright
2013-01-24 14:21                 ` Ada novice
2013-01-20  0:05           ` Robin Vowels
2013-01-18 23:06       ` Robin Vowels
2013-01-18 19:09     ` Adam Beneschan
2013-01-18 21:39       ` Randy Brukardt
2013-01-19  7:02         ` Ada novice
2013-01-25 12:09         ` Paul Colin Gloster
2013-01-25 12:23     ` Paul Colin Gloster
2013-01-28  9:09       ` Ada novice
2013-02-01 10:53         ` Ada novice
2013-02-01 15:01           ` Shark8
2013-02-02 18:55             ` Ada novice
2013-02-03  4:05               ` Shark8
2013-02-04  6:23                 ` Ada novice
2013-02-04  6:43                   ` Niklas Holsti [this message]
2013-02-04  7:27                     ` Ada novice
2013-02-04  9:37                       ` Niklas Holsti
2013-02-04 10:09                         ` Ada novice
2013-02-04 14:24                           ` Niklas Holsti
2013-02-04 16:44                             ` Jeffrey Carter
2013-02-04 21:12                               ` Niklas Holsti
2013-02-04 17:31                             ` Robert A Duff
2013-02-04 21:20                               ` Niklas Holsti
2013-02-02 21:08           ` Nasser M. Abbasi
2013-02-04  6:17             ` Ada novice
2013-02-05  2:27               ` Randy Brukardt
2013-02-06  7:11                 ` Ada novice
2013-02-07  6:03                   ` Randy Brukardt
2013-02-07  8:43                     ` Shark8
2013-02-08  3:17                       ` Randy Brukardt
2013-02-08  6:20                     ` Ada novice
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox