RegressionTests__LargeFloatTest.st
author sr
Wed, 15 Nov 2017 16:41:47 +0100
changeset 1890 9367c7639c2d
parent 1828 44017f139f51
child 2248 55f846f2839b
permissions -rw-r--r--
removed not existing Class from project definition
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1828
44017f139f51 #BUGFIX by sr
sr
parents: 1775
diff changeset
     1
"{ Encoding: utf8 }"
44017f139f51 #BUGFIX by sr
sr
parents: 1775
diff changeset
     2
1447
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
     3
"{ Package: 'stx:goodies/regression' }"
204
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     4
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     5
"{ NameSpace: RegressionTests }"
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     6
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     7
TestCase subclass:#LargeFloatTest
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     8
	instanceVariableNames:''
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     9
	classVariableNames:''
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    10
	poolDictionaries:''
1070
3a47933aea21 category
Claus Gittinger <cg@exept.de>
parents: 204
diff changeset
    11
	category:'tests-Regression-Numbers'
204
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    12
!
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    13
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    14
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    15
!LargeFloatTest methodsFor:'helpers'!
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    16
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    17
actualPrecisionOf:aFloatClass
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    18
    "get the actual number of valid bits in the mantissa.
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    19
     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
    20
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    21
    |one half x count|
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    22
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    23
    one := aFloatClass unity.  "/ 1.0 in this class
1720
56c09596d753 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 1447
diff changeset
    24
    
56c09596d753 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 1447
diff changeset
    25
    "/ largefloats have infinite precition (potentially)
56c09596d753 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 1447
diff changeset
    26
    one precision isFinite ifFalse:[^ Infinity positive].
56c09596d753 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 1447
diff changeset
    27
    
204
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    28
    half := one coerce:0.5.
1447
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
    29
    x := one.
204
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    30
    count := 0.
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    31
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    32
    [ one + x ~= one] whileTrue:[
1720
56c09596d753 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 1447
diff changeset
    33
        x := x * half.
56c09596d753 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 1447
diff changeset
    34
        count := count + 1.
204
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    35
    ].
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    36
    ^ count
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    37
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    38
    "
1447
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
    39
     self basicNew actualPrecisionOf:ShortFloat
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
    40
     self basicNew actualPrecisionOf:Float
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
    41
     self basicNew actualPrecisionOf:LongFloat
204
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    42
    "
1720
56c09596d753 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 1447
diff changeset
    43
56c09596d753 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 1447
diff changeset
    44
    "Modified: / 10-10-2017 / 12:50:21 / cg"
204
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    45
! !
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    46
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    47
!LargeFloatTest methodsFor:'tests'!
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    48
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    49
test01_Nan
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    50
    "NaN in all avaliable formats."
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|
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    53
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    54
    shouldBeNaN := 0.0 asLargeFloat uncheckedDivide: 0.0.
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    55
    self assert:( shouldBeNaN isMemberOf:LargeFloat ).
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    56
    self assert:( shouldBeNaN isNaN ).
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    57
    self assert:( shouldBeNaN isFinite not ).
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    58
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    59
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    60
    shouldBeNaN := 0.0 asLargeFloat uncheckedDivide: 0.0.
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    61
    self assert:( shouldBeNaN asShortFloat isNaN ).
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    62
    self assert:( shouldBeNaN asLongFloat isNaN ).
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    63
    self should:[ shouldBeNaN asInteger ] raise:DomainError.
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    64
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    65
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    66
    self assert:( shouldBeNaN + 1 ) isNaN.
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    67
    self assert:( shouldBeNaN + 1.0 ) isNaN.
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    68
    self assert:( shouldBeNaN + 1.0 asShortFloat ) isNaN.
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    69
    self assert:( shouldBeNaN + 1.0 asLongFloat ) isNaN.
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    70
    self assert:( shouldBeNaN + 1.0 asLargeFloat ) isNaN.
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    71
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    72
    self assert:( 1 + shouldBeNaN ) isNaN.
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    73
    self assert:( 1.0 + shouldBeNaN ) isNaN.
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    74
    self assert:( 1.0 asShortFloat + shouldBeNaN ) isNaN.
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    75
    self assert:( 1.0 asLongFloat + shouldBeNaN ) isNaN.
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    76
    self assert:( 1.0 asLargeFloat + shouldBeNaN ) isNaN.
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    77
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    78
    self assert:( shouldBeNaN - 1 ) isNaN.
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    79
    self assert:( shouldBeNaN - 1.0 ) isNaN.
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    80
    self assert:( shouldBeNaN - 1.0 asShortFloat ) isNaN.
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    81
    self assert:( shouldBeNaN - 1.0 asLongFloat ) isNaN.
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    82
    self assert:( shouldBeNaN - 1.0 asLargeFloat ) isNaN.
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    83
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    84
    self assert:( 1 - shouldBeNaN ) isNaN.
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    85
    self assert:( 1.0 - shouldBeNaN ) isNaN.
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    86
    self assert:( 1.0 asShortFloat - shouldBeNaN ) isNaN.
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    87
    self assert:( 1.0 asLongFloat - shouldBeNaN ) isNaN.
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    88
    self assert:( 1.0 asLargeFloat - shouldBeNaN ) isNaN.
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    89
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    90
    "
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    91
     self basicNew test01_Nan
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    92
    "
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    93
!
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    94
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    95
test02_Inf
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    96
    "Infinity in all avaliable formats."
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    97
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    98
    |check posInf negInf|
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    99
1447
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   100
    check :=
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   101
	[:v1 :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
	    posInf := v1 uncheckedDivide: v2.
204
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   104
1447
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   105
	    self assert:( posInf isMemberOf:v1 class ).
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   106
	    self assert:( posInf isNaN not ).
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   107
	    self assert:( posInf isFinite not ).
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   108
	    self assert:( posInf isInfinite ).
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   109
	    self assert:( posInf positive ).
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   110
	    self assert:( posInf negative not ).
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   111
	    self assert:( posInf isNegativeInfinity not).
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   112
	    self assert:( posInf isPositiveInfinity ).
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
	    negInf := v1 negated uncheckedDivide: v2.
204
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   115
1447
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   116
	    self assert:( negInf isMemberOf:v1 class ).
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   117
	    self assert:( negInf isNaN not ).
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   118
	    self assert:( negInf isFinite not ).
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   119
	    self assert:( negInf isInfinite ).
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   120
	    self assert:( negInf positive not).
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   121
	    self assert:( negInf negative ).
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   122
	    self assert:( negInf isNegativeInfinity ).
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   123
	    self assert:( negInf isPositiveInfinity not ).
204
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   124
1447
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   125
	    self assert:( negInf + negInf = negInf).
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   126
	    self assert:( posInf + posInf = posInf).
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   127
	    self assert:( negInf + posInf) isNaN.
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   128
	    self assert:( posInf + negInf) isNaN.
204
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   129
1447
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   130
	    self assert:( negInf - posInf = negInf).
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   131
	    self assert:( negInf - negInf) isNaN.
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   132
	    self assert:( posInf - negInf = posInf).
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   133
	    self assert:( posInf - posInf) isNaN.
204
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   134
1447
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   135
	    self assert:( posInf + v1) = posInf.
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   136
	    self assert:( posInf - v1) = posInf.
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   137
	    self assert:( negInf + v1) = negInf.
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   138
	    self assert:( negInf - v1) = negInf.
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   139
	].
