setjmp is not guaranteed to collect all registers without modification
on all platforms.
This fixes the following bug: when the pointer of a newly allocated
object on the Python heap is stored in rpb registers on x86_64 arch, it
was not collected by the garbarge collector.
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.
_Bool is defined in C99 which we use already. In practice it's 1 byte
just like char, so this shouldn't have any impact on the built object.
But this patch removes LTO errors when linking C code with C++ code.
Indeed, the linker would raise type mismatch because in C++ bool is
defined to _Bool whereas in C it would be defined to char.
When the user types a letter, the toolbox scrolls to the first row that begins
with said letter (without considering if it is lower or upper case). If
there is not such a row, the toolbox scrolls to the first row that has a
letter higher than the typed letter.
Change-Id: I353d23560d8a4d618d96426c393b024e7fb487af
A script can now be imported in the console.
Moved all the MicroPython functions to python/port files.
Change-Id: I0a23e8cb20005719b800e81470e1c574c702c3b7