Commit Graph

87 Commits

Author SHA1 Message Date
Arthur Camouseigt
1995781a9f [Poincare/IEEE754] Changed methods to use std function
Implemented std::nextafter to replace hand made one.
Methods next and previous are no longer making the difference between -0
and +0

Change-Id: I42e1a073623b70656d9df954694803840cf3088c
2020-11-04 15:30:53 +01:00
Hugo Saint-Vignes
53e204db3a [liba] Add abs function for int
Change-Id: Ic133ff2f34c7ff24ecbec69d5f31e447a72ae4fe
2020-11-04 15:11:43 +01:00
Léa Saviot
449b1a4fc4 [liba/openbds] Use OpenBSD and not FreeBSD s_erff.c and s_logbf.c files 2020-04-09 13:58:56 +02:00
Neven Sajko
201ecaef5b Performance fixes relating to floating point: erf and erfc
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.
2020-04-09 13:58:56 +02:00
Neven Sajko
bdc5be94b6 Performance fixes relating to floating point
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.
2020-04-09 13:58:56 +02:00
Romain Goyet
269305c68f [liba] Simplify strlcat 2020-02-17 10:31:24 -05:00
Romain Goyet
02a19fc83d [liba] Add strlcat 2020-02-17 10:31:24 -05:00
Romain Goyet
dc4f43eeb0 [liba] Improve strlcpy
Use memcpy (can be optimized) and return the correct size
2020-02-17 10:31:24 -05:00
Léa Saviot
0a21ed2cfb [liba] strlcpy third argument in size, not length 2020-02-12 15:13:17 +01:00
Émilie Feral
51284296e7 [ion][liba] Add 'noinline' attribute for symbols that have to be in
internal flash (we don't need to consider these symbol dependencies
though)
2019-08-08 15:54:42 +02:00
Romain Goyet
d8199ff186 [liba] Define calloc
To silence a warning in LZ4. The code is not even built.
2019-05-28 16:47:03 +02:00
Ruben Dashyan
efde8c6c9e [liba] Add strncmp 2018-11-23 12:04:05 +01:00
Damien Nicolet
79bfc7f112 [code] time module 2018-11-09 01:30:22 +01:00
Léa Saviot
d12da1459a [liba] strlcpy(dst, src, dstsize) returns strlen(src) 2018-10-17 11:22:37 +02:00
Romain Goyet
6f7063dfda [liba] Make sure memset and memcpy are always kept at link time
Works around a bug in GCC
2018-10-12 14:39:26 +02:00
Émilie Feral
e7619633bd [liba] Add fmax in math.h header 2018-07-18 16:32:49 +02:00
Émilie Feral
2a05247629 [liba] Add hypot in math.h header 2018-07-18 16:32:49 +02:00
Émilie Feral
ecb7ec403a [liba] Use softfloat IEEE754 getters implementation instead of
re-implementing them
2018-03-21 15:54:58 +01:00
Émilie Feral
e7963332f6 [liba] Wrong signature in EABI implementation 2018-02-09 21:44:13 +01:00
Émilie Feral
90a75a320b [liba] Add __aeabi_ul2d implementation 2018-01-23 10:24:52 +01:00
Émilie Feral
3f0328f5b5 Add assertions for dangerous bit shift that could trigger undefined
behaviour

Change-Id: I051ed229d407eafcae1ea4b5fc745176a751e036
2017-12-01 11:53:55 +01:00
Léa Saviot
92789330de [code] Search function in the code Toolbox.
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
2017-11-21 17:30:04 +01:00
Léa Saviot
fe3d470d2d [liba] Fixed Gamma function bug.
There was a problem with the definition of ldexp, used in b_log__D.c