204
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   140
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   141
    check value: 1.0 asLargeFloat value: 0.0 asLargeFloat.
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   142
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   143
    "
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   144
     self basicNew test02_Inf
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   145
    "
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   146
!
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   147
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   148
test03_Conversion
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   149
    self assert:( 1.0 asLargeFloat asTrueFraction == 1 ).
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   150
    self assert:( 2.0 asLargeFloat asTrueFraction == 2 ).
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   151
    self assert:( 4.0 asLargeFloat asTrueFraction == 4 ).
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   152
    self assert:( 8.0 asLargeFloat asTrueFraction == 8 ).
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   153
    self assert:( 16.0 asLargeFloat asTrueFraction == 16 ).
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   154
    self assert:( 1048576.0 asLargeFloat asTrueFraction == 1048576 ).
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   155
    self assert:( 0.5 asLargeFloat asTrueFraction = (1/2) ).
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   156
    self assert:( 0.25 asLargeFloat asTrueFraction = (1/4) ).
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   157
    self assert:( 0.125 asLargeFloat asTrueFraction = (1/8) ).
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   158
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   159
    "
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   160
     self basicNew test03_Conversion
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   161
    "
1752
5c7c27613afe #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 1720
diff changeset
   162
5c7c27613afe #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 1720
diff changeset
   163
    "Modified: / 10-10-2017 / 15:27:24 / cg"
