LCOV - code coverage report
Current view: top level - modules/fdlibm/src - s_rintf.cpp (source / functions) Hit Total Coverage
Test: output.info Lines: 0 16 0.0 %
Date: 2017-07-14 16:53:18 Functions: 0 1 0.0 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : /* s_rintf.c -- float version of s_rint.c.
       2             :  * Conversion to float by Ian Lance Taylor, Cygnus Support, ian@cygnus.com.
       3             :  */
       4             : 
       5             : /*
       6             :  * ====================================================
       7             :  * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
       8             :  *
       9             :  * Developed at SunPro, a Sun Microsystems, Inc. business.
      10             :  * Permission to use, copy, modify, and distribute this
      11             :  * software is freely granted, provided that this notice
      12             :  * is preserved.
      13             :  * ====================================================
      14             :  */
      15             : 
      16             : //#include <sys/cdefs.h>
      17             : //__FBSDID("$FreeBSD$");
      18             : 
      19             : #include <float.h>
      20             : #include <stdint.h>
      21             : 
      22             : #include "math_private.h"
      23             : 
      24             : static const float
      25             : TWO23[2]={
      26             :   8.3886080000e+06, /* 0x4b000000 */
      27             :  -8.3886080000e+06, /* 0xcb000000 */
      28             : };
      29             : 
      30             : float
      31           0 : rintf(float x)
      32             : {
      33             :         int32_t i0,j0,sx;
      34             :         float w,t;
      35           0 :         GET_FLOAT_WORD(i0,x);
      36           0 :         sx = (i0>>31)&1;
      37           0 :         j0 = ((i0>>23)&0xff)-0x7f;
      38           0 :         if(j0<23) {
      39           0 :             if(j0<0) {
      40           0 :                 if((i0&0x7fffffff)==0) return x;
      41           0 :                 STRICT_ASSIGN(float,w,TWO23[sx]+x);
      42           0 :                 t =  w-TWO23[sx];
      43           0 :                 GET_FLOAT_WORD(i0,t);
      44           0 :                 SET_FLOAT_WORD(t,(i0&0x7fffffff)|(sx<<31));
      45           0 :                 return t;
      46             :             }
      47           0 :             STRICT_ASSIGN(float,w,TWO23[sx]+x);
      48           0 :             return w-TWO23[sx];
      49             :         }
      50           0 :         if(j0==0x80) return x+x;        /* inf or NaN */
      51           0 :         else return x;                  /* x is integral */
      52             : }

Generated by: LCOV version 1.13