#FEATURE by cg
class: ArithmeticValue
added:
#raisedFromFloat:
#raisedFromNumber:
comment/format in: #raisedTo:
--- a/ArithmeticValue.st Sat Jul 01 21:36:54 2017 +0200
+++ b/ArithmeticValue.st Sun Jul 02 00:45:22 2017 +0200
@@ -1202,6 +1202,33 @@
"Created: 17.4.1996 / 12:34:00 / cg"
!
+raisedFromFloat:aFloat
+ "aFloat does not know how to be raised to the receiver"
+
+ self isNumber ifTrue:[
+ self isFloat ifFalse:[
+ ^ self asFloat raisedFromFloat:aFloat
+ ].
+ ].
+ ^ self raisedFromNumber:aFloat
+
+ "Created: / 01-07-2017 / 21:18:54 / cg"
+ "Modified: / 02-07-2017 / 00:44:47 / cg"
+!
+
+raisedFromNumber:aNumber
+ "aNumber does not know how to be raised to the receiver"
+
+ ^ self class
+ raise:#domainErrorSignal
+ receiver:aNumber
+ selector:#raisedTo:
+ arguments:(Array with:self)
+ errorString:'bad receiver/arg in raisedTo:'
+
+ "Created: / 01-07-2017 / 21:17:06 / cg"
+!
+
remainderFromFloat:aFloat
"aFloat does not know how to compute the remainder with the receiver -
retry the operation by coercing to higher generality"
@@ -1386,10 +1413,21 @@
!
raisedTo: aNumber
+ "return the receiver raised to aNumber (i.e. self ^ aNumber)"
+
aNumber isInteger ifTrue:[
- ^ self raisedToInteger:aNumber
+ ^ self raisedToInteger:aNumber
].
^ self subclassResponsibility
+
+ "
+ 2 raisedTo:16
+ 2.0 raisedTo:16
+
+ 3 raisedTo:4
+ "
+
+ "Modified (format): / 01-07-2017 / 20:59:35 / cg"
!
raisedToInteger:exp