GCC Code Coverage Report
Directory: . Exec Total Coverage
File: test/unit/util/floatingpoint_black.cpp Lines: 86 86 100.0 %
Date: 2021-09-15 Branches: 210 676 31.1 %

Line Exec Source
1
/******************************************************************************
2
 * Top contributors (to current version):
3
 *   Aina Niemetz
4
 *
5
 * This file is part of the cvc5 project.
6
 *
7
 * Copyright (c) 2009-2021 by the authors listed in the file AUTHORS
8
 * in the top-level source directory and their institutional affiliations.
9
 * All rights reserved.  See the file COPYING in the top-level source
10
 * directory for licensing information.
11
 * ****************************************************************************
12
 *
13
 * Black box testing of cvc5::FloatingPoint.
14
 */
15
16
#include "test.h"
17
#include "util/floatingpoint.h"
18
19
namespace cvc5 {
20
namespace test {
21
22
16
class TestUtilBlackFloatingPoint : public TestInternal
23
{
24
};
25
26
13
TEST_F(TestUtilBlackFloatingPoint, makeMinSubnormal)
27
{
28
2
  FloatingPointSize size16(5, 11);
29
2
  FloatingPointSize size32(8, 24);
30
2
  FloatingPointSize size64(11, 53);
31
2
  FloatingPointSize size128(15, 113);
32
33
4
  FloatingPoint fp16 = FloatingPoint::makeMinSubnormal(size16, true);
34
2
  ASSERT_TRUE(fp16.isSubnormal());
35
4
  FloatingPoint mfp16 = FloatingPoint::makeMinSubnormal(size16, false);
36
2
  ASSERT_TRUE(mfp16.isSubnormal());
37
38
4
  FloatingPoint fp32 = FloatingPoint::makeMinSubnormal(size32, true);
39
2
  ASSERT_TRUE(fp32.isSubnormal());
40
4
  FloatingPoint mfp32 = FloatingPoint::makeMinSubnormal(size32, false);
41
2
  ASSERT_TRUE(mfp32.isSubnormal());
42
43
4
  FloatingPoint fp64 = FloatingPoint::makeMinSubnormal(size64, true);
44
2
  ASSERT_TRUE(fp64.isSubnormal());
45
4
  FloatingPoint mfp64 = FloatingPoint::makeMinSubnormal(size64, false);
46
2
  ASSERT_TRUE(mfp64.isSubnormal());
47
48
4
  FloatingPoint fp128 = FloatingPoint::makeMinSubnormal(size128, true);
49
2
  ASSERT_TRUE(fp128.isSubnormal());
50
4
  FloatingPoint mfp128 = FloatingPoint::makeMinSubnormal(size128, false);
51
2
  ASSERT_TRUE(mfp128.isSubnormal());
52
}
53
54
13
TEST_F(TestUtilBlackFloatingPoint, makeMaxSubnormal)
55
{
56
2
  FloatingPointSize size16(5, 11);
57
2
  FloatingPointSize size32(8, 24);
58
2
  FloatingPointSize size64(11, 53);
59
2
  FloatingPointSize size128(15, 113);
60
61
4
  FloatingPoint fp16 = FloatingPoint::makeMaxSubnormal(size16, true);
62
2
  ASSERT_TRUE(fp16.isSubnormal());
63
4
  FloatingPoint mfp16 = FloatingPoint::makeMaxSubnormal(size16, false);
64
2
  ASSERT_TRUE(mfp16.isSubnormal());
65
66
4
  FloatingPoint fp32 = FloatingPoint::makeMaxSubnormal(size32, true);
67
2
  ASSERT_TRUE(fp32.isSubnormal());
68
4
  FloatingPoint mfp32 = FloatingPoint::makeMaxSubnormal(size32, false);
69
2
  ASSERT_TRUE(mfp32.isSubnormal());
70
71
4
  FloatingPoint fp64 = FloatingPoint::makeMaxSubnormal(size64, true);
72
2
  ASSERT_TRUE(fp64.isSubnormal());
73
4
  FloatingPoint mfp64 = FloatingPoint::makeMaxSubnormal(size64, false);
74
2
  ASSERT_TRUE(mfp64.isSubnormal());
75
76
4
  FloatingPoint fp128 = FloatingPoint::makeMaxSubnormal(size128, true);
77
2
  ASSERT_TRUE(fp128.isSubnormal());
78
4
  FloatingPoint mfp128 = FloatingPoint::makeMaxSubnormal(size128, false);
79
2
  ASSERT_TRUE(mfp128.isSubnormal());
80
}
81
82
13
TEST_F(TestUtilBlackFloatingPoint, makeMinNormal)
83
{
84
2
  FloatingPointSize size16(5, 11);
85
2
  FloatingPointSize size32(8, 24);
86
2
  FloatingPointSize size64(11, 53);
87
2
  FloatingPointSize size128(15, 113);
88
89
4
  FloatingPoint fp16 = FloatingPoint::makeMinNormal(size16, true);
90
2
  ASSERT_TRUE(fp16.isNormal());
91
4
  FloatingPoint mfp16 = FloatingPoint::makeMinNormal(size16, false);
92
2
  ASSERT_TRUE(mfp16.isNormal());
93
94
4
  FloatingPoint fp32 = FloatingPoint::makeMinNormal(size32, true);
95
2
  ASSERT_TRUE(fp32.isNormal());
96
4
  FloatingPoint mfp32 = FloatingPoint::makeMinNormal(size32, false);
97
2
  ASSERT_TRUE(mfp32.isNormal());
98
99
4
  FloatingPoint fp64 = FloatingPoint::makeMinNormal(size64, true);
100
2
  ASSERT_TRUE(fp64.isNormal());
101
4
  FloatingPoint mfp64 = FloatingPoint::makeMinNormal(size64, false);
102
2
  ASSERT_TRUE(mfp64.isNormal());
103
104
4
  FloatingPoint fp128 = FloatingPoint::makeMinNormal(size128, true);
105
2
  ASSERT_TRUE(fp128.isNormal());
106
4
  FloatingPoint mfp128 = FloatingPoint::makeMinNormal(size128, false);
107
2
  ASSERT_TRUE(mfp128.isNormal());
108
}
109
110
13
TEST_F(TestUtilBlackFloatingPoint, makeMaxNormal)
111
{
112
2
  FloatingPointSize size16(5, 11);
113
2
  FloatingPointSize size32(8, 24);
114
2
  FloatingPointSize size64(11, 53);
115
2
  FloatingPointSize size128(15, 113);
116
117
4
  FloatingPoint fp16 = FloatingPoint::makeMaxNormal(size16, true);
118
2
  ASSERT_TRUE(fp16.isNormal());
119
4
  FloatingPoint mfp16 = FloatingPoint::makeMaxNormal(size16, false);
120
2
  ASSERT_TRUE(mfp16.isNormal());
121
122
4
  FloatingPoint fp32 = FloatingPoint::makeMaxNormal(size32, true);
123
2
  ASSERT_TRUE(fp32.isNormal());
124
4
  FloatingPoint mfp32 = FloatingPoint::makeMaxNormal(size32, false);
125
2
  ASSERT_TRUE(mfp32.isNormal());
126
127
4
  FloatingPoint fp64 = FloatingPoint::makeMaxNormal(size64, true);
128
2
  ASSERT_TRUE(fp64.isNormal());
129
4
  FloatingPoint mfp64 = FloatingPoint::makeMaxNormal(size64, false);
130
2
  ASSERT_TRUE(mfp64.isNormal());
131
132
4
  FloatingPoint fp128 = FloatingPoint::makeMaxNormal(size128, true);
133
2
  ASSERT_TRUE(fp128.isNormal());
134
4
  FloatingPoint mfp128 = FloatingPoint::makeMaxNormal(size128, false);
135
2
  ASSERT_TRUE(mfp128.isNormal());
136
}
137
}  // namespace test
138
15
}  // namespace cvc5