about summary refs log tree commit diff
path: root/src/stdlib
Commit message (Collapse)AuthorAgeFilesLines
* avoid crashing when nel==0 is passed to qsortRich Felker2011-04-291-2/+6
|
* replace heap sort with smoothsort implementation by Valentin OchsRich Felker2011-04-271-32/+193
| | | | | | | | | | | | | | Smoothsort is an adaptive variant of heapsort. This version was written by Valentin Ochs (apo) specifically for inclusion in musl. I worked with him to get it working in O(1) memory usage even with giant array element widths, and to optimize it heavily for size and speed. It's still roughly 4 times as large as the old heap sort implementation, but roughly 20 times faster given an almost-sorted array of 1M elements (20 being the base-2 log of 1M), i.e. it really does reduce O(n log n) to O(n) in the mostly-sorted case. It's still somewhat slower than glibc's Introsort for random input, but now considerably faster than glibc when the input is already sorted, or mostly sorted.
* fix broken unsigned comparison in wcstoumaxRich Felker2011-04-071-1/+1
|
* fix various bugs in strtold:Rich Felker2011-04-031-10/+13
| | | | | | | | | | | 0e10000000000000000000000000000000 was setting ERANGE exponent char e/p was considered part of the match even if not followed by a valid decimal value "1e +10" was parsed as "1e+10" hex digits were misinterpreted as 0..5 instead of 10..15
* fix all implicit conversion between signed/unsigned pointersRich Felker2011-03-252-4/+4
| | | | | | | sadly the C language does not specify any such implicit conversion, so this is not a matter of just fixing warnings (as gcc treats it) but actual errors. i would like to revisit a number of these changes and possibly revise the types used to reduce the number of casts required.
* don't compare elements with themselves during qsort.Rich Felker2011-02-171-1/+1
| | | | | this is actually a workaround for a bug in gcc, whereby it asserts inequality of the keys being compared...
* more header fixes, minor warning fixRich Felker2011-02-143-2/+4
|
* initial check-in, version 0.5.0 v0.5.0Rich Felker2011-02-1232-0/+688