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

Function CheckFloatingZeroEquality

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

Source from the content-addressed store, hash-verified

2381
2382template <typename TYPE>
2383void CheckFloatingZeroEquality() {
2384 using V = NumericArgType<TYPE>;
2385 std::shared_ptr<Array> a, b;
2386 std::shared_ptr<DataType> type = TypeTraits<TYPE>::type_singleton();
2387
2388 ArrayFromVector<TYPE, V>(type, {true, false}, {V(0.0), V(1.0)}, &a);
2389 ArrayFromVector<TYPE, V>(type, {true, false}, {V(0.0), V(1.0)}, &b);
2390 ASSERT_TRUE(a->Equals(b));
2391 ASSERT_TRUE(b->Equals(a));
2392 for (auto nans_equal : {false, true}) {
2393 for (auto signed_zeros_equal : {false, true}) {
2394 auto opts =
2395 EqualOptions().nans_equal(nans_equal).signed_zeros_equal(signed_zeros_equal);
2396 ASSERT_TRUE(a->Equals(b, opts));
2397 ASSERT_TRUE(b->Equals(a, opts));
2398 ASSERT_TRUE(a->RangeEquals(b, 0, 2, 0, opts));
2399 ASSERT_TRUE(b->RangeEquals(a, 0, 2, 0, opts));
2400 ASSERT_TRUE(a->RangeEquals(b, 1, 2, 1, opts));
2401 ASSERT_TRUE(b->RangeEquals(a, 1, 2, 1, opts));
2402 }
2403 }
2404
2405 ArrayFromVector<TYPE, V>(type, {true, false}, {V(0.0), V(1.0)}, &a);
2406 ArrayFromVector<TYPE, V>(type, {true, false}, {V(-0.0), V(1.0)}, &b);
2407 for (auto nans_equal : {false, true}) {
2408 auto opts = EqualOptions().nans_equal(nans_equal);
2409 ASSERT_TRUE(a->Equals(b, opts));
2410 ASSERT_TRUE(b->Equals(a, opts));
2411 ASSERT_FALSE(a->Equals(b, opts.signed_zeros_equal(false)));
2412 ASSERT_FALSE(b->Equals(a, opts.signed_zeros_equal(false)));
2413 ASSERT_TRUE(a->RangeEquals(b, 0, 2, 0));
2414 ASSERT_TRUE(b->RangeEquals(a, 0, 2, 0));
2415 ASSERT_FALSE(a->RangeEquals(b, 0, 2, 0, opts.signed_zeros_equal(false)));
2416 ASSERT_FALSE(b->RangeEquals(a, 0, 2, 0, opts.signed_zeros_equal(false)));
2417 ASSERT_TRUE(a->RangeEquals(b, 1, 2, 1));
2418 ASSERT_TRUE(b->RangeEquals(a, 1, 2, 1));
2419 ASSERT_TRUE(a->RangeEquals(b, 1, 2, 1, opts.signed_zeros_equal(false)));
2420 ASSERT_TRUE(b->RangeEquals(a, 1, 2, 1, opts.signed_zeros_equal(false)));
2421 }
2422}
2423
2424template <typename TYPE>
2425void CheckFloatApproxEqualsWithUlpDistance() {

Callers

nothing calls this directly

Calls 4

EqualOptionsClass · 0.85
RangeEqualsMethod · 0.80
type_singletonFunction · 0.50
EqualsMethod · 0.45

Tested by

no test coverage detected