comp.lang.ada
 help / color / mirror / Atom feed
From: Ada novice <shai.lesh@gmx.com>
Subject: Re: Numerical calculations: Why not use fixed point types for everything?
Date: Tue, 5 Feb 2013 23:11:43 -0800 (PST)
Date: 2013-02-05T23:11:43-08:00	[thread overview]
Message-ID: <4b654b06-f2d2-4ced-8508-c10e5c84e29d@googlegroups.com> (raw)
In-Reply-To: <kepqng$b08$1@munin.nbi.dk>

On Tuesday, February 5, 2013 3:27:58 AM UTC+1, Randy Brukardt wrote:
> 
> >with Ada.Text_IO;             use Ada.Text_IO;
> 
> >with Ada.Long_Float_Text_IO;  use Ada.Long_Float_Text_IO;
> 
> >
> 
> >procedure Step_Freq is
> 
> >   Count : Integer;
> 
> >   Frequency : Long_Float;
> 
> >   Frequency_Start : constant := -44.88;
> 
> >   Frequency_Step  : constant := (67.32 - Frequency_Start) / 299.0;
> 
> 
> 
> This 299 seems related to the one in the loop below. As such, I think it 
> 
> should have a named constant:
> 
>     Steps : constant := 300;
> 
>    Frequency_Step  : constant := (67.32 - Frequency_Start) / (Steps-1);
> 
> [Aside: This is legal even though the denominator is integer because of the 
> 
> extra operators defined in 4.5.5(17). And examples like this is why.]
> 
> 
> 
> >   Delta_Frequency : Long_Float;
> 
> >
> 
> > begin
> 
> >   Count := 0;
> 
> >   Frequency := Frequency_Start;
> 
> >   for I in 1..300 loop
> 
>      for I in 0 .. Step-1 loop
> 
>          -- This avoids the odd "-1" in the loop below. If you had directly 
> 
> used I somewhere
> 


Yes this is correct. Your code is a good alternative of mine.

> 
>       if I = 1 then
> 
> >          Delta_Frequency := abs(Frequency - Frequency_Start);
> 
> >          Put (Item => Delta_Frequency, Fore => 3, Aft => 5, Exp => 0); 
> 
> > Put("  ");
> 
> >          Put (Item => Frequency_Step, Fore => 3, Aft => 5, Exp => 0);
> 
> >          New_Line;
> 
> >       end if;
> 
> >       Count := Count + 1;
> 
>     --?? Besides the fact that this isn't even used in the loop, it has the 
> 
> same value as I
> 
>     -- (or I-1 in the original code). Why duplicate the value? 


Well I am just outputting the index counter I at the end which is 300. How do you get to output of the end value of the index counter otherwise?




> >    Put_Line ("Count after loop is" & Integer'Image (Count));
> 
>     -- Unless your program is *really* buggy, this is just the constant 


Yes I know. See my answer above.



> 
> Step.
> 
> >    New_Line;
> 
> >    Put (Item => Frequency, Fore => 3, Aft => 3, Exp => 0);
> 
> >end Step_Freq;
> 
> >
> 
> >Well, I am using a discrete loop counter. But is this the best way to go 
> 
> >about for such
> 
> >a simple example? What if I want the Frequency_Step to take a specific 
> 
> >value? Then
> 
> >I will have perhaps to play with the range and the amount of discrete 
> 
> >points I need in
> 
> >order to arrive at a desired Frequency_Step in the code.
> 
> 
> 
> Nah, all you need to do is make the Step value calculated from the 
> 
> Frequency_Step, rather than the reverse.
> 
> 
> 
> >So why not use fixed-point for the frequency as we know exactly what step 
> 
> >we want?
> 
> 
> 
> The main reason is that you almost always need to get your data from an 
> 
> array somewhere, and you use the for loop parameter ("I" in this case) to 
> 
> get the values from the array, and then use the float version of the step 
> 
> for the calculation. With the exception of benchmarks, I don't think I've 
> 
> ever written a loop that does exactly the same thing 300 times without 
> 
> changing the input data. (When such things appear to happen, usually you can 
> 
> refactor the expression to avoid the loop altogether, which is usually 300 
> 
> times faster.)
> 

In this example, Frequency is changing at every index in the loop. Its first value is -44.88 and its final value is 67.32. This Frequency can be used further in a calculation. 

If you would have read the code well, you would have seen that the loop is not doing 300 times exactly the same thing.

Thanks
YC




  reply	other threads:[~2013-02-06  7:11 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
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 [this message]
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