--- a/LargeInteger.st Tue Sep 25 16:10:35 2007 +0200
+++ b/LargeInteger.st Tue Sep 25 17:53:36 2007 +0200
@@ -1686,18 +1686,23 @@
Return the result of 'anInteger - self'. The argument must be a SmallInteger."
anInteger > 0 ifTrue:[
- sign > 0 ifTrue:[
- ^ self absFastMinus:anInteger sign:-1
- ].
- ^ self absFastPlus:anInteger sign:1
+ sign > 0 ifTrue:[
+ ^ self absFastMinus:anInteger sign:-1
+ ].
+ ^ self absFastPlus:anInteger sign:1
].
anInteger == 0 ifTrue:[
- ^ self negated
+ ^ self negated
].
sign > 0 ifTrue:[
- ^ self absFastPlus:anInteger negated sign:-1
+ ^ self absFastPlus:anInteger negated sign:-1
].
- ^ self absFastMinus:anInteger sign:-1
+
+ self > anInteger ifTrue:[
+ ^ self absFastMinus:anInteger asLargeInteger sign:-1
+ ] ifFalse:[
+ ^ anInteger asLargeInteger absFastMinus:self sign:-1
+ ].
"
12345678901234567890
@@ -4576,5 +4581,5 @@
!LargeInteger class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libbasic/LargeInteger.st,v 1.186 2007-09-25 13:58:09 sr Exp $'
+ ^ '$Header: /cvs/stx/stx/libbasic/LargeInteger.st,v 1.187 2007-09-25 15:53:36 sr Exp $'
! !