204
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   164
!
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   165
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   166
test04_Arithmetic
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 ) class == LargeFloat.
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   178
    self assert:( 1.0 asLargeFloat * 1.0 asShortFloat ) class == LargeFloat.
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   179
    self assert:( 1.0 asLargeFloat * 1.0 asFloat ) class == LargeFloat.
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   180
    self assert:( 1.0 asLargeFloat * 1 ) class == LargeFloat.
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   181
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   182
    self assert:( 1.0 asLargeFloat / 1.0 ) class == LargeFloat.
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   183
    self assert:( 1.0 asLargeFloat / 1.0 asShortFloat ) class == LargeFloat.
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   184
    self assert:( 1.0 asLargeFloat / 1.0 asFloat ) class == LargeFloat.
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   185
    self assert:( 1.0 asLargeFloat / 1 ) class == LargeFloat.
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   186
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   187
    self assert:( 1.0 asLargeFloat + 1.0 asLargeFloat) = 2.0 asLargeFloat.
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   188
    self assert:( 1.0 asLargeFloat + 0.0 asLargeFloat) = 1.0 asLargeFloat.
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   189
    self assert:( 1.0 asLargeFloat + 2.0 asLargeFloat) = 3.0 asLargeFloat.
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   190
    self assert:( 1.0 asLargeFloat + 3.0 asLargeFloat) = 4.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
    self assert:( 1.0 asLargeFloat + 2.0 asLargeFloat negated) = -1.0 asLargeFloat.
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   193
    self assert:( 1.0 asLargeFloat + -1.0 asLargeFloat negated) = 2.0 asLargeFloat.
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   194
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   195
    self assert:( 1.0 asLargeFloat - 1.0 asLargeFloat) = 0.0 asLargeFloat.
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   196
    self assert:( 1.0 asLargeFloat - 0.0 asLargeFloat) = 1.0 asLargeFloat.
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   197
    self assert:( 1.0 asLargeFloat - 2.0 asLargeFloat) = -1.0 asLargeFloat.
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   198
    self assert:( 1.0 asLargeFloat - 3.0 asLargeFloat) = -2.0 asLargeFloat.
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   199
    self assert:( 1.0 asLargeFloat - 1.0 asLargeFloat negated) = 2.0 asLargeFloat.
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   200
    self assert:( 1.0 asLargeFloat - 2.0 asLargeFloat negated) = 3.0 asLargeFloat.
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   201
    self assert:( 1.0 asLargeFloat - -1.0 asLargeFloat negated) = 0.0 asLargeFloat.
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   202
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   203
    self assert:( 1.0 asLargeFloat * 1.0 asLargeFloat) = 1.0 asLargeFloat.
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   204
    self assert:( 1.0 asLargeFloat * 0.0 asLargeFloat) = 0.0 asLargeFloat.
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   205
    self assert:( 1.0 asLargeFloat * 2.0 asLargeFloat) = 2.0 asLargeFloat.
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   206
    self assert:( 1.0 asLargeFloat * 3.0 asLargeFloat) = 3.0 asLargeFloat.
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   207
    self assert:( 2.0 asLargeFloat * 3.0 asLargeFloat) = 6.0 asLargeFloat.
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   208
    self assert:( 1.0 asLargeFloat * 1.0 asLargeFloat negated) = -1.0 asLargeFloat.
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   209
    self assert:( 1.0 asLargeFloat * 2.0 asLargeFloat negated) = -2.0 asLargeFloat.
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   210
    self assert:( 1.0 asLargeFloat * -1.0 asLargeFloat negated) = 1.0 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
    self assert:( 1.0 asLargeFloat / 1.0 asLargeFloat) = 1.0 asLargeFloat.
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   213
    self assert:( 1.0 asLargeFloat / 2.0 asLargeFloat) = 0.5 asLargeFloat.
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   214
    self assert:( 3.0 asLargeFloat / 2.0 asLargeFloat) = (3/2) asLargeFloat.
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
     self basicNew test04_Arithmetic
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   218
    "
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   219
!
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   220
1752
5c7c27613afe #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 1720
diff changeset
   221
test04b_Division
5c7c27613afe #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 1720
diff changeset
   222
    |epsilon|
5c7c27613afe #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 1720
diff changeset
   223
    
5c7c27613afe #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 1720
diff changeset
   224
"/    self assert:( 1.0 asLargeFloat / 1.0 ) class == LargeFloat.
5c7c27613afe #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 1720
diff changeset
   225
"/    self assert:( 1.0 asLargeFloat / 1.0 asShortFloat ) class == LargeFloat.
5c7c27613afe #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 1720
diff changeset
   226
"/    self assert:( 1.0 asLargeFloat / 1.0 asFloat ) class == LargeFloat.
5c7c27613afe #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 1720
diff changeset
   227
"/    self assert:( 1.0 asLargeFloat / 1 ) class == LargeFloat.
5c7c27613afe #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 1720
diff changeset
   228
"/
5c7c27613afe #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 1720
diff changeset
   229
"/    self assert:( 1.0 asLargeFloat / 1.0 asLargeFloat) = 1.0 asLargeFloat.
5c7c27613afe #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 1720
diff changeset
   230
"/    self assert:( 1.0 asLargeFloat / 2.0 asLargeFloat) = 0.5 asLargeFloat.
5c7c27613afe #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 1720
diff changeset
   231
"/    self assert:( 3.0 asLargeFloat / 2.0 asLargeFloat) = (3/2) asLargeFloat.
5c7c27613afe #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 1720
diff changeset
   232
5c7c27613afe #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 1720
diff changeset
   233
    self assert:( 0.25 asLargeFloat / 2.0 asLargeFloat) = 0.125 asLargeFloat.
5c7c27613afe #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 1720
diff changeset
   234
5c7c27613afe #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 1720
diff changeset
   235
    self assert:( 1.0 asLargeFloat / 2.0 asLargeFloat) = 0.5 asLargeFloat.
5c7c27613afe #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 1720
diff changeset
   236
    self assert:( 1.0 asLargeFloat / 4.0 asLargeFloat) = 0.25 asLargeFloat.
5c7c27613afe #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 1720
diff changeset
   237
    self assert:( 1.0 asLargeFloat / 8.0 asLargeFloat) = 0.125 asLargeFloat.
5c7c27613afe #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 1720
diff changeset
   238
5c7c27613afe #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 1720
diff changeset
   239
    "/ the precision of a largeInteger is the precision of its origin
5c7c27613afe #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 1720
diff changeset
   240
    epsilon := 1.0 asLargeFloat epsilon.
5c7c27613afe #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 1720
diff changeset
   241
    
5c7c27613afe #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 1720
diff changeset
   242
    self assert:(( 1.0 asLargeFloat / 5.0 asLargeFloat) isAlmostEqualTo:0.2 withError:epsilon).
