[squeak-dev] The Inbox: Kernel-ul.530.mcz

commits at source.squeak.org commits at source.squeak.org
Sat Dec 25 05:00:08 UTC 2010


A new version of Kernel was added to project The Inbox:
http://source.squeak.org/inbox/Kernel-ul.530.mcz

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

Name: Kernel-ul.530
Author: ul
Time: 25 December 2010, 4:55:27.167 am
UUID: aa46581d-c74f-7a48-b604-6371b5b21730
Ancestors: Kernel-ar.529

- fix: reverted Float >> #arcTan: and added the primitive to that version, because it contained a bugfix. See FloatTest >> #testArcTan.
- use #isInfinite for infinity checking in Float >> #sin and Float >> #cos

=============== Diff against Kernel-ar.529 ===============

Item was changed:
  ----- Method: Float>>arcTan: (in category 'mathematical functions') -----
  arcTan: denominator
  	"Answer the angle in radians.
+ 	 Optional. See Object documentation whatIsAPrimitive.
+ 	Implementation note: use sign in order to catch cases of negativeZero"
+ 
- 	 Optional. See Object documentation whatIsAPrimitive."
- 	| result |
  	<primitive: 'primitiveArcTan2' module: 'FloatMathPlugin'>
+ 	self isNaN ifTrue:[
+ 		SignalNaN ifTrue:[ NaNError signal ].
+ 		^self].
+ 	denominator isNaN ifTrue:[
+ 		SignalNaN ifTrue: [ NaNError signal ].
+ 		^denominator ].
+ 	^self = 0.0
+ 		ifTrue: [denominator sign >= 0
+ 			ifTrue: [ 0 ]
+ 			ifFalse: [ self sign >= 0
+ 				ifTrue: [ Pi ]
+ 				ifFalse: [ Pi negated ]]]
+ 		ifFalse: [denominator = 0.0
+ 			ifTrue: [self > 0.0
+ 				ifTrue: [ Halfpi ]
+ 				ifFalse: [ Halfpi negated ]]
+ 			ifFalse: [denominator > 0
+ 				ifTrue: [ (self / denominator) arcTan ]
+ 				ifFalse: [self > 0
+ 					ifTrue: [ ((self / denominator) arcTan) + Pi ]
+ 					ifFalse: [ ((self / denominator) arcTan) - Pi ]]]]!
- 	self isNaN ifTrue:[SignalNaN ifTrue:[NaNError signal]. ^self].
- 	denominator isNaN ifTrue:[SignalNaN ifTrue:[NaNError signal]. ^denominator].
- 	(self = 0.0) ifTrue: [ 
- 		(denominator > 0.0) 
- 			ifTrue: [ result := 0 ]
- 			ifFalse: [ result := Pi ]
- 	] ifFalse: [
- 		(denominator = 0.0) ifTrue: [ 
- 			(self > 0.0) 
- 				ifTrue: [ result := Halfpi ]
- 				ifFalse: [ result := Halfpi negated ]
- 		] ifFalse: [ 
- 			(denominator > 0) 
- 				ifTrue: [ result := (self / denominator) arcTan ]
- 				ifFalse: [ result := ((self / denominator) arcTan) + Pi ]
- 		].
- 	].
- 	^ result.!

Item was changed:
  ----- Method: Float>>cos (in category 'mathematical functions') -----
  cos
  	"Answer the cosine of the receiver taken as an angle in radians."
  	<primitive: 'primitiveCos' module: 'FloatMathPlugin'>
  	self isNaN ifTrue:[SignalNaN ifTrue:[NaNError signal]. ^self].
+ 	self isInfinite ifTrue:[^self error: 'cos is undefined for Infinity'].
- 	self abs = Float infinity ifTrue:[^self error: 'cos is undefined for Infinity'].
  	^ (self + Halfpi) sin!

Item was changed:
  ----- Method: Float>>sin (in category 'mathematical functions') -----
  sin
  	"Answer the sine of the receiver taken as an angle in radians.
  	 Optional. See Object documentation whatIsAPrimitive."
  	<primitive: 'primitiveSin' module: 'FloatMathPlugin'>
  	self isNaN ifTrue:[SignalNaN ifTrue:[NaNError signal]. ^self].
+ 	self isInfinite ifTrue:[^self error: 'sin is undefined for Infinity'].
- 	self abs = Float infinity ifTrue:[^self error: 'sin is undefined for Infinity'].
  	^self primitiveSin!




More information about the Squeak-dev mailing list