File: limits.cc

package info (click to toggle)
veccore 0.8.0%2Bds1-2
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 13,968 kB
  • sloc: cpp: 2,894; ansic: 1,332; makefile: 2
file content (71 lines) | stat: -rw-r--r-- 2,554 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
#include "test.h"

template <class T> class NumericLimitsTest : public VectorTypeTest<T> {};

TYPED_TEST_SUITE_P(NumericLimitsTest);

TYPED_TEST_P(NumericLimitsTest, Limits) {
  using Scalar_t = typename TestFixture::Scalar_t;
  using Vector_t = typename TestFixture::Vector_t;

  using vecCore::Get;
  using vecCore::NumericLimits;
  using vecCore::VectorSize;

  size_t N = VectorSize<Vector_t>();

  EXPECT_TRUE(NumericLimits<Scalar_t>::Min() ==
              Get(NumericLimits<Vector_t>::Min(), 0));
  EXPECT_TRUE(NumericLimits<Scalar_t>::Max() ==
              Get(NumericLimits<Vector_t>::Max(), 0));
  EXPECT_TRUE(NumericLimits<Scalar_t>::Lowest() ==
              Get(NumericLimits<Vector_t>::Lowest(), 0));
  EXPECT_TRUE(NumericLimits<Scalar_t>::Highest() ==
              Get(NumericLimits<Vector_t>::Highest(), 0));
  EXPECT_TRUE(NumericLimits<Scalar_t>::Epsilon() ==
              Get(NumericLimits<Vector_t>::Epsilon(), 0));
  EXPECT_TRUE(NumericLimits<Scalar_t>::Infinity() ==
              Get(NumericLimits<Vector_t>::Infinity(), 0));

  EXPECT_TRUE(NumericLimits<Scalar_t>::Min() ==
              Get(NumericLimits<Vector_t>::Min(), N - 1));
  EXPECT_TRUE(NumericLimits<Scalar_t>::Max() ==
              Get(NumericLimits<Vector_t>::Max(), N - 1));
  EXPECT_TRUE(NumericLimits<Scalar_t>::Lowest() ==
              Get(NumericLimits<Vector_t>::Lowest(), N - 1));
  EXPECT_TRUE(NumericLimits<Scalar_t>::Highest() ==
              Get(NumericLimits<Vector_t>::Highest(), N - 1));
  EXPECT_TRUE(NumericLimits<Scalar_t>::Epsilon() ==
              Get(NumericLimits<Vector_t>::Epsilon(), N - 1));
  EXPECT_TRUE(NumericLimits<Scalar_t>::Infinity() ==
              Get(NumericLimits<Vector_t>::Infinity(), N - 1));
}

REGISTER_TYPED_TEST_SUITE_P(NumericLimitsTest, Limits);

#define TEST_BACKEND_P(name, x)                                                \
  INSTANTIATE_TYPED_TEST_SUITE_P(name, NumericLimitsTest,                      \
                                 FloatTypes<vecCore::backend::x>);

#define TEST_BACKEND(x) TEST_BACKEND_P(x, x)

TEST_BACKEND(Scalar);
TEST_BACKEND(ScalarWrapper);

#ifdef VECCORE_ENABLE_VC
TEST_BACKEND(VcScalar);
TEST_BACKEND(VcVector);
TEST_BACKEND_P(VcSimdArray, VcSimdArray<4>);
#endif

#ifdef VECCORE_ENABLE_UMESIMD
TEST_BACKEND(UMESimd);
TEST_BACKEND_P(UMESimdArray, UMESimdArray<4>);
#endif

#ifdef VECCORE_ENABLE_STD_SIMD
TEST_BACKEND_P(SIMDScalar, SIMDScalar);
TEST_BACKEND_P(SIMDVector4, SIMDVector<4>);
TEST_BACKEND_P(SIMDVector8, SIMDVector<8>);
TEST_BACKEND_P(SIMDNative, SIMDNative);
#endif