GeometricSeries.st
author Claus Gittinger <cg@exept.de>
Mon, 22 Jul 2019 14:50:52 +0200
changeset 5058 6f3b933cae66
parent 4453 e3e421183576
child 5079 aa82caad8dbc
permissions -rw-r--r--
#TUNING by cg class: GeometricSeries added: #at:
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
5058
6f3b933cae66 #TUNING by cg
Claus Gittinger <cg@exept.de>
parents: 4453
diff changeset
     1
"{ Encoding: utf8 }"
6f3b933cae66 #TUNING by cg
Claus Gittinger <cg@exept.de>
parents: 4453
diff changeset
     2
3737
0a9b58aeacf4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     3
"
0a9b58aeacf4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     4
 COPYRIGHT (c) 2000 by eXept Software AG
0a9b58aeacf4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     5
              All Rights Reserved
0a9b58aeacf4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     6
0a9b58aeacf4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     7
 This software is furnished under a license and may be used
0a9b58aeacf4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     8
 only in accordance with the terms of that license and with the
0a9b58aeacf4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     9
 inclusion of the above copyright notice.   This software may not
0a9b58aeacf4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    10
 be provided or otherwise made available to, or used by, any
0a9b58aeacf4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    11
 other person.  No title to or ownership of the software is
0a9b58aeacf4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    12
 hereby transferred.
0a9b58aeacf4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    13
"
0a9b58aeacf4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    14
"{ Package: 'stx:libbasic2' }"
0a9b58aeacf4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    15
0a9b58aeacf4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    16
"{ NameSpace: Smalltalk }"
0a9b58aeacf4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    17
0a9b58aeacf4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    18
ReadOnlySequenceableCollection subclass:#GeometricSeries
0a9b58aeacf4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    19
	instanceVariableNames:'start stop factor'
0a9b58aeacf4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    20
	classVariableNames:''
0a9b58aeacf4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    21
	poolDictionaries:''
0a9b58aeacf4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    22
	category:'Collections-Sequenceable'
0a9b58aeacf4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    23
!
0a9b58aeacf4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    24
0a9b58aeacf4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    25
!GeometricSeries class methodsFor:'documentation'!
0a9b58aeacf4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    26
0a9b58aeacf4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    27
copyright
0a9b58aeacf4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    28
"
0a9b58aeacf4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    29
 COPYRIGHT (c) 2000 by eXept Software AG
0a9b58aeacf4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    30
              All Rights Reserved
0a9b58aeacf4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    31
0a9b58aeacf4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    32
 This software is furnished under a license and may be used
0a9b58aeacf4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    33
 only in accordance with the terms of that license and with the
0a9b58aeacf4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    34
 inclusion of the above copyright notice.   This software may not
0a9b58aeacf4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    35
 be provided or otherwise made available to, or used by, any
0a9b58aeacf4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    36
 other person.  No title to or ownership of the software is
0a9b58aeacf4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    37
 hereby transferred.
0a9b58aeacf4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    38
"
0a9b58aeacf4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    39
!
0a9b58aeacf4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    40
0a9b58aeacf4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    41
documentation
0a9b58aeacf4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    42
"
0a9b58aeacf4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    43
    Much like intervals (which have a constant difference between elements), 
0a9b58aeacf4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    44
    these have a constant factor between them.
0a9b58aeacf4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    45
    GeometricSeries represent a collection (or range) of values specified by
0a9b58aeacf4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    46
    a startValue, an endValue and a *factor*. 
0a9b58aeacf4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    47
    Like with intervals, the elements are computed, not stored.
4453
e3e421183576 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 3739
diff changeset
    48
    For example, 
e3e421183576 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 3739
diff changeset
    49
        the GeometricSeries (1 to:100 byFactor:2) contains the elements (1 2 4 8 16 32 64).
e3e421183576 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 3739
diff changeset
    50
        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).
3737
0a9b58aeacf4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    51
0a9b58aeacf4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    52
    examples:
