Infinity.st
author Jan Vrany <jan.vrany@fit.cvut.cz>
Tue, 22 Sep 2015 16:28:42 +0100
branchjv
changeset 18759 c1217211909c
parent 18120 e3a375d5f6a8
child 18858 2968df243134
permissions -rw-r--r--
Changed identification strings to contain jv-branch ...to make explicit that this distribution is not the official one used by eXept and therefore that eXept is not to be blamed in case of any problem.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
7443
3407302dc4d9 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 6501
diff changeset
     1
"
3407302dc4d9 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 6501
diff changeset
     2
 This is a Manchester Goodie.  It is distributed freely on condition
3407302dc4d9 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 6501
diff changeset
     3
 that you observe these conditions in respect of the whole Goodie, and on
3407302dc4d9 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 6501
diff changeset
     4
 any significant part of it which is separately transmitted or stored:
3407302dc4d9 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 6501
diff changeset
     5
	* You must ensure that every copy includes this notice, and that
3407302dc4d9 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 6501
diff changeset
     6
	  source and author(s) of the material are acknowledged.
3407302dc4d9 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 6501
diff changeset
     7
	* These conditions must be imposed on anyone who receives a copy.
3407302dc4d9 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 6501
diff changeset
     8
	* The material shall not be used for commercial gain without the prior
3407302dc4d9 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 6501
diff changeset
     9
	  written consent of the author(s).
3407302dc4d9 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 6501
diff changeset
    10
3407302dc4d9 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 6501
diff changeset
    11
 For more information about the Manchester Goodies Library (from which 
3407302dc4d9 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 6501
diff changeset
    12
 this file was distributed) send e-mail:
3407302dc4d9 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 6501
diff changeset
    13
	To: goodies-lib@cs.man.ac.uk
3407302dc4d9 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 6501
diff changeset
    14
	Subject: help 
3407302dc4d9 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 6501
diff changeset
    15
3407302dc4d9 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 6501
diff changeset
    16
 This is an additional goody-class, which is NOT covered by the
3407302dc4d9 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 6501
diff changeset
    17
 ST/X license. It has been packaged with the ST/X distribution to
3407302dc4d9 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 6501
diff changeset
    18
 make your live easier instead. NO WARRANTY.
3407302dc4d9 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 6501
diff changeset
    19
"
7452
224a1764084a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7443
diff changeset
    20
"{ Package: 'stx:libbasic' }"
1894
b22296ae189f Fixed is now in libbasic
Claus Gittinger <cg@exept.de>
parents: 303
diff changeset
    21
7443
3407302dc4d9 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 6501
diff changeset
    22
MetaNumber subclass:#Infinity
7548
Claus Gittinger <cg@exept.de>
parents: 7471
diff changeset
    23
	instanceVariableNames:''
7469
86006c0e12d1 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 7452
diff changeset
    24
	classVariableNames:'InfNeg InfPos'
7443
3407302dc4d9 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 6501
diff changeset
    25
	poolDictionaries:''
3407302dc4d9 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 6501
diff changeset
    26
	category:'Magnitude-Numbers'
3407302dc4d9 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 6501
diff changeset
    27
!
265
f014922e3b71 Initial revision
claus
parents:
diff changeset
    28
7469
86006c0e12d1 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 7452
diff changeset
    29
Infinity subclass:#NegativeInfinity
86006c0e12d1 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 7452
diff changeset
    30
	instanceVariableNames:''
86006c0e12d1 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 7452
diff changeset
    31
	classVariableNames:''
86006c0e12d1 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 7452
diff changeset
    32
	poolDictionaries:''
86006c0e12d1 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 7452
diff changeset
    33
	privateIn:Infinity
86006c0e12d1 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 7452
diff changeset
    34
!
86006c0e12d1 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 7452
diff changeset
    35
86006c0e12d1 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 7452
diff changeset
    36
Infinity subclass:#PositiveInfinity
86006c0e12d1 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 7452
diff changeset
    37
	instanceVariableNames:''
86006c0e12d1 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 7452
diff changeset
    38
	classVariableNames:''
86006c0e12d1 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 7452
diff changeset
    39
	poolDictionaries:''
86006c0e12d1 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 7452
diff changeset
    40
	privateIn:Infinity
86006c0e12d1 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 7452
diff changeset
    41
!
86006c0e12d1 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 7452
diff changeset
    42
7443
3407302dc4d9 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 6501
diff changeset
    43
Infinity comment:'I have two instances representing positive and negative infinity.
265
f014922e3b71 Initial revision
claus
parents:
diff changeset
    44
f014922e3b71 Initial revision
claus
parents:
diff changeset
    45
Instance Variables :-
303
3b550c73b036 *** empty log message ***
claus
parents: 265
diff changeset
    46
	positive <Boolean>      :       if true the instance represents positive
3b550c73b036 *** empty log message ***
claus
parents: 265
diff changeset
    47
					infinity. if false, negative infinity'
265
f014922e3b71 Initial revision
claus
parents:
diff changeset
    48
!
f014922e3b71 Initial revision
claus
parents:
diff changeset
    49
7443
3407302dc4d9 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 6501
diff changeset
    50
!Infinity class methodsFor:'documentation'!
6501
51344e42c38c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 5287
diff changeset
    51
51344e42c38c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 5287
diff changeset
    52
copyright
51344e42c38c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 5287
diff changeset
    53
"
51344e42c38c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 5287
diff changeset
    54
 This is a Manchester Goodie.  It is distributed freely on condition
