Do you know what's causing the difference in the outouts?
void main() {
double d1 = 3.14159;
printf("%a\n", d1);
writefln("%a\n", d1);
}
Outputs:
0x1.921f9f01b866ep+1
0xc.90fcf80dc337p-2
A printf in C code compiled with GCC prints the same as the printf here.
Bye,
bearophile