This replaces unnecessary double-precision soft-float operations with
single-precision floating-point operations, mainly by casting.
In a couple places I also replace a function call with a constant.
Because the values can be very small or very big, computations should
not be made sequentially, to prevent rounding errors.
For instace, for degrees of freedom = 70, coefficient() would return 0
event though the cumulativeDistributiveFunctionAtAbscissa was not 0.