51344e42c38c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 5287
diff changeset
    55
 that you observe these conditions in respect of the whole Goodie, and on
51344e42c38c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 5287
diff changeset
    56
 any significant part of it which is separately transmitted or stored:
51344e42c38c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 5287
diff changeset
    57
	* You must ensure that every copy includes this notice, and that
51344e42c38c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 5287
diff changeset
    58
	  source and author(s) of the material are acknowledged.
51344e42c38c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 5287
diff changeset
    59
	* These conditions must be imposed on anyone who receives a copy.
51344e42c38c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 5287
diff changeset
    60
	* The material shall not be used for commercial gain without the prior
51344e42c38c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 5287
diff changeset
    61
	  written consent of the author(s).
51344e42c38c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 5287
diff changeset
    62
51344e42c38c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 5287
diff changeset
    63
 For more information about the Manchester Goodies Library (from which 
51344e42c38c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 5287
diff changeset
    64
 this file was distributed) send e-mail:
51344e42c38c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 5287
diff changeset
    65
	To: goodies-lib@cs.man.ac.uk
51344e42c38c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 5287
diff changeset
    66
	Subject: help 
51344e42c38c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 5287
diff changeset
    67
51344e42c38c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 5287
diff changeset
    68
 This is an additional goody-class, which is NOT covered by the
51344e42c38c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 5287
diff changeset
    69
 ST/X license. It has been packaged with the ST/X distribution to
51344e42c38c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 5287
diff changeset
    70
 make your live easier instead. NO WARRANTY.
51344e42c38c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 5287
diff changeset
    71
"
51344e42c38c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 5287
diff changeset
    72
!
51344e42c38c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 5287
diff changeset
    73
51344e42c38c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 5287
diff changeset
    74
documentation
51344e42c38c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 5287
diff changeset
    75
"
7469
86006c0e12d1 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 7452
diff changeset
    76
    I have two instances representing positive and negative infinity.
6501
51344e42c38c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 5287
diff changeset
    77
51344e42c38c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 5287
diff changeset
    78
    Claus: fixed some minor bugs (args to errorUndefinedResult:) and some wrong comments.
7469
86006c0e12d1 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 7452
diff changeset
    79
           Changed retry:coercing: to match ST/X's way of doing this
6501
51344e42c38c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 5287
diff changeset
    80
51344e42c38c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 5287
diff changeset
    81
    Instance Variables :-
7469
86006c0e12d1 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 7452
diff changeset
    82
        positive <Boolean>      :       if true the instance represents positive
86006c0e12d1 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 7452
diff changeset
    83
                                        infinity. if false, negative infinity
6501
51344e42c38c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 5287
diff changeset
    84
"
51344e42c38c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 5287
diff changeset
    85
!
51344e42c38c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 5287
diff changeset
    86
51344e42c38c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 5287
diff changeset
    87
examples
51344e42c38c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 5287
diff changeset
    88
"
7548
Claus Gittinger <cg@exept.de>
parents: 7471
diff changeset
    89
    1 + Infinity positive   
6501
51344e42c38c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 5287
diff changeset
    90
    Infinity positive + 1     
51344e42c38c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 5287
diff changeset
    91
    Infinity positive + Infinity positive     
51344e42c38c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 5287
diff changeset
    92
7443
3407302dc4d9 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 6501
diff changeset
    93
    Infinity negative - 1                   
3407302dc4d9 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 6501
diff changeset
    94
    Infinity negative + Infinity negative   
3407302dc4d9 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 6501
diff changeset
    95
    Infinity negative + Infinity negative   
6501
51344e42c38c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 5287
diff changeset
    96
7548
Claus Gittinger <cg@exept.de>
parents: 7471
diff changeset
    97
    Infinity negative negated              
Claus Gittinger <cg@exept.de>
parents: 7471
diff changeset
    98
    Infinity positive negated              
7443
3407302dc4d9 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 6501
diff changeset
    99
7548
Claus Gittinger <cg@exept.de>
parents: 7471
diff changeset
   100
    Infinity positive > Infinity negative  
Claus Gittinger <cg@exept.de>
parents: 7471
diff changeset
   101
    Infinity negative > Infinity positive  
Claus Gittinger <cg@exept.de>
parents: 7471
diff changeset
   102
Claus Gittinger <cg@exept.de>
parents: 7471
diff changeset
   103
    Infinity negative + Infinity positive   -> raises an error
Claus Gittinger <cg@exept.de>
parents: 7471
diff changeset
   104
    Infinity negative - Infinity negative   -> raises an error
Claus Gittinger <cg@exept.de>
parents: 7471
diff changeset
   105
6501
51344e42c38c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 5287
diff changeset
   106
"
51344e42c38c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 5287
diff changeset
   107
!
51344e42c38c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 5287
diff changeset
   108
51344e42c38c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 5287
diff changeset
   109
info
51344e42c38c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 5287
diff changeset
   110
"       
7548
Claus Gittinger <cg@exept.de>
parents: 7471
diff changeset
   111
    NAME            infinity
Claus Gittinger <cg@exept.de>
parents: 7471
diff changeset
   112
    AUTHOR          manchester
Claus Gittinger <cg@exept.de>
parents: 7471
diff changeset
   113
    FUNCTION        Provides a class of infinities
Claus Gittinger <cg@exept.de>
parents: 7471
diff changeset
   114
    ST-VERSION      2.2