5c7c27613afe #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 1720
diff changeset
   243
    self assert:(( 1.0 asLargeFloat / 10.0 asLargeFloat) isAlmostEqualTo:0.1 withError:epsilon).
5c7c27613afe #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 1720
diff changeset
   244
5c7c27613afe #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 1720
diff changeset
   245
    "/ the precision of a largeInteger is the precision of its origin
5c7c27613afe #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 1720
diff changeset
   246
    epsilon := 1.0 / (2 raisedTo:(LargeFloat defaultPrecision - 1)).
5c7c27613afe #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 1720
diff changeset
   247
    epsilon := 0.00000000000000001. "/ -- fails
5c7c27613afe #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 1720
diff changeset
   248
    epsilon := 0.0000000000000001.
5c7c27613afe #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 1720
diff changeset
   249
5c7c27613afe #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 1720
diff changeset
   250
    self assert:(( 1 asLargeFloat / 5 asLargeFloat) isAlmostEqualTo:0.2 withError:epsilon).
5c7c27613afe #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 1720
diff changeset
   251
    self assert:(( 1 asLargeFloat / 10 asLargeFloat) isAlmostEqualTo:0.1 withError:epsilon).
5c7c27613afe #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 1720
diff changeset
   252
5c7c27613afe #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 1720
diff changeset
   253
    "
5c7c27613afe #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 1720
diff changeset
   254
     self basicNew test04b_Division
5c7c27613afe #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 1720
diff changeset
   255
    "
5c7c27613afe #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 1720
diff changeset
   256
5c7c27613afe #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 1720
diff changeset
   257
    "Created: / 10-10-2017 / 15:13:28 / cg"
5c7c27613afe #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 1720
diff changeset
   258
!
5c7c27613afe #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 1720
diff changeset
   259
1775
68746cad01d9 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 1752
diff changeset
   260
test04c_Multiplication
68746cad01d9 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 1752
diff changeset
   261
    self assert:((1 asLargeFloat to:50 asLargeFloat) product) = (50 factorial)
68746cad01d9 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 1752
diff changeset
   262
68746cad01d9 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 1752
diff changeset
   263
    "
68746cad01d9 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 1752
diff changeset
   264
     self basicNew test04c_Multiplication
68746cad01d9 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 1752
diff changeset
   265
    "
68746cad01d9 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 1752
diff changeset
   266
68746cad01d9 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 1752
diff changeset
   267
    "Created: / 10-10-2017 / 16:22:56 / cg"
68746cad01d9 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 1752
diff changeset
   268
!
68746cad01d9 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 1752
diff changeset
   269
204
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   270
test05_Comparing
1828
44017f139f51 #BUGFIX by sr
sr
parents: 1775
diff changeset
   271
    |compiledMethod|
44017f139f51 #BUGFIX by sr
sr
parents: 1775
diff changeset
   272
204
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   273
    self assert:( 2.0 asLargeFloat = 2 ).
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   274
    self assert:( 2.0 asLargeFloat = 2.0 asShortFloat ).
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   275
    self assert:( 2.0 asLargeFloat = 2.0 ).
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   276
    self assert:( 2.0 asLargeFloat = 2.0 asLongFloat ).
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   277
    self assert:( 2.0 asLargeFloat = 2.0 asLargeFloat ).
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   278
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   279
    self assert:( 2.0 asLargeFloat = 3 ) not.
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   280
    self assert:( 2.0 asLargeFloat = 3.0 asShortFloat ) not.
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   281
    self assert:( 2.0 asLargeFloat = 3.0 ) not.
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   282
    self assert:( 2.0 asLargeFloat = 3.0 asLongFloat ) not.
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   283
    self assert:( 2.0 asLargeFloat = 3.0 asLargeFloat ) not.
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   284
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   285
    self assert:( 2.0 asLargeFloat < 3 ).
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   286
    self assert:( 2.0 asLargeFloat < 3.0 asShortFloat ).
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   287
    self assert:( 2.0 asLargeFloat < 3.0 asLargeFloat ).
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   288
1828
44017f139f51 #BUGFIX by sr
sr
parents: 1775
diff changeset
   289
    "/ test fails when stc code, jit code works
44017f139f51 #BUGFIX by sr
sr
parents: 1775
diff changeset
   290
    compiledMethod := self class compiledMethodAt:#'test05_Comparing'.
