--- a/Integer.st Wed Jan 23 10:08:55 2013 +0000
+++ b/Integer.st Mon Jan 28 21:53:19 2013 +0000
@@ -817,7 +817,6 @@
"
! !
-
!Integer class methodsFor:'prime numbers'!
flushPrimeCache
@@ -1140,7 +1139,6 @@
^ self == Integer
! !
-
!Integer methodsFor:'Compatibility-Dolphin'!
& aNumber
@@ -4112,6 +4110,64 @@
"
!
+nextMultipleOf: n
+ "return the multiple of n at or above the receiver.
+ Useful for padding."
+
+ |rest|
+
+ rest := self \\ n.
+ rest == 0 ifTrue:[ ^ self ].
+ ^ self + (n - rest)
+
+ "
+ 1 nextMultipleOf: 4
+ 2 nextMultipleOf: 4
+ 3 nextMultipleOf: 4
+ 4 nextMultipleOf: 4
+
+ 22 nextMultipleOf: 4
+ "
+!
+
+nextPowerOf2
+ "return the power of 2 at or above the receiver.
+ Useful for padding."
+
+ |x t sh|
+
+ x := self - 1.
+ x := x bitOr: (x bitShift: -1).
+ x := x bitOr: (x bitShift: -2).
+ x := x bitOr: (x bitShift: -4).
+ x := x bitOr: (x bitShift: -8).
+ x := x bitOr: (t := x bitShift: -16).
+ t == 0 ifFalse:[
+ sh := -32.
+ [
+ x := x bitOr: (t := x bitShift: sh).
+ sh := sh + sh.
+ ] doWhile: [t ~~ 0]
+ ].
+ ^ x + 1
+
+ "
+ 1 nextPowerOf2
+ 2 nextPowerOf2
+ 3 nextPowerOf2
+ 4 nextPowerOf2
+ 5 nextPowerOf2
+ 6 nextPowerOf2
+ 7 nextPowerOf2
+ 8 nextPowerOf2
+
+ 22 nextPowerOf2
+ 12 factorial nextPowerOf2 isPowerOf:2
+ 100 factorial nextPowerOf2 isPowerOf:2
+ 1000 factorial nextPowerOf2 isPowerOf:2
+ "
+!
+
nextPrime
"return the next prime after the receiver"
@@ -4176,7 +4232,6 @@
"Created: / 09-01-2012 / 17:18:06 / cg"
! !
-
!Integer methodsFor:'special modulu arithmetic'!
add_32:anInteger
@@ -4863,11 +4918,12 @@
!Integer class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libbasic/Integer.st,v 1.271 2012-11-04 15:05:51 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libbasic/Integer.st,v 1.273 2013-01-22 14:10:37 cg Exp $'
!
version_CVS
- ^ '$Header: /cvs/stx/stx/libbasic/Integer.st,v 1.271 2012-11-04 15:05:51 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libbasic/Integer.st,v 1.273 2013-01-22 14:10:37 cg Exp $'
! !
+
Integer initialize!