Claus Gittinger <cg@exept.de>
parents: 7471
diff changeset
   115
    PREREQUISITES   
Claus Gittinger <cg@exept.de>
parents: 7471
diff changeset
   116
    CONFLICTS
Claus Gittinger <cg@exept.de>
parents: 7471
diff changeset
   117
    DISTRIBUTION    world
Claus Gittinger <cg@exept.de>
parents: 7471
diff changeset
   118
    VERSION         1
Claus Gittinger <cg@exept.de>
parents: 7471
diff changeset
   119
    DATE            22 Jan 1989
Claus Gittinger <cg@exept.de>
parents: 7471
diff changeset
   120
    SUMMARY
Claus Gittinger <cg@exept.de>
parents: 7471
diff changeset
   121
        This is a set of changes that implements infinity in the Number hierarchy.  
Claus Gittinger <cg@exept.de>
parents: 7471
diff changeset
   122
        I obtained the original changes from the author of an article in comp.lang.smalltalk.
Claus Gittinger <cg@exept.de>
parents: 7471
diff changeset
   123
        I have just installed it in my image and I have found two small omissions
Claus Gittinger <cg@exept.de>
parents: 7471
diff changeset
   124
        which are corrected in what is below; there might be others.  Arithmetic
Claus Gittinger <cg@exept.de>
parents: 7471
diff changeset
   125
        between infinities is not defined but magnitude comparisons are implemented.
6501
51344e42c38c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 5287
diff changeset
   126
"
51344e42c38c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 5287
diff changeset
   127
! !
51344e42c38c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 5287
diff changeset
   128
7443
3407302dc4d9 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 6501
diff changeset
   129
!Infinity class methodsFor:'instance creation'!
265
f014922e3b71 Initial revision
claus
parents:
diff changeset
   130
7443
3407302dc4d9 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 6501
diff changeset
   131
negative
3407302dc4d9 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 6501
diff changeset
   132
    "Return the unique instance of negative infinity"
265
f014922e3b71 Initial revision
claus
parents:
diff changeset
   133
7548
Claus Gittinger <cg@exept.de>
parents: 7471
diff changeset
   134
    ^InfNeg
265
f014922e3b71 Initial revision
claus
parents:
diff changeset
   135
!
f014922e3b71 Initial revision
claus
parents:
diff changeset
   136
16037
7636de526b0d class: Infinity
Claus Gittinger <cg@exept.de>
parents: 15404
diff changeset
   137
negative:aBoolean
7636de526b0d class: Infinity
Claus Gittinger <cg@exept.de>
parents: 15404
diff changeset
   138
    "Return either instance of negative infinity"
7636de526b0d class: Infinity
Claus Gittinger <cg@exept.de>
parents: 15404
diff changeset
   139
7636de526b0d class: Infinity
Claus Gittinger <cg@exept.de>
parents: 15404
diff changeset
   140
    ^ aBoolean ifTrue:[InfNeg] ifFalse:[InfPos].
7636de526b0d class: Infinity
Claus Gittinger <cg@exept.de>
parents: 15404
diff changeset
   141
!
7636de526b0d class: Infinity
Claus Gittinger <cg@exept.de>
parents: 15404
diff changeset
   142
7443
3407302dc4d9 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 6501
diff changeset
   143
new
16037
7636de526b0d class: Infinity
Claus Gittinger <cg@exept.de>
parents: 15404
diff changeset
   144
    "only my two singleton instances are allowed;
7636de526b0d class: Infinity
Claus Gittinger <cg@exept.de>
parents: 15404
diff changeset
   145
      get either via Infinity positive or Infinity negative"
7636de526b0d class: Infinity
Claus Gittinger <cg@exept.de>
parents: 15404
diff changeset
   146
7443
3407302dc4d9 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 6501
diff changeset
   147
    self shouldNotImplement
265
f014922e3b71 Initial revision
claus
parents:
diff changeset
   148
!
f014922e3b71 Initial revision
claus
parents:
diff changeset
   149
7443
3407302dc4d9 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 6501
diff changeset
   150
positive
3407302dc4d9 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 6501
diff changeset
   151
    "Return the unique instance of positive infinity"
265
f014922e3b71 Initial revision
claus
parents:
diff changeset
   152
7548
Claus Gittinger <cg@exept.de>
parents: 7471
diff changeset
   153
    ^InfPos
265
f014922e3b71 Initial revision
claus
parents:
diff changeset
   154
! !
f014922e3b71 Initial revision
claus
parents:
diff changeset
   155
7443
3407302dc4d9 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 6501
diff changeset
   156
!Infinity class methodsFor:'class initialization'!
265
f014922e3b71 Initial revision
claus
parents:
diff changeset
   157
f014922e3b71 Initial revision
claus
parents:
diff changeset
   158
initialize
16037
7636de526b0d class: Infinity
Claus Gittinger <cg@exept.de>
parents: 15404
diff changeset
   159
    "initialize my two singleton instances"
7636de526b0d class: Infinity
Claus Gittinger <cg@exept.de>
parents: 15404
diff changeset
   160
7548
Claus Gittinger <cg@exept.de>
parents: 7471
diff changeset
   161
    InfPos := PositiveInfinity basicNew.
Claus Gittinger <cg@exept.de>
parents: 7471
diff changeset
   162
    InfNeg := NegativeInfinity basicNew.
265
f014922e3b71 Initial revision
claus
parents:
diff changeset
   163
7548
Claus Gittinger <cg@exept.de>
parents: 7471
diff changeset
   164
    "