44017f139f51 #BUGFIX by sr
sr
parents: 1775
diff changeset
   291
    (compiledMethod notNil 
44017f139f51 #BUGFIX by sr
sr
parents: 1775
diff changeset
   292
    and:[compiledMethod byteCode isNil]) ifTrue:[ 
44017f139f51 #BUGFIX by sr
sr
parents: 1775
diff changeset
   293
        "/ stc-compiled code handles not slightly differently
44017f139f51 #BUGFIX by sr
sr
parents: 1775
diff changeset
   294
        "/ listed compares will fail
44017f139f51 #BUGFIX by sr
sr
parents: 1775
diff changeset
   295
        'LargeFloatTest >> test05_Comparing test with 200000000000000000000 or similiar are skipped due would fail when stc code' infoPrintCR.
44017f139f51 #BUGFIX by sr
sr
parents: 1775
diff changeset
   296
    ] ifFalse:[    
44017f139f51 #BUGFIX by sr
sr
parents: 1775
diff changeset
   297
        self assert:( 200000000000000000000.0 asLargeFloat < 200000000000100000000 ).
44017f139f51 #BUGFIX by sr
sr
parents: 1775
diff changeset
   298
        self assert:( 200000000000000000000 < 200001000000000000000.0 asLargeFloat ).
204
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   299
1828
44017f139f51 #BUGFIX by sr
sr
parents: 1775
diff changeset
   300
        self assert:( 200000000000000000000.0 asLargeFloat <= 200000000000000000001 ).
44017f139f51 #BUGFIX by sr
sr
parents: 1775
diff changeset
   301
        self assert:( 200000000000000000000.0 asLargeFloat <= 200000000000000000000 ).
44017f139f51 #BUGFIX by sr
sr
parents: 1775
diff changeset
   302
44017f139f51 #BUGFIX by sr
sr
parents: 1775
diff changeset
   303
        self assert:( 200000000000000000000 <= 200001000000000000000.0 asLargeFloat ).
44017f139f51 #BUGFIX by sr
sr
parents: 1775
diff changeset
   304
        self assert:( 200000000000000000000 <= 200000000000000000000.0 asLargeFloat ).  
44017f139f51 #BUGFIX by sr
sr
parents: 1775
diff changeset
   305
    ].
204
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   306
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   307
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   308
    self assert:( 2.0 asLargeFloat <= 3 ).
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   309
    self assert:( 2.0 asLargeFloat <= 2 ).
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   310
    self assert:( 2.0 asLargeFloat <= 3.0 asShortFloat ).
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   311
    self assert:( 2.0 asLargeFloat <= 2.0 asShortFloat ).
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   312
    self assert:( 2.0 asLargeFloat <= 3.0 asLongFloat ).
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   313
    self assert:( 2.0 asLargeFloat <= 2.0 asLongFloat ).
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   314
    self assert:( 2.0 asLargeFloat <= 3.0 asLargeFloat ).
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   315
    self assert:( 2.0 asLargeFloat <= 2.0 asLargeFloat ).
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   316
1752
5c7c27613afe #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 1720
diff changeset
   317
    1 to:1000 do:[:a |
5c7c27613afe #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 1720
diff changeset
   318
        0 to:a-1 do:[:b |
5c7c27613afe #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 1720
diff changeset
   319
            |fA fB|
5c7c27613afe #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 1720
diff changeset
   320
            
5c7c27613afe #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 1720
diff changeset
   321
            self assert:(b < a).
5c7c27613afe #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 1720
diff changeset
   322
            self assert:(b <= a).
5c7c27613afe #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 1720
diff changeset
   323
            self assert:(a > b).
5c7c27613afe #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 1720
diff changeset
   324
            self assert:(a >= b).
5c7c27613afe #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 1720
diff changeset
   325
            self assert:(a ~= b).
5c7c27613afe #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 1720
diff changeset
   326
            self assert:(a = b) not.
5c7c27613afe #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 1720
diff changeset
   327
5c7c27613afe #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 1720
diff changeset
   328
            fA := a asLargeFloat.
5c7c27613afe #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 1720
diff changeset
   329
            fB := b asLargeFloat.
5c7c27613afe #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 1720
diff changeset
   330
            self assert:(fB < fA).
5c7c27613afe #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 1720
diff changeset
   331
            self assert:(fB <= fA).
5c7c27613afe #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 1720
diff changeset
   332
            self assert:(fA > fB).
5c7c27613afe #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 1720
diff changeset
   333
            self assert:(fA >= fB).
5c7c27613afe #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 1720
diff changeset
   334
            self assert:(fA ~= fB).
5c7c27613afe #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 1720
diff changeset
   335
            self assert:(fA = fB) not.
5c7c27613afe #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 1720
diff changeset
   336
        ].
5c7c27613afe #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 1720
diff changeset
   337
    ].
5c7c27613afe #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 1720
diff changeset
   338
5c7c27613afe #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 1720
diff changeset
   339
    1 asLargeFloat to:1000 asLargeFloat do:[:fA |
5c7c27613afe #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 1720
diff changeset
   340
        0 asLargeFloat to:fA-1 do:[:fB |
5c7c27613afe #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 1720
diff changeset
   341
            self assert:(fB < fA).
5c7c27613afe #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 1720
diff changeset
   342
            self assert:(fB <= fA).
5c7c27613afe #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 1720
diff changeset
   343
            self assert:(fA > fB).
5c7c27613afe #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 1720
diff changeset
   344
            self assert:(fA >= fB).
5c7c27613afe #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 1720
diff changeset
   345
            self assert:(fA ~= fB).
5c7c27613afe #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 1720
diff changeset
   346
            self assert:(fA = fB) not.
5c7c27613afe #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 1720
diff changeset
   347
        ].
5c7c27613afe #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 1720
diff changeset
   348
    ].
5c7c27613afe #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 1720
diff changeset
   349
204
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   350
    "
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   351
     self basicNew test05_Comparing
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   352
    "
1752
5c7c27613afe #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 1720
diff changeset
   353
