Nicolas Cellier uploaded a new version of Kernel to project The Trunk:
http://source.squeak.org/trunk/Kernel-nice.731.mcz ==================== Summary ==================== Name: Kernel-nice.731 Author: nice Time: 17 January 2013, 11:33:08.076 pm UUID: c4663029-f1b5-48e3-ae29-402076e50f8f Ancestors: Kernel-bf.730, Kernel-nice.730 merge nice+bf 730 =============== Diff against Kernel-bf.730 =============== Item was changed: ----- Method: Integer>>/ (in category 'arithmetic') ----- / aNumber "Refer to the comment in Number / " | quoRem | aNumber isInteger ifTrue: + [quoRem := self digitDiv: aNumber neg: self negative ~~ aNumber negative. - [quoRem := self digitDiv: aNumber abs "*****I've added abs here*****" - neg: self negative ~~ aNumber negative. (quoRem at: 2) = 0 ifTrue: [^ (quoRem at: 1) normalize] ifFalse: [^ (Fraction numerator: self denominator: aNumber) reduced]]. ^ aNumber adaptToInteger: self andSend: #/! Item was changed: ----- Method: Integer>>quo: (in category 'arithmetic') ----- quo: aNumber "Refer to the comment in Number quo: " | ng quo | aNumber isInteger ifTrue: [ng := self negative == aNumber negative == false. + quo := (self digitDiv: aNumber neg: ng) at: 1. - quo := (self digitDiv: - (aNumber class == SmallInteger - ifTrue: [aNumber abs] - ifFalse: [aNumber]) - neg: ng) at: 1. ^ quo normalize]. ^ aNumber adaptToInteger: self andSend: #quo:! Item was changed: ----- Method: LargePositiveInteger>>\\ (in category 'arithmetic') ----- \\ aNumber "Primitive. Take the receiver modulo the argument. The result is the remainder rounded towards negative infinity, of the receiver divided by the argument. Fail if the argument is 0. Fail if either the argument or the result is not a SmallInteger or a LargePositiveInteger less than 2-to-the-30th (1073741824). Optional. See Object documentation whatIsAPrimitive." <primitive: 31> aNumber isInteger ifTrue: [| neg qr q r | neg := self negative == aNumber negative == false. + qr := self digitDiv: aNumber neg: neg. - qr := (self digitDiv: - (aNumber class == SmallInteger - ifTrue: [aNumber abs] - ifFalse: [aNumber]) - neg: neg). q := qr first normalize. r := qr last normalize. ^(q negative ifTrue: [r isZero not] ifFalse: [q isZero and: [neg]]) ifTrue: [r + aNumber] ifFalse: [r]]. ^super \\ aNumber ! Item was removed: - ----- Method: LargePositiveInteger>>primitiveQuo: (in category 'private') ----- - primitiveQuo: anInteger - "Primitive. Divide the receiver by the argument and return the result. - Round the result down towards zero to make it a whole integer. Fail if - the argument is 0. Fail if either the argument or the result is not a - SmallInteger or a LargePositiveInteger less than 2-to-the-30th (1073741824). Optional. See - Object documentation whatIsAPrimitive." - - <primitive: 33> - ^nil! Item was changed: ----- Method: LargePositiveInteger>>rem: (in category 'arithmetic') ----- rem: aNumber "Remainder defined in terms of quo:. See super rem:. + This is defined only to speed up case of large integers." - This is defined only to speed up case of very large integers." + <primitive: 20> - (self primitiveQuo: aNumber) - ifNotNil: [:quo | ^self - (quo * aNumber)]. aNumber isInteger ifTrue: [| ng rem | ng := self negative == aNumber negative == false. + rem := (self digitDiv: aNumber neg: ng) at: 2. - rem := (self digitDiv: - (aNumber class == SmallInteger - ifTrue: [aNumber abs] - ifFalse: [aNumber]) - neg: ng) at: 2. ^ rem normalize]. ^super rem: aNumber! |
Free forum by Nabble | Edit this page |