Posit numbers/decoding: Difference between revisions
→{{header|Wren}}: Made decode function more general.
m (Grondilu moved page Posit numbers to Posit numbers/decoding) |
(→{{header|Wren}}: Made decode function more general.) |
||
Line 70:
=={{header|Wren}}==
{{libheader|Wren-fmt}}
{{libheader|Wren-
<syntaxhighlight lang="ecmascript">import "./fmt" for Conv
import "./
var posit16_decode = Fn.new { |ps, maxExpSize|
var p = ps.map { |c| c == "0" ? 0 : 1 }.toList
Line 94:
}
}
var first = p[1]
var rs =
for (i in 2..15) {
if (p[i] != first) {
Line 104 ⟶ 103:
}
var regime = p[1..rs]
var es =
var exponent = [0]
if (es > 0) exponent = p[rs + 2...rs + 2 + es]
var fs = (es == 0) ? 0 : 14 - rs - es // function size
var s = (p[0] == 0) ? 1 : -1 // sign
var k = regime.all { |i| i == 0 } ? -rs : rs - 1
var u = 2.pow(2.pow(
var e = Conv.atoi(exponent.join(""), 2)
var f =
if (fs > 0) {
var fraction = ps[-fs..-1]
f = Conv.atoi(fraction.join(""), 2)
f =
}
return f *
}
var ps = "0000110111011101"
System.print(posit16_decode.call(ps, 3))</syntaxhighlight>
{{out}}
|