0a9b58aeacf4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    53
0a9b58aeacf4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    54
        (1 to:100 byFactor:2) do:[:i | Transcript showCR:i]
0a9b58aeacf4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    55
        (1 to:100 byFactor:1.1) do:[:i | Transcript showCR:i]
0a9b58aeacf4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    56
        (1 to:100 byFactor:2) asArray  
0a9b58aeacf4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    57
        (1 to:128 byFactor:2) asArray  
0a9b58aeacf4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    58
        (128 to:2 byFactor:(1/2)) asArray  
0a9b58aeacf4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    59
3739
89ee5376197c #REFACTORING
Claus Gittinger <cg@exept.de>
parents: 3737
diff changeset
    60
        (1 to:128 byFactor:2) sum
89ee5376197c #REFACTORING
Claus Gittinger <cg@exept.de>
parents: 3737
diff changeset
    61
        (1 to:128 byFactor:2) asArray sum    
89ee5376197c #REFACTORING
Claus Gittinger <cg@exept.de>
parents: 3737
diff changeset
    62
        
3737
0a9b58aeacf4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    63
    [author:]
0a9b58aeacf4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    64
        Claus Gittinger
0a9b58aeacf4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    65
"
0a9b58aeacf4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    66
! !
0a9b58aeacf4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    67
0a9b58aeacf4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    68
!GeometricSeries class methodsFor:'instance creation'!
0a9b58aeacf4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    69
0a9b58aeacf4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    70
from:start to:stop byFactor:factor
0a9b58aeacf4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    71
    "return a new geometric series with elements from start
0a9b58aeacf4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    72
     to stop by a factor"
0a9b58aeacf4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    73
0a9b58aeacf4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    74
    ^ self new setFrom:start to:stop byFactor:factor
0a9b58aeacf4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    75
0a9b58aeacf4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    76
0a9b58aeacf4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    77
! !
0a9b58aeacf4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    78
5058
6f3b933cae66 #TUNING by cg
Claus Gittinger <cg@exept.de>
parents: 4453
diff changeset
    79
!GeometricSeries methodsFor:'accessing'!
6f3b933cae66 #TUNING by cg
Claus Gittinger <cg@exept.de>
parents: 4453
diff changeset
    80
6f3b933cae66 #TUNING by cg
Claus Gittinger <cg@exept.de>
parents: 4453
diff changeset
    81
at:index
6f3b933cae66 #TUNING by cg
Claus Gittinger <cg@exept.de>
parents: 4453
diff changeset
    82
    "return (i.e. compute) the index'th element"
6f3b933cae66 #TUNING by cg
Claus Gittinger <cg@exept.de>
parents: 4453
diff changeset
    83
6f3b933cae66 #TUNING by cg
Claus Gittinger <cg@exept.de>
parents: 4453
diff changeset
    84
    (index between:1 and:self size) ifTrue:[
6f3b933cae66 #TUNING by cg
Claus Gittinger <cg@exept.de>
parents: 4453
diff changeset
    85
        ^ start * (factor raisedToInteger: (index - 1))
6f3b933cae66 #TUNING by cg
Claus Gittinger <cg@exept.de>
parents: 4453
diff changeset
    86
    ].
6f3b933cae66 #TUNING by cg
Claus Gittinger <cg@exept.de>
parents: 4453
diff changeset
    87
    ^ self subscriptBoundsError:index
6f3b933cae66 #TUNING by cg
Claus Gittinger <cg@exept.de>
parents: 4453
diff changeset
    88
6f3b933cae66 #TUNING by cg
Claus Gittinger <cg@exept.de>
parents: 4453
diff changeset
    89
    "
6f3b933cae66 #TUNING by cg
Claus Gittinger <cg@exept.de>
parents: 4453
diff changeset
    90
     (1 to:128 byFactor:2) do:[:v | Transcript showCR:v]
6f3b933cae66 #TUNING by cg
Claus Gittinger <cg@exept.de>
parents: 4453
diff changeset
    91
     (1 to:128 byFactor:2) at:1.
