⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⢠⣴⣿⣿⣿⣷⣼⣿⠀⣴⠾⠷⠶⠦⡄⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⢠⡤⢶⣦⣾⣿⣿⣿⣿⣿⣿⣿⠀⣿⣶⣶⣦⣄⠳⣤⣤⠄⠀⠀⠀
⠀⠀⠀⢀⣼⣳⡿⢻⣿⣿⣿⣿⣿⣿⣿⣿⣶⣿⣿⣗⠈⠙⠻⣶⣄⡀⠀⠀⠀
⠀⠀⠀⣰⠿⠁⢀⣼⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⡄⠀⠀⠈⠳⣤⠀⠀
⠀⠀⢀⡟⠀⢰⣿⠟⠻⢿⣿⣿⣿⣿⣿⣿⣿⣿⠉⠁⠈⠻⣶⣄⠀⠀⠈⠛⢦   
⠀⣀⡼⠃⠀⣼⡟⠀⠀⢸⣿⡿⠉⣿⡿⠿⠛⣿⡄⠀⠀⠀⠙⠿⣆⠀⠀⠀⠈
⠈⠁⠀⠀⢸⡟⠀⠀⠀⢸⣿⠀⠀⣿⠁⠀⠀⠈⠃⠀⠀⠀⠀⠀⠘⢷⡄⠀⠀
⠀⠀⠀⠀⣼⠃⠀⠀⠀⢸⡟⠀⠀⡿⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⢿⡆⠀
⠀⠀⠀⣠⡏⠀⠀⠀⠀⣼⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠻⠃⠀⠀⠀⠀⣻⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ 
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠻⠇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀

Current Dir: /usr/include/bits/

