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