RegressionTests__LargeFloatTest.st
author sr
Mon, 18 Sep 2017 14:52:18 +0200
changeset 1706 5a6d4c85ea80
parent 1447 2351db93aa5b
child 1500 d406a10b2965
child 1720 56c09596d753
permissions -rw-r--r--
#BUGFIX by sr class: RegressionTests::MetaNumbersTest changed: #test01_Nan
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
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    22
    half := one coerce:0.5.
1447
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
    23
    x := one.
204
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:[
1447
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
    27
	x := x * half.
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
    28
	count := count + 1.
204
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
    "
1447
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
    33
     self basicNew actualPrecisionOf:ShortFloat
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
    34
     self basicNew actualPrecisionOf:Float
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
    35
     self basicNew actualPrecisionOf:LongFloat
204
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
1447
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
    92
    check :=
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
    93
	[:v1 :v2 |
204
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    94
1447
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
    95
	    posInf := v1 uncheckedDivide: v2.
204
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    96
1447
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
    97
	    self assert:( posInf isMemberOf:v1 class ).
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
    98
	    self assert:( posInf isNaN not ).
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
    99
	    self assert:( posInf isFinite not ).
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   100
	    self assert:( posInf isInfinite ).
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   101
	    self assert:( posInf positive ).
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   102
	    self assert:( posInf negative not ).
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   103
	    self assert:( posInf isNegativeInfinity not).
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   104
	    self assert:( posInf isPositiveInfinity ).
204
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   105
1447
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   106
	    negInf := v1 negated uncheckedDivide: v2.
204
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   107
1447
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   108
	    self assert:( negInf isMemberOf:v1 class ).
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   109
	    self assert:( negInf isNaN not ).
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   110
	    self assert:( negInf isFinite not ).
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   111
	    self assert:( negInf isInfinite ).
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   112
	    self assert:( negInf positive not).
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   113
	    self assert:( negInf negative ).
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   114
	    self assert:( negInf isNegativeInfinity ).
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   115
	    self assert:( negInf isPositiveInfinity not ).
204
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   116
1447
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   117
	    self assert:( negInf + negInf = negInf).
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   118
	    self assert:( posInf + posInf = posInf).
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   119
	    self assert:( negInf + posInf) isNaN.
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   120
	    self assert:( posInf + negInf) isNaN.
204
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   121
1447
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   122
	    self assert:( negInf - posInf = negInf).
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   123
	    self assert:( negInf - negInf) isNaN.
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   124
	    self assert:( posInf - negInf = posInf).
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   125
	    self assert:( posInf - posInf) isNaN.
204
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   126
1447
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   127
	    self assert:( posInf + v1) = posInf.
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   128
	    self assert:( posInf - v1) = posInf.
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   129
	    self assert:( negInf + v1) = negInf.
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   130
	    self assert:( negInf - v1) = negInf.
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   131
	].
204
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
1447
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   266
	sinh       0.5
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   267
	cosh       0.5
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   268
	tanh       0.5
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   269
	arcSinh    0.5
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   270
	arcCosh    1.5
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   271
	arcTanh    0.5
204
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.
1447
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   274
	( arg asLargeFloat perform:op ) class == LargeFloat ifFalse:[
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   275
	    Transcript showCR:'warning: missing LargeFloat function: ' , op.
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   276
	].
204
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   277
1447
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   278
	self assert:( (arg perform:op) - (arg asLargeFloat perform:op) ) < 0.000001.
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   279
	self assert:( (arg perform:op) - (arg perform:op) asLargeFloat ) < 0.000001.
204
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 |
1447
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   291
	self assert:( num fractionPart + num truncated ) = num.
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   292
	self assert:( num fractionPart + num truncated ) class == num class.
204
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
1447
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   311
    self assert:( 0.4 asLargeFloat rounded ) class == SmallInteger.
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   312
    self assert:( 0.4 asLargeFloat rounded = 0 ).
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   313
    self assert:( 0.5 asLargeFloat rounded = 1 ).
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   314
    self assert:( 0.6 asLargeFloat rounded = 1 ).
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   315
    self assert:( -0.4 asLargeFloat rounded = 0 ).
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   316
    self assert:( -0.5 asLargeFloat rounded = -1 ).
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   317
    self assert:( -0.6 asLargeFloat rounded = -1 ).
204
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   318
1447
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   319
    self assert:( 0.4 asLargeFloat roundedAsFloat ) class == LargeFloat.
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   320
    self assert:( 0.4 asLargeFloat roundedAsFloat  = 0.0 ).
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   321
    self assert:( 0.5 asLargeFloat roundedAsFloat  = 1.0 ).
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   322
    self assert:( 0.6 asLargeFloat roundedAsFloat  = 1.0 ).
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   323
    self assert:( -0.4 asLargeFloat roundedAsFloat = 0 ).
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   324
    self assert:( -0.5 asLargeFloat roundedAsFloat = -1.0 ).
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   325
    self assert:( -0.6 asLargeFloat roundedAsFloat = -1.0 ).
204
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   326
1447
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   327
    self assert:( 0.4 truncated ) class == SmallInteger.
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   328
    self assert:( 0.4 truncated = 0 ).
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   329
    self assert:( 0.5 truncated = 0 ).
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   330
    self assert:( 0.6 truncated = 0 ).
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   331
    self assert:( -0.4 truncated = 0 ).
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   332
    self assert:( -0.5 truncated = 0 ).
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   333
    self assert:( -0.6 truncated = 0 ).
204
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   334
1447
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   335
    self assert:( 0.4 truncatedAsFloat ) class == Float.
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   336
    self assert:( 0.4 truncatedAsFloat  = 0.0 ).
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   337
    self assert:( 0.5 truncatedAsFloat  = 0.0 ).
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   338
    self assert:( 0.6 truncatedAsFloat  = 0.0 ).
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   339
    self assert:( -0.4 truncatedAsFloat = 0 ).
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   340
    self assert:( -0.5 truncatedAsFloat = 0.0 ).
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   341
    self assert:( -0.6 truncatedAsFloat = 0.0 ).
204
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   342
1447
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   343
    self assert:( 0.4 asShortFloat truncated ) class == SmallInteger.
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   344
    self assert:( 0.4 asShortFloat truncated = 0 ).
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   345
    self assert:( 0.5 asShortFloat truncated = 0 ).
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   346
    self assert:( 0.6 asShortFloat truncated = 0 ).
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   347
    self assert:( -0.4 asShortFloat truncated = 0 ).
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   348
    self assert:( -0.5 asShortFloat truncated = 0 ).
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   349
    self assert:( -0.6 asShortFloat truncated = 0 ).
204
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   350
1447
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   351
    self assert:( 0.4 asShortFloat truncatedAsFloat ) class == ShortFloat.
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   352
    self assert:( 0.4 asShortFloat truncatedAsFloat  = 0.0 ).
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   353
    self assert:( 0.5 asShortFloat truncatedAsFloat  = 0.0 ).
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   354
    self assert:( 0.6 asShortFloat truncatedAsFloat  = 0.0 ).
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   355
    self assert:( -0.4 asShortFloat truncatedAsFloat = 0 ).
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   356
    self assert:( -0.5 asShortFloat truncatedAsFloat = 0.0 ).
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   357
    self assert:( -0.6 asShortFloat truncatedAsFloat = 0.0 ).
204
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   358
1447
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   359
    self assert:( 0.4 asLargeFloat truncated ) class == SmallInteger.
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   360
    self assert:( 0.4 asLargeFloat truncated = 0 ).
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   361
    self assert:( 0.5 asLargeFloat truncated = 0 ).
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   362
    self assert:( 0.6 asLargeFloat truncated = 0 ).
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   363
    self assert:( -0.4 asLargeFloat truncated = 0 ).
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   364
    self assert:( -0.5 asLargeFloat truncated = 0 ).
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   365
    self assert:( -0.6 asLargeFloat truncated = 0 ).
204
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   366
1447
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   367
    self assert:( 0.4 asLargeFloat truncatedAsFloat ) class == LargeFloat.
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   368
    self assert:( 0.4 asLargeFloat truncatedAsFloat  = 0.0 ).
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   369
    self assert:( 0.5 asLargeFloat truncatedAsFloat  = 0.0 ).
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   370
    self assert:( 0.6 asLargeFloat truncatedAsFloat  = 0.0 ).
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   371
    self assert:( -0.4 asLargeFloat truncatedAsFloat = 0 ).
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   372
    self assert:( -0.5 asLargeFloat truncatedAsFloat = 0.0 ).
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   373
    self assert:( -0.6 asLargeFloat truncatedAsFloat = 0.0 ).
204
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
1447
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   381
"/    self assert:( 0.0 asLargeFloat exponent = 0 ).
204
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
1447
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   398
    self assert:( 0.0 asLargeFloat isZero ).
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   399
    self assert:( 1.0 asLargeFloat isZero not ).
204
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   400
1447
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   401
    self assert:( 0.0 asLargeFloat negative not ).
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   402
    self assert:( 1.0 asLargeFloat negative not ).
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   403
    self assert:( -1.0 asLargeFloat negative ).
204
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   404
1447
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   405
    self assert:( 0.0 asLargeFloat positive ).
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   406
    self assert:( 1.0 asLargeFloat positive ).
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   407
    self assert:( -1.0 asLargeFloat positive not ).
204
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   408
1447
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   409
    self assert:( 0.0 asLargeFloat strictlyPositive not ).
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   410
    self assert:( 1.0 asLargeFloat strictlyPositive ).
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   411
    self assert:( -1.0 asLargeFloat strictlyPositive not ).
204
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   412
1447
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   413
    self assert:( 0.0 asLargeFloat sign == 0 ).
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   414
    self assert:( 1.0 asLargeFloat sign == 1 ).
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   415
    self assert:( -1.0 asLargeFloat sign == -1 ).
204
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