Claus Gittinger <cg@exept.de>
parents: 7471
diff changeset
   165
     Infinity initialize
Claus Gittinger <cg@exept.de>
parents: 7471
diff changeset
   166
    "
265
f014922e3b71 Initial revision
claus
parents:
diff changeset
   167
! !
f014922e3b71 Initial revision
claus
parents:
diff changeset
   168
7443
3407302dc4d9 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 6501
diff changeset
   169
!Infinity methodsFor:'arithmetic'!
3407302dc4d9 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 6501
diff changeset
   170
3407302dc4d9 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 6501
diff changeset
   171
* aNumber
3407302dc4d9 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 6501
diff changeset
   172
    "Multiply the receiver by the argument and answer with the result."
3407302dc4d9 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 6501
diff changeset
   173
3407302dc4d9 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 6501
diff changeset
   174
    aNumber isInfinite ifTrue: [
7452
224a1764084a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7443
diff changeset
   175
	self errorUndefinedResult: #*.
224a1764084a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7443
diff changeset
   176
	^ self class NaN.
7443
3407302dc4d9 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 6501
diff changeset
   177
    ].
3407302dc4d9 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 6501
diff changeset
   178
    ^self
3407302dc4d9 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 6501
diff changeset
   179
!
3407302dc4d9 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 6501
diff changeset
   180
3407302dc4d9 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 6501
diff changeset
   181
+ aNumber
3407302dc4d9 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 6501
diff changeset
   182
    "Add the receiver and the argument and answer with the result."
3407302dc4d9 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 6501
diff changeset
   183
3407302dc4d9 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 6501
diff changeset
   184
    (aNumber isInfinite and:[aNumber sign ~~ self sign]) ifTrue: [
7452
224a1764084a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7443
diff changeset
   185
	self errorUndefinedResult: #+.
224a1764084a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7443
diff changeset
   186
	^ self class NaN
7443
3407302dc4d9 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 6501
diff changeset
   187
    ].
3407302dc4d9 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 6501
diff changeset
   188
    ^self
3407302dc4d9 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 6501
diff changeset
   189
!
3407302dc4d9 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 6501
diff changeset
   190
3407302dc4d9 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 6501
diff changeset
   191
- aNumber
7469
86006c0e12d1 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 7452
diff changeset
   192
    "Subtracet aNumber from the receiver and answer the result."
7443
3407302dc4d9 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 6501
diff changeset
   193
3407302dc4d9 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 6501
diff changeset
   194
    (aNumber isInfinite and:[aNumber sign == self sign]) ifTrue: [
7469
86006c0e12d1 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 7452
diff changeset
   195
        self errorUndefinedResult: #-.
86006c0e12d1 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 7452
diff changeset
   196
        ^ self class NaN
7443
3407302dc4d9 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 6501
diff changeset
   197
    ].
3407302dc4d9 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 6501
diff changeset
   198
    ^self
3407302dc4d9 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 6501
diff changeset
   199
!
3407302dc4d9 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 6501
diff changeset
   200
3407302dc4d9 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 6501
diff changeset
   201
/ aNumber
3407302dc4d9 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 6501
diff changeset
   202
    "Divide the receiver by the argument and answer the result."
265
f014922e3b71 Initial revision
claus
parents:
diff changeset
   203
7443
3407302dc4d9 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 6501
diff changeset
   204
    (aNumber isInfinite or: [aNumber = 0]) ifTrue: [
7452
224a1764084a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7443
diff changeset
   205
	self errorUndefinedResult: #/.
224a1764084a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7443
diff changeset
   206
	^ self class NaN.
7443
3407302dc4d9 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 6501
diff changeset
   207
    ].
3407302dc4d9 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 6501
diff changeset
   208
    ^self
3407302dc4d9 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 6501
diff changeset
   209
! !
3407302dc4d9 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 6501
diff changeset
   210
3407302dc4d9 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 6501
diff changeset
   211
!Infinity methodsFor:'coercing'!
3407302dc4d9 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 6501
diff changeset
   212
3407302dc4d9 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 6501
diff changeset
   213
generality
3407302dc4d9 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 6501
diff changeset
   214
    "Infinities are more general than scalars, but not more general than
3407302dc4d9 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 6501
diff changeset
   215
     vectors (e.g. Points)"
3407302dc4d9 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 6501
diff changeset
   216
3407302dc4d9 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 6501
diff changeset
   217
    ^ 105
3407302dc4d9 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 6501
diff changeset
   218
! !
3407302dc4d9 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 6501
diff changeset
   219
3407302dc4d9 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 6501
diff changeset
   220
!Infinity methodsFor:'comparing'!
3407302dc4d9 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 6501
diff changeset
   221
3407302dc4d9 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 6501
diff changeset
   222
< aNumber
7548
Claus Gittinger <cg@exept.de>
parents: 7471
diff changeset
   223
    "Positive infinity is greater than any number other than positive infinity.
7443
3407302dc4d9 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 6501
diff changeset
   224
     Analogously, negative infinity is less than any other number other
3407302dc4d9 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 6501
diff changeset
   225
     than negative infinity"
3407302dc4d9 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 6501
diff changeset
   226
7548
Claus Gittinger <cg@exept.de>
parents: 7471
diff changeset
   227
    aNumber == self ifTrue: [^false].
7469
86006c0e12d1 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 7452
diff changeset
   228
    ^ self positive not
