JAL-1807 test
[jalviewjs.git] / bin / javajs / util / BC.js
1 Clazz.declarePackage ("javajs.util");
2 c$ = Clazz.declareType (javajs.util, "BC");
3 Clazz.makeConstructor (c$, 
4 function () {
5 });
6 c$.bytesToFloat = Clazz.defineMethod (c$, "bytesToFloat", 
7 function (bytes, j, isBigEndian) {
8 return javajs.util.BC.intToFloat (javajs.util.BC.bytesToInt (bytes, j, isBigEndian));
9 }, "~A,~N,~B");
10 c$.bytesToInt = Clazz.defineMethod (c$, "bytesToInt", 
11 function (bytes, j, isBigEndian) {
12 var n = (isBigEndian ? (bytes[j + 3] & 0xff) | (bytes[j + 2] & 0xff) << 8 | (bytes[j + 1] & 0xff) << 16 | (bytes[j] & 0xff) << 24 : (bytes[j++] & 0xff) | (bytes[j++] & 0xff) << 8 | (bytes[j++] & 0xff) << 16 | (bytes[j++] & 0xff) << 24);
13 {
14 return (n > 0x7FFFFFFF ? n - 0x100000000 : n);
15 }}, "~A,~N,~B");
16 c$.intToFloat = Clazz.defineMethod (c$, "intToFloat", 
17 function (x) {
18 {
19 if (x == 0) return 0;
20 var o = javajs.util.BC;
21 if (o.fracIEEE == null)
22 o.setFracIEEE();
23 var m = ((x & 0x7F800000) >> 23);
24 return ((x & 0x80000000) == 0 ? 1 : -1) * o.shiftIEEE((x & 0x7FFFFF) | 0x800000, m - 149);
25 }}, "~N");
26 c$.bytesToDoubleToFloat = Clazz.defineMethod (c$, "bytesToDoubleToFloat", 
27 function (bytes, j, isBigEndian) {
28 {
29 if (javajs.util.BC.fracIEEE == null) javajs.util.BC.setFracIEEE ();
30 {
31 var o = javajs.util.BC;
32 var b1, b2, b3, b4, b5;
33 if (isBigEndian) {
34 b1 = bytes[j] & 0xFF;
35 b2 = bytes[j + 1] & 0xFF;
36 b3 = bytes[j + 2] & 0xFF;
37 b4 = bytes[j + 3] & 0xFF;
38 b5 = bytes[j + 4] & 0xFF;
39 } else {
40 b1 = bytes[j + 7] & 0xFF;
41 b2 = bytes[j + 6] & 0xFF;
42 b3 = bytes[j + 5] & 0xFF;
43 b4 = bytes[j + 4] & 0xFF;
44 b5 = bytes[j + 3] & 0xFF;
45 }
46 var s = ((b1 & 0x80) == 0 ? 1 : -1);
47 var e = (((b1 & 0x7F) << 4) | (b2 >> 4)) - 1026;
48 b2 = (b2 & 0xF) | 0x10;
49 return s * (o.shiftIEEE(b2, e) + o.shiftIEEE(b3, e - 8) + o.shiftIEEE(b4, e - 16)
50 + o.shiftIEEE(b5, e - 24));
51 }}}, "~A,~N,~B");
52 c$.setFracIEEE = Clazz.defineMethod (c$, "setFracIEEE", 
53 ($fz = function () {
54 javajs.util.BC.fracIEEE =  Clazz.newFloatArray (270, 0);
55 for (var i = 0; i < 270; i++) javajs.util.BC.fracIEEE[i] = Math.pow (2, i - 141);
56
57 }, $fz.isPrivate = true, $fz));
58 c$.shiftIEEE = Clazz.defineMethod (c$, "shiftIEEE", 
59 function (f, i) {
60 if (f == 0 || i < -140) return 0;
61 if (i > 128) return 3.4028235E38;
62 return f * javajs.util.BC.fracIEEE[i + 140];
63 }, "~N,~N");
64 Clazz.defineStatics (c$,
65 "fracIEEE", null);