[FILE] a.out.h [ edit | delete | rename | download ]
[FILE] byteswap-16.h [ edit | delete | rename | download ]
[FILE] byteswap.h [ edit | delete | rename | download ]
[FILE] cmathcalls.h [ edit | delete | rename | download ]
[FILE] confname.h [ edit | delete | rename | download ]
[FILE] dirent.h [ edit | delete | rename | download ]
[FILE] dlfcn.h [ edit | delete | rename | download ]
[FILE] elfclass.h [ edit | delete | rename | download ]
[FILE] endian.h [ edit | delete | rename | download ]
[FILE] environments.h [ edit | delete | rename | download ]
[FILE] epoll.h [ edit | delete | rename | download ]
[FILE] errno.h [ edit | delete | rename | download ]
[FILE] error.h [ edit | delete | rename | download ]
[FILE] eventfd.h [ edit | delete | rename | download ]
[FILE] fcntl-linux.h [ edit | delete | rename | download ]
[FILE] fcntl.h [ edit | delete | rename | download ]
[FILE] fcntl2.h [ edit | delete | rename | download ]
[FILE] fenv.h [ edit | delete | rename | download ]
[FILE] fenvinline.h [ edit | delete | rename | download ]
[FILE] huge_val.h [ edit | delete | rename | download ]
[FILE] huge_valf.h [ edit | delete | rename | download ]
[FILE] huge_vall.h [ edit | delete | rename | download ]
[FILE] hwcap.h [ edit | delete | rename | download ]
[FILE] in.h [ edit | delete | rename | download ]
[FILE] inf.h [ edit | delete | rename | download ]
[FILE] initspin.h [ edit | delete | rename | download ]
[FILE] inotify.h [ edit | delete | rename | download ]
[FILE] ioctl-types.h [ edit | delete | rename | download ]
[FILE] ioctls.h [ edit | delete | rename | download ]
[FILE] ipc.h [ edit | delete | rename | download ]
[FILE] ipctypes.h [ edit | delete | rename | download ]
[FILE] libc-lock.h [ edit | delete | rename | download ]
[FILE] libio-ldbl.h [ edit | delete | rename | download ]
[FILE] link.h [ edit | delete | rename | download ]
[FILE] local_lim.h [ edit | delete | rename | download ]
[FILE] locale.h [ edit | delete | rename | download ]
[FILE] math-finite.h [ edit | delete | rename | download ]
[FILE] mathcalls.h [ edit | delete | rename | download ]
[FILE] mathdef.h [ edit | delete | rename | download ]
[FILE] mathinline.h [ edit | delete | rename | download ]
[FILE] mman.h [ edit | delete | rename | download ]
[FILE] monetary-ldbl.h [ edit | delete | rename | download ]
[FILE] mqueue.h [ edit | delete | rename | download ]
[FILE] mqueue2.h [ edit | delete | rename | download ]
[FILE] msq.h [ edit | delete | rename | download ]
[FILE] nan.h [ edit | delete | rename | download ]
[FILE] netdb.h [ edit | delete | rename | download ]
[FILE] param.h [ edit | delete | rename | download ]
[FILE] poll.h [ edit | delete | rename | download ]
[FILE] poll2.h [ edit | delete | rename | download ]
[FILE] posix1_lim.h [ edit | delete | rename | download ]
[FILE] posix2_lim.h [ edit | delete | rename | download ]
[FILE] posix_opt.h [ edit | delete | rename | download ]
[FILE] printf-ldbl.h [ edit | delete | rename | download ]
[FILE] pthreadtypes.h [ edit | delete | rename | download ]
[FILE] resource.h [ edit | delete | rename | download ]
[FILE] sched.h [ edit | delete | rename | download ]
[FILE] select.h [ edit | delete | rename | download ]
[FILE] select2.h [ edit | delete | rename | download ]
[FILE] sem.h [ edit | delete | rename | download ]
[FILE] semaphore.h [ edit | delete | rename | download ]
[FILE] setjmp.h [ edit | delete | rename | download ]
[FILE] setjmp2.h [ edit | delete | rename | download ]
[FILE] shm.h [ edit | delete | rename | download ]
[FILE] sigaction.h [ edit | delete | rename | download ]
[FILE] sigcontext.h [ edit | delete | rename | download ]
[FILE] siginfo.h [ edit | delete | rename | download ]
[FILE] signalfd.h [ edit | delete | rename | download ]
[FILE] signum.h [ edit | delete | rename | download ]
[FILE] sigset.h [ edit | delete | rename | download ]
[FILE] sigstack.h [ edit | delete | rename | download ]
[FILE] sigthread.h [ edit | delete | rename | download ]
[FILE] sockaddr.h [ edit | delete | rename | download ]
[FILE] socket.h [ edit | delete | rename | download ]
[FILE] socket2.h [ edit | delete | rename | download ]
[FILE] socket_type.h [ edit | delete | rename | download ]
[FILE] stab.def [ edit | delete | rename | download ]
[FILE] stat.h [ edit | delete | rename | download ]
[FILE] statfs.h [ edit | delete | rename | download ]
[FILE] statvfs.h [ edit | delete | rename | download ]
[FILE] stdio-ldbl.h [ edit | delete | rename | download ]
[FILE] stdio-lock.h [ edit | delete | rename | download ]
[FILE] stdio.h [ edit | delete | rename | download ]
[FILE] stdio2.h [ edit | delete | rename | download ]
[FILE] stdio_lim.h [ edit | delete | rename | download ]
[FILE] stdlib-float.h [ edit | delete | rename | download ]
[FILE] stdlib-ldbl.h [ edit | delete | rename | download ]
[FILE] stdlib.h [ edit | delete | rename | download ]
[FILE] string.h [ edit | delete | rename | download ]
[FILE] string2.h [ edit | delete | rename | download ]
[FILE] string3.h [ edit | delete | rename | download ]
[FILE] sys_errlist.h [ edit | delete | rename | download ]
[FILE] syscall.h [ edit | delete | rename | download ]
[FILE] sysctl.h [ edit | delete | rename | download ]
[FILE] syslog-ldbl.h [ edit | delete | rename | download ]
[FILE] syslog-path.h [ edit | delete | rename | download ]
[FILE] syslog.h [ edit | delete | rename | download ]
[FILE] termios.h [ edit | delete | rename | download ]
[FILE] time.h [ edit | delete | rename | download ]
[FILE] timerfd.h [ edit | delete | rename | download ]
[FILE] timex.h [ edit | delete | rename | download ]
[FILE] types.h [ edit | delete | rename | download ]
[FILE] typesizes.h [ edit | delete | rename | download ]
[FILE] uio.h [ edit | delete | rename | download ]
[FILE] unistd.h [ edit | delete | rename | download ]
[FILE] ustat.h [ edit | delete | rename | download ]
[FILE] utmp.h [ edit | delete | rename | download ]
[FILE] utmpx.h [ edit | delete | rename | download ]
[FILE] utsname.h [ edit | delete | rename | download ]
[FILE] waitflags.h [ edit | delete | rename | download ]
[FILE] waitstatus.h [ edit | delete | rename | download ]
[FILE] wchar-ldbl.h [ edit | delete | rename | download ]
[FILE] wchar.h [ edit | delete | rename | download ]
[FILE] wchar2.h [ edit | delete | rename | download ]
[FILE] wordsize.h [ edit | delete | rename | download ]
[FILE] xopen_lim.h [ edit | delete | rename | download ]

Viewing: /usr/include/bits/fenv.h

