[Pkg] The Trunk: Kernelnice.634.mcz
commits at source.squeak.org
commits at source.squeak.org
Thu Oct 13 22:35:23 UTC 2011
Nicolas Cellier uploaded a new version of Kernel to project The Trunk:
http://source.squeak.org/trunk/Kernelnice.634.mcz
==================== Summary ====================
Name: Kernelnice.634
Author: nice
Time: 14 October 2011, 12:34:15.894 am
UUID: ec28e2e7ee3e41a99eeddd75acc1a7cf
Ancestors: Kerneleem.633
Move Complex conversion (#asComplex #adaptToComplex:andSend:) one level upper in Number.
Use squared where possible in Complex.
=============== Diff against Kerneleem.633 ===============
Item was changed:
 Method: Complex>>raisedToInteger: (in category 'mathematical functions') 
raisedToInteger: operand
"Answer the receiver raised to the power operand, an Integer."
"implementation note: this code is copied from Number.
This suggest that both Number and Complex should have an
ArithmeticValue common superclass like in Visualworks.
Or maybe should it be a Traits (a property of fields ?)"
 count result 
operand isInteger ifFalse: [^ ArithmeticError signal: 'parameter is not an Integer'].
operand = 0 ifTrue: [^ self class one].
operand = 1 ifTrue: [^ self].
operand < 0 ifTrue: [^ (self raisedToInteger: operand negated) reciprocal].
count := 1 bitShift: (operand1) highBit.
result := self class one.
[count > 0]
whileTrue:
+ [result := result squared.
 [result := result * result.
(operand bitAnd: count)
= 0 ifFalse: [result := result * self].
count := count bitShift: 1].
^ result!
Item was removed:
  Method: Float>>adaptToComplex:andSend: (in category 'converting') 
 adaptToComplex: rcvr andSend: selector
 "If I am involved in arithmetic with a Complex number, convert me to a Complex number."
 ^ rcvr perform: selector with: self asComplex!
Item was removed:
  Method: Float>>asComplex (in category 'converting') 
 asComplex
 "Answer a Complex number that represents value of the the receiver."

 ^ Complex real: self imaginary: 0!
Item was removed:
  Method: Fraction>>adaptToComplex:andSend: (in category 'converting') 
 adaptToComplex: rcvr andSend: selector
 "If I am involved in arithmetic with a Complex number, convert me to a Complex number."
 ^ rcvr perform: selector with: self asComplex!
Item was removed:
  Method: Fraction>>asComplex (in category 'converting') 
 asComplex
 "Answer a Complex number that represents value of the the receiver."

 ^ Complex real: self imaginary: 0!
Item was removed:
  Method: Integer>>adaptToComplex:andSend: (in category 'converting') 
 adaptToComplex: rcvr andSend: selector
 "If I am involved in arithmetic with a Complex number, convert me to a Complex number."
 ^ rcvr perform: selector with: self asComplex!
Item was removed:
  Method: Integer>>asComplex (in category 'converting') 
 asComplex
 "Answer a Complex number that represents value of the the receiver."

 ^ Complex real: self imaginary: 0!
Item was added:
+  Method: Number>>adaptToComplex:andSend: (in category 'converting') 
+ adaptToComplex: rcvr andSend: selector
+ "If I am involved in arithmetic with a Complex number, convert me to a Complex number."
+ ^ rcvr perform: selector with: self asComplex!
Item was added:
+  Method: Number>>asComplex (in category 'converting') 
+ asComplex
+ "Answer a Complex number that represents value of the the receiver."
+
+ ^ Complex real: self imaginary: 0!
More information about the Packages
mailing list