// SafeC Standard Library — floating-point environment implementation
// safeguard: link unix -lm
#pragma once
#include <std/fenv.h>
// fenv.h C functions (all take/return fenv_t / fexcept_t which fit in int/long)
namespace std {
extern int feclearexcept(int excepts);
extern int fetestexcept(int excepts);
extern int feraiseexcept(int excepts);
extern int fegetround();
extern int fesetround(int round);
extern int fegetenv(unsigned char* envp);
extern int fesetenv(const unsigned char* envp);
extern int feholdexcept(unsigned char* envp);
int fenv_clear(int excepts) { unsafe { return feclearexcept(excepts); } }
int fenv_test(int excepts) { unsafe { return fetestexcept(excepts); } }
int fenv_raise(int excepts) { unsafe { return feraiseexcept(excepts); } }
int fenv_get_round() { unsafe { return fegetround(); } }
int fenv_set_round(int mode) { unsafe { return fesetround(mode); } }
int fenv_save(&unsigned char env) { unsafe { return fegetenv(env); } }
int fenv_restore(const &unsigned char env) { unsafe { return fesetenv(env); } }
int fenv_save_clear(&unsigned char env) { unsafe { return feholdexcept(env); } }
} // namespace std