Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
|
|
@ -0,0 +1,84 @@
|
|||
import "/fmt" for Fmt
|
||||
|
||||
var MAXITER = 151
|
||||
|
||||
var minkowski // predeclare as recursive
|
||||
minkowski = Fn.new { |x|
|
||||
if (x > 1 || x < 0) return x.floor + minkowski.call(x - x.floor)
|
||||
var p = x.floor
|
||||
var q = 1
|
||||
var r = p + 1
|
||||
var s = 1
|
||||
var d = 1
|
||||
var y = p
|
||||
while (true) {
|
||||
d = d / 2
|
||||
if (y + d == y) break
|
||||
var m = p + r
|
||||
if (m < 0 || p < 0 ) break
|
||||
var n = q + s
|
||||
if (n < 0) break
|
||||
if (x < m/n) {
|
||||
r = m
|
||||
s = n
|
||||
} else {
|
||||
y = y + d
|
||||
p = m
|
||||
q = n
|
||||
}
|
||||
}
|
||||
return y + d
|
||||
}
|
||||
|
||||
var minkowskiInv
|
||||
minkowskiInv = Fn.new { |x|
|
||||
if (x > 1 || x < 0) return x.floor + minkowskiInv.call(x - x.floor)
|
||||
if (x == 1 || x == 0) return x
|
||||
var contFrac = [0]
|
||||
var curr = 0
|
||||
var count = 1
|
||||
var i = 0
|
||||
while (true) {
|
||||
x = x * 2
|
||||
if (curr == 0) {
|
||||
if (x < 1) {
|
||||
count = count + 1
|
||||
} else {
|
||||
i = i + 1
|
||||
var t = contFrac
|
||||
contFrac = List.filled(i + 1, 0)
|
||||
for (j in 0...t.count) contFrac[j] = t[j]
|
||||
contFrac[i-1] = count
|
||||
count = 1
|
||||
curr = 1
|
||||
x = x - 1
|
||||
}
|
||||
} else {
|
||||
if (x > 1) {
|
||||
count = count + 1
|
||||
x = x - 1
|
||||
} else {
|
||||
i = i + 1
|
||||
var t = contFrac
|
||||
contFrac = List.filled(i + 1, 0)
|
||||
for (j in 0...t.count) contFrac[j] = t[j]
|
||||
contFrac[i-1] = count
|
||||
count = 1
|
||||
curr = 0
|
||||
}
|
||||
}
|
||||
if (x == x.floor) {
|
||||
contFrac[i] = count
|
||||
break
|
||||
}
|
||||
if (i == MAXITER) break
|
||||
}
|
||||
var ret = 1/contFrac[i]
|
||||
for (j in i-1..0) ret = contFrac[j] + 1/ret
|
||||
return 1/ret
|
||||
}
|
||||
|
||||
Fmt.print("$17.16f $17.14f", minkowski.call(0.5 * (1 + 5.sqrt)), 5/3)
|
||||
Fmt.print("$17.14f $17.14f", minkowskiInv.call(-5/9), (13.sqrt - 7)/6)
|
||||
Fmt.print("$17.14f $17.14f", minkowski.call(minkowskiInv.call(0.718281828)),
|
||||
minkowskiInv.call(minkowski.call(0.1213141516171819)))
|
||||
Loading…
Add table
Add a link
Reference in a new issue