#include #if __riscv_flen >= 64 double round(double x) { if (isnan(x)) return x; if (fabs(x) >= 0x1p54) return x; double tmp; long long n; __asm__ ("fcvt.l.d %0, %1, rmm" : "=r"(n) : "f"(x)); __asm__ ("fcvt.d.l %0, %1" : "=f"(tmp) : "r"(n)); __asm__ ("fsgnj.d %0, %1, %2" : "=f"(x) : "f"(tmp), "f"(x)); return x; } #else #include "../round.c" #endif