Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-04-06 12:13:15

0001 #include "catch.hpp"
0002 
0003 #include "FWCore/Utilities/interface/isFinite.h"
0004 
0005 #include <limits>
0006 #include <cmath>
0007 #include <cstdlib>
0008 #include <unistd.h>
0009 #include <sys/types.h>
0010 
0011 TEST_CASE("test isFinite", "[isFinite]") {
0012   using namespace edm;
0013   typedef long double LD;
0014 
0015   //want to get a non-zero positive number that the compiler can't inline
0016   int n = getpid();
0017   double zero = atof("0");
0018 
0019   REQUIRE(isFinite(double(0)));
0020   REQUIRE(isFinite(float(0)));
0021   REQUIRE(isFinite(double(-3.14)));
0022   REQUIRE(isFinite(float(-3.14)));
0023   REQUIRE(!isFinite(std::sqrt(-double(n))));
0024   REQUIRE(!isFinite(std::sqrt(-float(n))));
0025   REQUIRE(!isFinite(1. / zero));
0026   REQUIRE(!isFinite(float(1.) / float(zero)));
0027   REQUIRE(!isFinite(-1. / zero));
0028   REQUIRE(!isFinite(-1.f / float(zero)));
0029 
0030   //
0031 
0032   REQUIRE(!isNotFinite(double(0)));
0033   REQUIRE(!isNotFinite(float(0)));
0034   REQUIRE(!isNotFinite(double(-3.14)));
0035   REQUIRE(!isNotFinite(float(-3.14)));
0036   REQUIRE(isNotFinite(std::sqrt(-double(n))));
0037   REQUIRE(isNotFinite(std::sqrt(-float(n))));
0038   REQUIRE(isNotFinite(-1.f / float(zero)));
0039   REQUIRE(isNotFinite(float(1.) / float(zero)));
0040   REQUIRE(isNotFinite(-1. / zero));
0041   REQUIRE(isNotFinite(-1.f / float(zero)));
0042 
0043   REQUIRE(!isNotFinite(LD(3.14)));
0044   REQUIRE(isNotFinite(-1 / LD(zero)));
0045   REQUIRE(isNotFinite(std::sqrt(-LD(n))));
0046 }