7548
Claus Gittinger <cg@exept.de>
parents: 7471
diff changeset
   229
Claus Gittinger <cg@exept.de>
parents: 7471
diff changeset
   230
    "
Claus Gittinger <cg@exept.de>
parents: 7471
diff changeset
   231
     Infinity positive < 0              
Claus Gittinger <cg@exept.de>
parents: 7471
diff changeset
   232
     Infinity positive < 1000           
Claus Gittinger <cg@exept.de>
parents: 7471
diff changeset
   233
     Infinity positive < -1000          
Claus Gittinger <cg@exept.de>
parents: 7471
diff changeset
   234
Claus Gittinger <cg@exept.de>
parents: 7471
diff changeset
   235
     Infinity positive < Infinity positive 
Claus Gittinger <cg@exept.de>
parents: 7471
diff changeset
   236
     Infinity positive < Infinity negative 
Claus Gittinger <cg@exept.de>
parents: 7471
diff changeset
   237
Claus Gittinger <cg@exept.de>
parents: 7471
diff changeset
   238
     0 < Infinity positive                 
Claus Gittinger <cg@exept.de>
parents: 7471
diff changeset
   239
     1000 < Infinity positive              
Claus Gittinger <cg@exept.de>
parents: 7471
diff changeset
   240
     -1000 < Infinity positive             
Claus Gittinger <cg@exept.de>
parents: 7471
diff changeset
   241
     Infinity negative < Infinity positive 
Claus Gittinger <cg@exept.de>
parents: 7471
diff changeset
   242
Claus Gittinger <cg@exept.de>
parents: 7471
diff changeset
   243
     Infinity negative < 0                     
Claus Gittinger <cg@exept.de>
parents: 7471
diff changeset
   244
     Infinity negative < 1000                  
Claus Gittinger <cg@exept.de>
parents: 7471
diff changeset
   245
     Infinity negative < -1000                 
Claus Gittinger <cg@exept.de>
parents: 7471
diff changeset
   246
Claus Gittinger <cg@exept.de>
parents: 7471
diff changeset
   247
     Infinity negative < Infinity negative     
Claus Gittinger <cg@exept.de>
parents: 7471
diff changeset
   248
     Infinity negative < Infinity positive     
Claus Gittinger <cg@exept.de>
parents: 7471
diff changeset
   249
Claus Gittinger <cg@exept.de>
parents: 7471
diff changeset
   250
     0 < Infinity negative                     
Claus Gittinger <cg@exept.de>
parents: 7471
diff changeset
   251
     1000 < Infinity negative                  
Claus Gittinger <cg@exept.de>
parents: 7471
diff changeset
   252
     -1000 < Infinity negative                 
Claus Gittinger <cg@exept.de>
parents: 7471
diff changeset
   253
     Infinity negative < Infinity positive     
Claus Gittinger <cg@exept.de>
parents: 7471
diff changeset
   254
    "
265
f014922e3b71 Initial revision
claus
parents:
diff changeset
   255
!
f014922e3b71 Initial revision
claus
parents:
diff changeset
   256
7443
3407302dc4d9 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 6501
diff changeset
   257
= aNumber
7471
c5d4bd612d9f comments
Claus Gittinger <cg@exept.de>
parents: 7470
diff changeset
   258
    "return true, if the argument represents the same numeric value
c5d4bd612d9f comments
Claus Gittinger <cg@exept.de>
parents: 7470
diff changeset
   259
     as the receiver, false otherwise."
c5d4bd612d9f comments
Claus Gittinger <cg@exept.de>
parents: 7470
diff changeset
   260
7548
Claus Gittinger <cg@exept.de>
parents: 7471
diff changeset
   261
    aNumber == self ifTrue:[^ true].
12246
e5cc18fff88b changed: #=
Claus Gittinger <cg@exept.de>
parents: 7548
diff changeset
   262
    aNumber isNumber ifFalse:[^ false].
7548
Claus Gittinger <cg@exept.de>
parents: 7471
diff changeset
   263
    "could be another infinity..."
Claus Gittinger <cg@exept.de>
parents: 7471
diff changeset
   264
    aNumber isFinite ifTrue:[^ false].
Claus Gittinger <cg@exept.de>
parents: 7471
diff changeset
   265
    ^ aNumber sign == self sign
Claus Gittinger <cg@exept.de>
parents: 7471
diff changeset
   266
!
Claus Gittinger <cg@exept.de>
parents: 7471
diff changeset
   267
Claus Gittinger <cg@exept.de>
parents: 7471
diff changeset
   268
> aNumber
Claus Gittinger <cg@exept.de>
parents: 7471
diff changeset
   269
    "Positive infinity is greater than any number other than positive infinity.
Claus Gittinger <cg@exept.de>
parents: 7471
diff changeset
   270
     Analogously, negative infinity is less than any other number other
Claus Gittinger <cg@exept.de>
parents: 7471
diff changeset
   271
     than negative infinity"
Claus Gittinger <cg@exept.de>
parents: 7471
diff changeset
   272
Claus Gittinger <cg@exept.de>
parents: 7471
diff changeset
   273
    aNumber == self ifTrue: [^false].
Claus Gittinger <cg@exept.de>
parents: 7471
diff changeset
   274
    ^ self positive
Claus Gittinger <cg@exept.de>
parents: 7471
diff changeset
   275
Claus Gittinger <cg@exept.de>
parents: 7471
diff changeset
   276
    "
Claus Gittinger <cg@exept.de>
parents: 7471
diff changeset
   277
     Infinity positive > 0                     
