RegressionTests__LargeFloatTest.st
author Jan Vrany <jan.vrany@fit.cvut.cz>
Wed, 29 Jun 2016 21:40:53 +0100
branchjv
changeset 1499 26a16a04219b
parent 1070 3a47933aea21
child 1500 d406a10b2965
permissions -rw-r--r--
Package renamed from exept:regression to stx:goodies/regression. Hooray!
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1499
26a16a04219b Package renamed from exept:regression to stx:goodies/regression. Hooray!
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1070
diff changeset
     1
"{ Package: 'stx:goodies/regression' }"
204
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     2
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     3
"{ NameSpace: RegressionTests }"
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     4
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     5
TestCase subclass:#LargeFloatTest
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     6
	instanceVariableNames:''
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     7
	classVariableNames:''
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     8
	poolDictionaries:''
1070
3a47933aea21 category
Claus Gittinger <cg@exept.de>
parents: 204
diff changeset
     9
	category:'tests-Regression-Numbers'
204
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    10
!
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    11
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    12
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    13
!LargeFloatTest methodsFor:'helpers'!
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    14
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    15
actualPrecisionOf:aFloatClass
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    16
    "get the actual number of valid bits in the mantissa.
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    17
     This does a real test (i.e. does not believe the compiled-in ifdefs)"
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    18
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    19
    |one half x count|
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    20
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    21
    one := aFloatClass unity.  "/ 1.0 in this class
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    22
    half := one coerce:0.5.
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    23
    x := one.    
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    24
    count := 0.
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    25
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    26
    [ one + x ~= one] whileTrue:[
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    27
        x := x * half.
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    28
        count := count + 1.
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    29
    ].
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    30
    ^ count
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    31
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    32
    "
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    33
     self basicNew actualPrecisionOf:ShortFloat 
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    34
     self basicNew actualPrecisionOf:Float      
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    35
     self basicNew actualPrecisionOf:LongFloat   
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    36
    "
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    37
! !
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    38
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    39
!LargeFloatTest methodsFor:'tests'!
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    40
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    41
test01_Nan
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    42
    "NaN in all avaliable formats."
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    43
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    44
    |shouldBeNaN|
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    45
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    46
    shouldBeNaN := 0.0 asLargeFloat uncheckedDivide: 0.0.
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    47
    self assert:( shouldBeNaN isMemberOf:LargeFloat ).
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    48
    self assert:( shouldBeNaN isNaN ).
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    49
    self assert:( shouldBeNaN isFinite not ).
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    50
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    51
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    52
    shouldBeNaN := 0.0 asLargeFloat uncheckedDivide: 0.0.
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    53
    self assert:( shouldBeNaN asShortFloat isNaN ).
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    54
    self assert:( shouldBeNaN asLongFloat isNaN ).
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    55
    self should:[ shouldBeNaN asInteger ] raise:DomainError.
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    56
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    57
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    58
    self assert:( shouldBeNaN + 1 ) isNaN.
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    59
    self assert:( shouldBeNaN + 1.0 ) isNaN.
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    60
    self assert:( shouldBeNaN + 1.0 asShortFloat ) isNaN.
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    61
    self assert:( shouldBeNaN + 1.0 asLongFloat ) isNaN.
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    62
    self assert:( shouldBeNaN + 1.0 asLargeFloat ) isNaN.
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    63
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    64
    self assert:( 1 + shouldBeNaN ) isNaN.
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    65
    self assert:( 1.0 + shouldBeNaN ) isNaN.
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    66
    self assert:( 1.0 asShortFloat + shouldBeNaN ) isNaN.
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    67
    self assert:( 1.0 asLongFloat + shouldBeNaN ) isNaN.
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    68
    self assert:( 1.0 asLargeFloat + shouldBeNaN ) isNaN.
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    69
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    70
    self assert:( shouldBeNaN - 1 ) isNaN.
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    71
    self assert:( shouldBeNaN - 1.0 ) isNaN.
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    72
    self assert:( shouldBeNaN - 1.0 asShortFloat ) isNaN.
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    73
    self assert:( shouldBeNaN - 1.0 asLongFloat ) isNaN.
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    74
    self assert:( shouldBeNaN - 1.0 asLargeFloat ) isNaN.
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    75
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    76
    self assert:( 1 - shouldBeNaN ) isNaN.
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    77
    self assert:( 1.0 - shouldBeNaN ) isNaN.
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    78
    self assert:( 1.0 asShortFloat - shouldBeNaN ) isNaN.
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    79
    self assert:( 1.0 asLongFloat - shouldBeNaN ) isNaN.
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    80
    self assert:( 1.0 asLargeFloat - shouldBeNaN ) isNaN.
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    81
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    82
    "
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    83
     self basicNew test01_Nan
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    84
    "
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    85
!
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    86
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    87
test02_Inf
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    88
    "Infinity in all avaliable formats."
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    89
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    90
    |check posInf negInf|
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    91
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    92
    check := 
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    93
        [:v1 :v2 |
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    94
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    95
            posInf := v1 uncheckedDivide: v2.
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    96
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    97
            self assert:( posInf isMemberOf:v1 class ).
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    98
            self assert:( posInf isNaN not ).
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    99
            self assert:( posInf isFinite not ).
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   100
            self assert:( posInf isInfinite ).
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   101
            self assert:( posInf positive ).
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   102
            self assert:( posInf negative not ).
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   103
            self assert:( posInf isNegativeInfinity not).
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   104
            self assert:( posInf isPositiveInfinity ).
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   105
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   106
            negInf := v1 negated uncheckedDivide: v2.
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   107
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   108
            self assert:( negInf isMemberOf:v1 class ).
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   109
            self assert:( negInf isNaN not ).
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   110
            self assert:( negInf isFinite not ).
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   111
            self assert:( negInf isInfinite ).
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   112
            self assert:( negInf positive not).
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   113
            self assert:( negInf negative ).
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   114
            self assert:( negInf isNegativeInfinity ).
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   115
            self assert:( negInf isPositiveInfinity not ).
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   116
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   117
            self assert:( negInf + negInf = negInf).
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   118
            self assert:( posInf + posInf = posInf).
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   119
            self assert:( negInf + posInf) isNaN.
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   120
            self assert:( posInf + negInf) isNaN.
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   121
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   122
            self assert:( negInf - posInf = negInf).
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   123
            self assert:( negInf - negInf) isNaN.
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   124
            self assert:( posInf - negInf = posInf).
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   125
            self assert:( posInf - posInf) isNaN.
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   126
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   127
            self assert:( posInf + v1) = posInf.
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   128
            self assert:( posInf - v1) = posInf.
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   129
            self assert:( negInf + v1) = negInf.
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   130
            self assert:( negInf - v1) = negInf.
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   131
        ].
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   132
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   133
    check value: 1.0 asLargeFloat value: 0.0 asLargeFloat.
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   134
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   135
    "
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   136
     self basicNew test02_Inf
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   137
    "
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   138
!
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   139
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   140
test03_Conversion
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   141
    self assert:( 1.0 asLargeFloat asTrueFraction == 1 ).
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   142
    self assert:( 2.0 asLargeFloat asTrueFraction == 2 ).
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   143
    self assert:( 4.0 asLargeFloat asTrueFraction == 4 ).
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   144
    self assert:( 8.0 asLargeFloat asTrueFraction == 8 ).
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   145
    self assert:( 16.0 asLargeFloat asTrueFraction == 16 ).
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   146
    self assert:( 1048576.0 asLargeFloat asTrueFraction == 1048576 ).
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   147
    self assert:( 0.5 asLargeFloat asTrueFraction = (1/2) ).
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   148
    self assert:( 0.25 asLargeFloat asTrueFraction = (1/4) ).
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   149
    self assert:( 0.125 asLargeFloat asTrueFraction = (1/8) ).
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   150
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   151
    "
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   152
     self basicNew test03_Conversion
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   153
    "
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   154
!
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   155
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   156
test04_Arithmetic
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   157
    self assert:( 1.0 asLargeFloat + 1.0 ) class == LargeFloat.
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   158
    self assert:( 1.0 asLargeFloat + 1.0 asShortFloat ) class == LargeFloat.
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   159
    self assert:( 1.0 asLargeFloat + 1.0 asFloat ) class == LargeFloat.
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   160
    self assert:( 1.0 asLargeFloat + 1 ) class == LargeFloat.
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   161
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   162
    self assert:( 1.0 asLargeFloat - 1.0 ) class == LargeFloat.
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   163
    self assert:( 1.0 asLargeFloat - 1.0 asShortFloat ) class == LargeFloat.
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   164
    self assert:( 1.0 asLargeFloat - 1.0 asFloat ) class == LargeFloat.
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   165
    self assert:( 1.0 asLargeFloat - 1 ) class == LargeFloat.
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   166
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   167
    self assert:( 1.0 asLargeFloat * 1.0 ) class == LargeFloat.
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   168
    self assert:( 1.0 asLargeFloat * 1.0 asShortFloat ) class == LargeFloat.
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   169
    self assert:( 1.0 asLargeFloat * 1.0 asFloat ) class == LargeFloat.
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   170
    self assert:( 1.0 asLargeFloat * 1 ) class == LargeFloat.
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   171
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   172
    self assert:( 1.0 asLargeFloat / 1.0 ) class == LargeFloat.
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   173
    self assert:( 1.0 asLargeFloat / 1.0 asShortFloat ) class == LargeFloat.
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   174
    self assert:( 1.0 asLargeFloat / 1.0 asFloat ) class == LargeFloat.
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   175
    self assert:( 1.0 asLargeFloat / 1 ) class == LargeFloat.
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   176
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   177
    self assert:( 1.0 asLargeFloat + 1.0 asLargeFloat) = 2.0 asLargeFloat.
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   178
    self assert:( 1.0 asLargeFloat + 0.0 asLargeFloat) = 1.0 asLargeFloat.
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   179
    self assert:( 1.0 asLargeFloat + 2.0 asLargeFloat) = 3.0 asLargeFloat.
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   180
    self assert:( 1.0 asLargeFloat + 3.0 asLargeFloat) = 4.0 asLargeFloat.
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   181
    self assert:( 1.0 asLargeFloat + 1.0 asLargeFloat negated) = 0.0 asLargeFloat.
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   182
    self assert:( 1.0 asLargeFloat + 2.0 asLargeFloat negated) = -1.0 asLargeFloat.
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   183
    self assert:( 1.0 asLargeFloat + -1.0 asLargeFloat negated) = 2.0 asLargeFloat.
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   184
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   185
    self assert:( 1.0 asLargeFloat - 1.0 asLargeFloat) = 0.0 asLargeFloat.
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   186
    self assert:( 1.0 asLargeFloat - 0.0 asLargeFloat) = 1.0 asLargeFloat.
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   187
    self assert:( 1.0 asLargeFloat - 2.0 asLargeFloat) = -1.0 asLargeFloat.
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   188
    self assert:( 1.0 asLargeFloat - 3.0 asLargeFloat) = -2.0 asLargeFloat.
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   189
    self assert:( 1.0 asLargeFloat - 1.0 asLargeFloat negated) = 2.0 asLargeFloat.
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   190
    self assert:( 1.0 asLargeFloat - 2.0 asLargeFloat negated) = 3.0 asLargeFloat.
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   191
    self assert:( 1.0 asLargeFloat - -1.0 asLargeFloat negated) = 0.0 asLargeFloat.
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   192
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   193
    self assert:( 1.0 asLargeFloat * 1.0 asLargeFloat) = 1.0 asLargeFloat.
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   194
    self assert:( 1.0 asLargeFloat * 0.0 asLargeFloat) = 0.0 asLargeFloat.
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   195
    self assert:( 1.0 asLargeFloat * 2.0 asLargeFloat) = 2.0 asLargeFloat.
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   196
    self assert:( 1.0 asLargeFloat * 3.0 asLargeFloat) = 3.0 asLargeFloat.
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   197
    self assert:( 2.0 asLargeFloat * 3.0 asLargeFloat) = 6.0 asLargeFloat.
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   198
    self assert:( 1.0 asLargeFloat * 1.0 asLargeFloat negated) = -1.0 asLargeFloat.
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   199
    self assert:( 1.0 asLargeFloat * 2.0 asLargeFloat negated) = -2.0 asLargeFloat.
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   200
    self assert:( 1.0 asLargeFloat * -1.0 asLargeFloat negated) = 1.0 asLargeFloat.
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   201
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   202
    self assert:( 1.0 asLargeFloat / 1.0 asLargeFloat) = 1.0 asLargeFloat.
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   203
    self assert:( 1.0 asLargeFloat / 2.0 asLargeFloat) = 0.5 asLargeFloat.
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   204
    self assert:( 3.0 asLargeFloat / 2.0 asLargeFloat) = (3/2) asLargeFloat.
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   205
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   206
    "
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   207
     self basicNew test04_Arithmetic
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   208
    "
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   209
!
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   210
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   211
test05_Comparing
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   212
    self assert:( 2.0 asLargeFloat = 2 ).
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   213
    self assert:( 2.0 asLargeFloat = 2.0 asShortFloat ).
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   214
    self assert:( 2.0 asLargeFloat = 2.0 ).
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   215
    self assert:( 2.0 asLargeFloat = 2.0 asLongFloat ).
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   216
    self assert:( 2.0 asLargeFloat = 2.0 asLargeFloat ).
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   217
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   218
    self assert:( 2.0 asLargeFloat = 3 ) not.
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   219
    self assert:( 2.0 asLargeFloat = 3.0 asShortFloat ) not.
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   220
    self assert:( 2.0 asLargeFloat = 3.0 ) not.
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   221
    self assert:( 2.0 asLargeFloat = 3.0 asLongFloat ) not.
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   222
    self assert:( 2.0 asLargeFloat = 3.0 asLargeFloat ) not.
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   223
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   224
    self assert:( 2.0 asLargeFloat < 3 ).
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   225
    self assert:( 2.0 asLargeFloat < 3.0 asShortFloat ).
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   226
    self assert:( 2.0 asLargeFloat < 3.0 asLargeFloat ).
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   227
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   228
    self assert:( 200000000000000000000.0 asLargeFloat < 200000000000100000000 ).
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   229
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   230
    self assert:( 200000000000000000000 < 200001000000000000000.0 asLargeFloat ).
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   231
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   232
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   233
    self assert:( 2.0 asLargeFloat <= 3 ).
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   234
    self assert:( 2.0 asLargeFloat <= 2 ).
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   235
    self assert:( 2.0 asLargeFloat <= 3.0 asShortFloat ).
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   236
    self assert:( 2.0 asLargeFloat <= 2.0 asShortFloat ).
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   237
    self assert:( 2.0 asLargeFloat <= 3.0 asLongFloat ).
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   238
    self assert:( 2.0 asLargeFloat <= 2.0 asLongFloat ).
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   239
    self assert:( 2.0 asLargeFloat <= 3.0 asLargeFloat ).
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   240
    self assert:( 2.0 asLargeFloat <= 2.0 asLargeFloat ).
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   241
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   242
    self assert:( 200000000000000000000.0 asLargeFloat <= 200000000000000000001 ).
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   243
    self assert:( 200000000000000000000.0 asLargeFloat <= 200000000000000000000 ).
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   244
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   245
    self assert:( 200000000000000000000 <= 200001000000000000000.0 asLargeFloat ).
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   246
    self assert:( 200000000000000000000 <= 200000000000000000000.0 asLargeFloat ).
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   247
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   248
    "
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   249
     self basicNew test05_Comparing
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   250
    "
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   251
!
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   252
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   253
test06_MiscMath
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   254
    #(
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   255
"/        sqrt       0.5
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   256
"/        exp        0.5
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   257
"/        ln         0.5
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   258
"/        log10      0.5
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   259
"/        sin        0.5
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   260
"/        cos        0.5
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   261
"/        tan        0.5
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   262
"/        arcSin     0.5
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   263
"/        arcCos     0.5
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   264
"/        arcTan     0.5
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   265
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   266
        sinh       0.5 
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   267
        cosh       0.5
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   268
        tanh       0.5
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   269
        arcSinh    0.5
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   270
        arcCosh    1.5
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   271
        arcTanh    0.5
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   272
    ) pairWiseDo:[:op :arg |
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   273
"/        self assert:( arg asLargeFloat perform:op ) class == LargeFloat.
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   274
        ( arg asLargeFloat perform:op ) class == LargeFloat ifFalse:[
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   275
            Transcript showCR:'warning: missing LargeFloat function: ' , op.
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   276
        ].
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   277
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   278
        self assert:( (arg perform:op) - (arg asLargeFloat perform:op) ) < 0.000001.
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   279
        self assert:( (arg perform:op) - (arg perform:op) asLargeFloat ) < 0.000001.
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   280
    ].
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   281
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   282
    "
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   283
     self basicNew test06_MiscMath
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   284
    "
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   285
!
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   286
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   287
test07_Truncation
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   288
    |check|
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   289
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   290
    check := [:num |
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   291
        self assert:( num fractionPart + num truncated ) = num.
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   292
        self assert:( num fractionPart + num truncated ) class == num class.
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   293
    ].
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   294
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   295
    check value:1.6 asLargeFloat.
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   296
    check value:-1.6 asLargeFloat.
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   297
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   298
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   299
    self assert:( 1.6 asLargeFloat ceiling ) = 2.
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   300
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   301
    self assert:( 1.6 asLargeFloat ceilingAsFloat ) = 2.0 asLargeFloat.
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   302
    self assert:( 1.6 asLargeFloat ceilingAsFloat ) class == LargeFloat.
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   303
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   304
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   305
    self assert:( 1.6 asLargeFloat floor ) = 1.
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   306
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   307
    self assert:( 1.6 asLargeFloat floorAsFloat ) = 1.0 asLargeFloat.
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   308
    self assert:( 1.6 asLargeFloat floorAsFloat ) class == LargeFloat.
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   309
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   310
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   311
    self assert:( 0.4 asLargeFloat rounded ) class == SmallInteger.    
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   312
    self assert:( 0.4 asLargeFloat rounded = 0 ).    
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   313
    self assert:( 0.5 asLargeFloat rounded = 1 ).     
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   314
    self assert:( 0.6 asLargeFloat rounded = 1 ).     
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   315
    self assert:( -0.4 asLargeFloat rounded = 0 ).    
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   316
    self assert:( -0.5 asLargeFloat rounded = -1 ).    
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   317
    self assert:( -0.6 asLargeFloat rounded = -1 ).    
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   318
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   319
    self assert:( 0.4 asLargeFloat roundedAsFloat ) class == LargeFloat.    
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   320
    self assert:( 0.4 asLargeFloat roundedAsFloat  = 0.0 ).    
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   321
    self assert:( 0.5 asLargeFloat roundedAsFloat  = 1.0 ).    
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   322
    self assert:( 0.6 asLargeFloat roundedAsFloat  = 1.0 ).    
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   323
    self assert:( -0.4 asLargeFloat roundedAsFloat = 0 ).    
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   324
    self assert:( -0.5 asLargeFloat roundedAsFloat = -1.0 ).    
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   325
    self assert:( -0.6 asLargeFloat roundedAsFloat = -1.0 ).    
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   326
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   327
    self assert:( 0.4 truncated ) class == SmallInteger.    
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   328
    self assert:( 0.4 truncated = 0 ).    
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   329
    self assert:( 0.5 truncated = 0 ).     
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   330
    self assert:( 0.6 truncated = 0 ).     
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   331
    self assert:( -0.4 truncated = 0 ).    
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   332
    self assert:( -0.5 truncated = 0 ).    
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   333
    self assert:( -0.6 truncated = 0 ).    
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   334
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   335
    self assert:( 0.4 truncatedAsFloat ) class == Float.    
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   336
    self assert:( 0.4 truncatedAsFloat  = 0.0 ).    
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   337
    self assert:( 0.5 truncatedAsFloat  = 0.0 ).    
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   338
    self assert:( 0.6 truncatedAsFloat  = 0.0 ).    
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   339
    self assert:( -0.4 truncatedAsFloat = 0 ).    
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   340
    self assert:( -0.5 truncatedAsFloat = 0.0 ).    
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   341
    self assert:( -0.6 truncatedAsFloat = 0.0 ).    
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   342
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   343
    self assert:( 0.4 asShortFloat truncated ) class == SmallInteger.    
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   344
    self assert:( 0.4 asShortFloat truncated = 0 ).    
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   345
    self assert:( 0.5 asShortFloat truncated = 0 ).     
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   346
    self assert:( 0.6 asShortFloat truncated = 0 ).     
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   347
    self assert:( -0.4 asShortFloat truncated = 0 ).    
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   348
    self assert:( -0.5 asShortFloat truncated = 0 ).    
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   349
    self assert:( -0.6 asShortFloat truncated = 0 ).    
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   350
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   351
    self assert:( 0.4 asShortFloat truncatedAsFloat ) class == ShortFloat.    
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   352
    self assert:( 0.4 asShortFloat truncatedAsFloat  = 0.0 ).    
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   353
    self assert:( 0.5 asShortFloat truncatedAsFloat  = 0.0 ).    
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   354
    self assert:( 0.6 asShortFloat truncatedAsFloat  = 0.0 ).    
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   355
    self assert:( -0.4 asShortFloat truncatedAsFloat = 0 ).    
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   356
    self assert:( -0.5 asShortFloat truncatedAsFloat = 0.0 ).    
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   357
    self assert:( -0.6 asShortFloat truncatedAsFloat = 0.0 ).    
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   358
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   359
    self assert:( 0.4 asLargeFloat truncated ) class == SmallInteger.    
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   360
    self assert:( 0.4 asLargeFloat truncated = 0 ).    
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   361
    self assert:( 0.5 asLargeFloat truncated = 0 ).     
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   362
    self assert:( 0.6 asLargeFloat truncated = 0 ).     
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   363
    self assert:( -0.4 asLargeFloat truncated = 0 ).    
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   364
    self assert:( -0.5 asLargeFloat truncated = 0 ).    
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   365
    self assert:( -0.6 asLargeFloat truncated = 0 ).    
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   366
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   367
    self assert:( 0.4 asLargeFloat truncatedAsFloat ) class == LargeFloat.    
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   368
    self assert:( 0.4 asLargeFloat truncatedAsFloat  = 0.0 ).    
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   369
    self assert:( 0.5 asLargeFloat truncatedAsFloat  = 0.0 ).    
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   370
    self assert:( 0.6 asLargeFloat truncatedAsFloat  = 0.0 ).    
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   371
    self assert:( -0.4 asLargeFloat truncatedAsFloat = 0 ).    
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   372
    self assert:( -0.5 asLargeFloat truncatedAsFloat = 0.0 ).    
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   373
    self assert:( -0.6 asLargeFloat truncatedAsFloat = 0.0 ).    
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   374
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   375
    "
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   376
     self basicNew test07_Truncation
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   377
    "
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   378
!
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   379
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   380
test08_Representation
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   381
"/    self assert:( 0.0 asLargeFloat exponent = 0 ).      
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   382
"/    self assert:( 1.0 asLargeFloat exponent = 0 "1" ).
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   383
"/    self assert:( 2.0 asLargeFloat exponent = 1 "2" ).
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   384
"/    self assert:( 3.0 asLargeFloat exponent = 2 ).
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   385
"/    self assert:( 4.0 asLargeFloat exponent = 3 ).
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   386
"/    self assert:( 0.5 asLargeFloat exponent = 0 ).
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   387
"/    self assert:( 0.4 asLargeFloat exponent = -1 ).
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   388
"/    self assert:( 0.25 asLargeFloat exponent = -1 ).
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   389
"/    self assert:( 0.125 asLargeFloat exponent = -2 ).
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   390
"/    self assert:( 0.00000011111 asLargeFloat exponent = -23 ).
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   391
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   392
    "
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   393
     self basicNew test08_Representation
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   394
    "
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   395
!
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   396
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   397
test09_Testing
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   398
    self assert:( 0.0 asLargeFloat isZero ).      
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   399
    self assert:( 1.0 asLargeFloat isZero not ).      
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   400
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   401
    self assert:( 0.0 asLargeFloat negative not ).      
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   402
    self assert:( 1.0 asLargeFloat negative not ).      
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   403
    self assert:( -1.0 asLargeFloat negative ).      
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   404
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   405
    self assert:( 0.0 asLargeFloat positive ).      
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   406
    self assert:( 1.0 asLargeFloat positive ).      
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   407
    self assert:( -1.0 asLargeFloat positive not ).      
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   408
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   409
    self assert:( 0.0 asLargeFloat strictlyPositive not ).      
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   410
    self assert:( 1.0 asLargeFloat strictlyPositive ).      
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   411
    self assert:( -1.0 asLargeFloat strictlyPositive not ).      
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   412
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   413
    self assert:( 0.0 asLargeFloat sign == 0 ).      
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   414
    self assert:( 1.0 asLargeFloat sign == 1 ).      
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   415
    self assert:( -1.0 asLargeFloat sign == -1 ).      
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   416
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   417
    "
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   418
     self basicNew test09_Testing
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   419
    "
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   420
! !
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   421
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   422
!LargeFloatTest class methodsFor:'documentation'!
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   423
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   424
version
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   425
    ^ '$Header$'
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   426
! !
1070
3a47933aea21 category
Claus Gittinger <cg@exept.de>
parents: 204
diff changeset
   427