6f3b933cae66 #TUNING by cg
Claus Gittinger <cg@exept.de>
parents: 4453
diff changeset
    92
     (1 to:128 byFactor:2) at:2.
6f3b933cae66 #TUNING by cg
Claus Gittinger <cg@exept.de>
parents: 4453
diff changeset
    93
     (1 to:128 byFactor:2) at:3.
6f3b933cae66 #TUNING by cg
Claus Gittinger <cg@exept.de>
parents: 4453
diff changeset
    94
     (1 to:128 byFactor:2) last.
6f3b933cae66 #TUNING by cg
Claus Gittinger <cg@exept.de>
parents: 4453
diff changeset
    95
6f3b933cae66 #TUNING by cg
Claus Gittinger <cg@exept.de>
parents: 4453
diff changeset
    96
     (16 to:1 byFactor:(1/2)) do:[:v | Transcript showCR:v]
6f3b933cae66 #TUNING by cg
Claus Gittinger <cg@exept.de>
parents: 4453
diff changeset
    97
     (16 to:1 byFactor:(1/2)) at:1.
6f3b933cae66 #TUNING by cg
Claus Gittinger <cg@exept.de>
parents: 4453
diff changeset
    98
     (16 to:1 byFactor:(1/2)) at:2.
6f3b933cae66 #TUNING by cg
Claus Gittinger <cg@exept.de>
parents: 4453
diff changeset
    99
     (16 to:1 byFactor:(1/2)) at:3.
6f3b933cae66 #TUNING by cg
Claus Gittinger <cg@exept.de>
parents: 4453
diff changeset
   100
     (16 to:1 byFactor:(1/2)) last.
6f3b933cae66 #TUNING by cg
Claus Gittinger <cg@exept.de>
parents: 4453
diff changeset
   101
    "
6f3b933cae66 #TUNING by cg
Claus Gittinger <cg@exept.de>
parents: 4453
diff changeset
   102
6f3b933cae66 #TUNING by cg
Claus Gittinger <cg@exept.de>
parents: 4453
diff changeset
   103
    "Created: / 22-07-2019 / 14:49:12 / Claus Gittinger"
6f3b933cae66 #TUNING by cg
Claus Gittinger <cg@exept.de>
parents: 4453
diff changeset
   104
! !
6f3b933cae66 #TUNING by cg
Claus Gittinger <cg@exept.de>
parents: 4453
diff changeset
   105
3737
0a9b58aeacf4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   106
!GeometricSeries methodsFor:'enumerating'!
0a9b58aeacf4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   107
0a9b58aeacf4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   108
do:aBlock
3739
89ee5376197c #REFACTORING
Claus Gittinger <cg@exept.de>
parents: 3737
diff changeset
   109
    "evaluate the argument, aBlock for every element in the receiver. 
89ee5376197c #REFACTORING
Claus Gittinger <cg@exept.de>
parents: 3737
diff changeset
   110
     Redefined since SeqColl accesses the receiver with at:, 
89ee5376197c #REFACTORING
Claus Gittinger <cg@exept.de>
parents: 3737
diff changeset
   111
     which is slow for intervals."
3737
0a9b58aeacf4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   112
0a9b58aeacf4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   113
    |aValue iter|
0a9b58aeacf4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   114
0a9b58aeacf4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   115
    aValue := start.
