summaryrefslogtreecommitdiff
path: root/src/math/i386/fmodf.c
blob: 90b56ab0fa50f197b7d6f14747b9240b1143d561 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
#include <math.h>

float fmodf(float x, float y)
{
	unsigned short fpsr;
	// fprem does not introduce excess precision into x
	do __asm__ ("fprem; fnstsw %%ax" : "+t"(x), "=a"(fpsr) : "u"(y));
	while (fpsr & 0x400);
	return x;
}