# [Pkg] The Trunk: Kernel-nice.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/Kernel-nice.634.mcz

==================== Summary ====================

Name: Kernel-nice.634
Author: nice
Time: 14 October 2011, 12:34:15.894 am
UUID: ec28e2e7-ee3e-41a9-9eed-dd75acc1a7cf
Ancestors: Kernel-eem.633

Move Complex conversion (#asComplex #adaptToComplex:andSend:) one level upper in Number.
Use squared where possible in Complex.

=============== Diff against Kernel-eem.633 ===============

Item was changed:
----- Method: Complex>>raisedToInteger: (in category 'mathematical functions') -----
raisedToInteger: operand

"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: (operand-1) 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') -----
- 	"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') -----
- 	"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') -----
- 	"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!

+ ----- Method: Number>>adaptToComplex:andSend: (in category 'converting') -----
+ 	"If I am involved in arithmetic with a Complex number, convert me to a Complex number."
+ 	^ rcvr perform: selector with: self asComplex!