--

--

--

--

--

--

--

The contents in this website aren't being updated anymore. For more information, go to https://varocarbas.com/.

NumberParser code (.NET/C#) >

Custom mathematical functionalities`Math2`

includes all the mathematical functionalities of NumberParser, divided into the following two main groups:- Non-natively-supported implementations, which I developed from scratch and are analysed below. All this code is stored in the files and folders including "New" in their names.
`NumberD`

-adapted versions of the .NET native`System.Math`

methods, which are discussed in the next section. These implementations are included in the "Existing" files and folder.

`Math2`

contains the following custom methods:`PowDecimal`

/`SqrtDecimal`

. These`decimal`

-based methods are more accurate and support higher precisions/ranges (i.e., up to 26 decimal digits and over ±10^2147483647) than their native floating-point counterparts (i.e.,`System.Math`

's`Pow`

/`Sqrt`

).

Project 10 analyses both algorithms and the underlying calculation approach in detail.`RoundExact`

/`TruncateExact`

. They extend`System.Math`

's`Round`

/`Truncate`

functionalities by bringing into account new scenarios (e.g., rounding/truncating before/after the decimal point via`RoundSeparator`

) or by complementing existing ones (e.g.,`RoundType.MidpointToZero`

, an eventuality not accounted by the native`MidpointRounding`

).

Note that the structure of these two methods was an output of one of my CoreFX issues.`GetPolynomialFit`

/`ApplyPolynomialFit`

. These methods calculate (least squares) and apply the coefficients of a second degree polynomial fit.`GetPolynomialFit`

returns a`Polynomial`

variable with the coefficients best fitting the training x/y arrays. This output, together with the dependent value associated with the result to be calculated, is taken by`ApplyPolynomial`

to perform the corresponding calculations (i.e., A + B*x + C*x^2).`Factorial`

. It calculates the factorial of any positive integer number up to 99999.