xref: /aosp_15_r20/external/musl/src/math/i386/fmod.c (revision c9945492fdd68bbe62686c5b452b4dc1be3f8453)
1*c9945492SAndroid Build Coastguard Worker #include <math.h>
2*c9945492SAndroid Build Coastguard Worker 
fmod(double x,double y)3*c9945492SAndroid Build Coastguard Worker double fmod(double x, double y)
4*c9945492SAndroid Build Coastguard Worker {
5*c9945492SAndroid Build Coastguard Worker 	unsigned short fpsr;
6*c9945492SAndroid Build Coastguard Worker 	// fprem does not introduce excess precision into x
7*c9945492SAndroid Build Coastguard Worker 	do __asm__ ("fprem; fnstsw %%ax" : "+t"(x), "=a"(fpsr) : "u"(y));
8*c9945492SAndroid Build Coastguard Worker 	while (fpsr & 0x400);
9*c9945492SAndroid Build Coastguard Worker 	return x;
10*c9945492SAndroid Build Coastguard Worker }
11