(root)/
findutils-4.9.0/
gl/
lib/
modf.c
       1  /* Get signed integer and fractional parts of a floating-point number.
       2     Copyright (C) 2012-2022 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  #include <config.h>
      18  
      19  /* Specification.  */
      20  #include <math.h>
      21  
      22  double
      23  modf (double x, double *iptr)
      24  {
      25    if (isfinite (x))
      26      {
      27        double integer_part = trunc (x);
      28        *iptr = integer_part;
      29        return x - integer_part;
      30      }
      31    else
      32      {
      33        if (isinf (x))
      34          {
      35            *iptr = x;
      36            return 1.0 / x;
      37          }
      38        else /* isnand (x) */
      39          {
      40            *iptr = x;
      41            return x;
      42          }
      43      }
      44  }