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
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 }