'From etoys3.0 of 24 February 2008 [latest update: #2081] on 23 August 2008 at 12:37:22 am'! "Change Set: removeScaledDecimal Date: 22 August 2008 Author: Yoshiki Ohshima This changeset removes the ScaledDecimal altogether. Number>>fractionPart and Number>>integerPart are made to use the Float implementation. Number>>raisedToInteger:, Number>>reciprocal, Float>>reciprocal, Float>>sqrt, Float>>reciprocal, Integer>>// are reverted as they are comment changes or error reporting scheme change. "! !Number methodsFor: 'truncation and round off' stamp: 'yo 8/22/2008 16:48'! fractionPart ^ self asFloat fractionPart. ! ! !Number methodsFor: 'truncation and round off' stamp: 'yo 8/22/2008 16:48'! integerPart ^ self asFloat integerPart! ! !Number methodsFor: 'mathematical'! raisedToInteger: anInteger "Answer the receiver raised to the power anInteger where the argument must be a kind of Integer. This is a special case of raisedTo:." (anInteger isInteger) ifFalse: [^self error: 'raisedToInteger: only works for integral arguments']. anInteger = 0 ifTrue: [^1]. anInteger = 1 ifTrue: [^self]. anInteger > 1 ifTrue: [^(self * self raisedToInteger: anInteger // 2) * (self raisedToInteger: anInteger \\ 2)]. ^(self raisedToInteger: anInteger negated) reciprocal! ! !Number methodsFor: 'mathematical'! reciprocal "Answer 1 divided by the receiver. Create an error notification if the receiver is 0." self = 0 ifTrue: [^self error: 'zero has no reciprocal'] ifFalse: [^1 / self]! ! !Float methodsFor: 'mathematical'! reciprocal ^ 1.0 / self! ! !Float methodsFor: 'mathematical'! sqrt "Answer the square root of the receiver. Optional. See Object documentation whatIsAPrimitive." | exp guess eps delta | "Newton-Raphson" self <= 0.0 ifTrue: [ self = 0.0 ifTrue: [^ 0.0] ifFalse: [^ self error: 'sqrt is invalid for x < 0']]. "first guess is half the exponent" exp _ self exponent // 2. guess _ self timesTwoPower: (0 - exp). "get eps value" eps _ guess * Epsilon. eps _ eps * eps. delta _ (self - (guess * guess)) / (guess * 2.0). [(delta * delta) > eps] whileTrue: [ guess _ guess + delta. delta _ (self - (guess * guess)) / (guess * 2.0)]. ^ guess! ! !Fraction methodsFor: 'mathematical'! reciprocal "Refer to the comment in Number|reciprocal." numerator = 0 ifTrue: [self error: '0 has no reciprocal']. numerator = 1 ifTrue: [^denominator]. numerator = -1 ifTrue: [^denominator negated]. ^Fraction numerator: denominator denominator: numerator! ! !Integer methodsFor: 'mathematical'! // aNumber | q | aNumber = 0 ifTrue: [^self error: 'division by 0']. self = 0 ifTrue: [^0]. q _ self quo: aNumber "Refer to the comment in Number|//.". (q negative ifTrue: [q * aNumber ~= self] ifFalse: [q = 0 and: [self negative ~= aNumber negative]]) ifTrue: [^q - 1"Truncate towards minus infinity"] ifFalse: [^q]! ! "Postscript: Leave the line above, and replace the rest of this comment by a useful one. Executable statements should follow this comment, and should be separated by periods, with no exclamation points (!!). Be sure to put any further comments in double-quotes, like this one." Float removeSelector: #printPaddedWith:to:. Integer removeSelector: #printPaddedWith:to:. Number removeSelector: #asFloatD. Number removeSelector: #asFloatE. Number removeSelector: #asFloatQ. Number removeSelector: #adaptToScaledDecimal:andSend:. Float removeSelector: #adaptToScaledDecimal:andSend:. Number removeSelector: #asScaledDecimal:. Fraction removeSelector: #adaptToScaledDecimal:andSend:. Integer removeSelector: #adaptToScaledDecimal:andSend:. Integer removeSelector: #printOn:base:showRadix:. Integer removeSelector: #printPaddedWith:to:. Integer removeSelector: #printStringRadix:. Integer removeSelector: #printPaddedWith:to:base:. Integer removeSelector: #asScaledDecimal:. Number removeSelector: #asScaledDecimal:. Float removeSelector: #adaptToScaledDecimal:andSend:. Fraction removeSelector: #adaptToScaledDecimal:andSend:. Character class removeSelector: #codePoint:. Character removeSelector: #codePoint. Fraction class removeSelector: #one. Float class removeSelector: #one. Integer class removeSelector: #one. BlockContext removeSelector: #argumentCount. Smalltalk removeClassNamed: #RuleDate. Smalltalk removeClassNamed: #RuleIndexDate. Smalltalk removeClassNamed: #RuleSelectionCodeDate. Smalltalk removeClassNamed: #ScaledDecimal. !