erf and erfc are missing float versions, so I import them from
openlibm. erf is used from Poincare::NormalDistribution::
StandardNormalCumulativeDistributiveFunctionAtAbscissa<float>, and erfc
is used (?) just from MicroPython.
To clarify, if there is no float version of a function like erf, but
there is a double version, C++ promotes the possible float parameter to
double and soft-float hilarity ensues.
Removes unneccesary usage of soft-float double usage. The reason for the
useless double math being done were broken standard C++ functions:
atanh<float>, sqrt<float>, asinh<float>, operator/<float>. This was in
turn caused by missing float versions of C++ functions hypot, atan2,
logb, scalbn.
A logbf implementation was missing from the libm, so I added one from
openlibm.
Add missing math.h tests and make each test a single line for easier comparison with math.h.
Add missing cmath undefs and functions and use constexpr instead of static.