Non-floating-point fractional exponentiation approach
Completed on 16-Nov-2016 (24 days)
As per the corresponding MSDN reference for C#
is a 128-bit data type whose precision (e.g.,
) and range (e.g.,
) are around 28 digits. Contrarily to what happens with the other .NET decimal types (i.e.,
), it isn't floating point.
type is defined by its high precision and that's why this has been an accuracy-oriented development since the very beginning. As explained in the corresponding section
, the immediate result of such an intention is that
take into account most of the significant digits of the
type (note that the reasons for only "most of", the first 25 decimal digits, are also explained in the aforementioned other section).
The relatively big
range is also an important issue for the integer exponentiation aspects of this implementation. Note that this range is notably beyond the one of the biggest signed integer type (i.e.,
, around ±9.2*10^18) and, consequently, no integer type might be used. The main consequence of such a limitation is the impossibility of relying on bitwise operations.