[Pkg] The Trunk: Kernel-nice.1259.mcz
commits at source.squeak.org
commits at source.squeak.org
Tue Aug 20 08:58:58 UTC 2019
Nicolas Cellier uploaded a new version of Kernel to project The Trunk:
http://source.squeak.org/trunk/Kernel-nice.1259.mcz
==================== Summary ====================
Name: Kernel-nice.1259
Author: nice
Time: 20 August 2019, 10:58:50.044539 am
UUID: fcd050cd-0337-8f4c-a1c3-b04d0eef3b0a
Ancestors: Kernel-nice.1258
Accelerate mixed Integer/Fraction comparison.
Implementation note: we can assume that Fraction are properly reduced, failing to do so is programmer responsibility.
If someone cheat by using numerator:denominator: instead of / to avoid a costly gcd:, then someone will care to not get caught.
=============== Diff against Kernel-nice.1258 ===============
Item was changed:
----- Method: Fraction>>= (in category 'comparing') -----
= aNumber
aNumber isNumber ifFalse: [^ false].
+ aNumber isInteger ifTrue: ["If properly reduced, self cannot be an Integer" ^ false].
aNumber isFraction
+ ifTrue: ["Assume that both Fraction are reduced"
+ ^ numerator = aNumber numerator and:
+ [denominator = aNumber denominator]].
- ifTrue: [numerator = 0 ifTrue: [^ aNumber numerator = 0].
- ^ (numerator * aNumber denominator) =
- (aNumber numerator * denominator)
- "Note: used to just compare num and denom,
- but this fails for improper fractions"].
^ aNumber adaptToFraction: self andCompare: #=!
Item was added:
+ ----- Method: Fraction>>adaptToInteger:andCompare: (in category 'converting') -----
+ adaptToInteger: rcvr andCompare: selector
+ "Assuming that self is properly reduced, it cannot be an Integer"
+ selector == #= ifTrue: [^false].
+ selector == #~= ifTrue: [^true].
+ "Inequality: avoid division with this transformation:
+ rcvr op: (num/den)
+ rcvr - (num/den) op: 0
+ rcvr*den op: num"
+ ^rcvr * denominator perform: selector with: numerator!
More information about the Packages
mailing list