Blame math/math-svid-compat.h

Packit Service 82fcde
/* Declarations for SVID math error handling compatibility.
Packit Service 82fcde
   Copyright (C) 1991-2018 Free Software Foundation, Inc.
Packit Service 82fcde
   This file is part of the GNU C Library.
Packit Service 82fcde
Packit Service 82fcde
   The GNU C Library is free software; you can redistribute it and/or
Packit Service 82fcde
   modify it under the terms of the GNU Lesser General Public
Packit Service 82fcde
   License as published by the Free Software Foundation; either
Packit Service 82fcde
   version 2.1 of the License, or (at your option) any later version.
Packit Service 82fcde
Packit Service 82fcde
   The GNU C Library is distributed in the hope that it will be useful,
Packit Service 82fcde
   but WITHOUT ANY WARRANTY; without even the implied warranty of
Packit Service 82fcde
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
Packit Service 82fcde
   Lesser General Public License for more details.
Packit Service 82fcde
Packit Service 82fcde
   You should have received a copy of the GNU Lesser General Public
Packit Service 82fcde
   License along with the GNU C Library; if not, see
Packit Service 82fcde
   <http://www.gnu.org/licenses/>.  */
Packit Service 82fcde
Packit Service 82fcde
#ifndef	_MATH_SVID_COMPAT_H
Packit Service 82fcde
#define	_MATH_SVID_COMPAT_H	1
Packit Service 82fcde
Packit Service 82fcde
/* Support for various different standard error handling behaviors.  */
Packit Service 82fcde
typedef enum
Packit Service 82fcde
{
Packit Service 82fcde
  _IEEE_ = -1,	/* According to IEEE 754/IEEE 854.  */
Packit Service 82fcde
  _SVID_,	/* According to System V, release 4.  */
Packit Service 82fcde
  _XOPEN_,	/* Nowadays also Unix98.  */
Packit Service 82fcde
  _POSIX_,
Packit Service 82fcde
  _ISOC_	/* Actually this is ISO C99.  */
Packit Service 82fcde
} _LIB_VERSION_TYPE;
Packit Service 82fcde
Packit Service 82fcde
/* This variable can be changed at run-time to any of the values above to
Packit Service 82fcde
   affect floating point error handling behavior (it may also be necessary
Packit Service 82fcde
   to change the hardware FPU exception settings).  */
Packit Service 82fcde
extern _LIB_VERSION_TYPE _LIB_VERSION;
Packit Service 82fcde
Packit Service 82fcde
/* In SVID error handling, `matherr' is called with this description
Packit Service 82fcde
   of the exceptional condition.  */
Packit Service 82fcde
struct exception
Packit Service 82fcde
  {
Packit Service 82fcde
    int type;
Packit Service 82fcde
    char *name;
Packit Service 82fcde
    double arg1;
Packit Service 82fcde
    double arg2;
Packit Service 82fcde
    double retval;
Packit Service 82fcde
  };
Packit Service 82fcde
Packit Service 82fcde
extern int matherr (struct exception *__exc);
Packit Service 82fcde
extern int __matherr (struct exception *__exc);
Packit Service 82fcde
Packit Service 82fcde
#define X_TLOSS	1.41484755040568800000e+16
Packit Service 82fcde
Packit Service 82fcde
/* Types of exceptions in the `type' field.  */
Packit Service 82fcde
#define DOMAIN		1
Packit Service 82fcde
#define SING		2
Packit Service 82fcde
#define OVERFLOW	3
Packit Service 82fcde
#define UNDERFLOW	4
Packit Service 82fcde
#define TLOSS		5
Packit Service 82fcde
#define PLOSS		6
Packit Service 82fcde
Packit Service 82fcde
/* SVID mode specifies returning this large value instead of infinity.  */
Packit Service 82fcde
#define HUGE		3.40282347e+38F
Packit Service 82fcde
Packit Service 82fcde
/* The above definitions may be used in testcases.  The following code
Packit Service 82fcde
   is only used in the implementation.  */
Packit Service 82fcde
Packit Service 82fcde
#ifdef _LIBC
Packit Service 82fcde
/* fdlibm kernel function */
Packit Service 82fcde
extern double __kernel_standard (double, double, int);
Packit Service 82fcde
extern float __kernel_standard_f (float, float, int);
Packit Service 82fcde
extern long double __kernel_standard_l (long double, long double, int);
Packit Service 82fcde
Packit Service 82fcde
# include <shlib-compat.h>
Packit Service 82fcde
# define LIBM_SVID_COMPAT SHLIB_COMPAT (libm, GLIBC_2_0, GLIBC_2_27)
Packit Service 82fcde
# if LIBM_SVID_COMPAT
Packit Service 82fcde
compat_symbol_reference (libm, matherr, matherr, GLIBC_2_0);
Packit Service 82fcde
compat_symbol_reference (libm, _LIB_VERSION, _LIB_VERSION, GLIBC_2_0);
Packit Service 82fcde
# else
Packit Service 82fcde
/* Except when building compat code, optimize out references to
Packit Service 82fcde
   _LIB_VERSION and matherr.  */
Packit Service 82fcde
#  define _LIB_VERSION _POSIX_
Packit Service 82fcde
#  define matherr(EXC) ((void) (EXC), 0)
Packit Service 82fcde
# endif
Packit Service 82fcde
#endif
Packit Service 82fcde
Packit Service 82fcde
#endif /* math-svid-compat.h.  */