1570af302Sopenharmony_ci#include <math.h> 2570af302Sopenharmony_ci 3570af302Sopenharmony_cidouble fmod(double x, double y) 4570af302Sopenharmony_ci{ 5570af302Sopenharmony_ci unsigned short fpsr; 6570af302Sopenharmony_ci // fprem does not introduce excess precision into x 7570af302Sopenharmony_ci do __asm__ ("fprem; fnstsw %%ax" : "+t"(x), "=a"(fpsr) : "u"(y)); 8570af302Sopenharmony_ci while (fpsr & 0x400); 9570af302Sopenharmony_ci return x; 10570af302Sopenharmony_ci} 11