Skip to content

Commit c73bee7

Browse files
authored
Merge pull request #311 from jecisc/fix-epsilon-deprecation
Fix epsilon deprecation from Pharo 11
2 parents 7241240 + 880b40f commit c73bee7

File tree

2 files changed

+19
-6
lines changed

2 files changed

+19
-6
lines changed
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
Extension { #name : #Float }
2+
3+
{ #category : #'*Math-CompatibilityUpToPharo11' }
4+
Float class >> machineEpsilon [
5+
"Answer the machine epsilon or macheps, defined by wikipedia asCalypsoItemContext
6+
https://en.wikipedia.org/wiki/Machine_epsilon
7+
8+
*an upper bound on the relative approximation error due to rounding in floating point arithmetic*
9+
10+
Compute it as the difference between 1.0 and previous representable value"
11+
12+
^1.0 timesTwoPower: 1 - self precision
13+
]

src/Math-TSNE/PMTSNE.class.st

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ PMTSNE class >> entropyOf: distanceVector andPRow: pVector withBeta: beta [
4444

4545
| pVectorTemp sumP entropy |
4646
pVectorTemp := (-1 * distanceVector * beta) exp.
47-
sumP := pVectorTemp sum max: (Float epsilon).
47+
sumP := pVectorTemp sum max: (Float machineEpsilon).
4848
entropy := sumP ln + (beta * (distanceVector * pVectorTemp) / sumP).
4949
pVector copyFrom: (pVectorTemp / sumP).
5050
^ entropy
@@ -189,9 +189,9 @@ PMTSNE >> computeGradient [
189189
| num sumNum pq dY tmp yiDiff |
190190
"Calculates num and q"
191191
num := self computeLowDimensionalStudentT.
192-
sumNum := num sum sum max: (Float epsilon).
192+
sumNum := num sum sum max: (Float machineEpsilon).
193193
q := num collect: [:element |
194-
(element / sumNum) max: (Float epsilon)
194+
(element / sumNum) max: (Float machineEpsilon)
195195
].
196196

197197
pq := p - q.
@@ -215,9 +215,9 @@ PMTSNE >> computeLowDimensionalAffinities [
215215

216216
| num sumNum |
217217
num := self computeLowDimensionalStudentT.
218-
sumNum := num sum sum max: (Float epsilon).
218+
sumNum := num sum sum max: (Float machineEpsilon).
219219
q := num collect: [:element |
220-
(element / sumNum) max: (Float epsilon)
220+
(element / sumNum) max: (Float machineEpsilon)
221221
].
222222
^ q
223223
]
@@ -245,7 +245,7 @@ PMTSNE >> computePValues [
245245
sumP := p sum sum.
246246
p := p collect: [ :element |
247247
"4 is for early exaggeration, will be removed after 100 iterations"
248-
(element / sumP * 4) asFloat max: (Float epsilon).
248+
(element / sumP * 4) asFloat max: (Float machineEpsilon).
249249
].
250250
^ p
251251
]

0 commit comments

Comments
 (0)