3739
89ee5376197c #REFACTORING
Claus Gittinger <cg@exept.de>
parents: 3737
diff changeset
   116
    (aValue isLimitedPrecisionReal or:[factor isLimitedPrecisionReal]) ifFalse:[
89ee5376197c #REFACTORING
Claus Gittinger <cg@exept.de>
parents: 3737
diff changeset
   117
        factor < 1 ifTrue:[
89ee5376197c #REFACTORING
Claus Gittinger <cg@exept.de>
parents: 3737
diff changeset
   118
            [stop <= aValue] whileTrue:[
89ee5376197c #REFACTORING
Claus Gittinger <cg@exept.de>
parents: 3737
diff changeset
   119
                aBlock value:aValue.
89ee5376197c #REFACTORING
Claus Gittinger <cg@exept.de>
parents: 3737
diff changeset
   120
                aValue := aValue * factor
89ee5376197c #REFACTORING
Claus Gittinger <cg@exept.de>
parents: 3737
diff changeset
   121
            ]
89ee5376197c #REFACTORING
Claus Gittinger <cg@exept.de>
parents: 3737
diff changeset
   122
        ] ifFalse:[
89ee5376197c #REFACTORING
Claus Gittinger <cg@exept.de>
parents: 3737
diff changeset
   123
            [stop >= aValue] whileTrue:[
89ee5376197c #REFACTORING
Claus Gittinger <cg@exept.de>
parents: 3737
diff changeset
   124
                aBlock value:aValue.
89ee5376197c #REFACTORING
Claus Gittinger <cg@exept.de>
parents: 3737
diff changeset
   125
                aValue := aValue * factor
89ee5376197c #REFACTORING
Claus Gittinger <cg@exept.de>
parents: 3737
diff changeset
   126
            ]
89ee5376197c #REFACTORING
Claus Gittinger <cg@exept.de>
parents: 3737
diff changeset
   127
        ]
89ee5376197c #REFACTORING
Claus Gittinger <cg@exept.de>
parents: 3737
diff changeset
   128
    ] ifTrue:[
89ee5376197c #REFACTORING
Claus Gittinger <cg@exept.de>
parents: 3737
diff changeset
   129
        "/ the code below avoids rounding errors
89ee5376197c #REFACTORING
Claus Gittinger <cg@exept.de>
parents: 3737
diff changeset
   130
        "/ to accumulate if floats are enumerated.
89ee5376197c #REFACTORING
Claus Gittinger <cg@exept.de>
parents: 3737
diff changeset
   131
        iter := 1.
89ee5376197c #REFACTORING
Claus Gittinger <cg@exept.de>
parents: 3737
diff changeset
   132
        factor < 1 ifTrue:[
89ee5376197c #REFACTORING
Claus Gittinger <cg@exept.de>
parents: 3737
diff changeset
   133
            [stop <= aValue] whileTrue:[
89ee5376197c #REFACTORING
Claus Gittinger <cg@exept.de>
parents: 3737
diff changeset
   134
                aBlock value:aValue.
89ee5376197c #REFACTORING
Claus Gittinger <cg@exept.de>
parents: 3737
diff changeset
   135
                aValue := start + (factor raisedTo:iter).
89ee5376197c #REFACTORING
Claus Gittinger <cg@exept.de>
parents: 3737
diff changeset
   136
                iter := iter + 1.
89ee5376197c #REFACTORING
Claus Gittinger <cg@exept.de>
parents: 3737
diff changeset
   137
            ]
89ee5376197c #REFACTORING
Claus Gittinger <cg@exept.de>
parents: 3737
diff changeset
   138
        ] ifFalse:[
89ee5376197c #REFACTORING
Claus Gittinger <cg@exept.de>
parents: 3737
diff changeset
   139
            [stop >= aValue] whileTrue:[
89ee5376197c #REFACTORING
Claus Gittinger <cg@exept.de>
parents: 3737
diff changeset
   140
                aBlock value:aValue.
89ee5376197c #REFACTORING
Claus Gittinger <cg@exept.de>
parents: 3737
diff changeset
   141
                aValue := start + (factor raisedTo:iter).
89ee5376197c #REFACTORING
Claus Gittinger <cg@exept.de>
parents: 3737
diff changeset
   142
                iter := iter + 1.
89ee5376197c #REFACTORING
Claus Gittinger <cg@exept.de>
parents: 3737
diff changeset
   143
            ]
89ee5376197c #REFACTORING
Claus Gittinger <cg@exept.de>
parents: 3737
diff changeset
   144
        ]
3737
0a9b58aeacf4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   145
    ]
0a9b58aeacf4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   146
0a9b58aeacf4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   147
    "
