[squeak-dev] Re: Hello list
Rodney Polkinghorne
rodneyp at physics.uq.edu.au
Tue May 3 03:25:54 UTC 2011
Bert Freudenberg, replying to me on Wed, 20 Apr:
>> Someone must have been there before; Number currently
>> accepts an #argument message, and answers 0 or pi according to sign.
>> I think everything that knows its modulus and argument should know its
>> real and imaginary parts.
> That would be trivial to add to Number.
See changeset below.
> What else do you think is missing?
That's all I've found so far. In my image, I'll add anything whose
absence requires me to write "+0i".
>> I found that, tried it, and got sick of saying "0 asComplex" in about
>> two minutes.
> So why don't you write 0i instead of "0 asComplex"?
It was actually "z asComplex" in the method "foo:", so that "foo: 0"
would work. I think "foo: 0i" looks tricky.
Rodney
'From Squeak4.2 of 4 February 2011 [latest update: #10966] on 3 May
2011 at 1:03:49 pm'!
!Number methodsFor: 'arithmetic' stamp: 'RESP 4/19/2011 11:23'!
imaginary
"Answer the imaginary part of the receiver (see Complex | imaginary)."
^ self * 0! !
!Number methodsFor: 'arithmetic' stamp: 'RESP 4/19/2011 11:22'!
real
"Answer the real part of the receiver (see Complex | real)."
^ self! !
!TestCase methodsFor: 'accessing' stamp: 'RESP 4/19/2011 11:49'!
assert: aValue fixedPointOf: aMethod
aValue = (aValue perform: aMethod)
ifFalse: [self signalFailure: 'Assertion failed'].
! !
!ComplexTest methodsFor: 'tests' stamp: 'RESP 5/3/2011 13:02'!
testCreation
"self run: #testCreation"
| c |
c := 5 i.
self assert: (c real = 0).
self assert: (c imaginary = 5).
c := 6 + 7 i.
self assert: (c real = 6).
self assert: ( c imaginary = 7).
c := 5.6 - 8 i.
self assert: (c real = 5.6).
self assert: (c imaginary = -8).
c := Complex real: 10 imaginary: 5.
self assert: (c real = 10).
self assert: (c imaginary = 5).
c := Complex abs: 5 arg: (Float pi/2).
self assert: (c real rounded = 0).
self assert: (c imaginary = 5).
"The real and imaginary methods work, for negative, zero, and
positive Numbers of all kinds."
"Float"
self assert: 0.0 fixedPointOf: #real.
self assert: 0.0 imaginary = 0.
self assert: Float pi fixedPointOf: #real.
self assert: Float pi imaginary = 0.
self assert: Float pi negated fixedPointOf: #real.
self assert: Float pi negated imaginary = 0.
"Fraction"
self assert: (2/5) fixedPointOf: #real.
self assert: (2/5) imaginary = 0.
self assert: (-2/5) fixedPointOf: #real.
self assert: (-2/5) imaginary = 0.
"SmallInteger"
self assert: 0 fixedPointOf: #real.
self assert: 0 imaginary = 0.
self assert: 42 fixedPointOf: #real.
self assert: 42 imaginary = 0.
self assert: -42 fixedPointOf: #real.
self assert: -42 imaginary = 0.
"LargePositiveInteger"
self assert: ((2 raisedTo: 100) isMemberOf: LargePositiveInteger).
self assert: (2 raisedTo: 100) fixedPointOf: #real.
self assert: (2 raisedTo: 100) imaginary = 0.
"LargeNegativeInteger"
self assert: ((2 raisedTo: 100) negated isMemberOf: LargeNegativeInteger).
self assert: (2 raisedTo: 100) negated fixedPointOf: #real.
self assert: (2 raisedTo: 100) negated imaginary = 0.
! !
More information about the Squeak-dev
mailing list
|