| 1 | #include <math.h> |
| 2 | |
| 3 | float remainderf(float x, float y) |
| 4 | { |
| 5 | 	unsigned short fpsr; |
| 6 | 	// fprem1 does not introduce excess precision into x |
| 7 | 	do __asm__ ("fprem1; fnstsw %%ax" : "+t"(x), "=a"(fpsr) : "u"(y)); |
| 8 | 	while (fpsr & 0x400); |
| 9 | 	return x; |
| 10 | } |
| 11 | |
| 12 | weak_alias(remainderf, dremf); |