5c7c27613afe #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 1720
diff changeset
   354
    "Modified (format): / 10-10-2017 / 15:20:37 / cg"
204
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   355
!
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   356
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   357
test06_MiscMath
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   358
    #(
1720
56c09596d753 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 1447
diff changeset
   359
        sqrt       100000.0
56c09596d753 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 1447
diff changeset
   360
        sqrt       1000.0
56c09596d753 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 1447
diff changeset
   361
        sqrt       100.0
56c09596d753 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 1447
diff changeset
   362
        sqrt       100
56c09596d753 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 1447
diff changeset
   363
        sqrt       2.0
56c09596d753 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 1447
diff changeset
   364
        sqrt       1.0
56c09596d753 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 1447
diff changeset
   365
        sqrt       0.5
56c09596d753 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 1447
diff changeset
   366
        sqrt       0.0
56c09596d753 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 1447
diff changeset
   367
        
204
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   368
"/        exp        0.5
1720
56c09596d753 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 1447
diff changeset
   369
"/        ln         100.0
56c09596d753 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 1447
diff changeset
   370
"/        ln         10.0
204
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   371
"/        ln         0.5
1720
56c09596d753 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 1447
diff changeset
   372
        
56c09596d753 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 1447
diff changeset
   373
"/        log10      100.0
56c09596d753 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 1447
diff changeset
   374
"/        log10      10.0
204
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   375
"/        log10      0.5
1720
56c09596d753 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 1447
diff changeset
   376
204
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   377
"/        sin        0.5
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   378
"/        cos        0.5
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   379
"/        tan        0.5
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   380
"/        arcSin     0.5
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   381
"/        arcCos     0.5
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   382
"/        arcTan     0.5
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   383
1720
56c09596d753 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 1447
diff changeset
   384
        sinh       0.5
56c09596d753 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 1447
diff changeset
   385
        cosh       0.5
56c09596d753 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 1447
diff changeset
   386
        tanh       0.5
56c09596d753 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 1447
diff changeset
   387
"/        arcSinh    0.5
56c09596d753 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 1447
diff changeset
   388
"/        arcCosh    1.5
56c09596d753 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 1447
diff changeset
   389
"/        arcTanh    0.5
204
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   390
    ) pairWiseDo:[:op :arg |
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   391
"/        self assert:( arg asLargeFloat perform:op ) class == LargeFloat.
1720
56c09596d753 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 1447
diff changeset
   392
        ( arg asLargeFloat perform:op ) class == LargeFloat ifFalse:[
56c09596d753 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 1447
diff changeset
   393
            Transcript showCR:'warning: missing LargeFloat function: ' , op.
56c09596d753 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 1447
diff changeset
   394
        ].
204
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   395
1720
56c09596d753 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 1447
diff changeset
   396
        self assert:( (arg perform:op) - (arg asLargeFloat perform:op) ) < 0.000001.
56c09596d753 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 1447
diff changeset
   397
        self assert:( (arg perform:op) - (arg perform:op) asLargeFloat ) < 0.000001.
204
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   398
    ].
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
     self basicNew test06_MiscMath
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   402
    "
1720
56c09596d753 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 1447
diff changeset
   403
56c09596d753 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 1447
diff changeset
   404
    "Modified: / 10-10-2017 / 12:54:52 / cg"
204
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   405
!
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   406
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   407
test07_Truncation
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   408
    |check|
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   409
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   410
    check := [:num |
1447
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   411
	self assert:( num fractionPart + num truncated ) = num.
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   412
	self assert:( num fractionPart + num truncated ) class == num class.
204
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
    check value:1.6 asLargeFloat.
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   416
    check value:-1.6 asLargeFloat.
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
    self assert:( 1.6 asLargeFloat ceiling ) = 2.
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   420
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   421
    self assert:( 1.6 asLargeFloat ceilingAsFloat ) = 2.0 asLargeFloat.
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   422
    self assert:( 1.6 asLargeFloat ceilingAsFloat ) class == LargeFloat.
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   423
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   424
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   425
    self assert:( 1.6 asLargeFloat floor ) = 1.
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   426
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   427
    self assert:( 1.6 asLargeFloat floorAsFloat ) = 1.0 asLargeFloat.
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   428
    self assert:( 1.6 asLargeFloat floorAsFloat ) class == LargeFloat.
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   429
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.4 asLargeFloat rounded ) class == SmallInteger.
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   432
    self assert:( 0.4 asLargeFloat rounded = 0 ).
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   433
    self assert:( 0.5 asLargeFloat rounded = 1 ).
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   434
    self assert:( 0.6 asLargeFloat rounded = 1 ).
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   435
    self assert:( -0.4 asLargeFloat rounded = 0 ).
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   436
    self assert:( -0.5 asLargeFloat rounded = -1 ).
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   437
    self assert:( -0.6 asLargeFloat rounded = -1 ).
