Bug:Fix file validation issue
[vnfsdk/refrepo.git] / vnfmarket / src / main / webapp / vnfmarket / node_modules / socket.io-client / lib / vendor / web-socket-js / flash-src / com / hurlant / math / BarrettReduction.as
1 package com.hurlant.math\r
2 {\r
3         use namespace bi_internal;\r
4 \r
5         internal class BarrettReduction implements IReduction\r
6         {\r
7                 private var m:BigInteger;\r
8                 private var r2:BigInteger;\r
9                 private var q3:BigInteger;\r
10                 private var mu:BigInteger;\r
11                 \r
12                 public function BarrettReduction(m:BigInteger) {\r
13                         // setup Barrett\r
14                         r2 = new BigInteger;\r
15                         q3 = new BigInteger;\r
16                         BigInteger.ONE.dlShiftTo(2*m.t, r2);\r
17                         mu = r2.divide(m);\r
18                         this.m = m;\r
19                 }\r
20                 \r
21                 public function revert(x:BigInteger):BigInteger\r
22                 {\r
23                         return x;\r
24                 }\r
25                 \r
26                 /**\r
27                  * \r
28                  * @param x\r
29                  * @param y\r
30                  * @param r = x*y mod m; x != r\r
31                  * \r
32                  */\r
33                 public function mulTo(x:BigInteger, y:BigInteger, r:BigInteger):void\r
34                 {\r
35                         x.multiplyTo(y, r);\r
36                         reduce(r);\r
37                 }\r
38                 \r
39                 /**\r
40                  * \r
41                  * @param x\r
42                  * @param r = x^2 mod m; x != r\r
43                  * \r
44                  */\r
45                 public function sqrTo(x:BigInteger, r:BigInteger):void\r
46                 {\r
47                         x.squareTo(r);\r
48                         reduce(r);\r
49                 }\r
50                 \r
51                 public function convert(x:BigInteger):BigInteger\r
52                 {\r
53                         if (x.s<0 || x.t>2*m.t) {\r
54                                 return x.mod(m);\r
55                         } else if (x.compareTo(m)<0) {\r
56                                 return x;\r
57                         } else {\r
58                                 var r:BigInteger = new BigInteger;\r
59                                 x.copyTo(r);\r
60                                 reduce(r);\r
61                                 return r;\r
62                         }\r
63                 }\r
64                 \r
65                 /**\r
66                  * \r
67                  * @param x = x mod m (HAC 14.42)\r
68                  * \r
69                  */\r
70                 public function reduce(lx:BigInteger):void\r
71                 {\r
72                         var x:BigInteger = lx as BigInteger;\r
73                         x.drShiftTo(m.t-1,r2);\r
74                         if (x.t>m.t+1) {\r
75                                 x.t = m.t+1;\r
76                                 x.clamp();\r
77                         }\r
78                         mu.multiplyUpperTo(r2, m.t+1, q3);\r
79                         m.multiplyLowerTo(q3, m.t+1, r2);\r
80                         while (x.compareTo(r2)<0) {\r
81                                 x.dAddOffset(1, m.t+1);\r
82                         }\r
83                         x.subTo(r2,x);\r
84                         while (x.compareTo(m)>=0) {\r
85                                 x.subTo(m,x);\r
86                         }\r
87                 }\r
88                 \r
89         }\r
90 }