Re: Average of a [stack]

Liste des GroupesRevenir à cl forth 
Sujet : Re: Average of a [stack]
De : dxforth (at) *nospam* gmail.com (dxf)
Groupes : comp.lang.forth
Date : 11. Jul 2024, 04:31:17
Autres entêtes
Organisation : Ausics - https://newsgroups.ausics.net
Message-ID : <668f5204$1@news.ausics.net>
References : 1 2 3
User-Agent : Mozilla Thunderbird
On 11/07/2024 8:08 am, Buzz McCool wrote:
On 6/7/2024 1:32 PM, LIT wrote:
: AVG  DEPTH 0 SWAP DUP >R 0 DO SWAP + LOOP R> / . ;
 
I coincidentally was doing averaging for the floating point stack when I ran across this posting. Other than adding stack comments, how can I improve this word?
 
$ gforth
( Average all values on the floating point stack )
: FloatStackAvg
fdepth   \ Place the number of floating point values on to the stack
r       \ Move the number of floating point values to the return stack
1        \ Initialize loop counter to 1
begin dup r@ <  \ Duplicate counter, see if < fetched number of floats
while    \ while true
f+       \ Add two values on the floating point stack
1 +      \ Increment counter
repeat   \ Repeat test at begin word
r>       \ Move the number of floating point values to the stack
s>f      \ Convert the number of floating point values to a float
f/       \ Divide sum by number of floating point values to get average
drop ;   \ Remove the leftover loop counter value from the stack
 
\ Place values on floating point stack
0.120000e 0.118025e 0.118925e 0.120050e 0.119000e 0.122000e 0.120175e
0.120150e 0.118925e 0.121775e  ok f:10
 
FloatStackAvg  ok f:1
fe. 119.902500000000E-3  ok
 

Simpler to count down.  I find it easier writing for a common-stack model.

: FloatStackAvg ( rn ... r -- avg )
  fdepth dup >r ( count)
  begin  1- dup while ( not done)
    >r  f+ ( add two floats)  r>
  repeat  drop
  r> s>f f/ ( sum/count)
;


Date Sujet#  Auteur
10 Jul 24 * Re: Average of a [stack]28Buzz McCool
11 Jul 24 +* Re: Average of a [stack]10dxf
11 Jul 24 i`* Re: Average of a [stack]9Buzz McCool
12 Jul 24 i `* Re: Average of a [stack]8dxf
12 Jul 24 i  `* Re: Average of a [stack]7Buzz McCool
15 Jul 24 i   `* Re: Average of a [stack]6Buzz McCool
18 Jul 24 i    `* Re: Average of a [stack]5minforth
18 Jul 24 i     `* Re: Average of a [stack]4Buzz McCool
18 Jul 24 i      +- Re: Average of a [stack]1minforth
19 Jul 24 i      `* Re: Average of a [stack]2dxf
19 Jul 24 i       `- Re: Average of a [stack]1Buzz McCool
11 Jul 24 +* Re: Average of a [stack]16dxf
11 Jul 24 i`* Re: Average of a [stack]15ahmed
11 Jul 24 i `* Re: Average of a [stack]14ahmed
11 Jul 24 i  `* Re: Average of a [stack]13minforth
11 Jul 24 i   `* Re: Average of a [stack]12ahmed
11 Jul 24 i    +- Re: Average of a [stack]1ahmed
11 Jul 24 i    `* Re: Average of a [stack]10minforth
11 Jul 24 i     `* Re: Average of a [stack]9ahmed
11 Jul 24 i      +- Re: Average of a [stack]1minforth
14 May 25 i      `* Re: Average of a [stack]7anthk
14 May 25 i       `* Re: Average of a [stack]6ahmed
14 May 25 i        +- Re: Average of a [stack]1ahmed
15 May 25 i        `* Re: Average of a [stack]4dxf
15 May 25 i         +* Re: Average of a [stack]2Hans Bezemer
15 May 25 i         i`- Re: Average of a [stack]1dxf
15 May 25 i         `- Re: Average of a [stack]1Hans Bezemer
12 Jul 24 `- Re: Average of a [stack]1Anton Ertl

Haut de la page

Les messages affichés proviennent d'usenet.

NewsPortal