204
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   438
1447
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   439
    self assert:( 0.4 asLargeFloat roundedAsFloat ) class == LargeFloat.
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   440
    self assert:( 0.4 asLargeFloat roundedAsFloat  = 0.0 ).
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   441
    self assert:( 0.5 asLargeFloat roundedAsFloat  = 1.0 ).
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   442
    self assert:( 0.6 asLargeFloat roundedAsFloat  = 1.0 ).
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   443
    self assert:( -0.4 asLargeFloat roundedAsFloat = 0 ).
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   444
    self assert:( -0.5 asLargeFloat roundedAsFloat = -1.0 ).
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   445
    self assert:( -0.6 asLargeFloat roundedAsFloat = -1.0 ).
204
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   446
1447
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   447
    self assert:( 0.4 truncated ) class == SmallInteger.
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   448
    self assert:( 0.4 truncated = 0 ).
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   449
    self assert:( 0.5 truncated = 0 ).
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   450
    self assert:( 0.6 truncated = 0 ).
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   451
    self assert:( -0.4 truncated = 0 ).
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   452
    self assert:( -0.5 truncated = 0 ).
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   453
    self assert:( -0.6 truncated = 0 ).
204
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   454
1447
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   455
    self assert:( 0.4 truncatedAsFloat ) class == Float.
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   456
    self assert:( 0.4 truncatedAsFloat  = 0.0 ).
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   457
    self assert:( 0.5 truncatedAsFloat  = 0.0 ).
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   458
    self assert:( 0.6 truncatedAsFloat  = 0.0 ).
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   459
    self assert:( -0.4 truncatedAsFloat = 0 ).
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   460
    self assert:( -0.5 truncatedAsFloat = 0.0 ).
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   461
    self assert:( -0.6 truncatedAsFloat = 0.0 ).
204
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   462
1447
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   463
    self assert:( 0.4 asShortFloat truncated ) class == SmallInteger.
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   464
    self assert:( 0.4 asShortFloat truncated = 0 ).
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   465
    self assert:( 0.5 asShortFloat truncated = 0 ).
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   466
    self assert:( 0.6 asShortFloat truncated = 0 ).
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   467
    self assert:( -0.4 asShortFloat truncated = 0 ).
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   468
    self assert:( -0.5 asShortFloat truncated = 0 ).
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   469
    self assert:( -0.6 asShortFloat truncated = 0 ).
204
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   470
1447
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   471
    self assert:( 0.4 asShortFloat truncatedAsFloat ) class == ShortFloat.
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   472
    self assert:( 0.4 asShortFloat truncatedAsFloat  = 0.0 ).
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   473
    self assert:( 0.5 asShortFloat truncatedAsFloat  = 0.0 ).
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   474
    self assert:( 0.6 asShortFloat truncatedAsFloat  = 0.0 ).
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   475
    self assert:( -0.4 asShortFloat truncatedAsFloat = 0 ).
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   476
    self assert:( -0.5 asShortFloat truncatedAsFloat = 0.0 ).
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   477
    self assert:( -0.6 asShortFloat truncatedAsFloat = 0.0 ).
204
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   478
1447
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   479
    self assert:( 0.4 asLargeFloat truncated ) class == SmallInteger.
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   480
    self assert:( 0.4 asLargeFloat truncated = 0 ).
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   481
    self assert:( 0.5 asLargeFloat truncated = 0 ).
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   482
    self assert:( 0.6 asLargeFloat truncated = 0 ).
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   483
    self assert:( -0.4 asLargeFloat truncated = 0 ).
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   484
    self assert:( -0.5 asLargeFloat truncated = 0 ).
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   485
    self assert:( -0.6 asLargeFloat truncated = 0 ).
204
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   486
1447
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   487
    self assert:( 0.4 asLargeFloat truncatedAsFloat ) class == LargeFloat.
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   488
    self assert:( 0.4 asLargeFloat truncatedAsFloat  = 0.0 ).
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   489
    self assert:( 0.5 asLargeFloat truncatedAsFloat  = 0.0 ).
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   490
    self assert:( 0.6 asLargeFloat truncatedAsFloat  = 0.0 ).
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   491
    self assert:( -0.4 asLargeFloat truncatedAsFloat = 0 ).
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   492
    self assert:( -0.5 asLargeFloat truncatedAsFloat = 0.0 ).
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   493
    self assert:( -0.6 asLargeFloat truncatedAsFloat = 0.0 ).
204
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   494
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   495
    "
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   496
     self basicNew test07_Truncation
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   497
    "
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   498
!
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   499
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   500
test08_Representation
1752
5c7c27613afe #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 1720
diff changeset
   501
    self assert:( LargeFloat new
5c7c27613afe #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 1720
diff changeset
   502
                    mantissa:1 exponent:1) printString = '2.0'.
5c7c27613afe #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 1720
diff changeset
   503
5c7c27613afe #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 1720
diff changeset
   504
    self assert:( 0.0 asLargeFloat mantissa == 0).
5c7c27613afe #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 1720
diff changeset
   505
    self assert:( 0.0 asLargeFloat exponent == 0).
5c7c27613afe #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 1720
diff changeset
   506
5c7c27613afe #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 1720
diff changeset
   507
    self assert:( 1.0 asLargeFloat mantissa == 1).
5c7c27613afe #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 1720
diff changeset
   508
    self assert:( 1.0 asLargeFloat exponent == 0).
5c7c27613afe #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 1720
diff changeset
   509
5c7c27613afe #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 1720
diff changeset
   510
    self assert:( 2.0 asLargeFloat mantissa == 1).
