/* * Copyright 03/12/97 by Sun Microsystems, Inc. */ #pragma ident "@(#)llib-lm9x 1.2 97/03/12 SMI" /* LINTLIBRARY */ /* PROTOLIB1 */ /* rounding modes */ extern int fegetround(void); extern int fesetround(int); /* exception flags */ typedef int fexcept_t; extern void feclearexcept(int); extern void feraiseexcept(int); extern int fetestexcept(int); extern void fegetexceptflag(fexcept_t *, int); extern void fesetexceptflag(const fexcept_t *, int); /* exception handling extensions */ typedef struct { enum fex_nt { fex_nodata = 0, fex_int = 1, fex_llong = 2, fex_float = 3, fex_double = 4, fex_ldouble = 5 } type; union { int i; long long l; float f; double d; long double q; } val; } fex_numeric_t; typedef struct { enum fex_op { fex_add = 0, fex_sub = 1, fex_mul = 2, fex_div = 3, fex_sqrt = 4, fex_cnvt = 5, fex_cmp = 6, fex_other = 7 } op; int flags; fex_numeric_t op1, op2, res; } fex_info_t; typedef struct fex_handler_data { int __mode; void (*__handler)(); } fex_handler_t[12]; extern int fex_get_handling(int); extern int fex_set_handling(int, int, void (*)()); extern void fex_getexcepthandler(fex_handler_t *, int); extern void fex_setexcepthandler(const fex_handler_t *, int); typedef struct { int _cnt; unsigned char *_ptr; unsigned char *_base; unsigned char _flag; unsigned char _file; } FILE; extern FILE *fex_get_log(void); extern int fex_set_log(FILE *); extern int fex_get_log_depth(void); extern int fex_set_log_depth(int); extern void fex_log_entry(const char *); /* environment functions */ typedef struct { fex_handler_t __handlers; unsigned long __fsr; } fenv_t; extern const fenv_t __fenv_dfl_env; extern void fegetenv(fenv_t *); extern void fesetenv(const fenv_t *); extern int feholdexcept(fenv_t *); extern void feupdateenv(const fenv_t *); extern void fex_merge_flags(const fenv_t *); /* aliases */ extern int fegetround96(void); extern int fesetround96(int); extern void feclearexcept96(int); extern void feraiseexcept96(int); extern int fetestexcept96(int); extern void fegetexceptflag96(fexcept_t *, int); extern void fesetexceptflag96(const fexcept_t *, int); extern void fegetenv96(fenv_t *); extern void fesetenv96(const fenv_t *); extern int feholdexcept96(fenv_t *); extern void feupdateenv96(const fenv_t *);