/* Copyright (C) 1997-2012 Free Software Foundation, Inc.
   This file is part of the GNU C Library.

   The GNU C Library is free software; you can redistribute it and/or
   modify it under the terms of the GNU Lesser General Public
   License as published by the Free Software Foundation; either
   version 2.1 of the License, or (at your option) any later version.

   The GNU C Library is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   Lesser General Public License for more details.

   You should have received a copy of the GNU Lesser General Public
   License along with the GNU C Library; if not, see
   <http://www.gnu.org/licenses/>.  */

#ifndef _FENV_H
# error "Never use <bits/fenv.h> directly; include <fenv.h> instead."
#endif

/* Define bits representing the exception.  We use the bit positions
   of the appropriate bits in the FPU control word.  */
enum
  {
    FE_INVALID =
#define FE_INVALID	0x01
      FE_INVALID,
    __FE_DENORM = 0x02,
    FE_DIVBYZERO =
#define FE_DIVBYZERO	0x04
      FE_DIVBYZERO,
    FE_OVERFLOW =
#define FE_OVERFLOW	0x08
      FE_OVERFLOW,
    FE_UNDERFLOW =
#define FE_UNDERFLOW	0x10
      FE_UNDERFLOW,
    FE_INEXACT =
#define FE_INEXACT	0x20
      FE_INEXACT
  };

#define FE_ALL_EXCEPT \
	(FE_INEXACT | FE_DIVBYZERO | FE_UNDERFLOW | FE_OVERFLOW | FE_INVALID)

/* The ix87 FPU supports all of the four defined rounding modes.  We
   use again the bit positions in the FPU control word as the values
   for the appropriate macros.  */
enum
  {
    FE_TONEAREST =
#define FE_TONEAREST	0
      FE_TONEAREST,
    FE_DOWNWARD =
#define FE_DOWNWARD	0x400
      FE_DOWNWARD,
    FE_UPWARD =
#define FE_UPWARD	0x800
      FE_UPWARD,
    FE_TOWARDZERO =
#define FE_TOWARDZERO	0xc00
      FE_TOWARDZERO
  };


/* Type representing exception flags.  */
typedef unsigned short int fexcept_t;


/* Type representing floating-point environment.  This structure
   corresponds to the layout of the block written by the `fstenv'
   instruction and has additional fields for the contents of the MXCSR
   register as written by the `stmxcsr' instruction.  */
typedef struct
  {
    unsigned short int __control_word;
    unsigned short int __unused1;
    unsigned short int __status_word;
    unsigned short int __unused2;
    unsigned short int __tags;
    unsigned short int __unused3;
    unsigned int __eip;
    unsigned short int __cs_selector;
    unsigned int __opcode:11;
    unsigned int __unused4:5;
    unsigned int __data_offset;
    unsigned short int __data_selector;
    unsigned short int __unused5;
#ifdef __x86_64__
    unsigned int __mxcsr;
#endif
  }
fenv_t;

/* If the default argument is used we use this value.  */
#define FE_DFL_ENV	((const fenv_t *) -1)

#ifdef __USE_GNU
/* Floating-point environment where none of the exception is masked.  */
# define FE_NOMASK_ENV	((const fenv_t *) -2)
#endif


#ifdef __USE_EXTERN_INLINES
__BEGIN_DECLS

/* Optimized versions.  */
extern int __REDIRECT_NTH (__feraiseexcept_renamed, (int), feraiseexcept);
__extern_inline int
__NTH (feraiseexcept (int __excepts))
{
  if (__builtin_constant_p (__excepts)
      && (__excepts & ~(FE_INVALID | FE_DIVBYZERO)) == 0)
    {
      if ((FE_INVALID & __excepts) != 0)
	{
	  /* One example of a invalid operation is 0.0 / 0.0.  */
	  float __f = 0.0;

# ifdef __SSE_MATH__
	  __asm__ __volatile__ ("divss %0, %0 " : : "x" (__f));
# else
	  __asm__ __volatile__ ("fdiv %%st, %%st(0); fwait"
				: "=t" (__f) : "0" (__f));
# endif
	  (void) &__f;
	}
      if ((FE_DIVBYZERO & __excepts) != 0)
	{
	  float __f = 1.0;
	  float __g = 0.0;

# ifdef __SSE_MATH__
	  __asm__ __volatile__ ("divss %1, %0" : : "x" (__f), "x" (__g));
# else
	  __asm__ __volatile__ ("fdivp %%st, %%st(1); fwait"
				: "=t" (__f) : "0" (__f), "u" (__g) : "st(1)");
# endif
	  (void) &__f;
	}

      return 0;
    }

  return __feraiseexcept_renamed (__excepts);
}

__END_DECLS
#endif

Upload File: