MCPcopy Create free account
hub / github.com/apache/arrow / CheckFloatingZeroEquality

Function CheckFloatingZeroEquality

cpp/src/arrow/array/array_test.cc:2375–2414  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

2373
2374template <typename TYPE>
2375void CheckFloatingZeroEquality() {
2376 using V = NumericArgType<TYPE>;
2377 std::shared_ptr<Array> a, b;
2378 std::shared_ptr<DataType> type = TypeTraits<TYPE>::type_singleton();
2379
2380 ArrayFromVector<TYPE, V>(type, {true, false}, {V(0.0), V(1.0)}, &a);
2381 ArrayFromVector<TYPE, V>(type, {true, false}, {V(0.0), V(1.0)}, &b);
2382 ASSERT_TRUE(a->Equals(b));
2383 ASSERT_TRUE(b->Equals(a));
2384 for (auto nans_equal : {false, true}) {
2385 for (auto signed_zeros_equal : {false, true}) {
2386 auto opts =
2387 EqualOptions().nans_equal(nans_equal).signed_zeros_equal(signed_zeros_equal);
2388 ASSERT_TRUE(a->Equals(b, opts));
2389 ASSERT_TRUE(b->Equals(a, opts));
2390 ASSERT_TRUE(a->RangeEquals(b, 0, 2, 0, opts));
2391 ASSERT_TRUE(b->RangeEquals(a, 0, 2, 0, opts));
2392 ASSERT_TRUE(a->RangeEquals(b, 1, 2, 1, opts));
2393 ASSERT_TRUE(b->RangeEquals(a, 1, 2, 1, opts));
2394 }
2395 }
2396
2397 ArrayFromVector<TYPE, V>(type, {true, false}, {V(0.0), V(1.0)}, &a);
2398 ArrayFromVector<TYPE, V>(type, {true, false}, {V(-0.0), V(1.0)}, &b);
2399 for (auto nans_equal : {false, true}) {
2400 auto opts = EqualOptions().nans_equal(nans_equal);
2401 ASSERT_TRUE(a->Equals(b, opts));
2402 ASSERT_TRUE(b->Equals(a, opts));
2403 ASSERT_FALSE(a->Equals(b, opts.signed_zeros_equal(false)));
2404 ASSERT_FALSE(b->Equals(a, opts.signed_zeros_equal(false)));
2405 ASSERT_TRUE(a->RangeEquals(b, 0, 2, 0));
2406 ASSERT_TRUE(b->RangeEquals(a, 0, 2, 0));
2407 ASSERT_FALSE(a->RangeEquals(b, 0, 2, 0, opts.signed_zeros_equal(false)));
2408 ASSERT_FALSE(b->RangeEquals(a, 0, 2, 0, opts.signed_zeros_equal(false)));
2409 ASSERT_TRUE(a->RangeEquals(b, 1, 2, 1));
2410 ASSERT_TRUE(b->RangeEquals(a, 1, 2, 1));
2411 ASSERT_TRUE(a->RangeEquals(b, 1, 2, 1, opts.signed_zeros_equal(false)));
2412 ASSERT_TRUE(b->RangeEquals(a, 1, 2, 1, opts.signed_zeros_equal(false)));
2413 }
2414}
2415
2416TEST(TestPrimitiveAdHoc, FloatingApproxEquals) {
2417 CheckApproxEquals<FloatType>();

Callers

nothing calls this directly

Calls 6

signed_zeros_equalMethod · 0.80
nans_equalMethod · 0.80
RangeEqualsMethod · 0.80
type_singletonFunction · 0.50
EqualOptionsClass · 0.50
EqualsMethod · 0.45

Tested by

no test coverage detected