I search three files(floatfns.c,math.h of glibc-961212-1f.src.rpm,math.h of
glibc-2.0.6.tar.gz).
Floatfns.c is no fail.
Struct __exception in glibc-961212 is excanged to struct exception.
Kaoru fukui
k_fukui(a)highway.or.jp
From: "Stephen R. Anderson"
<sra(a)bloch.ling.yale.edu>
I enclose a copy of the most recent /usr/include/math.h, from
ftp://ftp.linuxppc.org/linuxppc/redhat/RPMS/ppc/glibc-devel-0.961212-1f.p...
#ifdef __USE_SVID
/* In SVID error handling, `matherr' is called with this description
of the exceptional condition. */
struct __exception
{
int type;
char *name;
double arg1;
double arg2;
double retval;
};
extern int __matherr __P ((struct __exception *));
extern int matherr __P ((struct __exception *));
==================
math.h in glibc-2.0.7
==================
#ifdef __USE_SVID
/* In SVID error handling, `matherr' is called with this description
of the exceptional condition.
We have a problem when using C++ since `exception' is reserved in
C++. */
#ifdef __cplusplus
struct __exception
#else
struct exception
#endif
{
int type;
char *name;
double arg1;
double arg2;
double retval;
};
#ifdef __cplusplus
extern int __matherr __P ((struct __exception *));
extern int matherr __P ((struct __exception *));
#else
extern int __matherr __P ((struct exception *));
extern int matherr __P ((struct exception *));
#endif
================
floatfns.c in Xemacs
================
#if defined (HAVE_MATHERR) && !defined(__cplusplus)
int
matherr (struct exception *x)
{
Lisp_Object args;
if (! in_float)
/* Not called from emacs-lisp float routines; do the default thing. */
return 0;
/* if (!strcmp (x->name, "pow")) x->name = "expt"; */
args = Fcons (build_string (x->name),
Fcons (make_float (x->arg1),
((in_float == 2)
? Fcons (make_float (x->arg2), Qnil)
: Qnil)));
switch (x->type)
{
case DOMAIN: Fsignal (Qdomain_error, args); break;
case SING: Fsignal (Qsingularity_error, args); break;
case OVERFLOW: Fsignal (Qoverflow_error, args); break;
case UNDERFLOW: Fsignal (Qunderflow_error, args); break;
default: Fsignal (Qarith_error, args); break;
}
return 1; /* don't set errno or print a message */
}
#endif /* HAVE_MATHERR */