Claus Gittinger <cg@exept.de>
parents: 7471
diff changeset
   278
     Infinity positive > 1000                  
Claus Gittinger <cg@exept.de>
parents: 7471
diff changeset
   279
     Infinity positive > -1000                 
Claus Gittinger <cg@exept.de>
parents: 7471
diff changeset
   280
Claus Gittinger <cg@exept.de>
parents: 7471
diff changeset
   281
     Infinity positive > Infinity positive     
Claus Gittinger <cg@exept.de>
parents: 7471
diff changeset
   282
     Infinity positive > Infinity negative     
Claus Gittinger <cg@exept.de>
parents: 7471
diff changeset
   283
Claus Gittinger <cg@exept.de>
parents: 7471
diff changeset
   284
     0 > Infinity positive                     
Claus Gittinger <cg@exept.de>
parents: 7471
diff changeset
   285
     1000 > Infinity positive                  
Claus Gittinger <cg@exept.de>
parents: 7471
diff changeset
   286
     -1000 > Infinity positive                 
Claus Gittinger <cg@exept.de>
parents: 7471
diff changeset
   287
     Infinity negative > Infinity positive     
Claus Gittinger <cg@exept.de>
parents: 7471
diff changeset
   288
Claus Gittinger <cg@exept.de>
parents: 7471
diff changeset
   289
     Infinity negative > 0                     
Claus Gittinger <cg@exept.de>
parents: 7471
diff changeset
   290
     Infinity negative > 1000                  
Claus Gittinger <cg@exept.de>
parents: 7471
diff changeset
   291
     Infinity negative > -1000                 
Claus Gittinger <cg@exept.de>
parents: 7471
diff changeset
   292
Claus Gittinger <cg@exept.de>
parents: 7471
diff changeset
   293
     Infinity negative > Infinity negative     
Claus Gittinger <cg@exept.de>
parents: 7471
diff changeset
   294
     Infinity negative > Infinity positive     
Claus Gittinger <cg@exept.de>
parents: 7471
diff changeset
   295
Claus Gittinger <cg@exept.de>
parents: 7471
diff changeset
   296
     0 > Infinity negative                     
Claus Gittinger <cg@exept.de>
parents: 7471
diff changeset
   297
     1000 > Infinity negative                  
Claus Gittinger <cg@exept.de>
parents: 7471
diff changeset
   298
     -1000 > Infinity negative                 
Claus Gittinger <cg@exept.de>
parents: 7471
diff changeset
   299
     Infinity negative > Infinity positive     
Claus Gittinger <cg@exept.de>
parents: 7471
diff changeset
   300
    "
7443
3407302dc4d9 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 6501
diff changeset
   301
! !
3407302dc4d9 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 6501
diff changeset
   302
3407302dc4d9 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 6501
diff changeset
   303
!Infinity methodsFor:'double dispatching'!
3407302dc4d9 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 6501
diff changeset
   304
3407302dc4d9 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 6501
diff changeset
   305
differenceFromSomeNumber:aNumber
7469
86006c0e12d1 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 7452
diff changeset
   306
    "Sent from aNumber-self, if aNumber does not know how to handle this"
7443
3407302dc4d9 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 6501
diff changeset
   307
3407302dc4d9 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 6501
diff changeset
   308
    ^ self negated
3407302dc4d9 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 6501
diff changeset
   309
!
3407302dc4d9 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 6501
diff changeset
   310
3407302dc4d9 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 6501
diff changeset
   311
lessFromSomeNumber:aNumber
7469
86006c0e12d1 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 7452
diff changeset
   312
    "Sent from aNumber < self, if aNumber does not know how to handle this"
7548
Claus Gittinger <cg@exept.de>
parents: 7471
diff changeset
   313
Claus Gittinger <cg@exept.de>
parents: 7471
diff changeset
   314
    aNumber isFinite ifTrue:[
Claus Gittinger <cg@exept.de>
parents: 7471
diff changeset
   315
        ^ self positive.
Claus Gittinger <cg@exept.de>
parents: 7471
diff changeset
   316
    ].
Claus Gittinger <cg@exept.de>
parents: 7471
diff changeset
   317
7443
3407302dc4d9 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 6501
diff changeset
   318
    ^ Number
7469
86006c0e12d1 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 7452
diff changeset
   319
        raise: #undefinedResultSignal
86006c0e12d1 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 7452
diff changeset
   320
        receiver: self
86006c0e12d1 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 7452
diff changeset
   321
        selector: #lessFromSomeNumber:
86006c0e12d1 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 7452
diff changeset
   322
        errorString: 'Cannot compare against NaN'
7443
3407302dc4d9 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 6501
diff changeset
   323
!
3407302dc4d9 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 6501
diff changeset
   324
3407302dc4d9 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 6501
diff changeset
   325
productFromSomeNumber:aNumber
7469
86006c0e12d1 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 7452
diff changeset
   326
    "Sent from aNumber*self, if aNumber does not know how to handle this"
7443
3407302dc4d9 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 6501
diff changeset
   327
3407302dc4d9 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 6501
diff changeset
   328
    aNumber sign >= 0 ifTrue:[
7469
86006c0e12d1 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 7452
diff changeset
   329
        ^ self
7443
3407302dc4d9 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 6501
diff changeset
   330
    ].
3407302dc4d9 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 6501
diff changeset
   331
    ^ self negated
3407302dc4d9 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 6501
diff changeset
   332
