Introduction >

UnitParser code (.NET/C#) >

NumberParser code (.NET/C#) >

Custom mathematical functionalities

DateParser code (.NET/C#) >

FlexibleParser code

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.