Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches

◆ BigNumber() [2/2]

System.Xml.Xsl.XPathConvert.BigNumber.BigNumber ( FloatingDecimal dec)
inline

Definition at line 143 of file XPathConvert.cs.

144 {
145 int num = 0;
146 int exponent = dec.Exponent;
147 int mantissaSize = dec.MantissaSize;
148 _u2 = (uint)(dec[num] << 28);
149 _u1 = 0u;
150 _u0 = 0u;
151 _exp = 4;
152 _error = 0u;
153 exponent--;
154 Normalize();
155 while (++num < mantissaSize)
156 {
157 uint num2 = MulTenAdd(dec[num]);
158 exponent--;
159 if (num2 != 0)
160 {
161 Round(num2);
162 if (num < mantissaSize - 1)
163 {
164 _error++;
165 }
166 break;
167 }
168 }
169 if (exponent != 0)
170 {
172 if (exponent < 0)
173 {
176 }
177 else
178 {
180 }
181 int num3 = exponent & 0x1F;
182 if (num3 > 0)
183 {
184 Mul(ref array[num3 - 1]);
185 }
186 num3 = (exponent >> 5) & 0xF;
187 if (num3 > 0)
188 {
189 Mul(ref array[num3 + 30]);
190 }
191 }
192 }
BigNumber(uint u0, uint u1, uint u2, int exp, uint error)
void Mul(ref BigNumber numOp)
static readonly BigNumber[] s_tenPowersNeg
static readonly BigNumber[] s_tenPowersPos
unsafe uint MulTenAdd(uint digit)

References System.Xml.Xsl.XPathConvert.BigNumber._error, System.Xml.Xsl.XPathConvert.BigNumber._exp, System.Xml.Xsl.XPathConvert.BigNumber._u0, System.Xml.Xsl.XPathConvert.BigNumber._u1, System.Xml.Xsl.XPathConvert.BigNumber._u2, System.array, System.Xml.Dictionary, System.Xml.Xsl.XPathConvert.BigNumber.Mul(), System.Xml.Xsl.XPathConvert.BigNumber.MulTenAdd(), System.Xml.Xsl.XPathConvert.BigNumber.Normalize(), System.Xml.Xsl.XPathConvert.BigNumber.Round(), System.Xml.Xsl.XPathConvert.BigNumber.s_tenPowersNeg, and System.Xml.Xsl.XPathConvert.BigNumber.s_tenPowersPos.