eXept Software AG Logo

Smalltalk/X Webserver

Documentation of class 'GeometricSeries':



Class: GeometricSeries



rev: 1.5 date: 2019/08/12 09:30:00
user: cg
file: GeometricSeries.st directory: libbasic2
module: stx stc-classLibrary: libbasic2
Claus Gittinger


Much like intervals (which have a constant difference between elements), 
these have a constant factor between them.
GeometricSeries represent a collection (or range) of values specified by
a startValue, an endValue and a *factor*. 
Like with intervals, the elements are computed, not stored.
For example, 
    the GeometricSeries (1 to:100 byFactor:2) contains the elements (1 2 4 8 16 32 64).
    and GeometricSeries (1 to:(1/100) byFactor:(1/2)) contains the elements (1 1/2 1/4 1/8 1/16 1/32 1/64).


    (1 to:100 byFactor:2) do:[:i | Transcript showCR:i]
    (1 to:100 byFactor:1.1) do:[:i | Transcript showCR:i]
    (1 to:100 byFactor:2) asArray  
    (1 to:128 byFactor:2) asArray  
    (128 to:2 byFactor:(1/2)) asArray  

    (1 to:128 byFactor:2) sum
    (1 to:128 byFactor:2) asArray sum    

Class protocol:

instance creation
o  from: start to: stop byFactor: factor
return a new geometric series with elements from start
to stop by a factor

Instance protocol:

o  at: index
return (i.e. compute) the index'th element

usage example(s):

     (1 to:128 byFactor:2) do:[:v | Transcript showCR:v]
     (1 to:128 byFactor:2) at:1.
     (1 to:128 byFactor:2) at:2.
     (1 to:128 byFactor:2) at:3.
     (1 to:128 byFactor:2) last.  
     (1 to:100 byFactor:2) last.  

     (16 to:1 byFactor:(1/2)) do:[:v | Transcript showCR:v]
     (16 to:1 byFactor:(1/2)) at:1.
     (16 to:1 byFactor:(1/2)) at:2.
     (16 to:1 byFactor:(1/2)) at:3.
     (16 to:1 byFactor:(1/2)) last.
     (16 to:3 byFactor:(1/2)) last.    

o  first
(1 to:100 byFactor:2) first
(10 to:100 byFactor:3) first
(100 to:10 byFactor:1/3) first

o  last
(1 to:100 byFactor:2) last
(1 to:100 byFactor:3) last
(10 to:100 byFactor:3) last
(100 to:10 byFactor:1/3) last
(100 to:1 byFactor:1/2) last

(1 to:100 byFactor:2.0) last
(1 to:64.0 byFactor:2.0) last
(1 to:100 byFactor:3.0) last
(10 to:100.0 byFactor:3) last
(100 to:10.0 byFactor:0.3) last
(100 to:3 byFactor:1/2) last
(100 to:3 byFactor:0.5) last

o  do: aBlock
evaluate the argument, aBlock for every element in the receiver.
Redefined since SeqColl accesses the receiver with at:,
which is slow for intervals.

usage example(s):

     (1 to:128 byFactor:2) do:[:v | Transcript showCR:v]
     (16 to:1 byFactor:(1/2)) do:[:v | Transcript showCR:v]
     (1.0 to:128.0 byFactor:2) do:[:v | Transcript showCR:v]

     (GeometricSeries from:1 to:128 byFactor:2) do:[:v | Transcript showCR:v]

printing & storing
o  printOn: aStream
append a printed representation to aStream

o  storeOn: aStream
store a representation which can reconstruct the receiver to aStream

o  setFrom: startVal to: stopVal byFactor: factorVal
set start, stop and factor components

o  species
return the type of collection to be returned by collect, select etc.

o  size
cnt := 0.

usage example(s):

     (1 to:100 byFactor:2) size    
     (1 to:100 byFactor:3) size     
     (10 to:100 byFactor:3) size    
     (100 to:10 byFactor:1/3) size    
     (100 to:1 byFactor:1/2) size    

     (1 to:100 byFactor:2.0) size    
     (1 to:64.0 byFactor:2.0) size    
     (1 to:100 byFactor:3.0) size     
     (10 to:100.0 byFactor:3) size    
     (100 to:10.0 byFactor:0.3) size    
     (100 to:3 byFactor:1/2) size    
     (100 to:3 byFactor:0.5) size    

ST/X; WebServer 1.670 at bd0aa1f87cdd.unknown:8081; Mon, 29 May 2023 13:01:00 GMT