0a9b58aeacf4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   148
     (1 to:128 byFactor:2) do:[:v | Transcript showCR:v]
0a9b58aeacf4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   149
     (16 to:1 byFactor:(1/2)) do:[:v | Transcript showCR:v]
0a9b58aeacf4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   150
     (1.0 to:128.0 byFactor:2) do:[:v | Transcript showCR:v]
0a9b58aeacf4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   151
0a9b58aeacf4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   152
     (GeometricSeries from:1 to:128 byFactor:2) do:[:v | Transcript showCR:v]
0a9b58aeacf4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   153
    "
0a9b58aeacf4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   154
!
0a9b58aeacf4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   155
0a9b58aeacf4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   156
size
0a9b58aeacf4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   157
    |cnt|
0a9b58aeacf4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   158
0a9b58aeacf4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   159
    cnt := 0.
0a9b58aeacf4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   160
    self do:[:each | cnt := cnt + 1].
0a9b58aeacf4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   161
    ^ cnt
0a9b58aeacf4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   162
0a9b58aeacf4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   163
    "Created: / 31.10.2001 / 15:06:31 / cg"
0a9b58aeacf4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   164
! !
0a9b58aeacf4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   165
0a9b58aeacf4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   166
!GeometricSeries methodsFor:'printing & storing'!
0a9b58aeacf4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   167
0a9b58aeacf4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   168
printOn:aStream
0a9b58aeacf4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   169
    "append a printed representation to aStream"
0a9b58aeacf4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   170
0a9b58aeacf4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   171
    start printOn:aStream.
0a9b58aeacf4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   172
    aStream nextPutAll:' to:'.
0a9b58aeacf4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   173
    stop printOn:aStream.
0a9b58aeacf4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   174
    aStream nextPutAll:' byFactor:'.
0a9b58aeacf4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   175
    factor printOn:aStream.
0a9b58aeacf4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   176
0a9b58aeacf4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   177
!
0a9b58aeacf4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   178
0a9b58aeacf4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   179
storeOn:aStream
0a9b58aeacf4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   180
    "store a representation which can reconstruct the receiver to aStream"
0a9b58aeacf4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   181
0a9b58aeacf4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   182
    aStream nextPut:$(.
0a9b58aeacf4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   183
    self printOn:aStream.
0a9b58aeacf4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   184
    aStream nextPut:$).
0a9b58aeacf4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   185
0a9b58aeacf4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   186
0a9b58aeacf4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   187
! !
0a9b58aeacf4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   188
0a9b58aeacf4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   189
!GeometricSeries methodsFor:'private'!
0a9b58aeacf4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   190
0a9b58aeacf4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   191
setFrom:startVal to:stopVal byFactor:factorVal
0a9b58aeacf4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   192
    "set start, stop and factor components"
0a9b58aeacf4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   193
0a9b58aeacf4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   194
    start := startVal.
0a9b58aeacf4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   195
    stop := stopVal.
0a9b58aeacf4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   196
    factor := factorVal
0a9b58aeacf4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   197
0a9b58aeacf4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   198
0a9b58aeacf4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   199
!
0a9b58aeacf4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   200
0a9b58aeacf4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   201
species
0a9b58aeacf4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   202
    "return the type of collection to be returned by collect, select etc."
0a9b58aeacf4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   203
0a9b58aeacf4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   204
    ^ OrderedCollection
0a9b58aeacf4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   205
0a9b58aeacf4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   206
! !
0a9b58aeacf4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   207
0a9b58aeacf4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   208
!GeometricSeries class methodsFor:'documentation'!
0a9b58aeacf4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   209
0a9b58aeacf4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   210
version
0a9b58aeacf4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   211
    ^ '$Header$'
0a9b58aeacf4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   212
!
0a9b58aeacf4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   213
0a9b58aeacf4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   214
version_CVS
0a9b58aeacf4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   215
    ^ '$Header$'
0a9b58aeacf4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   216
! !
0a9b58aeacf4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   217