[squeak-dev] The Trunk: Kernel-nice.1282.mcz
Nicolas Cellier
nicolas.cellier.aka.nice at gmail.com
Fri Nov 22 16:59:22 UTC 2019
Additional notes:
The signBit of real part is preserved as long as imaginary prints with sign
-.
The signBit of imaginary part is not preserved.
(Complex real: -0.0 imaginary: -0.0) -> (-0.0 - 0.0i) -> (-0.0 + 0.0 i) ->
(0.0 + 0.0 i)
(Complex real: -0.0 imaginary: 0.0) -> (-0.0 + 0.0 i) -> ( 0.0 + 0.0 i)
(Complex real: 0.0 imaginary: -0.0) -> (0.0 - 0.0 i) -> ( 0.0 + 0.0 i)
In Smallapack, where I had to print and re-interpret large complex
matrices, i had to introduce selector (0.0 i: -0.0).
1. it is more efficient than arithmetic (which counts for large matrices)
2. it preserves the datas (as well as Number printString can preserve)
While 1 + 2 i can look nice and appealing, it gets quite nasty properties
regarding above points...
Le ven. 22 nov. 2019 à 17:54, <commits at source.squeak.org> a écrit :
> Nicolas Cellier uploaded a new version of Kernel to project The Trunk:
> http://source.squeak.org/trunk/Kernel-nice.1282.mcz
>
> ==================== Summary ====================
>
> Name: Kernel-nice.1282
> Author: nice
> Time: 22 November 2019, 5:54:28.478745 pm
> UUID: 70d4bc61-04e8-4cfd-befb-1b23f3f13953
> Ancestors: Kernel-mt.1281
>
> Let complex print the correct signBit of its imaginary part in case of
> negativeZero.
>
> Note: the signBit are not preserved upon reinterpretation.
> That's a problem of representation via arithmetic operation 1 + 2 i
> because we have this
> 0.0 - 0.0 -> 0.0
> 0.0 + (-0.0) -> 0.0
> (-0.0) + (-0.0) -> -0.0
> (-0.0) - 0.0 -> -0.0
>
> =============== Diff against Kernel-mt.1281 ===============
>
> Item was changed:
> ----- Method: Complex>>printOn: (in category 'printing') -----
> printOn: aStream
> real printOn: aStream.
> aStream nextPut: Character space.
> + imaginary signBit = 0
> - 0 <= imaginary
> ifTrue: [aStream nextPut: $+]
> ifFalse: [aStream nextPut: $-].
> aStream nextPut: Character space.
> imaginary abs printOn: aStream.
> aStream nextPut: Character space.
> aStream nextPut: $i
> !
>
> Item was changed:
> ----- Method: Complex>>printOn:showingDecimalPlaces: (in category
> 'printing') -----
> printOn: aStream showingDecimalPlaces: placesDesired
> real printOn: aStream showingDecimalPlaces: placesDesired.
> aStream nextPut: Character space.
> + imaginary signBit = 0
> - 0 <= imaginary
> ifTrue: [aStream nextPut: $+]
> ifFalse: [aStream nextPut: $-].
> aStream nextPut: Character space.
> imaginary abs printOn: aStream showingDecimalPlaces: placesDesired.
> aStream nextPut: Character space.
> aStream nextPut: $i
> !
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.squeakfoundation.org/pipermail/squeak-dev/attachments/20191122/b3127146/attachment.html>
More information about the Squeak-dev
mailing list
|