Skip to content

Commit

Permalink
Added executable comments to various methods in Number
Browse files Browse the repository at this point in the history
  • Loading branch information
Cameron Bierwagen authored and Cameron Bierwagen committed Oct 29, 2019
1 parent 16ce77b commit a6a990b
Show file tree
Hide file tree
Showing 3 changed files with 88 additions and 9 deletions.
50 changes: 46 additions & 4 deletions src/Kernel/Number.class.st
Expand Up @@ -196,7 +196,11 @@ Number >> @ y [
{ #category : #arithmetic }
Number >> \\ aNumber [
"modulo. Remainder defined in terms of //. Answer a Number with the
same sign as aNumber. e.g. 9\\4 = 1, -9\\4 = 3, 9\\-4 = -3, 0.9\\0.4 = 0.1."
same sign as aNumber."

"9 \\ 4 >>> 1"
"-9 \\ 4 >>> 3"
"9 \\ -4 >>> -3"

^self - (self // aNumber * aNumber)
]
Expand Down Expand Up @@ -447,40 +451,57 @@ Number >> isZero [

{ #category : #'*Kernel-Chronology' }
Number >> milliSecond [

"1 milliSecond >>> 0:00:00:00.001"
"1 second + 1 milliSecond >>> 0:00:00:01.001"

^ self milliSeconds

]

{ #category : #'*Kernel-Chronology' }
Number >> milliSeconds [


"2 milliSeconds >>> 0:00:00:00.002"
"1 second + 2 milliSeconds >>> 0:00:00:01.002"

^ Duration milliSeconds: self

]

{ #category : #'*Kernel-Chronology' }
Number >> minute [

"1 minute >>> 0:00:01:00"
"1 hour + 1 minute >>> 0:01:01:00"

^ self minutes

]

{ #category : #'*Kernel-Chronology' }
Number >> minutes [

"2 minutes >>> 0:00:02:00"
"1 hour + 2 minutes >>> 0:01:02:00"

^ Duration minutes: self
]

{ #category : #'*Kernel-Chronology' }
Number >> nanoSecond [

"1 nanoSecond >>> 0:00:00:00.000000001"
"1 milliSecond + 1 nanoSecond >>> 0:00:00:00.001000001"

^ self nanoSeconds

]

{ #category : #'*Kernel-Chronology' }
Number >> nanoSeconds [

"2 nanoSeconds >>> 0:00:00:00.000000002"
"1 milliSecond + 2 nanoSeconds >>> 0:00:00:00.001000002"

^ Duration nanoSeconds: self.
]
Expand Down Expand Up @@ -589,6 +610,11 @@ Number >> quo: aNumber [
{ #category : #'mathematical functions' }
Number >> raisedTo: aNumber [
"Answer the receiver raised to aNumber."

"2 raisedTo: 8 >>> 256"
"8 raisedTo: 2 >>> 64"
"2 raisedTo: (1/12) >>> 1.0594630943592953"
"2 raisedTo: -1 >>> (1/2)"

aNumber isInteger ifTrue: [
"Do the special case of integer power"
Expand Down Expand Up @@ -646,6 +672,11 @@ Number >> reciprocal [
"Returns the reciprocal of self.
In case self is 0 the / signals ZeroDivide"

"1/2 reciprocal >>> 2"
"2 reciprocal >>> (1/2)"
"1.25 reciprocal >>> 0.8"
"-2 reciprocal >>> (-1/2)"

^1 / self
]

Expand Down Expand Up @@ -707,19 +738,30 @@ Number >> roundUpTo: aNumber [
{ #category : #'truncation and round off' }
Number >> rounded [
"Answer the integer nearest the receiver."

"1.4 rounded >>> 1"
"1.5 rounded >>> 2"
"2 rounded >>> 2"
"-1.5 rounded >>> -2"

^(self + (self sign / 2)) truncated
]

{ #category : #'*Kernel-Chronology' }
Number >> second [


"1 second >>> 0:00:00:01"
"1 minute + 1 second >>> 0:00:01:01"

^ self seconds

]

{ #category : #'*Kernel-Chronology' }
Number >> seconds [

"2 seconds >>> 0:00:00:02"
"1 minute + 2 seconds >>> 0:00:01:02"

^ Duration seconds: self
]
Expand Down
29 changes: 26 additions & 3 deletions src/Kernel/Number.extension.st
Expand Up @@ -38,53 +38,76 @@ Number >> hours [

{ #category : #'*Kernel-Chronology' }
Number >> milliSecond [

"1 milliSecond >>> 0:00:00:00.001"
"1 second + 1 milliSecond >>> 0:00:00:01.001"

^ self milliSeconds

]

{ #category : #'*Kernel-Chronology' }
Number >> milliSeconds [


"2 milliSeconds >>> 0:00:00:00.002"
"1 second + 2 milliSeconds >>> 0:00:00:01.002"

^ Duration milliSeconds: self

]

{ #category : #'*Kernel-Chronology' }
Number >> minute [

"1 minute >>> 0:00:01:00"
"1 hour + 1 minute >>> 0:01:01:00"

^ self minutes

]

{ #category : #'*Kernel-Chronology' }
Number >> minutes [

"2 minutes >>> 0:00:02:00"
"1 hour + 2 minutes >>> 0:01:02:00"

^ Duration minutes: self
]

{ #category : #'*Kernel-Chronology' }
Number >> nanoSecond [

"1 nanoSecond >>> 0:00:00:00.000000001"
"1 milliSecond + 1 nanoSecond >>> 0:00:00:00.001000001"

^ self nanoSeconds

]

{ #category : #'*Kernel-Chronology' }
Number >> nanoSeconds [

"2 nanoSeconds >>> 0:00:00:00.000000002"
"1 milliSecond + 2 nanoSeconds >>> 0:00:00:00.001000002"

^ Duration nanoSeconds: self.
]

{ #category : #'*Kernel-Chronology' }
Number >> second [


"1 second >>> 0:00:00:01"
"1 minute + 1 second >>> 0:00:01:01"

^ self seconds

]

{ #category : #'*Kernel-Chronology' }
Number >> seconds [

"2 seconds >>> 0:00:00:02"
"1 minute + 2 seconds >>> 0:00:01:02"

^ Duration seconds: self
]
Expand Down
18 changes: 16 additions & 2 deletions src/Math-Operations-Extensions/Number.extension.st
Expand Up @@ -3,13 +3,25 @@ Extension { #name : #Number }
{ #category : #'*Math-Operations-Extensions' }
Number >> % aNumber [
"modulo. Remainder defined in terms of //. Answer a Number with the
same sign as aNumber. e.g. 9\\4 = 1, -9\\4 = 3, 9\\-4 = -3, 0.9\\0.4 = 0.1."
same sign as aNumber."

"9 % 4 >>> 1"
"-9 % 4 >>> 3"
"9 % -4 >>> -3"


^ self \\ aNumber
]

{ #category : #'*Math-Operations-Extensions' }
Number >> ** exponent [
" A shortcut methog for raisedTo: "
" A shortcut method for raisedTo: "

"2 ** 8 >>> 256"
"8 ** 2 >>> 64"
"2 ** (1/12) >>> 1.0594630943592953"
"2 ** -1 >>> (1/2)"

^ self raisedTo: exponent
]

Expand Down Expand Up @@ -175,6 +187,8 @@ Number >> percent [
Number >> radiansToDegrees [
"The receiver is assumed to represent radians. Answer the conversion to
degrees."

"Float pi radiansToDegrees >>> 180.0"

^self asFloat radiansToDegrees
]
Expand Down

0 comments on commit a6a990b

Please sign in to comment.