!
3407302dc4d9 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 6501
diff changeset
   333
3407302dc4d9 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 6501
diff changeset
   334
quotientFromSomeNumber:aNumber
3407302dc4d9 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 6501
diff changeset
   335
    "Return the quotient of the argument, aNumber and the receiver.
3407302dc4d9 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 6501
diff changeset
   336
     Sent when aNumber does not know how to divide by the receiver."
3407302dc4d9 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 6501
diff changeset
   337
3407302dc4d9 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 6501
diff changeset
   338
    aNumber sign > 0 ifTrue:[
7452
224a1764084a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7443
diff changeset
   339
	^ self
7443
3407302dc4d9 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 6501
diff changeset
   340
    ].
3407302dc4d9 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 6501
diff changeset
   341
    aNumber sign < 0 ifTrue:[
7452
224a1764084a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7443
diff changeset
   342
	^ self negated
7443
3407302dc4d9 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 6501
diff changeset
   343
    ].
3407302dc4d9 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 6501
diff changeset
   344
    ^ aNumber realNumber
265
f014922e3b71 Initial revision
claus
parents:
diff changeset
   345
!
f014922e3b71 Initial revision
claus
parents:
diff changeset
   346
7443
3407302dc4d9 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 6501
diff changeset
   347
sumFromSomeNumber:aNumber
7469
86006c0e12d1 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 7452
diff changeset
   348
    "Sent from aNumber+self, if aNumber does not know how to handle this"
7443
3407302dc4d9 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 6501
diff changeset
   349
3407302dc4d9 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 6501
diff changeset
   350
    ^ self
3407302dc4d9 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 6501
diff changeset
   351
! !
3407302dc4d9 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 6501
diff changeset
   352
3407302dc4d9 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 6501
diff changeset
   353
!Infinity methodsFor:'errors'!
3407302dc4d9 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 6501
diff changeset
   354
3407302dc4d9 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 6501
diff changeset
   355
errorUndefinedResult: messageName
3407302dc4d9 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 6501
diff changeset
   356
    ^ Number
7452
224a1764084a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7443
diff changeset
   357
	raise: #undefinedResultSignal
224a1764084a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7443
diff changeset
   358
	receiver: self
224a1764084a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7443
diff changeset
   359
	selector: #lessFromSomeNumber:
224a1764084a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7443
diff changeset
   360
	errorString: 'Undefined result in an Infinity ', messageName
7443
3407302dc4d9 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 6501
diff changeset
   361
! !
3407302dc4d9 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 6501
diff changeset
   362
3407302dc4d9 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 6501
diff changeset
   363
!Infinity methodsFor:'testing'!
3407302dc4d9 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 6501
diff changeset
   364
3407302dc4d9 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 6501
diff changeset
   365
isFinite
3407302dc4d9 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 6501
diff changeset
   366
    ^false
3407302dc4d9 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 6501
diff changeset
   367
!
3407302dc4d9 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 6501
diff changeset
   368
3407302dc4d9 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 6501
diff changeset
   369
isInfinite
3407302dc4d9 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 6501
diff changeset
   370
    ^true
7469
86006c0e12d1 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 7452
diff changeset
   371
! !
86006c0e12d1 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 7452
diff changeset
   372
86006c0e12d1 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 7452
diff changeset
   373
!Infinity::NegativeInfinity methodsFor:'arithmetic'!
86006c0e12d1 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 7452
diff changeset
   374
86006c0e12d1 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 7452
diff changeset
   375
negated
86006c0e12d1 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 7452
diff changeset
   376
    ^ InfPos
7470
eb20a44a37b1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7469
diff changeset
   377
!
eb20a44a37b1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7469
diff changeset
   378
eb20a44a37b1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7469
diff changeset
   379
negative
eb20a44a37b1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7469
diff changeset
   380
    ^ true
7469
86006c0e12d1 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 7452
diff changeset
   381
! !
86006c0e12d1 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 7452
diff changeset
   382
16037
7636de526b0d class: Infinity
Claus Gittinger <cg@exept.de>
parents: 15404
diff changeset
   383
!Infinity::NegativeInfinity methodsFor:'comparing'!
7636de526b0d class: Infinity
Claus Gittinger <cg@exept.de>
parents: 15404
diff changeset
   384
7636de526b0d class: Infinity
Claus Gittinger <cg@exept.de>
parents: 15404
diff changeset
   385
hash
7636de526b0d class: Infinity
Claus Gittinger <cg@exept.de>
parents: 15404
diff changeset
   386
    "return an Integer useful as a hash key for the receiver."
7636de526b0d class: Infinity
Claus Gittinger <cg@exept.de>
parents: 15404
diff changeset
   387
7636de526b0d class: Infinity
Claus Gittinger <cg@exept.de>
parents: 15404
diff changeset
   388
    ^ 17467     "/ any arbitrary value
7636de526b0d class: Infinity
Claus Gittinger <cg@exept.de>
parents: 15404
diff changeset
   389
! !
7636de526b0d class: Infinity
Claus Gittinger <cg@exept.de>
parents: 15404
diff changeset
   390
7469
86006c0e12d1 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 7452
diff changeset
   391
!Infinity::NegativeInfinity methodsFor:'printing'!
86006c0e12d1 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 7452
diff changeset
   392
86006c0e12d1 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 7452
diff changeset
   393
printOn: aStream
86006c0e12d1 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 7452
diff changeset
   394
    aStream nextPutAll:'-INF'
