root/maint/gnulib/lib/isfinite.c

/* [previous][next][first][last][top][bottom][index][help] */

DEFINITIONS

This source file includes following definitions.
  1. gl_isfinitef
  2. gl_isfinited
  3. gl_isfinitel

   1 /* Test for finite value (zero, subnormal, or normal, and not infinite or NaN).
   2    Copyright (C) 2007-2021 Free Software Foundation, Inc.
   3 
   4    This file is free software: you can redistribute it and/or modify
   5    it under the terms of the GNU Lesser General Public License as
   6    published by the Free Software Foundation; either version 3 of the
   7    License, or (at your option) any later version.
   8 
   9    This file is distributed in the hope that it will be useful,
  10    but WITHOUT ANY WARRANTY; without even the implied warranty of
  11    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  12    GNU Lesser General Public License for more details.
  13 
  14    You should have received a copy of the GNU Lesser General Public License
  15    along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
  16 
  17 /* Written by Ben Pfaff <blp@gnu.org>, 2007. */
  18 
  19 #include <config.h>
  20 
  21 #include "isnanf-nolibm.h"
  22 #include "isnand-nolibm.h"
  23 #include "isnanl-nolibm.h"
  24 
  25 /* The "cc" compiler on HP-UX 11.11, when optimizing, simplifies the test
  26    x - y == 0.0  to  x == y, a simplification which is invalid when x and y
  27    are Infinity.  Disable this optimization.  */
  28 #if defined __hpux && !defined __GNUC__
  29 static float zerof;
  30 static double zerod;
  31 static long double zerol;
  32 #else
  33 # define zerof 0.f
  34 # define zerod 0.
  35 # define zerol 0.L
  36 #endif
  37 
  38 int gl_isfinitef (float x)
     /* [previous][next][first][last][top][bottom][index][help] */
  39 {
  40   return !isnanf (x) && x - x == zerof;
  41 }
  42 
  43 int gl_isfinited (double x)
     /* [previous][next][first][last][top][bottom][index][help] */
  44 {
  45   return !isnand (x) && x - x == zerod;
  46 }
  47 
  48 int gl_isfinitel (long double x)
     /* [previous][next][first][last][top][bottom][index][help] */
  49 {
  50   return !isnanl (x) && x - x == zerol;
  51 }

/* [previous][next][first][last][top][bottom][index][help] */