1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
#include <math.h> long double fmodl(long double x, long double y) { unsigned short fpsr; do __asm__ ("fprem; fnstsw %%ax" : "+t"(x), "=a"(fpsr) : "u"(y)); while (fpsr & 0x400); return x; } #ifdef TEST int main(void) { return 0; } #endif