86006c0e12d1 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 7452
diff changeset
   395
! !
86006c0e12d1 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 7452
diff changeset
   396
86006c0e12d1 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 7452
diff changeset
   397
!Infinity::NegativeInfinity methodsFor:'testing'!
7443
3407302dc4d9 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 6501
diff changeset
   398
3407302dc4d9 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 6501
diff changeset
   399
sign
7471
c5d4bd612d9f comments
Claus Gittinger <cg@exept.de>
parents: 7470
diff changeset
   400
    "return the sign of the receiver (1)"
7443
3407302dc4d9 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 6501
diff changeset
   401
3407302dc4d9 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 6501
diff changeset
   402
    ^ -1
3407302dc4d9 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 6501
diff changeset
   403
! !
3407302dc4d9 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 6501
diff changeset
   404
7469
86006c0e12d1 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 7452
diff changeset
   405
!Infinity::PositiveInfinity methodsFor:'arithmetic'!
86006c0e12d1 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 7452
diff changeset
   406
86006c0e12d1 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 7452
diff changeset
   407
negated
86006c0e12d1 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 7452
diff changeset
   408
    ^ InfNeg
7470
eb20a44a37b1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7469
diff changeset
   409
!
eb20a44a37b1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7469
diff changeset
   410
eb20a44a37b1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7469
diff changeset
   411
negative
eb20a44a37b1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7469
diff changeset
   412
    ^ false
7469
86006c0e12d1 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 7452
diff changeset
   413
! !
86006c0e12d1 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 7452
diff changeset
   414
16037
7636de526b0d class: Infinity
Claus Gittinger <cg@exept.de>
parents: 15404
diff changeset
   415
!Infinity::PositiveInfinity methodsFor:'comparing'!
7636de526b0d class: Infinity
Claus Gittinger <cg@exept.de>
parents: 15404
diff changeset
   416
7636de526b0d class: Infinity
Claus Gittinger <cg@exept.de>
parents: 15404
diff changeset
   417
hash
7636de526b0d class: Infinity
Claus Gittinger <cg@exept.de>
parents: 15404
diff changeset
   418
    "return an Integer useful as a hash key for the receiver."
7636de526b0d class: Infinity
Claus Gittinger <cg@exept.de>
parents: 15404
diff changeset
   419
7636de526b0d class: Infinity
Claus Gittinger <cg@exept.de>
parents: 15404
diff changeset
   420
    ^ 17471     "/ any arbitrary value
7636de526b0d class: Infinity
Claus Gittinger <cg@exept.de>
parents: 15404
diff changeset
   421
! !
7636de526b0d class: Infinity
Claus Gittinger <cg@exept.de>
parents: 15404
diff changeset
   422
7469
86006c0e12d1 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 7452
diff changeset
   423
!Infinity::PositiveInfinity methodsFor:'printing'!
86006c0e12d1 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 7452
diff changeset
   424
86006c0e12d1 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 7452
diff changeset
   425
printOn: aStream
86006c0e12d1 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 7452
diff changeset
   426
    aStream nextPutAll:'INF'
86006c0e12d1 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 7452
diff changeset
   427
! !
86006c0e12d1 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 7452
diff changeset
   428
86006c0e12d1 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 7452
diff changeset
   429
!Infinity::PositiveInfinity methodsFor:'testing'!
86006c0e12d1 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 7452
diff changeset
   430
86006c0e12d1 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 7452
diff changeset
   431
sign
7471
c5d4bd612d9f comments
Claus Gittinger <cg@exept.de>
parents: 7470
diff changeset
   432
    "return the sign of the receiver (-1)"
7469
86006c0e12d1 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 7452
diff changeset
   433
86006c0e12d1 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 7452
diff changeset
   434
    ^ 1
86006c0e12d1 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 7452
diff changeset
   435
! !
86006c0e12d1 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 7452
diff changeset
   436
7443
3407302dc4d9 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 6501
diff changeset
   437
!Infinity class methodsFor:'documentation'!
3407302dc4d9 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 6501
diff changeset
   438
3407302dc4d9 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 6501
diff changeset
   439
version
16037
7636de526b0d class: Infinity
Claus Gittinger <cg@exept.de>
parents: 15404
diff changeset
   440
    ^ '$Header: /cvs/stx/stx/libbasic/Infinity.st,v 1.15 2014-02-14 14:20:03 cg Exp $'
12246
e5cc18fff88b changed: #=
Claus Gittinger <cg@exept.de>
parents: 7548
diff changeset
   441
!
e5cc18fff88b changed: #=
Claus Gittinger <cg@exept.de>
parents: 7548
diff changeset
   442
e5cc18fff88b changed: #=
Claus Gittinger <cg@exept.de>
parents: 7548
diff changeset
   443
version_CVS
16037
7636de526b0d class: Infinity
Claus Gittinger <cg@exept.de>
parents: 15404
diff changeset
   444
    ^ '$Header: /cvs/stx/stx/libbasic/Infinity.st,v 1.15 2014-02-14 14:20:03 cg Exp $'
265
f014922e3b71 Initial revision
claus
parents:
diff changeset
   445
! !
f014922e3b71 Initial revision
claus
parents:
diff changeset
   446
15404
c08c1ddf8df7 class: Infinity
Stefan Vogel <sv@exept.de>
parents: 12246
diff changeset
   447
265
f014922e3b71 Initial revision
claus
parents:
diff changeset
   448
Infinity initialize!