5c7c27613afe #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 1720
diff changeset
   511
    self assert:( 2.0 asLargeFloat exponent == 1).
5c7c27613afe #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 1720
diff changeset
   512
5c7c27613afe #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 1720
diff changeset
   513
    self assert:( 4.0 asLargeFloat mantissa == 1).
5c7c27613afe #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 1720
diff changeset
   514
    self assert:( 4.0 asLargeFloat exponent == 2).
5c7c27613afe #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 1720
diff changeset
   515
5c7c27613afe #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 1720
diff changeset
   516
    self assert:( 5.0 asLargeFloat mantissa == 5).
5c7c27613afe #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 1720
diff changeset
   517
    self assert:( 5.0 asLargeFloat exponent == 0).
5c7c27613afe #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 1720
diff changeset
   518
5c7c27613afe #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 1720
diff changeset
   519
    self assert:( 7.0 asLargeFloat mantissa == 7).
5c7c27613afe #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 1720
diff changeset
   520
    self assert:( 7.0 asLargeFloat exponent == 0).
5c7c27613afe #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 1720
diff changeset
   521
5c7c27613afe #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 1720
diff changeset
   522
    self assert:( 14.0 asLargeFloat mantissa == 7).
5c7c27613afe #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 1720
diff changeset
   523
    self assert:( 14.0 asLargeFloat exponent == 1).
5c7c27613afe #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 1720
diff changeset
   524
5c7c27613afe #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 1720
diff changeset
   525
    self assert:( 0.5 asLargeFloat mantissa == 1).
5c7c27613afe #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 1720
diff changeset
   526
    self assert:( 0.5 asLargeFloat exponent == -1).
5c7c27613afe #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 1720
diff changeset
   527
5c7c27613afe #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 1720
diff changeset
   528
    self assert:( 0.25 asLargeFloat mantissa == 1).
5c7c27613afe #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 1720
diff changeset
   529
    self assert:( 0.25 asLargeFloat exponent == -2).
204
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   530
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   531
    "
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   532
     self basicNew test08_Representation
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   533
    "
1752
5c7c27613afe #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 1720
diff changeset
   534
5c7c27613afe #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 1720
diff changeset
   535
    "Modified (format): / 10-10-2017 / 15:28:08 / cg"
204
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   536
!
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   537
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   538
test09_Testing
1447
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   539
    self assert:( 0.0 asLargeFloat isZero ).
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   540
    self assert:( 1.0 asLargeFloat isZero not ).
204
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   541
1447
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   542
    self assert:( 0.0 asLargeFloat negative not ).
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   543
    self assert:( 1.0 asLargeFloat negative not ).
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   544
    self assert:( -1.0 asLargeFloat negative ).
204
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   545
1447
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   546
    self assert:( 0.0 asLargeFloat positive ).
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   547
    self assert:( 1.0 asLargeFloat positive ).
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   548
    self assert:( -1.0 asLargeFloat positive not ).
204
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   549
1447
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   550
    self assert:( 0.0 asLargeFloat strictlyPositive not ).
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   551
    self assert:( 1.0 asLargeFloat strictlyPositive ).
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   552
    self assert:( -1.0 asLargeFloat strictlyPositive not ).
204
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   553
1447
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   554
    self assert:( 0.0 asLargeFloat sign == 0 ).
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   555
    self assert:( 1.0 asLargeFloat sign == 1 ).
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1070
diff changeset
   556
    self assert:( -1.0 asLargeFloat sign == -1 ).
204
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   557
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   558
    "
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   559
     self basicNew test09_Testing
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   560
    "
1775
68746cad01d9 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 1752
diff changeset
   561
!
68746cad01d9 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 1752
diff changeset
   562
68746cad01d9 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 1752
diff changeset
   563
test10_Printing
68746cad01d9 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 1752
diff changeset
   564
    |fac50|
68746cad01d9 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 1752
diff changeset
   565
68746cad01d9 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 1752
diff changeset
   566
    fac50 := (1 asLargeFloat to:50 asLargeFloat) product.
68746cad01d9 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 1752
diff changeset
   567
    self assert:(fac50 printString = (50 factorial printString , '.0'))
68746cad01d9 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 1752
diff changeset
   568
    
68746cad01d9 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 1752
diff changeset
   569
    "
68746cad01d9 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 1752
diff changeset
   570
     self basicNew test10_Printing
68746cad01d9 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 1752
diff changeset
   571
    "
68746cad01d9 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 1752
diff changeset
   572
68746cad01d9 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 1752
diff changeset
   573
    "Created: / 10-10-2017 / 16:22:15 / cg"
204
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   574
! !
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   575
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   576
!LargeFloatTest class methodsFor:'documentation'!
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   577
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   578
version
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   579
    ^ '$Header$'
1775
68746cad01d9 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 1752
diff changeset
   580
!
68746cad01d9 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 1752
diff changeset
   581
68746cad01d9 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 1752
diff changeset
   582
version_CVS
68746cad01d9 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 1752
diff changeset
   583
    ^ '$Header$'
204
7a02eaf7f06b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   584
! !
1070
3a47933aea21 category
Claus Gittinger <cg@exept.de>
parents: 204
diff changeset
   585