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