Hello,
Consider this program, strtod.c:
#include <stdlib.h>
#include <stdio.h>
int main()
{
printf("%lf\n", strtod("283686952306183", NULL));
}
With current musl master from Git:
$ musl-gcc -static strtod.c -o a.musl
$ ./a.musl
283686952306176.000000
By comparison, with glibc:
$ gcc -static strtod.c -o a.glibc
$ ./a.glibc
283686952306183.000000
The correct binary representation of this float is
0x42f0203040506070
but musl strtod produces
0x42f0203040506000
i.e., it fails to set the LSB. I examined this while ruling out printf as the cause.