Change-Id: I83d012815e38b76efa730c1a3d259ec276e15f11
2017-11-17 14:05:23 +01:00
Romain Goyet
f265822792 [liba] Add extra math functions (erf erfc log2 logb tgamma rint scalb) 2017-11-17 11:59:49 +01:00
Romain Goyet
0ca52e201f [liba] Add extra libm symbols (ldexp, fmod, trunc, atan2) 2017-11-17 11:59:49 +01:00
Romain Goyet
3adc5d9fac Use OpenBSD 4.9's libm
This version still has all the double function (and not the long-double
ones). And apart from this, it's virtually identical to the 6.0 code.
2017-11-17 11:59:49 +01:00
Romain Goyet
b9e83231e6 [liba] Add extra math functions (frexpf, modff, truncf) 2017-11-17 11:59:49 +01:00
Romain Goyet
5a2446eff7 [liba] Proper support for function-like macros for math functions 2017-10-19 17:31:40 +02:00
Jacob Young
f2b7f92d71 Merge in upstream openbsd commit yu8HfTXRTrrv8b2W which allows isnanf, isnand, isinff, and isinfd to be deleted. 2017-10-13 18:08:15 +02:00
Jacob Young
da1e66e798 Fix #115 by fixing the math.h and cmath includes. 2017-10-13 18:08:15 +02:00
Émilie Feral
9ac25fc03a Repair windows build 2017-09-06 10:05:17 +02:00
Émilie Feral
925f404382 [liba] Add aeabi long conversion 2017-08-31 15:17:22 +02:00
Émilie Feral
aa567bf133 [liba] Add comment regarding nearbyintf
Change-Id: I6c02f2fe19cccce60516ad36062bc736e803991a
2017-08-28 11:51:17 +02:00
Émilie Feral
6b783346cc [liba] Add setjmp and longjmp
Change-Id: I3a57787199308900de8e7c6ce5961b2a26f6d38e
2017-08-25 11:20:49 +02:00
Émilie Feral
818c56bd45 [python] Enable float
Change-Id: I94111dd821fb3a9ef1e22ae5133c3a48285c52d5
2017-08-25 11:20:49 +02:00
Émilie Feral
05d2b83f92 [liba] Implement memclr8
Change-Id: Icc1ad9aed4911c5990e4f2e51e68c596e99e8534
2017-08-16 09:55:29 +02:00
Émilie Feral
3bbc3f2cb9 [liba] Fix bug in double arithmetic implementation
Change-Id: I9344e5d9c483d17b8b8ce3a652a7b8259e0f651c
2017-08-16 09:55:22 +02:00
Romain Goyet
159b6f7429 [liba] Add strchr to string.h
Change-Id: I6651daa030ad6dc5e567bb78f2f22d48f07524aa
2017-08-04 17:56:23 +02:00
Romain Goyet
3ef709502e [liba] Add memcmp to strings.h
Change-Id: Ied4281e588d423e2b00dced10018a690455544d5
2017-08-04 17:56:23 +02:00
Romain Goyet
2898ec916c [liba] Add memmove to string.h
Change-Id: I99b412dc7404e2711dbf7753f0d619694dee3d19
2017-08-04 17:56:23 +02:00
Romain Goyet
f21428e20f [liba] More detailed README for the externals
Change-Id: I9c5c4d9e86933aa81e3f45048bb004acafed41bc
2017-08-03 14:59:34 +02:00
Romain Goyet
c84b378b8b [liba] Add a double-precision libm
Change-Id: I3d0b5393eaaec3e01529e739535512c07f41a088
2017-08-03 14:52:20 +02:00
Romain Goyet
a1f1e2df6a [liba] isinf/isnan both work on double
Change-Id: I08e0c338e343a5357b91ed3a3f2e63db37efc983
2017-08-03 14:51:00 +02:00
Romain Goyet
e655adb36a [liba] Remove some softfloat warnings
Change-Id: I932344e1f1997899dcc42cec54aaf10df1cf2eea
2017-08-03 13:19:18 +02:00
Romain Goyet
42e5a45539 [liba] Rename a libm file
Change-Id: Ic0271c3a769f29fa46dd9bc1bb65e848a0f48373
2017-08-03 13:10:36 +02:00
Romain Goyet
27b9675709 [liba] Nicer port softfloat.h header
Change-Id: I347b181ce8b69d5274e590edcac5ed32af867662
2017-08-03 13:10:30 +02:00
Romain Goyet
70b9f41de9 [liba] Implement AEABI double helpers using the softfloat library
Change-Id: If329dcc55425f6e8db4b2ce26ea7d8be15c31c8d
2017-08-03 11:10:57 +02:00
Émilie Feral
3d1fc8e5d1 [liba] Correct __aeabi_llsr, __aeabi_llsl with tests
Change-Id: I710adab0ecd232f2e5bab08adbf10ef686c651c5
2017-05-23 15:15:44 +02:00
Émilie Feral
52c15de070 [liba] Implement llsl
Change-Id: I651deb9ae7b48cabaeb7e21d13ed395f133fd0c3
2017-05-22 16:35:27 +02:00
Émilie Feral
45fa0ac0a8 [liba] Clean
Change-Id: Ic59df28d78ed02fb55fcf62e9d79434590194a93
2017-05-22 16:35:27 +02:00