diff --git a/src/plugins/template/tests/functional/CMakeLists.txt b/src/plugins/template/tests/functional/CMakeLists.txt index 983ee2534a4..aef4a4ecfa7 100644 --- a/src/plugins/template/tests/functional/CMakeLists.txt +++ b/src/plugins/template/tests/functional/CMakeLists.txt @@ -20,7 +20,7 @@ ov_add_test_target( INCLUDES "${TEMPLATE_PLUGIN_SOURCE_DIR}/include" "${CMAKE_CURRENT_SOURCE_DIR}/op_reference" - # ADD_CPPLINT + ADD_CLANG_FORMAT LABELS TEMPLATE ) diff --git a/src/plugins/template/tests/functional/core_config.cpp b/src/plugins/template/tests/functional/core_config.cpp index 39c114e8eab..2c54a0d17b2 100644 --- a/src/plugins/template/tests/functional/core_config.cpp +++ b/src/plugins/template/tests/functional/core_config.cpp @@ -3,10 +3,10 @@ // #include "functional_test_utils/core_config.hpp" + #include "shared_test_classes/base/ov_subgraph.hpp" -void CoreConfiguration(LayerTestsUtils::LayerTestsCommon* test) { -} +void CoreConfiguration(LayerTestsUtils::LayerTestsCommon* test) {} namespace ov { namespace test { diff --git a/src/plugins/template/tests/functional/op_reference/abs.cpp b/src/plugins/template/tests/functional/op_reference/abs.cpp index 944886da90b..099b614afa3 100644 --- a/src/plugins/template/tests/functional/op_reference/abs.cpp +++ b/src/plugins/template/tests/functional/op_reference/abs.cpp @@ -2,10 +2,12 @@ // SPDX-License-Identifier: Apache-2.0 // -#include -#include "base_reference_test.hpp" #include "openvino/op/abs.hpp" +#include + +#include "base_reference_test.hpp" + using namespace ov; using namespace reference_tests; @@ -50,8 +52,8 @@ public: private: static std::shared_ptr CreateFunction(const PartialShape& input_shape, - const element::Type& input_type, - const element::Type& expected_output_type) { + const element::Type& input_type, + const element::Type& expected_output_type) { const auto in = std::make_shared(input_type, input_shape); const auto log = std::make_shared(in); return std::make_shared(NodeVector{log}, ParameterVector{in}); @@ -66,12 +68,10 @@ template std::vector generateParamsForAbsFloat() { using T = typename element_type_traits::value_type; - std::vector params{ - AbsParams(ov::PartialShape{4}, - IN_ET, - std::vector{1.f, -2.f, 0.f, -4.75f}, - std::vector{1.f, 2.f, 0.f, 4.75f}) - }; + std::vector params{AbsParams(ov::PartialShape{4}, + IN_ET, + std::vector{1.f, -2.f, 0.f, -4.75f}, + std::vector{1.f, 2.f, 0.f, 4.75f})}; return params; } @@ -80,11 +80,7 @@ std::vector generateParamsForAbsInt() { using T = typename element_type_traits::value_type; std::vector params{ - AbsParams(ov::PartialShape{4}, - IN_ET, - std::vector{1, -2, 0, -4}, - std::vector{1, 2, 0, 4}) - }; + AbsParams(ov::PartialShape{4}, IN_ET, std::vector{1, -2, 0, -4}, std::vector{1, 2, 0, 4})}; return params; } @@ -93,24 +89,18 @@ std::vector generateParamsForAbsUInt() { using T = typename element_type_traits::value_type; std::vector params{ - AbsParams(ov::PartialShape{4}, - IN_ET, - std::vector{1, 2, 0, 4}, - std::vector{1, 2, 0, 4}) - }; + AbsParams(ov::PartialShape{4}, IN_ET, std::vector{1, 2, 0, 4}, std::vector{1, 2, 0, 4})}; return params; } std::vector generateCombinedParamsForAbs() { - const std::vector> allTypeParams{ - generateParamsForAbsFloat(), - generateParamsForAbsFloat(), - generateParamsForAbsFloat(), - generateParamsForAbsInt(), - generateParamsForAbsInt(), - generateParamsForAbsUInt(), - generateParamsForAbsUInt() - }; + const std::vector> allTypeParams{generateParamsForAbsFloat(), + generateParamsForAbsFloat(), + generateParamsForAbsFloat(), + generateParamsForAbsInt(), + generateParamsForAbsInt(), + generateParamsForAbsUInt(), + generateParamsForAbsUInt()}; std::vector combinedParams; @@ -121,10 +111,9 @@ std::vector generateCombinedParamsForAbs() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P( - smoke_Abs_With_Hardcoded_Refs, - ReferenceAbsLayerTest, - ::testing::ValuesIn(generateCombinedParamsForAbs()), - ReferenceAbsLayerTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_Abs_With_Hardcoded_Refs, + ReferenceAbsLayerTest, + ::testing::ValuesIn(generateCombinedParamsForAbs()), + ReferenceAbsLayerTest::getTestCaseName); } // namespace diff --git a/src/plugins/template/tests/functional/op_reference/acos.cpp b/src/plugins/template/tests/functional/op_reference/acos.cpp index 22402222df3..7a661ee098f 100644 --- a/src/plugins/template/tests/functional/op_reference/acos.cpp +++ b/src/plugins/template/tests/functional/op_reference/acos.cpp @@ -2,9 +2,10 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/acos.hpp" + #include -#include "openvino/op/acos.hpp" #include "base_reference_test.hpp" using namespace ov; @@ -42,7 +43,7 @@ private: static std::shared_ptr CreateFunction(const Shape& shape, const element::Type& type) { const auto in = std::make_shared(type, shape); const auto acos = std::make_shared(in); - return std::make_shared(NodeVector {acos}, ParameterVector {in}); + return std::make_shared(NodeVector{acos}, ParameterVector{in}); } }; @@ -53,30 +54,55 @@ TEST_P(ReferenceAcosLayerTest, AcosWithHardcodedRefs) { } // namespace INSTANTIATE_TEST_SUITE_P( - smoke_Acos_With_Hardcoded_Refs, ReferenceAcosLayerTest, - ::testing::Values(Builder {} - .input({{11}, element::f16, std::vector {-1.f, -0.75f, -0.5f, -0.25f, -0.125f, - 0.f, 0.125f, 0.25f, 0.5f, 0.75f, 1.f}}) - .expected({{11}, element::f16, std::vector {3.14159265f, 2.41885841f, 2.09439510f, 1.82347658f, 1.69612416f, - 1.57079633f, 1.44546850f, 1.31811607f, 1.04719755f, 0.72273425f, - 0.00000000f}}), - Builder {} - .input({{11}, element::f32, std::vector {-1.f, -0.75f, -0.5f, -0.25f, -0.125f, - 0.f, 0.125f, 0.25f, 0.5f, 0.75f, 1.f}}) - .expected({{11}, element::f32, std::vector {3.14159265f, 2.41885841f, 2.09439510f, 1.82347658f, 1.69612416f, - 1.57079633f, 1.44546850f, 1.31811607f, 1.04719755f, 0.72273425f, - 0.00000000f}}), - Builder {} - .input({{3}, element::i32, std::vector {-1, 0, 1}}) - .expected({{3}, element::i32, std::vector {3, 2, 0}}), - Builder {} - .input({{3}, element::i64, std::vector {-1, 0, 1}}) - .expected({{3}, element::i64, std::vector {3, 2, 0}}), - Builder {} - .input({{2}, element::u32, std::vector {0, 1}}) - .expected({{2}, element::u32, std::vector {2, 0}}), - Builder {} - .input({{2}, element::u64, std::vector {0, 1}}) - .expected({{2}, element::u64, std::vector {2, 0}})), + smoke_Acos_With_Hardcoded_Refs, + ReferenceAcosLayerTest, + ::testing::Values( + Builder{} + .input( + {{11}, + element::f16, + std::vector{-1.f, -0.75f, -0.5f, -0.25f, -0.125f, 0.f, 0.125f, 0.25f, 0.5f, 0.75f, 1.f}}) + .expected({{11}, + element::f16, + std::vector{3.14159265f, + 2.41885841f, + 2.09439510f, + 1.82347658f, + 1.69612416f, + 1.57079633f, + 1.44546850f, + 1.31811607f, + 1.04719755f, + 0.72273425f, + 0.00000000f}}), + Builder{} + .input({{11}, + element::f32, + std::vector{-1.f, -0.75f, -0.5f, -0.25f, -0.125f, 0.f, 0.125f, 0.25f, 0.5f, 0.75f, 1.f}}) + .expected({{11}, + element::f32, + std::vector{3.14159265f, + 2.41885841f, + 2.09439510f, + 1.82347658f, + 1.69612416f, + 1.57079633f, + 1.44546850f, + 1.31811607f, + 1.04719755f, + 0.72273425f, + 0.00000000f}}), + Builder{} + .input({{3}, element::i32, std::vector{-1, 0, 1}}) + .expected({{3}, element::i32, std::vector{3, 2, 0}}), + Builder{} + .input({{3}, element::i64, std::vector{-1, 0, 1}}) + .expected({{3}, element::i64, std::vector{3, 2, 0}}), + Builder{} + .input({{2}, element::u32, std::vector{0, 1}}) + .expected({{2}, element::u32, std::vector{2, 0}}), + Builder{} + .input({{2}, element::u64, std::vector{0, 1}}) + .expected({{2}, element::u64, std::vector{2, 0}})), ReferenceAcosLayerTest::getTestCaseName); } // namespace reference_tests diff --git a/src/plugins/template/tests/functional/op_reference/acosh.cpp b/src/plugins/template/tests/functional/op_reference/acosh.cpp index 8e2f916655b..a281cc3f289 100644 --- a/src/plugins/template/tests/functional/op_reference/acosh.cpp +++ b/src/plugins/template/tests/functional/op_reference/acosh.cpp @@ -2,9 +2,10 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/acosh.hpp" + #include -#include "openvino/op/acosh.hpp" #include "base_reference_test.hpp" using namespace ov; @@ -42,7 +43,7 @@ private: static std::shared_ptr CreateFunction(const Shape& shape, const element::Type& type) { const auto in = std::make_shared(type, shape); const auto acosh = std::make_shared(in); - return std::make_shared(NodeVector {acosh}, ParameterVector {in}); + return std::make_shared(NodeVector{acosh}, ParameterVector{in}); } }; @@ -53,24 +54,27 @@ TEST_P(ReferenceAcoshLayerTest, AcoshWithHardcodedRefs) { } // namespace INSTANTIATE_TEST_SUITE_P( - smoke_Acosh_With_Hardcoded_Refs, ReferenceAcoshLayerTest, - ::testing::Values(Builder {} - .input({{8}, element::f16, std::vector {1.f, 2.f, 3.f, 4.f, 5.f, 10.f, 100.f, 1000.f}}) - .expected({{8}, element::f16, std::vector {0., 1.317, 1.763, 2.063, 2.292, 2.993, 5.298, 7.6012}}), - Builder {} - .input({{8}, element::f32, std::vector {1.f, 2.f, 3.f, 4.f, 5.f, 10.f, 100.f, 1000.f}}) - .expected({{8}, element::f32, std::vector {0., 1.317, 1.763, 2.063, 2.292, 2.993, 5.298, 7.6012}}), - Builder {} - .input({{8}, element::i32, std::vector {1, 2, 3, 4, 5, 10, 100, 1000}}) - .expected({{8}, element::i32, std::vector {0, 1, 2, 2, 2, 3, 5, 8}}), - Builder {} - .input({{8}, element::i64, std::vector {1, 2, 3, 4, 5, 10, 100, 1000}}) - .expected({{8}, element::i64, std::vector {0, 1, 2, 2, 2, 3, 5, 8}}), - Builder {} - .input({{8}, element::u32, std::vector {1, 2, 3, 4, 5, 10, 100, 1000}}) - .expected({{8}, element::u32, std::vector {0, 1, 2, 2, 2, 3, 5, 8}}), - Builder {} - .input({{8}, element::u64, std::vector {1, 2, 3, 4, 5, 10, 100, 1000}}) - .expected({{8}, element::u64, std::vector {0, 1, 2, 2, 2, 3, 5, 8}})), + smoke_Acosh_With_Hardcoded_Refs, + ReferenceAcoshLayerTest, + ::testing::Values( + Builder{} + .input({{8}, element::f16, std::vector{1.f, 2.f, 3.f, 4.f, 5.f, 10.f, 100.f, 1000.f}}) + .expected( + {{8}, element::f16, std::vector{0., 1.317, 1.763, 2.063, 2.292, 2.993, 5.298, 7.6012}}), + Builder{} + .input({{8}, element::f32, std::vector{1.f, 2.f, 3.f, 4.f, 5.f, 10.f, 100.f, 1000.f}}) + .expected({{8}, element::f32, std::vector{0., 1.317, 1.763, 2.063, 2.292, 2.993, 5.298, 7.6012}}), + Builder{} + .input({{8}, element::i32, std::vector{1, 2, 3, 4, 5, 10, 100, 1000}}) + .expected({{8}, element::i32, std::vector{0, 1, 2, 2, 2, 3, 5, 8}}), + Builder{} + .input({{8}, element::i64, std::vector{1, 2, 3, 4, 5, 10, 100, 1000}}) + .expected({{8}, element::i64, std::vector{0, 1, 2, 2, 2, 3, 5, 8}}), + Builder{} + .input({{8}, element::u32, std::vector{1, 2, 3, 4, 5, 10, 100, 1000}}) + .expected({{8}, element::u32, std::vector{0, 1, 2, 2, 2, 3, 5, 8}}), + Builder{} + .input({{8}, element::u64, std::vector{1, 2, 3, 4, 5, 10, 100, 1000}}) + .expected({{8}, element::u64, std::vector{0, 1, 2, 2, 2, 3, 5, 8}})), ReferenceAcoshLayerTest::getTestCaseName); } // namespace reference_tests diff --git a/src/plugins/template/tests/functional/op_reference/adaptive_avg_pool.cpp b/src/plugins/template/tests/functional/op_reference/adaptive_avg_pool.cpp index d73df2f853c..8467889b60c 100644 --- a/src/plugins/template/tests/functional/op_reference/adaptive_avg_pool.cpp +++ b/src/plugins/template/tests/functional/op_reference/adaptive_avg_pool.cpp @@ -2,10 +2,11 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/adaptive_avg_pool.hpp" + #include #include "base_reference_test.hpp" -#include "openvino/op/adaptive_avg_pool.hpp" #include "openvino/op/constant.hpp" using namespace ov; @@ -41,7 +42,8 @@ struct AdaptiveAvgPoolParams { std::vector m_adaptive_values; }; -class ReferenceAdaptiveAvgPoolLayerTest : public testing::TestWithParam, public CommonReferenceTest { +class ReferenceAdaptiveAvgPoolLayerTest : public testing::TestWithParam, + public CommonReferenceTest { public: void SetUp() override { auto params = GetParam(); @@ -65,9 +67,9 @@ public: private: static std::shared_ptr CreateFunction(const Shape& input_shape, - const element::Type& input_type, - const Shape& adaptive_shape, - const std::vector adaptive_values) { + const element::Type& input_type, + const Shape& adaptive_shape, + const std::vector adaptive_values) { const auto in = std::make_shared(input_type, input_shape); const auto out = op::v0::Constant::create(element::Type_t::i64, adaptive_shape, adaptive_values); const auto adaptive_avg_pool = std::make_shared(in, out); @@ -84,49 +86,51 @@ std::vector generateParamsForAdaptiveAvgPool() { using T = typename element_type_traits::value_type; std::vector params{ - AdaptiveAvgPoolParams(ov::Shape{2, 3, 7}, - ov::Shape{2, 3, 3}, - IN_ET, - IN_ET, - std::vector{0, 4, 1, 3, -2, -5, -2, -2, 1, -3, 1, -3, -4, 0, -2, 1, -1, -2, 3, -1, -3, - -1, -2, 3, 4, -3, -4, 1, 2, 0, -4, -5, -2, -2, -3, 2, 3, 1, -5, 2, -4, -2}, - std::vector{1.66666663, - 0.66666669, - -3., - -1.33333337, - -1.66666663, - -2.33333325, - -0.66666669, - 0., - -0.33333334, + AdaptiveAvgPoolParams( + ov::Shape{2, 3, 7}, + ov::Shape{2, 3, 3}, + IN_ET, + IN_ET, + std::vector{0, 4, 1, 3, -2, -5, -2, -2, 1, -3, 1, -3, -4, 0, -2, 1, -1, -2, 3, -1, -3, + -1, -2, 3, 4, -3, -4, 1, 2, 0, -4, -5, -2, -2, -3, 2, 3, 1, -5, 2, -4, -2}, + std::vector{1.66666663, + 0.66666669, + -3., + -1.33333337, + -1.66666663, + -2.33333325, + -0.66666669, + 0., + -0.33333334, - 0., - 1.33333337, - -2., - -0.66666669, - -3.66666675, - -2.33333325, - 2., - -0.66666669, - -1.33333337}, - ov::Shape{1}, - {3}), + 0., + 1.33333337, + -2., + -0.66666669, + -3.66666675, + -2.33333325, + 2., + -0.66666669, + -1.33333337}, + ov::Shape{1}, + {3}), AdaptiveAvgPoolParams( ov::Shape{1, 3, 7, 10}, ov::Shape{1, 3, 3, 3}, IN_ET, IN_ET, - std::vector{-2, -3, -4, 3, -5, 4, 0, -4, -2, -4, -5, 0, -3, 0, -2, 0, 0, -5, -4, -1, 3, -1, 0, -1, - 0, -2, 0, 4, 1, 4, 0, -1, -4, 2, -2, -5, -1, -1, -2, 1, 2, -2, -1, 2, 0, -1, 0, -5, - 4, 4, 3, 0, -4, -4, -4, -2, 0, 1, -2, -1, 4, -2, -4, 1, -1, -3, -4, -1, 1, -4, + std::vector{ + -2, -3, -4, 3, -5, 4, 0, -4, -2, -4, -5, 0, -3, 0, -2, 0, 0, -5, -4, -1, 3, -1, 0, -1, + 0, -2, 0, 4, 1, 4, 0, -1, -4, 2, -2, -5, -1, -1, -2, 1, 2, -2, -1, 2, 0, -1, 0, -5, + 4, 4, 3, 0, -4, -4, -4, -2, 0, 1, -2, -1, 4, -2, -4, 1, -1, -3, -4, -1, 1, -4, - -2, -4, -5, 0, -4, 3, 4, -5, -4, -2, 0, 2, -4, -3, 3, -1, 1, -4, -5, 4, 2, -5, 2, -3, - 0, 4, 3, 3, 1, 2, -1, -4, 1, -3, -3, -2, 3, 4, -2, -5, 1, 4, 4, -2, 2, 1, -5, -2, - -5, 1, 1, -2, -3, -3, -1, -5, 1, -3, -5, -3, -4, -1, 4, -3, 4, -1, 4, 3, 1, 4, + -2, -4, -5, 0, -4, 3, 4, -5, -4, -2, 0, 2, -4, -3, 3, -1, 1, -4, -5, 4, 2, -5, 2, -3, + 0, 4, 3, 3, 1, 2, -1, -4, 1, -3, -3, -2, 3, 4, -2, -5, 1, 4, 4, -2, 2, 1, -5, -2, + -5, 1, 1, -2, -3, -3, -1, -5, 1, -3, -5, -3, -4, -1, 4, -3, 4, -1, 4, 3, 1, 4, - -2, -4, -4, 4, -3, 4, 2, -3, -2, 4, -3, 0, 1, -4, 4, 4, 0, 3, -1, 3, 3, -5, 0, 3, - -3, 1, -2, 4, -5, -5, 1, 0, -1, 0, -3, -2, 0, -3, 3, -2, -2, 0, -3, 4, -1, 2, -2, 2, - -3, -1, -4, -2, 0, 2, 0, 2, 0, -3, 4, 3, -5, -3, -5, 1, -5, -3, -5, 4, -3, 3}, + -2, -4, -4, 4, -3, 4, 2, -3, -2, 4, -3, 0, 1, -4, 4, 4, 0, 3, -1, 3, 3, -5, 0, 3, + -3, 1, -2, 4, -5, -5, 1, 0, -1, 0, -3, -2, 0, -3, 3, -2, -2, 0, -3, 4, -1, 2, -2, 2, + -3, -1, -4, -2, 0, 2, 0, 2, 0, -3, 4, 3, -5, -3, -5, 1, -5, -3, -5, 4, -3, 3}, std::vector{-1.08333337, -0.25000000, -0.91666669, -0.08333334, -0.66666669, 0.75000000, -0.41666666, -1.33333337, -0.58333331, @@ -142,14 +146,14 @@ std::vector generateParamsForAdaptiveAvgPool() { ov::Shape{2, 2, 2, 2, 2}, IN_ET, IN_ET, - std::vector{-5, 1, -3, -4, 4, -4, 3, -3, -1, 0, 0, -2, -4, 2, 0, -4, -5, -2, -4, -4, 0, -2, 3, -3, 4, -1, -4, - -1, -1, -5, 4, -1, -2, -3, 0, 4, -1, -5, -4, 1, 1, 4, -5, -5, -5, 4, -3, -3, -3, 4, 0, -3, -5, 1, - 4, 2, 1, -5, -5, 1, 0, -4, -1, 2, -4, -2, 4, 3, 1, -3, -3, -2, -4, -3, -3, 3, -1, 1, 2, 2, -4, - -5, -4, 1, 3, -4, -1, 2, 4, -5, 0, 1, -2, 0, 0, -2, 3, -2, -5, -3, -5, -2, -1, 3, -2, 4, 3, -3}, - std::vector{-0.750, -0.250, -1.375, -1.125, -1.125, -0.500, -0.875, -1.250, - -0.375, -1.625, -1., -0.500, -0.250, -0.750, -1.875, -0.625, - 0.125, -0.375, -1.625, -1.250, 0., -1., 0.875, -0.375, - -1.125, -1.375, 0.750, -1.875, -0.625, -1.125, 1.250, -1.}, + std::vector{-5, 1, -3, -4, 4, -4, 3, -3, -1, 0, 0, -2, -4, 2, 0, -4, -5, -2, -4, -4, 0, -2, + 3, -3, 4, -1, -4, -1, -1, -5, 4, -1, -2, -3, 0, 4, -1, -5, -4, 1, 1, 4, -5, -5, + -5, 4, -3, -3, -3, 4, 0, -3, -5, 1, 4, 2, 1, -5, -5, 1, 0, -4, -1, 2, -4, -2, + 4, 3, 1, -3, -3, -2, -4, -3, -3, 3, -1, 1, 2, 2, -4, -5, -4, 1, 3, -4, -1, 2, + 4, -5, 0, 1, -2, 0, 0, -2, 3, -2, -5, -3, -5, -2, -1, 3, -2, 4, 3, -3}, + std::vector{-0.750, -0.250, -1.375, -1.125, -1.125, -0.500, -0.875, -1.250, -0.375, -1.625, -1., + -0.500, -0.250, -0.750, -1.875, -0.625, 0.125, -0.375, -1.625, -1.250, 0., -1., + 0.875, -0.375, -1.125, -1.375, 0.750, -1.875, -0.625, -1.125, 1.250, -1.}, ov::Shape{3}, {2, 2, 2}), }; @@ -160,8 +164,7 @@ std::vector generateCombinedParamsForAdaptiveAvgPool() { const std::vector> allTypeParams{ generateParamsForAdaptiveAvgPool(), generateParamsForAdaptiveAvgPool(), - generateParamsForAdaptiveAvgPool() - }; + generateParamsForAdaptiveAvgPool()}; std::vector combinedParams; @@ -172,10 +175,9 @@ std::vector generateCombinedParamsForAdaptiveAvgPool() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P( - smoke_AdaptiveAvgPool_With_Hardcoded_Refs, - ReferenceAdaptiveAvgPoolLayerTest, - ::testing::ValuesIn(generateCombinedParamsForAdaptiveAvgPool()), - ReferenceAdaptiveAvgPoolLayerTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_AdaptiveAvgPool_With_Hardcoded_Refs, + ReferenceAdaptiveAvgPoolLayerTest, + ::testing::ValuesIn(generateCombinedParamsForAdaptiveAvgPool()), + ReferenceAdaptiveAvgPoolLayerTest::getTestCaseName); } // namespace diff --git a/src/plugins/template/tests/functional/op_reference/adaptive_max_pool.cpp b/src/plugins/template/tests/functional/op_reference/adaptive_max_pool.cpp index 0fc8fab948c..68ac723f0ae 100644 --- a/src/plugins/template/tests/functional/op_reference/adaptive_max_pool.cpp +++ b/src/plugins/template/tests/functional/op_reference/adaptive_max_pool.cpp @@ -2,10 +2,11 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/adaptive_max_pool.hpp" + #include #include "base_reference_test.hpp" -#include "openvino/op/adaptive_max_pool.hpp" #include "openvino/op/constant.hpp" using namespace ov; @@ -44,7 +45,8 @@ struct AdaptiveMaxPoolParams { std::vector m_adaptive_values; }; -class ReferenceAdaptiveMaxPoolLayerTest : public testing::TestWithParam, public CommonReferenceTest { +class ReferenceAdaptiveMaxPoolLayerTest : public testing::TestWithParam, + public CommonReferenceTest { public: void SetUp() override { auto params = GetParam(); @@ -68,9 +70,9 @@ public: private: static std::shared_ptr CreateFunction(const Shape& input_shape, - const element::Type& input_type, - const Shape& adaptive_shape, - const std::vector adaptive_values) { + const element::Type& input_type, + const Shape& adaptive_shape, + const std::vector adaptive_values) { const auto in = std::make_shared(input_type, input_shape); const auto out = op::v0::Constant::create(element::Type_t::i64, adaptive_shape, adaptive_values); const auto adaptive_max_pool = std::make_shared(in, out); @@ -93,7 +95,7 @@ std::vector generateParamsForAdaptiveMaxPoolWithExpectedR IN_ET, IN_ET, std::vector{0, 4, 1, 3, -2, -5, -2, -2, 1, -3, 1, -3, -4, 0, -2, 1, -1, -2, 3, -1, -3, - -1, -2, 3, 4, -3, -4, 1, 2, 0, -4, -5, -2, -2, -3, 2, 3, 1, -5, 2, -4, -2}, + -1, -2, 3, 4, -3, -4, 1, 2, 0, -4, -5, -2, -2, -3, 2, 3, 1, -5, 2, -4, -2}, std::vector{4, 3, -2, @@ -114,77 +116,69 @@ std::vector generateParamsForAdaptiveMaxPoolWithExpectedR 2, 2}, std::vector{1, - 3, - 4, - 1, - 3, - 6, - 1, - 4, - 4, + 3, + 4, + 1, + 3, + 6, + 1, + 4, + 4, - 2, - 3, - 6, - 0, - 4, - 4, - 1, - 4, - 4}, - ov::Shape{1}, + 2, + 3, + 6, + 0, + 4, + 4, + 1, + 4, + 4}, + ov::Shape{1}, std::vector{3}), AdaptiveMaxPoolParams( ov::Shape{1, 3, 7, 10}, ov::Shape{1, 3, 3, 3}, IN_ET, IN_ET, - std::vector{0, -2, -5, -5, 2, 3, 2, -3, 1, -2, -4, -1, -1, -1, 2, -4, 3, -5, -1, -1, 1, 2, 4, -2, - -3, -2, 0, -5, 2, -4, -1, -4, 4, 2, 1, -2, 2, -3, 0, 1, -3, 3, -1, 4, 0, 2, 0, 3, - 4, -4, 1, 4, -1, -5, -2, 4, -3, 3, 2, 1, 0, 4, 2, -5, 2, -5, -2, -1, 4, 2, + std::vector{ + 0, -2, -5, -5, 2, 3, 2, -3, 1, -2, -4, -1, -1, -1, 2, -4, 3, -5, -1, -1, 1, 2, 4, -2, + -3, -2, 0, -5, 2, -4, -1, -4, 4, 2, 1, -2, 2, -3, 0, 1, -3, 3, -1, 4, 0, 2, 0, 3, + 4, -4, 1, 4, -1, -5, -2, 4, -3, 3, 2, 1, 0, 4, 2, -5, 2, -5, -2, -1, 4, 2, - 0, 4, -2, 0, -5, -3, 4, -4, -2, -2, 2, 1, 4, 3, 2, -5, -4, -4, 0, 1, 4, -4, -3, 3, - 3, 4, -2, -3, -4, -2, 0, 1, -1, 3, -2, 2, 0, -3, -1, -1, 0, 0, 2, 2, -2, 1, -3, 1, - 2, 4, 3, -5, -4, 1, -4, 2, 0, -2, -5, 2, -3, -2, -3, -4, 2, -2, -4, 2, -4, -3, + 0, 4, -2, 0, -5, -3, 4, -4, -2, -2, 2, 1, 4, 3, 2, -5, -4, -4, 0, 1, 4, -4, -3, 3, + 3, 4, -2, -3, -4, -2, 0, 1, -1, 3, -2, 2, 0, -3, -1, -1, 0, 0, 2, 2, -2, 1, -3, 1, + 2, 4, 3, -5, -4, 1, -4, 2, 0, -2, -5, 2, -3, -2, -3, -4, 2, -2, -4, 2, -4, -3, - 1, -5, -1, -5, 2, 1, 3, 4, 3, 0, -5, 4, -3, -4, -1, 2, -4, 2, 0, -5, -3, 0, 2, -3, - -5, 3, -2, -1, -5, -4, -5, 0, -5, -1, -3, 3, 3, -4, -3, -4, -5, 4, -1, 1, -1, -4, 1, -3, - -4, -1, -2, -3, -5, 2, 2, -5, 1, 1, -5, -4, 0, 2, 4, 2, 0, 2, 4, 0, -5, 2}, - std::vector{4, 3, 3, 4, 4, 4, 4, 4, 4, - 4, 4, 4, 4, 4, 4, 3, 2, 4, - 4, 3, 4, 4, 3, 3, 4, 4, 4}, - std::vector{22, 5, 16, 22, 43, 48, 43, 43, 48, - 1, 6, 6, 20, 25, 49, 50, 43, 49, - 11, 6, 7, 41, 25, 36, 41, 66, 66}, + 1, -5, -1, -5, 2, 1, 3, 4, 3, 0, -5, 4, -3, -4, -1, 2, -4, 2, 0, -5, -3, 0, 2, -3, + -5, 3, -2, -1, -5, -4, -5, 0, -5, -1, -3, 3, 3, -4, -3, -4, -5, 4, -1, 1, -1, -4, 1, -3, + -4, -1, -2, -3, -5, 2, 2, -5, 1, 1, -5, -4, 0, 2, 4, 2, 0, 2, 4, 0, -5, 2}, + std::vector{4, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 3, 2, 4, 4, 3, 4, 4, 3, 3, 4, 4, 4}, + std::vector{22, 5, 16, 22, 43, 48, 43, 43, 48, 1, 6, 6, 20, 25, + 49, 50, 43, 49, 11, 6, 7, 41, 25, 36, 41, 66, 66}, ov::Shape{2}, std::vector{3, 3}), - AdaptiveMaxPoolParams( - ov::Shape{2, 2, 3, 3, 3}, - ov::Shape{2, 2, 2, 2, 2}, - IN_ET, - IN_ET, - std::vector{-5, 1, -3, -4, 4, -4, 3, -3, -1, 0, 0, -2, -4, 2, - 0, -4, -5, -2, -4, -4, 0, -2, 3, -3, 4, -1, -4, + AdaptiveMaxPoolParams(ov::Shape{2, 2, 3, 3, 3}, + ov::Shape{2, 2, 2, 2, 2}, + IN_ET, + IN_ET, + std::vector{-5, 1, -3, -4, 4, -4, 3, -3, -1, 0, 0, -2, -4, 2, + 0, -4, -5, -2, -4, -4, 0, -2, 3, -3, 4, -1, -4, - -1, -1, -5, 4, -1, -2, -3, 0, 4, -1, -5, -4, 1, 1, - 4, -5, -5, -5, 4, -3, -3, -3, 4, 0, -3, -5, 1, + -1, -1, -5, 4, -1, -2, -3, 0, 4, -1, -5, -4, 1, 1, + 4, -5, -5, -5, 4, -3, -3, -3, 4, 0, -3, -5, 1, - 4, 2, 1, -5, -5, 1, 0, -4, -1, 2, -4, -2, 4, 3, - 1, -3, -3, -2, -4, -3, -3, 3, -1, 1, 2, 2, -4, + 4, 2, 1, -5, -5, 1, 0, -4, -1, 2, -4, -2, 4, 3, + 1, -3, -3, -2, -4, -3, -3, 3, -1, 1, 2, 2, -4, - -5, -4, 1, 3, -4, -1, 2, 4, -5, 0, 1, -2, 0, 0, - -2, 3, -2, -5, -3, -5, -2, -1, 3, -2, 4, 3, -3}, - std::vector{4, 4, 4, 4, 3, 3, 4, 3, - 4, 4, 4, 4, 4, 4, 4, 4, - 4, 3, 4, 3, 4, 3, 4, 3, - 3, 1, 4, 4, 3, 3, 4, 3}, - std::vector{4, 4, 4, 4, 22, 22, 24, 22, - 3, 14, 3, 8, 18, 14, 22, 14, - 0, 13, 12, 13, 12, 13, 12, 13, - 3, 2, 7, 7, 22, 22, 24, 22}, - ov::Shape{3}, - std::vector{2, 2, 2}) - }; + -5, -4, 1, 3, -4, -1, 2, 4, -5, 0, 1, -2, 0, 0, + -2, 3, -2, -5, -3, -5, -2, -1, 3, -2, 4, 3, -3}, + std::vector{4, 4, 4, 4, 3, 3, 4, 3, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 3, 4, 3, 4, 3, 4, 3, 3, 1, 4, 4, 3, 3, 4, 3}, + std::vector{4, 4, 4, 4, 22, 22, 24, 22, 3, 14, 3, 8, 18, 14, 22, 14, + 0, 13, 12, 13, 12, 13, 12, 13, 3, 2, 7, 7, 22, 22, 24, 22}, + ov::Shape{3}, + std::vector{2, 2, 2})}; return params; } @@ -208,10 +202,9 @@ std::vector generateCombinedParamsForAdaptiveMaxPool() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P( - smoke_AdaptiveMaxPool_With_Hardcoded_Refs, - ReferenceAdaptiveMaxPoolLayerTest, - ::testing::ValuesIn(generateCombinedParamsForAdaptiveMaxPool()), - ReferenceAdaptiveMaxPoolLayerTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_AdaptiveMaxPool_With_Hardcoded_Refs, + ReferenceAdaptiveMaxPoolLayerTest, + ::testing::ValuesIn(generateCombinedParamsForAdaptiveMaxPool()), + ReferenceAdaptiveMaxPoolLayerTest::getTestCaseName); } // namespace diff --git a/src/plugins/template/tests/functional/op_reference/add.cpp b/src/plugins/template/tests/functional/op_reference/add.cpp index 7a5e99ba91d..96a0091a949 100644 --- a/src/plugins/template/tests/functional/op_reference/add.cpp +++ b/src/plugins/template/tests/functional/op_reference/add.cpp @@ -2,10 +2,12 @@ // SPDX-License-Identifier: Apache-2.0 // -#include -#include "base_reference_test.hpp" #include "openvino/op/add.hpp" +#include + +#include "base_reference_test.hpp" + using namespace ov; using namespace reference_tests; @@ -57,9 +59,9 @@ public: private: static std::shared_ptr CreateFunction(const PartialShape& input_shape1, - const PartialShape& input_shape2, - const element::Type& input_type, - const element::Type& expected_output_type) { + const PartialShape& input_shape2, + const element::Type& input_type, + const element::Type& expected_output_type) { const auto in1 = std::make_shared(input_type, input_shape1); const auto in2 = std::make_shared(input_type, input_shape2); const auto add = std::make_shared(in1, in2); @@ -88,9 +90,9 @@ public: private: static std::shared_ptr CreateFunction(const PartialShape& input_shape1, - const PartialShape& input_shape2, - const element::Type& input_type, - const element::Type& expected_output_type) { + const PartialShape& input_shape2, + const element::Type& input_type, + const element::Type& expected_output_type) { const auto in1 = std::make_shared(input_type, input_shape1); const auto in2 = std::make_shared(input_type, input_shape2); auto add = std::make_shared(in1, in2); @@ -146,31 +148,27 @@ template std::vector generateParamsForAddInPlace() { using T = typename element_type_traits::value_type; - std::vector params{ - AddParams(ov::PartialShape{2, 2}, - ov::PartialShape{2, 2}, - IN_ET, - std::vector{1, 2, 3, 4}, - std::vector{5, 6, 7, 8}, - std::vector{48, 64, 80, 96}) - }; + std::vector params{AddParams(ov::PartialShape{2, 2}, + ov::PartialShape{2, 2}, + IN_ET, + std::vector{1, 2, 3, 4}, + std::vector{5, 6, 7, 8}, + std::vector{48, 64, 80, 96})}; return params; } std::vector generateCombinedParamsForAdd() { - const std::vector> allTypeParams{ - generateParamsForAdd(), - generateParamsForAdd(), - generateParamsForAdd(), - generateParamsForAdd(), - generateParamsForAdd(), - generateParamsForAdd(), - generateParamsForAdd(), - generateParamsForAdd(), - generateParamsForAdd(), - generateParamsForAdd(), - generateParamsForAdd() - }; + const std::vector> allTypeParams{generateParamsForAdd(), + generateParamsForAdd(), + generateParamsForAdd(), + generateParamsForAdd(), + generateParamsForAdd(), + generateParamsForAdd(), + generateParamsForAdd(), + generateParamsForAdd(), + generateParamsForAdd(), + generateParamsForAdd(), + generateParamsForAdd()}; std::vector combinedParams; @@ -182,19 +180,17 @@ std::vector generateCombinedParamsForAdd() { } std::vector generateCombinedParamsForAddInPlace() { - const std::vector> allTypeParams{ - generateParamsForAddInPlace(), - generateParamsForAddInPlace(), - generateParamsForAddInPlace(), - generateParamsForAddInPlace(), - generateParamsForAddInPlace(), - generateParamsForAddInPlace(), - generateParamsForAddInPlace(), - generateParamsForAddInPlace(), - generateParamsForAddInPlace(), - generateParamsForAddInPlace(), - generateParamsForAddInPlace() - }; + const std::vector> allTypeParams{generateParamsForAddInPlace(), + generateParamsForAddInPlace(), + generateParamsForAddInPlace(), + generateParamsForAddInPlace(), + generateParamsForAddInPlace(), + generateParamsForAddInPlace(), + generateParamsForAddInPlace(), + generateParamsForAddInPlace(), + generateParamsForAddInPlace(), + generateParamsForAddInPlace(), + generateParamsForAddInPlace()}; std::vector combinedParams; @@ -205,16 +201,14 @@ std::vector generateCombinedParamsForAddInPlace() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P( - smoke_Add_With_Hardcoded_Refs, - ReferenceAddLayerTest, - ::testing::ValuesIn(generateCombinedParamsForAdd()), - ReferenceAddLayerTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_Add_With_Hardcoded_Refs, + ReferenceAddLayerTest, + ::testing::ValuesIn(generateCombinedParamsForAdd()), + ReferenceAddLayerTest::getTestCaseName); -INSTANTIATE_TEST_SUITE_P( - smoke_Add_In_Place_With_Hardcoded_Refs, - ReferenceAddInPlaceLayerTest, - ::testing::ValuesIn(generateCombinedParamsForAddInPlace()), - ReferenceAddLayerTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_Add_In_Place_With_Hardcoded_Refs, + ReferenceAddInPlaceLayerTest, + ::testing::ValuesIn(generateCombinedParamsForAddInPlace()), + ReferenceAddLayerTest::getTestCaseName); } // namespace diff --git a/src/plugins/template/tests/functional/op_reference/asin.cpp b/src/plugins/template/tests/functional/op_reference/asin.cpp index 362b7fe6acc..56dfd504d9d 100644 --- a/src/plugins/template/tests/functional/op_reference/asin.cpp +++ b/src/plugins/template/tests/functional/op_reference/asin.cpp @@ -2,11 +2,12 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/asin.hpp" + #include -#include "openvino/op/asin.hpp" -#include "shared_test_classes/base/layer_test_utils.hpp" #include "base_reference_test.hpp" +#include "shared_test_classes/base/layer_test_utils.hpp" using namespace ov; @@ -43,7 +44,7 @@ private: static std::shared_ptr CreateFunction(const Shape& shape, const element::Type& type) { const auto in = std::make_shared(type, shape); const auto Asin = std::make_shared(in); - return std::make_shared(NodeVector {Asin}, ParameterVector {in}); + return std::make_shared(NodeVector{Asin}, ParameterVector{in}); } }; @@ -54,46 +55,56 @@ TEST_P(ReferenceAsinLayerTest, AsinWithHardcodedRefs) { } // namespace INSTANTIATE_TEST_SUITE_P( - smoke_Asin_With_Hardcoded_Refs, ReferenceAsinLayerTest, + smoke_Asin_With_Hardcoded_Refs, + ReferenceAsinLayerTest, ::testing::Values( - Builder {} - .input({{11}, element::f16, std::vector {-1.f, -0.75f, -0.5f, -0.25f, -0.125f, 0.f, 0.125f, 0.25f, 0.5f, 0.75f, 1.f}}) - .expected({{11}, element::f16, std::vector {-1.57079633f, - -0.84806208f, - -0.52359878f, - -0.25268026f, - -0.12532783f, - 0.00000000f, - 0.12532783f, - 0.25268026f, - 0.52359878f, - 0.84806208f, - 1.57079633f}}), - Builder {} - .input({{11}, element::f32, std::vector {-1.f, -0.75f, -0.5f, -0.25f, -0.125f, 0.f, 0.125f, 0.25f, 0.5f, 0.75f, 1.f}}) - .expected({{11}, element::f32, std::vector {-1.57079633f, - -0.84806208f, - -0.52359878f, - -0.25268026f, - -0.12532783f, - 0.00000000f, - 0.12532783f, - 0.25268026f, - 0.52359878f, - 0.84806208f, - 1.57079633f}}), - Builder {} - .input({{3}, element::i32, std::vector {-1, 0, 1}}) - .expected({{3}, element::i32, std::vector {-1, 0, 1}}), - Builder {} - .input({{3}, element::i64, std::vector {-1, 0, 1}}) - .expected({{3}, element::i64, std::vector {-1, 0, 1}}), - Builder {} - .input({{2}, element::u32, std::vector {0, 1}}) - .expected({{2}, element::u32, std::vector {0, 1}}), - Builder {} - .input({{2}, element::u64, std::vector {0, 1}}) - .expected({{2}, element::u64, std::vector {0, 1}})), + Builder{} + .input( + {{11}, + element::f16, + std::vector{-1.f, -0.75f, -0.5f, -0.25f, -0.125f, 0.f, 0.125f, 0.25f, 0.5f, 0.75f, 1.f}}) + .expected({{11}, + element::f16, + std::vector{-1.57079633f, + -0.84806208f, + -0.52359878f, + -0.25268026f, + -0.12532783f, + 0.00000000f, + 0.12532783f, + 0.25268026f, + 0.52359878f, + 0.84806208f, + 1.57079633f}}), + Builder{} + .input({{11}, + element::f32, + std::vector{-1.f, -0.75f, -0.5f, -0.25f, -0.125f, 0.f, 0.125f, 0.25f, 0.5f, 0.75f, 1.f}}) + .expected({{11}, + element::f32, + std::vector{-1.57079633f, + -0.84806208f, + -0.52359878f, + -0.25268026f, + -0.12532783f, + 0.00000000f, + 0.12532783f, + 0.25268026f, + 0.52359878f, + 0.84806208f, + 1.57079633f}}), + Builder{} + .input({{3}, element::i32, std::vector{-1, 0, 1}}) + .expected({{3}, element::i32, std::vector{-1, 0, 1}}), + Builder{} + .input({{3}, element::i64, std::vector{-1, 0, 1}}) + .expected({{3}, element::i64, std::vector{-1, 0, 1}}), + Builder{} + .input({{2}, element::u32, std::vector{0, 1}}) + .expected({{2}, element::u32, std::vector{0, 1}}), + Builder{} + .input({{2}, element::u64, std::vector{0, 1}}) + .expected({{2}, element::u64, std::vector{0, 1}})), ReferenceAsinLayerTest::getTestCaseName); } // namespace reference_tests diff --git a/src/plugins/template/tests/functional/op_reference/asinh.cpp b/src/plugins/template/tests/functional/op_reference/asinh.cpp index 6691662c6df..0fbd3f57838 100644 --- a/src/plugins/template/tests/functional/op_reference/asinh.cpp +++ b/src/plugins/template/tests/functional/op_reference/asinh.cpp @@ -2,11 +2,12 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/asinh.hpp" + #include -#include "openvino/op/asinh.hpp" -#include "shared_test_classes/base/layer_test_utils.hpp" #include "base_reference_test.hpp" +#include "shared_test_classes/base/layer_test_utils.hpp" using namespace ov; @@ -43,7 +44,7 @@ private: static std::shared_ptr CreateFunction(const Shape& shape, const element::Type& type) { const auto in = std::make_shared(type, shape); const auto Asinh = std::make_shared(in); - return std::make_shared(NodeVector {Asinh}, ParameterVector {in}); + return std::make_shared(NodeVector{Asinh}, ParameterVector{in}); } }; @@ -54,46 +55,54 @@ TEST_P(ReferenceAsinhLayerTest, AsinhWithHardcodedRefs) { } // namespace INSTANTIATE_TEST_SUITE_P( - smoke_Asinh_With_Hardcoded_Refs, ReferenceAsinhLayerTest, + smoke_Asinh_With_Hardcoded_Refs, + ReferenceAsinhLayerTest, ::testing::Values( - Builder {} - .input({{11}, element::f16, std::vector {0.f, 1.f, -1.f, 2.f, -2.f, 3.f, -3.f, 4.f, 5.f, 10.f, 100.f}}) - .expected({{11}, element::f16, std::vector {0.00000000f, - 0.88137359f, - -0.88137359f, - 1.44363548f, - -1.44363548f, - 1.81844646f, - -1.81844646f, - 2.09471255f, - 2.31243834f, - 2.99822295f, - 5.29834237f}}), - Builder {} - .input({{11}, element::f32, std::vector {0.f, 1.f, -1.f, 2.f, -2.f, 3.f, -3.f, 4.f, 5.f, 10.f, 100.f}}) - .expected({{11}, element::f32, std::vector {0.00000000f, - 0.88137359f, - -0.88137359f, - 1.44363548f, - -1.44363548f, - 1.81844646f, - -1.81844646f, - 2.09471255f, - 2.31243834f, - 2.99822295f, - 5.29834237f}}), - Builder {} - .input({{11}, element::i32, std::vector {-5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5}}) - .expected({{11}, element::i32, std::vector {-2, -2, -2, -1, -1, 0, 1, 1, 2, 2, 2}}), - Builder {} - .input({{11}, element::i64, std::vector {-5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5}}) - .expected({{11}, element::i64, std::vector {-2, -2, -2, -1, -1, 0, 1, 1, 2, 2, 2}}), - Builder {} - .input({{6}, element::u32, std::vector {0, 1, 2, 3, 4, 5}}) - .expected({{6}, element::u32, std::vector {0, 1, 1, 2, 2, 2}}), - Builder {} - .input({{6}, element::u64, std::vector {0, 1, 2, 3, 4, 5}}) - .expected({{6}, element::u64, std::vector {0, 1, 1, 2, 2, 2}})), + Builder{} + .input({{11}, + element::f16, + std::vector{0.f, 1.f, -1.f, 2.f, -2.f, 3.f, -3.f, 4.f, 5.f, 10.f, 100.f}}) + .expected({{11}, + element::f16, + std::vector{0.00000000f, + 0.88137359f, + -0.88137359f, + 1.44363548f, + -1.44363548f, + 1.81844646f, + -1.81844646f, + 2.09471255f, + 2.31243834f, + 2.99822295f, + 5.29834237f}}), + Builder{} + .input( + {{11}, element::f32, std::vector{0.f, 1.f, -1.f, 2.f, -2.f, 3.f, -3.f, 4.f, 5.f, 10.f, 100.f}}) + .expected({{11}, + element::f32, + std::vector{0.00000000f, + 0.88137359f, + -0.88137359f, + 1.44363548f, + -1.44363548f, + 1.81844646f, + -1.81844646f, + 2.09471255f, + 2.31243834f, + 2.99822295f, + 5.29834237f}}), + Builder{} + .input({{11}, element::i32, std::vector{-5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5}}) + .expected({{11}, element::i32, std::vector{-2, -2, -2, -1, -1, 0, 1, 1, 2, 2, 2}}), + Builder{} + .input({{11}, element::i64, std::vector{-5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5}}) + .expected({{11}, element::i64, std::vector{-2, -2, -2, -1, -1, 0, 1, 1, 2, 2, 2}}), + Builder{} + .input({{6}, element::u32, std::vector{0, 1, 2, 3, 4, 5}}) + .expected({{6}, element::u32, std::vector{0, 1, 1, 2, 2, 2}}), + Builder{} + .input({{6}, element::u64, std::vector{0, 1, 2, 3, 4, 5}}) + .expected({{6}, element::u64, std::vector{0, 1, 1, 2, 2, 2}})), ReferenceAsinhLayerTest::getTestCaseName); } // namespace reference_tests diff --git a/src/plugins/template/tests/functional/op_reference/atan.cpp b/src/plugins/template/tests/functional/op_reference/atan.cpp index 17e5ca34333..99ff77e977e 100644 --- a/src/plugins/template/tests/functional/op_reference/atan.cpp +++ b/src/plugins/template/tests/functional/op_reference/atan.cpp @@ -2,9 +2,10 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/atan.hpp" + #include -#include "openvino/op/atan.hpp" #include "base_reference_test.hpp" using namespace ov; @@ -53,34 +54,43 @@ TEST_P(ReferenceAtanLayerTest, AtanWithHardcodedRefs) { } // namespace INSTANTIATE_TEST_SUITE_P( - smoke_Atan_With_Hardcoded_Refs, ReferenceAtanLayerTest, + smoke_Atan_With_Hardcoded_Refs, + ReferenceAtanLayerTest, ::testing::Values( Builder{} - .input({{11}, element::f16, std::vector{-4.f, -2.f, -1.f, -0.5f, -0.25f, 0.f, 0.25f, 0.5f, 1.f, 2.f, 4.f}}) - .expected({{11}, element::f16, std::vector{-1.32581766f, - -1.10714872f, - -0.78539816f, - -0.46364761f, - -0.24497866f, - 0.00000000f, - 0.24497866f, - 0.46364761f, - 0.78539816f, - 1.10714872f, - 1.32581766f}}), + .input({{11}, + element::f16, + std::vector{-4.f, -2.f, -1.f, -0.5f, -0.25f, 0.f, 0.25f, 0.5f, 1.f, 2.f, 4.f}}) + .expected({{11}, + element::f16, + std::vector{-1.32581766f, + -1.10714872f, + -0.78539816f, + -0.46364761f, + -0.24497866f, + 0.00000000f, + 0.24497866f, + 0.46364761f, + 0.78539816f, + 1.10714872f, + 1.32581766f}}), Builder{} - .input({{11}, element::f32, std::vector{-4.f, -2.f, -1.f, -0.5f, -0.25f, 0.f, 0.25f, 0.5f, 1.f, 2.f, 4.f}}) - .expected({{11}, element::f32, std::vector{-1.32581766f, - -1.10714872f, - -0.78539816f, - -0.46364761f, - -0.24497866f, - 0.00000000f, - 0.24497866f, - 0.46364761f, - 0.78539816f, - 1.10714872f, - 1.32581766f}}), + .input({{11}, + element::f32, + std::vector{-4.f, -2.f, -1.f, -0.5f, -0.25f, 0.f, 0.25f, 0.5f, 1.f, 2.f, 4.f}}) + .expected({{11}, + element::f32, + std::vector{-1.32581766f, + -1.10714872f, + -0.78539816f, + -0.46364761f, + -0.24497866f, + 0.00000000f, + 0.24497866f, + 0.46364761f, + 0.78539816f, + 1.10714872f, + 1.32581766f}}), Builder{} .input({{5}, element::i32, std::vector{-2, -1, 0, 1, 2}}) .expected({{5}, element::i32, std::vector{-1, -1, 0, 1, 1}}), diff --git a/src/plugins/template/tests/functional/op_reference/augru_cell.cpp b/src/plugins/template/tests/functional/op_reference/augru_cell.cpp index 239dd84342c..c72ad13aaeb 100644 --- a/src/plugins/template/tests/functional/op_reference/augru_cell.cpp +++ b/src/plugins/template/tests/functional/op_reference/augru_cell.cpp @@ -2,9 +2,10 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "ov_ops/augru_cell.hpp" + #include -#include "ov_ops/augru_cell.hpp" #include "base_reference_test.hpp" using namespace reference_tests; @@ -12,12 +13,30 @@ using namespace ov; namespace { struct AUGRUCellParams { - AUGRUCellParams( - const int32_t batchSize, const int32_t inputSize, const int32_t hiddenSize, const int32_t gatesCount, - const reference_tests::Tensor& X, const reference_tests::Tensor& H_t, const reference_tests::Tensor& W, const reference_tests::Tensor& R, const reference_tests::Tensor& B, const reference_tests::Tensor& A, - const reference_tests::Tensor& Ho, const std::string& testcaseName = "") : - batchSize(batchSize), inputSize(inputSize), hiddenSize(hiddenSize), gatesCount(gatesCount), - X(X), H_t(H_t), W(W), R(R), B(B), A(A), Ho(Ho), testcaseName(testcaseName) {} + AUGRUCellParams(const int32_t batchSize, + const int32_t inputSize, + const int32_t hiddenSize, + const int32_t gatesCount, + const reference_tests::Tensor& X, + const reference_tests::Tensor& H_t, + const reference_tests::Tensor& W, + const reference_tests::Tensor& R, + const reference_tests::Tensor& B, + const reference_tests::Tensor& A, + const reference_tests::Tensor& Ho, + const std::string& testcaseName = "") + : batchSize(batchSize), + inputSize(inputSize), + hiddenSize(hiddenSize), + gatesCount(gatesCount), + X(X), + H_t(H_t), + W(W), + R(R), + B(B), + A(A), + Ho(Ho), + testcaseName(testcaseName) {} int32_t batchSize; int32_t inputSize; @@ -76,13 +95,7 @@ private: const auto B = std::make_shared(params.B.type, params.B.shape); const auto A = std::make_shared(params.A.type, params.A.shape); - const auto augru_cell = std::make_shared(X, - H_t, - W, - R, - B, - A, - params.hiddenSize); + const auto augru_cell = std::make_shared(X, H_t, W, R, B, A, params.hiddenSize); auto function = std::make_shared(NodeVector{augru_cell}, ParameterVector{X, H_t, W, R, B, A}); return function; @@ -96,107 +109,144 @@ TEST_P(ReferenceAUGRUCellTest, CompareWithRefs) { template std::vector generateParams() { using T = typename element_type_traits::value_type; - std::vector params { + std::vector params{ AUGRUCellParams( - 2, 3, 3, 3, - reference_tests::Tensor(ET, {2, 3}, std::vector{ - 0.52421564f, 0.78845507f, 0.9372873f, 0.59783894f, 0.18278378f, 0.2084126f}), - reference_tests::Tensor(ET, {2, 3}, std::vector{ - 0.45738035f, 0.996877f, 0.82882977f, 0.47492632f, 0.88471466f, 0.57833236f}), - reference_tests::Tensor(ET, {3 * 3, 3}, std::vector{ - 0.5815369f, 0.16559383f, 0.08464007f, 0.843122f, 0.73968244f, 0.11359601f, - 0.8295078f, 0.9240567f, 0.10007995f, 0.20573162f, 0.09002485f, 0.2839569f, - 0.3096991f, 0.5638341f, 0.5787327f, 0.84552664f, 0.16263747f, 0.7243242f, - 0.8049057f, 0.43966424f, 0.46294412f, 0.9833361f, 0.31369713f, 0.1719934f, - 0.4937093f, 0.6353004f, 0.77982515f}), - reference_tests::Tensor(ET, {3 * 3, 3}, std::vector{ - 0.16510165f, 0.52435565f, 0.2788478f, 0.99427545f, 0.1623331f, 0.01389796f, - 0.99669236f, 0.53901845f, 0.8737506f, 0.9254788f, 0.21172932f, 0.11634306f, - 0.40111724f, 0.37497616f, 0.2903471f, 0.6796794f, 0.65131867f, 0.78163475f, - 0.12058706f, 0.45591718f, 0.791677f, 0.76497287f, 0.9895242f, 0.7845312f, - 0.51267904f, 0.49030215f, 0.08498167f}), - reference_tests::Tensor(ET, {3 * 3}, std::vector{ - 0.8286678f + 0.9175602f, - 0.9153158f + 0.14958014f, - 0.9581612f + 0.49230585f, - 0.6639213f + 0.63162816f, - 0.84239805f + 0.4161903f, - 0.5282445f + 0.22148274f, - 0.14153397f + 0.50496656f, - 0.22404431f + 0.34798595f, - 0.6549655f + 0.6699164f}), + 2, + 3, + 3, + 3, + reference_tests::Tensor( + ET, + {2, 3}, + std::vector{0.52421564f, 0.78845507f, 0.9372873f, 0.59783894f, 0.18278378f, 0.2084126f}), + reference_tests::Tensor( + ET, + {2, 3}, + std::vector{0.45738035f, 0.996877f, 0.82882977f, 0.47492632f, 0.88471466f, 0.57833236f}), + reference_tests::Tensor( + ET, + {3 * 3, 3}, + std::vector{0.5815369f, 0.16559383f, 0.08464007f, 0.843122f, 0.73968244f, 0.11359601f, 0.8295078f, + 0.9240567f, 0.10007995f, 0.20573162f, 0.09002485f, 0.2839569f, 0.3096991f, 0.5638341f, + 0.5787327f, 0.84552664f, 0.16263747f, 0.7243242f, 0.8049057f, 0.43966424f, 0.46294412f, + 0.9833361f, 0.31369713f, 0.1719934f, 0.4937093f, 0.6353004f, 0.77982515f}), + reference_tests::Tensor(ET, {3 * 3, 3}, std::vector{0.16510165f, 0.52435565f, 0.2788478f, 0.99427545f, + 0.1623331f, 0.01389796f, 0.99669236f, 0.53901845f, + 0.8737506f, 0.9254788f, 0.21172932f, 0.11634306f, + 0.40111724f, 0.37497616f, 0.2903471f, 0.6796794f, + 0.65131867f, 0.78163475f, 0.12058706f, 0.45591718f, + 0.791677f, 0.76497287f, 0.9895242f, 0.7845312f, + 0.51267904f, 0.49030215f, 0.08498167f}), + reference_tests::Tensor(ET, + {3 * 3}, + std::vector{0.8286678f + 0.9175602f, + 0.9153158f + 0.14958014f, + 0.9581612f + 0.49230585f, + 0.6639213f + 0.63162816f, + 0.84239805f + 0.4161903f, + 0.5282445f + 0.22148274f, + 0.14153397f + 0.50496656f, + 0.22404431f + 0.34798595f, + 0.6549655f + 0.6699164f}), reference_tests::Tensor(ET, {2, 1}, std::vector(2, 0)), - reference_tests::Tensor(ET, {2, 3}, std::vector{ - 0.480763f, 0.996927f, 0.830836f, 0.50231f, 0.894105f, 0.58932f}), + reference_tests::Tensor(ET, + {2, 3}, + std::vector{0.480763f, 0.996927f, 0.830836f, 0.50231f, 0.894105f, 0.58932f}), "augru_zero_attentional_gate"), AUGRUCellParams( - 2, 3, 3, 3, - reference_tests::Tensor(ET, {2, 3}, std::vector{ - 0.52421564f, 0.78845507f, 0.9372873f, 0.59783894f, 0.18278378f, 0.2084126f}), - reference_tests::Tensor(ET, {2, 3}, std::vector{ - 0.45738035f, 0.996877f, 0.82882977f, 0.47492632f, 0.88471466f, 0.57833236f}), - reference_tests::Tensor(ET, {3 * 3, 3}, std::vector{ - 0.5815369f, 0.16559383f, 0.08464007f, 0.843122f, 0.73968244f, 0.11359601f, - 0.8295078f, 0.9240567f, 0.10007995f, 0.20573162f, 0.09002485f, 0.2839569f, - 0.3096991f, 0.5638341f, 0.5787327f, 0.84552664f, 0.16263747f, 0.7243242f, - 0.8049057f, 0.43966424f, 0.46294412f, 0.9833361f, 0.31369713f, 0.1719934f, - 0.4937093f, 0.6353004f, 0.77982515f}), - reference_tests::Tensor(ET, {3 * 3, 3}, std::vector{ - 0.16510165f, 0.52435565f, 0.2788478f, 0.99427545f, 0.1623331f, 0.01389796f, - 0.99669236f, 0.53901845f, 0.8737506f, 0.9254788f, 0.21172932f, 0.11634306f, - 0.40111724f, 0.37497616f, 0.2903471f, 0.6796794f, 0.65131867f, 0.78163475f, - 0.12058706f, 0.45591718f, 0.791677f, 0.76497287f, 0.9895242f, 0.7845312f, - 0.51267904f, 0.49030215f, 0.08498167f}), - reference_tests::Tensor(ET, {3 * 3}, std::vector{ - 0.8286678f + 0.9175602f, - 0.9153158f + 0.14958014f, - 0.9581612f + 0.49230585f, - 0.6639213f + 0.63162816f, - 0.84239805f + 0.4161903f, - 0.5282445f + 0.22148274f, - 0.14153397f + 0.50496656f, - 0.22404431f + 0.34798595f, - 0.6549655f + 0.6699164f}), + 2, + 3, + 3, + 3, + reference_tests::Tensor( + ET, + {2, 3}, + std::vector{0.52421564f, 0.78845507f, 0.9372873f, 0.59783894f, 0.18278378f, 0.2084126f}), + reference_tests::Tensor( + ET, + {2, 3}, + std::vector{0.45738035f, 0.996877f, 0.82882977f, 0.47492632f, 0.88471466f, 0.57833236f}), + reference_tests::Tensor( + ET, + {3 * 3, 3}, + std::vector{0.5815369f, 0.16559383f, 0.08464007f, 0.843122f, 0.73968244f, 0.11359601f, 0.8295078f, + 0.9240567f, 0.10007995f, 0.20573162f, 0.09002485f, 0.2839569f, 0.3096991f, 0.5638341f, + 0.5787327f, 0.84552664f, 0.16263747f, 0.7243242f, 0.8049057f, 0.43966424f, 0.46294412f, + 0.9833361f, 0.31369713f, 0.1719934f, 0.4937093f, 0.6353004f, 0.77982515f}), + reference_tests::Tensor(ET, {3 * 3, 3}, std::vector{0.16510165f, 0.52435565f, 0.2788478f, 0.99427545f, + 0.1623331f, 0.01389796f, 0.99669236f, 0.53901845f, + 0.8737506f, 0.9254788f, 0.21172932f, 0.11634306f, + 0.40111724f, 0.37497616f, 0.2903471f, 0.6796794f, + 0.65131867f, 0.78163475f, 0.12058706f, 0.45591718f, + 0.791677f, 0.76497287f, 0.9895242f, 0.7845312f, + 0.51267904f, 0.49030215f, 0.08498167f}), + reference_tests::Tensor(ET, + {3 * 3}, + std::vector{0.8286678f + 0.9175602f, + 0.9153158f + 0.14958014f, + 0.9581612f + 0.49230585f, + 0.6639213f + 0.63162816f, + 0.84239805f + 0.4161903f, + 0.5282445f + 0.22148274f, + 0.14153397f + 0.50496656f, + 0.22404431f + 0.34798595f, + 0.6549655f + 0.6699164f}), reference_tests::Tensor(ET, {2, 1}, std::vector{0.4f, 0.7f}), - reference_tests::Tensor(ET, {2, 3}, std::vector{ - 0.686381f, 0.997266f, 0.897868f, 0.832165f, 0.963144f, 0.868483f}), - "augru_attentional_gate_provided"), -AUGRUCellParams( - 2, 3, 4, 3, - reference_tests::Tensor(ET, {1, 3}, std::vector{ - 0.64053001f, 0.84805253f, 0.84544252f}), - reference_tests::Tensor(ET, {1, 4}, std::vector{ - 0.43200249f, 0.08097203f, 0.68151259f, 0.09095205f}), - reference_tests::Tensor(ET, {3 * 4, 3}, std::vector{ - 0.23187583f, 0.66675389f, 0.01945467f, 0.60630121f, 0.18400699f, 0.16003634f, - 0.04636866f, 0.75745989f, 0.96562912f, 0.56330529f, 0.20863093f, 0.93179716f, - 0.99211225f, 0.73087621f, 0.21175275f, 0.03808638f, 0.63130526f, 0.76965886f, - 0.67656870f, 0.57886251f, 0.94375534f, 0.88943972f, 0.96256618f, 0.38204562f, - 0.76424904f, 0.30076485f, 0.60250044f, 0.40778284f, 0.70017757f, 0.00410288f, - 0.97978094f, 0.73106175f, 0.22250106f, 0.44011834f, 0.11434720f, 0.62128995}), - reference_tests::Tensor(ET, {3 * 4, 4}, std::vector{ - 0.60702709f, 0.47515485f, 0.26202747f, 0.53851601f, 0.73423241f, 0.11627945f, - 0.04631785f, 0.43604361f, 0.12472080f, 0.47546322f, 0.23103632f, 0.36108585f, - 0.45139418f, 0.79838954f, 0.28194170f, 0.76877929f, 0.28428253f, 0.13822001f, - 0.51670576f, 0.80312243f, 0.11050813f, 0.19925340f, 0.29769184f, 0.78933459f, - 0.79981487f, 0.55313454f, 0.04135296f, 0.50578146f, 0.76553680f, 0.44311704f, - 0.30525652f, 0.26301583f, 0.41771479f, 0.18182059f, 0.11106816f, 0.67427757f, - 0.59174944f, 0.13339960f, 0.33362533f, 0.78938375f, 0.99260256f, 0.86955733f, - 0.24899024f, 0.87134874f, 0.02803802f, 0.61244129f, 0.40803782f, 0.90735816f, - 0.51267904f, 0.49030215f, 0.08498167f}), - reference_tests::Tensor(ET, {3 * 4}, std::vector{ - 0.61387895f, 0.56121052f, 0.89328753f, 0.15302506f, 0.90491122f, 0.78289335f, - 0.97930211f, 0.75002178f, 0.92500923f, 0.18957983f, 0.07849785f, 0.76568159f}), + reference_tests::Tensor(ET, + {2, 3}, + std::vector{0.686381f, 0.997266f, 0.897868f, 0.832165f, 0.963144f, 0.868483f}), + "augru_attentional_gate_provided"), + AUGRUCellParams( + 2, + 3, + 4, + 3, + reference_tests::Tensor(ET, {1, 3}, std::vector{0.64053001f, 0.84805253f, 0.84544252f}), + reference_tests::Tensor(ET, {1, 4}, std::vector{0.43200249f, 0.08097203f, 0.68151259f, 0.09095205f}), + reference_tests::Tensor( + ET, + {3 * 4, 3}, + std::vector{0.23187583f, 0.66675389f, 0.01945467f, 0.60630121f, 0.18400699f, 0.16003634f, + 0.04636866f, 0.75745989f, 0.96562912f, 0.56330529f, 0.20863093f, 0.93179716f, + 0.99211225f, 0.73087621f, 0.21175275f, 0.03808638f, 0.63130526f, 0.76965886f, + 0.67656870f, 0.57886251f, 0.94375534f, 0.88943972f, 0.96256618f, 0.38204562f, + 0.76424904f, 0.30076485f, 0.60250044f, 0.40778284f, 0.70017757f, 0.00410288f, + 0.97978094f, 0.73106175f, 0.22250106f, 0.44011834f, 0.11434720f, 0.62128995}), + reference_tests::Tensor( + ET, + {3 * 4, 4}, + std::vector{0.60702709f, 0.47515485f, 0.26202747f, 0.53851601f, 0.73423241f, 0.11627945f, + 0.04631785f, 0.43604361f, 0.12472080f, 0.47546322f, 0.23103632f, 0.36108585f, + 0.45139418f, 0.79838954f, 0.28194170f, 0.76877929f, 0.28428253f, 0.13822001f, + 0.51670576f, 0.80312243f, 0.11050813f, 0.19925340f, 0.29769184f, 0.78933459f, + 0.79981487f, 0.55313454f, 0.04135296f, 0.50578146f, 0.76553680f, 0.44311704f, + 0.30525652f, 0.26301583f, 0.41771479f, 0.18182059f, 0.11106816f, 0.67427757f, + 0.59174944f, 0.13339960f, 0.33362533f, 0.78938375f, 0.99260256f, 0.86955733f, + 0.24899024f, 0.87134874f, 0.02803802f, 0.61244129f, 0.40803782f, 0.90735816f, + 0.51267904f, 0.49030215f, 0.08498167f}), + reference_tests::Tensor(ET, + {3 * 4}, + std::vector{0.61387895f, + 0.56121052f, + 0.89328753f, + 0.15302506f, + 0.90491122f, + 0.78289335f, + 0.97930211f, + 0.75002178f, + 0.92500923f, + 0.18957983f, + 0.07849785f, + 0.76568159f}), reference_tests::Tensor(ET, {1, 1}, std::vector{0.3333f}), - reference_tests::Tensor(ET, {2, 2}, std::vector{ - 0.666063f, 0.451451f, 0.792762f, 0.453281f}), - "augru_different_input_and_hidden_size"), - }; + reference_tests::Tensor(ET, {2, 2}, std::vector{0.666063f, 0.451451f, 0.792762f, 0.453281f}), + "augru_different_input_and_hidden_size"), + }; return params; } std::vector generateCombinedParams() { - const std::vector> generatedParams { + const std::vector> generatedParams{ generateParams(), generateParams(), generateParams(), @@ -210,7 +260,9 @@ std::vector generateCombinedParams() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_AUGRUCell_With_Hardcoded_Refs, ReferenceAUGRUCellTest, - testing::ValuesIn(generateCombinedParams()), ReferenceAUGRUCellTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_AUGRUCell_With_Hardcoded_Refs, + ReferenceAUGRUCellTest, + testing::ValuesIn(generateCombinedParams()), + ReferenceAUGRUCellTest::getTestCaseName); -} // namespace +} // namespace diff --git a/src/plugins/template/tests/functional/op_reference/augru_sequence.cpp b/src/plugins/template/tests/functional/op_reference/augru_sequence.cpp index 27d5c48330b..c9d654da233 100644 --- a/src/plugins/template/tests/functional/op_reference/augru_sequence.cpp +++ b/src/plugins/template/tests/functional/op_reference/augru_sequence.cpp @@ -2,9 +2,10 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "ov_ops/augru_sequence.hpp" + #include -#include "ov_ops/augru_sequence.hpp" #include "base_reference_test.hpp" using namespace reference_tests; @@ -13,42 +14,53 @@ using namespace ov; namespace { struct AUGRUSequenceParams { template - AUGRUSequenceParams( - const size_t batchSize, const size_t inputSize, const size_t hiddenSize, const size_t seqLength, - const element::Type_t& iType, - const std::vector& XValues, const std::vector& H_tValues, const std::vector& seqLengthsValues, - const std::vector& WValues, const std::vector& RValues, const std::vector& BValues, const std::vector& AValues, - const std::vector& YValues, const std::vector& HoValues, - const std::string& testcaseName = "") : - batchSize(batchSize), inputSize(inputSize), hiddenSize(hiddenSize), seqLength(seqLength), - iType(iType), oType(iType), - testcaseName(testcaseName) { - numDirections = 1; + AUGRUSequenceParams(const size_t batchSize, + const size_t inputSize, + const size_t hiddenSize, + const size_t seqLength, + const element::Type_t& iType, + const std::vector& XValues, + const std::vector& H_tValues, + const std::vector& seqLengthsValues, + const std::vector& WValues, + const std::vector& RValues, + const std::vector& BValues, + const std::vector& AValues, + const std::vector& YValues, + const std::vector& HoValues, + const std::string& testcaseName = "") + : batchSize(batchSize), + inputSize(inputSize), + hiddenSize(hiddenSize), + seqLength(seqLength), + iType(iType), + oType(iType), + testcaseName(testcaseName) { + numDirections = 1; - Shape XShape = Shape{batchSize, seqLength, inputSize}; - Shape H_tShape = Shape{batchSize, numDirections, hiddenSize}; - Shape seqLengthsShape = Shape{batchSize}; - Shape WShape = Shape{numDirections, 3 * hiddenSize, inputSize}; - Shape RShape = Shape{numDirections, 3 * hiddenSize, hiddenSize}; - Shape YShape = Shape{batchSize, numDirections, seqLength, hiddenSize}; - Shape HoShape = Shape{batchSize, numDirections, hiddenSize}; + Shape XShape = Shape{batchSize, seqLength, inputSize}; + Shape H_tShape = Shape{batchSize, numDirections, hiddenSize}; + Shape seqLengthsShape = Shape{batchSize}; + Shape WShape = Shape{numDirections, 3 * hiddenSize, inputSize}; + Shape RShape = Shape{numDirections, 3 * hiddenSize, hiddenSize}; + Shape YShape = Shape{batchSize, numDirections, seqLength, hiddenSize}; + Shape HoShape = Shape{batchSize, numDirections, hiddenSize}; - X = reference_tests::Tensor(XShape, iType, XValues); - H_t = reference_tests::Tensor(H_tShape, iType, H_tValues); - sequence_lengths = reference_tests::Tensor(seqLengthsShape, element::Type_t::i64, seqLengthsValues); - W = reference_tests::Tensor(WShape, iType, WValues); - R = reference_tests::Tensor(RShape, iType, RValues); + X = reference_tests::Tensor(XShape, iType, XValues); + H_t = reference_tests::Tensor(H_tShape, iType, H_tValues); + sequence_lengths = reference_tests::Tensor(seqLengthsShape, element::Type_t::i64, seqLengthsValues); + W = reference_tests::Tensor(WShape, iType, WValues); + R = reference_tests::Tensor(RShape, iType, RValues); - Y = reference_tests::Tensor(YShape, oType, YValues); - Ho = reference_tests::Tensor(HoShape, oType, HoValues); + Y = reference_tests::Tensor(YShape, oType, YValues); + Ho = reference_tests::Tensor(HoShape, oType, HoValues); - Shape BShape = Shape{numDirections, 3 * hiddenSize}; - B = reference_tests::Tensor(BShape, iType, BValues); + Shape BShape = Shape{numDirections, 3 * hiddenSize}; + B = reference_tests::Tensor(BShape, iType, BValues); - Shape AShape = Shape{batchSize, seqLength, 1}; - A = reference_tests::Tensor(AShape, iType, AValues); - - } + Shape AShape = Shape{batchSize, seqLength, 1}; + A = reference_tests::Tensor(AShape, iType, AValues); + } size_t batchSize; size_t inputSize; @@ -75,7 +87,13 @@ public: void SetUp() override { auto params = GetParam(); function = CreateFunction(params); - inputData = {params.X.data, params.H_t.data, params.sequence_lengths.data, params.W.data, params.R.data, params.B.data, params.A.data}; + inputData = {params.X.data, + params.H_t.data, + params.sequence_lengths.data, + params.W.data, + params.R.data, + params.B.data, + params.A.data}; refOutData = {params.Y.data, params.Ho.data}; } @@ -101,23 +119,18 @@ private: static std::shared_ptr CreateFunction(const AUGRUSequenceParams& params) { const auto X = std::make_shared(params.X.type, params.X.shape); const auto H_t = std::make_shared(params.H_t.type, params.H_t.shape); - const auto sequence_lengths = std::make_shared(params.sequence_lengths.type, params.sequence_lengths.shape); + const auto sequence_lengths = + std::make_shared(params.sequence_lengths.type, params.sequence_lengths.shape); const auto W = std::make_shared(params.W.type, params.W.shape); const auto R = std::make_shared(params.R.type, params.R.shape); const auto B = std::make_shared(params.B.type, params.B.shape); const auto A = std::make_shared(params.A.type, params.A.shape); const auto augru_sequence = - std::make_shared(X, - H_t, - sequence_lengths, - W, - R, - B, - A, - params.hiddenSize); + std::make_shared(X, H_t, sequence_lengths, W, R, B, A, params.hiddenSize); - auto function = std::make_shared(augru_sequence->outputs(), ParameterVector{X, H_t, sequence_lengths, W, R, B, A}); + auto function = + std::make_shared(augru_sequence->outputs(), ParameterVector{X, H_t, sequence_lengths, W, R, B, A}); return function; } }; @@ -130,504 +143,528 @@ template std::vector generateParams() { using T = typename element_type_traits::value_type; - std::vector params { + std::vector params{ AUGRUSequenceParams( - 5, 10, 10, 10, + 5, + 10, + 10, + 10, ET, std::vector{ - 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, - 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, - 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, - 7.03475, 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, - 6.61627, 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 2.07541, - 5.72319, 1.75261, 9.25175, 9.19404, 3.69037, 6.2595, 6.09321, 6.52544, 9.60882, 3.34881, - 3.07914, 5.80104, 9.54944, 5.43754, 5.8654, 7.88937, 1.40811, 2.2597, 8.13163, 1.26821, - 8.94813, 5.86709, 5.03182, 9.02922, 4.39826, 5.84582, 6.87069, 4.25135, 6.13908, 6.74053, - 2.13683, 7.21184, 6.82974, 4.18545, 7.8691, 4.20879, 7.77509, 8.93208, 1.10502, 5.48298, - 1.66413, 8.08256, 1.57661, 4.19779, 9.47653, 4.41823, 7.86628, 7.94436, 3.71224, 7.95465, - 2.37637, 6.20771, 1.08107, 7.38138, 5.23577, 7.88133, 5.20653, 3.42101, 8.48523, 5.96192, - 1.63073, 5.25228, 7.68488, 2.7276, 5.1788, 3.07327, 5.57423, 2.87711, 1.44374, 5.66976, - 2.55051, 4.56682, 1.96629, 5.58829, 1.91922, 3.59846, 3.08583, 9.70901, 3.50487, 3.1026, - 1.82401, 6.1306, 4.76134, 4.31059, 8.31695, 3.60784, 7.45652, 6.51653, 4.84219, 7.76686, - 4.85031, 4.85544, 4.25714, 2.38005, 9.43471, 9.24769, 8.03763, 6.54696, 1.32399, 6.88891, - 2.16793, 3.64924, 4.24733, 3.47181, 1.66572, 2.36923, 2.45457, 9.44841, 4.34021, 1.45016, - 7.6686, 3.68812, 2.83922, 9.83581, 9.03719, 7.83414, 6.86009, 1.35715, 8.32489, 7.86316, - 5.09754, 5.78644, 1.98402, 2.31429, 5.5791, 2.94085, 9.24799, 5.15937, 2.19041, 7.87817, - 2.9146, 1.66833, 1.85877, 2.45985, 4.20817, 1.85777, 2.28937, 9.37912, 6.18926, 8.55681, - 6.60963, 3.92066, 7.5521, 5.70463, 7.6313, 2.48866, 7.18352, 4.8413, 7.55702, 7.80702, - 4.5785, 9.3268, 2.83159, 1.07202, 9.33716, 3.6506, 2.50256, 1.21691, 5.06801, 8.27505, - 4.31539, 6.48286, 1.31363, 4.1912, 1.70668, 7.23867, 1.11441, 5.13591, 9.65186, 4.00767, - 5.24875, 1.94852, 5.52768, 8.97121, 5.8094, 3.53329, 4.19126, 9.06652, 3.1734, 1.21496, - 9.69154, 4.86971, 4.1166, 6.19361, 2.13874, 9.55039, 3.8225, 9.57548, 2.96554, 3.2383, - 8.77422, 3.11741, 8.3359, 5.89508, 2.72134, 6.29956, 1.43323, 1.14286, 1.4474, 4.59474, - 6.19214, 8.80766, 8.07546, 3.29232, 1.74029, 2.4198, 2.88544, 4.75644, 4.12921, 7.29896, - 7.27759, 1.67252, 1.32823, 8.1046, 9.10476, 1.04197, 3.37783, 5.2064, 4.23835, 3.16196, - 1.20852, 5.78501, 2.17175, 6.05313, 2.51048, 4.78967, 7.16219, 3.4651, 1.09, 2.9788, - 1.28761, 9.41385, 8.03883, 5.65835, 1.14816, 3.6892, 5.86648, 8.73895, 2.66603, 1.75192, - 1.39845, 4.99427, 1.17387, 1.60329, 8.30594, 6.72662, 7.95565, 7.35114, 3.1439, 1.39976, - 3.53095, 8.78581, 1.65811, 6.94299, 2.68641, 5.70058, 9.13491, 5.27637, 8.6232, 8.54902, - 2.25352, 5.86274, 5.20377, 2.96815, 4.96745, 5.3225, 3.99956, 1.08021, 5.54918, 7.05833, - 1.49913, 2.41822, 6.44593, 3.87301, 9.01465, 8.11336, 2.95749, 2.80188, 7.12396, 2.40595, - 5.59325, 9.89258, 2.30223, 1.4347, 9.09158, 7.43797, 3.79295, 4.53646, 1.72705, 4.16909, - 1.00912, 6.62167, 2.80244, 6.626, 3.89307, 1.42586, 7.51028, 7.83327, 4.65674, 7.33902, - 6.26823, 9.72608, 3.73491, 3.8238, 3.03815, 7.05101, 8.0103, 5.61396, 6.53738, 1.41095, - 5.0149, 9.71211, 4.23604, 5.98629, 4.70219, 9.69442, 2.82752, 9.93544, 6.9328, 8.2817, - 5.12336, 8.98577, 5.80541, 6.19552, 9.25748, 3.82732, 7.53525, 8.24712, 5.32057, 5.38817, - 8.57269, 5.99975, 3.42893, 5.38068, 3.48261, 3.02851, 6.82079, 9.2902, 2.80427, 8.91868, - 5.19227, 7.52482, 3.72584, 5.40107, 2.83307, 1.79755, 2.49121, 5.52697, 8.08823, 9.13242, - 2.97572, 7.64318, 3.32023, 6.07788, 2.19187, 4.34879, 1.7457, 5.55154, 7.24966, 5.1128, - 4.25147, 8.34407, 1.4123, 4.49045, 5.12671, 7.62159, 9.18673, 3.49665, 8.35992, 6.90684, - 1.10152, 7.61818, 6.43145, 7.12017, 6.25564, 6.16169, 4.24916, 9.6283, 9.88249, 4.48422, - 8.52562, 9.83928, 6.26818, 7.03839, 1.77631, 9.92305, 8.0155, 9.94928, 6.88321, 1.33685, - 7.4718, 7.19305, 6.47932, 1.9559, 3.52616, 7.98593, 9.0115, 5.59539, 7.44137, 1.70001, - 6.53774, 8.54023, 7.26405, 5.99553, 8.75071, 7.70789, 3.38094, 9.99792, 6.16359, 6.75153, - 5.4073, 9.00437, 8.87059, 8.63011, 6.82951, 6.27021, 3.53425, 9.92489, 8.19695, 5.51473, - 7.95084, 2.11852, 9.28916, 1.40353, 3.05744, 8.58238, 3.75014, 5.35889, 6.85048, 2.29549, - 3.75218, 8.98228, 8.98158, 5.63695, 3.40379, 8.92309, 5.48185, 4.00095, 9.05227, 2.84035, - 8.37644, 8.54954, 5.70516, 2.45744, 9.54079, 1.53504, 8.9785, 6.1691, 4.40962, 10}, - std::vector{ - 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, - 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, - 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, - 7.03475, 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, - 6.61627, 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 10}, + 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, 8.6168, + 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, 8.0055, 7.44373, + 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, 7.03475, 6.33759, 7.04489, + 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, 6.61627, 6.94572, 3.68646, 5.01521, + 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 2.07541, 5.72319, 1.75261, 9.25175, 9.19404, 3.69037, + 6.2595, 6.09321, 6.52544, 9.60882, 3.34881, 3.07914, 5.80104, 9.54944, 5.43754, 5.8654, 7.88937, + 1.40811, 2.2597, 8.13163, 1.26821, 8.94813, 5.86709, 5.03182, 9.02922, 4.39826, 5.84582, 6.87069, + 4.25135, 6.13908, 6.74053, 2.13683, 7.21184, 6.82974, 4.18545, 7.8691, 4.20879, 7.77509, 8.93208, + 1.10502, 5.48298, 1.66413, 8.08256, 1.57661, 4.19779, 9.47653, 4.41823, 7.86628, 7.94436, 3.71224, + 7.95465, 2.37637, 6.20771, 1.08107, 7.38138, 5.23577, 7.88133, 5.20653, 3.42101, 8.48523, 5.96192, + 1.63073, 5.25228, 7.68488, 2.7276, 5.1788, 3.07327, 5.57423, 2.87711, 1.44374, 5.66976, 2.55051, + 4.56682, 1.96629, 5.58829, 1.91922, 3.59846, 3.08583, 9.70901, 3.50487, 3.1026, 1.82401, 6.1306, + 4.76134, 4.31059, 8.31695, 3.60784, 7.45652, 6.51653, 4.84219, 7.76686, 4.85031, 4.85544, 4.25714, + 2.38005, 9.43471, 9.24769, 8.03763, 6.54696, 1.32399, 6.88891, 2.16793, 3.64924, 4.24733, 3.47181, + 1.66572, 2.36923, 2.45457, 9.44841, 4.34021, 1.45016, 7.6686, 3.68812, 2.83922, 9.83581, 9.03719, + 7.83414, 6.86009, 1.35715, 8.32489, 7.86316, 5.09754, 5.78644, 1.98402, 2.31429, 5.5791, 2.94085, + 9.24799, 5.15937, 2.19041, 7.87817, 2.9146, 1.66833, 1.85877, 2.45985, 4.20817, 1.85777, 2.28937, + 9.37912, 6.18926, 8.55681, 6.60963, 3.92066, 7.5521, 5.70463, 7.6313, 2.48866, 7.18352, 4.8413, + 7.55702, 7.80702, 4.5785, 9.3268, 2.83159, 1.07202, 9.33716, 3.6506, 2.50256, 1.21691, 5.06801, + 8.27505, 4.31539, 6.48286, 1.31363, 4.1912, 1.70668, 7.23867, 1.11441, 5.13591, 9.65186, 4.00767, + 5.24875, 1.94852, 5.52768, 8.97121, 5.8094, 3.53329, 4.19126, 9.06652, 3.1734, 1.21496, 9.69154, + 4.86971, 4.1166, 6.19361, 2.13874, 9.55039, 3.8225, 9.57548, 2.96554, 3.2383, 8.77422, 3.11741, + 8.3359, 5.89508, 2.72134, 6.29956, 1.43323, 1.14286, 1.4474, 4.59474, 6.19214, 8.80766, 8.07546, + 3.29232, 1.74029, 2.4198, 2.88544, 4.75644, 4.12921, 7.29896, 7.27759, 1.67252, 1.32823, 8.1046, + 9.10476, 1.04197, 3.37783, 5.2064, 4.23835, 3.16196, 1.20852, 5.78501, 2.17175, 6.05313, 2.51048, + 4.78967, 7.16219, 3.4651, 1.09, 2.9788, 1.28761, 9.41385, 8.03883, 5.65835, 1.14816, 3.6892, + 5.86648, 8.73895, 2.66603, 1.75192, 1.39845, 4.99427, 1.17387, 1.60329, 8.30594, 6.72662, 7.95565, + 7.35114, 3.1439, 1.39976, 3.53095, 8.78581, 1.65811, 6.94299, 2.68641, 5.70058, 9.13491, 5.27637, + 8.6232, 8.54902, 2.25352, 5.86274, 5.20377, 2.96815, 4.96745, 5.3225, 3.99956, 1.08021, 5.54918, + 7.05833, 1.49913, 2.41822, 6.44593, 3.87301, 9.01465, 8.11336, 2.95749, 2.80188, 7.12396, 2.40595, + 5.59325, 9.89258, 2.30223, 1.4347, 9.09158, 7.43797, 3.79295, 4.53646, 1.72705, 4.16909, 1.00912, + 6.62167, 2.80244, 6.626, 3.89307, 1.42586, 7.51028, 7.83327, 4.65674, 7.33902, 6.26823, 9.72608, + 3.73491, 3.8238, 3.03815, 7.05101, 8.0103, 5.61396, 6.53738, 1.41095, 5.0149, 9.71211, 4.23604, + 5.98629, 4.70219, 9.69442, 2.82752, 9.93544, 6.9328, 8.2817, 5.12336, 8.98577, 5.80541, 6.19552, + 9.25748, 3.82732, 7.53525, 8.24712, 5.32057, 5.38817, 8.57269, 5.99975, 3.42893, 5.38068, 3.48261, + 3.02851, 6.82079, 9.2902, 2.80427, 8.91868, 5.19227, 7.52482, 3.72584, 5.40107, 2.83307, 1.79755, + 2.49121, 5.52697, 8.08823, 9.13242, 2.97572, 7.64318, 3.32023, 6.07788, 2.19187, 4.34879, 1.7457, + 5.55154, 7.24966, 5.1128, 4.25147, 8.34407, 1.4123, 4.49045, 5.12671, 7.62159, 9.18673, 3.49665, + 8.35992, 6.90684, 1.10152, 7.61818, 6.43145, 7.12017, 6.25564, 6.16169, 4.24916, 9.6283, 9.88249, + 4.48422, 8.52562, 9.83928, 6.26818, 7.03839, 1.77631, 9.92305, 8.0155, 9.94928, 6.88321, 1.33685, + 7.4718, 7.19305, 6.47932, 1.9559, 3.52616, 7.98593, 9.0115, 5.59539, 7.44137, 1.70001, 6.53774, + 8.54023, 7.26405, 5.99553, 8.75071, 7.70789, 3.38094, 9.99792, 6.16359, 6.75153, 5.4073, 9.00437, + 8.87059, 8.63011, 6.82951, 6.27021, 3.53425, 9.92489, 8.19695, 5.51473, 7.95084, 2.11852, 9.28916, + 1.40353, 3.05744, 8.58238, 3.75014, 5.35889, 6.85048, 2.29549, 3.75218, 8.98228, 8.98158, 5.63695, + 3.40379, 8.92309, 5.48185, 4.00095, 9.05227, 2.84035, 8.37644, 8.54954, 5.70516, 2.45744, 9.54079, + 1.53504, 8.9785, 6.1691, 4.40962, 10}, + std::vector{1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, + 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, + 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, + 7.03475, 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, + 6.61627, 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 10}, std::vector{10, 10, 10, 10, 10}, std::vector{ - 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, - 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, - 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, - 7.03475, 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, - 6.61627, 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 2.07541, - 5.72319, 1.75261, 9.25175, 9.19404, 3.69037, 6.2595, 6.09321, 6.52544, 9.60882, 3.34881, - 3.07914, 5.80104, 9.54944, 5.43754, 5.8654, 7.88937, 1.40811, 2.2597, 8.13163, 1.26821, - 8.94813, 5.86709, 5.03182, 9.02922, 4.39826, 5.84582, 6.87069, 4.25135, 6.13908, 6.74053, - 2.13683, 7.21184, 6.82974, 4.18545, 7.8691, 4.20879, 7.77509, 8.93208, 1.10502, 5.48298, - 1.66413, 8.08256, 1.57661, 4.19779, 9.47653, 4.41823, 7.86628, 7.94436, 3.71224, 7.95465, - 2.37637, 6.20771, 1.08107, 7.38138, 5.23577, 7.88133, 5.20653, 3.42101, 8.48523, 5.96192, - 1.63073, 5.25228, 7.68488, 2.7276, 5.1788, 3.07327, 5.57423, 2.87711, 1.44374, 5.66976, - 2.55051, 4.56682, 1.96629, 5.58829, 1.91922, 3.59846, 3.08583, 9.70901, 3.50487, 3.1026, - 1.82401, 6.1306, 4.76134, 4.31059, 8.31695, 3.60784, 7.45652, 6.51653, 4.84219, 7.76686, - 4.85031, 4.85544, 4.25714, 2.38005, 9.43471, 9.24769, 8.03763, 6.54696, 1.32399, 6.88891, - 2.16793, 3.64924, 4.24733, 3.47181, 1.66572, 2.36923, 2.45457, 9.44841, 4.34021, 1.45016, - 7.6686, 3.68812, 2.83922, 9.83581, 9.03719, 7.83414, 6.86009, 1.35715, 8.32489, 7.86316, - 5.09754, 5.78644, 1.98402, 2.31429, 5.5791, 2.94085, 9.24799, 5.15937, 2.19041, 7.87817, - 2.9146, 1.66833, 1.85877, 2.45985, 4.20817, 1.85777, 2.28937, 9.37912, 6.18926, 8.55681, - 6.60963, 3.92066, 7.5521, 5.70463, 7.6313, 2.48866, 7.18352, 4.8413, 7.55702, 7.80702, - 4.5785, 9.3268, 2.83159, 1.07202, 9.33716, 3.6506, 2.50256, 1.21691, 5.06801, 8.27505, - 4.31539, 6.48286, 1.31363, 4.1912, 1.70668, 7.23867, 1.11441, 5.13591, 9.65186, 4.00767, - 5.24875, 1.94852, 5.52768, 8.97121, 5.8094, 3.53329, 4.19126, 9.06652, 3.1734, 1.21496, - 9.69154, 4.86971, 4.1166, 6.19361, 2.13874, 9.55039, 3.8225, 9.57548, 2.96554, 3.2383, - 8.77422, 3.11741, 8.3359, 5.89508, 2.72134, 6.29956, 1.43323, 1.14286, 1.4474, 4.59474, - 6.19214, 8.80766, 8.07546, 3.29232, 1.74029, 2.4198, 2.88544, 4.75644, 4.12921, 7.29896, - 7.27759, 1.67252, 1.32823, 8.1046, 9.10476, 1.04197, 3.37783, 5.2064, 4.23835, 3.16196, - 1.20852, 5.78501, 2.17175, 6.05313, 2.51048, 4.78967, 7.16219, 3.4651, 1.09, 2.9788, - 1.28761, 9.41385, 8.03883, 5.65835, 1.14816, 3.6892, 5.86648, 8.73895, 2.66603, 1.75192, - 1.39845, 4.99427, 1.17387, 1.60329, 8.30594, 6.72662, 7.95565, 7.35114, 3.1439, 10}, + 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, 8.6168, + 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, 8.0055, 7.44373, + 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, 7.03475, 6.33759, 7.04489, + 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, 6.61627, 6.94572, 3.68646, 5.01521, + 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 2.07541, 5.72319, 1.75261, 9.25175, 9.19404, 3.69037, + 6.2595, 6.09321, 6.52544, 9.60882, 3.34881, 3.07914, 5.80104, 9.54944, 5.43754, 5.8654, 7.88937, + 1.40811, 2.2597, 8.13163, 1.26821, 8.94813, 5.86709, 5.03182, 9.02922, 4.39826, 5.84582, 6.87069, + 4.25135, 6.13908, 6.74053, 2.13683, 7.21184, 6.82974, 4.18545, 7.8691, 4.20879, 7.77509, 8.93208, + 1.10502, 5.48298, 1.66413, 8.08256, 1.57661, 4.19779, 9.47653, 4.41823, 7.86628, 7.94436, 3.71224, + 7.95465, 2.37637, 6.20771, 1.08107, 7.38138, 5.23577, 7.88133, 5.20653, 3.42101, 8.48523, 5.96192, + 1.63073, 5.25228, 7.68488, 2.7276, 5.1788, 3.07327, 5.57423, 2.87711, 1.44374, 5.66976, 2.55051, + 4.56682, 1.96629, 5.58829, 1.91922, 3.59846, 3.08583, 9.70901, 3.50487, 3.1026, 1.82401, 6.1306, + 4.76134, 4.31059, 8.31695, 3.60784, 7.45652, 6.51653, 4.84219, 7.76686, 4.85031, 4.85544, 4.25714, + 2.38005, 9.43471, 9.24769, 8.03763, 6.54696, 1.32399, 6.88891, 2.16793, 3.64924, 4.24733, 3.47181, + 1.66572, 2.36923, 2.45457, 9.44841, 4.34021, 1.45016, 7.6686, 3.68812, 2.83922, 9.83581, 9.03719, + 7.83414, 6.86009, 1.35715, 8.32489, 7.86316, 5.09754, 5.78644, 1.98402, 2.31429, 5.5791, 2.94085, + 9.24799, 5.15937, 2.19041, 7.87817, 2.9146, 1.66833, 1.85877, 2.45985, 4.20817, 1.85777, 2.28937, + 9.37912, 6.18926, 8.55681, 6.60963, 3.92066, 7.5521, 5.70463, 7.6313, 2.48866, 7.18352, 4.8413, + 7.55702, 7.80702, 4.5785, 9.3268, 2.83159, 1.07202, 9.33716, 3.6506, 2.50256, 1.21691, 5.06801, + 8.27505, 4.31539, 6.48286, 1.31363, 4.1912, 1.70668, 7.23867, 1.11441, 5.13591, 9.65186, 4.00767, + 5.24875, 1.94852, 5.52768, 8.97121, 5.8094, 3.53329, 4.19126, 9.06652, 3.1734, 1.21496, 9.69154, + 4.86971, 4.1166, 6.19361, 2.13874, 9.55039, 3.8225, 9.57548, 2.96554, 3.2383, 8.77422, 3.11741, + 8.3359, 5.89508, 2.72134, 6.29956, 1.43323, 1.14286, 1.4474, 4.59474, 6.19214, 8.80766, 8.07546, + 3.29232, 1.74029, 2.4198, 2.88544, 4.75644, 4.12921, 7.29896, 7.27759, 1.67252, 1.32823, 8.1046, + 9.10476, 1.04197, 3.37783, 5.2064, 4.23835, 3.16196, 1.20852, 5.78501, 2.17175, 6.05313, 2.51048, + 4.78967, 7.16219, 3.4651, 1.09, 2.9788, 1.28761, 9.41385, 8.03883, 5.65835, 1.14816, 3.6892, + 5.86648, 8.73895, 2.66603, 1.75192, 1.39845, 4.99427, 1.17387, 1.60329, 8.30594, 6.72662, 7.95565, + 7.35114, 3.1439, 10}, std::vector{ - 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, - 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, - 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, - 7.03475, 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, - 6.61627, 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 2.07541, - 5.72319, 1.75261, 9.25175, 9.19404, 3.69037, 6.2595, 6.09321, 6.52544, 9.60882, 3.34881, - 3.07914, 5.80104, 9.54944, 5.43754, 5.8654, 7.88937, 1.40811, 2.2597, 8.13163, 1.26821, - 8.94813, 5.86709, 5.03182, 9.02922, 4.39826, 5.84582, 6.87069, 4.25135, 6.13908, 6.74053, - 2.13683, 7.21184, 6.82974, 4.18545, 7.8691, 4.20879, 7.77509, 8.93208, 1.10502, 5.48298, - 1.66413, 8.08256, 1.57661, 4.19779, 9.47653, 4.41823, 7.86628, 7.94436, 3.71224, 7.95465, - 2.37637, 6.20771, 1.08107, 7.38138, 5.23577, 7.88133, 5.20653, 3.42101, 8.48523, 5.96192, - 1.63073, 5.25228, 7.68488, 2.7276, 5.1788, 3.07327, 5.57423, 2.87711, 1.44374, 5.66976, - 2.55051, 4.56682, 1.96629, 5.58829, 1.91922, 3.59846, 3.08583, 9.70901, 3.50487, 3.1026, - 1.82401, 6.1306, 4.76134, 4.31059, 8.31695, 3.60784, 7.45652, 6.51653, 4.84219, 7.76686, - 4.85031, 4.85544, 4.25714, 2.38005, 9.43471, 9.24769, 8.03763, 6.54696, 1.32399, 6.88891, - 2.16793, 3.64924, 4.24733, 3.47181, 1.66572, 2.36923, 2.45457, 9.44841, 4.34021, 1.45016, - 7.6686, 3.68812, 2.83922, 9.83581, 9.03719, 7.83414, 6.86009, 1.35715, 8.32489, 7.86316, - 5.09754, 5.78644, 1.98402, 2.31429, 5.5791, 2.94085, 9.24799, 5.15937, 2.19041, 7.87817, - 2.9146, 1.66833, 1.85877, 2.45985, 4.20817, 1.85777, 2.28937, 9.37912, 6.18926, 8.55681, - 6.60963, 3.92066, 7.5521, 5.70463, 7.6313, 2.48866, 7.18352, 4.8413, 7.55702, 7.80702, - 4.5785, 9.3268, 2.83159, 1.07202, 9.33716, 3.6506, 2.50256, 1.21691, 5.06801, 8.27505, - 4.31539, 6.48286, 1.31363, 4.1912, 1.70668, 7.23867, 1.11441, 5.13591, 9.65186, 4.00767, - 5.24875, 1.94852, 5.52768, 8.97121, 5.8094, 3.53329, 4.19126, 9.06652, 3.1734, 1.21496, - 9.69154, 4.86971, 4.1166, 6.19361, 2.13874, 9.55039, 3.8225, 9.57548, 2.96554, 3.2383, - 8.77422, 3.11741, 8.3359, 5.89508, 2.72134, 6.29956, 1.43323, 1.14286, 1.4474, 4.59474, - 6.19214, 8.80766, 8.07546, 3.29232, 1.74029, 2.4198, 2.88544, 4.75644, 4.12921, 7.29896, - 7.27759, 1.67252, 1.32823, 8.1046, 9.10476, 1.04197, 3.37783, 5.2064, 4.23835, 3.16196, - 1.20852, 5.78501, 2.17175, 6.05313, 2.51048, 4.78967, 7.16219, 3.4651, 1.09, 2.9788, - 1.28761, 9.41385, 8.03883, 5.65835, 1.14816, 3.6892, 5.86648, 8.73895, 2.66603, 1.75192, - 1.39845, 4.99427, 1.17387, 1.60329, 8.30594, 6.72662, 7.95565, 7.35114, 3.1439, 10}, + 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, 8.6168, + 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, 8.0055, 7.44373, + 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, 7.03475, 6.33759, 7.04489, + 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, 6.61627, 6.94572, 3.68646, 5.01521, + 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 2.07541, 5.72319, 1.75261, 9.25175, 9.19404, 3.69037, + 6.2595, 6.09321, 6.52544, 9.60882, 3.34881, 3.07914, 5.80104, 9.54944, 5.43754, 5.8654, 7.88937, + 1.40811, 2.2597, 8.13163, 1.26821, 8.94813, 5.86709, 5.03182, 9.02922, 4.39826, 5.84582, 6.87069, + 4.25135, 6.13908, 6.74053, 2.13683, 7.21184, 6.82974, 4.18545, 7.8691, 4.20879, 7.77509, 8.93208, + 1.10502, 5.48298, 1.66413, 8.08256, 1.57661, 4.19779, 9.47653, 4.41823, 7.86628, 7.94436, 3.71224, + 7.95465, 2.37637, 6.20771, 1.08107, 7.38138, 5.23577, 7.88133, 5.20653, 3.42101, 8.48523, 5.96192, + 1.63073, 5.25228, 7.68488, 2.7276, 5.1788, 3.07327, 5.57423, 2.87711, 1.44374, 5.66976, 2.55051, + 4.56682, 1.96629, 5.58829, 1.91922, 3.59846, 3.08583, 9.70901, 3.50487, 3.1026, 1.82401, 6.1306, + 4.76134, 4.31059, 8.31695, 3.60784, 7.45652, 6.51653, 4.84219, 7.76686, 4.85031, 4.85544, 4.25714, + 2.38005, 9.43471, 9.24769, 8.03763, 6.54696, 1.32399, 6.88891, 2.16793, 3.64924, 4.24733, 3.47181, + 1.66572, 2.36923, 2.45457, 9.44841, 4.34021, 1.45016, 7.6686, 3.68812, 2.83922, 9.83581, 9.03719, + 7.83414, 6.86009, 1.35715, 8.32489, 7.86316, 5.09754, 5.78644, 1.98402, 2.31429, 5.5791, 2.94085, + 9.24799, 5.15937, 2.19041, 7.87817, 2.9146, 1.66833, 1.85877, 2.45985, 4.20817, 1.85777, 2.28937, + 9.37912, 6.18926, 8.55681, 6.60963, 3.92066, 7.5521, 5.70463, 7.6313, 2.48866, 7.18352, 4.8413, + 7.55702, 7.80702, 4.5785, 9.3268, 2.83159, 1.07202, 9.33716, 3.6506, 2.50256, 1.21691, 5.06801, + 8.27505, 4.31539, 6.48286, 1.31363, 4.1912, 1.70668, 7.23867, 1.11441, 5.13591, 9.65186, 4.00767, + 5.24875, 1.94852, 5.52768, 8.97121, 5.8094, 3.53329, 4.19126, 9.06652, 3.1734, 1.21496, 9.69154, + 4.86971, 4.1166, 6.19361, 2.13874, 9.55039, 3.8225, 9.57548, 2.96554, 3.2383, 8.77422, 3.11741, + 8.3359, 5.89508, 2.72134, 6.29956, 1.43323, 1.14286, 1.4474, 4.59474, 6.19214, 8.80766, 8.07546, + 3.29232, 1.74029, 2.4198, 2.88544, 4.75644, 4.12921, 7.29896, 7.27759, 1.67252, 1.32823, 8.1046, + 9.10476, 1.04197, 3.37783, 5.2064, 4.23835, 3.16196, 1.20852, 5.78501, 2.17175, 6.05313, 2.51048, + 4.78967, 7.16219, 3.4651, 1.09, 2.9788, 1.28761, 9.41385, 8.03883, 5.65835, 1.14816, 3.6892, + 5.86648, 8.73895, 2.66603, 1.75192, 1.39845, 4.99427, 1.17387, 1.60329, 8.30594, 6.72662, 7.95565, + 7.35114, 3.1439, 10}, + std::vector{1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, + 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, + 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 10}, + std::vector(5 * 10, 0), std::vector{ - 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, - 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, - 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 10}, - std::vector(5*10, 0), - std::vector{ - 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, 1, - 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, 1, - 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, 1, - 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, 1, - 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, 1, - 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, 1, - 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, 1, - 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, 1, - 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, 1, - 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, 8.6168, - 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, 8.6168, - 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, 8.6168, - 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, 8.6168, - 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, 8.6168, - 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, 8.6168, - 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, 8.6168, - 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, 8.6168, - 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, 8.6168, - 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, 8.6168, - 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, 8.0055, - 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, 8.0055, - 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, 8.0055, - 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, 8.0055, - 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, 8.0055, - 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, 8.0055, - 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, 8.0055, - 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, 8.0055, - 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, 8.0055, - 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, 8.0055, - 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, 7.03475, - 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, 7.03475, - 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, 7.03475, - 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, 7.03475, - 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, 7.03475, - 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, 7.03475, - 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, 7.03475, - 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, 7.03475, - 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, 7.03475, - 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, 7.03475, - 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, 6.61627, - 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 10, 6.61627, - 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 10, 6.61627, - 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 10, 6.61627, - 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 10, 6.61627, - 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 10, 6.61627, - 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 10, 6.61627, - 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 10, 6.61627, - 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 10, 6.61627, - 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 10, 6.61627, - 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 10}, - std::vector{ - 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, 8.6168, - 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, 8.0055, - 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, 7.03475, - 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, 6.61627, - 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 10}, - "augru_sequence_zero_attentional_gate"), + 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, 1, + 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, 1, 9.97466, + 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, 1, 9.97466, 9.39302, + 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, 1, 9.97466, 9.39302, 2.15312, + 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, 1, 9.97466, 9.39302, 2.15312, 9.99136, + 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, + 4.56923, 4.4912, 7.02771, 9.41985, 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, + 4.4912, 7.02771, 9.41985, 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, + 7.02771, 9.41985, 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, + 9.41985, 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, + 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, 8.6168, + 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, 8.6168, 3.81946, + 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, 8.6168, 3.81946, 5.72093, + 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, 8.6168, 3.81946, 5.72093, 4.99108, + 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, + 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, + 9.22566, 5.11484, 4.87629, 9.45215, 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, + 5.11484, 4.87629, 9.45215, 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, + 4.87629, 9.45215, 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, + 1.53319, 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, + 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, 8.0055, + 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, 8.0055, 7.44373, + 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, 8.0055, 7.44373, 8.22482, + 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, 8.0055, 7.44373, 8.22482, 1.83521, + 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, + 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, + 8.46232, 8.46643, 3.45745, 1.53319, 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, + 8.46643, 3.45745, 1.53319, 7.03475, 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, + 4.71285, 1.30754, 7.03475, 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, + 1.30754, 7.03475, 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, + 7.03475, 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, 7.03475, + 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, 7.03475, 6.33759, + 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, 7.03475, 6.33759, 7.04489, + 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, 7.03475, 6.33759, 7.04489, 4.70609, + 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, 7.03475, 6.33759, 7.04489, 4.70609, 2.77796, + 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, 7.03475, 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, + 2.27908, 8.04983, 4.71285, 1.30754, 6.61627, 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, + 1.86555, 9.13033, 10, 6.61627, 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, + 9.13033, 10, 6.61627, 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, + 10, 6.61627, 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 10, + 6.61627, 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 10, 6.61627, + 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 10, 6.61627, 6.94572, + 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 10, 6.61627, 6.94572, 3.68646, + 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 10, 6.61627, 6.94572, 3.68646, 5.01521, + 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 10, 6.61627, 6.94572, 3.68646, 5.01521, 2.99912, + 1.66028, 5.22315, 1.86555, 9.13033, 10}, + std::vector{1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, + 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, + 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, + 7.03475, 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, + 6.61627, 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 10}, + "augru_sequence_zero_attentional_gate"), AUGRUSequenceParams( - 5, 10, 10, 10, + 5, + 10, + 10, + 10, ET, std::vector{ - 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, - 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, - 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, - 7.03475, 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, - 6.61627, 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 2.07541, - 5.72319, 1.75261, 9.25175, 9.19404, 3.69037, 6.2595, 6.09321, 6.52544, 9.60882, 3.34881, - 3.07914, 5.80104, 9.54944, 5.43754, 5.8654, 7.88937, 1.40811, 2.2597, 8.13163, 1.26821, - 8.94813, 5.86709, 5.03182, 9.02922, 4.39826, 5.84582, 6.87069, 4.25135, 6.13908, 6.74053, - 2.13683, 7.21184, 6.82974, 4.18545, 7.8691, 4.20879, 7.77509, 8.93208, 1.10502, 5.48298, - 1.66413, 8.08256, 1.57661, 4.19779, 9.47653, 4.41823, 7.86628, 7.94436, 3.71224, 7.95465, - 2.37637, 6.20771, 1.08107, 7.38138, 5.23577, 7.88133, 5.20653, 3.42101, 8.48523, 5.96192, - 1.63073, 5.25228, 7.68488, 2.7276, 5.1788, 3.07327, 5.57423, 2.87711, 1.44374, 5.66976, - 2.55051, 4.56682, 1.96629, 5.58829, 1.91922, 3.59846, 3.08583, 9.70901, 3.50487, 3.1026, - 1.82401, 6.1306, 4.76134, 4.31059, 8.31695, 3.60784, 7.45652, 6.51653, 4.84219, 7.76686, - 4.85031, 4.85544, 4.25714, 2.38005, 9.43471, 9.24769, 8.03763, 6.54696, 1.32399, 6.88891, - 2.16793, 3.64924, 4.24733, 3.47181, 1.66572, 2.36923, 2.45457, 9.44841, 4.34021, 1.45016, - 7.6686, 3.68812, 2.83922, 9.83581, 9.03719, 7.83414, 6.86009, 1.35715, 8.32489, 7.86316, - 5.09754, 5.78644, 1.98402, 2.31429, 5.5791, 2.94085, 9.24799, 5.15937, 2.19041, 7.87817, - 2.9146, 1.66833, 1.85877, 2.45985, 4.20817, 1.85777, 2.28937, 9.37912, 6.18926, 8.55681, - 6.60963, 3.92066, 7.5521, 5.70463, 7.6313, 2.48866, 7.18352, 4.8413, 7.55702, 7.80702, - 4.5785, 9.3268, 2.83159, 1.07202, 9.33716, 3.6506, 2.50256, 1.21691, 5.06801, 8.27505, - 4.31539, 6.48286, 1.31363, 4.1912, 1.70668, 7.23867, 1.11441, 5.13591, 9.65186, 4.00767, - 5.24875, 1.94852, 5.52768, 8.97121, 5.8094, 3.53329, 4.19126, 9.06652, 3.1734, 1.21496, - 9.69154, 4.86971, 4.1166, 6.19361, 2.13874, 9.55039, 3.8225, 9.57548, 2.96554, 3.2383, - 8.77422, 3.11741, 8.3359, 5.89508, 2.72134, 6.29956, 1.43323, 1.14286, 1.4474, 4.59474, - 6.19214, 8.80766, 8.07546, 3.29232, 1.74029, 2.4198, 2.88544, 4.75644, 4.12921, 7.29896, - 7.27759, 1.67252, 1.32823, 8.1046, 9.10476, 1.04197, 3.37783, 5.2064, 4.23835, 3.16196, - 1.20852, 5.78501, 2.17175, 6.05313, 2.51048, 4.78967, 7.16219, 3.4651, 1.09, 2.9788, - 1.28761, 9.41385, 8.03883, 5.65835, 1.14816, 3.6892, 5.86648, 8.73895, 2.66603, 1.75192, - 1.39845, 4.99427, 1.17387, 1.60329, 8.30594, 6.72662, 7.95565, 7.35114, 3.1439, 1.39976, - 3.53095, 8.78581, 1.65811, 6.94299, 2.68641, 5.70058, 9.13491, 5.27637, 8.6232, 8.54902, - 2.25352, 5.86274, 5.20377, 2.96815, 4.96745, 5.3225, 3.99956, 1.08021, 5.54918, 7.05833, - 1.49913, 2.41822, 6.44593, 3.87301, 9.01465, 8.11336, 2.95749, 2.80188, 7.12396, 2.40595, - 5.59325, 9.89258, 2.30223, 1.4347, 9.09158, 7.43797, 3.79295, 4.53646, 1.72705, 4.16909, - 1.00912, 6.62167, 2.80244, 6.626, 3.89307, 1.42586, 7.51028, 7.83327, 4.65674, 7.33902, - 6.26823, 9.72608, 3.73491, 3.8238, 3.03815, 7.05101, 8.0103, 5.61396, 6.53738, 1.41095, - 5.0149, 9.71211, 4.23604, 5.98629, 4.70219, 9.69442, 2.82752, 9.93544, 6.9328, 8.2817, - 5.12336, 8.98577, 5.80541, 6.19552, 9.25748, 3.82732, 7.53525, 8.24712, 5.32057, 5.38817, - 8.57269, 5.99975, 3.42893, 5.38068, 3.48261, 3.02851, 6.82079, 9.2902, 2.80427, 8.91868, - 5.19227, 7.52482, 3.72584, 5.40107, 2.83307, 1.79755, 2.49121, 5.52697, 8.08823, 9.13242, - 2.97572, 7.64318, 3.32023, 6.07788, 2.19187, 4.34879, 1.7457, 5.55154, 7.24966, 5.1128, - 4.25147, 8.34407, 1.4123, 4.49045, 5.12671, 7.62159, 9.18673, 3.49665, 8.35992, 6.90684, - 1.10152, 7.61818, 6.43145, 7.12017, 6.25564, 6.16169, 4.24916, 9.6283, 9.88249, 4.48422, - 8.52562, 9.83928, 6.26818, 7.03839, 1.77631, 9.92305, 8.0155, 9.94928, 6.88321, 1.33685, - 7.4718, 7.19305, 6.47932, 1.9559, 3.52616, 7.98593, 9.0115, 5.59539, 7.44137, 1.70001, - 6.53774, 8.54023, 7.26405, 5.99553, 8.75071, 7.70789, 3.38094, 9.99792, 6.16359, 6.75153, - 5.4073, 9.00437, 8.87059, 8.63011, 6.82951, 6.27021, 3.53425, 9.92489, 8.19695, 5.51473, - 7.95084, 2.11852, 9.28916, 1.40353, 3.05744, 8.58238, 3.75014, 5.35889, 6.85048, 2.29549, - 3.75218, 8.98228, 8.98158, 5.63695, 3.40379, 8.92309, 5.48185, 4.00095, 9.05227, 2.84035, - 8.37644, 8.54954, 5.70516, 2.45744, 9.54079, 1.53504, 8.9785, 6.1691, 4.40962, 10}, - std::vector{ - 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, - 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, - 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, - 7.03475, 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, - 6.61627, 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 10}, + 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, 8.6168, + 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, 8.0055, 7.44373, + 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, 7.03475, 6.33759, 7.04489, + 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, 6.61627, 6.94572, 3.68646, 5.01521, + 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 2.07541, 5.72319, 1.75261, 9.25175, 9.19404, 3.69037, + 6.2595, 6.09321, 6.52544, 9.60882, 3.34881, 3.07914, 5.80104, 9.54944, 5.43754, 5.8654, 7.88937, + 1.40811, 2.2597, 8.13163, 1.26821, 8.94813, 5.86709, 5.03182, 9.02922, 4.39826, 5.84582, 6.87069, + 4.25135, 6.13908, 6.74053, 2.13683, 7.21184, 6.82974, 4.18545, 7.8691, 4.20879, 7.77509, 8.93208, + 1.10502, 5.48298, 1.66413, 8.08256, 1.57661, 4.19779, 9.47653, 4.41823, 7.86628, 7.94436, 3.71224, + 7.95465, 2.37637, 6.20771, 1.08107, 7.38138, 5.23577, 7.88133, 5.20653, 3.42101, 8.48523, 5.96192, + 1.63073, 5.25228, 7.68488, 2.7276, 5.1788, 3.07327, 5.57423, 2.87711, 1.44374, 5.66976, 2.55051, + 4.56682, 1.96629, 5.58829, 1.91922, 3.59846, 3.08583, 9.70901, 3.50487, 3.1026, 1.82401, 6.1306, + 4.76134, 4.31059, 8.31695, 3.60784, 7.45652, 6.51653, 4.84219, 7.76686, 4.85031, 4.85544, 4.25714, + 2.38005, 9.43471, 9.24769, 8.03763, 6.54696, 1.32399, 6.88891, 2.16793, 3.64924, 4.24733, 3.47181, + 1.66572, 2.36923, 2.45457, 9.44841, 4.34021, 1.45016, 7.6686, 3.68812, 2.83922, 9.83581, 9.03719, + 7.83414, 6.86009, 1.35715, 8.32489, 7.86316, 5.09754, 5.78644, 1.98402, 2.31429, 5.5791, 2.94085, + 9.24799, 5.15937, 2.19041, 7.87817, 2.9146, 1.66833, 1.85877, 2.45985, 4.20817, 1.85777, 2.28937, + 9.37912, 6.18926, 8.55681, 6.60963, 3.92066, 7.5521, 5.70463, 7.6313, 2.48866, 7.18352, 4.8413, + 7.55702, 7.80702, 4.5785, 9.3268, 2.83159, 1.07202, 9.33716, 3.6506, 2.50256, 1.21691, 5.06801, + 8.27505, 4.31539, 6.48286, 1.31363, 4.1912, 1.70668, 7.23867, 1.11441, 5.13591, 9.65186, 4.00767, + 5.24875, 1.94852, 5.52768, 8.97121, 5.8094, 3.53329, 4.19126, 9.06652, 3.1734, 1.21496, 9.69154, + 4.86971, 4.1166, 6.19361, 2.13874, 9.55039, 3.8225, 9.57548, 2.96554, 3.2383, 8.77422, 3.11741, + 8.3359, 5.89508, 2.72134, 6.29956, 1.43323, 1.14286, 1.4474, 4.59474, 6.19214, 8.80766, 8.07546, + 3.29232, 1.74029, 2.4198, 2.88544, 4.75644, 4.12921, 7.29896, 7.27759, 1.67252, 1.32823, 8.1046, + 9.10476, 1.04197, 3.37783, 5.2064, 4.23835, 3.16196, 1.20852, 5.78501, 2.17175, 6.05313, 2.51048, + 4.78967, 7.16219, 3.4651, 1.09, 2.9788, 1.28761, 9.41385, 8.03883, 5.65835, 1.14816, 3.6892, + 5.86648, 8.73895, 2.66603, 1.75192, 1.39845, 4.99427, 1.17387, 1.60329, 8.30594, 6.72662, 7.95565, + 7.35114, 3.1439, 1.39976, 3.53095, 8.78581, 1.65811, 6.94299, 2.68641, 5.70058, 9.13491, 5.27637, + 8.6232, 8.54902, 2.25352, 5.86274, 5.20377, 2.96815, 4.96745, 5.3225, 3.99956, 1.08021, 5.54918, + 7.05833, 1.49913, 2.41822, 6.44593, 3.87301, 9.01465, 8.11336, 2.95749, 2.80188, 7.12396, 2.40595, + 5.59325, 9.89258, 2.30223, 1.4347, 9.09158, 7.43797, 3.79295, 4.53646, 1.72705, 4.16909, 1.00912, + 6.62167, 2.80244, 6.626, 3.89307, 1.42586, 7.51028, 7.83327, 4.65674, 7.33902, 6.26823, 9.72608, + 3.73491, 3.8238, 3.03815, 7.05101, 8.0103, 5.61396, 6.53738, 1.41095, 5.0149, 9.71211, 4.23604, + 5.98629, 4.70219, 9.69442, 2.82752, 9.93544, 6.9328, 8.2817, 5.12336, 8.98577, 5.80541, 6.19552, + 9.25748, 3.82732, 7.53525, 8.24712, 5.32057, 5.38817, 8.57269, 5.99975, 3.42893, 5.38068, 3.48261, + 3.02851, 6.82079, 9.2902, 2.80427, 8.91868, 5.19227, 7.52482, 3.72584, 5.40107, 2.83307, 1.79755, + 2.49121, 5.52697, 8.08823, 9.13242, 2.97572, 7.64318, 3.32023, 6.07788, 2.19187, 4.34879, 1.7457, + 5.55154, 7.24966, 5.1128, 4.25147, 8.34407, 1.4123, 4.49045, 5.12671, 7.62159, 9.18673, 3.49665, + 8.35992, 6.90684, 1.10152, 7.61818, 6.43145, 7.12017, 6.25564, 6.16169, 4.24916, 9.6283, 9.88249, + 4.48422, 8.52562, 9.83928, 6.26818, 7.03839, 1.77631, 9.92305, 8.0155, 9.94928, 6.88321, 1.33685, + 7.4718, 7.19305, 6.47932, 1.9559, 3.52616, 7.98593, 9.0115, 5.59539, 7.44137, 1.70001, 6.53774, + 8.54023, 7.26405, 5.99553, 8.75071, 7.70789, 3.38094, 9.99792, 6.16359, 6.75153, 5.4073, 9.00437, + 8.87059, 8.63011, 6.82951, 6.27021, 3.53425, 9.92489, 8.19695, 5.51473, 7.95084, 2.11852, 9.28916, + 1.40353, 3.05744, 8.58238, 3.75014, 5.35889, 6.85048, 2.29549, 3.75218, 8.98228, 8.98158, 5.63695, + 3.40379, 8.92309, 5.48185, 4.00095, 9.05227, 2.84035, 8.37644, 8.54954, 5.70516, 2.45744, 9.54079, + 1.53504, 8.9785, 6.1691, 4.40962, 10}, + std::vector{1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, + 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, + 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, + 7.03475, 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, + 6.61627, 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 10}, std::vector{10, 10, 10, 10, 10}, std::vector{ - 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, - 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, - 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, - 7.03475, 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, - 6.61627, 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 2.07541, - 5.72319, 1.75261, 9.25175, 9.19404, 3.69037, 6.2595, 6.09321, 6.52544, 9.60882, 3.34881, - 3.07914, 5.80104, 9.54944, 5.43754, 5.8654, 7.88937, 1.40811, 2.2597, 8.13163, 1.26821, - 8.94813, 5.86709, 5.03182, 9.02922, 4.39826, 5.84582, 6.87069, 4.25135, 6.13908, 6.74053, - 2.13683, 7.21184, 6.82974, 4.18545, 7.8691, 4.20879, 7.77509, 8.93208, 1.10502, 5.48298, - 1.66413, 8.08256, 1.57661, 4.19779, 9.47653, 4.41823, 7.86628, 7.94436, 3.71224, 7.95465, - 2.37637, 6.20771, 1.08107, 7.38138, 5.23577, 7.88133, 5.20653, 3.42101, 8.48523, 5.96192, - 1.63073, 5.25228, 7.68488, 2.7276, 5.1788, 3.07327, 5.57423, 2.87711, 1.44374, 5.66976, - 2.55051, 4.56682, 1.96629, 5.58829, 1.91922, 3.59846, 3.08583, 9.70901, 3.50487, 3.1026, - 1.82401, 6.1306, 4.76134, 4.31059, 8.31695, 3.60784, 7.45652, 6.51653, 4.84219, 7.76686, - 4.85031, 4.85544, 4.25714, 2.38005, 9.43471, 9.24769, 8.03763, 6.54696, 1.32399, 6.88891, - 2.16793, 3.64924, 4.24733, 3.47181, 1.66572, 2.36923, 2.45457, 9.44841, 4.34021, 1.45016, - 7.6686, 3.68812, 2.83922, 9.83581, 9.03719, 7.83414, 6.86009, 1.35715, 8.32489, 7.86316, - 5.09754, 5.78644, 1.98402, 2.31429, 5.5791, 2.94085, 9.24799, 5.15937, 2.19041, 7.87817, - 2.9146, 1.66833, 1.85877, 2.45985, 4.20817, 1.85777, 2.28937, 9.37912, 6.18926, 8.55681, - 6.60963, 3.92066, 7.5521, 5.70463, 7.6313, 2.48866, 7.18352, 4.8413, 7.55702, 7.80702, - 4.5785, 9.3268, 2.83159, 1.07202, 9.33716, 3.6506, 2.50256, 1.21691, 5.06801, 8.27505, - 4.31539, 6.48286, 1.31363, 4.1912, 1.70668, 7.23867, 1.11441, 5.13591, 9.65186, 4.00767, - 5.24875, 1.94852, 5.52768, 8.97121, 5.8094, 3.53329, 4.19126, 9.06652, 3.1734, 1.21496, - 9.69154, 4.86971, 4.1166, 6.19361, 2.13874, 9.55039, 3.8225, 9.57548, 2.96554, 3.2383, - 8.77422, 3.11741, 8.3359, 5.89508, 2.72134, 6.29956, 1.43323, 1.14286, 1.4474, 4.59474, - 6.19214, 8.80766, 8.07546, 3.29232, 1.74029, 2.4198, 2.88544, 4.75644, 4.12921, 7.29896, - 7.27759, 1.67252, 1.32823, 8.1046, 9.10476, 1.04197, 3.37783, 5.2064, 4.23835, 3.16196, - 1.20852, 5.78501, 2.17175, 6.05313, 2.51048, 4.78967, 7.16219, 3.4651, 1.09, 2.9788, - 1.28761, 9.41385, 8.03883, 5.65835, 1.14816, 3.6892, 5.86648, 8.73895, 2.66603, 1.75192, - 1.39845, 4.99427, 1.17387, 1.60329, 8.30594, 6.72662, 7.95565, 7.35114, 3.1439, 10}, + 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, 8.6168, + 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, 8.0055, 7.44373, + 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, 7.03475, 6.33759, 7.04489, + 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, 6.61627, 6.94572, 3.68646, 5.01521, + 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 2.07541, 5.72319, 1.75261, 9.25175, 9.19404, 3.69037, + 6.2595, 6.09321, 6.52544, 9.60882, 3.34881, 3.07914, 5.80104, 9.54944, 5.43754, 5.8654, 7.88937, + 1.40811, 2.2597, 8.13163, 1.26821, 8.94813, 5.86709, 5.03182, 9.02922, 4.39826, 5.84582, 6.87069, + 4.25135, 6.13908, 6.74053, 2.13683, 7.21184, 6.82974, 4.18545, 7.8691, 4.20879, 7.77509, 8.93208, + 1.10502, 5.48298, 1.66413, 8.08256, 1.57661, 4.19779, 9.47653, 4.41823, 7.86628, 7.94436, 3.71224, + 7.95465, 2.37637, 6.20771, 1.08107, 7.38138, 5.23577, 7.88133, 5.20653, 3.42101, 8.48523, 5.96192, + 1.63073, 5.25228, 7.68488, 2.7276, 5.1788, 3.07327, 5.57423, 2.87711, 1.44374, 5.66976, 2.55051, + 4.56682, 1.96629, 5.58829, 1.91922, 3.59846, 3.08583, 9.70901, 3.50487, 3.1026, 1.82401, 6.1306, + 4.76134, 4.31059, 8.31695, 3.60784, 7.45652, 6.51653, 4.84219, 7.76686, 4.85031, 4.85544, 4.25714, + 2.38005, 9.43471, 9.24769, 8.03763, 6.54696, 1.32399, 6.88891, 2.16793, 3.64924, 4.24733, 3.47181, + 1.66572, 2.36923, 2.45457, 9.44841, 4.34021, 1.45016, 7.6686, 3.68812, 2.83922, 9.83581, 9.03719, + 7.83414, 6.86009, 1.35715, 8.32489, 7.86316, 5.09754, 5.78644, 1.98402, 2.31429, 5.5791, 2.94085, + 9.24799, 5.15937, 2.19041, 7.87817, 2.9146, 1.66833, 1.85877, 2.45985, 4.20817, 1.85777, 2.28937, + 9.37912, 6.18926, 8.55681, 6.60963, 3.92066, 7.5521, 5.70463, 7.6313, 2.48866, 7.18352, 4.8413, + 7.55702, 7.80702, 4.5785, 9.3268, 2.83159, 1.07202, 9.33716, 3.6506, 2.50256, 1.21691, 5.06801, + 8.27505, 4.31539, 6.48286, 1.31363, 4.1912, 1.70668, 7.23867, 1.11441, 5.13591, 9.65186, 4.00767, + 5.24875, 1.94852, 5.52768, 8.97121, 5.8094, 3.53329, 4.19126, 9.06652, 3.1734, 1.21496, 9.69154, + 4.86971, 4.1166, 6.19361, 2.13874, 9.55039, 3.8225, 9.57548, 2.96554, 3.2383, 8.77422, 3.11741, + 8.3359, 5.89508, 2.72134, 6.29956, 1.43323, 1.14286, 1.4474, 4.59474, 6.19214, 8.80766, 8.07546, + 3.29232, 1.74029, 2.4198, 2.88544, 4.75644, 4.12921, 7.29896, 7.27759, 1.67252, 1.32823, 8.1046, + 9.10476, 1.04197, 3.37783, 5.2064, 4.23835, 3.16196, 1.20852, 5.78501, 2.17175, 6.05313, 2.51048, + 4.78967, 7.16219, 3.4651, 1.09, 2.9788, 1.28761, 9.41385, 8.03883, 5.65835, 1.14816, 3.6892, + 5.86648, 8.73895, 2.66603, 1.75192, 1.39845, 4.99427, 1.17387, 1.60329, 8.30594, 6.72662, 7.95565, + 7.35114, 3.1439, 10}, std::vector{ - 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, - 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, - 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, - 7.03475, 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, - 6.61627, 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 2.07541, - 5.72319, 1.75261, 9.25175, 9.19404, 3.69037, 6.2595, 6.09321, 6.52544, 9.60882, 3.34881, - 3.07914, 5.80104, 9.54944, 5.43754, 5.8654, 7.88937, 1.40811, 2.2597, 8.13163, 1.26821, - 8.94813, 5.86709, 5.03182, 9.02922, 4.39826, 5.84582, 6.87069, 4.25135, 6.13908, 6.74053, - 2.13683, 7.21184, 6.82974, 4.18545, 7.8691, 4.20879, 7.77509, 8.93208, 1.10502, 5.48298, - 1.66413, 8.08256, 1.57661, 4.19779, 9.47653, 4.41823, 7.86628, 7.94436, 3.71224, 7.95465, - 2.37637, 6.20771, 1.08107, 7.38138, 5.23577, 7.88133, 5.20653, 3.42101, 8.48523, 5.96192, - 1.63073, 5.25228, 7.68488, 2.7276, 5.1788, 3.07327, 5.57423, 2.87711, 1.44374, 5.66976, - 2.55051, 4.56682, 1.96629, 5.58829, 1.91922, 3.59846, 3.08583, 9.70901, 3.50487, 3.1026, - 1.82401, 6.1306, 4.76134, 4.31059, 8.31695, 3.60784, 7.45652, 6.51653, 4.84219, 7.76686, - 4.85031, 4.85544, 4.25714, 2.38005, 9.43471, 9.24769, 8.03763, 6.54696, 1.32399, 6.88891, - 2.16793, 3.64924, 4.24733, 3.47181, 1.66572, 2.36923, 2.45457, 9.44841, 4.34021, 1.45016, - 7.6686, 3.68812, 2.83922, 9.83581, 9.03719, 7.83414, 6.86009, 1.35715, 8.32489, 7.86316, - 5.09754, 5.78644, 1.98402, 2.31429, 5.5791, 2.94085, 9.24799, 5.15937, 2.19041, 7.87817, - 2.9146, 1.66833, 1.85877, 2.45985, 4.20817, 1.85777, 2.28937, 9.37912, 6.18926, 8.55681, - 6.60963, 3.92066, 7.5521, 5.70463, 7.6313, 2.48866, 7.18352, 4.8413, 7.55702, 7.80702, - 4.5785, 9.3268, 2.83159, 1.07202, 9.33716, 3.6506, 2.50256, 1.21691, 5.06801, 8.27505, - 4.31539, 6.48286, 1.31363, 4.1912, 1.70668, 7.23867, 1.11441, 5.13591, 9.65186, 4.00767, - 5.24875, 1.94852, 5.52768, 8.97121, 5.8094, 3.53329, 4.19126, 9.06652, 3.1734, 1.21496, - 9.69154, 4.86971, 4.1166, 6.19361, 2.13874, 9.55039, 3.8225, 9.57548, 2.96554, 3.2383, - 8.77422, 3.11741, 8.3359, 5.89508, 2.72134, 6.29956, 1.43323, 1.14286, 1.4474, 4.59474, - 6.19214, 8.80766, 8.07546, 3.29232, 1.74029, 2.4198, 2.88544, 4.75644, 4.12921, 7.29896, - 7.27759, 1.67252, 1.32823, 8.1046, 9.10476, 1.04197, 3.37783, 5.2064, 4.23835, 3.16196, - 1.20852, 5.78501, 2.17175, 6.05313, 2.51048, 4.78967, 7.16219, 3.4651, 1.09, 2.9788, - 1.28761, 9.41385, 8.03883, 5.65835, 1.14816, 3.6892, 5.86648, 8.73895, 2.66603, 1.75192, - 1.39845, 4.99427, 1.17387, 1.60329, 8.30594, 6.72662, 7.95565, 7.35114, 3.1439, 10}, + 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, 8.6168, + 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, 8.0055, 7.44373, + 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, 7.03475, 6.33759, 7.04489, + 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, 6.61627, 6.94572, 3.68646, 5.01521, + 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 2.07541, 5.72319, 1.75261, 9.25175, 9.19404, 3.69037, + 6.2595, 6.09321, 6.52544, 9.60882, 3.34881, 3.07914, 5.80104, 9.54944, 5.43754, 5.8654, 7.88937, + 1.40811, 2.2597, 8.13163, 1.26821, 8.94813, 5.86709, 5.03182, 9.02922, 4.39826, 5.84582, 6.87069, + 4.25135, 6.13908, 6.74053, 2.13683, 7.21184, 6.82974, 4.18545, 7.8691, 4.20879, 7.77509, 8.93208, + 1.10502, 5.48298, 1.66413, 8.08256, 1.57661, 4.19779, 9.47653, 4.41823, 7.86628, 7.94436, 3.71224, + 7.95465, 2.37637, 6.20771, 1.08107, 7.38138, 5.23577, 7.88133, 5.20653, 3.42101, 8.48523, 5.96192, + 1.63073, 5.25228, 7.68488, 2.7276, 5.1788, 3.07327, 5.57423, 2.87711, 1.44374, 5.66976, 2.55051, + 4.56682, 1.96629, 5.58829, 1.91922, 3.59846, 3.08583, 9.70901, 3.50487, 3.1026, 1.82401, 6.1306, + 4.76134, 4.31059, 8.31695, 3.60784, 7.45652, 6.51653, 4.84219, 7.76686, 4.85031, 4.85544, 4.25714, + 2.38005, 9.43471, 9.24769, 8.03763, 6.54696, 1.32399, 6.88891, 2.16793, 3.64924, 4.24733, 3.47181, + 1.66572, 2.36923, 2.45457, 9.44841, 4.34021, 1.45016, 7.6686, 3.68812, 2.83922, 9.83581, 9.03719, + 7.83414, 6.86009, 1.35715, 8.32489, 7.86316, 5.09754, 5.78644, 1.98402, 2.31429, 5.5791, 2.94085, + 9.24799, 5.15937, 2.19041, 7.87817, 2.9146, 1.66833, 1.85877, 2.45985, 4.20817, 1.85777, 2.28937, + 9.37912, 6.18926, 8.55681, 6.60963, 3.92066, 7.5521, 5.70463, 7.6313, 2.48866, 7.18352, 4.8413, + 7.55702, 7.80702, 4.5785, 9.3268, 2.83159, 1.07202, 9.33716, 3.6506, 2.50256, 1.21691, 5.06801, + 8.27505, 4.31539, 6.48286, 1.31363, 4.1912, 1.70668, 7.23867, 1.11441, 5.13591, 9.65186, 4.00767, + 5.24875, 1.94852, 5.52768, 8.97121, 5.8094, 3.53329, 4.19126, 9.06652, 3.1734, 1.21496, 9.69154, + 4.86971, 4.1166, 6.19361, 2.13874, 9.55039, 3.8225, 9.57548, 2.96554, 3.2383, 8.77422, 3.11741, + 8.3359, 5.89508, 2.72134, 6.29956, 1.43323, 1.14286, 1.4474, 4.59474, 6.19214, 8.80766, 8.07546, + 3.29232, 1.74029, 2.4198, 2.88544, 4.75644, 4.12921, 7.29896, 7.27759, 1.67252, 1.32823, 8.1046, + 9.10476, 1.04197, 3.37783, 5.2064, 4.23835, 3.16196, 1.20852, 5.78501, 2.17175, 6.05313, 2.51048, + 4.78967, 7.16219, 3.4651, 1.09, 2.9788, 1.28761, 9.41385, 8.03883, 5.65835, 1.14816, 3.6892, + 5.86648, 8.73895, 2.66603, 1.75192, 1.39845, 4.99427, 1.17387, 1.60329, 8.30594, 6.72662, 7.95565, + 7.35114, 3.1439, 10}, + std::vector{1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, + 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, + 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 10}, + std::vector{0.034518f, 0.673286f, 0.406714f, 0.252863f, 0.403579f, 0.985528f, 0.195026f, 0.102555f, + 0.862911f, 0.698157f, 0.159086f, 0.980120f, 0.821253f, 0.041956f, 0.297002f, 0.154800f, + 0.107107f, 0.457263f, 0.512179f, 0.372368f, 0.672125f, 0.078459f, 0.593353f, 0.800342f, + 0.245871f, 0.675492f, 0.799024f, 0.432696f, 0.095204f, 0.187363f, 0.715765f, 0.981477f, + 0.806237f, 0.544187f, 0.450795f, 0.717673f, 0.426730f, 0.601688f, 0.765923f, 0.675334f, + 0.341641f, 0.958286f, 0.137889f, 0.239074f, 0.015245f, 0.148769f, 0.793591f, 0.210904f, + 0.973056f, 0.646550f}, std::vector{ - 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, - 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, - 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 10}, - std::vector - {0.034518f, 0.673286f, 0.406714f, 0.252863f, 0.403579f, 0.985528f, - 0.195026f, 0.102555f, 0.862911f, 0.698157f, 0.159086f, 0.980120f, - 0.821253f, 0.041956f, 0.297002f, 0.154800f, 0.107107f, 0.457263f, - 0.512179f, 0.372368f, 0.672125f, 0.078459f, 0.593353f, 0.800342f, - 0.245871f, 0.675492f, 0.799024f, 0.432696f, 0.095204f, 0.187363f, - 0.715765f, 0.981477f, 0.806237f, 0.544187f, 0.450795f, 0.717673f, - 0.426730f, 0.601688f, 0.765923f, 0.675334f, 0.341641f, 0.958286f, - 0.137889f, 0.239074f, 0.015245f, 0.148769f, 0.793591f, 0.210904f, - 0.973056f, 0.646550f}, - std::vector{ - 1, 9.66487, 9.10331, 2.11332, 9.681, 3.05146, 4.44603, 4.37069, 6.81965, 9.12921, 1, - 3.83094, 3.64746, 1.36374, 3.8362, 1.67024, 2.12587, 2.10125, 2.90136, 3.65593, 1, - 2.67955, 2.5707, 1.2158, 2.68268, 1.39764, 1.66796, 1.65336, 2.12805, 2.57572, 1, - 2.25486, 2.17353, 1.16123, 2.25719, 1.29709, 1.49906, 1.48815, 1.84281, 2.17728, 1, - 1.74842, 1.69992, 1.09616, 1.74982, 1.17719, 1.29765, 1.29114, 1.50267, 1.70216, 1, - 1.01083, 1.01013, 1.00139, 1.01085, 1.00256, 1.00431, 1.00421, 1.00727, 1.01016, 1, - 1.00872, 1.00815, 1.00112, 1.00874, 1.00206, 1.00347, 1.00339, 1.00586, 1.00818, 1, - 1.00782, 1.00732, 1.00101, 1.00784, 1.00185, 1.00311, 1.00304, 1.00526, 1.00734, 1, - 1.00107, 1.001, 1.00014, 1.00107, 1.00025, 1.00043, 1.00042, 1.00072, 1.00101, 1, - 1.00032, 1.0003, 1.00004, 1.00032, 1.00008, 1.00013, 1.00013, 1.00022, 1.0003, 7.40507, - 3.37092, 4.9699, 4.35616, 2.7375, 5.04457, 7.91707, 4.46023, 4.25963, 8.10753, 1.12733, - 1.04713, 1.07892, 1.06672, 1.03454, 1.08041, 1.13751, 1.06879, 1.0648, 1.1413, 1.02276, - 1.00842, 1.01411, 1.01193, 1.00617, 1.01437, 1.02458, 1.0123, 1.01158, 1.02526, 1.02181, - 1.00807, 1.01352, 1.01143, 1.00592, 1.01377, 1.02355, 1.01178, 1.0111, 1.0242, 1.01533, - 1.00567, 1.0095, 1.00803, 1.00416, 1.00968, 1.01655, 1.00828, 1.0078, 1.01701, 1.01296, - 1.0048, 1.00803, 1.00679, 1.00351, 1.00818, 1.01399, 1.007, 1.00659, 1.01438, 1.01157, - 1.00428, 1.00717, 1.00606, 1.00314, 1.00731, 1.01249, 1.00625, 1.00589, 1.01284, 1.00628, - 1.00232, 1.00389, 1.00329, 1.0017, 1.00396, 1.00678, 1.00339, 1.0032, 1.00697, 1.00306, - 1.00113, 1.0019, 1.0016, 1.00083, 1.00193, 1.00331, 1.00165, 1.00156, 1.0034, 1.00192, - 1.00071, 1.00119, 1.00101, 1.00052, 1.00121, 1.00208, 1.00104, 1.00098, 1.00213, 3.29693, - 3.11274, 3.36884, 1.27384, 2.529, 3.55257, 3.44671, 3.44806, 1.80574, 1.17482, 3.11671, - 2.94697, 3.18298, 1.25236, 2.40904, 3.35229, 3.25474, 3.25598, 1.74252, 1.1611, 1.86076, - 1.79173, 1.8877, 1.10262, 1.57298, 1.95655, 1.91688, 1.91739, 1.30194, 1.06551, 1.17186, - 1.15808, 1.17724, 1.02049, 1.1144, 1.19098, 1.18306, 1.18316, 1.06029, 1.01308, 1.1296, - 1.11921, 1.13366, 1.01545, 1.08627, 1.14403, 1.13805, 1.13813, 1.04546, 1.00986, 1.04206, - 1.03868, 1.04337, 1.00501, 1.028, 1.04674, 1.0448, 1.04482, 1.01475, 1.0032, 1.00845, - 1.00777, 1.00872, 1.00101, 1.00563, 1.00939, 1.009, 1.00901, 1.00296, 1.00064, 1.0048, - 1.00441, 1.00495, 1.00057, 1.00319, 1.00533, 1.00511, 1.00511, 1.00168, 1.00037, 1.00434, - 1.00399, 1.00447, 1.00052, 1.00289, 1.00482, 1.00462, 1.00462, 1.00152, 1.00033, 1.00353, - 1.00324, 1.00364, 1.00042, 1.00235, 1.00392, 1.00376, 1.00376, 1.00124, 1.00027, 2.71529, - 2.51713, 2.71817, 2.0534, 1.50536, 1.74091, 1.36356, 3.00381, 2.05532, 1.08741, 1.03177, - 1.0281, 1.03183, 1.01951, 1.00936, 1.01372, 1.00673, 1.03712, 1.01955, 1.00162, 1.00616, - 1.00545, 1.00617, 1.00378, 1.00181, 1.00266, 1.0013, 1.00719, 1.00379, 1.00031, 1.00281, - 1.00248, 1.00281, 1.00172, 1.00083, 1.00121, 1.00059, 1.00328, 1.00173, 1.00014, 1.00154, - 1.00136, 1.00154, 1.00095, 1.00045, 1.00067, 1.00033, 1.0018, 1.00095, 1.00008, 1.00044, - 1.00038, 1.00044, 1.00027, 1.00013, 1.00019, 1.00009, 1.00051, 1.00027, 1.00002, 1.00025, - 1.00022, 1.00025, 1.00015, 1.00007, 1.00011, 1.00005, 1.00029, 1.00015, 1.00001, 1.0001, - 1.00009, 1.0001, 1.00006, 1.00003, 1.00004, 1.00002, 1.00012, 1.00006, 1.00001, 1.00002, - 1.00002, 1.00002, 1.00001, 1.00001, 1.00001, 1, 1.00003, 1.00001, 1, 1.00001, - 1.00001, 1.00001, 1, 1, 1, 1, 1.00001, 1, 1, 4.69752, - 4.91442, 2.76866, 3.64345, 2.31614, 1.4347, 3.78035, 1.56984, 6.35268, 6.92523, 1.15424, - 1.16329, 1.07378, 1.11027, 1.0549, 1.01813, 1.11598, 1.02377, 1.22328, 1.24717, 1.13297, - 1.14077, 1.0636, 1.09506, 1.04733, 1.01563, 1.09999, 1.02049, 1.19249, 1.21308, 1.10118, - 1.10712, 1.0484, 1.07234, 1.03602, 1.0119, 1.07608, 1.01559, 1.14647, 1.16214, 1.09964, - 1.10548, 1.04766, 1.07123, 1.03547, 1.01171, 1.07492, 1.01536, 1.14424, 1.15967, 1.08482, - 1.08979, 1.04057, 1.06064, 1.03019, 1.00997, 1.06378, 1.01307, 1.12278, 1.13592, 1.01751, - 1.01853, 1.00837, 1.01252, 1.00623, 1.00206, 1.01316, 1.0027, 1.02534, 1.02805, 1.01381, - 1.01462, 1.00661, 1.00988, 1.00492, 1.00162, 1.01039, 1.00213, 1.02, 1.02214, 1.00037, - 1.00039, 1.00018, 1.00027, 1.00013, 1.00004, 1.00028, 1.00006, 1.00054, 1.0006, 1.00013, - 1.00014, 1.00006, 1.00009, 1.00005, 1.00002, 1.0001, 1.00002, 1.00019, 1.00021}, - std::vector{ - 1, 1.00032, 1.0003, 1.00004, 1.00032, 1.00008, 1.00013, 1.00013, 1.00022, 1.0003, 1.00192, - 1.00071, 1.00119, 1.00101, 1.00052, 1.00121, 1.00208, 1.00104, 1.00098, 1.00213, 1.00353, - 1.00324, 1.00364, 1.00042, 1.00235, 1.00392, 1.00376, 1.00376, 1.00124, 1.00027, 1.00001, - 1.00001, 1.00001, 1, 1, 1, 1, 1.00001, 1, 1, 1.00013, - 1.00014, 1.00006, 1.00009, 1.00005, 1.00002, 1.0001, 1.00002, 1.00019, 1.00021}, - "augru_sequence_attentional_gate_provided"), + 1, 9.66487, 9.10331, 2.11332, 9.681, 3.05146, 4.44603, 4.37069, 6.81965, 9.12921, 1, + 3.83094, 3.64746, 1.36374, 3.8362, 1.67024, 2.12587, 2.10125, 2.90136, 3.65593, 1, 2.67955, + 2.5707, 1.2158, 2.68268, 1.39764, 1.66796, 1.65336, 2.12805, 2.57572, 1, 2.25486, 2.17353, + 1.16123, 2.25719, 1.29709, 1.49906, 1.48815, 1.84281, 2.17728, 1, 1.74842, 1.69992, 1.09616, + 1.74982, 1.17719, 1.29765, 1.29114, 1.50267, 1.70216, 1, 1.01083, 1.01013, 1.00139, 1.01085, + 1.00256, 1.00431, 1.00421, 1.00727, 1.01016, 1, 1.00872, 1.00815, 1.00112, 1.00874, 1.00206, + 1.00347, 1.00339, 1.00586, 1.00818, 1, 1.00782, 1.00732, 1.00101, 1.00784, 1.00185, 1.00311, + 1.00304, 1.00526, 1.00734, 1, 1.00107, 1.001, 1.00014, 1.00107, 1.00025, 1.00043, 1.00042, + 1.00072, 1.00101, 1, 1.00032, 1.0003, 1.00004, 1.00032, 1.00008, 1.00013, 1.00013, 1.00022, + 1.0003, 7.40507, 3.37092, 4.9699, 4.35616, 2.7375, 5.04457, 7.91707, 4.46023, 4.25963, 8.10753, + 1.12733, 1.04713, 1.07892, 1.06672, 1.03454, 1.08041, 1.13751, 1.06879, 1.0648, 1.1413, 1.02276, + 1.00842, 1.01411, 1.01193, 1.00617, 1.01437, 1.02458, 1.0123, 1.01158, 1.02526, 1.02181, 1.00807, + 1.01352, 1.01143, 1.00592, 1.01377, 1.02355, 1.01178, 1.0111, 1.0242, 1.01533, 1.00567, 1.0095, + 1.00803, 1.00416, 1.00968, 1.01655, 1.00828, 1.0078, 1.01701, 1.01296, 1.0048, 1.00803, 1.00679, + 1.00351, 1.00818, 1.01399, 1.007, 1.00659, 1.01438, 1.01157, 1.00428, 1.00717, 1.00606, 1.00314, + 1.00731, 1.01249, 1.00625, 1.00589, 1.01284, 1.00628, 1.00232, 1.00389, 1.00329, 1.0017, 1.00396, + 1.00678, 1.00339, 1.0032, 1.00697, 1.00306, 1.00113, 1.0019, 1.0016, 1.00083, 1.00193, 1.00331, + 1.00165, 1.00156, 1.0034, 1.00192, 1.00071, 1.00119, 1.00101, 1.00052, 1.00121, 1.00208, 1.00104, + 1.00098, 1.00213, 3.29693, 3.11274, 3.36884, 1.27384, 2.529, 3.55257, 3.44671, 3.44806, 1.80574, + 1.17482, 3.11671, 2.94697, 3.18298, 1.25236, 2.40904, 3.35229, 3.25474, 3.25598, 1.74252, 1.1611, + 1.86076, 1.79173, 1.8877, 1.10262, 1.57298, 1.95655, 1.91688, 1.91739, 1.30194, 1.06551, 1.17186, + 1.15808, 1.17724, 1.02049, 1.1144, 1.19098, 1.18306, 1.18316, 1.06029, 1.01308, 1.1296, 1.11921, + 1.13366, 1.01545, 1.08627, 1.14403, 1.13805, 1.13813, 1.04546, 1.00986, 1.04206, 1.03868, 1.04337, + 1.00501, 1.028, 1.04674, 1.0448, 1.04482, 1.01475, 1.0032, 1.00845, 1.00777, 1.00872, 1.00101, + 1.00563, 1.00939, 1.009, 1.00901, 1.00296, 1.00064, 1.0048, 1.00441, 1.00495, 1.00057, 1.00319, + 1.00533, 1.00511, 1.00511, 1.00168, 1.00037, 1.00434, 1.00399, 1.00447, 1.00052, 1.00289, 1.00482, + 1.00462, 1.00462, 1.00152, 1.00033, 1.00353, 1.00324, 1.00364, 1.00042, 1.00235, 1.00392, 1.00376, + 1.00376, 1.00124, 1.00027, 2.71529, 2.51713, 2.71817, 2.0534, 1.50536, 1.74091, 1.36356, 3.00381, + 2.05532, 1.08741, 1.03177, 1.0281, 1.03183, 1.01951, 1.00936, 1.01372, 1.00673, 1.03712, 1.01955, + 1.00162, 1.00616, 1.00545, 1.00617, 1.00378, 1.00181, 1.00266, 1.0013, 1.00719, 1.00379, 1.00031, + 1.00281, 1.00248, 1.00281, 1.00172, 1.00083, 1.00121, 1.00059, 1.00328, 1.00173, 1.00014, 1.00154, + 1.00136, 1.00154, 1.00095, 1.00045, 1.00067, 1.00033, 1.0018, 1.00095, 1.00008, 1.00044, 1.00038, + 1.00044, 1.00027, 1.00013, 1.00019, 1.00009, 1.00051, 1.00027, 1.00002, 1.00025, 1.00022, 1.00025, + 1.00015, 1.00007, 1.00011, 1.00005, 1.00029, 1.00015, 1.00001, 1.0001, 1.00009, 1.0001, 1.00006, + 1.00003, 1.00004, 1.00002, 1.00012, 1.00006, 1.00001, 1.00002, 1.00002, 1.00002, 1.00001, 1.00001, + 1.00001, 1, 1.00003, 1.00001, 1, 1.00001, 1.00001, 1.00001, 1, 1, 1, + 1, 1.00001, 1, 1, 4.69752, 4.91442, 2.76866, 3.64345, 2.31614, 1.4347, 3.78035, + 1.56984, 6.35268, 6.92523, 1.15424, 1.16329, 1.07378, 1.11027, 1.0549, 1.01813, 1.11598, 1.02377, + 1.22328, 1.24717, 1.13297, 1.14077, 1.0636, 1.09506, 1.04733, 1.01563, 1.09999, 1.02049, 1.19249, + 1.21308, 1.10118, 1.10712, 1.0484, 1.07234, 1.03602, 1.0119, 1.07608, 1.01559, 1.14647, 1.16214, + 1.09964, 1.10548, 1.04766, 1.07123, 1.03547, 1.01171, 1.07492, 1.01536, 1.14424, 1.15967, 1.08482, + 1.08979, 1.04057, 1.06064, 1.03019, 1.00997, 1.06378, 1.01307, 1.12278, 1.13592, 1.01751, 1.01853, + 1.00837, 1.01252, 1.00623, 1.00206, 1.01316, 1.0027, 1.02534, 1.02805, 1.01381, 1.01462, 1.00661, + 1.00988, 1.00492, 1.00162, 1.01039, 1.00213, 1.02, 1.02214, 1.00037, 1.00039, 1.00018, 1.00027, + 1.00013, 1.00004, 1.00028, 1.00006, 1.00054, 1.0006, 1.00013, 1.00014, 1.00006, 1.00009, 1.00005, + 1.00002, 1.0001, 1.00002, 1.00019, 1.00021}, + std::vector{1, 1.00032, 1.0003, 1.00004, 1.00032, 1.00008, 1.00013, 1.00013, 1.00022, 1.0003, + 1.00192, 1.00071, 1.00119, 1.00101, 1.00052, 1.00121, 1.00208, 1.00104, 1.00098, 1.00213, + 1.00353, 1.00324, 1.00364, 1.00042, 1.00235, 1.00392, 1.00376, 1.00376, 1.00124, 1.00027, + 1.00001, 1.00001, 1.00001, 1, 1, 1, 1, 1.00001, 1, 1, + 1.00013, 1.00014, 1.00006, 1.00009, 1.00005, 1.00002, 1.0001, 1.00002, 1.00019, 1.00021}, + "augru_sequence_attentional_gate_provided"), AUGRUSequenceParams( - 3, 4, 5, 6, + 3, + 4, + 5, + 6, ET, std::vector{ - 18.351103f, 13.520717f, 11.687705f, 16.378006f, 15.568568f, 2.611258f, - 8.754645f, 1.173500f, 19.354236f, 18.344900f, 16.889204f, 15.882624f, - 5.627136f, 18.532579f, 3.884619f, 5.119867f, 19.311458f, 13.728893f, - 14.391294f, 14.994748f, 1.131725f, 7.582668f, 14.131282f, 19.547387f, - 17.038887f, 9.964800f, 0.993434f, 11.316858f, 5.330938f, 17.378582f, - 14.467881f, 4.232232f, 1.326875f, 5.338556f, 6.427002f, 7.961141f, - 11.043235f, 13.890585f, 15.062217f, 11.441225f, 14.734964f, 17.898548f, - 3.364136f, 12.155336f, 13.873233f, 5.822778f, 14.347963f, 3.387873f, - 11.021886f, 15.638179f, 15.419064f, 3.743839f, 7.656481f, 9.581622f, - 11.851100f, 4.481464f, 2.963150f, 18.103926f, 1.524719f, 6.200507f, - 10.349086f, 1.085302f, 9.037059f, 8.240071f, 9.869549f, 13.749188f, - 6.019619f, 7.583932f, 9.870675f, 5.238130f, 3.383805f, 6.283896f}, - std::vector{ - 17.012305f, 0.280625f, 4.584126f, 5.899313f, 17.788775f, 19.869320f, - 17.561679f, 1.209108f, 2.772207f, 15.623852f, 0.212452f, 8.111215f, - 5.552669f, 10.256264f, 0.026503f}, + 18.351103f, 13.520717f, 11.687705f, 16.378006f, 15.568568f, 2.611258f, 8.754645f, 1.173500f, + 19.354236f, 18.344900f, 16.889204f, 15.882624f, 5.627136f, 18.532579f, 3.884619f, 5.119867f, + 19.311458f, 13.728893f, 14.391294f, 14.994748f, 1.131725f, 7.582668f, 14.131282f, 19.547387f, + 17.038887f, 9.964800f, 0.993434f, 11.316858f, 5.330938f, 17.378582f, 14.467881f, 4.232232f, + 1.326875f, 5.338556f, 6.427002f, 7.961141f, 11.043235f, 13.890585f, 15.062217f, 11.441225f, + 14.734964f, 17.898548f, 3.364136f, 12.155336f, 13.873233f, 5.822778f, 14.347963f, 3.387873f, + 11.021886f, 15.638179f, 15.419064f, 3.743839f, 7.656481f, 9.581622f, 11.851100f, 4.481464f, + 2.963150f, 18.103926f, 1.524719f, 6.200507f, 10.349086f, 1.085302f, 9.037059f, 8.240071f, + 9.869549f, 13.749188f, 6.019619f, 7.583932f, 9.870675f, 5.238130f, 3.383805f, 6.283896f}, + std::vector{17.012305f, + 0.280625f, + 4.584126f, + 5.899313f, + 17.788775f, + 19.869320f, + 17.561679f, + 1.209108f, + 2.772207f, + 15.623852f, + 0.212452f, + 8.111215f, + 5.552669f, + 10.256264f, + 0.026503f}, std::vector{6, 6, 6}, + std::vector{2.599543f, 1.017497f, 2.188785f, 9.186879f, 19.503938f, 9.249134f, 1.613915f, + 16.139065f, 16.139263f, 6.162586f, 3.584053f, 13.815329f, 3.166837f, 9.710348f, + 13.262320f, 5.637648f, 7.555024f, 4.282188f, 0.890288f, 9.009603f, 6.672247f, + 10.287107f, 3.250285f, 17.159962f, 12.805244f, 7.266579f, 6.671443f, 4.756829f, + 14.331350f, 4.955475f, 15.988379f, 1.444935f, 8.917654f, 13.265950f, 14.192596f, + 6.813692f, 6.118729f, 9.446750f, 6.676908f, 2.862558f, 7.298118f, 14.044843f, + 4.047191f, 18.313578f, 14.433683f, 10.046828f, 6.272552f, 5.960752f, 7.687321f, + 17.799588f, 17.974497f, 3.092019f, 17.537077f, 5.673742f, 7.945506f, 16.820461f, + 3.382466f, 14.536867f, 10.431873f, 17.666089f}, + std::vector{19.883110f, 3.627721f, 12.381158f, 8.494785f, 0.744855f, 2.083576f, 3.628426f, + 13.435420f, 8.021385f, 16.324589f, 9.171570f, 5.194103f, 9.534415f, 3.747218f, + 14.976561f, 15.450245f, 0.690866f, 14.611735f, 12.058640f, 12.255162f, 11.922434f, + 5.324248f, 16.084200f, 11.910202f, 8.972001f, 8.331036f, 5.271550f, 3.376512f, + 17.947813f, 11.445078f, 19.813407f, 7.357054f, 18.609516f, 1.641881f, 15.659794f, + 12.757155f, 19.407852f, 15.042537f, 5.609916f, 5.240596f, 16.863105f, 2.939757f, + 7.419171f, 17.463287f, 15.461648f, 3.089222f, 0.349571f, 17.916363f, 17.127918f, + 9.218649f, 16.540375f, 19.735329f, 14.503906f, 2.743288f, 18.953856f, 7.761779f, + 15.795299f, 4.491015f, 16.724311f, 10.091499f, 8.233435f, 7.727666f, 17.705235f, + 10.873172f, 6.631204f, 4.461747f, 0.832513f, 7.237117f, 12.597311f, 13.430508f, + 11.884650f, 3.903417f, 8.122048f, 14.688200f, 3.733118f}, + std::vector{14.387985f, + 12.398350f, + 12.775042f, + 11.106416f, + 18.022651f, + 2.087257f, + 17.773750f, + 15.364595f, + 9.153267f, + 14.613577f, + 11.195361f, + 15.070744f, + 1.611076f, + 11.896046f, + 10.134009f}, + std::vector{9.273749f, + 12.871767f, + 16.940379f, + 9.644809f, + 8.121616f, + 12.174741f, + 11.509982f, + 10.122257f, + 4.616639f, + 13.560133f, + 3.175609f, + 5.129174f, + 2.827964f, + 9.646965f, + 9.387886f, + 1.972116f, + 17.192705f, + 6.235506f}, std::vector{ - 2.599543f, 1.017497f, 2.188785f, 9.186879f, 19.503938f, 9.249134f, - 1.613915f, 16.139065f, 16.139263f, 6.162586f, 3.584053f, 13.815329f, - 3.166837f, 9.710348f, 13.262320f, 5.637648f, 7.555024f, 4.282188f, - 0.890288f, 9.009603f, 6.672247f, 10.287107f, 3.250285f, 17.159962f, - 12.805244f, 7.266579f, 6.671443f, 4.756829f, 14.331350f, 4.955475f, - 15.988379f, 1.444935f, 8.917654f, 13.265950f, 14.192596f, 6.813692f, - 6.118729f, 9.446750f, 6.676908f, 2.862558f, 7.298118f, 14.044843f, - 4.047191f, 18.313578f, 14.433683f, 10.046828f, 6.272552f, 5.960752f, - 7.687321f, 17.799588f, 17.974497f, 3.092019f, 17.537077f, 5.673742f, - 7.945506f, 16.820461f, 3.382466f, 14.536867f, 10.431873f, 17.666089f}, - std::vector{ - 19.883110f, 3.627721f, 12.381158f, 8.494785f, 0.744855f, 2.083576f, - 3.628426f, 13.435420f, 8.021385f, 16.324589f, 9.171570f, 5.194103f, - 9.534415f, 3.747218f, 14.976561f, 15.450245f, 0.690866f, 14.611735f, - 12.058640f, 12.255162f, 11.922434f, 5.324248f, 16.084200f, 11.910202f, - 8.972001f, 8.331036f, 5.271550f, 3.376512f, 17.947813f, 11.445078f, - 19.813407f, 7.357054f, 18.609516f, 1.641881f, 15.659794f, 12.757155f, - 19.407852f, 15.042537f, 5.609916f, 5.240596f, 16.863105f, 2.939757f, - 7.419171f, 17.463287f, 15.461648f, 3.089222f, 0.349571f, 17.916363f, - 17.127918f, 9.218649f, 16.540375f, 19.735329f, 14.503906f, 2.743288f, - 18.953856f, 7.761779f, 15.795299f, 4.491015f, 16.724311f, 10.091499f, - 8.233435f, 7.727666f, 17.705235f, 10.873172f, 6.631204f, 4.461747f, - 0.832513f, 7.237117f, 12.597311f, 13.430508f, 11.884650f, 3.903417f, - 8.122048f, 14.688200f, 3.733118f}, - std::vector{ - 14.387985f, 12.398350f, 12.775042f, 11.106416f, 18.022651f, 2.087257f, - 17.773750f, 15.364595f, 9.153267f, 14.613577f, 11.195361f, 15.070744f, - 1.611076f, 11.896046f, 10.134009f}, - std::vector - {9.273749f, 12.871767f, 16.940379f, 9.644809f, 8.121616f, 12.174741f, - 11.509982f, 10.122257f, 4.616639f, 13.560133f, 3.175609f, 5.129174f, - 2.827964f, 9.646965f, 9.387886f, 1.972116f, 17.192705f, 6.235506f}, - std::vector{ - -131.482, 6.95193, -28.6542, -39.5357, -137.906, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, -197.316, - -173.063, -1.19772, -17.6259, -152.696, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 2.43961, - -11.999, -7.32212, -15.9201, 2.77952, 1, 94.1084, 72.961, 147.308, 1, 1, - -779.982, -602.601, -1226.21, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1,}, - std::vector{ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, - "augru_sequence_different_input_size_and_hidden_size_and_seq_length"), -AUGRUSequenceParams( - 3, 4, 4, 4, + -131.482, 6.95193, -28.6542, -39.5357, -137.906, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + -197.316, -173.063, -1.19772, -17.6259, -152.696, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 2.43961, -11.999, -7.32212, -15.9201, 2.77952, 1, 94.1084, 72.961, 147.308, 1, + 1, -779.982, -602.601, -1226.21, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + }, + std::vector{1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, + "augru_sequence_different_input_size_and_hidden_size_and_seq_length"), + AUGRUSequenceParams( + 3, + 4, + 4, + 4, ET, - std::vector{ - 6.333189f, 5.312533f, 3.092159f, 6.788004f, 6.543326f, 6.307378f, - 7.487966f, 3.300125f, 5.563141f, 5.551623f, 3.812029f, 0.132248f, - 6.767892f, 7.179934f, 4.832786f, 7.047989f, 7.439896f, 5.970488f, - 4.878981f, 7.562621f, 7.069236f, 6.484528f, 3.208064f, 5.561788f, - 3.716249f, 3.412311f, 2.414488f, 7.465214f, 6.444024f, 6.718469f, - 1.158724f, 0.874442f, 3.319976f, 3.639372f, 5.725887f, 6.594659f, - 2.427224f, 7.611652f, 4.804684f, 3.739928f, 1.892036f, 2.038615f, - 1.297785f, 2.687379f, 7.228432f, 3.015881f, 1.658817f, 6.812868f}, - std::vector{ - 1.905747f, 1.157613f, 7.828747f, 0.730339f, 0.177484f, 6.356011f, - 7.802150f, 0.351901f, 2.614103f, 5.295752f, 1.925256f, 5.925945f}, + std::vector{6.333189f, 5.312533f, 3.092159f, 6.788004f, 6.543326f, 6.307378f, 7.487966f, 3.300125f, + 5.563141f, 5.551623f, 3.812029f, 0.132248f, 6.767892f, 7.179934f, 4.832786f, 7.047989f, + 7.439896f, 5.970488f, 4.878981f, 7.562621f, 7.069236f, 6.484528f, 3.208064f, 5.561788f, + 3.716249f, 3.412311f, 2.414488f, 7.465214f, 6.444024f, 6.718469f, 1.158724f, 0.874442f, + 3.319976f, 3.639372f, 5.725887f, 6.594659f, 2.427224f, 7.611652f, 4.804684f, 3.739928f, + 1.892036f, 2.038615f, 1.297785f, 2.687379f, 7.228432f, 3.015881f, 1.658817f, 6.812868f}, + std::vector{1.905747f, + 1.157613f, + 7.828747f, + 0.730339f, + 0.177484f, + 6.356011f, + 7.802150f, + 0.351901f, + 2.614103f, + 5.295752f, + 1.925256f, + 5.925945f}, std::vector{2, 4, 6}, - std::vector{ - 4.092708f, 3.566296f, 1.985790f, 6.146150f, 6.427968f, 7.096002f, - 7.786629f, 1.156184f, 2.091389f, 3.677408f, 0.800674f, 2.707813f, - 5.396107f, 5.135335f, 3.197786f, 2.983154f, 3.029478f, 1.616802f, - 2.162019f, 6.922834f, 5.473023f, 4.648859f, 7.976208f, 0.100666f, - 1.022222f, 6.531802f, 4.358081f, 2.619875f, 2.189079f, 4.086223f, - 7.818407f, 1.802662f, 7.781939f, 7.542665f, 0.512391f, 6.402292f, - 6.450581f, 5.147434f, 5.103659f, 0.894397f, 3.192224f, 3.798631f, - 4.647818f, 3.119819f, 6.469874f, 1.386456f, 2.030223f, 6.888086f}, - std::vector{ - 5.094750f, 0.455363f, 4.989539f, 0.998320f, 6.369301f, 6.971411f, - 1.183518f, 1.386444f, 7.572741f, 4.089349f, 0.116142f, 3.784642f, - 7.925501f, 6.721643f, 3.293674f, 5.754296f, 0.642623f, 2.969238f, - 3.536983f, 6.635469f, 1.634170f, 0.507635f, 0.205818f, 0.014995f, - 4.528792f, 7.128315f, 2.403315f, 7.728932f, 4.206394f, 6.285463f, - 5.314773f, 6.473219f, 2.506818f, 0.430820f, 3.337787f, 3.828441f, - 2.620897f, 5.545934f, 2.593279f, 3.601373f, 2.595556f, 0.687849f, - 5.277596f, 4.074282f, 1.844880f, 1.232070f, 4.970289f, 5.472321f}, - std::vector{ - 5.516398f, 5.621736f, 4.341954f, 6.820305f, 4.760572f, 7.643595f, - 1.733547f, 3.100034f, 7.009072f, 3.027971f, 5.044797f, 0.534897f}, - std::vector - {5.472119f, 1.116471f, 4.916850f, 1.217513f, 5.672895f, 4.827186f, - 2.210116f, 3.160670f, 4.265747f, 3.949529f, 4.224079f, 3.049556f}, - std::vector{ - -3.05061, 0.295136, -29.539, 2.20596, 1, 1.0821, 2.32396, -1.30623, 0, 0, 0, - 0, 0, 0, 0, 0, 4.84353, -24.0281, -30.7857, 4.0285, 1, - -1, 122.647, 1, 1, 3.42023, -146.207, 1, 1, 1, 319.066, - 1, -4.27125, -13.0288, -2.02165, -15.0869, 16.5477, 1, 1, 1, -49.1271, - 1, 1, 1, 0.999999, -1, -1, 1}, - std::vector{ - 1, 1.0821, 2.32396, -1.30623, 1, 1, 319.066, 1, 0, 0, 0, 0}, - "augru_sequence_different_sequence_len_in_each_batch"), + std::vector{4.092708f, 3.566296f, 1.985790f, 6.146150f, 6.427968f, 7.096002f, 7.786629f, 1.156184f, + 2.091389f, 3.677408f, 0.800674f, 2.707813f, 5.396107f, 5.135335f, 3.197786f, 2.983154f, + 3.029478f, 1.616802f, 2.162019f, 6.922834f, 5.473023f, 4.648859f, 7.976208f, 0.100666f, + 1.022222f, 6.531802f, 4.358081f, 2.619875f, 2.189079f, 4.086223f, 7.818407f, 1.802662f, + 7.781939f, 7.542665f, 0.512391f, 6.402292f, 6.450581f, 5.147434f, 5.103659f, 0.894397f, + 3.192224f, 3.798631f, 4.647818f, 3.119819f, 6.469874f, 1.386456f, 2.030223f, 6.888086f}, + std::vector{5.094750f, 0.455363f, 4.989539f, 0.998320f, 6.369301f, 6.971411f, 1.183518f, 1.386444f, + 7.572741f, 4.089349f, 0.116142f, 3.784642f, 7.925501f, 6.721643f, 3.293674f, 5.754296f, + 0.642623f, 2.969238f, 3.536983f, 6.635469f, 1.634170f, 0.507635f, 0.205818f, 0.014995f, + 4.528792f, 7.128315f, 2.403315f, 7.728932f, 4.206394f, 6.285463f, 5.314773f, 6.473219f, + 2.506818f, 0.430820f, 3.337787f, 3.828441f, 2.620897f, 5.545934f, 2.593279f, 3.601373f, + 2.595556f, 0.687849f, 5.277596f, 4.074282f, 1.844880f, 1.232070f, 4.970289f, 5.472321f}, + std::vector{5.516398f, + 5.621736f, + 4.341954f, + 6.820305f, + 4.760572f, + 7.643595f, + 1.733547f, + 3.100034f, + 7.009072f, + 3.027971f, + 5.044797f, + 0.534897f}, + std::vector{5.472119f, + 1.116471f, + 4.916850f, + 1.217513f, + 5.672895f, + 4.827186f, + 2.210116f, + 3.160670f, + 4.265747f, + 3.949529f, + 4.224079f, + 3.049556f}, + std::vector{-3.05061, 0.295136, -29.539, 2.20596, 1, 1.0821, 2.32396, -1.30623, + 0, 0, 0, 0, 0, 0, 0, 0, + 4.84353, -24.0281, -30.7857, 4.0285, 1, -1, 122.647, 1, + 1, 3.42023, -146.207, 1, 1, 1, 319.066, 1, + -4.27125, -13.0288, -2.02165, -15.0869, 16.5477, 1, 1, 1, + -49.1271, 1, 1, 1, 0.999999, -1, -1, 1}, + std::vector{1, 1.0821, 2.32396, -1.30623, 1, 1, 319.066, 1, 0, 0, 0, 0}, + "augru_sequence_different_sequence_len_in_each_batch"), }; return params; } @@ -635,80 +672,106 @@ AUGRUSequenceParams( template std::vector generateParamsBF16() { using T = typename element_type_traits::value_type; - std::vector params { + std::vector params{ AUGRUSequenceParams( - 3, 4, 5, 6, + 3, + 4, + 5, + 6, ET, std::vector{ - 18.351103f, 13.520717f, 11.687705f, 16.378006f, 15.568568f, 2.611258f, - 8.754645f, 1.173500f, 19.354236f, 18.344900f, 16.889204f, 15.882624f, - 5.627136f, 18.532579f, 3.884619f, 5.119867f, 19.311458f, 13.728893f, - 14.391294f, 14.994748f, 1.131725f, 7.582668f, 14.131282f, 19.547387f, - 17.038887f, 9.964800f, 0.993434f, 11.316858f, 5.330938f, 17.378582f, - 14.467881f, 4.232232f, 1.326875f, 5.338556f, 6.427002f, 7.961141f, - 11.043235f, 13.890585f, 15.062217f, 11.441225f, 14.734964f, 17.898548f, - 3.364136f, 12.155336f, 13.873233f, 5.822778f, 14.347963f, 3.387873f, - 11.021886f, 15.638179f, 15.419064f, 3.743839f, 7.656481f, 9.581622f, - 11.851100f, 4.481464f, 2.963150f, 18.103926f, 1.524719f, 6.200507f, - 10.349086f, 1.085302f, 9.037059f, 8.240071f, 9.869549f, 13.749188f, - 6.019619f, 7.583932f, 9.870675f, 5.238130f, 3.383805f, 6.283896f}, - std::vector{ - 17.012305f, 0.280625f, 4.584126f, 5.899313f, 17.788775f, 19.869320f, - 17.561679f, 1.209108f, 2.772207f, 15.623852f, 0.212452f, 8.111215f, - 5.552669f, 10.256264f, 0.026503f}, + 18.351103f, 13.520717f, 11.687705f, 16.378006f, 15.568568f, 2.611258f, 8.754645f, 1.173500f, + 19.354236f, 18.344900f, 16.889204f, 15.882624f, 5.627136f, 18.532579f, 3.884619f, 5.119867f, + 19.311458f, 13.728893f, 14.391294f, 14.994748f, 1.131725f, 7.582668f, 14.131282f, 19.547387f, + 17.038887f, 9.964800f, 0.993434f, 11.316858f, 5.330938f, 17.378582f, 14.467881f, 4.232232f, + 1.326875f, 5.338556f, 6.427002f, 7.961141f, 11.043235f, 13.890585f, 15.062217f, 11.441225f, + 14.734964f, 17.898548f, 3.364136f, 12.155336f, 13.873233f, 5.822778f, 14.347963f, 3.387873f, + 11.021886f, 15.638179f, 15.419064f, 3.743839f, 7.656481f, 9.581622f, 11.851100f, 4.481464f, + 2.963150f, 18.103926f, 1.524719f, 6.200507f, 10.349086f, 1.085302f, 9.037059f, 8.240071f, + 9.869549f, 13.749188f, 6.019619f, 7.583932f, 9.870675f, 5.238130f, 3.383805f, 6.283896f}, + std::vector{17.012305f, + 0.280625f, + 4.584126f, + 5.899313f, + 17.788775f, + 19.869320f, + 17.561679f, + 1.209108f, + 2.772207f, + 15.623852f, + 0.212452f, + 8.111215f, + 5.552669f, + 10.256264f, + 0.026503f}, std::vector{6, 6, 6}, - std::vector{ - 2.599543f, 1.017497f, 2.188785f, 9.186879f, 19.503938f, 9.249134f, - 1.613915f, 16.139065f, 16.139263f, 6.162586f, 3.584053f, 13.815329f, - 3.166837f, 9.710348f, 13.262320f, 5.637648f, 7.555024f, 4.282188f, - 0.890288f, 9.009603f, 6.672247f, 10.287107f, 3.250285f, 17.159962f, - 12.805244f, 7.266579f, 6.671443f, 4.756829f, 14.331350f, 4.955475f, - 15.988379f, 1.444935f, 8.917654f, 13.265950f, 14.192596f, 6.813692f, - 6.118729f, 9.446750f, 6.676908f, 2.862558f, 7.298118f, 14.044843f, - 4.047191f, 18.313578f, 14.433683f, 10.046828f, 6.272552f, 5.960752f, - 7.687321f, 17.799588f, 17.974497f, 3.092019f, 17.537077f, 5.673742f, - 7.945506f, 16.820461f, 3.382466f, 14.536867f, 10.431873f, 17.666089f}, - std::vector{ - 19.883110f, 3.627721f, 12.381158f, 8.494785f, 0.744855f, 2.083576f, - 3.628426f, 13.435420f, 8.021385f, 16.324589f, 9.171570f, 5.194103f, - 9.534415f, 3.747218f, 14.976561f, 15.450245f, 0.690866f, 14.611735f, - 12.058640f, 12.255162f, 11.922434f, 5.324248f, 16.084200f, 11.910202f, - 8.972001f, 8.331036f, 5.271550f, 3.376512f, 17.947813f, 11.445078f, - 19.813407f, 7.357054f, 18.609516f, 1.641881f, 15.659794f, 12.757155f, - 19.407852f, 15.042537f, 5.609916f, 5.240596f, 16.863105f, 2.939757f, - 7.419171f, 17.463287f, 15.461648f, 3.089222f, 0.349571f, 17.916363f, - 17.127918f, 9.218649f, 16.540375f, 19.735329f, 14.503906f, 2.743288f, - 18.953856f, 7.761779f, 15.795299f, 4.491015f, 16.724311f, 10.091499f, - 8.233435f, 7.727666f, 17.705235f, 10.873172f, 6.631204f, 4.461747f, - 0.832513f, 7.237117f, 12.597311f, 13.430508f, 11.884650f, 3.903417f, - 8.122048f, 14.688200f, 3.733118f}, - std::vector{ - 14.387985f, 12.398350f, 12.775042f, 11.106416f, 18.022651f, 2.087257f, - 17.773750f, 15.364595f, 9.153267f, 14.613577f, 11.195361f, 15.070744f, - 1.611076f, 11.896046f, 10.134009f}, - std::vector - {9.273749f, 12.871767f, 16.940379f, 9.644809f, 8.121616f, 12.174741f, - 11.509982f, 10.122257f, 4.616639f, 13.560133f, 3.175609f, 5.129174f, - 2.827964f, 9.646965f, 9.387886f, 1.972116f, 17.192705f, 6.235506f}, - std::vector{ - -130, 6.9375, -28.25, -39.25, -136, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, -196, - -172, -1.125, -17.5, -152, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 2.42188, - -11.9375, -7.25, -15.6875, 2.75, 1, 93, 72, 144, 1, 1, - -768, -592, -1184, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1}, - std::vector{ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, - "augru_sequence_bfloat16"), + std::vector{2.599543f, 1.017497f, 2.188785f, 9.186879f, 19.503938f, 9.249134f, 1.613915f, + 16.139065f, 16.139263f, 6.162586f, 3.584053f, 13.815329f, 3.166837f, 9.710348f, + 13.262320f, 5.637648f, 7.555024f, 4.282188f, 0.890288f, 9.009603f, 6.672247f, + 10.287107f, 3.250285f, 17.159962f, 12.805244f, 7.266579f, 6.671443f, 4.756829f, + 14.331350f, 4.955475f, 15.988379f, 1.444935f, 8.917654f, 13.265950f, 14.192596f, + 6.813692f, 6.118729f, 9.446750f, 6.676908f, 2.862558f, 7.298118f, 14.044843f, + 4.047191f, 18.313578f, 14.433683f, 10.046828f, 6.272552f, 5.960752f, 7.687321f, + 17.799588f, 17.974497f, 3.092019f, 17.537077f, 5.673742f, 7.945506f, 16.820461f, + 3.382466f, 14.536867f, 10.431873f, 17.666089f}, + std::vector{19.883110f, 3.627721f, 12.381158f, 8.494785f, 0.744855f, 2.083576f, 3.628426f, + 13.435420f, 8.021385f, 16.324589f, 9.171570f, 5.194103f, 9.534415f, 3.747218f, + 14.976561f, 15.450245f, 0.690866f, 14.611735f, 12.058640f, 12.255162f, 11.922434f, + 5.324248f, 16.084200f, 11.910202f, 8.972001f, 8.331036f, 5.271550f, 3.376512f, + 17.947813f, 11.445078f, 19.813407f, 7.357054f, 18.609516f, 1.641881f, 15.659794f, + 12.757155f, 19.407852f, 15.042537f, 5.609916f, 5.240596f, 16.863105f, 2.939757f, + 7.419171f, 17.463287f, 15.461648f, 3.089222f, 0.349571f, 17.916363f, 17.127918f, + 9.218649f, 16.540375f, 19.735329f, 14.503906f, 2.743288f, 18.953856f, 7.761779f, + 15.795299f, 4.491015f, 16.724311f, 10.091499f, 8.233435f, 7.727666f, 17.705235f, + 10.873172f, 6.631204f, 4.461747f, 0.832513f, 7.237117f, 12.597311f, 13.430508f, + 11.884650f, 3.903417f, 8.122048f, 14.688200f, 3.733118f}, + std::vector{14.387985f, + 12.398350f, + 12.775042f, + 11.106416f, + 18.022651f, + 2.087257f, + 17.773750f, + 15.364595f, + 9.153267f, + 14.613577f, + 11.195361f, + 15.070744f, + 1.611076f, + 11.896046f, + 10.134009f}, + std::vector{9.273749f, + 12.871767f, + 16.940379f, + 9.644809f, + 8.121616f, + 12.174741f, + 11.509982f, + 10.122257f, + 4.616639f, + 13.560133f, + 3.175609f, + 5.129174f, + 2.827964f, + 9.646965f, + 9.387886f, + 1.972116f, + 17.192705f, + 6.235506f}, + std::vector{-130, 6.9375, -28.25, -39.25, -136, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + -196, -172, -1.125, -17.5, -152, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 2.42188, -11.9375, -7.25, -15.6875, 2.75, 1, 93, 72, 144, 1, 1, -768, -592, -1184, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, + std::vector{1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, + "augru_sequence_bfloat16"), }; return params; } std::vector generateCombinedParams() { - const std::vector> generatedParams { + const std::vector> generatedParams{ generateParams(), generateParams(), generateParams(), @@ -722,7 +785,9 @@ std::vector generateCombinedParams() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_AUGRUSequence_With_Hardcoded_Refs, ReferenceAUGRUSequenceTest, - testing::ValuesIn(generateCombinedParams()), ReferenceAUGRUSequenceTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_AUGRUSequence_With_Hardcoded_Refs, + ReferenceAUGRUSequenceTest, + testing::ValuesIn(generateCombinedParams()), + ReferenceAUGRUSequenceTest::getTestCaseName); -} // namespace +} // namespace diff --git a/src/plugins/template/tests/functional/op_reference/avg_pool.cpp b/src/plugins/template/tests/functional/op_reference/avg_pool.cpp index ba97db25396..7bf582184f3 100644 --- a/src/plugins/template/tests/functional/op_reference/avg_pool.cpp +++ b/src/plugins/template/tests/functional/op_reference/avg_pool.cpp @@ -2,10 +2,11 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/avg_pool.hpp" + #include #include "base_reference_test.hpp" -#include "openvino/op/avg_pool.hpp" using namespace ov; using namespace reference_tests; @@ -15,18 +16,18 @@ namespace { struct AvgPoolParams { template AvgPoolParams(const Shape& input_shape, - const Shape& output_shape, - const element::Type& input_type, - const element::Type& ouput_type, - const std::vector& input_values, - const std::vector& output_values, - const Strides& strides, - const Shape& pads_begin, - const Shape& pads_end, - const Shape& kernel, - const bool exclude_pad, - const op::RoundingType& rounding_type, - const op::PadType& pad_type) + const Shape& output_shape, + const element::Type& input_type, + const element::Type& ouput_type, + const std::vector& input_values, + const std::vector& output_values, + const Strides& strides, + const Shape& pads_begin, + const Shape& pads_end, + const Shape& kernel, + const bool exclude_pad, + const op::RoundingType& rounding_type, + const op::PadType& pad_type) : m_input_shape(input_shape), m_output_shape(output_shape), m_input_type(input_type), @@ -88,14 +89,14 @@ public: private: static std::shared_ptr CreateFunction(const Shape& input_shape, - const element::Type& input_type, - const Strides& strides, - const Shape& pads_begin, - const Shape& pads_end, - const Shape& kernel, - const bool exclude_pad, - const op::RoundingType rounding_type, - const op::PadType pad_type) { + const element::Type& input_type, + const Strides& strides, + const Shape& pads_begin, + const Shape& pads_end, + const Shape& kernel, + const bool exclude_pad, + const op::RoundingType rounding_type, + const op::PadType pad_type) { const auto in = std::make_shared(input_type, input_shape); const auto avgPool = std::make_shared(in, strides, @@ -113,8 +114,8 @@ TEST_P(ReferenceAvgPoolLayerTest, AvgPoolWithHardcodedRefs) { Exec(); } -template -std::vector getContinuousIncreasingValue(size_t elementSize, float step) { +template +std::vector getContinuousIncreasingValue(size_t elementSize, float step) { std::vector a(elementSize); std::iota(std::begin(a), std::end(a), step); return a; @@ -247,11 +248,9 @@ std::vector generateParamsForAvgPool() { } std::vector generateCombinedParamsForAvgPool() { - const std::vector> allTypeParams{ - generateParamsForAvgPool(), - generateParamsForAvgPool(), - generateParamsForAvgPool() - }; + const std::vector> allTypeParams{generateParamsForAvgPool(), + generateParamsForAvgPool(), + generateParamsForAvgPool()}; std::vector combinedParams; @@ -262,10 +261,9 @@ std::vector generateCombinedParamsForAvgPool() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P( - smoke_AvgPool_With_Hardcoded_Refs, - ReferenceAvgPoolLayerTest, - ::testing::ValuesIn(generateCombinedParamsForAvgPool()), - ReferenceAvgPoolLayerTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_AvgPool_With_Hardcoded_Refs, + ReferenceAvgPoolLayerTest, + ::testing::ValuesIn(generateCombinedParamsForAvgPool()), + ReferenceAvgPoolLayerTest::getTestCaseName); } // namespace diff --git a/src/plugins/template/tests/functional/op_reference/base_reference_test.cpp b/src/plugins/template/tests/functional/op_reference/base_reference_test.cpp index d454e072f9f..d5f5a3a4f19 100644 --- a/src/plugins/template/tests/functional/op_reference/base_reference_test.cpp +++ b/src/plugins/template/tests/functional/op_reference/base_reference_test.cpp @@ -2,21 +2,21 @@ // SPDX-License-Identifier: Apache-2.0 // #include "base_reference_test.hpp" -#include "functional_test_utils/ov_plugin_cache.hpp" -#include "shared_test_classes/base/layer_test_utils.hpp" #include +#include "functional_test_utils/ov_plugin_cache.hpp" #include "openvino/core/type/element_type.hpp" #include "openvino/runtime/allocator.hpp" #include "openvino/runtime/tensor.hpp" +#include "shared_test_classes/base/layer_test_utils.hpp" #include "transformations/utils/utils.hpp" using namespace ov; namespace reference_tests { -CommonReferenceTest::CommonReferenceTest(): targetDevice("TEMPLATE") { +CommonReferenceTest::CommonReferenceTest() : targetDevice("TEMPLATE") { core = test::utils::PluginCache::get().core(targetDevice); } @@ -75,8 +75,12 @@ void CommonReferenceTest::Validate() { } } -void CommonReferenceTest::ValidateBlobs(const ov::Tensor& refBlob, const ov::Tensor& outBlob, const size_t blob_idx, - float threshold, float abs_threshold, size_t actual_comparision_size) { +void CommonReferenceTest::ValidateBlobs(const ov::Tensor& refBlob, + const ov::Tensor& outBlob, + const size_t blob_idx, + float threshold, + float abs_threshold, + size_t actual_comparision_size) { ASSERT_EQ(refBlob.get_element_type(), outBlob.get_element_type()) << "Incompatible element type for blob with index " << blob_idx; ASSERT_EQ(refBlob.get_byte_size(), outBlob.get_byte_size()) @@ -88,80 +92,110 @@ void CommonReferenceTest::ValidateBlobs(const ov::Tensor& refBlob, const ov::Ten const auto& element_type = refBlob.get_element_type(); switch (element_type) { case ov::element::bf16: - LayerTestsUtils::LayerTestsCommon::Compare( - refBlob.data(), outBlob.data(), - actual_comparision_size, threshold, abs_threshold); + LayerTestsUtils::LayerTestsCommon::Compare(refBlob.data(), + outBlob.data(), + actual_comparision_size, + threshold, + abs_threshold); break; case ov::element::f16: - LayerTestsUtils::LayerTestsCommon::Compare( - refBlob.data(), outBlob.data(), - actual_comparision_size, threshold, abs_threshold); + LayerTestsUtils::LayerTestsCommon::Compare(refBlob.data(), + outBlob.data(), + actual_comparision_size, + threshold, + abs_threshold); break; case ov::element::f32: - LayerTestsUtils::LayerTestsCommon::Compare( - refBlob.data(), outBlob.data(), - actual_comparision_size, threshold, abs_threshold); + LayerTestsUtils::LayerTestsCommon::Compare(refBlob.data(), + outBlob.data(), + actual_comparision_size, + threshold, + abs_threshold); break; case ov::element::f64: - LayerTestsUtils::LayerTestsCommon::Compare( - refBlob.data(), outBlob.data(), - actual_comparision_size, threshold, abs_threshold); + LayerTestsUtils::LayerTestsCommon::Compare(refBlob.data(), + outBlob.data(), + actual_comparision_size, + threshold, + abs_threshold); break; case ov::element::i8: - LayerTestsUtils::LayerTestsCommon::Compare( - refBlob.data(), outBlob.data(), - actual_comparision_size, threshold, abs_threshold); + LayerTestsUtils::LayerTestsCommon::Compare(refBlob.data(), + outBlob.data(), + actual_comparision_size, + threshold, + abs_threshold); break; case ov::element::i16: - LayerTestsUtils::LayerTestsCommon::Compare( - refBlob.data(), outBlob.data(), - actual_comparision_size, threshold, abs_threshold); + LayerTestsUtils::LayerTestsCommon::Compare(refBlob.data(), + outBlob.data(), + actual_comparision_size, + threshold, + abs_threshold); break; case ov::element::i32: - LayerTestsUtils::LayerTestsCommon::Compare( - refBlob.data(), outBlob.data(), - actual_comparision_size, threshold, abs_threshold); + LayerTestsUtils::LayerTestsCommon::Compare(refBlob.data(), + outBlob.data(), + actual_comparision_size, + threshold, + abs_threshold); break; case ov::element::i64: - LayerTestsUtils::LayerTestsCommon::Compare( - refBlob.data(), outBlob.data(), - actual_comparision_size, threshold, abs_threshold); + LayerTestsUtils::LayerTestsCommon::Compare(refBlob.data(), + outBlob.data(), + actual_comparision_size, + threshold, + abs_threshold); break; case ov::element::boolean: - LayerTestsUtils::LayerTestsCommon::Compare( - refBlob.data(), outBlob.data(), - actual_comparision_size, threshold, abs_threshold); + LayerTestsUtils::LayerTestsCommon::Compare(refBlob.data(), + outBlob.data(), + actual_comparision_size, + threshold, + abs_threshold); break; case ov::element::u8: - LayerTestsUtils::LayerTestsCommon::Compare( - refBlob.data(), outBlob.data(), - actual_comparision_size, threshold, abs_threshold); + LayerTestsUtils::LayerTestsCommon::Compare(refBlob.data(), + outBlob.data(), + actual_comparision_size, + threshold, + abs_threshold); break; case ov::element::u16: - LayerTestsUtils::LayerTestsCommon::Compare( - refBlob.data(), outBlob.data(), - actual_comparision_size, threshold, abs_threshold); + LayerTestsUtils::LayerTestsCommon::Compare(refBlob.data(), + outBlob.data(), + actual_comparision_size, + threshold, + abs_threshold); break; case ov::element::u32: - LayerTestsUtils::LayerTestsCommon::Compare( - refBlob.data(), outBlob.data(), - actual_comparision_size, threshold, abs_threshold); + LayerTestsUtils::LayerTestsCommon::Compare(refBlob.data(), + outBlob.data(), + actual_comparision_size, + threshold, + abs_threshold); break; case ov::element::u64: - LayerTestsUtils::LayerTestsCommon::Compare( - refBlob.data(), outBlob.data(), - actual_comparision_size, threshold, abs_threshold); + LayerTestsUtils::LayerTestsCommon::Compare(refBlob.data(), + outBlob.data(), + actual_comparision_size, + threshold, + abs_threshold); break; case ov::element::i4: case ov::element::u4: - LayerTestsUtils::LayerTestsCommon::Compare( - static_cast(refBlob.data()), static_cast(outBlob.data()), - actual_comparision_size / 2, threshold, abs_threshold); + LayerTestsUtils::LayerTestsCommon::Compare(static_cast(refBlob.data()), + static_cast(outBlob.data()), + actual_comparision_size / 2, + threshold, + abs_threshold); break; case ov::element::u1: - LayerTestsUtils::LayerTestsCommon::Compare( - static_cast(refBlob.data()), static_cast(outBlob.data()), - actual_comparision_size / 8, threshold, abs_threshold); + LayerTestsUtils::LayerTestsCommon::Compare(static_cast(refBlob.data()), + static_cast(outBlob.data()), + actual_comparision_size / 8, + threshold, + abs_threshold); break; default: FAIL() << "Comparator for " << element_type << " element type isn't supported"; diff --git a/src/plugins/template/tests/functional/op_reference/base_reference_test.hpp b/src/plugins/template/tests/functional/op_reference/base_reference_test.hpp index 75fea35cb4e..2add89bdbda 100644 --- a/src/plugins/template/tests/functional/op_reference/base_reference_test.hpp +++ b/src/plugins/template/tests/functional/op_reference/base_reference_test.hpp @@ -55,9 +55,7 @@ ov::Tensor CreateTensor(const ov::element::Type& element_type, const std::vector // Create blob with correct input shape (not 1-dimensional). Will be used in tests with dynamic input shapes template -ov::Tensor CreateTensor(const ov::Shape& shape, - const ov::element::Type& element_type, - const std::vector& values) { +ov::Tensor CreateTensor(const ov::Shape& shape, const ov::element::Type& element_type, const std::vector& values) { ov::Tensor tensor{element_type, shape}; size_t size = sizeof(T) * values.size(); if (tensor.get_byte_size() < size) diff --git a/src/plugins/template/tests/functional/op_reference/batch_norm.cpp b/src/plugins/template/tests/functional/op_reference/batch_norm.cpp index 8e6d2873d5e..e5ac24c8df7 100644 --- a/src/plugins/template/tests/functional/op_reference/batch_norm.cpp +++ b/src/plugins/template/tests/functional/op_reference/batch_norm.cpp @@ -2,11 +2,12 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/batch_norm.hpp" + #include #include "base_reference_test.hpp" #include "openvino/op/constant.hpp" -#include "openvino/op/batch_norm.hpp" using namespace reference_tests; using namespace ov; @@ -78,8 +79,8 @@ public: private: static std::shared_ptr CreateFunction(const Shape& input_shape, - const element::Type_t& input_type, - const float epsilon) { + const element::Type_t& input_type, + const float epsilon) { Shape channel_shape{input_shape.at(1)}; auto in = std::make_shared(input_type, input_shape); auto gamma = std::make_shared(input_type, channel_shape); @@ -103,8 +104,8 @@ public: private: static std::shared_ptr CreateFunction(const Shape& input_shape, - const element::Type_t& input_type, - const float epsilon) { + const element::Type_t& input_type, + const float epsilon) { Shape channel_shape{input_shape.at(1)}; auto in = std::make_shared(input_type, input_shape); auto gamma = std::make_shared(input_type, channel_shape); @@ -130,7 +131,7 @@ std::vector generateParamsForBatchNorm() { using T = typename element_type_traits::value_type; std::vector params{ - /*------------- 2d --------------*/ + /*------------- 2d --------------*/ BatchNormParams(Shape{2, 3}, Shape{2, 3}, ET, @@ -175,7 +176,7 @@ std::vector generateParamsForBatchNorm() { std::vector{0.0, 0.0, 0.0}, std::vector{2.0, 6.0, 0.0}, 0.25), - /*------------- 4d --------------*/ + /*------------- 4d --------------*/ BatchNormParams(Shape{2, 2, 2, 1}, Shape{2, 2, 2, 1}, ET, @@ -201,41 +202,33 @@ std::vector generateParamsForBatchNorm() { std::vector{1.0, 1.0}, std::vector{1.0, 1.0}, 0.001), - BatchNormParams(Shape{2, 2, 2, 1}, - Shape{2, 2, 2, 1}, - ET, - ET, - std::vector{0.54881352f, - 0.71518934f, - 0.60276335f, - 0.54488319f, - 0.42365479f, - 0.64589411f, - 0.4375872f, - 0.89177299f}, - std::vector{-0.30327f, - 1.1561f, - -0.096382f, - -0.434702f, - -1.4011f, - 0.548275f, - -1.06187f, - 1.59295f}, - std::vector{1.0, 1.0}, - std::vector{0.0f, 0.0f}, - std::vector{0.583388f, 0.619252f}, - std::vector{0.0119972f, 0.0282681f}, - 0.001), + BatchNormParams( + Shape{2, 2, 2, 1}, + Shape{2, 2, 2, 1}, + ET, + ET, + std::vector{0.54881352f, + 0.71518934f, + 0.60276335f, + 0.54488319f, + 0.42365479f, + 0.64589411f, + 0.4375872f, + 0.89177299f}, + std::vector{-0.30327f, 1.1561f, -0.096382f, -0.434702f, -1.4011f, 0.548275f, -1.06187f, 1.59295f}, + std::vector{1.0, 1.0}, + std::vector{0.0f, 0.0f}, + std::vector{0.583388f, 0.619252f}, + std::vector{0.0119972f, 0.0282681f}, + 0.001), }; return params; } std::vector generateCombinedParamsForBatchNorm() { - const std::vector> allTypeParams{ - generateParamsForBatchNorm(), - generateParamsForBatchNorm() - }; + const std::vector> allTypeParams{generateParamsForBatchNorm(), + generateParamsForBatchNorm()}; std::vector combinedParams; @@ -246,16 +239,14 @@ std::vector generateCombinedParamsForBatchNorm() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P( - smoke_BatchNorm_With_Hardcoded_Refs, - ReferenceBatchNormV0LayerTest, - ::testing::ValuesIn(generateCombinedParamsForBatchNorm()), - ReferenceBatchNormV0LayerTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_BatchNorm_With_Hardcoded_Refs, + ReferenceBatchNormV0LayerTest, + ::testing::ValuesIn(generateCombinedParamsForBatchNorm()), + ReferenceBatchNormV0LayerTest::getTestCaseName); -INSTANTIATE_TEST_SUITE_P( - smoke_BatchNorm_With_Hardcoded_Refs, - ReferenceBatchNormV5LayerTest, - ::testing::ValuesIn(generateCombinedParamsForBatchNorm()), - ReferenceBatchNormV5LayerTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_BatchNorm_With_Hardcoded_Refs, + ReferenceBatchNormV5LayerTest, + ::testing::ValuesIn(generateCombinedParamsForBatchNorm()), + ReferenceBatchNormV5LayerTest::getTestCaseName); } // namespace diff --git a/src/plugins/template/tests/functional/op_reference/batch_to_space.cpp b/src/plugins/template/tests/functional/op_reference/batch_to_space.cpp index 7c8da263b07..10583280efd 100644 --- a/src/plugins/template/tests/functional/op_reference/batch_to_space.cpp +++ b/src/plugins/template/tests/functional/op_reference/batch_to_space.cpp @@ -4,21 +4,27 @@ #include +#include "base_reference_test.hpp" #include "openvino/opsets/opset1.hpp" #include "openvino/opsets/opset2.hpp" -#include "base_reference_test.hpp" using namespace reference_tests; using namespace ov; namespace { struct BatchToSpaceParams { - BatchToSpaceParams(const reference_tests::Tensor& dataTensor, const reference_tests::Tensor& blockShapeTensor, - const reference_tests::Tensor& cropsBeginTensor, const reference_tests::Tensor& cropsEndTensor, - const reference_tests::Tensor& expectedTensor, const std::string& testcaseName = "") : - dataTensor(dataTensor), blockShapeTensor(blockShapeTensor), - cropsBeginTensor(cropsBeginTensor), cropsEndTensor(cropsEndTensor), - expectedTensor(expectedTensor), testcaseName(testcaseName) {} + BatchToSpaceParams(const reference_tests::Tensor& dataTensor, + const reference_tests::Tensor& blockShapeTensor, + const reference_tests::Tensor& cropsBeginTensor, + const reference_tests::Tensor& cropsEndTensor, + const reference_tests::Tensor& expectedTensor, + const std::string& testcaseName = "") + : dataTensor(dataTensor), + blockShapeTensor(blockShapeTensor), + cropsBeginTensor(cropsBeginTensor), + cropsEndTensor(cropsEndTensor), + expectedTensor(expectedTensor), + testcaseName(testcaseName) {} reference_tests::Tensor dataTensor; reference_tests::Tensor blockShapeTensor; @@ -80,7 +86,7 @@ TEST_P(ReferenceBatchToSpaceLayerTest, CompareWithRefs) { template std::vector generateBatchToSpaceParams() { using T = typename element_type_traits::value_type; - std::vector batchToSpaceParams { + std::vector batchToSpaceParams{ // input_with_shape_4x3 BatchToSpaceParams( reference_tests::Tensor({4, 3}, IN_ET, std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}), @@ -126,89 +132,78 @@ std::vector generateBatchToSpaceParams() { // input_with_shape_4x1x2x3 BatchToSpaceParams( - reference_tests::Tensor({4, 1, 2, 3}, IN_ET, std::vector{1, 2, 3, 4, 5, 6, - 7, 8, 9, 10, 11, 12, - 13, 14, 15, 16, 17, 18, - 19, 20, 21, 22, 23, 24}), + reference_tests::Tensor({4, 1, 2, 3}, IN_ET, std::vector{1, 2, 3, 4, 5, 6, 7, 8, + 9, 10, 11, 12, 13, 14, 15, 16, + 17, 18, 19, 20, 21, 22, 23, 24}), reference_tests::Tensor({4}, element::i64, std::vector{1, 1, 1, 2}), reference_tests::Tensor({4}, element::i64, std::vector{0, 0, 0, 0}), reference_tests::Tensor({4}, element::i64, std::vector{0, 0, 0, 0}), - reference_tests::Tensor({2, 1, 2, 6}, IN_ET, std::vector{1, 13, 2, 14, 3, 15, - 4, 16, 5, 17, 6, 18, - 7, 19, 8, 20, 9, 21, - 10, 22, 11, 23, 12, 24}), + reference_tests::Tensor({2, 1, 2, 6}, IN_ET, std::vector{1, 13, 2, 14, 3, 15, 4, 16, 5, 17, 6, 18, + 7, 19, 8, 20, 9, 21, 10, 22, 11, 23, 12, 24}), "input_with_shape_4x1x2x3"), // input_with_shape_4x1x2x3_1 BatchToSpaceParams( - reference_tests::Tensor({4, 1, 2, 3}, IN_ET, std::vector{1, 2, 3, 4, 5, 6, - 7, 8, 9, 10, 11, 12, - 13, 14, 15, 16, 17, 18, - 19, 20, 21, 22, 23, 24}), + reference_tests::Tensor({4, 1, 2, 3}, IN_ET, std::vector{1, 2, 3, 4, 5, 6, 7, 8, + 9, 10, 11, 12, 13, 14, 15, 16, + 17, 18, 19, 20, 21, 22, 23, 24}), reference_tests::Tensor({4}, element::i64, std::vector{1, 1, 2, 1}), reference_tests::Tensor({4}, element::i64, std::vector{0, 0, 0, 0}), reference_tests::Tensor({4}, element::i64, std::vector{0, 0, 0, 0}), - reference_tests::Tensor({2, 1, 4, 3}, IN_ET, std::vector{1, 2, 3, 13, 14, 15, - 4, 5, 6, 16, 17, 18, - 7, 8, 9, 19, 20, 21, - 10, 11, 12, 22, 23, 24}), + reference_tests::Tensor({2, 1, 4, 3}, IN_ET, std::vector{1, 2, 3, 13, 14, 15, 4, 5, 6, 16, 17, 18, + 7, 8, 9, 19, 20, 21, 10, 11, 12, 22, 23, 24}), "input_with_shape_4x1x2x3_1"), // input_with_shape_4x1x2x3_2 BatchToSpaceParams( - reference_tests::Tensor({4, 1, 2, 3}, IN_ET, std::vector{1, 2, 3, 4, 5, 6, - 7, 8, 9, 10, 11, 12, - 13, 14, 15, 16, 17, 18, - 19, 20, 21, 22, 23, 24}), + reference_tests::Tensor({4, 1, 2, 3}, IN_ET, std::vector{1, 2, 3, 4, 5, 6, 7, 8, + 9, 10, 11, 12, 13, 14, 15, 16, + 17, 18, 19, 20, 21, 22, 23, 24}), reference_tests::Tensor({4}, element::i64, std::vector{1, 1, 2, 2}), reference_tests::Tensor({4}, element::i64, std::vector{0, 0, 0, 0}), reference_tests::Tensor({4}, element::i64, std::vector{0, 0, 0, 0}), - reference_tests::Tensor({1, 1, 4, 6}, IN_ET, std::vector{1, 7, 2, 8, 3, 9, - 13, 19, 14, 20, 15, 21, - 4, 10, 5, 11, 6, 12, - 16, 22, 17, 23, 18, 24}), + reference_tests::Tensor({1, 1, 4, 6}, IN_ET, std::vector{1, 7, 2, 8, 3, 9, 13, 19, 14, 20, 15, 21, + 4, 10, 5, 11, 6, 12, 16, 22, 17, 23, 18, 24}), "input_with_shape_4x1x2x3_2"), // input_with_shape_with_crop_4x1x2x3 BatchToSpaceParams( - reference_tests::Tensor({4, 1, 2, 3}, IN_ET, std::vector{1, 2, 3, 4, 5, 6, - 7, 8, 9, 10, 11, 12, - 13, 14, 15, 16, 17, 18, - 19, 20, 21, 22, 23, 24}), + reference_tests::Tensor({4, 1, 2, 3}, IN_ET, std::vector{1, 2, 3, 4, 5, 6, 7, 8, + 9, 10, 11, 12, 13, 14, 15, 16, + 17, 18, 19, 20, 21, 22, 23, 24}), reference_tests::Tensor({4}, element::i64, std::vector{1, 1, 2, 2}), reference_tests::Tensor({4}, element::i64, std::vector{0, 0, 0, 0}), reference_tests::Tensor({4}, element::i64, std::vector{0, 0, 0, 2}), - reference_tests::Tensor({1, 1, 4, 4}, IN_ET, std::vector{1, 7, 2, 8, 13, 19, 14, 20, - 4, 10, 5, 11, 16, 22, 17, 23}), + reference_tests::Tensor({1, 1, 4, 4}, + IN_ET, + std::vector{1, 7, 2, 8, 13, 19, 14, 20, 4, 10, 5, 11, 16, 22, 17, 23}), "input_with_shape_with_crop_4x1x2x3"), // input_with_shape_with_crop_4x1x2x3_1 BatchToSpaceParams( - reference_tests::Tensor({4, 1, 2, 3}, IN_ET, std::vector{1, 2, 3, 4, 5, 6, - 7, 8, 9, 10, 11, 12, - 13, 14, 15, 16, 17, 18, - 19, 20, 21, 22, 23, 24}), + reference_tests::Tensor({4, 1, 2, 3}, IN_ET, std::vector{1, 2, 3, 4, 5, 6, 7, 8, + 9, 10, 11, 12, 13, 14, 15, 16, + 17, 18, 19, 20, 21, 22, 23, 24}), reference_tests::Tensor({4}, element::i64, std::vector{1, 1, 2, 2}), reference_tests::Tensor({4}, element::i64, std::vector{0, 0, 0, 2}), reference_tests::Tensor({4}, element::i64, std::vector{0, 0, 0, 0}), - reference_tests::Tensor({1, 1, 4, 4}, IN_ET, std::vector{2, 8, 3, 9, 14, 20, 15, 21, - 5, 11, 6, 12, 17, 23, 18, 24}), + reference_tests::Tensor({1, 1, 4, 4}, + IN_ET, + std::vector{2, 8, 3, 9, 14, 20, 15, 21, 5, 11, 6, 12, 17, 23, 18, 24}), "input_with_shape_with_crop_4x1x2x3_1"), // input_with_shape_with_crop_4x1x2x3_2 BatchToSpaceParams( - reference_tests::Tensor({4, 1, 2, 3}, IN_ET, std::vector{1, 2, 3, 4, 5, 6, - 7, 8, 9, 10, 11, 12, - 13, 14, 15, 16, 17, 18, - 19, 20, 21, 22, 23, 24}), + reference_tests::Tensor({4, 1, 2, 3}, IN_ET, std::vector{1, 2, 3, 4, 5, 6, 7, 8, + 9, 10, 11, 12, 13, 14, 15, 16, + 17, 18, 19, 20, 21, 22, 23, 24}), reference_tests::Tensor({4}, element::i64, std::vector{1, 1, 2, 2}), reference_tests::Tensor({4}, element::i64, std::vector{0, 0, 1, 0}), reference_tests::Tensor({4}, element::i64, std::vector{0, 0, 1, 0}), - reference_tests::Tensor({1, 1, 2, 6}, IN_ET, std::vector{13, 19, 14, 20, 15, 21, - 4, 10, 5, 11, 6, 12}), + reference_tests::Tensor({1, 1, 2, 6}, IN_ET, std::vector{13, 19, 14, 20, 15, 21, 4, 10, 5, 11, 6, 12}), "input_with_shape_with_crop_4x1x2x3_2"), }; return batchToSpaceParams; } std::vector generateBatchToSpaceCombinedParams() { - const std::vector> batchToSpaceTypeParams { + const std::vector> batchToSpaceTypeParams{ generateBatchToSpaceParams(), generateBatchToSpaceParams(), generateBatchToSpaceParams(), @@ -230,6 +225,8 @@ std::vector generateBatchToSpaceCombinedParams() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_BatchToSpace_With_Hardcoded_Refs, ReferenceBatchToSpaceLayerTest, - testing::ValuesIn(generateBatchToSpaceCombinedParams()), ReferenceBatchToSpaceLayerTest::getTestCaseName); -} // namespace +INSTANTIATE_TEST_SUITE_P(smoke_BatchToSpace_With_Hardcoded_Refs, + ReferenceBatchToSpaceLayerTest, + testing::ValuesIn(generateBatchToSpaceCombinedParams()), + ReferenceBatchToSpaceLayerTest::getTestCaseName); +} // namespace diff --git a/src/plugins/template/tests/functional/op_reference/binary_convolution.cpp b/src/plugins/template/tests/functional/op_reference/binary_convolution.cpp index 0516be41267..1917163d832 100644 --- a/src/plugins/template/tests/functional/op_reference/binary_convolution.cpp +++ b/src/plugins/template/tests/functional/op_reference/binary_convolution.cpp @@ -2,9 +2,10 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/binary_convolution.hpp" + #include -#include "openvino/op/binary_convolution.hpp" #include "base_reference_test.hpp" #include "openvino/opsets/opset8.hpp" @@ -53,12 +54,14 @@ struct BinaryConvolutionParams { ov::CoordinateDiff padBegin; ov::CoordinateDiff padEnd; ov::Strides dialations; - ov::op::v1::BinaryConvolution::BinaryConvolutionMode mode = ov::op::v1::BinaryConvolution::BinaryConvolutionMode::XNOR_POPCOUNT; + ov::op::v1::BinaryConvolution::BinaryConvolutionMode mode = + ov::op::v1::BinaryConvolution::BinaryConvolutionMode::XNOR_POPCOUNT; float padValue; std::string testcaseName; }; -class ReferenceBinaryConvolutionLayerTest : public testing::TestWithParam, public CommonReferenceTest { +class ReferenceBinaryConvolutionLayerTest : public testing::TestWithParam, + public CommonReferenceTest { public: void SetUp() override { auto params = GetParam(); @@ -88,20 +91,21 @@ public: } private: - static std::shared_ptr CreateFunction(const BinaryConvolutionParams& params, const std::vector& filterData) { + static std::shared_ptr CreateFunction(const BinaryConvolutionParams& params, + const std::vector& filterData) { const op::PadType auto_pad{op::PadType::EXPLICIT}; const auto in = std::make_shared(params.inType, params.inputShape); auto filter = std::make_shared(ov::element::u1, params.filterShape, &filterData[0]); const auto BinaryConvolution = std::make_shared(in, - filter, - params.strides, - params.padBegin, - params.padEnd, - params.dialations, - params.mode, - params.padValue, - auto_pad); - return std::make_shared(NodeVector {BinaryConvolution}, ParameterVector {in}); + filter, + params.strides, + params.padBegin, + params.padEnd, + params.dialations, + params.mode, + params.padValue, + auto_pad); + return std::make_shared(NodeVector{BinaryConvolution}, ParameterVector{in}); } }; @@ -113,194 +117,200 @@ template std::vector generateBinaryConvolutionParams() { using T = typename element_type_traits::value_type; - std::vector binaryConvolutionParams { -// --------------------- 2D BinaryConvolution ------------------------------------------ - BinaryConvolutionParams(PartialShape {1, 1, 4, 4}, - Shape {1, 1, 3, 3}, - PartialShape {1, 1, 2, 2}, + std::vector binaryConvolutionParams{ + // --------------------- 2D BinaryConvolution ------------------------------------------ + BinaryConvolutionParams(PartialShape{1, 1, 4, 4}, + Shape{1, 1, 3, 3}, + PartialShape{1, 1, 2, 2}, IN_ET, - std::vector{1, 0, 0, 1, - 1, 1, 0, 0, - 0, 0, 0, 1, - 1, 0, 1, 1}, - std::vector{0xAA, 0x80}, // 10101010 10000000 - std::vector{1, 1, - 3, -1}, + std::vector{1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1}, + std::vector{0xAA, 0x80}, // 10101010 10000000 + std::vector{1, 1, 3, -1}, {1, 1}, {0, 0}, {0, 0}, {1, 1}), - BinaryConvolutionParams(PartialShape {1, 1, 4, 4}, - Shape {1, 1, 3, 3}, - PartialShape {1, 1, 4, 4}, + BinaryConvolutionParams(PartialShape{1, 1, 4, 4}, + Shape{1, 1, 3, 3}, + PartialShape{1, 1, 4, 4}, IN_ET, - std::vector{1, 0, 0, 1, - 1, 1, 0, 0, - 0, 0, 0, 1, - 1, 0, 1, 1}, - std::vector{0xAA, 0x80}, // 10101010 10000000 - std::vector{1, -3, -1, 1, - -3, 1, 1, -5, - -3, 3, -1, 1, - 1, -5, 1, -3}, + std::vector{1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1}, + std::vector{0xAA, 0x80}, // 10101010 10000000 + std::vector{1, -3, -1, 1, -3, 1, 1, -5, -3, 3, -1, 1, 1, -5, 1, -3}, {1, 1}, {1, 1}, {1, 1}, {1, 1}), - BinaryConvolutionParams(PartialShape {1, 1, 4, 4}, - Shape {1, 1, 3, 3}, - PartialShape {1, 1, 4, 4}, + BinaryConvolutionParams(PartialShape{1, 1, 4, 4}, + Shape{1, 1, 3, 3}, + PartialShape{1, 1, 4, 4}, IN_ET, - std::vector{1, 0, 0, 1, - 1, 1, 0, 0, - 0, 0, 0, 1, - 1, 0, 1, 1}, - std::vector{0xAA, 0x80}, // 10101010 10000000 - std::vector{3, -1, 1, 3, - -1, 1, 1, -3, - -1, 3, -1, 3, - 3, -3, 3, -1}, + std::vector{1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1}, + std::vector{0xAA, 0x80}, // 10101010 10000000 + std::vector{3, -1, 1, 3, -1, 1, 1, -3, -1, 3, -1, 3, 3, -3, 3, -1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, 1.0f), - BinaryConvolutionParams(PartialShape {1, 1, 5, 5}, - Shape {1, 1, 3, 3}, - PartialShape {1, 1, 2, 2}, + BinaryConvolutionParams( + PartialShape{1, 1, 5, 5}, + Shape{1, 1, 3, 3}, + PartialShape{1, 1, 2, 2}, + IN_ET, + std::vector{0, 1, 1, 0, 1, 1, 1, 0, 1, 0, 0, 0, 1, 0, 1, 1, 1, 0, 1, 0, 0, 0, 1, 1, 1}, + std::vector{0x2E, 0x00}, // 10101010 10000000 + std::vector{-1, 3, 1, 1}, + {2, 2}, + {0, 0}, + {0, 0}, + {1, 1}), + BinaryConvolutionParams( + PartialShape{1, 1, 7, 7}, + Shape{1, 1, 3, 3}, + PartialShape{1, 1, 3, 3}, + IN_ET, + std::vector{1, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 1, 1, 1, 0, 1, 1, 0, 0, 0, 1, + 1, 1, 0, 0, 1, 0, 0, 1, 1, 1, 1, 0, 1, 1, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0}, + std::vector{0x6B, 0x00}, // 10101010 10000000 + std::vector{-5, -3, -5, 5, 1, 3, -1, -1, 3}, + {1, 1}, + {0, 0}, + {0, 0}, + {2, 2}), + BinaryConvolutionParams( + PartialShape{1, 1, 7, 7}, + Shape{1, 1, 3, 3}, + PartialShape{1, 1, 4, 4}, + IN_ET, + std::vector{1, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 1, 1, 1, 0, 1, 1, 0, 0, 0, 1, + 1, 1, 0, 0, 1, 0, 0, 1, 1, 1, 1, 0, 1, 1, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0}, + std::vector{0x6B, 0x00}, // 10101010 10000000 + std::vector{1, 1, -1, 1, 1, -5, -5, 5, 3, -1, 3, 3, -1, -1, 3, -3}, + {2, 2}, + {2, 2}, + {2, 2}, + {2, 2}), + BinaryConvolutionParams( + PartialShape{1, 1, 7, 7}, + Shape{1, 1, 3, 3}, + PartialShape{1, 1, 4, 4}, + IN_ET, + std::vector{1, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 1, 1, 1, 0, 1, 1, 0, 0, 0, 1, + 1, 1, 0, 0, 1, 0, 0, 1, 1, 1, 1, 0, 1, 1, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0}, + std::vector{0x6B, 0x00}, // 10101010 10000000 + std::vector{3, 3, 1, -1, -1, -5, -5, 3, 1, -1, 3, 1, -3, 1, 5, -1}, + {2, 2}, + {2, 2}, + {2, 2}, + {2, 2}, + 1.0f), + BinaryConvolutionParams(PartialShape{1, 2, 4, 4}, + Shape{1, 2, 3, 3}, + PartialShape{1, 1, 2, 2}, IN_ET, - std::vector{0, 1, 1, 0, 1, - 1, 1, 0, 1, 0, - 0, 0, 1, 0, 1, - 1, 1, 0, 1, 0, - 0, 0, 1, 1, 1}, - std::vector{0x2E, 0x00}, // 10101010 10000000 - std::vector{-1, 3, - 1, 1}, - {2, 2}, - {0, 0}, - {0, 0}, - {1, 1}), - BinaryConvolutionParams(PartialShape {1, 1, 7, 7}, - Shape {1, 1, 3, 3}, - PartialShape {1, 1, 3, 3}, - IN_ET, - std::vector{1, 1, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 1, 0, 0, - 1, 1, 1, 1, 0, 1, 1, - 0, 0, 0, 1, 1, 1, 0, - 0, 1, 0, 0, 1, 1, 1, - 1, 0, 1, 1, 0, 0, 0, - 1, 1, 1, 0, 1, 0, 0}, - std::vector{0x6B, 0x00}, // 10101010 10000000 - std::vector{-5, -3, -5, - 5, 1, 3, - -1, -1, 3}, - {1, 1}, - {0, 0}, - {0, 0}, - {2, 2}), - BinaryConvolutionParams(PartialShape {1, 1, 7, 7}, - Shape {1, 1, 3, 3}, - PartialShape {1, 1, 4, 4}, - IN_ET, - std::vector{1, 1, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 1, 0, 0, - 1, 1, 1, 1, 0, 1, 1, - 0, 0, 0, 1, 1, 1, 0, - 0, 1, 0, 0, 1, 1, 1, - 1, 0, 1, 1, 0, 0, 0, - 1, 1, 1, 0, 1, 0, 0}, - std::vector{0x6B, 0x00}, // 10101010 10000000 - std::vector{1, 1, -1, 1, - 1, -5, -5, 5, - 3, -1, 3, 3, - -1, -1, 3, -3}, - {2, 2}, - {2, 2}, - {2, 2}, - {2, 2}), - BinaryConvolutionParams(PartialShape {1, 1, 7, 7}, - Shape {1, 1, 3, 3}, - PartialShape {1, 1, 4, 4}, - IN_ET, - std::vector{1, 1, 0, 0, 0, 1, 0, - 0, 0, 1, 0, 1, 0, 0, - 1, 1, 1, 1, 0, 1, 1, - 0, 0, 0, 1, 1, 1, 0, - 0, 1, 0, 0, 1, 1, 1, - 1, 0, 1, 1, 0, 0, 0, - 1, 1, 1, 0, 1, 0, 0}, - std::vector{0x6B, 0x00}, // 10101010 10000000 - std::vector{3, 3, 1, -1, - -1, -5, -5, 3, - 1, -1, 3, 1, - -3, 1, 5, -1}, - {2, 2}, - {2, 2}, - {2, 2}, - {2, 2}, - 1.0f), - BinaryConvolutionParams(PartialShape {1, 2, 4, 4}, - Shape {1, 2, 3, 3}, - PartialShape {1, 1, 2, 2}, - IN_ET, - std::vector{ - // channel 1 - 1, 0, 0, 1, - 1, 1, 0, 0, - 0, 0, 0, 1, - 1, 0, 1, 1, - // channel 2 - 0, 1, 1, 0, - 0, 0, 1, 1, - 1, 1, 1, 0, - 0, 1, 0, 0}, - std::vector{0xAA, 0xAA, 0x80}, // 10101010 10000000 - std::vector{2, 2, - 6, -2}, + std::vector{// channel 1 + 1, + 0, + 0, + 1, + 1, + 1, + 0, + 0, + 0, + 0, + 0, + 1, + 1, + 0, + 1, + 1, + // channel 2 + 0, + 1, + 1, + 0, + 0, + 0, + 1, + 1, + 1, + 1, + 1, + 0, + 0, + 1, + 0, + 0}, + std::vector{0xAA, 0xAA, 0x80}, // 10101010 10000000 + std::vector{2, 2, 6, -2}, {1, 1}, {0, 0}, {0, 0}, {1, 1}), - BinaryConvolutionParams(PartialShape {2, 1, 4, 4}, - Shape {1, 1, 3, 3}, - PartialShape {2, 1, 2, 2}, + BinaryConvolutionParams(PartialShape{2, 1, 4, 4}, + Shape{1, 1, 3, 3}, + PartialShape{2, 1, 2, 2}, IN_ET, - std::vector{ - // batch 1 - 1, 0, 0, 1, - 1, 1, 0, 0, - 0, 0, 0, 1, - 1, 0, 1, 1, - // batch 2 - 0, 0, 0, 0, - 1, 1, 1, 0, - 1, 1, 0, 1, - 1, 0, 1, 0}, - std::vector{0xAA, 0x80}, // 10101010 10000000 - std::vector{ - // batch 1 - 1, 1, - 3, -1, - // batch 2 - -3, 3, - 5, -7}, + std::vector{// batch 1 + 1, + 0, + 0, + 1, + 1, + 1, + 0, + 0, + 0, + 0, + 0, + 1, + 1, + 0, + 1, + 1, + // batch 2 + 0, + 0, + 0, + 0, + 1, + 1, + 1, + 0, + 1, + 1, + 0, + 1, + 1, + 0, + 1, + 0}, + std::vector{0xAA, 0x80}, // 10101010 10000000 + std::vector{ // batch 1 + 1, + 1, + 3, + -1, + // batch 2 + -3, + 3, + 5, + -7}, {1, 1}, {0, 0}, {0, 0}, - {1, 1}) - }; + {1, 1})}; return binaryConvolutionParams; } std::vector generateBinaryConvolutionCombinedParams() { - const std::vector> binaryConvolutionTypeParams { + const std::vector> binaryConvolutionTypeParams{ generateBinaryConvolutionParams(), generateBinaryConvolutionParams(), generateBinaryConvolutionParams(), - generateBinaryConvolutionParams() - }; + generateBinaryConvolutionParams()}; std::vector combinedParams; for (const auto& params : binaryConvolutionTypeParams) { @@ -309,7 +319,9 @@ std::vector generateBinaryConvolutionCombinedParams() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_BinaryConvolution_With_Hardcoded_Refs, ReferenceBinaryConvolutionLayerTest, - testing::ValuesIn(generateBinaryConvolutionCombinedParams()), ReferenceBinaryConvolutionLayerTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_BinaryConvolution_With_Hardcoded_Refs, + ReferenceBinaryConvolutionLayerTest, + testing::ValuesIn(generateBinaryConvolutionCombinedParams()), + ReferenceBinaryConvolutionLayerTest::getTestCaseName); -} // namespace +} // namespace diff --git a/src/plugins/template/tests/functional/op_reference/broadcast.cpp b/src/plugins/template/tests/functional/op_reference/broadcast.cpp index e1038d23ec4..5cb9712c8b2 100644 --- a/src/plugins/template/tests/functional/op_reference/broadcast.cpp +++ b/src/plugins/template/tests/functional/op_reference/broadcast.cpp @@ -4,20 +4,23 @@ #include +#include "base_reference_test.hpp" #include "openvino/opsets/opset1.hpp" #include "openvino/opsets/opset3.hpp" -#include "base_reference_test.hpp" using namespace reference_tests; using namespace ov; namespace { struct BroadcastParams { - BroadcastParams( - const reference_tests::Tensor& dataTensor, const reference_tests::Tensor& targetShapeTensor, - const reference_tests::Tensor& expectedTensor, const std::string& testcaseName = "") : - dataTensor(dataTensor), targetShapeTensor(targetShapeTensor), - expectedTensor(expectedTensor), testcaseName(testcaseName) {} + BroadcastParams(const reference_tests::Tensor& dataTensor, + const reference_tests::Tensor& targetShapeTensor, + const reference_tests::Tensor& expectedTensor, + const std::string& testcaseName = "") + : dataTensor(dataTensor), + targetShapeTensor(targetShapeTensor), + expectedTensor(expectedTensor), + testcaseName(testcaseName) {} reference_tests::Tensor dataTensor; reference_tests::Tensor targetShapeTensor; @@ -55,9 +58,10 @@ private: static std::shared_ptr CreateFunction(const BroadcastParams& params) { const auto A = std::make_shared(params.dataTensor.type, params.dataTensor.shape); const auto f = std::make_shared( - std::make_shared(A, opset1::Constant::create(params.targetShapeTensor.type, - params.targetShapeTensor.shape, - params.targetShapeTensor.data.data())), + std::make_shared(A, + opset1::Constant::create(params.targetShapeTensor.type, + params.targetShapeTensor.shape, + params.targetShapeTensor.data.data())), ParameterVector{A}); return f; } @@ -72,9 +76,10 @@ private: static std::shared_ptr CreateFunction(const BroadcastParams& params) { const auto A = std::make_shared(params.dataTensor.type, params.dataTensor.shape); const auto f = std::make_shared( - std::make_shared(A, opset1::Constant::create(params.targetShapeTensor.type, - params.targetShapeTensor.shape, - params.targetShapeTensor.data.data())), + std::make_shared(A, + opset1::Constant::create(params.targetShapeTensor.type, + params.targetShapeTensor.shape, + params.targetShapeTensor.data.data())), ParameterVector{A}); return f; } @@ -85,17 +90,19 @@ TEST_P(ReferenceBroadcastTestV3, CompareWithRefs) { } struct BroadcastParamsExplicitAxis : BroadcastParams { - BroadcastParamsExplicitAxis( - const reference_tests::Tensor& dataTensor, const reference_tests::Tensor& targetShapeTensor, - const reference_tests::Tensor& axesMappingTensor, const reference_tests::Tensor& expectedTensor, - const std::string& testcaseName = "") : - BroadcastParams(dataTensor, targetShapeTensor, expectedTensor, testcaseName), - axesMappingTensor(axesMappingTensor) {} + BroadcastParamsExplicitAxis(const reference_tests::Tensor& dataTensor, + const reference_tests::Tensor& targetShapeTensor, + const reference_tests::Tensor& axesMappingTensor, + const reference_tests::Tensor& expectedTensor, + const std::string& testcaseName = "") + : BroadcastParams(dataTensor, targetShapeTensor, expectedTensor, testcaseName), + axesMappingTensor(axesMappingTensor) {} reference_tests::Tensor axesMappingTensor; }; -class ReferenceBroadcastTestExplicitAxis : public testing::TestWithParam, public CommonReferenceTest { +class ReferenceBroadcastTestExplicitAxis : public testing::TestWithParam, + public CommonReferenceTest { public: void SetUp() override { auto params = GetParam(); @@ -144,12 +151,14 @@ TEST_P(ReferenceBroadcastTestExplicitAxis, CompareWithRefs) { } struct BroadcastParamsTestHelper { - BroadcastParamsTestHelper( - const Shape& shapeA, - const Shape& shapeR, - const AxisSet& axes, const std::string& testcaseName = "") : - shapeA(shapeA), shapeR(shapeR), - axes(axes), testcaseName(testcaseName) {} + BroadcastParamsTestHelper(const Shape& shapeA, + const Shape& shapeR, + const AxisSet& axes, + const std::string& testcaseName = "") + : shapeA(shapeA), + shapeR(shapeR), + axes(axes), + testcaseName(testcaseName) {} Shape shapeA; Shape shapeR; @@ -157,7 +166,8 @@ struct BroadcastParamsTestHelper { std::string testcaseName; }; -class ReferenceBroadcastTestTestHelper : public testing::TestWithParam, public CommonReferenceTest { +class ReferenceBroadcastTestTestHelper : public testing::TestWithParam, + public CommonReferenceTest { public: void SetUp() override { auto params = GetParam(); @@ -197,7 +207,8 @@ private: const auto shape_const = opset1::Constant::create(element::u64, Shape{params.shapeR.size()}, params.shapeR); std::shared_ptr broadcast; if (params.axes.size() > 0) { - auto axes_const = opset1::Constant::create(element::i64, Shape{params.axes.size()}, params.axes.to_vector()); + auto axes_const = + opset1::Constant::create(element::i64, Shape{params.axes.size()}, params.axes.to_vector()); broadcast = std::make_shared(A, shape_const, axes_const); } else { broadcast = std::make_shared(A, shape_const); @@ -209,7 +220,7 @@ private: protected: void GenerateRefOutData() { actualOutData.clear(); - for (const auto &output : executableNetwork.outputs()) { + for (const auto& output : executableNetwork.outputs()) { actualOutData.emplace_back(inferRequest.get_tensor(output)); } refOutData = actualOutData; @@ -229,14 +240,14 @@ class ReferenceBroadcastTestExplicitAxisReversed : public ReferenceBroadcastTest private: static std::shared_ptr CreateFunction(const BroadcastParamsExplicitAxis& params) { const auto A = std::make_shared(params.dataTensor.type, params.dataTensor.shape); - auto broadcast = std::make_shared( - A, - opset1::Constant::create(params.targetShapeTensor.type, - params.targetShapeTensor.shape, - params.targetShapeTensor.data.data()), - opset1::Constant::create(params.axesMappingTensor.type, - params.axesMappingTensor.shape, - params.axesMappingTensor.data.data())); + auto broadcast = + std::make_shared(A, + opset1::Constant::create(params.targetShapeTensor.type, + params.targetShapeTensor.shape, + params.targetShapeTensor.data.data()), + opset1::Constant::create(params.axesMappingTensor.type, + params.axesMappingTensor.shape, + params.axesMappingTensor.data.data())); auto reverse = std::make_shared(broadcast, opset1::Constant::create(element::i64, {1}, {1}), opset1::Reverse::Mode::INDEX); @@ -252,38 +263,33 @@ TEST_P(ReferenceBroadcastTestExplicitAxisReversed, CompareWithRefs) { template std::vector generateParams() { using T = typename element_type_traits::value_type; - std::vector params { - BroadcastParams( - reference_tests::Tensor(ET, {}, std::vector{6}), - reference_tests::Tensor(element::u64, {1}, std::vector{4}), - reference_tests::Tensor(ET, {4}, std::vector{6, 6, 6, 6}), - "broadcast_scalar_vector"), - BroadcastParams( - reference_tests::Tensor(ET, {}, std::vector{6}), - reference_tests::Tensor(element::u64, {2}, std::vector{2, 2}), - reference_tests::Tensor(ET, {2, 2}, std::vector{6, 6, 6, 6}), - "broadcast_scalar_matrix"), - BroadcastParams( - reference_tests::Tensor(ET, {}, std::vector{6}), - reference_tests::Tensor(element::u64, {3}, std::vector{2, 2, 2}), - reference_tests::Tensor(ET, {2, 2, 2}, std::vector{6, 6, 6, 6, 6, 6, 6, 6}), - "broadcast_scalar_tensor"), - BroadcastParams( - reference_tests::Tensor(ET, {2, 2, 2}, std::vector{2, 4, 6, 8, 16, 32, 64, 127}), - reference_tests::Tensor(element::u64, {3}, std::vector{2, 2, 2}), - reference_tests::Tensor(ET, {2, 2, 2}, std::vector{2, 4, 6, 8, 16, 32, 64, 127}), - "broadcast_trivial"), - BroadcastParams( - reference_tests::Tensor(ET, {2, 2}, std::vector{1, 2, 3, 4}), - reference_tests::Tensor(element::u64, {3}, std::vector{2, 2, 2}), - reference_tests::Tensor(ET, {2, 2, 2}, std::vector{1, 2, 3, 4, 1, 2, 3, 4}), - "broadcast_matrix_0"), + std::vector params{ + BroadcastParams(reference_tests::Tensor(ET, {}, std::vector{6}), + reference_tests::Tensor(element::u64, {1}, std::vector{4}), + reference_tests::Tensor(ET, {4}, std::vector{6, 6, 6, 6}), + "broadcast_scalar_vector"), + BroadcastParams(reference_tests::Tensor(ET, {}, std::vector{6}), + reference_tests::Tensor(element::u64, {2}, std::vector{2, 2}), + reference_tests::Tensor(ET, {2, 2}, std::vector{6, 6, 6, 6}), + "broadcast_scalar_matrix"), + BroadcastParams(reference_tests::Tensor(ET, {}, std::vector{6}), + reference_tests::Tensor(element::u64, {3}, std::vector{2, 2, 2}), + reference_tests::Tensor(ET, {2, 2, 2}, std::vector{6, 6, 6, 6, 6, 6, 6, 6}), + "broadcast_scalar_tensor"), + BroadcastParams(reference_tests::Tensor(ET, {2, 2, 2}, std::vector{2, 4, 6, 8, 16, 32, 64, 127}), + reference_tests::Tensor(element::u64, {3}, std::vector{2, 2, 2}), + reference_tests::Tensor(ET, {2, 2, 2}, std::vector{2, 4, 6, 8, 16, 32, 64, 127}), + "broadcast_trivial"), + BroadcastParams(reference_tests::Tensor(ET, {2, 2}, std::vector{1, 2, 3, 4}), + reference_tests::Tensor(element::u64, {3}, std::vector{2, 2, 2}), + reference_tests::Tensor(ET, {2, 2, 2}, std::vector{1, 2, 3, 4, 1, 2, 3, 4}), + "broadcast_matrix_0"), }; return params; } std::vector generateCombinedParams() { - const std::vector> generatedParams { + const std::vector> generatedParams{ generateParams(), generateParams(), generateParams(), @@ -305,22 +311,25 @@ std::vector generateCombinedParams() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_Broadcast_With_Hardcoded_Refs, ReferenceBroadcastTest, - testing::ValuesIn(generateCombinedParams()), ReferenceBroadcastTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_Broadcast_With_Hardcoded_Refs, + ReferenceBroadcastTest, + testing::ValuesIn(generateCombinedParams()), + ReferenceBroadcastTest::getTestCaseName); -INSTANTIATE_TEST_SUITE_P(smoke_Broadcast_With_Hardcoded_Refs, ReferenceBroadcastTestV3, - testing::ValuesIn(generateCombinedParams()), ReferenceBroadcastTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_Broadcast_With_Hardcoded_Refs, + ReferenceBroadcastTestV3, + testing::ValuesIn(generateCombinedParams()), + ReferenceBroadcastTest::getTestCaseName); template std::vector generateParamsExplicitAxis() { using T = typename element_type_traits::value_type; - std::vector params { - BroadcastParamsExplicitAxis( - reference_tests::Tensor(ET, {}, std::vector{6}), - reference_tests::Tensor(element::u64, {2}, std::vector{1, 2}), - reference_tests::Tensor(element::i64, {1}, std::vector{0}), - reference_tests::Tensor(ET, {1, 2}, std::vector{6, 6}), - "broadcast_scalar_vector_explicit_axis_0"), + std::vector params{ + BroadcastParamsExplicitAxis(reference_tests::Tensor(ET, {}, std::vector{6}), + reference_tests::Tensor(element::u64, {2}, std::vector{1, 2}), + reference_tests::Tensor(element::i64, {1}, std::vector{0}), + reference_tests::Tensor(ET, {1, 2}, std::vector{6, 6}), + "broadcast_scalar_vector_explicit_axis_0"), BroadcastParamsExplicitAxis( reference_tests::Tensor(ET, {3}, std::vector{1, 2, 3}), reference_tests::Tensor(element::u64, {2}, std::vector{3, 4}), @@ -333,30 +342,27 @@ std::vector generateParamsExplicitAxis() { reference_tests::Tensor(element::i64, {1}, std::vector{1}), reference_tests::Tensor(ET, {3, 4}, std::vector{1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4}), "broadcast_vector_rowwise"), - BroadcastParamsExplicitAxis( - reference_tests::Tensor(ET, {1}, std::vector{4}), - reference_tests::Tensor(element::u64, {2}, std::vector{3, 1}), - reference_tests::Tensor(element::i64, {1}, std::vector{1}), - reference_tests::Tensor(ET, {3, 1}, std::vector{4, 4, 4}), - "broadcast_scalar_to_matrix"), - BroadcastParamsExplicitAxis( - reference_tests::Tensor(ET, {2, 2}, std::vector{1, 2, 3, 4}), - reference_tests::Tensor(element::u64, {3}, std::vector{2, 2, 2}), - reference_tests::Tensor(element::i64, {2}, std::vector{0, 2}), - reference_tests::Tensor(ET, {2, 2, 2}, std::vector{1, 2, 1, 2, 3, 4, 3, 4}), - "broadcast_matrix_1"), - BroadcastParamsExplicitAxis( - reference_tests::Tensor(ET, {2, 2}, std::vector{1, 2, 3, 4}), - reference_tests::Tensor(element::u64, {3}, std::vector{2, 2, 2}), - reference_tests::Tensor(element::i64, {2}, std::vector{0, 1}), - reference_tests::Tensor(ET, {2, 2, 2}, std::vector{1, 1, 2, 2, 3, 3, 4, 4}), - "broadcast_matrix_2"), + BroadcastParamsExplicitAxis(reference_tests::Tensor(ET, {1}, std::vector{4}), + reference_tests::Tensor(element::u64, {2}, std::vector{3, 1}), + reference_tests::Tensor(element::i64, {1}, std::vector{1}), + reference_tests::Tensor(ET, {3, 1}, std::vector{4, 4, 4}), + "broadcast_scalar_to_matrix"), + BroadcastParamsExplicitAxis(reference_tests::Tensor(ET, {2, 2}, std::vector{1, 2, 3, 4}), + reference_tests::Tensor(element::u64, {3}, std::vector{2, 2, 2}), + reference_tests::Tensor(element::i64, {2}, std::vector{0, 2}), + reference_tests::Tensor(ET, {2, 2, 2}, std::vector{1, 2, 1, 2, 3, 4, 3, 4}), + "broadcast_matrix_1"), + BroadcastParamsExplicitAxis(reference_tests::Tensor(ET, {2, 2}, std::vector{1, 2, 3, 4}), + reference_tests::Tensor(element::u64, {3}, std::vector{2, 2, 2}), + reference_tests::Tensor(element::i64, {2}, std::vector{0, 1}), + reference_tests::Tensor(ET, {2, 2, 2}, std::vector{1, 1, 2, 2, 3, 3, 4, 4}), + "broadcast_matrix_2"), }; return params; } std::vector generateCombinedParamsExplicitAxis() { - const std::vector> generatedParams { + const std::vector> generatedParams{ generateParamsExplicitAxis(), generateParamsExplicitAxis(), generateParamsExplicitAxis(), @@ -378,102 +384,36 @@ std::vector generateCombinedParamsExplicitAxis() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_Broadcast_With_Hardcoded_Refs, ReferenceBroadcastTestExplicitAxis, - testing::ValuesIn(generateCombinedParamsExplicitAxis()), ReferenceBroadcastTestExplicitAxis::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_Broadcast_With_Hardcoded_Refs, + ReferenceBroadcastTestExplicitAxis, + testing::ValuesIn(generateCombinedParamsExplicitAxis()), + ReferenceBroadcastTestExplicitAxis::getTestCaseName); std::vector generateParamsTestHelper() { - std::vector params { - BroadcastParamsTestHelper( - {2}, - {3, 2, 4}, - {1}, - "broadcast_algo_vector_middle"), - BroadcastParamsTestHelper( - {2}, - {3, 2}, - {1}, - "broadcast_algo_vector_forward_2"), - BroadcastParamsTestHelper( - {2}, - {4, 3, 2}, - {2}, - "broadcast_algo_vector_forward_3"), - BroadcastParamsTestHelper( - {2}, - {5, 4, 3, 2}, - {3}, - "broadcast_algo_vector_forward_4"), - BroadcastParamsTestHelper( - {}, - {5, 4, 3, 2}, - {}, - "broadcast_algo_scalar"), - BroadcastParamsTestHelper( - {2}, - {2, 3}, - {0}, - "broadcast_algo_vector_backward_2"), - BroadcastParamsTestHelper( - {2}, - {2, 3, 4}, - {0}, - "broadcast_algo_vector_backward_3"), - BroadcastParamsTestHelper( - {2}, - {2, 3, 4, 5}, - {0}, - "broadcast_algo_vector_backward_4"), - BroadcastParamsTestHelper( - {4, 5}, - {2, 3, 4, 5}, - {2, 3}, - "broadcast_algo_matrix_backward_4"), - BroadcastParamsTestHelper( - {3, 5}, - {2, 3, 4, 5}, - {1, 3}, - "broadcast_algo_matrix_stride_1"), - BroadcastParamsTestHelper( - {3, 4}, - {2, 3, 4, 5}, - {1, 2}, - "broadcast_algo_matrix_stride_2"), - BroadcastParamsTestHelper( - {2, 4}, - {2, 3, 4, 5}, - {0, 2}, - "broadcast_algo_matrix_stride_3"), - BroadcastParamsTestHelper( - {2, 3, 4}, - {5, 2, 3, 4}, - {1, 2, 3}, - "broadcast_algo_3d_backward"), - BroadcastParamsTestHelper( - {2, 3, 4}, - {2, 5, 3, 4}, - {0, 2, 3}, - "broadcast_algo_3d_stride_1"), - BroadcastParamsTestHelper( - {2, 3, 4}, - {2, 3, 5, 4}, - {0, 1, 3}, - "broadcast_algo_3d_stride_2"), - BroadcastParamsTestHelper( - {3, 1}, - {2, 3, 3}, - {1, 2}, - "broadcast_algo_3d_diffrent_rank"), - BroadcastParamsTestHelper( - {2, 3, 1, 1}, - {2, 3, 4, 5}, - {0, 1, 2, 3}, - "broadcast_algo_4d_same_rank"), + std::vector params{ + BroadcastParamsTestHelper({2}, {3, 2, 4}, {1}, "broadcast_algo_vector_middle"), + BroadcastParamsTestHelper({2}, {3, 2}, {1}, "broadcast_algo_vector_forward_2"), + BroadcastParamsTestHelper({2}, {4, 3, 2}, {2}, "broadcast_algo_vector_forward_3"), + BroadcastParamsTestHelper({2}, {5, 4, 3, 2}, {3}, "broadcast_algo_vector_forward_4"), + BroadcastParamsTestHelper({}, {5, 4, 3, 2}, {}, "broadcast_algo_scalar"), + BroadcastParamsTestHelper({2}, {2, 3}, {0}, "broadcast_algo_vector_backward_2"), + BroadcastParamsTestHelper({2}, {2, 3, 4}, {0}, "broadcast_algo_vector_backward_3"), + BroadcastParamsTestHelper({2}, {2, 3, 4, 5}, {0}, "broadcast_algo_vector_backward_4"), + BroadcastParamsTestHelper({4, 5}, {2, 3, 4, 5}, {2, 3}, "broadcast_algo_matrix_backward_4"), + BroadcastParamsTestHelper({3, 5}, {2, 3, 4, 5}, {1, 3}, "broadcast_algo_matrix_stride_1"), + BroadcastParamsTestHelper({3, 4}, {2, 3, 4, 5}, {1, 2}, "broadcast_algo_matrix_stride_2"), + BroadcastParamsTestHelper({2, 4}, {2, 3, 4, 5}, {0, 2}, "broadcast_algo_matrix_stride_3"), + BroadcastParamsTestHelper({2, 3, 4}, {5, 2, 3, 4}, {1, 2, 3}, "broadcast_algo_3d_backward"), + BroadcastParamsTestHelper({2, 3, 4}, {2, 5, 3, 4}, {0, 2, 3}, "broadcast_algo_3d_stride_1"), + BroadcastParamsTestHelper({2, 3, 4}, {2, 3, 5, 4}, {0, 1, 3}, "broadcast_algo_3d_stride_2"), + BroadcastParamsTestHelper({3, 1}, {2, 3, 3}, {1, 2}, "broadcast_algo_3d_diffrent_rank"), + BroadcastParamsTestHelper({2, 3, 1, 1}, {2, 3, 4, 5}, {0, 1, 2, 3}, "broadcast_algo_4d_same_rank"), }; return params; } std::vector generateCombinedParamsTestHelper() { - const std::vector> generatedParams { + const std::vector> generatedParams{ generateParamsTestHelper(), }; std::vector combinedParams; @@ -484,13 +424,15 @@ std::vector generateCombinedParamsTestHelper() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_Broadcast_With_Hardcoded_Refs, ReferenceBroadcastTestTestHelper, - testing::ValuesIn(generateCombinedParamsTestHelper()), ReferenceBroadcastTestTestHelper::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_Broadcast_With_Hardcoded_Refs, + ReferenceBroadcastTestTestHelper, + testing::ValuesIn(generateCombinedParamsTestHelper()), + ReferenceBroadcastTestTestHelper::getTestCaseName); template std::vector generateParamsExplicitAxisReversed() { using T = typename element_type_traits::value_type; - std::vector params { + std::vector params{ BroadcastParamsExplicitAxis( reference_tests::Tensor(ET, {4}, std::vector{1, 2, 3, 4}), reference_tests::Tensor(element::u64, {2}, std::vector{3, 4}), @@ -502,7 +444,7 @@ std::vector generateParamsExplicitAxisReversed() { } std::vector generateCombinedParamsExplicitAxisReversed() { - const std::vector> generatedParams { + const std::vector> generatedParams{ generateParamsExplicitAxisReversed(), generateParamsExplicitAxisReversed(), generateParamsExplicitAxisReversed(), @@ -524,6 +466,8 @@ std::vector generateCombinedParamsExplicitAxisRever return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_Broadcast_With_Hardcoded_Refs, ReferenceBroadcastTestExplicitAxisReversed, - testing::ValuesIn(generateCombinedParamsExplicitAxisReversed()), ReferenceBroadcastTestExplicitAxis::getTestCaseName); -} // namespace +INSTANTIATE_TEST_SUITE_P(smoke_Broadcast_With_Hardcoded_Refs, + ReferenceBroadcastTestExplicitAxisReversed, + testing::ValuesIn(generateCombinedParamsExplicitAxisReversed()), + ReferenceBroadcastTestExplicitAxis::getTestCaseName); +} // namespace diff --git a/src/plugins/template/tests/functional/op_reference/bucketize.cpp b/src/plugins/template/tests/functional/op_reference/bucketize.cpp index c26a21a8a77..a26caf7f31a 100644 --- a/src/plugins/template/tests/functional/op_reference/bucketize.cpp +++ b/src/plugins/template/tests/functional/op_reference/bucketize.cpp @@ -2,9 +2,10 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/bucketize.hpp" + #include -#include "openvino/op/bucketize.hpp" #include "base_reference_test.hpp" using namespace reference_tests; @@ -12,9 +13,15 @@ using namespace ov; struct BucketizeParams { template - BucketizeParams(const element::Type& input_type, const PartialShape& input_pshape, const std::vector& input, - const element::Type& bucket_type, const PartialShape& bucket_pshape, const std::vector& buckets, bool with_right_bound, - const element::Type& output_type, const std::vector& expected_output) + BucketizeParams(const element::Type& input_type, + const PartialShape& input_pshape, + const std::vector& input, + const element::Type& bucket_type, + const PartialShape& bucket_pshape, + const std::vector& buckets, + bool with_right_bound, + const element::Type& output_type, + const std::vector& expected_output) : input_type(input_type), input_pshape(input_pshape), input(CreateTensor(input_type, input)), @@ -40,8 +47,12 @@ class ReferenceBucketizeLayerTest : public testing::TestWithParam CreateFunction(const element::Type& input_type, const PartialShape& input_pshape, - const element::Type& bucket_type, const PartialShape& bucket_pshape, - const bool with_right_bound, const element::Type& output_type) { + static std::shared_ptr CreateFunction(const element::Type& input_type, + const PartialShape& input_pshape, + const element::Type& bucket_type, + const PartialShape& bucket_pshape, + const bool with_right_bound, + const element::Type& output_type) { auto data = std::make_shared(input_type, input_pshape); auto buckets = std::make_shared(bucket_type, bucket_pshape); - return std::make_shared(std::make_shared(data, buckets, output_type, with_right_bound), - ParameterVector {data, buckets}); + return std::make_shared( + std::make_shared(data, buckets, output_type, with_right_bound), + ParameterVector{data, buckets}); } }; @@ -73,26 +88,27 @@ TEST_P(ReferenceBucketizeLayerTest, CompareWithHardcodedRefs) { Exec(); } -INSTANTIATE_TEST_SUITE_P(smoke_Bucketize_With_Hardcoded_Refs, ReferenceBucketizeLayerTest, +INSTANTIATE_TEST_SUITE_P(smoke_Bucketize_With_Hardcoded_Refs, + ReferenceBucketizeLayerTest, ::testing::Values( // fp32, int32, with_right_bound BucketizeParams(element::f32, - PartialShape {10, 1}, - std::vector {8.f, 1.f, 2.f, 1.1f, 8.f, 10.f, 1.f, 10.2f, 0.f, 20.f}, + PartialShape{10, 1}, + std::vector{8.f, 1.f, 2.f, 1.1f, 8.f, 10.f, 1.f, 10.2f, 0.f, 20.f}, element::i32, - PartialShape {4}, - std::vector {1, 4, 10, 20}, + PartialShape{4}, + std::vector{1, 4, 10, 20}, true, element::i32, - std::vector {2, 0, 1, 1, 2, 2, 0, 3, 0, 3}), + std::vector{2, 0, 1, 1, 2, 2, 0, 3, 0, 3}), // fp32, int32, with_right_bound BucketizeParams(element::i32, - PartialShape {1, 1, 10}, - std::vector {8, 1, 2, 1, 8, 5, 1, 5, 0, 20}, + PartialShape{1, 1, 10}, + std::vector{8, 1, 2, 1, 8, 5, 1, 5, 0, 20}, element::i32, - PartialShape {4}, - std::vector {1, 4, 10, 20}, + PartialShape{4}, + std::vector{1, 4, 10, 20}, false, element::i32, - std::vector {2, 1, 1, 1, 2, 2, 1, 2, 0, 4})), + std::vector{2, 1, 1, 1, 2, 2, 1, 2, 0, 4})), ReferenceBucketizeLayerTest::getTestCaseName); diff --git a/src/plugins/template/tests/functional/op_reference/ceiling.cpp b/src/plugins/template/tests/functional/op_reference/ceiling.cpp index 0d351de47b6..6362b9de86d 100644 --- a/src/plugins/template/tests/functional/op_reference/ceiling.cpp +++ b/src/plugins/template/tests/functional/op_reference/ceiling.cpp @@ -2,10 +2,12 @@ // SPDX-License-Identifier: Apache-2.0 // -#include -#include "base_reference_test.hpp" #include "openvino/op/ceiling.hpp" +#include + +#include "base_reference_test.hpp" + using namespace ov; using namespace reference_tests; @@ -14,9 +16,9 @@ namespace { struct CeilingParams { template CeilingParams(const PartialShape& shape, - const element::Type& iType, - const std::vector& iValues, - const std::vector& oValues) + const element::Type& iType, + const std::vector& iValues, + const std::vector& oValues) : pshape(shape), inType(iType), outType(iType), @@ -50,11 +52,11 @@ public: private: static std::shared_ptr CreateFunction(const PartialShape& input_shape, - const element::Type& input_type, - const element::Type& expected_output_type) { + const element::Type& input_type, + const element::Type& expected_output_type) { const auto in = std::make_shared(input_type, input_shape); const auto ceiling = std::make_shared(in); - return std::make_shared(NodeVector {ceiling}, ParameterVector {in}); + return std::make_shared(NodeVector{ceiling}, ParameterVector{in}); } }; @@ -66,12 +68,10 @@ template std::vector generateParamsForCeilingFloat() { using T = typename element_type_traits::value_type; - std::vector params{ - CeilingParams(ov::PartialShape{4}, - IN_ET, - std::vector{-2.5f, -2.0f, 0.3f, 4.8f}, - std::vector{-2.0f, -2.0f, 1.0f, 5.0f}) - }; + std::vector params{CeilingParams(ov::PartialShape{4}, + IN_ET, + std::vector{-2.5f, -2.0f, 0.3f, 4.8f}, + std::vector{-2.0f, -2.0f, 1.0f, 5.0f})}; return params; } @@ -79,12 +79,10 @@ template std::vector generateParamsForCeilingInt64() { using T = typename element_type_traits::value_type; - std::vector params{ - CeilingParams(ov::PartialShape{3}, - IN_ET, - std::vector{0, 1, 0x4000000000000001}, - std::vector{0, 1, 0x4000000000000001}) - }; + std::vector params{CeilingParams(ov::PartialShape{3}, + IN_ET, + std::vector{0, 1, 0x4000000000000001}, + std::vector{0, 1, 0x4000000000000001})}; return params; } @@ -92,12 +90,10 @@ template std::vector generateParamsForCeilingInt32() { using T = typename element_type_traits::value_type; - std::vector params{ - CeilingParams(ov::PartialShape{4}, - IN_ET, - std::vector{2, 136314888, 0x40000010, 0x40000001}, - std::vector{2, 136314888, 0x40000010, 0x40000001}) - }; + std::vector params{CeilingParams(ov::PartialShape{4}, + IN_ET, + std::vector{2, 136314888, 0x40000010, 0x40000001}, + std::vector{2, 136314888, 0x40000010, 0x40000001})}; return params; } @@ -105,28 +101,24 @@ template std::vector generateParamsForCeilingInt() { using T = typename element_type_traits::value_type; - std::vector params{ - CeilingParams(ov::PartialShape{4}, - IN_ET, - std::vector{2, 64, 0x40, 0x01}, - std::vector{2, 64, 0x40, 0x01}) - }; + std::vector params{CeilingParams(ov::PartialShape{4}, + IN_ET, + std::vector{2, 64, 0x40, 0x01}, + std::vector{2, 64, 0x40, 0x01})}; return params; } std::vector generateCombinedParamsForCeiling() { - const std::vector> allTypeParams{ - generateParamsForCeilingFloat(), - generateParamsForCeilingFloat(), - generateParamsForCeilingInt64(), - generateParamsForCeilingInt32(), - generateParamsForCeilingInt(), - generateParamsForCeilingInt(), - generateParamsForCeilingInt64(), - generateParamsForCeilingInt32(), - generateParamsForCeilingInt(), - generateParamsForCeilingInt() - }; + const std::vector> allTypeParams{generateParamsForCeilingFloat(), + generateParamsForCeilingFloat(), + generateParamsForCeilingInt64(), + generateParamsForCeilingInt32(), + generateParamsForCeilingInt(), + generateParamsForCeilingInt(), + generateParamsForCeilingInt64(), + generateParamsForCeilingInt32(), + generateParamsForCeilingInt(), + generateParamsForCeilingInt()}; std::vector combinedParams; @@ -137,10 +129,9 @@ std::vector generateCombinedParamsForCeiling() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P( - smoke_Ceiling_With_Hardcoded_Refs, - ReferenceCeilingLayerTest, - ::testing::ValuesIn(generateCombinedParamsForCeiling()), - ReferenceCeilingLayerTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_Ceiling_With_Hardcoded_Refs, + ReferenceCeilingLayerTest, + ::testing::ValuesIn(generateCombinedParamsForCeiling()), + ReferenceCeilingLayerTest::getTestCaseName); } // namespace diff --git a/src/plugins/template/tests/functional/op_reference/clamp.cpp b/src/plugins/template/tests/functional/op_reference/clamp.cpp index f31068f5945..be977d60d16 100644 --- a/src/plugins/template/tests/functional/op_reference/clamp.cpp +++ b/src/plugins/template/tests/functional/op_reference/clamp.cpp @@ -2,9 +2,10 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/clamp.hpp" + #include -#include "openvino/op/clamp.hpp" #include "base_reference_test.hpp" using namespace reference_tests; @@ -13,8 +14,12 @@ using namespace ov; namespace { struct ClampParams { template - ClampParams(const ov::PartialShape& shape, const ov::element::Type& iType, const std::vector& iValues, const std::vector& oValues, - const double min, const double max) + ClampParams(const ov::PartialShape& shape, + const ov::element::Type& iType, + const std::vector& iValues, + const std::vector& oValues, + const double min, + const double max) : min(min), max(max), pshape(shape), @@ -53,11 +58,14 @@ public: } private: - static std::shared_ptr CreateFunction(const ov::PartialShape& input_shape, const ov::element::Type& input_type, - const ov::element::Type& expected_output_type, const double min, const double max) { + static std::shared_ptr CreateFunction(const ov::PartialShape& input_shape, + const ov::element::Type& input_type, + const ov::element::Type& expected_output_type, + const double min, + const double max) { const auto in = std::make_shared(input_type, input_shape); const auto Clamp = std::make_shared(in, min, max); - return std::make_shared(NodeVector {Clamp}, ParameterVector {in}); + return std::make_shared(NodeVector{Clamp}, ParameterVector{in}); } }; @@ -72,32 +80,31 @@ std::vector generateClampFloatParams() { auto max = std::numeric_limits::max(); auto pinf = std::numeric_limits::infinity(); auto ninf = -std::numeric_limits::infinity(); - std::vector clampParams { - ClampParams(ov::PartialShape {5, 2}, + std::vector clampParams{ + ClampParams(ov::PartialShape{5, 2}, IN_ET, std::vector{-0.1, 0.0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8}, std::vector{0.2, 0.2, 0.2, 0.2, 0.3, 0.4, 0.5, 0.6, 0.6, 0.6}, 0.2, 0.6), - ClampParams(ov::PartialShape {5, 2}, + ClampParams(ov::PartialShape{5, 2}, IN_ET, std::vector{min, max, ninf, pinf, 9.99999, 10.0, 10.000001, 19.999999, 20.0, 20.000001}, std::vector{10.0, 20.0, 10.0, 20.0, 10.0, 10.0, 10.000001, 19.999999, 20.0, 20.0}, 10.0, 20.0), - ClampParams(ov::PartialShape {5, 2}, + ClampParams(ov::PartialShape{5, 2}, IN_ET, std::vector{min, max, ninf, pinf, 9.99999, 10.0, 10.000001, 19.999999, 20.0, 20.000001}, std::vector{10.0, max, 10.0, pinf, 10.0, 10.0, 10.000001, 19.999999, 20.0, 20.000001}, 10.0, pinf), - ClampParams(ov::PartialShape {5, 2}, + ClampParams(ov::PartialShape{5, 2}, IN_ET, std::vector{min, max, ninf, pinf, 9.99999, 10.0, 10.000001, 19.999999, 20.0, 20.000001}, std::vector{min, 20.0, ninf, 20.0, 9.99999, 10.0, 10.000001, 19.999999, 20.0, 20.0}, ninf, - 20.0) - }; + 20.0)}; return clampParams; } @@ -108,38 +115,36 @@ std::vector generateClampIntParams() { auto max = std::numeric_limits::max(); auto pinf = std::numeric_limits::infinity(); auto ninf = -std::numeric_limits::infinity(); - std::vector clampParams { - ClampParams(ov::PartialShape {6}, - IN_ET, - std::vector{-1, 3, -10, 20, 6, 2}, - std::vector{1, 3, 1, 5, 5, 2}, - 0.4, - 5.6), - ClampParams(ov::PartialShape {6}, - IN_ET, - std::vector{-6, 1, -2, 0, -1, 2}, - std::vector{-5, -1, -2, -1, -1, -1}, - -5.6, - -0.4), - ClampParams(ov::PartialShape {4, 2}, - IN_ET, - std::vector{min, max, 9, 10, 11, 19, 20, 21}, - std::vector{10, 20, 10, 10, 11, 19, 20, 20}, - 10.0, - 20.0), - ClampParams(ov::PartialShape {4, 2}, - IN_ET, - std::vector{min, max, 9, 10, 11, 19, 20, 21}, - std::vector{10, max, 10, 10, 11, 19, 20, 21}, - 10.0, - pinf), - ClampParams(ov::PartialShape {4, 2}, - IN_ET, - std::vector{min, max, 9, 10, 11, 19, 20, 21}, - std::vector{min, 20, 9, 10, 11, 19, 20, 20}, - ninf, - 20.0) - }; + std::vector clampParams{ClampParams(ov::PartialShape{6}, + IN_ET, + std::vector{-1, 3, -10, 20, 6, 2}, + std::vector{1, 3, 1, 5, 5, 2}, + 0.4, + 5.6), + ClampParams(ov::PartialShape{6}, + IN_ET, + std::vector{-6, 1, -2, 0, -1, 2}, + std::vector{-5, -1, -2, -1, -1, -1}, + -5.6, + -0.4), + ClampParams(ov::PartialShape{4, 2}, + IN_ET, + std::vector{min, max, 9, 10, 11, 19, 20, 21}, + std::vector{10, 20, 10, 10, 11, 19, 20, 20}, + 10.0, + 20.0), + ClampParams(ov::PartialShape{4, 2}, + IN_ET, + std::vector{min, max, 9, 10, 11, 19, 20, 21}, + std::vector{10, max, 10, 10, 11, 19, 20, 21}, + 10.0, + pinf), + ClampParams(ov::PartialShape{4, 2}, + IN_ET, + std::vector{min, max, 9, 10, 11, 19, 20, 21}, + std::vector{min, 20, 9, 10, 11, 19, 20, 20}, + ninf, + 20.0)}; return clampParams; } @@ -150,43 +155,39 @@ std::vector generateClampUintParams() { T max = (static_cast(1) << (std::numeric_limits::digits - 1)) - 1; auto pinf = static_cast(max); auto ninf = -std::numeric_limits::infinity(); - std::vector clampParams { - ClampParams(ov::PartialShape {4, 2}, - IN_ET, - std::vector{min, max, 9, 10, 11, 19, 20, 21}, - std::vector{10, 20, 10, 10, 11, 19, 20, 20}, - 10.0, - 20.0), - ClampParams(ov::PartialShape {4, 2}, - IN_ET, - std::vector{min, max, 9, 10, 11, 19, 20, 21}, - std::vector{10, max, 10, 10, 11, 19, 20, 21}, - 10.0, - pinf), - ClampParams(ov::PartialShape {4, 2}, - IN_ET, - std::vector{min, max, 9, 10, 11, 19, 20, 21}, - std::vector{min, 20, 9, 10, 11, 19, 20, 20}, - ninf, - 20.0) - }; + std::vector clampParams{ClampParams(ov::PartialShape{4, 2}, + IN_ET, + std::vector{min, max, 9, 10, 11, 19, 20, 21}, + std::vector{10, 20, 10, 10, 11, 19, 20, 20}, + 10.0, + 20.0), + ClampParams(ov::PartialShape{4, 2}, + IN_ET, + std::vector{min, max, 9, 10, 11, 19, 20, 21}, + std::vector{10, max, 10, 10, 11, 19, 20, 21}, + 10.0, + pinf), + ClampParams(ov::PartialShape{4, 2}, + IN_ET, + std::vector{min, max, 9, 10, 11, 19, 20, 21}, + std::vector{min, 20, 9, 10, 11, 19, 20, 20}, + ninf, + 20.0)}; return clampParams; } std::vector generateClampCombinedParams() { - const std::vector> clampTypeParams { - generateClampFloatParams(), - generateClampFloatParams(), - generateClampFloatParams(), - generateClampIntParams(), - generateClampIntParams(), - generateClampIntParams(), - generateClampIntParams(), - generateClampUintParams(), - generateClampUintParams(), - generateClampUintParams(), - generateClampUintParams() - }; + const std::vector> clampTypeParams{generateClampFloatParams(), + generateClampFloatParams(), + generateClampFloatParams(), + generateClampIntParams(), + generateClampIntParams(), + generateClampIntParams(), + generateClampIntParams(), + generateClampUintParams(), + generateClampUintParams(), + generateClampUintParams(), + generateClampUintParams()}; std::vector combinedParams; for (const auto& params : clampTypeParams) { @@ -195,7 +196,9 @@ std::vector generateClampCombinedParams() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_Clamp_With_Hardcoded_Refs, ReferenceClampLayerTest, - testing::ValuesIn(generateClampCombinedParams()), ReferenceClampLayerTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_Clamp_With_Hardcoded_Refs, + ReferenceClampLayerTest, + testing::ValuesIn(generateClampCombinedParams()), + ReferenceClampLayerTest::getTestCaseName); -} // namespace +} // namespace diff --git a/src/plugins/template/tests/functional/op_reference/comparison.cpp b/src/plugins/template/tests/functional/op_reference/comparison.cpp index 71612aa3ddf..3fb8b1c5028 100644 --- a/src/plugins/template/tests/functional/op_reference/comparison.cpp +++ b/src/plugins/template/tests/functional/op_reference/comparison.cpp @@ -10,6 +10,6 @@ namespace { TEST_P(ReferenceComparisonLayerTest, CompareWithHardcodedRefs) { Exec(); } -} // namespace -} // namespace ComparisonOpsRefTestDefinitions -} // namespace reference_tests +} // namespace +} // namespace ComparisonOpsRefTestDefinitions +} // namespace reference_tests diff --git a/src/plugins/template/tests/functional/op_reference/comparison.hpp b/src/plugins/template/tests/functional/op_reference/comparison.hpp index 16869dcbd2c..6e363829715 100644 --- a/src/plugins/template/tests/functional/op_reference/comparison.hpp +++ b/src/plugins/template/tests/functional/op_reference/comparison.hpp @@ -7,14 +7,14 @@ #include "base_reference_test.hpp" #include "common_test_utils/test_enums.hpp" #include "openvino/op/equal.hpp" -#include "openvino/op/not_equal.hpp" #include "openvino/op/greater.hpp" #include "openvino/op/greater_eq.hpp" +#include "openvino/op/is_finite.hpp" +#include "openvino/op/is_inf.hpp" +#include "openvino/op/is_nan.hpp" #include "openvino/op/less.hpp" #include "openvino/op/less_eq.hpp" -#include "openvino/op/is_inf.hpp" -#include "openvino/op/is_finite.hpp" -#include "openvino/op/is_nan.hpp" +#include "openvino/op/not_equal.hpp" using namespace ov; @@ -41,7 +41,11 @@ class ReferenceComparisonLayerTest : public testing::TestWithParam CreateFunction(ComparisonTypes comp_op_type, const ov::PartialShape& input_shape1, - const ov::PartialShape& input_shape2, const ov::element::Type& input_type, - const ov::element::Type& expected_output_type) { + static std::shared_ptr CreateFunction(ComparisonTypes comp_op_type, + const ov::PartialShape& input_shape1, + const ov::PartialShape& input_shape2, + const ov::element::Type& input_type, + const ov::element::Type& expected_output_type) { const auto in0 = std::make_shared(input_type, input_shape1); const auto in1 = std::make_shared(input_type, input_shape2); std::shared_ptr comp; switch (comp_op_type) { case ComparisonTypes::EQUAL: { - comp = std::make_shared(in0, in1); + comp = std::make_shared(in0, in1); break; } case ComparisonTypes::NOT_EQUAL: { - comp = std::make_shared(in0, in1); + comp = std::make_shared(in0, in1); break; } case ComparisonTypes::GREATER: { - comp = std::make_shared(in0, in1); + comp = std::make_shared(in0, in1); break; } case ComparisonTypes::GREATER_EQUAL: { - comp = std::make_shared(in0, in1); + comp = std::make_shared(in0, in1); break; } case ComparisonTypes::IS_FINITE: { - comp = std::make_shared(in0); + comp = std::make_shared(in0); break; } case ComparisonTypes::IS_INF: { - comp = std::make_shared(in0); + comp = std::make_shared(in0); break; } case ComparisonTypes::IS_NAN: { - comp = std::make_shared(in0); + comp = std::make_shared(in0); break; } case ComparisonTypes::LESS: { - comp = std::make_shared(in0, in1); + comp = std::make_shared(in0, in1); break; } case ComparisonTypes::LESS_EQUAL: { - comp = std::make_shared(in0, in1); + comp = std::make_shared(in0, in1); break; } default: { throw std::runtime_error("Incorrect type of Comparison operation"); } } - return std::make_shared(ov::NodeVector {comp}, ov::ParameterVector {in0, in1}); + return std::make_shared(ov::NodeVector{comp}, ov::ParameterVector{in0, in1}); } }; } // namespace ComparisonOpsRefTestDefinitions diff --git a/src/plugins/template/tests/functional/op_reference/concat.cpp b/src/plugins/template/tests/functional/op_reference/concat.cpp index 6f71ca01bc0..b11a3d1e4a4 100644 --- a/src/plugins/template/tests/functional/op_reference/concat.cpp +++ b/src/plugins/template/tests/functional/op_reference/concat.cpp @@ -4,20 +4,28 @@ #include -#include "openvino/opsets/opset1.hpp" #include "base_reference_test.hpp" +#include "openvino/opsets/opset1.hpp" using namespace reference_tests; using namespace ov; namespace { struct ConcatParams { - ConcatParams( - const PartialShape& dynamicShape, - const reference_tests::Tensor& A, const reference_tests::Tensor& B, - const reference_tests::Tensor& C, const int32_t axis, - const reference_tests::Tensor& expected, const std::string& testcaseName = "") : - dynamicShape(dynamicShape), A(A), B(B), C(C), axis(axis), expected(expected), testcaseName(testcaseName) {} + ConcatParams(const PartialShape& dynamicShape, + const reference_tests::Tensor& A, + const reference_tests::Tensor& B, + const reference_tests::Tensor& C, + const int32_t axis, + const reference_tests::Tensor& expected, + const std::string& testcaseName = "") + : dynamicShape(dynamicShape), + A(A), + B(B), + C(C), + axis(axis), + expected(expected), + testcaseName(testcaseName) {} PartialShape dynamicShape; reference_tests::Tensor A; @@ -70,7 +78,8 @@ private: B = std::make_shared(params.B.type, params.B.shape); C = std::make_shared(params.C.type, params.C.shape); } - auto f = std::make_shared(std::make_shared(NodeVector{A, B, C}, params.axis), ParameterVector{A, B, C}); + auto f = std::make_shared(std::make_shared(NodeVector{A, B, C}, params.axis), + ParameterVector{A, B, C}); return f; } }; @@ -82,7 +91,7 @@ TEST_P(ReferenceConcatTest, CompareWithRefs) { template std::vector generateParams() { using T = typename element_type_traits::value_type; - std::vector params { + std::vector params{ ConcatParams( PartialShape::dynamic(), reference_tests::Tensor(ET, {2, 2}, std::vector{2, 4, 8, 16}), @@ -107,36 +116,33 @@ std::vector generateParams() { 0, reference_tests::Tensor(ET, {8, 2}, std::vector{2, 4, 8, 16, 1, 2, 4, 8, 16, 32, 2, 3, 5, 7, 11, 13}), "concat_matrix_rowwise"), - ConcatParams( - {}, - reference_tests::Tensor(ET, {4}, std::vector{2, 4, 8, 16}), - reference_tests::Tensor(ET, {6}, std::vector{1, 2, 4, 8, 16, 32}), - reference_tests::Tensor(ET, {2}, std::vector{18, 19}), - 0, - reference_tests::Tensor(ET, {12}, std::vector{2, 4, 8, 16, 1, 2, 4, 8, 16, 32, 18, 19}), - "concat_vector"), - ConcatParams( - {}, - reference_tests::Tensor(ET, {1, 1, 1, 1}, std::vector{1}), - reference_tests::Tensor(ET, {1, 1, 1, 1}, std::vector{2}), - reference_tests::Tensor(ET, {1, 1, 1, 1}, std::vector{3}), - 0, - reference_tests::Tensor(ET, {3, 1, 1, 1}, std::vector{1, 2, 3}), - "concat_4d_tensor"), - ConcatParams( - {}, - reference_tests::Tensor(ET, {1, 1}, std::vector{1}), - reference_tests::Tensor(ET, {1, 1}, std::vector{2}), - reference_tests::Tensor(ET, {1, 1}, std::vector{3}), - 0, - reference_tests::Tensor(ET, {3, 1}, std::vector{1, 2, 3}), - "concat_2d_tensor"), + ConcatParams({}, + reference_tests::Tensor(ET, {4}, std::vector{2, 4, 8, 16}), + reference_tests::Tensor(ET, {6}, std::vector{1, 2, 4, 8, 16, 32}), + reference_tests::Tensor(ET, {2}, std::vector{18, 19}), + 0, + reference_tests::Tensor(ET, {12}, std::vector{2, 4, 8, 16, 1, 2, 4, 8, 16, 32, 18, 19}), + "concat_vector"), + ConcatParams({}, + reference_tests::Tensor(ET, {1, 1, 1, 1}, std::vector{1}), + reference_tests::Tensor(ET, {1, 1, 1, 1}, std::vector{2}), + reference_tests::Tensor(ET, {1, 1, 1, 1}, std::vector{3}), + 0, + reference_tests::Tensor(ET, {3, 1, 1, 1}, std::vector{1, 2, 3}), + "concat_4d_tensor"), + ConcatParams({}, + reference_tests::Tensor(ET, {1, 1}, std::vector{1}), + reference_tests::Tensor(ET, {1, 1}, std::vector{2}), + reference_tests::Tensor(ET, {1, 1}, std::vector{3}), + 0, + reference_tests::Tensor(ET, {3, 1}, std::vector{1, 2, 3}), + "concat_2d_tensor"), }; return params; } std::vector generateCombinedParams() { - const std::vector> generatedParams { + const std::vector> generatedParams{ generateParams(), generateParams(), generateParams(), @@ -158,20 +164,24 @@ std::vector generateCombinedParams() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_Concat_With_Hardcoded_Refs, ReferenceConcatTest, - testing::ValuesIn(generateCombinedParams()), ReferenceConcatTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_Concat_With_Hardcoded_Refs, + ReferenceConcatTest, + testing::ValuesIn(generateCombinedParams()), + ReferenceConcatTest::getTestCaseName); //// concat_vector_params, concat_vector_large struct ConcatParamsVectorLarge { - ConcatParamsVectorLarge(const uint32_t numInputs, const std::string& testcaseName = "") : - numInputs(numInputs), testcaseName(testcaseName) {} + ConcatParamsVectorLarge(const uint32_t numInputs, const std::string& testcaseName = "") + : numInputs(numInputs), + testcaseName(testcaseName) {} uint32_t numInputs; std::string testcaseName; }; -class ReferenceConcatTestVectorLarge : public testing::TestWithParam, public CommonReferenceTest { +class ReferenceConcatTestVectorLarge : public testing::TestWithParam, + public CommonReferenceTest { public: void SetUp() override { auto params = GetParam(); @@ -213,7 +223,7 @@ TEST_P(ReferenceConcatTestVectorLarge, CompareWithRefs) { } std::vector generateParamsVectorLarge() { - std::vector params { + std::vector params{ ConcatParamsVectorLarge(100, "concat_vector_large_100"), ConcatParamsVectorLarge(128, "concat_vector_large_128"), ConcatParamsVectorLarge(999, "concat_vector_large_999"), @@ -222,7 +232,7 @@ std::vector generateParamsVectorLarge() { } std::vector generateCombinedParamsVectorLarge() { - const std::vector> generatedParams { + const std::vector> generatedParams{ generateParamsVectorLarge(), }; std::vector combinedParams; @@ -233,16 +243,28 @@ std::vector generateCombinedParamsVectorLarge() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_Concat_With_Hardcoded_Refs, ReferenceConcatTestVectorLarge, - testing::ValuesIn(generateCombinedParamsVectorLarge()), ReferenceConcatTestVectorLarge::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_Concat_With_Hardcoded_Refs, + ReferenceConcatTestVectorLarge, + testing::ValuesIn(generateCombinedParamsVectorLarge()), + ReferenceConcatTestVectorLarge::getTestCaseName); //// concat_in_place_2d_tensor struct ConcatParamsInPlace2dTensor { - ConcatParamsInPlace2dTensor( - const reference_tests::Tensor& A, const reference_tests::Tensor& B, const reference_tests::Tensor& C, const reference_tests::Tensor& D, const int32_t axis, - const reference_tests::Tensor& expected, const std::string& testcaseName = "") : - A(A), B(B), C(C), D(D), axis(axis), expected(expected), testcaseName(testcaseName) {} + ConcatParamsInPlace2dTensor(const reference_tests::Tensor& A, + const reference_tests::Tensor& B, + const reference_tests::Tensor& C, + const reference_tests::Tensor& D, + const int32_t axis, + const reference_tests::Tensor& expected, + const std::string& testcaseName = "") + : A(A), + B(B), + C(C), + D(D), + axis(axis), + expected(expected), + testcaseName(testcaseName) {} reference_tests::Tensor A; reference_tests::Tensor B; @@ -253,7 +275,8 @@ struct ConcatParamsInPlace2dTensor { std::string testcaseName; }; -class ReferenceConcatTestInPlace2dTensor : public testing::TestWithParam, public CommonReferenceTest { +class ReferenceConcatTestInPlace2dTensor : public testing::TestWithParam, + public CommonReferenceTest { public: void SetUp() override { auto params = GetParam(); @@ -293,9 +316,9 @@ private: const auto D = std::make_shared(params.D.type, params.D.shape); const auto add2 = std::make_shared(C, D); const auto subtract = std::make_shared(C, A); - const auto f = std::make_shared( - std::make_shared(NodeVector{add1, add2, subtract}, params.axis), - ParameterVector{A, B, C, D}); + const auto f = + std::make_shared(std::make_shared(NodeVector{add1, add2, subtract}, params.axis), + ParameterVector{A, B, C, D}); return f; } }; @@ -307,21 +330,20 @@ TEST_P(ReferenceConcatTestInPlace2dTensor, CompareWithRefs) { template std::vector generateParamsInPlace2dTensor() { using T = typename element_type_traits::value_type; - std::vector params { - ConcatParamsInPlace2dTensor( - reference_tests::Tensor(ET, {1, 1}, std::vector{1}), - reference_tests::Tensor(ET, {1, 1}, std::vector{2}), - reference_tests::Tensor(ET, {1, 1}, std::vector{3}), - reference_tests::Tensor(ET, {1, 1}, std::vector{4}), - 0, - reference_tests::Tensor(ET, {3, 1}, std::vector{3, 7, 2}), - "concat_in_place_2d_tensor"), + std::vector params{ + ConcatParamsInPlace2dTensor(reference_tests::Tensor(ET, {1, 1}, std::vector{1}), + reference_tests::Tensor(ET, {1, 1}, std::vector{2}), + reference_tests::Tensor(ET, {1, 1}, std::vector{3}), + reference_tests::Tensor(ET, {1, 1}, std::vector{4}), + 0, + reference_tests::Tensor(ET, {3, 1}, std::vector{3, 7, 2}), + "concat_in_place_2d_tensor"), }; return params; } std::vector generateCombinedParamsInPlace2dTensor() { - const std::vector> generatedParams { + const std::vector> generatedParams{ generateParamsInPlace2dTensor(), generateParamsInPlace2dTensor(), generateParamsInPlace2dTensor(), @@ -338,16 +360,28 @@ std::vector generateCombinedParamsInPlace2dTensor() return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_Concat_With_Hardcoded_Refs, ReferenceConcatTestInPlace2dTensor, - testing::ValuesIn(generateCombinedParamsInPlace2dTensor()), ReferenceConcatTestInPlace2dTensor::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_Concat_With_Hardcoded_Refs, + ReferenceConcatTestInPlace2dTensor, + testing::ValuesIn(generateCombinedParamsInPlace2dTensor()), + ReferenceConcatTestInPlace2dTensor::getTestCaseName); //// concat_in_place_propagate_2d_tensor struct ConcatParamsInPlacePropagate2dTensor { - ConcatParamsInPlacePropagate2dTensor( - const reference_tests::Tensor& A, const reference_tests::Tensor& B, const reference_tests::Tensor& C, const reference_tests::Tensor& D, const int32_t axis, - const reference_tests::Tensor& expected, const std::string& testcaseName = "") : - A(A), B(B), C(C), D(D), axis(axis), expected(expected), testcaseName(testcaseName) {} + ConcatParamsInPlacePropagate2dTensor(const reference_tests::Tensor& A, + const reference_tests::Tensor& B, + const reference_tests::Tensor& C, + const reference_tests::Tensor& D, + const int32_t axis, + const reference_tests::Tensor& expected, + const std::string& testcaseName = "") + : A(A), + B(B), + C(C), + D(D), + axis(axis), + expected(expected), + testcaseName(testcaseName) {} reference_tests::Tensor A; reference_tests::Tensor B; @@ -358,7 +392,8 @@ struct ConcatParamsInPlacePropagate2dTensor { std::string testcaseName; }; -class ReferenceConcatTestInPlacePropagate2dTensor : public testing::TestWithParam, public CommonReferenceTest { +class ReferenceConcatTestInPlacePropagate2dTensor : public testing::TestWithParam, + public CommonReferenceTest { public: void SetUp() override { auto params = GetParam(); @@ -399,9 +434,9 @@ private: const auto add2 = std::make_shared(C, D); const auto concat1 = std::make_shared(NodeVector{add1, add2}, params.axis); const auto subtract = std::make_shared(C, A); - const auto f = std::make_shared( - std::make_shared(NodeVector{concat1, subtract}, params.axis), - ParameterVector{A, B, C, D}); + const auto f = + std::make_shared(std::make_shared(NodeVector{concat1, subtract}, params.axis), + ParameterVector{A, B, C, D}); return f; } }; @@ -413,21 +448,20 @@ TEST_P(ReferenceConcatTestInPlacePropagate2dTensor, CompareWithRefs) { template std::vector generateParamsInPlacePropagate2dTensor() { using T = typename element_type_traits::value_type; - std::vector params { - ConcatParamsInPlacePropagate2dTensor( - reference_tests::Tensor(ET, {1, 1}, std::vector{1}), - reference_tests::Tensor(ET, {1, 1}, std::vector{2}), - reference_tests::Tensor(ET, {1, 1}, std::vector{3}), - reference_tests::Tensor(ET, {1, 1}, std::vector{4}), - 0, - reference_tests::Tensor(ET, {3, 1}, std::vector{3, 7, 2}), - "concat_in_place_2d_tensor"), + std::vector params{ + ConcatParamsInPlacePropagate2dTensor(reference_tests::Tensor(ET, {1, 1}, std::vector{1}), + reference_tests::Tensor(ET, {1, 1}, std::vector{2}), + reference_tests::Tensor(ET, {1, 1}, std::vector{3}), + reference_tests::Tensor(ET, {1, 1}, std::vector{4}), + 0, + reference_tests::Tensor(ET, {3, 1}, std::vector{3, 7, 2}), + "concat_in_place_2d_tensor"), }; return params; } std::vector generateCombinedParamsInPlacePropagate2dTensor() { - const std::vector> generatedParams { + const std::vector> generatedParams{ generateParamsInPlacePropagate2dTensor(), generateParamsInPlacePropagate2dTensor(), generateParamsInPlacePropagate2dTensor(), @@ -444,16 +478,24 @@ std::vector generateCombinedParamsInPlaceP return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_Concat_With_Hardcoded_Refs, ReferenceConcatTestInPlacePropagate2dTensor, - testing::ValuesIn(generateCombinedParamsInPlacePropagate2dTensor()), ReferenceConcatTestInPlacePropagate2dTensor::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_Concat_With_Hardcoded_Refs, + ReferenceConcatTestInPlacePropagate2dTensor, + testing::ValuesIn(generateCombinedParamsInPlacePropagate2dTensor()), + ReferenceConcatTestInPlacePropagate2dTensor::getTestCaseName); //// concat_in_place_tree_1 struct ConcatParamsInPlaceTree1 { - ConcatParamsInPlaceTree1( - const reference_tests::Tensor& A, const reference_tests::Tensor& B, const int32_t axis, - const reference_tests::Tensor& expected, const std::string& testcaseName = "") : - A(A), B(B), axis(axis), expected(expected), testcaseName(testcaseName) {} + ConcatParamsInPlaceTree1(const reference_tests::Tensor& A, + const reference_tests::Tensor& B, + const int32_t axis, + const reference_tests::Tensor& expected, + const std::string& testcaseName = "") + : A(A), + B(B), + axis(axis), + expected(expected), + testcaseName(testcaseName) {} reference_tests::Tensor A; reference_tests::Tensor B; @@ -462,7 +504,8 @@ struct ConcatParamsInPlaceTree1 { std::string testcaseName; }; -class ReferenceConcatTestInPlaceTree1 : public testing::TestWithParam, public CommonReferenceTest { +class ReferenceConcatTestInPlaceTree1 : public testing::TestWithParam, + public CommonReferenceTest { public: void SetUp() override { auto params = GetParam(); @@ -496,8 +539,7 @@ private: const auto add1 = std::make_shared(A, B); const auto add2 = std::make_shared(A, B); const auto concat = std::make_shared(NodeVector{add1, add2}, params.axis); - const auto f = std::make_shared(std::make_shared(concat, concat), - ParameterVector{A, B}); + const auto f = std::make_shared(std::make_shared(concat, concat), ParameterVector{A, B}); return f; } }; @@ -509,19 +551,18 @@ TEST_P(ReferenceConcatTestInPlaceTree1, CompareWithRefs) { template std::vector generateParamsInPlaceTree1() { using T = typename element_type_traits::value_type; - std::vector params { - ConcatParamsInPlaceTree1( - reference_tests::Tensor(ET, {1, 2, 2}, std::vector{1, 1, 1, 1}), - reference_tests::Tensor(ET, {1, 2, 2}, std::vector{1, 1, 1, 1}), - 1, - reference_tests::Tensor(ET, {1, 4, 2}, std::vector{4, 4, 4, 4, 4, 4, 4, 4}), - "concat_in_place_tree_1"), + std::vector params{ + ConcatParamsInPlaceTree1(reference_tests::Tensor(ET, {1, 2, 2}, std::vector{1, 1, 1, 1}), + reference_tests::Tensor(ET, {1, 2, 2}, std::vector{1, 1, 1, 1}), + 1, + reference_tests::Tensor(ET, {1, 4, 2}, std::vector{4, 4, 4, 4, 4, 4, 4, 4}), + "concat_in_place_tree_1"), }; return params; } std::vector generateCombinedParamsInPlaceTree1() { - const std::vector> generatedParams { + const std::vector> generatedParams{ generateParamsInPlaceTree1(), generateParamsInPlaceTree1(), generateParamsInPlaceTree1(), @@ -538,16 +579,24 @@ std::vector generateCombinedParamsInPlaceTree1() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_Concat_With_Hardcoded_Refs, ReferenceConcatTestInPlaceTree1, - testing::ValuesIn(generateCombinedParamsInPlaceTree1()), ReferenceConcatTestInPlaceTree1::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_Concat_With_Hardcoded_Refs, + ReferenceConcatTestInPlaceTree1, + testing::ValuesIn(generateCombinedParamsInPlaceTree1()), + ReferenceConcatTestInPlaceTree1::getTestCaseName); //// concat_in_place_tree_2 struct ConcatParamsInPlaceTree2 { - ConcatParamsInPlaceTree2( - const reference_tests::Tensor& A, const reference_tests::Tensor& B, const int32_t axis, - const reference_tests::Tensor& expected, const std::string& testcaseName = "") : - A(A), B(B), axis(axis), expected(expected), testcaseName(testcaseName) {} + ConcatParamsInPlaceTree2(const reference_tests::Tensor& A, + const reference_tests::Tensor& B, + const int32_t axis, + const reference_tests::Tensor& expected, + const std::string& testcaseName = "") + : A(A), + B(B), + axis(axis), + expected(expected), + testcaseName(testcaseName) {} reference_tests::Tensor A; reference_tests::Tensor B; @@ -556,7 +605,8 @@ struct ConcatParamsInPlaceTree2 { std::string testcaseName; }; -class ReferenceConcatTestInPlaceTree2 : public testing::TestWithParam, public CommonReferenceTest { +class ReferenceConcatTestInPlaceTree2 : public testing::TestWithParam, + public CommonReferenceTest { public: void SetUp() override { auto params = GetParam(); @@ -592,8 +642,8 @@ private: const auto concat1 = std::make_shared(NodeVector{add1, add2}, params.axis); const auto concat2 = std::make_shared(NodeVector{add1, add2}, params.axis); const auto concat12 = std::make_shared(NodeVector{concat1, concat2}, params.axis); - const auto f = std::make_shared(std::make_shared(concat12, concat12), - ParameterVector{A, B}); + const auto f = + std::make_shared(std::make_shared(concat12, concat12), ParameterVector{A, B}); return f; } }; @@ -605,20 +655,19 @@ TEST_P(ReferenceConcatTestInPlaceTree2, CompareWithRefs) { template std::vector generateParamsInPlaceTree2() { using T = typename element_type_traits::value_type; - std::vector params { + std::vector params{ ConcatParamsInPlaceTree2( reference_tests::Tensor(ET, {1, 2, 2}, std::vector{1, 1, 1, 1}), reference_tests::Tensor(ET, {1, 2, 2}, std::vector{1, 1, 1, 1}), 1, - reference_tests::Tensor(ET, {1, 8, 2}, std::vector{4, 4, 4, 4, 4, 4, 4, 4, - 4, 4, 4, 4, 4, 4, 4, 4}), + reference_tests::Tensor(ET, {1, 8, 2}, std::vector{4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4}), "concat_in_place_tree_2"), }; return params; } std::vector generateCombinedParamsInPlaceTree2() { - const std::vector> generatedParams { + const std::vector> generatedParams{ generateParamsInPlaceTree2(), generateParamsInPlaceTree2(), generateParamsInPlaceTree2(), @@ -635,16 +684,24 @@ std::vector generateCombinedParamsInPlaceTree2() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_Concat_With_Hardcoded_Refs, ReferenceConcatTestInPlaceTree2, - testing::ValuesIn(generateCombinedParamsInPlaceTree2()), ReferenceConcatTestInPlaceTree2::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_Concat_With_Hardcoded_Refs, + ReferenceConcatTestInPlaceTree2, + testing::ValuesIn(generateCombinedParamsInPlaceTree2()), + ReferenceConcatTestInPlaceTree2::getTestCaseName); //// concat_in_place_tree_3 struct ConcatParamsInPlaceTree3 { - ConcatParamsInPlaceTree3( - const reference_tests::Tensor& A, const reference_tests::Tensor& B, const int32_t axis, - const reference_tests::Tensor& expected, const std::string& testcaseName = "") : - A(A), B(B), axis(axis), expected(expected), testcaseName(testcaseName) {} + ConcatParamsInPlaceTree3(const reference_tests::Tensor& A, + const reference_tests::Tensor& B, + const int32_t axis, + const reference_tests::Tensor& expected, + const std::string& testcaseName = "") + : A(A), + B(B), + axis(axis), + expected(expected), + testcaseName(testcaseName) {} reference_tests::Tensor A; reference_tests::Tensor B; @@ -653,7 +710,8 @@ struct ConcatParamsInPlaceTree3 { std::string testcaseName; }; -class ReferenceConcatTestInPlaceTree3 : public testing::TestWithParam, public CommonReferenceTest { +class ReferenceConcatTestInPlaceTree3 : public testing::TestWithParam, + public CommonReferenceTest { public: void SetUp() override { auto params = GetParam(); @@ -691,8 +749,8 @@ private: const auto concat12 = std::make_shared(NodeVector{concat1, concat2}, params.axis); const auto concat34 = std::make_shared(NodeVector{concat3, concat4}, params.axis); const auto concat14 = std::make_shared(NodeVector{concat12, concat34}, params.axis); - const auto f = std::make_shared(std::make_shared(concat14, concat14), - ParameterVector{A, B}); + const auto f = + std::make_shared(std::make_shared(concat14, concat14), ParameterVector{A, B}); return f; } }; @@ -704,22 +762,20 @@ TEST_P(ReferenceConcatTestInPlaceTree3, CompareWithRefs) { template std::vector generateParamsInPlaceTree3() { using T = typename element_type_traits::value_type; - std::vector params { + std::vector params{ ConcatParamsInPlaceTree3( reference_tests::Tensor(ET, {1, 2, 2}, std::vector{1, 1, 1, 1}), reference_tests::Tensor(ET, {1, 2, 2}, std::vector{1, 1, 1, 1}), 1, - reference_tests::Tensor(ET, {1, 16, 2}, std::vector{2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2}), + reference_tests::Tensor(ET, {1, 16, 2}, std::vector{2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2}), "concat_in_place_tree_3"), }; return params; } std::vector generateCombinedParamsInPlaceTree3() { - const std::vector> generatedParams { + const std::vector> generatedParams{ generateParamsInPlaceTree3(), generateParamsInPlaceTree3(), generateParamsInPlaceTree3(), @@ -736,16 +792,24 @@ std::vector generateCombinedParamsInPlaceTree3() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_Concat_With_Hardcoded_Refs, ReferenceConcatTestInPlaceTree3, - testing::ValuesIn(generateCombinedParamsInPlaceTree3()), ReferenceConcatTestInPlaceTree3::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_Concat_With_Hardcoded_Refs, + ReferenceConcatTestInPlaceTree3, + testing::ValuesIn(generateCombinedParamsInPlaceTree3()), + ReferenceConcatTestInPlaceTree3::getTestCaseName); //// concat_in_place_add_concat struct ConcatParamsInPlaceAddConcat { - ConcatParamsInPlaceAddConcat( - const reference_tests::Tensor& A, const reference_tests::Tensor& B, const int32_t axis, - const reference_tests::Tensor& expected, const std::string& testcaseName = "") : - A(A), B(B), axis(axis), expected(expected), testcaseName(testcaseName) {} + ConcatParamsInPlaceAddConcat(const reference_tests::Tensor& A, + const reference_tests::Tensor& B, + const int32_t axis, + const reference_tests::Tensor& expected, + const std::string& testcaseName = "") + : A(A), + B(B), + axis(axis), + expected(expected), + testcaseName(testcaseName) {} reference_tests::Tensor A; reference_tests::Tensor B; @@ -754,7 +818,8 @@ struct ConcatParamsInPlaceAddConcat { std::string testcaseName; }; -class ReferenceConcatTestInPlaceAddConcat : public testing::TestWithParam, public CommonReferenceTest { +class ReferenceConcatTestInPlaceAddConcat : public testing::TestWithParam, + public CommonReferenceTest { public: void SetUp() override { auto params = GetParam(); @@ -801,19 +866,18 @@ TEST_P(ReferenceConcatTestInPlaceAddConcat, CompareWithRefs) { template std::vector generateParamsInPlaceAddConcat() { using T = typename element_type_traits::value_type; - std::vector params { - ConcatParamsInPlaceAddConcat( - reference_tests::Tensor(ET, {2, 2}, std::vector{1, 1, 1, 1}), - reference_tests::Tensor(ET, {2, 2}, std::vector{1, 1, 1, 1}), - 0, - reference_tests::Tensor(ET, {4, 2}, std::vector{4, 4, 4, 4, 8, 8, 8, 8}), - "concat_in_place_add_concat"), + std::vector params{ + ConcatParamsInPlaceAddConcat(reference_tests::Tensor(ET, {2, 2}, std::vector{1, 1, 1, 1}), + reference_tests::Tensor(ET, {2, 2}, std::vector{1, 1, 1, 1}), + 0, + reference_tests::Tensor(ET, {4, 2}, std::vector{4, 4, 4, 4, 8, 8, 8, 8}), + "concat_in_place_add_concat"), }; return params; } std::vector generateCombinedParamsInPlaceAddConcat() { - const std::vector> generatedParams { + const std::vector> generatedParams{ generateParamsInPlaceAddConcat(), generateParamsInPlaceAddConcat(), generateParamsInPlaceAddConcat(), @@ -830,16 +894,24 @@ std::vector generateCombinedParamsInPlaceAddConcat return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_Concat_With_Hardcoded_Refs, ReferenceConcatTestInPlaceAddConcat, - testing::ValuesIn(generateCombinedParamsInPlaceAddConcat()), ReferenceConcatTestInPlaceAddConcat::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_Concat_With_Hardcoded_Refs, + ReferenceConcatTestInPlaceAddConcat, + testing::ValuesIn(generateCombinedParamsInPlaceAddConcat()), + ReferenceConcatTestInPlaceAddConcat::getTestCaseName); //// concat_in_place_add_concat_2 struct ConcatParamsInPlaceAddConcat2 { - ConcatParamsInPlaceAddConcat2( - const reference_tests::Tensor& A, const reference_tests::Tensor& B, const int32_t axis, - const reference_tests::Tensor& expected, const std::string& testcaseName = "") : - A(A), B(B), axis(axis), expected(expected), testcaseName(testcaseName) {} + ConcatParamsInPlaceAddConcat2(const reference_tests::Tensor& A, + const reference_tests::Tensor& B, + const int32_t axis, + const reference_tests::Tensor& expected, + const std::string& testcaseName = "") + : A(A), + B(B), + axis(axis), + expected(expected), + testcaseName(testcaseName) {} reference_tests::Tensor A; reference_tests::Tensor B; @@ -848,7 +920,8 @@ struct ConcatParamsInPlaceAddConcat2 { std::string testcaseName; }; -class ReferenceConcatTestInPlaceAddConcat2 : public testing::TestWithParam, public CommonReferenceTest { +class ReferenceConcatTestInPlaceAddConcat2 : public testing::TestWithParam, + public CommonReferenceTest { public: void SetUp() override { auto params = GetParam(); @@ -899,7 +972,7 @@ TEST_P(ReferenceConcatTestInPlaceAddConcat2, CompareWithRefs) { template std::vector generateParamsInPlaceAddConcat2() { using T = typename element_type_traits::value_type; - std::vector params { + std::vector params{ ConcatParamsInPlaceAddConcat2( reference_tests::Tensor(ET, {1, 2, 2}, std::vector{1, 1, 1, 1}), reference_tests::Tensor(ET, {1, 2, 2}, std::vector{1, 1, 1, 1}), @@ -911,7 +984,7 @@ std::vector generateParamsInPlaceAddConcat2() { } std::vector generateCombinedParamsInPlaceAddConcat2() { - const std::vector> generatedParams { + const std::vector> generatedParams{ generateParamsInPlaceAddConcat2(), generateParamsInPlaceAddConcat2(), generateParamsInPlaceAddConcat2(), @@ -928,16 +1001,26 @@ std::vector generateCombinedParamsInPlaceAddConca return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_Concat_With_Hardcoded_Refs, ReferenceConcatTestInPlaceAddConcat2, - testing::ValuesIn(generateCombinedParamsInPlaceAddConcat2()), ReferenceConcatTestInPlaceAddConcat2::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_Concat_With_Hardcoded_Refs, + ReferenceConcatTestInPlaceAddConcat2, + testing::ValuesIn(generateCombinedParamsInPlaceAddConcat2()), + ReferenceConcatTestInPlaceAddConcat2::getTestCaseName); //// concat_5d struct ConcatParams5d { - ConcatParams5d( - const reference_tests::Tensor& A, const reference_tests::Tensor& B, const reference_tests::Tensor& C, const int32_t axis, - const reference_tests::Tensor& expected, const std::string& testcaseName = "") : - A(A), B(B), C(C), axis(axis), expected(expected), testcaseName(testcaseName) {} + ConcatParams5d(const reference_tests::Tensor& A, + const reference_tests::Tensor& B, + const reference_tests::Tensor& C, + const int32_t axis, + const reference_tests::Tensor& expected, + const std::string& testcaseName = "") + : A(A), + B(B), + C(C), + axis(axis), + expected(expected), + testcaseName(testcaseName) {} reference_tests::Tensor A; reference_tests::Tensor B; @@ -994,58 +1077,71 @@ TEST_P(ReferenceConcatTest5d, CompareWithRefs) { template std::vector generateParams5d() { using T = typename element_type_traits::value_type; - std::vector params { + std::vector params{ ConcatParams5d( - reference_tests::Tensor(ET, {2, 3, 4, 3, 2}, []() -> std::vector { - std::vector data(2 * 3 * 4 * 3 * 2); - for (int i = 0; i < 2 * 3 * 4 * 3 * 2; i++) { - data[i] = static_cast(i + 1); - } - return data; - }()), - reference_tests::Tensor(ET, {2, 3, 3, 3, 2}, []() -> std::vector { - std::vector data(2 * 3 * 3 * 3 * 2); - for (int i = 0; i < 2 * 3 * 3 * 3 * 2; i++) { - data[i] = 1000 + static_cast(i + 1); - } - return data;}()), - reference_tests::Tensor(ET, {2, 3, 2, 3, 2}, []() -> std::vector { - std::vector data(2 * 3 * 2 * 3 * 2); - for (int i = 0; i < 2 * 3 * 2 * 3 * 2; i++) { - data[i] = 2000 + static_cast(i + 1); - } - return data;}()), + reference_tests::Tensor(ET, + {2, 3, 4, 3, 2}, + []() -> std::vector { + std::vector data(2 * 3 * 4 * 3 * 2); + for (int i = 0; i < 2 * 3 * 4 * 3 * 2; i++) { + data[i] = static_cast(i + 1); + } + return data; + }()), + reference_tests::Tensor(ET, + {2, 3, 3, 3, 2}, + []() -> std::vector { + std::vector data(2 * 3 * 3 * 3 * 2); + for (int i = 0; i < 2 * 3 * 3 * 3 * 2; i++) { + data[i] = 1000 + static_cast(i + 1); + } + return data; + }()), + reference_tests::Tensor(ET, + {2, 3, 2, 3, 2}, + []() -> std::vector { + std::vector data(2 * 3 * 2 * 3 * 2); + for (int i = 0; i < 2 * 3 * 2 * 3 * 2; i++) { + data[i] = 2000 + static_cast(i + 1); + } + return data; + }()), 2, - reference_tests::Tensor(ET, {2, 3, 9, 3, 2}, std::vector{ - 1., 2., 3., 4., 5., 6., 7., 8., 9., 10., 11., 12., 13., 14., 15., - 16., 17., 18., 19., 20., 21., 22., 23., 24., 1001., 1002., 1003., 1004., 1005., 1006., - 1007., 1008., 1009., 1010., 1011., 1012., 1013., 1014., 1015., 1016., 1017., 1018., 2001., 2002., 2003., - 2004., 2005., 2006., 2007., 2008., 2009., 2010., 2011., 2012., 25., 26., 27., 28., 29., 30., - 31., 32., 33., 34., 35., 36., 37., 38., 39., 40., 41., 42., 43., 44., 45., - 46., 47., 48., 1019., 1020., 1021., 1022., 1023., 1024., 1025., 1026., 1027., 1028., 1029., 1030., - 1031., 1032., 1033., 1034., 1035., 1036., 2013., 2014., 2015., 2016., 2017., 2018., 2019., 2020., 2021., - 2022., 2023., 2024., 49., 50., 51., 52., 53., 54., 55., 56., 57., 58., 59., 60., - 61., 62., 63., 64., 65., 66., 67., 68., 69., 70., 71., 72., 1037., 1038., 1039., - 1040., 1041., 1042., 1043., 1044., 1045., 1046., 1047., 1048., 1049., 1050., 1051., 1052., 1053., 1054., - 2025., 2026., 2027., 2028., 2029., 2030., 2031., 2032., 2033., 2034., 2035., 2036., 73., 74., 75., - 76., 77., 78., 79., 80., 81., 82., 83., 84., 85., 86., 87., 88., 89., 90., - 91., 92., 93., 94., 95., 96., 1055., 1056., 1057., 1058., 1059., 1060., 1061., 1062., 1063., - 1064., 1065., 1066., 1067., 1068., 1069., 1070., 1071., 1072., 2037., 2038., 2039., 2040., 2041., 2042., - 2043., 2044., 2045., 2046., 2047., 2048., 97., 98., 99., 100., 101., 102., 103., 104., 105., - 106., 107., 108., 109., 110., 111., 112., 113., 114., 115., 116., 117., 118., 119., 120., - 1073., 1074., 1075., 1076., 1077., 1078., 1079., 1080., 1081., 1082., 1083., 1084., 1085., 1086., 1087., - 1088., 1089., 1090., 2049., 2050., 2051., 2052., 2053., 2054., 2055., 2056., 2057., 2058., 2059., 2060., - 121., 122., 123., 124., 125., 126., 127., 128., 129., 130., 131., 132., 133., 134., 135., - 136., 137., 138., 139., 140., 141., 142., 143., 144., 1091., 1092., 1093., 1094., 1095., 1096., - 1097., 1098., 1099., 1100., 1101., 1102., 1103., 1104., 1105., 1106., 1107., 1108., 2061., 2062., 2063., - 2064., 2065., 2066., 2067., 2068., 2069., 2070., 2071., 2072.}), + reference_tests::Tensor( + ET, + {2, 3, 9, 3, 2}, + std::vector{ + 1., 2., 3., 4., 5., 6., 7., 8., 9., 10., 11., 12., 13., 14., + 15., 16., 17., 18., 19., 20., 21., 22., 23., 24., 1001., 1002., 1003., 1004., + 1005., 1006., 1007., 1008., 1009., 1010., 1011., 1012., 1013., 1014., 1015., 1016., 1017., 1018., + 2001., 2002., 2003., 2004., 2005., 2006., 2007., 2008., 2009., 2010., 2011., 2012., 25., 26., + 27., 28., 29., 30., 31., 32., 33., 34., 35., 36., 37., 38., 39., 40., + 41., 42., 43., 44., 45., 46., 47., 48., 1019., 1020., 1021., 1022., 1023., 1024., + 1025., 1026., 1027., 1028., 1029., 1030., 1031., 1032., 1033., 1034., 1035., 1036., 2013., 2014., + 2015., 2016., 2017., 2018., 2019., 2020., 2021., 2022., 2023., 2024., 49., 50., 51., 52., + 53., 54., 55., 56., 57., 58., 59., 60., 61., 62., 63., 64., 65., 66., + 67., 68., 69., 70., 71., 72., 1037., 1038., 1039., 1040., 1041., 1042., 1043., 1044., + 1045., 1046., 1047., 1048., 1049., 1050., 1051., 1052., 1053., 1054., 2025., 2026., 2027., 2028., + 2029., 2030., 2031., 2032., 2033., 2034., 2035., 2036., 73., 74., 75., 76., 77., 78., + 79., 80., 81., 82., 83., 84., 85., 86., 87., 88., 89., 90., 91., 92., + 93., 94., 95., 96., 1055., 1056., 1057., 1058., 1059., 1060., 1061., 1062., 1063., 1064., + 1065., 1066., 1067., 1068., 1069., 1070., 1071., 1072., 2037., 2038., 2039., 2040., 2041., 2042., + 2043., 2044., 2045., 2046., 2047., 2048., 97., 98., 99., 100., 101., 102., 103., 104., + 105., 106., 107., 108., 109., 110., 111., 112., 113., 114., 115., 116., 117., 118., + 119., 120., 1073., 1074., 1075., 1076., 1077., 1078., 1079., 1080., 1081., 1082., 1083., 1084., + 1085., 1086., 1087., 1088., 1089., 1090., 2049., 2050., 2051., 2052., 2053., 2054., 2055., 2056., + 2057., 2058., 2059., 2060., 121., 122., 123., 124., 125., 126., 127., 128., 129., 130., + 131., 132., 133., 134., 135., 136., 137., 138., 139., 140., 141., 142., 143., 144., + 1091., 1092., 1093., 1094., 1095., 1096., 1097., 1098., 1099., 1100., 1101., 1102., 1103., 1104., + 1105., 1106., 1107., 1108., 2061., 2062., 2063., 2064., 2065., 2066., 2067., 2068., 2069., 2070., + 2071., 2072.}), "concat_5d"), }; return params; } std::vector generateCombinedParams5d() { - const std::vector> generatedParams { + const std::vector> generatedParams{ generateParams5d(), generateParams5d(), generateParams5d(), @@ -1058,16 +1154,24 @@ std::vector generateCombinedParams5d() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_Concat_With_Hardcoded_Refs, ReferenceConcatTest5d, - testing::ValuesIn(generateCombinedParams5d()), ReferenceConcatTest5d::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_Concat_With_Hardcoded_Refs, + ReferenceConcatTest5d, + testing::ValuesIn(generateCombinedParams5d()), + ReferenceConcatTest5d::getTestCaseName); //// concat_zero_length_1d_last struct ConcatParamsZeroLength1dLast { - ConcatParamsZeroLength1dLast( - const reference_tests::Tensor& A, const reference_tests::Tensor& B, const int32_t axis, - const reference_tests::Tensor& expected, const std::string& testcaseName = "") : - A(A), B(B), axis(axis), expected(expected), testcaseName(testcaseName) {} + ConcatParamsZeroLength1dLast(const reference_tests::Tensor& A, + const reference_tests::Tensor& B, + const int32_t axis, + const reference_tests::Tensor& expected, + const std::string& testcaseName = "") + : A(A), + B(B), + axis(axis), + expected(expected), + testcaseName(testcaseName) {} reference_tests::Tensor A; reference_tests::Tensor B; @@ -1076,7 +1180,8 @@ struct ConcatParamsZeroLength1dLast { std::string testcaseName; }; -class ReferenceConcatTestZeroLength1dLast : public testing::TestWithParam, public CommonReferenceTest { +class ReferenceConcatTestZeroLength1dLast : public testing::TestWithParam, + public CommonReferenceTest { public: void SetUp() override { auto params = GetParam(); @@ -1120,19 +1225,18 @@ TEST_P(ReferenceConcatTestZeroLength1dLast, CompareWithRefs) { template std::vector generateParamsZeroLength1dLast() { using T = typename element_type_traits::value_type; - std::vector params { - ConcatParamsZeroLength1dLast( - reference_tests::Tensor(ET, {4}, std::vector{1, 2, 3, 4}), - reference_tests::Tensor(ET, {0}, std::vector{0}), - 0, - reference_tests::Tensor(ET, {4}, std::vector{1, 2, 3, 4}), - "concat_zero_length_1d_last"), + std::vector params{ + ConcatParamsZeroLength1dLast(reference_tests::Tensor(ET, {4}, std::vector{1, 2, 3, 4}), + reference_tests::Tensor(ET, {0}, std::vector{0}), + 0, + reference_tests::Tensor(ET, {4}, std::vector{1, 2, 3, 4}), + "concat_zero_length_1d_last"), }; return params; } std::vector generateCombinedParamsZeroLength1dLast() { - const std::vector> generatedParams { + const std::vector> generatedParams{ generateParamsZeroLength1dLast(), generateParamsZeroLength1dLast(), generateParamsZeroLength1dLast(), @@ -1149,16 +1253,26 @@ std::vector generateCombinedParamsZeroLength1dLast return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_Concat_With_Hardcoded_Refs, ReferenceConcatTestZeroLength1dLast, - testing::ValuesIn(generateCombinedParamsZeroLength1dLast()), ReferenceConcatTestZeroLength1dLast::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_Concat_With_Hardcoded_Refs, + ReferenceConcatTestZeroLength1dLast, + testing::ValuesIn(generateCombinedParamsZeroLength1dLast()), + ReferenceConcatTestZeroLength1dLast::getTestCaseName); //// concat_zero_length_1d_middle struct ConcatParamsZeroLength1dMiddle { - ConcatParamsZeroLength1dMiddle( - const reference_tests::Tensor& A, const reference_tests::Tensor& B, const reference_tests::Tensor& C, const int32_t axis, - const reference_tests::Tensor& expected, const std::string& testcaseName = "") : - A(A), B(B), C(C), axis(axis), expected(expected), testcaseName(testcaseName) {} + ConcatParamsZeroLength1dMiddle(const reference_tests::Tensor& A, + const reference_tests::Tensor& B, + const reference_tests::Tensor& C, + const int32_t axis, + const reference_tests::Tensor& expected, + const std::string& testcaseName = "") + : A(A), + B(B), + C(C), + axis(axis), + expected(expected), + testcaseName(testcaseName) {} reference_tests::Tensor A; reference_tests::Tensor B; @@ -1168,7 +1282,8 @@ struct ConcatParamsZeroLength1dMiddle { std::string testcaseName; }; -class ReferenceConcatTestZeroLength1dMiddle : public testing::TestWithParam, public CommonReferenceTest { +class ReferenceConcatTestZeroLength1dMiddle : public testing::TestWithParam, + public CommonReferenceTest { public: void SetUp() override { auto params = GetParam(); @@ -1215,20 +1330,19 @@ TEST_P(ReferenceConcatTestZeroLength1dMiddle, CompareWithRefs) { template std::vector generateParamsZeroLength1dMiddle() { using T = typename element_type_traits::value_type; - std::vector params { - ConcatParamsZeroLength1dMiddle( - reference_tests::Tensor(ET, {4}, std::vector{1, 2, 3, 4}), - reference_tests::Tensor(ET, {0}, std::vector{0}), - reference_tests::Tensor(ET, {4}, std::vector{5, 6, 7, 8}), - 0, - reference_tests::Tensor(ET, {8}, std::vector{1, 2, 3, 4, 5, 6, 7, 8}), - "concat_zero_length_1d_middle"), + std::vector params{ + ConcatParamsZeroLength1dMiddle(reference_tests::Tensor(ET, {4}, std::vector{1, 2, 3, 4}), + reference_tests::Tensor(ET, {0}, std::vector{0}), + reference_tests::Tensor(ET, {4}, std::vector{5, 6, 7, 8}), + 0, + reference_tests::Tensor(ET, {8}, std::vector{1, 2, 3, 4, 5, 6, 7, 8}), + "concat_zero_length_1d_middle"), }; return params; } std::vector generateCombinedParamsZeroLength1dMiddle() { - const std::vector> generatedParams { + const std::vector> generatedParams{ generateParamsZeroLength1dMiddle(), generateParamsZeroLength1dMiddle(), generateParamsZeroLength1dMiddle(), @@ -1245,16 +1359,22 @@ std::vector generateCombinedParamsZeroLength1dMi return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_Concat_With_Hardcoded_Refs, ReferenceConcatTestZeroLength1dMiddle, - testing::ValuesIn(generateCombinedParamsZeroLength1dMiddle()), ReferenceConcatTestZeroLength1dMiddle::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_Concat_With_Hardcoded_Refs, + ReferenceConcatTestZeroLength1dMiddle, + testing::ValuesIn(generateCombinedParamsZeroLength1dMiddle()), + ReferenceConcatTestZeroLength1dMiddle::getTestCaseName); //// concat_zero_zero struct ConcatParamsZeroZero { - ConcatParamsZeroZero( - const reference_tests::Tensor& A, const int32_t axis, - const reference_tests::Tensor& expected, const std::string& testcaseName = "") : - A(A), axis(axis), expected(expected), testcaseName(testcaseName) {} + ConcatParamsZeroZero(const reference_tests::Tensor& A, + const int32_t axis, + const reference_tests::Tensor& expected, + const std::string& testcaseName = "") + : A(A), + axis(axis), + expected(expected), + testcaseName(testcaseName) {} reference_tests::Tensor A; int32_t axis; @@ -1303,18 +1423,17 @@ TEST_P(ReferenceConcatTestZeroZero, CompareWithRefs) { template std::vector generateParamsZeroZero() { using T = typename element_type_traits::value_type; - std::vector params { - ConcatParamsZeroZero( - reference_tests::Tensor(ET, {0}, std::vector{1}), - 0, - reference_tests::Tensor(ET, {0}, std::vector{}), - "concat_zero_zero"), + std::vector params{ + ConcatParamsZeroZero(reference_tests::Tensor(ET, {0}, std::vector{1}), + 0, + reference_tests::Tensor(ET, {0}, std::vector{}), + "concat_zero_zero"), }; return params; } std::vector generateCombinedParamsZeroZero() { - const std::vector> generatedParams { + const std::vector> generatedParams{ generateParamsZeroZero(), generateParamsZeroZero(), generateParamsZeroZero(), @@ -1331,16 +1450,26 @@ std::vector generateCombinedParamsZeroZero() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_Concat_With_Hardcoded_Refs, ReferenceConcatTestZeroZero, - testing::ValuesIn(generateCombinedParamsZeroZero()), ReferenceConcatTestZeroZero::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_Concat_With_Hardcoded_Refs, + ReferenceConcatTestZeroZero, + testing::ValuesIn(generateCombinedParamsZeroZero()), + ReferenceConcatTestZeroZero::getTestCaseName); //// concat_zero_length_4d_middle struct ConcatParamsZeroLength4dMiddle { - ConcatParamsZeroLength4dMiddle( - const reference_tests::Tensor& A, const reference_tests::Tensor& B, const reference_tests::Tensor& C, const int32_t axis, - const reference_tests::Tensor& expected, const std::string& testcaseName = "") : - A(A), B(B), C(C), axis(axis), expected(expected), testcaseName(testcaseName) {} + ConcatParamsZeroLength4dMiddle(const reference_tests::Tensor& A, + const reference_tests::Tensor& B, + const reference_tests::Tensor& C, + const int32_t axis, + const reference_tests::Tensor& expected, + const std::string& testcaseName = "") + : A(A), + B(B), + C(C), + axis(axis), + expected(expected), + testcaseName(testcaseName) {} reference_tests::Tensor A; reference_tests::Tensor B; @@ -1350,7 +1479,8 @@ struct ConcatParamsZeroLength4dMiddle { std::string testcaseName; }; -class ReferenceConcatTestZeroLength4dMiddle : public testing::TestWithParam, public CommonReferenceTest { +class ReferenceConcatTestZeroLength4dMiddle : public testing::TestWithParam, + public CommonReferenceTest { public: void SetUp() override { auto params = GetParam(); @@ -1397,7 +1527,7 @@ TEST_P(ReferenceConcatTestZeroLength4dMiddle, CompareWithRefs) { template std::vector generateParamsZeroLength4dMiddle() { using T = typename element_type_traits::value_type; - std::vector params { + std::vector params{ ConcatParamsZeroLength4dMiddle( reference_tests::Tensor(ET, {2, 2, 1, 1}, std::vector{1, 2, 3, 4}), reference_tests::Tensor(ET, {2, 2, 0, 1}, std::vector{0}), @@ -1410,7 +1540,7 @@ std::vector generateParamsZeroLength4dMiddle() { } std::vector generateCombinedParamsZeroLength4dMiddle() { - const std::vector> generatedParams { + const std::vector> generatedParams{ generateParamsZeroLength4dMiddle(), generateParamsZeroLength4dMiddle(), generateParamsZeroLength4dMiddle(), @@ -1427,8 +1557,9 @@ std::vector generateCombinedParamsZeroLength4dMi return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_Concat_With_Hardcoded_Refs, ReferenceConcatTestZeroLength4dMiddle, - testing::ValuesIn(generateCombinedParamsZeroLength4dMiddle()), ReferenceConcatTestZeroLength4dMiddle::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_Concat_With_Hardcoded_Refs, + ReferenceConcatTestZeroLength4dMiddle, + testing::ValuesIn(generateCombinedParamsZeroLength4dMiddle()), + ReferenceConcatTestZeroLength4dMiddle::getTestCaseName); - -} // namespace +} // namespace diff --git a/src/plugins/template/tests/functional/op_reference/constant.cpp b/src/plugins/template/tests/functional/op_reference/constant.cpp index 3f37e4a8e8f..ababb046e9c 100644 --- a/src/plugins/template/tests/functional/op_reference/constant.cpp +++ b/src/plugins/template/tests/functional/op_reference/constant.cpp @@ -2,14 +2,16 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/constant.hpp" + #include #include -#include "openvino/op/constant.hpp" -#include "openvino/op/abs.hpp" -#include "openvino/op/equal.hpp" + #include "base_reference_test.hpp" #include "functional_test_utils/skip_tests_config.hpp" +#include "openvino/op/abs.hpp" +#include "openvino/op/equal.hpp" using namespace reference_tests; using namespace ov; @@ -18,8 +20,10 @@ namespace { struct ConstantParams { template ConstantParams(const PartialShape& inputShape, - const element::Type& inType, const element::Type& refType, - const std::vector& inputData, const std::vector& refData, + const element::Type& inType, + const element::Type& refType, + const std::vector& inputData, + const std::vector& refData, const std::string& test_name = "") : inputShape(inputShape), inType(inType), @@ -155,9 +159,11 @@ TEST_P(ReferenceConstantLayerTest_EqualityBool, CompareWithHardcodedRefs) { template std::vector generateConstantParams() { using T = typename element_type_traits::value_type; - std::vector constantParams { + std::vector constantParams{ // tensor_constant - ConstantParams({2, 2, 2}, IN_ET, IN_ET, + ConstantParams({2, 2, 2}, + IN_ET, + IN_ET, std::vector{1, 2, 3, 4, 5, 6, 7, 8}, std::vector{1, 2, 3, 4, 5, 6, 7, 8}, "tensor_constant"), @@ -166,33 +172,41 @@ std::vector generateConstantParams() { } std::vector generateConstantDefinedTypeParams() { - std::vector constantParams { + std::vector constantParams{ // scalar_constant_float32 - ConstantParams({}, element::Type_t::f32, element::Type_t::f32, - std::vector{4.75}, - std::vector{4.75f}, - "scalar_constant_float32"), + ConstantParams({}, + element::Type_t::f32, + element::Type_t::f32, + std::vector{4.75}, + std::vector{4.75f}, + "scalar_constant_float32"), // scalar_constant_int64 - ConstantParams({}, element::Type_t::i64, element::Type_t::i64, - std::vector{0x4000000000000001}, - std::vector{0x4000000000000001}, - "scalar_constant_int64"), + ConstantParams({}, + element::Type_t::i64, + element::Type_t::i64, + std::vector{0x4000000000000001}, + std::vector{0x4000000000000001}, + "scalar_constant_int64"), // tensor_constant_float32 - ConstantParams({2, 2}, element::Type_t::f32, element::Type_t::f32, - std::vector{4.75, 4.5, -5.25, 0.0}, - std::vector{4.75f, 4.5f, -5.25f, 0.0f}, - "tensor_constant_float32"), + ConstantParams({2, 2}, + element::Type_t::f32, + element::Type_t::f32, + std::vector{4.75, 4.5, -5.25, 0.0}, + std::vector{4.75f, 4.5f, -5.25f, 0.0f}, + "tensor_constant_float32"), // tensor_constant_int64 - ConstantParams({2}, element::Type_t::i64, element::Type_t::i64, - std::vector{0x4000000000000001, 0x4000000000000002}, - std::vector{0x4000000000000001, 0x4000000000000002}, - "tensor_constant_int64"), + ConstantParams({2}, + element::Type_t::i64, + element::Type_t::i64, + std::vector{0x4000000000000001, 0x4000000000000002}, + std::vector{0x4000000000000001, 0x4000000000000002}, + "tensor_constant_int64"), }; return constantParams; } std::vector generateConstantCombinedParams() { - const std::vector> constantTypeParams { + const std::vector> constantTypeParams{ generateConstantParams(), generateConstantParams(), generateConstantParams(), @@ -216,7 +230,7 @@ std::vector generateConstantCombinedParams() { } std::vector generateConstant2ConstantCombinedParams() { - const std::vector> constantTypeParams { + const std::vector> constantTypeParams{ generateConstantParams(), generateConstantParams(), generateConstantParams(), @@ -241,9 +255,11 @@ std::vector generateConstant2ConstantCombinedParams() { template std::vector generateConstantWithOpParams() { using T = typename element_type_traits::value_type; - std::vector constantParams { + std::vector constantParams{ // tensor_constant_with_op - ConstantParams({2, 2, 2}, IN_ET, IN_ET, + ConstantParams({2, 2, 2}, + IN_ET, + IN_ET, std::vector{-1, 2, 3, -4, 5, -6, -7, 8}, std::vector{1, 2, 3, 4, 5, 6, 7, 8}, "tensor_constant_with_op"), @@ -252,7 +268,7 @@ std::vector generateConstantWithOpParams() { } std::vector generateConstantWithOpCombinedParams() { - const std::vector> constantTypeParams { + const std::vector> constantTypeParams{ generateConstantWithOpParams(), generateConstantWithOpParams(), generateConstantWithOpParams(), @@ -271,39 +287,53 @@ std::vector generateConstantWithOpCombinedParams() { } std::vector generateConstantDefinedTypeMultiUseCombinedParams() { - const std::vector combinedParams { + const std::vector combinedParams{ // constant_multi_use - ConstantParams({}, element::Type_t::i32, element::Type_t::i32, - std::vector{388}, - std::vector{388}, - "constant_multi_use"), + ConstantParams({}, + element::Type_t::i32, + element::Type_t::i32, + std::vector{388}, + std::vector{388}, + "constant_multi_use"), }; return combinedParams; } std::vector generateConstantDefinedTypeEqualityBoolCombinedParams() { - const std::vector combinedParams { + const std::vector combinedParams{ // constant_equality_bool - ConstantParams({4}, element::Type_t::boolean, element::Type_t::boolean, - std::vector{true, false, true, false}, - std::vector{true, false, true, false}, - "constant_equality_bool"), + ConstantParams({4}, + element::Type_t::boolean, + element::Type_t::boolean, + std::vector{true, false, true, false}, + std::vector{true, false, true, false}, + "constant_equality_bool"), }; return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_Constant_With_Hardcoded_Refs, ReferenceConstantLayerTest, - testing::ValuesIn(generateConstantCombinedParams()), ReferenceConstantLayerTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_Constant_With_Hardcoded_Refs, + ReferenceConstantLayerTest, + testing::ValuesIn(generateConstantCombinedParams()), + ReferenceConstantLayerTest::getTestCaseName); -INSTANTIATE_TEST_SUITE_P(smoke_Constant_With_Hardcoded_Refs, ReferenceConstantLayerTest_2Constant, - testing::ValuesIn(generateConstant2ConstantCombinedParams()), ReferenceConstantLayerTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_Constant_With_Hardcoded_Refs, + ReferenceConstantLayerTest_2Constant, + testing::ValuesIn(generateConstant2ConstantCombinedParams()), + ReferenceConstantLayerTest::getTestCaseName); -INSTANTIATE_TEST_SUITE_P(smoke_Constant_With_Hardcoded_Refs, ReferenceConstantLayerTest_WithOp, - testing::ValuesIn(generateConstantWithOpCombinedParams()), ReferenceConstantLayerTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_Constant_With_Hardcoded_Refs, + ReferenceConstantLayerTest_WithOp, + testing::ValuesIn(generateConstantWithOpCombinedParams()), + ReferenceConstantLayerTest::getTestCaseName); -INSTANTIATE_TEST_SUITE_P(smoke_Constant_With_Hardcoded_Refs, ReferenceConstantLayerTest_MultiUse, - testing::ValuesIn(generateConstantDefinedTypeMultiUseCombinedParams()), ReferenceConstantLayerTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_Constant_With_Hardcoded_Refs, + ReferenceConstantLayerTest_MultiUse, + testing::ValuesIn(generateConstantDefinedTypeMultiUseCombinedParams()), + ReferenceConstantLayerTest::getTestCaseName); -INSTANTIATE_TEST_SUITE_P(smoke_Constant_With_Hardcoded_Refs, ReferenceConstantLayerTest_EqualityBool, - testing::ValuesIn(generateConstantDefinedTypeEqualityBoolCombinedParams()), ReferenceConstantLayerTest::getTestCaseName); -} // namespace +INSTANTIATE_TEST_SUITE_P(smoke_Constant_With_Hardcoded_Refs, + ReferenceConstantLayerTest_EqualityBool, + testing::ValuesIn(generateConstantDefinedTypeEqualityBoolCombinedParams()), + ReferenceConstantLayerTest::getTestCaseName); +} // namespace diff --git a/src/plugins/template/tests/functional/op_reference/conversion.cpp b/src/plugins/template/tests/functional/op_reference/conversion.cpp index ddb258cda00..9c32c7d052c 100644 --- a/src/plugins/template/tests/functional/op_reference/conversion.cpp +++ b/src/plugins/template/tests/functional/op_reference/conversion.cpp @@ -10,6 +10,6 @@ namespace { TEST_P(ReferenceConversionLayerTest, CompareWithHardcodedRefs) { Exec(); } -} // namespace -} // namespace ConversionOpsRefTestDefinitions -} // namespace reference_tests +} // namespace +} // namespace ConversionOpsRefTestDefinitions +} // namespace reference_tests diff --git a/src/plugins/template/tests/functional/op_reference/conversion.hpp b/src/plugins/template/tests/functional/op_reference/conversion.hpp index 0f6b324eb75..8c97f8dcc41 100644 --- a/src/plugins/template/tests/functional/op_reference/conversion.hpp +++ b/src/plugins/template/tests/functional/op_reference/conversion.hpp @@ -17,16 +17,24 @@ namespace ConversionOpsRefTestDefinitions { using ov::test::utils::ConversionTypes; -static std::map conversionNames = { - {ConversionTypes::CONVERT, "Convert"}, - {ConversionTypes::CONVERT_LIKE, "ConvertLike"} -}; +static std::map conversionNames = {{ConversionTypes::CONVERT, "Convert"}, + {ConversionTypes::CONVERT_LIKE, "ConvertLike"}}; struct ConvertParams { template - ConvertParams(ConversionTypes convType, const ov::PartialShape& shape, const ov::element::Type& iType, - const ov::element::Type& oType, const std::vector& iValues, const std::vector& oValues, size_t iSize = 0, size_t oSize = 0) - : conversionType(convType), pshape(shape), inType(iType), outType(oType), inputData(CreateTensor(iType, iValues, iSize)), + ConvertParams(ConversionTypes convType, + const ov::PartialShape& shape, + const ov::element::Type& iType, + const ov::element::Type& oType, + const std::vector& iValues, + const std::vector& oValues, + size_t iSize = 0, + size_t oSize = 0) + : conversionType(convType), + pshape(shape), + inType(iType), + outType(oType), + inputData(CreateTensor(iType, iValues, iSize)), refData(CreateTensor(oType, oValues, oSize)) {} ConversionTypes conversionType; ov::PartialShape pshape; @@ -56,9 +64,10 @@ public: } private: - static std::shared_ptr CreateFunction(const ov::PartialShape& input_shape, const ov::element::Type& input_type, - const ov::element::Type& expected_output_type, - const ConversionTypes& conversion_type) { + static std::shared_ptr CreateFunction(const ov::PartialShape& input_shape, + const ov::element::Type& input_type, + const ov::element::Type& expected_output_type, + const ConversionTypes& conversion_type) { const auto in = std::make_shared(input_type, input_shape); std::shared_ptr convert; if (conversion_type == ConversionTypes::CONVERT) { @@ -69,8 +78,8 @@ private: } else { throw std::runtime_error("Incorrect type of Conversion operation"); } - return std::make_shared(ov::NodeVector {convert}, ov::ParameterVector {in}); + return std::make_shared(ov::NodeVector{convert}, ov::ParameterVector{in}); } }; -} // namespace ConversionOpsRefTestDefinitions -} // namespace reference_tests +} // namespace ConversionOpsRefTestDefinitions +} // namespace reference_tests diff --git a/src/plugins/template/tests/functional/op_reference/convert.cpp b/src/plugins/template/tests/functional/op_reference/convert.cpp index 61eb58ecb40..0f3e4714879 100644 --- a/src/plugins/template/tests/functional/op_reference/convert.cpp +++ b/src/plugins/template/tests/functional/op_reference/convert.cpp @@ -2,10 +2,12 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/convert.hpp" + #include + #include -#include "openvino/op/convert.hpp" #include "conversion.hpp" using namespace ov; @@ -15,392 +17,1277 @@ namespace ConversionOpsRefTestDefinitions { namespace { INSTANTIATE_TEST_SUITE_P( - smoke_Conversion_With_Hardcoded_Refs, ReferenceConversionLayerTest, + smoke_Conversion_With_Hardcoded_Refs, + ReferenceConversionLayerTest, ::testing::Values( // destination boolean - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {2, 3}, ov::element::u8, ov::element::boolean, - std::vector {0, 12, 23, 0, std::numeric_limits::lowest(), std::numeric_limits::max()}, - std::vector {0, 1, 1, 0, 0, 1}), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {2, 3}, ov::element::i32, ov::element::boolean, - std::vector {0, -12, 23, 0, std::numeric_limits::lowest(), std::numeric_limits::max()}, - std::vector {0, 1, 1, 0, 1, 1}), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {3, 3}, ov::element::f32, ov::element::boolean, - std::vector {0.f, 1.5745f, 0.12352f, 0.f, std::numeric_limits::lowest(), std::numeric_limits::max(), - std::numeric_limits::min(), std::numeric_limits::infinity(), -std::numeric_limits::infinity()}, - std::vector {0, 1, 1, 0, 1, 1, 1, 1, 1}), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{2, 3}, + ov::element::u8, + ov::element::boolean, + std::vector{0, + 12, + 23, + 0, + std::numeric_limits::lowest(), + std::numeric_limits::max()}, + std::vector{0, 1, 1, 0, 0, 1}), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{2, 3}, + ov::element::i32, + ov::element::boolean, + std::vector{0, + -12, + 23, + 0, + std::numeric_limits::lowest(), + std::numeric_limits::max()}, + std::vector{0, 1, 1, 0, 1, 1}), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{3, 3}, + ov::element::f32, + ov::element::boolean, + std::vector{0.f, + 1.5745f, + 0.12352f, + 0.f, + std::numeric_limits::lowest(), + std::numeric_limits::max(), + std::numeric_limits::min(), + std::numeric_limits::infinity(), + -std::numeric_limits::infinity()}, + std::vector{0, 1, 1, 0, 1, 1, 1, 1, 1}), // destination bf16 - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {1, 1, 3, 5}, ov::element::f32, ov::element::bf16, - std::vector {0.5f, 1.5f, 0.5f, 2.5f, 1.5f, 0.5f, 3.5f, 2.5f, 0.5f, 0.5f, 2.5f, 0.5f, 0.5f, 0.5f, 1.5f}, - std::vector {0.5f, 1.5f, 0.5f, 2.5f, 1.5f, 0.5f, 3.5f, 2.5f, 0.5f, 0.5f, 2.5f, 0.5f, 0.5f, 0.5f, 1.5f}), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {11}, ov::element::u8, ov::element::bf16, - std::vector {0, 10, 15, 20, 43, 56, 78, 99, 102, 130, 142}, - std::vector {0, 10, 15, 20, 43, 56, 78, 99, 102, 130, 142}), + ConvertParams( + ConversionTypes::CONVERT, + ov::PartialShape{1, 1, 3, 5}, + ov::element::f32, + ov::element::bf16, + std:: + vector{0.5f, 1.5f, 0.5f, 2.5f, 1.5f, 0.5f, 3.5f, 2.5f, 0.5f, 0.5f, 2.5f, 0.5f, 0.5f, 0.5f, 1.5f}, + std::vector< + bfloat16>{0.5f, 1.5f, 0.5f, 2.5f, 1.5f, 0.5f, 3.5f, 2.5f, 0.5f, 0.5f, 2.5f, 0.5f, 0.5f, 0.5f, 1.5f}), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{11}, + ov::element::u8, + ov::element::bf16, + std::vector{0, 10, 15, 20, 43, 56, 78, 99, 102, 130, 142}, + std::vector{0, 10, 15, 20, 43, 56, 78, 99, 102, 130, 142}), // destination f16 - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {1, 1, 3, 5}, ov::element::f32, ov::element::f16, - std::vector {0.5f, 1.5f, 0.5f, 2.5f, 1.5f, 0.5f, 3.5f, 2.5f, 0.5f, 0.5f, 2.5f, 0.5f, 0.5f, 0.5f, 1.5f}, - std::vector {0.5f, 1.5f, 0.5f, 2.5f, 1.5f, 0.5f, 3.5f, 2.5f, 0.5f, 0.5f, 2.5f, 0.5f, 0.5f, 0.5f, 1.5f}), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {11}, ov::element::u8, ov::element::f16, - std::vector {0, 10, 15, 20, 43, 56, 78, 99, 102, 130, 142}, std::vector {0, 10, 15, 20, 43, 56, 78, 99, 102, 130, 142}), + ConvertParams( + ConversionTypes::CONVERT, + ov::PartialShape{1, 1, 3, 5}, + ov::element::f32, + ov::element::f16, + std:: + vector{0.5f, 1.5f, 0.5f, 2.5f, 1.5f, 0.5f, 3.5f, 2.5f, 0.5f, 0.5f, 2.5f, 0.5f, 0.5f, 0.5f, 1.5f}, + std::vector< + float16>{0.5f, 1.5f, 0.5f, 2.5f, 1.5f, 0.5f, 3.5f, 2.5f, 0.5f, 0.5f, 2.5f, 0.5f, 0.5f, 0.5f, 1.5f}), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{11}, + ov::element::u8, + ov::element::f16, + std::vector{0, 10, 15, 20, 43, 56, 78, 99, 102, 130, 142}, + std::vector{0, 10, 15, 20, 43, 56, 78, 99, 102, 130, 142}), // destination f32 - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {2, 2}, ov::element::u1, ov::element::f32, std::vector {0xA0}, - std::vector {1.0f, 0.0f, 1.0f, 0.0f}, 4), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {2, 2}, ov::element::u4, ov::element::f32, std::vector {0xFB, 0x0A}, - std::vector {15.0f, 11.0f, 0.0f, 10.0f}, 4), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {2, 2}, ov::element::u8, ov::element::f32, std::vector {255, 128, 32, 0}, - std::vector {255.0f, 128.0f, 32.0f, 0.0f}), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {2, 2}, ov::element::u16, ov::element::f32, - std::vector {64000, 32000, 128, 0}, std::vector {64000.0f, 32000.0f, 128.0f, 0.0f}), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {2, 2}, ov::element::u32, ov::element::f32, - std::vector {4000000, 2000000, 128, 0}, std::vector {4000000.0f, 2000000.0f, 128.0f, 0.0f}), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {2, 2}, ov::element::u64, ov::element::f32, - std::vector {4000000, 2000000, 128, 0}, std::vector {4000000.0f, 2000000.0f, 128.0f, 0.0f}), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {2, 2}, ov::element::i4, ov::element::f32, std::vector {0xFE, 0xF2}, - std::vector {-1.0f, -2.0f, -1.0f, 2.0f}, 4), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {2, 2}, ov::element::i8, ov::element::f32, std::vector {-127, -0, 0, 127}, - std::vector {-127.0f, -0.0f, 0.0f, 127.0f}), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {2, 2}, ov::element::i16, ov::element::f32, - std::vector {-32000, -0, 0, 32000}, std::vector {-32000.0f, -0.0f, 0.0f, 32000.0f}), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {2, 2}, ov::element::i32, ov::element::f32, - std::vector {-64000, -0, 0, 64000}, std::vector {-64000.0f, -0.0f, 0.0f, 64000.0f}), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {2, 2}, ov::element::i64, ov::element::f32, - std::vector {-64000, -0, 0, 64000}, std::vector {-64000.0f, -0.0f, 0.0f, 64000.0f}), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {1, 1, 3, 5}, ov::element::bf16, ov::element::f32, - std::vector {0.5f, 1.5f, 0.5f, 2.5f, 1.5f, 0.5f, 3.5f, 2.5f, 0.5f, 0.5f, 2.5f, 0.5f, 0.5f, 0.5f, 1.5f}, - std::vector {0.5f, 1.5f, 0.5f, 2.5f, 1.5f, 0.5f, 3.5f, 2.5f, 0.5f, 0.5f, 2.5f, 0.5f, 0.5f, 0.5f, 1.5f}), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {1, 1, 3, 5}, ov::element::f16, ov::element::f32, - std::vector {0.5f, 1.5f, 0.5f, 2.5f, 1.5f, 0.5f, 3.5f, 2.5f, 0.5f, 0.5f, 2.5f, 0.5f, 0.5f, 0.5f, 1.5f}, - std::vector {0.5f, 1.5f, 0.5f, 2.5f, 1.5f, 0.5f, 3.5f, 2.5f, 0.5f, 0.5f, 2.5f, 0.5f, 0.5f, 0.5f, 1.5f}), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {1, 1, 3, 5}, ov::element::f32, ov::element::f32, - std::vector {0.5f, 1.5f, 0.5f, 2.5f, 1.5f, 0.5f, 3.5f, 2.5f, 0.5f, 0.5f, 2.5f, 0.5f, 0.5f, 0.5f, 1.5f}, - std::vector {0.5f, 1.5f, 0.5f, 2.5f, 1.5f, 0.5f, 3.5f, 2.5f, 0.5f, 0.5f, 2.5f, 0.5f, 0.5f, 0.5f, 1.5f}), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{2, 2}, + ov::element::u1, + ov::element::f32, + std::vector{0xA0}, + std::vector{1.0f, 0.0f, 1.0f, 0.0f}, + 4), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{2, 2}, + ov::element::u4, + ov::element::f32, + std::vector{0xFB, 0x0A}, + std::vector{15.0f, 11.0f, 0.0f, 10.0f}, + 4), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{2, 2}, + ov::element::u8, + ov::element::f32, + std::vector{255, 128, 32, 0}, + std::vector{255.0f, 128.0f, 32.0f, 0.0f}), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{2, 2}, + ov::element::u16, + ov::element::f32, + std::vector{64000, 32000, 128, 0}, + std::vector{64000.0f, 32000.0f, 128.0f, 0.0f}), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{2, 2}, + ov::element::u32, + ov::element::f32, + std::vector{4000000, 2000000, 128, 0}, + std::vector{4000000.0f, 2000000.0f, 128.0f, 0.0f}), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{2, 2}, + ov::element::u64, + ov::element::f32, + std::vector{4000000, 2000000, 128, 0}, + std::vector{4000000.0f, 2000000.0f, 128.0f, 0.0f}), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{2, 2}, + ov::element::i4, + ov::element::f32, + std::vector{0xFE, 0xF2}, + std::vector{-1.0f, -2.0f, -1.0f, 2.0f}, + 4), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{2, 2}, + ov::element::i8, + ov::element::f32, + std::vector{-127, -0, 0, 127}, + std::vector{-127.0f, -0.0f, 0.0f, 127.0f}), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{2, 2}, + ov::element::i16, + ov::element::f32, + std::vector{-32000, -0, 0, 32000}, + std::vector{-32000.0f, -0.0f, 0.0f, 32000.0f}), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{2, 2}, + ov::element::i32, + ov::element::f32, + std::vector{-64000, -0, 0, 64000}, + std::vector{-64000.0f, -0.0f, 0.0f, 64000.0f}), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{2, 2}, + ov::element::i64, + ov::element::f32, + std::vector{-64000, -0, 0, 64000}, + std::vector{-64000.0f, -0.0f, 0.0f, 64000.0f}), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{1, 1, 3, 5}, + ov::element::bf16, + ov::element::f32, + std::vector{0.5f, + 1.5f, + 0.5f, + 2.5f, + 1.5f, + 0.5f, + 3.5f, + 2.5f, + 0.5f, + 0.5f, + 2.5f, + 0.5f, + 0.5f, + 0.5f, + 1.5f}, + std::vector{0.5f, + 1.5f, + 0.5f, + 2.5f, + 1.5f, + 0.5f, + 3.5f, + 2.5f, + 0.5f, + 0.5f, + 2.5f, + 0.5f, + 0.5f, + 0.5f, + 1.5f}), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{1, 1, 3, 5}, + ov::element::f16, + ov::element::f32, + std::vector{0.5f, + 1.5f, + 0.5f, + 2.5f, + 1.5f, + 0.5f, + 3.5f, + 2.5f, + 0.5f, + 0.5f, + 2.5f, + 0.5f, + 0.5f, + 0.5f, + 1.5f}, + std::vector{0.5f, + 1.5f, + 0.5f, + 2.5f, + 1.5f, + 0.5f, + 3.5f, + 2.5f, + 0.5f, + 0.5f, + 2.5f, + 0.5f, + 0.5f, + 0.5f, + 1.5f}), + ConvertParams( + ConversionTypes::CONVERT, + ov::PartialShape{1, 1, 3, 5}, + ov::element::f32, + ov::element::f32, + std:: + vector{0.5f, 1.5f, 0.5f, 2.5f, 1.5f, 0.5f, 3.5f, 2.5f, 0.5f, 0.5f, 2.5f, 0.5f, 0.5f, 0.5f, 1.5f}, + std::vector< + float>{0.5f, 1.5f, 0.5f, 2.5f, 1.5f, 0.5f, 3.5f, 2.5f, 0.5f, 0.5f, 2.5f, 0.5f, 0.5f, 0.5f, 1.5f}), // destination i4 - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::u1, ov::element::i4, std::vector {0xA0}, - std::vector {0x10, 0x10}, 4, 4), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::u4, ov::element::i4, std::vector {0x12, 0x03}, - std::vector {0x12, 0x03}, 4, 4), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::u8, ov::element::i4, std::vector {1, 2, 0, 3}, - std::vector {0x12, 0x03}, 4, 4), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::u16, ov::element::i4, std::vector {1, 2, 0, 3}, - std::vector {0x12, 0x03}, 4, 4), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::u32, ov::element::i4, std::vector {1, 2, 0, 3}, - std::vector {0x12, 0x03}, 4, 4), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::u64, ov::element::i4, std::vector {1, 2, 0, 3}, - std::vector {0x12, 0x03}, 4, 4), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::i4, ov::element::i4, std::vector {0xFE, 0x03}, - std::vector {0xFE, 0x03}, 4, 4), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::i8, ov::element::i4, std::vector {-1, -2, 2, 3}, - std::vector {0xFE, 0x23}, 4, 4), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::i16, ov::element::i4, std::vector {-1, -2, 2, 3}, - std::vector {0xFE, 0x23}, 4, 4), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::i32, ov::element::i4, std::vector {-1, -2, 2, 3}, - std::vector {0xFE, 0x23}, 4, 4), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::i64, ov::element::i4, std::vector {-1, -2, 2, 3}, - std::vector {0xFE, 0x23}, 4, 4), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::f16, ov::element::i4, - std::vector {-1, -2, 0, 3}, std::vector {0xFE, 0x03}, 4, 4), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::bf16, ov::element::i4, - std::vector {-1, -2, 0, 3}, std::vector {0xFE, 0x03}, 4, 4), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::f32, ov::element::i4, std::vector {-1, -2, 2, 3}, - std::vector {0xFE, 0x23}, 4, 4), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::u1, + ov::element::i4, + std::vector{0xA0}, + std::vector{0x10, 0x10}, + 4, + 4), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::u4, + ov::element::i4, + std::vector{0x12, 0x03}, + std::vector{0x12, 0x03}, + 4, + 4), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::u8, + ov::element::i4, + std::vector{1, 2, 0, 3}, + std::vector{0x12, 0x03}, + 4, + 4), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::u16, + ov::element::i4, + std::vector{1, 2, 0, 3}, + std::vector{0x12, 0x03}, + 4, + 4), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::u32, + ov::element::i4, + std::vector{1, 2, 0, 3}, + std::vector{0x12, 0x03}, + 4, + 4), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::u64, + ov::element::i4, + std::vector{1, 2, 0, 3}, + std::vector{0x12, 0x03}, + 4, + 4), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::i4, + ov::element::i4, + std::vector{0xFE, 0x03}, + std::vector{0xFE, 0x03}, + 4, + 4), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::i8, + ov::element::i4, + std::vector{-1, -2, 2, 3}, + std::vector{0xFE, 0x23}, + 4, + 4), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::i16, + ov::element::i4, + std::vector{-1, -2, 2, 3}, + std::vector{0xFE, 0x23}, + 4, + 4), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::i32, + ov::element::i4, + std::vector{-1, -2, 2, 3}, + std::vector{0xFE, 0x23}, + 4, + 4), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::i64, + ov::element::i4, + std::vector{-1, -2, 2, 3}, + std::vector{0xFE, 0x23}, + 4, + 4), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::f16, + ov::element::i4, + std::vector{-1, -2, 0, 3}, + std::vector{0xFE, 0x03}, + 4, + 4), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::bf16, + ov::element::i4, + std::vector{-1, -2, 0, 3}, + std::vector{0xFE, 0x03}, + 4, + 4), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::f32, + ov::element::i4, + std::vector{-1, -2, 2, 3}, + std::vector{0xFE, 0x23}, + 4, + 4), // destination i8 - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {8}, ov::element::u1, ov::element::i8, std::vector {0x81}, - std::vector {1, 0, 0, 0, 0, 0, 0, 1}, 8), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::u4, ov::element::i8, std::vector {0x21, 0x43}, - std::vector {2, 1, 4, 3}, 4), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::u8, ov::element::i8, std::vector {1, 2, 0, 3}, - std::vector {1, 2, 0, 3}), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::u16, ov::element::i8, std::vector {1, 2, 0, 3}, - std::vector {1, 2, 0, 3}), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::u32, ov::element::i8, std::vector {1, 2, 0, 3}, - std::vector {1, 2, 0, 3}), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::u64, ov::element::i8, std::vector {1, 2, 0, 3}, - std::vector {1, 2, 0, 3}), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::i4, ov::element::i8, std::vector {0x21, 0x43}, - std::vector {2, 1, 4, 3}, 4), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::i8, ov::element::i8, std::vector {-1, -2, 2, 3}, - std::vector {-1, -2, 2, 3}), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::i16, ov::element::i8, std::vector {-1, -2, 2, 3}, - std::vector {-1, -2, 2, 3}), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::i32, ov::element::i8, std::vector {-1, -2, 2, 3}, - std::vector {-1, -2, 2, 3}), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::i64, ov::element::i8, std::vector {-1, -2, 2, 3}, - std::vector {-1, -2, 2, 3}), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::f16, ov::element::i8, - std::vector {-1, -2, 0, 3}, std::vector {-1, -2, 0, 3}), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::bf16, ov::element::i8, - std::vector {-1, -2, 0, 3}, std::vector {-1, -2, 0, 3}), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::f32, ov::element::i8, std::vector {-1, -2, 2.2, 3.8}, - std::vector {-1, -2, 2, 3}), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{8}, + ov::element::u1, + ov::element::i8, + std::vector{0x81}, + std::vector{1, 0, 0, 0, 0, 0, 0, 1}, + 8), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::u4, + ov::element::i8, + std::vector{0x21, 0x43}, + std::vector{2, 1, 4, 3}, + 4), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::u8, + ov::element::i8, + std::vector{1, 2, 0, 3}, + std::vector{1, 2, 0, 3}), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::u16, + ov::element::i8, + std::vector{1, 2, 0, 3}, + std::vector{1, 2, 0, 3}), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::u32, + ov::element::i8, + std::vector{1, 2, 0, 3}, + std::vector{1, 2, 0, 3}), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::u64, + ov::element::i8, + std::vector{1, 2, 0, 3}, + std::vector{1, 2, 0, 3}), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::i4, + ov::element::i8, + std::vector{0x21, 0x43}, + std::vector{2, 1, 4, 3}, + 4), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::i8, + ov::element::i8, + std::vector{-1, -2, 2, 3}, + std::vector{-1, -2, 2, 3}), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::i16, + ov::element::i8, + std::vector{-1, -2, 2, 3}, + std::vector{-1, -2, 2, 3}), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::i32, + ov::element::i8, + std::vector{-1, -2, 2, 3}, + std::vector{-1, -2, 2, 3}), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::i64, + ov::element::i8, + std::vector{-1, -2, 2, 3}, + std::vector{-1, -2, 2, 3}), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::f16, + ov::element::i8, + std::vector{-1, -2, 0, 3}, + std::vector{-1, -2, 0, 3}), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::bf16, + ov::element::i8, + std::vector{-1, -2, 0, 3}, + std::vector{-1, -2, 0, 3}), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::f32, + ov::element::i8, + std::vector{-1, -2, 2.2, 3.8}, + std::vector{-1, -2, 2, 3}), // destination i16 - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {8}, ov::element::u1, ov::element::i16, std::vector {0x81}, - std::vector {1, 0, 0, 0, 0, 0, 0, 1}, 8), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::u4, ov::element::i16, std::vector {0x21, 0x43}, - std::vector {2, 1, 4, 3}, 4), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::u8, ov::element::i16, std::vector {1, 2, 0, 3}, - std::vector {1, 2, 0, 3}), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::u16, ov::element::i16, std::vector {1, 2, 0, 3}, - std::vector {1, 2, 0, 3}), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::u32, ov::element::i16, std::vector {1, 2, 0, 3}, - std::vector {1, 2, 0, 3}), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::u64, ov::element::i16, std::vector {1, 2, 0, 3}, - std::vector {1, 2, 0, 3}), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::i4, ov::element::i16, std::vector {0x21, 0x43}, - std::vector {2, 1, 4, 3}, 4), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::i8, ov::element::i16, std::vector {-1, -2, 2, 3}, - std::vector {-1, -2, 2, 3}), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::i16, ov::element::i16, std::vector {-1, -2, 2, 3}, - std::vector {-1, -2, 2, 3}), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::i32, ov::element::i16, std::vector {-1, -2, 2, 3}, - std::vector {-1, -2, 2, 3}), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::i64, ov::element::i16, std::vector {-1, -2, 2, 3}, - std::vector {-1, -2, 2, 3}), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::f16, ov::element::i16, - std::vector {-1, -2, 0, 3}, std::vector {-1, -2, 0, 3}), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::bf16, ov::element::i16, - std::vector {-1, -2, 0, 3}, std::vector {-1, -2, 0, 3}), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::f32, ov::element::i16, std::vector {-1, -2, 2.2, 3.8}, - std::vector {-1, -2, 2, 3}), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{8}, + ov::element::u1, + ov::element::i16, + std::vector{0x81}, + std::vector{1, 0, 0, 0, 0, 0, 0, 1}, + 8), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::u4, + ov::element::i16, + std::vector{0x21, 0x43}, + std::vector{2, 1, 4, 3}, + 4), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::u8, + ov::element::i16, + std::vector{1, 2, 0, 3}, + std::vector{1, 2, 0, 3}), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::u16, + ov::element::i16, + std::vector{1, 2, 0, 3}, + std::vector{1, 2, 0, 3}), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::u32, + ov::element::i16, + std::vector{1, 2, 0, 3}, + std::vector{1, 2, 0, 3}), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::u64, + ov::element::i16, + std::vector{1, 2, 0, 3}, + std::vector{1, 2, 0, 3}), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::i4, + ov::element::i16, + std::vector{0x21, 0x43}, + std::vector{2, 1, 4, 3}, + 4), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::i8, + ov::element::i16, + std::vector{-1, -2, 2, 3}, + std::vector{-1, -2, 2, 3}), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::i16, + ov::element::i16, + std::vector{-1, -2, 2, 3}, + std::vector{-1, -2, 2, 3}), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::i32, + ov::element::i16, + std::vector{-1, -2, 2, 3}, + std::vector{-1, -2, 2, 3}), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::i64, + ov::element::i16, + std::vector{-1, -2, 2, 3}, + std::vector{-1, -2, 2, 3}), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::f16, + ov::element::i16, + std::vector{-1, -2, 0, 3}, + std::vector{-1, -2, 0, 3}), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::bf16, + ov::element::i16, + std::vector{-1, -2, 0, 3}, + std::vector{-1, -2, 0, 3}), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::f32, + ov::element::i16, + std::vector{-1, -2, 2.2, 3.8}, + std::vector{-1, -2, 2, 3}), // destination i32 - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {8}, ov::element::u1, ov::element::i32, std::vector {0x81}, - std::vector {1, 0, 0, 0, 0, 0, 0, 1}, 8), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::u4, ov::element::i32, std::vector {0x21, 0x43}, - std::vector {2, 1, 4, 3}, 4), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::u8, ov::element::i32, std::vector {1, 2, 0, 3}, - std::vector {1, 2, 0, 3}), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::u16, ov::element::i32, std::vector {1, 2, 0, 3}, - std::vector {1, 2, 0, 3}), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::u32, ov::element::i32, std::vector {1, 2, 0, 3}, - std::vector {1, 2, 0, 3}), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::u64, ov::element::i32, std::vector {1, 2, 0, 3}, - std::vector {1, 2, 0, 3}), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::i4, ov::element::i32, std::vector {0x21, 0x43}, - std::vector {2, 1, 4, 3}, 4), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::i8, ov::element::i32, std::vector {-1, -2, 2, 3}, - std::vector {-1, -2, 2, 3}), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::i16, ov::element::i32, std::vector {-1, -2, 2, 3}, - std::vector {-1, -2, 2, 3}), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::i32, ov::element::i32, std::vector {-1, -2, 2, 3}, - std::vector {-1, -2, 2, 3}), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::i64, ov::element::i32, std::vector {-1, -2, 2, 3}, - std::vector {-1, -2, 2, 3}), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::f16, ov::element::i32, - std::vector {-1, -2, 0, 3}, std::vector {-1, -2, 0, 3}), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::bf16, ov::element::i32, - std::vector {-1, -2, 0, 3}, std::vector {-1, -2, 0, 3}), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::f32, ov::element::i32, std::vector {-1, -2, 2.2, 3.8}, - std::vector {-1, -2, 2, 3}), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{8}, + ov::element::u1, + ov::element::i32, + std::vector{0x81}, + std::vector{1, 0, 0, 0, 0, 0, 0, 1}, + 8), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::u4, + ov::element::i32, + std::vector{0x21, 0x43}, + std::vector{2, 1, 4, 3}, + 4), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::u8, + ov::element::i32, + std::vector{1, 2, 0, 3}, + std::vector{1, 2, 0, 3}), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::u16, + ov::element::i32, + std::vector{1, 2, 0, 3}, + std::vector{1, 2, 0, 3}), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::u32, + ov::element::i32, + std::vector{1, 2, 0, 3}, + std::vector{1, 2, 0, 3}), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::u64, + ov::element::i32, + std::vector{1, 2, 0, 3}, + std::vector{1, 2, 0, 3}), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::i4, + ov::element::i32, + std::vector{0x21, 0x43}, + std::vector{2, 1, 4, 3}, + 4), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::i8, + ov::element::i32, + std::vector{-1, -2, 2, 3}, + std::vector{-1, -2, 2, 3}), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::i16, + ov::element::i32, + std::vector{-1, -2, 2, 3}, + std::vector{-1, -2, 2, 3}), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::i32, + ov::element::i32, + std::vector{-1, -2, 2, 3}, + std::vector{-1, -2, 2, 3}), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::i64, + ov::element::i32, + std::vector{-1, -2, 2, 3}, + std::vector{-1, -2, 2, 3}), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::f16, + ov::element::i32, + std::vector{-1, -2, 0, 3}, + std::vector{-1, -2, 0, 3}), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::bf16, + ov::element::i32, + std::vector{-1, -2, 0, 3}, + std::vector{-1, -2, 0, 3}), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::f32, + ov::element::i32, + std::vector{-1, -2, 2.2, 3.8}, + std::vector{-1, -2, 2, 3}), // destination i64 - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {8}, ov::element::u1, ov::element::i64, std::vector {0x81}, - std::vector {1, 0, 0, 0, 0, 0, 0, 1}, 8), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::u4, ov::element::i64, std::vector {0x21, 0x43}, - std::vector {2, 1, 4, 3}, 4), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::u8, ov::element::i64, std::vector {1, 2, 0, 3}, - std::vector {1, 2, 0, 3}), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::u16, ov::element::i64, std::vector {1, 2, 0, 3}, - std::vector {1, 2, 0, 3}), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::u32, ov::element::i64, std::vector {1, 2, 0, 3}, - std::vector {1, 2, 0, 3}), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::u64, ov::element::i64, std::vector {1, 2, 0, 3}, - std::vector {1, 2, 0, 3}), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::i4, ov::element::i64, std::vector {0x21, 0x43}, - std::vector {2, 1, 4, 3}, 4), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::i8, ov::element::i64, std::vector {-1, -2, 2, 3}, - std::vector {-1, -2, 2, 3}), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::i16, ov::element::i64, std::vector {-1, -2, 2, 3}, - std::vector {-1, -2, 2, 3}), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::i32, ov::element::i64, std::vector {-1, -2, 2, 3}, - std::vector {-1, -2, 2, 3}), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::i64, ov::element::i64, std::vector {-1, -2, 2, 3}, - std::vector {-1, -2, 2, 3}), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::f16, ov::element::i64, - std::vector {-1, -2, 0, 3}, std::vector {-1, -2, 0, 3}), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::bf16, ov::element::i64, - std::vector {-1, -2, 0, 3}, std::vector {-1, -2, 0, 3}), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::f32, ov::element::i64, std::vector {-1, -2, 2.2, 3.8}, - std::vector {-1, -2, 2, 3}), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{8}, + ov::element::u1, + ov::element::i64, + std::vector{0x81}, + std::vector{1, 0, 0, 0, 0, 0, 0, 1}, + 8), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::u4, + ov::element::i64, + std::vector{0x21, 0x43}, + std::vector{2, 1, 4, 3}, + 4), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::u8, + ov::element::i64, + std::vector{1, 2, 0, 3}, + std::vector{1, 2, 0, 3}), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::u16, + ov::element::i64, + std::vector{1, 2, 0, 3}, + std::vector{1, 2, 0, 3}), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::u32, + ov::element::i64, + std::vector{1, 2, 0, 3}, + std::vector{1, 2, 0, 3}), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::u64, + ov::element::i64, + std::vector{1, 2, 0, 3}, + std::vector{1, 2, 0, 3}), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::i4, + ov::element::i64, + std::vector{0x21, 0x43}, + std::vector{2, 1, 4, 3}, + 4), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::i8, + ov::element::i64, + std::vector{-1, -2, 2, 3}, + std::vector{-1, -2, 2, 3}), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::i16, + ov::element::i64, + std::vector{-1, -2, 2, 3}, + std::vector{-1, -2, 2, 3}), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::i32, + ov::element::i64, + std::vector{-1, -2, 2, 3}, + std::vector{-1, -2, 2, 3}), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::i64, + ov::element::i64, + std::vector{-1, -2, 2, 3}, + std::vector{-1, -2, 2, 3}), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::f16, + ov::element::i64, + std::vector{-1, -2, 0, 3}, + std::vector{-1, -2, 0, 3}), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::bf16, + ov::element::i64, + std::vector{-1, -2, 0, 3}, + std::vector{-1, -2, 0, 3}), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::f32, + ov::element::i64, + std::vector{-1, -2, 2.2, 3.8}, + std::vector{-1, -2, 2, 3}), // destination u1 - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {8}, ov::element::u1, ov::element::u1, std::vector {0xA0}, - std::vector {0xA0}, 8, 8), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {8}, ov::element::u4, ov::element::u1, - std::vector {0x10, 0x01, 0x00, 0x00}, std::vector {0x90}, 8, 8), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {8}, ov::element::u8, ov::element::u1, - std::vector {1, 0, 1, 0, 0, 0, 0, 1}, std::vector {0xA1}, 8, 8), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {8}, ov::element::u16, ov::element::u1, - std::vector {1, 0, 1, 0, 0, 0, 0, 1}, std::vector {0xA1}, 8, 8), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {8}, ov::element::u32, ov::element::u1, - std::vector {1, 0, 1, 0, 0, 0, 0, 1}, std::vector {0xA1}, 8, 8), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {8}, ov::element::u64, ov::element::u1, - std::vector {1, 0, 1, 0, 0, 0, 0, 1}, std::vector {0xA1}, 8, 8), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {8}, ov::element::i4, ov::element::u1, - std::vector {0x10, 0x01, 0x00, 0x00}, std::vector {0x90}, 8, 8), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {8}, ov::element::i8, ov::element::u1, - std::vector {1, 0, 1, 0, 0, 0, 0, 1}, std::vector {0xA1}, 8, 8), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {8}, ov::element::i16, ov::element::u1, - std::vector {1, 0, 1, 0, 0, 0, 0, 1}, std::vector {0xA1}, 8, 8), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {8}, ov::element::i32, ov::element::u1, - std::vector {1, 0, 1, 0, 0, 0, 0, 1}, std::vector {0xA1}, 8, 8), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {8}, ov::element::i64, ov::element::u1, - std::vector {1, 0, 1, 0, 0, 0, 0, 1}, std::vector {0xA1}, 8, 8), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {8}, ov::element::f16, ov::element::u1, - std::vector {1, 0, 1, 0, 0, 0, 0, 1}, std::vector {0xA1}, 8, 8), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {8}, ov::element::bf16, ov::element::u1, - std::vector {1, 0, 1, 0, 0, 0, 0, 1}, std::vector {0xA1}, 8, 8), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {8}, ov::element::f32, ov::element::u1, - std::vector {1, 0, 1, 0, 0, 0, 0, 1}, std::vector {0xA1}, 8, 8), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{8}, + ov::element::u1, + ov::element::u1, + std::vector{0xA0}, + std::vector{0xA0}, + 8, + 8), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{8}, + ov::element::u4, + ov::element::u1, + std::vector{0x10, 0x01, 0x00, 0x00}, + std::vector{0x90}, + 8, + 8), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{8}, + ov::element::u8, + ov::element::u1, + std::vector{1, 0, 1, 0, 0, 0, 0, 1}, + std::vector{0xA1}, + 8, + 8), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{8}, + ov::element::u16, + ov::element::u1, + std::vector{1, 0, 1, 0, 0, 0, 0, 1}, + std::vector{0xA1}, + 8, + 8), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{8}, + ov::element::u32, + ov::element::u1, + std::vector{1, 0, 1, 0, 0, 0, 0, 1}, + std::vector{0xA1}, + 8, + 8), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{8}, + ov::element::u64, + ov::element::u1, + std::vector{1, 0, 1, 0, 0, 0, 0, 1}, + std::vector{0xA1}, + 8, + 8), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{8}, + ov::element::i4, + ov::element::u1, + std::vector{0x10, 0x01, 0x00, 0x00}, + std::vector{0x90}, + 8, + 8), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{8}, + ov::element::i8, + ov::element::u1, + std::vector{1, 0, 1, 0, 0, 0, 0, 1}, + std::vector{0xA1}, + 8, + 8), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{8}, + ov::element::i16, + ov::element::u1, + std::vector{1, 0, 1, 0, 0, 0, 0, 1}, + std::vector{0xA1}, + 8, + 8), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{8}, + ov::element::i32, + ov::element::u1, + std::vector{1, 0, 1, 0, 0, 0, 0, 1}, + std::vector{0xA1}, + 8, + 8), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{8}, + ov::element::i64, + ov::element::u1, + std::vector{1, 0, 1, 0, 0, 0, 0, 1}, + std::vector{0xA1}, + 8, + 8), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{8}, + ov::element::f16, + ov::element::u1, + std::vector{1, 0, 1, 0, 0, 0, 0, 1}, + std::vector{0xA1}, + 8, + 8), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{8}, + ov::element::bf16, + ov::element::u1, + std::vector{1, 0, 1, 0, 0, 0, 0, 1}, + std::vector{0xA1}, + 8, + 8), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{8}, + ov::element::f32, + ov::element::u1, + std::vector{1, 0, 1, 0, 0, 0, 0, 1}, + std::vector{0xA1}, + 8, + 8), // destination u4 - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::u1, ov::element::u4, std::vector {0xA0}, - std::vector {0x10, 0x10}, 4, 4), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::u4, ov::element::u4, std::vector {0x12, 0x03}, - std::vector {0x12, 0x03}, 4, 4), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::u8, ov::element::u4, std::vector {1, 2, 0, 3}, - std::vector {0x12, 0x03}, 4, 4), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::u16, ov::element::u4, std::vector {1, 2, 0, 3}, - std::vector {0x12, 0x03}, 4, 4), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::u32, ov::element::u4, std::vector {1, 2, 0, 3}, - std::vector {0x12, 0x03}, 4, 4), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::u64, ov::element::u4, std::vector {1, 2, 0, 3}, - std::vector {0x12, 0x03}, 4, 4), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::i4, ov::element::u4, std::vector {0xFE, 0x03}, - std::vector {0xFE, 0x03}, 4, 4), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::i8, ov::element::u4, std::vector {-1, -2, 2, 3}, - std::vector {0xFE, 0x23}, 4, 4), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::i16, ov::element::u4, std::vector {-1, -2, 2, 3}, - std::vector {0xFE, 0x23}, 4, 4), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::i32, ov::element::u4, std::vector {-1, -2, 2, 3}, - std::vector {0xFE, 0x23}, 4, 4), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::i64, ov::element::u4, std::vector {-1, -2, 2, 3}, - std::vector {0xFE, 0x23}, 4, 4), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::f16, ov::element::u4, - std::vector {-1, -2, 0, 3}, std::vector {0xFE, 0x03}, 4, 4), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::bf16, ov::element::u4, - std::vector {-1, -2, 0, 3}, std::vector {0xFE, 0x03}, 4, 4), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::f32, ov::element::u4, std::vector {-1, -2, 2, 3}, - std::vector {0xFE, 0x23}, 4, 4), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::u1, + ov::element::u4, + std::vector{0xA0}, + std::vector{0x10, 0x10}, + 4, + 4), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::u4, + ov::element::u4, + std::vector{0x12, 0x03}, + std::vector{0x12, 0x03}, + 4, + 4), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::u8, + ov::element::u4, + std::vector{1, 2, 0, 3}, + std::vector{0x12, 0x03}, + 4, + 4), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::u16, + ov::element::u4, + std::vector{1, 2, 0, 3}, + std::vector{0x12, 0x03}, + 4, + 4), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::u32, + ov::element::u4, + std::vector{1, 2, 0, 3}, + std::vector{0x12, 0x03}, + 4, + 4), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::u64, + ov::element::u4, + std::vector{1, 2, 0, 3}, + std::vector{0x12, 0x03}, + 4, + 4), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::i4, + ov::element::u4, + std::vector{0xFE, 0x03}, + std::vector{0xFE, 0x03}, + 4, + 4), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::i8, + ov::element::u4, + std::vector{-1, -2, 2, 3}, + std::vector{0xFE, 0x23}, + 4, + 4), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::i16, + ov::element::u4, + std::vector{-1, -2, 2, 3}, + std::vector{0xFE, 0x23}, + 4, + 4), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::i32, + ov::element::u4, + std::vector{-1, -2, 2, 3}, + std::vector{0xFE, 0x23}, + 4, + 4), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::i64, + ov::element::u4, + std::vector{-1, -2, 2, 3}, + std::vector{0xFE, 0x23}, + 4, + 4), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::f16, + ov::element::u4, + std::vector{-1, -2, 0, 3}, + std::vector{0xFE, 0x03}, + 4, + 4), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::bf16, + ov::element::u4, + std::vector{-1, -2, 0, 3}, + std::vector{0xFE, 0x03}, + 4, + 4), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::f32, + ov::element::u4, + std::vector{-1, -2, 2, 3}, + std::vector{0xFE, 0x23}, + 4, + 4), // destination u8 - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {8}, ov::element::u1, ov::element::u8, std::vector {0x81}, - std::vector {1, 0, 0, 0, 0, 0, 0, 1}, 8), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::u4, ov::element::u8, std::vector {0x21, 0x43}, - std::vector {2, 1, 4, 3}, 4), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::u8, ov::element::u8, std::vector {1, 2, 0, 3}, - std::vector {1, 2, 0, 3}), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::u16, ov::element::u8, std::vector {1, 2, 0, 3}, - std::vector {1, 2, 0, 3}), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::u32, ov::element::u8, std::vector {1, 2, 0, 3}, - std::vector {1, 2, 0, 3}), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::u64, ov::element::u8, std::vector {1, 2, 0, 3}, - std::vector {1, 2, 0, 3}), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::i4, ov::element::u8, std::vector {0x21, 0x43}, - std::vector {2, 1, 4, 3}, 4), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::i8, ov::element::u8, std::vector {1, 2, 2, 3}, - std::vector {1, 2, 2, 3}), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::i16, ov::element::u8, std::vector {1, 2, 2, 3}, - std::vector {1, 2, 2, 3}), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::i32, ov::element::u8, std::vector {1, 2, 2, 3}, - std::vector {1, 2, 2, 3}), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::i64, ov::element::u8, std::vector {1, 2, 2, 3}, - std::vector {1, 2, 2, 3}), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::f16, ov::element::u8, std::vector {1, 2, 0, 3}, - std::vector {1, 2, 0, 3}), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::bf16, ov::element::u8, - std::vector {1, 2, 0, 3}, std::vector {1, 2, 0, 3}), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::f32, ov::element::u8, std::vector {1, 2, 2.2, 3.8}, - std::vector {1, 2, 2, 3}), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{8}, + ov::element::u1, + ov::element::u8, + std::vector{0x81}, + std::vector{1, 0, 0, 0, 0, 0, 0, 1}, + 8), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::u4, + ov::element::u8, + std::vector{0x21, 0x43}, + std::vector{2, 1, 4, 3}, + 4), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::u8, + ov::element::u8, + std::vector{1, 2, 0, 3}, + std::vector{1, 2, 0, 3}), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::u16, + ov::element::u8, + std::vector{1, 2, 0, 3}, + std::vector{1, 2, 0, 3}), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::u32, + ov::element::u8, + std::vector{1, 2, 0, 3}, + std::vector{1, 2, 0, 3}), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::u64, + ov::element::u8, + std::vector{1, 2, 0, 3}, + std::vector{1, 2, 0, 3}), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::i4, + ov::element::u8, + std::vector{0x21, 0x43}, + std::vector{2, 1, 4, 3}, + 4), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::i8, + ov::element::u8, + std::vector{1, 2, 2, 3}, + std::vector{1, 2, 2, 3}), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::i16, + ov::element::u8, + std::vector{1, 2, 2, 3}, + std::vector{1, 2, 2, 3}), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::i32, + ov::element::u8, + std::vector{1, 2, 2, 3}, + std::vector{1, 2, 2, 3}), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::i64, + ov::element::u8, + std::vector{1, 2, 2, 3}, + std::vector{1, 2, 2, 3}), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::f16, + ov::element::u8, + std::vector{1, 2, 0, 3}, + std::vector{1, 2, 0, 3}), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::bf16, + ov::element::u8, + std::vector{1, 2, 0, 3}, + std::vector{1, 2, 0, 3}), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::f32, + ov::element::u8, + std::vector{1, 2, 2.2, 3.8}, + std::vector{1, 2, 2, 3}), // destination u16 - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {8}, ov::element::u1, ov::element::u16, std::vector {0x81}, - std::vector {1, 0, 0, 0, 0, 0, 0, 1}, 8), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::u4, ov::element::u16, std::vector {0x21, 0x43}, - std::vector {2, 1, 4, 3}, 4), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::u8, ov::element::u16, std::vector {1, 2, 0, 3}, - std::vector {1, 2, 0, 3}), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::u16, ov::element::u16, std::vector {1, 2, 0, 3}, - std::vector {1, 2, 0, 3}), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::u32, ov::element::u16, std::vector {1, 2, 0, 3}, - std::vector {1, 2, 0, 3}), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::u64, ov::element::u16, std::vector {1, 2, 0, 3}, - std::vector {1, 2, 0, 3}), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::i4, ov::element::u16, std::vector {0x21, 0x43}, - std::vector {2, 1, 4, 3}, 4), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::i8, ov::element::u16, std::vector {1, 2, 2, 3}, - std::vector {1, 2, 2, 3}), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::i16, ov::element::u16, std::vector {1, 2, 2, 3}, - std::vector {1, 2, 2, 3}), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::i32, ov::element::u16, std::vector {1, 2, 2, 3}, - std::vector {1, 2, 2, 3}), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::i64, ov::element::u16, std::vector {1, 2, 2, 3}, - std::vector {1, 2, 2, 3}), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::f16, ov::element::u16, std::vector {1, 2, 0, 3}, - std::vector {1, 2, 0, 3}), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::bf16, ov::element::u16, - std::vector {1, 2, 0, 3}, std::vector {1, 2, 0, 3}), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::f32, ov::element::u16, std::vector {1, 2, 2.2, 3.8}, - std::vector {1, 2, 2, 3}), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{8}, + ov::element::u1, + ov::element::u16, + std::vector{0x81}, + std::vector{1, 0, 0, 0, 0, 0, 0, 1}, + 8), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::u4, + ov::element::u16, + std::vector{0x21, 0x43}, + std::vector{2, 1, 4, 3}, + 4), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::u8, + ov::element::u16, + std::vector{1, 2, 0, 3}, + std::vector{1, 2, 0, 3}), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::u16, + ov::element::u16, + std::vector{1, 2, 0, 3}, + std::vector{1, 2, 0, 3}), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::u32, + ov::element::u16, + std::vector{1, 2, 0, 3}, + std::vector{1, 2, 0, 3}), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::u64, + ov::element::u16, + std::vector{1, 2, 0, 3}, + std::vector{1, 2, 0, 3}), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::i4, + ov::element::u16, + std::vector{0x21, 0x43}, + std::vector{2, 1, 4, 3}, + 4), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::i8, + ov::element::u16, + std::vector{1, 2, 2, 3}, + std::vector{1, 2, 2, 3}), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::i16, + ov::element::u16, + std::vector{1, 2, 2, 3}, + std::vector{1, 2, 2, 3}), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::i32, + ov::element::u16, + std::vector{1, 2, 2, 3}, + std::vector{1, 2, 2, 3}), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::i64, + ov::element::u16, + std::vector{1, 2, 2, 3}, + std::vector{1, 2, 2, 3}), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::f16, + ov::element::u16, + std::vector{1, 2, 0, 3}, + std::vector{1, 2, 0, 3}), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::bf16, + ov::element::u16, + std::vector{1, 2, 0, 3}, + std::vector{1, 2, 0, 3}), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::f32, + ov::element::u16, + std::vector{1, 2, 2.2, 3.8}, + std::vector{1, 2, 2, 3}), // destination u32 - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {8}, ov::element::u1, ov::element::u32, std::vector {0x81}, - std::vector {1, 0, 0, 0, 0, 0, 0, 1}, 8), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::u4, ov::element::u32, std::vector {0x21, 0x43}, - std::vector {2, 1, 4, 3}, 4), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::u8, ov::element::u32, std::vector {1, 2, 0, 3}, - std::vector {1, 2, 0, 3}), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::u16, ov::element::u32, std::vector {1, 2, 0, 3}, - std::vector {1, 2, 0, 3}), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::u32, ov::element::u32, std::vector {1, 2, 0, 3}, - std::vector {1, 2, 0, 3}), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::u64, ov::element::u32, std::vector {1, 2, 0, 3}, - std::vector {1, 2, 0, 3}), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::i4, ov::element::u32, std::vector {0x21, 0x43}, - std::vector {2, 1, 4, 3}, 4), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::i8, ov::element::u32, std::vector {1, 2, 2, 3}, - std::vector {1, 2, 2, 3}), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::i16, ov::element::u32, std::vector {1, 2, 2, 3}, - std::vector {1, 2, 2, 3}), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::i32, ov::element::u32, std::vector {1, 2, 2, 3}, - std::vector {1, 2, 2, 3}), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::i64, ov::element::u32, std::vector {1, 2, 2, 3}, - std::vector {1, 2, 2, 3}), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::f16, ov::element::u32, std::vector {1, 2, 0, 3}, - std::vector {1, 2, 0, 3}), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::bf16, ov::element::u32, - std::vector {1, 2, 0, 3}, std::vector {1, 2, 0, 3}), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::f32, ov::element::u32, std::vector {1, 2, 2.2, 3.8}, - std::vector {1, 2, 2, 3}), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{8}, + ov::element::u1, + ov::element::u32, + std::vector{0x81}, + std::vector{1, 0, 0, 0, 0, 0, 0, 1}, + 8), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::u4, + ov::element::u32, + std::vector{0x21, 0x43}, + std::vector{2, 1, 4, 3}, + 4), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::u8, + ov::element::u32, + std::vector{1, 2, 0, 3}, + std::vector{1, 2, 0, 3}), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::u16, + ov::element::u32, + std::vector{1, 2, 0, 3}, + std::vector{1, 2, 0, 3}), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::u32, + ov::element::u32, + std::vector{1, 2, 0, 3}, + std::vector{1, 2, 0, 3}), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::u64, + ov::element::u32, + std::vector{1, 2, 0, 3}, + std::vector{1, 2, 0, 3}), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::i4, + ov::element::u32, + std::vector{0x21, 0x43}, + std::vector{2, 1, 4, 3}, + 4), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::i8, + ov::element::u32, + std::vector{1, 2, 2, 3}, + std::vector{1, 2, 2, 3}), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::i16, + ov::element::u32, + std::vector{1, 2, 2, 3}, + std::vector{1, 2, 2, 3}), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::i32, + ov::element::u32, + std::vector{1, 2, 2, 3}, + std::vector{1, 2, 2, 3}), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::i64, + ov::element::u32, + std::vector{1, 2, 2, 3}, + std::vector{1, 2, 2, 3}), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::f16, + ov::element::u32, + std::vector{1, 2, 0, 3}, + std::vector{1, 2, 0, 3}), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::bf16, + ov::element::u32, + std::vector{1, 2, 0, 3}, + std::vector{1, 2, 0, 3}), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::f32, + ov::element::u32, + std::vector{1, 2, 2.2, 3.8}, + std::vector{1, 2, 2, 3}), // destination u64 - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {8}, ov::element::u1, ov::element::u64, std::vector {0x81}, - std::vector {1, 0, 0, 0, 0, 0, 0, 1}, 8), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::u4, ov::element::u64, std::vector {0x21, 0x43}, - std::vector {2, 1, 4, 3}, 4), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::u8, ov::element::u64, std::vector {1, 2, 0, 3}, - std::vector {1, 2, 0, 3}), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::u16, ov::element::u64, std::vector {1, 2, 0, 3}, - std::vector {1, 2, 0, 3}), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::u32, ov::element::u64, std::vector {1, 2, 0, 3}, - std::vector {1, 2, 0, 3}), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::u64, ov::element::u64, std::vector {1, 2, 0, 3}, - std::vector {1, 2, 0, 3}), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::i4, ov::element::u64, std::vector {0x21, 0x43}, - std::vector {2, 1, 4, 3}, 4), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::i8, ov::element::u64, std::vector {1, 2, 2, 3}, - std::vector {1, 2, 2, 3}), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::i16, ov::element::u64, std::vector {1, 2, 2, 3}, - std::vector {1, 2, 2, 3}), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::i32, ov::element::u64, std::vector {1, 2, 2, 3}, - std::vector {1, 2, 2, 3}), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::i64, ov::element::u64, std::vector {1, 2, 2, 3}, - std::vector {1, 2, 2, 3}), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::f16, ov::element::u64, std::vector {1, 2, 0, 3}, - std::vector {1, 2, 0, 3}), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::bf16, ov::element::u64, - std::vector {1, 2, 0, 3}, std::vector {1, 2, 0, 3}), - ConvertParams(ConversionTypes::CONVERT, ov::PartialShape {4}, ov::element::f32, ov::element::u64, std::vector {1, 2, 2.2, 3.8}, - std::vector {1, 2, 2, 3})), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{8}, + ov::element::u1, + ov::element::u64, + std::vector{0x81}, + std::vector{1, 0, 0, 0, 0, 0, 0, 1}, + 8), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::u4, + ov::element::u64, + std::vector{0x21, 0x43}, + std::vector{2, 1, 4, 3}, + 4), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::u8, + ov::element::u64, + std::vector{1, 2, 0, 3}, + std::vector{1, 2, 0, 3}), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::u16, + ov::element::u64, + std::vector{1, 2, 0, 3}, + std::vector{1, 2, 0, 3}), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::u32, + ov::element::u64, + std::vector{1, 2, 0, 3}, + std::vector{1, 2, 0, 3}), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::u64, + ov::element::u64, + std::vector{1, 2, 0, 3}, + std::vector{1, 2, 0, 3}), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::i4, + ov::element::u64, + std::vector{0x21, 0x43}, + std::vector{2, 1, 4, 3}, + 4), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::i8, + ov::element::u64, + std::vector{1, 2, 2, 3}, + std::vector{1, 2, 2, 3}), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::i16, + ov::element::u64, + std::vector{1, 2, 2, 3}, + std::vector{1, 2, 2, 3}), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::i32, + ov::element::u64, + std::vector{1, 2, 2, 3}, + std::vector{1, 2, 2, 3}), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::i64, + ov::element::u64, + std::vector{1, 2, 2, 3}, + std::vector{1, 2, 2, 3}), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::f16, + ov::element::u64, + std::vector{1, 2, 0, 3}, + std::vector{1, 2, 0, 3}), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::bf16, + ov::element::u64, + std::vector{1, 2, 0, 3}, + std::vector{1, 2, 0, 3}), + ConvertParams(ConversionTypes::CONVERT, + ov::PartialShape{4}, + ov::element::f32, + ov::element::u64, + std::vector{1, 2, 2.2, 3.8}, + std::vector{1, 2, 2, 3})), ReferenceConversionLayerTest::getTestCaseName); -} // namespace -} // namespace ConversionOpsRefTestDefinitions -} // namespace reference_tests +} // namespace +} // namespace ConversionOpsRefTestDefinitions +} // namespace reference_tests diff --git a/src/plugins/template/tests/functional/op_reference/convert_color_i420.cpp b/src/plugins/template/tests/functional/op_reference/convert_color_i420.cpp index 4c21e52eed2..844fdeb1163 100644 --- a/src/plugins/template/tests/functional/op_reference/convert_color_i420.cpp +++ b/src/plugins/template/tests/functional/op_reference/convert_color_i420.cpp @@ -5,9 +5,9 @@ #include #include -#include -#include #include +#include +#include #include "base_reference_test.hpp" #include "functional_test_utils/skip_tests_config.hpp" @@ -20,8 +20,8 @@ class ReferenceConvertColorI420LayerTest : public testing::Test, public CommonRe public: void SetUp() override { SKIP_IF_CURRENT_TEST_IS_DISABLED() - abs_threshold = 1.f; // allow R, G, B absolute deviation to 1 (of max 255) - threshold = 1.f; // Ignore relative comparison (100%) + abs_threshold = 1.f; // allow R, G, B absolute deviation to 1 (of max 255) + threshold = 1.f; // Ignore relative comparison (100%) } public: @@ -31,28 +31,28 @@ public: std::shared_ptr conv; conv = std::make_shared(in); auto res = std::make_shared(conv); - return std::make_shared(ResultVector{res}, ParameterVector {in}); + return std::make_shared(ResultVector{res}, ParameterVector{in}); } template - static std::shared_ptr CreateFunction3(const reference_tests::Tensor& input1, const reference_tests::Tensor& input2, const reference_tests::Tensor& input3) { + static std::shared_ptr CreateFunction3(const reference_tests::Tensor& input1, + const reference_tests::Tensor& input2, + const reference_tests::Tensor& input3) { const auto in1 = std::make_shared(input1.type, input1.shape); const auto in2 = std::make_shared(input2.type, input2.shape); const auto in3 = std::make_shared(input3.type, input3.shape); std::shared_ptr conv; conv = std::make_shared(in1, in2, in3); auto res = std::make_shared(conv); - return std::make_shared(ResultVector{res}, ParameterVector {in1, in2, in3}); + return std::make_shared(ResultVector{res}, ParameterVector{in1, in2, in3}); } }; TEST_F(ReferenceConvertColorI420LayerTest, CompareWithHardcodedRefs_r_u8_single_rgb) { - auto input = std::vector {0x51, 0x51, 0x51, 0x51, - 0x51, 0x51, 0x51, 0x51, - 0x5a, 0x5a, 0xf0, 0xf0}; + auto input = std::vector{0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x5a, 0x5a, 0xf0, 0xf0}; auto input_shape = Shape{1, 3, 4, 1}; - auto exp_out = std::vector {0xff, 0, 0, 0xff, 0, 0, 0xff, 0, 0, 0xff, 0, 0, - 0xff, 0, 0, 0xff, 0, 0, 0xff, 0, 0, 0xff, 0, 0}; + auto exp_out = std::vector{0xff, 0, 0, 0xff, 0, 0, 0xff, 0, 0, 0xff, 0, 0, + 0xff, 0, 0, 0xff, 0, 0, 0xff, 0, 0, 0xff, 0, 0}; auto out_shape = Shape{1, 2, 4, 3}; reference_tests::Tensor inp_tensor(input_shape, element::u8, input); inputData = {inp_tensor.data}; @@ -63,12 +63,10 @@ TEST_F(ReferenceConvertColorI420LayerTest, CompareWithHardcodedRefs_r_u8_single_ } TEST_F(ReferenceConvertColorI420LayerTest, CompareWithHardcodedRefs_color_u8_single_bgr) { - auto input = std::vector {0x51, 0xeb, 0x51, 0xeb, - 0x51, 0xeb, 0x51, 0xeb, - 0x6d, 0x6d, 0xb8, 0xb8}; + auto input = std::vector{0x51, 0xeb, 0x51, 0xeb, 0x51, 0xeb, 0x51, 0xeb, 0x6d, 0x6d, 0xb8, 0xb8}; auto input_shape = Shape{1, 6, 2, 1}; - auto exp_out = std::vector {37, 37, 164, 217, 216, 255, 37, 37, 164, 217, 216, 255, - 37, 37, 164, 217, 216, 255, 37, 37, 164, 217, 216, 255}; + auto exp_out = std::vector{37, 37, 164, 217, 216, 255, 37, 37, 164, 217, 216, 255, + 37, 37, 164, 217, 216, 255, 37, 37, 164, 217, 216, 255}; auto out_shape = Shape{1, 4, 2, 3}; reference_tests::Tensor inp_tensor(input_shape, element::u8, input); @@ -83,12 +81,10 @@ TEST_F(ReferenceConvertColorI420LayerTest, CompareWithHardcodedRefs_color_u8_sin } TEST_F(ReferenceConvertColorI420LayerTest, CompareWithHardcodedRefs_g_fp32_single_rgb) { - auto input = std::vector {145.f, 145.f, 145.f, 145.f, - 145.f, 145.f, 145.f, 145.f, - 54.f, 54.f, 34.f, 34.f}; + auto input = std::vector{145.f, 145.f, 145.f, 145.f, 145.f, 145.f, 145.f, 145.f, 54.f, 54.f, 34.f, 34.f}; auto input_shape = Shape{1, 3, 4, 1}; - auto exp_out = std::vector {0, 255.f, 0, 0, 255.f, 0, 0, 255.f, 0, 0, 255.f, 0, - 0, 255.f, 0, 0, 255.f, 0, 0, 255.f, 0, 0, 255.f, 0}; + auto exp_out = std::vector{0, 255.f, 0, 0, 255.f, 0, 0, 255.f, 0, 0, 255.f, 0, + 0, 255.f, 0, 0, 255.f, 0, 0, 255.f, 0, 0, 255.f, 0}; auto out_shape = Shape{1, 2, 4, 3}; reference_tests::Tensor inp_tensor(input_shape, element::f32, input); @@ -103,23 +99,17 @@ TEST_F(ReferenceConvertColorI420LayerTest, CompareWithHardcodedRefs_g_fp32_singl } TEST_F(ReferenceConvertColorI420LayerTest, CompareWithHardcodedRefs_batch_fp32_three_bgr) { - auto input_y = std::vector {81.f, 81.f, 81.f, 81.f, - 145.f, 145.f, 145.f, 145.f, - 41.f, 41.f, 41.f, 41.f}; + auto input_y = std::vector{81.f, 81.f, 81.f, 81.f, 145.f, 145.f, 145.f, 145.f, 41.f, 41.f, 41.f, 41.f}; auto input_shape_y = Shape{3, 2, 2, 1}; - auto input_u = std::vector {90., - 54., - 240.}; + auto input_u = std::vector{90., 54., 240.}; auto input_shape_u = Shape{3, 1, 1, 1}; - auto input_v = std::vector {240., - 34., - 110.}; + auto input_v = std::vector{240., 34., 110.}; auto input_shape_v = Shape{3, 1, 1, 1}; - auto exp_out = std::vector {0, 0, 255., 0, 0, 255., 0, 0, 255., 0, 0, 255., - 0, 255., 0, 0, 255., 0, 0, 255., 0, 0, 255., 0, - 255., 0, 0, 255., 0, 0, 255., 0, 0, 255., 0, 0}; + auto exp_out = + std::vector{0, 0, 255., 0, 0, 255., 0, 0, 255., 0, 0, 255., 0, 255., 0, 0, 255., 0, + 0, 255., 0, 0, 255., 0, 255., 0, 0, 255., 0, 0, 255., 0, 0, 255., 0, 0}; auto out_shape = Shape{3, 2, 2, 3}; reference_tests::Tensor inp_tensor_y(input_shape_y, element::f32, input_y); @@ -136,25 +126,17 @@ TEST_F(ReferenceConvertColorI420LayerTest, CompareWithHardcodedRefs_batch_fp32_t } TEST_F(ReferenceConvertColorI420LayerTest, CompareWithHardcodedRefs_color4x4_f32_three_rgb) { - auto input_y = std::vector {81, 235, - 81, 235, - 81, 81, - 81, 81, - 145, 145, - 145, 145, - 41, 41, - 41, 41}; + auto input_y = std::vector{81, 235, 81, 235, 81, 81, 81, 81, 145, 145, 145, 145, 41, 41, 41, 41}; auto input_shape_y = Shape{1, 8, 2, 1}; - auto input_u = std::vector {109, 90, 54, 240}; + auto input_u = std::vector{109, 90, 54, 240}; auto input_shape_u = Shape{1, 4, 1, 1}; - auto input_v = std::vector {184, 240, 34, 110}; + auto input_v = std::vector{184, 240, 34, 110}; auto input_shape_v = Shape{1, 4, 1, 1}; - auto exp_out = std::vector {165, 37, 37, 255, 216, 217, 165, 37, 37, 255, 216, 217, - 255, 0, 0, 255, 0, 0, 255, 0, 0, 255, 0, 0, - 0, 255, 0, 0, 255, 0, 0, 255, 0, 0, 255, 0, - 0, 0, 255, 0, 0, 255, 0, 0, 255, 0, 0, 255}; + auto exp_out = std::vector{165, 37, 37, 255, 216, 217, 165, 37, 37, 255, 216, 217, 255, 0, 0, 255, + 0, 0, 255, 0, 0, 255, 0, 0, 0, 255, 0, 0, 255, 0, 0, 255, + 0, 0, 255, 0, 0, 0, 255, 0, 0, 255, 0, 0, 255, 0, 0, 255}; auto out_shape = Shape{1, 2, 2, 3}; reference_tests::Tensor inp_tensor_y(input_shape_y, element::f32, input_y); diff --git a/src/plugins/template/tests/functional/op_reference/convert_color_nv12.cpp b/src/plugins/template/tests/functional/op_reference/convert_color_nv12.cpp index 2eb13749da0..26d9c31bae3 100644 --- a/src/plugins/template/tests/functional/op_reference/convert_color_nv12.cpp +++ b/src/plugins/template/tests/functional/op_reference/convert_color_nv12.cpp @@ -5,9 +5,9 @@ #include #include -#include -#include #include +#include +#include #include "base_reference_test.hpp" #include "functional_test_utils/skip_tests_config.hpp" @@ -20,8 +20,8 @@ class ReferenceConvertColorNV12LayerTest : public testing::Test, public CommonRe public: void SetUp() override { SKIP_IF_CURRENT_TEST_IS_DISABLED() - abs_threshold = 2.f; // allow R, G, B absolute deviation to 2 (of max 255) - threshold = 1.f; // Ignore relative comparison (100%) + abs_threshold = 2.f; // allow R, G, B absolute deviation to 2 (of max 255) + threshold = 1.f; // Ignore relative comparison (100%) } public: @@ -31,24 +31,25 @@ public: std::shared_ptr conv; conv = std::make_shared(in); auto res = std::make_shared(conv); - return std::make_shared(ResultVector{res}, ParameterVector {in}); + return std::make_shared(ResultVector{res}, ParameterVector{in}); } template - static std::shared_ptr CreateFunction2(const reference_tests::Tensor& input1, const reference_tests::Tensor& input2) { + static std::shared_ptr CreateFunction2(const reference_tests::Tensor& input1, + const reference_tests::Tensor& input2) { const auto in1 = std::make_shared(input1.type, input1.shape); const auto in2 = std::make_shared(input2.type, input2.shape); std::shared_ptr conv; conv = std::make_shared(in1, in2); auto res = std::make_shared(conv); - return std::make_shared(ResultVector{res}, ParameterVector {in1, in2}); + return std::make_shared(ResultVector{res}, ParameterVector{in1, in2}); } }; TEST_F(ReferenceConvertColorNV12LayerTest, CompareWithHardcodedRefs_r_u8_single_rgb) { - auto input = std::vector {0x51, 0x51, 0x51, 0x51, 0x5a, 0xf0}; + auto input = std::vector{0x51, 0x51, 0x51, 0x51, 0x5a, 0xf0}; auto input_shape = Shape{1, 3, 2, 1}; - auto exp_out = std::vector {0xff, 0, 0, 0xff, 0, 0, 0xff, 0, 0, 0xff, 0, 0}; + auto exp_out = std::vector{0xff, 0, 0, 0xff, 0, 0, 0xff, 0, 0, 0xff, 0, 0}; auto out_shape = Shape{1, 2, 2, 3}; reference_tests::Tensor inp_tensor(input_shape, element::u8, input); inputData = {inp_tensor.data}; @@ -59,9 +60,9 @@ TEST_F(ReferenceConvertColorNV12LayerTest, CompareWithHardcodedRefs_r_u8_single_ } TEST_F(ReferenceConvertColorNV12LayerTest, CompareWithHardcodedRefs_color_u8_single_bgr) { - auto input = std::vector {0x51, 0xeb, 0x51, 0xeb, 0x6d, 0xb8}; + auto input = std::vector{0x51, 0xeb, 0x51, 0xeb, 0x6d, 0xb8}; auto input_shape = Shape{1, 3, 2, 1}; - auto exp_out = std::vector {37, 37, 164, 215, 216, 255, 37, 37, 164, 215, 216, 255}; + auto exp_out = std::vector{37, 37, 164, 215, 216, 255, 37, 37, 164, 215, 216, 255}; auto out_shape = Shape{1, 2, 2, 3}; reference_tests::Tensor inp_tensor(input_shape, element::u8, input); @@ -76,9 +77,9 @@ TEST_F(ReferenceConvertColorNV12LayerTest, CompareWithHardcodedRefs_color_u8_sin } TEST_F(ReferenceConvertColorNV12LayerTest, CompareWithHardcodedRefs_g_fp32_single_rgb) { - auto input = std::vector {145.f, 145.f, 145.f, 145.f, 54.f, 34.f}; + auto input = std::vector{145.f, 145.f, 145.f, 145.f, 54.f, 34.f}; auto input_shape = Shape{1, 3, 2, 1}; - auto exp_out = std::vector {0, 255.f, 0, 0, 255.f, 0, 0, 255.f, 0, 0, 255.f, 0}; + auto exp_out = std::vector{0, 255.f, 0, 0, 255.f, 0, 0, 255.f, 0, 0, 255.f, 0}; auto out_shape = Shape{1, 2, 2, 3}; reference_tests::Tensor inp_tensor(input_shape, element::f32, input); @@ -93,19 +94,15 @@ TEST_F(ReferenceConvertColorNV12LayerTest, CompareWithHardcodedRefs_g_fp32_singl } TEST_F(ReferenceConvertColorNV12LayerTest, CompareWithHardcodedRefs_batch_fp32_two_bgr) { - auto input_y = std::vector {81.f, 81.f, 81.f, 81.f, - 145.f, 145.f, 145.f, 145.f, - 41.f, 41.f, 41.f, 41.f}; + auto input_y = std::vector{81.f, 81.f, 81.f, 81.f, 145.f, 145.f, 145.f, 145.f, 41.f, 41.f, 41.f, 41.f}; auto input_shape_y = Shape{3, 2, 2, 1}; - auto input_uv = std::vector {90., 240., - 54., 34., - 240., 110.}; + auto input_uv = std::vector{90., 240., 54., 34., 240., 110.}; auto input_shape_uv = Shape{3, 1, 1, 2}; - auto exp_out = std::vector {0, 0, 255., 0, 0, 255., 0, 0, 255., 0, 0, 255., - 0, 255., 0, 0, 255., 0, 0, 255., 0, 0, 255., 0, - 255., 0, 0, 255., 0, 0, 255., 0, 0, 255., 0, 0}; + auto exp_out = + std::vector{0, 0, 255., 0, 0, 255., 0, 0, 255., 0, 0, 255., 0, 255., 0, 0, 255., 0, + 0, 255., 0, 0, 255., 0, 255., 0, 0, 255., 0, 0, 255., 0, 0, 255., 0, 0}; auto out_shape = Shape{3, 2, 2, 3}; reference_tests::Tensor inp_tensor_y(input_shape_y, element::f32, input_y); @@ -121,13 +118,13 @@ TEST_F(ReferenceConvertColorNV12LayerTest, CompareWithHardcodedRefs_batch_fp32_t } TEST_F(ReferenceConvertColorNV12LayerTest, CompareWithHardcodedRefs_color2x2_f32_two_rgb) { - auto input_y = std::vector {81, 235, 81, 235}; + auto input_y = std::vector{81, 235, 81, 235}; auto input_shape_y = Shape{1, 2, 2, 1}; - auto input_uv = std::vector {109, 184}; + auto input_uv = std::vector{109, 184}; auto input_shape_uv = Shape{1, 1, 1, 2}; - auto exp_out = std::vector {164, 37, 37, 255, 216, 215, 164, 37, 37, 255, 216, 215}; + auto exp_out = std::vector{164, 37, 37, 255, 216, 215, 164, 37, 37, 255, 216, 215}; auto out_shape = Shape{1, 2, 2, 3}; reference_tests::Tensor inp_tensor_y(input_shape_y, element::f32, input_y); diff --git a/src/plugins/template/tests/functional/op_reference/convert_like.cpp b/src/plugins/template/tests/functional/op_reference/convert_like.cpp index 3ff098e4e14..b46fe98af03 100644 --- a/src/plugins/template/tests/functional/op_reference/convert_like.cpp +++ b/src/plugins/template/tests/functional/op_reference/convert_like.cpp @@ -2,9 +2,10 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/convert_like.hpp" + #include -#include "openvino/op/convert_like.hpp" #include "conversion.hpp" using namespace ov; @@ -14,393 +15,1277 @@ namespace ConversionOpsRefTestDefinitions { namespace { INSTANTIATE_TEST_SUITE_P( - smoke_Conversion_With_Hardcoded_Refs, ReferenceConversionLayerTest, + smoke_Conversion_With_Hardcoded_Refs, + ReferenceConversionLayerTest, ::testing::Values( // destination boolean - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {2, 3}, ov::element::u8, ov::element::boolean, - std::vector {0, 12, 23, 0, std::numeric_limits::lowest(), std::numeric_limits::max()}, - std::vector {0, 1, 1, 0, 0, 1}), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {2, 3}, ov::element::i32, ov::element::boolean, - std::vector {0, -12, 23, 0, std::numeric_limits::lowest(), std::numeric_limits::max()}, - std::vector {0, 1, 1, 0, 1, 1}), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {3, 3}, ov::element::f32, ov::element::boolean, - std::vector {0.f, 1.5745f, 0.12352f, 0.f, std::numeric_limits::lowest(), std::numeric_limits::max(), - std::numeric_limits::min(), std::numeric_limits::infinity(), -std::numeric_limits::infinity()}, - std::vector {0, 1, 1, 0, 1, 1, 1, 1, 1}), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{2, 3}, + ov::element::u8, + ov::element::boolean, + std::vector{0, + 12, + 23, + 0, + std::numeric_limits::lowest(), + std::numeric_limits::max()}, + std::vector{0, 1, 1, 0, 0, 1}), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{2, 3}, + ov::element::i32, + ov::element::boolean, + std::vector{0, + -12, + 23, + 0, + std::numeric_limits::lowest(), + std::numeric_limits::max()}, + std::vector{0, 1, 1, 0, 1, 1}), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{3, 3}, + ov::element::f32, + ov::element::boolean, + std::vector{0.f, + 1.5745f, + 0.12352f, + 0.f, + std::numeric_limits::lowest(), + std::numeric_limits::max(), + std::numeric_limits::min(), + std::numeric_limits::infinity(), + -std::numeric_limits::infinity()}, + std::vector{0, 1, 1, 0, 1, 1, 1, 1, 1}), // destination bf16 - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {1, 1, 3, 5}, ov::element::f32, ov::element::bf16, - std::vector {0.5f, 1.5f, 0.5f, 2.5f, 1.5f, 0.5f, 3.5f, 2.5f, 0.5f, 0.5f, 2.5f, 0.5f, 0.5f, 0.5f, 1.5f}, - std::vector {0.5f, 1.5f, 0.5f, 2.5f, 1.5f, 0.5f, 3.5f, 2.5f, 0.5f, 0.5f, 2.5f, 0.5f, 0.5f, 0.5f, 1.5f}), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {11}, ov::element::u8, ov::element::bf16, - std::vector {0, 10, 15, 20, 43, 56, 78, 99, 102, 130, 142}, - std::vector {0, 10, 15, 20, 43, 56, 78, 99, 102, 130, 142}), + ConvertParams( + ConversionTypes::CONVERT_LIKE, + ov::PartialShape{1, 1, 3, 5}, + ov::element::f32, + ov::element::bf16, + std:: + vector{0.5f, 1.5f, 0.5f, 2.5f, 1.5f, 0.5f, 3.5f, 2.5f, 0.5f, 0.5f, 2.5f, 0.5f, 0.5f, 0.5f, 1.5f}, + std::vector< + bfloat16>{0.5f, 1.5f, 0.5f, 2.5f, 1.5f, 0.5f, 3.5f, 2.5f, 0.5f, 0.5f, 2.5f, 0.5f, 0.5f, 0.5f, 1.5f}), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{11}, + ov::element::u8, + ov::element::bf16, + std::vector{0, 10, 15, 20, 43, 56, 78, 99, 102, 130, 142}, + std::vector{0, 10, 15, 20, 43, 56, 78, 99, 102, 130, 142}), // destination f16 - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {1, 1, 3, 5}, ov::element::f32, ov::element::f16, - std::vector {0.5f, 1.5f, 0.5f, 2.5f, 1.5f, 0.5f, 3.5f, 2.5f, 0.5f, 0.5f, 2.5f, 0.5f, 0.5f, 0.5f, 1.5f}, - std::vector {0.5f, 1.5f, 0.5f, 2.5f, 1.5f, 0.5f, 3.5f, 2.5f, 0.5f, 0.5f, 2.5f, 0.5f, 0.5f, 0.5f, 1.5f}), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {11}, ov::element::u8, ov::element::f16, - std::vector {0, 10, 15, 20, 43, 56, 78, 99, 102, 130, 142}, - std::vector {0, 10, 15, 20, 43, 56, 78, 99, 102, 130, 142}), + ConvertParams( + ConversionTypes::CONVERT_LIKE, + ov::PartialShape{1, 1, 3, 5}, + ov::element::f32, + ov::element::f16, + std:: + vector{0.5f, 1.5f, 0.5f, 2.5f, 1.5f, 0.5f, 3.5f, 2.5f, 0.5f, 0.5f, 2.5f, 0.5f, 0.5f, 0.5f, 1.5f}, + std::vector< + float16>{0.5f, 1.5f, 0.5f, 2.5f, 1.5f, 0.5f, 3.5f, 2.5f, 0.5f, 0.5f, 2.5f, 0.5f, 0.5f, 0.5f, 1.5f}), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{11}, + ov::element::u8, + ov::element::f16, + std::vector{0, 10, 15, 20, 43, 56, 78, 99, 102, 130, 142}, + std::vector{0, 10, 15, 20, 43, 56, 78, 99, 102, 130, 142}), // destination f32 - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {2, 2}, ov::element::u1, ov::element::f32, - std::vector {0xA0}, std::vector {1.0f, 0.0f, 1.0f, 0.0f}, 4), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {2, 2}, ov::element::u4, ov::element::f32, - std::vector {0xFB, 0x0A}, std::vector {15.0f, 11.0f, 0.0f, 10.0f}, 4), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {2, 2}, ov::element::u8, ov::element::f32, - std::vector {255, 128, 32, 0}, std::vector {255.0f, 128.0f, 32.0f, 0.0f}), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {2, 2}, ov::element::u16, ov::element::f32, - std::vector {64000, 32000, 128, 0}, std::vector {64000.0f, 32000.0f, 128.0f, 0.0f}), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {2, 2}, ov::element::u32, ov::element::f32, - std::vector {4000000, 2000000, 128, 0}, std::vector {4000000.0f, 2000000.0f, 128.0f, 0.0f}), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {2, 2}, ov::element::u64, ov::element::f32, - std::vector {4000000, 2000000, 128, 0}, std::vector {4000000.0f, 2000000.0f, 128.0f, 0.0f}), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {2, 2}, ov::element::i4, ov::element::f32, - std::vector {0xFE, 0xF2}, std::vector {-1.0f, -2.0f, -1.0f, 2.0f}, 4), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {2, 2}, ov::element::i8, ov::element::f32, - std::vector {-127, -0, 0, 127}, std::vector {-127.0f, -0.0f, 0.0f, 127.0f}), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {2, 2}, ov::element::i16, ov::element::f32, - std::vector {-32000, -0, 0, 32000}, std::vector {-32000.0f, -0.0f, 0.0f, 32000.0f}), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {2, 2}, ov::element::i32, ov::element::f32, - std::vector {-64000, -0, 0, 64000}, std::vector {-64000.0f, -0.0f, 0.0f, 64000.0f}), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {2, 2}, ov::element::i64, ov::element::f32, - std::vector {-64000, -0, 0, 64000}, std::vector {-64000.0f, -0.0f, 0.0f, 64000.0f}), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {1, 1, 3, 5}, ov::element::bf16, ov::element::f32, - std::vector {0.5f, 1.5f, 0.5f, 2.5f, 1.5f, 0.5f, 3.5f, 2.5f, 0.5f, 0.5f, 2.5f, 0.5f, 0.5f, 0.5f, 1.5f}, - std::vector {0.5f, 1.5f, 0.5f, 2.5f, 1.5f, 0.5f, 3.5f, 2.5f, 0.5f, 0.5f, 2.5f, 0.5f, 0.5f, 0.5f, 1.5f}), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {1, 1, 3, 5}, ov::element::f16, ov::element::f32, - std::vector {0.5f, 1.5f, 0.5f, 2.5f, 1.5f, 0.5f, 3.5f, 2.5f, 0.5f, 0.5f, 2.5f, 0.5f, 0.5f, 0.5f, 1.5f}, - std::vector {0.5f, 1.5f, 0.5f, 2.5f, 1.5f, 0.5f, 3.5f, 2.5f, 0.5f, 0.5f, 2.5f, 0.5f, 0.5f, 0.5f, 1.5f}), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {1, 1, 3, 5}, ov::element::f32, ov::element::f32, - std::vector {0.5f, 1.5f, 0.5f, 2.5f, 1.5f, 0.5f, 3.5f, 2.5f, 0.5f, 0.5f, 2.5f, 0.5f, 0.5f, 0.5f, 1.5f}, - std::vector {0.5f, 1.5f, 0.5f, 2.5f, 1.5f, 0.5f, 3.5f, 2.5f, 0.5f, 0.5f, 2.5f, 0.5f, 0.5f, 0.5f, 1.5f}), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{2, 2}, + ov::element::u1, + ov::element::f32, + std::vector{0xA0}, + std::vector{1.0f, 0.0f, 1.0f, 0.0f}, + 4), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{2, 2}, + ov::element::u4, + ov::element::f32, + std::vector{0xFB, 0x0A}, + std::vector{15.0f, 11.0f, 0.0f, 10.0f}, + 4), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{2, 2}, + ov::element::u8, + ov::element::f32, + std::vector{255, 128, 32, 0}, + std::vector{255.0f, 128.0f, 32.0f, 0.0f}), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{2, 2}, + ov::element::u16, + ov::element::f32, + std::vector{64000, 32000, 128, 0}, + std::vector{64000.0f, 32000.0f, 128.0f, 0.0f}), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{2, 2}, + ov::element::u32, + ov::element::f32, + std::vector{4000000, 2000000, 128, 0}, + std::vector{4000000.0f, 2000000.0f, 128.0f, 0.0f}), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{2, 2}, + ov::element::u64, + ov::element::f32, + std::vector{4000000, 2000000, 128, 0}, + std::vector{4000000.0f, 2000000.0f, 128.0f, 0.0f}), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{2, 2}, + ov::element::i4, + ov::element::f32, + std::vector{0xFE, 0xF2}, + std::vector{-1.0f, -2.0f, -1.0f, 2.0f}, + 4), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{2, 2}, + ov::element::i8, + ov::element::f32, + std::vector{-127, -0, 0, 127}, + std::vector{-127.0f, -0.0f, 0.0f, 127.0f}), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{2, 2}, + ov::element::i16, + ov::element::f32, + std::vector{-32000, -0, 0, 32000}, + std::vector{-32000.0f, -0.0f, 0.0f, 32000.0f}), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{2, 2}, + ov::element::i32, + ov::element::f32, + std::vector{-64000, -0, 0, 64000}, + std::vector{-64000.0f, -0.0f, 0.0f, 64000.0f}), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{2, 2}, + ov::element::i64, + ov::element::f32, + std::vector{-64000, -0, 0, 64000}, + std::vector{-64000.0f, -0.0f, 0.0f, 64000.0f}), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{1, 1, 3, 5}, + ov::element::bf16, + ov::element::f32, + std::vector{0.5f, + 1.5f, + 0.5f, + 2.5f, + 1.5f, + 0.5f, + 3.5f, + 2.5f, + 0.5f, + 0.5f, + 2.5f, + 0.5f, + 0.5f, + 0.5f, + 1.5f}, + std::vector{0.5f, + 1.5f, + 0.5f, + 2.5f, + 1.5f, + 0.5f, + 3.5f, + 2.5f, + 0.5f, + 0.5f, + 2.5f, + 0.5f, + 0.5f, + 0.5f, + 1.5f}), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{1, 1, 3, 5}, + ov::element::f16, + ov::element::f32, + std::vector{0.5f, + 1.5f, + 0.5f, + 2.5f, + 1.5f, + 0.5f, + 3.5f, + 2.5f, + 0.5f, + 0.5f, + 2.5f, + 0.5f, + 0.5f, + 0.5f, + 1.5f}, + std::vector{0.5f, + 1.5f, + 0.5f, + 2.5f, + 1.5f, + 0.5f, + 3.5f, + 2.5f, + 0.5f, + 0.5f, + 2.5f, + 0.5f, + 0.5f, + 0.5f, + 1.5f}), + ConvertParams( + ConversionTypes::CONVERT_LIKE, + ov::PartialShape{1, 1, 3, 5}, + ov::element::f32, + ov::element::f32, + std:: + vector{0.5f, 1.5f, 0.5f, 2.5f, 1.5f, 0.5f, 3.5f, 2.5f, 0.5f, 0.5f, 2.5f, 0.5f, 0.5f, 0.5f, 1.5f}, + std::vector< + float>{0.5f, 1.5f, 0.5f, 2.5f, 1.5f, 0.5f, 3.5f, 2.5f, 0.5f, 0.5f, 2.5f, 0.5f, 0.5f, 0.5f, 1.5f}), // destination i4 - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::u1, ov::element::i4, std::vector {0xA0}, - std::vector {0x10, 0x10}, 4, 4), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::u4, ov::element::i4, std::vector {0x12, 0x03}, - std::vector {0x12, 0x03}, 4, 4), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::u8, ov::element::i4, std::vector {1, 2, 0, 3}, - std::vector {0x12, 0x03}, 4, 4), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::u16, ov::element::i4, std::vector {1, 2, 0, 3}, - std::vector {0x12, 0x03}, 4, 4), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::u32, ov::element::i4, std::vector {1, 2, 0, 3}, - std::vector {0x12, 0x03}, 4, 4), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::u64, ov::element::i4, std::vector {1, 2, 0, 3}, - std::vector {0x12, 0x03}, 4, 4), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::i4, ov::element::i4, std::vector {0xFE, 0x03}, - std::vector {0xFE, 0x03}, 4, 4), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::i8, ov::element::i4, std::vector {-1, -2, 2, 3}, - std::vector {0xFE, 0x23}, 4, 4), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::i16, ov::element::i4, std::vector {-1, -2, 2, 3}, - std::vector {0xFE, 0x23}, 4, 4), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::i32, ov::element::i4, std::vector {-1, -2, 2, 3}, - std::vector {0xFE, 0x23}, 4, 4), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::i64, ov::element::i4, std::vector {-1, -2, 2, 3}, - std::vector {0xFE, 0x23}, 4, 4), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::f16, ov::element::i4, - std::vector {-1, -2, 0, 3}, std::vector {0xFE, 0x03}, 4, 4), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::bf16, ov::element::i4, - std::vector {-1, -2, 0, 3}, std::vector {0xFE, 0x03}, 4, 4), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::f32, ov::element::i4, std::vector {-1, -2, 2, 3}, - std::vector {0xFE, 0x23}, 4, 4), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::u1, + ov::element::i4, + std::vector{0xA0}, + std::vector{0x10, 0x10}, + 4, + 4), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::u4, + ov::element::i4, + std::vector{0x12, 0x03}, + std::vector{0x12, 0x03}, + 4, + 4), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::u8, + ov::element::i4, + std::vector{1, 2, 0, 3}, + std::vector{0x12, 0x03}, + 4, + 4), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::u16, + ov::element::i4, + std::vector{1, 2, 0, 3}, + std::vector{0x12, 0x03}, + 4, + 4), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::u32, + ov::element::i4, + std::vector{1, 2, 0, 3}, + std::vector{0x12, 0x03}, + 4, + 4), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::u64, + ov::element::i4, + std::vector{1, 2, 0, 3}, + std::vector{0x12, 0x03}, + 4, + 4), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::i4, + ov::element::i4, + std::vector{0xFE, 0x03}, + std::vector{0xFE, 0x03}, + 4, + 4), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::i8, + ov::element::i4, + std::vector{-1, -2, 2, 3}, + std::vector{0xFE, 0x23}, + 4, + 4), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::i16, + ov::element::i4, + std::vector{-1, -2, 2, 3}, + std::vector{0xFE, 0x23}, + 4, + 4), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::i32, + ov::element::i4, + std::vector{-1, -2, 2, 3}, + std::vector{0xFE, 0x23}, + 4, + 4), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::i64, + ov::element::i4, + std::vector{-1, -2, 2, 3}, + std::vector{0xFE, 0x23}, + 4, + 4), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::f16, + ov::element::i4, + std::vector{-1, -2, 0, 3}, + std::vector{0xFE, 0x03}, + 4, + 4), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::bf16, + ov::element::i4, + std::vector{-1, -2, 0, 3}, + std::vector{0xFE, 0x03}, + 4, + 4), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::f32, + ov::element::i4, + std::vector{-1, -2, 2, 3}, + std::vector{0xFE, 0x23}, + 4, + 4), // destination i8 - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {8}, ov::element::u1, ov::element::i8, std::vector {0x81}, - std::vector {1, 0, 0, 0, 0, 0, 0, 1}, 8), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::u4, ov::element::i8, std::vector {0x21, 0x43}, - std::vector {2, 1, 4, 3}, 4), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::u8, ov::element::i8, std::vector {1, 2, 0, 3}, - std::vector {1, 2, 0, 3}), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::u16, ov::element::i8, std::vector {1, 2, 0, 3}, - std::vector {1, 2, 0, 3}), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::u32, ov::element::i8, std::vector {1, 2, 0, 3}, - std::vector {1, 2, 0, 3}), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::u64, ov::element::i8, std::vector {1, 2, 0, 3}, - std::vector {1, 2, 0, 3}), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::i4, ov::element::i8, std::vector {0x21, 0x43}, - std::vector {2, 1, 4, 3}, 4), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::i8, ov::element::i8, std::vector {-1, -2, 2, 3}, - std::vector {-1, -2, 2, 3}), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::i16, ov::element::i8, std::vector {-1, -2, 2, 3}, - std::vector {-1, -2, 2, 3}), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::i32, ov::element::i8, std::vector {-1, -2, 2, 3}, - std::vector {-1, -2, 2, 3}), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::i64, ov::element::i8, std::vector {-1, -2, 2, 3}, - std::vector {-1, -2, 2, 3}), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::f16, ov::element::i8, - std::vector {-1, -2, 0, 3}, std::vector {-1, -2, 0, 3}), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::bf16, ov::element::i8, - std::vector {-1, -2, 0, 3}, std::vector {-1, -2, 0, 3}), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::f32, ov::element::i8, std::vector {-1, -2, 2, 3}, - std::vector {-1, -2, 2, 3}), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{8}, + ov::element::u1, + ov::element::i8, + std::vector{0x81}, + std::vector{1, 0, 0, 0, 0, 0, 0, 1}, + 8), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::u4, + ov::element::i8, + std::vector{0x21, 0x43}, + std::vector{2, 1, 4, 3}, + 4), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::u8, + ov::element::i8, + std::vector{1, 2, 0, 3}, + std::vector{1, 2, 0, 3}), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::u16, + ov::element::i8, + std::vector{1, 2, 0, 3}, + std::vector{1, 2, 0, 3}), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::u32, + ov::element::i8, + std::vector{1, 2, 0, 3}, + std::vector{1, 2, 0, 3}), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::u64, + ov::element::i8, + std::vector{1, 2, 0, 3}, + std::vector{1, 2, 0, 3}), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::i4, + ov::element::i8, + std::vector{0x21, 0x43}, + std::vector{2, 1, 4, 3}, + 4), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::i8, + ov::element::i8, + std::vector{-1, -2, 2, 3}, + std::vector{-1, -2, 2, 3}), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::i16, + ov::element::i8, + std::vector{-1, -2, 2, 3}, + std::vector{-1, -2, 2, 3}), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::i32, + ov::element::i8, + std::vector{-1, -2, 2, 3}, + std::vector{-1, -2, 2, 3}), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::i64, + ov::element::i8, + std::vector{-1, -2, 2, 3}, + std::vector{-1, -2, 2, 3}), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::f16, + ov::element::i8, + std::vector{-1, -2, 0, 3}, + std::vector{-1, -2, 0, 3}), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::bf16, + ov::element::i8, + std::vector{-1, -2, 0, 3}, + std::vector{-1, -2, 0, 3}), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::f32, + ov::element::i8, + std::vector{-1, -2, 2, 3}, + std::vector{-1, -2, 2, 3}), // destination i16 - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {8}, ov::element::u1, ov::element::i16, std::vector {0x81}, - std::vector {1, 0, 0, 0, 0, 0, 0, 1}, 8), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::u4, ov::element::i16, std::vector {0x21, 0x43}, - std::vector {2, 1, 4, 3}, 4), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::u8, ov::element::i16, std::vector {1, 2, 0, 3}, - std::vector {1, 2, 0, 3}), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::u16, ov::element::i16, std::vector {1, 2, 0, 3}, - std::vector {1, 2, 0, 3}), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::u32, ov::element::i16, std::vector {1, 2, 0, 3}, - std::vector {1, 2, 0, 3}), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::u64, ov::element::i16, std::vector {1, 2, 0, 3}, - std::vector {1, 2, 0, 3}), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::i4, ov::element::i16, std::vector {0x21, 0x43}, - std::vector {2, 1, 4, 3}, 4), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::i8, ov::element::i16, std::vector {-1, -2, 2, 3}, - std::vector {-1, -2, 2, 3}), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::i16, ov::element::i16, std::vector {-1, -2, 2, 3}, - std::vector {-1, -2, 2, 3}), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::i32, ov::element::i16, std::vector {-1, -2, 2, 3}, - std::vector {-1, -2, 2, 3}), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::i64, ov::element::i16, std::vector {-1, -2, 2, 3}, - std::vector {-1, -2, 2, 3}), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::f16, ov::element::i16, - std::vector {-1, -2, 0, 3}, std::vector {-1, -2, 0, 3}), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::bf16, ov::element::i16, - std::vector {-1, -2, 0, 3}, std::vector {-1, -2, 0, 3}), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::f32, ov::element::i16, std::vector {-1, -2, 2, 3}, - std::vector {-1, -2, 2, 3}), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{8}, + ov::element::u1, + ov::element::i16, + std::vector{0x81}, + std::vector{1, 0, 0, 0, 0, 0, 0, 1}, + 8), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::u4, + ov::element::i16, + std::vector{0x21, 0x43}, + std::vector{2, 1, 4, 3}, + 4), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::u8, + ov::element::i16, + std::vector{1, 2, 0, 3}, + std::vector{1, 2, 0, 3}), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::u16, + ov::element::i16, + std::vector{1, 2, 0, 3}, + std::vector{1, 2, 0, 3}), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::u32, + ov::element::i16, + std::vector{1, 2, 0, 3}, + std::vector{1, 2, 0, 3}), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::u64, + ov::element::i16, + std::vector{1, 2, 0, 3}, + std::vector{1, 2, 0, 3}), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::i4, + ov::element::i16, + std::vector{0x21, 0x43}, + std::vector{2, 1, 4, 3}, + 4), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::i8, + ov::element::i16, + std::vector{-1, -2, 2, 3}, + std::vector{-1, -2, 2, 3}), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::i16, + ov::element::i16, + std::vector{-1, -2, 2, 3}, + std::vector{-1, -2, 2, 3}), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::i32, + ov::element::i16, + std::vector{-1, -2, 2, 3}, + std::vector{-1, -2, 2, 3}), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::i64, + ov::element::i16, + std::vector{-1, -2, 2, 3}, + std::vector{-1, -2, 2, 3}), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::f16, + ov::element::i16, + std::vector{-1, -2, 0, 3}, + std::vector{-1, -2, 0, 3}), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::bf16, + ov::element::i16, + std::vector{-1, -2, 0, 3}, + std::vector{-1, -2, 0, 3}), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::f32, + ov::element::i16, + std::vector{-1, -2, 2, 3}, + std::vector{-1, -2, 2, 3}), // destination i32 - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {8}, ov::element::u1, ov::element::i32, std::vector {0x81}, - std::vector {1, 0, 0, 0, 0, 0, 0, 1}, 8), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::u4, ov::element::i32, std::vector {0x21, 0x43}, - std::vector {2, 1, 4, 3}, 4), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::u8, ov::element::i32, std::vector {1, 2, 0, 3}, - std::vector {1, 2, 0, 3}), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::u16, ov::element::i32, std::vector {1, 2, 0, 3}, - std::vector {1, 2, 0, 3}), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::u32, ov::element::i32, std::vector {1, 2, 0, 3}, - std::vector {1, 2, 0, 3}), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::u64, ov::element::i32, std::vector {1, 2, 0, 3}, - std::vector {1, 2, 0, 3}), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::i4, ov::element::i32, std::vector {0x21, 0x43}, - std::vector {2, 1, 4, 3}, 4), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::i8, ov::element::i32, std::vector {-1, -2, 2, 3}, - std::vector {-1, -2, 2, 3}), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::i16, ov::element::i32, std::vector {-1, -2, 2, 3}, - std::vector {-1, -2, 2, 3}), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::i32, ov::element::i32, std::vector {-1, -2, 2, 3}, - std::vector {-1, -2, 2, 3}), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::i64, ov::element::i32, std::vector {-1, -2, 2, 3}, - std::vector {-1, -2, 2, 3}), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::f16, ov::element::i32, - std::vector {-1, -2, 0, 3}, std::vector {-1, -2, 0, 3}), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::bf16, ov::element::i32, - std::vector {-1, -2, 0, 3}, std::vector {-1, -2, 0, 3}), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::f32, ov::element::i32, std::vector {-1, -2, 2, 3}, - std::vector {-1, -2, 2, 3}), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{8}, + ov::element::u1, + ov::element::i32, + std::vector{0x81}, + std::vector{1, 0, 0, 0, 0, 0, 0, 1}, + 8), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::u4, + ov::element::i32, + std::vector{0x21, 0x43}, + std::vector{2, 1, 4, 3}, + 4), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::u8, + ov::element::i32, + std::vector{1, 2, 0, 3}, + std::vector{1, 2, 0, 3}), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::u16, + ov::element::i32, + std::vector{1, 2, 0, 3}, + std::vector{1, 2, 0, 3}), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::u32, + ov::element::i32, + std::vector{1, 2, 0, 3}, + std::vector{1, 2, 0, 3}), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::u64, + ov::element::i32, + std::vector{1, 2, 0, 3}, + std::vector{1, 2, 0, 3}), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::i4, + ov::element::i32, + std::vector{0x21, 0x43}, + std::vector{2, 1, 4, 3}, + 4), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::i8, + ov::element::i32, + std::vector{-1, -2, 2, 3}, + std::vector{-1, -2, 2, 3}), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::i16, + ov::element::i32, + std::vector{-1, -2, 2, 3}, + std::vector{-1, -2, 2, 3}), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::i32, + ov::element::i32, + std::vector{-1, -2, 2, 3}, + std::vector{-1, -2, 2, 3}), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::i64, + ov::element::i32, + std::vector{-1, -2, 2, 3}, + std::vector{-1, -2, 2, 3}), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::f16, + ov::element::i32, + std::vector{-1, -2, 0, 3}, + std::vector{-1, -2, 0, 3}), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::bf16, + ov::element::i32, + std::vector{-1, -2, 0, 3}, + std::vector{-1, -2, 0, 3}), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::f32, + ov::element::i32, + std::vector{-1, -2, 2, 3}, + std::vector{-1, -2, 2, 3}), // destination i64 - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {8}, ov::element::u1, ov::element::i64, std::vector {0x81}, - std::vector {1, 0, 0, 0, 0, 0, 0, 1}, 8), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::u4, ov::element::i64, std::vector {0x21, 0x43}, - std::vector {2, 1, 4, 3}, 4), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::u8, ov::element::i64, std::vector {1, 2, 0, 3}, - std::vector {1, 2, 0, 3}), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::u16, ov::element::i64, std::vector {1, 2, 0, 3}, - std::vector {1, 2, 0, 3}), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::u32, ov::element::i64, std::vector {1, 2, 0, 3}, - std::vector {1, 2, 0, 3}), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::u64, ov::element::i64, std::vector {1, 2, 0, 3}, - std::vector {1, 2, 0, 3}), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::i4, ov::element::i64, std::vector {0x21, 0x43}, - std::vector {2, 1, 4, 3}, 4), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::i8, ov::element::i64, std::vector {-1, -2, 2, 3}, - std::vector {-1, -2, 2, 3}), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::i16, ov::element::i64, std::vector {-1, -2, 2, 3}, - std::vector {-1, -2, 2, 3}), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::i32, ov::element::i64, std::vector {-1, -2, 2, 3}, - std::vector {-1, -2, 2, 3}), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::i64, ov::element::i64, std::vector {-1, -2, 2, 3}, - std::vector {-1, -2, 2, 3}), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::f16, ov::element::i64, - std::vector {-1, -2, 0, 3}, std::vector {-1, -2, 0, 3}), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::bf16, ov::element::i64, - std::vector {-1, -2, 0, 3}, std::vector {-1, -2, 0, 3}), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::f32, ov::element::i64, std::vector {-1, -2, 2, 3}, - std::vector {-1, -2, 2, 3}), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{8}, + ov::element::u1, + ov::element::i64, + std::vector{0x81}, + std::vector{1, 0, 0, 0, 0, 0, 0, 1}, + 8), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::u4, + ov::element::i64, + std::vector{0x21, 0x43}, + std::vector{2, 1, 4, 3}, + 4), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::u8, + ov::element::i64, + std::vector{1, 2, 0, 3}, + std::vector{1, 2, 0, 3}), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::u16, + ov::element::i64, + std::vector{1, 2, 0, 3}, + std::vector{1, 2, 0, 3}), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::u32, + ov::element::i64, + std::vector{1, 2, 0, 3}, + std::vector{1, 2, 0, 3}), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::u64, + ov::element::i64, + std::vector{1, 2, 0, 3}, + std::vector{1, 2, 0, 3}), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::i4, + ov::element::i64, + std::vector{0x21, 0x43}, + std::vector{2, 1, 4, 3}, + 4), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::i8, + ov::element::i64, + std::vector{-1, -2, 2, 3}, + std::vector{-1, -2, 2, 3}), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::i16, + ov::element::i64, + std::vector{-1, -2, 2, 3}, + std::vector{-1, -2, 2, 3}), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::i32, + ov::element::i64, + std::vector{-1, -2, 2, 3}, + std::vector{-1, -2, 2, 3}), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::i64, + ov::element::i64, + std::vector{-1, -2, 2, 3}, + std::vector{-1, -2, 2, 3}), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::f16, + ov::element::i64, + std::vector{-1, -2, 0, 3}, + std::vector{-1, -2, 0, 3}), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::bf16, + ov::element::i64, + std::vector{-1, -2, 0, 3}, + std::vector{-1, -2, 0, 3}), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::f32, + ov::element::i64, + std::vector{-1, -2, 2, 3}, + std::vector{-1, -2, 2, 3}), // destination u1 - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {8}, ov::element::u1, ov::element::u1, std::vector {0xA0}, - std::vector {0xA0}, 8, 8), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {8}, ov::element::u4, ov::element::u1, - std::vector {0x10, 0x01, 0x00, 0x00}, std::vector {0x90}, 8, 8), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {8}, ov::element::u8, ov::element::u1, - std::vector {1, 0, 1, 0, 0, 0, 0, 1}, std::vector {0xA1}, 8, 8), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {8}, ov::element::u16, ov::element::u1, - std::vector {1, 0, 1, 0, 0, 0, 0, 1}, std::vector {0xA1}, 8, 8), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {8}, ov::element::u32, ov::element::u1, - std::vector {1, 0, 1, 0, 0, 0, 0, 1}, std::vector {0xA1}, 8, 8), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {8}, ov::element::u64, ov::element::u1, - std::vector {1, 0, 1, 0, 0, 0, 0, 1}, std::vector {0xA1}, 8, 8), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {8}, ov::element::i4, ov::element::u1, - std::vector {0x10, 0x01, 0x00, 0x00}, std::vector {0x90}, 8, 8), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {8}, ov::element::i8, ov::element::u1, - std::vector {1, 0, 1, 0, 0, 0, 0, 1}, std::vector {0xA1}, 8, 8), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {8}, ov::element::i16, ov::element::u1, - std::vector {1, 0, 1, 0, 0, 0, 0, 1}, std::vector {0xA1}, 8, 8), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {8}, ov::element::i32, ov::element::u1, - std::vector {1, 0, 1, 0, 0, 0, 0, 1}, std::vector {0xA1}, 8, 8), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {8}, ov::element::i64, ov::element::u1, - std::vector {1, 0, 1, 0, 0, 0, 0, 1}, std::vector {0xA1}, 8, 8), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {8}, ov::element::f16, ov::element::u1, - std::vector {1, 0, 1, 0, 0, 0, 0, 1}, std::vector {0xA1}, 8, 8), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {8}, ov::element::bf16, ov::element::u1, - std::vector {1, 0, 1, 0, 0, 0, 0, 1}, std::vector {0xA1}, 8, 8), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {8}, ov::element::f32, ov::element::u1, - std::vector {1, 0, 1, 0, 0, 0, 0, 1}, std::vector {0xA1}, 8, 8), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{8}, + ov::element::u1, + ov::element::u1, + std::vector{0xA0}, + std::vector{0xA0}, + 8, + 8), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{8}, + ov::element::u4, + ov::element::u1, + std::vector{0x10, 0x01, 0x00, 0x00}, + std::vector{0x90}, + 8, + 8), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{8}, + ov::element::u8, + ov::element::u1, + std::vector{1, 0, 1, 0, 0, 0, 0, 1}, + std::vector{0xA1}, + 8, + 8), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{8}, + ov::element::u16, + ov::element::u1, + std::vector{1, 0, 1, 0, 0, 0, 0, 1}, + std::vector{0xA1}, + 8, + 8), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{8}, + ov::element::u32, + ov::element::u1, + std::vector{1, 0, 1, 0, 0, 0, 0, 1}, + std::vector{0xA1}, + 8, + 8), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{8}, + ov::element::u64, + ov::element::u1, + std::vector{1, 0, 1, 0, 0, 0, 0, 1}, + std::vector{0xA1}, + 8, + 8), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{8}, + ov::element::i4, + ov::element::u1, + std::vector{0x10, 0x01, 0x00, 0x00}, + std::vector{0x90}, + 8, + 8), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{8}, + ov::element::i8, + ov::element::u1, + std::vector{1, 0, 1, 0, 0, 0, 0, 1}, + std::vector{0xA1}, + 8, + 8), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{8}, + ov::element::i16, + ov::element::u1, + std::vector{1, 0, 1, 0, 0, 0, 0, 1}, + std::vector{0xA1}, + 8, + 8), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{8}, + ov::element::i32, + ov::element::u1, + std::vector{1, 0, 1, 0, 0, 0, 0, 1}, + std::vector{0xA1}, + 8, + 8), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{8}, + ov::element::i64, + ov::element::u1, + std::vector{1, 0, 1, 0, 0, 0, 0, 1}, + std::vector{0xA1}, + 8, + 8), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{8}, + ov::element::f16, + ov::element::u1, + std::vector{1, 0, 1, 0, 0, 0, 0, 1}, + std::vector{0xA1}, + 8, + 8), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{8}, + ov::element::bf16, + ov::element::u1, + std::vector{1, 0, 1, 0, 0, 0, 0, 1}, + std::vector{0xA1}, + 8, + 8), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{8}, + ov::element::f32, + ov::element::u1, + std::vector{1, 0, 1, 0, 0, 0, 0, 1}, + std::vector{0xA1}, + 8, + 8), // destination u4 - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::u1, ov::element::u4, std::vector {0xA0}, - std::vector {0x10, 0x10}, 4, 4), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::u4, ov::element::u4, std::vector {0x12, 0x03}, - std::vector {0x12, 0x03}, 4, 4), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::u8, ov::element::u4, std::vector {1, 2, 0, 3}, - std::vector {0x12, 0x03}, 4, 4), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::u16, ov::element::u4, std::vector {1, 2, 0, 3}, - std::vector {0x12, 0x03}, 4, 4), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::u32, ov::element::u4, std::vector {1, 2, 0, 3}, - std::vector {0x12, 0x03}, 4, 4), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::u64, ov::element::u4, std::vector {1, 2, 0, 3}, - std::vector {0x12, 0x03}, 4, 4), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::i4, ov::element::u4, std::vector {0xFE, 0x03}, - std::vector {0xFE, 0x03}, 4, 4), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::i8, ov::element::u4, std::vector {-1, -2, 2, 3}, - std::vector {0xFE, 0x23}, 4, 4), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::i16, ov::element::u4, std::vector {-1, -2, 2, 3}, - std::vector {0xFE, 0x23}, 4, 4), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::i32, ov::element::u4, std::vector {-1, -2, 2, 3}, - std::vector {0xFE, 0x23}, 4, 4), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::i64, ov::element::u4, std::vector {-1, -2, 2, 3}, - std::vector {0xFE, 0x23}, 4, 4), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::f16, ov::element::u4, - std::vector {-1, -2, 0, 3}, std::vector {0xFE, 0x03}, 4, 4), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::bf16, ov::element::u4, - std::vector {-1, -2, 0, 3}, std::vector {0xFE, 0x03}, 4, 4), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::f32, ov::element::u4, std::vector {-1, -2, 2, 3}, - std::vector {0xFE, 0x23}, 4, 4), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::u1, + ov::element::u4, + std::vector{0xA0}, + std::vector{0x10, 0x10}, + 4, + 4), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::u4, + ov::element::u4, + std::vector{0x12, 0x03}, + std::vector{0x12, 0x03}, + 4, + 4), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::u8, + ov::element::u4, + std::vector{1, 2, 0, 3}, + std::vector{0x12, 0x03}, + 4, + 4), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::u16, + ov::element::u4, + std::vector{1, 2, 0, 3}, + std::vector{0x12, 0x03}, + 4, + 4), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::u32, + ov::element::u4, + std::vector{1, 2, 0, 3}, + std::vector{0x12, 0x03}, + 4, + 4), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::u64, + ov::element::u4, + std::vector{1, 2, 0, 3}, + std::vector{0x12, 0x03}, + 4, + 4), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::i4, + ov::element::u4, + std::vector{0xFE, 0x03}, + std::vector{0xFE, 0x03}, + 4, + 4), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::i8, + ov::element::u4, + std::vector{-1, -2, 2, 3}, + std::vector{0xFE, 0x23}, + 4, + 4), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::i16, + ov::element::u4, + std::vector{-1, -2, 2, 3}, + std::vector{0xFE, 0x23}, + 4, + 4), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::i32, + ov::element::u4, + std::vector{-1, -2, 2, 3}, + std::vector{0xFE, 0x23}, + 4, + 4), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::i64, + ov::element::u4, + std::vector{-1, -2, 2, 3}, + std::vector{0xFE, 0x23}, + 4, + 4), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::f16, + ov::element::u4, + std::vector{-1, -2, 0, 3}, + std::vector{0xFE, 0x03}, + 4, + 4), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::bf16, + ov::element::u4, + std::vector{-1, -2, 0, 3}, + std::vector{0xFE, 0x03}, + 4, + 4), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::f32, + ov::element::u4, + std::vector{-1, -2, 2, 3}, + std::vector{0xFE, 0x23}, + 4, + 4), // destination u8 - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {8}, ov::element::u1, ov::element::u8, std::vector {0x81}, - std::vector {1, 0, 0, 0, 0, 0, 0, 1}, 8), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::u4, ov::element::u8, std::vector {0x21, 0x43}, - std::vector {2, 1, 4, 3}, 4), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::u8, ov::element::u8, std::vector {1, 2, 0, 3}, - std::vector {1, 2, 0, 3}), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::u16, ov::element::u8, std::vector {1, 2, 0, 3}, - std::vector {1, 2, 0, 3}), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::u32, ov::element::u8, std::vector {1, 2, 0, 3}, - std::vector {1, 2, 0, 3}), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::u64, ov::element::u8, std::vector {1, 2, 0, 3}, - std::vector {1, 2, 0, 3}), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::i4, ov::element::u8, std::vector {0x21, 0x43}, - std::vector {2, 1, 4, 3}, 4), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::i8, ov::element::u8, std::vector {1, 2, 2, 3}, - std::vector {1, 2, 2, 3}), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::i16, ov::element::u8, std::vector {1, 2, 2, 3}, - std::vector {1, 2, 2, 3}), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::i32, ov::element::u8, std::vector {1, 2, 2, 3}, - std::vector {1, 2, 2, 3}), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::i64, ov::element::u8, std::vector {1, 2, 2, 3}, - std::vector {1, 2, 2, 3}), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::f16, ov::element::u8, - std::vector {1, 2, 0, 3}, std::vector {1, 2, 0, 3}), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::bf16, ov::element::u8, - std::vector {1, 2, 0, 3}, std::vector {1, 2, 0, 3}), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::f32, ov::element::u8, std::vector {1, 2, 2, 3}, - std::vector {1, 2, 2, 3}), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{8}, + ov::element::u1, + ov::element::u8, + std::vector{0x81}, + std::vector{1, 0, 0, 0, 0, 0, 0, 1}, + 8), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::u4, + ov::element::u8, + std::vector{0x21, 0x43}, + std::vector{2, 1, 4, 3}, + 4), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::u8, + ov::element::u8, + std::vector{1, 2, 0, 3}, + std::vector{1, 2, 0, 3}), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::u16, + ov::element::u8, + std::vector{1, 2, 0, 3}, + std::vector{1, 2, 0, 3}), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::u32, + ov::element::u8, + std::vector{1, 2, 0, 3}, + std::vector{1, 2, 0, 3}), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::u64, + ov::element::u8, + std::vector{1, 2, 0, 3}, + std::vector{1, 2, 0, 3}), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::i4, + ov::element::u8, + std::vector{0x21, 0x43}, + std::vector{2, 1, 4, 3}, + 4), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::i8, + ov::element::u8, + std::vector{1, 2, 2, 3}, + std::vector{1, 2, 2, 3}), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::i16, + ov::element::u8, + std::vector{1, 2, 2, 3}, + std::vector{1, 2, 2, 3}), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::i32, + ov::element::u8, + std::vector{1, 2, 2, 3}, + std::vector{1, 2, 2, 3}), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::i64, + ov::element::u8, + std::vector{1, 2, 2, 3}, + std::vector{1, 2, 2, 3}), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::f16, + ov::element::u8, + std::vector{1, 2, 0, 3}, + std::vector{1, 2, 0, 3}), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::bf16, + ov::element::u8, + std::vector{1, 2, 0, 3}, + std::vector{1, 2, 0, 3}), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::f32, + ov::element::u8, + std::vector{1, 2, 2, 3}, + std::vector{1, 2, 2, 3}), // destination u16 - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {8}, ov::element::u1, ov::element::u16, std::vector {0x81}, - std::vector {1, 0, 0, 0, 0, 0, 0, 1}, 8), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::u4, ov::element::u16, std::vector {0x21, 0x43}, - std::vector {2, 1, 4, 3}, 4), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::u8, ov::element::u16, std::vector {1, 2, 0, 3}, - std::vector {1, 2, 0, 3}), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::u16, ov::element::u16, std::vector {1, 2, 0, 3}, - std::vector {1, 2, 0, 3}), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::u32, ov::element::u16, std::vector {1, 2, 0, 3}, - std::vector {1, 2, 0, 3}), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::u64, ov::element::u16, std::vector {1, 2, 0, 3}, - std::vector {1, 2, 0, 3}), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::i4, ov::element::u16, std::vector {0x21, 0x43}, - std::vector {2, 1, 4, 3}, 4), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::i8, ov::element::u16, std::vector {1, 2, 2, 3}, - std::vector {1, 2, 2, 3}), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::i16, ov::element::u16, std::vector {1, 2, 2, 3}, - std::vector {1, 2, 2, 3}), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::i32, ov::element::u16, std::vector {1, 2, 2, 3}, - std::vector {1, 2, 2, 3}), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::i64, ov::element::u16, std::vector {1, 2, 2, 3}, - std::vector {1, 2, 2, 3}), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::f16, ov::element::u16, - std::vector {1, 2, 0, 3}, std::vector {1, 2, 0, 3}), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::bf16, ov::element::u16, - std::vector {1, 2, 0, 3}, std::vector {1, 2, 0, 3}), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::f32, ov::element::u16, std::vector {1, 2, 2, 3}, - std::vector {1, 2, 2, 3}), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{8}, + ov::element::u1, + ov::element::u16, + std::vector{0x81}, + std::vector{1, 0, 0, 0, 0, 0, 0, 1}, + 8), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::u4, + ov::element::u16, + std::vector{0x21, 0x43}, + std::vector{2, 1, 4, 3}, + 4), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::u8, + ov::element::u16, + std::vector{1, 2, 0, 3}, + std::vector{1, 2, 0, 3}), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::u16, + ov::element::u16, + std::vector{1, 2, 0, 3}, + std::vector{1, 2, 0, 3}), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::u32, + ov::element::u16, + std::vector{1, 2, 0, 3}, + std::vector{1, 2, 0, 3}), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::u64, + ov::element::u16, + std::vector{1, 2, 0, 3}, + std::vector{1, 2, 0, 3}), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::i4, + ov::element::u16, + std::vector{0x21, 0x43}, + std::vector{2, 1, 4, 3}, + 4), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::i8, + ov::element::u16, + std::vector{1, 2, 2, 3}, + std::vector{1, 2, 2, 3}), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::i16, + ov::element::u16, + std::vector{1, 2, 2, 3}, + std::vector{1, 2, 2, 3}), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::i32, + ov::element::u16, + std::vector{1, 2, 2, 3}, + std::vector{1, 2, 2, 3}), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::i64, + ov::element::u16, + std::vector{1, 2, 2, 3}, + std::vector{1, 2, 2, 3}), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::f16, + ov::element::u16, + std::vector{1, 2, 0, 3}, + std::vector{1, 2, 0, 3}), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::bf16, + ov::element::u16, + std::vector{1, 2, 0, 3}, + std::vector{1, 2, 0, 3}), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::f32, + ov::element::u16, + std::vector{1, 2, 2, 3}, + std::vector{1, 2, 2, 3}), // destination u32 - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {8}, ov::element::u1, ov::element::u32, std::vector {0x81}, - std::vector {1, 0, 0, 0, 0, 0, 0, 1}, 8), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::u4, ov::element::u32, std::vector {0x21, 0x43}, - std::vector {2, 1, 4, 3}, 4), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::u8, ov::element::u32, std::vector {1, 2, 0, 3}, - std::vector {1, 2, 0, 3}), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::u16, ov::element::u32, std::vector {1, 2, 0, 3}, - std::vector {1, 2, 0, 3}), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::u32, ov::element::u32, std::vector {1, 2, 0, 3}, - std::vector {1, 2, 0, 3}), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::u64, ov::element::u32, std::vector {1, 2, 0, 3}, - std::vector {1, 2, 0, 3}), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::i4, ov::element::u32, std::vector {0x21, 0x43}, - std::vector {2, 1, 4, 3}, 4), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::i8, ov::element::u32, std::vector {1, 2, 2, 3}, - std::vector {1, 2, 2, 3}), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::i16, ov::element::u32, std::vector {1, 2, 2, 3}, - std::vector {1, 2, 2, 3}), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::i32, ov::element::u32, std::vector {1, 2, 2, 3}, - std::vector {1, 2, 2, 3}), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::i64, ov::element::u32, std::vector {1, 2, 2, 3}, - std::vector {1, 2, 2, 3}), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::f16, ov::element::u32, - std::vector {1, 2, 0, 3}, std::vector {1, 2, 0, 3}), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::bf16, ov::element::u32, - std::vector {1, 2, 0, 3}, std::vector {1, 2, 0, 3}), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::f32, ov::element::u32, std::vector {1, 2, 2, 3}, - std::vector {1, 2, 2, 3}), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{8}, + ov::element::u1, + ov::element::u32, + std::vector{0x81}, + std::vector{1, 0, 0, 0, 0, 0, 0, 1}, + 8), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::u4, + ov::element::u32, + std::vector{0x21, 0x43}, + std::vector{2, 1, 4, 3}, + 4), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::u8, + ov::element::u32, + std::vector{1, 2, 0, 3}, + std::vector{1, 2, 0, 3}), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::u16, + ov::element::u32, + std::vector{1, 2, 0, 3}, + std::vector{1, 2, 0, 3}), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::u32, + ov::element::u32, + std::vector{1, 2, 0, 3}, + std::vector{1, 2, 0, 3}), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::u64, + ov::element::u32, + std::vector{1, 2, 0, 3}, + std::vector{1, 2, 0, 3}), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::i4, + ov::element::u32, + std::vector{0x21, 0x43}, + std::vector{2, 1, 4, 3}, + 4), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::i8, + ov::element::u32, + std::vector{1, 2, 2, 3}, + std::vector{1, 2, 2, 3}), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::i16, + ov::element::u32, + std::vector{1, 2, 2, 3}, + std::vector{1, 2, 2, 3}), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::i32, + ov::element::u32, + std::vector{1, 2, 2, 3}, + std::vector{1, 2, 2, 3}), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::i64, + ov::element::u32, + std::vector{1, 2, 2, 3}, + std::vector{1, 2, 2, 3}), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::f16, + ov::element::u32, + std::vector{1, 2, 0, 3}, + std::vector{1, 2, 0, 3}), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::bf16, + ov::element::u32, + std::vector{1, 2, 0, 3}, + std::vector{1, 2, 0, 3}), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::f32, + ov::element::u32, + std::vector{1, 2, 2, 3}, + std::vector{1, 2, 2, 3}), // destination u64 - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {8}, ov::element::u1, ov::element::u64, std::vector {0x81}, - std::vector {1, 0, 0, 0, 0, 0, 0, 1}, 8), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::u4, ov::element::u64, std::vector {0x21, 0x43}, - std::vector {2, 1, 4, 3}, 4), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::u8, ov::element::u64, std::vector {1, 2, 0, 3}, - std::vector {1, 2, 0, 3}), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::u16, ov::element::u64, std::vector {1, 2, 0, 3}, - std::vector {1, 2, 0, 3}), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::u32, ov::element::u64, std::vector {1, 2, 0, 3}, - std::vector {1, 2, 0, 3}), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::u64, ov::element::u64, std::vector {1, 2, 0, 3}, - std::vector {1, 2, 0, 3}), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::i4, ov::element::u64, std::vector {0x21, 0x43}, - std::vector {2, 1, 4, 3}, 4), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::i8, ov::element::u64, std::vector {1, 2, 2, 3}, - std::vector {1, 2, 2, 3}), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::i16, ov::element::u64, std::vector {1, 2, 2, 3}, - std::vector {1, 2, 2, 3}), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::i32, ov::element::u64, std::vector {1, 2, 2, 3}, - std::vector {1, 2, 2, 3}), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::i64, ov::element::u64, std::vector {1, 2, 2, 3}, - std::vector {1, 2, 2, 3}), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::f16, ov::element::u64, - std::vector {1, 2, 0, 3}, std::vector {1, 2, 0, 3}), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::bf16, ov::element::u64, - std::vector {1, 2, 0, 3}, std::vector {1, 2, 0, 3}), - ConvertParams(ConversionTypes::CONVERT_LIKE, ov::PartialShape {4}, ov::element::f32, ov::element::u64, std::vector {1, 2, 2, 3}, - std::vector {1, 2, 2, 3})), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{8}, + ov::element::u1, + ov::element::u64, + std::vector{0x81}, + std::vector{1, 0, 0, 0, 0, 0, 0, 1}, + 8), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::u4, + ov::element::u64, + std::vector{0x21, 0x43}, + std::vector{2, 1, 4, 3}, + 4), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::u8, + ov::element::u64, + std::vector{1, 2, 0, 3}, + std::vector{1, 2, 0, 3}), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::u16, + ov::element::u64, + std::vector{1, 2, 0, 3}, + std::vector{1, 2, 0, 3}), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::u32, + ov::element::u64, + std::vector{1, 2, 0, 3}, + std::vector{1, 2, 0, 3}), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::u64, + ov::element::u64, + std::vector{1, 2, 0, 3}, + std::vector{1, 2, 0, 3}), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::i4, + ov::element::u64, + std::vector{0x21, 0x43}, + std::vector{2, 1, 4, 3}, + 4), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::i8, + ov::element::u64, + std::vector{1, 2, 2, 3}, + std::vector{1, 2, 2, 3}), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::i16, + ov::element::u64, + std::vector{1, 2, 2, 3}, + std::vector{1, 2, 2, 3}), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::i32, + ov::element::u64, + std::vector{1, 2, 2, 3}, + std::vector{1, 2, 2, 3}), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::i64, + ov::element::u64, + std::vector{1, 2, 2, 3}, + std::vector{1, 2, 2, 3}), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::f16, + ov::element::u64, + std::vector{1, 2, 0, 3}, + std::vector{1, 2, 0, 3}), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::bf16, + ov::element::u64, + std::vector{1, 2, 0, 3}, + std::vector{1, 2, 0, 3}), + ConvertParams(ConversionTypes::CONVERT_LIKE, + ov::PartialShape{4}, + ov::element::f32, + ov::element::u64, + std::vector{1, 2, 2, 3}, + std::vector{1, 2, 2, 3})), ReferenceConversionLayerTest::getTestCaseName); -} // namespace -} // namespace ConversionOpsRefTestDefinitions -} // namespace reference_tests +} // namespace +} // namespace ConversionOpsRefTestDefinitions +} // namespace reference_tests diff --git a/src/plugins/template/tests/functional/op_reference/convolution.cpp b/src/plugins/template/tests/functional/op_reference/convolution.cpp index 055921abe53..64f4a5f8275 100644 --- a/src/plugins/template/tests/functional/op_reference/convolution.cpp +++ b/src/plugins/template/tests/functional/op_reference/convolution.cpp @@ -2,9 +2,10 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/convolution.hpp" + #include -#include "openvino/op/convolution.hpp" #include "base_reference_test.hpp" using namespace reference_tests; @@ -13,10 +14,17 @@ using namespace ov; namespace { struct ConvolutionParams { template - ConvolutionParams(const PartialShape& inputShape, const PartialShape& filterShape, const PartialShape& outputShape, + ConvolutionParams(const PartialShape& inputShape, + const PartialShape& filterShape, + const PartialShape& outputShape, const element::Type& iType, - const std::vector& iValues, const std::vector& filterValues, const std::vector& oValues, - const Strides& strides, const CoordinateDiff& padBegin, const CoordinateDiff& padEnd, const Strides& dialations) + const std::vector& iValues, + const std::vector& filterValues, + const std::vector& oValues, + const Strides& strides, + const CoordinateDiff& padBegin, + const CoordinateDiff& padEnd, + const Strides& dialations) : inputShape(inputShape), filterShape(filterShape), outputShape(outputShape), @@ -32,10 +40,17 @@ struct ConvolutionParams { dialations(dialations) {} template - ConvolutionParams(const PartialShape& inputShape, const PartialShape& filterShape, const PartialShape& outputShape, + ConvolutionParams(const PartialShape& inputShape, + const PartialShape& filterShape, + const PartialShape& outputShape, const element::Type& iType, - const std::vector& iValues, const std::vector& filterValues, const std::vector& oValues, - const Strides& strides, const CoordinateDiff& padBegin, const CoordinateDiff& padEnd, const Strides& dialations, + const std::vector& iValues, + const std::vector& filterValues, + const std::vector& oValues, + const Strides& strides, + const CoordinateDiff& padBegin, + const CoordinateDiff& padEnd, + const Strides& dialations, const bool convolutionOutlining) : inputShape(inputShape), filterShape(filterShape), @@ -109,15 +124,15 @@ private: if (params.convolutionOutlining == true) { const auto Convolution2 = std::make_shared(Convolution, - filter, - params.strides, - params.padBegin, - params.padEnd, - params.dialations, - auto_pad); - return std::make_shared(NodeVector {Convolution2}, ParameterVector {in, filter}); + filter, + params.strides, + params.padBegin, + params.padEnd, + params.dialations, + auto_pad); + return std::make_shared(NodeVector{Convolution2}, ParameterVector{in, filter}); } else { - return std::make_shared(NodeVector {Convolution}, ParameterVector {in, filter}); + return std::make_shared(NodeVector{Convolution}, ParameterVector{in, filter}); } } }; @@ -130,9 +145,9 @@ template std::vector generateConvolutionI8Params() { using T = typename element_type_traits::value_type; - std::vector convolutionParams { -// --------------------- 1D convolution ------------------------------------------ -// clang-format off + std::vector convolutionParams{ + // --------------------- 1D convolution ------------------------------------------ + // clang-format off ConvolutionParams(PartialShape {1, 1, 6}, PartialShape {1, 1, 3}, PartialShape {1, 1, 4}, @@ -1069,12 +1084,11 @@ std::vector generateConvolutionFloatParams() { // clang-format on std::vector generateConvolutionCombinedParams() { - const std::vector> convolutionTypeParams { + const std::vector> convolutionTypeParams{ generateConvolutionFloatParams(), generateConvolutionFloatParams(), generateConvolutionFloatParams(), - generateConvolutionI8Params() - }; + generateConvolutionI8Params()}; std::vector combinedParams; for (const auto& params : convolutionTypeParams) { @@ -1083,7 +1097,9 @@ std::vector generateConvolutionCombinedParams() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_Convolution_With_Hardcoded_Refs, ReferenceConvolutionLayerTest, - testing::ValuesIn(generateConvolutionCombinedParams()), ReferenceConvolutionLayerTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_Convolution_With_Hardcoded_Refs, + ReferenceConvolutionLayerTest, + testing::ValuesIn(generateConvolutionCombinedParams()), + ReferenceConvolutionLayerTest::getTestCaseName); -} // namespace +} // namespace diff --git a/src/plugins/template/tests/functional/op_reference/convolution_backprop.cpp b/src/plugins/template/tests/functional/op_reference/convolution_backprop.cpp index 9a58949a903..adddcb5824c 100644 --- a/src/plugins/template/tests/functional/op_reference/convolution_backprop.cpp +++ b/src/plugins/template/tests/functional/op_reference/convolution_backprop.cpp @@ -4,8 +4,8 @@ #include -#include "openvino/op/convolution.hpp" #include "base_reference_test.hpp" +#include "openvino/op/convolution.hpp" using namespace reference_tests; using namespace ov; @@ -13,10 +13,17 @@ using namespace ov; namespace { struct ConvolutionBackpropParams { template - ConvolutionBackpropParams(const PartialShape& inputShape, const PartialShape& filterShape, const PartialShape& outputShape, - const element::Type& iType, - const std::vector& iValues, const std::vector& filterValues, const std::vector& oValues, - const Strides& strides, const CoordinateDiff& padBegin, const CoordinateDiff& padEnd, const Strides& dialations) + ConvolutionBackpropParams(const PartialShape& inputShape, + const PartialShape& filterShape, + const PartialShape& outputShape, + const element::Type& iType, + const std::vector& iValues, + const std::vector& filterValues, + const std::vector& oValues, + const Strides& strides, + const CoordinateDiff& padBegin, + const CoordinateDiff& padEnd, + const Strides& dialations) : inputShape(inputShape), filterShape(filterShape), outputShape(outputShape), @@ -32,11 +39,18 @@ struct ConvolutionBackpropParams { dialations(dialations) {} template - ConvolutionBackpropParams(const PartialShape& inputShape, const PartialShape& filterShape, const PartialShape& outputShape, - const element::Type& iType, - const std::vector& iValues, const std::vector& filterValues, const std::vector& oValues, - const Strides& strides, const CoordinateDiff& padBegin, const CoordinateDiff& padEnd, const Strides& dialations, - const CoordinateDiff& outPadding) + ConvolutionBackpropParams(const PartialShape& inputShape, + const PartialShape& filterShape, + const PartialShape& outputShape, + const element::Type& iType, + const std::vector& iValues, + const std::vector& filterValues, + const std::vector& oValues, + const Strides& strides, + const CoordinateDiff& padBegin, + const CoordinateDiff& padEnd, + const Strides& dialations, + const CoordinateDiff& outPadding) : inputShape(inputShape), filterShape(filterShape), outputShape(outputShape), @@ -68,7 +82,8 @@ struct ConvolutionBackpropParams { ov::CoordinateDiff outPadding; }; -class ReferenceConvolutionBackpropLayerTest : public testing::TestWithParam, public CommonReferenceTest { +class ReferenceConvolutionBackpropLayerTest : public testing::TestWithParam, + public CommonReferenceTest { public: void SetUp() override { auto params = GetParam(); @@ -99,15 +114,15 @@ private: const auto in = std::make_shared(params.inType, params.inputShape); const auto filter = std::make_shared(params.inType, params.filterShape); const auto ConvolutionBackprop = std::make_shared(in, - filter, - params.strides, - params.padBegin, - params.padEnd, - params.dialations, - auto_pad, - params.outPadding); + filter, + params.strides, + params.padBegin, + params.padEnd, + params.dialations, + auto_pad, + params.outPadding); - return std::make_shared(NodeVector {ConvolutionBackprop}, ParameterVector {in, filter}); + return std::make_shared(NodeVector{ConvolutionBackprop}, ParameterVector{in, filter}); } }; @@ -119,953 +134,2015 @@ template std::vector generateConvolutionBackpropFloatParams() { using T = typename element_type_traits::value_type; - std::vector convolutionBackpropParams { -// --------------------- 1D ConvolutionBackprop ------------------------------------------ - ConvolutionBackpropParams(PartialShape {1, 1, 4}, - PartialShape {1, 1, 3}, - PartialShape {1, 1, 6}, - IN_ET, - std::vector{5, 6, 7, 2}, - std::vector{2, 0, 1}, - std::vector{10, 12, 19, 10, 7, 2}, - {1}, - {0}, - {0}, - {1}, - {0}), - ConvolutionBackpropParams(PartialShape {1, 1, 4}, - PartialShape {1, 1, 3}, - PartialShape {1, 1, 4}, - IN_ET, - std::vector{5, 6, 7, 2}, - std::vector{2, 0, 1}, - std::vector{12, 19, 10, 7}, - {1}, - {1}, - {1}, - {1}, - {0}), - ConvolutionBackpropParams(PartialShape {1, 1, 2}, - PartialShape {1, 1, 3}, - PartialShape {1, 1, 5}, - IN_ET, - std::vector{5, 7}, - std::vector{2, 0, 1}, - std::vector{10, 0, 19, 0, 7}, - {2}, - {0}, - {0}, - {1}, - {0}), - ConvolutionBackpropParams(PartialShape {1, 1, 4}, - PartialShape {1, 1, 3}, - PartialShape {1, 1, 5}, - IN_ET, - std::vector{5, 6, 7, 2}, - std::vector{2, 0, 1}, - std::vector{12, 19, 10, 7, 2}, - {1}, - {1}, - {1}, - {1}, - {1}), - ConvolutionBackpropParams(PartialShape {1, 1, 3}, - PartialShape {1, 1, 3}, - PartialShape {1, 1, 7}, - IN_ET, - std::vector{8, 5, 1}, - std::vector{2, 0, 1}, - std::vector{16, 10, 2, 0, 8, 5, 1}, - {1}, - {0}, - {0}, - {2}, - {0}), - ConvolutionBackpropParams(PartialShape {1, 1, 4}, - PartialShape {1, 1, 3}, - PartialShape {1, 1, 7}, - IN_ET, - std::vector{3, 9, 1, 2}, - std::vector{2, 0, 1}, - std::vector{18, 0, 5, 0, 13, 0, 1}, - {2}, - {2}, - {2}, - {2}, - {0}), - ConvolutionBackpropParams(PartialShape {1, 1, 2}, - PartialShape {1, 2, 3}, - PartialShape {1, 2, 4}, - IN_ET, - std::vector{10, 3}, - std::vector{ - // channel 1 - 2, 0, 1, - // channel 2 - 1, 0, 2}, - std::vector{ - // channel 1 - 20, 6, 10, 3, - // channel 2 - 10, 3, 20, 6}, - {1}, - {0}, - {0}, - {1}, - {0}), - ConvolutionBackpropParams(PartialShape {1, 2, 2}, - PartialShape {2, 1, 3}, - PartialShape {1, 1, 4}, - IN_ET, - std::vector{ - // channel 1 - 4, 7, - // channel 2 - 5, 5}, - std::vector{ - // filter 1 - 2, 0, 1, - // filter 2 - 1, 0, 2}, - std::vector{13, 19, 14, 17}, - {1}, - {0}, - {0}, - {1}, - {0}), - ConvolutionBackpropParams(PartialShape {2, 1, 2}, - PartialShape {1, 1, 3}, - PartialShape {2, 1, 4}, - IN_ET, - std::vector{ - // batch 1 - 1, 3, - // batch 2 - 2, 2}, - std::vector{2, 0, 1}, - std::vector{ - // batch 1 - 2, 6, 1, 3, - // batch 2 - 4, 4, 2, 2}, - {1}, - {0}, - {0}, - {1}, - {0}), -// --------------------- 2D ConvolutionBackprop ------------------------------------------ - ConvolutionBackpropParams(PartialShape {1, 1, 2, 2}, - PartialShape {1, 1, 3, 3}, - PartialShape {1, 1, 4, 4}, - IN_ET, - std::vector{ - 1, 3, - 7, 5}, - std::vector{ - 1, 2, 3, - 0, 1, 0, - 3, 2, 1}, - std::vector{ - 1, 5, 9, 9, - 7, 20, 34, 15, - 3, 18, 12, 3, - 21, 29, 17, 5}, - {1, 1}, - {0, 0}, - {0, 0}, - {1, 1}, - {0, 0}), - ConvolutionBackpropParams(PartialShape {1, 1, 2, 2}, - PartialShape {1, 1, 3, 3}, - PartialShape {1, 1, 3, 3}, - IN_ET, - std::vector{ - 1, 3, - 7, 5}, - std::vector{ - 1, 2, 3, - 1, 1, 1, - 3, 2, 1}, - std::vector{ - 23, 35, 18, - 23, 19, 8, - 29, 17, 5}, - {1, 1}, - {1, 1}, - {1, 1}, - {1, 1}, - {1, 1}), - ConvolutionBackpropParams(PartialShape {1, 1, 4, 4}, - PartialShape {1, 1, 3, 3}, - PartialShape {1, 1, 4, 4}, - IN_ET, - std::vector{ - 1, 3, 5, 7, - 7, 5, 3, 1, - 2, 4, 6, 8, - 8, 6, 4, 2}, - std::vector{ - 1, 2, 3, - 0, 1, 0, - 2, 1, 2}, - std::vector{ - 20, 37, 27, 18, - 22, 40, 60, 52, - 41, 69, 49, 31, - 18, 26, 34, 22}, - {1, 1}, - {1, 1}, - {1, 1}, - {1, 1}, - {0, 0}), - ConvolutionBackpropParams(PartialShape {1, 1, 2, 2}, - PartialShape {1, 1, 3, 3}, - PartialShape {1, 1, 5, 5}, - IN_ET, - std::vector{ - 2, 5, - 4, 3}, - std::vector{ - 1, 2, 3, - 1, 1, 1, - 3, 2, 1}, - std::vector{ - 2, 4, 11, 10, 15, - 2, 2, 7, 5, 5, - 10, 12, 32, 16, 14, - 4, 4, 7, 3, 3, - 12, 8, 13, 6, 3}, - {2, 2}, - {0, 0}, - {0, 0}, - {1, 1}, - {0, 0}), - ConvolutionBackpropParams(PartialShape {1, 1, 2, 2}, - PartialShape {1, 1, 3, 3}, - PartialShape {1, 1, 6, 6}, - IN_ET, - std::vector{ - 2, 3, - 4, 3}, - std::vector{ - 1, 2, 3, - 1, 1, 1, - 3, 2, 1}, - std::vector{ - 2, 3, 4, 6, 6, 9, - 4, 3, 8, 6, 12, 9, - 2, 3, 2, 3, 2, 3, - 4, 3, 4, 3, 4, 3, - 6, 9, 4, 6, 2, 3, - 12, 9, 8, 6, 4, 3}, - {1, 1}, - {0, 0}, - {0, 0}, - {2, 2}, - {0, 0}), - ConvolutionBackpropParams(PartialShape {1, 1, 3, 3}, - PartialShape {1, 1, 3, 3}, - PartialShape {1, 1, 5, 5}, - IN_ET, - std::vector{ - 1, 3, 5, - 7, 5, 3, - 2, 4, 6}, - std::vector{ - 1, 2, 3, - 1, 1, 1, - 3, 2, 1}, - std::vector{ - 23, 0, 43, 0, 29, - 0, 0, 0, 0, 0, - 31, 0, 57, 0, 45, - 0, 0, 0, 0, 0, - 35, 0, 38, 0, 21}, - {2, 2}, - {2, 2}, - {2, 2}, - {2, 2}, - {0, 0}), - ConvolutionBackpropParams(PartialShape {1, 1, 2, 2}, - PartialShape {1, 2, 3, 3}, - PartialShape {1, 2, 4, 4}, - IN_ET, - std::vector{ - 1, 3, - 7, 5}, - std::vector{ - // channel 1 - 5, 3, 5, - 1, 3, 1, - 4, 2, 4, - // channel 2 - -5, 3, 5, - 1, -3, 1, - 4, 2, -4}, - std::vector{ - // channel 1 - 5, 18, 14, 15, - 36, 52, 60, 28, - 11, 40, 32, 17, - 28, 34, 38, 20, - // channel 2 - -5, -12, 14, 15, - -34, -4, 42, 28, - 11, -2, -6, -7, - 28, 34, -18, -20}, - {1, 1}, - {0, 0}, - {0, 0}, - {1, 1}, - {0, 0}), - ConvolutionBackpropParams(PartialShape {1, 2, 2, 2}, - PartialShape {2, 1, 3, 3}, - PartialShape {1, 1, 4, 4}, - IN_ET, - std::vector{ - // channel 1 - 1, 3, - 7, 5, - // channel 2 - 2, 4, - 8, 6}, - std::vector{ - // channel 1 - 5, 3, 5, - 1, 3, 1, - 4, 2, 4, - // channel 2 - -5, 3, 5, - 1, -3, 1, - 4, 2, -4}, - std::vector{ - -5, 4, 36, 35, - -2, 44, 108, 62, - 27, 42, 22, 7, - 60, 74, 18, -4}, - {1, 1}, - {0, 0}, - {0, 0}, - {1, 1}, - {0, 0}), - ConvolutionBackpropParams(PartialShape {1, 2, 1, 1}, - PartialShape {2, 2, 2, 2}, - PartialShape {1, 2, 2, 2}, - IN_ET, - std::vector{ - // channel 1 - 2, - // channel 2 - 3}, - std::vector{ - // batch 0 - // channel 1 - 5, 3, - 1, 3, - // channel 2 - -5, 3, - 1, -3, - // batch 1 - // channel 1 - 5, 3, - 1, 3, - // channel 2 - -5, 3, - 1, -3}, - std::vector{ - 25, 15, 5, 15, -25, 15, 5, -15}, - {1, 1}, - {0, 0}, - {0, 0}, - {1, 1}, - {0, 0}), - ConvolutionBackpropParams(PartialShape {2, 1, 2, 2}, - PartialShape {1, 1, 3, 3}, - PartialShape {2, 1, 4, 4}, - IN_ET, - std::vector{ - // batch 1 - 1, 3, - 1, 3, - // batch 2 - -1, 3, - 1, 3}, - std::vector{ - -5, 3, 5, - 1, -3, 1, - 4, 2, -4}, - std::vector{ - // batch 1 - -5, -12, 14, 15, - -4, -12, 6, 18, - 5, 14, -6, -9, - 4, 14, 2, -12, - // batch 2 - 5, -18, 4, 15, - -6, -6, 4, 18, - -3, 10, 2, -9, - 4, 14, 2, -12}, - {1, 1}, - {0, 0}, - {0, 0}, - {1, 1}, - {0, 0}), -// --------------------- 3D convolution ------------------------------------------ - ConvolutionBackpropParams(PartialShape {1, 1, 2, 2, 2}, - PartialShape {1, 1, 3, 3, 3}, - PartialShape {1, 1, 4, 4, 4}, - IN_ET, - std::vector{ - // depth: 1 - 15, 3, - 21, 10, - // depth: 2 - 10, 13, - 11, 17}, - std::vector{ - // depth: 1 - 1, 2, 3, - 0, 1, 0, - 2, 1, 2, - // depth: 2 - 1, 2, 3, - 0, 1, 0, - 2, 1, 2, - // depth: 3 - 1, 2, 3, - 0, 1, 0, - 2, 1, 2}, - std::vector{ - // depth: 1 - 15, 33, 51, 9, - 21, 67, 86, 30, - 30, 42, 43, 6, - 42, 41, 52, 20, - // depth: 2 - 25, 66, 107, 48, - 32, 116, 166, 81, - 50, 89, 93, 32, - 64, 86, 91, 54, - // depth: 3 - 25, 66, 107, 48, - 32, 116, 166, 81, - 50, 89, 93, 32, - 64, 86, 91, 54, - // depth: 4 - 10, 33, 56, 39, - 11, 49, 80, 51, - 20, 47, 50, 26, - 22, 45, 39, 34}, - {1, 1, 1}, - {0, 0, 0}, - {0, 0, 0}, - {1, 1, 1}, - {0, 0, 0}), - ConvolutionBackpropParams(PartialShape {1, 1, 2, 2, 2}, - PartialShape {1, 1, 3, 3, 3}, - PartialShape {1, 1, 3, 3, 3}, - IN_ET, - std::vector{ - // depth: 1 - 15, 3, - 21, 10, - // depth: 2 - 10, 13, - 11, 17}, - std::vector{ - // depth: 1 - 1, 2, 3, - 0, 1, 0, - 2, 1, 2, - // depth: 2 - 1, 2, 3, - 0, 1, 0, - 2, 1, 2, - // depth: 3 - 1, 2, 3, - 0, 1, 0, - 2, 1, 2}, - std::vector{ - // depth: 1 - 116, 166, 81, - 89, 93, 32, - 86, 91, 54, - // depth: 2 - 116, 166, 81, - 89, 93, 32, - 86, 91, 54, - // depth: 3 - 49, 80, 51, - 47, 50, 26, - 45, 39, 34}, - {1, 1, 1}, - {1, 1, 1}, - {1, 1, 1}, - {1, 1, 1}, - {1, 1, 1}), - ConvolutionBackpropParams(PartialShape {1, 1, 4, 4, 4}, - PartialShape {1, 1, 3, 3, 3}, - PartialShape {1, 1, 4, 4, 4}, - IN_ET, - std::vector{ - // depth: 1 - 1, 3, 2, 1, - 1, 3, 3, 1, - 2, 1, 1, 3, - 3, 2, 3, 3, - // depth: 2 - 1, 3, 2, 1, - 1, 3, 3, 1, - 2, 1, 1, 3, - 3, 2, 3, 3, - // depth: 3 - 1, 3, 2, 1, - 1, 3, 3, 1, - 2, 1, 1, 3, - 3, 2, 3, 3, - // depth: 4 - 1, 3, 2, 1, - 1, 3, 3, 1, - 2, 1, 1, 3, - 3, 2, 3, 3}, - std::vector{ - // depth: 1 - 1, 2, 3, - 0, 1, 0, - 2, 1, 2, - // depth: 2 - 1, 2, 3, - 0, 1, 0, - 2, 1, 2, - // depth: 3 - 1, 2, 3, - 0, 1, 0, - 2, 1, 2}, - std::vector{ - // depth: 1 - 12, 30, 36, 24, - 26, 42, 42, 30, - 34, 56, 54, 50, - 14, 18, 24, 16, - // depth: 2 - 18, 45, 54, 36, - 39, 63, 63, 45, - 51, 84, 81, 75, - 21, 27, 36, 24, - // depth: 3 - 18, 45, 54, 36, - 39, 63, 63, 45, - 51, 84, 81, 75, - 21, 27, 36, 24, - // depth: 4 - 12, 30, 36, 24, - 26, 42, 42, 30, - 34, 56, 54, 50, - 14, 18, 24, 16}, - {1, 1, 1}, - {1, 1, 1}, - {1, 1, 1}, - {1, 1, 1}, - {0, 0, 0}), - ConvolutionBackpropParams(PartialShape {1, 1, 2, 2, 2}, - PartialShape {1, 1, 3, 3, 3}, - PartialShape {1, 1, 5, 5, 5}, - IN_ET, - std::vector{ - // depth: 1 - 15, 3, - 21, 10, - // depth: 2 - 10, 13, - 11, 17}, - std::vector{ - // depth: 1 - 1, 2, 3, - 0, 1, 0, - 2, 1, 2, - // depth: 2 - 1, 2, 3, - 0, 1, 0, - 2, 1, 2, - // depth: 3 - 1, 2, 3, - 0, 1, 0, - 2, 1, 2}, - std::vector{ - // depth: 1 - 15, 30, 48, 6, 9, - 0, 15, 0, 3, 0, - 51, 57, 109, 23, 36, - 0, 21, 0, 10, 0, - 42, 21, 62, 10, 20, - // depth: 2 - 15, 30, 48, 6, 9, - 0, 15, 0, 3, 0, - 51, 57, 109, 23, 36, - 0, 21, 0, 10, 0, - 42, 21, 62, 10, 20, - // depth: 3 - 25, 50, 91, 32, 48, - 0, 25, 0, 16, 0, - 82, 89, 205, 70, 113, - 0, 32, 0, 27, 0, - 64, 32, 118, 27, 54, - // depth: 4 - 10, 20, 43, 26, 39, - 0, 10, 0, 13, 0, - 31, 32, 96, 47, 77, - 0, 11, 0, 17, 0, - 22, 11, 56, 17, 34, - // depth: 5 - 10, 20, 43, 26, 39, - 0, 10, 0, 13, 0, - 31, 32, 96, 47, 77, - 0, 11, 0, 17, 0, - 22, 11, 56, 17, 34}, - {2, 2, 2}, - {0, 0, 0}, - {0, 0, 0}, - {1, 1, 1}, - {0, 0, 0}), - ConvolutionBackpropParams(PartialShape {1, 1, 4, 4, 4}, - PartialShape {1, 1, 3, 3, 3}, - PartialShape {1, 1, 7, 7, 7}, - IN_ET, - std::vector{ - // depth: 1 - 1, 3, 2, 1, - 1, 3, 3, 1, - 2, 1, 1, 3, - 3, 2, 3, 3, - // depth: 2 - 1, 3, 2, 1, - 1, 3, 3, 1, - 2, 1, 1, 3, - 3, 2, 3, 3, - // depth: 3 - 1, 3, 2, 1, - 1, 3, 3, 1, - 2, 1, 1, 3, - 3, 2, 3, 3, - // depth: 4 - 1, 3, 2, 1, - 1, 3, 3, 1, - 2, 1, 1, 3, - 3, 2, 3, 3}, - std::vector{ - // depth: 1 - 1, 2, 3, - 0, 1, 0, - 2, 1, 2, - // depth: 2 - 1, 2, 3, - 0, 1, 0, - 2, 1, 2, - // depth: 3 - 1, 2, 3, - 0, 1, 0, - 2, 1, 2}, - std::vector{ - // depth: 1 - 12, 0, 30, 0, 36, 0, 24, - 0, 0, 0, 0, 0, 0, 0, - 26, 0, 42, 0, 42, 0, 30, - 0, 0, 0, 0, 0, 0, 0, - 34, 0, 56, 0, 54, 0, 50, - 0, 0, 0, 0, 0, 0, 0, - 14, 0, 18, 0, 24, 0, 16, - // depth: 2 - 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, - // depth: 3 - 18, 0, 45, 0, 54, 0, 36, - 0, 0, 0, 0, 0, 0, 0, - 39, 0, 63, 0, 63, 0, 45, - 0, 0, 0, 0, 0, 0, 0, - 51, 0, 84, 0, 81, 0, 75, - 0, 0, 0, 0, 0, 0, 0, - 21, 0, 27, 0, 36, 0, 24, - // depth: 4 - 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, - // depth: 5 - 18, 0, 45, 0, 54, 0, 36, - 0, 0, 0, 0, 0, 0, 0, - 39, 0, 63, 0, 63, 0, 45, - 0, 0, 0, 0, 0, 0, 0, - 51, 0, 84, 0, 81, 0, 75, - 0, 0, 0, 0, 0, 0, 0, - 21, 0, 27, 0, 36, 0, 24, - // depth: 6 - 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, - // depth: 7 - 12, 0, 30, 0, 36, 0, 24, - 0, 0, 0, 0, 0, 0, 0, - 26, 0, 42, 0, 42, 0, 30, - 0, 0, 0, 0, 0, 0, 0, - 34, 0, 56, 0, 54, 0, 50, - 0, 0, 0, 0, 0, 0, 0, - 14, 0, 18, 0, 24, 0, 16}, - {2, 2, 2}, - {2, 2, 2}, - {2, 2, 2}, - {2, 2, 2}, - {0, 0, 0}), - ConvolutionBackpropParams(PartialShape {1, 1, 2, 2, 2}, - PartialShape {1, 2, 3, 3, 3}, - PartialShape {1, 2, 4, 4, 4}, - IN_ET, - std::vector{ - // depth: 1 - 1, 8, - 1, 3, - // depth: 2 - 1, 7, - 3, 8}, - std::vector{ - // -- channel 1 -- - // depth: 1 - 1, 2, 3, - 0, 1, 0, - 2, 1, 2, - // depth: 2 - 1, 2, 3, - 0, 1, 0, - 2, 1, 2, - // depth: 3 - 1, 2, 3, - 0, 1, 0, - 2, 1, 2, - // -- channel 2 -- - // depth: 1 - 1, 2, 3, - 0, 1, 0, - 2, 1, 2, - // depth: 2 - 1, 2, 3, - 0, 1, 0, - 2, 1, 2, - // depth: 3 - 1, 2, 3, - 0, 1, 0, - 2, 1, 2}, - std::vector{ - // -- channel 1 -- - // depth: 1 - 1, 10, 19, 24, - 1, 6, 17, 9, - 2, 18, 13, 16, - 2, 7, 5, 6, - // depth: 2 - 2, 19, 36, 45, - 4, 21, 49, 33, - 4, 36, 30, 30, - 8, 26, 19, 22, - // depth: 3 - 2, 19, 36, 45, - 4, 21, 49, 33, - 4, 36, 30, 30, - 8, 26, 19, 22, - // depth: 4 - 1, 9, 17, 21, - 3, 15, 32, 24, - 2, 18, 17, 14, - 6, 19, 14, 16, - // -- channel 2 -- - // depth: 1 - 1, 10, 19, 24, - 1, 6, 17, 9, - 2, 18, 13, 16, - 2, 7, 5, 6, - // depth: 2 - 2, 19, 36, 45, - 4, 21, 49, 33, - 4, 36, 30, 30, - 8, 26, 19, 22, - // depth: 3 - 2, 19, 36, 45, - 4, 21, 49, 33, - 4, 36, 30, 30, - 8, 26, 19, 22, - // depth: 4 - 1, 9, 17, 21, - 3, 15, 32, 24, - 2, 18, 17, 14, - 6, 19, 14, 16}, - {1, 1, 1}, - {0, 0, 0}, - {0, 0, 0}, - {1, 1, 1}, - {0, 0, 0}), - ConvolutionBackpropParams(PartialShape {1, 2, 2, 2, 2}, - PartialShape {2, 1, 3, 3, 3}, - PartialShape {1, 1, 4, 4, 4}, - IN_ET, - std::vector{ - // -- in 1 -- - // depth: 1 - 1, 3, - 2, 5, - // depth: 2 - 1, 0, - 3, 6, - // -- in 2 -- - // depth: 1 - 1, 3, - 2, 5, - // depth: 2 - 3, 0, - 1, 8}, - std::vector{ - // -- filter 1 -- - // depth: 1 - 1, 2, 3, - 0, 1, 0, - 2, 1, 2, - // depth: 2 - 1, 2, 3, - 0, 1, 0, - 2, 1, 2, - // depth: 3 - 1, 2, 3, - 0, 1, 0, - 2, 1, 2, - // -- filter 2 -- - // depth: 1 - 1, 2, 3, - 0, 1, 0, - 2, 1, 2, - // depth: 2 - 1, 2, 3, - 0, 1, 0, - 2, 1, 2, - // depth: 3 - 1, 2, 3, - 0, 1, 0, - 2, 1, 2}, - std::vector{ - // depth: 1 - 2, 10, 18, 18, - 4, 20, 38, 30, - 4, 18, 20, 12, - 8, 24, 18, 20, - // depth: 2 - 6, 18, 30, 18, - 8, 46, 78, 72, - 12, 26, 42, 12, - 16, 56, 40, 48, - // depth: 3 - 6, 18, 30, 18, - 8, 46, 78, 72, - 12, 26, 42, 12, - 16, 56, 40, 48, - // depth: 4 - 4, 8, 12, 0, - 4, 26, 40, 42, - 8, 8, 22, 0, - 8, 32, 22, 28}, - {1, 1, 1}, - {0, 0, 0}, - {0, 0, 0}, - {1, 1, 1}, - {0, 0, 0}), - ConvolutionBackpropParams(PartialShape {2, 1, 2, 2, 2}, - PartialShape {1, 1, 3, 3, 3}, - PartialShape {2, 1, 4, 4, 4}, - IN_ET, - std::vector{ - // -- batch 1 -- - // depth: 1 - 1, 3, - 2, 5, - // depth: 2 - 1, 0, - 6, 4, - // -- batch 2 -- - // depth: 1 - 1, 5, - 2, 8, - // depth: 2 - 2, 1, - 0, 5}, - std::vector{ - // depth: 1 - 1, 2, 3, - 0, 1, 0, - 2, 1, 2, - // depth: 2 - 1, 2, 3, - 0, 1, 0, - 2, 1, 2, - // depth: 3 - 1, 2, 3, - 0, 1, 0, - 2, 1, 2}, - std::vector{ - // -- batch 1 -- - // depth: 1 - 1, 5, 9, 9, - 2, 10, 19, 15, - 2, 9, 10, 6, - 4, 12, 9, 10, - // depth: 2 - 2, 7, 12, 9, - 8, 27, 45, 27, - 4, 16, 16, 6, - 16, 26, 25, 18, - // depth: 3 - 2, 7, 12, 9, - 8, 27, 45, 27, - 4, 16, 16, 6, - 16, 26, 25, 18, - // depth: 4 - 1, 2, 3, 0, - 6, 17, 26, 12, - 2, 7, 6, 0, - 12, 14, 16, 8, - // -- batch 2 -- - // depth: 1 - 1, 7, 13, 15, - 2, 13, 27, 24, - 2, 13, 15, 10, - 4, 18, 12, 16, - // depth: 2 - 3, 12, 21, 18, - 2, 20, 38, 39, - 6, 17, 25, 12, - 4, 28, 17, 26, - // depth: 3 - 3, 12, 21, 18, - 2, 20, 38, 39, - 6, 17, 25, 12, - 4, 28, 17, 26, - // depth: 4 - 2, 5, 8, 3, - 0, 7, 11, 15, - 4, 4, 10, 2, - 0, 10, 5, 10}, - {1, 1, 1}, - {0, 0, 0}, - {0, 0, 0}, - {1, 1, 1}, - {0, 0, 0}) - }; + std::vector convolutionBackpropParams{ + // --------------------- 1D ConvolutionBackprop ------------------------------------------ + ConvolutionBackpropParams(PartialShape{1, 1, 4}, + PartialShape{1, 1, 3}, + PartialShape{1, 1, 6}, + IN_ET, + std::vector{5, 6, 7, 2}, + std::vector{2, 0, 1}, + std::vector{10, 12, 19, 10, 7, 2}, + {1}, + {0}, + {0}, + {1}, + {0}), + ConvolutionBackpropParams(PartialShape{1, 1, 4}, + PartialShape{1, 1, 3}, + PartialShape{1, 1, 4}, + IN_ET, + std::vector{5, 6, 7, 2}, + std::vector{2, 0, 1}, + std::vector{12, 19, 10, 7}, + {1}, + {1}, + {1}, + {1}, + {0}), + ConvolutionBackpropParams(PartialShape{1, 1, 2}, + PartialShape{1, 1, 3}, + PartialShape{1, 1, 5}, + IN_ET, + std::vector{5, 7}, + std::vector{2, 0, 1}, + std::vector{10, 0, 19, 0, 7}, + {2}, + {0}, + {0}, + {1}, + {0}), + ConvolutionBackpropParams(PartialShape{1, 1, 4}, + PartialShape{1, 1, 3}, + PartialShape{1, 1, 5}, + IN_ET, + std::vector{5, 6, 7, 2}, + std::vector{2, 0, 1}, + std::vector{12, 19, 10, 7, 2}, + {1}, + {1}, + {1}, + {1}, + {1}), + ConvolutionBackpropParams(PartialShape{1, 1, 3}, + PartialShape{1, 1, 3}, + PartialShape{1, 1, 7}, + IN_ET, + std::vector{8, 5, 1}, + std::vector{2, 0, 1}, + std::vector{16, 10, 2, 0, 8, 5, 1}, + {1}, + {0}, + {0}, + {2}, + {0}), + ConvolutionBackpropParams(PartialShape{1, 1, 4}, + PartialShape{1, 1, 3}, + PartialShape{1, 1, 7}, + IN_ET, + std::vector{3, 9, 1, 2}, + std::vector{2, 0, 1}, + std::vector{18, 0, 5, 0, 13, 0, 1}, + {2}, + {2}, + {2}, + {2}, + {0}), + ConvolutionBackpropParams(PartialShape{1, 1, 2}, + PartialShape{1, 2, 3}, + PartialShape{1, 2, 4}, + IN_ET, + std::vector{10, 3}, + std::vector{// channel 1 + 2, + 0, + 1, + // channel 2 + 1, + 0, + 2}, + std::vector{// channel 1 + 20, + 6, + 10, + 3, + // channel 2 + 10, + 3, + 20, + 6}, + {1}, + {0}, + {0}, + {1}, + {0}), + ConvolutionBackpropParams(PartialShape{1, 2, 2}, + PartialShape{2, 1, 3}, + PartialShape{1, 1, 4}, + IN_ET, + std::vector{// channel 1 + 4, + 7, + // channel 2 + 5, + 5}, + std::vector{// filter 1 + 2, + 0, + 1, + // filter 2 + 1, + 0, + 2}, + std::vector{13, 19, 14, 17}, + {1}, + {0}, + {0}, + {1}, + {0}), + ConvolutionBackpropParams(PartialShape{2, 1, 2}, + PartialShape{1, 1, 3}, + PartialShape{2, 1, 4}, + IN_ET, + std::vector{// batch 1 + 1, + 3, + // batch 2 + 2, + 2}, + std::vector{2, 0, 1}, + std::vector{// batch 1 + 2, + 6, + 1, + 3, + // batch 2 + 4, + 4, + 2, + 2}, + {1}, + {0}, + {0}, + {1}, + {0}), + // --------------------- 2D ConvolutionBackprop ------------------------------------------ + ConvolutionBackpropParams(PartialShape{1, 1, 2, 2}, + PartialShape{1, 1, 3, 3}, + PartialShape{1, 1, 4, 4}, + IN_ET, + std::vector{1, 3, 7, 5}, + std::vector{1, 2, 3, 0, 1, 0, 3, 2, 1}, + std::vector{1, 5, 9, 9, 7, 20, 34, 15, 3, 18, 12, 3, 21, 29, 17, 5}, + {1, 1}, + {0, 0}, + {0, 0}, + {1, 1}, + {0, 0}), + ConvolutionBackpropParams(PartialShape{1, 1, 2, 2}, + PartialShape{1, 1, 3, 3}, + PartialShape{1, 1, 3, 3}, + IN_ET, + std::vector{1, 3, 7, 5}, + std::vector{1, 2, 3, 1, 1, 1, 3, 2, 1}, + std::vector{23, 35, 18, 23, 19, 8, 29, 17, 5}, + {1, 1}, + {1, 1}, + {1, 1}, + {1, 1}, + {1, 1}), + ConvolutionBackpropParams(PartialShape{1, 1, 4, 4}, + PartialShape{1, 1, 3, 3}, + PartialShape{1, 1, 4, 4}, + IN_ET, + std::vector{1, 3, 5, 7, 7, 5, 3, 1, 2, 4, 6, 8, 8, 6, 4, 2}, + std::vector{1, 2, 3, 0, 1, 0, 2, 1, 2}, + std::vector{20, 37, 27, 18, 22, 40, 60, 52, 41, 69, 49, 31, 18, 26, 34, 22}, + {1, 1}, + {1, 1}, + {1, 1}, + {1, 1}, + {0, 0}), + ConvolutionBackpropParams( + PartialShape{1, 1, 2, 2}, + PartialShape{1, 1, 3, 3}, + PartialShape{1, 1, 5, 5}, + IN_ET, + std::vector{2, 5, 4, 3}, + std::vector{1, 2, 3, 1, 1, 1, 3, 2, 1}, + std::vector{2, 4, 11, 10, 15, 2, 2, 7, 5, 5, 10, 12, 32, 16, 14, 4, 4, 7, 3, 3, 12, 8, 13, 6, 3}, + {2, 2}, + {0, 0}, + {0, 0}, + {1, 1}, + {0, 0}), + ConvolutionBackpropParams(PartialShape{1, 1, 2, 2}, + PartialShape{1, 1, 3, 3}, + PartialShape{1, 1, 6, 6}, + IN_ET, + std::vector{2, 3, 4, 3}, + std::vector{1, 2, 3, 1, 1, 1, 3, 2, 1}, + std::vector{2, 3, 4, 6, 6, 9, 4, 3, 8, 6, 12, 9, 2, 3, 2, 3, 2, 3, + 4, 3, 4, 3, 4, 3, 6, 9, 4, 6, 2, 3, 12, 9, 8, 6, 4, 3}, + {1, 1}, + {0, 0}, + {0, 0}, + {2, 2}, + {0, 0}), + ConvolutionBackpropParams( + PartialShape{1, 1, 3, 3}, + PartialShape{1, 1, 3, 3}, + PartialShape{1, 1, 5, 5}, + IN_ET, + std::vector{1, 3, 5, 7, 5, 3, 2, 4, 6}, + std::vector{1, 2, 3, 1, 1, 1, 3, 2, 1}, + std::vector{23, 0, 43, 0, 29, 0, 0, 0, 0, 0, 31, 0, 57, 0, 45, 0, 0, 0, 0, 0, 35, 0, 38, 0, 21}, + {2, 2}, + {2, 2}, + {2, 2}, + {2, 2}, + {0, 0}), + ConvolutionBackpropParams(PartialShape{1, 1, 2, 2}, + PartialShape{1, 2, 3, 3}, + PartialShape{1, 2, 4, 4}, + IN_ET, + std::vector{1, 3, 7, 5}, + std::vector{// channel 1 + 5, + 3, + 5, + 1, + 3, + 1, + 4, + 2, + 4, + // channel 2 + -5, + 3, + 5, + 1, + -3, + 1, + 4, + 2, + -4}, + std::vector{// channel 1 + 5, + 18, + 14, + 15, + 36, + 52, + 60, + 28, + 11, + 40, + 32, + 17, + 28, + 34, + 38, + 20, + // channel 2 + -5, + -12, + 14, + 15, + -34, + -4, + 42, + 28, + 11, + -2, + -6, + -7, + 28, + 34, + -18, + -20}, + {1, 1}, + {0, 0}, + {0, 0}, + {1, 1}, + {0, 0}), + ConvolutionBackpropParams(PartialShape{1, 2, 2, 2}, + PartialShape{2, 1, 3, 3}, + PartialShape{1, 1, 4, 4}, + IN_ET, + std::vector{// channel 1 + 1, + 3, + 7, + 5, + // channel 2 + 2, + 4, + 8, + 6}, + std::vector{// channel 1 + 5, + 3, + 5, + 1, + 3, + 1, + 4, + 2, + 4, + // channel 2 + -5, + 3, + 5, + 1, + -3, + 1, + 4, + 2, + -4}, + std::vector{-5, 4, 36, 35, -2, 44, 108, 62, 27, 42, 22, 7, 60, 74, 18, -4}, + {1, 1}, + {0, 0}, + {0, 0}, + {1, 1}, + {0, 0}), + ConvolutionBackpropParams(PartialShape{1, 2, 1, 1}, + PartialShape{2, 2, 2, 2}, + PartialShape{1, 2, 2, 2}, + IN_ET, + std::vector{// channel 1 + 2, + // channel 2 + 3}, + std::vector{// batch 0 + // channel 1 + 5, + 3, + 1, + 3, + // channel 2 + -5, + 3, + 1, + -3, + // batch 1 + // channel 1 + 5, + 3, + 1, + 3, + // channel 2 + -5, + 3, + 1, + -3}, + std::vector{25, 15, 5, 15, -25, 15, 5, -15}, + {1, 1}, + {0, 0}, + {0, 0}, + {1, 1}, + {0, 0}), + ConvolutionBackpropParams(PartialShape{2, 1, 2, 2}, + PartialShape{1, 1, 3, 3}, + PartialShape{2, 1, 4, 4}, + IN_ET, + std::vector{// batch 1 + 1, + 3, + 1, + 3, + // batch 2 + -1, + 3, + 1, + 3}, + std::vector{-5, 3, 5, 1, -3, 1, 4, 2, -4}, + std::vector{// batch 1 + -5, + -12, + 14, + 15, + -4, + -12, + 6, + 18, + 5, + 14, + -6, + -9, + 4, + 14, + 2, + -12, + // batch 2 + 5, + -18, + 4, + 15, + -6, + -6, + 4, + 18, + -3, + 10, + 2, + -9, + 4, + 14, + 2, + -12}, + {1, 1}, + {0, 0}, + {0, 0}, + {1, 1}, + {0, 0}), + // --------------------- 3D convolution ------------------------------------------ + ConvolutionBackpropParams(PartialShape{1, 1, 2, 2, 2}, + PartialShape{1, 1, 3, 3, 3}, + PartialShape{1, 1, 4, 4, 4}, + IN_ET, + std::vector{// depth: 1 + 15, + 3, + 21, + 10, + // depth: 2 + 10, + 13, + 11, + 17}, + std::vector{// depth: 1 + 1, + 2, + 3, + 0, + 1, + 0, + 2, + 1, + 2, + // depth: 2 + 1, + 2, + 3, + 0, + 1, + 0, + 2, + 1, + 2, + // depth: 3 + 1, + 2, + 3, + 0, + 1, + 0, + 2, + 1, + 2}, + std::vector{// depth: 1 + 15, + 33, + 51, + 9, + 21, + 67, + 86, + 30, + 30, + 42, + 43, + 6, + 42, + 41, + 52, + 20, + // depth: 2 + 25, + 66, + 107, + 48, + 32, + 116, + 166, + 81, + 50, + 89, + 93, + 32, + 64, + 86, + 91, + 54, + // depth: 3 + 25, + 66, + 107, + 48, + 32, + 116, + 166, + 81, + 50, + 89, + 93, + 32, + 64, + 86, + 91, + 54, + // depth: 4 + 10, + 33, + 56, + 39, + 11, + 49, + 80, + 51, + 20, + 47, + 50, + 26, + 22, + 45, + 39, + 34}, + {1, 1, 1}, + {0, 0, 0}, + {0, 0, 0}, + {1, 1, 1}, + {0, 0, 0}), + ConvolutionBackpropParams(PartialShape{1, 1, 2, 2, 2}, + PartialShape{1, 1, 3, 3, 3}, + PartialShape{1, 1, 3, 3, 3}, + IN_ET, + std::vector{// depth: 1 + 15, + 3, + 21, + 10, + // depth: 2 + 10, + 13, + 11, + 17}, + std::vector{// depth: 1 + 1, + 2, + 3, + 0, + 1, + 0, + 2, + 1, + 2, + // depth: 2 + 1, + 2, + 3, + 0, + 1, + 0, + 2, + 1, + 2, + // depth: 3 + 1, + 2, + 3, + 0, + 1, + 0, + 2, + 1, + 2}, + std::vector{// depth: 1 + 116, + 166, + 81, + 89, + 93, + 32, + 86, + 91, + 54, + // depth: 2 + 116, + 166, + 81, + 89, + 93, + 32, + 86, + 91, + 54, + // depth: 3 + 49, + 80, + 51, + 47, + 50, + 26, + 45, + 39, + 34}, + {1, 1, 1}, + {1, 1, 1}, + {1, 1, 1}, + {1, 1, 1}, + {1, 1, 1}), + ConvolutionBackpropParams(PartialShape{1, 1, 4, 4, 4}, + PartialShape{1, 1, 3, 3, 3}, + PartialShape{1, 1, 4, 4, 4}, + IN_ET, + std::vector{// depth: 1 + 1, + 3, + 2, + 1, + 1, + 3, + 3, + 1, + 2, + 1, + 1, + 3, + 3, + 2, + 3, + 3, + // depth: 2 + 1, + 3, + 2, + 1, + 1, + 3, + 3, + 1, + 2, + 1, + 1, + 3, + 3, + 2, + 3, + 3, + // depth: 3 + 1, + 3, + 2, + 1, + 1, + 3, + 3, + 1, + 2, + 1, + 1, + 3, + 3, + 2, + 3, + 3, + // depth: 4 + 1, + 3, + 2, + 1, + 1, + 3, + 3, + 1, + 2, + 1, + 1, + 3, + 3, + 2, + 3, + 3}, + std::vector{// depth: 1 + 1, + 2, + 3, + 0, + 1, + 0, + 2, + 1, + 2, + // depth: 2 + 1, + 2, + 3, + 0, + 1, + 0, + 2, + 1, + 2, + // depth: 3 + 1, + 2, + 3, + 0, + 1, + 0, + 2, + 1, + 2}, + std::vector{// depth: 1 + 12, + 30, + 36, + 24, + 26, + 42, + 42, + 30, + 34, + 56, + 54, + 50, + 14, + 18, + 24, + 16, + // depth: 2 + 18, + 45, + 54, + 36, + 39, + 63, + 63, + 45, + 51, + 84, + 81, + 75, + 21, + 27, + 36, + 24, + // depth: 3 + 18, + 45, + 54, + 36, + 39, + 63, + 63, + 45, + 51, + 84, + 81, + 75, + 21, + 27, + 36, + 24, + // depth: 4 + 12, + 30, + 36, + 24, + 26, + 42, + 42, + 30, + 34, + 56, + 54, + 50, + 14, + 18, + 24, + 16}, + {1, 1, 1}, + {1, 1, 1}, + {1, 1, 1}, + {1, 1, 1}, + {0, 0, 0}), + ConvolutionBackpropParams(PartialShape{1, 1, 2, 2, 2}, + PartialShape{1, 1, 3, 3, 3}, + PartialShape{1, 1, 5, 5, 5}, + IN_ET, + std::vector{// depth: 1 + 15, + 3, + 21, + 10, + // depth: 2 + 10, + 13, + 11, + 17}, + std::vector{// depth: 1 + 1, + 2, + 3, + 0, + 1, + 0, + 2, + 1, + 2, + // depth: 2 + 1, + 2, + 3, + 0, + 1, + 0, + 2, + 1, + 2, + // depth: 3 + 1, + 2, + 3, + 0, + 1, + 0, + 2, + 1, + 2}, + std::vector{// depth: 1 + 15, + 30, + 48, + 6, + 9, + 0, + 15, + 0, + 3, + 0, + 51, + 57, + 109, + 23, + 36, + 0, + 21, + 0, + 10, + 0, + 42, + 21, + 62, + 10, + 20, + // depth: 2 + 15, + 30, + 48, + 6, + 9, + 0, + 15, + 0, + 3, + 0, + 51, + 57, + 109, + 23, + 36, + 0, + 21, + 0, + 10, + 0, + 42, + 21, + 62, + 10, + 20, + // depth: 3 + 25, + 50, + 91, + 32, + 48, + 0, + 25, + 0, + 16, + 0, + 82, + 89, + 205, + 70, + 113, + 0, + 32, + 0, + 27, + 0, + 64, + 32, + 118, + 27, + 54, + // depth: 4 + 10, + 20, + 43, + 26, + 39, + 0, + 10, + 0, + 13, + 0, + 31, + 32, + 96, + 47, + 77, + 0, + 11, + 0, + 17, + 0, + 22, + 11, + 56, + 17, + 34, + // depth: 5 + 10, + 20, + 43, + 26, + 39, + 0, + 10, + 0, + 13, + 0, + 31, + 32, + 96, + 47, + 77, + 0, + 11, + 0, + 17, + 0, + 22, + 11, + 56, + 17, + 34}, + {2, 2, 2}, + {0, 0, 0}, + {0, 0, 0}, + {1, 1, 1}, + {0, 0, 0}), + ConvolutionBackpropParams(PartialShape{1, 1, 4, 4, 4}, + PartialShape{1, 1, 3, 3, 3}, + PartialShape{1, 1, 7, 7, 7}, + IN_ET, + std::vector{// depth: 1 + 1, + 3, + 2, + 1, + 1, + 3, + 3, + 1, + 2, + 1, + 1, + 3, + 3, + 2, + 3, + 3, + // depth: 2 + 1, + 3, + 2, + 1, + 1, + 3, + 3, + 1, + 2, + 1, + 1, + 3, + 3, + 2, + 3, + 3, + // depth: 3 + 1, + 3, + 2, + 1, + 1, + 3, + 3, + 1, + 2, + 1, + 1, + 3, + 3, + 2, + 3, + 3, + // depth: 4 + 1, + 3, + 2, + 1, + 1, + 3, + 3, + 1, + 2, + 1, + 1, + 3, + 3, + 2, + 3, + 3}, + std::vector{// depth: 1 + 1, + 2, + 3, + 0, + 1, + 0, + 2, + 1, + 2, + // depth: 2 + 1, + 2, + 3, + 0, + 1, + 0, + 2, + 1, + 2, + // depth: 3 + 1, + 2, + 3, + 0, + 1, + 0, + 2, + 1, + 2}, + std::vector{// depth: 1 + 12, + 0, + 30, + 0, + 36, + 0, + 24, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 26, + 0, + 42, + 0, + 42, + 0, + 30, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 34, + 0, + 56, + 0, + 54, + 0, + 50, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 14, + 0, + 18, + 0, + 24, + 0, + 16, + // depth: 2 + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + // depth: 3 + 18, + 0, + 45, + 0, + 54, + 0, + 36, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 39, + 0, + 63, + 0, + 63, + 0, + 45, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 51, + 0, + 84, + 0, + 81, + 0, + 75, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 21, + 0, + 27, + 0, + 36, + 0, + 24, + // depth: 4 + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + // depth: 5 + 18, + 0, + 45, + 0, + 54, + 0, + 36, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 39, + 0, + 63, + 0, + 63, + 0, + 45, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 51, + 0, + 84, + 0, + 81, + 0, + 75, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 21, + 0, + 27, + 0, + 36, + 0, + 24, + // depth: 6 + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + // depth: 7 + 12, + 0, + 30, + 0, + 36, + 0, + 24, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 26, + 0, + 42, + 0, + 42, + 0, + 30, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 34, + 0, + 56, + 0, + 54, + 0, + 50, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 14, + 0, + 18, + 0, + 24, + 0, + 16}, + {2, 2, 2}, + {2, 2, 2}, + {2, 2, 2}, + {2, 2, 2}, + {0, 0, 0}), + ConvolutionBackpropParams(PartialShape{1, 1, 2, 2, 2}, + PartialShape{1, 2, 3, 3, 3}, + PartialShape{1, 2, 4, 4, 4}, + IN_ET, + std::vector{// depth: 1 + 1, + 8, + 1, + 3, + // depth: 2 + 1, + 7, + 3, + 8}, + std::vector{// -- channel 1 -- + // depth: 1 + 1, + 2, + 3, + 0, + 1, + 0, + 2, + 1, + 2, + // depth: 2 + 1, + 2, + 3, + 0, + 1, + 0, + 2, + 1, + 2, + // depth: 3 + 1, + 2, + 3, + 0, + 1, + 0, + 2, + 1, + 2, + // -- channel 2 -- + // depth: 1 + 1, + 2, + 3, + 0, + 1, + 0, + 2, + 1, + 2, + // depth: 2 + 1, + 2, + 3, + 0, + 1, + 0, + 2, + 1, + 2, + // depth: 3 + 1, + 2, + 3, + 0, + 1, + 0, + 2, + 1, + 2}, + std::vector{// -- channel 1 -- + // depth: 1 + 1, + 10, + 19, + 24, + 1, + 6, + 17, + 9, + 2, + 18, + 13, + 16, + 2, + 7, + 5, + 6, + // depth: 2 + 2, + 19, + 36, + 45, + 4, + 21, + 49, + 33, + 4, + 36, + 30, + 30, + 8, + 26, + 19, + 22, + // depth: 3 + 2, + 19, + 36, + 45, + 4, + 21, + 49, + 33, + 4, + 36, + 30, + 30, + 8, + 26, + 19, + 22, + // depth: 4 + 1, + 9, + 17, + 21, + 3, + 15, + 32, + 24, + 2, + 18, + 17, + 14, + 6, + 19, + 14, + 16, + // -- channel 2 -- + // depth: 1 + 1, + 10, + 19, + 24, + 1, + 6, + 17, + 9, + 2, + 18, + 13, + 16, + 2, + 7, + 5, + 6, + // depth: 2 + 2, + 19, + 36, + 45, + 4, + 21, + 49, + 33, + 4, + 36, + 30, + 30, + 8, + 26, + 19, + 22, + // depth: 3 + 2, + 19, + 36, + 45, + 4, + 21, + 49, + 33, + 4, + 36, + 30, + 30, + 8, + 26, + 19, + 22, + // depth: 4 + 1, + 9, + 17, + 21, + 3, + 15, + 32, + 24, + 2, + 18, + 17, + 14, + 6, + 19, + 14, + 16}, + {1, 1, 1}, + {0, 0, 0}, + {0, 0, 0}, + {1, 1, 1}, + {0, 0, 0}), + ConvolutionBackpropParams(PartialShape{1, 2, 2, 2, 2}, + PartialShape{2, 1, 3, 3, 3}, + PartialShape{1, 1, 4, 4, 4}, + IN_ET, + std::vector{// -- in 1 -- + // depth: 1 + 1, + 3, + 2, + 5, + // depth: 2 + 1, + 0, + 3, + 6, + // -- in 2 -- + // depth: 1 + 1, + 3, + 2, + 5, + // depth: 2 + 3, + 0, + 1, + 8}, + std::vector{// -- filter 1 -- + // depth: 1 + 1, + 2, + 3, + 0, + 1, + 0, + 2, + 1, + 2, + // depth: 2 + 1, + 2, + 3, + 0, + 1, + 0, + 2, + 1, + 2, + // depth: 3 + 1, + 2, + 3, + 0, + 1, + 0, + 2, + 1, + 2, + // -- filter 2 -- + // depth: 1 + 1, + 2, + 3, + 0, + 1, + 0, + 2, + 1, + 2, + // depth: 2 + 1, + 2, + 3, + 0, + 1, + 0, + 2, + 1, + 2, + // depth: 3 + 1, + 2, + 3, + 0, + 1, + 0, + 2, + 1, + 2}, + std::vector{// depth: 1 + 2, + 10, + 18, + 18, + 4, + 20, + 38, + 30, + 4, + 18, + 20, + 12, + 8, + 24, + 18, + 20, + // depth: 2 + 6, + 18, + 30, + 18, + 8, + 46, + 78, + 72, + 12, + 26, + 42, + 12, + 16, + 56, + 40, + 48, + // depth: 3 + 6, + 18, + 30, + 18, + 8, + 46, + 78, + 72, + 12, + 26, + 42, + 12, + 16, + 56, + 40, + 48, + // depth: 4 + 4, + 8, + 12, + 0, + 4, + 26, + 40, + 42, + 8, + 8, + 22, + 0, + 8, + 32, + 22, + 28}, + {1, 1, 1}, + {0, 0, 0}, + {0, 0, 0}, + {1, 1, 1}, + {0, 0, 0}), + ConvolutionBackpropParams(PartialShape{2, 1, 2, 2, 2}, + PartialShape{1, 1, 3, 3, 3}, + PartialShape{2, 1, 4, 4, 4}, + IN_ET, + std::vector{// -- batch 1 -- + // depth: 1 + 1, + 3, + 2, + 5, + // depth: 2 + 1, + 0, + 6, + 4, + // -- batch 2 -- + // depth: 1 + 1, + 5, + 2, + 8, + // depth: 2 + 2, + 1, + 0, + 5}, + std::vector{// depth: 1 + 1, + 2, + 3, + 0, + 1, + 0, + 2, + 1, + 2, + // depth: 2 + 1, + 2, + 3, + 0, + 1, + 0, + 2, + 1, + 2, + // depth: 3 + 1, + 2, + 3, + 0, + 1, + 0, + 2, + 1, + 2}, + std::vector{// -- batch 1 -- + // depth: 1 + 1, + 5, + 9, + 9, + 2, + 10, + 19, + 15, + 2, + 9, + 10, + 6, + 4, + 12, + 9, + 10, + // depth: 2 + 2, + 7, + 12, + 9, + 8, + 27, + 45, + 27, + 4, + 16, + 16, + 6, + 16, + 26, + 25, + 18, + // depth: 3 + 2, + 7, + 12, + 9, + 8, + 27, + 45, + 27, + 4, + 16, + 16, + 6, + 16, + 26, + 25, + 18, + // depth: 4 + 1, + 2, + 3, + 0, + 6, + 17, + 26, + 12, + 2, + 7, + 6, + 0, + 12, + 14, + 16, + 8, + // -- batch 2 -- + // depth: 1 + 1, + 7, + 13, + 15, + 2, + 13, + 27, + 24, + 2, + 13, + 15, + 10, + 4, + 18, + 12, + 16, + // depth: 2 + 3, + 12, + 21, + 18, + 2, + 20, + 38, + 39, + 6, + 17, + 25, + 12, + 4, + 28, + 17, + 26, + // depth: 3 + 3, + 12, + 21, + 18, + 2, + 20, + 38, + 39, + 6, + 17, + 25, + 12, + 4, + 28, + 17, + 26, + // depth: 4 + 2, + 5, + 8, + 3, + 0, + 7, + 11, + 15, + 4, + 4, + 10, + 2, + 0, + 10, + 5, + 10}, + {1, 1, 1}, + {0, 0, 0}, + {0, 0, 0}, + {1, 1, 1}, + {0, 0, 0})}; return convolutionBackpropParams; } @@ -1073,682 +2150,1451 @@ template std::vector generateConvolutionBackpropUintParams() { using T = typename element_type_traits::value_type; - std::vector convolutionBackpropParams { -// --------------------- 1D ConvolutionBackprop ------------------------------------------ - ConvolutionBackpropParams(PartialShape {1, 1, 4}, - PartialShape {1, 1, 3}, - PartialShape {1, 1, 6}, - IN_ET, - std::vector{5, 6, 7, 2}, - std::vector{2, 0, 1}, - std::vector{10, 12, 19, 10, 7, 2}, - {1}, - {0}, - {0}, - {1}, - {0}), - ConvolutionBackpropParams(PartialShape {1, 1, 4}, - PartialShape {1, 1, 3}, - PartialShape {1, 1, 4}, - IN_ET, - std::vector{5, 6, 7, 2}, - std::vector{2, 0, 1}, - std::vector{12, 19, 10, 7}, - {1}, - {1}, - {1}, - {1}, - {0}), - ConvolutionBackpropParams(PartialShape {1, 1, 2}, - PartialShape {1, 1, 3}, - PartialShape {1, 1, 5}, - IN_ET, - std::vector{5, 7}, - std::vector{2, 0, 1}, - std::vector{10, 0, 19, 0, 7}, - {2}, - {0}, - {0}, - {1}, - {0}), - ConvolutionBackpropParams(PartialShape {1, 1, 4}, - PartialShape {1, 1, 3}, - PartialShape {1, 1, 5}, - IN_ET, - std::vector{5, 6, 7, 2}, - std::vector{2, 0, 1}, - std::vector{12, 19, 10, 7, 2}, - {1}, - {1}, - {1}, - {1}, - {1}), - ConvolutionBackpropParams(PartialShape {1, 1, 3}, - PartialShape {1, 1, 3}, - PartialShape {1, 1, 7}, - IN_ET, - std::vector{8, 5, 1}, - std::vector{2, 0, 1}, - std::vector{16, 10, 2, 0, 8, 5, 1}, - {1}, - {0}, - {0}, - {2}, - {0}), - ConvolutionBackpropParams(PartialShape {1, 1, 4}, - PartialShape {1, 1, 3}, - PartialShape {1, 1, 7}, - IN_ET, - std::vector{3, 9, 1, 2}, - std::vector{2, 0, 1}, - std::vector{18, 0, 5, 0, 13, 0, 1}, - {2}, - {2}, - {2}, - {2}, - {0}), - ConvolutionBackpropParams(PartialShape {1, 1, 2}, - PartialShape {1, 2, 3}, - PartialShape {1, 2, 4}, - IN_ET, - std::vector{10, 3}, - std::vector{ - // channel 1 - 2, 0, 1, - // channel 2 - 1, 0, 2}, - std::vector{ - // channel 1 - 20, 6, 10, 3, - // channel 2 - 10, 3, 20, 6}, - {1}, - {0}, - {0}, - {1}, - {0}), - ConvolutionBackpropParams(PartialShape {1, 2, 2}, - PartialShape {2, 1, 3}, - PartialShape {1, 1, 4}, - IN_ET, - std::vector{ - // channel 1 - 4, 7, - // channel 2 - 5, 5}, - std::vector{ - // filter 1 - 2, 0, 1, - // filter 2 - 1, 0, 2}, - std::vector{13, 19, 14, 17}, - {1}, - {0}, - {0}, - {1}, - {0}), - ConvolutionBackpropParams(PartialShape {2, 1, 2}, - PartialShape {1, 1, 3}, - PartialShape {2, 1, 4}, - IN_ET, - std::vector{ - // batch 1 - 1, 3, - // batch 2 - 2, 2}, - std::vector{2, 0, 1}, - std::vector{ - // batch 1 - 2, 6, 1, 3, - // batch 2 - 4, 4, 2, 2}, - {1}, - {0}, - {0}, - {1}, - {0}), -// --------------------- 2D ConvolutionBackprop ------------------------------------------ - ConvolutionBackpropParams(PartialShape {1, 1, 2, 2}, - PartialShape {1, 1, 3, 3}, - PartialShape {1, 1, 4, 4}, - IN_ET, - std::vector{ - 1, 3, - 7, 5}, - std::vector{ - 1, 2, 3, - 0, 1, 0, - 3, 2, 1}, - std::vector{ - 1, 5, 9, 9, - 7, 20, 34, 15, - 3, 18, 12, 3, - 21, 29, 17, 5}, - {1, 1}, - {0, 0}, - {0, 0}, - {1, 1}, - {0, 0}), - ConvolutionBackpropParams(PartialShape {1, 1, 2, 2}, - PartialShape {1, 1, 3, 3}, - PartialShape {1, 1, 3, 3}, - IN_ET, - std::vector{ - 1, 3, - 7, 5}, - std::vector{ - 1, 2, 3, - 1, 1, 1, - 3, 2, 1}, - std::vector{ - 23, 35, 18, - 23, 19, 8, - 29, 17, 5}, - {1, 1}, - {1, 1}, - {1, 1}, - {1, 1}, - {1, 1}), - ConvolutionBackpropParams(PartialShape {1, 1, 4, 4}, - PartialShape {1, 1, 3, 3}, - PartialShape {1, 1, 4, 4}, - IN_ET, - std::vector{ - 1, 3, 5, 7, - 7, 5, 3, 1, - 2, 4, 6, 8, - 8, 6, 4, 2}, - std::vector{ - 1, 2, 3, - 0, 1, 0, - 2, 1, 2}, - std::vector{ - 20, 37, 27, 18, - 22, 40, 60, 52, - 41, 69, 49, 31, - 18, 26, 34, 22}, - {1, 1}, - {1, 1}, - {1, 1}, - {1, 1}, - {0, 0}), - ConvolutionBackpropParams(PartialShape {1, 1, 2, 2}, - PartialShape {1, 1, 3, 3}, - PartialShape {1, 1, 5, 5}, - IN_ET, - std::vector{ - 2, 5, - 4, 3}, - std::vector{ - 1, 2, 3, - 1, 1, 1, - 3, 2, 1}, - std::vector{ - 2, 4, 11, 10, 15, - 2, 2, 7, 5, 5, - 10, 12, 32, 16, 14, - 4, 4, 7, 3, 3, - 12, 8, 13, 6, 3}, - {2, 2}, - {0, 0}, - {0, 0}, - {1, 1}, - {0, 0}), - ConvolutionBackpropParams(PartialShape {1, 1, 2, 2}, - PartialShape {1, 1, 3, 3}, - PartialShape {1, 1, 6, 6}, - IN_ET, - std::vector{ - 2, 3, - 4, 3}, - std::vector{ - 1, 2, 3, - 1, 1, 1, - 3, 2, 1}, - std::vector{ - 2, 3, 4, 6, 6, 9, - 4, 3, 8, 6, 12, 9, - 2, 3, 2, 3, 2, 3, - 4, 3, 4, 3, 4, 3, - 6, 9, 4, 6, 2, 3, - 12, 9, 8, 6, 4, 3}, - {1, 1}, - {0, 0}, - {0, 0}, - {2, 2}, - {0, 0}), - ConvolutionBackpropParams(PartialShape {1, 1, 3, 3}, - PartialShape {1, 1, 3, 3}, - PartialShape {1, 1, 5, 5}, - IN_ET, - std::vector{ - 1, 3, 5, - 7, 5, 3, - 2, 4, 6}, - std::vector{ - 1, 2, 3, - 1, 1, 1, - 3, 2, 1}, - std::vector{ - 23, 0, 43, 0, 29, - 0, 0, 0, 0, 0, - 31, 0, 57, 0, 45, - 0, 0, 0, 0, 0, - 35, 0, 38, 0, 21}, - {2, 2}, - {2, 2}, - {2, 2}, - {2, 2}, - {0, 0}), -// --------------------- 3D convolution ------------------------------------------ - ConvolutionBackpropParams(PartialShape {1, 1, 4, 4, 4}, - PartialShape {1, 1, 3, 3, 3}, - PartialShape {1, 1, 4, 4, 4}, - IN_ET, - std::vector{ - // depth: 1 - 1, 3, 2, 1, - 1, 3, 3, 1, - 2, 1, 1, 3, - 3, 2, 3, 3, - // depth: 2 - 1, 3, 2, 1, - 1, 3, 3, 1, - 2, 1, 1, 3, - 3, 2, 3, 3, - // depth: 3 - 1, 3, 2, 1, - 1, 3, 3, 1, - 2, 1, 1, 3, - 3, 2, 3, 3, - // depth: 4 - 1, 3, 2, 1, - 1, 3, 3, 1, - 2, 1, 1, 3, - 3, 2, 3, 3}, - std::vector{ - // depth: 1 - 1, 2, 3, - 0, 1, 0, - 2, 1, 2, - // depth: 2 - 1, 2, 3, - 0, 1, 0, - 2, 1, 2, - // depth: 3 - 1, 2, 3, - 0, 1, 0, - 2, 1, 2}, - std::vector{ - // depth: 1 - 12, 30, 36, 24, - 26, 42, 42, 30, - 34, 56, 54, 50, - 14, 18, 24, 16, - // depth: 2 - 18, 45, 54, 36, - 39, 63, 63, 45, - 51, 84, 81, 75, - 21, 27, 36, 24, - // depth: 3 - 18, 45, 54, 36, - 39, 63, 63, 45, - 51, 84, 81, 75, - 21, 27, 36, 24, - // depth: 4 - 12, 30, 36, 24, - 26, 42, 42, 30, - 34, 56, 54, 50, - 14, 18, 24, 16}, - {1, 1, 1}, - {1, 1, 1}, - {1, 1, 1}, - {1, 1, 1}, - {0, 0, 0}), - ConvolutionBackpropParams(PartialShape {1, 1, 4, 4, 4}, - PartialShape {1, 1, 3, 3, 3}, - PartialShape {1, 1, 7, 7, 7}, - IN_ET, - std::vector{ - // depth: 1 - 1, 3, 2, 1, - 1, 3, 3, 1, - 2, 1, 1, 3, - 3, 2, 3, 3, - // depth: 2 - 1, 3, 2, 1, - 1, 3, 3, 1, - 2, 1, 1, 3, - 3, 2, 3, 3, - // depth: 3 - 1, 3, 2, 1, - 1, 3, 3, 1, - 2, 1, 1, 3, - 3, 2, 3, 3, - // depth: 4 - 1, 3, 2, 1, - 1, 3, 3, 1, - 2, 1, 1, 3, - 3, 2, 3, 3}, - std::vector{ - // depth: 1 - 1, 2, 3, - 0, 1, 0, - 2, 1, 2, - // depth: 2 - 1, 2, 3, - 0, 1, 0, - 2, 1, 2, - // depth: 3 - 1, 2, 3, - 0, 1, 0, - 2, 1, 2}, - std::vector{ - // depth: 1 - 12, 0, 30, 0, 36, 0, 24, - 0, 0, 0, 0, 0, 0, 0, - 26, 0, 42, 0, 42, 0, 30, - 0, 0, 0, 0, 0, 0, 0, - 34, 0, 56, 0, 54, 0, 50, - 0, 0, 0, 0, 0, 0, 0, - 14, 0, 18, 0, 24, 0, 16, - // depth: 2 - 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, - // depth: 3 - 18, 0, 45, 0, 54, 0, 36, - 0, 0, 0, 0, 0, 0, 0, - 39, 0, 63, 0, 63, 0, 45, - 0, 0, 0, 0, 0, 0, 0, - 51, 0, 84, 0, 81, 0, 75, - 0, 0, 0, 0, 0, 0, 0, - 21, 0, 27, 0, 36, 0, 24, - // depth: 4 - 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, - // depth: 5 - 18, 0, 45, 0, 54, 0, 36, - 0, 0, 0, 0, 0, 0, 0, - 39, 0, 63, 0, 63, 0, 45, - 0, 0, 0, 0, 0, 0, 0, - 51, 0, 84, 0, 81, 0, 75, - 0, 0, 0, 0, 0, 0, 0, - 21, 0, 27, 0, 36, 0, 24, - // depth: 6 - 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, - // depth: 7 - 12, 0, 30, 0, 36, 0, 24, - 0, 0, 0, 0, 0, 0, 0, - 26, 0, 42, 0, 42, 0, 30, - 0, 0, 0, 0, 0, 0, 0, - 34, 0, 56, 0, 54, 0, 50, - 0, 0, 0, 0, 0, 0, 0, - 14, 0, 18, 0, 24, 0, 16}, - {2, 2, 2}, - {2, 2, 2}, - {2, 2, 2}, - {2, 2, 2}, - {0, 0, 0}), - ConvolutionBackpropParams(PartialShape {1, 1, 2, 2, 2}, - PartialShape {1, 2, 3, 3, 3}, - PartialShape {1, 2, 4, 4, 4}, - IN_ET, - std::vector{ - // depth: 1 - 1, 8, - 1, 3, - // depth: 2 - 1, 7, - 3, 8}, - std::vector{ - // -- channel 1 -- - // depth: 1 - 1, 2, 3, - 0, 1, 0, - 2, 1, 2, - // depth: 2 - 1, 2, 3, - 0, 1, 0, - 2, 1, 2, - // depth: 3 - 1, 2, 3, - 0, 1, 0, - 2, 1, 2, - // -- channel 2 -- - // depth: 1 - 1, 2, 3, - 0, 1, 0, - 2, 1, 2, - // depth: 2 - 1, 2, 3, - 0, 1, 0, - 2, 1, 2, - // depth: 3 - 1, 2, 3, - 0, 1, 0, - 2, 1, 2}, - std::vector{ - // -- channel 1 -- - // depth: 1 - 1, 10, 19, 24, - 1, 6, 17, 9, - 2, 18, 13, 16, - 2, 7, 5, 6, - // depth: 2 - 2, 19, 36, 45, - 4, 21, 49, 33, - 4, 36, 30, 30, - 8, 26, 19, 22, - // depth: 3 - 2, 19, 36, 45, - 4, 21, 49, 33, - 4, 36, 30, 30, - 8, 26, 19, 22, - // depth: 4 - 1, 9, 17, 21, - 3, 15, 32, 24, - 2, 18, 17, 14, - 6, 19, 14, 16, - // -- channel 2 -- - // depth: 1 - 1, 10, 19, 24, - 1, 6, 17, 9, - 2, 18, 13, 16, - 2, 7, 5, 6, - // depth: 2 - 2, 19, 36, 45, - 4, 21, 49, 33, - 4, 36, 30, 30, - 8, 26, 19, 22, - // depth: 3 - 2, 19, 36, 45, - 4, 21, 49, 33, - 4, 36, 30, 30, - 8, 26, 19, 22, - // depth: 4 - 1, 9, 17, 21, - 3, 15, 32, 24, - 2, 18, 17, 14, - 6, 19, 14, 16}, - {1, 1, 1}, - {0, 0, 0}, - {0, 0, 0}, - {1, 1, 1}, - {0, 0, 0}), - ConvolutionBackpropParams(PartialShape {1, 2, 2, 2, 2}, - PartialShape {2, 1, 3, 3, 3}, - PartialShape {1, 1, 4, 4, 4}, - IN_ET, - std::vector{ - // -- in 1 -- - // depth: 1 - 1, 3, - 2, 5, - // depth: 2 - 1, 0, - 3, 6, - // -- in 2 -- - // depth: 1 - 1, 3, - 2, 5, - // depth: 2 - 3, 0, - 1, 8}, - std::vector{ - // -- filter 1 -- - // depth: 1 - 1, 2, 3, - 0, 1, 0, - 2, 1, 2, - // depth: 2 - 1, 2, 3, - 0, 1, 0, - 2, 1, 2, - // depth: 3 - 1, 2, 3, - 0, 1, 0, - 2, 1, 2, - // -- filter 2 -- - // depth: 1 - 1, 2, 3, - 0, 1, 0, - 2, 1, 2, - // depth: 2 - 1, 2, 3, - 0, 1, 0, - 2, 1, 2, - // depth: 3 - 1, 2, 3, - 0, 1, 0, - 2, 1, 2}, - std::vector{ - // depth: 1 - 2, 10, 18, 18, - 4, 20, 38, 30, - 4, 18, 20, 12, - 8, 24, 18, 20, - // depth: 2 - 6, 18, 30, 18, - 8, 46, 78, 72, - 12, 26, 42, 12, - 16, 56, 40, 48, - // depth: 3 - 6, 18, 30, 18, - 8, 46, 78, 72, - 12, 26, 42, 12, - 16, 56, 40, 48, - // depth: 4 - 4, 8, 12, 0, - 4, 26, 40, 42, - 8, 8, 22, 0, - 8, 32, 22, 28}, - {1, 1, 1}, - {0, 0, 0}, - {0, 0, 0}, - {1, 1, 1}, - {0, 0, 0}), - ConvolutionBackpropParams(PartialShape {2, 1, 2, 2, 2}, - PartialShape {1, 1, 3, 3, 3}, - PartialShape {2, 1, 4, 4, 4}, - IN_ET, - std::vector{ - // -- batch 1 -- - // depth: 1 - 1, 3, - 2, 5, - // depth: 2 - 1, 0, - 6, 4, - // -- batch 2 -- - // depth: 1 - 1, 5, - 2, 8, - // depth: 2 - 2, 1, - 0, 5}, - std::vector{ - // depth: 1 - 1, 2, 3, - 0, 1, 0, - 2, 1, 2, - // depth: 2 - 1, 2, 3, - 0, 1, 0, - 2, 1, 2, - // depth: 3 - 1, 2, 3, - 0, 1, 0, - 2, 1, 2}, - std::vector{ - // -- batch 1 -- - // depth: 1 - 1, 5, 9, 9, - 2, 10, 19, 15, - 2, 9, 10, 6, - 4, 12, 9, 10, - // depth: 2 - 2, 7, 12, 9, - 8, 27, 45, 27, - 4, 16, 16, 6, - 16, 26, 25, 18, - // depth: 3 - 2, 7, 12, 9, - 8, 27, 45, 27, - 4, 16, 16, 6, - 16, 26, 25, 18, - // depth: 4 - 1, 2, 3, 0, - 6, 17, 26, 12, - 2, 7, 6, 0, - 12, 14, 16, 8, - // -- batch 2 -- - // depth: 1 - 1, 7, 13, 15, - 2, 13, 27, 24, - 2, 13, 15, 10, - 4, 18, 12, 16, - // depth: 2 - 3, 12, 21, 18, - 2, 20, 38, 39, - 6, 17, 25, 12, - 4, 28, 17, 26, - // depth: 3 - 3, 12, 21, 18, - 2, 20, 38, 39, - 6, 17, 25, 12, - 4, 28, 17, 26, - // depth: 4 - 2, 5, 8, 3, - 0, 7, 11, 15, - 4, 4, 10, 2, - 0, 10, 5, 10}, - {1, 1, 1}, - {0, 0, 0}, - {0, 0, 0}, - {1, 1, 1}, - {0, 0, 0}) - }; + std::vector convolutionBackpropParams{ + // --------------------- 1D ConvolutionBackprop ------------------------------------------ + ConvolutionBackpropParams(PartialShape{1, 1, 4}, + PartialShape{1, 1, 3}, + PartialShape{1, 1, 6}, + IN_ET, + std::vector{5, 6, 7, 2}, + std::vector{2, 0, 1}, + std::vector{10, 12, 19, 10, 7, 2}, + {1}, + {0}, + {0}, + {1}, + {0}), + ConvolutionBackpropParams(PartialShape{1, 1, 4}, + PartialShape{1, 1, 3}, + PartialShape{1, 1, 4}, + IN_ET, + std::vector{5, 6, 7, 2}, + std::vector{2, 0, 1}, + std::vector{12, 19, 10, 7}, + {1}, + {1}, + {1}, + {1}, + {0}), + ConvolutionBackpropParams(PartialShape{1, 1, 2}, + PartialShape{1, 1, 3}, + PartialShape{1, 1, 5}, + IN_ET, + std::vector{5, 7}, + std::vector{2, 0, 1}, + std::vector{10, 0, 19, 0, 7}, + {2}, + {0}, + {0}, + {1}, + {0}), + ConvolutionBackpropParams(PartialShape{1, 1, 4}, + PartialShape{1, 1, 3}, + PartialShape{1, 1, 5}, + IN_ET, + std::vector{5, 6, 7, 2}, + std::vector{2, 0, 1}, + std::vector{12, 19, 10, 7, 2}, + {1}, + {1}, + {1}, + {1}, + {1}), + ConvolutionBackpropParams(PartialShape{1, 1, 3}, + PartialShape{1, 1, 3}, + PartialShape{1, 1, 7}, + IN_ET, + std::vector{8, 5, 1}, + std::vector{2, 0, 1}, + std::vector{16, 10, 2, 0, 8, 5, 1}, + {1}, + {0}, + {0}, + {2}, + {0}), + ConvolutionBackpropParams(PartialShape{1, 1, 4}, + PartialShape{1, 1, 3}, + PartialShape{1, 1, 7}, + IN_ET, + std::vector{3, 9, 1, 2}, + std::vector{2, 0, 1}, + std::vector{18, 0, 5, 0, 13, 0, 1}, + {2}, + {2}, + {2}, + {2}, + {0}), + ConvolutionBackpropParams(PartialShape{1, 1, 2}, + PartialShape{1, 2, 3}, + PartialShape{1, 2, 4}, + IN_ET, + std::vector{10, 3}, + std::vector{// channel 1 + 2, + 0, + 1, + // channel 2 + 1, + 0, + 2}, + std::vector{// channel 1 + 20, + 6, + 10, + 3, + // channel 2 + 10, + 3, + 20, + 6}, + {1}, + {0}, + {0}, + {1}, + {0}), + ConvolutionBackpropParams(PartialShape{1, 2, 2}, + PartialShape{2, 1, 3}, + PartialShape{1, 1, 4}, + IN_ET, + std::vector{// channel 1 + 4, + 7, + // channel 2 + 5, + 5}, + std::vector{// filter 1 + 2, + 0, + 1, + // filter 2 + 1, + 0, + 2}, + std::vector{13, 19, 14, 17}, + {1}, + {0}, + {0}, + {1}, + {0}), + ConvolutionBackpropParams(PartialShape{2, 1, 2}, + PartialShape{1, 1, 3}, + PartialShape{2, 1, 4}, + IN_ET, + std::vector{// batch 1 + 1, + 3, + // batch 2 + 2, + 2}, + std::vector{2, 0, 1}, + std::vector{// batch 1 + 2, + 6, + 1, + 3, + // batch 2 + 4, + 4, + 2, + 2}, + {1}, + {0}, + {0}, + {1}, + {0}), + // --------------------- 2D ConvolutionBackprop ------------------------------------------ + ConvolutionBackpropParams(PartialShape{1, 1, 2, 2}, + PartialShape{1, 1, 3, 3}, + PartialShape{1, 1, 4, 4}, + IN_ET, + std::vector{1, 3, 7, 5}, + std::vector{1, 2, 3, 0, 1, 0, 3, 2, 1}, + std::vector{1, 5, 9, 9, 7, 20, 34, 15, 3, 18, 12, 3, 21, 29, 17, 5}, + {1, 1}, + {0, 0}, + {0, 0}, + {1, 1}, + {0, 0}), + ConvolutionBackpropParams(PartialShape{1, 1, 2, 2}, + PartialShape{1, 1, 3, 3}, + PartialShape{1, 1, 3, 3}, + IN_ET, + std::vector{1, 3, 7, 5}, + std::vector{1, 2, 3, 1, 1, 1, 3, 2, 1}, + std::vector{23, 35, 18, 23, 19, 8, 29, 17, 5}, + {1, 1}, + {1, 1}, + {1, 1}, + {1, 1}, + {1, 1}), + ConvolutionBackpropParams(PartialShape{1, 1, 4, 4}, + PartialShape{1, 1, 3, 3}, + PartialShape{1, 1, 4, 4}, + IN_ET, + std::vector{1, 3, 5, 7, 7, 5, 3, 1, 2, 4, 6, 8, 8, 6, 4, 2}, + std::vector{1, 2, 3, 0, 1, 0, 2, 1, 2}, + std::vector{20, 37, 27, 18, 22, 40, 60, 52, 41, 69, 49, 31, 18, 26, 34, 22}, + {1, 1}, + {1, 1}, + {1, 1}, + {1, 1}, + {0, 0}), + ConvolutionBackpropParams( + PartialShape{1, 1, 2, 2}, + PartialShape{1, 1, 3, 3}, + PartialShape{1, 1, 5, 5}, + IN_ET, + std::vector{2, 5, 4, 3}, + std::vector{1, 2, 3, 1, 1, 1, 3, 2, 1}, + std::vector{2, 4, 11, 10, 15, 2, 2, 7, 5, 5, 10, 12, 32, 16, 14, 4, 4, 7, 3, 3, 12, 8, 13, 6, 3}, + {2, 2}, + {0, 0}, + {0, 0}, + {1, 1}, + {0, 0}), + ConvolutionBackpropParams(PartialShape{1, 1, 2, 2}, + PartialShape{1, 1, 3, 3}, + PartialShape{1, 1, 6, 6}, + IN_ET, + std::vector{2, 3, 4, 3}, + std::vector{1, 2, 3, 1, 1, 1, 3, 2, 1}, + std::vector{2, 3, 4, 6, 6, 9, 4, 3, 8, 6, 12, 9, 2, 3, 2, 3, 2, 3, + 4, 3, 4, 3, 4, 3, 6, 9, 4, 6, 2, 3, 12, 9, 8, 6, 4, 3}, + {1, 1}, + {0, 0}, + {0, 0}, + {2, 2}, + {0, 0}), + ConvolutionBackpropParams( + PartialShape{1, 1, 3, 3}, + PartialShape{1, 1, 3, 3}, + PartialShape{1, 1, 5, 5}, + IN_ET, + std::vector{1, 3, 5, 7, 5, 3, 2, 4, 6}, + std::vector{1, 2, 3, 1, 1, 1, 3, 2, 1}, + std::vector{23, 0, 43, 0, 29, 0, 0, 0, 0, 0, 31, 0, 57, 0, 45, 0, 0, 0, 0, 0, 35, 0, 38, 0, 21}, + {2, 2}, + {2, 2}, + {2, 2}, + {2, 2}, + {0, 0}), + // --------------------- 3D convolution ------------------------------------------ + ConvolutionBackpropParams(PartialShape{1, 1, 4, 4, 4}, + PartialShape{1, 1, 3, 3, 3}, + PartialShape{1, 1, 4, 4, 4}, + IN_ET, + std::vector{// depth: 1 + 1, + 3, + 2, + 1, + 1, + 3, + 3, + 1, + 2, + 1, + 1, + 3, + 3, + 2, + 3, + 3, + // depth: 2 + 1, + 3, + 2, + 1, + 1, + 3, + 3, + 1, + 2, + 1, + 1, + 3, + 3, + 2, + 3, + 3, + // depth: 3 + 1, + 3, + 2, + 1, + 1, + 3, + 3, + 1, + 2, + 1, + 1, + 3, + 3, + 2, + 3, + 3, + // depth: 4 + 1, + 3, + 2, + 1, + 1, + 3, + 3, + 1, + 2, + 1, + 1, + 3, + 3, + 2, + 3, + 3}, + std::vector{// depth: 1 + 1, + 2, + 3, + 0, + 1, + 0, + 2, + 1, + 2, + // depth: 2 + 1, + 2, + 3, + 0, + 1, + 0, + 2, + 1, + 2, + // depth: 3 + 1, + 2, + 3, + 0, + 1, + 0, + 2, + 1, + 2}, + std::vector{// depth: 1 + 12, + 30, + 36, + 24, + 26, + 42, + 42, + 30, + 34, + 56, + 54, + 50, + 14, + 18, + 24, + 16, + // depth: 2 + 18, + 45, + 54, + 36, + 39, + 63, + 63, + 45, + 51, + 84, + 81, + 75, + 21, + 27, + 36, + 24, + // depth: 3 + 18, + 45, + 54, + 36, + 39, + 63, + 63, + 45, + 51, + 84, + 81, + 75, + 21, + 27, + 36, + 24, + // depth: 4 + 12, + 30, + 36, + 24, + 26, + 42, + 42, + 30, + 34, + 56, + 54, + 50, + 14, + 18, + 24, + 16}, + {1, 1, 1}, + {1, 1, 1}, + {1, 1, 1}, + {1, 1, 1}, + {0, 0, 0}), + ConvolutionBackpropParams(PartialShape{1, 1, 4, 4, 4}, + PartialShape{1, 1, 3, 3, 3}, + PartialShape{1, 1, 7, 7, 7}, + IN_ET, + std::vector{// depth: 1 + 1, + 3, + 2, + 1, + 1, + 3, + 3, + 1, + 2, + 1, + 1, + 3, + 3, + 2, + 3, + 3, + // depth: 2 + 1, + 3, + 2, + 1, + 1, + 3, + 3, + 1, + 2, + 1, + 1, + 3, + 3, + 2, + 3, + 3, + // depth: 3 + 1, + 3, + 2, + 1, + 1, + 3, + 3, + 1, + 2, + 1, + 1, + 3, + 3, + 2, + 3, + 3, + // depth: 4 + 1, + 3, + 2, + 1, + 1, + 3, + 3, + 1, + 2, + 1, + 1, + 3, + 3, + 2, + 3, + 3}, + std::vector{// depth: 1 + 1, + 2, + 3, + 0, + 1, + 0, + 2, + 1, + 2, + // depth: 2 + 1, + 2, + 3, + 0, + 1, + 0, + 2, + 1, + 2, + // depth: 3 + 1, + 2, + 3, + 0, + 1, + 0, + 2, + 1, + 2}, + std::vector{// depth: 1 + 12, + 0, + 30, + 0, + 36, + 0, + 24, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 26, + 0, + 42, + 0, + 42, + 0, + 30, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 34, + 0, + 56, + 0, + 54, + 0, + 50, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 14, + 0, + 18, + 0, + 24, + 0, + 16, + // depth: 2 + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + // depth: 3 + 18, + 0, + 45, + 0, + 54, + 0, + 36, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 39, + 0, + 63, + 0, + 63, + 0, + 45, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 51, + 0, + 84, + 0, + 81, + 0, + 75, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 21, + 0, + 27, + 0, + 36, + 0, + 24, + // depth: 4 + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + // depth: 5 + 18, + 0, + 45, + 0, + 54, + 0, + 36, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 39, + 0, + 63, + 0, + 63, + 0, + 45, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 51, + 0, + 84, + 0, + 81, + 0, + 75, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 21, + 0, + 27, + 0, + 36, + 0, + 24, + // depth: 6 + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + // depth: 7 + 12, + 0, + 30, + 0, + 36, + 0, + 24, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 26, + 0, + 42, + 0, + 42, + 0, + 30, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 34, + 0, + 56, + 0, + 54, + 0, + 50, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 14, + 0, + 18, + 0, + 24, + 0, + 16}, + {2, 2, 2}, + {2, 2, 2}, + {2, 2, 2}, + {2, 2, 2}, + {0, 0, 0}), + ConvolutionBackpropParams(PartialShape{1, 1, 2, 2, 2}, + PartialShape{1, 2, 3, 3, 3}, + PartialShape{1, 2, 4, 4, 4}, + IN_ET, + std::vector{// depth: 1 + 1, + 8, + 1, + 3, + // depth: 2 + 1, + 7, + 3, + 8}, + std::vector{// -- channel 1 -- + // depth: 1 + 1, + 2, + 3, + 0, + 1, + 0, + 2, + 1, + 2, + // depth: 2 + 1, + 2, + 3, + 0, + 1, + 0, + 2, + 1, + 2, + // depth: 3 + 1, + 2, + 3, + 0, + 1, + 0, + 2, + 1, + 2, + // -- channel 2 -- + // depth: 1 + 1, + 2, + 3, + 0, + 1, + 0, + 2, + 1, + 2, + // depth: 2 + 1, + 2, + 3, + 0, + 1, + 0, + 2, + 1, + 2, + // depth: 3 + 1, + 2, + 3, + 0, + 1, + 0, + 2, + 1, + 2}, + std::vector{// -- channel 1 -- + // depth: 1 + 1, + 10, + 19, + 24, + 1, + 6, + 17, + 9, + 2, + 18, + 13, + 16, + 2, + 7, + 5, + 6, + // depth: 2 + 2, + 19, + 36, + 45, + 4, + 21, + 49, + 33, + 4, + 36, + 30, + 30, + 8, + 26, + 19, + 22, + // depth: 3 + 2, + 19, + 36, + 45, + 4, + 21, + 49, + 33, + 4, + 36, + 30, + 30, + 8, + 26, + 19, + 22, + // depth: 4 + 1, + 9, + 17, + 21, + 3, + 15, + 32, + 24, + 2, + 18, + 17, + 14, + 6, + 19, + 14, + 16, + // -- channel 2 -- + // depth: 1 + 1, + 10, + 19, + 24, + 1, + 6, + 17, + 9, + 2, + 18, + 13, + 16, + 2, + 7, + 5, + 6, + // depth: 2 + 2, + 19, + 36, + 45, + 4, + 21, + 49, + 33, + 4, + 36, + 30, + 30, + 8, + 26, + 19, + 22, + // depth: 3 + 2, + 19, + 36, + 45, + 4, + 21, + 49, + 33, + 4, + 36, + 30, + 30, + 8, + 26, + 19, + 22, + // depth: 4 + 1, + 9, + 17, + 21, + 3, + 15, + 32, + 24, + 2, + 18, + 17, + 14, + 6, + 19, + 14, + 16}, + {1, 1, 1}, + {0, 0, 0}, + {0, 0, 0}, + {1, 1, 1}, + {0, 0, 0}), + ConvolutionBackpropParams(PartialShape{1, 2, 2, 2, 2}, + PartialShape{2, 1, 3, 3, 3}, + PartialShape{1, 1, 4, 4, 4}, + IN_ET, + std::vector{// -- in 1 -- + // depth: 1 + 1, + 3, + 2, + 5, + // depth: 2 + 1, + 0, + 3, + 6, + // -- in 2 -- + // depth: 1 + 1, + 3, + 2, + 5, + // depth: 2 + 3, + 0, + 1, + 8}, + std::vector{// -- filter 1 -- + // depth: 1 + 1, + 2, + 3, + 0, + 1, + 0, + 2, + 1, + 2, + // depth: 2 + 1, + 2, + 3, + 0, + 1, + 0, + 2, + 1, + 2, + // depth: 3 + 1, + 2, + 3, + 0, + 1, + 0, + 2, + 1, + 2, + // -- filter 2 -- + // depth: 1 + 1, + 2, + 3, + 0, + 1, + 0, + 2, + 1, + 2, + // depth: 2 + 1, + 2, + 3, + 0, + 1, + 0, + 2, + 1, + 2, + // depth: 3 + 1, + 2, + 3, + 0, + 1, + 0, + 2, + 1, + 2}, + std::vector{// depth: 1 + 2, + 10, + 18, + 18, + 4, + 20, + 38, + 30, + 4, + 18, + 20, + 12, + 8, + 24, + 18, + 20, + // depth: 2 + 6, + 18, + 30, + 18, + 8, + 46, + 78, + 72, + 12, + 26, + 42, + 12, + 16, + 56, + 40, + 48, + // depth: 3 + 6, + 18, + 30, + 18, + 8, + 46, + 78, + 72, + 12, + 26, + 42, + 12, + 16, + 56, + 40, + 48, + // depth: 4 + 4, + 8, + 12, + 0, + 4, + 26, + 40, + 42, + 8, + 8, + 22, + 0, + 8, + 32, + 22, + 28}, + {1, 1, 1}, + {0, 0, 0}, + {0, 0, 0}, + {1, 1, 1}, + {0, 0, 0}), + ConvolutionBackpropParams(PartialShape{2, 1, 2, 2, 2}, + PartialShape{1, 1, 3, 3, 3}, + PartialShape{2, 1, 4, 4, 4}, + IN_ET, + std::vector{// -- batch 1 -- + // depth: 1 + 1, + 3, + 2, + 5, + // depth: 2 + 1, + 0, + 6, + 4, + // -- batch 2 -- + // depth: 1 + 1, + 5, + 2, + 8, + // depth: 2 + 2, + 1, + 0, + 5}, + std::vector{// depth: 1 + 1, + 2, + 3, + 0, + 1, + 0, + 2, + 1, + 2, + // depth: 2 + 1, + 2, + 3, + 0, + 1, + 0, + 2, + 1, + 2, + // depth: 3 + 1, + 2, + 3, + 0, + 1, + 0, + 2, + 1, + 2}, + std::vector{// -- batch 1 -- + // depth: 1 + 1, + 5, + 9, + 9, + 2, + 10, + 19, + 15, + 2, + 9, + 10, + 6, + 4, + 12, + 9, + 10, + // depth: 2 + 2, + 7, + 12, + 9, + 8, + 27, + 45, + 27, + 4, + 16, + 16, + 6, + 16, + 26, + 25, + 18, + // depth: 3 + 2, + 7, + 12, + 9, + 8, + 27, + 45, + 27, + 4, + 16, + 16, + 6, + 16, + 26, + 25, + 18, + // depth: 4 + 1, + 2, + 3, + 0, + 6, + 17, + 26, + 12, + 2, + 7, + 6, + 0, + 12, + 14, + 16, + 8, + // -- batch 2 -- + // depth: 1 + 1, + 7, + 13, + 15, + 2, + 13, + 27, + 24, + 2, + 13, + 15, + 10, + 4, + 18, + 12, + 16, + // depth: 2 + 3, + 12, + 21, + 18, + 2, + 20, + 38, + 39, + 6, + 17, + 25, + 12, + 4, + 28, + 17, + 26, + // depth: 3 + 3, + 12, + 21, + 18, + 2, + 20, + 38, + 39, + 6, + 17, + 25, + 12, + 4, + 28, + 17, + 26, + // depth: 4 + 2, + 5, + 8, + 3, + 0, + 7, + 11, + 15, + 4, + 4, + 10, + 2, + 0, + 10, + 5, + 10}, + {1, 1, 1}, + {0, 0, 0}, + {0, 0, 0}, + {1, 1, 1}, + {0, 0, 0})}; return convolutionBackpropParams; } std::vector generateConvolutionBackpropCombinedParams() { - const std::vector> convolutionBackpropTypeParams { + const std::vector> convolutionBackpropTypeParams{ generateConvolutionBackpropFloatParams(), generateConvolutionBackpropFloatParams(), generateConvolutionBackpropFloatParams(), @@ -1761,7 +3607,7 @@ std::vector generateConvolutionBackpropCombinedParams generateConvolutionBackpropUintParams(), generateConvolutionBackpropUintParams(), generateConvolutionBackpropUintParams(), - }; + }; std::vector combinedParams; for (const auto& params : convolutionBackpropTypeParams) { @@ -1770,7 +3616,9 @@ std::vector generateConvolutionBackpropCombinedParams return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_ConvolutionBackprop_With_Hardcoded_Refs, ReferenceConvolutionBackpropLayerTest, - testing::ValuesIn(generateConvolutionBackpropCombinedParams()), ReferenceConvolutionBackpropLayerTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_ConvolutionBackprop_With_Hardcoded_Refs, + ReferenceConvolutionBackpropLayerTest, + testing::ValuesIn(generateConvolutionBackpropCombinedParams()), + ReferenceConvolutionBackpropLayerTest::getTestCaseName); -} // namespace +} // namespace diff --git a/src/plugins/template/tests/functional/op_reference/cos.cpp b/src/plugins/template/tests/functional/op_reference/cos.cpp index ed8fab2e027..b992d0c5f8a 100644 --- a/src/plugins/template/tests/functional/op_reference/cos.cpp +++ b/src/plugins/template/tests/functional/op_reference/cos.cpp @@ -2,9 +2,10 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/cos.hpp" + #include -#include "openvino/op/cos.hpp" #include "base_reference_test.hpp" using namespace ov; @@ -42,7 +43,7 @@ private: static std::shared_ptr CreateFunction(const Shape& shape, const element::Type& type) { const auto in = std::make_shared(type, shape); const auto Cos = std::make_shared(in); - return std::make_shared(NodeVector {Cos}, ParameterVector {in}); + return std::make_shared(NodeVector{Cos}, ParameterVector{in}); } }; @@ -53,11 +54,33 @@ TEST_P(ReferenceCosLayerTest, CosWithHardcodedRefs) { } // namespace INSTANTIATE_TEST_SUITE_P( - smoke_Cos_With_Hardcoded_Refs, ReferenceCosLayerTest, + smoke_Cos_With_Hardcoded_Refs, + ReferenceCosLayerTest, ::testing::Values( - Builder {} - .input({{11}, element::f16, std::vector {0.f, 0.25f, -0.25f, 0.5f, -0.5f, 1.f, -1.f, 2.f, -2.f, 4.f, -4.f}}) - .expected({{11}, element::f16, std::vector {1.00000000f, + Builder{} + .input({{11}, + element::f16, + std::vector{0.f, 0.25f, -0.25f, 0.5f, -0.5f, 1.f, -1.f, 2.f, -2.f, 4.f, -4.f}}) + .expected({{11}, + element::f16, + std::vector{1.00000000f, + 0.96891242f, + 0.96891242f, + 0.87758256f, + 0.87758256f, + 0.54030231f, + 0.54030231f, + -0.41614684f, + -0.41614684f, + -0.65364362f, + -0.65364362f}}), + Builder{} + .input({{11}, + element::f32, + std::vector{0.f, 0.25f, -0.25f, 0.5f, -0.5f, 1.f, -1.f, 2.f, -2.f, 4.f, -4.f}}) + .expected({{11}, + element::f32, + std::vector{1.00000000f, 0.96891242f, 0.96891242f, 0.87758256f, @@ -68,31 +91,18 @@ INSTANTIATE_TEST_SUITE_P( -0.41614684f, -0.65364362f, -0.65364362f}}), - Builder {} - .input({{11}, element::f32, std::vector {0.f, 0.25f, -0.25f, 0.5f, -0.5f, 1.f, -1.f, 2.f, -2.f, 4.f, -4.f}}) - .expected({{11}, element::f32, std::vector {1.00000000f, - 0.96891242f, - 0.96891242f, - 0.87758256f, - 0.87758256f, - 0.54030231f, - 0.54030231f, - -0.41614684f, - -0.41614684f, - -0.65364362f, - -0.65364362f}}), - Builder {} - .input({{5}, element::i32, std::vector {1, 2, 3, 4, 5}}) - .expected({{5}, element::i32, std::vector {1, 0, -1, -1, 0}}), - Builder {} - .input({{5}, element::i64, std::vector {1, 2, 3, 4, 5}}) - .expected({{5}, element::i64, std::vector {1, 0, -1, -1, 0}}), - Builder {} - .input({{3}, element::u32, std::vector {1, 2, 5}}) - .expected({{3}, element::u32, std::vector {1, 0, 0}}), - Builder {} - .input({{3}, element::u64, std::vector {1, 2, 5}}) - .expected({{3}, element::u64, std::vector {1, 0, 0}})), + Builder{} + .input({{5}, element::i32, std::vector{1, 2, 3, 4, 5}}) + .expected({{5}, element::i32, std::vector{1, 0, -1, -1, 0}}), + Builder{} + .input({{5}, element::i64, std::vector{1, 2, 3, 4, 5}}) + .expected({{5}, element::i64, std::vector{1, 0, -1, -1, 0}}), + Builder{} + .input({{3}, element::u32, std::vector{1, 2, 5}}) + .expected({{3}, element::u32, std::vector{1, 0, 0}}), + Builder{} + .input({{3}, element::u64, std::vector{1, 2, 5}}) + .expected({{3}, element::u64, std::vector{1, 0, 0}})), ReferenceCosLayerTest::getTestCaseName); } // namespace reference_tests diff --git a/src/plugins/template/tests/functional/op_reference/cosh.cpp b/src/plugins/template/tests/functional/op_reference/cosh.cpp index 55280c7fc23..111fb2fae70 100644 --- a/src/plugins/template/tests/functional/op_reference/cosh.cpp +++ b/src/plugins/template/tests/functional/op_reference/cosh.cpp @@ -2,9 +2,10 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/cosh.hpp" + #include -#include "openvino/op/cosh.hpp" #include "base_reference_test.hpp" using namespace ov; @@ -42,7 +43,7 @@ private: static std::shared_ptr CreateFunction(const Shape& shape, const element::Type& type) { const auto in = std::make_shared(type, shape); const auto Cosh = std::make_shared(in); - return std::make_shared(NodeVector {Cosh}, ParameterVector {in}); + return std::make_shared(NodeVector{Cosh}, ParameterVector{in}); } }; @@ -53,46 +54,55 @@ TEST_P(ReferenceCoshLayerTest, CoshWithHardcodedRefs) { } // namespace INSTANTIATE_TEST_SUITE_P( - smoke_Cosh_With_Hardcoded_Refs, ReferenceCoshLayerTest, + smoke_Cosh_With_Hardcoded_Refs, + ReferenceCoshLayerTest, ::testing::Values( - Builder {} - .input({{11}, element::f16, std::vector {-4.f, -2.f, -1.f, -0.5f, -0.25f, 0.f, 0.25f, 0.5f, 1.f, 2.f, 4.f}}) - .expected({{11}, element::f16, std::vector {27.30823284f, - 3.76219569f, - 1.54308063f, - 1.12762597f, - 1.03141310f, - 1.00000000f, - 1.03141310f, - 1.12762597f, - 1.54308063f, - 3.76219569f, - 27.30823284f}}), - Builder {} - .input({{11}, element::f32, std::vector {-4.f, -2.f, -1.f, -0.5f, -0.25f, 0.f, 0.25f, 0.5f, 1.f, 2.f, 4.f}}) - .expected({{11}, element::f32, std::vector {27.30823284f, - 3.76219569f, - 1.54308063f, - 1.12762597f, - 1.03141310f, - 1.00000000f, - 1.03141310f, - 1.12762597f, - 1.54308063f, - 3.76219569f, - 27.30823284f}}), - Builder {} - .input({{7}, element::i32, std::vector {-4, -2, -1, 0, 1, 2, 4}}) - .expected({{7}, element::i32, std::vector {27, 4, 2, 1, 2, 4, 27}}), - Builder {} - .input({{7}, element::i64, std::vector {-4, -2, -1, 0, 1, 2, 4}}) - .expected({{7}, element::i64, std::vector {27, 4, 2, 1, 2, 4, 27}}), - Builder {} - .input({{4}, element::u32, std::vector {0, 1, 2, 4}}) - .expected({{4}, element::u32, std::vector {1, 2, 4, 27}}), - Builder {} - .input({{4}, element::u64, std::vector {0, 1, 2, 4}}) - .expected({{4}, element::u64, std::vector {1, 2, 4, 27}})), + Builder{} + .input({{11}, + element::f16, + std::vector{-4.f, -2.f, -1.f, -0.5f, -0.25f, 0.f, 0.25f, 0.5f, 1.f, 2.f, 4.f}}) + .expected({{11}, + element::f16, + std::vector{27.30823284f, + 3.76219569f, + 1.54308063f, + 1.12762597f, + 1.03141310f, + 1.00000000f, + 1.03141310f, + 1.12762597f, + 1.54308063f, + 3.76219569f, + 27.30823284f}}), + Builder{} + .input({{11}, + element::f32, + std::vector{-4.f, -2.f, -1.f, -0.5f, -0.25f, 0.f, 0.25f, 0.5f, 1.f, 2.f, 4.f}}) + .expected({{11}, + element::f32, + std::vector{27.30823284f, + 3.76219569f, + 1.54308063f, + 1.12762597f, + 1.03141310f, + 1.00000000f, + 1.03141310f, + 1.12762597f, + 1.54308063f, + 3.76219569f, + 27.30823284f}}), + Builder{} + .input({{7}, element::i32, std::vector{-4, -2, -1, 0, 1, 2, 4}}) + .expected({{7}, element::i32, std::vector{27, 4, 2, 1, 2, 4, 27}}), + Builder{} + .input({{7}, element::i64, std::vector{-4, -2, -1, 0, 1, 2, 4}}) + .expected({{7}, element::i64, std::vector{27, 4, 2, 1, 2, 4, 27}}), + Builder{} + .input({{4}, element::u32, std::vector{0, 1, 2, 4}}) + .expected({{4}, element::u32, std::vector{1, 2, 4, 27}}), + Builder{} + .input({{4}, element::u64, std::vector{0, 1, 2, 4}}) + .expected({{4}, element::u64, std::vector{1, 2, 4, 27}})), ReferenceCoshLayerTest::getTestCaseName); } // namespace reference_tests diff --git a/src/plugins/template/tests/functional/op_reference/ctc_greedy_decoder.cpp b/src/plugins/template/tests/functional/op_reference/ctc_greedy_decoder.cpp index 1384fe67479..4c68e737e20 100644 --- a/src/plugins/template/tests/functional/op_reference/ctc_greedy_decoder.cpp +++ b/src/plugins/template/tests/functional/op_reference/ctc_greedy_decoder.cpp @@ -2,9 +2,10 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/ctc_greedy_decoder.hpp" + #include -#include "openvino/op/ctc_greedy_decoder.hpp" #include "base_reference_test.hpp" using namespace reference_tests; @@ -12,11 +13,16 @@ using namespace ov; namespace { struct CTCGreedyDecoderParams { - CTCGreedyDecoderParams( - const reference_tests::Tensor& dataTensor, const reference_tests::Tensor& masksTensor, int64_t ctcMergedRepeat, - const reference_tests::Tensor& expectedTensor, const std::string& testcaseName = "") : - dataTensor(dataTensor), masksTensor(masksTensor), ctcMergedRepeat(ctcMergedRepeat), - expectedTensor(expectedTensor), testcaseName(testcaseName) {} + CTCGreedyDecoderParams(const reference_tests::Tensor& dataTensor, + const reference_tests::Tensor& masksTensor, + int64_t ctcMergedRepeat, + const reference_tests::Tensor& expectedTensor, + const std::string& testcaseName = "") + : dataTensor(dataTensor), + masksTensor(masksTensor), + ctcMergedRepeat(ctcMergedRepeat), + expectedTensor(expectedTensor), + testcaseName(testcaseName) {} reference_tests::Tensor dataTensor; reference_tests::Tensor masksTensor; @@ -25,7 +31,8 @@ struct CTCGreedyDecoderParams { std::string testcaseName; }; -class ReferenceCTCGreedyDecoderTest : public testing::TestWithParam, public CommonReferenceTest { +class ReferenceCTCGreedyDecoderTest : public testing::TestWithParam, + public CommonReferenceTest { public: void SetUp() override { auto params = GetParam(); @@ -70,40 +77,68 @@ TEST_P(ReferenceCTCGreedyDecoderTest, CompareWithRefs) { template std::vector generateParams() { using T = typename element_type_traits::value_type; - std::vector params { + std::vector params{ CTCGreedyDecoderParams( - reference_tests::Tensor(IN_ET, {3, 1, 3}, std::vector{0.1f, 0.2f, 0.f, 0.4f, 0.3f, 0.f, 0.5f, 0.6f, 0.f}), + reference_tests::Tensor(IN_ET, + {3, 1, 3}, + std::vector{0.1f, 0.2f, 0.f, 0.4f, 0.3f, 0.f, 0.5f, 0.6f, 0.f}), reference_tests::Tensor(IN_ET, {3, 1}, std::vector{1.0f, 1.0f, 1.0f}), false, reference_tests::Tensor(IN_ET, {1, 3, 1, 1}, std::vector{1.0f, 0.0f, 1.0f}), "ctc_greedy_decoder"), CTCGreedyDecoderParams( - reference_tests::Tensor(IN_ET, {3, 2, 3}, std::vector{ - 0.1f, 0.2f, 0.f, 0.15f, 0.25f, 0.f, 0.4f, 0.3f, 0.f, 0.45f, 0.35f, 0.f, 0.5f, 0.6f, 0.f, 0.55f, 0.65f, 0.f}), + reference_tests::Tensor(IN_ET, + {3, 2, 3}, + std::vector{0.1f, + 0.2f, + 0.f, + 0.15f, + 0.25f, + 0.f, + 0.4f, + 0.3f, + 0.f, + 0.45f, + 0.35f, + 0.f, + 0.5f, + 0.6f, + 0.f, + 0.55f, + 0.65f, + 0.f}), reference_tests::Tensor(IN_ET, {3, 2}, std::vector{1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f}), false, reference_tests::Tensor(IN_ET, {2, 3, 1, 1}, std::vector{1.0f, 0.0f, 1.0f, 1.0f, 0.0f, 1.0f}), "ctc_greedy_decoder_multiple_batches"), CTCGreedyDecoderParams( - reference_tests::Tensor(IN_ET, {3, 1, 3}, std::vector{0.1f, 0.2f, 0.f, 0.4f, 0.3f, 0.f, 0.5f, 0.6f, 0.f}), + reference_tests::Tensor(IN_ET, + {3, 1, 3}, + std::vector{0.1f, 0.2f, 0.f, 0.4f, 0.3f, 0.f, 0.5f, 0.6f, 0.f}), reference_tests::Tensor(IN_ET, {3, 1}, std::vector{1.0f, 1.0f, 0.0f}), false, reference_tests::Tensor(IN_ET, {1, 3, 1, 1}, std::vector{1.0f, 0.0f, -1.0f}), "ctc_greedy_decoder_single_batch_short_sequence"), CTCGreedyDecoderParams( - reference_tests::Tensor(IN_ET, {3, 1, 3}, std::vector{0.1f, 0.2f, 0.f, 0.3f, 0.4f, 0.f, 0.6f, 0.5f, 0.f}), + reference_tests::Tensor(IN_ET, + {3, 1, 3}, + std::vector{0.1f, 0.2f, 0.f, 0.3f, 0.4f, 0.f, 0.6f, 0.5f, 0.f}), reference_tests::Tensor(IN_ET, {3, 1}, std::vector{1.0f, 1.0f, 1.0f}), true, reference_tests::Tensor(IN_ET, {1, 3, 1, 1}, std::vector{1.0f, 0.0f, -1.0f}), "ctc_greedy_decoder_merge"), CTCGreedyDecoderParams( - reference_tests::Tensor(IN_ET, {3, 1, 3}, std::vector{0.1f, 0.2f, 0.f, 0.3f, 0.4f, 0.f, 0.6f, 0.5f, 0.f}), + reference_tests::Tensor(IN_ET, + {3, 1, 3}, + std::vector{0.1f, 0.2f, 0.f, 0.3f, 0.4f, 0.f, 0.6f, 0.5f, 0.f}), reference_tests::Tensor(IN_ET, {3, 1}, std::vector{1.0f, 1.0f, 1.0f}), false, reference_tests::Tensor(IN_ET, {1, 3, 1, 1}, std::vector{1.0f, 1.0f, 0.0f}), "ctc_greedy_decoder_single_no_merge"), CTCGreedyDecoderParams( - reference_tests::Tensor(IN_ET, {2, 2, 3}, std::vector{0.1f, 0.2f, 0.f, 0.4f, 0.3f, 0.f, 0.5f, 0.6f, 0.f, 0.7f, 0.8f, 0.f}), + reference_tests::Tensor(IN_ET, + {2, 2, 3}, + std::vector{0.1f, 0.2f, 0.f, 0.4f, 0.3f, 0.f, 0.5f, 0.6f, 0.f, 0.7f, 0.8f, 0.f}), reference_tests::Tensor(IN_ET, {2, 2}, std::vector{1.0f, 1.0f, 1.0f, 0.0f}), false, reference_tests::Tensor(IN_ET, {2, 2, 1, 1}, std::vector{1.0f, 1.0f, 0.0f, -1.0f}), @@ -113,7 +148,7 @@ std::vector generateParams() { } std::vector generateCombinedParams() { - const std::vector> generatedParams { + const std::vector> generatedParams{ generateParams(), generateParams(), generateParams(), @@ -127,6 +162,8 @@ std::vector generateCombinedParams() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_CTCGreedyDecoder_With_Hardcoded_Refs, ReferenceCTCGreedyDecoderTest, - testing::ValuesIn(generateCombinedParams()), ReferenceCTCGreedyDecoderTest::getTestCaseName); -} // namespace +INSTANTIATE_TEST_SUITE_P(smoke_CTCGreedyDecoder_With_Hardcoded_Refs, + ReferenceCTCGreedyDecoderTest, + testing::ValuesIn(generateCombinedParams()), + ReferenceCTCGreedyDecoderTest::getTestCaseName); +} // namespace diff --git a/src/plugins/template/tests/functional/op_reference/ctc_greedy_decoder_seq_len.cpp b/src/plugins/template/tests/functional/op_reference/ctc_greedy_decoder_seq_len.cpp index 7c287cf3843..2dadfd81d26 100644 --- a/src/plugins/template/tests/functional/op_reference/ctc_greedy_decoder_seq_len.cpp +++ b/src/plugins/template/tests/functional/op_reference/ctc_greedy_decoder_seq_len.cpp @@ -2,22 +2,32 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/ctc_greedy_decoder_seq_len.hpp" + #include -#include "openvino/op/ctc_greedy_decoder_seq_len.hpp" -#include "openvino/op/constant.hpp" #include "base_reference_test.hpp" +#include "openvino/op/constant.hpp" using namespace reference_tests; using namespace ov; namespace { struct CTCGreedyDecoderSeqLenParams { - CTCGreedyDecoderSeqLenParams( - const reference_tests::Tensor& dataTensor, const reference_tests::Tensor& seqLenTensor, const reference_tests::Tensor& blankIndexTensor, int64_t mergeRepeated, - const reference_tests::Tensor& expectedTensor, const reference_tests::Tensor& expectedTensor2, const std::string& testcaseName = "") : - dataTensor(dataTensor), seqLenTensor(seqLenTensor), blankIndexTensor(blankIndexTensor), mergeRepeated(mergeRepeated), - expectedTensor(expectedTensor), expectedTensor2(expectedTensor2), testcaseName(testcaseName) {} + CTCGreedyDecoderSeqLenParams(const reference_tests::Tensor& dataTensor, + const reference_tests::Tensor& seqLenTensor, + const reference_tests::Tensor& blankIndexTensor, + int64_t mergeRepeated, + const reference_tests::Tensor& expectedTensor, + const reference_tests::Tensor& expectedTensor2, + const std::string& testcaseName = "") + : dataTensor(dataTensor), + seqLenTensor(seqLenTensor), + blankIndexTensor(blankIndexTensor), + mergeRepeated(mergeRepeated), + expectedTensor(expectedTensor), + expectedTensor2(expectedTensor2), + testcaseName(testcaseName) {} reference_tests::Tensor dataTensor; reference_tests::Tensor seqLenTensor; @@ -29,11 +39,18 @@ struct CTCGreedyDecoderSeqLenParams { }; struct CTCGreedyDecoderSeqLenParamsNoOptionalInput { - CTCGreedyDecoderSeqLenParamsNoOptionalInput( - const reference_tests::Tensor& dataTensor, const reference_tests::Tensor& seqLenTensor, int64_t mergeRepeated, - const reference_tests::Tensor& expectedTensor, const reference_tests::Tensor& expectedTensor2, const std::string& testcaseName = "") : - dataTensor(dataTensor), seqLenTensor(seqLenTensor), mergeRepeated(mergeRepeated), - expectedTensor(expectedTensor), expectedTensor2(expectedTensor2), testcaseName(testcaseName) {} + CTCGreedyDecoderSeqLenParamsNoOptionalInput(const reference_tests::Tensor& dataTensor, + const reference_tests::Tensor& seqLenTensor, + int64_t mergeRepeated, + const reference_tests::Tensor& expectedTensor, + const reference_tests::Tensor& expectedTensor2, + const std::string& testcaseName = "") + : dataTensor(dataTensor), + seqLenTensor(seqLenTensor), + mergeRepeated(mergeRepeated), + expectedTensor(expectedTensor), + expectedTensor2(expectedTensor2), + testcaseName(testcaseName) {} reference_tests::Tensor dataTensor; reference_tests::Tensor seqLenTensor; @@ -43,7 +60,8 @@ struct CTCGreedyDecoderSeqLenParamsNoOptionalInput { std::string testcaseName; }; -class ReferenceCTCGreedyDecoderSeqLenTest : public testing::TestWithParam, public CommonReferenceTest { +class ReferenceCTCGreedyDecoderSeqLenTest : public testing::TestWithParam, + public CommonReferenceTest { public: void SetUp() override { auto params = GetParam(); @@ -77,16 +95,19 @@ private: std::shared_ptr function; const auto data = std::make_shared(params.dataTensor.type, params.dataTensor.shape); const auto seq_len = std::make_shared(params.seqLenTensor.type, params.seqLenTensor.shape); - auto blank_index = std::make_shared(params.blankIndexTensor.type, params.blankIndexTensor.shape, + auto blank_index = std::make_shared(params.blankIndexTensor.type, + params.blankIndexTensor.shape, params.blankIndexTensor.data.data()); - const auto decoder = std::make_shared(data, seq_len, blank_index, params.mergeRepeated); + const auto decoder = + std::make_shared(data, seq_len, blank_index, params.mergeRepeated); function = std::make_shared(decoder->outputs(), ParameterVector{data, seq_len}); return function; } }; -class ReferenceCTCGreedyDecoderSeqLenTestNoOptionalInput : - public testing::TestWithParam, public CommonReferenceTest { +class ReferenceCTCGreedyDecoderSeqLenTestNoOptionalInput + : public testing::TestWithParam, + public CommonReferenceTest { public: void SetUp() override { auto params = GetParam(); @@ -135,7 +156,7 @@ TEST_P(ReferenceCTCGreedyDecoderSeqLenTestNoOptionalInput, CompareWithRefs) { template std::vector generateParams() { using T = typename element_type_traits::value_type; - std::vector params { + std::vector params{ CTCGreedyDecoderSeqLenParams( reference_tests::Tensor(ET, {1, 3, 3}, std::vector{0.1f, 0.2f, 0.f, 0.4f, 0.3f, 0.f, 0.5f, 0.6f, 0.f}), reference_tests::Tensor(element::i32, {1}, std::vector{2}), @@ -153,8 +174,26 @@ std::vector generateParams() { reference_tests::Tensor(element::i32, {1}, std::vector{2}), "evaluate_ctc_greedy_decoder_seq_len_merge"), CTCGreedyDecoderSeqLenParams( - reference_tests::Tensor(ET, {2, 3, 3}, std::vector{0.1f, 0.2f, 0.f, 0.15f, 0.25f, 0.f, 0.4f, 0.3f, 0.f, - 0.45f, 0.35f, 0.f, 0.5f, 0.6f, 0.f, 0.55f, 0.65f, 0.f}), + reference_tests::Tensor(ET, + {2, 3, 3}, + std::vector{0.1f, + 0.2f, + 0.f, + 0.15f, + 0.25f, + 0.f, + 0.4f, + 0.3f, + 0.f, + 0.45f, + 0.35f, + 0.f, + 0.5f, + 0.6f, + 0.f, + 0.55f, + 0.65f, + 0.f}), reference_tests::Tensor(element::i32, {2}, std::vector{1, 1}), reference_tests::Tensor(element::i32, {}, std::vector{2}), false, @@ -162,9 +201,10 @@ std::vector generateParams() { reference_tests::Tensor(element::i32, {2}, std::vector{1, 1}), "evaluate_ctc_greedy_decoder_seq_len_multiple_batches"), CTCGreedyDecoderSeqLenParams( - reference_tests::Tensor(ET, {3, 3, 3}, std::vector{0.1f, 0.2f, 0.f, 0.15f, 0.25f, 0.f, 0.4f, 0.3f, 0.f, - 0.45f, 0.35f, 0.f, 0.5f, 0.6f, 0.f, 0.55f, 0.65f, 0.f, - 0.1f, 0.2f, 0.f, 0.15f, 0.25f, 0.f, 0.4f, 0.3f, 0.f}), + reference_tests::Tensor(ET, {3, 3, 3}, std::vector{0.1f, 0.2f, 0.f, 0.15f, 0.25f, 0.f, 0.4f, + 0.3f, 0.f, 0.45f, 0.35f, 0.f, 0.5f, 0.6f, + 0.f, 0.55f, 0.65f, 0.f, 0.1f, 0.2f, 0.f, + 0.15f, 0.25f, 0.f, 0.4f, 0.3f, 0.f}), reference_tests::Tensor(element::i32, {3}, std::vector{2, 3, 1}), reference_tests::Tensor(element::i32, {}, std::vector{2}), false, @@ -176,7 +216,7 @@ std::vector generateParams() { } std::vector generateCombinedParams() { - const std::vector> generatedParams { + const std::vector> generatedParams{ generateParams(), generateParams(), generateParams(), @@ -193,7 +233,7 @@ std::vector generateCombinedParams() { template std::vector generateParamsNoOptionalInput() { using T = typename element_type_traits::value_type; - std::vector params { + std::vector params{ CTCGreedyDecoderSeqLenParamsNoOptionalInput( reference_tests::Tensor(ET, {1, 3, 3}, std::vector{0.1f, 0.2f, 0.f, 0.4f, 0.3f, 0.f, 0.5f, 0.6f, 0.f}), reference_tests::Tensor(element::i32, {1}, std::vector{2}), @@ -206,7 +246,7 @@ std::vector generateParamsNoOptiona } std::vector generateCombinedParamsNoOptionalInput() { - const std::vector> generatedParams { + const std::vector> generatedParams{ generateParamsNoOptionalInput(), generateParamsNoOptionalInput(), generateParamsNoOptionalInput(), @@ -220,9 +260,13 @@ std::vector generateCombinedParamsN return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_CTCGreedyDecoderSeqLen_With_Hardcoded_Refs, ReferenceCTCGreedyDecoderSeqLenTest, - testing::ValuesIn(generateCombinedParams()), ReferenceCTCGreedyDecoderSeqLenTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_CTCGreedyDecoderSeqLen_With_Hardcoded_Refs, + ReferenceCTCGreedyDecoderSeqLenTest, + testing::ValuesIn(generateCombinedParams()), + ReferenceCTCGreedyDecoderSeqLenTest::getTestCaseName); -INSTANTIATE_TEST_SUITE_P(smoke_CTCGreedyDecoderSeqLen_With_Hardcoded_Refs, ReferenceCTCGreedyDecoderSeqLenTestNoOptionalInput, - testing::ValuesIn(generateCombinedParamsNoOptionalInput()), ReferenceCTCGreedyDecoderSeqLenTestNoOptionalInput::getTestCaseName); -} // namespace +INSTANTIATE_TEST_SUITE_P(smoke_CTCGreedyDecoderSeqLen_With_Hardcoded_Refs, + ReferenceCTCGreedyDecoderSeqLenTestNoOptionalInput, + testing::ValuesIn(generateCombinedParamsNoOptionalInput()), + ReferenceCTCGreedyDecoderSeqLenTestNoOptionalInput::getTestCaseName); +} // namespace diff --git a/src/plugins/template/tests/functional/op_reference/ctc_loss.cpp b/src/plugins/template/tests/functional/op_reference/ctc_loss.cpp index b432f1d4080..4aec555d6db 100644 --- a/src/plugins/template/tests/functional/op_reference/ctc_loss.cpp +++ b/src/plugins/template/tests/functional/op_reference/ctc_loss.cpp @@ -2,9 +2,10 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/ctc_loss.hpp" + #include -#include "openvino/op/ctc_loss.hpp" #include "base_reference_test.hpp" using namespace reference_tests; @@ -13,8 +14,15 @@ using namespace ov; namespace { struct CTCLossParams { - CTCLossParams(const bool collapseRepeated, const bool mergeRepeated, const bool findUnique, const reference_tests::Tensor& logitsTensor, const reference_tests::Tensor& logitsLenTensor, - const reference_tests::Tensor& labelsTensor, const reference_tests::Tensor& labelsLenTensor, const reference_tests::Tensor& blankIdxTensor, const reference_tests::Tensor& expectedTensor) + CTCLossParams(const bool collapseRepeated, + const bool mergeRepeated, + const bool findUnique, + const reference_tests::Tensor& logitsTensor, + const reference_tests::Tensor& logitsLenTensor, + const reference_tests::Tensor& labelsTensor, + const reference_tests::Tensor& labelsLenTensor, + const reference_tests::Tensor& blankIdxTensor, + const reference_tests::Tensor& expectedTensor) : preprocessCollapseRepeated(collapseRepeated), ctcMergeRepeated(mergeRepeated), unique(findUnique), @@ -41,7 +49,11 @@ public: void SetUp() override { auto params = GetParam(); function = CreateFunction(params); - inputData = {params.logits.data, params.logitsLen.data, params.labels.data, params.labelsLen.data, params.blankIdx.data}; + inputData = {params.logits.data, + params.logitsLen.data, + params.labels.data, + params.labelsLen.data, + params.blankIdx.data}; refOutData = {params.expected.data}; } static std::string getTestCaseName(const testing::TestParamInfo& obj) { @@ -68,8 +80,15 @@ private: const auto D = std::make_shared(params.labelsLen.type, params.labelsLen.shape); // labelsLen const auto E = std::make_shared(params.blankIdx.type, params.blankIdx.shape); // blankIdx - const auto ctcLoss = std::make_shared(A, B, C, D, E, params.preprocessCollapseRepeated, params.ctcMergeRepeated, params.unique); - return std::make_shared(NodeVector {ctcLoss}, ParameterVector {A, B, C, D, E}); + const auto ctcLoss = std::make_shared(A, + B, + C, + D, + E, + params.preprocessCollapseRepeated, + params.ctcMergeRepeated, + params.unique); + return std::make_shared(NodeVector{ctcLoss}, ParameterVector{A, B, C, D, E}); } }; @@ -78,91 +97,153 @@ TEST_P(ReferenceCTCLossLayerTest, CompareWithRefs) { } INSTANTIATE_TEST_SUITE_P( - smoke_CTCLoss_With_Hardcoded_Refs, ReferenceCTCLossLayerTest, - ::testing::Values(CTCLossParams(false, false, false, // collapse repeated, merge repeated, unique - reference_tests::Tensor({2, 3, 3}, element::f32, std::vector {0, 1, 8, 5, 5, 2, 0, 7, 7, 10, 4, 5, 9, 0, 0, 5, 7, 0}), // logits - reference_tests::Tensor({2}, element::i32, std::vector {3, 3}), // logitsLen - reference_tests::Tensor({2, 3}, element::i32, std::vector {0, 1, 2, 1, 1, 1}), // labels - reference_tests::Tensor({2}, element::i32, std::vector {2, 1}), // labelsLen - reference_tests::Tensor({}, element::i32, std::vector {2}), // blankIdx - reference_tests::Tensor({2}, element::f32, std::vector {1.41223f, 14.1359f})), // refOut - CTCLossParams(false, false, true, // collapse repeated, merge repeated, unique - reference_tests::Tensor({2, 3, 3}, element::f32, std::vector {0, 1, 8, 5, 5, 2, 0, 7, 7, 10, 4, 5, 9, 0, 0, 5, 7, 0}), // logits - reference_tests::Tensor({2}, element::i32, std::vector {3, 3}), // logitsLen - reference_tests::Tensor({2, 3}, element::i32, std::vector {0, 1, 2, 1, 1, 1}), // labels - reference_tests::Tensor({2}, element::i32, std::vector {2, 1}), // labelsLen - reference_tests::Tensor({}, element::i32, std::vector {2}), // blankIdx - reference_tests::Tensor({2}, element::f32, std::vector {1.41223f, 14.1359f})), // refOut - CTCLossParams(false, true, false, // collapse repeated, merge repeated, unique - reference_tests::Tensor({2, 3, 3}, element::f32, std::vector {0, 1, 8, 5, 5, 2, 0, 7, 7, 10, 4, 5, 9, 0, 0, 5, 7, 0}), // logits - reference_tests::Tensor({2}, element::i32, std::vector {3, 3}), // logitsLen - reference_tests::Tensor({2, 3}, element::i32, std::vector {0, 1, 2, 1, 1, 1}), // labels - reference_tests::Tensor({2}, element::i32, std::vector {2, 1}), // labelsLen - reference_tests::Tensor({}, element::i32, std::vector {2}), // blankIdx - reference_tests::Tensor({2}, element::f32, std::vector {1.41156f, 13.2745f})), // refOut - CTCLossParams(true, false, false, // collapse repeated, merge repeated, unique - reference_tests::Tensor({2, 3, 3}, element::f32, std::vector {0, 1, 8, 5, 5, 2, 0, 7, 7, 10, 4, 5, 9, 0, 0, 5, 7, 0}), // logits - reference_tests::Tensor({2}, element::i32, std::vector {3, 3}), // logitsLen - reference_tests::Tensor({2, 3}, element::i32, std::vector {0, 1, 2, 1, 1, 1}), // labels - reference_tests::Tensor({2}, element::i32, std::vector {2, 1}), // labelsLen - reference_tests::Tensor({}, element::i32, std::vector {2}), // blankIdx - reference_tests::Tensor({2}, element::f32, std::vector {1.41223f, 14.1359f})), // refOut - CTCLossParams(false, true, true, // collapse repeated, merge repeated, unique - reference_tests::Tensor({2, 3, 3}, element::f32, std::vector {0, 1, 8, 5, 5, 2, 0, 7, 7, 10, 4, 5, 9, 0, 0, 5, 7, 0}), // logits - reference_tests::Tensor({2}, element::i32, std::vector {3, 3}), // logitsLen - reference_tests::Tensor({2, 3}, element::i32, std::vector {0, 1, 2, 1, 1, 1}), // labels - reference_tests::Tensor({2}, element::i32, std::vector {2, 1}), // labelsLen - reference_tests::Tensor({}, element::i32, std::vector {2}), // blankIdx - reference_tests::Tensor({2}, element::f32, std::vector {1.41156f, 13.2745f})), // refOut - CTCLossParams(true, true, true, // collapse repeated, merge repeated, unique - reference_tests::Tensor({2, 3, 3}, element::f32, std::vector {0, 1, 8, 5, 5, 2, 0, 7, 7, 10, 4, 5, 9, 0, 0, 5, 7, 0}), // logits - reference_tests::Tensor({2}, element::i32, std::vector {3, 3}), // logitsLen - reference_tests::Tensor({2, 3}, element::i32, std::vector {0, 1, 2, 1, 1, 1}), // labels - reference_tests::Tensor({2}, element::i32, std::vector {2, 1}), // labelsLen - reference_tests::Tensor({}, element::i32, std::vector {2}), // blankIdx - reference_tests::Tensor({2}, element::f32, std::vector {1.41223f, 13.2745f})), // refOut - // floating point type - float16 - CTCLossParams(false, false, false, // collapse repeated, merge repeated, unique - reference_tests::Tensor({2, 3, 3}, element::f16, std::vector {0, 1, 8, 5, 5, 2, 0, 7, 7, 10, 4, 5, 9, 0, 0, 5, 7, 0}), // logits - reference_tests::Tensor({2}, element::i32, std::vector {3, 3}), // logitsLen - reference_tests::Tensor({2, 3}, element::i32, std::vector {0, 1, 2, 1, 1, 1}), // labels - reference_tests::Tensor({2}, element::i32, std::vector {2, 1}), // labelsLen - reference_tests::Tensor({}, element::i32, std::vector {2}), // blankIdx - reference_tests::Tensor({2}, element::f16, std::vector {1.41223f, 14.1359f})), // refOut - CTCLossParams(false, false, true, // collapse repeated, merge repeated, unique - reference_tests::Tensor({2, 3, 3}, element::f16, std::vector {0, 1, 8, 5, 5, 2, 0, 7, 7, 10, 4, 5, 9, 0, 0, 5, 7, 0}), // logits - reference_tests::Tensor({2}, element::i32, std::vector {3, 3}), // logitsLen - reference_tests::Tensor({2, 3}, element::i32, std::vector {0, 1, 2, 1, 1, 1}), // labels - reference_tests::Tensor({2}, element::i32, std::vector {2, 1}), // labelsLen - reference_tests::Tensor({}, element::i32, std::vector {2}), // blankIdx - reference_tests::Tensor({2}, element::f16, std::vector {1.41223f, 14.1359f})), // refOut - CTCLossParams(false, true, false, // collapse repeated, merge repeated, unique - reference_tests::Tensor({2, 3, 3}, element::f16, std::vector {0, 1, 8, 5, 5, 2, 0, 7, 7, 10, 4, 5, 9, 0, 0, 5, 7, 0}), // logits - reference_tests::Tensor({2}, element::i32, std::vector {3, 3}), // logitsLen - reference_tests::Tensor({2, 3}, element::i32, std::vector {0, 1, 2, 1, 1, 1}), // labels - reference_tests::Tensor({2}, element::i32, std::vector {2, 1}), // labelsLen - reference_tests::Tensor({}, element::i32, std::vector {2}), // blankIdx - reference_tests::Tensor({2}, element::f16, std::vector {1.41156f, 13.2745f})), // refOut - CTCLossParams(true, false, false, // collapse repeated, merge repeated, unique - reference_tests::Tensor({2, 3, 3}, element::f16, std::vector {0, 1, 8, 5, 5, 2, 0, 7, 7, 10, 4, 5, 9, 0, 0, 5, 7, 0}), // logits - reference_tests::Tensor({2}, element::i32, std::vector {3, 3}), // logitsLen - reference_tests::Tensor({2, 3}, element::i32, std::vector {0, 1, 2, 1, 1, 1}), // labels - reference_tests::Tensor({2}, element::i32, std::vector {2, 1}), // labelsLen - reference_tests::Tensor({}, element::i32, std::vector {2}), // blankIdx - reference_tests::Tensor({2}, element::f16, std::vector {1.41223f, 14.1359f})), // refOut - CTCLossParams(false, true, true, // collapse repeated, merge repeated, unique - reference_tests::Tensor({2, 3, 3}, element::f16, std::vector {0, 1, 8, 5, 5, 2, 0, 7, 7, 10, 4, 5, 9, 0, 0, 5, 7, 0}), // logits - reference_tests::Tensor({2}, element::i32, std::vector {3, 3}), // logitsLen - reference_tests::Tensor({2, 3}, element::i32, std::vector {0, 1, 2, 1, 1, 1}), // labels - reference_tests::Tensor({2}, element::i32, std::vector {2, 1}), // labelsLen - reference_tests::Tensor({}, element::i32, std::vector {2}), // blankIdx - reference_tests::Tensor({2}, element::f16, std::vector {1.41156f, 13.2745f})), // refOut - CTCLossParams(true, true, true, // collapse repeated, merge repeated, unique - reference_tests::Tensor({2, 3, 3}, element::f16, std::vector {0, 1, 8, 5, 5, 2, 0, 7, 7, 10, 4, 5, 9, 0, 0, 5, 7, 0}), // logits - reference_tests::Tensor({2}, element::i32, std::vector {3, 3}), // logitsLen - reference_tests::Tensor({2, 3}, element::i32, std::vector {0, 1, 2, 1, 1, 1}), // labels - reference_tests::Tensor({2}, element::i32, std::vector {2, 1}), // labelsLen - reference_tests::Tensor({}, element::i32, std::vector {2}), // blankIdx - reference_tests::Tensor({2}, element::f16, std::vector {1.41223f, 13.2745f}))), // refOut + smoke_CTCLoss_With_Hardcoded_Refs, + ReferenceCTCLossLayerTest, + ::testing::Values( + CTCLossParams(false, + false, + false, // collapse repeated, merge repeated, unique + reference_tests::Tensor( + {2, 3, 3}, + element::f32, + std::vector{0, 1, 8, 5, 5, 2, 0, 7, 7, 10, 4, 5, 9, 0, 0, 5, 7, 0}), // logits + reference_tests::Tensor({2}, element::i32, std::vector{3, 3}), // logitsLen + reference_tests::Tensor({2, 3}, element::i32, std::vector{0, 1, 2, 1, 1, 1}), // labels + reference_tests::Tensor({2}, element::i32, std::vector{2, 1}), // labelsLen + reference_tests::Tensor({}, element::i32, std::vector{2}), // blankIdx + reference_tests::Tensor({2}, element::f32, std::vector{1.41223f, 14.1359f})), // refOut + CTCLossParams(false, + false, + true, // collapse repeated, merge repeated, unique + reference_tests::Tensor( + {2, 3, 3}, + element::f32, + std::vector{0, 1, 8, 5, 5, 2, 0, 7, 7, 10, 4, 5, 9, 0, 0, 5, 7, 0}), // logits + reference_tests::Tensor({2}, element::i32, std::vector{3, 3}), // logitsLen + reference_tests::Tensor({2, 3}, element::i32, std::vector{0, 1, 2, 1, 1, 1}), // labels + reference_tests::Tensor({2}, element::i32, std::vector{2, 1}), // labelsLen + reference_tests::Tensor({}, element::i32, std::vector{2}), // blankIdx + reference_tests::Tensor({2}, element::f32, std::vector{1.41223f, 14.1359f})), // refOut + CTCLossParams(false, + true, + false, // collapse repeated, merge repeated, unique + reference_tests::Tensor( + {2, 3, 3}, + element::f32, + std::vector{0, 1, 8, 5, 5, 2, 0, 7, 7, 10, 4, 5, 9, 0, 0, 5, 7, 0}), // logits + reference_tests::Tensor({2}, element::i32, std::vector{3, 3}), // logitsLen + reference_tests::Tensor({2, 3}, element::i32, std::vector{0, 1, 2, 1, 1, 1}), // labels + reference_tests::Tensor({2}, element::i32, std::vector{2, 1}), // labelsLen + reference_tests::Tensor({}, element::i32, std::vector{2}), // blankIdx + reference_tests::Tensor({2}, element::f32, std::vector{1.41156f, 13.2745f})), // refOut + CTCLossParams(true, + false, + false, // collapse repeated, merge repeated, unique + reference_tests::Tensor( + {2, 3, 3}, + element::f32, + std::vector{0, 1, 8, 5, 5, 2, 0, 7, 7, 10, 4, 5, 9, 0, 0, 5, 7, 0}), // logits + reference_tests::Tensor({2}, element::i32, std::vector{3, 3}), // logitsLen + reference_tests::Tensor({2, 3}, element::i32, std::vector{0, 1, 2, 1, 1, 1}), // labels + reference_tests::Tensor({2}, element::i32, std::vector{2, 1}), // labelsLen + reference_tests::Tensor({}, element::i32, std::vector{2}), // blankIdx + reference_tests::Tensor({2}, element::f32, std::vector{1.41223f, 14.1359f})), // refOut + CTCLossParams(false, + true, + true, // collapse repeated, merge repeated, unique + reference_tests::Tensor( + {2, 3, 3}, + element::f32, + std::vector{0, 1, 8, 5, 5, 2, 0, 7, 7, 10, 4, 5, 9, 0, 0, 5, 7, 0}), // logits + reference_tests::Tensor({2}, element::i32, std::vector{3, 3}), // logitsLen + reference_tests::Tensor({2, 3}, element::i32, std::vector{0, 1, 2, 1, 1, 1}), // labels + reference_tests::Tensor({2}, element::i32, std::vector{2, 1}), // labelsLen + reference_tests::Tensor({}, element::i32, std::vector{2}), // blankIdx + reference_tests::Tensor({2}, element::f32, std::vector{1.41156f, 13.2745f})), // refOut + CTCLossParams(true, + true, + true, // collapse repeated, merge repeated, unique + reference_tests::Tensor( + {2, 3, 3}, + element::f32, + std::vector{0, 1, 8, 5, 5, 2, 0, 7, 7, 10, 4, 5, 9, 0, 0, 5, 7, 0}), // logits + reference_tests::Tensor({2}, element::i32, std::vector{3, 3}), // logitsLen + reference_tests::Tensor({2, 3}, element::i32, std::vector{0, 1, 2, 1, 1, 1}), // labels + reference_tests::Tensor({2}, element::i32, std::vector{2, 1}), // labelsLen + reference_tests::Tensor({}, element::i32, std::vector{2}), // blankIdx + reference_tests::Tensor({2}, element::f32, std::vector{1.41223f, 13.2745f})), // refOut + // floating point type - float16 + CTCLossParams(false, + false, + false, // collapse repeated, merge repeated, unique + reference_tests::Tensor( + {2, 3, 3}, + element::f16, + std::vector{0, 1, 8, 5, 5, 2, 0, 7, 7, 10, 4, 5, 9, 0, 0, 5, 7, 0}), // logits + reference_tests::Tensor({2}, element::i32, std::vector{3, 3}), // logitsLen + reference_tests::Tensor({2, 3}, element::i32, std::vector{0, 1, 2, 1, 1, 1}), // labels + reference_tests::Tensor({2}, element::i32, std::vector{2, 1}), // labelsLen + reference_tests::Tensor({}, element::i32, std::vector{2}), // blankIdx + reference_tests::Tensor({2}, element::f16, std::vector{1.41223f, 14.1359f})), // refOut + CTCLossParams(false, + false, + true, // collapse repeated, merge repeated, unique + reference_tests::Tensor( + {2, 3, 3}, + element::f16, + std::vector{0, 1, 8, 5, 5, 2, 0, 7, 7, 10, 4, 5, 9, 0, 0, 5, 7, 0}), // logits + reference_tests::Tensor({2}, element::i32, std::vector{3, 3}), // logitsLen + reference_tests::Tensor({2, 3}, element::i32, std::vector{0, 1, 2, 1, 1, 1}), // labels + reference_tests::Tensor({2}, element::i32, std::vector{2, 1}), // labelsLen + reference_tests::Tensor({}, element::i32, std::vector{2}), // blankIdx + reference_tests::Tensor({2}, element::f16, std::vector{1.41223f, 14.1359f})), // refOut + CTCLossParams(false, + true, + false, // collapse repeated, merge repeated, unique + reference_tests::Tensor( + {2, 3, 3}, + element::f16, + std::vector{0, 1, 8, 5, 5, 2, 0, 7, 7, 10, 4, 5, 9, 0, 0, 5, 7, 0}), // logits + reference_tests::Tensor({2}, element::i32, std::vector{3, 3}), // logitsLen + reference_tests::Tensor({2, 3}, element::i32, std::vector{0, 1, 2, 1, 1, 1}), // labels + reference_tests::Tensor({2}, element::i32, std::vector{2, 1}), // labelsLen + reference_tests::Tensor({}, element::i32, std::vector{2}), // blankIdx + reference_tests::Tensor({2}, element::f16, std::vector{1.41156f, 13.2745f})), // refOut + CTCLossParams(true, + false, + false, // collapse repeated, merge repeated, unique + reference_tests::Tensor( + {2, 3, 3}, + element::f16, + std::vector{0, 1, 8, 5, 5, 2, 0, 7, 7, 10, 4, 5, 9, 0, 0, 5, 7, 0}), // logits + reference_tests::Tensor({2}, element::i32, std::vector{3, 3}), // logitsLen + reference_tests::Tensor({2, 3}, element::i32, std::vector{0, 1, 2, 1, 1, 1}), // labels + reference_tests::Tensor({2}, element::i32, std::vector{2, 1}), // labelsLen + reference_tests::Tensor({}, element::i32, std::vector{2}), // blankIdx + reference_tests::Tensor({2}, element::f16, std::vector{1.41223f, 14.1359f})), // refOut + CTCLossParams(false, + true, + true, // collapse repeated, merge repeated, unique + reference_tests::Tensor( + {2, 3, 3}, + element::f16, + std::vector{0, 1, 8, 5, 5, 2, 0, 7, 7, 10, 4, 5, 9, 0, 0, 5, 7, 0}), // logits + reference_tests::Tensor({2}, element::i32, std::vector{3, 3}), // logitsLen + reference_tests::Tensor({2, 3}, element::i32, std::vector{0, 1, 2, 1, 1, 1}), // labels + reference_tests::Tensor({2}, element::i32, std::vector{2, 1}), // labelsLen + reference_tests::Tensor({}, element::i32, std::vector{2}), // blankIdx + reference_tests::Tensor({2}, element::f16, std::vector{1.41156f, 13.2745f})), // refOut + CTCLossParams(true, + true, + true, // collapse repeated, merge repeated, unique + reference_tests::Tensor( + {2, 3, 3}, + element::f16, + std::vector{0, 1, 8, 5, 5, 2, 0, 7, 7, 10, 4, 5, 9, 0, 0, 5, 7, 0}), // logits + reference_tests::Tensor({2}, element::i32, std::vector{3, 3}), // logitsLen + reference_tests::Tensor({2, 3}, element::i32, std::vector{0, 1, 2, 1, 1, 1}), // labels + reference_tests::Tensor({2}, element::i32, std::vector{2, 1}), // labelsLen + reference_tests::Tensor({}, element::i32, std::vector{2}), // blankIdx + reference_tests::Tensor({2}, element::f16, std::vector{1.41223f, 13.2745f}))), // refOut ReferenceCTCLossLayerTest::getTestCaseName); } // namespace diff --git a/src/plugins/template/tests/functional/op_reference/cum_sum.cpp b/src/plugins/template/tests/functional/op_reference/cum_sum.cpp index dee306417ee..51ee19e188c 100644 --- a/src/plugins/template/tests/functional/op_reference/cum_sum.cpp +++ b/src/plugins/template/tests/functional/op_reference/cum_sum.cpp @@ -2,9 +2,10 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/cum_sum.hpp" + #include -#include "openvino/op/cum_sum.hpp" #include "base_reference_test.hpp" using namespace reference_tests; @@ -14,8 +15,15 @@ namespace { struct CumSumParams { // Custom axis input and attributes template - CumSumParams(const PartialShape& shape, const element::Type& iType, const std::vector& iValues, const std::vector& oValues, const bool execlusive, - const bool reverse, const element::Type& axisType, AT axisVal, const PartialShape& axisShape) + CumSumParams(const PartialShape& shape, + const element::Type& iType, + const std::vector& iValues, + const std::vector& oValues, + const bool execlusive, + const bool reverse, + const element::Type& axisType, + AT axisVal, + const PartialShape& axisShape) : execlusive(execlusive), reverse(reverse), axisValue(axisVal), @@ -24,14 +32,17 @@ struct CumSumParams { axisType(axisType), inType(iType), outType(iType), - axisData(CreateTensor(axisType, std::vector {axisVal})), + axisData(CreateTensor(axisType, std::vector{axisVal})), inputData(CreateTensor(iType, iValues)), refData(CreateTensor(iType, oValues)), testDefaults(false) {} // Default axis input and attributes template - CumSumParams(const PartialShape& shape, const element::Type& iType, const std::vector& iValues, const std::vector& oValues) + CumSumParams(const PartialShape& shape, + const element::Type& iType, + const std::vector& iValues, + const std::vector& oValues) : inShape(shape), axisType(element::i32), inType(iType), @@ -65,7 +76,12 @@ public: inputData = {params.inputData}; refOutData = {params.refData}; } else { - function = CreateFunction(params.inShape, params.inType, params.axisShape, params.axisType, params.execlusive, params.reverse); + function = CreateFunction(params.inShape, + params.inType, + params.axisShape, + params.axisType, + params.execlusive, + params.reverse); inputData = {params.inputData, params.axisData}; refOutData = {params.refData}; } @@ -85,18 +101,22 @@ public: } private: - static std::shared_ptr CreateFunction(const PartialShape& data_shape, const element::Type& data_type, const PartialShape& axis_shape, - const element::Type& axis_type, const bool execlusive, const bool reverse) { + static std::shared_ptr CreateFunction(const PartialShape& data_shape, + const element::Type& data_type, + const PartialShape& axis_shape, + const element::Type& axis_type, + const bool execlusive, + const bool reverse) { const auto data_param = std::make_shared(data_type, data_shape); const auto axis_param = std::make_shared(axis_type, axis_shape); const auto cum_sum = std::make_shared(data_param, axis_param, execlusive, reverse); - return std::make_shared(NodeVector {cum_sum}, ParameterVector {data_param, axis_param}); + return std::make_shared(NodeVector{cum_sum}, ParameterVector{data_param, axis_param}); } static std::shared_ptr CreateFunction(const PartialShape& data_shape, const element::Type& data_type) { const auto data_param = std::make_shared(data_type, data_shape); const auto cum_sum = std::make_shared(data_param); - return std::make_shared(NodeVector {cum_sum}, ParameterVector {data_param}); + return std::make_shared(NodeVector{cum_sum}, ParameterVector{data_param}); } }; @@ -107,73 +127,176 @@ TEST_P(ReferenceCumSumLayerTest, CompareWithHardcodedRefs) { template std::vector generateCumSumParams(const element::Type& type) { using T = typename element_type_traits::value_type; - std::vector opParams { + std::vector opParams{ // Default axis input and attributes - CumSumParams(PartialShape {1}, type, std::vector {3}, std::vector {3}), - CumSumParams(PartialShape {6}, type, std::vector {1, 2, 3, 4, 5, 6}, std::vector {1, 3, 6, 10, 15, 21}), - CumSumParams(PartialShape {2, 4}, type, std::vector {0, 1, 2, 3, 4, 5, 6, 7}, std::vector {0, 1, 2, 3, 4, 6, 8, 10}), + CumSumParams(PartialShape{1}, type, std::vector{3}, std::vector{3}), + CumSumParams(PartialShape{6}, type, std::vector{1, 2, 3, 4, 5, 6}, std::vector{1, 3, 6, 10, 15, 21}), + CumSumParams(PartialShape{2, 4}, + type, + std::vector{0, 1, 2, 3, 4, 5, 6, 7}, + std::vector{0, 1, 2, 3, 4, 6, 8, 10}), // Custom axis input and attributes - CumSumParams(PartialShape {6}, type, std::vector {1, 2, 3, 4, 5, 6}, std::vector {1, 3, 6, 10, 15, 21}, false, false, element::i32, int32_t(0), - PartialShape {}), // axis i32 - CumSumParams(PartialShape {6}, type, std::vector {1, 2, 3, 4, 5, 6}, std::vector {1, 3, 6, 10, 15, 21}, false, false, element::i64, int64_t(0), - PartialShape {}), // axis i64 - CumSumParams(PartialShape {6}, type, std::vector {1, 2, 3, 4, 5, 6}, std::vector {21, 20, 18, 15, 11, 6}, false, true, element::i64, int64_t(0), - PartialShape {}), - CumSumParams(PartialShape {6}, type, std::vector {1, 2, 3, 4, 5, 6}, std::vector {0, 1, 3, 6, 10, 15}, true, false, element::i64, int64_t(0), - PartialShape {}), - CumSumParams(PartialShape {6}, type, std::vector {1, 2, 3, 4, 5, 6}, std::vector {20, 18, 15, 11, 6, 0}, true, true, element::i64, int64_t(0), - PartialShape {}), + CumSumParams(PartialShape{6}, + type, + std::vector{1, 2, 3, 4, 5, 6}, + std::vector{1, 3, 6, 10, 15, 21}, + false, + false, + element::i32, + int32_t(0), + PartialShape{}), // axis i32 + CumSumParams(PartialShape{6}, + type, + std::vector{1, 2, 3, 4, 5, 6}, + std::vector{1, 3, 6, 10, 15, 21}, + false, + false, + element::i64, + int64_t(0), + PartialShape{}), // axis i64 + CumSumParams(PartialShape{6}, + type, + std::vector{1, 2, 3, 4, 5, 6}, + std::vector{21, 20, 18, 15, 11, 6}, + false, + true, + element::i64, + int64_t(0), + PartialShape{}), + CumSumParams(PartialShape{6}, + type, + std::vector{1, 2, 3, 4, 5, 6}, + std::vector{0, 1, 3, 6, 10, 15}, + true, + false, + element::i64, + int64_t(0), + PartialShape{}), + CumSumParams(PartialShape{6}, + type, + std::vector{1, 2, 3, 4, 5, 6}, + std::vector{20, 18, 15, 11, 6, 0}, + true, + true, + element::i64, + int64_t(0), + PartialShape{}), - CumSumParams(PartialShape {2, 4}, type, std::vector {0, 1, 2, 3, 4, 5, 6, 7}, std::vector {0, 1, 2, 3, 4, 6, 8, 10}, false, false, element::i32, - int32_t(0), PartialShape {}), - CumSumParams(PartialShape {2, 4}, type, std::vector {0, 1, 2, 3, 4, 5, 6, 7}, std::vector {4, 6, 8, 10, 4, 5, 6, 7}, false, true, element::i32, - int32_t(0), PartialShape {}), - CumSumParams(PartialShape {2, 4}, type, std::vector {0, 1, 2, 3, 4, 5, 6, 7}, std::vector {0, 0, 0, 0, 0, 1, 2, 3}, true, false, element::i32, - int32_t(0), PartialShape {}), - CumSumParams(PartialShape {2, 4}, type, std::vector {0, 1, 2, 3, 4, 5, 6, 7}, std::vector {4, 5, 6, 7, 0, 0, 0, 0}, true, true, element::i32, - int32_t(0), PartialShape {}), - CumSumParams(PartialShape {2, 4}, type, std::vector {0, 1, 2, 3, 4, 5, 6, 7}, std::vector {0, 1, 3, 6, 4, 9, 15, 22}, false, false, element::i32, - int32_t(1), PartialShape {}), - CumSumParams(PartialShape {2, 4}, type, std::vector {0, 1, 2, 3, 4, 5, 6, 7}, std::vector {0, 0, 1, 3, 0, 4, 9, 15}, true, false, element::i32, - int32_t(1), PartialShape {}), - CumSumParams(PartialShape {2, 4}, type, std::vector {0, 1, 2, 3, 4, 5, 6, 7}, std::vector {6, 6, 5, 3, 22, 18, 13, 7}, false, true, element::i32, - int32_t(1), PartialShape {}), - CumSumParams(PartialShape {2, 4}, type, std::vector {0, 1, 2, 3, 4, 5, 6, 7}, std::vector {6, 5, 3, 0, 18, 13, 7, 0}, true, true, element::i32, - int32_t(1), PartialShape {}), + CumSumParams(PartialShape{2, 4}, + type, + std::vector{0, 1, 2, 3, 4, 5, 6, 7}, + std::vector{0, 1, 2, 3, 4, 6, 8, 10}, + false, + false, + element::i32, + int32_t(0), + PartialShape{}), + CumSumParams(PartialShape{2, 4}, + type, + std::vector{0, 1, 2, 3, 4, 5, 6, 7}, + std::vector{4, 6, 8, 10, 4, 5, 6, 7}, + false, + true, + element::i32, + int32_t(0), + PartialShape{}), + CumSumParams(PartialShape{2, 4}, + type, + std::vector{0, 1, 2, 3, 4, 5, 6, 7}, + std::vector{0, 0, 0, 0, 0, 1, 2, 3}, + true, + false, + element::i32, + int32_t(0), + PartialShape{}), + CumSumParams(PartialShape{2, 4}, + type, + std::vector{0, 1, 2, 3, 4, 5, 6, 7}, + std::vector{4, 5, 6, 7, 0, 0, 0, 0}, + true, + true, + element::i32, + int32_t(0), + PartialShape{}), + CumSumParams(PartialShape{2, 4}, + type, + std::vector{0, 1, 2, 3, 4, 5, 6, 7}, + std::vector{0, 1, 3, 6, 4, 9, 15, 22}, + false, + false, + element::i32, + int32_t(1), + PartialShape{}), + CumSumParams(PartialShape{2, 4}, + type, + std::vector{0, 1, 2, 3, 4, 5, 6, 7}, + std::vector{0, 0, 1, 3, 0, 4, 9, 15}, + true, + false, + element::i32, + int32_t(1), + PartialShape{}), + CumSumParams(PartialShape{2, 4}, + type, + std::vector{0, 1, 2, 3, 4, 5, 6, 7}, + std::vector{6, 6, 5, 3, 22, 18, 13, 7}, + false, + true, + element::i32, + int32_t(1), + PartialShape{}), + CumSumParams(PartialShape{2, 4}, + type, + std::vector{0, 1, 2, 3, 4, 5, 6, 7}, + std::vector{6, 5, 3, 0, 18, 13, 7, 0}, + true, + true, + element::i32, + int32_t(1), + PartialShape{}), - CumSumParams(PartialShape {3, 2, 4}, type, - std::vector {0, 1, 2, 3, 4, 5, 6, 7, - 8, 9, 10, 11, 12, 13, 14, 15, - 16, 17, 18, 19, 20, 21, 22, 23}, - std::vector {0, 1, 2, 3, 4, 5, 6, 7, - 8, 10, 12, 14, 16, 18, 20, 22, - 24, 27, 30, 33, 36, 39, 42, 45}, - false, false, element::i32, int32_t(0), PartialShape {}), - CumSumParams(PartialShape {3, 2, 4}, type, - std::vector {0, 1, 2, 3, 4, 5, 6, 7, - 8, 9, 10, 11, 12, 13, 14, 15, - 16, 17, 18, 19, 20, 21, 22, 23}, - std::vector {0, 1, 2, 3, 4, 6, 8, 10, - 8, 9, 10, 11, 20, 22, 24, 26, - 16, 17, 18, 19, 36, 38, 40, 42}, - false, false, element::i32, int32_t(1), PartialShape {}), - CumSumParams(PartialShape {3, 2, 4}, type, - std::vector {0, 1, 2, 3, 4, 5, 6, 7, - 8, 9, 10, 11, 12, 13, 14, 15, - 16, 17, 18, 19, 20, 21, 22, 23}, - std::vector {0, 1, 3, 6, 4, 9, 15, 22, - 8, 17, 27, 38, 12, 25, 39, 54, - 16, 33, 51, 70, 20, 41, 63, 86}, - false, false, element::i32, int32_t(2), PartialShape {}), + CumSumParams( + PartialShape{3, 2, 4}, + type, + std::vector{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23}, + std::vector{0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 12, 14, 16, 18, 20, 22, 24, 27, 30, 33, 36, 39, 42, 45}, + false, + false, + element::i32, + int32_t(0), + PartialShape{}), + CumSumParams( + PartialShape{3, 2, 4}, + type, + std::vector{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23}, + std::vector{0, 1, 2, 3, 4, 6, 8, 10, 8, 9, 10, 11, 20, 22, 24, 26, 16, 17, 18, 19, 36, 38, 40, 42}, + false, + false, + element::i32, + int32_t(1), + PartialShape{}), + CumSumParams( + PartialShape{3, 2, 4}, + type, + std::vector{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23}, + std::vector{0, 1, 3, 6, 4, 9, 15, 22, 8, 17, 27, 38, 12, 25, 39, 54, 16, 33, 51, 70, 20, 41, 63, 86}, + false, + false, + element::i32, + int32_t(2), + PartialShape{}), }; return opParams; } std::vector generateCumSumCombinedParams() { - const std::vector> opTypeParams { - generateCumSumParams(element::bf16), generateCumSumParams(element::f16), - generateCumSumParams(element::f32), generateCumSumParams(element::i32), - generateCumSumParams(element::i64), generateCumSumParams(element::u32), + const std::vector> opTypeParams{ + generateCumSumParams(element::bf16), + generateCumSumParams(element::f16), + generateCumSumParams(element::f32), + generateCumSumParams(element::i32), + generateCumSumParams(element::i64), + generateCumSumParams(element::u32), generateCumSumParams(element::i8)}; std::vector combinedParams; std::for_each(opTypeParams.begin(), opTypeParams.end(), [&](std::vector params) { @@ -182,6 +305,8 @@ std::vector generateCumSumCombinedParams() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_CumSum_With_Hardcoded_Refs, ReferenceCumSumLayerTest, ::testing::ValuesIn(generateCumSumCombinedParams()), +INSTANTIATE_TEST_SUITE_P(smoke_CumSum_With_Hardcoded_Refs, + ReferenceCumSumLayerTest, + ::testing::ValuesIn(generateCumSumCombinedParams()), ReferenceCumSumLayerTest::getTestCaseName); } // namespace diff --git a/src/plugins/template/tests/functional/op_reference/deformable_convolution.cpp b/src/plugins/template/tests/functional/op_reference/deformable_convolution.cpp index 38de9a5c62f..4c0a6e6578d 100644 --- a/src/plugins/template/tests/functional/op_reference/deformable_convolution.cpp +++ b/src/plugins/template/tests/functional/op_reference/deformable_convolution.cpp @@ -2,9 +2,10 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/deformable_convolution.hpp" + #include -#include "openvino/op/deformable_convolution.hpp" #include "base_reference_test.hpp" using namespace reference_tests; @@ -13,15 +14,23 @@ using namespace ov; namespace { struct DeformableConvolutionParams { template - DeformableConvolutionParams(const PartialShape& inputShape, const PartialShape& filterShape, - const PartialShape& offsetShape, const PartialShape& outputShape, - const element::Type& iType, - const std::vector& iValues, const std::vector& filterValues, - const std::vector& offsetValues, const std::vector& oValues, - const Strides& strides, const CoordinateDiff& padBegin, const CoordinateDiff& padEnd, const Strides& dialations, - const int64_t group = 1, const int64_t deformableGroup = 1, - const std::string& test_name = "", - const bool use_bilinear_interpolation_padding = false) + DeformableConvolutionParams(const PartialShape& inputShape, + const PartialShape& filterShape, + const PartialShape& offsetShape, + const PartialShape& outputShape, + const element::Type& iType, + const std::vector& iValues, + const std::vector& filterValues, + const std::vector& offsetValues, + const std::vector& oValues, + const Strides& strides, + const CoordinateDiff& padBegin, + const CoordinateDiff& padEnd, + const Strides& dialations, + const int64_t group = 1, + const int64_t deformableGroup = 1, + const std::string& test_name = "", + const bool use_bilinear_interpolation_padding = false) : inputShape(inputShape), filterShape(filterShape), offsetShape(offsetShape), @@ -44,15 +53,25 @@ struct DeformableConvolutionParams { use_bilinear_interpolation_padding(use_bilinear_interpolation_padding) {} template - DeformableConvolutionParams(const PartialShape& inputShape, const PartialShape& filterShape, - const PartialShape& offsetShape, const PartialShape& outputShape, const PartialShape& maskShape, - const element::Type& iType, - const std::vector& iValues, const std::vector& filterValues, - const std::vector& offsetValues, const std::vector& oValues, const std::vector& maskValues, - const Strides& strides, const CoordinateDiff& padBegin, const CoordinateDiff& padEnd, const Strides& dialations, - const int64_t group = 1, const int64_t deformableGroup = 1, - const std::string& test_name = "", - const bool use_bilinear_interpolation_padding = false) + DeformableConvolutionParams(const PartialShape& inputShape, + const PartialShape& filterShape, + const PartialShape& offsetShape, + const PartialShape& outputShape, + const PartialShape& maskShape, + const element::Type& iType, + const std::vector& iValues, + const std::vector& filterValues, + const std::vector& offsetValues, + const std::vector& oValues, + const std::vector& maskValues, + const Strides& strides, + const CoordinateDiff& padBegin, + const CoordinateDiff& padEnd, + const Strides& dialations, + const int64_t group = 1, + const int64_t deformableGroup = 1, + const std::string& test_name = "", + const bool use_bilinear_interpolation_padding = false) : inputShape(inputShape), filterShape(filterShape), offsetShape(offsetShape), @@ -102,7 +121,8 @@ struct DeformableConvolutionParams { bool use_bilinear_interpolation_padding; }; -class ReferenceDeformableConvolutionLayerTest : public testing::TestWithParam, public CommonReferenceTest { +class ReferenceDeformableConvolutionLayerTest : public testing::TestWithParam, + public CommonReferenceTest { public: void SetUp() override { auto params = GetParam(); @@ -140,20 +160,21 @@ private: const auto offset = std::make_shared(params.offsetType, params.offsetShape); const auto filter = std::make_shared(params.filterType, params.filterShape); const auto DeformableConvolution = std::make_shared(in, - offset, - filter, - params.strides, - params.padBegin, - params.padEnd, - params.dialations, - auto_pad, - params.group, - params.deformableGroup); - return std::make_shared(NodeVector {DeformableConvolution}, ParameterVector {in, offset, filter}); + offset, + filter, + params.strides, + params.padBegin, + params.padEnd, + params.dialations, + auto_pad, + params.group, + params.deformableGroup); + return std::make_shared(NodeVector{DeformableConvolution}, ParameterVector{in, offset, filter}); } }; -class ReferenceDeformableConvolutionV8LayerTest : public testing::TestWithParam, public CommonReferenceTest { +class ReferenceDeformableConvolutionV8LayerTest : public testing::TestWithParam, + public CommonReferenceTest { public: void SetUp() override { auto params = GetParam(); @@ -199,32 +220,36 @@ private: const auto filter = std::make_shared(params.filterType, params.filterShape); if (params.maskShape.size() != 0) { const auto mask = std::make_shared(params.maskType, params.maskShape); - const auto DeformableConvolutionV8 = std::make_shared(in, - offset, - filter, - mask, - params.strides, - params.padBegin, - params.padEnd, - params.dialations, - auto_pad, - params.group, - params.deformableGroup, - params.use_bilinear_interpolation_padding); - return std::make_shared(NodeVector {DeformableConvolutionV8}, ParameterVector {in, offset, filter, mask}); + const auto DeformableConvolutionV8 = + std::make_shared(in, + offset, + filter, + mask, + params.strides, + params.padBegin, + params.padEnd, + params.dialations, + auto_pad, + params.group, + params.deformableGroup, + params.use_bilinear_interpolation_padding); + return std::make_shared(NodeVector{DeformableConvolutionV8}, + ParameterVector{in, offset, filter, mask}); } else { - const auto DeformableConvolutionV8 = std::make_shared(in, - offset, - filter, - params.strides, - params.padBegin, - params.padEnd, - params.dialations, - auto_pad, - params.group, - params.deformableGroup, - params.use_bilinear_interpolation_padding); - return std::make_shared(NodeVector {DeformableConvolutionV8}, ParameterVector {in, offset, filter}); + const auto DeformableConvolutionV8 = + std::make_shared(in, + offset, + filter, + params.strides, + params.padBegin, + params.padEnd, + params.dialations, + auto_pad, + params.group, + params.deformableGroup, + params.use_bilinear_interpolation_padding); + return std::make_shared(NodeVector{DeformableConvolutionV8}, + ParameterVector{in, offset, filter}); } } }; @@ -241,2537 +266,3845 @@ template std::vector generateDeformableConvolutionFloatParams() { using T = typename element_type_traits::value_type; - std::vector deformableConvolutionParams { -// --------------------- 2D DeformableConvolution ------------------------------------------ - DeformableConvolutionParams(PartialShape {1, 1, 4, 4}, - PartialShape {1, 1, 2, 2}, - PartialShape {1, 8, 3, 3}, - PartialShape {1, 1, 3, 3}, - IN_ET, - std::vector{ - 1.0f, 2.0f, 3.0f, 4.0f, - 5.0f, 6.0f, 7.0f, 8.0f, - 9.0f, 10.0f, 11.0f, 12.0f, - 13.0f, 14.0f, 15.0f, 16.0f}, - std::vector{ - 1.0f, 2.0f, - -1.0f, -2.0f}, - std::vector{ - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0}, - std::vector{ - -12.0f, -12.0f, -12.0f, - -12.0f, -12.0f, -12.0f, - -12.0f, -12.0f, -12.0f}, - {1, 1}, - {0, 0}, - {0, 0}, - {1, 1}), - DeformableConvolutionParams(PartialShape {1, 1, 3, 3}, - PartialShape {1, 1, 2, 2}, - PartialShape {1, 8, 4, 4}, - PartialShape {1, 1, 4, 4}, - IN_ET, - std::vector{ - 1.0f, 3.0f, 5.0f, - 7.0f, 5.0f, 3.0f, - 1.0f, 3.0f, 5.0f}, - std::vector{ - 1.0f, 2.0f, - 0.0f, 1.0f}, - std::vector{ - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0}, - std::vector{ - 1.0f, 3.0f, 5.0f, 0.0f, - 9.0f, 12.0f, 16.0f, 5.0f, - 15.0f, 20.0f, 16.0f, 3.0f, - 2.0f, 7.0f, 13.0f, 5.0f}, - {1, 1}, - {1, 1}, - {1, 1}, - {1, 1}), - DeformableConvolutionParams(PartialShape {1, 1, 5, 5}, - PartialShape {1, 1, 3, 3}, - PartialShape {1, 18, 2, 2}, - PartialShape {1, 1, 2, 2}, - IN_ET, - std::vector{ - 1.0f, 3.0f, 5.0f, 7.0f, 9.0f, - 7.0f, 5.0f, 3.0f, 1.0f, 0.0f, - 2.0f, 4.0f, 6.0f, 8.0f, 10.0f, - 8.0f, 6.0f, 4.0f, 2.0f, 0.0f, - 2.0f, 4.0f, 6.0f, 8.0f, 10.0f}, - std::vector{ - 1.0f, 2.0f, 3.0f, - 1.0f, 1.0f, 1.0f, - 3.0f, 2.0f, 1.0f}, - std::vector{ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - std::vector{ - 57.0f, 94.0f, - 66.0f, 102.0f}, - {2, 2}, - {0, 0}, - {0, 0}, - {1, 1}), - DeformableConvolutionParams(PartialShape {1, 1, 7, 7}, - PartialShape {1, 1, 3, 3}, - PartialShape {1, 18, 3, 3}, - PartialShape {1, 1, 3, 3}, - IN_ET, - std::vector{ - 1.0f, 3.0f, 5.0f, 7.0f, 9.0f, 11.0f, 13.0f, - 7.0f, 5.0f, 3.0f, 1.0f, -1.0f, -3.0f, -5.0f, - 2.0f, 4.0f, 6.0f, 8.0f, 10.0f, 12.0f, 14.0f, - 8.0f, 6.0f, 4.0f, 2.0f, 0.0f, -2.0f, -4.0f, - 2.0f, 4.0f, 6.0f, 8.0f, 10.0f, 12.0f, 14.0f, - 7.0f, 5.0f, 3.0f, 1.0f, -1.0f, -3.0f, -5.0f, - 8.0f, 6.0f, 4.0f, 2.0f, 0.0f, -2.0f, -4.0f}, - std::vector{ - 1.0f, 2.0f, 3.0f, - 1.0f, 1.0f, 0.0f, - 3.0f, 1.0f, 2.0f}, - std::vector{ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - std::vector{ - 78.0f, 106.0f, 134.0f, - 44.0f, 16.0f, -12.0f, - 80.0f, 84.0f, 88.0f}, - {1, 1}, - {0, 0}, - {0, 0}, - {2, 2}), - DeformableConvolutionParams(PartialShape {1, 1, 7, 7}, - PartialShape {1, 1, 3, 3}, - PartialShape {1, 18, 4, 4}, - PartialShape {1, 1, 4, 4}, - IN_ET, - std::vector{ - 1.0f, 3.0f, 5.0f, 7.0f, 9.0f, 11.0f, 13.0f, - 7.0f, 5.0f, 3.0f, 1.0f, -1.0f, -3.0f, -5.0f, - 2.0f, 4.0f, 6.0f, 8.0f, 10.0f, 12.0f, 14.0f, - 8.0f, 6.0f, 4.0f, 2.0f, 0.0f, -2.0f, -4.0f, - 2.0f, 4.0f, 6.0f, 8.0f, 10.0f, 12.0f, 14.0f, - 7.0f, 5.0f, 3.0f, 1.0f, -1.0f, -3.0f, -5.0f, - 8.0f, 6.0f, 4.0f, 2.0f, 0.0f, -2.0f, -4.0f}, - std::vector{ - 1.0f, 2.0f, 3.0f, - 1.0f, 1.0f, 0.0f, - 3.0f, 1.0f, 2.0f}, - std::vector{ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - std::vector{ - 15.0f, 38.0f, 70.0f, 66.0f, - 33.0f, 78.0f, 134.0f, 103.0f, - 40.0f, 80.0f, 88.0f, 58.0f, - 30.0f, 56.0f, 72.0f, 34.0f}, - {2, 2}, - {2, 2}, - {2, 2}, - {2, 2}), - DeformableConvolutionParams(PartialShape {1, 2, 4, 4}, - PartialShape {1, 2, 3, 3}, - PartialShape {1, 18, 2, 2}, - PartialShape {1, 1, 2, 2}, - IN_ET, - std::vector{ - // channel 1 - 1.0f, 3.0f, 5.0f, 7.0f, - 7.0f, 5.0f, 3.0f, 1.0f, - 2.0f, 4.0f, 6.0f, 8.0f, - 8.0f, 6.0f, 4.0f, 2.0f, - // channel 2 - -1.0f, 3.0f, -5.0f, 7.0f, - 7.0f, -5.0f, 3.0f, -1.0f, - -2.0f, 4.0f, -6.0f, 8.0f, - 8.0f, -6.0f, 4.0f, -2.0f}, - std::vector{ - // channel 1 - 5.0f, 3.0f, 5.0f, - 1.0f, 3.0f, 1.0f, - 4.0f, 2.0f, 4.0f, - // channel 2 - -5.0f, 3.0f, 5.0f, - 1.0f, -3.0f, 1.0f, - 4.0f, 2.0f, -4.0f}, - std::vector{ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - std::vector{ - 142.0f, 102.0f, - 94.0f, 160.0f}, - {1, 1}, - {0, 0}, - {0, 0}, - {1, 1}), - DeformableConvolutionParams(PartialShape {1, 1, 4, 4}, - PartialShape {2, 1, 3, 3}, - PartialShape {1, 18, 2, 2}, - PartialShape {1, 2, 2, 2}, - IN_ET, - std::vector{ - 1.0f, 3.0f, 5.0f, 7.0f, - 7.0f, 5.0f, 3.0f, 1.0f, - 2.0f, 4.0f, 6.0f, 8.0f, - 8.0f, 6.0f, 4.0f, 2.0f}, - std::vector{ - // channel 1 - 5.0f, 3.0f, 5.0f, - 1.0f, 3.0f, 1.0f, - 4.0f, 2.0f, 4.0f, - // channel 2 - -5.0f, 3.0f, 5.0f, - 1.0f, -3.0f, 1.0f, - 4.0f, 2.0f, -4.0f}, - std::vector{ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - std::vector{ - // channel 1 - 104.0f, 140.0f, - 145.0f, 109.0f, - // channel 2 - 16.0f, 28.0f, - 19.0f, 7.0f}, - {1, 1}, - {0, 0}, - {0, 0}, - {1, 1}), - DeformableConvolutionParams(PartialShape {2, 1, 4, 4}, - PartialShape {1, 1, 3, 3}, - PartialShape {2, 18, 2, 2}, - PartialShape {2, 1, 2, 2}, - IN_ET, - std::vector{ - // batch 1 - 1.0f, 3.0f, 2.0f, 1.0f, - 1.0f, 3.0f, 3.0f, 1.0f, - 2.0f, 1.0f, 1.0f, 3.0f, - 3.0f, 2.0f, 3.0f, 3.0f, - // batch 2 - -1.0f, 3.0f, 2.0f, -1.0f, - 1.0f, 3.0f, -3.0f, 1.0f, - -2.0f, -1.0f, 1.0f, 3.0f, - 3.0f, 2.0f, 3.0f, -3.0f}, - std::vector{ - -5.0f, 3.0f, 5.0f, - 1.0f, -3.0f, 1.0f, - 4.0f, 2.0f, -4.0f}, - std::vector{ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - std::vector{ - // batch 1 - 15.0f, -15.0f, - 23.0f, 2.0f, - // batch 2 - -1.0f, -15.0f, - -5.0f, 6.0f}, - {1, 1}, - {0, 0}, - {0, 0}, - {1, 1}), - DeformableConvolutionParams(PartialShape {1, 4, 3, 3}, - PartialShape {2, 2, 2, 2}, - PartialShape {1, 8, 2, 2}, - PartialShape {1, 2, 2, 2}, - IN_ET, - std::vector{ - // channel 1 - 1.0f, 2.0f, 3.0f, - 4.0f, 5.0f, 6.0f, - 7.0f, 8.0f, 9.0f, - // channel 2 - 10.0f, 11.0f, 12.0f, - 13.0f, 14.0f, 15.0f, - 16.0f, 17.0f, 18.0f, - // channel 3 - 19.0f, 20.0f, 21.0f, - 22.0f, 23.0f, 24.0f, - 25.0f, 26.0f, 27.0f, - // channel 4 - 28.0f, 29.0f, 30.0f, - 31.0f, 32.0f, 33.0f, - 34.0f, 35.0f, 36.0f}, - std::vector{ - // filter 1 channel 1 - 1.0f, 2.0f, - 3.0f, 4.0f, - // filter 1 channel 2 - 5.0f, 6.0f, - 7.0f, 8.0f, - // filter 2 channel 1 - -1.0f, -2.0f, - -3.0f, -4.0f, - // filter 2 channel 2 - -5.0f, -6.0f, - -7.0f, -8.0f}, - std::vector{ - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0}, - std::vector{ - // channel 1 - 356.0f, 392.0f, - 464.0f, 500.0f, - // channel 2 - -1004.0f, -1040.0f, - -1112.0f, -1148.0f}, - {1, 1}, - {0, 0}, - {0, 0}, - {1, 1}, - 2), - DeformableConvolutionParams(PartialShape {1, 8, 3, 3}, - PartialShape {4, 2, 2, 2}, - PartialShape {1, 8, 2, 2}, - PartialShape {1, 4, 2, 2}, - IN_ET, - std::vector{ - // channel 1 - 1.0f, 2.0f, 3.0f, - 4.0f, 5.0f, 6.0f, - 7.0f, 8.0f, 9.0f, - // channel 2 - 10.0f, 11.0f, 12.0f, - 13.0f, 14.0f, 15.0f, - 16.0f, 17.0f, 18.0f, - // channel 3 - 19.0f, 20.0f, 21.0f, - 22.0f, 23.0f, 24.0f, - 25.0f, 26.0f, 27.0f, - // channel 4 - 28.0f, 29.0f, 30.0f, - 31.0f, 32.0f, 33.0f, - 34.0f, 35.0f, 36.0f, - // channel 5 - 37.0f, 38.0f, 39.0f, - 40.0f, 41.0f, 42.0f, - 43.0f, 44.0f, 45.0f, - // channel 6 - 46.0f, 47.0f, 48.0f, - 49.0f, 50.0f, 51.0f, - 52.0f, 53.0f, 54.0f, - // channel 7 - 55.0f, 56.0f, 57.0f, - 58.0f, 59.0f, 60.0f, - 61.0f, 62.0f, 63.0f, - // channel 8 - 64.0f, 65.0f, 66.0f, - 67.0f, 68.0f, 69.0f, - 70.0f, 71.0f, 72.0f}, - std::vector{ - // filter 1 channel 1 - 1.0f, 2.0f, - 3.0f, 4.0f, - // filter 1 channel 2 - 5.0f, 6.0f, - 7.0f, 8.0f, - // filter 2 channel 1 - 9.0f, 10.0f, - 11.0f, 12.0f, - // filter 2 channel 2 - 13.0f, 14.0f, - 15.0f, 16.0f, - // filter 3 channel 1 - -1.0f, -2.0f, - -3.0f, -4.0f, - // filter 3 channel 2 - -5.0f, -6.0f, - -7.0f, -8.0f, - // filter 4 channel 1 - -9.0f, -10.0f, - -11.0f, -12.0f, - // filter 4 channel 2 - -13.0f, -14.0f, - -15.0f, -16.0f}, - std::vector{ - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0}, - std::vector{ - // channel 1 - 356.0f, 392.0f, - 464.0f, 500.0f, - // channel 2 - 2636.0f, 2736.0f, - 2936.0f, 3036.0f, - // channel 3 - -1652.0f, -1688.0f, - -1760.0f, -1796.0f, - // channel 4 - -6236.0f, -6336.0f, - -6536.0f, -6636.0f}, - {1, 1}, - {0, 0}, - {0, 0}, - {1, 1}, - 4), - DeformableConvolutionParams(PartialShape {1, 2, 4, 4}, - PartialShape {1, 2, 2, 2}, - PartialShape {1, 8, 3, 3}, - PartialShape {1, 1, 3, 3}, - IN_ET, - std::vector{ - // channel 1 - 1.0f, 2.0f, 3.0f, 4.0f, - 5.0f, 6.0f, 7.0f, 8.0f, - 9.0f, 10.0f, 11.0f, 12.0f, - 13.0f, 14.0f, 15.0f, 16.0f, - // channel 2 - 17.0f, 18.0f, 19.0f, 20.0f, - 21.0f, 22.0f, 23.0f, 24.0f, - 25.0f, 26.0f, 27.0f, 28.0f, - 29.0f, 30.0f, 31.0f, 32.0f}, - std::vector{ - // channel 1 - 1.0f, 2.0f, - -1.0f, -2.0f, - // channel 2 - 3.0f, 4.0f, - -3.0f, -4.0f}, - std::vector{ - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0}, - std::vector{ - -40.0f, -40.0f, -40.0f, - -40.0f, -40.0f, -40.0f, - -40.0f, -40.0f, -40.0f}, - {1, 1}, - {0, 0}, - {0, 0}, - {1, 1}), - DeformableConvolutionParams(PartialShape {1, 4, 3, 3}, - PartialShape {2, 2, 2, 2}, - PartialShape {1, 16, 2, 2}, - PartialShape {1, 2, 2, 2}, - IN_ET, - std::vector{ - 1.0f, 2.0f, 3.0f, - 4.0f, 5.0f, 6.0f, - 7.0f, 8.0f, 9.0f, - 10.0f, 11.0f, 12.0f, - 13.0f, 14.0f, 15.0f, - 16.0f, 17.0f, 18.0f, - 19.0f, 20.0f, 21.0f, - 22.0f, 23.0f, 24.0f, - 25.0f, 26.0f, 27.0f, - 28.0f, 29.0f, 30.0f, - 31.0f, 32.0f, 33.0f, - 34.0f, 35.0f, 36.0f}, - std::vector{ - 1.0f, 2.0f, - 3.0f, 4.0f, - 5.0f, 6.0f, - 7.0f, 8.0f, - -1.0f, -2.0f, - -3.0f, -4.0f, - -5.0f, -6.0f, - -7.0f, -8.0f}, - std::vector{ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - std::vector{ - 356.0f, 392.0f, - 464.0f, 500.0f, - -1004.0f, -1040.0f, - -1112.0f, -1148.0f}, - {1, 1}, - {0, 0}, - {0, 0}, - {1, 1}, - 2, - 2), - DeformableConvolutionParams(PartialShape {1, 1, 4, 4}, - PartialShape {1, 1, 2, 2}, - PartialShape {1, 8, 3, 3}, - PartialShape {1, 1, 3, 3}, - IN_ET, - std::vector{ - 1.0f, 2.0f, 3.0f, 4.0f, - 5.0f, 6.0f, 7.0f, 8.0f, - 9.0f, 10.0f, 11.0f, 12.0f, - 13.0f, 14.0f, 15.0f, 16.0f}, - std::vector{ - 1.0f, 2.0f, - -1.0f, -2.0f}, - std::vector{ - // window 1 (Y=0, X=0) -> Y coordinate - 1.0f, 1.0f, 1.0f, // out1 .. out 3 - 1.0f, 1.0f, 1.0f, // out4 .. out 6 - 1.0f, 1.0f, 1.0f, // out7 .. out 9 - // window 1 (Y=0, X=0) -> X coordinate - 1.0f, 1.0f, 1.0f, // out1 .. out 3 - 1.0f, 1.0f, 1.0f, // out4 .. out 6 - 1.0f, 1.0f, 1.0f, // out7 .. out 9 - // window 2 - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, - // window 2 - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, - // window 3 - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, - // window 3 - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, - // window 4 - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, - // window 4 - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f}, - std::vector{ - -12.0f, -12.0f, -4.0f, - -12.0f, -12.0f, -4.0f, - 44.0f, 47.0f, 16.0f}, - {1, 1}, - {0, 0}, - {0, 0}, - {1, 1}, - 1, - 1, - "integral_offsets_1"), - DeformableConvolutionParams(PartialShape {1, 1, 4, 4}, - PartialShape {1, 1, 3, 3}, - PartialShape {1, 18, 4, 4}, - PartialShape {1, 1, 4, 4}, - IN_ET, - std::vector{ - 1.0f, 3.0f, 7.0f, 7.0f, - 7.0f, 6.0f, 3.0f, 1.0f, - 4.0f, 4.0f, 2.0f, 8.0f, - 1.0f, 1.0f, 1.0f, 2.0f}, - std::vector{ - 1.0f, 2.0f, 3.0f, - 0.0f, 1.0f, 0.0f, - 3.0f, 2.0f, 1.0f}, - std::vector{ - 1.0f, 0.0f, 1.0f, 0.0f, - 1.0f, 0.0f, 0.0f, 2.0f, - 1.0f, 0.0f, 1.0f, 0.0f, - 1.0f, 0.0f, 0.0f, 2.0f, - - 1.0f, 0.0f, 1.0f, 0.0f, - 1.0f, 0.0f, 0.0f, 2.0f, - 1.0f, 0.0f, 1.0f, 0.0f, - 1.0f, 0.0f, 0.0f, 2.0f, - - 1.0f, 0.0f, 1.0f, 0.0f, - 1.0f, 0.0f, 0.0f, 2.0f, - 1.0f, 0.0f, 1.0f, 0.0f, - 1.0f, 0.0f, 0.0f, 2.0f, - - 1.0f, 0.0f, 1.0f, 0.0f, - 1.0f, 0.0f, 0.0f, 2.0f, - 1.0f, 0.0f, 1.0f, 0.0f, - 1.0f, 0.0f, 0.0f, 2.0f, - - 1.0f, 0.0f, 1.0f, 0.0f, - 1.0f, 0.0f, 0.0f, 2.0f, - 1.0f, 0.0f, 1.0f, 0.0f, - 1.0f, 0.0f, 0.0f, 2.0f, - - 1.0f, 0.0f, 1.0f, 0.0f, - 1.0f, 0.0f, 0.0f, 2.0f, - 1.0f, 0.0f, 1.0f, 0.0f, - 1.0f, 0.0f, 0.0f, 2.0f, - - 1.0f, 0.0f, 1.0f, 0.0f, - 1.0f, 0.0f, 0.0f, 2.0f, - 1.0f, 0.0f, 1.0f, 0.0f, - 1.0f, 0.0f, 0.0f, 2.0f, - - 1.0f, 0.0f, 1.0f, 0.0f, - 1.0f, 0.0f, 0.0f, 2.0f, - 1.0f, 0.0f, 1.0f, 0.0f, - 1.0f, 0.0f, 0.0f, 2.0f, - - 1.0f, 0.0f, 1.0f, 0.0f, - 1.0f, 0.0f, 0.0f, 2.0f, - 1.0f, 0.0f, 1.0f, 0.0f, - 1.0f, 0.0f, 0.0f, 2.0f, - - 1.0f, 0.0f, 1.0f, 0.0f, - 1.0f, 0.0f, 0.0f, 2.0f, - 1.0f, 0.0f, 1.0f, 0.0f, - 1.0f, 0.0f, 0.0f, 2.0f, - - 1.0f, 0.0f, 1.0f, 0.0f, - 1.0f, 0.0f, 0.0f, 2.0f, - 1.0f, 0.0f, 1.0f, 0.0f, - 1.0f, 0.0f, 0.0f, 2.0f, - - 1.0f, 0.0f, 1.0f, 0.0f, - 1.0f, 0.0f, 0.0f, 2.0f, - 1.0f, 0.0f, 1.0f, 0.0f, - 1.0f, 0.0f, 0.0f, 2.0f, - - 1.0f, 0.0f, 1.0f, 0.0f, - 1.0f, 0.0f, 0.0f, 2.0f, - 1.0f, 0.0f, 1.0f, 0.0f, - 1.0f, 0.0f, 0.0f, 2.0f, - - 1.0f, 0.0f, 1.0f, 0.0f, - 1.0f, 0.0f, 0.0f, 2.0f, - 1.0f, 0.0f, 1.0f, 0.0f, - 1.0f, 0.0f, 0.0f, 2.0f, - - 1.0f, 0.0f, 1.0f, 0.0f, - 1.0f, 0.0f, 0.0f, 2.0f, - 1.0f, 0.0f, 1.0f, 0.0f, - 1.0f, 0.0f, 0.0f, 2.0f, - - 1.0f, 0.0f, 1.0f, 0.0f, - 1.0f, 0.0f, 0.0f, 2.0f, - 1.0f, 0.0f, 1.0f, 0.0f, - 1.0f, 0.0f, 0.0f, 2.0f, - - 1.0f, 0.0f, 1.0f, 0.0f, - 1.0f, 0.0f, 0.0f, 2.0f, - 1.0f, 0.0f, 1.0f, 0.0f, - 1.0f, 0.0f, 0.0f, 2.0f, - - 1.0f, 0.0f, 1.0f, 0.0f, - 1.0f, 0.0f, 0.0f, 2.0f, - 1.0f, 0.0f, 1.0f, 0.0f, - 1.0f, 0.0f, 0.0f, 2.0f}, - std::vector{ - 56.0f, 39.0f, 44.0f, 18.0f, - 38.0f, 56.0f, 65.0f, 0.0f, - 19.0f, 38.0f, 20.0f, 20.0f, - 6.0f, 19.0f, 33.0f, 0.0f}, - {1, 1}, - {1, 1}, - {1, 1}, - {1, 1}), - DeformableConvolutionParams(PartialShape {1, 1, 5, 5}, - PartialShape {1, 1, 3, 3}, - PartialShape {1, 18, 2, 2}, - PartialShape {1, 1, 2, 2}, - IN_ET, - std::vector{ - 1.0f, 3.0f, 5.0f, 7.0f, 9.0f, - 7.0f, 5.0f, 3.0f, 1.0f, 0.0f, - 2.0f, 4.0f, 6.0f, 8.0f, 10.0f, - 8.0f, 6.0f, 4.0f, 2.0f, 0.0f, - 2.0f, 4.0f, 6.0f, 8.0f, 10.0f}, - std::vector{ - 1.0f, 2.0f, 3.0f, - 1.0f, 1.0f, 1.0f, - 3.0f, 2.0f, 1.0f}, - std::vector{ - 0.0f, 2.0f, - 1.0f, 0.0f, - 0.0f, 2.0f, - 1.0f, 0.0f, - 0.0f, 2.0f, - 1.0f, 0.0f, - 0.0f, 2.0f, - 1.0f, 0.0f, - 0.0f, 2.0f, - 1.0f, 0.0f, - 0.0f, 2.0f, - 1.0f, 0.0f, - 0.0f, 2.0f, - 1.0f, 0.0f, - 0.0f, 2.0f, - 1.0f, 0.0f, - 0.0f, 2.0f, - 1.0f, 0.0f, - 0.0f, 2.0f, - 1.0f, 0.0f, - 0.0f, 2.0f, - 1.0f, 0.0f, - 0.0f, 2.0f, - 1.0f, 0.0f, - 0.0f, 2.0f, - 1.0f, 0.0f, - 0.0f, 2.0f, - 1.0f, 0.0f, - 0.0f, 2.0f, - 1.0f, 0.0f, - 0.0f, 2.0f, - 1.0f, 0.0f, - 0.0f, 2.0f, - 1.0f, 0.0f, - 0.0f, 2.0f, - 1.0f, 0.0f}, - std::vector{ - 57.0f, 40.0f, - 38.0f, 102.0f}, - {2, 2}, - {0, 0}, - {0, 0}, - {1, 1}, - 1, - 1, - "integral_offsets_stride"), - DeformableConvolutionParams(PartialShape {1, 1, 7, 7}, - PartialShape {1, 1, 3, 3}, - PartialShape {1, 18, 3, 3}, - PartialShape {1, 1, 3, 3}, - IN_ET, - std::vector{ - 1.0f, 3.0f, 5.0f, 7.0f, 9.0f, 11.0f, 13.0f, - 7.0f, 5.0f, 3.0f, 1.0f, -1.0f, -3.0f, -5.0f, - 2.0f, 4.0f, 6.0f, 8.0f, 10.0f, 12.0f, 14.0f, - 8.0f, 6.0f, 4.0f, 2.0f, 0.0f, -2.0f, -4.0f, - 2.0f, 4.0f, 6.0f, 8.0f, 10.0f, 12.0f, 14.0f, - 7.0f, 5.0f, 3.0f, 1.0f, -1.0f, -3.0f, -5.0f, - 8.0f, 6.0f, 4.0f, 2.0f, 0.0f, -2.0f, -4.0f}, - std::vector{ - 1.0f, 2.0f, 3.0f, - 1.0f, 1.0f, 0.0f, - 3.0f, 1.0f, 2.0f}, - std::vector{ - 1.0f, 1.0f, 0.0f, - 0.0f, 2.0f, 0.0f, - 1.0f, 0.0f, 1.0f, - 1.0f, 1.0f, 0.0f, - 0.0f, 2.0f, 0.0f, - 1.0f, 0.0f, 1.0f, - 1.0f, 1.0f, 0.0f, - 0.0f, 2.0f, 0.0f, - 1.0f, 0.0f, 1.0f, - 1.0f, 1.0f, 0.0f, - 0.0f, 2.0f, 0.0f, - 1.0f, 0.0f, 1.0f, - 1.0f, 1.0f, 0.0f, - 0.0f, 2.0f, 0.0f, - 1.0f, 0.0f, 1.0f, - 1.0f, 1.0f, 0.0f, - 0.0f, 2.0f, 0.0f, - 1.0f, 0.0f, 1.0f, - 1.0f, 1.0f, 0.0f, - 0.0f, 2.0f, 0.0f, - 1.0f, 0.0f, 1.0f, - 1.0f, 1.0f, 0.0f, - 0.0f, 2.0f, 0.0f, - 1.0f, 0.0f, 1.0f, - 1.0f, 1.0f, 0.0f, - 0.0f, 2.0f, 0.0f, - 1.0f, 0.0f, 1.0f, - 1.0f, 1.0f, 0.0f, - 0.0f, 2.0f, 0.0f, - 1.0f, 0.0f, 1.0f, - 1.0f, 1.0f, 0.0f, - 0.0f, 2.0f, 0.0f, - 1.0f, 0.0f, 1.0f, - 1.0f, 1.0f, 0.0f, - 0.0f, 2.0f, 0.0f, - 1.0f, 0.0f, 1.0f, - 1.0f, 1.0f, 0.0f, - 0.0f, 2.0f, 0.0f, - 1.0f, 0.0f, 1.0f, - 1.0f, 1.0f, 0.0f, - 0.0f, 2.0f, 0.0f, - 1.0f, 0.0f, 1.0f, - 1.0f, 1.0f, 0.0f, - 0.0f, 2.0f, 0.0f, - 1.0f, 0.0f, 1.0f, - 1.0f, 1.0f, 0.0f, - 0.0f, 2.0f, 0.0f, - 1.0f, 0.0f, 1.0f, - 1.0f, 1.0f, 0.0f, - 0.0f, 2.0f, 0.0f, - 1.0f, 0.0f, 1.0f, - 1.0f, 2.0f, 0.0f, - 0.0f, 2.0f, 0.0f, - 1.0f, 0.0f, 1.0f}, - std::vector{ - 16.0f, -2.0f, 134.0f, - 44.0f, -4.0f, -12.0f, - 10.0f, 84.0f, -4.0f}, - {1, 1}, - {0, 0}, - {0, 0}, - {2, 2}, - 1, - 1, - "integral_offset_dialation"), - DeformableConvolutionParams(PartialShape {1, 1, 7, 7}, - PartialShape {1, 1, 3, 3}, - PartialShape {1, 18, 4, 4}, - PartialShape {1, 1, 4, 4}, - IN_ET, - std::vector{ - 1.0f, 3.0f, 5.0f, 7.0f, 9.0f, 11.0f, 13.0f, - 7.0f, 5.0f, 3.0f, 1.0f, -1.0f, -3.0f, -5.0f, - 2.0f, 4.0f, 6.0f, 8.0f, 10.0f, 12.0f, 14.0f, - 8.0f, 6.0f, 4.0f, 2.0f, 0.0f, -2.0f, -4.0f, - 2.0f, 4.0f, 6.0f, 8.0f, 10.0f, 12.0f, 14.0f, - 7.0f, 5.0f, 3.0f, 1.0f, -1.0f, -3.0f, -5.0f, - 8.0f, 6.0f, 4.0f, 2.0f, 0.0f, -2.0f, -4.0f}, - std::vector{ - 1.0f, 2.0f, 3.0f, - 1.0f, 1.0f, 0.0f, - 3.0f, 1.0f, 2.0f}, - std::vector{ - 1.0f, 0.0f, 1.0f, 0.0f, - 1.0f, 0.0f, 0.0f, 2.0f, - 1.0f, 0.0f, 1.0f, 0.0f, - 1.0f, 0.0f, 0.0f, 2.0f, - - 1.0f, 0.0f, 1.0f, 0.0f, - 1.0f, 0.0f, 0.0f, 2.0f, - 1.0f, 0.0f, 1.0f, 0.0f, - 1.0f, 0.0f, 0.0f, 2.0f, - - 1.0f, 0.0f, 1.0f, 0.0f, - 1.0f, 0.0f, 0.0f, 2.0f, - 1.0f, 0.0f, 1.0f, 0.0f, - 1.0f, 0.0f, 0.0f, 2.0f, - - 1.0f, 0.0f, 1.0f, 0.0f, - 1.0f, 0.0f, 0.0f, 2.0f, - 1.0f, 0.0f, 1.0f, 0.0f, - 1.0f, 0.0f, 0.0f, 2.0f, - - 1.0f, 0.0f, 1.0f, 0.0f, - 1.0f, 0.0f, 0.0f, 2.0f, - 1.0f, 0.0f, 1.0f, 0.0f, - 1.0f, 0.0f, 0.0f, 2.0f, - - 1.0f, 0.0f, 1.0f, 0.0f, - 1.0f, 0.0f, 0.0f, 2.0f, - 1.0f, 0.0f, 1.0f, 0.0f, - 1.0f, 0.0f, 0.0f, 2.0f, - - 1.0f, 0.0f, 1.0f, 0.0f, - 1.0f, 0.0f, 0.0f, 2.0f, - 1.0f, 0.0f, 1.0f, 0.0f, - 1.0f, 0.0f, 0.0f, 2.0f, - - 1.0f, 0.0f, 1.0f, 0.0f, - 1.0f, 0.0f, 0.0f, 2.0f, - 1.0f, 0.0f, 1.0f, 0.0f, - 1.0f, 0.0f, 0.0f, 2.0f, - - 1.0f, 0.0f, 1.0f, 0.0f, - 1.0f, 0.0f, 0.0f, 2.0f, - 1.0f, 0.0f, 1.0f, 0.0f, - 1.0f, 0.0f, 0.0f, 2.0f, - - 1.0f, 0.0f, 1.0f, 0.0f, - 1.0f, 0.0f, 0.0f, 2.0f, - 1.0f, 0.0f, 1.0f, 0.0f, - 1.0f, 0.0f, 0.0f, 2.0f, - - 1.0f, 0.0f, 1.0f, 0.0f, - 1.0f, 0.0f, 0.0f, 2.0f, - 1.0f, 0.0f, 1.0f, 0.0f, - 1.0f, 0.0f, 0.0f, 2.0f, - - 1.0f, 0.0f, 1.0f, 0.0f, - 1.0f, 0.0f, 0.0f, 2.0f, - 1.0f, 0.0f, 1.0f, 0.0f, - 1.0f, 0.0f, 0.0f, 2.0f, - - 1.0f, 0.0f, 1.0f, 0.0f, - 1.0f, 0.0f, 0.0f, 2.0f, - 1.0f, 0.0f, 1.0f, 0.0f, - 1.0f, 0.0f, 0.0f, 2.0f, - - 1.0f, 0.0f, 1.0f, 0.0f, - 1.0f, 0.0f, 0.0f, 2.0f, - 1.0f, 0.0f, 1.0f, 0.0f, - 1.0f, 0.0f, 0.0f, 2.0f, - - 1.0f, 0.0f, 1.0f, 0.0f, - 1.0f, 0.0f, 0.0f, 2.0f, - 1.0f, 0.0f, 1.0f, 0.0f, - 1.0f, 0.0f, 0.0f, 2.0f, - - 1.0f, 0.0f, 1.0f, 0.0f, - 1.0f, 0.0f, 0.0f, 2.0f, - 1.0f, 0.0f, 1.0f, 0.0f, - 1.0f, 0.0f, 0.0f, 2.0f, - - 1.0f, 0.0f, 1.0f, 0.0f, - 1.0f, 0.0f, 0.0f, 2.0f, - 1.0f, 0.0f, 1.0f, 0.0f, - 1.0f, 0.0f, 0.0f, 2.0f, - - 1.0f, 0.0f, 1.0f, 0.0f, - 1.0f, 0.0f, 0.0f, 2.0f, - 1.0f, 0.0f, 1.0f, 0.0f, - 1.0f, 0.0f, 0.0f, 2.0f}, - std::vector{ - 15.0f, 38.0f, 2.0f, 66.0f, - 26.0f, 78.0f, 134.0f, 16.0f, - 23.0f, 80.0f, -4.0f, 58.0f, - 13.0f, 56.0f, 72.0f, -4.0f}, - {2, 2}, - {2, 2}, - {2, 2}, - {2, 2}, - 1, - 1, - "integral_offset_padding_stride_dialation"), - DeformableConvolutionParams(PartialShape {1, 2, 4, 4}, - PartialShape {1, 2, 3, 3}, - PartialShape {1, 18, 2, 2}, - PartialShape {1, 1, 2, 2}, - IN_ET, - std::vector{ - // channel 1 - 1.0f, 3.0f, 5.0f, 7.0f, - 7.0f, 5.0f, 3.0f, 1.0f, - 2.0f, 4.0f, 6.0f, 8.0f, - 8.0f, 6.0f, 4.0f, 2.0f, - // channel 2 - -1.0f, 3.0f, -5.0f, 7.0f, - 7.0f, -5.0f, 3.0f, -1.0f, - -2.0f, 4.0f, -6.0f, 8.0f, - 8.0f, -6.0f, 4.0f, -2.0f}, - std::vector{ - // channel 1 - 5.0f, 3.0f, 5.0f, - 1.0f, 3.0f, 1.0f, - 4.0f, 2.0f, 4.0f, - // channel 2 - -5.0f, 3.0f, 5.0f, - 1.0f, -3.0f, 1.0f, - 4.0f, 2.0f, -4.0f}, - std::vector{ - 1.0f, 1.0f, - 0.0f, 2.0f, - 1.0f, 1.0f, - 0.0f, 2.0f, - 1.0f, 1.0f, - 0.0f, 2.0f, - 1.0f, 1.0f, - 0.0f, 2.0f, - 1.0f, 1.0f, - 0.0f, 2.0f, - 1.0f, 1.0f, - 0.0f, 2.0f, - 1.0f, 1.0f, - 0.0f, 2.0f, - 1.0f, 1.0f, - 0.0f, 2.0f, - 1.0f, 1.0f, - 0.0f, 2.0f, - 1.0f, 1.0f, - 0.0f, 2.0f, - 1.0f, 1.0f, - 0.0f, 2.0f, - 1.0f, 1.0f, - 0.0f, 2.0f, - 1.0f, 1.0f, - 0.0f, 2.0f, - 1.0f, 1.0f, - 0.0f, 2.0f, - 1.0f, 1.0f, - 0.0f, 2.0f, - 1.0f, 1.0f, - 0.0f, 2.0f, - 1.0f, 1.0f, - 0.0f, 2.0f, - 1.0f, 1.0f, - 0.0f, 2.0f}, - std::vector{ - 160.0f, 32.0f, - 94.0f, 20.0f}, - {1, 1}, - {0, 0}, - {0, 0}, - {1, 1}, - 1, - 1, - "integral_offset_input_channels"), - DeformableConvolutionParams(PartialShape {1, 1, 4, 4}, - PartialShape {2, 1, 2, 2}, - PartialShape {1, 8, 3, 3}, - PartialShape {1, 2, 3, 3}, - IN_ET, - std::vector{ - 1.0f, 2.0f, 3.0f, 4.0f, - 5.0f, 6.0f, 7.0f, 8.0f, - 9.0f, 10.0f, 11.0f, 12.0f, - 13.0f, 14.0f, 15.0f, 16.0f}, - std::vector{ - // filter 1 - 1.0f, 2.0f, - -1.0f, -2.0f, - // filter 2 - 3.0f, 4.0f, - -3.0f, -4.0f}, - std::vector{ - //channel 1: Y offsets - 1.0f, 1.0f, 1.0f, // out1 .. out 3 - 1.0f, 1.0f, 1.0f, // out4 .. out 6 - 1.0f, 1.0f, 1.0f, // out7 .. out 9 - //channel 1: X offsets - 1.0f, 1.0f, 1.0f, // out1 .. out 3 - 1.0f, 1.0f, 1.0f, // out4 .. out 6 - 1.0f, 1.0f, 1.0f, // out7 .. out 9 - //channel 2: Y offsets - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, - //channel 2: X offsets - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, - //channel 3: Y offsets - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, - //channel 3: X offsets - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, - //channel 4: Y offsets - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, - //channel 4: X offsets - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f}, - std::vector{ - // output 1 - -12.0f, -12.0f, -4.0f, - -12.0f, -12.0f, -4.0f, - 44.0f, 47.0f, 16.0f, - // output 2 - -28.0f, -28.0f, -12.0f, - -28.0f, -28.0f, -12.0f, - 102.0f, 109.0f, 48.0f}, - {1, 1}, - {0, 0}, - {0, 0}, - {1, 1}, - 1, - 1, - "integral_offset_output_channels"), - DeformableConvolutionParams(PartialShape {2, 1, 4, 4}, - PartialShape {1, 1, 2, 2}, - PartialShape {2, 8, 3, 3}, - PartialShape {2, 1, 3, 3}, - IN_ET, - std::vector{ - //batch 1 - 1.0f, 2.0f, 3.0f, 4.0f, - 5.0f, 6.0f, 7.0f, 8.0f, - 9.0f, 10.0f, 11.0f, 12.0f, - 13.0f, 14.0f, 15.0f, 16.0f, - //batch 2 - 17.0f, 18.0f, 19.0f, 20.0f, - 21.0f, 22.0f, 23.0f, 24.0f, - 25.0f, 26.0f, 27.0f, 28.0f, - 29.0f, 30.0f, 31.0f, 32.0f}, - std::vector{ - 1.0f, 2.0f, - -1.0f, -2.0f}, - std::vector{ - // batch1 - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, - - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, - - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, - - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, - - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, - - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, - - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, - - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, - // batch2 - 0.0f, 0.0f, 0.0f, - 0.0f, 0.0f, 0.0f, - 0.0f, 0.0f, 0.0f, - - 0.0f, 0.0f, 0.0f, - 0.0f, 0.0f, 0.0f, - 0.0f, 0.0f, 0.0f, - - 0.0f, 0.0f, 0.0f, - 0.0f, 0.0f, 0.0f, - 0.0f, 0.0f, 0.0f, - - 0.0f, 0.0f, 0.0f, - 0.0f, 0.0f, 0.0f, - 0.0f, 0.0f, 0.0f, - - 0.0f, 0.0f, 0.0f, - 0.0f, 0.0f, 0.0f, - 0.0f, 0.0f, 0.0f, - - 0.0f, 0.0f, 0.0f, - 0.0f, 0.0f, 0.0f, - 0.0f, 0.0f, 0.0f, - - 0.0f, 0.0f, 0.0f, - 0.0f, 0.0f, 0.0f, - 0.0f, 0.0f, 0.0f, - - 0.0f, 0.0f, 0.0f, - 0.0f, 0.0f, 0.0f, - 0.0f, 0.0f, 0.0f}, - std::vector{ - // batch 1 - -12.0f, -12.0f, -4.0f, - -12.0f, -12.0f, -4.0f, - 44.0f, 47.0f, 16.0f, - // batch 2 - -12.0f, -12.0f, -12.0f, - -12.0f, -12.0f, -12.0f, - -12.0f, -12.0f, -12.0f}, - {1, 1}, - {0, 0}, - {0, 0}, - {1, 1}, - 1, - 1, - "integral_offset_batch"), - DeformableConvolutionParams(PartialShape {1, 4, 3, 3}, - PartialShape {2, 2, 2, 2}, - PartialShape {1, 8, 2, 2}, - PartialShape {1, 2, 2, 2}, - IN_ET, - std::vector{ - // channel 1 - 1.0f, 2.0f, 3.0f, - 4.0f, 5.0f, 6.0f, - 7.0f, 8.0f, 9.0f, - // channel 2 - 10.0f, 11.0f, 12.0f, - 13.0f, 14.0f, 15.0f, - 16.0f, 17.0f, 18.0f, - // channel 3 - 19.0f, 20.0f, 21.0f, - 22.0f, 23.0f, 24.0f, - 25.0f, 26.0f, 27.0f, - // channel 4 - 28.0f, 29.0f, 30.0f, - 31.0f, 32.0f, 33.0f, - 34.0f, 35.0f, 36.0f}, - std::vector{ - // filter 1 channel 1 - 1.0f, 2.0f, - 3.0f, 4.0f, - // filter 1 channel 2 - 5.0f, 6.0f, - 7.0f, 8.0f, - // filter 2 channel 1 - -1.0f, -2.0f, - -3.0f, -4.0f, - // filter 2 channel 2 - -5.0f, -6.0f, - -7.0f, -8.0f}, - std::vector{ - // window 1 (F_Y=0, F_X=0) -> I_Y coordinate - 1.0f, 0.0f, 2.0f, 1.0f, // out1 .. out 4 - // window 1 (F_Y=0, F_X=0) -> I_X coordinate - 0.0f, 1.0f, 1.0f, 2.0f, // out1 .. out 4 - // window 2 (F_Y=0, F_X=1) -> I_Y coordinate - 1.0f, 1.0f, 1.0f, 1.0f, // out1 .. out 4 - // window 2 (F_Y=0, F_X=1) -> I_X coordinate - 1.0f, 1.0f, 1.0f, 1.0f, // out1 .. out 4 - // window 3 (F_Y=1, F_X=0) -> I_Y coordinate - 2.0f, 2.0f, 2.0f, 2.0f, // out1 .. out 4 - // window 3 (F_Y=1, F_X=0) -> I_X coordinate - 2.0f, 2.0f, 2.0f, 2.0f, // out1 .. out 4 - // window 4 (F_Y=1, F_X=1) -> I_Y coordinate - 2.0f, 2.0f, 2.0f, 2.0f, // out1 .. out 4 - // window 4 (F_Y=1, F_X=1) -> I_X coordinate - 2.0f, 2.0f, 2.0f, 2.0f}, // out1 .. out 4 - std::vector{ - // channel 1 - 171.0f, 63.0f, - 126.0f, 0.0f, - // channel 2 - -423.0f, -171.0f, - -270.0f, 0.0f}, - {1, 1}, - {0, 0}, - {0, 0}, - {1, 1}, - 2, - 1, - "integral_offset_groups_basic"), - DeformableConvolutionParams(PartialShape {1, 8, 3, 3}, - PartialShape {4, 2, 2, 2}, - PartialShape {1, 8, 2, 2}, - PartialShape {1, 4, 2, 2}, - IN_ET, - std::vector{ - // channel 1 - 1.0f, 2.0f, 3.0f, - 4.0f, 5.0f, 6.0f, - 7.0f, 8.0f, 9.0f, - // channel 2 - 10.0f, 11.0f, 12.0f, - 13.0f, 14.0f, 15.0f, - 16.0f, 17.0f, 18.0f, - // channel 3 - 19.0f, 20.0f, 21.0f, - 22.0f, 23.0f, 24.0f, - 25.0f, 26.0f, 27.0f, - // channel 4 - 28.0f, 29.0f, 30.0f, - 31.0f, 32.0f, 33.0f, - 34.0f, 35.0f, 36.0f, - // channel 5 - 37.0f, 38.0f, 39.0f, - 40.0f, 41.0f, 42.0f, - 43.0f, 44.0f, 45.0f, - // channel 6 - 46.0f, 47.0f, 48.0f, - 49.0f, 50.0f, 51.0f, - 52.0f, 53.0f, 54.0f, - // channel 7 - 55.0f, 56.0f, 57.0f, - 58.0f, 59.0f, 60.0f, - 61.0f, 62.0f, 63.0f, - // channel 8 - 64.0f, 65.0f, 66.0f, - 67.0f, 68.0f, 69.0f, - 70.0f, 71.0f, 72.0f}, - std::vector{ - // filter 1 channel 1 - 1.0f, 2.0f, - 3.0f, 4.0f, - // filter 1 channel 2 - 5.0f, 6.0f, - 7.0f, 8.0f, - // filter 2 channel 1 - 9.0f, 10.0f, - 11.0f, 12.0f, - // filter 2 channel 2 - 13.0f, 14.0f, - 15.0f, 16.0f, - // filter 3 channel 1 - -1.0f, -2.0f, - -3.0f, -4.0f, - // filter 3 channel 2 - -5.0f, -6.0f, - -7.0f, -8.0f, - // filter 4 channel 1 - -9.0f, -10.0f, - -11.0f, -12.0f, - // filter 4 channel 2 - -13.0f, -14.0f, - -15.0f, -16.0f}, - std::vector{ - 1.0f, 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, 1.0f}, - std::vector{ - // channel 1 - 500.0f, 234.0f, - 219.0f, 99.0f, - // channel 2 - 3036.0f, 1482.0f, - 1463.0f, 711.0f, - // channel 3 - -1796.0f, -810.0f, - -723.0f, -315.0f, - // channel 4 - -6636.0f, -3210.0f, - -3119.0f, -1503.0f}, - {1, 1}, - {0, 0}, - {0, 0}, - {1, 1}, - 4, - 1, - "integral_offset_groups_complex"), - DeformableConvolutionParams(PartialShape {1, 2, 4, 4}, - PartialShape {2, 2, 2, 2}, - PartialShape {1, 16, 3, 3}, - PartialShape {1, 2, 3, 3}, - IN_ET, - std::vector{ - // channel 1 - 1.0f, 2.0f, 3.0f, 4.0f, - 5.0f, 6.0f, 7.0f, 8.0f, - 9.0f, 10.0f, 11.0f, 12.0f, - 13.0f, 14.0f, 15.0f, 16.0f, - // channel 2 - 17.0f, 18.0f, 19.0f, 20.0f, - 21.0f, 22.0f, 23.0f, 24.0f, - 25.0f, 26.0f, 27.0f, 28.0f, - 29.0f, 30.0f, 31.0f, 32.0f}, - std::vector{ - // f1: channel 1 - 1.0f, 2.0f, - 3.0f, 4.0f, - // f1: channel 2 - 5.0f, 6.0f, - 7.0f, 8.0f, - // f2: channel 1 - -1.0f, -2.0f, - -3.0f, -4.0f, - // f2: channel 2 - -5.0f, -6.0f, - -7.0f, -8.0f}, - std::vector{ - // defgroup 1 - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, - - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, - - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, - - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, - - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, - - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, - - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, - - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, - // defgroup 2 - 0.0f, 0.0f, 0.0f, - 0.0f, 0.0f, 0.0f, - 0.0f, 0.0f, 0.0f, - - 0.0f, 0.0f, 0.0f, - 0.0f, 0.0f, 0.0f, - 0.0f, 0.0f, 0.0f, - - 0.0f, 0.0f, 0.0f, - 0.0f, 0.0f, 0.0f, - 0.0f, 0.0f, 0.0f, - - 0.0f, 0.0f, 0.0f, - 0.0f, 0.0f, 0.0f, - 0.0f, 0.0f, 0.0f, - - 0.0f, 0.0f, 0.0f, - 0.0f, 0.0f, 0.0f, - 0.0f, 0.0f, 0.0f, - - 0.0f, 0.0f, 0.0f, - 0.0f, 0.0f, 0.0f, - 0.0f, 0.0f, 0.0f, - - 0.0f, 0.0f, 0.0f, - 0.0f, 0.0f, 0.0f, - 0.0f, 0.0f, 0.0f, - - 0.0f, 0.0f, 0.0f, - 0.0f, 0.0f, 0.0f, - 0.0f, 0.0f, 0.0f}, - std::vector{ - // output 1 - 610.0f, 646.0f, 612.0f, - 754.0f, 790.0f, 732.0f, - 768.0f, 797.0f, 792.0f, - // output 2 - -610.0f, -646.0f, -612.0f, - -754.0f, -790.0f, -732.0f, - -768.0f, -797.0f, -792.0f}, - {1, 1}, - {0, 0}, - {0, 0}, - {1, 1}, - 1, - 2, - "integral_offset_deforgroup_basic"), - DeformableConvolutionParams(PartialShape {1, 4, 4, 4}, - PartialShape {2, 4, 2, 2}, - PartialShape {1, 32, 3, 3}, - PartialShape {1, 2, 3, 3}, - IN_ET, - std::vector{ - // channel 1 - 1.0f, 2.0f, 3.0f, 4.0f, - 5.0f, 6.0f, 7.0f, 8.0f, - 9.0f, 10.0f, 11.0f, 12.0f, - 13.0f, 14.0f, 15.0f, 16.0f, - // channel 2 - 17.0f, 18.0f, 19.0f, 20.0f, - 21.0f, 22.0f, 23.0f, 24.0f, - 25.0f, 26.0f, 27.0f, 28.0f, - 29.0f, 30.0f, 31.0f, 32.0f, - // channel 3 - 1.0f, 2.0f, 3.0f, 4.0f, - 5.0f, 6.0f, 7.0f, 8.0f, - 9.0f, 10.0f, 11.0f, 12.0f, - 13.0f, 14.0f, 15.0f, 16.0f, - // channel 4 - 17.0f, 18.0f, 19.0f, 20.0f, - 21.0f, 22.0f, 23.0f, 24.0f, - 25.0f, 26.0f, 27.0f, 28.0f, - 29.0f, 30.0f, 31.0f, 32.0f}, - std::vector{ - // f1: channel 1 - 1.0f, 2.0f, - 3.0f, 4.0f, - // f1: channel 2 - 5.0f, 6.0f, - 7.0f, 8.0f, - // f1: channel 3 - 1.0f, 2.0f, - 3.0f, 4.0f, - // f1: channel 4 - 5.0f, 6.0f, - 7.0f, 8.0f, - // f2: channel 1 - -1.0f, -2.0f, - -3.0f, -4.0f, - // f2: channel 2 - -5.0f, -6.0f, - -7.0f, -8.0f, - // f2: channel 3 - -1.0f, -2.0f, - -3.0f, -4.0f, - // f2: channel 4 - -5.0f, -6.0f, - -7.0f, -8.0f}, - std::vector{ - // defgroup 1 - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, - - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, - - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, - - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, - - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, - - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, - - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, - - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, - // defgroup 2 - 0.0f, 0.0f, 0.0f, - 0.0f, 0.0f, 0.0f, - 0.0f, 0.0f, 0.0f, - - 0.0f, 0.0f, 0.0f, - 0.0f, 0.0f, 0.0f, - 0.0f, 0.0f, 0.0f, - - 0.0f, 0.0f, 0.0f, - 0.0f, 0.0f, 0.0f, - 0.0f, 0.0f, 0.0f, - - 0.0f, 0.0f, 0.0f, - 0.0f, 0.0f, 0.0f, - 0.0f, 0.0f, 0.0f, - - 0.0f, 0.0f, 0.0f, - 0.0f, 0.0f, 0.0f, - 0.0f, 0.0f, 0.0f, - - 0.0f, 0.0f, 0.0f, - 0.0f, 0.0f, 0.0f, - 0.0f, 0.0f, 0.0f, - - 0.0f, 0.0f, 0.0f, - 0.0f, 0.0f, 0.0f, - 0.0f, 0.0f, 0.0f, - - 0.0f, 0.0f, 0.0f, - 0.0f, 0.0f, 0.0f, - 0.0f, 0.0f, 0.0f, - - // defgroup 3 - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, - - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, - - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, - - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, - - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, - - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, - - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, - - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, - // defgroup 4 - 0.0f, 0.0f, 0.0f, - 0.0f, 0.0f, 0.0f, - 0.0f, 0.0f, 0.0f, - - 0.0f, 0.0f, 0.0f, - 0.0f, 0.0f, 0.0f, - 0.0f, 0.0f, 0.0f, - - 0.0f, 0.0f, 0.0f, - 0.0f, 0.0f, 0.0f, - 0.0f, 0.0f, 0.0f, - - 0.0f, 0.0f, 0.0f, - 0.0f, 0.0f, 0.0f, - 0.0f, 0.0f, 0.0f, - - 0.0f, 0.0f, 0.0f, - 0.0f, 0.0f, 0.0f, - 0.0f, 0.0f, 0.0f, - - 0.0f, 0.0f, 0.0f, - 0.0f, 0.0f, 0.0f, - 0.0f, 0.0f, 0.0f, - - 0.0f, 0.0f, 0.0f, - 0.0f, 0.0f, 0.0f, - 0.0f, 0.0f, 0.0f, - - 0.0f, 0.0f, 0.0f, - 0.0f, 0.0f, 0.0f, - 0.0f, 0.0f, 0.0f}, - std::vector{ - // output 1 - 1220.0f, 1292.0f, 1224.0f, - 1508.0f, 1580.0f, 1464.0f, - 1536.0f, 1594.0f, 1584.0f, - // output 2 - -1220.0f, -1292.0f, -1224.0f, - -1508.0f, -1580.0f, -1464.0f, - -1536.0f, -1594.0f, -1584.0f}, - {1, 1}, - {0, 0}, - {0, 0}, - {1, 1}, - 1, - 4, - "integral_offset_deforgroup_complex1"), - DeformableConvolutionParams(PartialShape {1, 4, 4, 4}, - PartialShape {2, 4, 2, 2}, - PartialShape {1, 16, 3, 3}, - PartialShape {1, 2, 3, 3}, - IN_ET, - std::vector{ - // channel 1 - 1.0f, 2.0f, 3.0f, 4.0f, - 5.0f, 6.0f, 7.0f, 8.0f, - 9.0f, 10.0f, 11.0f, 12.0f, - 13.0f, 14.0f, 15.0f, 16.0f, - // channel 2 - 17.0f, 18.0f, 19.0f, 20.0f, - 21.0f, 22.0f, 23.0f, 24.0f, - 25.0f, 26.0f, 27.0f, 28.0f, - 29.0f, 30.0f, 31.0f, 32.0f, - // channel 3 - 1.0f, 2.0f, 3.0f, 4.0f, - 5.0f, 6.0f, 7.0f, 8.0f, - 9.0f, 10.0f, 11.0f, 12.0f, - 13.0f, 14.0f, 15.0f, 16.0f, - // channel 4 - 17.0f, 18.0f, 19.0f, 20.0f, - 21.0f, 22.0f, 23.0f, 24.0f, - 25.0f, 26.0f, 27.0f, 28.0f, - 29.0f, 30.0f, 31.0f, 32.0f}, - std::vector{ - // f1: channel 1 - 1.0f, 2.0f, - 3.0f, 4.0f, - // f1: channel 2 - 5.0f, 6.0f, - 7.0f, 8.0f, - // f1: channel 3 - 1.0f, 2.0f, - 3.0f, 4.0f, - // f1: channel 4 - 5.0f, 6.0f, - 7.0f, 8.0f, - // f2: channel 1 - -1.0f, -2.0f, - -3.0f, -4.0f, - // f2: channel 2 - -5.0f, -6.0f, - -7.0f, -8.0f, - // f2: channel 3 - -1.0f, -2.0f, - -3.0f, -4.0f, - // f2: channel 4 - -5.0f, -6.0f, - -7.0f, -8.0f}, - std::vector{ - // defgroup 1 - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, - - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, - - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, - - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, - - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, - - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, - - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, - - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, - // defgroup 2 - 0.0f, 0.0f, 0.0f, - 0.0f, 0.0f, 0.0f, - 0.0f, 0.0f, 0.0f, - - 0.0f, 0.0f, 0.0f, - 0.0f, 0.0f, 0.0f, - 0.0f, 0.0f, 0.0f, - - 0.0f, 0.0f, 0.0f, - 0.0f, 0.0f, 0.0f, - 0.0f, 0.0f, 0.0f, - - 0.0f, 0.0f, 0.0f, - 0.0f, 0.0f, 0.0f, - 0.0f, 0.0f, 0.0f, - - 0.0f, 0.0f, 0.0f, - 0.0f, 0.0f, 0.0f, - 0.0f, 0.0f, 0.0f, - - 0.0f, 0.0f, 0.0f, - 0.0f, 0.0f, 0.0f, - 0.0f, 0.0f, 0.0f, - - 0.0f, 0.0f, 0.0f, - 0.0f, 0.0f, 0.0f, - 0.0f, 0.0f, 0.0f, - - 0.0f, 0.0f, 0.0f, - 0.0f, 0.0f, 0.0f, - 0.0f, 0.0f, 0.0f}, - std::vector{ - // output 1 - 1300.0f, 1372.0f, 992.0f, - 1588.0f, 1660.0f, 1200.0f, - 1228.0f, 1278.0f, 1096.0f, - // output 2 - -1300.0f, -1372.0f, -992.0f, - -1588.0f, -1660.0f, -1200.0f, - -1228.0f, -1278.0f, -1096.0f}, - {1, 1}, - {0, 0}, - {0, 0}, - {1, 1}, - 1, - 2, - "integral_offset_deforgroup_complex2"), - DeformableConvolutionParams(PartialShape {1, 4, 3, 3}, - PartialShape {2, 2, 2, 2}, - PartialShape {1, 16, 2, 2}, - PartialShape {1, 2, 2, 2}, - IN_ET, - std::vector{ - 1.0f, 2.0f, 3.0f, - 4.0f, 5.0f, 6.0f, - 7.0f, 8.0f, 9.0f, - 10.0f, 11.0f, 12.0f, - 13.0f, 14.0f, 15.0f, - 16.0f, 17.0f, 18.0f, - 19.0f, 20.0f, 21.0f, - 22.0f, 23.0f, 24.0f, - 25.0f, 26.0f, 27.0f, - 28.0f, 29.0f, 30.0f, - 31.0f, 32.0f, 33.0f, - 34.0f, 35.0f, 36.0f}, - std::vector{ - 1.0f, 2.0f, - 3.0f, 4.0f, - 5.0f, 6.0f, - 7.0f, 8.0f, - -1.0f, -2.0f, - -3.0f, -4.0f, - -5.0f, -6.0f, - -7.0f, -8.0f}, - std::vector{ - // defgroup 1 - 1.0f, 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, 1.0f, - // defgroup 2 - 0.0f, 0.0f, 0.0f, 0.0f, - 0.0f, 0.0f, 0.0f, 0.0f, - 0.0f, 0.0f, 0.0f, 0.0f, - 0.0f, 0.0f, 0.0f, 0.0f, - 0.0f, 0.0f, 0.0f, 0.0f, - 0.0f, 0.0f, 0.0f, 0.0f, - 0.0f, 0.0f, 0.0f, 0.0f, - 0.0f, 0.0f, 0.0f, 0.0f}, - std::vector{ - 500.0f, 234.0f, - 219.0f, 99.0f, - -1004.0f, -1040.0f, - -1112.0f, -1148.0f}, - {1, 1}, - {0, 0}, - {0, 0}, - {1, 1}, - 2, - 2, - "integral_offset_groups_and_deforgroups"), - DeformableConvolutionParams(PartialShape {1, 1, 4, 4}, - PartialShape {1, 1, 2, 2}, - PartialShape {1, 8, 3, 3}, - PartialShape {1, 1, 3, 3}, - IN_ET, - std::vector{ - 1.0f, 2.0f, 3.0f, 4.0f, - 5.0f, 6.0f, 7.0f, 8.0f, - 9.0f, 10.0f, 11.0f, 12.0f, - 13.0f, 14.0f, 15.0f, 16.0f}, - std::vector{ - 1.0f, 2.0f, - -1.0f, -2.0f}, - std::vector{ - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f}, - std::vector{ - -11.999998f, -11.999999f, -4.000000f, - -10.799999f, -10.800001f, -3.600004f, - 44.300000f, 47.100000f, 16.000000f}, - {1, 1}, - {0, 0}, - {0, 0}, - {1, 1}, - 1, - 1, - "real_offset_default"), - DeformableConvolutionParams(PartialShape {1, 1, 4, 4}, - PartialShape {1, 1, 3, 3}, - PartialShape {1, 18, 4, 4}, - PartialShape {1, 1, 4, 4}, - IN_ET, - std::vector{ - 1.0f, 3.0f, 7.0f, 7.0f, - 7.0f, 6.0f, 3.0f, 1.0f, - 4.0f, 4.0f, 2.0f, 8.0f, - 1.0f, 1.0f, 1.0f, 2.0f}, - std::vector{ - 1.0f, 2.0f, 3.0f, - 0.0f, 1.0f, 0.0f, - 3.0f, 2.0f, 1.0f}, - std::vector{ - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f}, - std::vector{ - 54.870006f, 61.630001f, 43.230003f, 28.600002f, - 35.590000f, 25.819999f, 20.880001f, 7.700000f, - 19.089998f, 31.719999f, 19.250000f, 7.399999f, - 6.299999f, 9.199999f, 5.099999f, 2.000000f}, - {1, 1}, - {1, 1}, - {1, 1}, - {1, 1}, - 1, - 1, - "real_offset_padding"), - DeformableConvolutionParams(PartialShape {1, 1, 5, 5}, - PartialShape {1, 1, 3, 3}, - PartialShape {1, 18, 2, 2}, - PartialShape {1, 1, 2, 2}, - IN_ET, - std::vector{ - 1.0f, 3.0f, 5.0f, 7.0f, 9.0f, - 7.0f, 5.0f, 3.0f, 1.0f, 0.0f, - 2.0f, 4.0f, 6.0f, 8.0f, 10.0f, - 8.0f, 6.0f, 4.0f, 2.0f, 0.0f, - 2.0f, 4.0f, 6.0f, 8.0f, 10.0f}, - std::vector{ - 1.0f, 2.0f, 3.0f, - 1.0f, 1.0f, 1.0f, - 3.0f, 2.0f, 1.0f}, - std::vector{ - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f}, - std::vector{ - 61.229999f, 29.509998f, - 39.640003f, 22.640003f}, - {2, 2}, - {0, 0}, - {0, 0}, - {1, 1}, - 1, - 1, - "real_offset_stride"), - DeformableConvolutionParams(PartialShape {1, 1, 7, 7}, - PartialShape {1, 1, 3, 3}, - PartialShape {1, 18, 4, 4}, - PartialShape {1, 1, 4, 4}, - IN_ET, - std::vector{ - 1.0f, 3.0f, 5.0f, 7.0f, 9.0f, 11.0f, 13.0f, - 7.0f, 5.0f, 3.0f, 1.0f, -1.0f, -3.0f, -5.0f, - 2.0f, 4.0f, 6.0f, 8.0f, 10.0f, 12.0f, 14.0f, - 8.0f, 6.0f, 4.0f, 2.0f, 0.0f, -2.0f, -4.0f, - 2.0f, 4.0f, 6.0f, 8.0f, 10.0f, 12.0f, 14.0f, - 7.0f, 5.0f, 3.0f, 1.0f, -1.0f, -3.0f, -5.0f, - 8.0f, 6.0f, 4.0f, 2.0f, 0.0f, -2.0f, -4.0f}, - std::vector{ - 1.0f, 2.0f, 3.0f, - 1.0f, 1.0f, 0.0f, - 3.0f, 1.0f, 2.0f}, - std::vector{ - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f}, - std::vector{ - 15.260000f, 24.119997f, 6.439994f, -3.940005f, - 26.440002f, 20.319999f, -0.500001f, -11.720002f, - 23.500003f, 14.040000f, -1.279998f, -3.860000f, - 12.500000f, -2.599999f, -5.299999f, -3.099999f}, - {2, 2}, - {2, 2}, - {2, 2}, - {2, 2}, - 1, - 1, - "real_offset_padding_stride_dialation"), - DeformableConvolutionParams(PartialShape {1, 2, 4, 4}, - PartialShape {1, 2, 3, 3}, - PartialShape {1, 18, 2, 2}, - PartialShape {1, 1, 2, 2}, - IN_ET, - std::vector{ - // channel 1 - 1.0f, 3.0f, 5.0f, 7.0f, - 7.0f, 5.0f, 3.0f, 1.0f, - 2.0f, 4.0f, 6.0f, 8.0f, - 8.0f, 6.0f, 4.0f, 2.0f, - // channel 2 - -1.0f, 3.0f, -5.0f, 7.0f, - 7.0f, -5.0f, 3.0f, -1.0f, - -2.0f, 4.0f, -6.0f, 8.0f, - 8.0f, -6.0f, 4.0f, -2.0f}, - std::vector{ - // channel 1 - 5.0f, 3.0f, 5.0f, - 1.0f, 3.0f, 1.0f, - 4.0f, 2.0f, 4.0f, - // channel 2 - -5.0f, 3.0f, 5.0f, - 1.0f, -3.0f, 1.0f, - 4.0f, 2.0f, -4.0f}, - std::vector{ - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f}, - std::vector{ - 148.000000f, 43.259998f, - 91.279998f, 111.199996f}, - {1, 1}, - {0, 0}, - {0, 0}, - {1, 1}, - 1, - 1, - "real_offset_input_channels"), - DeformableConvolutionParams(PartialShape {1, 1, 4, 4}, - PartialShape {2, 1, 2, 2}, - PartialShape {1, 8, 3, 3}, - PartialShape {1, 2, 3, 3}, - IN_ET, - std::vector{ - 1.0f, 2.0f, 3.0f, 4.0f, - 5.0f, 6.0f, 7.0f, 8.0f, - 9.0f, 10.0f, 11.0f, 12.0f, - 13.0f, 14.0f, 15.0f, 16.0f}, - std::vector{ - // filter 1 - 1.0f, 2.0f, - -1.0f, -2.0f, - // filter 2 - 3.0f, 4.0f, - -3.0f, -4.0f}, - std::vector{ - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f}, - std::vector{ - // output 1 - -12.000000f, -12.000000f, -4.000000f, - -10.799999f, -10.799995f, -3.600000f, - 44.299999f, 47.099998f, 16.000000f, - // output 2 - -28.000000f, -28.000000f, -12.000000f, - -25.200000f, -25.199993f, -10.800003f, - 102.699996f, 109.300003f, 48.000000f}, - {1, 1}, - {0, 0}, - {0, 0}, - {1, 1}, - 1, - 1, - "real_offset_output_channels"), - DeformableConvolutionParams(PartialShape {2, 1, 4, 4}, - PartialShape {1, 1, 2, 2}, - PartialShape {2, 8, 3, 3}, - PartialShape {2, 2, 3, 3}, - IN_ET, - std::vector{ - //batch 1 - 1.0f, 2.0f, 3.0f, 4.0f, - 5.0f, 6.0f, 7.0f, 8.0f, - 9.0f, 10.0f, 11.0f, 12.0f, - 13.0f, 14.0f, 15.0f, 16.0f, - //batch 2 - 17.0f, 18.0f, 19.0f, 20.0f, - 21.0f, 22.0f, 23.0f, 24.0f, - 25.0f, 26.0f, 27.0f, 28.0f, - 29.0f, 30.0f, 31.0f, 32.0f}, - std::vector{ - 1.0f, 2.0f, - -1.0f, -2.0f}, - std::vector{ - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f}, - std::vector{ - // batch 1 - -12.000000f, -12.000000f, -4.000000f, - -10.799999f, -10.799995f, -3.600000f, - 44.299999f, 47.099998f, 16.000000f, - // batch 2 - -12.000000f, -12.000000f, -4.000000f, - -10.799999f, -10.799995f, -3.600000f, - 92.300003f, 95.099998f, 32.000000f}, - {1, 1}, - {0, 0}, - {0, 0}, - {1, 1}, - 1, - 1, - "real_offset_batch"), - DeformableConvolutionParams(PartialShape {1, 4, 3, 3}, - PartialShape {2, 2, 2, 2}, - PartialShape {1, 8, 2, 2}, - PartialShape {1, 2, 2, 2}, - IN_ET, - std::vector{ - // channel 1 - 1.0f, 2.0f, 3.0f, - 4.0f, 5.0f, 6.0f, - 7.0f, 8.0f, 9.0f, - // channel 2 - 10.0f, 11.0f, 12.0f, - 13.0f, 14.0f, 15.0f, - 16.0f, 17.0f, 18.0f, - // channel 3 - 19.0f, 20.0f, 21.0f, - 22.0f, 23.0f, 24.0f, - 25.0f, 26.0f, 27.0f, - // channel 4 - 28.0f, 29.0f, 30.0f, - 31.0f, 32.0f, 33.0f, - 34.0f, 35.0f, 36.0f}, - std::vector{ - // filter 1 channel 1 - 1.0f, 2.0f, - 3.0f, 4.0f, - // filter 1 channel 2 - 5.0f, 6.0f, - 7.0f, 8.0f, - // filter 2 channel 1 - -1.0f, -2.0f, - -3.0f, -4.0f, - // filter 2 channel 2 - -5.0f, -6.0f, - -7.0f, -8.0f}, - std::vector{ - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f}, - std::vector{ - // channel 1 - 505.800020f, 235.800000f, - 219.600000f, 99.000000f, - // channel 2 - -1153.800000f, -523.800000f, - -471.600000f, -207.0000000f}, - {1, 1}, - {0, 0}, - {0, 0}, - {1, 1}, - 2, - 1, - "real_offset_group_basic"), - DeformableConvolutionParams(PartialShape {1, 8, 3, 3}, - PartialShape {4, 2, 2, 2}, - PartialShape {1, 8, 2, 2}, - PartialShape {1, 4, 2, 2}, - IN_ET, - std::vector{ - // channel 1 - 1.0f, 2.0f, 3.0f, - 4.0f, 5.0f, 6.0f, - 7.0f, 8.0f, 9.0f, - // channel 2 - 10.0f, 11.0f, 12.0f, - 13.0f, 14.0f, 15.0f, - 16.0f, 17.0f, 18.0f, - // channel 3 - 19.0f, 20.0f, 21.0f, - 22.0f, 23.0f, 24.0f, - 25.0f, 26.0f, 27.0f, - // channel 4 - 28.0f, 29.0f, 30.0f, - 31.0f, 32.0f, 33.0f, - 34.0f, 35.0f, 36.0f, - // channel 5 - 37.0f, 38.0f, 39.0f, - 40.0f, 41.0f, 42.0f, - 43.0f, 44.0f, 45.0f, - // channel 6 - 46.0f, 47.0f, 48.0f, - 49.0f, 50.0f, 51.0f, - 52.0f, 53.0f, 54.0f, - // channel 7 - 55.0f, 56.0f, 57.0f, - 58.0f, 59.0f, 60.0f, - 61.0f, 62.0f, 63.0f, - // channel 8 - 64.0f, 65.0f, 66.0f, - 67.0f, 68.0f, 69.0f, - 70.0f, 71.0f, 72.0f}, - std::vector{ - // filter 1 channel 1 - 1.0f, 2.0f, - 3.0f, 4.0f, - // filter 1 channel 2 - 5.0f, 6.0f, - 7.0f, 8.0f, - // filter 2 channel 1 - 9.0f, 10.0f, - 11.0f, 12.0f, - // filter 2 channel 2 - 13.0f, 14.0f, - 15.0f, 16.0f, - // filter 3 channel 1 - -1.0f, -2.0f, - -3.0f, -4.0f, - // filter 3 channel 2 - -5.0f, -6.0f, - -7.0f, -8.0f, - // filter 4 channel 1 - -9.0f, -10.0f, - -11.0f, -12.0f, - // filter 4 channel 2 - -13.0f, -14.0f, - -15.0f, -16.0f}, - std::vector{ - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f}, - std::vector{ - // channel 1 - 505.800020f, 235.800000f, - 219.600000f, 99.000000f, - // channel 2 - 3054.600000f, 1488.600000f, - 1465.200100f, 711.000000f, - // channel 3 - -1801.799900f, -811.80000f, - -723.600000f, -315.000000f, - // channel 4 - -6654.600000f, -3216.600000f, - -3121.200000f, -1503.000000f}, - {1, 1}, - {0, 0}, - {0, 0}, - {1, 1}, - 4, - 1, - "real_offset_groups_complex"), - DeformableConvolutionParams(PartialShape {1, 2, 4, 4}, - PartialShape {2, 2, 2, 2}, - PartialShape {1, 16, 3, 3}, - PartialShape {1, 2, 3, 3}, - IN_ET, - std::vector{ - // channel 1 - 1.0f, 2.0f, 3.0f, 4.0f, - 5.0f, 6.0f, 7.0f, 8.0f, - 9.0f, 10.0f, 11.0f, 12.0f, - 13.0f, 14.0f, 15.0f, 16.0f, - // channel 2 - 17.0f, 18.0f, 19.0f, 20.0f, - 21.0f, 22.0f, 23.0f, 24.0f, - 25.0f, 26.0f, 27.0f, 28.0f, - 29.0f, 30.0f, 31.0f, 32.0f}, - std::vector{ - // f1: channel 1 - 1.0f, 2.0f, - 3.0f, 4.0f, - // f1: channel 2 - 5.0f, 6.0f, - 7.0f, 8.0f, - // f2: channel 1 - -1.0f, -2.0f, - -3.0f, -4.0f, - // f2: channel 2 - -5.0f, -6.0f, - -7.0f, -8.0f}, - std::vector{ - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f}, - std::vector{ - // output 1 - 758.000000f, 792.000000f, 366.399993f, - 893.200012f, 927.200012f, 426.399993f, - 381.399993f, 394.600006f, 176.000000f, - // output 2 - -758.000000f, -792.000000f, -366.399993f, - -893.200012f, -927.200012f, -426.399993f, - -381.399993f, -394.600006f, -176.000000f}, - {1, 1}, - {0, 0}, - {0, 0}, - {1, 1}, - 1, - 2, - "real_offset_deforgroup_basic"), - DeformableConvolutionParams(PartialShape {1, 4, 4, 4}, - PartialShape {2, 4, 2, 2}, - PartialShape {1, 32, 3, 3}, - PartialShape {1, 2, 3, 3}, - IN_ET, - std::vector{ - // channel 1 - 1.0f, 2.0f, 3.0f, 4.0f, - 5.0f, 6.0f, 7.0f, 8.0f, - 9.0f, 10.0f, 11.0f, 12.0f, - 13.0f, 14.0f, 15.0f, 16.0f, - // channel 2 - 17.0f, 18.0f, 19.0f, 20.0f, - 21.0f, 22.0f, 23.0f, 24.0f, - 25.0f, 26.0f, 27.0f, 28.0f, - 29.0f, 30.0f, 31.0f, 32.0f, - // channel 3 - 1.0f, 2.0f, 3.0f, 4.0f, - 5.0f, 6.0f, 7.0f, 8.0f, - 9.0f, 10.0f, 11.0f, 12.0f, - 13.0f, 14.0f, 15.0f, 16.0f, - // channel 4 - 17.0f, 18.0f, 19.0f, 20.0f, - 21.0f, 22.0f, 23.0f, 24.0f, - 25.0f, 26.0f, 27.0f, 28.0f, - 29.0f, 30.0f, 31.0f, 32.0f}, - std::vector{ - // f1: channel 1 - 1.0f, 2.0f, - 3.0f, 4.0f, - // f1: channel 2 - 5.0f, 6.0f, - 7.0f, 8.0f, - // f1: channel 3 - 1.0f, 2.0f, - 3.0f, 4.0f, - // f1: channel 4 - 5.0f, 6.0f, - 7.0f, 8.0f, - // f2: channel 1 - -1.0f, -2.0f, - -3.0f, -4.0f, - // f2: channel 2 - -5.0f, -6.0f, - -7.0f, -8.0f, - // f2: channel 3 - -1.0f, -2.0f, - -3.0f, -4.0f, - // f2: channel 4 - -5.0f, -6.0f, - -7.0f, -8.0f}, - std::vector{ - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f}, - std::vector{ - // output 1 - 1516.000000f, 1583.999877f, 732.799987f, - 1786.400146f, 1854.400024f, 852.799987f, - 762.799987f, 789.200012f, 352.000000f, - // output 2 - -1516.000000f, -1583.999877f, -732.799987f, - -1786.400146f, -1854.400024f, -852.799987f, - -762.799987f, -789.200012f, -352.000000f}, - {1, 1}, - {0, 0}, - {0, 0}, - {1, 1}, - 1, - 4, - "real_offset_deforgroup_complex1"), - DeformableConvolutionParams(PartialShape {1, 4, 4, 4}, - PartialShape {2, 4, 2, 2}, - PartialShape {1, 16, 3, 3}, - PartialShape {1, 2, 3, 3}, - IN_ET, - std::vector{ - // channel 1 - 1.0f, 2.0f, 3.0f, 4.0f, - 5.0f, 6.0f, 7.0f, 8.0f, - 9.0f, 10.0f, 11.0f, 12.0f, - 13.0f, 14.0f, 15.0f, 16.0f, - // channel 2 - 17.0f, 18.0f, 19.0f, 20.0f, - 21.0f, 22.0f, 23.0f, 24.0f, - 25.0f, 26.0f, 27.0f, 28.0f, - 29.0f, 30.0f, 31.0f, 32.0f, - // channel 3 - 1.0f, 2.0f, 3.0f, 4.0f, - 5.0f, 6.0f, 7.0f, 8.0f, - 9.0f, 10.0f, 11.0f, 12.0f, - 13.0f, 14.0f, 15.0f, 16.0f, - // channel 4 - 17.0f, 18.0f, 19.0f, 20.0f, - 21.0f, 22.0f, 23.0f, 24.0f, - 25.0f, 26.0f, 27.0f, 28.0f, - 29.0f, 30.0f, 31.0f, 32.0f}, - std::vector{ - // f1: channel 1 - 1.0f, 2.0f, - 3.0f, 4.0f, - // f1: channel 2 - 5.0f, 6.0f, - 7.0f, 8.0f, - // f1: channel 3 - 1.0f, 2.0f, - 3.0f, 4.0f, - // f1: channel 4 - 5.0f, 6.0f, - 7.0f, 8.0f, - // f2: channel 1 - -1.0f, -2.0f, - -3.0f, -4.0f, - // f2: channel 2 - -5.0f, -6.0f, - -7.0f, -8.0f, - // f2: channel 3 - -1.0f, -2.0f, - -3.0f, -4.0f, - // f2: channel 4 - -5.0f, -6.0f, - -7.0f, -8.0f}, - std::vector{ - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f}, - std::vector{ - // output 1 - 1516.000000f, 1583.999877f, 732.799987f, - 1786.400146f, 1854.400024f, 852.799987f, - 762.799987f, 789.200012f, 352.000000f, - // output 2 - -1516.000000f, -1583.999877f, -732.799987f, - -1786.400146f, -1854.400024f, -852.799987f, - -762.799987f, -789.200012f, -352.000000f}, - {1, 1}, - {0, 0}, - {0, 0}, - {1, 1}, - 1, - 2, - "real_offset_deforgroup_complex2"), - DeformableConvolutionParams(PartialShape {1, 4, 3, 3}, - PartialShape {2, 2, 2, 2}, - PartialShape {1, 16, 2, 2}, - PartialShape {1, 2, 2, 2}, - IN_ET, - std::vector{ - 1.0f, 2.0f, 3.0f, - 4.0f, 5.0f, 6.0f, - 7.0f, 8.0f, 9.0f, - 10.0f, 11.0f, 12.0f, - 13.0f, 14.0f, 15.0f, - 16.0f, 17.0f, 18.0f, - 19.0f, 20.0f, 21.0f, - 22.0f, 23.0f, 24.0f, - 25.0f, 26.0f, 27.0f, - 28.0f, 29.0f, 30.0f, - 31.0f, 32.0f, 33.0f, - 34.0f, 35.0f, 36.0f}, - std::vector{ - 1.0f, 2.0f, - 3.0f, 4.0f, - 5.0f, 6.0f, - 7.0f, 8.0f, - -1.0f, -2.0f, - -3.0f, -4.0f, - -5.0f, -6.0f, - -7.0f, -8.0f}, - std::vector{ - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f}, - std::vector{ - 505.800020f, 235.800000f, - 219.600000f, 99.000000f, - -1153.800000f, -523.800000f, - -471.600000f, -207.000000f}, - {1, 1}, - {0, 0}, - {0, 0}, - {1, 1}, - 2, - 2, - "real_offset_groups_and_deforgroups"), + std::vector deformableConvolutionParams{ + // --------------------- 2D DeformableConvolution ------------------------------------------ + DeformableConvolutionParams( + PartialShape{1, 1, 4, 4}, + PartialShape{1, 1, 2, 2}, + PartialShape{1, 8, 3, 3}, + PartialShape{1, 1, 3, 3}, + IN_ET, + std::vector{1.0f, + 2.0f, + 3.0f, + 4.0f, + 5.0f, + 6.0f, + 7.0f, + 8.0f, + 9.0f, + 10.0f, + 11.0f, + 12.0f, + 13.0f, + 14.0f, + 15.0f, + 16.0f}, + std::vector{1.0f, 2.0f, -1.0f, -2.0f}, + std::vector{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + std::vector{-12.0f, -12.0f, -12.0f, -12.0f, -12.0f, -12.0f, -12.0f, -12.0f, -12.0f}, + {1, 1}, + {0, 0}, + {0, 0}, + {1, 1}), + DeformableConvolutionParams( + PartialShape{1, 1, 3, 3}, + PartialShape{1, 1, 2, 2}, + PartialShape{1, 8, 4, 4}, + PartialShape{1, 1, 4, 4}, + IN_ET, + std::vector{1.0f, 3.0f, 5.0f, 7.0f, 5.0f, 3.0f, 1.0f, 3.0f, 5.0f}, + std::vector{1.0f, 2.0f, 0.0f, 1.0f}, + std::vector{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + std::vector{1.0f, + 3.0f, + 5.0f, + 0.0f, + 9.0f, + 12.0f, + 16.0f, + 5.0f, + 15.0f, + 20.0f, + 16.0f, + 3.0f, + 2.0f, + 7.0f, + 13.0f, + 5.0f}, + {1, 1}, + {1, 1}, + {1, 1}, + {1, 1}), + DeformableConvolutionParams( + PartialShape{1, 1, 5, 5}, + PartialShape{1, 1, 3, 3}, + PartialShape{1, 18, 2, 2}, + PartialShape{1, 1, 2, 2}, + IN_ET, + std::vector{1.0f, 3.0f, 5.0f, 7.0f, 9.0f, 7.0f, 5.0f, 3.0f, 1.0f, 0.0f, 2.0f, 4.0f, 6.0f, + 8.0f, 10.0f, 8.0f, 6.0f, 4.0f, 2.0f, 0.0f, 2.0f, 4.0f, 6.0f, 8.0f, 10.0f}, + std::vector{1.0f, 2.0f, 3.0f, 1.0f, 1.0f, 1.0f, 3.0f, 2.0f, 1.0f}, + std::vector{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + std::vector{57.0f, 94.0f, 66.0f, 102.0f}, + {2, 2}, + {0, 0}, + {0, 0}, + {1, 1}), + DeformableConvolutionParams( + PartialShape{1, 1, 7, 7}, + PartialShape{1, 1, 3, 3}, + PartialShape{1, 18, 3, 3}, + PartialShape{1, 1, 3, 3}, + IN_ET, + std::vector{1.0f, 3.0f, 5.0f, 7.0f, 9.0f, 11.0f, 13.0f, 7.0f, 5.0f, 3.0f, 1.0f, -1.0f, -3.0f, + -5.0f, 2.0f, 4.0f, 6.0f, 8.0f, 10.0f, 12.0f, 14.0f, 8.0f, 6.0f, 4.0f, 2.0f, 0.0f, + -2.0f, -4.0f, 2.0f, 4.0f, 6.0f, 8.0f, 10.0f, 12.0f, 14.0f, 7.0f, 5.0f, 3.0f, 1.0f, + -1.0f, -3.0f, -5.0f, 8.0f, 6.0f, 4.0f, 2.0f, 0.0f, -2.0f, -4.0f}, + std::vector{1.0f, 2.0f, 3.0f, 1.0f, 1.0f, 0.0f, 3.0f, 1.0f, 2.0f}, + std::vector{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + std::vector{78.0f, 106.0f, 134.0f, 44.0f, 16.0f, -12.0f, 80.0f, 84.0f, 88.0f}, + {1, 1}, + {0, 0}, + {0, 0}, + {2, 2}), + DeformableConvolutionParams( + PartialShape{1, 1, 7, 7}, + PartialShape{1, 1, 3, 3}, + PartialShape{1, 18, 4, 4}, + PartialShape{1, 1, 4, 4}, + IN_ET, + std::vector{1.0f, 3.0f, 5.0f, 7.0f, 9.0f, 11.0f, 13.0f, 7.0f, 5.0f, 3.0f, 1.0f, -1.0f, -3.0f, + -5.0f, 2.0f, 4.0f, 6.0f, 8.0f, 10.0f, 12.0f, 14.0f, 8.0f, 6.0f, 4.0f, 2.0f, 0.0f, + -2.0f, -4.0f, 2.0f, 4.0f, 6.0f, 8.0f, 10.0f, 12.0f, 14.0f, 7.0f, 5.0f, 3.0f, 1.0f, + -1.0f, -3.0f, -5.0f, 8.0f, 6.0f, 4.0f, 2.0f, 0.0f, -2.0f, -4.0f}, + std::vector{1.0f, 2.0f, 3.0f, 1.0f, 1.0f, 0.0f, 3.0f, 1.0f, 2.0f}, + std::vector{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + std::vector{15.0f, + 38.0f, + 70.0f, + 66.0f, + 33.0f, + 78.0f, + 134.0f, + 103.0f, + 40.0f, + 80.0f, + 88.0f, + 58.0f, + 30.0f, + 56.0f, + 72.0f, + 34.0f}, + {2, 2}, + {2, 2}, + {2, 2}, + {2, 2}), + DeformableConvolutionParams( + PartialShape{1, 2, 4, 4}, + PartialShape{1, 2, 3, 3}, + PartialShape{1, 18, 2, 2}, + PartialShape{1, 1, 2, 2}, + IN_ET, + std::vector{// channel 1 + 1.0f, + 3.0f, + 5.0f, + 7.0f, + 7.0f, + 5.0f, + 3.0f, + 1.0f, + 2.0f, + 4.0f, + 6.0f, + 8.0f, + 8.0f, + 6.0f, + 4.0f, + 2.0f, + // channel 2 + -1.0f, + 3.0f, + -5.0f, + 7.0f, + 7.0f, + -5.0f, + 3.0f, + -1.0f, + -2.0f, + 4.0f, + -6.0f, + 8.0f, + 8.0f, + -6.0f, + 4.0f, + -2.0f}, + std::vector{// channel 1 + 5.0f, + 3.0f, + 5.0f, + 1.0f, + 3.0f, + 1.0f, + 4.0f, + 2.0f, + 4.0f, + // channel 2 + -5.0f, + 3.0f, + 5.0f, + 1.0f, + -3.0f, + 1.0f, + 4.0f, + 2.0f, + -4.0f}, + std::vector{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + std::vector{142.0f, 102.0f, 94.0f, 160.0f}, + {1, 1}, + {0, 0}, + {0, 0}, + {1, 1}), + DeformableConvolutionParams( + PartialShape{1, 1, 4, 4}, + PartialShape{2, 1, 3, 3}, + PartialShape{1, 18, 2, 2}, + PartialShape{1, 2, 2, 2}, + IN_ET, + std::vector< + T>{1.0f, 3.0f, 5.0f, 7.0f, 7.0f, 5.0f, 3.0f, 1.0f, 2.0f, 4.0f, 6.0f, 8.0f, 8.0f, 6.0f, 4.0f, 2.0f}, + std::vector{// channel 1 + 5.0f, + 3.0f, + 5.0f, + 1.0f, + 3.0f, + 1.0f, + 4.0f, + 2.0f, + 4.0f, + // channel 2 + -5.0f, + 3.0f, + 5.0f, + 1.0f, + -3.0f, + 1.0f, + 4.0f, + 2.0f, + -4.0f}, + std::vector{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + std::vector{// channel 1 + 104.0f, + 140.0f, + 145.0f, + 109.0f, + // channel 2 + 16.0f, + 28.0f, + 19.0f, + 7.0f}, + {1, 1}, + {0, 0}, + {0, 0}, + {1, 1}), + DeformableConvolutionParams( + PartialShape{2, 1, 4, 4}, + PartialShape{1, 1, 3, 3}, + PartialShape{2, 18, 2, 2}, + PartialShape{2, 1, 2, 2}, + IN_ET, + std::vector{// batch 1 + 1.0f, + 3.0f, + 2.0f, + 1.0f, + 1.0f, + 3.0f, + 3.0f, + 1.0f, + 2.0f, + 1.0f, + 1.0f, + 3.0f, + 3.0f, + 2.0f, + 3.0f, + 3.0f, + // batch 2 + -1.0f, + 3.0f, + 2.0f, + -1.0f, + 1.0f, + 3.0f, + -3.0f, + 1.0f, + -2.0f, + -1.0f, + 1.0f, + 3.0f, + 3.0f, + 2.0f, + 3.0f, + -3.0f}, + std::vector{-5.0f, 3.0f, 5.0f, 1.0f, -3.0f, 1.0f, 4.0f, 2.0f, -4.0f}, + std::vector{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + std::vector{// batch 1 + 15.0f, + -15.0f, + 23.0f, + 2.0f, + // batch 2 + -1.0f, + -15.0f, + -5.0f, + 6.0f}, + {1, 1}, + {0, 0}, + {0, 0}, + {1, 1}), + DeformableConvolutionParams(PartialShape{1, 4, 3, 3}, + PartialShape{2, 2, 2, 2}, + PartialShape{1, 8, 2, 2}, + PartialShape{1, 2, 2, 2}, + IN_ET, + std::vector{// channel 1 + 1.0f, + 2.0f, + 3.0f, + 4.0f, + 5.0f, + 6.0f, + 7.0f, + 8.0f, + 9.0f, + // channel 2 + 10.0f, + 11.0f, + 12.0f, + 13.0f, + 14.0f, + 15.0f, + 16.0f, + 17.0f, + 18.0f, + // channel 3 + 19.0f, + 20.0f, + 21.0f, + 22.0f, + 23.0f, + 24.0f, + 25.0f, + 26.0f, + 27.0f, + // channel 4 + 28.0f, + 29.0f, + 30.0f, + 31.0f, + 32.0f, + 33.0f, + 34.0f, + 35.0f, + 36.0f}, + std::vector{// filter 1 channel 1 + 1.0f, + 2.0f, + 3.0f, + 4.0f, + // filter 1 channel 2 + 5.0f, + 6.0f, + 7.0f, + 8.0f, + // filter 2 channel 1 + -1.0f, + -2.0f, + -3.0f, + -4.0f, + // filter 2 channel 2 + -5.0f, + -6.0f, + -7.0f, + -8.0f}, + std::vector{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + std::vector{// channel 1 + 356.0f, + 392.0f, + 464.0f, + 500.0f, + // channel 2 + -1004.0f, + -1040.0f, + -1112.0f, + -1148.0f}, + {1, 1}, + {0, 0}, + {0, 0}, + {1, 1}, + 2), + DeformableConvolutionParams(PartialShape{1, 8, 3, 3}, + PartialShape{4, 2, 2, 2}, + PartialShape{1, 8, 2, 2}, + PartialShape{1, 4, 2, 2}, + IN_ET, + std::vector{// channel 1 + 1.0f, + 2.0f, + 3.0f, + 4.0f, + 5.0f, + 6.0f, + 7.0f, + 8.0f, + 9.0f, + // channel 2 + 10.0f, + 11.0f, + 12.0f, + 13.0f, + 14.0f, + 15.0f, + 16.0f, + 17.0f, + 18.0f, + // channel 3 + 19.0f, + 20.0f, + 21.0f, + 22.0f, + 23.0f, + 24.0f, + 25.0f, + 26.0f, + 27.0f, + // channel 4 + 28.0f, + 29.0f, + 30.0f, + 31.0f, + 32.0f, + 33.0f, + 34.0f, + 35.0f, + 36.0f, + // channel 5 + 37.0f, + 38.0f, + 39.0f, + 40.0f, + 41.0f, + 42.0f, + 43.0f, + 44.0f, + 45.0f, + // channel 6 + 46.0f, + 47.0f, + 48.0f, + 49.0f, + 50.0f, + 51.0f, + 52.0f, + 53.0f, + 54.0f, + // channel 7 + 55.0f, + 56.0f, + 57.0f, + 58.0f, + 59.0f, + 60.0f, + 61.0f, + 62.0f, + 63.0f, + // channel 8 + 64.0f, + 65.0f, + 66.0f, + 67.0f, + 68.0f, + 69.0f, + 70.0f, + 71.0f, + 72.0f}, + std::vector{// filter 1 channel 1 + 1.0f, + 2.0f, + 3.0f, + 4.0f, + // filter 1 channel 2 + 5.0f, + 6.0f, + 7.0f, + 8.0f, + // filter 2 channel 1 + 9.0f, + 10.0f, + 11.0f, + 12.0f, + // filter 2 channel 2 + 13.0f, + 14.0f, + 15.0f, + 16.0f, + // filter 3 channel 1 + -1.0f, + -2.0f, + -3.0f, + -4.0f, + // filter 3 channel 2 + -5.0f, + -6.0f, + -7.0f, + -8.0f, + // filter 4 channel 1 + -9.0f, + -10.0f, + -11.0f, + -12.0f, + // filter 4 channel 2 + -13.0f, + -14.0f, + -15.0f, + -16.0f}, + std::vector{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + std::vector{// channel 1 + 356.0f, + 392.0f, + 464.0f, + 500.0f, + // channel 2 + 2636.0f, + 2736.0f, + 2936.0f, + 3036.0f, + // channel 3 + -1652.0f, + -1688.0f, + -1760.0f, + -1796.0f, + // channel 4 + -6236.0f, + -6336.0f, + -6536.0f, + -6636.0f}, + {1, 1}, + {0, 0}, + {0, 0}, + {1, 1}, + 4), + DeformableConvolutionParams( + PartialShape{1, 2, 4, 4}, + PartialShape{1, 2, 2, 2}, + PartialShape{1, 8, 3, 3}, + PartialShape{1, 1, 3, 3}, + IN_ET, + std::vector{// channel 1 + 1.0f, + 2.0f, + 3.0f, + 4.0f, + 5.0f, + 6.0f, + 7.0f, + 8.0f, + 9.0f, + 10.0f, + 11.0f, + 12.0f, + 13.0f, + 14.0f, + 15.0f, + 16.0f, + // channel 2 + 17.0f, + 18.0f, + 19.0f, + 20.0f, + 21.0f, + 22.0f, + 23.0f, + 24.0f, + 25.0f, + 26.0f, + 27.0f, + 28.0f, + 29.0f, + 30.0f, + 31.0f, + 32.0f}, + std::vector{// channel 1 + 1.0f, + 2.0f, + -1.0f, + -2.0f, + // channel 2 + 3.0f, + 4.0f, + -3.0f, + -4.0f}, + std::vector{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + std::vector{-40.0f, -40.0f, -40.0f, -40.0f, -40.0f, -40.0f, -40.0f, -40.0f, -40.0f}, + {1, 1}, + {0, 0}, + {0, 0}, + {1, 1}), + DeformableConvolutionParams( + PartialShape{1, 4, 3, 3}, + PartialShape{2, 2, 2, 2}, + PartialShape{1, 16, 2, 2}, + PartialShape{1, 2, 2, 2}, + IN_ET, + std::vector{1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0f, 8.0f, 9.0f, 10.0f, 11.0f, 12.0f, + 13.0f, 14.0f, 15.0f, 16.0f, 17.0f, 18.0f, 19.0f, 20.0f, 21.0f, 22.0f, 23.0f, 24.0f, + 25.0f, 26.0f, 27.0f, 28.0f, 29.0f, 30.0f, 31.0f, 32.0f, 33.0f, 34.0f, 35.0f, 36.0f}, + std::vector{1.0f, + 2.0f, + 3.0f, + 4.0f, + 5.0f, + 6.0f, + 7.0f, + 8.0f, + -1.0f, + -2.0f, + -3.0f, + -4.0f, + -5.0f, + -6.0f, + -7.0f, + -8.0f}, + std::vector{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + std::vector{356.0f, 392.0f, 464.0f, 500.0f, -1004.0f, -1040.0f, -1112.0f, -1148.0f}, + {1, 1}, + {0, 0}, + {0, 0}, + {1, 1}, + 2, + 2), + DeformableConvolutionParams(PartialShape{1, 1, 4, 4}, + PartialShape{1, 1, 2, 2}, + PartialShape{1, 8, 3, 3}, + PartialShape{1, 1, 3, 3}, + IN_ET, + std::vector{1.0f, + 2.0f, + 3.0f, + 4.0f, + 5.0f, + 6.0f, + 7.0f, + 8.0f, + 9.0f, + 10.0f, + 11.0f, + 12.0f, + 13.0f, + 14.0f, + 15.0f, + 16.0f}, + std::vector{1.0f, 2.0f, -1.0f, -2.0f}, + std::vector{// window 1 (Y=0, X=0) -> Y coordinate + 1.0f, + 1.0f, + 1.0f, // out1 .. out 3 + 1.0f, + 1.0f, + 1.0f, // out4 .. out 6 + 1.0f, + 1.0f, + 1.0f, // out7 .. out 9 + // window 1 (Y=0, X=0) -> X coordinate + 1.0f, + 1.0f, + 1.0f, // out1 .. out 3 + 1.0f, + 1.0f, + 1.0f, // out4 .. out 6 + 1.0f, + 1.0f, + 1.0f, // out7 .. out 9 + // window 2 + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + // window 2 + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + // window 3 + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + // window 3 + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + // window 4 + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + // window 4 + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f}, + std::vector{-12.0f, -12.0f, -4.0f, -12.0f, -12.0f, -4.0f, 44.0f, 47.0f, 16.0f}, + {1, 1}, + {0, 0}, + {0, 0}, + {1, 1}, + 1, + 1, + "integral_offsets_1"), + DeformableConvolutionParams( + PartialShape{1, 1, 4, 4}, + PartialShape{1, 1, 3, 3}, + PartialShape{1, 18, 4, 4}, + PartialShape{1, 1, 4, 4}, + IN_ET, + std::vector< + T>{1.0f, 3.0f, 7.0f, 7.0f, 7.0f, 6.0f, 3.0f, 1.0f, 4.0f, 4.0f, 2.0f, 8.0f, 1.0f, 1.0f, 1.0f, 2.0f}, + std::vector{1.0f, 2.0f, 3.0f, 0.0f, 1.0f, 0.0f, 3.0f, 2.0f, 1.0f}, + std::vector{ + 1.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 0.0f, 2.0f, 1.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 0.0f, 2.0f, + + 1.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 0.0f, 2.0f, 1.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 0.0f, 2.0f, + + 1.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 0.0f, 2.0f, 1.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 0.0f, 2.0f, + + 1.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 0.0f, 2.0f, 1.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 0.0f, 2.0f, + + 1.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 0.0f, 2.0f, 1.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 0.0f, 2.0f, + + 1.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 0.0f, 2.0f, 1.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 0.0f, 2.0f, + + 1.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 0.0f, 2.0f, 1.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 0.0f, 2.0f, + + 1.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 0.0f, 2.0f, 1.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 0.0f, 2.0f, + + 1.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 0.0f, 2.0f, 1.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 0.0f, 2.0f, + + 1.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 0.0f, 2.0f, 1.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 0.0f, 2.0f, + + 1.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 0.0f, 2.0f, 1.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 0.0f, 2.0f, + + 1.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 0.0f, 2.0f, 1.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 0.0f, 2.0f, + + 1.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 0.0f, 2.0f, 1.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 0.0f, 2.0f, + + 1.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 0.0f, 2.0f, 1.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 0.0f, 2.0f, + + 1.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 0.0f, 2.0f, 1.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 0.0f, 2.0f, + + 1.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 0.0f, 2.0f, 1.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 0.0f, 2.0f, + + 1.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 0.0f, 2.0f, 1.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 0.0f, 2.0f, + + 1.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 0.0f, 2.0f, 1.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 0.0f, 2.0f}, + std::vector{56.0f, + 39.0f, + 44.0f, + 18.0f, + 38.0f, + 56.0f, + 65.0f, + 0.0f, + 19.0f, + 38.0f, + 20.0f, + 20.0f, + 6.0f, + 19.0f, + 33.0f, + 0.0f}, + {1, 1}, + {1, 1}, + {1, 1}, + {1, 1}), + DeformableConvolutionParams( + PartialShape{1, 1, 5, 5}, + PartialShape{1, 1, 3, 3}, + PartialShape{1, 18, 2, 2}, + PartialShape{1, 1, 2, 2}, + IN_ET, + std::vector{1.0f, 3.0f, 5.0f, 7.0f, 9.0f, 7.0f, 5.0f, 3.0f, 1.0f, 0.0f, 2.0f, 4.0f, 6.0f, + 8.0f, 10.0f, 8.0f, 6.0f, 4.0f, 2.0f, 0.0f, 2.0f, 4.0f, 6.0f, 8.0f, 10.0f}, + std::vector{1.0f, 2.0f, 3.0f, 1.0f, 1.0f, 1.0f, 3.0f, 2.0f, 1.0f}, + std::vector{0.0f, 2.0f, 1.0f, 0.0f, 0.0f, 2.0f, 1.0f, 0.0f, 0.0f, 2.0f, 1.0f, 0.0f, 0.0f, 2.0f, 1.0f, + 0.0f, 0.0f, 2.0f, 1.0f, 0.0f, 0.0f, 2.0f, 1.0f, 0.0f, 0.0f, 2.0f, 1.0f, 0.0f, 0.0f, 2.0f, + 1.0f, 0.0f, 0.0f, 2.0f, 1.0f, 0.0f, 0.0f, 2.0f, 1.0f, 0.0f, 0.0f, 2.0f, 1.0f, 0.0f, 0.0f, + 2.0f, 1.0f, 0.0f, 0.0f, 2.0f, 1.0f, 0.0f, 0.0f, 2.0f, 1.0f, 0.0f, 0.0f, 2.0f, 1.0f, 0.0f, + 0.0f, 2.0f, 1.0f, 0.0f, 0.0f, 2.0f, 1.0f, 0.0f, 0.0f, 2.0f, 1.0f, 0.0f}, + std::vector{57.0f, 40.0f, 38.0f, 102.0f}, + {2, 2}, + {0, 0}, + {0, 0}, + {1, 1}, + 1, + 1, + "integral_offsets_stride"), + DeformableConvolutionParams( + PartialShape{1, 1, 7, 7}, + PartialShape{1, 1, 3, 3}, + PartialShape{1, 18, 3, 3}, + PartialShape{1, 1, 3, 3}, + IN_ET, + std::vector{1.0f, 3.0f, 5.0f, 7.0f, 9.0f, 11.0f, 13.0f, 7.0f, 5.0f, 3.0f, 1.0f, -1.0f, -3.0f, + -5.0f, 2.0f, 4.0f, 6.0f, 8.0f, 10.0f, 12.0f, 14.0f, 8.0f, 6.0f, 4.0f, 2.0f, 0.0f, + -2.0f, -4.0f, 2.0f, 4.0f, 6.0f, 8.0f, 10.0f, 12.0f, 14.0f, 7.0f, 5.0f, 3.0f, 1.0f, + -1.0f, -3.0f, -5.0f, 8.0f, 6.0f, 4.0f, 2.0f, 0.0f, -2.0f, -4.0f}, + std::vector{1.0f, 2.0f, 3.0f, 1.0f, 1.0f, 0.0f, 3.0f, 1.0f, 2.0f}, + std::vector{1.0f, 1.0f, 0.0f, 0.0f, 2.0f, 0.0f, 1.0f, 0.0f, 1.0f, 1.0f, 1.0f, 0.0f, 0.0f, 2.0f, 0.0f, + 1.0f, 0.0f, 1.0f, 1.0f, 1.0f, 0.0f, 0.0f, 2.0f, 0.0f, 1.0f, 0.0f, 1.0f, 1.0f, 1.0f, 0.0f, + 0.0f, 2.0f, 0.0f, 1.0f, 0.0f, 1.0f, 1.0f, 1.0f, 0.0f, 0.0f, 2.0f, 0.0f, 1.0f, 0.0f, 1.0f, + 1.0f, 1.0f, 0.0f, 0.0f, 2.0f, 0.0f, 1.0f, 0.0f, 1.0f, 1.0f, 1.0f, 0.0f, 0.0f, 2.0f, 0.0f, + 1.0f, 0.0f, 1.0f, 1.0f, 1.0f, 0.0f, 0.0f, 2.0f, 0.0f, 1.0f, 0.0f, 1.0f, 1.0f, 1.0f, 0.0f, + 0.0f, 2.0f, 0.0f, 1.0f, 0.0f, 1.0f, 1.0f, 1.0f, 0.0f, 0.0f, 2.0f, 0.0f, 1.0f, 0.0f, 1.0f, + 1.0f, 1.0f, 0.0f, 0.0f, 2.0f, 0.0f, 1.0f, 0.0f, 1.0f, 1.0f, 1.0f, 0.0f, 0.0f, 2.0f, 0.0f, + 1.0f, 0.0f, 1.0f, 1.0f, 1.0f, 0.0f, 0.0f, 2.0f, 0.0f, 1.0f, 0.0f, 1.0f, 1.0f, 1.0f, 0.0f, + 0.0f, 2.0f, 0.0f, 1.0f, 0.0f, 1.0f, 1.0f, 1.0f, 0.0f, 0.0f, 2.0f, 0.0f, 1.0f, 0.0f, 1.0f, + 1.0f, 1.0f, 0.0f, 0.0f, 2.0f, 0.0f, 1.0f, 0.0f, 1.0f, 1.0f, 1.0f, 0.0f, 0.0f, 2.0f, 0.0f, + 1.0f, 0.0f, 1.0f, 1.0f, 2.0f, 0.0f, 0.0f, 2.0f, 0.0f, 1.0f, 0.0f, 1.0f}, + std::vector{16.0f, -2.0f, 134.0f, 44.0f, -4.0f, -12.0f, 10.0f, 84.0f, -4.0f}, + {1, 1}, + {0, 0}, + {0, 0}, + {2, 2}, + 1, + 1, + "integral_offset_dialation"), + DeformableConvolutionParams( + PartialShape{1, 1, 7, 7}, + PartialShape{1, 1, 3, 3}, + PartialShape{1, 18, 4, 4}, + PartialShape{1, 1, 4, 4}, + IN_ET, + std::vector{1.0f, 3.0f, 5.0f, 7.0f, 9.0f, 11.0f, 13.0f, 7.0f, 5.0f, 3.0f, 1.0f, -1.0f, -3.0f, + -5.0f, 2.0f, 4.0f, 6.0f, 8.0f, 10.0f, 12.0f, 14.0f, 8.0f, 6.0f, 4.0f, 2.0f, 0.0f, + -2.0f, -4.0f, 2.0f, 4.0f, 6.0f, 8.0f, 10.0f, 12.0f, 14.0f, 7.0f, 5.0f, 3.0f, 1.0f, + -1.0f, -3.0f, -5.0f, 8.0f, 6.0f, 4.0f, 2.0f, 0.0f, -2.0f, -4.0f}, + std::vector{1.0f, 2.0f, 3.0f, 1.0f, 1.0f, 0.0f, 3.0f, 1.0f, 2.0f}, + std::vector{ + 1.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 0.0f, 2.0f, 1.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 0.0f, 2.0f, + + 1.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 0.0f, 2.0f, 1.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 0.0f, 2.0f, + + 1.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 0.0f, 2.0f, 1.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 0.0f, 2.0f, + + 1.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 0.0f, 2.0f, 1.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 0.0f, 2.0f, + + 1.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 0.0f, 2.0f, 1.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 0.0f, 2.0f, + + 1.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 0.0f, 2.0f, 1.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 0.0f, 2.0f, + + 1.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 0.0f, 2.0f, 1.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 0.0f, 2.0f, + + 1.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 0.0f, 2.0f, 1.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 0.0f, 2.0f, + + 1.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 0.0f, 2.0f, 1.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 0.0f, 2.0f, + + 1.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 0.0f, 2.0f, 1.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 0.0f, 2.0f, + + 1.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 0.0f, 2.0f, 1.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 0.0f, 2.0f, + + 1.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 0.0f, 2.0f, 1.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 0.0f, 2.0f, + + 1.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 0.0f, 2.0f, 1.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 0.0f, 2.0f, + + 1.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 0.0f, 2.0f, 1.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 0.0f, 2.0f, + + 1.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 0.0f, 2.0f, 1.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 0.0f, 2.0f, + + 1.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 0.0f, 2.0f, 1.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 0.0f, 2.0f, + + 1.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 0.0f, 2.0f, 1.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 0.0f, 2.0f, + + 1.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 0.0f, 2.0f, 1.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 0.0f, 2.0f}, + std::vector{15.0f, + 38.0f, + 2.0f, + 66.0f, + 26.0f, + 78.0f, + 134.0f, + 16.0f, + 23.0f, + 80.0f, + -4.0f, + 58.0f, + 13.0f, + 56.0f, + 72.0f, + -4.0f}, + {2, 2}, + {2, 2}, + {2, 2}, + {2, 2}, + 1, + 1, + "integral_offset_padding_stride_dialation"), + DeformableConvolutionParams( + PartialShape{1, 2, 4, 4}, + PartialShape{1, 2, 3, 3}, + PartialShape{1, 18, 2, 2}, + PartialShape{1, 1, 2, 2}, + IN_ET, + std::vector{// channel 1 + 1.0f, + 3.0f, + 5.0f, + 7.0f, + 7.0f, + 5.0f, + 3.0f, + 1.0f, + 2.0f, + 4.0f, + 6.0f, + 8.0f, + 8.0f, + 6.0f, + 4.0f, + 2.0f, + // channel 2 + -1.0f, + 3.0f, + -5.0f, + 7.0f, + 7.0f, + -5.0f, + 3.0f, + -1.0f, + -2.0f, + 4.0f, + -6.0f, + 8.0f, + 8.0f, + -6.0f, + 4.0f, + -2.0f}, + std::vector{// channel 1 + 5.0f, + 3.0f, + 5.0f, + 1.0f, + 3.0f, + 1.0f, + 4.0f, + 2.0f, + 4.0f, + // channel 2 + -5.0f, + 3.0f, + 5.0f, + 1.0f, + -3.0f, + 1.0f, + 4.0f, + 2.0f, + -4.0f}, + std::vector{1.0f, 1.0f, 0.0f, 2.0f, 1.0f, 1.0f, 0.0f, 2.0f, 1.0f, 1.0f, 0.0f, 2.0f, 1.0f, 1.0f, 0.0f, + 2.0f, 1.0f, 1.0f, 0.0f, 2.0f, 1.0f, 1.0f, 0.0f, 2.0f, 1.0f, 1.0f, 0.0f, 2.0f, 1.0f, 1.0f, + 0.0f, 2.0f, 1.0f, 1.0f, 0.0f, 2.0f, 1.0f, 1.0f, 0.0f, 2.0f, 1.0f, 1.0f, 0.0f, 2.0f, 1.0f, + 1.0f, 0.0f, 2.0f, 1.0f, 1.0f, 0.0f, 2.0f, 1.0f, 1.0f, 0.0f, 2.0f, 1.0f, 1.0f, 0.0f, 2.0f, + 1.0f, 1.0f, 0.0f, 2.0f, 1.0f, 1.0f, 0.0f, 2.0f, 1.0f, 1.0f, 0.0f, 2.0f}, + std::vector{160.0f, 32.0f, 94.0f, 20.0f}, + {1, 1}, + {0, 0}, + {0, 0}, + {1, 1}, + 1, + 1, + "integral_offset_input_channels"), + DeformableConvolutionParams(PartialShape{1, 1, 4, 4}, + PartialShape{2, 1, 2, 2}, + PartialShape{1, 8, 3, 3}, + PartialShape{1, 2, 3, 3}, + IN_ET, + std::vector{1.0f, + 2.0f, + 3.0f, + 4.0f, + 5.0f, + 6.0f, + 7.0f, + 8.0f, + 9.0f, + 10.0f, + 11.0f, + 12.0f, + 13.0f, + 14.0f, + 15.0f, + 16.0f}, + std::vector{// filter 1 + 1.0f, + 2.0f, + -1.0f, + -2.0f, + // filter 2 + 3.0f, + 4.0f, + -3.0f, + -4.0f}, + std::vector{// channel 1: Y offsets + 1.0f, + 1.0f, + 1.0f, // out1 .. out 3 + 1.0f, + 1.0f, + 1.0f, // out4 .. out 6 + 1.0f, + 1.0f, + 1.0f, // out7 .. out 9 + // channel 1: X offsets + 1.0f, + 1.0f, + 1.0f, // out1 .. out 3 + 1.0f, + 1.0f, + 1.0f, // out4 .. out 6 + 1.0f, + 1.0f, + 1.0f, // out7 .. out 9 + // channel 2: Y offsets + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + // channel 2: X offsets + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + // channel 3: Y offsets + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + // channel 3: X offsets + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + // channel 4: Y offsets + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + // channel 4: X offsets + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f}, + std::vector{// output 1 + -12.0f, + -12.0f, + -4.0f, + -12.0f, + -12.0f, + -4.0f, + 44.0f, + 47.0f, + 16.0f, + // output 2 + -28.0f, + -28.0f, + -12.0f, + -28.0f, + -28.0f, + -12.0f, + 102.0f, + 109.0f, + 48.0f}, + {1, 1}, + {0, 0}, + {0, 0}, + {1, 1}, + 1, + 1, + "integral_offset_output_channels"), + DeformableConvolutionParams(PartialShape{2, 1, 4, 4}, + PartialShape{1, 1, 2, 2}, + PartialShape{2, 8, 3, 3}, + PartialShape{2, 1, 3, 3}, + IN_ET, + std::vector{// batch 1 + 1.0f, + 2.0f, + 3.0f, + 4.0f, + 5.0f, + 6.0f, + 7.0f, + 8.0f, + 9.0f, + 10.0f, + 11.0f, + 12.0f, + 13.0f, + 14.0f, + 15.0f, + 16.0f, + // batch 2 + 17.0f, + 18.0f, + 19.0f, + 20.0f, + 21.0f, + 22.0f, + 23.0f, + 24.0f, + 25.0f, + 26.0f, + 27.0f, + 28.0f, + 29.0f, + 30.0f, + 31.0f, + 32.0f}, + std::vector{1.0f, 2.0f, -1.0f, -2.0f}, + std::vector{// batch1 + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + // batch2 + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f}, + std::vector{// batch 1 + -12.0f, + -12.0f, + -4.0f, + -12.0f, + -12.0f, + -4.0f, + 44.0f, + 47.0f, + 16.0f, + // batch 2 + -12.0f, + -12.0f, + -12.0f, + -12.0f, + -12.0f, + -12.0f, + -12.0f, + -12.0f, + -12.0f}, + {1, 1}, + {0, 0}, + {0, 0}, + {1, 1}, + 1, + 1, + "integral_offset_batch"), + DeformableConvolutionParams(PartialShape{1, 4, 3, 3}, + PartialShape{2, 2, 2, 2}, + PartialShape{1, 8, 2, 2}, + PartialShape{1, 2, 2, 2}, + IN_ET, + std::vector{// channel 1 + 1.0f, + 2.0f, + 3.0f, + 4.0f, + 5.0f, + 6.0f, + 7.0f, + 8.0f, + 9.0f, + // channel 2 + 10.0f, + 11.0f, + 12.0f, + 13.0f, + 14.0f, + 15.0f, + 16.0f, + 17.0f, + 18.0f, + // channel 3 + 19.0f, + 20.0f, + 21.0f, + 22.0f, + 23.0f, + 24.0f, + 25.0f, + 26.0f, + 27.0f, + // channel 4 + 28.0f, + 29.0f, + 30.0f, + 31.0f, + 32.0f, + 33.0f, + 34.0f, + 35.0f, + 36.0f}, + std::vector{// filter 1 channel 1 + 1.0f, + 2.0f, + 3.0f, + 4.0f, + // filter 1 channel 2 + 5.0f, + 6.0f, + 7.0f, + 8.0f, + // filter 2 channel 1 + -1.0f, + -2.0f, + -3.0f, + -4.0f, + // filter 2 channel 2 + -5.0f, + -6.0f, + -7.0f, + -8.0f}, + std::vector{// window 1 (F_Y=0, F_X=0) -> I_Y coordinate + 1.0f, + 0.0f, + 2.0f, + 1.0f, // out1 .. out 4 + // window 1 (F_Y=0, F_X=0) -> I_X coordinate + 0.0f, + 1.0f, + 1.0f, + 2.0f, // out1 .. out 4 + // window 2 (F_Y=0, F_X=1) -> I_Y coordinate + 1.0f, + 1.0f, + 1.0f, + 1.0f, // out1 .. out 4 + // window 2 (F_Y=0, F_X=1) -> I_X coordinate + 1.0f, + 1.0f, + 1.0f, + 1.0f, // out1 .. out 4 + // window 3 (F_Y=1, F_X=0) -> I_Y coordinate + 2.0f, + 2.0f, + 2.0f, + 2.0f, // out1 .. out 4 + // window 3 (F_Y=1, F_X=0) -> I_X coordinate + 2.0f, + 2.0f, + 2.0f, + 2.0f, // out1 .. out 4 + // window 4 (F_Y=1, F_X=1) -> I_Y coordinate + 2.0f, + 2.0f, + 2.0f, + 2.0f, // out1 .. out 4 + // window 4 (F_Y=1, F_X=1) -> I_X coordinate + 2.0f, + 2.0f, + 2.0f, + 2.0f}, // out1 .. out 4 + std::vector{ // channel 1 + 171.0f, + 63.0f, + 126.0f, + 0.0f, + // channel 2 + -423.0f, + -171.0f, + -270.0f, + 0.0f}, + {1, 1}, + {0, 0}, + {0, 0}, + {1, 1}, + 2, + 1, + "integral_offset_groups_basic"), + DeformableConvolutionParams(PartialShape{1, 8, 3, 3}, + PartialShape{4, 2, 2, 2}, + PartialShape{1, 8, 2, 2}, + PartialShape{1, 4, 2, 2}, + IN_ET, + std::vector{// channel 1 + 1.0f, + 2.0f, + 3.0f, + 4.0f, + 5.0f, + 6.0f, + 7.0f, + 8.0f, + 9.0f, + // channel 2 + 10.0f, + 11.0f, + 12.0f, + 13.0f, + 14.0f, + 15.0f, + 16.0f, + 17.0f, + 18.0f, + // channel 3 + 19.0f, + 20.0f, + 21.0f, + 22.0f, + 23.0f, + 24.0f, + 25.0f, + 26.0f, + 27.0f, + // channel 4 + 28.0f, + 29.0f, + 30.0f, + 31.0f, + 32.0f, + 33.0f, + 34.0f, + 35.0f, + 36.0f, + // channel 5 + 37.0f, + 38.0f, + 39.0f, + 40.0f, + 41.0f, + 42.0f, + 43.0f, + 44.0f, + 45.0f, + // channel 6 + 46.0f, + 47.0f, + 48.0f, + 49.0f, + 50.0f, + 51.0f, + 52.0f, + 53.0f, + 54.0f, + // channel 7 + 55.0f, + 56.0f, + 57.0f, + 58.0f, + 59.0f, + 60.0f, + 61.0f, + 62.0f, + 63.0f, + // channel 8 + 64.0f, + 65.0f, + 66.0f, + 67.0f, + 68.0f, + 69.0f, + 70.0f, + 71.0f, + 72.0f}, + std::vector{// filter 1 channel 1 + 1.0f, + 2.0f, + 3.0f, + 4.0f, + // filter 1 channel 2 + 5.0f, + 6.0f, + 7.0f, + 8.0f, + // filter 2 channel 1 + 9.0f, + 10.0f, + 11.0f, + 12.0f, + // filter 2 channel 2 + 13.0f, + 14.0f, + 15.0f, + 16.0f, + // filter 3 channel 1 + -1.0f, + -2.0f, + -3.0f, + -4.0f, + // filter 3 channel 2 + -5.0f, + -6.0f, + -7.0f, + -8.0f, + // filter 4 channel 1 + -9.0f, + -10.0f, + -11.0f, + -12.0f, + // filter 4 channel 2 + -13.0f, + -14.0f, + -15.0f, + -16.0f}, + std::vector{1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, + 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, + 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f}, + std::vector{// channel 1 + 500.0f, + 234.0f, + 219.0f, + 99.0f, + // channel 2 + 3036.0f, + 1482.0f, + 1463.0f, + 711.0f, + // channel 3 + -1796.0f, + -810.0f, + -723.0f, + -315.0f, + // channel 4 + -6636.0f, + -3210.0f, + -3119.0f, + -1503.0f}, + {1, 1}, + {0, 0}, + {0, 0}, + {1, 1}, + 4, + 1, + "integral_offset_groups_complex"), + DeformableConvolutionParams(PartialShape{1, 2, 4, 4}, + PartialShape{2, 2, 2, 2}, + PartialShape{1, 16, 3, 3}, + PartialShape{1, 2, 3, 3}, + IN_ET, + std::vector{// channel 1 + 1.0f, + 2.0f, + 3.0f, + 4.0f, + 5.0f, + 6.0f, + 7.0f, + 8.0f, + 9.0f, + 10.0f, + 11.0f, + 12.0f, + 13.0f, + 14.0f, + 15.0f, + 16.0f, + // channel 2 + 17.0f, + 18.0f, + 19.0f, + 20.0f, + 21.0f, + 22.0f, + 23.0f, + 24.0f, + 25.0f, + 26.0f, + 27.0f, + 28.0f, + 29.0f, + 30.0f, + 31.0f, + 32.0f}, + std::vector{// f1: channel 1 + 1.0f, + 2.0f, + 3.0f, + 4.0f, + // f1: channel 2 + 5.0f, + 6.0f, + 7.0f, + 8.0f, + // f2: channel 1 + -1.0f, + -2.0f, + -3.0f, + -4.0f, + // f2: channel 2 + -5.0f, + -6.0f, + -7.0f, + -8.0f}, + std::vector{// defgroup 1 + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + // defgroup 2 + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f}, + std::vector{// output 1 + 610.0f, + 646.0f, + 612.0f, + 754.0f, + 790.0f, + 732.0f, + 768.0f, + 797.0f, + 792.0f, + // output 2 + -610.0f, + -646.0f, + -612.0f, + -754.0f, + -790.0f, + -732.0f, + -768.0f, + -797.0f, + -792.0f}, + {1, 1}, + {0, 0}, + {0, 0}, + {1, 1}, + 1, + 2, + "integral_offset_deforgroup_basic"), + DeformableConvolutionParams(PartialShape{1, 4, 4, 4}, + PartialShape{2, 4, 2, 2}, + PartialShape{1, 32, 3, 3}, + PartialShape{1, 2, 3, 3}, + IN_ET, + std::vector{// channel 1 + 1.0f, + 2.0f, + 3.0f, + 4.0f, + 5.0f, + 6.0f, + 7.0f, + 8.0f, + 9.0f, + 10.0f, + 11.0f, + 12.0f, + 13.0f, + 14.0f, + 15.0f, + 16.0f, + // channel 2 + 17.0f, + 18.0f, + 19.0f, + 20.0f, + 21.0f, + 22.0f, + 23.0f, + 24.0f, + 25.0f, + 26.0f, + 27.0f, + 28.0f, + 29.0f, + 30.0f, + 31.0f, + 32.0f, + // channel 3 + 1.0f, + 2.0f, + 3.0f, + 4.0f, + 5.0f, + 6.0f, + 7.0f, + 8.0f, + 9.0f, + 10.0f, + 11.0f, + 12.0f, + 13.0f, + 14.0f, + 15.0f, + 16.0f, + // channel 4 + 17.0f, + 18.0f, + 19.0f, + 20.0f, + 21.0f, + 22.0f, + 23.0f, + 24.0f, + 25.0f, + 26.0f, + 27.0f, + 28.0f, + 29.0f, + 30.0f, + 31.0f, + 32.0f}, + std::vector{// f1: channel 1 + 1.0f, + 2.0f, + 3.0f, + 4.0f, + // f1: channel 2 + 5.0f, + 6.0f, + 7.0f, + 8.0f, + // f1: channel 3 + 1.0f, + 2.0f, + 3.0f, + 4.0f, + // f1: channel 4 + 5.0f, + 6.0f, + 7.0f, + 8.0f, + // f2: channel 1 + -1.0f, + -2.0f, + -3.0f, + -4.0f, + // f2: channel 2 + -5.0f, + -6.0f, + -7.0f, + -8.0f, + // f2: channel 3 + -1.0f, + -2.0f, + -3.0f, + -4.0f, + // f2: channel 4 + -5.0f, + -6.0f, + -7.0f, + -8.0f}, + std::vector{// defgroup 1 + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + // defgroup 2 + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + + // defgroup 3 + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + // defgroup 4 + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f}, + std::vector{// output 1 + 1220.0f, + 1292.0f, + 1224.0f, + 1508.0f, + 1580.0f, + 1464.0f, + 1536.0f, + 1594.0f, + 1584.0f, + // output 2 + -1220.0f, + -1292.0f, + -1224.0f, + -1508.0f, + -1580.0f, + -1464.0f, + -1536.0f, + -1594.0f, + -1584.0f}, + {1, 1}, + {0, 0}, + {0, 0}, + {1, 1}, + 1, + 4, + "integral_offset_deforgroup_complex1"), + DeformableConvolutionParams(PartialShape{1, 4, 4, 4}, + PartialShape{2, 4, 2, 2}, + PartialShape{1, 16, 3, 3}, + PartialShape{1, 2, 3, 3}, + IN_ET, + std::vector{// channel 1 + 1.0f, + 2.0f, + 3.0f, + 4.0f, + 5.0f, + 6.0f, + 7.0f, + 8.0f, + 9.0f, + 10.0f, + 11.0f, + 12.0f, + 13.0f, + 14.0f, + 15.0f, + 16.0f, + // channel 2 + 17.0f, + 18.0f, + 19.0f, + 20.0f, + 21.0f, + 22.0f, + 23.0f, + 24.0f, + 25.0f, + 26.0f, + 27.0f, + 28.0f, + 29.0f, + 30.0f, + 31.0f, + 32.0f, + // channel 3 + 1.0f, + 2.0f, + 3.0f, + 4.0f, + 5.0f, + 6.0f, + 7.0f, + 8.0f, + 9.0f, + 10.0f, + 11.0f, + 12.0f, + 13.0f, + 14.0f, + 15.0f, + 16.0f, + // channel 4 + 17.0f, + 18.0f, + 19.0f, + 20.0f, + 21.0f, + 22.0f, + 23.0f, + 24.0f, + 25.0f, + 26.0f, + 27.0f, + 28.0f, + 29.0f, + 30.0f, + 31.0f, + 32.0f}, + std::vector{// f1: channel 1 + 1.0f, + 2.0f, + 3.0f, + 4.0f, + // f1: channel 2 + 5.0f, + 6.0f, + 7.0f, + 8.0f, + // f1: channel 3 + 1.0f, + 2.0f, + 3.0f, + 4.0f, + // f1: channel 4 + 5.0f, + 6.0f, + 7.0f, + 8.0f, + // f2: channel 1 + -1.0f, + -2.0f, + -3.0f, + -4.0f, + // f2: channel 2 + -5.0f, + -6.0f, + -7.0f, + -8.0f, + // f2: channel 3 + -1.0f, + -2.0f, + -3.0f, + -4.0f, + // f2: channel 4 + -5.0f, + -6.0f, + -7.0f, + -8.0f}, + std::vector{// defgroup 1 + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + // defgroup 2 + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f}, + std::vector{// output 1 + 1300.0f, + 1372.0f, + 992.0f, + 1588.0f, + 1660.0f, + 1200.0f, + 1228.0f, + 1278.0f, + 1096.0f, + // output 2 + -1300.0f, + -1372.0f, + -992.0f, + -1588.0f, + -1660.0f, + -1200.0f, + -1228.0f, + -1278.0f, + -1096.0f}, + {1, 1}, + {0, 0}, + {0, 0}, + {1, 1}, + 1, + 2, + "integral_offset_deforgroup_complex2"), + DeformableConvolutionParams( + PartialShape{1, 4, 3, 3}, + PartialShape{2, 2, 2, 2}, + PartialShape{1, 16, 2, 2}, + PartialShape{1, 2, 2, 2}, + IN_ET, + std::vector{1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0f, 8.0f, 9.0f, 10.0f, 11.0f, 12.0f, + 13.0f, 14.0f, 15.0f, 16.0f, 17.0f, 18.0f, 19.0f, 20.0f, 21.0f, 22.0f, 23.0f, 24.0f, + 25.0f, 26.0f, 27.0f, 28.0f, 29.0f, 30.0f, 31.0f, 32.0f, 33.0f, 34.0f, 35.0f, 36.0f}, + std::vector{1.0f, + 2.0f, + 3.0f, + 4.0f, + 5.0f, + 6.0f, + 7.0f, + 8.0f, + -1.0f, + -2.0f, + -3.0f, + -4.0f, + -5.0f, + -6.0f, + -7.0f, + -8.0f}, + std::vector{// defgroup 1 + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + // defgroup 2 + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f}, + std::vector{500.0f, 234.0f, 219.0f, 99.0f, -1004.0f, -1040.0f, -1112.0f, -1148.0f}, + {1, 1}, + {0, 0}, + {0, 0}, + {1, 1}, + 2, + 2, + "integral_offset_groups_and_deforgroups"), + DeformableConvolutionParams( + PartialShape{1, 1, 4, 4}, + PartialShape{1, 1, 2, 2}, + PartialShape{1, 8, 3, 3}, + PartialShape{1, 1, 3, 3}, + IN_ET, + std::vector{1.0f, + 2.0f, + 3.0f, + 4.0f, + 5.0f, + 6.0f, + 7.0f, + 8.0f, + 9.0f, + 10.0f, + 11.0f, + 12.0f, + 13.0f, + 14.0f, + 15.0f, + 16.0f}, + std::vector{1.0f, 2.0f, -1.0f, -2.0f}, + std::vector{1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f}, + std::vector{-11.999998f, + -11.999999f, + -4.000000f, + -10.799999f, + -10.800001f, + -3.600004f, + 44.300000f, + 47.100000f, + 16.000000f}, + {1, 1}, + {0, 0}, + {0, 0}, + {1, 1}, + 1, + 1, + "real_offset_default"), + DeformableConvolutionParams( + PartialShape{1, 1, 4, 4}, + PartialShape{1, 1, 3, 3}, + PartialShape{1, 18, 4, 4}, + PartialShape{1, 1, 4, 4}, + IN_ET, + std::vector< + T>{1.0f, 3.0f, 7.0f, 7.0f, 7.0f, 6.0f, 3.0f, 1.0f, 4.0f, 4.0f, 2.0f, 8.0f, 1.0f, 1.0f, 1.0f, 2.0f}, + std::vector{1.0f, 2.0f, 3.0f, 0.0f, 1.0f, 0.0f, 3.0f, 2.0f, 1.0f}, + std::vector{ + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f}, + std::vector{54.870006f, + 61.630001f, + 43.230003f, + 28.600002f, + 35.590000f, + 25.819999f, + 20.880001f, + 7.700000f, + 19.089998f, + 31.719999f, + 19.250000f, + 7.399999f, + 6.299999f, + 9.199999f, + 5.099999f, + 2.000000f}, + {1, 1}, + {1, 1}, + {1, 1}, + {1, 1}, + 1, + 1, + "real_offset_padding"), + DeformableConvolutionParams( + PartialShape{1, 1, 5, 5}, + PartialShape{1, 1, 3, 3}, + PartialShape{1, 18, 2, 2}, + PartialShape{1, 1, 2, 2}, + IN_ET, + std::vector{1.0f, 3.0f, 5.0f, 7.0f, 9.0f, 7.0f, 5.0f, 3.0f, 1.0f, 0.0f, 2.0f, 4.0f, 6.0f, + 8.0f, 10.0f, 8.0f, 6.0f, 4.0f, 2.0f, 0.0f, 2.0f, 4.0f, 6.0f, 8.0f, 10.0f}, + std::vector{1.0f, 2.0f, 3.0f, 1.0f, 1.0f, 1.0f, 3.0f, 2.0f, 1.0f}, + std::vector{1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f}, + std::vector{61.229999f, 29.509998f, 39.640003f, 22.640003f}, + {2, 2}, + {0, 0}, + {0, 0}, + {1, 1}, + 1, + 1, + "real_offset_stride"), + DeformableConvolutionParams( + PartialShape{1, 1, 7, 7}, + PartialShape{1, 1, 3, 3}, + PartialShape{1, 18, 4, 4}, + PartialShape{1, 1, 4, 4}, + IN_ET, + std::vector{1.0f, 3.0f, 5.0f, 7.0f, 9.0f, 11.0f, 13.0f, 7.0f, 5.0f, 3.0f, 1.0f, -1.0f, -3.0f, + -5.0f, 2.0f, 4.0f, 6.0f, 8.0f, 10.0f, 12.0f, 14.0f, 8.0f, 6.0f, 4.0f, 2.0f, 0.0f, + -2.0f, -4.0f, 2.0f, 4.0f, 6.0f, 8.0f, 10.0f, 12.0f, 14.0f, 7.0f, 5.0f, 3.0f, 1.0f, + -1.0f, -3.0f, -5.0f, 8.0f, 6.0f, 4.0f, 2.0f, 0.0f, -2.0f, -4.0f}, + std::vector{1.0f, 2.0f, 3.0f, 1.0f, 1.0f, 0.0f, 3.0f, 1.0f, 2.0f}, + std::vector{ + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f}, + std::vector{15.260000f, + 24.119997f, + 6.439994f, + -3.940005f, + 26.440002f, + 20.319999f, + -0.500001f, + -11.720002f, + 23.500003f, + 14.040000f, + -1.279998f, + -3.860000f, + 12.500000f, + -2.599999f, + -5.299999f, + -3.099999f}, + {2, 2}, + {2, 2}, + {2, 2}, + {2, 2}, + 1, + 1, + "real_offset_padding_stride_dialation"), + DeformableConvolutionParams( + PartialShape{1, 2, 4, 4}, + PartialShape{1, 2, 3, 3}, + PartialShape{1, 18, 2, 2}, + PartialShape{1, 1, 2, 2}, + IN_ET, + std::vector{// channel 1 + 1.0f, + 3.0f, + 5.0f, + 7.0f, + 7.0f, + 5.0f, + 3.0f, + 1.0f, + 2.0f, + 4.0f, + 6.0f, + 8.0f, + 8.0f, + 6.0f, + 4.0f, + 2.0f, + // channel 2 + -1.0f, + 3.0f, + -5.0f, + 7.0f, + 7.0f, + -5.0f, + 3.0f, + -1.0f, + -2.0f, + 4.0f, + -6.0f, + 8.0f, + 8.0f, + -6.0f, + 4.0f, + -2.0f}, + std::vector{// channel 1 + 5.0f, + 3.0f, + 5.0f, + 1.0f, + 3.0f, + 1.0f, + 4.0f, + 2.0f, + 4.0f, + // channel 2 + -5.0f, + 3.0f, + 5.0f, + 1.0f, + -3.0f, + 1.0f, + 4.0f, + 2.0f, + -4.0f}, + std::vector{1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f}, + std::vector{148.000000f, 43.259998f, 91.279998f, 111.199996f}, + {1, 1}, + {0, 0}, + {0, 0}, + {1, 1}, + 1, + 1, + "real_offset_input_channels"), + DeformableConvolutionParams( + PartialShape{1, 1, 4, 4}, + PartialShape{2, 1, 2, 2}, + PartialShape{1, 8, 3, 3}, + PartialShape{1, 2, 3, 3}, + IN_ET, + std::vector{1.0f, + 2.0f, + 3.0f, + 4.0f, + 5.0f, + 6.0f, + 7.0f, + 8.0f, + 9.0f, + 10.0f, + 11.0f, + 12.0f, + 13.0f, + 14.0f, + 15.0f, + 16.0f}, + std::vector{// filter 1 + 1.0f, + 2.0f, + -1.0f, + -2.0f, + // filter 2 + 3.0f, + 4.0f, + -3.0f, + -4.0f}, + std::vector{1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f}, + std::vector{// output 1 + -12.000000f, + -12.000000f, + -4.000000f, + -10.799999f, + -10.799995f, + -3.600000f, + 44.299999f, + 47.099998f, + 16.000000f, + // output 2 + -28.000000f, + -28.000000f, + -12.000000f, + -25.200000f, + -25.199993f, + -10.800003f, + 102.699996f, + 109.300003f, + 48.000000f}, + {1, 1}, + {0, 0}, + {0, 0}, + {1, 1}, + 1, + 1, + "real_offset_output_channels"), + DeformableConvolutionParams( + PartialShape{2, 1, 4, 4}, + PartialShape{1, 1, 2, 2}, + PartialShape{2, 8, 3, 3}, + PartialShape{2, 2, 3, 3}, + IN_ET, + std::vector{// batch 1 + 1.0f, + 2.0f, + 3.0f, + 4.0f, + 5.0f, + 6.0f, + 7.0f, + 8.0f, + 9.0f, + 10.0f, + 11.0f, + 12.0f, + 13.0f, + 14.0f, + 15.0f, + 16.0f, + // batch 2 + 17.0f, + 18.0f, + 19.0f, + 20.0f, + 21.0f, + 22.0f, + 23.0f, + 24.0f, + 25.0f, + 26.0f, + 27.0f, + 28.0f, + 29.0f, + 30.0f, + 31.0f, + 32.0f}, + std::vector{1.0f, 2.0f, -1.0f, -2.0f}, + std::vector{1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f}, + std::vector{// batch 1 + -12.000000f, + -12.000000f, + -4.000000f, + -10.799999f, + -10.799995f, + -3.600000f, + 44.299999f, + 47.099998f, + 16.000000f, + // batch 2 + -12.000000f, + -12.000000f, + -4.000000f, + -10.799999f, + -10.799995f, + -3.600000f, + 92.300003f, + 95.099998f, + 32.000000f}, + {1, 1}, + {0, 0}, + {0, 0}, + {1, 1}, + 1, + 1, + "real_offset_batch"), + DeformableConvolutionParams(PartialShape{1, 4, 3, 3}, + PartialShape{2, 2, 2, 2}, + PartialShape{1, 8, 2, 2}, + PartialShape{1, 2, 2, 2}, + IN_ET, + std::vector{// channel 1 + 1.0f, + 2.0f, + 3.0f, + 4.0f, + 5.0f, + 6.0f, + 7.0f, + 8.0f, + 9.0f, + // channel 2 + 10.0f, + 11.0f, + 12.0f, + 13.0f, + 14.0f, + 15.0f, + 16.0f, + 17.0f, + 18.0f, + // channel 3 + 19.0f, + 20.0f, + 21.0f, + 22.0f, + 23.0f, + 24.0f, + 25.0f, + 26.0f, + 27.0f, + // channel 4 + 28.0f, + 29.0f, + 30.0f, + 31.0f, + 32.0f, + 33.0f, + 34.0f, + 35.0f, + 36.0f}, + std::vector{// filter 1 channel 1 + 1.0f, + 2.0f, + 3.0f, + 4.0f, + // filter 1 channel 2 + 5.0f, + 6.0f, + 7.0f, + 8.0f, + // filter 2 channel 1 + -1.0f, + -2.0f, + -3.0f, + -4.0f, + // filter 2 channel 2 + -5.0f, + -6.0f, + -7.0f, + -8.0f}, + std::vector{1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f}, + std::vector{// channel 1 + 505.800020f, + 235.800000f, + 219.600000f, + 99.000000f, + // channel 2 + -1153.800000f, + -523.800000f, + -471.600000f, + -207.0000000f}, + {1, 1}, + {0, 0}, + {0, 0}, + {1, 1}, + 2, + 1, + "real_offset_group_basic"), + DeformableConvolutionParams(PartialShape{1, 8, 3, 3}, + PartialShape{4, 2, 2, 2}, + PartialShape{1, 8, 2, 2}, + PartialShape{1, 4, 2, 2}, + IN_ET, + std::vector{// channel 1 + 1.0f, + 2.0f, + 3.0f, + 4.0f, + 5.0f, + 6.0f, + 7.0f, + 8.0f, + 9.0f, + // channel 2 + 10.0f, + 11.0f, + 12.0f, + 13.0f, + 14.0f, + 15.0f, + 16.0f, + 17.0f, + 18.0f, + // channel 3 + 19.0f, + 20.0f, + 21.0f, + 22.0f, + 23.0f, + 24.0f, + 25.0f, + 26.0f, + 27.0f, + // channel 4 + 28.0f, + 29.0f, + 30.0f, + 31.0f, + 32.0f, + 33.0f, + 34.0f, + 35.0f, + 36.0f, + // channel 5 + 37.0f, + 38.0f, + 39.0f, + 40.0f, + 41.0f, + 42.0f, + 43.0f, + 44.0f, + 45.0f, + // channel 6 + 46.0f, + 47.0f, + 48.0f, + 49.0f, + 50.0f, + 51.0f, + 52.0f, + 53.0f, + 54.0f, + // channel 7 + 55.0f, + 56.0f, + 57.0f, + 58.0f, + 59.0f, + 60.0f, + 61.0f, + 62.0f, + 63.0f, + // channel 8 + 64.0f, + 65.0f, + 66.0f, + 67.0f, + 68.0f, + 69.0f, + 70.0f, + 71.0f, + 72.0f}, + std::vector{// filter 1 channel 1 + 1.0f, + 2.0f, + 3.0f, + 4.0f, + // filter 1 channel 2 + 5.0f, + 6.0f, + 7.0f, + 8.0f, + // filter 2 channel 1 + 9.0f, + 10.0f, + 11.0f, + 12.0f, + // filter 2 channel 2 + 13.0f, + 14.0f, + 15.0f, + 16.0f, + // filter 3 channel 1 + -1.0f, + -2.0f, + -3.0f, + -4.0f, + // filter 3 channel 2 + -5.0f, + -6.0f, + -7.0f, + -8.0f, + // filter 4 channel 1 + -9.0f, + -10.0f, + -11.0f, + -12.0f, + // filter 4 channel 2 + -13.0f, + -14.0f, + -15.0f, + -16.0f}, + std::vector{1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f}, + std::vector{// channel 1 + 505.800020f, + 235.800000f, + 219.600000f, + 99.000000f, + // channel 2 + 3054.600000f, + 1488.600000f, + 1465.200100f, + 711.000000f, + // channel 3 + -1801.799900f, + -811.80000f, + -723.600000f, + -315.000000f, + // channel 4 + -6654.600000f, + -3216.600000f, + -3121.200000f, + -1503.000000f}, + {1, 1}, + {0, 0}, + {0, 0}, + {1, 1}, + 4, + 1, + "real_offset_groups_complex"), + DeformableConvolutionParams( + PartialShape{1, 2, 4, 4}, + PartialShape{2, 2, 2, 2}, + PartialShape{1, 16, 3, 3}, + PartialShape{1, 2, 3, 3}, + IN_ET, + std::vector{// channel 1 + 1.0f, + 2.0f, + 3.0f, + 4.0f, + 5.0f, + 6.0f, + 7.0f, + 8.0f, + 9.0f, + 10.0f, + 11.0f, + 12.0f, + 13.0f, + 14.0f, + 15.0f, + 16.0f, + // channel 2 + 17.0f, + 18.0f, + 19.0f, + 20.0f, + 21.0f, + 22.0f, + 23.0f, + 24.0f, + 25.0f, + 26.0f, + 27.0f, + 28.0f, + 29.0f, + 30.0f, + 31.0f, + 32.0f}, + std::vector{// f1: channel 1 + 1.0f, + 2.0f, + 3.0f, + 4.0f, + // f1: channel 2 + 5.0f, + 6.0f, + 7.0f, + 8.0f, + // f2: channel 1 + -1.0f, + -2.0f, + -3.0f, + -4.0f, + // f2: channel 2 + -5.0f, + -6.0f, + -7.0f, + -8.0f}, + std::vector{1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f}, + std::vector{// output 1 + 758.000000f, + 792.000000f, + 366.399993f, + 893.200012f, + 927.200012f, + 426.399993f, + 381.399993f, + 394.600006f, + 176.000000f, + // output 2 + -758.000000f, + -792.000000f, + -366.399993f, + -893.200012f, + -927.200012f, + -426.399993f, + -381.399993f, + -394.600006f, + -176.000000f}, + {1, 1}, + {0, 0}, + {0, 0}, + {1, 1}, + 1, + 2, + "real_offset_deforgroup_basic"), + DeformableConvolutionParams( + PartialShape{1, 4, 4, 4}, + PartialShape{2, 4, 2, 2}, + PartialShape{1, 32, 3, 3}, + PartialShape{1, 2, 3, 3}, + IN_ET, + std::vector{// channel 1 + 1.0f, + 2.0f, + 3.0f, + 4.0f, + 5.0f, + 6.0f, + 7.0f, + 8.0f, + 9.0f, + 10.0f, + 11.0f, + 12.0f, + 13.0f, + 14.0f, + 15.0f, + 16.0f, + // channel 2 + 17.0f, + 18.0f, + 19.0f, + 20.0f, + 21.0f, + 22.0f, + 23.0f, + 24.0f, + 25.0f, + 26.0f, + 27.0f, + 28.0f, + 29.0f, + 30.0f, + 31.0f, + 32.0f, + // channel 3 + 1.0f, + 2.0f, + 3.0f, + 4.0f, + 5.0f, + 6.0f, + 7.0f, + 8.0f, + 9.0f, + 10.0f, + 11.0f, + 12.0f, + 13.0f, + 14.0f, + 15.0f, + 16.0f, + // channel 4 + 17.0f, + 18.0f, + 19.0f, + 20.0f, + 21.0f, + 22.0f, + 23.0f, + 24.0f, + 25.0f, + 26.0f, + 27.0f, + 28.0f, + 29.0f, + 30.0f, + 31.0f, + 32.0f}, + std::vector{// f1: channel 1 + 1.0f, + 2.0f, + 3.0f, + 4.0f, + // f1: channel 2 + 5.0f, + 6.0f, + 7.0f, + 8.0f, + // f1: channel 3 + 1.0f, + 2.0f, + 3.0f, + 4.0f, + // f1: channel 4 + 5.0f, + 6.0f, + 7.0f, + 8.0f, + // f2: channel 1 + -1.0f, + -2.0f, + -3.0f, + -4.0f, + // f2: channel 2 + -5.0f, + -6.0f, + -7.0f, + -8.0f, + // f2: channel 3 + -1.0f, + -2.0f, + -3.0f, + -4.0f, + // f2: channel 4 + -5.0f, + -6.0f, + -7.0f, + -8.0f}, + std::vector{ + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f}, + std::vector{// output 1 + 1516.000000f, + 1583.999877f, + 732.799987f, + 1786.400146f, + 1854.400024f, + 852.799987f, + 762.799987f, + 789.200012f, + 352.000000f, + // output 2 + -1516.000000f, + -1583.999877f, + -732.799987f, + -1786.400146f, + -1854.400024f, + -852.799987f, + -762.799987f, + -789.200012f, + -352.000000f}, + {1, 1}, + {0, 0}, + {0, 0}, + {1, 1}, + 1, + 4, + "real_offset_deforgroup_complex1"), + DeformableConvolutionParams( + PartialShape{1, 4, 4, 4}, + PartialShape{2, 4, 2, 2}, + PartialShape{1, 16, 3, 3}, + PartialShape{1, 2, 3, 3}, + IN_ET, + std::vector{// channel 1 + 1.0f, + 2.0f, + 3.0f, + 4.0f, + 5.0f, + 6.0f, + 7.0f, + 8.0f, + 9.0f, + 10.0f, + 11.0f, + 12.0f, + 13.0f, + 14.0f, + 15.0f, + 16.0f, + // channel 2 + 17.0f, + 18.0f, + 19.0f, + 20.0f, + 21.0f, + 22.0f, + 23.0f, + 24.0f, + 25.0f, + 26.0f, + 27.0f, + 28.0f, + 29.0f, + 30.0f, + 31.0f, + 32.0f, + // channel 3 + 1.0f, + 2.0f, + 3.0f, + 4.0f, + 5.0f, + 6.0f, + 7.0f, + 8.0f, + 9.0f, + 10.0f, + 11.0f, + 12.0f, + 13.0f, + 14.0f, + 15.0f, + 16.0f, + // channel 4 + 17.0f, + 18.0f, + 19.0f, + 20.0f, + 21.0f, + 22.0f, + 23.0f, + 24.0f, + 25.0f, + 26.0f, + 27.0f, + 28.0f, + 29.0f, + 30.0f, + 31.0f, + 32.0f}, + std::vector{// f1: channel 1 + 1.0f, + 2.0f, + 3.0f, + 4.0f, + // f1: channel 2 + 5.0f, + 6.0f, + 7.0f, + 8.0f, + // f1: channel 3 + 1.0f, + 2.0f, + 3.0f, + 4.0f, + // f1: channel 4 + 5.0f, + 6.0f, + 7.0f, + 8.0f, + // f2: channel 1 + -1.0f, + -2.0f, + -3.0f, + -4.0f, + // f2: channel 2 + -5.0f, + -6.0f, + -7.0f, + -8.0f, + // f2: channel 3 + -1.0f, + -2.0f, + -3.0f, + -4.0f, + // f2: channel 4 + -5.0f, + -6.0f, + -7.0f, + -8.0f}, + std::vector{1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f}, + std::vector{// output 1 + 1516.000000f, + 1583.999877f, + 732.799987f, + 1786.400146f, + 1854.400024f, + 852.799987f, + 762.799987f, + 789.200012f, + 352.000000f, + // output 2 + -1516.000000f, + -1583.999877f, + -732.799987f, + -1786.400146f, + -1854.400024f, + -852.799987f, + -762.799987f, + -789.200012f, + -352.000000f}, + {1, 1}, + {0, 0}, + {0, 0}, + {1, 1}, + 1, + 2, + "real_offset_deforgroup_complex2"), + DeformableConvolutionParams( + PartialShape{1, 4, 3, 3}, + PartialShape{2, 2, 2, 2}, + PartialShape{1, 16, 2, 2}, + PartialShape{1, 2, 2, 2}, + IN_ET, + std::vector{1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0f, 8.0f, 9.0f, 10.0f, 11.0f, 12.0f, + 13.0f, 14.0f, 15.0f, 16.0f, 17.0f, 18.0f, 19.0f, 20.0f, 21.0f, 22.0f, 23.0f, 24.0f, + 25.0f, 26.0f, 27.0f, 28.0f, 29.0f, 30.0f, 31.0f, 32.0f, 33.0f, 34.0f, 35.0f, 36.0f}, + std::vector{1.0f, + 2.0f, + 3.0f, + 4.0f, + 5.0f, + 6.0f, + 7.0f, + 8.0f, + -1.0f, + -2.0f, + -3.0f, + -4.0f, + -5.0f, + -6.0f, + -7.0f, + -8.0f}, + std::vector{1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f}, + std::vector{505.800020f, + 235.800000f, + 219.600000f, + 99.000000f, + -1153.800000f, + -523.800000f, + -471.600000f, + -207.000000f}, + {1, 1}, + {0, 0}, + {0, 0}, + {1, 1}, + 2, + 2, + "real_offset_groups_and_deforgroups"), }; return deformableConvolutionParams; } @@ -2780,1843 +4113,2608 @@ template std::vector generateDeformableConvolutionIntParams() { using T = typename element_type_traits::value_type; - std::vector deformableConvolutionParams { -// --------------------- 2D DeformableConvolution ------------------------------------------ - DeformableConvolutionParams(PartialShape {1, 1, 4, 4}, - PartialShape {1, 1, 2, 2}, - PartialShape {1, 8, 3, 3}, - PartialShape {1, 1, 3, 3}, - IN_ET, - std::vector{ - 1, 2, 3, 4, - 5, 6, 7, 8, - 9, 10, 11, 12, - 13, 14, 15, 16}, - std::vector{ - 1, 2, - -1, -2}, - std::vector{ - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0}, - std::vector{ - -12, -12, -12, - -12, -12, -12, - -12, -12, -12}, - {1, 1}, - {0, 0}, - {0, 0}, - {1, 1}), - DeformableConvolutionParams(PartialShape {1, 1, 3, 3}, - PartialShape {1, 1, 2, 2}, - PartialShape {1, 8, 4, 4}, - PartialShape {1, 1, 4, 4}, - IN_ET, - std::vector{ - 1, 3, 5, - 7, 5, 3, - 1, 3, 5}, - std::vector{ - 1, 2, - 0, 1}, - std::vector{ - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0}, - std::vector{ - 1, 3, 5, 0, - 9, 12, 16, 5, - 15, 20, 16, 3, - 2, 7, 13, 5}, - {1, 1}, - {1, 1}, - {1, 1}, - {1, 1}), - DeformableConvolutionParams(PartialShape {1, 1, 5, 5}, - PartialShape {1, 1, 3, 3}, - PartialShape {1, 18, 2, 2}, - PartialShape {1, 1, 2, 2}, - IN_ET, - std::vector{ - 1, 3, 5, 7, 9, - 7, 5, 3, 1, 0, - 2, 4, 6, 8, 10, - 8, 6, 4, 2, 0, - 2, 4, 6, 8, 10}, - std::vector{ - 1, 2, 3, - 1, 1, 1, - 3, 2, 1}, - std::vector{ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - std::vector{ - 57, 94, - 66, 102}, - {2, 2}, - {0, 0}, - {0, 0}, - {1, 1}), - DeformableConvolutionParams(PartialShape {1, 1, 7, 7}, - PartialShape {1, 1, 3, 3}, - PartialShape {1, 18, 3, 3}, - PartialShape {1, 1, 3, 3}, - IN_ET, - std::vector{ - 1, 3, 5, 7, 9, 11, 13, - 7, 5, 3, 1, -1, -3, -5, - 2, 4, 6, 8, 10, 12, 14, - 8, 6, 4, 2, 0, -2, -4, - 2, 4, 6, 8, 10, 12, 14, - 7, 5, 3, 1, -1, -3, -5, - 8, 6, 4, 2, 0, -2, -4}, - std::vector{ - 1, 2, 3, - 1, 1, 0, - 3, 1, 2}, - std::vector{ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - std::vector{ - 78, 106, 134, - 44, 16, -12, - 80, 84, 88}, - {1, 1}, - {0, 0}, - {0, 0}, - {2, 2}), - DeformableConvolutionParams(PartialShape {1, 1, 7, 7}, - PartialShape {1, 1, 3, 3}, - PartialShape {1, 18, 4, 4}, - PartialShape {1, 1, 4, 4}, - IN_ET, - std::vector{ - 1, 3, 5, 7, 9, 11, 13, - 7, 5, 3, 1, -1, -3, -5, - 2, 4, 6, 8, 10, 12, 14, - 8, 6, 4, 2, 0, -2, -4, - 2, 4, 6, 8, 10, 12, 14, - 7, 5, 3, 1, -1, -3, -5, - 8, 6, 4, 2, 0, -2, -4}, - std::vector{ - 1, 2, 3, - 1, 1, 0, - 3, 1, 2}, - std::vector{ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - std::vector{ - 15, 38, 70, 66, - 33, 78, 134, 103, - 40, 80, 88, 58, - 30, 56, 72, 34}, - {2, 2}, - {2, 2}, - {2, 2}, - {2, 2}), - DeformableConvolutionParams(PartialShape {1, 2, 4, 4}, - PartialShape {1, 2, 3, 3}, - PartialShape {1, 18, 2, 2}, - PartialShape {1, 1, 2, 2}, - IN_ET, - std::vector{ - // channel 1 - 1, 3, 5, 7, - 7, 5, 3, 1, - 2, 4, 6, 8, - 8, 6, 4, 2, - // channel 2 - -1, 3, -5, 7, - 7, -5, 3, -1, - -2, 4, -6, 8, - 8, -6, 4, -2}, - std::vector{ - // channel 1 - 5, 3, 5, - 1, 3, 1, - 4, 2, 4, - // channel 2 - -5, 3, 5, - 1, -3, 1, - 4, 2, -4}, - std::vector{ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - std::vector{ - 142, 102, - 94, 160}, - {1, 1}, - {0, 0}, - {0, 0}, - {1, 1}), - DeformableConvolutionParams(PartialShape {1, 1, 4, 4}, - PartialShape {2, 1, 3, 3}, - PartialShape {1, 18, 2, 2}, - PartialShape {1, 2, 2, 2}, - IN_ET, - std::vector{ - 1, 3, 5, 7, - 7, 5, 3, 1, - 2, 4, 6, 8, - 8, 6, 4, 2}, - std::vector{ - // channel 1 - 5, 3, 5, - 1, 3, 1, - 4, 2, 4, - // channel 2 - -5, 3, 5, - 1, -3, 1, - 4, 2, -4}, - std::vector{ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - std::vector{ - // channel 1 - 104, 140, - 145, 109, - // channel 2 - 16, 28, - 19, 7}, - {1, 1}, - {0, 0}, - {0, 0}, - {1, 1}), - DeformableConvolutionParams(PartialShape {2, 1, 4, 4}, - PartialShape {1, 1, 3, 3}, - PartialShape {2, 18, 2, 2}, - PartialShape {2, 1, 2, 2}, - IN_ET, - std::vector{ - // batch 1 - 1, 3, 2, 1, - 1, 3, 3, 1, - 2, 1, 1, 3, - 3, 2, 3, 3, - // batch 2 - -1, 3, 2, -1, - 1, 3, -3, 1, - -2, -1, 1, 3, - 3, 2, 3, -3}, - std::vector{ - -5, 3, 5, - 1, -3, 1, - 4, 2, -4}, - std::vector{ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - std::vector{ - // batch 1 - 15, -15, - 23, 2, - // batch 2 - -1, -15, - -5, 6}, - {1, 1}, - {0, 0}, - {0, 0}, - {1, 1}), - DeformableConvolutionParams(PartialShape {1, 4, 3, 3}, - PartialShape {2, 2, 2, 2}, - PartialShape {1, 8, 2, 2}, - PartialShape {1, 2, 2, 2}, - IN_ET, - std::vector{ - // channel 1 - 1, 2, 3, - 4, 5, 6, - 7, 8, 9, - // channel 2 - 10, 11, 12, - 13, 14, 15, - 16, 17, 18, - // channel 3 - 19, 20, 21, - 22, 23, 24, - 25, 26, 27, - // channel 4 - 28, 29, 30, - 31, 32, 33, - 34, 35, 36}, - std::vector{ - // filter 1 channel 1 - 1, 2, - 3, 4, - // filter 1 channel 2 - 5, 6, - 7, 8, - // filter 2 channel 1 - -1, -2, - -3, -4, - // filter 2 channel 2 - -5, -6, - -7, -8}, - std::vector{ - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0}, - std::vector{ - // channel 1 - 356, 392, - 464, 500, - // channel 2 - -1004, -1040, - -1112, -1148}, - {1, 1}, - {0, 0}, - {0, 0}, - {1, 1}, - 2), - DeformableConvolutionParams(PartialShape {1, 8, 3, 3}, - PartialShape {4, 2, 2, 2}, - PartialShape {1, 8, 2, 2}, - PartialShape {1, 4, 2, 2}, - IN_ET, - std::vector{ - // channel 1 - 1, 2, 3, - 4, 5, 6, - 7, 8, 9, - // channel 2 - 10, 11, 12, - 13, 14, 15, - 16, 17, 18, - // channel 3 - 19, 20, 21, - 22, 23, 24, - 25, 26, 27, - // channel 4 - 28, 29, 30, - 31, 32, 33, - 34, 35, 36, - // channel 5 - 37, 38, 39, - 40, 41, 42, - 43, 44, 45, - // channel 6 - 46, 47, 48, - 49, 50, 51, - 52, 53, 54, - // channel 7 - 55, 56, 57, - 58, 59, 60, - 61, 62, 63, - // channel 8 - 64, 65, 66, - 67, 68, 69, - 70, 71, 72}, - std::vector{ - // filter 1 channel 1 - 1, 2, - 3, 4, - // filter 1 channel 2 - 5, 6, - 7, 8, - // filter 2 channel 1 - 9, 10, - 11, 12, - // filter 2 channel 2 - 13, 14, - 15, 16, - // filter 3 channel 1 - -1, -2, - -3, -4, - // filter 3 channel 2 - -5, -6, - -7, -8, - // filter 4 channel 1 - -9, -10, - -11, -12, - // filter 4 channel 2 - -13, -14, - -15, -16}, - std::vector{ - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0}, - std::vector{ - // channel 1 - 356, 392, - 464, 500, - // channel 2 - 2636, 2736, - 2936, 3036, - // channel 3 - -1652, -1688, - -1760, -1796, - // channel 4 - -6236, -6336, - -6536, -6636}, - {1, 1}, - {0, 0}, - {0, 0}, - {1, 1}, - 4), - DeformableConvolutionParams(PartialShape {1, 2, 4, 4}, - PartialShape {1, 2, 2, 2}, - PartialShape {1, 8, 3, 3}, - PartialShape {1, 1, 3, 3}, - IN_ET, - std::vector{ - // channel 1 - 1, 2, 3, 4, - 5, 6, 7, 8, - 9, 10, 11, 12, - 13, 14, 15, 16, - // channel 2 - 17, 18, 19, 20, - 21, 22, 23, 24, - 25, 26, 27, 28, - 29, 30, 31, 32}, - std::vector{ - // channel 1 - 1, 2, - -1, -2, - // channel 2 - 3, 4, - -3, -4}, - std::vector{ - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0}, - std::vector{ - -40, -40, -40, - -40, -40, -40, - -40, -40, -40}, - {1, 1}, - {0, 0}, - {0, 0}, - {1, 1}), - DeformableConvolutionParams(PartialShape {1, 4, 3, 3}, - PartialShape {2, 2, 2, 2}, - PartialShape {1, 16, 2, 2}, - PartialShape {1, 2, 2, 2}, - IN_ET, - std::vector{ - 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}, - std::vector{ - 1, 2, - 3, 4, - 5, 6, - 7, 8, - -1, -2, - -3, -4, - -5, -6, - -7, -8}, - std::vector{ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - std::vector{ - 356, 392, - 464, 500, - -1004, -1040, - -1112, -1148}, - {1, 1}, - {0, 0}, - {0, 0}, - {1, 1}, - 2, - 2), - DeformableConvolutionParams(PartialShape {1, 1, 4, 4}, - PartialShape {1, 1, 2, 2}, - PartialShape {1, 8, 3, 3}, - PartialShape {1, 1, 3, 3}, - IN_ET, - std::vector{ - 1, 2, 3, 4, - 5, 6, 7, 8, - 9, 10, 11, 12, - 13, 14, 15, 16}, - std::vector{ - 1, 2, - -1, -2}, - std::vector{ - // window 1 (Y=0, X=0) -> Y coordinate - 1, 1, 1, // out1 .. out 3 - 1, 1, 1, // out4 .. out 6 - 1, 1, 1, // out7 .. out 9 - // window 1 (Y=0, X=0) -> X coordinate - 1, 1, 1, // out1 .. out 3 - 1, 1, 1, // out4 .. out 6 - 1, 1, 1, // out7 .. out 9 - // window 2 - 1, 1, 1, - 1, 1, 1, - 1, 1, 1, - // window 2 - 1, 1, 1, - 1, 1, 1, - 1, 1, 1, - // window 3 - 1, 1, 1, - 1, 1, 1, - 1, 1, 1, - // window 3 - 1, 1, 1, - 1, 1, 1, - 1, 1, 1, - // window 4 - 1, 1, 1, - 1, 1, 1, - 1, 1, 1, - // window 4 - 1, 1, 1, - 1, 1, 1, - 1, 1, 1}, - std::vector{ - -12, -12, -4, - -12, -12, -4, - 44, 47, 16}, - {1, 1}, - {0, 0}, - {0, 0}, - {1, 1}, - 1, - 1, - "integral_offsets_1"), - DeformableConvolutionParams(PartialShape {1, 1, 4, 4}, - PartialShape {1, 1, 3, 3}, - PartialShape {1, 18, 4, 4}, - PartialShape {1, 1, 4, 4}, - IN_ET, - std::vector{ - 1, 3, 7, 7, - 7, 6, 3, 1, - 4, 4, 2, 8, - 1, 1, 1, 2}, - std::vector{ - 1, 2, 3, - 0, 1, 0, - 3, 2, 1}, - std::vector{ - 1, 0, 1, 0, - 1, 0, 0, 2, - 1, 0, 1, 0, - 1, 0, 0, 2, - - 1, 0, 1, 0, - 1, 0, 0, 2, - 1, 0, 1, 0, - 1, 0, 0, 2, - - 1, 0, 1, 0, - 1, 0, 0, 2, - 1, 0, 1, 0, - 1, 0, 0, 2, - - 1, 0, 1, 0, - 1, 0, 0, 2, - 1, 0, 1, 0, - 1, 0, 0, 2, - - 1, 0, 1, 0, - 1, 0, 0, 2, - 1, 0, 1, 0, - 1, 0, 0, 2, - - 1, 0, 1, 0, - 1, 0, 0, 2, - 1, 0, 1, 0, - 1, 0, 0, 2, - - 1, 0, 1, 0, - 1, 0, 0, 2, - 1, 0, 1, 0, - 1, 0, 0, 2, - - 1, 0, 1, 0, - 1, 0, 0, 2, - 1, 0, 1, 0, - 1, 0, 0, 2, - - 1, 0, 1, 0, - 1, 0, 0, 2, - 1, 0, 1, 0, - 1, 0, 0, 2, - - 1, 0, 1, 0, - 1, 0, 0, 2, - 1, 0, 1, 0, - 1, 0, 0, 2, - - 1, 0, 1, 0, - 1, 0, 0, 2, - 1, 0, 1, 0, - 1, 0, 0, 2, - - 1, 0, 1, 0, - 1, 0, 0, 2, - 1, 0, 1, 0, - 1, 0, 0, 2, - - 1, 0, 1, 0, - 1, 0, 0, 2, - 1, 0, 1, 0, - 1, 0, 0, 2, - - 1, 0, 1, 0, - 1, 0, 0, 2, - 1, 0, 1, 0, - 1, 0, 0, 2, - - 1, 0, 1, 0, - 1, 0, 0, 2, - 1, 0, 1, 0, - 1, 0, 0, 2, - - 1, 0, 1, 0, - 1, 0, 0, 2, - 1, 0, 1, 0, - 1, 0, 0, 2, - - 1, 0, 1, 0, - 1, 0, 0, 2, - 1, 0, 1, 0, - 1, 0, 0, 2, - - 1, 0, 1, 0, - 1, 0, 0, 2, - 1, 0, 1, 0, - 1, 0, 0, 2}, - std::vector{ - 56, 39, 44, 18, - 38, 56, 65, 0, - 19, 38, 20, 20, - 6, 19, 33, 0}, - {1, 1}, - {1, 1}, - {1, 1}, - {1, 1}), - DeformableConvolutionParams(PartialShape {1, 1, 5, 5}, - PartialShape {1, 1, 3, 3}, - PartialShape {1, 18, 2, 2}, - PartialShape {1, 1, 2, 2}, - IN_ET, - std::vector{ - 1, 3, 5, 7, 9, - 7, 5, 3, 1, 0, - 2, 4, 6, 8, 10, - 8, 6, 4, 2, 0, - 2, 4, 6, 8, 10}, - std::vector{ - 1, 2, 3, - 1, 1, 1, - 3, 2, 1}, - std::vector{ - 0, 2, - 1, 0, - 0, 2, - 1, 0, - 0, 2, - 1, 0, - 0, 2, - 1, 0, - 0, 2, - 1, 0, - 0, 2, - 1, 0, - 0, 2, - 1, 0, - 0, 2, - 1, 0, - 0, 2, - 1, 0, - 0, 2, - 1, 0, - 0, 2, - 1, 0, - 0, 2, - 1, 0, - 0, 2, - 1, 0, - 0, 2, - 1, 0, - 0, 2, - 1, 0, - 0, 2, - 1, 0, - 0, 2, - 1, 0, - 0, 2, - 1, 0}, - std::vector{ - 57, 40, - 38, 102}, - {2, 2}, - {0, 0}, - {0, 0}, - {1, 1}, - 1, - 1, - "integral_offsets_stride"), - DeformableConvolutionParams(PartialShape {1, 1, 7, 7}, - PartialShape {1, 1, 3, 3}, - PartialShape {1, 18, 3, 3}, - PartialShape {1, 1, 3, 3}, - IN_ET, - std::vector{ - 1, 3, 5, 7, 9, 11, 13, - 7, 5, 3, 1, -1, -3, -5, - 2, 4, 6, 8, 10, 12, 14, - 8, 6, 4, 2, 0, -2, -4, - 2, 4, 6, 8, 10, 12, 14, - 7, 5, 3, 1, -1, -3, -5, - 8, 6, 4, 2, 0, -2, -4}, - std::vector{ - 1, 2, 3, - 1, 1, 0, - 3, 1, 2}, - std::vector{ - 1, 1, 0, - 0, 2, 0, - 1, 0, 1, - 1, 1, 0, - 0, 2, 0, - 1, 0, 1, - 1, 1, 0, - 0, 2, 0, - 1, 0, 1, - 1, 1, 0, - 0, 2, 0, - 1, 0, 1, - 1, 1, 0, - 0, 2, 0, - 1, 0, 1, - 1, 1, 0, - 0, 2, 0, - 1, 0, 1, - 1, 1, 0, - 0, 2, 0, - 1, 0, 1, - 1, 1, 0, - 0, 2, 0, - 1, 0, 1, - 1, 1, 0, - 0, 2, 0, - 1, 0, 1, - 1, 1, 0, - 0, 2, 0, - 1, 0, 1, - 1, 1, 0, - 0, 2, 0, - 1, 0, 1, - 1, 1, 0, - 0, 2, 0, - 1, 0, 1, - 1, 1, 0, - 0, 2, 0, - 1, 0, 1, - 1, 1, 0, - 0, 2, 0, - 1, 0, 1, - 1, 1, 0, - 0, 2, 0, - 1, 0, 1, - 1, 1, 0, - 0, 2, 0, - 1, 0, 1, - 1, 1, 0, - 0, 2, 0, - 1, 0, 1, - 1, 2, 0, - 0, 2, 0, - 1, 0, 1}, - std::vector{ - 16, -2, 134, - 44, -4, -12, - 10, 84, -4}, - {1, 1}, - {0, 0}, - {0, 0}, - {2, 2}, - 1, - 1, - "integral_offset_dialation"), - DeformableConvolutionParams(PartialShape {1, 1, 7, 7}, - PartialShape {1, 1, 3, 3}, - PartialShape {1, 18, 4, 4}, - PartialShape {1, 1, 4, 4}, - IN_ET, - std::vector{ - 1, 3, 5, 7, 9, 11, 13, - 7, 5, 3, 1, -1, -3, -5, - 2, 4, 6, 8, 10, 12, 14, - 8, 6, 4, 2, 0, -2, -4, - 2, 4, 6, 8, 10, 12, 14, - 7, 5, 3, 1, -1, -3, -5, - 8, 6, 4, 2, 0, -2, -4}, - std::vector{ - 1, 2, 3, - 1, 1, 0, - 3, 1, 2}, - std::vector{ - 1, 0, 1, 0, - 1, 0, 0, 2, - 1, 0, 1, 0, - 1, 0, 0, 2, - - 1, 0, 1, 0, - 1, 0, 0, 2, - 1, 0, 1, 0, - 1, 0, 0, 2, - - 1, 0, 1, 0, - 1, 0, 0, 2, - 1, 0, 1, 0, - 1, 0, 0, 2, - - 1, 0, 1, 0, - 1, 0, 0, 2, - 1, 0, 1, 0, - 1, 0, 0, 2, - - 1, 0, 1, 0, - 1, 0, 0, 2, - 1, 0, 1, 0, - 1, 0, 0, 2, - - 1, 0, 1, 0, - 1, 0, 0, 2, - 1, 0, 1, 0, - 1, 0, 0, 2, - - 1, 0, 1, 0, - 1, 0, 0, 2, - 1, 0, 1, 0, - 1, 0, 0, 2, - - 1, 0, 1, 0, - 1, 0, 0, 2, - 1, 0, 1, 0, - 1, 0, 0, 2, - - 1, 0, 1, 0, - 1, 0, 0, 2, - 1, 0, 1, 0, - 1, 0, 0, 2, - - 1, 0, 1, 0, - 1, 0, 0, 2, - 1, 0, 1, 0, - 1, 0, 0, 2, - - 1, 0, 1, 0, - 1, 0, 0, 2, - 1, 0, 1, 0, - 1, 0, 0, 2, - - 1, 0, 1, 0, - 1, 0, 0, 2, - 1, 0, 1, 0, - 1, 0, 0, 2, - - 1, 0, 1, 0, - 1, 0, 0, 2, - 1, 0, 1, 0, - 1, 0, 0, 2, - - 1, 0, 1, 0, - 1, 0, 0, 2, - 1, 0, 1, 0, - 1, 0, 0, 2, - - 1, 0, 1, 0, - 1, 0, 0, 2, - 1, 0, 1, 0, - 1, 0, 0, 2, - - 1, 0, 1, 0, - 1, 0, 0, 2, - 1, 0, 1, 0, - 1, 0, 0, 2, - - 1, 0, 1, 0, - 1, 0, 0, 2, - 1, 0, 1, 0, - 1, 0, 0, 2, - - 1, 0, 1, 0, - 1, 0, 0, 2, - 1, 0, 1, 0, - 1, 0, 0, 2}, - std::vector{ - 15, 38, 2, 66, - 26, 78, 134, 16, - 23, 80, -4, 58, - 13, 56, 72, -4}, - {2, 2}, - {2, 2}, - {2, 2}, - {2, 2}, - 1, - 1, - "integral_offset_padding_stride_dialation"), - DeformableConvolutionParams(PartialShape {1, 2, 4, 4}, - PartialShape {1, 2, 3, 3}, - PartialShape {1, 18, 2, 2}, - PartialShape {1, 1, 2, 2}, - IN_ET, - std::vector{ - // channel 1 - 1, 3, 5, 7, - 7, 5, 3, 1, - 2, 4, 6, 8, - 8, 6, 4, 2, - // channel 2 - -1, 3, -5, 7, - 7, -5, 3, -1, - -2, 4, -6, 8, - 8, -6, 4, -2}, - std::vector{ - // channel 1 - 5, 3, 5, - 1, 3, 1, - 4, 2, 4, - // channel 2 - -5, 3, 5, - 1, -3, 1, - 4, 2, -4}, - std::vector{ - 1, 1, - 0, 2, - 1, 1, - 0, 2, - 1, 1, - 0, 2, - 1, 1, - 0, 2, - 1, 1, - 0, 2, - 1, 1, - 0, 2, - 1, 1, - 0, 2, - 1, 1, - 0, 2, - 1, 1, - 0, 2, - 1, 1, - 0, 2, - 1, 1, - 0, 2, - 1, 1, - 0, 2, - 1, 1, - 0, 2, - 1, 1, - 0, 2, - 1, 1, - 0, 2, - 1, 1, - 0, 2, - 1, 1, - 0, 2, - 1, 1, - 0, 2}, - std::vector{ - 160, 32, - 94, 20}, - {1, 1}, - {0, 0}, - {0, 0}, - {1, 1}, - 1, - 1, - "integral_offset_input_channels"), - DeformableConvolutionParams(PartialShape {1, 1, 4, 4}, - PartialShape {2, 1, 2, 2}, - PartialShape {1, 8, 3, 3}, - PartialShape {1, 2, 3, 3}, - IN_ET, - std::vector{ - 1, 2, 3, 4, - 5, 6, 7, 8, - 9, 10, 11, 12, - 13, 14, 15, 16}, - std::vector{ - // filter 1 - 1, 2, - -1, -2, - // filter 2 - 3, 4, - -3, -4}, - std::vector{ - //channel 1: Y offsets - 1, 1, 1, // out1 .. out 3 - 1, 1, 1, // out4 .. out 6 - 1, 1, 1, // out7 .. out 9 - //channel 1: X offsets - 1, 1, 1, // out1 .. out 3 - 1, 1, 1, // out4 .. out 6 - 1, 1, 1, // out7 .. out 9 - //channel 2: Y offsets - 1, 1, 1, - 1, 1, 1, - 1, 1, 1, - //channel 2: X offsets - 1, 1, 1, - 1, 1, 1, - 1, 1, 1, - //channel 3: Y offsets - 1, 1, 1, - 1, 1, 1, - 1, 1, 1, - //channel 3: X offsets - 1, 1, 1, - 1, 1, 1, - 1, 1, 1, - //channel 4: Y offsets - 1, 1, 1, - 1, 1, 1, - 1, 1, 1, - //channel 4: X offsets - 1, 1, 1, - 1, 1, 1, - 1, 1, 1}, - std::vector{ - // output 1 - -12, -12, -4, - -12, -12, -4, - 44, 47, 16, - // output 2 - -28, -28, -12, - -28, -28, -12, - 102, 109, 48}, - {1, 1}, - {0, 0}, - {0, 0}, - {1, 1}, - 1, - 1, - "integral_offset_output_channels"), - DeformableConvolutionParams(PartialShape {2, 1, 4, 4}, - PartialShape {1, 1, 2, 2}, - PartialShape {2, 8, 3, 3}, - PartialShape {2, 1, 3, 3}, - IN_ET, - std::vector{ - //batch 1 - 1, 2, 3, 4, - 5, 6, 7, 8, - 9, 10, 11, 12, - 13, 14, 15, 16, - //batch 2 - 17, 18, 19, 20, - 21, 22, 23, 24, - 25, 26, 27, 28, - 29, 30, 31, 32}, - std::vector{ - 1, 2, - -1, -2}, - std::vector{ - // batch1 - 1, 1, 1, - 1, 1, 1, - 1, 1, 1, - - 1, 1, 1, - 1, 1, 1, - 1, 1, 1, - - 1, 1, 1, - 1, 1, 1, - 1, 1, 1, - - 1, 1, 1, - 1, 1, 1, - 1, 1, 1, - - 1, 1, 1, - 1, 1, 1, - 1, 1, 1, - - 1, 1, 1, - 1, 1, 1, - 1, 1, 1, - - 1, 1, 1, - 1, 1, 1, - 1, 1, 1, - - 1, 1, 1, - 1, 1, 1, - 1, 1, 1, - // batch2 - 0, 0, 0, - 0, 0, 0, - 0, 0, 0, - - 0, 0, 0, - 0, 0, 0, - 0, 0, 0, - - 0, 0, 0, - 0, 0, 0, - 0, 0, 0, - - 0, 0, 0, - 0, 0, 0, - 0, 0, 0, - - 0, 0, 0, - 0, 0, 0, - 0, 0, 0, - - 0, 0, 0, - 0, 0, 0, - 0, 0, 0, - - 0, 0, 0, - 0, 0, 0, - 0, 0, 0, - - 0, 0, 0, - 0, 0, 0, - 0, 0, 0}, - std::vector{ - // batch 1 - -12, -12, -4, - -12, -12, -4, - 44, 47, 16, - // batch 2 - -12, -12, -12, - -12, -12, -12, - -12, -12, -12}, - {1, 1}, - {0, 0}, - {0, 0}, - {1, 1}, - 1, - 1, - "integral_offset_batch"), - DeformableConvolutionParams(PartialShape {1, 4, 3, 3}, - PartialShape {2, 2, 2, 2}, - PartialShape {1, 8, 2, 2}, - PartialShape {1, 2, 2, 2}, - IN_ET, - std::vector{ - // channel 1 - 1, 2, 3, - 4, 5, 6, - 7, 8, 9, - // channel 2 - 10, 11, 12, - 13, 14, 15, - 16, 17, 18, - // channel 3 - 19, 20, 21, - 22, 23, 24, - 25, 26, 27, - // channel 4 - 28, 29, 30, - 31, 32, 33, - 34, 35, 36}, - std::vector{ - // filter 1 channel 1 - 1, 2, - 3, 4, - // filter 1 channel 2 - 5, 6, - 7, 8, - // filter 2 channel 1 - -1, -2, - -3, -4, - // filter 2 channel 2 - -5, -6, - -7, -8}, - std::vector{ - // window 1 (F_Y=0, F_X=0) -> I_Y coordinate - 1, 0, 2, 1, // out1 .. out 4 - // window 1 (F_Y=0, F_X=0) -> I_X coordinate - 0, 1, 1, 2, // out1 .. out 4 - // window 2 (F_Y=0, F_X=1) -> I_Y coordinate - 1, 1, 1, 1, // out1 .. out 4 - // window 2 (F_Y=0, F_X=1) -> I_X coordinate - 1, 1, 1, 1, // out1 .. out 4 - // window 3 (F_Y=1, F_X=0) -> I_Y coordinate - 2, 2, 2, 2, // out1 .. out 4 - // window 3 (F_Y=1, F_X=0) -> I_X coordinate - 2, 2, 2, 2, // out1 .. out 4 - // window 4 (F_Y=1, F_X=1) -> I_Y coordinate - 2, 2, 2, 2, // out1 .. out 4 - // window 4 (F_Y=1, F_X=1) -> I_X coordinate - 2, 2, 2, 2}, // out1 .. out 4 - std::vector{ - // channel 1 - 171, 63, - 126, 0, - // channel 2 - -423, -171, - -270, 0}, - {1, 1}, - {0, 0}, - {0, 0}, - {1, 1}, - 2, - 1, - "integral_offset_groups_basic"), - DeformableConvolutionParams(PartialShape {1, 8, 3, 3}, - PartialShape {4, 2, 2, 2}, - PartialShape {1, 8, 2, 2}, - PartialShape {1, 4, 2, 2}, - IN_ET, - std::vector{ - // channel 1 - 1, 2, 3, - 4, 5, 6, - 7, 8, 9, - // channel 2 - 10, 11, 12, - 13, 14, 15, - 16, 17, 18, - // channel 3 - 19, 20, 21, - 22, 23, 24, - 25, 26, 27, - // channel 4 - 28, 29, 30, - 31, 32, 33, - 34, 35, 36, - // channel 5 - 37, 38, 39, - 40, 41, 42, - 43, 44, 45, - // channel 6 - 46, 47, 48, - 49, 50, 51, - 52, 53, 54, - // channel 7 - 55, 56, 57, - 58, 59, 60, - 61, 62, 63, - // channel 8 - 64, 65, 66, - 67, 68, 69, - 70, 71, 72}, - std::vector{ - // filter 1 channel 1 - 1, 2, - 3, 4, - // filter 1 channel 2 - 5, 6, - 7, 8, - // filter 2 channel 1 - 9, 10, - 11, 12, - // filter 2 channel 2 - 13, 14, - 15, 16, - // filter 3 channel 1 - -1, -2, - -3, -4, - // filter 3 channel 2 - -5, -6, - -7, -8, - // filter 4 channel 1 - -9, -10, - -11, -12, - // filter 4 channel 2 - -13, -14, - -15, -16}, - std::vector{ - 1, 1, 1, 1, - 1, 1, 1, 1, - 1, 1, 1, 1, - 1, 1, 1, 1, - 1, 1, 1, 1, - 1, 1, 1, 1, - 1, 1, 1, 1, - 1, 1, 1, 1}, - std::vector{ - // channel 1 - 500, 234, - 219, 99, - // channel 2 - 3036, 1482, - 1463, 711, - // channel 3 - -1796, -810, - -723, -315, - // channel 4 - -6636, -3210, - -3119, -1503}, - {1, 1}, - {0, 0}, - {0, 0}, - {1, 1}, - 4, - 1, - "integral_offset_groups_complex"), - DeformableConvolutionParams(PartialShape {1, 2, 4, 4}, - PartialShape {2, 2, 2, 2}, - PartialShape {1, 16, 3, 3}, - PartialShape {1, 2, 3, 3}, - IN_ET, - std::vector{ - // channel 1 - 1, 2, 3, 4, - 5, 6, 7, 8, - 9, 10, 11, 12, - 13, 14, 15, 16, - // channel 2 - 17, 18, 19, 20, - 21, 22, 23, 24, - 25, 26, 27, 28, - 29, 30, 31, 32}, - std::vector{ - // f1: channel 1 - 1, 2, - 3, 4, - // f1: channel 2 - 5, 6, - 7, 8, - // f2: channel 1 - -1, -2, - -3, -4, - // f2: channel 2 - -5, -6, - -7, -8}, - std::vector{ - // defgroup 1 - 1, 1, 1, - 1, 1, 1, - 1, 1, 1, - - 1, 1, 1, - 1, 1, 1, - 1, 1, 1, - - 1, 1, 1, - 1, 1, 1, - 1, 1, 1, - - 1, 1, 1, - 1, 1, 1, - 1, 1, 1, - - 1, 1, 1, - 1, 1, 1, - 1, 1, 1, - - 1, 1, 1, - 1, 1, 1, - 1, 1, 1, - - 1, 1, 1, - 1, 1, 1, - 1, 1, 1, - - 1, 1, 1, - 1, 1, 1, - 1, 1, 1, - // defgroup 2 - 0, 0, 0, - 0, 0, 0, - 0, 0, 0, - - 0, 0, 0, - 0, 0, 0, - 0, 0, 0, - - 0, 0, 0, - 0, 0, 0, - 0, 0, 0, - - 0, 0, 0, - 0, 0, 0, - 0, 0, 0, - - 0, 0, 0, - 0, 0, 0, - 0, 0, 0, - - 0, 0, 0, - 0, 0, 0, - 0, 0, 0, - - 0, 0, 0, - 0, 0, 0, - 0, 0, 0, - - 0, 0, 0, - 0, 0, 0, - 0, 0, 0}, - std::vector{ - // output 1 - 610, 646, 612, - 754, 790, 732, - 768, 797, 792, - // output 2 - -610, -646, -612, - -754, -790, -732, - -768, -797, -792}, - {1, 1}, - {0, 0}, - {0, 0}, - {1, 1}, - 1, - 2, - "integral_offset_deforgroup_basic"), - DeformableConvolutionParams(PartialShape {1, 4, 4, 4}, - PartialShape {2, 4, 2, 2}, - PartialShape {1, 32, 3, 3}, - PartialShape {1, 2, 3, 3}, - IN_ET, - std::vector{ - // channel 1 - 1, 2, 3, 4, - 5, 6, 7, 8, - 9, 10, 11, 12, - 13, 14, 15, 16, - // channel 2 - 17, 18, 19, 20, - 21, 22, 23, 24, - 25, 26, 27, 28, - 29, 30, 31, 32, - // channel 3 - 1, 2, 3, 4, - 5, 6, 7, 8, - 9, 10, 11, 12, - 13, 14, 15, 16, - // channel 4 - 17, 18, 19, 20, - 21, 22, 23, 24, - 25, 26, 27, 28, - 29, 30, 31, 32}, - std::vector{ - // f1: channel 1 - 1, 2, - 3, 4, - // f1: channel 2 - 5, 6, - 7, 8, - // f1: channel 3 - 1, 2, - 3, 4, - // f1: channel 4 - 5, 6, - 7, 8, - // f2: channel 1 - -1, -2, - -3, -4, - // f2: channel 2 - -5, -6, - -7, -8, - // f2: channel 3 - -1, -2, - -3, -4, - // f2: channel 4 - -5, -6, - -7, -8}, - std::vector{ - // defgroup 1 - 1, 1, 1, - 1, 1, 1, - 1, 1, 1, - - 1, 1, 1, - 1, 1, 1, - 1, 1, 1, - - 1, 1, 1, - 1, 1, 1, - 1, 1, 1, - - 1, 1, 1, - 1, 1, 1, - 1, 1, 1, - - 1, 1, 1, - 1, 1, 1, - 1, 1, 1, - - 1, 1, 1, - 1, 1, 1, - 1, 1, 1, - - 1, 1, 1, - 1, 1, 1, - 1, 1, 1, - - 1, 1, 1, - 1, 1, 1, - 1, 1, 1, - // defgroup 2 - 0, 0, 0, - 0, 0, 0, - 0, 0, 0, - - 0, 0, 0, - 0, 0, 0, - 0, 0, 0, - - 0, 0, 0, - 0, 0, 0, - 0, 0, 0, - - 0, 0, 0, - 0, 0, 0, - 0, 0, 0, - - 0, 0, 0, - 0, 0, 0, - 0, 0, 0, - - 0, 0, 0, - 0, 0, 0, - 0, 0, 0, - - 0, 0, 0, - 0, 0, 0, - 0, 0, 0, - - 0, 0, 0, - 0, 0, 0, - 0, 0, 0, - - // defgroup 3 - 1, 1, 1, - 1, 1, 1, - 1, 1, 1, - - 1, 1, 1, - 1, 1, 1, - 1, 1, 1, - - 1, 1, 1, - 1, 1, 1, - 1, 1, 1, - - 1, 1, 1, - 1, 1, 1, - 1, 1, 1, - - 1, 1, 1, - 1, 1, 1, - 1, 1, 1, - - 1, 1, 1, - 1, 1, 1, - 1, 1, 1, - - 1, 1, 1, - 1, 1, 1, - 1, 1, 1, - - 1, 1, 1, - 1, 1, 1, - 1, 1, 1, - // defgroup 4 - 0, 0, 0, - 0, 0, 0, - 0, 0, 0, - - 0, 0, 0, - 0, 0, 0, - 0, 0, 0, - - 0, 0, 0, - 0, 0, 0, - 0, 0, 0, - - 0, 0, 0, - 0, 0, 0, - 0, 0, 0, - - 0, 0, 0, - 0, 0, 0, - 0, 0, 0, - - 0, 0, 0, - 0, 0, 0, - 0, 0, 0, - - 0, 0, 0, - 0, 0, 0, - 0, 0, 0, - - 0, 0, 0, - 0, 0, 0, - 0, 0, 0}, - std::vector{ - // output 1 - 1220, 1292, 1224, - 1508, 1580, 1464, - 1536, 1594, 1584, - // output 2 - -1220, -1292, -1224, - -1508, -1580, -1464, - -1536, -1594, -1584}, - {1, 1}, - {0, 0}, - {0, 0}, - {1, 1}, - 1, - 4, - "integral_offset_deforgroup_complex1"), - DeformableConvolutionParams(PartialShape {1, 4, 4, 4}, - PartialShape {2, 4, 2, 2}, - PartialShape {1, 16, 3, 3}, - PartialShape {1, 2, 3, 3}, - IN_ET, - std::vector{ - // channel 1 - 1, 2, 3, 4, - 5, 6, 7, 8, - 9, 10, 11, 12, - 13, 14, 15, 16, - // channel 2 - 17, 18, 19, 20, - 21, 22, 23, 24, - 25, 26, 27, 28, - 29, 30, 31, 32, - // channel 3 - 1, 2, 3, 4, - 5, 6, 7, 8, - 9, 10, 11, 12, - 13, 14, 15, 16, - // channel 4 - 17, 18, 19, 20, - 21, 22, 23, 24, - 25, 26, 27, 28, - 29, 30, 31, 32}, - std::vector{ - // f1: channel 1 - 1, 2, - 3, 4, - // f1: channel 2 - 5, 6, - 7, 8, - // f1: channel 3 - 1, 2, - 3, 4, - // f1: channel 4 - 5, 6, - 7, 8, - // f2: channel 1 - -1, -2, - -3, -4, - // f2: channel 2 - -5, -6, - -7, -8, - // f2: channel 3 - -1, -2, - -3, -4, - // f2: channel 4 - -5, -6, - -7, -8}, - std::vector{ - // defgroup 1 - 1, 1, 1, - 1, 1, 1, - 1, 1, 1, - - 1, 1, 1, - 1, 1, 1, - 1, 1, 1, - - 1, 1, 1, - 1, 1, 1, - 1, 1, 1, - - 1, 1, 1, - 1, 1, 1, - 1, 1, 1, - - 1, 1, 1, - 1, 1, 1, - 1, 1, 1, - - 1, 1, 1, - 1, 1, 1, - 1, 1, 1, - - 1, 1, 1, - 1, 1, 1, - 1, 1, 1, - - 1, 1, 1, - 1, 1, 1, - 1, 1, 1, - // defgroup 2 - 0, 0, 0, - 0, 0, 0, - 0, 0, 0, - - 0, 0, 0, - 0, 0, 0, - 0, 0, 0, - - 0, 0, 0, - 0, 0, 0, - 0, 0, 0, - - 0, 0, 0, - 0, 0, 0, - 0, 0, 0, - - 0, 0, 0, - 0, 0, 0, - 0, 0, 0, - - 0, 0, 0, - 0, 0, 0, - 0, 0, 0, - - 0, 0, 0, - 0, 0, 0, - 0, 0, 0, - - 0, 0, 0, - 0, 0, 0, - 0, 0, 0}, - std::vector{ - // output 1 - 1300, 1372, 992, - 1588, 1660, 1200, - 1228, 1278, 1096, - // output 2 - -1300, -1372, -992, - -1588, -1660, -1200, - -1228, -1278, -1096}, - {1, 1}, - {0, 0}, - {0, 0}, - {1, 1}, - 1, - 2, - "integral_offset_deforgroup_complex2"), - DeformableConvolutionParams(PartialShape {1, 4, 3, 3}, - PartialShape {2, 2, 2, 2}, - PartialShape {1, 16, 2, 2}, - PartialShape {1, 2, 2, 2}, - IN_ET, - std::vector{ - 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}, - std::vector{ - 1, 2, - 3, 4, - 5, 6, - 7, 8, - -1, -2, - -3, -4, - -5, -6, - -7, -8}, - std::vector{ - // defgroup 1 - 1, 1, 1, 1, - 1, 1, 1, 1, - 1, 1, 1, 1, - 1, 1, 1, 1, - 1, 1, 1, 1, - 1, 1, 1, 1, - 1, 1, 1, 1, - 1, 1, 1, 1, - // defgroup 2 - 0, 0, 0, 0, - 0, 0, 0, 0, - 0, 0, 0, 0, - 0, 0, 0, 0, - 0, 0, 0, 0, - 0, 0, 0, 0, - 0, 0, 0, 0, - 0, 0, 0, 0}, - std::vector{ - 500, 234, - 219, 99, - -1004, -1040, - -1112, -1148}, - {1, 1}, - {0, 0}, - {0, 0}, - {1, 1}, - 2, - 2, - "integral_offset_groups_and_deforgroups"), + std::vector deformableConvolutionParams{ + // --------------------- 2D DeformableConvolution ------------------------------------------ + DeformableConvolutionParams( + PartialShape{1, 1, 4, 4}, + PartialShape{1, 1, 2, 2}, + PartialShape{1, 8, 3, 3}, + PartialShape{1, 1, 3, 3}, + IN_ET, + std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}, + std::vector{1, 2, -1, -2}, + std::vector{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + std::vector{-12, -12, -12, -12, -12, -12, -12, -12, -12}, + {1, 1}, + {0, 0}, + {0, 0}, + {1, 1}), + DeformableConvolutionParams( + PartialShape{1, 1, 3, 3}, + PartialShape{1, 1, 2, 2}, + PartialShape{1, 8, 4, 4}, + PartialShape{1, 1, 4, 4}, + IN_ET, + std::vector{1, 3, 5, 7, 5, 3, 1, 3, 5}, + std::vector{1, 2, 0, 1}, + std::vector{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + std::vector{1, 3, 5, 0, 9, 12, 16, 5, 15, 20, 16, 3, 2, 7, 13, 5}, + {1, 1}, + {1, 1}, + {1, 1}, + {1, 1}), + DeformableConvolutionParams( + PartialShape{1, 1, 5, 5}, + PartialShape{1, 1, 3, 3}, + PartialShape{1, 18, 2, 2}, + PartialShape{1, 1, 2, 2}, + IN_ET, + std::vector{1, 3, 5, 7, 9, 7, 5, 3, 1, 0, 2, 4, 6, 8, 10, 8, 6, 4, 2, 0, 2, 4, 6, 8, 10}, + std::vector{1, 2, 3, 1, 1, 1, 3, 2, 1}, + std::vector{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + std::vector{57, 94, 66, 102}, + {2, 2}, + {0, 0}, + {0, 0}, + {1, 1}), + DeformableConvolutionParams( + PartialShape{1, 1, 7, 7}, + PartialShape{1, 1, 3, 3}, + PartialShape{1, 18, 3, 3}, + PartialShape{1, 1, 3, 3}, + IN_ET, + std::vector{1, 3, 5, 7, 9, 11, 13, 7, 5, 3, 1, -1, -3, -5, 2, 4, 6, 8, 10, 12, 14, 8, 6, 4, 2, + 0, -2, -4, 2, 4, 6, 8, 10, 12, 14, 7, 5, 3, 1, -1, -3, -5, 8, 6, 4, 2, 0, -2, -4}, + std::vector{1, 2, 3, 1, 1, 0, 3, 1, 2}, + std::vector{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + std::vector{78, 106, 134, 44, 16, -12, 80, 84, 88}, + {1, 1}, + {0, 0}, + {0, 0}, + {2, 2}), + DeformableConvolutionParams( + PartialShape{1, 1, 7, 7}, + PartialShape{1, 1, 3, 3}, + PartialShape{1, 18, 4, 4}, + PartialShape{1, 1, 4, 4}, + IN_ET, + std::vector{1, 3, 5, 7, 9, 11, 13, 7, 5, 3, 1, -1, -3, -5, 2, 4, 6, 8, 10, 12, 14, 8, 6, 4, 2, + 0, -2, -4, 2, 4, 6, 8, 10, 12, 14, 7, 5, 3, 1, -1, -3, -5, 8, 6, 4, 2, 0, -2, -4}, + std::vector{1, 2, 3, 1, 1, 0, 3, 1, 2}, + std::vector{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + std::vector{15, 38, 70, 66, 33, 78, 134, 103, 40, 80, 88, 58, 30, 56, 72, 34}, + {2, 2}, + {2, 2}, + {2, 2}, + {2, 2}), + DeformableConvolutionParams( + PartialShape{1, 2, 4, 4}, + PartialShape{1, 2, 3, 3}, + PartialShape{1, 18, 2, 2}, + PartialShape{1, 1, 2, 2}, + IN_ET, + std::vector{// channel 1 + 1, + 3, + 5, + 7, + 7, + 5, + 3, + 1, + 2, + 4, + 6, + 8, + 8, + 6, + 4, + 2, + // channel 2 + -1, + 3, + -5, + 7, + 7, + -5, + 3, + -1, + -2, + 4, + -6, + 8, + 8, + -6, + 4, + -2}, + std::vector{// channel 1 + 5, + 3, + 5, + 1, + 3, + 1, + 4, + 2, + 4, + // channel 2 + -5, + 3, + 5, + 1, + -3, + 1, + 4, + 2, + -4}, + std::vector{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + std::vector{142, 102, 94, 160}, + {1, 1}, + {0, 0}, + {0, 0}, + {1, 1}), + DeformableConvolutionParams( + PartialShape{1, 1, 4, 4}, + PartialShape{2, 1, 3, 3}, + PartialShape{1, 18, 2, 2}, + PartialShape{1, 2, 2, 2}, + IN_ET, + std::vector{1, 3, 5, 7, 7, 5, 3, 1, 2, 4, 6, 8, 8, 6, 4, 2}, + std::vector{// channel 1 + 5, + 3, + 5, + 1, + 3, + 1, + 4, + 2, + 4, + // channel 2 + -5, + 3, + 5, + 1, + -3, + 1, + 4, + 2, + -4}, + std::vector{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + std::vector{// channel 1 + 104, + 140, + 145, + 109, + // channel 2 + 16, + 28, + 19, + 7}, + {1, 1}, + {0, 0}, + {0, 0}, + {1, 1}), + DeformableConvolutionParams( + PartialShape{2, 1, 4, 4}, + PartialShape{1, 1, 3, 3}, + PartialShape{2, 18, 2, 2}, + PartialShape{2, 1, 2, 2}, + IN_ET, + std::vector{// batch 1 + 1, + 3, + 2, + 1, + 1, + 3, + 3, + 1, + 2, + 1, + 1, + 3, + 3, + 2, + 3, + 3, + // batch 2 + -1, + 3, + 2, + -1, + 1, + 3, + -3, + 1, + -2, + -1, + 1, + 3, + 3, + 2, + 3, + -3}, + std::vector{-5, 3, 5, 1, -3, 1, 4, 2, -4}, + std::vector{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + std::vector{// batch 1 + 15, + -15, + 23, + 2, + // batch 2 + -1, + -15, + -5, + 6}, + {1, 1}, + {0, 0}, + {0, 0}, + {1, 1}), + DeformableConvolutionParams(PartialShape{1, 4, 3, 3}, + PartialShape{2, 2, 2, 2}, + PartialShape{1, 8, 2, 2}, + PartialShape{1, 2, 2, 2}, + IN_ET, + std::vector{// channel 1 + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + // channel 2 + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + // channel 3 + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + // channel 4 + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36}, + std::vector{// filter 1 channel 1 + 1, + 2, + 3, + 4, + // filter 1 channel 2 + 5, + 6, + 7, + 8, + // filter 2 channel 1 + -1, + -2, + -3, + -4, + // filter 2 channel 2 + -5, + -6, + -7, + -8}, + std::vector{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + std::vector{// channel 1 + 356, + 392, + 464, + 500, + // channel 2 + -1004, + -1040, + -1112, + -1148}, + {1, 1}, + {0, 0}, + {0, 0}, + {1, 1}, + 2), + DeformableConvolutionParams(PartialShape{1, 8, 3, 3}, + PartialShape{4, 2, 2, 2}, + PartialShape{1, 8, 2, 2}, + PartialShape{1, 4, 2, 2}, + IN_ET, + std::vector{// channel 1 + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + // channel 2 + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + // channel 3 + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + // channel 4 + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + // channel 5 + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + // channel 6 + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + // channel 7 + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + // channel 8 + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72}, + std::vector{// filter 1 channel 1 + 1, + 2, + 3, + 4, + // filter 1 channel 2 + 5, + 6, + 7, + 8, + // filter 2 channel 1 + 9, + 10, + 11, + 12, + // filter 2 channel 2 + 13, + 14, + 15, + 16, + // filter 3 channel 1 + -1, + -2, + -3, + -4, + // filter 3 channel 2 + -5, + -6, + -7, + -8, + // filter 4 channel 1 + -9, + -10, + -11, + -12, + // filter 4 channel 2 + -13, + -14, + -15, + -16}, + std::vector{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + std::vector{// channel 1 + 356, + 392, + 464, + 500, + // channel 2 + 2636, + 2736, + 2936, + 3036, + // channel 3 + -1652, + -1688, + -1760, + -1796, + // channel 4 + -6236, + -6336, + -6536, + -6636}, + {1, 1}, + {0, 0}, + {0, 0}, + {1, 1}, + 4), + DeformableConvolutionParams( + PartialShape{1, 2, 4, 4}, + PartialShape{1, 2, 2, 2}, + PartialShape{1, 8, 3, 3}, + PartialShape{1, 1, 3, 3}, + IN_ET, + std::vector{// channel 1 + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + // channel 2 + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32}, + std::vector{// channel 1 + 1, + 2, + -1, + -2, + // channel 2 + 3, + 4, + -3, + -4}, + std::vector{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + std::vector{-40, -40, -40, -40, -40, -40, -40, -40, -40}, + {1, 1}, + {0, 0}, + {0, 0}, + {1, 1}), + DeformableConvolutionParams( + PartialShape{1, 4, 3, 3}, + PartialShape{2, 2, 2, 2}, + PartialShape{1, 16, 2, 2}, + PartialShape{1, 2, 2, 2}, + IN_ET, + std::vector{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}, + std::vector{1, 2, 3, 4, 5, 6, 7, 8, -1, -2, -3, -4, -5, -6, -7, -8}, + std::vector{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + std::vector{356, 392, 464, 500, -1004, -1040, -1112, -1148}, + {1, 1}, + {0, 0}, + {0, 0}, + {1, 1}, + 2, + 2), + DeformableConvolutionParams(PartialShape{1, 1, 4, 4}, + PartialShape{1, 1, 2, 2}, + PartialShape{1, 8, 3, 3}, + PartialShape{1, 1, 3, 3}, + IN_ET, + std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}, + std::vector{1, 2, -1, -2}, + std::vector{// window 1 (Y=0, X=0) -> Y coordinate + 1, + 1, + 1, // out1 .. out 3 + 1, + 1, + 1, // out4 .. out 6 + 1, + 1, + 1, // out7 .. out 9 + // window 1 (Y=0, X=0) -> X coordinate + 1, + 1, + 1, // out1 .. out 3 + 1, + 1, + 1, // out4 .. out 6 + 1, + 1, + 1, // out7 .. out 9 + // window 2 + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + // window 2 + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + // window 3 + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + // window 3 + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + // window 4 + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + // window 4 + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1}, + std::vector{-12, -12, -4, -12, -12, -4, 44, 47, 16}, + {1, 1}, + {0, 0}, + {0, 0}, + {1, 1}, + 1, + 1, + "integral_offsets_1"), + DeformableConvolutionParams(PartialShape{1, 1, 4, 4}, + PartialShape{1, 1, 3, 3}, + PartialShape{1, 18, 4, 4}, + PartialShape{1, 1, 4, 4}, + IN_ET, + std::vector{1, 3, 7, 7, 7, 6, 3, 1, 4, 4, 2, 8, 1, 1, 1, 2}, + std::vector{1, 2, 3, 0, 1, 0, 3, 2, 1}, + std::vector{1, 0, 1, 0, 1, 0, 0, 2, 1, 0, 1, 0, 1, 0, 0, 2, + + 1, 0, 1, 0, 1, 0, 0, 2, 1, 0, 1, 0, 1, 0, 0, 2, + + 1, 0, 1, 0, 1, 0, 0, 2, 1, 0, 1, 0, 1, 0, 0, 2, + + 1, 0, 1, 0, 1, 0, 0, 2, 1, 0, 1, 0, 1, 0, 0, 2, + + 1, 0, 1, 0, 1, 0, 0, 2, 1, 0, 1, 0, 1, 0, 0, 2, + + 1, 0, 1, 0, 1, 0, 0, 2, 1, 0, 1, 0, 1, 0, 0, 2, + + 1, 0, 1, 0, 1, 0, 0, 2, 1, 0, 1, 0, 1, 0, 0, 2, + + 1, 0, 1, 0, 1, 0, 0, 2, 1, 0, 1, 0, 1, 0, 0, 2, + + 1, 0, 1, 0, 1, 0, 0, 2, 1, 0, 1, 0, 1, 0, 0, 2, + + 1, 0, 1, 0, 1, 0, 0, 2, 1, 0, 1, 0, 1, 0, 0, 2, + + 1, 0, 1, 0, 1, 0, 0, 2, 1, 0, 1, 0, 1, 0, 0, 2, + + 1, 0, 1, 0, 1, 0, 0, 2, 1, 0, 1, 0, 1, 0, 0, 2, + + 1, 0, 1, 0, 1, 0, 0, 2, 1, 0, 1, 0, 1, 0, 0, 2, + + 1, 0, 1, 0, 1, 0, 0, 2, 1, 0, 1, 0, 1, 0, 0, 2, + + 1, 0, 1, 0, 1, 0, 0, 2, 1, 0, 1, 0, 1, 0, 0, 2, + + 1, 0, 1, 0, 1, 0, 0, 2, 1, 0, 1, 0, 1, 0, 0, 2, + + 1, 0, 1, 0, 1, 0, 0, 2, 1, 0, 1, 0, 1, 0, 0, 2, + + 1, 0, 1, 0, 1, 0, 0, 2, 1, 0, 1, 0, 1, 0, 0, 2}, + std::vector{56, 39, 44, 18, 38, 56, 65, 0, 19, 38, 20, 20, 6, 19, 33, 0}, + {1, 1}, + {1, 1}, + {1, 1}, + {1, 1}), + DeformableConvolutionParams( + PartialShape{1, 1, 5, 5}, + PartialShape{1, 1, 3, 3}, + PartialShape{1, 18, 2, 2}, + PartialShape{1, 1, 2, 2}, + IN_ET, + std::vector{1, 3, 5, 7, 9, 7, 5, 3, 1, 0, 2, 4, 6, 8, 10, 8, 6, 4, 2, 0, 2, 4, 6, 8, 10}, + std::vector{1, 2, 3, 1, 1, 1, 3, 2, 1}, + std::vector{0, 2, 1, 0, 0, 2, 1, 0, 0, 2, 1, 0, 0, 2, 1, 0, 0, 2, 1, 0, 0, 2, 1, 0, + 0, 2, 1, 0, 0, 2, 1, 0, 0, 2, 1, 0, 0, 2, 1, 0, 0, 2, 1, 0, 0, 2, 1, 0, + 0, 2, 1, 0, 0, 2, 1, 0, 0, 2, 1, 0, 0, 2, 1, 0, 0, 2, 1, 0, 0, 2, 1, 0}, + std::vector{57, 40, 38, 102}, + {2, 2}, + {0, 0}, + {0, 0}, + {1, 1}, + 1, + 1, + "integral_offsets_stride"), + DeformableConvolutionParams( + PartialShape{1, 1, 7, 7}, + PartialShape{1, 1, 3, 3}, + PartialShape{1, 18, 3, 3}, + PartialShape{1, 1, 3, 3}, + IN_ET, + std::vector{1, 3, 5, 7, 9, 11, 13, 7, 5, 3, 1, -1, -3, -5, 2, 4, 6, 8, 10, 12, 14, 8, 6, 4, 2, + 0, -2, -4, 2, 4, 6, 8, 10, 12, 14, 7, 5, 3, 1, -1, -3, -5, 8, 6, 4, 2, 0, -2, -4}, + std::vector{1, 2, 3, 1, 1, 0, 3, 1, 2}, + std::vector{1, 1, 0, 0, 2, 0, 1, 0, 1, 1, 1, 0, 0, 2, 0, 1, 0, 1, 1, 1, 0, 0, 2, 0, 1, 0, 1, + 1, 1, 0, 0, 2, 0, 1, 0, 1, 1, 1, 0, 0, 2, 0, 1, 0, 1, 1, 1, 0, 0, 2, 0, 1, 0, 1, + 1, 1, 0, 0, 2, 0, 1, 0, 1, 1, 1, 0, 0, 2, 0, 1, 0, 1, 1, 1, 0, 0, 2, 0, 1, 0, 1, + 1, 1, 0, 0, 2, 0, 1, 0, 1, 1, 1, 0, 0, 2, 0, 1, 0, 1, 1, 1, 0, 0, 2, 0, 1, 0, 1, + 1, 1, 0, 0, 2, 0, 1, 0, 1, 1, 1, 0, 0, 2, 0, 1, 0, 1, 1, 1, 0, 0, 2, 0, 1, 0, 1, + 1, 1, 0, 0, 2, 0, 1, 0, 1, 1, 1, 0, 0, 2, 0, 1, 0, 1, 1, 2, 0, 0, 2, 0, 1, 0, 1}, + std::vector{16, -2, 134, 44, -4, -12, 10, 84, -4}, + {1, 1}, + {0, 0}, + {0, 0}, + {2, 2}, + 1, + 1, + "integral_offset_dialation"), + DeformableConvolutionParams( + PartialShape{1, 1, 7, 7}, + PartialShape{1, 1, 3, 3}, + PartialShape{1, 18, 4, 4}, + PartialShape{1, 1, 4, 4}, + IN_ET, + std::vector{1, 3, 5, 7, 9, 11, 13, 7, 5, 3, 1, -1, -3, -5, 2, 4, 6, 8, 10, 12, 14, 8, 6, 4, 2, + 0, -2, -4, 2, 4, 6, 8, 10, 12, 14, 7, 5, 3, 1, -1, -3, -5, 8, 6, 4, 2, 0, -2, -4}, + std::vector{1, 2, 3, 1, 1, 0, 3, 1, 2}, + std::vector{1, 0, 1, 0, 1, 0, 0, 2, 1, 0, 1, 0, 1, 0, 0, 2, + + 1, 0, 1, 0, 1, 0, 0, 2, 1, 0, 1, 0, 1, 0, 0, 2, + + 1, 0, 1, 0, 1, 0, 0, 2, 1, 0, 1, 0, 1, 0, 0, 2, + + 1, 0, 1, 0, 1, 0, 0, 2, 1, 0, 1, 0, 1, 0, 0, 2, + + 1, 0, 1, 0, 1, 0, 0, 2, 1, 0, 1, 0, 1, 0, 0, 2, + + 1, 0, 1, 0, 1, 0, 0, 2, 1, 0, 1, 0, 1, 0, 0, 2, + + 1, 0, 1, 0, 1, 0, 0, 2, 1, 0, 1, 0, 1, 0, 0, 2, + + 1, 0, 1, 0, 1, 0, 0, 2, 1, 0, 1, 0, 1, 0, 0, 2, + + 1, 0, 1, 0, 1, 0, 0, 2, 1, 0, 1, 0, 1, 0, 0, 2, + + 1, 0, 1, 0, 1, 0, 0, 2, 1, 0, 1, 0, 1, 0, 0, 2, + + 1, 0, 1, 0, 1, 0, 0, 2, 1, 0, 1, 0, 1, 0, 0, 2, + + 1, 0, 1, 0, 1, 0, 0, 2, 1, 0, 1, 0, 1, 0, 0, 2, + + 1, 0, 1, 0, 1, 0, 0, 2, 1, 0, 1, 0, 1, 0, 0, 2, + + 1, 0, 1, 0, 1, 0, 0, 2, 1, 0, 1, 0, 1, 0, 0, 2, + + 1, 0, 1, 0, 1, 0, 0, 2, 1, 0, 1, 0, 1, 0, 0, 2, + + 1, 0, 1, 0, 1, 0, 0, 2, 1, 0, 1, 0, 1, 0, 0, 2, + + 1, 0, 1, 0, 1, 0, 0, 2, 1, 0, 1, 0, 1, 0, 0, 2, + + 1, 0, 1, 0, 1, 0, 0, 2, 1, 0, 1, 0, 1, 0, 0, 2}, + std::vector{15, 38, 2, 66, 26, 78, 134, 16, 23, 80, -4, 58, 13, 56, 72, -4}, + {2, 2}, + {2, 2}, + {2, 2}, + {2, 2}, + 1, + 1, + "integral_offset_padding_stride_dialation"), + DeformableConvolutionParams( + PartialShape{1, 2, 4, 4}, + PartialShape{1, 2, 3, 3}, + PartialShape{1, 18, 2, 2}, + PartialShape{1, 1, 2, 2}, + IN_ET, + std::vector{// channel 1 + 1, + 3, + 5, + 7, + 7, + 5, + 3, + 1, + 2, + 4, + 6, + 8, + 8, + 6, + 4, + 2, + // channel 2 + -1, + 3, + -5, + 7, + 7, + -5, + 3, + -1, + -2, + 4, + -6, + 8, + 8, + -6, + 4, + -2}, + std::vector{// channel 1 + 5, + 3, + 5, + 1, + 3, + 1, + 4, + 2, + 4, + // channel 2 + -5, + 3, + 5, + 1, + -3, + 1, + 4, + 2, + -4}, + std::vector{1, 1, 0, 2, 1, 1, 0, 2, 1, 1, 0, 2, 1, 1, 0, 2, 1, 1, 0, 2, 1, 1, 0, 2, + 1, 1, 0, 2, 1, 1, 0, 2, 1, 1, 0, 2, 1, 1, 0, 2, 1, 1, 0, 2, 1, 1, 0, 2, + 1, 1, 0, 2, 1, 1, 0, 2, 1, 1, 0, 2, 1, 1, 0, 2, 1, 1, 0, 2, 1, 1, 0, 2}, + std::vector{160, 32, 94, 20}, + {1, 1}, + {0, 0}, + {0, 0}, + {1, 1}, + 1, + 1, + "integral_offset_input_channels"), + DeformableConvolutionParams(PartialShape{1, 1, 4, 4}, + PartialShape{2, 1, 2, 2}, + PartialShape{1, 8, 3, 3}, + PartialShape{1, 2, 3, 3}, + IN_ET, + std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}, + std::vector{// filter 1 + 1, + 2, + -1, + -2, + // filter 2 + 3, + 4, + -3, + -4}, + std::vector{// channel 1: Y offsets + 1, + 1, + 1, // out1 .. out 3 + 1, + 1, + 1, // out4 .. out 6 + 1, + 1, + 1, // out7 .. out 9 + // channel 1: X offsets + 1, + 1, + 1, // out1 .. out 3 + 1, + 1, + 1, // out4 .. out 6 + 1, + 1, + 1, // out7 .. out 9 + // channel 2: Y offsets + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + // channel 2: X offsets + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + // channel 3: Y offsets + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + // channel 3: X offsets + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + // channel 4: Y offsets + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + // channel 4: X offsets + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1}, + std::vector{// output 1 + -12, + -12, + -4, + -12, + -12, + -4, + 44, + 47, + 16, + // output 2 + -28, + -28, + -12, + -28, + -28, + -12, + 102, + 109, + 48}, + {1, 1}, + {0, 0}, + {0, 0}, + {1, 1}, + 1, + 1, + "integral_offset_output_channels"), + DeformableConvolutionParams(PartialShape{2, 1, 4, 4}, + PartialShape{1, 1, 2, 2}, + PartialShape{2, 8, 3, 3}, + PartialShape{2, 1, 3, 3}, + IN_ET, + std::vector{// batch 1 + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + // batch 2 + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32}, + std::vector{1, 2, -1, -2}, + std::vector{// batch1 + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + // batch2 + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0}, + std::vector{// batch 1 + -12, + -12, + -4, + -12, + -12, + -4, + 44, + 47, + 16, + // batch 2 + -12, + -12, + -12, + -12, + -12, + -12, + -12, + -12, + -12}, + {1, 1}, + {0, 0}, + {0, 0}, + {1, 1}, + 1, + 1, + "integral_offset_batch"), + DeformableConvolutionParams(PartialShape{1, 4, 3, 3}, + PartialShape{2, 2, 2, 2}, + PartialShape{1, 8, 2, 2}, + PartialShape{1, 2, 2, 2}, + IN_ET, + std::vector{// channel 1 + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + // channel 2 + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + // channel 3 + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + // channel 4 + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36}, + std::vector{// filter 1 channel 1 + 1, + 2, + 3, + 4, + // filter 1 channel 2 + 5, + 6, + 7, + 8, + // filter 2 channel 1 + -1, + -2, + -3, + -4, + // filter 2 channel 2 + -5, + -6, + -7, + -8}, + std::vector{// window 1 (F_Y=0, F_X=0) -> I_Y coordinate + 1, + 0, + 2, + 1, // out1 .. out 4 + // window 1 (F_Y=0, F_X=0) -> I_X coordinate + 0, + 1, + 1, + 2, // out1 .. out 4 + // window 2 (F_Y=0, F_X=1) -> I_Y coordinate + 1, + 1, + 1, + 1, // out1 .. out 4 + // window 2 (F_Y=0, F_X=1) -> I_X coordinate + 1, + 1, + 1, + 1, // out1 .. out 4 + // window 3 (F_Y=1, F_X=0) -> I_Y coordinate + 2, + 2, + 2, + 2, // out1 .. out 4 + // window 3 (F_Y=1, F_X=0) -> I_X coordinate + 2, + 2, + 2, + 2, // out1 .. out 4 + // window 4 (F_Y=1, F_X=1) -> I_Y coordinate + 2, + 2, + 2, + 2, // out1 .. out 4 + // window 4 (F_Y=1, F_X=1) -> I_X coordinate + 2, + 2, + 2, + 2}, // out1 .. out 4 + std::vector{ // channel 1 + 171, + 63, + 126, + 0, + // channel 2 + -423, + -171, + -270, + 0}, + {1, 1}, + {0, 0}, + {0, 0}, + {1, 1}, + 2, + 1, + "integral_offset_groups_basic"), + DeformableConvolutionParams(PartialShape{1, 8, 3, 3}, + PartialShape{4, 2, 2, 2}, + PartialShape{1, 8, 2, 2}, + PartialShape{1, 4, 2, 2}, + IN_ET, + std::vector{// channel 1 + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + // channel 2 + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + // channel 3 + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + // channel 4 + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + // channel 5 + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + // channel 6 + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + // channel 7 + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + // channel 8 + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72}, + std::vector{// filter 1 channel 1 + 1, + 2, + 3, + 4, + // filter 1 channel 2 + 5, + 6, + 7, + 8, + // filter 2 channel 1 + 9, + 10, + 11, + 12, + // filter 2 channel 2 + 13, + 14, + 15, + 16, + // filter 3 channel 1 + -1, + -2, + -3, + -4, + // filter 3 channel 2 + -5, + -6, + -7, + -8, + // filter 4 channel 1 + -9, + -10, + -11, + -12, + // filter 4 channel 2 + -13, + -14, + -15, + -16}, + std::vector{1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, + std::vector{// channel 1 + 500, + 234, + 219, + 99, + // channel 2 + 3036, + 1482, + 1463, + 711, + // channel 3 + -1796, + -810, + -723, + -315, + // channel 4 + -6636, + -3210, + -3119, + -1503}, + {1, 1}, + {0, 0}, + {0, 0}, + {1, 1}, + 4, + 1, + "integral_offset_groups_complex"), + DeformableConvolutionParams(PartialShape{1, 2, 4, 4}, + PartialShape{2, 2, 2, 2}, + PartialShape{1, 16, 3, 3}, + PartialShape{1, 2, 3, 3}, + IN_ET, + std::vector{// channel 1 + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + // channel 2 + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32}, + std::vector{// f1: channel 1 + 1, + 2, + 3, + 4, + // f1: channel 2 + 5, + 6, + 7, + 8, + // f2: channel 1 + -1, + -2, + -3, + -4, + // f2: channel 2 + -5, + -6, + -7, + -8}, + std::vector{// defgroup 1 + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + // defgroup 2 + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0}, + std::vector{// output 1 + 610, + 646, + 612, + 754, + 790, + 732, + 768, + 797, + 792, + // output 2 + -610, + -646, + -612, + -754, + -790, + -732, + -768, + -797, + -792}, + {1, 1}, + {0, 0}, + {0, 0}, + {1, 1}, + 1, + 2, + "integral_offset_deforgroup_basic"), + DeformableConvolutionParams(PartialShape{1, 4, 4, 4}, + PartialShape{2, 4, 2, 2}, + PartialShape{1, 32, 3, 3}, + PartialShape{1, 2, 3, 3}, + IN_ET, + std::vector{// channel 1 + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + // channel 2 + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + // channel 3 + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + // channel 4 + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32}, + std::vector{// f1: channel 1 + 1, + 2, + 3, + 4, + // f1: channel 2 + 5, + 6, + 7, + 8, + // f1: channel 3 + 1, + 2, + 3, + 4, + // f1: channel 4 + 5, + 6, + 7, + 8, + // f2: channel 1 + -1, + -2, + -3, + -4, + // f2: channel 2 + -5, + -6, + -7, + -8, + // f2: channel 3 + -1, + -2, + -3, + -4, + // f2: channel 4 + -5, + -6, + -7, + -8}, + std::vector{// defgroup 1 + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + // defgroup 2 + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + + // defgroup 3 + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + // defgroup 4 + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0}, + std::vector{// output 1 + 1220, + 1292, + 1224, + 1508, + 1580, + 1464, + 1536, + 1594, + 1584, + // output 2 + -1220, + -1292, + -1224, + -1508, + -1580, + -1464, + -1536, + -1594, + -1584}, + {1, 1}, + {0, 0}, + {0, 0}, + {1, 1}, + 1, + 4, + "integral_offset_deforgroup_complex1"), + DeformableConvolutionParams(PartialShape{1, 4, 4, 4}, + PartialShape{2, 4, 2, 2}, + PartialShape{1, 16, 3, 3}, + PartialShape{1, 2, 3, 3}, + IN_ET, + std::vector{// channel 1 + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + // channel 2 + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + // channel 3 + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + // channel 4 + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32}, + std::vector{// f1: channel 1 + 1, + 2, + 3, + 4, + // f1: channel 2 + 5, + 6, + 7, + 8, + // f1: channel 3 + 1, + 2, + 3, + 4, + // f1: channel 4 + 5, + 6, + 7, + 8, + // f2: channel 1 + -1, + -2, + -3, + -4, + // f2: channel 2 + -5, + -6, + -7, + -8, + // f2: channel 3 + -1, + -2, + -3, + -4, + // f2: channel 4 + -5, + -6, + -7, + -8}, + std::vector{// defgroup 1 + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + // defgroup 2 + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0}, + std::vector{// output 1 + 1300, + 1372, + 992, + 1588, + 1660, + 1200, + 1228, + 1278, + 1096, + // output 2 + -1300, + -1372, + -992, + -1588, + -1660, + -1200, + -1228, + -1278, + -1096}, + {1, 1}, + {0, 0}, + {0, 0}, + {1, 1}, + 1, + 2, + "integral_offset_deforgroup_complex2"), + DeformableConvolutionParams( + PartialShape{1, 4, 3, 3}, + PartialShape{2, 2, 2, 2}, + PartialShape{1, 16, 2, 2}, + PartialShape{1, 2, 2, 2}, + IN_ET, + std::vector{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}, + std::vector{1, 2, 3, 4, 5, 6, 7, 8, -1, -2, -3, -4, -5, -6, -7, -8}, + std::vector{// defgroup 1 + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + // defgroup 2 + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0}, + std::vector{500, 234, 219, 99, -1004, -1040, -1112, -1148}, + {1, 1}, + {0, 0}, + {0, 0}, + {1, 1}, + 2, + 2, + "integral_offset_groups_and_deforgroups"), }; return deformableConvolutionParams; } @@ -4625,583 +6723,687 @@ template std::vector generateDeformableConvolutionInt8Params() { using T = typename element_type_traits::value_type; - std::vector deformableConvolutionParams { -// --------------------- 2D DeformableConvolution ------------------------------------------ - DeformableConvolutionParams(PartialShape {1, 1, 4, 4}, - PartialShape {1, 1, 2, 2}, - PartialShape {1, 8, 3, 3}, - PartialShape {1, 1, 3, 3}, - IN_ET, - std::vector{ - 1, 2, 3, 4, - 5, 6, 7, 8, - 9, 10, 11, 12, - 13, 14, 15, 16}, - std::vector{ - 1, 2, - -1, -2}, - std::vector{ - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0}, - std::vector{ - -12, -12, -12, - -12, -12, -12, - -12, -12, -12}, - {1, 1}, - {0, 0}, - {0, 0}, - {1, 1}), - DeformableConvolutionParams(PartialShape {1, 1, 3, 3}, - PartialShape {1, 1, 2, 2}, - PartialShape {1, 8, 4, 4}, - PartialShape {1, 1, 4, 4}, - IN_ET, - std::vector{ - 1, 3, 5, - 7, 5, 3, - 1, 3, 5}, - std::vector{ - 1, 2, - 0, 1}, - std::vector{ - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0}, - std::vector{ - 1, 3, 5, 0, - 9, 12, 16, 5, - 15, 20, 16, 3, - 2, 7, 13, 5}, - {1, 1}, - {1, 1}, - {1, 1}, - {1, 1}), - DeformableConvolutionParams(PartialShape {1, 1, 5, 5}, - PartialShape {1, 1, 3, 3}, - PartialShape {1, 18, 2, 2}, - PartialShape {1, 1, 2, 2}, - IN_ET, - std::vector{ - 1, 3, 5, 7, 9, - 7, 5, 3, 1, 0, - 2, 4, 6, 8, 10, - 8, 6, 4, 2, 0, - 2, 4, 6, 8, 10}, - std::vector{ - 1, 2, 3, - 1, 1, 1, - 3, 2, 1}, - std::vector{ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - std::vector{ - 57, 94, - 66, 102}, - {2, 2}, - {0, 0}, - {0, 0}, - {1, 1}), - DeformableConvolutionParams(PartialShape {2, 1, 4, 4}, - PartialShape {1, 1, 3, 3}, - PartialShape {2, 18, 2, 2}, - PartialShape {2, 1, 2, 2}, - IN_ET, - std::vector{ - // batch 1 - 1, 3, 2, 1, - 1, 3, 3, 1, - 2, 1, 1, 3, - 3, 2, 3, 3, - // batch 2 - -1, 3, 2, -1, - 1, 3, -3, 1, - -2, -1, 1, 3, - 3, 2, 3, -3}, - std::vector{ - -5, 3, 5, - 1, -3, 1, - 4, 2, -4}, - std::vector{ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - std::vector{ - // batch 1 - 15, -15, - 23, 2, - // batch 2 - -1, -15, - -5, 6}, - {1, 1}, - {0, 0}, - {0, 0}, - {1, 1}), - DeformableConvolutionParams(PartialShape {1, 2, 4, 4}, - PartialShape {1, 2, 2, 2}, - PartialShape {1, 8, 3, 3}, - PartialShape {1, 1, 3, 3}, - IN_ET, - std::vector{ - // channel 1 - 1, 2, 3, 4, - 5, 6, 7, 8, - 9, 10, 11, 12, - 13, 14, 15, 16, - // channel 2 - 17, 18, 19, 20, - 21, 22, 23, 24, - 25, 26, 27, 28, - 29, 30, 31, 32}, - std::vector{ - // channel 1 - 1, 2, - -1, -2, - // channel 2 - 3, 4, - -3, -4}, - std::vector{ - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0}, - std::vector{ - -40, -40, -40, - -40, -40, -40, - -40, -40, -40}, - {1, 1}, - {0, 0}, - {0, 0}, - {1, 1}), - DeformableConvolutionParams(PartialShape {1, 1, 4, 4}, - PartialShape {1, 1, 2, 2}, - PartialShape {1, 8, 3, 3}, - PartialShape {1, 1, 3, 3}, - IN_ET, - std::vector{ - 1, 2, 3, 4, - 5, 6, 7, 8, - 9, 10, 11, 12, - 13, 14, 15, 16}, - std::vector{ - 1, 2, - -1, -2}, - std::vector{ - // window 1 (Y=0, X=0) -> Y coordinate - 1, 1, 1, // out1 .. out 3 - 1, 1, 1, // out4 .. out 6 - 1, 1, 1, // out7 .. out 9 - // window 1 (Y=0, X=0) -> X coordinate - 1, 1, 1, // out1 .. out 3 - 1, 1, 1, // out4 .. out 6 - 1, 1, 1, // out7 .. out 9 - // window 2 - 1, 1, 1, - 1, 1, 1, - 1, 1, 1, - // window 2 - 1, 1, 1, - 1, 1, 1, - 1, 1, 1, - // window 3 - 1, 1, 1, - 1, 1, 1, - 1, 1, 1, - // window 3 - 1, 1, 1, - 1, 1, 1, - 1, 1, 1, - // window 4 - 1, 1, 1, - 1, 1, 1, - 1, 1, 1, - // window 4 - 1, 1, 1, - 1, 1, 1, - 1, 1, 1}, - std::vector{ - -12, -12, -4, - -12, -12, -4, - 44, 47, 16}, - {1, 1}, - {0, 0}, - {0, 0}, - {1, 1}, - 1, - 1, - "integral_offsets_1"), - DeformableConvolutionParams(PartialShape {1, 1, 4, 4}, - PartialShape {1, 1, 3, 3}, - PartialShape {1, 18, 4, 4}, - PartialShape {1, 1, 4, 4}, - IN_ET, - std::vector{ - 1, 3, 7, 7, - 7, 6, 3, 1, - 4, 4, 2, 8, - 1, 1, 1, 2}, - std::vector{ - 1, 2, 3, - 0, 1, 0, - 3, 2, 1}, - std::vector{ - 1, 0, 1, 0, - 1, 0, 0, 2, - 1, 0, 1, 0, - 1, 0, 0, 2, + std::vector deformableConvolutionParams{ + // --------------------- 2D DeformableConvolution ------------------------------------------ + DeformableConvolutionParams( + PartialShape{1, 1, 4, 4}, + PartialShape{1, 1, 2, 2}, + PartialShape{1, 8, 3, 3}, + PartialShape{1, 1, 3, 3}, + IN_ET, + std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}, + std::vector{1, 2, -1, -2}, + std::vector{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + std::vector{-12, -12, -12, -12, -12, -12, -12, -12, -12}, + {1, 1}, + {0, 0}, + {0, 0}, + {1, 1}), + DeformableConvolutionParams( + PartialShape{1, 1, 3, 3}, + PartialShape{1, 1, 2, 2}, + PartialShape{1, 8, 4, 4}, + PartialShape{1, 1, 4, 4}, + IN_ET, + std::vector{1, 3, 5, 7, 5, 3, 1, 3, 5}, + std::vector{1, 2, 0, 1}, + std::vector{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + std::vector{1, 3, 5, 0, 9, 12, 16, 5, 15, 20, 16, 3, 2, 7, 13, 5}, + {1, 1}, + {1, 1}, + {1, 1}, + {1, 1}), + DeformableConvolutionParams( + PartialShape{1, 1, 5, 5}, + PartialShape{1, 1, 3, 3}, + PartialShape{1, 18, 2, 2}, + PartialShape{1, 1, 2, 2}, + IN_ET, + std::vector{1, 3, 5, 7, 9, 7, 5, 3, 1, 0, 2, 4, 6, 8, 10, 8, 6, 4, 2, 0, 2, 4, 6, 8, 10}, + std::vector{1, 2, 3, 1, 1, 1, 3, 2, 1}, + std::vector{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + std::vector{57, 94, 66, 102}, + {2, 2}, + {0, 0}, + {0, 0}, + {1, 1}), + DeformableConvolutionParams( + PartialShape{2, 1, 4, 4}, + PartialShape{1, 1, 3, 3}, + PartialShape{2, 18, 2, 2}, + PartialShape{2, 1, 2, 2}, + IN_ET, + std::vector{// batch 1 + 1, + 3, + 2, + 1, + 1, + 3, + 3, + 1, + 2, + 1, + 1, + 3, + 3, + 2, + 3, + 3, + // batch 2 + -1, + 3, + 2, + -1, + 1, + 3, + -3, + 1, + -2, + -1, + 1, + 3, + 3, + 2, + 3, + -3}, + std::vector{-5, 3, 5, 1, -3, 1, 4, 2, -4}, + std::vector{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + std::vector{// batch 1 + 15, + -15, + 23, + 2, + // batch 2 + -1, + -15, + -5, + 6}, + {1, 1}, + {0, 0}, + {0, 0}, + {1, 1}), + DeformableConvolutionParams( + PartialShape{1, 2, 4, 4}, + PartialShape{1, 2, 2, 2}, + PartialShape{1, 8, 3, 3}, + PartialShape{1, 1, 3, 3}, + IN_ET, + std::vector{// channel 1 + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + // channel 2 + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32}, + std::vector{// channel 1 + 1, + 2, + -1, + -2, + // channel 2 + 3, + 4, + -3, + -4}, + std::vector{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + std::vector{-40, -40, -40, -40, -40, -40, -40, -40, -40}, + {1, 1}, + {0, 0}, + {0, 0}, + {1, 1}), + DeformableConvolutionParams(PartialShape{1, 1, 4, 4}, + PartialShape{1, 1, 2, 2}, + PartialShape{1, 8, 3, 3}, + PartialShape{1, 1, 3, 3}, + IN_ET, + std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}, + std::vector{1, 2, -1, -2}, + std::vector{// window 1 (Y=0, X=0) -> Y coordinate + 1, + 1, + 1, // out1 .. out 3 + 1, + 1, + 1, // out4 .. out 6 + 1, + 1, + 1, // out7 .. out 9 + // window 1 (Y=0, X=0) -> X coordinate + 1, + 1, + 1, // out1 .. out 3 + 1, + 1, + 1, // out4 .. out 6 + 1, + 1, + 1, // out7 .. out 9 + // window 2 + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + // window 2 + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + // window 3 + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + // window 3 + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + // window 4 + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + // window 4 + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1}, + std::vector{-12, -12, -4, -12, -12, -4, 44, 47, 16}, + {1, 1}, + {0, 0}, + {0, 0}, + {1, 1}, + 1, + 1, + "integral_offsets_1"), + DeformableConvolutionParams(PartialShape{1, 1, 4, 4}, + PartialShape{1, 1, 3, 3}, + PartialShape{1, 18, 4, 4}, + PartialShape{1, 1, 4, 4}, + IN_ET, + std::vector{1, 3, 7, 7, 7, 6, 3, 1, 4, 4, 2, 8, 1, 1, 1, 2}, + std::vector{1, 2, 3, 0, 1, 0, 3, 2, 1}, + std::vector{1, 0, 1, 0, 1, 0, 0, 2, 1, 0, 1, 0, 1, 0, 0, 2, - 1, 0, 1, 0, - 1, 0, 0, 2, - 1, 0, 1, 0, - 1, 0, 0, 2, + 1, 0, 1, 0, 1, 0, 0, 2, 1, 0, 1, 0, 1, 0, 0, 2, - 1, 0, 1, 0, - 1, 0, 0, 2, - 1, 0, 1, 0, - 1, 0, 0, 2, + 1, 0, 1, 0, 1, 0, 0, 2, 1, 0, 1, 0, 1, 0, 0, 2, - 1, 0, 1, 0, - 1, 0, 0, 2, - 1, 0, 1, 0, - 1, 0, 0, 2, + 1, 0, 1, 0, 1, 0, 0, 2, 1, 0, 1, 0, 1, 0, 0, 2, - 1, 0, 1, 0, - 1, 0, 0, 2, - 1, 0, 1, 0, - 1, 0, 0, 2, + 1, 0, 1, 0, 1, 0, 0, 2, 1, 0, 1, 0, 1, 0, 0, 2, - 1, 0, 1, 0, - 1, 0, 0, 2, - 1, 0, 1, 0, - 1, 0, 0, 2, + 1, 0, 1, 0, 1, 0, 0, 2, 1, 0, 1, 0, 1, 0, 0, 2, - 1, 0, 1, 0, - 1, 0, 0, 2, - 1, 0, 1, 0, - 1, 0, 0, 2, + 1, 0, 1, 0, 1, 0, 0, 2, 1, 0, 1, 0, 1, 0, 0, 2, - 1, 0, 1, 0, - 1, 0, 0, 2, - 1, 0, 1, 0, - 1, 0, 0, 2, + 1, 0, 1, 0, 1, 0, 0, 2, 1, 0, 1, 0, 1, 0, 0, 2, - 1, 0, 1, 0, - 1, 0, 0, 2, - 1, 0, 1, 0, - 1, 0, 0, 2, + 1, 0, 1, 0, 1, 0, 0, 2, 1, 0, 1, 0, 1, 0, 0, 2, - 1, 0, 1, 0, - 1, 0, 0, 2, - 1, 0, 1, 0, - 1, 0, 0, 2, + 1, 0, 1, 0, 1, 0, 0, 2, 1, 0, 1, 0, 1, 0, 0, 2, - 1, 0, 1, 0, - 1, 0, 0, 2, - 1, 0, 1, 0, - 1, 0, 0, 2, + 1, 0, 1, 0, 1, 0, 0, 2, 1, 0, 1, 0, 1, 0, 0, 2, - 1, 0, 1, 0, - 1, 0, 0, 2, - 1, 0, 1, 0, - 1, 0, 0, 2, + 1, 0, 1, 0, 1, 0, 0, 2, 1, 0, 1, 0, 1, 0, 0, 2, - 1, 0, 1, 0, - 1, 0, 0, 2, - 1, 0, 1, 0, - 1, 0, 0, 2, + 1, 0, 1, 0, 1, 0, 0, 2, 1, 0, 1, 0, 1, 0, 0, 2, - 1, 0, 1, 0, - 1, 0, 0, 2, - 1, 0, 1, 0, - 1, 0, 0, 2, + 1, 0, 1, 0, 1, 0, 0, 2, 1, 0, 1, 0, 1, 0, 0, 2, - 1, 0, 1, 0, - 1, 0, 0, 2, - 1, 0, 1, 0, - 1, 0, 0, 2, + 1, 0, 1, 0, 1, 0, 0, 2, 1, 0, 1, 0, 1, 0, 0, 2, - 1, 0, 1, 0, - 1, 0, 0, 2, - 1, 0, 1, 0, - 1, 0, 0, 2, + 1, 0, 1, 0, 1, 0, 0, 2, 1, 0, 1, 0, 1, 0, 0, 2, - 1, 0, 1, 0, - 1, 0, 0, 2, - 1, 0, 1, 0, - 1, 0, 0, 2, + 1, 0, 1, 0, 1, 0, 0, 2, 1, 0, 1, 0, 1, 0, 0, 2, - 1, 0, 1, 0, - 1, 0, 0, 2, - 1, 0, 1, 0, - 1, 0, 0, 2}, - std::vector{ - 56, 39, 44, 18, - 38, 56, 65, 0, - 19, 38, 20, 20, - 6, 19, 33, 0}, - {1, 1}, - {1, 1}, - {1, 1}, - {1, 1}), - DeformableConvolutionParams(PartialShape {1, 1, 5, 5}, - PartialShape {1, 1, 3, 3}, - PartialShape {1, 18, 2, 2}, - PartialShape {1, 1, 2, 2}, - IN_ET, - std::vector{ - 1, 3, 5, 7, 9, - 7, 5, 3, 1, 0, - 2, 4, 6, 8, 10, - 8, 6, 4, 2, 0, - 2, 4, 6, 8, 10}, - std::vector{ - 1, 2, 3, - 1, 1, 1, - 3, 2, 1}, - std::vector{ - 0, 2, - 1, 0, - 0, 2, - 1, 0, - 0, 2, - 1, 0, - 0, 2, - 1, 0, - 0, 2, - 1, 0, - 0, 2, - 1, 0, - 0, 2, - 1, 0, - 0, 2, - 1, 0, - 0, 2, - 1, 0, - 0, 2, - 1, 0, - 0, 2, - 1, 0, - 0, 2, - 1, 0, - 0, 2, - 1, 0, - 0, 2, - 1, 0, - 0, 2, - 1, 0, - 0, 2, - 1, 0, - 0, 2, - 1, 0, - 0, 2, - 1, 0}, - std::vector{ - 57, 40, - 38, 102}, - {2, 2}, - {0, 0}, - {0, 0}, - {1, 1}, - 1, - 1, - "integral_offsets_stride"), - DeformableConvolutionParams(PartialShape {1, 1, 4, 4}, - PartialShape {2, 1, 2, 2}, - PartialShape {1, 8, 3, 3}, - PartialShape {1, 2, 3, 3}, - IN_ET, - std::vector{ - 1, 2, 3, 4, - 5, 6, 7, 8, - 9, 10, 11, 12, - 13, 14, 15, 16}, - std::vector{ - // filter 1 - 1, 2, - -1, -2, - // filter 2 - 3, 4, - -3, -4}, - std::vector{ - //channel 1: Y offsets - 1, 1, 1, // out1 .. out 3 - 1, 1, 1, // out4 .. out 6 - 1, 1, 1, // out7 .. out 9 - //channel 1: X offsets - 1, 1, 1, // out1 .. out 3 - 1, 1, 1, // out4 .. out 6 - 1, 1, 1, // out7 .. out 9 - //channel 2: Y offsets - 1, 1, 1, - 1, 1, 1, - 1, 1, 1, - //channel 2: X offsets - 1, 1, 1, - 1, 1, 1, - 1, 1, 1, - //channel 3: Y offsets - 1, 1, 1, - 1, 1, 1, - 1, 1, 1, - //channel 3: X offsets - 1, 1, 1, - 1, 1, 1, - 1, 1, 1, - //channel 4: Y offsets - 1, 1, 1, - 1, 1, 1, - 1, 1, 1, - //channel 4: X offsets - 1, 1, 1, - 1, 1, 1, - 1, 1, 1}, - std::vector{ - // output 1 - -12, -12, -4, - -12, -12, -4, - 44, 47, 16, - // output 2 - -28, -28, -12, - -28, -28, -12, - 102, 109, 48}, - {1, 1}, - {0, 0}, - {0, 0}, - {1, 1}, - 1, - 1, - "integral_offset_output_channels"), - DeformableConvolutionParams(PartialShape {2, 1, 4, 4}, - PartialShape {1, 1, 2, 2}, - PartialShape {2, 8, 3, 3}, - PartialShape {2, 1, 3, 3}, - IN_ET, - std::vector{ - //batch 1 - 1, 2, 3, 4, - 5, 6, 7, 8, - 9, 10, 11, 12, - 13, 14, 15, 16, - //batch 2 - 17, 18, 19, 20, - 21, 22, 23, 24, - 25, 26, 27, 28, - 29, 30, 31, 32}, - std::vector{ - 1, 2, - -1, -2}, - std::vector{ - // batch1 - 1, 1, 1, - 1, 1, 1, - 1, 1, 1, + 1, 0, 1, 0, 1, 0, 0, 2, 1, 0, 1, 0, 1, 0, 0, 2}, + std::vector{56, 39, 44, 18, 38, 56, 65, 0, 19, 38, 20, 20, 6, 19, 33, 0}, + {1, 1}, + {1, 1}, + {1, 1}, + {1, 1}), + DeformableConvolutionParams( + PartialShape{1, 1, 5, 5}, + PartialShape{1, 1, 3, 3}, + PartialShape{1, 18, 2, 2}, + PartialShape{1, 1, 2, 2}, + IN_ET, + std::vector{1, 3, 5, 7, 9, 7, 5, 3, 1, 0, 2, 4, 6, 8, 10, 8, 6, 4, 2, 0, 2, 4, 6, 8, 10}, + std::vector{1, 2, 3, 1, 1, 1, 3, 2, 1}, + std::vector{0, 2, 1, 0, 0, 2, 1, 0, 0, 2, 1, 0, 0, 2, 1, 0, 0, 2, 1, 0, 0, 2, 1, 0, + 0, 2, 1, 0, 0, 2, 1, 0, 0, 2, 1, 0, 0, 2, 1, 0, 0, 2, 1, 0, 0, 2, 1, 0, + 0, 2, 1, 0, 0, 2, 1, 0, 0, 2, 1, 0, 0, 2, 1, 0, 0, 2, 1, 0, 0, 2, 1, 0}, + std::vector{57, 40, 38, 102}, + {2, 2}, + {0, 0}, + {0, 0}, + {1, 1}, + 1, + 1, + "integral_offsets_stride"), + DeformableConvolutionParams(PartialShape{1, 1, 4, 4}, + PartialShape{2, 1, 2, 2}, + PartialShape{1, 8, 3, 3}, + PartialShape{1, 2, 3, 3}, + IN_ET, + std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}, + std::vector{// filter 1 + 1, + 2, + -1, + -2, + // filter 2 + 3, + 4, + -3, + -4}, + std::vector{// channel 1: Y offsets + 1, + 1, + 1, // out1 .. out 3 + 1, + 1, + 1, // out4 .. out 6 + 1, + 1, + 1, // out7 .. out 9 + // channel 1: X offsets + 1, + 1, + 1, // out1 .. out 3 + 1, + 1, + 1, // out4 .. out 6 + 1, + 1, + 1, // out7 .. out 9 + // channel 2: Y offsets + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + // channel 2: X offsets + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + // channel 3: Y offsets + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + // channel 3: X offsets + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + // channel 4: Y offsets + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + // channel 4: X offsets + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1}, + std::vector{// output 1 + -12, + -12, + -4, + -12, + -12, + -4, + 44, + 47, + 16, + // output 2 + -28, + -28, + -12, + -28, + -28, + -12, + 102, + 109, + 48}, + {1, 1}, + {0, 0}, + {0, 0}, + {1, 1}, + 1, + 1, + "integral_offset_output_channels"), + DeformableConvolutionParams(PartialShape{2, 1, 4, 4}, + PartialShape{1, 1, 2, 2}, + PartialShape{2, 8, 3, 3}, + PartialShape{2, 1, 3, 3}, + IN_ET, + std::vector{// batch 1 + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + // batch 2 + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32}, + std::vector{1, 2, -1, -2}, + std::vector{// batch1 + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, - 1, 1, 1, - 1, 1, 1, - 1, 1, 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, - 1, 1, 1, - 1, 1, 1, - 1, 1, 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, - 1, 1, 1, - 1, 1, 1, - 1, 1, 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, - 1, 1, 1, - 1, 1, 1, - 1, 1, 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, - 1, 1, 1, - 1, 1, 1, - 1, 1, 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, - 1, 1, 1, - 1, 1, 1, - 1, 1, 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, - 1, 1, 1, - 1, 1, 1, - 1, 1, 1, - // batch2 - 0, 0, 0, - 0, 0, 0, - 0, 0, 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + // batch2 + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, - 0, 0, 0, - 0, 0, 0, - 0, 0, 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, - 0, 0, 0, - 0, 0, 0, - 0, 0, 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, - 0, 0, 0, - 0, 0, 0, - 0, 0, 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, - 0, 0, 0, - 0, 0, 0, - 0, 0, 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, - 0, 0, 0, - 0, 0, 0, - 0, 0, 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, - 0, 0, 0, - 0, 0, 0, - 0, 0, 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, - 0, 0, 0, - 0, 0, 0, - 0, 0, 0}, - std::vector{ - // batch 1 - -12, -12, -4, - -12, -12, -4, - 44, 47, 16, - // batch 2 - -12, -12, -12, - -12, -12, -12, - -12, -12, -12}, - {1, 1}, - {0, 0}, - {0, 0}, - {1, 1}, - 1, - 1, - "integral_offset_batch"), + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0}, + std::vector{// batch 1 + -12, + -12, + -4, + -12, + -12, + -4, + 44, + 47, + 16, + // batch 2 + -12, + -12, + -12, + -12, + -12, + -12, + -12, + -12, + -12}, + {1, 1}, + {0, 0}, + {0, 0}, + {1, 1}, + 1, + 1, + "integral_offset_batch"), }; return deformableConvolutionParams; } @@ -5210,248 +7412,108 @@ template std::vector generateDeformableConvolutionUintParams() { using T = typename element_type_traits::value_type; - std::vector deformableConvolutionParams { -// --------------------- 2D DeformableConvolution ------------------------------------------ - DeformableConvolutionParams(PartialShape {1, 1, 3, 3}, - PartialShape {1, 1, 2, 2}, - PartialShape {1, 8, 4, 4}, - PartialShape {1, 1, 4, 4}, - IN_ET, - std::vector{ - 1, 3, 5, - 7, 5, 3, - 1, 3, 5}, - std::vector{ - 1, 2, - 0, 1}, - std::vector{ - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0}, - std::vector{ - 1, 3, 5, 0, - 9, 12, 16, 5, - 15, 20, 16, 3, - 2, 7, 13, 5}, - {1, 1}, - {1, 1}, - {1, 1}, - {1, 1}), - DeformableConvolutionParams(PartialShape {1, 1, 5, 5}, - PartialShape {1, 1, 3, 3}, - PartialShape {1, 18, 2, 2}, - PartialShape {1, 1, 2, 2}, - IN_ET, - std::vector{ - 1, 3, 5, 7, 9, - 7, 5, 3, 1, 0, - 2, 4, 6, 8, 10, - 8, 6, 4, 2, 0, - 2, 4, 6, 8, 10}, - std::vector{ - 1, 2, 3, - 1, 1, 1, - 3, 2, 1}, - std::vector{ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - std::vector{ - 57, 94, - 66, 102}, - {2, 2}, - {0, 0}, - {0, 0}, - {1, 1}), - DeformableConvolutionParams(PartialShape {1, 1, 4, 4}, - PartialShape {1, 1, 3, 3}, - PartialShape {1, 18, 4, 4}, - PartialShape {1, 1, 4, 4}, - IN_ET, - std::vector{ - 1, 3, 7, 7, - 7, 6, 3, 1, - 4, 4, 2, 8, - 1, 1, 1, 2}, - std::vector{ - 1, 2, 3, - 0, 1, 0, - 3, 2, 1}, - std::vector{ - 1, 0, 1, 0, - 1, 0, 0, 2, - 1, 0, 1, 0, - 1, 0, 0, 2, + std::vector deformableConvolutionParams{ + // --------------------- 2D DeformableConvolution ------------------------------------------ + DeformableConvolutionParams( + PartialShape{1, 1, 3, 3}, + PartialShape{1, 1, 2, 2}, + PartialShape{1, 8, 4, 4}, + PartialShape{1, 1, 4, 4}, + IN_ET, + std::vector{1, 3, 5, 7, 5, 3, 1, 3, 5}, + std::vector{1, 2, 0, 1}, + std::vector{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + std::vector{1, 3, 5, 0, 9, 12, 16, 5, 15, 20, 16, 3, 2, 7, 13, 5}, + {1, 1}, + {1, 1}, + {1, 1}, + {1, 1}), + DeformableConvolutionParams( + PartialShape{1, 1, 5, 5}, + PartialShape{1, 1, 3, 3}, + PartialShape{1, 18, 2, 2}, + PartialShape{1, 1, 2, 2}, + IN_ET, + std::vector{1, 3, 5, 7, 9, 7, 5, 3, 1, 0, 2, 4, 6, 8, 10, 8, 6, 4, 2, 0, 2, 4, 6, 8, 10}, + std::vector{1, 2, 3, 1, 1, 1, 3, 2, 1}, + std::vector{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + std::vector{57, 94, 66, 102}, + {2, 2}, + {0, 0}, + {0, 0}, + {1, 1}), + DeformableConvolutionParams(PartialShape{1, 1, 4, 4}, + PartialShape{1, 1, 3, 3}, + PartialShape{1, 18, 4, 4}, + PartialShape{1, 1, 4, 4}, + IN_ET, + std::vector{1, 3, 7, 7, 7, 6, 3, 1, 4, 4, 2, 8, 1, 1, 1, 2}, + std::vector{1, 2, 3, 0, 1, 0, 3, 2, 1}, + std::vector{1, 0, 1, 0, 1, 0, 0, 2, 1, 0, 1, 0, 1, 0, 0, 2, - 1, 0, 1, 0, - 1, 0, 0, 2, - 1, 0, 1, 0, - 1, 0, 0, 2, + 1, 0, 1, 0, 1, 0, 0, 2, 1, 0, 1, 0, 1, 0, 0, 2, - 1, 0, 1, 0, - 1, 0, 0, 2, - 1, 0, 1, 0, - 1, 0, 0, 2, + 1, 0, 1, 0, 1, 0, 0, 2, 1, 0, 1, 0, 1, 0, 0, 2, - 1, 0, 1, 0, - 1, 0, 0, 2, - 1, 0, 1, 0, - 1, 0, 0, 2, + 1, 0, 1, 0, 1, 0, 0, 2, 1, 0, 1, 0, 1, 0, 0, 2, - 1, 0, 1, 0, - 1, 0, 0, 2, - 1, 0, 1, 0, - 1, 0, 0, 2, + 1, 0, 1, 0, 1, 0, 0, 2, 1, 0, 1, 0, 1, 0, 0, 2, - 1, 0, 1, 0, - 1, 0, 0, 2, - 1, 0, 1, 0, - 1, 0, 0, 2, + 1, 0, 1, 0, 1, 0, 0, 2, 1, 0, 1, 0, 1, 0, 0, 2, - 1, 0, 1, 0, - 1, 0, 0, 2, - 1, 0, 1, 0, - 1, 0, 0, 2, + 1, 0, 1, 0, 1, 0, 0, 2, 1, 0, 1, 0, 1, 0, 0, 2, - 1, 0, 1, 0, - 1, 0, 0, 2, - 1, 0, 1, 0, - 1, 0, 0, 2, + 1, 0, 1, 0, 1, 0, 0, 2, 1, 0, 1, 0, 1, 0, 0, 2, - 1, 0, 1, 0, - 1, 0, 0, 2, - 1, 0, 1, 0, - 1, 0, 0, 2, + 1, 0, 1, 0, 1, 0, 0, 2, 1, 0, 1, 0, 1, 0, 0, 2, - 1, 0, 1, 0, - 1, 0, 0, 2, - 1, 0, 1, 0, - 1, 0, 0, 2, + 1, 0, 1, 0, 1, 0, 0, 2, 1, 0, 1, 0, 1, 0, 0, 2, - 1, 0, 1, 0, - 1, 0, 0, 2, - 1, 0, 1, 0, - 1, 0, 0, 2, + 1, 0, 1, 0, 1, 0, 0, 2, 1, 0, 1, 0, 1, 0, 0, 2, - 1, 0, 1, 0, - 1, 0, 0, 2, - 1, 0, 1, 0, - 1, 0, 0, 2, + 1, 0, 1, 0, 1, 0, 0, 2, 1, 0, 1, 0, 1, 0, 0, 2, - 1, 0, 1, 0, - 1, 0, 0, 2, - 1, 0, 1, 0, - 1, 0, 0, 2, + 1, 0, 1, 0, 1, 0, 0, 2, 1, 0, 1, 0, 1, 0, 0, 2, - 1, 0, 1, 0, - 1, 0, 0, 2, - 1, 0, 1, 0, - 1, 0, 0, 2, + 1, 0, 1, 0, 1, 0, 0, 2, 1, 0, 1, 0, 1, 0, 0, 2, - 1, 0, 1, 0, - 1, 0, 0, 2, - 1, 0, 1, 0, - 1, 0, 0, 2, + 1, 0, 1, 0, 1, 0, 0, 2, 1, 0, 1, 0, 1, 0, 0, 2, - 1, 0, 1, 0, - 1, 0, 0, 2, - 1, 0, 1, 0, - 1, 0, 0, 2, + 1, 0, 1, 0, 1, 0, 0, 2, 1, 0, 1, 0, 1, 0, 0, 2, - 1, 0, 1, 0, - 1, 0, 0, 2, - 1, 0, 1, 0, - 1, 0, 0, 2, + 1, 0, 1, 0, 1, 0, 0, 2, 1, 0, 1, 0, 1, 0, 0, 2, - 1, 0, 1, 0, - 1, 0, 0, 2, - 1, 0, 1, 0, - 1, 0, 0, 2}, - std::vector{ - 56, 39, 44, 18, - 38, 56, 65, 0, - 19, 38, 20, 20, - 6, 19, 33, 0}, - {1, 1}, - {1, 1}, - {1, 1}, - {1, 1}), - DeformableConvolutionParams(PartialShape {1, 1, 5, 5}, - PartialShape {1, 1, 3, 3}, - PartialShape {1, 18, 2, 2}, - PartialShape {1, 1, 2, 2}, - IN_ET, - std::vector{ - 1, 3, 5, 7, 9, - 7, 5, 3, 1, 0, - 2, 4, 6, 8, 10, - 8, 6, 4, 2, 0, - 2, 4, 6, 8, 10}, - std::vector{ - 1, 2, 3, - 1, 1, 1, - 3, 2, 1}, - std::vector{ - 0, 2, - 1, 0, - 0, 2, - 1, 0, - 0, 2, - 1, 0, - 0, 2, - 1, 0, - 0, 2, - 1, 0, - 0, 2, - 1, 0, - 0, 2, - 1, 0, - 0, 2, - 1, 0, - 0, 2, - 1, 0, - 0, 2, - 1, 0, - 0, 2, - 1, 0, - 0, 2, - 1, 0, - 0, 2, - 1, 0, - 0, 2, - 1, 0, - 0, 2, - 1, 0, - 0, 2, - 1, 0, - 0, 2, - 1, 0, - 0, 2, - 1, 0}, - std::vector{ - 57, 40, - 38, 102}, - {2, 2}, - {0, 0}, - {0, 0}, - {1, 1}, - 1, - 1, - "integral_offsets_stride"), + 1, 0, 1, 0, 1, 0, 0, 2, 1, 0, 1, 0, 1, 0, 0, 2}, + std::vector{56, 39, 44, 18, 38, 56, 65, 0, 19, 38, 20, 20, 6, 19, 33, 0}, + {1, 1}, + {1, 1}, + {1, 1}, + {1, 1}), + DeformableConvolutionParams( + PartialShape{1, 1, 5, 5}, + PartialShape{1, 1, 3, 3}, + PartialShape{1, 18, 2, 2}, + PartialShape{1, 1, 2, 2}, + IN_ET, + std::vector{1, 3, 5, 7, 9, 7, 5, 3, 1, 0, 2, 4, 6, 8, 10, 8, 6, 4, 2, 0, 2, 4, 6, 8, 10}, + std::vector{1, 2, 3, 1, 1, 1, 3, 2, 1}, + std::vector{0, 2, 1, 0, 0, 2, 1, 0, 0, 2, 1, 0, 0, 2, 1, 0, 0, 2, 1, 0, 0, 2, 1, 0, + 0, 2, 1, 0, 0, 2, 1, 0, 0, 2, 1, 0, 0, 2, 1, 0, 0, 2, 1, 0, 0, 2, 1, 0, + 0, 2, 1, 0, 0, 2, 1, 0, 0, 2, 1, 0, 0, 2, 1, 0, 0, 2, 1, 0, 0, 2, 1, 0}, + std::vector{57, 40, 38, 102}, + {2, 2}, + {0, 0}, + {0, 0}, + {1, 1}, + 1, + 1, + "integral_offsets_stride"), }; return deformableConvolutionParams; } @@ -5460,287 +7522,214 @@ template std::vector generateDeformableConvolutionV8MaskParams() { using T = typename element_type_traits::value_type; - std::vector deformableConvolutionParams { - DeformableConvolutionParams(PartialShape {1, 1, 4, 4}, - PartialShape {1, 1, 2, 2}, - PartialShape {1, 8, 3, 3}, - PartialShape {1, 1, 3, 3}, - PartialShape {1, 4, 3, 3}, - IN_ET, - std::vector{ - 1.0f, 2.0f, 3.0f, 4.0f, - 5.0f, 6.0f, 7.0f, 8.0f, - 9.0f, 10.0f, 11.0f, 12.0f, - 13.0f, 14.0f, 15.0f, 16.0f}, - std::vector{ - 1.0f, 2.0f, - -1.0f, -2.0f}, - std::vector{ - 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, - 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, - 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, - 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, - 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, - 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, - 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, - 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, - 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f}, - std::vector{ - -6.0f, -6.0f, -6.0f, - -6.0f, -6.0f, -6.0f, - -6.0f, -6.0f, -6.0f}, - std::vector{ - 0.5f, 0.5f, 0.5f, - 0.5f, 0.5f, 0.5f, - 0.5f, 0.5f, 0.5f, - 0.5f, 0.5f, 0.5f, - 0.5f, 0.5f, 0.5f, - 0.5f, 0.5f, 0.5f, - 0.5f, 0.5f, 0.5f, - 0.5f, 0.5f, 0.5f, - 0.5f, 0.5f, 0.5f, - 0.5f, 0.5f, 0.5f, - 0.5f, 0.5f, 0.5f, - 0.5f, 0.5f, 0.5f}, - {1, 1}, - {0, 0}, - {0, 0}, - {1, 1}, - 1, - 1, - "v8_zeroed_offset_default_mask", - true), - DeformableConvolutionParams(PartialShape {1, 4, 3, 3}, - PartialShape {2, 2, 2, 2}, - PartialShape {1, 16, 2, 2}, - PartialShape {1, 2, 2, 2}, - PartialShape {1, 8, 2, 2}, - IN_ET, - std::vector{ - 1.0f, 2.0f, 3.0f, - 4.0f, 5.0f, 6.0f, - 7.0f, 8.0f, 9.0f, - 10.0f, 11.0f, 12.0f, - 13.0f, 14.0f, 15.0f, - 16.0f, 17.0f, 18.0f, - 19.0f, 20.0f, 21.0f, - 22.0f, 23.0f, 24.0f, - 25.0f, 26.0f, 27.0f, - 28.0f, 29.0f, 30.0f, - 31.0f, 32.0f, 33.0f, - 34.0f, 35.0f, 36.0f}, - std::vector{ - 1.0f, 2.0f, - 3.0f, 4.0f, - 5.0f, 6.0f, - 7.0f, 8.0f, - -1.0f, -2.0f, - -3.0f, -4.0f, - -5.0f, -6.0f, - -7.0f, -8.0f}, - std::vector{ - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f}, - std::vector{ - 220.15443f , 38.199608f, - 32.643005f, 59.340614f, - -419.0005f , -252.08015f, - -182.44444f , -165.99335f}, - std::vector{ - 0.64f, - 0.18f, - 0.23f, - 0.74f, - 0.89f, - 0.70f, - 0.13f, - 0.99f, - 0.48f, - 0.20f, - 0.67f, - 0.88f, - 0.17f, - 0.19f, - 0.53f, - 0.22f, - 0.50f, - 0.07f, - 0.21f, - 0.99f, - 0.09f, - 0.28f, - 0.66f, - 0.91f, - 0.28f, - 0.89f, - 0.91f, - 0.39f, - 0.70f, - 0.67f, - 0.26f, - 0.09f}, - {1, 1}, - {0, 0}, - {0, 0}, - {1, 1}, - 2, - 2, - "v8_real_offset_groups_deforgroups_mask", - true), - DeformableConvolutionParams(PartialShape {1, 2, 3, 3}, - PartialShape {2, 2, 2, 2}, - PartialShape {1, 16, 2, 2}, - PartialShape {1, 2, 2, 2}, - PartialShape {1, 8, 2, 2}, - IN_ET, - std::vector{ - 1.0f, 2.0f, 3.0f, - 4.0f, 5.0f, 6.0f, - 7.0f, 8.0f, 9.0f, - 10.0f, 11.0f, 12.0f, - 13.0f, 14.0f, 15.0f, - 16.0f, 17.0f, 18.0f}, - std::vector{ - 1.0f, 2.0f, - 3.0f, 4.0f, - 5.0f, 6.0f, - 7.0f, 8.0f, - -1.0f, -2.0f, - -3.0f, -4.0f, - -5.0f, -6.0f, - -7.0f, -8.0f}, - std::vector{ - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, - 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f}, - std::vector{ - 184.25163, 101.04752, - 77.46842, 77.56562, - -184.25163, -101.04752, - -77.46842, -77.56562}, - std::vector{ - 0.64f, - 0.18f, - 0.23f, - 0.74f, - 0.89f, - 0.70f, - 0.13f, - 0.99f, - 0.48f, - 0.20f, - 0.67f, - 0.88f, - 0.17f, - 0.19f, - 0.53f, - 0.22f, - 0.50f, - 0.07f, - 0.21f, - 0.99f, - 0.09f, - 0.28f, - 0.66f, - 0.91f, - 0.28f, - 0.89f, - 0.91f, - 0.39f, - 0.70f, - 0.67f, - 0.26f, - 0.09f}, - {1, 1}, - {0, 0}, - {0, 0}, - {1, 1}, - 1, - 2, - "v8_real_offset_groups_deforgroups_mask_2", - true), - DeformableConvolutionParams(PartialShape {1, 2, 3, 3}, - PartialShape {2, 2, 2, 2}, - PartialShape {1, 16, 2, 2}, - PartialShape {1, 2, 2, 2}, - PartialShape {1, 8, 2, 2}, - IN_ET, - std::vector{ - 1.0f, 2.0f, 3.0f, - 4.0f, 5.0f, 6.0f, - 7.0f, 8.0f, 9.0f, - 10.0f, 11.0f, 12.0f, - 13.0f, 14.0f, 15.0f, - 16.0f, 17.0f, 18.0f}, - std::vector{ - 1.0f, 2.0f, - 3.0f, 4.0f, - 5.0f, 6.0f, - 7.0f, 8.0f, - -1.0f, -2.0f, - -3.0f, -4.0f, - -5.0f, -6.0f, - -7.0f, -8.0f}, - std::vector{ - -1.1f, -1.1f, -1.1f, -1.1f, -1.1f, -1.1f, -1.1f, -1.1f, -1.1f, -1.1f, -1.1f, -1.1f, -1.1f, -1.1f, -1.1f, -1.1f, - -1.1f, -1.1f, -1.1f, -1.1f, -1.1f, -1.1f, -1.1f, -1.1f, -1.1f, -1.1f, -1.1f, -1.1f, -1.1f, -1.1f, -1.1f, -1.1f, - -1.1f, -1.1f, -1.1f, -1.1f, -1.1f, -1.1f, -1.1f, -1.1f, -1.1f, -1.1f, -1.1f, -1.1f, -1.1f, -1.1f, -1.1f, -1.1f, - -1.1f, -1.1f, -1.1f, -1.1f, -1.1f, -1.1f, -1.1f, -1.1f, -1.1f, -1.1f, -1.1f, -1.1f, -1.1f, -1.1f, -1.1f, -1.1f}, - std::vector{ - 45.910797, 104.8302, - 63.12059 , 151.47789, - -45.910797, -104.8302, - -63.12059 , -151.47789}, - std::vector{ - 0.64f, - 0.18f, - 0.23f, - 0.74f, - 0.89f, - 0.70f, - 0.13f, - 0.99f, - 0.48f, - 0.20f, - 0.67f, - 0.88f, - 0.17f, - 0.19f, - 0.53f, - 0.22f, - 0.50f, - 0.07f, - 0.21f, - 0.99f, - 0.09f, - 0.28f, - 0.66f, - 0.91f, - 0.28f, - 0.89f, - 0.91f, - 0.39f, - 0.70f, - 0.67f, - 0.26f, - 0.09f}, - {1, 1}, - {0, 0}, - {0, 0}, - {1, 1}, - 1, - 2, - "v8_neg_offset_groups_deforgroups_mask", - true), + std::vector deformableConvolutionParams{ + DeformableConvolutionParams( + PartialShape{1, 1, 4, 4}, + PartialShape{1, 1, 2, 2}, + PartialShape{1, 8, 3, 3}, + PartialShape{1, 1, 3, 3}, + PartialShape{1, 4, 3, 3}, + IN_ET, + std::vector{1.0f, + 2.0f, + 3.0f, + 4.0f, + 5.0f, + 6.0f, + 7.0f, + 8.0f, + 9.0f, + 10.0f, + 11.0f, + 12.0f, + 13.0f, + 14.0f, + 15.0f, + 16.0f}, + std::vector{1.0f, 2.0f, -1.0f, -2.0f}, + std::vector{0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, + 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, + 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, + 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, + 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f}, + std::vector{-6.0f, -6.0f, -6.0f, -6.0f, -6.0f, -6.0f, -6.0f, -6.0f, -6.0f}, + std::vector{0.5f, 0.5f, 0.5f, 0.5f, 0.5f, 0.5f, 0.5f, 0.5f, 0.5f, 0.5f, 0.5f, 0.5f, + 0.5f, 0.5f, 0.5f, 0.5f, 0.5f, 0.5f, 0.5f, 0.5f, 0.5f, 0.5f, 0.5f, 0.5f, + 0.5f, 0.5f, 0.5f, 0.5f, 0.5f, 0.5f, 0.5f, 0.5f, 0.5f, 0.5f, 0.5f, 0.5f}, + {1, 1}, + {0, 0}, + {0, 0}, + {1, 1}, + 1, + 1, + "v8_zeroed_offset_default_mask", + true), + DeformableConvolutionParams( + PartialShape{1, 4, 3, 3}, + PartialShape{2, 2, 2, 2}, + PartialShape{1, 16, 2, 2}, + PartialShape{1, 2, 2, 2}, + PartialShape{1, 8, 2, 2}, + IN_ET, + std::vector{1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0f, 8.0f, 9.0f, 10.0f, 11.0f, 12.0f, + 13.0f, 14.0f, 15.0f, 16.0f, 17.0f, 18.0f, 19.0f, 20.0f, 21.0f, 22.0f, 23.0f, 24.0f, + 25.0f, 26.0f, 27.0f, 28.0f, 29.0f, 30.0f, 31.0f, 32.0f, 33.0f, 34.0f, 35.0f, 36.0f}, + std::vector{1.0f, + 2.0f, + 3.0f, + 4.0f, + 5.0f, + 6.0f, + 7.0f, + 8.0f, + -1.0f, + -2.0f, + -3.0f, + -4.0f, + -5.0f, + -6.0f, + -7.0f, + -8.0f}, + std::vector{1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f}, + std::vector< + T>{220.15443f, 38.199608f, 32.643005f, 59.340614f, -419.0005f, -252.08015f, -182.44444f, -165.99335f}, + std::vector{0.64f, 0.18f, 0.23f, 0.74f, 0.89f, 0.70f, 0.13f, 0.99f, 0.48f, 0.20f, 0.67f, + 0.88f, 0.17f, 0.19f, 0.53f, 0.22f, 0.50f, 0.07f, 0.21f, 0.99f, 0.09f, 0.28f, + 0.66f, 0.91f, 0.28f, 0.89f, 0.91f, 0.39f, 0.70f, 0.67f, 0.26f, 0.09f}, + {1, 1}, + {0, 0}, + {0, 0}, + {1, 1}, + 2, + 2, + "v8_real_offset_groups_deforgroups_mask", + true), + DeformableConvolutionParams( + PartialShape{1, 2, 3, 3}, + PartialShape{2, 2, 2, 2}, + PartialShape{1, 16, 2, 2}, + PartialShape{1, 2, 2, 2}, + PartialShape{1, 8, 2, 2}, + IN_ET, + std::vector{1.0f, + 2.0f, + 3.0f, + 4.0f, + 5.0f, + 6.0f, + 7.0f, + 8.0f, + 9.0f, + 10.0f, + 11.0f, + 12.0f, + 13.0f, + 14.0f, + 15.0f, + 16.0f, + 17.0f, + 18.0f}, + std::vector{1.0f, + 2.0f, + 3.0f, + 4.0f, + 5.0f, + 6.0f, + 7.0f, + 8.0f, + -1.0f, + -2.0f, + -3.0f, + -4.0f, + -5.0f, + -6.0f, + -7.0f, + -8.0f}, + std::vector{1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, + 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f, 1.1f}, + std::vector{184.25163, 101.04752, 77.46842, 77.56562, -184.25163, -101.04752, -77.46842, -77.56562}, + std::vector{0.64f, 0.18f, 0.23f, 0.74f, 0.89f, 0.70f, 0.13f, 0.99f, 0.48f, 0.20f, 0.67f, + 0.88f, 0.17f, 0.19f, 0.53f, 0.22f, 0.50f, 0.07f, 0.21f, 0.99f, 0.09f, 0.28f, + 0.66f, 0.91f, 0.28f, 0.89f, 0.91f, 0.39f, 0.70f, 0.67f, 0.26f, 0.09f}, + {1, 1}, + {0, 0}, + {0, 0}, + {1, 1}, + 1, + 2, + "v8_real_offset_groups_deforgroups_mask_2", + true), + DeformableConvolutionParams( + PartialShape{1, 2, 3, 3}, + PartialShape{2, 2, 2, 2}, + PartialShape{1, 16, 2, 2}, + PartialShape{1, 2, 2, 2}, + PartialShape{1, 8, 2, 2}, + IN_ET, + std::vector{1.0f, + 2.0f, + 3.0f, + 4.0f, + 5.0f, + 6.0f, + 7.0f, + 8.0f, + 9.0f, + 10.0f, + 11.0f, + 12.0f, + 13.0f, + 14.0f, + 15.0f, + 16.0f, + 17.0f, + 18.0f}, + std::vector{1.0f, + 2.0f, + 3.0f, + 4.0f, + 5.0f, + 6.0f, + 7.0f, + 8.0f, + -1.0f, + -2.0f, + -3.0f, + -4.0f, + -5.0f, + -6.0f, + -7.0f, + -8.0f}, + std::vector{-1.1f, -1.1f, -1.1f, -1.1f, -1.1f, -1.1f, -1.1f, -1.1f, -1.1f, -1.1f, -1.1f, -1.1f, -1.1f, + -1.1f, -1.1f, -1.1f, -1.1f, -1.1f, -1.1f, -1.1f, -1.1f, -1.1f, -1.1f, -1.1f, -1.1f, -1.1f, + -1.1f, -1.1f, -1.1f, -1.1f, -1.1f, -1.1f, -1.1f, -1.1f, -1.1f, -1.1f, -1.1f, -1.1f, -1.1f, + -1.1f, -1.1f, -1.1f, -1.1f, -1.1f, -1.1f, -1.1f, -1.1f, -1.1f, -1.1f, -1.1f, -1.1f, -1.1f, + -1.1f, -1.1f, -1.1f, -1.1f, -1.1f, -1.1f, -1.1f, -1.1f, -1.1f, -1.1f, -1.1f, -1.1f}, + std::vector{45.910797, 104.8302, 63.12059, 151.47789, -45.910797, -104.8302, -63.12059, -151.47789}, + std::vector{0.64f, 0.18f, 0.23f, 0.74f, 0.89f, 0.70f, 0.13f, 0.99f, 0.48f, 0.20f, 0.67f, + 0.88f, 0.17f, 0.19f, 0.53f, 0.22f, 0.50f, 0.07f, 0.21f, 0.99f, 0.09f, 0.28f, + 0.66f, 0.91f, 0.28f, 0.89f, 0.91f, 0.39f, 0.70f, 0.67f, 0.26f, 0.09f}, + {1, 1}, + {0, 0}, + {0, 0}, + {1, 1}, + 1, + 2, + "v8_neg_offset_groups_deforgroups_mask", + true), }; return deformableConvolutionParams; } std::vector generateDeformableConvolutionCombinedParams() { - const std::vector> deformableConvolutionTypeParams { + const std::vector> deformableConvolutionTypeParams{ generateDeformableConvolutionFloatParams(), generateDeformableConvolutionFloatParams(), generateDeformableConvolutionFloatParams(), @@ -5752,8 +7741,7 @@ std::vector generateDeformableConvolutionCombinedPa generateDeformableConvolutionUintParams(), generateDeformableConvolutionUintParams(), generateDeformableConvolutionUintParams(), - generateDeformableConvolutionUintParams() - }; + generateDeformableConvolutionUintParams()}; std::vector combinedParams; for (const auto& params : deformableConvolutionTypeParams) { @@ -5763,7 +7751,7 @@ std::vector generateDeformableConvolutionCombinedPa } std::vector generateDeformableConvolutionV8CombinedParams() { - const std::vector> deformableConvolutionTypeParams { + const std::vector> deformableConvolutionTypeParams{ generateDeformableConvolutionFloatParams(), generateDeformableConvolutionFloatParams(), generateDeformableConvolutionFloatParams(), @@ -5779,8 +7767,7 @@ std::vector generateDeformableConvolutionV8Combined generateDeformableConvolutionUintParams(), generateDeformableConvolutionUintParams(), generateDeformableConvolutionUintParams(), - generateDeformableConvolutionUintParams() - }; + generateDeformableConvolutionUintParams()}; std::vector combinedParams; for (const auto& params : deformableConvolutionTypeParams) { @@ -5789,10 +7776,14 @@ std::vector generateDeformableConvolutionV8Combined return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_DeformableConvolution_With_Hardcoded_Refs, ReferenceDeformableConvolutionLayerTest, - testing::ValuesIn(generateDeformableConvolutionCombinedParams()), ReferenceDeformableConvolutionLayerTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_DeformableConvolution_With_Hardcoded_Refs, + ReferenceDeformableConvolutionLayerTest, + testing::ValuesIn(generateDeformableConvolutionCombinedParams()), + ReferenceDeformableConvolutionLayerTest::getTestCaseName); -INSTANTIATE_TEST_SUITE_P(smoke_DeformableConvolutionV8_With_Hardcoded_Refs, ReferenceDeformableConvolutionV8LayerTest, - testing::ValuesIn(generateDeformableConvolutionV8CombinedParams()), ReferenceDeformableConvolutionV8LayerTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_DeformableConvolutionV8_With_Hardcoded_Refs, + ReferenceDeformableConvolutionV8LayerTest, + testing::ValuesIn(generateDeformableConvolutionV8CombinedParams()), + ReferenceDeformableConvolutionV8LayerTest::getTestCaseName); -} // namespace +} // namespace diff --git a/src/plugins/template/tests/functional/op_reference/deformable_psroi_pooling.cpp b/src/plugins/template/tests/functional/op_reference/deformable_psroi_pooling.cpp index 1ae803ac83a..858c5d287f4 100644 --- a/src/plugins/template/tests/functional/op_reference/deformable_psroi_pooling.cpp +++ b/src/plugins/template/tests/functional/op_reference/deformable_psroi_pooling.cpp @@ -5,8 +5,9 @@ #include #include -#include "openvino/op/psroi_pooling.hpp" + #include "base_reference_test.hpp" +#include "openvino/op/psroi_pooling.hpp" #include "openvino/opsets/opset1.hpp" using namespace reference_tests; @@ -15,12 +16,24 @@ using namespace ov; namespace { struct DeformablePSROIPoolingParams { template - DeformablePSROIPoolingParams(const size_t batch_in, const size_t channel_in, const size_t height_in, const size_t width_in, - const float spatial_scale, const size_t group_size, const int64_t spatial_bins_x, const int64_t spatial_bins_y, - const float trans_std, const int64_t part_size, const size_t rois_dim, - const ov::element::Type& iType, const bool is_input_generation_iota, const float inputValue, - const std::vector& roisValues, const std::vector& oValues, - const std::string& test_name = "", const std::string& mode = "bilinear_deformable") + DeformablePSROIPoolingParams(const size_t batch_in, + const size_t channel_in, + const size_t height_in, + const size_t width_in, + const float spatial_scale, + const size_t group_size, + const int64_t spatial_bins_x, + const int64_t spatial_bins_y, + const float trans_std, + const int64_t part_size, + const size_t rois_dim, + const ov::element::Type& iType, + const bool is_input_generation_iota, + const float inputValue, + const std::vector& roisValues, + const std::vector& oValues, + const std::string& test_name = "", + const std::string& mode = "bilinear_deformable") : groupSize(group_size), spatialBinsX(spatial_bins_x), spatialBinsY(spatial_bins_y), @@ -33,34 +46,48 @@ struct DeformablePSROIPoolingParams { outType(iType), roisData(CreateTensor(iType, roisValues)), testcaseName(test_name) { - outputDim = (channel_in / (group_size * group_size)) - (static_cast(channel_in / (group_size * group_size)) % 2); - inputShape = Shape{batch_in, channel_in, height_in, width_in}; - roisShape = Shape{rois_dim, 5}; + outputDim = (channel_in / (group_size * group_size)) - + (static_cast(channel_in / (group_size * group_size)) % 2); + inputShape = Shape{batch_in, channel_in, height_in, width_in}; + roisShape = Shape{rois_dim, 5}; - std::vector inputValues(shape_size(inputShape.get_shape())); - if (is_input_generation_iota) - std::iota(inputValues.begin(), inputValues.end(), inputValue); - else - std::fill(inputValues.begin(), inputValues.end(), inputValue); - inputData = CreateTensor(iType, inputValues); + std::vector inputValues(shape_size(inputShape.get_shape())); + if (is_input_generation_iota) + std::iota(inputValues.begin(), inputValues.end(), inputValue); + else + std::fill(inputValues.begin(), inputValues.end(), inputValue); + inputData = CreateTensor(iType, inputValues); - if (oValues.size() > 1) { - refData = CreateTensor(iType, oValues); - } else { - Shape output_shape{rois_dim, outputDim, group_size, group_size}; - std::vector expected_output_values(shape_size(output_shape)); - std::fill(expected_output_values.begin(), expected_output_values.end(), oValues[0]); - refData = CreateTensor(iType, expected_output_values); - } - } + if (oValues.size() > 1) { + refData = CreateTensor(iType, oValues); + } else { + Shape output_shape{rois_dim, outputDim, group_size, group_size}; + std::vector expected_output_values(shape_size(output_shape)); + std::fill(expected_output_values.begin(), expected_output_values.end(), oValues[0]); + refData = CreateTensor(iType, expected_output_values); + } + } template - DeformablePSROIPoolingParams(const size_t batch_in, const size_t channel_in, const size_t height_in, const size_t width_in, - const float spatial_scale, const size_t group_size, const int64_t spatial_bins_x, const int64_t spatial_bins_y, - const float trans_std, const int64_t part_size, const size_t rois_dim, - const ov::element::Type& iType, const bool is_input_generation_iota, const float inputValue, const float offsetValue, - const std::vector& roisValues, const std::vector& oValues, - const std::string& test_name = "", const std::string& mode = "bilinear_deformable") + DeformablePSROIPoolingParams(const size_t batch_in, + const size_t channel_in, + const size_t height_in, + const size_t width_in, + const float spatial_scale, + const size_t group_size, + const int64_t spatial_bins_x, + const int64_t spatial_bins_y, + const float trans_std, + const int64_t part_size, + const size_t rois_dim, + const ov::element::Type& iType, + const bool is_input_generation_iota, + const float inputValue, + const float offsetValue, + const std::vector& roisValues, + const std::vector& oValues, + const std::string& test_name = "", + const std::string& mode = "bilinear_deformable") : groupSize(group_size), spatialBinsX(spatial_bins_x), spatialBinsY(spatial_bins_y), @@ -74,31 +101,31 @@ struct DeformablePSROIPoolingParams { outType(iType), roisData(CreateTensor(iType, roisValues)), testcaseName(test_name) { - outputDim = (channel_in / (group_size * group_size)) - ((channel_in / (group_size * group_size)) % 2); - inputShape = Shape{batch_in, channel_in, height_in, width_in}; - roisShape = Shape{rois_dim, 5}; - offsetsShape = Shape{rois_dim, 2, group_size, group_size}; + outputDim = (channel_in / (group_size * group_size)) - ((channel_in / (group_size * group_size)) % 2); + inputShape = Shape{batch_in, channel_in, height_in, width_in}; + roisShape = Shape{rois_dim, 5}; + offsetsShape = Shape{rois_dim, 2, group_size, group_size}; - std::vector inputValues(shape_size(inputShape.get_shape())); - if (is_input_generation_iota) - std::iota(inputValues.begin(), inputValues.end(), inputValue); - else - std::fill(inputValues.begin(), inputValues.end(), inputValue); - inputData = CreateTensor(iType, inputValues); + std::vector inputValues(shape_size(inputShape.get_shape())); + if (is_input_generation_iota) + std::iota(inputValues.begin(), inputValues.end(), inputValue); + else + std::fill(inputValues.begin(), inputValues.end(), inputValue); + inputData = CreateTensor(iType, inputValues); - std::vector offsetsValues(shape_size(offsetsShape.get_shape())); - std::fill(offsetsValues.begin(), offsetsValues.end(), offsetValue); - offsetsData = CreateTensor(iType, offsetsValues); + std::vector offsetsValues(shape_size(offsetsShape.get_shape())); + std::fill(offsetsValues.begin(), offsetsValues.end(), offsetValue); + offsetsData = CreateTensor(iType, offsetsValues); - if (oValues.size() > 1) { - refData = CreateTensor(iType, oValues); - } else { - Shape output_shape{rois_dim, outputDim, group_size, group_size}; - std::vector expected_output_values(shape_size(output_shape)); - std::fill(expected_output_values.begin(), expected_output_values.end(), oValues[0]); - refData = CreateTensor(iType, expected_output_values); - } - } + if (oValues.size() > 1) { + refData = CreateTensor(iType, oValues); + } else { + Shape output_shape{rois_dim, outputDim, group_size, group_size}; + std::vector expected_output_values(shape_size(output_shape)); + std::fill(expected_output_values.begin(), expected_output_values.end(), oValues[0]); + refData = CreateTensor(iType, expected_output_values); + } + } size_t groupSize; int64_t spatialBinsX; @@ -123,7 +150,8 @@ struct DeformablePSROIPoolingParams { std::string testcaseName; }; -class ReferenceDeformablePSROIPoolingLayerTest : public testing::TestWithParam, public CommonReferenceTest { +class ReferenceDeformablePSROIPoolingLayerTest : public testing::TestWithParam, + public CommonReferenceTest { public: void SetUp() override { auto params = GetParam(); @@ -159,29 +187,30 @@ private: if (params.offsetsShape.size() != 0) { const auto offsets = std::make_shared(params.offsetsType, params.offsetsShape); const auto DeformablePSROIPooling = std::make_shared(input, - rois, - offsets, - params.outputDim, - params.spatialScale, - params.groupSize, - params.mode, - params.spatialBinsX, - params.spatialBinsY, - params.transStd, - params.partSize); - return std::make_shared(NodeVector {DeformablePSROIPooling}, ParameterVector {input, rois, offsets}); + rois, + offsets, + params.outputDim, + params.spatialScale, + params.groupSize, + params.mode, + params.spatialBinsX, + params.spatialBinsY, + params.transStd, + params.partSize); + return std::make_shared(NodeVector{DeformablePSROIPooling}, + ParameterVector{input, rois, offsets}); } else { const auto DeformablePSROIPooling = std::make_shared(input, - rois, - params.outputDim, - params.spatialScale, - params.groupSize, - params.mode, - params.spatialBinsX, - params.spatialBinsY, - params.transStd, - params.partSize); - return std::make_shared(NodeVector {DeformablePSROIPooling}, ParameterVector {input, rois}); + rois, + params.outputDim, + params.spatialScale, + params.groupSize, + params.mode, + params.spatialBinsX, + params.spatialBinsY, + params.transStd, + params.partSize); + return std::make_shared(NodeVector{DeformablePSROIPooling}, ParameterVector{input, rois}); } } }; @@ -194,152 +223,403 @@ template std::vector generateDeformablePSROIPoolingFloatParams() { using T = typename element_type_traits::value_type; - std::vector deformablePSROIPoolingParams { - DeformablePSROIPoolingParams(1, 16, 2, 2, // batch_in, channel_in, height_in, width_in - 0.0625, 2, 1, 1, //spatial_scale, group_size, spatial_bins_x, spatial_bins_y - 1, 1, 2, // trans_std, part_size, rois_dim - IN_ET, true, 0, 0.0, //inputType, is_input_generation_iota, inputValue, offsetValue - std::vector{ - // input_batch_id, x1, y1, x2, y2 - 0, 1, 2, 4, 6, - 0, 0, 3, 10, 4}, - std::vector{ - // First ROI - 0, 4, 8, 12, - 16, 20, 24, 28, - 32, 36, 40, 44, - 48, 52, 56, 60, + std::vector deformablePSROIPoolingParams{ + DeformablePSROIPoolingParams(1, + 16, + 2, + 2, // batch_in, channel_in, height_in, width_in + 0.0625, + 2, + 1, + 1, // spatial_scale, group_size, spatial_bins_x, spatial_bins_y + 1, + 1, + 2, // trans_std, part_size, rois_dim + IN_ET, + true, + 0, + 0.0, // inputType, is_input_generation_iota, inputValue, offsetValue + std::vector{// input_batch_id, x1, y1, x2, y2 + 0, + 1, + 2, + 4, + 6, + 0, + 0, + 3, + 10, + 4}, + std::vector{// First ROI + 0, + 4, + 8, + 12, + 16, + 20, + 24, + 28, + 32, + 36, + 40, + 44, + 48, + 52, + 56, + 60, // Second ROI - 0, 4, 8, 12, - 16, 20, 24, 28, - 32, 36, 40, 44, - 48, 52, 56, 60}, - "offset_00"), - DeformablePSROIPoolingParams(1, 16, 2, 2, // batch_in, channel_in, height_in, width_in - 0.0625, 2, 1, 1, //spatial_scale, group_size, spatial_bins_x, spatial_bins_y - 1, 1, 2, // trans_std, part_size, rois_dim - IN_ET, true, 0, 0.2, //inputType, is_input_generation_iota, inputValue, offsetValue - std::vector{ - // input_batch_id, x1, y1, x2, y2 - 0, 1, 2, 4, 6, - 0, 0, 3, 10, 4}, - std::vector{ - // First ROI - 0, 4, 8, 12, - 16, 20, 24, 28, - 32, 36, 40, 44, - 48, 52, 56, 60, + 0, + 4, + 8, + 12, + 16, + 20, + 24, + 28, + 32, + 36, + 40, + 44, + 48, + 52, + 56, + 60}, + "offset_00"), + DeformablePSROIPoolingParams(1, + 16, + 2, + 2, // batch_in, channel_in, height_in, width_in + 0.0625, + 2, + 1, + 1, // spatial_scale, group_size, spatial_bins_x, spatial_bins_y + 1, + 1, + 2, // trans_std, part_size, rois_dim + IN_ET, + true, + 0, + 0.2, // inputType, is_input_generation_iota, inputValue, offsetValue + std::vector{// input_batch_id, x1, y1, x2, y2 + 0, + 1, + 2, + 4, + 6, + 0, + 0, + 3, + 10, + 4}, + std::vector{// First ROI + 0, + 4, + 8, + 12, + 16, + 20, + 24, + 28, + 32, + 36, + 40, + 44, + 48, + 52, + 56, + 60, // Second ROI - 0, 4, 8, 12, - 16, 20, 24, 28, - 32, 36, 40, 44, - 48, 52, 56, 60}, - "offset_0p2"), - DeformablePSROIPoolingParams(1, 16, 2, 2, // batch_in, channel_in, height_in, width_in - 0.0625, 2, 1, 1, //spatial_scale, group_size, spatial_bins_x, spatial_bins_y - 1, 1, 2, // trans_std, part_size, rois_dim - IN_ET, true, 0, 0.5, //inputType, is_input_generation_iota, inputValue, offsetValue - std::vector{ - // input_batch_id, x1, y1, x2, y2 - 0, 1, 2, 4, 6, - 0, 5, 3, 10, 4}, - std::vector{ - // First ROI - 0, 4, 8, 12, - 16, 20, 24, 28, - 32, 36, 40, 44, - 48, 52, 56, 60, + 0, + 4, + 8, + 12, + 16, + 20, + 24, + 28, + 32, + 36, + 40, + 44, + 48, + 52, + 56, + 60}, + "offset_0p2"), + DeformablePSROIPoolingParams(1, + 16, + 2, + 2, // batch_in, channel_in, height_in, width_in + 0.0625, + 2, + 1, + 1, // spatial_scale, group_size, spatial_bins_x, spatial_bins_y + 1, + 1, + 2, // trans_std, part_size, rois_dim + IN_ET, + true, + 0, + 0.5, // inputType, is_input_generation_iota, inputValue, offsetValue + std::vector{// input_batch_id, x1, y1, x2, y2 + 0, + 1, + 2, + 4, + 6, + 0, + 5, + 3, + 10, + 4}, + std::vector{// First ROI + 0, + 4, + 8, + 12, + 16, + 20, + 24, + 28, + 32, + 36, + 40, + 44, + 48, + 52, + 56, + 60, // Second ROI - 0, 4.1875, 8, 12.1875, - 16, 20.1875, 24, 28.1875, - 32, 36.1875, 40, 44.1875, - 48, 52.1875, 56, 60.1875}, - "offset_0p5"), - DeformablePSROIPoolingParams(1, 16, 2, 2, // batch_in, channel_in, height_in, width_in - 0.0625, 2, 1, 1, //spatial_scale, group_size, spatial_bins_x, spatial_bins_y - 1, 1, 2, // trans_std, part_size, rois_dim - IN_ET, true, 0, 0, //inputType, is_input_generation_iota, inputValue, offsetValue - std::vector{ - // input_batch_id, x1, y1, x2, y2 - 0, 10, 10, 20, 20, - 0, 100, 100, 200, 200}, - std::vector{ - // First ROI - 0.375, 4.71875, 9.0625, 13.40625, 16.375, 20.71875, 25.0625, 29.40625, - 32.375, 36.71875, 41.0625, 45.40625, 48.375, 52.71875, 57.0625, 61.40625, + 0, + 4.1875, + 8, + 12.1875, + 16, + 20.1875, + 24, + 28.1875, + 32, + 36.1875, + 40, + 44.1875, + 48, + 52.1875, + 56, + 60.1875}, + "offset_0p5"), + DeformablePSROIPoolingParams(1, + 16, + 2, + 2, // batch_in, channel_in, height_in, width_in + 0.0625, + 2, + 1, + 1, // spatial_scale, group_size, spatial_bins_x, spatial_bins_y + 1, + 1, + 2, // trans_std, part_size, rois_dim + IN_ET, + true, + 0, + 0, // inputType, is_input_generation_iota, inputValue, offsetValue + std::vector{// input_batch_id, x1, y1, x2, y2 + 0, + 10, + 10, + 20, + 20, + 0, + 100, + 100, + 200, + 200}, + std::vector{// First ROI + 0.375, + 4.71875, + 9.0625, + 13.40625, + 16.375, + 20.71875, + 25.0625, + 29.40625, + 32.375, + 36.71875, + 41.0625, + 45.40625, + 48.375, + 52.71875, + 57.0625, + 61.40625, // Second ROI - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0}, - "roi_oversize"), - DeformablePSROIPoolingParams(1, 8, 3, 3, // batch_in, channel_in, height_in, width_in - 1, 2, 1, 1, //spatial_scale, group_size, spatial_bins_x, spatial_bins_y - 1, 2, 1, // trans_std, part_size, rois_dim - IN_ET, true, 0, //inputType, is_input_generation_iota, inputValue, offsetValue - std::vector{ - // input_batch_id, x1, y1, x2, y2 - 0, 1, 1, 2, 2}, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0}, + "roi_oversize"), + DeformablePSROIPoolingParams(1, + 8, + 3, + 3, // batch_in, channel_in, height_in, width_in + 1, + 2, + 1, + 1, // spatial_scale, group_size, spatial_bins_x, spatial_bins_y + 1, + 2, + 1, // trans_std, part_size, rois_dim + IN_ET, + true, + 0, // inputType, is_input_generation_iota, inputValue, offsetValue + std::vector{// input_batch_id, x1, y1, x2, y2 + 0, + 1, + 1, + 2, + 2}, std::vector{2.0, 12.0, 23.0, 33.0, 38.0, 48.0, 59.0, 69.0}, - "no_offset_input"), - DeformablePSROIPoolingParams(1, 8, 3, 3, // batch_in, channel_in, height_in, width_in - 1, 2, 1, 1, //spatial_scale, group_size, spatial_bins_x, spatial_bins_y - 1, 2, 1, // trans_std, part_size, rois_dim, - IN_ET, true, 0, 0, //inputType, is_input_generation_iota, inputValue, offsetValue - std::vector{ - // input_batch_id, x1, y1, x2, y2 - 0, 1, 1, 2, 2}, + "no_offset_input"), + DeformablePSROIPoolingParams(1, + 8, + 3, + 3, // batch_in, channel_in, height_in, width_in + 1, + 2, + 1, + 1, // spatial_scale, group_size, spatial_bins_x, spatial_bins_y + 1, + 2, + 1, // trans_std, part_size, rois_dim, + IN_ET, + true, + 0, + 0, // inputType, is_input_generation_iota, inputValue, offsetValue + std::vector{// input_batch_id, x1, y1, x2, y2 + 0, + 1, + 1, + 2, + 2}, std::vector{2.0, 12.0, 23.0, 33.0, 38.0, 48.0, 59.0, 69.0}, - "offset_zero"), - DeformablePSROIPoolingParams(1, 8, 3, 3, // batch_in, channel_in, height_in, width_in - 1, 2, 1, 1, //spatial_scale, group_size, spatial_bins_x, spatial_bins_y - 1, 2, 1, // trans_std, part_size, rois_dim, - IN_ET, true, 0, 0.1, //inputType, is_input_generation_iota, inputValue, offsetValue - std::vector{ - // input_batch_id, x1, y1, x2, y2 - 0, 1, 1, 2, 2}, + "offset_zero"), + DeformablePSROIPoolingParams(1, + 8, + 3, + 3, // batch_in, channel_in, height_in, width_in + 1, + 2, + 1, + 1, // spatial_scale, group_size, spatial_bins_x, spatial_bins_y + 1, + 2, + 1, // trans_std, part_size, rois_dim, + IN_ET, + true, + 0, + 0.1, // inputType, is_input_generation_iota, inputValue, offsetValue + std::vector{// input_batch_id, x1, y1, x2, y2 + 0, + 1, + 1, + 2, + 2}, std::vector{2.8, 12.8, 23.8, 33.8, 38.8, 48.8, 59.8, 69.8}, - "offset_01"), - DeformablePSROIPoolingParams(1, 8, 3, 3, // batch_in, channel_in, height_in, width_in - 1, 2, 1, 1, //spatial_scale, group_size, spatial_bins_x, spatial_bins_y - 1, 2, 1, // trans_std, part_size, rois_dim, - IN_ET, true, 0, 0.5, //inputType, is_input_generation_iota, inputValue, offsetValue - std::vector{ - // input_batch_id, x1, y1, x2, y2 - 0, 1, 1, 2, 2}, + "offset_01"), + DeformablePSROIPoolingParams(1, + 8, + 3, + 3, // batch_in, channel_in, height_in, width_in + 1, + 2, + 1, + 1, // spatial_scale, group_size, spatial_bins_x, spatial_bins_y + 1, + 2, + 1, // trans_std, part_size, rois_dim, + IN_ET, + true, + 0, + 0.5, // inputType, is_input_generation_iota, inputValue, offsetValue + std::vector{// input_batch_id, x1, y1, x2, y2 + 0, + 1, + 1, + 2, + 2}, std::vector{6., 15.5, 25.5, 35., 42., 51.5, 61.5, 71.}, - "offset_05"), - DeformablePSROIPoolingParams(1, 16, 2, 2, // batch_in, channel_in, height_in, width_in - 0.0625, 2, 1, 1, //spatial_scale, group_size, spatial_bins_x, spatial_bins_y - 1, 1, 1, // trans_std, part_size, rois_dim, - IN_ET, false, 0.1, 0.1, //inputType, is_input_generation_iota, inputValue, offsetValue - std::vector{ - // input_batch_id, x1, y1, x2, y2 - 0, 10, 10, 10, 10}, - std::vector{0.1, 0.1, 0.1, 0.1, - 0.1, 0.1, 0.1, 0.1, - 0.1, 0.1, 0.1, 0.1, - 0.1, 0.1, 0.1, 0.1}, - "single_value"), - DeformablePSROIPoolingParams(1, 1024, 63, 38, // batch_in, channel_in, height_in, width_in - 0.0625, 3, 1, 1, //spatial_scale, group_size, spatial_bins_x, spatial_bins_y - 1, 1, 2, // trans_std, part_size, rois_dim, - IN_ET, false, 0.1, 0.0, //inputType, is_input_generation_iota, inputValue, offsetValue - std::vector{ - // input_batch_id, x1, y1, x2, y2 - 0, 1, 2, 4, 6, - 0, 0, 3, 10, 4}, + "offset_05"), + DeformablePSROIPoolingParams( + 1, + 16, + 2, + 2, // batch_in, channel_in, height_in, width_in + 0.0625, + 2, + 1, + 1, // spatial_scale, group_size, spatial_bins_x, spatial_bins_y + 1, + 1, + 1, // trans_std, part_size, rois_dim, + IN_ET, + false, + 0.1, + 0.1, // inputType, is_input_generation_iota, inputValue, offsetValue + std::vector{// input_batch_id, x1, y1, x2, y2 + 0, + 10, + 10, + 10, + 10}, + std::vector{0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1}, + "single_value"), + DeformablePSROIPoolingParams(1, + 1024, + 63, + 38, // batch_in, channel_in, height_in, width_in + 0.0625, + 3, + 1, + 1, // spatial_scale, group_size, spatial_bins_x, spatial_bins_y + 1, + 1, + 2, // trans_std, part_size, rois_dim, + IN_ET, + false, + 0.1, + 0.0, // inputType, is_input_generation_iota, inputValue, offsetValue + std::vector{// input_batch_id, x1, y1, x2, y2 + 0, + 1, + 2, + 4, + 6, + 0, + 0, + 3, + 10, + 4}, std::vector{0.1}, - "single_value_big_shape") - }; + "single_value_big_shape")}; return deformablePSROIPoolingParams; } std::vector generateDeformablePSROIPoolingCombinedParams() { - const std::vector> deformablePSROIPoolingTypeParams { + const std::vector> deformablePSROIPoolingTypeParams{ generateDeformablePSROIPoolingFloatParams(), generateDeformablePSROIPoolingFloatParams(), generateDeformablePSROIPoolingFloatParams(), - generateDeformablePSROIPoolingFloatParams() - }; + generateDeformablePSROIPoolingFloatParams()}; std::vector combinedParams; for (const auto& params : deformablePSROIPoolingTypeParams) { @@ -348,7 +628,9 @@ std::vector generateDeformablePSROIPoolingCombined return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_DeformablePSROIPooling_With_Hardcoded_Refs, ReferenceDeformablePSROIPoolingLayerTest, - testing::ValuesIn(generateDeformablePSROIPoolingCombinedParams()), ReferenceDeformablePSROIPoolingLayerTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_DeformablePSROIPooling_With_Hardcoded_Refs, + ReferenceDeformablePSROIPoolingLayerTest, + testing::ValuesIn(generateDeformablePSROIPoolingCombinedParams()), + ReferenceDeformablePSROIPoolingLayerTest::getTestCaseName); -} // namespace +} // namespace diff --git a/src/plugins/template/tests/functional/op_reference/depth_to_space.cpp b/src/plugins/template/tests/functional/op_reference/depth_to_space.cpp index 6340c5665e2..6f683ed5452 100644 --- a/src/plugins/template/tests/functional/op_reference/depth_to_space.cpp +++ b/src/plugins/template/tests/functional/op_reference/depth_to_space.cpp @@ -4,18 +4,24 @@ #include -#include "openvino/opsets/opset1.hpp" #include "base_reference_test.hpp" +#include "openvino/opsets/opset1.hpp" using namespace reference_tests; using namespace ov; namespace { struct DepthToSpaceParams { - DepthToSpaceParams(const reference_tests::Tensor& dataTensor, const std::string mode, const int32_t blockSize, - const reference_tests::Tensor& expectedTensor, const std::string& testcaseName = "") : - dataTensor(dataTensor), mode(mode), blockSize(blockSize), expectedTensor(expectedTensor), - testcaseName(testcaseName) {} + DepthToSpaceParams(const reference_tests::Tensor& dataTensor, + const std::string mode, + const int32_t blockSize, + const reference_tests::Tensor& expectedTensor, + const std::string& testcaseName = "") + : dataTensor(dataTensor), + mode(mode), + blockSize(blockSize), + expectedTensor(expectedTensor), + testcaseName(testcaseName) {} reference_tests::Tensor dataTensor; std::string mode; @@ -50,11 +56,12 @@ public: private: static std::shared_ptr CreateFunction(const DepthToSpaceParams& params) { - opset1::DepthToSpace::DepthToSpaceMode mode = params.mode == "DEPTH_FIRST" ? - opset1::DepthToSpace::DepthToSpaceMode::DEPTH_FIRST : opset1::DepthToSpace::DepthToSpaceMode::BLOCKS_FIRST; + opset1::DepthToSpace::DepthToSpaceMode mode = params.mode == "DEPTH_FIRST" + ? opset1::DepthToSpace::DepthToSpaceMode::DEPTH_FIRST + : opset1::DepthToSpace::DepthToSpaceMode::BLOCKS_FIRST; const auto data = std::make_shared(params.dataTensor.type, params.dataTensor.shape); const auto depthToSpace = std::make_shared(data, mode, params.blockSize); - return std::make_shared(NodeVector {depthToSpace}, ParameterVector {data}); + return std::make_shared(NodeVector{depthToSpace}, ParameterVector{data}); } }; @@ -65,72 +72,84 @@ TEST_P(ReferenceDepthToSpaceLayerTest, CompareWithRefs) { template std::vector generateDepthToSpaceParams() { using T = typename element_type_traits::value_type; - std::vector depthToSpaceParams { + std::vector depthToSpaceParams{ // depth_to_space_block_first_K1_BS2 DepthToSpaceParams( - reference_tests::Tensor({1, 8, 2}, IN_ET, std::vector{0, 2, 8, 10, 16, 18, 24, 26, 1, 3, 9, 11, 17, 19, 25, 27}), + reference_tests::Tensor({1, 8, 2}, + IN_ET, + std::vector{0, 2, 8, 10, 16, 18, 24, 26, 1, 3, 9, 11, 17, 19, 25, 27}), "BLOCKS_FIRST", 2, - reference_tests::Tensor({1, 4, 4}, IN_ET, std::vector{0, 1, 2, 3, 8, 9, 10, 11, 16, 17, 18, 19, 24, 25, 26, 27}), + reference_tests::Tensor({1, 4, 4}, + IN_ET, + std::vector{0, 1, 2, 3, 8, 9, 10, 11, 16, 17, 18, 19, 24, 25, 26, 27}), "depth_to_space_block_first_K1_BS2"), // depth_to_space_block_first_K2_BS2 DepthToSpaceParams( reference_tests::Tensor({1, 8, 2, 2}, IN_ET, std::vector{0, 2, 8, 10, 16, 18, 24, 26, 1, 3, 9, - 11, 17, 19, 25, 27, 4, 6, 12, 14, 20, 22, - 28, 30, 5, 7, 13, 15, 21, 23, 29, 31}), + 11, 17, 19, 25, 27, 4, 6, 12, 14, 20, 22, + 28, 30, 5, 7, 13, 15, 21, 23, 29, 31}), "BLOCKS_FIRST", 2, - reference_tests::Tensor({1, 2, 4, 4}, IN_ET, std::vector{0, 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}), + reference_tests::Tensor({1, 2, 4, 4}, IN_ET, std::vector{0, 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}), "depth_to_space_block_first_K2_BS2"), // depth_to_space_block_first_K2_BS4 DepthToSpaceParams( reference_tests::Tensor({1, 16, 2, 1}, IN_ET, std::vector{0, 16, 1, 17, 2, 18, 3, 19, 4, 20, 5, - 21, 6, 22, 7, 23, 8, 24, 9, 25, 10, 26, - 11, 27, 12, 28, 13, 29, 14, 30, 15, 31}), + 21, 6, 22, 7, 23, 8, 24, 9, 25, 10, 26, + 11, 27, 12, 28, 13, 29, 14, 30, 15, 31}), "BLOCKS_FIRST", 4, - reference_tests::Tensor({1, 1, 8, 4}, IN_ET, std::vector{0, 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}), + reference_tests::Tensor({1, 1, 8, 4}, IN_ET, std::vector{0, 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}), "depth_to_space_block_first_K2_BS4"), // depth_to_space_depth_first_1K_BS2 DepthToSpaceParams( - reference_tests::Tensor({1, 8, 2}, IN_ET, std::vector{0, 2, 1, 3, 4, 6, 5, 7, 8, 10, 9, 11, 12, 14, 13, 15}), + reference_tests::Tensor({1, 8, 2}, + IN_ET, + std::vector{0, 2, 1, 3, 4, 6, 5, 7, 8, 10, 9, 11, 12, 14, 13, 15}), "DEPTH_FIRST", 2, - reference_tests::Tensor({1, 4, 4}, IN_ET, std::vector{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}), + reference_tests::Tensor({1, 4, 4}, + IN_ET, + std::vector{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}), "depth_to_space_depth_first_1K_BS2"), // depth_to_space_depth_first_2K_BS2 DepthToSpaceParams( reference_tests::Tensor({1, 8, 2, 2}, IN_ET, std::vector{0, 2, 8, 10, 16, 18, 24, 26, 1, 3, 9, - 11, 17, 19, 25, 27, 4, 6, 12, 14, 20, 22, - 28, 30, 5, 7, 13, 15, 21, 23, 29, 31}), + 11, 17, 19, 25, 27, 4, 6, 12, 14, 20, 22, + 28, 30, 5, 7, 13, 15, 21, 23, 29, 31}), "DEPTH_FIRST", 2, - reference_tests::Tensor({1, 2, 4, 4}, IN_ET, std::vector{0, 16, 2, 18, 1, 17, 3, 19, 8, 24, 10, 26, 9, 25, 11, 27, - 4, 20, 6, 22, 5, 21, 7, 23, 12, 28, 14, 30, 13, 29, 15, 31}), + reference_tests::Tensor({1, 2, 4, 4}, IN_ET, std::vector{0, 16, 2, 18, 1, 17, 3, 19, 8, 24, 10, + 26, 9, 25, 11, 27, 4, 20, 6, 22, 5, 21, + 7, 23, 12, 28, 14, 30, 13, 29, 15, 31}), "depth_to_space_depth_first_2K_BS2"), // depth_to_space_depth_first_2K_BS4 DepthToSpaceParams( reference_tests::Tensor({1, 16, 2, 1}, IN_ET, std::vector{0, 16, 1, 17, 2, 18, 3, 19, 4, 20, 5, - 21, 6, 22, 7, 23, 8, 24, 9, 25, 10, 26, - 11, 27, 12, 28, 13, 29, 14, 30, 15, 31}), + 21, 6, 22, 7, 23, 8, 24, 9, 25, 10, 26, + 11, 27, 12, 28, 13, 29, 14, 30, 15, 31}), "DEPTH_FIRST", 4, - reference_tests::Tensor({1, 1, 8, 4}, IN_ET, std::vector{0, 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}), + reference_tests::Tensor({1, 1, 8, 4}, IN_ET, std::vector{0, 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}), "depth_to_space_depth_first_2K_BS4"), }; return depthToSpaceParams; } std::vector generateDepthToSpaceCombinedParams() { - const std::vector> depthToSpaceTypeParams { + const std::vector> depthToSpaceTypeParams{ generateDepthToSpaceParams(), generateDepthToSpaceParams(), generateDepthToSpaceParams(), @@ -152,6 +171,8 @@ std::vector generateDepthToSpaceCombinedParams() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_DepthToSpace_With_Hardcoded_Refs, ReferenceDepthToSpaceLayerTest, - testing::ValuesIn(generateDepthToSpaceCombinedParams()), ReferenceDepthToSpaceLayerTest::getTestCaseName); -} // namespace +INSTANTIATE_TEST_SUITE_P(smoke_DepthToSpace_With_Hardcoded_Refs, + ReferenceDepthToSpaceLayerTest, + testing::ValuesIn(generateDepthToSpaceCombinedParams()), + ReferenceDepthToSpaceLayerTest::getTestCaseName); +} // namespace diff --git a/src/plugins/template/tests/functional/op_reference/detection_output.cpp b/src/plugins/template/tests/functional/op_reference/detection_output.cpp index 573b9c8d144..a1809cb24a8 100644 --- a/src/plugins/template/tests/functional/op_reference/detection_output.cpp +++ b/src/plugins/template/tests/functional/op_reference/detection_output.cpp @@ -2,9 +2,10 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/detection_output.hpp" + #include -#include "openvino/op/detection_output.hpp" #include "base_reference_test.hpp" using namespace reference_tests; @@ -44,33 +45,34 @@ struct DetectionOutputParams { priorBoxesData(CreateTensor(iType, priorBoxesValues)), refData(CreateTensor(iType, oValues)), testcaseName(test_name) { - attrs.num_classes = num_classes; - attrs_v8.background_label_id = attrs.background_label_id = background_label_id; - attrs_v8.top_k = attrs.top_k = top_k; - attrs_v8.variance_encoded_in_target = attrs.variance_encoded_in_target = variance_encoded_in_target; - attrs_v8.keep_top_k = attrs.keep_top_k = keep_top_k; - attrs_v8.code_type = attrs.code_type = code_type; - attrs_v8.share_location = attrs.share_location = share_location; - attrs_v8.nms_threshold = attrs.nms_threshold = nms_threshold; - attrs_v8.confidence_threshold = attrs.confidence_threshold = confidence_threshold; - attrs_v8.clip_after_nms = attrs.clip_after_nms = clip_after_nms; - attrs_v8.clip_before_nms = attrs.clip_before_nms = clip_before_nms; - attrs_v8.decrease_label_id = attrs.decrease_label_id = decrease_label_id; - attrs_v8.normalized = attrs.normalized = normalized; - attrs_v8.input_height = attrs.input_height = input_height; - attrs_v8.input_width = attrs.input_width = input_width; - attrs_v8.objectness_score = attrs.objectness_score = objectness_score; + attrs.num_classes = num_classes; + attrs_v8.background_label_id = attrs.background_label_id = background_label_id; + attrs_v8.top_k = attrs.top_k = top_k; + attrs_v8.variance_encoded_in_target = attrs.variance_encoded_in_target = variance_encoded_in_target; + attrs_v8.keep_top_k = attrs.keep_top_k = keep_top_k; + attrs_v8.code_type = attrs.code_type = code_type; + attrs_v8.share_location = attrs.share_location = share_location; + attrs_v8.nms_threshold = attrs.nms_threshold = nms_threshold; + attrs_v8.confidence_threshold = attrs.confidence_threshold = confidence_threshold; + attrs_v8.clip_after_nms = attrs.clip_after_nms = clip_after_nms; + attrs_v8.clip_before_nms = attrs.clip_before_nms = clip_before_nms; + attrs_v8.decrease_label_id = attrs.decrease_label_id = decrease_label_id; + attrs_v8.normalized = attrs.normalized = normalized; + attrs_v8.input_height = attrs.input_height = input_height; + attrs_v8.input_width = attrs.input_width = input_width; + attrs_v8.objectness_score = attrs.objectness_score = objectness_score; - size_t num_loc_classes = attrs.share_location ? 1 : attrs.num_classes; - size_t prior_box_size = attrs.normalized ? 4 : 5; + size_t num_loc_classes = attrs.share_location ? 1 : attrs.num_classes; + size_t prior_box_size = attrs.normalized ? 4 : 5; - locShape = ov::Shape{num_images, num_prior_boxes * num_loc_classes * prior_box_size}; - confShape = ov::Shape{num_images, num_prior_boxes * attrs.num_classes}; - priorBoxesShape = - ov::Shape{is_priors_patch_size_1 ? 1UL : num_images, attrs.variance_encoded_in_target ? 1UL : 2UL, num_prior_boxes * prior_box_size}; - } + locShape = ov::Shape{num_images, num_prior_boxes * num_loc_classes * prior_box_size}; + confShape = ov::Shape{num_images, num_prior_boxes * attrs.num_classes}; + priorBoxesShape = ov::Shape{is_priors_patch_size_1 ? 1UL : num_images, + attrs.variance_encoded_in_target ? 1UL : 2UL, + num_prior_boxes * prior_box_size}; + } -template + template DetectionOutputParams(const int num_classes, const int background_label_id, const int top_k, @@ -106,33 +108,34 @@ template auxLocData(CreateTensor(iType, auxLocValues)), auxConfData(CreateTensor(iType, auxConfValues)), testcaseName(test_name) { - attrs.num_classes = num_classes; - attrs_v8.background_label_id = attrs.background_label_id = background_label_id; - attrs_v8.top_k = attrs.top_k = top_k; - attrs_v8.variance_encoded_in_target = attrs.variance_encoded_in_target = variance_encoded_in_target; - attrs_v8.keep_top_k = attrs.keep_top_k = keep_top_k; - attrs_v8.code_type = attrs.code_type = code_type; - attrs_v8.share_location = attrs.share_location = share_location; - attrs_v8.nms_threshold = attrs.nms_threshold = nms_threshold; - attrs_v8.confidence_threshold = attrs.confidence_threshold = confidence_threshold; - attrs_v8.clip_after_nms = attrs.clip_after_nms = clip_after_nms; - attrs_v8.clip_before_nms = attrs.clip_before_nms = clip_before_nms; - attrs_v8.decrease_label_id = attrs.decrease_label_id = decrease_label_id; - attrs_v8.normalized = attrs.normalized = normalized; - attrs_v8.input_height = attrs.input_height = input_height; - attrs_v8.input_width = attrs.input_width = input_width; - attrs_v8.objectness_score = attrs.objectness_score = objectness_score; + attrs.num_classes = num_classes; + attrs_v8.background_label_id = attrs.background_label_id = background_label_id; + attrs_v8.top_k = attrs.top_k = top_k; + attrs_v8.variance_encoded_in_target = attrs.variance_encoded_in_target = variance_encoded_in_target; + attrs_v8.keep_top_k = attrs.keep_top_k = keep_top_k; + attrs_v8.code_type = attrs.code_type = code_type; + attrs_v8.share_location = attrs.share_location = share_location; + attrs_v8.nms_threshold = attrs.nms_threshold = nms_threshold; + attrs_v8.confidence_threshold = attrs.confidence_threshold = confidence_threshold; + attrs_v8.clip_after_nms = attrs.clip_after_nms = clip_after_nms; + attrs_v8.clip_before_nms = attrs.clip_before_nms = clip_before_nms; + attrs_v8.decrease_label_id = attrs.decrease_label_id = decrease_label_id; + attrs_v8.normalized = attrs.normalized = normalized; + attrs_v8.input_height = attrs.input_height = input_height; + attrs_v8.input_width = attrs.input_width = input_width; + attrs_v8.objectness_score = attrs.objectness_score = objectness_score; - size_t num_loc_classes = attrs.share_location ? 1 : attrs.num_classes; - size_t prior_box_size = attrs.normalized ? 4 : 5; + size_t num_loc_classes = attrs.share_location ? 1 : attrs.num_classes; + size_t prior_box_size = attrs.normalized ? 4 : 5; - locShape = ov::Shape{num_images, num_prior_boxes * num_loc_classes * prior_box_size}; - confShape = ov::Shape{num_images, num_prior_boxes * attrs.num_classes}; - priorBoxesShape = - ov::Shape{is_priors_patch_size_1 ? 1UL : num_images, attrs.variance_encoded_in_target ? 1UL : 2UL, num_prior_boxes * prior_box_size}; - auxLocShape = locShape; - auxConfShape = confShape; - } + locShape = ov::Shape{num_images, num_prior_boxes * num_loc_classes * prior_box_size}; + confShape = ov::Shape{num_images, num_prior_boxes * attrs.num_classes}; + priorBoxesShape = ov::Shape{is_priors_patch_size_1 ? 1UL : num_images, + attrs.variance_encoded_in_target ? 1UL : 2UL, + num_prior_boxes * prior_box_size}; + auxLocShape = locShape; + auxConfShape = confShape; + } ov::op::v0::DetectionOutput::Attributes attrs; ov::op::v8::DetectionOutput::Attributes attrs_v8; @@ -151,7 +154,8 @@ template std::string testcaseName; }; -class ReferenceDetectionOutputLayerTest : public testing::TestWithParam, public CommonReferenceTest { +class ReferenceDetectionOutputLayerTest : public testing::TestWithParam, + public CommonReferenceTest { public: void SetUp() override { auto params = GetParam(); @@ -186,17 +190,19 @@ private: if ((params.auxLocShape.size() != 0) && (params.auxConfShape.size() != 0)) { const auto auxConf = std::make_shared(params.inType, params.auxConfShape); const auto auxLoc = std::make_shared(params.inType, params.auxLocShape); - const auto DetectionOutput = std::make_shared(loc, conf, priorBoxes, auxConf, auxLoc, params.attrs); - return std::make_shared(NodeVector {DetectionOutput}, ParameterVector {loc, conf, priorBoxes, auxConf, auxLoc}); + const auto DetectionOutput = + std::make_shared(loc, conf, priorBoxes, auxConf, auxLoc, params.attrs); + return std::make_shared(NodeVector{DetectionOutput}, + ParameterVector{loc, conf, priorBoxes, auxConf, auxLoc}); } else { const auto DetectionOutput = std::make_shared(loc, conf, priorBoxes, params.attrs); - return std::make_shared(NodeVector {DetectionOutput}, ParameterVector {loc, conf, priorBoxes}); + return std::make_shared(NodeVector{DetectionOutput}, ParameterVector{loc, conf, priorBoxes}); } } }; class ReferenceDetectionOutputV8LayerTest : public testing::TestWithParam, - public CommonReferenceTest { + public CommonReferenceTest { public: void SetUp() override { auto params = GetParam(); @@ -234,9 +240,10 @@ private: const auto DetectionOutput = std::make_shared(loc, conf, priorBoxes, auxConf, auxLoc, params.attrs_v8); return std::make_shared(NodeVector{DetectionOutput}, - ParameterVector{loc, conf, priorBoxes, auxConf, auxLoc}); + ParameterVector{loc, conf, priorBoxes, auxConf, auxLoc}); } else { - const auto DetectionOutput = std::make_shared(loc, conf, priorBoxes, params.attrs_v8); + const auto DetectionOutput = + std::make_shared(loc, conf, priorBoxes, params.attrs_v8); return std::make_shared(NodeVector{DetectionOutput}, ParameterVector{loc, conf, priorBoxes}); } } @@ -254,7 +261,7 @@ template std::vector generateDetectionOutputFloatParams() { using T = typename element_type_traits::value_type; - std::vector detectionOutputParams { + std::vector detectionOutputParams{ DetectionOutputParams(3, -1, -1, @@ -275,33 +282,87 @@ std::vector generateDetectionOutputFloatParams() { 2, true, IN_ET, - std::vector{ - // batch 0, class 0 - 0.1, 0.1, 0.2, 0.2, 0.0, 0.1, 0.2, 0.15, - // batch 0, class 1 - 0.3, 0.2, 0.5, 0.3, 0.2, 0.1, 0.42, 0.66, - // batch 0, class 2 - 0.05, 0.1, 0.2, 0.3, 0.2, 0.1, 0.33, 0.44, - // batch 1, class 0 - 0.2, 0.1, 0.4, 0.2, 0.1, 0.05, 0.2, 0.25, - // batch 1, class 1 - 0.1, 0.2, 0.5, 0.3, 0.1, 0.1, 0.12, 0.34, - // batch 1, class 2 - 0.25, 0.11, 0.4, 0.32, 0.2, 0.12, 0.38, 0.24}, - std::vector{ - // batch 0 - 0.1, 0.9, 0.4, 0.7, 0, 0.2, - // batch 1 - 0.7, 0.8, 0.42, 0.33, 0.81, 0.2}, - std::vector{ - // prior box 0 - 0.0, 0.5, 0.1, 0.2, - // prior box 1 - 0.0, 0.3, 0.1, 0.35}, - std::vector{ - 0, 0, 0.7, 0.2, 0.4, 0.52, 1, 0, 1, 0.9, 0, 0.6, 0.3, 0.35, - 1, 1, 0.81, 0.25, 0.41, 0.5, 0.67, 1, 1, 0.8, 0.1, 0.55, 0.3, 0.45}, - "3_inputs"), + std::vector{// batch 0, class 0 + 0.1, + 0.1, + 0.2, + 0.2, + 0.0, + 0.1, + 0.2, + 0.15, + // batch 0, class 1 + 0.3, + 0.2, + 0.5, + 0.3, + 0.2, + 0.1, + 0.42, + 0.66, + // batch 0, class 2 + 0.05, + 0.1, + 0.2, + 0.3, + 0.2, + 0.1, + 0.33, + 0.44, + // batch 1, class 0 + 0.2, + 0.1, + 0.4, + 0.2, + 0.1, + 0.05, + 0.2, + 0.25, + // batch 1, class 1 + 0.1, + 0.2, + 0.5, + 0.3, + 0.1, + 0.1, + 0.12, + 0.34, + // batch 1, class 2 + 0.25, + 0.11, + 0.4, + 0.32, + 0.2, + 0.12, + 0.38, + 0.24}, + std::vector{// batch 0 + 0.1, + 0.9, + 0.4, + 0.7, + 0, + 0.2, + // batch 1 + 0.7, + 0.8, + 0.42, + 0.33, + 0.81, + 0.2}, + std::vector{// prior box 0 + 0.0, + 0.5, + 0.1, + 0.2, + // prior box 1 + 0.0, + 0.3, + 0.1, + 0.35}, + std::vector{0, 0, 0.7, 0.2, 0.4, 0.52, 1, 0, 1, 0.9, 0, 0.6, 0.3, 0.35, + 1, 1, 0.81, 0.25, 0.41, 0.5, 0.67, 1, 1, 0.8, 0.1, 0.55, 0.3, 0.45}, + "3_inputs"), DetectionOutputParams(3, -1, -1, @@ -322,25 +383,59 @@ std::vector generateDetectionOutputFloatParams() { 2, false, IN_ET, - std::vector{ - // batch 0 - 0.1, 0.1, 0.2, 0.2, 0.0, 0.1, 0.2, 0.15, - // batch 1 - 0.2, 0.1, 0.4, 0.2, 0.1, 0.05, 0.2, 0.25}, - std::vector{ - // batch 0 - 0.1, 0.9, 0.4, 0.7, 0, 0.2, - // batch 1 - 0.7, 0.8, 0.42, 0.33, 0.81, 0.2}, - std::vector{ - // batch 0 - 0.0, 0.5, 0.1, 0.2, 0.0, 0.3, 0.1, 0.35, - // batch 1 - 0.33, 0.2, 0.52, 0.37, 0.22, 0.1, 0.32, 0.36}, - std::vector{ - 0, 0, 0.7, 0, 0.4, 0.3, 0.5, 0, 1, 0.9, 0.1, 0.6, 0.3, 0.4, - 1, 1, 0.81, 0.32, 0.15, 0.52, 0.61, 1, 1, 0.8, 0.53, 0.3, 0.92, 0.57}, - "3_inputs_share_location"), + std::vector{// batch 0 + 0.1, + 0.1, + 0.2, + 0.2, + 0.0, + 0.1, + 0.2, + 0.15, + // batch 1 + 0.2, + 0.1, + 0.4, + 0.2, + 0.1, + 0.05, + 0.2, + 0.25}, + std::vector{// batch 0 + 0.1, + 0.9, + 0.4, + 0.7, + 0, + 0.2, + // batch 1 + 0.7, + 0.8, + 0.42, + 0.33, + 0.81, + 0.2}, + std::vector{// batch 0 + 0.0, + 0.5, + 0.1, + 0.2, + 0.0, + 0.3, + 0.1, + 0.35, + // batch 1 + 0.33, + 0.2, + 0.52, + 0.37, + 0.22, + 0.1, + 0.32, + 0.36}, + std::vector{0, 0, 0.7, 0, 0.4, 0.3, 0.5, 0, 1, 0.9, 0.1, 0.6, 0.3, 0.4, + 1, 1, 0.81, 0.32, 0.15, 0.52, 0.61, 1, 1, 0.8, 0.53, 0.3, 0.92, 0.57}, + "3_inputs_share_location"), DetectionOutputParams(3, -1, -1, @@ -361,86 +456,210 @@ std::vector generateDetectionOutputFloatParams() { 2, false, IN_ET, - std::vector{ - // batch 0 - 0.1, 0.1, 0.2, 0.2, 0.0, 0.1, 0.2, 0.15, - // batch 1 - 0.2, 0.1, 0.4, 0.2, 0.1, 0.05, 0.2, 0.25}, - std::vector{ - // batch 0 - 0.1, 0.9, 0.4, 0.7, 0, 0.2, - // batch 1 - 0.7, 0.8, 0.42, 0.33, 0.81, 0.2}, - std::vector{ - // batch 0 - 0.0, 0.5, 0.1, 0.2, 0.0, 0.3, 0.1, 0.35, - // batch 1 - 0.33, 0.2, 0.52, 0.37, 0.22, 0.1, 0.32, 0.36}, - std::vector{ - 0, 0, 0.7, 0, 0.4, 0.3, 0.5, 0, 1, 0.9, 0.1, 0.6, 0.3, 0.4, - 1, 1, 0.81, 0.32, 0.15, 0.52, 0.61, 1, 1, 0.8, 0.53, 0.3, 0.92, 0.57}, - "3_inputs_normalized"), - DetectionOutputParams(2, - -1, - -1, - false, - {-1}, - "caffe.PriorBoxParameter.CORNER", - false, - 0.5, - 0.3, - false, - true, - false, - true, - 0, - 0, - 0, - 2, - 3, - false, - IN_ET, - std::vector{ - // batch 0, class 0 - 0.1, 0.1, 0.2, 0.2, 0.0, 0.1, 0.2, 0.15, - // batch 0, class 1 - 0.3, 0.2, 0.5, 0.3, 0.2, 0.1, 0.42, 0.66, - // batch 1, class 0 - 0.05, 0.1, 0.2, 0.3, 0.2, 0.1, 0.33, 0.44, - // batch 1, class 1 - 0.2, 0.1, 0.4, 0.2, 0.1, 0.05, 0.2, 0.25, - // batch 2, class 0 - 0.1, 0.2, 0.5, 0.3, 0.1, 0.1, 0.12, 0.34, - // batch 2, class 1 - 0.25, 0.11, 0.4, 0.32, 0.2, 0.12, 0.38, 0.24}, - std::vector{ - // batch 0 - 0.1, 0.9, 0.4, 0.7, - // batch 1 - 0.7, 0.8, 0.42, 0.33, - // batch 1 - 0.1, 0.2, 0.32, 0.43}, - std::vector{ - // batch 0 priors - 0.0, 0.5, 0.1, 0.2, 0.0, 0.3, 0.1, 0.35, - // batch 0 variances - 0.12, 0.11, 0.32, 0.02, 0.02, 0.20, 0.09, 0.71, - // batch 1 priors - 0.33, 0.2, 0.52, 0.37, 0.22, 0.1, 0.32, 0.36, - // batch 1 variances - 0.01, 0.07, 0.12, 0.13, 0.41, 0.33, 0.2, 0.1, - // batch 2 priors - 0.0, 0.3, 0.1, 0.35, 0.22, 0.1, 0.32, 0.36, - // batch 2 variances - 0.32, 0.02, 0.13, 0.41, 0.33, 0.2, 0.02, 0.20}, - std::vector{ - 0, 0, 0.4, 0.006, 0.34, 0.145, 0.563, 0, 1, 0.9, 0, 0.511, 0.164, 0.203, - 0, 1, 0.7, 0.004, 0.32, 0.1378, 0.8186, 1, 0, 0.7, 0.3305, 0.207, 0.544, 0.409, - 1, 0, 0.42, 0.302, 0.133, 0.4, 0.38, 1, 1, 0.8, 0.332, 0.207, 0.5596, 0.4272, - 1, 1, 0.33, 0.261, 0.1165, 0.36, 0.385, 2, 0, 0.32, 0.3025, 0.122, 0.328, 0.424, - 2, 1, 0.43, 0.286, 0.124, 0.3276, 0.408, -1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - "3_inputs_keep_all_bboxes"), + std::vector{// batch 0 + 0.1, + 0.1, + 0.2, + 0.2, + 0.0, + 0.1, + 0.2, + 0.15, + // batch 1 + 0.2, + 0.1, + 0.4, + 0.2, + 0.1, + 0.05, + 0.2, + 0.25}, + std::vector{// batch 0 + 0.1, + 0.9, + 0.4, + 0.7, + 0, + 0.2, + // batch 1 + 0.7, + 0.8, + 0.42, + 0.33, + 0.81, + 0.2}, + std::vector{// batch 0 + 0.0, + 0.5, + 0.1, + 0.2, + 0.0, + 0.3, + 0.1, + 0.35, + // batch 1 + 0.33, + 0.2, + 0.52, + 0.37, + 0.22, + 0.1, + 0.32, + 0.36}, + std::vector{0, 0, 0.7, 0, 0.4, 0.3, 0.5, 0, 1, 0.9, 0.1, 0.6, 0.3, 0.4, + 1, 1, 0.81, 0.32, 0.15, 0.52, 0.61, 1, 1, 0.8, 0.53, 0.3, 0.92, 0.57}, + "3_inputs_normalized"), + DetectionOutputParams( + 2, + -1, + -1, + false, + {-1}, + "caffe.PriorBoxParameter.CORNER", + false, + 0.5, + 0.3, + false, + true, + false, + true, + 0, + 0, + 0, + 2, + 3, + false, + IN_ET, + std::vector{// batch 0, class 0 + 0.1, + 0.1, + 0.2, + 0.2, + 0.0, + 0.1, + 0.2, + 0.15, + // batch 0, class 1 + 0.3, + 0.2, + 0.5, + 0.3, + 0.2, + 0.1, + 0.42, + 0.66, + // batch 1, class 0 + 0.05, + 0.1, + 0.2, + 0.3, + 0.2, + 0.1, + 0.33, + 0.44, + // batch 1, class 1 + 0.2, + 0.1, + 0.4, + 0.2, + 0.1, + 0.05, + 0.2, + 0.25, + // batch 2, class 0 + 0.1, + 0.2, + 0.5, + 0.3, + 0.1, + 0.1, + 0.12, + 0.34, + // batch 2, class 1 + 0.25, + 0.11, + 0.4, + 0.32, + 0.2, + 0.12, + 0.38, + 0.24}, + std::vector{// batch 0 + 0.1, + 0.9, + 0.4, + 0.7, + // batch 1 + 0.7, + 0.8, + 0.42, + 0.33, + // batch 1 + 0.1, + 0.2, + 0.32, + 0.43}, + std::vector{// batch 0 priors + 0.0, + 0.5, + 0.1, + 0.2, + 0.0, + 0.3, + 0.1, + 0.35, + // batch 0 variances + 0.12, + 0.11, + 0.32, + 0.02, + 0.02, + 0.20, + 0.09, + 0.71, + // batch 1 priors + 0.33, + 0.2, + 0.52, + 0.37, + 0.22, + 0.1, + 0.32, + 0.36, + // batch 1 variances + 0.01, + 0.07, + 0.12, + 0.13, + 0.41, + 0.33, + 0.2, + 0.1, + // batch 2 priors + 0.0, + 0.3, + 0.1, + 0.35, + 0.22, + 0.1, + 0.32, + 0.36, + // batch 2 variances + 0.32, + 0.02, + 0.13, + 0.41, + 0.33, + 0.2, + 0.02, + 0.20}, + std::vector{0, 0, 0.4, 0.006, 0.34, 0.145, 0.563, 0, 1, 0.9, 0, 0.511, 0.164, 0.203, + 0, 1, 0.7, 0.004, 0.32, 0.1378, 0.8186, 1, 0, 0.7, 0.3305, 0.207, 0.544, 0.409, + 1, 0, 0.42, 0.302, 0.133, 0.4, 0.38, 1, 1, 0.8, 0.332, 0.207, 0.5596, 0.4272, + 1, 1, 0.33, 0.261, 0.1165, 0.36, 0.385, 2, 0, 0.32, 0.3025, 0.122, 0.328, 0.424, + 2, 1, 0.43, 0.286, 0.124, 0.3276, 0.408, -1, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + "3_inputs_keep_all_bboxes"), DetectionOutputParams(3, -1, -1, @@ -461,35 +680,97 @@ std::vector generateDetectionOutputFloatParams() { 2, false, IN_ET, - std::vector{ - // batch 0, class 0 - 0.1, 0.1, 0.2, 0.2, 0.0, 0.1, 0.2, 0.15, - // batch 0, class 1 - 0.3, 0.2, 0.5, 0.3, 0.2, 0.1, 0.42, 0.66, - // batch 0, class 2 - 0.05, 0.1, 0.2, 0.3, 0.2, 0.1, 0.33, 0.44, - // batch 1, class 0 - 0.2, 0.1, 0.4, 0.2, 0.1, 0.05, 0.2, 0.25, - // batch 1, class 1 - 0.1, 0.2, 0.5, 0.3, 0.1, 0.1, 0.12, 0.34, - // batch 1, class 2 - 0.25, 0.11, 0.4, 0.32, 0.2, 0.12, 0.38, 0.24}, - std::vector{ - // batch 0 - 0.1, 0.9, 0.4, 0.7, 0, 0.2, - // batch 1 - 0.7, 0.8, 0.42, 0.33, 0.81, 0.2}, - std::vector{ - // batch 0 - 0.0, 0.5, 0.1, 0.2, 0.0, 0.3, 0.1, 0.35, - // batch 1 - 0.33, 0.2, 0.52, 0.37, 0.22, 0.1, 0.32, 0.36}, - std::vector{ - 0, 0, 0.7, 0, 0.28163019, 0.14609808, 0.37836978, - 0, 1, 0.9, 0, 0.49427515, 0.11107014, 0.14572485, - 1, 1, 0.81, 0.22040875, 0.079573378, 0.36959124, 0.4376266, - 1, 1, 0.8, 0.32796675, 0.18435785, 0.56003326, 0.40264216}, - "3_inputs_center_size"), + std::vector{// batch 0, class 0 + 0.1, + 0.1, + 0.2, + 0.2, + 0.0, + 0.1, + 0.2, + 0.15, + // batch 0, class 1 + 0.3, + 0.2, + 0.5, + 0.3, + 0.2, + 0.1, + 0.42, + 0.66, + // batch 0, class 2 + 0.05, + 0.1, + 0.2, + 0.3, + 0.2, + 0.1, + 0.33, + 0.44, + // batch 1, class 0 + 0.2, + 0.1, + 0.4, + 0.2, + 0.1, + 0.05, + 0.2, + 0.25, + // batch 1, class 1 + 0.1, + 0.2, + 0.5, + 0.3, + 0.1, + 0.1, + 0.12, + 0.34, + // batch 1, class 2 + 0.25, + 0.11, + 0.4, + 0.32, + 0.2, + 0.12, + 0.38, + 0.24}, + std::vector{// batch 0 + 0.1, + 0.9, + 0.4, + 0.7, + 0, + 0.2, + // batch 1 + 0.7, + 0.8, + 0.42, + 0.33, + 0.81, + 0.2}, + std::vector{// batch 0 + 0.0, + 0.5, + 0.1, + 0.2, + 0.0, + 0.3, + 0.1, + 0.35, + // batch 1 + 0.33, + 0.2, + 0.52, + 0.37, + 0.22, + 0.1, + 0.32, + 0.36}, + std::vector{0, 0, 0.7, 0, 0.28163019, 0.14609808, 0.37836978, + 0, 1, 0.9, 0, 0.49427515, 0.11107014, 0.14572485, + 1, 1, 0.81, 0.22040875, 0.079573378, 0.36959124, 0.4376266, + 1, 1, 0.8, 0.32796675, 0.18435785, 0.56003326, 0.40264216}, + "3_inputs_center_size"), DetectionOutputParams(2, -1, -1, @@ -510,54 +791,130 @@ std::vector generateDetectionOutputFloatParams() { 2, false, IN_ET, - std::vector{ - // batch 0, class 0 - 0.1, 0.1, 0.2, 0.2, 0.0, 0.1, 0.2, 0.15, - // batch 0, class 1 - 0.3, 0.2, 0.5, 0.3, 0.2, 0.1, 0.42, 0.66, - // batch 1, class 0 - 0.2, 0.1, 0.4, 0.2, 0.1, 0.05, 0.2, 0.25, - // batch 1, class 1 - 0.1, 0.2, 0.5, 0.3, 0.1, 0.1, 0.12, 0.34}, - std::vector{ - // batch 0 - 0.1, 0.9, 0.4, 0.7, - // batch 1 - 0.42, 0.33, 0.81, 0.2}, - std::vector{ - // batch 0 - 0.0, 0.5, 0.1, 0.2, 0.0, 0.3, 0.1, 0.35, - // batch 1 - 0.33, 0.2, 0.52, 0.37, 0.22, 0.1, 0.32, 0.36}, - std::vector{ - 0, 0, 0.4, 0.55, 0.61, 1, 0.97, 0, 1, 0.7, 0.4, 0.52, 0.9, 1, - 1, 0, 0.42, 0.83, 0.5, 1, 0.87, 1, 1, 0.33, 0.63, 0.35, 1, 1}, - std::vector{ - // batch 0, class 0 - 0.1, 0.2, 0.5, 0.3, 0.1, 0.1, 0.12, 0.34, - // batch 0, class 1 - 0.25, 0.11, 0.4, 0.32, 0.2, 0.12, 0.38, 0.24, - // batch 1, class 0 - 0.3, 0.2, 0.5, 0.3, 0.2, 0.1, 0.42, 0.66, - // batch 1, class 1 - 0.05, 0.1, 0.2, 0.3, 0.2, 0.1, 0.33, 0.44}, - std::vector{ - // batch 0 - 0.1, 0.3, 0.5, 0.8, - // batch 1 - 0.5, 0.8, 0.01, 0.1}, - "5_inputs"), + std::vector{// batch 0, class 0 + 0.1, + 0.1, + 0.2, + 0.2, + 0.0, + 0.1, + 0.2, + 0.15, + // batch 0, class 1 + 0.3, + 0.2, + 0.5, + 0.3, + 0.2, + 0.1, + 0.42, + 0.66, + // batch 1, class 0 + 0.2, + 0.1, + 0.4, + 0.2, + 0.1, + 0.05, + 0.2, + 0.25, + // batch 1, class 1 + 0.1, + 0.2, + 0.5, + 0.3, + 0.1, + 0.1, + 0.12, + 0.34}, + std::vector{// batch 0 + 0.1, + 0.9, + 0.4, + 0.7, + // batch 1 + 0.42, + 0.33, + 0.81, + 0.2}, + std::vector{// batch 0 + 0.0, + 0.5, + 0.1, + 0.2, + 0.0, + 0.3, + 0.1, + 0.35, + // batch 1 + 0.33, + 0.2, + 0.52, + 0.37, + 0.22, + 0.1, + 0.32, + 0.36}, + std::vector{0, 0, 0.4, 0.55, 0.61, 1, 0.97, 0, 1, 0.7, 0.4, 0.52, 0.9, 1, + 1, 0, 0.42, 0.83, 0.5, 1, 0.87, 1, 1, 0.33, 0.63, 0.35, 1, 1}, + std::vector{// batch 0, class 0 + 0.1, + 0.2, + 0.5, + 0.3, + 0.1, + 0.1, + 0.12, + 0.34, + // batch 0, class 1 + 0.25, + 0.11, + 0.4, + 0.32, + 0.2, + 0.12, + 0.38, + 0.24, + // batch 1, class 0 + 0.3, + 0.2, + 0.5, + 0.3, + 0.2, + 0.1, + 0.42, + 0.66, + // batch 1, class 1 + 0.05, + 0.1, + 0.2, + 0.3, + 0.2, + 0.1, + 0.33, + 0.44}, + std::vector{// batch 0 + 0.1, + 0.3, + 0.5, + 0.8, + // batch 1 + 0.5, + 0.8, + 0.01, + 0.1}, + "5_inputs"), }; return detectionOutputParams; } std::vector generateDetectionOutputCombinedParams() { - const std::vector> detectionOutputTypeParams { + const std::vector> detectionOutputTypeParams{ generateDetectionOutputFloatParams(), generateDetectionOutputFloatParams(), generateDetectionOutputFloatParams(), generateDetectionOutputFloatParams(), - }; + }; std::vector combinedParams; for (const auto& params : detectionOutputTypeParams) { @@ -566,12 +923,14 @@ std::vector generateDetectionOutputCombinedParams() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_DetectionOutput_With_Hardcoded_Refs, ReferenceDetectionOutputLayerTest, - testing::ValuesIn(generateDetectionOutputCombinedParams()), ReferenceDetectionOutputLayerTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_DetectionOutput_With_Hardcoded_Refs, + ReferenceDetectionOutputLayerTest, + testing::ValuesIn(generateDetectionOutputCombinedParams()), + ReferenceDetectionOutputLayerTest::getTestCaseName); INSTANTIATE_TEST_SUITE_P(smoke_DetectionOutput_With_Hardcoded_Refs, ReferenceDetectionOutputV8LayerTest, testing::ValuesIn(generateDetectionOutputCombinedParams()), ReferenceDetectionOutputV8LayerTest::getTestCaseName); -} // namespace +} // namespace diff --git a/src/plugins/template/tests/functional/op_reference/dft.cpp b/src/plugins/template/tests/functional/op_reference/dft.cpp index 4537ec541d2..5b742a3909b 100644 --- a/src/plugins/template/tests/functional/op_reference/dft.cpp +++ b/src/plugins/template/tests/functional/op_reference/dft.cpp @@ -2,11 +2,12 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/dft.hpp" + #include #include "base_reference_test.hpp" #include "openvino/op/constant.hpp" -#include "openvino/op/dft.hpp" using namespace reference_tests; using namespace ov; @@ -16,13 +17,13 @@ namespace { struct DFTParams { template DFTParams(const Shape& input_shape, - const Shape& expected_shape, - const element::Type_t& input_type, - const element::Type_t& expected_type, - const std::vector& input_value, - const std::vector& expected_value, - const std::shared_ptr& axes, - const std::shared_ptr& signal) { + const Shape& expected_shape, + const element::Type_t& input_type, + const element::Type_t& expected_type, + const std::vector& input_value, + const std::vector& expected_value, + const std::shared_ptr& axes, + const std::shared_ptr& signal) { m_input_shape = input_shape; m_expected_shape = expected_shape; m_input_type = input_type; @@ -1118,7 +1119,7 @@ static const std::vector expected_dft3d_signal_size_results = { 1.1392056, -4.696983, 0.45275614, 1.9134089, -3.8572056, -2.009159, 1.6307822, -0.9646755, -1.2407924, 2.6003554}; -template +template static std::vector convert(const std::vector& v) { if (v.empty()) { return std::vector(); @@ -1402,10 +1403,9 @@ std::vector generateCombinedParamsForDFT() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P( - smoke_DFT_With_Hardcoded_Refs, - ReferenceDFTLayerTest, - ::testing::ValuesIn(generateCombinedParamsForDFT()), - ReferenceDFTLayerTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_DFT_With_Hardcoded_Refs, + ReferenceDFTLayerTest, + ::testing::ValuesIn(generateCombinedParamsForDFT()), + ReferenceDFTLayerTest::getTestCaseName); } // namespace diff --git a/src/plugins/template/tests/functional/op_reference/divide.cpp b/src/plugins/template/tests/functional/op_reference/divide.cpp index c89b133e431..5588bc95c9e 100644 --- a/src/plugins/template/tests/functional/op_reference/divide.cpp +++ b/src/plugins/template/tests/functional/op_reference/divide.cpp @@ -2,10 +2,12 @@ // SPDX-License-Identifier: Apache-2.0 // -#include -#include "base_reference_test.hpp" #include "openvino/op/divide.hpp" +#include + +#include "base_reference_test.hpp" + using namespace ov; using namespace reference_tests; @@ -14,11 +16,11 @@ namespace { struct DivideParams { template DivideParams(const PartialShape& iShape1, - const PartialShape& iShape2, - const element::Type& iType, - const std::vector& iValues1, - const std::vector& iValues2, - const std::vector& oValues) + const PartialShape& iShape2, + const element::Type& iType, + const std::vector& iValues1, + const std::vector& iValues2, + const std::vector& oValues) : pshape1(iShape1), pshape2(iShape2), inType(iType), @@ -45,7 +47,8 @@ struct DivideRoundingParams : public DivideParams { const std::vector& iValues2, const std::vector& oValues, const bool pythondiv) - : DivideParams(iShape1, iShape2, iType, iValues1, iValues2, oValues), pythonDivision(pythondiv) {} + : DivideParams(iShape1, iShape2, iType, iValues1, iValues2, oValues), + pythonDivision(pythondiv) {} bool pythonDivision; }; @@ -71,9 +74,9 @@ public: private: static std::shared_ptr CreateFunction(const PartialShape& input_shape1, - const PartialShape& input_shape2, - const element::Type& input_type, - const element::Type& expected_output_type) { + const PartialShape& input_shape2, + const element::Type& input_type, + const element::Type& expected_output_type) { const auto in1 = std::make_shared(input_type, input_shape1); const auto in2 = std::make_shared(input_type, input_shape2); const auto divide = std::make_shared(in1, in2); @@ -81,7 +84,8 @@ private: } }; -class ReferenceDivideRoundingLayerTest : public testing::TestWithParam, public CommonReferenceTest { +class ReferenceDivideRoundingLayerTest : public testing::TestWithParam, + public CommonReferenceTest { public: void SetUp() override { auto params = GetParam(); @@ -102,14 +106,14 @@ public: private: static std::shared_ptr CreateFunction(const PartialShape& input_shape1, - const PartialShape& input_shape2, - const element::Type& input_type, - const element::Type& expected_output_type, - const bool pythondiv) { + const PartialShape& input_shape2, + const element::Type& input_type, + const element::Type& expected_output_type, + const bool pythondiv) { const auto in1 = std::make_shared(input_type, input_shape1); const auto in2 = std::make_shared(input_type, input_shape2); const auto divide = std::make_shared(in1, in2, pythondiv); - return std::make_shared(NodeVector{divide}, ParameterVector{in1, in2}); + return std::make_shared(NodeVector{divide}, ParameterVector{in1, in2}); } }; @@ -125,14 +129,12 @@ template std::vector generateParamsForDivide() { using T = typename element_type_traits::value_type; - std::vector params{ - DivideParams(ov::PartialShape{2, 2}, - ov::PartialShape{2, 2}, - IN_ET, - std::vector{2, 4, 8, 16}, - std::vector{1, 2, 4, 8}, - std::vector{2, 2, 2, 2}) - }; + std::vector params{DivideParams(ov::PartialShape{2, 2}, + ov::PartialShape{2, 2}, + IN_ET, + std::vector{2, 4, 8, 16}, + std::vector{1, 2, 4, 8}, + std::vector{2, 2, 2, 2})}; return params; } @@ -140,23 +142,21 @@ template std::vector generateParamsForDivideFloat32() { using T = typename element_type_traits::value_type; - std::vector params{ - DivideParams(ov::PartialShape{1}, - ov::PartialShape{1}, - IN_ET, - std::vector{18}, - std::vector{8}, - std::vector{2.25}), - DivideParams(ov::PartialShape{2, 2}, - ov::PartialShape{2, 2}, - IN_ET, - std::vector{2, 4, 8, 16}, - std::vector{0, 0, 0, 0}, - std::vector{std::numeric_limits::infinity(), - std::numeric_limits::infinity(), - std::numeric_limits::infinity(), - std::numeric_limits::infinity()}) - }; + std::vector params{DivideParams(ov::PartialShape{1}, + ov::PartialShape{1}, + IN_ET, + std::vector{18}, + std::vector{8}, + std::vector{2.25}), + DivideParams(ov::PartialShape{2, 2}, + ov::PartialShape{2, 2}, + IN_ET, + std::vector{2, 4, 8, 16}, + std::vector{0, 0, 0, 0}, + std::vector{std::numeric_limits::infinity(), + std::numeric_limits::infinity(), + std::numeric_limits::infinity(), + std::numeric_limits::infinity()})}; return params; } @@ -164,20 +164,18 @@ template std::vector generateParamsForDivideInt32() { using T = typename element_type_traits::value_type; - std::vector params{ - DivideParams(ov::PartialShape{2, 2}, - ov::PartialShape{2, 2}, - IN_ET, - std::vector{0x40000140, 0x40000001, 8, 16}, - std::vector{2, 5, 4, 8}, - std::vector{536871072, 214748365, 2, 2}), - DivideParams(ov::PartialShape{1}, - ov::PartialShape{1}, - IN_ET, - std::vector{18}, - std::vector{8}, - std::vector{2}) - }; + std::vector params{DivideParams(ov::PartialShape{2, 2}, + ov::PartialShape{2, 2}, + IN_ET, + std::vector{0x40000140, 0x40000001, 8, 16}, + std::vector{2, 5, 4, 8}, + std::vector{536871072, 214748365, 2, 2}), + DivideParams(ov::PartialShape{1}, + ov::PartialShape{1}, + IN_ET, + std::vector{18}, + std::vector{8}, + std::vector{2})}; return params; } @@ -191,13 +189,8 @@ std::vector generateParamsForDivideBroadcast() { IN_ET, std::vector{12, 24, 36, 48, 60, 72}, std::vector{1, 2, 3, 4, 6, 1}, - std::vector{12, 6, 4, 3, 2, 12, - 24, 12, 8, 6, 4, 24, - 36, 18, 12, 9, 6, 36, - 48, 24, 16, 12, 8, 48, - 60, 30, 20, 15, 10, 60, - 72, 36, 24, 18, 12, 72}) - }; + std::vector{12, 6, 4, 3, 2, 12, 24, 12, 8, 6, 4, 24, 36, 18, 12, 9, 6, 36, + 48, 24, 16, 12, 8, 48, 60, 30, 20, 15, 10, 60, 72, 36, 24, 18, 12, 72})}; return params; } @@ -205,14 +198,12 @@ template std::vector generateParamsForDividePythonRoundingInt32() { using T = typename element_type_traits::value_type; - std::vector params{ - DivideParams(ov::PartialShape{2, 2}, - ov::PartialShape{2, 2}, - IN_ET, - std::vector{-10, -10, 10, 10}, - std::vector{-3, 3, -3, 3}, - std::vector{3, -4, -4, 3}) - }; + std::vector params{DivideParams(ov::PartialShape{2, 2}, + ov::PartialShape{2, 2}, + IN_ET, + std::vector{-10, -10, 10, 10}, + std::vector{-3, 3, -3, 3}, + std::vector{3, -4, -4, 3})}; return params; } @@ -220,28 +211,24 @@ template std::vector generateParamsForDivideCppRoundingInt32() { using T = typename element_type_traits::value_type; - std::vector params{ - DivideRoundingParams(ov::PartialShape{2, 2}, - ov::PartialShape{2, 2}, - IN_ET, - std::vector{-10, -10, 10, 10}, - std::vector{-3, 3, -3, 3}, - std::vector{3, -3, -3, 3}, - false) - }; + std::vector params{DivideRoundingParams(ov::PartialShape{2, 2}, + ov::PartialShape{2, 2}, + IN_ET, + std::vector{-10, -10, 10, 10}, + std::vector{-3, 3, -3, 3}, + std::vector{3, -3, -3, 3}, + false)}; return params; } std::vector generateCombinedParamsForDivide() { - const std::vector> allTypeParams{ - generateParamsForDivide(), - generateParamsForDivide(), - generateParamsForDivide(), - generateParamsForDivide(), - generateParamsForDivide(), - generateParamsForDivide(), - generateParamsForDivide() - }; + const std::vector> allTypeParams{generateParamsForDivide(), + generateParamsForDivide(), + generateParamsForDivide(), + generateParamsForDivide(), + generateParamsForDivide(), + generateParamsForDivide(), + generateParamsForDivide()}; std::vector combinedParams; @@ -253,9 +240,7 @@ std::vector generateCombinedParamsForDivide() { } std::vector generateCombinedParamsForDivideFloat32() { - const std::vector> allTypeParams{ - generateParamsForDivideFloat32() - }; + const std::vector> allTypeParams{generateParamsForDivideFloat32()}; std::vector combinedParams; @@ -267,9 +252,7 @@ std::vector generateCombinedParamsForDivideFloat32() { } std::vector generateCombinedParamsForDivideInt32() { - const std::vector> allTypeParams{ - generateParamsForDivideInt32() - }; + const std::vector> allTypeParams{generateParamsForDivideInt32()}; std::vector combinedParams; @@ -283,8 +266,7 @@ std::vector generateCombinedParamsForDivideInt32() { std::vector generateCombinedParamsForDivideBroadcast() { const std::vector> allTypeParams{ generateParamsForDivideBroadcast(), - generateParamsForDivideBroadcast() - }; + generateParamsForDivideBroadcast()}; std::vector combinedParams; @@ -297,8 +279,7 @@ std::vector generateCombinedParamsForDivideBroadcast() { std::vector generateCombinedParamsForDividePythonRoundingInt32() { const std::vector> allTypeParams{ - generateParamsForDividePythonRoundingInt32() - }; + generateParamsForDividePythonRoundingInt32()}; std::vector combinedParams; @@ -311,8 +292,7 @@ std::vector generateCombinedParamsForDividePythonRoundingInt32() { std::vector generateCombinedParamsForDivideCppRoundingInt32() { const std::vector> allTypeParams{ - generateParamsForDivideCppRoundingInt32() - }; + generateParamsForDivideCppRoundingInt32()}; std::vector combinedParams; @@ -323,40 +303,34 @@ std::vector generateCombinedParamsForDivideCppRoundingInt3 return combinedParams; } -INSTANTIATE_TEST_SUITE_P( - smoke_Divide_With_Hardcoded_Refs, - ReferenceDivideLayerTest, - ::testing::ValuesIn(generateCombinedParamsForDivide()), - ReferenceDivideLayerTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_Divide_With_Hardcoded_Refs, + ReferenceDivideLayerTest, + ::testing::ValuesIn(generateCombinedParamsForDivide()), + ReferenceDivideLayerTest::getTestCaseName); -INSTANTIATE_TEST_SUITE_P( - smoke_Divide_Float32_With_Hardcoded_Refs, - ReferenceDivideLayerTest, - ::testing::ValuesIn(generateCombinedParamsForDivideFloat32()), - ReferenceDivideLayerTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_Divide_Float32_With_Hardcoded_Refs, + ReferenceDivideLayerTest, + ::testing::ValuesIn(generateCombinedParamsForDivideFloat32()), + ReferenceDivideLayerTest::getTestCaseName); -INSTANTIATE_TEST_SUITE_P( - smoke_Divide_Int32_With_Hardcoded_Refs, - ReferenceDivideLayerTest, - ::testing::ValuesIn(generateCombinedParamsForDivideInt32()), - ReferenceDivideLayerTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_Divide_Int32_With_Hardcoded_Refs, + ReferenceDivideLayerTest, + ::testing::ValuesIn(generateCombinedParamsForDivideInt32()), + ReferenceDivideLayerTest::getTestCaseName); -INSTANTIATE_TEST_SUITE_P( - smoke_Divide_Broadcast_With_Hardcoded_Refs, - ReferenceDivideLayerTest, - ::testing::ValuesIn(generateCombinedParamsForDivideBroadcast()), - ReferenceDivideLayerTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_Divide_Broadcast_With_Hardcoded_Refs, + ReferenceDivideLayerTest, + ::testing::ValuesIn(generateCombinedParamsForDivideBroadcast()), + ReferenceDivideLayerTest::getTestCaseName); -INSTANTIATE_TEST_SUITE_P( - smoke_Divide_Python_Rounding_Int32_With_Hardcoded_Refs, - ReferenceDivideLayerTest, - ::testing::ValuesIn(generateCombinedParamsForDividePythonRoundingInt32()), - ReferenceDivideLayerTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_Divide_Python_Rounding_Int32_With_Hardcoded_Refs, + ReferenceDivideLayerTest, + ::testing::ValuesIn(generateCombinedParamsForDividePythonRoundingInt32()), + ReferenceDivideLayerTest::getTestCaseName); -INSTANTIATE_TEST_SUITE_P( - smoke_Divide_Cpp_Rounding_Int32_With_Hardcoded_Refs, - ReferenceDivideRoundingLayerTest, - ::testing::ValuesIn(generateCombinedParamsForDivideCppRoundingInt32()), - ReferenceDivideRoundingLayerTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_Divide_Cpp_Rounding_Int32_With_Hardcoded_Refs, + ReferenceDivideRoundingLayerTest, + ::testing::ValuesIn(generateCombinedParamsForDivideCppRoundingInt32()), + ReferenceDivideRoundingLayerTest::getTestCaseName); } // namespace diff --git a/src/plugins/template/tests/functional/op_reference/einsum.cpp b/src/plugins/template/tests/functional/op_reference/einsum.cpp index d3aeb727b60..400fdc445c5 100644 --- a/src/plugins/template/tests/functional/op_reference/einsum.cpp +++ b/src/plugins/template/tests/functional/op_reference/einsum.cpp @@ -4,9 +4,9 @@ #include -#include "openvino/opsets/opset7.hpp" -#include "openvino/opsets/opset1.hpp" #include "base_reference_test.hpp" +#include "openvino/opsets/opset1.hpp" +#include "openvino/opsets/opset7.hpp" using namespace reference_tests; using namespace ov; @@ -73,37 +73,33 @@ TEST_P(ReferenceEinsumTest, CompareWithRefs) { template std::vector generateParams() { using T = typename element_type_traits::value_type; - std::vector params { - Builder {} + std::vector params{ + Builder{} .inputs({{ET, {1, 2}, std::vector{1, 2}}, - {ET, {3, 4}, std::vector{3, 4, 5, 6, - 7, 8, 9, 10, - 11, 12, 13, 14}}}) + {ET, {3, 4}, std::vector{3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14}}}) .equation("ab,cd->abcd") - .expectedResult({ET, {1, 2, 3, 4}, std::vector{3, 4, 5, 6, 7, 8, 9, 10, - 11, 12, 13, 14, 6, 8, 10, 12, - 14, 16, 18, 20, 22, 24, 26, 28}}) + .expectedResult({ET, {1, 2, 3, 4}, std::vector{3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, + 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28}}) .testcaseName("einsum_no_reduction"), - Builder {} + Builder{} .inputs({{ET, {1, 2, 3}, std::vector{1, 2, 3, 4, 5, 6}}}) .equation("ijk->kij") .expectedResult({ET, {3, 1, 2}, std::vector{1, 4, 2, 5, 3, 6}}) .testcaseName("einsum_transpose"), - Builder {} + Builder{} .inputs({{ET, {2, 3}, std::vector{1, 2, 3, 4, 5, 6}}}) .equation("ab->a") .expectedResult({ET, {2}, std::vector{6, 15}}) .testcaseName("einsum_reduce"), - Builder {} - .inputs({{ET, {2, 3}, std::vector{1, 2, 3, 4, 5, 6}}, - {ET, {3, 2}, std::vector{1, 2, 3, 4, 5, 6}}}) + Builder{} + .inputs({{ET, {2, 3}, std::vector{1, 2, 3, 4, 5, 6}}, {ET, {3, 2}, std::vector{1, 2, 3, 4, 5, 6}}}) .equation("ab,bc->ac") .expectedResult({ET, {2, 2}, std::vector{22, 28, 49, 64}}) .testcaseName("einsum_matrix_multiplication"), - Builder {} + Builder{} .inputs({{ET, {2, 4}, std::vector{1, 3, 2, 7, 5, 6, 0, 1}}, {ET, {4, 3, 1}, std::vector{1, 2, 3, 4, 5, 6, 5, 7, 3, 7, 9, 1}}, {ET, {4, 3}, std::vector{4, 3, 1, 6, 4, 2, 2, 5, 3, 1, 9, 4}}}) @@ -111,50 +107,47 @@ std::vector generateParams() { .expectedResult({ET, {3, 2}, std::vector{145, 171, 703, 231, 85, 91}}) .testcaseName("einsum_multiple_multiplication"), - Builder {} + Builder{} .inputs({{ET, {2, 2, 3}, std::vector{1, 3, 2, 7, 5, 6, 3, 5, 2, 1, 0, 7}}}) .equation("a...->...") .expectedResult({ET, {2, 3}, std::vector{4, 8, 4, 8, 5, 13}}) .testcaseName("einsum_ellipsis_one_input_reduction"), - Builder {} + Builder{} .inputs({{ET, {2, 2, 3}, std::vector{1, 3, 2, 7, 5, 6, 3, 5, 2, 1, 0, 7}}}) .equation("a...->...a") .expectedResult({ET, {2, 3, 2}, std::vector{1, 3, 3, 5, 2, 2, 7, 1, 5, 0, 6, 7}}) .testcaseName("einsum_ellipsis_one_input_transpose"), - Builder {} - .inputs({{ET, {2, 2, 3}, std::vector{1, 3, 2, 7, 5, 6, 3, 5, 2, 1, 0, 7}}, - {ET, {1}, std::vector{2}}}) + Builder{} + .inputs({{ET, {2, 2, 3}, std::vector{1, 3, 2, 7, 5, 6, 3, 5, 2, 1, 0, 7}}, {ET, {1}, std::vector{2}}}) .equation("ab...,...->ab...") .expectedResult({ET, {2, 2, 3}, std::vector{2, 6, 4, 14, 10, 12, 6, 10, 4, 2, 0, 14}}) .testcaseName("einsum_ellipsis_mul_by_1dscalar"), - Builder {} + Builder{} .inputs({{ET, {1, 1, 4, 3}, std::vector{1, 3, 2, 7, 5, 6, 3, 5, 2, 1, 0, 7}}, {ET, {3, 4, 2, 1}, std::vector{3, 1, 6, 2, 3, 10, 9, 8, 2, 9, 3, 2, 4, 2, 3, 1, 9, 1, 11, 4, 7, 2, 3, 1}}}) .equation("a...j,j...->a...") - .expectedResult({ET, {1, 4, 2, 4}, std::vector{27, 85, 37, 66, 30, 58, 50, 8, - 37, 123, 55, 83, 16, 48, 24, 30, - 29, 83, 43, 52, 20, 92, 44, 24, - 24, 96, 48, 30, 13, 67, 31, 15}}) + .expectedResult( + {ET, {1, 4, 2, 4}, std::vector{27, 85, 37, 66, 30, 58, 50, 8, 37, 123, 55, 83, 16, 48, 24, 30, + 29, 83, 43, 52, 20, 92, 44, 24, 24, 96, 48, 30, 13, 67, 31, 15}}) .testcaseName("einsum_ellipsis_complex_mul"), - Builder {} + Builder{} .inputs({{ET, {1, 3, 3}, std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9}}}) .equation("kii->ki") .expectedResult({ET, {1, 3}, std::vector{1, 5, 9}}) .testcaseName("einsum_diagonal"), - Builder {} - .inputs({{ET, {2, 3, 3, 2, 4}, std::vector{4, 2, 5, 4, 5, 5, 1, 1, 3, 3, 1, 1, 2, 2, 4, 1, 3, 4, - 4, 5, 1, 3, 1, 3, 1, 4, 3, 5, 4, 4, 5, 4, 4, 5, 4, 2, - 2, 2, 3, 3, 1, 1, 4, 3, 4, 2, 2, 1, 1, 2, 3, 1, 1, 4, - 2, 3, 1, 3, 4, 2, 5, 5, 3, 4, 3, 4, 5, 4, 4, 5, 1, 3, - 4, 4, 5, 3, 1, 3, 2, 5, 3, 2, 5, 4, 4, 2, 4, 4, 1, 4, - 4, 5, 4, 4, 4, 2, 3, 3, 4, 2, 4, 2, 5, 1, 3, 2, 4, 3, - 5, 1, 2, 3, 1, 1, 2, 5, 1, 1, 2, 1, 4, 5, 3, 4, 1, 3, + Builder{} + .inputs({{ET, {2, 3, 3, 2, 4}, std::vector{4, 2, 5, 4, 5, 5, 1, 1, 3, 3, 1, 1, 2, 2, 4, 1, 3, 4, 4, 5, 1, + 3, 1, 3, 1, 4, 3, 5, 4, 4, 5, 4, 4, 5, 4, 2, 2, 2, 3, 3, 1, 1, + 4, 3, 4, 2, 2, 1, 1, 2, 3, 1, 1, 4, 2, 3, 1, 3, 4, 2, 5, 5, 3, + 4, 3, 4, 5, 4, 4, 5, 1, 3, 4, 4, 5, 3, 1, 3, 2, 5, 3, 2, 5, 4, + 4, 2, 4, 4, 1, 4, 4, 5, 4, 4, 4, 2, 3, 3, 4, 2, 4, 2, 5, 1, 3, + 2, 4, 3, 5, 1, 2, 3, 1, 1, 2, 5, 1, 1, 2, 1, 4, 5, 3, 4, 1, 3, 3, 1, 3, 2, 4, 5, 1, 1, 5, 4, 5, 2, 2, 3, 3, 1, 2, 4}}, {ET, {3, 2, 1}, std::vector{1, 4, 4, 5, 3, 3}}}) .equation("abbac,bad->ad") @@ -165,7 +158,7 @@ std::vector generateParams() { } std::vector generateCombinedParams() { - const std::vector> generatedParams { + const std::vector> generatedParams{ generateParams(), generateParams(), }; @@ -177,6 +170,8 @@ std::vector generateCombinedParams() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_Einsum_With_Hardcoded_Refs, ReferenceEinsumTest, - testing::ValuesIn(generateCombinedParams()), ReferenceEinsumTest::getTestCaseName); -} // namespace +INSTANTIATE_TEST_SUITE_P(smoke_Einsum_With_Hardcoded_Refs, + ReferenceEinsumTest, + testing::ValuesIn(generateCombinedParams()), + ReferenceEinsumTest::getTestCaseName); +} // namespace diff --git a/src/plugins/template/tests/functional/op_reference/elu.cpp b/src/plugins/template/tests/functional/op_reference/elu.cpp index ccb5112e709..dc057a9ffeb 100644 --- a/src/plugins/template/tests/functional/op_reference/elu.cpp +++ b/src/plugins/template/tests/functional/op_reference/elu.cpp @@ -2,9 +2,10 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/elu.hpp" + #include -#include "openvino/op/elu.hpp" #include "base_reference_test.hpp" using namespace reference_tests; @@ -13,8 +14,11 @@ using namespace ov; namespace { struct EluParams { template - EluParams(const ov::PartialShape& shape, const ov::element::Type& iType, const std::vector& iValues, const std::vector& oValues, - const double alpha) + EluParams(const ov::PartialShape& shape, + const ov::element::Type& iType, + const std::vector& iValues, + const std::vector& oValues, + const double alpha) : alpha(alpha), pshape(shape), inType(iType), @@ -50,11 +54,13 @@ public: } private: - static std::shared_ptr CreateFunction(const PartialShape& input_shape, const element::Type& input_type, - const element::Type& expected_output_type, const double alpha) { + static std::shared_ptr CreateFunction(const PartialShape& input_shape, + const element::Type& input_type, + const element::Type& expected_output_type, + const double alpha) { const auto in = std::make_shared(input_type, input_shape); const auto Elu = std::make_shared(in, alpha); - return std::make_shared(NodeVector {Elu}, ParameterVector {in}); + return std::make_shared(NodeVector{Elu}, ParameterVector{in}); } }; @@ -66,18 +72,17 @@ template std::vector generateEluFloatParams() { using T = typename element_type_traits::value_type; - std::vector eluParams { - EluParams(ov::PartialShape {3, 2}, - IN_ET, - std::vector{-2.f, 3.f, -2.f, 1.f, -1.f, 0.f}, - std::vector{-0.432332358f, 3.f, -0.432332358f, 1.f, -0.316060279f, 0.f}, - 0.5f), - EluParams(ov::PartialShape {3, 2}, - IN_ET, - std::vector{-2.f, 3.f, -2.f, 1.f, -1.f, 0.f}, - std::vector{0.864664717f, 3.f, 0.864664717f, 1.f, 0.632120559f, 0.f}, - -1.f) - }; + std::vector eluParams{ + EluParams(ov::PartialShape{3, 2}, + IN_ET, + std::vector{-2.f, 3.f, -2.f, 1.f, -1.f, 0.f}, + std::vector{-0.432332358f, 3.f, -0.432332358f, 1.f, -0.316060279f, 0.f}, + 0.5f), + EluParams(ov::PartialShape{3, 2}, + IN_ET, + std::vector{-2.f, 3.f, -2.f, 1.f, -1.f, 0.f}, + std::vector{0.864664717f, 3.f, 0.864664717f, 1.f, 0.632120559f, 0.f}, + -1.f)}; return eluParams; } @@ -85,18 +90,16 @@ template std::vector generateEluIntParams() { using T = typename element_type_traits::value_type; - std::vector eluParams { - EluParams(ov::PartialShape {3, 2}, - IN_ET, - std::vector{-2, 3, -2, 1, -1, 0}, - std::vector{0, 3, 0, 1, 0, 0}, - 0.5f), - EluParams(ov::PartialShape {3, 2}, - IN_ET, - std::vector{-2, 3, -2, 1, -1, 0}, - std::vector{0, 3, 0, 1, 0, 0}, - -1.f) - }; + std::vector eluParams{EluParams(ov::PartialShape{3, 2}, + IN_ET, + std::vector{-2, 3, -2, 1, -1, 0}, + std::vector{0, 3, 0, 1, 0, 0}, + 0.5f), + EluParams(ov::PartialShape{3, 2}, + IN_ET, + std::vector{-2, 3, -2, 1, -1, 0}, + std::vector{0, 3, 0, 1, 0, 0}, + -1.f)}; return eluParams; } @@ -104,34 +107,30 @@ template std::vector generateEluUintParams() { using T = typename element_type_traits::value_type; - std::vector eluParams { - EluParams(ov::PartialShape {3, 2}, - IN_ET, - std::vector{5, 4, 3, 2, 1, 0}, - std::vector{5, 4, 3, 2, 1, 0}, - 0.5f), - EluParams(ov::PartialShape {3, 2}, - IN_ET, - std::vector{5, 4, 3, 2, 1, 0}, - std::vector{5, 4, 3, 2, 1, 0}, - -1.f) - }; + std::vector eluParams{EluParams(ov::PartialShape{3, 2}, + IN_ET, + std::vector{5, 4, 3, 2, 1, 0}, + std::vector{5, 4, 3, 2, 1, 0}, + 0.5f), + EluParams(ov::PartialShape{3, 2}, + IN_ET, + std::vector{5, 4, 3, 2, 1, 0}, + std::vector{5, 4, 3, 2, 1, 0}, + -1.f)}; return eluParams; } std::vector generateEluCombinedParams() { - const std::vector> eluTypeParams { - generateEluFloatParams(), - generateEluFloatParams(), - generateEluFloatParams(), - generateEluIntParams(), - generateEluIntParams(), - generateEluIntParams(), - generateEluIntParams(), - generateEluUintParams(), - generateEluUintParams(), - generateEluUintParams(), - generateEluUintParams() - }; + const std::vector> eluTypeParams{generateEluFloatParams(), + generateEluFloatParams(), + generateEluFloatParams(), + generateEluIntParams(), + generateEluIntParams(), + generateEluIntParams(), + generateEluIntParams(), + generateEluUintParams(), + generateEluUintParams(), + generateEluUintParams(), + generateEluUintParams()}; std::vector combinedParams; for (const auto& params : eluTypeParams) { @@ -140,7 +139,9 @@ std::vector generateEluCombinedParams() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_Elu_With_Hardcoded_Refs, ReferenceEluLayerTest, - testing::ValuesIn(generateEluCombinedParams()), ReferenceEluLayerTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_Elu_With_Hardcoded_Refs, + ReferenceEluLayerTest, + testing::ValuesIn(generateEluCombinedParams()), + ReferenceEluLayerTest::getTestCaseName); -} // namespace +} // namespace diff --git a/src/plugins/template/tests/functional/op_reference/embedding_segments_sum.cpp b/src/plugins/template/tests/functional/op_reference/embedding_segments_sum.cpp index 1097aa85620..d308d2c2a5d 100644 --- a/src/plugins/template/tests/functional/op_reference/embedding_segments_sum.cpp +++ b/src/plugins/template/tests/functional/op_reference/embedding_segments_sum.cpp @@ -79,14 +79,13 @@ public: } private: - static std::shared_ptr CreateFunction( - const PartialShape& input_shape, - const element::Type& input_type, - const std::shared_ptr indices, - const std::shared_ptr segment_ids, - const std::shared_ptr num_segments, - const std::shared_ptr default_index, - const std::shared_ptr per_sample_weights) { + static std::shared_ptr CreateFunction(const PartialShape& input_shape, + const element::Type& input_type, + const std::shared_ptr indices, + const std::shared_ptr segment_ids, + const std::shared_ptr num_segments, + const std::shared_ptr default_index, + const std::shared_ptr per_sample_weights) { const auto in = std::make_shared(input_type, input_shape); if (default_index) { @@ -133,8 +132,8 @@ INSTANTIATE_TEST_SUITE_P( std::make_shared(element::i32, ov::Shape(), std::vector{3}), std::make_shared(element::i32, ov::Shape(), std::vector{0}), std::make_shared(element::f32, - ov::Shape({4}), - std::vector{0.5, 0.5, 0.5, 0.5})), + ov::Shape({4}), + std::vector{0.5, 0.5, 0.5, 0.5})), EmbeddingSegmentsSumParams( ov::PartialShape{5, 2}, ov::element::f64, diff --git a/src/plugins/template/tests/functional/op_reference/embeddingbag_offsetssum.cpp b/src/plugins/template/tests/functional/op_reference/embeddingbag_offsetssum.cpp index d4d7c5c492c..f7e7bdcafaa 100644 --- a/src/plugins/template/tests/functional/op_reference/embeddingbag_offsetssum.cpp +++ b/src/plugins/template/tests/functional/op_reference/embeddingbag_offsetssum.cpp @@ -74,13 +74,12 @@ public: } private: - static std::shared_ptr CreateFunction( - const PartialShape& input_shape, - const element::Type& input_type, - const std::shared_ptr indices, - const std::shared_ptr offsets, - const std::shared_ptr default_index, - const std::shared_ptr per_sample_weights) { + static std::shared_ptr CreateFunction(const PartialShape& input_shape, + const element::Type& input_type, + const std::shared_ptr indices, + const std::shared_ptr offsets, + const std::shared_ptr default_index, + const std::shared_ptr per_sample_weights) { const auto in = std::make_shared(input_type, input_shape); if (default_index) { @@ -121,8 +120,8 @@ INSTANTIATE_TEST_SUITE_P( std::make_shared(element::i32, ov::Shape({3}), std::vector{0, 2, 2}), std::make_shared(element::i32, ov::Shape(), std::vector{0}), std::make_shared(element::f32, - ov::Shape({4}), - std::vector{0.5, 0.5, 0.5, 0.5})), + ov::Shape({4}), + std::vector{0.5, 0.5, 0.5, 0.5})), EmbeddingBagOffsetsSumParams( ov::PartialShape{5, 2}, ov::element::f64, diff --git a/src/plugins/template/tests/functional/op_reference/embeddingbag_packedsum.cpp b/src/plugins/template/tests/functional/op_reference/embeddingbag_packedsum.cpp index f81acb2d4e2..80af12d4053 100644 --- a/src/plugins/template/tests/functional/op_reference/embeddingbag_packedsum.cpp +++ b/src/plugins/template/tests/functional/op_reference/embeddingbag_packedsum.cpp @@ -63,11 +63,10 @@ public: } private: - static std::shared_ptr CreateFunction( - const PartialShape& input_shape, - const element::Type& input_type, - const std::shared_ptr indices, - const std::shared_ptr per_sample_weights) { + static std::shared_ptr CreateFunction(const PartialShape& input_shape, + const element::Type& input_type, + const std::shared_ptr indices, + const std::shared_ptr per_sample_weights) { const auto in = std::make_shared(input_type, input_shape); if (per_sample_weights) { @@ -86,7 +85,7 @@ TEST_P(ReferenceEmbeddingBagPackedSumLayerTest, CompareWithRefs) { template inline std::shared_ptr CreateConstant(const std::vector>& val, - const ov::element::Type& element_type) { + const ov::element::Type& element_type) { if (val.size() > 0) { ov::Shape i_shape({val.size(), val[0].size()}); diff --git a/src/plugins/template/tests/functional/op_reference/equal.cpp b/src/plugins/template/tests/functional/op_reference/equal.cpp index 6bed3aa52e5..574cc95c25e 100644 --- a/src/plugins/template/tests/functional/op_reference/equal.cpp +++ b/src/plugins/template/tests/functional/op_reference/equal.cpp @@ -2,9 +2,10 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/equal.hpp" + #include -#include "openvino/op/equal.hpp" #include "comparison.hpp" using namespace ov; @@ -16,43 +17,43 @@ namespace { template std::vector generateComparisonParams(const element::Type& type) { using T = typename element_type_traits::value_type; - std::vector compParams { + std::vector compParams{ // 1D // 2D // 3D // 4D - Builder {} + Builder{} .compType(ComparisonTypes::EQUAL) - .input1({{2, 2}, type, std::vector {0, 12, 23, 0}}) - .input2({{2, 2}, type, std::vector {0, 12, 23, 0}}) - .expected({{2, 2}, element::boolean, std::vector {1, 1, 1, 1}}), - Builder {} + .input1({{2, 2}, type, std::vector{0, 12, 23, 0}}) + .input2({{2, 2}, type, std::vector{0, 12, 23, 0}}) + .expected({{2, 2}, element::boolean, std::vector{1, 1, 1, 1}}), + Builder{} .compType(ComparisonTypes::EQUAL) - .input1({{2, 3}, type, std::vector {0, 6, 45, 1, 21, 21}}) - .input2({{2, 3}, type, std::vector {1, 18, 23, 1, 19, 21}}) - .expected({{2, 3}, element::boolean, std::vector {0, 0, 0, 1, 0, 1}}), - Builder {} + .input1({{2, 3}, type, std::vector{0, 6, 45, 1, 21, 21}}) + .input2({{2, 3}, type, std::vector{1, 18, 23, 1, 19, 21}}) + .expected({{2, 3}, element::boolean, std::vector{0, 0, 0, 1, 0, 1}}), + Builder{} .compType(ComparisonTypes::EQUAL) - .input1({{1}, type, std::vector {53}}) - .input2({{1}, type, std::vector {53}}) - .expected({{1}, element::boolean, std::vector {1}}), - Builder {} + .input1({{1}, type, std::vector{53}}) + .input2({{1}, type, std::vector{53}}) + .expected({{1}, element::boolean, std::vector{1}}), + Builder{} .compType(ComparisonTypes::EQUAL) - .input1({{2, 4}, type, std::vector {0, 12, 23, 0, 1, 5, 11, 8}}) - .input2({{2, 4}, type, std::vector {0, 12, 23, 0, 10, 5, 11, 8}}) - .expected({{2, 4}, element::boolean, std::vector {1, 1, 1, 1, 0, 1, 1, 1}}), - Builder {} + .input1({{2, 4}, type, std::vector{0, 12, 23, 0, 1, 5, 11, 8}}) + .input2({{2, 4}, type, std::vector{0, 12, 23, 0, 10, 5, 11, 8}}) + .expected({{2, 4}, element::boolean, std::vector{1, 1, 1, 1, 0, 1, 1, 1}}), + Builder{} .compType(ComparisonTypes::EQUAL) - .input1({{3, 1, 2}, type, std::vector {2, 1, 4, 1, 3, 1}}) - .input2({{1, 2, 1}, type, std::vector {1, 1}}) - .expected({{3, 2, 2}, element::boolean, std::vector {0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1}}), - Builder {} + .input1({{3, 1, 2}, type, std::vector{2, 1, 4, 1, 3, 1}}) + .input2({{1, 2, 1}, type, std::vector{1, 1}}) + .expected({{3, 2, 2}, element::boolean, std::vector{0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1}}), + Builder{} .compType(ComparisonTypes::EQUAL) - .input1({{2, 1, 2, 1}, type, std::vector {2, 1, 4, 1}}) - .input2({{1, 2, 1}, type, std::vector {1, 1}}) - .expected({{2, 1, 2, 1}, element::boolean, std::vector {0, 1, 0, 1}})}; + .input1({{2, 1, 2, 1}, type, std::vector{2, 1, 4, 1}}) + .input2({{1, 2, 1}, type, std::vector{1, 1}}) + .expected({{2, 1, 2, 1}, element::boolean, std::vector{0, 1, 0, 1}})}; return compParams; } std::vector generateComparisonCombinedParams() { - const std::vector> compTypeParams { + const std::vector> compTypeParams{ generateComparisonParams(element::f32), generateComparisonParams(element::f16), generateComparisonParams(element::i32), @@ -66,38 +67,47 @@ std::vector generateComparisonCombinedParams() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_Comparison_With_Hardcoded_Refs, ReferenceComparisonLayerTest, ::testing::ValuesIn(generateComparisonCombinedParams()), +INSTANTIATE_TEST_SUITE_P(smoke_Comparison_With_Hardcoded_Refs, + ReferenceComparisonLayerTest, + ::testing::ValuesIn(generateComparisonCombinedParams()), ReferenceComparisonLayerTest::getTestCaseName); template std::vector generateNumericParams(const element::Type& type) { using T = typename element_type_traits::value_type; - std::vector compParams { - Builder {} + std::vector compParams{ + Builder{} .compType(ComparisonTypes::EQUAL) - .input1({{4}, type, std::vector {-2.5f, 25.5f, 2.25f, NAN}}) - .input2({{4}, type, std::vector {10.0f, 5.0f, 2.25f, 10.0f}}) - .expected({{4}, element::boolean, std::vector {0, 0, 1, 0, }}), - Builder {} + .input1({{4}, type, std::vector{-2.5f, 25.5f, 2.25f, NAN}}) + .input2({{4}, type, std::vector{10.0f, 5.0f, 2.25f, 10.0f}}) + .expected({{4}, + element::boolean, + std::vector{ + 0, + 0, + 1, + 0, + }}), + Builder{} .compType(ComparisonTypes::EQUAL) - .input1({{2, 3}, type, std::vector {0.0f, NAN, NAN, 1.0f, 21.0f, -INFINITY}}) - .input2({{2, 3}, type, std::vector {1.0f, NAN, 23.0f, 1.0f, 19.0f, 21.0f}}) - .expected({{2, 3}, element::boolean, std::vector {0, 0, 0, 1, 0, 0}}), - Builder {} + .input1({{2, 3}, type, std::vector{0.0f, NAN, NAN, 1.0f, 21.0f, -INFINITY}}) + .input2({{2, 3}, type, std::vector{1.0f, NAN, 23.0f, 1.0f, 19.0f, 21.0f}}) + .expected({{2, 3}, element::boolean, std::vector{0, 0, 0, 1, 0, 0}}), + Builder{} .compType(ComparisonTypes::EQUAL) - .input1({{1}, type, std::vector {INFINITY}}) - .input2({{1}, type, std::vector {INFINITY}}) - .expected({{1}, element::boolean, std::vector {1}}), - Builder {} + .input1({{1}, type, std::vector{INFINITY}}) + .input2({{1}, type, std::vector{INFINITY}}) + .expected({{1}, element::boolean, std::vector{1}}), + Builder{} .compType(ComparisonTypes::EQUAL) - .input1({{5}, type, std::vector {-2.5f, 25.5f, 2.25f, INFINITY, 6.0f}}) - .input2({{5}, type, std::vector {10.0f, 5.0f, 2.25f, 10.0f, -INFINITY}}) - .expected({{5}, element::boolean, std::vector {0, 0, 1, 0, 0}})}; + .input1({{5}, type, std::vector{-2.5f, 25.5f, 2.25f, INFINITY, 6.0f}}) + .input2({{5}, type, std::vector{10.0f, 5.0f, 2.25f, 10.0f, -INFINITY}}) + .expected({{5}, element::boolean, std::vector{0, 0, 1, 0, 0}})}; return compParams; } std::vector generateNumericCombinedParams() { - const std::vector> compTypeParams { + const std::vector> compTypeParams{ generateNumericParams(element::f16), generateNumericParams(element::f32)}; std::vector combinedParams; @@ -108,8 +118,10 @@ std::vector generateNumericCombinedParams() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_Numeric_With_Hardcoded_Refs, ReferenceComparisonLayerTest, ::testing::ValuesIn(generateNumericCombinedParams()), +INSTANTIATE_TEST_SUITE_P(smoke_Numeric_With_Hardcoded_Refs, + ReferenceComparisonLayerTest, + ::testing::ValuesIn(generateNumericCombinedParams()), ReferenceComparisonLayerTest::getTestCaseName); -} // namespace -} // namespace ComparisonOpsRefTestDefinitions -} // namespace reference_tests +} // namespace +} // namespace ComparisonOpsRefTestDefinitions +} // namespace reference_tests diff --git a/src/plugins/template/tests/functional/op_reference/erf.cpp b/src/plugins/template/tests/functional/op_reference/erf.cpp index 9f658d78573..a386abfb2fb 100644 --- a/src/plugins/template/tests/functional/op_reference/erf.cpp +++ b/src/plugins/template/tests/functional/op_reference/erf.cpp @@ -2,11 +2,12 @@ // SPDX-License-Identifier: Apache-2.0 // -#include -#include "functional_test_utils/skip_tests_config.hpp" - #include "openvino/op/erf.hpp" + +#include + #include "base_reference_test.hpp" +#include "functional_test_utils/skip_tests_config.hpp" using namespace reference_tests; using namespace ov; @@ -14,7 +15,10 @@ using namespace ov; struct ErfParams { template ErfParams(const ov::PartialShape& shape, const ov::element::Type& iType, const std::vector& iValues) - : pshape(shape), inType(iType), outType(iType), inputData(CreateTensor(iType, iValues)) { + : pshape(shape), + inType(iType), + outType(iType), + inputData(CreateTensor(iType, iValues)) { std::vector oValues; std::vector output; for (auto element : iValues) @@ -60,11 +64,12 @@ public: } private: - static std::shared_ptr CreateFunction(const PartialShape& input_shape, const element::Type& input_type, - const element::Type& expected_output_type) { + static std::shared_ptr CreateFunction(const PartialShape& input_shape, + const element::Type& input_type, + const element::Type& expected_output_type) { const auto in = std::make_shared(input_type, input_shape); const auto erf = std::make_shared(in); - return std::make_shared(NodeVector {erf}, ParameterVector {in}); + return std::make_shared(NodeVector{erf}, ParameterVector{in}); } }; @@ -73,17 +78,37 @@ TEST_P(ReferenceErfLayerTest, CompareWithRefs) { } INSTANTIATE_TEST_SUITE_P( - smoke_Erf_With_Hardcoded_Refs, ReferenceErfLayerTest, - ::testing::Values(ErfParams(ov::PartialShape {2, 5}, ov::element::f32, - std::vector {-INFINITY, -4.0f, -3.0f, -2.0f, -1.0f, 0.0f, 1.0f, 2.0f, 3.0f, INFINITY}), - ErfParams(ov::PartialShape {2, 5}, ov::element::f16, - std::vector {-INFINITY, -4.0f, -3.0f, -2.0f, -1.0f, 0.0f, 1.0f, 2.0f, 3.0f, INFINITY}), - ErfParams(ov::PartialShape {2, 3}, ov::element::i32, - std::vector {std::numeric_limits::min(), -2, -1, 1, 2, std::numeric_limits::max()}), - ErfParams(ov::PartialShape {2, 3}, ov::element::u32, - std::vector {std::numeric_limits::min(), 0, 1, 2, 3, std::numeric_limits::max()}), - ErfParams(ov::PartialShape {2, 3}, ov::element::i64, - std::vector {std::numeric_limits::min(), -2, -1, 1, 2, std::numeric_limits::max()}), - ErfParams(ov::PartialShape {2, 3}, ov::element::u64, - std::vector {std::numeric_limits::min(), 0, 1, 2, 3, std::numeric_limits::max()})), + smoke_Erf_With_Hardcoded_Refs, + ReferenceErfLayerTest, + ::testing::Values( + ErfParams(ov::PartialShape{2, 5}, + ov::element::f32, + std::vector{-INFINITY, -4.0f, -3.0f, -2.0f, -1.0f, 0.0f, 1.0f, 2.0f, 3.0f, INFINITY}), + ErfParams(ov::PartialShape{2, 5}, + ov::element::f16, + std::vector{-INFINITY, -4.0f, -3.0f, -2.0f, -1.0f, 0.0f, 1.0f, 2.0f, 3.0f, INFINITY}), + ErfParams(ov::PartialShape{2, 3}, + ov::element::i32, + std::vector< + int32_t>{std::numeric_limits::min(), -2, -1, 1, 2, std::numeric_limits::max()}), + ErfParams(ov::PartialShape{2, 3}, + ov::element::u32, + std::vector{std::numeric_limits::min(), + 0, + 1, + 2, + 3, + std::numeric_limits::max()}), + ErfParams(ov::PartialShape{2, 3}, + ov::element::i64, + std::vector< + int64_t>{std::numeric_limits::min(), -2, -1, 1, 2, std::numeric_limits::max()}), + ErfParams(ov::PartialShape{2, 3}, + ov::element::u64, + std::vector{std::numeric_limits::min(), + 0, + 1, + 2, + 3, + std::numeric_limits::max()})), ReferenceErfLayerTest::getTestCaseName); diff --git a/src/plugins/template/tests/functional/op_reference/exp.cpp b/src/plugins/template/tests/functional/op_reference/exp.cpp index 9b15a9cf970..4e06b1dc2a8 100644 --- a/src/plugins/template/tests/functional/op_reference/exp.cpp +++ b/src/plugins/template/tests/functional/op_reference/exp.cpp @@ -2,11 +2,11 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/exp.hpp" + #include -#include "openvino/op/exp.hpp" #include "base_reference_test.hpp" - #include "functional_test_utils/skip_tests_config.hpp" using namespace reference_tests; @@ -16,7 +16,10 @@ using namespace InferenceEngine; namespace { struct ExpParams { template - ExpParams(const ov::PartialShape& shape, const ov::element::Type& iType, const std::vector& iValues, const std::vector& oValues) + ExpParams(const ov::PartialShape& shape, + const ov::element::Type& iType, + const std::vector& iValues, + const std::vector& oValues) : pshape(shape), inType(iType), outType(iType), @@ -49,11 +52,12 @@ public: } private: - static std::shared_ptr CreateFunction(const PartialShape& input_shape, const element::Type& input_type, - const element::Type& expected_output_type) { + static std::shared_ptr CreateFunction(const PartialShape& input_shape, + const element::Type& input_type, + const element::Type& expected_output_type) { const auto in = std::make_shared(input_type, input_shape); const auto Exp = std::make_shared(in); - return std::make_shared(NodeVector {Exp}, ParameterVector {in}); + return std::make_shared(NodeVector{Exp}, ParameterVector{in}); } }; @@ -75,12 +79,13 @@ public: } private: - static std::shared_ptr CreateFunction(const PartialShape& input_shape, const element::Type& input_type, - const element::Type& expected_output_type) { + static std::shared_ptr CreateFunction(const PartialShape& input_shape, + const element::Type& input_type, + const element::Type& expected_output_type) { const auto in = std::make_shared(input_type, input_shape); const auto Exp = std::make_shared(in); const auto ExpInPlace = std::make_shared(Exp); - return std::make_shared(NodeVector {ExpInPlace}, ParameterVector {in}); + return std::make_shared(NodeVector{ExpInPlace}, ParameterVector{in}); } }; @@ -96,16 +101,12 @@ template std::vector generateExpFloatParams() { using T = typename element_type_traits::value_type; - std::vector expParams { - ExpParams(ov::PartialShape {8}, - IN_ET, - std::vector{-4, -3, -2, -1, 0, 1, 2, 3}, - std::vector{expf(-4), expf(-3), expf(-2), expf(-1), expf(0), expf(1), expf(2), expf(3)}), - ExpParams(ov::PartialShape {1}, - IN_ET, - std::vector{13}, - std::vector{expf(13)}) - }; + std::vector expParams{ + ExpParams(ov::PartialShape{8}, + IN_ET, + std::vector{-4, -3, -2, -1, 0, 1, 2, 3}, + std::vector{expf(-4), expf(-3), expf(-2), expf(-1), expf(0), expf(1), expf(2), expf(3)}), + ExpParams(ov::PartialShape{1}, IN_ET, std::vector{13}, std::vector{expf(13)})}; return expParams; } @@ -113,17 +114,19 @@ template std::vector generateExpIntParams() { using T = typename element_type_traits::value_type; - std::vector expParams { - ExpParams(ov::PartialShape {8}, - IN_ET, - std::vector{-4, -3, -2, -1, 0, 1, 2, 3}, - std::vector{static_cast(expf(-4)), static_cast(expf(-3)), static_cast(expf(-2)), static_cast(expf(-1)), - static_cast(expf(0)), static_cast(expf(1)), static_cast(expf(2)), static_cast(expf(3))}), - ExpParams(ov::PartialShape {1}, - IN_ET, - std::vector{13}, - std::vector{static_cast(expf(13))}) - }; + std::vector expParams{ + ExpParams(ov::PartialShape{8}, + IN_ET, + std::vector{-4, -3, -2, -1, 0, 1, 2, 3}, + std::vector{static_cast(expf(-4)), + static_cast(expf(-3)), + static_cast(expf(-2)), + static_cast(expf(-1)), + static_cast(expf(0)), + static_cast(expf(1)), + static_cast(expf(2)), + static_cast(expf(3))}), + ExpParams(ov::PartialShape{1}, IN_ET, std::vector{13}, std::vector{static_cast(expf(13))})}; return expParams; } @@ -131,17 +134,19 @@ template std::vector generateExpUintParams() { using T = typename element_type_traits::value_type; - std::vector expParams { - ExpParams(ov::PartialShape {8}, - IN_ET, - std::vector{0, 1, 2, 3, 4, 5, 10, 100}, - std::vector{static_cast(expf(0)), static_cast(expf(1)), static_cast(expf(2)), static_cast(expf(3)), - static_cast(expf(4)), static_cast(expf(5)), static_cast(expf(10)), static_cast(expf(100))}), - ExpParams(ov::PartialShape {1}, - IN_ET, - std::vector{13}, - std::vector{static_cast(expf(13))}) - }; + std::vector expParams{ + ExpParams(ov::PartialShape{8}, + IN_ET, + std::vector{0, 1, 2, 3, 4, 5, 10, 100}, + std::vector{static_cast(expf(0)), + static_cast(expf(1)), + static_cast(expf(2)), + static_cast(expf(3)), + static_cast(expf(4)), + static_cast(expf(5)), + static_cast(expf(10)), + static_cast(expf(100))}), + ExpParams(ov::PartialShape{1}, IN_ET, std::vector{13}, std::vector{static_cast(expf(13))})}; return expParams; } @@ -149,22 +154,16 @@ template std::vector generateExpInPlaceFloatParams() { using T = typename element_type_traits::value_type; - std::vector expParams { - ExpParams(ov::PartialShape {2}, - IN_ET, - std::vector{1, 3}, - std::vector{expf(expf(1)), expf(expf(3))}) - }; + std::vector expParams{ + ExpParams(ov::PartialShape{2}, IN_ET, std::vector{1, 3}, std::vector{expf(expf(1)), expf(expf(3))})}; return expParams; } std::vector generateExpCombinedParams() { - const std::vector> expTypeParams { - generateExpFloatParams(), - generateExpFloatParams(), - generateExpIntParams(), - generateExpIntParams() - }; + const std::vector> expTypeParams{generateExpFloatParams(), + generateExpFloatParams(), + generateExpIntParams(), + generateExpIntParams()}; std::vector combinedParams; for (const auto& params : expTypeParams) { @@ -174,10 +173,8 @@ std::vector generateExpCombinedParams() { } std::vector generateExpInPlaceCombinedParams() { - const std::vector> expTypeParams { - generateExpInPlaceFloatParams(), - generateExpInPlaceFloatParams() - }; + const std::vector> expTypeParams{generateExpInPlaceFloatParams(), + generateExpInPlaceFloatParams()}; std::vector combinedParams; for (const auto& params : expTypeParams) { @@ -186,10 +183,14 @@ std::vector generateExpInPlaceCombinedParams() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_Exp_With_Hardcoded_Refs, ReferenceExpLayerTest, - testing::ValuesIn(generateExpCombinedParams()), ReferenceExpLayerTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_Exp_With_Hardcoded_Refs, + ReferenceExpLayerTest, + testing::ValuesIn(generateExpCombinedParams()), + ReferenceExpLayerTest::getTestCaseName); -INSTANTIATE_TEST_SUITE_P(smoke_Exp_In_Place_With_Hardcoded_Refs, ReferenceExpInPlaceLayerTest, - testing::ValuesIn(generateExpInPlaceCombinedParams()), ReferenceExpInPlaceLayerTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_Exp_In_Place_With_Hardcoded_Refs, + ReferenceExpInPlaceLayerTest, + testing::ValuesIn(generateExpInPlaceCombinedParams()), + ReferenceExpInPlaceLayerTest::getTestCaseName); -} // namespace +} // namespace diff --git a/src/plugins/template/tests/functional/op_reference/experimental_detectron_detection_output.cpp b/src/plugins/template/tests/functional/op_reference/experimental_detectron_detection_output.cpp index f602aed2f02..c1c719babd8 100644 --- a/src/plugins/template/tests/functional/op_reference/experimental_detectron_detection_output.cpp +++ b/src/plugins/template/tests/functional/op_reference/experimental_detectron_detection_output.cpp @@ -2,9 +2,10 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/experimental_detectron_detection_output.hpp" + #include -#include "openvino/op/experimental_detectron_detection_output.hpp" #include "base_reference_test.hpp" using namespace reference_tests; @@ -18,9 +19,13 @@ struct ExperimentalDOParams { ExperimentalDOParams(const Attrs& attrs, const size_t num_rois, const element::Type& iType, - const std::vector& roisValues, const std::vector& deltasValues, - const std::vector& scoresValues, const std::vector& imageSizeInfoValues, - const std::vector& refBoxesValues, const std::vector& refClassesValues, const std::vector& refScoresValues, + const std::vector& roisValues, + const std::vector& deltasValues, + const std::vector& scoresValues, + const std::vector& imageSizeInfoValues, + const std::vector& refBoxesValues, + const std::vector& refClassesValues, + const std::vector& refScoresValues, const std::string& testcaseName = "") : attrs(attrs), inType(iType), @@ -33,11 +38,11 @@ struct ExperimentalDOParams { refClassesData(CreateTensor(ov::element::i32, refClassesValues)), refScoresData(CreateTensor(iType, refScoresValues)), testcaseName(testcaseName) { - roisShape = Shape{num_rois, 4}; - deltasShape = Shape{num_rois, static_cast(attrs.num_classes * 4)}; - scoresShape = Shape{num_rois, static_cast(attrs.num_classes)}; - imageSizeInfoShape = Shape{1, 3}; - } + roisShape = Shape{num_rois, 4}; + deltasShape = Shape{num_rois, static_cast(attrs.num_classes * 4)}; + scoresShape = Shape{num_rois, static_cast(attrs.num_classes)}; + imageSizeInfoShape = Shape{1, 3}; + } Attrs attrs; PartialShape roisShape; @@ -56,7 +61,8 @@ struct ExperimentalDOParams { std::string testcaseName; }; -class ReferenceExperimentalDOLayerTest : public testing::TestWithParam, public CommonReferenceTest { +class ReferenceExperimentalDOLayerTest : public testing::TestWithParam, + public CommonReferenceTest { public: void SetUp() override { auto params = GetParam(); @@ -84,12 +90,9 @@ private: const auto deltas = std::make_shared(params.inType, params.deltasShape); const auto scores = std::make_shared(params.inType, params.scoresShape); const auto im_info = std::make_shared(params.inType, params.imageSizeInfoShape); - const auto ExperimentalDO = std::make_shared(rois, - deltas, - scores, - im_info, - params.attrs); - return std::make_shared(ExperimentalDO->outputs(), ParameterVector {rois, deltas, scores, im_info}); + const auto ExperimentalDO = + std::make_shared(rois, deltas, scores, im_info, params.attrs); + return std::make_shared(ExperimentalDO->outputs(), ParameterVector{rois, deltas, scores, im_info}); } }; @@ -101,68 +104,71 @@ template std::vector generateExperimentalDOFloatParams() { using T = typename element_type_traits::value_type; - std::vector experimentalDOParams { - ExperimentalDOParams(Attrs{0.01000000074505806f, // score_threshold - 0.2f, // nms_threshold - 2.0f, // max_delta_log_wh - 2, // num_classes - 500, // post_nms_count - 5, // max_detections_per_image - true, // class_agnostic_box_regression - {10.0f, 10.0f, 5.0f, 5.0f} // deltas_weights - }, - 16, - IN_ET, - std::vector{1.0f, 1.0f, 10.0f, 10.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, 4.0f, 1.0f, 8.0f, 5.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f}, - std::vector{5.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, 1.0f, 4.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 8.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, + std::vector experimentalDOParams{ + ExperimentalDOParams( + Attrs{ + 0.01000000074505806f, // score_threshold + 0.2f, // nms_threshold + 2.0f, // max_delta_log_wh + 2, // num_classes + 500, // post_nms_count + 5, // max_detections_per_image + true, // class_agnostic_box_regression + {10.0f, 10.0f, 5.0f, 5.0f} // deltas_weights + }, + 16, + IN_ET, + std::vector{1.0f, 1.0f, 10.0f, 10.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, + 1.0f, 1.0f, 1.0f, 4.0f, 1.0f, 8.0f, 5.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, + 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, + 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, + 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f}, + std::vector{ + 5.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, + 1.0f, 1.0f, 1.0f, 1.0f, 4.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, + 1.0f, 1.0f, 8.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, + 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f}, - std::vector{1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f}, - std::vector{1.0f, 1.0f, 1.0f}, - std::vector{0.8929862f, - 0.892986297607421875, - 12.10701370239257812, - 12.10701370239257812, - 0.0f, - 0.0f, - 0.0f, - 0.0f, - 0.0f, - 0.0f, - 0.0f, - 0.0f, - 0.0f, - 0.0f, - 0.0f, - 0.0f, - 0.0f, - 0.0f, - 0.0f, - 0.0}, - std::vector{1, 0, 0, 0, 0}, - std::vector{1.0f, 0.0f, 0.0f, 0.0f, 0.0f}), + 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, + 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, + 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, + 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f}, + std::vector{1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, + 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, + 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f}, + std::vector{1.0f, 1.0f, 1.0f}, + std::vector{0.8929862f, + 0.892986297607421875, + 12.10701370239257812, + 12.10701370239257812, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0}, + std::vector{1, 0, 0, 0, 0}, + std::vector{1.0f, 0.0f, 0.0f, 0.0f, 0.0f}), }; return experimentalDOParams; } std::vector generateExperimentalDOCombinedParams() { - const std::vector> ExperimentalDOTypeParams { + const std::vector> ExperimentalDOTypeParams{ generateExperimentalDOFloatParams(), generateExperimentalDOFloatParams(), generateExperimentalDOFloatParams(), - }; + }; std::vector combinedParams; for (const auto& params : ExperimentalDOTypeParams) { @@ -171,6 +177,8 @@ std::vector generateExperimentalDOCombinedParams() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_ExperimentalDetectronDetectionOutput_With_Hardcoded_Refs, ReferenceExperimentalDOLayerTest, - testing::ValuesIn(generateExperimentalDOCombinedParams()), ReferenceExperimentalDOLayerTest::getTestCaseName); -} // namespace +INSTANTIATE_TEST_SUITE_P(smoke_ExperimentalDetectronDetectionOutput_With_Hardcoded_Refs, + ReferenceExperimentalDOLayerTest, + testing::ValuesIn(generateExperimentalDOCombinedParams()), + ReferenceExperimentalDOLayerTest::getTestCaseName); +} // namespace diff --git a/src/plugins/template/tests/functional/op_reference/experimental_detectron_detection_prior_grid.cpp b/src/plugins/template/tests/functional/op_reference/experimental_detectron_detection_prior_grid.cpp index a82d111e6bb..abca08c733f 100644 --- a/src/plugins/template/tests/functional/op_reference/experimental_detectron_detection_prior_grid.cpp +++ b/src/plugins/template/tests/functional/op_reference/experimental_detectron_detection_prior_grid.cpp @@ -4,8 +4,8 @@ #include -#include "openvino/op/experimental_detectron_prior_grid_generator.hpp" #include "base_reference_test.hpp" +#include "openvino/op/experimental_detectron_prior_grid_generator.hpp" using namespace reference_tests; using namespace ov; @@ -16,14 +16,14 @@ namespace { struct ExperimentalPGGParams { template ExperimentalPGGParams(const Attrs& attrs, - const PartialShape& priorsShape, - const PartialShape& featureMapShape, - const PartialShape& imageSizeInfoShape, - const Shape& outRefShape, - const element::Type& iType, - const std::vector& priorsValues, - const std::vector& refValues, - const std::string& testcaseName = "") + const PartialShape& priorsShape, + const PartialShape& featureMapShape, + const PartialShape& imageSizeInfoShape, + const Shape& outRefShape, + const element::Type& iType, + const std::vector& priorsValues, + const std::vector& refValues, + const std::string& testcaseName = "") : attrs(attrs), priorsShape(priorsShape), featureMapShape(featureMapShape), @@ -34,19 +34,19 @@ struct ExperimentalPGGParams { priorsData(CreateTensor(iType, priorsValues)), refData(CreateTensor(outRefShape, iType, refValues)), testcaseName(testcaseName) { - std::vector featureMapValues(shape_size(featureMapShape.get_shape())); - std::iota(featureMapValues.begin(), featureMapValues.end(), 0.f); - featureMapData = CreateTensor(iType, featureMapValues); + std::vector featureMapValues(shape_size(featureMapShape.get_shape())); + std::iota(featureMapValues.begin(), featureMapValues.end(), 0.f); + featureMapData = CreateTensor(iType, featureMapValues); - std::vector imageSizeInfoValues(shape_size(imageSizeInfoShape.get_shape())); - std::iota(imageSizeInfoValues.begin(), imageSizeInfoValues.end(), 0.f); - imageSizeInfoData = CreateTensor(iType, imageSizeInfoValues); + std::vector imageSizeInfoValues(shape_size(imageSizeInfoShape.get_shape())); + std::iota(imageSizeInfoValues.begin(), imageSizeInfoValues.end(), 0.f); + imageSizeInfoData = CreateTensor(iType, imageSizeInfoValues); - if (shape_size(outRefShape) > refValues.size()) - actualComparisonSize = refValues.size(); - else - actualComparisonSize = 0; - } + if (shape_size(outRefShape) > refValues.size()) + actualComparisonSize = refValues.size(); + else + actualComparisonSize = 0; + } Attrs attrs; PartialShape priorsShape; @@ -63,7 +63,8 @@ struct ExperimentalPGGParams { std::string testcaseName; }; -class ReferenceExperimentalPGGLayerTest : public testing::TestWithParam, public CommonReferenceTest { +class ReferenceExperimentalPGGLayerTest : public testing::TestWithParam, + public CommonReferenceTest { public: void SetUp() override { auto params = GetParam(); @@ -98,10 +99,10 @@ private: const auto featureMap = std::make_shared(params.inType, params.featureMapShape); const auto im_info = std::make_shared(params.inType, params.imageSizeInfoShape); const auto ExperimentalPGG = std::make_shared(priors, - featureMap, - im_info, - params.attrs); - return std::make_shared(NodeVector {ExperimentalPGG}, ParameterVector {priors, featureMap, im_info}); + featureMap, + im_info, + params.attrs); + return std::make_shared(NodeVector{ExperimentalPGG}, ParameterVector{priors, featureMap, im_info}); } }; @@ -113,106 +114,119 @@ template std::vector generateExperimentalPGGFloatParams() { using T = typename element_type_traits::value_type; - std::vector experimentalPGGParams { - ExperimentalPGGParams(Attrs{true, 0, 0, 4.0f, 4.0f}, - {3, 4}, - {1, 16, 4, 5}, - {1, 3, 100, 200}, - {60, 4}, - IN_ET, - std::vector{-24.5, -12.5, 24.5, 12.5, -16.5, -16.5, 16.5, 16.5, -12.5, -24.5, 12.5, 24.5}, - std::vector{-22.5, -10.5, 26.5, 14.5, -14.5, -14.5, 18.5, 18.5, -10.5, -22.5, 14.5, 26.5, -18.5, -10.5, 30.5, 14.5, - -10.5, -14.5, 22.5, 18.5, -6.5, -22.5, 18.5, 26.5, -14.5, -10.5, 34.5, 14.5, -6.5, -14.5, 26.5, 18.5, - -2.5, -22.5, 22.5, 26.5, -10.5, -10.5, 38.5, 14.5, -2.5, -14.5, 30.5, 18.5, 1.5, -22.5, 26.5, 26.5, - -6.5, -10.5, 42.5, 14.5, 1.5, -14.5, 34.5, 18.5, 5.5, -22.5, 30.5, 26.5, -22.5, -6.5, 26.5, 18.5, - -14.5, -10.5, 18.5, 22.5, -10.5, -18.5, 14.5, 30.5, -18.5, -6.5, 30.5, 18.5, -10.5, -10.5, 22.5, 22.5, - -6.5, -18.5, 18.5, 30.5, -14.5, -6.5, 34.5, 18.5, -6.5, -10.5, 26.5, 22.5, -2.5, -18.5, 22.5, 30.5, - -10.5, -6.5, 38.5, 18.5, -2.5, -10.5, 30.5, 22.5, 1.5, -18.5, 26.5, 30.5, -6.5, -6.5, 42.5, 18.5, - 1.5, -10.5, 34.5, 22.5, 5.5, -18.5, 30.5, 30.5, -22.5, -2.5, 26.5, 22.5, -14.5, -6.5, 18.5, 26.5, - -10.5, -14.5, 14.5, 34.5, -18.5, -2.5, 30.5, 22.5, -10.5, -6.5, 22.5, 26.5, -6.5, -14.5, 18.5, 34.5, - -14.5, -2.5, 34.5, 22.5, -6.5, -6.5, 26.5, 26.5, -2.5, -14.5, 22.5, 34.5, -10.5, -2.5, 38.5, 22.5, - -2.5, -6.5, 30.5, 26.5, 1.5, -14.5, 26.5, 34.5, -6.5, -2.5, 42.5, 22.5, 1.5, -6.5, 34.5, 26.5, - 5.5, -14.5, 30.5, 34.5, -22.5, 1.5, 26.5, 26.5, -14.5, -2.5, 18.5, 30.5, -10.5, -10.5, 14.5, 38.5, - -18.5, 1.5, 30.5, 26.5, -10.5, -2.5, 22.5, 30.5, -6.5, -10.5, 18.5, 38.5, -14.5, 1.5, 34.5, 26.5, - -6.5, -2.5, 26.5, 30.5, -2.5, -10.5, 22.5, 38.5, -10.5, 1.5, 38.5, 26.5, -2.5, -2.5, 30.5, 30.5, - 1.5, -10.5, 26.5, 38.5, -6.5, 1.5, 42.5, 26.5, 1.5, -2.5, 34.5, 30.5, 5.5, -10.5, 30.5, 38.5}), - ExperimentalPGGParams(Attrs{false, 0, 0, 8.0f, 8.0f}, - {3, 4}, - {1, 16, 3, 7}, - {1, 3, 100, 200}, - {3, 7, 3, 4}, - IN_ET, - std::vector{-44.5, -24.5, 44.5, 24.5, -32.5, -32.5, 32.5, 32.5, -24.5, -44.5, 24.5, 44.5}, - std::vector{-40.5, -20.5, 48.5, 28.5, -28.5, -28.5, 36.5, 36.5, -20.5, -40.5, 28.5, 48.5, -32.5, -20.5, 56.5, 28.5, - -20.5, -28.5, 44.5, 36.5, -12.5, -40.5, 36.5, 48.5, -24.5, -20.5, 64.5, 28.5, -12.5, -28.5, 52.5, 36.5, - -4.5, -40.5, 44.5, 48.5, -16.5, -20.5, 72.5, 28.5, -4.5, -28.5, 60.5, 36.5, 3.5, -40.5, 52.5, 48.5, - -8.5, -20.5, 80.5, 28.5, 3.5, -28.5, 68.5, 36.5, 11.5, -40.5, 60.5, 48.5, -0.5, -20.5, 88.5, 28.5, - 11.5, -28.5, 76.5, 36.5, 19.5, -40.5, 68.5, 48.5, 7.5, -20.5, 96.5, 28.5, 19.5, -28.5, 84.5, 36.5, - 27.5, -40.5, 76.5, 48.5, -40.5, -12.5, 48.5, 36.5, -28.5, -20.5, 36.5, 44.5, -20.5, -32.5, 28.5, 56.5, - -32.5, -12.5, 56.5, 36.5, -20.5, -20.5, 44.5, 44.5, -12.5, -32.5, 36.5, 56.5, -24.5, -12.5, 64.5, 36.5, - -12.5, -20.5, 52.5, 44.5, -4.5, -32.5, 44.5, 56.5, -16.5, -12.5, 72.5, 36.5, -4.5, -20.5, 60.5, 44.5, - 3.5, -32.5, 52.5, 56.5, -8.5, -12.5, 80.5, 36.5, 3.5, -20.5, 68.5, 44.5, 11.5, -32.5, 60.5, 56.5, - -0.5, -12.5, 88.5, 36.5, 11.5, -20.5, 76.5, 44.5, 19.5, -32.5, 68.5, 56.5, 7.5, -12.5, 96.5, 36.5, - 19.5, -20.5, 84.5, 44.5, 27.5, -32.5, 76.5, 56.5, -40.5, -4.5, 48.5, 44.5, -28.5, -12.5, 36.5, 52.5, - -20.5, -24.5, 28.5, 64.5, -32.5, -4.5, 56.5, 44.5, -20.5, -12.5, 44.5, 52.5, -12.5, -24.5, 36.5, 64.5, - -24.5, -4.5, 64.5, 44.5, -12.5, -12.5, 52.5, 52.5, -4.5, -24.5, 44.5, 64.5, -16.5, -4.5, 72.5, 44.5, - -4.5, -12.5, 60.5, 52.5, 3.5, -24.5, 52.5, 64.5, -8.5, -4.5, 80.5, 44.5, 3.5, -12.5, 68.5, 52.5, - 11.5, -24.5, 60.5, 64.5, -0.5, -4.5, 88.5, 44.5, 11.5, -12.5, 76.5, 52.5, 19.5, -24.5, 68.5, 64.5, - 7.5, -4.5, 96.5, 44.5, 19.5, -12.5, 84.5, 52.5, 27.5, -24.5, 76.5, 64.5}), - ExperimentalPGGParams(Attrs{true, 3, 6, 64.0f, 64.0f}, - {3, 4}, - {1, 16, 100, 100}, - {1, 3, 100, 200}, - {30000, 4}, - IN_ET, - std::vector{-364.5, -184.5, 364.5, 184.5, -256.5, -256.5, 256.5, 256.5, -180.5, -360.5, 180.5, 360.5}, - std::vector{-332.5, -152.5, 396.5, 216.5, -224.5, -224.5, 288.5, 288.5, -148.5, -328.5, 212.5, 392.5, -268.5, -152.5, - 460.5, 216.5, -160.5, -224.5, 352.5, 288.5, -84.5, -328.5, 276.5, 392.5, -204.5, -152.5, 524.5, 216.5, - -96.5, -224.5, 416.5, 288.5, -20.5, -328.5, 340.5, 392.5, -140.5, -152.5, 588.5, 216.5, -32.5, -224.5, - 480.5, 288.5, 43.5, -328.5, 404.5, 392.5, -76.5, -152.5, 652.5, 216.5, 31.5, -224.5, 544.5, 288.5, - 107.5, -328.5, 468.5, 392.5, -12.5, -152.5, 716.5, 216.5, 95.5, -224.5, 608.5, 288.5, 171.5, -328.5, - 532.5, 392.5, -332.5, -88.5, 396.5, 280.5, -224.5, -160.5, 288.5, 352.5, -148.5, -264.5, 212.5, 456.5, - -268.5, -88.5, 460.5, 280.5, -160.5, -160.5, 352.5, 352.5, -84.5, -264.5, 276.5, 456.5, -204.5, -88.5, - 524.5, 280.5, -96.5, -160.5, 416.5, 352.5, -20.5, -264.5, 340.5, 456.5, -140.5, -88.5, 588.5, 280.5, - -32.5, -160.5, 480.5, 352.5, 43.5, -264.5, 404.5, 456.5, -76.5, -88.5, 652.5, 280.5, 31.5, -160.5, - 544.5, 352.5, 107.5, -264.5, 468.5, 456.5, -12.5, -88.5, 716.5, 280.5, 95.5, -160.5, 608.5, 352.5, - 171.5, -264.5, 532.5, 456.5, -332.5, -24.5, 396.5, 344.5, -224.5, -96.5, 288.5, 416.5, -148.5, -200.5, - 212.5, 520.5, -268.5, -24.5, 460.5, 344.5, -160.5, -96.5, 352.5, 416.5, -84.5, -200.5, 276.5, 520.5, - -204.5, -24.5, 524.5, 344.5, -96.5, -96.5, 416.5, 416.5, -20.5, -200.5, 340.5, 520.5, -140.5, -24.5, - 588.5, 344.5, -32.5, -96.5, 480.5, 416.5, 43.5, -200.5, 404.5, 520.5, -76.5, -24.5, 652.5, 344.5, - 31.5, -96.5, 544.5, 416.5, 107.5, -200.5, 468.5, 520.5, -12.5, -24.5, 716.5, 344.5, 95.5, -96.5, - 608.5, 416.5, 171.5, -200.5, 532.5, 520.5}), - ExperimentalPGGParams(Attrs{false, 5, 3, 32.0f, 32.0f}, - {3, 4}, - {1, 16, 100, 100}, - {1, 3, 100, 200}, - {100, 100, 3, 4}, - IN_ET, - std::vector{-180.5, -88.5, 180.5, 88.5, -128.5, -128.5, 128.5, 128.5, -92.5, -184.5, 92.5, 184.5}, - std::vector{-164.5, -72.5, 196.5, 104.5, -112.5, -112.5, 144.5, 144.5, -76.5, -168.5, 108.5, 200.5, -132.5, -72.5, - 228.5, 104.5, -80.5, -112.5, 176.5, 144.5, -44.5, -168.5, 140.5, 200.5, -100.5, -72.5, 260.5, 104.5, - -48.5, -112.5, 208.5, 144.5, -12.5, -168.5, 172.5, 200.5, -164.5, -40.5, 196.5, 136.5, -112.5, -80.5, - 144.5, 176.5, -76.5, -136.5, 108.5, 232.5, -132.5, -40.5, 228.5, 136.5, -80.5, -80.5, 176.5, 176.5, - -44.5, -136.5, 140.5, 232.5, -100.5, -40.5, 260.5, 136.5, -48.5, -80.5, 208.5, 176.5, -12.5, -136.5, - 172.5, 232.5, -164.5, -8.5, 196.5, 168.5, -112.5, -48.5, 144.5, 208.5, -76.5, -104.5, 108.5, 264.5, - -132.5, -8.5, 228.5, 168.5, -80.5, -48.5, 176.5, 208.5, -44.5, -104.5, 140.5, 264.5, -100.5, -8.5, - 260.5, 168.5, -48.5, -48.5, 208.5, 208.5, -12.5, -104.5, 172.5, 264.5, -164.5, 23.5, 196.5, 200.5, - -112.5, -16.5, 144.5, 240.5, -76.5, -72.5, 108.5, 296.5, -132.5, 23.5, 228.5, 200.5, -80.5, -16.5, - 176.5, 240.5, -44.5, -72.5, 140.5, 296.5, -100.5, 23.5, 260.5, 200.5, -48.5, -16.5, 208.5, 240.5, - -12.5, -72.5, 172.5, 296.5, -164.5, 55.5, 196.5, 232.5, -112.5, 15.5, 144.5, 272.5, -76.5, -40.5, - 108.5, 328.5, -132.5, 55.5, 228.5, 232.5, -80.5, 15.5, 176.5, 272.5, -44.5, -40.5, 140.5, 328.5, - -100.5, 55.5, 260.5, 232.5, -48.5, 15.5, 208.5, 272.5, -12.5, -40.5, 172.5, 328.5}), + std::vector experimentalPGGParams{ + ExperimentalPGGParams( + Attrs{true, 0, 0, 4.0f, 4.0f}, + {3, 4}, + {1, 16, 4, 5}, + {1, 3, 100, 200}, + {60, 4}, + IN_ET, + std::vector{-24.5, -12.5, 24.5, 12.5, -16.5, -16.5, 16.5, 16.5, -12.5, -24.5, 12.5, 24.5}, + std::vector{-22.5, -10.5, 26.5, 14.5, -14.5, -14.5, 18.5, 18.5, -10.5, -22.5, 14.5, 26.5, -18.5, + -10.5, 30.5, 14.5, -10.5, -14.5, 22.5, 18.5, -6.5, -22.5, 18.5, 26.5, -14.5, -10.5, + 34.5, 14.5, -6.5, -14.5, 26.5, 18.5, -2.5, -22.5, 22.5, 26.5, -10.5, -10.5, 38.5, + 14.5, -2.5, -14.5, 30.5, 18.5, 1.5, -22.5, 26.5, 26.5, -6.5, -10.5, 42.5, 14.5, + 1.5, -14.5, 34.5, 18.5, 5.5, -22.5, 30.5, 26.5, -22.5, -6.5, 26.5, 18.5, -14.5, + -10.5, 18.5, 22.5, -10.5, -18.5, 14.5, 30.5, -18.5, -6.5, 30.5, 18.5, -10.5, -10.5, + 22.5, 22.5, -6.5, -18.5, 18.5, 30.5, -14.5, -6.5, 34.5, 18.5, -6.5, -10.5, 26.5, + 22.5, -2.5, -18.5, 22.5, 30.5, -10.5, -6.5, 38.5, 18.5, -2.5, -10.5, 30.5, 22.5, + 1.5, -18.5, 26.5, 30.5, -6.5, -6.5, 42.5, 18.5, 1.5, -10.5, 34.5, 22.5, 5.5, + -18.5, 30.5, 30.5, -22.5, -2.5, 26.5, 22.5, -14.5, -6.5, 18.5, 26.5, -10.5, -14.5, + 14.5, 34.5, -18.5, -2.5, 30.5, 22.5, -10.5, -6.5, 22.5, 26.5, -6.5, -14.5, 18.5, + 34.5, -14.5, -2.5, 34.5, 22.5, -6.5, -6.5, 26.5, 26.5, -2.5, -14.5, 22.5, 34.5, + -10.5, -2.5, 38.5, 22.5, -2.5, -6.5, 30.5, 26.5, 1.5, -14.5, 26.5, 34.5, -6.5, + -2.5, 42.5, 22.5, 1.5, -6.5, 34.5, 26.5, 5.5, -14.5, 30.5, 34.5, -22.5, 1.5, + 26.5, 26.5, -14.5, -2.5, 18.5, 30.5, -10.5, -10.5, 14.5, 38.5, -18.5, 1.5, 30.5, + 26.5, -10.5, -2.5, 22.5, 30.5, -6.5, -10.5, 18.5, 38.5, -14.5, 1.5, 34.5, 26.5, + -6.5, -2.5, 26.5, 30.5, -2.5, -10.5, 22.5, 38.5, -10.5, 1.5, 38.5, 26.5, -2.5, + -2.5, 30.5, 30.5, 1.5, -10.5, 26.5, 38.5, -6.5, 1.5, 42.5, 26.5, 1.5, -2.5, + 34.5, 30.5, 5.5, -10.5, 30.5, 38.5}), + ExperimentalPGGParams( + Attrs{false, 0, 0, 8.0f, 8.0f}, + {3, 4}, + {1, 16, 3, 7}, + {1, 3, 100, 200}, + {3, 7, 3, 4}, + IN_ET, + std::vector{-44.5, -24.5, 44.5, 24.5, -32.5, -32.5, 32.5, 32.5, -24.5, -44.5, 24.5, 44.5}, + std::vector{ + -40.5, -20.5, 48.5, 28.5, -28.5, -28.5, 36.5, 36.5, -20.5, -40.5, 28.5, 48.5, -32.5, -20.5, 56.5, 28.5, + -20.5, -28.5, 44.5, 36.5, -12.5, -40.5, 36.5, 48.5, -24.5, -20.5, 64.5, 28.5, -12.5, -28.5, 52.5, 36.5, + -4.5, -40.5, 44.5, 48.5, -16.5, -20.5, 72.5, 28.5, -4.5, -28.5, 60.5, 36.5, 3.5, -40.5, 52.5, 48.5, + -8.5, -20.5, 80.5, 28.5, 3.5, -28.5, 68.5, 36.5, 11.5, -40.5, 60.5, 48.5, -0.5, -20.5, 88.5, 28.5, + 11.5, -28.5, 76.5, 36.5, 19.5, -40.5, 68.5, 48.5, 7.5, -20.5, 96.5, 28.5, 19.5, -28.5, 84.5, 36.5, + 27.5, -40.5, 76.5, 48.5, -40.5, -12.5, 48.5, 36.5, -28.5, -20.5, 36.5, 44.5, -20.5, -32.5, 28.5, 56.5, + -32.5, -12.5, 56.5, 36.5, -20.5, -20.5, 44.5, 44.5, -12.5, -32.5, 36.5, 56.5, -24.5, -12.5, 64.5, 36.5, + -12.5, -20.5, 52.5, 44.5, -4.5, -32.5, 44.5, 56.5, -16.5, -12.5, 72.5, 36.5, -4.5, -20.5, 60.5, 44.5, + 3.5, -32.5, 52.5, 56.5, -8.5, -12.5, 80.5, 36.5, 3.5, -20.5, 68.5, 44.5, 11.5, -32.5, 60.5, 56.5, + -0.5, -12.5, 88.5, 36.5, 11.5, -20.5, 76.5, 44.5, 19.5, -32.5, 68.5, 56.5, 7.5, -12.5, 96.5, 36.5, + 19.5, -20.5, 84.5, 44.5, 27.5, -32.5, 76.5, 56.5, -40.5, -4.5, 48.5, 44.5, -28.5, -12.5, 36.5, 52.5, + -20.5, -24.5, 28.5, 64.5, -32.5, -4.5, 56.5, 44.5, -20.5, -12.5, 44.5, 52.5, -12.5, -24.5, 36.5, 64.5, + -24.5, -4.5, 64.5, 44.5, -12.5, -12.5, 52.5, 52.5, -4.5, -24.5, 44.5, 64.5, -16.5, -4.5, 72.5, 44.5, + -4.5, -12.5, 60.5, 52.5, 3.5, -24.5, 52.5, 64.5, -8.5, -4.5, 80.5, 44.5, 3.5, -12.5, 68.5, 52.5, + 11.5, -24.5, 60.5, 64.5, -0.5, -4.5, 88.5, 44.5, 11.5, -12.5, 76.5, 52.5, 19.5, -24.5, 68.5, 64.5, + 7.5, -4.5, 96.5, 44.5, 19.5, -12.5, 84.5, 52.5, 27.5, -24.5, 76.5, 64.5}), + ExperimentalPGGParams( + Attrs{true, 3, 6, 64.0f, 64.0f}, + {3, 4}, + {1, 16, 100, 100}, + {1, 3, 100, 200}, + {30000, 4}, + IN_ET, + std::vector{-364.5, -184.5, 364.5, 184.5, -256.5, -256.5, 256.5, 256.5, -180.5, -360.5, 180.5, 360.5}, + std::vector{-332.5, -152.5, 396.5, 216.5, -224.5, -224.5, 288.5, 288.5, -148.5, -328.5, 212.5, 392.5, + -268.5, -152.5, 460.5, 216.5, -160.5, -224.5, 352.5, 288.5, -84.5, -328.5, 276.5, 392.5, + -204.5, -152.5, 524.5, 216.5, -96.5, -224.5, 416.5, 288.5, -20.5, -328.5, 340.5, 392.5, + -140.5, -152.5, 588.5, 216.5, -32.5, -224.5, 480.5, 288.5, 43.5, -328.5, 404.5, 392.5, + -76.5, -152.5, 652.5, 216.5, 31.5, -224.5, 544.5, 288.5, 107.5, -328.5, 468.5, 392.5, + -12.5, -152.5, 716.5, 216.5, 95.5, -224.5, 608.5, 288.5, 171.5, -328.5, 532.5, 392.5, + -332.5, -88.5, 396.5, 280.5, -224.5, -160.5, 288.5, 352.5, -148.5, -264.5, 212.5, 456.5, + -268.5, -88.5, 460.5, 280.5, -160.5, -160.5, 352.5, 352.5, -84.5, -264.5, 276.5, 456.5, + -204.5, -88.5, 524.5, 280.5, -96.5, -160.5, 416.5, 352.5, -20.5, -264.5, 340.5, 456.5, + -140.5, -88.5, 588.5, 280.5, -32.5, -160.5, 480.5, 352.5, 43.5, -264.5, 404.5, 456.5, + -76.5, -88.5, 652.5, 280.5, 31.5, -160.5, 544.5, 352.5, 107.5, -264.5, 468.5, 456.5, + -12.5, -88.5, 716.5, 280.5, 95.5, -160.5, 608.5, 352.5, 171.5, -264.5, 532.5, 456.5, + -332.5, -24.5, 396.5, 344.5, -224.5, -96.5, 288.5, 416.5, -148.5, -200.5, 212.5, 520.5, + -268.5, -24.5, 460.5, 344.5, -160.5, -96.5, 352.5, 416.5, -84.5, -200.5, 276.5, 520.5, + -204.5, -24.5, 524.5, 344.5, -96.5, -96.5, 416.5, 416.5, -20.5, -200.5, 340.5, 520.5, + -140.5, -24.5, 588.5, 344.5, -32.5, -96.5, 480.5, 416.5, 43.5, -200.5, 404.5, 520.5, + -76.5, -24.5, 652.5, 344.5, 31.5, -96.5, 544.5, 416.5, 107.5, -200.5, 468.5, 520.5, + -12.5, -24.5, 716.5, 344.5, 95.5, -96.5, 608.5, 416.5, 171.5, -200.5, 532.5, 520.5}), + ExperimentalPGGParams( + Attrs{false, 5, 3, 32.0f, 32.0f}, + {3, 4}, + {1, 16, 100, 100}, + {1, 3, 100, 200}, + {100, 100, 3, 4}, + IN_ET, + std::vector{-180.5, -88.5, 180.5, 88.5, -128.5, -128.5, 128.5, 128.5, -92.5, -184.5, 92.5, 184.5}, + std::vector{-164.5, -72.5, 196.5, 104.5, -112.5, -112.5, 144.5, 144.5, -76.5, -168.5, 108.5, 200.5, + -132.5, -72.5, 228.5, 104.5, -80.5, -112.5, 176.5, 144.5, -44.5, -168.5, 140.5, 200.5, + -100.5, -72.5, 260.5, 104.5, -48.5, -112.5, 208.5, 144.5, -12.5, -168.5, 172.5, 200.5, + -164.5, -40.5, 196.5, 136.5, -112.5, -80.5, 144.5, 176.5, -76.5, -136.5, 108.5, 232.5, + -132.5, -40.5, 228.5, 136.5, -80.5, -80.5, 176.5, 176.5, -44.5, -136.5, 140.5, 232.5, + -100.5, -40.5, 260.5, 136.5, -48.5, -80.5, 208.5, 176.5, -12.5, -136.5, 172.5, 232.5, + -164.5, -8.5, 196.5, 168.5, -112.5, -48.5, 144.5, 208.5, -76.5, -104.5, 108.5, 264.5, + -132.5, -8.5, 228.5, 168.5, -80.5, -48.5, 176.5, 208.5, -44.5, -104.5, 140.5, 264.5, + -100.5, -8.5, 260.5, 168.5, -48.5, -48.5, 208.5, 208.5, -12.5, -104.5, 172.5, 264.5, + -164.5, 23.5, 196.5, 200.5, -112.5, -16.5, 144.5, 240.5, -76.5, -72.5, 108.5, 296.5, + -132.5, 23.5, 228.5, 200.5, -80.5, -16.5, 176.5, 240.5, -44.5, -72.5, 140.5, 296.5, + -100.5, 23.5, 260.5, 200.5, -48.5, -16.5, 208.5, 240.5, -12.5, -72.5, 172.5, 296.5, + -164.5, 55.5, 196.5, 232.5, -112.5, 15.5, 144.5, 272.5, -76.5, -40.5, 108.5, 328.5, + -132.5, 55.5, 228.5, 232.5, -80.5, 15.5, 176.5, 272.5, -44.5, -40.5, 140.5, 328.5, + -100.5, 55.5, 260.5, 232.5, -48.5, 15.5, 208.5, 272.5, -12.5, -40.5, 172.5, 328.5}), }; return experimentalPGGParams; } std::vector generateExperimentalPGGCombinedParams() { - const std::vector> experimentalPGGTypeParams { + const std::vector> experimentalPGGTypeParams{ generateExperimentalPGGFloatParams(), generateExperimentalPGGFloatParams(), generateExperimentalPGGFloatParams(), generateExperimentalPGGFloatParams(), - }; + }; std::vector combinedParams; for (const auto& params : experimentalPGGTypeParams) { @@ -221,6 +235,8 @@ std::vector generateExperimentalPGGCombinedParams() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_ExperimentalDetectronPriorGridGenerator_With_Hardcoded_Refs, ReferenceExperimentalPGGLayerTest, - testing::ValuesIn(generateExperimentalPGGCombinedParams()), ReferenceExperimentalPGGLayerTest::getTestCaseName); -} // namespace +INSTANTIATE_TEST_SUITE_P(smoke_ExperimentalDetectronPriorGridGenerator_With_Hardcoded_Refs, + ReferenceExperimentalPGGLayerTest, + testing::ValuesIn(generateExperimentalPGGCombinedParams()), + ReferenceExperimentalPGGLayerTest::getTestCaseName); +} // namespace diff --git a/src/plugins/template/tests/functional/op_reference/experimental_detectron_generate_proposals.cpp b/src/plugins/template/tests/functional/op_reference/experimental_detectron_generate_proposals.cpp index 1a3ff42b53e..f0320d7b411 100644 --- a/src/plugins/template/tests/functional/op_reference/experimental_detectron_generate_proposals.cpp +++ b/src/plugins/template/tests/functional/op_reference/experimental_detectron_generate_proposals.cpp @@ -2,9 +2,10 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/experimental_detectron_generate_proposals.hpp" + #include -#include "openvino/op/experimental_detectron_generate_proposals.hpp" #include "base_reference_test.hpp" using namespace reference_tests; @@ -16,11 +17,16 @@ namespace { struct ExperimentalGPParams { template ExperimentalGPParams(const Attrs& attrs, - const size_t number_of_channels, const size_t height, const size_t width, + const size_t number_of_channels, + const size_t height, + const size_t width, const element::Type& iType, - const std::vector& imageSizeInfoValues, const std::vector& anchorsValues, - const std::vector& deltasValues, const std::vector& scoresValues, - const std::vector& refRoisValues, const std::vector& refScoresValues, + const std::vector& imageSizeInfoValues, + const std::vector& anchorsValues, + const std::vector& deltasValues, + const std::vector& scoresValues, + const std::vector& refRoisValues, + const std::vector& refScoresValues, const std::string& testcaseName = "") : attrs(attrs), inType(iType), @@ -32,11 +38,11 @@ struct ExperimentalGPParams { refRoisData(CreateTensor(iType, refRoisValues)), refScoresData(CreateTensor(iType, refScoresValues)), testcaseName(testcaseName) { - imageSizeInfoShape = Shape{3}; - anchorsShape = Shape{height * width * number_of_channels, 4}; - deltasShape = Shape{number_of_channels * 4, height, width}; - scoresShape = Shape{number_of_channels, height, width}; - } + imageSizeInfoShape = Shape{3}; + anchorsShape = Shape{height * width * number_of_channels, 4}; + deltasShape = Shape{number_of_channels * 4, height, width}; + scoresShape = Shape{number_of_channels, height, width}; + } Attrs attrs; PartialShape imageSizeInfoShape; @@ -54,7 +60,8 @@ struct ExperimentalGPParams { std::string testcaseName; }; -class ReferenceExperimentalGPLayerTest : public testing::TestWithParam, public CommonReferenceTest { +class ReferenceExperimentalGPLayerTest : public testing::TestWithParam, + public CommonReferenceTest { public: void SetUp() override { auto params = GetParam(); @@ -82,12 +89,14 @@ private: const auto anchors = std::make_shared(params.inType, params.anchorsShape); const auto deltas = std::make_shared(params.inType, params.deltasShape); const auto scores = std::make_shared(params.inType, params.scoresShape); - const auto ExperimentalGP = std::make_shared(im_info, - anchors, - deltas, - scores, - params.attrs); - return std::make_shared(ExperimentalGP->outputs(), ParameterVector {im_info, anchors, deltas, scores}); + const auto ExperimentalGP = + std::make_shared(im_info, + anchors, + deltas, + scores, + params.attrs); + return std::make_shared(ExperimentalGP->outputs(), + ParameterVector{im_info, anchors, deltas, scores}); } }; @@ -99,104 +108,118 @@ template std::vector generateExperimentalGPFloatParams() { using T = typename element_type_traits::value_type; - std::vector experimentalGPParams { - ExperimentalGPParams(Attrs{0, // min_size - 0.699999988079071, // nms_threshold - 6, // post_nms_count - 1000 // pre_nms_count - }, - 3, - 2, - 6, - IN_ET, - std::vector{1.0f, 1.0f, 1.0f}, - std::vector{1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, + std::vector experimentalGPParams{ + ExperimentalGPParams( + Attrs{ + 0, // min_size + 0.699999988079071, // nms_threshold + 6, // post_nms_count + 1000 // pre_nms_count + }, + 3, + 2, + 6, + IN_ET, + std::vector{1.0f, 1.0f, 1.0f}, + std::vector{ + 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, + 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, + 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, + 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, + 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, + 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, + 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, + 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f}, - std::vector{1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, + 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f}, + std::vector{ + 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, + 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, + 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, + 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, + 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, + 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, + 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, + 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f}, - std::vector{5.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 4.0f, 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 8.0f, 1.0f}, - std::vector{0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, - 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f}, - std::vector{8.0f, 5.0f, 4.0f, 1.0f, 1.0f, 1.0f}, - "eval"), - ExperimentalGPParams(Attrs{0, // min_size - 0.699999988079071, // nms_threshold - 6, // post_nms_count - 1000 // pre_nms_count - }, - 3, - 2, - 6, - IN_ET, - std::vector{150.0, 150.0, 1.0}, - std::vector{12.0, 68.0, 102.0, 123.0, 46.0, 80.0, 79.0, 128.0, 33.0, 71.0, 127.0, 86.0, 33.0, 56.0, 150.0, 73.0, - 5.0, 41.0, 93.0, 150.0, 74.0, 66.0, 106.0, 115.0, 17.0, 37.0, 87.0, 150.0, 31.0, 27.0, 150.0, 39.0, - 29.0, 23.0, 112.0, 123.0, 41.0, 37.0, 103.0, 150.0, 8.0, 46.0, 98.0, 111.0, 7.0, 69.0, 114.0, 150.0, - 70.0, 21.0, 150.0, 125.0, 54.0, 19.0, 132.0, 68.0, 62.0, 8.0, 150.0, 101.0, 57.0, 81.0, 150.0, 97.0, - 79.0, 29.0, 109.0, 130.0, 12.0, 63.0, 100.0, 150.0, 17.0, 33.0, 113.0, 150.0, 90.0, 78.0, 150.0, 111.0, - 47.0, 68.0, 150.0, 71.0, 66.0, 103.0, 111.0, 150.0, 4.0, 17.0, 112.0, 94.0, 12.0, 8.0, 119.0, 98.0, - 54.0, 56.0, 120.0, 150.0, 56.0, 29.0, 150.0, 31.0, 42.0, 3.0, 139.0, 92.0, 41.0, 65.0, 150.0, 130.0, - 49.0, 13.0, 143.0, 30.0, 40.0, 60.0, 150.0, 150.0, 23.0, 73.0, 24.0, 115.0, 56.0, 84.0, 107.0, 108.0, - 63.0, 8.0, 142.0, 125.0, 78.0, 37.0, 93.0, 144.0, 40.0, 34.0, 150.0, 46.0, 30.0, 21.0, 150.0, 120.0}, - std::vector{9.062256, 10.883133, 9.8441105, 12.694285, 0.41781136, 8.749107, 14.990341, 6.587644, 1.4206103, - 13.299262, 12.432549, 2.736371, 0.22732796, 6.3361835, 12.268727, 2.1009045, 4.771589, 2.5131326, - 5.610736, 9.3604145, 4.27379, 8.317948, 0.60510135, 6.7446275, 1.0207708, 1.1352817, 1.5785321, - 1.718335, 1.8093798, 0.99247587, 1.3233583, 1.7432803, 1.8534478, 1.2593061, 1.7394226, 1.7686696, - 1.647999, 1.7611449, 1.3119122, 0.03007332, 1.1106564, 0.55669737, 0.2546148, 1.9181818, 0.7134989, - 2.0407224, 1.7211134, 1.8565536, 14.562747, 2.8786168, 0.5927796, 0.2064463, 7.6794515, 8.672126, - 10.139171, 8.002429, 7.002932, 12.6314945, 10.550842, 0.15784842, 0.3194304, 10.752157, 3.709805, - 11.628928, 0.7136225, 14.619964, 15.177284, 2.2824087, 15.381494, 0.16618137, 7.507227, 11.173228, - 0.4923559, 1.8227729, 1.4749299, 1.7833921, 1.2363617, -0.23659119, 1.5737582, 1.779316, 1.9828427, - 1.0482665, 1.4900246, 1.3563544, 1.5341306, 0.7634312, 4.6216766e-05, 1.6161222, 1.7512476, 1.9363779, - 0.9195784, 1.4906164, -0.03244795, 0.681073, 0.6192401, 1.8033613, 14.146055, 3.4043705, 15.292292, - 3.5295358, 11.138999, 9.952057, 5.633434, 12.114562, 9.427372, 12.384038, 9.583308, 8.427233, - 15.293704, 3.288159, 11.64898, 9.350885, 2.0037227, 13.523184, 4.4176426, 6.1057625, 14.400079, - 8.248259, 11.815807, 15.713364, 1.0023532, 1.3203261, 1.7100681, 0.7407832, 1.09448, 1.7188418, - 1.4412547, 1.4862992, 0.74790007, 0.31571656, 0.6398838, 2.0236106, 1.1869069, 1.7265586, 1.2624544, - 0.09934269, 1.3508598, 0.85212964, -0.38968498, 1.7059708, 1.6533034, 1.7400402, 1.8123854, -0.43063712}, - std::vector{0.7719922, 0.35906568, 0.29054508, 0.18124384, 0.5604661, 0.84750974, 0.98948747, 0.009793862, 0.7184191, - 0.5560748, 0.6952493, 0.6732593, 0.3306898, 0.6790913, 0.41128764, 0.34593266, 0.94296855, 0.7348507, - 0.24478768, 0.94024557, 0.05405676, 0.06466125, 0.36244348, 0.07942984, 0.10619422, 0.09412837, 0.9053611, - 0.22870538, 0.9237487, 0.20986171, 0.5067282, 0.29709867, 0.53138554, 0.189101, 0.4786443, 0.88421875}, - std::vector{149, 149, 149, 149, 149, 0, 149, 149, 149, 60.87443542480469, 149, 149, 149, 61.89498901367188, 149, - 149, 149, 149, 149, 149, 149, 149, 149, 149}, - std::vector{0.9894874691963196, - 0.9429685473442078, - 0.9402455687522888, - 0.9237486720085144, - 0.9053611159324646, - 0.8842187523841858}, - "eval_2"), + 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f}, + std::vector{5.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, + 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 4.0f, 1.0f, 1.0f, 1.0f, + 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 8.0f, 1.0f}, + std::vector{0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, + 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f}, + std::vector{8.0f, 5.0f, 4.0f, 1.0f, 1.0f, 1.0f}, + "eval"), + ExperimentalGPParams( + Attrs{ + 0, // min_size + 0.699999988079071, // nms_threshold + 6, // post_nms_count + 1000 // pre_nms_count + }, + 3, + 2, + 6, + IN_ET, + std::vector{150.0, 150.0, 1.0}, + std::vector{ + 12.0, 68.0, 102.0, 123.0, 46.0, 80.0, 79.0, 128.0, 33.0, 71.0, 127.0, 86.0, 33.0, 56.0, 150.0, + 73.0, 5.0, 41.0, 93.0, 150.0, 74.0, 66.0, 106.0, 115.0, 17.0, 37.0, 87.0, 150.0, 31.0, 27.0, + 150.0, 39.0, 29.0, 23.0, 112.0, 123.0, 41.0, 37.0, 103.0, 150.0, 8.0, 46.0, 98.0, 111.0, 7.0, + 69.0, 114.0, 150.0, 70.0, 21.0, 150.0, 125.0, 54.0, 19.0, 132.0, 68.0, 62.0, 8.0, 150.0, 101.0, + 57.0, 81.0, 150.0, 97.0, 79.0, 29.0, 109.0, 130.0, 12.0, 63.0, 100.0, 150.0, 17.0, 33.0, 113.0, + 150.0, 90.0, 78.0, 150.0, 111.0, 47.0, 68.0, 150.0, 71.0, 66.0, 103.0, 111.0, 150.0, 4.0, 17.0, + 112.0, 94.0, 12.0, 8.0, 119.0, 98.0, 54.0, 56.0, 120.0, 150.0, 56.0, 29.0, 150.0, 31.0, 42.0, + 3.0, 139.0, 92.0, 41.0, 65.0, 150.0, 130.0, 49.0, 13.0, 143.0, 30.0, 40.0, 60.0, 150.0, 150.0, + 23.0, 73.0, 24.0, 115.0, 56.0, 84.0, 107.0, 108.0, 63.0, 8.0, 142.0, 125.0, 78.0, 37.0, 93.0, + 144.0, 40.0, 34.0, 150.0, 46.0, 30.0, 21.0, 150.0, 120.0}, + std::vector{ + 9.062256, 10.883133, 9.8441105, 12.694285, 0.41781136, 8.749107, 14.990341, 6.587644, + 1.4206103, 13.299262, 12.432549, 2.736371, 0.22732796, 6.3361835, 12.268727, 2.1009045, + 4.771589, 2.5131326, 5.610736, 9.3604145, 4.27379, 8.317948, 0.60510135, 6.7446275, + 1.0207708, 1.1352817, 1.5785321, 1.718335, 1.8093798, 0.99247587, 1.3233583, 1.7432803, + 1.8534478, 1.2593061, 1.7394226, 1.7686696, 1.647999, 1.7611449, 1.3119122, 0.03007332, + 1.1106564, 0.55669737, 0.2546148, 1.9181818, 0.7134989, 2.0407224, 1.7211134, 1.8565536, + 14.562747, 2.8786168, 0.5927796, 0.2064463, 7.6794515, 8.672126, 10.139171, 8.002429, + 7.002932, 12.6314945, 10.550842, 0.15784842, 0.3194304, 10.752157, 3.709805, 11.628928, + 0.7136225, 14.619964, 15.177284, 2.2824087, 15.381494, 0.16618137, 7.507227, 11.173228, + 0.4923559, 1.8227729, 1.4749299, 1.7833921, 1.2363617, -0.23659119, 1.5737582, 1.779316, + 1.9828427, 1.0482665, 1.4900246, 1.3563544, 1.5341306, 0.7634312, 4.6216766e-05, 1.6161222, + 1.7512476, 1.9363779, 0.9195784, 1.4906164, -0.03244795, 0.681073, 0.6192401, 1.8033613, + 14.146055, 3.4043705, 15.292292, 3.5295358, 11.138999, 9.952057, 5.633434, 12.114562, + 9.427372, 12.384038, 9.583308, 8.427233, 15.293704, 3.288159, 11.64898, 9.350885, + 2.0037227, 13.523184, 4.4176426, 6.1057625, 14.400079, 8.248259, 11.815807, 15.713364, + 1.0023532, 1.3203261, 1.7100681, 0.7407832, 1.09448, 1.7188418, 1.4412547, 1.4862992, + 0.74790007, 0.31571656, 0.6398838, 2.0236106, 1.1869069, 1.7265586, 1.2624544, 0.09934269, + 1.3508598, 0.85212964, -0.38968498, 1.7059708, 1.6533034, 1.7400402, 1.8123854, -0.43063712}, + std::vector{0.7719922, 0.35906568, 0.29054508, 0.18124384, 0.5604661, 0.84750974, + 0.98948747, 0.009793862, 0.7184191, 0.5560748, 0.6952493, 0.6732593, + 0.3306898, 0.6790913, 0.41128764, 0.34593266, 0.94296855, 0.7348507, + 0.24478768, 0.94024557, 0.05405676, 0.06466125, 0.36244348, 0.07942984, + 0.10619422, 0.09412837, 0.9053611, 0.22870538, 0.9237487, 0.20986171, + 0.5067282, 0.29709867, 0.53138554, 0.189101, 0.4786443, 0.88421875}, + std::vector{ + 149, 149, 149, 149, 149, 0, 149, 149, 149, 60.87443542480469, 149, 149, 149, 61.89498901367188, 149, + 149, 149, 149, 149, 149, 149, 149, 149, 149}, + std::vector{0.9894874691963196, + 0.9429685473442078, + 0.9402455687522888, + 0.9237486720085144, + 0.9053611159324646, + 0.8842187523841858}, + "eval_2"), }; return experimentalGPParams; } std::vector generateExperimentalGPCombinedParams() { - const std::vector> experimentalGPTypeParams { + const std::vector> experimentalGPTypeParams{ generateExperimentalGPFloatParams(), generateExperimentalGPFloatParams(), generateExperimentalGPFloatParams(), - }; + }; std::vector combinedParams; for (const auto& params : experimentalGPTypeParams) { @@ -205,6 +228,8 @@ std::vector generateExperimentalGPCombinedParams() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_ExperimentalDetectronGenerateProposalsSingleImage_With_Hardcoded_Refs, ReferenceExperimentalGPLayerTest, - testing::ValuesIn(generateExperimentalGPCombinedParams()), ReferenceExperimentalGPLayerTest::getTestCaseName); -} // namespace +INSTANTIATE_TEST_SUITE_P(smoke_ExperimentalDetectronGenerateProposalsSingleImage_With_Hardcoded_Refs, + ReferenceExperimentalGPLayerTest, + testing::ValuesIn(generateExperimentalGPCombinedParams()), + ReferenceExperimentalGPLayerTest::getTestCaseName); +} // namespace diff --git a/src/plugins/template/tests/functional/op_reference/experimental_detectron_roi_feature_extractor.cpp b/src/plugins/template/tests/functional/op_reference/experimental_detectron_roi_feature_extractor.cpp index 10f5f7e4e10..f187a79a8fc 100644 --- a/src/plugins/template/tests/functional/op_reference/experimental_detectron_roi_feature_extractor.cpp +++ b/src/plugins/template/tests/functional/op_reference/experimental_detectron_roi_feature_extractor.cpp @@ -4,8 +4,8 @@ #include -#include "openvino/op/experimental_detectron_roi_feature.hpp" #include "base_reference_test.hpp" +#include "openvino/op/experimental_detectron_roi_feature.hpp" using namespace ov; using namespace reference_tests; @@ -23,7 +23,8 @@ struct ExperimentalROIParams { std::string test_case_name; }; -class ReferenceExperimentalROILayerTest : public testing::TestWithParam, public CommonReferenceTest { +class ReferenceExperimentalROILayerTest : public testing::TestWithParam, + public CommonReferenceTest { public: void SetUp() override { auto params = GetParam(); @@ -76,149 +77,67 @@ INSTANTIATE_TEST_SUITE_P( ReferenceExperimentalROILayerTest, ::testing::Values( ExperimentalROIParams( - std::vector{reference_tests::Tensor(Shape{2, 4}, - ov::element::f32, - std::vector{0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0}), - reference_tests::Tensor(Shape{1, 2, 2, 3}, - ov::element::f32, - std::vector{0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0})}, - std::vector{reference_tests::Tensor(Shape{2, 2, 3, 3}, - ov::element::f32, - std::vector{1.416667, - 1.75, - 2.083333, - 2.416667, - 2.75, - 3.083333, - 3.166667, - 3.5, - 3.833333, - 7.416667, - 7.75, - 8.083333, - 8.416667, - 8.75, - 9.083334, - 9.166666, - 9.5, - 9.833334, - 4.166667, - 4.5, - 4.833333, - 4.166667, - 4.5, - 4.833333, - 2.083333, - 2.25, - 2.416667, - 10.16667, - 10.5, - 10.83333, - 10.16667, - 10.5, - 10.83333, - 5.083333, - 5.25, - 5.416667}), - reference_tests::Tensor(Shape{2, 4}, - ov::element::f32, - std::vector{0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0})}, + std::vector{ + reference_tests::Tensor(Shape{2, 4}, + ov::element::f32, + std::vector{0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0}), + reference_tests::Tensor( + Shape{1, 2, 2, 3}, + ov::element::f32, + std::vector{0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0})}, + std::vector{ + reference_tests::Tensor( + Shape{2, 2, 3, 3}, + ov::element::f32, + std::vector{1.416667, 1.75, 2.083333, 2.416667, 2.75, 3.083333, 3.166667, 3.5, 3.833333, + 7.416667, 7.75, 8.083333, 8.416667, 8.75, 9.083334, 9.166666, 9.5, 9.833334, + 4.166667, 4.5, 4.833333, 4.166667, 4.5, 4.833333, 2.083333, 2.25, 2.416667, + 10.16667, 10.5, 10.83333, 10.16667, 10.5, 10.83333, 5.083333, 5.25, 5.416667}), + reference_tests::Tensor(Shape{2, 4}, + ov::element::f32, + std::vector{0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0})}, "experimental_detectron_roi_feature_eval_f32"), ExperimentalROIParams( - std::vector{reference_tests::Tensor(Shape{2, 4}, - ov::element::f16, - std::vector{0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0}), - reference_tests::Tensor(Shape{1, 2, 2, 3}, - ov::element::f16, - std::vector{0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0})}, - std::vector{reference_tests::Tensor(Shape{2, 2, 3, 3}, - ov::element::f16, - std::vector{1.416667, - 1.75, - 2.083333, - 2.416667, - 2.75, - 3.083333, - 3.166667, - 3.5, - 3.833333, - 7.416667, - 7.75, - 8.083333, - 8.416667, - 8.75, - 9.083334, - 9.166666, - 9.5, - 9.833334, - 4.166667, - 4.5, - 4.833333, - 4.166667, - 4.5, - 4.833333, - 2.083333, - 2.25, - 2.416667, - 10.16667, - 10.5, - 10.83333, - 10.16667, - 10.5, - 10.83333, - 5.083333, - 5.25, - 5.416667}), - reference_tests::Tensor(Shape{2, 4}, - ov::element::f16, - std::vector{0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0})}, + std::vector{ + reference_tests::Tensor(Shape{2, 4}, + ov::element::f16, + std::vector{0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0}), + reference_tests::Tensor( + Shape{1, 2, 2, 3}, + ov::element::f16, + std::vector{0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0})}, + std::vector{ + reference_tests::Tensor(Shape{2, 2, 3, 3}, + ov::element::f16, + std::vector{1.416667, 1.75, 2.083333, 2.416667, 2.75, 3.083333, + 3.166667, 3.5, 3.833333, 7.416667, 7.75, 8.083333, + 8.416667, 8.75, 9.083334, 9.166666, 9.5, 9.833334, + 4.166667, 4.5, 4.833333, 4.166667, 4.5, 4.833333, + 2.083333, 2.25, 2.416667, 10.16667, 10.5, 10.83333, + 10.16667, 10.5, 10.83333, 5.083333, 5.25, 5.416667}), + reference_tests::Tensor(Shape{2, 4}, + ov::element::f16, + std::vector{0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0})}, "experimental_detectron_roi_feature_eval_f16"), ExperimentalROIParams( - std::vector{reference_tests::Tensor(Shape{2, 4}, - ov::element::bf16, - std::vector{0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0}), - reference_tests::Tensor(Shape{1, 2, 2, 3}, - ov::element::bf16, - std::vector{0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0})}, - std::vector{reference_tests::Tensor(Shape{2, 2, 3, 3}, - ov::element::bf16, - std::vector{1.416667, - 1.75, - 2.083333, - 2.416667, - 2.75, - 3.083333, - 3.166667, - 3.5, - 3.833333, - 7.416667, - 7.75, - 8.083333, - 8.416667, - 8.75, - 9.083334, - 9.166666, - 9.5, - 9.833334, - 4.166667, - 4.5, - 4.833333, - 4.166667, - 4.5, - 4.833333, - 2.083333, - 2.25, - 2.416667, - 10.16667, - 10.5, - 10.83333, - 10.16667, - 10.5, - 10.83333, - 5.083333, - 5.25, - 5.416667}), - reference_tests::Tensor(Shape{2, 4}, - ov::element::bf16, - std::vector{0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0})}, + std::vector{ + reference_tests::Tensor(Shape{2, 4}, + ov::element::bf16, + std::vector{0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0}), + reference_tests::Tensor( + Shape{1, 2, 2, 3}, + ov::element::bf16, + std::vector{0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0})}, + std::vector{ + reference_tests::Tensor(Shape{2, 2, 3, 3}, + ov::element::bf16, + std::vector{1.416667, 1.75, 2.083333, 2.416667, 2.75, 3.083333, + 3.166667, 3.5, 3.833333, 7.416667, 7.75, 8.083333, + 8.416667, 8.75, 9.083334, 9.166666, 9.5, 9.833334, + 4.166667, 4.5, 4.833333, 4.166667, 4.5, 4.833333, + 2.083333, 2.25, 2.416667, 10.16667, 10.5, 10.83333, + 10.16667, 10.5, 10.83333, 5.083333, 5.25, 5.416667}), + reference_tests::Tensor(Shape{2, 4}, + ov::element::bf16, + std::vector{0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0})}, "experimental_detectron_roi_feature_eval_bf16"))); diff --git a/src/plugins/template/tests/functional/op_reference/experimental_detectron_topkrois.cpp b/src/plugins/template/tests/functional/op_reference/experimental_detectron_topkrois.cpp index 0096a4bf212..d41d0983481 100644 --- a/src/plugins/template/tests/functional/op_reference/experimental_detectron_topkrois.cpp +++ b/src/plugins/template/tests/functional/op_reference/experimental_detectron_topkrois.cpp @@ -2,9 +2,10 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/experimental_detectron_topkrois.hpp" + #include -#include "openvino/op/experimental_detectron_topkrois.hpp" #include "base_reference_test.hpp" using namespace reference_tests; @@ -12,11 +13,16 @@ using namespace ov; namespace { struct ExperimentalDetectronTopKROIsParams { - ExperimentalDetectronTopKROIsParams( - const reference_tests::Tensor& dataTensor, const reference_tests::Tensor& probsTensor, const int32_t numRois, - const reference_tests::Tensor& expectedTensor, const std::string& testcaseName = "") : - dataTensor(dataTensor), probsTensor(probsTensor), numRois(numRois), - expectedTensor(expectedTensor), testcaseName(testcaseName) {} + ExperimentalDetectronTopKROIsParams(const reference_tests::Tensor& dataTensor, + const reference_tests::Tensor& probsTensor, + const int32_t numRois, + const reference_tests::Tensor& expectedTensor, + const std::string& testcaseName = "") + : dataTensor(dataTensor), + probsTensor(probsTensor), + numRois(numRois), + expectedTensor(expectedTensor), + testcaseName(testcaseName) {} reference_tests::Tensor dataTensor; reference_tests::Tensor probsTensor; @@ -25,7 +31,8 @@ struct ExperimentalDetectronTopKROIsParams { std::string testcaseName; }; -class ReferenceExperimentalDetectronTopKROIsTest : public testing::TestWithParam, public CommonReferenceTest { +class ReferenceExperimentalDetectronTopKROIsTest : public testing::TestWithParam, + public CommonReferenceTest { public: void SetUp() override { auto params = GetParam(); @@ -70,7 +77,7 @@ TEST_P(ReferenceExperimentalDetectronTopKROIsTest, CompareWithRefs) { template std::vector generateParams() { using T = typename element_type_traits::value_type; - std::vector params { + std::vector params{ ExperimentalDetectronTopKROIsParams( reference_tests::Tensor(ET, {2, 4}, std::vector{1.0f, 1.0f, 3.0f, 4.0f, 2.0f, 1.0f, 5.0f, 7.0f}), reference_tests::Tensor(ET, {2}, std::vector{0.5f, 0.3f}), @@ -78,8 +85,24 @@ std::vector generateParams() { reference_tests::Tensor(ET, {1, 4}, std::vector{1.0, 1.0, 3.0, 4.0}), "experimental_detectron_topk_rois_eval"), ExperimentalDetectronTopKROIsParams( - reference_tests::Tensor(ET, {4, 4}, std::vector{1.0f, 1.0f, 4.0f, 5.0f, 3.0f, 2.0f, 7.0f, 9.0f, - 10.0f, 15.0f, 13.0f, 17.0f, 13.0f, 10.0f, 18.0f, 15.0f}), + reference_tests::Tensor(ET, + {4, 4}, + std::vector{1.0f, + 1.0f, + 4.0f, + 5.0f, + 3.0f, + 2.0f, + 7.0f, + 9.0f, + 10.0f, + 15.0f, + 13.0f, + 17.0f, + 13.0f, + 10.0f, + 18.0f, + 15.0f}), reference_tests::Tensor(ET, {4}, std::vector{0.1f, 0.7f, 0.5f, 0.9f}), 2, reference_tests::Tensor(ET, {2, 4}, std::vector{13.0f, 10.0f, 18.0f, 15.0f, 3.0f, 2.0f, 7.0f, 9.0f}), @@ -89,7 +112,7 @@ std::vector generateParams() { } std::vector generateCombinedParams() { - const std::vector> generatedParams { + const std::vector> generatedParams{ generateParams(), generateParams(), generateParams(), @@ -103,6 +126,8 @@ std::vector generateCombinedParams() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_ExperimentalDetectronTopKROIs_With_Hardcoded_Refs, ReferenceExperimentalDetectronTopKROIsTest, - testing::ValuesIn(generateCombinedParams()), ReferenceExperimentalDetectronTopKROIsTest::getTestCaseName); -} // namespace +INSTANTIATE_TEST_SUITE_P(smoke_ExperimentalDetectronTopKROIs_With_Hardcoded_Refs, + ReferenceExperimentalDetectronTopKROIsTest, + testing::ValuesIn(generateCombinedParams()), + ReferenceExperimentalDetectronTopKROIsTest::getTestCaseName); +} // namespace diff --git a/src/plugins/template/tests/functional/op_reference/extract_image_patches.cpp b/src/plugins/template/tests/functional/op_reference/extract_image_patches.cpp index 49f24595eb5..62fc41dbea9 100644 --- a/src/plugins/template/tests/functional/op_reference/extract_image_patches.cpp +++ b/src/plugins/template/tests/functional/op_reference/extract_image_patches.cpp @@ -4,9 +4,9 @@ #include -#include "openvino/opsets/opset3.hpp" -#include "openvino/opsets/opset1.hpp" #include "base_reference_test.hpp" +#include "openvino/opsets/opset1.hpp" +#include "openvino/opsets/opset3.hpp" using namespace reference_tests; using namespace ov; @@ -32,7 +32,8 @@ struct Builder : ParamsBuilder { REFERENCE_TESTS_ADD_SET_PARAM(Builder, testcaseName); }; -class ReferenceExtractImagePatchesTest : public testing::TestWithParam, public CommonReferenceTest { +class ReferenceExtractImagePatchesTest : public testing::TestWithParam, + public CommonReferenceTest { public: void SetUp() override { auto params = GetParam(); @@ -78,148 +79,89 @@ TEST_P(ReferenceExtractImagePatchesTest, CompareWithRefs) { template std::vector generateParams() { using T = typename element_type_traits::value_type; - std::vector params { - Builder {} - .data({ET, {1, 1, 10, 10}, std::vector{ - 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, 72, 73, 74, 75, 76, 77, 78, 79, 80, - 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, - 91, 92, 93, 94, 95, 96, 97, 98, 99, 100}}) + std::vector params{ + Builder{} + .data({ET, + {1, 1, 10, 10}, + std::vector{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, 72, 73, 74, 75, 76, 77, 78, 79, 80, + 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100}}) .sizes({3, 3}) .strides({5, 5}) .rates({1, 1}) .autoPad(op::PadType::VALID) - .expectedResult({ET, {1, 9, 2, 2}, std::vector{ - 1, 6, 51, 56, - 2, 7, 52, 57, - 3, 8, 53, 58, - 11, 16, 61, 66, - 12, 17, 62, 67, - 13, 18, 63, 68, - 21, 26, 71, 76, - 22, 27, 72, 77, - 23, 28, 73, 78}}), + .expectedResult({ET, {1, 9, 2, 2}, std::vector{1, 6, 51, 56, 2, 7, 52, 57, 3, 8, 53, 58, + 11, 16, 61, 66, 12, 17, 62, 67, 13, 18, 63, 68, + 21, 26, 71, 76, 22, 27, 72, 77, 23, 28, 73, 78}}), - Builder {} - .data({ET, {1, 1, 10, 10}, std::vector{ - 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, 72, 73, 74, 75, 76, 77, 78, 79, 80, - 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, - 91, 92, 93, 94, 95, 96, 97, 98, 99, 100}}) + Builder{} + .data({ET, + {1, 1, 10, 10}, + std::vector{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, 72, 73, 74, 75, 76, 77, 78, 79, 80, + 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100}}) .sizes({4, 4}) .strides({8, 8}) .rates({1, 1}) .autoPad(op::PadType::VALID) - .expectedResult({ET, {1, 16, 1, 1}, std::vector{ - 1, 2, 3, 4, - 11, 12, 13, 14, - 21, 22, 23, 24, - 31, 32, 33, 34}}), + .expectedResult( + {ET, {1, 16, 1, 1}, std::vector{1, 2, 3, 4, 11, 12, 13, 14, 21, 22, 23, 24, 31, 32, 33, 34}}), - Builder {} - .data({ET, {1, 1, 10, 10}, std::vector{ - 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, 72, 73, 74, 75, 76, 77, 78, 79, 80, - 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, - 91, 92, 93, 94, 95, 96, 97, 98, 99, 100}}) + Builder{} + .data({ET, + {1, 1, 10, 10}, + std::vector{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, 72, 73, 74, 75, 76, 77, 78, 79, 80, + 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100}}) .sizes({4, 4}) .strides({9, 9}) .rates({1, 1}) .autoPad(op::PadType::SAME_UPPER) - .expectedResult({ET, {1, 16, 2, 2}, std::vector{ - 0, 0, 0, 89, - 0, 0, 81, 90, - 0, 0, 82, 0, - 0, 0, 83, 0, - 0, 9, 0, 99, - 1, 10, 91, 100, - 2, 0, 92, 0, - 3, 0, 93, 0, - 0, 19, 0, 0, - 11, 20, 0, 0, - 12, 0, 0, 0, - 13, 0, 0, 0, - 0, 29, 0, 0, - 21, 30, 0, 0, - 22, 0, 0, 0, - 23, 0, 0, 0}}), + .expectedResult( + {ET, {1, 16, 2, 2}, std::vector{0, 0, 0, 89, 0, 0, 81, 90, 0, 0, 82, 0, 0, 0, 83, 0, + 0, 9, 0, 99, 1, 10, 91, 100, 2, 0, 92, 0, 3, 0, 93, 0, + 0, 19, 0, 0, 11, 20, 0, 0, 12, 0, 0, 0, 13, 0, 0, 0, + 0, 29, 0, 0, 21, 30, 0, 0, 22, 0, 0, 0, 23, 0, 0, 0}}), - Builder {} - .data({ET, {1, 1, 10, 10}, std::vector{ - 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, 72, 73, 74, 75, 76, 77, 78, 79, 80, - 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, - 91, 92, 93, 94, 95, 96, 97, 98, 99, 100}}) + Builder{} + .data({ET, + {1, 1, 10, 10}, + std::vector{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, 72, 73, 74, 75, 76, 77, 78, 79, 80, + 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100}}) .sizes({3, 3}) .strides({5, 5}) .rates({2, 2}) .autoPad(op::PadType::VALID) - .expectedResult({ET, {1, 9, 2, 2}, std::vector{ - 1, 6, 51, 56, - 3, 8, 53, 58, - 5, 10, 55, 60, - 21, 26, 71, 76, - 23, 28, 73, 78, - 25, 30, 75, 80, - 41, 46, 91, 96, - 43, 48, 93, 98, - 45, 50, 95, 100}}), + .expectedResult({ET, {1, 9, 2, 2}, std::vector{1, 6, 51, 56, 3, 8, 53, 58, 5, 10, 55, 60, + 21, 26, 71, 76, 23, 28, 73, 78, 25, 30, 75, 80, + 41, 46, 91, 96, 43, 48, 93, 98, 45, 50, 95, 100}}), - Builder {} - .data({ET, {1, 2, 5, 5}, std::vector{ - 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}}) + Builder{} + .data({ET, {1, 2, 5, 5}, std::vector{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}}) .sizes({2, 2}) .strides({3, 3}) .rates({1, 1}) .autoPad(op::PadType::VALID) - .expectedResult({ET, {1, 8, 2, 2}, std::vector{ - 1, 4, 16, 19, - 26, 29, 41, 44, - 2, 5, 17, 20, - 27, 30, 42, 45, - 6, 9, 21, 24, - 31, 34, 46, 49, - 7, 10, 22, 25, - 32, 35, 47, 50}}), + .expectedResult( + {ET, {1, 8, 2, 2}, std::vector{1, 4, 16, 19, 26, 29, 41, 44, 2, 5, 17, 20, 27, 30, 42, 45, + 6, 9, 21, 24, 31, 34, 46, 49, 7, 10, 22, 25, 32, 35, 47, 50}}), }; return params; } std::vector generateCombinedParams() { - const std::vector> generatedParams { + const std::vector> generatedParams{ generateParams(), generateParams(), generateParams(), @@ -241,6 +183,8 @@ std::vector generateCombinedParams() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_ExtractImagePatches_With_Hardcoded_Refs, ReferenceExtractImagePatchesTest, - testing::ValuesIn(generateCombinedParams()), ReferenceExtractImagePatchesTest::getTestCaseName); -} // namespace +INSTANTIATE_TEST_SUITE_P(smoke_ExtractImagePatches_With_Hardcoded_Refs, + ReferenceExtractImagePatchesTest, + testing::ValuesIn(generateCombinedParams()), + ReferenceExtractImagePatchesTest::getTestCaseName); +} // namespace diff --git a/src/plugins/template/tests/functional/op_reference/eye.cpp b/src/plugins/template/tests/functional/op_reference/eye.cpp index 23037edaebc..714dbdee8e6 100644 --- a/src/plugins/template/tests/functional/op_reference/eye.cpp +++ b/src/plugins/template/tests/functional/op_reference/eye.cpp @@ -2,10 +2,12 @@ // SPDX-License-Identifier: Apache-2.0 // -#include -#include "base_reference_test.hpp" #include "openvino/op/eye.hpp" +#include + +#include "base_reference_test.hpp" + using namespace ov; using namespace reference_tests; @@ -20,13 +22,13 @@ struct EyeParams { const reference_tests::Tensor& expected_tensor, const std::string& test_case_name, bool is_dyn_shape_test = false) - : num_rows(num_rows), - num_columns(num_columns), - diagonal_index(diagonal_index), - output_type(output_type), - expected_tensor(expected_tensor), - test_case_name(test_case_name), - set_dynamic_shape(is_dyn_shape_test) {} + : num_rows(num_rows), + num_columns(num_columns), + diagonal_index(diagonal_index), + output_type(output_type), + expected_tensor(expected_tensor), + test_case_name(test_case_name), + set_dynamic_shape(is_dyn_shape_test) {} reference_tests::Tensor num_rows; reference_tests::Tensor num_columns; @@ -46,14 +48,14 @@ struct EyeBatchShapeParams { const reference_tests::Tensor& expected_tensor, const std::string& test_case_name, bool is_dyn_shape_test = false) - : num_rows(num_rows), - num_columns(num_columns), - diagonal_index(diagonal_index), - batch_shape(batch_shape), - output_type(output_type), - expected_tensor(expected_tensor), - test_case_name(test_case_name), - set_dynamic_shape(is_dyn_shape_test) {} + : num_rows(num_rows), + num_columns(num_columns), + diagonal_index(diagonal_index), + batch_shape(batch_shape), + output_type(output_type), + expected_tensor(expected_tensor), + test_case_name(test_case_name), + set_dynamic_shape(is_dyn_shape_test) {} reference_tests::Tensor num_rows; reference_tests::Tensor num_columns; @@ -88,9 +90,15 @@ private: const reference_tests::Tensor& diagonal_index, const element::Type& output_type, bool set_dynamic_shape = false) { - const auto in1 = std::make_shared(num_rows.type, set_dynamic_shape ? PartialShape::dynamic() : num_rows.shape); - const auto in2 = std::make_shared(num_columns.type, set_dynamic_shape ? PartialShape::dynamic() : num_columns.shape); - const auto in3 = std::make_shared(diagonal_index.type, set_dynamic_shape ? PartialShape::dynamic() : diagonal_index.shape); + const auto in1 = + std::make_shared(num_rows.type, + set_dynamic_shape ? PartialShape::dynamic() : num_rows.shape); + const auto in2 = + std::make_shared(num_columns.type, + set_dynamic_shape ? PartialShape::dynamic() : num_columns.shape); + const auto in3 = + std::make_shared(diagonal_index.type, + set_dynamic_shape ? PartialShape::dynamic() : diagonal_index.shape); const auto Eye = std::make_shared(in1, in2, in3, output_type); return std::make_shared(NodeVector{Eye}, ParameterVector{in1, in2, in3}); } @@ -106,7 +114,10 @@ public: params.batch_shape, params.output_type, params.set_dynamic_shape); - inputData = {params.num_rows.data, params.num_columns.data, params.diagonal_index.data, params.batch_shape.data}; + inputData = {params.num_rows.data, + params.num_columns.data, + params.diagonal_index.data, + params.batch_shape.data}; refOutData = {params.expected_tensor.data}; } @@ -121,252 +132,213 @@ private: const reference_tests::Tensor& batch_shape, const element::Type& output_type, bool set_dynamic_shape = false) { - const auto in1 = std::make_shared(num_rows.type, set_dynamic_shape ? PartialShape::dynamic() : num_rows.shape); - const auto in2 = std::make_shared(num_columns.type, set_dynamic_shape ? PartialShape::dynamic() : num_columns.shape); - const auto in3 = std::make_shared(diagonal_index.type, set_dynamic_shape ? PartialShape::dynamic() : diagonal_index.shape); - const auto in4 = std::make_shared(batch_shape.type, set_dynamic_shape ? PartialShape::dynamic() : batch_shape.shape); + const auto in1 = + std::make_shared(num_rows.type, + set_dynamic_shape ? PartialShape::dynamic() : num_rows.shape); + const auto in2 = + std::make_shared(num_columns.type, + set_dynamic_shape ? PartialShape::dynamic() : num_columns.shape); + const auto in3 = + std::make_shared(diagonal_index.type, + set_dynamic_shape ? PartialShape::dynamic() : diagonal_index.shape); + const auto in4 = + std::make_shared(batch_shape.type, + set_dynamic_shape ? PartialShape::dynamic() : batch_shape.shape); const auto Eye = std::make_shared(in1, in2, in3, in4, output_type); return std::make_shared(NodeVector{Eye}, ParameterVector{in1, in2, in3, in4}); } }; std::vector generateEyeParams(bool is_dyn_shape_test = false) { - std::vector test_params { + std::vector test_params{ EyeParams(reference_tests::Tensor{{1}, element::i32, std::vector{3}}, - reference_tests::Tensor{{1}, element::i32, std::vector{2}}, - reference_tests::Tensor{{1}, element::i32, std::vector{0}}, - element::Type_t::f32, - reference_tests::Tensor{{3, 2}, element::f32, std::vector{1, 0, - 0, 1, - 0, 0}}, - "float32_default_3x2", is_dyn_shape_test), + reference_tests::Tensor{{1}, element::i32, std::vector{2}}, + reference_tests::Tensor{{1}, element::i32, std::vector{0}}, + element::Type_t::f32, + reference_tests::Tensor{{3, 2}, element::f32, std::vector{1, 0, 0, 1, 0, 0}}, + "float32_default_3x2", + is_dyn_shape_test), EyeParams(reference_tests::Tensor{{}, element::i32, std::vector{2}}, - reference_tests::Tensor{{}, element::i32, std::vector{4}}, - reference_tests::Tensor{{}, element::i32, std::vector{2}}, - element::Type_t::i8, - reference_tests::Tensor{{2, 4}, element::i8, std::vector{0, 0, 1, 0, - 0, 0, 0, 1}}, - "int8_diag=2_2x4", is_dyn_shape_test), + reference_tests::Tensor{{}, element::i32, std::vector{4}}, + reference_tests::Tensor{{}, element::i32, std::vector{2}}, + element::Type_t::i8, + reference_tests::Tensor{{2, 4}, element::i8, std::vector{0, 0, 1, 0, 0, 0, 0, 1}}, + "int8_diag=2_2x4", + is_dyn_shape_test), EyeParams(reference_tests::Tensor{{1}, element::i32, std::vector{4}}, - reference_tests::Tensor{{1}, element::i32, std::vector{2}}, - reference_tests::Tensor{{}, element::i32, std::vector{-3}}, - element::Type_t::i64, - reference_tests::Tensor{{4, 2}, element::i64, std::vector{0, 0, - 0, 0, - 0, 0, - 1, 0}}, - "int64_diag=-3_4x2", is_dyn_shape_test), + reference_tests::Tensor{{1}, element::i32, std::vector{2}}, + reference_tests::Tensor{{}, element::i32, std::vector{-3}}, + element::Type_t::i64, + reference_tests::Tensor{{4, 2}, element::i64, std::vector{0, 0, 0, 0, 0, 0, 1, 0}}, + "int64_diag=-3_4x2", + is_dyn_shape_test), EyeParams(reference_tests::Tensor{{}, element::i32, std::vector{1}}, - reference_tests::Tensor{{}, element::i32, std::vector{4}}, - reference_tests::Tensor{{}, element::i32, std::vector{10}}, - element::Type_t::i8, - reference_tests::Tensor{{1, 4}, element::i8, std::vector{0, 0, 0, 0}}, - "int8_empty_1x4", is_dyn_shape_test)}; + reference_tests::Tensor{{}, element::i32, std::vector{4}}, + reference_tests::Tensor{{}, element::i32, std::vector{10}}, + element::Type_t::i8, + reference_tests::Tensor{{1, 4}, element::i8, std::vector{0, 0, 0, 0}}, + "int8_empty_1x4", + is_dyn_shape_test)}; return test_params; } std::vector generateEyeBatchShapeParams(bool is_dyn_shape_test = false) { - std::vector test_params { - EyeBatchShapeParams(reference_tests::Tensor{{1}, element::i32, std::vector{3}}, - reference_tests::Tensor{{1}, element::i32, std::vector{3}}, - reference_tests::Tensor{{1}, element::i32, std::vector{0}}, - reference_tests::Tensor{{1}, element::i32, std::vector{2}}, - element::Type_t::f32, - reference_tests::Tensor{{2, 3, 3}, element::f32, std::vector{1, 0, 0, - 0, 1, 0, - 0, 0, 1, - 1, 0, 0, - 0, 1, 0, - 0, 0, 1}}, - "f32_2x3x3_diag0", is_dyn_shape_test), - EyeBatchShapeParams(reference_tests::Tensor{{1}, element::i32, std::vector{4}}, - reference_tests::Tensor{{1}, element::i32, std::vector{4}}, - reference_tests::Tensor{{1}, element::i32, std::vector{0}}, - reference_tests::Tensor{{1}, element::i32, std::vector{2}}, - element::Type_t::f32, - reference_tests::Tensor{{2, 3, 3}, element::f32, std::vector{1, 0, 0, 0, - 0, 1, 0, 0, - 0, 0, 1, 0, - 0, 0, 0, 1, - 1, 0, 0, 0, - 0, 1, 0, 0, - 0, 0, 1, 0, - 0, 0, 0, 1}}, - "f32_2x4x4_diag0", is_dyn_shape_test), - EyeBatchShapeParams(reference_tests::Tensor{{1}, element::i32, std::vector{3}}, - reference_tests::Tensor{{1}, element::i32, std::vector{4}}, - reference_tests::Tensor{{1}, element::i32, std::vector{0}}, - reference_tests::Tensor{{1}, element::i32, std::vector{2}}, - element::Type_t::f32, - reference_tests::Tensor{{2, 3, 4}, element::f32, std::vector{1, 0, 0, 0, - 0, 1, 0, 0, - 0, 0, 1, 0, - 1, 0, 0, 0, - 0, 1, 0, 0, - 0, 0, 1, 0}}, - "f32_2x3x4_diag0", is_dyn_shape_test), - EyeBatchShapeParams(reference_tests::Tensor{{1}, element::i32, std::vector{4}}, - reference_tests::Tensor{{1}, element::i32, std::vector{3}}, - reference_tests::Tensor{{1}, element::i32, std::vector{0}}, - reference_tests::Tensor{{1}, element::i32, std::vector{2}}, - element::Type_t::i8, - reference_tests::Tensor{{2, 4, 3}, element::i8, std::vector{1, 0, 0, - 0, 1, 0, - 0, 0, 1, - 0, 0, 0, - 1, 0, 0, - 0, 1, 0, - 0, 0, 1, - 0, 0, 0}}, - "f32_2x4x3_diag0", is_dyn_shape_test), - EyeBatchShapeParams(reference_tests::Tensor{{1}, element::i32, std::vector{3}}, - reference_tests::Tensor{{1}, element::i32, std::vector{4}}, - reference_tests::Tensor{{1}, element::i32, std::vector{1}}, - reference_tests::Tensor{{1}, element::i32, std::vector{2}}, - element::Type_t::f32, - reference_tests::Tensor{{2, 3, 4}, element::f32, std::vector{0, 1, 0, 0, - 0, 0, 1, 0, - 0, 0, 0, 1, - 0, 1, 0, 0, - 0, 0, 1, 0, - 0, 0, 0, 1}}, - "f32_2x3x4_diag1", is_dyn_shape_test), - EyeBatchShapeParams(reference_tests::Tensor{{1}, element::i32, std::vector{4}}, - reference_tests::Tensor{{1}, element::i32, std::vector{3}}, - reference_tests::Tensor{{1}, element::i32, std::vector{1}}, - reference_tests::Tensor{{1}, element::i32, std::vector{2}}, - element::Type_t::f32, - reference_tests::Tensor{{2, 4, 3}, element::f32, std::vector{0, 1, 0, - 0, 0, 1, - 0, 0, 0, - 0, 0, 0, - 0, 1, 0, - 0, 0, 1, - 0, 0, 0, - 0, 0, 0}}, - "f32_2x4x3_diag1", is_dyn_shape_test), - EyeBatchShapeParams(reference_tests::Tensor{{1}, element::i32, std::vector{3}}, - reference_tests::Tensor{{1}, element::i32, std::vector{4}}, - reference_tests::Tensor{{1}, element::i32, std::vector{2}}, - reference_tests::Tensor{{1}, element::i32, std::vector{2}}, - element::Type_t::i8, - reference_tests::Tensor{{2, 3, 4}, element::i8, std::vector{0, 0, 1, 0, - 0, 0, 0, 1, - 0, 0, 0, 0, - 0, 0, 1, 0, - 0, 0, 0, 1, - 0, 0, 0, 0}}, - "i8_2x3x4_diag2", is_dyn_shape_test), - EyeBatchShapeParams(reference_tests::Tensor{{1}, element::i32, std::vector{4}}, - reference_tests::Tensor{{1}, element::i32, std::vector{3}}, - reference_tests::Tensor{{1}, element::i32, std::vector{2}}, - reference_tests::Tensor{{1}, element::i32, std::vector{2}}, - element::Type_t::i8, - reference_tests::Tensor{{2, 4, 3}, element::i8, std::vector{0, 0, 1, - 0, 0, 0, - 0, 0, 0, - 0, 0, 0, - 0, 0, 1, - 0, 0, 0, - 0, 0, 0, - 0, 0, 0}}, - "i8_2x4x3_diag2", is_dyn_shape_test), - EyeBatchShapeParams(reference_tests::Tensor{{1}, element::i32, std::vector{3}}, - reference_tests::Tensor{{1}, element::i32, std::vector{4}}, - reference_tests::Tensor{{1}, element::i32, std::vector{-1}}, - reference_tests::Tensor{{1}, element::i32, std::vector{2}}, - element::Type_t::i8, - reference_tests::Tensor{{2, 3, 4}, element::i8, std::vector{0, 0, 0, 0, - 1, 0, 0, 0, - 0, 1, 0, 0, - 0, 0, 0, 0, - 1, 0, 0, 0, - 0, 1, 0, 0}}, - "i8_2x3x4_diag-1", is_dyn_shape_test), - EyeBatchShapeParams(reference_tests::Tensor{{1}, element::i32, std::vector{4}}, - reference_tests::Tensor{{1}, element::i32, std::vector{3}}, - reference_tests::Tensor{{1}, element::i32, std::vector{-1}}, - reference_tests::Tensor{{1}, element::i32, std::vector{2}}, - element::Type_t::i8, - reference_tests::Tensor{{2, 4, 3}, element::i8, std::vector{0, 0, 0, - 1, 0, 0, - 0, 1, 0, - 0, 0, 1, - 0, 0, 0, - 1, 0, 0, - 0, 1, 0, - 0, 0, 1}}, - "i8_2x4x3_diag-1", is_dyn_shape_test), - EyeBatchShapeParams(reference_tests::Tensor{{1}, element::i32, std::vector{3}}, - reference_tests::Tensor{{1}, element::i32, std::vector{4}}, - reference_tests::Tensor{{1}, element::i32, std::vector{-2}}, - reference_tests::Tensor{{1}, element::i32, std::vector{2}}, - element::Type_t::i8, - reference_tests::Tensor{{2, 3, 4}, element::i8, std::vector{0, 0, 0, 0, - 0, 0, 0, 0, - 1, 0, 0, 0, - 0, 0, 0, 0, - 0, 0, 0, 0, - 1, 0, 0, 0}}, - "i8_2x3x4_diag-2", is_dyn_shape_test), - EyeBatchShapeParams(reference_tests::Tensor{{1}, element::i32, std::vector{4}}, - reference_tests::Tensor{{1}, element::i32, std::vector{3}}, - reference_tests::Tensor{{1}, element::i32, std::vector{-2}}, - reference_tests::Tensor{{1}, element::i32, std::vector{2}}, - element::Type_t::i8, - reference_tests::Tensor{{2, 4, 3}, element::i8, std::vector{0, 0, 0, - 0, 0, 0, - 1, 0, 0, - 0, 1, 0, - 0, 0, 0, - 0, 0, 0, - 1, 0, 0, - 0, 1, 0}}, - "i8_2x4x3_diag-2", is_dyn_shape_test), - EyeBatchShapeParams(reference_tests::Tensor{{1}, element::i32, std::vector{6}}, - reference_tests::Tensor{{1}, element::i32, std::vector{5}}, - reference_tests::Tensor{{1}, element::i32, std::vector{1}}, - reference_tests::Tensor{{1}, element::i32, std::vector{2}}, - element::Type_t::i32, - reference_tests::Tensor{{2, 6, 5}, element::i32, std::vector{0, 1, 0, 0, 0, - 0, 0, 1, 0, 0, - 0, 0, 0, 1, 0, - 0, 0, 0, 0, 1, - 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, - 0, 1, 0, 0, 0, - 0, 0, 1, 0, 0, - 0, 0, 0, 1, 0, - 0, 0, 0, 0, 1, - 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0}}, - "int32_2x6x5_diag1", is_dyn_shape_test), - EyeBatchShapeParams(reference_tests::Tensor{{1}, element::i32, std::vector{2}}, - reference_tests::Tensor{{1}, element::i32, std::vector{4}}, - reference_tests::Tensor{{1}, element::i32, std::vector{2}}, - reference_tests::Tensor{{2}, element::i32, std::vector{2, 2}}, - element::Type_t::i64, - reference_tests::Tensor{{2, 2, 4, 2}, element::i64, std::vector{0, 0, 1, 0, - 0, 0, 0, 1, - 0, 0, 1, 0, - 0, 0, 0, 1, - 0, 0, 1, 0, - 0, 0, 0, 1, - 0, 0, 1, 0, - 0, 0, 0, 1}}, - "int64_2x2x3x3", is_dyn_shape_test), - EyeBatchShapeParams(reference_tests::Tensor{{1}, element::i32, std::vector{2}}, - reference_tests::Tensor{{1}, element::i32, std::vector{2}}, - reference_tests::Tensor{{1}, element::i32, std::vector{3}}, - reference_tests::Tensor{{2}, element::i32, std::vector{1, 3}}, - element::Type_t::u8, - reference_tests::Tensor{{2, 3, 3}, element::u8, std::vector{0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0}}, - "uint8_1x3x2x2", is_dyn_shape_test)}; + std::vector test_params{ + EyeBatchShapeParams( + reference_tests::Tensor{{1}, element::i32, std::vector{3}}, + reference_tests::Tensor{{1}, element::i32, std::vector{3}}, + reference_tests::Tensor{{1}, element::i32, std::vector{0}}, + reference_tests::Tensor{{1}, element::i32, std::vector{2}}, + element::Type_t::f32, + reference_tests::Tensor{{2, 3, 3}, + element::f32, + std::vector{1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1}}, + "f32_2x3x3_diag0", + is_dyn_shape_test), + EyeBatchShapeParams( + reference_tests::Tensor{{1}, element::i32, std::vector{4}}, + reference_tests::Tensor{{1}, element::i32, std::vector{4}}, + reference_tests::Tensor{{1}, element::i32, std::vector{0}}, + reference_tests::Tensor{{1}, element::i32, std::vector{2}}, + element::Type_t::f32, + reference_tests::Tensor{{2, 3, 3}, element::f32, std::vector{1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, + 0, 0, 0, 0, 1, 0, 0, 0, 0, 1}}, + "f32_2x4x4_diag0", + is_dyn_shape_test), + EyeBatchShapeParams( + reference_tests::Tensor{{1}, element::i32, std::vector{3}}, + reference_tests::Tensor{{1}, element::i32, std::vector{4}}, + reference_tests::Tensor{{1}, element::i32, std::vector{0}}, + reference_tests::Tensor{{1}, element::i32, std::vector{2}}, + element::Type_t::f32, + reference_tests::Tensor{{2, 3, 4}, element::f32, std::vector{1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0}}, + "f32_2x3x4_diag0", + is_dyn_shape_test), + EyeBatchShapeParams( + reference_tests::Tensor{{1}, element::i32, std::vector{4}}, + reference_tests::Tensor{{1}, element::i32, std::vector{3}}, + reference_tests::Tensor{{1}, element::i32, std::vector{0}}, + reference_tests::Tensor{{1}, element::i32, std::vector{2}}, + element::Type_t::i8, + reference_tests::Tensor{{2, 4, 3}, element::i8, std::vector{1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, + 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0}}, + "f32_2x4x3_diag0", + is_dyn_shape_test), + EyeBatchShapeParams( + reference_tests::Tensor{{1}, element::i32, std::vector{3}}, + reference_tests::Tensor{{1}, element::i32, std::vector{4}}, + reference_tests::Tensor{{1}, element::i32, std::vector{1}}, + reference_tests::Tensor{{1}, element::i32, std::vector{2}}, + element::Type_t::f32, + reference_tests::Tensor{{2, 3, 4}, element::f32, std::vector{0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1}}, + "f32_2x3x4_diag1", + is_dyn_shape_test), + EyeBatchShapeParams( + reference_tests::Tensor{{1}, element::i32, std::vector{4}}, + reference_tests::Tensor{{1}, element::i32, std::vector{3}}, + reference_tests::Tensor{{1}, element::i32, std::vector{1}}, + reference_tests::Tensor{{1}, element::i32, std::vector{2}}, + element::Type_t::f32, + reference_tests::Tensor{{2, 4, 3}, element::f32, std::vector{0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, + 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0}}, + "f32_2x4x3_diag1", + is_dyn_shape_test), + EyeBatchShapeParams( + reference_tests::Tensor{{1}, element::i32, std::vector{3}}, + reference_tests::Tensor{{1}, element::i32, std::vector{4}}, + reference_tests::Tensor{{1}, element::i32, std::vector{2}}, + reference_tests::Tensor{{1}, element::i32, std::vector{2}}, + element::Type_t::i8, + reference_tests::Tensor{{2, 3, 4}, element::i8, std::vector{0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, + 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0}}, + "i8_2x3x4_diag2", + is_dyn_shape_test), + EyeBatchShapeParams( + reference_tests::Tensor{{1}, element::i32, std::vector{4}}, + reference_tests::Tensor{{1}, element::i32, std::vector{3}}, + reference_tests::Tensor{{1}, element::i32, std::vector{2}}, + reference_tests::Tensor{{1}, element::i32, std::vector{2}}, + element::Type_t::i8, + reference_tests::Tensor{{2, 4, 3}, element::i8, std::vector{0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, + "i8_2x4x3_diag2", + is_dyn_shape_test), + EyeBatchShapeParams( + reference_tests::Tensor{{1}, element::i32, std::vector{3}}, + reference_tests::Tensor{{1}, element::i32, std::vector{4}}, + reference_tests::Tensor{{1}, element::i32, std::vector{-1}}, + reference_tests::Tensor{{1}, element::i32, std::vector{2}}, + element::Type_t::i8, + reference_tests::Tensor{{2, 3, 4}, element::i8, std::vector{0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, + 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0}}, + "i8_2x3x4_diag-1", + is_dyn_shape_test), + EyeBatchShapeParams( + reference_tests::Tensor{{1}, element::i32, std::vector{4}}, + reference_tests::Tensor{{1}, element::i32, std::vector{3}}, + reference_tests::Tensor{{1}, element::i32, std::vector{-1}}, + reference_tests::Tensor{{1}, element::i32, std::vector{2}}, + element::Type_t::i8, + reference_tests::Tensor{{2, 4, 3}, element::i8, std::vector{0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, + 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1}}, + "i8_2x4x3_diag-1", + is_dyn_shape_test), + EyeBatchShapeParams( + reference_tests::Tensor{{1}, element::i32, std::vector{3}}, + reference_tests::Tensor{{1}, element::i32, std::vector{4}}, + reference_tests::Tensor{{1}, element::i32, std::vector{-2}}, + reference_tests::Tensor{{1}, element::i32, std::vector{2}}, + element::Type_t::i8, + reference_tests::Tensor{{2, 3, 4}, element::i8, std::vector{0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0}}, + "i8_2x3x4_diag-2", + is_dyn_shape_test), + EyeBatchShapeParams( + reference_tests::Tensor{{1}, element::i32, std::vector{4}}, + reference_tests::Tensor{{1}, element::i32, std::vector{3}}, + reference_tests::Tensor{{1}, element::i32, std::vector{-2}}, + reference_tests::Tensor{{1}, element::i32, std::vector{2}}, + element::Type_t::i8, + reference_tests::Tensor{{2, 4, 3}, element::i8, std::vector{0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, + 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0}}, + "i8_2x4x3_diag-2", + is_dyn_shape_test), + EyeBatchShapeParams( + reference_tests::Tensor{{1}, element::i32, std::vector{6}}, + reference_tests::Tensor{{1}, element::i32, std::vector{5}}, + reference_tests::Tensor{{1}, element::i32, std::vector{1}}, + reference_tests::Tensor{{1}, element::i32, std::vector{2}}, + element::Type_t::i32, + reference_tests::Tensor{{2, 6, 5}, + element::i32, + std::vector{0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, + 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, + "int32_2x6x5_diag1", + is_dyn_shape_test), + EyeBatchShapeParams( + reference_tests::Tensor{{1}, element::i32, std::vector{2}}, + reference_tests::Tensor{{1}, element::i32, std::vector{4}}, + reference_tests::Tensor{{1}, element::i32, std::vector{2}}, + reference_tests::Tensor{{2}, element::i32, std::vector{2, 2}}, + element::Type_t::i64, + reference_tests::Tensor{{2, 2, 4, 2}, element::i64, std::vector{0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, + 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, + 0, 1, 0, 0, 1, 0, 0, 0, 0, 1}}, + "int64_2x2x3x3", + is_dyn_shape_test), + EyeBatchShapeParams( + reference_tests::Tensor{{1}, element::i32, std::vector{2}}, + reference_tests::Tensor{{1}, element::i32, std::vector{2}}, + reference_tests::Tensor{{1}, element::i32, std::vector{3}}, + reference_tests::Tensor{{2}, element::i32, std::vector{1, 3}}, + element::Type_t::u8, + reference_tests::Tensor{{2, 3, 3}, element::u8, std::vector{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, + "uint8_1x3x2x2", + is_dyn_shape_test)}; return test_params; } @@ -394,18 +366,16 @@ TEST_P(ReferenceEyeBatchShapeLayerTest, EyeRectangleBatchShapeWithHardcodedRefs) } // namespace -INSTANTIATE_TEST_SUITE_P( - smoke_Eye_With_Hardcoded_Refs, - ReferenceEyeLayerTest, - // Generate params (3 inputs) with static and dynamic shapes - ::testing::ValuesIn(generateEyeCombinedParams()), - ReferenceEyeLayerTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_Eye_With_Hardcoded_Refs, + ReferenceEyeLayerTest, + // Generate params (3 inputs) with static and dynamic shapes + ::testing::ValuesIn(generateEyeCombinedParams()), + ReferenceEyeLayerTest::getTestCaseName); -INSTANTIATE_TEST_SUITE_P( - smoke_EyeBatchShape_With_Hardcoded_Refs, - ReferenceEyeBatchShapeLayerTest, - // Generate params (4 inputs) with static and dynamic shapes - ::testing::ValuesIn(generateEyeBatchShapeCombinedParams()), - ReferenceEyeBatchShapeLayerTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_EyeBatchShape_With_Hardcoded_Refs, + ReferenceEyeBatchShapeLayerTest, + // Generate params (4 inputs) with static and dynamic shapes + ::testing::ValuesIn(generateEyeBatchShapeCombinedParams()), + ReferenceEyeBatchShapeLayerTest::getTestCaseName); } // namespace reference_tests diff --git a/src/plugins/template/tests/functional/op_reference/fake_quantize.cpp b/src/plugins/template/tests/functional/op_reference/fake_quantize.cpp index 5f42a477da2..418d02c23c5 100644 --- a/src/plugins/template/tests/functional/op_reference/fake_quantize.cpp +++ b/src/plugins/template/tests/functional/op_reference/fake_quantize.cpp @@ -2,11 +2,12 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/fake_quantize.hpp" + #include #include "base_reference_test.hpp" #include "openvino/op/constant.hpp" -#include "openvino/op/fake_quantize.hpp" using namespace ov; using namespace reference_tests; @@ -16,17 +17,17 @@ namespace { struct FakeQuantizeParams { template FakeQuantizeParams(const Shape& input_shape, - const Shape& expected_shape, - const element::Type& input_type, - const element::Type& expected_type, - const std::vector& input_data, - const std::vector& expected_data, - const std::shared_ptr& input_low, - const std::shared_ptr& input_high, - const std::shared_ptr& output_low, - const std::shared_ptr& output_high, - const std::size_t& levels, - const op::AutoBroadcastSpec& broadcast = op::AutoBroadcastType::NONE) + const Shape& expected_shape, + const element::Type& input_type, + const element::Type& expected_type, + const std::vector& input_data, + const std::vector& expected_data, + const std::shared_ptr& input_low, + const std::shared_ptr& input_high, + const std::shared_ptr& output_low, + const std::shared_ptr& output_high, + const std::size_t& levels, + const op::AutoBroadcastSpec& broadcast = op::AutoBroadcastType::NONE) : m_input_shape(input_shape), m_expected_shape(expected_shape), m_input_type(input_type), @@ -90,24 +91,26 @@ public: private: static std::shared_ptr CreateFunction(const Shape& input_shape, - const Shape& expected_shape, - const element::Type& input_type, - const element::Type& expected_type, - const std::shared_ptr& input_low, - const std::shared_ptr& input_high, - const std::shared_ptr& output_low, - const std::shared_ptr& output_high, - const std::size_t& levels, - const op::AutoBroadcastSpec& broadcast) { + const Shape& expected_shape, + const element::Type& input_type, + const element::Type& expected_type, + const std::shared_ptr& input_low, + const std::shared_ptr& input_high, + const std::shared_ptr& output_low, + const std::shared_ptr& output_high, + const std::size_t& levels, + const op::AutoBroadcastSpec& broadcast) { auto in = std::make_shared(input_type, input_shape); if (broadcast == op::AutoBroadcastType::NONE) { return std::make_shared( - NodeVector{std::make_shared(in, input_low, input_high, output_low, output_high, levels)}, + NodeVector{ + std::make_shared(in, input_low, input_high, output_low, output_high, levels)}, ParameterVector{in}); } else { return std::make_shared( - NodeVector{std::make_shared(in, input_low, input_high, output_low, output_high, levels, broadcast)}, + NodeVector{std::make_shared< + op::v0::FakeQuantize>(in, input_low, input_high, output_low, output_high, levels, broadcast)}, ParameterVector{in}); } } @@ -128,21 +131,22 @@ template std::vector generateParamsForFakeQuantize() { using T = typename element_type_traits::value_type; - std::vector params { - FakeQuantizeParams(ov::Shape{1, 2, 3, 4}, - ov::Shape{1, 2, 3, 4}, - IN_ET, - IN_ET, - iota_vector(shape_size(ov::Shape{1, 2, 3, 4})), - std::vector{2.f, 2.f, 2.f, 2.f, 6.6666669f, 6.6666669f, - 6.6666669f, 6.6666669f, 6.6666669f, 6.6666669f, 6.6666669f, 6.6666669f, - 11.33333301f, 11.33333301f, 11.33333301f, 11.33333301f, 11.33333301f, 11.33333301f, - 11.33333301f, 11.33333301f, 16.f, 16.f, 16.f, 16.f}, - op::v0::Constant::create(IN_ET, Shape{}, {0.f}), - op::v0::Constant::create(IN_ET, Shape{}, {23.f}), - op::v0::Constant::create(IN_ET, Shape{}, {2.f}), - op::v0::Constant::create(IN_ET, Shape{}, {16.f}), - 4), + std::vector params{ + FakeQuantizeParams( + ov::Shape{1, 2, 3, 4}, + ov::Shape{1, 2, 3, 4}, + IN_ET, + IN_ET, + iota_vector(shape_size(ov::Shape{1, 2, 3, 4})), + std::vector{2.f, 2.f, 2.f, 2.f, 6.6666669f, 6.6666669f, + 6.6666669f, 6.6666669f, 6.6666669f, 6.6666669f, 6.6666669f, 6.6666669f, + 11.33333301f, 11.33333301f, 11.33333301f, 11.33333301f, 11.33333301f, 11.33333301f, + 11.33333301f, 11.33333301f, 16.f, 16.f, 16.f, 16.f}, + op::v0::Constant::create(IN_ET, Shape{}, {0.f}), + op::v0::Constant::create(IN_ET, Shape{}, {23.f}), + op::v0::Constant::create(IN_ET, Shape{}, {2.f}), + op::v0::Constant::create(IN_ET, Shape{}, {16.f}), + 4), FakeQuantizeParams(ov::Shape{1, 2, 3, 4}, ov::Shape{1, 2, 3, 4}, IN_ET, @@ -155,61 +159,98 @@ std::vector generateParamsForFakeQuantize() { op::v0::Constant::create(IN_ET, Shape{}, {2.f}), op::v0::Constant::create(IN_ET, Shape{}, {16.f}), 5), - FakeQuantizeParams(ov::Shape{1, 2, 5, 5}, - ov::Shape{1, 2, 5, 5}, - IN_ET, - IN_ET, - iota_vector(shape_size(Shape{1, 2, 5, 5})), - std::vector{0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 5.0f, 10.0f, 10.0f, 15.0f, 20.0f, 20.0f, 20.0f, - 20.0f, 20.0f, 20.0f, 20.0f, 20.0f, 20.0f, 20.0f, 20.0f, 20.0f, 20.0f, 20.0f, 20.0f, 50.0f, - 50.0f, 50.0f, 50.0f, 50.0f, 50.0f, 50.0f, 55.0f, 55.0f, 60.0f, 60.0f, 60.0f, 65.0f, 65.0f, - 70.0f, 70.0f, 70.0f, 70.0f, 70.0f, 70.0f, 70.0f, 70.0f, 70.0f, 70.0f, 70.0f}, - op::v0::Constant::create(IN_ET, Shape{2, 1, 1}, {5.f, 30.f}), - op::v0::Constant::create(IN_ET, Shape{2, 1, 1}, {10.f, 40.f}), - op::v0::Constant::create(IN_ET, Shape{2, 1, 1}, {0.f, 50.f}), - op::v0::Constant::create(IN_ET, Shape{2, 1, 1}, {20.f, 70.f}), - 5), - FakeQuantizeParams(ov::Shape{1, 2, 5, 5}, - ov::Shape{1, 2, 5, 5}, - IN_ET, - IN_ET, - iota_vector(shape_size(Shape{1, 2, 5, 5})), - std::vector{0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 5.0f, 10.0f, 10.0f, 15.0f, 20.0f, 20.0f, 20.0f, - 20.0f, 20.0f, 20.0f, 20.0f, 20.0f, 20.0f, 20.0f, 20.0f, 20.0f, 20.0f, 20.0f, 20.0f, 50.0f, - 50.0f, 50.0f, 50.0f, 50.0f, 50.0f, 50.0f, 55.0f, 55.0f, 60.0f, 60.0f, 60.0f, 65.0f, 65.0f, - 70.0f, 70.0f, 70.0f, 70.0f, 70.0f, 70.0f, 70.0f, 70.0f, 70.0f, 70.0f, 70.0f}, - op::v0::Constant::create(IN_ET, Shape{2, 1, 1}, {5.f, 30.f}), - op::v0::Constant::create(IN_ET, Shape{2, 1, 1}, {10.f, 40.f}), - op::v0::Constant::create(IN_ET, Shape{2, 1, 1}, {0.f, 50.f}), - op::v0::Constant::create(IN_ET, Shape{2, 1, 1}, {20.f, 70.f}), - 5, - op::AutoBroadcastSpec(op::AutoBroadcastType::PDPD, 1)), - FakeQuantizeParams(ov::Shape{1, 2, 5, 5}, - ov::Shape{1, 2, 5, 5}, - IN_ET, - IN_ET, - iota_vector(shape_size(Shape{1, 2, 5, 5})), - std::vector{0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 5.0f, 10.0f, 10.0f, 15.0f, 20.0f, 20.0f, 20.0f, - 20.0f, 20.0f, 20.0f, 20.0f, 20.0f, 20.0f, 20.0f, 20.0f, 20.0f, 20.0f, 20.0f, 20.0f, 50.0f, - 50.0f, 50.0f, 50.0f, 50.0f, 50.0f, 50.0f, 55.0f, 55.0f, 60.0f, 60.0f, 60.0f, 65.0f, 65.0f, - 70.0f, 70.0f, 70.0f, 70.0f, 70.0f, 70.0f, 70.0f, 70.0f, 70.0f, 70.0f, 70.0f}, - op::v0::Constant::create(IN_ET, Shape{2, 1, 1}, {5.f, 30.f}), - op::v0::Constant::create(IN_ET, Shape{2, 1, 1}, {10.f, 40.f}), - op::v0::Constant::create(IN_ET, Shape{2, 1, 1}, {0.f, 50.f}), - op::v0::Constant::create(IN_ET, Shape{2, 1, 1}, {20.f, 70.f}), - 5, - op::AutoBroadcastSpec(op::AutoBroadcastType::PDPD, -1)), + FakeQuantizeParams( + ov::Shape{1, 2, 5, 5}, + ov::Shape{1, 2, 5, 5}, + IN_ET, + IN_ET, + iota_vector(shape_size(Shape{1, 2, 5, 5})), + std::vector{0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 5.0f, 10.0f, 10.0f, 15.0f, 20.0f, 20.0f, 20.0f, + 20.0f, 20.0f, 20.0f, 20.0f, 20.0f, 20.0f, 20.0f, 20.0f, 20.0f, 20.0f, 20.0f, 20.0f, 50.0f, + 50.0f, 50.0f, 50.0f, 50.0f, 50.0f, 50.0f, 55.0f, 55.0f, 60.0f, 60.0f, 60.0f, 65.0f, 65.0f, + 70.0f, 70.0f, 70.0f, 70.0f, 70.0f, 70.0f, 70.0f, 70.0f, 70.0f, 70.0f, 70.0f}, + op::v0::Constant::create(IN_ET, Shape{2, 1, 1}, {5.f, 30.f}), + op::v0::Constant::create(IN_ET, Shape{2, 1, 1}, {10.f, 40.f}), + op::v0::Constant::create(IN_ET, Shape{2, 1, 1}, {0.f, 50.f}), + op::v0::Constant::create(IN_ET, Shape{2, 1, 1}, {20.f, 70.f}), + 5), + FakeQuantizeParams( + ov::Shape{1, 2, 5, 5}, + ov::Shape{1, 2, 5, 5}, + IN_ET, + IN_ET, + iota_vector(shape_size(Shape{1, 2, 5, 5})), + std::vector{0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 5.0f, 10.0f, 10.0f, 15.0f, 20.0f, 20.0f, 20.0f, + 20.0f, 20.0f, 20.0f, 20.0f, 20.0f, 20.0f, 20.0f, 20.0f, 20.0f, 20.0f, 20.0f, 20.0f, 50.0f, + 50.0f, 50.0f, 50.0f, 50.0f, 50.0f, 50.0f, 55.0f, 55.0f, 60.0f, 60.0f, 60.0f, 65.0f, 65.0f, + 70.0f, 70.0f, 70.0f, 70.0f, 70.0f, 70.0f, 70.0f, 70.0f, 70.0f, 70.0f, 70.0f}, + op::v0::Constant::create(IN_ET, Shape{2, 1, 1}, {5.f, 30.f}), + op::v0::Constant::create(IN_ET, Shape{2, 1, 1}, {10.f, 40.f}), + op::v0::Constant::create(IN_ET, Shape{2, 1, 1}, {0.f, 50.f}), + op::v0::Constant::create(IN_ET, Shape{2, 1, 1}, {20.f, 70.f}), + 5, + op::AutoBroadcastSpec(op::AutoBroadcastType::PDPD, 1)), + FakeQuantizeParams( + ov::Shape{1, 2, 5, 5}, + ov::Shape{1, 2, 5, 5}, + IN_ET, + IN_ET, + iota_vector(shape_size(Shape{1, 2, 5, 5})), + std::vector{0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 5.0f, 10.0f, 10.0f, 15.0f, 20.0f, 20.0f, 20.0f, + 20.0f, 20.0f, 20.0f, 20.0f, 20.0f, 20.0f, 20.0f, 20.0f, 20.0f, 20.0f, 20.0f, 20.0f, 50.0f, + 50.0f, 50.0f, 50.0f, 50.0f, 50.0f, 50.0f, 55.0f, 55.0f, 60.0f, 60.0f, 60.0f, 65.0f, 65.0f, + 70.0f, 70.0f, 70.0f, 70.0f, 70.0f, 70.0f, 70.0f, 70.0f, 70.0f, 70.0f, 70.0f}, + op::v0::Constant::create(IN_ET, Shape{2, 1, 1}, {5.f, 30.f}), + op::v0::Constant::create(IN_ET, Shape{2, 1, 1}, {10.f, 40.f}), + op::v0::Constant::create(IN_ET, Shape{2, 1, 1}, {0.f, 50.f}), + op::v0::Constant::create(IN_ET, Shape{2, 1, 1}, {20.f, 70.f}), + 5, + op::AutoBroadcastSpec(op::AutoBroadcastType::PDPD, -1)), FakeQuantizeParams(ov::Shape{1, 2, 3, 3}, ov::Shape{1, 2, 3, 3}, IN_ET, IN_ET, iota_vector(shape_size(Shape{1, 2, 3, 3})), - std::vector{5.0f, 9.0f, 13.0f, 17.0f, 21.0f, 25.0f, 25.0f, 25.0f, 25.0f, - 25.0f, 25.0f, 25.0f, 25.0f, 25.0f, 25.0f, 25.0f, 25.0f, 25.0f,}, - op::v0::Constant::create(IN_ET, Shape{1, 1, 3, 3}, {0.f,}), - op::v0::Constant::create(IN_ET, Shape{1, 1, 3, 3}, {5.f,}), - op::v0::Constant::create(IN_ET, Shape{1, 2, 3, 1}, {5.f,}), - op::v0::Constant::create(IN_ET, Shape{1, 2, 1, 3}, {25.f,}), + std::vector{ + 5.0f, + 9.0f, + 13.0f, + 17.0f, + 21.0f, + 25.0f, + 25.0f, + 25.0f, + 25.0f, + 25.0f, + 25.0f, + 25.0f, + 25.0f, + 25.0f, + 25.0f, + 25.0f, + 25.0f, + 25.0f, + }, + op::v0::Constant::create(IN_ET, + Shape{1, 1, 3, 3}, + { + 0.f, + }), + op::v0::Constant::create(IN_ET, + Shape{1, 1, 3, 3}, + { + 5.f, + }), + op::v0::Constant::create(IN_ET, + Shape{1, 2, 3, 1}, + { + 5.f, + }), + op::v0::Constant::create(IN_ET, + Shape{1, 2, 1, 3}, + { + 25.f, + }), 16, op::AutoBroadcastSpec(op::AutoBroadcastType::NUMPY)), }; @@ -219,8 +260,7 @@ std::vector generateParamsForFakeQuantize() { std::vector generateCombinedParamsForFakeQuantize() { const std::vector> allTypeParams{ generateParamsForFakeQuantize(), - generateParamsForFakeQuantize() - }; + generateParamsForFakeQuantize()}; std::vector combinedParams; @@ -231,10 +271,9 @@ std::vector generateCombinedParamsForFakeQuantize() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P( - smoke_FakeQuantize_With_Hardcoded_Refs, - ReferenceFakeQuantizeLayerTest, - ::testing::ValuesIn(generateCombinedParamsForFakeQuantize()), - ReferenceFakeQuantizeLayerTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_FakeQuantize_With_Hardcoded_Refs, + ReferenceFakeQuantizeLayerTest, + ::testing::ValuesIn(generateCombinedParamsForFakeQuantize()), + ReferenceFakeQuantizeLayerTest::getTestCaseName); } // namespace diff --git a/src/plugins/template/tests/functional/op_reference/floor.cpp b/src/plugins/template/tests/functional/op_reference/floor.cpp index 59da7069139..861c1c197e1 100644 --- a/src/plugins/template/tests/functional/op_reference/floor.cpp +++ b/src/plugins/template/tests/functional/op_reference/floor.cpp @@ -2,10 +2,12 @@ // SPDX-License-Identifier: Apache-2.0 // -#include -#include "base_reference_test.hpp" #include "openvino/op/floor.hpp" +#include + +#include "base_reference_test.hpp" + using namespace ov; using namespace reference_tests; @@ -14,9 +16,9 @@ namespace { struct FloorParams { template FloorParams(const PartialShape& shape, - const element::Type& iType, - const std::vector& iValues, - const std::vector& oValues) + const element::Type& iType, + const std::vector& iValues, + const std::vector& oValues) : pshape(shape), inType(iType), outType(iType), @@ -50,8 +52,8 @@ public: private: static std::shared_ptr CreateFunction(const PartialShape& input_shape, - const element::Type& input_type, - const element::Type& expected_output_type) { + const element::Type& input_type, + const element::Type& expected_output_type) { const auto in = std::make_shared(input_type, input_shape); const auto floor = std::make_shared(in); return std::make_shared(NodeVector{floor}, ParameterVector{in}); @@ -66,12 +68,10 @@ template std::vector generateParamsForFloorFloat() { using T = typename element_type_traits::value_type; - std::vector params{ - FloorParams(ov::PartialShape{4}, - IN_ET, - std::vector{-2.5f, -2.0f, 0.3f, 4.8f}, - std::vector{-3.0f, -2.0f, 0.0f, 4.0f}) - }; + std::vector params{FloorParams(ov::PartialShape{4}, + IN_ET, + std::vector{-2.5f, -2.0f, 0.3f, 4.8f}, + std::vector{-3.0f, -2.0f, 0.0f, 4.0f})}; return params; } @@ -79,26 +79,21 @@ template std::vector generateParamsForFloorInt64() { using T = typename element_type_traits::value_type; - std::vector params{ - FloorParams(ov::PartialShape{3}, - IN_ET, - std::vector{0, 1, 0x4000000000000001}, - std::vector{0, 1, 0x4000000000000001}) - }; + std::vector params{FloorParams(ov::PartialShape{3}, + IN_ET, + std::vector{0, 1, 0x4000000000000001}, + std::vector{0, 1, 0x4000000000000001})}; return params; } - template std::vector generateParamsForFloorInt32() { using T = typename element_type_traits::value_type; - std::vector params{ - FloorParams(ov::PartialShape{4}, - IN_ET, - std::vector{2, 136314888, 0x40000010, 0x40000001}, - std::vector{2, 136314888, 0x40000010, 0x40000001}) - }; + std::vector params{FloorParams(ov::PartialShape{4}, + IN_ET, + std::vector{2, 136314888, 0x40000010, 0x40000001}, + std::vector{2, 136314888, 0x40000010, 0x40000001})}; return params; } @@ -107,27 +102,21 @@ std::vector generateParamsForFloorInt() { using T = typename element_type_traits::value_type; std::vector params{ - FloorParams(ov::PartialShape{4}, - IN_ET, - std::vector{2, 64, 0x40, 0x01}, - std::vector{2, 64, 0x40, 0x01}) - }; + FloorParams(ov::PartialShape{4}, IN_ET, std::vector{2, 64, 0x40, 0x01}, std::vector{2, 64, 0x40, 0x01})}; return params; } std::vector generateCombinedParamsForFloor() { - const std::vector> allTypeParams{ - generateParamsForFloorFloat(), - generateParamsForFloorFloat(), - generateParamsForFloorInt64(), - generateParamsForFloorInt32(), - generateParamsForFloorInt(), - generateParamsForFloorInt(), - generateParamsForFloorInt(), - generateParamsForFloorInt(), - generateParamsForFloorInt(), - generateParamsForFloorInt() - }; + const std::vector> allTypeParams{generateParamsForFloorFloat(), + generateParamsForFloorFloat(), + generateParamsForFloorInt64(), + generateParamsForFloorInt32(), + generateParamsForFloorInt(), + generateParamsForFloorInt(), + generateParamsForFloorInt(), + generateParamsForFloorInt(), + generateParamsForFloorInt(), + generateParamsForFloorInt()}; std::vector combinedParams; @@ -138,11 +127,9 @@ std::vector generateCombinedParamsForFloor() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P( - smoke_Floor_With_Hardcoded_Refs, - ReferenceFloorLayerTest, - ::testing::ValuesIn(generateCombinedParamsForFloor()), - ReferenceFloorLayerTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_Floor_With_Hardcoded_Refs, + ReferenceFloorLayerTest, + ::testing::ValuesIn(generateCombinedParamsForFloor()), + ReferenceFloorLayerTest::getTestCaseName); } // namespace - diff --git a/src/plugins/template/tests/functional/op_reference/floor_mod.cpp b/src/plugins/template/tests/functional/op_reference/floor_mod.cpp index 497bea5f9e8..5eb6433a67f 100644 --- a/src/plugins/template/tests/functional/op_reference/floor_mod.cpp +++ b/src/plugins/template/tests/functional/op_reference/floor_mod.cpp @@ -2,10 +2,12 @@ // SPDX-License-Identifier: Apache-2.0 // -#include -#include "base_reference_test.hpp" #include "openvino/op/floor_mod.hpp" +#include + +#include "base_reference_test.hpp" + using namespace ov; using namespace reference_tests; @@ -14,11 +16,11 @@ namespace { struct FloorModParams { template FloorModParams(const PartialShape& iShape1, - const PartialShape& iShape2, - const element::Type& iType, - const std::vector& iValues1, - const std::vector& iValues2, - const std::vector& oValues) + const PartialShape& iShape2, + const element::Type& iType, + const std::vector& iValues1, + const std::vector& iValues2, + const std::vector& oValues) : pshape1(iShape1), pshape2(iShape2), inType(iType), @@ -57,9 +59,9 @@ public: private: static std::shared_ptr CreateFunction(const PartialShape& input_shape1, - const PartialShape& input_shape2, - const element::Type& input_type, - const element::Type& expected_output_type) { + const PartialShape& input_shape2, + const element::Type& input_type, + const element::Type& expected_output_type) { const auto in1 = std::make_shared(input_type, input_shape1); const auto in2 = std::make_shared(input_type, input_shape2); const auto floormod = std::make_shared(in1, in2); @@ -76,14 +78,12 @@ template std::vector generateParamsForFloorMod() { using T = typename element_type_traits::value_type; - std::vector params{ - FloorModParams(ov::PartialShape{4}, - ov::PartialShape{4}, - IN_ET, - std::vector{7, -7, 7, -7}, - std::vector{3, 3, -3, -3}, - std::vector{1, 2, -2, -1}) - }; + std::vector params{FloorModParams(ov::PartialShape{4}, + ov::PartialShape{4}, + IN_ET, + std::vector{7, -7, 7, -7}, + std::vector{3, 3, -3, -3}, + std::vector{1, 2, -2, -1})}; return params; } @@ -129,14 +129,12 @@ std::vector generateParamsForFloorModNonIntegerDivisor() { } std::vector generateCombinedParamsForFloorMod() { - const std::vector> allTypeParams{ - generateParamsForFloorMod(), - generateParamsForFloorMod(), - generateParamsForFloorMod(), - generateParamsForFloorMod(), - generateParamsForFloorMod(), - generateParamsForFloorMod() - }; + const std::vector> allTypeParams{generateParamsForFloorMod(), + generateParamsForFloorMod(), + generateParamsForFloorMod(), + generateParamsForFloorMod(), + generateParamsForFloorMod(), + generateParamsForFloorMod()}; std::vector combinedParams; @@ -150,8 +148,7 @@ std::vector generateCombinedParamsForFloorMod() { std::vector generateCombinedParamsForFloorModBroadcast() { const std::vector> allTypeParams{ generateParamsForFloorModBroadcast(), - generateParamsForFloorModBroadcast() - }; + generateParamsForFloorModBroadcast()}; std::vector combinedParams; @@ -172,8 +169,7 @@ std::vector generateCombinedParamsForFloorModScalar() { generateParamsForFloorModScalar(), generateParamsForFloorModScalar(), generateParamsForFloorModScalar(), - generateParamsForFloorModScalar() - }; + generateParamsForFloorModScalar()}; std::vector combinedParams; @@ -188,28 +184,24 @@ std::vector generateCombinedParamsForFloorModNonIntegerDivisor() return generateParamsForFloorModNonIntegerDivisor(); } -INSTANTIATE_TEST_SUITE_P( - smoke_FloorMod_With_Hardcoded_Refs, - ReferenceFloorModLayerTest, - ::testing::ValuesIn(generateCombinedParamsForFloorMod()), - ReferenceFloorModLayerTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_FloorMod_With_Hardcoded_Refs, + ReferenceFloorModLayerTest, + ::testing::ValuesIn(generateCombinedParamsForFloorMod()), + ReferenceFloorModLayerTest::getTestCaseName); -INSTANTIATE_TEST_SUITE_P( - smoke_FloorMod_Broadcast_With_Hardcoded_Refs, - ReferenceFloorModLayerTest, - ::testing::ValuesIn(generateCombinedParamsForFloorModBroadcast()), - ReferenceFloorModLayerTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_FloorMod_Broadcast_With_Hardcoded_Refs, + ReferenceFloorModLayerTest, + ::testing::ValuesIn(generateCombinedParamsForFloorModBroadcast()), + ReferenceFloorModLayerTest::getTestCaseName); -INSTANTIATE_TEST_SUITE_P( - smoke_FloorMod_Scalar_With_Hardcoded_Refs, - ReferenceFloorModLayerTest, - ::testing::ValuesIn(generateCombinedParamsForFloorModScalar()), - ReferenceFloorModLayerTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_FloorMod_Scalar_With_Hardcoded_Refs, + ReferenceFloorModLayerTest, + ::testing::ValuesIn(generateCombinedParamsForFloorModScalar()), + ReferenceFloorModLayerTest::getTestCaseName); -INSTANTIATE_TEST_SUITE_P( - smoke_FloorMod_NonInteger_Divisor, - ReferenceFloorModLayerTest, - ::testing::ValuesIn(generateCombinedParamsForFloorModNonIntegerDivisor()), - ReferenceFloorModLayerTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_FloorMod_NonInteger_Divisor, + ReferenceFloorModLayerTest, + ::testing::ValuesIn(generateCombinedParamsForFloorModNonIntegerDivisor()), + ReferenceFloorModLayerTest::getTestCaseName); } // namespace diff --git a/src/plugins/template/tests/functional/op_reference/gather.cpp b/src/plugins/template/tests/functional/op_reference/gather.cpp index d158a8b38e3..916cee50407 100644 --- a/src/plugins/template/tests/functional/op_reference/gather.cpp +++ b/src/plugins/template/tests/functional/op_reference/gather.cpp @@ -4,21 +4,26 @@ #include -#include "openvino/opsets/opset8.hpp" -#include "openvino/opsets/opset7.hpp" -#include "openvino/opsets/opset1.hpp" #include "base_reference_test.hpp" +#include "openvino/opsets/opset1.hpp" +#include "openvino/opsets/opset7.hpp" +#include "openvino/opsets/opset8.hpp" using namespace reference_tests; using namespace ov; namespace { struct GatherParams { - GatherParams( - const reference_tests::Tensor& dataTensor, const reference_tests::Tensor& indicesTensor, const reference_tests::Tensor& axisTensor, - const reference_tests::Tensor& expectedTensor, const std::string& testcaseName = "") : - dataTensor(dataTensor), indicesTensor(indicesTensor), axisTensor(axisTensor), - expectedTensor(expectedTensor), testcaseName(testcaseName) {} + GatherParams(const reference_tests::Tensor& dataTensor, + const reference_tests::Tensor& indicesTensor, + const reference_tests::Tensor& axisTensor, + const reference_tests::Tensor& expectedTensor, + const std::string& testcaseName = "") + : dataTensor(dataTensor), + indicesTensor(indicesTensor), + axisTensor(axisTensor), + expectedTensor(expectedTensor), + testcaseName(testcaseName) {} reference_tests::Tensor dataTensor; reference_tests::Tensor indicesTensor; @@ -59,8 +64,8 @@ private: static std::shared_ptr CreateFunction(const GatherParams& params) { const auto P = std::make_shared(params.dataTensor.type, params.dataTensor.shape); const auto I = std::make_shared(params.indicesTensor.type, params.indicesTensor.shape); - const auto A = opset1::Constant::create(params.axisTensor.type, params.axisTensor.shape, - params.axisTensor.data.data()); + const auto A = + opset1::Constant::create(params.axisTensor.type, params.axisTensor.shape, params.axisTensor.data.data()); const auto G = std::make_shared(P, I, A); const auto f = std::make_shared(G, ParameterVector{P, I}); return f; @@ -72,11 +77,18 @@ TEST_P(ReferenceGatherTest, CompareWithRefs) { } struct GatherParamsV7 { - GatherParamsV7( - const reference_tests::Tensor& dataTensor, const reference_tests::Tensor& indicesTensor, const reference_tests::Tensor& axisTensor, int64_t batchDims, - const reference_tests::Tensor& expectedTensor, const std::string& testcaseName = "") : - dataTensor(dataTensor), indicesTensor(indicesTensor), axisTensor(axisTensor), batchDims(batchDims), - expectedTensor(expectedTensor), testcaseName(testcaseName) {} + GatherParamsV7(const reference_tests::Tensor& dataTensor, + const reference_tests::Tensor& indicesTensor, + const reference_tests::Tensor& axisTensor, + int64_t batchDims, + const reference_tests::Tensor& expectedTensor, + const std::string& testcaseName = "") + : dataTensor(dataTensor), + indicesTensor(indicesTensor), + axisTensor(axisTensor), + batchDims(batchDims), + expectedTensor(expectedTensor), + testcaseName(testcaseName) {} reference_tests::Tensor dataTensor; reference_tests::Tensor indicesTensor; @@ -119,8 +131,8 @@ private: static std::shared_ptr CreateFunction(const GatherParamsV7& params) { const auto P = std::make_shared(params.dataTensor.type, params.dataTensor.shape); const auto I = std::make_shared(params.indicesTensor.type, params.indicesTensor.shape); - const auto A = opset1::Constant::create(params.axisTensor.type, params.axisTensor.shape, - params.axisTensor.data.data()); + const auto A = + opset1::Constant::create(params.axisTensor.type, params.axisTensor.shape, params.axisTensor.data.data()); const auto G = std::make_shared(P, I, A, params.batchDims); const auto f = std::make_shared(G, ParameterVector{P, I}); return f; @@ -136,8 +148,8 @@ private: static std::shared_ptr CreateFunction(const GatherParamsV7& params) { const auto P = std::make_shared(params.dataTensor.type, params.dataTensor.shape); const auto I = std::make_shared(params.indicesTensor.type, params.indicesTensor.shape); - const auto A = opset1::Constant::create(params.axisTensor.type, params.axisTensor.shape, - params.axisTensor.data.data()); + const auto A = + opset1::Constant::create(params.axisTensor.type, params.axisTensor.shape, params.axisTensor.data.data()); const auto G = std::make_shared(P, I, A, params.batchDims); const auto f = std::make_shared(G, ParameterVector{P, I}); return f; @@ -153,29 +165,27 @@ std::vector generateParams() { using T = typename element_type_traits::value_type; using T_I = typename element_type_traits::value_type; using T_A = typename element_type_traits::value_type; - std::vector params { - GatherParams( - reference_tests::Tensor(ET, {3, 2}, std::vector{ - 10, 11, 20, 21, 30, 31}), - reference_tests::Tensor(ET_I, {2, 2, 3, 4}, std::vector{ - 0, 1, 1, 2, 0, 1, 1, 2, 0, 1, 1, 2, 0, 1, 1, 2, 0, 1, 1, 2, 0, 1, 1, 2, - 0, 1, 1, 2, 0, 1, 1, 2, 0, 1, 1, 2, 0, 1, 1, 2, 0, 1, 1, 2, 0, 1, 1, 2}), - reference_tests::Tensor(ET_A, {}, std::vector{0}), - reference_tests::Tensor(ET, {2, 2, 3, 4, 2}, std::vector{ - 10, 11, 20, 21, 20, 21, 30, 31, 10, 11, 20, 21, 20, 21, 30, 31, 10, 11, 20, 21, 20, 21, 30, 31, - 10, 11, 20, 21, 20, 21, 30, 31, 10, 11, 20, 21, 20, 21, 30, 31, 10, 11, 20, 21, 20, 21, 30, 31, - 10, 11, 20, 21, 20, 21, 30, 31, 10, 11, 20, 21, 20, 21, 30, 31, 10, 11, 20, 21, 20, 21, 30, 31, - 10, 11, 20, 21, 20, 21, 30, 31, 10, 11, 20, 21, 20, 21, 30, 31, 10, 11, 20, 21, 20, 21, 30, 31}), - "gather_4d_indices_axis_0"), - GatherParams( - reference_tests::Tensor(ET, {3, 2}, std::vector{ - 10, 11, 20, 21, 30, 31}), - reference_tests::Tensor(ET_I, {2, 2}, std::vector{ - 0, 1, 1, 2}), - reference_tests::Tensor(ET_A, {}, std::vector{0}), - reference_tests::Tensor(ET, {2, 2, 2}, std::vector{ - 10, 11, 20, 21, 20, 21, 30, 31}), - "gather_axis_0"), + std::vector params{ + GatherParams(reference_tests::Tensor(ET, {3, 2}, std::vector{10, 11, 20, 21, 30, 31}), + reference_tests::Tensor(ET_I, {2, 2, 3, 4}, std::vector{0, 1, 1, 2, 0, 1, 1, 2, 0, 1, 1, 2, + 0, 1, 1, 2, 0, 1, 1, 2, 0, 1, 1, 2, + 0, 1, 1, 2, 0, 1, 1, 2, 0, 1, 1, 2, + 0, 1, 1, 2, 0, 1, 1, 2, 0, 1, 1, 2}), + reference_tests::Tensor(ET_A, {}, std::vector{0}), + reference_tests::Tensor( + ET, + {2, 2, 3, 4, 2}, + std::vector{10, 11, 20, 21, 20, 21, 30, 31, 10, 11, 20, 21, 20, 21, 30, 31, 10, 11, 20, 21, + 20, 21, 30, 31, 10, 11, 20, 21, 20, 21, 30, 31, 10, 11, 20, 21, 20, 21, 30, 31, + 10, 11, 20, 21, 20, 21, 30, 31, 10, 11, 20, 21, 20, 21, 30, 31, 10, 11, 20, 21, + 20, 21, 30, 31, 10, 11, 20, 21, 20, 21, 30, 31, 10, 11, 20, 21, 20, 21, 30, 31, + 10, 11, 20, 21, 20, 21, 30, 31, 10, 11, 20, 21, 20, 21, 30, 31}), + "gather_4d_indices_axis_0"), + GatherParams(reference_tests::Tensor(ET, {3, 2}, std::vector{10, 11, 20, 21, 30, 31}), + reference_tests::Tensor(ET_I, {2, 2}, std::vector{0, 1, 1, 2}), + reference_tests::Tensor(ET_A, {}, std::vector{0}), + reference_tests::Tensor(ET, {2, 2, 2}, std::vector{10, 11, 20, 21, 20, 21, 30, 31}), + "gather_axis_0"), }; return params; } @@ -185,251 +195,139 @@ std::vector generateParamsFloatValue() { using T = typename element_type_traits::value_type; using T_I = typename element_type_traits::value_type; using T_A = typename element_type_traits::value_type; - std::vector params { + std::vector params{ + GatherParams(reference_tests::Tensor(ET, {3, 2}, std::vector{1.0f, 1.1f, 2.0f, 2.1f, 3.0f, 3.1f}), + reference_tests::Tensor(ET_I, {2, 2, 3, 4}, std::vector{0, 1, 1, 2, 0, 1, 1, 2, 0, 1, 1, 2, + + 0, 1, 1, 2, 0, 1, 1, 2, 0, 1, 1, 2, + + 0, 1, 1, 2, 0, 1, 1, 2, 0, 1, 1, 2, + + 0, 1, 1, 2, 0, 1, 1, 2, 0, 1, 1, 2}), + reference_tests::Tensor(ET_A, {}, std::vector{0}), + reference_tests::Tensor(ET, + {2, 2, 3, 4, 2}, + std::vector{1.0f, 1.1f, 2.0f, 2.1f, 2.0f, 2.1f, 3.0f, 3.1f, + + 1.0f, 1.1f, 2.0f, 2.1f, 2.0f, 2.1f, 3.0f, 3.1f, + + 1.0f, 1.1f, 2.0f, 2.1f, 2.0f, 2.1f, 3.0f, 3.1f, + + 1.0f, 1.1f, 2.0f, 2.1f, 2.0f, 2.1f, 3.0f, 3.1f, + + 1.0f, 1.1f, 2.0f, 2.1f, 2.0f, 2.1f, 3.0f, 3.1f, + + 1.0f, 1.1f, 2.0f, 2.1f, 2.0f, 2.1f, 3.0f, 3.1f, + + 1.0f, 1.1f, 2.0f, 2.1f, 2.0f, 2.1f, 3.0f, 3.1f, + + 1.0f, 1.1f, 2.0f, 2.1f, 2.0f, 2.1f, 3.0f, 3.1f, + + 1.0f, 1.1f, 2.0f, 2.1f, 2.0f, 2.1f, 3.0f, 3.1f, + + 1.0f, 1.1f, 2.0f, 2.1f, 2.0f, 2.1f, 3.0f, 3.1f, + + 1.0f, 1.1f, 2.0f, 2.1f, 2.0f, 2.1f, 3.0f, 3.1f, + + 1.0f, 1.1f, 2.0f, 2.1f, 2.0f, 2.1f, 3.0f, 3.1f}), + "gather_4d_indices_axis_0_2d_input"), GatherParams( - reference_tests::Tensor(ET, {3, 2}, std::vector{ - 1.0f, 1.1f, - 2.0f, 2.1f, - 3.0f, 3.1f}), - reference_tests::Tensor(ET_I, {2, 2, 3, 4}, std::vector{ - 0, 1, 1, 2, - 0, 1, 1, 2, - 0, 1, 1, 2, + reference_tests::Tensor(ET, {3, 2}, std::vector{1.0f, 1.1f, 2.0f, 2.1f, 3.0f, 3.1f}), + reference_tests::Tensor(ET_I, {2, 3, 4}, std::vector{0, 1, 1, 2, 0, 1, 1, 2, 0, 1, 1, 2, - 0, 1, 1, 2, - 0, 1, 1, 2, - 0, 1, 1, 2, - - - 0, 1, 1, 2, - 0, 1, 1, 2, - 0, 1, 1, 2, - - 0, 1, 1, 2, - 0, 1, 1, 2, - 0, 1, 1, 2}), + 0, 1, 1, 2, 0, 1, 1, 2, 0, 1, 1, 2}), reference_tests::Tensor(ET_A, {}, std::vector{0}), - reference_tests::Tensor(ET, {2, 2, 3, 4, 2}, std::vector{ - 1.0f, 1.1f, - 2.0f, 2.1f, - 2.0f, 2.1f, - 3.0f, 3.1f, + reference_tests::Tensor(ET, {2, 3, 4, 2}, std::vector{1.0f, 1.1f, 2.0f, 2.1f, 2.0f, 2.1f, 3.0f, 3.1f, - 1.0f, 1.1f, - 2.0f, 2.1f, - 2.0f, 2.1f, - 3.0f, 3.1f, + 1.0f, 1.1f, 2.0f, 2.1f, 2.0f, 2.1f, 3.0f, 3.1f, - 1.0f, 1.1f, - 2.0f, 2.1f, - 2.0f, 2.1f, - 3.0f, 3.1f, + 1.0f, 1.1f, 2.0f, 2.1f, 2.0f, 2.1f, 3.0f, 3.1f, + 1.0f, 1.1f, 2.0f, 2.1f, 2.0f, 2.1f, 3.0f, 3.1f, - 1.0f, 1.1f, - 2.0f, 2.1f, - 2.0f, 2.1f, - 3.0f, 3.1f, + 1.0f, 1.1f, 2.0f, 2.1f, 2.0f, 2.1f, 3.0f, 3.1f, - 1.0f, 1.1f, - 2.0f, 2.1f, - 2.0f, 2.1f, - 3.0f, 3.1f, - - 1.0f, 1.1f, - 2.0f, 2.1f, - 2.0f, 2.1f, - 3.0f, 3.1f, - - - - 1.0f, 1.1f, - 2.0f, 2.1f, - 2.0f, 2.1f, - 3.0f, 3.1f, - - - 1.0f, 1.1f, - 2.0f, 2.1f, - 2.0f, 2.1f, - 3.0f, 3.1f, - - 1.0f, 1.1f, - 2.0f, 2.1f, - 2.0f, 2.1f, - 3.0f, 3.1f, - - - 1.0f, 1.1f, - 2.0f, 2.1f, - 2.0f, 2.1f, - 3.0f, 3.1f, - - 1.0f, 1.1f, - 2.0f, 2.1f, - 2.0f, 2.1f, - 3.0f, 3.1f, - - 1.0f, 1.1f, - 2.0f, 2.1f, - 2.0f, 2.1f, - 3.0f, 3.1f}), - "gather_4d_indices_axis_0_2d_input"), - GatherParams( - reference_tests::Tensor(ET, {3, 2}, std::vector{ - 1.0f, 1.1f, - 2.0f, 2.1f, - 3.0f, 3.1f}), - reference_tests::Tensor(ET_I, {2, 3, 4}, std::vector{ - 0, 1, 1, 2, - 0, 1, 1, 2, - 0, 1, 1, 2, - - 0, 1, 1, 2, - 0, 1, 1, 2, - 0, 1, 1, 2}), - reference_tests::Tensor(ET_A, {}, std::vector{0}), - reference_tests::Tensor(ET, {2, 3, 4, 2}, std::vector{ - 1.0f, 1.1f, - 2.0f, 2.1f, - 2.0f, 2.1f, - 3.0f, 3.1f, - - 1.0f, 1.1f, - 2.0f, 2.1f, - 2.0f, 2.1f, - 3.0f, 3.1f, - - 1.0f, 1.1f, - 2.0f, 2.1f, - 2.0f, 2.1f, - 3.0f, 3.1f, - - - 1.0f, 1.1f, - 2.0f, 2.1f, - 2.0f, 2.1f, - 3.0f, 3.1f, - - 1.0f, 1.1f, - 2.0f, 2.1f, - 2.0f, 2.1f, - 3.0f, 3.1f, - - 1.0f, 1.1f, - 2.0f, 2.1f, - 2.0f, 2.1f, - 3.0f, 3.1f}), + 1.0f, 1.1f, 2.0f, 2.1f, 2.0f, 2.1f, 3.0f, 3.1f}), "gather_3d_indices_axis_0_2d_input"), - GatherParams( - reference_tests::Tensor(ET, {3, 2}, std::vector{ - 1.0f, 1.1f, - 2.0f, 2.1f, - 3.0f, 3.1f}), - reference_tests::Tensor(ET_I, {2, 2}, std::vector{ - 0, 1, 1, 2}), - reference_tests::Tensor(ET_A, {}, std::vector{0}), - reference_tests::Tensor(ET, {2, 2, 2}, std::vector{ - 1.0f, 1.1f, - 2.0f, 2.1f, + GatherParams(reference_tests::Tensor(ET, {3, 2}, std::vector{1.0f, 1.1f, 2.0f, 2.1f, 3.0f, 3.1f}), + reference_tests::Tensor(ET_I, {2, 2}, std::vector{0, 1, 1, 2}), + reference_tests::Tensor(ET_A, {}, std::vector{0}), + reference_tests::Tensor(ET, + {2, 2, 2}, + std::vector{1.0f, + 1.1f, + 2.0f, + 2.1f, - 2.0f, 2.1f, - 3.0f, 3.1f}), - "gather_2d_indices_axis_0_2d_input"), - GatherParams( - reference_tests::Tensor(ET, {3, 2}, std::vector{ - 1.0f, 1.1f, - 2.0f, 2.1f, - 3.0f, 3.1f}), - reference_tests::Tensor(ET_I, {2, 2}, std::vector{ - 0, -2, 1, 2}), - reference_tests::Tensor(ET_A, {}, std::vector{0}), - reference_tests::Tensor(ET, {2, 2, 2}, std::vector{ - 1.0f, 1.1f, - 2.0f, 2.1f, + 2.0f, + 2.1f, + 3.0f, + 3.1f}), + "gather_2d_indices_axis_0_2d_input"), + GatherParams(reference_tests::Tensor(ET, {3, 2}, std::vector{1.0f, 1.1f, 2.0f, 2.1f, 3.0f, 3.1f}), + reference_tests::Tensor(ET_I, {2, 2}, std::vector{0, -2, 1, 2}), + reference_tests::Tensor(ET_A, {}, std::vector{0}), + reference_tests::Tensor(ET, + {2, 2, 2}, + std::vector{1.0f, + 1.1f, + 2.0f, + 2.1f, - 2.0f, 2.1f, - 3.0f, 3.1f}), - "gather_2d_negative_and_positive_indices_axis_0_2d_input"), + 2.0f, + 2.1f, + 3.0f, + 3.1f}), + "gather_2d_negative_and_positive_indices_axis_0_2d_input"), + GatherParams(reference_tests::Tensor(ET, {3}, std::vector{1.0f, 2.0f, 3.0f}), + reference_tests::Tensor(ET_I, {2}, std::vector{1, 0}), + reference_tests::Tensor(ET_A, {}, std::vector{0}), + reference_tests::Tensor(ET, {2}, std::vector{2.0f, 1.0f}), + "gather_1d_indices_axis_0_1d_input"), + GatherParams(reference_tests::Tensor(ET, {3, 2}, std::vector{1.0f, 1.1f, 2.0f, 2.1f, 3.0f, 3.1f}), + reference_tests::Tensor(ET_I, {}, std::vector{1}), + reference_tests::Tensor(ET_A, {}, std::vector{0}), + reference_tests::Tensor(ET, {2}, std::vector{2.0f, 2.1f}), + "gather_scalar_indices_axis_0_2d_input"), GatherParams( - reference_tests::Tensor(ET, {3}, std::vector{ - 1.0f, 2.0f, 3.0f}), - reference_tests::Tensor(ET_I, {2}, std::vector{ - 1, 0}), - reference_tests::Tensor(ET_A, {}, std::vector{0}), - reference_tests::Tensor(ET, {2}, std::vector{ - 2.0f, 1.0f}), - "gather_1d_indices_axis_0_1d_input"), - GatherParams( - reference_tests::Tensor(ET, {3, 2}, std::vector{ - 1.0f, 1.1f, 2.0f, 2.1f, 3.0f, 3.1f}), - reference_tests::Tensor(ET_I, {}, std::vector{1}), - reference_tests::Tensor(ET_A, {}, std::vector{0}), - reference_tests::Tensor(ET, {2}, std::vector{ - 2.0f, 2.1f}), - "gather_scalar_indices_axis_0_2d_input"), - GatherParams( - reference_tests::Tensor(ET, {3, 3}, std::vector{ - 1.0f, 1.1f, 1.2f, - 2.0f, 2.1f, 2.2f, - 3.0f, 3.1f, 3.2f}), - reference_tests::Tensor(ET_I, {1, 2}, std::vector{ - 0, 2}), + reference_tests::Tensor(ET, {3, 3}, std::vector{1.0f, 1.1f, 1.2f, 2.0f, 2.1f, 2.2f, 3.0f, 3.1f, 3.2f}), + reference_tests::Tensor(ET_I, {1, 2}, std::vector{0, 2}), reference_tests::Tensor(ET_A, {}, std::vector{1}), - reference_tests::Tensor(ET, {3, 1, 2}, std::vector{ - 1.0f, 1.2f, - 2.0f, 2.2f, - 3.0f, 3.2f}), + reference_tests::Tensor(ET, {3, 1, 2}, std::vector{1.0f, 1.2f, 2.0f, 2.2f, 3.0f, 3.2f}), "gather_2d_indices_axis_1_2d_input"), GatherParams( - reference_tests::Tensor(ET, {2, 2, 3, 3}, std::vector{ - 1.0f, 1.1f, 1.2f, - 2.0f, 2.1f, 2.2f, - 3.0f, 3.1f, 3.2f, + reference_tests::Tensor( + ET, + {2, 2, 3, 3}, + std::vector{1.0f, 1.1f, 1.2f, 2.0f, 2.1f, 2.2f, 3.0f, 3.1f, 3.2f, - 11.0f, 11.1f, 11.2f, - 12.0f, 12.1f, 12.2f, - 13.0f, 13.1f, 13.2f, + 11.0f, 11.1f, 11.2f, 12.0f, 12.1f, 12.2f, 13.0f, 13.1f, 13.2f, + 101.0f, 101.1f, 101.2f, 102.0f, 102.1f, 102.2f, 103.0f, 103.1f, 103.2f, - 101.0f, 101.1f, 101.2f, - 102.0f, 102.1f, 102.2f, - 103.0f, 103.1f, 103.2f, - - 111.0f, 111.1f, 111.2f, - 112.0f, 112.1f, 112.2f, - 113.0f, 113.1f, 113.2f}), - reference_tests::Tensor(ET_I, {2}, std::vector{ - 0, 2}), + 111.0f, 111.1f, 111.2f, 112.0f, 112.1f, 112.2f, 113.0f, 113.1f, 113.2f}), + reference_tests::Tensor(ET_I, {2}, std::vector{0, 2}), reference_tests::Tensor(ET_A, {}, std::vector{2}), - reference_tests::Tensor(ET, {2, 2, 2, 3}, std::vector{ - 1.0f, 1.1f, 1.2f, - 3.0f, 3.1f, 3.2f, + reference_tests::Tensor(ET, {2, 2, 2, 3}, std::vector{1.0f, 1.1f, 1.2f, 3.0f, 3.1f, 3.2f, - 11.0f, 11.1f, 11.2f, - 13.0f, 13.1f, 13.2f, + 11.0f, 11.1f, 11.2f, 13.0f, 13.1f, 13.2f, + 101.0f, 101.1f, 101.2f, 103.0f, 103.1f, 103.2f, - 101.0f, 101.1f, 101.2f, - 103.0f, 103.1f, 103.2f, - - 111.0f, 111.1f, 111.2f, - 113.0f, 113.1f, 113.2f}), + 111.0f, 111.1f, 111.2f, 113.0f, 113.1f, 113.2f}), "gather_1d_indices_axis_2_4d_input"), GatherParams( - reference_tests::Tensor(ET, {3, 3}, std::vector{ - 1.0f, 1.1f, 1.2f, 2.0f, 2.1f, 2.2f, 3.0f, 3.1f, 3.2f}), + reference_tests::Tensor(ET, {3, 3}, std::vector{1.0f, 1.1f, 1.2f, 2.0f, 2.1f, 2.2f, 3.0f, 3.1f, 3.2f}), reference_tests::Tensor(ET_I, {}, std::vector{0}), reference_tests::Tensor(ET_A, {}, std::vector{1}), - reference_tests::Tensor(ET, {3}, std::vector{ - 1.0f, 2.0f, 3.0f}), + reference_tests::Tensor(ET, {3}, std::vector{1.0f, 2.0f, 3.0f}), "gather_scalar_indices_axis_1_2d_input"), }; return params; } std::vector generateCombinedParams() { - const std::vector> generatedParams { + const std::vector> generatedParams{ generateParams(), generateParams(), generateParams(), @@ -451,106 +349,79 @@ std::vector generateCombinedParams() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_Gather_With_Hardcoded_Refs, ReferenceGatherTest, - testing::ValuesIn(generateCombinedParams()), ReferenceGatherTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_Gather_With_Hardcoded_Refs, + ReferenceGatherTest, + testing::ValuesIn(generateCombinedParams()), + ReferenceGatherTest::getTestCaseName); template std::vector generateParamsV7() { using T = typename element_type_traits::value_type; using T_I = typename element_type_traits::value_type; using T_A = typename element_type_traits::value_type; - std::vector params { - GatherParamsV7( - reference_tests::Tensor(ET, {3}, std::vector{ - 1, 2, 3}), - reference_tests::Tensor(ET_I, {2}, std::vector{ - 2, 0}), - reference_tests::Tensor(ET_A, {}, std::vector{0}), - 0, - reference_tests::Tensor(ET, {2}, std::vector{ - 3, 1}), - "gather_v7_1d"), - GatherParamsV7( - reference_tests::Tensor(ET, {3, 2}, std::vector{ - 10, 11, 20, 21, 30, 31}), - reference_tests::Tensor(ET_I, {2, 2}, std::vector{ - 0, 1, 1, 2}), - reference_tests::Tensor(ET_A, {}, std::vector{0}), - 0, - reference_tests::Tensor(ET, {2, 2, 2}, std::vector{ - 10, 11, 20, 21, 20, 21, 30, 31}), - "gather_v7_axis_0"), - GatherParamsV7( - reference_tests::Tensor(ET, {2, 3}, std::vector{ - 1, 2, 3, - 4, 5, 6}), - reference_tests::Tensor(ET_I, {2, 2, 2}, std::vector{ - 0, 1, - 1, 2, + std::vector params{ + GatherParamsV7(reference_tests::Tensor(ET, {3}, std::vector{1, 2, 3}), + reference_tests::Tensor(ET_I, {2}, std::vector{2, 0}), + reference_tests::Tensor(ET_A, {}, std::vector{0}), + 0, + reference_tests::Tensor(ET, {2}, std::vector{3, 1}), + "gather_v7_1d"), + GatherParamsV7(reference_tests::Tensor(ET, {3, 2}, std::vector{10, 11, 20, 21, 30, 31}), + reference_tests::Tensor(ET_I, {2, 2}, std::vector{0, 1, 1, 2}), + reference_tests::Tensor(ET_A, {}, std::vector{0}), + 0, + reference_tests::Tensor(ET, {2, 2, 2}, std::vector{10, 11, 20, 21, 20, 21, 30, 31}), + "gather_v7_axis_0"), + GatherParamsV7(reference_tests::Tensor(ET, {2, 3}, std::vector{1, 2, 3, 4, 5, 6}), + reference_tests::Tensor(ET_I, + {2, 2, 2}, + std::vector{0, + 1, + 1, + 2, - 2, 0, - 1, 2}), - reference_tests::Tensor(ET_A, {}, std::vector{1}), - 1, - reference_tests::Tensor(ET, {2, 2, 2}, std::vector{ - 1, 2, - 2, 3, + 2, + 0, + 1, + 2}), + reference_tests::Tensor(ET_A, {}, std::vector{1}), + 1, + reference_tests::Tensor(ET, + {2, 2, 2}, + std::vector{1, + 2, + 2, + 3, - 6, 4, - 5, 6}), - "gather_v7_data_int32_3d_indices_axis_1_batch_dims_1"), + 6, + 4, + 5, + 6}), + "gather_v7_data_int32_3d_indices_axis_1_batch_dims_1"), + GatherParamsV7(reference_tests::Tensor(ET, {2, 5}, std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}), + reference_tests::Tensor(ET_I, {2, 3}, std::vector{0, 0, 4, 4, 0, 0}), + reference_tests::Tensor(ET_A, {}, std::vector{1}), + 1, + reference_tests::Tensor(ET, {2, 3}, std::vector{1, 1, 5, 10, 6, 6}), + "gather_v7_data_int32_2d_indices_axis_1_batch_dims_1"), + GatherParamsV7(reference_tests::Tensor(ET, {2, 5}, std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}), + reference_tests::Tensor(ET_I, {2, 3}, std::vector{0, 0, 4, 4, 0, 0}), + reference_tests::Tensor(ET_A, {}, std::vector{1}), + -1, + reference_tests::Tensor(ET, {2, 3}, std::vector{1, 1, 5, 10, 6, 6}), + "gather_v7_data_int32_2d_indices_axis_1_negative_batch_dims"), GatherParamsV7( - reference_tests::Tensor(ET, {2, 5}, std::vector{ - 1, 2, 3, 4, 5, - 6, 7, 8, 9, 10}), - reference_tests::Tensor(ET_I, {2, 3}, std::vector{ - 0, 0, 4, - 4, 0, 0}), - reference_tests::Tensor(ET_A, {}, std::vector{1}), - 1, - reference_tests::Tensor(ET, {2, 3}, std::vector{ - 1, 1, 5, - 10, 6, 6}), - "gather_v7_data_int32_2d_indices_axis_1_batch_dims_1"), - GatherParamsV7( - reference_tests::Tensor(ET, {2, 5}, std::vector{ - 1, 2, 3, 4, 5, - 6, 7, 8, 9, 10}), - reference_tests::Tensor(ET_I, {2, 3}, std::vector{ - 0, 0, 4, - 4, 0, 0}), - reference_tests::Tensor(ET_A, {}, std::vector{1}), - -1, - reference_tests::Tensor(ET, {2, 3}, std::vector{ - 1, 1, 5, - 10, 6, 6}), - "gather_v7_data_int32_2d_indices_axis_1_negative_batch_dims"), - GatherParamsV7( - reference_tests::Tensor(ET, {2, 1, 5, 4}, std::vector{ - 1, 2, 3, 4, - 5, 6, 7, 8, - 9, 10, 11, 12, - 13, 14, 15, 16, - 17, 18, 19, 20, + reference_tests::Tensor(ET, {2, 1, 5, 4}, std::vector{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}), - reference_tests::Tensor(ET_I, {2, 3}, std::vector{ - 1, 2, 4, - 4, 3, 2}), + 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, + 31, 32, 33, 34, 35, 36, 37, 38, 39, 40}), + reference_tests::Tensor(ET_I, {2, 3}, std::vector{1, 2, 4, 4, 3, 2}), reference_tests::Tensor(ET_A, {}, std::vector{2}), 1, - reference_tests::Tensor(ET, {2, 1, 3, 4}, std::vector{ - 5, 6, 7, 8, - 9, 10, 11, 12, - 17, 18, 19, 20, + reference_tests::Tensor(ET, {2, 1, 3, 4}, std::vector{5, 6, 7, 8, 9, 10, 11, 12, 17, 18, 19, 20, - 37, 38, 39, 40, - 33, 34, 35, 36, - 29, 30, 31, 32}), + 37, 38, 39, 40, 33, 34, 35, 36, 29, 30, 31, 32}), "gather_v7_4d_data_axis_2_batch_dims_1_int32"), }; return params; @@ -558,17 +429,13 @@ std::vector generateParamsV7() { template <> std::vector generateParamsV7() { - std::vector params { - GatherParamsV7( - reference_tests::Tensor(element::boolean, {3, 2}, std::vector{ - 1, 1, 1, 0, 0, 1}), - reference_tests::Tensor(element::i32, {2, 2}, std::vector{ - 0, 1, 1, 2}), - reference_tests::Tensor(element::i64, {}, std::vector{0}), - 0, - reference_tests::Tensor(element::boolean, {2, 2, 2}, std::vector{ - 1, 1, 1, 0, 1, 0, 0, 1}), - "gather_v7_axis_0_bool"), + std::vector params{ + GatherParamsV7(reference_tests::Tensor(element::boolean, {3, 2}, std::vector{1, 1, 1, 0, 0, 1}), + reference_tests::Tensor(element::i32, {2, 2}, std::vector{0, 1, 1, 2}), + reference_tests::Tensor(element::i64, {}, std::vector{0}), + 0, + reference_tests::Tensor(element::boolean, {2, 2, 2}, std::vector{1, 1, 1, 0, 1, 0, 0, 1}), + "gather_v7_axis_0_bool"), }; return params; } @@ -578,299 +445,180 @@ std::vector generateParamsFloatValueV7() { using T = typename element_type_traits::value_type; using T_I = typename element_type_traits::value_type; using T_A = typename element_type_traits::value_type; - std::vector params { + std::vector params{ GatherParamsV7( - reference_tests::Tensor(ET, {3, 2}, std::vector{ - 1.0f, 1.1f, - 2.0f, 2.1f, - 3.0f, 3.1f}), - reference_tests::Tensor(ET_I, {2, 2, 3, 4}, std::vector{ - 0, 1, 1, 2, - 0, 1, 1, 2, - 0, 1, 1, 2, + reference_tests::Tensor(ET, {3, 2}, std::vector{1.0f, 1.1f, 2.0f, 2.1f, 3.0f, 3.1f}), + reference_tests::Tensor(ET_I, {2, 2, 3, 4}, std::vector{0, 1, 1, 2, 0, 1, 1, 2, 0, 1, 1, 2, - 0, 1, 1, 2, - 0, 1, 1, 2, - 0, 1, 1, 2, + 0, 1, 1, 2, 0, 1, 1, 2, 0, 1, 1, 2, + 0, 1, 1, 2, 0, 1, 1, 2, 0, 1, 1, 2, - 0, 1, 1, 2, - 0, 1, 1, 2, - 0, 1, 1, 2, - - 0, 1, 1, 2, - 0, 1, 1, 2, - 0, 1, 1, 2}), + 0, 1, 1, 2, 0, 1, 1, 2, 0, 1, 1, 2}), reference_tests::Tensor(ET_A, {}, std::vector{0}), 0, - reference_tests::Tensor(ET, {2, 2, 3, 4, 2}, std::vector{ - 1.0f, 1.1f, - 2.0f, 2.1f, - 2.0f, 2.1f, - 3.0f, 3.1f, + reference_tests::Tensor(ET, + {2, 2, 3, 4, 2}, + std::vector{1.0f, 1.1f, 2.0f, 2.1f, 2.0f, 2.1f, 3.0f, 3.1f, - 1.0f, 1.1f, - 2.0f, 2.1f, - 2.0f, 2.1f, - 3.0f, 3.1f, + 1.0f, 1.1f, 2.0f, 2.1f, 2.0f, 2.1f, 3.0f, 3.1f, - 1.0f, 1.1f, - 2.0f, 2.1f, - 2.0f, 2.1f, - 3.0f, 3.1f, + 1.0f, 1.1f, 2.0f, 2.1f, 2.0f, 2.1f, 3.0f, 3.1f, + 1.0f, 1.1f, 2.0f, 2.1f, 2.0f, 2.1f, 3.0f, 3.1f, - 1.0f, 1.1f, - 2.0f, 2.1f, - 2.0f, 2.1f, - 3.0f, 3.1f, + 1.0f, 1.1f, 2.0f, 2.1f, 2.0f, 2.1f, 3.0f, 3.1f, - 1.0f, 1.1f, - 2.0f, 2.1f, - 2.0f, 2.1f, - 3.0f, 3.1f, + 1.0f, 1.1f, 2.0f, 2.1f, 2.0f, 2.1f, 3.0f, 3.1f, - 1.0f, 1.1f, - 2.0f, 2.1f, - 2.0f, 2.1f, - 3.0f, 3.1f, + 1.0f, 1.1f, 2.0f, 2.1f, 2.0f, 2.1f, 3.0f, 3.1f, + 1.0f, 1.1f, 2.0f, 2.1f, 2.0f, 2.1f, 3.0f, 3.1f, + 1.0f, 1.1f, 2.0f, 2.1f, 2.0f, 2.1f, 3.0f, 3.1f, - 1.0f, 1.1f, - 2.0f, 2.1f, - 2.0f, 2.1f, - 3.0f, 3.1f, + 1.0f, 1.1f, 2.0f, 2.1f, 2.0f, 2.1f, 3.0f, 3.1f, + 1.0f, 1.1f, 2.0f, 2.1f, 2.0f, 2.1f, 3.0f, 3.1f, - 1.0f, 1.1f, - 2.0f, 2.1f, - 2.0f, 2.1f, - 3.0f, 3.1f, - - 1.0f, 1.1f, - 2.0f, 2.1f, - 2.0f, 2.1f, - 3.0f, 3.1f, - - - 1.0f, 1.1f, - 2.0f, 2.1f, - 2.0f, 2.1f, - 3.0f, 3.1f, - - 1.0f, 1.1f, - 2.0f, 2.1f, - 2.0f, 2.1f, - 3.0f, 3.1f, - - 1.0f, 1.1f, - 2.0f, 2.1f, - 2.0f, 2.1f, - 3.0f, 3.1f}), + 1.0f, 1.1f, 2.0f, 2.1f, 2.0f, 2.1f, 3.0f, 3.1f}), "gather_v7_4d_indices_axis_0_2d_input"), GatherParamsV7( - reference_tests::Tensor(ET, {3, 2}, std::vector{ - 1.0f, 1.1f, - 2.0f, 2.1f, - 3.0f, 3.1f}), - reference_tests::Tensor(ET_I, {2, 3, 4}, std::vector{ - 0, 1, 1, 2, - 0, 1, 1, 2, - 0, 1, 1, 2, + reference_tests::Tensor(ET, {3, 2}, std::vector{1.0f, 1.1f, 2.0f, 2.1f, 3.0f, 3.1f}), + reference_tests::Tensor(ET_I, {2, 3, 4}, std::vector{0, 1, 1, 2, 0, 1, 1, 2, 0, 1, 1, 2, - 0, 1, 1, 2, - 0, 1, 1, 2, - 0, 1, 1, 2}), + 0, 1, 1, 2, 0, 1, 1, 2, 0, 1, 1, 2}), reference_tests::Tensor(ET_A, {}, std::vector{0}), 0, - reference_tests::Tensor(ET, {2, 3, 4, 2}, std::vector{ - 1.0f, 1.1f, - 2.0f, 2.1f, - 2.0f, 2.1f, - 3.0f, 3.1f, + reference_tests::Tensor(ET, {2, 3, 4, 2}, std::vector{1.0f, 1.1f, 2.0f, 2.1f, 2.0f, 2.1f, 3.0f, 3.1f, - 1.0f, 1.1f, - 2.0f, 2.1f, - 2.0f, 2.1f, - 3.0f, 3.1f, + 1.0f, 1.1f, 2.0f, 2.1f, 2.0f, 2.1f, 3.0f, 3.1f, - 1.0f, 1.1f, - 2.0f, 2.1f, - 2.0f, 2.1f, - 3.0f, 3.1f, + 1.0f, 1.1f, 2.0f, 2.1f, 2.0f, 2.1f, 3.0f, 3.1f, + 1.0f, 1.1f, 2.0f, 2.1f, 2.0f, 2.1f, 3.0f, 3.1f, - 1.0f, 1.1f, - 2.0f, 2.1f, - 2.0f, 2.1f, - 3.0f, 3.1f, + 1.0f, 1.1f, 2.0f, 2.1f, 2.0f, 2.1f, 3.0f, 3.1f, - 1.0f, 1.1f, - 2.0f, 2.1f, - 2.0f, 2.1f, - 3.0f, 3.1f, - - 1.0f, 1.1f, - 2.0f, 2.1f, - 2.0f, 2.1f, - 3.0f, 3.1f}), + 1.0f, 1.1f, 2.0f, 2.1f, 2.0f, 2.1f, 3.0f, 3.1f}), "gather_v7_3d_indices_axis_0_2d_input"), - GatherParamsV7( - reference_tests::Tensor(ET, {3, 2}, std::vector{ - 1.0f, 1.1f, - 2.0f, 2.1f, - 3.0f, 3.1f}), - reference_tests::Tensor(ET_I, {2, 2}, std::vector{ - 0, 1, 1, 2}), - reference_tests::Tensor(ET_A, {}, std::vector{0}), - 0, - reference_tests::Tensor(ET, {2, 2, 2}, std::vector{ - 1.0f, 1.1f, - 2.0f, 2.1f, + GatherParamsV7(reference_tests::Tensor(ET, {3, 2}, std::vector{1.0f, 1.1f, 2.0f, 2.1f, 3.0f, 3.1f}), + reference_tests::Tensor(ET_I, {2, 2}, std::vector{0, 1, 1, 2}), + reference_tests::Tensor(ET_A, {}, std::vector{0}), + 0, + reference_tests::Tensor(ET, + {2, 2, 2}, + std::vector{1.0f, + 1.1f, + 2.0f, + 2.1f, - 2.0f, 2.1f, - 3.0f, 3.1f}), - "gather_v7_2d_indices_axis_0_2d_input"), - GatherParamsV7( - reference_tests::Tensor(ET, {3, 2}, std::vector{ - 1.0f, 1.1f, - 2.0f, 2.1f, - 3.0f, 3.1f}), - reference_tests::Tensor(ET_I, {2, 2}, std::vector{ - 0, -2, 1, 2}), - reference_tests::Tensor(ET_A, {}, std::vector{0}), - 0, - reference_tests::Tensor(ET, {2, 2, 2}, std::vector{ - 1.0f, 1.1f, - 2.0f, 2.1f, + 2.0f, + 2.1f, + 3.0f, + 3.1f}), + "gather_v7_2d_indices_axis_0_2d_input"), + GatherParamsV7(reference_tests::Tensor(ET, {3, 2}, std::vector{1.0f, 1.1f, 2.0f, 2.1f, 3.0f, 3.1f}), + reference_tests::Tensor(ET_I, {2, 2}, std::vector{0, -2, 1, 2}), + reference_tests::Tensor(ET_A, {}, std::vector{0}), + 0, + reference_tests::Tensor(ET, + {2, 2, 2}, + std::vector{1.0f, + 1.1f, + 2.0f, + 2.1f, - 2.0f, 2.1f, - 3.0f, 3.1f}), - "gather_v7_2d_negative_and_positive_indices_axis_0_2d_input"), + 2.0f, + 2.1f, + 3.0f, + 3.1f}), + "gather_v7_2d_negative_and_positive_indices_axis_0_2d_input"), + GatherParamsV7(reference_tests::Tensor(ET, {3}, std::vector{1.0f, 2.0f, 3.0f}), + reference_tests::Tensor(ET_I, {2}, std::vector{1, 0}), + reference_tests::Tensor(ET_A, {}, std::vector{0}), + 0, + reference_tests::Tensor(ET, {2}, std::vector{2.0f, 1.0f}), + "gather_v7_1d_indices_axis_0_1d_input"), + GatherParamsV7(reference_tests::Tensor(ET, {3, 2}, std::vector{1.0f, 1.1f, 2.0f, 2.1f, 3.0f, 3.1f}), + reference_tests::Tensor(ET_I, {}, std::vector{1}), + reference_tests::Tensor(ET_A, {}, std::vector{0}), + 0, + reference_tests::Tensor(ET, {2}, std::vector{2.0f, 2.1f}), + "gather_v7_scalar_indices_axis_0_2d_input"), GatherParamsV7( - reference_tests::Tensor(ET, {3}, std::vector{ - 1.0f, 2.0f, 3.0f}), - reference_tests::Tensor(ET_I, {2}, std::vector{ - 1, 0}), - reference_tests::Tensor(ET_A, {}, std::vector{0}), - 0, - reference_tests::Tensor(ET, {2}, std::vector{ - 2.0f, 1.0f}), - "gather_v7_1d_indices_axis_0_1d_input"), - GatherParamsV7( - reference_tests::Tensor(ET, {3, 2}, std::vector{ - 1.0f, 1.1f, 2.0f, 2.1f, 3.0f, 3.1f}), - reference_tests::Tensor(ET_I, {}, std::vector{1}), - reference_tests::Tensor(ET_A, {}, std::vector{0}), - 0, - reference_tests::Tensor(ET, {2}, std::vector{ - 2.0f, 2.1f}), - "gather_v7_scalar_indices_axis_0_2d_input"), - GatherParamsV7( - reference_tests::Tensor(ET, {3, 3}, std::vector{ - 1.0f, 1.1f, 1.2f, - 2.0f, 2.1f, 2.2f, - 3.0f, 3.1f, 3.2f}), - reference_tests::Tensor(ET_I, {1, 2}, std::vector{ - 0, 2}), + reference_tests::Tensor(ET, {3, 3}, std::vector{1.0f, 1.1f, 1.2f, 2.0f, 2.1f, 2.2f, 3.0f, 3.1f, 3.2f}), + reference_tests::Tensor(ET_I, {1, 2}, std::vector{0, 2}), reference_tests::Tensor(ET_A, {}, std::vector{1}), 0, - reference_tests::Tensor(ET, {3, 1, 2}, std::vector{ - 1.0f, 1.2f, - 2.0f, 2.2f, - 3.0f, 3.2f}), + reference_tests::Tensor(ET, {3, 1, 2}, std::vector{1.0f, 1.2f, 2.0f, 2.2f, 3.0f, 3.2f}), "gather_v7_2d_indices_axis_1_2d_input"), GatherParamsV7( - reference_tests::Tensor(ET, {2, 2, 3, 3}, std::vector{ - 1.0f, 1.1f, 1.2f, - 2.0f, 2.1f, 2.2f, - 3.0f, 3.1f, 3.2f, + reference_tests::Tensor( + ET, + {2, 2, 3, 3}, + std::vector{1.0f, 1.1f, 1.2f, 2.0f, 2.1f, 2.2f, 3.0f, 3.1f, 3.2f, - 11.0f, 11.1f, 11.2f, - 12.0f, 12.1f, 12.2f, - 13.0f, 13.1f, 13.2f, + 11.0f, 11.1f, 11.2f, 12.0f, 12.1f, 12.2f, 13.0f, 13.1f, 13.2f, + 101.0f, 101.1f, 101.2f, 102.0f, 102.1f, 102.2f, 103.0f, 103.1f, 103.2f, - 101.0f, 101.1f, 101.2f, - 102.0f, 102.1f, 102.2f, - 103.0f, 103.1f, 103.2f, - - 111.0f, 111.1f, 111.2f, - 112.0f, 112.1f, 112.2f, - 113.0f, 113.1f, 113.2f}), - reference_tests::Tensor(ET_I, {2}, std::vector{ - 0, 2}), + 111.0f, 111.1f, 111.2f, 112.0f, 112.1f, 112.2f, 113.0f, 113.1f, 113.2f}), + reference_tests::Tensor(ET_I, {2}, std::vector{0, 2}), reference_tests::Tensor(ET_A, {}, std::vector{2}), 0, - reference_tests::Tensor(ET, {2, 2, 2, 3}, std::vector{ - 1.0f, 1.1f, 1.2f, - 3.0f, 3.1f, 3.2f, + reference_tests::Tensor(ET, {2, 2, 2, 3}, std::vector{1.0f, 1.1f, 1.2f, 3.0f, 3.1f, 3.2f, - 11.0f, 11.1f, 11.2f, - 13.0f, 13.1f, 13.2f, + 11.0f, 11.1f, 11.2f, 13.0f, 13.1f, 13.2f, + 101.0f, 101.1f, 101.2f, 103.0f, 103.1f, 103.2f, - 101.0f, 101.1f, 101.2f, - 103.0f, 103.1f, 103.2f, - - 111.0f, 111.1f, 111.2f, - 113.0f, 113.1f, 113.2f}), + 111.0f, 111.1f, 111.2f, 113.0f, 113.1f, 113.2f}), "gather_v7_1d_indices_axis_2_4d_input"), GatherParamsV7( - reference_tests::Tensor(ET, {3, 3}, std::vector{ - 1.0f, 1.1f, 1.2f, 2.0f, 2.1f, 2.2f, 3.0f, 3.1f, 3.2f}), + reference_tests::Tensor(ET, {3, 3}, std::vector{1.0f, 1.1f, 1.2f, 2.0f, 2.1f, 2.2f, 3.0f, 3.1f, 3.2f}), reference_tests::Tensor(ET_I, {}, std::vector{0}), reference_tests::Tensor(ET_A, {}, std::vector{1}), 0, - reference_tests::Tensor(ET, {3}, std::vector{ - 1.0f, 2.0f, 3.0f}), + reference_tests::Tensor(ET, {3}, std::vector{1.0f, 2.0f, 3.0f}), "gather_v7_scalar_indices_axis_1_2d_input"), GatherParamsV7( - reference_tests::Tensor(ET, {2, 5, 2}, std::vector{ - 1.0f, 2.0f, - 3.0f, 4.0f, - 5.0f, 6.0f, - 7.0f, 8.0f, - 9.0f, 10.0f, + reference_tests::Tensor(ET, {2, 5, 2}, std::vector{1.0f, 2.0f, 3.0f, 4.0f, 5.0f, + 6.0f, 7.0f, 8.0f, 9.0f, 10.0f, - 11.0f, 12.0f, - 13.0f, 14.0f, - 15.0f, 16.0f, - 17.0f, 18.0f, - 19.0f, 20.0f}), - reference_tests::Tensor(ET_I, {2, 2, 3}, std::vector{ - 0, 0, 4, - 4, 0, 0, + 11.0f, 12.0f, 13.0f, 14.0f, 15.0f, + 16.0f, 17.0f, 18.0f, 19.0f, 20.0f}), + reference_tests::Tensor(ET_I, + {2, 2, 3}, + std::vector{0, + 0, + 4, + 4, + 0, + 0, - 1, 2, 4, - 4, 3, 2}), + 1, + 2, + 4, + 4, + 3, + 2}), reference_tests::Tensor(ET_A, {}, std::vector{1}), 1, - reference_tests::Tensor(ET, {2, 2, 3, 2}, std::vector{ - 1.0f, 2.0f, - 1.0f, 2.0f, - 9.0f, 10.0f, + reference_tests::Tensor(ET, {2, 2, 3, 2}, std::vector{1.0f, 2.0f, 1.0f, 2.0f, 9.0f, 10.0f, - 9.0f, 10.0f, - 1.0f, 2.0f, - 1.0f, 2.0f, + 9.0f, 10.0f, 1.0f, 2.0f, 1.0f, 2.0f, + 13.0f, 14.0f, 15.0f, 16.0f, 19.0f, 20.0f, - 13.0f, 14.0f, - 15.0f, 16.0f, - 19.0f, 20.0f, - - 19.0f, 20.0f, - 17.0f, 18.0f, - 15.0f, 16.0f}), + 19.0f, 20.0f, 17.0f, 18.0f, 15.0f, 16.0f}), "gather_v7_3d_indices_axis_1_batch_dims_1"), }; return params; } std::vector generateCombinedParamsV7() { - const std::vector> generatedParams { + const std::vector> generatedParams{ generateParamsV7(), generateParamsV7(), generateParamsV7(), @@ -893,79 +641,55 @@ std::vector generateCombinedParamsV7() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_Gather_With_Hardcoded_Refs, ReferenceGatherTestV7, - testing::ValuesIn(generateCombinedParamsV7()), ReferenceGatherTestV7::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_Gather_With_Hardcoded_Refs, + ReferenceGatherTestV7, + testing::ValuesIn(generateCombinedParamsV7()), + ReferenceGatherTestV7::getTestCaseName); template std::vector generateParamsV8() { using T = typename element_type_traits::value_type; using T_I = typename element_type_traits::value_type; using T_A = typename element_type_traits::value_type; - std::vector params { - GatherParamsV7( - reference_tests::Tensor(ET, {5}, std::vector{ - 1, 2, 3, 4, 5}), - reference_tests::Tensor(ET_I, {3}, std::vector{ - 0, -2, -1}), - reference_tests::Tensor(ET_A, {}, std::vector{0}), - 0, - reference_tests::Tensor(ET, {3}, std::vector{ - 1, 4, 5}), - "gather_v8_1d_negative_indices"), + std::vector params{ + GatherParamsV7(reference_tests::Tensor(ET, {5}, std::vector{1, 2, 3, 4, 5}), + reference_tests::Tensor(ET_I, {3}, std::vector{0, -2, -1}), + reference_tests::Tensor(ET_A, {}, std::vector{0}), + 0, + reference_tests::Tensor(ET, {3}, std::vector{1, 4, 5}), + "gather_v8_1d_negative_indices"), // zeros are not present in the original data but appear because of the out of bound values + GatherParamsV7(reference_tests::Tensor(ET, {5}, std::vector{1, 2, 3, 4, 5}), + reference_tests::Tensor(ET_I, {3}, std::vector{0, 20, 4}), + reference_tests::Tensor(ET_A, {}, std::vector{0}), + 0, + reference_tests::Tensor(ET, {3}, std::vector{1, 0, 5}), + "gather_v8_out_of_bound_indices_1"), GatherParamsV7( - reference_tests::Tensor(ET, {5}, std::vector{ - 1, 2, 3, 4, 5}), - reference_tests::Tensor(ET_I, {3}, std::vector{ - 0, 20, 4}), - reference_tests::Tensor(ET_A, {}, std::vector{0}), - 0, - reference_tests::Tensor(ET, {3}, std::vector{ - 1, 0, 5}), - "gather_v8_out_of_bound_indices_1"), - GatherParamsV7( - reference_tests::Tensor(ET, {2, 1, 5, 4}, std::vector{ - 1, 2, 3, 4, - 5, 6, 7, 8, - 9, 10, 11, 12, - 13, 14, 15, 16, - 17, 18, 19, 20, + reference_tests::Tensor(ET, {2, 1, 5, 4}, std::vector{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}), - reference_tests::Tensor(ET_I, {2, 3}, std::vector{ - 1, 2, 200, - 4, 200, 2}), - reference_tests::Tensor(ET_A, {}, std::vector{2}), - 1, - reference_tests::Tensor(ET, {2, 1, 3, 4}, std::vector{ - 5, 6, 7, 8, - 9, 10, 11, 12, - 0, 0, 0, 0, + 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, + 31, 32, 33, 34, 35, 36, 37, 38, 39, 40}), + reference_tests::Tensor(ET_I, {2, 3}, std::vector{1, 2, 200, 4, 200, 2}), + reference_tests::Tensor(ET_A, {}, std::vector{2}), + 1, + reference_tests::Tensor(ET, {2, 1, 3, 4}, std::vector{5, 6, 7, 8, 9, 10, 11, 12, 0, 0, 0, 0, - 37, 38, 39, 40, - 0, 0, 0, 0, - 29, 30, 31, 32}), - "gather_v8_4d_data_axis_2_batch_dims_1_out_of_bound_indices_2"), - GatherParamsV7( - reference_tests::Tensor(ET, {5}, std::vector{ - 1, 2, 3, 4, 5}), - reference_tests::Tensor(ET_I, {3}, std::vector{ - 0, -200, 4}), - reference_tests::Tensor(ET_A, {}, std::vector{0}), - 0, - reference_tests::Tensor(ET, {3}, std::vector{ - 1, 0, 5}), - "gather_v8_out_of_bound_negative_index"), + 37, 38, 39, 40, 0, 0, 0, 0, 29, 30, 31, 32}), + "gather_v8_4d_data_axis_2_batch_dims_1_out_of_bound_indices_2"), + GatherParamsV7(reference_tests::Tensor(ET, {5}, std::vector{1, 2, 3, 4, 5}), + reference_tests::Tensor(ET_I, {3}, std::vector{0, -200, 4}), + reference_tests::Tensor(ET_A, {}, std::vector{0}), + 0, + reference_tests::Tensor(ET, {3}, std::vector{1, 0, 5}), + "gather_v8_out_of_bound_negative_index"), }; return params; } std::vector generateCombinedParamsV8() { - const std::vector> generatedParams { + const std::vector> generatedParams{ generateParamsV7(), generateParamsV7(), generateParamsV7(), @@ -1001,6 +725,8 @@ std::vector generateCombinedParamsV8() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_Gather_With_Hardcoded_Refs, ReferenceGatherTestV8, - testing::ValuesIn(generateCombinedParamsV8()), ReferenceGatherTestV8::getTestCaseName); -} // namespace +INSTANTIATE_TEST_SUITE_P(smoke_Gather_With_Hardcoded_Refs, + ReferenceGatherTestV8, + testing::ValuesIn(generateCombinedParamsV8()), + ReferenceGatherTestV8::getTestCaseName); +} // namespace diff --git a/src/plugins/template/tests/functional/op_reference/gather_elements.cpp b/src/plugins/template/tests/functional/op_reference/gather_elements.cpp index e7cddb376cf..303f520d924 100644 --- a/src/plugins/template/tests/functional/op_reference/gather_elements.cpp +++ b/src/plugins/template/tests/functional/op_reference/gather_elements.cpp @@ -2,9 +2,10 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/gather_elements.hpp" + #include -#include "openvino/op/gather_elements.hpp" #include "base_reference_test.hpp" using namespace reference_tests; @@ -12,11 +13,16 @@ using namespace ov; namespace { struct GatherElementsParams { - GatherElementsParams( - const reference_tests::Tensor& dataTensor, const reference_tests::Tensor& indicesTensor, int64_t axis, - const reference_tests::Tensor& expectedTensor, const std::string& testcaseName = "") : - dataTensor(dataTensor), indicesTensor(indicesTensor), axis(axis), - expectedTensor(expectedTensor), testcaseName(testcaseName) {} + GatherElementsParams(const reference_tests::Tensor& dataTensor, + const reference_tests::Tensor& indicesTensor, + int64_t axis, + const reference_tests::Tensor& expectedTensor, + const std::string& testcaseName = "") + : dataTensor(dataTensor), + indicesTensor(indicesTensor), + axis(axis), + expectedTensor(expectedTensor), + testcaseName(testcaseName) {} reference_tests::Tensor dataTensor; reference_tests::Tensor indicesTensor; @@ -55,18 +61,17 @@ public: private: static std::shared_ptr CreateFunction(const GatherElementsParams& params) { std::shared_ptr function; - const auto data = std::make_shared(params.dataTensor.type, - PartialShape{params.dataTensor.shape}); - const auto indices = std::make_shared(params.indicesTensor.type, - PartialShape{params.indicesTensor.shape}); + const auto data = + std::make_shared(params.dataTensor.type, PartialShape{params.dataTensor.shape}); + const auto indices = + std::make_shared(params.indicesTensor.type, PartialShape{params.indicesTensor.shape}); const auto gatherElement = std::make_shared(data, indices, params.axis); - function = std::make_shared(NodeVector {gatherElement}, ParameterVector {data, indices}); + function = std::make_shared(NodeVector{gatherElement}, ParameterVector{data, indices}); return function; } }; -class ReferenceGatherElementsTestNegative : public ReferenceGatherElementsTest { -}; +class ReferenceGatherElementsTestNegative : public ReferenceGatherElementsTest {}; TEST_P(ReferenceGatherElementsTest, CompareWithRefs) { Exec(); @@ -85,37 +90,32 @@ TEST_P(ReferenceGatherElementsTestNegative, CompareWithRefs) { template std::vector generateParams() { using T = typename element_type_traits::value_type; - std::vector params { - GatherElementsParams( - reference_tests::Tensor(IN_ET, {3}, std::vector{1, 2, 3}), - reference_tests::Tensor(element::i32, {7}, std::vector{1, 2, 0, 2, 0, 0, 2}), - 0, - reference_tests::Tensor(IN_ET, {7}, std::vector{2, 3, 1, 3, 1, 1, 3}), - "evaluate_1D_gather_elements_3_indices_int32"), - GatherElementsParams( - reference_tests::Tensor(IN_ET, {2, 2}, std::vector{1, 2, 3, 4}), - reference_tests::Tensor(element::i32, {2, 2}, std::vector{0, 1, 0, 0}), - 0, - reference_tests::Tensor(IN_ET, {2, 2}, std::vector{1, 4, 1, 2}), - "evaluate_2D_gather_elements_2x2_indices_int32_axis_0"), - GatherElementsParams( - reference_tests::Tensor(IN_ET, {2, 2}, std::vector{1, 2, 3, 4}), - reference_tests::Tensor(element::i32, {2, 2}, std::vector{0, 1, 0, 0}), - 1, - reference_tests::Tensor(IN_ET, {2, 2}, std::vector{1, 2, 3, 3}), - "evaluate_2D_gather_elements_2x2_indices_int32_axis_1"), - GatherElementsParams( - reference_tests::Tensor(IN_ET, {2, 2}, std::vector{1, 2, 3, 4}), - reference_tests::Tensor(element::i32, {2, 2}, std::vector{0, 1, 0, 0}), - -1, - reference_tests::Tensor(IN_ET, {2, 2}, std::vector{1, 2, 3, 3}), - "evaluate_2D_gather_elements_2x2_indices_int32_axis_minus_1"), - GatherElementsParams( - reference_tests::Tensor(IN_ET, {3, 3}, std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9}), - reference_tests::Tensor(element::i32, {2, 3}, std::vector{1, 2, 0, 2, 0, 0}), - 0, - reference_tests::Tensor(IN_ET, {2, 3}, std::vector{4, 8, 3, 7, 2, 3}), - "evaluate_2D_gather_elements_2x3_indices_int32"), + std::vector params{ + GatherElementsParams(reference_tests::Tensor(IN_ET, {3}, std::vector{1, 2, 3}), + reference_tests::Tensor(element::i32, {7}, std::vector{1, 2, 0, 2, 0, 0, 2}), + 0, + reference_tests::Tensor(IN_ET, {7}, std::vector{2, 3, 1, 3, 1, 1, 3}), + "evaluate_1D_gather_elements_3_indices_int32"), + GatherElementsParams(reference_tests::Tensor(IN_ET, {2, 2}, std::vector{1, 2, 3, 4}), + reference_tests::Tensor(element::i32, {2, 2}, std::vector{0, 1, 0, 0}), + 0, + reference_tests::Tensor(IN_ET, {2, 2}, std::vector{1, 4, 1, 2}), + "evaluate_2D_gather_elements_2x2_indices_int32_axis_0"), + GatherElementsParams(reference_tests::Tensor(IN_ET, {2, 2}, std::vector{1, 2, 3, 4}), + reference_tests::Tensor(element::i32, {2, 2}, std::vector{0, 1, 0, 0}), + 1, + reference_tests::Tensor(IN_ET, {2, 2}, std::vector{1, 2, 3, 3}), + "evaluate_2D_gather_elements_2x2_indices_int32_axis_1"), + GatherElementsParams(reference_tests::Tensor(IN_ET, {2, 2}, std::vector{1, 2, 3, 4}), + reference_tests::Tensor(element::i32, {2, 2}, std::vector{0, 1, 0, 0}), + -1, + reference_tests::Tensor(IN_ET, {2, 2}, std::vector{1, 2, 3, 3}), + "evaluate_2D_gather_elements_2x2_indices_int32_axis_minus_1"), + GatherElementsParams(reference_tests::Tensor(IN_ET, {3, 3}, std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9}), + reference_tests::Tensor(element::i32, {2, 3}, std::vector{1, 2, 0, 2, 0, 0}), + 0, + reference_tests::Tensor(IN_ET, {2, 3}, std::vector{4, 8, 3, 7, 2, 3}), + "evaluate_2D_gather_elements_2x3_indices_int32"), GatherElementsParams( reference_tests::Tensor(IN_ET, {3, 2, 2}, std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}), reference_tests::Tensor(element::i32, {3, 2, 2}, std::vector{1, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1}), @@ -124,34 +124,31 @@ std::vector generateParams() { "evaluate_3D_gather_elements_3x2x2_indices_int32"), GatherElementsParams( reference_tests::Tensor(IN_ET, {3, 2, 2, 2}, std::vector{1, 2, 3, 4, 5, 6, 7, 8, - 9, 10, 11, 12, 13, 14, 15, 16, - 17, 18, 19, 20, 21, 22, 23, 24}), - reference_tests::Tensor(element::i32, {3, 2, 2, 4}, std::vector{1, 0, 0, 0, 0, 1, 1, 0, - 1, 1, 1, 1, 1, 0, 0, 1, - 0, 0, 0, 1, 1, 1, 1, 0, - 0, 0, 0, 0, 1, 0, 1, 0, - 1, 1, 1, 1, 1, 0, 1, 0, - 1, 0, 0, 1, 0, 0, 0, 0}), + 9, 10, 11, 12, 13, 14, 15, 16, + 17, 18, 19, 20, 21, 22, 23, 24}), + reference_tests::Tensor( + element::i32, + {3, 2, 2, 4}, + std::vector{1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 0, + 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0}), -1, - reference_tests::Tensor(IN_ET, {3, 2, 2, 4}, std::vector{2, 1, 1, 1, 3, 4, 4, 3, - 6, 6, 6, 6, 8, 7, 7, 8, - 9, 9, 9, 10, 12, 12, 12, 11, - 13, 13, 13, 13, 16, 15, 16, 15, - 18, 18, 18, 18, 20, 19, 20, 19, - 22, 21, 21, 22, 23, 23, 23, 23}), + reference_tests::Tensor(IN_ET, + {3, 2, 2, 4}, + std::vector{2, 1, 1, 1, 3, 4, 4, 3, 6, 6, 6, 6, 8, 7, 7, 8, + 9, 9, 9, 10, 12, 12, 12, 11, 13, 13, 13, 13, 16, 15, 16, 15, + 18, 18, 18, 18, 20, 19, 20, 19, 22, 21, 21, 22, 23, 23, 23, 23}), "evaluate_4D_gather_elements_3x2x2x2_indices_int64"), GatherElementsParams( - reference_tests::Tensor(IN_ET, {3, 2, 2}, std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}), + reference_tests::Tensor(IN_ET, {3, 2, 2}, std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}), reference_tests::Tensor(element::i32, {3, 2, 2}, std::vector{1, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1}), -1, reference_tests::Tensor(IN_ET, {3, 2, 2}, std::vector{2, 1, 3, 4, 6, 6, 8, 7, 9, 9, 12, 12}), "evaluate_3D_gather_elements_3x2x2_indices_int64"), - GatherElementsParams( - reference_tests::Tensor(IN_ET, {3, 3}, std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9}), - reference_tests::Tensor(element::i32, {2, 3}, std::vector{1, 2, 0, 2, 0, 0}), - 0, - reference_tests::Tensor(IN_ET, {2, 3}, std::vector{4, 8, 3, 7, 2, 3}), - "evaluate_2D_gather_elements_2x3_data_float32"), + GatherElementsParams(reference_tests::Tensor(IN_ET, {3, 3}, std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9}), + reference_tests::Tensor(element::i32, {2, 3}, std::vector{1, 2, 0, 2, 0, 0}), + 0, + reference_tests::Tensor(IN_ET, {2, 3}, std::vector{4, 8, 3, 7, 2, 3}), + "evaluate_2D_gather_elements_2x3_data_float32"), GatherElementsParams( reference_tests::Tensor(IN_ET, {2, 2, 1}, std::vector{5, 4, 1, 4}), reference_tests::Tensor(element::i32, {4, 2, 1}, std::vector{0, 0, 1, 1, 1, 1, 0, 1}), @@ -164,7 +161,7 @@ std::vector generateParams() { template <> std::vector generateParams() { - std::vector params { + std::vector params{ GatherElementsParams( reference_tests::Tensor(element::boolean, {3, 2}, std::vector{true, false, true, true, false, false}), reference_tests::Tensor(element::i32, {2, 2}, std::vector{0, 1, 0, 2}), @@ -176,13 +173,12 @@ std::vector generateParams() { } std::vector generateParamsNegative() { - std::vector params { - GatherElementsParams( - reference_tests::Tensor(element::i32, {3}, std::vector{1, 2, 3}), - reference_tests::Tensor(element::i32, {7}, std::vector{1, 2, 0, 2, 0, 0, 8}), - 0, - reference_tests::Tensor(element::i32, {7}, std::vector{2, 3, 1, 3, 1, 1, 3}), - "evaluate_1D_gather_elements_negative_test"), + std::vector params{ + GatherElementsParams(reference_tests::Tensor(element::i32, {3}, std::vector{1, 2, 3}), + reference_tests::Tensor(element::i32, {7}, std::vector{1, 2, 0, 2, 0, 0, 8}), + 0, + reference_tests::Tensor(element::i32, {7}, std::vector{2, 3, 1, 3, 1, 1, 3}), + "evaluate_1D_gather_elements_negative_test"), GatherElementsParams( reference_tests::Tensor(element::i32, {3, 3}, std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9}), reference_tests::Tensor(element::i32, {2, 3}, std::vector{1, 3, 0, 2, 0, 0}), @@ -194,7 +190,7 @@ std::vector generateParamsNegative() { } std::vector generateCombinedParams() { - const std::vector> generatedParams { + const std::vector> generatedParams{ generateParams(), generateParams(), generateParams(), @@ -217,9 +213,13 @@ std::vector generateCombinedParams() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_GatherElements_With_Hardcoded_Refs, ReferenceGatherElementsTest, - testing::ValuesIn(generateCombinedParams()), ReferenceGatherElementsTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_GatherElements_With_Hardcoded_Refs, + ReferenceGatherElementsTest, + testing::ValuesIn(generateCombinedParams()), + ReferenceGatherElementsTest::getTestCaseName); -INSTANTIATE_TEST_SUITE_P(smoke_GatherElements_With_Hardcoded_Refs, ReferenceGatherElementsTestNegative, - testing::ValuesIn(generateParamsNegative()), ReferenceGatherElementsTest::getTestCaseName); -} // namespace +INSTANTIATE_TEST_SUITE_P(smoke_GatherElements_With_Hardcoded_Refs, + ReferenceGatherElementsTestNegative, + testing::ValuesIn(generateParamsNegative()), + ReferenceGatherElementsTest::getTestCaseName); +} // namespace diff --git a/src/plugins/template/tests/functional/op_reference/gather_nd.cpp b/src/plugins/template/tests/functional/op_reference/gather_nd.cpp index 9ff1507be4f..bbb7fb07026 100644 --- a/src/plugins/template/tests/functional/op_reference/gather_nd.cpp +++ b/src/plugins/template/tests/functional/op_reference/gather_nd.cpp @@ -2,9 +2,10 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/gather_nd.hpp" + #include -#include "openvino/op/gather_nd.hpp" #include "base_reference_test.hpp" using namespace reference_tests; @@ -12,11 +13,16 @@ using namespace ov; namespace { struct GatherNDParams { - GatherNDParams( - const reference_tests::Tensor& dataTensor, const reference_tests::Tensor& indicesTensor, int64_t batchDims, - const reference_tests::Tensor& expectedTensor, const std::string& testcaseName = "") : - dataTensor(dataTensor), indicesTensor(indicesTensor), batchDims(static_cast(batchDims)), - expectedTensor(expectedTensor), testcaseName(testcaseName) {} + GatherNDParams(const reference_tests::Tensor& dataTensor, + const reference_tests::Tensor& indicesTensor, + int64_t batchDims, + const reference_tests::Tensor& expectedTensor, + const std::string& testcaseName = "") + : dataTensor(dataTensor), + indicesTensor(indicesTensor), + batchDims(static_cast(batchDims)), + expectedTensor(expectedTensor), + testcaseName(testcaseName) {} reference_tests::Tensor dataTensor; reference_tests::Tensor indicesTensor; @@ -55,17 +61,17 @@ public: private: static std::shared_ptr CreateFunction(const GatherNDParams& params) { std::shared_ptr function; - const auto data = std::make_shared(params.dataTensor.type, - PartialShape{params.dataTensor.shape}); - const auto indices = std::make_shared(params.indicesTensor.type, - PartialShape{params.indicesTensor.shape}); + const auto data = + std::make_shared(params.dataTensor.type, PartialShape{params.dataTensor.shape}); + const auto indices = + std::make_shared(params.indicesTensor.type, PartialShape{params.indicesTensor.shape}); std::shared_ptr gatherND; if (params.batchDims == 0) { gatherND = std::make_shared(data, indices); } else { gatherND = std::make_shared(data, indices, params.batchDims); } - function = std::make_shared(NodeVector {gatherND}, ParameterVector {data, indices}); + function = std::make_shared(NodeVector{gatherND}, ParameterVector{data, indices}); return function; } }; @@ -77,101 +83,94 @@ TEST_P(ReferenceGatherND5Test, CompareWithRefs) { template std::vector generateParams() { using T = typename element_type_traits::value_type; - std::vector params { - GatherNDParams( - reference_tests::Tensor(IN_ET, {3, 3}, std::vector{10, 11, 12, 13, 14, 15, 16, 17, 18}), - reference_tests::Tensor(element::i32, {2}, std::vector{1, 2}), - 0, - reference_tests::Tensor(IN_ET, {}, std::vector{15}), - "gather_nd_single_indices"), - GatherNDParams( - reference_tests::Tensor(IN_ET, {2, 2}, std::vector{10, 11, 12, 13}), - reference_tests::Tensor(element::i32, {2, 2}, std::vector{0, 0, 1, 1}), - 0, - reference_tests::Tensor(IN_ET, {2}, std::vector{10, 13}), - "gather_nd_scalar_from_2d"), - GatherNDParams( - reference_tests::Tensor(IN_ET, {2, 2}, std::vector{10, 11, 12, 13}), - reference_tests::Tensor(element::i32, {2, 1}, std::vector{1, 0}), - 0, - reference_tests::Tensor(IN_ET, {2, 2}, std::vector{12, 13, 10, 11}), - "gather_nd_1d_from_2d"), - GatherNDParams( - reference_tests::Tensor(IN_ET, {2, 2, 2}, std::vector{10, 11, 12, 13, 20, 21, 22, 23}), - reference_tests::Tensor(element::i32, {2, 3}, std::vector{0, 0, 1, 1, 0, 1}), - 0, - reference_tests::Tensor(IN_ET, {2}, std::vector{11, 21}), - "gather_nd_scalar_from_3d"), - GatherNDParams( - reference_tests::Tensor(IN_ET, {2, 2, 2}, std::vector{10, 11, 12, 13, 20, 21, 22, 23}), - reference_tests::Tensor(element::i32, {2, 2}, std::vector{0, 1, 1, 0}), - 0, - reference_tests::Tensor(IN_ET, {2, 2}, std::vector{12, 13, 20, 21}), - "gather_nd_1d_from_3d"), - GatherNDParams( - reference_tests::Tensor(IN_ET, {2, 2, 2}, std::vector{10, 11, 12, 13, 20, 21, 22, 23}), - reference_tests::Tensor(element::i32, {1, 1}, std::vector{1}), - 0, - reference_tests::Tensor(IN_ET, {1, 2, 2}, std::vector{20, 21, 22, 23}), - "gather_nd_2d_from_3d"), - GatherNDParams( - reference_tests::Tensor(IN_ET, {2, 2}, std::vector{10, 11, 12, 13}), - reference_tests::Tensor(element::i32, {2, 1, 2}, std::vector{0, 0, 0, 1}), - 0, - reference_tests::Tensor(IN_ET, {2, 1}, std::vector{10, 11}), - "gather_nd_batch_scalar_from_2d"), - GatherNDParams( - reference_tests::Tensor(IN_ET, {2, 2}, std::vector{10, 11, 12, 13}), - reference_tests::Tensor(element::i32, {2, 1, 1}, std::vector{1, 0}), - 0, - reference_tests::Tensor(IN_ET, {2, 1, 2}, std::vector{12, 13, 10, 11}), - "gather_nd_batch_1d_from_2d"), + std::vector params{ + GatherNDParams(reference_tests::Tensor(IN_ET, {3, 3}, std::vector{10, 11, 12, 13, 14, 15, 16, 17, 18}), + reference_tests::Tensor(element::i32, {2}, std::vector{1, 2}), + 0, + reference_tests::Tensor(IN_ET, {}, std::vector{15}), + "gather_nd_single_indices"), + GatherNDParams(reference_tests::Tensor(IN_ET, {2, 2}, std::vector{10, 11, 12, 13}), + reference_tests::Tensor(element::i32, {2, 2}, std::vector{0, 0, 1, 1}), + 0, + reference_tests::Tensor(IN_ET, {2}, std::vector{10, 13}), + "gather_nd_scalar_from_2d"), + GatherNDParams(reference_tests::Tensor(IN_ET, {2, 2}, std::vector{10, 11, 12, 13}), + reference_tests::Tensor(element::i32, {2, 1}, std::vector{1, 0}), + 0, + reference_tests::Tensor(IN_ET, {2, 2}, std::vector{12, 13, 10, 11}), + "gather_nd_1d_from_2d"), + GatherNDParams(reference_tests::Tensor(IN_ET, {2, 2, 2}, std::vector{10, 11, 12, 13, 20, 21, 22, 23}), + reference_tests::Tensor(element::i32, {2, 3}, std::vector{0, 0, 1, 1, 0, 1}), + 0, + reference_tests::Tensor(IN_ET, {2}, std::vector{11, 21}), + "gather_nd_scalar_from_3d"), + GatherNDParams(reference_tests::Tensor(IN_ET, {2, 2, 2}, std::vector{10, 11, 12, 13, 20, 21, 22, 23}), + reference_tests::Tensor(element::i32, {2, 2}, std::vector{0, 1, 1, 0}), + 0, + reference_tests::Tensor(IN_ET, {2, 2}, std::vector{12, 13, 20, 21}), + "gather_nd_1d_from_3d"), + GatherNDParams(reference_tests::Tensor(IN_ET, {2, 2, 2}, std::vector{10, 11, 12, 13, 20, 21, 22, 23}), + reference_tests::Tensor(element::i32, {1, 1}, std::vector{1}), + 0, + reference_tests::Tensor(IN_ET, {1, 2, 2}, std::vector{20, 21, 22, 23}), + "gather_nd_2d_from_3d"), + GatherNDParams(reference_tests::Tensor(IN_ET, {2, 2}, std::vector{10, 11, 12, 13}), + reference_tests::Tensor(element::i32, {2, 1, 2}, std::vector{0, 0, 0, 1}), + 0, + reference_tests::Tensor(IN_ET, {2, 1}, std::vector{10, 11}), + "gather_nd_batch_scalar_from_2d"), + GatherNDParams(reference_tests::Tensor(IN_ET, {2, 2}, std::vector{10, 11, 12, 13}), + reference_tests::Tensor(element::i32, {2, 1, 1}, std::vector{1, 0}), + 0, + reference_tests::Tensor(IN_ET, {2, 1, 2}, std::vector{12, 13, 10, 11}), + "gather_nd_batch_1d_from_2d"), GatherNDParams( reference_tests::Tensor(IN_ET, {2, 2, 2}, std::vector{10, 11, 12, 13, 20, 21, 22, 23}), reference_tests::Tensor(element::i32, {2, 2, 3}, std::vector{0, 0, 1, 1, 0, 1, 0, 1, 1, 1, 1, 0}), 0, reference_tests::Tensor(IN_ET, {2, 2}, std::vector{11, 21, 13, 22}), "gather_nd_batch_scalar_from_3d"), - GatherNDParams( - reference_tests::Tensor(IN_ET, {2, 2, 2}, std::vector{10, 11, 12, 13, 20, 21, 22, 23}), - reference_tests::Tensor(element::i32, {2, 2, 2}, std::vector{0, 1, 1, 0, 0, 0, 1, 1}), - 0, - reference_tests::Tensor(IN_ET, {2, 2, 2}, std::vector{12, 13, 20, 21, 10, 11, 22, 23}), - "gather_nd_batch_1d_from_3d"), - GatherNDParams( - reference_tests::Tensor(IN_ET, {2, 2, 2}, std::vector{10, 11, 12, 13, 20, 21, 22, 23}), - reference_tests::Tensor(element::i32, {2, 2, 2}, std::vector{0, -1, -1, 0, 0, 0, 1, 1}), - 0, - reference_tests::Tensor(IN_ET, {2, 2, 2}, std::vector{12, 13, 20, 21, 10, 11, 22, 23}), - "gather_nd_batch_1d_from_3d_negative"), - GatherNDParams( - reference_tests::Tensor(IN_ET, {2, 2, 2}, std::vector{10, 11, 12, 13, 20, 21, 22, 23}), - reference_tests::Tensor(element::i32, {2, 1, 1}, std::vector{1, 0}), - 0, - reference_tests::Tensor(IN_ET, {2, 1, 2, 2}, std::vector{20, 21, 22, 23, 10, 11, 12, 13}), - "gather_nd_batch_2d_from_3d"), + GatherNDParams(reference_tests::Tensor(IN_ET, {2, 2, 2}, std::vector{10, 11, 12, 13, 20, 21, 22, 23}), + reference_tests::Tensor(element::i32, {2, 2, 2}, std::vector{0, 1, 1, 0, 0, 0, 1, 1}), + 0, + reference_tests::Tensor(IN_ET, {2, 2, 2}, std::vector{12, 13, 20, 21, 10, 11, 22, 23}), + "gather_nd_batch_1d_from_3d"), + GatherNDParams(reference_tests::Tensor(IN_ET, {2, 2, 2}, std::vector{10, 11, 12, 13, 20, 21, 22, 23}), + reference_tests::Tensor(element::i32, {2, 2, 2}, std::vector{0, -1, -1, 0, 0, 0, 1, 1}), + 0, + reference_tests::Tensor(IN_ET, {2, 2, 2}, std::vector{12, 13, 20, 21, 10, 11, 22, 23}), + "gather_nd_batch_1d_from_3d_negative"), + GatherNDParams(reference_tests::Tensor(IN_ET, {2, 2, 2}, std::vector{10, 11, 12, 13, 20, 21, 22, 23}), + reference_tests::Tensor(element::i32, {2, 1, 1}, std::vector{1, 0}), + 0, + reference_tests::Tensor(IN_ET, {2, 1, 2, 2}, std::vector{20, 21, 22, 23, 10, 11, 12, 13}), + "gather_nd_batch_2d_from_3d"), GatherNDParams( reference_tests::Tensor(IN_ET, {2, 3, 4}, std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, - 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24}), + 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24}), reference_tests::Tensor(element::i32, {2, 1}, std::vector{1, 0}), 1, reference_tests::Tensor(IN_ET, {2, 4}, std::vector{5, 6, 7, 8, 13, 14, 15, 16}), "gather_nd_batch_dims1"), GatherNDParams( - reference_tests::Tensor(IN_ET, {2, 3, 4, 2}, std::vector{ - 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}), - reference_tests::Tensor(element::i32, {2, 3, 3, 2}, std::vector{ - 1, 0, 3, 1, 2, 1, 0, 1, 1, 1, 2, 0, 3, 0, 3, 1, 2, 1, - 2, 0, 1, 1, 3, 1, 1, 1, 2, 0, 2, 0, 0, 0, 3, 1, 3, 1}), + reference_tests::Tensor(IN_ET, + {2, 3, 4, 2}, + std::vector{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}), + reference_tests::Tensor(element::i32, + {2, 3, 3, 2}, + std::vector{1, 0, 3, 1, 2, 1, 0, 1, 1, 1, 2, 0, 3, 0, 3, 1, 2, 1, + 2, 0, 1, 1, 3, 1, 1, 1, 2, 0, 2, 0, 0, 0, 3, 1, 3, 1}), 2, - reference_tests::Tensor(IN_ET, {6, 3}, std::vector{ - 3, 8, 6, 10, 12, 13, 23, 24, 22, 29, 28, 32, 36, 37, 37, 41, 48, 48}), + reference_tests::Tensor( + IN_ET, + {6, 3}, + std::vector{3, 8, 6, 10, 12, 13, 23, 24, 22, 29, 28, 32, 36, 37, 37, 41, 48, 48}), "gather_nd_batch_dims2"), GatherNDParams( reference_tests::Tensor(IN_ET, {2, 3, 4}, std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, - 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24}), + 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24}), reference_tests::Tensor(element::i32, {2, 3, 1, 1}, std::vector{1, 0, 2, 0, 2, 2}), 2, reference_tests::Tensor(IN_ET, {6, 1}, std::vector{2, 5, 11, 13, 19, 23}), @@ -181,7 +180,7 @@ std::vector generateParams() { } std::vector generateCombinedParams() { - const std::vector> generatedParams { + const std::vector> generatedParams{ generateParams(), generateParams(), generateParams(), @@ -203,9 +202,10 @@ std::vector generateCombinedParams() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_GatherND_With_Hardcoded_Refs, ReferenceGatherND5Test, - testing::ValuesIn(generateCombinedParams()), ReferenceGatherND5Test::getTestCaseName); - +INSTANTIATE_TEST_SUITE_P(smoke_GatherND_With_Hardcoded_Refs, + ReferenceGatherND5Test, + testing::ValuesIn(generateCombinedParams()), + ReferenceGatherND5Test::getTestCaseName); class ReferenceGatherND8Test : public testing::TestWithParam, public CommonReferenceTest { public: @@ -237,17 +237,17 @@ public: private: static std::shared_ptr CreateFunction(const GatherNDParams& params) { std::shared_ptr function; - const auto data = std::make_shared(params.dataTensor.type, - PartialShape{params.dataTensor.shape}); - const auto indices = std::make_shared(params.indicesTensor.type, - PartialShape{params.indicesTensor.shape}); + const auto data = + std::make_shared(params.dataTensor.type, PartialShape{params.dataTensor.shape}); + const auto indices = + std::make_shared(params.indicesTensor.type, PartialShape{params.indicesTensor.shape}); std::shared_ptr gatherND; if (params.batchDims == 0) { gatherND = std::make_shared(data, indices); } else { gatherND = std::make_shared(data, indices, params.batchDims); } - function = std::make_shared(NodeVector {gatherND}, ParameterVector {data, indices}); + function = std::make_shared(NodeVector{gatherND}, ParameterVector{data, indices}); return function; } }; @@ -259,142 +259,139 @@ TEST_P(ReferenceGatherND8Test, CompareWithRefs) { template std::vector generateParams_v8() { using T = typename element_type_traits::value_type; - std::vector params { - GatherNDParams( - reference_tests::Tensor(IN_ET, {3, 3}, std::vector{10, 11, 12, 13, 14, 15, 16, 17, 18}), - reference_tests::Tensor(element::i32, {2}, std::vector{1, 2}), - 0, - reference_tests::Tensor(IN_ET, {}, std::vector{15}), - "gather_nd_8_single_indices"), - GatherNDParams( - reference_tests::Tensor(IN_ET, {2, 2}, std::vector{10, 11, 12, 13}), - reference_tests::Tensor(element::i32, {2, 2}, std::vector{0, 0, 1, 1}), - 0, - reference_tests::Tensor(IN_ET, {2}, std::vector{10, 13}), - "gather_nd_8_scalar_from_2d"), - GatherNDParams( - reference_tests::Tensor(IN_ET, {2, 2}, std::vector{10, 11, 12, 13}), - reference_tests::Tensor(element::i32, {2, 1}, std::vector{1, 0}), - 0, - reference_tests::Tensor(IN_ET, {2, 2}, std::vector{12, 13, 10, 11}), - "gather_nd_8_1d_from_2d"), - GatherNDParams( - reference_tests::Tensor(IN_ET, {2, 2, 2}, std::vector{10, 11, 12, 13, 20, 21, 22, 23}), - reference_tests::Tensor(element::i32, {2, 3}, std::vector{0, 0, 1, 1, 0, 1}), - 0, - reference_tests::Tensor(IN_ET, {2}, std::vector{11, 21}), - "gather_nd_8_scalar_from_3d"), - GatherNDParams( - reference_tests::Tensor(IN_ET, {2, 2, 2}, std::vector{10, 11, 12, 13, 20, 21, 22, 23}), - reference_tests::Tensor(element::i32, {2, 2}, std::vector{0, 1, 1, 0}), - 0, - reference_tests::Tensor(IN_ET, {2, 2}, std::vector{12, 13, 20, 21}), - "gather_nd_8_1d_from_3d"), - GatherNDParams( - reference_tests::Tensor(IN_ET, {2, 2, 2}, std::vector{10, 11, 12, 13, 20, 21, 22, 23}), - reference_tests::Tensor(element::i32, {1, 1}, std::vector{1}), - 0, - reference_tests::Tensor(IN_ET, {1, 2, 2}, std::vector{20, 21, 22, 23}), - "gather_nd_8_2d_from_3d"), - GatherNDParams( - reference_tests::Tensor(IN_ET, {2, 2}, std::vector{10, 11, 12, 13}), - reference_tests::Tensor(element::i32, {2, 1, 2}, std::vector{0, 0, 0, 1}), - 0, - reference_tests::Tensor(IN_ET, {2, 1}, std::vector{10, 11}), - "gather_nd_8_batch_scalar_from_2d"), - GatherNDParams( - reference_tests::Tensor(IN_ET, {2, 2}, std::vector{10, 11, 12, 13}), - reference_tests::Tensor(element::i32, {2, 1, 1}, std::vector{1, 0}), - 0, - reference_tests::Tensor(IN_ET, {2, 1, 2}, std::vector{12, 13, 10, 11}), - "gather_nd_8_batch_1d_from_2d"), - GatherNDParams( - reference_tests::Tensor(IN_ET, {2, 2, 2}, std::vector{10, 11, 12, 13, 20, 21, 22, 23}), - reference_tests::Tensor(element::i32, {2, 2, 3}, std::vector{0, 0, 1, 1, 0, 1, 0, 1, 1, 1, 1, 0}), - 0, - reference_tests::Tensor(IN_ET, {2, 2}, std::vector{11, 21, 13, 22}), - "gather_nd_8_batch_scalar_from_3d"), - GatherNDParams( - reference_tests::Tensor(IN_ET, {2, 2, 2}, std::vector{10, 11, 12, 13, 20, 21, 22, 23}), - reference_tests::Tensor(element::i32, {2, 2, 2}, std::vector{0, 1, 1, 0, 0, 0, 1, 1}), - 0, - reference_tests::Tensor(IN_ET, {2, 2, 2}, std::vector{12, 13, 20, 21, 10, 11, 22, 23}), - "gather_nd_8_batch_1d_from_3d"), - GatherNDParams( - reference_tests::Tensor(IN_ET, {2, 2, 2}, std::vector{10, 11, 12, 13, 20, 21, 22, 23}), - reference_tests::Tensor(element::i32, {2, 2, 2}, std::vector{0, -1, -1, 0, 0, 0, 1, 1}), - 0, - reference_tests::Tensor(IN_ET, {2, 2, 2}, std::vector{12, 13, 20, 21, 10, 11, 22, 23}), - "gather_nd_8_batch_1d_from_3d_negative"), - GatherNDParams( - reference_tests::Tensor(IN_ET, {2, 2, 2}, std::vector{10, 11, 12, 13, 20, 21, 22, 23}), - reference_tests::Tensor(element::i32, {2, 1, 1}, std::vector{1, 0}), - 0, - reference_tests::Tensor(IN_ET, {2, 1, 2, 2}, std::vector{20, 21, 22, 23, 10, 11, 12, 13}), - "gather_nd_8_batch_2d_from_3d"), - GatherNDParams( - reference_tests::Tensor(IN_ET, {2, 3, 4}, std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, - 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24}), - reference_tests::Tensor(element::i32, {2, 1}, std::vector{1, 0}), - 1, - reference_tests::Tensor(IN_ET, {2, 4}, std::vector{5, 6, 7, 8, 13, 14, 15, 16}), - "gather_nd_8_batch_dims1"), - GatherNDParams( - reference_tests::Tensor(IN_ET, {2, 3, 4, 2}, std::vector{ - 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}), - reference_tests::Tensor(element::i32, {2, 3, 3, 2}, std::vector{ - 1, 0, 3, 1, 2, 1, 0, 1, 1, 1, 2, 0, 3, 0, 3, 1, 2, 1, - 2, 0, 1, 1, 3, 1, 1, 1, 2, 0, 2, 0, 0, 0, 3, 1, 3, 1}), - 2, - reference_tests::Tensor(IN_ET, {2, 3, 3}, std::vector{ - 3, 8, 6, 10, 12, 13, 23, 24, 22, 29, 28, 32, 36, 37, 37, 41, 48, 48}), - "gather_8_nd_batch_dims2"), - GatherNDParams( - reference_tests::Tensor(IN_ET, {2, 3, 4}, std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, - 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24}), - reference_tests::Tensor(element::i32, {2, 3, 1, 1}, std::vector{1, 0, 2, 0, 2, 2}), - 2, - reference_tests::Tensor(IN_ET, {2, 3, 1}, std::vector{2, 5, 11, 13, 19, 23}), - "gather_8_nd_batch_dims2_lead_dims"), - GatherNDParams( - reference_tests::Tensor(IN_ET, {2, 3, 4, 5}, std::vector{ - 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, 72, 73, 74, 75, 76, 77, 78, 79, 80, - 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, - 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, - 111, 112, 113, 114, 115, 116, 117, 118, 119, 120}), - reference_tests::Tensor(element::i32, {2, 3, 2, 1}, std::vector{ - 1, 0, 2, 0, 2, 0, 1, 0, 2, 0, 2, 0}), - 2, - reference_tests::Tensor(IN_ET, {2, 3, 2, 5}, std::vector{ - 6, 7, 8, 9, 10, 1, 2, 3, 4, 5, 31, 32, 33, 34, 35, 21, 22, 23, - 24, 25, 51, 52, 53, 54, 55, 41, 42, 43, 44, 45, 66, 67, 68, 69, - 70, 61, 62, 63, 64, 65, 91, 92, 93, 94, 95, 81, 82, 83, 84, 85, - 111, 112, 113, 114, 115, 101, 102, 103, 104, 105}), - "gather_8_nd_batch_dims2_non_scalar_slices"), + std::vector params{ + GatherNDParams(reference_tests::Tensor(IN_ET, {3, 3}, std::vector{10, 11, 12, 13, 14, 15, 16, 17, 18}), + reference_tests::Tensor(element::i32, {2}, std::vector{1, 2}), + 0, + reference_tests::Tensor(IN_ET, {}, std::vector{15}), + "gather_nd_8_single_indices"), + GatherNDParams(reference_tests::Tensor(IN_ET, {2, 2}, std::vector{10, 11, 12, 13}), + reference_tests::Tensor(element::i32, {2, 2}, std::vector{0, 0, 1, 1}), + 0, + reference_tests::Tensor(IN_ET, {2}, std::vector{10, 13}), + "gather_nd_8_scalar_from_2d"), + GatherNDParams(reference_tests::Tensor(IN_ET, {2, 2}, std::vector{10, 11, 12, 13}), + reference_tests::Tensor(element::i32, {2, 1}, std::vector{1, 0}), + 0, + reference_tests::Tensor(IN_ET, {2, 2}, std::vector{12, 13, 10, 11}), + "gather_nd_8_1d_from_2d"), + GatherNDParams(reference_tests::Tensor(IN_ET, {2, 2, 2}, std::vector{10, 11, 12, 13, 20, 21, 22, 23}), + reference_tests::Tensor(element::i32, {2, 3}, std::vector{0, 0, 1, 1, 0, 1}), + 0, + reference_tests::Tensor(IN_ET, {2}, std::vector{11, 21}), + "gather_nd_8_scalar_from_3d"), + GatherNDParams(reference_tests::Tensor(IN_ET, {2, 2, 2}, std::vector{10, 11, 12, 13, 20, 21, 22, 23}), + reference_tests::Tensor(element::i32, {2, 2}, std::vector{0, 1, 1, 0}), + 0, + reference_tests::Tensor(IN_ET, {2, 2}, std::vector{12, 13, 20, 21}), + "gather_nd_8_1d_from_3d"), + GatherNDParams(reference_tests::Tensor(IN_ET, {2, 2, 2}, std::vector{10, 11, 12, 13, 20, 21, 22, 23}), + reference_tests::Tensor(element::i32, {1, 1}, std::vector{1}), + 0, + reference_tests::Tensor(IN_ET, {1, 2, 2}, std::vector{20, 21, 22, 23}), + "gather_nd_8_2d_from_3d"), + GatherNDParams(reference_tests::Tensor(IN_ET, {2, 2}, std::vector{10, 11, 12, 13}), + reference_tests::Tensor(element::i32, {2, 1, 2}, std::vector{0, 0, 0, 1}), + 0, + reference_tests::Tensor(IN_ET, {2, 1}, std::vector{10, 11}), + "gather_nd_8_batch_scalar_from_2d"), + GatherNDParams(reference_tests::Tensor(IN_ET, {2, 2}, std::vector{10, 11, 12, 13}), + reference_tests::Tensor(element::i32, {2, 1, 1}, std::vector{1, 0}), + 0, + reference_tests::Tensor(IN_ET, {2, 1, 2}, std::vector{12, 13, 10, 11}), + "gather_nd_8_batch_1d_from_2d"), + GatherNDParams( + reference_tests::Tensor(IN_ET, {2, 2, 2}, std::vector{10, 11, 12, 13, 20, 21, 22, 23}), + reference_tests::Tensor(element::i32, {2, 2, 3}, std::vector{0, 0, 1, 1, 0, 1, 0, 1, 1, 1, 1, 0}), + 0, + reference_tests::Tensor(IN_ET, {2, 2}, std::vector{11, 21, 13, 22}), + "gather_nd_8_batch_scalar_from_3d"), + GatherNDParams(reference_tests::Tensor(IN_ET, {2, 2, 2}, std::vector{10, 11, 12, 13, 20, 21, 22, 23}), + reference_tests::Tensor(element::i32, {2, 2, 2}, std::vector{0, 1, 1, 0, 0, 0, 1, 1}), + 0, + reference_tests::Tensor(IN_ET, {2, 2, 2}, std::vector{12, 13, 20, 21, 10, 11, 22, 23}), + "gather_nd_8_batch_1d_from_3d"), + GatherNDParams(reference_tests::Tensor(IN_ET, {2, 2, 2}, std::vector{10, 11, 12, 13, 20, 21, 22, 23}), + reference_tests::Tensor(element::i32, {2, 2, 2}, std::vector{0, -1, -1, 0, 0, 0, 1, 1}), + 0, + reference_tests::Tensor(IN_ET, {2, 2, 2}, std::vector{12, 13, 20, 21, 10, 11, 22, 23}), + "gather_nd_8_batch_1d_from_3d_negative"), + GatherNDParams(reference_tests::Tensor(IN_ET, {2, 2, 2}, std::vector{10, 11, 12, 13, 20, 21, 22, 23}), + reference_tests::Tensor(element::i32, {2, 1, 1}, std::vector{1, 0}), + 0, + reference_tests::Tensor(IN_ET, {2, 1, 2, 2}, std::vector{20, 21, 22, 23, 10, 11, 12, 13}), + "gather_nd_8_batch_2d_from_3d"), + GatherNDParams( + reference_tests::Tensor(IN_ET, {2, 3, 4}, std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, + 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24}), + reference_tests::Tensor(element::i32, {2, 1}, std::vector{1, 0}), + 1, + reference_tests::Tensor(IN_ET, {2, 4}, std::vector{5, 6, 7, 8, 13, 14, 15, 16}), + "gather_nd_8_batch_dims1"), + GatherNDParams( + reference_tests::Tensor(IN_ET, + {2, 3, 4, 2}, + std::vector{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}), + reference_tests::Tensor(element::i32, + {2, 3, 3, 2}, + std::vector{1, 0, 3, 1, 2, 1, 0, 1, 1, 1, 2, 0, 3, 0, 3, 1, 2, 1, + 2, 0, 1, 1, 3, 1, 1, 1, 2, 0, 2, 0, 0, 0, 3, 1, 3, 1}), + 2, + reference_tests::Tensor( + IN_ET, + {2, 3, 3}, + std::vector{3, 8, 6, 10, 12, 13, 23, 24, 22, 29, 28, 32, 36, 37, 37, 41, 48, 48}), + "gather_8_nd_batch_dims2"), + GatherNDParams( + reference_tests::Tensor(IN_ET, {2, 3, 4}, std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, + 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24}), + reference_tests::Tensor(element::i32, {2, 3, 1, 1}, std::vector{1, 0, 2, 0, 2, 2}), + 2, + reference_tests::Tensor(IN_ET, {2, 3, 1}, std::vector{2, 5, 11, 13, 19, 23}), + "gather_8_nd_batch_dims2_lead_dims"), + GatherNDParams( + reference_tests::Tensor( + IN_ET, + {2, 3, 4, 5}, + std::vector{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, 72, + 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, + 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, + 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120}), + reference_tests::Tensor(element::i32, + {2, 3, 2, 1}, + std::vector{1, 0, 2, 0, 2, 0, 1, 0, 2, 0, 2, 0}), + 2, + reference_tests::Tensor( + IN_ET, + {2, 3, 2, 5}, + std::vector{6, 7, 8, 9, 10, 1, 2, 3, 4, 5, 31, 32, 33, 34, 35, + 21, 22, 23, 24, 25, 51, 52, 53, 54, 55, 41, 42, 43, 44, 45, + 66, 67, 68, 69, 70, 61, 62, 63, 64, 65, 91, 92, 93, 94, 95, + 81, 82, 83, 84, 85, 111, 112, 113, 114, 115, 101, 102, 103, 104, 105}), + "gather_8_nd_batch_dims2_non_scalar_slices"), }; return params; } std::vector generateCombinedParams_v8() { - const std::vector> generatedParams { - generateParams_v8(), - generateParams_v8(), - generateParams_v8(), - generateParams_v8(), - generateParams_v8(), - generateParams_v8(), - generateParams_v8(), - generateParams_v8(), - generateParams_v8(), - generateParams_v8(), - generateParams_v8(), - generateParams_v8(), + const std::vector> generatedParams{ + generateParams_v8(), + generateParams_v8(), + generateParams_v8(), + generateParams_v8(), + generateParams_v8(), + generateParams_v8(), + generateParams_v8(), + generateParams_v8(), + generateParams_v8(), + generateParams_v8(), + generateParams_v8(), + generateParams_v8(), }; std::vector combinedParams; @@ -404,6 +401,8 @@ std::vector generateCombinedParams_v8() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_GatherND_With_Hardcoded_Refs, ReferenceGatherND8Test, - testing::ValuesIn(generateCombinedParams_v8()), ReferenceGatherND8Test::getTestCaseName); -} // namespace +INSTANTIATE_TEST_SUITE_P(smoke_GatherND_With_Hardcoded_Refs, + ReferenceGatherND8Test, + testing::ValuesIn(generateCombinedParams_v8()), + ReferenceGatherND8Test::getTestCaseName); +} // namespace diff --git a/src/plugins/template/tests/functional/op_reference/gather_tree.cpp b/src/plugins/template/tests/functional/op_reference/gather_tree.cpp index e79917a1826..696820760e8 100644 --- a/src/plugins/template/tests/functional/op_reference/gather_tree.cpp +++ b/src/plugins/template/tests/functional/op_reference/gather_tree.cpp @@ -4,8 +4,8 @@ #include -#include "openvino/opsets/opset1.hpp" #include "base_reference_test.hpp" +#include "openvino/opsets/opset1.hpp" using namespace reference_tests; using namespace ov; @@ -64,7 +64,8 @@ private: const auto max_seq_len = std::make_shared(params.maxSeqLen.type, params.maxSeqLen.shape); const auto end_token = std::make_shared(params.endToken.type, params.endToken.shape); const auto gather_tree = std::make_shared(step_ids, parent_idx, max_seq_len, end_token); - const auto f = std::make_shared(gather_tree, ParameterVector{step_ids, parent_idx, max_seq_len, end_token}); + const auto f = + std::make_shared(gather_tree, ParameterVector{step_ids, parent_idx, max_seq_len, end_token}); return f; } }; @@ -76,84 +77,72 @@ TEST_P(ReferenceGatherTreeTest, CompareWithRefs) { template std::vector generateParams() { using T = typename element_type_traits::value_type; - std::vector params { - Builder {} - .stepIds(reference_tests::Tensor(ET, {1, 1, 10}, std::vector{ - 1, 4, 9, 7, 9, 1, 2, 3, 9, 9})) - .parentIdx(reference_tests::Tensor(ET, {1, 1, 10}, std::vector{ - 1, 4, 9, 7, 9, 1, 2, 3, 9, 9})) - .maxSeqLen(reference_tests::Tensor(ET, {1}, std::vector{9})) - .endToken(reference_tests::Tensor(ET, {}, std::vector{9})) - .finalIdx(reference_tests::Tensor(ET, {1, 1, 10}, std::vector{ - 1, 4, 9, 7, 9, 1, 2, 3, 9, 9})) - .testcaseName("gather_tree_1"), + std::vector params{ + Builder{} + .stepIds(reference_tests::Tensor(ET, {1, 1, 10}, std::vector{1, 4, 9, 7, 9, 1, 2, 3, 9, 9})) + .parentIdx(reference_tests::Tensor(ET, {1, 1, 10}, std::vector{1, 4, 9, 7, 9, 1, 2, 3, 9, 9})) + .maxSeqLen(reference_tests::Tensor(ET, {1}, std::vector{9})) + .endToken(reference_tests::Tensor(ET, {}, std::vector{9})) + .finalIdx(reference_tests::Tensor(ET, {1, 1, 10}, std::vector{1, 4, 9, 7, 9, 1, 2, 3, 9, 9})) + .testcaseName("gather_tree_1"), - Builder {} - .stepIds(reference_tests::Tensor(ET, {5, 1, 10}, std::vector{ - 1, 4, 9, 7, 9, 1, 2, 3, 9, 2, - 3, 1, 4, 2, 4, 4, 7, 4, 9, 5, - 8, 4, 3, 7, 5, 2, 4, 8, 3, 1, - 5, 7, 9, 4, 5, 6, 4, 2, 9, 2, - 8, 8, 7, 9, 8, 3, 1, 7, 5, 9})) - .parentIdx(reference_tests::Tensor(ET, {5, 1, 10}, std::vector{ - 1, 4, 9, 7, 9, 1, 2, 3, 9, 2, - 3, 1, 4, 2, 4, 4, 7, 4, 9, 5, - 8, 4, 3, 7, 5, 2, 4, 8, 3, 1, - 5, 7, 9, 4, 5, 6, 4, 2, 9, 2, - 8, 8, 7, 9, 8, 3, 1, 7, 5, 9})) - .maxSeqLen(reference_tests::Tensor(ET, {1}, std::vector{9})) - .endToken(reference_tests::Tensor(ET, {}, std::vector{9})) - .finalIdx(reference_tests::Tensor(ET, {5, 1, 10}, std::vector{ - 4, 4, 9, 9, 4, 9, 2, 9, 9, 9, - 1, 1, 9, 9, 1, 9, 9, 9, 9, 9, - 1, 1, 9, 9, 1, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9})) - .testcaseName("gather_tree_5"), + Builder{} + .stepIds(reference_tests::Tensor(ET, {5, 1, 10}, std::vector{1, 4, 9, 7, 9, 1, 2, 3, 9, 2, 3, 1, 4, + 2, 4, 4, 7, 4, 9, 5, 8, 4, 3, 7, 5, 2, + 4, 8, 3, 1, 5, 7, 9, 4, 5, 6, 4, 2, 9, + 2, 8, 8, 7, 9, 8, 3, 1, 7, 5, 9})) + .parentIdx(reference_tests::Tensor(ET, {5, 1, 10}, std::vector{1, 4, 9, 7, 9, 1, 2, 3, 9, 2, 3, 1, 4, + 2, 4, 4, 7, 4, 9, 5, 8, 4, 3, 7, 5, 2, + 4, 8, 3, 1, 5, 7, 9, 4, 5, 6, 4, 2, 9, + 2, 8, 8, 7, 9, 8, 3, 1, 7, 5, 9})) + .maxSeqLen(reference_tests::Tensor(ET, {1}, std::vector{9})) + .endToken(reference_tests::Tensor(ET, {}, std::vector{9})) + .finalIdx(reference_tests::Tensor(ET, {5, 1, 10}, std::vector{4, 4, 9, 9, 4, 9, 2, 9, 9, 9, 1, 1, 9, + 9, 1, 9, 9, 9, 9, 9, 1, 1, 9, 9, 1, 9, + 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9})) + .testcaseName("gather_tree_5"), - Builder {} - .stepIds(reference_tests::Tensor(ET, {20, 1, 10}, std::vector{ - 1, 4, 9, 7, 9, 1, 2, 3, 9, 2, 3, 1, 4, 2, 4, 4, 7, 4, 9, 5, - 8, 4, 3, 7, 5, 2, 4, 8, 3, 1, 5, 7, 9, 4, 5, 6, 4, 2, 9, 2, - 8, 8, 7, 9, 8, 3, 1, 7, 5, 8, 8, 9, 8, 1, 8, 1, 3, 2, 1, 8, - 7, 1, 6, 4, 7, 9, 4, 5, 2, 7, 3, 3, 2, 7, 8, 8, 4, 1, 1, 7, - 6, 9, 6, 7, 3, 3, 5, 8, 2, 1, 1, 5, 5, 9, 1, 3, 9, 3, 2, 2, - 5, 1, 1, 7, 9, 2, 9, 3, 3, 5, 6, 1, 6, 6, 6, 2, 9, 6, 3, 7, - 3, 1, 5, 4, 9, 7, 5, 4, 5, 1, 7, 5, 1, 6, 2, 5, 8, 9, 1, 6, - 8, 9, 5, 2, 5, 2, 9, 8, 4, 4, 5, 2, 6, 9, 4, 4, 6, 7, 6, 7, - 2, 8, 7, 6, 6, 7, 4, 4, 7, 3, 4, 9, 7, 4, 8, 9, 1, 6, 5, 6, - 1, 2, 8, 9, 1, 5, 4, 6, 9, 4, 4, 3, 7, 9, 7, 6, 3, 1, 7, 9})) - .parentIdx(reference_tests::Tensor(ET, {20, 1, 10}, std::vector{ - 1, 4, 9, 7, 9, 1, 2, 3, 9, 2, 3, 1, 4, 2, 4, 4, 7, 4, 9, 5, - 8, 4, 3, 7, 5, 2, 4, 8, 3, 1, 5, 7, 9, 4, 5, 6, 4, 2, 9, 2, - 8, 8, 7, 9, 8, 3, 1, 7, 5, 8, 8, 9, 8, 1, 8, 1, 3, 2, 1, 8, - 7, 1, 6, 4, 7, 9, 4, 5, 2, 7, 3, 3, 2, 7, 8, 8, 4, 1, 1, 7, - 6, 9, 6, 7, 3, 3, 5, 8, 2, 1, 1, 5, 5, 9, 1, 3, 9, 3, 2, 2, - 5, 1, 1, 7, 9, 2, 9, 3, 3, 5, 6, 1, 6, 6, 6, 2, 9, 6, 3, 7, - 3, 1, 5, 4, 9, 7, 5, 4, 5, 1, 7, 5, 1, 6, 2, 5, 8, 9, 1, 6, - 8, 9, 5, 2, 5, 2, 9, 8, 4, 4, 5, 2, 6, 9, 4, 4, 6, 7, 6, 7, - 2, 8, 7, 6, 6, 7, 4, 4, 7, 3, 4, 9, 7, 4, 8, 9, 1, 6, 5, 6, - 1, 2, 8, 9, 1, 5, 4, 6, 9, 4, 4, 3, 7, 9, 7, 6, 3, 1, 7, 9})) - .maxSeqLen(reference_tests::Tensor(ET, {1}, std::vector{9})) - .endToken(reference_tests::Tensor(ET, {}, std::vector{9})) - .finalIdx(reference_tests::Tensor(ET, {20, 1, 10}, std::vector{ - 9, 4, 9, 4, 4, 4, 9, 4, 9, 9, 9, 1, 9, 1, 1, 1, 9, 1, 9, 9, - 9, 1, 9, 1, 1, 1, 9, 1, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9})) - .testcaseName("gather_tree_10"), + Builder{} + .stepIds(reference_tests::Tensor( + ET, + {20, 1, 10}, + std::vector{1, 4, 9, 7, 9, 1, 2, 3, 9, 2, 3, 1, 4, 2, 4, 4, 7, 4, 9, 5, 8, 4, 3, 7, 5, 2, 4, 8, 3, + 1, 5, 7, 9, 4, 5, 6, 4, 2, 9, 2, 8, 8, 7, 9, 8, 3, 1, 7, 5, 8, 8, 9, 8, 1, 8, 1, 3, 2, + 1, 8, 7, 1, 6, 4, 7, 9, 4, 5, 2, 7, 3, 3, 2, 7, 8, 8, 4, 1, 1, 7, 6, 9, 6, 7, 3, 3, 5, + 8, 2, 1, 1, 5, 5, 9, 1, 3, 9, 3, 2, 2, 5, 1, 1, 7, 9, 2, 9, 3, 3, 5, 6, 1, 6, 6, 6, 2, + 9, 6, 3, 7, 3, 1, 5, 4, 9, 7, 5, 4, 5, 1, 7, 5, 1, 6, 2, 5, 8, 9, 1, 6, 8, 9, 5, 2, 5, + 2, 9, 8, 4, 4, 5, 2, 6, 9, 4, 4, 6, 7, 6, 7, 2, 8, 7, 6, 6, 7, 4, 4, 7, 3, 4, 9, 7, 4, + 8, 9, 1, 6, 5, 6, 1, 2, 8, 9, 1, 5, 4, 6, 9, 4, 4, 3, 7, 9, 7, 6, 3, 1, 7, 9})) + .parentIdx(reference_tests::Tensor( + ET, + {20, 1, 10}, + std::vector{1, 4, 9, 7, 9, 1, 2, 3, 9, 2, 3, 1, 4, 2, 4, 4, 7, 4, 9, 5, 8, 4, 3, 7, 5, 2, 4, 8, 3, + 1, 5, 7, 9, 4, 5, 6, 4, 2, 9, 2, 8, 8, 7, 9, 8, 3, 1, 7, 5, 8, 8, 9, 8, 1, 8, 1, 3, 2, + 1, 8, 7, 1, 6, 4, 7, 9, 4, 5, 2, 7, 3, 3, 2, 7, 8, 8, 4, 1, 1, 7, 6, 9, 6, 7, 3, 3, 5, + 8, 2, 1, 1, 5, 5, 9, 1, 3, 9, 3, 2, 2, 5, 1, 1, 7, 9, 2, 9, 3, 3, 5, 6, 1, 6, 6, 6, 2, + 9, 6, 3, 7, 3, 1, 5, 4, 9, 7, 5, 4, 5, 1, 7, 5, 1, 6, 2, 5, 8, 9, 1, 6, 8, 9, 5, 2, 5, + 2, 9, 8, 4, 4, 5, 2, 6, 9, 4, 4, 6, 7, 6, 7, 2, 8, 7, 6, 6, 7, 4, 4, 7, 3, 4, 9, 7, 4, + 8, 9, 1, 6, 5, 6, 1, 2, 8, 9, 1, 5, 4, 6, 9, 4, 4, 3, 7, 9, 7, 6, 3, 1, 7, 9})) + .maxSeqLen(reference_tests::Tensor(ET, {1}, std::vector{9})) + .endToken(reference_tests::Tensor(ET, {}, std::vector{9})) + .finalIdx(reference_tests::Tensor( + ET, + {20, 1, 10}, + std::vector{9, 4, 9, 4, 4, 4, 9, 4, 9, 9, 9, 1, 9, 1, 1, 1, 9, 1, 9, 9, 9, 1, 9, 1, 1, 1, 9, 1, 9, + 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9})) + .testcaseName("gather_tree_10"), }; return params; } std::vector generateCombinedParams() { - const std::vector> generatedParams { + const std::vector> generatedParams{ generateParams(), generateParams(), }; @@ -165,6 +154,8 @@ std::vector generateCombinedParams() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_GatherTree_With_Hardcoded_Refs, ReferenceGatherTreeTest, - testing::ValuesIn(generateCombinedParams()), ReferenceGatherTreeTest::getTestCaseName); -} // namespace +INSTANTIATE_TEST_SUITE_P(smoke_GatherTree_With_Hardcoded_Refs, + ReferenceGatherTreeTest, + testing::ValuesIn(generateCombinedParams()), + ReferenceGatherTreeTest::getTestCaseName); +} // namespace diff --git a/src/plugins/template/tests/functional/op_reference/gelu.cpp b/src/plugins/template/tests/functional/op_reference/gelu.cpp index 49593aa8b9a..08624796c06 100644 --- a/src/plugins/template/tests/functional/op_reference/gelu.cpp +++ b/src/plugins/template/tests/functional/op_reference/gelu.cpp @@ -2,9 +2,10 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/gelu.hpp" + #include -#include "openvino/op/gelu.hpp" #include "base_reference_test.hpp" using namespace reference_tests; @@ -14,8 +15,11 @@ using namespace InferenceEngine; namespace { struct GeluParams { template - GeluParams(const ov::PartialShape& shape, const ov::element::Type& iType, const std::vector& iValues, const std::vector& oValues, - const ov::op::GeluApproximationMode mode) + GeluParams(const ov::PartialShape& shape, + const ov::element::Type& iType, + const std::vector& iValues, + const std::vector& oValues, + const ov::op::GeluApproximationMode mode) : mode(mode), pshape(shape), inType(iType), @@ -49,11 +53,13 @@ public: } private: - static std::shared_ptr CreateFunction(const PartialShape& input_shape, const element::Type& input_type, - const element::Type& expected_output_type, const op::GeluApproximationMode mode) { + static std::shared_ptr CreateFunction(const PartialShape& input_shape, + const element::Type& input_type, + const element::Type& expected_output_type, + const op::GeluApproximationMode mode) { const auto in = std::make_shared(input_type, input_shape); const auto Gelu = std::make_shared(in); - return std::make_shared(NodeVector {Gelu}, ParameterVector {in}); + return std::make_shared(NodeVector{Gelu}, ParameterVector{in}); } }; @@ -76,11 +82,13 @@ public: } private: - static std::shared_ptr CreateFunction(const PartialShape& input_shape, const element::Type& input_type, - const element::Type& expected_output_type, const op::GeluApproximationMode mode) { + static std::shared_ptr CreateFunction(const PartialShape& input_shape, + const element::Type& input_type, + const element::Type& expected_output_type, + const op::GeluApproximationMode mode) { const auto in = std::make_shared(input_type, input_shape); const auto Gelu = std::make_shared(in, mode); - return std::make_shared(NodeVector {Gelu}, ParameterVector {in}); + return std::make_shared(NodeVector{Gelu}, ParameterVector{in}); } }; @@ -95,18 +103,19 @@ template std::vector generateGeluV0FloatParams() { using T = typename element_type_traits::value_type; - std::vector geluParams { - GeluParams(ov::PartialShape {8}, - IN_ET, - std::vector{-4.0, -3.0, -2.0, -1.0, 0.0, 1.0, 2.0, 3.0}, - std::vector{-0.00012636185, -0.0040495098, -0.04550028, -0.15865529, 0.0, 0.8413447, 1.9544997, 2.9959507}, - op::GeluApproximationMode::ERF), - GeluParams(ov::PartialShape {3}, - IN_ET, - std::vector{-0.5, 0.1, 0.4}, - std::vector{-0.15426877, 0.05398279, 0.2621686}, - op::GeluApproximationMode::ERF) - }; + std::vector geluParams{ + GeluParams( + ov::PartialShape{8}, + IN_ET, + std::vector{-4.0, -3.0, -2.0, -1.0, 0.0, 1.0, 2.0, 3.0}, + std::vector< + T>{-0.00012636185, -0.0040495098, -0.04550028, -0.15865529, 0.0, 0.8413447, 1.9544997, 2.9959507}, + op::GeluApproximationMode::ERF), + GeluParams(ov::PartialShape{3}, + IN_ET, + std::vector{-0.5, 0.1, 0.4}, + std::vector{-0.15426877, 0.05398279, 0.2621686}, + op::GeluApproximationMode::ERF)}; return geluParams; } @@ -114,36 +123,37 @@ template std::vector generateGeluV7FloatParams() { using T = typename element_type_traits::value_type; - std::vector geluParams { - GeluParams(ov::PartialShape {8}, - IN_ET, - std::vector{-4.0, -3.0, -2.0, -1.0, 0.0, 1.0, 2.0, 3.0}, - std::vector{-0.00012636185, -0.0040495098, -0.04550028, -0.15865529, 0.0, 0.8413447, 1.9544997, 2.9959507}, - op::GeluApproximationMode::ERF), - GeluParams(ov::PartialShape {8}, - IN_ET, - std::vector{-4.0, -3.0, -2.0, -1.0, 0.0, 1.0, 2.0, 3.0}, - std::vector{-0.00012636185, -0.0040495098, -0.04550028, -0.15865529, 0.0, 0.8413447, 1.9544997, 2.9959507}, - op::GeluApproximationMode::TANH), - GeluParams(ov::PartialShape {3}, - IN_ET, - std::vector{-0.5, 0.1, 0.4}, - std::vector{-0.15426877, 0.05398279, 0.2621686}, - op::GeluApproximationMode::ERF), - GeluParams(ov::PartialShape {3}, - IN_ET, - std::vector{-0.5, 0.1, 0.4}, - std::vector{-0.15428599, 0.053982753, 0.262161165}, - op::GeluApproximationMode::TANH) - }; + std::vector geluParams{ + GeluParams( + ov::PartialShape{8}, + IN_ET, + std::vector{-4.0, -3.0, -2.0, -1.0, 0.0, 1.0, 2.0, 3.0}, + std::vector< + T>{-0.00012636185, -0.0040495098, -0.04550028, -0.15865529, 0.0, 0.8413447, 1.9544997, 2.9959507}, + op::GeluApproximationMode::ERF), + GeluParams( + ov::PartialShape{8}, + IN_ET, + std::vector{-4.0, -3.0, -2.0, -1.0, 0.0, 1.0, 2.0, 3.0}, + std::vector< + T>{-0.00012636185, -0.0040495098, -0.04550028, -0.15865529, 0.0, 0.8413447, 1.9544997, 2.9959507}, + op::GeluApproximationMode::TANH), + GeluParams(ov::PartialShape{3}, + IN_ET, + std::vector{-0.5, 0.1, 0.4}, + std::vector{-0.15426877, 0.05398279, 0.2621686}, + op::GeluApproximationMode::ERF), + GeluParams(ov::PartialShape{3}, + IN_ET, + std::vector{-0.5, 0.1, 0.4}, + std::vector{-0.15428599, 0.053982753, 0.262161165}, + op::GeluApproximationMode::TANH)}; return geluParams; } std::vector generateGeluV0CombinedParams() { - const std::vector> geluTypeParams { - generateGeluV0FloatParams(), - generateGeluV0FloatParams() - }; + const std::vector> geluTypeParams{generateGeluV0FloatParams(), + generateGeluV0FloatParams()}; std::vector combinedParams; for (const auto& params : geluTypeParams) { @@ -153,10 +163,8 @@ std::vector generateGeluV0CombinedParams() { } std::vector generateGeluV7CombinedParams() { - const std::vector> geluTypeParams { - generateGeluV7FloatParams(), - generateGeluV7FloatParams() - }; + const std::vector> geluTypeParams{generateGeluV7FloatParams(), + generateGeluV7FloatParams()}; std::vector combinedParams; for (const auto& params : geluTypeParams) { @@ -165,10 +173,14 @@ std::vector generateGeluV7CombinedParams() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_Gelu_v2_With_Hardcoded_Refs, ReferenceGeluV0LayerTest, - testing::ValuesIn(generateGeluV0CombinedParams()), ReferenceGeluV0LayerTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_Gelu_v2_With_Hardcoded_Refs, + ReferenceGeluV0LayerTest, + testing::ValuesIn(generateGeluV0CombinedParams()), + ReferenceGeluV0LayerTest::getTestCaseName); -INSTANTIATE_TEST_SUITE_P(smoke_Gelu_v7_With_Hardcoded_Refs, ReferenceGeluV7LayerTest, - testing::ValuesIn(generateGeluV7CombinedParams()), ReferenceGeluV7LayerTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_Gelu_v7_With_Hardcoded_Refs, + ReferenceGeluV7LayerTest, + testing::ValuesIn(generateGeluV7CombinedParams()), + ReferenceGeluV7LayerTest::getTestCaseName); -} // namespace +} // namespace diff --git a/src/plugins/template/tests/functional/op_reference/generate_proposals.cpp b/src/plugins/template/tests/functional/op_reference/generate_proposals.cpp index 6c51d76b94e..e53b0cc78b5 100644 --- a/src/plugins/template/tests/functional/op_reference/generate_proposals.cpp +++ b/src/plugins/template/tests/functional/op_reference/generate_proposals.cpp @@ -2,9 +2,10 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/generate_proposals.hpp" + #include -#include "openvino/op/generate_proposals.hpp" #include "base_reference_test.hpp" using namespace reference_tests; @@ -16,13 +17,20 @@ namespace { struct GPParams { template GPParams(const Attrs& attrs, - const size_t batch, const size_t number_of_channels, const size_t height, const size_t width, - const element::Type& iType, const element::Type& roiNumType, - const std::vector& imageSizeInfoValues, const std::vector& anchorsValues, - const std::vector& deltasValues, const std::vector& scoresValues, - const std::vector& refRoisValues, const std::vector& refScoresValues, - const std::vector& refRoiNumValues, - const std::string& testcaseName = "") + const size_t batch, + const size_t number_of_channels, + const size_t height, + const size_t width, + const element::Type& iType, + const element::Type& roiNumType, + const std::vector& imageSizeInfoValues, + const std::vector& anchorsValues, + const std::vector& deltasValues, + const std::vector& scoresValues, + const std::vector& refRoisValues, + const std::vector& refScoresValues, + const std::vector& refRoiNumValues, + const std::string& testcaseName = "") : attrs(attrs), inType(iType), outType(iType), @@ -35,11 +43,11 @@ struct GPParams { refScoresData(CreateTensor(iType, refScoresValues)), refRoiNumData(CreateTensor(roiNumType, refRoiNumValues)), testcaseName(testcaseName) { - imageSizeInfoShape = Shape{batch, 3}; - anchorsShape = Shape{height, width, number_of_channels, 4}; - deltasShape = Shape{batch, number_of_channels * 4, height, width}; - scoresShape = Shape{batch, number_of_channels, height, width}; - } + imageSizeInfoShape = Shape{batch, 3}; + anchorsShape = Shape{height, width, number_of_channels, 4}; + deltasShape = Shape{batch, number_of_channels * 4, height, width}; + scoresShape = Shape{batch, number_of_channels, height, width}; + } Attrs attrs; PartialShape imageSizeInfoShape; @@ -88,13 +96,11 @@ private: const auto anchors = std::make_shared(params.inType, params.anchorsShape); const auto deltas = std::make_shared(params.inType, params.deltasShape); const auto scores = std::make_shared(params.inType, params.scoresShape); - const auto GenerateProposal = std::make_shared(im_info, - anchors, - deltas, - scores, - params.attrs); + const auto GenerateProposal = + std::make_shared(im_info, anchors, deltas, scores, params.attrs); GenerateProposal->set_roi_num_type(params.roiNumType); - return std::make_shared(GenerateProposal->outputs(), ParameterVector {im_info, anchors, deltas, scores}); + return std::make_shared(GenerateProposal->outputs(), + ParameterVector{im_info, anchors, deltas, scores}); } }; @@ -115,185 +121,194 @@ std::vector generateGPFloatParams() { attrs.nms_eta = 1.0; attrs.normalized = true; - std::vector generateProposalParams { + std::vector generateProposalParams{ GPParams(attrs, - 1, - 3, // A - 2, // H - 6, // W - IN_ET, - OUT_RT, - std::vector{1.0f, 1.0f, 0.0f}, - std::vector(144, 1.0f), // anchors [H, W, A, 4] - std::vector(144, 1.0f), // deltas [N, A * 4, H, W] - std::vector{5.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 4.0f, 1.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 8.0f, 1.0f}, // scores [N, A, H, W] - std::vector(24, 1.0f), // ref rois - std::vector{8.0f, 5.0f, 4.0f, 1.0f, 1.0f, 1.0f}, // ref scores - std::vector{6}, // ref roiNum - "eval"), + 1, + 3, // A + 2, // H + 6, // W + IN_ET, + OUT_RT, + std::vector{1.0f, 1.0f, 0.0f}, + std::vector(144, 1.0f), // anchors [H, W, A, 4] + std::vector(144, 1.0f), // deltas [N, A * 4, H, W] + std::vector{5.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, + 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 4.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, + 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 8.0f, 1.0f}, // scores [N, A, H, W] + std::vector(24, 1.0f), // ref rois + std::vector{8.0f, 5.0f, 4.0f, 1.0f, 1.0f, 1.0f}, // ref scores + std::vector{6}, // ref roiNum + "eval"), + GPParams( + attrs, + 2, + 3, + 2, + 6, + IN_ET, + OUT_RT, + std::vector{150.0, 150.0, 0.0, 150.0, 150.0, 0.0}, + std::vector{ + 12.0, 68.0, 102.0, 123.0, 46.0, 80.0, 79.0, 128.0, 33.0, 71.0, 127.0, 86.0, 33.0, 56.0, 150.0, + 73.0, 5.0, 41.0, 93.0, 150.0, 74.0, 66.0, 106.0, 115.0, 17.0, 37.0, 87.0, 150.0, 31.0, 27.0, + 150.0, 39.0, 29.0, 23.0, 112.0, 123.0, 41.0, 37.0, 103.0, 150.0, 8.0, 46.0, 98.0, 111.0, 7.0, + 69.0, 114.0, 150.0, 70.0, 21.0, 150.0, 125.0, 54.0, 19.0, 132.0, 68.0, 62.0, 8.0, 150.0, 101.0, + 57.0, 81.0, 150.0, 97.0, 79.0, 29.0, 109.0, 130.0, 12.0, 63.0, 100.0, 150.0, 17.0, 33.0, 113.0, + 150.0, 90.0, 78.0, 150.0, 111.0, 47.0, 68.0, 150.0, 71.0, 66.0, 103.0, 111.0, 150.0, 4.0, 17.0, + 112.0, 94.0, 12.0, 8.0, 119.0, 98.0, 54.0, 56.0, 120.0, 150.0, 56.0, 29.0, 150.0, 31.0, 42.0, + 3.0, 139.0, 92.0, 41.0, 65.0, 150.0, 130.0, 49.0, 13.0, 143.0, 30.0, 40.0, 60.0, 150.0, 150.0, + 23.0, 73.0, 24.0, 115.0, 56.0, 84.0, 107.0, 108.0, 63.0, 8.0, 142.0, 125.0, 78.0, 37.0, 93.0, + 144.0, 40.0, 34.0, 150.0, 46.0, 30.0, 21.0, 150.0, 120.0}, + std::vector{ + 9.062256, 10.883133, 9.8441105, 12.694285, 0.41781136, 8.749107, 14.990341, 6.587644, + 1.4206103, 13.299262, 12.432549, 2.736371, 0.22732796, 6.3361835, 12.268727, 2.1009045, + 4.771589, 2.5131326, 5.610736, 9.3604145, 4.27379, 8.317948, 0.60510135, 6.7446275, + 1.0207708, 1.1352817, 1.5785321, 1.718335, 1.8093798, 0.99247587, 1.3233583, 1.7432803, + 1.8534478, 1.2593061, 1.7394226, 1.7686696, 1.647999, 1.7611449, 1.3119122, 0.03007332, + 1.1106564, 0.55669737, 0.2546148, 1.9181818, 0.7134989, 2.0407224, 1.7211134, 1.8565536, + 14.562747, 2.8786168, 0.5927796, 0.2064463, 7.6794515, 8.672126, 10.139171, 8.002429, + 7.002932, 12.6314945, 10.550842, 0.15784842, 0.3194304, 10.752157, 3.709805, 11.628928, + 0.7136225, 14.619964, 15.177284, 2.2824087, 15.381494, 0.16618137, 7.507227, 11.173228, + 0.4923559, 1.8227729, 1.4749299, 1.7833921, 1.2363617, -0.23659119, 1.5737582, 1.779316, + 1.9828427, 1.0482665, 1.4900246, 1.3563544, 1.5341306, 0.7634312, 4.6216766e-05, 1.6161222, + 1.7512476, 1.9363779, 0.9195784, 1.4906164, -0.03244795, 0.681073, 0.6192401, 1.8033613, + 14.146055, 3.4043705, 15.292292, 3.5295358, 11.138999, 9.952057, 5.633434, 12.114562, + 9.427372, 12.384038, 9.583308, 8.427233, 15.293704, 3.288159, 11.64898, 9.350885, + 2.0037227, 13.523184, 4.4176426, 6.1057625, 14.400079, 8.248259, 11.815807, 15.713364, + 1.0023532, 1.3203261, 1.7100681, 0.7407832, 1.09448, 1.7188418, 1.4412547, 1.4862992, + 0.74790007, 0.31571656, 0.6398838, 2.0236106, 1.1869069, 1.7265586, 1.2624544, 0.09934269, + 1.3508598, 0.85212964, -0.38968498, 1.7059708, 1.6533034, 1.7400402, 1.8123854, -0.43063712, + 9.062256, 10.883133, 9.8441105, 12.694285, 0.41781136, 8.749107, 14.990341, 6.587644, + 1.4206103, 13.299262, 12.432549, 2.736371, 0.22732796, 6.3361835, 12.268727, 2.1009045, + 4.771589, 2.5131326, 5.610736, 9.3604145, 4.27379, 8.317948, 0.60510135, 6.7446275, + 1.0207708, 1.1352817, 1.5785321, 1.718335, 1.8093798, 0.99247587, 1.3233583, 1.7432803, + 1.8534478, 1.2593061, 1.7394226, 1.7686696, 1.647999, 1.7611449, 1.3119122, 0.03007332, + 1.1106564, 0.55669737, 0.2546148, 1.9181818, 0.7134989, 2.0407224, 1.7211134, 1.8565536, + 14.562747, 2.8786168, 0.5927796, 0.2064463, 7.6794515, 8.672126, 10.139171, 8.002429, + 7.002932, 12.6314945, 10.550842, 0.15784842, 0.3194304, 10.752157, 3.709805, 11.628928, + 0.7136225, 14.619964, 15.177284, 2.2824087, 15.381494, 0.16618137, 7.507227, 11.173228, + 0.4923559, 1.8227729, 1.4749299, 1.7833921, 1.2363617, -0.23659119, 1.5737582, 1.779316, + 1.9828427, 1.0482665, 1.4900246, 1.3563544, 1.5341306, 0.7634312, 4.6216766e-05, 1.6161222, + 1.7512476, 1.9363779, 0.9195784, 1.4906164, -0.03244795, 0.681073, 0.6192401, 1.8033613, + 14.146055, 3.4043705, 15.292292, 3.5295358, 11.138999, 9.952057, 5.633434, 12.114562, + 9.427372, 12.384038, 9.583308, 8.427233, 15.293704, 3.288159, 11.64898, 9.350885, + 2.0037227, 13.523184, 4.4176426, 6.1057625, 14.400079, 8.248259, 11.815807, 15.713364, + 1.0023532, 1.3203261, 1.7100681, 0.7407832, 1.09448, 1.7188418, 1.4412547, 1.4862992, + 0.74790007, 0.31571656, 0.6398838, 2.0236106, 1.1869069, 1.7265586, 1.2624544, 0.09934269, + 1.3508598, 0.85212964, -0.38968498, 1.7059708, 1.6533034, 1.7400402, 1.8123854, -0.43063712}, + std::vector{ + 0.7719922, 0.35906568, 0.29054508, 0.18124384, 0.5604661, 0.84750974, 0.98948747, 0.009793862, + 0.7184191, 0.5560748, 0.6952493, 0.6732593, 0.3306898, 0.6790913, 0.41128764, 0.34593266, + 0.94296855, 0.7348507, 0.24478768, 0.94024557, 0.05405676, 0.06466125, 0.36244348, 0.07942984, + 0.10619422, 0.09412837, 0.9053611, 0.22870538, 0.9237487, 0.20986171, 0.5067282, 0.29709867, + 0.53138554, 0.189101, 0.4786443, 0.88421875, 0.7719922, 0.35906568, 0.29054508, 0.18124384, + 0.5604661, 0.84750974, 0.98948747, 0.009793862, 0.7184191, 0.5560748, 0.6952493, 0.6732593, + 0.3306898, 0.6790913, 0.41128764, 0.34593266, 0.94296855, 0.7348507, 0.24478768, 0.94024557, + 0.05405676, 0.06466125, 0.36244348, 0.07942984, 0.10619422, 0.09412837, 0.9053611, 0.22870538, + 0.9237487, 0.20986171, 0.5067282, 0.29709867, 0.53138554, 0.189101, 0.4786443, 0.88421875}, + std::vector{149, 149, + 149, 149, + 149, 0, + 149, 149, + 149, 60.87443542480469, + 149, 149, + 149, 61.89498901367188, + 149, 149, + 149, 149, + 149, 149, + 149, 149, + 149, 149, + 149, 149, + 149, 149, + 149, 0, + 149, 149, + 149, 60.87443542480469, + 149, 149, + 149, 61.89498901367188, + 149, 149, + 149, 149, + 149, 149, + 149, 149, + 149, 149}, + std::vector{0.9894874691963196, + 0.9429685473442078, + 0.9402455687522888, + 0.9237486720085144, + 0.9053611159324646, + 0.8842187523841858, + 0.9894874691963196, + 0.9429685473442078, + 0.9402455687522888, + 0.9237486720085144, + 0.9053611159324646, + 0.8842187523841858}, + std::vector{6, 6}, + "batch_2"), GPParams(attrs, - 2, - 3, - 2, - 6, - IN_ET, - OUT_RT, - std::vector{150.0, 150.0, 0.0, 150.0, 150.0, 0.0}, - std::vector{12.0, 68.0, 102.0, 123.0, 46.0, 80.0, 79.0, 128.0, 33.0, 71.0, 127.0, 86.0, 33.0, 56.0, 150.0, 73.0, - 5.0, 41.0, 93.0, 150.0, 74.0, 66.0, 106.0, 115.0, 17.0, 37.0, 87.0, 150.0, 31.0, 27.0, 150.0, 39.0, - 29.0, 23.0, 112.0, 123.0, 41.0, 37.0, 103.0, 150.0, 8.0, 46.0, 98.0, 111.0, 7.0, 69.0, 114.0, 150.0, - 70.0, 21.0, 150.0, 125.0, 54.0, 19.0, 132.0, 68.0, 62.0, 8.0, 150.0, 101.0, 57.0, 81.0, 150.0, 97.0, - 79.0, 29.0, 109.0, 130.0, 12.0, 63.0, 100.0, 150.0, 17.0, 33.0, 113.0, 150.0, 90.0, 78.0, 150.0, 111.0, - 47.0, 68.0, 150.0, 71.0, 66.0, 103.0, 111.0, 150.0, 4.0, 17.0, 112.0, 94.0, 12.0, 8.0, 119.0, 98.0, - 54.0, 56.0, 120.0, 150.0, 56.0, 29.0, 150.0, 31.0, 42.0, 3.0, 139.0, 92.0, 41.0, 65.0, 150.0, 130.0, - 49.0, 13.0, 143.0, 30.0, 40.0, 60.0, 150.0, 150.0, 23.0, 73.0, 24.0, 115.0, 56.0, 84.0, 107.0, 108.0, - 63.0, 8.0, 142.0, 125.0, 78.0, 37.0, 93.0, 144.0, 40.0, 34.0, 150.0, 46.0, 30.0, 21.0, 150.0, 120.0}, - std::vector{9.062256, 10.883133, 9.8441105, 12.694285, 0.41781136, 8.749107, 14.990341, 6.587644, 1.4206103, - 13.299262, 12.432549, 2.736371, 0.22732796, 6.3361835, 12.268727, 2.1009045, 4.771589, 2.5131326, - 5.610736, 9.3604145, 4.27379, 8.317948, 0.60510135, 6.7446275, 1.0207708, 1.1352817, 1.5785321, - 1.718335, 1.8093798, 0.99247587, 1.3233583, 1.7432803, 1.8534478, 1.2593061, 1.7394226, 1.7686696, - 1.647999, 1.7611449, 1.3119122, 0.03007332, 1.1106564, 0.55669737, 0.2546148, 1.9181818, 0.7134989, - 2.0407224, 1.7211134, 1.8565536, 14.562747, 2.8786168, 0.5927796, 0.2064463, 7.6794515, 8.672126, - 10.139171, 8.002429, 7.002932, 12.6314945, 10.550842, 0.15784842, 0.3194304, 10.752157, 3.709805, - 11.628928, 0.7136225, 14.619964, 15.177284, 2.2824087, 15.381494, 0.16618137, 7.507227, 11.173228, - 0.4923559, 1.8227729, 1.4749299, 1.7833921, 1.2363617, -0.23659119, 1.5737582, 1.779316, 1.9828427, - 1.0482665, 1.4900246, 1.3563544, 1.5341306, 0.7634312, 4.6216766e-05, 1.6161222, 1.7512476, 1.9363779, - 0.9195784, 1.4906164, -0.03244795, 0.681073, 0.6192401, 1.8033613, 14.146055, 3.4043705, 15.292292, - 3.5295358, 11.138999, 9.952057, 5.633434, 12.114562, 9.427372, 12.384038, 9.583308, 8.427233, - 15.293704, 3.288159, 11.64898, 9.350885, 2.0037227, 13.523184, 4.4176426, 6.1057625, 14.400079, - 8.248259, 11.815807, 15.713364, 1.0023532, 1.3203261, 1.7100681, 0.7407832, 1.09448, 1.7188418, - 1.4412547, 1.4862992, 0.74790007, 0.31571656, 0.6398838, 2.0236106, 1.1869069, 1.7265586, 1.2624544, - 0.09934269, 1.3508598, 0.85212964, -0.38968498, 1.7059708, 1.6533034, 1.7400402, 1.8123854, -0.43063712, - 9.062256, 10.883133, 9.8441105, 12.694285, 0.41781136, 8.749107, 14.990341, 6.587644, 1.4206103, - 13.299262, 12.432549, 2.736371, 0.22732796, 6.3361835, 12.268727, 2.1009045, 4.771589, 2.5131326, - 5.610736, 9.3604145, 4.27379, 8.317948, 0.60510135, 6.7446275, 1.0207708, 1.1352817, 1.5785321, - 1.718335, 1.8093798, 0.99247587, 1.3233583, 1.7432803, 1.8534478, 1.2593061, 1.7394226, 1.7686696, - 1.647999, 1.7611449, 1.3119122, 0.03007332, 1.1106564, 0.55669737, 0.2546148, 1.9181818, 0.7134989, - 2.0407224, 1.7211134, 1.8565536, 14.562747, 2.8786168, 0.5927796, 0.2064463, 7.6794515, 8.672126, - 10.139171, 8.002429, 7.002932, 12.6314945, 10.550842, 0.15784842, 0.3194304, 10.752157, 3.709805, - 11.628928, 0.7136225, 14.619964, 15.177284, 2.2824087, 15.381494, 0.16618137, 7.507227, 11.173228, - 0.4923559, 1.8227729, 1.4749299, 1.7833921, 1.2363617, -0.23659119, 1.5737582, 1.779316, 1.9828427, - 1.0482665, 1.4900246, 1.3563544, 1.5341306, 0.7634312, 4.6216766e-05, 1.6161222, 1.7512476, 1.9363779, - 0.9195784, 1.4906164, -0.03244795, 0.681073, 0.6192401, 1.8033613, 14.146055, 3.4043705, 15.292292, - 3.5295358, 11.138999, 9.952057, 5.633434, 12.114562, 9.427372, 12.384038, 9.583308, 8.427233, - 15.293704, 3.288159, 11.64898, 9.350885, 2.0037227, 13.523184, 4.4176426, 6.1057625, 14.400079, - 8.248259, 11.815807, 15.713364, 1.0023532, 1.3203261, 1.7100681, 0.7407832, 1.09448, 1.7188418, - 1.4412547, 1.4862992, 0.74790007, 0.31571656, 0.6398838, 2.0236106, 1.1869069, 1.7265586, 1.2624544, - 0.09934269, 1.3508598, 0.85212964, -0.38968498, 1.7059708, 1.6533034, 1.7400402, 1.8123854, -0.43063712}, - std::vector{0.7719922, 0.35906568, 0.29054508, 0.18124384, 0.5604661, 0.84750974, 0.98948747, 0.009793862, 0.7184191, - 0.5560748, 0.6952493, 0.6732593, 0.3306898, 0.6790913, 0.41128764, 0.34593266, 0.94296855, 0.7348507, - 0.24478768, 0.94024557, 0.05405676, 0.06466125, 0.36244348, 0.07942984, 0.10619422, 0.09412837, 0.9053611, - 0.22870538, 0.9237487, 0.20986171, 0.5067282, 0.29709867, 0.53138554, 0.189101, 0.4786443, 0.88421875, - 0.7719922, 0.35906568, 0.29054508, 0.18124384, 0.5604661, 0.84750974, 0.98948747, 0.009793862, 0.7184191, - 0.5560748, 0.6952493, 0.6732593, 0.3306898, 0.6790913, 0.41128764, 0.34593266, 0.94296855, 0.7348507, - 0.24478768, 0.94024557, 0.05405676, 0.06466125, 0.36244348, 0.07942984, 0.10619422, 0.09412837, 0.9053611, - 0.22870538, 0.9237487, 0.20986171, 0.5067282, 0.29709867, 0.53138554, 0.189101, 0.4786443, 0.88421875}, - std::vector{149, 149, 149, 149, 149, 0, 149, 149, 149, 60.87443542480469, 149, 149, 149, 61.89498901367188, 149, - 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 0, 149, 149, 149, 60.87443542480469, - 149, 149, 149, 61.89498901367188, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149}, - std::vector{0.9894874691963196, 0.9429685473442078, - 0.9402455687522888, 0.9237486720085144, - 0.9053611159324646, 0.8842187523841858, - 0.9894874691963196, 0.9429685473442078, - 0.9402455687522888, 0.9237486720085144, - 0.9053611159324646, 0.8842187523841858}, - std::vector{6, 6}, - "batch_2"), - GPParams(attrs, - 1, - 3, // A - 2, // H - 6, // W - IN_ET, - OUT_RT, - std::vector{200.0f, 200.0f, 4.0f}, - std::vector{0.0f, 1.0f, 2.0f, 3.0f, - 4.0f, 5.0f, 6.0f, 7.0f, - 8.0f, 9.0f, 10.0f, 11.0f, - 12.0f, 13.0f, 14.0f, 15.0f, - 16.0f, 17.0f, 18.0f, 19.0f, - 20.0f, 21.0f, 22.0f, 23.0f, - 24.0f, 25.0f, 26.0f, 27.0f, - 28.0f, 29.0f, 30.0f, 31.0f, - 32.0f, 33.0f, 34.0f, 35.0f, - 36.0f, 37.0f, 38.0f, 39.0f, - 40.0f, 41.0f, 42.0f, 43.0f, - 44.0f, 45.0f, 46.0f, 47.0f, - 48.0f, 49.0f, 50.0f, 51.0f, - 52.0f, 53.0f, 54.0f, 55.0f, - 56.0f, 57.0f, 58.0f, 59.0f, - 60.0f, 61.0f, 62.0f, 63.0f, - 64.0f, 65.0f, 66.0f, 67.0f, - 68.0f, 69.0f, 70.0f, 71.0f, - 72.0f, 73.0f, 74.0f, 75.0f, - 76.0f, 77.0f, 78.0f, 79.0f, - 80.0f, 81.0f, 82.0f, 83.0f, - 84.0f, 85.0f, 86.0f, 87.0f, - 88.0f, 89.0f, 90.0f, 91.0f, - 92.0f, 93.0f, 94.0f, 95.0f, - 96.0f, 97.0f, 98.0f, 99.0f, - 100.0f, 101.0f, 102.0f, 103.0f, - 104.0f, 105.0f, 106.0f, 107.0f, - 108.0f, 109.0f, 110.0f, 111.0f, - 112.0f, 113.0f, 114.0f, 115.0f, - 116.0f, 117.0f, 118.0f, 119.0f, - 120.0f, 121.0f, 122.0f, 123.0f, - 124.0f, 125.0f, 126.0f, 127.0f, - 128.0f, 129.0f, 130.0f, 131.0f, - 132.0f, 133.0f, 134.0f, 135.0f, - 136.0f, 137.0f, 138.0f, 139.0f, - 140.0f, 141.0f, 142.0f, 143.0f}, // anchors H, W, A, 4 - std::vector{0.5337073 ,0.86607957,0.55151343,0.21626699,0.4462629, 0.03985678, - 0.5157072 ,0.9932138 ,0.7565954 ,0.43803605,0.802818 ,0.14834064, - 0.53932905,0.14314 ,0.3817048 ,0.95075196,0.05516243,0.2567484, - 0.25508744,0.77438325,0.43561 ,0.2094628 ,0.8299043 ,0.44982538, - 0.95615596,0.5651084 ,0.11801951,0.05352486,0.9774733 ,0.14439464, - 0.62644225,0.14370479,0.54161614,0.557915 ,0.53102225,0.0840179, - 0.7249888 ,0.9843559 ,0.5490522 ,0.53788143,0.822474 ,0.3278008, - 0.39688024,0.3286012 ,0.5117038 ,0.04743988,0.9408995 ,0.29885054, - 0.81039643,0.85277915,0.06807619,0.86430097,0.36225632,0.16606331, - 0.5401001 ,0.7541649 ,0.11998601,0.5131829 ,0.40606487,0.327888 , - 0.27721855,0.6378373 ,0.22795396,0.4961256 ,0.3215895 ,0.15607187, - 0.14782153,0.8908137 ,0.8835288 ,0.834191 ,0.29907143,0.7983525 , - 0.755875 ,0.30837986,0.0839176 ,0.26624718,0.04371626,0.09472824, - 0.20689541,0.37622106,0.1083321 ,0.1342548 ,0.05815459,0.7676379 , - 0.8105144 ,0.92348766,0.26761323,0.7183306 ,0.8947588 ,0.19020908, - 0.42731014,0.7473663 ,0.85775334,0.9340091 ,0.3278848 ,0.755993 , - 0.05307213,0.39705503,0.21003333,0.5625373 ,0.66188884,0.80521655, - 0.6125863 ,0.44678232,0.97802377,0.0204936 ,0.02686367,0.7390654 , - 0.74631 ,0.58399844,0.5988792 ,0.37413648,0.5946692 ,0.6955776 , - 0.36377597,0.7891322 ,0.40900692,0.99139464,0.50169915,0.41435778, - 0.17142445,0.26761186,0.31591868,0.14249913,0.12919712,0.5418711 , - 0.6523203 ,0.50259084,0.7379765 ,0.01171071,0.94423133,0.00841132, - 0.97486794,0.2921785 ,0.7633071 ,0.88477814,0.03563205,0.50833166, - 0.01354555,0.535081 ,0.41366324,0.0694767 ,0.9944055 ,0.9981207}, // deltas N, A * 4, H, W - std::vector{0.56637216,0.90457034,0.69827306,0.4353543, 0.47985056,0.42658508, - 0.14516132,0.08081771,0.1799732 ,0.9229515 ,0.42420176,0.50857586, - 0.82664067,0.4972319 ,0.3752427 ,0.56731623,0.18241242,0.33252355, - 0.30608943,0.6572437 ,0.69185436,0.88646156,0.36985755,0.5590753 , - 0.5256446 ,0.03342898,0.1344396 ,0.68642473,0.37953874,0.32575172, - 0.21108444,0.5661886 ,0.45378175,0.62126315,0.26799858,0.37272978}, // scores N, A, H, W - std::vector{4.49132, 4.30537, 8.75027, 8.8035, - 0, 1.01395, 4.66909, 5.14337, - 135.501, 137.467, 139.81, 141.726, - 47.2348, 47.8342, 52.5503, 52.3864, - 126.483, 128.3, 131.625, 133.707}, // ref rois - std::vector{0.826641, 0.566372, 0.559075, 0.479851, 0.267999}, // ref scores - std::vector{5}, // ref roiNum - "eval_2") - }; + 1, + 3, // A + 2, // H + 6, // W + IN_ET, + OUT_RT, + std::vector{200.0f, 200.0f, 4.0f}, + std::vector{0.0f, 1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0f, 8.0f, 9.0f, 10.0f, + 11.0f, 12.0f, 13.0f, 14.0f, 15.0f, 16.0f, 17.0f, 18.0f, 19.0f, 20.0f, 21.0f, + 22.0f, 23.0f, 24.0f, 25.0f, 26.0f, 27.0f, 28.0f, 29.0f, 30.0f, 31.0f, 32.0f, + 33.0f, 34.0f, 35.0f, 36.0f, 37.0f, 38.0f, 39.0f, 40.0f, 41.0f, 42.0f, 43.0f, + 44.0f, 45.0f, 46.0f, 47.0f, 48.0f, 49.0f, 50.0f, 51.0f, 52.0f, 53.0f, 54.0f, + 55.0f, 56.0f, 57.0f, 58.0f, 59.0f, 60.0f, 61.0f, 62.0f, 63.0f, 64.0f, 65.0f, + 66.0f, 67.0f, 68.0f, 69.0f, 70.0f, 71.0f, 72.0f, 73.0f, 74.0f, 75.0f, 76.0f, + 77.0f, 78.0f, 79.0f, 80.0f, 81.0f, 82.0f, 83.0f, 84.0f, 85.0f, 86.0f, 87.0f, + 88.0f, 89.0f, 90.0f, 91.0f, 92.0f, 93.0f, 94.0f, 95.0f, 96.0f, 97.0f, 98.0f, + 99.0f, 100.0f, 101.0f, 102.0f, 103.0f, 104.0f, 105.0f, 106.0f, 107.0f, 108.0f, 109.0f, + 110.0f, 111.0f, 112.0f, 113.0f, 114.0f, 115.0f, 116.0f, 117.0f, 118.0f, 119.0f, 120.0f, + 121.0f, 122.0f, 123.0f, 124.0f, 125.0f, 126.0f, 127.0f, 128.0f, 129.0f, 130.0f, 131.0f, + 132.0f, 133.0f, 134.0f, 135.0f, 136.0f, 137.0f, 138.0f, 139.0f, 140.0f, 141.0f, 142.0f, + 143.0f}, // anchors H, W, A, 4 + std::vector{0.5337073, 0.86607957, 0.55151343, 0.21626699, 0.4462629, 0.03985678, 0.5157072, + 0.9932138, 0.7565954, 0.43803605, 0.802818, 0.14834064, 0.53932905, 0.14314, + 0.3817048, 0.95075196, 0.05516243, 0.2567484, 0.25508744, 0.77438325, 0.43561, + 0.2094628, 0.8299043, 0.44982538, 0.95615596, 0.5651084, 0.11801951, 0.05352486, + 0.9774733, 0.14439464, 0.62644225, 0.14370479, 0.54161614, 0.557915, 0.53102225, + 0.0840179, 0.7249888, 0.9843559, 0.5490522, 0.53788143, 0.822474, 0.3278008, + 0.39688024, 0.3286012, 0.5117038, 0.04743988, 0.9408995, 0.29885054, 0.81039643, + 0.85277915, 0.06807619, 0.86430097, 0.36225632, 0.16606331, 0.5401001, 0.7541649, + 0.11998601, 0.5131829, 0.40606487, 0.327888, 0.27721855, 0.6378373, 0.22795396, + 0.4961256, 0.3215895, 0.15607187, 0.14782153, 0.8908137, 0.8835288, 0.834191, + 0.29907143, 0.7983525, 0.755875, 0.30837986, 0.0839176, 0.26624718, 0.04371626, + 0.09472824, 0.20689541, 0.37622106, 0.1083321, 0.1342548, 0.05815459, 0.7676379, + 0.8105144, 0.92348766, 0.26761323, 0.7183306, 0.8947588, 0.19020908, 0.42731014, + 0.7473663, 0.85775334, 0.9340091, 0.3278848, 0.755993, 0.05307213, 0.39705503, + 0.21003333, 0.5625373, 0.66188884, 0.80521655, 0.6125863, 0.44678232, 0.97802377, + 0.0204936, 0.02686367, 0.7390654, 0.74631, 0.58399844, 0.5988792, 0.37413648, + 0.5946692, 0.6955776, 0.36377597, 0.7891322, 0.40900692, 0.99139464, 0.50169915, + 0.41435778, 0.17142445, 0.26761186, 0.31591868, 0.14249913, 0.12919712, 0.5418711, + 0.6523203, 0.50259084, 0.7379765, 0.01171071, 0.94423133, 0.00841132, 0.97486794, + 0.2921785, 0.7633071, 0.88477814, 0.03563205, 0.50833166, 0.01354555, 0.535081, + 0.41366324, 0.0694767, 0.9944055, 0.9981207}, // deltas N, A * 4, H, W + std::vector{0.56637216, 0.90457034, 0.69827306, 0.4353543, 0.47985056, 0.42658508, 0.14516132, + 0.08081771, 0.1799732, 0.9229515, 0.42420176, 0.50857586, 0.82664067, 0.4972319, + 0.3752427, 0.56731623, 0.18241242, 0.33252355, 0.30608943, 0.6572437, 0.69185436, + 0.88646156, 0.36985755, 0.5590753, 0.5256446, 0.03342898, 0.1344396, 0.68642473, + 0.37953874, 0.32575172, 0.21108444, 0.5661886, 0.45378175, 0.62126315, 0.26799858, + 0.37272978}, // scores N, A, H, W + std::vector{4.49132, 4.30537, 8.75027, 8.8035, 0, 1.01395, 4.66909, + 5.14337, 135.501, 137.467, 139.81, 141.726, 47.2348, 47.8342, + 52.5503, 52.3864, 126.483, 128.3, 131.625, 133.707}, // ref rois + std::vector{0.826641, 0.566372, 0.559075, 0.479851, 0.267999}, // ref scores + std::vector{5}, // ref roiNum + "eval_2")}; return generateProposalParams; } std::vector generateGPCombinedParams() { - const std::vector> GPTypeParams { + const std::vector> GPTypeParams{ generateGPFloatParams(), generateGPFloatParams(), generateGPFloatParams(), generateGPFloatParams(), - }; + }; std::vector combinedParams; for (const auto& params : GPTypeParams) { @@ -302,6 +317,8 @@ std::vector generateGPCombinedParams() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_GenerateProposals_With_Hardcoded_Refs, ReferenceGPLayerTest, - testing::ValuesIn(generateGPCombinedParams()), ReferenceGPLayerTest::getTestCaseName); -} // namespace +INSTANTIATE_TEST_SUITE_P(smoke_GenerateProposals_With_Hardcoded_Refs, + ReferenceGPLayerTest, + testing::ValuesIn(generateGPCombinedParams()), + ReferenceGPLayerTest::getTestCaseName); +} // namespace diff --git a/src/plugins/template/tests/functional/op_reference/greater.cpp b/src/plugins/template/tests/functional/op_reference/greater.cpp index 7070005244a..e7499293219 100644 --- a/src/plugins/template/tests/functional/op_reference/greater.cpp +++ b/src/plugins/template/tests/functional/op_reference/greater.cpp @@ -2,9 +2,10 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/greater.hpp" + #include -#include "openvino/op/greater.hpp" #include "comparison.hpp" using namespace ov; @@ -19,43 +20,43 @@ TEST_P(ReferenceComparisonLayerTest, GreaterCompareWithHardcodedRefs) { template std::vector generateComparisonParams(const element::Type& type) { using T = typename element_type_traits::value_type; - std::vector compParams { + std::vector compParams{ // 1D // 2D // 3D // 4D - Builder {} + Builder{} .compType(ComparisonTypes::GREATER) - .input1({{2, 2}, type, std::vector {0, 12, 23, 0}}) - .input2({{2, 2}, type, std::vector {0, 12, 23, 0}}) - .expected({{2, 2}, element::boolean, std::vector {0, 0, 0, 0}}), - Builder {} + .input1({{2, 2}, type, std::vector{0, 12, 23, 0}}) + .input2({{2, 2}, type, std::vector{0, 12, 23, 0}}) + .expected({{2, 2}, element::boolean, std::vector{0, 0, 0, 0}}), + Builder{} .compType(ComparisonTypes::GREATER) - .input1({{2, 3}, type, std::vector {0, 6, 45, 1, 21, 21}}) - .input2({{2, 3}, type, std::vector {1, 18, 23, 1, 19, 21}}) - .expected({{2, 3}, element::boolean, std::vector {0, 0, 1, 0, 1, 0}}), - Builder {} + .input1({{2, 3}, type, std::vector{0, 6, 45, 1, 21, 21}}) + .input2({{2, 3}, type, std::vector{1, 18, 23, 1, 19, 21}}) + .expected({{2, 3}, element::boolean, std::vector{0, 0, 1, 0, 1, 0}}), + Builder{} .compType(ComparisonTypes::GREATER) - .input1({{1}, type, std::vector {53}}) - .input2({{1}, type, std::vector {53}}) - .expected({{1}, element::boolean, std::vector {0}}), - Builder {} + .input1({{1}, type, std::vector{53}}) + .input2({{1}, type, std::vector{53}}) + .expected({{1}, element::boolean, std::vector{0}}), + Builder{} .compType(ComparisonTypes::GREATER) - .input1({{2, 4}, type, std::vector {0, 12, 23, 0, 1, 5, 12, 8}}) - .input2({{2, 4}, type, std::vector {0, 12, 23, 0, 10, 5, 11, 8}}) - .expected({{2, 4}, element::boolean, std::vector {0, 0, 0, 0, 0, 0, 1, 0}}), - Builder {} + .input1({{2, 4}, type, std::vector{0, 12, 23, 0, 1, 5, 12, 8}}) + .input2({{2, 4}, type, std::vector{0, 12, 23, 0, 10, 5, 11, 8}}) + .expected({{2, 4}, element::boolean, std::vector{0, 0, 0, 0, 0, 0, 1, 0}}), + Builder{} .compType(ComparisonTypes::GREATER) - .input1({{3, 1, 2}, type, std::vector {2, 1, 4, 1, 3, 1}}) - .input2({{1, 2, 1}, type, std::vector {1, 1}}) - .expected({{3, 2, 2}, element::boolean, std::vector {1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0}}), - Builder {} + .input1({{3, 1, 2}, type, std::vector{2, 1, 4, 1, 3, 1}}) + .input2({{1, 2, 1}, type, std::vector{1, 1}}) + .expected({{3, 2, 2}, element::boolean, std::vector{1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0}}), + Builder{} .compType(ComparisonTypes::GREATER) - .input1({{2, 1, 2, 1}, type, std::vector {2, 1, 4, 1}}) - .input2({{1, 2, 1}, type, std::vector {1, 1}}) - .expected({{2, 1, 2, 1}, element::boolean, std::vector {1, 0, 1, 0}})}; + .input1({{2, 1, 2, 1}, type, std::vector{2, 1, 4, 1}}) + .input2({{1, 2, 1}, type, std::vector{1, 1}}) + .expected({{2, 1, 2, 1}, element::boolean, std::vector{1, 0, 1, 0}})}; return compParams; } std::vector generateComparisonCombinedParams() { - const std::vector> compTypeParams { + const std::vector> compTypeParams{ generateComparisonParams(element::f32), generateComparisonParams(element::f16), generateComparisonParams(element::i32), @@ -71,8 +72,10 @@ std::vector generateComparisonCombinedParams() { return combinedParams; } -} // namespace -INSTANTIATE_TEST_SUITE_P(smoke_Comparison_With_Hardcoded_Refs, ReferenceComparisonLayerTest, ::testing::ValuesIn(generateComparisonCombinedParams()), +} // namespace +INSTANTIATE_TEST_SUITE_P(smoke_Comparison_With_Hardcoded_Refs, + ReferenceComparisonLayerTest, + ::testing::ValuesIn(generateComparisonCombinedParams()), ReferenceComparisonLayerTest::getTestCaseName); -} // namespace ComparisonOpsRefTestDefinitions -} // namespace reference_tests +} // namespace ComparisonOpsRefTestDefinitions +} // namespace reference_tests diff --git a/src/plugins/template/tests/functional/op_reference/greater_equal.cpp b/src/plugins/template/tests/functional/op_reference/greater_equal.cpp index c8f18a3b21c..cbf8781b657 100644 --- a/src/plugins/template/tests/functional/op_reference/greater_equal.cpp +++ b/src/plugins/template/tests/functional/op_reference/greater_equal.cpp @@ -4,8 +4,8 @@ #include -#include "openvino/op/greater_eq.hpp" #include "comparison.hpp" +#include "openvino/op/greater_eq.hpp" using namespace ov; @@ -16,43 +16,43 @@ namespace { template std::vector generateComparisonParams(const element::Type& type) { using T = typename element_type_traits::value_type; - std::vector compParams { + std::vector compParams{ // 1D // 2D // 3D // 4D - Builder {} + Builder{} .compType(ComparisonTypes::GREATER_EQUAL) - .input1({{2, 2}, type, std::vector {0, 12, 23, 0}}) - .input2({{2, 2}, type, std::vector {0, 12, 23, 0}}) - .expected({{2, 2}, element::boolean, std::vector {1, 1, 1, 1}}), - Builder {} + .input1({{2, 2}, type, std::vector{0, 12, 23, 0}}) + .input2({{2, 2}, type, std::vector{0, 12, 23, 0}}) + .expected({{2, 2}, element::boolean, std::vector{1, 1, 1, 1}}), + Builder{} .compType(ComparisonTypes::GREATER_EQUAL) - .input1({{2, 3}, type, std::vector {0, 6, 45, 1, 21, 21}}) - .input2({{2, 3}, type, std::vector {1, 18, 23, 1, 19, 21}}) - .expected({{2, 3}, element::boolean, std::vector {0, 0, 1, 1, 1, 1}}), - Builder {} + .input1({{2, 3}, type, std::vector{0, 6, 45, 1, 21, 21}}) + .input2({{2, 3}, type, std::vector{1, 18, 23, 1, 19, 21}}) + .expected({{2, 3}, element::boolean, std::vector{0, 0, 1, 1, 1, 1}}), + Builder{} .compType(ComparisonTypes::GREATER_EQUAL) - .input1({{1}, type, std::vector {53}}) - .input2({{1}, type, std::vector {53}}) - .expected({{1}, element::boolean, std::vector {1}}), - Builder {} + .input1({{1}, type, std::vector{53}}) + .input2({{1}, type, std::vector{53}}) + .expected({{1}, element::boolean, std::vector{1}}), + Builder{} .compType(ComparisonTypes::GREATER_EQUAL) - .input1({{2, 4}, type, std::vector {0, 12, 23, 0, 1, 5, 12, 8}}) - .input2({{2, 4}, type, std::vector {0, 12, 23, 0, 10, 5, 11, 8}}) - .expected({{2, 4}, element::boolean, std::vector {1, 1, 1, 1, 0, 1, 1, 1}}), - Builder {} + .input1({{2, 4}, type, std::vector{0, 12, 23, 0, 1, 5, 12, 8}}) + .input2({{2, 4}, type, std::vector{0, 12, 23, 0, 10, 5, 11, 8}}) + .expected({{2, 4}, element::boolean, std::vector{1, 1, 1, 1, 0, 1, 1, 1}}), + Builder{} .compType(ComparisonTypes::GREATER_EQUAL) - .input1({{3, 1, 2}, type, std::vector {2, 1, 4, 1, 3, 1}}) - .input2({{1, 2, 1}, type, std::vector {1, 1}}) - .expected({{3, 2, 2}, element::boolean, std::vector {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}}), - Builder {} + .input1({{3, 1, 2}, type, std::vector{2, 1, 4, 1, 3, 1}}) + .input2({{1, 2, 1}, type, std::vector{1, 1}}) + .expected({{3, 2, 2}, element::boolean, std::vector{1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}}), + Builder{} .compType(ComparisonTypes::GREATER_EQUAL) - .input1({{2, 1, 2, 1}, type, std::vector {2, 1, 4, 1}}) - .input2({{1, 2, 1}, type, std::vector {1, 1}}) - .expected({{2, 1, 2, 1}, element::boolean, std::vector {1, 1, 1, 1}})}; + .input1({{2, 1, 2, 1}, type, std::vector{2, 1, 4, 1}}) + .input2({{1, 2, 1}, type, std::vector{1, 1}}) + .expected({{2, 1, 2, 1}, element::boolean, std::vector{1, 1, 1, 1}})}; return compParams; } std::vector generateComparisonCombinedParams() { - const std::vector> compTypeParams { + const std::vector> compTypeParams{ generateComparisonParams(element::f32), generateComparisonParams(element::f16), generateComparisonParams(element::i64), @@ -68,8 +68,10 @@ std::vector generateComparisonCombinedParams() { return combinedParams; } -} // namespace -INSTANTIATE_TEST_SUITE_P(smoke_Comparison_With_Hardcoded_Refs, ReferenceComparisonLayerTest, ::testing::ValuesIn(generateComparisonCombinedParams()), +} // namespace +INSTANTIATE_TEST_SUITE_P(smoke_Comparison_With_Hardcoded_Refs, + ReferenceComparisonLayerTest, + ::testing::ValuesIn(generateComparisonCombinedParams()), ReferenceComparisonLayerTest::getTestCaseName); -} // namespace ComparisonOpsRefTestDefinitions -} // namespace reference_tests +} // namespace ComparisonOpsRefTestDefinitions +} // namespace reference_tests diff --git a/src/plugins/template/tests/functional/op_reference/grn.cpp b/src/plugins/template/tests/functional/op_reference/grn.cpp index 4322da7cd3c..c936f4d222a 100644 --- a/src/plugins/template/tests/functional/op_reference/grn.cpp +++ b/src/plugins/template/tests/functional/op_reference/grn.cpp @@ -2,9 +2,10 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/grn.hpp" + #include -#include "openvino/op/grn.hpp" #include "base_reference_test.hpp" using namespace reference_tests; @@ -13,9 +14,17 @@ using namespace ov; namespace { struct GrnParams { template - GrnParams(const float bias, const PartialShape& shape, const element::Type& iType, const std::vector& iValues, + GrnParams(const float bias, + const PartialShape& shape, + const element::Type& iType, + const std::vector& iValues, const std::vector& oValues) - : bias(bias), pshape(shape), inType(iType), outType(iType), inputData(CreateTensor(iType, iValues)), refData(CreateTensor(iType, oValues)) {} + : bias(bias), + pshape(shape), + inType(iType), + outType(iType), + inputData(CreateTensor(iType, iValues)), + refData(CreateTensor(iType, oValues)) {} float bias; PartialShape pshape; element::Type inType; @@ -43,10 +52,12 @@ public: } private: - static std::shared_ptr CreateFunction(float bias, const PartialShape& input_shape, const element::Type& input_type) { + static std::shared_ptr CreateFunction(float bias, + const PartialShape& input_shape, + const element::Type& input_type) { const auto in = std::make_shared(input_type, input_shape); const auto grn = std::make_shared(in, bias); - return std::make_shared(NodeVector {grn}, ParameterVector {in}); + return std::make_shared(NodeVector{grn}, ParameterVector{in}); } }; @@ -57,50 +68,100 @@ TEST_P(ReferenceGrnLayerTest, CompareWithHardcodedRefs) { template std::vector generateGrnParams(const element::Type& type) { using T = typename element_type_traits::value_type; - std::vector grnParams { + std::vector grnParams{ // bias 1e-6 // 2D // 3D // 4D - GrnParams(1e-6f, PartialShape {3, 4}, type, std::vector {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}, - std::vector {0.182574, 0.365148, 0.547723, 0.730297, 0.379049, 0.454859, 0.530669, 0.606478, 0.426162, 0.473514, 0.520865, 0.568217}), - GrnParams(1e-6f, PartialShape {2, 3, 4}, type, - std::vector {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24}, - std::vector {0.0966737, 0.169031, 0.224231, 0.267261, 0.483368, 0.507093, 0.523205, 0.534522, 0.870063, 0.845154, 0.822179, 0.801784, - 0.433574, 0.441836, 0.449215, 0.455842, 0.566982, 0.568075, 0.569005, 0.569803, 0.700389, 0.694314, 0.688796, 0.683763}), - GrnParams(1e-6f, PartialShape {1, 2, 3, 4}, type, - std::vector {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24}, - std::vector {0.0766965, 0.141421, 0.196116, 0.242536, 0.282166, 0.316228, 0.345705, 0.371391, 0.393919, 0.413803, 0.431455, 0.447214, - 0.997055, 0.989949, 0.980581, 0.970143, 0.959365, 0.948683, 0.938343, 0.928477, 0.919145, 0.910366, 0.902134, 0.894427}), - GrnParams(1e-6f, PartialShape {2, 2, 3, 4}, type, - std::vector {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}, - std::vector {0.0766965, 0.141421, 0.196116, 0.242536, 0.282166, 0.316228, 0.345705, 0.371391, 0.393919, 0.413803, 0.431455, 0.447214, - 0.997055, 0.989949, 0.980581, 0.970143, 0.959365, 0.948683, 0.938343, 0.928477, 0.919145, 0.910366, 0.902134, 0.894427, - 0.559857, 0.564684, 0.56921, 0.573462, 0.577465, 0.581238, 0.584802, 0.588172, 0.591364, 0.594391, 0.597266, 0.6, - 0.828589, 0.825307, 0.822192, 0.819232, 0.816416, 0.813733, 0.811176, 0.808736, 0.806405, 0.804176, 0.802043, 0.8}), + GrnParams(1e-6f, + PartialShape{3, 4}, + type, + std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}, + std::vector{0.182574, + 0.365148, + 0.547723, + 0.730297, + 0.379049, + 0.454859, + 0.530669, + 0.606478, + 0.426162, + 0.473514, + 0.520865, + 0.568217}), + GrnParams(1e-6f, + PartialShape{2, 3, 4}, + type, + std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24}, + std::vector{0.0966737, 0.169031, 0.224231, 0.267261, 0.483368, 0.507093, 0.523205, 0.534522, + 0.870063, 0.845154, 0.822179, 0.801784, 0.433574, 0.441836, 0.449215, 0.455842, + 0.566982, 0.568075, 0.569005, 0.569803, 0.700389, 0.694314, 0.688796, 0.683763}), + GrnParams(1e-6f, + PartialShape{1, 2, 3, 4}, + type, + std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24}, + std::vector{0.0766965, 0.141421, 0.196116, 0.242536, 0.282166, 0.316228, 0.345705, 0.371391, + 0.393919, 0.413803, 0.431455, 0.447214, 0.997055, 0.989949, 0.980581, 0.970143, + 0.959365, 0.948683, 0.938343, 0.928477, 0.919145, 0.910366, 0.902134, 0.894427}), + GrnParams(1e-6f, + PartialShape{2, 2, 3, 4}, + type, + std::vector{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}, + std::vector{0.0766965, 0.141421, 0.196116, 0.242536, 0.282166, 0.316228, 0.345705, 0.371391, + 0.393919, 0.413803, 0.431455, 0.447214, 0.997055, 0.989949, 0.980581, 0.970143, + 0.959365, 0.948683, 0.938343, 0.928477, 0.919145, 0.910366, 0.902134, 0.894427, + 0.559857, 0.564684, 0.56921, 0.573462, 0.577465, 0.581238, 0.584802, 0.588172, + 0.591364, 0.594391, 0.597266, 0.6, 0.828589, 0.825307, 0.822192, 0.819232, + 0.816416, 0.813733, 0.811176, 0.808736, 0.806405, 0.804176, 0.802043, 0.8}), // bias 100.25 // 2D // 3D // 4D - GrnParams(100.25f, PartialShape {3, 4}, type, std::vector {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}, - std::vector {0.0876216, 0.175243, 0.262865, 0.350486, 0.301923, 0.362308, 0.422693, 0.483077, 0.385076, 0.427863, 0.470649, 0.513435}), - GrnParams(100.25f, PartialShape {2, 3, 4}, type, - std::vector {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24}, - std::vector {0.0694629, 0.129032, 0.179525, 0.222137, 0.347314, 0.387097, 0.418891, 0.444273, 0.625166, 0.645161, 0.658258, 0.66641, - 0.41125, 0.421303, 0.430287, 0.438356, 0.537789, 0.541675, 0.54503, 0.547945, 0.664327, 0.662047, 0.659774, 0.657534}), - GrnParams(100.25f, PartialShape {1, 2, 3, 4}, type, - std::vector {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24}, - std::vector {0.0608299, 0.115422, 0.164091, 0.207321, 0.245662, 0.279675, 0.309889, 0.336786, 0.360795, 0.38229, 0.401596, 0.418994, - 0.790789, 0.807954, 0.820457, 0.829283, 0.835252, 0.839026, 0.841128, 0.841965, 0.841854, 0.841037, 0.839701, 0.837989f}), - GrnParams(100.25f, PartialShape {2, 2, 3, 4}, type, - std::vector {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}, - std::vector {0.0608299, 0.115422, 0.164091, 0.207321, 0.245662, 0.279675, 0.309889, 0.336786, 0.360795, 0.38229, 0.401596, 0.418994, - 0.790789, 0.807954, 0.820457, 0.829283, 0.835252, 0.839026, 0.841128, 0.841965, 0.841854, 0.841037, 0.839701, 0.837989, - 0.546293, 0.551788, 0.556938, 0.561772, 0.566319, 0.570601, 0.574641, 0.578458, 0.582069, 0.585489, 0.588734, 0.591816, - 0.808514, 0.80646, 0.804466, 0.802532, 0.800658, 0.798842, 0.797083, 0.795379, 0.79373, 0.792133, 0.790586, 0.789088})}; + GrnParams(100.25f, + PartialShape{3, 4}, + type, + std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}, + std::vector{0.0876216, + 0.175243, + 0.262865, + 0.350486, + 0.301923, + 0.362308, + 0.422693, + 0.483077, + 0.385076, + 0.427863, + 0.470649, + 0.513435}), + GrnParams(100.25f, + PartialShape{2, 3, 4}, + type, + std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24}, + std::vector{0.0694629, 0.129032, 0.179525, 0.222137, 0.347314, 0.387097, 0.418891, 0.444273, + 0.625166, 0.645161, 0.658258, 0.66641, 0.41125, 0.421303, 0.430287, 0.438356, + 0.537789, 0.541675, 0.54503, 0.547945, 0.664327, 0.662047, 0.659774, 0.657534}), + GrnParams(100.25f, + PartialShape{1, 2, 3, 4}, + type, + std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24}, + std::vector{0.0608299, 0.115422, 0.164091, 0.207321, 0.245662, 0.279675, 0.309889, 0.336786, + 0.360795, 0.38229, 0.401596, 0.418994, 0.790789, 0.807954, 0.820457, 0.829283, + 0.835252, 0.839026, 0.841128, 0.841965, 0.841854, 0.841037, 0.839701, 0.837989f}), + GrnParams(100.25f, + PartialShape{2, 2, 3, 4}, + type, + std::vector{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}, + std::vector{0.0608299, 0.115422, 0.164091, 0.207321, 0.245662, 0.279675, 0.309889, 0.336786, + 0.360795, 0.38229, 0.401596, 0.418994, 0.790789, 0.807954, 0.820457, 0.829283, + 0.835252, 0.839026, 0.841128, 0.841965, 0.841854, 0.841037, 0.839701, 0.837989, + 0.546293, 0.551788, 0.556938, 0.561772, 0.566319, 0.570601, 0.574641, 0.578458, + 0.582069, 0.585489, 0.588734, 0.591816, 0.808514, 0.80646, 0.804466, 0.802532, + 0.800658, 0.798842, 0.797083, 0.795379, 0.79373, 0.792133, 0.790586, 0.789088})}; return grnParams; } std::vector generateGrnCombinedParams() { - const std::vector> grnTypeParams {generateGrnParams(element::bf16), - generateGrnParams(element::f16), - generateGrnParams(element::f32)}; + const std::vector> grnTypeParams{generateGrnParams(element::bf16), + generateGrnParams(element::f16), + generateGrnParams(element::f32)}; std::vector combinedParams; std::for_each(grnTypeParams.begin(), grnTypeParams.end(), [&](std::vector params) { combinedParams.insert(combinedParams.end(), params.begin(), params.end()); @@ -108,6 +169,8 @@ std::vector generateGrnCombinedParams() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_GRN_With_Hardcoded_Refs, ReferenceGrnLayerTest, ::testing::ValuesIn(generateGrnCombinedParams()), +INSTANTIATE_TEST_SUITE_P(smoke_GRN_With_Hardcoded_Refs, + ReferenceGrnLayerTest, + ::testing::ValuesIn(generateGrnCombinedParams()), ReferenceGrnLayerTest::getTestCaseName); } // namespace diff --git a/src/plugins/template/tests/functional/op_reference/group_convolution.cpp b/src/plugins/template/tests/functional/op_reference/group_convolution.cpp index b49258f8e5a..45c50624338 100644 --- a/src/plugins/template/tests/functional/op_reference/group_convolution.cpp +++ b/src/plugins/template/tests/functional/op_reference/group_convolution.cpp @@ -4,8 +4,8 @@ #include -#include "openvino/op/group_conv.hpp" #include "base_reference_test.hpp" +#include "openvino/op/group_conv.hpp" using namespace reference_tests; using namespace ov; @@ -13,10 +13,17 @@ using namespace ov; namespace { struct GroupConvolutionParams { template - GroupConvolutionParams(const PartialShape& inputShape, const PartialShape& filterShape, const PartialShape& outputShape, - const element::Type& iType, - const std::vector& iValues, const std::vector& filterValues, const std::vector& oValues, - const Strides& strides, const CoordinateDiff& padBegin, const CoordinateDiff& padEnd, const Strides& dialations) + GroupConvolutionParams(const PartialShape& inputShape, + const PartialShape& filterShape, + const PartialShape& outputShape, + const element::Type& iType, + const std::vector& iValues, + const std::vector& filterValues, + const std::vector& oValues, + const Strides& strides, + const CoordinateDiff& padBegin, + const CoordinateDiff& padEnd, + const Strides& dialations) : inputShape(inputShape), filterShape(filterShape), outputShape(outputShape), @@ -46,7 +53,8 @@ struct GroupConvolutionParams { ov::Strides dialations; }; -class ReferenceGroupConvolutionLayerTest : public testing::TestWithParam, public CommonReferenceTest { +class ReferenceGroupConvolutionLayerTest : public testing::TestWithParam, + public CommonReferenceTest { public: void SetUp() override { auto params = GetParam(); @@ -76,13 +84,13 @@ private: const auto in = std::make_shared(params.inType, params.inputShape); const auto filter = std::make_shared(params.inType, params.filterShape); const auto GroupConvolution = std::make_shared(in, - filter, - params.strides, - params.padBegin, - params.padEnd, - params.dialations, - auto_pad); - return std::make_shared(NodeVector {GroupConvolution}, ParameterVector {in, filter}); + filter, + params.strides, + params.padBegin, + params.padEnd, + params.dialations, + auto_pad); + return std::make_shared(NodeVector{GroupConvolution}, ParameterVector{in, filter}); } }; @@ -94,74 +102,77 @@ template std::vector generateGroupConvolutionParams() { using T = typename element_type_traits::value_type; - std::vector groupConvolutionParams { -// --------------------- 1D GroupConvolution ------------------------------------------ - GroupConvolutionParams(PartialShape {1, 1, 6}, - PartialShape {1, 1, 1, 3}, - PartialShape {1, 1, 4}, - IN_ET, - std::vector{1, 3, 3, 0, 1, 2}, - std::vector{2, 0, 1}, - std::vector{5, 6, 7, 2}, - {1}, - {0}, - {0}, - {1}), - GroupConvolutionParams(PartialShape {1, 2, 6}, - PartialShape {2, 1, 1, 3}, - PartialShape {1, 2, 4}, - IN_ET, - std::vector{1, 3, 3, 0, 1, 2, - 1, 3, 3, 0, 1, 2}, - std::vector{1, 0, 3, - 3, 0, 1}, - std::vector{10, 3, 6, 6, - 6, 9, 10, 2}, - {1}, - {0}, - {0}, - {1}), - GroupConvolutionParams(PartialShape {1, 2, 6}, - PartialShape {2, 2, 1, 3}, - PartialShape {1, 4, 4}, - IN_ET, - std::vector{1, 3, 3, 0, 1, 2, - -1, -3, -3, 0, 1, 2}, - std::vector{1, 0, 3, - 3, 0, 1, - -3, 0, 1, - 3, 2, -1}, - std::vector{ - 10, 3, 6, 6, - 6, 9, 10, 2, - 0, 9, 10, 2, - -6, -15, -10, 0}, - {1}, - {0}, - {0}, - {1}), - GroupConvolutionParams(PartialShape {2, 2, 6}, - PartialShape {2, 1, 1, 3}, - PartialShape {2, 2, 4}, - IN_ET, - std::vector{ - // -- batch 1 -- - 1, 3, 3, 0, 1, 2, - 1, 3, 3, 0, 1, 2, - // -- batch 2 -- - 1, 3, 3, 0, 1, 2, - 1, 3, 3, 0, 1, 2}, - std::vector{1, 0, 3, - 3, 0, 1}, - std::vector{ - 10, 3, 6, 6, - 6, 9, 10, 2, - 10, 3, 6, 6, - 6, 9, 10, 2}, - {1}, - {0}, - {0}, - {1}), + std::vector groupConvolutionParams{ + // --------------------- 1D GroupConvolution ------------------------------------------ + GroupConvolutionParams(PartialShape{1, 1, 6}, + PartialShape{1, 1, 1, 3}, + PartialShape{1, 1, 4}, + IN_ET, + std::vector{1, 3, 3, 0, 1, 2}, + std::vector{2, 0, 1}, + std::vector{5, 6, 7, 2}, + {1}, + {0}, + {0}, + {1}), + GroupConvolutionParams(PartialShape{1, 2, 6}, + PartialShape{2, 1, 1, 3}, + PartialShape{1, 2, 4}, + IN_ET, + std::vector{1, 3, 3, 0, 1, 2, 1, 3, 3, 0, 1, 2}, + std::vector{1, 0, 3, 3, 0, 1}, + std::vector{10, 3, 6, 6, 6, 9, 10, 2}, + {1}, + {0}, + {0}, + {1}), + GroupConvolutionParams(PartialShape{1, 2, 6}, + PartialShape{2, 2, 1, 3}, + PartialShape{1, 4, 4}, + IN_ET, + std::vector{1, 3, 3, 0, 1, 2, -1, -3, -3, 0, 1, 2}, + std::vector{1, 0, 3, 3, 0, 1, -3, 0, 1, 3, 2, -1}, + std::vector{10, 3, 6, 6, 6, 9, 10, 2, 0, 9, 10, 2, -6, -15, -10, 0}, + {1}, + {0}, + {0}, + {1}), + GroupConvolutionParams(PartialShape{2, 2, 6}, + PartialShape{2, 1, 1, 3}, + PartialShape{2, 2, 4}, + IN_ET, + std::vector{// -- batch 1 -- + 1, + 3, + 3, + 0, + 1, + 2, + 1, + 3, + 3, + 0, + 1, + 2, + // -- batch 2 -- + 1, + 3, + 3, + 0, + 1, + 2, + 1, + 3, + 3, + 0, + 1, + 2}, + std::vector{1, 0, 3, 3, 0, 1}, + std::vector{10, 3, 6, 6, 6, 9, 10, 2, 10, 3, 6, 6, 6, 9, 10, 2}, + {1}, + {0}, + {0}, + {1}), }; return groupConvolutionParams; } @@ -170,61 +181,72 @@ template std::vector generateGroupConvolutionUintParams() { using T = typename element_type_traits::value_type; - std::vector groupConvolutionParams { -// --------------------- 1D GroupConvolution ------------------------------------------ - GroupConvolutionParams(PartialShape {1, 1, 6}, - PartialShape {1, 1, 1, 3}, - PartialShape {1, 1, 4}, - IN_ET, - std::vector{1, 3, 3, 0, 1, 2}, - std::vector{2, 0, 1}, - std::vector{5, 6, 7, 2}, - {1}, - {0}, - {0}, - {1}), - GroupConvolutionParams(PartialShape {1, 2, 6}, - PartialShape {2, 1, 1, 3}, - PartialShape {1, 2, 4}, - IN_ET, - std::vector{1, 3, 3, 0, 1, 2, - 1, 3, 3, 0, 1, 2}, - std::vector{1, 0, 3, - 3, 0, 1}, - std::vector{10, 3, 6, 6, - 6, 9, 10, 2}, - {1}, - {0}, - {0}, - {1}), - GroupConvolutionParams(PartialShape {2, 2, 6}, - PartialShape {2, 1, 1, 3}, - PartialShape {2, 2, 4}, - IN_ET, - std::vector{ - // -- batch 1 -- - 1, 3, 3, 0, 1, 2, - 1, 3, 3, 0, 1, 2, - // -- batch 2 -- - 1, 3, 3, 0, 1, 2, - 1, 3, 3, 0, 1, 2}, - std::vector{1, 0, 3, - 3, 0, 1}, - std::vector{ - 10, 3, 6, 6, - 6, 9, 10, 2, - 10, 3, 6, 6, - 6, 9, 10, 2}, - {1}, - {0}, - {0}, - {1}), + std::vector groupConvolutionParams{ + // --------------------- 1D GroupConvolution ------------------------------------------ + GroupConvolutionParams(PartialShape{1, 1, 6}, + PartialShape{1, 1, 1, 3}, + PartialShape{1, 1, 4}, + IN_ET, + std::vector{1, 3, 3, 0, 1, 2}, + std::vector{2, 0, 1}, + std::vector{5, 6, 7, 2}, + {1}, + {0}, + {0}, + {1}), + GroupConvolutionParams(PartialShape{1, 2, 6}, + PartialShape{2, 1, 1, 3}, + PartialShape{1, 2, 4}, + IN_ET, + std::vector{1, 3, 3, 0, 1, 2, 1, 3, 3, 0, 1, 2}, + std::vector{1, 0, 3, 3, 0, 1}, + std::vector{10, 3, 6, 6, 6, 9, 10, 2}, + {1}, + {0}, + {0}, + {1}), + GroupConvolutionParams(PartialShape{2, 2, 6}, + PartialShape{2, 1, 1, 3}, + PartialShape{2, 2, 4}, + IN_ET, + std::vector{// -- batch 1 -- + 1, + 3, + 3, + 0, + 1, + 2, + 1, + 3, + 3, + 0, + 1, + 2, + // -- batch 2 -- + 1, + 3, + 3, + 0, + 1, + 2, + 1, + 3, + 3, + 0, + 1, + 2}, + std::vector{1, 0, 3, 3, 0, 1}, + std::vector{10, 3, 6, 6, 6, 9, 10, 2, 10, 3, 6, 6, 6, 9, 10, 2}, + {1}, + {0}, + {0}, + {1}), }; return groupConvolutionParams; } std::vector generateGroupConvolutionCombinedParams() { - const std::vector> groupConvolutionTypeParams { + const std::vector> groupConvolutionTypeParams{ generateGroupConvolutionParams(), generateGroupConvolutionParams(), generateGroupConvolutionParams(), @@ -236,8 +258,7 @@ std::vector generateGroupConvolutionCombinedParams() { generateGroupConvolutionUintParams(), generateGroupConvolutionUintParams(), generateGroupConvolutionUintParams(), - generateGroupConvolutionUintParams() - }; + generateGroupConvolutionUintParams()}; std::vector combinedParams; for (const auto& params : groupConvolutionTypeParams) { @@ -246,7 +267,9 @@ std::vector generateGroupConvolutionCombinedParams() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_GroupConvolution_With_Hardcoded_Refs, ReferenceGroupConvolutionLayerTest, - testing::ValuesIn(generateGroupConvolutionCombinedParams()), ReferenceGroupConvolutionLayerTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_GroupConvolution_With_Hardcoded_Refs, + ReferenceGroupConvolutionLayerTest, + testing::ValuesIn(generateGroupConvolutionCombinedParams()), + ReferenceGroupConvolutionLayerTest::getTestCaseName); -} // namespace +} // namespace diff --git a/src/plugins/template/tests/functional/op_reference/group_convolution_backprop.cpp b/src/plugins/template/tests/functional/op_reference/group_convolution_backprop.cpp index 5570c063690..6cc21eb9cb4 100644 --- a/src/plugins/template/tests/functional/op_reference/group_convolution_backprop.cpp +++ b/src/plugins/template/tests/functional/op_reference/group_convolution_backprop.cpp @@ -4,8 +4,8 @@ #include -#include "openvino/op/group_conv.hpp" #include "base_reference_test.hpp" +#include "openvino/op/group_conv.hpp" #include "openvino/opsets/opset8.hpp" using namespace reference_tests; @@ -14,11 +14,18 @@ using namespace ov; namespace { struct GroupConvolutionBackpropDataParams { template - GroupConvolutionBackpropDataParams(const PartialShape& inputShape, const PartialShape& filterShape, const PartialShape& outputShape, - const element::Type& iType, - const std::vector& iValues, const std::vector& filterValues, const std::vector& oValues, - const Strides& strides, const CoordinateDiff& padBegin, const CoordinateDiff& padEnd, const Strides& dialations, - const CoordinateDiff& outPadding = {}) + GroupConvolutionBackpropDataParams(const PartialShape& inputShape, + const PartialShape& filterShape, + const PartialShape& outputShape, + const element::Type& iType, + const std::vector& iValues, + const std::vector& filterValues, + const std::vector& oValues, + const Strides& strides, + const CoordinateDiff& padBegin, + const CoordinateDiff& padEnd, + const Strides& dialations, + const CoordinateDiff& outPadding = {}) : inputShape(inputShape), filterShape(filterShape), outputShape(outputShape), @@ -52,11 +59,17 @@ struct GroupConvolutionBackpropDataParams { struct GroupConvolutionBackpropDataOutShapeParams { template - GroupConvolutionBackpropDataOutShapeParams(const PartialShape& inputShape, const PartialShape& filterShape, const PartialShape& outputShape, - const element::Type& iType, - const std::vector& iValues, const std::vector& filterValues, const std::vector& oValues, - const Strides& strides, const Strides& dialations, - const Shape& constantOutputShape, const std::vector& constantOutputShapeData) + GroupConvolutionBackpropDataOutShapeParams(const PartialShape& inputShape, + const PartialShape& filterShape, + const PartialShape& outputShape, + const element::Type& iType, + const std::vector& iValues, + const std::vector& filterValues, + const std::vector& oValues, + const Strides& strides, + const Strides& dialations, + const Shape& constantOutputShape, + const std::vector& constantOutputShapeData) : inputShape(inputShape), filterShape(filterShape), outputShape(outputShape), @@ -86,7 +99,9 @@ struct GroupConvolutionBackpropDataOutShapeParams { std::vector constantOutputShapeData; }; -class ReferenceGroupConvolutionBackpropDataLayerTest : public testing::TestWithParam, public CommonReferenceTest { +class ReferenceGroupConvolutionBackpropDataLayerTest + : public testing::TestWithParam, + public CommonReferenceTest { public: void SetUp() override { auto params = GetParam(); @@ -118,30 +133,33 @@ private: const auto in = std::make_shared(params.inType, params.inputShape); const auto filter = std::make_shared(params.inType, params.filterShape); if (params.outPadding.size() != 0) { - const auto GroupConvolutionBackpropData = std::make_shared(in, - filter, - params.strides, - params.padBegin, - params.padEnd, - params.dialations, - auto_pad, - params.outPadding); - return std::make_shared(NodeVector {GroupConvolutionBackpropData}, ParameterVector {in, filter}); + const auto GroupConvolutionBackpropData = + std::make_shared(in, + filter, + params.strides, + params.padBegin, + params.padEnd, + params.dialations, + auto_pad, + params.outPadding); + return std::make_shared(NodeVector{GroupConvolutionBackpropData}, ParameterVector{in, filter}); } else { - const auto GroupConvolutionBackpropData = std::make_shared(in, - filter, - params.strides, - params.padBegin, - params.padEnd, - params.dialations, - auto_pad); - return std::make_shared(NodeVector {GroupConvolutionBackpropData}, ParameterVector {in, filter}); + const auto GroupConvolutionBackpropData = + std::make_shared(in, + filter, + params.strides, + params.padBegin, + params.padEnd, + params.dialations, + auto_pad); + return std::make_shared(NodeVector{GroupConvolutionBackpropData}, ParameterVector{in, filter}); } } }; class ReferenceGroupConvolutionBackpropDataLayerOutShapeTest - : public testing::TestWithParam, public CommonReferenceTest { + : public testing::TestWithParam, + public CommonReferenceTest { public: void SetUp() override { auto params = GetParam(); @@ -169,14 +187,17 @@ private: const auto in = std::make_shared(params.inType, params.inputShape); const auto filter = std::make_shared(params.inType, params.filterShape); - auto output_shape = std::make_shared(element::i64, params.constantOutputShape, params.constantOutputShapeData); - const auto GroupConvolutionBackpropData = std::make_shared(in, - filter, - output_shape, - params.strides, - params.dialations, - auto_pad); - return std::make_shared(NodeVector {GroupConvolutionBackpropData}, ParameterVector {in, filter}); + auto output_shape = std::make_shared(element::i64, + params.constantOutputShape, + params.constantOutputShapeData); + const auto GroupConvolutionBackpropData = + std::make_shared(in, + filter, + output_shape, + params.strides, + params.dialations, + auto_pad); + return std::make_shared(NodeVector{GroupConvolutionBackpropData}, ParameterVector{in, filter}); } }; @@ -192,104 +213,104 @@ template std::vector generateGroupConvolutionBackpropDataFloatParams() { using T = typename element_type_traits::value_type; - std::vector groupConvolutionBackpropDataParams { -// --------------------- 1D GroupConvolutionBackpropData ------------------------------------------ - GroupConvolutionBackpropDataParams(PartialShape {1, 1, 4}, - PartialShape {1, 1, 1, 3}, - PartialShape {1, 1, 6}, - IN_ET, - std::vector{1, 3, 3, 0}, - std::vector{2, 0, 1}, - std::vector{2, 6, 7, 3, 3, 0}, - {1}, - {0}, - {0}, - {1}), - GroupConvolutionBackpropDataParams(PartialShape {1, 2, 4}, - PartialShape {2, 1, 1, 3}, - PartialShape {1, 2, 6}, - IN_ET, - std::vector{1, 3, 3, 0, - 1, 2, 1, 3}, - std::vector{1, 0, 3, - 3, 0, 1}, - std::vector{1, 3, 6, 9, 9, 0, - 3, 6, 4, 11, 1, 3}, - {1}, - {0}, - {0}, - {1}), - GroupConvolutionBackpropDataParams(PartialShape {1, 4, 4}, - PartialShape {2, 2, 1, 3}, - PartialShape {1, 2, 6}, - IN_ET, - std::vector{1, 3, 3, 0, - 1, 2, -1, -3, - -3, 0, 1, 2, - 0, -2, 3, -1}, - std::vector{1, 0, 3, - 3, 0, 1, - -3, 0, 1, - 3, 2, -1}, - std::vector{4, 9, 4, 2, 8, -3, - 9, -6, -1, -1, -4, 3}, - {1}, - {0}, - {0}, - {1}), - GroupConvolutionBackpropDataParams(PartialShape {2, 2, 4}, - PartialShape {2, 1, 1, 3}, - PartialShape {2, 2, 6}, - IN_ET, - std::vector{// -- batch 1 -- - 1, 3, 0, 1, - 1, 3, 0, 2, - // -- batch 2 -- - 1, 3, 0, 1, - 1, 3, 0, 2}, - std::vector{1, 0, 3, - 3, 0, 1}, - std::vector{1, 3, 3, 10, 0, 3, - 3, 9, 1, 9, 0, 2, - 1, 3, 3, 10, 0, 3, - 3, 9, 1, 9, 0, 2}, - {1}, - {0}, - {0}, - {1}), - GroupConvolutionBackpropDataParams(PartialShape {1, 1, 3, 3}, - PartialShape {1, 1, 1, 3, 3}, - PartialShape {1, 1, 6, 6}, - IN_ET, - std::vector{0.16857791f, - -0.15161794f, - 0.08540368f, - 0.1820628f, - -0.21746576f, - 0.08245695f, - 0.1431433f, - -0.43156421f, - 0.30591947f}, - std::vector{-0.06230065f, - 0.37932432f, - -0.25388849f, - 0.33878803f, - 0.43709868f, - -0.22477469f, - 0.04118127f, - -0.44696793f, - 0.06373066f}, - std::vector{0.07368518f, -0.08925839f, -0.06627201f, 0.06301362f, 0.03732984f, -0.01919658f, - -0.00628807f, -0.02817563f, -0.01472169f, 0.04392925f, -0.00689478f, -0.01549204f, - 0.07957941f, -0.11459791f, -0.09505399f, 0.07681622f, 0.03604182f, -0.01853423f, - -0.0270785f, -0.00680824f, -0.06650258f, 0.08004665f, 0.07918708f, -0.0724144f, - 0.06256775f, -0.17838378f, -0.18863615f, 0.20064656f, 0.133717f, -0.06876295f, - -0.06398046f, -0.00864975f, 0.19289537f, -0.01490572f, -0.13673618f, 0.01949645f}, - {2, 2}, - {1, 1}, - {1, 1}, - {1, 1}, - {1, 1}), + std::vector groupConvolutionBackpropDataParams{ + // --------------------- 1D GroupConvolutionBackpropData ------------------------------------------ + GroupConvolutionBackpropDataParams(PartialShape{1, 1, 4}, + PartialShape{1, 1, 1, 3}, + PartialShape{1, 1, 6}, + IN_ET, + std::vector{1, 3, 3, 0}, + std::vector{2, 0, 1}, + std::vector{2, 6, 7, 3, 3, 0}, + {1}, + {0}, + {0}, + {1}), + GroupConvolutionBackpropDataParams(PartialShape{1, 2, 4}, + PartialShape{2, 1, 1, 3}, + PartialShape{1, 2, 6}, + IN_ET, + std::vector{1, 3, 3, 0, 1, 2, 1, 3}, + std::vector{1, 0, 3, 3, 0, 1}, + std::vector{1, 3, 6, 9, 9, 0, 3, 6, 4, 11, 1, 3}, + {1}, + {0}, + {0}, + {1}), + GroupConvolutionBackpropDataParams(PartialShape{1, 4, 4}, + PartialShape{2, 2, 1, 3}, + PartialShape{1, 2, 6}, + IN_ET, + std::vector{1, 3, 3, 0, 1, 2, -1, -3, -3, 0, 1, 2, 0, -2, 3, -1}, + std::vector{1, 0, 3, 3, 0, 1, -3, 0, 1, 3, 2, -1}, + std::vector{4, 9, 4, 2, 8, -3, 9, -6, -1, -1, -4, 3}, + {1}, + {0}, + {0}, + {1}), + GroupConvolutionBackpropDataParams( + PartialShape{2, 2, 4}, + PartialShape{2, 1, 1, 3}, + PartialShape{2, 2, 6}, + IN_ET, + std::vector{// -- batch 1 -- + 1, + 3, + 0, + 1, + 1, + 3, + 0, + 2, + // -- batch 2 -- + 1, + 3, + 0, + 1, + 1, + 3, + 0, + 2}, + std::vector{1, 0, 3, 3, 0, 1}, + std::vector{1, 3, 3, 10, 0, 3, 3, 9, 1, 9, 0, 2, 1, 3, 3, 10, 0, 3, 3, 9, 1, 9, 0, 2}, + {1}, + {0}, + {0}, + {1}), + GroupConvolutionBackpropDataParams( + PartialShape{1, 1, 3, 3}, + PartialShape{1, 1, 1, 3, 3}, + PartialShape{1, 1, 6, 6}, + IN_ET, + std::vector{0.16857791f, + -0.15161794f, + 0.08540368f, + 0.1820628f, + -0.21746576f, + 0.08245695f, + 0.1431433f, + -0.43156421f, + 0.30591947f}, + std::vector{-0.06230065f, + 0.37932432f, + -0.25388849f, + 0.33878803f, + 0.43709868f, + -0.22477469f, + 0.04118127f, + -0.44696793f, + 0.06373066f}, + std::vector{0.07368518f, -0.08925839f, -0.06627201f, 0.06301362f, 0.03732984f, -0.01919658f, + -0.00628807f, -0.02817563f, -0.01472169f, 0.04392925f, -0.00689478f, -0.01549204f, + 0.07957941f, -0.11459791f, -0.09505399f, 0.07681622f, 0.03604182f, -0.01853423f, + -0.0270785f, -0.00680824f, -0.06650258f, 0.08004665f, 0.07918708f, -0.0724144f, + 0.06256775f, -0.17838378f, -0.18863615f, 0.20064656f, 0.133717f, -0.06876295f, + -0.06398046f, -0.00864975f, 0.19289537f, -0.01490572f, -0.13673618f, 0.01949645f}, + {2, 2}, + {1, 1}, + {1, 1}, + {1, 1}, + {1, 1}), }; return groupConvolutionBackpropDataParams; } @@ -298,71 +319,70 @@ template std::vector generateGroupConvolutionBackpropDataIntParams() { using T = typename element_type_traits::value_type; - std::vector groupConvolutionBackpropDataParams { -// --------------------- 1D GroupConvolutionBackpropData ------------------------------------------ - GroupConvolutionBackpropDataParams(PartialShape {1, 1, 4}, - PartialShape {1, 1, 1, 3}, - PartialShape {1, 1, 6}, - IN_ET, - std::vector{1, 3, 3, 0}, - std::vector{2, 0, 1}, - std::vector{2, 6, 7, 3, 3, 0}, - {1}, - {0}, - {0}, - {1}), - GroupConvolutionBackpropDataParams(PartialShape {1, 2, 4}, - PartialShape {2, 1, 1, 3}, - PartialShape {1, 2, 6}, - IN_ET, - std::vector{1, 3, 3, 0, - 1, 2, 1, 3}, - std::vector{1, 0, 3, - 3, 0, 1}, - std::vector{1, 3, 6, 9, 9, 0, - 3, 6, 4, 11, 1, 3}, - {1}, - {0}, - {0}, - {1}), - GroupConvolutionBackpropDataParams(PartialShape {1, 4, 4}, - PartialShape {2, 2, 1, 3}, - PartialShape {1, 2, 6}, - IN_ET, - std::vector{1, 3, 3, 0, - 1, 2, -1, -3, - -3, 0, 1, 2, - 0, -2, 3, -1}, - std::vector{1, 0, 3, - 3, 0, 1, - -3, 0, 1, - 3, 2, -1}, - std::vector{4, 9, 4, 2, 8, -3, - 9, -6, -1, -1, -4, 3}, - {1}, - {0}, - {0}, - {1}), - GroupConvolutionBackpropDataParams(PartialShape {2, 2, 4}, - PartialShape {2, 1, 1, 3}, - PartialShape {2, 2, 6}, - IN_ET, - std::vector{// -- batch 1 -- - 1, 3, 0, 1, - 1, 3, 0, 2, - // -- batch 2 -- - 1, 3, 0, 1, - 1, 3, 0, 2}, - std::vector{1, 0, 3, - 3, 0, 1}, - std::vector{1, 3, 3, 10, 0, 3, - 3, 9, 1, 9, 0, 2, - 1, 3, 3, 10, 0, 3, - 3, 9, 1, 9, 0, 2}, - {1}, - {0}, - {0}, - {1}), + std::vector groupConvolutionBackpropDataParams{ + // --------------------- 1D GroupConvolutionBackpropData ------------------------------------------ + GroupConvolutionBackpropDataParams(PartialShape{1, 1, 4}, + PartialShape{1, 1, 1, 3}, + PartialShape{1, 1, 6}, + IN_ET, + std::vector{1, 3, 3, 0}, + std::vector{2, 0, 1}, + std::vector{2, 6, 7, 3, 3, 0}, + {1}, + {0}, + {0}, + {1}), + GroupConvolutionBackpropDataParams(PartialShape{1, 2, 4}, + PartialShape{2, 1, 1, 3}, + PartialShape{1, 2, 6}, + IN_ET, + std::vector{1, 3, 3, 0, 1, 2, 1, 3}, + std::vector{1, 0, 3, 3, 0, 1}, + std::vector{1, 3, 6, 9, 9, 0, 3, 6, 4, 11, 1, 3}, + {1}, + {0}, + {0}, + {1}), + GroupConvolutionBackpropDataParams(PartialShape{1, 4, 4}, + PartialShape{2, 2, 1, 3}, + PartialShape{1, 2, 6}, + IN_ET, + std::vector{1, 3, 3, 0, 1, 2, -1, -3, -3, 0, 1, 2, 0, -2, 3, -1}, + std::vector{1, 0, 3, 3, 0, 1, -3, 0, 1, 3, 2, -1}, + std::vector{4, 9, 4, 2, 8, -3, 9, -6, -1, -1, -4, 3}, + {1}, + {0}, + {0}, + {1}), + GroupConvolutionBackpropDataParams( + PartialShape{2, 2, 4}, + PartialShape{2, 1, 1, 3}, + PartialShape{2, 2, 6}, + IN_ET, + std::vector{// -- batch 1 -- + 1, + 3, + 0, + 1, + 1, + 3, + 0, + 2, + // -- batch 2 -- + 1, + 3, + 0, + 1, + 1, + 3, + 0, + 2}, + std::vector{1, 0, 3, 3, 0, 1}, + std::vector{1, 3, 3, 10, 0, 3, 3, 9, 1, 9, 0, 2, 1, 3, 3, 10, 0, 3, 3, 9, 1, 9, 0, 2}, + {1}, + {0}, + {0}, + {1}), }; return groupConvolutionBackpropDataParams; } @@ -371,59 +391,65 @@ template std::vector generateGroupConvolutionBackpropDataUintParams() { using T = typename element_type_traits::value_type; - std::vector groupConvolutionBackpropDataParams { -// --------------------- 1D GroupConvolutionBackpropData ------------------------------------------ - GroupConvolutionBackpropDataParams(PartialShape {1, 1, 4}, - PartialShape {1, 1, 1, 3}, - PartialShape {1, 1, 6}, - IN_ET, - std::vector{1, 3, 3, 0}, - std::vector{2, 0, 1}, - std::vector{2, 6, 7, 3, 3, 0}, - {1}, - {0}, - {0}, - {1}), - GroupConvolutionBackpropDataParams(PartialShape {1, 2, 4}, - PartialShape {2, 1, 1, 3}, - PartialShape {1, 2, 6}, - IN_ET, - std::vector{1, 3, 3, 0, - 1, 2, 1, 3}, - std::vector{1, 0, 3, - 3, 0, 1}, - std::vector{1, 3, 6, 9, 9, 0, - 3, 6, 4, 11, 1, 3}, - {1}, - {0}, - {0}, - {1}), - GroupConvolutionBackpropDataParams(PartialShape {2, 2, 4}, - PartialShape {2, 1, 1, 3}, - PartialShape {2, 2, 6}, - IN_ET, - std::vector{// -- batch 1 -- - 1, 3, 0, 1, - 1, 3, 0, 2, - // -- batch 2 -- - 1, 3, 0, 1, - 1, 3, 0, 2}, - std::vector{1, 0, 3, - 3, 0, 1}, - std::vector{1, 3, 3, 10, 0, 3, - 3, 9, 1, 9, 0, 2, - 1, 3, 3, 10, 0, 3, - 3, 9, 1, 9, 0, 2}, - {1}, - {0}, - {0}, - {1}), + std::vector groupConvolutionBackpropDataParams{ + // --------------------- 1D GroupConvolutionBackpropData ------------------------------------------ + GroupConvolutionBackpropDataParams(PartialShape{1, 1, 4}, + PartialShape{1, 1, 1, 3}, + PartialShape{1, 1, 6}, + IN_ET, + std::vector{1, 3, 3, 0}, + std::vector{2, 0, 1}, + std::vector{2, 6, 7, 3, 3, 0}, + {1}, + {0}, + {0}, + {1}), + GroupConvolutionBackpropDataParams(PartialShape{1, 2, 4}, + PartialShape{2, 1, 1, 3}, + PartialShape{1, 2, 6}, + IN_ET, + std::vector{1, 3, 3, 0, 1, 2, 1, 3}, + std::vector{1, 0, 3, 3, 0, 1}, + std::vector{1, 3, 6, 9, 9, 0, 3, 6, 4, 11, 1, 3}, + {1}, + {0}, + {0}, + {1}), + GroupConvolutionBackpropDataParams( + PartialShape{2, 2, 4}, + PartialShape{2, 1, 1, 3}, + PartialShape{2, 2, 6}, + IN_ET, + std::vector{// -- batch 1 -- + 1, + 3, + 0, + 1, + 1, + 3, + 0, + 2, + // -- batch 2 -- + 1, + 3, + 0, + 1, + 1, + 3, + 0, + 2}, + std::vector{1, 0, 3, 3, 0, 1}, + std::vector{1, 3, 3, 10, 0, 3, 3, 9, 1, 9, 0, 2, 1, 3, 3, 10, 0, 3, 3, 9, 1, 9, 0, 2}, + {1}, + {0}, + {0}, + {1}), }; return groupConvolutionBackpropDataParams; } std::vector generateGroupConvolutionBackpropDataCombinedParams() { - const std::vector> groupConvolutionBackpropDataTypeParams { + const std::vector> groupConvolutionBackpropDataTypeParams{ generateGroupConvolutionBackpropDataFloatParams(), generateGroupConvolutionBackpropDataFloatParams(), generateGroupConvolutionBackpropDataFloatParams(), @@ -435,8 +461,7 @@ std::vector generateGroupConvolutionBackprop generateGroupConvolutionBackpropDataUintParams(), generateGroupConvolutionBackpropDataUintParams(), generateGroupConvolutionBackpropDataUintParams(), - generateGroupConvolutionBackpropDataUintParams() - }; + generateGroupConvolutionBackpropDataUintParams()}; std::vector combinedParams; for (const auto& params : groupConvolutionBackpropDataTypeParams) { @@ -449,38 +474,38 @@ template std::vector generateGroupConvolutionBackpropDataOutShapeParams() { using T = typename element_type_traits::value_type; - std::vector groupConvolutionBackpropDataOutShapeParams { -// --------------------- 1D GroupConvolutionBackpropData ------------------------------------------ - GroupConvolutionBackpropDataOutShapeParams(PartialShape {1, 1, 1, 10}, - PartialShape {1, 1, 1, 1, 5}, - PartialShape {1, 1, 1, 14}, - IN_ET, - std::vector{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}, - std::vector{1, 2, 3, 2, 1}, - std::vector{0, 1, 4, 10, 18, 27, 36, 45, 54, 63, 62, 50, 26, 9}, - {1, 1}, - {1, 1}, - {2}, - {1, 14}), + std::vector groupConvolutionBackpropDataOutShapeParams{ + // --------------------- 1D GroupConvolutionBackpropData ------------------------------------------ + GroupConvolutionBackpropDataOutShapeParams(PartialShape{1, 1, 1, 10}, + PartialShape{1, 1, 1, 1, 5}, + PartialShape{1, 1, 1, 14}, + IN_ET, + std::vector{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}, + std::vector{1, 2, 3, 2, 1}, + std::vector{0, 1, 4, 10, 18, 27, 36, 45, 54, 63, 62, 50, 26, 9}, + {1, 1}, + {1, 1}, + {2}, + {1, 14}), }; return groupConvolutionBackpropDataOutShapeParams; } std::vector generateGroupConvolutionBackpropDataOutShapeCombinedParams() { - const std::vector> groupConvolutionBackpropDataOutShapeTypeParams { - generateGroupConvolutionBackpropDataOutShapeParams(), - generateGroupConvolutionBackpropDataOutShapeParams(), - generateGroupConvolutionBackpropDataOutShapeParams(), - generateGroupConvolutionBackpropDataOutShapeParams(), - generateGroupConvolutionBackpropDataOutShapeParams(), - generateGroupConvolutionBackpropDataOutShapeParams(), - generateGroupConvolutionBackpropDataOutShapeParams(), - generateGroupConvolutionBackpropDataOutShapeParams(), - generateGroupConvolutionBackpropDataOutShapeParams(), - generateGroupConvolutionBackpropDataOutShapeParams(), - generateGroupConvolutionBackpropDataOutShapeParams(), - generateGroupConvolutionBackpropDataOutShapeParams() - }; + const std::vector> + groupConvolutionBackpropDataOutShapeTypeParams{ + generateGroupConvolutionBackpropDataOutShapeParams(), + generateGroupConvolutionBackpropDataOutShapeParams(), + generateGroupConvolutionBackpropDataOutShapeParams(), + generateGroupConvolutionBackpropDataOutShapeParams(), + generateGroupConvolutionBackpropDataOutShapeParams(), + generateGroupConvolutionBackpropDataOutShapeParams(), + generateGroupConvolutionBackpropDataOutShapeParams(), + generateGroupConvolutionBackpropDataOutShapeParams(), + generateGroupConvolutionBackpropDataOutShapeParams(), + generateGroupConvolutionBackpropDataOutShapeParams(), + generateGroupConvolutionBackpropDataOutShapeParams(), + generateGroupConvolutionBackpropDataOutShapeParams()}; std::vector combinedParams; for (const auto& params : groupConvolutionBackpropDataOutShapeTypeParams) { @@ -489,10 +514,14 @@ std::vector generateGroupConvolution return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_GroupConvolutionBackpropData_With_Hardcoded_Refs, ReferenceGroupConvolutionBackpropDataLayerTest, - testing::ValuesIn(generateGroupConvolutionBackpropDataCombinedParams()), ReferenceGroupConvolutionBackpropDataLayerTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_GroupConvolutionBackpropData_With_Hardcoded_Refs, + ReferenceGroupConvolutionBackpropDataLayerTest, + testing::ValuesIn(generateGroupConvolutionBackpropDataCombinedParams()), + ReferenceGroupConvolutionBackpropDataLayerTest::getTestCaseName); -INSTANTIATE_TEST_SUITE_P(smoke_GroupConvolutionBackpropDataOutShape_With_Hardcoded_Refs, ReferenceGroupConvolutionBackpropDataLayerOutShapeTest, - testing::ValuesIn(generateGroupConvolutionBackpropDataOutShapeCombinedParams()), ReferenceGroupConvolutionBackpropDataLayerOutShapeTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_GroupConvolutionBackpropDataOutShape_With_Hardcoded_Refs, + ReferenceGroupConvolutionBackpropDataLayerOutShapeTest, + testing::ValuesIn(generateGroupConvolutionBackpropDataOutShapeCombinedParams()), + ReferenceGroupConvolutionBackpropDataLayerOutShapeTest::getTestCaseName); -} // namespace +} // namespace diff --git a/src/plugins/template/tests/functional/op_reference/gru_cell.cpp b/src/plugins/template/tests/functional/op_reference/gru_cell.cpp index bf0a8373e83..8811e0e29df 100644 --- a/src/plugins/template/tests/functional/op_reference/gru_cell.cpp +++ b/src/plugins/template/tests/functional/op_reference/gru_cell.cpp @@ -2,9 +2,10 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/gru_cell.hpp" + #include -#include "openvino/op/gru_cell.hpp" #include "base_reference_test.hpp" using namespace reference_tests; @@ -12,12 +13,30 @@ using namespace ov; namespace { struct GRUCellParams { - GRUCellParams( - const int32_t batchSize, const int32_t inputSize, const int32_t hiddenSize, const int32_t gatesCount, const bool linearBeforeReset, - const reference_tests::Tensor& X, const reference_tests::Tensor& H_t, const reference_tests::Tensor& W, const reference_tests::Tensor& R, const reference_tests::Tensor& B, - const reference_tests::Tensor& Ho, const std::string& testcaseName = "") : - batchSize(batchSize), inputSize(inputSize), hiddenSize(hiddenSize), gatesCount(gatesCount), linearBeforeReset(linearBeforeReset), - X(X), H_t(H_t), W(W), R(R), B(B), Ho(Ho), testcaseName(testcaseName) {} + GRUCellParams(const int32_t batchSize, + const int32_t inputSize, + const int32_t hiddenSize, + const int32_t gatesCount, + const bool linearBeforeReset, + const reference_tests::Tensor& X, + const reference_tests::Tensor& H_t, + const reference_tests::Tensor& W, + const reference_tests::Tensor& R, + const reference_tests::Tensor& B, + const reference_tests::Tensor& Ho, + const std::string& testcaseName = "") + : batchSize(batchSize), + inputSize(inputSize), + hiddenSize(hiddenSize), + gatesCount(gatesCount), + linearBeforeReset(linearBeforeReset), + X(X), + H_t(H_t), + W(W), + R(R), + B(B), + Ho(Ho), + testcaseName(testcaseName) {} int32_t batchSize; int32_t inputSize; @@ -144,78 +163,104 @@ TEST_P(ReferenceGRUCellTestHardsigmoidActivationFunction, CompareWithRefs) { template std::vector generateParams() { using T = typename element_type_traits::value_type; - std::vector params { + std::vector params{ GRUCellParams( - 2, 3, 3, 3, false, - reference_tests::Tensor(ET, {2, 3}, std::vector{ - 0.52421564f, 0.78845507f, 0.9372873f, 0.59783894f, 0.18278378f, 0.2084126f}), - reference_tests::Tensor(ET, {2, 3}, std::vector{ - 0.45738035f, 0.996877f, 0.82882977f, 0.47492632f, 0.88471466f, 0.57833236f}), - reference_tests::Tensor(ET, {3 * 3, 3}, std::vector{ - 0.5815369f, 0.16559383f, 0.08464007f, 0.843122f, 0.73968244f, 0.11359601f, - 0.8295078f, 0.9240567f, 0.10007995f, 0.20573162f, 0.09002485f, 0.2839569f, - 0.3096991f, 0.5638341f, 0.5787327f, 0.84552664f, 0.16263747f, 0.7243242f, - 0.8049057f, 0.43966424f, 0.46294412f, 0.9833361f, 0.31369713f, 0.1719934f, - 0.4937093f, 0.6353004f, 0.77982515f}), - reference_tests::Tensor(ET, {3 * 3, 3}, std::vector{ - 0.16510165f, 0.52435565f, 0.2788478f, 0.99427545f, 0.1623331f, 0.01389796f, - 0.99669236f, 0.53901845f, 0.8737506f, 0.9254788f, 0.21172932f, 0.11634306f, - 0.40111724f, 0.37497616f, 0.2903471f, 0.6796794f, 0.65131867f, 0.78163475f, - 0.12058706f, 0.45591718f, 0.791677f, 0.76497287f, 0.9895242f, 0.7845312f, - 0.51267904f, 0.49030215f, 0.08498167f}), - reference_tests::Tensor(ET, {3 * 3}, std::vector{ - 0.8286678f + 0.9175602f, - 0.9153158f + 0.14958014f, - 0.9581612f + 0.49230585f, - 0.6639213f + 0.63162816f, - 0.84239805f + 0.4161903f, - 0.5282445f + 0.22148274f, - 0.14153397f + 0.50496656f, - 0.22404431f + 0.34798595f, - 0.6549655f + 0.6699164f}), - reference_tests::Tensor(ET, {2, 3}, std::vector{ - 0.48588726f, 0.99670005f, 0.83759373f, 0.5023099f, 0.89410484f, 0.60011315f}), + 2, + 3, + 3, + 3, + false, + reference_tests::Tensor( + ET, + {2, 3}, + std::vector{0.52421564f, 0.78845507f, 0.9372873f, 0.59783894f, 0.18278378f, 0.2084126f}), + reference_tests::Tensor( + ET, + {2, 3}, + std::vector{0.45738035f, 0.996877f, 0.82882977f, 0.47492632f, 0.88471466f, 0.57833236f}), + reference_tests::Tensor( + ET, + {3 * 3, 3}, + std::vector{0.5815369f, 0.16559383f, 0.08464007f, 0.843122f, 0.73968244f, 0.11359601f, 0.8295078f, + 0.9240567f, 0.10007995f, 0.20573162f, 0.09002485f, 0.2839569f, 0.3096991f, 0.5638341f, + 0.5787327f, 0.84552664f, 0.16263747f, 0.7243242f, 0.8049057f, 0.43966424f, 0.46294412f, + 0.9833361f, 0.31369713f, 0.1719934f, 0.4937093f, 0.6353004f, 0.77982515f}), + reference_tests::Tensor(ET, {3 * 3, 3}, std::vector{0.16510165f, 0.52435565f, 0.2788478f, 0.99427545f, + 0.1623331f, 0.01389796f, 0.99669236f, 0.53901845f, + 0.8737506f, 0.9254788f, 0.21172932f, 0.11634306f, + 0.40111724f, 0.37497616f, 0.2903471f, 0.6796794f, + 0.65131867f, 0.78163475f, 0.12058706f, 0.45591718f, + 0.791677f, 0.76497287f, 0.9895242f, 0.7845312f, + 0.51267904f, 0.49030215f, 0.08498167f}), + reference_tests::Tensor(ET, + {3 * 3}, + std::vector{0.8286678f + 0.9175602f, + 0.9153158f + 0.14958014f, + 0.9581612f + 0.49230585f, + 0.6639213f + 0.63162816f, + 0.84239805f + 0.4161903f, + 0.5282445f + 0.22148274f, + 0.14153397f + 0.50496656f, + 0.22404431f + 0.34798595f, + 0.6549655f + 0.6699164f}), + reference_tests::Tensor( + ET, + {2, 3}, + std::vector{0.48588726f, 0.99670005f, 0.83759373f, 0.5023099f, 0.89410484f, 0.60011315f}), "gru_cell_bias_clip"), GRUCellParams( - 2, 3, 3, 3, true, - reference_tests::Tensor(ET, {2, 3}, std::vector{ - 0.12249453f, 0.6127907f, 0.5001741f, 0.5124603f, 0.04329684f, 0.023834f}), - reference_tests::Tensor(ET, {2, 3}, std::vector{ - 0.8598948f, 0.41189128f, 0.72824323f, 0.53940123f, 0.31485787f, 0.04053852f}), - reference_tests::Tensor(ET, {3 * 3, 3}, std::vector{ - 0.72259396f, 0.11561195f, 0.9457856f, 0.19037509f, 0.6964006f, 0.33459795f, - 0.5468904f, 0.85646594f, 0.5101311f, 0.9712257f, 0.3687071f, 0.60280246f, - 0.56943774f, 0.7475505f, 0.2490578f, 0.86977345f, 0.85542053f, 0.29660386f, - 0.49717373f, 0.7473479f, 0.53454477f, 0.15974349f, 0.5804805f, 0.14303213f, - 0.07514781f, 0.5865731f, 0.76409274f}), - reference_tests::Tensor(ET, {3 * 3, 3}, std::vector{ - 0.91382647f, 0.41527033f, 0.28040004f, 0.23601337f, 0.04471736f, 0.03888785f, - 0.06308217f, 0.44844428f, 0.29384327f, 0.49037653f, 0.50421673f, 0.7366393f, - 0.63143945f, 0.00277612f, 0.37198433f, 0.06966069f, 0.4613444f, 0.10999731f, - 0.78273284f, 0.21453214f, 0.10751773f, 0.18332677f, 0.1326976f, 0.9998985f, - 0.19263928f, 0.10979804f, 0.52575564f}), - reference_tests::Tensor(ET, {(3 + 1) * 3}, std::vector{ - 0.61395123f, // 0.09875853f + 0.5151927f, - 1.08667738f, // 0.37801138f + 0.708666f, - 1.32600244f, // 0.7729636f + 0.55303884f, - 0.81917698f, // 0.78493553f + 0.03424145f, - 1.37736335f, // 0.5662702f + 0.81109315f, - 0.42931147f, // 0.12406381f + 0.30524766f, - 0.66729516f, - 0.7752771f, - 0.78819966f, - 0.6606634f, - 0.99040645f, - 0.21112025f}), - reference_tests::Tensor(ET, {2, 3}, std::vector{ - 0.8709214f, 0.48411977f, 0.74495184f, 0.6074972f, 0.44572943f, 0.1467715f}), + 2, + 3, + 3, + 3, + true, + reference_tests::Tensor( + ET, + {2, 3}, + std::vector{0.12249453f, 0.6127907f, 0.5001741f, 0.5124603f, 0.04329684f, 0.023834f}), + reference_tests::Tensor( + ET, + {2, 3}, + std::vector{0.8598948f, 0.41189128f, 0.72824323f, 0.53940123f, 0.31485787f, 0.04053852f}), + reference_tests::Tensor(ET, {3 * 3, 3}, std::vector{0.72259396f, 0.11561195f, 0.9457856f, 0.19037509f, + 0.6964006f, 0.33459795f, 0.5468904f, 0.85646594f, + 0.5101311f, 0.9712257f, 0.3687071f, 0.60280246f, + 0.56943774f, 0.7475505f, 0.2490578f, 0.86977345f, + 0.85542053f, 0.29660386f, 0.49717373f, 0.7473479f, + 0.53454477f, 0.15974349f, 0.5804805f, 0.14303213f, + 0.07514781f, 0.5865731f, 0.76409274f}), + reference_tests::Tensor(ET, {3 * 3, 3}, std::vector{0.91382647f, 0.41527033f, 0.28040004f, 0.23601337f, + 0.04471736f, 0.03888785f, 0.06308217f, 0.44844428f, + 0.29384327f, 0.49037653f, 0.50421673f, 0.7366393f, + 0.63143945f, 0.00277612f, 0.37198433f, 0.06966069f, + 0.4613444f, 0.10999731f, 0.78273284f, 0.21453214f, + 0.10751773f, 0.18332677f, 0.1326976f, 0.9998985f, + 0.19263928f, 0.10979804f, 0.52575564f}), + reference_tests::Tensor(ET, + {(3 + 1) * 3}, + std::vector{0.61395123f, // 0.09875853f + 0.5151927f, + 1.08667738f, // 0.37801138f + 0.708666f, + 1.32600244f, // 0.7729636f + 0.55303884f, + 0.81917698f, // 0.78493553f + 0.03424145f, + 1.37736335f, // 0.5662702f + 0.81109315f, + 0.42931147f, // 0.12406381f + 0.30524766f, + 0.66729516f, + 0.7752771f, + 0.78819966f, + 0.6606634f, + 0.99040645f, + 0.21112025f}), + reference_tests::Tensor( + ET, + {2, 3}, + std::vector{0.8709214f, 0.48411977f, 0.74495184f, 0.6074972f, 0.44572943f, 0.1467715f}), "gru_cell_linear_before_reset"), }; return params; } std::vector generateCombinedParams() { - const std::vector> generatedParams { + const std::vector> generatedParams{ generateParams(), generateParams(), generateParams(), @@ -232,47 +277,60 @@ std::vector generateCombinedParams() { template std::vector generateParamsHardsigmoidActivationFunction() { using T = typename element_type_traits::value_type; - std::vector params { + std::vector params{ GRUCellParams( - 2, 3, 3, 3, true, - reference_tests::Tensor(ET, {2, 3}, std::vector{ - 0.12249453f, 0.6127907f, 0.5001741f, 0.5124603f, 0.04329684f, 0.023834f}), - reference_tests::Tensor(ET, {2, 3}, std::vector{ - 0.8598948f, 0.41189128f, 0.72824323f, 0.53940123f, 0.31485787f, 0.04053852f}), - reference_tests::Tensor(ET, {3 * 3, 3}, std::vector{ - 0.72259396f, 0.11561195f, 0.9457856f, 0.19037509f, 0.6964006f, 0.33459795f, - 0.5468904f, 0.85646594f, 0.5101311f, 0.9712257f, 0.3687071f, 0.60280246f, - 0.56943774f, 0.7475505f, 0.2490578f, 0.86977345f, 0.85542053f, 0.29660386f, - 0.49717373f, 0.7473479f, 0.53454477f, 0.15974349f, 0.5804805f, 0.14303213f, - 0.07514781f, 0.5865731f, 0.76409274f}), - reference_tests::Tensor(ET, {3 * 3, 3}, std::vector{ - 0.91382647f, 0.41527033f, 0.28040004f, 0.23601337f, 0.04471736f, 0.03888785f, - 0.06308217f, 0.44844428f, 0.29384327f, 0.49037653f, 0.50421673f, 0.7366393f, - 0.63143945f, 0.00277612f, 0.37198433f, 0.06966069f, 0.4613444f, 0.10999731f, - 0.78273284f, 0.21453214f, 0.10751773f, 0.18332677f, 0.1326976f, 0.9998985f, - 0.19263928f, 0.10979804f, 0.52575564f}), - reference_tests::Tensor(ET, {(3 + 1) * 3}, std::vector{ - 0.09875853f + 0.5151927f, - 0.37801138f + 0.708666f, - 0.7729636f + 0.55303884f, - 0.78493553f + 0.03424145f, - 0.5662702f + 0.81109315f, - 0.12406381f + 0.30524766f, - 0.66729516f, - 0.7752771f, - 0.78819966f, - 0.6606634f, - 0.99040645f, - 0.21112025f}), - reference_tests::Tensor(ET, {2, 3}, std::vector{ - 0.8598948f, 0.41189128f, 0.72824323f, 0.53940123f, 0.31485787f, 0.04053852f}), + 2, + 3, + 3, + 3, + true, + reference_tests::Tensor( + ET, + {2, 3}, + std::vector{0.12249453f, 0.6127907f, 0.5001741f, 0.5124603f, 0.04329684f, 0.023834f}), + reference_tests::Tensor( + ET, + {2, 3}, + std::vector{0.8598948f, 0.41189128f, 0.72824323f, 0.53940123f, 0.31485787f, 0.04053852f}), + reference_tests::Tensor(ET, {3 * 3, 3}, std::vector{0.72259396f, 0.11561195f, 0.9457856f, 0.19037509f, + 0.6964006f, 0.33459795f, 0.5468904f, 0.85646594f, + 0.5101311f, 0.9712257f, 0.3687071f, 0.60280246f, + 0.56943774f, 0.7475505f, 0.2490578f, 0.86977345f, + 0.85542053f, 0.29660386f, 0.49717373f, 0.7473479f, + 0.53454477f, 0.15974349f, 0.5804805f, 0.14303213f, + 0.07514781f, 0.5865731f, 0.76409274f}), + reference_tests::Tensor(ET, {3 * 3, 3}, std::vector{0.91382647f, 0.41527033f, 0.28040004f, 0.23601337f, + 0.04471736f, 0.03888785f, 0.06308217f, 0.44844428f, + 0.29384327f, 0.49037653f, 0.50421673f, 0.7366393f, + 0.63143945f, 0.00277612f, 0.37198433f, 0.06966069f, + 0.4613444f, 0.10999731f, 0.78273284f, 0.21453214f, + 0.10751773f, 0.18332677f, 0.1326976f, 0.9998985f, + 0.19263928f, 0.10979804f, 0.52575564f}), + reference_tests::Tensor(ET, + {(3 + 1) * 3}, + std::vector{0.09875853f + 0.5151927f, + 0.37801138f + 0.708666f, + 0.7729636f + 0.55303884f, + 0.78493553f + 0.03424145f, + 0.5662702f + 0.81109315f, + 0.12406381f + 0.30524766f, + 0.66729516f, + 0.7752771f, + 0.78819966f, + 0.6606634f, + 0.99040645f, + 0.21112025f}), + reference_tests::Tensor( + ET, + {2, 3}, + std::vector{0.8598948f, 0.41189128f, 0.72824323f, 0.53940123f, 0.31485787f, 0.04053852f}), "gru_cell_hardsigmoid_activation_function"), }; return params; } std::vector generateCombinedParamsHardsigmoidActivationFunction() { - const std::vector> generatedParams { + const std::vector> generatedParams{ generateParamsHardsigmoidActivationFunction(), generateParamsHardsigmoidActivationFunction(), generateParamsHardsigmoidActivationFunction(), @@ -286,9 +344,13 @@ std::vector generateCombinedParamsHardsigmoidActivationFunction() return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_GRUCell_With_Hardcoded_Refs, ReferenceGRUCellTest, - testing::ValuesIn(generateCombinedParams()), ReferenceGRUCellTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_GRUCell_With_Hardcoded_Refs, + ReferenceGRUCellTest, + testing::ValuesIn(generateCombinedParams()), + ReferenceGRUCellTest::getTestCaseName); -INSTANTIATE_TEST_SUITE_P(smoke_GRUCell_With_Hardcoded_Refs, ReferenceGRUCellTestHardsigmoidActivationFunction, - testing::ValuesIn(generateCombinedParamsHardsigmoidActivationFunction()), ReferenceGRUCellTest::getTestCaseName); -} // namespace +INSTANTIATE_TEST_SUITE_P(smoke_GRUCell_With_Hardcoded_Refs, + ReferenceGRUCellTestHardsigmoidActivationFunction, + testing::ValuesIn(generateCombinedParamsHardsigmoidActivationFunction()), + ReferenceGRUCellTest::getTestCaseName); +} // namespace diff --git a/src/plugins/template/tests/functional/op_reference/gru_sequence.cpp b/src/plugins/template/tests/functional/op_reference/gru_sequence.cpp index 246a3e3100e..d964cc8e4e6 100644 --- a/src/plugins/template/tests/functional/op_reference/gru_sequence.cpp +++ b/src/plugins/template/tests/functional/op_reference/gru_sequence.cpp @@ -2,9 +2,10 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/gru_sequence.hpp" + #include -#include "openvino/op/gru_sequence.hpp" #include "base_reference_test.hpp" using namespace reference_tests; @@ -13,43 +14,59 @@ using namespace ov; namespace { struct GRUSequenceParams { template - GRUSequenceParams( - const size_t batchSize, const size_t inputSize, const size_t hiddenSize, const size_t seqLength, - const float clip, const bool linear_before_reset, const op::RecurrentSequenceDirection& gru_direction, - const element::Type_t& iType, - const std::vector& XValues, const std::vector& H_tValues, const std::vector& seqLengthsValues, - const std::vector& WValues, const std::vector& RValues, const std::vector& BValues, - const std::vector& YValues, const std::vector& HoValues, - const std::string& testcaseName = "") : - batchSize(batchSize), inputSize(inputSize), hiddenSize(hiddenSize), seqLength(seqLength), - clip(clip), linear_before_reset(linear_before_reset), gru_direction(gru_direction), iType(iType), oType(iType), - testcaseName(testcaseName) { - numDirections = (gru_direction == op::RecurrentSequenceDirection::BIDIRECTIONAL) ? 2 : 1; + GRUSequenceParams(const size_t batchSize, + const size_t inputSize, + const size_t hiddenSize, + const size_t seqLength, + const float clip, + const bool linear_before_reset, + const op::RecurrentSequenceDirection& gru_direction, + const element::Type_t& iType, + const std::vector& XValues, + const std::vector& H_tValues, + const std::vector& seqLengthsValues, + const std::vector& WValues, + const std::vector& RValues, + const std::vector& BValues, + const std::vector& YValues, + const std::vector& HoValues, + const std::string& testcaseName = "") + : batchSize(batchSize), + inputSize(inputSize), + hiddenSize(hiddenSize), + seqLength(seqLength), + clip(clip), + linear_before_reset(linear_before_reset), + gru_direction(gru_direction), + iType(iType), + oType(iType), + testcaseName(testcaseName) { + numDirections = (gru_direction == op::RecurrentSequenceDirection::BIDIRECTIONAL) ? 2 : 1; - Shape XShape = Shape{batchSize, seqLength, inputSize}; - Shape H_tShape = Shape{batchSize, numDirections, hiddenSize}; - Shape seqLengthsShape = Shape{batchSize}; - Shape WShape = Shape{numDirections, 3 * hiddenSize, inputSize}; - Shape RShape = Shape{numDirections, 3 * hiddenSize, hiddenSize}; - Shape YShape = Shape{batchSize, numDirections, seqLength, hiddenSize}; - Shape HoShape = Shape{batchSize, numDirections, hiddenSize}; + Shape XShape = Shape{batchSize, seqLength, inputSize}; + Shape H_tShape = Shape{batchSize, numDirections, hiddenSize}; + Shape seqLengthsShape = Shape{batchSize}; + Shape WShape = Shape{numDirections, 3 * hiddenSize, inputSize}; + Shape RShape = Shape{numDirections, 3 * hiddenSize, hiddenSize}; + Shape YShape = Shape{batchSize, numDirections, seqLength, hiddenSize}; + Shape HoShape = Shape{batchSize, numDirections, hiddenSize}; - X = reference_tests::Tensor(XShape, iType, XValues); - H_t = reference_tests::Tensor(H_tShape, iType, H_tValues); - sequence_lengths = reference_tests::Tensor(seqLengthsShape, element::Type_t::i64, seqLengthsValues); - W = reference_tests::Tensor(WShape, iType, WValues); - R = reference_tests::Tensor(RShape, iType, RValues); - Y = reference_tests::Tensor(YShape, oType, YValues); - Ho = reference_tests::Tensor(HoShape, oType, HoValues); + X = reference_tests::Tensor(XShape, iType, XValues); + H_t = reference_tests::Tensor(H_tShape, iType, H_tValues); + sequence_lengths = reference_tests::Tensor(seqLengthsShape, element::Type_t::i64, seqLengthsValues); + W = reference_tests::Tensor(WShape, iType, WValues); + R = reference_tests::Tensor(RShape, iType, RValues); + Y = reference_tests::Tensor(YShape, oType, YValues); + Ho = reference_tests::Tensor(HoShape, oType, HoValues); - if (linear_before_reset == true) { - Shape BShape = Shape{numDirections, 4 * hiddenSize}; - B = reference_tests::Tensor(BShape, iType, BValues); - } else { - Shape BShape = Shape{numDirections, 3 * hiddenSize}; - B = reference_tests::Tensor(BShape, iType, BValues); - } + if (linear_before_reset == true) { + Shape BShape = Shape{numDirections, 4 * hiddenSize}; + B = reference_tests::Tensor(BShape, iType, BValues); + } else { + Shape BShape = Shape{numDirections, 3 * hiddenSize}; + B = reference_tests::Tensor(BShape, iType, BValues); } + } size_t batchSize; size_t inputSize; @@ -78,7 +95,8 @@ public: void SetUp() override { auto params = GetParam(); function = CreateFunction(params); - inputData = {params.X.data, params.H_t.data, params.sequence_lengths.data, params.W.data, params.R.data, params.B.data}; + inputData = + {params.X.data, params.H_t.data, params.sequence_lengths.data, params.W.data, params.R.data, params.B.data}; refOutData = {params.Y.data, params.Ho.data}; } @@ -107,27 +125,28 @@ private: static std::shared_ptr CreateFunction(const GRUSequenceParams& params) { const auto X = std::make_shared(params.X.type, params.X.shape); const auto H_t = std::make_shared(params.H_t.type, params.H_t.shape); - const auto sequence_lengths = std::make_shared(params.sequence_lengths.type, params.sequence_lengths.shape); + const auto sequence_lengths = + std::make_shared(params.sequence_lengths.type, params.sequence_lengths.shape); const auto W = std::make_shared(params.W.type, params.W.shape); const auto R = std::make_shared(params.R.type, params.R.shape); const auto B = std::make_shared(params.B.type, params.B.shape); - const auto gru_sequence = - std::make_shared(X, - H_t, - sequence_lengths, - W, - R, - B, - params.hiddenSize, - params.gru_direction, - std::vector{"sigmoid", "tanh"}, - std::vector{}, - std::vector{}, - params.clip, - params.linear_before_reset); + const auto gru_sequence = std::make_shared(X, + H_t, + sequence_lengths, + W, + R, + B, + params.hiddenSize, + params.gru_direction, + std::vector{"sigmoid", "tanh"}, + std::vector{}, + std::vector{}, + params.clip, + params.linear_before_reset); - auto function = std::make_shared(gru_sequence->outputs(), ParameterVector{X, H_t, sequence_lengths, W, R, B}); + auto function = + std::make_shared(gru_sequence->outputs(), ParameterVector{X, H_t, sequence_lengths, W, R, B}); return function; } }; @@ -140,612 +159,588 @@ template std::vector generateParams() { using T = typename element_type_traits::value_type; - std::vector params { + std::vector params{ GRUSequenceParams( - 5, 10, 10, 10, - 0.7f, false, op::RecurrentSequenceDirection::FORWARD, + 5, + 10, + 10, + 10, + 0.7f, + false, + op::RecurrentSequenceDirection::FORWARD, ET, std::vector{ - 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, - 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, - 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, - 7.03475, 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, - 6.61627, 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 2.07541, - 5.72319, 1.75261, 9.25175, 9.19404, 3.69037, 6.2595, 6.09321, 6.52544, 9.60882, 3.34881, - 3.07914, 5.80104, 9.54944, 5.43754, 5.8654, 7.88937, 1.40811, 2.2597, 8.13163, 1.26821, - 8.94813, 5.86709, 5.03182, 9.02922, 4.39826, 5.84582, 6.87069, 4.25135, 6.13908, 6.74053, - 2.13683, 7.21184, 6.82974, 4.18545, 7.8691, 4.20879, 7.77509, 8.93208, 1.10502, 5.48298, - 1.66413, 8.08256, 1.57661, 4.19779, 9.47653, 4.41823, 7.86628, 7.94436, 3.71224, 7.95465, - 2.37637, 6.20771, 1.08107, 7.38138, 5.23577, 7.88133, 5.20653, 3.42101, 8.48523, 5.96192, - 1.63073, 5.25228, 7.68488, 2.7276, 5.1788, 3.07327, 5.57423, 2.87711, 1.44374, 5.66976, - 2.55051, 4.56682, 1.96629, 5.58829, 1.91922, 3.59846, 3.08583, 9.70901, 3.50487, 3.1026, - 1.82401, 6.1306, 4.76134, 4.31059, 8.31695, 3.60784, 7.45652, 6.51653, 4.84219, 7.76686, - 4.85031, 4.85544, 4.25714, 2.38005, 9.43471, 9.24769, 8.03763, 6.54696, 1.32399, 6.88891, - 2.16793, 3.64924, 4.24733, 3.47181, 1.66572, 2.36923, 2.45457, 9.44841, 4.34021, 1.45016, - 7.6686, 3.68812, 2.83922, 9.83581, 9.03719, 7.83414, 6.86009, 1.35715, 8.32489, 7.86316, - 5.09754, 5.78644, 1.98402, 2.31429, 5.5791, 2.94085, 9.24799, 5.15937, 2.19041, 7.87817, - 2.9146, 1.66833, 1.85877, 2.45985, 4.20817, 1.85777, 2.28937, 9.37912, 6.18926, 8.55681, - 6.60963, 3.92066, 7.5521, 5.70463, 7.6313, 2.48866, 7.18352, 4.8413, 7.55702, 7.80702, - 4.5785, 9.3268, 2.83159, 1.07202, 9.33716, 3.6506, 2.50256, 1.21691, 5.06801, 8.27505, - 4.31539, 6.48286, 1.31363, 4.1912, 1.70668, 7.23867, 1.11441, 5.13591, 9.65186, 4.00767, - 5.24875, 1.94852, 5.52768, 8.97121, 5.8094, 3.53329, 4.19126, 9.06652, 3.1734, 1.21496, - 9.69154, 4.86971, 4.1166, 6.19361, 2.13874, 9.55039, 3.8225, 9.57548, 2.96554, 3.2383, - 8.77422, 3.11741, 8.3359, 5.89508, 2.72134, 6.29956, 1.43323, 1.14286, 1.4474, 4.59474, - 6.19214, 8.80766, 8.07546, 3.29232, 1.74029, 2.4198, 2.88544, 4.75644, 4.12921, 7.29896, - 7.27759, 1.67252, 1.32823, 8.1046, 9.10476, 1.04197, 3.37783, 5.2064, 4.23835, 3.16196, - 1.20852, 5.78501, 2.17175, 6.05313, 2.51048, 4.78967, 7.16219, 3.4651, 1.09, 2.9788, - 1.28761, 9.41385, 8.03883, 5.65835, 1.14816, 3.6892, 5.86648, 8.73895, 2.66603, 1.75192, - 1.39845, 4.99427, 1.17387, 1.60329, 8.30594, 6.72662, 7.95565, 7.35114, 3.1439, 1.39976, - 3.53095, 8.78581, 1.65811, 6.94299, 2.68641, 5.70058, 9.13491, 5.27637, 8.6232, 8.54902, - 2.25352, 5.86274, 5.20377, 2.96815, 4.96745, 5.3225, 3.99956, 1.08021, 5.54918, 7.05833, - 1.49913, 2.41822, 6.44593, 3.87301, 9.01465, 8.11336, 2.95749, 2.80188, 7.12396, 2.40595, - 5.59325, 9.89258, 2.30223, 1.4347, 9.09158, 7.43797, 3.79295, 4.53646, 1.72705, 4.16909, - 1.00912, 6.62167, 2.80244, 6.626, 3.89307, 1.42586, 7.51028, 7.83327, 4.65674, 7.33902, - 6.26823, 9.72608, 3.73491, 3.8238, 3.03815, 7.05101, 8.0103, 5.61396, 6.53738, 1.41095, - 5.0149, 9.71211, 4.23604, 5.98629, 4.70219, 9.69442, 2.82752, 9.93544, 6.9328, 8.2817, - 5.12336, 8.98577, 5.80541, 6.19552, 9.25748, 3.82732, 7.53525, 8.24712, 5.32057, 5.38817, - 8.57269, 5.99975, 3.42893, 5.38068, 3.48261, 3.02851, 6.82079, 9.2902, 2.80427, 8.91868, - 5.19227, 7.52482, 3.72584, 5.40107, 2.83307, 1.79755, 2.49121, 5.52697, 8.08823, 9.13242, - 2.97572, 7.64318, 3.32023, 6.07788, 2.19187, 4.34879, 1.7457, 5.55154, 7.24966, 5.1128, - 4.25147, 8.34407, 1.4123, 4.49045, 5.12671, 7.62159, 9.18673, 3.49665, 8.35992, 6.90684, - 1.10152, 7.61818, 6.43145, 7.12017, 6.25564, 6.16169, 4.24916, 9.6283, 9.88249, 4.48422, - 8.52562, 9.83928, 6.26818, 7.03839, 1.77631, 9.92305, 8.0155, 9.94928, 6.88321, 1.33685, - 7.4718, 7.19305, 6.47932, 1.9559, 3.52616, 7.98593, 9.0115, 5.59539, 7.44137, 1.70001, - 6.53774, 8.54023, 7.26405, 5.99553, 8.75071, 7.70789, 3.38094, 9.99792, 6.16359, 6.75153, - 5.4073, 9.00437, 8.87059, 8.63011, 6.82951, 6.27021, 3.53425, 9.92489, 8.19695, 5.51473, - 7.95084, 2.11852, 9.28916, 1.40353, 3.05744, 8.58238, 3.75014, 5.35889, 6.85048, 2.29549, - 3.75218, 8.98228, 8.98158, 5.63695, 3.40379, 8.92309, 5.48185, 4.00095, 9.05227, 2.84035, - 8.37644, 8.54954, 5.70516, 2.45744, 9.54079, 1.53504, 8.9785, 6.1691, 4.40962, 10}, - std::vector{ - 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, - 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, - 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, - 7.03475, 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, - 6.61627, 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 10}, + 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, 8.6168, + 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, 8.0055, 7.44373, + 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, 7.03475, 6.33759, 7.04489, + 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, 6.61627, 6.94572, 3.68646, 5.01521, + 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 2.07541, 5.72319, 1.75261, 9.25175, 9.19404, 3.69037, + 6.2595, 6.09321, 6.52544, 9.60882, 3.34881, 3.07914, 5.80104, 9.54944, 5.43754, 5.8654, 7.88937, + 1.40811, 2.2597, 8.13163, 1.26821, 8.94813, 5.86709, 5.03182, 9.02922, 4.39826, 5.84582, 6.87069, + 4.25135, 6.13908, 6.74053, 2.13683, 7.21184, 6.82974, 4.18545, 7.8691, 4.20879, 7.77509, 8.93208, + 1.10502, 5.48298, 1.66413, 8.08256, 1.57661, 4.19779, 9.47653, 4.41823, 7.86628, 7.94436, 3.71224, + 7.95465, 2.37637, 6.20771, 1.08107, 7.38138, 5.23577, 7.88133, 5.20653, 3.42101, 8.48523, 5.96192, + 1.63073, 5.25228, 7.68488, 2.7276, 5.1788, 3.07327, 5.57423, 2.87711, 1.44374, 5.66976, 2.55051, + 4.56682, 1.96629, 5.58829, 1.91922, 3.59846, 3.08583, 9.70901, 3.50487, 3.1026, 1.82401, 6.1306, + 4.76134, 4.31059, 8.31695, 3.60784, 7.45652, 6.51653, 4.84219, 7.76686, 4.85031, 4.85544, 4.25714, + 2.38005, 9.43471, 9.24769, 8.03763, 6.54696, 1.32399, 6.88891, 2.16793, 3.64924, 4.24733, 3.47181, + 1.66572, 2.36923, 2.45457, 9.44841, 4.34021, 1.45016, 7.6686, 3.68812, 2.83922, 9.83581, 9.03719, + 7.83414, 6.86009, 1.35715, 8.32489, 7.86316, 5.09754, 5.78644, 1.98402, 2.31429, 5.5791, 2.94085, + 9.24799, 5.15937, 2.19041, 7.87817, 2.9146, 1.66833, 1.85877, 2.45985, 4.20817, 1.85777, 2.28937, + 9.37912, 6.18926, 8.55681, 6.60963, 3.92066, 7.5521, 5.70463, 7.6313, 2.48866, 7.18352, 4.8413, + 7.55702, 7.80702, 4.5785, 9.3268, 2.83159, 1.07202, 9.33716, 3.6506, 2.50256, 1.21691, 5.06801, + 8.27505, 4.31539, 6.48286, 1.31363, 4.1912, 1.70668, 7.23867, 1.11441, 5.13591, 9.65186, 4.00767, + 5.24875, 1.94852, 5.52768, 8.97121, 5.8094, 3.53329, 4.19126, 9.06652, 3.1734, 1.21496, 9.69154, + 4.86971, 4.1166, 6.19361, 2.13874, 9.55039, 3.8225, 9.57548, 2.96554, 3.2383, 8.77422, 3.11741, + 8.3359, 5.89508, 2.72134, 6.29956, 1.43323, 1.14286, 1.4474, 4.59474, 6.19214, 8.80766, 8.07546, + 3.29232, 1.74029, 2.4198, 2.88544, 4.75644, 4.12921, 7.29896, 7.27759, 1.67252, 1.32823, 8.1046, + 9.10476, 1.04197, 3.37783, 5.2064, 4.23835, 3.16196, 1.20852, 5.78501, 2.17175, 6.05313, 2.51048, + 4.78967, 7.16219, 3.4651, 1.09, 2.9788, 1.28761, 9.41385, 8.03883, 5.65835, 1.14816, 3.6892, + 5.86648, 8.73895, 2.66603, 1.75192, 1.39845, 4.99427, 1.17387, 1.60329, 8.30594, 6.72662, 7.95565, + 7.35114, 3.1439, 1.39976, 3.53095, 8.78581, 1.65811, 6.94299, 2.68641, 5.70058, 9.13491, 5.27637, + 8.6232, 8.54902, 2.25352, 5.86274, 5.20377, 2.96815, 4.96745, 5.3225, 3.99956, 1.08021, 5.54918, + 7.05833, 1.49913, 2.41822, 6.44593, 3.87301, 9.01465, 8.11336, 2.95749, 2.80188, 7.12396, 2.40595, + 5.59325, 9.89258, 2.30223, 1.4347, 9.09158, 7.43797, 3.79295, 4.53646, 1.72705, 4.16909, 1.00912, + 6.62167, 2.80244, 6.626, 3.89307, 1.42586, 7.51028, 7.83327, 4.65674, 7.33902, 6.26823, 9.72608, + 3.73491, 3.8238, 3.03815, 7.05101, 8.0103, 5.61396, 6.53738, 1.41095, 5.0149, 9.71211, 4.23604, + 5.98629, 4.70219, 9.69442, 2.82752, 9.93544, 6.9328, 8.2817, 5.12336, 8.98577, 5.80541, 6.19552, + 9.25748, 3.82732, 7.53525, 8.24712, 5.32057, 5.38817, 8.57269, 5.99975, 3.42893, 5.38068, 3.48261, + 3.02851, 6.82079, 9.2902, 2.80427, 8.91868, 5.19227, 7.52482, 3.72584, 5.40107, 2.83307, 1.79755, + 2.49121, 5.52697, 8.08823, 9.13242, 2.97572, 7.64318, 3.32023, 6.07788, 2.19187, 4.34879, 1.7457, + 5.55154, 7.24966, 5.1128, 4.25147, 8.34407, 1.4123, 4.49045, 5.12671, 7.62159, 9.18673, 3.49665, + 8.35992, 6.90684, 1.10152, 7.61818, 6.43145, 7.12017, 6.25564, 6.16169, 4.24916, 9.6283, 9.88249, + 4.48422, 8.52562, 9.83928, 6.26818, 7.03839, 1.77631, 9.92305, 8.0155, 9.94928, 6.88321, 1.33685, + 7.4718, 7.19305, 6.47932, 1.9559, 3.52616, 7.98593, 9.0115, 5.59539, 7.44137, 1.70001, 6.53774, + 8.54023, 7.26405, 5.99553, 8.75071, 7.70789, 3.38094, 9.99792, 6.16359, 6.75153, 5.4073, 9.00437, + 8.87059, 8.63011, 6.82951, 6.27021, 3.53425, 9.92489, 8.19695, 5.51473, 7.95084, 2.11852, 9.28916, + 1.40353, 3.05744, 8.58238, 3.75014, 5.35889, 6.85048, 2.29549, 3.75218, 8.98228, 8.98158, 5.63695, + 3.40379, 8.92309, 5.48185, 4.00095, 9.05227, 2.84035, 8.37644, 8.54954, 5.70516, 2.45744, 9.54079, + 1.53504, 8.9785, 6.1691, 4.40962, 10}, + std::vector{1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, + 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, + 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, + 7.03475, 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, + 6.61627, 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 10}, std::vector{10, 10, 10, 10, 10}, std::vector{ - 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, - 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, - 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, - 7.03475, 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, - 6.61627, 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 2.07541, - 5.72319, 1.75261, 9.25175, 9.19404, 3.69037, 6.2595, 6.09321, 6.52544, 9.60882, 3.34881, - 3.07914, 5.80104, 9.54944, 5.43754, 5.8654, 7.88937, 1.40811, 2.2597, 8.13163, 1.26821, - 8.94813, 5.86709, 5.03182, 9.02922, 4.39826, 5.84582, 6.87069, 4.25135, 6.13908, 6.74053, - 2.13683, 7.21184, 6.82974, 4.18545, 7.8691, 4.20879, 7.77509, 8.93208, 1.10502, 5.48298, - 1.66413, 8.08256, 1.57661, 4.19779, 9.47653, 4.41823, 7.86628, 7.94436, 3.71224, 7.95465, - 2.37637, 6.20771, 1.08107, 7.38138, 5.23577, 7.88133, 5.20653, 3.42101, 8.48523, 5.96192, - 1.63073, 5.25228, 7.68488, 2.7276, 5.1788, 3.07327, 5.57423, 2.87711, 1.44374, 5.66976, - 2.55051, 4.56682, 1.96629, 5.58829, 1.91922, 3.59846, 3.08583, 9.70901, 3.50487, 3.1026, - 1.82401, 6.1306, 4.76134, 4.31059, 8.31695, 3.60784, 7.45652, 6.51653, 4.84219, 7.76686, - 4.85031, 4.85544, 4.25714, 2.38005, 9.43471, 9.24769, 8.03763, 6.54696, 1.32399, 6.88891, - 2.16793, 3.64924, 4.24733, 3.47181, 1.66572, 2.36923, 2.45457, 9.44841, 4.34021, 1.45016, - 7.6686, 3.68812, 2.83922, 9.83581, 9.03719, 7.83414, 6.86009, 1.35715, 8.32489, 7.86316, - 5.09754, 5.78644, 1.98402, 2.31429, 5.5791, 2.94085, 9.24799, 5.15937, 2.19041, 7.87817, - 2.9146, 1.66833, 1.85877, 2.45985, 4.20817, 1.85777, 2.28937, 9.37912, 6.18926, 8.55681, - 6.60963, 3.92066, 7.5521, 5.70463, 7.6313, 2.48866, 7.18352, 4.8413, 7.55702, 7.80702, - 4.5785, 9.3268, 2.83159, 1.07202, 9.33716, 3.6506, 2.50256, 1.21691, 5.06801, 8.27505, - 4.31539, 6.48286, 1.31363, 4.1912, 1.70668, 7.23867, 1.11441, 5.13591, 9.65186, 4.00767, - 5.24875, 1.94852, 5.52768, 8.97121, 5.8094, 3.53329, 4.19126, 9.06652, 3.1734, 1.21496, - 9.69154, 4.86971, 4.1166, 6.19361, 2.13874, 9.55039, 3.8225, 9.57548, 2.96554, 3.2383, - 8.77422, 3.11741, 8.3359, 5.89508, 2.72134, 6.29956, 1.43323, 1.14286, 1.4474, 4.59474, - 6.19214, 8.80766, 8.07546, 3.29232, 1.74029, 2.4198, 2.88544, 4.75644, 4.12921, 7.29896, - 7.27759, 1.67252, 1.32823, 8.1046, 9.10476, 1.04197, 3.37783, 5.2064, 4.23835, 3.16196, - 1.20852, 5.78501, 2.17175, 6.05313, 2.51048, 4.78967, 7.16219, 3.4651, 1.09, 2.9788, - 1.28761, 9.41385, 8.03883, 5.65835, 1.14816, 3.6892, 5.86648, 8.73895, 2.66603, 1.75192, - 1.39845, 4.99427, 1.17387, 1.60329, 8.30594, 6.72662, 7.95565, 7.35114, 3.1439, 10}, + 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, 8.6168, + 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, 8.0055, 7.44373, + 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, 7.03475, 6.33759, 7.04489, + 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, 6.61627, 6.94572, 3.68646, 5.01521, + 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 2.07541, 5.72319, 1.75261, 9.25175, 9.19404, 3.69037, + 6.2595, 6.09321, 6.52544, 9.60882, 3.34881, 3.07914, 5.80104, 9.54944, 5.43754, 5.8654, 7.88937, + 1.40811, 2.2597, 8.13163, 1.26821, 8.94813, 5.86709, 5.03182, 9.02922, 4.39826, 5.84582, 6.87069, + 4.25135, 6.13908, 6.74053, 2.13683, 7.21184, 6.82974, 4.18545, 7.8691, 4.20879, 7.77509, 8.93208, + 1.10502, 5.48298, 1.66413, 8.08256, 1.57661, 4.19779, 9.47653, 4.41823, 7.86628, 7.94436, 3.71224, + 7.95465, 2.37637, 6.20771, 1.08107, 7.38138, 5.23577, 7.88133, 5.20653, 3.42101, 8.48523, 5.96192, + 1.63073, 5.25228, 7.68488, 2.7276, 5.1788, 3.07327, 5.57423, 2.87711, 1.44374, 5.66976, 2.55051, + 4.56682, 1.96629, 5.58829, 1.91922, 3.59846, 3.08583, 9.70901, 3.50487, 3.1026, 1.82401, 6.1306, + 4.76134, 4.31059, 8.31695, 3.60784, 7.45652, 6.51653, 4.84219, 7.76686, 4.85031, 4.85544, 4.25714, + 2.38005, 9.43471, 9.24769, 8.03763, 6.54696, 1.32399, 6.88891, 2.16793, 3.64924, 4.24733, 3.47181, + 1.66572, 2.36923, 2.45457, 9.44841, 4.34021, 1.45016, 7.6686, 3.68812, 2.83922, 9.83581, 9.03719, + 7.83414, 6.86009, 1.35715, 8.32489, 7.86316, 5.09754, 5.78644, 1.98402, 2.31429, 5.5791, 2.94085, + 9.24799, 5.15937, 2.19041, 7.87817, 2.9146, 1.66833, 1.85877, 2.45985, 4.20817, 1.85777, 2.28937, + 9.37912, 6.18926, 8.55681, 6.60963, 3.92066, 7.5521, 5.70463, 7.6313, 2.48866, 7.18352, 4.8413, + 7.55702, 7.80702, 4.5785, 9.3268, 2.83159, 1.07202, 9.33716, 3.6506, 2.50256, 1.21691, 5.06801, + 8.27505, 4.31539, 6.48286, 1.31363, 4.1912, 1.70668, 7.23867, 1.11441, 5.13591, 9.65186, 4.00767, + 5.24875, 1.94852, 5.52768, 8.97121, 5.8094, 3.53329, 4.19126, 9.06652, 3.1734, 1.21496, 9.69154, + 4.86971, 4.1166, 6.19361, 2.13874, 9.55039, 3.8225, 9.57548, 2.96554, 3.2383, 8.77422, 3.11741, + 8.3359, 5.89508, 2.72134, 6.29956, 1.43323, 1.14286, 1.4474, 4.59474, 6.19214, 8.80766, 8.07546, + 3.29232, 1.74029, 2.4198, 2.88544, 4.75644, 4.12921, 7.29896, 7.27759, 1.67252, 1.32823, 8.1046, + 9.10476, 1.04197, 3.37783, 5.2064, 4.23835, 3.16196, 1.20852, 5.78501, 2.17175, 6.05313, 2.51048, + 4.78967, 7.16219, 3.4651, 1.09, 2.9788, 1.28761, 9.41385, 8.03883, 5.65835, 1.14816, 3.6892, + 5.86648, 8.73895, 2.66603, 1.75192, 1.39845, 4.99427, 1.17387, 1.60329, 8.30594, 6.72662, 7.95565, + 7.35114, 3.1439, 10}, std::vector{ - 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, - 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, - 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, - 7.03475, 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, - 6.61627, 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 2.07541, - 5.72319, 1.75261, 9.25175, 9.19404, 3.69037, 6.2595, 6.09321, 6.52544, 9.60882, 3.34881, - 3.07914, 5.80104, 9.54944, 5.43754, 5.8654, 7.88937, 1.40811, 2.2597, 8.13163, 1.26821, - 8.94813, 5.86709, 5.03182, 9.02922, 4.39826, 5.84582, 6.87069, 4.25135, 6.13908, 6.74053, - 2.13683, 7.21184, 6.82974, 4.18545, 7.8691, 4.20879, 7.77509, 8.93208, 1.10502, 5.48298, - 1.66413, 8.08256, 1.57661, 4.19779, 9.47653, 4.41823, 7.86628, 7.94436, 3.71224, 7.95465, - 2.37637, 6.20771, 1.08107, 7.38138, 5.23577, 7.88133, 5.20653, 3.42101, 8.48523, 5.96192, - 1.63073, 5.25228, 7.68488, 2.7276, 5.1788, 3.07327, 5.57423, 2.87711, 1.44374, 5.66976, - 2.55051, 4.56682, 1.96629, 5.58829, 1.91922, 3.59846, 3.08583, 9.70901, 3.50487, 3.1026, - 1.82401, 6.1306, 4.76134, 4.31059, 8.31695, 3.60784, 7.45652, 6.51653, 4.84219, 7.76686, - 4.85031, 4.85544, 4.25714, 2.38005, 9.43471, 9.24769, 8.03763, 6.54696, 1.32399, 6.88891, - 2.16793, 3.64924, 4.24733, 3.47181, 1.66572, 2.36923, 2.45457, 9.44841, 4.34021, 1.45016, - 7.6686, 3.68812, 2.83922, 9.83581, 9.03719, 7.83414, 6.86009, 1.35715, 8.32489, 7.86316, - 5.09754, 5.78644, 1.98402, 2.31429, 5.5791, 2.94085, 9.24799, 5.15937, 2.19041, 7.87817, - 2.9146, 1.66833, 1.85877, 2.45985, 4.20817, 1.85777, 2.28937, 9.37912, 6.18926, 8.55681, - 6.60963, 3.92066, 7.5521, 5.70463, 7.6313, 2.48866, 7.18352, 4.8413, 7.55702, 7.80702, - 4.5785, 9.3268, 2.83159, 1.07202, 9.33716, 3.6506, 2.50256, 1.21691, 5.06801, 8.27505, - 4.31539, 6.48286, 1.31363, 4.1912, 1.70668, 7.23867, 1.11441, 5.13591, 9.65186, 4.00767, - 5.24875, 1.94852, 5.52768, 8.97121, 5.8094, 3.53329, 4.19126, 9.06652, 3.1734, 1.21496, - 9.69154, 4.86971, 4.1166, 6.19361, 2.13874, 9.55039, 3.8225, 9.57548, 2.96554, 3.2383, - 8.77422, 3.11741, 8.3359, 5.89508, 2.72134, 6.29956, 1.43323, 1.14286, 1.4474, 4.59474, - 6.19214, 8.80766, 8.07546, 3.29232, 1.74029, 2.4198, 2.88544, 4.75644, 4.12921, 7.29896, - 7.27759, 1.67252, 1.32823, 8.1046, 9.10476, 1.04197, 3.37783, 5.2064, 4.23835, 3.16196, - 1.20852, 5.78501, 2.17175, 6.05313, 2.51048, 4.78967, 7.16219, 3.4651, 1.09, 2.9788, - 1.28761, 9.41385, 8.03883, 5.65835, 1.14816, 3.6892, 5.86648, 8.73895, 2.66603, 1.75192, - 1.39845, 4.99427, 1.17387, 1.60329, 8.30594, 6.72662, 7.95565, 7.35114, 3.1439, 10}, + 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, 8.6168, + 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, 8.0055, 7.44373, + 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, 7.03475, 6.33759, 7.04489, + 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, 6.61627, 6.94572, 3.68646, 5.01521, + 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 2.07541, 5.72319, 1.75261, 9.25175, 9.19404, 3.69037, + 6.2595, 6.09321, 6.52544, 9.60882, 3.34881, 3.07914, 5.80104, 9.54944, 5.43754, 5.8654, 7.88937, + 1.40811, 2.2597, 8.13163, 1.26821, 8.94813, 5.86709, 5.03182, 9.02922, 4.39826, 5.84582, 6.87069, + 4.25135, 6.13908, 6.74053, 2.13683, 7.21184, 6.82974, 4.18545, 7.8691, 4.20879, 7.77509, 8.93208, + 1.10502, 5.48298, 1.66413, 8.08256, 1.57661, 4.19779, 9.47653, 4.41823, 7.86628, 7.94436, 3.71224, + 7.95465, 2.37637, 6.20771, 1.08107, 7.38138, 5.23577, 7.88133, 5.20653, 3.42101, 8.48523, 5.96192, + 1.63073, 5.25228, 7.68488, 2.7276, 5.1788, 3.07327, 5.57423, 2.87711, 1.44374, 5.66976, 2.55051, + 4.56682, 1.96629, 5.58829, 1.91922, 3.59846, 3.08583, 9.70901, 3.50487, 3.1026, 1.82401, 6.1306, + 4.76134, 4.31059, 8.31695, 3.60784, 7.45652, 6.51653, 4.84219, 7.76686, 4.85031, 4.85544, 4.25714, + 2.38005, 9.43471, 9.24769, 8.03763, 6.54696, 1.32399, 6.88891, 2.16793, 3.64924, 4.24733, 3.47181, + 1.66572, 2.36923, 2.45457, 9.44841, 4.34021, 1.45016, 7.6686, 3.68812, 2.83922, 9.83581, 9.03719, + 7.83414, 6.86009, 1.35715, 8.32489, 7.86316, 5.09754, 5.78644, 1.98402, 2.31429, 5.5791, 2.94085, + 9.24799, 5.15937, 2.19041, 7.87817, 2.9146, 1.66833, 1.85877, 2.45985, 4.20817, 1.85777, 2.28937, + 9.37912, 6.18926, 8.55681, 6.60963, 3.92066, 7.5521, 5.70463, 7.6313, 2.48866, 7.18352, 4.8413, + 7.55702, 7.80702, 4.5785, 9.3268, 2.83159, 1.07202, 9.33716, 3.6506, 2.50256, 1.21691, 5.06801, + 8.27505, 4.31539, 6.48286, 1.31363, 4.1912, 1.70668, 7.23867, 1.11441, 5.13591, 9.65186, 4.00767, + 5.24875, 1.94852, 5.52768, 8.97121, 5.8094, 3.53329, 4.19126, 9.06652, 3.1734, 1.21496, 9.69154, + 4.86971, 4.1166, 6.19361, 2.13874, 9.55039, 3.8225, 9.57548, 2.96554, 3.2383, 8.77422, 3.11741, + 8.3359, 5.89508, 2.72134, 6.29956, 1.43323, 1.14286, 1.4474, 4.59474, 6.19214, 8.80766, 8.07546, + 3.29232, 1.74029, 2.4198, 2.88544, 4.75644, 4.12921, 7.29896, 7.27759, 1.67252, 1.32823, 8.1046, + 9.10476, 1.04197, 3.37783, 5.2064, 4.23835, 3.16196, 1.20852, 5.78501, 2.17175, 6.05313, 2.51048, + 4.78967, 7.16219, 3.4651, 1.09, 2.9788, 1.28761, 9.41385, 8.03883, 5.65835, 1.14816, 3.6892, + 5.86648, 8.73895, 2.66603, 1.75192, 1.39845, 4.99427, 1.17387, 1.60329, 8.30594, 6.72662, 7.95565, + 7.35114, 3.1439, 10}, + std::vector{1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, + 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, + 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 10}, std::vector{ - 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, - 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, - 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 10}, - std::vector{ - 0.868724, 6.86548, 6.47683, 1.63923, 6.87664, 2.28849, 3.25364, 3.2015, 4.89637, 6.49477, - 0.781008, 4.78797, 4.52828, 1.29585, 4.79543, 1.72968, 2.37458, 2.33974, 3.47223, 4.54026, - 0.722396, 3.3998, 3.22628, 1.06641, 3.40478, 1.35629, 1.7872, 1.76392, 2.52064, 3.23428, - 0.683233, 2.47224, 2.3563, 0.913096, 2.47557, 1.10679, 1.39472, 1.37917, 1.8848, 2.36164, - 0.657064, 1.85246, 1.77498, 0.810656, 1.85468, 0.94008, 1.13247, 1.12208, 1.45993, 1.77856, - 0.639579, 1.43833, 1.38656, 0.742207, 1.43981, 0.828687, 0.957241, 0.950296, 1.17605, 1.38895, - 0.627896, 1.16161, 1.12702, 0.69647, 1.1626, 0.754255, 0.840153, 0.835513, 0.986357, 1.12861, - 0.620089, 0.976709, 0.953597, 0.66591, 0.977373, 0.704521, 0.761917, 0.758816, 0.859608, 0.954663, - 0.614872, 0.853162, 0.837718, 0.645489, 0.853605, 0.671289, 0.70964, 0.707568, 0.774916, 0.838431, - 0.611387, 0.770609, 0.76029, 0.631845, 0.770905, 0.649083, 0.674709, 0.673325, 0.718326, 0.760766, - 5.95818, 2.75265, 4.02319, 3.53551, 2.24933, 4.08252, 6.36501, 3.61821, 3.45881, 6.51635, - 4.18172, 2.03983, 2.88879, 2.56292, 1.70351, 2.92843, 4.45356, 2.61818, 2.51167, 4.55468, - 2.99471, 1.56352, 2.13079, 1.91305, 1.3388, 2.15728, 3.17635, 1.94997, 1.87881, 3.24392, - 2.20156, 1.24526, 1.6243, 1.47881, 1.09511, 1.642, 2.32293, 1.50349, 1.45593, 2.36808, - 1.67159, 1.03261, 1.28588, 1.18866, 0.932274, 1.2977, 1.75269, 1.20515, 1.17337, 1.78286, - 1.31748, 0.890512, 1.05974, 0.994786, 0.823471, 1.06765, 1.37166, 1.0058, 0.984569, 1.39182, - 1.08086, 0.795566, 0.908644, 0.86524, 0.75077, 0.913924, 1.11707, 0.872601, 0.858414, 1.13054, - 0.922752, 0.732124, 0.807681, 0.778679, 0.702192, 0.81121, 0.946946, 0.783598, 0.774118, 0.955946, + 0.868724, 6.86548, 6.47683, 1.63923, 6.87664, 2.28849, 3.25364, 3.2015, 4.89637, 6.49477, + 0.781008, 4.78797, 4.52828, 1.29585, 4.79543, 1.72968, 2.37458, 2.33974, 3.47223, 4.54026, + 0.722396, 3.3998, 3.22628, 1.06641, 3.40478, 1.35629, 1.7872, 1.76392, 2.52064, 3.23428, + 0.683233, 2.47224, 2.3563, 0.913096, 2.47557, 1.10679, 1.39472, 1.37917, 1.8848, 2.36164, + 0.657064, 1.85246, 1.77498, 0.810656, 1.85468, 0.94008, 1.13247, 1.12208, 1.45993, 1.77856, + 0.639579, 1.43833, 1.38656, 0.742207, 1.43981, 0.828687, 0.957241, 0.950296, 1.17605, 1.38895, + 0.627896, 1.16161, 1.12702, 0.69647, 1.1626, 0.754255, 0.840153, 0.835513, 0.986357, 1.12861, + 0.620089, 0.976709, 0.953597, 0.66591, 0.977373, 0.704521, 0.761917, 0.758816, 0.859608, 0.954663, + 0.614872, 0.853162, 0.837718, 0.645489, 0.853605, 0.671289, 0.70964, 0.707568, 0.774916, 0.838431, + 0.611387, 0.770609, 0.76029, 0.631845, 0.770905, 0.649083, 0.674709, 0.673325, 0.718326, 0.760766, + 5.95818, 2.75265, 4.02319, 3.53551, 2.24933, 4.08252, 6.36501, 3.61821, 3.45881, 6.51635, + 4.18172, 2.03983, 2.88879, 2.56292, 1.70351, 2.92843, 4.45356, 2.61818, 2.51167, 4.55468, + 2.99471, 1.56352, 2.13079, 1.91305, 1.3388, 2.15728, 3.17635, 1.94997, 1.87881, 3.24392, + 2.20156, 1.24526, 1.6243, 1.47881, 1.09511, 1.642, 2.32293, 1.50349, 1.45593, 2.36808, + 1.67159, 1.03261, 1.28588, 1.18866, 0.932274, 1.2977, 1.75269, 1.20515, 1.17337, 1.78286, + 1.31748, 0.890512, 1.05974, 0.994786, 0.823471, 1.06765, 1.37166, 1.0058, 0.984569, 1.39182, + 1.08086, 0.795566, 0.908644, 0.86524, 0.75077, 0.913924, 1.11707, 0.872601, 0.858414, 1.13054, + 0.922752, 0.732124, 0.807681, 0.778679, 0.702192, 0.81121, 0.946946, 0.783598, 0.774118, 0.955946, 0.817109, 0.689733, 0.740219, 0.720841, 0.669733, 0.742577, 0.833275, 0.724127, 0.717793, 0.839288, - 0.746518, 0.661408, 0.695142, 0.682194, 0.648044, 0.696717, 0.75732, 0.684389, 0.680157, 0.761339, - 5.54972, 5.17435, 5.69626, 1.4268, 3.98473, 6.07069, 5.85496, 5.8577, 2.51076, 1.22499, - 3.90879, 3.65797, 4.00671, 1.15391, 2.86309, 4.2569, 4.11275, 4.11458, 1.8782, 1.01906, - 2.81234, 2.64475, 2.87777, 0.971563, 2.11362, 3.04494, 2.94862, 2.94985, 1.45553, 0.881462, - 2.07971, 1.96773, 2.12343, 0.849723, 1.61283, 2.23513, 2.17077, 2.17159, 1.1731, 0.789519, - 1.59017, 1.51535, 1.61938, 0.768311, 1.27821, 1.69402, 1.65102, 1.65157, 0.984388, 0.728083, - 1.26307, 1.21307, 1.28259, 0.713913, 1.05462, 1.33246, 1.30373, 1.30409, 0.858293, 0.687033, - 1.0445, 1.0111, 1.05755, 0.677564, 0.905221, 1.09087, 1.07167, 1.07192, 0.774037, 0.659604, + 0.746518, 0.661408, 0.695142, 0.682194, 0.648044, 0.696717, 0.75732, 0.684389, 0.680157, 0.761339, + 5.54972, 5.17435, 5.69626, 1.4268, 3.98473, 6.07069, 5.85496, 5.8577, 2.51076, 1.22499, + 3.90879, 3.65797, 4.00671, 1.15391, 2.86309, 4.2569, 4.11275, 4.11458, 1.8782, 1.01906, + 2.81234, 2.64475, 2.87777, 0.971563, 2.11362, 3.04494, 2.94862, 2.94985, 1.45553, 0.881462, + 2.07971, 1.96773, 2.12343, 0.849723, 1.61283, 2.23513, 2.17077, 2.17159, 1.1731, 0.789519, + 1.59017, 1.51535, 1.61938, 0.768311, 1.27821, 1.69402, 1.65102, 1.65157, 0.984388, 0.728083, + 1.26307, 1.21307, 1.28259, 0.713913, 1.05462, 1.33246, 1.30373, 1.30409, 0.858293, 0.687033, + 1.0445, 1.0111, 1.05755, 0.677564, 0.905221, 1.09087, 1.07167, 1.07192, 0.774037, 0.659604, 0.898462, 0.876139, 0.907177, 0.653277, 0.805394, 0.929444, 0.916614, 0.916777, 0.717739, 0.641276, 0.800878, 0.785962, 0.806701, 0.637048, 0.738691, 0.821579, 0.813007, 0.813116, 0.680121, 0.629029, 0.735673, 0.725707, 0.739564, 0.626204, 0.694121, 0.749506, 0.743778, 0.743851, 0.654985, 0.620846, - 4.90107, 4.43524, 4.90784, 3.34509, 2.05673, 2.61047, 1.72339, 5.57933, 3.34961, 1.07422, - 3.47537, 3.16411, 3.4799, 2.43568, 1.57482, 1.94482, 1.35209, 3.92858, 2.4387, 0.918317, - 2.52274, 2.31475, 2.52576, 1.82803, 1.25281, 1.50004, 1.10398, 2.82557, 1.83005, 0.814145, - 1.8862, 1.74723, 1.88822, 1.422, 1.03765, 1.20285, 0.938205, 2.08854, 1.42335, 0.744538, - 1.46087, 1.36801, 1.46222, 1.1507, 0.893882, 1.00426, 0.827433, 1.59608, 1.1516, 0.698028, - 1.17667, 1.11463, 1.17758, 0.969422, 0.797818, 0.871573, 0.753417, 1.26702, 0.970024, 0.66695, - 0.986775, 0.945316, 0.987378, 0.848292, 0.733629, 0.782911, 0.703961, 1.04714, 0.848694, 0.646185, - 0.859888, 0.832185, 0.86029, 0.767355, 0.690738, 0.723668, 0.670915, 0.900223, 0.767624, 0.632309, + 4.90107, 4.43524, 4.90784, 3.34509, 2.05673, 2.61047, 1.72339, 5.57933, 3.34961, 1.07422, + 3.47537, 3.16411, 3.4799, 2.43568, 1.57482, 1.94482, 1.35209, 3.92858, 2.4387, 0.918317, + 2.52274, 2.31475, 2.52576, 1.82803, 1.25281, 1.50004, 1.10398, 2.82557, 1.83005, 0.814145, + 1.8862, 1.74723, 1.88822, 1.422, 1.03765, 1.20285, 0.938205, 2.08854, 1.42335, 0.744538, + 1.46087, 1.36801, 1.46222, 1.1507, 0.893882, 1.00426, 0.827433, 1.59608, 1.1516, 0.698028, + 1.17667, 1.11463, 1.17758, 0.969422, 0.797818, 0.871573, 0.753417, 1.26702, 0.970024, 0.66695, + 0.986775, 0.945316, 0.987378, 0.848292, 0.733629, 0.782911, 0.703961, 1.04714, 0.848694, 0.646185, + 0.859888, 0.832185, 0.86029, 0.767355, 0.690738, 0.723668, 0.670915, 0.900223, 0.767624, 0.632309, 0.775103, 0.756592, 0.775372, 0.713274, 0.662079, 0.684083, 0.648834, 0.802055, 0.713453, 0.623038, - 0.718451, 0.706082, 0.718631, 0.677138, 0.64293, 0.657632, 0.634079, 0.73646, 0.677257, 0.616843, - 4.62145, 4.84158, 2.66378, 3.55164, 2.20451, 1.30991, 3.69058, 1.44707, 6.30131, 6.88241, - 3.28853, 3.43562, 1.98044, 2.5737, 1.67356, 1.0758, 2.66654, 1.16745, 4.411, 4.79928, - 2.39789, 2.49618, 1.52384, 1.92025, 1.31879, 0.919376, 1.98228, 0.980615, 3.14791, 3.40736, - 1.80278, 1.86845, 1.21875, 1.48362, 1.08174, 0.814853, 1.52507, 0.855772, 2.30393, 2.47729, - 1.40513, 1.44901, 1.01489, 1.19188, 0.92334, 0.745011, 1.21957, 0.772353, 1.74, 1.85583, - 1.13943, 1.16875, 0.878674, 0.996934, 0.817501, 0.698344, 1.01544, 0.716613, 1.36318, 1.44058, - 0.961889, 0.981481, 0.787656, 0.866675, 0.746781, 0.667161, 0.879041, 0.679369, 1.1114, 1.16312, - 0.843259, 0.85635, 0.726839, 0.779639, 0.699526, 0.646326, 0.787901, 0.654483, 0.943158, 0.977716, + 0.718451, 0.706082, 0.718631, 0.677138, 0.64293, 0.657632, 0.634079, 0.73646, 0.677257, 0.616843, + 4.62145, 4.84158, 2.66378, 3.55164, 2.20451, 1.30991, 3.69058, 1.44707, 6.30131, 6.88241, + 3.28853, 3.43562, 1.98044, 2.5737, 1.67356, 1.0758, 2.66654, 1.16745, 4.411, 4.79928, + 2.39789, 2.49618, 1.52384, 1.92025, 1.31879, 0.919376, 1.98228, 0.980615, 3.14791, 3.40736, + 1.80278, 1.86845, 1.21875, 1.48362, 1.08174, 0.814853, 1.52507, 0.855772, 2.30393, 2.47729, + 1.40513, 1.44901, 1.01489, 1.19188, 0.92334, 0.745011, 1.21957, 0.772353, 1.74, 1.85583, + 1.13943, 1.16875, 0.878674, 0.996934, 0.817501, 0.698344, 1.01544, 0.716613, 1.36318, 1.44058, + 0.961889, 0.981481, 0.787656, 0.866675, 0.746781, 0.667161, 0.879041, 0.679369, 1.1114, 1.16312, + 0.843259, 0.85635, 0.726839, 0.779639, 0.699526, 0.646326, 0.787901, 0.654483, 0.943158, 0.977716, 0.763992, 0.772739, 0.686201, 0.721482, 0.667952, 0.632404, 0.727003, 0.637854, 0.830743, 0.853834, 0.711027, 0.716871, 0.659048, 0.682622, 0.646854, 0.623101, 0.686311, 0.626743, 0.755629, 0.771058}, - std::vector{ - 0.611387, 0.770609, 0.76029, 0.631845, 0.770905, 0.649083, 0.674709, 0.673325, 0.718326, 0.760766, - 0.746518, 0.661408, 0.695142, 0.682194, 0.648044, 0.696717, 0.75732, 0.684389, 0.680157, 0.761339, - 0.735673, 0.725707, 0.739564, 0.626204, 0.694121, 0.749506, 0.743778, 0.743851, 0.654985, 0.620846, - 0.718451, 0.706082, 0.718631, 0.677138, 0.64293, 0.657632, 0.634079, 0.73646, 0.677257, 0.616843, - 0.711027, 0.716871, 0.659048, 0.682622, 0.646854, 0.623101, 0.686311, 0.626743, 0.755629, 0.771058}), + std::vector{0.611387, 0.770609, 0.76029, 0.631845, 0.770905, 0.649083, 0.674709, 0.673325, 0.718326, + 0.760766, 0.746518, 0.661408, 0.695142, 0.682194, 0.648044, 0.696717, 0.75732, 0.684389, + 0.680157, 0.761339, 0.735673, 0.725707, 0.739564, 0.626204, 0.694121, 0.749506, 0.743778, + 0.743851, 0.654985, 0.620846, 0.718451, 0.706082, 0.718631, 0.677138, 0.64293, 0.657632, + 0.634079, 0.73646, 0.677257, 0.616843, 0.711027, 0.716871, 0.659048, 0.682622, 0.646854, + 0.623101, 0.686311, 0.626743, 0.755629, 0.771058}), GRUSequenceParams( - 5, 10, 10, 10, - 0.7f, false, op::RecurrentSequenceDirection::REVERSE, + 5, + 10, + 10, + 10, + 0.7f, + false, + op::RecurrentSequenceDirection::REVERSE, ET, std::vector{ - 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, - 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, - 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, - 7.03475, 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, - 6.61627, 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 2.07541, - 5.72319, 1.75261, 9.25175, 9.19404, 3.69037, 6.2595, 6.09321, 6.52544, 9.60882, 3.34881, - 3.07914, 5.80104, 9.54944, 5.43754, 5.8654, 7.88937, 1.40811, 2.2597, 8.13163, 1.26821, - 8.94813, 5.86709, 5.03182, 9.02922, 4.39826, 5.84582, 6.87069, 4.25135, 6.13908, 6.74053, - 2.13683, 7.21184, 6.82974, 4.18545, 7.8691, 4.20879, 7.77509, 8.93208, 1.10502, 5.48298, - 1.66413, 8.08256, 1.57661, 4.19779, 9.47653, 4.41823, 7.86628, 7.94436, 3.71224, 7.95465, - 2.37637, 6.20771, 1.08107, 7.38138, 5.23577, 7.88133, 5.20653, 3.42101, 8.48523, 5.96192, - 1.63073, 5.25228, 7.68488, 2.7276, 5.1788, 3.07327, 5.57423, 2.87711, 1.44374, 5.66976, - 2.55051, 4.56682, 1.96629, 5.58829, 1.91922, 3.59846, 3.08583, 9.70901, 3.50487, 3.1026, - 1.82401, 6.1306, 4.76134, 4.31059, 8.31695, 3.60784, 7.45652, 6.51653, 4.84219, 7.76686, - 4.85031, 4.85544, 4.25714, 2.38005, 9.43471, 9.24769, 8.03763, 6.54696, 1.32399, 6.88891, - 2.16793, 3.64924, 4.24733, 3.47181, 1.66572, 2.36923, 2.45457, 9.44841, 4.34021, 1.45016, - 7.6686, 3.68812, 2.83922, 9.83581, 9.03719, 7.83414, 6.86009, 1.35715, 8.32489, 7.86316, - 5.09754, 5.78644, 1.98402, 2.31429, 5.5791, 2.94085, 9.24799, 5.15937, 2.19041, 7.87817, - 2.9146, 1.66833, 1.85877, 2.45985, 4.20817, 1.85777, 2.28937, 9.37912, 6.18926, 8.55681, - 6.60963, 3.92066, 7.5521, 5.70463, 7.6313, 2.48866, 7.18352, 4.8413, 7.55702, 7.80702, - 4.5785, 9.3268, 2.83159, 1.07202, 9.33716, 3.6506, 2.50256, 1.21691, 5.06801, 8.27505, - 4.31539, 6.48286, 1.31363, 4.1912, 1.70668, 7.23867, 1.11441, 5.13591, 9.65186, 4.00767, - 5.24875, 1.94852, 5.52768, 8.97121, 5.8094, 3.53329, 4.19126, 9.06652, 3.1734, 1.21496, - 9.69154, 4.86971, 4.1166, 6.19361, 2.13874, 9.55039, 3.8225, 9.57548, 2.96554, 3.2383, - 8.77422, 3.11741, 8.3359, 5.89508, 2.72134, 6.29956, 1.43323, 1.14286, 1.4474, 4.59474, - 6.19214, 8.80766, 8.07546, 3.29232, 1.74029, 2.4198, 2.88544, 4.75644, 4.12921, 7.29896, - 7.27759, 1.67252, 1.32823, 8.1046, 9.10476, 1.04197, 3.37783, 5.2064, 4.23835, 3.16196, - 1.20852, 5.78501, 2.17175, 6.05313, 2.51048, 4.78967, 7.16219, 3.4651, 1.09, 2.9788, - 1.28761, 9.41385, 8.03883, 5.65835, 1.14816, 3.6892, 5.86648, 8.73895, 2.66603, 1.75192, - 1.39845, 4.99427, 1.17387, 1.60329, 8.30594, 6.72662, 7.95565, 7.35114, 3.1439, 1.39976, - 3.53095, 8.78581, 1.65811, 6.94299, 2.68641, 5.70058, 9.13491, 5.27637, 8.6232, 8.54902, - 2.25352, 5.86274, 5.20377, 2.96815, 4.96745, 5.3225, 3.99956, 1.08021, 5.54918, 7.05833, - 1.49913, 2.41822, 6.44593, 3.87301, 9.01465, 8.11336, 2.95749, 2.80188, 7.12396, 2.40595, - 5.59325, 9.89258, 2.30223, 1.4347, 9.09158, 7.43797, 3.79295, 4.53646, 1.72705, 4.16909, - 1.00912, 6.62167, 2.80244, 6.626, 3.89307, 1.42586, 7.51028, 7.83327, 4.65674, 7.33902, - 6.26823, 9.72608, 3.73491, 3.8238, 3.03815, 7.05101, 8.0103, 5.61396, 6.53738, 1.41095, - 5.0149, 9.71211, 4.23604, 5.98629, 4.70219, 9.69442, 2.82752, 9.93544, 6.9328, 8.2817, - 5.12336, 8.98577, 5.80541, 6.19552, 9.25748, 3.82732, 7.53525, 8.24712, 5.32057, 5.38817, - 8.57269, 5.99975, 3.42893, 5.38068, 3.48261, 3.02851, 6.82079, 9.2902, 2.80427, 8.91868, - 5.19227, 7.52482, 3.72584, 5.40107, 2.83307, 1.79755, 2.49121, 5.52697, 8.08823, 9.13242, - 2.97572, 7.64318, 3.32023, 6.07788, 2.19187, 4.34879, 1.7457, 5.55154, 7.24966, 5.1128, - 4.25147, 8.34407, 1.4123, 4.49045, 5.12671, 7.62159, 9.18673, 3.49665, 8.35992, 6.90684, - 1.10152, 7.61818, 6.43145, 7.12017, 6.25564, 6.16169, 4.24916, 9.6283, 9.88249, 4.48422, - 8.52562, 9.83928, 6.26818, 7.03839, 1.77631, 9.92305, 8.0155, 9.94928, 6.88321, 1.33685, - 7.4718, 7.19305, 6.47932, 1.9559, 3.52616, 7.98593, 9.0115, 5.59539, 7.44137, 1.70001, - 6.53774, 8.54023, 7.26405, 5.99553, 8.75071, 7.70789, 3.38094, 9.99792, 6.16359, 6.75153, - 5.4073, 9.00437, 8.87059, 8.63011, 6.82951, 6.27021, 3.53425, 9.92489, 8.19695, 5.51473, - 7.95084, 2.11852, 9.28916, 1.40353, 3.05744, 8.58238, 3.75014, 5.35889, 6.85048, 2.29549, - 3.75218, 8.98228, 8.98158, 5.63695, 3.40379, 8.92309, 5.48185, 4.00095, 9.05227, 2.84035, - 8.37644, 8.54954, 5.70516, 2.45744, 9.54079, 1.53504, 8.9785, 6.1691, 4.40962, 10}, - std::vector{ - 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, - 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, - 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, - 7.03475, 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, - 6.61627, 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 10}, + 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, 8.6168, + 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, 8.0055, 7.44373, + 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, 7.03475, 6.33759, 7.04489, + 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, 6.61627, 6.94572, 3.68646, 5.01521, + 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 2.07541, 5.72319, 1.75261, 9.25175, 9.19404, 3.69037, + 6.2595, 6.09321, 6.52544, 9.60882, 3.34881, 3.07914, 5.80104, 9.54944, 5.43754, 5.8654, 7.88937, + 1.40811, 2.2597, 8.13163, 1.26821, 8.94813, 5.86709, 5.03182, 9.02922, 4.39826, 5.84582, 6.87069, + 4.25135, 6.13908, 6.74053, 2.13683, 7.21184, 6.82974, 4.18545, 7.8691, 4.20879, 7.77509, 8.93208, + 1.10502, 5.48298, 1.66413, 8.08256, 1.57661, 4.19779, 9.47653, 4.41823, 7.86628, 7.94436, 3.71224, + 7.95465, 2.37637, 6.20771, 1.08107, 7.38138, 5.23577, 7.88133, 5.20653, 3.42101, 8.48523, 5.96192, + 1.63073, 5.25228, 7.68488, 2.7276, 5.1788, 3.07327, 5.57423, 2.87711, 1.44374, 5.66976, 2.55051, + 4.56682, 1.96629, 5.58829, 1.91922, 3.59846, 3.08583, 9.70901, 3.50487, 3.1026, 1.82401, 6.1306, + 4.76134, 4.31059, 8.31695, 3.60784, 7.45652, 6.51653, 4.84219, 7.76686, 4.85031, 4.85544, 4.25714, + 2.38005, 9.43471, 9.24769, 8.03763, 6.54696, 1.32399, 6.88891, 2.16793, 3.64924, 4.24733, 3.47181, + 1.66572, 2.36923, 2.45457, 9.44841, 4.34021, 1.45016, 7.6686, 3.68812, 2.83922, 9.83581, 9.03719, + 7.83414, 6.86009, 1.35715, 8.32489, 7.86316, 5.09754, 5.78644, 1.98402, 2.31429, 5.5791, 2.94085, + 9.24799, 5.15937, 2.19041, 7.87817, 2.9146, 1.66833, 1.85877, 2.45985, 4.20817, 1.85777, 2.28937, + 9.37912, 6.18926, 8.55681, 6.60963, 3.92066, 7.5521, 5.70463, 7.6313, 2.48866, 7.18352, 4.8413, + 7.55702, 7.80702, 4.5785, 9.3268, 2.83159, 1.07202, 9.33716, 3.6506, 2.50256, 1.21691, 5.06801, + 8.27505, 4.31539, 6.48286, 1.31363, 4.1912, 1.70668, 7.23867, 1.11441, 5.13591, 9.65186, 4.00767, + 5.24875, 1.94852, 5.52768, 8.97121, 5.8094, 3.53329, 4.19126, 9.06652, 3.1734, 1.21496, 9.69154, + 4.86971, 4.1166, 6.19361, 2.13874, 9.55039, 3.8225, 9.57548, 2.96554, 3.2383, 8.77422, 3.11741, + 8.3359, 5.89508, 2.72134, 6.29956, 1.43323, 1.14286, 1.4474, 4.59474, 6.19214, 8.80766, 8.07546, + 3.29232, 1.74029, 2.4198, 2.88544, 4.75644, 4.12921, 7.29896, 7.27759, 1.67252, 1.32823, 8.1046, + 9.10476, 1.04197, 3.37783, 5.2064, 4.23835, 3.16196, 1.20852, 5.78501, 2.17175, 6.05313, 2.51048, + 4.78967, 7.16219, 3.4651, 1.09, 2.9788, 1.28761, 9.41385, 8.03883, 5.65835, 1.14816, 3.6892, + 5.86648, 8.73895, 2.66603, 1.75192, 1.39845, 4.99427, 1.17387, 1.60329, 8.30594, 6.72662, 7.95565, + 7.35114, 3.1439, 1.39976, 3.53095, 8.78581, 1.65811, 6.94299, 2.68641, 5.70058, 9.13491, 5.27637, + 8.6232, 8.54902, 2.25352, 5.86274, 5.20377, 2.96815, 4.96745, 5.3225, 3.99956, 1.08021, 5.54918, + 7.05833, 1.49913, 2.41822, 6.44593, 3.87301, 9.01465, 8.11336, 2.95749, 2.80188, 7.12396, 2.40595, + 5.59325, 9.89258, 2.30223, 1.4347, 9.09158, 7.43797, 3.79295, 4.53646, 1.72705, 4.16909, 1.00912, + 6.62167, 2.80244, 6.626, 3.89307, 1.42586, 7.51028, 7.83327, 4.65674, 7.33902, 6.26823, 9.72608, + 3.73491, 3.8238, 3.03815, 7.05101, 8.0103, 5.61396, 6.53738, 1.41095, 5.0149, 9.71211, 4.23604, + 5.98629, 4.70219, 9.69442, 2.82752, 9.93544, 6.9328, 8.2817, 5.12336, 8.98577, 5.80541, 6.19552, + 9.25748, 3.82732, 7.53525, 8.24712, 5.32057, 5.38817, 8.57269, 5.99975, 3.42893, 5.38068, 3.48261, + 3.02851, 6.82079, 9.2902, 2.80427, 8.91868, 5.19227, 7.52482, 3.72584, 5.40107, 2.83307, 1.79755, + 2.49121, 5.52697, 8.08823, 9.13242, 2.97572, 7.64318, 3.32023, 6.07788, 2.19187, 4.34879, 1.7457, + 5.55154, 7.24966, 5.1128, 4.25147, 8.34407, 1.4123, 4.49045, 5.12671, 7.62159, 9.18673, 3.49665, + 8.35992, 6.90684, 1.10152, 7.61818, 6.43145, 7.12017, 6.25564, 6.16169, 4.24916, 9.6283, 9.88249, + 4.48422, 8.52562, 9.83928, 6.26818, 7.03839, 1.77631, 9.92305, 8.0155, 9.94928, 6.88321, 1.33685, + 7.4718, 7.19305, 6.47932, 1.9559, 3.52616, 7.98593, 9.0115, 5.59539, 7.44137, 1.70001, 6.53774, + 8.54023, 7.26405, 5.99553, 8.75071, 7.70789, 3.38094, 9.99792, 6.16359, 6.75153, 5.4073, 9.00437, + 8.87059, 8.63011, 6.82951, 6.27021, 3.53425, 9.92489, 8.19695, 5.51473, 7.95084, 2.11852, 9.28916, + 1.40353, 3.05744, 8.58238, 3.75014, 5.35889, 6.85048, 2.29549, 3.75218, 8.98228, 8.98158, 5.63695, + 3.40379, 8.92309, 5.48185, 4.00095, 9.05227, 2.84035, 8.37644, 8.54954, 5.70516, 2.45744, 9.54079, + 1.53504, 8.9785, 6.1691, 4.40962, 10}, + std::vector{1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, + 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, + 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, + 7.03475, 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, + 6.61627, 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 10}, std::vector{10, 10, 10, 10, 10}, std::vector{ - 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, - 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, - 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, - 7.03475, 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, - 6.61627, 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 2.07541, - 5.72319, 1.75261, 9.25175, 9.19404, 3.69037, 6.2595, 6.09321, 6.52544, 9.60882, 3.34881, - 3.07914, 5.80104, 9.54944, 5.43754, 5.8654, 7.88937, 1.40811, 2.2597, 8.13163, 1.26821, - 8.94813, 5.86709, 5.03182, 9.02922, 4.39826, 5.84582, 6.87069, 4.25135, 6.13908, 6.74053, - 2.13683, 7.21184, 6.82974, 4.18545, 7.8691, 4.20879, 7.77509, 8.93208, 1.10502, 5.48298, - 1.66413, 8.08256, 1.57661, 4.19779, 9.47653, 4.41823, 7.86628, 7.94436, 3.71224, 7.95465, - 2.37637, 6.20771, 1.08107, 7.38138, 5.23577, 7.88133, 5.20653, 3.42101, 8.48523, 5.96192, - 1.63073, 5.25228, 7.68488, 2.7276, 5.1788, 3.07327, 5.57423, 2.87711, 1.44374, 5.66976, - 2.55051, 4.56682, 1.96629, 5.58829, 1.91922, 3.59846, 3.08583, 9.70901, 3.50487, 3.1026, - 1.82401, 6.1306, 4.76134, 4.31059, 8.31695, 3.60784, 7.45652, 6.51653, 4.84219, 7.76686, - 4.85031, 4.85544, 4.25714, 2.38005, 9.43471, 9.24769, 8.03763, 6.54696, 1.32399, 6.88891, - 2.16793, 3.64924, 4.24733, 3.47181, 1.66572, 2.36923, 2.45457, 9.44841, 4.34021, 1.45016, - 7.6686, 3.68812, 2.83922, 9.83581, 9.03719, 7.83414, 6.86009, 1.35715, 8.32489, 7.86316, - 5.09754, 5.78644, 1.98402, 2.31429, 5.5791, 2.94085, 9.24799, 5.15937, 2.19041, 7.87817, - 2.9146, 1.66833, 1.85877, 2.45985, 4.20817, 1.85777, 2.28937, 9.37912, 6.18926, 8.55681, - 6.60963, 3.92066, 7.5521, 5.70463, 7.6313, 2.48866, 7.18352, 4.8413, 7.55702, 7.80702, - 4.5785, 9.3268, 2.83159, 1.07202, 9.33716, 3.6506, 2.50256, 1.21691, 5.06801, 8.27505, - 4.31539, 6.48286, 1.31363, 4.1912, 1.70668, 7.23867, 1.11441, 5.13591, 9.65186, 4.00767, - 5.24875, 1.94852, 5.52768, 8.97121, 5.8094, 3.53329, 4.19126, 9.06652, 3.1734, 1.21496, - 9.69154, 4.86971, 4.1166, 6.19361, 2.13874, 9.55039, 3.8225, 9.57548, 2.96554, 3.2383, - 8.77422, 3.11741, 8.3359, 5.89508, 2.72134, 6.29956, 1.43323, 1.14286, 1.4474, 4.59474, - 6.19214, 8.80766, 8.07546, 3.29232, 1.74029, 2.4198, 2.88544, 4.75644, 4.12921, 7.29896, - 7.27759, 1.67252, 1.32823, 8.1046, 9.10476, 1.04197, 3.37783, 5.2064, 4.23835, 3.16196, - 1.20852, 5.78501, 2.17175, 6.05313, 2.51048, 4.78967, 7.16219, 3.4651, 1.09, 2.9788, - 1.28761, 9.41385, 8.03883, 5.65835, 1.14816, 3.6892, 5.86648, 8.73895, 2.66603, 1.75192, - 1.39845, 4.99427, 1.17387, 1.60329, 8.30594, 6.72662, 7.95565, 7.35114, 3.1439, 10}, + 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, 8.6168, + 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, 8.0055, 7.44373, + 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, 7.03475, 6.33759, 7.04489, + 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, 6.61627, 6.94572, 3.68646, 5.01521, + 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 2.07541, 5.72319, 1.75261, 9.25175, 9.19404, 3.69037, + 6.2595, 6.09321, 6.52544, 9.60882, 3.34881, 3.07914, 5.80104, 9.54944, 5.43754, 5.8654, 7.88937, + 1.40811, 2.2597, 8.13163, 1.26821, 8.94813, 5.86709, 5.03182, 9.02922, 4.39826, 5.84582, 6.87069, + 4.25135, 6.13908, 6.74053, 2.13683, 7.21184, 6.82974, 4.18545, 7.8691, 4.20879, 7.77509, 8.93208, + 1.10502, 5.48298, 1.66413, 8.08256, 1.57661, 4.19779, 9.47653, 4.41823, 7.86628, 7.94436, 3.71224, + 7.95465, 2.37637, 6.20771, 1.08107, 7.38138, 5.23577, 7.88133, 5.20653, 3.42101, 8.48523, 5.96192, + 1.63073, 5.25228, 7.68488, 2.7276, 5.1788, 3.07327, 5.57423, 2.87711, 1.44374, 5.66976, 2.55051, + 4.56682, 1.96629, 5.58829, 1.91922, 3.59846, 3.08583, 9.70901, 3.50487, 3.1026, 1.82401, 6.1306, + 4.76134, 4.31059, 8.31695, 3.60784, 7.45652, 6.51653, 4.84219, 7.76686, 4.85031, 4.85544, 4.25714, + 2.38005, 9.43471, 9.24769, 8.03763, 6.54696, 1.32399, 6.88891, 2.16793, 3.64924, 4.24733, 3.47181, + 1.66572, 2.36923, 2.45457, 9.44841, 4.34021, 1.45016, 7.6686, 3.68812, 2.83922, 9.83581, 9.03719, + 7.83414, 6.86009, 1.35715, 8.32489, 7.86316, 5.09754, 5.78644, 1.98402, 2.31429, 5.5791, 2.94085, + 9.24799, 5.15937, 2.19041, 7.87817, 2.9146, 1.66833, 1.85877, 2.45985, 4.20817, 1.85777, 2.28937, + 9.37912, 6.18926, 8.55681, 6.60963, 3.92066, 7.5521, 5.70463, 7.6313, 2.48866, 7.18352, 4.8413, + 7.55702, 7.80702, 4.5785, 9.3268, 2.83159, 1.07202, 9.33716, 3.6506, 2.50256, 1.21691, 5.06801, + 8.27505, 4.31539, 6.48286, 1.31363, 4.1912, 1.70668, 7.23867, 1.11441, 5.13591, 9.65186, 4.00767, + 5.24875, 1.94852, 5.52768, 8.97121, 5.8094, 3.53329, 4.19126, 9.06652, 3.1734, 1.21496, 9.69154, + 4.86971, 4.1166, 6.19361, 2.13874, 9.55039, 3.8225, 9.57548, 2.96554, 3.2383, 8.77422, 3.11741, + 8.3359, 5.89508, 2.72134, 6.29956, 1.43323, 1.14286, 1.4474, 4.59474, 6.19214, 8.80766, 8.07546, + 3.29232, 1.74029, 2.4198, 2.88544, 4.75644, 4.12921, 7.29896, 7.27759, 1.67252, 1.32823, 8.1046, + 9.10476, 1.04197, 3.37783, 5.2064, 4.23835, 3.16196, 1.20852, 5.78501, 2.17175, 6.05313, 2.51048, + 4.78967, 7.16219, 3.4651, 1.09, 2.9788, 1.28761, 9.41385, 8.03883, 5.65835, 1.14816, 3.6892, + 5.86648, 8.73895, 2.66603, 1.75192, 1.39845, 4.99427, 1.17387, 1.60329, 8.30594, 6.72662, 7.95565, + 7.35114, 3.1439, 10}, std::vector{ - 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, - 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, - 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, - 7.03475, 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, - 6.61627, 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 2.07541, - 5.72319, 1.75261, 9.25175, 9.19404, 3.69037, 6.2595, 6.09321, 6.52544, 9.60882, 3.34881, - 3.07914, 5.80104, 9.54944, 5.43754, 5.8654, 7.88937, 1.40811, 2.2597, 8.13163, 1.26821, - 8.94813, 5.86709, 5.03182, 9.02922, 4.39826, 5.84582, 6.87069, 4.25135, 6.13908, 6.74053, - 2.13683, 7.21184, 6.82974, 4.18545, 7.8691, 4.20879, 7.77509, 8.93208, 1.10502, 5.48298, - 1.66413, 8.08256, 1.57661, 4.19779, 9.47653, 4.41823, 7.86628, 7.94436, 3.71224, 7.95465, - 2.37637, 6.20771, 1.08107, 7.38138, 5.23577, 7.88133, 5.20653, 3.42101, 8.48523, 5.96192, - 1.63073, 5.25228, 7.68488, 2.7276, 5.1788, 3.07327, 5.57423, 2.87711, 1.44374, 5.66976, - 2.55051, 4.56682, 1.96629, 5.58829, 1.91922, 3.59846, 3.08583, 9.70901, 3.50487, 3.1026, - 1.82401, 6.1306, 4.76134, 4.31059, 8.31695, 3.60784, 7.45652, 6.51653, 4.84219, 7.76686, - 4.85031, 4.85544, 4.25714, 2.38005, 9.43471, 9.24769, 8.03763, 6.54696, 1.32399, 6.88891, - 2.16793, 3.64924, 4.24733, 3.47181, 1.66572, 2.36923, 2.45457, 9.44841, 4.34021, 1.45016, - 7.6686, 3.68812, 2.83922, 9.83581, 9.03719, 7.83414, 6.86009, 1.35715, 8.32489, 7.86316, - 5.09754, 5.78644, 1.98402, 2.31429, 5.5791, 2.94085, 9.24799, 5.15937, 2.19041, 7.87817, - 2.9146, 1.66833, 1.85877, 2.45985, 4.20817, 1.85777, 2.28937, 9.37912, 6.18926, 8.55681, - 6.60963, 3.92066, 7.5521, 5.70463, 7.6313, 2.48866, 7.18352, 4.8413, 7.55702, 7.80702, - 4.5785, 9.3268, 2.83159, 1.07202, 9.33716, 3.6506, 2.50256, 1.21691, 5.06801, 8.27505, - 4.31539, 6.48286, 1.31363, 4.1912, 1.70668, 7.23867, 1.11441, 5.13591, 9.65186, 4.00767, - 5.24875, 1.94852, 5.52768, 8.97121, 5.8094, 3.53329, 4.19126, 9.06652, 3.1734, 1.21496, - 9.69154, 4.86971, 4.1166, 6.19361, 2.13874, 9.55039, 3.8225, 9.57548, 2.96554, 3.2383, - 8.77422, 3.11741, 8.3359, 5.89508, 2.72134, 6.29956, 1.43323, 1.14286, 1.4474, 4.59474, - 6.19214, 8.80766, 8.07546, 3.29232, 1.74029, 2.4198, 2.88544, 4.75644, 4.12921, 7.29896, - 7.27759, 1.67252, 1.32823, 8.1046, 9.10476, 1.04197, 3.37783, 5.2064, 4.23835, 3.16196, - 1.20852, 5.78501, 2.17175, 6.05313, 2.51048, 4.78967, 7.16219, 3.4651, 1.09, 2.9788, - 1.28761, 9.41385, 8.03883, 5.65835, 1.14816, 3.6892, 5.86648, 8.73895, 2.66603, 1.75192, - 1.39845, 4.99427, 1.17387, 1.60329, 8.30594, 6.72662, 7.95565, 7.35114, 3.1439, 10}, + 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, 8.6168, + 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, 8.0055, 7.44373, + 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, 7.03475, 6.33759, 7.04489, + 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, 6.61627, 6.94572, 3.68646, 5.01521, + 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 2.07541, 5.72319, 1.75261, 9.25175, 9.19404, 3.69037, + 6.2595, 6.09321, 6.52544, 9.60882, 3.34881, 3.07914, 5.80104, 9.54944, 5.43754, 5.8654, 7.88937, + 1.40811, 2.2597, 8.13163, 1.26821, 8.94813, 5.86709, 5.03182, 9.02922, 4.39826, 5.84582, 6.87069, + 4.25135, 6.13908, 6.74053, 2.13683, 7.21184, 6.82974, 4.18545, 7.8691, 4.20879, 7.77509, 8.93208, + 1.10502, 5.48298, 1.66413, 8.08256, 1.57661, 4.19779, 9.47653, 4.41823, 7.86628, 7.94436, 3.71224, + 7.95465, 2.37637, 6.20771, 1.08107, 7.38138, 5.23577, 7.88133, 5.20653, 3.42101, 8.48523, 5.96192, + 1.63073, 5.25228, 7.68488, 2.7276, 5.1788, 3.07327, 5.57423, 2.87711, 1.44374, 5.66976, 2.55051, + 4.56682, 1.96629, 5.58829, 1.91922, 3.59846, 3.08583, 9.70901, 3.50487, 3.1026, 1.82401, 6.1306, + 4.76134, 4.31059, 8.31695, 3.60784, 7.45652, 6.51653, 4.84219, 7.76686, 4.85031, 4.85544, 4.25714, + 2.38005, 9.43471, 9.24769, 8.03763, 6.54696, 1.32399, 6.88891, 2.16793, 3.64924, 4.24733, 3.47181, + 1.66572, 2.36923, 2.45457, 9.44841, 4.34021, 1.45016, 7.6686, 3.68812, 2.83922, 9.83581, 9.03719, + 7.83414, 6.86009, 1.35715, 8.32489, 7.86316, 5.09754, 5.78644, 1.98402, 2.31429, 5.5791, 2.94085, + 9.24799, 5.15937, 2.19041, 7.87817, 2.9146, 1.66833, 1.85877, 2.45985, 4.20817, 1.85777, 2.28937, + 9.37912, 6.18926, 8.55681, 6.60963, 3.92066, 7.5521, 5.70463, 7.6313, 2.48866, 7.18352, 4.8413, + 7.55702, 7.80702, 4.5785, 9.3268, 2.83159, 1.07202, 9.33716, 3.6506, 2.50256, 1.21691, 5.06801, + 8.27505, 4.31539, 6.48286, 1.31363, 4.1912, 1.70668, 7.23867, 1.11441, 5.13591, 9.65186, 4.00767, + 5.24875, 1.94852, 5.52768, 8.97121, 5.8094, 3.53329, 4.19126, 9.06652, 3.1734, 1.21496, 9.69154, + 4.86971, 4.1166, 6.19361, 2.13874, 9.55039, 3.8225, 9.57548, 2.96554, 3.2383, 8.77422, 3.11741, + 8.3359, 5.89508, 2.72134, 6.29956, 1.43323, 1.14286, 1.4474, 4.59474, 6.19214, 8.80766, 8.07546, + 3.29232, 1.74029, 2.4198, 2.88544, 4.75644, 4.12921, 7.29896, 7.27759, 1.67252, 1.32823, 8.1046, + 9.10476, 1.04197, 3.37783, 5.2064, 4.23835, 3.16196, 1.20852, 5.78501, 2.17175, 6.05313, 2.51048, + 4.78967, 7.16219, 3.4651, 1.09, 2.9788, 1.28761, 9.41385, 8.03883, 5.65835, 1.14816, 3.6892, + 5.86648, 8.73895, 2.66603, 1.75192, 1.39845, 4.99427, 1.17387, 1.60329, 8.30594, 6.72662, 7.95565, + 7.35114, 3.1439, 10}, + std::vector{1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, + 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, + 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 10}, std::vector{ - 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, - 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, - 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 10}, - std::vector{ - 0.611387, 0.770609, 0.76029, 0.631845, 0.770905, 0.649083, 0.674709, 0.673325, 0.718326, 0.760766, - 0.614872, 0.853162, 0.837718, 0.645489, 0.853605, 0.671289, 0.70964, 0.707568, 0.774916, 0.838431, - 0.620089, 0.976709, 0.953597, 0.66591, 0.977373, 0.704521, 0.761917, 0.758816, 0.859608, 0.954663, - 0.627896, 1.16161, 1.12702, 0.69647, 1.1626, 0.754255, 0.840153, 0.835513, 0.986357, 1.12861, - 0.639579, 1.43833, 1.38656, 0.742207, 1.43981, 0.828687, 0.957241, 0.950296, 1.17605, 1.38895, - 0.657064, 1.85246, 1.77498, 0.810656, 1.85468, 0.94008, 1.13247, 1.12208, 1.45993, 1.77856, - 0.683233, 2.47224, 2.3563, 0.913096, 2.47557, 1.10679, 1.39472, 1.37917, 1.8848, 2.36164, - 0.722396, 3.3998, 3.22628, 1.06641, 3.40478, 1.35629, 1.7872, 1.76392, 2.52064, 3.23428, - 0.781008, 4.78797, 4.52828, 1.29585, 4.79543, 1.72968, 2.37458, 2.33974, 3.47223, 4.54026, - 0.868724, 6.86548, 6.47683, 1.63923, 6.87664, 2.28849, 3.25364, 3.2015, 4.89637, 6.49477, - 0.746518, 0.661408, 0.695142, 0.682194, 0.648044, 0.696717, 0.75732, 0.684389, 0.680157, 0.761339, + 0.611387, 0.770609, 0.76029, 0.631845, 0.770905, 0.649083, 0.674709, 0.673325, 0.718326, 0.760766, + 0.614872, 0.853162, 0.837718, 0.645489, 0.853605, 0.671289, 0.70964, 0.707568, 0.774916, 0.838431, + 0.620089, 0.976709, 0.953597, 0.66591, 0.977373, 0.704521, 0.761917, 0.758816, 0.859608, 0.954663, + 0.627896, 1.16161, 1.12702, 0.69647, 1.1626, 0.754255, 0.840153, 0.835513, 0.986357, 1.12861, + 0.639579, 1.43833, 1.38656, 0.742207, 1.43981, 0.828687, 0.957241, 0.950296, 1.17605, 1.38895, + 0.657064, 1.85246, 1.77498, 0.810656, 1.85468, 0.94008, 1.13247, 1.12208, 1.45993, 1.77856, + 0.683233, 2.47224, 2.3563, 0.913096, 2.47557, 1.10679, 1.39472, 1.37917, 1.8848, 2.36164, + 0.722396, 3.3998, 3.22628, 1.06641, 3.40478, 1.35629, 1.7872, 1.76392, 2.52064, 3.23428, + 0.781008, 4.78797, 4.52828, 1.29585, 4.79543, 1.72968, 2.37458, 2.33974, 3.47223, 4.54026, + 0.868724, 6.86548, 6.47683, 1.63923, 6.87664, 2.28849, 3.25364, 3.2015, 4.89637, 6.49477, + 0.746518, 0.661408, 0.695142, 0.682194, 0.648044, 0.696717, 0.75732, 0.684389, 0.680157, 0.761339, 0.817109, 0.689733, 0.740219, 0.720841, 0.669733, 0.742577, 0.833275, 0.724127, 0.717793, 0.839288, - 0.922752, 0.732124, 0.807681, 0.778679, 0.702192, 0.81121, 0.946946, 0.783598, 0.774118, 0.955946, - 1.08086, 0.795566, 0.908644, 0.86524, 0.75077, 0.913924, 1.11707, 0.872601, 0.858414, 1.13054, - 1.31748, 0.890512, 1.05974, 0.994786, 0.823471, 1.06765, 1.37166, 1.0058, 0.984569, 1.39182, - 1.67159, 1.03261, 1.28588, 1.18866, 0.932274, 1.2977, 1.75269, 1.20515, 1.17337, 1.78286, - 2.20156, 1.24526, 1.6243, 1.47881, 1.09511, 1.642, 2.32293, 1.50349, 1.45593, 2.36808, - 2.99471, 1.56352, 2.13079, 1.91305, 1.3388, 2.15728, 3.17635, 1.94997, 1.87881, 3.24392, - 4.18172, 2.03983, 2.88879, 2.56292, 1.70351, 2.92843, 4.45356, 2.61818, 2.51167, 4.55468, - 5.95818, 2.75265, 4.02319, 3.53551, 2.24933, 4.08252, 6.36501, 3.61821, 3.45881, 6.51635, + 0.922752, 0.732124, 0.807681, 0.778679, 0.702192, 0.81121, 0.946946, 0.783598, 0.774118, 0.955946, + 1.08086, 0.795566, 0.908644, 0.86524, 0.75077, 0.913924, 1.11707, 0.872601, 0.858414, 1.13054, + 1.31748, 0.890512, 1.05974, 0.994786, 0.823471, 1.06765, 1.37166, 1.0058, 0.984569, 1.39182, + 1.67159, 1.03261, 1.28588, 1.18866, 0.932274, 1.2977, 1.75269, 1.20515, 1.17337, 1.78286, + 2.20156, 1.24526, 1.6243, 1.47881, 1.09511, 1.642, 2.32293, 1.50349, 1.45593, 2.36808, + 2.99471, 1.56352, 2.13079, 1.91305, 1.3388, 2.15728, 3.17635, 1.94997, 1.87881, 3.24392, + 4.18172, 2.03983, 2.88879, 2.56292, 1.70351, 2.92843, 4.45356, 2.61818, 2.51167, 4.55468, + 5.95818, 2.75265, 4.02319, 3.53551, 2.24933, 4.08252, 6.36501, 3.61821, 3.45881, 6.51635, 0.735673, 0.725707, 0.739564, 0.626204, 0.694121, 0.749506, 0.743778, 0.743851, 0.654985, 0.620846, 0.800878, 0.785962, 0.806701, 0.637048, 0.738691, 0.821579, 0.813007, 0.813116, 0.680121, 0.629029, 0.898462, 0.876139, 0.907177, 0.653277, 0.805394, 0.929444, 0.916614, 0.916777, 0.717739, 0.641276, - 1.0445, 1.0111, 1.05755, 0.677564, 0.905221, 1.09087, 1.07167, 1.07192, 0.774037, 0.659604, - 1.26307, 1.21307, 1.28259, 0.713913, 1.05462, 1.33246, 1.30373, 1.30409, 0.858293, 0.687033, - 1.59017, 1.51535, 1.61938, 0.768311, 1.27821, 1.69402, 1.65102, 1.65157, 0.984388, 0.728083, - 2.07971, 1.96773, 2.12343, 0.849723, 1.61283, 2.23513, 2.17077, 2.17159, 1.1731, 0.789519, - 2.81234, 2.64475, 2.87777, 0.971563, 2.11362, 3.04494, 2.94862, 2.94985, 1.45553, 0.881462, - 3.90879, 3.65797, 4.00671, 1.15391, 2.86309, 4.2569, 4.11275, 4.11458, 1.8782, 1.01906, - 5.54972, 5.17435, 5.69626, 1.4268, 3.98473, 6.07069, 5.85496, 5.8577, 2.51076, 1.22499, - 0.718451, 0.706082, 0.718631, 0.677138, 0.64293, 0.657632, 0.634079, 0.73646, 0.677257, 0.616843, + 1.0445, 1.0111, 1.05755, 0.677564, 0.905221, 1.09087, 1.07167, 1.07192, 0.774037, 0.659604, + 1.26307, 1.21307, 1.28259, 0.713913, 1.05462, 1.33246, 1.30373, 1.30409, 0.858293, 0.687033, + 1.59017, 1.51535, 1.61938, 0.768311, 1.27821, 1.69402, 1.65102, 1.65157, 0.984388, 0.728083, + 2.07971, 1.96773, 2.12343, 0.849723, 1.61283, 2.23513, 2.17077, 2.17159, 1.1731, 0.789519, + 2.81234, 2.64475, 2.87777, 0.971563, 2.11362, 3.04494, 2.94862, 2.94985, 1.45553, 0.881462, + 3.90879, 3.65797, 4.00671, 1.15391, 2.86309, 4.2569, 4.11275, 4.11458, 1.8782, 1.01906, + 5.54972, 5.17435, 5.69626, 1.4268, 3.98473, 6.07069, 5.85496, 5.8577, 2.51076, 1.22499, + 0.718451, 0.706082, 0.718631, 0.677138, 0.64293, 0.657632, 0.634079, 0.73646, 0.677257, 0.616843, 0.775103, 0.756592, 0.775372, 0.713274, 0.662079, 0.684083, 0.648834, 0.802055, 0.713453, 0.623038, - 0.859888, 0.832185, 0.86029, 0.767355, 0.690738, 0.723668, 0.670915, 0.900223, 0.767624, 0.632309, - 0.986775, 0.945316, 0.987378, 0.848292, 0.733629, 0.782911, 0.703961, 1.04714, 0.848694, 0.646185, - 1.17667, 1.11463, 1.17758, 0.969422, 0.797818, 0.871573, 0.753417, 1.26702, 0.970024, 0.66695, - 1.46087, 1.36801, 1.46222, 1.1507, 0.893882, 1.00426, 0.827433, 1.59608, 1.1516, 0.698028, - 1.8862, 1.74723, 1.88822, 1.422, 1.03765, 1.20285, 0.938205, 2.08854, 1.42335, 0.744538, - 2.52274, 2.31475, 2.52576, 1.82803, 1.25281, 1.50004, 1.10398, 2.82557, 1.83005, 0.814145, - 3.47537, 3.16411, 3.4799, 2.43568, 1.57482, 1.94482, 1.35209, 3.92858, 2.4387, 0.918317, - 4.90107, 4.43524, 4.90784, 3.34509, 2.05673, 2.61047, 1.72339, 5.57933, 3.34961, 1.07422, + 0.859888, 0.832185, 0.86029, 0.767355, 0.690738, 0.723668, 0.670915, 0.900223, 0.767624, 0.632309, + 0.986775, 0.945316, 0.987378, 0.848292, 0.733629, 0.782911, 0.703961, 1.04714, 0.848694, 0.646185, + 1.17667, 1.11463, 1.17758, 0.969422, 0.797818, 0.871573, 0.753417, 1.26702, 0.970024, 0.66695, + 1.46087, 1.36801, 1.46222, 1.1507, 0.893882, 1.00426, 0.827433, 1.59608, 1.1516, 0.698028, + 1.8862, 1.74723, 1.88822, 1.422, 1.03765, 1.20285, 0.938205, 2.08854, 1.42335, 0.744538, + 2.52274, 2.31475, 2.52576, 1.82803, 1.25281, 1.50004, 1.10398, 2.82557, 1.83005, 0.814145, + 3.47537, 3.16411, 3.4799, 2.43568, 1.57482, 1.94482, 1.35209, 3.92858, 2.4387, 0.918317, + 4.90107, 4.43524, 4.90784, 3.34509, 2.05673, 2.61047, 1.72339, 5.57933, 3.34961, 1.07422, 0.711027, 0.716871, 0.659048, 0.682622, 0.646854, 0.623101, 0.686311, 0.626743, 0.755629, 0.771058, 0.763992, 0.772739, 0.686201, 0.721482, 0.667952, 0.632404, 0.727003, 0.637854, 0.830743, 0.853834, - 0.843259, 0.85635, 0.726839, 0.779639, 0.699526, 0.646326, 0.787901, 0.654483, 0.943158, 0.977716, - 0.961889, 0.981481, 0.787656, 0.866675, 0.746781, 0.667161, 0.879041, 0.679369, 1.1114, 1.16312, - 1.13943, 1.16875, 0.878674, 0.996934, 0.817501, 0.698344, 1.01544, 0.716613, 1.36318, 1.44058, - 1.40513, 1.44901, 1.01489, 1.19188, 0.92334, 0.745011, 1.21957, 0.772353, 1.74, 1.85583, - 1.80278, 1.86845, 1.21875, 1.48362, 1.08174, 0.814853, 1.52507, 0.855772, 2.30393, 2.47729, - 2.39789, 2.49618, 1.52384, 1.92025, 1.31879, 0.919376, 1.98228, 0.980615, 3.14791, 3.40736, - 3.28853, 3.43562, 1.98044, 2.5737, 1.67356, 1.0758, 2.66654, 1.16745, 4.411, 4.79928, - 4.62145, 4.84158, 2.66378, 3.55164, 2.20451, 1.30991, 3.69058, 1.44707, 6.30131, 6.88241}, - std::vector{ - 0.611387, 0.770609, 0.76029, 0.631845, 0.770905, 0.649083, 0.674709, 0.673325, 0.718326, 0.760766, - 0.746518, 0.661408, 0.695142, 0.682194, 0.648044, 0.696717, 0.75732, 0.684389, 0.680157, 0.761339, - 0.735673, 0.725707, 0.739564, 0.626204, 0.694121, 0.749506, 0.743778, 0.743851, 0.654985, 0.620846, - 0.718451, 0.706082, 0.718631, 0.677138, 0.64293, 0.657632, 0.634079, 0.73646, 0.677257, 0.616843, - 0.711027, 0.716871, 0.659048, 0.682622, 0.646854, 0.623101, 0.686311, 0.626743, 0.755629, 0.771058}), + 0.843259, 0.85635, 0.726839, 0.779639, 0.699526, 0.646326, 0.787901, 0.654483, 0.943158, 0.977716, + 0.961889, 0.981481, 0.787656, 0.866675, 0.746781, 0.667161, 0.879041, 0.679369, 1.1114, 1.16312, + 1.13943, 1.16875, 0.878674, 0.996934, 0.817501, 0.698344, 1.01544, 0.716613, 1.36318, 1.44058, + 1.40513, 1.44901, 1.01489, 1.19188, 0.92334, 0.745011, 1.21957, 0.772353, 1.74, 1.85583, + 1.80278, 1.86845, 1.21875, 1.48362, 1.08174, 0.814853, 1.52507, 0.855772, 2.30393, 2.47729, + 2.39789, 2.49618, 1.52384, 1.92025, 1.31879, 0.919376, 1.98228, 0.980615, 3.14791, 3.40736, + 3.28853, 3.43562, 1.98044, 2.5737, 1.67356, 1.0758, 2.66654, 1.16745, 4.411, 4.79928, + 4.62145, 4.84158, 2.66378, 3.55164, 2.20451, 1.30991, 3.69058, 1.44707, 6.30131, 6.88241}, + std::vector{0.611387, 0.770609, 0.76029, 0.631845, 0.770905, 0.649083, 0.674709, 0.673325, 0.718326, + 0.760766, 0.746518, 0.661408, 0.695142, 0.682194, 0.648044, 0.696717, 0.75732, 0.684389, + 0.680157, 0.761339, 0.735673, 0.725707, 0.739564, 0.626204, 0.694121, 0.749506, 0.743778, + 0.743851, 0.654985, 0.620846, 0.718451, 0.706082, 0.718631, 0.677138, 0.64293, 0.657632, + 0.634079, 0.73646, 0.677257, 0.616843, 0.711027, 0.716871, 0.659048, 0.682622, 0.646854, + 0.623101, 0.686311, 0.626743, 0.755629, 0.771058}), GRUSequenceParams( - 5, 10, 10, 5, - 0.f, true, op::RecurrentSequenceDirection::BIDIRECTIONAL, + 5, + 10, + 10, + 5, + 0.f, + true, + op::RecurrentSequenceDirection::BIDIRECTIONAL, ET, std::vector{ - 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, - 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, - 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, - 7.03475, 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, - 6.61627, 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 2.07541, - 5.72319, 1.75261, 9.25175, 9.19404, 3.69037, 6.2595, 6.09321, 6.52544, 9.60882, 3.34881, - 3.07914, 5.80104, 9.54944, 5.43754, 5.8654, 7.88937, 1.40811, 2.2597, 8.13163, 1.26821, - 8.94813, 5.86709, 5.03182, 9.02922, 4.39826, 5.84582, 6.87069, 4.25135, 6.13908, 6.74053, - 2.13683, 7.21184, 6.82974, 4.18545, 7.8691, 4.20879, 7.77509, 8.93208, 1.10502, 5.48298, - 1.66413, 8.08256, 1.57661, 4.19779, 9.47653, 4.41823, 7.86628, 7.94436, 3.71224, 7.95465, - 2.37637, 6.20771, 1.08107, 7.38138, 5.23577, 7.88133, 5.20653, 3.42101, 8.48523, 5.96192, - 1.63073, 5.25228, 7.68488, 2.7276, 5.1788, 3.07327, 5.57423, 2.87711, 1.44374, 5.66976, - 2.55051, 4.56682, 1.96629, 5.58829, 1.91922, 3.59846, 3.08583, 9.70901, 3.50487, 3.1026, - 1.82401, 6.1306, 4.76134, 4.31059, 8.31695, 3.60784, 7.45652, 6.51653, 4.84219, 7.76686, - 4.85031, 4.85544, 4.25714, 2.38005, 9.43471, 9.24769, 8.03763, 6.54696, 1.32399, 6.88891, - 2.16793, 3.64924, 4.24733, 3.47181, 1.66572, 2.36923, 2.45457, 9.44841, 4.34021, 1.45016, - 7.6686, 3.68812, 2.83922, 9.83581, 9.03719, 7.83414, 6.86009, 1.35715, 8.32489, 7.86316, - 5.09754, 5.78644, 1.98402, 2.31429, 5.5791, 2.94085, 9.24799, 5.15937, 2.19041, 7.87817, - 2.9146, 1.66833, 1.85877, 2.45985, 4.20817, 1.85777, 2.28937, 9.37912, 6.18926, 8.55681, - 6.60963, 3.92066, 7.5521, 5.70463, 7.6313, 2.48866, 7.18352, 4.8413, 7.55702, 7.80702, - 4.5785, 9.3268, 2.83159, 1.07202, 9.33716, 3.6506, 2.50256, 1.21691, 5.06801, 8.27505, - 4.31539, 6.48286, 1.31363, 4.1912, 1.70668, 7.23867, 1.11441, 5.13591, 9.65186, 4.00767, - 5.24875, 1.94852, 5.52768, 8.97121, 5.8094, 3.53329, 4.19126, 9.06652, 3.1734, 1.21496, - 9.69154, 4.86971, 4.1166, 6.19361, 2.13874, 9.55039, 3.8225, 9.57548, 2.96554, 3.2383, - 8.77422, 3.11741, 8.3359, 5.89508, 2.72134, 6.29956, 1.43323, 1.14286, 1.4474, 10}, - std::vector{ - 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, - 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, - 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, - 7.03475, 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, - 6.61627, 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 2.07541, - 5.72319, 1.75261, 9.25175, 9.19404, 3.69037, 6.2595, 6.09321, 6.52544, 9.60882, 3.34881, - 3.07914, 5.80104, 9.54944, 5.43754, 5.8654, 7.88937, 1.40811, 2.2597, 8.13163, 1.26821, - 8.94813, 5.86709, 5.03182, 9.02922, 4.39826, 5.84582, 6.87069, 4.25135, 6.13908, 6.74053, - 2.13683, 7.21184, 6.82974, 4.18545, 7.8691, 4.20879, 7.77509, 8.93208, 1.10502, 5.48298, - 1.66413, 8.08256, 1.57661, 4.19779, 9.47653, 4.41823, 7.86628, 7.94436, 3.71224, 10}, + 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, 8.6168, + 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, 8.0055, 7.44373, + 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, 7.03475, 6.33759, 7.04489, + 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, 6.61627, 6.94572, 3.68646, 5.01521, + 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 2.07541, 5.72319, 1.75261, 9.25175, 9.19404, 3.69037, + 6.2595, 6.09321, 6.52544, 9.60882, 3.34881, 3.07914, 5.80104, 9.54944, 5.43754, 5.8654, 7.88937, + 1.40811, 2.2597, 8.13163, 1.26821, 8.94813, 5.86709, 5.03182, 9.02922, 4.39826, 5.84582, 6.87069, + 4.25135, 6.13908, 6.74053, 2.13683, 7.21184, 6.82974, 4.18545, 7.8691, 4.20879, 7.77509, 8.93208, + 1.10502, 5.48298, 1.66413, 8.08256, 1.57661, 4.19779, 9.47653, 4.41823, 7.86628, 7.94436, 3.71224, + 7.95465, 2.37637, 6.20771, 1.08107, 7.38138, 5.23577, 7.88133, 5.20653, 3.42101, 8.48523, 5.96192, + 1.63073, 5.25228, 7.68488, 2.7276, 5.1788, 3.07327, 5.57423, 2.87711, 1.44374, 5.66976, 2.55051, + 4.56682, 1.96629, 5.58829, 1.91922, 3.59846, 3.08583, 9.70901, 3.50487, 3.1026, 1.82401, 6.1306, + 4.76134, 4.31059, 8.31695, 3.60784, 7.45652, 6.51653, 4.84219, 7.76686, 4.85031, 4.85544, 4.25714, + 2.38005, 9.43471, 9.24769, 8.03763, 6.54696, 1.32399, 6.88891, 2.16793, 3.64924, 4.24733, 3.47181, + 1.66572, 2.36923, 2.45457, 9.44841, 4.34021, 1.45016, 7.6686, 3.68812, 2.83922, 9.83581, 9.03719, + 7.83414, 6.86009, 1.35715, 8.32489, 7.86316, 5.09754, 5.78644, 1.98402, 2.31429, 5.5791, 2.94085, + 9.24799, 5.15937, 2.19041, 7.87817, 2.9146, 1.66833, 1.85877, 2.45985, 4.20817, 1.85777, 2.28937, + 9.37912, 6.18926, 8.55681, 6.60963, 3.92066, 7.5521, 5.70463, 7.6313, 2.48866, 7.18352, 4.8413, + 7.55702, 7.80702, 4.5785, 9.3268, 2.83159, 1.07202, 9.33716, 3.6506, 2.50256, 1.21691, 5.06801, + 8.27505, 4.31539, 6.48286, 1.31363, 4.1912, 1.70668, 7.23867, 1.11441, 5.13591, 9.65186, 4.00767, + 5.24875, 1.94852, 5.52768, 8.97121, 5.8094, 3.53329, 4.19126, 9.06652, 3.1734, 1.21496, 9.69154, + 4.86971, 4.1166, 6.19361, 2.13874, 9.55039, 3.8225, 9.57548, 2.96554, 3.2383, 8.77422, 3.11741, + 8.3359, 5.89508, 2.72134, 6.29956, 1.43323, 1.14286, 1.4474, 10}, + std::vector{1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, + 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, + 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, + 7.03475, 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, + 6.61627, 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 2.07541, + 5.72319, 1.75261, 9.25175, 9.19404, 3.69037, 6.2595, 6.09321, 6.52544, 9.60882, 3.34881, + 3.07914, 5.80104, 9.54944, 5.43754, 5.8654, 7.88937, 1.40811, 2.2597, 8.13163, 1.26821, + 8.94813, 5.86709, 5.03182, 9.02922, 4.39826, 5.84582, 6.87069, 4.25135, 6.13908, 6.74053, + 2.13683, 7.21184, 6.82974, 4.18545, 7.8691, 4.20879, 7.77509, 8.93208, 1.10502, 5.48298, + 1.66413, 8.08256, 1.57661, 4.19779, 9.47653, 4.41823, 7.86628, 7.94436, 3.71224, 10}, std::vector{5, 5, 5, 5, 5}, std::vector{ - 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, - 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, - 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, - 7.03475, 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, - 6.61627, 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 2.07541, - 5.72319, 1.75261, 9.25175, 9.19404, 3.69037, 6.2595, 6.09321, 6.52544, 9.60882, 3.34881, - 3.07914, 5.80104, 9.54944, 5.43754, 5.8654, 7.88937, 1.40811, 2.2597, 8.13163, 1.26821, - 8.94813, 5.86709, 5.03182, 9.02922, 4.39826, 5.84582, 6.87069, 4.25135, 6.13908, 6.74053, - 2.13683, 7.21184, 6.82974, 4.18545, 7.8691, 4.20879, 7.77509, 8.93208, 1.10502, 5.48298, - 1.66413, 8.08256, 1.57661, 4.19779, 9.47653, 4.41823, 7.86628, 7.94436, 3.71224, 7.95465, - 2.37637, 6.20771, 1.08107, 7.38138, 5.23577, 7.88133, 5.20653, 3.42101, 8.48523, 5.96192, - 1.63073, 5.25228, 7.68488, 2.7276, 5.1788, 3.07327, 5.57423, 2.87711, 1.44374, 5.66976, - 2.55051, 4.56682, 1.96629, 5.58829, 1.91922, 3.59846, 3.08583, 9.70901, 3.50487, 3.1026, - 1.82401, 6.1306, 4.76134, 4.31059, 8.31695, 3.60784, 7.45652, 6.51653, 4.84219, 7.76686, - 4.85031, 4.85544, 4.25714, 2.38005, 9.43471, 9.24769, 8.03763, 6.54696, 1.32399, 6.88891, - 2.16793, 3.64924, 4.24733, 3.47181, 1.66572, 2.36923, 2.45457, 9.44841, 4.34021, 1.45016, - 7.6686, 3.68812, 2.83922, 9.83581, 9.03719, 7.83414, 6.86009, 1.35715, 8.32489, 7.86316, - 5.09754, 5.78644, 1.98402, 2.31429, 5.5791, 2.94085, 9.24799, 5.15937, 2.19041, 7.87817, - 2.9146, 1.66833, 1.85877, 2.45985, 4.20817, 1.85777, 2.28937, 9.37912, 6.18926, 8.55681, - 6.60963, 3.92066, 7.5521, 5.70463, 7.6313, 2.48866, 7.18352, 4.8413, 7.55702, 7.80702, - 4.5785, 9.3268, 2.83159, 1.07202, 9.33716, 3.6506, 2.50256, 1.21691, 5.06801, 8.27505, - 4.31539, 6.48286, 1.31363, 4.1912, 1.70668, 7.23867, 1.11441, 5.13591, 9.65186, 4.00767, - 5.24875, 1.94852, 5.52768, 8.97121, 5.8094, 3.53329, 4.19126, 9.06652, 3.1734, 1.21496, - 9.69154, 4.86971, 4.1166, 6.19361, 2.13874, 9.55039, 3.8225, 9.57548, 2.96554, 3.2383, - 8.77422, 3.11741, 8.3359, 5.89508, 2.72134, 6.29956, 1.43323, 1.14286, 1.4474, 4.59474, - 6.19214, 8.80766, 8.07546, 3.29232, 1.74029, 2.4198, 2.88544, 4.75644, 4.12921, 7.29896, - 7.27759, 1.67252, 1.32823, 8.1046, 9.10476, 1.04197, 3.37783, 5.2064, 4.23835, 3.16196, - 1.20852, 5.78501, 2.17175, 6.05313, 2.51048, 4.78967, 7.16219, 3.4651, 1.09, 2.9788, - 1.28761, 9.41385, 8.03883, 5.65835, 1.14816, 3.6892, 5.86648, 8.73895, 2.66603, 1.75192, - 1.39845, 4.99427, 1.17387, 1.60329, 8.30594, 6.72662, 7.95565, 7.35114, 3.1439, 1.39976, - 3.53095, 8.78581, 1.65811, 6.94299, 2.68641, 5.70058, 9.13491, 5.27637, 8.6232, 8.54902, - 2.25352, 5.86274, 5.20377, 2.96815, 4.96745, 5.3225, 3.99956, 1.08021, 5.54918, 7.05833, - 1.49913, 2.41822, 6.44593, 3.87301, 9.01465, 8.11336, 2.95749, 2.80188, 7.12396, 2.40595, - 5.59325, 9.89258, 2.30223, 1.4347, 9.09158, 7.43797, 3.79295, 4.53646, 1.72705, 4.16909, - 1.00912, 6.62167, 2.80244, 6.626, 3.89307, 1.42586, 7.51028, 7.83327, 4.65674, 7.33902, - 6.26823, 9.72608, 3.73491, 3.8238, 3.03815, 7.05101, 8.0103, 5.61396, 6.53738, 1.41095, - 5.0149, 9.71211, 4.23604, 5.98629, 4.70219, 9.69442, 2.82752, 9.93544, 6.9328, 8.2817, - 5.12336, 8.98577, 5.80541, 6.19552, 9.25748, 3.82732, 7.53525, 8.24712, 5.32057, 5.38817, - 8.57269, 5.99975, 3.42893, 5.38068, 3.48261, 3.02851, 6.82079, 9.2902, 2.80427, 8.91868, - 5.19227, 7.52482, 3.72584, 5.40107, 2.83307, 1.79755, 2.49121, 5.52697, 8.08823, 9.13242, - 2.97572, 7.64318, 3.32023, 6.07788, 2.19187, 4.34879, 1.7457, 5.55154, 7.24966, 5.1128, - 4.25147, 8.34407, 1.4123, 4.49045, 5.12671, 7.62159, 9.18673, 3.49665, 8.35992, 6.90684, - 1.10152, 7.61818, 6.43145, 7.12017, 6.25564, 6.16169, 4.24916, 9.6283, 9.88249, 4.48422, - 8.52562, 9.83928, 6.26818, 7.03839, 1.77631, 9.92305, 8.0155, 9.94928, 6.88321, 1.33685, - 7.4718, 7.19305, 6.47932, 1.9559, 3.52616, 7.98593, 9.0115, 5.59539, 7.44137, 1.70001, - 6.53774, 8.54023, 7.26405, 5.99553, 8.75071, 7.70789, 3.38094, 9.99792, 6.16359, 6.75153, - 5.4073, 9.00437, 8.87059, 8.63011, 6.82951, 6.27021, 3.53425, 9.92489, 8.19695, 5.51473, - 7.95084, 2.11852, 9.28916, 1.40353, 3.05744, 8.58238, 3.75014, 5.35889, 6.85048, 2.29549, - 3.75218, 8.98228, 8.98158, 5.63695, 3.40379, 8.92309, 5.48185, 4.00095, 9.05227, 2.84035, - 8.37644, 8.54954, 5.70516, 2.45744, 9.54079, 1.53504, 8.9785, 6.1691, 4.40962, 6.76815, - 2.15026, 4.66033, 4.20769, 2.3604, 8.70826, 1.91807, 9.57809, 2.50132, 4.95464, 2.44375, - 8.91345, 5.30605, 4.59238, 3.47923, 1.46477, 2.24843, 8.00775, 2.60248, 6.25095, 9.35311, - 1.96897, 5.0738, 2.40393, 3.7379, 7.87712, 6.6423, 7.39986, 2.74115, 1.61588, 8.9169, - 3.87864, 6.44032, 9.59689, 4.74213, 2.76302, 2.49426, 6.62326, 1.50664, 3.95698, 9.82371, - 7.94438, 2.88399, 6.26754, 4.95809, 6.52199, 3.87974, 2.0071, 3.81713, 9.94544, 2.49197, - 5.16628, 6.71965, 1.33379, 3.27947, 8.83191, 2.25668, 1.16264, 7.20743, 8.8397, 4.19957, - 4.57119, 8.76621, 9.39031, 5.05683, 9.77492, 7.28143, 7.78249, 6.19997, 2.21146, 8.26929, - 1.94202, 4.0196, 6.07928, 6.6033, 5.12291, 8.3157, 3.23435, 4.80489, 8.2505, 5.93311, - 3.22774, 1.09695, 3.22228, 3.24883, 6.54187, 3.3574, 5.71848, 4.4223, 1.32481, 8.59246, - 5.0497, 9.78833, 1.51703, 2.4678, 2.64335, 5.87163, 3.45429, 5.43941, 7.60549, 10}, + 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, 8.6168, + 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, 8.0055, 7.44373, + 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, 7.03475, 6.33759, 7.04489, + 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, 6.61627, 6.94572, 3.68646, 5.01521, + 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 2.07541, 5.72319, 1.75261, 9.25175, 9.19404, 3.69037, + 6.2595, 6.09321, 6.52544, 9.60882, 3.34881, 3.07914, 5.80104, 9.54944, 5.43754, 5.8654, 7.88937, + 1.40811, 2.2597, 8.13163, 1.26821, 8.94813, 5.86709, 5.03182, 9.02922, 4.39826, 5.84582, 6.87069, + 4.25135, 6.13908, 6.74053, 2.13683, 7.21184, 6.82974, 4.18545, 7.8691, 4.20879, 7.77509, 8.93208, + 1.10502, 5.48298, 1.66413, 8.08256, 1.57661, 4.19779, 9.47653, 4.41823, 7.86628, 7.94436, 3.71224, + 7.95465, 2.37637, 6.20771, 1.08107, 7.38138, 5.23577, 7.88133, 5.20653, 3.42101, 8.48523, 5.96192, + 1.63073, 5.25228, 7.68488, 2.7276, 5.1788, 3.07327, 5.57423, 2.87711, 1.44374, 5.66976, 2.55051, + 4.56682, 1.96629, 5.58829, 1.91922, 3.59846, 3.08583, 9.70901, 3.50487, 3.1026, 1.82401, 6.1306, + 4.76134, 4.31059, 8.31695, 3.60784, 7.45652, 6.51653, 4.84219, 7.76686, 4.85031, 4.85544, 4.25714, + 2.38005, 9.43471, 9.24769, 8.03763, 6.54696, 1.32399, 6.88891, 2.16793, 3.64924, 4.24733, 3.47181, + 1.66572, 2.36923, 2.45457, 9.44841, 4.34021, 1.45016, 7.6686, 3.68812, 2.83922, 9.83581, 9.03719, + 7.83414, 6.86009, 1.35715, 8.32489, 7.86316, 5.09754, 5.78644, 1.98402, 2.31429, 5.5791, 2.94085, + 9.24799, 5.15937, 2.19041, 7.87817, 2.9146, 1.66833, 1.85877, 2.45985, 4.20817, 1.85777, 2.28937, + 9.37912, 6.18926, 8.55681, 6.60963, 3.92066, 7.5521, 5.70463, 7.6313, 2.48866, 7.18352, 4.8413, + 7.55702, 7.80702, 4.5785, 9.3268, 2.83159, 1.07202, 9.33716, 3.6506, 2.50256, 1.21691, 5.06801, + 8.27505, 4.31539, 6.48286, 1.31363, 4.1912, 1.70668, 7.23867, 1.11441, 5.13591, 9.65186, 4.00767, + 5.24875, 1.94852, 5.52768, 8.97121, 5.8094, 3.53329, 4.19126, 9.06652, 3.1734, 1.21496, 9.69154, + 4.86971, 4.1166, 6.19361, 2.13874, 9.55039, 3.8225, 9.57548, 2.96554, 3.2383, 8.77422, 3.11741, + 8.3359, 5.89508, 2.72134, 6.29956, 1.43323, 1.14286, 1.4474, 4.59474, 6.19214, 8.80766, 8.07546, + 3.29232, 1.74029, 2.4198, 2.88544, 4.75644, 4.12921, 7.29896, 7.27759, 1.67252, 1.32823, 8.1046, + 9.10476, 1.04197, 3.37783, 5.2064, 4.23835, 3.16196, 1.20852, 5.78501, 2.17175, 6.05313, 2.51048, + 4.78967, 7.16219, 3.4651, 1.09, 2.9788, 1.28761, 9.41385, 8.03883, 5.65835, 1.14816, 3.6892, + 5.86648, 8.73895, 2.66603, 1.75192, 1.39845, 4.99427, 1.17387, 1.60329, 8.30594, 6.72662, 7.95565, + 7.35114, 3.1439, 1.39976, 3.53095, 8.78581, 1.65811, 6.94299, 2.68641, 5.70058, 9.13491, 5.27637, + 8.6232, 8.54902, 2.25352, 5.86274, 5.20377, 2.96815, 4.96745, 5.3225, 3.99956, 1.08021, 5.54918, + 7.05833, 1.49913, 2.41822, 6.44593, 3.87301, 9.01465, 8.11336, 2.95749, 2.80188, 7.12396, 2.40595, + 5.59325, 9.89258, 2.30223, 1.4347, 9.09158, 7.43797, 3.79295, 4.53646, 1.72705, 4.16909, 1.00912, + 6.62167, 2.80244, 6.626, 3.89307, 1.42586, 7.51028, 7.83327, 4.65674, 7.33902, 6.26823, 9.72608, + 3.73491, 3.8238, 3.03815, 7.05101, 8.0103, 5.61396, 6.53738, 1.41095, 5.0149, 9.71211, 4.23604, + 5.98629, 4.70219, 9.69442, 2.82752, 9.93544, 6.9328, 8.2817, 5.12336, 8.98577, 5.80541, 6.19552, + 9.25748, 3.82732, 7.53525, 8.24712, 5.32057, 5.38817, 8.57269, 5.99975, 3.42893, 5.38068, 3.48261, + 3.02851, 6.82079, 9.2902, 2.80427, 8.91868, 5.19227, 7.52482, 3.72584, 5.40107, 2.83307, 1.79755, + 2.49121, 5.52697, 8.08823, 9.13242, 2.97572, 7.64318, 3.32023, 6.07788, 2.19187, 4.34879, 1.7457, + 5.55154, 7.24966, 5.1128, 4.25147, 8.34407, 1.4123, 4.49045, 5.12671, 7.62159, 9.18673, 3.49665, + 8.35992, 6.90684, 1.10152, 7.61818, 6.43145, 7.12017, 6.25564, 6.16169, 4.24916, 9.6283, 9.88249, + 4.48422, 8.52562, 9.83928, 6.26818, 7.03839, 1.77631, 9.92305, 8.0155, 9.94928, 6.88321, 1.33685, + 7.4718, 7.19305, 6.47932, 1.9559, 3.52616, 7.98593, 9.0115, 5.59539, 7.44137, 1.70001, 6.53774, + 8.54023, 7.26405, 5.99553, 8.75071, 7.70789, 3.38094, 9.99792, 6.16359, 6.75153, 5.4073, 9.00437, + 8.87059, 8.63011, 6.82951, 6.27021, 3.53425, 9.92489, 8.19695, 5.51473, 7.95084, 2.11852, 9.28916, + 1.40353, 3.05744, 8.58238, 3.75014, 5.35889, 6.85048, 2.29549, 3.75218, 8.98228, 8.98158, 5.63695, + 3.40379, 8.92309, 5.48185, 4.00095, 9.05227, 2.84035, 8.37644, 8.54954, 5.70516, 2.45744, 9.54079, + 1.53504, 8.9785, 6.1691, 4.40962, 6.76815, 2.15026, 4.66033, 4.20769, 2.3604, 8.70826, 1.91807, + 9.57809, 2.50132, 4.95464, 2.44375, 8.91345, 5.30605, 4.59238, 3.47923, 1.46477, 2.24843, 8.00775, + 2.60248, 6.25095, 9.35311, 1.96897, 5.0738, 2.40393, 3.7379, 7.87712, 6.6423, 7.39986, 2.74115, + 1.61588, 8.9169, 3.87864, 6.44032, 9.59689, 4.74213, 2.76302, 2.49426, 6.62326, 1.50664, 3.95698, + 9.82371, 7.94438, 2.88399, 6.26754, 4.95809, 6.52199, 3.87974, 2.0071, 3.81713, 9.94544, 2.49197, + 5.16628, 6.71965, 1.33379, 3.27947, 8.83191, 2.25668, 1.16264, 7.20743, 8.8397, 4.19957, 4.57119, + 8.76621, 9.39031, 5.05683, 9.77492, 7.28143, 7.78249, 6.19997, 2.21146, 8.26929, 1.94202, 4.0196, + 6.07928, 6.6033, 5.12291, 8.3157, 3.23435, 4.80489, 8.2505, 5.93311, 3.22774, 1.09695, 3.22228, + 3.24883, 6.54187, 3.3574, 5.71848, 4.4223, 1.32481, 8.59246, 5.0497, 9.78833, 1.51703, 2.4678, + 2.64335, 5.87163, 3.45429, 5.43941, 7.60549, 10}, std::vector{ - 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, - 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, - 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, - 7.03475, 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, - 6.61627, 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 2.07541, - 5.72319, 1.75261, 9.25175, 9.19404, 3.69037, 6.2595, 6.09321, 6.52544, 9.60882, 3.34881, - 3.07914, 5.80104, 9.54944, 5.43754, 5.8654, 7.88937, 1.40811, 2.2597, 8.13163, 1.26821, - 8.94813, 5.86709, 5.03182, 9.02922, 4.39826, 5.84582, 6.87069, 4.25135, 6.13908, 6.74053, - 2.13683, 7.21184, 6.82974, 4.18545, 7.8691, 4.20879, 7.77509, 8.93208, 1.10502, 5.48298, - 1.66413, 8.08256, 1.57661, 4.19779, 9.47653, 4.41823, 7.86628, 7.94436, 3.71224, 7.95465, - 2.37637, 6.20771, 1.08107, 7.38138, 5.23577, 7.88133, 5.20653, 3.42101, 8.48523, 5.96192, - 1.63073, 5.25228, 7.68488, 2.7276, 5.1788, 3.07327, 5.57423, 2.87711, 1.44374, 5.66976, - 2.55051, 4.56682, 1.96629, 5.58829, 1.91922, 3.59846, 3.08583, 9.70901, 3.50487, 3.1026, - 1.82401, 6.1306, 4.76134, 4.31059, 8.31695, 3.60784, 7.45652, 6.51653, 4.84219, 7.76686, - 4.85031, 4.85544, 4.25714, 2.38005, 9.43471, 9.24769, 8.03763, 6.54696, 1.32399, 6.88891, - 2.16793, 3.64924, 4.24733, 3.47181, 1.66572, 2.36923, 2.45457, 9.44841, 4.34021, 1.45016, - 7.6686, 3.68812, 2.83922, 9.83581, 9.03719, 7.83414, 6.86009, 1.35715, 8.32489, 7.86316, - 5.09754, 5.78644, 1.98402, 2.31429, 5.5791, 2.94085, 9.24799, 5.15937, 2.19041, 7.87817, - 2.9146, 1.66833, 1.85877, 2.45985, 4.20817, 1.85777, 2.28937, 9.37912, 6.18926, 8.55681, - 6.60963, 3.92066, 7.5521, 5.70463, 7.6313, 2.48866, 7.18352, 4.8413, 7.55702, 7.80702, - 4.5785, 9.3268, 2.83159, 1.07202, 9.33716, 3.6506, 2.50256, 1.21691, 5.06801, 8.27505, - 4.31539, 6.48286, 1.31363, 4.1912, 1.70668, 7.23867, 1.11441, 5.13591, 9.65186, 4.00767, - 5.24875, 1.94852, 5.52768, 8.97121, 5.8094, 3.53329, 4.19126, 9.06652, 3.1734, 1.21496, - 9.69154, 4.86971, 4.1166, 6.19361, 2.13874, 9.55039, 3.8225, 9.57548, 2.96554, 3.2383, - 8.77422, 3.11741, 8.3359, 5.89508, 2.72134, 6.29956, 1.43323, 1.14286, 1.4474, 4.59474, - 6.19214, 8.80766, 8.07546, 3.29232, 1.74029, 2.4198, 2.88544, 4.75644, 4.12921, 7.29896, - 7.27759, 1.67252, 1.32823, 8.1046, 9.10476, 1.04197, 3.37783, 5.2064, 4.23835, 3.16196, - 1.20852, 5.78501, 2.17175, 6.05313, 2.51048, 4.78967, 7.16219, 3.4651, 1.09, 2.9788, - 1.28761, 9.41385, 8.03883, 5.65835, 1.14816, 3.6892, 5.86648, 8.73895, 2.66603, 1.75192, - 1.39845, 4.99427, 1.17387, 1.60329, 8.30594, 6.72662, 7.95565, 7.35114, 3.1439, 1.39976, - 3.53095, 8.78581, 1.65811, 6.94299, 2.68641, 5.70058, 9.13491, 5.27637, 8.6232, 8.54902, - 2.25352, 5.86274, 5.20377, 2.96815, 4.96745, 5.3225, 3.99956, 1.08021, 5.54918, 7.05833, - 1.49913, 2.41822, 6.44593, 3.87301, 9.01465, 8.11336, 2.95749, 2.80188, 7.12396, 2.40595, - 5.59325, 9.89258, 2.30223, 1.4347, 9.09158, 7.43797, 3.79295, 4.53646, 1.72705, 4.16909, - 1.00912, 6.62167, 2.80244, 6.626, 3.89307, 1.42586, 7.51028, 7.83327, 4.65674, 7.33902, - 6.26823, 9.72608, 3.73491, 3.8238, 3.03815, 7.05101, 8.0103, 5.61396, 6.53738, 1.41095, - 5.0149, 9.71211, 4.23604, 5.98629, 4.70219, 9.69442, 2.82752, 9.93544, 6.9328, 8.2817, - 5.12336, 8.98577, 5.80541, 6.19552, 9.25748, 3.82732, 7.53525, 8.24712, 5.32057, 5.38817, - 8.57269, 5.99975, 3.42893, 5.38068, 3.48261, 3.02851, 6.82079, 9.2902, 2.80427, 8.91868, - 5.19227, 7.52482, 3.72584, 5.40107, 2.83307, 1.79755, 2.49121, 5.52697, 8.08823, 9.13242, - 2.97572, 7.64318, 3.32023, 6.07788, 2.19187, 4.34879, 1.7457, 5.55154, 7.24966, 5.1128, - 4.25147, 8.34407, 1.4123, 4.49045, 5.12671, 7.62159, 9.18673, 3.49665, 8.35992, 6.90684, - 1.10152, 7.61818, 6.43145, 7.12017, 6.25564, 6.16169, 4.24916, 9.6283, 9.88249, 4.48422, - 8.52562, 9.83928, 6.26818, 7.03839, 1.77631, 9.92305, 8.0155, 9.94928, 6.88321, 1.33685, - 7.4718, 7.19305, 6.47932, 1.9559, 3.52616, 7.98593, 9.0115, 5.59539, 7.44137, 1.70001, - 6.53774, 8.54023, 7.26405, 5.99553, 8.75071, 7.70789, 3.38094, 9.99792, 6.16359, 6.75153, - 5.4073, 9.00437, 8.87059, 8.63011, 6.82951, 6.27021, 3.53425, 9.92489, 8.19695, 5.51473, - 7.95084, 2.11852, 9.28916, 1.40353, 3.05744, 8.58238, 3.75014, 5.35889, 6.85048, 2.29549, - 3.75218, 8.98228, 8.98158, 5.63695, 3.40379, 8.92309, 5.48185, 4.00095, 9.05227, 2.84035, - 8.37644, 8.54954, 5.70516, 2.45744, 9.54079, 1.53504, 8.9785, 6.1691, 4.40962, 6.76815, - 2.15026, 4.66033, 4.20769, 2.3604, 8.70826, 1.91807, 9.57809, 2.50132, 4.95464, 2.44375, - 8.91345, 5.30605, 4.59238, 3.47923, 1.46477, 2.24843, 8.00775, 2.60248, 6.25095, 9.35311, - 1.96897, 5.0738, 2.40393, 3.7379, 7.87712, 6.6423, 7.39986, 2.74115, 1.61588, 8.9169, - 3.87864, 6.44032, 9.59689, 4.74213, 2.76302, 2.49426, 6.62326, 1.50664, 3.95698, 9.82371, - 7.94438, 2.88399, 6.26754, 4.95809, 6.52199, 3.87974, 2.0071, 3.81713, 9.94544, 2.49197, - 5.16628, 6.71965, 1.33379, 3.27947, 8.83191, 2.25668, 1.16264, 7.20743, 8.8397, 4.19957, - 4.57119, 8.76621, 9.39031, 5.05683, 9.77492, 7.28143, 7.78249, 6.19997, 2.21146, 8.26929, - 1.94202, 4.0196, 6.07928, 6.6033, 5.12291, 8.3157, 3.23435, 4.80489, 8.2505, 5.93311, - 3.22774, 1.09695, 3.22228, 3.24883, 6.54187, 3.3574, 5.71848, 4.4223, 1.32481, 8.59246, - 5.0497, 9.78833, 1.51703, 2.4678, 2.64335, 5.87163, 3.45429, 5.43941, 7.60549, 10}, + 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, 8.6168, + 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, 8.0055, 7.44373, + 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, 7.03475, 6.33759, 7.04489, + 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, 6.61627, 6.94572, 3.68646, 5.01521, + 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 2.07541, 5.72319, 1.75261, 9.25175, 9.19404, 3.69037, + 6.2595, 6.09321, 6.52544, 9.60882, 3.34881, 3.07914, 5.80104, 9.54944, 5.43754, 5.8654, 7.88937, + 1.40811, 2.2597, 8.13163, 1.26821, 8.94813, 5.86709, 5.03182, 9.02922, 4.39826, 5.84582, 6.87069, + 4.25135, 6.13908, 6.74053, 2.13683, 7.21184, 6.82974, 4.18545, 7.8691, 4.20879, 7.77509, 8.93208, + 1.10502, 5.48298, 1.66413, 8.08256, 1.57661, 4.19779, 9.47653, 4.41823, 7.86628, 7.94436, 3.71224, + 7.95465, 2.37637, 6.20771, 1.08107, 7.38138, 5.23577, 7.88133, 5.20653, 3.42101, 8.48523, 5.96192, + 1.63073, 5.25228, 7.68488, 2.7276, 5.1788, 3.07327, 5.57423, 2.87711, 1.44374, 5.66976, 2.55051, + 4.56682, 1.96629, 5.58829, 1.91922, 3.59846, 3.08583, 9.70901, 3.50487, 3.1026, 1.82401, 6.1306, + 4.76134, 4.31059, 8.31695, 3.60784, 7.45652, 6.51653, 4.84219, 7.76686, 4.85031, 4.85544, 4.25714, + 2.38005, 9.43471, 9.24769, 8.03763, 6.54696, 1.32399, 6.88891, 2.16793, 3.64924, 4.24733, 3.47181, + 1.66572, 2.36923, 2.45457, 9.44841, 4.34021, 1.45016, 7.6686, 3.68812, 2.83922, 9.83581, 9.03719, + 7.83414, 6.86009, 1.35715, 8.32489, 7.86316, 5.09754, 5.78644, 1.98402, 2.31429, 5.5791, 2.94085, + 9.24799, 5.15937, 2.19041, 7.87817, 2.9146, 1.66833, 1.85877, 2.45985, 4.20817, 1.85777, 2.28937, + 9.37912, 6.18926, 8.55681, 6.60963, 3.92066, 7.5521, 5.70463, 7.6313, 2.48866, 7.18352, 4.8413, + 7.55702, 7.80702, 4.5785, 9.3268, 2.83159, 1.07202, 9.33716, 3.6506, 2.50256, 1.21691, 5.06801, + 8.27505, 4.31539, 6.48286, 1.31363, 4.1912, 1.70668, 7.23867, 1.11441, 5.13591, 9.65186, 4.00767, + 5.24875, 1.94852, 5.52768, 8.97121, 5.8094, 3.53329, 4.19126, 9.06652, 3.1734, 1.21496, 9.69154, + 4.86971, 4.1166, 6.19361, 2.13874, 9.55039, 3.8225, 9.57548, 2.96554, 3.2383, 8.77422, 3.11741, + 8.3359, 5.89508, 2.72134, 6.29956, 1.43323, 1.14286, 1.4474, 4.59474, 6.19214, 8.80766, 8.07546, + 3.29232, 1.74029, 2.4198, 2.88544, 4.75644, 4.12921, 7.29896, 7.27759, 1.67252, 1.32823, 8.1046, + 9.10476, 1.04197, 3.37783, 5.2064, 4.23835, 3.16196, 1.20852, 5.78501, 2.17175, 6.05313, 2.51048, + 4.78967, 7.16219, 3.4651, 1.09, 2.9788, 1.28761, 9.41385, 8.03883, 5.65835, 1.14816, 3.6892, + 5.86648, 8.73895, 2.66603, 1.75192, 1.39845, 4.99427, 1.17387, 1.60329, 8.30594, 6.72662, 7.95565, + 7.35114, 3.1439, 1.39976, 3.53095, 8.78581, 1.65811, 6.94299, 2.68641, 5.70058, 9.13491, 5.27637, + 8.6232, 8.54902, 2.25352, 5.86274, 5.20377, 2.96815, 4.96745, 5.3225, 3.99956, 1.08021, 5.54918, + 7.05833, 1.49913, 2.41822, 6.44593, 3.87301, 9.01465, 8.11336, 2.95749, 2.80188, 7.12396, 2.40595, + 5.59325, 9.89258, 2.30223, 1.4347, 9.09158, 7.43797, 3.79295, 4.53646, 1.72705, 4.16909, 1.00912, + 6.62167, 2.80244, 6.626, 3.89307, 1.42586, 7.51028, 7.83327, 4.65674, 7.33902, 6.26823, 9.72608, + 3.73491, 3.8238, 3.03815, 7.05101, 8.0103, 5.61396, 6.53738, 1.41095, 5.0149, 9.71211, 4.23604, + 5.98629, 4.70219, 9.69442, 2.82752, 9.93544, 6.9328, 8.2817, 5.12336, 8.98577, 5.80541, 6.19552, + 9.25748, 3.82732, 7.53525, 8.24712, 5.32057, 5.38817, 8.57269, 5.99975, 3.42893, 5.38068, 3.48261, + 3.02851, 6.82079, 9.2902, 2.80427, 8.91868, 5.19227, 7.52482, 3.72584, 5.40107, 2.83307, 1.79755, + 2.49121, 5.52697, 8.08823, 9.13242, 2.97572, 7.64318, 3.32023, 6.07788, 2.19187, 4.34879, 1.7457, + 5.55154, 7.24966, 5.1128, 4.25147, 8.34407, 1.4123, 4.49045, 5.12671, 7.62159, 9.18673, 3.49665, + 8.35992, 6.90684, 1.10152, 7.61818, 6.43145, 7.12017, 6.25564, 6.16169, 4.24916, 9.6283, 9.88249, + 4.48422, 8.52562, 9.83928, 6.26818, 7.03839, 1.77631, 9.92305, 8.0155, 9.94928, 6.88321, 1.33685, + 7.4718, 7.19305, 6.47932, 1.9559, 3.52616, 7.98593, 9.0115, 5.59539, 7.44137, 1.70001, 6.53774, + 8.54023, 7.26405, 5.99553, 8.75071, 7.70789, 3.38094, 9.99792, 6.16359, 6.75153, 5.4073, 9.00437, + 8.87059, 8.63011, 6.82951, 6.27021, 3.53425, 9.92489, 8.19695, 5.51473, 7.95084, 2.11852, 9.28916, + 1.40353, 3.05744, 8.58238, 3.75014, 5.35889, 6.85048, 2.29549, 3.75218, 8.98228, 8.98158, 5.63695, + 3.40379, 8.92309, 5.48185, 4.00095, 9.05227, 2.84035, 8.37644, 8.54954, 5.70516, 2.45744, 9.54079, + 1.53504, 8.9785, 6.1691, 4.40962, 6.76815, 2.15026, 4.66033, 4.20769, 2.3604, 8.70826, 1.91807, + 9.57809, 2.50132, 4.95464, 2.44375, 8.91345, 5.30605, 4.59238, 3.47923, 1.46477, 2.24843, 8.00775, + 2.60248, 6.25095, 9.35311, 1.96897, 5.0738, 2.40393, 3.7379, 7.87712, 6.6423, 7.39986, 2.74115, + 1.61588, 8.9169, 3.87864, 6.44032, 9.59689, 4.74213, 2.76302, 2.49426, 6.62326, 1.50664, 3.95698, + 9.82371, 7.94438, 2.88399, 6.26754, 4.95809, 6.52199, 3.87974, 2.0071, 3.81713, 9.94544, 2.49197, + 5.16628, 6.71965, 1.33379, 3.27947, 8.83191, 2.25668, 1.16264, 7.20743, 8.8397, 4.19957, 4.57119, + 8.76621, 9.39031, 5.05683, 9.77492, 7.28143, 7.78249, 6.19997, 2.21146, 8.26929, 1.94202, 4.0196, + 6.07928, 6.6033, 5.12291, 8.3157, 3.23435, 4.80489, 8.2505, 5.93311, 3.22774, 1.09695, 3.22228, + 3.24883, 6.54187, 3.3574, 5.71848, 4.4223, 1.32481, 8.59246, 5.0497, 9.78833, 1.51703, 2.4678, + 2.64335, 5.87163, 3.45429, 5.43941, 7.60549, 10}, + std::vector{1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, + 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, + 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, + 7.03475, 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, + 6.61627, 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 2.07541, + 5.72319, 1.75261, 9.25175, 9.19404, 3.69037, 6.2595, 6.09321, 6.52544, 9.60882, 3.34881, + 3.07914, 5.80104, 9.54944, 5.43754, 5.8654, 7.88937, 1.40811, 2.2597, 8.13163, 1.26821, + 8.94813, 5.86709, 5.03182, 9.02922, 4.39826, 5.84582, 6.87069, 4.25135, 6.13908, 10}, std::vector{ - 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, - 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, - 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, - 7.03475, 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, - 6.61627, 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 2.07541, - 5.72319, 1.75261, 9.25175, 9.19404, 3.69037, 6.2595, 6.09321, 6.52544, 9.60882, 3.34881, - 3.07914, 5.80104, 9.54944, 5.43754, 5.8654, 7.88937, 1.40811, 2.2597, 8.13163, 1.26821, - 8.94813, 5.86709, 5.03182, 9.02922, 4.39826, 5.84582, 6.87069, 4.25135, 6.13908, 10}, - std::vector{ - 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, - 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, - 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, - 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, - 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, - 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, - 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, - 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, - 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, - 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, - 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, - 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, - 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, - 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, - 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, - 7.03475, 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, - 7.03475, 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, - 7.03475, 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, - 7.03475, 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, - 7.03475, 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, - 6.61627, 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 2.07541, - 6.61627, 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 2.07541, - 6.61627, 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 2.07541, - 6.61627, 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 2.07541, - 6.61627, 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 2.07541, - 5.72319, 1.75261, 9.25175, 9.19404, 3.69037, 6.2595, 6.09321, 6.52544, 9.60882, 3.34881, - 5.72319, 1.75261, 9.25175, 9.19404, 3.69037, 6.2595, 6.09321, 6.52544, 9.60882, 3.34881, - 5.72319, 1.75261, 9.25175, 9.19404, 3.69037, 6.2595, 6.09321, 6.52544, 9.60882, 3.34881, - 5.72319, 1.75261, 9.25175, 9.19404, 3.69037, 6.2595, 6.09321, 6.52544, 9.60882, 3.34881, - 5.72319, 1.75261, 9.25175, 9.19404, 3.69037, 6.2595, 6.09321, 6.52544, 9.60882, 3.34881, - 3.07914, 5.80104, 9.54944, 5.43754, 5.8654, 7.88937, 1.40811, 2.2597, 8.13163, 1.26821, - 3.07914, 5.80104, 9.54944, 5.43754, 5.8654, 7.88937, 1.40811, 2.2597, 8.13163, 1.26821, - 3.07914, 5.80104, 9.54944, 5.43754, 5.8654, 7.88937, 1.40811, 2.2597, 8.13163, 1.26821, - 3.07914, 5.80104, 9.54944, 5.43754, 5.8654, 7.88937, 1.40811, 2.2597, 8.13163, 1.26821, - 3.07914, 5.80104, 9.54944, 5.43754, 5.8654, 7.88937, 1.40811, 2.2597, 8.13163, 1.26821, - 8.94813, 5.86709, 5.03182, 9.02922, 4.39826, 5.84582, 6.87069, 4.25135, 6.13908, 6.74053, - 8.94813, 5.86709, 5.03182, 9.02922, 4.39826, 5.84582, 6.87069, 4.25135, 6.13908, 6.74053, - 8.94813, 5.86709, 5.03182, 9.02922, 4.39826, 5.84582, 6.87069, 4.25135, 6.13908, 6.74053, - 8.94813, 5.86709, 5.03182, 9.02922, 4.39826, 5.84582, 6.87069, 4.25135, 6.13908, 6.74053, - 8.94813, 5.86709, 5.03182, 9.02922, 4.39826, 5.84582, 6.87069, 4.25135, 6.13908, 6.74053, - 2.13683, 7.21184, 6.82974, 4.18545, 7.8691, 4.20879, 7.77509, 8.93208, 1.10502, 5.48298, - 2.13683, 7.21184, 6.82974, 4.18545, 7.8691, 4.20879, 7.77509, 8.93208, 1.10502, 5.48298, - 2.13683, 7.21184, 6.82974, 4.18545, 7.8691, 4.20879, 7.77509, 8.93208, 1.10502, 5.48298, - 2.13683, 7.21184, 6.82974, 4.18545, 7.8691, 4.20879, 7.77509, 8.93208, 1.10502, 5.48298, - 2.13683, 7.21184, 6.82974, 4.18545, 7.8691, 4.20879, 7.77509, 8.93208, 1.10502, 5.48298, - 1.66413, 8.08256, 1.57661, 4.19779, 9.47653, 4.41823, 7.86628, 7.94436, 3.71224, 10, - 1.66413, 8.08256, 1.57661, 4.19779, 9.47653, 4.41823, 7.86628, 7.94436, 3.71224, 10, - 1.66413, 8.08256, 1.57661, 4.19779, 9.47653, 4.41823, 7.86628, 7.94436, 3.71224, 10, - 1.66413, 8.08256, 1.57661, 4.19779, 9.47653, 4.41823, 7.86628, 7.94436, 3.71224, 10, - 1.66413, 8.08256, 1.57661, 4.19779, 9.47653, 4.41823, 7.86628, 7.94436, 3.71224, 10}, - std::vector{ - 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, - 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, - 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, - 7.03475, 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, - 6.61627, 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 2.07541, - 5.72319, 1.75261, 9.25175, 9.19404, 3.69037, 6.2595, 6.09321, 6.52544, 9.60882, 3.34881, - 3.07914, 5.80104, 9.54944, 5.43754, 5.8654, 7.88937, 1.40811, 2.2597, 8.13163, 1.26821, - 8.94813, 5.86709, 5.03182, 9.02922, 4.39826, 5.84582, 6.87069, 4.25135, 6.13908, 6.74053, - 2.13683, 7.21184, 6.82974, 4.18545, 7.8691, 4.20879, 7.77509, 8.93208, 1.10502, 5.48298, - 1.66413, 8.08256, 1.57661, 4.19779, 9.47653, 4.41823, 7.86628, 7.94436, 3.71224, 10}), + 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, 1, + 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, 1, 9.97466, + 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, 1, 9.97466, 9.39302, + 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, 1, 9.97466, 9.39302, 2.15312, + 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, + 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, + 9.22566, 5.11484, 4.87629, 9.45215, 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, + 5.11484, 4.87629, 9.45215, 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, + 4.87629, 9.45215, 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, + 9.45215, 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, + 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, 8.0055, + 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, 8.0055, 7.44373, + 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, 8.0055, 7.44373, 8.22482, + 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, 7.03475, 6.33759, 7.04489, 4.70609, + 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, 7.03475, 6.33759, 7.04489, 4.70609, 2.77796, + 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, 7.03475, 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, + 2.27908, 8.04983, 4.71285, 1.30754, 7.03475, 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, + 8.04983, 4.71285, 1.30754, 7.03475, 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, + 4.71285, 1.30754, 6.61627, 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, + 2.07541, 6.61627, 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 2.07541, + 6.61627, 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 2.07541, 6.61627, + 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 2.07541, 6.61627, 6.94572, + 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 2.07541, 5.72319, 1.75261, 9.25175, + 9.19404, 3.69037, 6.2595, 6.09321, 6.52544, 9.60882, 3.34881, 5.72319, 1.75261, 9.25175, 9.19404, + 3.69037, 6.2595, 6.09321, 6.52544, 9.60882, 3.34881, 5.72319, 1.75261, 9.25175, 9.19404, 3.69037, + 6.2595, 6.09321, 6.52544, 9.60882, 3.34881, 5.72319, 1.75261, 9.25175, 9.19404, 3.69037, 6.2595, + 6.09321, 6.52544, 9.60882, 3.34881, 5.72319, 1.75261, 9.25175, 9.19404, 3.69037, 6.2595, 6.09321, + 6.52544, 9.60882, 3.34881, 3.07914, 5.80104, 9.54944, 5.43754, 5.8654, 7.88937, 1.40811, 2.2597, + 8.13163, 1.26821, 3.07914, 5.80104, 9.54944, 5.43754, 5.8654, 7.88937, 1.40811, 2.2597, 8.13163, + 1.26821, 3.07914, 5.80104, 9.54944, 5.43754, 5.8654, 7.88937, 1.40811, 2.2597, 8.13163, 1.26821, + 3.07914, 5.80104, 9.54944, 5.43754, 5.8654, 7.88937, 1.40811, 2.2597, 8.13163, 1.26821, 3.07914, + 5.80104, 9.54944, 5.43754, 5.8654, 7.88937, 1.40811, 2.2597, 8.13163, 1.26821, 8.94813, 5.86709, + 5.03182, 9.02922, 4.39826, 5.84582, 6.87069, 4.25135, 6.13908, 6.74053, 8.94813, 5.86709, 5.03182, + 9.02922, 4.39826, 5.84582, 6.87069, 4.25135, 6.13908, 6.74053, 8.94813, 5.86709, 5.03182, 9.02922, + 4.39826, 5.84582, 6.87069, 4.25135, 6.13908, 6.74053, 8.94813, 5.86709, 5.03182, 9.02922, 4.39826, + 5.84582, 6.87069, 4.25135, 6.13908, 6.74053, 8.94813, 5.86709, 5.03182, 9.02922, 4.39826, 5.84582, + 6.87069, 4.25135, 6.13908, 6.74053, 2.13683, 7.21184, 6.82974, 4.18545, 7.8691, 4.20879, 7.77509, + 8.93208, 1.10502, 5.48298, 2.13683, 7.21184, 6.82974, 4.18545, 7.8691, 4.20879, 7.77509, 8.93208, + 1.10502, 5.48298, 2.13683, 7.21184, 6.82974, 4.18545, 7.8691, 4.20879, 7.77509, 8.93208, 1.10502, + 5.48298, 2.13683, 7.21184, 6.82974, 4.18545, 7.8691, 4.20879, 7.77509, 8.93208, 1.10502, 5.48298, + 2.13683, 7.21184, 6.82974, 4.18545, 7.8691, 4.20879, 7.77509, 8.93208, 1.10502, 5.48298, 1.66413, + 8.08256, 1.57661, 4.19779, 9.47653, 4.41823, 7.86628, 7.94436, 3.71224, 10, 1.66413, 8.08256, + 1.57661, 4.19779, 9.47653, 4.41823, 7.86628, 7.94436, 3.71224, 10, 1.66413, 8.08256, 1.57661, + 4.19779, 9.47653, 4.41823, 7.86628, 7.94436, 3.71224, 10, 1.66413, 8.08256, 1.57661, 4.19779, + 9.47653, 4.41823, 7.86628, 7.94436, 3.71224, 10, 1.66413, 8.08256, 1.57661, 4.19779, 9.47653, + 4.41823, 7.86628, 7.94436, 3.71224, 10}, + std::vector{1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, + 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, + 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, + 7.03475, 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, + 6.61627, 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 2.07541, + 5.72319, 1.75261, 9.25175, 9.19404, 3.69037, 6.2595, 6.09321, 6.52544, 9.60882, 3.34881, + 3.07914, 5.80104, 9.54944, 5.43754, 5.8654, 7.88937, 1.40811, 2.2597, 8.13163, 1.26821, + 8.94813, 5.86709, 5.03182, 9.02922, 4.39826, 5.84582, 6.87069, 4.25135, 6.13908, 6.74053, + 2.13683, 7.21184, 6.82974, 4.18545, 7.8691, 4.20879, 7.77509, 8.93208, 1.10502, 5.48298, + 1.66413, 8.08256, 1.57661, 4.19779, 9.47653, 4.41823, 7.86628, 7.94436, 3.71224, 10}), }; return params; } @@ -754,618 +749,594 @@ template std::vector generateParamsBF16() { using T = typename element_type_traits::value_type; - std::vector params { + std::vector params{ GRUSequenceParams( - 5, 10, 10, 10, - 0.7f, false, op::RecurrentSequenceDirection::FORWARD, + 5, + 10, + 10, + 10, + 0.7f, + false, + op::RecurrentSequenceDirection::FORWARD, ET, std::vector{ - 1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, - 3.125, 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, - 8.625, 4.75, 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 1.25, - 5.8125, 7.03125, 9.25, 4.75, 5.125, 6, 4.875, 2.25, 9.4375, 2.78125, - 8, 8.1875, 7.4375, 9.6875, 8.25, 3.8125, 1.82812, 7.21875, 5.65625, 8.875, - 8.75, 9, 8.4375, 1.76562, 8.4375, 1.34375, 3.45312, 2.53125, 1.53125, 8.875, - 7.03125, 1.88281, 6.3125, 4.78125, 7.03125, 9.625, 4.6875, 5.8125, 2.78125, 7.21875, - 3.59375, 3.84375, 2.28125, 7.1875, 8, 8.5, 4.6875, 1.16406, 1.30469, 7.75, - 6.625, 9.875, 6.9375, 7.71875, 3.6875, 3.53125, 5, 8.125, 3, 1.92188, - 1.65625, 5, 5.21875, 9.125, 1.85938, 3.64062, 9.125, 3.59375, 2.0625, 2.15625, - 5.71875, 1.17188, 1.75, 7.125, 9.25, 2.90625, 9.1875, 3.375, 3.6875, 5.4375, - 6.25, 1.47656, 6.0625, 6.15625, 6.5, 2.3125, 9.625, 6.3125, 3.34375, 7.3125, - 3.07812, 1.92188, 5.8125, 4.71875, 9.5, 7.25, 5.4375, 4.71875, 5.875, 1.45312, - 7.875, 5.8125, 1.40625, 6.96875, 2.25, 5.625, 8.125, 9.5, 1.26562, 6.25, - 8.9375, 9.125, 5.875, 2.23438, 5.03125, 2.25, 9, 8.25, 4.375, 4.5625, - 5.84375, 2.48438, 6.875, 9.375, 4.25, 4.125, 6.125, 7.75, 6.75, 7.53125, - 2.125, 8.9375, 7.1875, 6.625, 6.8125, 7.75, 4.1875, 4.125, 7.875, 3.42188, - 4.1875, 9.0625, 7.75, 4.84375, 8.875, 9.625, 1.10156, 6.96875, 5.46875, 6.59375, - 1.66406, 2.03125, 8.0625, 9.5, 1.57812, 5.0625, 4.1875, 6.1875, 9.5, 4.6875, - 4.40625, 3.125, 7.875, 9.125, 7.9375, 6.15625, 3.71875, 1.02344, 7.9375, 6.5625, - 2.375, 3.9375, 6.1875, 5.75, 1.07812, 9, 7.375, 4.1875, 5.25, 9.125, - 7.875, 6.625, 5.1875, 1.14062, 3.40625, 9.375, 8.5, 7.1875, 5.9375, 10, - 1.625, 2.54688, 5.25, 2.21875, 7.6875, 9.375, 2.71875, 7.25, 5.1875, 1.59375, - 3.0625, 7.8125, 5.5625, 7.78125, 2.875, 9.25, 1.4375, 7.375, 5.65625, 2.125, - 2.54688, 1.17188, 4.5625, 1.23438, 1.96875, 1.25, 5.5625, 3.21875, 1.92188, 8.75, - 3.59375, 5.84375, 3.07812, 5.96875, 9.6875, 8.5625, 3.5, 2.125, 3.09375, 3.5, - 1.82031, 6.25, 6.125, 9.75, 4.75, 6.0625, 4.3125, 1.16406, 8.3125, 8.1875, - 3.59375, 3.09375, 7.4375, 8.25, 6.5, 4.5, 4.8125, 8.75, 7.75, 7.71875, - 4.84375, 6, 4.84375, 2.21875, 4.25, 1.53906, 2.375, 2.09375, 9.375, 1.39844, - 9.25, 1.96875, 8, 3.03125, 6.5625, 7.40625, 1.32031, 6.03125, 6.875, 1.10938, - 2.15625, 1.64062, 3.65625, 9.6875, 4.25, 6.125, 3.46875, 2.82812, 1.66406, 3.26562, - 2.375, 7.6875, 2.45312, 2.75, 9.4375, 6.21875, 4.3125, 9.75, 1.45312, 8.625, - 7.65625, 3.15625, 3.6875, 5.4375, 2.84375, 6.5625, 9.8125, 8.4375, 9, 2.40625, - 7.8125, 1.16406, 6.875, 1.625, 1.35938, 5.375, 8.3125, 6.4375, 7.875, 6.125, - 5.09375, 3.84375, 5.78125, 9.875, 1.98438, 6.1875, 2.3125, 4.40625, 5.5625, 5.9375, - 2.9375, 7.6875, 9.25, 7, 5.15625, 3.375, 2.1875, 1.59375, 7.875, 4.3125, - 2.90625, 6.65625, 1.67188, 2.89062, 1.85938, 7.75, 2.45312, 1.59375, 4.1875, 3.34375, - 1.85938, 8.25, 2.28125, 2.73438, 9.375, 6.75, 6.1875, 5.71875, 8.5, 9.3125, - 6.625, 3.375, 3.90625, 1.59375, 7.5625, 7.625, 5.6875, 7.9375, 7.625, 9.125, - 2.48438, 9.375, 7.1875, 1.125, 4.8125, 3.09375, 7.5625, 6.5625, 7.8125, 9.5, - 4.5625, 9.5, 9.3125, 6, 2.82812, 9.25, 1.07031, 6.75, 9.3125, 4.5, - 3.65625, 5.375, 2.5, 6.4375, 1.21875, 5.9375, 5.0625, 9.3125, 8.25, 9.25, - 4.3125, 4.5625, 6.46875, 9.625, 1.3125, 2.5625, 4.1875, 2.125, 1.70312, 2.21875, - 7.25, 5.5625, 1.10938, 1.1875, 5.125, 9.5, 9.625, 8.4375, 4, 1.13281, - 5.25, 2.57812, 1.94531, 3.98438, 5.5, 2.17188, 9, 8.25, 5.8125, 4.09375, - 3.53125, 9.4375, 4.1875, 6.25, 9.0625, 8.875, 3.17188, 8.625, 1.21875, 9.125, - 9.6875, 5.125, 4.875, 5.90625, 4.125, 8.125, 6.1875, 3.5625, 2.125, 5.40625, - 9.5, 6.375, 3.8125, 1.14062, 9.5625, 6.3125, 2.96875, 4.875, 3.23438, 8.25, - 8.75, 3.84375, 3.125, 9, 8.3125, 6.1875, 5.875, 2.65625, 2.71875, 8.0625, - 6.3125, 6.5, 1.42969, 1.48438, 1.14062, 4.78125, 1.44531, 7.125, 4.59375, 10}, - std::vector{ - 1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, - 3.125, 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, - 8.625, 4.75, 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 1.25, - 5.8125, 7.03125, 9.25, 4.75, 5.125, 6, 4.875, 2.25, 9.4375, 2.78125, - 8, 8.1875, 7.4375, 9.6875, 8.25, 3.8125, 1.82812, 7.21875, 5.65625, 10}, + 1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, 3.125, + 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, 8.625, 4.75, + 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 1.25, 5.8125, 7.03125, 9.25, + 4.75, 5.125, 6, 4.875, 2.25, 9.4375, 2.78125, 8, 8.1875, 7.4375, 9.6875, + 8.25, 3.8125, 1.82812, 7.21875, 5.65625, 8.875, 8.75, 9, 8.4375, 1.76562, 8.4375, + 1.34375, 3.45312, 2.53125, 1.53125, 8.875, 7.03125, 1.88281, 6.3125, 4.78125, 7.03125, 9.625, + 4.6875, 5.8125, 2.78125, 7.21875, 3.59375, 3.84375, 2.28125, 7.1875, 8, 8.5, 4.6875, + 1.16406, 1.30469, 7.75, 6.625, 9.875, 6.9375, 7.71875, 3.6875, 3.53125, 5, 8.125, + 3, 1.92188, 1.65625, 5, 5.21875, 9.125, 1.85938, 3.64062, 9.125, 3.59375, 2.0625, + 2.15625, 5.71875, 1.17188, 1.75, 7.125, 9.25, 2.90625, 9.1875, 3.375, 3.6875, 5.4375, + 6.25, 1.47656, 6.0625, 6.15625, 6.5, 2.3125, 9.625, 6.3125, 3.34375, 7.3125, 3.07812, + 1.92188, 5.8125, 4.71875, 9.5, 7.25, 5.4375, 4.71875, 5.875, 1.45312, 7.875, 5.8125, + 1.40625, 6.96875, 2.25, 5.625, 8.125, 9.5, 1.26562, 6.25, 8.9375, 9.125, 5.875, + 2.23438, 5.03125, 2.25, 9, 8.25, 4.375, 4.5625, 5.84375, 2.48438, 6.875, 9.375, + 4.25, 4.125, 6.125, 7.75, 6.75, 7.53125, 2.125, 8.9375, 7.1875, 6.625, 6.8125, + 7.75, 4.1875, 4.125, 7.875, 3.42188, 4.1875, 9.0625, 7.75, 4.84375, 8.875, 9.625, + 1.10156, 6.96875, 5.46875, 6.59375, 1.66406, 2.03125, 8.0625, 9.5, 1.57812, 5.0625, 4.1875, + 6.1875, 9.5, 4.6875, 4.40625, 3.125, 7.875, 9.125, 7.9375, 6.15625, 3.71875, 1.02344, + 7.9375, 6.5625, 2.375, 3.9375, 6.1875, 5.75, 1.07812, 9, 7.375, 4.1875, 5.25, + 9.125, 7.875, 6.625, 5.1875, 1.14062, 3.40625, 9.375, 8.5, 7.1875, 5.9375, 10, + 1.625, 2.54688, 5.25, 2.21875, 7.6875, 9.375, 2.71875, 7.25, 5.1875, 1.59375, 3.0625, + 7.8125, 5.5625, 7.78125, 2.875, 9.25, 1.4375, 7.375, 5.65625, 2.125, 2.54688, 1.17188, + 4.5625, 1.23438, 1.96875, 1.25, 5.5625, 3.21875, 1.92188, 8.75, 3.59375, 5.84375, 3.07812, + 5.96875, 9.6875, 8.5625, 3.5, 2.125, 3.09375, 3.5, 1.82031, 6.25, 6.125, 9.75, + 4.75, 6.0625, 4.3125, 1.16406, 8.3125, 8.1875, 3.59375, 3.09375, 7.4375, 8.25, 6.5, + 4.5, 4.8125, 8.75, 7.75, 7.71875, 4.84375, 6, 4.84375, 2.21875, 4.25, 1.53906, + 2.375, 2.09375, 9.375, 1.39844, 9.25, 1.96875, 8, 3.03125, 6.5625, 7.40625, 1.32031, + 6.03125, 6.875, 1.10938, 2.15625, 1.64062, 3.65625, 9.6875, 4.25, 6.125, 3.46875, 2.82812, + 1.66406, 3.26562, 2.375, 7.6875, 2.45312, 2.75, 9.4375, 6.21875, 4.3125, 9.75, 1.45312, + 8.625, 7.65625, 3.15625, 3.6875, 5.4375, 2.84375, 6.5625, 9.8125, 8.4375, 9, 2.40625, + 7.8125, 1.16406, 6.875, 1.625, 1.35938, 5.375, 8.3125, 6.4375, 7.875, 6.125, 5.09375, + 3.84375, 5.78125, 9.875, 1.98438, 6.1875, 2.3125, 4.40625, 5.5625, 5.9375, 2.9375, 7.6875, + 9.25, 7, 5.15625, 3.375, 2.1875, 1.59375, 7.875, 4.3125, 2.90625, 6.65625, 1.67188, + 2.89062, 1.85938, 7.75, 2.45312, 1.59375, 4.1875, 3.34375, 1.85938, 8.25, 2.28125, 2.73438, + 9.375, 6.75, 6.1875, 5.71875, 8.5, 9.3125, 6.625, 3.375, 3.90625, 1.59375, 7.5625, + 7.625, 5.6875, 7.9375, 7.625, 9.125, 2.48438, 9.375, 7.1875, 1.125, 4.8125, 3.09375, + 7.5625, 6.5625, 7.8125, 9.5, 4.5625, 9.5, 9.3125, 6, 2.82812, 9.25, 1.07031, + 6.75, 9.3125, 4.5, 3.65625, 5.375, 2.5, 6.4375, 1.21875, 5.9375, 5.0625, 9.3125, + 8.25, 9.25, 4.3125, 4.5625, 6.46875, 9.625, 1.3125, 2.5625, 4.1875, 2.125, 1.70312, + 2.21875, 7.25, 5.5625, 1.10938, 1.1875, 5.125, 9.5, 9.625, 8.4375, 4, 1.13281, + 5.25, 2.57812, 1.94531, 3.98438, 5.5, 2.17188, 9, 8.25, 5.8125, 4.09375, 3.53125, + 9.4375, 4.1875, 6.25, 9.0625, 8.875, 3.17188, 8.625, 1.21875, 9.125, 9.6875, 5.125, + 4.875, 5.90625, 4.125, 8.125, 6.1875, 3.5625, 2.125, 5.40625, 9.5, 6.375, 3.8125, + 1.14062, 9.5625, 6.3125, 2.96875, 4.875, 3.23438, 8.25, 8.75, 3.84375, 3.125, 9, + 8.3125, 6.1875, 5.875, 2.65625, 2.71875, 8.0625, 6.3125, 6.5, 1.42969, 1.48438, 1.14062, + 4.78125, 1.44531, 7.125, 4.59375, 10}, + std::vector{1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, + 3.125, 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, + 8.625, 4.75, 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 1.25, + 5.8125, 7.03125, 9.25, 4.75, 5.125, 6, 4.875, 2.25, 9.4375, 2.78125, + 8, 8.1875, 7.4375, 9.6875, 8.25, 3.8125, 1.82812, 7.21875, 5.65625, 10}, std::vector{10, 10, 10, 10, 10}, std::vector{ - 1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, - 3.125, 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, - 8.625, 4.75, 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 1.25, - 5.8125, 7.03125, 9.25, 4.75, 5.125, 6, 4.875, 2.25, 9.4375, 2.78125, - 8, 8.1875, 7.4375, 9.6875, 8.25, 3.8125, 1.82812, 7.21875, 5.65625, 8.875, - 8.75, 9, 8.4375, 1.76562, 8.4375, 1.34375, 3.45312, 2.53125, 1.53125, 8.875, - 7.03125, 1.88281, 6.3125, 4.78125, 7.03125, 9.625, 4.6875, 5.8125, 2.78125, 7.21875, - 3.59375, 3.84375, 2.28125, 7.1875, 8, 8.5, 4.6875, 1.16406, 1.30469, 7.75, - 6.625, 9.875, 6.9375, 7.71875, 3.6875, 3.53125, 5, 8.125, 3, 1.92188, - 1.65625, 5, 5.21875, 9.125, 1.85938, 3.64062, 9.125, 3.59375, 2.0625, 2.15625, - 5.71875, 1.17188, 1.75, 7.125, 9.25, 2.90625, 9.1875, 3.375, 3.6875, 5.4375, - 6.25, 1.47656, 6.0625, 6.15625, 6.5, 2.3125, 9.625, 6.3125, 3.34375, 7.3125, - 3.07812, 1.92188, 5.8125, 4.71875, 9.5, 7.25, 5.4375, 4.71875, 5.875, 1.45312, - 7.875, 5.8125, 1.40625, 6.96875, 2.25, 5.625, 8.125, 9.5, 1.26562, 6.25, - 8.9375, 9.125, 5.875, 2.23438, 5.03125, 2.25, 9, 8.25, 4.375, 4.5625, - 5.84375, 2.48438, 6.875, 9.375, 4.25, 4.125, 6.125, 7.75, 6.75, 7.53125, - 2.125, 8.9375, 7.1875, 6.625, 6.8125, 7.75, 4.1875, 4.125, 7.875, 3.42188, - 4.1875, 9.0625, 7.75, 4.84375, 8.875, 9.625, 1.10156, 6.96875, 5.46875, 6.59375, - 1.66406, 2.03125, 8.0625, 9.5, 1.57812, 5.0625, 4.1875, 6.1875, 9.5, 4.6875, - 4.40625, 3.125, 7.875, 9.125, 7.9375, 6.15625, 3.71875, 1.02344, 7.9375, 6.5625, - 2.375, 3.9375, 6.1875, 5.75, 1.07812, 9, 7.375, 4.1875, 5.25, 9.125, - 7.875, 6.625, 5.1875, 1.14062, 3.40625, 9.375, 8.5, 7.1875, 5.9375, 10, - 1.625, 2.54688, 5.25, 2.21875, 7.6875, 9.375, 2.71875, 7.25, 5.1875, 1.59375, - 3.0625, 7.8125, 5.5625, 7.78125, 2.875, 9.25, 1.4375, 7.375, 5.65625, 2.125, - 2.54688, 1.17188, 4.5625, 1.23438, 1.96875, 1.25, 5.5625, 3.21875, 1.92188, 8.75, - 3.59375, 5.84375, 3.07812, 5.96875, 9.6875, 8.5625, 3.5, 2.125, 3.09375, 3.5, - 1.82031, 6.25, 6.125, 9.75, 4.75, 6.0625, 4.3125, 1.16406, 8.3125, 8.1875, - 3.59375, 3.09375, 7.4375, 8.25, 6.5, 4.5, 4.8125, 8.75, 7.75, 7.71875, - 4.84375, 6, 4.84375, 2.21875, 4.25, 1.53906, 2.375, 2.09375, 9.375, 1.39844, - 9.25, 1.96875, 8, 3.03125, 6.5625, 7.40625, 1.32031, 6.03125, 6.875, 10}, + 1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, 3.125, + 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, 8.625, 4.75, + 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 1.25, 5.8125, 7.03125, 9.25, + 4.75, 5.125, 6, 4.875, 2.25, 9.4375, 2.78125, 8, 8.1875, 7.4375, 9.6875, + 8.25, 3.8125, 1.82812, 7.21875, 5.65625, 8.875, 8.75, 9, 8.4375, 1.76562, 8.4375, + 1.34375, 3.45312, 2.53125, 1.53125, 8.875, 7.03125, 1.88281, 6.3125, 4.78125, 7.03125, 9.625, + 4.6875, 5.8125, 2.78125, 7.21875, 3.59375, 3.84375, 2.28125, 7.1875, 8, 8.5, 4.6875, + 1.16406, 1.30469, 7.75, 6.625, 9.875, 6.9375, 7.71875, 3.6875, 3.53125, 5, 8.125, + 3, 1.92188, 1.65625, 5, 5.21875, 9.125, 1.85938, 3.64062, 9.125, 3.59375, 2.0625, + 2.15625, 5.71875, 1.17188, 1.75, 7.125, 9.25, 2.90625, 9.1875, 3.375, 3.6875, 5.4375, + 6.25, 1.47656, 6.0625, 6.15625, 6.5, 2.3125, 9.625, 6.3125, 3.34375, 7.3125, 3.07812, + 1.92188, 5.8125, 4.71875, 9.5, 7.25, 5.4375, 4.71875, 5.875, 1.45312, 7.875, 5.8125, + 1.40625, 6.96875, 2.25, 5.625, 8.125, 9.5, 1.26562, 6.25, 8.9375, 9.125, 5.875, + 2.23438, 5.03125, 2.25, 9, 8.25, 4.375, 4.5625, 5.84375, 2.48438, 6.875, 9.375, + 4.25, 4.125, 6.125, 7.75, 6.75, 7.53125, 2.125, 8.9375, 7.1875, 6.625, 6.8125, + 7.75, 4.1875, 4.125, 7.875, 3.42188, 4.1875, 9.0625, 7.75, 4.84375, 8.875, 9.625, + 1.10156, 6.96875, 5.46875, 6.59375, 1.66406, 2.03125, 8.0625, 9.5, 1.57812, 5.0625, 4.1875, + 6.1875, 9.5, 4.6875, 4.40625, 3.125, 7.875, 9.125, 7.9375, 6.15625, 3.71875, 1.02344, + 7.9375, 6.5625, 2.375, 3.9375, 6.1875, 5.75, 1.07812, 9, 7.375, 4.1875, 5.25, + 9.125, 7.875, 6.625, 5.1875, 1.14062, 3.40625, 9.375, 8.5, 7.1875, 5.9375, 10, + 1.625, 2.54688, 5.25, 2.21875, 7.6875, 9.375, 2.71875, 7.25, 5.1875, 1.59375, 3.0625, + 7.8125, 5.5625, 7.78125, 2.875, 9.25, 1.4375, 7.375, 5.65625, 2.125, 2.54688, 1.17188, + 4.5625, 1.23438, 1.96875, 1.25, 5.5625, 3.21875, 1.92188, 8.75, 3.59375, 5.84375, 3.07812, + 5.96875, 9.6875, 8.5625, 3.5, 2.125, 3.09375, 3.5, 1.82031, 6.25, 6.125, 9.75, + 4.75, 6.0625, 4.3125, 1.16406, 8.3125, 8.1875, 3.59375, 3.09375, 7.4375, 8.25, 6.5, + 4.5, 4.8125, 8.75, 7.75, 7.71875, 4.84375, 6, 4.84375, 2.21875, 4.25, 1.53906, + 2.375, 2.09375, 9.375, 1.39844, 9.25, 1.96875, 8, 3.03125, 6.5625, 7.40625, 1.32031, + 6.03125, 6.875, 10}, std::vector{ - 1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, - 3.125, 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, - 8.625, 4.75, 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 1.25, - 5.8125, 7.03125, 9.25, 4.75, 5.125, 6, 4.875, 2.25, 9.4375, 2.78125, - 8, 8.1875, 7.4375, 9.6875, 8.25, 3.8125, 1.82812, 7.21875, 5.65625, 8.875, - 8.75, 9, 8.4375, 1.76562, 8.4375, 1.34375, 3.45312, 2.53125, 1.53125, 8.875, - 7.03125, 1.88281, 6.3125, 4.78125, 7.03125, 9.625, 4.6875, 5.8125, 2.78125, 7.21875, - 3.59375, 3.84375, 2.28125, 7.1875, 8, 8.5, 4.6875, 1.16406, 1.30469, 7.75, - 6.625, 9.875, 6.9375, 7.71875, 3.6875, 3.53125, 5, 8.125, 3, 1.92188, - 1.65625, 5, 5.21875, 9.125, 1.85938, 3.64062, 9.125, 3.59375, 2.0625, 2.15625, - 5.71875, 1.17188, 1.75, 7.125, 9.25, 2.90625, 9.1875, 3.375, 3.6875, 5.4375, - 6.25, 1.47656, 6.0625, 6.15625, 6.5, 2.3125, 9.625, 6.3125, 3.34375, 7.3125, - 3.07812, 1.92188, 5.8125, 4.71875, 9.5, 7.25, 5.4375, 4.71875, 5.875, 1.45312, - 7.875, 5.8125, 1.40625, 6.96875, 2.25, 5.625, 8.125, 9.5, 1.26562, 6.25, - 8.9375, 9.125, 5.875, 2.23438, 5.03125, 2.25, 9, 8.25, 4.375, 4.5625, - 5.84375, 2.48438, 6.875, 9.375, 4.25, 4.125, 6.125, 7.75, 6.75, 7.53125, - 2.125, 8.9375, 7.1875, 6.625, 6.8125, 7.75, 4.1875, 4.125, 7.875, 3.42188, - 4.1875, 9.0625, 7.75, 4.84375, 8.875, 9.625, 1.10156, 6.96875, 5.46875, 6.59375, - 1.66406, 2.03125, 8.0625, 9.5, 1.57812, 5.0625, 4.1875, 6.1875, 9.5, 4.6875, - 4.40625, 3.125, 7.875, 9.125, 7.9375, 6.15625, 3.71875, 1.02344, 7.9375, 6.5625, - 2.375, 3.9375, 6.1875, 5.75, 1.07812, 9, 7.375, 4.1875, 5.25, 9.125, - 7.875, 6.625, 5.1875, 1.14062, 3.40625, 9.375, 8.5, 7.1875, 5.9375, 10, - 1.625, 2.54688, 5.25, 2.21875, 7.6875, 9.375, 2.71875, 7.25, 5.1875, 1.59375, - 3.0625, 7.8125, 5.5625, 7.78125, 2.875, 9.25, 1.4375, 7.375, 5.65625, 2.125, - 2.54688, 1.17188, 4.5625, 1.23438, 1.96875, 1.25, 5.5625, 3.21875, 1.92188, 8.75, - 3.59375, 5.84375, 3.07812, 5.96875, 9.6875, 8.5625, 3.5, 2.125, 3.09375, 3.5, - 1.82031, 6.25, 6.125, 9.75, 4.75, 6.0625, 4.3125, 1.16406, 8.3125, 8.1875, - 3.59375, 3.09375, 7.4375, 8.25, 6.5, 4.5, 4.8125, 8.75, 7.75, 7.71875, - 4.84375, 6, 4.84375, 2.21875, 4.25, 1.53906, 2.375, 2.09375, 9.375, 1.39844, - 9.25, 1.96875, 8, 3.03125, 6.5625, 7.40625, 1.32031, 6.03125, 6.875, 10}, + 1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, 3.125, + 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, 8.625, 4.75, + 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 1.25, 5.8125, 7.03125, 9.25, + 4.75, 5.125, 6, 4.875, 2.25, 9.4375, 2.78125, 8, 8.1875, 7.4375, 9.6875, + 8.25, 3.8125, 1.82812, 7.21875, 5.65625, 8.875, 8.75, 9, 8.4375, 1.76562, 8.4375, + 1.34375, 3.45312, 2.53125, 1.53125, 8.875, 7.03125, 1.88281, 6.3125, 4.78125, 7.03125, 9.625, + 4.6875, 5.8125, 2.78125, 7.21875, 3.59375, 3.84375, 2.28125, 7.1875, 8, 8.5, 4.6875, + 1.16406, 1.30469, 7.75, 6.625, 9.875, 6.9375, 7.71875, 3.6875, 3.53125, 5, 8.125, + 3, 1.92188, 1.65625, 5, 5.21875, 9.125, 1.85938, 3.64062, 9.125, 3.59375, 2.0625, + 2.15625, 5.71875, 1.17188, 1.75, 7.125, 9.25, 2.90625, 9.1875, 3.375, 3.6875, 5.4375, + 6.25, 1.47656, 6.0625, 6.15625, 6.5, 2.3125, 9.625, 6.3125, 3.34375, 7.3125, 3.07812, + 1.92188, 5.8125, 4.71875, 9.5, 7.25, 5.4375, 4.71875, 5.875, 1.45312, 7.875, 5.8125, + 1.40625, 6.96875, 2.25, 5.625, 8.125, 9.5, 1.26562, 6.25, 8.9375, 9.125, 5.875, + 2.23438, 5.03125, 2.25, 9, 8.25, 4.375, 4.5625, 5.84375, 2.48438, 6.875, 9.375, + 4.25, 4.125, 6.125, 7.75, 6.75, 7.53125, 2.125, 8.9375, 7.1875, 6.625, 6.8125, + 7.75, 4.1875, 4.125, 7.875, 3.42188, 4.1875, 9.0625, 7.75, 4.84375, 8.875, 9.625, + 1.10156, 6.96875, 5.46875, 6.59375, 1.66406, 2.03125, 8.0625, 9.5, 1.57812, 5.0625, 4.1875, + 6.1875, 9.5, 4.6875, 4.40625, 3.125, 7.875, 9.125, 7.9375, 6.15625, 3.71875, 1.02344, + 7.9375, 6.5625, 2.375, 3.9375, 6.1875, 5.75, 1.07812, 9, 7.375, 4.1875, 5.25, + 9.125, 7.875, 6.625, 5.1875, 1.14062, 3.40625, 9.375, 8.5, 7.1875, 5.9375, 10, + 1.625, 2.54688, 5.25, 2.21875, 7.6875, 9.375, 2.71875, 7.25, 5.1875, 1.59375, 3.0625, + 7.8125, 5.5625, 7.78125, 2.875, 9.25, 1.4375, 7.375, 5.65625, 2.125, 2.54688, 1.17188, + 4.5625, 1.23438, 1.96875, 1.25, 5.5625, 3.21875, 1.92188, 8.75, 3.59375, 5.84375, 3.07812, + 5.96875, 9.6875, 8.5625, 3.5, 2.125, 3.09375, 3.5, 1.82031, 6.25, 6.125, 9.75, + 4.75, 6.0625, 4.3125, 1.16406, 8.3125, 8.1875, 3.59375, 3.09375, 7.4375, 8.25, 6.5, + 4.5, 4.8125, 8.75, 7.75, 7.71875, 4.84375, 6, 4.84375, 2.21875, 4.25, 1.53906, + 2.375, 2.09375, 9.375, 1.39844, 9.25, 1.96875, 8, 3.03125, 6.5625, 7.40625, 1.32031, + 6.03125, 6.875, 10}, + std::vector{1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, + 3.125, 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, + 8.625, 4.75, 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 10}, std::vector{ - 1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, - 3.125, 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, - 8.625, 4.75, 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 10}, - std::vector{ - 0.867188, 3.375, 6.875, 5.1875, 6.4375, 0.867188, 1.64062, 2.65625, 6.875, 1.75, - 0.777344, 2.4375, 4.75, 3.65625, 4.5, 0.777344, 1.29688, 1.96875, 4.75, 1.375, - 0.714844, 1.82812, 3.375, 2.625, 3.1875, 0.714844, 1.0625, 1.51562, 3.375, 1.11719, - 0.675781, 1.42188, 2.4375, 1.95312, 2.3125, 0.675781, 0.910156, 1.21875, 2.4375, 0.945312, - 0.648438, 1.14844, 1.82812, 1.5, 1.75, 0.648438, 0.808594, 1.01562, 1.82812, 0.832031, - 0.632812, 0.964844, 1.42188, 1.20312, 1.375, 0.632812, 0.738281, 0.878906, 1.42188, 0.753906, - 0.621094, 0.839844, 1.14844, 1, 1.11719, 0.621094, 0.691406, 0.785156, 1.14844, 0.699219, + 0.867188, 3.375, 6.875, 5.1875, 6.4375, 0.867188, 1.64062, 2.65625, 6.875, 1.75, + 0.777344, 2.4375, 4.75, 3.65625, 4.5, 0.777344, 1.29688, 1.96875, 4.75, 1.375, + 0.714844, 1.82812, 3.375, 2.625, 3.1875, 0.714844, 1.0625, 1.51562, 3.375, 1.11719, + 0.675781, 1.42188, 2.4375, 1.95312, 2.3125, 0.675781, 0.910156, 1.21875, 2.4375, 0.945312, + 0.648438, 1.14844, 1.82812, 1.5, 1.75, 0.648438, 0.808594, 1.01562, 1.82812, 0.832031, + 0.632812, 0.964844, 1.42188, 1.20312, 1.375, 0.632812, 0.738281, 0.878906, 1.42188, 0.753906, + 0.621094, 0.839844, 1.14844, 1, 1.11719, 0.621094, 0.691406, 0.785156, 1.14844, 0.699219, 0.613281, 0.761719, 0.964844, 0.867188, 0.945312, 0.613281, 0.660156, 0.722656, 0.964844, 0.664062, 0.609375, 0.707031, 0.839844, 0.777344, 0.832031, 0.609375, 0.640625, 0.679688, 0.839844, 0.640625, - 0.605469, 0.671875, 0.761719, 0.714844, 0.753906, 0.605469, 0.625, 0.652344, 0.761719, 0.625, - 2.28125, 1.42188, 3.25, 1.98438, 3.1875, 2.9375, 4.875, 3.25, 6.4375, 4.09375, - 1.71875, 1.14844, 2.34375, 1.53125, 2.3125, 2.15625, 3.4375, 2.34375, 4.5, 2.9375, - 1.34375, 0.964844, 1.76562, 1.21875, 1.75, 1.64062, 2.46875, 1.76562, 3.1875, 2.15625, - 1.09375, 0.839844, 1.375, 1.01562, 1.375, 1.29688, 1.84375, 1.375, 2.3125, 1.64062, - 0.929688, 0.761719, 1.11719, 0.878906, 1.11719, 1.0625, 1.4375, 1.11719, 1.75, 1.29688, - 0.816406, 0.707031, 0.945312, 0.785156, 0.945312, 0.910156, 1.15625, 0.945312, 1.375, 1.0625, - 0.746094, 0.671875, 0.832031, 0.722656, 0.832031, 0.808594, 0.972656, 0.832031, 1.11719, 0.910156, + 0.605469, 0.671875, 0.761719, 0.714844, 0.753906, 0.605469, 0.625, 0.652344, 0.761719, 0.625, + 2.28125, 1.42188, 3.25, 1.98438, 3.1875, 2.9375, 4.875, 3.25, 6.4375, 4.09375, + 1.71875, 1.14844, 2.34375, 1.53125, 2.3125, 2.15625, 3.4375, 2.34375, 4.5, 2.9375, + 1.34375, 0.964844, 1.76562, 1.21875, 1.75, 1.64062, 2.46875, 1.76562, 3.1875, 2.15625, + 1.09375, 0.839844, 1.375, 1.01562, 1.375, 1.29688, 1.84375, 1.375, 2.3125, 1.64062, + 0.929688, 0.761719, 1.11719, 0.878906, 1.11719, 1.0625, 1.4375, 1.11719, 1.75, 1.29688, + 0.816406, 0.707031, 0.945312, 0.785156, 0.945312, 0.910156, 1.15625, 0.945312, 1.375, 1.0625, + 0.746094, 0.671875, 0.832031, 0.722656, 0.832031, 0.808594, 0.972656, 0.832031, 1.11719, 0.910156, 0.695312, 0.648438, 0.753906, 0.679688, 0.753906, 0.738281, 0.847656, 0.753906, 0.945312, 0.808594, 0.664062, 0.632812, 0.699219, 0.652344, 0.699219, 0.691406, 0.761719, 0.699219, 0.832031, 0.738281, 0.640625, 0.621094, 0.664062, 0.632812, 0.664062, 0.660156, 0.707031, 0.664062, 0.753906, 0.691406, - 5.9375, 3.375, 2.71875, 4.9375, 4, 2.09375, 3.53125, 6.125, 2.21875, 1.03125, - 4.15625, 2.4375, 2, 3.5, 2.875, 1.59375, 2.53125, 4.25, 1.6875, 0.886719, - 2.96875, 1.82812, 1.53125, 2.53125, 2.125, 1.26562, 1.89062, 3.03125, 1.32812, 0.792969, - 2.1875, 1.42188, 1.21875, 1.89062, 1.625, 1.04688, 1.46875, 2.21875, 1.08594, 0.730469, - 1.65625, 1.14844, 1.01562, 1.46875, 1.28125, 0.898438, 1.17969, 1.6875, 0.925781, 0.6875, - 1.3125, 0.964844, 0.878906, 1.17969, 1.05469, 0.800781, 0.988281, 1.32812, 0.816406, 0.65625, - 1.07812, 0.839844, 0.785156, 0.988281, 0.902344, 0.730469, 0.855469, 1.08594, 0.746094, 0.636719, - 0.917969, 0.761719, 0.722656, 0.855469, 0.800781, 0.6875, 0.769531, 0.925781, 0.695312, 0.625, - 0.808594, 0.707031, 0.679688, 0.769531, 0.730469, 0.65625, 0.714844, 0.816406, 0.664062, 0.617188, - 0.738281, 0.671875, 0.652344, 0.714844, 0.6875, 0.636719, 0.675781, 0.746094, 0.640625, 0.609375, - 4.0625, 4.875, 6.375, 3.375, 3.625, 4.1875, 3.4375, 1.70312, 6.5, 2.0625, - 2.90625, 3.4375, 4.4375, 2.4375, 2.59375, 3, 2.46875, 1.34375, 4.5, 1.57812, - 2.125, 2.46875, 3.15625, 1.82812, 1.9375, 2.1875, 1.84375, 1.09375, 3.1875, 1.25, - 1.625, 1.84375, 2.28125, 1.42188, 1.5, 1.65625, 1.4375, 0.929688, 2.3125, 1.03125, - 1.28125, 1.4375, 1.71875, 1.14844, 1.20312, 1.3125, 1.15625, 0.816406, 1.75, 0.886719, - 1.05469, 1.15625, 1.34375, 0.964844, 1, 1.07812, 0.972656, 0.746094, 1.375, 0.792969, - 0.902344, 0.972656, 1.09375, 0.839844, 0.867188, 0.917969, 0.847656, 0.695312, 1.11719, 0.730469, + 5.9375, 3.375, 2.71875, 4.9375, 4, 2.09375, 3.53125, 6.125, 2.21875, 1.03125, + 4.15625, 2.4375, 2, 3.5, 2.875, 1.59375, 2.53125, 4.25, 1.6875, 0.886719, + 2.96875, 1.82812, 1.53125, 2.53125, 2.125, 1.26562, 1.89062, 3.03125, 1.32812, 0.792969, + 2.1875, 1.42188, 1.21875, 1.89062, 1.625, 1.04688, 1.46875, 2.21875, 1.08594, 0.730469, + 1.65625, 1.14844, 1.01562, 1.46875, 1.28125, 0.898438, 1.17969, 1.6875, 0.925781, 0.6875, + 1.3125, 0.964844, 0.878906, 1.17969, 1.05469, 0.800781, 0.988281, 1.32812, 0.816406, 0.65625, + 1.07812, 0.839844, 0.785156, 0.988281, 0.902344, 0.730469, 0.855469, 1.08594, 0.746094, 0.636719, + 0.917969, 0.761719, 0.722656, 0.855469, 0.800781, 0.6875, 0.769531, 0.925781, 0.695312, 0.625, + 0.808594, 0.707031, 0.679688, 0.769531, 0.730469, 0.65625, 0.714844, 0.816406, 0.664062, 0.617188, + 0.738281, 0.671875, 0.652344, 0.714844, 0.6875, 0.636719, 0.675781, 0.746094, 0.640625, 0.609375, + 4.0625, 4.875, 6.375, 3.375, 3.625, 4.1875, 3.4375, 1.70312, 6.5, 2.0625, + 2.90625, 3.4375, 4.4375, 2.4375, 2.59375, 3, 2.46875, 1.34375, 4.5, 1.57812, + 2.125, 2.46875, 3.15625, 1.82812, 1.9375, 2.1875, 1.84375, 1.09375, 3.1875, 1.25, + 1.625, 1.84375, 2.28125, 1.42188, 1.5, 1.65625, 1.4375, 0.929688, 2.3125, 1.03125, + 1.28125, 1.4375, 1.71875, 1.14844, 1.20312, 1.3125, 1.15625, 0.816406, 1.75, 0.886719, + 1.05469, 1.15625, 1.34375, 0.964844, 1, 1.07812, 0.972656, 0.746094, 1.375, 0.792969, + 0.902344, 0.972656, 1.09375, 0.839844, 0.867188, 0.917969, 0.847656, 0.695312, 1.11719, 0.730469, 0.800781, 0.847656, 0.929688, 0.761719, 0.777344, 0.808594, 0.761719, 0.664062, 0.945312, 0.6875, 0.730469, 0.761719, 0.816406, 0.707031, 0.714844, 0.738281, 0.707031, 0.640625, 0.832031, 0.65625, - 0.6875, 0.707031, 0.746094, 0.671875, 0.675781, 0.691406, 0.671875, 0.625, 0.753906, 0.636719, - 5.53125, 5.65625, 5.125, 6.65625, 5.6875, 2.71875, 1.42188, 5, 3.96875, 6.875, - 3.875, 3.96875, 3.625, 4.625, 4, 2, 1.14844, 3.53125, 2.84375, 4.75, - 2.78125, 2.84375, 2.59375, 3.28125, 2.875, 1.53125, 0.964844, 2.53125, 2.09375, 3.375, - 2.0625, 2.09375, 1.9375, 2.375, 2.125, 1.21875, 0.839844, 1.89062, 1.59375, 2.4375, - 1.57812, 1.59375, 1.5, 1.78125, 1.625, 1.01562, 0.761719, 1.46875, 1.26562, 1.82812, - 1.25, 1.26562, 1.20312, 1.39062, 1.28125, 0.878906, 0.707031, 1.17969, 1.04688, 1.42188, - 1.03125, 1.04688, 1, 1.125, 1.05469, 0.785156, 0.671875, 0.988281, 0.898438, 1.14844, + 0.6875, 0.707031, 0.746094, 0.671875, 0.675781, 0.691406, 0.671875, 0.625, 0.753906, 0.636719, + 5.53125, 5.65625, 5.125, 6.65625, 5.6875, 2.71875, 1.42188, 5, 3.96875, 6.875, + 3.875, 3.96875, 3.625, 4.625, 4, 2, 1.14844, 3.53125, 2.84375, 4.75, + 2.78125, 2.84375, 2.59375, 3.28125, 2.875, 1.53125, 0.964844, 2.53125, 2.09375, 3.375, + 2.0625, 2.09375, 1.9375, 2.375, 2.125, 1.21875, 0.839844, 1.89062, 1.59375, 2.4375, + 1.57812, 1.59375, 1.5, 1.78125, 1.625, 1.01562, 0.761719, 1.46875, 1.26562, 1.82812, + 1.25, 1.26562, 1.20312, 1.39062, 1.28125, 0.878906, 0.707031, 1.17969, 1.04688, 1.42188, + 1.03125, 1.04688, 1, 1.125, 1.05469, 0.785156, 0.671875, 0.988281, 0.898438, 1.14844, 0.886719, 0.898438, 0.867188, 0.949219, 0.902344, 0.722656, 0.648438, 0.855469, 0.800781, 0.964844, 0.792969, 0.800781, 0.777344, 0.832031, 0.800781, 0.679688, 0.632812, 0.769531, 0.730469, 0.839844, - 0.730469, 0.730469, 0.714844, 0.753906, 0.730469, 0.652344, 0.621094, 0.714844, 0.6875, 0.761719}, - std::vector{ - 0.605469, 0.671875, 0.761719, 0.714844, 0.753906, 0.605469, 0.625, 0.652344, 0.761719, 0.625, - 0.640625, 0.621094, 0.664062, 0.632812, 0.664062, 0.660156, 0.707031, 0.664062, 0.753906, 0.691406, - 0.738281, 0.671875, 0.652344, 0.714844, 0.6875, 0.636719, 0.675781, 0.746094, 0.640625, 0.609375, - 0.6875, 0.707031, 0.746094, 0.671875, 0.675781, 0.691406, 0.671875, 0.625, 0.753906, 0.636719, - 0.730469, 0.730469, 0.714844, 0.753906, 0.730469, 0.652344, 0.621094, 0.714844, 0.6875, 0.761719}), + 0.730469, 0.730469, 0.714844, 0.753906, 0.730469, 0.652344, 0.621094, 0.714844, 0.6875, 0.761719}, + std::vector{0.605469, 0.671875, 0.761719, 0.714844, 0.753906, 0.605469, 0.625, 0.652344, 0.761719, + 0.625, 0.640625, 0.621094, 0.664062, 0.632812, 0.664062, 0.660156, 0.707031, 0.664062, + 0.753906, 0.691406, 0.738281, 0.671875, 0.652344, 0.714844, 0.6875, 0.636719, 0.675781, + 0.746094, 0.640625, 0.609375, 0.6875, 0.707031, 0.746094, 0.671875, 0.675781, 0.691406, + 0.671875, 0.625, 0.753906, 0.636719, 0.730469, 0.730469, 0.714844, 0.753906, 0.730469, + 0.652344, 0.621094, 0.714844, 0.6875, 0.761719}), GRUSequenceParams( - 5, 10, 10, 10, - 0.7f, false, op::RecurrentSequenceDirection::REVERSE, + 5, + 10, + 10, + 10, + 0.7f, + false, + op::RecurrentSequenceDirection::REVERSE, ET, std::vector{ - 1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, - 3.125, 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, - 8.625, 4.75, 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 1.25, - 5.8125, 7.03125, 9.25, 4.75, 5.125, 6, 4.875, 2.25, 9.4375, 2.78125, - 8, 8.1875, 7.4375, 9.6875, 8.25, 3.8125, 1.82812, 7.21875, 5.65625, 8.875, - 8.75, 9, 8.4375, 1.76562, 8.4375, 1.34375, 3.45312, 2.53125, 1.53125, 8.875, - 7.03125, 1.88281, 6.3125, 4.78125, 7.03125, 9.625, 4.6875, 5.8125, 2.78125, 7.21875, - 3.59375, 3.84375, 2.28125, 7.1875, 8, 8.5, 4.6875, 1.16406, 1.30469, 7.75, - 6.625, 9.875, 6.9375, 7.71875, 3.6875, 3.53125, 5, 8.125, 3, 1.92188, - 1.65625, 5, 5.21875, 9.125, 1.85938, 3.64062, 9.125, 3.59375, 2.0625, 2.15625, - 5.71875, 1.17188, 1.75, 7.125, 9.25, 2.90625, 9.1875, 3.375, 3.6875, 5.4375, - 6.25, 1.47656, 6.0625, 6.15625, 6.5, 2.3125, 9.625, 6.3125, 3.34375, 7.3125, - 3.07812, 1.92188, 5.8125, 4.71875, 9.5, 7.25, 5.4375, 4.71875, 5.875, 1.45312, - 7.875, 5.8125, 1.40625, 6.96875, 2.25, 5.625, 8.125, 9.5, 1.26562, 6.25, - 8.9375, 9.125, 5.875, 2.23438, 5.03125, 2.25, 9, 8.25, 4.375, 4.5625, - 5.84375, 2.48438, 6.875, 9.375, 4.25, 4.125, 6.125, 7.75, 6.75, 7.53125, - 2.125, 8.9375, 7.1875, 6.625, 6.8125, 7.75, 4.1875, 4.125, 7.875, 3.42188, - 4.1875, 9.0625, 7.75, 4.84375, 8.875, 9.625, 1.10156, 6.96875, 5.46875, 6.59375, - 1.66406, 2.03125, 8.0625, 9.5, 1.57812, 5.0625, 4.1875, 6.1875, 9.5, 4.6875, - 4.40625, 3.125, 7.875, 9.125, 7.9375, 6.15625, 3.71875, 1.02344, 7.9375, 6.5625, - 2.375, 3.9375, 6.1875, 5.75, 1.07812, 9, 7.375, 4.1875, 5.25, 9.125, - 7.875, 6.625, 5.1875, 1.14062, 3.40625, 9.375, 8.5, 7.1875, 5.9375, 10, - 1.625, 2.54688, 5.25, 2.21875, 7.6875, 9.375, 2.71875, 7.25, 5.1875, 1.59375, - 3.0625, 7.8125, 5.5625, 7.78125, 2.875, 9.25, 1.4375, 7.375, 5.65625, 2.125, - 2.54688, 1.17188, 4.5625, 1.23438, 1.96875, 1.25, 5.5625, 3.21875, 1.92188, 8.75, - 3.59375, 5.84375, 3.07812, 5.96875, 9.6875, 8.5625, 3.5, 2.125, 3.09375, 3.5, - 1.82031, 6.25, 6.125, 9.75, 4.75, 6.0625, 4.3125, 1.16406, 8.3125, 8.1875, - 3.59375, 3.09375, 7.4375, 8.25, 6.5, 4.5, 4.8125, 8.75, 7.75, 7.71875, - 4.84375, 6, 4.84375, 2.21875, 4.25, 1.53906, 2.375, 2.09375, 9.375, 1.39844, - 9.25, 1.96875, 8, 3.03125, 6.5625, 7.40625, 1.32031, 6.03125, 6.875, 1.10938, - 2.15625, 1.64062, 3.65625, 9.6875, 4.25, 6.125, 3.46875, 2.82812, 1.66406, 3.26562, - 2.375, 7.6875, 2.45312, 2.75, 9.4375, 6.21875, 4.3125, 9.75, 1.45312, 8.625, - 7.65625, 3.15625, 3.6875, 5.4375, 2.84375, 6.5625, 9.8125, 8.4375, 9, 2.40625, - 7.8125, 1.16406, 6.875, 1.625, 1.35938, 5.375, 8.3125, 6.4375, 7.875, 6.125, - 5.09375, 3.84375, 5.78125, 9.875, 1.98438, 6.1875, 2.3125, 4.40625, 5.5625, 5.9375, - 2.9375, 7.6875, 9.25, 7, 5.15625, 3.375, 2.1875, 1.59375, 7.875, 4.3125, - 2.90625, 6.65625, 1.67188, 2.89062, 1.85938, 7.75, 2.45312, 1.59375, 4.1875, 3.34375, - 1.85938, 8.25, 2.28125, 2.73438, 9.375, 6.75, 6.1875, 5.71875, 8.5, 9.3125, - 6.625, 3.375, 3.90625, 1.59375, 7.5625, 7.625, 5.6875, 7.9375, 7.625, 9.125, - 2.48438, 9.375, 7.1875, 1.125, 4.8125, 3.09375, 7.5625, 6.5625, 7.8125, 9.5, - 4.5625, 9.5, 9.3125, 6, 2.82812, 9.25, 1.07031, 6.75, 9.3125, 4.5, - 3.65625, 5.375, 2.5, 6.4375, 1.21875, 5.9375, 5.0625, 9.3125, 8.25, 9.25, - 4.3125, 4.5625, 6.46875, 9.625, 1.3125, 2.5625, 4.1875, 2.125, 1.70312, 2.21875, - 7.25, 5.5625, 1.10938, 1.1875, 5.125, 9.5, 9.625, 8.4375, 4, 1.13281, - 5.25, 2.57812, 1.94531, 3.98438, 5.5, 2.17188, 9, 8.25, 5.8125, 4.09375, - 3.53125, 9.4375, 4.1875, 6.25, 9.0625, 8.875, 3.17188, 8.625, 1.21875, 9.125, - 9.6875, 5.125, 4.875, 5.90625, 4.125, 8.125, 6.1875, 3.5625, 2.125, 5.40625, - 9.5, 6.375, 3.8125, 1.14062, 9.5625, 6.3125, 2.96875, 4.875, 3.23438, 8.25, - 8.75, 3.84375, 3.125, 9, 8.3125, 6.1875, 5.875, 2.65625, 2.71875, 8.0625, - 6.3125, 6.5, 1.42969, 1.48438, 1.14062, 4.78125, 1.44531, 7.125, 4.59375, 10}, - std::vector{ - 1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, - 3.125, 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, - 8.625, 4.75, 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 1.25, - 5.8125, 7.03125, 9.25, 4.75, 5.125, 6, 4.875, 2.25, 9.4375, 2.78125, - 8, 8.1875, 7.4375, 9.6875, 8.25, 3.8125, 1.82812, 7.21875, 5.65625, 10}, + 1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, 3.125, + 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, 8.625, 4.75, + 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 1.25, 5.8125, 7.03125, 9.25, + 4.75, 5.125, 6, 4.875, 2.25, 9.4375, 2.78125, 8, 8.1875, 7.4375, 9.6875, + 8.25, 3.8125, 1.82812, 7.21875, 5.65625, 8.875, 8.75, 9, 8.4375, 1.76562, 8.4375, + 1.34375, 3.45312, 2.53125, 1.53125, 8.875, 7.03125, 1.88281, 6.3125, 4.78125, 7.03125, 9.625, + 4.6875, 5.8125, 2.78125, 7.21875, 3.59375, 3.84375, 2.28125, 7.1875, 8, 8.5, 4.6875, + 1.16406, 1.30469, 7.75, 6.625, 9.875, 6.9375, 7.71875, 3.6875, 3.53125, 5, 8.125, + 3, 1.92188, 1.65625, 5, 5.21875, 9.125, 1.85938, 3.64062, 9.125, 3.59375, 2.0625, + 2.15625, 5.71875, 1.17188, 1.75, 7.125, 9.25, 2.90625, 9.1875, 3.375, 3.6875, 5.4375, + 6.25, 1.47656, 6.0625, 6.15625, 6.5, 2.3125, 9.625, 6.3125, 3.34375, 7.3125, 3.07812, + 1.92188, 5.8125, 4.71875, 9.5, 7.25, 5.4375, 4.71875, 5.875, 1.45312, 7.875, 5.8125, + 1.40625, 6.96875, 2.25, 5.625, 8.125, 9.5, 1.26562, 6.25, 8.9375, 9.125, 5.875, + 2.23438, 5.03125, 2.25, 9, 8.25, 4.375, 4.5625, 5.84375, 2.48438, 6.875, 9.375, + 4.25, 4.125, 6.125, 7.75, 6.75, 7.53125, 2.125, 8.9375, 7.1875, 6.625, 6.8125, + 7.75, 4.1875, 4.125, 7.875, 3.42188, 4.1875, 9.0625, 7.75, 4.84375, 8.875, 9.625, + 1.10156, 6.96875, 5.46875, 6.59375, 1.66406, 2.03125, 8.0625, 9.5, 1.57812, 5.0625, 4.1875, + 6.1875, 9.5, 4.6875, 4.40625, 3.125, 7.875, 9.125, 7.9375, 6.15625, 3.71875, 1.02344, + 7.9375, 6.5625, 2.375, 3.9375, 6.1875, 5.75, 1.07812, 9, 7.375, 4.1875, 5.25, + 9.125, 7.875, 6.625, 5.1875, 1.14062, 3.40625, 9.375, 8.5, 7.1875, 5.9375, 10, + 1.625, 2.54688, 5.25, 2.21875, 7.6875, 9.375, 2.71875, 7.25, 5.1875, 1.59375, 3.0625, + 7.8125, 5.5625, 7.78125, 2.875, 9.25, 1.4375, 7.375, 5.65625, 2.125, 2.54688, 1.17188, + 4.5625, 1.23438, 1.96875, 1.25, 5.5625, 3.21875, 1.92188, 8.75, 3.59375, 5.84375, 3.07812, + 5.96875, 9.6875, 8.5625, 3.5, 2.125, 3.09375, 3.5, 1.82031, 6.25, 6.125, 9.75, + 4.75, 6.0625, 4.3125, 1.16406, 8.3125, 8.1875, 3.59375, 3.09375, 7.4375, 8.25, 6.5, + 4.5, 4.8125, 8.75, 7.75, 7.71875, 4.84375, 6, 4.84375, 2.21875, 4.25, 1.53906, + 2.375, 2.09375, 9.375, 1.39844, 9.25, 1.96875, 8, 3.03125, 6.5625, 7.40625, 1.32031, + 6.03125, 6.875, 1.10938, 2.15625, 1.64062, 3.65625, 9.6875, 4.25, 6.125, 3.46875, 2.82812, + 1.66406, 3.26562, 2.375, 7.6875, 2.45312, 2.75, 9.4375, 6.21875, 4.3125, 9.75, 1.45312, + 8.625, 7.65625, 3.15625, 3.6875, 5.4375, 2.84375, 6.5625, 9.8125, 8.4375, 9, 2.40625, + 7.8125, 1.16406, 6.875, 1.625, 1.35938, 5.375, 8.3125, 6.4375, 7.875, 6.125, 5.09375, + 3.84375, 5.78125, 9.875, 1.98438, 6.1875, 2.3125, 4.40625, 5.5625, 5.9375, 2.9375, 7.6875, + 9.25, 7, 5.15625, 3.375, 2.1875, 1.59375, 7.875, 4.3125, 2.90625, 6.65625, 1.67188, + 2.89062, 1.85938, 7.75, 2.45312, 1.59375, 4.1875, 3.34375, 1.85938, 8.25, 2.28125, 2.73438, + 9.375, 6.75, 6.1875, 5.71875, 8.5, 9.3125, 6.625, 3.375, 3.90625, 1.59375, 7.5625, + 7.625, 5.6875, 7.9375, 7.625, 9.125, 2.48438, 9.375, 7.1875, 1.125, 4.8125, 3.09375, + 7.5625, 6.5625, 7.8125, 9.5, 4.5625, 9.5, 9.3125, 6, 2.82812, 9.25, 1.07031, + 6.75, 9.3125, 4.5, 3.65625, 5.375, 2.5, 6.4375, 1.21875, 5.9375, 5.0625, 9.3125, + 8.25, 9.25, 4.3125, 4.5625, 6.46875, 9.625, 1.3125, 2.5625, 4.1875, 2.125, 1.70312, + 2.21875, 7.25, 5.5625, 1.10938, 1.1875, 5.125, 9.5, 9.625, 8.4375, 4, 1.13281, + 5.25, 2.57812, 1.94531, 3.98438, 5.5, 2.17188, 9, 8.25, 5.8125, 4.09375, 3.53125, + 9.4375, 4.1875, 6.25, 9.0625, 8.875, 3.17188, 8.625, 1.21875, 9.125, 9.6875, 5.125, + 4.875, 5.90625, 4.125, 8.125, 6.1875, 3.5625, 2.125, 5.40625, 9.5, 6.375, 3.8125, + 1.14062, 9.5625, 6.3125, 2.96875, 4.875, 3.23438, 8.25, 8.75, 3.84375, 3.125, 9, + 8.3125, 6.1875, 5.875, 2.65625, 2.71875, 8.0625, 6.3125, 6.5, 1.42969, 1.48438, 1.14062, + 4.78125, 1.44531, 7.125, 4.59375, 10}, + std::vector{1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, + 3.125, 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, + 8.625, 4.75, 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 1.25, + 5.8125, 7.03125, 9.25, 4.75, 5.125, 6, 4.875, 2.25, 9.4375, 2.78125, + 8, 8.1875, 7.4375, 9.6875, 8.25, 3.8125, 1.82812, 7.21875, 5.65625, 10}, std::vector{10, 10, 10, 10, 10}, std::vector{ - 1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, - 3.125, 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, - 8.625, 4.75, 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 1.25, - 5.8125, 7.03125, 9.25, 4.75, 5.125, 6, 4.875, 2.25, 9.4375, 2.78125, - 8, 8.1875, 7.4375, 9.6875, 8.25, 3.8125, 1.82812, 7.21875, 5.65625, 8.875, - 8.75, 9, 8.4375, 1.76562, 8.4375, 1.34375, 3.45312, 2.53125, 1.53125, 8.875, - 7.03125, 1.88281, 6.3125, 4.78125, 7.03125, 9.625, 4.6875, 5.8125, 2.78125, 7.21875, - 3.59375, 3.84375, 2.28125, 7.1875, 8, 8.5, 4.6875, 1.16406, 1.30469, 7.75, - 6.625, 9.875, 6.9375, 7.71875, 3.6875, 3.53125, 5, 8.125, 3, 1.92188, - 1.65625, 5, 5.21875, 9.125, 1.85938, 3.64062, 9.125, 3.59375, 2.0625, 2.15625, - 5.71875, 1.17188, 1.75, 7.125, 9.25, 2.90625, 9.1875, 3.375, 3.6875, 5.4375, - 6.25, 1.47656, 6.0625, 6.15625, 6.5, 2.3125, 9.625, 6.3125, 3.34375, 7.3125, - 3.07812, 1.92188, 5.8125, 4.71875, 9.5, 7.25, 5.4375, 4.71875, 5.875, 1.45312, - 7.875, 5.8125, 1.40625, 6.96875, 2.25, 5.625, 8.125, 9.5, 1.26562, 6.25, - 8.9375, 9.125, 5.875, 2.23438, 5.03125, 2.25, 9, 8.25, 4.375, 4.5625, - 5.84375, 2.48438, 6.875, 9.375, 4.25, 4.125, 6.125, 7.75, 6.75, 7.53125, - 2.125, 8.9375, 7.1875, 6.625, 6.8125, 7.75, 4.1875, 4.125, 7.875, 3.42188, - 4.1875, 9.0625, 7.75, 4.84375, 8.875, 9.625, 1.10156, 6.96875, 5.46875, 6.59375, - 1.66406, 2.03125, 8.0625, 9.5, 1.57812, 5.0625, 4.1875, 6.1875, 9.5, 4.6875, - 4.40625, 3.125, 7.875, 9.125, 7.9375, 6.15625, 3.71875, 1.02344, 7.9375, 6.5625, - 2.375, 3.9375, 6.1875, 5.75, 1.07812, 9, 7.375, 4.1875, 5.25, 9.125, - 7.875, 6.625, 5.1875, 1.14062, 3.40625, 9.375, 8.5, 7.1875, 5.9375, 10, - 1.625, 2.54688, 5.25, 2.21875, 7.6875, 9.375, 2.71875, 7.25, 5.1875, 1.59375, - 3.0625, 7.8125, 5.5625, 7.78125, 2.875, 9.25, 1.4375, 7.375, 5.65625, 2.125, - 2.54688, 1.17188, 4.5625, 1.23438, 1.96875, 1.25, 5.5625, 3.21875, 1.92188, 8.75, - 3.59375, 5.84375, 3.07812, 5.96875, 9.6875, 8.5625, 3.5, 2.125, 3.09375, 3.5, - 1.82031, 6.25, 6.125, 9.75, 4.75, 6.0625, 4.3125, 1.16406, 8.3125, 8.1875, - 3.59375, 3.09375, 7.4375, 8.25, 6.5, 4.5, 4.8125, 8.75, 7.75, 7.71875, - 4.84375, 6, 4.84375, 2.21875, 4.25, 1.53906, 2.375, 2.09375, 9.375, 1.39844, - 9.25, 1.96875, 8, 3.03125, 6.5625, 7.40625, 1.32031, 6.03125, 6.875, 10}, + 1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, 3.125, + 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, 8.625, 4.75, + 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 1.25, 5.8125, 7.03125, 9.25, + 4.75, 5.125, 6, 4.875, 2.25, 9.4375, 2.78125, 8, 8.1875, 7.4375, 9.6875, + 8.25, 3.8125, 1.82812, 7.21875, 5.65625, 8.875, 8.75, 9, 8.4375, 1.76562, 8.4375, + 1.34375, 3.45312, 2.53125, 1.53125, 8.875, 7.03125, 1.88281, 6.3125, 4.78125, 7.03125, 9.625, + 4.6875, 5.8125, 2.78125, 7.21875, 3.59375, 3.84375, 2.28125, 7.1875, 8, 8.5, 4.6875, + 1.16406, 1.30469, 7.75, 6.625, 9.875, 6.9375, 7.71875, 3.6875, 3.53125, 5, 8.125, + 3, 1.92188, 1.65625, 5, 5.21875, 9.125, 1.85938, 3.64062, 9.125, 3.59375, 2.0625, + 2.15625, 5.71875, 1.17188, 1.75, 7.125, 9.25, 2.90625, 9.1875, 3.375, 3.6875, 5.4375, + 6.25, 1.47656, 6.0625, 6.15625, 6.5, 2.3125, 9.625, 6.3125, 3.34375, 7.3125, 3.07812, + 1.92188, 5.8125, 4.71875, 9.5, 7.25, 5.4375, 4.71875, 5.875, 1.45312, 7.875, 5.8125, + 1.40625, 6.96875, 2.25, 5.625, 8.125, 9.5, 1.26562, 6.25, 8.9375, 9.125, 5.875, + 2.23438, 5.03125, 2.25, 9, 8.25, 4.375, 4.5625, 5.84375, 2.48438, 6.875, 9.375, + 4.25, 4.125, 6.125, 7.75, 6.75, 7.53125, 2.125, 8.9375, 7.1875, 6.625, 6.8125, + 7.75, 4.1875, 4.125, 7.875, 3.42188, 4.1875, 9.0625, 7.75, 4.84375, 8.875, 9.625, + 1.10156, 6.96875, 5.46875, 6.59375, 1.66406, 2.03125, 8.0625, 9.5, 1.57812, 5.0625, 4.1875, + 6.1875, 9.5, 4.6875, 4.40625, 3.125, 7.875, 9.125, 7.9375, 6.15625, 3.71875, 1.02344, + 7.9375, 6.5625, 2.375, 3.9375, 6.1875, 5.75, 1.07812, 9, 7.375, 4.1875, 5.25, + 9.125, 7.875, 6.625, 5.1875, 1.14062, 3.40625, 9.375, 8.5, 7.1875, 5.9375, 10, + 1.625, 2.54688, 5.25, 2.21875, 7.6875, 9.375, 2.71875, 7.25, 5.1875, 1.59375, 3.0625, + 7.8125, 5.5625, 7.78125, 2.875, 9.25, 1.4375, 7.375, 5.65625, 2.125, 2.54688, 1.17188, + 4.5625, 1.23438, 1.96875, 1.25, 5.5625, 3.21875, 1.92188, 8.75, 3.59375, 5.84375, 3.07812, + 5.96875, 9.6875, 8.5625, 3.5, 2.125, 3.09375, 3.5, 1.82031, 6.25, 6.125, 9.75, + 4.75, 6.0625, 4.3125, 1.16406, 8.3125, 8.1875, 3.59375, 3.09375, 7.4375, 8.25, 6.5, + 4.5, 4.8125, 8.75, 7.75, 7.71875, 4.84375, 6, 4.84375, 2.21875, 4.25, 1.53906, + 2.375, 2.09375, 9.375, 1.39844, 9.25, 1.96875, 8, 3.03125, 6.5625, 7.40625, 1.32031, + 6.03125, 6.875, 10}, std::vector{ - 1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, - 3.125, 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, - 8.625, 4.75, 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 1.25, - 5.8125, 7.03125, 9.25, 4.75, 5.125, 6, 4.875, 2.25, 9.4375, 2.78125, - 8, 8.1875, 7.4375, 9.6875, 8.25, 3.8125, 1.82812, 7.21875, 5.65625, 8.875, - 8.75, 9, 8.4375, 1.76562, 8.4375, 1.34375, 3.45312, 2.53125, 1.53125, 8.875, - 7.03125, 1.88281, 6.3125, 4.78125, 7.03125, 9.625, 4.6875, 5.8125, 2.78125, 7.21875, - 3.59375, 3.84375, 2.28125, 7.1875, 8, 8.5, 4.6875, 1.16406, 1.30469, 7.75, - 6.625, 9.875, 6.9375, 7.71875, 3.6875, 3.53125, 5, 8.125, 3, 1.92188, - 1.65625, 5, 5.21875, 9.125, 1.85938, 3.64062, 9.125, 3.59375, 2.0625, 2.15625, - 5.71875, 1.17188, 1.75, 7.125, 9.25, 2.90625, 9.1875, 3.375, 3.6875, 5.4375, - 6.25, 1.47656, 6.0625, 6.15625, 6.5, 2.3125, 9.625, 6.3125, 3.34375, 7.3125, - 3.07812, 1.92188, 5.8125, 4.71875, 9.5, 7.25, 5.4375, 4.71875, 5.875, 1.45312, - 7.875, 5.8125, 1.40625, 6.96875, 2.25, 5.625, 8.125, 9.5, 1.26562, 6.25, - 8.9375, 9.125, 5.875, 2.23438, 5.03125, 2.25, 9, 8.25, 4.375, 4.5625, - 5.84375, 2.48438, 6.875, 9.375, 4.25, 4.125, 6.125, 7.75, 6.75, 7.53125, - 2.125, 8.9375, 7.1875, 6.625, 6.8125, 7.75, 4.1875, 4.125, 7.875, 3.42188, - 4.1875, 9.0625, 7.75, 4.84375, 8.875, 9.625, 1.10156, 6.96875, 5.46875, 6.59375, - 1.66406, 2.03125, 8.0625, 9.5, 1.57812, 5.0625, 4.1875, 6.1875, 9.5, 4.6875, - 4.40625, 3.125, 7.875, 9.125, 7.9375, 6.15625, 3.71875, 1.02344, 7.9375, 6.5625, - 2.375, 3.9375, 6.1875, 5.75, 1.07812, 9, 7.375, 4.1875, 5.25, 9.125, - 7.875, 6.625, 5.1875, 1.14062, 3.40625, 9.375, 8.5, 7.1875, 5.9375, 10, - 1.625, 2.54688, 5.25, 2.21875, 7.6875, 9.375, 2.71875, 7.25, 5.1875, 1.59375, - 3.0625, 7.8125, 5.5625, 7.78125, 2.875, 9.25, 1.4375, 7.375, 5.65625, 2.125, - 2.54688, 1.17188, 4.5625, 1.23438, 1.96875, 1.25, 5.5625, 3.21875, 1.92188, 8.75, - 3.59375, 5.84375, 3.07812, 5.96875, 9.6875, 8.5625, 3.5, 2.125, 3.09375, 3.5, - 1.82031, 6.25, 6.125, 9.75, 4.75, 6.0625, 4.3125, 1.16406, 8.3125, 8.1875, - 3.59375, 3.09375, 7.4375, 8.25, 6.5, 4.5, 4.8125, 8.75, 7.75, 7.71875, - 4.84375, 6, 4.84375, 2.21875, 4.25, 1.53906, 2.375, 2.09375, 9.375, 1.39844, - 9.25, 1.96875, 8, 3.03125, 6.5625, 7.40625, 1.32031, 6.03125, 6.875, 10}, + 1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, 3.125, + 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, 8.625, 4.75, + 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 1.25, 5.8125, 7.03125, 9.25, + 4.75, 5.125, 6, 4.875, 2.25, 9.4375, 2.78125, 8, 8.1875, 7.4375, 9.6875, + 8.25, 3.8125, 1.82812, 7.21875, 5.65625, 8.875, 8.75, 9, 8.4375, 1.76562, 8.4375, + 1.34375, 3.45312, 2.53125, 1.53125, 8.875, 7.03125, 1.88281, 6.3125, 4.78125, 7.03125, 9.625, + 4.6875, 5.8125, 2.78125, 7.21875, 3.59375, 3.84375, 2.28125, 7.1875, 8, 8.5, 4.6875, + 1.16406, 1.30469, 7.75, 6.625, 9.875, 6.9375, 7.71875, 3.6875, 3.53125, 5, 8.125, + 3, 1.92188, 1.65625, 5, 5.21875, 9.125, 1.85938, 3.64062, 9.125, 3.59375, 2.0625, + 2.15625, 5.71875, 1.17188, 1.75, 7.125, 9.25, 2.90625, 9.1875, 3.375, 3.6875, 5.4375, + 6.25, 1.47656, 6.0625, 6.15625, 6.5, 2.3125, 9.625, 6.3125, 3.34375, 7.3125, 3.07812, + 1.92188, 5.8125, 4.71875, 9.5, 7.25, 5.4375, 4.71875, 5.875, 1.45312, 7.875, 5.8125, + 1.40625, 6.96875, 2.25, 5.625, 8.125, 9.5, 1.26562, 6.25, 8.9375, 9.125, 5.875, + 2.23438, 5.03125, 2.25, 9, 8.25, 4.375, 4.5625, 5.84375, 2.48438, 6.875, 9.375, + 4.25, 4.125, 6.125, 7.75, 6.75, 7.53125, 2.125, 8.9375, 7.1875, 6.625, 6.8125, + 7.75, 4.1875, 4.125, 7.875, 3.42188, 4.1875, 9.0625, 7.75, 4.84375, 8.875, 9.625, + 1.10156, 6.96875, 5.46875, 6.59375, 1.66406, 2.03125, 8.0625, 9.5, 1.57812, 5.0625, 4.1875, + 6.1875, 9.5, 4.6875, 4.40625, 3.125, 7.875, 9.125, 7.9375, 6.15625, 3.71875, 1.02344, + 7.9375, 6.5625, 2.375, 3.9375, 6.1875, 5.75, 1.07812, 9, 7.375, 4.1875, 5.25, + 9.125, 7.875, 6.625, 5.1875, 1.14062, 3.40625, 9.375, 8.5, 7.1875, 5.9375, 10, + 1.625, 2.54688, 5.25, 2.21875, 7.6875, 9.375, 2.71875, 7.25, 5.1875, 1.59375, 3.0625, + 7.8125, 5.5625, 7.78125, 2.875, 9.25, 1.4375, 7.375, 5.65625, 2.125, 2.54688, 1.17188, + 4.5625, 1.23438, 1.96875, 1.25, 5.5625, 3.21875, 1.92188, 8.75, 3.59375, 5.84375, 3.07812, + 5.96875, 9.6875, 8.5625, 3.5, 2.125, 3.09375, 3.5, 1.82031, 6.25, 6.125, 9.75, + 4.75, 6.0625, 4.3125, 1.16406, 8.3125, 8.1875, 3.59375, 3.09375, 7.4375, 8.25, 6.5, + 4.5, 4.8125, 8.75, 7.75, 7.71875, 4.84375, 6, 4.84375, 2.21875, 4.25, 1.53906, + 2.375, 2.09375, 9.375, 1.39844, 9.25, 1.96875, 8, 3.03125, 6.5625, 7.40625, 1.32031, + 6.03125, 6.875, 10}, + std::vector{1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, + 3.125, 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, + 8.625, 4.75, 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 10}, std::vector{ - 1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, - 3.125, 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, - 8.625, 4.75, 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 10}, - std::vector{ - 0.605469, 0.671875, 0.761719, 0.714844, 0.753906, 0.605469, 0.625, 0.652344, 0.761719, 0.625, + 0.605469, 0.671875, 0.761719, 0.714844, 0.753906, 0.605469, 0.625, 0.652344, 0.761719, 0.625, 0.609375, 0.707031, 0.839844, 0.777344, 0.832031, 0.609375, 0.640625, 0.679688, 0.839844, 0.640625, 0.613281, 0.761719, 0.964844, 0.867188, 0.945312, 0.613281, 0.660156, 0.722656, 0.964844, 0.664062, - 0.621094, 0.839844, 1.14844, 1, 1.11719, 0.621094, 0.691406, 0.785156, 1.14844, 0.699219, - 0.632812, 0.964844, 1.42188, 1.20312, 1.375, 0.632812, 0.738281, 0.878906, 1.42188, 0.753906, - 0.648438, 1.14844, 1.82812, 1.5, 1.75, 0.648438, 0.808594, 1.01562, 1.82812, 0.832031, - 0.675781, 1.42188, 2.4375, 1.95312, 2.3125, 0.675781, 0.910156, 1.21875, 2.4375, 0.945312, - 0.714844, 1.82812, 3.375, 2.625, 3.1875, 0.714844, 1.0625, 1.51562, 3.375, 1.11719, - 0.777344, 2.4375, 4.75, 3.65625, 4.5, 0.777344, 1.29688, 1.96875, 4.75, 1.375, - 0.867188, 3.375, 6.875, 5.1875, 6.4375, 0.867188, 1.64062, 2.65625, 6.875, 1.75, + 0.621094, 0.839844, 1.14844, 1, 1.11719, 0.621094, 0.691406, 0.785156, 1.14844, 0.699219, + 0.632812, 0.964844, 1.42188, 1.20312, 1.375, 0.632812, 0.738281, 0.878906, 1.42188, 0.753906, + 0.648438, 1.14844, 1.82812, 1.5, 1.75, 0.648438, 0.808594, 1.01562, 1.82812, 0.832031, + 0.675781, 1.42188, 2.4375, 1.95312, 2.3125, 0.675781, 0.910156, 1.21875, 2.4375, 0.945312, + 0.714844, 1.82812, 3.375, 2.625, 3.1875, 0.714844, 1.0625, 1.51562, 3.375, 1.11719, + 0.777344, 2.4375, 4.75, 3.65625, 4.5, 0.777344, 1.29688, 1.96875, 4.75, 1.375, + 0.867188, 3.375, 6.875, 5.1875, 6.4375, 0.867188, 1.64062, 2.65625, 6.875, 1.75, 0.640625, 0.621094, 0.664062, 0.632812, 0.664062, 0.660156, 0.707031, 0.664062, 0.753906, 0.691406, 0.664062, 0.632812, 0.699219, 0.652344, 0.699219, 0.691406, 0.761719, 0.699219, 0.832031, 0.738281, 0.695312, 0.648438, 0.753906, 0.679688, 0.753906, 0.738281, 0.847656, 0.753906, 0.945312, 0.808594, - 0.746094, 0.671875, 0.832031, 0.722656, 0.832031, 0.808594, 0.972656, 0.832031, 1.11719, 0.910156, - 0.816406, 0.707031, 0.945312, 0.785156, 0.945312, 0.910156, 1.15625, 0.945312, 1.375, 1.0625, - 0.929688, 0.761719, 1.11719, 0.878906, 1.11719, 1.0625, 1.4375, 1.11719, 1.75, 1.29688, - 1.09375, 0.839844, 1.375, 1.01562, 1.375, 1.29688, 1.84375, 1.375, 2.3125, 1.64062, - 1.34375, 0.964844, 1.76562, 1.21875, 1.75, 1.64062, 2.46875, 1.76562, 3.1875, 2.15625, - 1.71875, 1.14844, 2.34375, 1.53125, 2.3125, 2.15625, 3.4375, 2.34375, 4.5, 2.9375, - 2.28125, 1.42188, 3.25, 1.98438, 3.1875, 2.9375, 4.875, 3.25, 6.4375, 4.09375, - 0.738281, 0.671875, 0.652344, 0.714844, 0.6875, 0.636719, 0.675781, 0.746094, 0.640625, 0.609375, - 0.808594, 0.707031, 0.679688, 0.769531, 0.730469, 0.65625, 0.714844, 0.816406, 0.664062, 0.617188, - 0.917969, 0.761719, 0.722656, 0.855469, 0.800781, 0.6875, 0.769531, 0.925781, 0.695312, 0.625, - 1.07812, 0.839844, 0.785156, 0.988281, 0.902344, 0.730469, 0.855469, 1.08594, 0.746094, 0.636719, - 1.3125, 0.964844, 0.878906, 1.17969, 1.05469, 0.800781, 0.988281, 1.32812, 0.816406, 0.65625, - 1.65625, 1.14844, 1.01562, 1.46875, 1.28125, 0.898438, 1.17969, 1.6875, 0.925781, 0.6875, - 2.1875, 1.42188, 1.21875, 1.89062, 1.625, 1.04688, 1.46875, 2.21875, 1.08594, 0.730469, - 2.96875, 1.82812, 1.53125, 2.53125, 2.125, 1.26562, 1.89062, 3.03125, 1.32812, 0.792969, - 4.15625, 2.4375, 2, 3.5, 2.875, 1.59375, 2.53125, 4.25, 1.6875, 0.886719, - 5.9375, 3.375, 2.71875, 4.9375, 4, 2.09375, 3.53125, 6.125, 2.21875, 1.03125, - 0.6875, 0.707031, 0.746094, 0.671875, 0.675781, 0.691406, 0.671875, 0.625, 0.753906, 0.636719, + 0.746094, 0.671875, 0.832031, 0.722656, 0.832031, 0.808594, 0.972656, 0.832031, 1.11719, 0.910156, + 0.816406, 0.707031, 0.945312, 0.785156, 0.945312, 0.910156, 1.15625, 0.945312, 1.375, 1.0625, + 0.929688, 0.761719, 1.11719, 0.878906, 1.11719, 1.0625, 1.4375, 1.11719, 1.75, 1.29688, + 1.09375, 0.839844, 1.375, 1.01562, 1.375, 1.29688, 1.84375, 1.375, 2.3125, 1.64062, + 1.34375, 0.964844, 1.76562, 1.21875, 1.75, 1.64062, 2.46875, 1.76562, 3.1875, 2.15625, + 1.71875, 1.14844, 2.34375, 1.53125, 2.3125, 2.15625, 3.4375, 2.34375, 4.5, 2.9375, + 2.28125, 1.42188, 3.25, 1.98438, 3.1875, 2.9375, 4.875, 3.25, 6.4375, 4.09375, + 0.738281, 0.671875, 0.652344, 0.714844, 0.6875, 0.636719, 0.675781, 0.746094, 0.640625, 0.609375, + 0.808594, 0.707031, 0.679688, 0.769531, 0.730469, 0.65625, 0.714844, 0.816406, 0.664062, 0.617188, + 0.917969, 0.761719, 0.722656, 0.855469, 0.800781, 0.6875, 0.769531, 0.925781, 0.695312, 0.625, + 1.07812, 0.839844, 0.785156, 0.988281, 0.902344, 0.730469, 0.855469, 1.08594, 0.746094, 0.636719, + 1.3125, 0.964844, 0.878906, 1.17969, 1.05469, 0.800781, 0.988281, 1.32812, 0.816406, 0.65625, + 1.65625, 1.14844, 1.01562, 1.46875, 1.28125, 0.898438, 1.17969, 1.6875, 0.925781, 0.6875, + 2.1875, 1.42188, 1.21875, 1.89062, 1.625, 1.04688, 1.46875, 2.21875, 1.08594, 0.730469, + 2.96875, 1.82812, 1.53125, 2.53125, 2.125, 1.26562, 1.89062, 3.03125, 1.32812, 0.792969, + 4.15625, 2.4375, 2, 3.5, 2.875, 1.59375, 2.53125, 4.25, 1.6875, 0.886719, + 5.9375, 3.375, 2.71875, 4.9375, 4, 2.09375, 3.53125, 6.125, 2.21875, 1.03125, + 0.6875, 0.707031, 0.746094, 0.671875, 0.675781, 0.691406, 0.671875, 0.625, 0.753906, 0.636719, 0.730469, 0.761719, 0.816406, 0.707031, 0.714844, 0.738281, 0.707031, 0.640625, 0.832031, 0.65625, 0.800781, 0.847656, 0.929688, 0.761719, 0.777344, 0.808594, 0.761719, 0.664062, 0.945312, 0.6875, - 0.902344, 0.972656, 1.09375, 0.839844, 0.867188, 0.917969, 0.847656, 0.695312, 1.11719, 0.730469, - 1.05469, 1.15625, 1.34375, 0.964844, 1, 1.07812, 0.972656, 0.746094, 1.375, 0.792969, - 1.28125, 1.4375, 1.71875, 1.14844, 1.20312, 1.3125, 1.15625, 0.816406, 1.75, 0.886719, - 1.625, 1.84375, 2.28125, 1.42188, 1.5, 1.65625, 1.4375, 0.929688, 2.3125, 1.03125, - 2.125, 2.46875, 3.15625, 1.82812, 1.9375, 2.1875, 1.84375, 1.09375, 3.1875, 1.25, - 2.90625, 3.4375, 4.4375, 2.4375, 2.59375, 3, 2.46875, 1.34375, 4.5, 1.57812, - 4.0625, 4.875, 6.375, 3.375, 3.625, 4.1875, 3.4375, 1.70312, 6.5, 2.0625, - 0.730469, 0.730469, 0.714844, 0.753906, 0.730469, 0.652344, 0.621094, 0.714844, 0.6875, 0.761719, + 0.902344, 0.972656, 1.09375, 0.839844, 0.867188, 0.917969, 0.847656, 0.695312, 1.11719, 0.730469, + 1.05469, 1.15625, 1.34375, 0.964844, 1, 1.07812, 0.972656, 0.746094, 1.375, 0.792969, + 1.28125, 1.4375, 1.71875, 1.14844, 1.20312, 1.3125, 1.15625, 0.816406, 1.75, 0.886719, + 1.625, 1.84375, 2.28125, 1.42188, 1.5, 1.65625, 1.4375, 0.929688, 2.3125, 1.03125, + 2.125, 2.46875, 3.15625, 1.82812, 1.9375, 2.1875, 1.84375, 1.09375, 3.1875, 1.25, + 2.90625, 3.4375, 4.4375, 2.4375, 2.59375, 3, 2.46875, 1.34375, 4.5, 1.57812, + 4.0625, 4.875, 6.375, 3.375, 3.625, 4.1875, 3.4375, 1.70312, 6.5, 2.0625, + 0.730469, 0.730469, 0.714844, 0.753906, 0.730469, 0.652344, 0.621094, 0.714844, 0.6875, 0.761719, 0.792969, 0.800781, 0.777344, 0.832031, 0.800781, 0.679688, 0.632812, 0.769531, 0.730469, 0.839844, 0.886719, 0.898438, 0.867188, 0.949219, 0.902344, 0.722656, 0.648438, 0.855469, 0.800781, 0.964844, - 1.03125, 1.04688, 1, 1.125, 1.05469, 0.785156, 0.671875, 0.988281, 0.898438, 1.14844, - 1.25, 1.26562, 1.20312, 1.39062, 1.28125, 0.878906, 0.707031, 1.17969, 1.04688, 1.42188, - 1.57812, 1.59375, 1.5, 1.78125, 1.625, 1.01562, 0.761719, 1.46875, 1.26562, 1.82812, - 2.0625, 2.09375, 1.9375, 2.375, 2.125, 1.21875, 0.839844, 1.89062, 1.59375, 2.4375, - 2.78125, 2.84375, 2.59375, 3.28125, 2.875, 1.53125, 0.964844, 2.53125, 2.09375, 3.375, - 3.875, 3.96875, 3.625, 4.625, 4, 2, 1.14844, 3.53125, 2.84375, 4.75, - 5.53125, 5.65625, 5.125, 6.65625, 5.6875, 2.71875, 1.42188, 5, 3.96875, 6.875}, - std::vector{ - 0.605469, 0.671875, 0.761719, 0.714844, 0.753906, 0.605469, 0.625, 0.652344, 0.761719, 0.625, - 0.640625, 0.621094, 0.664062, 0.632812, 0.664062, 0.660156, 0.707031, 0.664062, 0.753906, 0.691406, - 0.738281, 0.671875, 0.652344, 0.714844, 0.6875, 0.636719, 0.675781, 0.746094, 0.640625, 0.609375, - 0.6875, 0.707031, 0.746094, 0.671875, 0.675781, 0.691406, 0.671875, 0.625, 0.753906, 0.636719, - 0.730469, 0.730469, 0.714844, 0.753906, 0.730469, 0.652344, 0.621094, 0.714844, 0.6875, 0.761719}), + 1.03125, 1.04688, 1, 1.125, 1.05469, 0.785156, 0.671875, 0.988281, 0.898438, 1.14844, + 1.25, 1.26562, 1.20312, 1.39062, 1.28125, 0.878906, 0.707031, 1.17969, 1.04688, 1.42188, + 1.57812, 1.59375, 1.5, 1.78125, 1.625, 1.01562, 0.761719, 1.46875, 1.26562, 1.82812, + 2.0625, 2.09375, 1.9375, 2.375, 2.125, 1.21875, 0.839844, 1.89062, 1.59375, 2.4375, + 2.78125, 2.84375, 2.59375, 3.28125, 2.875, 1.53125, 0.964844, 2.53125, 2.09375, 3.375, + 3.875, 3.96875, 3.625, 4.625, 4, 2, 1.14844, 3.53125, 2.84375, 4.75, + 5.53125, 5.65625, 5.125, 6.65625, 5.6875, 2.71875, 1.42188, 5, 3.96875, 6.875}, + std::vector{0.605469, 0.671875, 0.761719, 0.714844, 0.753906, 0.605469, 0.625, 0.652344, 0.761719, + 0.625, 0.640625, 0.621094, 0.664062, 0.632812, 0.664062, 0.660156, 0.707031, 0.664062, + 0.753906, 0.691406, 0.738281, 0.671875, 0.652344, 0.714844, 0.6875, 0.636719, 0.675781, + 0.746094, 0.640625, 0.609375, 0.6875, 0.707031, 0.746094, 0.671875, 0.675781, 0.691406, + 0.671875, 0.625, 0.753906, 0.636719, 0.730469, 0.730469, 0.714844, 0.753906, 0.730469, + 0.652344, 0.621094, 0.714844, 0.6875, 0.761719}), GRUSequenceParams( - 5, 10, 10, 5, - 0.f, true, op::RecurrentSequenceDirection::BIDIRECTIONAL, + 5, + 10, + 10, + 5, + 0.f, + true, + op::RecurrentSequenceDirection::BIDIRECTIONAL, ET, std::vector{ - 1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, - 3.125, 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, - 8.625, 4.75, 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 1.25, - 5.8125, 7.03125, 9.25, 4.75, 5.125, 6, 4.875, 2.25, 9.4375, 2.78125, - 8, 8.1875, 7.4375, 9.6875, 8.25, 3.8125, 1.82812, 7.21875, 5.65625, 8.875, - 8.75, 9, 8.4375, 1.76562, 8.4375, 1.34375, 3.45312, 2.53125, 1.53125, 8.875, - 7.03125, 1.88281, 6.3125, 4.78125, 7.03125, 9.625, 4.6875, 5.8125, 2.78125, 7.21875, - 3.59375, 3.84375, 2.28125, 7.1875, 8, 8.5, 4.6875, 1.16406, 1.30469, 7.75, - 6.625, 9.875, 6.9375, 7.71875, 3.6875, 3.53125, 5, 8.125, 3, 1.92188, - 1.65625, 5, 5.21875, 9.125, 1.85938, 3.64062, 9.125, 3.59375, 2.0625, 2.15625, - 5.71875, 1.17188, 1.75, 7.125, 9.25, 2.90625, 9.1875, 3.375, 3.6875, 5.4375, - 6.25, 1.47656, 6.0625, 6.15625, 6.5, 2.3125, 9.625, 6.3125, 3.34375, 7.3125, - 3.07812, 1.92188, 5.8125, 4.71875, 9.5, 7.25, 5.4375, 4.71875, 5.875, 1.45312, - 7.875, 5.8125, 1.40625, 6.96875, 2.25, 5.625, 8.125, 9.5, 1.26562, 6.25, - 8.9375, 9.125, 5.875, 2.23438, 5.03125, 2.25, 9, 8.25, 4.375, 4.5625, - 5.84375, 2.48438, 6.875, 9.375, 4.25, 4.125, 6.125, 7.75, 6.75, 7.53125, - 2.125, 8.9375, 7.1875, 6.625, 6.8125, 7.75, 4.1875, 4.125, 7.875, 3.42188, - 4.1875, 9.0625, 7.75, 4.84375, 8.875, 9.625, 1.10156, 6.96875, 5.46875, 6.59375, - 1.66406, 2.03125, 8.0625, 9.5, 1.57812, 5.0625, 4.1875, 6.1875, 9.5, 4.6875, - 4.40625, 3.125, 7.875, 9.125, 7.9375, 6.15625, 3.71875, 1.02344, 7.9375, 6.5625, - 2.375, 3.9375, 6.1875, 5.75, 1.07812, 9, 7.375, 4.1875, 5.25, 9.125, - 7.875, 6.625, 5.1875, 1.14062, 3.40625, 9.375, 8.5, 7.1875, 5.9375, 10, - 1.625, 2.54688, 5.25, 2.21875, 7.6875, 9.375, 2.71875, 7.25, 5.1875, 1.59375, - 3.0625, 7.8125, 5.5625, 7.78125, 2.875, 9.25, 1.4375, 7.375, 5.65625, 2.125, - 2.54688, 1.17188, 4.5625, 1.23438, 1.96875, 1.25, 5.5625, 3.21875, 1.92188, 10}, - std::vector{ - 1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, - 3.125, 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, - 8.625, 4.75, 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 1.25, - 5.8125, 7.03125, 9.25, 4.75, 5.125, 6, 4.875, 2.25, 9.4375, 2.78125, - 8, 8.1875, 7.4375, 9.6875, 8.25, 3.8125, 1.82812, 7.21875, 5.65625, 8.875, - 8.75, 9, 8.4375, 1.76562, 8.4375, 1.34375, 3.45312, 2.53125, 1.53125, 8.875, - 7.03125, 1.88281, 6.3125, 4.78125, 7.03125, 9.625, 4.6875, 5.8125, 2.78125, 7.21875, - 3.59375, 3.84375, 2.28125, 7.1875, 8, 8.5, 4.6875, 1.16406, 1.30469, 7.75, - 6.625, 9.875, 6.9375, 7.71875, 3.6875, 3.53125, 5, 8.125, 3, 1.92188, - 1.65625, 5, 5.21875, 9.125, 1.85938, 3.64062, 9.125, 3.59375, 2.0625, 10}, + 1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, 3.125, + 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, 8.625, 4.75, + 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 1.25, 5.8125, 7.03125, 9.25, + 4.75, 5.125, 6, 4.875, 2.25, 9.4375, 2.78125, 8, 8.1875, 7.4375, 9.6875, + 8.25, 3.8125, 1.82812, 7.21875, 5.65625, 8.875, 8.75, 9, 8.4375, 1.76562, 8.4375, + 1.34375, 3.45312, 2.53125, 1.53125, 8.875, 7.03125, 1.88281, 6.3125, 4.78125, 7.03125, 9.625, + 4.6875, 5.8125, 2.78125, 7.21875, 3.59375, 3.84375, 2.28125, 7.1875, 8, 8.5, 4.6875, + 1.16406, 1.30469, 7.75, 6.625, 9.875, 6.9375, 7.71875, 3.6875, 3.53125, 5, 8.125, + 3, 1.92188, 1.65625, 5, 5.21875, 9.125, 1.85938, 3.64062, 9.125, 3.59375, 2.0625, + 2.15625, 5.71875, 1.17188, 1.75, 7.125, 9.25, 2.90625, 9.1875, 3.375, 3.6875, 5.4375, + 6.25, 1.47656, 6.0625, 6.15625, 6.5, 2.3125, 9.625, 6.3125, 3.34375, 7.3125, 3.07812, + 1.92188, 5.8125, 4.71875, 9.5, 7.25, 5.4375, 4.71875, 5.875, 1.45312, 7.875, 5.8125, + 1.40625, 6.96875, 2.25, 5.625, 8.125, 9.5, 1.26562, 6.25, 8.9375, 9.125, 5.875, + 2.23438, 5.03125, 2.25, 9, 8.25, 4.375, 4.5625, 5.84375, 2.48438, 6.875, 9.375, + 4.25, 4.125, 6.125, 7.75, 6.75, 7.53125, 2.125, 8.9375, 7.1875, 6.625, 6.8125, + 7.75, 4.1875, 4.125, 7.875, 3.42188, 4.1875, 9.0625, 7.75, 4.84375, 8.875, 9.625, + 1.10156, 6.96875, 5.46875, 6.59375, 1.66406, 2.03125, 8.0625, 9.5, 1.57812, 5.0625, 4.1875, + 6.1875, 9.5, 4.6875, 4.40625, 3.125, 7.875, 9.125, 7.9375, 6.15625, 3.71875, 1.02344, + 7.9375, 6.5625, 2.375, 3.9375, 6.1875, 5.75, 1.07812, 9, 7.375, 4.1875, 5.25, + 9.125, 7.875, 6.625, 5.1875, 1.14062, 3.40625, 9.375, 8.5, 7.1875, 5.9375, 10, + 1.625, 2.54688, 5.25, 2.21875, 7.6875, 9.375, 2.71875, 7.25, 5.1875, 1.59375, 3.0625, + 7.8125, 5.5625, 7.78125, 2.875, 9.25, 1.4375, 7.375, 5.65625, 2.125, 2.54688, 1.17188, + 4.5625, 1.23438, 1.96875, 1.25, 5.5625, 3.21875, 1.92188, 10}, + std::vector{1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, + 3.125, 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, + 8.625, 4.75, 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 1.25, + 5.8125, 7.03125, 9.25, 4.75, 5.125, 6, 4.875, 2.25, 9.4375, 2.78125, + 8, 8.1875, 7.4375, 9.6875, 8.25, 3.8125, 1.82812, 7.21875, 5.65625, 8.875, + 8.75, 9, 8.4375, 1.76562, 8.4375, 1.34375, 3.45312, 2.53125, 1.53125, 8.875, + 7.03125, 1.88281, 6.3125, 4.78125, 7.03125, 9.625, 4.6875, 5.8125, 2.78125, 7.21875, + 3.59375, 3.84375, 2.28125, 7.1875, 8, 8.5, 4.6875, 1.16406, 1.30469, 7.75, + 6.625, 9.875, 6.9375, 7.71875, 3.6875, 3.53125, 5, 8.125, 3, 1.92188, + 1.65625, 5, 5.21875, 9.125, 1.85938, 3.64062, 9.125, 3.59375, 2.0625, 10}, std::vector{5, 5, 5, 5, 5}, std::vector{ - 1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, - 3.125, 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, - 8.625, 4.75, 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 1.25, - 5.8125, 7.03125, 9.25, 4.75, 5.125, 6, 4.875, 2.25, 9.4375, 2.78125, - 8, 8.1875, 7.4375, 9.6875, 8.25, 3.8125, 1.82812, 7.21875, 5.65625, 8.875, - 8.75, 9, 8.4375, 1.76562, 8.4375, 1.34375, 3.45312, 2.53125, 1.53125, 8.875, - 7.03125, 1.88281, 6.3125, 4.78125, 7.03125, 9.625, 4.6875, 5.8125, 2.78125, 7.21875, - 3.59375, 3.84375, 2.28125, 7.1875, 8, 8.5, 4.6875, 1.16406, 1.30469, 7.75, - 6.625, 9.875, 6.9375, 7.71875, 3.6875, 3.53125, 5, 8.125, 3, 1.92188, - 1.65625, 5, 5.21875, 9.125, 1.85938, 3.64062, 9.125, 3.59375, 2.0625, 2.15625, - 5.71875, 1.17188, 1.75, 7.125, 9.25, 2.90625, 9.1875, 3.375, 3.6875, 5.4375, - 6.25, 1.47656, 6.0625, 6.15625, 6.5, 2.3125, 9.625, 6.3125, 3.34375, 7.3125, - 3.07812, 1.92188, 5.8125, 4.71875, 9.5, 7.25, 5.4375, 4.71875, 5.875, 1.45312, - 7.875, 5.8125, 1.40625, 6.96875, 2.25, 5.625, 8.125, 9.5, 1.26562, 6.25, - 8.9375, 9.125, 5.875, 2.23438, 5.03125, 2.25, 9, 8.25, 4.375, 4.5625, - 5.84375, 2.48438, 6.875, 9.375, 4.25, 4.125, 6.125, 7.75, 6.75, 7.53125, - 2.125, 8.9375, 7.1875, 6.625, 6.8125, 7.75, 4.1875, 4.125, 7.875, 3.42188, - 4.1875, 9.0625, 7.75, 4.84375, 8.875, 9.625, 1.10156, 6.96875, 5.46875, 6.59375, - 1.66406, 2.03125, 8.0625, 9.5, 1.57812, 5.0625, 4.1875, 6.1875, 9.5, 4.6875, - 4.40625, 3.125, 7.875, 9.125, 7.9375, 6.15625, 3.71875, 1.02344, 7.9375, 6.5625, - 2.375, 3.9375, 6.1875, 5.75, 1.07812, 9, 7.375, 4.1875, 5.25, 9.125, - 7.875, 6.625, 5.1875, 1.14062, 3.40625, 9.375, 8.5, 7.1875, 5.9375, 10, - 1.625, 2.54688, 5.25, 2.21875, 7.6875, 9.375, 2.71875, 7.25, 5.1875, 1.59375, - 3.0625, 7.8125, 5.5625, 7.78125, 2.875, 9.25, 1.4375, 7.375, 5.65625, 2.125, - 2.54688, 1.17188, 4.5625, 1.23438, 1.96875, 1.25, 5.5625, 3.21875, 1.92188, 8.75, - 3.59375, 5.84375, 3.07812, 5.96875, 9.6875, 8.5625, 3.5, 2.125, 3.09375, 3.5, - 1.82031, 6.25, 6.125, 9.75, 4.75, 6.0625, 4.3125, 1.16406, 8.3125, 8.1875, - 3.59375, 3.09375, 7.4375, 8.25, 6.5, 4.5, 4.8125, 8.75, 7.75, 7.71875, - 4.84375, 6, 4.84375, 2.21875, 4.25, 1.53906, 2.375, 2.09375, 9.375, 1.39844, - 9.25, 1.96875, 8, 3.03125, 6.5625, 7.40625, 1.32031, 6.03125, 6.875, 1.10938, - 2.15625, 1.64062, 3.65625, 9.6875, 4.25, 6.125, 3.46875, 2.82812, 1.66406, 3.26562, - 2.375, 7.6875, 2.45312, 2.75, 9.4375, 6.21875, 4.3125, 9.75, 1.45312, 8.625, - 7.65625, 3.15625, 3.6875, 5.4375, 2.84375, 6.5625, 9.8125, 8.4375, 9, 2.40625, - 7.8125, 1.16406, 6.875, 1.625, 1.35938, 5.375, 8.3125, 6.4375, 7.875, 6.125, - 5.09375, 3.84375, 5.78125, 9.875, 1.98438, 6.1875, 2.3125, 4.40625, 5.5625, 5.9375, - 2.9375, 7.6875, 9.25, 7, 5.15625, 3.375, 2.1875, 1.59375, 7.875, 4.3125, - 2.90625, 6.65625, 1.67188, 2.89062, 1.85938, 7.75, 2.45312, 1.59375, 4.1875, 3.34375, - 1.85938, 8.25, 2.28125, 2.73438, 9.375, 6.75, 6.1875, 5.71875, 8.5, 9.3125, - 6.625, 3.375, 3.90625, 1.59375, 7.5625, 7.625, 5.6875, 7.9375, 7.625, 9.125, - 2.48438, 9.375, 7.1875, 1.125, 4.8125, 3.09375, 7.5625, 6.5625, 7.8125, 9.5, - 4.5625, 9.5, 9.3125, 6, 2.82812, 9.25, 1.07031, 6.75, 9.3125, 4.5, - 3.65625, 5.375, 2.5, 6.4375, 1.21875, 5.9375, 5.0625, 9.3125, 8.25, 9.25, - 4.3125, 4.5625, 6.46875, 9.625, 1.3125, 2.5625, 4.1875, 2.125, 1.70312, 2.21875, - 7.25, 5.5625, 1.10938, 1.1875, 5.125, 9.5, 9.625, 8.4375, 4, 1.13281, - 5.25, 2.57812, 1.94531, 3.98438, 5.5, 2.17188, 9, 8.25, 5.8125, 4.09375, - 3.53125, 9.4375, 4.1875, 6.25, 9.0625, 8.875, 3.17188, 8.625, 1.21875, 9.125, - 9.6875, 5.125, 4.875, 5.90625, 4.125, 8.125, 6.1875, 3.5625, 2.125, 5.40625, - 9.5, 6.375, 3.8125, 1.14062, 9.5625, 6.3125, 2.96875, 4.875, 3.23438, 8.25, - 8.75, 3.84375, 3.125, 9, 8.3125, 6.1875, 5.875, 2.65625, 2.71875, 8.0625, - 6.3125, 6.5, 1.42969, 1.48438, 1.14062, 4.78125, 1.44531, 7.125, 4.59375, 9.25, - 6.1875, 1, 8.75, 9.75, 8.0625, 4.375, 3.28125, 9.75, 1.73438, 6.4375, - 2.40625, 8.4375, 2.875, 6.1875, 4.75, 6.625, 4.125, 3.5625, 7.3125, 6.28125, - 7.25, 7.75, 1.67188, 8.75, 1.32812, 7.78125, 8.125, 7.28125, 9.125, 8.75, - 1.03906, 3.90625, 3.375, 7.03125, 5.1875, 5.0625, 4.25, 4.4375, 3.15625, 4.6875, - 1.20312, 4.625, 5.78125, 3.84375, 2.15625, 6.59375, 6.0625, 4.875, 2.5, 9.75, - 4.78125, 7.09375, 7.15625, 2.78125, 3.46875, 4.8125, 1.09375, 4.0625, 2.96875, 8.125, - 1.28125, 8.875, 9.375, 9.125, 8, 6.9375, 5.65625, 3.4375, 1.14062, 3.26562, - 3.6875, 8.6875, 5.875, 5.75, 8.75, 8.25, 2.65625, 6.125, 1.75, 7.59375, - 1.39844, 5.65625, 5, 7.9375, 1.17188, 6.125, 1.60156, 5.1875, 8.25, 4.0625, - 6.71875, 1.60938, 7.9375, 4.375, 7.34375, 1.71875, 3.14062, 9.875, 1.39844, 10}, + 1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, 3.125, + 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, 8.625, 4.75, + 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 1.25, 5.8125, 7.03125, 9.25, + 4.75, 5.125, 6, 4.875, 2.25, 9.4375, 2.78125, 8, 8.1875, 7.4375, 9.6875, + 8.25, 3.8125, 1.82812, 7.21875, 5.65625, 8.875, 8.75, 9, 8.4375, 1.76562, 8.4375, + 1.34375, 3.45312, 2.53125, 1.53125, 8.875, 7.03125, 1.88281, 6.3125, 4.78125, 7.03125, 9.625, + 4.6875, 5.8125, 2.78125, 7.21875, 3.59375, 3.84375, 2.28125, 7.1875, 8, 8.5, 4.6875, + 1.16406, 1.30469, 7.75, 6.625, 9.875, 6.9375, 7.71875, 3.6875, 3.53125, 5, 8.125, + 3, 1.92188, 1.65625, 5, 5.21875, 9.125, 1.85938, 3.64062, 9.125, 3.59375, 2.0625, + 2.15625, 5.71875, 1.17188, 1.75, 7.125, 9.25, 2.90625, 9.1875, 3.375, 3.6875, 5.4375, + 6.25, 1.47656, 6.0625, 6.15625, 6.5, 2.3125, 9.625, 6.3125, 3.34375, 7.3125, 3.07812, + 1.92188, 5.8125, 4.71875, 9.5, 7.25, 5.4375, 4.71875, 5.875, 1.45312, 7.875, 5.8125, + 1.40625, 6.96875, 2.25, 5.625, 8.125, 9.5, 1.26562, 6.25, 8.9375, 9.125, 5.875, + 2.23438, 5.03125, 2.25, 9, 8.25, 4.375, 4.5625, 5.84375, 2.48438, 6.875, 9.375, + 4.25, 4.125, 6.125, 7.75, 6.75, 7.53125, 2.125, 8.9375, 7.1875, 6.625, 6.8125, + 7.75, 4.1875, 4.125, 7.875, 3.42188, 4.1875, 9.0625, 7.75, 4.84375, 8.875, 9.625, + 1.10156, 6.96875, 5.46875, 6.59375, 1.66406, 2.03125, 8.0625, 9.5, 1.57812, 5.0625, 4.1875, + 6.1875, 9.5, 4.6875, 4.40625, 3.125, 7.875, 9.125, 7.9375, 6.15625, 3.71875, 1.02344, + 7.9375, 6.5625, 2.375, 3.9375, 6.1875, 5.75, 1.07812, 9, 7.375, 4.1875, 5.25, + 9.125, 7.875, 6.625, 5.1875, 1.14062, 3.40625, 9.375, 8.5, 7.1875, 5.9375, 10, + 1.625, 2.54688, 5.25, 2.21875, 7.6875, 9.375, 2.71875, 7.25, 5.1875, 1.59375, 3.0625, + 7.8125, 5.5625, 7.78125, 2.875, 9.25, 1.4375, 7.375, 5.65625, 2.125, 2.54688, 1.17188, + 4.5625, 1.23438, 1.96875, 1.25, 5.5625, 3.21875, 1.92188, 8.75, 3.59375, 5.84375, 3.07812, + 5.96875, 9.6875, 8.5625, 3.5, 2.125, 3.09375, 3.5, 1.82031, 6.25, 6.125, 9.75, + 4.75, 6.0625, 4.3125, 1.16406, 8.3125, 8.1875, 3.59375, 3.09375, 7.4375, 8.25, 6.5, + 4.5, 4.8125, 8.75, 7.75, 7.71875, 4.84375, 6, 4.84375, 2.21875, 4.25, 1.53906, + 2.375, 2.09375, 9.375, 1.39844, 9.25, 1.96875, 8, 3.03125, 6.5625, 7.40625, 1.32031, + 6.03125, 6.875, 1.10938, 2.15625, 1.64062, 3.65625, 9.6875, 4.25, 6.125, 3.46875, 2.82812, + 1.66406, 3.26562, 2.375, 7.6875, 2.45312, 2.75, 9.4375, 6.21875, 4.3125, 9.75, 1.45312, + 8.625, 7.65625, 3.15625, 3.6875, 5.4375, 2.84375, 6.5625, 9.8125, 8.4375, 9, 2.40625, + 7.8125, 1.16406, 6.875, 1.625, 1.35938, 5.375, 8.3125, 6.4375, 7.875, 6.125, 5.09375, + 3.84375, 5.78125, 9.875, 1.98438, 6.1875, 2.3125, 4.40625, 5.5625, 5.9375, 2.9375, 7.6875, + 9.25, 7, 5.15625, 3.375, 2.1875, 1.59375, 7.875, 4.3125, 2.90625, 6.65625, 1.67188, + 2.89062, 1.85938, 7.75, 2.45312, 1.59375, 4.1875, 3.34375, 1.85938, 8.25, 2.28125, 2.73438, + 9.375, 6.75, 6.1875, 5.71875, 8.5, 9.3125, 6.625, 3.375, 3.90625, 1.59375, 7.5625, + 7.625, 5.6875, 7.9375, 7.625, 9.125, 2.48438, 9.375, 7.1875, 1.125, 4.8125, 3.09375, + 7.5625, 6.5625, 7.8125, 9.5, 4.5625, 9.5, 9.3125, 6, 2.82812, 9.25, 1.07031, + 6.75, 9.3125, 4.5, 3.65625, 5.375, 2.5, 6.4375, 1.21875, 5.9375, 5.0625, 9.3125, + 8.25, 9.25, 4.3125, 4.5625, 6.46875, 9.625, 1.3125, 2.5625, 4.1875, 2.125, 1.70312, + 2.21875, 7.25, 5.5625, 1.10938, 1.1875, 5.125, 9.5, 9.625, 8.4375, 4, 1.13281, + 5.25, 2.57812, 1.94531, 3.98438, 5.5, 2.17188, 9, 8.25, 5.8125, 4.09375, 3.53125, + 9.4375, 4.1875, 6.25, 9.0625, 8.875, 3.17188, 8.625, 1.21875, 9.125, 9.6875, 5.125, + 4.875, 5.90625, 4.125, 8.125, 6.1875, 3.5625, 2.125, 5.40625, 9.5, 6.375, 3.8125, + 1.14062, 9.5625, 6.3125, 2.96875, 4.875, 3.23438, 8.25, 8.75, 3.84375, 3.125, 9, + 8.3125, 6.1875, 5.875, 2.65625, 2.71875, 8.0625, 6.3125, 6.5, 1.42969, 1.48438, 1.14062, + 4.78125, 1.44531, 7.125, 4.59375, 9.25, 6.1875, 1, 8.75, 9.75, 8.0625, 4.375, + 3.28125, 9.75, 1.73438, 6.4375, 2.40625, 8.4375, 2.875, 6.1875, 4.75, 6.625, 4.125, + 3.5625, 7.3125, 6.28125, 7.25, 7.75, 1.67188, 8.75, 1.32812, 7.78125, 8.125, 7.28125, + 9.125, 8.75, 1.03906, 3.90625, 3.375, 7.03125, 5.1875, 5.0625, 4.25, 4.4375, 3.15625, + 4.6875, 1.20312, 4.625, 5.78125, 3.84375, 2.15625, 6.59375, 6.0625, 4.875, 2.5, 9.75, + 4.78125, 7.09375, 7.15625, 2.78125, 3.46875, 4.8125, 1.09375, 4.0625, 2.96875, 8.125, 1.28125, + 8.875, 9.375, 9.125, 8, 6.9375, 5.65625, 3.4375, 1.14062, 3.26562, 3.6875, 8.6875, + 5.875, 5.75, 8.75, 8.25, 2.65625, 6.125, 1.75, 7.59375, 1.39844, 5.65625, 5, + 7.9375, 1.17188, 6.125, 1.60156, 5.1875, 8.25, 4.0625, 6.71875, 1.60938, 7.9375, 4.375, + 7.34375, 1.71875, 3.14062, 9.875, 1.39844, 10}, std::vector{ - 1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, - 3.125, 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, - 8.625, 4.75, 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 1.25, - 5.8125, 7.03125, 9.25, 4.75, 5.125, 6, 4.875, 2.25, 9.4375, 2.78125, - 8, 8.1875, 7.4375, 9.6875, 8.25, 3.8125, 1.82812, 7.21875, 5.65625, 8.875, - 8.75, 9, 8.4375, 1.76562, 8.4375, 1.34375, 3.45312, 2.53125, 1.53125, 8.875, - 7.03125, 1.88281, 6.3125, 4.78125, 7.03125, 9.625, 4.6875, 5.8125, 2.78125, 7.21875, - 3.59375, 3.84375, 2.28125, 7.1875, 8, 8.5, 4.6875, 1.16406, 1.30469, 7.75, - 6.625, 9.875, 6.9375, 7.71875, 3.6875, 3.53125, 5, 8.125, 3, 1.92188, - 1.65625, 5, 5.21875, 9.125, 1.85938, 3.64062, 9.125, 3.59375, 2.0625, 2.15625, - 5.71875, 1.17188, 1.75, 7.125, 9.25, 2.90625, 9.1875, 3.375, 3.6875, 5.4375, - 6.25, 1.47656, 6.0625, 6.15625, 6.5, 2.3125, 9.625, 6.3125, 3.34375, 7.3125, - 3.07812, 1.92188, 5.8125, 4.71875, 9.5, 7.25, 5.4375, 4.71875, 5.875, 1.45312, - 7.875, 5.8125, 1.40625, 6.96875, 2.25, 5.625, 8.125, 9.5, 1.26562, 6.25, - 8.9375, 9.125, 5.875, 2.23438, 5.03125, 2.25, 9, 8.25, 4.375, 4.5625, - 5.84375, 2.48438, 6.875, 9.375, 4.25, 4.125, 6.125, 7.75, 6.75, 7.53125, - 2.125, 8.9375, 7.1875, 6.625, 6.8125, 7.75, 4.1875, 4.125, 7.875, 3.42188, - 4.1875, 9.0625, 7.75, 4.84375, 8.875, 9.625, 1.10156, 6.96875, 5.46875, 6.59375, - 1.66406, 2.03125, 8.0625, 9.5, 1.57812, 5.0625, 4.1875, 6.1875, 9.5, 4.6875, - 4.40625, 3.125, 7.875, 9.125, 7.9375, 6.15625, 3.71875, 1.02344, 7.9375, 6.5625, - 2.375, 3.9375, 6.1875, 5.75, 1.07812, 9, 7.375, 4.1875, 5.25, 9.125, - 7.875, 6.625, 5.1875, 1.14062, 3.40625, 9.375, 8.5, 7.1875, 5.9375, 10, - 1.625, 2.54688, 5.25, 2.21875, 7.6875, 9.375, 2.71875, 7.25, 5.1875, 1.59375, - 3.0625, 7.8125, 5.5625, 7.78125, 2.875, 9.25, 1.4375, 7.375, 5.65625, 2.125, - 2.54688, 1.17188, 4.5625, 1.23438, 1.96875, 1.25, 5.5625, 3.21875, 1.92188, 8.75, - 3.59375, 5.84375, 3.07812, 5.96875, 9.6875, 8.5625, 3.5, 2.125, 3.09375, 3.5, - 1.82031, 6.25, 6.125, 9.75, 4.75, 6.0625, 4.3125, 1.16406, 8.3125, 8.1875, - 3.59375, 3.09375, 7.4375, 8.25, 6.5, 4.5, 4.8125, 8.75, 7.75, 7.71875, - 4.84375, 6, 4.84375, 2.21875, 4.25, 1.53906, 2.375, 2.09375, 9.375, 1.39844, - 9.25, 1.96875, 8, 3.03125, 6.5625, 7.40625, 1.32031, 6.03125, 6.875, 1.10938, - 2.15625, 1.64062, 3.65625, 9.6875, 4.25, 6.125, 3.46875, 2.82812, 1.66406, 3.26562, - 2.375, 7.6875, 2.45312, 2.75, 9.4375, 6.21875, 4.3125, 9.75, 1.45312, 8.625, - 7.65625, 3.15625, 3.6875, 5.4375, 2.84375, 6.5625, 9.8125, 8.4375, 9, 2.40625, - 7.8125, 1.16406, 6.875, 1.625, 1.35938, 5.375, 8.3125, 6.4375, 7.875, 6.125, - 5.09375, 3.84375, 5.78125, 9.875, 1.98438, 6.1875, 2.3125, 4.40625, 5.5625, 5.9375, - 2.9375, 7.6875, 9.25, 7, 5.15625, 3.375, 2.1875, 1.59375, 7.875, 4.3125, - 2.90625, 6.65625, 1.67188, 2.89062, 1.85938, 7.75, 2.45312, 1.59375, 4.1875, 3.34375, - 1.85938, 8.25, 2.28125, 2.73438, 9.375, 6.75, 6.1875, 5.71875, 8.5, 9.3125, - 6.625, 3.375, 3.90625, 1.59375, 7.5625, 7.625, 5.6875, 7.9375, 7.625, 9.125, - 2.48438, 9.375, 7.1875, 1.125, 4.8125, 3.09375, 7.5625, 6.5625, 7.8125, 9.5, - 4.5625, 9.5, 9.3125, 6, 2.82812, 9.25, 1.07031, 6.75, 9.3125, 4.5, - 3.65625, 5.375, 2.5, 6.4375, 1.21875, 5.9375, 5.0625, 9.3125, 8.25, 9.25, - 4.3125, 4.5625, 6.46875, 9.625, 1.3125, 2.5625, 4.1875, 2.125, 1.70312, 2.21875, - 7.25, 5.5625, 1.10938, 1.1875, 5.125, 9.5, 9.625, 8.4375, 4, 1.13281, - 5.25, 2.57812, 1.94531, 3.98438, 5.5, 2.17188, 9, 8.25, 5.8125, 4.09375, - 3.53125, 9.4375, 4.1875, 6.25, 9.0625, 8.875, 3.17188, 8.625, 1.21875, 9.125, - 9.6875, 5.125, 4.875, 5.90625, 4.125, 8.125, 6.1875, 3.5625, 2.125, 5.40625, - 9.5, 6.375, 3.8125, 1.14062, 9.5625, 6.3125, 2.96875, 4.875, 3.23438, 8.25, - 8.75, 3.84375, 3.125, 9, 8.3125, 6.1875, 5.875, 2.65625, 2.71875, 8.0625, - 6.3125, 6.5, 1.42969, 1.48438, 1.14062, 4.78125, 1.44531, 7.125, 4.59375, 9.25, - 6.1875, 1, 8.75, 9.75, 8.0625, 4.375, 3.28125, 9.75, 1.73438, 6.4375, - 2.40625, 8.4375, 2.875, 6.1875, 4.75, 6.625, 4.125, 3.5625, 7.3125, 6.28125, - 7.25, 7.75, 1.67188, 8.75, 1.32812, 7.78125, 8.125, 7.28125, 9.125, 8.75, - 1.03906, 3.90625, 3.375, 7.03125, 5.1875, 5.0625, 4.25, 4.4375, 3.15625, 4.6875, - 1.20312, 4.625, 5.78125, 3.84375, 2.15625, 6.59375, 6.0625, 4.875, 2.5, 9.75, - 4.78125, 7.09375, 7.15625, 2.78125, 3.46875, 4.8125, 1.09375, 4.0625, 2.96875, 8.125, - 1.28125, 8.875, 9.375, 9.125, 8, 6.9375, 5.65625, 3.4375, 1.14062, 3.26562, - 3.6875, 8.6875, 5.875, 5.75, 8.75, 8.25, 2.65625, 6.125, 1.75, 7.59375, - 1.39844, 5.65625, 5, 7.9375, 1.17188, 6.125, 1.60156, 5.1875, 8.25, 4.0625, - 6.71875, 1.60938, 7.9375, 4.375, 7.34375, 1.71875, 3.14062, 9.875, 1.39844, 10}, + 1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, 3.125, + 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, 8.625, 4.75, + 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 1.25, 5.8125, 7.03125, 9.25, + 4.75, 5.125, 6, 4.875, 2.25, 9.4375, 2.78125, 8, 8.1875, 7.4375, 9.6875, + 8.25, 3.8125, 1.82812, 7.21875, 5.65625, 8.875, 8.75, 9, 8.4375, 1.76562, 8.4375, + 1.34375, 3.45312, 2.53125, 1.53125, 8.875, 7.03125, 1.88281, 6.3125, 4.78125, 7.03125, 9.625, + 4.6875, 5.8125, 2.78125, 7.21875, 3.59375, 3.84375, 2.28125, 7.1875, 8, 8.5, 4.6875, + 1.16406, 1.30469, 7.75, 6.625, 9.875, 6.9375, 7.71875, 3.6875, 3.53125, 5, 8.125, + 3, 1.92188, 1.65625, 5, 5.21875, 9.125, 1.85938, 3.64062, 9.125, 3.59375, 2.0625, + 2.15625, 5.71875, 1.17188, 1.75, 7.125, 9.25, 2.90625, 9.1875, 3.375, 3.6875, 5.4375, + 6.25, 1.47656, 6.0625, 6.15625, 6.5, 2.3125, 9.625, 6.3125, 3.34375, 7.3125, 3.07812, + 1.92188, 5.8125, 4.71875, 9.5, 7.25, 5.4375, 4.71875, 5.875, 1.45312, 7.875, 5.8125, + 1.40625, 6.96875, 2.25, 5.625, 8.125, 9.5, 1.26562, 6.25, 8.9375, 9.125, 5.875, + 2.23438, 5.03125, 2.25, 9, 8.25, 4.375, 4.5625, 5.84375, 2.48438, 6.875, 9.375, + 4.25, 4.125, 6.125, 7.75, 6.75, 7.53125, 2.125, 8.9375, 7.1875, 6.625, 6.8125, + 7.75, 4.1875, 4.125, 7.875, 3.42188, 4.1875, 9.0625, 7.75, 4.84375, 8.875, 9.625, + 1.10156, 6.96875, 5.46875, 6.59375, 1.66406, 2.03125, 8.0625, 9.5, 1.57812, 5.0625, 4.1875, + 6.1875, 9.5, 4.6875, 4.40625, 3.125, 7.875, 9.125, 7.9375, 6.15625, 3.71875, 1.02344, + 7.9375, 6.5625, 2.375, 3.9375, 6.1875, 5.75, 1.07812, 9, 7.375, 4.1875, 5.25, + 9.125, 7.875, 6.625, 5.1875, 1.14062, 3.40625, 9.375, 8.5, 7.1875, 5.9375, 10, + 1.625, 2.54688, 5.25, 2.21875, 7.6875, 9.375, 2.71875, 7.25, 5.1875, 1.59375, 3.0625, + 7.8125, 5.5625, 7.78125, 2.875, 9.25, 1.4375, 7.375, 5.65625, 2.125, 2.54688, 1.17188, + 4.5625, 1.23438, 1.96875, 1.25, 5.5625, 3.21875, 1.92188, 8.75, 3.59375, 5.84375, 3.07812, + 5.96875, 9.6875, 8.5625, 3.5, 2.125, 3.09375, 3.5, 1.82031, 6.25, 6.125, 9.75, + 4.75, 6.0625, 4.3125, 1.16406, 8.3125, 8.1875, 3.59375, 3.09375, 7.4375, 8.25, 6.5, + 4.5, 4.8125, 8.75, 7.75, 7.71875, 4.84375, 6, 4.84375, 2.21875, 4.25, 1.53906, + 2.375, 2.09375, 9.375, 1.39844, 9.25, 1.96875, 8, 3.03125, 6.5625, 7.40625, 1.32031, + 6.03125, 6.875, 1.10938, 2.15625, 1.64062, 3.65625, 9.6875, 4.25, 6.125, 3.46875, 2.82812, + 1.66406, 3.26562, 2.375, 7.6875, 2.45312, 2.75, 9.4375, 6.21875, 4.3125, 9.75, 1.45312, + 8.625, 7.65625, 3.15625, 3.6875, 5.4375, 2.84375, 6.5625, 9.8125, 8.4375, 9, 2.40625, + 7.8125, 1.16406, 6.875, 1.625, 1.35938, 5.375, 8.3125, 6.4375, 7.875, 6.125, 5.09375, + 3.84375, 5.78125, 9.875, 1.98438, 6.1875, 2.3125, 4.40625, 5.5625, 5.9375, 2.9375, 7.6875, + 9.25, 7, 5.15625, 3.375, 2.1875, 1.59375, 7.875, 4.3125, 2.90625, 6.65625, 1.67188, + 2.89062, 1.85938, 7.75, 2.45312, 1.59375, 4.1875, 3.34375, 1.85938, 8.25, 2.28125, 2.73438, + 9.375, 6.75, 6.1875, 5.71875, 8.5, 9.3125, 6.625, 3.375, 3.90625, 1.59375, 7.5625, + 7.625, 5.6875, 7.9375, 7.625, 9.125, 2.48438, 9.375, 7.1875, 1.125, 4.8125, 3.09375, + 7.5625, 6.5625, 7.8125, 9.5, 4.5625, 9.5, 9.3125, 6, 2.82812, 9.25, 1.07031, + 6.75, 9.3125, 4.5, 3.65625, 5.375, 2.5, 6.4375, 1.21875, 5.9375, 5.0625, 9.3125, + 8.25, 9.25, 4.3125, 4.5625, 6.46875, 9.625, 1.3125, 2.5625, 4.1875, 2.125, 1.70312, + 2.21875, 7.25, 5.5625, 1.10938, 1.1875, 5.125, 9.5, 9.625, 8.4375, 4, 1.13281, + 5.25, 2.57812, 1.94531, 3.98438, 5.5, 2.17188, 9, 8.25, 5.8125, 4.09375, 3.53125, + 9.4375, 4.1875, 6.25, 9.0625, 8.875, 3.17188, 8.625, 1.21875, 9.125, 9.6875, 5.125, + 4.875, 5.90625, 4.125, 8.125, 6.1875, 3.5625, 2.125, 5.40625, 9.5, 6.375, 3.8125, + 1.14062, 9.5625, 6.3125, 2.96875, 4.875, 3.23438, 8.25, 8.75, 3.84375, 3.125, 9, + 8.3125, 6.1875, 5.875, 2.65625, 2.71875, 8.0625, 6.3125, 6.5, 1.42969, 1.48438, 1.14062, + 4.78125, 1.44531, 7.125, 4.59375, 9.25, 6.1875, 1, 8.75, 9.75, 8.0625, 4.375, + 3.28125, 9.75, 1.73438, 6.4375, 2.40625, 8.4375, 2.875, 6.1875, 4.75, 6.625, 4.125, + 3.5625, 7.3125, 6.28125, 7.25, 7.75, 1.67188, 8.75, 1.32812, 7.78125, 8.125, 7.28125, + 9.125, 8.75, 1.03906, 3.90625, 3.375, 7.03125, 5.1875, 5.0625, 4.25, 4.4375, 3.15625, + 4.6875, 1.20312, 4.625, 5.78125, 3.84375, 2.15625, 6.59375, 6.0625, 4.875, 2.5, 9.75, + 4.78125, 7.09375, 7.15625, 2.78125, 3.46875, 4.8125, 1.09375, 4.0625, 2.96875, 8.125, 1.28125, + 8.875, 9.375, 9.125, 8, 6.9375, 5.65625, 3.4375, 1.14062, 3.26562, 3.6875, 8.6875, + 5.875, 5.75, 8.75, 8.25, 2.65625, 6.125, 1.75, 7.59375, 1.39844, 5.65625, 5, + 7.9375, 1.17188, 6.125, 1.60156, 5.1875, 8.25, 4.0625, 6.71875, 1.60938, 7.9375, 4.375, + 7.34375, 1.71875, 3.14062, 9.875, 1.39844, 10}, + std::vector{1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, + 3.125, 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, + 8.625, 4.75, 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 1.25, + 5.8125, 7.03125, 9.25, 4.75, 5.125, 6, 4.875, 2.25, 9.4375, 2.78125, + 8, 8.1875, 7.4375, 9.6875, 8.25, 3.8125, 1.82812, 7.21875, 5.65625, 8.875, + 8.75, 9, 8.4375, 1.76562, 8.4375, 1.34375, 3.45312, 2.53125, 1.53125, 8.875, + 7.03125, 1.88281, 6.3125, 4.78125, 7.03125, 9.625, 4.6875, 5.8125, 2.78125, 7.21875, + 3.59375, 3.84375, 2.28125, 7.1875, 8, 8.5, 4.6875, 1.16406, 1.30469, 10}, std::vector{ - 1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, - 3.125, 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, - 8.625, 4.75, 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 1.25, - 5.8125, 7.03125, 9.25, 4.75, 5.125, 6, 4.875, 2.25, 9.4375, 2.78125, - 8, 8.1875, 7.4375, 9.6875, 8.25, 3.8125, 1.82812, 7.21875, 5.65625, 8.875, - 8.75, 9, 8.4375, 1.76562, 8.4375, 1.34375, 3.45312, 2.53125, 1.53125, 8.875, - 7.03125, 1.88281, 6.3125, 4.78125, 7.03125, 9.625, 4.6875, 5.8125, 2.78125, 7.21875, - 3.59375, 3.84375, 2.28125, 7.1875, 8, 8.5, 4.6875, 1.16406, 1.30469, 10}, - std::vector{ - 1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, - 1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, - 1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, - 1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, - 1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, - 3.125, 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, - 3.125, 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, - 3.125, 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, - 3.125, 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, - 3.125, 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, - 8.625, 4.75, 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 1.25, - 8.625, 4.75, 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 1.25, - 8.625, 4.75, 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 1.25, - 8.625, 4.75, 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 1.25, - 8.625, 4.75, 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 1.25, - 5.8125, 7.03125, 9.25, 4.75, 5.125, 6, 4.875, 2.25, 9.4375, 2.78125, - 5.8125, 7.03125, 9.25, 4.75, 5.125, 6, 4.875, 2.25, 9.4375, 2.78125, - 5.8125, 7.03125, 9.25, 4.75, 5.125, 6, 4.875, 2.25, 9.4375, 2.78125, - 5.8125, 7.03125, 9.25, 4.75, 5.125, 6, 4.875, 2.25, 9.4375, 2.78125, - 5.8125, 7.03125, 9.25, 4.75, 5.125, 6, 4.875, 2.25, 9.4375, 2.78125, - 8, 8.1875, 7.4375, 9.6875, 8.25, 3.8125, 1.82812, 7.21875, 5.65625, 8.875, - 8, 8.1875, 7.4375, 9.6875, 8.25, 3.8125, 1.82812, 7.21875, 5.65625, 8.875, - 8, 8.1875, 7.4375, 9.6875, 8.25, 3.8125, 1.82812, 7.21875, 5.65625, 8.875, - 8, 8.1875, 7.4375, 9.6875, 8.25, 3.8125, 1.82812, 7.21875, 5.65625, 8.875, - 8, 8.1875, 7.4375, 9.6875, 8.25, 3.8125, 1.82812, 7.21875, 5.65625, 8.875, - 8.75, 9, 8.4375, 1.76562, 8.4375, 1.34375, 3.45312, 2.53125, 1.53125, 8.875, - 8.75, 9, 8.4375, 1.76562, 8.4375, 1.34375, 3.45312, 2.53125, 1.53125, 8.875, - 8.75, 9, 8.4375, 1.76562, 8.4375, 1.34375, 3.45312, 2.53125, 1.53125, 8.875, - 8.75, 9, 8.4375, 1.76562, 8.4375, 1.34375, 3.45312, 2.53125, 1.53125, 8.875, - 8.75, 9, 8.4375, 1.76562, 8.4375, 1.34375, 3.45312, 2.53125, 1.53125, 8.875, - 7.03125, 1.88281, 6.3125, 4.78125, 7.03125, 9.625, 4.6875, 5.8125, 2.78125, 7.21875, - 7.03125, 1.88281, 6.3125, 4.78125, 7.03125, 9.625, 4.6875, 5.8125, 2.78125, 7.21875, - 7.03125, 1.88281, 6.3125, 4.78125, 7.03125, 9.625, 4.6875, 5.8125, 2.78125, 7.21875, - 7.03125, 1.88281, 6.3125, 4.78125, 7.03125, 9.625, 4.6875, 5.8125, 2.78125, 7.21875, - 7.03125, 1.88281, 6.3125, 4.78125, 7.03125, 9.625, 4.6875, 5.8125, 2.78125, 7.21875, - 3.59375, 3.84375, 2.28125, 7.1875, 8, 8.5, 4.6875, 1.16406, 1.30469, 7.75, - 3.59375, 3.84375, 2.28125, 7.1875, 8, 8.5, 4.6875, 1.16406, 1.30469, 7.75, - 3.59375, 3.84375, 2.28125, 7.1875, 8, 8.5, 4.6875, 1.16406, 1.30469, 7.75, - 3.59375, 3.84375, 2.28125, 7.1875, 8, 8.5, 4.6875, 1.16406, 1.30469, 7.75, - 3.59375, 3.84375, 2.28125, 7.1875, 8, 8.5, 4.6875, 1.16406, 1.30469, 7.75, - 6.625, 9.875, 6.9375, 7.71875, 3.6875, 3.53125, 5, 8.125, 3, 1.92188, - 6.625, 9.875, 6.9375, 7.71875, 3.6875, 3.53125, 5, 8.125, 3, 1.92188, - 6.625, 9.875, 6.9375, 7.71875, 3.6875, 3.53125, 5, 8.125, 3, 1.92188, - 6.625, 9.875, 6.9375, 7.71875, 3.6875, 3.53125, 5, 8.125, 3, 1.92188, - 6.625, 9.875, 6.9375, 7.71875, 3.6875, 3.53125, 5, 8.125, 3, 1.92188, - 1.65625, 5, 5.21875, 9.125, 1.85938, 3.64062, 9.125, 3.59375, 2.0625, 10, - 1.65625, 5, 5.21875, 9.125, 1.85938, 3.64062, 9.125, 3.59375, 2.0625, 10, - 1.65625, 5, 5.21875, 9.125, 1.85938, 3.64062, 9.125, 3.59375, 2.0625, 10, - 1.65625, 5, 5.21875, 9.125, 1.85938, 3.64062, 9.125, 3.59375, 2.0625, 10, - 1.65625, 5, 5.21875, 9.125, 1.85938, 3.64062, 9.125, 3.59375, 2.0625, 10}, - std::vector{ - 1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, - 3.125, 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, - 8.625, 4.75, 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 1.25, - 5.8125, 7.03125, 9.25, 4.75, 5.125, 6, 4.875, 2.25, 9.4375, 2.78125, - 8, 8.1875, 7.4375, 9.6875, 8.25, 3.8125, 1.82812, 7.21875, 5.65625, 8.875, - 8.75, 9, 8.4375, 1.76562, 8.4375, 1.34375, 3.45312, 2.53125, 1.53125, 8.875, - 7.03125, 1.88281, 6.3125, 4.78125, 7.03125, 9.625, 4.6875, 5.8125, 2.78125, 7.21875, - 3.59375, 3.84375, 2.28125, 7.1875, 8, 8.5, 4.6875, 1.16406, 1.30469, 7.75, - 6.625, 9.875, 6.9375, 7.71875, 3.6875, 3.53125, 5, 8.125, 3, 1.92188, - 1.65625, 5, 5.21875, 9.125, 1.85938, 3.64062, 9.125, 3.59375, 2.0625, 10}), + 1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, 1, + 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, 1, 4.75, + 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, 1, 4.75, 10, + 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, 1, 4.75, 10, 7.46875, + 9.375, 1, 2.15625, 3.71875, 10, 2.3125, 3.125, 1.82812, 4.5625, 2.67188, 4.5, + 4.125, 7, 4.5625, 9.375, 5.84375, 3.125, 1.82812, 4.5625, 2.67188, 4.5, 4.125, + 7, 4.5625, 9.375, 5.84375, 3.125, 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, + 4.5625, 9.375, 5.84375, 3.125, 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, + 9.375, 5.84375, 3.125, 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, + 5.84375, 8.625, 4.75, 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 1.25, + 8.625, 4.75, 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 1.25, 8.625, + 4.75, 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 1.25, 8.625, 4.75, + 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 1.25, 8.625, 4.75, 3.8125, + 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 1.25, 5.8125, 7.03125, 9.25, 4.75, + 5.125, 6, 4.875, 2.25, 9.4375, 2.78125, 5.8125, 7.03125, 9.25, 4.75, 5.125, + 6, 4.875, 2.25, 9.4375, 2.78125, 5.8125, 7.03125, 9.25, 4.75, 5.125, 6, + 4.875, 2.25, 9.4375, 2.78125, 5.8125, 7.03125, 9.25, 4.75, 5.125, 6, 4.875, + 2.25, 9.4375, 2.78125, 5.8125, 7.03125, 9.25, 4.75, 5.125, 6, 4.875, 2.25, + 9.4375, 2.78125, 8, 8.1875, 7.4375, 9.6875, 8.25, 3.8125, 1.82812, 7.21875, 5.65625, + 8.875, 8, 8.1875, 7.4375, 9.6875, 8.25, 3.8125, 1.82812, 7.21875, 5.65625, 8.875, + 8, 8.1875, 7.4375, 9.6875, 8.25, 3.8125, 1.82812, 7.21875, 5.65625, 8.875, 8, + 8.1875, 7.4375, 9.6875, 8.25, 3.8125, 1.82812, 7.21875, 5.65625, 8.875, 8, 8.1875, + 7.4375, 9.6875, 8.25, 3.8125, 1.82812, 7.21875, 5.65625, 8.875, 8.75, 9, 8.4375, + 1.76562, 8.4375, 1.34375, 3.45312, 2.53125, 1.53125, 8.875, 8.75, 9, 8.4375, 1.76562, + 8.4375, 1.34375, 3.45312, 2.53125, 1.53125, 8.875, 8.75, 9, 8.4375, 1.76562, 8.4375, + 1.34375, 3.45312, 2.53125, 1.53125, 8.875, 8.75, 9, 8.4375, 1.76562, 8.4375, 1.34375, + 3.45312, 2.53125, 1.53125, 8.875, 8.75, 9, 8.4375, 1.76562, 8.4375, 1.34375, 3.45312, + 2.53125, 1.53125, 8.875, 7.03125, 1.88281, 6.3125, 4.78125, 7.03125, 9.625, 4.6875, 5.8125, + 2.78125, 7.21875, 7.03125, 1.88281, 6.3125, 4.78125, 7.03125, 9.625, 4.6875, 5.8125, 2.78125, + 7.21875, 7.03125, 1.88281, 6.3125, 4.78125, 7.03125, 9.625, 4.6875, 5.8125, 2.78125, 7.21875, + 7.03125, 1.88281, 6.3125, 4.78125, 7.03125, 9.625, 4.6875, 5.8125, 2.78125, 7.21875, 7.03125, + 1.88281, 6.3125, 4.78125, 7.03125, 9.625, 4.6875, 5.8125, 2.78125, 7.21875, 3.59375, 3.84375, + 2.28125, 7.1875, 8, 8.5, 4.6875, 1.16406, 1.30469, 7.75, 3.59375, 3.84375, 2.28125, + 7.1875, 8, 8.5, 4.6875, 1.16406, 1.30469, 7.75, 3.59375, 3.84375, 2.28125, 7.1875, + 8, 8.5, 4.6875, 1.16406, 1.30469, 7.75, 3.59375, 3.84375, 2.28125, 7.1875, 8, + 8.5, 4.6875, 1.16406, 1.30469, 7.75, 3.59375, 3.84375, 2.28125, 7.1875, 8, 8.5, + 4.6875, 1.16406, 1.30469, 7.75, 6.625, 9.875, 6.9375, 7.71875, 3.6875, 3.53125, 5, + 8.125, 3, 1.92188, 6.625, 9.875, 6.9375, 7.71875, 3.6875, 3.53125, 5, 8.125, + 3, 1.92188, 6.625, 9.875, 6.9375, 7.71875, 3.6875, 3.53125, 5, 8.125, 3, + 1.92188, 6.625, 9.875, 6.9375, 7.71875, 3.6875, 3.53125, 5, 8.125, 3, 1.92188, + 6.625, 9.875, 6.9375, 7.71875, 3.6875, 3.53125, 5, 8.125, 3, 1.92188, 1.65625, + 5, 5.21875, 9.125, 1.85938, 3.64062, 9.125, 3.59375, 2.0625, 10, 1.65625, 5, + 5.21875, 9.125, 1.85938, 3.64062, 9.125, 3.59375, 2.0625, 10, 1.65625, 5, 5.21875, + 9.125, 1.85938, 3.64062, 9.125, 3.59375, 2.0625, 10, 1.65625, 5, 5.21875, 9.125, + 1.85938, 3.64062, 9.125, 3.59375, 2.0625, 10, 1.65625, 5, 5.21875, 9.125, 1.85938, + 3.64062, 9.125, 3.59375, 2.0625, 10}, + std::vector{1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, + 3.125, 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, + 8.625, 4.75, 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 1.25, + 5.8125, 7.03125, 9.25, 4.75, 5.125, 6, 4.875, 2.25, 9.4375, 2.78125, + 8, 8.1875, 7.4375, 9.6875, 8.25, 3.8125, 1.82812, 7.21875, 5.65625, 8.875, + 8.75, 9, 8.4375, 1.76562, 8.4375, 1.34375, 3.45312, 2.53125, 1.53125, 8.875, + 7.03125, 1.88281, 6.3125, 4.78125, 7.03125, 9.625, 4.6875, 5.8125, 2.78125, 7.21875, + 3.59375, 3.84375, 2.28125, 7.1875, 8, 8.5, 4.6875, 1.16406, 1.30469, 7.75, + 6.625, 9.875, 6.9375, 7.71875, 3.6875, 3.53125, 5, 8.125, 3, 1.92188, + 1.65625, 5, 5.21875, 9.125, 1.85938, 3.64062, 9.125, 3.59375, 2.0625, 10}), }; return params; } std::vector generateCombinedParams() { - const std::vector> generatedParams { + const std::vector> generatedParams{ generateParams(), generateParams(), generateParams(), @@ -1379,7 +1350,9 @@ std::vector generateCombinedParams() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_GRUSequence_With_Hardcoded_Refs, ReferenceGRUSequenceTest, - testing::ValuesIn(generateCombinedParams()), ReferenceGRUSequenceTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_GRUSequence_With_Hardcoded_Refs, + ReferenceGRUSequenceTest, + testing::ValuesIn(generateCombinedParams()), + ReferenceGRUSequenceTest::getTestCaseName); -} // namespace \ No newline at end of file +} // namespace \ No newline at end of file diff --git a/src/plugins/template/tests/functional/op_reference/hard_sigmoid.cpp b/src/plugins/template/tests/functional/op_reference/hard_sigmoid.cpp index d6142cf83d7..a39d927bd50 100644 --- a/src/plugins/template/tests/functional/op_reference/hard_sigmoid.cpp +++ b/src/plugins/template/tests/functional/op_reference/hard_sigmoid.cpp @@ -2,9 +2,10 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/hard_sigmoid.hpp" + #include -#include "openvino/op/hard_sigmoid.hpp" #include "base_reference_test.hpp" #include "openvino/op/constant.hpp" @@ -14,8 +15,12 @@ using namespace ov; namespace { struct HardSigmoidParams { template - HardSigmoidParams(const ov::PartialShape& shape, const ov::element::Type& iType, const std::vector& iValues, const std::vector& oValues, - const float alpha, const float beta) + HardSigmoidParams(const ov::PartialShape& shape, + const ov::element::Type& iType, + const std::vector& iValues, + const std::vector& oValues, + const float alpha, + const float beta) : pshape(shape), inType(iType), outType(iType), @@ -53,8 +58,11 @@ public: } private: - static std::shared_ptr CreateFunction(const PartialShape& input_shape, const element::Type& input_type, - const element::Type& expected_output_type, const float alphaData, const float betaData) { + static std::shared_ptr CreateFunction(const PartialShape& input_shape, + const element::Type& input_type, + const element::Type& expected_output_type, + const float alphaData, + const float betaData) { std::vector alphaArray; std::vector betaArray; alphaArray.push_back(alphaData); @@ -63,7 +71,7 @@ private: const auto alpha = ov::op::v0::Constant::create(input_type, Shape{}, {alphaData}); const auto beta = ov::op::v0::Constant::create(input_type, Shape{}, {betaData}); const auto HardSigmoid = std::make_shared(in, alpha, beta); - return std::make_shared(NodeVector {HardSigmoid}, ParameterVector {in}); + return std::make_shared(NodeVector{HardSigmoid}, ParameterVector{in}); } }; @@ -75,28 +83,26 @@ template std::vector generateHardSigmoidFloatParams() { using T = typename element_type_traits::value_type; - std::vector hardSigmoidParams { - HardSigmoidParams(ov::PartialShape {3}, - IN_ET, - std::vector{-1.0f, 0.0f, 1.0f}, - std::vector{0.1f, 0.6f, 1.f}, - 0.5, - 0.6), - HardSigmoidParams(ov::PartialShape {2, 5}, - IN_ET, - std::vector{-3.0f, -1.0f, 0.0f, 1.0f, 3.0f, 0.5f, -0.2f, 6.0f, 8.0f, 0.1f}, - std::vector{0.0f, 0.3f, 0.5f, 0.7f, 1.0f, 0.6f, 0.46f, 1.0f, 1.0f, 0.52f}, - 0.2, - 0.5) - }; + std::vector hardSigmoidParams{ + HardSigmoidParams(ov::PartialShape{3}, + IN_ET, + std::vector{-1.0f, 0.0f, 1.0f}, + std::vector{0.1f, 0.6f, 1.f}, + 0.5, + 0.6), + HardSigmoidParams(ov::PartialShape{2, 5}, + IN_ET, + std::vector{-3.0f, -1.0f, 0.0f, 1.0f, 3.0f, 0.5f, -0.2f, 6.0f, 8.0f, 0.1f}, + std::vector{0.0f, 0.3f, 0.5f, 0.7f, 1.0f, 0.6f, 0.46f, 1.0f, 1.0f, 0.52f}, + 0.2, + 0.5)}; return hardSigmoidParams; } std::vector generateHardSigmoidCombinedParams() { - const std::vector> hardSigmoidTypeParams { + const std::vector> hardSigmoidTypeParams{ generateHardSigmoidFloatParams(), - generateHardSigmoidFloatParams() - }; + generateHardSigmoidFloatParams()}; std::vector combinedParams; for (const auto& params : hardSigmoidTypeParams) { @@ -105,7 +111,9 @@ std::vector generateHardSigmoidCombinedParams() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_HardSigmoid_With_Hardcoded_Refs, ReferenceHardSigmoidLayerTest, - testing::ValuesIn(generateHardSigmoidCombinedParams()), ReferenceHardSigmoidLayerTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_HardSigmoid_With_Hardcoded_Refs, + ReferenceHardSigmoidLayerTest, + testing::ValuesIn(generateHardSigmoidCombinedParams()), + ReferenceHardSigmoidLayerTest::getTestCaseName); -} // namespace +} // namespace diff --git a/src/plugins/template/tests/functional/op_reference/hsigmoid.cpp b/src/plugins/template/tests/functional/op_reference/hsigmoid.cpp index 3b5509578b9..3382e7419f8 100644 --- a/src/plugins/template/tests/functional/op_reference/hsigmoid.cpp +++ b/src/plugins/template/tests/functional/op_reference/hsigmoid.cpp @@ -2,9 +2,10 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/hsigmoid.hpp" + #include -#include "openvino/op/hsigmoid.hpp" #include "base_reference_test.hpp" using namespace reference_tests; @@ -13,7 +14,10 @@ using namespace ov; namespace { struct HSigmoidParams { template - HSigmoidParams(const ov::PartialShape& shape, const ov::element::Type& iType, const std::vector& iValues, const std::vector& oValues) + HSigmoidParams(const ov::PartialShape& shape, + const ov::element::Type& iType, + const std::vector& iValues, + const std::vector& oValues) : pshape(shape), inType(iType), outType(iType), @@ -45,11 +49,12 @@ public: } private: - static std::shared_ptr CreateFunction(const PartialShape& input_shape, const element::Type& input_type, - const element::Type& HSigmoidected_output_type) { + static std::shared_ptr CreateFunction(const PartialShape& input_shape, + const element::Type& input_type, + const element::Type& HSigmoidected_output_type) { const auto in = std::make_shared(input_type, input_shape); const auto HSigmoid = std::make_shared(in); - return std::make_shared(NodeVector {HSigmoid}, ParameterVector {in}); + return std::make_shared(NodeVector{HSigmoid}, ParameterVector{in}); } }; @@ -57,25 +62,23 @@ TEST_P(ReferenceHSigmoidLayerTest, CompareWithRefs) { Exec(); } - template std::vector generateHSigmoidFloatParams() { using T = typename element_type_traits::value_type; - std::vector hSigmoidParams { - HSigmoidParams(ov::PartialShape {13}, - IN_ET, - std::vector{-10.f, -5.f, -4.f, -3.f, -2.f, -1.f, 0.f, 1.f, 2.f, 3.f, 4.f, 5.f, 10.f}, - std::vector{0.f, 0.f, 0.f, 0.f, 0.16666667f, 0.33333333f, 0.5f, 0.66666667f, 0.83333333f, 1.f, 1.f, 1.f, 1.f}) - }; + std::vector hSigmoidParams{HSigmoidParams( + ov::PartialShape{13}, + IN_ET, + std::vector{-10.f, -5.f, -4.f, -3.f, -2.f, -1.f, 0.f, 1.f, 2.f, 3.f, 4.f, 5.f, 10.f}, + std::vector< + T>{0.f, 0.f, 0.f, 0.f, 0.16666667f, 0.33333333f, 0.5f, 0.66666667f, 0.83333333f, 1.f, 1.f, 1.f, 1.f})}; return hSigmoidParams; } std::vector generateHSigmoidCombinedParams() { - const std::vector> hSigmoidTypeParams { + const std::vector> hSigmoidTypeParams{ generateHSigmoidFloatParams(), - generateHSigmoidFloatParams() - }; + generateHSigmoidFloatParams()}; std::vector combinedParams; for (const auto& params : hSigmoidTypeParams) { @@ -84,7 +87,9 @@ std::vector generateHSigmoidCombinedParams() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_HSigmoid_With_Hardcoded_Refs, ReferenceHSigmoidLayerTest, - testing::ValuesIn(generateHSigmoidCombinedParams()), ReferenceHSigmoidLayerTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_HSigmoid_With_Hardcoded_Refs, + ReferenceHSigmoidLayerTest, + testing::ValuesIn(generateHSigmoidCombinedParams()), + ReferenceHSigmoidLayerTest::getTestCaseName); -} // namespace +} // namespace diff --git a/src/plugins/template/tests/functional/op_reference/hswish.cpp b/src/plugins/template/tests/functional/op_reference/hswish.cpp index fc6e6109c48..0da8582df0b 100644 --- a/src/plugins/template/tests/functional/op_reference/hswish.cpp +++ b/src/plugins/template/tests/functional/op_reference/hswish.cpp @@ -2,9 +2,10 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/hswish.hpp" + #include -#include "openvino/op/hswish.hpp" #include "base_reference_test.hpp" using namespace reference_tests; @@ -14,7 +15,10 @@ using namespace InferenceEngine; namespace { struct HSwishParams { template - HSwishParams(const ov::PartialShape& shape, const ov::element::Type& iType, const std::vector& iValues, const std::vector& oValues) + HSwishParams(const ov::PartialShape& shape, + const ov::element::Type& iType, + const std::vector& iValues, + const std::vector& oValues) : pshape(shape), inType(iType), outType(iType), @@ -46,11 +50,12 @@ public: } private: - static std::shared_ptr CreateFunction(const PartialShape& input_shape, const element::Type& input_type, - const element::Type& HSwishected_output_type) { + static std::shared_ptr CreateFunction(const PartialShape& input_shape, + const element::Type& input_type, + const element::Type& HSwishected_output_type) { const auto in = std::make_shared(input_type, input_shape); const auto HSwish = std::make_shared(in); - return std::make_shared(NodeVector {HSwish}, ParameterVector {in}); + return std::make_shared(NodeVector{HSwish}, ParameterVector{in}); } }; @@ -58,29 +63,25 @@ TEST_P(ReferenceHSwishLayerTest, CompareWithRefs) { Exec(); } - template std::vector generateHSwishFloatParams() { using T = typename element_type_traits::value_type; - std::vector hSwishParams { - HSwishParams(ov::PartialShape {2, 3}, - IN_ET, - std::vector{1.f, 8.f, -8.f, 17.f, -0.5f, -1.f}, - std::vector{0.66666667f, 8.f, 0.f, 17.f, -0.20833333f, -0.33333333f}), - HSwishParams(ov::PartialShape {2, 2, 1, 2}, - IN_ET, - std::vector{0.1f, 0.6f, 20.f, -7.f, -5.3f, 3.5f, -9.f, 11.f}, - std::vector{0.05166667f, 0.36f, 20.f, 0.f, 0.f, 3.5f, 0.f, 11.f}) - }; + std::vector hSwishParams{ + HSwishParams(ov::PartialShape{2, 3}, + IN_ET, + std::vector{1.f, 8.f, -8.f, 17.f, -0.5f, -1.f}, + std::vector{0.66666667f, 8.f, 0.f, 17.f, -0.20833333f, -0.33333333f}), + HSwishParams(ov::PartialShape{2, 2, 1, 2}, + IN_ET, + std::vector{0.1f, 0.6f, 20.f, -7.f, -5.3f, 3.5f, -9.f, 11.f}, + std::vector{0.05166667f, 0.36f, 20.f, 0.f, 0.f, 3.5f, 0.f, 11.f})}; return hSwishParams; } std::vector generateHSwishCombinedParams() { - const std::vector> hSwishTypeParams { - generateHSwishFloatParams(), - generateHSwishFloatParams() - }; + const std::vector> hSwishTypeParams{generateHSwishFloatParams(), + generateHSwishFloatParams()}; std::vector combinedParams; for (const auto& params : hSwishTypeParams) { @@ -89,7 +90,9 @@ std::vector generateHSwishCombinedParams() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_HSwish_With_Hardcoded_Refs, ReferenceHSwishLayerTest, - testing::ValuesIn(generateHSwishCombinedParams()), ReferenceHSwishLayerTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_HSwish_With_Hardcoded_Refs, + ReferenceHSwishLayerTest, + testing::ValuesIn(generateHSwishCombinedParams()), + ReferenceHSwishLayerTest::getTestCaseName); -} // namespace +} // namespace diff --git a/src/plugins/template/tests/functional/op_reference/idft.cpp b/src/plugins/template/tests/functional/op_reference/idft.cpp index 7969dcc0d41..dc3507f4edc 100644 --- a/src/plugins/template/tests/functional/op_reference/idft.cpp +++ b/src/plugins/template/tests/functional/op_reference/idft.cpp @@ -2,11 +2,12 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/idft.hpp" + #include #include "base_reference_test.hpp" #include "openvino/op/constant.hpp" -#include "openvino/op/idft.hpp" using namespace reference_tests; using namespace ov; @@ -16,13 +17,13 @@ namespace { struct IDFTParams { template IDFTParams(const Shape& input_shape, - const Shape& expected_shape, - const element::Type_t& input_type, - const element::Type_t& expected_type, - const std::vector& input_value, - const std::vector& expected_value, - const std::shared_ptr& axes, - const std::shared_ptr& signal) { + const Shape& expected_shape, + const element::Type_t& input_type, + const element::Type_t& expected_type, + const std::vector& input_value, + const std::vector& expected_value, + const std::shared_ptr& axes, + const std::shared_ptr& signal) { m_input_shape = input_shape; m_expected_shape = expected_shape; m_input_type = input_type; @@ -1157,12 +1158,12 @@ std::vector generateParamsForIDFT() { // idft1d_eval_1 IDFTParams(Shape{4, 6, 8, 2}, Shape{4, 6, 8, 2}, - ET, - ET, - idft1d_input_data_1, - data_1, - op::v0::Constant::create(element::Type_t::i64, Shape{1}, {2}), - NULL), + ET, + ET, + idft1d_input_data_1, + data_1, + op::v0::Constant::create(element::Type_t::i64, Shape{1}, {2}), + NULL), // idft1d_eval IDFTParams(Shape{2, 10, 10, 2}, Shape{2, 10, 10, 2}, @@ -1393,10 +1394,9 @@ std::vector generateCombinedParamsForIDFT() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P( - smoke_IDFT_With_Hardcoded_Refs, - ReferenceIDFTLayerTest, - ::testing::ValuesIn(generateCombinedParamsForIDFT()), - ReferenceIDFTLayerTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_IDFT_With_Hardcoded_Refs, + ReferenceIDFTLayerTest, + ::testing::ValuesIn(generateCombinedParamsForIDFT()), + ReferenceIDFTLayerTest::getTestCaseName); } // namespace diff --git a/src/plugins/template/tests/functional/op_reference/if.cpp b/src/plugins/template/tests/functional/op_reference/if.cpp index 64a3b0d99a0..81b454c0148 100644 --- a/src/plugins/template/tests/functional/op_reference/if.cpp +++ b/src/plugins/template/tests/functional/op_reference/if.cpp @@ -17,13 +17,13 @@ using namespace InferenceEngine; struct IfFunctionalBase { virtual std::shared_ptr create_function(const std::vector& if_inputs, - const std::vector& results) = 0; + const std::vector& results) = 0; IfFunctionalBase() {} }; struct IfCondConst : public IfFunctionalBase { std::shared_ptr create_function(const std::vector& if_inputs, - const std::vector& results) override { + const std::vector& results) override { OPENVINO_ASSERT(if_inputs.size() == 2, "Incorrect test case! Number of inputs is not 2."); OPENVINO_ASSERT(results.size() == 1, "Incorrect test case! Number of outputs is not 1."); @@ -55,7 +55,7 @@ struct IfCondConst : public IfFunctionalBase { struct IfCondIsNonConst : public IfFunctionalBase { std::shared_ptr create_function(const std::vector& if_inputs, - const std::vector& results) override { + const std::vector& results) override { OPENVINO_ASSERT(if_inputs.size() == 3, "Incorrect test case! Number of inputs is not 3."); OPENVINO_ASSERT(results.size() == 1, "Incorrect test case! Number of outputs is not 1."); @@ -89,7 +89,7 @@ struct IfCondIsNonConst : public IfFunctionalBase { struct IfWithoutAdditionalInputs : IfFunctionalBase { std::shared_ptr create_function(const std::vector& if_inputs, - const std::vector& results) override { + const std::vector& results) override { OPENVINO_ASSERT(if_inputs.size() == 1, "Incorrect test case! Number of inputs is not 1."); OPENVINO_ASSERT(results.size() == 1, "Incorrect test case! Number of outputs is not 1."); @@ -111,7 +111,7 @@ struct IfWithoutAdditionalInputs : IfFunctionalBase { struct IfDynamismCaseWithStaticInputs : public IfFunctionalBase { std::shared_ptr create_function(const std::vector& if_inputs, - const std::vector& results) override { + const std::vector& results) override { OPENVINO_ASSERT(if_inputs.size() == 4, "Incorrect test case! Number of inputs is not 4."); OPENVINO_ASSERT(results.size() == 2, "Incorrect test case! Number of outputs is not 2."); @@ -153,7 +153,7 @@ struct IfDynamismCaseWithStaticInputs : public IfFunctionalBase { struct IfConditionIsScalar : public IfFunctionalBase { std::shared_ptr create_function(const std::vector& if_inputs, - const std::vector& results) override { + const std::vector& results) override { OPENVINO_ASSERT(if_inputs.size() == 3, "Incorrect test case! Number of inputs is not 3."); OPENVINO_ASSERT(results.size() == 1, "Incorrect test case! Number of outputs is not 1."); @@ -189,7 +189,7 @@ struct IfConditionIsScalar : public IfFunctionalBase { struct IfConditionIsDynamic : public IfFunctionalBase { std::shared_ptr create_function(const std::vector& if_inputs, - const std::vector& results) override { + const std::vector& results) override { OPENVINO_ASSERT(if_inputs.size() == 3, "Incorrect test case! Number of inputs is not 3."); OPENVINO_ASSERT(results.size() == 1, "Incorrect test case! Number of outputs is not 1."); @@ -318,97 +318,117 @@ INSTANTIATE_TEST_SUITE_P( smoke_If_With_Hardcoded_Refs, ReferenceIfLayerTest, ::testing::Values( - IfParams( - std::make_shared(true), - std::vector{reference_tests::Tensor(Shape{1, 2, 2}, ov::element::f32, std::vector{1.0, 1.0, 1.0, 1.0}), - reference_tests::Tensor(Shape{1, 2, 2}, ov::element::f32, std::vector{2.0, 2.0, 2.0, 2.0})}, - std::vector{reference_tests::Tensor(Shape{1, 2, 2}, ov::element::f32, std::vector{2.0, 2.0, 2.0, 2.0})}, - "if_condition_const_is_true"), - IfParams( - std::make_shared(false), - std::vector{reference_tests::Tensor(Shape{1, 2, 2}, ov::element::f32, std::vector{1.0, 1.0, 1.0, 1.0}), - reference_tests::Tensor(Shape{1, 2, 2}, ov::element::f32, std::vector{2.0, 2.0, 2.0, 2.0})}, - std::vector{reference_tests::Tensor(Shape{1, 2, 2}, ov::element::f32, std::vector{1.0, 1.0, 1.0, 1.0})}, - "if_condition_const_is_false"), - IfParams( - std::make_shared(), - std::vector{reference_tests::Tensor(Shape{1}, ov::element::boolean, std::vector{1}), - reference_tests::Tensor(Shape{1, 2, 2}, ov::element::f32, std::vector{1.0, 2.0, 3.0, 4.0}), - reference_tests::Tensor(Shape{1, 2, 2}, ov::element::f32, std::vector{2.0, 1.0, 2.0, 3.0})}, - std::vector{reference_tests::Tensor(Shape{1, 2, 2}, ov::element::f32, std::vector{2.0, 2.0, 6.0, 12.0})}, - "if_condition_si_non_const_true"), - IfParams( - std::make_shared(), - std::vector{reference_tests::Tensor(Shape{1}, ov::element::boolean, std::vector{0}), - reference_tests::Tensor(Shape{1, 2, 2}, ov::element::f32, std::vector{1.0, 2.0, 3.0, 4.0}), - reference_tests::Tensor(Shape{1, 2, 2}, ov::element::f32, std::vector{2.0, 1.0, 2.0, 3.0})}, - std::vector{reference_tests::Tensor(Shape{1, 2, 2}, ov::element::f32, std::vector{3.0, 3.0, 5.0, 7.0})}, - "if_condition_is_non_const_false"), + IfParams(std::make_shared(true), + std::vector{ + reference_tests::Tensor(Shape{1, 2, 2}, ov::element::f32, std::vector{1.0, 1.0, 1.0, 1.0}), + reference_tests::Tensor(Shape{1, 2, 2}, ov::element::f32, std::vector{2.0, 2.0, 2.0, 2.0})}, + std::vector{ + reference_tests::Tensor(Shape{1, 2, 2}, ov::element::f32, std::vector{2.0, 2.0, 2.0, 2.0})}, + "if_condition_const_is_true"), + IfParams(std::make_shared(false), + std::vector{ + reference_tests::Tensor(Shape{1, 2, 2}, ov::element::f32, std::vector{1.0, 1.0, 1.0, 1.0}), + reference_tests::Tensor(Shape{1, 2, 2}, ov::element::f32, std::vector{2.0, 2.0, 2.0, 2.0})}, + std::vector{ + reference_tests::Tensor(Shape{1, 2, 2}, ov::element::f32, std::vector{1.0, 1.0, 1.0, 1.0})}, + "if_condition_const_is_false"), + IfParams(std::make_shared(), + std::vector{ + reference_tests::Tensor(Shape{1}, ov::element::boolean, std::vector{1}), + reference_tests::Tensor(Shape{1, 2, 2}, ov::element::f32, std::vector{1.0, 2.0, 3.0, 4.0}), + reference_tests::Tensor(Shape{1, 2, 2}, ov::element::f32, std::vector{2.0, 1.0, 2.0, 3.0})}, + std::vector{reference_tests::Tensor(Shape{1, 2, 2}, + ov::element::f32, + std::vector{2.0, 2.0, 6.0, 12.0})}, + "if_condition_si_non_const_true"), + IfParams(std::make_shared(), + std::vector{ + reference_tests::Tensor(Shape{1}, ov::element::boolean, std::vector{0}), + reference_tests::Tensor(Shape{1, 2, 2}, ov::element::f32, std::vector{1.0, 2.0, 3.0, 4.0}), + reference_tests::Tensor(Shape{1, 2, 2}, ov::element::f32, std::vector{2.0, 1.0, 2.0, 3.0})}, + std::vector{ + reference_tests::Tensor(Shape{1, 2, 2}, ov::element::f32, std::vector{3.0, 3.0, 5.0, 7.0})}, + "if_condition_is_non_const_false"), IfParams(std::make_shared(), - std::vector{reference_tests::Tensor(Shape{1}, ov::element::boolean, std::vector{1})}, - std::vector{reference_tests::Tensor(Shape{1}, ov::element::f32, std::vector{8.0})}, + std::vector{ + reference_tests::Tensor(Shape{1}, ov::element::boolean, std::vector{1})}, + std::vector{ + reference_tests::Tensor(Shape{1}, ov::element::f32, std::vector{8.0})}, "if_without_addition_inputs_condition_is_true"), IfParams(std::make_shared(), - std::vector{reference_tests::Tensor(Shape{1}, ov::element::boolean, std::vector{0})}, - std::vector{reference_tests::Tensor(Shape{1}, ov::element::f32, std::vector{2.0})}, + std::vector{ + reference_tests::Tensor(Shape{1}, ov::element::boolean, std::vector{0})}, + std::vector{ + reference_tests::Tensor(Shape{1}, ov::element::f32, std::vector{2.0})}, "if_without_addition_inputs_condition_is_false"), - IfParams( - std::make_shared(), - std::vector{reference_tests::Tensor(Shape{}, ov::element::boolean, std::vector{1}), - reference_tests::Tensor(Shape{1, 2, 2}, ov::element::f32, std::vector{1.0, 2.0, 3.0, 4.0}), - reference_tests::Tensor(Shape{1, 2, 2}, ov::element::f32, std::vector{2.0, 1.0, 2.0, 3.0})}, - std::vector{reference_tests::Tensor(Shape{1, 2, 2}, ov::element::f32, std::vector{2.0, 2.0, 6.0, 12.0})}, - "if_condition_is_scalar_cond_true"), - IfParams( - std::make_shared(), - std::vector{reference_tests::Tensor(Shape{}, ov::element::boolean, std::vector{0}), - reference_tests::Tensor(Shape{1, 2, 2}, ov::element::f32, std::vector{1.0, 2.0, 3.0, 4.0}), - reference_tests::Tensor(Shape{1, 2, 2}, ov::element::f32, std::vector{2.0, 1.0, 2.0, 3.0})}, - std::vector{reference_tests::Tensor(Shape{1, 2, 2}, ov::element::f32, std::vector{3.0, 3.0, 5.0, 7.0})}, - "if_condition_is_scalar_cond_false"), - IfParams( - std::make_shared(), - std::vector{reference_tests::Tensor(Shape{}, ov::element::boolean, std::vector{1}), - reference_tests::Tensor(Shape{1, 2, 2}, ov::element::f32, std::vector{1.0, 2.0, 3.0, 4.0}), - reference_tests::Tensor(Shape{4, 2, 2}, ov::element::f32, Y_gen()), - reference_tests::Tensor(Shape{8, 8, 8}, ov::element::f32, Z_gen())}, - std::vector{reference_tests::Tensor(Shape{1, 2, 2}, ov::element::f32, std::vector{1.0, 4.0, 9.0, 16.0}), - reference_tests::Tensor(Shape{4, 2, 2}, ov::element::f32, Y_gen())}, - "If_dynamism_case_with_static_inputs_condition_true"), - IfParams( - std::make_shared(), - std::vector{reference_tests::Tensor(Shape{}, ov::element::boolean, std::vector{0}), - reference_tests::Tensor(Shape{1, 2, 2}, ov::element::f32, std::vector{1.0, 2.0, 3.0, 4.0}), - reference_tests::Tensor(Shape{4, 2, 2}, ov::element::f32, Y_gen()), - reference_tests::Tensor(Shape{8, 8, 8}, ov::element::f32, Z_gen())}, - std::vector{reference_tests::Tensor(Shape{1, 2, 2}, ov::element::f32, std::vector{2.0, 4.0, 6.0, 8.0}), - reference_tests::Tensor(Shape{8, 8, 8}, ov::element::f32, Z_gen())}, - "If_dynamism_case_with_static_inputs_condition_false"), - IfParams( - std::make_shared(), - std::vector{reference_tests::Tensor(Shape{}, ov::element::boolean, std::vector{1}), - reference_tests::Tensor(Shape{1, 2, 2}, ov::element::f32, std::vector{1.0, 2.0, 3.0, 4.0}), - reference_tests::Tensor(Shape{1, 2, 2}, ov::element::f32, std::vector{2.0, 1.0, 2.0, 3.0})}, - std::vector{reference_tests::Tensor(Shape{1, 2, 2}, ov::element::f32, std::vector{2.0, 2.0, 6.0, 12.0})}, - "if_condition_is_dynamic_cond_true"), - IfParams( - std::make_shared(), - std::vector{reference_tests::Tensor(Shape{}, ov::element::boolean, std::vector{0}), - reference_tests::Tensor(Shape{1, 2, 2}, ov::element::f32, std::vector{1.0, 2.0, 3.0, 4.0}), - reference_tests::Tensor(Shape{1, 2, 2}, ov::element::f32, std::vector{2.0, 1.0, 2.0, 3.0})}, - std::vector{reference_tests::Tensor(Shape{1, 2, 2}, ov::element::f32, std::vector{3.0, 3.0, 5.0, 7.0})}, - "if_condition_is_dynamic_cond_false"), - IfParams( - std::make_shared(), - std::vector{reference_tests::Tensor(Shape{}, ov::element::boolean, std::vector{1}), - reference_tests::Tensor(Shape{1, 2, 2}, ov::element::f32, std::vector{1.0, 2.0, 3.0, 4.0}), - reference_tests::Tensor(Shape{1, 2, 2}, ov::element::f32, std::vector{2.0, 1.0, 2.0, 3.0})}, - std::vector{reference_tests::Tensor(Shape{1, 2, 2}, ov::element::f32, std::vector{2.0, 2.0, 6.0, 12.0})}, - "if_dynamic_inputs_cond_true"), - IfParams( - std::make_shared(), - std::vector{reference_tests::Tensor(Shape{}, ov::element::boolean, std::vector{0}), - reference_tests::Tensor(Shape{1, 2, 2}, ov::element::f32, std::vector{1.0, 2.0, 3.0, 4.0}), - reference_tests::Tensor(Shape{1, 2, 2}, ov::element::f32, std::vector{2.0, 1.0, 2.0, 3.0})}, - std::vector{reference_tests::Tensor(Shape{1, 2, 2}, ov::element::f32, std::vector{3.0, 3.0, 5.0, 7.0})}, - "if_dynamic_inputs_cond_false"))); + IfParams(std::make_shared(), + std::vector{ + reference_tests::Tensor(Shape{}, ov::element::boolean, std::vector{1}), + reference_tests::Tensor(Shape{1, 2, 2}, ov::element::f32, std::vector{1.0, 2.0, 3.0, 4.0}), + reference_tests::Tensor(Shape{1, 2, 2}, ov::element::f32, std::vector{2.0, 1.0, 2.0, 3.0})}, + std::vector{reference_tests::Tensor(Shape{1, 2, 2}, + ov::element::f32, + std::vector{2.0, 2.0, 6.0, 12.0})}, + "if_condition_is_scalar_cond_true"), + IfParams(std::make_shared(), + std::vector{ + reference_tests::Tensor(Shape{}, ov::element::boolean, std::vector{0}), + reference_tests::Tensor(Shape{1, 2, 2}, ov::element::f32, std::vector{1.0, 2.0, 3.0, 4.0}), + reference_tests::Tensor(Shape{1, 2, 2}, ov::element::f32, std::vector{2.0, 1.0, 2.0, 3.0})}, + std::vector{ + reference_tests::Tensor(Shape{1, 2, 2}, ov::element::f32, std::vector{3.0, 3.0, 5.0, 7.0})}, + "if_condition_is_scalar_cond_false"), + IfParams(std::make_shared(), + std::vector{ + reference_tests::Tensor(Shape{}, ov::element::boolean, std::vector{1}), + reference_tests::Tensor(Shape{1, 2, 2}, ov::element::f32, std::vector{1.0, 2.0, 3.0, 4.0}), + reference_tests::Tensor(Shape{4, 2, 2}, ov::element::f32, Y_gen()), + reference_tests::Tensor(Shape{8, 8, 8}, ov::element::f32, Z_gen())}, + std::vector{ + reference_tests::Tensor(Shape{1, 2, 2}, ov::element::f32, std::vector{1.0, 4.0, 9.0, 16.0}), + reference_tests::Tensor(Shape{4, 2, 2}, ov::element::f32, Y_gen())}, + "If_dynamism_case_with_static_inputs_condition_true"), + IfParams(std::make_shared(), + std::vector{ + reference_tests::Tensor(Shape{}, ov::element::boolean, std::vector{0}), + reference_tests::Tensor(Shape{1, 2, 2}, ov::element::f32, std::vector{1.0, 2.0, 3.0, 4.0}), + reference_tests::Tensor(Shape{4, 2, 2}, ov::element::f32, Y_gen()), + reference_tests::Tensor(Shape{8, 8, 8}, ov::element::f32, Z_gen())}, + std::vector{ + reference_tests::Tensor(Shape{1, 2, 2}, ov::element::f32, std::vector{2.0, 4.0, 6.0, 8.0}), + reference_tests::Tensor(Shape{8, 8, 8}, ov::element::f32, Z_gen())}, + "If_dynamism_case_with_static_inputs_condition_false"), + IfParams(std::make_shared(), + std::vector{ + reference_tests::Tensor(Shape{}, ov::element::boolean, std::vector{1}), + reference_tests::Tensor(Shape{1, 2, 2}, ov::element::f32, std::vector{1.0, 2.0, 3.0, 4.0}), + reference_tests::Tensor(Shape{1, 2, 2}, ov::element::f32, std::vector{2.0, 1.0, 2.0, 3.0})}, + std::vector{reference_tests::Tensor(Shape{1, 2, 2}, + ov::element::f32, + std::vector{2.0, 2.0, 6.0, 12.0})}, + "if_condition_is_dynamic_cond_true"), + IfParams(std::make_shared(), + std::vector{ + reference_tests::Tensor(Shape{}, ov::element::boolean, std::vector{0}), + reference_tests::Tensor(Shape{1, 2, 2}, ov::element::f32, std::vector{1.0, 2.0, 3.0, 4.0}), + reference_tests::Tensor(Shape{1, 2, 2}, ov::element::f32, std::vector{2.0, 1.0, 2.0, 3.0})}, + std::vector{ + reference_tests::Tensor(Shape{1, 2, 2}, ov::element::f32, std::vector{3.0, 3.0, 5.0, 7.0})}, + "if_condition_is_dynamic_cond_false"), + IfParams(std::make_shared(), + std::vector{ + reference_tests::Tensor(Shape{}, ov::element::boolean, std::vector{1}), + reference_tests::Tensor(Shape{1, 2, 2}, ov::element::f32, std::vector{1.0, 2.0, 3.0, 4.0}), + reference_tests::Tensor(Shape{1, 2, 2}, ov::element::f32, std::vector{2.0, 1.0, 2.0, 3.0})}, + std::vector{reference_tests::Tensor(Shape{1, 2, 2}, + ov::element::f32, + std::vector{2.0, 2.0, 6.0, 12.0})}, + "if_dynamic_inputs_cond_true"), + IfParams(std::make_shared(), + std::vector{ + reference_tests::Tensor(Shape{}, ov::element::boolean, std::vector{0}), + reference_tests::Tensor(Shape{1, 2, 2}, ov::element::f32, std::vector{1.0, 2.0, 3.0, 4.0}), + reference_tests::Tensor(Shape{1, 2, 2}, ov::element::f32, std::vector{2.0, 1.0, 2.0, 3.0})}, + std::vector{ + reference_tests::Tensor(Shape{1, 2, 2}, ov::element::f32, std::vector{3.0, 3.0, 5.0, 7.0})}, + "if_dynamic_inputs_cond_false"))); diff --git a/src/plugins/template/tests/functional/op_reference/irdft.cpp b/src/plugins/template/tests/functional/op_reference/irdft.cpp index 006deb031ac..e10224b785e 100644 --- a/src/plugins/template/tests/functional/op_reference/irdft.cpp +++ b/src/plugins/template/tests/functional/op_reference/irdft.cpp @@ -2,12 +2,14 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/irdft.hpp" + #include + #include #include "base_reference_test.hpp" #include "openvino/op/constant.hpp" -#include "openvino/op/irdft.hpp" using namespace reference_tests; using namespace ov; @@ -91,439 +93,371 @@ TEST_P(ReferenceIRDFTLayerTest, CompareWithHardcodedRefs) { } static const std::vector input_data_1 = { - 4.6657147, -1.1622906e-06, 0.21456887, -0.14946258, -0.20476034, -0.37063062, - -0.31414136, 0.5099413, -1.1779613, 0.07057127, -0.64047664, -1.0058284e-07, - 4.982774, -1.1771917e-06, 0.6607505, 0.18829148, -0.9772357, 1.4243596, - 0.8640026, 0.34923682, 0.33401352, 0.25859502, -0.7548928, 8.940697e-08, - 5.9711604, -1.4901161e-06, 0.5638976, 1.5429841, -0.52065414, 0.24638398, - -0.27140495, 0.5040715, 0.5360231, 0.3234269, -0.36054826, 1.7508864e-07, - 4.7464237, -1.2218952e-06, -0.29650804, 0.80609477, -0.161426, 1.0022418, - -0.50812817, 0.7967348, 0.4394225, -0.1588624, -1.3835809, -7.4505806e-08, - 5.53836, -1.7136335e-06, -0.38635445, 0.8284859, -0.23278837, -0.63777345, - -0.93614054, 0.3215857, -0.14075133, -0.67071164, -1.4772836, 2.0861626e-07, - 5.0798974, -1.5944242e-06, 0.056767445, 0.03468219, -0.1497254, -0.9672509, - 0.2603209, 0.69644475, -0.9208536, 0.006730467, -1.7552528, 2.682209e-07, - 4.893558, -1.6242266e-06, 0.6719861, -0.13982919, 0.064845346, -0.39896214, - 0.21785057, -0.5099982, -0.65526295, 1.4383471, -0.52023906, 2.5331974e-07, - 6.687699, -1.5497208e-06, -0.7423769, 0.09968524, 1.052381, -0.21306956, - 0.5875206, -0.3038844, 0.3991575, -1.1895186, 0.17579001, 3.874302e-07, - 5.2818384, -1.1026859e-06, 0.5087582, 0.106959194, 1.1816688, -0.87592727, - 0.03740315, 0.5197907, -1.3198637, 0.6398836, 0.22712436, 2.2351742e-08, - 5.0190897, -1.5646219e-06, -0.087282926, 0.50819266, -0.28002462, 0.29240948, - -0.32303664, 0.38377762, -0.0051696897, -0.99301195, -2.189299, 2.0861626e-07, - 5.0545654, -1.5795231e-06, 0.9146397, 0.83839166, 0.870533, 0.17405808, - -0.56308234, -0.7806684, 0.26397777, 0.6880482, -1.4183462, 2.682209e-07, - 5.479953, -1.2665987e-06, 0.49444157, 0.7534672, -0.76784146, -0.4507342, - 0.88815784, 0.6985409, -0.2727425, -0.25027415, -0.7328796, 2.682209e-07, - 4.1296124, -5.662441e-07, -0.46133032, 0.30635798, -0.18225375, 0.42515472, - -0.5484285, 0.9704039, -0.35255045, 0.17549685, 0.8870368, -3.1292439e-07, - 4.8632016, -1.8924475e-06, -0.6926452, 0.025076404, -0.039108217, -1.7492937, - -0.8120377, -0.85315156, -0.0022608787, 0.45002514, -1.1024668, 3.501773e-07, - 5.4715447, -1.4901161e-06, 1.1176248, -0.2109062, -0.27492502, 0.08983741, - 1.1903813, -1.007312, -0.20150042, -0.83919466, -0.23939973, 4.917383e-07, - 5.1267176, -9.983778e-07, -0.44803134, -0.8066604, -0.3435102, -0.41692197, - -0.22457689, -0.1076939, -0.29129186, -1.1880502, 0.9255183, -1.6391277e-07, - 3.8495903, -5.5134296e-07, 0.09505272, -0.12751618, -1.1264827, 0.5068884, - -1.055237, -0.19516481, -0.34035242, -0.15379356, 1.2655814, -2.6077032e-07, - 4.4372616, -9.23872e-07, -0.72962606, -0.23475963, -0.04278487, 1.1032158, - -0.558924, -0.5300043, 1.0578637, -0.2466627, 0.44617313, -7.8231096e-08, - 5.5374002, -1.4156103e-06, 0.016273111, -0.5989829, -0.19913958, 0.013256833, - 1.8512837, 0.14526272, -0.39700353, -0.07573915, 0.23181, 2.9429793e-07, - 4.989425, -1.4901161e-06, 1.0391837, 0.16554561, -0.22647032, -1.0689808, - -0.84556, -0.82779336, 0.9430445, 0.37618563, 0.4684292, -9.685755e-08}; + 4.6657147, -1.1622906e-06, 0.21456887, -0.14946258, -0.20476034, -0.37063062, -0.31414136, + 0.5099413, -1.1779613, 0.07057127, -0.64047664, -1.0058284e-07, 4.982774, -1.1771917e-06, + 0.6607505, 0.18829148, -0.9772357, 1.4243596, 0.8640026, 0.34923682, 0.33401352, + 0.25859502, -0.7548928, 8.940697e-08, 5.9711604, -1.4901161e-06, 0.5638976, 1.5429841, + -0.52065414, 0.24638398, -0.27140495, 0.5040715, 0.5360231, 0.3234269, -0.36054826, + 1.7508864e-07, 4.7464237, -1.2218952e-06, -0.29650804, 0.80609477, -0.161426, 1.0022418, + -0.50812817, 0.7967348, 0.4394225, -0.1588624, -1.3835809, -7.4505806e-08, 5.53836, + -1.7136335e-06, -0.38635445, 0.8284859, -0.23278837, -0.63777345, -0.93614054, 0.3215857, + -0.14075133, -0.67071164, -1.4772836, 2.0861626e-07, 5.0798974, -1.5944242e-06, 0.056767445, + 0.03468219, -0.1497254, -0.9672509, 0.2603209, 0.69644475, -0.9208536, 0.006730467, + -1.7552528, 2.682209e-07, 4.893558, -1.6242266e-06, 0.6719861, -0.13982919, 0.064845346, + -0.39896214, 0.21785057, -0.5099982, -0.65526295, 1.4383471, -0.52023906, 2.5331974e-07, + 6.687699, -1.5497208e-06, -0.7423769, 0.09968524, 1.052381, -0.21306956, 0.5875206, + -0.3038844, 0.3991575, -1.1895186, 0.17579001, 3.874302e-07, 5.2818384, -1.1026859e-06, + 0.5087582, 0.106959194, 1.1816688, -0.87592727, 0.03740315, 0.5197907, -1.3198637, + 0.6398836, 0.22712436, 2.2351742e-08, 5.0190897, -1.5646219e-06, -0.087282926, 0.50819266, + -0.28002462, 0.29240948, -0.32303664, 0.38377762, -0.0051696897, -0.99301195, -2.189299, + 2.0861626e-07, 5.0545654, -1.5795231e-06, 0.9146397, 0.83839166, 0.870533, 0.17405808, + -0.56308234, -0.7806684, 0.26397777, 0.6880482, -1.4183462, 2.682209e-07, 5.479953, + -1.2665987e-06, 0.49444157, 0.7534672, -0.76784146, -0.4507342, 0.88815784, 0.6985409, + -0.2727425, -0.25027415, -0.7328796, 2.682209e-07, 4.1296124, -5.662441e-07, -0.46133032, + 0.30635798, -0.18225375, 0.42515472, -0.5484285, 0.9704039, -0.35255045, 0.17549685, + 0.8870368, -3.1292439e-07, 4.8632016, -1.8924475e-06, -0.6926452, 0.025076404, -0.039108217, + -1.7492937, -0.8120377, -0.85315156, -0.0022608787, 0.45002514, -1.1024668, 3.501773e-07, + 5.4715447, -1.4901161e-06, 1.1176248, -0.2109062, -0.27492502, 0.08983741, 1.1903813, + -1.007312, -0.20150042, -0.83919466, -0.23939973, 4.917383e-07, 5.1267176, -9.983778e-07, + -0.44803134, -0.8066604, -0.3435102, -0.41692197, -0.22457689, -0.1076939, -0.29129186, + -1.1880502, 0.9255183, -1.6391277e-07, 3.8495903, -5.5134296e-07, 0.09505272, -0.12751618, + -1.1264827, 0.5068884, -1.055237, -0.19516481, -0.34035242, -0.15379356, 1.2655814, + -2.6077032e-07, 4.4372616, -9.23872e-07, -0.72962606, -0.23475963, -0.04278487, 1.1032158, + -0.558924, -0.5300043, 1.0578637, -0.2466627, 0.44617313, -7.8231096e-08, 5.5374002, + -1.4156103e-06, 0.016273111, -0.5989829, -0.19913958, 0.013256833, 1.8512837, 0.14526272, + -0.39700353, -0.07573915, 0.23181, 2.9429793e-07, 4.989425, -1.4901161e-06, 1.0391837, + 0.16554561, -0.22647032, -1.0689808, -0.84556, -0.82779336, 0.9430445, 0.37618563, + 0.4684292, -9.685755e-08}; static const std::vector expected_irdft1d_results_1 = { - 0.10606491, 0.7454715, 0.57231355, 0.4582412, 0.3847059, 0.27398932, 0.66796243, 0.395475, - 0.2815729, 0.7799197, 0.59909415, 0.12294636, 0.38957402, 0.97498834, 0.46759892, 0.14017141, - 0.04206858, 0.7279963, 0.61560553, 0.9027321, 0.6226334, 0.2601217, 0.5555177, 0.40498647, - 0.14175586, 0.57774633, 0.52652127, 0.9385691, 0.9588788, 0.9844318, 0.23095612, 0.09707925, - 0.24574867, 0.6907577, 0.1974319, 0.8295272, 0.34612727, 0.51401484, 0.66115797, 0.9336245, - 0.06690067, 0.7468897, 0.39028263, 0.53575844, 0.060429193, 0.8913558, 0.77787375, 0.6701197, - 0.7350527, 0.6636995, 0.18176624, 0.8629976, 0.45142895, 0.6497297, 0.159372, 0.40598175, - 0.7988516, 0.7291543, 0.07090418, 0.7697132, 0.4972157, 0.7669217, 0.67975855, 0.13026066, - 0.6587437, 0.24532892, 0.24545169, 0.83795583, 0.105490535, 0.7264323, 0.94568557, 0.7216649, - 0.14389831, 0.7930531, 0.70895344, 0.9724701, 0.9775157, 0.49999878, 0.65569246, 0.26876843, - 0.63248956, 0.85201293, 0.5689624, 0.023386303, 0.5546464, 0.36860028, 0.9603114, 0.39123482, - 0.0380728, 0.89212376, 0.14387614, 0.63858676, 0.10003748, 0.8906635, 0.06681054, 0.7458642, - 0.45452347, 0.54724604, 0.6496482, 0.7818356, 0.6608355, 0.77711326, 0.24588613, 0.013456763, - 0.355845, 0.80388206, 0.027993264, 0.73677206, 0.52755004, 0.9052324, 0.54311025, 0.5367805, - 0.4131242, 0.7752338, 0.109669454, 0.13664648, 0.7828739, 0.9083969, 0.5247593, 0.7493595, - 0.19275227, 0.007190853, 0.6087981, 0.344136, 0.46909887, 0.41924855, 0.7072913, 0.19932869, - 0.5303847, 0.651384, 0.06686331, 0.9717932, 0.65702224, 0.11786682, 0.3154073, 0.88923013, - 0.5564087, 0.91047823, 0.28466642, 0.0934668, 0.88953066, 0.9919338, 0.18322521, 0.8185455, - 0.566391, 0.014207997, 0.29673064, 0.6347744, 0.6801958, 0.39601147, 0.34374171, 0.7216888, - 0.6152569, 0.76679546, 0.5860851, 0.4276813, 0.79339284, 0.13130653, 0.68764234, 0.053128112, - 0.02611321, 0.2982243, 0.7618372, 0.3331729, 0.5468192, 0.15707079, 0.28592056, 0.15286565, - 0.9368963, 0.350671, 0.4336494, 0.08934934, 0.41172776, 0.5850259, 0.70730376, 0.8598349, - 0.088788144, 0.26711187, 0.8002491, 0.19422275, 0.8312039, 0.5198718, 0.40111357, 0.98375803, - 0.77703434, 0.037818834, 0.704231, 0.689808, 0.17102319, 0.42153922, 0.7278252, 0.8030207, - 0.9101717, 0.0199644, 0.13768466, 0.55669, 0.17991355, 0.6720098, 0.7733328, 0.20881335}; + 0.10606491, 0.7454715, 0.57231355, 0.4582412, 0.3847059, 0.27398932, 0.66796243, 0.395475, 0.2815729, + 0.7799197, 0.59909415, 0.12294636, 0.38957402, 0.97498834, 0.46759892, 0.14017141, 0.04206858, 0.7279963, + 0.61560553, 0.9027321, 0.6226334, 0.2601217, 0.5555177, 0.40498647, 0.14175586, 0.57774633, 0.52652127, + 0.9385691, 0.9588788, 0.9844318, 0.23095612, 0.09707925, 0.24574867, 0.6907577, 0.1974319, 0.8295272, + 0.34612727, 0.51401484, 0.66115797, 0.9336245, 0.06690067, 0.7468897, 0.39028263, 0.53575844, 0.060429193, + 0.8913558, 0.77787375, 0.6701197, 0.7350527, 0.6636995, 0.18176624, 0.8629976, 0.45142895, 0.6497297, + 0.159372, 0.40598175, 0.7988516, 0.7291543, 0.07090418, 0.7697132, 0.4972157, 0.7669217, 0.67975855, + 0.13026066, 0.6587437, 0.24532892, 0.24545169, 0.83795583, 0.105490535, 0.7264323, 0.94568557, 0.7216649, + 0.14389831, 0.7930531, 0.70895344, 0.9724701, 0.9775157, 0.49999878, 0.65569246, 0.26876843, 0.63248956, + 0.85201293, 0.5689624, 0.023386303, 0.5546464, 0.36860028, 0.9603114, 0.39123482, 0.0380728, 0.89212376, + 0.14387614, 0.63858676, 0.10003748, 0.8906635, 0.06681054, 0.7458642, 0.45452347, 0.54724604, 0.6496482, + 0.7818356, 0.6608355, 0.77711326, 0.24588613, 0.013456763, 0.355845, 0.80388206, 0.027993264, 0.73677206, + 0.52755004, 0.9052324, 0.54311025, 0.5367805, 0.4131242, 0.7752338, 0.109669454, 0.13664648, 0.7828739, + 0.9083969, 0.5247593, 0.7493595, 0.19275227, 0.007190853, 0.6087981, 0.344136, 0.46909887, 0.41924855, + 0.7072913, 0.19932869, 0.5303847, 0.651384, 0.06686331, 0.9717932, 0.65702224, 0.11786682, 0.3154073, + 0.88923013, 0.5564087, 0.91047823, 0.28466642, 0.0934668, 0.88953066, 0.9919338, 0.18322521, 0.8185455, + 0.566391, 0.014207997, 0.29673064, 0.6347744, 0.6801958, 0.39601147, 0.34374171, 0.7216888, 0.6152569, + 0.76679546, 0.5860851, 0.4276813, 0.79339284, 0.13130653, 0.68764234, 0.053128112, 0.02611321, 0.2982243, + 0.7618372, 0.3331729, 0.5468192, 0.15707079, 0.28592056, 0.15286565, 0.9368963, 0.350671, 0.4336494, + 0.08934934, 0.41172776, 0.5850259, 0.70730376, 0.8598349, 0.088788144, 0.26711187, 0.8002491, 0.19422275, + 0.8312039, 0.5198718, 0.40111357, 0.98375803, 0.77703434, 0.037818834, 0.704231, 0.689808, 0.17102319, + 0.42153922, 0.7278252, 0.8030207, 0.9101717, 0.0199644, 0.13768466, 0.55669, 0.17991355, 0.6720098, + 0.7733328, 0.20881335}; -static const std::vector input_data_2 = { - 2.266797, -8.195639e-08, -0.37842733, -0.41015846, -0.48980892, -0.10356337, - 2.5542018, -2.2351742e-08, -0.3223713, 0.671882, 0.54300576, -0.35418037, - 1.985015, -2.2351742e-08, -0.030243821, -0.20105253, 0.59431964, 0.07358998, - 1.4619737, -7.450581e-09, -0.4356845, 0.35701087, 0.28208786, -0.36424285, - 1.8002605, -1.1920929e-07, -0.43280697, -0.56735414, -0.30007166, -0.541847, - 2.3052943, -1.2293458e-07, -0.39316025, -0.5526293, -0.30507135, -0.6021758, - 2.7329001, -6.7055225e-08, 0.28245124, -0.42586988, -0.40586215, 0.4590181, - 3.3132548, -5.9604645e-08, 0.6297612, 0.3694744, 0.077824846, -0.6248544, - 2.6314974, -2.9802322e-08, 0.58795106, -0.60349375, -0.3224758, 0.34408605, - 1.8399743, -9.685755e-08, -0.43963802, -0.079073176, -0.120658875, -1.0880115, - 2.0531366, -4.4703484e-08, 0.80112594, -0.53726834, -0.17560546, -0.026561722, - 2.3779182, -9.685755e-08, -0.21852754, -0.19336401, 0.38734403, -0.5954362, - 1.6219761, 7.450581e-09, -0.43100592, 0.28373614, 0.101898566, 0.52321124, - 2.128953, -1.4901161e-07, -0.1622684, -0.94116735, -0.7350497, 0.12695336, - 3.449626, -8.940697e-08, 0.56062996, -0.031283244, -0.06161648, -0.8543532, - 3.033568, -8.195639e-08, -0.37023768, -0.03989461, -0.28719214, -0.22382751, - 1.9661667, -1.4901161e-08, -0.59863573, -0.015534669, -0.31916466, 0.55380434, - 2.227056, -5.2154064e-08, -0.12656188, 0.6895717, 0.097157195, 0.19840825, - 3.5129817, -2.1234155e-07, 0.11158541, 0.5870459, 0.20993343, -0.40297145, - 2.5986667, 0.0, 0.26602313, -1.1560227, 0.2542065, 0.45556274}; +static const std::vector input_data_2 = {2.266797, -8.195639e-08, -0.37842733, -0.41015846, + -0.48980892, -0.10356337, 2.5542018, -2.2351742e-08, + -0.3223713, 0.671882, 0.54300576, -0.35418037, + 1.985015, -2.2351742e-08, -0.030243821, -0.20105253, + 0.59431964, 0.07358998, 1.4619737, -7.450581e-09, + -0.4356845, 0.35701087, 0.28208786, -0.36424285, + 1.8002605, -1.1920929e-07, -0.43280697, -0.56735414, + -0.30007166, -0.541847, 2.3052943, -1.2293458e-07, + -0.39316025, -0.5526293, -0.30507135, -0.6021758, + 2.7329001, -6.7055225e-08, 0.28245124, -0.42586988, + -0.40586215, 0.4590181, 3.3132548, -5.9604645e-08, + 0.6297612, 0.3694744, 0.077824846, -0.6248544, + 2.6314974, -2.9802322e-08, 0.58795106, -0.60349375, + -0.3224758, 0.34408605, 1.8399743, -9.685755e-08, + -0.43963802, -0.079073176, -0.120658875, -1.0880115, + 2.0531366, -4.4703484e-08, 0.80112594, -0.53726834, + -0.17560546, -0.026561722, 2.3779182, -9.685755e-08, + -0.21852754, -0.19336401, 0.38734403, -0.5954362, + 1.6219761, 7.450581e-09, -0.43100592, 0.28373614, + 0.101898566, 0.52321124, 2.128953, -1.4901161e-07, + -0.1622684, -0.94116735, -0.7350497, 0.12695336, + 3.449626, -8.940697e-08, 0.56062996, -0.031283244, + -0.06161648, -0.8543532, 3.033568, -8.195639e-08, + -0.37023768, -0.03989461, -0.28719214, -0.22382751, + 1.9661667, -1.4901161e-08, -0.59863573, -0.015534669, + -0.31916466, 0.55380434, 2.227056, -5.2154064e-08, + -0.12656188, 0.6895717, 0.097157195, 0.19840825, + 3.5129817, -2.1234155e-07, 0.11158541, 0.5870459, + 0.20993343, -0.40297145, 2.5986667, 0.0, + 0.26602313, -1.1560227, 0.2542065, 0.45556274}; static const std::vector expected_irdft1d_results_2 = { - 0.10606494, 0.7454715, 0.5723136, 0.45824113, 0.38470596, 0.59909415, 0.12294642, - 0.38957405, 0.9749881, 0.46759906, 0.62263334, 0.26012173, 0.5555176, 0.40498644, - 0.14175594, 0.23095612, 0.097079255, 0.24574867, 0.6907576, 0.197432, 0.066900685, - 0.7468896, 0.39028254, 0.5357583, 0.0604293, 0.18176621, 0.8629975, 0.45142898, - 0.64972955, 0.15937212, 0.49721566, 0.7669216, 0.6797584, 0.13026062, 0.6587438, - 0.9456854, 0.7216646, 0.14389832, 0.7930529, 0.7089534, 0.6324895, 0.85201263, - 0.5689623, 0.023386315, 0.55464643, 0.1438762, 0.63858664, 0.10003753, 0.8906633, - 0.06681056, 0.66083544, 0.7771131, 0.24588616, 0.013456774, 0.35584506, 0.54311025, - 0.53678054, 0.41312417, 0.7752337, 0.10966951, 0.19275223, 0.007190934, 0.608798, - 0.344136, 0.46909887, 0.06686333, 0.971793, 0.65702224, 0.117866985, 0.31540743, - 0.8895306, 0.99193364, 0.18322523, 0.81854534, 0.5663911, 0.34374166, 0.72168875, - 0.6152569, 0.7667953, 0.58608514, 0.026113158, 0.2982243, 0.76183707, 0.3331729, - 0.5468192, 0.43364936, 0.089349344, 0.41172776, 0.5850257, 0.7073037, 0.8312039, - 0.5198719, 0.4011136, 0.9837578, 0.7770344, 0.72782516, 0.8030205, 0.9101716, - 0.019964492, 0.13768478}; + 0.10606494, 0.7454715, 0.5723136, 0.45824113, 0.38470596, 0.59909415, 0.12294642, 0.38957405, 0.9749881, + 0.46759906, 0.62263334, 0.26012173, 0.5555176, 0.40498644, 0.14175594, 0.23095612, 0.097079255, 0.24574867, + 0.6907576, 0.197432, 0.066900685, 0.7468896, 0.39028254, 0.5357583, 0.0604293, 0.18176621, 0.8629975, + 0.45142898, 0.64972955, 0.15937212, 0.49721566, 0.7669216, 0.6797584, 0.13026062, 0.6587438, 0.9456854, + 0.7216646, 0.14389832, 0.7930529, 0.7089534, 0.6324895, 0.85201263, 0.5689623, 0.023386315, 0.55464643, + 0.1438762, 0.63858664, 0.10003753, 0.8906633, 0.06681056, 0.66083544, 0.7771131, 0.24588616, 0.013456774, + 0.35584506, 0.54311025, 0.53678054, 0.41312417, 0.7752337, 0.10966951, 0.19275223, 0.007190934, 0.608798, + 0.344136, 0.46909887, 0.06686333, 0.971793, 0.65702224, 0.117866985, 0.31540743, 0.8895306, 0.99193364, + 0.18322523, 0.81854534, 0.5663911, 0.34374166, 0.72168875, 0.6152569, 0.7667953, 0.58608514, 0.026113158, + 0.2982243, 0.76183707, 0.3331729, 0.5468192, 0.43364936, 0.089349344, 0.41172776, 0.5850257, 0.7073037, + 0.8312039, 0.5198719, 0.4011136, 0.9837578, 0.7770344, 0.72782516, 0.8030205, 0.9101716, 0.019964492, + 0.13768478}; static const std::vector input_data_3 = { - 4.665715, -1.6093254e-06, -0.5430559, -0.5752678, -0.37596112, -1.1571281, - -0.46793216, -0.94566363, 0.6854232, -0.3444838, -0.674704, 0.5946392, - -0.64047587, 1.3560057e-06, 4.9827743, -1.7434359e-06, -0.43517, -0.049020194, - -1.4773891, -1.0811031, 1.2506557, 0.5371344, 1.2869358, -0.14998645, - 0.8555907, 0.3693859, -0.7548918, 1.5944242e-06, 5.971161, -1.5199184e-06, - -1.2643411, 0.85635287, -0.1801207, -1.7264944, 0.6412285, -0.4787441, - 0.82227707, 0.65098876, 0.9114491, 0.40323836, -0.36054718, 1.2852252e-06, - 4.7464237, -1.66893e-06, -1.5010594, 0.2253451, -0.87915635, -0.4252541, - 0.4976693, -0.6554581, 0.928985, 0.8035921, 0.6578763, -0.15220329, - -1.3835799, 1.0430813e-06, 5.5383606, -1.4901161e-06, -1.619024, -0.10987502, - 0.20661727, -1.3774645, -0.3057741, -1.0960662, 0.2971667, 0.46700704, - -0.20812088, -0.602368, -1.4772825, 9.3877316e-07, 5.0798974, -1.758337e-06, - -0.7421876, -0.61749315, 0.21938956, -1.3415859, -0.838238, -0.6598083, - 1.0601404, -0.7129184, -0.27083004, 0.31763482, -1.7552516, 1.4677644e-06, - 4.893558, -1.4975667e-06, -0.06445231, -0.55879503, 0.08908144, -1.2869594, - 0.33623943, -0.7704663, -0.047739983, -1.0678453, 0.48350462, 1.5768427, - -0.52023804, 1.1697412e-06, 6.687699, -1.3113022e-06, -1.292419, -1.2920969, - 1.2041754, -0.2943018, 1.1889167, -0.66985166, 1.1336832, -0.13731277, - 0.008011267, -0.9506076, 0.1757915, 1.1026859e-06, 5.2818394, -1.4305115e-06, - -0.25987166, -0.48605326, 0.90237427, -0.8028362, -0.3040653, -1.6981151, - 1.1215456, -0.7120959, -0.4195284, 1.3941492, 0.22712523, 8.046627e-07, - 5.01909, -1.7881393e-06, -1.1856917, -0.10931289, -0.5164983, -0.9724103, - 0.30577338, -0.72837675, 0.89680094, 0.21036407, -0.052024096, -0.9455472, - -2.1892984, 1.4305115e-06, 5.054565, -1.5050173e-06, -0.3471575, 0.40542153, - 0.36438322, -0.9765247, 1.2703501, -1.7359983, -0.1160066, -0.25323528, - 0.9753329, 0.5339062, -1.418345, 9.834766e-07, 5.4799523, -1.7285347e-06, - -0.7905842, 0.093313254, 0.068526804, -1.8504739, -0.01845923, 0.26084417, - 1.5358877, -0.4159652, 0.089752786, 0.089908056, -0.7328786, 1.4007092e-06, - 4.129612, -9.536743e-07, -1.2393575, -0.28046644, -0.58673245, -0.39608067, - -0.12385368, -0.53435826, 0.77853805, 0.7645384, -0.18040559, 0.6678516, - 0.88703763, 8.046627e-07, 4.8632016, -1.0430813e-06, -1.1780663, -1.0952923, - 1.1691413, -1.4023741, -0.546494, -0.92614484, -1.1796933, -0.31762218, - 0.25592417, 0.0959474, -1.1024656, 1.013279e-06, 5.471545, -1.6987324e-06, - 0.35812324, -0.66833705, 0.07725692, -1.6537004, 1.6561611, 0.051166296, - 0.865453, -1.1392289, -0.23588535, -0.5480979, -0.2393986, 1.3411045e-06, - 5.126718, -9.23872e-07, -0.6379836, -1.6675751, 0.013057679, -0.9891113, - 0.20881936, -0.30439606, 0.37222707, 0.25244698, -0.9197892, -0.77782196, - 0.9255192, 1.1101365e-06, 3.8495903, -7.4505806e-07, -0.63088936, -0.4556699, - -1.1905057, -1.2522144, 0.46207082, -0.31992733, -0.4309795, 0.74295896, - -0.6106033, 0.18823686, 1.2655822, 7.748604e-07, 4.4372616, -7.0780516e-07, - -1.1016369, -1.0079124, -0.6083025, -0.0011255145, 1.4406854, -0.2912693, - -0.26610214, 0.87299407, 0.69553405, -0.45576566, 0.44617438, 7.4505806e-07, - 5.5374007, -1.5944242e-06, -0.32642078, -1.3683549, 0.079301864, -0.83741367, - 0.67391664, 0.69433576, 1.6423957, -1.1923066, 0.0334223, 0.37603495, - 0.23181117, 1.4156103e-06, 4.9894247, -7.748604e-07, 0.1788401, -0.39274544, - 0.78422666, -2.1340246, 0.5487572, -0.8765497, -0.7899384, 0.5434137, - 0.91613716, 0.08274247, 0.46843058, 8.34465e-07}; + 4.665715, -1.6093254e-06, -0.5430559, -0.5752678, -0.37596112, -1.1571281, -0.46793216, + -0.94566363, 0.6854232, -0.3444838, -0.674704, 0.5946392, -0.64047587, 1.3560057e-06, + 4.9827743, -1.7434359e-06, -0.43517, -0.049020194, -1.4773891, -1.0811031, 1.2506557, + 0.5371344, 1.2869358, -0.14998645, 0.8555907, 0.3693859, -0.7548918, 1.5944242e-06, + 5.971161, -1.5199184e-06, -1.2643411, 0.85635287, -0.1801207, -1.7264944, 0.6412285, + -0.4787441, 0.82227707, 0.65098876, 0.9114491, 0.40323836, -0.36054718, 1.2852252e-06, + 4.7464237, -1.66893e-06, -1.5010594, 0.2253451, -0.87915635, -0.4252541, 0.4976693, + -0.6554581, 0.928985, 0.8035921, 0.6578763, -0.15220329, -1.3835799, 1.0430813e-06, + 5.5383606, -1.4901161e-06, -1.619024, -0.10987502, 0.20661727, -1.3774645, -0.3057741, + -1.0960662, 0.2971667, 0.46700704, -0.20812088, -0.602368, -1.4772825, 9.3877316e-07, + 5.0798974, -1.758337e-06, -0.7421876, -0.61749315, 0.21938956, -1.3415859, -0.838238, + -0.6598083, 1.0601404, -0.7129184, -0.27083004, 0.31763482, -1.7552516, 1.4677644e-06, + 4.893558, -1.4975667e-06, -0.06445231, -0.55879503, 0.08908144, -1.2869594, 0.33623943, + -0.7704663, -0.047739983, -1.0678453, 0.48350462, 1.5768427, -0.52023804, 1.1697412e-06, + 6.687699, -1.3113022e-06, -1.292419, -1.2920969, 1.2041754, -0.2943018, 1.1889167, + -0.66985166, 1.1336832, -0.13731277, 0.008011267, -0.9506076, 0.1757915, 1.1026859e-06, + 5.2818394, -1.4305115e-06, -0.25987166, -0.48605326, 0.90237427, -0.8028362, -0.3040653, + -1.6981151, 1.1215456, -0.7120959, -0.4195284, 1.3941492, 0.22712523, 8.046627e-07, + 5.01909, -1.7881393e-06, -1.1856917, -0.10931289, -0.5164983, -0.9724103, 0.30577338, + -0.72837675, 0.89680094, 0.21036407, -0.052024096, -0.9455472, -2.1892984, 1.4305115e-06, + 5.054565, -1.5050173e-06, -0.3471575, 0.40542153, 0.36438322, -0.9765247, 1.2703501, + -1.7359983, -0.1160066, -0.25323528, 0.9753329, 0.5339062, -1.418345, 9.834766e-07, + 5.4799523, -1.7285347e-06, -0.7905842, 0.093313254, 0.068526804, -1.8504739, -0.01845923, + 0.26084417, 1.5358877, -0.4159652, 0.089752786, 0.089908056, -0.7328786, 1.4007092e-06, + 4.129612, -9.536743e-07, -1.2393575, -0.28046644, -0.58673245, -0.39608067, -0.12385368, + -0.53435826, 0.77853805, 0.7645384, -0.18040559, 0.6678516, 0.88703763, 8.046627e-07, + 4.8632016, -1.0430813e-06, -1.1780663, -1.0952923, 1.1691413, -1.4023741, -0.546494, + -0.92614484, -1.1796933, -0.31762218, 0.25592417, 0.0959474, -1.1024656, 1.013279e-06, + 5.471545, -1.6987324e-06, 0.35812324, -0.66833705, 0.07725692, -1.6537004, 1.6561611, + 0.051166296, 0.865453, -1.1392289, -0.23588535, -0.5480979, -0.2393986, 1.3411045e-06, + 5.126718, -9.23872e-07, -0.6379836, -1.6675751, 0.013057679, -0.9891113, 0.20881936, + -0.30439606, 0.37222707, 0.25244698, -0.9197892, -0.77782196, 0.9255192, 1.1101365e-06, + 3.8495903, -7.4505806e-07, -0.63088936, -0.4556699, -1.1905057, -1.2522144, 0.46207082, + -0.31992733, -0.4309795, 0.74295896, -0.6106033, 0.18823686, 1.2655822, 7.748604e-07, + 4.4372616, -7.0780516e-07, -1.1016369, -1.0079124, -0.6083025, -0.0011255145, 1.4406854, + -0.2912693, -0.26610214, 0.87299407, 0.69553405, -0.45576566, 0.44617438, 7.4505806e-07, + 5.5374007, -1.5944242e-06, -0.32642078, -1.3683549, 0.079301864, -0.83741367, 0.67391664, + 0.69433576, 1.6423957, -1.1923066, 0.0334223, 0.37603495, 0.23181117, 1.4156103e-06, + 4.9894247, -7.748604e-07, 0.1788401, -0.39274544, 0.78422666, -2.1340246, 0.5487572, + -0.8765497, -0.7899384, 0.5434137, 0.91613716, 0.08274247, 0.46843058, 8.34465e-07}; static const std::vector expected_irdft1d_results_3 = { - 0.80091053, 1.548053, 1.3439665, 0.97278523, 0.65876126, 1.6395509, 1.0939313, - 1.5905306, 0.81558955, 1.1096439, 2.0799308, 1.9659967, 0.21628714, 1.2937224, - 1.7173465, 1.5190675, 0.62673247, 1.3878733, 2.2457566, 1.2779983, 0.9537279, - 1.5238736, 1.6959155, 0.9063804, 1.2134336, 1.4805167, 1.277886, 0.9217217, - 1.3267591, 2.0169291, 2.619178, 0.7248324, 1.4161175, 1.3378929, 1.6759893, - 0.85183966, 0.53280216, 1.4385536, 1.7184939, 1.3292406, 1.1811583, 0.9698347, - 1.5283158, 1.3752562, 0.99182767, 1.3061998, 1.7824118, 1.399513, 0.26604116, - 1.3193192, 1.5053986, 1.0388529, 0.9190526, 1.4711612, 2.0971189, 0.37586892, - 1.5662622, 1.6827406, 1.208139, 1.0144035, 0.96595216, 2.1122026, 1.6039357, - 0.44462752, 0.34932646, 1.487859, 0.9802158, 1.0321891, 0.4064213, 1.7653472, - 1.5080582, 0.75743484, 1.2409652, 2.0487022, 1.567386, 0.68034726, 1.5328329, - 1.2476723, 1.3539927, 0.8549268}; + 0.80091053, 1.548053, 1.3439665, 0.97278523, 0.65876126, 1.6395509, 1.0939313, 1.5905306, 0.81558955, + 1.1096439, 2.0799308, 1.9659967, 0.21628714, 1.2937224, 1.7173465, 1.5190675, 0.62673247, 1.3878733, + 2.2457566, 1.2779983, 0.9537279, 1.5238736, 1.6959155, 0.9063804, 1.2134336, 1.4805167, 1.277886, + 0.9217217, 1.3267591, 2.0169291, 2.619178, 0.7248324, 1.4161175, 1.3378929, 1.6759893, 0.85183966, + 0.53280216, 1.4385536, 1.7184939, 1.3292406, 1.1811583, 0.9698347, 1.5283158, 1.3752562, 0.99182767, + 1.3061998, 1.7824118, 1.399513, 0.26604116, 1.3193192, 1.5053986, 1.0388529, 0.9190526, 1.4711612, + 2.0971189, 0.37586892, 1.5662622, 1.6827406, 1.208139, 1.0144035, 0.96595216, 2.1122026, 1.6039357, + 0.44462752, 0.34932646, 1.487859, 0.9802158, 1.0321891, 0.4064213, 1.7653472, 1.5080582, 0.75743484, + 1.2409652, 2.0487022, 1.567386, 0.68034726, 1.5328329, 1.2476723, 1.3539927, 0.8549268}; static const std::vector input_data_4 = { - 52.8665, -2.9623508e-05, 1.1642078, 3.826082, -0.22771922, -0.49822173, -0.3857528, - 3.2676966, -2.5112464, -0.27454787, -8.678656, 3.7550926e-06, -0.818072, 0.8330209, - 3.4618711, -0.2419473, 1.7408192, 5.744002, 1.8477443, 2.039329, 0.3268112, - -2.7421296, 0.6809025, 1.7613728, -2.294264, -0.8984407, -0.2868184, -3.2426705, - -0.801461, -0.58971727, -1.463435, -2.5413132, 0.116907075, -0.5013529, -2.8377397, - -2.8455539, -0.13475686, -1.3145845, -2.2820292, -0.199, -0.056986623, 0.12560216, - -0.589707, -1.7577857, -0.5274223, -1.0395792, 0.53813136, -1.7159984, 0.22503978, - 2.902198, -1.8643543, -1.8789856, 2.1722724, -2.068454, 0.59446484, 0.6067899, - 1.5525781, 1.7612485, 1.1877432, -0.48152098, -0.16525066, 1.5497208e-06, 1.9815066, - 0.55218977, 0.80434155, -3.575598, -2.1471107, -0.57691807, -3.004384, 3.8775828, - 3.1358109, -6.2584877e-07, 0.22504184, -2.9021916, 1.0378464, 0.9877456, 0.38395065, - -1.6089694, -0.5107449, 1.8621777, -4.960479, -1.8983803, 1.187743, 0.48151842, - -0.1347583, 1.3145843, -0.9968031, -1.3782079, 0.9922035, 1.6614089, -0.83039653, - -0.043888614, 1.9431384, -1.6448143, 0.5381324, 1.7159982, -2.2942696, 0.8984335, - 1.3057998, -0.26607463, -3.2994738, -1.9240448, 1.4963659, 2.8365738, -4.691832, - 1.2995429, -2.8377357, 2.8455553, -0.8180722, -0.8330165, -1.3755352, 0.34623986, - -3.7555497, -0.9723124, -1.1528367, -0.593254, -0.023679793, 1.8681414, 0.6809023, - -1.7613728, 48.939255, -2.4735928e-05, 1.3455832, 0.11001387, -2.3319814, -1.3735183, - -0.6780232, -2.4875786, 0.40718403, -1.0639579, 0.7314569, -1.2665987e-07, 0.97006464, - -0.30789328, 3.3290033, 2.7749023, -0.7520597, -0.98800826, 1.3100916, 1.1514524, - 1.1085359, 4.348257, -2.839456, 2.4404035, 0.9518837, 2.1538901, 3.8438358, - 2.410589, 3.0649068, 0.95690995, 2.2213395, 0.66509914, -0.4409917, -0.37408838, - -0.6316552, -1.5842111, -0.72352415, -2.5862057, 0.2678757, 0.610149, 2.9564474, - 0.08470708, -2.0889034, -8.370071, -0.16373271, 2.0413866, -3.3811545, 2.0487003, - 0.0316903, -1.078939, -2.5515578, -0.16135174, -0.17406325, 1.2709827, -0.67006403, - -1.6342779, 0.42163712, 2.1418998, -0.96614444, 1.9175051, -0.8538456, 2.8014183e-06, - 2.0189362, 0.30467552, 0.5074463, 3.7919073, 2.427857, 0.7526233, -2.4620402, - 0.65359443, 0.7219074, -2.3841858e-07, 0.03169757, 1.0789458, -2.1129081, -1.0250417, - 4.8181386, -0.39162922, -1.2349386, 1.8470186, -0.49495277, -1.5516026, -0.96614635, - -1.9175065, -0.7235237, 2.5862021, 0.677946, 2.0370173, -0.29536027, 0.6505451, - -2.8572361, 2.3176546, 3.4459226, 1.1869265, -3.3811545, -2.048697, 0.95187366, - -2.1538982, 1.808088, -1.1755496, -2.7418838, -1.6770658, -3.5766084, -2.8320727, - -0.02944839, -1.6522555, -0.63165283, 1.5842092, 0.9700667, 0.30789307, 0.5195943, - 2.4985125, 3.6537378, -0.5842519, -0.4843334, 0.78346854, 0.84766304, 1.1503224, - -2.839459, -2.440402}; + 52.8665, -2.9623508e-05, 1.1642078, 3.826082, -0.22771922, -0.49822173, -0.3857528, 3.2676966, + -2.5112464, -0.27454787, -8.678656, 3.7550926e-06, -0.818072, 0.8330209, 3.4618711, -0.2419473, + 1.7408192, 5.744002, 1.8477443, 2.039329, 0.3268112, -2.7421296, 0.6809025, 1.7613728, + -2.294264, -0.8984407, -0.2868184, -3.2426705, -0.801461, -0.58971727, -1.463435, -2.5413132, + 0.116907075, -0.5013529, -2.8377397, -2.8455539, -0.13475686, -1.3145845, -2.2820292, -0.199, + -0.056986623, 0.12560216, -0.589707, -1.7577857, -0.5274223, -1.0395792, 0.53813136, -1.7159984, + 0.22503978, 2.902198, -1.8643543, -1.8789856, 2.1722724, -2.068454, 0.59446484, 0.6067899, + 1.5525781, 1.7612485, 1.1877432, -0.48152098, -0.16525066, 1.5497208e-06, 1.9815066, 0.55218977, + 0.80434155, -3.575598, -2.1471107, -0.57691807, -3.004384, 3.8775828, 3.1358109, -6.2584877e-07, + 0.22504184, -2.9021916, 1.0378464, 0.9877456, 0.38395065, -1.6089694, -0.5107449, 1.8621777, + -4.960479, -1.8983803, 1.187743, 0.48151842, -0.1347583, 1.3145843, -0.9968031, -1.3782079, + 0.9922035, 1.6614089, -0.83039653, -0.043888614, 1.9431384, -1.6448143, 0.5381324, 1.7159982, + -2.2942696, 0.8984335, 1.3057998, -0.26607463, -3.2994738, -1.9240448, 1.4963659, 2.8365738, + -4.691832, 1.2995429, -2.8377357, 2.8455553, -0.8180722, -0.8330165, -1.3755352, 0.34623986, + -3.7555497, -0.9723124, -1.1528367, -0.593254, -0.023679793, 1.8681414, 0.6809023, -1.7613728, + 48.939255, -2.4735928e-05, 1.3455832, 0.11001387, -2.3319814, -1.3735183, -0.6780232, -2.4875786, + 0.40718403, -1.0639579, 0.7314569, -1.2665987e-07, 0.97006464, -0.30789328, 3.3290033, 2.7749023, + -0.7520597, -0.98800826, 1.3100916, 1.1514524, 1.1085359, 4.348257, -2.839456, 2.4404035, + 0.9518837, 2.1538901, 3.8438358, 2.410589, 3.0649068, 0.95690995, 2.2213395, 0.66509914, + -0.4409917, -0.37408838, -0.6316552, -1.5842111, -0.72352415, -2.5862057, 0.2678757, 0.610149, + 2.9564474, 0.08470708, -2.0889034, -8.370071, -0.16373271, 2.0413866, -3.3811545, 2.0487003, + 0.0316903, -1.078939, -2.5515578, -0.16135174, -0.17406325, 1.2709827, -0.67006403, -1.6342779, + 0.42163712, 2.1418998, -0.96614444, 1.9175051, -0.8538456, 2.8014183e-06, 2.0189362, 0.30467552, + 0.5074463, 3.7919073, 2.427857, 0.7526233, -2.4620402, 0.65359443, 0.7219074, -2.3841858e-07, + 0.03169757, 1.0789458, -2.1129081, -1.0250417, 4.8181386, -0.39162922, -1.2349386, 1.8470186, + -0.49495277, -1.5516026, -0.96614635, -1.9175065, -0.7235237, 2.5862021, 0.677946, 2.0370173, + -0.29536027, 0.6505451, -2.8572361, 2.3176546, 3.4459226, 1.1869265, -3.3811545, -2.048697, + 0.95187366, -2.1538982, 1.808088, -1.1755496, -2.7418838, -1.6770658, -3.5766084, -2.8320727, + -0.02944839, -1.6522555, -0.63165283, 1.5842092, 0.9700667, 0.30789307, 0.5195943, 2.4985125, + 3.6537378, -0.5842519, -0.4843334, 0.78346854, 0.84766304, 1.1503224, -2.839459, -2.440402}; static const std::vector input_data_5 = { - 25.904434, -8.46386e-06, -5.3626504, 0.3475349, -2.7060094, -5.767444, - 1.615847, -2.6387978, 4.020789, 1.4271183, 1.5420923, 0.6126925, - -4.6167765, 5.5730343e-06, -0.753784, -0.19148755, 1.4881928, -2.7645326, - -0.39467168, 1.014636, 0.5598, -1.7654291, -0.91835654, -2.3019042, - -0.49356225, -0.8411435, 0.080773115, -1.2883577, -0.5341466, 1.4913602, - -0.30008763, -0.5831754, 1.7365295, 1.821624, -0.08851206, -1.622279, - -0.27249795, -0.834725, -0.6706438, 0.4766277, 0.62642634, 0.5483514, - -0.5341469, -1.4913592, 0.8286207, 0.35826343, -1.0869694, -1.4876881, - -1.6723244, -0.06565219, 0.16255295, 0.5317876, -0.75649667, 1.2447717, - 0.6264261, -0.5483517, -0.7537827, 0.19148779, 0.6306459, -0.23442982, - 0.57131517, -1.366768, -2.7544713, 1.3638397, 0.43463084, -0.5446956, - -2.9949086, 1.4802479, 0.080771565, 1.2883584, 24.998875, -7.390976e-06, - -3.1970425, -1.5453612, 1.0925753, -6.279154, 2.237704, -2.8844912, - 1.8841789, -1.3615136, 0.90471864, 0.8395144, -2.6060505, 4.976988e-06, - 1.1634235, 0.42319643, 2.678257, 2.4692535, 0.34259582, 0.43598562, - 2.748452, 0.88622695, 2.2745323, -2.8840196, 1.8120161, -0.27884078, - -1.5445104, -0.7000726, -1.0264511, -0.7026249, -1.071573, 1.062395, - -0.64628685, -0.36214483, -0.5110928, -1.0534683, -2.786768, 2.6113648, - 0.94799054, 0.53423727, -0.69832724, 2.1821892, -1.0264513, 0.70262754, - -0.41705567, -0.17140968, 1.4991179, 2.9674625, -0.012362838, -3.8260121, - -1.5786235, -0.32526863, 1.2857957, 1.7469958, -0.6983267, -2.1821907, - 1.1634252, -0.42319855, 0.2716269, 0.21222934, -0.46608746, -1.6447732, - 1.8890494, -1.8022469, -0.37335354, 0.69326025, -0.07385725, -0.1723765, - -1.5445105, 0.7000739}; + 25.904434, -8.46386e-06, -5.3626504, 0.3475349, -2.7060094, -5.767444, 1.615847, -2.6387978, + 4.020789, 1.4271183, 1.5420923, 0.6126925, -4.6167765, 5.5730343e-06, -0.753784, -0.19148755, + 1.4881928, -2.7645326, -0.39467168, 1.014636, 0.5598, -1.7654291, -0.91835654, -2.3019042, + -0.49356225, -0.8411435, 0.080773115, -1.2883577, -0.5341466, 1.4913602, -0.30008763, -0.5831754, + 1.7365295, 1.821624, -0.08851206, -1.622279, -0.27249795, -0.834725, -0.6706438, 0.4766277, + 0.62642634, 0.5483514, -0.5341469, -1.4913592, 0.8286207, 0.35826343, -1.0869694, -1.4876881, + -1.6723244, -0.06565219, 0.16255295, 0.5317876, -0.75649667, 1.2447717, 0.6264261, -0.5483517, + -0.7537827, 0.19148779, 0.6306459, -0.23442982, 0.57131517, -1.366768, -2.7544713, 1.3638397, + 0.43463084, -0.5446956, -2.9949086, 1.4802479, 0.080771565, 1.2883584, 24.998875, -7.390976e-06, + -3.1970425, -1.5453612, 1.0925753, -6.279154, 2.237704, -2.8844912, 1.8841789, -1.3615136, + 0.90471864, 0.8395144, -2.6060505, 4.976988e-06, 1.1634235, 0.42319643, 2.678257, 2.4692535, + 0.34259582, 0.43598562, 2.748452, 0.88622695, 2.2745323, -2.8840196, 1.8120161, -0.27884078, + -1.5445104, -0.7000726, -1.0264511, -0.7026249, -1.071573, 1.062395, -0.64628685, -0.36214483, + -0.5110928, -1.0534683, -2.786768, 2.6113648, 0.94799054, 0.53423727, -0.69832724, 2.1821892, + -1.0264513, 0.70262754, -0.41705567, -0.17140968, 1.4991179, 2.9674625, -0.012362838, -3.8260121, + -1.5786235, -0.32526863, 1.2857957, 1.7469958, -0.6983267, -2.1821907, 1.1634252, -0.42319855, + 0.2716269, 0.21222934, -0.46608746, -1.6447732, 1.8890494, -1.8022469, -0.37335354, 0.69326025, + -0.07385725, -0.1723765, -1.5445105, 0.7000739}; static const std::vector input_data_6 = { - 101.805756, -5.2273273e-05, 2.5097876, 3.936094, -2.5597036, -1.8717405, - -1.0637736, 0.7801182, -2.1040666, -1.3385094, -7.9471993, 2.026558e-06, - 0.15199316, 0.52512753, 6.7908745, 2.5329556, 0.98875976, 4.755993, - 3.157838, 3.190782, 1.4353466, 1.6061276, -2.158554, 4.201776, - -1.3423799, 1.2554499, 3.5570183, -0.8320818, 2.263445, 0.36719292, - 0.7579028, -1.8762131, -0.32408538, -0.87544185, -3.4693956, -4.429764, - -0.85828185, -3.9007902, -2.0141544, 0.4111499, 2.8994608, 0.21030927, - -2.6786098, -10.127857, -0.6911557, 1.0018079, -2.8430226, 0.33270124, - 0.25672907, 1.8232578, -4.4159126, -2.040338, 1.9982092, -0.7974717, - -0.07559925, -1.0274884, 1.9742157, 3.9031482, 0.22159882, 1.4359848, - -1.0190966, 3.2186508e-06, 4.0004425, 0.8568655, 1.3117876, 0.2163087, - 0.28074512, 0.17570588, -5.466423, 4.531178, 3.857718, -1.2516975e-06, - 0.2567385, -1.823246, -1.0750613, -0.037295938, 5.20209, -2.0005994, - -1.7456844, 3.7091968, -5.45543, -3.4499822, 0.22159535, -1.4359887, - -0.8582816, 3.9007854, -0.31885874, 0.65880924, 0.6968423, 2.3119528, - -3.6876333, 2.273767, 5.38906, -0.45788872, -2.8430223, -0.33269957, - -1.3423961, -1.2554631, 3.1138885, -1.4416232, -6.0413575, -3.6011095, - -2.080242, 0.0045015216, -4.7212796, -0.3527125, -3.4693892, 4.429763, - 0.15199506, -0.52512354, -0.85594195, 2.8447511, -0.10181111, -1.5565643, - -1.6371696, 0.19021615, 0.8239815, 3.018465, -2.158556, -4.2017746, - 3.9272437, -3.9339066e-06, -0.18137527, 3.7160687, 2.1042633, 0.8752967, - 0.29226887, 5.755277, -2.9184306, 0.78941, -9.410112, 3.0100346e-06, - -1.7881365, 1.140914, 0.13286811, -3.01685, 2.4928799, 6.7320104, - 0.5376528, 0.88787735, -0.78172505, -7.0903873, 3.5203578, -0.6790314, - -3.246148, -3.0523329, -4.1306543, -5.653259, -3.866367, -1.5466263, - -3.6847744, -3.2064118, 0.5578996, -0.12726665, -2.2060838, -1.2613428, - 0.588767, 1.2716217, -2.5499039, -0.8091496, -3.0134337, 0.0408957, - 1.4991964, 6.6122847, -0.36368948, -3.0809648, 3.9192853, -3.764699, - 0.19334978, 3.9811373, 0.68720365, -1.717634, 2.346336, -3.3394372, - 1.2645291, 2.241068, 1.1309403, -0.3806507, 2.1538877, -2.3990266, - 0.6885946, -1.4901161e-06, -0.037429705, 0.24751475, 0.2968948, -7.367506, - -4.574969, -1.329541, -0.5423446, 3.2239883, 2.4139037, 2.9802322e-07, - 0.19334424, -3.9811373, 3.1507545, 2.0127864, -4.4341884, -1.2173393, - 0.72419256, 0.015158802, -4.4655256, -0.34677732, 2.1538897, 2.3990245, - 0.5887663, -1.2716188, -1.6747494, -3.415226, 1.2875631, 1.0108626, - 2.0268395, -2.3615427, -1.502785, -2.8317401, 3.919288, 3.764695, - -3.2461433, 3.0523314, -0.5022881, 0.9094755, -0.55759126, -0.24697942, - 5.0729737, 5.668646, -4.662384, 2.9517999, -2.2060819, 1.2613468, - -1.7881389, -1.1409098, -1.8951292, -2.1522717, -7.4092865, -0.38806117, - -0.6685039, -1.3767233, -0.8713439, 0.71781945, 3.5203605, 0.6790297}; + 101.805756, -5.2273273e-05, 2.5097876, 3.936094, -2.5597036, -1.8717405, -1.0637736, 0.7801182, + -2.1040666, -1.3385094, -7.9471993, 2.026558e-06, 0.15199316, 0.52512753, 6.7908745, 2.5329556, + 0.98875976, 4.755993, 3.157838, 3.190782, 1.4353466, 1.6061276, -2.158554, 4.201776, + -1.3423799, 1.2554499, 3.5570183, -0.8320818, 2.263445, 0.36719292, 0.7579028, -1.8762131, + -0.32408538, -0.87544185, -3.4693956, -4.429764, -0.85828185, -3.9007902, -2.0141544, 0.4111499, + 2.8994608, 0.21030927, -2.6786098, -10.127857, -0.6911557, 1.0018079, -2.8430226, 0.33270124, + 0.25672907, 1.8232578, -4.4159126, -2.040338, 1.9982092, -0.7974717, -0.07559925, -1.0274884, + 1.9742157, 3.9031482, 0.22159882, 1.4359848, -1.0190966, 3.2186508e-06, 4.0004425, 0.8568655, + 1.3117876, 0.2163087, 0.28074512, 0.17570588, -5.466423, 4.531178, 3.857718, -1.2516975e-06, + 0.2567385, -1.823246, -1.0750613, -0.037295938, 5.20209, -2.0005994, -1.7456844, 3.7091968, + -5.45543, -3.4499822, 0.22159535, -1.4359887, -0.8582816, 3.9007854, -0.31885874, 0.65880924, + 0.6968423, 2.3119528, -3.6876333, 2.273767, 5.38906, -0.45788872, -2.8430223, -0.33269957, + -1.3423961, -1.2554631, 3.1138885, -1.4416232, -6.0413575, -3.6011095, -2.080242, 0.0045015216, + -4.7212796, -0.3527125, -3.4693892, 4.429763, 0.15199506, -0.52512354, -0.85594195, 2.8447511, + -0.10181111, -1.5565643, -1.6371696, 0.19021615, 0.8239815, 3.018465, -2.158556, -4.2017746, + 3.9272437, -3.9339066e-06, -0.18137527, 3.7160687, 2.1042633, 0.8752967, 0.29226887, 5.755277, + -2.9184306, 0.78941, -9.410112, 3.0100346e-06, -1.7881365, 1.140914, 0.13286811, -3.01685, + 2.4928799, 6.7320104, 0.5376528, 0.88787735, -0.78172505, -7.0903873, 3.5203578, -0.6790314, + -3.246148, -3.0523329, -4.1306543, -5.653259, -3.866367, -1.5466263, -3.6847744, -3.2064118, + 0.5578996, -0.12726665, -2.2060838, -1.2613428, 0.588767, 1.2716217, -2.5499039, -0.8091496, + -3.0134337, 0.0408957, 1.4991964, 6.6122847, -0.36368948, -3.0809648, 3.9192853, -3.764699, + 0.19334978, 3.9811373, 0.68720365, -1.717634, 2.346336, -3.3394372, 1.2645291, 2.241068, + 1.1309403, -0.3806507, 2.1538877, -2.3990266, 0.6885946, -1.4901161e-06, -0.037429705, 0.24751475, + 0.2968948, -7.367506, -4.574969, -1.329541, -0.5423446, 3.2239883, 2.4139037, 2.9802322e-07, + 0.19334424, -3.9811373, 3.1507545, 2.0127864, -4.4341884, -1.2173393, 0.72419256, 0.015158802, + -4.4655256, -0.34677732, 2.1538897, 2.3990245, 0.5887663, -1.2716188, -1.6747494, -3.415226, + 1.2875631, 1.0108626, 2.0268395, -2.3615427, -1.502785, -2.8317401, 3.919288, 3.764695, + -3.2461433, 3.0523314, -0.5022881, 0.9094755, -0.55759126, -0.24697942, 5.0729737, 5.668646, + -4.662384, 2.9517999, -2.2060819, 1.2613468, -1.7881389, -1.1409098, -1.8951292, -2.1522717, + -7.4092865, -0.38806117, -0.6685039, -1.3767233, -0.8713439, 0.71781945, 3.5203605, 0.6790297}; static const std::vector input_data_7 = { - 0.73348462, 0.74833735, 0.40982435, 0.51988197, 0.99384421, 0.12469386, - 0.47686314, 0.25882564, 0.67028317, 0.58466398, 0.74927361, 0.19614283, - 0.82593526, 0.41205770, 0.74020169, 0.62222693, 0.33264240, 0.84108156, - 0.86392366, 0.79030966, 0.79792986, 0.47647899, 0.65967837, 0.92732906, - 0.90477190, 0.87232389, 0.55734667, 0.75560744, 0.70658521, 0.28530827, - 0.02554864, 0.14915414, 0.29936996, 0.74239557, 0.38158196, 0.26483291, - 0.15843351, 0.38703221, 0.79967600, 0.63790851, 0.66191234, 0.19395184, - 0.34992850, 0.89077723, 0.40746049, 0.01455611, 0.84174579, 0.91950995, - 0.43402124, 0.76620100, 0.96476467, 0.78331896, 0.48567269, 0.33793230, - 0.20362115, 0.51710568, 0.55455124, 0.10148728, 0.48229121, 0.58612092, - 0.91786709, 0.94405867, 0.54302465, 0.24146348, 0.34853454, 0.75880201, - 0.67781768, 0.29531289, 0.35969526, 0.01040005, 0.63142510, 0.67264276, - 0.57920180, 0.99608063, 0.91108299, 0.82647166, 0.54134147, 0.79556370, - 0.18579404, 0.95271365, 0.61918245, 0.17552980, 0.56332554, 0.58036855, - 0.33756331, 0.69359258, 0.03914420, 0.14962257, 0.26647894, 0.45042564, - 0.60093050, 0.67657016, 0.12601171, 0.95279680, 0.02868298, 0.82188820, - 0.17558198, 0.40678849, 0.90804391, 0.21813571, 0.69710526, 0.91450289, - 0.44277349, 0.70432336, 0.88161566, 0.23739783, 0.02746046, 0.05775890, - 0.63494471, 0.10963744, 0.68260565, 0.87579980, 0.34451002, 0.01422449, - 0.44081511, 0.78790226, 0.42010180, 0.62148773, 0.73164358, 0.85657540, - 0.21649672, 0.93347654, 0.65511518, 0.45192463, 0.57671214, 0.09925586, - 0.76042901, 0.84041443, 0.91933065, 0.00541233, 0.56194300, 0.71416635, - 0.15882159, 0.57976451, 0.37377713, 0.48352544, 0.96645849, 0.50040596, - 0.06060478, 0.21032667, 0.33303769, 0.80884551, 0.97500277, 0.28607026, - 0.12235457, 0.47764468, 0.09834820, 0.08864630, 0.21728048, 0.92446905, - 0.53802798, 0.22378462, 0.66087828, 0.64754384, 0.09980577, 0.50331927, - 0.90966904, 0.67624758, 0.22728569, 0.61184030, 0.66753081, 0.00405466, - 0.93407600, 0.89524725, 0.34496848, 0.01595642, 0.54338693, 0.65760153, - 0.69930304, 0.54202591, 0.66030817, 0.74371140, 0.95000083, 0.86475930, - 0.99826786, 0.85464029, 0.89926621, 0.90551912, 0.89889036, 0.38316505, - 0.06428984, 0.39342267, 0.40689672, 0.37076883, 0.72720439, 0.05071236, - 0.01355718, 0.95169120, 0.03623840, 0.05569115, 0.47255274, 0.44040655}; + 0.73348462, 0.74833735, 0.40982435, 0.51988197, 0.99384421, 0.12469386, 0.47686314, 0.25882564, 0.67028317, + 0.58466398, 0.74927361, 0.19614283, 0.82593526, 0.41205770, 0.74020169, 0.62222693, 0.33264240, 0.84108156, + 0.86392366, 0.79030966, 0.79792986, 0.47647899, 0.65967837, 0.92732906, 0.90477190, 0.87232389, 0.55734667, + 0.75560744, 0.70658521, 0.28530827, 0.02554864, 0.14915414, 0.29936996, 0.74239557, 0.38158196, 0.26483291, + 0.15843351, 0.38703221, 0.79967600, 0.63790851, 0.66191234, 0.19395184, 0.34992850, 0.89077723, 0.40746049, + 0.01455611, 0.84174579, 0.91950995, 0.43402124, 0.76620100, 0.96476467, 0.78331896, 0.48567269, 0.33793230, + 0.20362115, 0.51710568, 0.55455124, 0.10148728, 0.48229121, 0.58612092, 0.91786709, 0.94405867, 0.54302465, + 0.24146348, 0.34853454, 0.75880201, 0.67781768, 0.29531289, 0.35969526, 0.01040005, 0.63142510, 0.67264276, + 0.57920180, 0.99608063, 0.91108299, 0.82647166, 0.54134147, 0.79556370, 0.18579404, 0.95271365, 0.61918245, + 0.17552980, 0.56332554, 0.58036855, 0.33756331, 0.69359258, 0.03914420, 0.14962257, 0.26647894, 0.45042564, + 0.60093050, 0.67657016, 0.12601171, 0.95279680, 0.02868298, 0.82188820, 0.17558198, 0.40678849, 0.90804391, + 0.21813571, 0.69710526, 0.91450289, 0.44277349, 0.70432336, 0.88161566, 0.23739783, 0.02746046, 0.05775890, + 0.63494471, 0.10963744, 0.68260565, 0.87579980, 0.34451002, 0.01422449, 0.44081511, 0.78790226, 0.42010180, + 0.62148773, 0.73164358, 0.85657540, 0.21649672, 0.93347654, 0.65511518, 0.45192463, 0.57671214, 0.09925586, + 0.76042901, 0.84041443, 0.91933065, 0.00541233, 0.56194300, 0.71416635, 0.15882159, 0.57976451, 0.37377713, + 0.48352544, 0.96645849, 0.50040596, 0.06060478, 0.21032667, 0.33303769, 0.80884551, 0.97500277, 0.28607026, + 0.12235457, 0.47764468, 0.09834820, 0.08864630, 0.21728048, 0.92446905, 0.53802798, 0.22378462, 0.66087828, + 0.64754384, 0.09980577, 0.50331927, 0.90966904, 0.67624758, 0.22728569, 0.61184030, 0.66753081, 0.00405466, + 0.93407600, 0.89524725, 0.34496848, 0.01595642, 0.54338693, 0.65760153, 0.69930304, 0.54202591, 0.66030817, + 0.74371140, 0.95000083, 0.86475930, 0.99826786, 0.85464029, 0.89926621, 0.90551912, 0.89889036, 0.38316505, + 0.06428984, 0.39342267, 0.40689672, 0.37076883, 0.72720439, 0.05071236, 0.01355718, 0.95169120, 0.03623840, + 0.05569115, 0.47255274, 0.44040655}; static const std::vector expected_irdft2d_results_1 = { - 0.106065355, 0.7454709, 0.5723129, 0.45824066, 0.384706, 0.27398905, 0.6679619, 0.39547434, - 0.2815724, 0.779919, 0.59909385, 0.122946456, 0.38957337, 0.97498655, 0.46759892, 0.14017127, - 0.04206834, 0.72799486, 0.61560476, 0.9027304, 0.6226336, 0.2601218, 0.5555171, 0.4049862, - 0.14175594, 0.57774574, 0.52652067, 0.9385676, 0.958878, 0.9844308, 0.2309568, 0.0970796, - 0.24574815, 0.6907565, 0.19743192, 0.8295261, 0.3461272, 0.5140136, 0.66115695, 0.93362343, - 0.06690116, 0.74688905, 0.39028272, 0.53575796, 0.060429227, 0.89135474, 0.77787286, 0.67011875, - 0.73505205, 0.6636992, 0.18176568, 0.8629964, 0.4514285, 0.6497283, 0.15937214, 0.40598106, - 0.7988508, 0.72915316, 0.07090413, 0.76971227, 0.49721542, 0.7669206, 0.6797579, 0.13026048, - 0.6587432, 0.24532847, 0.24545121, 0.83795464, 0.10549038, 0.72643167, 0.94568396, 0.72166353, - 0.14389817, 0.79305094, 0.7089523, 0.9724684, 0.9775141, 0.49999753, 0.6556916, 0.2687679, - 0.6324893, 0.85201234, 0.5689621, 0.023386242, 0.5546462, 0.36860004, 0.9603104, 0.3912346, - 0.038073156, 0.8921232, 0.14387667, 0.63858616, 0.10003737, 0.8906622, 0.06681097, 0.74586314, - 0.4545233, 0.54724485, 0.6496472, 0.7818348, 0.6608358, 0.77711284, 0.24588637, 0.0134570245, - 0.35584468, 0.8038809, 0.027993381, 0.7367708, 0.52754945, 0.90523165, 0.54310995, 0.5367796, - 0.41312343, 0.7752323, 0.10966998, 0.13664615, 0.7828726, 0.9083951, 0.524759, 0.7493586, - 0.19275239, 0.0071907635, 0.60879755, 0.34413564, 0.4690983, 0.4192482, 0.70729065, 0.1993285, - 0.5303842, 0.65138334, 0.06686333, 0.97179186, 0.657022, 0.11786719, 0.3154068, 0.8892283, - 0.55640805, 0.9104763, 0.28466636, 0.093467236, 0.88953, 0.9919328, 0.18322526, 0.8185441, - 0.56639117, 0.014208457, 0.29673028, 0.6347738, 0.68019533, 0.39601144, 0.34374115, 0.72168803, - 0.61525595, 0.76679367, 0.5860848, 0.42768106, 0.7933919, 0.13130645, 0.68764144, 0.05312841, - 0.026113434, 0.2982238, 0.7618365, 0.3331724, 0.5468184, 0.15707079, 0.28592035, 0.15286529, - 0.9368952, 0.35067078, 0.43364897, 0.089348935, 0.41172677, 0.58502454, 0.7073026, 0.85983366, - 0.08878795, 0.2671109, 0.8002475, 0.19422255, 0.83120316, 0.5198712, 0.40111288, 0.98375624, - 0.77703446, 0.03781964, 0.7042304, 0.68980736, 0.17102323, 0.42153904, 0.7278248, 0.80301994, - 0.91017085, 0.019965423, 0.13768451, 0.556689, 0.17991383, 0.6720085, 0.7733324, 0.20881362}; + 0.106065355, 0.7454709, 0.5723129, 0.45824066, 0.384706, 0.27398905, 0.6679619, 0.39547434, 0.2815724, + 0.779919, 0.59909385, 0.122946456, 0.38957337, 0.97498655, 0.46759892, 0.14017127, 0.04206834, 0.72799486, + 0.61560476, 0.9027304, 0.6226336, 0.2601218, 0.5555171, 0.4049862, 0.14175594, 0.57774574, 0.52652067, + 0.9385676, 0.958878, 0.9844308, 0.2309568, 0.0970796, 0.24574815, 0.6907565, 0.19743192, 0.8295261, + 0.3461272, 0.5140136, 0.66115695, 0.93362343, 0.06690116, 0.74688905, 0.39028272, 0.53575796, 0.060429227, + 0.89135474, 0.77787286, 0.67011875, 0.73505205, 0.6636992, 0.18176568, 0.8629964, 0.4514285, 0.6497283, + 0.15937214, 0.40598106, 0.7988508, 0.72915316, 0.07090413, 0.76971227, 0.49721542, 0.7669206, 0.6797579, + 0.13026048, 0.6587432, 0.24532847, 0.24545121, 0.83795464, 0.10549038, 0.72643167, 0.94568396, 0.72166353, + 0.14389817, 0.79305094, 0.7089523, 0.9724684, 0.9775141, 0.49999753, 0.6556916, 0.2687679, 0.6324893, + 0.85201234, 0.5689621, 0.023386242, 0.5546462, 0.36860004, 0.9603104, 0.3912346, 0.038073156, 0.8921232, + 0.14387667, 0.63858616, 0.10003737, 0.8906622, 0.06681097, 0.74586314, 0.4545233, 0.54724485, 0.6496472, + 0.7818348, 0.6608358, 0.77711284, 0.24588637, 0.0134570245, 0.35584468, 0.8038809, 0.027993381, 0.7367708, + 0.52754945, 0.90523165, 0.54310995, 0.5367796, 0.41312343, 0.7752323, 0.10966998, 0.13664615, 0.7828726, + 0.9083951, 0.524759, 0.7493586, 0.19275239, 0.0071907635, 0.60879755, 0.34413564, 0.4690983, 0.4192482, + 0.70729065, 0.1993285, 0.5303842, 0.65138334, 0.06686333, 0.97179186, 0.657022, 0.11786719, 0.3154068, + 0.8892283, 0.55640805, 0.9104763, 0.28466636, 0.093467236, 0.88953, 0.9919328, 0.18322526, 0.8185441, + 0.56639117, 0.014208457, 0.29673028, 0.6347738, 0.68019533, 0.39601144, 0.34374115, 0.72168803, 0.61525595, + 0.76679367, 0.5860848, 0.42768106, 0.7933919, 0.13130645, 0.68764144, 0.05312841, 0.026113434, 0.2982238, + 0.7618365, 0.3331724, 0.5468184, 0.15707079, 0.28592035, 0.15286529, 0.9368952, 0.35067078, 0.43364897, + 0.089348935, 0.41172677, 0.58502454, 0.7073026, 0.85983366, 0.08878795, 0.2671109, 0.8002475, 0.19422255, + 0.83120316, 0.5198712, 0.40111288, 0.98375624, 0.77703446, 0.03781964, 0.7042304, 0.68980736, 0.17102323, + 0.42153904, 0.7278248, 0.80301994, 0.91017085, 0.019965423, 0.13768451, 0.556689, 0.17991383, 0.6720085, + 0.7733324, 0.20881362}; static const std::vector expected_irdft2d_results_2 = { - 0.10606504, 0.74547091, 0.57231341, 0.45824085, 0.38470576, 0.27398939, 0.66796227, - 0.39547472, 0.28157284, 0.77991920, 0.00000012, 0.00000025, 0.59909402, 0.12294612, - 0.38957398, 0.97498753, 0.46759871, 0.14017182, 0.04206866, 0.72799575, 0.61560553, - 0.90273150, 0.00000029, 0.00000019, 0.62263335, 0.26012139, 0.55551768, 0.40498611, - 0.14175560, 0.57774629, 0.52652119, 0.93856842, 0.95887877, 0.98443111, 0.00000026, - 0.00000029, 0.23095626, 0.09707905, 0.24574875, 0.69075717, 0.19743158, 0.82952691, - 0.34612741, 0.51401454, 0.66115784, 0.93362381, 0.00000013, 0.00000019, 0.06690087, - 0.74688917, 0.39028283, 0.53575807, 0.06042910, 0.89135566, 0.77787371, 0.67011938, - 0.73505260, 0.66369919, 0.00000020, 0.00000025, 0.66083517, 0.77711292, 0.24588620, - 0.01345654, 0.35584463, 0.80388178, 0.02799342, 0.73677143, 0.52754998, 0.90523178, - 0.00000020, 0.00000022, 0.54311002, 0.53678006, 0.41312413, 0.77523314, 0.10966939, - 0.13664682, 0.78287364, 0.90839633, 0.52475940, 0.74935884, 0.00000017, 0.00000024, - 0.19275220, 0.00719083, 0.60879792, 0.34413568, 0.46909855, 0.41924857, 0.70729118, - 0.19932858, 0.53038468, 0.65138356, 0.00000024, 0.00000004, 0.06686326, 0.97179258, - 0.65702215, 0.11786667, 0.31540699, 0.88922984, 0.55640881, 0.91047768, 0.28466661, - 0.09346649, 0.00000006, 0.00000008, 0.88953045, 0.99193334, 0.18322520, 0.81854497, - 0.56639084, 0.01420842, 0.29673067, 0.63477397, 0.68019596, 0.39601113, 0.00000014, - 0.00000022}; + 0.10606504, 0.74547091, 0.57231341, 0.45824085, 0.38470576, 0.27398939, 0.66796227, 0.39547472, 0.28157284, + 0.77991920, 0.00000012, 0.00000025, 0.59909402, 0.12294612, 0.38957398, 0.97498753, 0.46759871, 0.14017182, + 0.04206866, 0.72799575, 0.61560553, 0.90273150, 0.00000029, 0.00000019, 0.62263335, 0.26012139, 0.55551768, + 0.40498611, 0.14175560, 0.57774629, 0.52652119, 0.93856842, 0.95887877, 0.98443111, 0.00000026, 0.00000029, + 0.23095626, 0.09707905, 0.24574875, 0.69075717, 0.19743158, 0.82952691, 0.34612741, 0.51401454, 0.66115784, + 0.93362381, 0.00000013, 0.00000019, 0.06690087, 0.74688917, 0.39028283, 0.53575807, 0.06042910, 0.89135566, + 0.77787371, 0.67011938, 0.73505260, 0.66369919, 0.00000020, 0.00000025, 0.66083517, 0.77711292, 0.24588620, + 0.01345654, 0.35584463, 0.80388178, 0.02799342, 0.73677143, 0.52754998, 0.90523178, 0.00000020, 0.00000022, + 0.54311002, 0.53678006, 0.41312413, 0.77523314, 0.10966939, 0.13664682, 0.78287364, 0.90839633, 0.52475940, + 0.74935884, 0.00000017, 0.00000024, 0.19275220, 0.00719083, 0.60879792, 0.34413568, 0.46909855, 0.41924857, + 0.70729118, 0.19932858, 0.53038468, 0.65138356, 0.00000024, 0.00000004, 0.06686326, 0.97179258, 0.65702215, + 0.11786667, 0.31540699, 0.88922984, 0.55640881, 0.91047768, 0.28466661, 0.09346649, 0.00000006, 0.00000008, + 0.88953045, 0.99193334, 0.18322520, 0.81854497, 0.56639084, 0.01420842, 0.29673067, 0.63477397, 0.68019596, + 0.39601113, 0.00000014, 0.00000022}; static const std::vector expected_irdft3d_results_2 = { - 0.29655575, 0.59799123, 0.22431113, 0.46143103, 0.53208175, 0.32705094, 0.59367000, - 0.29963828, 0.41763943, 0.24033307, 0.42796425, 0.56577777, 0.37677909, 0.32099129, - 0.28778578, 0.50527716, 0.39592624, -0.01477019, 0.46390174, 0.48881302, 0.69299017, - 0.69097986, 0.60120016, 0.82729206, -0.09137908, 0.49852066, 0.41157645, 0.50370176, - 0.50602146, 0.12422646, 0.66381460, 0.40124601, 0.71138931, 0.66414101, 0.50896081, - 0.51854765, 0.21342740, 0.75042767, 0.40385838, 0.28173387, 0.29258505, 0.34233110, - 0.44617152, 0.32590713, 0.69813927, 0.27029157, 0.49500125, 0.57849153, 0.52079012, - 0.46437605, 0.44842544, 0.21380078, 0.57897044, 0.32123390, 0.46531573, 0.55946432, - 0.36995799, 0.19326348, 0.26279333, 0.89411452, 0.45806675, 0.58413552, 0.47982321, - 0.40877153, 0.23978246, 0.33369794, 0.56433968, 0.09308288, 0.20574836, 0.51936717, - 0.46905154, 0.47775696, 0.17856948, 0.04195880, 0.24284739, 0.63731160, 0.16159543, - 0.08925854, 0.50157161, 0.67721677, 0.75653236, 0.50840554, 0.73467008, 0.62163510, - 0.00566245, 0.92257200, 0.42133956, 0.45249607, 0.36451271, 0.46674756, 0.65809363, - 0.29478180, 0.79919561, 0.37987672, 0.46803394, 0.20036376, 0.30268271, 0.62990812, - 0.29745090, 0.46503467, 0.30444576, 0.43581755, 0.38956261, 0.58891618, 0.43936615, - 0.12833645, 0.82411153, 0.30960669, 0.24676315, 0.39269569, 0.26772071, 0.46022705, - 0.77598541, 0.46882716, 0.40922151, 0.28451272, 0.27156988, 0.32720683, 0.48740341, - 0.52519462, 0.47371313, 0.61046947, 0.46505542, 0.04019986, 0.27622309, 0.42926452, - 0.49897225, 0.04617115, 0.50902017, 0.74826910, 0.28548445, 0.63409441, 0.13183664, - 0.02507987, 0.51695660, 0.50593892, 0.17335312, 0.24157819, 0.45513622, 0.69800550, - 0.40604969, 0.47128647, 0.59389774, 0.33534107, 0.50887902, 0.82998967, 0.22642939, - 0.32967160, 0.50515564, 0.54070049, 0.28947697, 0.35626388, 0.58235507, 0.30633221, - 0.50041779, 0.24975602, 0.38320678, 0.40595842, 0.50651077, 0.42963483, 0.25977121, - 0.32014694, 0.37577291, 0.46638206, 0.05511259, 0.45463482, 0.62685054, 0.13046773, - 0.49768469, 0.47645129, 0.56182954, 0.74548830, 0.73150766, 0.37579758, 0.14279248, - 0.28705593, 0.45403320, 0.50334282, 0.24132925, 0.24104091, 0.31220213, 0.62432518, - 0.20954334, 0.09285936, 0.56852238, 0.42261752, 0.52830257, 0.25272655, 0.72091123, - 0.46923499, 0.24439716, 0.72211522, 0.33004626, 0.30411236, 0.56189500, 0.37390448, - 0.40768394, 0.13754946, 0.41746636, 0.50960175, 0.34250750, 0.65386079, 0.46042782, - 0.54099804, 0.41183749, 0.40593833, 0.21666628, 0.38087729, 0.64666439, 0.19817938, - 0.29519793, 0.46272810, 0.49454878, 0.59059650, 0.54134465, 0.56793991, 0.29395146, - 0.52647797, 0.61291826, 0.24633402, 0.24791051, 0.22666050, 0.43238182, 0.20337301, - 0.31388571, 0.59658993, 0.29774026, 0.39935257, 0.77171166, 0.54813165, 0.74253426, - 0.49906203, 0.53449270, 0.22820431, 0.19888670, 0.56200754, 0.55242130, 0.36939947, - 0.01671917, 0.60996081}; + 0.29655575, 0.59799123, 0.22431113, 0.46143103, 0.53208175, 0.32705094, 0.59367000, 0.29963828, 0.41763943, + 0.24033307, 0.42796425, 0.56577777, 0.37677909, 0.32099129, 0.28778578, 0.50527716, 0.39592624, -0.01477019, + 0.46390174, 0.48881302, 0.69299017, 0.69097986, 0.60120016, 0.82729206, -0.09137908, 0.49852066, 0.41157645, + 0.50370176, 0.50602146, 0.12422646, 0.66381460, 0.40124601, 0.71138931, 0.66414101, 0.50896081, 0.51854765, + 0.21342740, 0.75042767, 0.40385838, 0.28173387, 0.29258505, 0.34233110, 0.44617152, 0.32590713, 0.69813927, + 0.27029157, 0.49500125, 0.57849153, 0.52079012, 0.46437605, 0.44842544, 0.21380078, 0.57897044, 0.32123390, + 0.46531573, 0.55946432, 0.36995799, 0.19326348, 0.26279333, 0.89411452, 0.45806675, 0.58413552, 0.47982321, + 0.40877153, 0.23978246, 0.33369794, 0.56433968, 0.09308288, 0.20574836, 0.51936717, 0.46905154, 0.47775696, + 0.17856948, 0.04195880, 0.24284739, 0.63731160, 0.16159543, 0.08925854, 0.50157161, 0.67721677, 0.75653236, + 0.50840554, 0.73467008, 0.62163510, 0.00566245, 0.92257200, 0.42133956, 0.45249607, 0.36451271, 0.46674756, + 0.65809363, 0.29478180, 0.79919561, 0.37987672, 0.46803394, 0.20036376, 0.30268271, 0.62990812, 0.29745090, + 0.46503467, 0.30444576, 0.43581755, 0.38956261, 0.58891618, 0.43936615, 0.12833645, 0.82411153, 0.30960669, + 0.24676315, 0.39269569, 0.26772071, 0.46022705, 0.77598541, 0.46882716, 0.40922151, 0.28451272, 0.27156988, + 0.32720683, 0.48740341, 0.52519462, 0.47371313, 0.61046947, 0.46505542, 0.04019986, 0.27622309, 0.42926452, + 0.49897225, 0.04617115, 0.50902017, 0.74826910, 0.28548445, 0.63409441, 0.13183664, 0.02507987, 0.51695660, + 0.50593892, 0.17335312, 0.24157819, 0.45513622, 0.69800550, 0.40604969, 0.47128647, 0.59389774, 0.33534107, + 0.50887902, 0.82998967, 0.22642939, 0.32967160, 0.50515564, 0.54070049, 0.28947697, 0.35626388, 0.58235507, + 0.30633221, 0.50041779, 0.24975602, 0.38320678, 0.40595842, 0.50651077, 0.42963483, 0.25977121, 0.32014694, + 0.37577291, 0.46638206, 0.05511259, 0.45463482, 0.62685054, 0.13046773, 0.49768469, 0.47645129, 0.56182954, + 0.74548830, 0.73150766, 0.37579758, 0.14279248, 0.28705593, 0.45403320, 0.50334282, 0.24132925, 0.24104091, + 0.31220213, 0.62432518, 0.20954334, 0.09285936, 0.56852238, 0.42261752, 0.52830257, 0.25272655, 0.72091123, + 0.46923499, 0.24439716, 0.72211522, 0.33004626, 0.30411236, 0.56189500, 0.37390448, 0.40768394, 0.13754946, + 0.41746636, 0.50960175, 0.34250750, 0.65386079, 0.46042782, 0.54099804, 0.41183749, 0.40593833, 0.21666628, + 0.38087729, 0.64666439, 0.19817938, 0.29519793, 0.46272810, 0.49454878, 0.59059650, 0.54134465, 0.56793991, + 0.29395146, 0.52647797, 0.61291826, 0.24633402, 0.24791051, 0.22666050, 0.43238182, 0.20337301, 0.31388571, + 0.59658993, 0.29774026, 0.39935257, 0.77171166, 0.54813165, 0.74253426, 0.49906203, 0.53449270, 0.22820431, + 0.19888670, 0.56200754, 0.55242130, 0.36939947, 0.01671917, 0.60996081}; -static const std::vector expected_irdft3d_results_3 ={ - 0.51795123, 0.01846075, 0.03363710, -0.02286412, -0.00527071, -0.05116411, - -0.01142488, -0.01784910, -0.01088149, 0.01049122, -0.00829387, 0.00942086, - -0.02915924, 0.05941228, 0.05868882, -0.02329090, 0.06043447, 0.01260666, - 0.04213929, -0.03578551, -0.00354573, -0.02047438, -0.03469945, -0.02365786, - 0.00807303, 0.02364844, -0.00346402, -0.00134415, 0.04106979, 0.04961361, - -0.01212564, -0.04288128, -0.26157875, -0.01917418, -0.04232584, 0.02477720, - 0.02514449, 0.04955597, -0.00301304, 0.00663580, 0.01947190, -0.01163269, - -0.07920224, -0.01201069, 0.00564843, 0.00283007, -0.05916596, 0.03569793, - -0.02454099, -0.01977048, -0.00360401, 0.00924050, -0.01237082, -0.04213287, - -0.03306797, -0.01442351, -0.02601594, 0.07406829, -0.02896844, 0.00503278, - 0.00700455, 0.02915976, 0.01761130, -0.04474307, 0.03632101, 0.00957998, - -0.02003984, -0.04022581, 0.03104216, 0.00388626, 0.05861915, 0.01034101, - -0.00741989, 0.01010181, 0.01496502, -0.00544559, 0.04015258, -0.00600315, - -0.06137903, 0.07850411, -0.00074931, 0.02540785, -0.00166176, 0.02205904, - -0.02429718, 0.04010517, 0.02375359, 0.02229406, 0.01806382, -0.06089136, - 0.00447113, -0.03169147, 0.02836490, -0.05821620, 0.03905417, 0.03987032, - 0.29899586, -0.02616866, -0.00927641, -0.02134532, -0.02480746, -0.02636082, - -0.05009444, -0.02208490, 0.02632000, 0.00493334, -0.00402312, -0.00935831, - 0.04154630, 0.00849218, 0.00232782, -0.01192997, -0.03309486, 0.01678531, - 0.03526979, 0.09272132, 0.01420703, -0.01919909, 0.01321082, -0.01661140, - 0.07861365, -0.02784724, 0.03900426, -0.00096805, -0.02880604, 0.02753764, - -0.02092520, -0.01412453}; +static const std::vector expected_irdft3d_results_3 = { + 0.51795123, 0.01846075, 0.03363710, -0.02286412, -0.00527071, -0.05116411, -0.01142488, -0.01784910, -0.01088149, + 0.01049122, -0.00829387, 0.00942086, -0.02915924, 0.05941228, 0.05868882, -0.02329090, 0.06043447, 0.01260666, + 0.04213929, -0.03578551, -0.00354573, -0.02047438, -0.03469945, -0.02365786, 0.00807303, 0.02364844, -0.00346402, + -0.00134415, 0.04106979, 0.04961361, -0.01212564, -0.04288128, -0.26157875, -0.01917418, -0.04232584, 0.02477720, + 0.02514449, 0.04955597, -0.00301304, 0.00663580, 0.01947190, -0.01163269, -0.07920224, -0.01201069, 0.00564843, + 0.00283007, -0.05916596, 0.03569793, -0.02454099, -0.01977048, -0.00360401, 0.00924050, -0.01237082, -0.04213287, + -0.03306797, -0.01442351, -0.02601594, 0.07406829, -0.02896844, 0.00503278, 0.00700455, 0.02915976, 0.01761130, + -0.04474307, 0.03632101, 0.00957998, -0.02003984, -0.04022581, 0.03104216, 0.00388626, 0.05861915, 0.01034101, + -0.00741989, 0.01010181, 0.01496502, -0.00544559, 0.04015258, -0.00600315, -0.06137903, 0.07850411, -0.00074931, + 0.02540785, -0.00166176, 0.02205904, -0.02429718, 0.04010517, 0.02375359, 0.02229406, 0.01806382, -0.06089136, + 0.00447113, -0.03169147, 0.02836490, -0.05821620, 0.03905417, 0.03987032, 0.29899586, -0.02616866, -0.00927641, + -0.02134532, -0.02480746, -0.02636082, -0.05009444, -0.02208490, 0.02632000, 0.00493334, -0.00402312, -0.00935831, + 0.04154630, 0.00849218, 0.00232782, -0.01192997, -0.03309486, 0.01678531, 0.03526979, 0.09272132, 0.01420703, + -0.01919909, 0.01321082, -0.01661140, 0.07861365, -0.02784724, 0.03900426, -0.00096805, -0.02880604, 0.02753764, + -0.02092520, -0.01412453}; static const std::vector expected_irdft3d_results_4 = { - 0.24882269, -0.00554157, -0.00759689, -0.00413212, 0.01099624, 0.02191469, - 0.02829072, -0.01410181, 0.04826954, 0.03587530, -0.01151859, 0.03459743, - 0.03157633, -0.03446264, 0.03595825, -0.01176664, 0.00625817, 0.00981066, - -0.11900401, -0.02756717, 0.01933546, 0.03042892, -0.04917013, 0.00048474, - -0.01849990, -0.01050222, -0.02433642, -0.08657554, -0.03473007, -0.01486101, - 0.00137630, -0.01972852, -0.06159696, 0.02284726, -0.03851998, -0.00885092, - 0.02397606, -0.02071742, -0.00586151, -0.01287085, 0.01713095, -0.07724825, - 0.05983482, -0.02824272, 0.02959802, 0.04051825, 0.00219584, 0.04053028, - 0.00415529, 0.02379833, -0.01936524, 0.04350142, 0.02095385, 0.03121966, - -0.02675550, 0.01142533, 0.05606331, 0.02115209, 0.00866956, 0.05367358, - -0.00479556, 0.05423974, -0.01172735, -0.01203834, 0.00181946, 0.00594081, - 0.00527473, 0.00781714, 0.07042868, -0.02243115, 0.03207793, -0.04213578, - 0.14912935, -0.01012542, -0.05799989, -0.02889979, 0.02934662, 0.03385938, - 0.00951527, -0.01760542, -0.01611288, 0.29838892, -0.01029289, -0.06226702, - -0.03670440, 0.03954893, 0.00725941, 0.04219448, -0.03698240, 0.03564729}; + 0.24882269, -0.00554157, -0.00759689, -0.00413212, 0.01099624, 0.02191469, 0.02829072, -0.01410181, 0.04826954, + 0.03587530, -0.01151859, 0.03459743, 0.03157633, -0.03446264, 0.03595825, -0.01176664, 0.00625817, 0.00981066, + -0.11900401, -0.02756717, 0.01933546, 0.03042892, -0.04917013, 0.00048474, -0.01849990, -0.01050222, -0.02433642, + -0.08657554, -0.03473007, -0.01486101, 0.00137630, -0.01972852, -0.06159696, 0.02284726, -0.03851998, -0.00885092, + 0.02397606, -0.02071742, -0.00586151, -0.01287085, 0.01713095, -0.07724825, 0.05983482, -0.02824272, 0.02959802, + 0.04051825, 0.00219584, 0.04053028, 0.00415529, 0.02379833, -0.01936524, 0.04350142, 0.02095385, 0.03121966, + -0.02675550, 0.01142533, 0.05606331, 0.02115209, 0.00866956, 0.05367358, -0.00479556, 0.05423974, -0.01172735, + -0.01203834, 0.00181946, 0.00594081, 0.00527473, 0.00781714, 0.07042868, -0.02243115, 0.03207793, -0.04213578, + 0.14912935, -0.01012542, -0.05799989, -0.02889979, 0.02934662, 0.03385938, 0.00951527, -0.01760542, -0.01611288, + 0.29838892, -0.01029289, -0.06226702, -0.03670440, 0.03954893, 0.00725941, 0.04219448, -0.03698240, 0.03564729}; template std::vector generateParamsForIRDFT() { @@ -609,186 +543,186 @@ std::vector generateParamsForIRDFT() { expected_irdft2d_results_1, op::v0::Constant::create(element::Type_t::i64, Shape{2}, {1, 2}), NULL), - // irdft2d_eval_1_positive_negative_axes - IRDFTParams(Shape{2, 10, 6, 2}, - Shape{2, 10, 10}, - ET, - ET, - input_data_4, - expected_irdft1d_results_1, - op::v0::Constant::create(element::Type_t::i64, Shape{2}, {1, -1}), - NULL), - // irdft2d_eval_1_negative_positive_axes - IRDFTParams(Shape{2, 10, 6, 2}, - Shape{2, 10, 10}, - ET, - ET, - input_data_4, - expected_irdft1d_results_1, - op::v0::Constant::create(element::Type_t::i64, Shape{2}, {-2, 2}), - NULL), - // irdft2d_eval_1_negative_negative_axes - IRDFTParams(Shape{2, 10, 6, 2}, - Shape{2, 10, 10}, - ET, - ET, - input_data_4, - expected_irdft1d_results_1, - op::v0::Constant::create(element::Type_t::i64, Shape{2}, {-2, -1}), - NULL), - // irdft2d_eval_1_signal_size_0_s10_10 - IRDFTParams(Shape{2, 10, 6, 2}, - Shape{2, 10, 10}, - ET, - ET, - input_data_4, - expected_irdft1d_results_1, - op::v0::Constant::create(element::Type_t::i64, Shape{2}, {1, 2}), - op::v0::Constant::create(element::Type_t::i64, Shape{2}, {10, 10})), - // irdft2d_eval_1_signal_size_0_s10_10_positive_negative_axes - IRDFTParams(Shape{2, 10, 6, 2}, - Shape{2, 10, 10}, - ET, - ET, - input_data_4, - expected_irdft1d_results_1, - op::v0::Constant::create(element::Type_t::i64, Shape{2}, {1, -1}), - op::v0::Constant::create(element::Type_t::i64, Shape{2}, {10, 10})), - // irdft2d_eval_1_signal_size_0_s10_10_negative_positive_axes - IRDFTParams(Shape{2, 10, 6, 2}, - Shape{2, 10, 10}, - ET, - ET, - input_data_4, - expected_irdft1d_results_1, - op::v0::Constant::create(element::Type_t::i64, Shape{2}, {-2, 2}), - op::v0::Constant::create(element::Type_t::i64, Shape{2}, {10, 10})), - // irdft2d_eval_1_signal_size_0_s10_10_negative_negative_axes - IRDFTParams(Shape{2, 10, 6, 2}, - Shape{2, 10, 10}, - ET, - ET, - input_data_4, - expected_irdft1d_results_1, - op::v0::Constant::create(element::Type_t::i64, Shape{2}, {-2, -1}), - op::v0::Constant::create(element::Type_t::i64, Shape{2}, {10, 10})), - // irdft2d_eval_1_signal_size_0_s10_m1 - IRDFTParams(Shape{2, 10, 6, 2}, - Shape{2, 10, 10}, - ET, - ET, - input_data_4, - expected_irdft1d_results_1, - op::v0::Constant::create(element::Type_t::i64, Shape{2}, {1, 2}), - op::v0::Constant::create(element::Type_t::i64, Shape{2}, {10, -1})), - // irdft2d_eval_1_signal_size_0_sm1_10 - IRDFTParams(Shape{2, 10, 6, 2}, - Shape{2, 10, 10}, - ET, - ET, - input_data_4, - expected_irdft1d_results_1, - op::v0::Constant::create(element::Type_t::i64, Shape{2}, {1, 2}), - op::v0::Constant::create(element::Type_t::i64, Shape{2}, {-1, 10})), - // irdft2d_eval_1_signal_size_0_sm1_m1 - IRDFTParams(Shape{2, 10, 6, 2}, - Shape{2, 10, 10}, - ET, - ET, - input_data_4, - expected_irdft1d_results_1, - op::v0::Constant::create(element::Type_t::i64, Shape{2}, {1, 2}), - op::v0::Constant::create(element::Type_t::i64, Shape{2}, {-1, -1})), - // irdft2d_eval_2_signal_size - IRDFTParams(Shape{2, 5, 7, 2}, - Shape{2, 5, 12}, - ET, - ET, - input_data_5, - expected_irdft2d_results_2, - op::v0::Constant::create(element::Type_t::i64, Shape{2}, {1, 2}), - op::v0::Constant::create(element::Type_t::i64, Shape{2}, {5, 12})), - // irdft2d_eval_2_signal_size_positive_negative_axes - IRDFTParams(Shape{2, 5, 7, 2}, - Shape{2, 5, 12}, - ET, - ET, - input_data_5, - expected_irdft2d_results_2, - op::v0::Constant::create(element::Type_t::i64, Shape{2}, {1, -1}), - op::v0::Constant::create(element::Type_t::i64, Shape{2}, {5, 12})), - // irdft2d_eval_2_signal_size_negative_positive_axes - IRDFTParams(Shape{2, 5, 7, 2}, - Shape{2, 5, 12}, - ET, - ET, - input_data_5, - expected_irdft2d_results_2, - op::v0::Constant::create(element::Type_t::i64, Shape{2}, {-2, 2}), - op::v0::Constant::create(element::Type_t::i64, Shape{2}, {5, 12})), - // irdft2d_eval_2_signal_size_negative_negative_axes - IRDFTParams(Shape{2, 5, 7, 2}, - Shape{2, 5, 12}, - ET, - ET, - input_data_5, - expected_irdft2d_results_2, - op::v0::Constant::create(element::Type_t::i64, Shape{2}, {-2, -1}), - op::v0::Constant::create(element::Type_t::i64, Shape{2}, {5, 12})), - // irdft3d_eval_1 - IRDFTParams(Shape{2, 10, 6, 2}, - Shape{2, 10, 10}, - ET, - ET, - input_data_6, - expected_irdft1d_results_1, - op::v0::Constant::create(element::Type_t::i64, Shape{3}, {0, 1, 2}), - NULL), - // irdft3d_eval_1_negative_axes_and_signal_size - IRDFTParams(Shape{2, 10, 6, 2}, - Shape{2, 10, 10}, - ET, - ET, - input_data_6, - expected_irdft1d_results_1, - op::v0::Constant::create(element::Type_t::i64, Shape{3}, {-3, 1, 2}), - op::v0::Constant::create(element::Type_t::i64, Shape{3}, {-1, 10, -1})), - // irdft3d_eval_2 - IRDFTParams(Shape{2, 10, 6, 2}, - Shape{4, 5, 12}, - ET, - ET, - input_data_6, - expected_irdft3d_results_2, - op::v0::Constant::create(element::Type_t::i64, Shape{3}, {0, 1, 2}), - op::v0::Constant::create(element::Type_t::i64, Shape{3}, {4, 5, 12})), - // irdft3d_eval_2_negative_axes - IRDFTParams(Shape{2, 10, 6, 2}, - Shape{4, 5, 12}, - ET, - ET, - input_data_6, - expected_irdft3d_results_2, - op::v0::Constant::create(element::Type_t::i64, Shape{3}, {-3, -2, 2}), - op::v0::Constant::create(element::Type_t::i64, Shape{3}, {4, 5, 12})), - // irdft3d_reversed_axes - IRDFTParams(Shape{3, 4, 8, 2}, - Shape{4, 4, 8}, - ET, - ET, - input_data_7, - expected_irdft3d_results_3, - op::v0::Constant::create(element::Type_t::i64, Shape{3}, {2, 1, 0}), - NULL), - // irdft3d_reversed_negative_axes - IRDFTParams(Shape{3, 4, 8, 2}, - Shape{4, 4, 8}, - ET, - ET, - input_data_7, - expected_irdft3d_results_3, - op::v0::Constant::create(element::Type_t::i64, Shape{3}, {-1, -2, -3}), - NULL), + // irdft2d_eval_1_positive_negative_axes + IRDFTParams(Shape{2, 10, 6, 2}, + Shape{2, 10, 10}, + ET, + ET, + input_data_4, + expected_irdft1d_results_1, + op::v0::Constant::create(element::Type_t::i64, Shape{2}, {1, -1}), + NULL), + // irdft2d_eval_1_negative_positive_axes + IRDFTParams(Shape{2, 10, 6, 2}, + Shape{2, 10, 10}, + ET, + ET, + input_data_4, + expected_irdft1d_results_1, + op::v0::Constant::create(element::Type_t::i64, Shape{2}, {-2, 2}), + NULL), + // irdft2d_eval_1_negative_negative_axes + IRDFTParams(Shape{2, 10, 6, 2}, + Shape{2, 10, 10}, + ET, + ET, + input_data_4, + expected_irdft1d_results_1, + op::v0::Constant::create(element::Type_t::i64, Shape{2}, {-2, -1}), + NULL), + // irdft2d_eval_1_signal_size_0_s10_10 + IRDFTParams(Shape{2, 10, 6, 2}, + Shape{2, 10, 10}, + ET, + ET, + input_data_4, + expected_irdft1d_results_1, + op::v0::Constant::create(element::Type_t::i64, Shape{2}, {1, 2}), + op::v0::Constant::create(element::Type_t::i64, Shape{2}, {10, 10})), + // irdft2d_eval_1_signal_size_0_s10_10_positive_negative_axes + IRDFTParams(Shape{2, 10, 6, 2}, + Shape{2, 10, 10}, + ET, + ET, + input_data_4, + expected_irdft1d_results_1, + op::v0::Constant::create(element::Type_t::i64, Shape{2}, {1, -1}), + op::v0::Constant::create(element::Type_t::i64, Shape{2}, {10, 10})), + // irdft2d_eval_1_signal_size_0_s10_10_negative_positive_axes + IRDFTParams(Shape{2, 10, 6, 2}, + Shape{2, 10, 10}, + ET, + ET, + input_data_4, + expected_irdft1d_results_1, + op::v0::Constant::create(element::Type_t::i64, Shape{2}, {-2, 2}), + op::v0::Constant::create(element::Type_t::i64, Shape{2}, {10, 10})), + // irdft2d_eval_1_signal_size_0_s10_10_negative_negative_axes + IRDFTParams(Shape{2, 10, 6, 2}, + Shape{2, 10, 10}, + ET, + ET, + input_data_4, + expected_irdft1d_results_1, + op::v0::Constant::create(element::Type_t::i64, Shape{2}, {-2, -1}), + op::v0::Constant::create(element::Type_t::i64, Shape{2}, {10, 10})), + // irdft2d_eval_1_signal_size_0_s10_m1 + IRDFTParams(Shape{2, 10, 6, 2}, + Shape{2, 10, 10}, + ET, + ET, + input_data_4, + expected_irdft1d_results_1, + op::v0::Constant::create(element::Type_t::i64, Shape{2}, {1, 2}), + op::v0::Constant::create(element::Type_t::i64, Shape{2}, {10, -1})), + // irdft2d_eval_1_signal_size_0_sm1_10 + IRDFTParams(Shape{2, 10, 6, 2}, + Shape{2, 10, 10}, + ET, + ET, + input_data_4, + expected_irdft1d_results_1, + op::v0::Constant::create(element::Type_t::i64, Shape{2}, {1, 2}), + op::v0::Constant::create(element::Type_t::i64, Shape{2}, {-1, 10})), + // irdft2d_eval_1_signal_size_0_sm1_m1 + IRDFTParams(Shape{2, 10, 6, 2}, + Shape{2, 10, 10}, + ET, + ET, + input_data_4, + expected_irdft1d_results_1, + op::v0::Constant::create(element::Type_t::i64, Shape{2}, {1, 2}), + op::v0::Constant::create(element::Type_t::i64, Shape{2}, {-1, -1})), + // irdft2d_eval_2_signal_size + IRDFTParams(Shape{2, 5, 7, 2}, + Shape{2, 5, 12}, + ET, + ET, + input_data_5, + expected_irdft2d_results_2, + op::v0::Constant::create(element::Type_t::i64, Shape{2}, {1, 2}), + op::v0::Constant::create(element::Type_t::i64, Shape{2}, {5, 12})), + // irdft2d_eval_2_signal_size_positive_negative_axes + IRDFTParams(Shape{2, 5, 7, 2}, + Shape{2, 5, 12}, + ET, + ET, + input_data_5, + expected_irdft2d_results_2, + op::v0::Constant::create(element::Type_t::i64, Shape{2}, {1, -1}), + op::v0::Constant::create(element::Type_t::i64, Shape{2}, {5, 12})), + // irdft2d_eval_2_signal_size_negative_positive_axes + IRDFTParams(Shape{2, 5, 7, 2}, + Shape{2, 5, 12}, + ET, + ET, + input_data_5, + expected_irdft2d_results_2, + op::v0::Constant::create(element::Type_t::i64, Shape{2}, {-2, 2}), + op::v0::Constant::create(element::Type_t::i64, Shape{2}, {5, 12})), + // irdft2d_eval_2_signal_size_negative_negative_axes + IRDFTParams(Shape{2, 5, 7, 2}, + Shape{2, 5, 12}, + ET, + ET, + input_data_5, + expected_irdft2d_results_2, + op::v0::Constant::create(element::Type_t::i64, Shape{2}, {-2, -1}), + op::v0::Constant::create(element::Type_t::i64, Shape{2}, {5, 12})), + // irdft3d_eval_1 + IRDFTParams(Shape{2, 10, 6, 2}, + Shape{2, 10, 10}, + ET, + ET, + input_data_6, + expected_irdft1d_results_1, + op::v0::Constant::create(element::Type_t::i64, Shape{3}, {0, 1, 2}), + NULL), + // irdft3d_eval_1_negative_axes_and_signal_size + IRDFTParams(Shape{2, 10, 6, 2}, + Shape{2, 10, 10}, + ET, + ET, + input_data_6, + expected_irdft1d_results_1, + op::v0::Constant::create(element::Type_t::i64, Shape{3}, {-3, 1, 2}), + op::v0::Constant::create(element::Type_t::i64, Shape{3}, {-1, 10, -1})), + // irdft3d_eval_2 + IRDFTParams(Shape{2, 10, 6, 2}, + Shape{4, 5, 12}, + ET, + ET, + input_data_6, + expected_irdft3d_results_2, + op::v0::Constant::create(element::Type_t::i64, Shape{3}, {0, 1, 2}), + op::v0::Constant::create(element::Type_t::i64, Shape{3}, {4, 5, 12})), + // irdft3d_eval_2_negative_axes + IRDFTParams(Shape{2, 10, 6, 2}, + Shape{4, 5, 12}, + ET, + ET, + input_data_6, + expected_irdft3d_results_2, + op::v0::Constant::create(element::Type_t::i64, Shape{3}, {-3, -2, 2}), + op::v0::Constant::create(element::Type_t::i64, Shape{3}, {4, 5, 12})), + // irdft3d_reversed_axes + IRDFTParams(Shape{3, 4, 8, 2}, + Shape{4, 4, 8}, + ET, + ET, + input_data_7, + expected_irdft3d_results_3, + op::v0::Constant::create(element::Type_t::i64, Shape{3}, {2, 1, 0}), + NULL), + // irdft3d_reversed_negative_axes + IRDFTParams(Shape{3, 4, 8, 2}, + Shape{4, 4, 8}, + ET, + ET, + input_data_7, + expected_irdft3d_results_3, + op::v0::Constant::create(element::Type_t::i64, Shape{3}, {-1, -2, -3}), + NULL), // irdft3d_reversed_axes_with_signals IRDFTParams(Shape{3, 4, 8, 2}, Shape{10, 3, 3}, @@ -813,9 +747,7 @@ std::vector generateParamsForIRDFT() { } std::vector generateCombinedParamsForIRDFT() { - const std::vector> allTypeParams{ - generateParamsForIRDFT() - }; + const std::vector> allTypeParams{generateParamsForIRDFT()}; std::vector combinedParams; @@ -826,9 +758,8 @@ std::vector generateCombinedParamsForIRDFT() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P( - smoke_IRDFT_With_Hardcoded_Refs, - ReferenceIRDFTLayerTest, - ::testing::ValuesIn(generateCombinedParamsForIRDFT()), - ReferenceIRDFTLayerTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_IRDFT_With_Hardcoded_Refs, + ReferenceIRDFTLayerTest, + ::testing::ValuesIn(generateCombinedParamsForIRDFT()), + ReferenceIRDFTLayerTest::getTestCaseName); } // namespace \ No newline at end of file diff --git a/src/plugins/template/tests/functional/op_reference/is_finite.cpp b/src/plugins/template/tests/functional/op_reference/is_finite.cpp index dcd937786e9..479cd157038 100644 --- a/src/plugins/template/tests/functional/op_reference/is_finite.cpp +++ b/src/plugins/template/tests/functional/op_reference/is_finite.cpp @@ -2,10 +2,12 @@ // SPDX-License-Identifier: Apache-2.0 // -#include -#include "base_reference_test.hpp" #include "openvino/op/is_finite.hpp" +#include + +#include "base_reference_test.hpp" + using namespace ov; using namespace reference_tests; @@ -14,10 +16,10 @@ namespace { struct IsFiniteParams { template IsFiniteParams(const PartialShape& shape, - const element::Type& iType, - const element::Type& oType, - const std::vector& iValues, - const std::vector& oValues) + const element::Type& iType, + const element::Type& oType, + const std::vector& iValues, + const std::vector& oValues) : pshape(shape), inType(iType), outType(oType), @@ -51,8 +53,8 @@ public: private: static std::shared_ptr CreateFunction(const PartialShape& input_shape, - const element::Type& input_type, - const element::Type& expected_output_type) { + const element::Type& input_type, + const element::Type& expected_output_type) { const auto in = std::make_shared(input_type, input_shape); const auto is_finite = std::make_shared(in); return std::make_shared(NodeVector{is_finite}, ParameterVector{in}); @@ -70,16 +72,17 @@ std::vector generateParamsForIsFiniteFloat() { std::vector params{ IsFiniteParams(ov::PartialShape{8}, - IN_ET, element::Type_t::boolean, - std::vector{std::numeric_limits::infinity(), 0.0000f, - std::numeric_limits::max(), -0.5000f, - -std::numeric_limits::infinity(), 1.0000f, - std::numeric_limits::min(), std::nanf("")}, - std::vector{false, true, - true, true, - false, true, - true, false}) - }; + IN_ET, + element::Type_t::boolean, + std::vector{std::numeric_limits::infinity(), + 0.0000f, + std::numeric_limits::max(), + -0.5000f, + -std::numeric_limits::infinity(), + 1.0000f, + std::numeric_limits::min(), + std::nanf("")}, + std::vector{false, true, true, true, false, true, true, false})}; return params; } @@ -100,9 +103,8 @@ std::vector generateCombinedParamsForIsFinite() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P( - smoke_IsFinite_With_Hardcoded_Refs, - ReferenceIsFiniteLayerTest, - ::testing::ValuesIn(generateCombinedParamsForIsFinite()), - ReferenceIsFiniteLayerTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_IsFinite_With_Hardcoded_Refs, + ReferenceIsFiniteLayerTest, + ::testing::ValuesIn(generateCombinedParamsForIsFinite()), + ReferenceIsFiniteLayerTest::getTestCaseName); } // namespace diff --git a/src/plugins/template/tests/functional/op_reference/is_inf.cpp b/src/plugins/template/tests/functional/op_reference/is_inf.cpp index 00437481be4..83f4660c659 100644 --- a/src/plugins/template/tests/functional/op_reference/is_inf.cpp +++ b/src/plugins/template/tests/functional/op_reference/is_inf.cpp @@ -2,10 +2,12 @@ // SPDX-License-Identifier: Apache-2.0 // -#include -#include "base_reference_test.hpp" #include "openvino/op/is_inf.hpp" +#include + +#include "base_reference_test.hpp" + using namespace ov; using namespace reference_tests; @@ -60,9 +62,9 @@ public: private: static std::shared_ptr CreateFunction(const PartialShape& input_shape, - const element::Type& input_type, - const element::Type& expected_output_type, - op::v10::IsInf::Attributes attrs) { + const element::Type& input_type, + const element::Type& expected_output_type, + op::v10::IsInf::Attributes attrs) { const auto in = std::make_shared(input_type, input_shape); const auto is_inf = std::make_shared(in, attrs); return std::make_shared(NodeVector{is_inf}, ParameterVector{in}); @@ -78,20 +80,20 @@ std::vector generateParamsForIsInfDefault() { using T = typename element_type_traits::value_type; using U = typename element_type_traits::value_type; op::v10::IsInf::Attributes attrs{}; - std::vector params{ - IsInfParams("IsInfDefault", ov::PartialShape{8}, - IN_ET, element::Type_t::boolean, - std::vector{std::numeric_limits::infinity(), 0.0000f, - std::numeric_limits::max(), -0.5000f, - -std::numeric_limits::infinity(), 1.0000f, - std::numeric_limits::min(), std::nanf("")}, - std::vector{true, false, - false, false, - true, false, - false, false}, - attrs - ) - }; + std::vector params{IsInfParams("IsInfDefault", + ov::PartialShape{8}, + IN_ET, + element::Type_t::boolean, + std::vector{std::numeric_limits::infinity(), + 0.0000f, + std::numeric_limits::max(), + -0.5000f, + -std::numeric_limits::infinity(), + 1.0000f, + std::numeric_limits::min(), + std::nanf("")}, + std::vector{true, false, false, false, true, false, false, false}, + attrs)}; return params; } @@ -101,20 +103,20 @@ std::vector generateParamsForIsInfPositive() { using U = typename element_type_traits::value_type; op::v10::IsInf::Attributes attrs{}; attrs.detect_negative = false; - std::vector params{ - IsInfParams("IsInfPositiveOnly", ov::PartialShape{8}, - IN_ET, element::Type_t::boolean, - std::vector{std::numeric_limits::infinity(), 0.0000f, - std::numeric_limits::max(), -0.5000f, - -std::numeric_limits::infinity(), 1.0000f, - std::numeric_limits::min(), std::nanf("")}, - std::vector{true, false, - false, false, - false, false, - false, false}, - attrs - ) - }; + std::vector params{IsInfParams("IsInfPositiveOnly", + ov::PartialShape{8}, + IN_ET, + element::Type_t::boolean, + std::vector{std::numeric_limits::infinity(), + 0.0000f, + std::numeric_limits::max(), + -0.5000f, + -std::numeric_limits::infinity(), + 1.0000f, + std::numeric_limits::min(), + std::nanf("")}, + std::vector{true, false, false, false, false, false, false, false}, + attrs)}; return params; } @@ -124,20 +126,20 @@ std::vector generateParamsForIsInfNegative() { using U = typename element_type_traits::value_type; op::v10::IsInf::Attributes attrs{}; attrs.detect_positive = false; - std::vector params{ - IsInfParams("IsInfNegativeOnly", ov::PartialShape{8}, - IN_ET, element::Type_t::boolean, - std::vector{std::numeric_limits::infinity(), 0.0000f, - std::numeric_limits::max(), -0.5000f, - -std::numeric_limits::infinity(), 1.0000f, - std::numeric_limits::min(), std::nanf("")}, - std::vector{false, false, - false, false, - true, false, - false, false}, - attrs - ) - }; + std::vector params{IsInfParams("IsInfNegativeOnly", + ov::PartialShape{8}, + IN_ET, + element::Type_t::boolean, + std::vector{std::numeric_limits::infinity(), + 0.0000f, + std::numeric_limits::max(), + -0.5000f, + -std::numeric_limits::infinity(), + 1.0000f, + std::numeric_limits::min(), + std::nanf("")}, + std::vector{false, false, false, false, true, false, false, false}, + attrs)}; return params; } @@ -148,20 +150,20 @@ std::vector generateParamsForIsInfNone() { op::v10::IsInf::Attributes attrs{}; attrs.detect_negative = false; attrs.detect_positive = false; - std::vector params{ - IsInfParams("IsInfDetectNone", ov::PartialShape{8}, - IN_ET, element::Type_t::boolean, - std::vector{std::numeric_limits::infinity(), 0.0000f, - std::numeric_limits::max(), -0.5000f, - -std::numeric_limits::infinity(), 1.0000f, - std::numeric_limits::min(), std::nanf("")}, - std::vector{false, false, - false, false, - false, false, - false, false}, - attrs - ) - }; + std::vector params{IsInfParams("IsInfDetectNone", + ov::PartialShape{8}, + IN_ET, + element::Type_t::boolean, + std::vector{std::numeric_limits::infinity(), + 0.0000f, + std::numeric_limits::max(), + -0.5000f, + -std::numeric_limits::infinity(), + 1.0000f, + std::numeric_limits::min(), + std::nanf("")}, + std::vector{false, false, false, false, false, false, false, false}, + attrs)}; return params; } @@ -194,9 +196,8 @@ std::vector generateCombinedParamsForIsInf() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P( - smoke_IsInf_With_Hardcoded_Refs, - ReferenceIsInfLayerTest, - ::testing::ValuesIn(generateCombinedParamsForIsInf()), - ReferenceIsInfLayerTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_IsInf_With_Hardcoded_Refs, + ReferenceIsInfLayerTest, + ::testing::ValuesIn(generateCombinedParamsForIsInf()), + ReferenceIsInfLayerTest::getTestCaseName); } // namespace diff --git a/src/plugins/template/tests/functional/op_reference/is_nan.cpp b/src/plugins/template/tests/functional/op_reference/is_nan.cpp index edc00e26c11..d8163b05877 100644 --- a/src/plugins/template/tests/functional/op_reference/is_nan.cpp +++ b/src/plugins/template/tests/functional/op_reference/is_nan.cpp @@ -2,10 +2,12 @@ // SPDX-License-Identifier: Apache-2.0 // -#include -#include "base_reference_test.hpp" #include "openvino/op/is_nan.hpp" +#include + +#include "base_reference_test.hpp" + using namespace ov; using namespace reference_tests; @@ -14,10 +16,10 @@ namespace { struct IsNaNParams { template IsNaNParams(const PartialShape& shape, - const element::Type& iType, - const element::Type& oType, - const std::vector& iValues, - const std::vector& oValues) + const element::Type& iType, + const element::Type& oType, + const std::vector& iValues, + const std::vector& oValues) : pshape(shape), inType(iType), outType(oType), @@ -51,8 +53,8 @@ public: private: static std::shared_ptr CreateFunction(const PartialShape& input_shape, - const element::Type& input_type, - const element::Type& expected_output_type) { + const element::Type& input_type, + const element::Type& expected_output_type) { const auto in = std::make_shared(input_type, input_shape); const auto is_nan = std::make_shared(in); return std::make_shared(NodeVector{is_nan}, ParameterVector{in}); @@ -68,18 +70,18 @@ std::vector generateParamsForIsNaNFloat() { using T = typename element_type_traits::value_type; using U = typename element_type_traits::value_type; - std::vector params{ - IsNaNParams(ov::PartialShape{8}, - IN_ET, element::Type_t::boolean, - std::vector{std::numeric_limits::infinity(), 0.0000f, - std::numeric_limits::max(), -0.5000f, - -std::numeric_limits::infinity(), 1.0000f, - std::numeric_limits::min(), std::nanf("")}, - std::vector{false, false, - false, false, - false, false, - false, true}) - }; + std::vector params{IsNaNParams(ov::PartialShape{8}, + IN_ET, + element::Type_t::boolean, + std::vector{std::numeric_limits::infinity(), + 0.0000f, + std::numeric_limits::max(), + -0.5000f, + -std::numeric_limits::infinity(), + 1.0000f, + std::numeric_limits::min(), + std::nanf("")}, + std::vector{false, false, false, false, false, false, false, true})}; return params; } @@ -100,9 +102,8 @@ std::vector generateCombinedParamsForIsNaN() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P( - smoke_IsNaN_With_Hardcoded_Refs, - ReferenceIsNaNLayerTest, - ::testing::ValuesIn(generateCombinedParamsForIsNaN()), - ReferenceIsNaNLayerTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_IsNaN_With_Hardcoded_Refs, + ReferenceIsNaNLayerTest, + ::testing::ValuesIn(generateCombinedParamsForIsNaN()), + ReferenceIsNaNLayerTest::getTestCaseName); } // namespace diff --git a/src/plugins/template/tests/functional/op_reference/less.cpp b/src/plugins/template/tests/functional/op_reference/less.cpp index 0c540020de8..0ec6fbe0dd2 100644 --- a/src/plugins/template/tests/functional/op_reference/less.cpp +++ b/src/plugins/template/tests/functional/op_reference/less.cpp @@ -2,9 +2,10 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/less.hpp" + #include -#include "openvino/op/less.hpp" #include "comparison.hpp" using namespace ov; @@ -16,43 +17,43 @@ namespace { template std::vector generateComparisonParams(const element::Type& type) { using T = typename element_type_traits::value_type; - std::vector compParams { + std::vector compParams{ // 1D // 2D // 3D // 4D - Builder {} + Builder{} .compType(ComparisonTypes::LESS) - .input1({{2, 2}, type, std::vector {0, 12, 23, 0}}) - .input2({{2, 2}, type, std::vector {0, 12, 23, 0}}) - .expected({{2, 2}, element::boolean, std::vector {0, 0, 0, 0}}), - Builder {} + .input1({{2, 2}, type, std::vector{0, 12, 23, 0}}) + .input2({{2, 2}, type, std::vector{0, 12, 23, 0}}) + .expected({{2, 2}, element::boolean, std::vector{0, 0, 0, 0}}), + Builder{} .compType(ComparisonTypes::LESS) - .input1({{2, 3}, type, std::vector {0, 6, 45, 1, 21, 21}}) - .input2({{2, 3}, type, std::vector {1, 18, 23, 1, 19, 21}}) - .expected({{2, 3}, element::boolean, std::vector {1, 1, 0, 0, 0, 0}}), - Builder {} + .input1({{2, 3}, type, std::vector{0, 6, 45, 1, 21, 21}}) + .input2({{2, 3}, type, std::vector{1, 18, 23, 1, 19, 21}}) + .expected({{2, 3}, element::boolean, std::vector{1, 1, 0, 0, 0, 0}}), + Builder{} .compType(ComparisonTypes::LESS) - .input1({{1}, type, std::vector {53}}) - .input2({{1}, type, std::vector {53}}) - .expected({{1}, element::boolean, std::vector {0}}), - Builder {} + .input1({{1}, type, std::vector{53}}) + .input2({{1}, type, std::vector{53}}) + .expected({{1}, element::boolean, std::vector{0}}), + Builder{} .compType(ComparisonTypes::LESS) - .input1({{2, 4}, type, std::vector {0, 12, 23, 0, 1, 5, 11, 8}}) - .input2({{2, 4}, type, std::vector {0, 12, 23, 0, 10, 5, 11, 8}}) - .expected({{2, 4}, element::boolean, std::vector {0, 0, 0, 0, 1, 0, 0, 0}}), - Builder {} + .input1({{2, 4}, type, std::vector{0, 12, 23, 0, 1, 5, 11, 8}}) + .input2({{2, 4}, type, std::vector{0, 12, 23, 0, 10, 5, 11, 8}}) + .expected({{2, 4}, element::boolean, std::vector{0, 0, 0, 0, 1, 0, 0, 0}}), + Builder{} .compType(ComparisonTypes::LESS) - .input1({{3, 1, 2}, type, std::vector {2, 1, 4, 1, 3, 1}}) - .input2({{1, 2, 1}, type, std::vector {1, 1}}) - .expected({{3, 2, 2}, element::boolean, std::vector {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}), - Builder {} + .input1({{3, 1, 2}, type, std::vector{2, 1, 4, 1, 3, 1}}) + .input2({{1, 2, 1}, type, std::vector{1, 1}}) + .expected({{3, 2, 2}, element::boolean, std::vector{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}), + Builder{} .compType(ComparisonTypes::LESS) - .input1({{2, 1, 2, 1}, type, std::vector {2, 1, 4, 1}}) - .input2({{1, 2, 1}, type, std::vector {1, 1}}) - .expected({{2, 1, 2, 1}, element::boolean, std::vector {0, 0, 0, 0}})}; + .input1({{2, 1, 2, 1}, type, std::vector{2, 1, 4, 1}}) + .input2({{1, 2, 1}, type, std::vector{1, 1}}) + .expected({{2, 1, 2, 1}, element::boolean, std::vector{0, 0, 0, 0}})}; return compParams; } std::vector generateComparisonCombinedParams() { - const std::vector> compTypeParams { + const std::vector> compTypeParams{ generateComparisonParams(element::f32), generateComparisonParams(element::f16), generateComparisonParams(element::i32), @@ -66,8 +67,10 @@ std::vector generateComparisonCombinedParams() { return combinedParams; } -} // namespace -INSTANTIATE_TEST_SUITE_P(smoke_Comparison_With_Hardcoded_Refs, ReferenceComparisonLayerTest, ::testing::ValuesIn(generateComparisonCombinedParams()), +} // namespace +INSTANTIATE_TEST_SUITE_P(smoke_Comparison_With_Hardcoded_Refs, + ReferenceComparisonLayerTest, + ::testing::ValuesIn(generateComparisonCombinedParams()), ReferenceComparisonLayerTest::getTestCaseName); -} // namespace ComparisonOpsRefTestDefinitions -} // namespace reference_tests +} // namespace ComparisonOpsRefTestDefinitions +} // namespace reference_tests diff --git a/src/plugins/template/tests/functional/op_reference/less_eq.cpp b/src/plugins/template/tests/functional/op_reference/less_eq.cpp index 4e6122dd8bb..183068ac519 100644 --- a/src/plugins/template/tests/functional/op_reference/less_eq.cpp +++ b/src/plugins/template/tests/functional/op_reference/less_eq.cpp @@ -2,9 +2,10 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/less_eq.hpp" + #include -#include "openvino/op/less_eq.hpp" #include "comparison.hpp" using namespace ov; @@ -16,43 +17,43 @@ namespace { template std::vector generateComparisonParams(const element::Type& type) { using T = typename element_type_traits::value_type; - std::vector compParams { + std::vector compParams{ // 1D // 2D // 3D // 4D - Builder {} + Builder{} .compType(ComparisonTypes::LESS_EQUAL) - .input1({{2, 2}, type, std::vector {0, 12, 23, 0}}) - .input2({{2, 2}, type, std::vector {0, 12, 23, 0}}) - .expected({{2, 2}, element::boolean, std::vector {1, 1, 1, 1}}), - Builder {} + .input1({{2, 2}, type, std::vector{0, 12, 23, 0}}) + .input2({{2, 2}, type, std::vector{0, 12, 23, 0}}) + .expected({{2, 2}, element::boolean, std::vector{1, 1, 1, 1}}), + Builder{} .compType(ComparisonTypes::LESS_EQUAL) - .input1({{2, 3}, type, std::vector {0, 6, 45, 1, 21, 21}}) - .input2({{2, 3}, type, std::vector {1, 18, 23, 1, 19, 21}}) - .expected({{2, 3}, element::boolean, std::vector {1, 1, 0, 1, 0, 1}}), - Builder {} + .input1({{2, 3}, type, std::vector{0, 6, 45, 1, 21, 21}}) + .input2({{2, 3}, type, std::vector{1, 18, 23, 1, 19, 21}}) + .expected({{2, 3}, element::boolean, std::vector{1, 1, 0, 1, 0, 1}}), + Builder{} .compType(ComparisonTypes::LESS_EQUAL) - .input1({{1}, type, std::vector {53}}) - .input2({{1}, type, std::vector {53}}) - .expected({{1}, element::boolean, std::vector {1}}), - Builder {} + .input1({{1}, type, std::vector{53}}) + .input2({{1}, type, std::vector{53}}) + .expected({{1}, element::boolean, std::vector{1}}), + Builder{} .compType(ComparisonTypes::LESS_EQUAL) - .input1({{2, 4}, type, std::vector {0, 12, 23, 0, 1, 5, 11, 8}}) - .input2({{2, 4}, type, std::vector {0, 12, 23, 0, 10, 5, 11, 8}}) - .expected({{2, 4}, element::boolean, std::vector {1, 1, 1, 1, 1, 1, 1, 1}}), - Builder {} + .input1({{2, 4}, type, std::vector{0, 12, 23, 0, 1, 5, 11, 8}}) + .input2({{2, 4}, type, std::vector{0, 12, 23, 0, 10, 5, 11, 8}}) + .expected({{2, 4}, element::boolean, std::vector{1, 1, 1, 1, 1, 1, 1, 1}}), + Builder{} .compType(ComparisonTypes::LESS_EQUAL) - .input1({{3, 1, 2}, type, std::vector {2, 1, 4, 1, 3, 1}}) - .input2({{1, 2, 1}, type, std::vector {1, 1}}) - .expected({{3, 2, 2}, element::boolean, std::vector {0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1}}), - Builder {} + .input1({{3, 1, 2}, type, std::vector{2, 1, 4, 1, 3, 1}}) + .input2({{1, 2, 1}, type, std::vector{1, 1}}) + .expected({{3, 2, 2}, element::boolean, std::vector{0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1}}), + Builder{} .compType(ComparisonTypes::LESS_EQUAL) - .input1({{2, 1, 2, 1}, type, std::vector {2, 1, 4, 1}}) - .input2({{1, 2, 1}, type, std::vector {1, 1}}) - .expected({{2, 1, 2, 1}, element::boolean, std::vector {0, 1, 0, 1}})}; + .input1({{2, 1, 2, 1}, type, std::vector{2, 1, 4, 1}}) + .input2({{1, 2, 1}, type, std::vector{1, 1}}) + .expected({{2, 1, 2, 1}, element::boolean, std::vector{0, 1, 0, 1}})}; return compParams; } std::vector generateComparisonCombinedParams() { - const std::vector> compTypeParams { + const std::vector> compTypeParams{ generateComparisonParams(element::f32), generateComparisonParams(element::f16), generateComparisonParams(element::i32), @@ -66,8 +67,10 @@ std::vector generateComparisonCombinedParams() { return combinedParams; } -} // namespace -INSTANTIATE_TEST_SUITE_P(smoke_Comparison_With_Hardcoded_Refs, ReferenceComparisonLayerTest, ::testing::ValuesIn(generateComparisonCombinedParams()), +} // namespace +INSTANTIATE_TEST_SUITE_P(smoke_Comparison_With_Hardcoded_Refs, + ReferenceComparisonLayerTest, + ::testing::ValuesIn(generateComparisonCombinedParams()), ReferenceComparisonLayerTest::getTestCaseName); -} // namespace ComparisonOpsRefTestDefinitions -} // namespace reference_tests +} // namespace ComparisonOpsRefTestDefinitions +} // namespace reference_tests diff --git a/src/plugins/template/tests/functional/op_reference/log.cpp b/src/plugins/template/tests/functional/op_reference/log.cpp index 1c4d8b09892..792db889298 100644 --- a/src/plugins/template/tests/functional/op_reference/log.cpp +++ b/src/plugins/template/tests/functional/op_reference/log.cpp @@ -2,10 +2,12 @@ // SPDX-License-Identifier: Apache-2.0 // -#include -#include "base_reference_test.hpp" #include "openvino/op/log.hpp" +#include + +#include "base_reference_test.hpp" + using namespace ov; using namespace reference_tests; @@ -14,9 +16,9 @@ namespace { struct LogParams { template LogParams(const PartialShape& shape, - const element::Type& iType, - const std::vector& iValues, - const std::vector& oValues) + const element::Type& iType, + const std::vector& iValues, + const std::vector& oValues) : pshape(shape), inType(iType), outType(iType), @@ -50,8 +52,8 @@ public: private: static std::shared_ptr CreateFunction(const PartialShape& input_shape, - const element::Type& input_type, - const element::Type& expected_output_type) { + const element::Type& input_type, + const element::Type& expected_output_type) { const auto in = std::make_shared(input_type, input_shape); const auto log = std::make_shared(in); return std::make_shared(NodeVector{log}, ParameterVector{in}); @@ -66,38 +68,36 @@ template std::vector generateParamsForLog() { using T = typename element_type_traits::value_type; - std::vector logParams{ - LogParams(ov::PartialShape{8}, - IN_ET, - std::vector{0.125f, 0.25f, 0.5f, 1.f, 2.f, 4.f, 8.f, 16.f}, - std::vector{-2.07944154f, -1.38629436f, -0.69314718f, 0.00000000f, 0.69314718f, 1.38629436f, 2.07944154f, 2.77258872f}) - }; + std::vector logParams{LogParams(ov::PartialShape{8}, + IN_ET, + std::vector{0.125f, 0.25f, 0.5f, 1.f, 2.f, 4.f, 8.f, 16.f}, + std::vector{-2.07944154f, + -1.38629436f, + -0.69314718f, + 0.00000000f, + 0.69314718f, + 1.38629436f, + 2.07944154f, + 2.77258872f})}; return logParams; } - template std::vector generateParamsForLogInt() { using T = typename element_type_traits::value_type; std::vector logParams{ - LogParams(ov::PartialShape{4}, - IN_ET, - std::vector{10, 100, 1000, 10000}, - std::vector{2, 4, 6, 9}) - }; + LogParams(ov::PartialShape{4}, IN_ET, std::vector{10, 100, 1000, 10000}, std::vector{2, 4, 6, 9})}; return logParams; } std::vector generateCombinedParamsForLog() { - const std::vector> allTypeParams{ - generateParamsForLog(), - generateParamsForLog(), - generateParamsForLogInt(), - generateParamsForLogInt(), - generateParamsForLogInt(), - generateParamsForLogInt() - }; + const std::vector> allTypeParams{generateParamsForLog(), + generateParamsForLog(), + generateParamsForLogInt(), + generateParamsForLogInt(), + generateParamsForLogInt(), + generateParamsForLogInt()}; std::vector combinedParams; @@ -108,10 +108,9 @@ std::vector generateCombinedParamsForLog() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P( - smoke_Log_With_Hardcoded_Refs, - ReferenceLogLayerTest, - ::testing::ValuesIn(generateCombinedParamsForLog()), - ReferenceLogLayerTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_Log_With_Hardcoded_Refs, + ReferenceLogLayerTest, + ::testing::ValuesIn(generateCombinedParamsForLog()), + ReferenceLogLayerTest::getTestCaseName); } // namespace diff --git a/src/plugins/template/tests/functional/op_reference/log_softmax.cpp b/src/plugins/template/tests/functional/op_reference/log_softmax.cpp index d449e0bcfaf..1d834f6ff71 100644 --- a/src/plugins/template/tests/functional/op_reference/log_softmax.cpp +++ b/src/plugins/template/tests/functional/op_reference/log_softmax.cpp @@ -2,9 +2,10 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/log_softmax.hpp" + #include -#include "openvino/op/log_softmax.hpp" #include "base_reference_test.hpp" using namespace reference_tests; @@ -14,8 +15,11 @@ using namespace InferenceEngine; namespace { struct LogSoftmaxParams { template - LogSoftmaxParams(const ov::PartialShape& shape, const ov::element::Type& iType, const std::vector& iValues, const std::vector& oValues, - const int64_t axis) + LogSoftmaxParams(const ov::PartialShape& shape, + const ov::element::Type& iType, + const std::vector& iValues, + const std::vector& oValues, + const int64_t axis) : axis(axis), pshape(shape), inType(iType), @@ -51,11 +55,13 @@ public: } private: - static std::shared_ptr CreateFunction(const PartialShape& input_shape, const element::Type& input_type, - const element::Type& expected_output_type, const int64_t axis) { + static std::shared_ptr CreateFunction(const PartialShape& input_shape, + const element::Type& input_type, + const element::Type& expected_output_type, + const int64_t axis) { const auto in = std::make_shared(input_type, input_shape); const auto LogSoftmax = std::make_shared(in, axis); - return std::make_shared(NodeVector {LogSoftmax}, ParameterVector {in}); + return std::make_shared(NodeVector{LogSoftmax}, ParameterVector{in}); } }; @@ -67,173 +73,171 @@ template std::vector generateLogSoftmaxFloatParams() { using T = typename element_type_traits::value_type; - std::vector logSoftmaxParams { - LogSoftmaxParams(ov::PartialShape {1}, - IN_ET, - std::vector{1}, - std::vector{0}, - 0), - LogSoftmaxParams(ov::PartialShape {2, 4}, - IN_ET, - std::vector{0, 1, 2, 3, 10000, 10001, 10002, 10003}, - std::vector{-10000., -10000., -10000., -10000., 0., 0., 0., 0.}, - 0), - LogSoftmaxParams(ov::PartialShape {2, 4}, - IN_ET, - std::vector{0, 1, 2, 3, 10000, 10001, 10002, 10003}, - std::vector{-3.4401896, -2.4401896, -1.4401897, -0.4401897, -3.4401896, -2.4401896, -1.4401897, -0.4401897}, - 1), - LogSoftmaxParams(ov::PartialShape {2, 4}, - IN_ET, - std::vector{0, 1, 2, 3, 10000, 10001, 10002, 10003}, - std::vector{-3.4401896, -2.4401896, -1.4401897, -0.4401897, -3.4401896, -2.4401896, -1.4401897, -0.4401897}, - -1), - LogSoftmaxParams(ov::PartialShape {2, 4}, - IN_ET, - std::vector{0, 1, 2, 3, 10000, 10001, 10002, 10003}, - std::vector{-10000., -10000., -10000., -10000., 0., 0., 0., 0.}, - -2), - LogSoftmaxParams(ov::PartialShape {3, 2, 3}, - IN_ET, - std::vector{-9, -8, -7, -6, -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8}, - std::vector{-12.0024818, - -12.0024818, - -12.0024818, - -12.0024818, - -12.0024818, - -12.0024818, - -6.00248181, - -6.00248181, - -6.00248181, - -6.00248181, - -6.00248181, - -6.00248181, - -2.48181414e-03, - -2.48181414e-03, - -2.48181414e-03, - -2.48181414e-03, - -2.48181414e-03, - -2.48181414e-03}, - 0), - LogSoftmaxParams(ov::PartialShape {3, 2, 3}, - IN_ET, - std::vector{-9, -8, -7, -6, -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8}, - std::vector{-3.04858735, - -3.04858735, - -3.04858735, - -0.04858735, - -0.04858735, - -0.04858735, - -3.04858735, - -3.04858735, - -3.04858735, - -0.04858735, - -0.04858735, - -0.04858735, - -3.04858735, - -3.04858735, - -3.04858735, - -0.04858735, - -0.04858735, - -0.04858735}, - 1), - LogSoftmaxParams(ov::PartialShape {3, 2, 3}, - IN_ET, - std::vector{-9, -8, -7, -6, -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8}, - std::vector{-2.40760596, - -1.40760596, - -0.40760596, - -2.40760596, - -1.40760596, - -0.40760596, - -2.40760596, - -1.40760596, - -0.40760596, - -2.40760596, - -1.40760596, - -0.40760596, - -2.40760596, - -1.40760596, - -0.40760596, - -2.40760596, - -1.40760596, - -0.40760596}, - 2), - LogSoftmaxParams(ov::PartialShape {3, 2, 3}, - IN_ET, - std::vector{-9, -8, -7, -6, -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8}, - std::vector{-2.40760596, - -1.40760596, - -0.40760596, - -2.40760596, - -1.40760596, - -0.40760596, - -2.40760596, - -1.40760596, - -0.40760596, - -2.40760596, - -1.40760596, - -0.40760596, - -2.40760596, - -1.40760596, - -0.40760596, - -2.40760596, - -1.40760596, - -0.40760596}, - -1), - LogSoftmaxParams(ov::PartialShape {3, 2, 3}, - IN_ET, - std::vector{-9, -8, -7, -6, -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8}, - std::vector{-3.04858735, - -3.04858735, - -3.04858735, - -0.04858735, - -0.04858735, - -0.04858735, - -3.04858735, - -3.04858735, - -3.04858735, - -0.04858735, - -0.04858735, - -0.04858735, - -3.04858735, - -3.04858735, - -3.04858735, - -0.04858735, - -0.04858735, - -0.04858735}, - -2), - LogSoftmaxParams(ov::PartialShape {3, 2, 3}, - IN_ET, - std::vector{-9, -8, -7, -6, -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8}, - std::vector{-12.0024818, - -12.0024818, - -12.0024818, - -12.0024818, - -12.0024818, - -12.0024818, - -6.00248181, - -6.00248181, - -6.00248181, - -6.00248181, - -6.00248181, - -6.00248181, - -2.48181414e-03, - -2.48181414e-03, - -2.48181414e-03, - -2.48181414e-03, - -2.48181414e-03, - -2.48181414e-03}, - -3) - }; + std::vector logSoftmaxParams{ + LogSoftmaxParams(ov::PartialShape{1}, IN_ET, std::vector{1}, std::vector{0}, 0), + LogSoftmaxParams(ov::PartialShape{2, 4}, + IN_ET, + std::vector{0, 1, 2, 3, 10000, 10001, 10002, 10003}, + std::vector{-10000., -10000., -10000., -10000., 0., 0., 0., 0.}, + 0), + LogSoftmaxParams( + ov::PartialShape{2, 4}, + IN_ET, + std::vector{0, 1, 2, 3, 10000, 10001, 10002, 10003}, + std::vector< + T>{-3.4401896, -2.4401896, -1.4401897, -0.4401897, -3.4401896, -2.4401896, -1.4401897, -0.4401897}, + 1), + LogSoftmaxParams( + ov::PartialShape{2, 4}, + IN_ET, + std::vector{0, 1, 2, 3, 10000, 10001, 10002, 10003}, + std::vector< + T>{-3.4401896, -2.4401896, -1.4401897, -0.4401897, -3.4401896, -2.4401896, -1.4401897, -0.4401897}, + -1), + LogSoftmaxParams(ov::PartialShape{2, 4}, + IN_ET, + std::vector{0, 1, 2, 3, 10000, 10001, 10002, 10003}, + std::vector{-10000., -10000., -10000., -10000., 0., 0., 0., 0.}, + -2), + LogSoftmaxParams(ov::PartialShape{3, 2, 3}, + IN_ET, + std::vector{-9, -8, -7, -6, -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8}, + std::vector{-12.0024818, + -12.0024818, + -12.0024818, + -12.0024818, + -12.0024818, + -12.0024818, + -6.00248181, + -6.00248181, + -6.00248181, + -6.00248181, + -6.00248181, + -6.00248181, + -2.48181414e-03, + -2.48181414e-03, + -2.48181414e-03, + -2.48181414e-03, + -2.48181414e-03, + -2.48181414e-03}, + 0), + LogSoftmaxParams(ov::PartialShape{3, 2, 3}, + IN_ET, + std::vector{-9, -8, -7, -6, -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8}, + std::vector{-3.04858735, + -3.04858735, + -3.04858735, + -0.04858735, + -0.04858735, + -0.04858735, + -3.04858735, + -3.04858735, + -3.04858735, + -0.04858735, + -0.04858735, + -0.04858735, + -3.04858735, + -3.04858735, + -3.04858735, + -0.04858735, + -0.04858735, + -0.04858735}, + 1), + LogSoftmaxParams(ov::PartialShape{3, 2, 3}, + IN_ET, + std::vector{-9, -8, -7, -6, -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8}, + std::vector{-2.40760596, + -1.40760596, + -0.40760596, + -2.40760596, + -1.40760596, + -0.40760596, + -2.40760596, + -1.40760596, + -0.40760596, + -2.40760596, + -1.40760596, + -0.40760596, + -2.40760596, + -1.40760596, + -0.40760596, + -2.40760596, + -1.40760596, + -0.40760596}, + 2), + LogSoftmaxParams(ov::PartialShape{3, 2, 3}, + IN_ET, + std::vector{-9, -8, -7, -6, -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8}, + std::vector{-2.40760596, + -1.40760596, + -0.40760596, + -2.40760596, + -1.40760596, + -0.40760596, + -2.40760596, + -1.40760596, + -0.40760596, + -2.40760596, + -1.40760596, + -0.40760596, + -2.40760596, + -1.40760596, + -0.40760596, + -2.40760596, + -1.40760596, + -0.40760596}, + -1), + LogSoftmaxParams(ov::PartialShape{3, 2, 3}, + IN_ET, + std::vector{-9, -8, -7, -6, -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8}, + std::vector{-3.04858735, + -3.04858735, + -3.04858735, + -0.04858735, + -0.04858735, + -0.04858735, + -3.04858735, + -3.04858735, + -3.04858735, + -0.04858735, + -0.04858735, + -0.04858735, + -3.04858735, + -3.04858735, + -3.04858735, + -0.04858735, + -0.04858735, + -0.04858735}, + -2), + LogSoftmaxParams(ov::PartialShape{3, 2, 3}, + IN_ET, + std::vector{-9, -8, -7, -6, -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8}, + std::vector{-12.0024818, + -12.0024818, + -12.0024818, + -12.0024818, + -12.0024818, + -12.0024818, + -6.00248181, + -6.00248181, + -6.00248181, + -6.00248181, + -6.00248181, + -6.00248181, + -2.48181414e-03, + -2.48181414e-03, + -2.48181414e-03, + -2.48181414e-03, + -2.48181414e-03, + -2.48181414e-03}, + -3)}; return logSoftmaxParams; } std::vector generateLogSoftmaxCombinedParams() { - const std::vector> logSoftmaxTypeParams { + const std::vector> logSoftmaxTypeParams{ generateLogSoftmaxFloatParams(), - generateLogSoftmaxFloatParams() - }; + generateLogSoftmaxFloatParams()}; std::vector combinedParams; for (const auto& params : logSoftmaxTypeParams) { @@ -242,7 +246,9 @@ std::vector generateLogSoftmaxCombinedParams() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_LogSoftmax_With_Hardcoded_Refs, ReferenceLogSoftmaxLayerTest, - testing::ValuesIn(generateLogSoftmaxCombinedParams()), ReferenceLogSoftmaxLayerTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_LogSoftmax_With_Hardcoded_Refs, + ReferenceLogSoftmaxLayerTest, + testing::ValuesIn(generateLogSoftmaxCombinedParams()), + ReferenceLogSoftmaxLayerTest::getTestCaseName); -} // namespace +} // namespace diff --git a/src/plugins/template/tests/functional/op_reference/logical.hpp b/src/plugins/template/tests/functional/op_reference/logical.hpp index f5bd6c0e9a3..894b262bcb6 100644 --- a/src/plugins/template/tests/functional/op_reference/logical.hpp +++ b/src/plugins/template/tests/functional/op_reference/logical.hpp @@ -5,7 +5,6 @@ #include #include "base_reference_test.hpp" - #include "openvino/op/logical_and.hpp" #include "openvino/op/logical_not.hpp" #include "openvino/op/logical_or.hpp" @@ -16,12 +15,7 @@ using namespace ov; namespace reference_tests { namespace LogicalOpsRefTestDefinitions { -enum LogicalTypes { - LOGICAL_AND, - LOGICAL_OR, - LOGICAL_XOR, - LOGICAL_NOT -}; +enum LogicalTypes { LOGICAL_AND, LOGICAL_OR, LOGICAL_XOR, LOGICAL_NOT }; struct RefLogicalParams { LogicalTypes opType; @@ -49,7 +43,7 @@ public: const auto& param = obj.param; std::ostringstream result; result << "LogicalType=" << param.opType << "_"; - for (size_t i =0; i< param.inputs.size(); i++) { + for (size_t i = 0; i < param.inputs.size(); i++) { const auto input = param.inputs[i]; result << "inpt_shape" << i << "=" << input.shape << "_"; result << "inpt_type" << i << "=" << input.type << "_"; @@ -59,7 +53,8 @@ public: } private: - static std::shared_ptr CreateFunction(LogicalTypes op_type, const std::vector& inputs) { + static std::shared_ptr CreateFunction(LogicalTypes op_type, + const std::vector& inputs) { ov::ParameterVector params_vec; for (auto& input : inputs) { params_vec.push_back(std::make_shared(input.type, input.shape)); @@ -86,8 +81,8 @@ private: default: { throw std::runtime_error("Incorrect type of Logical operation"); } - } - return std::make_shared(ov::NodeVector {logical_op}, ov::ParameterVector {params_vec}); + } + return std::make_shared(ov::NodeVector{logical_op}, ov::ParameterVector{params_vec}); } }; } // namespace LogicalOpsRefTestDefinitions diff --git a/src/plugins/template/tests/functional/op_reference/logical_and.cpp b/src/plugins/template/tests/functional/op_reference/logical_and.cpp index 254b3e0c8d8..a4ec39b1249 100644 --- a/src/plugins/template/tests/functional/op_reference/logical_and.cpp +++ b/src/plugins/template/tests/functional/op_reference/logical_and.cpp @@ -2,9 +2,10 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/logical_and.hpp" + #include -#include "openvino/op/logical_and.hpp" #include "logical.hpp" using namespace ov; @@ -14,26 +15,34 @@ namespace LogicalOpsRefTestDefinitions { namespace { std::vector generateLogicalParams() { - std::vector logicalParams { - Builder {} + std::vector logicalParams{ + Builder{} .opType(LogicalTypes::LOGICAL_AND) - .inputs({{{2, 2}, element::boolean, std::vector {true, false, true, false}}, - {{2, 2}, element::boolean, std::vector {false, true, true, false}}}) - .expected({{2, 2}, element::boolean, std::vector {false, false, true, false}}), - Builder {} + .inputs({{{2, 2}, element::boolean, std::vector{true, false, true, false}}, + {{2, 2}, element::boolean, std::vector{false, true, true, false}}}) + .expected({{2, 2}, element::boolean, std::vector{false, false, true, false}}), + Builder{} .opType(LogicalTypes::LOGICAL_AND) - .inputs({{{2, 1, 2, 1}, element::boolean, std::vector {true, false, true, false}}, - {{1, 1, 2, 1}, element::boolean, std::vector {true, false}}}) - .expected({{2, 1, 2, 1}, element::boolean, std::vector {true, false, true, false}}), - Builder {} + .inputs({{{2, 1, 2, 1}, element::boolean, std::vector{true, false, true, false}}, + {{1, 1, 2, 1}, element::boolean, std::vector{true, false}}}) + .expected({{2, 1, 2, 1}, element::boolean, std::vector{true, false, true, false}}), + Builder{} .opType(LogicalTypes::LOGICAL_AND) - .inputs({{{3, 4}, element::boolean, std::vector {true, true, true, true, true, false, true, false, false, true, true, true}}, - {{3, 4}, element::boolean, std::vector {true, true, true, true, true, false, true, false, false, true, true, false}}}) - .expected({{3, 4}, element::boolean, std::vector {true, true, true, true, true, false, true, false, false, true, true, false}})}; + .inputs({{{3, 4}, + element::boolean, + std::vector{true, true, true, true, true, false, true, false, false, true, true, true}}, + {{3, 4}, + element::boolean, + std::vector{true, true, true, true, true, false, true, false, false, true, true, false}}}) + .expected({{3, 4}, + element::boolean, + std::vector{true, true, true, true, true, false, true, false, false, true, true, false}})}; return logicalParams; } -INSTANTIATE_TEST_SUITE_P(smoke_LogicalAnd_With_Hardcoded_Refs, ReferenceLogicalLayerTest, ::testing::ValuesIn(generateLogicalParams()), +INSTANTIATE_TEST_SUITE_P(smoke_LogicalAnd_With_Hardcoded_Refs, + ReferenceLogicalLayerTest, + ::testing::ValuesIn(generateLogicalParams()), ReferenceLogicalLayerTest::getTestCaseName); } // namespace diff --git a/src/plugins/template/tests/functional/op_reference/logical_not.cpp b/src/plugins/template/tests/functional/op_reference/logical_not.cpp index fb63207d99a..4a596416d85 100644 --- a/src/plugins/template/tests/functional/op_reference/logical_not.cpp +++ b/src/plugins/template/tests/functional/op_reference/logical_not.cpp @@ -2,9 +2,10 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/logical_not.hpp" + #include -#include "openvino/op/logical_not.hpp" #include "logical.hpp" using namespace ov; @@ -14,15 +15,17 @@ namespace LogicalOpsRefTestDefinitions { namespace { std::vector generateLogicalParams() { - std::vector logicalParams { - Builder {} + std::vector logicalParams{ + Builder{} .opType(LogicalTypes::LOGICAL_NOT) - .inputs({{{2, 2}, element::boolean, std::vector {true, false, true, false}}}) - .expected({{2, 2}, element::boolean, std::vector {false, true, false, true}})}; + .inputs({{{2, 2}, element::boolean, std::vector{true, false, true, false}}}) + .expected({{2, 2}, element::boolean, std::vector{false, true, false, true}})}; return logicalParams; } -INSTANTIATE_TEST_SUITE_P(smoke_LogicalNot_With_Hardcoded_Refs, ReferenceLogicalLayerTest, ::testing::ValuesIn(generateLogicalParams()), +INSTANTIATE_TEST_SUITE_P(smoke_LogicalNot_With_Hardcoded_Refs, + ReferenceLogicalLayerTest, + ::testing::ValuesIn(generateLogicalParams()), ReferenceLogicalLayerTest::getTestCaseName); } // namespace diff --git a/src/plugins/template/tests/functional/op_reference/logical_or.cpp b/src/plugins/template/tests/functional/op_reference/logical_or.cpp index 34249cfea69..db0021acc1f 100644 --- a/src/plugins/template/tests/functional/op_reference/logical_or.cpp +++ b/src/plugins/template/tests/functional/op_reference/logical_or.cpp @@ -2,9 +2,10 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/logical_or.hpp" + #include -#include "openvino/op/logical_or.hpp" #include "logical.hpp" using namespace ov; @@ -14,26 +15,34 @@ namespace LogicalOpsRefTestDefinitions { namespace { std::vector generateLogicalParams() { - std::vector logicalParams { - Builder {} + std::vector logicalParams{ + Builder{} .opType(LogicalTypes::LOGICAL_OR) - .inputs({{{2, 2}, element::boolean, std::vector {true, false, true, false}}, - {{2, 2}, element::boolean, std::vector {false, true, true, false}}}) - .expected({{2, 2}, element::boolean, std::vector {true, true, true, false}}), - Builder {} + .inputs({{{2, 2}, element::boolean, std::vector{true, false, true, false}}, + {{2, 2}, element::boolean, std::vector{false, true, true, false}}}) + .expected({{2, 2}, element::boolean, std::vector{true, true, true, false}}), + Builder{} .opType(LogicalTypes::LOGICAL_OR) - .inputs({{{2, 1, 2, 1}, element::boolean, std::vector {true, false, true, false}}, - {{1, 1, 2, 1}, element::boolean, std::vector {true, false}}}) - .expected({{2, 1, 2, 1}, element::boolean, std::vector {true, false, true, false}}), - Builder {} + .inputs({{{2, 1, 2, 1}, element::boolean, std::vector{true, false, true, false}}, + {{1, 1, 2, 1}, element::boolean, std::vector{true, false}}}) + .expected({{2, 1, 2, 1}, element::boolean, std::vector{true, false, true, false}}), + Builder{} .opType(LogicalTypes::LOGICAL_OR) - .inputs({{{3, 4}, element::boolean, std::vector {true, true, true, true, true, false, true, false, false, true, true, true}}, - {{3, 4}, element::boolean, std::vector {true, true, true, true, true, true, true, false, false, true, true, false}}}) - .expected({{3, 4}, element::boolean, std::vector {true, true, true, true, true, true, true, false, false, true, true, true}})}; + .inputs({{{3, 4}, + element::boolean, + std::vector{true, true, true, true, true, false, true, false, false, true, true, true}}, + {{3, 4}, + element::boolean, + std::vector{true, true, true, true, true, true, true, false, false, true, true, false}}}) + .expected({{3, 4}, + element::boolean, + std::vector{true, true, true, true, true, true, true, false, false, true, true, true}})}; return logicalParams; } -INSTANTIATE_TEST_SUITE_P(smoke_LogicalOr_With_Hardcoded_Refs, ReferenceLogicalLayerTest, ::testing::ValuesIn(generateLogicalParams()), +INSTANTIATE_TEST_SUITE_P(smoke_LogicalOr_With_Hardcoded_Refs, + ReferenceLogicalLayerTest, + ::testing::ValuesIn(generateLogicalParams()), ReferenceLogicalLayerTest::getTestCaseName); } // namespace diff --git a/src/plugins/template/tests/functional/op_reference/logical_xor.cpp b/src/plugins/template/tests/functional/op_reference/logical_xor.cpp index 30be39f2e77..20d07a28a48 100644 --- a/src/plugins/template/tests/functional/op_reference/logical_xor.cpp +++ b/src/plugins/template/tests/functional/op_reference/logical_xor.cpp @@ -2,9 +2,10 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/logical_xor.hpp" + #include -#include "openvino/op/logical_xor.hpp" #include "logical.hpp" using namespace ov; @@ -14,26 +15,35 @@ namespace LogicalOpsRefTestDefinitions { namespace { std::vector generateLogicalParams() { - std::vector logicalParams { - Builder {} + std::vector logicalParams{ + Builder{} .opType(LogicalTypes::LOGICAL_XOR) - .inputs({{{2, 2}, element::boolean, std::vector {true, false, true, false}}, - {{2, 2}, element::boolean, std::vector {false, true, true, false}}}) - .expected({{2, 2}, element::boolean, std::vector {true, true, false, false}}), - Builder {} + .inputs({{{2, 2}, element::boolean, std::vector{true, false, true, false}}, + {{2, 2}, element::boolean, std::vector{false, true, true, false}}}) + .expected({{2, 2}, element::boolean, std::vector{true, true, false, false}}), + Builder{} .opType(LogicalTypes::LOGICAL_XOR) - .inputs({{{2, 1, 2, 1}, element::boolean, std::vector {true, false, true, false}}, - {{1, 1, 2, 1}, element::boolean, std::vector {true, false}}}) - .expected({{2, 1, 2, 1}, element::boolean, std::vector {false, false, false, false}}), - Builder {} + .inputs({{{2, 1, 2, 1}, element::boolean, std::vector{true, false, true, false}}, + {{1, 1, 2, 1}, element::boolean, std::vector{true, false}}}) + .expected({{2, 1, 2, 1}, element::boolean, std::vector{false, false, false, false}}), + Builder{} .opType(LogicalTypes::LOGICAL_XOR) - .inputs({{{3, 4}, element::boolean, std::vector {true, true, true, true, true, false, true, false, false, true, true, true}}, - {{3, 4}, element::boolean, std::vector {true, true, true, true, true, true, true, false, false, true, true, false}}}) - .expected({{3, 4}, element::boolean, std::vector {false, false, false, false, false, true, false, false, false, false, false, true}})}; + .inputs({{{3, 4}, + element::boolean, + std::vector{true, true, true, true, true, false, true, false, false, true, true, true}}, + {{3, 4}, + element::boolean, + std::vector{true, true, true, true, true, true, true, false, false, true, true, false}}}) + .expected( + {{3, 4}, + element::boolean, + std::vector{false, false, false, false, false, true, false, false, false, false, false, true}})}; return logicalParams; } -INSTANTIATE_TEST_SUITE_P(smoke_LogicalOr_With_Hardcoded_Refs, ReferenceLogicalLayerTest, ::testing::ValuesIn(generateLogicalParams()), +INSTANTIATE_TEST_SUITE_P(smoke_LogicalOr_With_Hardcoded_Refs, + ReferenceLogicalLayerTest, + ::testing::ValuesIn(generateLogicalParams()), ReferenceLogicalLayerTest::getTestCaseName); } // namespace diff --git a/src/plugins/template/tests/functional/op_reference/loop.cpp b/src/plugins/template/tests/functional/op_reference/loop.cpp index 3e7f9ad63b5..7ff49b7173f 100644 --- a/src/plugins/template/tests/functional/op_reference/loop.cpp +++ b/src/plugins/template/tests/functional/op_reference/loop.cpp @@ -8,14 +8,11 @@ #include #include "base_reference_test.hpp" -#include "functional_test_utils/skip_tests_config.hpp" #include "common_test_utils/common_utils.hpp" +#include "functional_test_utils/skip_tests_config.hpp" namespace { -enum LOOP_IN_TYPE { - INVARIANT, - MERGED -}; +enum LOOP_IN_TYPE { INVARIANT, MERGED }; struct LoopFunctionalBase { virtual std::shared_ptr create_function(const std::vector& loop_inputs, @@ -49,8 +46,8 @@ struct LoopDynamicInputs : public LoopFunctionalBase { // Body auto sum = std::make_shared(Xi, Yi); auto Zo = std::make_shared(sum, M_body); - auto body = std::make_shared(ov::OutputVector{body_condition, Zo}, - ov::ParameterVector{Xi, Yi, M_body}); + auto body = + std::make_shared(ov::OutputVector{body_condition, Zo}, ov::ParameterVector{Xi, Yi, M_body}); auto loop = std::make_shared(trip_count, exec_condition); loop->set_function(body); @@ -72,10 +69,10 @@ struct LoopParams { const std::vector& loop_inputs, const std::vector& expected_results, const std::string& test_case_name) - : function(functional), - inputs(loop_inputs), - expected_results(expected_results), - test_case_name(test_case_name) {} + : function(functional), + inputs(loop_inputs), + expected_results(expected_results), + test_case_name(test_case_name) {} std::shared_ptr function; std::vector inputs; @@ -109,23 +106,22 @@ TEST_P(ReferenceLoopLayerTest, TensorIteratorWithHardcodedRefs) { } INSTANTIATE_TEST_SUITE_P( - smoke_TensorIterator_With_Hardcoded_Refs, - ReferenceLoopLayerTest, - ::testing::Values( - LoopParams( - std::make_shared(), - std::vector{ - reference_tests::Tensor(ov::element::f32, ov::Shape{2, 2}, std::vector{0, 1, 2, 3}), - reference_tests::Tensor(ov::element::f32, ov::Shape{2, 2}, std::vector{1, 2, 3, 4}), - reference_tests::Tensor(ov::element::f32, ov::Shape{2, 2}, std::vector{5, 4, 3, 2})}, - // 5*(0+1)*(0+1)*(0+1) = 5 - // 4*(1+2)*(1+2)*(1+2) = 108 - // 3*(2+3)*(2+3)*(2+3) = 375 - // 2*(3+4)*(3+4)*(3+4) = 686 - std::vector{ - reference_tests::Tensor(ov::element::f32, ov::Shape{2, 2}, std::vector{5, 108, 375, 686})}, - "loop_dynamic_inputs")), - ReferenceLoopLayerTest::getTestCaseName); + smoke_TensorIterator_With_Hardcoded_Refs, + ReferenceLoopLayerTest, + ::testing::Values(LoopParams( + std::make_shared(), + std::vector{ + reference_tests::Tensor(ov::element::f32, ov::Shape{2, 2}, std::vector{0, 1, 2, 3}), + reference_tests::Tensor(ov::element::f32, ov::Shape{2, 2}, std::vector{1, 2, 3, 4}), + reference_tests::Tensor(ov::element::f32, ov::Shape{2, 2}, std::vector{5, 4, 3, 2})}, + // 5*(0+1)*(0+1)*(0+1) = 5 + // 4*(1+2)*(1+2)*(1+2) = 108 + // 3*(2+3)*(2+3)*(2+3) = 375 + // 2*(3+4)*(3+4)*(3+4) = 686 + std::vector{ + reference_tests::Tensor(ov::element::f32, ov::Shape{2, 2}, std::vector{5, 108, 375, 686})}, + "loop_dynamic_inputs")), + ReferenceLoopLayerTest::getTestCaseName); struct LoopStaticInputs : public LoopFunctionalBase { std::shared_ptr create_function(const std::vector& loop_inputs, @@ -146,7 +142,8 @@ struct LoopStaticInputs : public LoopFunctionalBase { body_params.emplace_back(std::make_shared(net_type, pshape)); } - const auto body_condition_const = std::make_shared(ov::element::boolean, ov::Shape{1}, true); + const auto body_condition_const = + std::make_shared(ov::element::boolean, ov::Shape{1}, true); const auto exec_condition = std::make_shared(ov::element::boolean, ov::Shape{1}, true); std::shared_ptr trip_count_input; trip_count_input = std::make_shared(ov::element::i64, ov::Shape{1}, trip_count); @@ -157,8 +154,7 @@ struct LoopStaticInputs : public LoopFunctionalBase { Zo = std::make_shared(body_params[i], Zo); } - const auto body = std::make_shared(ov::OutputVector{body_condition_const, Zo}, - body_params); + const auto body = std::make_shared(ov::OutputVector{body_condition_const, Zo}, body_params); const auto loop = std::make_shared(trip_count_input, exec_condition); loop->set_function(body); @@ -184,27 +180,27 @@ struct LoopStaticInputs : public LoopFunctionalBase { const auto result0 = std::make_shared(out0); const auto result1 = std::make_shared(out1); const auto result2 = std::make_shared(out2); - const auto function = std::make_shared(ov::ResultVector{result0, result1, result2}, loop_params, "loop"); + const auto function = + std::make_shared(ov::ResultVector{result0, result1, result2}, loop_params, "loop"); return function; } }; struct LoopStaticParams { - LoopStaticParams( - const std::shared_ptr& functional, - const std::vector& loop_inputs, - const std::vector& expected_results, - const int64_t& trip_count, - const std::vector& loop_in_type, - const ov::element::Type& net_type, - const std::string& test_case_name) - : function(functional), - inputs(loop_inputs), - expected_results(expected_results), - trip_count(trip_count), - loop_in_type(loop_in_type), - net_type(net_type), - test_case_name(test_case_name) {} + LoopStaticParams(const std::shared_ptr& functional, + const std::vector& loop_inputs, + const std::vector& expected_results, + const int64_t& trip_count, + const std::vector& loop_in_type, + const ov::element::Type& net_type, + const std::string& test_case_name) + : function(functional), + inputs(loop_inputs), + expected_results(expected_results), + trip_count(trip_count), + loop_in_type(loop_in_type), + net_type(net_type), + test_case_name(test_case_name) {} std::shared_ptr function; std::vector inputs; @@ -215,7 +211,8 @@ struct LoopStaticParams { std::string test_case_name; }; -class ReferenceLoopLayerStaticTest : public testing::TestWithParam, public reference_tests::CommonReferenceTest { +class ReferenceLoopLayerStaticTest : public testing::TestWithParam, + public reference_tests::CommonReferenceTest { public: void SetUp() override { SKIP_IF_CURRENT_TEST_IS_DISABLED() @@ -262,138 +259,110 @@ TEST_P(ReferenceLoopLayerStaticTest, CompareWithRefs) { template std::vector generateParams() { using T = typename ov::element_type_traits::value_type; - std::vector params { + std::vector params{ LoopStaticParams( - std::make_shared(), - {reference_tests::Tensor( - ET, - {10, 1, 10}, - std::vector{ - 7, 4, 5, 2, 3, 0, 1, 6, 7, 4, 5, 2, 3, 0, 1, 6, 7, 4, 5, 2, - 3, 0, 1, 6, 7, 4, 5, 2, 3, 0, 1, 6, 7, 4, 5, 2, 3, 0, 1, 6, - 7, 4, 5, 2, 3, 0, 1, 6, 7, 4, 5, 2, 3, 0, 1, 6, 7, 4, 5, 2, - 3, 0, 1, 6, 7, 4, 5, 2, 3, 0, 1, 6, 7, 4, 5, 2, 3, 0, 1, 6, - 7, 4, 5, 2, 3, 0, 1, 6, 7, 4, 5, 2, 3, 0, 1, 6, 7, 4, 5, 2}), - reference_tests::Tensor( - ET, - {1, 1, 1}, - std::vector{7}), - reference_tests::Tensor( - ET, - {10, 1, 10}, - std::vector{ - 7, 4, 5, 2, 3, 0, 1, 6, 7, 4, 5, 2, 3, 0, 1, 6, 7, 4, 5, 2, - 3, 0, 1, 6, 7, 4, 5, 2, 3, 0, 1, 6, 7, 4, 5, 2, 3, 0, 1, 6, - 7, 4, 5, 2, 3, 0, 1, 6, 7, 4, 5, 2, 3, 0, 1, 6, 7, 4, 5, 2, - 3, 0, 1, 6, 7, 4, 5, 2, 3, 0, 1, 6, 7, 4, 5, 2, 3, 0, 1, 6, - 7, 4, 5, 2, 3, 0, 1, 6, 7, 4, 5, 2, 3, 0, 1, 6, 7, 4, 5, 2})}, - {reference_tests::Tensor( - ov::element::Type_t::boolean, - {1}, - std::vector{1}), - reference_tests::Tensor( - ET, - {10, 1, 10}, - std::vector{ - 21, 15, 17, 11, 13, 7, 9, 19, 21, 15, 17, 11, 13, 7, 9, 19, 21, 15, 17, 11, - 13, 7, 9, 19, 21, 15, 17, 11, 13, 7, 9, 19, 21, 15, 17, 11, 13, 7, 9, 19, - 21, 15, 17, 11, 13, 7, 9, 19, 21, 15, 17, 11, 13, 7, 9, 19, 21, 15, 17, 11, - 13, 7, 9, 19, 21, 15, 17, 11, 13, 7, 9, 19, 21, 15, 17, 11, 13, 7, 9, 19, - 21, 15, 17, 11, 13, 7, 9, 19, 21, 15, 17, 11, 13, 7, 9, 19, 21, 15, 17, 11}), - reference_tests::Tensor( - ET, - {10, 1, 10}, - std::vector{ - 21, 15, 17, 11, 13, 7, 9, 19, 21, 15, 17, 11, 13, 7, 9, 19, 21, 15, 17, 11, - 13, 7, 9, 19, 21, 15, 17, 11, 13, 7, 9, 19, 21, 15, 17, 11, 13, 7, 9, 19, - 21, 15, 17, 11, 13, 7, 9, 19, 21, 15, 17, 11, 13, 7, 9, 19, 21, 15, 17, 11, - 13, 7, 9, 19, 21, 15, 17, 11, 13, 7, 9, 19, 21, 15, 17, 11, 13, 7, 9, 19, - 21, 15, 17, 11, 13, 7, 9, 19, 21, 15, 17, 11, 13, 7, 9, 19, 21, 15, 17, 11})}, - 1, - {LOOP_IN_TYPE::INVARIANT, LOOP_IN_TYPE::INVARIANT, LOOP_IN_TYPE::MERGED}, - ET, - "loop_for_common"), + std::make_shared(), + {reference_tests::Tensor(ET, {10, 1, 10}, std::vector{7, 4, 5, 2, 3, 0, 1, 6, 7, 4, 5, 2, 3, 0, 1, 6, 7, + 4, 5, 2, 3, 0, 1, 6, 7, 4, 5, 2, 3, 0, 1, 6, 7, 4, + 5, 2, 3, 0, 1, 6, 7, 4, 5, 2, 3, 0, 1, 6, 7, 4, 5, + 2, 3, 0, 1, 6, 7, 4, 5, 2, 3, 0, 1, 6, 7, 4, 5, 2, + 3, 0, 1, 6, 7, 4, 5, 2, 3, 0, 1, 6, 7, 4, 5, 2, 3, + 0, 1, 6, 7, 4, 5, 2, 3, 0, 1, 6, 7, 4, 5, 2}), + reference_tests::Tensor(ET, {1, 1, 1}, std::vector{7}), + reference_tests::Tensor(ET, {10, 1, 10}, std::vector{7, 4, 5, 2, 3, 0, 1, 6, 7, 4, 5, 2, 3, 0, 1, 6, 7, + 4, 5, 2, 3, 0, 1, 6, 7, 4, 5, 2, 3, 0, 1, 6, 7, 4, + 5, 2, 3, 0, 1, 6, 7, 4, 5, 2, 3, 0, 1, 6, 7, 4, 5, + 2, 3, 0, 1, 6, 7, 4, 5, 2, 3, 0, 1, 6, 7, 4, 5, 2, + 3, 0, 1, 6, 7, 4, 5, 2, 3, 0, 1, 6, 7, 4, 5, 2, 3, + 0, 1, 6, 7, 4, 5, 2, 3, 0, 1, 6, 7, 4, 5, 2})}, + {reference_tests::Tensor(ov::element::Type_t::boolean, {1}, std::vector{1}), + reference_tests::Tensor( + ET, + {10, 1, 10}, + std::vector{21, 15, 17, 11, 13, 7, 9, 19, 21, 15, 17, 11, 13, 7, 9, 19, 21, 15, 17, 11, + 13, 7, 9, 19, 21, 15, 17, 11, 13, 7, 9, 19, 21, 15, 17, 11, 13, 7, 9, 19, + 21, 15, 17, 11, 13, 7, 9, 19, 21, 15, 17, 11, 13, 7, 9, 19, 21, 15, 17, 11, + 13, 7, 9, 19, 21, 15, 17, 11, 13, 7, 9, 19, 21, 15, 17, 11, 13, 7, 9, 19, + 21, 15, 17, 11, 13, 7, 9, 19, 21, 15, 17, 11, 13, 7, 9, 19, 21, 15, 17, 11}), + reference_tests::Tensor( + ET, + {10, 1, 10}, + std::vector{21, 15, 17, 11, 13, 7, 9, 19, 21, 15, 17, 11, 13, 7, 9, 19, 21, 15, 17, 11, + 13, 7, 9, 19, 21, 15, 17, 11, 13, 7, 9, 19, 21, 15, 17, 11, 13, 7, 9, 19, + 21, 15, 17, 11, 13, 7, 9, 19, 21, 15, 17, 11, 13, 7, 9, 19, 21, 15, 17, 11, + 13, 7, 9, 19, 21, 15, 17, 11, 13, 7, 9, 19, 21, 15, 17, 11, 13, 7, 9, 19, + 21, 15, 17, 11, 13, 7, 9, 19, 21, 15, 17, 11, 13, 7, 9, 19, 21, 15, 17, 11})}, + 1, + {LOOP_IN_TYPE::INVARIANT, LOOP_IN_TYPE::INVARIANT, LOOP_IN_TYPE::MERGED}, + ET, + "loop_for_common"), LoopStaticParams( - std::make_shared(), - {reference_tests::Tensor( - ET, - {10, 1, 10}, - std::vector{ - 7, 4, 5, 2, 3, 0, 1, 6, 7, 4, 5, 2, 3, 0, 1, 6, 7, 4, 5, 2, - 3, 0, 1, 6, 7, 4, 5, 2, 3, 0, 1, 6, 7, 4, 5, 2, 3, 0, 1, 6, - 7, 4, 5, 2, 3, 0, 1, 6, 7, 4, 5, 2, 3, 0, 1, 6, 7, 4, 5, 2, - 3, 0, 1, 6, 7, 4, 5, 2, 3, 0, 1, 6, 7, 4, 5, 2, 3, 0, 1, 6, - 7, 4, 5, 2, 3, 0, 1, 6, 7, 4, 5, 2, 3, 0, 1, 6, 7, 4, 5, 2}), - reference_tests::Tensor( - ET, - {1, 1, 1}, - std::vector{7}), - reference_tests::Tensor( - ET, - {10, 1, 10}, - std::vector{ - 7, 4, 5, 2, 3, 0, 1, 6, 7, 4, 5, 2, 3, 0, 1, 6, 7, 4, 5, 2, - 3, 0, 1, 6, 7, 4, 5, 2, 3, 0, 1, 6, 7, 4, 5, 2, 3, 0, 1, 6, - 7, 4, 5, 2, 3, 0, 1, 6, 7, 4, 5, 2, 3, 0, 1, 6, 7, 4, 5, 2, - 3, 0, 1, 6, 7, 4, 5, 2, 3, 0, 1, 6, 7, 4, 5, 2, 3, 0, 1, 6, - 7, 4, 5, 2, 3, 0, 1, 6, 7, 4, 5, 2, 3, 0, 1, 6, 7, 4, 5, 2})}, - {reference_tests::Tensor( - ov::element::Type_t::boolean, - {1}, - std::vector{1}), - reference_tests::Tensor( - ET, - {10, 1, 10}, - std::vector{ - 77, 59, 65, 47, 53, 35, 41, 71, 77, 59, 65, 47, 53, 35, 41, 71, 77, 59, 65, 47, - 53, 35, 41, 71, 77, 59, 65, 47, 53, 35, 41, 71, 77, 59, 65, 47, 53, 35, 41, 71, - 77, 59, 65, 47, 53, 35, 41, 71, 77, 59, 65, 47, 53, 35, 41, 71, 77, 59, 65, 47, - 53, 35, 41, 71, 77, 59, 65, 47, 53, 35, 41, 71, 77, 59, 65, 47, 53, 35, 41, 71, - 77, 59, 65, 47, 53, 35, 41, 71, 77, 59, 65, 47, 53, 35, 41, 71, 77, 59, 65, 47}), - reference_tests::Tensor( - ET, - {10, 5, 10}, - std::vector{ - 21, 15, 17, 11, 13, 7, 9, 19, 21, 15, 35, 26, 29, 20, 23, 14, 17, 32, 35, 26, - 49, 37, 41, 29, 33, 21, 25, 45, 49, 37, 63, 48, 53, 38, 43, 28, 33, 58, 63, 48, - 77, 59, 65, 47, 53, 35, 41, 71, 77, 59, 17, 11, 13, 7, 9, 19, 21, 15, 17, 11, - 29, 20, 23, 14, 17, 32, 35, 26, 29, 20, 41, 29, 33, 21, 25, 45, 49, 37, 41, 29, - 53, 38, 43, 28, 33, 58, 63, 48, 53, 38, 65, 47, 53, 35, 41, 71, 77, 59, 65, 47, + std::make_shared(), + {reference_tests::Tensor(ET, {10, 1, 10}, std::vector{7, 4, 5, 2, 3, 0, 1, 6, 7, 4, 5, 2, 3, 0, 1, 6, 7, + 4, 5, 2, 3, 0, 1, 6, 7, 4, 5, 2, 3, 0, 1, 6, 7, 4, + 5, 2, 3, 0, 1, 6, 7, 4, 5, 2, 3, 0, 1, 6, 7, 4, 5, + 2, 3, 0, 1, 6, 7, 4, 5, 2, 3, 0, 1, 6, 7, 4, 5, 2, + 3, 0, 1, 6, 7, 4, 5, 2, 3, 0, 1, 6, 7, 4, 5, 2, 3, + 0, 1, 6, 7, 4, 5, 2, 3, 0, 1, 6, 7, 4, 5, 2}), + reference_tests::Tensor(ET, {1, 1, 1}, std::vector{7}), + reference_tests::Tensor(ET, {10, 1, 10}, std::vector{7, 4, 5, 2, 3, 0, 1, 6, 7, 4, 5, 2, 3, 0, 1, 6, 7, + 4, 5, 2, 3, 0, 1, 6, 7, 4, 5, 2, 3, 0, 1, 6, 7, 4, + 5, 2, 3, 0, 1, 6, 7, 4, 5, 2, 3, 0, 1, 6, 7, 4, 5, + 2, 3, 0, 1, 6, 7, 4, 5, 2, 3, 0, 1, 6, 7, 4, 5, 2, + 3, 0, 1, 6, 7, 4, 5, 2, 3, 0, 1, 6, 7, 4, 5, 2, 3, + 0, 1, 6, 7, 4, 5, 2, 3, 0, 1, 6, 7, 4, 5, 2})}, + {reference_tests::Tensor(ov::element::Type_t::boolean, {1}, std::vector{1}), + reference_tests::Tensor( + ET, + {10, 1, 10}, + std::vector{77, 59, 65, 47, 53, 35, 41, 71, 77, 59, 65, 47, 53, 35, 41, 71, 77, 59, 65, 47, + 53, 35, 41, 71, 77, 59, 65, 47, 53, 35, 41, 71, 77, 59, 65, 47, 53, 35, 41, 71, + 77, 59, 65, 47, 53, 35, 41, 71, 77, 59, 65, 47, 53, 35, 41, 71, 77, 59, 65, 47, + 53, 35, 41, 71, 77, 59, 65, 47, 53, 35, 41, 71, 77, 59, 65, 47, 53, 35, 41, 71, + 77, 59, 65, 47, 53, 35, 41, 71, 77, 59, 65, 47, 53, 35, 41, 71, 77, 59, 65, 47}), + reference_tests::Tensor( + ET, + {10, 5, 10}, + std::vector{21, 15, 17, 11, 13, 7, 9, 19, 21, 15, 35, 26, 29, 20, 23, 14, 17, 32, 35, 26, + 49, 37, 41, 29, 33, 21, 25, 45, 49, 37, 63, 48, 53, 38, 43, 28, 33, 58, 63, 48, + 77, 59, 65, 47, 53, 35, 41, 71, 77, 59, 17, 11, 13, 7, 9, 19, 21, 15, 17, 11, + 29, 20, 23, 14, 17, 32, 35, 26, 29, 20, 41, 29, 33, 21, 25, 45, 49, 37, 41, 29, + 53, 38, 43, 28, 33, 58, 63, 48, 53, 38, 65, 47, 53, 35, 41, 71, 77, 59, 65, 47, - 13, 7, 9, 19, 21, 15, 17, 11, 13, 7, 23, 14, 17, 32, 35, 26, 29, 20, 23, 14, - 33, 21, 25, 45, 49, 37, 41, 29, 33, 21, 43, 28, 33, 58, 63, 48, 53, 38, 43, 28, - 53, 35, 41, 71, 77, 59, 65, 47, 53, 35, 9, 19, 21, 15, 17, 11, 13, 7, 9, 19, - 17, 32, 35, 26, 29, 20, 23, 14, 17, 32, 25, 45, 49, 37, 41, 29, 33, 21, 25, 45, - 33, 58, 63, 48, 53, 38, 43, 28, 33, 58, 41, 71, 77, 59, 65, 47, 53, 35, 41, 71, + 13, 7, 9, 19, 21, 15, 17, 11, 13, 7, 23, 14, 17, 32, 35, 26, 29, 20, 23, 14, + 33, 21, 25, 45, 49, 37, 41, 29, 33, 21, 43, 28, 33, 58, 63, 48, 53, 38, 43, 28, + 53, 35, 41, 71, 77, 59, 65, 47, 53, 35, 9, 19, 21, 15, 17, 11, 13, 7, 9, 19, + 17, 32, 35, 26, 29, 20, 23, 14, 17, 32, 25, 45, 49, 37, 41, 29, 33, 21, 25, 45, + 33, 58, 63, 48, 53, 38, 43, 28, 33, 58, 41, 71, 77, 59, 65, 47, 53, 35, 41, 71, - 21, 15, 17, 11, 13, 7, 9, 19, 21, 15, 35, 26, 29, 20, 23, 14, 17, 32, 35, 26, - 49, 37, 41, 29, 33, 21, 25, 45, 49, 37, 63, 48, 53, 38, 43, 28, 33, 58, 63, 48, - 77, 59, 65, 47, 53, 35, 41, 71, 77, 59, 17, 11, 13, 7, 9, 19, 21, 15, 17, 11, - 29, 20, 23, 14, 17, 32, 35, 26, 29, 20, 41, 29, 33, 21, 25, 45, 49, 37, 41, 29, - 53, 38, 43, 28, 33, 58, 63, 48, 53, 38, 65, 47, 53, 35, 41, 71, 77, 59, 65, 47, + 21, 15, 17, 11, 13, 7, 9, 19, 21, 15, 35, 26, 29, 20, 23, 14, 17, 32, 35, 26, + 49, 37, 41, 29, 33, 21, 25, 45, 49, 37, 63, 48, 53, 38, 43, 28, 33, 58, 63, 48, + 77, 59, 65, 47, 53, 35, 41, 71, 77, 59, 17, 11, 13, 7, 9, 19, 21, 15, 17, 11, + 29, 20, 23, 14, 17, 32, 35, 26, 29, 20, 41, 29, 33, 21, 25, 45, 49, 37, 41, 29, + 53, 38, 43, 28, 33, 58, 63, 48, 53, 38, 65, 47, 53, 35, 41, 71, 77, 59, 65, 47, - 13, 7, 9, 19, 21, 15, 17, 11, 13, 7, 23, 14, 17, 32, 35, 26, 29, 20, 23, 14, - 33, 21, 25, 45, 49, 37, 41, 29, 33, 21, 43, 28, 33, 58, 63, 48, 53, 38, 43, 28, - 53, 35, 41, 71, 77, 59, 65, 47, 53, 35, 9, 19, 21, 15, 17, 11, 13, 7, 9, 19, - 17, 32, 35, 26, 29, 20, 23, 14, 17, 32, 25, 45, 49, 37, 41, 29, 33, 21, 25, 45, - 33, 58, 63, 48, 53, 38, 43, 28, 33, 58, 41, 71, 77, 59, 65, 47, 53, 35, 41, 71, + 13, 7, 9, 19, 21, 15, 17, 11, 13, 7, 23, 14, 17, 32, 35, 26, 29, 20, 23, 14, + 33, 21, 25, 45, 49, 37, 41, 29, 33, 21, 43, 28, 33, 58, 63, 48, 53, 38, 43, 28, + 53, 35, 41, 71, 77, 59, 65, 47, 53, 35, 9, 19, 21, 15, 17, 11, 13, 7, 9, 19, + 17, 32, 35, 26, 29, 20, 23, 14, 17, 32, 25, 45, 49, 37, 41, 29, 33, 21, 25, 45, + 33, 58, 63, 48, 53, 38, 43, 28, 33, 58, 41, 71, 77, 59, 65, 47, 53, 35, 41, 71, - 21, 15, 17, 11, 13, 7, 9, 19, 21, 15, 35, 26, 29, 20, 23, 14, 17, 32, 35, 26, - 49, 37, 41, 29, 33, 21, 25, 45, 49, 37, 63, 48, 53, 38, 43, 28, 33, 58, 63, 48, - 77, 59, 65, 47, 53, 35, 41, 71, 77, 59, 17, 11, 13, 7, 9, 19, 21, 15, 17, 11, - 29, 20, 23, 14, 17, 32, 35, 26, 29, 20, 41, 29, 33, 21, 25, 45, 49, 37, 41, 29, - 53, 38, 43, 28, 33, 58, 63, 48, 53, 38, 65, 47, 53, 35, 41, 71, 77, 59, 65, 47})}, - 5, - {LOOP_IN_TYPE::INVARIANT, LOOP_IN_TYPE::INVARIANT, LOOP_IN_TYPE::MERGED}, - ET, - "loop_for_common"), + 21, 15, 17, 11, 13, 7, 9, 19, 21, 15, 35, 26, 29, 20, 23, 14, 17, 32, 35, 26, + 49, 37, 41, 29, 33, 21, 25, 45, 49, 37, 63, 48, 53, 38, 43, 28, 33, 58, 63, 48, + 77, 59, 65, 47, 53, 35, 41, 71, 77, 59, 17, 11, 13, 7, 9, 19, 21, 15, 17, 11, + 29, 20, 23, 14, 17, 32, 35, 26, 29, 20, 41, 29, 33, 21, 25, 45, 49, 37, 41, 29, + 53, 38, 43, 28, 33, 58, 63, 48, 53, 38, 65, 47, 53, 35, 41, 71, 77, 59, 65, 47})}, + 5, + {LOOP_IN_TYPE::INVARIANT, LOOP_IN_TYPE::INVARIANT, LOOP_IN_TYPE::MERGED}, + ET, + "loop_for_common"), }; return params; } std::vector generateCombinedParams() { - const std::vector> generatedParams { + const std::vector> generatedParams{ generateParams(), generateParams(), generateParams(), @@ -414,6 +383,8 @@ std::vector generateCombinedParams() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_Loop_With_Hardcoded_Refs, ReferenceLoopLayerStaticTest, - testing::ValuesIn(generateCombinedParams()), ReferenceLoopLayerStaticTest::getTestCaseName); -} +INSTANTIATE_TEST_SUITE_P(smoke_Loop_With_Hardcoded_Refs, + ReferenceLoopLayerStaticTest, + testing::ValuesIn(generateCombinedParams()), + ReferenceLoopLayerStaticTest::getTestCaseName); +} // namespace diff --git a/src/plugins/template/tests/functional/op_reference/lrn.cpp b/src/plugins/template/tests/functional/op_reference/lrn.cpp index 273ec0d31c3..4e18d69e1fa 100644 --- a/src/plugins/template/tests/functional/op_reference/lrn.cpp +++ b/src/plugins/template/tests/functional/op_reference/lrn.cpp @@ -2,11 +2,12 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/lrn.hpp" + #include #include "base_reference_test.hpp" #include "openvino/op/constant.hpp" -#include "openvino/op/lrn.hpp" using namespace reference_tests; using namespace ov; @@ -115,12 +116,12 @@ public: private: static std::shared_ptr CreateFunction(const Shape& input_shape, - const element::Type_t& input_type, - const float& alpah, - const float& beta, - const float& bias, - const size_t& size, - const std::shared_ptr& axes) { + const element::Type_t& input_type, + const float& alpah, + const float& beta, + const float& bias, + const size_t& size, + const std::shared_ptr& axes) { auto in = std::make_shared(input_type, input_shape); std::shared_ptr lrn; @@ -161,7 +162,10 @@ std::vector generateParamsForLRN() { 0.5669467f, 0.7784989f, 0.7720487f}, - 3, 0.5, 1, 3, + 3, + 0.5, + 1, + 3, NULL), // lrn_across_h LRNParams(Shape{2, 3, 2, 1}, @@ -181,7 +185,10 @@ std::vector generateParamsForLRN() { 0.7448453f, 0.6711560f, 0.7382717f}, - 3, 0.5, 1, 3, + 3, + 0.5, + 1, + 3, std::make_shared(element::Type_t::i64, Shape{1}, std::vector{2})), // lrn_across_hw LRNParams(Shape{2, 3, 2, 1}, @@ -201,7 +208,10 @@ std::vector generateParamsForLRN() { 1.2813632f, 1.1572751f, 1.2730026f}, - 3, 0.5, 1, 3, + 3, + 0.5, + 1, + 3, std::make_shared(element::Type_t::i64, Shape{2}, std::vector{2, 3})), // lrn_across_all_dims LRNParams(Shape{2, 3, 2, 1}, @@ -221,7 +231,10 @@ std::vector generateParamsForLRN() { 2.0256331f, 2.4576957f, 2.7034652f}, - 3, 0.5, 1, 3, + 3, + 0.5, + 1, + 3, std::make_shared(element::Type_t::i64, Shape{4}, std::vector{0, 1, 2, 3})), // lrn_across_nw LRNParams(Shape{2, 3, 2, 1}, @@ -241,7 +254,10 @@ std::vector generateParamsForLRN() { 1.6164477f, 1.5877683f, 1.5608464f}, - 3, 0.5, 1, 3, + 3, + 0.5, + 1, + 3, std::make_shared(element::Type_t::i64, Shape{2}, std::vector{0, 3})), // lrn_across_empty LRNParams(Shape{2, 3, 2, 1}, @@ -261,7 +277,10 @@ std::vector generateParamsForLRN() { 0.5761660f, 0.5763904f, 0.5765567f}, - 3, 0.5, 1, 3, + 3, + 0.5, + 1, + 3, std::make_shared(element::Type_t::i64, Shape{0}, std::vector{})), // lrn_6D_across_2_axes LRNParams(Shape{2, 3, 2, 2, 1, 1}, @@ -273,7 +292,10 @@ std::vector generateParamsForLRN() { 0.9149914f, 1.0674900f, 0.7213357f, 0.8115027f, 0.9016696f, 0.9918366f, 0.7656109f, 0.8294119f, 0.8932127f, 0.9570137f, 0.7892218f, 0.8385482f, 0.8878745f, 0.9372009f, 0.8038679f, 0.8440613f, 0.8842546f, 0.9244481f}, - 3, 0.5, 1, 3, + 3, + 0.5, + 1, + 3, std::make_shared(element::Type_t::i64, Shape{2}, std::vector{2, 3})), // lrn_2d_across_empty LRNParams(Shape{12}, @@ -293,9 +315,12 @@ std::vector generateParamsForLRN() { 0.5761660f, 0.5763904f, 0.5765566f}, - 3, 0.5, 1, 3, + 3, + 0.5, + 1, + 3, std::make_shared(element::Type_t::i64, Shape{0}, std::vector{})), - // lrn_2d_across_empty + // lrn_2d_across_empty LRNParams(Shape{6, 2}, Shape{6, 2}, ET, @@ -324,7 +349,10 @@ std::vector generateParamsForLRN() { -0.3425926f, 0.3559732f, -0.7039225f}, - 0.0002, 0.5, 2.0, 3, + 0.0002, + 0.5, + 2.0, + 3, std::make_shared(element::Type_t::i64, Shape{1}, std::vector{0})), }; @@ -332,10 +360,8 @@ std::vector generateParamsForLRN() { } std::vector generateCombinedParamsForLRN() { - const std::vector> allTypeParams{ - generateParamsForLRN(), - generateParamsForLRN() - }; + const std::vector> allTypeParams{generateParamsForLRN(), + generateParamsForLRN()}; std::vector combinedParams; @@ -346,10 +372,9 @@ std::vector generateCombinedParamsForLRN() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P( - smoke_LRN_With_Hardcoded_Refs, - ReferenceLRNLayerTest, - ::testing::ValuesIn(generateCombinedParamsForLRN()), - ReferenceLRNLayerTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_LRN_With_Hardcoded_Refs, + ReferenceLRNLayerTest, + ::testing::ValuesIn(generateCombinedParamsForLRN()), + ReferenceLRNLayerTest::getTestCaseName); } // namespace diff --git a/src/plugins/template/tests/functional/op_reference/lstm_cell.cpp b/src/plugins/template/tests/functional/op_reference/lstm_cell.cpp index 22c7cf71fb6..8df731e9f6f 100644 --- a/src/plugins/template/tests/functional/op_reference/lstm_cell.cpp +++ b/src/plugins/template/tests/functional/op_reference/lstm_cell.cpp @@ -4,9 +4,9 @@ #include -#include "openvino/opsets/opset4.hpp" -#include "openvino/opsets/opset1.hpp" #include "base_reference_test.hpp" +#include "openvino/opsets/opset1.hpp" +#include "openvino/opsets/opset4.hpp" using namespace reference_tests; using namespace ov; @@ -159,18 +159,17 @@ private: const auto C_t = std::make_shared(params.C_t.type, params.C_t.shape); const auto B = std::make_shared(params.B.type, params.B.shape); - const auto lstm_cell = - std::make_shared(X, - H_t, - C_t, - W, - R, - B, - params.hiddenSize, - std::vector{"sigmoid", "tanh", "tanh"}, - std::vector{}, - std::vector{}, - clip_threshold); + const auto lstm_cell = std::make_shared(X, + H_t, + C_t, + W, + R, + B, + params.hiddenSize, + std::vector{"sigmoid", "tanh", "tanh"}, + std::vector{}, + std::vector{}, + clip_threshold); auto function = std::make_shared(lstm_cell->outputs(), ParameterVector{X, H_t, C_t, W, R, B}); return function; @@ -243,7 +242,13 @@ public: threshold = 1e-1f; auto params = GetParam(); function = CreateFunction(params); - inputData = {params.X.data, params.H_t.data, params.C_t.data, params.W.data, params.R.data, params.B.data, params.P.data}; + inputData = {params.X.data, + params.H_t.data, + params.C_t.data, + params.W.data, + params.R.data, + params.B.data, + params.P.data}; refOutData = {params.Ho.data, params.Co.data}; } @@ -259,21 +264,20 @@ private: const auto B = std::make_shared(params.B.type, params.B.shape); const auto P = std::make_shared(params.P.type, params.P.shape); - const auto lstm_cell = - std::make_shared(X, - H_t, - C_t, - W, - R, - B, - P, - params.hiddenSize, - op::LSTMWeightsFormat::FICO, - std::vector{"sigmoid", "tanh", "tanh"}, - std::vector{}, - std::vector{}, - clip_threshold, - false); + const auto lstm_cell = std::make_shared(X, + H_t, + C_t, + W, + R, + B, + P, + params.hiddenSize, + op::LSTMWeightsFormat::FICO, + std::vector{"sigmoid", "tanh", "tanh"}, + std::vector{}, + std::vector{}, + clip_threshold, + false); auto function = std::make_shared(lstm_cell->outputs(), ParameterVector{X, H_t, C_t, W, R, B, P}); return function; @@ -295,43 +299,59 @@ TEST_P(ReferenceLSTMCellV1TestBiasClip, CompareWithRefs) { template std::vector generateParams() { using T = typename element_type_traits::value_type; - std::vector params { - Builder {} - .batchSize(2) - .inputSize(3) - .hiddenSize(3) - .gatesCount(4) - .X(reference_tests::Tensor(ET, {2, 3}, std::vector{ - 0.81342685f, 0.84108883f, 0.8152282f, 0.46893653f, 0.0901856f, 0.37088776f})) - .W(reference_tests::Tensor(ET, {4 * 3, 3}, std::vector{ - 3.3330739e-01f, 3.6229487e-04f, 4.6773660e-01f, 4.3046016e-01f, 7.3950343e-02f, 3.8063636e-01f, - 9.6921772e-01f, 9.6897459e-01f, 6.2964785e-01f, 3.1134409e-01f, 8.4709978e-01f, 9.4928098e-01f, - 6.1676943e-01f, 6.6020679e-01f, 1.9072217e-01f, 8.8032126e-02f, 4.0472135e-01f, 6.8342745e-01f, - 8.3432144e-01f, 4.4928190e-01f, 7.9524308e-01f, 5.3966165e-01f, 8.5936421e-01f, 8.3136767e-01f, - 5.5125546e-02f, 4.7791195e-01f, 3.5788772e-01f, 6.7507404e-01f, 2.1716513e-01f, 2.7473119e-01f, - 3.3999152e-02f, 9.6835363e-01f, 3.7581277e-01f, 2.4026000e-01f, 6.7418844e-01f, 3.4199652e-01f})) - .R(reference_tests::Tensor(ET, {4 * 3, 3}, std::vector{ - 0.0987983f, 0.52032113f, 0.5848073f, 0.5356095f, 0.74497133f, 0.73260087f, - 0.1700787f, 0.45684233f, 0.1495722f, 0.42734373f, 0.4433832f, 0.25906256f, - 0.03854987f, 0.47480518f, 0.37215272f, 0.99890584f, 0.74019486f, 0.3518967f, - 0.6881257f, 0.8170279f, 0.54088944f, 0.81225616f, 0.14619833f, 0.42941234f, - 0.86843914f, 0.45967972f, 0.6237719f, 0.11074839f, 0.6029616f, 0.3149305f, - 0.46504205f, 0.5843412f, 0.8733427f, 0.7687243f, 0.07074859f, 0.39188156f})) - .H_t(reference_tests::Tensor(ET, {2, 3}, std::vector{ - 0.77956f, 0.5331557f, 0.04297554f, 0.7962175f, 0.7635707f, 0.11989366f})) - .C_t(reference_tests::Tensor(ET, {2, 3}, std::vector{ - 0.8488452f, 0.18851636f, 0.5020695f, 0.29716516f, 0.06740791f, 0.45384037f})) - .B(reference_tests::Tensor(ET, {4 * 3}, std::vector(4 * 3, 0.f))) - .P(reference_tests::Tensor(ET, {3 * 3}, std::vector(3 * 3, 0.f))) - .Ho(reference_tests::Tensor(ET, {2, 3}, std::vector{0.81457126f, 0.61109227f, 0.769522f, 0.52239674f, 0.4324641f, 0.63183f})) - .Co(reference_tests::Tensor(ET, {2, 3}, std::vector{1.4444952f, 0.9635685f, 1.2875274f, 0.8053419f, 0.7184521f, 0.95803297f})) - .testcaseName("lstm_cell_zero_bias_default_attrs") - }; + std::vector params{ + Builder{} + .batchSize(2) + .inputSize(3) + .hiddenSize(3) + .gatesCount(4) + .X(reference_tests::Tensor( + ET, + {2, 3}, + std::vector{0.81342685f, 0.84108883f, 0.8152282f, 0.46893653f, 0.0901856f, 0.37088776f})) + .W(reference_tests::Tensor( + ET, + {4 * 3, 3}, + std::vector{ + 3.3330739e-01f, 3.6229487e-04f, 4.6773660e-01f, 4.3046016e-01f, 7.3950343e-02f, 3.8063636e-01f, + 9.6921772e-01f, 9.6897459e-01f, 6.2964785e-01f, 3.1134409e-01f, 8.4709978e-01f, 9.4928098e-01f, + 6.1676943e-01f, 6.6020679e-01f, 1.9072217e-01f, 8.8032126e-02f, 4.0472135e-01f, 6.8342745e-01f, + 8.3432144e-01f, 4.4928190e-01f, 7.9524308e-01f, 5.3966165e-01f, 8.5936421e-01f, 8.3136767e-01f, + 5.5125546e-02f, 4.7791195e-01f, 3.5788772e-01f, 6.7507404e-01f, 2.1716513e-01f, 2.7473119e-01f, + 3.3999152e-02f, 9.6835363e-01f, 3.7581277e-01f, 2.4026000e-01f, 6.7418844e-01f, 3.4199652e-01f})) + .R(reference_tests::Tensor( + ET, + {4 * 3, 3}, + std::vector{0.0987983f, 0.52032113f, 0.5848073f, 0.5356095f, 0.74497133f, 0.73260087f, + 0.1700787f, 0.45684233f, 0.1495722f, 0.42734373f, 0.4433832f, 0.25906256f, + 0.03854987f, 0.47480518f, 0.37215272f, 0.99890584f, 0.74019486f, 0.3518967f, + 0.6881257f, 0.8170279f, 0.54088944f, 0.81225616f, 0.14619833f, 0.42941234f, + 0.86843914f, 0.45967972f, 0.6237719f, 0.11074839f, 0.6029616f, 0.3149305f, + 0.46504205f, 0.5843412f, 0.8733427f, 0.7687243f, 0.07074859f, 0.39188156f})) + .H_t(reference_tests::Tensor( + ET, + {2, 3}, + std::vector{0.77956f, 0.5331557f, 0.04297554f, 0.7962175f, 0.7635707f, 0.11989366f})) + .C_t(reference_tests::Tensor( + ET, + {2, 3}, + std::vector{0.8488452f, 0.18851636f, 0.5020695f, 0.29716516f, 0.06740791f, 0.45384037f})) + .B(reference_tests::Tensor(ET, {4 * 3}, std::vector(4 * 3, 0.f))) + .P(reference_tests::Tensor(ET, {3 * 3}, std::vector(3 * 3, 0.f))) + .Ho(reference_tests::Tensor( + ET, + {2, 3}, + std::vector{0.81457126f, 0.61109227f, 0.769522f, 0.52239674f, 0.4324641f, 0.63183f})) + .Co(reference_tests::Tensor( + ET, + {2, 3}, + std::vector{1.4444952f, 0.9635685f, 1.2875274f, 0.8053419f, 0.7184521f, 0.95803297f})) + .testcaseName("lstm_cell_zero_bias_default_attrs")}; return params; } std::vector generateCombinedParams() { - const std::vector> generatedParams { + const std::vector> generatedParams{ generateParams(), generateParams(), generateParams(), @@ -348,64 +368,81 @@ std::vector generateCombinedParams() { template std::vector generateParamsBiasDefaultAttrs() { using T = typename element_type_traits::value_type; - std::vector params { - Builder {} - .batchSize(2) - .inputSize(3) - .hiddenSize(3) - .gatesCount(4) - .X(reference_tests::Tensor(ET, {2, 3}, std::vector{ - 0.81342685f, 0.84108883f, 0.8152282f, 0.46893653f, 0.0901856f, 0.37088776f})) - .W(reference_tests::Tensor(ET, {4 * 3, 3}, std::vector{ - 3.3330739e-01f, 3.6229487e-04f, 4.6773660e-01f, 4.3046016e-01f, 7.3950343e-02f, 3.8063636e-01f, - 9.6921772e-01f, 9.6897459e-01f, 6.2964785e-01f, 3.1134409e-01f, 8.4709978e-01f, 9.4928098e-01f, - 6.1676943e-01f, 6.6020679e-01f, 1.9072217e-01f, 8.8032126e-02f, 4.0472135e-01f, 6.8342745e-01f, - 8.3432144e-01f, 4.4928190e-01f, 7.9524308e-01f, 5.3966165e-01f, 8.5936421e-01f, 8.3136767e-01f, - 5.5125546e-02f, 4.7791195e-01f, 3.5788772e-01f, 6.7507404e-01f, 2.1716513e-01f, 2.7473119e-01f, - 3.3999152e-02f, 9.6835363e-01f, 3.7581277e-01f, 2.4026000e-01f, 6.7418844e-01f, 3.4199652e-01f})) - .R(reference_tests::Tensor(ET, {4 * 3, 3}, std::vector{ - 0.0987983f, 0.52032113f, 0.5848073f, 0.5356095f, 0.74497133f, 0.73260087f, - 0.1700787f, 0.45684233f, 0.1495722f, 0.42734373f, 0.4433832f, 0.25906256f, - 0.03854987f, 0.47480518f, 0.37215272f, 0.99890584f, 0.74019486f, 0.3518967f, - 0.6881257f, 0.8170279f, 0.54088944f, 0.81225616f, 0.14619833f, 0.42941234f, - 0.86843914f, 0.45967972f, 0.6237719f, 0.11074839f, 0.6029616f, 0.3149305f, - 0.46504205f, 0.5843412f, 0.8733427f, 0.7687243f, 0.07074859f, 0.39188156f})) - .H_t(reference_tests::Tensor(ET, {2, 3}, std::vector{ - 0.77956f, 0.5331557f, 0.04297554f, 0.7962175f, 0.7635707f, 0.11989366f})) - .C_t(reference_tests::Tensor(ET, {2, 3}, std::vector{ - 0.8488452f, 0.18851636f, 0.5020695f, 0.29716516f, 0.06740791f, 0.45384037f})) - .B(reference_tests::Tensor(ET, {4 * 3}, std::vector{1.07393714f, - 1.15248052f, - 1.16671345f, - 0.21450312f, - 1.2380678f, - 1.51688835f, - 0.46718366f, - 0.91810346f, - 1.1274234f, - 0.51022074f, - 1.11389844f, - 0.74174305f})) - .P(reference_tests::Tensor(ET, {3 * 3}, std::vector(3 * 3, 0.f))) - .Ho(reference_tests::Tensor(ET, {2, 3}, std::vector{0.81014400720596313, - 0.76665538549423218, - 0.82509011030197144, - 0.6479143500328064, - 0.66586339473724365, - 0.74838578701019287})) - .Co(reference_tests::Tensor(ET, {2, 3}, std::vector{1.6800162792205811, - 1.1150213479995728, - 1.4578367471694946, - 1.0649888515472412, - 0.93761754035949707, - 1.3659683465957642})) - .testcaseName("lstm_cell_bias_default_attrs"), + std::vector params{ + Builder{} + .batchSize(2) + .inputSize(3) + .hiddenSize(3) + .gatesCount(4) + .X(reference_tests::Tensor( + ET, + {2, 3}, + std::vector{0.81342685f, 0.84108883f, 0.8152282f, 0.46893653f, 0.0901856f, 0.37088776f})) + .W(reference_tests::Tensor( + ET, + {4 * 3, 3}, + std::vector{ + 3.3330739e-01f, 3.6229487e-04f, 4.6773660e-01f, 4.3046016e-01f, 7.3950343e-02f, 3.8063636e-01f, + 9.6921772e-01f, 9.6897459e-01f, 6.2964785e-01f, 3.1134409e-01f, 8.4709978e-01f, 9.4928098e-01f, + 6.1676943e-01f, 6.6020679e-01f, 1.9072217e-01f, 8.8032126e-02f, 4.0472135e-01f, 6.8342745e-01f, + 8.3432144e-01f, 4.4928190e-01f, 7.9524308e-01f, 5.3966165e-01f, 8.5936421e-01f, 8.3136767e-01f, + 5.5125546e-02f, 4.7791195e-01f, 3.5788772e-01f, 6.7507404e-01f, 2.1716513e-01f, 2.7473119e-01f, + 3.3999152e-02f, 9.6835363e-01f, 3.7581277e-01f, 2.4026000e-01f, 6.7418844e-01f, 3.4199652e-01f})) + .R(reference_tests::Tensor( + ET, + {4 * 3, 3}, + std::vector{0.0987983f, 0.52032113f, 0.5848073f, 0.5356095f, 0.74497133f, 0.73260087f, + 0.1700787f, 0.45684233f, 0.1495722f, 0.42734373f, 0.4433832f, 0.25906256f, + 0.03854987f, 0.47480518f, 0.37215272f, 0.99890584f, 0.74019486f, 0.3518967f, + 0.6881257f, 0.8170279f, 0.54088944f, 0.81225616f, 0.14619833f, 0.42941234f, + 0.86843914f, 0.45967972f, 0.6237719f, 0.11074839f, 0.6029616f, 0.3149305f, + 0.46504205f, 0.5843412f, 0.8733427f, 0.7687243f, 0.07074859f, 0.39188156f})) + .H_t(reference_tests::Tensor( + ET, + {2, 3}, + std::vector{0.77956f, 0.5331557f, 0.04297554f, 0.7962175f, 0.7635707f, 0.11989366f})) + .C_t(reference_tests::Tensor( + ET, + {2, 3}, + std::vector{0.8488452f, 0.18851636f, 0.5020695f, 0.29716516f, 0.06740791f, 0.45384037f})) + .B(reference_tests::Tensor(ET, + {4 * 3}, + std::vector{1.07393714f, + 1.15248052f, + 1.16671345f, + 0.21450312f, + 1.2380678f, + 1.51688835f, + 0.46718366f, + 0.91810346f, + 1.1274234f, + 0.51022074f, + 1.11389844f, + 0.74174305f})) + .P(reference_tests::Tensor(ET, {3 * 3}, std::vector(3 * 3, 0.f))) + .Ho(reference_tests::Tensor(ET, + {2, 3}, + std::vector{0.81014400720596313, + 0.76665538549423218, + 0.82509011030197144, + 0.6479143500328064, + 0.66586339473724365, + 0.74838578701019287})) + .Co(reference_tests::Tensor(ET, + {2, 3}, + std::vector{1.6800162792205811, + 1.1150213479995728, + 1.4578367471694946, + 1.0649888515472412, + 0.93761754035949707, + 1.3659683465957642})) + .testcaseName("lstm_cell_bias_default_attrs"), }; return params; } std::vector generateCombinedParamsBiasDefaultAttrs() { - const std::vector> generatedParams { + const std::vector> generatedParams{ generateParamsBiasDefaultAttrs(), generateParamsBiasDefaultAttrs(), generateParamsBiasDefaultAttrs(), @@ -422,64 +459,81 @@ std::vector generateCombinedParamsBiasDefaultAttrs() { template std::vector generateParamsBiasClip() { using T = typename element_type_traits::value_type; - std::vector params { - Builder {} - .batchSize(2) - .inputSize(3) - .hiddenSize(3) - .gatesCount(4) - .X(reference_tests::Tensor(ET, {2, 3}, std::vector{ - 0.81342685f, 0.84108883f, 0.8152282f, 0.46893653f, 0.0901856f, 0.37088776f})) - .W(reference_tests::Tensor(ET, {4 * 3, 3}, std::vector{ - 3.3330739e-01f, 3.6229487e-04f, 4.6773660e-01f, 4.3046016e-01f, 7.3950343e-02f, 3.8063636e-01f, - 9.6921772e-01f, 9.6897459e-01f, 6.2964785e-01f, 3.1134409e-01f, 8.4709978e-01f, 9.4928098e-01f, - 6.1676943e-01f, 6.6020679e-01f, 1.9072217e-01f, 8.8032126e-02f, 4.0472135e-01f, 6.8342745e-01f, - 8.3432144e-01f, 4.4928190e-01f, 7.9524308e-01f, 5.3966165e-01f, 8.5936421e-01f, 8.3136767e-01f, - 5.5125546e-02f, 4.7791195e-01f, 3.5788772e-01f, 6.7507404e-01f, 2.1716513e-01f, 2.7473119e-01f, - 3.3999152e-02f, 9.6835363e-01f, 3.7581277e-01f, 2.4026000e-01f, 6.7418844e-01f, 3.4199652e-01f})) - .R(reference_tests::Tensor(ET, {4 * 3, 3}, std::vector{ - 0.0987983f, 0.52032113f, 0.5848073f, 0.5356095f, 0.74497133f, 0.73260087f, - 0.1700787f, 0.45684233f, 0.1495722f, 0.42734373f, 0.4433832f, 0.25906256f, - 0.03854987f, 0.47480518f, 0.37215272f, 0.99890584f, 0.74019486f, 0.3518967f, - 0.6881257f, 0.8170279f, 0.54088944f, 0.81225616f, 0.14619833f, 0.42941234f, - 0.86843914f, 0.45967972f, 0.6237719f, 0.11074839f, 0.6029616f, 0.3149305f, - 0.46504205f, 0.5843412f, 0.8733427f, 0.7687243f, 0.07074859f, 0.39188156f})) - .H_t(reference_tests::Tensor(ET, {2, 3}, std::vector{ - 0.77956f, 0.5331557f, 0.04297554f, 0.7962175f, 0.7635707f, 0.11989366f})) - .C_t(reference_tests::Tensor(ET, {2, 3}, std::vector{ - 0.8488452f, 0.18851636f, 0.5020695f, 0.29716516f, 0.06740791f, 0.45384037f})) - .B(reference_tests::Tensor(ET, {4 * 3}, std::vector{1.07393714f, - 1.15248052f, - 1.16671345f, - 0.21450312f, - 1.2380678f, - 1.51688835f, - 0.46718366f, - 0.91810346f, - 1.1274234f, - 0.51022074f, - 1.11389844f, - 0.74174305f})) - .P(reference_tests::Tensor(ET, {3 * 3}, std::vector(3 * 3, 0.f))) - .Ho(reference_tests::Tensor(ET, {2, 3}, std::vector{0.81014400720596313, - 0.76665538549423218, - 0.82387429475784302, - 0.6479143500328064, - 0.66586339473724365, - 0.74838578701019287})) - .Co(reference_tests::Tensor(ET, {2, 3}, std::vector{1.6800162792205811, - 1.1150213479995728, - 1.4510968923568726, - 1.0649888515472412, - 0.93761754035949707, - 1.3659683465957642})) - .testcaseName("lstm_cell_bias_clip"), + std::vector params{ + Builder{} + .batchSize(2) + .inputSize(3) + .hiddenSize(3) + .gatesCount(4) + .X(reference_tests::Tensor( + ET, + {2, 3}, + std::vector{0.81342685f, 0.84108883f, 0.8152282f, 0.46893653f, 0.0901856f, 0.37088776f})) + .W(reference_tests::Tensor( + ET, + {4 * 3, 3}, + std::vector{ + 3.3330739e-01f, 3.6229487e-04f, 4.6773660e-01f, 4.3046016e-01f, 7.3950343e-02f, 3.8063636e-01f, + 9.6921772e-01f, 9.6897459e-01f, 6.2964785e-01f, 3.1134409e-01f, 8.4709978e-01f, 9.4928098e-01f, + 6.1676943e-01f, 6.6020679e-01f, 1.9072217e-01f, 8.8032126e-02f, 4.0472135e-01f, 6.8342745e-01f, + 8.3432144e-01f, 4.4928190e-01f, 7.9524308e-01f, 5.3966165e-01f, 8.5936421e-01f, 8.3136767e-01f, + 5.5125546e-02f, 4.7791195e-01f, 3.5788772e-01f, 6.7507404e-01f, 2.1716513e-01f, 2.7473119e-01f, + 3.3999152e-02f, 9.6835363e-01f, 3.7581277e-01f, 2.4026000e-01f, 6.7418844e-01f, 3.4199652e-01f})) + .R(reference_tests::Tensor( + ET, + {4 * 3, 3}, + std::vector{0.0987983f, 0.52032113f, 0.5848073f, 0.5356095f, 0.74497133f, 0.73260087f, + 0.1700787f, 0.45684233f, 0.1495722f, 0.42734373f, 0.4433832f, 0.25906256f, + 0.03854987f, 0.47480518f, 0.37215272f, 0.99890584f, 0.74019486f, 0.3518967f, + 0.6881257f, 0.8170279f, 0.54088944f, 0.81225616f, 0.14619833f, 0.42941234f, + 0.86843914f, 0.45967972f, 0.6237719f, 0.11074839f, 0.6029616f, 0.3149305f, + 0.46504205f, 0.5843412f, 0.8733427f, 0.7687243f, 0.07074859f, 0.39188156f})) + .H_t(reference_tests::Tensor( + ET, + {2, 3}, + std::vector{0.77956f, 0.5331557f, 0.04297554f, 0.7962175f, 0.7635707f, 0.11989366f})) + .C_t(reference_tests::Tensor( + ET, + {2, 3}, + std::vector{0.8488452f, 0.18851636f, 0.5020695f, 0.29716516f, 0.06740791f, 0.45384037f})) + .B(reference_tests::Tensor(ET, + {4 * 3}, + std::vector{1.07393714f, + 1.15248052f, + 1.16671345f, + 0.21450312f, + 1.2380678f, + 1.51688835f, + 0.46718366f, + 0.91810346f, + 1.1274234f, + 0.51022074f, + 1.11389844f, + 0.74174305f})) + .P(reference_tests::Tensor(ET, {3 * 3}, std::vector(3 * 3, 0.f))) + .Ho(reference_tests::Tensor(ET, + {2, 3}, + std::vector{0.81014400720596313, + 0.76665538549423218, + 0.82387429475784302, + 0.6479143500328064, + 0.66586339473724365, + 0.74838578701019287})) + .Co(reference_tests::Tensor(ET, + {2, 3}, + std::vector{1.6800162792205811, + 1.1150213479995728, + 1.4510968923568726, + 1.0649888515472412, + 0.93761754035949707, + 1.3659683465957642})) + .testcaseName("lstm_cell_bias_clip"), }; return params; } std::vector generateCombinedParamsBiasClip() { - const std::vector> generatedParams { + const std::vector> generatedParams{ generateParamsBiasClip(), generateParamsBiasClip(), generateParamsBiasClip(), @@ -493,55 +547,77 @@ std::vector generateCombinedParamsBiasClip() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_LSTMCell_With_Hardcoded_Refs, ReferenceLSTMCellTest, - testing::ValuesIn(generateCombinedParams()), ReferenceLSTMCellTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_LSTMCell_With_Hardcoded_Refs, + ReferenceLSTMCellTest, + testing::ValuesIn(generateCombinedParams()), + ReferenceLSTMCellTest::getTestCaseName); -INSTANTIATE_TEST_SUITE_P(smoke_LSTMCell_With_Hardcoded_Refs, ReferenceLSTMCellTestBiasDefaultAttrs, - testing::ValuesIn(generateCombinedParamsBiasDefaultAttrs()), ReferenceLSTMCellTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_LSTMCell_With_Hardcoded_Refs, + ReferenceLSTMCellTestBiasDefaultAttrs, + testing::ValuesIn(generateCombinedParamsBiasDefaultAttrs()), + ReferenceLSTMCellTest::getTestCaseName); -INSTANTIATE_TEST_SUITE_P(smoke_LSTMCell_With_Hardcoded_Refs, ReferenceLSTMCellTestBiasClip, - testing::ValuesIn(generateCombinedParamsBiasClip()), ReferenceLSTMCellTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_LSTMCell_With_Hardcoded_Refs, + ReferenceLSTMCellTestBiasClip, + testing::ValuesIn(generateCombinedParamsBiasClip()), + ReferenceLSTMCellTest::getTestCaseName); template std::vector generateParamsV1() { using T = typename element_type_traits::value_type; - std::vector params { - Builder {} - .batchSize(2) - .inputSize(3) - .hiddenSize(3) - .gatesCount(4) - .X(reference_tests::Tensor(ET, {2, 3}, std::vector{ - 0.81342685f, 0.84108883f, 0.8152282f, 0.46893653f, 0.0901856f, 0.37088776f})) - .W(reference_tests::Tensor(ET, {4 * 3, 3}, std::vector{ - 3.3330739e-01f, 3.6229487e-04f, 4.6773660e-01f, 4.3046016e-01f, 7.3950343e-02f, 3.8063636e-01f, - 9.6921772e-01f, 9.6897459e-01f, 6.2964785e-01f, 3.1134409e-01f, 8.4709978e-01f, 9.4928098e-01f, - 6.1676943e-01f, 6.6020679e-01f, 1.9072217e-01f, 8.8032126e-02f, 4.0472135e-01f, 6.8342745e-01f, - 8.3432144e-01f, 4.4928190e-01f, 7.9524308e-01f, 5.3966165e-01f, 8.5936421e-01f, 8.3136767e-01f, - 5.5125546e-02f, 4.7791195e-01f, 3.5788772e-01f, 6.7507404e-01f, 2.1716513e-01f, 2.7473119e-01f, - 3.3999152e-02f, 9.6835363e-01f, 3.7581277e-01f, 2.4026000e-01f, 6.7418844e-01f, 3.4199652e-01f})) - .R(reference_tests::Tensor(ET, {4 * 3, 3}, std::vector{ - 0.0987983f, 0.52032113f, 0.5848073f, 0.5356095f, 0.74497133f, 0.73260087f, - 0.1700787f, 0.45684233f, 0.1495722f, 0.42734373f, 0.4433832f, 0.25906256f, - 0.03854987f, 0.47480518f, 0.37215272f, 0.99890584f, 0.74019486f, 0.3518967f, - 0.6881257f, 0.8170279f, 0.54088944f, 0.81225616f, 0.14619833f, 0.42941234f, - 0.86843914f, 0.45967972f, 0.6237719f, 0.11074839f, 0.6029616f, 0.3149305f, - 0.46504205f, 0.5843412f, 0.8733427f, 0.7687243f, 0.07074859f, 0.39188156f})) - .H_t(reference_tests::Tensor(ET, {2, 3}, std::vector{ - 0.77956f, 0.5331557f, 0.04297554f, 0.7962175f, 0.7635707f, 0.11989366f})) - .C_t(reference_tests::Tensor(ET, {2, 3}, std::vector{ - 0.8488452f, 0.18851636f, 0.5020695f, 0.29716516f, 0.06740791f, 0.45384037f})) - .B(reference_tests::Tensor(ET, {4 * 3}, std::vector(4 * 3, 0.f))) - .P(reference_tests::Tensor(ET, {3 * 3}, std::vector(3 * 3, 0.f))) - .Ho(reference_tests::Tensor(ET, {2, 3}, std::vector{0.81457126f, 0.61109227f, 0.769522f, 0.52239674f, 0.4324641f, 0.63183f})) - .Co(reference_tests::Tensor(ET, {2, 3}, std::vector{1.4444952f, 0.9635685f, 1.2875274f, 0.8053419f, 0.7184521f, 0.95803297f})) - .testcaseName("lstm_cell_v1_zero_bias_default_attrs") - }; + std::vector params{ + Builder{} + .batchSize(2) + .inputSize(3) + .hiddenSize(3) + .gatesCount(4) + .X(reference_tests::Tensor( + ET, + {2, 3}, + std::vector{0.81342685f, 0.84108883f, 0.8152282f, 0.46893653f, 0.0901856f, 0.37088776f})) + .W(reference_tests::Tensor( + ET, + {4 * 3, 3}, + std::vector{ + 3.3330739e-01f, 3.6229487e-04f, 4.6773660e-01f, 4.3046016e-01f, 7.3950343e-02f, 3.8063636e-01f, + 9.6921772e-01f, 9.6897459e-01f, 6.2964785e-01f, 3.1134409e-01f, 8.4709978e-01f, 9.4928098e-01f, + 6.1676943e-01f, 6.6020679e-01f, 1.9072217e-01f, 8.8032126e-02f, 4.0472135e-01f, 6.8342745e-01f, + 8.3432144e-01f, 4.4928190e-01f, 7.9524308e-01f, 5.3966165e-01f, 8.5936421e-01f, 8.3136767e-01f, + 5.5125546e-02f, 4.7791195e-01f, 3.5788772e-01f, 6.7507404e-01f, 2.1716513e-01f, 2.7473119e-01f, + 3.3999152e-02f, 9.6835363e-01f, 3.7581277e-01f, 2.4026000e-01f, 6.7418844e-01f, 3.4199652e-01f})) + .R(reference_tests::Tensor( + ET, + {4 * 3, 3}, + std::vector{0.0987983f, 0.52032113f, 0.5848073f, 0.5356095f, 0.74497133f, 0.73260087f, + 0.1700787f, 0.45684233f, 0.1495722f, 0.42734373f, 0.4433832f, 0.25906256f, + 0.03854987f, 0.47480518f, 0.37215272f, 0.99890584f, 0.74019486f, 0.3518967f, + 0.6881257f, 0.8170279f, 0.54088944f, 0.81225616f, 0.14619833f, 0.42941234f, + 0.86843914f, 0.45967972f, 0.6237719f, 0.11074839f, 0.6029616f, 0.3149305f, + 0.46504205f, 0.5843412f, 0.8733427f, 0.7687243f, 0.07074859f, 0.39188156f})) + .H_t(reference_tests::Tensor( + ET, + {2, 3}, + std::vector{0.77956f, 0.5331557f, 0.04297554f, 0.7962175f, 0.7635707f, 0.11989366f})) + .C_t(reference_tests::Tensor( + ET, + {2, 3}, + std::vector{0.8488452f, 0.18851636f, 0.5020695f, 0.29716516f, 0.06740791f, 0.45384037f})) + .B(reference_tests::Tensor(ET, {4 * 3}, std::vector(4 * 3, 0.f))) + .P(reference_tests::Tensor(ET, {3 * 3}, std::vector(3 * 3, 0.f))) + .Ho(reference_tests::Tensor( + ET, + {2, 3}, + std::vector{0.81457126f, 0.61109227f, 0.769522f, 0.52239674f, 0.4324641f, 0.63183f})) + .Co(reference_tests::Tensor( + ET, + {2, 3}, + std::vector{1.4444952f, 0.9635685f, 1.2875274f, 0.8053419f, 0.7184521f, 0.95803297f})) + .testcaseName("lstm_cell_v1_zero_bias_default_attrs")}; return params; } std::vector generateCombinedParamsV1() { - const std::vector> generatedParams { + const std::vector> generatedParams{ generateParamsV1(), generateParamsV1(), generateParamsV1(), @@ -558,64 +634,81 @@ std::vector generateCombinedParamsV1() { template std::vector generateParamsBiasDefaultAttrsV1() { using T = typename element_type_traits::value_type; - std::vector params { - Builder {} - .batchSize(2) - .inputSize(3) - .hiddenSize(3) - .gatesCount(4) - .X(reference_tests::Tensor(ET, {2, 3}, std::vector{ - 0.81342685f, 0.84108883f, 0.8152282f, 0.46893653f, 0.0901856f, 0.37088776f})) - .W(reference_tests::Tensor(ET, {4 * 3, 3}, std::vector{ - 3.3330739e-01f, 3.6229487e-04f, 4.6773660e-01f, 4.3046016e-01f, 7.3950343e-02f, 3.8063636e-01f, - 9.6921772e-01f, 9.6897459e-01f, 6.2964785e-01f, 3.1134409e-01f, 8.4709978e-01f, 9.4928098e-01f, - 6.1676943e-01f, 6.6020679e-01f, 1.9072217e-01f, 8.8032126e-02f, 4.0472135e-01f, 6.8342745e-01f, - 8.3432144e-01f, 4.4928190e-01f, 7.9524308e-01f, 5.3966165e-01f, 8.5936421e-01f, 8.3136767e-01f, - 5.5125546e-02f, 4.7791195e-01f, 3.5788772e-01f, 6.7507404e-01f, 2.1716513e-01f, 2.7473119e-01f, - 3.3999152e-02f, 9.6835363e-01f, 3.7581277e-01f, 2.4026000e-01f, 6.7418844e-01f, 3.4199652e-01f})) - .R(reference_tests::Tensor(ET, {4 * 3, 3}, std::vector{ - 0.0987983f, 0.52032113f, 0.5848073f, 0.5356095f, 0.74497133f, 0.73260087f, - 0.1700787f, 0.45684233f, 0.1495722f, 0.42734373f, 0.4433832f, 0.25906256f, - 0.03854987f, 0.47480518f, 0.37215272f, 0.99890584f, 0.74019486f, 0.3518967f, - 0.6881257f, 0.8170279f, 0.54088944f, 0.81225616f, 0.14619833f, 0.42941234f, - 0.86843914f, 0.45967972f, 0.6237719f, 0.11074839f, 0.6029616f, 0.3149305f, - 0.46504205f, 0.5843412f, 0.8733427f, 0.7687243f, 0.07074859f, 0.39188156f})) - .H_t(reference_tests::Tensor(ET, {2, 3}, std::vector{ - 0.77956f, 0.5331557f, 0.04297554f, 0.7962175f, 0.7635707f, 0.11989366f})) - .C_t(reference_tests::Tensor(ET, {2, 3}, std::vector{ - 0.8488452f, 0.18851636f, 0.5020695f, 0.29716516f, 0.06740791f, 0.45384037f})) - .B(reference_tests::Tensor(ET, {4 * 3}, std::vector{1.07393714f, - 1.15248052f, - 1.16671345f, - 0.21450312f, - 1.2380678f, - 1.51688835f, - 0.46718366f, - 0.91810346f, - 1.1274234f, - 0.51022074f, - 1.11389844f, - 0.74174305f})) - .P(reference_tests::Tensor(ET, {3 * 3}, std::vector(3 * 3, 0.f))) - .Ho(reference_tests::Tensor(ET, {2, 3}, std::vector{0.81014400720596313, - 0.76665538549423218, - 0.82509011030197144, - 0.6479143500328064, - 0.66586339473724365, - 0.74838578701019287})) - .Co(reference_tests::Tensor(ET, {2, 3}, std::vector{1.6800162792205811, - 1.1150213479995728, - 1.4578367471694946, - 1.0649888515472412, - 0.93761754035949707, - 1.3659683465957642})) - .testcaseName("lstm_cell_v1_bias_default_attrs"), + std::vector params{ + Builder{} + .batchSize(2) + .inputSize(3) + .hiddenSize(3) + .gatesCount(4) + .X(reference_tests::Tensor( + ET, + {2, 3}, + std::vector{0.81342685f, 0.84108883f, 0.8152282f, 0.46893653f, 0.0901856f, 0.37088776f})) + .W(reference_tests::Tensor( + ET, + {4 * 3, 3}, + std::vector{ + 3.3330739e-01f, 3.6229487e-04f, 4.6773660e-01f, 4.3046016e-01f, 7.3950343e-02f, 3.8063636e-01f, + 9.6921772e-01f, 9.6897459e-01f, 6.2964785e-01f, 3.1134409e-01f, 8.4709978e-01f, 9.4928098e-01f, + 6.1676943e-01f, 6.6020679e-01f, 1.9072217e-01f, 8.8032126e-02f, 4.0472135e-01f, 6.8342745e-01f, + 8.3432144e-01f, 4.4928190e-01f, 7.9524308e-01f, 5.3966165e-01f, 8.5936421e-01f, 8.3136767e-01f, + 5.5125546e-02f, 4.7791195e-01f, 3.5788772e-01f, 6.7507404e-01f, 2.1716513e-01f, 2.7473119e-01f, + 3.3999152e-02f, 9.6835363e-01f, 3.7581277e-01f, 2.4026000e-01f, 6.7418844e-01f, 3.4199652e-01f})) + .R(reference_tests::Tensor( + ET, + {4 * 3, 3}, + std::vector{0.0987983f, 0.52032113f, 0.5848073f, 0.5356095f, 0.74497133f, 0.73260087f, + 0.1700787f, 0.45684233f, 0.1495722f, 0.42734373f, 0.4433832f, 0.25906256f, + 0.03854987f, 0.47480518f, 0.37215272f, 0.99890584f, 0.74019486f, 0.3518967f, + 0.6881257f, 0.8170279f, 0.54088944f, 0.81225616f, 0.14619833f, 0.42941234f, + 0.86843914f, 0.45967972f, 0.6237719f, 0.11074839f, 0.6029616f, 0.3149305f, + 0.46504205f, 0.5843412f, 0.8733427f, 0.7687243f, 0.07074859f, 0.39188156f})) + .H_t(reference_tests::Tensor( + ET, + {2, 3}, + std::vector{0.77956f, 0.5331557f, 0.04297554f, 0.7962175f, 0.7635707f, 0.11989366f})) + .C_t(reference_tests::Tensor( + ET, + {2, 3}, + std::vector{0.8488452f, 0.18851636f, 0.5020695f, 0.29716516f, 0.06740791f, 0.45384037f})) + .B(reference_tests::Tensor(ET, + {4 * 3}, + std::vector{1.07393714f, + 1.15248052f, + 1.16671345f, + 0.21450312f, + 1.2380678f, + 1.51688835f, + 0.46718366f, + 0.91810346f, + 1.1274234f, + 0.51022074f, + 1.11389844f, + 0.74174305f})) + .P(reference_tests::Tensor(ET, {3 * 3}, std::vector(3 * 3, 0.f))) + .Ho(reference_tests::Tensor(ET, + {2, 3}, + std::vector{0.81014400720596313, + 0.76665538549423218, + 0.82509011030197144, + 0.6479143500328064, + 0.66586339473724365, + 0.74838578701019287})) + .Co(reference_tests::Tensor(ET, + {2, 3}, + std::vector{1.6800162792205811, + 1.1150213479995728, + 1.4578367471694946, + 1.0649888515472412, + 0.93761754035949707, + 1.3659683465957642})) + .testcaseName("lstm_cell_v1_bias_default_attrs"), }; return params; } std::vector generateCombinedParamsBiasDefaultAttrsV1() { - const std::vector> generatedParams { + const std::vector> generatedParams{ generateParamsBiasDefaultAttrsV1(), generateParamsBiasDefaultAttrsV1(), generateParamsBiasDefaultAttrsV1(), @@ -632,64 +725,81 @@ std::vector generateCombinedParamsBiasDefaultAttrsV1() { template std::vector generateParamsBiasClipV1() { using T = typename element_type_traits::value_type; - std::vector params { - Builder {} - .batchSize(2) - .inputSize(3) - .hiddenSize(3) - .gatesCount(4) - .X(reference_tests::Tensor(ET, {2, 3}, std::vector{ - 0.81342685f, 0.84108883f, 0.8152282f, 0.46893653f, 0.0901856f, 0.37088776f})) - .W(reference_tests::Tensor(ET, {4 * 3, 3}, std::vector{ - 3.3330739e-01f, 3.6229487e-04f, 4.6773660e-01f, 4.3046016e-01f, 7.3950343e-02f, 3.8063636e-01f, - 9.6921772e-01f, 9.6897459e-01f, 6.2964785e-01f, 3.1134409e-01f, 8.4709978e-01f, 9.4928098e-01f, - 6.1676943e-01f, 6.6020679e-01f, 1.9072217e-01f, 8.8032126e-02f, 4.0472135e-01f, 6.8342745e-01f, - 8.3432144e-01f, 4.4928190e-01f, 7.9524308e-01f, 5.3966165e-01f, 8.5936421e-01f, 8.3136767e-01f, - 5.5125546e-02f, 4.7791195e-01f, 3.5788772e-01f, 6.7507404e-01f, 2.1716513e-01f, 2.7473119e-01f, - 3.3999152e-02f, 9.6835363e-01f, 3.7581277e-01f, 2.4026000e-01f, 6.7418844e-01f, 3.4199652e-01f})) - .R(reference_tests::Tensor(ET, {4 * 3, 3}, std::vector{ - 0.0987983f, 0.52032113f, 0.5848073f, 0.5356095f, 0.74497133f, 0.73260087f, - 0.1700787f, 0.45684233f, 0.1495722f, 0.42734373f, 0.4433832f, 0.25906256f, - 0.03854987f, 0.47480518f, 0.37215272f, 0.99890584f, 0.74019486f, 0.3518967f, - 0.6881257f, 0.8170279f, 0.54088944f, 0.81225616f, 0.14619833f, 0.42941234f, - 0.86843914f, 0.45967972f, 0.6237719f, 0.11074839f, 0.6029616f, 0.3149305f, - 0.46504205f, 0.5843412f, 0.8733427f, 0.7687243f, 0.07074859f, 0.39188156f})) - .H_t(reference_tests::Tensor(ET, {2, 3}, std::vector{ - 0.77956f, 0.5331557f, 0.04297554f, 0.7962175f, 0.7635707f, 0.11989366f})) - .C_t(reference_tests::Tensor(ET, {2, 3}, std::vector{ - 0.8488452f, 0.18851636f, 0.5020695f, 0.29716516f, 0.06740791f, 0.45384037f})) - .B(reference_tests::Tensor(ET, {4 * 3}, std::vector{1.07393714f, - 1.15248052f, - 1.16671345f, - 0.21450312f, - 1.2380678f, - 1.51688835f, - 0.46718366f, - 0.91810346f, - 1.1274234f, - 0.51022074f, - 1.11389844f, - 0.74174305f})) - .P(reference_tests::Tensor(ET, {3 * 3}, std::vector(3 * 3, 0.f))) - .Ho(reference_tests::Tensor(ET, {2, 3}, std::vector{0.81014400720596313, - 0.76665538549423218, - 0.82387429475784302, - 0.6479143500328064, - 0.66586339473724365, - 0.74838578701019287})) - .Co(reference_tests::Tensor(ET, {2, 3}, std::vector{1.6800162792205811, - 1.1150213479995728, - 1.4510968923568726, - 1.0649888515472412, - 0.93761754035949707, - 1.3659683465957642})) - .testcaseName("lstm_cell_v1_bias_clip"), + std::vector params{ + Builder{} + .batchSize(2) + .inputSize(3) + .hiddenSize(3) + .gatesCount(4) + .X(reference_tests::Tensor( + ET, + {2, 3}, + std::vector{0.81342685f, 0.84108883f, 0.8152282f, 0.46893653f, 0.0901856f, 0.37088776f})) + .W(reference_tests::Tensor( + ET, + {4 * 3, 3}, + std::vector{ + 3.3330739e-01f, 3.6229487e-04f, 4.6773660e-01f, 4.3046016e-01f, 7.3950343e-02f, 3.8063636e-01f, + 9.6921772e-01f, 9.6897459e-01f, 6.2964785e-01f, 3.1134409e-01f, 8.4709978e-01f, 9.4928098e-01f, + 6.1676943e-01f, 6.6020679e-01f, 1.9072217e-01f, 8.8032126e-02f, 4.0472135e-01f, 6.8342745e-01f, + 8.3432144e-01f, 4.4928190e-01f, 7.9524308e-01f, 5.3966165e-01f, 8.5936421e-01f, 8.3136767e-01f, + 5.5125546e-02f, 4.7791195e-01f, 3.5788772e-01f, 6.7507404e-01f, 2.1716513e-01f, 2.7473119e-01f, + 3.3999152e-02f, 9.6835363e-01f, 3.7581277e-01f, 2.4026000e-01f, 6.7418844e-01f, 3.4199652e-01f})) + .R(reference_tests::Tensor( + ET, + {4 * 3, 3}, + std::vector{0.0987983f, 0.52032113f, 0.5848073f, 0.5356095f, 0.74497133f, 0.73260087f, + 0.1700787f, 0.45684233f, 0.1495722f, 0.42734373f, 0.4433832f, 0.25906256f, + 0.03854987f, 0.47480518f, 0.37215272f, 0.99890584f, 0.74019486f, 0.3518967f, + 0.6881257f, 0.8170279f, 0.54088944f, 0.81225616f, 0.14619833f, 0.42941234f, + 0.86843914f, 0.45967972f, 0.6237719f, 0.11074839f, 0.6029616f, 0.3149305f, + 0.46504205f, 0.5843412f, 0.8733427f, 0.7687243f, 0.07074859f, 0.39188156f})) + .H_t(reference_tests::Tensor( + ET, + {2, 3}, + std::vector{0.77956f, 0.5331557f, 0.04297554f, 0.7962175f, 0.7635707f, 0.11989366f})) + .C_t(reference_tests::Tensor( + ET, + {2, 3}, + std::vector{0.8488452f, 0.18851636f, 0.5020695f, 0.29716516f, 0.06740791f, 0.45384037f})) + .B(reference_tests::Tensor(ET, + {4 * 3}, + std::vector{1.07393714f, + 1.15248052f, + 1.16671345f, + 0.21450312f, + 1.2380678f, + 1.51688835f, + 0.46718366f, + 0.91810346f, + 1.1274234f, + 0.51022074f, + 1.11389844f, + 0.74174305f})) + .P(reference_tests::Tensor(ET, {3 * 3}, std::vector(3 * 3, 0.f))) + .Ho(reference_tests::Tensor(ET, + {2, 3}, + std::vector{0.81014400720596313, + 0.76665538549423218, + 0.82387429475784302, + 0.6479143500328064, + 0.66586339473724365, + 0.74838578701019287})) + .Co(reference_tests::Tensor(ET, + {2, 3}, + std::vector{1.6800162792205811, + 1.1150213479995728, + 1.4510968923568726, + 1.0649888515472412, + 0.93761754035949707, + 1.3659683465957642})) + .testcaseName("lstm_cell_v1_bias_clip"), }; return params; } std::vector generateCombinedParamsBiasClipV1() { - const std::vector> generatedParams { + const std::vector> generatedParams{ generateParamsBiasClipV1(), generateParamsBiasClipV1(), generateParamsBiasClipV1(), @@ -703,12 +813,18 @@ std::vector generateCombinedParamsBiasClipV1() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_LSTMCellV1_With_Hardcoded_Refs, ReferenceLSTMCellV1Test, - testing::ValuesIn(generateCombinedParamsV1()), ReferenceLSTMCellV1Test::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_LSTMCellV1_With_Hardcoded_Refs, + ReferenceLSTMCellV1Test, + testing::ValuesIn(generateCombinedParamsV1()), + ReferenceLSTMCellV1Test::getTestCaseName); -INSTANTIATE_TEST_SUITE_P(smoke_LSTMCellV1_With_Hardcoded_Refs, ReferenceLSTMCellV1TestBiasDefaultAttrs, - testing::ValuesIn(generateCombinedParamsBiasDefaultAttrsV1()), ReferenceLSTMCellV1Test::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_LSTMCellV1_With_Hardcoded_Refs, + ReferenceLSTMCellV1TestBiasDefaultAttrs, + testing::ValuesIn(generateCombinedParamsBiasDefaultAttrsV1()), + ReferenceLSTMCellV1Test::getTestCaseName); -INSTANTIATE_TEST_SUITE_P(smoke_LSTMCellV1_With_Hardcoded_Refs, ReferenceLSTMCellV1TestBiasClip, - testing::ValuesIn(generateCombinedParamsBiasClipV1()), ReferenceLSTMCellV1Test::getTestCaseName); -} // namespace +INSTANTIATE_TEST_SUITE_P(smoke_LSTMCellV1_With_Hardcoded_Refs, + ReferenceLSTMCellV1TestBiasClip, + testing::ValuesIn(generateCombinedParamsBiasClipV1()), + ReferenceLSTMCellV1Test::getTestCaseName); +} // namespace diff --git a/src/plugins/template/tests/functional/op_reference/lstm_sequence.cpp b/src/plugins/template/tests/functional/op_reference/lstm_sequence.cpp index 027dddf4572..9e13293e9ab 100644 --- a/src/plugins/template/tests/functional/op_reference/lstm_sequence.cpp +++ b/src/plugins/template/tests/functional/op_reference/lstm_sequence.cpp @@ -2,9 +2,10 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/lstm_sequence.hpp" + #include -#include "openvino/op/lstm_sequence.hpp" #include "base_reference_test.hpp" using namespace reference_tests; @@ -13,42 +14,57 @@ using namespace ov; namespace { struct LSTMSequenceParams { template - LSTMSequenceParams( - const size_t batchSize, const size_t inputSize, const size_t hiddenSize, const size_t seqLength, - const float clip, const op::RecurrentSequenceDirection& lstm_direction, - const element::Type_t& iType, - const std::vector& XValues, const std::vector& H_tValues, const std::vector& C_tValues, - const std::vector& S_tValues, - const std::vector& WValues, const std::vector& RValues, const std::vector& BValues, - const std::vector& YValues, const std::vector& HoValues, const std::vector& CoValues, - const std::string& testcaseName = "") : - batchSize(batchSize), inputSize(inputSize), hiddenSize(hiddenSize), seqLength(seqLength), - clip(clip), lstm_direction(lstm_direction), iType(iType), oType(iType), - testcaseName(testcaseName) { - numDirections = (lstm_direction == op::RecurrentSequenceDirection::BIDIRECTIONAL) ? 2 : 1; + LSTMSequenceParams(const size_t batchSize, + const size_t inputSize, + const size_t hiddenSize, + const size_t seqLength, + const float clip, + const op::RecurrentSequenceDirection& lstm_direction, + const element::Type_t& iType, + const std::vector& XValues, + const std::vector& H_tValues, + const std::vector& C_tValues, + const std::vector& S_tValues, + const std::vector& WValues, + const std::vector& RValues, + const std::vector& BValues, + const std::vector& YValues, + const std::vector& HoValues, + const std::vector& CoValues, + const std::string& testcaseName = "") + : batchSize(batchSize), + inputSize(inputSize), + hiddenSize(hiddenSize), + seqLength(seqLength), + clip(clip), + lstm_direction(lstm_direction), + iType(iType), + oType(iType), + testcaseName(testcaseName) { + numDirections = (lstm_direction == op::RecurrentSequenceDirection::BIDIRECTIONAL) ? 2 : 1; - Shape XShape = Shape{batchSize, seqLength, inputSize}; - Shape H_tShape = Shape{batchSize, numDirections, hiddenSize}; - Shape C_tShape = Shape{batchSize, numDirections, hiddenSize}; - Shape S_tShape = Shape{batchSize}; - Shape WShape = Shape{numDirections, 4 * hiddenSize, inputSize}; - Shape RShape = Shape{numDirections, 4 * hiddenSize, hiddenSize}; - Shape BShape = Shape{numDirections, 4 * hiddenSize}; - Shape YShape = Shape{batchSize, numDirections, seqLength, hiddenSize}; - Shape HoShape = Shape{batchSize, numDirections, hiddenSize}; - Shape CoShape = Shape{batchSize, numDirections, hiddenSize}; + Shape XShape = Shape{batchSize, seqLength, inputSize}; + Shape H_tShape = Shape{batchSize, numDirections, hiddenSize}; + Shape C_tShape = Shape{batchSize, numDirections, hiddenSize}; + Shape S_tShape = Shape{batchSize}; + Shape WShape = Shape{numDirections, 4 * hiddenSize, inputSize}; + Shape RShape = Shape{numDirections, 4 * hiddenSize, hiddenSize}; + Shape BShape = Shape{numDirections, 4 * hiddenSize}; + Shape YShape = Shape{batchSize, numDirections, seqLength, hiddenSize}; + Shape HoShape = Shape{batchSize, numDirections, hiddenSize}; + Shape CoShape = Shape{batchSize, numDirections, hiddenSize}; - X = reference_tests::Tensor(XShape, iType, XValues); - H_t = reference_tests::Tensor(H_tShape, iType, H_tValues); - C_t = reference_tests::Tensor(C_tShape, iType, C_tValues); - S_t = reference_tests::Tensor(S_tShape, element::Type_t::i64, S_tValues); - W = reference_tests::Tensor(WShape, iType, WValues); - R = reference_tests::Tensor(RShape, iType, RValues); - B = reference_tests::Tensor(BShape, iType, BValues); - Y = reference_tests::Tensor(YShape, oType, YValues); - Ho = reference_tests::Tensor(HoShape, oType, HoValues); - Co = reference_tests::Tensor(CoShape, oType, CoValues); - } + X = reference_tests::Tensor(XShape, iType, XValues); + H_t = reference_tests::Tensor(H_tShape, iType, H_tValues); + C_t = reference_tests::Tensor(C_tShape, iType, C_tValues); + S_t = reference_tests::Tensor(S_tShape, element::Type_t::i64, S_tValues); + W = reference_tests::Tensor(WShape, iType, WValues); + R = reference_tests::Tensor(RShape, iType, RValues); + B = reference_tests::Tensor(BShape, iType, BValues); + Y = reference_tests::Tensor(YShape, oType, YValues); + Ho = reference_tests::Tensor(HoShape, oType, HoValues); + Co = reference_tests::Tensor(CoShape, oType, CoValues); + } size_t batchSize; size_t inputSize; @@ -75,44 +91,62 @@ struct LSTMSequenceParams { struct LSTMSequenceV1Params { template - LSTMSequenceV1Params( - const size_t batchSize, const size_t inputSize, const size_t hiddenSize, const size_t seqLength, - const float clip, const bool input_forget, const op::RecurrentSequenceDirection& lstm_direction, - const element::Type_t& iType, - const std::vector& XValues, const std::vector& H_tValues, const std::vector& C_tValues, - const std::vector& S_tValues, - const std::vector& WValues, const std::vector& RValues, const std::vector& BValues, const std::vector& PValues, - const std::vector& YValues, const std::vector& HoValues, const std::vector& CoValues, - const std::string& testcaseName = "") : - batchSize(batchSize), inputSize(inputSize), hiddenSize(hiddenSize), seqLength(seqLength), - clip(clip), input_forget(input_forget), lstm_direction(lstm_direction), iType(iType), oType(iType), - testcaseName(testcaseName) { - numDirections = (lstm_direction == op::RecurrentSequenceDirection::BIDIRECTIONAL) ? 2 : 1; + LSTMSequenceV1Params(const size_t batchSize, + const size_t inputSize, + const size_t hiddenSize, + const size_t seqLength, + const float clip, + const bool input_forget, + const op::RecurrentSequenceDirection& lstm_direction, + const element::Type_t& iType, + const std::vector& XValues, + const std::vector& H_tValues, + const std::vector& C_tValues, + const std::vector& S_tValues, + const std::vector& WValues, + const std::vector& RValues, + const std::vector& BValues, + const std::vector& PValues, + const std::vector& YValues, + const std::vector& HoValues, + const std::vector& CoValues, + const std::string& testcaseName = "") + : batchSize(batchSize), + inputSize(inputSize), + hiddenSize(hiddenSize), + seqLength(seqLength), + clip(clip), + input_forget(input_forget), + lstm_direction(lstm_direction), + iType(iType), + oType(iType), + testcaseName(testcaseName) { + numDirections = (lstm_direction == op::RecurrentSequenceDirection::BIDIRECTIONAL) ? 2 : 1; - Shape XShape = Shape{batchSize, seqLength, inputSize}; - Shape H_tShape = Shape{batchSize, numDirections, hiddenSize}; - Shape C_tShape = Shape{batchSize, numDirections, hiddenSize}; - Shape S_tShape = Shape{batchSize}; - Shape WShape = Shape{numDirections, 4 * hiddenSize, inputSize}; - Shape RShape = Shape{numDirections, 4 * hiddenSize, hiddenSize}; - Shape BShape = Shape{numDirections, 4 * hiddenSize}; - Shape PShape = Shape{numDirections, 3 * hiddenSize}; - Shape YShape = Shape{batchSize, numDirections, seqLength, hiddenSize}; - Shape HoShape = Shape{batchSize, numDirections, hiddenSize}; - Shape CoShape = Shape{batchSize, numDirections, hiddenSize}; + Shape XShape = Shape{batchSize, seqLength, inputSize}; + Shape H_tShape = Shape{batchSize, numDirections, hiddenSize}; + Shape C_tShape = Shape{batchSize, numDirections, hiddenSize}; + Shape S_tShape = Shape{batchSize}; + Shape WShape = Shape{numDirections, 4 * hiddenSize, inputSize}; + Shape RShape = Shape{numDirections, 4 * hiddenSize, hiddenSize}; + Shape BShape = Shape{numDirections, 4 * hiddenSize}; + Shape PShape = Shape{numDirections, 3 * hiddenSize}; + Shape YShape = Shape{batchSize, numDirections, seqLength, hiddenSize}; + Shape HoShape = Shape{batchSize, numDirections, hiddenSize}; + Shape CoShape = Shape{batchSize, numDirections, hiddenSize}; - X = reference_tests::Tensor(XShape, iType, XValues); - H_t = reference_tests::Tensor(H_tShape, iType, H_tValues); - C_t = reference_tests::Tensor(C_tShape, iType, C_tValues); - S_t = reference_tests::Tensor(S_tShape, element::Type_t::i64, S_tValues); - W = reference_tests::Tensor(WShape, iType, WValues); - R = reference_tests::Tensor(RShape, iType, RValues); - B = reference_tests::Tensor(BShape, iType, BValues); - P = reference_tests::Tensor(PShape, iType, PValues); - Y = reference_tests::Tensor(YShape, oType, YValues); - Ho = reference_tests::Tensor(HoShape, oType, HoValues); - Co = reference_tests::Tensor(CoShape, oType, CoValues); - } + X = reference_tests::Tensor(XShape, iType, XValues); + H_t = reference_tests::Tensor(H_tShape, iType, H_tValues); + C_t = reference_tests::Tensor(C_tShape, iType, C_tValues); + S_t = reference_tests::Tensor(S_tShape, element::Type_t::i64, S_tValues); + W = reference_tests::Tensor(WShape, iType, WValues); + R = reference_tests::Tensor(RShape, iType, RValues); + B = reference_tests::Tensor(BShape, iType, BValues); + P = reference_tests::Tensor(PShape, iType, PValues); + Y = reference_tests::Tensor(YShape, oType, YValues); + Ho = reference_tests::Tensor(HoShape, oType, HoValues); + Co = reference_tests::Tensor(CoShape, oType, CoValues); + } size_t batchSize; size_t inputSize; @@ -144,7 +178,13 @@ public: void SetUp() override { auto params = GetParam(); function = CreateFunction(params); - inputData = {params.X.data, params.H_t.data, params.C_t.data, params.S_t.data, params.W.data, params.R.data, params.B.data}; + inputData = {params.X.data, + params.H_t.data, + params.C_t.data, + params.S_t.data, + params.W.data, + params.R.data, + params.B.data}; refOutData = {params.Y.data, params.Ho.data, params.Co.data}; } @@ -205,7 +245,14 @@ public: void SetUp() override { auto params = GetParam(); function = CreateFunction(params); - inputData = {params.X.data, params.H_t.data, params.C_t.data, params.S_t.data, params.W.data, params.R.data, params.B.data, params.P.data}; + inputData = {params.X.data, + params.H_t.data, + params.C_t.data, + params.S_t.data, + params.W.data, + params.R.data, + params.B.data, + params.P.data}; refOutData = {params.Y.data, params.Ho.data, params.Co.data}; } @@ -262,7 +309,8 @@ private: params.clip, params.input_forget); - auto function = std::make_shared(lstm_sequence->outputs(), ParameterVector{X, H_t, C_t, S_t, W, R, B, P}); + auto function = + std::make_shared(lstm_sequence->outputs(), ParameterVector{X, H_t, C_t, S_t, W, R, B, P}); return function; } }; @@ -279,815 +327,970 @@ template std::vector generateParams() { using T = typename element_type_traits::value_type; - std::vector params { + std::vector params{ LSTMSequenceParams( - 5, 10, 10, 10, - 0.7f, op::RecurrentSequenceDirection::FORWARD, + 5, + 10, + 10, + 10, + 0.7f, + op::RecurrentSequenceDirection::FORWARD, ET, std::vector{ - 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, - 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, - 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, - 7.03475, 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, - 6.61627, 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 2.07541, - 5.72319, 1.75261, 9.25175, 9.19404, 3.69037, 6.2595, 6.09321, 6.52544, 9.60882, 3.34881, - 3.07914, 5.80104, 9.54944, 5.43754, 5.8654, 7.88937, 1.40811, 2.2597, 8.13163, 1.26821, - 8.94813, 5.86709, 5.03182, 9.02922, 4.39826, 5.84582, 6.87069, 4.25135, 6.13908, 6.74053, - 2.13683, 7.21184, 6.82974, 4.18545, 7.8691, 4.20879, 7.77509, 8.93208, 1.10502, 5.48298, - 1.66413, 8.08256, 1.57661, 4.19779, 9.47653, 4.41823, 7.86628, 7.94436, 3.71224, 7.95465, - 2.37637, 6.20771, 1.08107, 7.38138, 5.23577, 7.88133, 5.20653, 3.42101, 8.48523, 5.96192, - 1.63073, 5.25228, 7.68488, 2.7276, 5.1788, 3.07327, 5.57423, 2.87711, 1.44374, 5.66976, - 2.55051, 4.56682, 1.96629, 5.58829, 1.91922, 3.59846, 3.08583, 9.70901, 3.50487, 3.1026, - 1.82401, 6.1306, 4.76134, 4.31059, 8.31695, 3.60784, 7.45652, 6.51653, 4.84219, 7.76686, - 4.85031, 4.85544, 4.25714, 2.38005, 9.43471, 9.24769, 8.03763, 6.54696, 1.32399, 6.88891, - 2.16793, 3.64924, 4.24733, 3.47181, 1.66572, 2.36923, 2.45457, 9.44841, 4.34021, 1.45016, - 7.6686, 3.68812, 2.83922, 9.83581, 9.03719, 7.83414, 6.86009, 1.35715, 8.32489, 7.86316, - 5.09754, 5.78644, 1.98402, 2.31429, 5.5791, 2.94085, 9.24799, 5.15937, 2.19041, 7.87817, - 2.9146, 1.66833, 1.85877, 2.45985, 4.20817, 1.85777, 2.28937, 9.37912, 6.18926, 8.55681, - 6.60963, 3.92066, 7.5521, 5.70463, 7.6313, 2.48866, 7.18352, 4.8413, 7.55702, 7.80702, - 4.5785, 9.3268, 2.83159, 1.07202, 9.33716, 3.6506, 2.50256, 1.21691, 5.06801, 8.27505, - 4.31539, 6.48286, 1.31363, 4.1912, 1.70668, 7.23867, 1.11441, 5.13591, 9.65186, 4.00767, - 5.24875, 1.94852, 5.52768, 8.97121, 5.8094, 3.53329, 4.19126, 9.06652, 3.1734, 1.21496, - 9.69154, 4.86971, 4.1166, 6.19361, 2.13874, 9.55039, 3.8225, 9.57548, 2.96554, 3.2383, - 8.77422, 3.11741, 8.3359, 5.89508, 2.72134, 6.29956, 1.43323, 1.14286, 1.4474, 4.59474, - 6.19214, 8.80766, 8.07546, 3.29232, 1.74029, 2.4198, 2.88544, 4.75644, 4.12921, 7.29896, - 7.27759, 1.67252, 1.32823, 8.1046, 9.10476, 1.04197, 3.37783, 5.2064, 4.23835, 3.16196, - 1.20852, 5.78501, 2.17175, 6.05313, 2.51048, 4.78967, 7.16219, 3.4651, 1.09, 2.9788, - 1.28761, 9.41385, 8.03883, 5.65835, 1.14816, 3.6892, 5.86648, 8.73895, 2.66603, 1.75192, - 1.39845, 4.99427, 1.17387, 1.60329, 8.30594, 6.72662, 7.95565, 7.35114, 3.1439, 1.39976, - 3.53095, 8.78581, 1.65811, 6.94299, 2.68641, 5.70058, 9.13491, 5.27637, 8.6232, 8.54902, - 2.25352, 5.86274, 5.20377, 2.96815, 4.96745, 5.3225, 3.99956, 1.08021, 5.54918, 7.05833, - 1.49913, 2.41822, 6.44593, 3.87301, 9.01465, 8.11336, 2.95749, 2.80188, 7.12396, 2.40595, - 5.59325, 9.89258, 2.30223, 1.4347, 9.09158, 7.43797, 3.79295, 4.53646, 1.72705, 4.16909, - 1.00912, 6.62167, 2.80244, 6.626, 3.89307, 1.42586, 7.51028, 7.83327, 4.65674, 7.33902, - 6.26823, 9.72608, 3.73491, 3.8238, 3.03815, 7.05101, 8.0103, 5.61396, 6.53738, 1.41095, - 5.0149, 9.71211, 4.23604, 5.98629, 4.70219, 9.69442, 2.82752, 9.93544, 6.9328, 8.2817, - 5.12336, 8.98577, 5.80541, 6.19552, 9.25748, 3.82732, 7.53525, 8.24712, 5.32057, 5.38817, - 8.57269, 5.99975, 3.42893, 5.38068, 3.48261, 3.02851, 6.82079, 9.2902, 2.80427, 8.91868, - 5.19227, 7.52482, 3.72584, 5.40107, 2.83307, 1.79755, 2.49121, 5.52697, 8.08823, 9.13242, - 2.97572, 7.64318, 3.32023, 6.07788, 2.19187, 4.34879, 1.7457, 5.55154, 7.24966, 5.1128, - 4.25147, 8.34407, 1.4123, 4.49045, 5.12671, 7.62159, 9.18673, 3.49665, 8.35992, 6.90684, - 1.10152, 7.61818, 6.43145, 7.12017, 6.25564, 6.16169, 4.24916, 9.6283, 9.88249, 4.48422, - 8.52562, 9.83928, 6.26818, 7.03839, 1.77631, 9.92305, 8.0155, 9.94928, 6.88321, 1.33685, - 7.4718, 7.19305, 6.47932, 1.9559, 3.52616, 7.98593, 9.0115, 5.59539, 7.44137, 1.70001, - 6.53774, 8.54023, 7.26405, 5.99553, 8.75071, 7.70789, 3.38094, 9.99792, 6.16359, 6.75153, - 5.4073, 9.00437, 8.87059, 8.63011, 6.82951, 6.27021, 3.53425, 9.92489, 8.19695, 5.51473, - 7.95084, 2.11852, 9.28916, 1.40353, 3.05744, 8.58238, 3.75014, 5.35889, 6.85048, 2.29549, - 3.75218, 8.98228, 8.98158, 5.63695, 3.40379, 8.92309, 5.48185, 4.00095, 9.05227, 2.84035, - 8.37644, 8.54954, 5.70516, 2.45744, 9.54079, 1.53504, 8.9785, 6.1691, 4.40962, 10}, - std::vector{ - 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, - 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, - 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, - 7.03475, 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, - 6.61627, 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 10}, - std::vector{ - 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, - 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, - 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, - 7.03475, 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, - 6.61627, 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 10}, + 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, 8.6168, + 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, 8.0055, 7.44373, + 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, 7.03475, 6.33759, 7.04489, + 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, 6.61627, 6.94572, 3.68646, 5.01521, + 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 2.07541, 5.72319, 1.75261, 9.25175, 9.19404, 3.69037, + 6.2595, 6.09321, 6.52544, 9.60882, 3.34881, 3.07914, 5.80104, 9.54944, 5.43754, 5.8654, 7.88937, + 1.40811, 2.2597, 8.13163, 1.26821, 8.94813, 5.86709, 5.03182, 9.02922, 4.39826, 5.84582, 6.87069, + 4.25135, 6.13908, 6.74053, 2.13683, 7.21184, 6.82974, 4.18545, 7.8691, 4.20879, 7.77509, 8.93208, + 1.10502, 5.48298, 1.66413, 8.08256, 1.57661, 4.19779, 9.47653, 4.41823, 7.86628, 7.94436, 3.71224, + 7.95465, 2.37637, 6.20771, 1.08107, 7.38138, 5.23577, 7.88133, 5.20653, 3.42101, 8.48523, 5.96192, + 1.63073, 5.25228, 7.68488, 2.7276, 5.1788, 3.07327, 5.57423, 2.87711, 1.44374, 5.66976, 2.55051, + 4.56682, 1.96629, 5.58829, 1.91922, 3.59846, 3.08583, 9.70901, 3.50487, 3.1026, 1.82401, 6.1306, + 4.76134, 4.31059, 8.31695, 3.60784, 7.45652, 6.51653, 4.84219, 7.76686, 4.85031, 4.85544, 4.25714, + 2.38005, 9.43471, 9.24769, 8.03763, 6.54696, 1.32399, 6.88891, 2.16793, 3.64924, 4.24733, 3.47181, + 1.66572, 2.36923, 2.45457, 9.44841, 4.34021, 1.45016, 7.6686, 3.68812, 2.83922, 9.83581, 9.03719, + 7.83414, 6.86009, 1.35715, 8.32489, 7.86316, 5.09754, 5.78644, 1.98402, 2.31429, 5.5791, 2.94085, + 9.24799, 5.15937, 2.19041, 7.87817, 2.9146, 1.66833, 1.85877, 2.45985, 4.20817, 1.85777, 2.28937, + 9.37912, 6.18926, 8.55681, 6.60963, 3.92066, 7.5521, 5.70463, 7.6313, 2.48866, 7.18352, 4.8413, + 7.55702, 7.80702, 4.5785, 9.3268, 2.83159, 1.07202, 9.33716, 3.6506, 2.50256, 1.21691, 5.06801, + 8.27505, 4.31539, 6.48286, 1.31363, 4.1912, 1.70668, 7.23867, 1.11441, 5.13591, 9.65186, 4.00767, + 5.24875, 1.94852, 5.52768, 8.97121, 5.8094, 3.53329, 4.19126, 9.06652, 3.1734, 1.21496, 9.69154, + 4.86971, 4.1166, 6.19361, 2.13874, 9.55039, 3.8225, 9.57548, 2.96554, 3.2383, 8.77422, 3.11741, + 8.3359, 5.89508, 2.72134, 6.29956, 1.43323, 1.14286, 1.4474, 4.59474, 6.19214, 8.80766, 8.07546, + 3.29232, 1.74029, 2.4198, 2.88544, 4.75644, 4.12921, 7.29896, 7.27759, 1.67252, 1.32823, 8.1046, + 9.10476, 1.04197, 3.37783, 5.2064, 4.23835, 3.16196, 1.20852, 5.78501, 2.17175, 6.05313, 2.51048, + 4.78967, 7.16219, 3.4651, 1.09, 2.9788, 1.28761, 9.41385, 8.03883, 5.65835, 1.14816, 3.6892, + 5.86648, 8.73895, 2.66603, 1.75192, 1.39845, 4.99427, 1.17387, 1.60329, 8.30594, 6.72662, 7.95565, + 7.35114, 3.1439, 1.39976, 3.53095, 8.78581, 1.65811, 6.94299, 2.68641, 5.70058, 9.13491, 5.27637, + 8.6232, 8.54902, 2.25352, 5.86274, 5.20377, 2.96815, 4.96745, 5.3225, 3.99956, 1.08021, 5.54918, + 7.05833, 1.49913, 2.41822, 6.44593, 3.87301, 9.01465, 8.11336, 2.95749, 2.80188, 7.12396, 2.40595, + 5.59325, 9.89258, 2.30223, 1.4347, 9.09158, 7.43797, 3.79295, 4.53646, 1.72705, 4.16909, 1.00912, + 6.62167, 2.80244, 6.626, 3.89307, 1.42586, 7.51028, 7.83327, 4.65674, 7.33902, 6.26823, 9.72608, + 3.73491, 3.8238, 3.03815, 7.05101, 8.0103, 5.61396, 6.53738, 1.41095, 5.0149, 9.71211, 4.23604, + 5.98629, 4.70219, 9.69442, 2.82752, 9.93544, 6.9328, 8.2817, 5.12336, 8.98577, 5.80541, 6.19552, + 9.25748, 3.82732, 7.53525, 8.24712, 5.32057, 5.38817, 8.57269, 5.99975, 3.42893, 5.38068, 3.48261, + 3.02851, 6.82079, 9.2902, 2.80427, 8.91868, 5.19227, 7.52482, 3.72584, 5.40107, 2.83307, 1.79755, + 2.49121, 5.52697, 8.08823, 9.13242, 2.97572, 7.64318, 3.32023, 6.07788, 2.19187, 4.34879, 1.7457, + 5.55154, 7.24966, 5.1128, 4.25147, 8.34407, 1.4123, 4.49045, 5.12671, 7.62159, 9.18673, 3.49665, + 8.35992, 6.90684, 1.10152, 7.61818, 6.43145, 7.12017, 6.25564, 6.16169, 4.24916, 9.6283, 9.88249, + 4.48422, 8.52562, 9.83928, 6.26818, 7.03839, 1.77631, 9.92305, 8.0155, 9.94928, 6.88321, 1.33685, + 7.4718, 7.19305, 6.47932, 1.9559, 3.52616, 7.98593, 9.0115, 5.59539, 7.44137, 1.70001, 6.53774, + 8.54023, 7.26405, 5.99553, 8.75071, 7.70789, 3.38094, 9.99792, 6.16359, 6.75153, 5.4073, 9.00437, + 8.87059, 8.63011, 6.82951, 6.27021, 3.53425, 9.92489, 8.19695, 5.51473, 7.95084, 2.11852, 9.28916, + 1.40353, 3.05744, 8.58238, 3.75014, 5.35889, 6.85048, 2.29549, 3.75218, 8.98228, 8.98158, 5.63695, + 3.40379, 8.92309, 5.48185, 4.00095, 9.05227, 2.84035, 8.37644, 8.54954, 5.70516, 2.45744, 9.54079, + 1.53504, 8.9785, 6.1691, 4.40962, 10}, + std::vector{1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, + 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, + 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, + 7.03475, 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, + 6.61627, 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 10}, + std::vector{1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, + 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, + 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, + 7.03475, 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, + 6.61627, 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 10}, std::vector{10, 10, 10, 10, 10}, std::vector{ - 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, - 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, - 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, - 7.03475, 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, - 6.61627, 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 2.07541, - 5.72319, 1.75261, 9.25175, 9.19404, 3.69037, 6.2595, 6.09321, 6.52544, 9.60882, 3.34881, - 3.07914, 5.80104, 9.54944, 5.43754, 5.8654, 7.88937, 1.40811, 2.2597, 8.13163, 1.26821, - 8.94813, 5.86709, 5.03182, 9.02922, 4.39826, 5.84582, 6.87069, 4.25135, 6.13908, 6.74053, - 2.13683, 7.21184, 6.82974, 4.18545, 7.8691, 4.20879, 7.77509, 8.93208, 1.10502, 5.48298, - 1.66413, 8.08256, 1.57661, 4.19779, 9.47653, 4.41823, 7.86628, 7.94436, 3.71224, 7.95465, - 2.37637, 6.20771, 1.08107, 7.38138, 5.23577, 7.88133, 5.20653, 3.42101, 8.48523, 5.96192, - 1.63073, 5.25228, 7.68488, 2.7276, 5.1788, 3.07327, 5.57423, 2.87711, 1.44374, 5.66976, - 2.55051, 4.56682, 1.96629, 5.58829, 1.91922, 3.59846, 3.08583, 9.70901, 3.50487, 3.1026, - 1.82401, 6.1306, 4.76134, 4.31059, 8.31695, 3.60784, 7.45652, 6.51653, 4.84219, 7.76686, - 4.85031, 4.85544, 4.25714, 2.38005, 9.43471, 9.24769, 8.03763, 6.54696, 1.32399, 6.88891, - 2.16793, 3.64924, 4.24733, 3.47181, 1.66572, 2.36923, 2.45457, 9.44841, 4.34021, 1.45016, - 7.6686, 3.68812, 2.83922, 9.83581, 9.03719, 7.83414, 6.86009, 1.35715, 8.32489, 7.86316, - 5.09754, 5.78644, 1.98402, 2.31429, 5.5791, 2.94085, 9.24799, 5.15937, 2.19041, 7.87817, - 2.9146, 1.66833, 1.85877, 2.45985, 4.20817, 1.85777, 2.28937, 9.37912, 6.18926, 8.55681, - 6.60963, 3.92066, 7.5521, 5.70463, 7.6313, 2.48866, 7.18352, 4.8413, 7.55702, 7.80702, - 4.5785, 9.3268, 2.83159, 1.07202, 9.33716, 3.6506, 2.50256, 1.21691, 5.06801, 8.27505, - 4.31539, 6.48286, 1.31363, 4.1912, 1.70668, 7.23867, 1.11441, 5.13591, 9.65186, 4.00767, - 5.24875, 1.94852, 5.52768, 8.97121, 5.8094, 3.53329, 4.19126, 9.06652, 3.1734, 1.21496, - 9.69154, 4.86971, 4.1166, 6.19361, 2.13874, 9.55039, 3.8225, 9.57548, 2.96554, 3.2383, - 8.77422, 3.11741, 8.3359, 5.89508, 2.72134, 6.29956, 1.43323, 1.14286, 1.4474, 4.59474, - 6.19214, 8.80766, 8.07546, 3.29232, 1.74029, 2.4198, 2.88544, 4.75644, 4.12921, 7.29896, - 7.27759, 1.67252, 1.32823, 8.1046, 9.10476, 1.04197, 3.37783, 5.2064, 4.23835, 3.16196, - 1.20852, 5.78501, 2.17175, 6.05313, 2.51048, 4.78967, 7.16219, 3.4651, 1.09, 2.9788, - 1.28761, 9.41385, 8.03883, 5.65835, 1.14816, 3.6892, 5.86648, 8.73895, 2.66603, 1.75192, - 1.39845, 4.99427, 1.17387, 1.60329, 8.30594, 6.72662, 7.95565, 7.35114, 3.1439, 1.39976, - 3.53095, 8.78581, 1.65811, 6.94299, 2.68641, 5.70058, 9.13491, 5.27637, 8.6232, 8.54902, - 2.25352, 5.86274, 5.20377, 2.96815, 4.96745, 5.3225, 3.99956, 1.08021, 5.54918, 7.05833, - 1.49913, 2.41822, 6.44593, 3.87301, 9.01465, 8.11336, 2.95749, 2.80188, 7.12396, 2.40595, - 5.59325, 9.89258, 2.30223, 1.4347, 9.09158, 7.43797, 3.79295, 4.53646, 1.72705, 4.16909, - 1.00912, 6.62167, 2.80244, 6.626, 3.89307, 1.42586, 7.51028, 7.83327, 4.65674, 7.33902, - 6.26823, 9.72608, 3.73491, 3.8238, 3.03815, 7.05101, 8.0103, 5.61396, 6.53738, 1.41095, - 5.0149, 9.71211, 4.23604, 5.98629, 4.70219, 9.69442, 2.82752, 9.93544, 6.9328, 8.2817, - 5.12336, 8.98577, 5.80541, 6.19552, 9.25748, 3.82732, 7.53525, 8.24712, 5.32057, 5.38817, - 8.57269, 5.99975, 3.42893, 5.38068, 3.48261, 3.02851, 6.82079, 9.2902, 2.80427, 8.91868, - 5.19227, 7.52482, 3.72584, 5.40107, 2.83307, 1.79755, 2.49121, 5.52697, 8.08823, 10}, + 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, 8.6168, + 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, 8.0055, 7.44373, + 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, 7.03475, 6.33759, 7.04489, + 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, 6.61627, 6.94572, 3.68646, 5.01521, + 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 2.07541, 5.72319, 1.75261, 9.25175, 9.19404, 3.69037, + 6.2595, 6.09321, 6.52544, 9.60882, 3.34881, 3.07914, 5.80104, 9.54944, 5.43754, 5.8654, 7.88937, + 1.40811, 2.2597, 8.13163, 1.26821, 8.94813, 5.86709, 5.03182, 9.02922, 4.39826, 5.84582, 6.87069, + 4.25135, 6.13908, 6.74053, 2.13683, 7.21184, 6.82974, 4.18545, 7.8691, 4.20879, 7.77509, 8.93208, + 1.10502, 5.48298, 1.66413, 8.08256, 1.57661, 4.19779, 9.47653, 4.41823, 7.86628, 7.94436, 3.71224, + 7.95465, 2.37637, 6.20771, 1.08107, 7.38138, 5.23577, 7.88133, 5.20653, 3.42101, 8.48523, 5.96192, + 1.63073, 5.25228, 7.68488, 2.7276, 5.1788, 3.07327, 5.57423, 2.87711, 1.44374, 5.66976, 2.55051, + 4.56682, 1.96629, 5.58829, 1.91922, 3.59846, 3.08583, 9.70901, 3.50487, 3.1026, 1.82401, 6.1306, + 4.76134, 4.31059, 8.31695, 3.60784, 7.45652, 6.51653, 4.84219, 7.76686, 4.85031, 4.85544, 4.25714, + 2.38005, 9.43471, 9.24769, 8.03763, 6.54696, 1.32399, 6.88891, 2.16793, 3.64924, 4.24733, 3.47181, + 1.66572, 2.36923, 2.45457, 9.44841, 4.34021, 1.45016, 7.6686, 3.68812, 2.83922, 9.83581, 9.03719, + 7.83414, 6.86009, 1.35715, 8.32489, 7.86316, 5.09754, 5.78644, 1.98402, 2.31429, 5.5791, 2.94085, + 9.24799, 5.15937, 2.19041, 7.87817, 2.9146, 1.66833, 1.85877, 2.45985, 4.20817, 1.85777, 2.28937, + 9.37912, 6.18926, 8.55681, 6.60963, 3.92066, 7.5521, 5.70463, 7.6313, 2.48866, 7.18352, 4.8413, + 7.55702, 7.80702, 4.5785, 9.3268, 2.83159, 1.07202, 9.33716, 3.6506, 2.50256, 1.21691, 5.06801, + 8.27505, 4.31539, 6.48286, 1.31363, 4.1912, 1.70668, 7.23867, 1.11441, 5.13591, 9.65186, 4.00767, + 5.24875, 1.94852, 5.52768, 8.97121, 5.8094, 3.53329, 4.19126, 9.06652, 3.1734, 1.21496, 9.69154, + 4.86971, 4.1166, 6.19361, 2.13874, 9.55039, 3.8225, 9.57548, 2.96554, 3.2383, 8.77422, 3.11741, + 8.3359, 5.89508, 2.72134, 6.29956, 1.43323, 1.14286, 1.4474, 4.59474, 6.19214, 8.80766, 8.07546, + 3.29232, 1.74029, 2.4198, 2.88544, 4.75644, 4.12921, 7.29896, 7.27759, 1.67252, 1.32823, 8.1046, + 9.10476, 1.04197, 3.37783, 5.2064, 4.23835, 3.16196, 1.20852, 5.78501, 2.17175, 6.05313, 2.51048, + 4.78967, 7.16219, 3.4651, 1.09, 2.9788, 1.28761, 9.41385, 8.03883, 5.65835, 1.14816, 3.6892, + 5.86648, 8.73895, 2.66603, 1.75192, 1.39845, 4.99427, 1.17387, 1.60329, 8.30594, 6.72662, 7.95565, + 7.35114, 3.1439, 1.39976, 3.53095, 8.78581, 1.65811, 6.94299, 2.68641, 5.70058, 9.13491, 5.27637, + 8.6232, 8.54902, 2.25352, 5.86274, 5.20377, 2.96815, 4.96745, 5.3225, 3.99956, 1.08021, 5.54918, + 7.05833, 1.49913, 2.41822, 6.44593, 3.87301, 9.01465, 8.11336, 2.95749, 2.80188, 7.12396, 2.40595, + 5.59325, 9.89258, 2.30223, 1.4347, 9.09158, 7.43797, 3.79295, 4.53646, 1.72705, 4.16909, 1.00912, + 6.62167, 2.80244, 6.626, 3.89307, 1.42586, 7.51028, 7.83327, 4.65674, 7.33902, 6.26823, 9.72608, + 3.73491, 3.8238, 3.03815, 7.05101, 8.0103, 5.61396, 6.53738, 1.41095, 5.0149, 9.71211, 4.23604, + 5.98629, 4.70219, 9.69442, 2.82752, 9.93544, 6.9328, 8.2817, 5.12336, 8.98577, 5.80541, 6.19552, + 9.25748, 3.82732, 7.53525, 8.24712, 5.32057, 5.38817, 8.57269, 5.99975, 3.42893, 5.38068, 3.48261, + 3.02851, 6.82079, 9.2902, 2.80427, 8.91868, 5.19227, 7.52482, 3.72584, 5.40107, 2.83307, 1.79755, + 2.49121, 5.52697, 8.08823, 10}, std::vector{ - 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, - 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, - 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, - 7.03475, 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, - 6.61627, 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 2.07541, - 5.72319, 1.75261, 9.25175, 9.19404, 3.69037, 6.2595, 6.09321, 6.52544, 9.60882, 3.34881, - 3.07914, 5.80104, 9.54944, 5.43754, 5.8654, 7.88937, 1.40811, 2.2597, 8.13163, 1.26821, - 8.94813, 5.86709, 5.03182, 9.02922, 4.39826, 5.84582, 6.87069, 4.25135, 6.13908, 6.74053, - 2.13683, 7.21184, 6.82974, 4.18545, 7.8691, 4.20879, 7.77509, 8.93208, 1.10502, 5.48298, - 1.66413, 8.08256, 1.57661, 4.19779, 9.47653, 4.41823, 7.86628, 7.94436, 3.71224, 7.95465, - 2.37637, 6.20771, 1.08107, 7.38138, 5.23577, 7.88133, 5.20653, 3.42101, 8.48523, 5.96192, - 1.63073, 5.25228, 7.68488, 2.7276, 5.1788, 3.07327, 5.57423, 2.87711, 1.44374, 5.66976, - 2.55051, 4.56682, 1.96629, 5.58829, 1.91922, 3.59846, 3.08583, 9.70901, 3.50487, 3.1026, - 1.82401, 6.1306, 4.76134, 4.31059, 8.31695, 3.60784, 7.45652, 6.51653, 4.84219, 7.76686, - 4.85031, 4.85544, 4.25714, 2.38005, 9.43471, 9.24769, 8.03763, 6.54696, 1.32399, 6.88891, - 2.16793, 3.64924, 4.24733, 3.47181, 1.66572, 2.36923, 2.45457, 9.44841, 4.34021, 1.45016, - 7.6686, 3.68812, 2.83922, 9.83581, 9.03719, 7.83414, 6.86009, 1.35715, 8.32489, 7.86316, - 5.09754, 5.78644, 1.98402, 2.31429, 5.5791, 2.94085, 9.24799, 5.15937, 2.19041, 7.87817, - 2.9146, 1.66833, 1.85877, 2.45985, 4.20817, 1.85777, 2.28937, 9.37912, 6.18926, 8.55681, - 6.60963, 3.92066, 7.5521, 5.70463, 7.6313, 2.48866, 7.18352, 4.8413, 7.55702, 7.80702, - 4.5785, 9.3268, 2.83159, 1.07202, 9.33716, 3.6506, 2.50256, 1.21691, 5.06801, 8.27505, - 4.31539, 6.48286, 1.31363, 4.1912, 1.70668, 7.23867, 1.11441, 5.13591, 9.65186, 4.00767, - 5.24875, 1.94852, 5.52768, 8.97121, 5.8094, 3.53329, 4.19126, 9.06652, 3.1734, 1.21496, - 9.69154, 4.86971, 4.1166, 6.19361, 2.13874, 9.55039, 3.8225, 9.57548, 2.96554, 3.2383, - 8.77422, 3.11741, 8.3359, 5.89508, 2.72134, 6.29956, 1.43323, 1.14286, 1.4474, 4.59474, - 6.19214, 8.80766, 8.07546, 3.29232, 1.74029, 2.4198, 2.88544, 4.75644, 4.12921, 7.29896, - 7.27759, 1.67252, 1.32823, 8.1046, 9.10476, 1.04197, 3.37783, 5.2064, 4.23835, 3.16196, - 1.20852, 5.78501, 2.17175, 6.05313, 2.51048, 4.78967, 7.16219, 3.4651, 1.09, 2.9788, - 1.28761, 9.41385, 8.03883, 5.65835, 1.14816, 3.6892, 5.86648, 8.73895, 2.66603, 1.75192, - 1.39845, 4.99427, 1.17387, 1.60329, 8.30594, 6.72662, 7.95565, 7.35114, 3.1439, 1.39976, - 3.53095, 8.78581, 1.65811, 6.94299, 2.68641, 5.70058, 9.13491, 5.27637, 8.6232, 8.54902, - 2.25352, 5.86274, 5.20377, 2.96815, 4.96745, 5.3225, 3.99956, 1.08021, 5.54918, 7.05833, - 1.49913, 2.41822, 6.44593, 3.87301, 9.01465, 8.11336, 2.95749, 2.80188, 7.12396, 2.40595, - 5.59325, 9.89258, 2.30223, 1.4347, 9.09158, 7.43797, 3.79295, 4.53646, 1.72705, 4.16909, - 1.00912, 6.62167, 2.80244, 6.626, 3.89307, 1.42586, 7.51028, 7.83327, 4.65674, 7.33902, - 6.26823, 9.72608, 3.73491, 3.8238, 3.03815, 7.05101, 8.0103, 5.61396, 6.53738, 1.41095, - 5.0149, 9.71211, 4.23604, 5.98629, 4.70219, 9.69442, 2.82752, 9.93544, 6.9328, 8.2817, - 5.12336, 8.98577, 5.80541, 6.19552, 9.25748, 3.82732, 7.53525, 8.24712, 5.32057, 5.38817, - 8.57269, 5.99975, 3.42893, 5.38068, 3.48261, 3.02851, 6.82079, 9.2902, 2.80427, 8.91868, - 5.19227, 7.52482, 3.72584, 5.40107, 2.83307, 1.79755, 2.49121, 5.52697, 8.08823, 10}, - std::vector{ - 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, - 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, - 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, - 7.03475, 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 10}, + 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, 8.6168, + 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, 8.0055, 7.44373, + 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, 7.03475, 6.33759, 7.04489, + 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, 6.61627, 6.94572, 3.68646, 5.01521, + 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 2.07541, 5.72319, 1.75261, 9.25175, 9.19404, 3.69037, + 6.2595, 6.09321, 6.52544, 9.60882, 3.34881, 3.07914, 5.80104, 9.54944, 5.43754, 5.8654, 7.88937, + 1.40811, 2.2597, 8.13163, 1.26821, 8.94813, 5.86709, 5.03182, 9.02922, 4.39826, 5.84582, 6.87069, + 4.25135, 6.13908, 6.74053, 2.13683, 7.21184, 6.82974, 4.18545, 7.8691, 4.20879, 7.77509, 8.93208, + 1.10502, 5.48298, 1.66413, 8.08256, 1.57661, 4.19779, 9.47653, 4.41823, 7.86628, 7.94436, 3.71224, + 7.95465, 2.37637, 6.20771, 1.08107, 7.38138, 5.23577, 7.88133, 5.20653, 3.42101, 8.48523, 5.96192, + 1.63073, 5.25228, 7.68488, 2.7276, 5.1788, 3.07327, 5.57423, 2.87711, 1.44374, 5.66976, 2.55051, + 4.56682, 1.96629, 5.58829, 1.91922, 3.59846, 3.08583, 9.70901, 3.50487, 3.1026, 1.82401, 6.1306, + 4.76134, 4.31059, 8.31695, 3.60784, 7.45652, 6.51653, 4.84219, 7.76686, 4.85031, 4.85544, 4.25714, + 2.38005, 9.43471, 9.24769, 8.03763, 6.54696, 1.32399, 6.88891, 2.16793, 3.64924, 4.24733, 3.47181, + 1.66572, 2.36923, 2.45457, 9.44841, 4.34021, 1.45016, 7.6686, 3.68812, 2.83922, 9.83581, 9.03719, + 7.83414, 6.86009, 1.35715, 8.32489, 7.86316, 5.09754, 5.78644, 1.98402, 2.31429, 5.5791, 2.94085, + 9.24799, 5.15937, 2.19041, 7.87817, 2.9146, 1.66833, 1.85877, 2.45985, 4.20817, 1.85777, 2.28937, + 9.37912, 6.18926, 8.55681, 6.60963, 3.92066, 7.5521, 5.70463, 7.6313, 2.48866, 7.18352, 4.8413, + 7.55702, 7.80702, 4.5785, 9.3268, 2.83159, 1.07202, 9.33716, 3.6506, 2.50256, 1.21691, 5.06801, + 8.27505, 4.31539, 6.48286, 1.31363, 4.1912, 1.70668, 7.23867, 1.11441, 5.13591, 9.65186, 4.00767, + 5.24875, 1.94852, 5.52768, 8.97121, 5.8094, 3.53329, 4.19126, 9.06652, 3.1734, 1.21496, 9.69154, + 4.86971, 4.1166, 6.19361, 2.13874, 9.55039, 3.8225, 9.57548, 2.96554, 3.2383, 8.77422, 3.11741, + 8.3359, 5.89508, 2.72134, 6.29956, 1.43323, 1.14286, 1.4474, 4.59474, 6.19214, 8.80766, 8.07546, + 3.29232, 1.74029, 2.4198, 2.88544, 4.75644, 4.12921, 7.29896, 7.27759, 1.67252, 1.32823, 8.1046, + 9.10476, 1.04197, 3.37783, 5.2064, 4.23835, 3.16196, 1.20852, 5.78501, 2.17175, 6.05313, 2.51048, + 4.78967, 7.16219, 3.4651, 1.09, 2.9788, 1.28761, 9.41385, 8.03883, 5.65835, 1.14816, 3.6892, + 5.86648, 8.73895, 2.66603, 1.75192, 1.39845, 4.99427, 1.17387, 1.60329, 8.30594, 6.72662, 7.95565, + 7.35114, 3.1439, 1.39976, 3.53095, 8.78581, 1.65811, 6.94299, 2.68641, 5.70058, 9.13491, 5.27637, + 8.6232, 8.54902, 2.25352, 5.86274, 5.20377, 2.96815, 4.96745, 5.3225, 3.99956, 1.08021, 5.54918, + 7.05833, 1.49913, 2.41822, 6.44593, 3.87301, 9.01465, 8.11336, 2.95749, 2.80188, 7.12396, 2.40595, + 5.59325, 9.89258, 2.30223, 1.4347, 9.09158, 7.43797, 3.79295, 4.53646, 1.72705, 4.16909, 1.00912, + 6.62167, 2.80244, 6.626, 3.89307, 1.42586, 7.51028, 7.83327, 4.65674, 7.33902, 6.26823, 9.72608, + 3.73491, 3.8238, 3.03815, 7.05101, 8.0103, 5.61396, 6.53738, 1.41095, 5.0149, 9.71211, 4.23604, + 5.98629, 4.70219, 9.69442, 2.82752, 9.93544, 6.9328, 8.2817, 5.12336, 8.98577, 5.80541, 6.19552, + 9.25748, 3.82732, 7.53525, 8.24712, 5.32057, 5.38817, 8.57269, 5.99975, 3.42893, 5.38068, 3.48261, + 3.02851, 6.82079, 9.2902, 2.80427, 8.91868, 5.19227, 7.52482, 3.72584, 5.40107, 2.83307, 1.79755, + 2.49121, 5.52697, 8.08823, 10}, + std::vector{1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, + 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, + 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, + 7.03475, 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 10}, std::vector{ 0.528016, 0.668187, 0.668186, 0.635471, 0.668187, 0.659096, 0.666861, 0.666715, 0.668138, 0.668186, - 0.53964, 0.668141, 0.668109, 0.619255, 0.668141, 0.647193, 0.662341, 0.661921, 0.667534, 0.66811, - 0.54692, 0.667558, 0.667297, 0.604361, 0.667564, 0.631676, 0.652518, 0.651781, 0.664541, 0.667311, + 0.53964, 0.668141, 0.668109, 0.619255, 0.668141, 0.647193, 0.662341, 0.661921, 0.667534, 0.66811, + 0.54692, 0.667558, 0.667297, 0.604361, 0.667564, 0.631676, 0.652518, 0.651781, 0.664541, 0.667311, 0.551576, 0.664629, 0.663703, 0.592106, 0.664652, 0.615579, 0.638092, 0.637163, 0.656733, 0.663751, 0.554596, 0.656917, 0.655047, 0.582718, 0.656967, 0.601233, 0.621878, 0.620939, 0.643723, 0.65514, 0.556574, 0.643984, 0.641397, 0.575854, 0.644055, 0.589658, 0.606642, 0.605821, 0.627796, 0.641522, 0.557878, 0.628081, 0.625301, 0.570987, 0.628158, 0.580903, 0.593915, 0.593262, 0.611954, 0.625433, 0.558742, 0.612216, 0.609684, 0.567605, 0.612287, 0.574556, 0.584071, 0.583581, 0.598219, 0.609803, - 0.559316, 0.598435, 0.596364, 0.565285, 0.598493, 0.57008, 0.576828, 0.576475, 0.587333, 0.596461, - 0.559698, 0.587499, 0.58592, 0.563707, 0.587544, 0.56698, 0.571671, 0.571423, 0.579197, 0.585993, - 0.668182, 0.66458, 0.667903, 0.667432, 0.658361, 0.667935, 0.668185, 0.667547, 0.667307, 0.668186, - 0.66803, 0.656815, 0.666091, 0.664171, 0.646084, 0.666251, 0.668096, 0.66459, 0.663738, 0.668113, - 0.666772, 0.643839, 0.66026, 0.655973, 0.630413, 0.660667, 0.667203, 0.656835, 0.655116, 0.667328, - 0.662084, 0.627922, 0.649014, 0.642661, 0.614386, 0.649671, 0.663395, 0.643868, 0.64149, 0.663807, - 0.652065, 0.61207, 0.633798, 0.626647, 0.600233, 0.634582, 0.654454, 0.627954, 0.625399, 0.65525, + 0.559316, 0.598435, 0.596364, 0.565285, 0.598493, 0.57008, 0.576828, 0.576475, 0.587333, 0.596461, + 0.559698, 0.587499, 0.58592, 0.563707, 0.587544, 0.56698, 0.571671, 0.571423, 0.579197, 0.585993, + 0.668182, 0.66458, 0.667903, 0.667432, 0.658361, 0.667935, 0.668185, 0.667547, 0.667307, 0.668186, + 0.66803, 0.656815, 0.666091, 0.664171, 0.646084, 0.666251, 0.668096, 0.66459, 0.663738, 0.668113, + 0.666772, 0.643839, 0.66026, 0.655973, 0.630413, 0.660667, 0.667203, 0.656835, 0.655116, 0.667328, + 0.662084, 0.627922, 0.649014, 0.642661, 0.614386, 0.649671, 0.663395, 0.643868, 0.64149, 0.663807, + 0.652065, 0.61207, 0.633798, 0.626647, 0.600233, 0.634582, 0.654454, 0.627954, 0.625399, 0.65525, 0.637519, 0.598314, 0.617618, 0.610903, 0.588883, 0.618381, 0.640604, 0.612099, 0.609772, 0.641672, 0.621298, 0.587406, 0.602959, 0.597357, 0.580333, 0.603611, 0.624467, 0.598338, 0.596436, 0.625592, - 0.606134, 0.57925, 0.591004, 0.586675, 0.57415, 0.591515, 0.608935, 0.587425, 0.585974, 0.609946, + 0.606134, 0.57925, 0.591004, 0.586675, 0.57415, 0.591515, 0.608935, 0.587425, 0.585974, 0.609946, 0.593511, 0.573381, 0.581898, 0.578717, 0.569797, 0.582278, 0.595758, 0.579264, 0.578207, 0.596577, - 0.583768, 0.569262, 0.575267, 0.573003, 0.566785, 0.575539, 0.58546, 0.57339, 0.572642, 0.586082, - 0.668174, 0.668159, 0.668178, 0.618792, 0.66788, 0.668183, 0.66818, 0.66818, 0.662345, 0.595566, + 0.583768, 0.569262, 0.575267, 0.573003, 0.566785, 0.575539, 0.58546, 0.57339, 0.572642, 0.586082, + 0.668174, 0.668159, 0.668178, 0.618792, 0.66788, 0.668183, 0.66818, 0.66818, 0.662345, 0.595566, 0.667915, 0.667737, 0.667963, 0.603963, 0.665981, 0.668052, 0.668006, 0.668007, 0.652525, 0.585315, - 0.66615, 0.665341, 0.6664, 0.591792, 0.659985, 0.666907, 0.666636, 0.66664, 0.638101, 0.577728, + 0.66615, 0.665341, 0.6664, 0.591792, 0.659985, 0.666907, 0.666636, 0.66664, 0.638101, 0.577728, 0.660409, 0.658471, 0.661057, 0.582484, 0.648575, 0.662479, 0.661698, 0.661709, 0.621887, 0.572305, - 0.649254, 0.646247, 0.650314, 0.575687, 0.633281, 0.652764, 0.651396, 0.651414, 0.60665, 0.568515, - 0.634083, 0.630598, 0.635357, 0.57087, 0.617117, 0.638404, 0.636684, 0.636707, 0.593922, 0.565907, - 0.617895, 0.614559, 0.619142, 0.567524, 0.602533, 0.622196, 0.62046, 0.620482, 0.584076, 0.564129, - 0.603195, 0.600379, 0.604265, 0.56523, 0.59067, 0.606921, 0.605404, 0.605423, 0.576832, 0.562925, - 0.591189, 0.588995, 0.592029, 0.56367, 0.581651, 0.594139, 0.59293, 0.592946, 0.571674, 0.562114, - 0.582036, 0.580415, 0.582661, 0.562616, 0.57509, 0.584239, 0.583333, 0.583345, 0.568079, 0.561569, + 0.649254, 0.646247, 0.650314, 0.575687, 0.633281, 0.652764, 0.651396, 0.651414, 0.60665, 0.568515, + 0.634083, 0.630598, 0.635357, 0.57087, 0.617117, 0.638404, 0.636684, 0.636707, 0.593922, 0.565907, + 0.617895, 0.614559, 0.619142, 0.567524, 0.602533, 0.622196, 0.62046, 0.620482, 0.584076, 0.564129, + 0.603195, 0.600379, 0.604265, 0.56523, 0.59067, 0.606921, 0.605404, 0.605423, 0.576832, 0.562925, + 0.591189, 0.588995, 0.592029, 0.56367, 0.581651, 0.594139, 0.59293, 0.592946, 0.571674, 0.562114, + 0.582036, 0.580415, 0.582661, 0.562616, 0.57509, 0.584239, 0.583333, 0.583345, 0.568079, 0.561569, 0.668139, 0.668063, 0.668139, 0.667082, 0.653793, 0.663397, 0.640434, 0.668175, 0.667092, 0.571849, 0.667538, 0.666978, 0.667544, 0.663011, 0.639734, 0.654459, 0.624289, 0.667925, 0.663042, 0.5682, - 0.664556, 0.66269, 0.664578, 0.653734, 0.623561, 0.640611, 0.608777, 0.666203, 0.653791, 0.565691, - 0.656765, 0.653146, 0.65681, 0.639656, 0.608128, 0.624474, 0.59563, 0.660545, 0.639731, 0.563983, - 0.643768, 0.638894, 0.643833, 0.62348, 0.595107, 0.608942, 0.585363, 0.649473, 0.623558, 0.562827, + 0.664556, 0.66269, 0.664578, 0.653734, 0.623561, 0.640611, 0.608777, 0.666203, 0.653791, 0.565691, + 0.656765, 0.653146, 0.65681, 0.639656, 0.608128, 0.624474, 0.59563, 0.660545, 0.639731, 0.563983, + 0.643768, 0.638894, 0.643833, 0.62348, 0.595107, 0.608942, 0.585363, 0.649473, 0.623558, 0.562827, 0.627845, 0.622696, 0.627915, 0.608056, 0.584968, 0.595763, 0.577763, 0.634345, 0.608125, 0.562048, - 0.611999, 0.607362, 0.612063, 0.595049, 0.577477, 0.585464, 0.572329, 0.61815, 0.595104, 0.561524, + 0.611999, 0.607362, 0.612063, 0.595049, 0.577477, 0.585464, 0.572329, 0.61815, 0.595104, 0.561524, 0.598256, 0.594491, 0.598309, 0.584924, 0.572127, 0.577836, 0.568532, 0.603413, 0.584966, 0.561173, 0.587362, 0.584504, 0.587403, 0.577445, 0.568392, 0.572381, 0.565918, 0.591359, 0.577475, 0.560938, 0.579218, 0.577141, 0.579248, 0.572105, 0.565823, 0.568568, 0.564137, 0.582163, 0.572127, 0.560781, - 0.668102, 0.668132, 0.66388, 0.667456, 0.657447, 0.606385, 0.667634, 0.620685, 0.668185, 0.668187, - 0.667244, 0.667485, 0.655394, 0.664256, 0.644744, 0.59371, 0.664921, 0.6056, 0.668088, 0.668142, - 0.663529, 0.664358, 0.641868, 0.656146, 0.628916, 0.583917, 0.65754, 0.593086, 0.667146, 0.667567, - 0.654712, 0.656356, 0.625799, 0.642901, 0.612988, 0.576717, 0.644878, 0.583449, 0.66321, 0.664664, - 0.640947, 0.643193, 0.610134, 0.626905, 0.599072, 0.571593, 0.629065, 0.57638, 0.654104, 0.656992, - 0.624826, 0.62722, 0.59673, 0.611138, 0.587988, 0.568023, 0.613126, 0.571356, 0.640142, 0.644091, - 0.609258, 0.611426, 0.586197, 0.59755, 0.579676, 0.56557, 0.599186, 0.567859, 0.623984, 0.628198, + 0.668102, 0.668132, 0.66388, 0.667456, 0.657447, 0.606385, 0.667634, 0.620685, 0.668185, 0.668187, + 0.667244, 0.667485, 0.655394, 0.664256, 0.644744, 0.59371, 0.664921, 0.6056, 0.668088, 0.668142, + 0.663529, 0.664358, 0.641868, 0.656146, 0.628916, 0.583917, 0.65754, 0.593086, 0.667146, 0.667567, + 0.654712, 0.656356, 0.625799, 0.642901, 0.612988, 0.576717, 0.644878, 0.583449, 0.66321, 0.664664, + 0.640947, 0.643193, 0.610134, 0.626905, 0.599072, 0.571593, 0.629065, 0.57638, 0.654104, 0.656992, + 0.624826, 0.62722, 0.59673, 0.611138, 0.587988, 0.568023, 0.613126, 0.571356, 0.640142, 0.644091, + 0.609258, 0.611426, 0.586197, 0.59755, 0.579676, 0.56557, 0.599186, 0.567859, 0.623984, 0.628198, 0.596018, 0.597785, 0.578369, 0.586822, 0.573683, 0.563901, 0.588076, 0.565458, 0.608505, 0.612324, - 0.585658, 0.587002, 0.572757, 0.578824, 0.569471, 0.562771, 0.57974, 0.563825, 0.59541, 0.598524, - 0.577977, 0.578955, 0.568828, 0.573079, 0.566562, 0.562011, 0.573728, 0.56272, 0.585197, 0.587567}, - std::vector{ - 0.559698, 0.587499, 0.58592, 0.563707, 0.587544, 0.56698, 0.571671, 0.571423, 0.579197, 0.585993, - 0.583768, 0.569262, 0.575267, 0.573003, 0.566785, 0.575539, 0.58546, 0.57339, 0.572642, 0.586082, - 0.582036, 0.580415, 0.582661, 0.562616, 0.57509, 0.584239, 0.583333, 0.583345, 0.568079, 0.561569, - 0.579218, 0.577141, 0.579248, 0.572105, 0.565823, 0.568568, 0.564137, 0.582163, 0.572127, 0.560781, - 0.577977, 0.578955, 0.568828, 0.573079, 0.566562, 0.562011, 0.573728, 0.56272, 0.585197, 0.587567}, - std::vector{ - 1.2132, 1.37242, 1.3621, 1.23365, 1.37271, 1.25089, 1.27652, 1.27513, 1.32014, 1.36258, - 1.34833, 1.26322, 1.29695, 1.284, 1.24985, 1.29853, 1.35913, 1.2862, 1.28197, 1.36315, - 1.33748, 1.32752, 1.34137, 1.22801, 1.29593, 1.35132, 1.34559, 1.34566, 1.25679, 1.22266, - 1.32026, 1.30789, 1.32044, 1.27895, 1.24474, 1.25944, 1.23589, 1.33827, 1.27907, 1.21865, - 1.31284, 1.31868, 1.26086, 1.28443, 1.24866, 1.22491, 1.28812, 1.22855, 1.35744, 1.37287}), + 0.585658, 0.587002, 0.572757, 0.578824, 0.569471, 0.562771, 0.57974, 0.563825, 0.59541, 0.598524, + 0.577977, 0.578955, 0.568828, 0.573079, 0.566562, 0.562011, 0.573728, 0.56272, 0.585197, 0.587567}, + std::vector{0.559698, 0.587499, 0.58592, 0.563707, 0.587544, 0.56698, 0.571671, 0.571423, 0.579197, + 0.585993, 0.583768, 0.569262, 0.575267, 0.573003, 0.566785, 0.575539, 0.58546, 0.57339, + 0.572642, 0.586082, 0.582036, 0.580415, 0.582661, 0.562616, 0.57509, 0.584239, 0.583333, + 0.583345, 0.568079, 0.561569, 0.579218, 0.577141, 0.579248, 0.572105, 0.565823, 0.568568, + 0.564137, 0.582163, 0.572127, 0.560781, 0.577977, 0.578955, 0.568828, 0.573079, 0.566562, + 0.562011, 0.573728, 0.56272, 0.585197, 0.587567}, + std::vector{1.2132, 1.37242, 1.3621, 1.23365, 1.37271, 1.25089, 1.27652, 1.27513, 1.32014, 1.36258, + 1.34833, 1.26322, 1.29695, 1.284, 1.24985, 1.29853, 1.35913, 1.2862, 1.28197, 1.36315, + 1.33748, 1.32752, 1.34137, 1.22801, 1.29593, 1.35132, 1.34559, 1.34566, 1.25679, 1.22266, + 1.32026, 1.30789, 1.32044, 1.27895, 1.24474, 1.25944, 1.23589, 1.33827, 1.27907, 1.21865, + 1.31284, 1.31868, 1.26086, 1.28443, 1.24866, 1.22491, 1.28812, 1.22855, 1.35744, 1.37287}), LSTMSequenceParams( - 5, 10, 10, 10, - 0.7f, op::RecurrentSequenceDirection::REVERSE, + 5, + 10, + 10, + 10, + 0.7f, + op::RecurrentSequenceDirection::REVERSE, ET, std::vector{ - 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, - 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, - 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, - 7.03475, 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, - 6.61627, 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 2.07541, - 5.72319, 1.75261, 9.25175, 9.19404, 3.69037, 6.2595, 6.09321, 6.52544, 9.60882, 3.34881, - 3.07914, 5.80104, 9.54944, 5.43754, 5.8654, 7.88937, 1.40811, 2.2597, 8.13163, 1.26821, - 8.94813, 5.86709, 5.03182, 9.02922, 4.39826, 5.84582, 6.87069, 4.25135, 6.13908, 6.74053, - 2.13683, 7.21184, 6.82974, 4.18545, 7.8691, 4.20879, 7.77509, 8.93208, 1.10502, 5.48298, - 1.66413, 8.08256, 1.57661, 4.19779, 9.47653, 4.41823, 7.86628, 7.94436, 3.71224, 7.95465, - 2.37637, 6.20771, 1.08107, 7.38138, 5.23577, 7.88133, 5.20653, 3.42101, 8.48523, 5.96192, - 1.63073, 5.25228, 7.68488, 2.7276, 5.1788, 3.07327, 5.57423, 2.87711, 1.44374, 5.66976, - 2.55051, 4.56682, 1.96629, 5.58829, 1.91922, 3.59846, 3.08583, 9.70901, 3.50487, 3.1026, - 1.82401, 6.1306, 4.76134, 4.31059, 8.31695, 3.60784, 7.45652, 6.51653, 4.84219, 7.76686, - 4.85031, 4.85544, 4.25714, 2.38005, 9.43471, 9.24769, 8.03763, 6.54696, 1.32399, 6.88891, - 2.16793, 3.64924, 4.24733, 3.47181, 1.66572, 2.36923, 2.45457, 9.44841, 4.34021, 1.45016, - 7.6686, 3.68812, 2.83922, 9.83581, 9.03719, 7.83414, 6.86009, 1.35715, 8.32489, 7.86316, - 5.09754, 5.78644, 1.98402, 2.31429, 5.5791, 2.94085, 9.24799, 5.15937, 2.19041, 7.87817, - 2.9146, 1.66833, 1.85877, 2.45985, 4.20817, 1.85777, 2.28937, 9.37912, 6.18926, 8.55681, - 6.60963, 3.92066, 7.5521, 5.70463, 7.6313, 2.48866, 7.18352, 4.8413, 7.55702, 7.80702, - 4.5785, 9.3268, 2.83159, 1.07202, 9.33716, 3.6506, 2.50256, 1.21691, 5.06801, 8.27505, - 4.31539, 6.48286, 1.31363, 4.1912, 1.70668, 7.23867, 1.11441, 5.13591, 9.65186, 4.00767, - 5.24875, 1.94852, 5.52768, 8.97121, 5.8094, 3.53329, 4.19126, 9.06652, 3.1734, 1.21496, - 9.69154, 4.86971, 4.1166, 6.19361, 2.13874, 9.55039, 3.8225, 9.57548, 2.96554, 3.2383, - 8.77422, 3.11741, 8.3359, 5.89508, 2.72134, 6.29956, 1.43323, 1.14286, 1.4474, 4.59474, - 6.19214, 8.80766, 8.07546, 3.29232, 1.74029, 2.4198, 2.88544, 4.75644, 4.12921, 7.29896, - 7.27759, 1.67252, 1.32823, 8.1046, 9.10476, 1.04197, 3.37783, 5.2064, 4.23835, 3.16196, - 1.20852, 5.78501, 2.17175, 6.05313, 2.51048, 4.78967, 7.16219, 3.4651, 1.09, 2.9788, - 1.28761, 9.41385, 8.03883, 5.65835, 1.14816, 3.6892, 5.86648, 8.73895, 2.66603, 1.75192, - 1.39845, 4.99427, 1.17387, 1.60329, 8.30594, 6.72662, 7.95565, 7.35114, 3.1439, 1.39976, - 3.53095, 8.78581, 1.65811, 6.94299, 2.68641, 5.70058, 9.13491, 5.27637, 8.6232, 8.54902, - 2.25352, 5.86274, 5.20377, 2.96815, 4.96745, 5.3225, 3.99956, 1.08021, 5.54918, 7.05833, - 1.49913, 2.41822, 6.44593, 3.87301, 9.01465, 8.11336, 2.95749, 2.80188, 7.12396, 2.40595, - 5.59325, 9.89258, 2.30223, 1.4347, 9.09158, 7.43797, 3.79295, 4.53646, 1.72705, 4.16909, - 1.00912, 6.62167, 2.80244, 6.626, 3.89307, 1.42586, 7.51028, 7.83327, 4.65674, 7.33902, - 6.26823, 9.72608, 3.73491, 3.8238, 3.03815, 7.05101, 8.0103, 5.61396, 6.53738, 1.41095, - 5.0149, 9.71211, 4.23604, 5.98629, 4.70219, 9.69442, 2.82752, 9.93544, 6.9328, 8.2817, - 5.12336, 8.98577, 5.80541, 6.19552, 9.25748, 3.82732, 7.53525, 8.24712, 5.32057, 5.38817, - 8.57269, 5.99975, 3.42893, 5.38068, 3.48261, 3.02851, 6.82079, 9.2902, 2.80427, 8.91868, - 5.19227, 7.52482, 3.72584, 5.40107, 2.83307, 1.79755, 2.49121, 5.52697, 8.08823, 9.13242, - 2.97572, 7.64318, 3.32023, 6.07788, 2.19187, 4.34879, 1.7457, 5.55154, 7.24966, 5.1128, - 4.25147, 8.34407, 1.4123, 4.49045, 5.12671, 7.62159, 9.18673, 3.49665, 8.35992, 6.90684, - 1.10152, 7.61818, 6.43145, 7.12017, 6.25564, 6.16169, 4.24916, 9.6283, 9.88249, 4.48422, - 8.52562, 9.83928, 6.26818, 7.03839, 1.77631, 9.92305, 8.0155, 9.94928, 6.88321, 1.33685, - 7.4718, 7.19305, 6.47932, 1.9559, 3.52616, 7.98593, 9.0115, 5.59539, 7.44137, 1.70001, - 6.53774, 8.54023, 7.26405, 5.99553, 8.75071, 7.70789, 3.38094, 9.99792, 6.16359, 6.75153, - 5.4073, 9.00437, 8.87059, 8.63011, 6.82951, 6.27021, 3.53425, 9.92489, 8.19695, 5.51473, - 7.95084, 2.11852, 9.28916, 1.40353, 3.05744, 8.58238, 3.75014, 5.35889, 6.85048, 2.29549, - 3.75218, 8.98228, 8.98158, 5.63695, 3.40379, 8.92309, 5.48185, 4.00095, 9.05227, 2.84035, - 8.37644, 8.54954, 5.70516, 2.45744, 9.54079, 1.53504, 8.9785, 6.1691, 4.40962, 10}, - std::vector{ - 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, - 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, - 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, - 7.03475, 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, - 6.61627, 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 10}, - std::vector{ - 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, - 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, - 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, - 7.03475, 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, - 6.61627, 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 10}, + 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, 8.6168, + 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, 8.0055, 7.44373, + 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, 7.03475, 6.33759, 7.04489, + 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, 6.61627, 6.94572, 3.68646, 5.01521, + 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 2.07541, 5.72319, 1.75261, 9.25175, 9.19404, 3.69037, + 6.2595, 6.09321, 6.52544, 9.60882, 3.34881, 3.07914, 5.80104, 9.54944, 5.43754, 5.8654, 7.88937, + 1.40811, 2.2597, 8.13163, 1.26821, 8.94813, 5.86709, 5.03182, 9.02922, 4.39826, 5.84582, 6.87069, + 4.25135, 6.13908, 6.74053, 2.13683, 7.21184, 6.82974, 4.18545, 7.8691, 4.20879, 7.77509, 8.93208, + 1.10502, 5.48298, 1.66413, 8.08256, 1.57661, 4.19779, 9.47653, 4.41823, 7.86628, 7.94436, 3.71224, + 7.95465, 2.37637, 6.20771, 1.08107, 7.38138, 5.23577, 7.88133, 5.20653, 3.42101, 8.48523, 5.96192, + 1.63073, 5.25228, 7.68488, 2.7276, 5.1788, 3.07327, 5.57423, 2.87711, 1.44374, 5.66976, 2.55051, + 4.56682, 1.96629, 5.58829, 1.91922, 3.59846, 3.08583, 9.70901, 3.50487, 3.1026, 1.82401, 6.1306, + 4.76134, 4.31059, 8.31695, 3.60784, 7.45652, 6.51653, 4.84219, 7.76686, 4.85031, 4.85544, 4.25714, + 2.38005, 9.43471, 9.24769, 8.03763, 6.54696, 1.32399, 6.88891, 2.16793, 3.64924, 4.24733, 3.47181, + 1.66572, 2.36923, 2.45457, 9.44841, 4.34021, 1.45016, 7.6686, 3.68812, 2.83922, 9.83581, 9.03719, + 7.83414, 6.86009, 1.35715, 8.32489, 7.86316, 5.09754, 5.78644, 1.98402, 2.31429, 5.5791, 2.94085, + 9.24799, 5.15937, 2.19041, 7.87817, 2.9146, 1.66833, 1.85877, 2.45985, 4.20817, 1.85777, 2.28937, + 9.37912, 6.18926, 8.55681, 6.60963, 3.92066, 7.5521, 5.70463, 7.6313, 2.48866, 7.18352, 4.8413, + 7.55702, 7.80702, 4.5785, 9.3268, 2.83159, 1.07202, 9.33716, 3.6506, 2.50256, 1.21691, 5.06801, + 8.27505, 4.31539, 6.48286, 1.31363, 4.1912, 1.70668, 7.23867, 1.11441, 5.13591, 9.65186, 4.00767, + 5.24875, 1.94852, 5.52768, 8.97121, 5.8094, 3.53329, 4.19126, 9.06652, 3.1734, 1.21496, 9.69154, + 4.86971, 4.1166, 6.19361, 2.13874, 9.55039, 3.8225, 9.57548, 2.96554, 3.2383, 8.77422, 3.11741, + 8.3359, 5.89508, 2.72134, 6.29956, 1.43323, 1.14286, 1.4474, 4.59474, 6.19214, 8.80766, 8.07546, + 3.29232, 1.74029, 2.4198, 2.88544, 4.75644, 4.12921, 7.29896, 7.27759, 1.67252, 1.32823, 8.1046, + 9.10476, 1.04197, 3.37783, 5.2064, 4.23835, 3.16196, 1.20852, 5.78501, 2.17175, 6.05313, 2.51048, + 4.78967, 7.16219, 3.4651, 1.09, 2.9788, 1.28761, 9.41385, 8.03883, 5.65835, 1.14816, 3.6892, + 5.86648, 8.73895, 2.66603, 1.75192, 1.39845, 4.99427, 1.17387, 1.60329, 8.30594, 6.72662, 7.95565, + 7.35114, 3.1439, 1.39976, 3.53095, 8.78581, 1.65811, 6.94299, 2.68641, 5.70058, 9.13491, 5.27637, + 8.6232, 8.54902, 2.25352, 5.86274, 5.20377, 2.96815, 4.96745, 5.3225, 3.99956, 1.08021, 5.54918, + 7.05833, 1.49913, 2.41822, 6.44593, 3.87301, 9.01465, 8.11336, 2.95749, 2.80188, 7.12396, 2.40595, + 5.59325, 9.89258, 2.30223, 1.4347, 9.09158, 7.43797, 3.79295, 4.53646, 1.72705, 4.16909, 1.00912, + 6.62167, 2.80244, 6.626, 3.89307, 1.42586, 7.51028, 7.83327, 4.65674, 7.33902, 6.26823, 9.72608, + 3.73491, 3.8238, 3.03815, 7.05101, 8.0103, 5.61396, 6.53738, 1.41095, 5.0149, 9.71211, 4.23604, + 5.98629, 4.70219, 9.69442, 2.82752, 9.93544, 6.9328, 8.2817, 5.12336, 8.98577, 5.80541, 6.19552, + 9.25748, 3.82732, 7.53525, 8.24712, 5.32057, 5.38817, 8.57269, 5.99975, 3.42893, 5.38068, 3.48261, + 3.02851, 6.82079, 9.2902, 2.80427, 8.91868, 5.19227, 7.52482, 3.72584, 5.40107, 2.83307, 1.79755, + 2.49121, 5.52697, 8.08823, 9.13242, 2.97572, 7.64318, 3.32023, 6.07788, 2.19187, 4.34879, 1.7457, + 5.55154, 7.24966, 5.1128, 4.25147, 8.34407, 1.4123, 4.49045, 5.12671, 7.62159, 9.18673, 3.49665, + 8.35992, 6.90684, 1.10152, 7.61818, 6.43145, 7.12017, 6.25564, 6.16169, 4.24916, 9.6283, 9.88249, + 4.48422, 8.52562, 9.83928, 6.26818, 7.03839, 1.77631, 9.92305, 8.0155, 9.94928, 6.88321, 1.33685, + 7.4718, 7.19305, 6.47932, 1.9559, 3.52616, 7.98593, 9.0115, 5.59539, 7.44137, 1.70001, 6.53774, + 8.54023, 7.26405, 5.99553, 8.75071, 7.70789, 3.38094, 9.99792, 6.16359, 6.75153, 5.4073, 9.00437, + 8.87059, 8.63011, 6.82951, 6.27021, 3.53425, 9.92489, 8.19695, 5.51473, 7.95084, 2.11852, 9.28916, + 1.40353, 3.05744, 8.58238, 3.75014, 5.35889, 6.85048, 2.29549, 3.75218, 8.98228, 8.98158, 5.63695, + 3.40379, 8.92309, 5.48185, 4.00095, 9.05227, 2.84035, 8.37644, 8.54954, 5.70516, 2.45744, 9.54079, + 1.53504, 8.9785, 6.1691, 4.40962, 10}, + std::vector{1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, + 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, + 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, + 7.03475, 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, + 6.61627, 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 10}, + std::vector{1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, + 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, + 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, + 7.03475, 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, + 6.61627, 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 10}, std::vector{10, 10, 10, 10, 10}, std::vector{ - 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, - 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, - 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, - 7.03475, 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, - 6.61627, 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 2.07541, - 5.72319, 1.75261, 9.25175, 9.19404, 3.69037, 6.2595, 6.09321, 6.52544, 9.60882, 3.34881, - 3.07914, 5.80104, 9.54944, 5.43754, 5.8654, 7.88937, 1.40811, 2.2597, 8.13163, 1.26821, - 8.94813, 5.86709, 5.03182, 9.02922, 4.39826, 5.84582, 6.87069, 4.25135, 6.13908, 6.74053, - 2.13683, 7.21184, 6.82974, 4.18545, 7.8691, 4.20879, 7.77509, 8.93208, 1.10502, 5.48298, - 1.66413, 8.08256, 1.57661, 4.19779, 9.47653, 4.41823, 7.86628, 7.94436, 3.71224, 7.95465, - 2.37637, 6.20771, 1.08107, 7.38138, 5.23577, 7.88133, 5.20653, 3.42101, 8.48523, 5.96192, - 1.63073, 5.25228, 7.68488, 2.7276, 5.1788, 3.07327, 5.57423, 2.87711, 1.44374, 5.66976, - 2.55051, 4.56682, 1.96629, 5.58829, 1.91922, 3.59846, 3.08583, 9.70901, 3.50487, 3.1026, - 1.82401, 6.1306, 4.76134, 4.31059, 8.31695, 3.60784, 7.45652, 6.51653, 4.84219, 7.76686, - 4.85031, 4.85544, 4.25714, 2.38005, 9.43471, 9.24769, 8.03763, 6.54696, 1.32399, 6.88891, - 2.16793, 3.64924, 4.24733, 3.47181, 1.66572, 2.36923, 2.45457, 9.44841, 4.34021, 1.45016, - 7.6686, 3.68812, 2.83922, 9.83581, 9.03719, 7.83414, 6.86009, 1.35715, 8.32489, 7.86316, - 5.09754, 5.78644, 1.98402, 2.31429, 5.5791, 2.94085, 9.24799, 5.15937, 2.19041, 7.87817, - 2.9146, 1.66833, 1.85877, 2.45985, 4.20817, 1.85777, 2.28937, 9.37912, 6.18926, 8.55681, - 6.60963, 3.92066, 7.5521, 5.70463, 7.6313, 2.48866, 7.18352, 4.8413, 7.55702, 7.80702, - 4.5785, 9.3268, 2.83159, 1.07202, 9.33716, 3.6506, 2.50256, 1.21691, 5.06801, 8.27505, - 4.31539, 6.48286, 1.31363, 4.1912, 1.70668, 7.23867, 1.11441, 5.13591, 9.65186, 4.00767, - 5.24875, 1.94852, 5.52768, 8.97121, 5.8094, 3.53329, 4.19126, 9.06652, 3.1734, 1.21496, - 9.69154, 4.86971, 4.1166, 6.19361, 2.13874, 9.55039, 3.8225, 9.57548, 2.96554, 3.2383, - 8.77422, 3.11741, 8.3359, 5.89508, 2.72134, 6.29956, 1.43323, 1.14286, 1.4474, 4.59474, - 6.19214, 8.80766, 8.07546, 3.29232, 1.74029, 2.4198, 2.88544, 4.75644, 4.12921, 7.29896, - 7.27759, 1.67252, 1.32823, 8.1046, 9.10476, 1.04197, 3.37783, 5.2064, 4.23835, 3.16196, - 1.20852, 5.78501, 2.17175, 6.05313, 2.51048, 4.78967, 7.16219, 3.4651, 1.09, 2.9788, - 1.28761, 9.41385, 8.03883, 5.65835, 1.14816, 3.6892, 5.86648, 8.73895, 2.66603, 1.75192, - 1.39845, 4.99427, 1.17387, 1.60329, 8.30594, 6.72662, 7.95565, 7.35114, 3.1439, 1.39976, - 3.53095, 8.78581, 1.65811, 6.94299, 2.68641, 5.70058, 9.13491, 5.27637, 8.6232, 8.54902, - 2.25352, 5.86274, 5.20377, 2.96815, 4.96745, 5.3225, 3.99956, 1.08021, 5.54918, 7.05833, - 1.49913, 2.41822, 6.44593, 3.87301, 9.01465, 8.11336, 2.95749, 2.80188, 7.12396, 2.40595, - 5.59325, 9.89258, 2.30223, 1.4347, 9.09158, 7.43797, 3.79295, 4.53646, 1.72705, 4.16909, - 1.00912, 6.62167, 2.80244, 6.626, 3.89307, 1.42586, 7.51028, 7.83327, 4.65674, 7.33902, - 6.26823, 9.72608, 3.73491, 3.8238, 3.03815, 7.05101, 8.0103, 5.61396, 6.53738, 1.41095, - 5.0149, 9.71211, 4.23604, 5.98629, 4.70219, 9.69442, 2.82752, 9.93544, 6.9328, 8.2817, - 5.12336, 8.98577, 5.80541, 6.19552, 9.25748, 3.82732, 7.53525, 8.24712, 5.32057, 5.38817, - 8.57269, 5.99975, 3.42893, 5.38068, 3.48261, 3.02851, 6.82079, 9.2902, 2.80427, 8.91868, - 5.19227, 7.52482, 3.72584, 5.40107, 2.83307, 1.79755, 2.49121, 5.52697, 8.08823, 10}, + 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, 8.6168, + 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, 8.0055, 7.44373, + 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, 7.03475, 6.33759, 7.04489, + 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, 6.61627, 6.94572, 3.68646, 5.01521, + 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 2.07541, 5.72319, 1.75261, 9.25175, 9.19404, 3.69037, + 6.2595, 6.09321, 6.52544, 9.60882, 3.34881, 3.07914, 5.80104, 9.54944, 5.43754, 5.8654, 7.88937, + 1.40811, 2.2597, 8.13163, 1.26821, 8.94813, 5.86709, 5.03182, 9.02922, 4.39826, 5.84582, 6.87069, + 4.25135, 6.13908, 6.74053, 2.13683, 7.21184, 6.82974, 4.18545, 7.8691, 4.20879, 7.77509, 8.93208, + 1.10502, 5.48298, 1.66413, 8.08256, 1.57661, 4.19779, 9.47653, 4.41823, 7.86628, 7.94436, 3.71224, + 7.95465, 2.37637, 6.20771, 1.08107, 7.38138, 5.23577, 7.88133, 5.20653, 3.42101, 8.48523, 5.96192, + 1.63073, 5.25228, 7.68488, 2.7276, 5.1788, 3.07327, 5.57423, 2.87711, 1.44374, 5.66976, 2.55051, + 4.56682, 1.96629, 5.58829, 1.91922, 3.59846, 3.08583, 9.70901, 3.50487, 3.1026, 1.82401, 6.1306, + 4.76134, 4.31059, 8.31695, 3.60784, 7.45652, 6.51653, 4.84219, 7.76686, 4.85031, 4.85544, 4.25714, + 2.38005, 9.43471, 9.24769, 8.03763, 6.54696, 1.32399, 6.88891, 2.16793, 3.64924, 4.24733, 3.47181, + 1.66572, 2.36923, 2.45457, 9.44841, 4.34021, 1.45016, 7.6686, 3.68812, 2.83922, 9.83581, 9.03719, + 7.83414, 6.86009, 1.35715, 8.32489, 7.86316, 5.09754, 5.78644, 1.98402, 2.31429, 5.5791, 2.94085, + 9.24799, 5.15937, 2.19041, 7.87817, 2.9146, 1.66833, 1.85877, 2.45985, 4.20817, 1.85777, 2.28937, + 9.37912, 6.18926, 8.55681, 6.60963, 3.92066, 7.5521, 5.70463, 7.6313, 2.48866, 7.18352, 4.8413, + 7.55702, 7.80702, 4.5785, 9.3268, 2.83159, 1.07202, 9.33716, 3.6506, 2.50256, 1.21691, 5.06801, + 8.27505, 4.31539, 6.48286, 1.31363, 4.1912, 1.70668, 7.23867, 1.11441, 5.13591, 9.65186, 4.00767, + 5.24875, 1.94852, 5.52768, 8.97121, 5.8094, 3.53329, 4.19126, 9.06652, 3.1734, 1.21496, 9.69154, + 4.86971, 4.1166, 6.19361, 2.13874, 9.55039, 3.8225, 9.57548, 2.96554, 3.2383, 8.77422, 3.11741, + 8.3359, 5.89508, 2.72134, 6.29956, 1.43323, 1.14286, 1.4474, 4.59474, 6.19214, 8.80766, 8.07546, + 3.29232, 1.74029, 2.4198, 2.88544, 4.75644, 4.12921, 7.29896, 7.27759, 1.67252, 1.32823, 8.1046, + 9.10476, 1.04197, 3.37783, 5.2064, 4.23835, 3.16196, 1.20852, 5.78501, 2.17175, 6.05313, 2.51048, + 4.78967, 7.16219, 3.4651, 1.09, 2.9788, 1.28761, 9.41385, 8.03883, 5.65835, 1.14816, 3.6892, + 5.86648, 8.73895, 2.66603, 1.75192, 1.39845, 4.99427, 1.17387, 1.60329, 8.30594, 6.72662, 7.95565, + 7.35114, 3.1439, 1.39976, 3.53095, 8.78581, 1.65811, 6.94299, 2.68641, 5.70058, 9.13491, 5.27637, + 8.6232, 8.54902, 2.25352, 5.86274, 5.20377, 2.96815, 4.96745, 5.3225, 3.99956, 1.08021, 5.54918, + 7.05833, 1.49913, 2.41822, 6.44593, 3.87301, 9.01465, 8.11336, 2.95749, 2.80188, 7.12396, 2.40595, + 5.59325, 9.89258, 2.30223, 1.4347, 9.09158, 7.43797, 3.79295, 4.53646, 1.72705, 4.16909, 1.00912, + 6.62167, 2.80244, 6.626, 3.89307, 1.42586, 7.51028, 7.83327, 4.65674, 7.33902, 6.26823, 9.72608, + 3.73491, 3.8238, 3.03815, 7.05101, 8.0103, 5.61396, 6.53738, 1.41095, 5.0149, 9.71211, 4.23604, + 5.98629, 4.70219, 9.69442, 2.82752, 9.93544, 6.9328, 8.2817, 5.12336, 8.98577, 5.80541, 6.19552, + 9.25748, 3.82732, 7.53525, 8.24712, 5.32057, 5.38817, 8.57269, 5.99975, 3.42893, 5.38068, 3.48261, + 3.02851, 6.82079, 9.2902, 2.80427, 8.91868, 5.19227, 7.52482, 3.72584, 5.40107, 2.83307, 1.79755, + 2.49121, 5.52697, 8.08823, 10}, std::vector{ - 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, - 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, - 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, - 7.03475, 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, - 6.61627, 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 2.07541, - 5.72319, 1.75261, 9.25175, 9.19404, 3.69037, 6.2595, 6.09321, 6.52544, 9.60882, 3.34881, - 3.07914, 5.80104, 9.54944, 5.43754, 5.8654, 7.88937, 1.40811, 2.2597, 8.13163, 1.26821, - 8.94813, 5.86709, 5.03182, 9.02922, 4.39826, 5.84582, 6.87069, 4.25135, 6.13908, 6.74053, - 2.13683, 7.21184, 6.82974, 4.18545, 7.8691, 4.20879, 7.77509, 8.93208, 1.10502, 5.48298, - 1.66413, 8.08256, 1.57661, 4.19779, 9.47653, 4.41823, 7.86628, 7.94436, 3.71224, 7.95465, - 2.37637, 6.20771, 1.08107, 7.38138, 5.23577, 7.88133, 5.20653, 3.42101, 8.48523, 5.96192, - 1.63073, 5.25228, 7.68488, 2.7276, 5.1788, 3.07327, 5.57423, 2.87711, 1.44374, 5.66976, - 2.55051, 4.56682, 1.96629, 5.58829, 1.91922, 3.59846, 3.08583, 9.70901, 3.50487, 3.1026, - 1.82401, 6.1306, 4.76134, 4.31059, 8.31695, 3.60784, 7.45652, 6.51653, 4.84219, 7.76686, - 4.85031, 4.85544, 4.25714, 2.38005, 9.43471, 9.24769, 8.03763, 6.54696, 1.32399, 6.88891, - 2.16793, 3.64924, 4.24733, 3.47181, 1.66572, 2.36923, 2.45457, 9.44841, 4.34021, 1.45016, - 7.6686, 3.68812, 2.83922, 9.83581, 9.03719, 7.83414, 6.86009, 1.35715, 8.32489, 7.86316, - 5.09754, 5.78644, 1.98402, 2.31429, 5.5791, 2.94085, 9.24799, 5.15937, 2.19041, 7.87817, - 2.9146, 1.66833, 1.85877, 2.45985, 4.20817, 1.85777, 2.28937, 9.37912, 6.18926, 8.55681, - 6.60963, 3.92066, 7.5521, 5.70463, 7.6313, 2.48866, 7.18352, 4.8413, 7.55702, 7.80702, - 4.5785, 9.3268, 2.83159, 1.07202, 9.33716, 3.6506, 2.50256, 1.21691, 5.06801, 8.27505, - 4.31539, 6.48286, 1.31363, 4.1912, 1.70668, 7.23867, 1.11441, 5.13591, 9.65186, 4.00767, - 5.24875, 1.94852, 5.52768, 8.97121, 5.8094, 3.53329, 4.19126, 9.06652, 3.1734, 1.21496, - 9.69154, 4.86971, 4.1166, 6.19361, 2.13874, 9.55039, 3.8225, 9.57548, 2.96554, 3.2383, - 8.77422, 3.11741, 8.3359, 5.89508, 2.72134, 6.29956, 1.43323, 1.14286, 1.4474, 4.59474, - 6.19214, 8.80766, 8.07546, 3.29232, 1.74029, 2.4198, 2.88544, 4.75644, 4.12921, 7.29896, - 7.27759, 1.67252, 1.32823, 8.1046, 9.10476, 1.04197, 3.37783, 5.2064, 4.23835, 3.16196, - 1.20852, 5.78501, 2.17175, 6.05313, 2.51048, 4.78967, 7.16219, 3.4651, 1.09, 2.9788, - 1.28761, 9.41385, 8.03883, 5.65835, 1.14816, 3.6892, 5.86648, 8.73895, 2.66603, 1.75192, - 1.39845, 4.99427, 1.17387, 1.60329, 8.30594, 6.72662, 7.95565, 7.35114, 3.1439, 1.39976, - 3.53095, 8.78581, 1.65811, 6.94299, 2.68641, 5.70058, 9.13491, 5.27637, 8.6232, 8.54902, - 2.25352, 5.86274, 5.20377, 2.96815, 4.96745, 5.3225, 3.99956, 1.08021, 5.54918, 7.05833, - 1.49913, 2.41822, 6.44593, 3.87301, 9.01465, 8.11336, 2.95749, 2.80188, 7.12396, 2.40595, - 5.59325, 9.89258, 2.30223, 1.4347, 9.09158, 7.43797, 3.79295, 4.53646, 1.72705, 4.16909, - 1.00912, 6.62167, 2.80244, 6.626, 3.89307, 1.42586, 7.51028, 7.83327, 4.65674, 7.33902, - 6.26823, 9.72608, 3.73491, 3.8238, 3.03815, 7.05101, 8.0103, 5.61396, 6.53738, 1.41095, - 5.0149, 9.71211, 4.23604, 5.98629, 4.70219, 9.69442, 2.82752, 9.93544, 6.9328, 8.2817, - 5.12336, 8.98577, 5.80541, 6.19552, 9.25748, 3.82732, 7.53525, 8.24712, 5.32057, 5.38817, - 8.57269, 5.99975, 3.42893, 5.38068, 3.48261, 3.02851, 6.82079, 9.2902, 2.80427, 8.91868, - 5.19227, 7.52482, 3.72584, 5.40107, 2.83307, 1.79755, 2.49121, 5.52697, 8.08823, 10}, + 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, 8.6168, + 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, 8.0055, 7.44373, + 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, 7.03475, 6.33759, 7.04489, + 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, 6.61627, 6.94572, 3.68646, 5.01521, + 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 2.07541, 5.72319, 1.75261, 9.25175, 9.19404, 3.69037, + 6.2595, 6.09321, 6.52544, 9.60882, 3.34881, 3.07914, 5.80104, 9.54944, 5.43754, 5.8654, 7.88937, + 1.40811, 2.2597, 8.13163, 1.26821, 8.94813, 5.86709, 5.03182, 9.02922, 4.39826, 5.84582, 6.87069, + 4.25135, 6.13908, 6.74053, 2.13683, 7.21184, 6.82974, 4.18545, 7.8691, 4.20879, 7.77509, 8.93208, + 1.10502, 5.48298, 1.66413, 8.08256, 1.57661, 4.19779, 9.47653, 4.41823, 7.86628, 7.94436, 3.71224, + 7.95465, 2.37637, 6.20771, 1.08107, 7.38138, 5.23577, 7.88133, 5.20653, 3.42101, 8.48523, 5.96192, + 1.63073, 5.25228, 7.68488, 2.7276, 5.1788, 3.07327, 5.57423, 2.87711, 1.44374, 5.66976, 2.55051, + 4.56682, 1.96629, 5.58829, 1.91922, 3.59846, 3.08583, 9.70901, 3.50487, 3.1026, 1.82401, 6.1306, + 4.76134, 4.31059, 8.31695, 3.60784, 7.45652, 6.51653, 4.84219, 7.76686, 4.85031, 4.85544, 4.25714, + 2.38005, 9.43471, 9.24769, 8.03763, 6.54696, 1.32399, 6.88891, 2.16793, 3.64924, 4.24733, 3.47181, + 1.66572, 2.36923, 2.45457, 9.44841, 4.34021, 1.45016, 7.6686, 3.68812, 2.83922, 9.83581, 9.03719, + 7.83414, 6.86009, 1.35715, 8.32489, 7.86316, 5.09754, 5.78644, 1.98402, 2.31429, 5.5791, 2.94085, + 9.24799, 5.15937, 2.19041, 7.87817, 2.9146, 1.66833, 1.85877, 2.45985, 4.20817, 1.85777, 2.28937, + 9.37912, 6.18926, 8.55681, 6.60963, 3.92066, 7.5521, 5.70463, 7.6313, 2.48866, 7.18352, 4.8413, + 7.55702, 7.80702, 4.5785, 9.3268, 2.83159, 1.07202, 9.33716, 3.6506, 2.50256, 1.21691, 5.06801, + 8.27505, 4.31539, 6.48286, 1.31363, 4.1912, 1.70668, 7.23867, 1.11441, 5.13591, 9.65186, 4.00767, + 5.24875, 1.94852, 5.52768, 8.97121, 5.8094, 3.53329, 4.19126, 9.06652, 3.1734, 1.21496, 9.69154, + 4.86971, 4.1166, 6.19361, 2.13874, 9.55039, 3.8225, 9.57548, 2.96554, 3.2383, 8.77422, 3.11741, + 8.3359, 5.89508, 2.72134, 6.29956, 1.43323, 1.14286, 1.4474, 4.59474, 6.19214, 8.80766, 8.07546, + 3.29232, 1.74029, 2.4198, 2.88544, 4.75644, 4.12921, 7.29896, 7.27759, 1.67252, 1.32823, 8.1046, + 9.10476, 1.04197, 3.37783, 5.2064, 4.23835, 3.16196, 1.20852, 5.78501, 2.17175, 6.05313, 2.51048, + 4.78967, 7.16219, 3.4651, 1.09, 2.9788, 1.28761, 9.41385, 8.03883, 5.65835, 1.14816, 3.6892, + 5.86648, 8.73895, 2.66603, 1.75192, 1.39845, 4.99427, 1.17387, 1.60329, 8.30594, 6.72662, 7.95565, + 7.35114, 3.1439, 1.39976, 3.53095, 8.78581, 1.65811, 6.94299, 2.68641, 5.70058, 9.13491, 5.27637, + 8.6232, 8.54902, 2.25352, 5.86274, 5.20377, 2.96815, 4.96745, 5.3225, 3.99956, 1.08021, 5.54918, + 7.05833, 1.49913, 2.41822, 6.44593, 3.87301, 9.01465, 8.11336, 2.95749, 2.80188, 7.12396, 2.40595, + 5.59325, 9.89258, 2.30223, 1.4347, 9.09158, 7.43797, 3.79295, 4.53646, 1.72705, 4.16909, 1.00912, + 6.62167, 2.80244, 6.626, 3.89307, 1.42586, 7.51028, 7.83327, 4.65674, 7.33902, 6.26823, 9.72608, + 3.73491, 3.8238, 3.03815, 7.05101, 8.0103, 5.61396, 6.53738, 1.41095, 5.0149, 9.71211, 4.23604, + 5.98629, 4.70219, 9.69442, 2.82752, 9.93544, 6.9328, 8.2817, 5.12336, 8.98577, 5.80541, 6.19552, + 9.25748, 3.82732, 7.53525, 8.24712, 5.32057, 5.38817, 8.57269, 5.99975, 3.42893, 5.38068, 3.48261, + 3.02851, 6.82079, 9.2902, 2.80427, 8.91868, 5.19227, 7.52482, 3.72584, 5.40107, 2.83307, 1.79755, + 2.49121, 5.52697, 8.08823, 10}, + std::vector{1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, + 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, + 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, + 7.03475, 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 10}, std::vector{ - 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, - 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, - 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, - 7.03475, 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 10}, - std::vector{ - 0.559698, 0.587499, 0.58592, 0.563707, 0.587544, 0.56698, 0.571671, 0.571423, 0.579197, 0.585993, - 0.559316, 0.598435, 0.596364, 0.565285, 0.598493, 0.57008, 0.576828, 0.576475, 0.587333, 0.596461, + 0.559698, 0.587499, 0.58592, 0.563707, 0.587544, 0.56698, 0.571671, 0.571423, 0.579197, 0.585993, + 0.559316, 0.598435, 0.596364, 0.565285, 0.598493, 0.57008, 0.576828, 0.576475, 0.587333, 0.596461, 0.558742, 0.612216, 0.609684, 0.567605, 0.612287, 0.574556, 0.584071, 0.583581, 0.598219, 0.609803, 0.557878, 0.628081, 0.625301, 0.570987, 0.628158, 0.580903, 0.593915, 0.593262, 0.611954, 0.625433, 0.556574, 0.643984, 0.641397, 0.575854, 0.644055, 0.589658, 0.606642, 0.605821, 0.627796, 0.641522, 0.554596, 0.656917, 0.655047, 0.582718, 0.656967, 0.601233, 0.621878, 0.620939, 0.643723, 0.65514, 0.551576, 0.664629, 0.663703, 0.592106, 0.664652, 0.615579, 0.638092, 0.637163, 0.656733, 0.663751, - 0.54692, 0.667558, 0.667297, 0.604361, 0.667564, 0.631676, 0.652518, 0.651781, 0.664541, 0.667311, - 0.53964, 0.668141, 0.668109, 0.619255, 0.668141, 0.647193, 0.662341, 0.661921, 0.667534, 0.66811, + 0.54692, 0.667558, 0.667297, 0.604361, 0.667564, 0.631676, 0.652518, 0.651781, 0.664541, 0.667311, + 0.53964, 0.668141, 0.668109, 0.619255, 0.668141, 0.647193, 0.662341, 0.661921, 0.667534, 0.66811, 0.528016, 0.668187, 0.668186, 0.635471, 0.668187, 0.659096, 0.666861, 0.666715, 0.668138, 0.668186, - 0.583768, 0.569262, 0.575267, 0.573003, 0.566785, 0.575539, 0.58546, 0.57339, 0.572642, 0.586082, + 0.583768, 0.569262, 0.575267, 0.573003, 0.566785, 0.575539, 0.58546, 0.57339, 0.572642, 0.586082, 0.593511, 0.573381, 0.581898, 0.578717, 0.569797, 0.582278, 0.595758, 0.579264, 0.578207, 0.596577, - 0.606134, 0.57925, 0.591004, 0.586675, 0.57415, 0.591515, 0.608935, 0.587425, 0.585974, 0.609946, + 0.606134, 0.57925, 0.591004, 0.586675, 0.57415, 0.591515, 0.608935, 0.587425, 0.585974, 0.609946, 0.621298, 0.587406, 0.602959, 0.597357, 0.580333, 0.603611, 0.624467, 0.598338, 0.596436, 0.625592, 0.637519, 0.598314, 0.617618, 0.610903, 0.588883, 0.618381, 0.640604, 0.612099, 0.609772, 0.641672, - 0.652065, 0.61207, 0.633798, 0.626647, 0.600233, 0.634582, 0.654454, 0.627954, 0.625399, 0.65525, - 0.662084, 0.627922, 0.649014, 0.642661, 0.614386, 0.649671, 0.663395, 0.643868, 0.64149, 0.663807, - 0.666772, 0.643839, 0.66026, 0.655973, 0.630413, 0.660667, 0.667203, 0.656835, 0.655116, 0.667328, - 0.66803, 0.656815, 0.666091, 0.664171, 0.646084, 0.666251, 0.668096, 0.66459, 0.663738, 0.668113, - 0.668182, 0.66458, 0.667903, 0.667432, 0.658361, 0.667935, 0.668185, 0.667547, 0.667307, 0.668186, - 0.582036, 0.580415, 0.582661, 0.562616, 0.57509, 0.584239, 0.583333, 0.583345, 0.568079, 0.561569, - 0.591189, 0.588995, 0.592029, 0.56367, 0.581651, 0.594139, 0.59293, 0.592946, 0.571674, 0.562114, - 0.603195, 0.600379, 0.604265, 0.56523, 0.59067, 0.606921, 0.605404, 0.605423, 0.576832, 0.562925, - 0.617895, 0.614559, 0.619142, 0.567524, 0.602533, 0.622196, 0.62046, 0.620482, 0.584076, 0.564129, - 0.634083, 0.630598, 0.635357, 0.57087, 0.617117, 0.638404, 0.636684, 0.636707, 0.593922, 0.565907, - 0.649254, 0.646247, 0.650314, 0.575687, 0.633281, 0.652764, 0.651396, 0.651414, 0.60665, 0.568515, + 0.652065, 0.61207, 0.633798, 0.626647, 0.600233, 0.634582, 0.654454, 0.627954, 0.625399, 0.65525, + 0.662084, 0.627922, 0.649014, 0.642661, 0.614386, 0.649671, 0.663395, 0.643868, 0.64149, 0.663807, + 0.666772, 0.643839, 0.66026, 0.655973, 0.630413, 0.660667, 0.667203, 0.656835, 0.655116, 0.667328, + 0.66803, 0.656815, 0.666091, 0.664171, 0.646084, 0.666251, 0.668096, 0.66459, 0.663738, 0.668113, + 0.668182, 0.66458, 0.667903, 0.667432, 0.658361, 0.667935, 0.668185, 0.667547, 0.667307, 0.668186, + 0.582036, 0.580415, 0.582661, 0.562616, 0.57509, 0.584239, 0.583333, 0.583345, 0.568079, 0.561569, + 0.591189, 0.588995, 0.592029, 0.56367, 0.581651, 0.594139, 0.59293, 0.592946, 0.571674, 0.562114, + 0.603195, 0.600379, 0.604265, 0.56523, 0.59067, 0.606921, 0.605404, 0.605423, 0.576832, 0.562925, + 0.617895, 0.614559, 0.619142, 0.567524, 0.602533, 0.622196, 0.62046, 0.620482, 0.584076, 0.564129, + 0.634083, 0.630598, 0.635357, 0.57087, 0.617117, 0.638404, 0.636684, 0.636707, 0.593922, 0.565907, + 0.649254, 0.646247, 0.650314, 0.575687, 0.633281, 0.652764, 0.651396, 0.651414, 0.60665, 0.568515, 0.660409, 0.658471, 0.661057, 0.582484, 0.648575, 0.662479, 0.661698, 0.661709, 0.621887, 0.572305, - 0.66615, 0.665341, 0.6664, 0.591792, 0.659985, 0.666907, 0.666636, 0.66664, 0.638101, 0.577728, + 0.66615, 0.665341, 0.6664, 0.591792, 0.659985, 0.666907, 0.666636, 0.66664, 0.638101, 0.577728, 0.667915, 0.667737, 0.667963, 0.603963, 0.665981, 0.668052, 0.668006, 0.668007, 0.652525, 0.585315, - 0.668174, 0.668159, 0.668178, 0.618792, 0.66788, 0.668183, 0.66818, 0.66818, 0.662345, 0.595566, + 0.668174, 0.668159, 0.668178, 0.618792, 0.66788, 0.668183, 0.66818, 0.66818, 0.662345, 0.595566, 0.579218, 0.577141, 0.579248, 0.572105, 0.565823, 0.568568, 0.564137, 0.582163, 0.572127, 0.560781, 0.587362, 0.584504, 0.587403, 0.577445, 0.568392, 0.572381, 0.565918, 0.591359, 0.577475, 0.560938, 0.598256, 0.594491, 0.598309, 0.584924, 0.572127, 0.577836, 0.568532, 0.603413, 0.584966, 0.561173, - 0.611999, 0.607362, 0.612063, 0.595049, 0.577477, 0.585464, 0.572329, 0.61815, 0.595104, 0.561524, + 0.611999, 0.607362, 0.612063, 0.595049, 0.577477, 0.585464, 0.572329, 0.61815, 0.595104, 0.561524, 0.627845, 0.622696, 0.627915, 0.608056, 0.584968, 0.595763, 0.577763, 0.634345, 0.608125, 0.562048, - 0.643768, 0.638894, 0.643833, 0.62348, 0.595107, 0.608942, 0.585363, 0.649473, 0.623558, 0.562827, - 0.656765, 0.653146, 0.65681, 0.639656, 0.608128, 0.624474, 0.59563, 0.660545, 0.639731, 0.563983, - 0.664556, 0.66269, 0.664578, 0.653734, 0.623561, 0.640611, 0.608777, 0.666203, 0.653791, 0.565691, + 0.643768, 0.638894, 0.643833, 0.62348, 0.595107, 0.608942, 0.585363, 0.649473, 0.623558, 0.562827, + 0.656765, 0.653146, 0.65681, 0.639656, 0.608128, 0.624474, 0.59563, 0.660545, 0.639731, 0.563983, + 0.664556, 0.66269, 0.664578, 0.653734, 0.623561, 0.640611, 0.608777, 0.666203, 0.653791, 0.565691, 0.667538, 0.666978, 0.667544, 0.663011, 0.639734, 0.654459, 0.624289, 0.667925, 0.663042, 0.5682, 0.668139, 0.668063, 0.668139, 0.667082, 0.653793, 0.663397, 0.640434, 0.668175, 0.667092, 0.571849, - 0.577977, 0.578955, 0.568828, 0.573079, 0.566562, 0.562011, 0.573728, 0.56272, 0.585197, 0.587567, - 0.585658, 0.587002, 0.572757, 0.578824, 0.569471, 0.562771, 0.57974, 0.563825, 0.59541, 0.598524, + 0.577977, 0.578955, 0.568828, 0.573079, 0.566562, 0.562011, 0.573728, 0.56272, 0.585197, 0.587567, + 0.585658, 0.587002, 0.572757, 0.578824, 0.569471, 0.562771, 0.57974, 0.563825, 0.59541, 0.598524, 0.596018, 0.597785, 0.578369, 0.586822, 0.573683, 0.563901, 0.588076, 0.565458, 0.608505, 0.612324, - 0.609258, 0.611426, 0.586197, 0.59755, 0.579676, 0.56557, 0.599186, 0.567859, 0.623984, 0.628198, - 0.624826, 0.62722, 0.59673, 0.611138, 0.587988, 0.568023, 0.613126, 0.571356, 0.640142, 0.644091, - 0.640947, 0.643193, 0.610134, 0.626905, 0.599072, 0.571593, 0.629065, 0.57638, 0.654104, 0.656992, - 0.654712, 0.656356, 0.625799, 0.642901, 0.612988, 0.576717, 0.644878, 0.583449, 0.66321, 0.664664, - 0.663529, 0.664358, 0.641868, 0.656146, 0.628916, 0.583917, 0.65754, 0.593086, 0.667146, 0.667567, - 0.667244, 0.667485, 0.655394, 0.664256, 0.644744, 0.59371, 0.664921, 0.6056, 0.668088, 0.668142, - 0.668102, 0.668132, 0.66388, 0.667456, 0.657447, 0.606385, 0.667634, 0.620685, 0.668185, 0.668187}, - std::vector{ - 0.559698, 0.587499, 0.58592, 0.563707, 0.587544, 0.56698, 0.571671, 0.571423, 0.579197, 0.585993, - 0.583768, 0.569262, 0.575267, 0.573003, 0.566785, 0.575539, 0.58546, 0.57339, 0.572642, 0.586082, - 0.582036, 0.580415, 0.582661, 0.562616, 0.57509, 0.584239, 0.583333, 0.583345, 0.568079, 0.561569, - 0.579218, 0.577141, 0.579248, 0.572105, 0.565823, 0.568568, 0.564137, 0.582163, 0.572127, 0.560781, - 0.577977, 0.578955, 0.568828, 0.573079, 0.566562, 0.562011, 0.573728, 0.56272, 0.585197, 0.587567}, - std::vector{ - 1.2132, 1.37242, 1.3621, 1.23365, 1.37271, 1.25089, 1.27652, 1.27513, 1.32014, 1.36258, - 1.34833, 1.26322, 1.29695, 1.284, 1.24985, 1.29853, 1.35913, 1.2862, 1.28197, 1.36315, - 1.33748, 1.32752, 1.34137, 1.22801, 1.29593, 1.35132, 1.34559, 1.34566, 1.25679, 1.22266, - 1.32026, 1.30789, 1.32044, 1.27895, 1.24474, 1.25944, 1.23589, 1.33827, 1.27907, 1.21865, - 1.31284, 1.31868, 1.26086, 1.28443, 1.24866, 1.22491, 1.28812, 1.22855, 1.35744, 1.37287}), + 0.609258, 0.611426, 0.586197, 0.59755, 0.579676, 0.56557, 0.599186, 0.567859, 0.623984, 0.628198, + 0.624826, 0.62722, 0.59673, 0.611138, 0.587988, 0.568023, 0.613126, 0.571356, 0.640142, 0.644091, + 0.640947, 0.643193, 0.610134, 0.626905, 0.599072, 0.571593, 0.629065, 0.57638, 0.654104, 0.656992, + 0.654712, 0.656356, 0.625799, 0.642901, 0.612988, 0.576717, 0.644878, 0.583449, 0.66321, 0.664664, + 0.663529, 0.664358, 0.641868, 0.656146, 0.628916, 0.583917, 0.65754, 0.593086, 0.667146, 0.667567, + 0.667244, 0.667485, 0.655394, 0.664256, 0.644744, 0.59371, 0.664921, 0.6056, 0.668088, 0.668142, + 0.668102, 0.668132, 0.66388, 0.667456, 0.657447, 0.606385, 0.667634, 0.620685, 0.668185, 0.668187}, + std::vector{0.559698, 0.587499, 0.58592, 0.563707, 0.587544, 0.56698, 0.571671, 0.571423, 0.579197, + 0.585993, 0.583768, 0.569262, 0.575267, 0.573003, 0.566785, 0.575539, 0.58546, 0.57339, + 0.572642, 0.586082, 0.582036, 0.580415, 0.582661, 0.562616, 0.57509, 0.584239, 0.583333, + 0.583345, 0.568079, 0.561569, 0.579218, 0.577141, 0.579248, 0.572105, 0.565823, 0.568568, + 0.564137, 0.582163, 0.572127, 0.560781, 0.577977, 0.578955, 0.568828, 0.573079, 0.566562, + 0.562011, 0.573728, 0.56272, 0.585197, 0.587567}, + std::vector{1.2132, 1.37242, 1.3621, 1.23365, 1.37271, 1.25089, 1.27652, 1.27513, 1.32014, 1.36258, + 1.34833, 1.26322, 1.29695, 1.284, 1.24985, 1.29853, 1.35913, 1.2862, 1.28197, 1.36315, + 1.33748, 1.32752, 1.34137, 1.22801, 1.29593, 1.35132, 1.34559, 1.34566, 1.25679, 1.22266, + 1.32026, 1.30789, 1.32044, 1.27895, 1.24474, 1.25944, 1.23589, 1.33827, 1.27907, 1.21865, + 1.31284, 1.31868, 1.26086, 1.28443, 1.24866, 1.22491, 1.28812, 1.22855, 1.35744, 1.37287}), LSTMSequenceParams( - 5, 10, 10, 10, - 0.f, op::RecurrentSequenceDirection::BIDIRECTIONAL, + 5, + 10, + 10, + 10, + 0.f, + op::RecurrentSequenceDirection::BIDIRECTIONAL, ET, - std::vector{ - -5, 3.90155, -3.69293, -4.60241, 3.26436, 0.320779, 4.5631, -0.380737, 4.23738, -1.26079, - -3.45027, 3.92344, -4.7321, -2.08498, -1.01256, 3.07289, 1.27094, 4.07925, 0.563973, 3.39919, - -4.49512, 3.06235, 4.30816, -1.3597, 1.90948, -3.70685, 3.32686, -1.81646, 2.37202, 0.967696, - -1.36293, 2.94971, 1.98481, 3.21879, 3.99466, 3.31899, 4.09958, 4.74914, 1.5612, 3.1199, - -3.97256, -2.62472, -1.20655, 1.99236, -0.150548, -0.847778, 1.38662, 2.5929, 0.575229, 1.93455, - 4.13259, -4.75387, 3.37378, -1.16795, -2.01229, -4.93703, -0.624426, 2.37937, -1.2424, -0.0675053, - -4.8596, -2.50563, -1.52865, 2.96687, 4.38399, -3.99478, 2.35403, 4.76437, 2.05886, 4.51765, - 4.27848, -0.899691, -1.61905, 2.69108, -1.65352, -4.17313, 3.98558, 2.87335, 2.17466, -0.560098, - 2.50892, 1.57898, -1.39303, -1.21677, 1.49632, -4.44363, -4.21741, -4.08097, 3.05105, -4.34693, - -2.75681, -3.47867, 1.80591, -3.74041, -2.42642, -0.620324, -3.90332, -1.85434, -1.49268, 2.61143, - -4.01149, 4.3146, -1.73921, -0.733643, -2.29319, 2.8811, -0.46676, -4.16764, -4.29623, -1.70251, - -3.07895, 3.37865, -4.38315, 0.542347, 0.706112, -0.378897, 4.48829, -1.55226, 3.84449, -0.689599, - 4.9448, 3.00503, 4.41634, -1.2052, -0.945752, -2.13112, -0.494659, 2.65111, 0.798992, -1.21877, - 1.22393, 2.39173, 4.13383, 0.321036, 0.178213, -3.97413, -3.7833, 1.43697, -0.540356, -4.23675, - -3.47431, -4.20492, 3.79371, -3.38526, 4.22951, -4.96421, 3.02602, -1.96467, -2.55246, 2.68211, - 2.03482, 3.86176, 4.13142, -2.74689, -0.785165, -3.34138, -2.89165, 3.39898, 4.1545, 1.81591, - -0.907431, -2.77872, 3.353, 2.76737, 2.37346, 3.58702, 4.72511, -0.900406, 0.97014, 2.38442, - -2.3329, 2.63133, 4.30503, 3.74689, -3.83837, 4.67289, -1.97013, 1.09016, -3.32243, 3.58426, - 2.26392, -4.34882, 0.180985, 0.954856, -0.420779, 0.922418, -1.80545, 3.19832, -4.07261, -3.2313, - -2.79288, -0.259067, 4.17452, 4.91536, 1.04214, 4.20558, -1.33364, -4.92198, 1.55017, -3.31947, - -0.0354189, 2.90804, 3.17961, -1.33237, -3.71257, -3.02883, -4.79104, 1.33544, -0.213819, -2.87557, - -2.34522, -3.11141, 3.8981, 2.16143, -4.31427, -2.54362, 4.20355, -2.95095, -0.341185, 2.63071, - 0.323663, 0.510221, -2.64869, -2.24021, -4.83154, -0.775629, -4.53002, -4.408, -1.81016, -0.569383, - -3.31418, -1.98672, -0.505968, -0.269187, 2.04221, 2.0064, 0.936495, 4.72935, 1.62178, 3.77815, - -0.856647, 2.98075, -3.62022, -2.38874, -2.73203, 0.32452, 1.94716, -2.56023, -3.04901, 2.90142, - -0.946198, -0.649191, 1.26384, 1.78817, -0.685465, -2.04822, 4.97285, -3.02725, 0.579597, -0.268873, - -4.11244, -1.8748, 0.986787, -4.50772, -1.32017, -3.71768, -4.74007, 2.32116, -2.36806, 2.1148, - 1.77435, 3.20644, 2.91006, 1.0576, 0.040031, -0.693013, -3.99159, -0.134746, -0.996052, 0.871714, - -0.558411, -2.66077, 1.34212, -2.70768, -2.48549, 4.78571, -0.533973, -4.19112, -3.80203, -0.372218, - 2.78486, -1.01506, 1.24482, 2.98445, -0.054502, -4.6262, 2.19206, 1.93343, -1.84538, 3.36576, - -4.59602, 1.29602, -4.78253, 2.41768, -1.03034, 0.195816, -0.357983, 1.74115, 3.50352, -1.8395, - -1.84175, -3.3264, 1.84545, 3.18232, -3.17197, -4.65516, 0.099389, 2.78295, 1.16561, 4.40189, - -2.72039, 2.82907, -0.886233, 1.94296, -2.49201, 0.0732732, -2.1904, -2.81447, 4.23764, 2.78202, - -2.40743, -2.72875, 2.93405, -3.2296, -2.05866, 3.17168, -0.537993, 3.49845, 4.39583, -3.02873, - 4.25922, -0.988387, -0.319124, -2.75173, 2.13604, 1.40662, 4.13165, -0.0455708, -2.61541, 1.80269, - 1.47976, 2.68583, 1.17727, 2.07096, 1.70281, -0.164106, 4.14009, -4.72156, 4.03386, -0.540462, - 0.445455, -4.80477, 3.62873, 1.34778, -0.00214738, -1.15734, -4.95873, 2.35589, -2.48324, 4.71877, - -4.07758, -0.347755, 1.31999, -1.13152, -3.42124, -0.213052, 0.381509, 4.51867, 1.8423, -0.422192, - -0.373053, -3.20722, 4.84911, 4.98759, 1.53754, 3.11106, -1.74677, -4.38349, -3.607, -2.97331, - -4.59993, 2.04576, -3.01871, -2.4555, 3.51632, 1.57353, 3.06249, -1.84659, 3.07473, 3.85288, - 1.85531, 2.96839, 3.75157, -1.82426, 3.49344, 3.04875, 0.71311, -3.9376, 2.54977, 2.07647, - -3.20233, 3.50968, 3.24609, 4.12168, 3.55772, -2.85005, -1.62315, -4.60564, -2.6492, -3.75128, - -2.22564, -0.612792, 3.59931, -1.77079, 4.87547, 4.65284, 1.9526, 1.70281, -4.63869, 2.85457, - 0.288541, 1.72943, -0.736331, -4.60023, 1.45358, 0.686768, 2.04933, 2.03743, -2.74135, 4.84682, - -3.81892, -2.94531, 4.53125, 4.34582, -1.61202, 4.303, -3.96169, -3.74095, -0.587597, 1.23201, - 1.07801, -3.29982, -1.67119, -3.5092, 4.58204, -4.3539, -3.8294, -0.393197, -1.27755, 4.51992, - 0.799879, -3.65947, -4.4236, 1.55178, 2.10673, -0.952616, 1.60253, 3.44643, 4.88377, 4.55128, - 2.33666, -2.0583, 2.05126, 0.00725121, -1.64708, 0.236305, 3.96222, 4.37011, -0.541235, 2.26144, - 3.06963, -3.04004, 0.46284, -3.50942, -3.12654, -1.16702, -4.42878, 1.78286, 3.87648, -1.56109, - -2.42598, -3.80421, -0.981378, -1.63223, -4.18565, 1.30126, 0.627183, -4.24035, -4.25213, 5}, - std::vector{ - -5, 0.0972095, -3.16646, 3.08769, 4.37785, -4.70394, 2.84984, -3.36123, -0.661491, 0.742674, - -2.82977, 3.30679, -2.0046, -1.39169, 3.69357, -4.87822, 1.75331, -0.187543, 4.77267, -2.89035, - -2.86541, 4.43989, -1.73837, 4.86129, -0.626666, 4.65384, -2.42069, 2.59966, -3.07773, -2.17051, - 2.69538, -4.91818, -1.47175, -2.66442, -1.14894, -3.90875, -0.92652, -0.946207, 2.70024, 3.4187, - -1.06892, -0.336707, -3.95977, -3.09231, 1.72681, -0.253682, 3.01543, -2.52343, 2.41461, 1.73951, - 1.55908, -2.88157, 0.895772, 2.83656, -0.0438242, -3.9921, 3.78771, 1.16734, 1.89495, 4.71639, - -0.788449, -4.285, -3.09649, -2.73812, -4.50129, -3.22373, 0.570888, 4.57888, 4.49166, -0.0809164, - -3.61267, -2.40318, 0.749356, 4.85626, -3.93755, -0.299189, -4.53363, -2.2065, 0.998577, -4.88086, - -4.95235, -4.83644, -0.938169, -3.2432, -3.98636, -0.724817, 1.77318, 0.215689, -1.7268, 0.475434, - 2.16854, -0.953869, 0.724856, 3.98419, -2.91751, 3.49012, -2.84873, -3.42912, -1.53297, 5}, - std::vector{ - -5, -2.4224, 0.545224, 2.07068, -0.174741, 4.84283, 0.469625, -1.36484, -2.49666, 1.16077, - -2.47798, 1.30443, 4.90657, -4.86712, 2.60958, -3.6434, 4.98959, 2.83648, 3.12445, 1.24863, - -3.56188, 1.18263, 4.00651, -4.49285, -3.35389, 3.84102, -0.692219, 4.58475, -2.85036, -2.88143, - 3.93052, 2.39646, -2.43019, -1.74484, 1.43614, 4.831, 1.03788, 0.298718, -0.686032, -0.304259, - -2.28994, -3.89952, -1.95116, -4.86558, 1.41202, -4.93245, -2.05543, 2.04177, -4.60741, -1.50938, - 3.88719, 1.83697, -4.37124, 1.66286, 1.39415, 3.97862, -3.03259, -0.518552, 0.380681, 4.66685, - 4.75549, -1.81382, -4.49654, -2.51648, 4.04178, -4.34012, -0.0679991, -2.20335, 2.7089, 3.73041, - 4.24063, 0.901985, 3.52631, 4.06229, -1.28391, -4.74323, -3.84049, 3.54115, -3.26689, -2.21037, - -2.83436, -3.75905, -3.71528, 3.58726, 4.65168, -2.66566, -1.87998, 1.95093, 3.66591, -3.2642, - 4.71373, -1.11216, -0.158811, 3.29267, -4.30107, -0.782312, -3.3017, 2.70345, 4.31324, 5}, + std::vector{-5, 3.90155, -3.69293, -4.60241, 3.26436, 0.320779, 4.5631, -0.380737, + 4.23738, -1.26079, -3.45027, 3.92344, -4.7321, -2.08498, -1.01256, 3.07289, + 1.27094, 4.07925, 0.563973, 3.39919, -4.49512, 3.06235, 4.30816, -1.3597, + 1.90948, -3.70685, 3.32686, -1.81646, 2.37202, 0.967696, -1.36293, 2.94971, + 1.98481, 3.21879, 3.99466, 3.31899, 4.09958, 4.74914, 1.5612, 3.1199, + -3.97256, -2.62472, -1.20655, 1.99236, -0.150548, -0.847778, 1.38662, 2.5929, + 0.575229, 1.93455, 4.13259, -4.75387, 3.37378, -1.16795, -2.01229, -4.93703, + -0.624426, 2.37937, -1.2424, -0.0675053, -4.8596, -2.50563, -1.52865, 2.96687, + 4.38399, -3.99478, 2.35403, 4.76437, 2.05886, 4.51765, 4.27848, -0.899691, + -1.61905, 2.69108, -1.65352, -4.17313, 3.98558, 2.87335, 2.17466, -0.560098, + 2.50892, 1.57898, -1.39303, -1.21677, 1.49632, -4.44363, -4.21741, -4.08097, + 3.05105, -4.34693, -2.75681, -3.47867, 1.80591, -3.74041, -2.42642, -0.620324, + -3.90332, -1.85434, -1.49268, 2.61143, -4.01149, 4.3146, -1.73921, -0.733643, + -2.29319, 2.8811, -0.46676, -4.16764, -4.29623, -1.70251, -3.07895, 3.37865, + -4.38315, 0.542347, 0.706112, -0.378897, 4.48829, -1.55226, 3.84449, -0.689599, + 4.9448, 3.00503, 4.41634, -1.2052, -0.945752, -2.13112, -0.494659, 2.65111, + 0.798992, -1.21877, 1.22393, 2.39173, 4.13383, 0.321036, 0.178213, -3.97413, + -3.7833, 1.43697, -0.540356, -4.23675, -3.47431, -4.20492, 3.79371, -3.38526, + 4.22951, -4.96421, 3.02602, -1.96467, -2.55246, 2.68211, 2.03482, 3.86176, + 4.13142, -2.74689, -0.785165, -3.34138, -2.89165, 3.39898, 4.1545, 1.81591, + -0.907431, -2.77872, 3.353, 2.76737, 2.37346, 3.58702, 4.72511, -0.900406, + 0.97014, 2.38442, -2.3329, 2.63133, 4.30503, 3.74689, -3.83837, 4.67289, + -1.97013, 1.09016, -3.32243, 3.58426, 2.26392, -4.34882, 0.180985, 0.954856, + -0.420779, 0.922418, -1.80545, 3.19832, -4.07261, -3.2313, -2.79288, -0.259067, + 4.17452, 4.91536, 1.04214, 4.20558, -1.33364, -4.92198, 1.55017, -3.31947, + -0.0354189, 2.90804, 3.17961, -1.33237, -3.71257, -3.02883, -4.79104, 1.33544, + -0.213819, -2.87557, -2.34522, -3.11141, 3.8981, 2.16143, -4.31427, -2.54362, + 4.20355, -2.95095, -0.341185, 2.63071, 0.323663, 0.510221, -2.64869, -2.24021, + -4.83154, -0.775629, -4.53002, -4.408, -1.81016, -0.569383, -3.31418, -1.98672, + -0.505968, -0.269187, 2.04221, 2.0064, 0.936495, 4.72935, 1.62178, 3.77815, + -0.856647, 2.98075, -3.62022, -2.38874, -2.73203, 0.32452, 1.94716, -2.56023, + -3.04901, 2.90142, -0.946198, -0.649191, 1.26384, 1.78817, -0.685465, -2.04822, + 4.97285, -3.02725, 0.579597, -0.268873, -4.11244, -1.8748, 0.986787, -4.50772, + -1.32017, -3.71768, -4.74007, 2.32116, -2.36806, 2.1148, 1.77435, 3.20644, + 2.91006, 1.0576, 0.040031, -0.693013, -3.99159, -0.134746, -0.996052, 0.871714, + -0.558411, -2.66077, 1.34212, -2.70768, -2.48549, 4.78571, -0.533973, -4.19112, + -3.80203, -0.372218, 2.78486, -1.01506, 1.24482, 2.98445, -0.054502, -4.6262, + 2.19206, 1.93343, -1.84538, 3.36576, -4.59602, 1.29602, -4.78253, 2.41768, + -1.03034, 0.195816, -0.357983, 1.74115, 3.50352, -1.8395, -1.84175, -3.3264, + 1.84545, 3.18232, -3.17197, -4.65516, 0.099389, 2.78295, 1.16561, 4.40189, + -2.72039, 2.82907, -0.886233, 1.94296, -2.49201, 0.0732732, -2.1904, -2.81447, + 4.23764, 2.78202, -2.40743, -2.72875, 2.93405, -3.2296, -2.05866, 3.17168, + -0.537993, 3.49845, 4.39583, -3.02873, 4.25922, -0.988387, -0.319124, -2.75173, + 2.13604, 1.40662, 4.13165, -0.0455708, -2.61541, 1.80269, 1.47976, 2.68583, + 1.17727, 2.07096, 1.70281, -0.164106, 4.14009, -4.72156, 4.03386, -0.540462, + 0.445455, -4.80477, 3.62873, 1.34778, -0.00214738, -1.15734, -4.95873, 2.35589, + -2.48324, 4.71877, -4.07758, -0.347755, 1.31999, -1.13152, -3.42124, -0.213052, + 0.381509, 4.51867, 1.8423, -0.422192, -0.373053, -3.20722, 4.84911, 4.98759, + 1.53754, 3.11106, -1.74677, -4.38349, -3.607, -2.97331, -4.59993, 2.04576, + -3.01871, -2.4555, 3.51632, 1.57353, 3.06249, -1.84659, 3.07473, 3.85288, + 1.85531, 2.96839, 3.75157, -1.82426, 3.49344, 3.04875, 0.71311, -3.9376, + 2.54977, 2.07647, -3.20233, 3.50968, 3.24609, 4.12168, 3.55772, -2.85005, + -1.62315, -4.60564, -2.6492, -3.75128, -2.22564, -0.612792, 3.59931, -1.77079, + 4.87547, 4.65284, 1.9526, 1.70281, -4.63869, 2.85457, 0.288541, 1.72943, + -0.736331, -4.60023, 1.45358, 0.686768, 2.04933, 2.03743, -2.74135, 4.84682, + -3.81892, -2.94531, 4.53125, 4.34582, -1.61202, 4.303, -3.96169, -3.74095, + -0.587597, 1.23201, 1.07801, -3.29982, -1.67119, -3.5092, 4.58204, -4.3539, + -3.8294, -0.393197, -1.27755, 4.51992, 0.799879, -3.65947, -4.4236, 1.55178, + 2.10673, -0.952616, 1.60253, 3.44643, 4.88377, 4.55128, 2.33666, -2.0583, + 2.05126, 0.00725121, -1.64708, 0.236305, 3.96222, 4.37011, -0.541235, 2.26144, + 3.06963, -3.04004, 0.46284, -3.50942, -3.12654, -1.16702, -4.42878, 1.78286, + 3.87648, -1.56109, -2.42598, -3.80421, -0.981378, -1.63223, -4.18565, 1.30126, + 0.627183, -4.24035, -4.25213, 5}, + std::vector{-5, 0.0972095, -3.16646, 3.08769, 4.37785, -4.70394, 2.84984, -3.36123, + -0.661491, 0.742674, -2.82977, 3.30679, -2.0046, -1.39169, 3.69357, -4.87822, + 1.75331, -0.187543, 4.77267, -2.89035, -2.86541, 4.43989, -1.73837, 4.86129, + -0.626666, 4.65384, -2.42069, 2.59966, -3.07773, -2.17051, 2.69538, -4.91818, + -1.47175, -2.66442, -1.14894, -3.90875, -0.92652, -0.946207, 2.70024, 3.4187, + -1.06892, -0.336707, -3.95977, -3.09231, 1.72681, -0.253682, 3.01543, -2.52343, + 2.41461, 1.73951, 1.55908, -2.88157, 0.895772, 2.83656, -0.0438242, -3.9921, + 3.78771, 1.16734, 1.89495, 4.71639, -0.788449, -4.285, -3.09649, -2.73812, + -4.50129, -3.22373, 0.570888, 4.57888, 4.49166, -0.0809164, -3.61267, -2.40318, + 0.749356, 4.85626, -3.93755, -0.299189, -4.53363, -2.2065, 0.998577, -4.88086, + -4.95235, -4.83644, -0.938169, -3.2432, -3.98636, -0.724817, 1.77318, 0.215689, + -1.7268, 0.475434, 2.16854, -0.953869, 0.724856, 3.98419, -2.91751, 3.49012, + -2.84873, -3.42912, -1.53297, 5}, + std::vector{-5, -2.4224, 0.545224, 2.07068, -0.174741, 4.84283, 0.469625, -1.36484, + -2.49666, 1.16077, -2.47798, 1.30443, 4.90657, -4.86712, 2.60958, -3.6434, + 4.98959, 2.83648, 3.12445, 1.24863, -3.56188, 1.18263, 4.00651, -4.49285, + -3.35389, 3.84102, -0.692219, 4.58475, -2.85036, -2.88143, 3.93052, 2.39646, + -2.43019, -1.74484, 1.43614, 4.831, 1.03788, 0.298718, -0.686032, -0.304259, + -2.28994, -3.89952, -1.95116, -4.86558, 1.41202, -4.93245, -2.05543, 2.04177, + -4.60741, -1.50938, 3.88719, 1.83697, -4.37124, 1.66286, 1.39415, 3.97862, + -3.03259, -0.518552, 0.380681, 4.66685, 4.75549, -1.81382, -4.49654, -2.51648, + 4.04178, -4.34012, -0.0679991, -2.20335, 2.7089, 3.73041, 4.24063, 0.901985, + 3.52631, 4.06229, -1.28391, -4.74323, -3.84049, 3.54115, -3.26689, -2.21037, + -2.83436, -3.75905, -3.71528, 3.58726, 4.65168, -2.66566, -1.87998, 1.95093, + 3.66591, -3.2642, 4.71373, -1.11216, -0.158811, 3.29267, -4.30107, -0.782312, + -3.3017, 2.70345, 4.31324, 5}, std::vector{10, 10, 10, 10, 10}, std::vector{ - -5, 1.38574, -3.40488, 1.59498, -1.40479, -0.774824, 0.776861, 4.44599, 4.65645, -0.93456, - -2.73502, 3.51855, 4.47696, 2.91625, -0.68445, 4.43112, -4.38335, 3.58399, -3.5086, 0.863423, - -0.279341, 2.84091, 3.83352, -2.69488, 2.11292, -4.86518, 1.38034, 1.30028, -1.84802, 4.05115, - 1.67509, 4.59603, 2.46173, 1.70552, -2.21902, 4.04495, 1.18181, -2.28113, -4.71689, -3.04267, - 0.500298, -2.41982, 3.09957, -2.96136, 3.4832, -4.11859, -3.75488, -3.0709, 1.24288, -1.92552, - 1.90494, 3.41518, 1.08902, 2.44889, 3.9638, 3.99164, -3.69309, -2.63514, 3.04926, 3.2098, - -0.405537, 3.22924, 4.65977, 2.24535, -1.10242, -3.97405, 3.67443, 2.69645, 3.40125, -3.05413, - 2.16447, 3.45673, -0.00307435, -4.73115, 3.10638, 2.40497, 4.16993, -1.29241, -2.06006, 0.470756, - 0.781379, -2.77629, 0.291053, -0.862092, 0.863825, -2.31703, 4.10805, 2.96997, -4.90259, 4.54135, - 0.149612, 3.08602, -2.13883, -3.62432, -2.40104, -2.07502, -4.83612, 3.99756, 2.82135, -0.395894, - 4.39348, 0.466077, 0.766771, 2.01238, 2.06508, 0.772249, 1.9867, -0.996579, 2.48071, 4.49585, - 0.453517, -4.17035, 3.7106, 3.36282, 3.23191, -0.640585, 1.38488, -2.17163, 0.652199, -0.158743, - 4.6801, -0.926323, -2.0441, 4.05972, 1.53695, -1.47499, -3.02639, -2.46746, 2.02894, 3.84978, - 3.51725, 4.88996, -1.55536, -2.95742, 2.67589, -0.955491, -2.58142, -1.12036, -1.63169, -3.3286, - 0.909692, -4.98742, 2.3819, -3.80322, 2.35674, -2.01539, -1.54806, -0.301092, 4.52245, 0.48912, - 0.349015, -4.47653, -3.93302, -4.539, 4.10146, -0.21952, -4.79841, 4.41982, 1.43739, 1.89926, - 2.67474, 2.62216, -0.913088, -4.2081, 3.61542, -3.64835, 1.87344, 0.211608, 3.65209, -4.61966, - 3.15605, 0.0621908, -4.82205, -1.12782, 1.66538, 2.10551, -0.21663, -1.87744, 3.8985, -1.33132, - 2.94648, -4.89908, 1.08219, -1.82947, 1.3488, -0.839479, 0.424618, 0.108287, 3.44509, 1.66413, - 1.10641, 1.12783, 2.57802, 0.222069, 0.469913, 1.64298, 4.05762, 2.89772, 0.158175, 2.14327, - 0.0127615, 4.38472, 1.37834, 3.20256, -4.69572, 3.79924, -0.31191, 3.94988, -2.49268, -3.9734, - -1.95347, -1.11895, 2.22331, -4.87892, -1.7993, -3.93962, 0.940251, 1.50669, 4.12202, 1.14476, - -3.22335, -4.6922, 0.274547, 0.786363, 4.96083, -3.72688, -0.46743, 1.34387, 3.52815, 0.378364, - 0.989814, -4.81342, -4.99949, -2.57458, -4.8473, 3.61751, -0.291682, -4.45674, -3.86048, 4.55838, - -0.558553, 4.22434, 0.485826, 3.02256, -4.18217, -0.970154, -2.29033, -3.17236, -3.24192, -1.19776, - -1.10376, 2.74642, 2.92208, -0.253459, -0.727743, -2.6816, 2.05987, 0.821414, 2.55421, 1.73239, - 1.07334, -0.51151, -4.08995, 4.54727, 0.354294, 1.32332, -0.95764, -0.890992, -2.10241, -2.70027, - -3.80798, -4.92614, 1.72164, 4.90619, 0.68811, -2.84043, 0.228619, 3.06368, 1.88669, 4.06624, - -0.317901, 4.32894, 3.31458, -3.78791, -4.13413, -0.720673, -4.2847, 2.5743, -2.0607, -4.7294, - -1.1922, -4.25132, 2.51276, -2.46105, 3.63289, -2.9029, -3.89352, -4.56467, 4.42607, 4.82693, - -2.69463, 4.51783, -0.907243, -2.78669, 4.18723, 2.34626, 3.26836, -2.76921, 4.75613, -1.25286, - -1.87767, 3.64592, -3.43697, -3.65555, -2.30538, 2.84627, -2.97604, 1.01567, -1.38899, -3.59646, - 1.65457, 1.07598, 0.107017, -4.40483, -3.71999, 4.20983, 0.778437, 4.03383, 1.31396, 3.58678, - 4.77689, 0.578005, -2.15946, -4.90681, 1.4671, 2.04727, -4.43527, -1.89183, 3.54344, 3.0036, - 3.81351, -0.304046, 4.08728, -1.53035, 0.84424, 3.17114, 2.83768, -0.247921, -1.93513, -4.63661, - -1.12005, 1.45256, -1.15546, 1.60745, -3.76519, 3.94909, 1.43606, -3.87999, 1.78168, 0.370893, - 2.32649, -0.945226, 3.86596, -4.42396, 0.844734, -2.1054, 0.0782569, 2.11735, 3.4132, 1.88877, - -3.23712, 2.91202, 2.16514, 2.07883, 1.37829, -3.31629, 2.28908, 3.98293, -0.77331, -0.164568, - -3.97808, -1.30991, 3.64372, 4.19263, 3.90947, -1.78475, 3.94366, 4.18793, -4.11379, 3.91526, - 1.33598, -0.0962256, 4.72887, -1.53884, 3.28632, -1.22307, 1.04336, -1.78493, 4.46535, 2.2445, - 3.79802, -1.44113, 2.9843, -3.40275, 4.31126, 1.63422, -4.32046, 4.21314, 4.49346, 2.26706, - -4.63838, -2.81771, -3.23518, -0.494282, 1.80663, -0.345847, -4.71775, -4.64164, -1.17283, 1.11853, - -1.94206, 3.73188, 3.61315, 0.36183, -2.94746, 2.7314, -4.61468, 3.86121, 0.19202, 1.18747, - 4.02233, -3.69848, 1.33929, 2.94477, 1.80769, -2.99931, -4.77907, 0.0433281, 2.8262, -4.34346, - 0.171945, -2.70003, -1.17702, -3.16753, -0.665832, -0.493026, 3.40444, -2.0408, 3.98367, -3.76943, - 3.89665, 4.78787, 2.40015, -1.24947, 0.991205, 2.93423, -4.86143, 3.17028, -2.26548, 1.03663, - 4.61205, 4.75579, 4.99013, 4.23479, -4.45891, -2.65092, -3.90674, -3.53842, 0.178697, 2.23177, - -4.97903, -2.10417, -3.41522, -1.52118, -4.1973, 0.196365, -3.07567, 2.6714, 0.0329277, 1.86999, - -3.85877, -1.00351, -1.47763, -1.39762, -1.54178, 3.08322, -3.18606, 2.445, -3.89596, -1.96158, - 0.0700858, 0.518499, -3.63671, -0.617976, 0.341244, 2.04532, 3.65188, 2.35683, -0.89304, 0.0257487, - -1.54115, -0.860534, 2.32265, -3.83482, -2.42048, 2.69591, 4.02649, -1.87481, 4.63578, 0.771746, - 4.82279, -1.68132, 2.46822, 4.48127, -2.72111, -0.355886, 0.266078, -4.89841, -0.850352, 2.77856, - 0.429384, 3.58205, 3.09831, 4.72246, -2.40146, -2.7575, 4.35845, -1.53977, -2.47573, 1.727, - 1.54918, -3.72806, -1.09464, 0.902036, -3.65559, -2.55986, -3.64498, -2.5337, -4.78799, 2.46949, - -3.26495, -2.32184, 0.154838, -4.15034, -3.54186, 2.08248, 3.73156, -1.08542, 3.89507, 4.29175, - 4.46461, -4.04293, 2.00413, 1.75029, -2.7672, -0.584663, 3.17988, 3.9949, -1.16367, 2.6852, - 0.136113, 3.24949, 1.48249, -1.75121, 2.93909, -3.09163, 0.826285, 2.60739, -1.63573, 3.22668, - 0.00300903, 0.575604, -0.267615, -4.62369, -3.98882, 3.31384, -3.84641, -0.164339, -1.9838, 3.45511, - -1.04323, 3.56878, 3.3694, -4.81446, 1.85392, 1.59741, 4.2085, 1.54342, -1.25854, -0.0477599, - 4.83944, 3.41224, -4.87642, 3.34542, 4.34374, 1.68048, -4.17476, -3.99847, -1.0523, -4.77302, - -3.79443, -1.23287, -2.90961, -3.20999, 1.85511, 2.06811, -2.20368, -1.81411, -2.62059, 1.88005, - -3.17691, -2.90064, -3.11477, 1.7461, -3.02032, -4.01402, -4.87155, -2.7408, 2.13552, 3.60602, - -3.68662, 3.94441, 1.75357, 3.18497, -2.67031, 3.28189, 0.764719, 1.62342, -1.16762, -4.59845, - 0.336623, 2.26649, 3.89547, 2.07511, 2.93817, -1.03081, 3.30557, 0.72491, 3.1453, 0.769547, - -2.92608, 0.13144, -0.0691925, -4.07191, 4.01141, -3.50862, -0.749251, -3.21837, 1.06989, 3.97227, - 1.54475, 4.78368, -3.18741, 4.10281, 3.61094, -2.81927, 4.0446, -0.688241, -0.195357, -1.89505, - 1.3421, 3.13891, -0.625937, -3.07901, 0.676794, -4.31063, 0.110105, 0.219899, 3.43871, 3.34377, - 3.90145, -2.36654, 3.87301, -3.27531, 2.66387, -4.84057, 4.20739, -0.915956, 2.33027, 2.63642, - 1.31649, -3.45589, 3.61696, 1.39562, 1.50066, 0.953228, 2.33703, -1.74775, 1.90994, 0.158689, - 2.00179, 1.97409, -0.447395, 3.93314, 0.379663, -3.20044, -4.63811, 3.33694, -2.92811, -0.334244, - -1.82335, -1.99341, -2.38105, -3.42019, 4.49144, 4.50581, 0.146444, -4.01907, 2.76861, 2.54542, - -4.88271, 4.25518, 3.71932, -2.67843, -4.61096, 2.49717, 3.22838, 2.91755, 2.81098, -0.212338, - -4.09407, 3.46949, -0.264652, 0.653515, 0.510898, 1.74902, -0.615688, 0.225622, 3.35548, 2.3847, - 0.542832, -1.47433, 2.86275, -3.14377, -3.10022, 4.98831, 1.61969, 0.994205, 3.34565, -2.12893, - -2.35919, 0.905238, -0.847957, -3.33345, -0.448516, 1.31451, 3.56578, -4.07352, -0.694577, -3.23525, - 1.98038, 4.05222, 0.15182, 2.11475, -4.91253, -2.83372, -0.800172, -0.797281, 4.91775, 0.71457, - 2.64354, -4.37525, 3.93947, 4.29284, 0.376963, 0.483439, -1.20476, 1.54934, -1.60458, -2.03934, - 3.17352, 1.84459, -0.57479, 2.83865, 4.82469, -0.00921004, -3.30157, -3.63386, -3.94658, 1.96984, - 4.15967, 3.75591, -0.538282, -1.32521, 0.128334, -0.57577, 0.96914, 1.10537, 2.45218, 2.8899, - 1.61422, 1.46003, 2.45143, 1.49513, 0.761625, -3.07383, 0.554756, 4.26704, 0.702351, 5}, + -5, 1.38574, -3.40488, 1.59498, -1.40479, -0.774824, 0.776861, 4.44599, 4.65645, + -0.93456, -2.73502, 3.51855, 4.47696, 2.91625, -0.68445, 4.43112, -4.38335, 3.58399, + -3.5086, 0.863423, -0.279341, 2.84091, 3.83352, -2.69488, 2.11292, -4.86518, 1.38034, + 1.30028, -1.84802, 4.05115, 1.67509, 4.59603, 2.46173, 1.70552, -2.21902, 4.04495, + 1.18181, -2.28113, -4.71689, -3.04267, 0.500298, -2.41982, 3.09957, -2.96136, 3.4832, + -4.11859, -3.75488, -3.0709, 1.24288, -1.92552, 1.90494, 3.41518, 1.08902, 2.44889, + 3.9638, 3.99164, -3.69309, -2.63514, 3.04926, 3.2098, -0.405537, 3.22924, 4.65977, + 2.24535, -1.10242, -3.97405, 3.67443, 2.69645, 3.40125, -3.05413, 2.16447, 3.45673, + -0.00307435, -4.73115, 3.10638, 2.40497, 4.16993, -1.29241, -2.06006, 0.470756, 0.781379, + -2.77629, 0.291053, -0.862092, 0.863825, -2.31703, 4.10805, 2.96997, -4.90259, 4.54135, + 0.149612, 3.08602, -2.13883, -3.62432, -2.40104, -2.07502, -4.83612, 3.99756, 2.82135, + -0.395894, 4.39348, 0.466077, 0.766771, 2.01238, 2.06508, 0.772249, 1.9867, -0.996579, + 2.48071, 4.49585, 0.453517, -4.17035, 3.7106, 3.36282, 3.23191, -0.640585, 1.38488, + -2.17163, 0.652199, -0.158743, 4.6801, -0.926323, -2.0441, 4.05972, 1.53695, -1.47499, + -3.02639, -2.46746, 2.02894, 3.84978, 3.51725, 4.88996, -1.55536, -2.95742, 2.67589, + -0.955491, -2.58142, -1.12036, -1.63169, -3.3286, 0.909692, -4.98742, 2.3819, -3.80322, + 2.35674, -2.01539, -1.54806, -0.301092, 4.52245, 0.48912, 0.349015, -4.47653, -3.93302, + -4.539, 4.10146, -0.21952, -4.79841, 4.41982, 1.43739, 1.89926, 2.67474, 2.62216, + -0.913088, -4.2081, 3.61542, -3.64835, 1.87344, 0.211608, 3.65209, -4.61966, 3.15605, + 0.0621908, -4.82205, -1.12782, 1.66538, 2.10551, -0.21663, -1.87744, 3.8985, -1.33132, + 2.94648, -4.89908, 1.08219, -1.82947, 1.3488, -0.839479, 0.424618, 0.108287, 3.44509, + 1.66413, 1.10641, 1.12783, 2.57802, 0.222069, 0.469913, 1.64298, 4.05762, 2.89772, + 0.158175, 2.14327, 0.0127615, 4.38472, 1.37834, 3.20256, -4.69572, 3.79924, -0.31191, + 3.94988, -2.49268, -3.9734, -1.95347, -1.11895, 2.22331, -4.87892, -1.7993, -3.93962, + 0.940251, 1.50669, 4.12202, 1.14476, -3.22335, -4.6922, 0.274547, 0.786363, 4.96083, + -3.72688, -0.46743, 1.34387, 3.52815, 0.378364, 0.989814, -4.81342, -4.99949, -2.57458, + -4.8473, 3.61751, -0.291682, -4.45674, -3.86048, 4.55838, -0.558553, 4.22434, 0.485826, + 3.02256, -4.18217, -0.970154, -2.29033, -3.17236, -3.24192, -1.19776, -1.10376, 2.74642, + 2.92208, -0.253459, -0.727743, -2.6816, 2.05987, 0.821414, 2.55421, 1.73239, 1.07334, + -0.51151, -4.08995, 4.54727, 0.354294, 1.32332, -0.95764, -0.890992, -2.10241, -2.70027, + -3.80798, -4.92614, 1.72164, 4.90619, 0.68811, -2.84043, 0.228619, 3.06368, 1.88669, + 4.06624, -0.317901, 4.32894, 3.31458, -3.78791, -4.13413, -0.720673, -4.2847, 2.5743, + -2.0607, -4.7294, -1.1922, -4.25132, 2.51276, -2.46105, 3.63289, -2.9029, -3.89352, + -4.56467, 4.42607, 4.82693, -2.69463, 4.51783, -0.907243, -2.78669, 4.18723, 2.34626, + 3.26836, -2.76921, 4.75613, -1.25286, -1.87767, 3.64592, -3.43697, -3.65555, -2.30538, + 2.84627, -2.97604, 1.01567, -1.38899, -3.59646, 1.65457, 1.07598, 0.107017, -4.40483, + -3.71999, 4.20983, 0.778437, 4.03383, 1.31396, 3.58678, 4.77689, 0.578005, -2.15946, + -4.90681, 1.4671, 2.04727, -4.43527, -1.89183, 3.54344, 3.0036, 3.81351, -0.304046, + 4.08728, -1.53035, 0.84424, 3.17114, 2.83768, -0.247921, -1.93513, -4.63661, -1.12005, + 1.45256, -1.15546, 1.60745, -3.76519, 3.94909, 1.43606, -3.87999, 1.78168, 0.370893, + 2.32649, -0.945226, 3.86596, -4.42396, 0.844734, -2.1054, 0.0782569, 2.11735, 3.4132, + 1.88877, -3.23712, 2.91202, 2.16514, 2.07883, 1.37829, -3.31629, 2.28908, 3.98293, + -0.77331, -0.164568, -3.97808, -1.30991, 3.64372, 4.19263, 3.90947, -1.78475, 3.94366, + 4.18793, -4.11379, 3.91526, 1.33598, -0.0962256, 4.72887, -1.53884, 3.28632, -1.22307, + 1.04336, -1.78493, 4.46535, 2.2445, 3.79802, -1.44113, 2.9843, -3.40275, 4.31126, + 1.63422, -4.32046, 4.21314, 4.49346, 2.26706, -4.63838, -2.81771, -3.23518, -0.494282, + 1.80663, -0.345847, -4.71775, -4.64164, -1.17283, 1.11853, -1.94206, 3.73188, 3.61315, + 0.36183, -2.94746, 2.7314, -4.61468, 3.86121, 0.19202, 1.18747, 4.02233, -3.69848, + 1.33929, 2.94477, 1.80769, -2.99931, -4.77907, 0.0433281, 2.8262, -4.34346, 0.171945, + -2.70003, -1.17702, -3.16753, -0.665832, -0.493026, 3.40444, -2.0408, 3.98367, -3.76943, + 3.89665, 4.78787, 2.40015, -1.24947, 0.991205, 2.93423, -4.86143, 3.17028, -2.26548, + 1.03663, 4.61205, 4.75579, 4.99013, 4.23479, -4.45891, -2.65092, -3.90674, -3.53842, + 0.178697, 2.23177, -4.97903, -2.10417, -3.41522, -1.52118, -4.1973, 0.196365, -3.07567, + 2.6714, 0.0329277, 1.86999, -3.85877, -1.00351, -1.47763, -1.39762, -1.54178, 3.08322, + -3.18606, 2.445, -3.89596, -1.96158, 0.0700858, 0.518499, -3.63671, -0.617976, 0.341244, + 2.04532, 3.65188, 2.35683, -0.89304, 0.0257487, -1.54115, -0.860534, 2.32265, -3.83482, + -2.42048, 2.69591, 4.02649, -1.87481, 4.63578, 0.771746, 4.82279, -1.68132, 2.46822, + 4.48127, -2.72111, -0.355886, 0.266078, -4.89841, -0.850352, 2.77856, 0.429384, 3.58205, + 3.09831, 4.72246, -2.40146, -2.7575, 4.35845, -1.53977, -2.47573, 1.727, 1.54918, + -3.72806, -1.09464, 0.902036, -3.65559, -2.55986, -3.64498, -2.5337, -4.78799, 2.46949, + -3.26495, -2.32184, 0.154838, -4.15034, -3.54186, 2.08248, 3.73156, -1.08542, 3.89507, + 4.29175, 4.46461, -4.04293, 2.00413, 1.75029, -2.7672, -0.584663, 3.17988, 3.9949, + -1.16367, 2.6852, 0.136113, 3.24949, 1.48249, -1.75121, 2.93909, -3.09163, 0.826285, + 2.60739, -1.63573, 3.22668, 0.00300903, 0.575604, -0.267615, -4.62369, -3.98882, 3.31384, + -3.84641, -0.164339, -1.9838, 3.45511, -1.04323, 3.56878, 3.3694, -4.81446, 1.85392, + 1.59741, 4.2085, 1.54342, -1.25854, -0.0477599, 4.83944, 3.41224, -4.87642, 3.34542, + 4.34374, 1.68048, -4.17476, -3.99847, -1.0523, -4.77302, -3.79443, -1.23287, -2.90961, + -3.20999, 1.85511, 2.06811, -2.20368, -1.81411, -2.62059, 1.88005, -3.17691, -2.90064, + -3.11477, 1.7461, -3.02032, -4.01402, -4.87155, -2.7408, 2.13552, 3.60602, -3.68662, + 3.94441, 1.75357, 3.18497, -2.67031, 3.28189, 0.764719, 1.62342, -1.16762, -4.59845, + 0.336623, 2.26649, 3.89547, 2.07511, 2.93817, -1.03081, 3.30557, 0.72491, 3.1453, + 0.769547, -2.92608, 0.13144, -0.0691925, -4.07191, 4.01141, -3.50862, -0.749251, -3.21837, + 1.06989, 3.97227, 1.54475, 4.78368, -3.18741, 4.10281, 3.61094, -2.81927, 4.0446, + -0.688241, -0.195357, -1.89505, 1.3421, 3.13891, -0.625937, -3.07901, 0.676794, -4.31063, + 0.110105, 0.219899, 3.43871, 3.34377, 3.90145, -2.36654, 3.87301, -3.27531, 2.66387, + -4.84057, 4.20739, -0.915956, 2.33027, 2.63642, 1.31649, -3.45589, 3.61696, 1.39562, + 1.50066, 0.953228, 2.33703, -1.74775, 1.90994, 0.158689, 2.00179, 1.97409, -0.447395, + 3.93314, 0.379663, -3.20044, -4.63811, 3.33694, -2.92811, -0.334244, -1.82335, -1.99341, + -2.38105, -3.42019, 4.49144, 4.50581, 0.146444, -4.01907, 2.76861, 2.54542, -4.88271, + 4.25518, 3.71932, -2.67843, -4.61096, 2.49717, 3.22838, 2.91755, 2.81098, -0.212338, + -4.09407, 3.46949, -0.264652, 0.653515, 0.510898, 1.74902, -0.615688, 0.225622, 3.35548, + 2.3847, 0.542832, -1.47433, 2.86275, -3.14377, -3.10022, 4.98831, 1.61969, 0.994205, + 3.34565, -2.12893, -2.35919, 0.905238, -0.847957, -3.33345, -0.448516, 1.31451, 3.56578, + -4.07352, -0.694577, -3.23525, 1.98038, 4.05222, 0.15182, 2.11475, -4.91253, -2.83372, + -0.800172, -0.797281, 4.91775, 0.71457, 2.64354, -4.37525, 3.93947, 4.29284, 0.376963, + 0.483439, -1.20476, 1.54934, -1.60458, -2.03934, 3.17352, 1.84459, -0.57479, 2.83865, + 4.82469, -0.00921004, -3.30157, -3.63386, -3.94658, 1.96984, 4.15967, 3.75591, -0.538282, + -1.32521, 0.128334, -0.57577, 0.96914, 1.10537, 2.45218, 2.8899, 1.61422, 1.46003, + 2.45143, 1.49513, 0.761625, -3.07383, 0.554756, 4.26704, 0.702351, 5}, std::vector{ - -5, -2.76745, -3.36272, 0.786832, -0.536305, -2.6808, 2.75696, -2.38186, -2.97924, -1.8377, - -1.8783, -2.34573, 1.51361, -0.429618, -0.165277, -4.11843, 2.8142, 2.19643, 4.21874, 1.96632, - -1.04831, -3.02755, 3.21475, -0.624601, 2.22647, 0.583331, -3.05985, -2.92969, 4.40203, 4.96686, - -2.67395, 0.58967, 1.75651, 3.90978, -2.32869, -0.251364, -0.076078, -2.76866, 3.98696, -3.89213, - -0.84402, -0.84834, -3.69578, -2.08657, -3.91955, 4.22513, -3.88648, -1.39718, -0.026567, 1.30207, - 2.68671, 1.60689, 3.78493, -1.1378, -1.50906, 4.42047, 1.11537, 3.98267, -0.826257, 0.65135, - -3.50771, 3.93109, 1.36732, -2.45974, -1.47327, 0.772411, 2.65195, 3.03698, -0.592716, -0.558972, - 3.40876, 3.26508, -3.91006, 0.147352, 4.54504, 0.695234, 4.9661, -0.64909, 1.45945, 3.82606, - -4.26746, 2.80674, 3.86749, -0.115914, -2.02211, -3.06485, 2.15541, -0.715792, 0.966579, -1.59997, - -4.06261, 0.592467, -0.94068, -2.1352, 2.87121, 4.68889, -4.91329, 0.299997, -1.02383, 1.62808, - 3.77503, -3.10425, -3.31658, 2.88163, -4.02717, 2.43578, 2.97519, -2.72692, -2.94946, -4.62235, - 0.938072, -3.56148, 4.96502, -4.73707, 3.46557, -0.84019, 4.05851, 0.971805, 3.67174, 0.272782, - 3.11246, -3.17549, 0.703277, -1.83248, -2.66066, 1.93464, 0.505384, 2.92792, 4.47033, 0.221046, - 0.757135, 2.87319, -2.95227, -3.87443, 3.22101, -3.01482, -3.17032, 1.28237, -4.21317, -0.735796, - -3.95619, 2.21906, 1.35044, 2.38934, 3.73366, -2.37152, -1.21153, 2.32514, -2.52731, -1.27155, - -3.50355, -3.01653, -2.55113, 1.53067, -0.114533, 0.0749606, -1.90288, -4.09761, -2.89037, -2.07762, - -4.15337, 4.51941, 4.96817, 1.81584, -2.77298, -3.77737, 0.511126, -3.95519, 0.312086, 2.07223, - 0.682299, -1.93266, -2.17914, -0.747721, -1.33989, -4.1225, 2.73361, 1.20164, 2.0721, 0.616006, - -2.14654, -1.09562, 2.69654, -1.29804, -3.06921, 0.918753, -0.960092, -2.76928, -4.81197, -0.228397, - 2.9628, -3.62481, -0.877274, -0.636959, -2.77519, 1.92274, -2.71535, 0.823748, 0.0571949, -2.80894, - -2.93044, 2.44277, 3.72529, -1.39665, 0.419583, -0.735395, 0.141612, 4.91315, -1.85428, 3.59253, - 4.63525, -4.308, -4.04851, -4.52805, 3.46887, -3.40928, 1.49532, -4.29342, 0.864934, -4.68825, - -4.24461, 4.62154, 0.258795, -1.59565, -4.96134, -1.42749, -1.41203, -4.28422, -1.34112, 0.776945, - -4.04485, -3.96018, 0.580818, -4.41352, 1.14779, -4.36729, 3.8481, -1.66048, -0.950351, 3.57762, - -2.33159, 1.01822, 1.35339, 4.7311, -4.59032, 3.43969, -0.238646, -1.39467, -0.329268, 3.23937, - -0.284994, -3.59913, -2.26108, -0.378409, -3.475, -0.160139, -0.838942, 0.527827, -1.51829, -2.46392, - 1.89068, -4.46563, -2.60946, 3.53656, -2.20977, -0.851908, -2.42698, -2.03249, -0.938796, 2.09651, - -0.967279, -2.06681, -4.58985, 3.24781, -2.63077, 4.56093, 3.17359, -2.34826, 1.58482, -4.12192, - -2.55048, -3.4803, 0.631562, -4.64767, 4.07145, -4.89086, -3.90578, 0.794496, 3.11944, 0.274388, - -0.802882, -0.72629, 2.55014, -2.86997, 4.11855, 1.10845, 0.782459, -4.91899, 2.37826, -1.77523, - -3.23982, -1.69375, -0.837184, 1.1934, -1.10572, -1.22483, 4.71149, 2.96609, -0.676543, -3.31718, - -3.692, -2.9575, -3.52942, 0.411185, -2.41244, -0.401702, -1.8739, -0.132347, 1.13978, -4.45176, - 0.169302, 3.5423, 3.94282, 1.60127, -4.07808, 2.34236, -0.781839, -2.74102, 4.48042, -4.34059, - -1.30121, -0.93276, 1.11985, -3.90853, -0.286499, -1.01405, -2.77668, 0.288616, -4.16595, -2.3096, - -2.44363, 1.24341, 3.73431, -0.00587227, -4.89328, 4.75827, -4.9217, 3.8995, 2.46474, 3.20115, - 1.39757, 3.46744, 3.32388, -1.17844, 2.83398, -1.88155, -3.75103, -2.30867, -1.46387, 2.3986, - 0.291228, -0.924614, -0.466735, -2.32718, -1.59271, 3.8981, -3.37128, 1.54383, 3.21023, -4.46146, - 3.65466, 2.02678, 4.93931, -4.48006, -4.70468, -0.0110495, -4.34515, 2.66921, -2.4087, 3.08708, - 4.72305, 3.14726, -2.3531, 0.719721, -2.08273, -4.30752, -3.36451, 0.7731, 0.323962, -2.62083, - 0.261967, -3.56867, 2.00299, 0.649599, 1.86126, 1.56565, 3.74213, 0.474407, -0.946149, -0.476581, - -2.64906, -1.82586, -3.98376, -4.55005, 2.38571, -3.62565, -0.934082, -1.81757, -1.77204, -3.26355, - 4.35017, 3.13568, 0.702371, -3.24041, 0.0219689, 2.41334, -1.23636, 3.9868, 4.02405, -1.44978, - 0.281016, 4.02714, -3.745, -0.925299, 0.628337, 4.63236, -3.27555, 4.35052, 3.93893, -1.18177, - 3.12756, 2.48858, -3.78877, 3.23341, -2.12903, -3.78299, -2.97581, -0.814401, -4.27898, 0.582629, - 1.62196, 2.45058, 1.58468, 3.9512, 4.54651, -0.556351, 2.948, 1.81753, -3.51936, -0.504748, - -3.25792, 3.13386, -0.620701, 4.71377, 3.99684, -3.2282, 3.46386, -2.72125, -1.49549, -3.83636, - -4.7897, 0.78226, 2.3058, -4.82898, -2.61577, -4.87581, 2.31266, 1.67058, -0.312257, -0.545391, - -3.86117, -4.92605, -0.722609, -0.144248, -4.35181, 0.483898, -3.27626, 0.600822, -0.846488, 1.54249, - 4.67917, 0.773491, 0.335107, 0.391722, -1.57747, 3.65133, -0.816687, -3.66164, 0.3431, -2.17813, - -4.99742, -4.13003, -4.34429, 3.15146, 0.477193, -3.18597, 4.0696, -3.04081, -0.751688, -2.3623, - 2.81943, 1.98781, 1.14407, 2.95467, 0.0443827, -1.67868, -2.85497, -3.04549, 0.0620073, 0.179388, - -3.74709, 4.28623, 3.73272, 2.019, 1.88438, -1.20996, -2.34781, 0.800072, 4.22213, 3.82745, - 0.660494, -0.233822, -3.85401, -1.10944, 1.61249, -2.75312, -0.620572, -2.36705, -4.35225, -4.28065, - -0.369473, -0.675064, 4.98128, -3.40084, -0.158063, -1.81529, 0.0704487, -4.2162, 2.33253, 0.775176, - 4.70129, -0.44329, -0.804775, -4.39479, -0.857478, 0.173731, 2.117, -1.91569, 0.661488, -3.72608, - 3.21041, -0.309079, -1.20312, -1.04395, -3.59398, 0.6059, 2.61891, 4.45666, -4.75106, 3.21227, - 1.7304, -2.32413, 3.76143, 3.02153, -3.54336, -0.34727, 4.84026, -0.198416, -3.46508, -0.201522, - 3.50927, -1.84184, -2.48124, -0.669658, -4.94919, -3.52275, 1.42435, 3.78537, -3.23707, -4.68775, - 2.3794, -4.965, 3.11321, -1.14157, 3.72124, -1.05859, -0.206402, 0.79939, 4.87222, 0.225406, - 4.48362, -2.90358, 1.55703, 1.98258, 2.35008, 3.94249, 2.61202, -3.53563, 1.82492, -2.68085, - -0.527339, 3.24015, 3.29355, 1.34272, -1.10936, -2.71789, 3.91075, -2.14601, -0.396423, -3.01396, - 0.340825, -4.43331, -4.90419, 3.48833, -3.20166, 2.02417, -1.30311, 1.58947, -3.03143, 3.37555, - -1.96399, 1.02333, -3.52225, -1.53211, 0.12215, -1.34119, -0.846173, -0.635141, 4.67665, -0.405799, - 3.8426, 0.339217, -1.40732, 2.20983, 0.573309, 0.977476, -1.76888, -1.02265, 2.32694, 0.677431, - -4.85236, 3.18685, -2.53947, 1.13715, 4.96326, -0.793396, 1.19392, 2.5294, 2.75801, -4.3221, - 3.15646, -1.48667, -4.94554, -3.23913, 4.02479, -2.08067, 0.183081, -4.38464, -2.46221, -4.73904, - -0.697342, -4.85434, 4.90753, 2.70221, -1.31093, -4.60081, -3.58929, 3.71782, -1.75827, 0.163215, - -3.75722, 1.62284, -1.24612, 1.14538, 2.96385, -4.10806, -0.186223, 2.97828, -3.48557, 0.912886, - -2.47933, -0.141892, 1.38328, -1.35453, 0.0855794, -0.420718, 2.81809, -1.58504, -3.24831, -3.06183, - -1.00012, -3.06554, 1.15852, -4.66011, -1.68974, 2.15275, -4.81303, -1.0497, 4.24721, 0.752416, - -2.9178, 2.80425, -4.72424, -4.04212, 1.70999, 4.54444, 2.7805, -0.316397, -2.46779, 3.17646, - 0.187879, 1.74938, 3.01256, -3.66057, 2.37244, 2.91338, 2.67634, -2.33103, -1.07969, 1.37713, - -3.45046, 1.41599, -2.58735, 1.66767, 0.978738, -1.99731, -1.185, 4.02593, -3.86151, 3.34423, - 3.45627, -3.98229, 4.22739, -3.05438, -4.33193, 3.05151, 4.80124, 4.1618, -3.6186, -4.59032, - 4.59652, -1.2784, -1.30989, -3.37153, 2.88972, -4.98978, 0.866851, 2.13723, -1.54307, -2.96314, - -0.727502, 1.31068, 0.444759, 1.69446, 2.77479, -1.25197, -0.59404, -3.28619, -2.14284, 4.55701, - -1.99698, -4.1932, 1.98522, 0.330638, 4.14927, -1.58213, -1.19538, -2.64269, -4.77377, -4.50282, - 2.11742, 1.85531, -1.0953, -4.23724, 0.736428, -3.5851, 1.48482, 0.141458, -1.86905, 3.5453, - -2.82172, -3.05134, -3.75254, 4.95023, -1.05753, 1.91518, -3.26179, 4.54684, -4.10982, -1.89519, - 1.14695, 1.47464, 1.4862, -4.79501, -4.77577, -2.36627, 0.19994, 3.35062, 1.23547, 5}, + -5, -2.76745, -3.36272, 0.786832, -0.536305, -2.6808, 2.75696, -2.38186, -2.97924, + -1.8377, -1.8783, -2.34573, 1.51361, -0.429618, -0.165277, -4.11843, 2.8142, 2.19643, + 4.21874, 1.96632, -1.04831, -3.02755, 3.21475, -0.624601, 2.22647, 0.583331, -3.05985, + -2.92969, 4.40203, 4.96686, -2.67395, 0.58967, 1.75651, 3.90978, -2.32869, -0.251364, + -0.076078, -2.76866, 3.98696, -3.89213, -0.84402, -0.84834, -3.69578, -2.08657, -3.91955, + 4.22513, -3.88648, -1.39718, -0.026567, 1.30207, 2.68671, 1.60689, 3.78493, -1.1378, + -1.50906, 4.42047, 1.11537, 3.98267, -0.826257, 0.65135, -3.50771, 3.93109, 1.36732, + -2.45974, -1.47327, 0.772411, 2.65195, 3.03698, -0.592716, -0.558972, 3.40876, 3.26508, + -3.91006, 0.147352, 4.54504, 0.695234, 4.9661, -0.64909, 1.45945, 3.82606, -4.26746, + 2.80674, 3.86749, -0.115914, -2.02211, -3.06485, 2.15541, -0.715792, 0.966579, -1.59997, + -4.06261, 0.592467, -0.94068, -2.1352, 2.87121, 4.68889, -4.91329, 0.299997, -1.02383, + 1.62808, 3.77503, -3.10425, -3.31658, 2.88163, -4.02717, 2.43578, 2.97519, -2.72692, + -2.94946, -4.62235, 0.938072, -3.56148, 4.96502, -4.73707, 3.46557, -0.84019, 4.05851, + 0.971805, 3.67174, 0.272782, 3.11246, -3.17549, 0.703277, -1.83248, -2.66066, 1.93464, + 0.505384, 2.92792, 4.47033, 0.221046, 0.757135, 2.87319, -2.95227, -3.87443, 3.22101, + -3.01482, -3.17032, 1.28237, -4.21317, -0.735796, -3.95619, 2.21906, 1.35044, 2.38934, + 3.73366, -2.37152, -1.21153, 2.32514, -2.52731, -1.27155, -3.50355, -3.01653, -2.55113, + 1.53067, -0.114533, 0.0749606, -1.90288, -4.09761, -2.89037, -2.07762, -4.15337, 4.51941, + 4.96817, 1.81584, -2.77298, -3.77737, 0.511126, -3.95519, 0.312086, 2.07223, 0.682299, + -1.93266, -2.17914, -0.747721, -1.33989, -4.1225, 2.73361, 1.20164, 2.0721, 0.616006, + -2.14654, -1.09562, 2.69654, -1.29804, -3.06921, 0.918753, -0.960092, -2.76928, -4.81197, + -0.228397, 2.9628, -3.62481, -0.877274, -0.636959, -2.77519, 1.92274, -2.71535, 0.823748, + 0.0571949, -2.80894, -2.93044, 2.44277, 3.72529, -1.39665, 0.419583, -0.735395, 0.141612, + 4.91315, -1.85428, 3.59253, 4.63525, -4.308, -4.04851, -4.52805, 3.46887, -3.40928, + 1.49532, -4.29342, 0.864934, -4.68825, -4.24461, 4.62154, 0.258795, -1.59565, -4.96134, + -1.42749, -1.41203, -4.28422, -1.34112, 0.776945, -4.04485, -3.96018, 0.580818, -4.41352, + 1.14779, -4.36729, 3.8481, -1.66048, -0.950351, 3.57762, -2.33159, 1.01822, 1.35339, + 4.7311, -4.59032, 3.43969, -0.238646, -1.39467, -0.329268, 3.23937, -0.284994, -3.59913, + -2.26108, -0.378409, -3.475, -0.160139, -0.838942, 0.527827, -1.51829, -2.46392, 1.89068, + -4.46563, -2.60946, 3.53656, -2.20977, -0.851908, -2.42698, -2.03249, -0.938796, 2.09651, + -0.967279, -2.06681, -4.58985, 3.24781, -2.63077, 4.56093, 3.17359, -2.34826, 1.58482, + -4.12192, -2.55048, -3.4803, 0.631562, -4.64767, 4.07145, -4.89086, -3.90578, 0.794496, + 3.11944, 0.274388, -0.802882, -0.72629, 2.55014, -2.86997, 4.11855, 1.10845, 0.782459, + -4.91899, 2.37826, -1.77523, -3.23982, -1.69375, -0.837184, 1.1934, -1.10572, -1.22483, + 4.71149, 2.96609, -0.676543, -3.31718, -3.692, -2.9575, -3.52942, 0.411185, -2.41244, + -0.401702, -1.8739, -0.132347, 1.13978, -4.45176, 0.169302, 3.5423, 3.94282, 1.60127, + -4.07808, 2.34236, -0.781839, -2.74102, 4.48042, -4.34059, -1.30121, -0.93276, 1.11985, + -3.90853, -0.286499, -1.01405, -2.77668, 0.288616, -4.16595, -2.3096, -2.44363, 1.24341, + 3.73431, -0.00587227, -4.89328, 4.75827, -4.9217, 3.8995, 2.46474, 3.20115, 1.39757, + 3.46744, 3.32388, -1.17844, 2.83398, -1.88155, -3.75103, -2.30867, -1.46387, 2.3986, + 0.291228, -0.924614, -0.466735, -2.32718, -1.59271, 3.8981, -3.37128, 1.54383, 3.21023, + -4.46146, 3.65466, 2.02678, 4.93931, -4.48006, -4.70468, -0.0110495, -4.34515, 2.66921, + -2.4087, 3.08708, 4.72305, 3.14726, -2.3531, 0.719721, -2.08273, -4.30752, -3.36451, + 0.7731, 0.323962, -2.62083, 0.261967, -3.56867, 2.00299, 0.649599, 1.86126, 1.56565, + 3.74213, 0.474407, -0.946149, -0.476581, -2.64906, -1.82586, -3.98376, -4.55005, 2.38571, + -3.62565, -0.934082, -1.81757, -1.77204, -3.26355, 4.35017, 3.13568, 0.702371, -3.24041, + 0.0219689, 2.41334, -1.23636, 3.9868, 4.02405, -1.44978, 0.281016, 4.02714, -3.745, + -0.925299, 0.628337, 4.63236, -3.27555, 4.35052, 3.93893, -1.18177, 3.12756, 2.48858, + -3.78877, 3.23341, -2.12903, -3.78299, -2.97581, -0.814401, -4.27898, 0.582629, 1.62196, + 2.45058, 1.58468, 3.9512, 4.54651, -0.556351, 2.948, 1.81753, -3.51936, -0.504748, + -3.25792, 3.13386, -0.620701, 4.71377, 3.99684, -3.2282, 3.46386, -2.72125, -1.49549, + -3.83636, -4.7897, 0.78226, 2.3058, -4.82898, -2.61577, -4.87581, 2.31266, 1.67058, + -0.312257, -0.545391, -3.86117, -4.92605, -0.722609, -0.144248, -4.35181, 0.483898, -3.27626, + 0.600822, -0.846488, 1.54249, 4.67917, 0.773491, 0.335107, 0.391722, -1.57747, 3.65133, + -0.816687, -3.66164, 0.3431, -2.17813, -4.99742, -4.13003, -4.34429, 3.15146, 0.477193, + -3.18597, 4.0696, -3.04081, -0.751688, -2.3623, 2.81943, 1.98781, 1.14407, 2.95467, + 0.0443827, -1.67868, -2.85497, -3.04549, 0.0620073, 0.179388, -3.74709, 4.28623, 3.73272, + 2.019, 1.88438, -1.20996, -2.34781, 0.800072, 4.22213, 3.82745, 0.660494, -0.233822, + -3.85401, -1.10944, 1.61249, -2.75312, -0.620572, -2.36705, -4.35225, -4.28065, -0.369473, + -0.675064, 4.98128, -3.40084, -0.158063, -1.81529, 0.0704487, -4.2162, 2.33253, 0.775176, + 4.70129, -0.44329, -0.804775, -4.39479, -0.857478, 0.173731, 2.117, -1.91569, 0.661488, + -3.72608, 3.21041, -0.309079, -1.20312, -1.04395, -3.59398, 0.6059, 2.61891, 4.45666, + -4.75106, 3.21227, 1.7304, -2.32413, 3.76143, 3.02153, -3.54336, -0.34727, 4.84026, + -0.198416, -3.46508, -0.201522, 3.50927, -1.84184, -2.48124, -0.669658, -4.94919, -3.52275, + 1.42435, 3.78537, -3.23707, -4.68775, 2.3794, -4.965, 3.11321, -1.14157, 3.72124, + -1.05859, -0.206402, 0.79939, 4.87222, 0.225406, 4.48362, -2.90358, 1.55703, 1.98258, + 2.35008, 3.94249, 2.61202, -3.53563, 1.82492, -2.68085, -0.527339, 3.24015, 3.29355, + 1.34272, -1.10936, -2.71789, 3.91075, -2.14601, -0.396423, -3.01396, 0.340825, -4.43331, + -4.90419, 3.48833, -3.20166, 2.02417, -1.30311, 1.58947, -3.03143, 3.37555, -1.96399, + 1.02333, -3.52225, -1.53211, 0.12215, -1.34119, -0.846173, -0.635141, 4.67665, -0.405799, + 3.8426, 0.339217, -1.40732, 2.20983, 0.573309, 0.977476, -1.76888, -1.02265, 2.32694, + 0.677431, -4.85236, 3.18685, -2.53947, 1.13715, 4.96326, -0.793396, 1.19392, 2.5294, + 2.75801, -4.3221, 3.15646, -1.48667, -4.94554, -3.23913, 4.02479, -2.08067, 0.183081, + -4.38464, -2.46221, -4.73904, -0.697342, -4.85434, 4.90753, 2.70221, -1.31093, -4.60081, + -3.58929, 3.71782, -1.75827, 0.163215, -3.75722, 1.62284, -1.24612, 1.14538, 2.96385, + -4.10806, -0.186223, 2.97828, -3.48557, 0.912886, -2.47933, -0.141892, 1.38328, -1.35453, + 0.0855794, -0.420718, 2.81809, -1.58504, -3.24831, -3.06183, -1.00012, -3.06554, 1.15852, + -4.66011, -1.68974, 2.15275, -4.81303, -1.0497, 4.24721, 0.752416, -2.9178, 2.80425, + -4.72424, -4.04212, 1.70999, 4.54444, 2.7805, -0.316397, -2.46779, 3.17646, 0.187879, + 1.74938, 3.01256, -3.66057, 2.37244, 2.91338, 2.67634, -2.33103, -1.07969, 1.37713, + -3.45046, 1.41599, -2.58735, 1.66767, 0.978738, -1.99731, -1.185, 4.02593, -3.86151, + 3.34423, 3.45627, -3.98229, 4.22739, -3.05438, -4.33193, 3.05151, 4.80124, 4.1618, + -3.6186, -4.59032, 4.59652, -1.2784, -1.30989, -3.37153, 2.88972, -4.98978, 0.866851, + 2.13723, -1.54307, -2.96314, -0.727502, 1.31068, 0.444759, 1.69446, 2.77479, -1.25197, + -0.59404, -3.28619, -2.14284, 4.55701, -1.99698, -4.1932, 1.98522, 0.330638, 4.14927, + -1.58213, -1.19538, -2.64269, -4.77377, -4.50282, 2.11742, 1.85531, -1.0953, -4.23724, + 0.736428, -3.5851, 1.48482, 0.141458, -1.86905, 3.5453, -2.82172, -3.05134, -3.75254, + 4.95023, -1.05753, 1.91518, -3.26179, 4.54684, -4.10982, -1.89519, 1.14695, 1.47464, + 1.4862, -4.79501, -4.77577, -2.36627, 0.19994, 3.35062, 1.23547, 5}, + std::vector{-5, -4.90212, 2.04852, -4.06222, -2.05556, 1.71858, 4.89697, -3.57399, 3.22732, + -1.36818, -3.74683, -4.60178, 0.196569, 1.58981, -3.29433, -2.98955, 2.02674, 1.8465, + -1.85874, -2.1893, 4.83577, 1.90244, 2.07352, 0.598257, 3.49708, 1.4686, 0.754768, + 1.94554, 3.96111, 0.133566, -3.82646, 4.88763, 0.229708, -2.03485, 3.4875, 1.79253, + -0.38706, -2.65237, 0.100763, -2.15537, 1.71114, 4.87242, -0.449133, 3.7298, -4.50384, + 0.0434988, -4.31846, -4.79365, -2.04677, -4.72319, 1.47757, 1.06105, 3.82314, 3.14707, + 4.1567, 1.89765, 4.28057, 3.15959, 1.97148, 3.77296, 2.90827, 3.08369, 4.84089, + -1.83596, 2.32062, -4.18992, 1.58745, 0.212731, -3.36909, -1.486, 2.07869, -1.65644, + 1.39901, 1.31554, 1.7938, 4.02885, -1.31798, 0.48152, -0.964317, 5}, std::vector{ - -5, -4.90212, 2.04852, -4.06222, -2.05556, 1.71858, 4.89697, -3.57399, 3.22732, -1.36818, - -3.74683, -4.60178, 0.196569, 1.58981, -3.29433, -2.98955, 2.02674, 1.8465, -1.85874, -2.1893, - 4.83577, 1.90244, 2.07352, 0.598257, 3.49708, 1.4686, 0.754768, 1.94554, 3.96111, 0.133566, - -3.82646, 4.88763, 0.229708, -2.03485, 3.4875, 1.79253, -0.38706, -2.65237, 0.100763, -2.15537, - 1.71114, 4.87242, -0.449133, 3.7298, -4.50384, 0.0434988, -4.31846, -4.79365, -2.04677, -4.72319, - 1.47757, 1.06105, 3.82314, 3.14707, 4.1567, 1.89765, 4.28057, 3.15959, 1.97148, 3.77296, - 2.90827, 3.08369, 4.84089, -1.83596, 2.32062, -4.18992, 1.58745, 0.212731, -3.36909, -1.486, - 2.07869, -1.65644, 1.39901, 1.31554, 1.7938, 4.02885, -1.31798, 0.48152, -0.964317, 5}, + -0.999909, -5.07626e-11, 4.13326e-13, 5.835e-05, -1.30828e-35, 0.761594, -3.42026e-22, + -1.13159e-30, -4.18379e-13, 0.821244, -0.999909, -5.07626e-11, 0.49691, 0.000728936, + 6.90693e-27, 0.963522, -9.60537e-09, -0.997578, -0.0213497, 5.66025e-14, -0.999928, + 2.69134e-08, 4.40231e-06, -6.96162e-19, 0.511536, 0.287868, -0.762594, -0.997594, + -0.9476, 0.76483, -0.999465, 1.57167e-10, 0.49691, -3.00368e-17, -1.50091e-08, + 0.785706, -0.368554, -0.997594, -0.981176, -0.761575, -7.99627e-07, 9.21166e-05, + 0.332835, 4.10511e-31, -9.42096e-13, 0.378887, -0.00455473, 2.21606e-11, -0.997432, + 1.16333e-05, -8.98809e-32, 3.03724e-15, 0.25859, -0.000176827, -0.954949, 2.55493e-17, + -0.983461, 9.09049e-13, -0.980796, 0.784393, -0.000793236, 2.55449e-20, 5.38752e-09, + -9.86419e-35, -1.94761e-19, 1.83397e-12, -0.988398, 3.78249e-10, -0.997432, 0.771463, + -3.52882e-15, 1.21005e-16, 0.000182383, -4.34274e-08, -0.594177, 1.33054e-06, -0.920454, + 0.76128, -0.999382, 0.000389586, -9.19733e-06, 4.3138e-07, 1.41793e-21, -0.761594, + 0.305402, 0.000580937, -0.531783, -1.00171e-05, 5.83801e-30, 0.0243704, -1.23107e-30, + 0.00725055, 0.76182, 1.27929e-05, 1.58846e-07, -0.680477, -5.73051e-15, 6.33457e-20, + 0.000288991, 0.00312473, 0.761596, -0.000445729, 2.03617e-09, 5.11049e-30, 0.964028, + -1.18563e-22, 3.80413e-32, -1.97169e-18, -0.759971, -1.27976e-07, 0.74886, -0.000445729, + 0.805263, -1.49589e-10, 0.641535, -1.41323e-07, 1.47308e-24, -4.77803e-13, -5.96046e-08, + -1.95598e-10, -0.581045, -0.00103914, 0.805263, 1.64052e-14, 0.00323384, 1.15601e-13, + 6.4162e-14, 2.77607e-22, 0.0497418, 5.30151e-18, -0.329421, -2.57703e-06, 0.963854, + -1.01966e-13, -1.18368e-08, 6.02313e-09, 0.114898, 9.46065e-13, 0.761594, 2.13439e-08, + 0.523866, 0.761529, 0.760565, -0.00461076, 0.00150048, -0.00174691, -0.436961, + 5.48788e-11, 2.41781e-14, 2.19602e-08, -6.14432e-17, 8.04105e-14, -3.89646e-18, -0.00379894, + 3.63214e-16, -0.616305, 0.964023, 5.81763e-07, 1.09818e-06, 2.19604e-08, -0.87856, + -0.354106, -0.715297, -1.65026e-20, 6.05625e-17, 2.48927e-05, 1.96127e-05, 1.41168e-23, + 5.4023e-07, 0.761544, -3.06545e-19, -7.18136e-08, -1.8746e-07, -1.47835e-07, 1.34948e-07, + 0.761594, 0.999987, 3.23361e-26, 1.28856e-06, 0.761618, -0.892197, 1.36596e-19, + 6.65404e-09, -2.64782e-09, 0.766419, -0.998266, 0.000204802, 1.00874e-08, -4.23892e-11, + 2.38972e-09, -0.901095, 0.00314948, 0.156432, -3.46747e-21, 0.766474, -4.19696e-07, + 0.00359662, 0.985378, 1.26476e-26, 1.36917e-06, -8.30729e-05, 1.09966e-09, 3.39125e-24, + -2.54402e-09, -0.0224086, 0.999078, -8.56764e-17, 2.17593e-09, -5.3338e-18, -2.09897e-25, + -0.731555, 1.0058e-09, 1.80811e-06, -7.35442e-08, 5.03322e-18, 0.99907, 5.06163e-08, + 0.998803, -3.31849e-14, -0.314541, 6.56072e-06, 2.3231e-05, -0.734035, -0.801636, + 0.761566, 1.44226e-12, -0.521044, 0.998576, 2.04797e-08, -0.999782, 8.46822e-16, + 0.236769, -1.06652e-14, -0.000473771, 0.964, 1.61872e-15, -0.918253, -6.50992e-10, + 1.19996e-09, -0.976642, -1.74187e-06, 2.59573e-19, -2.2928e-13, -8.87904e-17, 0.148158, + 4.75517e-15, -0.98799, -6.50965e-10, -0.761594, 0.760215, 0.000518275, 0.434619, + -0.0692393, -0.761594, 0.274058, 6.53858e-08, -0.998366, -3.22841e-06, 1.72996e-06, + 0.963795, -0.735883, -1.68637e-22, 0.00299617, -2.95948e-14, -0.754872, 0.964028, + -0.832263, 2.96769e-05, -1.3113e-06, 0.761594, 1.00882e-20, -0.700681, 0.251888, + -1.44631e-16, -5.78152e-16, 0.964028, -3.13362e-09, 2.38789e-16, -1.29541e-06, -4.12287e-11, + 3.57653e-37, -0.953416, -0.00116461, 4.51481e-11, 0.000654999, -9.88477e-13, -8.25559e-09, + 3.24498e-11, 0.631349, -2.22783e-15, 0.00463415, -0.218827, -3.33063e-20, 2.62387e-15, + 0.000655749, -0.761594, -9.3791e-19, 3.55914e-07, 1.21115e-10, 8.51853e-05, 0.746421, + -0.203347, 0.964016, -0.675211, -0.757478, 4.1336e-13, 1.31125e-14, -0.752869, + -3.40686e-11, -9.04177e-20, 0.761593, -0.203337, 0.761593, 4.32757e-13, 0.761594, + 1.12104e-12, 1.10405e-22, 2.21747e-11, -0.761594, -0.000232199, -7.34674e-20, -0.761592, + 1.12101e-05, 0.96248, 1.05897e-15, -0.961035, 0.995049, 0.714666, -0.11871, + 0.252246, -3.96402e-21, -0.116561, -2.34864e-11, 1.73253e-05, 6.71033e-11, -0.761585, + 0.964016, 5.67781e-08, -0.00572334, 0.76158, -0.520498, 5.11946e-09, -1.68016e-05, + 7.55615e-09, 0.959448, -2.85015e-19, 0.753059, 4.49821e-06, 1.60358e-10, 3.66218e-21, + -2.05996e-14, 9.10536e-05, 0.443528, 0.000286103, 1.1389e-16, -0.332143, 0.000106997, + 1.66753e-09, -0.761594, 7.13778e-13, -0.71679, -0.761576, 0.754419, 0.000282388, + -0.762039, 9.84022e-09, -0.0872869, 7.7548e-11, 6.80808e-09, 2.60995e-08, 4.78222e-09, + -0.501957, 0.762282, -0.753946, -1.47174e-09, -0.964027, -0.7082, -0.963465, + -9.54667e-13, 3.02122e-08, 7.1591e-12, 6.3354e-14, 2.94622e-22, -0.940787, -6.09716e-15, + -2.65188e-14, -0.0115473, -0.758209, 6.95914e-17, 0.760974, 0.140932, 4.35034e-05, + 0.760892, -0.632027, -0.76149, 2.15703e-11, 0.777049, -0.00238567, 5.3589e-28, + 0.760506, -8.19313e-13, -0.99918, -1.76353e-09, -3.25938e-08, 3.69808e-14, 5.13777e-15, + -0.992067, 3.2008e-13, -4.27895e-35, -0.00033198, -2.22583e-14, 2.33933e-18, -1.83076e-06, + -2.05328e-23, 0.335589, 6.74499e-20, -0.993734, 3.25956e-15, -0.76157, 0.761592, + -1.39733e-26, 3.51873e-08, -0.000449794, 0.753596, 6.14397e-06, -0.0399566, 6.81031e-16, + -1.4436e-16, 6.54251e-37, 6.25711e-16, -0.751923, 1.76327e-06, -0.759611, -5.82387e-22, + -3.55939e-10, 2.0026e-05, 1.42291e-08, 0.00127849, -0.761586, 0.920489, -0.0123201, + 1.49775e-11, -0.759593, 0.760956, -1.59088e-19, 1.89399e-06, 1.41353e-17, -3.71678e-07, + -7.58637e-09, 4.56301e-13, -0.76173, 6.38001e-12, -3.26879e-12, 2.54147e-19, 0.00349909, + 1.94641e-15, 0.000533218, -0.680174, -0.798763, -0.749397, -1.51134e-16, 0.76157, + -0.758462, 0.212695, 2.33021e-17, 1.62019e-15, -5.34576e-05, -2.0166e-15, -0.0958154, + -3.4894e-05, 1.54693e-09, 0.761228, -0.045171, -0.654946, 0.658682, 0.000900979, + -0.0121633, -9.55765e-07, -5.83339e-07, -0.697058, 3.12132e-18, 0.599694, -2.41771e-11, + 0.128772, 0.0345568, 0.0222523, -3.01504e-23, -1.42109e-23, 1.32333e-13, 5.34001e-15, + -6.2253e-22, 8.88893e-22, 0.000599919, -6.13229e-19, 9.45362e-05, 1.03827e-16, -0.00543732, + -9.86013e-09, -0.761408, 0.214137, -8.00209e-24, 0.679937, 0.917833, -1.34199e-10, + 1.89431e-07, -0.761594, -0.0442637, -0.000217974, 0.00476938, 0.0246565, -5.376e-08, + 0.784315, 0.00101343, 0.0946926, 0.980865, -0.761594, -0.707944, -4.73592e-12, + 4.01193e-13, 1.73187e-07, 0.000424088, 2.85811e-08, 3.59465e-08, -0.472002, 0.867616, + -0.757693, -2.0641e-10, -0.994265, -9.17776e-06, 5.91256e-15, 0.963968, 0.31226, + 0.0461947, 1.10725e-08, 2.92814e-07, -5.24128e-08, -0.00704819, -7.04583e-10, -0.000118595, + -0.760989, 0.761239, 0.312348, 0.0461707, -4.89262e-06, 0.762134, 0.0216284, + 4.89744e-20, -0.705499, -0.0105222, -2.47122e-06, -0.0353277, -0.529026, 0.0371158, + 0.0910813, 0.964028, 0.761582, 0.0233926, -2.56495e-19, 2.55893e-06, -4.6058e-09, + 0.0361859, 0.947518, 0.645797, -1.36319e-07, 1.11416e-06, -0.000967128, 1.71085e-06, + -3.83432e-05, -4.46048e-12, 1.68634e-09, 3.07729e-10, 0.0198492, 0.055882, -1.79771e-09, + -2.43386e-18, -0.228931, 0.760035, -0.761594, -0.393895, 0.761594, 0.761594, + 0.0695398, -2.10839e-05, -0.761593, -0.761593, -7.67992e-12, -0.000156758, -0.761546, + -7.03448e-14, -1.32276e-19, -9.58347e-39, 4.26105e-18, -5.41441e-05, 4.03958e-17, 4.40911e-16, + -0.747015, -0.879764, 2.22597e-08, -0.0910139, 0.999823, 0.999852, -0.946979, + 4.04764e-10, 1.04581e-21, 1.30145e-14, 9.21577e-17, -0.000708233, 0.761594, 3.99524e-13, + 9.18395e-17, 8.95967e-25, 6.11501e-20, 0.00901172, -2.49613e-41, -1.17426e-18, 3.85668e-09, + -0.0678945, 7.0955e-16, -0.761593, 0.792416, 0.999844, 0.441572, 0.00697713, + 5.52616e-05, 2.76337e-24, 0.0128815, -8.97325e-09, 0.0575689, -9.19902e-17, 0.79131, + 0.90745, 0.442877, 1.65895e-09, -9.49956e-12, -0.761592, 0.759226, -0.788664, + 0.428198, 4.22296e-08, 0.960446, -3.30814e-05, -7.32391e-11, -0.761195, 0.761591, + -0.11482, 0.00328929, -0.751446, -0.0329113, -2.38419e-07, -0.742049, -0.761814, + 2.28806e-08, 9.20868e-10, 7.83398e-05, 0.163255, 0.693679, 0.0233387, -0.0002779, + -0.00744079, 0.761594, -1.92574e-35, -6.19079e-15, 0.841117, 3.61402e-15, 7.29652e-05, + -3.43512e-15, 2.44003e-10, 5.02575e-21, -0.575338, 0.760067, -7.58183e-07, -0.411779, + 0.937771, -5.07946e-26, -0.0015457, 0.625772, -0.128913, 7.19112e-12, -0.483728, + 5.19518e-07, 2.4981e-17, -2.77282e-10, -6.1325e-23, 4.02951e-22, -0.55648, 0.627102, + -6.88607e-19, 9.6838e-17, -0.0142015, 1.0327e-05, -0.761481, 3.44292e-08, -0.644774, + 5.99614e-06, -2.4661e-12, 0.939834, -0.732183, 0.758408, -0.406918, 0.761563, + 0.624331, 0.959323, -0.757392, 0.00112301, 0.0215218, -7.76243e-10, -6.42156e-20, + -3.81184e-11, 2.64018e-18, -0.00122851, -9.04986e-17, 0.959198, -0.180509, 8.1107e-09, + 4.4799e-16, -0.761594, 0.761594, -3.2702e-11, 6.12426e-16, -7.52802e-11, 0.727842, + 0.736519, 0.00697721, 0.00189766, 0.65557, -8.23888e-06, 1.19768e-19, -0.628732, + 4.50315e-07, -0.596042, -0.130076, -0.0570775, -0.758032, -0.720559, 0.329393, + -0.000139915, -7.64476e-11, -1.93167e-30, 8.91504e-10, -5.52299e-08, -0.00538237, -1.59122e-08, + -4.0649e-14, -0.747447, 0.871613, 4.90251e-14, 0.760524, 0.623387, 0.761594, + -0.963604, -0.761594, -0.760084, 0.76159, -0.726583, 0.783823, 2.00219e-05, + 1.12777e-06, 1.49013e-16, 0.761591, -0.625537, 2.84003e-10, 4.32528e-16, 2.39073e-07, + -6.75822e-06, 2.44769e-23, -1.39062e-07, 0.768824, -0.000734329, -1.18028e-08, -9.31533e-16, + 1.32778e-09, -5.24861e-07, 0.7686, 1.34084e-06, -0.0222266, -0.775352, 0.000264648, + -2.44784e-27, -8.62503e-05, -0.523765, 8.05469e-07, -8.00327e-17, 1.0076e-08, 0.655086, + 1.12223e-07, -2.45992e-13, 0.761594, -0.000735076, -3.16667e-21, -1.0616e-12, 0.999911, + 6.67684e-10, -0.386663, 9.55342e-24, 0.000750192, -3.04876e-14, 1.69092e-13, 2.57222e-30, + -0.886215, -8.85092e-18, -0.999066, -0.992009, -9.64733e-07, 0.999793, 0.999959, + -4.526e-09, -0.993717, 6.25306e-09, 1.5415e-21, 0.761594, -5.23755e-08, -0.827688, + -0, 5.99811e-22, 0.999958, -0.580146, -6.79704e-17, 1.83394e-07, 1.31284e-13, + 3.62265e-10, 0.35334, -0.00903121, -0.991192, 7.53642e-07, -0.00913154, -1.29673e-06, + -1.76794e-11, 1.83017e-07, -0.000150782, 0.761551, -0.739773, -0.268164, -0.991253, + 0.761593, -8.46913e-07, 4.02483e-07, -0.0547462, -0.0433184, -0.0128592, -0.000826936, + 3.57959e-13, -0.073303, 2.14562e-10, 7.38332e-11, 0.00409962, 0.724394, -1.16275e-22, + 1.63268e-25, -1.47741e-05, 3.33773e-08, -7.77931e-12, 2.71497e-08, 3.42017e-05, 0.761594, + -2.43217e-13, -6.87127e-23, -0.761548, 7.04828e-08, -0.761307, 1.3015e-07, -0.00537324, + 1.27446e-16, 0.763627, 4.22074e-15, -8.45132e-18, 0.00159667, 0.756707, 0.129373, + -0.964029, 0.761554, 3.34318e-14, 3.74157e-15, 0.763626, 4.1317e-22, -0.734039, + 4.81716e-07, 0.753698, 0.758801, -0.995055, -0.76151, 1.11652e-10, 1.10396e-07, + 0.761582, 0.761191, -0.949494, 4.12621e-08, -0.0185743, -5.64389e-13, 1.35275e-28, + -0.761587, -2.38573e-16, -3.53137e-05, -0.438905, 0.0134316, 4.40739e-11, -3.01366e-05, + -1.38874e-32, -3.77945e-21, 0.0780586, 1.6805e-13, 0.751234, -0.803057, 0.811984, + 7.895e-05, 0.761593, -0.00119532, -5.48256e-06, 0.757714, 0.761594, -0.761511, + -1.92404e-24, -1.41394e-08, 0.983753, 4.33593e-18, 6.11314e-09, -0.000849993, -0.96402, + -3.8176e-18, -1.24685e-14, 8.03048e-05, 0.994964, 0.130676, 0.922726, 1.28861e-07, + 0.761594, -6.48442e-30, -0.761584, 0.761594, -3.41314e-14, -1.08584e-06, 0.963591, + 0.130676, 0.542119, -0.725731, 0.761583, -1.63707e-11, 2.25863e-17, 0.766755, + -0.761594, -9.47899e-06, 0.760034, 0.0996578, 0.757886, -0.761808, -0.000816665, + -0.000733465, 0.761594, 0.670761, -4.79781e-25, -3.77769e-09, -0.071795, -2.09178e-29, + -2.96662e-22, -5.45929e-22, 4.72562e-14, 2.23143e-12, 2.66405e-05, 0.948048, -5.47349e-07, + 0.761064, -0.071795, -1.62295e-13, -2.48377e-11, 0.000322916, 1.0934e-18, 0.745943, + 0.000203257, 2.9748e-09, 2.94779e-09, 0.000904395, -1.33357e-12, -0.761594, 4.154e-08, + 0.761365, -1.23576e-05, -0.118402, 0.758765, 8.3947e-11, 0.757683, 0.00091744, + 6.04679e-13, -8.36692e-05, -7.73738e-13, -0.964028, -2.87151e-05, -0.964027, -0.761415, + 2.8511e-12, 0.982895, 0.000913338, 0.761594, -5.61929e-05, -4.03471e-09, -9.05792e-10, + -2.44896e-14, -0.761593, -1.53072e-14, 4.80451e-06, 4.97845e-05, 2.61901e-17}, std::vector{ - -0.999909, -5.07626e-11, 4.13326e-13, 5.835e-05, -1.30828e-35, 0.761594, -3.42026e-22, -1.13159e-30, -4.18379e-13, 0.821244, - -0.999909, -5.07626e-11, 0.49691, 0.000728936, 6.90693e-27, 0.963522, -9.60537e-09, -0.997578, -0.0213497, 5.66025e-14, - -0.999928, 2.69134e-08, 4.40231e-06, -6.96162e-19, 0.511536, 0.287868, -0.762594, -0.997594, -0.9476, 0.76483, - -0.999465, 1.57167e-10, 0.49691, -3.00368e-17, -1.50091e-08, 0.785706, -0.368554, -0.997594, -0.981176, -0.761575, - -7.99627e-07, 9.21166e-05, 0.332835, 4.10511e-31, -9.42096e-13, 0.378887, -0.00455473, 2.21606e-11, -0.997432, 1.16333e-05, - -8.98809e-32, 3.03724e-15, 0.25859, -0.000176827, -0.954949, 2.55493e-17, -0.983461, 9.09049e-13, -0.980796, 0.784393, - -0.000793236, 2.55449e-20, 5.38752e-09, -9.86419e-35, -1.94761e-19, 1.83397e-12, -0.988398, 3.78249e-10, -0.997432, 0.771463, - -3.52882e-15, 1.21005e-16, 0.000182383, -4.34274e-08, -0.594177, 1.33054e-06, -0.920454, 0.76128, -0.999382, 0.000389586, - -9.19733e-06, 4.3138e-07, 1.41793e-21, -0.761594, 0.305402, 0.000580937, -0.531783, -1.00171e-05, 5.83801e-30, 0.0243704, - -1.23107e-30, 0.00725055, 0.76182, 1.27929e-05, 1.58846e-07, -0.680477, -5.73051e-15, 6.33457e-20, 0.000288991, 0.00312473, - 0.761596, -0.000445729, 2.03617e-09, 5.11049e-30, 0.964028, -1.18563e-22, 3.80413e-32, -1.97169e-18, -0.759971, -1.27976e-07, - 0.74886, -0.000445729, 0.805263, -1.49589e-10, 0.641535, -1.41323e-07, 1.47308e-24, -4.77803e-13, -5.96046e-08, -1.95598e-10, - -0.581045, -0.00103914, 0.805263, 1.64052e-14, 0.00323384, 1.15601e-13, 6.4162e-14, 2.77607e-22, 0.0497418, 5.30151e-18, - -0.329421, -2.57703e-06, 0.963854, -1.01966e-13, -1.18368e-08, 6.02313e-09, 0.114898, 9.46065e-13, 0.761594, 2.13439e-08, - 0.523866, 0.761529, 0.760565, -0.00461076, 0.00150048, -0.00174691, -0.436961, 5.48788e-11, 2.41781e-14, 2.19602e-08, - -6.14432e-17, 8.04105e-14, -3.89646e-18, -0.00379894, 3.63214e-16, -0.616305, 0.964023, 5.81763e-07, 1.09818e-06, 2.19604e-08, - -0.87856, -0.354106, -0.715297, -1.65026e-20, 6.05625e-17, 2.48927e-05, 1.96127e-05, 1.41168e-23, 5.4023e-07, 0.761544, - -3.06545e-19, -7.18136e-08, -1.8746e-07, -1.47835e-07, 1.34948e-07, 0.761594, 0.999987, 3.23361e-26, 1.28856e-06, 0.761618, - -0.892197, 1.36596e-19, 6.65404e-09, -2.64782e-09, 0.766419, -0.998266, 0.000204802, 1.00874e-08, -4.23892e-11, 2.38972e-09, - -0.901095, 0.00314948, 0.156432, -3.46747e-21, 0.766474, -4.19696e-07, 0.00359662, 0.985378, 1.26476e-26, 1.36917e-06, - -8.30729e-05, 1.09966e-09, 3.39125e-24, -2.54402e-09, -0.0224086, 0.999078, -8.56764e-17, 2.17593e-09, -5.3338e-18, -2.09897e-25, - -0.731555, 1.0058e-09, 1.80811e-06, -7.35442e-08, 5.03322e-18, 0.99907, 5.06163e-08, 0.998803, -3.31849e-14, -0.314541, - 6.56072e-06, 2.3231e-05, -0.734035, -0.801636, 0.761566, 1.44226e-12, -0.521044, 0.998576, 2.04797e-08, -0.999782, - 8.46822e-16, 0.236769, -1.06652e-14, -0.000473771, 0.964, 1.61872e-15, -0.918253, -6.50992e-10, 1.19996e-09, -0.976642, - -1.74187e-06, 2.59573e-19, -2.2928e-13, -8.87904e-17, 0.148158, 4.75517e-15, -0.98799, -6.50965e-10, -0.761594, 0.760215, - 0.000518275, 0.434619, -0.0692393, -0.761594, 0.274058, 6.53858e-08, -0.998366, -3.22841e-06, 1.72996e-06, 0.963795, - -0.735883, -1.68637e-22, 0.00299617, -2.95948e-14, -0.754872, 0.964028, -0.832263, 2.96769e-05, -1.3113e-06, 0.761594, - 1.00882e-20, -0.700681, 0.251888, -1.44631e-16, -5.78152e-16, 0.964028, -3.13362e-09, 2.38789e-16, -1.29541e-06, -4.12287e-11, - 3.57653e-37, -0.953416, -0.00116461, 4.51481e-11, 0.000654999, -9.88477e-13, -8.25559e-09, 3.24498e-11, 0.631349, -2.22783e-15, - 0.00463415, -0.218827, -3.33063e-20, 2.62387e-15, 0.000655749, -0.761594, -9.3791e-19, 3.55914e-07, 1.21115e-10, 8.51853e-05, - 0.746421, -0.203347, 0.964016, -0.675211, -0.757478, 4.1336e-13, 1.31125e-14, -0.752869, -3.40686e-11, -9.04177e-20, - 0.761593, -0.203337, 0.761593, 4.32757e-13, 0.761594, 1.12104e-12, 1.10405e-22, 2.21747e-11, -0.761594, -0.000232199, - -7.34674e-20, -0.761592, 1.12101e-05, 0.96248, 1.05897e-15, -0.961035, 0.995049, 0.714666, -0.11871, 0.252246, - -3.96402e-21, -0.116561, -2.34864e-11, 1.73253e-05, 6.71033e-11, -0.761585, 0.964016, 5.67781e-08, -0.00572334, 0.76158, - -0.520498, 5.11946e-09, -1.68016e-05, 7.55615e-09, 0.959448, -2.85015e-19, 0.753059, 4.49821e-06, 1.60358e-10, 3.66218e-21, - -2.05996e-14, 9.10536e-05, 0.443528, 0.000286103, 1.1389e-16, -0.332143, 0.000106997, 1.66753e-09, -0.761594, 7.13778e-13, - -0.71679, -0.761576, 0.754419, 0.000282388, -0.762039, 9.84022e-09, -0.0872869, 7.7548e-11, 6.80808e-09, 2.60995e-08, - 4.78222e-09, -0.501957, 0.762282, -0.753946, -1.47174e-09, -0.964027, -0.7082, -0.963465, -9.54667e-13, 3.02122e-08, - 7.1591e-12, 6.3354e-14, 2.94622e-22, -0.940787, -6.09716e-15, -2.65188e-14, -0.0115473, -0.758209, 6.95914e-17, 0.760974, - 0.140932, 4.35034e-05, 0.760892, -0.632027, -0.76149, 2.15703e-11, 0.777049, -0.00238567, 5.3589e-28, 0.760506, - -8.19313e-13, -0.99918, -1.76353e-09, -3.25938e-08, 3.69808e-14, 5.13777e-15, -0.992067, 3.2008e-13, -4.27895e-35, -0.00033198, - -2.22583e-14, 2.33933e-18, -1.83076e-06, -2.05328e-23, 0.335589, 6.74499e-20, -0.993734, 3.25956e-15, -0.76157, 0.761592, - -1.39733e-26, 3.51873e-08, -0.000449794, 0.753596, 6.14397e-06, -0.0399566, 6.81031e-16, -1.4436e-16, 6.54251e-37, 6.25711e-16, - -0.751923, 1.76327e-06, -0.759611, -5.82387e-22, -3.55939e-10, 2.0026e-05, 1.42291e-08, 0.00127849, -0.761586, 0.920489, - -0.0123201, 1.49775e-11, -0.759593, 0.760956, -1.59088e-19, 1.89399e-06, 1.41353e-17, -3.71678e-07, -7.58637e-09, 4.56301e-13, - -0.76173, 6.38001e-12, -3.26879e-12, 2.54147e-19, 0.00349909, 1.94641e-15, 0.000533218, -0.680174, -0.798763, -0.749397, - -1.51134e-16, 0.76157, -0.758462, 0.212695, 2.33021e-17, 1.62019e-15, -5.34576e-05, -2.0166e-15, -0.0958154, -3.4894e-05, - 1.54693e-09, 0.761228, -0.045171, -0.654946, 0.658682, 0.000900979, -0.0121633, -9.55765e-07, -5.83339e-07, -0.697058, - 3.12132e-18, 0.599694, -2.41771e-11, 0.128772, 0.0345568, 0.0222523, -3.01504e-23, -1.42109e-23, 1.32333e-13, 5.34001e-15, - -6.2253e-22, 8.88893e-22, 0.000599919, -6.13229e-19, 9.45362e-05, 1.03827e-16, -0.00543732, -9.86013e-09, -0.761408, 0.214137, - -8.00209e-24, 0.679937, 0.917833, -1.34199e-10, 1.89431e-07, -0.761594, -0.0442637, -0.000217974, 0.00476938, 0.0246565, - -5.376e-08, 0.784315, 0.00101343, 0.0946926, 0.980865, -0.761594, -0.707944, -4.73592e-12, 4.01193e-13, 1.73187e-07, - 0.000424088, 2.85811e-08, 3.59465e-08, -0.472002, 0.867616, -0.757693, -2.0641e-10, -0.994265, -9.17776e-06, 5.91256e-15, - 0.963968, 0.31226, 0.0461947, 1.10725e-08, 2.92814e-07, -5.24128e-08, -0.00704819, -7.04583e-10, -0.000118595, -0.760989, - 0.761239, 0.312348, 0.0461707, -4.89262e-06, 0.762134, 0.0216284, 4.89744e-20, -0.705499, -0.0105222, -2.47122e-06, - -0.0353277, -0.529026, 0.0371158, 0.0910813, 0.964028, 0.761582, 0.0233926, -2.56495e-19, 2.55893e-06, -4.6058e-09, - 0.0361859, 0.947518, 0.645797, -1.36319e-07, 1.11416e-06, -0.000967128, 1.71085e-06, -3.83432e-05, -4.46048e-12, 1.68634e-09, - 3.07729e-10, 0.0198492, 0.055882, -1.79771e-09, -2.43386e-18, -0.228931, 0.760035, -0.761594, -0.393895, 0.761594, - 0.761594, 0.0695398, -2.10839e-05, -0.761593, -0.761593, -7.67992e-12, -0.000156758, -0.761546, -7.03448e-14, -1.32276e-19, - -9.58347e-39, 4.26105e-18, -5.41441e-05, 4.03958e-17, 4.40911e-16, -0.747015, -0.879764, 2.22597e-08, -0.0910139, 0.999823, - 0.999852, -0.946979, 4.04764e-10, 1.04581e-21, 1.30145e-14, 9.21577e-17, -0.000708233, 0.761594, 3.99524e-13, 9.18395e-17, - 8.95967e-25, 6.11501e-20, 0.00901172, -2.49613e-41, -1.17426e-18, 3.85668e-09, -0.0678945, 7.0955e-16, -0.761593, 0.792416, - 0.999844, 0.441572, 0.00697713, 5.52616e-05, 2.76337e-24, 0.0128815, -8.97325e-09, 0.0575689, -9.19902e-17, 0.79131, - 0.90745, 0.442877, 1.65895e-09, -9.49956e-12, -0.761592, 0.759226, -0.788664, 0.428198, 4.22296e-08, 0.960446, - -3.30814e-05, -7.32391e-11, -0.761195, 0.761591, -0.11482, 0.00328929, -0.751446, -0.0329113, -2.38419e-07, -0.742049, - -0.761814, 2.28806e-08, 9.20868e-10, 7.83398e-05, 0.163255, 0.693679, 0.0233387, -0.0002779, -0.00744079, 0.761594, - -1.92574e-35, -6.19079e-15, 0.841117, 3.61402e-15, 7.29652e-05, -3.43512e-15, 2.44003e-10, 5.02575e-21, -0.575338, 0.760067, - -7.58183e-07, -0.411779, 0.937771, -5.07946e-26, -0.0015457, 0.625772, -0.128913, 7.19112e-12, -0.483728, 5.19518e-07, - 2.4981e-17, -2.77282e-10, -6.1325e-23, 4.02951e-22, -0.55648, 0.627102, -6.88607e-19, 9.6838e-17, -0.0142015, 1.0327e-05, - -0.761481, 3.44292e-08, -0.644774, 5.99614e-06, -2.4661e-12, 0.939834, -0.732183, 0.758408, -0.406918, 0.761563, - 0.624331, 0.959323, -0.757392, 0.00112301, 0.0215218, -7.76243e-10, -6.42156e-20, -3.81184e-11, 2.64018e-18, -0.00122851, - -9.04986e-17, 0.959198, -0.180509, 8.1107e-09, 4.4799e-16, -0.761594, 0.761594, -3.2702e-11, 6.12426e-16, -7.52802e-11, - 0.727842, 0.736519, 0.00697721, 0.00189766, 0.65557, -8.23888e-06, 1.19768e-19, -0.628732, 4.50315e-07, -0.596042, - -0.130076, -0.0570775, -0.758032, -0.720559, 0.329393, -0.000139915, -7.64476e-11, -1.93167e-30, 8.91504e-10, -5.52299e-08, - -0.00538237, -1.59122e-08, -4.0649e-14, -0.747447, 0.871613, 4.90251e-14, 0.760524, 0.623387, 0.761594, -0.963604, - -0.761594, -0.760084, 0.76159, -0.726583, 0.783823, 2.00219e-05, 1.12777e-06, 1.49013e-16, 0.761591, -0.625537, - 2.84003e-10, 4.32528e-16, 2.39073e-07, -6.75822e-06, 2.44769e-23, -1.39062e-07, 0.768824, -0.000734329, -1.18028e-08, -9.31533e-16, - 1.32778e-09, -5.24861e-07, 0.7686, 1.34084e-06, -0.0222266, -0.775352, 0.000264648, -2.44784e-27, -8.62503e-05, -0.523765, - 8.05469e-07, -8.00327e-17, 1.0076e-08, 0.655086, 1.12223e-07, -2.45992e-13, 0.761594, -0.000735076, -3.16667e-21, -1.0616e-12, - 0.999911, 6.67684e-10, -0.386663, 9.55342e-24, 0.000750192, -3.04876e-14, 1.69092e-13, 2.57222e-30, -0.886215, -8.85092e-18, - -0.999066, -0.992009, -9.64733e-07, 0.999793, 0.999959, -4.526e-09, -0.993717, 6.25306e-09, 1.5415e-21, 0.761594, - -5.23755e-08, -0.827688, -0, 5.99811e-22, 0.999958, -0.580146, -6.79704e-17, 1.83394e-07, 1.31284e-13, 3.62265e-10, - 0.35334, -0.00903121, -0.991192, 7.53642e-07, -0.00913154, -1.29673e-06, -1.76794e-11, 1.83017e-07, -0.000150782, 0.761551, - -0.739773, -0.268164, -0.991253, 0.761593, -8.46913e-07, 4.02483e-07, -0.0547462, -0.0433184, -0.0128592, -0.000826936, - 3.57959e-13, -0.073303, 2.14562e-10, 7.38332e-11, 0.00409962, 0.724394, -1.16275e-22, 1.63268e-25, -1.47741e-05, 3.33773e-08, - -7.77931e-12, 2.71497e-08, 3.42017e-05, 0.761594, -2.43217e-13, -6.87127e-23, -0.761548, 7.04828e-08, -0.761307, 1.3015e-07, - -0.00537324, 1.27446e-16, 0.763627, 4.22074e-15, -8.45132e-18, 0.00159667, 0.756707, 0.129373, -0.964029, 0.761554, - 3.34318e-14, 3.74157e-15, 0.763626, 4.1317e-22, -0.734039, 4.81716e-07, 0.753698, 0.758801, -0.995055, -0.76151, - 1.11652e-10, 1.10396e-07, 0.761582, 0.761191, -0.949494, 4.12621e-08, -0.0185743, -5.64389e-13, 1.35275e-28, -0.761587, - -2.38573e-16, -3.53137e-05, -0.438905, 0.0134316, 4.40739e-11, -3.01366e-05, -1.38874e-32, -3.77945e-21, 0.0780586, 1.6805e-13, - 0.751234, -0.803057, 0.811984, 7.895e-05, 0.761593, -0.00119532, -5.48256e-06, 0.757714, 0.761594, -0.761511, - -1.92404e-24, -1.41394e-08, 0.983753, 4.33593e-18, 6.11314e-09, -0.000849993, -0.96402, -3.8176e-18, -1.24685e-14, 8.03048e-05, - 0.994964, 0.130676, 0.922726, 1.28861e-07, 0.761594, -6.48442e-30, -0.761584, 0.761594, -3.41314e-14, -1.08584e-06, - 0.963591, 0.130676, 0.542119, -0.725731, 0.761583, -1.63707e-11, 2.25863e-17, 0.766755, -0.761594, -9.47899e-06, - 0.760034, 0.0996578, 0.757886, -0.761808, -0.000816665, -0.000733465, 0.761594, 0.670761, -4.79781e-25, -3.77769e-09, - -0.071795, -2.09178e-29, -2.96662e-22, -5.45929e-22, 4.72562e-14, 2.23143e-12, 2.66405e-05, 0.948048, -5.47349e-07, 0.761064, - -0.071795, -1.62295e-13, -2.48377e-11, 0.000322916, 1.0934e-18, 0.745943, 0.000203257, 2.9748e-09, 2.94779e-09, 0.000904395, - -1.33357e-12, -0.761594, 4.154e-08, 0.761365, -1.23576e-05, -0.118402, 0.758765, 8.3947e-11, 0.757683, 0.00091744, - 6.04679e-13, -8.36692e-05, -7.73738e-13, -0.964028, -2.87151e-05, -0.964027, -0.761415, 2.8511e-12, 0.982895, 0.000913338, - 0.761594, -5.61929e-05, -4.03471e-09, -9.05792e-10, -2.44896e-14, -0.761593, -1.53072e-14, 4.80451e-06, 4.97845e-05, 2.61901e-17}, - std::vector{ - -1.23107e-30, 0.00725055, 0.76182, 1.27929e-05, 1.58846e-07, -0.680477, -5.73051e-15, 6.33457e-20, 0.000288991, 0.00312473, - 0.761596, -0.000445729, 2.03617e-09, 5.11049e-30, 0.964028, -1.18563e-22, 3.80413e-32, -1.97169e-18, -0.759971, -1.27976e-07, - 0.00463415, -0.218827, -3.33063e-20, 2.62387e-15, 0.000655749, -0.761594, -9.3791e-19, 3.55914e-07, 1.21115e-10, 8.51853e-05, - 0.746421, -0.203347, 0.964016, -0.675211, -0.757478, 4.1336e-13, 1.31125e-14, -0.752869, -3.40686e-11, -9.04177e-20, - -6.2253e-22, 8.88893e-22, 0.000599919, -6.13229e-19, 9.45362e-05, 1.03827e-16, -0.00543732, -9.86013e-09, -0.761408, 0.214137, - -8.00209e-24, 0.679937, 0.917833, -1.34199e-10, 1.89431e-07, -0.761594, -0.0442637, -0.000217974, 0.00476938, 0.0246565, - -0.761481, 3.44292e-08, -0.644774, 5.99614e-06, -2.4661e-12, 0.939834, -0.732183, 0.758408, -0.406918, 0.761563, - 0.624331, 0.959323, -0.757392, 0.00112301, 0.0215218, -7.76243e-10, -6.42156e-20, -3.81184e-11, 2.64018e-18, -0.00122851, - -2.38573e-16, -3.53137e-05, -0.438905, 0.0134316, 4.40739e-11, -3.01366e-05, -1.38874e-32, -3.77945e-21, 0.0780586, 1.6805e-13, - 0.751234, -0.803057, 0.811984, 7.895e-05, 0.761593, -0.00119532, -5.48256e-06, 0.757714, 0.761594, -0.761511}, - std::vector{ - -1.14805e-14, 0.00725081, 1.00065, 1.27929e-05, 1.29939, -0.999801, -5.73051e-15, 3.93105e-11, 1.9999, 0.0243762, - 1, -0.000445729, 2.03617e-09, 5.11049e-30, 2, -1.67708e-22, 1, -0.0034493, -1, -0.591546, - 0.00463418, -2.86822, -0.230709, 0.0172415, 0.000655749, -1, -3.072e-06, 0.746059, 7.45091e-09, 8.51853e-05, - 0.965889, -0.206222, 1.99984, -0.999999, -0.990272, 1.11695e-12, 0.0222863, -0.979547, -2, -1.01401, - -0.999991, 0.976968, 1, -3.63016e-07, 0.0208492, 3.42118e-07, -0.00543741, -9.86013e-09, -0.999558, 0.219696, - -1.00056, 0.828996, 1.99999, -2.98023e-07, 1.61781e-05, -1, -0.044346, -1.00563, 0.099386, 0.0246731, - -0.999731, 3.44351e-08, -0.766302, 5.99614e-06, -0.087751, 1.73662, -0.999998, 1, -0.431925, 0.999926, - 0.732687, 1.93734, -0.99007, 1.41437, 0.0215275, -7.76243e-10, -1.4114e-06, -1.2676, 9.7866e-11, -0.999843, - -0.0294529, -3.65437e-05, -0.470874, 0.998836, 1.19728e-05, -3.01366e-05, -1.90968e-25, -2.75275e-07, 0.0782207, 0.000366083, - 0.975781, -1.10725, 1.13283, 7.895e-05, 1, -0.00119563, -0.99991, 0.990824, 1, -1}), + -1.23107e-30, 0.00725055, 0.76182, 1.27929e-05, 1.58846e-07, -0.680477, -5.73051e-15, + 6.33457e-20, 0.000288991, 0.00312473, 0.761596, -0.000445729, 2.03617e-09, 5.11049e-30, + 0.964028, -1.18563e-22, 3.80413e-32, -1.97169e-18, -0.759971, -1.27976e-07, 0.00463415, + -0.218827, -3.33063e-20, 2.62387e-15, 0.000655749, -0.761594, -9.3791e-19, 3.55914e-07, + 1.21115e-10, 8.51853e-05, 0.746421, -0.203347, 0.964016, -0.675211, -0.757478, + 4.1336e-13, 1.31125e-14, -0.752869, -3.40686e-11, -9.04177e-20, -6.2253e-22, 8.88893e-22, + 0.000599919, -6.13229e-19, 9.45362e-05, 1.03827e-16, -0.00543732, -9.86013e-09, -0.761408, + 0.214137, -8.00209e-24, 0.679937, 0.917833, -1.34199e-10, 1.89431e-07, -0.761594, + -0.0442637, -0.000217974, 0.00476938, 0.0246565, -0.761481, 3.44292e-08, -0.644774, + 5.99614e-06, -2.4661e-12, 0.939834, -0.732183, 0.758408, -0.406918, 0.761563, + 0.624331, 0.959323, -0.757392, 0.00112301, 0.0215218, -7.76243e-10, -6.42156e-20, + -3.81184e-11, 2.64018e-18, -0.00122851, -2.38573e-16, -3.53137e-05, -0.438905, 0.0134316, + 4.40739e-11, -3.01366e-05, -1.38874e-32, -3.77945e-21, 0.0780586, 1.6805e-13, 0.751234, + -0.803057, 0.811984, 7.895e-05, 0.761593, -0.00119532, -5.48256e-06, 0.757714, + 0.761594, -0.761511}, + std::vector{-1.14805e-14, + 0.00725081, + 1.00065, + 1.27929e-05, + 1.29939, + -0.999801, + -5.73051e-15, + 3.93105e-11, + 1.9999, + 0.0243762, + 1, + -0.000445729, + 2.03617e-09, + 5.11049e-30, + 2, + -1.67708e-22, + 1, + -0.0034493, + -1, + -0.591546, + 0.00463418, + -2.86822, + -0.230709, + 0.0172415, + 0.000655749, + -1, + -3.072e-06, + 0.746059, + 7.45091e-09, + 8.51853e-05, + 0.965889, + -0.206222, + 1.99984, + -0.999999, + -0.990272, + 1.11695e-12, + 0.0222863, + -0.979547, + -2, + -1.01401, + -0.999991, + 0.976968, + 1, + -3.63016e-07, + 0.0208492, + 3.42118e-07, + -0.00543741, + -9.86013e-09, + -0.999558, + 0.219696, + -1.00056, + 0.828996, + 1.99999, + -2.98023e-07, + 1.61781e-05, + -1, + -0.044346, + -1.00563, + 0.099386, + 0.0246731, + -0.999731, + 3.44351e-08, + -0.766302, + 5.99614e-06, + -0.087751, + 1.73662, + -0.999998, + 1, + -0.431925, + 0.999926, + 0.732687, + 1.93734, + -0.99007, + 1.41437, + 0.0215275, + -7.76243e-10, + -1.4114e-06, + -1.2676, + 9.7866e-11, + -0.999843, + -0.0294529, + -3.65437e-05, + -0.470874, + 0.998836, + 1.19728e-05, + -3.01366e-05, + -1.90968e-25, + -2.75275e-07, + 0.0782207, + 0.000366083, + 0.975781, + -1.10725, + 1.13283, + 7.895e-05, + 1, + -0.00119563, + -0.99991, + 0.990824, + 1, + -1}), }; return params; } @@ -1096,740 +1299,704 @@ template std::vector generateParamsBF16() { using T = typename element_type_traits::value_type; - std::vector params { + std::vector params{ LSTMSequenceParams( - 5, 10, 10, 10, - 0.7f, op::RecurrentSequenceDirection::FORWARD, + 5, + 10, + 10, + 10, + 0.7f, + op::RecurrentSequenceDirection::FORWARD, ET, std::vector{ - 1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, - 3.125, 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, - 8.625, 4.75, 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 1.25, - 5.8125, 7.03125, 9.25, 4.75, 5.125, 6, 4.875, 2.25, 9.4375, 2.78125, - 8, 8.1875, 7.4375, 9.6875, 8.25, 3.8125, 1.82812, 7.21875, 5.65625, 8.875, - 8.75, 9, 8.4375, 1.76562, 8.4375, 1.34375, 3.45312, 2.53125, 1.53125, 8.875, - 7.03125, 1.88281, 6.3125, 4.78125, 7.03125, 9.625, 4.6875, 5.8125, 2.78125, 7.21875, - 3.59375, 3.84375, 2.28125, 7.1875, 8, 8.5, 4.6875, 1.16406, 1.30469, 7.75, - 6.625, 9.875, 6.9375, 7.71875, 3.6875, 3.53125, 5, 8.125, 3, 1.92188, - 1.65625, 5, 5.21875, 9.125, 1.85938, 3.64062, 9.125, 3.59375, 2.0625, 2.15625, - 5.71875, 1.17188, 1.75, 7.125, 9.25, 2.90625, 9.1875, 3.375, 3.6875, 5.4375, - 6.25, 1.47656, 6.0625, 6.15625, 6.5, 2.3125, 9.625, 6.3125, 3.34375, 7.3125, - 3.07812, 1.92188, 5.8125, 4.71875, 9.5, 7.25, 5.4375, 4.71875, 5.875, 1.45312, - 7.875, 5.8125, 1.40625, 6.96875, 2.25, 5.625, 8.125, 9.5, 1.26562, 6.25, - 8.9375, 9.125, 5.875, 2.23438, 5.03125, 2.25, 9, 8.25, 4.375, 4.5625, - 5.84375, 2.48438, 6.875, 9.375, 4.25, 4.125, 6.125, 7.75, 6.75, 7.53125, - 2.125, 8.9375, 7.1875, 6.625, 6.8125, 7.75, 4.1875, 4.125, 7.875, 3.42188, - 4.1875, 9.0625, 7.75, 4.84375, 8.875, 9.625, 1.10156, 6.96875, 5.46875, 6.59375, - 1.66406, 2.03125, 8.0625, 9.5, 1.57812, 5.0625, 4.1875, 6.1875, 9.5, 4.6875, - 4.40625, 3.125, 7.875, 9.125, 7.9375, 6.15625, 3.71875, 1.02344, 7.9375, 6.5625, - 2.375, 3.9375, 6.1875, 5.75, 1.07812, 9, 7.375, 4.1875, 5.25, 9.125, - 7.875, 6.625, 5.1875, 1.14062, 3.40625, 9.375, 8.5, 7.1875, 5.9375, 10, - 1.625, 2.54688, 5.25, 2.21875, 7.6875, 9.375, 2.71875, 7.25, 5.1875, 1.59375, - 3.0625, 7.8125, 5.5625, 7.78125, 2.875, 9.25, 1.4375, 7.375, 5.65625, 2.125, - 2.54688, 1.17188, 4.5625, 1.23438, 1.96875, 1.25, 5.5625, 3.21875, 1.92188, 8.75, - 3.59375, 5.84375, 3.07812, 5.96875, 9.6875, 8.5625, 3.5, 2.125, 3.09375, 3.5, - 1.82031, 6.25, 6.125, 9.75, 4.75, 6.0625, 4.3125, 1.16406, 8.3125, 8.1875, - 3.59375, 3.09375, 7.4375, 8.25, 6.5, 4.5, 4.8125, 8.75, 7.75, 7.71875, - 4.84375, 6, 4.84375, 2.21875, 4.25, 1.53906, 2.375, 2.09375, 9.375, 1.39844, - 9.25, 1.96875, 8, 3.03125, 6.5625, 7.40625, 1.32031, 6.03125, 6.875, 1.10938, - 2.15625, 1.64062, 3.65625, 9.6875, 4.25, 6.125, 3.46875, 2.82812, 1.66406, 3.26562, - 2.375, 7.6875, 2.45312, 2.75, 9.4375, 6.21875, 4.3125, 9.75, 1.45312, 8.625, - 7.65625, 3.15625, 3.6875, 5.4375, 2.84375, 6.5625, 9.8125, 8.4375, 9, 2.40625, - 7.8125, 1.16406, 6.875, 1.625, 1.35938, 5.375, 8.3125, 6.4375, 7.875, 6.125, - 5.09375, 3.84375, 5.78125, 9.875, 1.98438, 6.1875, 2.3125, 4.40625, 5.5625, 5.9375, - 2.9375, 7.6875, 9.25, 7, 5.15625, 3.375, 2.1875, 1.59375, 7.875, 4.3125, - 2.90625, 6.65625, 1.67188, 2.89062, 1.85938, 7.75, 2.45312, 1.59375, 4.1875, 3.34375, - 1.85938, 8.25, 2.28125, 2.73438, 9.375, 6.75, 6.1875, 5.71875, 8.5, 9.3125, - 6.625, 3.375, 3.90625, 1.59375, 7.5625, 7.625, 5.6875, 7.9375, 7.625, 9.125, - 2.48438, 9.375, 7.1875, 1.125, 4.8125, 3.09375, 7.5625, 6.5625, 7.8125, 9.5, - 4.5625, 9.5, 9.3125, 6, 2.82812, 9.25, 1.07031, 6.75, 9.3125, 4.5, - 3.65625, 5.375, 2.5, 6.4375, 1.21875, 5.9375, 5.0625, 9.3125, 8.25, 9.25, - 4.3125, 4.5625, 6.46875, 9.625, 1.3125, 2.5625, 4.1875, 2.125, 1.70312, 2.21875, - 7.25, 5.5625, 1.10938, 1.1875, 5.125, 9.5, 9.625, 8.4375, 4, 1.13281, - 5.25, 2.57812, 1.94531, 3.98438, 5.5, 2.17188, 9, 8.25, 5.8125, 4.09375, - 3.53125, 9.4375, 4.1875, 6.25, 9.0625, 8.875, 3.17188, 8.625, 1.21875, 9.125, - 9.6875, 5.125, 4.875, 5.90625, 4.125, 8.125, 6.1875, 3.5625, 2.125, 5.40625, - 9.5, 6.375, 3.8125, 1.14062, 9.5625, 6.3125, 2.96875, 4.875, 3.23438, 8.25, - 8.75, 3.84375, 3.125, 9, 8.3125, 6.1875, 5.875, 2.65625, 2.71875, 8.0625, - 6.3125, 6.5, 1.42969, 1.48438, 1.14062, 4.78125, 1.44531, 7.125, 4.59375, 10}, - std::vector{ - 1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, - 3.125, 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, - 8.625, 4.75, 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 1.25, - 5.8125, 7.03125, 9.25, 4.75, 5.125, 6, 4.875, 2.25, 9.4375, 2.78125, - 8, 8.1875, 7.4375, 9.6875, 8.25, 3.8125, 1.82812, 7.21875, 5.65625, 10}, - std::vector{ - 1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, - 3.125, 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, - 8.625, 4.75, 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 1.25, - 5.8125, 7.03125, 9.25, 4.75, 5.125, 6, 4.875, 2.25, 9.4375, 2.78125, - 8, 8.1875, 7.4375, 9.6875, 8.25, 3.8125, 1.82812, 7.21875, 5.65625, 10}, + 1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, 3.125, + 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, 8.625, 4.75, + 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 1.25, 5.8125, 7.03125, 9.25, + 4.75, 5.125, 6, 4.875, 2.25, 9.4375, 2.78125, 8, 8.1875, 7.4375, 9.6875, + 8.25, 3.8125, 1.82812, 7.21875, 5.65625, 8.875, 8.75, 9, 8.4375, 1.76562, 8.4375, + 1.34375, 3.45312, 2.53125, 1.53125, 8.875, 7.03125, 1.88281, 6.3125, 4.78125, 7.03125, 9.625, + 4.6875, 5.8125, 2.78125, 7.21875, 3.59375, 3.84375, 2.28125, 7.1875, 8, 8.5, 4.6875, + 1.16406, 1.30469, 7.75, 6.625, 9.875, 6.9375, 7.71875, 3.6875, 3.53125, 5, 8.125, + 3, 1.92188, 1.65625, 5, 5.21875, 9.125, 1.85938, 3.64062, 9.125, 3.59375, 2.0625, + 2.15625, 5.71875, 1.17188, 1.75, 7.125, 9.25, 2.90625, 9.1875, 3.375, 3.6875, 5.4375, + 6.25, 1.47656, 6.0625, 6.15625, 6.5, 2.3125, 9.625, 6.3125, 3.34375, 7.3125, 3.07812, + 1.92188, 5.8125, 4.71875, 9.5, 7.25, 5.4375, 4.71875, 5.875, 1.45312, 7.875, 5.8125, + 1.40625, 6.96875, 2.25, 5.625, 8.125, 9.5, 1.26562, 6.25, 8.9375, 9.125, 5.875, + 2.23438, 5.03125, 2.25, 9, 8.25, 4.375, 4.5625, 5.84375, 2.48438, 6.875, 9.375, + 4.25, 4.125, 6.125, 7.75, 6.75, 7.53125, 2.125, 8.9375, 7.1875, 6.625, 6.8125, + 7.75, 4.1875, 4.125, 7.875, 3.42188, 4.1875, 9.0625, 7.75, 4.84375, 8.875, 9.625, + 1.10156, 6.96875, 5.46875, 6.59375, 1.66406, 2.03125, 8.0625, 9.5, 1.57812, 5.0625, 4.1875, + 6.1875, 9.5, 4.6875, 4.40625, 3.125, 7.875, 9.125, 7.9375, 6.15625, 3.71875, 1.02344, + 7.9375, 6.5625, 2.375, 3.9375, 6.1875, 5.75, 1.07812, 9, 7.375, 4.1875, 5.25, + 9.125, 7.875, 6.625, 5.1875, 1.14062, 3.40625, 9.375, 8.5, 7.1875, 5.9375, 10, + 1.625, 2.54688, 5.25, 2.21875, 7.6875, 9.375, 2.71875, 7.25, 5.1875, 1.59375, 3.0625, + 7.8125, 5.5625, 7.78125, 2.875, 9.25, 1.4375, 7.375, 5.65625, 2.125, 2.54688, 1.17188, + 4.5625, 1.23438, 1.96875, 1.25, 5.5625, 3.21875, 1.92188, 8.75, 3.59375, 5.84375, 3.07812, + 5.96875, 9.6875, 8.5625, 3.5, 2.125, 3.09375, 3.5, 1.82031, 6.25, 6.125, 9.75, + 4.75, 6.0625, 4.3125, 1.16406, 8.3125, 8.1875, 3.59375, 3.09375, 7.4375, 8.25, 6.5, + 4.5, 4.8125, 8.75, 7.75, 7.71875, 4.84375, 6, 4.84375, 2.21875, 4.25, 1.53906, + 2.375, 2.09375, 9.375, 1.39844, 9.25, 1.96875, 8, 3.03125, 6.5625, 7.40625, 1.32031, + 6.03125, 6.875, 1.10938, 2.15625, 1.64062, 3.65625, 9.6875, 4.25, 6.125, 3.46875, 2.82812, + 1.66406, 3.26562, 2.375, 7.6875, 2.45312, 2.75, 9.4375, 6.21875, 4.3125, 9.75, 1.45312, + 8.625, 7.65625, 3.15625, 3.6875, 5.4375, 2.84375, 6.5625, 9.8125, 8.4375, 9, 2.40625, + 7.8125, 1.16406, 6.875, 1.625, 1.35938, 5.375, 8.3125, 6.4375, 7.875, 6.125, 5.09375, + 3.84375, 5.78125, 9.875, 1.98438, 6.1875, 2.3125, 4.40625, 5.5625, 5.9375, 2.9375, 7.6875, + 9.25, 7, 5.15625, 3.375, 2.1875, 1.59375, 7.875, 4.3125, 2.90625, 6.65625, 1.67188, + 2.89062, 1.85938, 7.75, 2.45312, 1.59375, 4.1875, 3.34375, 1.85938, 8.25, 2.28125, 2.73438, + 9.375, 6.75, 6.1875, 5.71875, 8.5, 9.3125, 6.625, 3.375, 3.90625, 1.59375, 7.5625, + 7.625, 5.6875, 7.9375, 7.625, 9.125, 2.48438, 9.375, 7.1875, 1.125, 4.8125, 3.09375, + 7.5625, 6.5625, 7.8125, 9.5, 4.5625, 9.5, 9.3125, 6, 2.82812, 9.25, 1.07031, + 6.75, 9.3125, 4.5, 3.65625, 5.375, 2.5, 6.4375, 1.21875, 5.9375, 5.0625, 9.3125, + 8.25, 9.25, 4.3125, 4.5625, 6.46875, 9.625, 1.3125, 2.5625, 4.1875, 2.125, 1.70312, + 2.21875, 7.25, 5.5625, 1.10938, 1.1875, 5.125, 9.5, 9.625, 8.4375, 4, 1.13281, + 5.25, 2.57812, 1.94531, 3.98438, 5.5, 2.17188, 9, 8.25, 5.8125, 4.09375, 3.53125, + 9.4375, 4.1875, 6.25, 9.0625, 8.875, 3.17188, 8.625, 1.21875, 9.125, 9.6875, 5.125, + 4.875, 5.90625, 4.125, 8.125, 6.1875, 3.5625, 2.125, 5.40625, 9.5, 6.375, 3.8125, + 1.14062, 9.5625, 6.3125, 2.96875, 4.875, 3.23438, 8.25, 8.75, 3.84375, 3.125, 9, + 8.3125, 6.1875, 5.875, 2.65625, 2.71875, 8.0625, 6.3125, 6.5, 1.42969, 1.48438, 1.14062, + 4.78125, 1.44531, 7.125, 4.59375, 10}, + std::vector{1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, + 3.125, 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, + 8.625, 4.75, 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 1.25, + 5.8125, 7.03125, 9.25, 4.75, 5.125, 6, 4.875, 2.25, 9.4375, 2.78125, + 8, 8.1875, 7.4375, 9.6875, 8.25, 3.8125, 1.82812, 7.21875, 5.65625, 10}, + std::vector{1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, + 3.125, 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, + 8.625, 4.75, 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 1.25, + 5.8125, 7.03125, 9.25, 4.75, 5.125, 6, 4.875, 2.25, 9.4375, 2.78125, + 8, 8.1875, 7.4375, 9.6875, 8.25, 3.8125, 1.82812, 7.21875, 5.65625, 10}, std::vector{10, 10, 10, 10, 10}, std::vector{ - 1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, - 3.125, 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, - 8.625, 4.75, 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 1.25, - 5.8125, 7.03125, 9.25, 4.75, 5.125, 6, 4.875, 2.25, 9.4375, 2.78125, - 8, 8.1875, 7.4375, 9.6875, 8.25, 3.8125, 1.82812, 7.21875, 5.65625, 8.875, - 8.75, 9, 8.4375, 1.76562, 8.4375, 1.34375, 3.45312, 2.53125, 1.53125, 8.875, - 7.03125, 1.88281, 6.3125, 4.78125, 7.03125, 9.625, 4.6875, 5.8125, 2.78125, 7.21875, - 3.59375, 3.84375, 2.28125, 7.1875, 8, 8.5, 4.6875, 1.16406, 1.30469, 7.75, - 6.625, 9.875, 6.9375, 7.71875, 3.6875, 3.53125, 5, 8.125, 3, 1.92188, - 1.65625, 5, 5.21875, 9.125, 1.85938, 3.64062, 9.125, 3.59375, 2.0625, 2.15625, - 5.71875, 1.17188, 1.75, 7.125, 9.25, 2.90625, 9.1875, 3.375, 3.6875, 5.4375, - 6.25, 1.47656, 6.0625, 6.15625, 6.5, 2.3125, 9.625, 6.3125, 3.34375, 7.3125, - 3.07812, 1.92188, 5.8125, 4.71875, 9.5, 7.25, 5.4375, 4.71875, 5.875, 1.45312, - 7.875, 5.8125, 1.40625, 6.96875, 2.25, 5.625, 8.125, 9.5, 1.26562, 6.25, - 8.9375, 9.125, 5.875, 2.23438, 5.03125, 2.25, 9, 8.25, 4.375, 4.5625, - 5.84375, 2.48438, 6.875, 9.375, 4.25, 4.125, 6.125, 7.75, 6.75, 7.53125, - 2.125, 8.9375, 7.1875, 6.625, 6.8125, 7.75, 4.1875, 4.125, 7.875, 3.42188, - 4.1875, 9.0625, 7.75, 4.84375, 8.875, 9.625, 1.10156, 6.96875, 5.46875, 6.59375, - 1.66406, 2.03125, 8.0625, 9.5, 1.57812, 5.0625, 4.1875, 6.1875, 9.5, 4.6875, - 4.40625, 3.125, 7.875, 9.125, 7.9375, 6.15625, 3.71875, 1.02344, 7.9375, 6.5625, - 2.375, 3.9375, 6.1875, 5.75, 1.07812, 9, 7.375, 4.1875, 5.25, 9.125, - 7.875, 6.625, 5.1875, 1.14062, 3.40625, 9.375, 8.5, 7.1875, 5.9375, 10, - 1.625, 2.54688, 5.25, 2.21875, 7.6875, 9.375, 2.71875, 7.25, 5.1875, 1.59375, - 3.0625, 7.8125, 5.5625, 7.78125, 2.875, 9.25, 1.4375, 7.375, 5.65625, 2.125, - 2.54688, 1.17188, 4.5625, 1.23438, 1.96875, 1.25, 5.5625, 3.21875, 1.92188, 8.75, - 3.59375, 5.84375, 3.07812, 5.96875, 9.6875, 8.5625, 3.5, 2.125, 3.09375, 3.5, - 1.82031, 6.25, 6.125, 9.75, 4.75, 6.0625, 4.3125, 1.16406, 8.3125, 8.1875, - 3.59375, 3.09375, 7.4375, 8.25, 6.5, 4.5, 4.8125, 8.75, 7.75, 7.71875, - 4.84375, 6, 4.84375, 2.21875, 4.25, 1.53906, 2.375, 2.09375, 9.375, 1.39844, - 9.25, 1.96875, 8, 3.03125, 6.5625, 7.40625, 1.32031, 6.03125, 6.875, 1.10938, - 2.15625, 1.64062, 3.65625, 9.6875, 4.25, 6.125, 3.46875, 2.82812, 1.66406, 3.26562, - 2.375, 7.6875, 2.45312, 2.75, 9.4375, 6.21875, 4.3125, 9.75, 1.45312, 8.625, - 7.65625, 3.15625, 3.6875, 5.4375, 2.84375, 6.5625, 9.8125, 8.4375, 9, 2.40625, - 7.8125, 1.16406, 6.875, 1.625, 1.35938, 5.375, 8.3125, 6.4375, 7.875, 6.125, - 5.09375, 3.84375, 5.78125, 9.875, 1.98438, 6.1875, 2.3125, 4.40625, 5.5625, 5.9375, - 2.9375, 7.6875, 9.25, 7, 5.15625, 3.375, 2.1875, 1.59375, 7.875, 4.3125, - 2.90625, 6.65625, 1.67188, 2.89062, 1.85938, 7.75, 2.45312, 1.59375, 4.1875, 3.34375, - 1.85938, 8.25, 2.28125, 2.73438, 9.375, 6.75, 6.1875, 5.71875, 8.5, 9.3125, - 6.625, 3.375, 3.90625, 1.59375, 7.5625, 7.625, 5.6875, 7.9375, 7.625, 9.125, - 2.48438, 9.375, 7.1875, 1.125, 4.8125, 3.09375, 7.5625, 6.5625, 7.8125, 10}, + 1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, 3.125, + 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, 8.625, 4.75, + 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 1.25, 5.8125, 7.03125, 9.25, + 4.75, 5.125, 6, 4.875, 2.25, 9.4375, 2.78125, 8, 8.1875, 7.4375, 9.6875, + 8.25, 3.8125, 1.82812, 7.21875, 5.65625, 8.875, 8.75, 9, 8.4375, 1.76562, 8.4375, + 1.34375, 3.45312, 2.53125, 1.53125, 8.875, 7.03125, 1.88281, 6.3125, 4.78125, 7.03125, 9.625, + 4.6875, 5.8125, 2.78125, 7.21875, 3.59375, 3.84375, 2.28125, 7.1875, 8, 8.5, 4.6875, + 1.16406, 1.30469, 7.75, 6.625, 9.875, 6.9375, 7.71875, 3.6875, 3.53125, 5, 8.125, + 3, 1.92188, 1.65625, 5, 5.21875, 9.125, 1.85938, 3.64062, 9.125, 3.59375, 2.0625, + 2.15625, 5.71875, 1.17188, 1.75, 7.125, 9.25, 2.90625, 9.1875, 3.375, 3.6875, 5.4375, + 6.25, 1.47656, 6.0625, 6.15625, 6.5, 2.3125, 9.625, 6.3125, 3.34375, 7.3125, 3.07812, + 1.92188, 5.8125, 4.71875, 9.5, 7.25, 5.4375, 4.71875, 5.875, 1.45312, 7.875, 5.8125, + 1.40625, 6.96875, 2.25, 5.625, 8.125, 9.5, 1.26562, 6.25, 8.9375, 9.125, 5.875, + 2.23438, 5.03125, 2.25, 9, 8.25, 4.375, 4.5625, 5.84375, 2.48438, 6.875, 9.375, + 4.25, 4.125, 6.125, 7.75, 6.75, 7.53125, 2.125, 8.9375, 7.1875, 6.625, 6.8125, + 7.75, 4.1875, 4.125, 7.875, 3.42188, 4.1875, 9.0625, 7.75, 4.84375, 8.875, 9.625, + 1.10156, 6.96875, 5.46875, 6.59375, 1.66406, 2.03125, 8.0625, 9.5, 1.57812, 5.0625, 4.1875, + 6.1875, 9.5, 4.6875, 4.40625, 3.125, 7.875, 9.125, 7.9375, 6.15625, 3.71875, 1.02344, + 7.9375, 6.5625, 2.375, 3.9375, 6.1875, 5.75, 1.07812, 9, 7.375, 4.1875, 5.25, + 9.125, 7.875, 6.625, 5.1875, 1.14062, 3.40625, 9.375, 8.5, 7.1875, 5.9375, 10, + 1.625, 2.54688, 5.25, 2.21875, 7.6875, 9.375, 2.71875, 7.25, 5.1875, 1.59375, 3.0625, + 7.8125, 5.5625, 7.78125, 2.875, 9.25, 1.4375, 7.375, 5.65625, 2.125, 2.54688, 1.17188, + 4.5625, 1.23438, 1.96875, 1.25, 5.5625, 3.21875, 1.92188, 8.75, 3.59375, 5.84375, 3.07812, + 5.96875, 9.6875, 8.5625, 3.5, 2.125, 3.09375, 3.5, 1.82031, 6.25, 6.125, 9.75, + 4.75, 6.0625, 4.3125, 1.16406, 8.3125, 8.1875, 3.59375, 3.09375, 7.4375, 8.25, 6.5, + 4.5, 4.8125, 8.75, 7.75, 7.71875, 4.84375, 6, 4.84375, 2.21875, 4.25, 1.53906, + 2.375, 2.09375, 9.375, 1.39844, 9.25, 1.96875, 8, 3.03125, 6.5625, 7.40625, 1.32031, + 6.03125, 6.875, 1.10938, 2.15625, 1.64062, 3.65625, 9.6875, 4.25, 6.125, 3.46875, 2.82812, + 1.66406, 3.26562, 2.375, 7.6875, 2.45312, 2.75, 9.4375, 6.21875, 4.3125, 9.75, 1.45312, + 8.625, 7.65625, 3.15625, 3.6875, 5.4375, 2.84375, 6.5625, 9.8125, 8.4375, 9, 2.40625, + 7.8125, 1.16406, 6.875, 1.625, 1.35938, 5.375, 8.3125, 6.4375, 7.875, 6.125, 5.09375, + 3.84375, 5.78125, 9.875, 1.98438, 6.1875, 2.3125, 4.40625, 5.5625, 5.9375, 2.9375, 7.6875, + 9.25, 7, 5.15625, 3.375, 2.1875, 1.59375, 7.875, 4.3125, 2.90625, 6.65625, 1.67188, + 2.89062, 1.85938, 7.75, 2.45312, 1.59375, 4.1875, 3.34375, 1.85938, 8.25, 2.28125, 2.73438, + 9.375, 6.75, 6.1875, 5.71875, 8.5, 9.3125, 6.625, 3.375, 3.90625, 1.59375, 7.5625, + 7.625, 5.6875, 7.9375, 7.625, 9.125, 2.48438, 9.375, 7.1875, 1.125, 4.8125, 3.09375, + 7.5625, 6.5625, 7.8125, 10}, std::vector{ - 1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, - 3.125, 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, - 8.625, 4.75, 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 1.25, - 5.8125, 7.03125, 9.25, 4.75, 5.125, 6, 4.875, 2.25, 9.4375, 2.78125, - 8, 8.1875, 7.4375, 9.6875, 8.25, 3.8125, 1.82812, 7.21875, 5.65625, 8.875, - 8.75, 9, 8.4375, 1.76562, 8.4375, 1.34375, 3.45312, 2.53125, 1.53125, 8.875, - 7.03125, 1.88281, 6.3125, 4.78125, 7.03125, 9.625, 4.6875, 5.8125, 2.78125, 7.21875, - 3.59375, 3.84375, 2.28125, 7.1875, 8, 8.5, 4.6875, 1.16406, 1.30469, 7.75, - 6.625, 9.875, 6.9375, 7.71875, 3.6875, 3.53125, 5, 8.125, 3, 1.92188, - 1.65625, 5, 5.21875, 9.125, 1.85938, 3.64062, 9.125, 3.59375, 2.0625, 2.15625, - 5.71875, 1.17188, 1.75, 7.125, 9.25, 2.90625, 9.1875, 3.375, 3.6875, 5.4375, - 6.25, 1.47656, 6.0625, 6.15625, 6.5, 2.3125, 9.625, 6.3125, 3.34375, 7.3125, - 3.07812, 1.92188, 5.8125, 4.71875, 9.5, 7.25, 5.4375, 4.71875, 5.875, 1.45312, - 7.875, 5.8125, 1.40625, 6.96875, 2.25, 5.625, 8.125, 9.5, 1.26562, 6.25, - 8.9375, 9.125, 5.875, 2.23438, 5.03125, 2.25, 9, 8.25, 4.375, 4.5625, - 5.84375, 2.48438, 6.875, 9.375, 4.25, 4.125, 6.125, 7.75, 6.75, 7.53125, - 2.125, 8.9375, 7.1875, 6.625, 6.8125, 7.75, 4.1875, 4.125, 7.875, 3.42188, - 4.1875, 9.0625, 7.75, 4.84375, 8.875, 9.625, 1.10156, 6.96875, 5.46875, 6.59375, - 1.66406, 2.03125, 8.0625, 9.5, 1.57812, 5.0625, 4.1875, 6.1875, 9.5, 4.6875, - 4.40625, 3.125, 7.875, 9.125, 7.9375, 6.15625, 3.71875, 1.02344, 7.9375, 6.5625, - 2.375, 3.9375, 6.1875, 5.75, 1.07812, 9, 7.375, 4.1875, 5.25, 9.125, - 7.875, 6.625, 5.1875, 1.14062, 3.40625, 9.375, 8.5, 7.1875, 5.9375, 10, - 1.625, 2.54688, 5.25, 2.21875, 7.6875, 9.375, 2.71875, 7.25, 5.1875, 1.59375, - 3.0625, 7.8125, 5.5625, 7.78125, 2.875, 9.25, 1.4375, 7.375, 5.65625, 2.125, - 2.54688, 1.17188, 4.5625, 1.23438, 1.96875, 1.25, 5.5625, 3.21875, 1.92188, 8.75, - 3.59375, 5.84375, 3.07812, 5.96875, 9.6875, 8.5625, 3.5, 2.125, 3.09375, 3.5, - 1.82031, 6.25, 6.125, 9.75, 4.75, 6.0625, 4.3125, 1.16406, 8.3125, 8.1875, - 3.59375, 3.09375, 7.4375, 8.25, 6.5, 4.5, 4.8125, 8.75, 7.75, 7.71875, - 4.84375, 6, 4.84375, 2.21875, 4.25, 1.53906, 2.375, 2.09375, 9.375, 1.39844, - 9.25, 1.96875, 8, 3.03125, 6.5625, 7.40625, 1.32031, 6.03125, 6.875, 1.10938, - 2.15625, 1.64062, 3.65625, 9.6875, 4.25, 6.125, 3.46875, 2.82812, 1.66406, 3.26562, - 2.375, 7.6875, 2.45312, 2.75, 9.4375, 6.21875, 4.3125, 9.75, 1.45312, 8.625, - 7.65625, 3.15625, 3.6875, 5.4375, 2.84375, 6.5625, 9.8125, 8.4375, 9, 2.40625, - 7.8125, 1.16406, 6.875, 1.625, 1.35938, 5.375, 8.3125, 6.4375, 7.875, 6.125, - 5.09375, 3.84375, 5.78125, 9.875, 1.98438, 6.1875, 2.3125, 4.40625, 5.5625, 5.9375, - 2.9375, 7.6875, 9.25, 7, 5.15625, 3.375, 2.1875, 1.59375, 7.875, 4.3125, - 2.90625, 6.65625, 1.67188, 2.89062, 1.85938, 7.75, 2.45312, 1.59375, 4.1875, 3.34375, - 1.85938, 8.25, 2.28125, 2.73438, 9.375, 6.75, 6.1875, 5.71875, 8.5, 9.3125, - 6.625, 3.375, 3.90625, 1.59375, 7.5625, 7.625, 5.6875, 7.9375, 7.625, 9.125, - 2.48438, 9.375, 7.1875, 1.125, 4.8125, 3.09375, 7.5625, 6.5625, 7.8125, 10}, - std::vector{ - 1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, - 3.125, 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, - 8.625, 4.75, 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 1.25, - 5.8125, 7.03125, 9.25, 4.75, 5.125, 6, 4.875, 2.25, 9.4375, 10}, + 1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, 3.125, + 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, 8.625, 4.75, + 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 1.25, 5.8125, 7.03125, 9.25, + 4.75, 5.125, 6, 4.875, 2.25, 9.4375, 2.78125, 8, 8.1875, 7.4375, 9.6875, + 8.25, 3.8125, 1.82812, 7.21875, 5.65625, 8.875, 8.75, 9, 8.4375, 1.76562, 8.4375, + 1.34375, 3.45312, 2.53125, 1.53125, 8.875, 7.03125, 1.88281, 6.3125, 4.78125, 7.03125, 9.625, + 4.6875, 5.8125, 2.78125, 7.21875, 3.59375, 3.84375, 2.28125, 7.1875, 8, 8.5, 4.6875, + 1.16406, 1.30469, 7.75, 6.625, 9.875, 6.9375, 7.71875, 3.6875, 3.53125, 5, 8.125, + 3, 1.92188, 1.65625, 5, 5.21875, 9.125, 1.85938, 3.64062, 9.125, 3.59375, 2.0625, + 2.15625, 5.71875, 1.17188, 1.75, 7.125, 9.25, 2.90625, 9.1875, 3.375, 3.6875, 5.4375, + 6.25, 1.47656, 6.0625, 6.15625, 6.5, 2.3125, 9.625, 6.3125, 3.34375, 7.3125, 3.07812, + 1.92188, 5.8125, 4.71875, 9.5, 7.25, 5.4375, 4.71875, 5.875, 1.45312, 7.875, 5.8125, + 1.40625, 6.96875, 2.25, 5.625, 8.125, 9.5, 1.26562, 6.25, 8.9375, 9.125, 5.875, + 2.23438, 5.03125, 2.25, 9, 8.25, 4.375, 4.5625, 5.84375, 2.48438, 6.875, 9.375, + 4.25, 4.125, 6.125, 7.75, 6.75, 7.53125, 2.125, 8.9375, 7.1875, 6.625, 6.8125, + 7.75, 4.1875, 4.125, 7.875, 3.42188, 4.1875, 9.0625, 7.75, 4.84375, 8.875, 9.625, + 1.10156, 6.96875, 5.46875, 6.59375, 1.66406, 2.03125, 8.0625, 9.5, 1.57812, 5.0625, 4.1875, + 6.1875, 9.5, 4.6875, 4.40625, 3.125, 7.875, 9.125, 7.9375, 6.15625, 3.71875, 1.02344, + 7.9375, 6.5625, 2.375, 3.9375, 6.1875, 5.75, 1.07812, 9, 7.375, 4.1875, 5.25, + 9.125, 7.875, 6.625, 5.1875, 1.14062, 3.40625, 9.375, 8.5, 7.1875, 5.9375, 10, + 1.625, 2.54688, 5.25, 2.21875, 7.6875, 9.375, 2.71875, 7.25, 5.1875, 1.59375, 3.0625, + 7.8125, 5.5625, 7.78125, 2.875, 9.25, 1.4375, 7.375, 5.65625, 2.125, 2.54688, 1.17188, + 4.5625, 1.23438, 1.96875, 1.25, 5.5625, 3.21875, 1.92188, 8.75, 3.59375, 5.84375, 3.07812, + 5.96875, 9.6875, 8.5625, 3.5, 2.125, 3.09375, 3.5, 1.82031, 6.25, 6.125, 9.75, + 4.75, 6.0625, 4.3125, 1.16406, 8.3125, 8.1875, 3.59375, 3.09375, 7.4375, 8.25, 6.5, + 4.5, 4.8125, 8.75, 7.75, 7.71875, 4.84375, 6, 4.84375, 2.21875, 4.25, 1.53906, + 2.375, 2.09375, 9.375, 1.39844, 9.25, 1.96875, 8, 3.03125, 6.5625, 7.40625, 1.32031, + 6.03125, 6.875, 1.10938, 2.15625, 1.64062, 3.65625, 9.6875, 4.25, 6.125, 3.46875, 2.82812, + 1.66406, 3.26562, 2.375, 7.6875, 2.45312, 2.75, 9.4375, 6.21875, 4.3125, 9.75, 1.45312, + 8.625, 7.65625, 3.15625, 3.6875, 5.4375, 2.84375, 6.5625, 9.8125, 8.4375, 9, 2.40625, + 7.8125, 1.16406, 6.875, 1.625, 1.35938, 5.375, 8.3125, 6.4375, 7.875, 6.125, 5.09375, + 3.84375, 5.78125, 9.875, 1.98438, 6.1875, 2.3125, 4.40625, 5.5625, 5.9375, 2.9375, 7.6875, + 9.25, 7, 5.15625, 3.375, 2.1875, 1.59375, 7.875, 4.3125, 2.90625, 6.65625, 1.67188, + 2.89062, 1.85938, 7.75, 2.45312, 1.59375, 4.1875, 3.34375, 1.85938, 8.25, 2.28125, 2.73438, + 9.375, 6.75, 6.1875, 5.71875, 8.5, 9.3125, 6.625, 3.375, 3.90625, 1.59375, 7.5625, + 7.625, 5.6875, 7.9375, 7.625, 9.125, 2.48438, 9.375, 7.1875, 1.125, 4.8125, 3.09375, + 7.5625, 6.5625, 7.8125, 10}, + std::vector{1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, + 3.125, 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, + 8.625, 4.75, 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 1.25, + 5.8125, 7.03125, 9.25, 4.75, 5.125, 6, 4.875, 2.25, 9.4375, 10}, std::vector{ 0.523438, 0.667969, 0.667969, 0.667969, 0.667969, 0.523438, 0.632812, 0.664062, 0.667969, 0.640625, - 0.539062, 0.664062, 0.667969, 0.667969, 0.667969, 0.539062, 0.617188, 0.65625, 0.667969, 0.625, + 0.539062, 0.664062, 0.667969, 0.667969, 0.667969, 0.539062, 0.617188, 0.65625, 0.667969, 0.625, 0.546875, 0.648438, 0.667969, 0.664062, 0.667969, 0.546875, 0.601562, 0.640625, 0.667969, 0.609375, - 0.546875, 0.632812, 0.664062, 0.65625, 0.664062, 0.546875, 0.585938, 0.625, 0.664062, 0.59375, - 0.554688, 0.617188, 0.65625, 0.640625, 0.648438, 0.554688, 0.578125, 0.609375, 0.65625, 0.585938, - 0.554688, 0.601562, 0.640625, 0.625, 0.640625, 0.554688, 0.570312, 0.59375, 0.640625, 0.578125, - 0.554688, 0.59375, 0.625, 0.609375, 0.625, 0.554688, 0.570312, 0.585938, 0.625, 0.570312, - 0.554688, 0.585938, 0.609375, 0.59375, 0.609375, 0.554688, 0.5625, 0.578125, 0.609375, 0.570312, - 0.554688, 0.570312, 0.59375, 0.585938, 0.59375, 0.554688, 0.5625, 0.570312, 0.59375, 0.5625, - 0.554688, 0.570312, 0.585938, 0.578125, 0.585938, 0.554688, 0.5625, 0.570312, 0.585938, 0.5625, - 0.65625, 0.617188, 0.664062, 0.648438, 0.664062, 0.664062, 0.667969, 0.664062, 0.667969, 0.667969, - 0.648438, 0.601562, 0.664062, 0.632812, 0.664062, 0.65625, 0.667969, 0.664062, 0.667969, 0.664062, + 0.546875, 0.632812, 0.664062, 0.65625, 0.664062, 0.546875, 0.585938, 0.625, 0.664062, 0.59375, + 0.554688, 0.617188, 0.65625, 0.640625, 0.648438, 0.554688, 0.578125, 0.609375, 0.65625, 0.585938, + 0.554688, 0.601562, 0.640625, 0.625, 0.640625, 0.554688, 0.570312, 0.59375, 0.640625, 0.578125, + 0.554688, 0.59375, 0.625, 0.609375, 0.625, 0.554688, 0.570312, 0.585938, 0.625, 0.570312, + 0.554688, 0.585938, 0.609375, 0.59375, 0.609375, 0.554688, 0.5625, 0.578125, 0.609375, 0.570312, + 0.554688, 0.570312, 0.59375, 0.585938, 0.59375, 0.554688, 0.5625, 0.570312, 0.59375, 0.5625, + 0.554688, 0.570312, 0.585938, 0.578125, 0.585938, 0.554688, 0.5625, 0.570312, 0.585938, 0.5625, + 0.65625, 0.617188, 0.664062, 0.648438, 0.664062, 0.664062, 0.667969, 0.664062, 0.667969, 0.667969, + 0.648438, 0.601562, 0.664062, 0.632812, 0.664062, 0.65625, 0.667969, 0.664062, 0.667969, 0.664062, 0.632812, 0.585938, 0.648438, 0.617188, 0.648438, 0.648438, 0.664062, 0.648438, 0.667969, 0.65625, - 0.617188, 0.578125, 0.632812, 0.601562, 0.632812, 0.632812, 0.65625, 0.632812, 0.664062, 0.648438, + 0.617188, 0.578125, 0.632812, 0.601562, 0.632812, 0.632812, 0.65625, 0.632812, 0.664062, 0.648438, 0.601562, 0.570312, 0.617188, 0.585938, 0.617188, 0.617188, 0.640625, 0.617188, 0.648438, 0.632812, - 0.585938, 0.570312, 0.601562, 0.578125, 0.601562, 0.601562, 0.625, 0.601562, 0.640625, 0.617188, - 0.578125, 0.5625, 0.585938, 0.570312, 0.585938, 0.585938, 0.609375, 0.585938, 0.625, 0.601562, - 0.570312, 0.5625, 0.578125, 0.570312, 0.578125, 0.578125, 0.59375, 0.578125, 0.609375, 0.585938, - 0.570312, 0.5625, 0.570312, 0.5625, 0.570312, 0.570312, 0.585938, 0.570312, 0.59375, 0.578125, - 0.5625, 0.554688, 0.570312, 0.5625, 0.570312, 0.570312, 0.578125, 0.570312, 0.585938, 0.570312, - 0.667969, 0.667969, 0.664062, 0.667969, 0.667969, 0.648438, 0.667969, 0.667969, 0.65625, 0.5625, - 0.667969, 0.664062, 0.65625, 0.667969, 0.664062, 0.640625, 0.664062, 0.667969, 0.640625, 0.5625, - 0.664062, 0.648438, 0.640625, 0.664062, 0.65625, 0.625, 0.65625, 0.664062, 0.625, 0.554688, - 0.65625, 0.632812, 0.625, 0.65625, 0.648438, 0.609375, 0.640625, 0.664062, 0.609375, 0.554688, - 0.648438, 0.617188, 0.609375, 0.640625, 0.632812, 0.59375, 0.625, 0.648438, 0.59375, 0.554688, - 0.632812, 0.601562, 0.59375, 0.625, 0.617188, 0.585938, 0.609375, 0.632812, 0.585938, 0.554688, - 0.617188, 0.59375, 0.585938, 0.609375, 0.601562, 0.578125, 0.59375, 0.617188, 0.578125, 0.554688, - 0.601562, 0.585938, 0.578125, 0.59375, 0.585938, 0.570312, 0.585938, 0.601562, 0.570312, 0.554688, + 0.585938, 0.570312, 0.601562, 0.578125, 0.601562, 0.601562, 0.625, 0.601562, 0.640625, 0.617188, + 0.578125, 0.5625, 0.585938, 0.570312, 0.585938, 0.585938, 0.609375, 0.585938, 0.625, 0.601562, + 0.570312, 0.5625, 0.578125, 0.570312, 0.578125, 0.578125, 0.59375, 0.578125, 0.609375, 0.585938, + 0.570312, 0.5625, 0.570312, 0.5625, 0.570312, 0.570312, 0.585938, 0.570312, 0.59375, 0.578125, + 0.5625, 0.554688, 0.570312, 0.5625, 0.570312, 0.570312, 0.578125, 0.570312, 0.585938, 0.570312, + 0.667969, 0.667969, 0.664062, 0.667969, 0.667969, 0.648438, 0.667969, 0.667969, 0.65625, 0.5625, + 0.667969, 0.664062, 0.65625, 0.667969, 0.664062, 0.640625, 0.664062, 0.667969, 0.640625, 0.5625, + 0.664062, 0.648438, 0.640625, 0.664062, 0.65625, 0.625, 0.65625, 0.664062, 0.625, 0.554688, + 0.65625, 0.632812, 0.625, 0.65625, 0.648438, 0.609375, 0.640625, 0.664062, 0.609375, 0.554688, + 0.648438, 0.617188, 0.609375, 0.640625, 0.632812, 0.59375, 0.625, 0.648438, 0.59375, 0.554688, + 0.632812, 0.601562, 0.59375, 0.625, 0.617188, 0.585938, 0.609375, 0.632812, 0.585938, 0.554688, + 0.617188, 0.59375, 0.585938, 0.609375, 0.601562, 0.578125, 0.59375, 0.617188, 0.578125, 0.554688, + 0.601562, 0.585938, 0.578125, 0.59375, 0.585938, 0.570312, 0.585938, 0.601562, 0.570312, 0.554688, 0.585938, 0.570312, 0.570312, 0.585938, 0.578125, 0.570312, 0.578125, 0.585938, 0.570312, 0.554688, - 0.578125, 0.570312, 0.570312, 0.578125, 0.570312, 0.5625, 0.570312, 0.578125, 0.5625, 0.554688, + 0.578125, 0.570312, 0.570312, 0.578125, 0.570312, 0.5625, 0.570312, 0.578125, 0.5625, 0.554688, 0.667969, 0.667969, 0.667969, 0.667969, 0.667969, 0.667969, 0.667969, 0.632812, 0.667969, 0.648438, 0.664062, 0.667969, 0.667969, 0.664062, 0.664062, 0.664062, 0.664062, 0.617188, 0.667969, 0.632812, - 0.65625, 0.664062, 0.667969, 0.648438, 0.65625, 0.65625, 0.648438, 0.601562, 0.667969, 0.617188, - 0.648438, 0.65625, 0.664062, 0.632812, 0.640625, 0.648438, 0.640625, 0.59375, 0.664062, 0.601562, - 0.632812, 0.640625, 0.648438, 0.617188, 0.625, 0.632812, 0.625, 0.585938, 0.648438, 0.59375, - 0.617188, 0.625, 0.632812, 0.601562, 0.609375, 0.617188, 0.609375, 0.570312, 0.640625, 0.585938, - 0.601562, 0.609375, 0.617188, 0.59375, 0.59375, 0.601562, 0.59375, 0.570312, 0.625, 0.570312, - 0.585938, 0.59375, 0.601562, 0.585938, 0.585938, 0.585938, 0.585938, 0.5625, 0.609375, 0.570312, - 0.578125, 0.585938, 0.59375, 0.570312, 0.578125, 0.578125, 0.578125, 0.5625, 0.59375, 0.5625, - 0.570312, 0.578125, 0.585938, 0.570312, 0.570312, 0.570312, 0.570312, 0.5625, 0.585938, 0.5625, + 0.65625, 0.664062, 0.667969, 0.648438, 0.65625, 0.65625, 0.648438, 0.601562, 0.667969, 0.617188, + 0.648438, 0.65625, 0.664062, 0.632812, 0.640625, 0.648438, 0.640625, 0.59375, 0.664062, 0.601562, + 0.632812, 0.640625, 0.648438, 0.617188, 0.625, 0.632812, 0.625, 0.585938, 0.648438, 0.59375, + 0.617188, 0.625, 0.632812, 0.601562, 0.609375, 0.617188, 0.609375, 0.570312, 0.640625, 0.585938, + 0.601562, 0.609375, 0.617188, 0.59375, 0.59375, 0.601562, 0.59375, 0.570312, 0.625, 0.570312, + 0.585938, 0.59375, 0.601562, 0.585938, 0.585938, 0.585938, 0.585938, 0.5625, 0.609375, 0.570312, + 0.578125, 0.585938, 0.59375, 0.570312, 0.578125, 0.578125, 0.578125, 0.5625, 0.59375, 0.5625, + 0.570312, 0.578125, 0.585938, 0.570312, 0.570312, 0.570312, 0.570312, 0.5625, 0.585938, 0.5625, 0.667969, 0.667969, 0.667969, 0.667969, 0.667969, 0.664062, 0.617188, 0.667969, 0.667969, 0.667969, - 0.667969, 0.667969, 0.667969, 0.667969, 0.667969, 0.65625, 0.601562, 0.667969, 0.664062, 0.667969, - 0.664062, 0.664062, 0.664062, 0.667969, 0.664062, 0.640625, 0.585938, 0.664062, 0.65625, 0.667969, - 0.65625, 0.65625, 0.65625, 0.664062, 0.65625, 0.625, 0.578125, 0.65625, 0.648438, 0.664062, - 0.648438, 0.648438, 0.640625, 0.65625, 0.648438, 0.609375, 0.570312, 0.640625, 0.632812, 0.65625, - 0.632812, 0.632812, 0.625, 0.640625, 0.632812, 0.59375, 0.570312, 0.625, 0.617188, 0.640625, - 0.617188, 0.617188, 0.609375, 0.625, 0.617188, 0.585938, 0.5625, 0.609375, 0.601562, 0.625, - 0.601562, 0.601562, 0.59375, 0.609375, 0.601562, 0.578125, 0.5625, 0.59375, 0.585938, 0.609375, - 0.585938, 0.585938, 0.585938, 0.59375, 0.585938, 0.570312, 0.5625, 0.585938, 0.578125, 0.59375, + 0.667969, 0.667969, 0.667969, 0.667969, 0.667969, 0.65625, 0.601562, 0.667969, 0.664062, 0.667969, + 0.664062, 0.664062, 0.664062, 0.667969, 0.664062, 0.640625, 0.585938, 0.664062, 0.65625, 0.667969, + 0.65625, 0.65625, 0.65625, 0.664062, 0.65625, 0.625, 0.578125, 0.65625, 0.648438, 0.664062, + 0.648438, 0.648438, 0.640625, 0.65625, 0.648438, 0.609375, 0.570312, 0.640625, 0.632812, 0.65625, + 0.632812, 0.632812, 0.625, 0.640625, 0.632812, 0.59375, 0.570312, 0.625, 0.617188, 0.640625, + 0.617188, 0.617188, 0.609375, 0.625, 0.617188, 0.585938, 0.5625, 0.609375, 0.601562, 0.625, + 0.601562, 0.601562, 0.59375, 0.609375, 0.601562, 0.578125, 0.5625, 0.59375, 0.585938, 0.609375, + 0.585938, 0.585938, 0.585938, 0.59375, 0.585938, 0.570312, 0.5625, 0.585938, 0.578125, 0.59375, 0.578125, 0.578125, 0.578125, 0.585938, 0.578125, 0.570312, 0.554688, 0.578125, 0.570312, 0.585938}, - std::vector{ - 0.554688, 0.570312, 0.585938, 0.578125, 0.585938, 0.554688, 0.5625, 0.570312, 0.585938, 0.5625, - 0.5625, 0.554688, 0.570312, 0.5625, 0.570312, 0.570312, 0.578125, 0.570312, 0.585938, 0.570312, - 0.578125, 0.570312, 0.570312, 0.578125, 0.570312, 0.5625, 0.570312, 0.578125, 0.5625, 0.554688, - 0.570312, 0.578125, 0.585938, 0.570312, 0.570312, 0.570312, 0.570312, 0.5625, 0.585938, 0.5625, - 0.578125, 0.578125, 0.578125, 0.585938, 0.578125, 0.570312, 0.554688, 0.578125, 0.570312, 0.585938}, - std::vector{ - 1.20312, 1.27344, 1.375, 1.32031, 1.35156, 1.20312, 1.22656, 1.25781, 1.375, 1.23438, - 1.25, 1.21875, 1.26562, 1.23438, 1.26562, 1.26562, 1.32031, 1.26562, 1.35156, 1.28906, - 1.34375, 1.27344, 1.25781, 1.32031, 1.28906, 1.24219, 1.28125, 1.34375, 1.24219, 1.21875, - 1.28906, 1.32031, 1.35156, 1.27344, 1.28125, 1.29688, 1.28125, 1.22656, 1.35156, 1.23438, - 1.32812, 1.32812, 1.32031, 1.35938, 1.32812, 1.25781, 1.21875, 1.32031, 1.28906, 1.375}), + std::vector{0.554688, 0.570312, 0.585938, 0.578125, 0.585938, 0.554688, 0.5625, 0.570312, 0.585938, + 0.5625, 0.5625, 0.554688, 0.570312, 0.5625, 0.570312, 0.570312, 0.578125, 0.570312, + 0.585938, 0.570312, 0.578125, 0.570312, 0.570312, 0.578125, 0.570312, 0.5625, 0.570312, + 0.578125, 0.5625, 0.554688, 0.570312, 0.578125, 0.585938, 0.570312, 0.570312, 0.570312, + 0.570312, 0.5625, 0.585938, 0.5625, 0.578125, 0.578125, 0.578125, 0.585938, 0.578125, + 0.570312, 0.554688, 0.578125, 0.570312, 0.585938}, + std::vector{1.20312, 1.27344, 1.375, 1.32031, 1.35156, 1.20312, 1.22656, 1.25781, 1.375, 1.23438, + 1.25, 1.21875, 1.26562, 1.23438, 1.26562, 1.26562, 1.32031, 1.26562, 1.35156, 1.28906, + 1.34375, 1.27344, 1.25781, 1.32031, 1.28906, 1.24219, 1.28125, 1.34375, 1.24219, 1.21875, + 1.28906, 1.32031, 1.35156, 1.27344, 1.28125, 1.29688, 1.28125, 1.22656, 1.35156, 1.23438, + 1.32812, 1.32812, 1.32031, 1.35938, 1.32812, 1.25781, 1.21875, 1.32031, 1.28906, 1.375}), LSTMSequenceParams( - 5, 10, 10, 10, - 0.7f, op::RecurrentSequenceDirection::REVERSE, + 5, + 10, + 10, + 10, + 0.7f, + op::RecurrentSequenceDirection::REVERSE, ET, std::vector{ - 1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, - 3.125, 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, - 8.625, 4.75, 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 1.25, - 5.8125, 7.03125, 9.25, 4.75, 5.125, 6, 4.875, 2.25, 9.4375, 2.78125, - 8, 8.1875, 7.4375, 9.6875, 8.25, 3.8125, 1.82812, 7.21875, 5.65625, 8.875, - 8.75, 9, 8.4375, 1.76562, 8.4375, 1.34375, 3.45312, 2.53125, 1.53125, 8.875, - 7.03125, 1.88281, 6.3125, 4.78125, 7.03125, 9.625, 4.6875, 5.8125, 2.78125, 7.21875, - 3.59375, 3.84375, 2.28125, 7.1875, 8, 8.5, 4.6875, 1.16406, 1.30469, 7.75, - 6.625, 9.875, 6.9375, 7.71875, 3.6875, 3.53125, 5, 8.125, 3, 1.92188, - 1.65625, 5, 5.21875, 9.125, 1.85938, 3.64062, 9.125, 3.59375, 2.0625, 2.15625, - 5.71875, 1.17188, 1.75, 7.125, 9.25, 2.90625, 9.1875, 3.375, 3.6875, 5.4375, - 6.25, 1.47656, 6.0625, 6.15625, 6.5, 2.3125, 9.625, 6.3125, 3.34375, 7.3125, - 3.07812, 1.92188, 5.8125, 4.71875, 9.5, 7.25, 5.4375, 4.71875, 5.875, 1.45312, - 7.875, 5.8125, 1.40625, 6.96875, 2.25, 5.625, 8.125, 9.5, 1.26562, 6.25, - 8.9375, 9.125, 5.875, 2.23438, 5.03125, 2.25, 9, 8.25, 4.375, 4.5625, - 5.84375, 2.48438, 6.875, 9.375, 4.25, 4.125, 6.125, 7.75, 6.75, 7.53125, - 2.125, 8.9375, 7.1875, 6.625, 6.8125, 7.75, 4.1875, 4.125, 7.875, 3.42188, - 4.1875, 9.0625, 7.75, 4.84375, 8.875, 9.625, 1.10156, 6.96875, 5.46875, 6.59375, - 1.66406, 2.03125, 8.0625, 9.5, 1.57812, 5.0625, 4.1875, 6.1875, 9.5, 4.6875, - 4.40625, 3.125, 7.875, 9.125, 7.9375, 6.15625, 3.71875, 1.02344, 7.9375, 6.5625, - 2.375, 3.9375, 6.1875, 5.75, 1.07812, 9, 7.375, 4.1875, 5.25, 9.125, - 7.875, 6.625, 5.1875, 1.14062, 3.40625, 9.375, 8.5, 7.1875, 5.9375, 10, - 1.625, 2.54688, 5.25, 2.21875, 7.6875, 9.375, 2.71875, 7.25, 5.1875, 1.59375, - 3.0625, 7.8125, 5.5625, 7.78125, 2.875, 9.25, 1.4375, 7.375, 5.65625, 2.125, - 2.54688, 1.17188, 4.5625, 1.23438, 1.96875, 1.25, 5.5625, 3.21875, 1.92188, 8.75, - 3.59375, 5.84375, 3.07812, 5.96875, 9.6875, 8.5625, 3.5, 2.125, 3.09375, 3.5, - 1.82031, 6.25, 6.125, 9.75, 4.75, 6.0625, 4.3125, 1.16406, 8.3125, 8.1875, - 3.59375, 3.09375, 7.4375, 8.25, 6.5, 4.5, 4.8125, 8.75, 7.75, 7.71875, - 4.84375, 6, 4.84375, 2.21875, 4.25, 1.53906, 2.375, 2.09375, 9.375, 1.39844, - 9.25, 1.96875, 8, 3.03125, 6.5625, 7.40625, 1.32031, 6.03125, 6.875, 1.10938, - 2.15625, 1.64062, 3.65625, 9.6875, 4.25, 6.125, 3.46875, 2.82812, 1.66406, 3.26562, - 2.375, 7.6875, 2.45312, 2.75, 9.4375, 6.21875, 4.3125, 9.75, 1.45312, 8.625, - 7.65625, 3.15625, 3.6875, 5.4375, 2.84375, 6.5625, 9.8125, 8.4375, 9, 2.40625, - 7.8125, 1.16406, 6.875, 1.625, 1.35938, 5.375, 8.3125, 6.4375, 7.875, 6.125, - 5.09375, 3.84375, 5.78125, 9.875, 1.98438, 6.1875, 2.3125, 4.40625, 5.5625, 5.9375, - 2.9375, 7.6875, 9.25, 7, 5.15625, 3.375, 2.1875, 1.59375, 7.875, 4.3125, - 2.90625, 6.65625, 1.67188, 2.89062, 1.85938, 7.75, 2.45312, 1.59375, 4.1875, 3.34375, - 1.85938, 8.25, 2.28125, 2.73438, 9.375, 6.75, 6.1875, 5.71875, 8.5, 9.3125, - 6.625, 3.375, 3.90625, 1.59375, 7.5625, 7.625, 5.6875, 7.9375, 7.625, 9.125, - 2.48438, 9.375, 7.1875, 1.125, 4.8125, 3.09375, 7.5625, 6.5625, 7.8125, 9.5, - 4.5625, 9.5, 9.3125, 6, 2.82812, 9.25, 1.07031, 6.75, 9.3125, 4.5, - 3.65625, 5.375, 2.5, 6.4375, 1.21875, 5.9375, 5.0625, 9.3125, 8.25, 9.25, - 4.3125, 4.5625, 6.46875, 9.625, 1.3125, 2.5625, 4.1875, 2.125, 1.70312, 2.21875, - 7.25, 5.5625, 1.10938, 1.1875, 5.125, 9.5, 9.625, 8.4375, 4, 1.13281, - 5.25, 2.57812, 1.94531, 3.98438, 5.5, 2.17188, 9, 8.25, 5.8125, 4.09375, - 3.53125, 9.4375, 4.1875, 6.25, 9.0625, 8.875, 3.17188, 8.625, 1.21875, 9.125, - 9.6875, 5.125, 4.875, 5.90625, 4.125, 8.125, 6.1875, 3.5625, 2.125, 5.40625, - 9.5, 6.375, 3.8125, 1.14062, 9.5625, 6.3125, 2.96875, 4.875, 3.23438, 8.25, - 8.75, 3.84375, 3.125, 9, 8.3125, 6.1875, 5.875, 2.65625, 2.71875, 8.0625, - 6.3125, 6.5, 1.42969, 1.48438, 1.14062, 4.78125, 1.44531, 7.125, 4.59375, 10}, - std::vector{ - 1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, - 3.125, 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, - 8.625, 4.75, 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 1.25, - 5.8125, 7.03125, 9.25, 4.75, 5.125, 6, 4.875, 2.25, 9.4375, 2.78125, - 8, 8.1875, 7.4375, 9.6875, 8.25, 3.8125, 1.82812, 7.21875, 5.65625, 10}, - std::vector{ - 1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, - 3.125, 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, - 8.625, 4.75, 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 1.25, - 5.8125, 7.03125, 9.25, 4.75, 5.125, 6, 4.875, 2.25, 9.4375, 2.78125, - 8, 8.1875, 7.4375, 9.6875, 8.25, 3.8125, 1.82812, 7.21875, 5.65625, 10}, + 1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, 3.125, + 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, 8.625, 4.75, + 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 1.25, 5.8125, 7.03125, 9.25, + 4.75, 5.125, 6, 4.875, 2.25, 9.4375, 2.78125, 8, 8.1875, 7.4375, 9.6875, + 8.25, 3.8125, 1.82812, 7.21875, 5.65625, 8.875, 8.75, 9, 8.4375, 1.76562, 8.4375, + 1.34375, 3.45312, 2.53125, 1.53125, 8.875, 7.03125, 1.88281, 6.3125, 4.78125, 7.03125, 9.625, + 4.6875, 5.8125, 2.78125, 7.21875, 3.59375, 3.84375, 2.28125, 7.1875, 8, 8.5, 4.6875, + 1.16406, 1.30469, 7.75, 6.625, 9.875, 6.9375, 7.71875, 3.6875, 3.53125, 5, 8.125, + 3, 1.92188, 1.65625, 5, 5.21875, 9.125, 1.85938, 3.64062, 9.125, 3.59375, 2.0625, + 2.15625, 5.71875, 1.17188, 1.75, 7.125, 9.25, 2.90625, 9.1875, 3.375, 3.6875, 5.4375, + 6.25, 1.47656, 6.0625, 6.15625, 6.5, 2.3125, 9.625, 6.3125, 3.34375, 7.3125, 3.07812, + 1.92188, 5.8125, 4.71875, 9.5, 7.25, 5.4375, 4.71875, 5.875, 1.45312, 7.875, 5.8125, + 1.40625, 6.96875, 2.25, 5.625, 8.125, 9.5, 1.26562, 6.25, 8.9375, 9.125, 5.875, + 2.23438, 5.03125, 2.25, 9, 8.25, 4.375, 4.5625, 5.84375, 2.48438, 6.875, 9.375, + 4.25, 4.125, 6.125, 7.75, 6.75, 7.53125, 2.125, 8.9375, 7.1875, 6.625, 6.8125, + 7.75, 4.1875, 4.125, 7.875, 3.42188, 4.1875, 9.0625, 7.75, 4.84375, 8.875, 9.625, + 1.10156, 6.96875, 5.46875, 6.59375, 1.66406, 2.03125, 8.0625, 9.5, 1.57812, 5.0625, 4.1875, + 6.1875, 9.5, 4.6875, 4.40625, 3.125, 7.875, 9.125, 7.9375, 6.15625, 3.71875, 1.02344, + 7.9375, 6.5625, 2.375, 3.9375, 6.1875, 5.75, 1.07812, 9, 7.375, 4.1875, 5.25, + 9.125, 7.875, 6.625, 5.1875, 1.14062, 3.40625, 9.375, 8.5, 7.1875, 5.9375, 10, + 1.625, 2.54688, 5.25, 2.21875, 7.6875, 9.375, 2.71875, 7.25, 5.1875, 1.59375, 3.0625, + 7.8125, 5.5625, 7.78125, 2.875, 9.25, 1.4375, 7.375, 5.65625, 2.125, 2.54688, 1.17188, + 4.5625, 1.23438, 1.96875, 1.25, 5.5625, 3.21875, 1.92188, 8.75, 3.59375, 5.84375, 3.07812, + 5.96875, 9.6875, 8.5625, 3.5, 2.125, 3.09375, 3.5, 1.82031, 6.25, 6.125, 9.75, + 4.75, 6.0625, 4.3125, 1.16406, 8.3125, 8.1875, 3.59375, 3.09375, 7.4375, 8.25, 6.5, + 4.5, 4.8125, 8.75, 7.75, 7.71875, 4.84375, 6, 4.84375, 2.21875, 4.25, 1.53906, + 2.375, 2.09375, 9.375, 1.39844, 9.25, 1.96875, 8, 3.03125, 6.5625, 7.40625, 1.32031, + 6.03125, 6.875, 1.10938, 2.15625, 1.64062, 3.65625, 9.6875, 4.25, 6.125, 3.46875, 2.82812, + 1.66406, 3.26562, 2.375, 7.6875, 2.45312, 2.75, 9.4375, 6.21875, 4.3125, 9.75, 1.45312, + 8.625, 7.65625, 3.15625, 3.6875, 5.4375, 2.84375, 6.5625, 9.8125, 8.4375, 9, 2.40625, + 7.8125, 1.16406, 6.875, 1.625, 1.35938, 5.375, 8.3125, 6.4375, 7.875, 6.125, 5.09375, + 3.84375, 5.78125, 9.875, 1.98438, 6.1875, 2.3125, 4.40625, 5.5625, 5.9375, 2.9375, 7.6875, + 9.25, 7, 5.15625, 3.375, 2.1875, 1.59375, 7.875, 4.3125, 2.90625, 6.65625, 1.67188, + 2.89062, 1.85938, 7.75, 2.45312, 1.59375, 4.1875, 3.34375, 1.85938, 8.25, 2.28125, 2.73438, + 9.375, 6.75, 6.1875, 5.71875, 8.5, 9.3125, 6.625, 3.375, 3.90625, 1.59375, 7.5625, + 7.625, 5.6875, 7.9375, 7.625, 9.125, 2.48438, 9.375, 7.1875, 1.125, 4.8125, 3.09375, + 7.5625, 6.5625, 7.8125, 9.5, 4.5625, 9.5, 9.3125, 6, 2.82812, 9.25, 1.07031, + 6.75, 9.3125, 4.5, 3.65625, 5.375, 2.5, 6.4375, 1.21875, 5.9375, 5.0625, 9.3125, + 8.25, 9.25, 4.3125, 4.5625, 6.46875, 9.625, 1.3125, 2.5625, 4.1875, 2.125, 1.70312, + 2.21875, 7.25, 5.5625, 1.10938, 1.1875, 5.125, 9.5, 9.625, 8.4375, 4, 1.13281, + 5.25, 2.57812, 1.94531, 3.98438, 5.5, 2.17188, 9, 8.25, 5.8125, 4.09375, 3.53125, + 9.4375, 4.1875, 6.25, 9.0625, 8.875, 3.17188, 8.625, 1.21875, 9.125, 9.6875, 5.125, + 4.875, 5.90625, 4.125, 8.125, 6.1875, 3.5625, 2.125, 5.40625, 9.5, 6.375, 3.8125, + 1.14062, 9.5625, 6.3125, 2.96875, 4.875, 3.23438, 8.25, 8.75, 3.84375, 3.125, 9, + 8.3125, 6.1875, 5.875, 2.65625, 2.71875, 8.0625, 6.3125, 6.5, 1.42969, 1.48438, 1.14062, + 4.78125, 1.44531, 7.125, 4.59375, 10}, + std::vector{1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, + 3.125, 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, + 8.625, 4.75, 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 1.25, + 5.8125, 7.03125, 9.25, 4.75, 5.125, 6, 4.875, 2.25, 9.4375, 2.78125, + 8, 8.1875, 7.4375, 9.6875, 8.25, 3.8125, 1.82812, 7.21875, 5.65625, 10}, + std::vector{1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, + 3.125, 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, + 8.625, 4.75, 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 1.25, + 5.8125, 7.03125, 9.25, 4.75, 5.125, 6, 4.875, 2.25, 9.4375, 2.78125, + 8, 8.1875, 7.4375, 9.6875, 8.25, 3.8125, 1.82812, 7.21875, 5.65625, 10}, std::vector{10, 10, 10, 10, 10}, std::vector{ - 1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, - 3.125, 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, - 8.625, 4.75, 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 1.25, - 5.8125, 7.03125, 9.25, 4.75, 5.125, 6, 4.875, 2.25, 9.4375, 2.78125, - 8, 8.1875, 7.4375, 9.6875, 8.25, 3.8125, 1.82812, 7.21875, 5.65625, 8.875, - 8.75, 9, 8.4375, 1.76562, 8.4375, 1.34375, 3.45312, 2.53125, 1.53125, 8.875, - 7.03125, 1.88281, 6.3125, 4.78125, 7.03125, 9.625, 4.6875, 5.8125, 2.78125, 7.21875, - 3.59375, 3.84375, 2.28125, 7.1875, 8, 8.5, 4.6875, 1.16406, 1.30469, 7.75, - 6.625, 9.875, 6.9375, 7.71875, 3.6875, 3.53125, 5, 8.125, 3, 1.92188, - 1.65625, 5, 5.21875, 9.125, 1.85938, 3.64062, 9.125, 3.59375, 2.0625, 2.15625, - 5.71875, 1.17188, 1.75, 7.125, 9.25, 2.90625, 9.1875, 3.375, 3.6875, 5.4375, - 6.25, 1.47656, 6.0625, 6.15625, 6.5, 2.3125, 9.625, 6.3125, 3.34375, 7.3125, - 3.07812, 1.92188, 5.8125, 4.71875, 9.5, 7.25, 5.4375, 4.71875, 5.875, 1.45312, - 7.875, 5.8125, 1.40625, 6.96875, 2.25, 5.625, 8.125, 9.5, 1.26562, 6.25, - 8.9375, 9.125, 5.875, 2.23438, 5.03125, 2.25, 9, 8.25, 4.375, 4.5625, - 5.84375, 2.48438, 6.875, 9.375, 4.25, 4.125, 6.125, 7.75, 6.75, 7.53125, - 2.125, 8.9375, 7.1875, 6.625, 6.8125, 7.75, 4.1875, 4.125, 7.875, 3.42188, - 4.1875, 9.0625, 7.75, 4.84375, 8.875, 9.625, 1.10156, 6.96875, 5.46875, 6.59375, - 1.66406, 2.03125, 8.0625, 9.5, 1.57812, 5.0625, 4.1875, 6.1875, 9.5, 4.6875, - 4.40625, 3.125, 7.875, 9.125, 7.9375, 6.15625, 3.71875, 1.02344, 7.9375, 6.5625, - 2.375, 3.9375, 6.1875, 5.75, 1.07812, 9, 7.375, 4.1875, 5.25, 9.125, - 7.875, 6.625, 5.1875, 1.14062, 3.40625, 9.375, 8.5, 7.1875, 5.9375, 10, - 1.625, 2.54688, 5.25, 2.21875, 7.6875, 9.375, 2.71875, 7.25, 5.1875, 1.59375, - 3.0625, 7.8125, 5.5625, 7.78125, 2.875, 9.25, 1.4375, 7.375, 5.65625, 2.125, - 2.54688, 1.17188, 4.5625, 1.23438, 1.96875, 1.25, 5.5625, 3.21875, 1.92188, 8.75, - 3.59375, 5.84375, 3.07812, 5.96875, 9.6875, 8.5625, 3.5, 2.125, 3.09375, 3.5, - 1.82031, 6.25, 6.125, 9.75, 4.75, 6.0625, 4.3125, 1.16406, 8.3125, 8.1875, - 3.59375, 3.09375, 7.4375, 8.25, 6.5, 4.5, 4.8125, 8.75, 7.75, 7.71875, - 4.84375, 6, 4.84375, 2.21875, 4.25, 1.53906, 2.375, 2.09375, 9.375, 1.39844, - 9.25, 1.96875, 8, 3.03125, 6.5625, 7.40625, 1.32031, 6.03125, 6.875, 1.10938, - 2.15625, 1.64062, 3.65625, 9.6875, 4.25, 6.125, 3.46875, 2.82812, 1.66406, 3.26562, - 2.375, 7.6875, 2.45312, 2.75, 9.4375, 6.21875, 4.3125, 9.75, 1.45312, 8.625, - 7.65625, 3.15625, 3.6875, 5.4375, 2.84375, 6.5625, 9.8125, 8.4375, 9, 2.40625, - 7.8125, 1.16406, 6.875, 1.625, 1.35938, 5.375, 8.3125, 6.4375, 7.875, 6.125, - 5.09375, 3.84375, 5.78125, 9.875, 1.98438, 6.1875, 2.3125, 4.40625, 5.5625, 5.9375, - 2.9375, 7.6875, 9.25, 7, 5.15625, 3.375, 2.1875, 1.59375, 7.875, 4.3125, - 2.90625, 6.65625, 1.67188, 2.89062, 1.85938, 7.75, 2.45312, 1.59375, 4.1875, 3.34375, - 1.85938, 8.25, 2.28125, 2.73438, 9.375, 6.75, 6.1875, 5.71875, 8.5, 9.3125, - 6.625, 3.375, 3.90625, 1.59375, 7.5625, 7.625, 5.6875, 7.9375, 7.625, 9.125, - 2.48438, 9.375, 7.1875, 1.125, 4.8125, 3.09375, 7.5625, 6.5625, 7.8125, 10}, + 1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, 3.125, + 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, 8.625, 4.75, + 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 1.25, 5.8125, 7.03125, 9.25, + 4.75, 5.125, 6, 4.875, 2.25, 9.4375, 2.78125, 8, 8.1875, 7.4375, 9.6875, + 8.25, 3.8125, 1.82812, 7.21875, 5.65625, 8.875, 8.75, 9, 8.4375, 1.76562, 8.4375, + 1.34375, 3.45312, 2.53125, 1.53125, 8.875, 7.03125, 1.88281, 6.3125, 4.78125, 7.03125, 9.625, + 4.6875, 5.8125, 2.78125, 7.21875, 3.59375, 3.84375, 2.28125, 7.1875, 8, 8.5, 4.6875, + 1.16406, 1.30469, 7.75, 6.625, 9.875, 6.9375, 7.71875, 3.6875, 3.53125, 5, 8.125, + 3, 1.92188, 1.65625, 5, 5.21875, 9.125, 1.85938, 3.64062, 9.125, 3.59375, 2.0625, + 2.15625, 5.71875, 1.17188, 1.75, 7.125, 9.25, 2.90625, 9.1875, 3.375, 3.6875, 5.4375, + 6.25, 1.47656, 6.0625, 6.15625, 6.5, 2.3125, 9.625, 6.3125, 3.34375, 7.3125, 3.07812, + 1.92188, 5.8125, 4.71875, 9.5, 7.25, 5.4375, 4.71875, 5.875, 1.45312, 7.875, 5.8125, + 1.40625, 6.96875, 2.25, 5.625, 8.125, 9.5, 1.26562, 6.25, 8.9375, 9.125, 5.875, + 2.23438, 5.03125, 2.25, 9, 8.25, 4.375, 4.5625, 5.84375, 2.48438, 6.875, 9.375, + 4.25, 4.125, 6.125, 7.75, 6.75, 7.53125, 2.125, 8.9375, 7.1875, 6.625, 6.8125, + 7.75, 4.1875, 4.125, 7.875, 3.42188, 4.1875, 9.0625, 7.75, 4.84375, 8.875, 9.625, + 1.10156, 6.96875, 5.46875, 6.59375, 1.66406, 2.03125, 8.0625, 9.5, 1.57812, 5.0625, 4.1875, + 6.1875, 9.5, 4.6875, 4.40625, 3.125, 7.875, 9.125, 7.9375, 6.15625, 3.71875, 1.02344, + 7.9375, 6.5625, 2.375, 3.9375, 6.1875, 5.75, 1.07812, 9, 7.375, 4.1875, 5.25, + 9.125, 7.875, 6.625, 5.1875, 1.14062, 3.40625, 9.375, 8.5, 7.1875, 5.9375, 10, + 1.625, 2.54688, 5.25, 2.21875, 7.6875, 9.375, 2.71875, 7.25, 5.1875, 1.59375, 3.0625, + 7.8125, 5.5625, 7.78125, 2.875, 9.25, 1.4375, 7.375, 5.65625, 2.125, 2.54688, 1.17188, + 4.5625, 1.23438, 1.96875, 1.25, 5.5625, 3.21875, 1.92188, 8.75, 3.59375, 5.84375, 3.07812, + 5.96875, 9.6875, 8.5625, 3.5, 2.125, 3.09375, 3.5, 1.82031, 6.25, 6.125, 9.75, + 4.75, 6.0625, 4.3125, 1.16406, 8.3125, 8.1875, 3.59375, 3.09375, 7.4375, 8.25, 6.5, + 4.5, 4.8125, 8.75, 7.75, 7.71875, 4.84375, 6, 4.84375, 2.21875, 4.25, 1.53906, + 2.375, 2.09375, 9.375, 1.39844, 9.25, 1.96875, 8, 3.03125, 6.5625, 7.40625, 1.32031, + 6.03125, 6.875, 1.10938, 2.15625, 1.64062, 3.65625, 9.6875, 4.25, 6.125, 3.46875, 2.82812, + 1.66406, 3.26562, 2.375, 7.6875, 2.45312, 2.75, 9.4375, 6.21875, 4.3125, 9.75, 1.45312, + 8.625, 7.65625, 3.15625, 3.6875, 5.4375, 2.84375, 6.5625, 9.8125, 8.4375, 9, 2.40625, + 7.8125, 1.16406, 6.875, 1.625, 1.35938, 5.375, 8.3125, 6.4375, 7.875, 6.125, 5.09375, + 3.84375, 5.78125, 9.875, 1.98438, 6.1875, 2.3125, 4.40625, 5.5625, 5.9375, 2.9375, 7.6875, + 9.25, 7, 5.15625, 3.375, 2.1875, 1.59375, 7.875, 4.3125, 2.90625, 6.65625, 1.67188, + 2.89062, 1.85938, 7.75, 2.45312, 1.59375, 4.1875, 3.34375, 1.85938, 8.25, 2.28125, 2.73438, + 9.375, 6.75, 6.1875, 5.71875, 8.5, 9.3125, 6.625, 3.375, 3.90625, 1.59375, 7.5625, + 7.625, 5.6875, 7.9375, 7.625, 9.125, 2.48438, 9.375, 7.1875, 1.125, 4.8125, 3.09375, + 7.5625, 6.5625, 7.8125, 10}, std::vector{ - 1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, - 3.125, 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, - 8.625, 4.75, 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 1.25, - 5.8125, 7.03125, 9.25, 4.75, 5.125, 6, 4.875, 2.25, 9.4375, 2.78125, - 8, 8.1875, 7.4375, 9.6875, 8.25, 3.8125, 1.82812, 7.21875, 5.65625, 8.875, - 8.75, 9, 8.4375, 1.76562, 8.4375, 1.34375, 3.45312, 2.53125, 1.53125, 8.875, - 7.03125, 1.88281, 6.3125, 4.78125, 7.03125, 9.625, 4.6875, 5.8125, 2.78125, 7.21875, - 3.59375, 3.84375, 2.28125, 7.1875, 8, 8.5, 4.6875, 1.16406, 1.30469, 7.75, - 6.625, 9.875, 6.9375, 7.71875, 3.6875, 3.53125, 5, 8.125, 3, 1.92188, - 1.65625, 5, 5.21875, 9.125, 1.85938, 3.64062, 9.125, 3.59375, 2.0625, 2.15625, - 5.71875, 1.17188, 1.75, 7.125, 9.25, 2.90625, 9.1875, 3.375, 3.6875, 5.4375, - 6.25, 1.47656, 6.0625, 6.15625, 6.5, 2.3125, 9.625, 6.3125, 3.34375, 7.3125, - 3.07812, 1.92188, 5.8125, 4.71875, 9.5, 7.25, 5.4375, 4.71875, 5.875, 1.45312, - 7.875, 5.8125, 1.40625, 6.96875, 2.25, 5.625, 8.125, 9.5, 1.26562, 6.25, - 8.9375, 9.125, 5.875, 2.23438, 5.03125, 2.25, 9, 8.25, 4.375, 4.5625, - 5.84375, 2.48438, 6.875, 9.375, 4.25, 4.125, 6.125, 7.75, 6.75, 7.53125, - 2.125, 8.9375, 7.1875, 6.625, 6.8125, 7.75, 4.1875, 4.125, 7.875, 3.42188, - 4.1875, 9.0625, 7.75, 4.84375, 8.875, 9.625, 1.10156, 6.96875, 5.46875, 6.59375, - 1.66406, 2.03125, 8.0625, 9.5, 1.57812, 5.0625, 4.1875, 6.1875, 9.5, 4.6875, - 4.40625, 3.125, 7.875, 9.125, 7.9375, 6.15625, 3.71875, 1.02344, 7.9375, 6.5625, - 2.375, 3.9375, 6.1875, 5.75, 1.07812, 9, 7.375, 4.1875, 5.25, 9.125, - 7.875, 6.625, 5.1875, 1.14062, 3.40625, 9.375, 8.5, 7.1875, 5.9375, 10, - 1.625, 2.54688, 5.25, 2.21875, 7.6875, 9.375, 2.71875, 7.25, 5.1875, 1.59375, - 3.0625, 7.8125, 5.5625, 7.78125, 2.875, 9.25, 1.4375, 7.375, 5.65625, 2.125, - 2.54688, 1.17188, 4.5625, 1.23438, 1.96875, 1.25, 5.5625, 3.21875, 1.92188, 8.75, - 3.59375, 5.84375, 3.07812, 5.96875, 9.6875, 8.5625, 3.5, 2.125, 3.09375, 3.5, - 1.82031, 6.25, 6.125, 9.75, 4.75, 6.0625, 4.3125, 1.16406, 8.3125, 8.1875, - 3.59375, 3.09375, 7.4375, 8.25, 6.5, 4.5, 4.8125, 8.75, 7.75, 7.71875, - 4.84375, 6, 4.84375, 2.21875, 4.25, 1.53906, 2.375, 2.09375, 9.375, 1.39844, - 9.25, 1.96875, 8, 3.03125, 6.5625, 7.40625, 1.32031, 6.03125, 6.875, 1.10938, - 2.15625, 1.64062, 3.65625, 9.6875, 4.25, 6.125, 3.46875, 2.82812, 1.66406, 3.26562, - 2.375, 7.6875, 2.45312, 2.75, 9.4375, 6.21875, 4.3125, 9.75, 1.45312, 8.625, - 7.65625, 3.15625, 3.6875, 5.4375, 2.84375, 6.5625, 9.8125, 8.4375, 9, 2.40625, - 7.8125, 1.16406, 6.875, 1.625, 1.35938, 5.375, 8.3125, 6.4375, 7.875, 6.125, - 5.09375, 3.84375, 5.78125, 9.875, 1.98438, 6.1875, 2.3125, 4.40625, 5.5625, 5.9375, - 2.9375, 7.6875, 9.25, 7, 5.15625, 3.375, 2.1875, 1.59375, 7.875, 4.3125, - 2.90625, 6.65625, 1.67188, 2.89062, 1.85938, 7.75, 2.45312, 1.59375, 4.1875, 3.34375, - 1.85938, 8.25, 2.28125, 2.73438, 9.375, 6.75, 6.1875, 5.71875, 8.5, 9.3125, - 6.625, 3.375, 3.90625, 1.59375, 7.5625, 7.625, 5.6875, 7.9375, 7.625, 9.125, - 2.48438, 9.375, 7.1875, 1.125, 4.8125, 3.09375, 7.5625, 6.5625, 7.8125, 10}, + 1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, 3.125, + 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, 8.625, 4.75, + 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 1.25, 5.8125, 7.03125, 9.25, + 4.75, 5.125, 6, 4.875, 2.25, 9.4375, 2.78125, 8, 8.1875, 7.4375, 9.6875, + 8.25, 3.8125, 1.82812, 7.21875, 5.65625, 8.875, 8.75, 9, 8.4375, 1.76562, 8.4375, + 1.34375, 3.45312, 2.53125, 1.53125, 8.875, 7.03125, 1.88281, 6.3125, 4.78125, 7.03125, 9.625, + 4.6875, 5.8125, 2.78125, 7.21875, 3.59375, 3.84375, 2.28125, 7.1875, 8, 8.5, 4.6875, + 1.16406, 1.30469, 7.75, 6.625, 9.875, 6.9375, 7.71875, 3.6875, 3.53125, 5, 8.125, + 3, 1.92188, 1.65625, 5, 5.21875, 9.125, 1.85938, 3.64062, 9.125, 3.59375, 2.0625, + 2.15625, 5.71875, 1.17188, 1.75, 7.125, 9.25, 2.90625, 9.1875, 3.375, 3.6875, 5.4375, + 6.25, 1.47656, 6.0625, 6.15625, 6.5, 2.3125, 9.625, 6.3125, 3.34375, 7.3125, 3.07812, + 1.92188, 5.8125, 4.71875, 9.5, 7.25, 5.4375, 4.71875, 5.875, 1.45312, 7.875, 5.8125, + 1.40625, 6.96875, 2.25, 5.625, 8.125, 9.5, 1.26562, 6.25, 8.9375, 9.125, 5.875, + 2.23438, 5.03125, 2.25, 9, 8.25, 4.375, 4.5625, 5.84375, 2.48438, 6.875, 9.375, + 4.25, 4.125, 6.125, 7.75, 6.75, 7.53125, 2.125, 8.9375, 7.1875, 6.625, 6.8125, + 7.75, 4.1875, 4.125, 7.875, 3.42188, 4.1875, 9.0625, 7.75, 4.84375, 8.875, 9.625, + 1.10156, 6.96875, 5.46875, 6.59375, 1.66406, 2.03125, 8.0625, 9.5, 1.57812, 5.0625, 4.1875, + 6.1875, 9.5, 4.6875, 4.40625, 3.125, 7.875, 9.125, 7.9375, 6.15625, 3.71875, 1.02344, + 7.9375, 6.5625, 2.375, 3.9375, 6.1875, 5.75, 1.07812, 9, 7.375, 4.1875, 5.25, + 9.125, 7.875, 6.625, 5.1875, 1.14062, 3.40625, 9.375, 8.5, 7.1875, 5.9375, 10, + 1.625, 2.54688, 5.25, 2.21875, 7.6875, 9.375, 2.71875, 7.25, 5.1875, 1.59375, 3.0625, + 7.8125, 5.5625, 7.78125, 2.875, 9.25, 1.4375, 7.375, 5.65625, 2.125, 2.54688, 1.17188, + 4.5625, 1.23438, 1.96875, 1.25, 5.5625, 3.21875, 1.92188, 8.75, 3.59375, 5.84375, 3.07812, + 5.96875, 9.6875, 8.5625, 3.5, 2.125, 3.09375, 3.5, 1.82031, 6.25, 6.125, 9.75, + 4.75, 6.0625, 4.3125, 1.16406, 8.3125, 8.1875, 3.59375, 3.09375, 7.4375, 8.25, 6.5, + 4.5, 4.8125, 8.75, 7.75, 7.71875, 4.84375, 6, 4.84375, 2.21875, 4.25, 1.53906, + 2.375, 2.09375, 9.375, 1.39844, 9.25, 1.96875, 8, 3.03125, 6.5625, 7.40625, 1.32031, + 6.03125, 6.875, 1.10938, 2.15625, 1.64062, 3.65625, 9.6875, 4.25, 6.125, 3.46875, 2.82812, + 1.66406, 3.26562, 2.375, 7.6875, 2.45312, 2.75, 9.4375, 6.21875, 4.3125, 9.75, 1.45312, + 8.625, 7.65625, 3.15625, 3.6875, 5.4375, 2.84375, 6.5625, 9.8125, 8.4375, 9, 2.40625, + 7.8125, 1.16406, 6.875, 1.625, 1.35938, 5.375, 8.3125, 6.4375, 7.875, 6.125, 5.09375, + 3.84375, 5.78125, 9.875, 1.98438, 6.1875, 2.3125, 4.40625, 5.5625, 5.9375, 2.9375, 7.6875, + 9.25, 7, 5.15625, 3.375, 2.1875, 1.59375, 7.875, 4.3125, 2.90625, 6.65625, 1.67188, + 2.89062, 1.85938, 7.75, 2.45312, 1.59375, 4.1875, 3.34375, 1.85938, 8.25, 2.28125, 2.73438, + 9.375, 6.75, 6.1875, 5.71875, 8.5, 9.3125, 6.625, 3.375, 3.90625, 1.59375, 7.5625, + 7.625, 5.6875, 7.9375, 7.625, 9.125, 2.48438, 9.375, 7.1875, 1.125, 4.8125, 3.09375, + 7.5625, 6.5625, 7.8125, 10}, + std::vector{1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, + 3.125, 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, + 8.625, 4.75, 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 1.25, + 5.8125, 7.03125, 9.25, 4.75, 5.125, 6, 4.875, 2.25, 9.4375, 10}, std::vector{ - 1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, - 3.125, 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, - 8.625, 4.75, 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 1.25, - 5.8125, 7.03125, 9.25, 4.75, 5.125, 6, 4.875, 2.25, 9.4375, 10}, - std::vector{ - 0.554688, 0.570312, 0.585938, 0.578125, 0.585938, 0.554688, 0.5625, 0.570312, 0.585938, 0.5625, - 0.554688, 0.570312, 0.59375, 0.585938, 0.59375, 0.554688, 0.5625, 0.570312, 0.59375, 0.5625, - 0.554688, 0.585938, 0.609375, 0.59375, 0.609375, 0.554688, 0.5625, 0.578125, 0.609375, 0.570312, - 0.554688, 0.59375, 0.625, 0.609375, 0.625, 0.554688, 0.570312, 0.585938, 0.625, 0.570312, - 0.554688, 0.601562, 0.640625, 0.625, 0.640625, 0.554688, 0.570312, 0.59375, 0.640625, 0.578125, - 0.554688, 0.617188, 0.65625, 0.640625, 0.648438, 0.554688, 0.578125, 0.609375, 0.65625, 0.585938, - 0.546875, 0.632812, 0.664062, 0.65625, 0.664062, 0.546875, 0.585938, 0.625, 0.664062, 0.59375, + 0.554688, 0.570312, 0.585938, 0.578125, 0.585938, 0.554688, 0.5625, 0.570312, 0.585938, 0.5625, + 0.554688, 0.570312, 0.59375, 0.585938, 0.59375, 0.554688, 0.5625, 0.570312, 0.59375, 0.5625, + 0.554688, 0.585938, 0.609375, 0.59375, 0.609375, 0.554688, 0.5625, 0.578125, 0.609375, 0.570312, + 0.554688, 0.59375, 0.625, 0.609375, 0.625, 0.554688, 0.570312, 0.585938, 0.625, 0.570312, + 0.554688, 0.601562, 0.640625, 0.625, 0.640625, 0.554688, 0.570312, 0.59375, 0.640625, 0.578125, + 0.554688, 0.617188, 0.65625, 0.640625, 0.648438, 0.554688, 0.578125, 0.609375, 0.65625, 0.585938, + 0.546875, 0.632812, 0.664062, 0.65625, 0.664062, 0.546875, 0.585938, 0.625, 0.664062, 0.59375, 0.546875, 0.648438, 0.667969, 0.664062, 0.667969, 0.546875, 0.601562, 0.640625, 0.667969, 0.609375, - 0.539062, 0.664062, 0.667969, 0.667969, 0.667969, 0.539062, 0.617188, 0.65625, 0.667969, 0.625, + 0.539062, 0.664062, 0.667969, 0.667969, 0.667969, 0.539062, 0.617188, 0.65625, 0.667969, 0.625, 0.523438, 0.667969, 0.667969, 0.667969, 0.667969, 0.523438, 0.632812, 0.664062, 0.667969, 0.640625, - 0.5625, 0.554688, 0.570312, 0.5625, 0.570312, 0.570312, 0.578125, 0.570312, 0.585938, 0.570312, - 0.570312, 0.5625, 0.570312, 0.5625, 0.570312, 0.570312, 0.585938, 0.570312, 0.59375, 0.578125, - 0.570312, 0.5625, 0.578125, 0.570312, 0.578125, 0.578125, 0.59375, 0.578125, 0.609375, 0.585938, - 0.578125, 0.5625, 0.585938, 0.570312, 0.585938, 0.585938, 0.609375, 0.585938, 0.625, 0.601562, - 0.585938, 0.570312, 0.601562, 0.578125, 0.601562, 0.601562, 0.625, 0.601562, 0.640625, 0.617188, + 0.5625, 0.554688, 0.570312, 0.5625, 0.570312, 0.570312, 0.578125, 0.570312, 0.585938, 0.570312, + 0.570312, 0.5625, 0.570312, 0.5625, 0.570312, 0.570312, 0.585938, 0.570312, 0.59375, 0.578125, + 0.570312, 0.5625, 0.578125, 0.570312, 0.578125, 0.578125, 0.59375, 0.578125, 0.609375, 0.585938, + 0.578125, 0.5625, 0.585938, 0.570312, 0.585938, 0.585938, 0.609375, 0.585938, 0.625, 0.601562, + 0.585938, 0.570312, 0.601562, 0.578125, 0.601562, 0.601562, 0.625, 0.601562, 0.640625, 0.617188, 0.601562, 0.570312, 0.617188, 0.585938, 0.617188, 0.617188, 0.640625, 0.617188, 0.648438, 0.632812, - 0.617188, 0.578125, 0.632812, 0.601562, 0.632812, 0.632812, 0.65625, 0.632812, 0.664062, 0.648438, + 0.617188, 0.578125, 0.632812, 0.601562, 0.632812, 0.632812, 0.65625, 0.632812, 0.664062, 0.648438, 0.632812, 0.585938, 0.648438, 0.617188, 0.648438, 0.648438, 0.664062, 0.648438, 0.667969, 0.65625, - 0.648438, 0.601562, 0.664062, 0.632812, 0.664062, 0.65625, 0.667969, 0.664062, 0.667969, 0.664062, - 0.65625, 0.617188, 0.664062, 0.648438, 0.664062, 0.664062, 0.667969, 0.664062, 0.667969, 0.667969, - 0.578125, 0.570312, 0.570312, 0.578125, 0.570312, 0.5625, 0.570312, 0.578125, 0.5625, 0.554688, + 0.648438, 0.601562, 0.664062, 0.632812, 0.664062, 0.65625, 0.667969, 0.664062, 0.667969, 0.664062, + 0.65625, 0.617188, 0.664062, 0.648438, 0.664062, 0.664062, 0.667969, 0.664062, 0.667969, 0.667969, + 0.578125, 0.570312, 0.570312, 0.578125, 0.570312, 0.5625, 0.570312, 0.578125, 0.5625, 0.554688, 0.585938, 0.570312, 0.570312, 0.585938, 0.578125, 0.570312, 0.578125, 0.585938, 0.570312, 0.554688, - 0.601562, 0.585938, 0.578125, 0.59375, 0.585938, 0.570312, 0.585938, 0.601562, 0.570312, 0.554688, - 0.617188, 0.59375, 0.585938, 0.609375, 0.601562, 0.578125, 0.59375, 0.617188, 0.578125, 0.554688, - 0.632812, 0.601562, 0.59375, 0.625, 0.617188, 0.585938, 0.609375, 0.632812, 0.585938, 0.554688, - 0.648438, 0.617188, 0.609375, 0.640625, 0.632812, 0.59375, 0.625, 0.648438, 0.59375, 0.554688, - 0.65625, 0.632812, 0.625, 0.65625, 0.648438, 0.609375, 0.640625, 0.664062, 0.609375, 0.554688, - 0.664062, 0.648438, 0.640625, 0.664062, 0.65625, 0.625, 0.65625, 0.664062, 0.625, 0.554688, - 0.667969, 0.664062, 0.65625, 0.667969, 0.664062, 0.640625, 0.664062, 0.667969, 0.640625, 0.5625, - 0.667969, 0.667969, 0.664062, 0.667969, 0.667969, 0.648438, 0.667969, 0.667969, 0.65625, 0.5625, - 0.570312, 0.578125, 0.585938, 0.570312, 0.570312, 0.570312, 0.570312, 0.5625, 0.585938, 0.5625, - 0.578125, 0.585938, 0.59375, 0.570312, 0.578125, 0.578125, 0.578125, 0.5625, 0.59375, 0.5625, - 0.585938, 0.59375, 0.601562, 0.585938, 0.585938, 0.585938, 0.585938, 0.5625, 0.609375, 0.570312, - 0.601562, 0.609375, 0.617188, 0.59375, 0.59375, 0.601562, 0.59375, 0.570312, 0.625, 0.570312, - 0.617188, 0.625, 0.632812, 0.601562, 0.609375, 0.617188, 0.609375, 0.570312, 0.640625, 0.585938, - 0.632812, 0.640625, 0.648438, 0.617188, 0.625, 0.632812, 0.625, 0.585938, 0.648438, 0.59375, - 0.648438, 0.65625, 0.664062, 0.632812, 0.640625, 0.648438, 0.640625, 0.59375, 0.664062, 0.601562, - 0.65625, 0.664062, 0.667969, 0.648438, 0.65625, 0.65625, 0.648438, 0.601562, 0.667969, 0.617188, + 0.601562, 0.585938, 0.578125, 0.59375, 0.585938, 0.570312, 0.585938, 0.601562, 0.570312, 0.554688, + 0.617188, 0.59375, 0.585938, 0.609375, 0.601562, 0.578125, 0.59375, 0.617188, 0.578125, 0.554688, + 0.632812, 0.601562, 0.59375, 0.625, 0.617188, 0.585938, 0.609375, 0.632812, 0.585938, 0.554688, + 0.648438, 0.617188, 0.609375, 0.640625, 0.632812, 0.59375, 0.625, 0.648438, 0.59375, 0.554688, + 0.65625, 0.632812, 0.625, 0.65625, 0.648438, 0.609375, 0.640625, 0.664062, 0.609375, 0.554688, + 0.664062, 0.648438, 0.640625, 0.664062, 0.65625, 0.625, 0.65625, 0.664062, 0.625, 0.554688, + 0.667969, 0.664062, 0.65625, 0.667969, 0.664062, 0.640625, 0.664062, 0.667969, 0.640625, 0.5625, + 0.667969, 0.667969, 0.664062, 0.667969, 0.667969, 0.648438, 0.667969, 0.667969, 0.65625, 0.5625, + 0.570312, 0.578125, 0.585938, 0.570312, 0.570312, 0.570312, 0.570312, 0.5625, 0.585938, 0.5625, + 0.578125, 0.585938, 0.59375, 0.570312, 0.578125, 0.578125, 0.578125, 0.5625, 0.59375, 0.5625, + 0.585938, 0.59375, 0.601562, 0.585938, 0.585938, 0.585938, 0.585938, 0.5625, 0.609375, 0.570312, + 0.601562, 0.609375, 0.617188, 0.59375, 0.59375, 0.601562, 0.59375, 0.570312, 0.625, 0.570312, + 0.617188, 0.625, 0.632812, 0.601562, 0.609375, 0.617188, 0.609375, 0.570312, 0.640625, 0.585938, + 0.632812, 0.640625, 0.648438, 0.617188, 0.625, 0.632812, 0.625, 0.585938, 0.648438, 0.59375, + 0.648438, 0.65625, 0.664062, 0.632812, 0.640625, 0.648438, 0.640625, 0.59375, 0.664062, 0.601562, + 0.65625, 0.664062, 0.667969, 0.648438, 0.65625, 0.65625, 0.648438, 0.601562, 0.667969, 0.617188, 0.664062, 0.667969, 0.667969, 0.664062, 0.664062, 0.664062, 0.664062, 0.617188, 0.667969, 0.632812, 0.667969, 0.667969, 0.667969, 0.667969, 0.667969, 0.667969, 0.667969, 0.632812, 0.667969, 0.648438, 0.578125, 0.578125, 0.578125, 0.585938, 0.578125, 0.570312, 0.554688, 0.578125, 0.570312, 0.585938, - 0.585938, 0.585938, 0.585938, 0.59375, 0.585938, 0.570312, 0.5625, 0.585938, 0.578125, 0.59375, - 0.601562, 0.601562, 0.59375, 0.609375, 0.601562, 0.578125, 0.5625, 0.59375, 0.585938, 0.609375, - 0.617188, 0.617188, 0.609375, 0.625, 0.617188, 0.585938, 0.5625, 0.609375, 0.601562, 0.625, - 0.632812, 0.632812, 0.625, 0.640625, 0.632812, 0.59375, 0.570312, 0.625, 0.617188, 0.640625, - 0.648438, 0.648438, 0.640625, 0.65625, 0.648438, 0.609375, 0.570312, 0.640625, 0.632812, 0.65625, - 0.65625, 0.65625, 0.65625, 0.664062, 0.65625, 0.625, 0.578125, 0.65625, 0.648438, 0.664062, - 0.664062, 0.664062, 0.664062, 0.667969, 0.664062, 0.640625, 0.585938, 0.664062, 0.65625, 0.667969, - 0.667969, 0.667969, 0.667969, 0.667969, 0.667969, 0.65625, 0.601562, 0.667969, 0.664062, 0.667969, + 0.585938, 0.585938, 0.585938, 0.59375, 0.585938, 0.570312, 0.5625, 0.585938, 0.578125, 0.59375, + 0.601562, 0.601562, 0.59375, 0.609375, 0.601562, 0.578125, 0.5625, 0.59375, 0.585938, 0.609375, + 0.617188, 0.617188, 0.609375, 0.625, 0.617188, 0.585938, 0.5625, 0.609375, 0.601562, 0.625, + 0.632812, 0.632812, 0.625, 0.640625, 0.632812, 0.59375, 0.570312, 0.625, 0.617188, 0.640625, + 0.648438, 0.648438, 0.640625, 0.65625, 0.648438, 0.609375, 0.570312, 0.640625, 0.632812, 0.65625, + 0.65625, 0.65625, 0.65625, 0.664062, 0.65625, 0.625, 0.578125, 0.65625, 0.648438, 0.664062, + 0.664062, 0.664062, 0.664062, 0.667969, 0.664062, 0.640625, 0.585938, 0.664062, 0.65625, 0.667969, + 0.667969, 0.667969, 0.667969, 0.667969, 0.667969, 0.65625, 0.601562, 0.667969, 0.664062, 0.667969, 0.667969, 0.667969, 0.667969, 0.667969, 0.667969, 0.664062, 0.617188, 0.667969, 0.667969, 0.667969}, - std::vector{ - 0.554688, 0.570312, 0.585938, 0.578125, 0.585938, 0.554688, 0.5625, 0.570312, 0.585938, 0.5625, - 0.5625, 0.554688, 0.570312, 0.5625, 0.570312, 0.570312, 0.578125, 0.570312, 0.585938, 0.570312, - 0.578125, 0.570312, 0.570312, 0.578125, 0.570312, 0.5625, 0.570312, 0.578125, 0.5625, 0.554688, - 0.570312, 0.578125, 0.585938, 0.570312, 0.570312, 0.570312, 0.570312, 0.5625, 0.585938, 0.5625, - 0.578125, 0.578125, 0.578125, 0.585938, 0.578125, 0.570312, 0.554688, 0.578125, 0.570312, 0.585938}, - std::vector{ - 1.20312, 1.27344, 1.375, 1.32031, 1.35156, 1.20312, 1.22656, 1.25781, 1.375, 1.23438, - 1.25, 1.21875, 1.26562, 1.23438, 1.26562, 1.26562, 1.32031, 1.26562, 1.35156, 1.28906, - 1.34375, 1.27344, 1.25781, 1.32031, 1.28906, 1.24219, 1.28125, 1.34375, 1.24219, 1.21875, - 1.28906, 1.32031, 1.35156, 1.27344, 1.28125, 1.29688, 1.28125, 1.22656, 1.35156, 1.23438, - 1.32812, 1.32812, 1.32031, 1.35938, 1.32812, 1.25781, 1.21875, 1.32031, 1.28906, 1.375}), + std::vector{0.554688, 0.570312, 0.585938, 0.578125, 0.585938, 0.554688, 0.5625, 0.570312, 0.585938, + 0.5625, 0.5625, 0.554688, 0.570312, 0.5625, 0.570312, 0.570312, 0.578125, 0.570312, + 0.585938, 0.570312, 0.578125, 0.570312, 0.570312, 0.578125, 0.570312, 0.5625, 0.570312, + 0.578125, 0.5625, 0.554688, 0.570312, 0.578125, 0.585938, 0.570312, 0.570312, 0.570312, + 0.570312, 0.5625, 0.585938, 0.5625, 0.578125, 0.578125, 0.578125, 0.585938, 0.578125, + 0.570312, 0.554688, 0.578125, 0.570312, 0.585938}, + std::vector{1.20312, 1.27344, 1.375, 1.32031, 1.35156, 1.20312, 1.22656, 1.25781, 1.375, 1.23438, + 1.25, 1.21875, 1.26562, 1.23438, 1.26562, 1.26562, 1.32031, 1.26562, 1.35156, 1.28906, + 1.34375, 1.27344, 1.25781, 1.32031, 1.28906, 1.24219, 1.28125, 1.34375, 1.24219, 1.21875, + 1.28906, 1.32031, 1.35156, 1.27344, 1.28125, 1.29688, 1.28125, 1.22656, 1.35156, 1.23438, + 1.32812, 1.32812, 1.32031, 1.35938, 1.32812, 1.25781, 1.21875, 1.32031, 1.28906, 1.375}), LSTMSequenceParams( - 5, 10, 10, 5, - 0.7f, op::RecurrentSequenceDirection::BIDIRECTIONAL, + 5, + 10, + 10, + 5, + 0.7f, + op::RecurrentSequenceDirection::BIDIRECTIONAL, ET, std::vector{ - 1, 9.375, 9, 3.84375, 2.17188, 2.65625, 1.35938, 2.84375, 8.4375, 6.125, - 5.78125, 6.375, 9.625, 9.625, 5.15625, 6.875, 9.3125, 7.75, 4.375, 6.875, - 2.39062, 7.71875, 9, 9.625, 1.23438, 1.07812, 3.625, 1.95312, 4.5625, 3.6875, - 8.25, 6.90625, 6.625, 8.25, 9.125, 8.875, 6, 9.625, 8.5, 7.5, - 1.45312, 6.78125, 8.25, 7.4375, 9.375, 5.1875, 4.25, 3.9375, 7.1875, 4.9375, - 2.15625, 7.5625, 8.5, 9.9375, 3.85938, 7.0625, 7.625, 8.125, 6.375, 2.53125, - 4.25, 1.23438, 8.125, 8.1875, 7.28125, 9.125, 8.375, 1.21875, 9.125, 5.4375, - 8.5, 5.75, 9.1875, 6.375, 9.75, 1.46875, 6.875, 9, 8.25, 7.5625, - 1.92188, 8.375, 3.125, 5.5, 4.40625, 8.25, 7.28125, 1.85938, 5.375, 2.96875, - 4.75, 3.32812, 6.75, 5.1875, 7.8125, 5.125, 6, 7.375, 7.25, 2.59375, - 9.25, 5.78125, 1.21875, 2.5, 8.5, 7.90625, 4.4375, 9.375, 3.6875, 6.5, - 1.05469, 2.34375, 4.9375, 5.40625, 7.625, 4.375, 4.375, 8.625, 5.4375, 9.1875, - 1.125, 4.4375, 3.25, 3.84375, 4.125, 6.125, 8.125, 2.6875, 9.4375, 2.125, - 1.90625, 7.1875, 7.625, 8.1875, 9.75, 6.15625, 7.34375, 9.75, 9.5625, 6.6875, - 9.375, 9, 4.6875, 5.4375, 4.03125, 4.15625, 7.9375, 7.4375, 4, 5.53125, - 1.74219, 3.03125, 9.0625, 3.20312, 8.0625, 8.125, 7.4375, 5.4375, 5, 9.25, - 7.75, 9.5, 6.90625, 5.8125, 4.25, 3.26562, 4.375, 7.5, 6.84375, 4.3125, - 1.5, 5.5, 1.70312, 3.03125, 1.82812, 4.1875, 8.25, 6.84375, 1.58594, 3.8125, - 3.01562, 7.90625, 2.375, 8, 7.125, 8.625, 2.125, 9.5, 3.3125, 1.96875, - 4.9375, 9.1875, 1.98438, 4, 3.82812, 8.375, 4.15625, 9.0625, 7.84375, 1.38281, - 1.89062, 2.75, 9.375, 3.65625, 3.9375, 6.625, 4.8125, 1.77344, 3.4375, 2.28125, - 8.0625, 5.625, 5.0625, 7.1875, 1.75, 8.6875, 1.63281, 6.8125, 3.96875, 6.25, - 2.71875, 7.375, 8.5, 3.26562, 1.55469, 9.125, 6, 4.96875, 6.125, 1.1875, - 5.15625, 9.625, 9.5, 6.875, 4.09375, 5.625, 8.9375, 7.125, 4.875, 5.375, - 9.9375, 9.3125, 8.1875, 5.625, 9.5, 1.64844, 4.40625, 6.09375, 4.625, 10}, - std::vector{ - -1, 9.1875, 5.5625, 6.625, 2.65625, 8.125, 8.25, 4.875, 9.4375, 5.875, - 1.26562, 4.71875, 8.0625, 1.76562, 2.46875, 8, 4.875, 5.375, 6.15625, 1.45312, - 2.95312, 5.84375, 8.5, 1.375, 3.6875, 8.25, 4.25, 9.9375, 8.8125, 6.75, - 1.10938, 9.5, 7.0625, 7.625, 5.3125, 8.375, 9.75, 2.03125, 2.90625, 7.625, - 2.90625, 8.375, 9.5, 1.66406, 3.9375, 2.875, 9.875, 8.25, 4.9375, 9.25, - 9.6875, 2.34375, 3.3125, 9.625, 7.8125, 4.34375, 2.71875, 7.4375, 3.53125, 1.9375, - 7.9375, 8.875, 1.07031, 6.25, 4.1875, 7.125, 3.09375, 9, 4.4375, 2.60938, - 1.98438, 2.76562, 4.65625, 5.125, 4.625, 8.375, 7.9375, 6.6875, 8.5625, 6.8125, - 4.53125, 5.09375, 5.1875, 6.0625, 1.9375, 7, 2.71875, 6.8125, 7.0625, 1.42188, - 5.25, 3.34375, 8.1875, 1.07812, 3.21875, 8.6875, 7.6875, 1.27344, 7.0625, 10}, - std::vector{ - 1, 9.6875, 3.3125, 3.09375, 6, 9.5, 7.375, 2.5625, 5.3125, 7.625, - 9.875, 1.01562, 5.9375, 4, 4.25, 2.4375, 3.25, 6.5625, 6.53125, 5.71875, - 3.26562, 7.875, 6.6875, 1.10938, 9.875, 9.875, 1.11719, 7.75, 7.84375, 6.75, - 2.21875, 6, 10, 9.125, 8, 1.92188, 8.25, 9.1875, 6.625, 5.96875, - 2.28125, 8.0625, 6.5625, 3.84375, 9.125, 7.0625, 1.45312, 1.34375, 2.46875, 4.59375, - 8.9375, 8.5, 4.875, 2.4375, 9.625, 4.15625, 2.9375, 9.875, 2.90625, 1.25, - 9, 5.53125, 7.65625, 4.03125, 3.3125, 3.46875, 3.92188, 8.125, 6.78125, 9.5, - 9.875, 5.6875, 6.4375, 5.0625, 5.75, 6.8125, 4.875, 2.65625, 5.21875, 3.9375, - 3.4375, 4.5, 1.98438, 5.71875, 3.75, 7.5625, 1.11719, 2.29688, 6.75, 6.8125, - 1.0625, 6.78125, 3.65625, 6.4375, 7.3125, 5.625, 1.35156, 8.4375, 4.125, 10}, + 1, 9.375, 9, 3.84375, 2.17188, 2.65625, 1.35938, 2.84375, 8.4375, 6.125, 5.78125, + 6.375, 9.625, 9.625, 5.15625, 6.875, 9.3125, 7.75, 4.375, 6.875, 2.39062, 7.71875, + 9, 9.625, 1.23438, 1.07812, 3.625, 1.95312, 4.5625, 3.6875, 8.25, 6.90625, 6.625, + 8.25, 9.125, 8.875, 6, 9.625, 8.5, 7.5, 1.45312, 6.78125, 8.25, 7.4375, + 9.375, 5.1875, 4.25, 3.9375, 7.1875, 4.9375, 2.15625, 7.5625, 8.5, 9.9375, 3.85938, + 7.0625, 7.625, 8.125, 6.375, 2.53125, 4.25, 1.23438, 8.125, 8.1875, 7.28125, 9.125, + 8.375, 1.21875, 9.125, 5.4375, 8.5, 5.75, 9.1875, 6.375, 9.75, 1.46875, 6.875, + 9, 8.25, 7.5625, 1.92188, 8.375, 3.125, 5.5, 4.40625, 8.25, 7.28125, 1.85938, + 5.375, 2.96875, 4.75, 3.32812, 6.75, 5.1875, 7.8125, 5.125, 6, 7.375, 7.25, + 2.59375, 9.25, 5.78125, 1.21875, 2.5, 8.5, 7.90625, 4.4375, 9.375, 3.6875, 6.5, + 1.05469, 2.34375, 4.9375, 5.40625, 7.625, 4.375, 4.375, 8.625, 5.4375, 9.1875, 1.125, + 4.4375, 3.25, 3.84375, 4.125, 6.125, 8.125, 2.6875, 9.4375, 2.125, 1.90625, 7.1875, + 7.625, 8.1875, 9.75, 6.15625, 7.34375, 9.75, 9.5625, 6.6875, 9.375, 9, 4.6875, + 5.4375, 4.03125, 4.15625, 7.9375, 7.4375, 4, 5.53125, 1.74219, 3.03125, 9.0625, 3.20312, + 8.0625, 8.125, 7.4375, 5.4375, 5, 9.25, 7.75, 9.5, 6.90625, 5.8125, 4.25, + 3.26562, 4.375, 7.5, 6.84375, 4.3125, 1.5, 5.5, 1.70312, 3.03125, 1.82812, 4.1875, + 8.25, 6.84375, 1.58594, 3.8125, 3.01562, 7.90625, 2.375, 8, 7.125, 8.625, 2.125, + 9.5, 3.3125, 1.96875, 4.9375, 9.1875, 1.98438, 4, 3.82812, 8.375, 4.15625, 9.0625, + 7.84375, 1.38281, 1.89062, 2.75, 9.375, 3.65625, 3.9375, 6.625, 4.8125, 1.77344, 3.4375, + 2.28125, 8.0625, 5.625, 5.0625, 7.1875, 1.75, 8.6875, 1.63281, 6.8125, 3.96875, 6.25, + 2.71875, 7.375, 8.5, 3.26562, 1.55469, 9.125, 6, 4.96875, 6.125, 1.1875, 5.15625, + 9.625, 9.5, 6.875, 4.09375, 5.625, 8.9375, 7.125, 4.875, 5.375, 9.9375, 9.3125, + 8.1875, 5.625, 9.5, 1.64844, 4.40625, 6.09375, 4.625, 10}, + std::vector{-1, 9.1875, 5.5625, 6.625, 2.65625, 8.125, 8.25, 4.875, 9.4375, 5.875, + 1.26562, 4.71875, 8.0625, 1.76562, 2.46875, 8, 4.875, 5.375, 6.15625, 1.45312, + 2.95312, 5.84375, 8.5, 1.375, 3.6875, 8.25, 4.25, 9.9375, 8.8125, 6.75, + 1.10938, 9.5, 7.0625, 7.625, 5.3125, 8.375, 9.75, 2.03125, 2.90625, 7.625, + 2.90625, 8.375, 9.5, 1.66406, 3.9375, 2.875, 9.875, 8.25, 4.9375, 9.25, + 9.6875, 2.34375, 3.3125, 9.625, 7.8125, 4.34375, 2.71875, 7.4375, 3.53125, 1.9375, + 7.9375, 8.875, 1.07031, 6.25, 4.1875, 7.125, 3.09375, 9, 4.4375, 2.60938, + 1.98438, 2.76562, 4.65625, 5.125, 4.625, 8.375, 7.9375, 6.6875, 8.5625, 6.8125, + 4.53125, 5.09375, 5.1875, 6.0625, 1.9375, 7, 2.71875, 6.8125, 7.0625, 1.42188, + 5.25, 3.34375, 8.1875, 1.07812, 3.21875, 8.6875, 7.6875, 1.27344, 7.0625, 10}, + std::vector{1, 9.6875, 3.3125, 3.09375, 6, 9.5, 7.375, 2.5625, 5.3125, 7.625, + 9.875, 1.01562, 5.9375, 4, 4.25, 2.4375, 3.25, 6.5625, 6.53125, 5.71875, + 3.26562, 7.875, 6.6875, 1.10938, 9.875, 9.875, 1.11719, 7.75, 7.84375, 6.75, + 2.21875, 6, 10, 9.125, 8, 1.92188, 8.25, 9.1875, 6.625, 5.96875, + 2.28125, 8.0625, 6.5625, 3.84375, 9.125, 7.0625, 1.45312, 1.34375, 2.46875, 4.59375, + 8.9375, 8.5, 4.875, 2.4375, 9.625, 4.15625, 2.9375, 9.875, 2.90625, 1.25, + 9, 5.53125, 7.65625, 4.03125, 3.3125, 3.46875, 3.92188, 8.125, 6.78125, 9.5, + 9.875, 5.6875, 6.4375, 5.0625, 5.75, 6.8125, 4.875, 2.65625, 5.21875, 3.9375, + 3.4375, 4.5, 1.98438, 5.71875, 3.75, 7.5625, 1.11719, 2.29688, 6.75, 6.8125, + 1.0625, 6.78125, 3.65625, 6.4375, 7.3125, 5.625, 1.35156, 8.4375, 4.125, 10}, std::vector{5, 5, 5, 5, 5}, std::vector{ - 1, 6.9375, 6.75, 6.1875, 2.4375, 3.67188, 6.9375, 3.57812, 4.25, 1.53906, - 4.8125, 9, 6.1875, 7.3125, 9.5, 5.53125, 9.6875, 4.84375, 4.65625, 7.84375, - 3.03125, 6.1875, 8.625, 9.875, 9.5, 9.0625, 8.125, 9.875, 4.875, 2.79688, - 9.5, 4.4375, 1.55469, 2.78125, 8.75, 8.5, 2.34375, 2.90625, 6.25, 2.71875, - 5.25, 6.875, 8, 7.375, 8.9375, 1.875, 3.0625, 5.75, 7.375, 7.75, - 1.125, 6.75, 6.75, 3, 6.65625, 5.125, 3.84375, 6.625, 9.125, 3.92188, - 7, 4.3125, 9.625, 5.53125, 7.6875, 1.85156, 7.03125, 7.375, 3.5, 5.9375, - 9.125, 2.0625, 6.5625, 7.375, 3.4375, 3.17188, 1.25, 9, 2.75, 3.40625, - 5.9375, 5.53125, 3.3125, 6.625, 8.25, 6.84375, 2.82812, 1.27344, 8.625, 5.1875, - 1.79688, 1.97656, 2.125, 9.875, 2.73438, 2.40625, 6.625, 2.76562, 3.76562, 5.59375, - 7.1875, 6.40625, 8.5625, 6.21875, 6.46875, 8.0625, 7.6875, 2.1875, 9.0625, 6.3125, - 9.0625, 2.90625, 2.17188, 7.4375, 3.125, 1.40625, 8.25, 7.0625, 8.375, 4.6875, - 5.125, 1.875, 8.375, 3.4375, 9.6875, 9.3125, 7.5, 8.3125, 4.5, 7.5625, - 1.92188, 1.46094, 8.75, 3.34375, 7.9375, 6, 8.5, 1.23438, 2.75, 7.25, - 7.4375, 4.09375, 8.625, 6.34375, 5.5, 6.3125, 1.23438, 7.875, 8.25, 7.25, - 7.65625, 8.25, 9.25, 9.625, 4.3125, 9.125, 3.64062, 6.4375, 5.9375, 9.125, - 6.1875, 6.625, 3, 1.65625, 5.75, 6.1875, 4.71875, 8.125, 6.25, 2.5, - 3.40625, 3.20312, 9.1875, 9.8125, 8.125, 4.125, 1.08594, 4.78125, 9.5625, 5.0625, - 5.625, 3.5, 8.25, 1.73438, 3.5625, 8.0625, 2.23438, 3.0625, 3.34375, 3.40625, - 3.625, 9.75, 1.14062, 4.84375, 9.125, 5.5, 8, 9.5, 5.125, 7.25, - 9.4375, 2.0625, 5.90625, 9.75, 6.1875, 6, 7.3125, 7.3125, 7.34375, 7.5625, - 6.1875, 9.125, 7.28125, 7.75, 4.59375, 7.5, 7.71875, 9.75, 9.5, 9.9375, - 5.90625, 1.20312, 1.75, 7.75, 8.8125, 3.5625, 8.5, 9.25, 8.375, 7.84375, - 4.9375, 7.4375, 6.75, 1.46875, 3.53125, 7.15625, 6.0625, 3.8125, 5.34375, 1.60938, - 9.6875, 8.4375, 4.65625, 5.46875, 3.65625, 5.125, 9.125, 1.23438, 6.875, 1.79688, - 4.1875, 2.26562, 2.78125, 9.25, 3.28125, 6.5625, 7.3125, 8.1875, 8.9375, 4, - 8.625, 5.3125, 9.875, 4.375, 4.09375, 1.125, 2.84375, 8.375, 7.90625, 4.75, - 4.625, 4.75, 3.17188, 7.59375, 4.5, 2.46875, 4.03125, 3.26562, 2.5, 7.28125, - 6.3125, 7.6875, 1.00781, 1.3125, 7.625, 4.375, 2.0625, 4.1875, 7.625, 4.40625, - 3.6875, 8.75, 4.09375, 2.84375, 5.21875, 3.65625, 9.5625, 1.71875, 5.9375, 1.79688, - 5.8125, 5.625, 1.46875, 1.32812, 1.95312, 4.3125, 1.41406, 3.125, 9.1875, 6.3125, - 5.3125, 4.1875, 1.17969, 1.32031, 9.5, 9.875, 6.78125, 2.32812, 7.1875, 4.3125, - 7.90625, 4.6875, 7.875, 3.59375, 4.6875, 1.3125, 1.71094, 3.98438, 8.75, 8.625, - 2.21875, 9.5, 7.1875, 3.92188, 5.6875, 5.75, 8.75, 6.625, 1.34375, 1.99219, - 8.3125, 1.73438, 5.5625, 7.84375, 1.15625, 2.125, 4.5, 5.75, 7, 3.5, - 7.375, 4.1875, 5.3125, 7.0625, 3.8125, 1.85156, 9, 6.75, 4.3125, 9.9375, - 8.125, 8.75, 1.09375, 9.875, 6.46875, 2.32812, 3.84375, 8.75, 6.6875, 3.17188, - 4.75, 5.25, 5.875, 4.625, 5.59375, 7.25, 8.625, 2.84375, 7, 4.0625, - 6.5, 3.15625, 6.5, 4.65625, 7.8125, 2.6875, 5.6875, 4, 5.9375, 5.53125, - 6.96875, 5.78125, 9.125, 6.53125, 8.125, 2.90625, 5.625, 5.125, 7.4375, 3.78125, - 5.5, 8, 9.4375, 8.75, 6.75, 5.59375, 8.375, 2.4375, 1.27344, 4.90625, - 8.875, 9.5, 5.21875, 6.9375, 9, 3.0625, 3.25, 2.39062, 1.92188, 2.54688, - 3.73438, 7.28125, 4.5, 5.09375, 7.5, 2.14062, 1.10938, 2.32812, 3.875, 4.8125, - 1.95312, 1.98438, 6.34375, 4.8125, 6.84375, 5.3125, 9.1875, 8.3125, 6.5, 7.125, - 2.59375, 4.0625, 1.27344, 5.09375, 5.75, 1.48438, 6.1875, 5.1875, 9.9375, 8.3125, - 2.14062, 5.21875, 5.0625, 1.94531, 6.6875, 7.75, 8.625, 6.3125, 5.8125, 8.75, - 6.375, 8.875, 1.16406, 6.125, 1, 3.71875, 3.1875, 6.96875, 1.14062, 6.09375, - 8.75, 1.5, 5.25, 5.1875, 1.48438, 2.96875, 2.03125, 4.40625, 9.625, 4.125, - 5, 2.45312, 9.25, 5.875, 5.9375, 4.6875, 8.25, 5.3125, 1.73438, 7.4375, - 4.625, 7.6875, 3.4375, 6.53125, 2.64062, 8.75, 2.57812, 7.8125, 4.4375, 6.0625, - 4.5, 9.125, 7.96875, 2.65625, 8.125, 8.8125, 5.25, 5.65625, 4.84375, 7.96875, - 3.09375, 2.3125, 7.34375, 8.5, 6.25, 2.79688, 7.8125, 5.8125, 7.0625, 5.84375, - 6.4375, 9.1875, 5.03125, 2.01562, 1.8125, 6.5625, 9.5625, 4.96875, 5.8125, 4.75, - 6.6875, 9.625, 4.625, 7.71875, 4.6875, 6.4375, 3.59375, 2.25, 3.0625, 6.375, - 2.0625, 6.9375, 1.0625, 9.25, 7.0625, 3.90625, 9.875, 3.09375, 6.125, 9.1875, - 2.9375, 4.0625, 5.6875, 6.4375, 8.25, 8.5, 7.1875, 6.46875, 9.125, 3.71875, - 5.1875, 9.25, 9.375, 6.25, 8.5, 1.67188, 2.09375, 5.78125, 1.78125, 5.8125, - 4.84375, 8.125, 1.64062, 9, 7.8125, 4.5, 3.64062, 1.9375, 1.24219, 9.25, - 4.4375, 1.48438, 1.67188, 8.25, 7.75, 2.875, 3.28125, 3.9375, 8.75, 5.4375, - 2.875, 5.6875, 1.99219, 9.625, 1.39062, 4.46875, 9.5, 7.375, 9.875, 2.98438, - 3.0625, 9.875, 9.5625, 1.14062, 4.6875, 5.53125, 2.98438, 4.5, 9.25, 4.5625, - 7.625, 3.1875, 8.4375, 1.65625, 3, 6, 9.75, 5.3125, 4.375, 6.75, - 3.8125, 2.65625, 8.75, 1.23438, 2.40625, 2.875, 2.20312, 8.8125, 3.42188, 5.25, - 8, 8.375, 2.8125, 4.5625, 6.40625, 4.875, 4.25, 9, 2.25, 5.75, - 7, 8.5, 6.4375, 7.1875, 5.59375, 2.48438, 1.53125, 8.1875, 2.15625, 2.01562, - 9.25, 8.375, 6.1875, 8, 9.125, 3.8125, 6.6875, 8, 8.75, 7.625, - 9.75, 4.8125, 6, 2.78125, 3.5625, 8.5625, 1.07812, 9.9375, 6.8125, 7.125, - 7.3125, 4.5625, 1.50781, 1.15625, 3.79688, 2.8125, 8.6875, 6.28125, 8.1875, 7.75, - 8.875, 7.8125, 5.21875, 5.53125, 9.125, 5.125, 4.125, 1.35938, 6.25, 3.1875, - 8.375, 1, 8, 8.625, 5.25, 8.875, 3.75, 7.5, 1.32812, 1.80469, - 4.5, 2.15625, 6.8125, 2.375, 4.4375, 9.5625, 6.9375, 6.4375, 2.10938, 2.5625, - 9, 1.71875, 6.78125, 6, 2, 7, 7.09375, 4.5, 5.8125, 8.625, - 7.59375, 6.6875, 4.625, 3.35938, 9, 8.625, 1.51562, 9.5625, 6.25, 3.03125, - 3.59375, 1.85156, 5.5625, 8.3125, 7.375, 2.21875, 8.5625, 3.0625, 7.1875, 7, - 2.59375, 3.92188, 8.125, 3.09375, 7.4375, 6.375, 7.375, 8.125, 6.75, 7.78125, - 2.5, 5, 7.5625, 1.42188, 9.0625, 1.875, 4.8125, 3.09375, 5.34375, 3.34375, - 1.92188, 10, 4.3125, 5.03125, 8.75, 6.40625, 9.25, 9.125, 9, 7.4375, - 3.89062, 4.4375, 9, 6.34375, 9.25, 9.875, 1.79688, 5.0625, 9, 3.04688, - 6.6875, 2.98438, 5.40625, 8.125, 9.75, 3.125, 4.125, 3.48438, 8.4375, 8.75, - 4.375, 8.375, 6.4375, 3.5, 3.89062, 5.4375, 9.5, 4.03125, 7.5, 10}, + 1, 6.9375, 6.75, 6.1875, 2.4375, 3.67188, 6.9375, 3.57812, 4.25, 1.53906, 4.8125, + 9, 6.1875, 7.3125, 9.5, 5.53125, 9.6875, 4.84375, 4.65625, 7.84375, 3.03125, 6.1875, + 8.625, 9.875, 9.5, 9.0625, 8.125, 9.875, 4.875, 2.79688, 9.5, 4.4375, 1.55469, + 2.78125, 8.75, 8.5, 2.34375, 2.90625, 6.25, 2.71875, 5.25, 6.875, 8, 7.375, + 8.9375, 1.875, 3.0625, 5.75, 7.375, 7.75, 1.125, 6.75, 6.75, 3, 6.65625, + 5.125, 3.84375, 6.625, 9.125, 3.92188, 7, 4.3125, 9.625, 5.53125, 7.6875, 1.85156, + 7.03125, 7.375, 3.5, 5.9375, 9.125, 2.0625, 6.5625, 7.375, 3.4375, 3.17188, 1.25, + 9, 2.75, 3.40625, 5.9375, 5.53125, 3.3125, 6.625, 8.25, 6.84375, 2.82812, 1.27344, + 8.625, 5.1875, 1.79688, 1.97656, 2.125, 9.875, 2.73438, 2.40625, 6.625, 2.76562, 3.76562, + 5.59375, 7.1875, 6.40625, 8.5625, 6.21875, 6.46875, 8.0625, 7.6875, 2.1875, 9.0625, 6.3125, + 9.0625, 2.90625, 2.17188, 7.4375, 3.125, 1.40625, 8.25, 7.0625, 8.375, 4.6875, 5.125, + 1.875, 8.375, 3.4375, 9.6875, 9.3125, 7.5, 8.3125, 4.5, 7.5625, 1.92188, 1.46094, + 8.75, 3.34375, 7.9375, 6, 8.5, 1.23438, 2.75, 7.25, 7.4375, 4.09375, 8.625, + 6.34375, 5.5, 6.3125, 1.23438, 7.875, 8.25, 7.25, 7.65625, 8.25, 9.25, 9.625, + 4.3125, 9.125, 3.64062, 6.4375, 5.9375, 9.125, 6.1875, 6.625, 3, 1.65625, 5.75, + 6.1875, 4.71875, 8.125, 6.25, 2.5, 3.40625, 3.20312, 9.1875, 9.8125, 8.125, 4.125, + 1.08594, 4.78125, 9.5625, 5.0625, 5.625, 3.5, 8.25, 1.73438, 3.5625, 8.0625, 2.23438, + 3.0625, 3.34375, 3.40625, 3.625, 9.75, 1.14062, 4.84375, 9.125, 5.5, 8, 9.5, + 5.125, 7.25, 9.4375, 2.0625, 5.90625, 9.75, 6.1875, 6, 7.3125, 7.3125, 7.34375, + 7.5625, 6.1875, 9.125, 7.28125, 7.75, 4.59375, 7.5, 7.71875, 9.75, 9.5, 9.9375, + 5.90625, 1.20312, 1.75, 7.75, 8.8125, 3.5625, 8.5, 9.25, 8.375, 7.84375, 4.9375, + 7.4375, 6.75, 1.46875, 3.53125, 7.15625, 6.0625, 3.8125, 5.34375, 1.60938, 9.6875, 8.4375, + 4.65625, 5.46875, 3.65625, 5.125, 9.125, 1.23438, 6.875, 1.79688, 4.1875, 2.26562, 2.78125, + 9.25, 3.28125, 6.5625, 7.3125, 8.1875, 8.9375, 4, 8.625, 5.3125, 9.875, 4.375, + 4.09375, 1.125, 2.84375, 8.375, 7.90625, 4.75, 4.625, 4.75, 3.17188, 7.59375, 4.5, + 2.46875, 4.03125, 3.26562, 2.5, 7.28125, 6.3125, 7.6875, 1.00781, 1.3125, 7.625, 4.375, + 2.0625, 4.1875, 7.625, 4.40625, 3.6875, 8.75, 4.09375, 2.84375, 5.21875, 3.65625, 9.5625, + 1.71875, 5.9375, 1.79688, 5.8125, 5.625, 1.46875, 1.32812, 1.95312, 4.3125, 1.41406, 3.125, + 9.1875, 6.3125, 5.3125, 4.1875, 1.17969, 1.32031, 9.5, 9.875, 6.78125, 2.32812, 7.1875, + 4.3125, 7.90625, 4.6875, 7.875, 3.59375, 4.6875, 1.3125, 1.71094, 3.98438, 8.75, 8.625, + 2.21875, 9.5, 7.1875, 3.92188, 5.6875, 5.75, 8.75, 6.625, 1.34375, 1.99219, 8.3125, + 1.73438, 5.5625, 7.84375, 1.15625, 2.125, 4.5, 5.75, 7, 3.5, 7.375, 4.1875, + 5.3125, 7.0625, 3.8125, 1.85156, 9, 6.75, 4.3125, 9.9375, 8.125, 8.75, 1.09375, + 9.875, 6.46875, 2.32812, 3.84375, 8.75, 6.6875, 3.17188, 4.75, 5.25, 5.875, 4.625, + 5.59375, 7.25, 8.625, 2.84375, 7, 4.0625, 6.5, 3.15625, 6.5, 4.65625, 7.8125, + 2.6875, 5.6875, 4, 5.9375, 5.53125, 6.96875, 5.78125, 9.125, 6.53125, 8.125, 2.90625, + 5.625, 5.125, 7.4375, 3.78125, 5.5, 8, 9.4375, 8.75, 6.75, 5.59375, 8.375, + 2.4375, 1.27344, 4.90625, 8.875, 9.5, 5.21875, 6.9375, 9, 3.0625, 3.25, 2.39062, + 1.92188, 2.54688, 3.73438, 7.28125, 4.5, 5.09375, 7.5, 2.14062, 1.10938, 2.32812, 3.875, + 4.8125, 1.95312, 1.98438, 6.34375, 4.8125, 6.84375, 5.3125, 9.1875, 8.3125, 6.5, 7.125, + 2.59375, 4.0625, 1.27344, 5.09375, 5.75, 1.48438, 6.1875, 5.1875, 9.9375, 8.3125, 2.14062, + 5.21875, 5.0625, 1.94531, 6.6875, 7.75, 8.625, 6.3125, 5.8125, 8.75, 6.375, 8.875, + 1.16406, 6.125, 1, 3.71875, 3.1875, 6.96875, 1.14062, 6.09375, 8.75, 1.5, 5.25, + 5.1875, 1.48438, 2.96875, 2.03125, 4.40625, 9.625, 4.125, 5, 2.45312, 9.25, 5.875, + 5.9375, 4.6875, 8.25, 5.3125, 1.73438, 7.4375, 4.625, 7.6875, 3.4375, 6.53125, 2.64062, + 8.75, 2.57812, 7.8125, 4.4375, 6.0625, 4.5, 9.125, 7.96875, 2.65625, 8.125, 8.8125, + 5.25, 5.65625, 4.84375, 7.96875, 3.09375, 2.3125, 7.34375, 8.5, 6.25, 2.79688, 7.8125, + 5.8125, 7.0625, 5.84375, 6.4375, 9.1875, 5.03125, 2.01562, 1.8125, 6.5625, 9.5625, 4.96875, + 5.8125, 4.75, 6.6875, 9.625, 4.625, 7.71875, 4.6875, 6.4375, 3.59375, 2.25, 3.0625, + 6.375, 2.0625, 6.9375, 1.0625, 9.25, 7.0625, 3.90625, 9.875, 3.09375, 6.125, 9.1875, + 2.9375, 4.0625, 5.6875, 6.4375, 8.25, 8.5, 7.1875, 6.46875, 9.125, 3.71875, 5.1875, + 9.25, 9.375, 6.25, 8.5, 1.67188, 2.09375, 5.78125, 1.78125, 5.8125, 4.84375, 8.125, + 1.64062, 9, 7.8125, 4.5, 3.64062, 1.9375, 1.24219, 9.25, 4.4375, 1.48438, 1.67188, + 8.25, 7.75, 2.875, 3.28125, 3.9375, 8.75, 5.4375, 2.875, 5.6875, 1.99219, 9.625, + 1.39062, 4.46875, 9.5, 7.375, 9.875, 2.98438, 3.0625, 9.875, 9.5625, 1.14062, 4.6875, + 5.53125, 2.98438, 4.5, 9.25, 4.5625, 7.625, 3.1875, 8.4375, 1.65625, 3, 6, + 9.75, 5.3125, 4.375, 6.75, 3.8125, 2.65625, 8.75, 1.23438, 2.40625, 2.875, 2.20312, + 8.8125, 3.42188, 5.25, 8, 8.375, 2.8125, 4.5625, 6.40625, 4.875, 4.25, 9, + 2.25, 5.75, 7, 8.5, 6.4375, 7.1875, 5.59375, 2.48438, 1.53125, 8.1875, 2.15625, + 2.01562, 9.25, 8.375, 6.1875, 8, 9.125, 3.8125, 6.6875, 8, 8.75, 7.625, + 9.75, 4.8125, 6, 2.78125, 3.5625, 8.5625, 1.07812, 9.9375, 6.8125, 7.125, 7.3125, + 4.5625, 1.50781, 1.15625, 3.79688, 2.8125, 8.6875, 6.28125, 8.1875, 7.75, 8.875, 7.8125, + 5.21875, 5.53125, 9.125, 5.125, 4.125, 1.35938, 6.25, 3.1875, 8.375, 1, 8, + 8.625, 5.25, 8.875, 3.75, 7.5, 1.32812, 1.80469, 4.5, 2.15625, 6.8125, 2.375, + 4.4375, 9.5625, 6.9375, 6.4375, 2.10938, 2.5625, 9, 1.71875, 6.78125, 6, 2, + 7, 7.09375, 4.5, 5.8125, 8.625, 7.59375, 6.6875, 4.625, 3.35938, 9, 8.625, + 1.51562, 9.5625, 6.25, 3.03125, 3.59375, 1.85156, 5.5625, 8.3125, 7.375, 2.21875, 8.5625, + 3.0625, 7.1875, 7, 2.59375, 3.92188, 8.125, 3.09375, 7.4375, 6.375, 7.375, 8.125, + 6.75, 7.78125, 2.5, 5, 7.5625, 1.42188, 9.0625, 1.875, 4.8125, 3.09375, 5.34375, + 3.34375, 1.92188, 10, 4.3125, 5.03125, 8.75, 6.40625, 9.25, 9.125, 9, 7.4375, + 3.89062, 4.4375, 9, 6.34375, 9.25, 9.875, 1.79688, 5.0625, 9, 3.04688, 6.6875, + 2.98438, 5.40625, 8.125, 9.75, 3.125, 4.125, 3.48438, 8.4375, 8.75, 4.375, 8.375, + 6.4375, 3.5, 3.89062, 5.4375, 9.5, 4.03125, 7.5, 10}, std::vector{ - 1, 5.96875, 3, 8.75, 2.46875, 8.6875, 6.1875, 3.09375, 5, 5.3125, - 3.09375, 3.25, 7.96875, 8.625, 3.34375, 6.8125, 2.8125, 9.5, 3.84375, 1.14062, - 3.8125, 1.09375, 3.375, 7.0625, 6.875, 9.5, 5.125, 2.25, 5.34375, 6.3125, - 1.79688, 5.4375, 8, 6.0625, 7.46875, 7, 9.25, 1.74219, 7.25, 3.5625, - 4.5625, 3.01562, 2.78125, 8.125, 8.375, 2.53125, 4.9375, 6.375, 7.5, 3.78125, - 6, 2.89062, 2.75, 8.4375, 2.85938, 2, 9.4375, 1.32812, 10, 4.3125, - 3.09375, 9.75, 6, 9.125, 7.0625, 5.46875, 9, 4.625, 3.40625, 9.75, - 5.25, 6.75, 5.4375, 3.96875, 3, 6.15625, 9.0625, 5.59375, 2, 2.51562, - 4.75, 7.5625, 4.75, 5.28125, 2.17188, 1.00781, 3.625, 6.1875, 1.96875, 8.625, - 9.25, 9.1875, 2, 2.75, 4.25, 1, 5.46875, 4.5, 6.65625, 3.5, - 7.90625, 7.4375, 6.9375, 5.1875, 8.875, 2.375, 4.46875, 7.1875, 4.125, 6.9375, - 9.5, 1.92969, 6.5, 6.5625, 9.0625, 8.5, 4.75, 4.6875, 6.0625, 9.8125, - 2.34375, 4.65625, 9, 9.5, 6.71875, 5.40625, 3.28125, 6.5625, 4.1875, 1.1875, - 6.1875, 2.8125, 7.875, 8.625, 8.25, 5, 4.9375, 4.625, 5, 7.4375, - 8.5625, 5.3125, 8.4375, 6.5, 1.98438, 2.0625, 5.625, 7.625, 9.5625, 9.5, - 6.125, 8, 10, 2.625, 4.90625, 2.95312, 6.8125, 8.75, 8.9375, 6.5, - 1.65625, 7.84375, 8, 4.125, 9, 8.0625, 5.375, 6.0625, 3.6875, 7.0625, - 2.73438, 7.28125, 7.4375, 5.375, 4.84375, 2.03125, 6.375, 6.5625, 4.0625, 2.125, - 1.84375, 3.0625, 6.03125, 9.375, 4.625, 9.375, 3.57812, 2.84375, 8.0625, 6.65625, - 9.75, 5.125, 1.07812, 8.4375, 5.75, 7.25, 4.5625, 3.54688, 6.9375, 6.625, - 8.875, 6.40625, 2.70312, 6.0625, 2.5, 5.6875, 8.0625, 4.4375, 1.875, 8.1875, - 7.6875, 3.25, 8.125, 7.6875, 3.03125, 9.75, 2.84375, 9.6875, 1.34375, 6.375, - 6.34375, 8.6875, 2.28125, 6.375, 9.9375, 8.375, 1.23438, 6.3125, 8.625, 7.625, - 4.75, 9.6875, 9.125, 4.75, 6.375, 2.6875, 8.75, 2.60938, 5.75, 4.4375, - 8.25, 6.4375, 2.64062, 6.5625, 6.125, 9.625, 3.84375, 2.5, 3.09375, 7.75, - 7.25, 3.96875, 5.9375, 1.09375, 8.125, 5.625, 9.5, 9.25, 5.6875, 3.03125, - 6.1875, 2.85938, 8.0625, 4.75, 2.84375, 7.375, 2, 4.0625, 8.375, 4.1875, - 2.78125, 3.04688, 2.64062, 9.5, 6.625, 9.875, 1.70312, 6.6875, 4.8125, 7, - 1.9375, 1.32031, 7.5, 2.21875, 6.6875, 3.34375, 7.625, 1.53125, 8.875, 1.75781, - 3.35938, 4.8125, 4.40625, 5.46875, 7.5625, 3.29688, 3.21875, 6.25, 4.34375, 5, - 2.34375, 4.875, 2.78125, 7.46875, 3.20312, 5.4375, 6.875, 2, 5.375, 6.71875, - 5.5625, 3.34375, 3.78125, 9.625, 1.8125, 5.125, 2.90625, 1.80469, 3.625, 5.34375, - 1.76562, 5.6875, 9.5625, 9.4375, 10, 1.17188, 7.125, 9.5, 3, 7.1875, - 2.09375, 2.98438, 5.9375, 9.375, 1.9375, 1.89062, 5.75, 3.21875, 7.375, 2.46875, - 6.125, 4.96875, 3.75, 1.0625, 3.53125, 7.875, 4.8125, 9.125, 4.28125, 9.125, - 1.78906, 8.0625, 7.9375, 1.32812, 6.5625, 4.25, 7.375, 6.875, 6.0625, 6.53125, - 3.5625, 4.4375, 4.5, 6.875, 7.9375, 9.625, 4.3125, 1.09375, 2.73438, 7.75, - 6.3125, 9.75, 4.625, 4.71875, 3, 2.40625, 1.17188, 7.625, 5.28125, 6.6875, - 8.125, 9.625, 2.23438, 4.84375, 4.6875, 7.96875, 4.9375, 3.46875, 3, 9.5, - 7.21875, 6.25, 3.0625, 1.34375, 6.25, 1.39844, 5.5625, 5.34375, 2.96875, 9.375, - 2.85938, 7, 7.6875, 4.6875, 8.875, 4.40625, 4.25, 8.625, 5.875, 8, - 4.8125, 1.46875, 5.625, 3, 9.875, 2.03125, 3.82812, 6.375, 8.75, 4.5625, - 9.625, 8.625, 1.625, 6.1875, 1.85938, 9.125, 1.42188, 5.0625, 8.625, 4.5625, - 2.4375, 8.875, 6.84375, 7.3125, 1.63281, 3.28125, 6.25, 3.70312, 1.28125, 6.96875, - 1.67969, 5.875, 9.625, 7.3125, 5.71875, 9.9375, 4.0625, 6.5625, 1.03125, 3.84375, - 4.1875, 9.5, 4.21875, 5.25, 1.64062, 4.78125, 4.28125, 7.8125, 6.1875, 8, - 1.85938, 5.375, 1.9375, 8.125, 6, 4.90625, 1.53125, 2.53125, 6.53125, 1.67188, - 1.5625, 2.48438, 8.9375, 2.75, 4, 3.65625, 4.625, 5.5625, 8.75, 4.9375, - 3.40625, 8.1875, 6.40625, 7.0625, 6.6875, 6.0625, 9.75, 8.375, 1.36719, 9.625, - 8.625, 8.375, 5.28125, 7.90625, 4.25, 9.6875, 5.1875, 6.6875, 8.375, 3.71875, - 5.25, 9.5, 2.25, 7.1875, 3.46875, 7.53125, 5.15625, 7.84375, 2.375, 4, - 5.34375, 8.6875, 4.75, 7, 5.96875, 9, 4.125, 6.34375, 3.28125, 5, - 7.1875, 7.8125, 1.48438, 2.40625, 3.15625, 1.03125, 8.625, 5.78125, 3.5, 8.0625, - 4.71875, 9.75, 3.3125, 5.09375, 3.65625, 4.5, 4.625, 7.6875, 7.375, 9.5, - 4.625, 2.46875, 3.625, 6.125, 1.36719, 8.375, 8.375, 6.53125, 3.125, 5.75, - 9.625, 3.3125, 8.375, 2.65625, 3.375, 3.60938, 6.9375, 4.9375, 1.78906, 9.25, - 3.20312, 6.4375, 2.375, 2.40625, 6.0625, 3.75, 1.3125, 4.3125, 9.125, 9.3125, - 1.09375, 8.3125, 1.98438, 8.1875, 6.1875, 1.21094, 8.25, 6.75, 5.75, 9.25, - 4.75, 7.0625, 4.84375, 4.0625, 7.78125, 2.1875, 2.90625, 3.01562, 9.1875, 5, - 6.5, 1.75, 6.1875, 2.96875, 1.07031, 2.375, 7.625, 6.0625, 3.90625, 3.45312, - 2.57812, 3.3125, 3.96875, 7.875, 4.75, 7, 6.5625, 9.75, 4.5, 1.82812, - 4.375, 4.90625, 9.75, 7.84375, 8.125, 6.3125, 4.875, 2.71875, 2.5, 8.875, - 2.17188, 4.0625, 2.84375, 9, 2.3125, 1.85938, 5.875, 4.5625, 3.32812, 6.71875, - 5.125, 1.67188, 3.8125, 8.5, 5.375, 7.75, 6.5, 8.25, 1.49219, 7.25, - 5.625, 5, 8.6875, 5.5625, 9, 7.375, 6.9375, 6.625, 1.82812, 2.75, - 7.59375, 3.875, 4.78125, 6.5625, 3.03125, 7.15625, 9.5, 9.125, 1.59375, 8.5, - 4.3125, 5.15625, 4.65625, 6.125, 6.5, 4.25, 1.98438, 7.96875, 5.25, 4.40625, - 4.5625, 2.89062, 3, 7.375, 5.75, 8.125, 1.75, 1.5625, 3.40625, 6.125, - 3.29688, 1.39062, 6.625, 1.5, 8.875, 8.5, 5.5, 5, 1.09375, 1.79688, - 9.75, 2.375, 1.07031, 8.25, 9, 9.875, 7.6875, 1.23438, 8.375, 8.0625, - 6.75, 8.25, 8.625, 2.21875, 8.5, 9.25, 4.4375, 4.40625, 8, 3.5, - 3.8125, 7, 2.125, 9, 3.42188, 9.125, 4.1875, 3.04688, 7.65625, 5.9375, - 5.75, 9.5, 4.65625, 6.875, 5.0625, 1.89062, 3.40625, 5.78125, 4.0625, 5.125, - 9, 5.9375, 2.46875, 9.25, 6.875, 7, 8.375, 6.09375, 1.48438, 5.90625, - 8.75, 6.25, 7.3125, 8.5625, 9.9375, 9.125, 1.46875, 9.1875, 1.26562, 9, - 5.5, 6.1875, 1.58594, 7.3125, 7.875, 9.5625, 3.32812, 8, 8.25, 4.59375, - 9.75, 1.125, 8.3125, 4.6875, 3.375, 3.92188, 6.125, 4.46875, 3.625, 2.03125, - 1.625, 9.1875, 2.46875, 3.03125, 6.1875, 9.5625, 5.78125, 2.10938, 3.14062, 4.125, - 5.75, 7.03125, 2.28125, 6.9375, 7.3125, 3.125, 6.0625, 7.75, 7.1875, 8.1875, - 6.90625, 4.875, 8.875, 7.3125, 5.9375, 1.39062, 4.625, 7.75, 5.0625, 10}, + 1, 5.96875, 3, 8.75, 2.46875, 8.6875, 6.1875, 3.09375, 5, 5.3125, 3.09375, + 3.25, 7.96875, 8.625, 3.34375, 6.8125, 2.8125, 9.5, 3.84375, 1.14062, 3.8125, 1.09375, + 3.375, 7.0625, 6.875, 9.5, 5.125, 2.25, 5.34375, 6.3125, 1.79688, 5.4375, 8, + 6.0625, 7.46875, 7, 9.25, 1.74219, 7.25, 3.5625, 4.5625, 3.01562, 2.78125, 8.125, + 8.375, 2.53125, 4.9375, 6.375, 7.5, 3.78125, 6, 2.89062, 2.75, 8.4375, 2.85938, + 2, 9.4375, 1.32812, 10, 4.3125, 3.09375, 9.75, 6, 9.125, 7.0625, 5.46875, + 9, 4.625, 3.40625, 9.75, 5.25, 6.75, 5.4375, 3.96875, 3, 6.15625, 9.0625, + 5.59375, 2, 2.51562, 4.75, 7.5625, 4.75, 5.28125, 2.17188, 1.00781, 3.625, 6.1875, + 1.96875, 8.625, 9.25, 9.1875, 2, 2.75, 4.25, 1, 5.46875, 4.5, 6.65625, + 3.5, 7.90625, 7.4375, 6.9375, 5.1875, 8.875, 2.375, 4.46875, 7.1875, 4.125, 6.9375, + 9.5, 1.92969, 6.5, 6.5625, 9.0625, 8.5, 4.75, 4.6875, 6.0625, 9.8125, 2.34375, + 4.65625, 9, 9.5, 6.71875, 5.40625, 3.28125, 6.5625, 4.1875, 1.1875, 6.1875, 2.8125, + 7.875, 8.625, 8.25, 5, 4.9375, 4.625, 5, 7.4375, 8.5625, 5.3125, 8.4375, + 6.5, 1.98438, 2.0625, 5.625, 7.625, 9.5625, 9.5, 6.125, 8, 10, 2.625, + 4.90625, 2.95312, 6.8125, 8.75, 8.9375, 6.5, 1.65625, 7.84375, 8, 4.125, 9, + 8.0625, 5.375, 6.0625, 3.6875, 7.0625, 2.73438, 7.28125, 7.4375, 5.375, 4.84375, 2.03125, + 6.375, 6.5625, 4.0625, 2.125, 1.84375, 3.0625, 6.03125, 9.375, 4.625, 9.375, 3.57812, + 2.84375, 8.0625, 6.65625, 9.75, 5.125, 1.07812, 8.4375, 5.75, 7.25, 4.5625, 3.54688, + 6.9375, 6.625, 8.875, 6.40625, 2.70312, 6.0625, 2.5, 5.6875, 8.0625, 4.4375, 1.875, + 8.1875, 7.6875, 3.25, 8.125, 7.6875, 3.03125, 9.75, 2.84375, 9.6875, 1.34375, 6.375, + 6.34375, 8.6875, 2.28125, 6.375, 9.9375, 8.375, 1.23438, 6.3125, 8.625, 7.625, 4.75, + 9.6875, 9.125, 4.75, 6.375, 2.6875, 8.75, 2.60938, 5.75, 4.4375, 8.25, 6.4375, + 2.64062, 6.5625, 6.125, 9.625, 3.84375, 2.5, 3.09375, 7.75, 7.25, 3.96875, 5.9375, + 1.09375, 8.125, 5.625, 9.5, 9.25, 5.6875, 3.03125, 6.1875, 2.85938, 8.0625, 4.75, + 2.84375, 7.375, 2, 4.0625, 8.375, 4.1875, 2.78125, 3.04688, 2.64062, 9.5, 6.625, + 9.875, 1.70312, 6.6875, 4.8125, 7, 1.9375, 1.32031, 7.5, 2.21875, 6.6875, 3.34375, + 7.625, 1.53125, 8.875, 1.75781, 3.35938, 4.8125, 4.40625, 5.46875, 7.5625, 3.29688, 3.21875, + 6.25, 4.34375, 5, 2.34375, 4.875, 2.78125, 7.46875, 3.20312, 5.4375, 6.875, 2, + 5.375, 6.71875, 5.5625, 3.34375, 3.78125, 9.625, 1.8125, 5.125, 2.90625, 1.80469, 3.625, + 5.34375, 1.76562, 5.6875, 9.5625, 9.4375, 10, 1.17188, 7.125, 9.5, 3, 7.1875, + 2.09375, 2.98438, 5.9375, 9.375, 1.9375, 1.89062, 5.75, 3.21875, 7.375, 2.46875, 6.125, + 4.96875, 3.75, 1.0625, 3.53125, 7.875, 4.8125, 9.125, 4.28125, 9.125, 1.78906, 8.0625, + 7.9375, 1.32812, 6.5625, 4.25, 7.375, 6.875, 6.0625, 6.53125, 3.5625, 4.4375, 4.5, + 6.875, 7.9375, 9.625, 4.3125, 1.09375, 2.73438, 7.75, 6.3125, 9.75, 4.625, 4.71875, + 3, 2.40625, 1.17188, 7.625, 5.28125, 6.6875, 8.125, 9.625, 2.23438, 4.84375, 4.6875, + 7.96875, 4.9375, 3.46875, 3, 9.5, 7.21875, 6.25, 3.0625, 1.34375, 6.25, 1.39844, + 5.5625, 5.34375, 2.96875, 9.375, 2.85938, 7, 7.6875, 4.6875, 8.875, 4.40625, 4.25, + 8.625, 5.875, 8, 4.8125, 1.46875, 5.625, 3, 9.875, 2.03125, 3.82812, 6.375, + 8.75, 4.5625, 9.625, 8.625, 1.625, 6.1875, 1.85938, 9.125, 1.42188, 5.0625, 8.625, + 4.5625, 2.4375, 8.875, 6.84375, 7.3125, 1.63281, 3.28125, 6.25, 3.70312, 1.28125, 6.96875, + 1.67969, 5.875, 9.625, 7.3125, 5.71875, 9.9375, 4.0625, 6.5625, 1.03125, 3.84375, 4.1875, + 9.5, 4.21875, 5.25, 1.64062, 4.78125, 4.28125, 7.8125, 6.1875, 8, 1.85938, 5.375, + 1.9375, 8.125, 6, 4.90625, 1.53125, 2.53125, 6.53125, 1.67188, 1.5625, 2.48438, 8.9375, + 2.75, 4, 3.65625, 4.625, 5.5625, 8.75, 4.9375, 3.40625, 8.1875, 6.40625, 7.0625, + 6.6875, 6.0625, 9.75, 8.375, 1.36719, 9.625, 8.625, 8.375, 5.28125, 7.90625, 4.25, + 9.6875, 5.1875, 6.6875, 8.375, 3.71875, 5.25, 9.5, 2.25, 7.1875, 3.46875, 7.53125, + 5.15625, 7.84375, 2.375, 4, 5.34375, 8.6875, 4.75, 7, 5.96875, 9, 4.125, + 6.34375, 3.28125, 5, 7.1875, 7.8125, 1.48438, 2.40625, 3.15625, 1.03125, 8.625, 5.78125, + 3.5, 8.0625, 4.71875, 9.75, 3.3125, 5.09375, 3.65625, 4.5, 4.625, 7.6875, 7.375, + 9.5, 4.625, 2.46875, 3.625, 6.125, 1.36719, 8.375, 8.375, 6.53125, 3.125, 5.75, + 9.625, 3.3125, 8.375, 2.65625, 3.375, 3.60938, 6.9375, 4.9375, 1.78906, 9.25, 3.20312, + 6.4375, 2.375, 2.40625, 6.0625, 3.75, 1.3125, 4.3125, 9.125, 9.3125, 1.09375, 8.3125, + 1.98438, 8.1875, 6.1875, 1.21094, 8.25, 6.75, 5.75, 9.25, 4.75, 7.0625, 4.84375, + 4.0625, 7.78125, 2.1875, 2.90625, 3.01562, 9.1875, 5, 6.5, 1.75, 6.1875, 2.96875, + 1.07031, 2.375, 7.625, 6.0625, 3.90625, 3.45312, 2.57812, 3.3125, 3.96875, 7.875, 4.75, + 7, 6.5625, 9.75, 4.5, 1.82812, 4.375, 4.90625, 9.75, 7.84375, 8.125, 6.3125, + 4.875, 2.71875, 2.5, 8.875, 2.17188, 4.0625, 2.84375, 9, 2.3125, 1.85938, 5.875, + 4.5625, 3.32812, 6.71875, 5.125, 1.67188, 3.8125, 8.5, 5.375, 7.75, 6.5, 8.25, + 1.49219, 7.25, 5.625, 5, 8.6875, 5.5625, 9, 7.375, 6.9375, 6.625, 1.82812, + 2.75, 7.59375, 3.875, 4.78125, 6.5625, 3.03125, 7.15625, 9.5, 9.125, 1.59375, 8.5, + 4.3125, 5.15625, 4.65625, 6.125, 6.5, 4.25, 1.98438, 7.96875, 5.25, 4.40625, 4.5625, + 2.89062, 3, 7.375, 5.75, 8.125, 1.75, 1.5625, 3.40625, 6.125, 3.29688, 1.39062, + 6.625, 1.5, 8.875, 8.5, 5.5, 5, 1.09375, 1.79688, 9.75, 2.375, 1.07031, + 8.25, 9, 9.875, 7.6875, 1.23438, 8.375, 8.0625, 6.75, 8.25, 8.625, 2.21875, + 8.5, 9.25, 4.4375, 4.40625, 8, 3.5, 3.8125, 7, 2.125, 9, 3.42188, + 9.125, 4.1875, 3.04688, 7.65625, 5.9375, 5.75, 9.5, 4.65625, 6.875, 5.0625, 1.89062, + 3.40625, 5.78125, 4.0625, 5.125, 9, 5.9375, 2.46875, 9.25, 6.875, 7, 8.375, + 6.09375, 1.48438, 5.90625, 8.75, 6.25, 7.3125, 8.5625, 9.9375, 9.125, 1.46875, 9.1875, + 1.26562, 9, 5.5, 6.1875, 1.58594, 7.3125, 7.875, 9.5625, 3.32812, 8, 8.25, + 4.59375, 9.75, 1.125, 8.3125, 4.6875, 3.375, 3.92188, 6.125, 4.46875, 3.625, 2.03125, + 1.625, 9.1875, 2.46875, 3.03125, 6.1875, 9.5625, 5.78125, 2.10938, 3.14062, 4.125, 5.75, + 7.03125, 2.28125, 6.9375, 7.3125, 3.125, 6.0625, 7.75, 7.1875, 8.1875, 6.90625, 4.875, + 8.875, 7.3125, 5.9375, 1.39062, 4.625, 7.75, 5.0625, 10}, + std::vector{1, 7.25, 1.08594, 1.90625, 7.3125, 8.1875, 1.84375, 9.8125, 3.65625, 7.6875, + 7.03125, 6.75, 9.875, 9, 2.28125, 4.625, 8.375, 8.125, 4.25, 9.9375, + 2.125, 1.92969, 1.35938, 7.625, 5.6875, 2.65625, 6.9375, 8.0625, 2.53125, 7.375, + 2.8125, 9.1875, 7.3125, 8.75, 7.15625, 7.15625, 3.8125, 6.75, 3.53125, 8.75, + 9.875, 5.75, 7.1875, 5.65625, 7.375, 9.25, 6.03125, 9.75, 8.625, 1.07031, + 6.8125, 2.90625, 6.1875, 4.6875, 7.25, 1.14062, 9.0625, 2.78125, 5.625, 6.875, + 2.0625, 3.3125, 9.875, 8.9375, 5.6875, 5.875, 3.65625, 2.78125, 8.625, 4.1875, + 7.125, 7.09375, 5.125, 2.625, 3.10938, 9.4375, 5.5625, 5.8125, 3.5625, 10}, std::vector{ - 1, 7.25, 1.08594, 1.90625, 7.3125, 8.1875, 1.84375, 9.8125, 3.65625, 7.6875, - 7.03125, 6.75, 9.875, 9, 2.28125, 4.625, 8.375, 8.125, 4.25, 9.9375, - 2.125, 1.92969, 1.35938, 7.625, 5.6875, 2.65625, 6.9375, 8.0625, 2.53125, 7.375, - 2.8125, 9.1875, 7.3125, 8.75, 7.15625, 7.15625, 3.8125, 6.75, 3.53125, 8.75, - 9.875, 5.75, 7.1875, 5.65625, 7.375, 9.25, 6.03125, 9.75, 8.625, 1.07031, - 6.8125, 2.90625, 6.1875, 4.6875, 7.25, 1.14062, 9.0625, 2.78125, 5.625, 6.875, - 2.0625, 3.3125, 9.875, 8.9375, 5.6875, 5.875, 3.65625, 2.78125, 8.625, 4.1875, - 7.125, 7.09375, 5.125, 2.625, 3.10938, 9.4375, 5.5625, 5.8125, 3.5625, 10}, - std::vector{ - 0.523438, 0.667969, 0.65625, 0.65625, 0.667969, 0.667969, 0.667969, 0.648438, 0.667969, 0.667969, + 0.523438, 0.667969, 0.65625, 0.65625, 0.667969, 0.667969, 0.667969, 0.648438, 0.667969, 0.667969, 0.539062, 0.667969, 0.648438, 0.648438, 0.664062, 0.667969, 0.667969, 0.632812, 0.664062, 0.667969, - 0.546875, 0.667969, 0.632812, 0.625, 0.65625, 0.667969, 0.664062, 0.617188, 0.65625, 0.664062, - 0.546875, 0.664062, 0.617188, 0.609375, 0.648438, 0.664062, 0.65625, 0.601562, 0.640625, 0.65625, - 0.554688, 0.65625, 0.601562, 0.59375, 0.632812, 0.648438, 0.640625, 0.585938, 0.625, 0.640625, - 0.65625, 0.554688, 0.632812, 0.609375, 0.617188, 0.585938, 0.601562, 0.632812, 0.632812, 0.632812, - 0.664062, 0.546875, 0.648438, 0.625, 0.632812, 0.59375, 0.617188, 0.648438, 0.648438, 0.648438, - 0.667969, 0.546875, 0.65625, 0.640625, 0.648438, 0.609375, 0.632812, 0.664062, 0.664062, 0.65625, - 0.667969, 0.539062, 0.664062, 0.65625, 0.65625, 0.625, 0.648438, 0.667969, 0.667969, 0.664062, - 0.667969, 0.523438, 0.667969, 0.664062, 0.664062, 0.640625, 0.65625, 0.667969, 0.667969, 0.667969, - 0.65625, 0.667969, 0.667969, 0.539062, 0.667969, 0.667969, 0.546875, 0.667969, 0.667969, 0.667969, + 0.546875, 0.667969, 0.632812, 0.625, 0.65625, 0.667969, 0.664062, 0.617188, 0.65625, 0.664062, + 0.546875, 0.664062, 0.617188, 0.609375, 0.648438, 0.664062, 0.65625, 0.601562, 0.640625, 0.65625, + 0.554688, 0.65625, 0.601562, 0.59375, 0.632812, 0.648438, 0.640625, 0.585938, 0.625, 0.640625, + 0.65625, 0.554688, 0.632812, 0.609375, 0.617188, 0.585938, 0.601562, 0.632812, 0.632812, 0.632812, + 0.664062, 0.546875, 0.648438, 0.625, 0.632812, 0.59375, 0.617188, 0.648438, 0.648438, 0.648438, + 0.667969, 0.546875, 0.65625, 0.640625, 0.648438, 0.609375, 0.632812, 0.664062, 0.664062, 0.65625, + 0.667969, 0.539062, 0.664062, 0.65625, 0.65625, 0.625, 0.648438, 0.667969, 0.667969, 0.664062, + 0.667969, 0.523438, 0.667969, 0.664062, 0.664062, 0.640625, 0.65625, 0.667969, 0.667969, 0.667969, + 0.65625, 0.667969, 0.667969, 0.539062, 0.667969, 0.667969, 0.546875, 0.667969, 0.667969, 0.667969, 0.648438, 0.667969, 0.667969, 0.546875, 0.667969, 0.667969, 0.546875, 0.667969, 0.667969, 0.667969, 0.632812, 0.664062, 0.664062, 0.554688, 0.667969, 0.667969, 0.554688, 0.664062, 0.664062, 0.664062, - 0.617188, 0.65625, 0.648438, 0.554688, 0.664062, 0.664062, 0.554688, 0.65625, 0.65625, 0.648438, - 0.601562, 0.648438, 0.640625, 0.554688, 0.65625, 0.65625, 0.554688, 0.648438, 0.648438, 0.640625, - 0.585938, 0.632812, 0.65625, 0.648438, 0.648438, 0.570312, 0.648438, 0.648438, 0.640625, 0.632812, - 0.59375, 0.648438, 0.664062, 0.664062, 0.65625, 0.585938, 0.65625, 0.664062, 0.648438, 0.648438, - 0.601562, 0.65625, 0.667969, 0.667969, 0.664062, 0.59375, 0.664062, 0.667969, 0.664062, 0.65625, + 0.617188, 0.65625, 0.648438, 0.554688, 0.664062, 0.664062, 0.554688, 0.65625, 0.65625, 0.648438, + 0.601562, 0.648438, 0.640625, 0.554688, 0.65625, 0.65625, 0.554688, 0.648438, 0.648438, 0.640625, + 0.585938, 0.632812, 0.65625, 0.648438, 0.648438, 0.570312, 0.648438, 0.648438, 0.640625, 0.632812, + 0.59375, 0.648438, 0.664062, 0.664062, 0.65625, 0.585938, 0.65625, 0.664062, 0.648438, 0.648438, + 0.601562, 0.65625, 0.667969, 0.667969, 0.664062, 0.59375, 0.664062, 0.667969, 0.664062, 0.65625, 0.617188, 0.664062, 0.667969, 0.667969, 0.667969, 0.609375, 0.667969, 0.667969, 0.667969, 0.664062, - 0.632812, 0.667969, 0.667969, 0.667969, 0.667969, 0.625, 0.667969, 0.667969, 0.667969, 0.667969, + 0.632812, 0.667969, 0.667969, 0.667969, 0.667969, 0.625, 0.667969, 0.667969, 0.667969, 0.667969, 0.640625, 0.667969, 0.667969, 0.664062, 0.667969, 0.667969, 0.585938, 0.570312, 0.648438, 0.667969, - 0.625, 0.667969, 0.667969, 0.65625, 0.667969, 0.667969, 0.578125, 0.570312, 0.625, 0.664062, - 0.609375, 0.664062, 0.664062, 0.640625, 0.667969, 0.664062, 0.570312, 0.5625, 0.609375, 0.648438, - 0.59375, 0.65625, 0.648438, 0.625, 0.664062, 0.65625, 0.570312, 0.5625, 0.59375, 0.632812, - 0.585938, 0.648438, 0.632812, 0.609375, 0.648438, 0.640625, 0.5625, 0.5625, 0.585938, 0.617188, - 0.648438, 0.648438, 0.625, 0.585938, 0.65625, 0.617188, 0.59375, 0.65625, 0.59375, 0.554688, - 0.664062, 0.65625, 0.640625, 0.59375, 0.664062, 0.632812, 0.609375, 0.664062, 0.609375, 0.554688, - 0.667969, 0.664062, 0.648438, 0.609375, 0.667969, 0.648438, 0.625, 0.667969, 0.625, 0.554688, - 0.667969, 0.667969, 0.664062, 0.625, 0.667969, 0.65625, 0.640625, 0.667969, 0.640625, 0.5625, - 0.667969, 0.667969, 0.667969, 0.640625, 0.667969, 0.664062, 0.65625, 0.667969, 0.65625, 0.5625, - 0.667969, 0.667969, 0.667969, 0.664062, 0.65625, 0.664062, 0.664062, 0.667969, 0.667969, 0.667969, - 0.667969, 0.664062, 0.667969, 0.65625, 0.648438, 0.648438, 0.65625, 0.667969, 0.667969, 0.667969, - 0.667969, 0.65625, 0.664062, 0.648438, 0.632812, 0.632812, 0.640625, 0.664062, 0.664062, 0.667969, - 0.664062, 0.648438, 0.65625, 0.625, 0.617188, 0.617188, 0.625, 0.65625, 0.648438, 0.664062, + 0.625, 0.667969, 0.667969, 0.65625, 0.667969, 0.667969, 0.578125, 0.570312, 0.625, 0.664062, + 0.609375, 0.664062, 0.664062, 0.640625, 0.667969, 0.664062, 0.570312, 0.5625, 0.609375, 0.648438, + 0.59375, 0.65625, 0.648438, 0.625, 0.664062, 0.65625, 0.570312, 0.5625, 0.59375, 0.632812, + 0.585938, 0.648438, 0.632812, 0.609375, 0.648438, 0.640625, 0.5625, 0.5625, 0.585938, 0.617188, + 0.648438, 0.648438, 0.625, 0.585938, 0.65625, 0.617188, 0.59375, 0.65625, 0.59375, 0.554688, + 0.664062, 0.65625, 0.640625, 0.59375, 0.664062, 0.632812, 0.609375, 0.664062, 0.609375, 0.554688, + 0.667969, 0.664062, 0.648438, 0.609375, 0.667969, 0.648438, 0.625, 0.667969, 0.625, 0.554688, + 0.667969, 0.667969, 0.664062, 0.625, 0.667969, 0.65625, 0.640625, 0.667969, 0.640625, 0.5625, + 0.667969, 0.667969, 0.667969, 0.640625, 0.667969, 0.664062, 0.65625, 0.667969, 0.65625, 0.5625, + 0.667969, 0.667969, 0.667969, 0.664062, 0.65625, 0.664062, 0.664062, 0.667969, 0.667969, 0.667969, + 0.667969, 0.664062, 0.667969, 0.65625, 0.648438, 0.648438, 0.65625, 0.667969, 0.667969, 0.667969, + 0.667969, 0.65625, 0.664062, 0.648438, 0.632812, 0.632812, 0.640625, 0.664062, 0.664062, 0.667969, + 0.664062, 0.648438, 0.65625, 0.625, 0.617188, 0.617188, 0.625, 0.65625, 0.648438, 0.664062, 0.648438, 0.632812, 0.648438, 0.609375, 0.601562, 0.601562, 0.609375, 0.648438, 0.640625, 0.648438, - 0.65625, 0.632812, 0.632812, 0.625, 0.632812, 0.640625, 0.625, 0.585938, 0.625, 0.609375, - 0.664062, 0.648438, 0.648438, 0.640625, 0.648438, 0.65625, 0.640625, 0.601562, 0.640625, 0.625, - 0.667969, 0.65625, 0.664062, 0.65625, 0.65625, 0.664062, 0.648438, 0.617188, 0.65625, 0.640625, + 0.65625, 0.632812, 0.632812, 0.625, 0.632812, 0.640625, 0.625, 0.585938, 0.625, 0.609375, + 0.664062, 0.648438, 0.648438, 0.640625, 0.648438, 0.65625, 0.640625, 0.601562, 0.640625, 0.625, + 0.667969, 0.65625, 0.664062, 0.65625, 0.65625, 0.664062, 0.648438, 0.617188, 0.65625, 0.640625, 0.667969, 0.664062, 0.667969, 0.664062, 0.664062, 0.667969, 0.664062, 0.632812, 0.664062, 0.65625, 0.667969, 0.667969, 0.667969, 0.667969, 0.667969, 0.667969, 0.667969, 0.648438, 0.667969, 0.664062, - 0.664062, 0.664062, 0.625, 0.667969, 0.664062, 0.667969, 0.546875, 0.640625, 0.667969, 0.667969, - 0.648438, 0.664062, 0.609375, 0.664062, 0.65625, 0.667969, 0.546875, 0.625, 0.667969, 0.667969, - 0.632812, 0.648438, 0.59375, 0.65625, 0.640625, 0.664062, 0.554688, 0.609375, 0.664062, 0.664062, - 0.617188, 0.632812, 0.585938, 0.648438, 0.625, 0.65625, 0.554688, 0.59375, 0.648438, 0.65625, + 0.664062, 0.664062, 0.625, 0.667969, 0.664062, 0.667969, 0.546875, 0.640625, 0.667969, 0.667969, + 0.648438, 0.664062, 0.609375, 0.664062, 0.65625, 0.667969, 0.546875, 0.625, 0.667969, 0.667969, + 0.632812, 0.648438, 0.59375, 0.65625, 0.640625, 0.664062, 0.554688, 0.609375, 0.664062, 0.664062, + 0.617188, 0.632812, 0.585938, 0.648438, 0.625, 0.65625, 0.554688, 0.59375, 0.648438, 0.65625, 0.601562, 0.617188, 0.578125, 0.632812, 0.609375, 0.640625, 0.554688, 0.585938, 0.640625, 0.640625, - 0.554688, 0.640625, 0.609375, 0.632812, 0.640625, 0.632812, 0.5625, 0.648438, 0.617188, 0.65625, - 0.554688, 0.648438, 0.625, 0.648438, 0.65625, 0.648438, 0.5625, 0.65625, 0.632812, 0.664062, - 0.546875, 0.664062, 0.640625, 0.664062, 0.664062, 0.65625, 0.5625, 0.664062, 0.648438, 0.667969, - 0.539062, 0.667969, 0.648438, 0.667969, 0.667969, 0.664062, 0.570312, 0.667969, 0.65625, 0.667969, + 0.554688, 0.640625, 0.609375, 0.632812, 0.640625, 0.632812, 0.5625, 0.648438, 0.617188, 0.65625, + 0.554688, 0.648438, 0.625, 0.648438, 0.65625, 0.648438, 0.5625, 0.65625, 0.632812, 0.664062, + 0.546875, 0.664062, 0.640625, 0.664062, 0.664062, 0.65625, 0.5625, 0.664062, 0.648438, 0.667969, + 0.539062, 0.667969, 0.648438, 0.667969, 0.667969, 0.664062, 0.570312, 0.667969, 0.65625, 0.667969, 0.539062, 0.667969, 0.664062, 0.667969, 0.667969, 0.667969, 0.570312, 0.667969, 0.664062, 0.667969}, std::vector{ - 0.554688, 0.65625, 0.601562, 0.59375, 0.632812, 0.648438, 0.640625, 0.585938, 0.625, 0.640625, - 0.65625, 0.554688, 0.632812, 0.609375, 0.617188, 0.585938, 0.601562, 0.632812, 0.632812, 0.632812, - 0.601562, 0.648438, 0.640625, 0.554688, 0.65625, 0.65625, 0.554688, 0.648438, 0.648438, 0.640625, - 0.585938, 0.632812, 0.65625, 0.648438, 0.648438, 0.570312, 0.648438, 0.648438, 0.640625, 0.632812, - 0.585938, 0.648438, 0.632812, 0.609375, 0.648438, 0.640625, 0.5625, 0.5625, 0.585938, 0.617188, - 0.648438, 0.648438, 0.625, 0.585938, 0.65625, 0.617188, 0.59375, 0.65625, 0.59375, 0.554688, + 0.554688, 0.65625, 0.601562, 0.59375, 0.632812, 0.648438, 0.640625, 0.585938, 0.625, 0.640625, + 0.65625, 0.554688, 0.632812, 0.609375, 0.617188, 0.585938, 0.601562, 0.632812, 0.632812, 0.632812, + 0.601562, 0.648438, 0.640625, 0.554688, 0.65625, 0.65625, 0.554688, 0.648438, 0.648438, 0.640625, + 0.585938, 0.632812, 0.65625, 0.648438, 0.648438, 0.570312, 0.648438, 0.648438, 0.640625, 0.632812, + 0.585938, 0.648438, 0.632812, 0.609375, 0.648438, 0.640625, 0.5625, 0.5625, 0.585938, 0.617188, + 0.648438, 0.648438, 0.625, 0.585938, 0.65625, 0.617188, 0.59375, 0.65625, 0.59375, 0.554688, 0.648438, 0.632812, 0.648438, 0.609375, 0.601562, 0.601562, 0.609375, 0.648438, 0.640625, 0.648438, - 0.65625, 0.632812, 0.632812, 0.625, 0.632812, 0.640625, 0.625, 0.585938, 0.625, 0.609375, + 0.65625, 0.632812, 0.632812, 0.625, 0.632812, 0.640625, 0.625, 0.585938, 0.625, 0.609375, 0.601562, 0.617188, 0.578125, 0.632812, 0.609375, 0.640625, 0.554688, 0.585938, 0.640625, 0.640625, - 0.554688, 0.640625, 0.609375, 0.632812, 0.640625, 0.632812, 0.5625, 0.648438, 0.617188, 0.65625}, - std::vector{ - 1.1875, 2.3125, 1.5, 1.45312, 1.84375, 2.29688, 2.03125, 1.39062, 1.76562, 2.03125, - 2.35938, 1.1875, 1.84375, 1.57812, 1.60938, 1.375, 1.48438, 1.90625, 1.90625, 1.79688, - 1.48438, 2.0625, 1.92188, 1.19531, 2.35938, 2.35938, 1.20312, 2.0625, 2.0625, 1.9375, - 1.35156, 1.84375, 2.35938, 2.23438, 2.10938, 1.30469, 2.125, 2.23438, 1.92188, 1.84375, - 1.35156, 2.10938, 1.90625, 1.5625, 2.23438, 1.98438, 1.24219, 1.22656, 1.375, 1.67188, - 2.23438, 2.17188, 1.70312, 1.375, 2.3125, 1.60938, 1.45312, 2.35938, 1.4375, 1.21875, - 2.23438, 1.78125, 2.0625, 1.57812, 1.5, 1.51562, 1.57812, 2.10938, 1.9375, 2.29688, - 2.35938, 1.79688, 1.89062, 1.73438, 1.8125, 1.95312, 1.70312, 1.40625, 1.73438, 1.57812, - 1.5, 1.64062, 1.32031, 1.79688, 1.54688, 2.03125, 1.20312, 1.35938, 1.9375, 1.95312, - 1.1875, 1.9375, 1.54688, 1.89062, 2, 1.78125, 1.22656, 2.15625, 1.59375, 2.35938}), + 0.554688, 0.640625, 0.609375, 0.632812, 0.640625, 0.632812, 0.5625, 0.648438, 0.617188, 0.65625}, + std::vector{1.1875, 2.3125, 1.5, 1.45312, 1.84375, 2.29688, 2.03125, 1.39062, 1.76562, 2.03125, + 2.35938, 1.1875, 1.84375, 1.57812, 1.60938, 1.375, 1.48438, 1.90625, 1.90625, 1.79688, + 1.48438, 2.0625, 1.92188, 1.19531, 2.35938, 2.35938, 1.20312, 2.0625, 2.0625, 1.9375, + 1.35156, 1.84375, 2.35938, 2.23438, 2.10938, 1.30469, 2.125, 2.23438, 1.92188, 1.84375, + 1.35156, 2.10938, 1.90625, 1.5625, 2.23438, 1.98438, 1.24219, 1.22656, 1.375, 1.67188, + 2.23438, 2.17188, 1.70312, 1.375, 2.3125, 1.60938, 1.45312, 2.35938, 1.4375, 1.21875, + 2.23438, 1.78125, 2.0625, 1.57812, 1.5, 1.51562, 1.57812, 2.10938, 1.9375, 2.29688, + 2.35938, 1.79688, 1.89062, 1.73438, 1.8125, 1.95312, 1.70312, 1.40625, 1.73438, 1.57812, + 1.5, 1.64062, 1.32031, 1.79688, 1.54688, 2.03125, 1.20312, 1.35938, 1.9375, 1.95312, + 1.1875, 1.9375, 1.54688, 1.89062, 2, 1.78125, 1.22656, 2.15625, 1.59375, 2.35938}), }; return params; } @@ -1838,755 +2005,716 @@ template std::vector generateV1Params() { using T = typename element_type_traits::value_type; - std::vector params { + std::vector params{ LSTMSequenceV1Params( - 5, 10, 10, 10, - 0.7f, false, op::RecurrentSequenceDirection::FORWARD, + 5, + 10, + 10, + 10, + 0.7f, + false, + op::RecurrentSequenceDirection::FORWARD, ET, std::vector{ - 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, - 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, - 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, - 7.03475, 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, - 6.61627, 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 2.07541, - 5.72319, 1.75261, 9.25175, 9.19404, 3.69037, 6.2595, 6.09321, 6.52544, 9.60882, 3.34881, - 3.07914, 5.80104, 9.54944, 5.43754, 5.8654, 7.88937, 1.40811, 2.2597, 8.13163, 1.26821, - 8.94813, 5.86709, 5.03182, 9.02922, 4.39826, 5.84582, 6.87069, 4.25135, 6.13908, 6.74053, - 2.13683, 7.21184, 6.82974, 4.18545, 7.8691, 4.20879, 7.77509, 8.93208, 1.10502, 5.48298, - 1.66413, 8.08256, 1.57661, 4.19779, 9.47653, 4.41823, 7.86628, 7.94436, 3.71224, 7.95465, - 2.37637, 6.20771, 1.08107, 7.38138, 5.23577, 7.88133, 5.20653, 3.42101, 8.48523, 5.96192, - 1.63073, 5.25228, 7.68488, 2.7276, 5.1788, 3.07327, 5.57423, 2.87711, 1.44374, 5.66976, - 2.55051, 4.56682, 1.96629, 5.58829, 1.91922, 3.59846, 3.08583, 9.70901, 3.50487, 3.1026, - 1.82401, 6.1306, 4.76134, 4.31059, 8.31695, 3.60784, 7.45652, 6.51653, 4.84219, 7.76686, - 4.85031, 4.85544, 4.25714, 2.38005, 9.43471, 9.24769, 8.03763, 6.54696, 1.32399, 6.88891, - 2.16793, 3.64924, 4.24733, 3.47181, 1.66572, 2.36923, 2.45457, 9.44841, 4.34021, 1.45016, - 7.6686, 3.68812, 2.83922, 9.83581, 9.03719, 7.83414, 6.86009, 1.35715, 8.32489, 7.86316, - 5.09754, 5.78644, 1.98402, 2.31429, 5.5791, 2.94085, 9.24799, 5.15937, 2.19041, 7.87817, - 2.9146, 1.66833, 1.85877, 2.45985, 4.20817, 1.85777, 2.28937, 9.37912, 6.18926, 8.55681, - 6.60963, 3.92066, 7.5521, 5.70463, 7.6313, 2.48866, 7.18352, 4.8413, 7.55702, 7.80702, - 4.5785, 9.3268, 2.83159, 1.07202, 9.33716, 3.6506, 2.50256, 1.21691, 5.06801, 8.27505, - 4.31539, 6.48286, 1.31363, 4.1912, 1.70668, 7.23867, 1.11441, 5.13591, 9.65186, 4.00767, - 5.24875, 1.94852, 5.52768, 8.97121, 5.8094, 3.53329, 4.19126, 9.06652, 3.1734, 1.21496, - 9.69154, 4.86971, 4.1166, 6.19361, 2.13874, 9.55039, 3.8225, 9.57548, 2.96554, 3.2383, - 8.77422, 3.11741, 8.3359, 5.89508, 2.72134, 6.29956, 1.43323, 1.14286, 1.4474, 4.59474, - 6.19214, 8.80766, 8.07546, 3.29232, 1.74029, 2.4198, 2.88544, 4.75644, 4.12921, 7.29896, - 7.27759, 1.67252, 1.32823, 8.1046, 9.10476, 1.04197, 3.37783, 5.2064, 4.23835, 3.16196, - 1.20852, 5.78501, 2.17175, 6.05313, 2.51048, 4.78967, 7.16219, 3.4651, 1.09, 2.9788, - 1.28761, 9.41385, 8.03883, 5.65835, 1.14816, 3.6892, 5.86648, 8.73895, 2.66603, 1.75192, - 1.39845, 4.99427, 1.17387, 1.60329, 8.30594, 6.72662, 7.95565, 7.35114, 3.1439, 1.39976, - 3.53095, 8.78581, 1.65811, 6.94299, 2.68641, 5.70058, 9.13491, 5.27637, 8.6232, 8.54902, - 2.25352, 5.86274, 5.20377, 2.96815, 4.96745, 5.3225, 3.99956, 1.08021, 5.54918, 7.05833, - 1.49913, 2.41822, 6.44593, 3.87301, 9.01465, 8.11336, 2.95749, 2.80188, 7.12396, 2.40595, - 5.59325, 9.89258, 2.30223, 1.4347, 9.09158, 7.43797, 3.79295, 4.53646, 1.72705, 4.16909, - 1.00912, 6.62167, 2.80244, 6.626, 3.89307, 1.42586, 7.51028, 7.83327, 4.65674, 7.33902, - 6.26823, 9.72608, 3.73491, 3.8238, 3.03815, 7.05101, 8.0103, 5.61396, 6.53738, 1.41095, - 5.0149, 9.71211, 4.23604, 5.98629, 4.70219, 9.69442, 2.82752, 9.93544, 6.9328, 8.2817, - 5.12336, 8.98577, 5.80541, 6.19552, 9.25748, 3.82732, 7.53525, 8.24712, 5.32057, 5.38817, - 8.57269, 5.99975, 3.42893, 5.38068, 3.48261, 3.02851, 6.82079, 9.2902, 2.80427, 8.91868, - 5.19227, 7.52482, 3.72584, 5.40107, 2.83307, 1.79755, 2.49121, 5.52697, 8.08823, 9.13242, - 2.97572, 7.64318, 3.32023, 6.07788, 2.19187, 4.34879, 1.7457, 5.55154, 7.24966, 5.1128, - 4.25147, 8.34407, 1.4123, 4.49045, 5.12671, 7.62159, 9.18673, 3.49665, 8.35992, 6.90684, - 1.10152, 7.61818, 6.43145, 7.12017, 6.25564, 6.16169, 4.24916, 9.6283, 9.88249, 4.48422, - 8.52562, 9.83928, 6.26818, 7.03839, 1.77631, 9.92305, 8.0155, 9.94928, 6.88321, 1.33685, - 7.4718, 7.19305, 6.47932, 1.9559, 3.52616, 7.98593, 9.0115, 5.59539, 7.44137, 1.70001, - 6.53774, 8.54023, 7.26405, 5.99553, 8.75071, 7.70789, 3.38094, 9.99792, 6.16359, 6.75153, - 5.4073, 9.00437, 8.87059, 8.63011, 6.82951, 6.27021, 3.53425, 9.92489, 8.19695, 5.51473, - 7.95084, 2.11852, 9.28916, 1.40353, 3.05744, 8.58238, 3.75014, 5.35889, 6.85048, 2.29549, - 3.75218, 8.98228, 8.98158, 5.63695, 3.40379, 8.92309, 5.48185, 4.00095, 9.05227, 2.84035, - 8.37644, 8.54954, 5.70516, 2.45744, 9.54079, 1.53504, 8.9785, 6.1691, 4.40962, 10}, - std::vector{ - 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, - 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, - 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, - 7.03475, 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, - 6.61627, 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 10}, - std::vector{ - 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, - 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, - 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, - 7.03475, 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, - 6.61627, 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 10}, + 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, 8.6168, + 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, 8.0055, 7.44373, + 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, 7.03475, 6.33759, 7.04489, + 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, 6.61627, 6.94572, 3.68646, 5.01521, + 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 2.07541, 5.72319, 1.75261, 9.25175, 9.19404, 3.69037, + 6.2595, 6.09321, 6.52544, 9.60882, 3.34881, 3.07914, 5.80104, 9.54944, 5.43754, 5.8654, 7.88937, + 1.40811, 2.2597, 8.13163, 1.26821, 8.94813, 5.86709, 5.03182, 9.02922, 4.39826, 5.84582, 6.87069, + 4.25135, 6.13908, 6.74053, 2.13683, 7.21184, 6.82974, 4.18545, 7.8691, 4.20879, 7.77509, 8.93208, + 1.10502, 5.48298, 1.66413, 8.08256, 1.57661, 4.19779, 9.47653, 4.41823, 7.86628, 7.94436, 3.71224, + 7.95465, 2.37637, 6.20771, 1.08107, 7.38138, 5.23577, 7.88133, 5.20653, 3.42101, 8.48523, 5.96192, + 1.63073, 5.25228, 7.68488, 2.7276, 5.1788, 3.07327, 5.57423, 2.87711, 1.44374, 5.66976, 2.55051, + 4.56682, 1.96629, 5.58829, 1.91922, 3.59846, 3.08583, 9.70901, 3.50487, 3.1026, 1.82401, 6.1306, + 4.76134, 4.31059, 8.31695, 3.60784, 7.45652, 6.51653, 4.84219, 7.76686, 4.85031, 4.85544, 4.25714, + 2.38005, 9.43471, 9.24769, 8.03763, 6.54696, 1.32399, 6.88891, 2.16793, 3.64924, 4.24733, 3.47181, + 1.66572, 2.36923, 2.45457, 9.44841, 4.34021, 1.45016, 7.6686, 3.68812, 2.83922, 9.83581, 9.03719, + 7.83414, 6.86009, 1.35715, 8.32489, 7.86316, 5.09754, 5.78644, 1.98402, 2.31429, 5.5791, 2.94085, + 9.24799, 5.15937, 2.19041, 7.87817, 2.9146, 1.66833, 1.85877, 2.45985, 4.20817, 1.85777, 2.28937, + 9.37912, 6.18926, 8.55681, 6.60963, 3.92066, 7.5521, 5.70463, 7.6313, 2.48866, 7.18352, 4.8413, + 7.55702, 7.80702, 4.5785, 9.3268, 2.83159, 1.07202, 9.33716, 3.6506, 2.50256, 1.21691, 5.06801, + 8.27505, 4.31539, 6.48286, 1.31363, 4.1912, 1.70668, 7.23867, 1.11441, 5.13591, 9.65186, 4.00767, + 5.24875, 1.94852, 5.52768, 8.97121, 5.8094, 3.53329, 4.19126, 9.06652, 3.1734, 1.21496, 9.69154, + 4.86971, 4.1166, 6.19361, 2.13874, 9.55039, 3.8225, 9.57548, 2.96554, 3.2383, 8.77422, 3.11741, + 8.3359, 5.89508, 2.72134, 6.29956, 1.43323, 1.14286, 1.4474, 4.59474, 6.19214, 8.80766, 8.07546, + 3.29232, 1.74029, 2.4198, 2.88544, 4.75644, 4.12921, 7.29896, 7.27759, 1.67252, 1.32823, 8.1046, + 9.10476, 1.04197, 3.37783, 5.2064, 4.23835, 3.16196, 1.20852, 5.78501, 2.17175, 6.05313, 2.51048, + 4.78967, 7.16219, 3.4651, 1.09, 2.9788, 1.28761, 9.41385, 8.03883, 5.65835, 1.14816, 3.6892, + 5.86648, 8.73895, 2.66603, 1.75192, 1.39845, 4.99427, 1.17387, 1.60329, 8.30594, 6.72662, 7.95565, + 7.35114, 3.1439, 1.39976, 3.53095, 8.78581, 1.65811, 6.94299, 2.68641, 5.70058, 9.13491, 5.27637, + 8.6232, 8.54902, 2.25352, 5.86274, 5.20377, 2.96815, 4.96745, 5.3225, 3.99956, 1.08021, 5.54918, + 7.05833, 1.49913, 2.41822, 6.44593, 3.87301, 9.01465, 8.11336, 2.95749, 2.80188, 7.12396, 2.40595, + 5.59325, 9.89258, 2.30223, 1.4347, 9.09158, 7.43797, 3.79295, 4.53646, 1.72705, 4.16909, 1.00912, + 6.62167, 2.80244, 6.626, 3.89307, 1.42586, 7.51028, 7.83327, 4.65674, 7.33902, 6.26823, 9.72608, + 3.73491, 3.8238, 3.03815, 7.05101, 8.0103, 5.61396, 6.53738, 1.41095, 5.0149, 9.71211, 4.23604, + 5.98629, 4.70219, 9.69442, 2.82752, 9.93544, 6.9328, 8.2817, 5.12336, 8.98577, 5.80541, 6.19552, + 9.25748, 3.82732, 7.53525, 8.24712, 5.32057, 5.38817, 8.57269, 5.99975, 3.42893, 5.38068, 3.48261, + 3.02851, 6.82079, 9.2902, 2.80427, 8.91868, 5.19227, 7.52482, 3.72584, 5.40107, 2.83307, 1.79755, + 2.49121, 5.52697, 8.08823, 9.13242, 2.97572, 7.64318, 3.32023, 6.07788, 2.19187, 4.34879, 1.7457, + 5.55154, 7.24966, 5.1128, 4.25147, 8.34407, 1.4123, 4.49045, 5.12671, 7.62159, 9.18673, 3.49665, + 8.35992, 6.90684, 1.10152, 7.61818, 6.43145, 7.12017, 6.25564, 6.16169, 4.24916, 9.6283, 9.88249, + 4.48422, 8.52562, 9.83928, 6.26818, 7.03839, 1.77631, 9.92305, 8.0155, 9.94928, 6.88321, 1.33685, + 7.4718, 7.19305, 6.47932, 1.9559, 3.52616, 7.98593, 9.0115, 5.59539, 7.44137, 1.70001, 6.53774, + 8.54023, 7.26405, 5.99553, 8.75071, 7.70789, 3.38094, 9.99792, 6.16359, 6.75153, 5.4073, 9.00437, + 8.87059, 8.63011, 6.82951, 6.27021, 3.53425, 9.92489, 8.19695, 5.51473, 7.95084, 2.11852, 9.28916, + 1.40353, 3.05744, 8.58238, 3.75014, 5.35889, 6.85048, 2.29549, 3.75218, 8.98228, 8.98158, 5.63695, + 3.40379, 8.92309, 5.48185, 4.00095, 9.05227, 2.84035, 8.37644, 8.54954, 5.70516, 2.45744, 9.54079, + 1.53504, 8.9785, 6.1691, 4.40962, 10}, + std::vector{1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, + 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, + 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, + 7.03475, 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, + 6.61627, 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 10}, + std::vector{1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, + 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, + 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, + 7.03475, 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, + 6.61627, 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 10}, std::vector{10, 10, 10, 10, 10}, std::vector{ - 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, - 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, - 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, - 7.03475, 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, - 6.61627, 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 2.07541, - 5.72319, 1.75261, 9.25175, 9.19404, 3.69037, 6.2595, 6.09321, 6.52544, 9.60882, 3.34881, - 3.07914, 5.80104, 9.54944, 5.43754, 5.8654, 7.88937, 1.40811, 2.2597, 8.13163, 1.26821, - 8.94813, 5.86709, 5.03182, 9.02922, 4.39826, 5.84582, 6.87069, 4.25135, 6.13908, 6.74053, - 2.13683, 7.21184, 6.82974, 4.18545, 7.8691, 4.20879, 7.77509, 8.93208, 1.10502, 5.48298, - 1.66413, 8.08256, 1.57661, 4.19779, 9.47653, 4.41823, 7.86628, 7.94436, 3.71224, 7.95465, - 2.37637, 6.20771, 1.08107, 7.38138, 5.23577, 7.88133, 5.20653, 3.42101, 8.48523, 5.96192, - 1.63073, 5.25228, 7.68488, 2.7276, 5.1788, 3.07327, 5.57423, 2.87711, 1.44374, 5.66976, - 2.55051, 4.56682, 1.96629, 5.58829, 1.91922, 3.59846, 3.08583, 9.70901, 3.50487, 3.1026, - 1.82401, 6.1306, 4.76134, 4.31059, 8.31695, 3.60784, 7.45652, 6.51653, 4.84219, 7.76686, - 4.85031, 4.85544, 4.25714, 2.38005, 9.43471, 9.24769, 8.03763, 6.54696, 1.32399, 6.88891, - 2.16793, 3.64924, 4.24733, 3.47181, 1.66572, 2.36923, 2.45457, 9.44841, 4.34021, 1.45016, - 7.6686, 3.68812, 2.83922, 9.83581, 9.03719, 7.83414, 6.86009, 1.35715, 8.32489, 7.86316, - 5.09754, 5.78644, 1.98402, 2.31429, 5.5791, 2.94085, 9.24799, 5.15937, 2.19041, 7.87817, - 2.9146, 1.66833, 1.85877, 2.45985, 4.20817, 1.85777, 2.28937, 9.37912, 6.18926, 8.55681, - 6.60963, 3.92066, 7.5521, 5.70463, 7.6313, 2.48866, 7.18352, 4.8413, 7.55702, 7.80702, - 4.5785, 9.3268, 2.83159, 1.07202, 9.33716, 3.6506, 2.50256, 1.21691, 5.06801, 8.27505, - 4.31539, 6.48286, 1.31363, 4.1912, 1.70668, 7.23867, 1.11441, 5.13591, 9.65186, 4.00767, - 5.24875, 1.94852, 5.52768, 8.97121, 5.8094, 3.53329, 4.19126, 9.06652, 3.1734, 1.21496, - 9.69154, 4.86971, 4.1166, 6.19361, 2.13874, 9.55039, 3.8225, 9.57548, 2.96554, 3.2383, - 8.77422, 3.11741, 8.3359, 5.89508, 2.72134, 6.29956, 1.43323, 1.14286, 1.4474, 4.59474, - 6.19214, 8.80766, 8.07546, 3.29232, 1.74029, 2.4198, 2.88544, 4.75644, 4.12921, 7.29896, - 7.27759, 1.67252, 1.32823, 8.1046, 9.10476, 1.04197, 3.37783, 5.2064, 4.23835, 3.16196, - 1.20852, 5.78501, 2.17175, 6.05313, 2.51048, 4.78967, 7.16219, 3.4651, 1.09, 2.9788, - 1.28761, 9.41385, 8.03883, 5.65835, 1.14816, 3.6892, 5.86648, 8.73895, 2.66603, 1.75192, - 1.39845, 4.99427, 1.17387, 1.60329, 8.30594, 6.72662, 7.95565, 7.35114, 3.1439, 1.39976, - 3.53095, 8.78581, 1.65811, 6.94299, 2.68641, 5.70058, 9.13491, 5.27637, 8.6232, 8.54902, - 2.25352, 5.86274, 5.20377, 2.96815, 4.96745, 5.3225, 3.99956, 1.08021, 5.54918, 7.05833, - 1.49913, 2.41822, 6.44593, 3.87301, 9.01465, 8.11336, 2.95749, 2.80188, 7.12396, 2.40595, - 5.59325, 9.89258, 2.30223, 1.4347, 9.09158, 7.43797, 3.79295, 4.53646, 1.72705, 4.16909, - 1.00912, 6.62167, 2.80244, 6.626, 3.89307, 1.42586, 7.51028, 7.83327, 4.65674, 7.33902, - 6.26823, 9.72608, 3.73491, 3.8238, 3.03815, 7.05101, 8.0103, 5.61396, 6.53738, 1.41095, - 5.0149, 9.71211, 4.23604, 5.98629, 4.70219, 9.69442, 2.82752, 9.93544, 6.9328, 8.2817, - 5.12336, 8.98577, 5.80541, 6.19552, 9.25748, 3.82732, 7.53525, 8.24712, 5.32057, 5.38817, - 8.57269, 5.99975, 3.42893, 5.38068, 3.48261, 3.02851, 6.82079, 9.2902, 2.80427, 8.91868, - 5.19227, 7.52482, 3.72584, 5.40107, 2.83307, 1.79755, 2.49121, 5.52697, 8.08823, 10}, + 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, 8.6168, + 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, 8.0055, 7.44373, + 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, 7.03475, 6.33759, 7.04489, + 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, 6.61627, 6.94572, 3.68646, 5.01521, + 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 2.07541, 5.72319, 1.75261, 9.25175, 9.19404, 3.69037, + 6.2595, 6.09321, 6.52544, 9.60882, 3.34881, 3.07914, 5.80104, 9.54944, 5.43754, 5.8654, 7.88937, + 1.40811, 2.2597, 8.13163, 1.26821, 8.94813, 5.86709, 5.03182, 9.02922, 4.39826, 5.84582, 6.87069, + 4.25135, 6.13908, 6.74053, 2.13683, 7.21184, 6.82974, 4.18545, 7.8691, 4.20879, 7.77509, 8.93208, + 1.10502, 5.48298, 1.66413, 8.08256, 1.57661, 4.19779, 9.47653, 4.41823, 7.86628, 7.94436, 3.71224, + 7.95465, 2.37637, 6.20771, 1.08107, 7.38138, 5.23577, 7.88133, 5.20653, 3.42101, 8.48523, 5.96192, + 1.63073, 5.25228, 7.68488, 2.7276, 5.1788, 3.07327, 5.57423, 2.87711, 1.44374, 5.66976, 2.55051, + 4.56682, 1.96629, 5.58829, 1.91922, 3.59846, 3.08583, 9.70901, 3.50487, 3.1026, 1.82401, 6.1306, + 4.76134, 4.31059, 8.31695, 3.60784, 7.45652, 6.51653, 4.84219, 7.76686, 4.85031, 4.85544, 4.25714, + 2.38005, 9.43471, 9.24769, 8.03763, 6.54696, 1.32399, 6.88891, 2.16793, 3.64924, 4.24733, 3.47181, + 1.66572, 2.36923, 2.45457, 9.44841, 4.34021, 1.45016, 7.6686, 3.68812, 2.83922, 9.83581, 9.03719, + 7.83414, 6.86009, 1.35715, 8.32489, 7.86316, 5.09754, 5.78644, 1.98402, 2.31429, 5.5791, 2.94085, + 9.24799, 5.15937, 2.19041, 7.87817, 2.9146, 1.66833, 1.85877, 2.45985, 4.20817, 1.85777, 2.28937, + 9.37912, 6.18926, 8.55681, 6.60963, 3.92066, 7.5521, 5.70463, 7.6313, 2.48866, 7.18352, 4.8413, + 7.55702, 7.80702, 4.5785, 9.3268, 2.83159, 1.07202, 9.33716, 3.6506, 2.50256, 1.21691, 5.06801, + 8.27505, 4.31539, 6.48286, 1.31363, 4.1912, 1.70668, 7.23867, 1.11441, 5.13591, 9.65186, 4.00767, + 5.24875, 1.94852, 5.52768, 8.97121, 5.8094, 3.53329, 4.19126, 9.06652, 3.1734, 1.21496, 9.69154, + 4.86971, 4.1166, 6.19361, 2.13874, 9.55039, 3.8225, 9.57548, 2.96554, 3.2383, 8.77422, 3.11741, + 8.3359, 5.89508, 2.72134, 6.29956, 1.43323, 1.14286, 1.4474, 4.59474, 6.19214, 8.80766, 8.07546, + 3.29232, 1.74029, 2.4198, 2.88544, 4.75644, 4.12921, 7.29896, 7.27759, 1.67252, 1.32823, 8.1046, + 9.10476, 1.04197, 3.37783, 5.2064, 4.23835, 3.16196, 1.20852, 5.78501, 2.17175, 6.05313, 2.51048, + 4.78967, 7.16219, 3.4651, 1.09, 2.9788, 1.28761, 9.41385, 8.03883, 5.65835, 1.14816, 3.6892, + 5.86648, 8.73895, 2.66603, 1.75192, 1.39845, 4.99427, 1.17387, 1.60329, 8.30594, 6.72662, 7.95565, + 7.35114, 3.1439, 1.39976, 3.53095, 8.78581, 1.65811, 6.94299, 2.68641, 5.70058, 9.13491, 5.27637, + 8.6232, 8.54902, 2.25352, 5.86274, 5.20377, 2.96815, 4.96745, 5.3225, 3.99956, 1.08021, 5.54918, + 7.05833, 1.49913, 2.41822, 6.44593, 3.87301, 9.01465, 8.11336, 2.95749, 2.80188, 7.12396, 2.40595, + 5.59325, 9.89258, 2.30223, 1.4347, 9.09158, 7.43797, 3.79295, 4.53646, 1.72705, 4.16909, 1.00912, + 6.62167, 2.80244, 6.626, 3.89307, 1.42586, 7.51028, 7.83327, 4.65674, 7.33902, 6.26823, 9.72608, + 3.73491, 3.8238, 3.03815, 7.05101, 8.0103, 5.61396, 6.53738, 1.41095, 5.0149, 9.71211, 4.23604, + 5.98629, 4.70219, 9.69442, 2.82752, 9.93544, 6.9328, 8.2817, 5.12336, 8.98577, 5.80541, 6.19552, + 9.25748, 3.82732, 7.53525, 8.24712, 5.32057, 5.38817, 8.57269, 5.99975, 3.42893, 5.38068, 3.48261, + 3.02851, 6.82079, 9.2902, 2.80427, 8.91868, 5.19227, 7.52482, 3.72584, 5.40107, 2.83307, 1.79755, + 2.49121, 5.52697, 8.08823, 10}, std::vector{ - 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, - 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, - 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, - 7.03475, 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, - 6.61627, 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 2.07541, - 5.72319, 1.75261, 9.25175, 9.19404, 3.69037, 6.2595, 6.09321, 6.52544, 9.60882, 3.34881, - 3.07914, 5.80104, 9.54944, 5.43754, 5.8654, 7.88937, 1.40811, 2.2597, 8.13163, 1.26821, - 8.94813, 5.86709, 5.03182, 9.02922, 4.39826, 5.84582, 6.87069, 4.25135, 6.13908, 6.74053, - 2.13683, 7.21184, 6.82974, 4.18545, 7.8691, 4.20879, 7.77509, 8.93208, 1.10502, 5.48298, - 1.66413, 8.08256, 1.57661, 4.19779, 9.47653, 4.41823, 7.86628, 7.94436, 3.71224, 7.95465, - 2.37637, 6.20771, 1.08107, 7.38138, 5.23577, 7.88133, 5.20653, 3.42101, 8.48523, 5.96192, - 1.63073, 5.25228, 7.68488, 2.7276, 5.1788, 3.07327, 5.57423, 2.87711, 1.44374, 5.66976, - 2.55051, 4.56682, 1.96629, 5.58829, 1.91922, 3.59846, 3.08583, 9.70901, 3.50487, 3.1026, - 1.82401, 6.1306, 4.76134, 4.31059, 8.31695, 3.60784, 7.45652, 6.51653, 4.84219, 7.76686, - 4.85031, 4.85544, 4.25714, 2.38005, 9.43471, 9.24769, 8.03763, 6.54696, 1.32399, 6.88891, - 2.16793, 3.64924, 4.24733, 3.47181, 1.66572, 2.36923, 2.45457, 9.44841, 4.34021, 1.45016, - 7.6686, 3.68812, 2.83922, 9.83581, 9.03719, 7.83414, 6.86009, 1.35715, 8.32489, 7.86316, - 5.09754, 5.78644, 1.98402, 2.31429, 5.5791, 2.94085, 9.24799, 5.15937, 2.19041, 7.87817, - 2.9146, 1.66833, 1.85877, 2.45985, 4.20817, 1.85777, 2.28937, 9.37912, 6.18926, 8.55681, - 6.60963, 3.92066, 7.5521, 5.70463, 7.6313, 2.48866, 7.18352, 4.8413, 7.55702, 7.80702, - 4.5785, 9.3268, 2.83159, 1.07202, 9.33716, 3.6506, 2.50256, 1.21691, 5.06801, 8.27505, - 4.31539, 6.48286, 1.31363, 4.1912, 1.70668, 7.23867, 1.11441, 5.13591, 9.65186, 4.00767, - 5.24875, 1.94852, 5.52768, 8.97121, 5.8094, 3.53329, 4.19126, 9.06652, 3.1734, 1.21496, - 9.69154, 4.86971, 4.1166, 6.19361, 2.13874, 9.55039, 3.8225, 9.57548, 2.96554, 3.2383, - 8.77422, 3.11741, 8.3359, 5.89508, 2.72134, 6.29956, 1.43323, 1.14286, 1.4474, 4.59474, - 6.19214, 8.80766, 8.07546, 3.29232, 1.74029, 2.4198, 2.88544, 4.75644, 4.12921, 7.29896, - 7.27759, 1.67252, 1.32823, 8.1046, 9.10476, 1.04197, 3.37783, 5.2064, 4.23835, 3.16196, - 1.20852, 5.78501, 2.17175, 6.05313, 2.51048, 4.78967, 7.16219, 3.4651, 1.09, 2.9788, - 1.28761, 9.41385, 8.03883, 5.65835, 1.14816, 3.6892, 5.86648, 8.73895, 2.66603, 1.75192, - 1.39845, 4.99427, 1.17387, 1.60329, 8.30594, 6.72662, 7.95565, 7.35114, 3.1439, 1.39976, - 3.53095, 8.78581, 1.65811, 6.94299, 2.68641, 5.70058, 9.13491, 5.27637, 8.6232, 8.54902, - 2.25352, 5.86274, 5.20377, 2.96815, 4.96745, 5.3225, 3.99956, 1.08021, 5.54918, 7.05833, - 1.49913, 2.41822, 6.44593, 3.87301, 9.01465, 8.11336, 2.95749, 2.80188, 7.12396, 2.40595, - 5.59325, 9.89258, 2.30223, 1.4347, 9.09158, 7.43797, 3.79295, 4.53646, 1.72705, 4.16909, - 1.00912, 6.62167, 2.80244, 6.626, 3.89307, 1.42586, 7.51028, 7.83327, 4.65674, 7.33902, - 6.26823, 9.72608, 3.73491, 3.8238, 3.03815, 7.05101, 8.0103, 5.61396, 6.53738, 1.41095, - 5.0149, 9.71211, 4.23604, 5.98629, 4.70219, 9.69442, 2.82752, 9.93544, 6.9328, 8.2817, - 5.12336, 8.98577, 5.80541, 6.19552, 9.25748, 3.82732, 7.53525, 8.24712, 5.32057, 5.38817, - 8.57269, 5.99975, 3.42893, 5.38068, 3.48261, 3.02851, 6.82079, 9.2902, 2.80427, 8.91868, - 5.19227, 7.52482, 3.72584, 5.40107, 2.83307, 1.79755, 2.49121, 5.52697, 8.08823, 10}, - std::vector{ - 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, - 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, - 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, - 7.03475, 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 10}, - std::vector{ - 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, - 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, - 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1}, + 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, 8.6168, + 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, 8.0055, 7.44373, + 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, 7.03475, 6.33759, 7.04489, + 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, 6.61627, 6.94572, 3.68646, 5.01521, + 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 2.07541, 5.72319, 1.75261, 9.25175, 9.19404, 3.69037, + 6.2595, 6.09321, 6.52544, 9.60882, 3.34881, 3.07914, 5.80104, 9.54944, 5.43754, 5.8654, 7.88937, + 1.40811, 2.2597, 8.13163, 1.26821, 8.94813, 5.86709, 5.03182, 9.02922, 4.39826, 5.84582, 6.87069, + 4.25135, 6.13908, 6.74053, 2.13683, 7.21184, 6.82974, 4.18545, 7.8691, 4.20879, 7.77509, 8.93208, + 1.10502, 5.48298, 1.66413, 8.08256, 1.57661, 4.19779, 9.47653, 4.41823, 7.86628, 7.94436, 3.71224, + 7.95465, 2.37637, 6.20771, 1.08107, 7.38138, 5.23577, 7.88133, 5.20653, 3.42101, 8.48523, 5.96192, + 1.63073, 5.25228, 7.68488, 2.7276, 5.1788, 3.07327, 5.57423, 2.87711, 1.44374, 5.66976, 2.55051, + 4.56682, 1.96629, 5.58829, 1.91922, 3.59846, 3.08583, 9.70901, 3.50487, 3.1026, 1.82401, 6.1306, + 4.76134, 4.31059, 8.31695, 3.60784, 7.45652, 6.51653, 4.84219, 7.76686, 4.85031, 4.85544, 4.25714, + 2.38005, 9.43471, 9.24769, 8.03763, 6.54696, 1.32399, 6.88891, 2.16793, 3.64924, 4.24733, 3.47181, + 1.66572, 2.36923, 2.45457, 9.44841, 4.34021, 1.45016, 7.6686, 3.68812, 2.83922, 9.83581, 9.03719, + 7.83414, 6.86009, 1.35715, 8.32489, 7.86316, 5.09754, 5.78644, 1.98402, 2.31429, 5.5791, 2.94085, + 9.24799, 5.15937, 2.19041, 7.87817, 2.9146, 1.66833, 1.85877, 2.45985, 4.20817, 1.85777, 2.28937, + 9.37912, 6.18926, 8.55681, 6.60963, 3.92066, 7.5521, 5.70463, 7.6313, 2.48866, 7.18352, 4.8413, + 7.55702, 7.80702, 4.5785, 9.3268, 2.83159, 1.07202, 9.33716, 3.6506, 2.50256, 1.21691, 5.06801, + 8.27505, 4.31539, 6.48286, 1.31363, 4.1912, 1.70668, 7.23867, 1.11441, 5.13591, 9.65186, 4.00767, + 5.24875, 1.94852, 5.52768, 8.97121, 5.8094, 3.53329, 4.19126, 9.06652, 3.1734, 1.21496, 9.69154, + 4.86971, 4.1166, 6.19361, 2.13874, 9.55039, 3.8225, 9.57548, 2.96554, 3.2383, 8.77422, 3.11741, + 8.3359, 5.89508, 2.72134, 6.29956, 1.43323, 1.14286, 1.4474, 4.59474, 6.19214, 8.80766, 8.07546, + 3.29232, 1.74029, 2.4198, 2.88544, 4.75644, 4.12921, 7.29896, 7.27759, 1.67252, 1.32823, 8.1046, + 9.10476, 1.04197, 3.37783, 5.2064, 4.23835, 3.16196, 1.20852, 5.78501, 2.17175, 6.05313, 2.51048, + 4.78967, 7.16219, 3.4651, 1.09, 2.9788, 1.28761, 9.41385, 8.03883, 5.65835, 1.14816, 3.6892, + 5.86648, 8.73895, 2.66603, 1.75192, 1.39845, 4.99427, 1.17387, 1.60329, 8.30594, 6.72662, 7.95565, + 7.35114, 3.1439, 1.39976, 3.53095, 8.78581, 1.65811, 6.94299, 2.68641, 5.70058, 9.13491, 5.27637, + 8.6232, 8.54902, 2.25352, 5.86274, 5.20377, 2.96815, 4.96745, 5.3225, 3.99956, 1.08021, 5.54918, + 7.05833, 1.49913, 2.41822, 6.44593, 3.87301, 9.01465, 8.11336, 2.95749, 2.80188, 7.12396, 2.40595, + 5.59325, 9.89258, 2.30223, 1.4347, 9.09158, 7.43797, 3.79295, 4.53646, 1.72705, 4.16909, 1.00912, + 6.62167, 2.80244, 6.626, 3.89307, 1.42586, 7.51028, 7.83327, 4.65674, 7.33902, 6.26823, 9.72608, + 3.73491, 3.8238, 3.03815, 7.05101, 8.0103, 5.61396, 6.53738, 1.41095, 5.0149, 9.71211, 4.23604, + 5.98629, 4.70219, 9.69442, 2.82752, 9.93544, 6.9328, 8.2817, 5.12336, 8.98577, 5.80541, 6.19552, + 9.25748, 3.82732, 7.53525, 8.24712, 5.32057, 5.38817, 8.57269, 5.99975, 3.42893, 5.38068, 3.48261, + 3.02851, 6.82079, 9.2902, 2.80427, 8.91868, 5.19227, 7.52482, 3.72584, 5.40107, 2.83307, 1.79755, + 2.49121, 5.52697, 8.08823, 10}, + std::vector{1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, + 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, + 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, + 7.03475, 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 10}, + std::vector{0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, + 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1}, std::vector{ 0.528016, 0.668187, 0.668186, 0.635471, 0.668187, 0.659096, 0.666861, 0.666715, 0.668138, 0.668186, - 0.53964, 0.668141, 0.668109, 0.619255, 0.668141, 0.647193, 0.662341, 0.661921, 0.667534, 0.66811, - 0.54692, 0.667558, 0.667297, 0.604361, 0.667564, 0.631676, 0.652518, 0.651781, 0.664541, 0.667311, + 0.53964, 0.668141, 0.668109, 0.619255, 0.668141, 0.647193, 0.662341, 0.661921, 0.667534, 0.66811, + 0.54692, 0.667558, 0.667297, 0.604361, 0.667564, 0.631676, 0.652518, 0.651781, 0.664541, 0.667311, 0.551576, 0.664629, 0.663703, 0.592106, 0.664652, 0.615579, 0.638092, 0.637163, 0.656733, 0.663751, 0.554596, 0.656917, 0.655047, 0.582718, 0.656967, 0.601233, 0.621878, 0.620939, 0.643723, 0.65514, 0.556574, 0.643984, 0.641397, 0.575854, 0.644055, 0.589658, 0.606642, 0.605821, 0.627796, 0.641522, 0.557878, 0.628081, 0.625301, 0.570987, 0.628158, 0.580903, 0.593915, 0.593262, 0.611954, 0.625433, 0.558742, 0.612216, 0.609684, 0.567605, 0.612287, 0.574556, 0.584071, 0.583581, 0.598219, 0.609803, - 0.559316, 0.598435, 0.596364, 0.565285, 0.598493, 0.57008, 0.576828, 0.576475, 0.587333, 0.596461, - 0.559698, 0.587499, 0.58592, 0.563707, 0.587544, 0.56698, 0.571671, 0.571423, 0.579197, 0.585993, - 0.668182, 0.66458, 0.667903, 0.667432, 0.658361, 0.667935, 0.668185, 0.667547, 0.667307, 0.668186, - 0.66803, 0.656815, 0.666091, 0.664171, 0.646084, 0.666251, 0.668096, 0.66459, 0.663738, 0.668113, - 0.666772, 0.643839, 0.66026, 0.655973, 0.630413, 0.660667, 0.667203, 0.656835, 0.655116, 0.667328, - 0.662084, 0.627922, 0.649014, 0.642661, 0.614386, 0.649671, 0.663395, 0.643868, 0.64149, 0.663807, - 0.652065, 0.61207, 0.633798, 0.626647, 0.600233, 0.634582, 0.654454, 0.627954, 0.625399, 0.65525, + 0.559316, 0.598435, 0.596364, 0.565285, 0.598493, 0.57008, 0.576828, 0.576475, 0.587333, 0.596461, + 0.559698, 0.587499, 0.58592, 0.563707, 0.587544, 0.56698, 0.571671, 0.571423, 0.579197, 0.585993, + 0.668182, 0.66458, 0.667903, 0.667432, 0.658361, 0.667935, 0.668185, 0.667547, 0.667307, 0.668186, + 0.66803, 0.656815, 0.666091, 0.664171, 0.646084, 0.666251, 0.668096, 0.66459, 0.663738, 0.668113, + 0.666772, 0.643839, 0.66026, 0.655973, 0.630413, 0.660667, 0.667203, 0.656835, 0.655116, 0.667328, + 0.662084, 0.627922, 0.649014, 0.642661, 0.614386, 0.649671, 0.663395, 0.643868, 0.64149, 0.663807, + 0.652065, 0.61207, 0.633798, 0.626647, 0.600233, 0.634582, 0.654454, 0.627954, 0.625399, 0.65525, 0.637519, 0.598314, 0.617618, 0.610903, 0.588883, 0.618381, 0.640604, 0.612099, 0.609772, 0.641672, 0.621298, 0.587406, 0.602959, 0.597357, 0.580333, 0.603611, 0.624467, 0.598338, 0.596436, 0.625592, - 0.606134, 0.57925, 0.591004, 0.586675, 0.57415, 0.591515, 0.608935, 0.587425, 0.585974, 0.609946, + 0.606134, 0.57925, 0.591004, 0.586675, 0.57415, 0.591515, 0.608935, 0.587425, 0.585974, 0.609946, 0.593511, 0.573381, 0.581898, 0.578717, 0.569797, 0.582278, 0.595758, 0.579264, 0.578207, 0.596577, - 0.583768, 0.569262, 0.575267, 0.573003, 0.566785, 0.575539, 0.58546, 0.57339, 0.572642, 0.586082, - 0.668174, 0.668159, 0.668178, 0.618792, 0.66788, 0.668183, 0.66818, 0.66818, 0.662345, 0.595566, + 0.583768, 0.569262, 0.575267, 0.573003, 0.566785, 0.575539, 0.58546, 0.57339, 0.572642, 0.586082, + 0.668174, 0.668159, 0.668178, 0.618792, 0.66788, 0.668183, 0.66818, 0.66818, 0.662345, 0.595566, 0.667915, 0.667737, 0.667963, 0.603963, 0.665981, 0.668052, 0.668006, 0.668007, 0.652525, 0.585315, - 0.66615, 0.665341, 0.6664, 0.591792, 0.659985, 0.666907, 0.666636, 0.66664, 0.638101, 0.577728, + 0.66615, 0.665341, 0.6664, 0.591792, 0.659985, 0.666907, 0.666636, 0.66664, 0.638101, 0.577728, 0.660409, 0.658471, 0.661057, 0.582484, 0.648575, 0.662479, 0.661698, 0.661709, 0.621887, 0.572305, - 0.649254, 0.646247, 0.650314, 0.575687, 0.633281, 0.652764, 0.651396, 0.651414, 0.60665, 0.568515, - 0.634083, 0.630598, 0.635357, 0.57087, 0.617117, 0.638404, 0.636684, 0.636707, 0.593922, 0.565907, - 0.617895, 0.614559, 0.619142, 0.567524, 0.602533, 0.622196, 0.62046, 0.620482, 0.584076, 0.564129, - 0.603195, 0.600379, 0.604265, 0.56523, 0.59067, 0.606921, 0.605404, 0.605423, 0.576832, 0.562925, - 0.591189, 0.588995, 0.592029, 0.56367, 0.581651, 0.594139, 0.59293, 0.592946, 0.571674, 0.562114, - 0.582036, 0.580415, 0.582661, 0.562616, 0.57509, 0.584239, 0.583333, 0.583345, 0.568079, 0.561569, + 0.649254, 0.646247, 0.650314, 0.575687, 0.633281, 0.652764, 0.651396, 0.651414, 0.60665, 0.568515, + 0.634083, 0.630598, 0.635357, 0.57087, 0.617117, 0.638404, 0.636684, 0.636707, 0.593922, 0.565907, + 0.617895, 0.614559, 0.619142, 0.567524, 0.602533, 0.622196, 0.62046, 0.620482, 0.584076, 0.564129, + 0.603195, 0.600379, 0.604265, 0.56523, 0.59067, 0.606921, 0.605404, 0.605423, 0.576832, 0.562925, + 0.591189, 0.588995, 0.592029, 0.56367, 0.581651, 0.594139, 0.59293, 0.592946, 0.571674, 0.562114, + 0.582036, 0.580415, 0.582661, 0.562616, 0.57509, 0.584239, 0.583333, 0.583345, 0.568079, 0.561569, 0.668139, 0.668063, 0.668139, 0.667082, 0.653793, 0.663397, 0.640434, 0.668175, 0.667092, 0.571849, 0.667538, 0.666978, 0.667544, 0.663011, 0.639734, 0.654459, 0.624289, 0.667925, 0.663042, 0.5682, - 0.664556, 0.66269, 0.664578, 0.653734, 0.623561, 0.640611, 0.608777, 0.666203, 0.653791, 0.565691, - 0.656765, 0.653146, 0.65681, 0.639656, 0.608128, 0.624474, 0.59563, 0.660545, 0.639731, 0.563983, - 0.643768, 0.638894, 0.643833, 0.62348, 0.595107, 0.608942, 0.585363, 0.649473, 0.623558, 0.562827, + 0.664556, 0.66269, 0.664578, 0.653734, 0.623561, 0.640611, 0.608777, 0.666203, 0.653791, 0.565691, + 0.656765, 0.653146, 0.65681, 0.639656, 0.608128, 0.624474, 0.59563, 0.660545, 0.639731, 0.563983, + 0.643768, 0.638894, 0.643833, 0.62348, 0.595107, 0.608942, 0.585363, 0.649473, 0.623558, 0.562827, 0.627845, 0.622696, 0.627915, 0.608056, 0.584968, 0.595763, 0.577763, 0.634345, 0.608125, 0.562048, - 0.611999, 0.607362, 0.612063, 0.595049, 0.577477, 0.585464, 0.572329, 0.61815, 0.595104, 0.561524, + 0.611999, 0.607362, 0.612063, 0.595049, 0.577477, 0.585464, 0.572329, 0.61815, 0.595104, 0.561524, 0.598256, 0.594491, 0.598309, 0.584924, 0.572127, 0.577836, 0.568532, 0.603413, 0.584966, 0.561173, 0.587362, 0.584504, 0.587403, 0.577445, 0.568392, 0.572381, 0.565918, 0.591359, 0.577475, 0.560938, 0.579218, 0.577141, 0.579248, 0.572105, 0.565823, 0.568568, 0.564137, 0.582163, 0.572127, 0.560781, - 0.668102, 0.668132, 0.66388, 0.667456, 0.657447, 0.606385, 0.667634, 0.620685, 0.668185, 0.668187, - 0.667244, 0.667485, 0.655394, 0.664256, 0.644744, 0.59371, 0.664921, 0.6056, 0.668088, 0.668142, - 0.663529, 0.664358, 0.641868, 0.656146, 0.628916, 0.583917, 0.65754, 0.593086, 0.667146, 0.667567, - 0.654712, 0.656356, 0.625799, 0.642901, 0.612988, 0.576717, 0.644878, 0.583449, 0.66321, 0.664664, - 0.640947, 0.643193, 0.610134, 0.626905, 0.599072, 0.571593, 0.629065, 0.57638, 0.654104, 0.656992, - 0.624826, 0.62722, 0.59673, 0.611138, 0.587988, 0.568023, 0.613126, 0.571356, 0.640142, 0.644091, - 0.609258, 0.611426, 0.586197, 0.59755, 0.579676, 0.56557, 0.599186, 0.567859, 0.623984, 0.628198, + 0.668102, 0.668132, 0.66388, 0.667456, 0.657447, 0.606385, 0.667634, 0.620685, 0.668185, 0.668187, + 0.667244, 0.667485, 0.655394, 0.664256, 0.644744, 0.59371, 0.664921, 0.6056, 0.668088, 0.668142, + 0.663529, 0.664358, 0.641868, 0.656146, 0.628916, 0.583917, 0.65754, 0.593086, 0.667146, 0.667567, + 0.654712, 0.656356, 0.625799, 0.642901, 0.612988, 0.576717, 0.644878, 0.583449, 0.66321, 0.664664, + 0.640947, 0.643193, 0.610134, 0.626905, 0.599072, 0.571593, 0.629065, 0.57638, 0.654104, 0.656992, + 0.624826, 0.62722, 0.59673, 0.611138, 0.587988, 0.568023, 0.613126, 0.571356, 0.640142, 0.644091, + 0.609258, 0.611426, 0.586197, 0.59755, 0.579676, 0.56557, 0.599186, 0.567859, 0.623984, 0.628198, 0.596018, 0.597785, 0.578369, 0.586822, 0.573683, 0.563901, 0.588076, 0.565458, 0.608505, 0.612324, - 0.585658, 0.587002, 0.572757, 0.578824, 0.569471, 0.562771, 0.57974, 0.563825, 0.59541, 0.598524, - 0.577977, 0.578955, 0.568828, 0.573079, 0.566562, 0.562011, 0.573728, 0.56272, 0.585197, 0.587567}, - std::vector{ - 0.559698, 0.587499, 0.58592, 0.563707, 0.587544, 0.56698, 0.571671, 0.571423, 0.579197, 0.585993, - 0.583768, 0.569262, 0.575267, 0.573003, 0.566785, 0.575539, 0.58546, 0.57339, 0.572642, 0.586082, - 0.582036, 0.580415, 0.582661, 0.562616, 0.57509, 0.584239, 0.583333, 0.583345, 0.568079, 0.561569, - 0.579218, 0.577141, 0.579248, 0.572105, 0.565823, 0.568568, 0.564137, 0.582163, 0.572127, 0.560781, - 0.577977, 0.578955, 0.568828, 0.573079, 0.566562, 0.562011, 0.573728, 0.56272, 0.585197, 0.587567}, - std::vector{ - 1.2132, 1.37242, 1.3621, 1.23365, 1.37271, 1.25089, 1.27652, 1.27513, 1.32014, 1.36258, - 1.34833, 1.26322, 1.29695, 1.284, 1.24985, 1.29853, 1.35913, 1.2862, 1.28197, 1.36315, - 1.33748, 1.32752, 1.34137, 1.22801, 1.29593, 1.35132, 1.34559, 1.34566, 1.25679, 1.22266, - 1.32026, 1.30789, 1.32044, 1.27895, 1.24474, 1.25944, 1.23589, 1.33827, 1.27907, 1.21865, - 1.31284, 1.31868, 1.26086, 1.28443, 1.24866, 1.22491, 1.28812, 1.22855, 1.35744, 1.37287}), + 0.585658, 0.587002, 0.572757, 0.578824, 0.569471, 0.562771, 0.57974, 0.563825, 0.59541, 0.598524, + 0.577977, 0.578955, 0.568828, 0.573079, 0.566562, 0.562011, 0.573728, 0.56272, 0.585197, 0.587567}, + std::vector{0.559698, 0.587499, 0.58592, 0.563707, 0.587544, 0.56698, 0.571671, 0.571423, 0.579197, + 0.585993, 0.583768, 0.569262, 0.575267, 0.573003, 0.566785, 0.575539, 0.58546, 0.57339, + 0.572642, 0.586082, 0.582036, 0.580415, 0.582661, 0.562616, 0.57509, 0.584239, 0.583333, + 0.583345, 0.568079, 0.561569, 0.579218, 0.577141, 0.579248, 0.572105, 0.565823, 0.568568, + 0.564137, 0.582163, 0.572127, 0.560781, 0.577977, 0.578955, 0.568828, 0.573079, 0.566562, + 0.562011, 0.573728, 0.56272, 0.585197, 0.587567}, + std::vector{1.2132, 1.37242, 1.3621, 1.23365, 1.37271, 1.25089, 1.27652, 1.27513, 1.32014, 1.36258, + 1.34833, 1.26322, 1.29695, 1.284, 1.24985, 1.29853, 1.35913, 1.2862, 1.28197, 1.36315, + 1.33748, 1.32752, 1.34137, 1.22801, 1.29593, 1.35132, 1.34559, 1.34566, 1.25679, 1.22266, + 1.32026, 1.30789, 1.32044, 1.27895, 1.24474, 1.25944, 1.23589, 1.33827, 1.27907, 1.21865, + 1.31284, 1.31868, 1.26086, 1.28443, 1.24866, 1.22491, 1.28812, 1.22855, 1.35744, 1.37287}), LSTMSequenceV1Params( - 5, 10, 10, 10, - 0.7f, false, op::RecurrentSequenceDirection::REVERSE, + 5, + 10, + 10, + 10, + 0.7f, + false, + op::RecurrentSequenceDirection::REVERSE, ET, std::vector{ - 1, 9.01139, 2.17637, 1.35784, 8.43793, 5.7887, 9.60679, 5.15734, 9.31364, 4.36529, - 2.39476, 9.03109, 1.24111, 3.62352, 4.5887, 8.2656, 6.64385, 9.17132, 6.00758, 8.55927, - 1.45439, 8.25611, 9.37734, 4.27627, 7.21853, 2.16383, 8.49418, 3.86518, 7.63482, 6.37093, - 4.27336, 8.15473, 7.28633, 8.39691, 9.09519, 8.48709, 9.18962, 9.77422, 6.90508, 8.30791, - 1.9247, 3.13776, 4.41411, 7.29312, 5.36451, 4.737, 6.74796, 7.83361, 6.01771, 7.2411, - 9.21933, 1.22152, 8.5364, 4.44885, 3.68894, 1.05667, 4.93802, 7.64144, 4.38184, 5.43925, - 1.12636, 3.24493, 4.12422, 8.17018, 9.44559, 1.9047, 7.61862, 9.78793, 7.35297, 9.56588, - 9.35063, 4.69028, 4.04285, 7.92198, 4.01183, 1.74418, 9.08702, 8.08601, 7.45719, 4.99591, - 7.75803, 6.92108, 4.24628, 4.40491, 6.84669, 1.50073, 1.70433, 1.82713, 8.24594, 1.58777, - 3.01887, 2.3692, 7.12532, 2.13363, 3.31622, 4.94171, 1.98701, 3.83109, 4.15659, 7.85029, - 1.88966, 9.38314, 3.93471, 4.83972, 3.43613, 8.09299, 5.07992, 1.74912, 1.63339, 3.96774, - 2.72895, 8.54079, 1.55517, 5.98811, 6.1355, 5.15899, 9.53946, 4.10297, 8.96004, 4.87936, - 9.95032, 8.20453, 9.4747, 4.41532, 4.64882, 3.58199, 5.05481, 7.886, 6.21909, 4.40311, - 6.60154, 7.65255, 9.22045, 5.78893, 5.66039, 1.92328, 2.09503, 6.79327, 5.01368, 1.68692, - 2.37312, 1.71557, 8.91434, 2.45326, 9.30656, 1.03221, 8.22342, 3.7318, 3.20279, 7.9139, - 7.33134, 8.97559, 9.21827, 3.0278, 4.79335, 2.49276, 2.89751, 8.55908, 9.23905, 7.13432, - 4.68331, 2.99916, 8.5177, 7.99063, 7.63611, 8.72832, 9.7526, 4.68963, 6.37313, 7.64598, - 3.40039, 7.8682, 9.37453, 8.8722, 2.04547, 9.7056, 3.72689, 6.48114, 2.50981, 8.72583, - 7.53753, 1.58606, 5.66289, 6.35937, 5.1213, 6.33018, 3.8751, 8.37849, 1.83465, 2.59183, - 2.98641, 5.26684, 9.25707, 9.92382, 6.43793, 9.28502, 4.29972, 1.07022, 6.89515, 2.51248, - 5.46812, 8.11724, 8.36165, 4.30087, 2.15868, 2.77405, 1.18806, 6.7019, 5.30756, 2.91198, - 3.38931, 2.69973, 9.00829, 7.44529, 1.61716, 3.21075, 9.2832, 2.84414, 5.19293, 7.86764, - 5.7913, 5.9592, 3.11618, 3.48381, 1.15161, 4.80193, 1.42298, 1.5328, 3.87086, 4.98756, - 2.51724, 3.71195, 5.04463, 5.25773, 7.33799, 7.30576, 6.34285, 9.75641, 6.9596, 8.90033, - 4.72902, 8.18267, 2.2418, 3.35014, 3.04117, 5.79207, 7.25244, 3.19579, 2.75589, 8.11128, - 4.64842, 4.91573, 6.63745, 7.10935, 4.88308, 3.6566, 9.97556, 2.77547, 6.02164, 5.25801, - 1.79881, 3.81268, 6.38811, 1.44305, 4.31185, 2.15409, 1.23393, 7.58904, 3.36874, 7.40332, - 7.09691, 8.38579, 8.11905, 6.45184, 5.53603, 4.87629, 1.90757, 5.37873, 4.60355, 6.28454, - 4.99743, 3.10531, 6.7079, 3.06309, 3.26306, 9.80713, 5.01942, 1.72799, 2.07818, 5.165, - 8.00637, 4.58645, 6.62034, 8.186, 5.45095, 1.33642, 7.47286, 7.24008, 3.83915, 8.52919, - 1.36359, 6.66642, 1.19573, 7.67591, 4.57269, 5.67623, 5.17782, 7.06703, 8.65317, 3.84445, - 3.84243, 2.50624, 7.1609, 8.36409, 2.64523, 1.31036, 5.58945, 8.00466, 6.54905, 9.4617, - 3.05165, 8.04617, 4.70239, 7.24866, 3.25719, 5.56595, 3.52864, 2.96697, 9.31387, 8.00382, - 3.33332, 3.04412, 8.14064, 2.59336, 3.64721, 8.35451, 5.01581, 8.64861, 9.45624, 2.77414, - 9.3333, 4.61045, 5.21279, 3.02345, 7.42243, 6.76596, 9.21848, 5.45899, 3.14613, 7.12242, - 6.83178, 7.91725, 6.55954, 7.36386, 7.03253, 5.3523, 9.22608, 1.25059, 9.13047, 5.01358, - 5.90091, 1.1757, 8.76586, 6.71301, 5.49807, 4.45839, 1.03715, 7.6203, 3.26509, 9.74689, - 1.83018, 5.18702, 6.68799, 4.48163, 2.42089, 5.30825, 5.84336, 9.5668, 7.15807, 5.12003, - 5.16425, 2.6135, 9.8642, 9.98883, 6.88379, 8.29995, 3.92791, 1.55486, 2.2537, 2.82402, - 1.36006, 7.34118, 2.78316, 3.29005, 8.66468, 6.91618, 8.25624, 3.83807, 8.26726, 8.96759, - 7.16978, 8.17155, 8.87641, 3.85817, 8.6441, 8.24388, 6.1418, 1.95616, 7.79479, 7.36882, - 2.6179, 8.65872, 8.42148, 9.20951, 8.70195, 2.93495, 4.03916, 1.35492, 3.11572, 2.12385, - 3.49692, 4.94849, 8.73938, 3.90629, 9.88792, 9.68755, 7.25734, 7.03253, 1.32517, 8.06911, - 5.75969, 7.05649, 4.8373, 1.3598, 6.80822, 6.11809, 7.34439, 7.33369, 3.03278, 9.86214, - 2.06297, 2.84922, 9.57812, 9.41124, 4.04918, 9.3727, 1.93448, 2.13315, 4.97116, 6.6088, - 6.47021, 2.53016, 3.99592, 2.34172, 9.62384, 1.58149, 2.05354, 5.14612, 4.35021, 9.56793, - 6.21989, 2.20648, 1.51876, 6.8966, 7.39606, 4.64265, 6.94228, 8.60179, 9.89539, 9.59615, - 7.603, 3.64753, 7.34614, 5.50653, 4.01763, 5.71267, 9.066, 9.4331, 5.01289, 7.5353, - 8.26267, 2.76396, 5.91656, 2.34152, 2.68611, 4.44968, 1.5141, 7.10457, 8.98883, 4.09502, - 3.31662, 2.07621, 4.61676, 4.031, 1.73292, 6.67114, 6.06446, 1.68369, 1.67308, 10}, - std::vector{ - 1, 5.58749, 2.65019, 8.27893, 9.44007, 1.26646, 8.06485, 2.4749, 4.90466, 6.16841, - 2.9532, 8.47611, 3.69586, 4.24748, 8.82421, 1.1096, 7.07798, 5.33121, 9.7954, 2.89868, - 2.92113, 9.4959, 3.93547, 9.87516, 4.936, 9.68846, 3.32138, 7.8397, 2.73004, 3.54654, - 7.92584, 1.07364, 4.17543, 3.10202, 4.46595, 1.98213, 4.66613, 4.64841, 7.93022, 8.57683, - 4.53797, 5.19696, 1.93621, 2.71692, 7.05413, 5.27169, 8.21389, 3.22891, 7.67315, 10}, - std::vector{ - 1, 2.13438, 5.72392, 9.79342, 4.95939, 5.88606, 6.28873, 1.5905, 7.75203, 6.46966, - 6.53091, 9.13469, 9.27454, 2.62106, 7.6413, 1.27291, 3.02471, 3.92884, 4.92038, 3.27424, - 4.38241, 3.92348, 8.37897, 7.96488, 3.12631, 1.32181, 4.02546, 8.84497, 3.27456, 8.2492, - 5.84422, 9.0774, 6.26614, 7.29545, 7.53335, 1.48872, 5.71874, 6.43082, 9.68644, 3.70349, - 3.64883, 9.97216, 5.6593, 7.06806, 5.38156, 4.63353, 4.82144, 1.5192, 8.87038, 10}, + 1, 9.01139, 2.17637, 1.35784, 8.43793, 5.7887, 9.60679, 5.15734, 9.31364, 4.36529, 2.39476, + 9.03109, 1.24111, 3.62352, 4.5887, 8.2656, 6.64385, 9.17132, 6.00758, 8.55927, 1.45439, 8.25611, + 9.37734, 4.27627, 7.21853, 2.16383, 8.49418, 3.86518, 7.63482, 6.37093, 4.27336, 8.15473, 7.28633, + 8.39691, 9.09519, 8.48709, 9.18962, 9.77422, 6.90508, 8.30791, 1.9247, 3.13776, 4.41411, 7.29312, + 5.36451, 4.737, 6.74796, 7.83361, 6.01771, 7.2411, 9.21933, 1.22152, 8.5364, 4.44885, 3.68894, + 1.05667, 4.93802, 7.64144, 4.38184, 5.43925, 1.12636, 3.24493, 4.12422, 8.17018, 9.44559, 1.9047, + 7.61862, 9.78793, 7.35297, 9.56588, 9.35063, 4.69028, 4.04285, 7.92198, 4.01183, 1.74418, 9.08702, + 8.08601, 7.45719, 4.99591, 7.75803, 6.92108, 4.24628, 4.40491, 6.84669, 1.50073, 1.70433, 1.82713, + 8.24594, 1.58777, 3.01887, 2.3692, 7.12532, 2.13363, 3.31622, 4.94171, 1.98701, 3.83109, 4.15659, + 7.85029, 1.88966, 9.38314, 3.93471, 4.83972, 3.43613, 8.09299, 5.07992, 1.74912, 1.63339, 3.96774, + 2.72895, 8.54079, 1.55517, 5.98811, 6.1355, 5.15899, 9.53946, 4.10297, 8.96004, 4.87936, 9.95032, + 8.20453, 9.4747, 4.41532, 4.64882, 3.58199, 5.05481, 7.886, 6.21909, 4.40311, 6.60154, 7.65255, + 9.22045, 5.78893, 5.66039, 1.92328, 2.09503, 6.79327, 5.01368, 1.68692, 2.37312, 1.71557, 8.91434, + 2.45326, 9.30656, 1.03221, 8.22342, 3.7318, 3.20279, 7.9139, 7.33134, 8.97559, 9.21827, 3.0278, + 4.79335, 2.49276, 2.89751, 8.55908, 9.23905, 7.13432, 4.68331, 2.99916, 8.5177, 7.99063, 7.63611, + 8.72832, 9.7526, 4.68963, 6.37313, 7.64598, 3.40039, 7.8682, 9.37453, 8.8722, 2.04547, 9.7056, + 3.72689, 6.48114, 2.50981, 8.72583, 7.53753, 1.58606, 5.66289, 6.35937, 5.1213, 6.33018, 3.8751, + 8.37849, 1.83465, 2.59183, 2.98641, 5.26684, 9.25707, 9.92382, 6.43793, 9.28502, 4.29972, 1.07022, + 6.89515, 2.51248, 5.46812, 8.11724, 8.36165, 4.30087, 2.15868, 2.77405, 1.18806, 6.7019, 5.30756, + 2.91198, 3.38931, 2.69973, 9.00829, 7.44529, 1.61716, 3.21075, 9.2832, 2.84414, 5.19293, 7.86764, + 5.7913, 5.9592, 3.11618, 3.48381, 1.15161, 4.80193, 1.42298, 1.5328, 3.87086, 4.98756, 2.51724, + 3.71195, 5.04463, 5.25773, 7.33799, 7.30576, 6.34285, 9.75641, 6.9596, 8.90033, 4.72902, 8.18267, + 2.2418, 3.35014, 3.04117, 5.79207, 7.25244, 3.19579, 2.75589, 8.11128, 4.64842, 4.91573, 6.63745, + 7.10935, 4.88308, 3.6566, 9.97556, 2.77547, 6.02164, 5.25801, 1.79881, 3.81268, 6.38811, 1.44305, + 4.31185, 2.15409, 1.23393, 7.58904, 3.36874, 7.40332, 7.09691, 8.38579, 8.11905, 6.45184, 5.53603, + 4.87629, 1.90757, 5.37873, 4.60355, 6.28454, 4.99743, 3.10531, 6.7079, 3.06309, 3.26306, 9.80713, + 5.01942, 1.72799, 2.07818, 5.165, 8.00637, 4.58645, 6.62034, 8.186, 5.45095, 1.33642, 7.47286, + 7.24008, 3.83915, 8.52919, 1.36359, 6.66642, 1.19573, 7.67591, 4.57269, 5.67623, 5.17782, 7.06703, + 8.65317, 3.84445, 3.84243, 2.50624, 7.1609, 8.36409, 2.64523, 1.31036, 5.58945, 8.00466, 6.54905, + 9.4617, 3.05165, 8.04617, 4.70239, 7.24866, 3.25719, 5.56595, 3.52864, 2.96697, 9.31387, 8.00382, + 3.33332, 3.04412, 8.14064, 2.59336, 3.64721, 8.35451, 5.01581, 8.64861, 9.45624, 2.77414, 9.3333, + 4.61045, 5.21279, 3.02345, 7.42243, 6.76596, 9.21848, 5.45899, 3.14613, 7.12242, 6.83178, 7.91725, + 6.55954, 7.36386, 7.03253, 5.3523, 9.22608, 1.25059, 9.13047, 5.01358, 5.90091, 1.1757, 8.76586, + 6.71301, 5.49807, 4.45839, 1.03715, 7.6203, 3.26509, 9.74689, 1.83018, 5.18702, 6.68799, 4.48163, + 2.42089, 5.30825, 5.84336, 9.5668, 7.15807, 5.12003, 5.16425, 2.6135, 9.8642, 9.98883, 6.88379, + 8.29995, 3.92791, 1.55486, 2.2537, 2.82402, 1.36006, 7.34118, 2.78316, 3.29005, 8.66468, 6.91618, + 8.25624, 3.83807, 8.26726, 8.96759, 7.16978, 8.17155, 8.87641, 3.85817, 8.6441, 8.24388, 6.1418, + 1.95616, 7.79479, 7.36882, 2.6179, 8.65872, 8.42148, 9.20951, 8.70195, 2.93495, 4.03916, 1.35492, + 3.11572, 2.12385, 3.49692, 4.94849, 8.73938, 3.90629, 9.88792, 9.68755, 7.25734, 7.03253, 1.32517, + 8.06911, 5.75969, 7.05649, 4.8373, 1.3598, 6.80822, 6.11809, 7.34439, 7.33369, 3.03278, 9.86214, + 2.06297, 2.84922, 9.57812, 9.41124, 4.04918, 9.3727, 1.93448, 2.13315, 4.97116, 6.6088, 6.47021, + 2.53016, 3.99592, 2.34172, 9.62384, 1.58149, 2.05354, 5.14612, 4.35021, 9.56793, 6.21989, 2.20648, + 1.51876, 6.8966, 7.39606, 4.64265, 6.94228, 8.60179, 9.89539, 9.59615, 7.603, 3.64753, 7.34614, + 5.50653, 4.01763, 5.71267, 9.066, 9.4331, 5.01289, 7.5353, 8.26267, 2.76396, 5.91656, 2.34152, + 2.68611, 4.44968, 1.5141, 7.10457, 8.98883, 4.09502, 3.31662, 2.07621, 4.61676, 4.031, 1.73292, + 6.67114, 6.06446, 1.68369, 1.67308, 10}, + std::vector{1, 5.58749, 2.65019, 8.27893, 9.44007, 1.26646, 8.06485, 2.4749, 4.90466, 6.16841, + 2.9532, 8.47611, 3.69586, 4.24748, 8.82421, 1.1096, 7.07798, 5.33121, 9.7954, 2.89868, + 2.92113, 9.4959, 3.93547, 9.87516, 4.936, 9.68846, 3.32138, 7.8397, 2.73004, 3.54654, + 7.92584, 1.07364, 4.17543, 3.10202, 4.46595, 1.98213, 4.66613, 4.64841, 7.93022, 8.57683, + 4.53797, 5.19696, 1.93621, 2.71692, 7.05413, 5.27169, 8.21389, 3.22891, 7.67315, 10}, + std::vector{1, 2.13438, 5.72392, 9.79342, 4.95939, 5.88606, 6.28873, 1.5905, 7.75203, 6.46966, + 6.53091, 9.13469, 9.27454, 2.62106, 7.6413, 1.27291, 3.02471, 3.92884, 4.92038, 3.27424, + 4.38241, 3.92348, 8.37897, 7.96488, 3.12631, 1.32181, 4.02546, 8.84497, 3.27456, 8.2492, + 5.84422, 9.0774, 6.26614, 7.29545, 7.53335, 1.48872, 5.71874, 6.43082, 9.68644, 3.70349, + 3.64883, 9.97216, 5.6593, 7.06806, 5.38156, 4.63353, 4.82144, 1.5192, 8.87038, 10}, std::vector{10, 10, 10, 10, 10}, std::vector{ - 1, 1.58235, 1.55715, 9.0725, 8.98434, 6.0259, 2.20956, 5.69598, 5.591, 6.22866, - 3.83043, 8.99042, 6.79015, 5.47362, 3.85033, 1.58001, 6.00399, 9.53966, 8.35195, 2.33561, - 1.43071, 1.10545, 8.23914, 6.88122, 6.16229, 8.65462, 6.19589, 6.19551, 6.01633, 1.76164, - 1.41133, 4.00032, 6.57013, 8.26936, 2.40101, 5.56064, 7.65621, 6.99739, 9.24985, 7.03113, - 5.93531, 6.88895, 7.564, 2.08789, 2.45067, 3.77189, 3.5213, 2.5474, 9.17393, 1.93798, - 4.21552, 4.85012, 3.77817, 2.85546, 3.31723, 4.22566, 8.43396, 6.62641, 9.08403, 9.44927, - 1.33493, 8.96543, 7.55197, 5.28736, 8.38082, 6.82582, 5.29947, 1.47086, 8.33883, 7.2491, - 3.31591, 8.50679, 8.86211, 9.69074, 3.66469, 2.50035, 6.15909, 5.2076, 6.19304, 7.92893, - 9.66382, 7.84886, 9.71917, 2.05874, 6.53135, 9.86027, 5.8924, 5.54567, 4.07782, 1.47401, - 8.71301, 1.85602, 2.73131, 8.98951, 9.9603, 4.3386, 2.81821, 4.36272, 8.3821, 6.64452, - 7.2118, 7.08588, 5.82932, 8.86502, 3.84654, 3.91562, 4.59225, 2.60513, 2.9141, 1.26067, - 9.29858, 9.185, 5.25551, 5.91884, 9.76741, 7.30087, 9.09672, 5.58644, 1.33538, 8.97838, - 8.66129, 8.42606, 6.67734, 5.21469, 3.2893, 7.15482, 6.68333, 6.23113, 1.40497, 3.50662, - 1.04018, 2.64265, 4.43901, 1.74996, 7.92567, 6.25056, 1.80776, 2.43364, 4.19004, 7.16324, - 8.38644, 7.33103, 3.31969, 7.42022, 7.87053, 8.559, 6.21006, 6.56629, 7.032, 5.21333, - 4.12916, 1.09792, 4.91183, 9.98769, 2.63651, 7.47683, 4.09084, 1.11776, 4.98008, 2.05417, - 3.81136, 3.78223, 8.9567, 3.69608, 9.82358, 4.15339, 1.55375, 2.58225, 5.35357, 9.96, - 2.63519, 8.34962, 1.67387, 6.97949, 1.52856, 6.16907, 7.26676, 3.61943, 7.54626, 7.8529, - 9.92461, 5.79463, 4.32859, 7.80883, 2.21124, 3.19625, 8.26345, 3.0258, 4.14905, 4.44074, - 4.40667, 4.3796, 2.65345, 7.52455, 7.24033, 8.20462, 2.70815, 2.24004, 9.89098, 3.3111, - 2.78455, 7.33025, 1.03654, 3.16342, 3.15485, 4.65602, 2.89809, 8.78445, 3.82711, 4.03929, - 5.06706, 7.46336, 2.99334, 6.76448, 5.71191, 5.12153, 5.43331, 1.77758, 6.66328, 3.8654, - 8.21078, 6.80763, 5.15698, 7.09883, 8.90826, 2.80116, 2.05896, 9.43922, 5.59127, 5.10843, - 5.39114, 4.77302, 6.52344, 5.95818, 7.42981, 7.35046, 8.61927, 3.56677, 6.74051, 2.3789, - 8.38043, 4.82216, 4.56786, 3.11453, 4.62395, 1.9779, 6.291, 4.57929, 2.53787, 8.10957, - 1.59414, 1.89001, 7.30965, 2.15147, 4.07816, 8.95942, 9.95274, 9.7535, 6.60151, 6.62482, - 8.13667, 5.02444, 8.33802, 9.46244, 1.53285, 4.86751, 9.00238, 3.6553, 6.14745, 9.38268, - 6.13151, 1.34703, 6.85186, 1.27094, 5.87562, 6.37423, 9.46726, 6.16143, 1.46485, 2.33172, - 4.72484, 2.58218, 8.77431, 2.26195, 2.80098, 6.5379, 9.76863, 2.67786, 1.50383, 9.24777, - 6.70801, 2.48443, 2.93425, 8.84472, 9.48241, 2.54342, 3.29629, 2.93909, 2.07659, 3.51105, - 8.05238, 6.52768, 2.89578, 9.46054, 9.42958, 4.99612, 3.72457, 1.09732, 5.46821, 8.3767, - 4.9284, 4.52297, 9.06671, 3.55751, 7.85551, 9.26148, 8.87619, 3.91563, 8.93108, 7.12851, - 7.38578, 6.00562, 9.88357, 5.96685, 7.98384, 7.18464, 2.08388, 4.19079, 7.13242, 5.10029, - 5.59207, 7.5696, 2.09462, 8.23487, 5.4306, 5.08607, 7.20121, 3.42059, 9.09514, 2.47813, - 7.56546, 3.04737, 4.75688, 6.15676, 5.44893, 6.38723, 5.49974, 9.74185, 2.04256, 6.03927, - 1.62865, 1.22683, 8.57313, 8.65697, 7.51196, 7.66841, 5.93585, 1.01738, 5.79587, 8.98536, - 5.72791, 4.97014, 1.33971, 9.76335, 9.01953, 3.47976, 3.0864, 9.17127, 7.85755, 8.21389, - 2.65647, 8.53283, 6.75763, 5.86692, 4.59959, 4.11153, 4.10978, 6.27941, 8.43579, 8.336, - 9.45283, 1.3166, 3.15401, 9.04877, 7.89529, 1.45832, 2.84421, 4.97627, 4.67164, 8.28176, - 9.46578, 2.64635, 3.16345, 1.4227, 5.32832, 9.22188, 8.92144, 6.89066, 2.86784, 10}, + 1, 1.58235, 1.55715, 9.0725, 8.98434, 6.0259, 2.20956, 5.69598, 5.591, 6.22866, 3.83043, + 8.99042, 6.79015, 5.47362, 3.85033, 1.58001, 6.00399, 9.53966, 8.35195, 2.33561, 1.43071, 1.10545, + 8.23914, 6.88122, 6.16229, 8.65462, 6.19589, 6.19551, 6.01633, 1.76164, 1.41133, 4.00032, 6.57013, + 8.26936, 2.40101, 5.56064, 7.65621, 6.99739, 9.24985, 7.03113, 5.93531, 6.88895, 7.564, 2.08789, + 2.45067, 3.77189, 3.5213, 2.5474, 9.17393, 1.93798, 4.21552, 4.85012, 3.77817, 2.85546, 3.31723, + 4.22566, 8.43396, 6.62641, 9.08403, 9.44927, 1.33493, 8.96543, 7.55197, 5.28736, 8.38082, 6.82582, + 5.29947, 1.47086, 8.33883, 7.2491, 3.31591, 8.50679, 8.86211, 9.69074, 3.66469, 2.50035, 6.15909, + 5.2076, 6.19304, 7.92893, 9.66382, 7.84886, 9.71917, 2.05874, 6.53135, 9.86027, 5.8924, 5.54567, + 4.07782, 1.47401, 8.71301, 1.85602, 2.73131, 8.98951, 9.9603, 4.3386, 2.81821, 4.36272, 8.3821, + 6.64452, 7.2118, 7.08588, 5.82932, 8.86502, 3.84654, 3.91562, 4.59225, 2.60513, 2.9141, 1.26067, + 9.29858, 9.185, 5.25551, 5.91884, 9.76741, 7.30087, 9.09672, 5.58644, 1.33538, 8.97838, 8.66129, + 8.42606, 6.67734, 5.21469, 3.2893, 7.15482, 6.68333, 6.23113, 1.40497, 3.50662, 1.04018, 2.64265, + 4.43901, 1.74996, 7.92567, 6.25056, 1.80776, 2.43364, 4.19004, 7.16324, 8.38644, 7.33103, 3.31969, + 7.42022, 7.87053, 8.559, 6.21006, 6.56629, 7.032, 5.21333, 4.12916, 1.09792, 4.91183, 9.98769, + 2.63651, 7.47683, 4.09084, 1.11776, 4.98008, 2.05417, 3.81136, 3.78223, 8.9567, 3.69608, 9.82358, + 4.15339, 1.55375, 2.58225, 5.35357, 9.96, 2.63519, 8.34962, 1.67387, 6.97949, 1.52856, 6.16907, + 7.26676, 3.61943, 7.54626, 7.8529, 9.92461, 5.79463, 4.32859, 7.80883, 2.21124, 3.19625, 8.26345, + 3.0258, 4.14905, 4.44074, 4.40667, 4.3796, 2.65345, 7.52455, 7.24033, 8.20462, 2.70815, 2.24004, + 9.89098, 3.3111, 2.78455, 7.33025, 1.03654, 3.16342, 3.15485, 4.65602, 2.89809, 8.78445, 3.82711, + 4.03929, 5.06706, 7.46336, 2.99334, 6.76448, 5.71191, 5.12153, 5.43331, 1.77758, 6.66328, 3.8654, + 8.21078, 6.80763, 5.15698, 7.09883, 8.90826, 2.80116, 2.05896, 9.43922, 5.59127, 5.10843, 5.39114, + 4.77302, 6.52344, 5.95818, 7.42981, 7.35046, 8.61927, 3.56677, 6.74051, 2.3789, 8.38043, 4.82216, + 4.56786, 3.11453, 4.62395, 1.9779, 6.291, 4.57929, 2.53787, 8.10957, 1.59414, 1.89001, 7.30965, + 2.15147, 4.07816, 8.95942, 9.95274, 9.7535, 6.60151, 6.62482, 8.13667, 5.02444, 8.33802, 9.46244, + 1.53285, 4.86751, 9.00238, 3.6553, 6.14745, 9.38268, 6.13151, 1.34703, 6.85186, 1.27094, 5.87562, + 6.37423, 9.46726, 6.16143, 1.46485, 2.33172, 4.72484, 2.58218, 8.77431, 2.26195, 2.80098, 6.5379, + 9.76863, 2.67786, 1.50383, 9.24777, 6.70801, 2.48443, 2.93425, 8.84472, 9.48241, 2.54342, 3.29629, + 2.93909, 2.07659, 3.51105, 8.05238, 6.52768, 2.89578, 9.46054, 9.42958, 4.99612, 3.72457, 1.09732, + 5.46821, 8.3767, 4.9284, 4.52297, 9.06671, 3.55751, 7.85551, 9.26148, 8.87619, 3.91563, 8.93108, + 7.12851, 7.38578, 6.00562, 9.88357, 5.96685, 7.98384, 7.18464, 2.08388, 4.19079, 7.13242, 5.10029, + 5.59207, 7.5696, 2.09462, 8.23487, 5.4306, 5.08607, 7.20121, 3.42059, 9.09514, 2.47813, 7.56546, + 3.04737, 4.75688, 6.15676, 5.44893, 6.38723, 5.49974, 9.74185, 2.04256, 6.03927, 1.62865, 1.22683, + 8.57313, 8.65697, 7.51196, 7.66841, 5.93585, 1.01738, 5.79587, 8.98536, 5.72791, 4.97014, 1.33971, + 9.76335, 9.01953, 3.47976, 3.0864, 9.17127, 7.85755, 8.21389, 2.65647, 8.53283, 6.75763, 5.86692, + 4.59959, 4.11153, 4.10978, 6.27941, 8.43579, 8.336, 9.45283, 1.3166, 3.15401, 9.04877, 7.89529, + 1.45832, 2.84421, 4.97627, 4.67164, 8.28176, 9.46578, 2.64635, 3.16345, 1.4227, 5.32832, 9.22188, + 8.92144, 6.89066, 2.86784, 10}, std::vector{ - 1, 4.54659, 6.32448, 5.40494, 9.86159, 9.07852, 3.05904, 9.77817, 3.49926, 7.63737, - 2.39762, 6.18958, 6.24331, 8.25735, 6.53109, 2.65972, 8.42707, 4.09645, 9.46241, 6.56499, - 7.61151, 2.11518, 8.1123, 4.51095, 5.13355, 8.57515, 7.48222, 8.91597, 2.26922, 1.67127, - 6.20972, 5.51447, 5.59529, 7.6583, 2.97689, 8.74954, 3.53749, 9.36144, 2.86963, 9.2585, - 3.89263, 1.92284, 4.57657, 7.99819, 9.3836, 1.19691, 3.23177, 7.07376, 9.90035, 9.54876, - 1.83406, 2.42544, 2.79611, 4.98123, 2.76576, 5.84942, 8.4264, 9.87311, 2.1547, 6.2748, - 4.04931, 4.64838, 7.61106, 4.25832, 2.01333, 6.23769, 7.10437, 7.40875, 9.62977, 9.96437, - 2.11365, 6.23564, 3.32097, 6.85371, 4.39948, 1.80143, 7.94896, 9.80996, 9.71046, 4.03104, - 8.86624, 9.06961, 1.76453, 6.6127, 3.70704, 8.67179, 6.1986, 2.6383, 9.37425, 2.02916, - 1.8428, 7.76668, 2.05601, 6.04629, 3.92551, 9.68333, 5.45613, 5.21474, 3.96363, 1.65678, - 1.63911, 1.51876, 4.37833, 1.04078, 9.77478, 1.27549, 6.44559, 4.64664, 8.92835, 9.88028, - 9.66077, 6.02858, 3.18563, 1.17797, 3.09603, 5.34818, 9.70473, 2.86306, 5.49366, 1.87064, - 7.23007, 7.76858, 2.00428, 2.48244, 7.78903, 7.90607, 8.06873, 2.52497, 2.49137, 2.61559, - 7.75215, 8.75981, 8.30843, 1.23805, 1.52846, 4.92311, 1.50707, 7.50994, 6.00506, 6.58755, - 2.16225, 5.52023, 5.58397, 1.84541, 8.86125, 8.83867, 1.16775, 7.64101, 6.51206, 9.81013, - 6.88963, 9.05285, 6.21656, 4.52452, 4.71779, 1.10079, 3.99572, 8.55103, 6.94, 5.69519, - 9.61978, 7.20197, 7.85556, 1.7112, 3.44624, 4.25074, 7.87477, 9.34275, 4.44811, 3.02249, - 3.0886, 6.17374, 6.47048, 5.63258, 8.19415, 8.7746, 9.22689, 1.18991, 1.6878, 5.10915, - 1.24905, 7.77101, 6.20286, 4.64343, 4.97444, 2.00702, 4.47644, 1.36942, 1.8044, 7.54883, - 7.56364, 2.33436, 4.36203, 7.75994, 3.35254, 1.30727, 8.72577, 6.31045, 1.73164, 3.10143, - 1.75297, 4.90549, 7.79632, 1.42155, 7.67554, 4.11003, 2.45134, 9.93904, 7.65293, 9.55969, - 9.49092, 1.16254, 5.35432, 5.68326, 2.68756, 9.79784, 8.90456, 4.41579, 3.77757, 6.9883, - 3.48931, 4.08603, 3.56546, 5.56486, 5.24488, 1.48558, 7.22185, 5.38926, 3.353, 8.21195, - 7.22835, 8.65753, 1.14195, 5.16396, 2.29447, 6.81389, 6.12026, 7.23296, 9.03696, 6.15992, - 6.61774, 7.49631, 6.15221, 8.23327, 3.52917, 4.44016, 7.59119, 7.20278, 7.87011, 7.4118, - 4.88929, 7.10041, 8.72445, 9.33136, 9.52693, 7.3276, 8.59106, 5.10541, 6.63513, 6.74733, - 8.23243, 4.2018, 8.18058, 4.31184, 2.65255, 3.67934, 8.10169, 4.09561, 9.69242, 5.3705, - 3.02728, 7.75847, 8.23799, 6.83668, 8.52236, 1.39545, 2.02494, 8.31176, 6.58431, 8.52873, - 7.90275, 5.75623, 6.849, 9.04106, 4.84783, 9.78142, 7.13852, 4.52031, 2.7178, 5.59408, - 8.57777, 9.67441, 7.0772, 5.94922, 2.19153, 2.92101, 5.97566, 4.4292, 5.06291, 4.20734, - 5.03142, 3.77804, 3.11829, 4.04353, 6.05138, 2.68516, 3.14739, 9.85841, 1.97082, 6.71148, - 7.21038, 6.83885, 8.15292, 7.97213, 2.2081, 6.63164, 4.6698, 4.86985, 8.82823, 1.55222, - 5.35014, 1.02844, 2.0888, 5.70194, 3.81421, 1.48773, 8.81108, 7.00017, 9.13739, 9.59582, - 1.4752, 2.15818, 5.04522, 7.42531, 5.22722, 9.60355, 7.67216, 8.76329, 4.73203, 5.84448, - 1.55273, 7.13586, 8.91209, 8.22101, 1.03308, 6.54954, 4.1324, 7.53138, 1.53171, 6.15368, - 4.95754, 6.49698, 9.4097, 4.49705, 1.16446, 1.08714, 5.33318, 7.10617, 4.72117, 3.7985, - 2.59871, 6.15397, 3.56235, 9.46913, 8.74236, 1.13157, 5.54921, 4.62576, 7.72262, 8.03736, - 8.69808, 2.61915, 5.70869, 6.4007, 8.62539, 9.05605, 1.76502, 8.7073, 6.7695, 6.44984, - 3.38996, 8.78573, 4.94558, 9.65115, 2.96345, 4.44614, 2.69691, 3.58606, 4.21715, 5.94832, - 7.18326, 7.90754, 6.07498, 3.91409, 3.49496, 7.76969, 6.89076, 8.57066, 5.35908, 10}, + 1, 4.54659, 6.32448, 5.40494, 9.86159, 9.07852, 3.05904, 9.77817, 3.49926, 7.63737, 2.39762, + 6.18958, 6.24331, 8.25735, 6.53109, 2.65972, 8.42707, 4.09645, 9.46241, 6.56499, 7.61151, 2.11518, + 8.1123, 4.51095, 5.13355, 8.57515, 7.48222, 8.91597, 2.26922, 1.67127, 6.20972, 5.51447, 5.59529, + 7.6583, 2.97689, 8.74954, 3.53749, 9.36144, 2.86963, 9.2585, 3.89263, 1.92284, 4.57657, 7.99819, + 9.3836, 1.19691, 3.23177, 7.07376, 9.90035, 9.54876, 1.83406, 2.42544, 2.79611, 4.98123, 2.76576, + 5.84942, 8.4264, 9.87311, 2.1547, 6.2748, 4.04931, 4.64838, 7.61106, 4.25832, 2.01333, 6.23769, + 7.10437, 7.40875, 9.62977, 9.96437, 2.11365, 6.23564, 3.32097, 6.85371, 4.39948, 1.80143, 7.94896, + 9.80996, 9.71046, 4.03104, 8.86624, 9.06961, 1.76453, 6.6127, 3.70704, 8.67179, 6.1986, 2.6383, + 9.37425, 2.02916, 1.8428, 7.76668, 2.05601, 6.04629, 3.92551, 9.68333, 5.45613, 5.21474, 3.96363, + 1.65678, 1.63911, 1.51876, 4.37833, 1.04078, 9.77478, 1.27549, 6.44559, 4.64664, 8.92835, 9.88028, + 9.66077, 6.02858, 3.18563, 1.17797, 3.09603, 5.34818, 9.70473, 2.86306, 5.49366, 1.87064, 7.23007, + 7.76858, 2.00428, 2.48244, 7.78903, 7.90607, 8.06873, 2.52497, 2.49137, 2.61559, 7.75215, 8.75981, + 8.30843, 1.23805, 1.52846, 4.92311, 1.50707, 7.50994, 6.00506, 6.58755, 2.16225, 5.52023, 5.58397, + 1.84541, 8.86125, 8.83867, 1.16775, 7.64101, 6.51206, 9.81013, 6.88963, 9.05285, 6.21656, 4.52452, + 4.71779, 1.10079, 3.99572, 8.55103, 6.94, 5.69519, 9.61978, 7.20197, 7.85556, 1.7112, 3.44624, + 4.25074, 7.87477, 9.34275, 4.44811, 3.02249, 3.0886, 6.17374, 6.47048, 5.63258, 8.19415, 8.7746, + 9.22689, 1.18991, 1.6878, 5.10915, 1.24905, 7.77101, 6.20286, 4.64343, 4.97444, 2.00702, 4.47644, + 1.36942, 1.8044, 7.54883, 7.56364, 2.33436, 4.36203, 7.75994, 3.35254, 1.30727, 8.72577, 6.31045, + 1.73164, 3.10143, 1.75297, 4.90549, 7.79632, 1.42155, 7.67554, 4.11003, 2.45134, 9.93904, 7.65293, + 9.55969, 9.49092, 1.16254, 5.35432, 5.68326, 2.68756, 9.79784, 8.90456, 4.41579, 3.77757, 6.9883, + 3.48931, 4.08603, 3.56546, 5.56486, 5.24488, 1.48558, 7.22185, 5.38926, 3.353, 8.21195, 7.22835, + 8.65753, 1.14195, 5.16396, 2.29447, 6.81389, 6.12026, 7.23296, 9.03696, 6.15992, 6.61774, 7.49631, + 6.15221, 8.23327, 3.52917, 4.44016, 7.59119, 7.20278, 7.87011, 7.4118, 4.88929, 7.10041, 8.72445, + 9.33136, 9.52693, 7.3276, 8.59106, 5.10541, 6.63513, 6.74733, 8.23243, 4.2018, 8.18058, 4.31184, + 2.65255, 3.67934, 8.10169, 4.09561, 9.69242, 5.3705, 3.02728, 7.75847, 8.23799, 6.83668, 8.52236, + 1.39545, 2.02494, 8.31176, 6.58431, 8.52873, 7.90275, 5.75623, 6.849, 9.04106, 4.84783, 9.78142, + 7.13852, 4.52031, 2.7178, 5.59408, 8.57777, 9.67441, 7.0772, 5.94922, 2.19153, 2.92101, 5.97566, + 4.4292, 5.06291, 4.20734, 5.03142, 3.77804, 3.11829, 4.04353, 6.05138, 2.68516, 3.14739, 9.85841, + 1.97082, 6.71148, 7.21038, 6.83885, 8.15292, 7.97213, 2.2081, 6.63164, 4.6698, 4.86985, 8.82823, + 1.55222, 5.35014, 1.02844, 2.0888, 5.70194, 3.81421, 1.48773, 8.81108, 7.00017, 9.13739, 9.59582, + 1.4752, 2.15818, 5.04522, 7.42531, 5.22722, 9.60355, 7.67216, 8.76329, 4.73203, 5.84448, 1.55273, + 7.13586, 8.91209, 8.22101, 1.03308, 6.54954, 4.1324, 7.53138, 1.53171, 6.15368, 4.95754, 6.49698, + 9.4097, 4.49705, 1.16446, 1.08714, 5.33318, 7.10617, 4.72117, 3.7985, 2.59871, 6.15397, 3.56235, + 9.46913, 8.74236, 1.13157, 5.54921, 4.62576, 7.72262, 8.03736, 8.69808, 2.61915, 5.70869, 6.4007, + 8.62539, 9.05605, 1.76502, 8.7073, 6.7695, 6.44984, 3.38996, 8.78573, 4.94558, 9.65115, 2.96345, + 4.44614, 2.69691, 3.58606, 4.21715, 5.94832, 7.18326, 7.90754, 6.07498, 3.91409, 3.49496, 7.76969, + 6.89076, 8.57066, 5.35908, 10}, + std::vector{1, 1.08809, 7.34367, 1.84401, 3.65, 7.04672, 9.90727, 2.28341, 8.40458, 4.26864, + 2.12786, 1.3584, 5.67691, 6.93083, 2.5351, 2.80941, 7.32406, 7.16185, 3.82714, 3.52963, + 9.8522, 7.2122, 7.36617, 6.03843, 8.64737, 6.82174, 6.17929, 7.25098, 9.065, 5.62021, + 2.05619, 9.89887, 5.70674, 3.66863, 8.63875, 7.11328, 5.15165, 3.11287, 5.59069, 10}, + std::vector{0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, + 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1}, std::vector{ - 1, 1.08809, 7.34367, 1.84401, 3.65, 7.04672, 9.90727, 2.28341, 8.40458, 4.26864, - 2.12786, 1.3584, 5.67691, 6.93083, 2.5351, 2.80941, 7.32406, 7.16185, 3.82714, 3.52963, - 9.8522, 7.2122, 7.36617, 6.03843, 8.64737, 6.82174, 6.17929, 7.25098, 9.065, 5.62021, - 2.05619, 9.89887, 5.70674, 3.66863, 8.63875, 7.11328, 5.15165, 3.11287, 5.59069, 10}, - std::vector{ - 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, - 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, - 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1}, - std::vector{ - 0.559698, 0.563643, 0.575276, 0.58701, 0.572904, 0.575772, 0.576994, 0.561768, 0.581308, 0.577538, - 0.559316, 0.56519, 0.581911, 0.597796, 0.578576, 0.582604, 0.584301, 0.562411, 0.590206, 0.585053, + 0.559698, 0.563643, 0.575276, 0.58701, 0.572904, 0.575772, 0.576994, 0.561768, 0.581308, 0.577538, + 0.559316, 0.56519, 0.581911, 0.597796, 0.578576, 0.582604, 0.584301, 0.562411, 0.590206, 0.585053, 0.558742, 0.567466, 0.591021, 0.611439, 0.586482, 0.591952, 0.594221, 0.563366, 0.601938, 0.595219, 0.557878, 0.570786, 0.602981, 0.627234, 0.597104, 0.604167, 0.607024, 0.564781, 0.616415, 0.608267, 0.556574, 0.575567, 0.617644, 0.643206, 0.610593, 0.619029, 0.622312, 0.566866, 0.632551, 0.623718, 0.554596, 0.582317, 0.633825, 0.656365, 0.626306, 0.635242, 0.638519, 0.569914, 0.647951, 0.639885, 0.551576, 0.591568, 0.649036, 0.664363, 0.642343, 0.650219, 0.652853, 0.574318, 0.659587, 0.653909, - 0.54692, 0.603678, 0.660274, 0.667486, 0.655742, 0.661, 0.662528, 0.58057, 0.665818, 0.663105, - 0.53964, 0.61846, 0.666097, 0.668132, 0.664056, 0.666378, 0.666924, 0.589205, 0.667845, 0.667113, - 0.528016, 0.634662, 0.667904, 0.668186, 0.6674, 0.667959, 0.668054, 0.60065, 0.668169, 0.668083, + 0.54692, 0.603678, 0.660274, 0.667486, 0.655742, 0.661, 0.662528, 0.58057, 0.665818, 0.663105, + 0.53964, 0.61846, 0.666097, 0.668132, 0.664056, 0.666378, 0.666924, 0.589205, 0.667845, 0.667113, + 0.528016, 0.634662, 0.667904, 0.668186, 0.6674, 0.667959, 0.668054, 0.60065, 0.668169, 0.668083, 0.577721, 0.585209, 0.585595, 0.565295, 0.580988, 0.560659, 0.566647, 0.569616, 0.572781, 0.567475, - 0.585306, 0.595426, 0.595935, 0.56762, 0.589773, 0.560757, 0.569596, 0.573891, 0.578403, 0.570799, - 0.595554, 0.608525, 0.609155, 0.57101, 0.601382, 0.560902, 0.573861, 0.579969, 0.586244, 0.575585, + 0.585306, 0.595426, 0.595935, 0.56762, 0.589773, 0.560757, 0.569596, 0.573891, 0.578403, 0.570799, + 0.595554, 0.608525, 0.609155, 0.57101, 0.601382, 0.560902, 0.573861, 0.579969, 0.586244, 0.575585, 0.608683, 0.624007, 0.624712, 0.575886, 0.615756, 0.561119, 0.579927, 0.588388, 0.596791, 0.582342, - 0.624184, 0.640163, 0.640838, 0.582762, 0.631861, 0.561444, 0.58833, 0.599592, 0.610209, 0.591601, - 0.640334, 0.654121, 0.65463, 0.592165, 0.647355, 0.561928, 0.599517, 0.613615, 0.625882, 0.60372, - 0.65425, 0.663218, 0.663487, 0.604436, 0.659202, 0.562648, 0.613525, 0.629591, 0.641946, 0.618509, + 0.624184, 0.640163, 0.640838, 0.582762, 0.631861, 0.561444, 0.58833, 0.599592, 0.610209, 0.591601, + 0.640334, 0.654121, 0.65463, 0.592165, 0.647355, 0.561928, 0.599517, 0.613615, 0.625882, 0.60372, + 0.65425, 0.663218, 0.663487, 0.604436, 0.659202, 0.562648, 0.613525, 0.629591, 0.641946, 0.618509, 0.663287, 0.667148, 0.667231, 0.619342, 0.665657, 0.563718, 0.629494, 0.645351, 0.655452, 0.634712, - 0.66717, 0.668088, 0.6681, 0.635559, 0.66781, 0.565301, 0.645264, 0.657865, 0.66391, 0.64978, - 0.668091, 0.668185, 0.668185, 0.65048, 0.668166, 0.567629, 0.657805, 0.665069, 0.667358, 0.660733, - 0.571076, 0.569599, 0.583098, 0.58192, 0.566985, 0.560831, 0.569929, 0.584406, 0.567476, 0.58273, - 0.57598, 0.573866, 0.592615, 0.591032, 0.570087, 0.561013, 0.57434, 0.59436, 0.5708, 0.592122, - 0.582893, 0.579934, 0.605006, 0.602996, 0.574566, 0.561285, 0.5806, 0.607198, 0.575587, 0.604382, - 0.592341, 0.58834, 0.620001, 0.617661, 0.580918, 0.561691, 0.589246, 0.622511, 0.582345, 0.619279, - 0.60466, 0.59953, 0.636224, 0.633842, 0.589678, 0.562296, 0.600703, 0.638713, 0.591605, 0.635496, + 0.66717, 0.668088, 0.6681, 0.635559, 0.66781, 0.565301, 0.645264, 0.657865, 0.66391, 0.64978, + 0.668091, 0.668185, 0.668185, 0.65048, 0.668166, 0.567629, 0.657805, 0.665069, 0.667358, 0.660733, + 0.571076, 0.569599, 0.583098, 0.58192, 0.566985, 0.560831, 0.569929, 0.584406, 0.567476, 0.58273, + 0.57598, 0.573866, 0.592615, 0.591032, 0.570087, 0.561013, 0.57434, 0.59436, 0.5708, 0.592122, + 0.582893, 0.579934, 0.605006, 0.602996, 0.574566, 0.561285, 0.5806, 0.607198, 0.575587, 0.604382, + 0.592341, 0.58834, 0.620001, 0.617661, 0.580918, 0.561691, 0.589246, 0.622511, 0.582345, 0.619279, + 0.60466, 0.59953, 0.636224, 0.633842, 0.589678, 0.562296, 0.600703, 0.638713, 0.591605, 0.635496, 0.619601, 0.613541, 0.651024, 0.649051, 0.601259, 0.563195, 0.614947, 0.653005, 0.603726, 0.650428, - 0.635821, 0.62951, 0.66148, 0.660283, 0.61561, 0.564528, 0.631009, 0.662612, 0.618515, 0.661126, - 0.650695, 0.645279, 0.666557, 0.6661, 0.631708, 0.566494, 0.64661, 0.666952, 0.634718, 0.666426, + 0.635821, 0.62951, 0.66148, 0.660283, 0.61561, 0.564528, 0.631009, 0.662612, 0.618515, 0.661126, + 0.650695, 0.645279, 0.666557, 0.6661, 0.631708, 0.566494, 0.64661, 0.666952, 0.634718, 0.666426, 0.661285, 0.657816, 0.667992, 0.667905, 0.647221, 0.569372, 0.658712, 0.668059, 0.649785, 0.667968, - 0.666485, 0.665047, 0.66818, 0.668173, 0.659115, 0.57354, 0.665446, 0.668183, 0.660736, 0.668178, - 0.575645, 0.585051, 0.576926, 0.579983, 0.580676, 0.561414, 0.57526, 0.577421, 0.58672, 0.568884, + 0.666485, 0.665047, 0.66818, 0.668173, 0.659115, 0.57354, 0.665446, 0.668183, 0.660736, 0.668178, + 0.575645, 0.585051, 0.576926, 0.579983, 0.580676, 0.561414, 0.57526, 0.577421, 0.58672, 0.568884, 0.582425, 0.595217, 0.584206, 0.588407, 0.589349, 0.561883, 0.581889, 0.584892, 0.597416, 0.572837, 0.591713, 0.608265, 0.594095, 0.599616, 0.600836, 0.562582, 0.590991, 0.595006, 0.610975, 0.578482, - 0.603863, 0.623715, 0.606867, 0.613644, 0.615105, 0.56362, 0.602943, 0.608002, 0.626726, 0.586353, - 0.618675, 0.639882, 0.622134, 0.629621, 0.631176, 0.565157, 0.617599, 0.62342, 0.642735, 0.596934, + 0.603863, 0.623715, 0.606867, 0.613644, 0.615105, 0.56362, 0.602943, 0.608002, 0.626726, 0.586353, + 0.618675, 0.639882, 0.622134, 0.629621, 0.631176, 0.565157, 0.617599, 0.62342, 0.642735, 0.596934, 0.634882, 0.653907, 0.638343, 0.645379, 0.646757, 0.567417, 0.633779, 0.639597, 0.656026, 0.610385, 0.649921, 0.663104, 0.652716, 0.657884, 0.658809, 0.570715, 0.648997, 0.653689, 0.664197, 0.626077, - 0.660819, 0.667112, 0.662452, 0.665078, 0.665489, 0.575465, 0.660249, 0.662987, 0.66744, 0.642128, + 0.660819, 0.667112, 0.662452, 0.665078, 0.665489, 0.575465, 0.660249, 0.662987, 0.66744, 0.642128, 0.666309, 0.668083, 0.666898, 0.667673, 0.667772, 0.582175, 0.666087, 0.667075, 0.668127, 0.655585, - 0.667946, 0.668185, 0.66805, 0.668153, 0.668162, 0.591376, 0.667902, 0.668077, 0.668186, 0.663977, - 0.568706, 0.587492, 0.575078, 0.579316, 0.574221, 0.571875, 0.572469, 0.56152, 0.584476, 0.587567, - 0.57258, 0.598426, 0.581634, 0.587496, 0.580432, 0.577119, 0.577962, 0.562042, 0.594454, 0.598524, + 0.667946, 0.668185, 0.66805, 0.668153, 0.668162, 0.591376, 0.667902, 0.668077, 0.668186, 0.663977, + 0.568706, 0.587492, 0.575078, 0.579316, 0.574221, 0.571875, 0.572469, 0.56152, 0.584476, 0.587567, + 0.57258, 0.598426, 0.581634, 0.587496, 0.580432, 0.577119, 0.577962, 0.562042, 0.594454, 0.598524, 0.578118, 0.612205, 0.590647, 0.598431, 0.589018, 0.584473, 0.585637, 0.562818, 0.607316, 0.612324, - 0.585852, 0.62807, 0.602503, 0.612212, 0.600409, 0.59445, 0.595992, 0.563969, 0.622644, 0.628198, - 0.596275, 0.643974, 0.617081, 0.628076, 0.614595, 0.60731, 0.609224, 0.565671, 0.638843, 0.644091, - 0.609574, 0.65691, 0.633244, 0.64398, 0.630636, 0.622637, 0.624789, 0.568171, 0.653106, 0.656992, + 0.585852, 0.62807, 0.602503, 0.612212, 0.600409, 0.59445, 0.595992, 0.563969, 0.622644, 0.628198, + 0.596275, 0.643974, 0.617081, 0.628076, 0.614595, 0.60731, 0.609224, 0.565671, 0.638843, 0.644091, + 0.609574, 0.65691, 0.633244, 0.64398, 0.630636, 0.622637, 0.624789, 0.568171, 0.653106, 0.656992, 0.625179, 0.664625, 0.648544, 0.656914, 0.646281, 0.638837, 0.640912, 0.571807, 0.662668, 0.664664, 0.641282, 0.667557, 0.659965, 0.664627, 0.658493, 0.653101, 0.654685, 0.577022, 0.666971, 0.667567, 0.654961, 0.668141, 0.665973, 0.667557, 0.665351, 0.662666, 0.663516, 0.584339, 0.668062, 0.668142, - 0.663659, 0.668187, 0.667878, 0.668141, 0.667739, 0.66697, 0.66724, 0.594272, 0.668184, 0.668187}, - std::vector{ - 0.559698, 0.563643, 0.575276, 0.58701, 0.572904, 0.575772, 0.576994, 0.561768, 0.581308, 0.577538, - 0.577721, 0.585209, 0.585595, 0.565295, 0.580988, 0.560659, 0.566647, 0.569616, 0.572781, 0.567475, - 0.571076, 0.569599, 0.583098, 0.58192, 0.566985, 0.560831, 0.569929, 0.584406, 0.567476, 0.58273, - 0.575645, 0.585051, 0.576926, 0.579983, 0.580676, 0.561414, 0.57526, 0.577421, 0.58672, 0.568884, - 0.568706, 0.587492, 0.575078, 0.579316, 0.574221, 0.571875, 0.572469, 0.56152, 0.584476, 0.587567}, - std::vector{ - 1.2132, 1.23332, 1.297, 1.3692, 1.28344, 1.29988, 1.30703, 1.22367, 1.33299, 1.31023, - 1.31132, 1.35752, 1.36, 1.24196, 1.33102, 1.21804, 1.24912, 1.26516, 1.28275, 1.25354, - 1.2732, 1.26506, 1.34411, 1.33676, 1.25092, 1.21891, 1.26687, 1.35238, 1.25355, 1.34181, - 1.29914, 1.3565, 1.30662, 1.32489, 1.32911, 1.22187, 1.29691, 1.30955, 1.3673, 1.26116, - 1.26019, 1.37237, 1.29586, 1.32085, 1.29093, 1.27766, 1.28099, 1.22241, 1.35283, 1.37287}), + 0.663659, 0.668187, 0.667878, 0.668141, 0.667739, 0.66697, 0.66724, 0.594272, 0.668184, 0.668187}, + std::vector{0.559698, 0.563643, 0.575276, 0.58701, 0.572904, 0.575772, 0.576994, 0.561768, 0.581308, + 0.577538, 0.577721, 0.585209, 0.585595, 0.565295, 0.580988, 0.560659, 0.566647, 0.569616, + 0.572781, 0.567475, 0.571076, 0.569599, 0.583098, 0.58192, 0.566985, 0.560831, 0.569929, + 0.584406, 0.567476, 0.58273, 0.575645, 0.585051, 0.576926, 0.579983, 0.580676, 0.561414, + 0.57526, 0.577421, 0.58672, 0.568884, 0.568706, 0.587492, 0.575078, 0.579316, 0.574221, + 0.571875, 0.572469, 0.56152, 0.584476, 0.587567}, + std::vector{1.2132, 1.23332, 1.297, 1.3692, 1.28344, 1.29988, 1.30703, 1.22367, 1.33299, 1.31023, + 1.31132, 1.35752, 1.36, 1.24196, 1.33102, 1.21804, 1.24912, 1.26516, 1.28275, 1.25354, + 1.2732, 1.26506, 1.34411, 1.33676, 1.25092, 1.21891, 1.26687, 1.35238, 1.25355, 1.34181, + 1.29914, 1.3565, 1.30662, 1.32489, 1.32911, 1.22187, 1.29691, 1.30955, 1.3673, 1.26116, + 1.26019, 1.37237, 1.29586, 1.32085, 1.29093, 1.27766, 1.28099, 1.22241, 1.35283, 1.37287}), LSTMSequenceV1Params( - 5, 10, 10, 5, - 0.7f, true, op::RecurrentSequenceDirection::BIDIRECTIONAL, + 5, + 10, + 10, + 5, + 0.7f, + true, + op::RecurrentSequenceDirection::BIDIRECTIONAL, ET, std::vector{ - 1, 9.01139, 2.17637, 1.35784, 8.43793, 5.7887, 9.60679, 5.15734, 9.31364, 4.36529, - 2.39476, 9.03109, 1.24111, 3.62352, 4.5887, 8.2656, 6.64385, 9.17132, 6.00758, 8.55927, - 1.45439, 8.25611, 9.37734, 4.27627, 7.21853, 2.16383, 8.49418, 3.86518, 7.63482, 6.37093, - 4.27336, 8.15473, 7.28633, 8.39691, 9.09519, 8.48709, 9.18962, 9.77422, 6.90508, 8.30791, - 1.9247, 3.13776, 4.41411, 7.29312, 5.36451, 4.737, 6.74796, 7.83361, 6.01771, 7.2411, - 9.21933, 1.22152, 8.5364, 4.44885, 3.68894, 1.05667, 4.93802, 7.64144, 4.38184, 5.43925, - 1.12636, 3.24493, 4.12422, 8.17018, 9.44559, 1.9047, 7.61862, 9.78793, 7.35297, 9.56588, - 9.35063, 4.69028, 4.04285, 7.92198, 4.01183, 1.74418, 9.08702, 8.08601, 7.45719, 4.99591, - 7.75803, 6.92108, 4.24628, 4.40491, 6.84669, 1.50073, 1.70433, 1.82713, 8.24594, 1.58777, - 3.01887, 2.3692, 7.12532, 2.13363, 3.31622, 4.94171, 1.98701, 3.83109, 4.15659, 7.85029, - 1.88966, 9.38314, 3.93471, 4.83972, 3.43613, 8.09299, 5.07992, 1.74912, 1.63339, 3.96774, - 2.72895, 8.54079, 1.55517, 5.98811, 6.1355, 5.15899, 9.53946, 4.10297, 8.96004, 4.87936, - 9.95032, 8.20453, 9.4747, 4.41532, 4.64882, 3.58199, 5.05481, 7.886, 6.21909, 4.40311, - 6.60154, 7.65255, 9.22045, 5.78893, 5.66039, 1.92328, 2.09503, 6.79327, 5.01368, 1.68692, - 2.37312, 1.71557, 8.91434, 2.45326, 9.30656, 1.03221, 8.22342, 3.7318, 3.20279, 7.9139, - 7.33134, 8.97559, 9.21827, 3.0278, 4.79335, 2.49276, 2.89751, 8.55908, 9.23905, 7.13432, - 4.68331, 2.99916, 8.5177, 7.99063, 7.63611, 8.72832, 9.7526, 4.68963, 6.37313, 7.64598, - 3.40039, 7.8682, 9.37453, 8.8722, 2.04547, 9.7056, 3.72689, 6.48114, 2.50981, 8.72583, - 7.53753, 1.58606, 5.66289, 6.35937, 5.1213, 6.33018, 3.8751, 8.37849, 1.83465, 2.59183, - 2.98641, 5.26684, 9.25707, 9.92382, 6.43793, 9.28502, 4.29972, 1.07022, 6.89515, 2.51248, - 5.46812, 8.11724, 8.36165, 4.30087, 2.15868, 2.77405, 1.18806, 6.7019, 5.30756, 2.91198, - 3.38931, 2.69973, 9.00829, 7.44529, 1.61716, 3.21075, 9.2832, 2.84414, 5.19293, 7.86764, - 5.7913, 5.9592, 3.11618, 3.48381, 1.15161, 4.80193, 1.42298, 1.5328, 3.87086, 4.98756, - 2.51724, 3.71195, 5.04463, 5.25773, 7.33799, 7.30576, 6.34285, 9.75641, 6.9596, 8.90033, - 4.72902, 8.18267, 2.2418, 3.35014, 3.04117, 5.79207, 7.25244, 3.19579, 2.75589, 10}, - std::vector{ - 1, 5.58749, 2.65019, 8.27893, 9.44007, 1.26646, 8.06485, 2.4749, 4.90466, 6.16841, - 2.9532, 8.47611, 3.69586, 4.24748, 8.82421, 1.1096, 7.07798, 5.33121, 9.7954, 2.89868, - 2.92113, 9.4959, 3.93547, 9.87516, 4.936, 9.68846, 3.32138, 7.8397, 2.73004, 3.54654, - 7.92584, 1.07364, 4.17543, 3.10202, 4.46595, 1.98213, 4.66613, 4.64841, 7.93022, 8.57683, - 4.53797, 5.19696, 1.93621, 2.71692, 7.05413, 5.27169, 8.21389, 3.22891, 7.67315, 7.06556, - 6.90317, 2.90659, 6.30619, 8.05291, 5.46056, 1.90711, 8.90894, 6.5506, 7.20546, 9.74475, - 4.7904, 1.6435, 2.71316, 3.03569, 1.44884, 2.59864, 6.0138, 9.62099, 9.54249, 5.42718, - 2.24859, 3.33714, 6.17442, 9.87063, 1.9562, 5.23073, 1.41973, 3.51415, 6.39872, 1.10723, - 1.04289, 1.14721, 4.65565, 2.58112, 1.91227, 4.84767, 7.09586, 5.69412, 3.94588, 5.92789, - 7.45168, 4.64152, 6.15237, 9.08577, 2.87424, 8.64111, 2.93614, 2.41379, 4.12032, 10}, - std::vector{ - 1, 2.13438, 5.72392, 9.79342, 4.95939, 5.88606, 6.28873, 1.5905, 7.75203, 6.46966, - 6.53091, 9.13469, 9.27454, 2.62106, 7.6413, 1.27291, 3.02471, 3.92884, 4.92038, 3.27424, - 4.38241, 3.92348, 8.37897, 7.96488, 3.12631, 1.32181, 4.02546, 8.84497, 3.27456, 8.2492, - 5.84422, 9.0774, 6.26614, 7.29545, 7.53335, 1.48872, 5.71874, 6.43082, 9.68644, 3.70349, - 3.64883, 9.97216, 5.6593, 7.06806, 5.38156, 4.63353, 4.82144, 1.5192, 8.87038, 9.06057, - 9.99976, 6.25004, 5.44209, 6.97974, 4.3708, 3.26893, 5.25793, 1.41232, 8.75483, 3.70018, - 3.66543, 5.15941, 5.0194, 8.57511, 3.55875, 6.72842, 3.43644, 3.55691, 8.33065, 1.02129, - 7.57898, 8.48318, 2.36557, 4.70784, 4.9721, 9.32466, 5.53333, 9.09969, 2.71381, 8.97326, - 4.91604, 2.48103, 8.44254, 8.4943, 3.80884, 9.94202, 3.91681, 5.81107, 8.72025, 5.34059, - 8.33047, 8.90756, 9.69971, 7.08959, 4.25775, 3.27698, 5.6478, 2.44651, 2.74736, 10}, + 1, 9.01139, 2.17637, 1.35784, 8.43793, 5.7887, 9.60679, 5.15734, 9.31364, 4.36529, 2.39476, + 9.03109, 1.24111, 3.62352, 4.5887, 8.2656, 6.64385, 9.17132, 6.00758, 8.55927, 1.45439, 8.25611, + 9.37734, 4.27627, 7.21853, 2.16383, 8.49418, 3.86518, 7.63482, 6.37093, 4.27336, 8.15473, 7.28633, + 8.39691, 9.09519, 8.48709, 9.18962, 9.77422, 6.90508, 8.30791, 1.9247, 3.13776, 4.41411, 7.29312, + 5.36451, 4.737, 6.74796, 7.83361, 6.01771, 7.2411, 9.21933, 1.22152, 8.5364, 4.44885, 3.68894, + 1.05667, 4.93802, 7.64144, 4.38184, 5.43925, 1.12636, 3.24493, 4.12422, 8.17018, 9.44559, 1.9047, + 7.61862, 9.78793, 7.35297, 9.56588, 9.35063, 4.69028, 4.04285, 7.92198, 4.01183, 1.74418, 9.08702, + 8.08601, 7.45719, 4.99591, 7.75803, 6.92108, 4.24628, 4.40491, 6.84669, 1.50073, 1.70433, 1.82713, + 8.24594, 1.58777, 3.01887, 2.3692, 7.12532, 2.13363, 3.31622, 4.94171, 1.98701, 3.83109, 4.15659, + 7.85029, 1.88966, 9.38314, 3.93471, 4.83972, 3.43613, 8.09299, 5.07992, 1.74912, 1.63339, 3.96774, + 2.72895, 8.54079, 1.55517, 5.98811, 6.1355, 5.15899, 9.53946, 4.10297, 8.96004, 4.87936, 9.95032, + 8.20453, 9.4747, 4.41532, 4.64882, 3.58199, 5.05481, 7.886, 6.21909, 4.40311, 6.60154, 7.65255, + 9.22045, 5.78893, 5.66039, 1.92328, 2.09503, 6.79327, 5.01368, 1.68692, 2.37312, 1.71557, 8.91434, + 2.45326, 9.30656, 1.03221, 8.22342, 3.7318, 3.20279, 7.9139, 7.33134, 8.97559, 9.21827, 3.0278, + 4.79335, 2.49276, 2.89751, 8.55908, 9.23905, 7.13432, 4.68331, 2.99916, 8.5177, 7.99063, 7.63611, + 8.72832, 9.7526, 4.68963, 6.37313, 7.64598, 3.40039, 7.8682, 9.37453, 8.8722, 2.04547, 9.7056, + 3.72689, 6.48114, 2.50981, 8.72583, 7.53753, 1.58606, 5.66289, 6.35937, 5.1213, 6.33018, 3.8751, + 8.37849, 1.83465, 2.59183, 2.98641, 5.26684, 9.25707, 9.92382, 6.43793, 9.28502, 4.29972, 1.07022, + 6.89515, 2.51248, 5.46812, 8.11724, 8.36165, 4.30087, 2.15868, 2.77405, 1.18806, 6.7019, 5.30756, + 2.91198, 3.38931, 2.69973, 9.00829, 7.44529, 1.61716, 3.21075, 9.2832, 2.84414, 5.19293, 7.86764, + 5.7913, 5.9592, 3.11618, 3.48381, 1.15161, 4.80193, 1.42298, 1.5328, 3.87086, 4.98756, 2.51724, + 3.71195, 5.04463, 5.25773, 7.33799, 7.30576, 6.34285, 9.75641, 6.9596, 8.90033, 4.72902, 8.18267, + 2.2418, 3.35014, 3.04117, 5.79207, 7.25244, 3.19579, 2.75589, 10}, + std::vector{1, 5.58749, 2.65019, 8.27893, 9.44007, 1.26646, 8.06485, 2.4749, 4.90466, 6.16841, + 2.9532, 8.47611, 3.69586, 4.24748, 8.82421, 1.1096, 7.07798, 5.33121, 9.7954, 2.89868, + 2.92113, 9.4959, 3.93547, 9.87516, 4.936, 9.68846, 3.32138, 7.8397, 2.73004, 3.54654, + 7.92584, 1.07364, 4.17543, 3.10202, 4.46595, 1.98213, 4.66613, 4.64841, 7.93022, 8.57683, + 4.53797, 5.19696, 1.93621, 2.71692, 7.05413, 5.27169, 8.21389, 3.22891, 7.67315, 7.06556, + 6.90317, 2.90659, 6.30619, 8.05291, 5.46056, 1.90711, 8.90894, 6.5506, 7.20546, 9.74475, + 4.7904, 1.6435, 2.71316, 3.03569, 1.44884, 2.59864, 6.0138, 9.62099, 9.54249, 5.42718, + 2.24859, 3.33714, 6.17442, 9.87063, 1.9562, 5.23073, 1.41973, 3.51415, 6.39872, 1.10723, + 1.04289, 1.14721, 4.65565, 2.58112, 1.91227, 4.84767, 7.09586, 5.69412, 3.94588, 5.92789, + 7.45168, 4.64152, 6.15237, 9.08577, 2.87424, 8.64111, 2.93614, 2.41379, 4.12032, 10}, + std::vector{1, 2.13438, 5.72392, 9.79342, 4.95939, 5.88606, 6.28873, 1.5905, 7.75203, 6.46966, + 6.53091, 9.13469, 9.27454, 2.62106, 7.6413, 1.27291, 3.02471, 3.92884, 4.92038, 3.27424, + 4.38241, 3.92348, 8.37897, 7.96488, 3.12631, 1.32181, 4.02546, 8.84497, 3.27456, 8.2492, + 5.84422, 9.0774, 6.26614, 7.29545, 7.53335, 1.48872, 5.71874, 6.43082, 9.68644, 3.70349, + 3.64883, 9.97216, 5.6593, 7.06806, 5.38156, 4.63353, 4.82144, 1.5192, 8.87038, 9.06057, + 9.99976, 6.25004, 5.44209, 6.97974, 4.3708, 3.26893, 5.25793, 1.41232, 8.75483, 3.70018, + 3.66543, 5.15941, 5.0194, 8.57511, 3.55875, 6.72842, 3.43644, 3.55691, 8.33065, 1.02129, + 7.57898, 8.48318, 2.36557, 4.70784, 4.9721, 9.32466, 5.53333, 9.09969, 2.71381, 8.97326, + 4.91604, 2.48103, 8.44254, 8.4943, 3.80884, 9.94202, 3.91681, 5.81107, 8.72025, 5.34059, + 8.33047, 8.90756, 9.69971, 7.08959, 4.25775, 3.27698, 5.6478, 2.44651, 2.74736, 10}, std::vector{5, 5, 5, 5, 5}, std::vector{ - 1, 1.58235, 1.55715, 9.0725, 8.98434, 6.0259, 2.20956, 5.69598, 5.591, 6.22866, - 3.83043, 8.99042, 6.79015, 5.47362, 3.85033, 1.58001, 6.00399, 9.53966, 8.35195, 2.33561, - 1.43071, 1.10545, 8.23914, 6.88122, 6.16229, 8.65462, 6.19589, 6.19551, 6.01633, 1.76164, - 1.41133, 4.00032, 6.57013, 8.26936, 2.40101, 5.56064, 7.65621, 6.99739, 9.24985, 7.03113, - 5.93531, 6.88895, 7.564, 2.08789, 2.45067, 3.77189, 3.5213, 2.5474, 9.17393, 1.93798, - 4.21552, 4.85012, 3.77817, 2.85546, 3.31723, 4.22566, 8.43396, 6.62641, 9.08403, 9.44927, - 1.33493, 8.96543, 7.55197, 5.28736, 8.38082, 6.82582, 5.29947, 1.47086, 8.33883, 7.2491, - 3.31591, 8.50679, 8.86211, 9.69074, 3.66469, 2.50035, 6.15909, 5.2076, 6.19304, 7.92893, - 9.66382, 7.84886, 9.71917, 2.05874, 6.53135, 9.86027, 5.8924, 5.54567, 4.07782, 1.47401, - 8.71301, 1.85602, 2.73131, 8.98951, 9.9603, 4.3386, 2.81821, 4.36272, 8.3821, 6.64452, - 7.2118, 7.08588, 5.82932, 8.86502, 3.84654, 3.91562, 4.59225, 2.60513, 2.9141, 1.26067, - 9.29858, 9.185, 5.25551, 5.91884, 9.76741, 7.30087, 9.09672, 5.58644, 1.33538, 8.97838, - 8.66129, 8.42606, 6.67734, 5.21469, 3.2893, 7.15482, 6.68333, 6.23113, 1.40497, 3.50662, - 1.04018, 2.64265, 4.43901, 1.74996, 7.92567, 6.25056, 1.80776, 2.43364, 4.19004, 7.16324, - 8.38644, 7.33103, 3.31969, 7.42022, 7.87053, 8.559, 6.21006, 6.56629, 7.032, 5.21333, - 4.12916, 1.09792, 4.91183, 9.98769, 2.63651, 7.47683, 4.09084, 1.11776, 4.98008, 2.05417, - 3.81136, 3.78223, 8.9567, 3.69608, 9.82358, 4.15339, 1.55375, 2.58225, 5.35357, 9.96, - 2.63519, 8.34962, 1.67387, 6.97949, 1.52856, 6.16907, 7.26676, 3.61943, 7.54626, 7.8529, - 9.92461, 5.79463, 4.32859, 7.80883, 2.21124, 3.19625, 8.26345, 3.0258, 4.14905, 4.44074, - 4.40667, 4.3796, 2.65345, 7.52455, 7.24033, 8.20462, 2.70815, 2.24004, 9.89098, 3.3111, - 2.78455, 7.33025, 1.03654, 3.16342, 3.15485, 4.65602, 2.89809, 8.78445, 3.82711, 4.03929, - 5.06706, 7.46336, 2.99334, 6.76448, 5.71191, 5.12153, 5.43331, 1.77758, 6.66328, 3.8654, - 8.21078, 6.80763, 5.15698, 7.09883, 8.90826, 2.80116, 2.05896, 9.43922, 5.59127, 5.10843, - 5.39114, 4.77302, 6.52344, 5.95818, 7.42981, 7.35046, 8.61927, 3.56677, 6.74051, 2.3789, - 8.38043, 4.82216, 4.56786, 3.11453, 4.62395, 1.9779, 6.291, 4.57929, 2.53787, 8.10957, - 1.59414, 1.89001, 7.30965, 2.15147, 4.07816, 8.95942, 9.95274, 9.7535, 6.60151, 6.62482, - 8.13667, 5.02444, 8.33802, 9.46244, 1.53285, 4.86751, 9.00238, 3.6553, 6.14745, 9.38268, - 6.13151, 1.34703, 6.85186, 1.27094, 5.87562, 6.37423, 9.46726, 6.16143, 1.46485, 2.33172, - 4.72484, 2.58218, 8.77431, 2.26195, 2.80098, 6.5379, 9.76863, 2.67786, 1.50383, 9.24777, - 6.70801, 2.48443, 2.93425, 8.84472, 9.48241, 2.54342, 3.29629, 2.93909, 2.07659, 3.51105, - 8.05238, 6.52768, 2.89578, 9.46054, 9.42958, 4.99612, 3.72457, 1.09732, 5.46821, 8.3767, - 4.9284, 4.52297, 9.06671, 3.55751, 7.85551, 9.26148, 8.87619, 3.91563, 8.93108, 7.12851, - 7.38578, 6.00562, 9.88357, 5.96685, 7.98384, 7.18464, 2.08388, 4.19079, 7.13242, 5.10029, - 5.59207, 7.5696, 2.09462, 8.23487, 5.4306, 5.08607, 7.20121, 3.42059, 9.09514, 2.47813, - 7.56546, 3.04737, 4.75688, 6.15676, 5.44893, 6.38723, 5.49974, 9.74185, 2.04256, 6.03927, - 1.62865, 1.22683, 8.57313, 8.65697, 7.51196, 7.66841, 5.93585, 1.01738, 5.79587, 8.98536, - 5.72791, 4.97014, 1.33971, 9.76335, 9.01953, 3.47976, 3.0864, 9.17127, 7.85755, 8.21389, - 2.65647, 8.53283, 6.75763, 5.86692, 4.59959, 4.11153, 4.10978, 6.27941, 8.43579, 8.336, - 9.45283, 1.3166, 3.15401, 9.04877, 7.89529, 1.45832, 2.84421, 4.97627, 4.67164, 8.28176, - 9.46578, 2.64635, 3.16345, 1.4227, 5.32832, 9.22188, 8.92144, 6.89066, 2.86784, 8.8094, - 3.84588, 1.23466, 9.78789, 1.42303, 3.01417, 9.11293, 4.56955, 3.41493, 8.52977, 1.46027, - 9.6304, 3.7595, 8.82851, 3.39647, 5.96831, 9.46836, 7.06139, 1.00386, 4.40682, 3.34827, - 4.47685, 6.86575, 7.61416, 6.26863, 7.95864, 9.60114, 3.60174, 2.12447, 5.49191, 5.58725, - 9.57542, 1.23677, 2.3244, 1.14875, 6.63691, 6.05344, 1.17406, 5.24456, 6.94052, 3.63667, - 6.6326, 7.56277, 8.43608, 6.25921, 8.02039, 1.0978, 5.06817, 8.34008, 3.511, 7.46162, - 7.85162, 8.85299, 7.65666, 3.49309, 3.28998, 9.05593, 6.38533, 5.95336, 3.44796, 6.04198, - 2.35335, 7.15819, 2.51471, 4.67303, 6.04976, 7.07969, 8.89531, 8.28522, 3.21776, 6.08729, - 3.63002, 6.91288, 8.43328, 9.77926, 2.00687, 6.17069, 7.84192, 6.11165, 7.56512, 6.71043, - 9.9949, 2.20909, 6.52124, 3.8416, 3.56753, 9.80769, 9.40458, 5.57479, 8.94376, 7.007, - 9.15643, 7.34537, 2.77838, 4.32169, 5.46074, 2.82916, 5.01243, 7.20892, 7.11125, 9.59418, - 4.04632, 9.70847, 9.16347, 9.22927, 5.53325, 1.07013, 9.42891, 2.02416, 8.10225, 3.57743, - 2.48204, 3.85673, 7.87652, 9.5724, 9.96488, 1.22926, 9.93237, 7.98604, 3.93368, 5.40463, - 8.27822, 9.25339, 8.12387, 9.82377, 5.85865, 9.73178, 8.74985, 6.61779, 5.20904, 2.06291, - 7.4461, 9.19566, 3.64798, 4.03986, 6.28108, 5.8935, 3.28368, 7.23357, 3.69042, 1.18574, - 2.97844, 4.92947, 6.3979, 5.05038, 9.67588, 8.6172, 9.25392, 7.47116, 9.72858, 2.39344, - 1.65939, 6.65531, 6.01121, 8.64874, 4.35918, 3.78387, 7.42273, 5.83712, 3.12879, 3.05836, - 1.83374, 4.63502, 4.31904, 7.06468, 5.90065, 9.69154, 1.78742, 5.74906, 4.37218, 3.95907, - 4.392, 2.80048, 3.14789, 7.02904, 3.02179, 6.69492, 2.01936, 6.49056, 5.4559, 8.08234, - 6.56281, 6.79647, 2.82158, 9.3293, 6.74985, 7.46573, 5.85924, 6.46302, 1.75108, 2.51813, - 4.0386, 4.23293, 8.95259, 9.31798, 6.29865, 2.13308, 6.6108, 7.12425, 1.61579, 2.58459, - 7.30912, 9.12349, 5.95058, 7.13723, 8.84, 9.7293, 9.66431, 5.26864, 1.00005, 6.20084, - 4.38823, 1.99631, 5.24372, 5.5035, 6.1096, 9.0086, 5.62153, 4.48418, 4.89917, 8.4891, - 6.06718, 6.09795, 5.61604, 4.05636, 7.16928, 2.85497, 1.87784, 4.09056, 1.19954, 3.65072, - 1.02866, 4.28399, 3.71394, 9.3255, 4.37615, 2.17663, 3.74709, 8.02241, 4.53525, 1.40447, - 3.20265, 8.01579, 5.0947, 8.39444, 6.70833, 1.97415, 2.69876, 7.17428, 5.09109, 4.61213, - 1.70647, 9.68497, 4.87501, 1.7283, 2.43997, 5.65806, 9.24942, 6.33399, 8.78482, 7.74617, - 1.39981, 2.79742, 7.02529, 3.34156, 8.11078, 3.08428, 3.9854, 4.30715, 4.98405, 1.10623, - 4.9921, 1.07542, 8.80374, 5.7398, 1.246, 4.76494, 4.82886, 7.94031, 9.49241, 4.36517, - 6.15431, 6.39414, 4.94161, 6.58667, 2.51963, 1.48029, 5.60639, 7.02553, 1.24623, 2.7569, - 3.87485, 1.45887, 5.81507, 1.29477, 8.10444, 2.09316, 7.38267, 8.64263, 3.0875, 4.03357, - 7.37073, 7.01626, 2.00842, 3.51386, 9.36265, 3.36725, 9.14829, 8.19237, 3.57092, 7.91152, - 8.00399, 6.64666, 4.91302, 5.85436, 2.76866, 8.73306, 3.07039, 4.64437, 1.0429, 1.19034, - 8.57202, 2.47873, 5.76703, 7.85474, 4.77875, 9.10824, 3.30109, 7.75884, 4.46161, 1.67611, - 6.95084, 4.45923, 9.98302, 4.35653, 4.57055, 1.62008, 8.52016, 8.87614, 2.9365, 9.98647, - 7.19558, 3.4473, 6.94256, 2.52838, 1.8037, 4.13277, 8.07921, 2.76578, 5.34165, 2.3978, - 5.00802, 2.44953, 2.21856, 2.5814, 8.93366, 2.55804, 9.74033, 5.7804, 6.50438, 2.19987, - 5.58994, 9.04511, 4.09384, 6.76115, 8.06394, 9.79993, 1.02129, 9.63807, 4.05821, 2.03345, - 9.2003, 8.09304, 2.76742, 6.32525, 3.01142, 2.35557, 8.09354, 9.66952, 7.11964, 5.88259, - 6.04748, 5.05317, 9.25398, 1.62705, 8.36628, 2.22643, 4.24874, 9.11405, 2.267, 8.49208, - 3.461, 5.52411, 8.69717, 1.3226, 1.44982, 4.06619, 4.39646, 6.37047, 6.59565, 10}, + 1, 1.58235, 1.55715, 9.0725, 8.98434, 6.0259, 2.20956, 5.69598, 5.591, 6.22866, 3.83043, + 8.99042, 6.79015, 5.47362, 3.85033, 1.58001, 6.00399, 9.53966, 8.35195, 2.33561, 1.43071, 1.10545, + 8.23914, 6.88122, 6.16229, 8.65462, 6.19589, 6.19551, 6.01633, 1.76164, 1.41133, 4.00032, 6.57013, + 8.26936, 2.40101, 5.56064, 7.65621, 6.99739, 9.24985, 7.03113, 5.93531, 6.88895, 7.564, 2.08789, + 2.45067, 3.77189, 3.5213, 2.5474, 9.17393, 1.93798, 4.21552, 4.85012, 3.77817, 2.85546, 3.31723, + 4.22566, 8.43396, 6.62641, 9.08403, 9.44927, 1.33493, 8.96543, 7.55197, 5.28736, 8.38082, 6.82582, + 5.29947, 1.47086, 8.33883, 7.2491, 3.31591, 8.50679, 8.86211, 9.69074, 3.66469, 2.50035, 6.15909, + 5.2076, 6.19304, 7.92893, 9.66382, 7.84886, 9.71917, 2.05874, 6.53135, 9.86027, 5.8924, 5.54567, + 4.07782, 1.47401, 8.71301, 1.85602, 2.73131, 8.98951, 9.9603, 4.3386, 2.81821, 4.36272, 8.3821, + 6.64452, 7.2118, 7.08588, 5.82932, 8.86502, 3.84654, 3.91562, 4.59225, 2.60513, 2.9141, 1.26067, + 9.29858, 9.185, 5.25551, 5.91884, 9.76741, 7.30087, 9.09672, 5.58644, 1.33538, 8.97838, 8.66129, + 8.42606, 6.67734, 5.21469, 3.2893, 7.15482, 6.68333, 6.23113, 1.40497, 3.50662, 1.04018, 2.64265, + 4.43901, 1.74996, 7.92567, 6.25056, 1.80776, 2.43364, 4.19004, 7.16324, 8.38644, 7.33103, 3.31969, + 7.42022, 7.87053, 8.559, 6.21006, 6.56629, 7.032, 5.21333, 4.12916, 1.09792, 4.91183, 9.98769, + 2.63651, 7.47683, 4.09084, 1.11776, 4.98008, 2.05417, 3.81136, 3.78223, 8.9567, 3.69608, 9.82358, + 4.15339, 1.55375, 2.58225, 5.35357, 9.96, 2.63519, 8.34962, 1.67387, 6.97949, 1.52856, 6.16907, + 7.26676, 3.61943, 7.54626, 7.8529, 9.92461, 5.79463, 4.32859, 7.80883, 2.21124, 3.19625, 8.26345, + 3.0258, 4.14905, 4.44074, 4.40667, 4.3796, 2.65345, 7.52455, 7.24033, 8.20462, 2.70815, 2.24004, + 9.89098, 3.3111, 2.78455, 7.33025, 1.03654, 3.16342, 3.15485, 4.65602, 2.89809, 8.78445, 3.82711, + 4.03929, 5.06706, 7.46336, 2.99334, 6.76448, 5.71191, 5.12153, 5.43331, 1.77758, 6.66328, 3.8654, + 8.21078, 6.80763, 5.15698, 7.09883, 8.90826, 2.80116, 2.05896, 9.43922, 5.59127, 5.10843, 5.39114, + 4.77302, 6.52344, 5.95818, 7.42981, 7.35046, 8.61927, 3.56677, 6.74051, 2.3789, 8.38043, 4.82216, + 4.56786, 3.11453, 4.62395, 1.9779, 6.291, 4.57929, 2.53787, 8.10957, 1.59414, 1.89001, 7.30965, + 2.15147, 4.07816, 8.95942, 9.95274, 9.7535, 6.60151, 6.62482, 8.13667, 5.02444, 8.33802, 9.46244, + 1.53285, 4.86751, 9.00238, 3.6553, 6.14745, 9.38268, 6.13151, 1.34703, 6.85186, 1.27094, 5.87562, + 6.37423, 9.46726, 6.16143, 1.46485, 2.33172, 4.72484, 2.58218, 8.77431, 2.26195, 2.80098, 6.5379, + 9.76863, 2.67786, 1.50383, 9.24777, 6.70801, 2.48443, 2.93425, 8.84472, 9.48241, 2.54342, 3.29629, + 2.93909, 2.07659, 3.51105, 8.05238, 6.52768, 2.89578, 9.46054, 9.42958, 4.99612, 3.72457, 1.09732, + 5.46821, 8.3767, 4.9284, 4.52297, 9.06671, 3.55751, 7.85551, 9.26148, 8.87619, 3.91563, 8.93108, + 7.12851, 7.38578, 6.00562, 9.88357, 5.96685, 7.98384, 7.18464, 2.08388, 4.19079, 7.13242, 5.10029, + 5.59207, 7.5696, 2.09462, 8.23487, 5.4306, 5.08607, 7.20121, 3.42059, 9.09514, 2.47813, 7.56546, + 3.04737, 4.75688, 6.15676, 5.44893, 6.38723, 5.49974, 9.74185, 2.04256, 6.03927, 1.62865, 1.22683, + 8.57313, 8.65697, 7.51196, 7.66841, 5.93585, 1.01738, 5.79587, 8.98536, 5.72791, 4.97014, 1.33971, + 9.76335, 9.01953, 3.47976, 3.0864, 9.17127, 7.85755, 8.21389, 2.65647, 8.53283, 6.75763, 5.86692, + 4.59959, 4.11153, 4.10978, 6.27941, 8.43579, 8.336, 9.45283, 1.3166, 3.15401, 9.04877, 7.89529, + 1.45832, 2.84421, 4.97627, 4.67164, 8.28176, 9.46578, 2.64635, 3.16345, 1.4227, 5.32832, 9.22188, + 8.92144, 6.89066, 2.86784, 8.8094, 3.84588, 1.23466, 9.78789, 1.42303, 3.01417, 9.11293, 4.56955, + 3.41493, 8.52977, 1.46027, 9.6304, 3.7595, 8.82851, 3.39647, 5.96831, 9.46836, 7.06139, 1.00386, + 4.40682, 3.34827, 4.47685, 6.86575, 7.61416, 6.26863, 7.95864, 9.60114, 3.60174, 2.12447, 5.49191, + 5.58725, 9.57542, 1.23677, 2.3244, 1.14875, 6.63691, 6.05344, 1.17406, 5.24456, 6.94052, 3.63667, + 6.6326, 7.56277, 8.43608, 6.25921, 8.02039, 1.0978, 5.06817, 8.34008, 3.511, 7.46162, 7.85162, + 8.85299, 7.65666, 3.49309, 3.28998, 9.05593, 6.38533, 5.95336, 3.44796, 6.04198, 2.35335, 7.15819, + 2.51471, 4.67303, 6.04976, 7.07969, 8.89531, 8.28522, 3.21776, 6.08729, 3.63002, 6.91288, 8.43328, + 9.77926, 2.00687, 6.17069, 7.84192, 6.11165, 7.56512, 6.71043, 9.9949, 2.20909, 6.52124, 3.8416, + 3.56753, 9.80769, 9.40458, 5.57479, 8.94376, 7.007, 9.15643, 7.34537, 2.77838, 4.32169, 5.46074, + 2.82916, 5.01243, 7.20892, 7.11125, 9.59418, 4.04632, 9.70847, 9.16347, 9.22927, 5.53325, 1.07013, + 9.42891, 2.02416, 8.10225, 3.57743, 2.48204, 3.85673, 7.87652, 9.5724, 9.96488, 1.22926, 9.93237, + 7.98604, 3.93368, 5.40463, 8.27822, 9.25339, 8.12387, 9.82377, 5.85865, 9.73178, 8.74985, 6.61779, + 5.20904, 2.06291, 7.4461, 9.19566, 3.64798, 4.03986, 6.28108, 5.8935, 3.28368, 7.23357, 3.69042, + 1.18574, 2.97844, 4.92947, 6.3979, 5.05038, 9.67588, 8.6172, 9.25392, 7.47116, 9.72858, 2.39344, + 1.65939, 6.65531, 6.01121, 8.64874, 4.35918, 3.78387, 7.42273, 5.83712, 3.12879, 3.05836, 1.83374, + 4.63502, 4.31904, 7.06468, 5.90065, 9.69154, 1.78742, 5.74906, 4.37218, 3.95907, 4.392, 2.80048, + 3.14789, 7.02904, 3.02179, 6.69492, 2.01936, 6.49056, 5.4559, 8.08234, 6.56281, 6.79647, 2.82158, + 9.3293, 6.74985, 7.46573, 5.85924, 6.46302, 1.75108, 2.51813, 4.0386, 4.23293, 8.95259, 9.31798, + 6.29865, 2.13308, 6.6108, 7.12425, 1.61579, 2.58459, 7.30912, 9.12349, 5.95058, 7.13723, 8.84, + 9.7293, 9.66431, 5.26864, 1.00005, 6.20084, 4.38823, 1.99631, 5.24372, 5.5035, 6.1096, 9.0086, + 5.62153, 4.48418, 4.89917, 8.4891, 6.06718, 6.09795, 5.61604, 4.05636, 7.16928, 2.85497, 1.87784, + 4.09056, 1.19954, 3.65072, 1.02866, 4.28399, 3.71394, 9.3255, 4.37615, 2.17663, 3.74709, 8.02241, + 4.53525, 1.40447, 3.20265, 8.01579, 5.0947, 8.39444, 6.70833, 1.97415, 2.69876, 7.17428, 5.09109, + 4.61213, 1.70647, 9.68497, 4.87501, 1.7283, 2.43997, 5.65806, 9.24942, 6.33399, 8.78482, 7.74617, + 1.39981, 2.79742, 7.02529, 3.34156, 8.11078, 3.08428, 3.9854, 4.30715, 4.98405, 1.10623, 4.9921, + 1.07542, 8.80374, 5.7398, 1.246, 4.76494, 4.82886, 7.94031, 9.49241, 4.36517, 6.15431, 6.39414, + 4.94161, 6.58667, 2.51963, 1.48029, 5.60639, 7.02553, 1.24623, 2.7569, 3.87485, 1.45887, 5.81507, + 1.29477, 8.10444, 2.09316, 7.38267, 8.64263, 3.0875, 4.03357, 7.37073, 7.01626, 2.00842, 3.51386, + 9.36265, 3.36725, 9.14829, 8.19237, 3.57092, 7.91152, 8.00399, 6.64666, 4.91302, 5.85436, 2.76866, + 8.73306, 3.07039, 4.64437, 1.0429, 1.19034, 8.57202, 2.47873, 5.76703, 7.85474, 4.77875, 9.10824, + 3.30109, 7.75884, 4.46161, 1.67611, 6.95084, 4.45923, 9.98302, 4.35653, 4.57055, 1.62008, 8.52016, + 8.87614, 2.9365, 9.98647, 7.19558, 3.4473, 6.94256, 2.52838, 1.8037, 4.13277, 8.07921, 2.76578, + 5.34165, 2.3978, 5.00802, 2.44953, 2.21856, 2.5814, 8.93366, 2.55804, 9.74033, 5.7804, 6.50438, + 2.19987, 5.58994, 9.04511, 4.09384, 6.76115, 8.06394, 9.79993, 1.02129, 9.63807, 4.05821, 2.03345, + 9.2003, 8.09304, 2.76742, 6.32525, 3.01142, 2.35557, 8.09354, 9.66952, 7.11964, 5.88259, 6.04748, + 5.05317, 9.25398, 1.62705, 8.36628, 2.22643, 4.24874, 9.11405, 2.267, 8.49208, 3.461, 5.52411, + 8.69717, 1.3226, 1.44982, 4.06619, 4.39646, 6.37047, 6.59565, 10}, std::vector{ - 1, 4.54659, 6.32448, 5.40494, 9.86159, 9.07852, 3.05904, 9.77817, 3.49926, 7.63737, - 2.39762, 6.18958, 6.24331, 8.25735, 6.53109, 2.65972, 8.42707, 4.09645, 9.46241, 6.56499, - 7.61151, 2.11518, 8.1123, 4.51095, 5.13355, 8.57515, 7.48222, 8.91597, 2.26922, 1.67127, - 6.20972, 5.51447, 5.59529, 7.6583, 2.97689, 8.74954, 3.53749, 9.36144, 2.86963, 9.2585, - 3.89263, 1.92284, 4.57657, 7.99819, 9.3836, 1.19691, 3.23177, 7.07376, 9.90035, 9.54876, - 1.83406, 2.42544, 2.79611, 4.98123, 2.76576, 5.84942, 8.4264, 9.87311, 2.1547, 6.2748, - 4.04931, 4.64838, 7.61106, 4.25832, 2.01333, 6.23769, 7.10437, 7.40875, 9.62977, 9.96437, - 2.11365, 6.23564, 3.32097, 6.85371, 4.39948, 1.80143, 7.94896, 9.80996, 9.71046, 4.03104, - 8.86624, 9.06961, 1.76453, 6.6127, 3.70704, 8.67179, 6.1986, 2.6383, 9.37425, 2.02916, - 1.8428, 7.76668, 2.05601, 6.04629, 3.92551, 9.68333, 5.45613, 5.21474, 3.96363, 1.65678, - 1.63911, 1.51876, 4.37833, 1.04078, 9.77478, 1.27549, 6.44559, 4.64664, 8.92835, 9.88028, - 9.66077, 6.02858, 3.18563, 1.17797, 3.09603, 5.34818, 9.70473, 2.86306, 5.49366, 1.87064, - 7.23007, 7.76858, 2.00428, 2.48244, 7.78903, 7.90607, 8.06873, 2.52497, 2.49137, 2.61559, - 7.75215, 8.75981, 8.30843, 1.23805, 1.52846, 4.92311, 1.50707, 7.50994, 6.00506, 6.58755, - 2.16225, 5.52023, 5.58397, 1.84541, 8.86125, 8.83867, 1.16775, 7.64101, 6.51206, 9.81013, - 6.88963, 9.05285, 6.21656, 4.52452, 4.71779, 1.10079, 3.99572, 8.55103, 6.94, 5.69519, - 9.61978, 7.20197, 7.85556, 1.7112, 3.44624, 4.25074, 7.87477, 9.34275, 4.44811, 3.02249, - 3.0886, 6.17374, 6.47048, 5.63258, 8.19415, 8.7746, 9.22689, 1.18991, 1.6878, 5.10915, - 1.24905, 7.77101, 6.20286, 4.64343, 4.97444, 2.00702, 4.47644, 1.36942, 1.8044, 7.54883, - 7.56364, 2.33436, 4.36203, 7.75994, 3.35254, 1.30727, 8.72577, 6.31045, 1.73164, 3.10143, - 1.75297, 4.90549, 7.79632, 1.42155, 7.67554, 4.11003, 2.45134, 9.93904, 7.65293, 9.55969, - 9.49092, 1.16254, 5.35432, 5.68326, 2.68756, 9.79784, 8.90456, 4.41579, 3.77757, 6.9883, - 3.48931, 4.08603, 3.56546, 5.56486, 5.24488, 1.48558, 7.22185, 5.38926, 3.353, 8.21195, - 7.22835, 8.65753, 1.14195, 5.16396, 2.29447, 6.81389, 6.12026, 7.23296, 9.03696, 6.15992, - 6.61774, 7.49631, 6.15221, 8.23327, 3.52917, 4.44016, 7.59119, 7.20278, 7.87011, 7.4118, - 4.88929, 7.10041, 8.72445, 9.33136, 9.52693, 7.3276, 8.59106, 5.10541, 6.63513, 6.74733, - 8.23243, 4.2018, 8.18058, 4.31184, 2.65255, 3.67934, 8.10169, 4.09561, 9.69242, 5.3705, - 3.02728, 7.75847, 8.23799, 6.83668, 8.52236, 1.39545, 2.02494, 8.31176, 6.58431, 8.52873, - 7.90275, 5.75623, 6.849, 9.04106, 4.84783, 9.78142, 7.13852, 4.52031, 2.7178, 5.59408, - 8.57777, 9.67441, 7.0772, 5.94922, 2.19153, 2.92101, 5.97566, 4.4292, 5.06291, 4.20734, - 5.03142, 3.77804, 3.11829, 4.04353, 6.05138, 2.68516, 3.14739, 9.85841, 1.97082, 6.71148, - 7.21038, 6.83885, 8.15292, 7.97213, 2.2081, 6.63164, 4.6698, 4.86985, 8.82823, 1.55222, - 5.35014, 1.02844, 2.0888, 5.70194, 3.81421, 1.48773, 8.81108, 7.00017, 9.13739, 9.59582, - 1.4752, 2.15818, 5.04522, 7.42531, 5.22722, 9.60355, 7.67216, 8.76329, 4.73203, 5.84448, - 1.55273, 7.13586, 8.91209, 8.22101, 1.03308, 6.54954, 4.1324, 7.53138, 1.53171, 6.15368, - 4.95754, 6.49698, 9.4097, 4.49705, 1.16446, 1.08714, 5.33318, 7.10617, 4.72117, 3.7985, - 2.59871, 6.15397, 3.56235, 9.46913, 8.74236, 1.13157, 5.54921, 4.62576, 7.72262, 8.03736, - 8.69808, 2.61915, 5.70869, 6.4007, 8.62539, 9.05605, 1.76502, 8.7073, 6.7695, 6.44984, - 3.38996, 8.78573, 4.94558, 9.65115, 2.96345, 4.44614, 2.69691, 3.58606, 4.21715, 5.94832, - 7.18326, 7.90754, 6.07498, 3.91409, 3.49496, 7.76969, 6.89076, 8.57066, 5.35908, 9.39983, - 4.72367, 5.7885, 5.50385, 5.60082, 6.13971, 6.75445, 4.19049, 1.55002, 2.17919, 4.86608, - 2.83434, 2.54872, 6.78346, 5.17315, 5.68842, 9.60461, 7.62238, 8.55562, 9.20677, 1.99981, - 5.2998, 1.78484, 1.25381, 3.41057, 4.2545, 8.49597, 6.98817, 4.90633, 7.60492, 9.93473, - 9.60203, 8.31804, 3.88664, 2.34239, 2.57365, 6.30953, 7.92014, 4.19319, 6.73355, 2.84212, - 7.38741, 3.73816, 3.77684, 4.04575, 4.62478, 9.56991, 6.35541, 8.23529, 7.66465, 5.89206, - 6.40386, 2.00967, 9.06787, 8.96033, 6.39315, 6.09508, 8.71021, 7.24184, 5.04831, 6.63348, - 7.41792, 8.8327, 7.9134, 5.5876, 7.79328, 7.87538, 5.41605, 2.74772, 3.88932, 7.89934, - 9.8233, 5.03149, 2.1468, 1.45979, 4.32571, 5.31263, 4.43767, 9.98486, 3.49411, 8.23258, - 5.19501, 5.87229, 2.6117, 1.36902, 1.22311, 2.73083, 2.61211, 9.50159, 7.23431, 6.90859, - 6.11484, 7.05027, 7.73243, 1.53322, 4.02925, 3.35174, 5.23253, 9.18545, 4.2252, 4.3851, - 5.4527, 8.23178, 7.43629, 5.49068, 3.10742, 6.21584, 3.57903, 7.43574, 4.15479, 4.90666, - 7.84751, 3.20987, 5.93707, 5.80065, 7.3108, 8.2003, 2.45924, 2.65312, 9.98448, 7.86027, - 4.41315, 1.29331, 6.86571, 9.36546, 6.37493, 2.67899, 1.42097, 6.94499, 4.97888, 8.32001, - 1.59289, 6.30954, 6.55959, 3.61335, 9.37199, 8.13811, 2.92084, 9.5581, 3.05901, 4.57234, - 6.70284, 5.98927, 5.8783, 5.00032, 5.46558, 5.609, 6.44573, 9.38336, 7.30968, 2.05593, - 2.70677, 3.13242, 2.30241, 6.14404, 5.85338, 7.28636, 4.81769, 9.25817, 2.41154, 6.88612, - 2.93221, 1.95278, 2.00515, 5.93273, 7.80319, 4.1318, 4.74696, 2.18834, 1.75543, 1.35063, - 6.294, 4.75432, 6.07164, 5.49934, 1.39722, 4.40799, 7.92895, 4.76634, 4.56078, 1.90916, - 7.00981, 2.50819, 6.31957, 3.46231, 2.75408, 5.33776, 5.67472, 4.72021, 8.5595, 3.42135, - 9.40977, 5.0546, 7.58948, 7.83337, 4.94762, 7.46493, 1.74705, 3.73444, 8.03541, 5.32388, - 1.99355, 7.29553, 7.27851, 9.03012, 1.43236, 2.39153, 2.41475, 3.99028, 3.46309, 4.02156, - 8.97672, 9.23768, 4.02787, 8.05564, 8.04031, 3.48179, 6.04413, 4.15226, 1.24342, 1.01373, - 1.82379, 7.45745, 9.19248, 3.87985, 4.5868, 1.71719, 2.50581, 2.41056, 9.03223, 5.30532, - 1.4033, 9.71298, 6.57269, 2.46664, 8.00804, 5.28823, 9.80983, 3.90576, 2.8259, 9.10474, - 1.03754, 9.21314, 5.31505, 2.49488, 7.36028, 2.5922, 5.87357, 7.79499, 3.27024, 3.66111, - 8.68053, 9.44535, 7.72449, 8.18736, 2.98887, 5.96881, 1.96588, 5.81309, 5.08468, 5.78022, - 3.48668, 1.16396, 5.56096, 7.47946, 6.94378, 5.22245, 6.63033, 9.72782, 7.27977, 2.82604, - 4.6663, 2.51966, 3.46937, 6.84506, 7.7865, 1.43957, 8.07416, 3.61659, 4.01118, 3.4731, - 9.81749, 6.91879, 8.72981, 5.55872, 6.12225, 1.3078, 3.71204, 7.14632, 1.45034, 6.46249, - 2.86946, 2.77546, 7.8614, 8.86595, 9.12923, 9.287, 3.09589, 7.65446, 7.24201, 7.03379, - 6.62077, 1.72055, 2.96869, 5.11422, 9.71284, 6.79057, 1.55773, 1.54237, 8.82527, 7.19741, - 9.51219, 6.03872, 3.71177, 3.04635, 5.78192, 7.2869, 9.19943, 8.73105, 2.6986, 8.51169, - 2.42288, 6.83215, 8.51947, 2.67462, 7.18716, 3.92524, 3.64838, 6.45243, 8.06931, 7.97245, - 7.70631, 8.17218, 2.62555, 3.87636, 6.24838, 2.62702, 3.4494, 9.96515, 7.14449, 8.13208, - 2.82945, 8.73997, 6.34161, 7.51236, 8.24821, 8.52709, 8.23385, 4.06273, 7.85741, 7.51928, - 3.33662, 9.07837, 6.40373, 6.78942, 7.70122, 6.72775, 9.35052, 1.78962, 5.69662, 9.55886, - 1.28139, 6.11816, 7.42325, 2.96934, 5.04452, 3.33527, 3.21557, 7.72912, 2.65684, 9.88658, - 2.13663, 6.46773, 3.83655, 6.00923, 8.59554, 5.53451, 3.37365, 7.61857, 6.51566, 6.2357, - 9.20489, 1.67264, 7.15646, 3.73925, 4.29553, 7.37171, 2.62476, 7.72404, 1.78335, 6.55747, - 4.85313, 2.12074, 8.00724, 2.16874, 8.1091, 1.97776, 3.19266, 8.89558, 6.5867, 10}, - std::vector{ - 1, 1.08809, 7.34367, 1.84401, 3.65, 7.04672, 9.90727, 2.28341, 8.40458, 4.26864, - 2.12786, 1.3584, 5.67691, 6.93083, 2.5351, 2.80941, 7.32406, 7.16185, 3.82714, 3.52963, - 9.8522, 7.2122, 7.36617, 6.03843, 8.64737, 6.82174, 6.17929, 7.25098, 9.065, 5.62021, - 2.05619, 9.89887, 5.70674, 3.66863, 8.63875, 7.11328, 5.15165, 3.11287, 5.59069, 3.56016, - 7.04003, 9.88518, 5.09578, 8.85682, 1.44654, 5.53915, 1.61339, 1.18572, 3.6579, 1.24913, - 6.82981, 6.45494, 8.94083, 8.33236, 9.24103, 7.20789, 9.35252, 8.34363, 7.27433, 8.89566, - 8.11744, 8.27532, 9.8568, 3.84764, 7.58856, 1.72907, 6.9287, 5.69146, 2.46782, 4.1626, - 7.37082, 4.00921, 6.75911, 6.68399, 7.11442, 9.12597, 4.31382, 5.93337, 4.63211, 10}, - std::vector{ - 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, - 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, - 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, - 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, - 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, - 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1}, + 1, 4.54659, 6.32448, 5.40494, 9.86159, 9.07852, 3.05904, 9.77817, 3.49926, 7.63737, 2.39762, + 6.18958, 6.24331, 8.25735, 6.53109, 2.65972, 8.42707, 4.09645, 9.46241, 6.56499, 7.61151, 2.11518, + 8.1123, 4.51095, 5.13355, 8.57515, 7.48222, 8.91597, 2.26922, 1.67127, 6.20972, 5.51447, 5.59529, + 7.6583, 2.97689, 8.74954, 3.53749, 9.36144, 2.86963, 9.2585, 3.89263, 1.92284, 4.57657, 7.99819, + 9.3836, 1.19691, 3.23177, 7.07376, 9.90035, 9.54876, 1.83406, 2.42544, 2.79611, 4.98123, 2.76576, + 5.84942, 8.4264, 9.87311, 2.1547, 6.2748, 4.04931, 4.64838, 7.61106, 4.25832, 2.01333, 6.23769, + 7.10437, 7.40875, 9.62977, 9.96437, 2.11365, 6.23564, 3.32097, 6.85371, 4.39948, 1.80143, 7.94896, + 9.80996, 9.71046, 4.03104, 8.86624, 9.06961, 1.76453, 6.6127, 3.70704, 8.67179, 6.1986, 2.6383, + 9.37425, 2.02916, 1.8428, 7.76668, 2.05601, 6.04629, 3.92551, 9.68333, 5.45613, 5.21474, 3.96363, + 1.65678, 1.63911, 1.51876, 4.37833, 1.04078, 9.77478, 1.27549, 6.44559, 4.64664, 8.92835, 9.88028, + 9.66077, 6.02858, 3.18563, 1.17797, 3.09603, 5.34818, 9.70473, 2.86306, 5.49366, 1.87064, 7.23007, + 7.76858, 2.00428, 2.48244, 7.78903, 7.90607, 8.06873, 2.52497, 2.49137, 2.61559, 7.75215, 8.75981, + 8.30843, 1.23805, 1.52846, 4.92311, 1.50707, 7.50994, 6.00506, 6.58755, 2.16225, 5.52023, 5.58397, + 1.84541, 8.86125, 8.83867, 1.16775, 7.64101, 6.51206, 9.81013, 6.88963, 9.05285, 6.21656, 4.52452, + 4.71779, 1.10079, 3.99572, 8.55103, 6.94, 5.69519, 9.61978, 7.20197, 7.85556, 1.7112, 3.44624, + 4.25074, 7.87477, 9.34275, 4.44811, 3.02249, 3.0886, 6.17374, 6.47048, 5.63258, 8.19415, 8.7746, + 9.22689, 1.18991, 1.6878, 5.10915, 1.24905, 7.77101, 6.20286, 4.64343, 4.97444, 2.00702, 4.47644, + 1.36942, 1.8044, 7.54883, 7.56364, 2.33436, 4.36203, 7.75994, 3.35254, 1.30727, 8.72577, 6.31045, + 1.73164, 3.10143, 1.75297, 4.90549, 7.79632, 1.42155, 7.67554, 4.11003, 2.45134, 9.93904, 7.65293, + 9.55969, 9.49092, 1.16254, 5.35432, 5.68326, 2.68756, 9.79784, 8.90456, 4.41579, 3.77757, 6.9883, + 3.48931, 4.08603, 3.56546, 5.56486, 5.24488, 1.48558, 7.22185, 5.38926, 3.353, 8.21195, 7.22835, + 8.65753, 1.14195, 5.16396, 2.29447, 6.81389, 6.12026, 7.23296, 9.03696, 6.15992, 6.61774, 7.49631, + 6.15221, 8.23327, 3.52917, 4.44016, 7.59119, 7.20278, 7.87011, 7.4118, 4.88929, 7.10041, 8.72445, + 9.33136, 9.52693, 7.3276, 8.59106, 5.10541, 6.63513, 6.74733, 8.23243, 4.2018, 8.18058, 4.31184, + 2.65255, 3.67934, 8.10169, 4.09561, 9.69242, 5.3705, 3.02728, 7.75847, 8.23799, 6.83668, 8.52236, + 1.39545, 2.02494, 8.31176, 6.58431, 8.52873, 7.90275, 5.75623, 6.849, 9.04106, 4.84783, 9.78142, + 7.13852, 4.52031, 2.7178, 5.59408, 8.57777, 9.67441, 7.0772, 5.94922, 2.19153, 2.92101, 5.97566, + 4.4292, 5.06291, 4.20734, 5.03142, 3.77804, 3.11829, 4.04353, 6.05138, 2.68516, 3.14739, 9.85841, + 1.97082, 6.71148, 7.21038, 6.83885, 8.15292, 7.97213, 2.2081, 6.63164, 4.6698, 4.86985, 8.82823, + 1.55222, 5.35014, 1.02844, 2.0888, 5.70194, 3.81421, 1.48773, 8.81108, 7.00017, 9.13739, 9.59582, + 1.4752, 2.15818, 5.04522, 7.42531, 5.22722, 9.60355, 7.67216, 8.76329, 4.73203, 5.84448, 1.55273, + 7.13586, 8.91209, 8.22101, 1.03308, 6.54954, 4.1324, 7.53138, 1.53171, 6.15368, 4.95754, 6.49698, + 9.4097, 4.49705, 1.16446, 1.08714, 5.33318, 7.10617, 4.72117, 3.7985, 2.59871, 6.15397, 3.56235, + 9.46913, 8.74236, 1.13157, 5.54921, 4.62576, 7.72262, 8.03736, 8.69808, 2.61915, 5.70869, 6.4007, + 8.62539, 9.05605, 1.76502, 8.7073, 6.7695, 6.44984, 3.38996, 8.78573, 4.94558, 9.65115, 2.96345, + 4.44614, 2.69691, 3.58606, 4.21715, 5.94832, 7.18326, 7.90754, 6.07498, 3.91409, 3.49496, 7.76969, + 6.89076, 8.57066, 5.35908, 9.39983, 4.72367, 5.7885, 5.50385, 5.60082, 6.13971, 6.75445, 4.19049, + 1.55002, 2.17919, 4.86608, 2.83434, 2.54872, 6.78346, 5.17315, 5.68842, 9.60461, 7.62238, 8.55562, + 9.20677, 1.99981, 5.2998, 1.78484, 1.25381, 3.41057, 4.2545, 8.49597, 6.98817, 4.90633, 7.60492, + 9.93473, 9.60203, 8.31804, 3.88664, 2.34239, 2.57365, 6.30953, 7.92014, 4.19319, 6.73355, 2.84212, + 7.38741, 3.73816, 3.77684, 4.04575, 4.62478, 9.56991, 6.35541, 8.23529, 7.66465, 5.89206, 6.40386, + 2.00967, 9.06787, 8.96033, 6.39315, 6.09508, 8.71021, 7.24184, 5.04831, 6.63348, 7.41792, 8.8327, + 7.9134, 5.5876, 7.79328, 7.87538, 5.41605, 2.74772, 3.88932, 7.89934, 9.8233, 5.03149, 2.1468, + 1.45979, 4.32571, 5.31263, 4.43767, 9.98486, 3.49411, 8.23258, 5.19501, 5.87229, 2.6117, 1.36902, + 1.22311, 2.73083, 2.61211, 9.50159, 7.23431, 6.90859, 6.11484, 7.05027, 7.73243, 1.53322, 4.02925, + 3.35174, 5.23253, 9.18545, 4.2252, 4.3851, 5.4527, 8.23178, 7.43629, 5.49068, 3.10742, 6.21584, + 3.57903, 7.43574, 4.15479, 4.90666, 7.84751, 3.20987, 5.93707, 5.80065, 7.3108, 8.2003, 2.45924, + 2.65312, 9.98448, 7.86027, 4.41315, 1.29331, 6.86571, 9.36546, 6.37493, 2.67899, 1.42097, 6.94499, + 4.97888, 8.32001, 1.59289, 6.30954, 6.55959, 3.61335, 9.37199, 8.13811, 2.92084, 9.5581, 3.05901, + 4.57234, 6.70284, 5.98927, 5.8783, 5.00032, 5.46558, 5.609, 6.44573, 9.38336, 7.30968, 2.05593, + 2.70677, 3.13242, 2.30241, 6.14404, 5.85338, 7.28636, 4.81769, 9.25817, 2.41154, 6.88612, 2.93221, + 1.95278, 2.00515, 5.93273, 7.80319, 4.1318, 4.74696, 2.18834, 1.75543, 1.35063, 6.294, 4.75432, + 6.07164, 5.49934, 1.39722, 4.40799, 7.92895, 4.76634, 4.56078, 1.90916, 7.00981, 2.50819, 6.31957, + 3.46231, 2.75408, 5.33776, 5.67472, 4.72021, 8.5595, 3.42135, 9.40977, 5.0546, 7.58948, 7.83337, + 4.94762, 7.46493, 1.74705, 3.73444, 8.03541, 5.32388, 1.99355, 7.29553, 7.27851, 9.03012, 1.43236, + 2.39153, 2.41475, 3.99028, 3.46309, 4.02156, 8.97672, 9.23768, 4.02787, 8.05564, 8.04031, 3.48179, + 6.04413, 4.15226, 1.24342, 1.01373, 1.82379, 7.45745, 9.19248, 3.87985, 4.5868, 1.71719, 2.50581, + 2.41056, 9.03223, 5.30532, 1.4033, 9.71298, 6.57269, 2.46664, 8.00804, 5.28823, 9.80983, 3.90576, + 2.8259, 9.10474, 1.03754, 9.21314, 5.31505, 2.49488, 7.36028, 2.5922, 5.87357, 7.79499, 3.27024, + 3.66111, 8.68053, 9.44535, 7.72449, 8.18736, 2.98887, 5.96881, 1.96588, 5.81309, 5.08468, 5.78022, + 3.48668, 1.16396, 5.56096, 7.47946, 6.94378, 5.22245, 6.63033, 9.72782, 7.27977, 2.82604, 4.6663, + 2.51966, 3.46937, 6.84506, 7.7865, 1.43957, 8.07416, 3.61659, 4.01118, 3.4731, 9.81749, 6.91879, + 8.72981, 5.55872, 6.12225, 1.3078, 3.71204, 7.14632, 1.45034, 6.46249, 2.86946, 2.77546, 7.8614, + 8.86595, 9.12923, 9.287, 3.09589, 7.65446, 7.24201, 7.03379, 6.62077, 1.72055, 2.96869, 5.11422, + 9.71284, 6.79057, 1.55773, 1.54237, 8.82527, 7.19741, 9.51219, 6.03872, 3.71177, 3.04635, 5.78192, + 7.2869, 9.19943, 8.73105, 2.6986, 8.51169, 2.42288, 6.83215, 8.51947, 2.67462, 7.18716, 3.92524, + 3.64838, 6.45243, 8.06931, 7.97245, 7.70631, 8.17218, 2.62555, 3.87636, 6.24838, 2.62702, 3.4494, + 9.96515, 7.14449, 8.13208, 2.82945, 8.73997, 6.34161, 7.51236, 8.24821, 8.52709, 8.23385, 4.06273, + 7.85741, 7.51928, 3.33662, 9.07837, 6.40373, 6.78942, 7.70122, 6.72775, 9.35052, 1.78962, 5.69662, + 9.55886, 1.28139, 6.11816, 7.42325, 2.96934, 5.04452, 3.33527, 3.21557, 7.72912, 2.65684, 9.88658, + 2.13663, 6.46773, 3.83655, 6.00923, 8.59554, 5.53451, 3.37365, 7.61857, 6.51566, 6.2357, 9.20489, + 1.67264, 7.15646, 3.73925, 4.29553, 7.37171, 2.62476, 7.72404, 1.78335, 6.55747, 4.85313, 2.12074, + 8.00724, 2.16874, 8.1091, 1.97776, 3.19266, 8.89558, 6.5867, 10}, + std::vector{1, 1.08809, 7.34367, 1.84401, 3.65, 7.04672, 9.90727, 2.28341, 8.40458, 4.26864, + 2.12786, 1.3584, 5.67691, 6.93083, 2.5351, 2.80941, 7.32406, 7.16185, 3.82714, 3.52963, + 9.8522, 7.2122, 7.36617, 6.03843, 8.64737, 6.82174, 6.17929, 7.25098, 9.065, 5.62021, + 2.05619, 9.89887, 5.70674, 3.66863, 8.63875, 7.11328, 5.15165, 3.11287, 5.59069, 3.56016, + 7.04003, 9.88518, 5.09578, 8.85682, 1.44654, 5.53915, 1.61339, 1.18572, 3.6579, 1.24913, + 6.82981, 6.45494, 8.94083, 8.33236, 9.24103, 7.20789, 9.35252, 8.34363, 7.27433, 8.89566, + 8.11744, 8.27532, 9.8568, 3.84764, 7.58856, 1.72907, 6.9287, 5.69146, 2.46782, 4.1626, + 7.37082, 4.00921, 6.75911, 6.68399, 7.11442, 9.12597, 4.31382, 5.93337, 4.63211, 10}, + std::vector{0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, + 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, + 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, + 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1}, std::vector{ 0.468216, 0.618468, 0.667762, 0.668186, 0.667005, 0.667845, 0.667987, 0.569274, 0.668159, 0.66803, - 0.436517, 0.573615, 0.664074, 0.668079, 0.66007, 0.664627, 0.6657, 0.520998, 0.667513, 0.666071, + 0.436517, 0.573615, 0.664074, 0.668079, 0.66007, 0.664627, 0.6657, 0.520998, 0.667513, 0.666071, 0.413202, 0.525179, 0.649639, 0.666531, 0.639151, 0.651328, 0.654893, 0.478152, 0.662603, 0.656241, 0.396648, 0.481646, 0.618295, 0.658034, 0.601404, 0.621309, 0.628053, 0.444053, 0.645491, 0.630768, 0.385148, 0.446733, 0.573404, 0.634552, 0.553825, 0.577138, 0.585828, 0.418653, 0.611283, 0.589475, - 0.590675, 0.628293, 0.629709, 0.46966, 0.609654, 0.401027, 0.487158, 0.521658, 0.552734, 0.497312, - 0.631646, 0.655014, 0.655722, 0.510668, 0.644485, 0.419431, 0.531691, 0.569965, 0.60041, 0.54341, - 0.656666, 0.665734, 0.66593, 0.558256, 0.662223, 0.445122, 0.580236, 0.615459, 0.638483, 0.591706, + 0.590675, 0.628293, 0.629709, 0.46966, 0.609654, 0.401027, 0.487158, 0.521658, 0.552734, 0.497312, + 0.631646, 0.655014, 0.655722, 0.510668, 0.644485, 0.419431, 0.531691, 0.569965, 0.60041, 0.54341, + 0.656666, 0.665734, 0.66593, 0.558256, 0.662223, 0.445122, 0.580236, 0.615459, 0.638483, 0.591706, 0.666183, 0.667991, 0.668015, 0.605382, 0.667443, 0.479548, 0.623757, 0.647998, 0.659784, 0.632394, - 0.668043, 0.668183, 0.668184, 0.641772, 0.668155, 0.522673, 0.652657, 0.66351, 0.666941, 0.657024, + 0.668043, 0.668183, 0.668184, 0.641772, 0.668155, 0.522673, 0.652657, 0.66351, 0.666941, 0.657024, 0.665632, 0.663477, 0.668175, 0.668166, 0.654609, 0.530933, 0.664075, 0.668181, 0.657029, 0.668173, - 0.654654, 0.647903, 0.667802, 0.66763, 0.627494, 0.486513, 0.649644, 0.667934, 0.632404, 0.667755, - 0.627581, 0.615297, 0.664341, 0.663266, 0.585088, 0.450492, 0.618303, 0.665272, 0.59172, 0.664032, - 0.585204, 0.56977, 0.650444, 0.647309, 0.536576, 0.423354, 0.573413, 0.653419, 0.543424, 0.649515, + 0.654654, 0.647903, 0.667802, 0.66763, 0.627494, 0.486513, 0.649644, 0.667934, 0.632404, 0.667755, + 0.627581, 0.615297, 0.664341, 0.663266, 0.585088, 0.450492, 0.618303, 0.665272, 0.59172, 0.664032, + 0.585204, 0.56977, 0.650444, 0.647309, 0.536576, 0.423354, 0.573413, 0.653419, 0.543424, 0.649515, 0.536694, 0.521472, 0.619718, 0.614293, 0.491353, 0.403801, 0.524983, 0.625194, 0.497325, 0.618077, 0.576187, 0.627698, 0.585362, 0.604275, 0.608023, 0.413104, 0.573282, 0.588705, 0.633605, 0.513641, - 0.620548, 0.654713, 0.627701, 0.641052, 0.643462, 0.436382, 0.618196, 0.6302, 0.657595, 0.561469, + 0.620548, 0.654713, 0.627701, 0.641052, 0.643462, 0.436382, 0.618196, 0.6302, 0.657595, 0.561469, 0.650907, 0.665649, 0.654715, 0.660863, 0.661828, 0.468037, 0.649583, 0.655964, 0.666422, 0.608212, - 0.664492, 0.667981, 0.66565, 0.667174, 0.667368, 0.508666, 0.664055, 0.665996, 0.668068, 0.643581, - 0.667825, 0.668183, 0.667981, 0.668136, 0.66815, 0.556073, 0.667759, 0.668022, 0.668186, 0.661874, - 0.661398, 0.668186, 0.667723, 0.668117, 0.667515, 0.66636, 0.666765, 0.560186, 0.668181, 0.668183, - 0.642374, 0.668095, 0.66383, 0.666946, 0.662609, 0.65735, 0.659013, 0.51245, 0.667939, 0.667978, + 0.664492, 0.667981, 0.66565, 0.667174, 0.667368, 0.508666, 0.664055, 0.665996, 0.668068, 0.643581, + 0.667825, 0.668183, 0.667981, 0.668136, 0.66815, 0.556073, 0.667759, 0.668022, 0.668186, 0.661874, + 0.661398, 0.668186, 0.667723, 0.668117, 0.667515, 0.66636, 0.666765, 0.560186, 0.668181, 0.668183, + 0.642374, 0.668095, 0.66383, 0.666946, 0.662609, 0.65735, 0.659013, 0.51245, 0.667939, 0.667978, 0.606315, 0.666698, 0.648921, 0.659806, 0.645507, 0.633083, 0.636719, 0.471112, 0.665316, 0.665624, 0.559309, 0.658727, 0.617043, 0.638534, 0.611309, 0.592663, 0.597827, 0.438701, 0.653566, 0.654623, 0.511639, 0.636078, 0.571877, 0.600486, 0.565051, 0.544415, 0.549923, 0.414776, 0.625475, 0.627521, 0.636308, 0.585028, 0.566575, 0.598958, 0.536327, 0.497101, 0.561873, 0.408877, 0.624184, 0.51352, - 0.65883, 0.627448, 0.612609, 0.637495, 0.584843, 0.54317, 0.608564, 0.430487, 0.652885, 0.561339, + 0.65883, 0.627448, 0.612609, 0.637495, 0.584843, 0.54317, 0.608564, 0.430487, 0.652885, 0.561339, 0.666722, 0.654586, 0.646298, 0.659355, 0.627308, 0.591478, 0.643802, 0.460154, 0.665112, 0.608099, - 0.668097, 0.665613, 0.662901, 0.666844, 0.654514, 0.632229, 0.661961, 0.49883, 0.667912, 0.643509, - 0.668186, 0.667977, 0.667567, 0.668108, 0.665593, 0.656946, 0.667394, 0.54513, 0.66818, 0.661847, + 0.668097, 0.665613, 0.662901, 0.666844, 0.654514, 0.632229, 0.661961, 0.49883, 0.667912, 0.643509, + 0.668186, 0.667977, 0.667567, 0.668108, 0.665593, 0.656946, 0.667394, 0.54513, 0.66818, 0.661847, 0.661547, 0.667282, 0.667096, 0.668178, 0.660535, 0.668076, 0.659185, 0.660516, 0.668175, 0.473006, 0.642746, 0.661391, 0.660491, 0.667864, 0.640257, 0.666507, 0.637108, 0.640212, 0.667785, 0.440135, 0.606897, 0.642355, 0.640151, 0.664764, 0.603065, 0.657937, 0.598393, 0.602997, 0.664228, 0.415812, 0.559969, 0.606286, 0.602906, 0.651762, 0.555663, 0.634343, 0.550536, 0.555588, 0.650103, 0.39848, - 0.51225, 0.559276, 0.555486, 0.6221, 0.508292, 0.594429, 0.503649, 0.508223, 0.619113, 0.386411, - 0.608718, 0.620998, 0.457879, 0.54662, 0.554179, 0.630205, 0.568834, 0.62793, 0.473801, 0.626594, + 0.51225, 0.559276, 0.555486, 0.6221, 0.508292, 0.594429, 0.503649, 0.508223, 0.619113, 0.386411, + 0.608718, 0.620998, 0.457879, 0.54662, 0.554179, 0.630205, 0.568834, 0.62793, 0.473801, 0.626594, 0.643899, 0.651157, 0.495954, 0.594746, 0.601725, 0.655966, 0.614515, 0.654831, 0.515734, 0.654148, - 0.661998, 0.664572, 0.541864, 0.634567, 0.639366, 0.665997, 0.64744, 0.665683, 0.563712, 0.665487, + 0.661998, 0.664572, 0.541864, 0.634567, 0.639366, 0.665997, 0.64744, 0.665683, 0.563712, 0.665487, 0.667401, 0.667837, 0.590227, 0.658041, 0.660161, 0.668022, 0.663313, 0.667985, 0.610158, 0.667961, 0.668152, 0.668177, 0.631318, 0.666532, 0.667025, 0.668184, 0.667638, 0.668183, 0.644798, 0.668182, - 0.666934, 0.636465, 0.668176, 0.668177, 0.6627, 0.668186, 0.663435, 0.667808, 0.66818, 0.667477, - 0.659751, 0.59746, 0.667824, 0.66784, 0.645753, 0.668092, 0.647783, 0.664381, 0.667904, 0.662402, + 0.666934, 0.636465, 0.668176, 0.668177, 0.6627, 0.668186, 0.663435, 0.667808, 0.66818, 0.667477, + 0.659751, 0.59746, 0.667824, 0.66784, 0.645753, 0.668092, 0.647783, 0.664381, 0.667904, 0.662402, 0.638407, 0.549527, 0.664483, 0.664596, 0.611711, 0.666671, 0.615095, 0.650567, 0.665048, 0.644956, 0.600299, 0.502744, 0.650882, 0.651231, 0.565521, 0.658614, 0.569527, 0.619937, 0.652675, 0.610413, - 0.552612, 0.463272, 0.620503, 0.621133, 0.517435, 0.635826, 0.52124, 0.575428, 0.62379, 0.564008, + 0.552612, 0.463272, 0.620503, 0.621133, 0.517435, 0.635826, 0.52124, 0.575428, 0.62379, 0.564008, 0.619111, 0.625883, 0.633724, 0.600854, 0.532704, 0.497421, 0.571602, 0.461671, 0.475281, 0.63631, - 0.650102, 0.653779, 0.65765, 0.638782, 0.581251, 0.543534, 0.616817, 0.500738, 0.517531, 0.658831, - 0.664228, 0.665379, 0.666436, 0.659912, 0.624548, 0.591824, 0.64879, 0.547281, 0.565623, 0.666723, - 0.667785, 0.667947, 0.668069, 0.66697, 0.653078, 0.632479, 0.663785, 0.595367, 0.611798, 0.668097, - 0.668175, 0.668182, 0.668186, 0.668119, 0.66517, 0.657065, 0.667716, 0.635005, 0.645806, 0.668186}, + 0.650102, 0.653779, 0.65765, 0.638782, 0.581251, 0.543534, 0.616817, 0.500738, 0.517531, 0.658831, + 0.664228, 0.665379, 0.666436, 0.659912, 0.624548, 0.591824, 0.64879, 0.547281, 0.565623, 0.666723, + 0.667785, 0.667947, 0.668069, 0.66697, 0.653078, 0.632479, 0.663785, 0.595367, 0.611798, 0.668097, + 0.668175, 0.668182, 0.668186, 0.668119, 0.66517, 0.657065, 0.667716, 0.635005, 0.645806, 0.668186}, std::vector{ 0.385148, 0.446733, 0.573404, 0.634552, 0.553825, 0.577138, 0.585828, 0.418653, 0.611283, 0.589475, - 0.590675, 0.628293, 0.629709, 0.46966, 0.609654, 0.401027, 0.487158, 0.521658, 0.552734, 0.497312, + 0.590675, 0.628293, 0.629709, 0.46966, 0.609654, 0.401027, 0.487158, 0.521658, 0.552734, 0.497312, 0.536694, 0.521472, 0.619718, 0.614293, 0.491353, 0.403801, 0.524983, 0.625194, 0.497325, 0.618077, 0.576187, 0.627698, 0.585362, 0.604275, 0.608023, 0.413104, 0.573282, 0.588705, 0.633605, 0.513641, 0.511639, 0.636078, 0.571877, 0.600486, 0.565051, 0.544415, 0.549923, 0.414776, 0.625475, 0.627521, 0.636308, 0.585028, 0.566575, 0.598958, 0.536327, 0.497101, 0.561873, 0.408877, 0.624184, 0.51352, - 0.51225, 0.559276, 0.555486, 0.6221, 0.508292, 0.594429, 0.503649, 0.508223, 0.619113, 0.386411, - 0.608718, 0.620998, 0.457879, 0.54662, 0.554179, 0.630205, 0.568834, 0.62793, 0.473801, 0.626594, - 0.552612, 0.463272, 0.620503, 0.621133, 0.517435, 0.635826, 0.52124, 0.575428, 0.62379, 0.564008, + 0.51225, 0.559276, 0.555486, 0.6221, 0.508292, 0.594429, 0.503649, 0.508223, 0.619113, 0.386411, + 0.608718, 0.620998, 0.457879, 0.54662, 0.554179, 0.630205, 0.568834, 0.62793, 0.473801, 0.626594, + 0.552612, 0.463272, 0.620503, 0.621133, 0.517435, 0.635826, 0.52124, 0.575428, 0.62379, 0.564008, 0.619111, 0.625883, 0.633724, 0.600854, 0.532704, 0.497421, 0.571602, 0.461671, 0.475281, 0.63631}, std::vector{ - 0.657064, 0.808159, 1.28627, 1.82832, 1.18444, 1.30787, 1.3615, 0.735716, 1.55641, 1.3856, - 1.39376, 1.74058, 1.7592, 0.872984, 1.54166, 0.693415, 0.926748, 1.04718, 1.17924, 0.959985, - 1.10759, 1.04646, 1.63992, 1.58476, 0.940282, 0.699929, 1.06005, 1.70199, 0.960028, 1.62263, - 1.3023, 1.73294, 1.3585, 1.4956, 1.52728, 0.722161, 1.28558, 1.38043, 1.81407, 1.01716, - 1.00988, 1.85212, 1.27767, 1.46531, 1.24067, 1.14104, 1.16607, 0.72622, 1.70537, 1.7307, - 1.8558, 1.35635, 1.24873, 1.45354, 1.10604, 0.959278, 1.22421, 0.711984, 1.68998, 1.01672, - 1.01209, 1.21108, 1.19243, 1.66604, 0.997881, 1.42007, 0.98159, 0.997636, 1.63348, 0.6599, - 1.53336, 1.6538, 0.838953, 1.15094, 1.18613, 1.76588, 1.26089, 1.73591, 0.885339, 1.71907, - 1.17867, 0.854332, 1.64838, 1.65528, 1.03119, 1.84811, 1.04557, 1.29788, 1.68537, 1.23522, - 1.63346, 1.71032, 1.81584, 1.46818, 1.09099, 0.960351, 1.27613, 0.849735, 0.889806, 1.85583}), + 0.657064, 0.808159, 1.28627, 1.82832, 1.18444, 1.30787, 1.3615, 0.735716, 1.55641, 1.3856, + 1.39376, 1.74058, 1.7592, 0.872984, 1.54166, 0.693415, 0.926748, 1.04718, 1.17924, 0.959985, + 1.10759, 1.04646, 1.63992, 1.58476, 0.940282, 0.699929, 1.06005, 1.70199, 0.960028, 1.62263, + 1.3023, 1.73294, 1.3585, 1.4956, 1.52728, 0.722161, 1.28558, 1.38043, 1.81407, 1.01716, + 1.00988, 1.85212, 1.27767, 1.46531, 1.24067, 1.14104, 1.16607, 0.72622, 1.70537, 1.7307, + 1.8558, 1.35635, 1.24873, 1.45354, 1.10604, 0.959278, 1.22421, 0.711984, 1.68998, 1.01672, + 1.01209, 1.21108, 1.19243, 1.66604, 0.997881, 1.42007, 0.98159, 0.997636, 1.63348, 0.6599, + 1.53336, 1.6538, 0.838953, 1.15094, 1.18613, 1.76588, 1.26089, 1.73591, 0.885339, 1.71907, + 1.17867, 0.854332, 1.64838, 1.65528, 1.03119, 1.84811, 1.04557, 1.29788, 1.68537, 1.23522, + 1.63346, 1.71032, 1.81584, 1.46818, 1.09099, 0.960351, 1.27613, 0.849735, 0.889806, 1.85583}), }; return params; } @@ -2595,761 +2723,730 @@ template std::vector generateV1ParamsBF16() { using T = typename element_type_traits::value_type; - std::vector params { + std::vector params{ LSTMSequenceV1Params( - 5, 10, 10, 10, - 0.7f, false, op::RecurrentSequenceDirection::FORWARD, + 5, + 10, + 10, + 10, + 0.7f, + false, + op::RecurrentSequenceDirection::FORWARD, ET, std::vector{ - 1, 9.375, 9, 3.84375, 2.17188, 2.65625, 1.35938, 2.84375, 8.4375, 6.125, - 5.78125, 6.375, 9.625, 9.625, 5.15625, 6.875, 9.3125, 7.75, 4.375, 6.875, - 2.39062, 7.71875, 9, 9.625, 1.23438, 1.07812, 3.625, 1.95312, 4.5625, 3.6875, - 8.25, 6.90625, 6.625, 8.25, 9.125, 8.875, 6, 9.625, 8.5, 7.5, - 1.45312, 6.78125, 8.25, 7.4375, 9.375, 5.1875, 4.25, 3.9375, 7.1875, 4.9375, - 2.15625, 7.5625, 8.5, 9.9375, 3.85938, 7.0625, 7.625, 8.125, 6.375, 2.53125, - 4.25, 1.23438, 8.125, 8.1875, 7.28125, 9.125, 8.375, 1.21875, 9.125, 5.4375, - 8.5, 5.75, 9.1875, 6.375, 9.75, 1.46875, 6.875, 9, 8.25, 7.5625, - 1.92188, 8.375, 3.125, 5.5, 4.40625, 8.25, 7.28125, 1.85938, 5.375, 2.96875, - 4.75, 3.32812, 6.75, 5.1875, 7.8125, 5.125, 6, 7.375, 7.25, 2.59375, - 9.25, 5.78125, 1.21875, 2.5, 8.5, 7.90625, 4.4375, 9.375, 3.6875, 6.5, - 1.05469, 2.34375, 4.9375, 5.40625, 7.625, 4.375, 4.375, 8.625, 5.4375, 9.1875, - 1.125, 4.4375, 3.25, 3.84375, 4.125, 6.125, 8.125, 2.6875, 9.4375, 2.125, - 1.90625, 7.1875, 7.625, 8.1875, 9.75, 6.15625, 7.34375, 9.75, 9.5625, 6.6875, - 9.375, 9, 4.6875, 5.4375, 4.03125, 4.15625, 7.9375, 7.4375, 4, 5.53125, - 1.74219, 3.03125, 9.0625, 3.20312, 8.0625, 8.125, 7.4375, 5.4375, 5, 9.25, - 7.75, 9.5, 6.90625, 5.8125, 4.25, 3.26562, 4.375, 7.5, 6.84375, 4.3125, - 1.5, 5.5, 1.70312, 3.03125, 1.82812, 4.1875, 8.25, 6.84375, 1.58594, 3.8125, - 3.01562, 7.90625, 2.375, 8, 7.125, 8.625, 2.125, 9.5, 3.3125, 1.96875, - 4.9375, 9.1875, 1.98438, 4, 3.82812, 8.375, 4.15625, 9.0625, 7.84375, 1.38281, - 1.89062, 2.75, 9.375, 3.65625, 3.9375, 6.625, 4.8125, 1.77344, 3.4375, 2.28125, - 8.0625, 5.625, 5.0625, 7.1875, 1.75, 8.6875, 1.63281, 6.8125, 3.96875, 6.25, - 2.71875, 7.375, 8.5, 3.26562, 1.55469, 9.125, 6, 4.96875, 6.125, 1.1875, - 5.15625, 9.625, 9.5, 6.875, 4.09375, 5.625, 8.9375, 7.125, 4.875, 5.375, - 9.9375, 9.3125, 8.1875, 5.625, 9.5, 1.64844, 4.40625, 6.09375, 4.625, 6.53125, - 3.57812, 9.5, 5.0625, 4.75, 7.875, 3.375, 6.21875, 1.875, 4.375, 5.375, - 6.59375, 5.1875, 7.625, 1.26562, 9.25, 7.25, 5.78125, 7.4375, 5.65625, 7.5625, - 1.92188, 4.71875, 2.09375, 1.13281, 6.78125, 9.125, 5, 8.125, 1.6875, 2.48438, - 2.375, 3.8125, 1.71875, 6.5, 8.875, 4.25, 2.45312, 2.40625, 9.25, 2.59375, - 1.03125, 8.75, 8.25, 3.60938, 3.71875, 6.25, 3.1875, 5.0625, 7.90625, 4.6875, - 7.3125, 8.9375, 9, 7.21875, 9.1875, 3.5, 3.03125, 1.57812, 4.78125, 2.78125, - 2.5, 9.375, 2.89062, 8.6875, 8.5, 9.5625, 9.25, 1.46875, 7.125, 6.1875, - 4.6875, 5.3125, 3, 1.19531, 8.5, 4.375, 8, 4.71875, 7.625, 6.4375, - 8.75, 7.03125, 9.75, 8.5, 4.6875, 8, 6.375, 4.59375, 7.625, 8.125, - 3.40625, 9, 7.875, 3.35938, 9.375, 9.875, 8.875, 8.625, 2.03125, 7.5625, - 9.6875, 4.1875, 3.71875, 8.9375, 6.46875, 8.75, 2.5, 9.625, 8.75, 1, - 7.53125, 1.14844, 1.58594, 3.8125, 5.65625, 9.9375, 6.34375, 2.34375, 5.125, 2.5, - 6.3125, 7.8125, 3.875, 1.625, 8.375, 7.34375, 1.82812, 5.21875, 2.59375, 1.09375, - 2.98438, 7.96875, 5.25, 8.125, 9.25, 2.34375, 9.875, 1.21094, 6.4375, 7.84375, - 9.25, 3, 4.3125, 3.35938, 1.0625, 5.125, 6.875, 3.25, 2.5, 6.125, - 5.4375, 8.625, 8.125, 4.375, 8.375, 4.875, 4.3125, 8.5, 2.15625, 4.3125, - 2.78125, 1.35938, 1.1875, 6, 6.6875, 5.0625, 5.3125, 7.5, 2.90625, 4.375, - 3.375, 8.5625, 2.6875, 5.21875, 9, 6.0625, 7.4375, 6.9375, 1.60938, 5.15625, - 3.20312, 6.625, 9.25, 3, 2.84375, 7.59375, 5.1875, 4.4375, 7.875, 2.75, - 5.78125, 3.4375, 5.9375, 3.25, 3.10938, 2.375, 3.46875, 7.9375, 1.14844, 3.29688, - 4.8125, 2.14062, 1.42188, 7, 1.53125, 4.6875, 3.875, 7, 5, 6.9375, - 2.51562, 3.75, 3.71875, 2.8125, 5.03125, 3, 5.25, 2.07812, 7.3125, 1.32812, - 7.3125, 1.30469, 6.3125, 3.0625, 9.75, 3.0625, 6.9375, 6.625, 8.875, 9, - 4.71875, 8, 8.125, 7.5, 2.23438, 3.78125, 3.34375, 4.25, 3.03125, 2.75, - 5.78125, 9.375, 7.25, 6.0625, 3.1875, 8.375, 2.75, 4.125, 8.125, 10}, - std::vector{ - 1, 9.1875, 5.5625, 6.625, 2.65625, 8.125, 8.25, 4.875, 9.4375, 5.875, - 1.26562, 4.71875, 8.0625, 1.76562, 2.46875, 8, 4.875, 5.375, 6.15625, 1.45312, - 2.95312, 5.84375, 8.5, 1.375, 3.6875, 8.25, 4.25, 9.9375, 8.8125, 6.75, - 1.10938, 9.5, 7.0625, 7.625, 5.3125, 8.375, 9.75, 2.03125, 2.90625, 7.625, - 2.90625, 8.375, 9.5, 1.66406, 3.9375, 2.875, 9.875, 8.25, 4.9375, 10}, - std::vector{ - 1, 6.59375, 2.125, 2.89062, 5.71875, 5.0625, 9.75, 6, 4.9375, 3.21875, - 5.875, 1.85156, 6.28125, 9.875, 1.59375, 3.40625, 7.75, 9.25, 6.46875, 8.75, - 6.5, 4.0625, 9.125, 4.4375, 9.25, 5.5625, 2.625, 1.8125, 7.625, 1.875, - 1.26562, 6.3125, 3.03125, 7.3125, 3.92188, 2.21875, 4.90625, 2.10938, 3.28125, 6.875, - 4.375, 7.25, 3.92188, 3.09375, 8.375, 7.96875, 7.9375, 1.875, 3.125, 10}, + 1, 9.375, 9, 3.84375, 2.17188, 2.65625, 1.35938, 2.84375, 8.4375, 6.125, 5.78125, + 6.375, 9.625, 9.625, 5.15625, 6.875, 9.3125, 7.75, 4.375, 6.875, 2.39062, 7.71875, + 9, 9.625, 1.23438, 1.07812, 3.625, 1.95312, 4.5625, 3.6875, 8.25, 6.90625, 6.625, + 8.25, 9.125, 8.875, 6, 9.625, 8.5, 7.5, 1.45312, 6.78125, 8.25, 7.4375, + 9.375, 5.1875, 4.25, 3.9375, 7.1875, 4.9375, 2.15625, 7.5625, 8.5, 9.9375, 3.85938, + 7.0625, 7.625, 8.125, 6.375, 2.53125, 4.25, 1.23438, 8.125, 8.1875, 7.28125, 9.125, + 8.375, 1.21875, 9.125, 5.4375, 8.5, 5.75, 9.1875, 6.375, 9.75, 1.46875, 6.875, + 9, 8.25, 7.5625, 1.92188, 8.375, 3.125, 5.5, 4.40625, 8.25, 7.28125, 1.85938, + 5.375, 2.96875, 4.75, 3.32812, 6.75, 5.1875, 7.8125, 5.125, 6, 7.375, 7.25, + 2.59375, 9.25, 5.78125, 1.21875, 2.5, 8.5, 7.90625, 4.4375, 9.375, 3.6875, 6.5, + 1.05469, 2.34375, 4.9375, 5.40625, 7.625, 4.375, 4.375, 8.625, 5.4375, 9.1875, 1.125, + 4.4375, 3.25, 3.84375, 4.125, 6.125, 8.125, 2.6875, 9.4375, 2.125, 1.90625, 7.1875, + 7.625, 8.1875, 9.75, 6.15625, 7.34375, 9.75, 9.5625, 6.6875, 9.375, 9, 4.6875, + 5.4375, 4.03125, 4.15625, 7.9375, 7.4375, 4, 5.53125, 1.74219, 3.03125, 9.0625, 3.20312, + 8.0625, 8.125, 7.4375, 5.4375, 5, 9.25, 7.75, 9.5, 6.90625, 5.8125, 4.25, + 3.26562, 4.375, 7.5, 6.84375, 4.3125, 1.5, 5.5, 1.70312, 3.03125, 1.82812, 4.1875, + 8.25, 6.84375, 1.58594, 3.8125, 3.01562, 7.90625, 2.375, 8, 7.125, 8.625, 2.125, + 9.5, 3.3125, 1.96875, 4.9375, 9.1875, 1.98438, 4, 3.82812, 8.375, 4.15625, 9.0625, + 7.84375, 1.38281, 1.89062, 2.75, 9.375, 3.65625, 3.9375, 6.625, 4.8125, 1.77344, 3.4375, + 2.28125, 8.0625, 5.625, 5.0625, 7.1875, 1.75, 8.6875, 1.63281, 6.8125, 3.96875, 6.25, + 2.71875, 7.375, 8.5, 3.26562, 1.55469, 9.125, 6, 4.96875, 6.125, 1.1875, 5.15625, + 9.625, 9.5, 6.875, 4.09375, 5.625, 8.9375, 7.125, 4.875, 5.375, 9.9375, 9.3125, + 8.1875, 5.625, 9.5, 1.64844, 4.40625, 6.09375, 4.625, 6.53125, 3.57812, 9.5, 5.0625, + 4.75, 7.875, 3.375, 6.21875, 1.875, 4.375, 5.375, 6.59375, 5.1875, 7.625, 1.26562, + 9.25, 7.25, 5.78125, 7.4375, 5.65625, 7.5625, 1.92188, 4.71875, 2.09375, 1.13281, 6.78125, + 9.125, 5, 8.125, 1.6875, 2.48438, 2.375, 3.8125, 1.71875, 6.5, 8.875, 4.25, + 2.45312, 2.40625, 9.25, 2.59375, 1.03125, 8.75, 8.25, 3.60938, 3.71875, 6.25, 3.1875, + 5.0625, 7.90625, 4.6875, 7.3125, 8.9375, 9, 7.21875, 9.1875, 3.5, 3.03125, 1.57812, + 4.78125, 2.78125, 2.5, 9.375, 2.89062, 8.6875, 8.5, 9.5625, 9.25, 1.46875, 7.125, + 6.1875, 4.6875, 5.3125, 3, 1.19531, 8.5, 4.375, 8, 4.71875, 7.625, 6.4375, + 8.75, 7.03125, 9.75, 8.5, 4.6875, 8, 6.375, 4.59375, 7.625, 8.125, 3.40625, + 9, 7.875, 3.35938, 9.375, 9.875, 8.875, 8.625, 2.03125, 7.5625, 9.6875, 4.1875, + 3.71875, 8.9375, 6.46875, 8.75, 2.5, 9.625, 8.75, 1, 7.53125, 1.14844, 1.58594, + 3.8125, 5.65625, 9.9375, 6.34375, 2.34375, 5.125, 2.5, 6.3125, 7.8125, 3.875, 1.625, + 8.375, 7.34375, 1.82812, 5.21875, 2.59375, 1.09375, 2.98438, 7.96875, 5.25, 8.125, 9.25, + 2.34375, 9.875, 1.21094, 6.4375, 7.84375, 9.25, 3, 4.3125, 3.35938, 1.0625, 5.125, + 6.875, 3.25, 2.5, 6.125, 5.4375, 8.625, 8.125, 4.375, 8.375, 4.875, 4.3125, + 8.5, 2.15625, 4.3125, 2.78125, 1.35938, 1.1875, 6, 6.6875, 5.0625, 5.3125, 7.5, + 2.90625, 4.375, 3.375, 8.5625, 2.6875, 5.21875, 9, 6.0625, 7.4375, 6.9375, 1.60938, + 5.15625, 3.20312, 6.625, 9.25, 3, 2.84375, 7.59375, 5.1875, 4.4375, 7.875, 2.75, + 5.78125, 3.4375, 5.9375, 3.25, 3.10938, 2.375, 3.46875, 7.9375, 1.14844, 3.29688, 4.8125, + 2.14062, 1.42188, 7, 1.53125, 4.6875, 3.875, 7, 5, 6.9375, 2.51562, 3.75, + 3.71875, 2.8125, 5.03125, 3, 5.25, 2.07812, 7.3125, 1.32812, 7.3125, 1.30469, 6.3125, + 3.0625, 9.75, 3.0625, 6.9375, 6.625, 8.875, 9, 4.71875, 8, 8.125, 7.5, + 2.23438, 3.78125, 3.34375, 4.25, 3.03125, 2.75, 5.78125, 9.375, 7.25, 6.0625, 3.1875, + 8.375, 2.75, 4.125, 8.125, 10}, + std::vector{1, 9.1875, 5.5625, 6.625, 2.65625, 8.125, 8.25, 4.875, 9.4375, 5.875, + 1.26562, 4.71875, 8.0625, 1.76562, 2.46875, 8, 4.875, 5.375, 6.15625, 1.45312, + 2.95312, 5.84375, 8.5, 1.375, 3.6875, 8.25, 4.25, 9.9375, 8.8125, 6.75, + 1.10938, 9.5, 7.0625, 7.625, 5.3125, 8.375, 9.75, 2.03125, 2.90625, 7.625, + 2.90625, 8.375, 9.5, 1.66406, 3.9375, 2.875, 9.875, 8.25, 4.9375, 10}, + std::vector{1, 6.59375, 2.125, 2.89062, 5.71875, 5.0625, 9.75, 6, 4.9375, 3.21875, + 5.875, 1.85156, 6.28125, 9.875, 1.59375, 3.40625, 7.75, 9.25, 6.46875, 8.75, + 6.5, 4.0625, 9.125, 4.4375, 9.25, 5.5625, 2.625, 1.8125, 7.625, 1.875, + 1.26562, 6.3125, 3.03125, 7.3125, 3.92188, 2.21875, 4.90625, 2.10938, 3.28125, 6.875, + 4.375, 7.25, 3.92188, 3.09375, 8.375, 7.96875, 7.9375, 1.875, 3.125, 10}, std::vector{10, 10, 10, 10, 10}, std::vector{ - 1, 7.5, 1.57812, 10, 1.55469, 3.5, 9.0625, 7.5625, 9, 1.30469, - 6, 7.1875, 2.20312, 9, 5.6875, 2, 5.5625, 5.5625, 6.21875, 3.09375, - 3.82812, 7.28125, 9, 1.625, 6.78125, 9.875, 5.46875, 4.1875, 3.84375, 2.21875, - 1.57812, 9.125, 6, 6, 9.5, 2.28125, 8.375, 9.875, 2.32812, 5.96875, - 1.42969, 4.5625, 1.10156, 5.4375, 8.25, 1.625, 6.875, 4.6875, 6.15625, 6.15625, - 8.625, 4.125, 6.1875, 1.375, 6.1875, 8.875, 6, 3.40625, 1.75781, 4.8125, - 1.40625, 4.21875, 4, 6.4375, 6.5625, 4.1875, 8.25, 7.40625, 2.40625, 7, - 5.5625, 7.9375, 7.625, 4.75, 7, 1.625, 9.25, 7, 7, 2.5, - 5.9375, 7.1875, 6.875, 5.84375, 7.5625, 6.5, 2.09375, 6.0625, 2.4375, 3.34375, - 3.76562, 2.1875, 3.51562, 5.875, 2.54688, 8.3125, 9.125, 2.96875, 1.9375, 3.76562, - 4.1875, 6.28125, 4.84375, 7.5, 3.78125, 5.375, 2.84375, 8.5, 3.3125, 8.1875, - 4.21875, 6.375, 8.375, 1.46875, 6.625, 6.5625, 9.0625, 2.90625, 9.4375, 5.375, - 1.32812, 5.9375, 8.9375, 4.4375, 7.5625, 8.9375, 5.28125, 2.59375, 8.375, 5.15625, - 6.8125, 9.25, 5.3125, 4.375, 1.46875, 7.5625, 8.3125, 2.82812, 7.25, 7.03125, - 3.3125, 3.03125, 8.5, 3.21875, 8.875, 7, 9.6875, 5.28125, 3.65625, 1.8125, - 2.5, 4.0625, 6.15625, 8, 5.1875, 2.45312, 6.1875, 1.375, 7.9375, 7.1875, - 9.625, 7.5, 7.84375, 7.40625, 9.75, 7.09375, 2.0625, 1.5, 6.53125, 5, - 9.875, 6.6875, 5.875, 6.8125, 5.53125, 9.25, 4.0625, 4.1875, 1.46875, 5, - 8.6875, 3.70312, 1.85938, 1.21094, 2.71875, 1.82812, 9, 2.71875, 9.9375, 7.8125, - 4.3125, 8.8125, 2.8125, 3.23438, 4.375, 4.1875, 8.375, 8.75, 6.625, 5.34375, - 7.1875, 3.45312, 7.0625, 8.5, 5.8125, 4.875, 8.875, 3.5625, 3.84375, 6.1875, - 3.90625, 4.9375, 4.5625, 6.625, 2.59375, 9.875, 2.90625, 1.82031, 1.25781, 6, - 9.25, 4.09375, 9.125, 2.5625, 5.25, 2.34375, 5.90625, 7.90625, 9.75, 6.875, - 7.3125, 1.14062, 9.125, 7.75, 5.5625, 2.8125, 1.32812, 7.5625, 9, 7.125, - 8.625, 4.4375, 8.375, 6.375, 6.6875, 3.82812, 5.1875, 7.8125, 3.28125, 1.17188, - 7.125, 8.9375, 6.6875, 5.4375, 6.21875, 4.125, 1.40625, 3.51562, 3.5, 3.0625, - 1.03906, 7.28125, 2.64062, 8.125, 4.4375, 5.25, 1.75, 1.96875, 7.9375, 4.46875, - 6.25, 8.75, 1.80469, 3.375, 2.4375, 8.9375, 4.1875, 4.1875, 7.15625, 6.65625, - 8.375, 1.13281, 7.3125, 7.375, 3.3125, 1.36719, 7.40625, 6.375, 7.875, 4, - 8.5, 8.5, 6.1875, 2.3125, 6.5625, 6.25, 7.03125, 7.625, 5.1875, 6.71875, - 4.125, 7.4375, 1.09375, 5, 4.90625, 5.5625, 10, 8.0625, 2.625, 1.21875, - 7.46875, 3.125, 4.0625, 8.3125, 1.11719, 5.40625, 4.96875, 1.35156, 2.04688, 2.5, - 3.8125, 6.125, 3.78125, 2.82812, 8.9375, 6.90625, 3.6875, 1.95312, 9.8125, 7.25, - 4.125, 4.875, 1.54688, 6.40625, 2.57812, 6.46875, 5.34375, 7.8125, 9.9375, 5.5625, - 2.625, 7.1875, 8.375, 9.75, 1.67188, 3, 6.96875, 6, 1.53125, 2.09375, - 6.15625, 5.3125, 7.25, 7.3125, 3.625, 1.10938, 7.53125, 1.375, 7.84375, 7.96875, - 9.875, 9.8125, 5.78125, 7.9375, 4.3125, 8.0625, 7.8125, 6.5625, 2.21875, 4.0625, - 3.1875, 4.75, 8.25, 6.125, 3.03125, 6.1875, 4.125, 7.71875, 4.4375, 1.46875, - 4.40625, 6.375, 4.375, 1.48438, 2.65625, 1.80469, 7.5, 9.875, 7.25, 7.875, - 8.1875, 5.4375, 2.70312, 3.39062, 2.23438, 2.5625, 9.875, 1.76562, 3.3125, 10}, + 1, 7.5, 1.57812, 10, 1.55469, 3.5, 9.0625, 7.5625, 9, 1.30469, 6, + 7.1875, 2.20312, 9, 5.6875, 2, 5.5625, 5.5625, 6.21875, 3.09375, 3.82812, 7.28125, + 9, 1.625, 6.78125, 9.875, 5.46875, 4.1875, 3.84375, 2.21875, 1.57812, 9.125, 6, + 6, 9.5, 2.28125, 8.375, 9.875, 2.32812, 5.96875, 1.42969, 4.5625, 1.10156, 5.4375, + 8.25, 1.625, 6.875, 4.6875, 6.15625, 6.15625, 8.625, 4.125, 6.1875, 1.375, 6.1875, + 8.875, 6, 3.40625, 1.75781, 4.8125, 1.40625, 4.21875, 4, 6.4375, 6.5625, 4.1875, + 8.25, 7.40625, 2.40625, 7, 5.5625, 7.9375, 7.625, 4.75, 7, 1.625, 9.25, + 7, 7, 2.5, 5.9375, 7.1875, 6.875, 5.84375, 7.5625, 6.5, 2.09375, 6.0625, + 2.4375, 3.34375, 3.76562, 2.1875, 3.51562, 5.875, 2.54688, 8.3125, 9.125, 2.96875, 1.9375, + 3.76562, 4.1875, 6.28125, 4.84375, 7.5, 3.78125, 5.375, 2.84375, 8.5, 3.3125, 8.1875, + 4.21875, 6.375, 8.375, 1.46875, 6.625, 6.5625, 9.0625, 2.90625, 9.4375, 5.375, 1.32812, + 5.9375, 8.9375, 4.4375, 7.5625, 8.9375, 5.28125, 2.59375, 8.375, 5.15625, 6.8125, 9.25, + 5.3125, 4.375, 1.46875, 7.5625, 8.3125, 2.82812, 7.25, 7.03125, 3.3125, 3.03125, 8.5, + 3.21875, 8.875, 7, 9.6875, 5.28125, 3.65625, 1.8125, 2.5, 4.0625, 6.15625, 8, + 5.1875, 2.45312, 6.1875, 1.375, 7.9375, 7.1875, 9.625, 7.5, 7.84375, 7.40625, 9.75, + 7.09375, 2.0625, 1.5, 6.53125, 5, 9.875, 6.6875, 5.875, 6.8125, 5.53125, 9.25, + 4.0625, 4.1875, 1.46875, 5, 8.6875, 3.70312, 1.85938, 1.21094, 2.71875, 1.82812, 9, + 2.71875, 9.9375, 7.8125, 4.3125, 8.8125, 2.8125, 3.23438, 4.375, 4.1875, 8.375, 8.75, + 6.625, 5.34375, 7.1875, 3.45312, 7.0625, 8.5, 5.8125, 4.875, 8.875, 3.5625, 3.84375, + 6.1875, 3.90625, 4.9375, 4.5625, 6.625, 2.59375, 9.875, 2.90625, 1.82031, 1.25781, 6, + 9.25, 4.09375, 9.125, 2.5625, 5.25, 2.34375, 5.90625, 7.90625, 9.75, 6.875, 7.3125, + 1.14062, 9.125, 7.75, 5.5625, 2.8125, 1.32812, 7.5625, 9, 7.125, 8.625, 4.4375, + 8.375, 6.375, 6.6875, 3.82812, 5.1875, 7.8125, 3.28125, 1.17188, 7.125, 8.9375, 6.6875, + 5.4375, 6.21875, 4.125, 1.40625, 3.51562, 3.5, 3.0625, 1.03906, 7.28125, 2.64062, 8.125, + 4.4375, 5.25, 1.75, 1.96875, 7.9375, 4.46875, 6.25, 8.75, 1.80469, 3.375, 2.4375, + 8.9375, 4.1875, 4.1875, 7.15625, 6.65625, 8.375, 1.13281, 7.3125, 7.375, 3.3125, 1.36719, + 7.40625, 6.375, 7.875, 4, 8.5, 8.5, 6.1875, 2.3125, 6.5625, 6.25, 7.03125, + 7.625, 5.1875, 6.71875, 4.125, 7.4375, 1.09375, 5, 4.90625, 5.5625, 10, 8.0625, + 2.625, 1.21875, 7.46875, 3.125, 4.0625, 8.3125, 1.11719, 5.40625, 4.96875, 1.35156, 2.04688, + 2.5, 3.8125, 6.125, 3.78125, 2.82812, 8.9375, 6.90625, 3.6875, 1.95312, 9.8125, 7.25, + 4.125, 4.875, 1.54688, 6.40625, 2.57812, 6.46875, 5.34375, 7.8125, 9.9375, 5.5625, 2.625, + 7.1875, 8.375, 9.75, 1.67188, 3, 6.96875, 6, 1.53125, 2.09375, 6.15625, 5.3125, + 7.25, 7.3125, 3.625, 1.10938, 7.53125, 1.375, 7.84375, 7.96875, 9.875, 9.8125, 5.78125, + 7.9375, 4.3125, 8.0625, 7.8125, 6.5625, 2.21875, 4.0625, 3.1875, 4.75, 8.25, 6.125, + 3.03125, 6.1875, 4.125, 7.71875, 4.4375, 1.46875, 4.40625, 6.375, 4.375, 1.48438, 2.65625, + 1.80469, 7.5, 9.875, 7.25, 7.875, 8.1875, 5.4375, 2.70312, 3.39062, 2.23438, 2.5625, + 9.875, 1.76562, 3.3125, 10}, std::vector{ - 1, 6.125, 4.53125, 4.4375, 6.3125, 6.6875, 5.375, 8.25, 9.875, 9.375, - 9.0625, 5.9375, 3.0625, 6.75, 9.75, 8.8125, 3.5, 2.40625, 7.625, 2.21875, - 2.39062, 9.25, 6.1875, 4.0625, 6.25, 5.375, 8.25, 7.3125, 6.5, 7.8125, - 2.65625, 2.10938, 8.375, 7.65625, 4.09375, 2.71875, 9.4375, 7.0625, 6.5625, 8.625, - 7.625, 8.25, 2.10938, 8.625, 8.125, 7.40625, 4.5, 2.76562, 5.125, 9.625, - 8.5625, 8.75, 7.46875, 9.625, 8.875, 4.40625, 2.26562, 9.3125, 1.67188, 9.1875, - 6.1875, 4.78125, 5.5, 6.40625, 5.59375, 8.125, 7.65625, 1.75, 2.96875, 3.875, - 8.75, 1.99219, 3.53125, 2.53125, 9.375, 2.1875, 2.875, 1.86719, 9.25, 7.125, - 3.89062, 9.5, 1.92188, 5.4375, 4.5625, 1, 8, 3.96875, 9.375, 9.1875, - 1.19531, 6.875, 3.21875, 8.5625, 7.0625, 8.6875, 9.875, 4.65625, 9.5, 6.25, - 1.82812, 1.51562, 2.42188, 4.21875, 2.78125, 7.75, 4.96875, 3.89062, 2.76562, 9.25, - 5.84375, 5.84375, 8.375, 3.34375, 9.875, 2.625, 2.15625, 1.73438, 6.25, 8.875, - 4.0625, 7.8125, 4.625, 7.59375, 7.625, 2.71875, 4.25, 3.96875, 2, 2.9375, - 6.25, 7.3125, 7.09375, 7.1875, 7.40625, 1.13281, 9.625, 5.90625, 9.9375, 1.0625, - 2.10938, 9.5, 6.25, 5.1875, 3.3125, 9.4375, 6.84375, 8.25, 4.375, 4.59375, - 1.79688, 9, 7.9375, 2.64062, 9.75, 8.75, 9.6875, 3.59375, 4, 10, - 8.875, 2.82812, 9.0625, 8.8125, 1.76562, 2.23438, 6.625, 2.375, 3.70312, 8.375, - 8.625, 4, 6.1875, 9.8125, 2.625, 2.60938, 9.375, 1.625, 2.03125, 9.5, - 1.84375, 9.125, 7.75, 4.75, 2.0625, 2.375, 6.03125, 5.65625, 3.92188, 4.125, - 9.625, 4.25, 5.4375, 1.34375, 5.1875, 7.53125, 3.96875, 4.875, 1.65625, 3.54688, - 1.64062, 4.625, 1.51562, 4.4375, 4.375, 5.1875, 1.03906, 1.58594, 9.75, 2.78125, - 1.27344, 6.25, 6.4375, 9.5625, 4.625, 3.89062, 8.875, 5.875, 9.875, 4, - 9.625, 8.1875, 6, 6.5625, 3.1875, 5.9375, 1.17188, 6.375, 3.09375, 3.5, - 5.34375, 6.625, 9.6875, 1.85938, 2.85938, 9.75, 5.5, 7.6875, 1.86719, 1.03125, - 7.21875, 7.125, 7.75, 6.1875, 2, 2.59375, 2.46875, 8.25, 7.78125, 3.75, - 7.875, 4.6875, 8.0625, 7.9375, 2.53125, 6.5, 2.48438, 6.75, 2.60938, 1.60938, - 7.75, 2.28125, 8.75, 7.6875, 8.25, 8.0625, 1.23438, 6.0625, 1.53125, 6.96875, - 4.9375, 5.21875, 1.5, 5.125, 7.5, 7.1875, 6, 2.71875, 6.5625, 9.875, - 2.15625, 4.40625, 5.5, 3.98438, 5.5625, 8.875, 1.84375, 8.75, 8.875, 9.6875, - 8.8125, 2.78125, 1.16406, 6.03125, 7.625, 2.73438, 6.5, 5.6875, 9.75, 8.125, - 6.875, 7.34375, 9, 5.0625, 6.1875, 3.95312, 4.5, 2.35938, 4.6875, 9.875, - 1.09375, 6.09375, 4, 9.75, 8.5, 1.70312, 6.9375, 1.29688, 5.6875, 7.8125, - 9.625, 3.125, 7.1875, 6.6875, 7.84375, 1.21094, 1.71094, 5.875, 3.4375, 5.8125, - 4.25, 4.125, 7.875, 5.1875, 9.3125, 9, 4.4375, 1.0625, 3.01562, 5.25, - 3.09375, 7.375, 6.1875, 3.4375, 6.46875, 9.375, 5.625, 4.8125, 8.1875, 2.03125, - 8.75, 4.21875, 9.25, 8.3125, 1.1875, 3.0625, 1.6875, 3.375, 5.09375, 1.95312, - 1.25, 3.76562, 7.75, 5.09375, 6.1875, 4.625, 4.625, 1.49219, 4.96875, 9.875, - 2, 9, 4.46875, 7.25, 1.36719, 7.9375, 1.79688, 3, 7.5625, 2.625, - 7.5625, 1.92969, 2.32812, 3.25, 4.375, 1.125, 7.75, 2.4375, 3.34375, 5.6875, - 1.30469, 7.9375, 8.75, 3.625, 6.3125, 6.75, 1.73438, 2.5, 3.09375, 10}, + 1, 6.125, 4.53125, 4.4375, 6.3125, 6.6875, 5.375, 8.25, 9.875, 9.375, 9.0625, + 5.9375, 3.0625, 6.75, 9.75, 8.8125, 3.5, 2.40625, 7.625, 2.21875, 2.39062, 9.25, + 6.1875, 4.0625, 6.25, 5.375, 8.25, 7.3125, 6.5, 7.8125, 2.65625, 2.10938, 8.375, + 7.65625, 4.09375, 2.71875, 9.4375, 7.0625, 6.5625, 8.625, 7.625, 8.25, 2.10938, 8.625, + 8.125, 7.40625, 4.5, 2.76562, 5.125, 9.625, 8.5625, 8.75, 7.46875, 9.625, 8.875, + 4.40625, 2.26562, 9.3125, 1.67188, 9.1875, 6.1875, 4.78125, 5.5, 6.40625, 5.59375, 8.125, + 7.65625, 1.75, 2.96875, 3.875, 8.75, 1.99219, 3.53125, 2.53125, 9.375, 2.1875, 2.875, + 1.86719, 9.25, 7.125, 3.89062, 9.5, 1.92188, 5.4375, 4.5625, 1, 8, 3.96875, + 9.375, 9.1875, 1.19531, 6.875, 3.21875, 8.5625, 7.0625, 8.6875, 9.875, 4.65625, 9.5, + 6.25, 1.82812, 1.51562, 2.42188, 4.21875, 2.78125, 7.75, 4.96875, 3.89062, 2.76562, 9.25, + 5.84375, 5.84375, 8.375, 3.34375, 9.875, 2.625, 2.15625, 1.73438, 6.25, 8.875, 4.0625, + 7.8125, 4.625, 7.59375, 7.625, 2.71875, 4.25, 3.96875, 2, 2.9375, 6.25, 7.3125, + 7.09375, 7.1875, 7.40625, 1.13281, 9.625, 5.90625, 9.9375, 1.0625, 2.10938, 9.5, 6.25, + 5.1875, 3.3125, 9.4375, 6.84375, 8.25, 4.375, 4.59375, 1.79688, 9, 7.9375, 2.64062, + 9.75, 8.75, 9.6875, 3.59375, 4, 10, 8.875, 2.82812, 9.0625, 8.8125, 1.76562, + 2.23438, 6.625, 2.375, 3.70312, 8.375, 8.625, 4, 6.1875, 9.8125, 2.625, 2.60938, + 9.375, 1.625, 2.03125, 9.5, 1.84375, 9.125, 7.75, 4.75, 2.0625, 2.375, 6.03125, + 5.65625, 3.92188, 4.125, 9.625, 4.25, 5.4375, 1.34375, 5.1875, 7.53125, 3.96875, 4.875, + 1.65625, 3.54688, 1.64062, 4.625, 1.51562, 4.4375, 4.375, 5.1875, 1.03906, 1.58594, 9.75, + 2.78125, 1.27344, 6.25, 6.4375, 9.5625, 4.625, 3.89062, 8.875, 5.875, 9.875, 4, + 9.625, 8.1875, 6, 6.5625, 3.1875, 5.9375, 1.17188, 6.375, 3.09375, 3.5, 5.34375, + 6.625, 9.6875, 1.85938, 2.85938, 9.75, 5.5, 7.6875, 1.86719, 1.03125, 7.21875, 7.125, + 7.75, 6.1875, 2, 2.59375, 2.46875, 8.25, 7.78125, 3.75, 7.875, 4.6875, 8.0625, + 7.9375, 2.53125, 6.5, 2.48438, 6.75, 2.60938, 1.60938, 7.75, 2.28125, 8.75, 7.6875, + 8.25, 8.0625, 1.23438, 6.0625, 1.53125, 6.96875, 4.9375, 5.21875, 1.5, 5.125, 7.5, + 7.1875, 6, 2.71875, 6.5625, 9.875, 2.15625, 4.40625, 5.5, 3.98438, 5.5625, 8.875, + 1.84375, 8.75, 8.875, 9.6875, 8.8125, 2.78125, 1.16406, 6.03125, 7.625, 2.73438, 6.5, + 5.6875, 9.75, 8.125, 6.875, 7.34375, 9, 5.0625, 6.1875, 3.95312, 4.5, 2.35938, + 4.6875, 9.875, 1.09375, 6.09375, 4, 9.75, 8.5, 1.70312, 6.9375, 1.29688, 5.6875, + 7.8125, 9.625, 3.125, 7.1875, 6.6875, 7.84375, 1.21094, 1.71094, 5.875, 3.4375, 5.8125, + 4.25, 4.125, 7.875, 5.1875, 9.3125, 9, 4.4375, 1.0625, 3.01562, 5.25, 3.09375, + 7.375, 6.1875, 3.4375, 6.46875, 9.375, 5.625, 4.8125, 8.1875, 2.03125, 8.75, 4.21875, + 9.25, 8.3125, 1.1875, 3.0625, 1.6875, 3.375, 5.09375, 1.95312, 1.25, 3.76562, 7.75, + 5.09375, 6.1875, 4.625, 4.625, 1.49219, 4.96875, 9.875, 2, 9, 4.46875, 7.25, + 1.36719, 7.9375, 1.79688, 3, 7.5625, 2.625, 7.5625, 1.92969, 2.32812, 3.25, 4.375, + 1.125, 7.75, 2.4375, 3.34375, 5.6875, 1.30469, 7.9375, 8.75, 3.625, 6.3125, 6.75, + 1.73438, 2.5, 3.09375, 10}, + std::vector{1, 7.25, 1.08594, 1.90625, 7.3125, 8.1875, 1.84375, 9.8125, 3.65625, 7.6875, + 7.03125, 6.75, 9.875, 9, 2.28125, 4.625, 8.375, 8.125, 4.25, 9.9375, + 2.125, 1.92969, 1.35938, 7.625, 5.6875, 2.65625, 6.9375, 8.0625, 2.53125, 7.375, + 2.8125, 9.1875, 7.3125, 8.75, 7.15625, 7.15625, 3.8125, 6.75, 3.53125, 10}, + std::vector{0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, + 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, + 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, + 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094}, std::vector{ - 1, 7.25, 1.08594, 1.90625, 7.3125, 8.1875, 1.84375, 9.8125, 3.65625, 7.6875, - 7.03125, 6.75, 9.875, 9, 2.28125, 4.625, 8.375, 8.125, 4.25, 9.9375, - 2.125, 1.92969, 1.35938, 7.625, 5.6875, 2.65625, 6.9375, 8.0625, 2.53125, 7.375, - 2.8125, 9.1875, 7.3125, 8.75, 7.15625, 7.15625, 3.8125, 6.75, 3.53125, 10}, - std::vector{ - 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, - 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, - 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094}, - std::vector{ - 0.523438, 0.667969, 0.632812, 0.65625, 0.667969, 0.667969, 0.667969, 0.667969, 0.667969, 0.65625, + 0.523438, 0.667969, 0.632812, 0.65625, 0.667969, 0.667969, 0.667969, 0.667969, 0.667969, 0.65625, 0.539062, 0.667969, 0.617188, 0.640625, 0.664062, 0.664062, 0.667969, 0.664062, 0.664062, 0.648438, - 0.546875, 0.664062, 0.601562, 0.625, 0.65625, 0.65625, 0.667969, 0.65625, 0.65625, 0.632812, + 0.546875, 0.664062, 0.601562, 0.625, 0.65625, 0.65625, 0.667969, 0.65625, 0.65625, 0.632812, 0.546875, 0.648438, 0.585938, 0.609375, 0.648438, 0.640625, 0.664062, 0.648438, 0.640625, 0.617188, - 0.554688, 0.632812, 0.578125, 0.59375, 0.632812, 0.625, 0.65625, 0.632812, 0.625, 0.601562, + 0.554688, 0.632812, 0.578125, 0.59375, 0.632812, 0.625, 0.65625, 0.632812, 0.625, 0.601562, 0.554688, 0.617188, 0.570312, 0.585938, 0.617188, 0.609375, 0.640625, 0.617188, 0.609375, 0.585938, - 0.554688, 0.601562, 0.570312, 0.578125, 0.601562, 0.59375, 0.625, 0.601562, 0.59375, 0.578125, - 0.554688, 0.59375, 0.5625, 0.570312, 0.585938, 0.585938, 0.609375, 0.585938, 0.585938, 0.570312, - 0.554688, 0.585938, 0.5625, 0.570312, 0.578125, 0.578125, 0.59375, 0.578125, 0.578125, 0.570312, - 0.554688, 0.570312, 0.5625, 0.5625, 0.570312, 0.570312, 0.585938, 0.570312, 0.570312, 0.5625, + 0.554688, 0.601562, 0.570312, 0.578125, 0.601562, 0.59375, 0.625, 0.601562, 0.59375, 0.578125, + 0.554688, 0.59375, 0.5625, 0.570312, 0.585938, 0.585938, 0.609375, 0.585938, 0.585938, 0.570312, + 0.554688, 0.585938, 0.5625, 0.570312, 0.578125, 0.578125, 0.59375, 0.578125, 0.578125, 0.570312, + 0.554688, 0.570312, 0.5625, 0.5625, 0.570312, 0.570312, 0.585938, 0.570312, 0.570312, 0.5625, 0.667969, 0.617188, 0.667969, 0.667969, 0.601562, 0.664062, 0.667969, 0.667969, 0.667969, 0.667969, 0.664062, 0.601562, 0.664062, 0.667969, 0.585938, 0.648438, 0.667969, 0.667969, 0.667969, 0.667969, - 0.65625, 0.585938, 0.664062, 0.667969, 0.578125, 0.632812, 0.664062, 0.667969, 0.664062, 0.664062, - 0.648438, 0.578125, 0.648438, 0.664062, 0.570312, 0.617188, 0.65625, 0.664062, 0.648438, 0.664062, - 0.632812, 0.570312, 0.632812, 0.65625, 0.570312, 0.601562, 0.648438, 0.648438, 0.632812, 0.648438, - 0.617188, 0.570312, 0.617188, 0.640625, 0.5625, 0.585938, 0.632812, 0.632812, 0.617188, 0.632812, - 0.601562, 0.5625, 0.601562, 0.625, 0.5625, 0.578125, 0.617188, 0.617188, 0.601562, 0.617188, - 0.585938, 0.5625, 0.585938, 0.609375, 0.5625, 0.570312, 0.601562, 0.601562, 0.59375, 0.601562, - 0.578125, 0.5625, 0.578125, 0.59375, 0.554688, 0.570312, 0.585938, 0.59375, 0.585938, 0.585938, - 0.570312, 0.554688, 0.570312, 0.585938, 0.554688, 0.5625, 0.578125, 0.585938, 0.570312, 0.578125, + 0.65625, 0.585938, 0.664062, 0.667969, 0.578125, 0.632812, 0.664062, 0.667969, 0.664062, 0.664062, + 0.648438, 0.578125, 0.648438, 0.664062, 0.570312, 0.617188, 0.65625, 0.664062, 0.648438, 0.664062, + 0.632812, 0.570312, 0.632812, 0.65625, 0.570312, 0.601562, 0.648438, 0.648438, 0.632812, 0.648438, + 0.617188, 0.570312, 0.617188, 0.640625, 0.5625, 0.585938, 0.632812, 0.632812, 0.617188, 0.632812, + 0.601562, 0.5625, 0.601562, 0.625, 0.5625, 0.578125, 0.617188, 0.617188, 0.601562, 0.617188, + 0.585938, 0.5625, 0.585938, 0.609375, 0.5625, 0.570312, 0.601562, 0.601562, 0.59375, 0.601562, + 0.578125, 0.5625, 0.578125, 0.59375, 0.554688, 0.570312, 0.585938, 0.59375, 0.585938, 0.585938, + 0.570312, 0.554688, 0.570312, 0.585938, 0.554688, 0.5625, 0.578125, 0.585938, 0.570312, 0.578125, 0.667969, 0.664062, 0.667969, 0.664062, 0.667969, 0.667969, 0.648438, 0.617188, 0.667969, 0.617188, - 0.667969, 0.65625, 0.667969, 0.65625, 0.667969, 0.664062, 0.632812, 0.601562, 0.667969, 0.601562, - 0.664062, 0.648438, 0.667969, 0.648438, 0.667969, 0.65625, 0.617188, 0.585938, 0.664062, 0.59375, - 0.648438, 0.632812, 0.664062, 0.632812, 0.664062, 0.648438, 0.601562, 0.578125, 0.65625, 0.585938, + 0.667969, 0.65625, 0.667969, 0.65625, 0.667969, 0.664062, 0.632812, 0.601562, 0.667969, 0.601562, + 0.664062, 0.648438, 0.667969, 0.648438, 0.667969, 0.65625, 0.617188, 0.585938, 0.664062, 0.59375, + 0.648438, 0.632812, 0.664062, 0.632812, 0.664062, 0.648438, 0.601562, 0.578125, 0.65625, 0.585938, 0.632812, 0.617188, 0.648438, 0.617188, 0.648438, 0.632812, 0.585938, 0.570312, 0.640625, 0.570312, - 0.617188, 0.601562, 0.632812, 0.601562, 0.632812, 0.617188, 0.578125, 0.570312, 0.625, 0.570312, - 0.601562, 0.585938, 0.617188, 0.585938, 0.617188, 0.601562, 0.570312, 0.5625, 0.609375, 0.5625, - 0.59375, 0.578125, 0.601562, 0.578125, 0.601562, 0.585938, 0.570312, 0.5625, 0.59375, 0.5625, - 0.585938, 0.570312, 0.59375, 0.570312, 0.59375, 0.578125, 0.5625, 0.5625, 0.585938, 0.5625, - 0.570312, 0.570312, 0.585938, 0.570312, 0.585938, 0.570312, 0.5625, 0.554688, 0.578125, 0.554688, - 0.5625, 0.667969, 0.65625, 0.667969, 0.664062, 0.632812, 0.667969, 0.632812, 0.65625, 0.667969, - 0.5625, 0.664062, 0.640625, 0.667969, 0.65625, 0.617188, 0.664062, 0.617188, 0.648438, 0.667969, - 0.5625, 0.664062, 0.625, 0.664062, 0.640625, 0.601562, 0.65625, 0.601562, 0.632812, 0.664062, - 0.554688, 0.648438, 0.609375, 0.65625, 0.625, 0.59375, 0.640625, 0.585938, 0.617188, 0.65625, - 0.554688, 0.632812, 0.59375, 0.640625, 0.609375, 0.585938, 0.625, 0.578125, 0.601562, 0.640625, - 0.554688, 0.617188, 0.585938, 0.625, 0.59375, 0.570312, 0.609375, 0.570312, 0.585938, 0.625, - 0.554688, 0.601562, 0.578125, 0.609375, 0.585938, 0.570312, 0.59375, 0.570312, 0.578125, 0.609375, - 0.554688, 0.585938, 0.570312, 0.59375, 0.578125, 0.5625, 0.585938, 0.5625, 0.570312, 0.59375, - 0.554688, 0.578125, 0.570312, 0.585938, 0.570312, 0.5625, 0.578125, 0.5625, 0.570312, 0.585938, - 0.554688, 0.570312, 0.5625, 0.578125, 0.570312, 0.5625, 0.570312, 0.5625, 0.5625, 0.578125, - 0.664062, 0.667969, 0.664062, 0.65625, 0.667969, 0.667969, 0.667969, 0.617188, 0.65625, 0.667969, - 0.65625, 0.667969, 0.65625, 0.648438, 0.667969, 0.667969, 0.667969, 0.601562, 0.648438, 0.667969, - 0.648438, 0.664062, 0.640625, 0.625, 0.664062, 0.664062, 0.664062, 0.59375, 0.632812, 0.667969, - 0.632812, 0.65625, 0.625, 0.609375, 0.65625, 0.65625, 0.65625, 0.585938, 0.617188, 0.664062, - 0.617188, 0.640625, 0.609375, 0.59375, 0.648438, 0.648438, 0.648438, 0.570312, 0.601562, 0.65625, - 0.601562, 0.625, 0.59375, 0.585938, 0.632812, 0.632812, 0.632812, 0.570312, 0.585938, 0.640625, - 0.585938, 0.609375, 0.585938, 0.578125, 0.617188, 0.617188, 0.617188, 0.5625, 0.578125, 0.625, - 0.578125, 0.59375, 0.578125, 0.570312, 0.601562, 0.601562, 0.601562, 0.5625, 0.570312, 0.609375, - 0.570312, 0.585938, 0.570312, 0.570312, 0.585938, 0.585938, 0.585938, 0.5625, 0.570312, 0.59375, - 0.570312, 0.578125, 0.570312, 0.5625, 0.578125, 0.578125, 0.578125, 0.554688, 0.5625, 0.585938}, - std::vector{ - 0.554688, 0.570312, 0.5625, 0.5625, 0.570312, 0.570312, 0.585938, 0.570312, 0.570312, 0.5625, - 0.570312, 0.554688, 0.570312, 0.585938, 0.554688, 0.5625, 0.578125, 0.585938, 0.570312, 0.578125, - 0.570312, 0.570312, 0.585938, 0.570312, 0.585938, 0.570312, 0.5625, 0.554688, 0.578125, 0.554688, - 0.554688, 0.570312, 0.5625, 0.578125, 0.570312, 0.5625, 0.570312, 0.5625, 0.5625, 0.578125, - 0.570312, 0.578125, 0.570312, 0.5625, 0.578125, 0.578125, 0.578125, 0.554688, 0.5625, 0.585938}, - std::vector{ - 1.20312, 1.30469, 1.22656, 1.24219, 1.28906, 1.28125, 1.35938, 1.29688, 1.28125, 1.25, - 1.28906, 1.21875, 1.29688, 1.375, 1.21875, 1.25, 1.32812, 1.35156, 1.30469, 1.34375, - 1.30469, 1.26562, 1.35156, 1.26562, 1.35156, 1.28906, 1.23438, 1.21875, 1.32031, 1.21875, - 1.21875, 1.29688, 1.24219, 1.32031, 1.25781, 1.22656, 1.28125, 1.22656, 1.25, 1.3125, - 1.26562, 1.32031, 1.25781, 1.24219, 1.34375, 1.32812, 1.32812, 1.21875, 1.25, 1.375}), + 0.617188, 0.601562, 0.632812, 0.601562, 0.632812, 0.617188, 0.578125, 0.570312, 0.625, 0.570312, + 0.601562, 0.585938, 0.617188, 0.585938, 0.617188, 0.601562, 0.570312, 0.5625, 0.609375, 0.5625, + 0.59375, 0.578125, 0.601562, 0.578125, 0.601562, 0.585938, 0.570312, 0.5625, 0.59375, 0.5625, + 0.585938, 0.570312, 0.59375, 0.570312, 0.59375, 0.578125, 0.5625, 0.5625, 0.585938, 0.5625, + 0.570312, 0.570312, 0.585938, 0.570312, 0.585938, 0.570312, 0.5625, 0.554688, 0.578125, 0.554688, + 0.5625, 0.667969, 0.65625, 0.667969, 0.664062, 0.632812, 0.667969, 0.632812, 0.65625, 0.667969, + 0.5625, 0.664062, 0.640625, 0.667969, 0.65625, 0.617188, 0.664062, 0.617188, 0.648438, 0.667969, + 0.5625, 0.664062, 0.625, 0.664062, 0.640625, 0.601562, 0.65625, 0.601562, 0.632812, 0.664062, + 0.554688, 0.648438, 0.609375, 0.65625, 0.625, 0.59375, 0.640625, 0.585938, 0.617188, 0.65625, + 0.554688, 0.632812, 0.59375, 0.640625, 0.609375, 0.585938, 0.625, 0.578125, 0.601562, 0.640625, + 0.554688, 0.617188, 0.585938, 0.625, 0.59375, 0.570312, 0.609375, 0.570312, 0.585938, 0.625, + 0.554688, 0.601562, 0.578125, 0.609375, 0.585938, 0.570312, 0.59375, 0.570312, 0.578125, 0.609375, + 0.554688, 0.585938, 0.570312, 0.59375, 0.578125, 0.5625, 0.585938, 0.5625, 0.570312, 0.59375, + 0.554688, 0.578125, 0.570312, 0.585938, 0.570312, 0.5625, 0.578125, 0.5625, 0.570312, 0.585938, + 0.554688, 0.570312, 0.5625, 0.578125, 0.570312, 0.5625, 0.570312, 0.5625, 0.5625, 0.578125, + 0.664062, 0.667969, 0.664062, 0.65625, 0.667969, 0.667969, 0.667969, 0.617188, 0.65625, 0.667969, + 0.65625, 0.667969, 0.65625, 0.648438, 0.667969, 0.667969, 0.667969, 0.601562, 0.648438, 0.667969, + 0.648438, 0.664062, 0.640625, 0.625, 0.664062, 0.664062, 0.664062, 0.59375, 0.632812, 0.667969, + 0.632812, 0.65625, 0.625, 0.609375, 0.65625, 0.65625, 0.65625, 0.585938, 0.617188, 0.664062, + 0.617188, 0.640625, 0.609375, 0.59375, 0.648438, 0.648438, 0.648438, 0.570312, 0.601562, 0.65625, + 0.601562, 0.625, 0.59375, 0.585938, 0.632812, 0.632812, 0.632812, 0.570312, 0.585938, 0.640625, + 0.585938, 0.609375, 0.585938, 0.578125, 0.617188, 0.617188, 0.617188, 0.5625, 0.578125, 0.625, + 0.578125, 0.59375, 0.578125, 0.570312, 0.601562, 0.601562, 0.601562, 0.5625, 0.570312, 0.609375, + 0.570312, 0.585938, 0.570312, 0.570312, 0.585938, 0.585938, 0.585938, 0.5625, 0.570312, 0.59375, + 0.570312, 0.578125, 0.570312, 0.5625, 0.578125, 0.578125, 0.578125, 0.554688, 0.5625, 0.585938}, + std::vector{0.554688, 0.570312, 0.5625, 0.5625, 0.570312, 0.570312, 0.585938, 0.570312, 0.570312, + 0.5625, 0.570312, 0.554688, 0.570312, 0.585938, 0.554688, 0.5625, 0.578125, 0.585938, + 0.570312, 0.578125, 0.570312, 0.570312, 0.585938, 0.570312, 0.585938, 0.570312, 0.5625, + 0.554688, 0.578125, 0.554688, 0.554688, 0.570312, 0.5625, 0.578125, 0.570312, 0.5625, + 0.570312, 0.5625, 0.5625, 0.578125, 0.570312, 0.578125, 0.570312, 0.5625, 0.578125, + 0.578125, 0.578125, 0.554688, 0.5625, 0.585938}, + std::vector{1.20312, 1.30469, 1.22656, 1.24219, 1.28906, 1.28125, 1.35938, 1.29688, 1.28125, 1.25, + 1.28906, 1.21875, 1.29688, 1.375, 1.21875, 1.25, 1.32812, 1.35156, 1.30469, 1.34375, + 1.30469, 1.26562, 1.35156, 1.26562, 1.35156, 1.28906, 1.23438, 1.21875, 1.32031, 1.21875, + 1.21875, 1.29688, 1.24219, 1.32031, 1.25781, 1.22656, 1.28125, 1.22656, 1.25, 1.3125, + 1.26562, 1.32031, 1.25781, 1.24219, 1.34375, 1.32812, 1.32812, 1.21875, 1.25, 1.375}), LSTMSequenceV1Params( - 5, 10, 10, 10, - 0.7f, false, op::RecurrentSequenceDirection::REVERSE, + 5, + 10, + 10, + 10, + 0.7f, + false, + op::RecurrentSequenceDirection::REVERSE, ET, std::vector{ - 1, 9.375, 9, 3.84375, 2.17188, 2.65625, 1.35938, 2.84375, 8.4375, 6.125, - 5.78125, 6.375, 9.625, 9.625, 5.15625, 6.875, 9.3125, 7.75, 4.375, 6.875, - 2.39062, 7.71875, 9, 9.625, 1.23438, 1.07812, 3.625, 1.95312, 4.5625, 3.6875, - 8.25, 6.90625, 6.625, 8.25, 9.125, 8.875, 6, 9.625, 8.5, 7.5, - 1.45312, 6.78125, 8.25, 7.4375, 9.375, 5.1875, 4.25, 3.9375, 7.1875, 4.9375, - 2.15625, 7.5625, 8.5, 9.9375, 3.85938, 7.0625, 7.625, 8.125, 6.375, 2.53125, - 4.25, 1.23438, 8.125, 8.1875, 7.28125, 9.125, 8.375, 1.21875, 9.125, 5.4375, - 8.5, 5.75, 9.1875, 6.375, 9.75, 1.46875, 6.875, 9, 8.25, 7.5625, - 1.92188, 8.375, 3.125, 5.5, 4.40625, 8.25, 7.28125, 1.85938, 5.375, 2.96875, - 4.75, 3.32812, 6.75, 5.1875, 7.8125, 5.125, 6, 7.375, 7.25, 2.59375, - 9.25, 5.78125, 1.21875, 2.5, 8.5, 7.90625, 4.4375, 9.375, 3.6875, 6.5, - 1.05469, 2.34375, 4.9375, 5.40625, 7.625, 4.375, 4.375, 8.625, 5.4375, 9.1875, - 1.125, 4.4375, 3.25, 3.84375, 4.125, 6.125, 8.125, 2.6875, 9.4375, 2.125, - 1.90625, 7.1875, 7.625, 8.1875, 9.75, 6.15625, 7.34375, 9.75, 9.5625, 6.6875, - 9.375, 9, 4.6875, 5.4375, 4.03125, 4.15625, 7.9375, 7.4375, 4, 5.53125, - 1.74219, 3.03125, 9.0625, 3.20312, 8.0625, 8.125, 7.4375, 5.4375, 5, 9.25, - 7.75, 9.5, 6.90625, 5.8125, 4.25, 3.26562, 4.375, 7.5, 6.84375, 4.3125, - 1.5, 5.5, 1.70312, 3.03125, 1.82812, 4.1875, 8.25, 6.84375, 1.58594, 3.8125, - 3.01562, 7.90625, 2.375, 8, 7.125, 8.625, 2.125, 9.5, 3.3125, 1.96875, - 4.9375, 9.1875, 1.98438, 4, 3.82812, 8.375, 4.15625, 9.0625, 7.84375, 1.38281, - 1.89062, 2.75, 9.375, 3.65625, 3.9375, 6.625, 4.8125, 1.77344, 3.4375, 2.28125, - 8.0625, 5.625, 5.0625, 7.1875, 1.75, 8.6875, 1.63281, 6.8125, 3.96875, 6.25, - 2.71875, 7.375, 8.5, 3.26562, 1.55469, 9.125, 6, 4.96875, 6.125, 1.1875, - 5.15625, 9.625, 9.5, 6.875, 4.09375, 5.625, 8.9375, 7.125, 4.875, 5.375, - 9.9375, 9.3125, 8.1875, 5.625, 9.5, 1.64844, 4.40625, 6.09375, 4.625, 6.53125, - 3.57812, 9.5, 5.0625, 4.75, 7.875, 3.375, 6.21875, 1.875, 4.375, 5.375, - 6.59375, 5.1875, 7.625, 1.26562, 9.25, 7.25, 5.78125, 7.4375, 5.65625, 7.5625, - 1.92188, 4.71875, 2.09375, 1.13281, 6.78125, 9.125, 5, 8.125, 1.6875, 2.48438, - 2.375, 3.8125, 1.71875, 6.5, 8.875, 4.25, 2.45312, 2.40625, 9.25, 2.59375, - 1.03125, 8.75, 8.25, 3.60938, 3.71875, 6.25, 3.1875, 5.0625, 7.90625, 4.6875, - 7.3125, 8.9375, 9, 7.21875, 9.1875, 3.5, 3.03125, 1.57812, 4.78125, 2.78125, - 2.5, 9.375, 2.89062, 8.6875, 8.5, 9.5625, 9.25, 1.46875, 7.125, 6.1875, - 4.6875, 5.3125, 3, 1.19531, 8.5, 4.375, 8, 4.71875, 7.625, 6.4375, - 8.75, 7.03125, 9.75, 8.5, 4.6875, 8, 6.375, 4.59375, 7.625, 8.125, - 3.40625, 9, 7.875, 3.35938, 9.375, 9.875, 8.875, 8.625, 2.03125, 7.5625, - 9.6875, 4.1875, 3.71875, 8.9375, 6.46875, 8.75, 2.5, 9.625, 8.75, 1, - 7.53125, 1.14844, 1.58594, 3.8125, 5.65625, 9.9375, 6.34375, 2.34375, 5.125, 2.5, - 6.3125, 7.8125, 3.875, 1.625, 8.375, 7.34375, 1.82812, 5.21875, 2.59375, 1.09375, - 2.98438, 7.96875, 5.25, 8.125, 9.25, 2.34375, 9.875, 1.21094, 6.4375, 7.84375, - 9.25, 3, 4.3125, 3.35938, 1.0625, 5.125, 6.875, 3.25, 2.5, 6.125, - 5.4375, 8.625, 8.125, 4.375, 8.375, 4.875, 4.3125, 8.5, 2.15625, 4.3125, - 2.78125, 1.35938, 1.1875, 6, 6.6875, 5.0625, 5.3125, 7.5, 2.90625, 4.375, - 3.375, 8.5625, 2.6875, 5.21875, 9, 6.0625, 7.4375, 6.9375, 1.60938, 5.15625, - 3.20312, 6.625, 9.25, 3, 2.84375, 7.59375, 5.1875, 4.4375, 7.875, 2.75, - 5.78125, 3.4375, 5.9375, 3.25, 3.10938, 2.375, 3.46875, 7.9375, 1.14844, 3.29688, - 4.8125, 2.14062, 1.42188, 7, 1.53125, 4.6875, 3.875, 7, 5, 6.9375, - 2.51562, 3.75, 3.71875, 2.8125, 5.03125, 3, 5.25, 2.07812, 7.3125, 1.32812, - 7.3125, 1.30469, 6.3125, 3.0625, 9.75, 3.0625, 6.9375, 6.625, 8.875, 9, - 4.71875, 8, 8.125, 7.5, 2.23438, 3.78125, 3.34375, 4.25, 3.03125, 2.75, - 5.78125, 9.375, 7.25, 6.0625, 3.1875, 8.375, 2.75, 4.125, 8.125, 10}, - std::vector{ - 1, 9.1875, 5.5625, 6.625, 2.65625, 8.125, 8.25, 4.875, 9.4375, 5.875, - 1.26562, 4.71875, 8.0625, 1.76562, 2.46875, 8, 4.875, 5.375, 6.15625, 1.45312, - 2.95312, 5.84375, 8.5, 1.375, 3.6875, 8.25, 4.25, 9.9375, 8.8125, 6.75, - 1.10938, 9.5, 7.0625, 7.625, 5.3125, 8.375, 9.75, 2.03125, 2.90625, 7.625, - 2.90625, 8.375, 9.5, 1.66406, 3.9375, 2.875, 9.875, 8.25, 4.9375, 10}, - std::vector{ - 1, 6.59375, 2.125, 2.89062, 5.71875, 5.0625, 9.75, 6, 4.9375, 3.21875, - 5.875, 1.85156, 6.28125, 9.875, 1.59375, 3.40625, 7.75, 9.25, 6.46875, 8.75, - 6.5, 4.0625, 9.125, 4.4375, 9.25, 5.5625, 2.625, 1.8125, 7.625, 1.875, - 1.26562, 6.3125, 3.03125, 7.3125, 3.92188, 2.21875, 4.90625, 2.10938, 3.28125, 6.875, - 4.375, 7.25, 3.92188, 3.09375, 8.375, 7.96875, 7.9375, 1.875, 3.125, 10}, + 1, 9.375, 9, 3.84375, 2.17188, 2.65625, 1.35938, 2.84375, 8.4375, 6.125, 5.78125, + 6.375, 9.625, 9.625, 5.15625, 6.875, 9.3125, 7.75, 4.375, 6.875, 2.39062, 7.71875, + 9, 9.625, 1.23438, 1.07812, 3.625, 1.95312, 4.5625, 3.6875, 8.25, 6.90625, 6.625, + 8.25, 9.125, 8.875, 6, 9.625, 8.5, 7.5, 1.45312, 6.78125, 8.25, 7.4375, + 9.375, 5.1875, 4.25, 3.9375, 7.1875, 4.9375, 2.15625, 7.5625, 8.5, 9.9375, 3.85938, + 7.0625, 7.625, 8.125, 6.375, 2.53125, 4.25, 1.23438, 8.125, 8.1875, 7.28125, 9.125, + 8.375, 1.21875, 9.125, 5.4375, 8.5, 5.75, 9.1875, 6.375, 9.75, 1.46875, 6.875, + 9, 8.25, 7.5625, 1.92188, 8.375, 3.125, 5.5, 4.40625, 8.25, 7.28125, 1.85938, + 5.375, 2.96875, 4.75, 3.32812, 6.75, 5.1875, 7.8125, 5.125, 6, 7.375, 7.25, + 2.59375, 9.25, 5.78125, 1.21875, 2.5, 8.5, 7.90625, 4.4375, 9.375, 3.6875, 6.5, + 1.05469, 2.34375, 4.9375, 5.40625, 7.625, 4.375, 4.375, 8.625, 5.4375, 9.1875, 1.125, + 4.4375, 3.25, 3.84375, 4.125, 6.125, 8.125, 2.6875, 9.4375, 2.125, 1.90625, 7.1875, + 7.625, 8.1875, 9.75, 6.15625, 7.34375, 9.75, 9.5625, 6.6875, 9.375, 9, 4.6875, + 5.4375, 4.03125, 4.15625, 7.9375, 7.4375, 4, 5.53125, 1.74219, 3.03125, 9.0625, 3.20312, + 8.0625, 8.125, 7.4375, 5.4375, 5, 9.25, 7.75, 9.5, 6.90625, 5.8125, 4.25, + 3.26562, 4.375, 7.5, 6.84375, 4.3125, 1.5, 5.5, 1.70312, 3.03125, 1.82812, 4.1875, + 8.25, 6.84375, 1.58594, 3.8125, 3.01562, 7.90625, 2.375, 8, 7.125, 8.625, 2.125, + 9.5, 3.3125, 1.96875, 4.9375, 9.1875, 1.98438, 4, 3.82812, 8.375, 4.15625, 9.0625, + 7.84375, 1.38281, 1.89062, 2.75, 9.375, 3.65625, 3.9375, 6.625, 4.8125, 1.77344, 3.4375, + 2.28125, 8.0625, 5.625, 5.0625, 7.1875, 1.75, 8.6875, 1.63281, 6.8125, 3.96875, 6.25, + 2.71875, 7.375, 8.5, 3.26562, 1.55469, 9.125, 6, 4.96875, 6.125, 1.1875, 5.15625, + 9.625, 9.5, 6.875, 4.09375, 5.625, 8.9375, 7.125, 4.875, 5.375, 9.9375, 9.3125, + 8.1875, 5.625, 9.5, 1.64844, 4.40625, 6.09375, 4.625, 6.53125, 3.57812, 9.5, 5.0625, + 4.75, 7.875, 3.375, 6.21875, 1.875, 4.375, 5.375, 6.59375, 5.1875, 7.625, 1.26562, + 9.25, 7.25, 5.78125, 7.4375, 5.65625, 7.5625, 1.92188, 4.71875, 2.09375, 1.13281, 6.78125, + 9.125, 5, 8.125, 1.6875, 2.48438, 2.375, 3.8125, 1.71875, 6.5, 8.875, 4.25, + 2.45312, 2.40625, 9.25, 2.59375, 1.03125, 8.75, 8.25, 3.60938, 3.71875, 6.25, 3.1875, + 5.0625, 7.90625, 4.6875, 7.3125, 8.9375, 9, 7.21875, 9.1875, 3.5, 3.03125, 1.57812, + 4.78125, 2.78125, 2.5, 9.375, 2.89062, 8.6875, 8.5, 9.5625, 9.25, 1.46875, 7.125, + 6.1875, 4.6875, 5.3125, 3, 1.19531, 8.5, 4.375, 8, 4.71875, 7.625, 6.4375, + 8.75, 7.03125, 9.75, 8.5, 4.6875, 8, 6.375, 4.59375, 7.625, 8.125, 3.40625, + 9, 7.875, 3.35938, 9.375, 9.875, 8.875, 8.625, 2.03125, 7.5625, 9.6875, 4.1875, + 3.71875, 8.9375, 6.46875, 8.75, 2.5, 9.625, 8.75, 1, 7.53125, 1.14844, 1.58594, + 3.8125, 5.65625, 9.9375, 6.34375, 2.34375, 5.125, 2.5, 6.3125, 7.8125, 3.875, 1.625, + 8.375, 7.34375, 1.82812, 5.21875, 2.59375, 1.09375, 2.98438, 7.96875, 5.25, 8.125, 9.25, + 2.34375, 9.875, 1.21094, 6.4375, 7.84375, 9.25, 3, 4.3125, 3.35938, 1.0625, 5.125, + 6.875, 3.25, 2.5, 6.125, 5.4375, 8.625, 8.125, 4.375, 8.375, 4.875, 4.3125, + 8.5, 2.15625, 4.3125, 2.78125, 1.35938, 1.1875, 6, 6.6875, 5.0625, 5.3125, 7.5, + 2.90625, 4.375, 3.375, 8.5625, 2.6875, 5.21875, 9, 6.0625, 7.4375, 6.9375, 1.60938, + 5.15625, 3.20312, 6.625, 9.25, 3, 2.84375, 7.59375, 5.1875, 4.4375, 7.875, 2.75, + 5.78125, 3.4375, 5.9375, 3.25, 3.10938, 2.375, 3.46875, 7.9375, 1.14844, 3.29688, 4.8125, + 2.14062, 1.42188, 7, 1.53125, 4.6875, 3.875, 7, 5, 6.9375, 2.51562, 3.75, + 3.71875, 2.8125, 5.03125, 3, 5.25, 2.07812, 7.3125, 1.32812, 7.3125, 1.30469, 6.3125, + 3.0625, 9.75, 3.0625, 6.9375, 6.625, 8.875, 9, 4.71875, 8, 8.125, 7.5, + 2.23438, 3.78125, 3.34375, 4.25, 3.03125, 2.75, 5.78125, 9.375, 7.25, 6.0625, 3.1875, + 8.375, 2.75, 4.125, 8.125, 10}, + std::vector{1, 9.1875, 5.5625, 6.625, 2.65625, 8.125, 8.25, 4.875, 9.4375, 5.875, + 1.26562, 4.71875, 8.0625, 1.76562, 2.46875, 8, 4.875, 5.375, 6.15625, 1.45312, + 2.95312, 5.84375, 8.5, 1.375, 3.6875, 8.25, 4.25, 9.9375, 8.8125, 6.75, + 1.10938, 9.5, 7.0625, 7.625, 5.3125, 8.375, 9.75, 2.03125, 2.90625, 7.625, + 2.90625, 8.375, 9.5, 1.66406, 3.9375, 2.875, 9.875, 8.25, 4.9375, 10}, + std::vector{1, 6.59375, 2.125, 2.89062, 5.71875, 5.0625, 9.75, 6, 4.9375, 3.21875, + 5.875, 1.85156, 6.28125, 9.875, 1.59375, 3.40625, 7.75, 9.25, 6.46875, 8.75, + 6.5, 4.0625, 9.125, 4.4375, 9.25, 5.5625, 2.625, 1.8125, 7.625, 1.875, + 1.26562, 6.3125, 3.03125, 7.3125, 3.92188, 2.21875, 4.90625, 2.10938, 3.28125, 6.875, + 4.375, 7.25, 3.92188, 3.09375, 8.375, 7.96875, 7.9375, 1.875, 3.125, 10}, std::vector{10, 10, 10, 10, 10}, std::vector{ - 1, 7.5, 1.57812, 10, 1.55469, 3.5, 9.0625, 7.5625, 9, 1.30469, - 6, 7.1875, 2.20312, 9, 5.6875, 2, 5.5625, 5.5625, 6.21875, 3.09375, - 3.82812, 7.28125, 9, 1.625, 6.78125, 9.875, 5.46875, 4.1875, 3.84375, 2.21875, - 1.57812, 9.125, 6, 6, 9.5, 2.28125, 8.375, 9.875, 2.32812, 5.96875, - 1.42969, 4.5625, 1.10156, 5.4375, 8.25, 1.625, 6.875, 4.6875, 6.15625, 6.15625, - 8.625, 4.125, 6.1875, 1.375, 6.1875, 8.875, 6, 3.40625, 1.75781, 4.8125, - 1.40625, 4.21875, 4, 6.4375, 6.5625, 4.1875, 8.25, 7.40625, 2.40625, 7, - 5.5625, 7.9375, 7.625, 4.75, 7, 1.625, 9.25, 7, 7, 2.5, - 5.9375, 7.1875, 6.875, 5.84375, 7.5625, 6.5, 2.09375, 6.0625, 2.4375, 3.34375, - 3.76562, 2.1875, 3.51562, 5.875, 2.54688, 8.3125, 9.125, 2.96875, 1.9375, 3.76562, - 4.1875, 6.28125, 4.84375, 7.5, 3.78125, 5.375, 2.84375, 8.5, 3.3125, 8.1875, - 4.21875, 6.375, 8.375, 1.46875, 6.625, 6.5625, 9.0625, 2.90625, 9.4375, 5.375, - 1.32812, 5.9375, 8.9375, 4.4375, 7.5625, 8.9375, 5.28125, 2.59375, 8.375, 5.15625, - 6.8125, 9.25, 5.3125, 4.375, 1.46875, 7.5625, 8.3125, 2.82812, 7.25, 7.03125, - 3.3125, 3.03125, 8.5, 3.21875, 8.875, 7, 9.6875, 5.28125, 3.65625, 1.8125, - 2.5, 4.0625, 6.15625, 8, 5.1875, 2.45312, 6.1875, 1.375, 7.9375, 7.1875, - 9.625, 7.5, 7.84375, 7.40625, 9.75, 7.09375, 2.0625, 1.5, 6.53125, 5, - 9.875, 6.6875, 5.875, 6.8125, 5.53125, 9.25, 4.0625, 4.1875, 1.46875, 5, - 8.6875, 3.70312, 1.85938, 1.21094, 2.71875, 1.82812, 9, 2.71875, 9.9375, 7.8125, - 4.3125, 8.8125, 2.8125, 3.23438, 4.375, 4.1875, 8.375, 8.75, 6.625, 5.34375, - 7.1875, 3.45312, 7.0625, 8.5, 5.8125, 4.875, 8.875, 3.5625, 3.84375, 6.1875, - 3.90625, 4.9375, 4.5625, 6.625, 2.59375, 9.875, 2.90625, 1.82031, 1.25781, 6, - 9.25, 4.09375, 9.125, 2.5625, 5.25, 2.34375, 5.90625, 7.90625, 9.75, 6.875, - 7.3125, 1.14062, 9.125, 7.75, 5.5625, 2.8125, 1.32812, 7.5625, 9, 7.125, - 8.625, 4.4375, 8.375, 6.375, 6.6875, 3.82812, 5.1875, 7.8125, 3.28125, 1.17188, - 7.125, 8.9375, 6.6875, 5.4375, 6.21875, 4.125, 1.40625, 3.51562, 3.5, 3.0625, - 1.03906, 7.28125, 2.64062, 8.125, 4.4375, 5.25, 1.75, 1.96875, 7.9375, 4.46875, - 6.25, 8.75, 1.80469, 3.375, 2.4375, 8.9375, 4.1875, 4.1875, 7.15625, 6.65625, - 8.375, 1.13281, 7.3125, 7.375, 3.3125, 1.36719, 7.40625, 6.375, 7.875, 4, - 8.5, 8.5, 6.1875, 2.3125, 6.5625, 6.25, 7.03125, 7.625, 5.1875, 6.71875, - 4.125, 7.4375, 1.09375, 5, 4.90625, 5.5625, 10, 8.0625, 2.625, 1.21875, - 7.46875, 3.125, 4.0625, 8.3125, 1.11719, 5.40625, 4.96875, 1.35156, 2.04688, 2.5, - 3.8125, 6.125, 3.78125, 2.82812, 8.9375, 6.90625, 3.6875, 1.95312, 9.8125, 7.25, - 4.125, 4.875, 1.54688, 6.40625, 2.57812, 6.46875, 5.34375, 7.8125, 9.9375, 5.5625, - 2.625, 7.1875, 8.375, 9.75, 1.67188, 3, 6.96875, 6, 1.53125, 2.09375, - 6.15625, 5.3125, 7.25, 7.3125, 3.625, 1.10938, 7.53125, 1.375, 7.84375, 7.96875, - 9.875, 9.8125, 5.78125, 7.9375, 4.3125, 8.0625, 7.8125, 6.5625, 2.21875, 4.0625, - 3.1875, 4.75, 8.25, 6.125, 3.03125, 6.1875, 4.125, 7.71875, 4.4375, 1.46875, - 4.40625, 6.375, 4.375, 1.48438, 2.65625, 1.80469, 7.5, 9.875, 7.25, 7.875, - 8.1875, 5.4375, 2.70312, 3.39062, 2.23438, 2.5625, 9.875, 1.76562, 3.3125, 10}, + 1, 7.5, 1.57812, 10, 1.55469, 3.5, 9.0625, 7.5625, 9, 1.30469, 6, + 7.1875, 2.20312, 9, 5.6875, 2, 5.5625, 5.5625, 6.21875, 3.09375, 3.82812, 7.28125, + 9, 1.625, 6.78125, 9.875, 5.46875, 4.1875, 3.84375, 2.21875, 1.57812, 9.125, 6, + 6, 9.5, 2.28125, 8.375, 9.875, 2.32812, 5.96875, 1.42969, 4.5625, 1.10156, 5.4375, + 8.25, 1.625, 6.875, 4.6875, 6.15625, 6.15625, 8.625, 4.125, 6.1875, 1.375, 6.1875, + 8.875, 6, 3.40625, 1.75781, 4.8125, 1.40625, 4.21875, 4, 6.4375, 6.5625, 4.1875, + 8.25, 7.40625, 2.40625, 7, 5.5625, 7.9375, 7.625, 4.75, 7, 1.625, 9.25, + 7, 7, 2.5, 5.9375, 7.1875, 6.875, 5.84375, 7.5625, 6.5, 2.09375, 6.0625, + 2.4375, 3.34375, 3.76562, 2.1875, 3.51562, 5.875, 2.54688, 8.3125, 9.125, 2.96875, 1.9375, + 3.76562, 4.1875, 6.28125, 4.84375, 7.5, 3.78125, 5.375, 2.84375, 8.5, 3.3125, 8.1875, + 4.21875, 6.375, 8.375, 1.46875, 6.625, 6.5625, 9.0625, 2.90625, 9.4375, 5.375, 1.32812, + 5.9375, 8.9375, 4.4375, 7.5625, 8.9375, 5.28125, 2.59375, 8.375, 5.15625, 6.8125, 9.25, + 5.3125, 4.375, 1.46875, 7.5625, 8.3125, 2.82812, 7.25, 7.03125, 3.3125, 3.03125, 8.5, + 3.21875, 8.875, 7, 9.6875, 5.28125, 3.65625, 1.8125, 2.5, 4.0625, 6.15625, 8, + 5.1875, 2.45312, 6.1875, 1.375, 7.9375, 7.1875, 9.625, 7.5, 7.84375, 7.40625, 9.75, + 7.09375, 2.0625, 1.5, 6.53125, 5, 9.875, 6.6875, 5.875, 6.8125, 5.53125, 9.25, + 4.0625, 4.1875, 1.46875, 5, 8.6875, 3.70312, 1.85938, 1.21094, 2.71875, 1.82812, 9, + 2.71875, 9.9375, 7.8125, 4.3125, 8.8125, 2.8125, 3.23438, 4.375, 4.1875, 8.375, 8.75, + 6.625, 5.34375, 7.1875, 3.45312, 7.0625, 8.5, 5.8125, 4.875, 8.875, 3.5625, 3.84375, + 6.1875, 3.90625, 4.9375, 4.5625, 6.625, 2.59375, 9.875, 2.90625, 1.82031, 1.25781, 6, + 9.25, 4.09375, 9.125, 2.5625, 5.25, 2.34375, 5.90625, 7.90625, 9.75, 6.875, 7.3125, + 1.14062, 9.125, 7.75, 5.5625, 2.8125, 1.32812, 7.5625, 9, 7.125, 8.625, 4.4375, + 8.375, 6.375, 6.6875, 3.82812, 5.1875, 7.8125, 3.28125, 1.17188, 7.125, 8.9375, 6.6875, + 5.4375, 6.21875, 4.125, 1.40625, 3.51562, 3.5, 3.0625, 1.03906, 7.28125, 2.64062, 8.125, + 4.4375, 5.25, 1.75, 1.96875, 7.9375, 4.46875, 6.25, 8.75, 1.80469, 3.375, 2.4375, + 8.9375, 4.1875, 4.1875, 7.15625, 6.65625, 8.375, 1.13281, 7.3125, 7.375, 3.3125, 1.36719, + 7.40625, 6.375, 7.875, 4, 8.5, 8.5, 6.1875, 2.3125, 6.5625, 6.25, 7.03125, + 7.625, 5.1875, 6.71875, 4.125, 7.4375, 1.09375, 5, 4.90625, 5.5625, 10, 8.0625, + 2.625, 1.21875, 7.46875, 3.125, 4.0625, 8.3125, 1.11719, 5.40625, 4.96875, 1.35156, 2.04688, + 2.5, 3.8125, 6.125, 3.78125, 2.82812, 8.9375, 6.90625, 3.6875, 1.95312, 9.8125, 7.25, + 4.125, 4.875, 1.54688, 6.40625, 2.57812, 6.46875, 5.34375, 7.8125, 9.9375, 5.5625, 2.625, + 7.1875, 8.375, 9.75, 1.67188, 3, 6.96875, 6, 1.53125, 2.09375, 6.15625, 5.3125, + 7.25, 7.3125, 3.625, 1.10938, 7.53125, 1.375, 7.84375, 7.96875, 9.875, 9.8125, 5.78125, + 7.9375, 4.3125, 8.0625, 7.8125, 6.5625, 2.21875, 4.0625, 3.1875, 4.75, 8.25, 6.125, + 3.03125, 6.1875, 4.125, 7.71875, 4.4375, 1.46875, 4.40625, 6.375, 4.375, 1.48438, 2.65625, + 1.80469, 7.5, 9.875, 7.25, 7.875, 8.1875, 5.4375, 2.70312, 3.39062, 2.23438, 2.5625, + 9.875, 1.76562, 3.3125, 10}, std::vector{ - 1, 6.125, 4.53125, 4.4375, 6.3125, 6.6875, 5.375, 8.25, 9.875, 9.375, - 9.0625, 5.9375, 3.0625, 6.75, 9.75, 8.8125, 3.5, 2.40625, 7.625, 2.21875, - 2.39062, 9.25, 6.1875, 4.0625, 6.25, 5.375, 8.25, 7.3125, 6.5, 7.8125, - 2.65625, 2.10938, 8.375, 7.65625, 4.09375, 2.71875, 9.4375, 7.0625, 6.5625, 8.625, - 7.625, 8.25, 2.10938, 8.625, 8.125, 7.40625, 4.5, 2.76562, 5.125, 9.625, - 8.5625, 8.75, 7.46875, 9.625, 8.875, 4.40625, 2.26562, 9.3125, 1.67188, 9.1875, - 6.1875, 4.78125, 5.5, 6.40625, 5.59375, 8.125, 7.65625, 1.75, 2.96875, 3.875, - 8.75, 1.99219, 3.53125, 2.53125, 9.375, 2.1875, 2.875, 1.86719, 9.25, 7.125, - 3.89062, 9.5, 1.92188, 5.4375, 4.5625, 1, 8, 3.96875, 9.375, 9.1875, - 1.19531, 6.875, 3.21875, 8.5625, 7.0625, 8.6875, 9.875, 4.65625, 9.5, 6.25, - 1.82812, 1.51562, 2.42188, 4.21875, 2.78125, 7.75, 4.96875, 3.89062, 2.76562, 9.25, - 5.84375, 5.84375, 8.375, 3.34375, 9.875, 2.625, 2.15625, 1.73438, 6.25, 8.875, - 4.0625, 7.8125, 4.625, 7.59375, 7.625, 2.71875, 4.25, 3.96875, 2, 2.9375, - 6.25, 7.3125, 7.09375, 7.1875, 7.40625, 1.13281, 9.625, 5.90625, 9.9375, 1.0625, - 2.10938, 9.5, 6.25, 5.1875, 3.3125, 9.4375, 6.84375, 8.25, 4.375, 4.59375, - 1.79688, 9, 7.9375, 2.64062, 9.75, 8.75, 9.6875, 3.59375, 4, 10, - 8.875, 2.82812, 9.0625, 8.8125, 1.76562, 2.23438, 6.625, 2.375, 3.70312, 8.375, - 8.625, 4, 6.1875, 9.8125, 2.625, 2.60938, 9.375, 1.625, 2.03125, 9.5, - 1.84375, 9.125, 7.75, 4.75, 2.0625, 2.375, 6.03125, 5.65625, 3.92188, 4.125, - 9.625, 4.25, 5.4375, 1.34375, 5.1875, 7.53125, 3.96875, 4.875, 1.65625, 3.54688, - 1.64062, 4.625, 1.51562, 4.4375, 4.375, 5.1875, 1.03906, 1.58594, 9.75, 2.78125, - 1.27344, 6.25, 6.4375, 9.5625, 4.625, 3.89062, 8.875, 5.875, 9.875, 4, - 9.625, 8.1875, 6, 6.5625, 3.1875, 5.9375, 1.17188, 6.375, 3.09375, 3.5, - 5.34375, 6.625, 9.6875, 1.85938, 2.85938, 9.75, 5.5, 7.6875, 1.86719, 1.03125, - 7.21875, 7.125, 7.75, 6.1875, 2, 2.59375, 2.46875, 8.25, 7.78125, 3.75, - 7.875, 4.6875, 8.0625, 7.9375, 2.53125, 6.5, 2.48438, 6.75, 2.60938, 1.60938, - 7.75, 2.28125, 8.75, 7.6875, 8.25, 8.0625, 1.23438, 6.0625, 1.53125, 6.96875, - 4.9375, 5.21875, 1.5, 5.125, 7.5, 7.1875, 6, 2.71875, 6.5625, 9.875, - 2.15625, 4.40625, 5.5, 3.98438, 5.5625, 8.875, 1.84375, 8.75, 8.875, 9.6875, - 8.8125, 2.78125, 1.16406, 6.03125, 7.625, 2.73438, 6.5, 5.6875, 9.75, 8.125, - 6.875, 7.34375, 9, 5.0625, 6.1875, 3.95312, 4.5, 2.35938, 4.6875, 9.875, - 1.09375, 6.09375, 4, 9.75, 8.5, 1.70312, 6.9375, 1.29688, 5.6875, 7.8125, - 9.625, 3.125, 7.1875, 6.6875, 7.84375, 1.21094, 1.71094, 5.875, 3.4375, 5.8125, - 4.25, 4.125, 7.875, 5.1875, 9.3125, 9, 4.4375, 1.0625, 3.01562, 5.25, - 3.09375, 7.375, 6.1875, 3.4375, 6.46875, 9.375, 5.625, 4.8125, 8.1875, 2.03125, - 8.75, 4.21875, 9.25, 8.3125, 1.1875, 3.0625, 1.6875, 3.375, 5.09375, 1.95312, - 1.25, 3.76562, 7.75, 5.09375, 6.1875, 4.625, 4.625, 1.49219, 4.96875, 9.875, - 2, 9, 4.46875, 7.25, 1.36719, 7.9375, 1.79688, 3, 7.5625, 2.625, - 7.5625, 1.92969, 2.32812, 3.25, 4.375, 1.125, 7.75, 2.4375, 3.34375, 5.6875, - 1.30469, 7.9375, 8.75, 3.625, 6.3125, 6.75, 1.73438, 2.5, 3.09375, 10}, + 1, 6.125, 4.53125, 4.4375, 6.3125, 6.6875, 5.375, 8.25, 9.875, 9.375, 9.0625, + 5.9375, 3.0625, 6.75, 9.75, 8.8125, 3.5, 2.40625, 7.625, 2.21875, 2.39062, 9.25, + 6.1875, 4.0625, 6.25, 5.375, 8.25, 7.3125, 6.5, 7.8125, 2.65625, 2.10938, 8.375, + 7.65625, 4.09375, 2.71875, 9.4375, 7.0625, 6.5625, 8.625, 7.625, 8.25, 2.10938, 8.625, + 8.125, 7.40625, 4.5, 2.76562, 5.125, 9.625, 8.5625, 8.75, 7.46875, 9.625, 8.875, + 4.40625, 2.26562, 9.3125, 1.67188, 9.1875, 6.1875, 4.78125, 5.5, 6.40625, 5.59375, 8.125, + 7.65625, 1.75, 2.96875, 3.875, 8.75, 1.99219, 3.53125, 2.53125, 9.375, 2.1875, 2.875, + 1.86719, 9.25, 7.125, 3.89062, 9.5, 1.92188, 5.4375, 4.5625, 1, 8, 3.96875, + 9.375, 9.1875, 1.19531, 6.875, 3.21875, 8.5625, 7.0625, 8.6875, 9.875, 4.65625, 9.5, + 6.25, 1.82812, 1.51562, 2.42188, 4.21875, 2.78125, 7.75, 4.96875, 3.89062, 2.76562, 9.25, + 5.84375, 5.84375, 8.375, 3.34375, 9.875, 2.625, 2.15625, 1.73438, 6.25, 8.875, 4.0625, + 7.8125, 4.625, 7.59375, 7.625, 2.71875, 4.25, 3.96875, 2, 2.9375, 6.25, 7.3125, + 7.09375, 7.1875, 7.40625, 1.13281, 9.625, 5.90625, 9.9375, 1.0625, 2.10938, 9.5, 6.25, + 5.1875, 3.3125, 9.4375, 6.84375, 8.25, 4.375, 4.59375, 1.79688, 9, 7.9375, 2.64062, + 9.75, 8.75, 9.6875, 3.59375, 4, 10, 8.875, 2.82812, 9.0625, 8.8125, 1.76562, + 2.23438, 6.625, 2.375, 3.70312, 8.375, 8.625, 4, 6.1875, 9.8125, 2.625, 2.60938, + 9.375, 1.625, 2.03125, 9.5, 1.84375, 9.125, 7.75, 4.75, 2.0625, 2.375, 6.03125, + 5.65625, 3.92188, 4.125, 9.625, 4.25, 5.4375, 1.34375, 5.1875, 7.53125, 3.96875, 4.875, + 1.65625, 3.54688, 1.64062, 4.625, 1.51562, 4.4375, 4.375, 5.1875, 1.03906, 1.58594, 9.75, + 2.78125, 1.27344, 6.25, 6.4375, 9.5625, 4.625, 3.89062, 8.875, 5.875, 9.875, 4, + 9.625, 8.1875, 6, 6.5625, 3.1875, 5.9375, 1.17188, 6.375, 3.09375, 3.5, 5.34375, + 6.625, 9.6875, 1.85938, 2.85938, 9.75, 5.5, 7.6875, 1.86719, 1.03125, 7.21875, 7.125, + 7.75, 6.1875, 2, 2.59375, 2.46875, 8.25, 7.78125, 3.75, 7.875, 4.6875, 8.0625, + 7.9375, 2.53125, 6.5, 2.48438, 6.75, 2.60938, 1.60938, 7.75, 2.28125, 8.75, 7.6875, + 8.25, 8.0625, 1.23438, 6.0625, 1.53125, 6.96875, 4.9375, 5.21875, 1.5, 5.125, 7.5, + 7.1875, 6, 2.71875, 6.5625, 9.875, 2.15625, 4.40625, 5.5, 3.98438, 5.5625, 8.875, + 1.84375, 8.75, 8.875, 9.6875, 8.8125, 2.78125, 1.16406, 6.03125, 7.625, 2.73438, 6.5, + 5.6875, 9.75, 8.125, 6.875, 7.34375, 9, 5.0625, 6.1875, 3.95312, 4.5, 2.35938, + 4.6875, 9.875, 1.09375, 6.09375, 4, 9.75, 8.5, 1.70312, 6.9375, 1.29688, 5.6875, + 7.8125, 9.625, 3.125, 7.1875, 6.6875, 7.84375, 1.21094, 1.71094, 5.875, 3.4375, 5.8125, + 4.25, 4.125, 7.875, 5.1875, 9.3125, 9, 4.4375, 1.0625, 3.01562, 5.25, 3.09375, + 7.375, 6.1875, 3.4375, 6.46875, 9.375, 5.625, 4.8125, 8.1875, 2.03125, 8.75, 4.21875, + 9.25, 8.3125, 1.1875, 3.0625, 1.6875, 3.375, 5.09375, 1.95312, 1.25, 3.76562, 7.75, + 5.09375, 6.1875, 4.625, 4.625, 1.49219, 4.96875, 9.875, 2, 9, 4.46875, 7.25, + 1.36719, 7.9375, 1.79688, 3, 7.5625, 2.625, 7.5625, 1.92969, 2.32812, 3.25, 4.375, + 1.125, 7.75, 2.4375, 3.34375, 5.6875, 1.30469, 7.9375, 8.75, 3.625, 6.3125, 6.75, + 1.73438, 2.5, 3.09375, 10}, + std::vector{1, 7.25, 1.08594, 1.90625, 7.3125, 8.1875, 1.84375, 9.8125, 3.65625, 7.6875, + 7.03125, 6.75, 9.875, 9, 2.28125, 4.625, 8.375, 8.125, 4.25, 9.9375, + 2.125, 1.92969, 1.35938, 7.625, 5.6875, 2.65625, 6.9375, 8.0625, 2.53125, 7.375, + 2.8125, 9.1875, 7.3125, 8.75, 7.15625, 7.15625, 3.8125, 6.75, 3.53125, 10}, + std::vector{0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, + 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, + 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, + 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094}, std::vector{ - 1, 7.25, 1.08594, 1.90625, 7.3125, 8.1875, 1.84375, 9.8125, 3.65625, 7.6875, - 7.03125, 6.75, 9.875, 9, 2.28125, 4.625, 8.375, 8.125, 4.25, 9.9375, - 2.125, 1.92969, 1.35938, 7.625, 5.6875, 2.65625, 6.9375, 8.0625, 2.53125, 7.375, - 2.8125, 9.1875, 7.3125, 8.75, 7.15625, 7.15625, 3.8125, 6.75, 3.53125, 10}, - std::vector{ - 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, - 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, - 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094}, - std::vector{ - 0.554688, 0.570312, 0.5625, 0.5625, 0.570312, 0.570312, 0.585938, 0.570312, 0.570312, 0.5625, - 0.554688, 0.585938, 0.5625, 0.570312, 0.578125, 0.578125, 0.59375, 0.578125, 0.578125, 0.570312, - 0.554688, 0.59375, 0.5625, 0.570312, 0.585938, 0.585938, 0.609375, 0.585938, 0.585938, 0.570312, - 0.554688, 0.601562, 0.570312, 0.578125, 0.601562, 0.59375, 0.625, 0.601562, 0.59375, 0.578125, + 0.554688, 0.570312, 0.5625, 0.5625, 0.570312, 0.570312, 0.585938, 0.570312, 0.570312, 0.5625, + 0.554688, 0.585938, 0.5625, 0.570312, 0.578125, 0.578125, 0.59375, 0.578125, 0.578125, 0.570312, + 0.554688, 0.59375, 0.5625, 0.570312, 0.585938, 0.585938, 0.609375, 0.585938, 0.585938, 0.570312, + 0.554688, 0.601562, 0.570312, 0.578125, 0.601562, 0.59375, 0.625, 0.601562, 0.59375, 0.578125, 0.554688, 0.617188, 0.570312, 0.585938, 0.617188, 0.609375, 0.640625, 0.617188, 0.609375, 0.585938, - 0.554688, 0.632812, 0.578125, 0.59375, 0.632812, 0.625, 0.65625, 0.632812, 0.625, 0.601562, + 0.554688, 0.632812, 0.578125, 0.59375, 0.632812, 0.625, 0.65625, 0.632812, 0.625, 0.601562, 0.546875, 0.648438, 0.585938, 0.609375, 0.648438, 0.640625, 0.664062, 0.648438, 0.640625, 0.617188, - 0.546875, 0.664062, 0.601562, 0.625, 0.65625, 0.65625, 0.667969, 0.65625, 0.65625, 0.632812, + 0.546875, 0.664062, 0.601562, 0.625, 0.65625, 0.65625, 0.667969, 0.65625, 0.65625, 0.632812, 0.539062, 0.667969, 0.617188, 0.640625, 0.664062, 0.664062, 0.667969, 0.664062, 0.664062, 0.648438, - 0.523438, 0.667969, 0.632812, 0.65625, 0.667969, 0.667969, 0.667969, 0.667969, 0.667969, 0.65625, - 0.570312, 0.554688, 0.570312, 0.585938, 0.554688, 0.5625, 0.578125, 0.585938, 0.570312, 0.578125, - 0.578125, 0.5625, 0.578125, 0.59375, 0.554688, 0.570312, 0.585938, 0.59375, 0.585938, 0.585938, - 0.585938, 0.5625, 0.585938, 0.609375, 0.5625, 0.570312, 0.601562, 0.601562, 0.59375, 0.601562, - 0.601562, 0.5625, 0.601562, 0.625, 0.5625, 0.578125, 0.617188, 0.617188, 0.601562, 0.617188, - 0.617188, 0.570312, 0.617188, 0.640625, 0.5625, 0.585938, 0.632812, 0.632812, 0.617188, 0.632812, - 0.632812, 0.570312, 0.632812, 0.65625, 0.570312, 0.601562, 0.648438, 0.648438, 0.632812, 0.648438, - 0.648438, 0.578125, 0.648438, 0.664062, 0.570312, 0.617188, 0.65625, 0.664062, 0.648438, 0.664062, - 0.65625, 0.585938, 0.664062, 0.667969, 0.578125, 0.632812, 0.664062, 0.667969, 0.664062, 0.664062, + 0.523438, 0.667969, 0.632812, 0.65625, 0.667969, 0.667969, 0.667969, 0.667969, 0.667969, 0.65625, + 0.570312, 0.554688, 0.570312, 0.585938, 0.554688, 0.5625, 0.578125, 0.585938, 0.570312, 0.578125, + 0.578125, 0.5625, 0.578125, 0.59375, 0.554688, 0.570312, 0.585938, 0.59375, 0.585938, 0.585938, + 0.585938, 0.5625, 0.585938, 0.609375, 0.5625, 0.570312, 0.601562, 0.601562, 0.59375, 0.601562, + 0.601562, 0.5625, 0.601562, 0.625, 0.5625, 0.578125, 0.617188, 0.617188, 0.601562, 0.617188, + 0.617188, 0.570312, 0.617188, 0.640625, 0.5625, 0.585938, 0.632812, 0.632812, 0.617188, 0.632812, + 0.632812, 0.570312, 0.632812, 0.65625, 0.570312, 0.601562, 0.648438, 0.648438, 0.632812, 0.648438, + 0.648438, 0.578125, 0.648438, 0.664062, 0.570312, 0.617188, 0.65625, 0.664062, 0.648438, 0.664062, + 0.65625, 0.585938, 0.664062, 0.667969, 0.578125, 0.632812, 0.664062, 0.667969, 0.664062, 0.664062, 0.664062, 0.601562, 0.664062, 0.667969, 0.585938, 0.648438, 0.667969, 0.667969, 0.667969, 0.667969, 0.667969, 0.617188, 0.667969, 0.667969, 0.601562, 0.664062, 0.667969, 0.667969, 0.667969, 0.667969, - 0.570312, 0.570312, 0.585938, 0.570312, 0.585938, 0.570312, 0.5625, 0.554688, 0.578125, 0.554688, - 0.585938, 0.570312, 0.59375, 0.570312, 0.59375, 0.578125, 0.5625, 0.5625, 0.585938, 0.5625, - 0.59375, 0.578125, 0.601562, 0.578125, 0.601562, 0.585938, 0.570312, 0.5625, 0.59375, 0.5625, - 0.601562, 0.585938, 0.617188, 0.585938, 0.617188, 0.601562, 0.570312, 0.5625, 0.609375, 0.5625, - 0.617188, 0.601562, 0.632812, 0.601562, 0.632812, 0.617188, 0.578125, 0.570312, 0.625, 0.570312, + 0.570312, 0.570312, 0.585938, 0.570312, 0.585938, 0.570312, 0.5625, 0.554688, 0.578125, 0.554688, + 0.585938, 0.570312, 0.59375, 0.570312, 0.59375, 0.578125, 0.5625, 0.5625, 0.585938, 0.5625, + 0.59375, 0.578125, 0.601562, 0.578125, 0.601562, 0.585938, 0.570312, 0.5625, 0.59375, 0.5625, + 0.601562, 0.585938, 0.617188, 0.585938, 0.617188, 0.601562, 0.570312, 0.5625, 0.609375, 0.5625, + 0.617188, 0.601562, 0.632812, 0.601562, 0.632812, 0.617188, 0.578125, 0.570312, 0.625, 0.570312, 0.632812, 0.617188, 0.648438, 0.617188, 0.648438, 0.632812, 0.585938, 0.570312, 0.640625, 0.570312, - 0.648438, 0.632812, 0.664062, 0.632812, 0.664062, 0.648438, 0.601562, 0.578125, 0.65625, 0.585938, - 0.664062, 0.648438, 0.667969, 0.648438, 0.667969, 0.65625, 0.617188, 0.585938, 0.664062, 0.59375, - 0.667969, 0.65625, 0.667969, 0.65625, 0.667969, 0.664062, 0.632812, 0.601562, 0.667969, 0.601562, + 0.648438, 0.632812, 0.664062, 0.632812, 0.664062, 0.648438, 0.601562, 0.578125, 0.65625, 0.585938, + 0.664062, 0.648438, 0.667969, 0.648438, 0.667969, 0.65625, 0.617188, 0.585938, 0.664062, 0.59375, + 0.667969, 0.65625, 0.667969, 0.65625, 0.667969, 0.664062, 0.632812, 0.601562, 0.667969, 0.601562, 0.667969, 0.664062, 0.667969, 0.664062, 0.667969, 0.667969, 0.648438, 0.617188, 0.667969, 0.617188, - 0.554688, 0.570312, 0.5625, 0.578125, 0.570312, 0.5625, 0.570312, 0.5625, 0.5625, 0.578125, - 0.554688, 0.578125, 0.570312, 0.585938, 0.570312, 0.5625, 0.578125, 0.5625, 0.570312, 0.585938, - 0.554688, 0.585938, 0.570312, 0.59375, 0.578125, 0.5625, 0.585938, 0.5625, 0.570312, 0.59375, - 0.554688, 0.601562, 0.578125, 0.609375, 0.585938, 0.570312, 0.59375, 0.570312, 0.578125, 0.609375, - 0.554688, 0.617188, 0.585938, 0.625, 0.59375, 0.570312, 0.609375, 0.570312, 0.585938, 0.625, - 0.554688, 0.632812, 0.59375, 0.640625, 0.609375, 0.585938, 0.625, 0.578125, 0.601562, 0.640625, - 0.554688, 0.648438, 0.609375, 0.65625, 0.625, 0.59375, 0.640625, 0.585938, 0.617188, 0.65625, - 0.5625, 0.664062, 0.625, 0.664062, 0.640625, 0.601562, 0.65625, 0.601562, 0.632812, 0.664062, - 0.5625, 0.664062, 0.640625, 0.667969, 0.65625, 0.617188, 0.664062, 0.617188, 0.648438, 0.667969, - 0.5625, 0.667969, 0.65625, 0.667969, 0.664062, 0.632812, 0.667969, 0.632812, 0.65625, 0.667969, - 0.570312, 0.578125, 0.570312, 0.5625, 0.578125, 0.578125, 0.578125, 0.554688, 0.5625, 0.585938, - 0.570312, 0.585938, 0.570312, 0.570312, 0.585938, 0.585938, 0.585938, 0.5625, 0.570312, 0.59375, - 0.578125, 0.59375, 0.578125, 0.570312, 0.601562, 0.601562, 0.601562, 0.5625, 0.570312, 0.609375, - 0.585938, 0.609375, 0.585938, 0.578125, 0.617188, 0.617188, 0.617188, 0.5625, 0.578125, 0.625, - 0.601562, 0.625, 0.59375, 0.585938, 0.632812, 0.632812, 0.632812, 0.570312, 0.585938, 0.640625, - 0.617188, 0.640625, 0.609375, 0.59375, 0.648438, 0.648438, 0.648438, 0.570312, 0.601562, 0.65625, - 0.632812, 0.65625, 0.625, 0.609375, 0.65625, 0.65625, 0.65625, 0.585938, 0.617188, 0.664062, - 0.648438, 0.664062, 0.640625, 0.625, 0.664062, 0.664062, 0.664062, 0.59375, 0.632812, 0.667969, - 0.65625, 0.667969, 0.65625, 0.648438, 0.667969, 0.667969, 0.667969, 0.601562, 0.648438, 0.667969, - 0.664062, 0.667969, 0.664062, 0.65625, 0.667969, 0.667969, 0.667969, 0.617188, 0.65625, 0.667969}, - std::vector{ - 0.554688, 0.570312, 0.5625, 0.5625, 0.570312, 0.570312, 0.585938, 0.570312, 0.570312, 0.5625, - 0.570312, 0.554688, 0.570312, 0.585938, 0.554688, 0.5625, 0.578125, 0.585938, 0.570312, 0.578125, - 0.570312, 0.570312, 0.585938, 0.570312, 0.585938, 0.570312, 0.5625, 0.554688, 0.578125, 0.554688, - 0.554688, 0.570312, 0.5625, 0.578125, 0.570312, 0.5625, 0.570312, 0.5625, 0.5625, 0.578125, - 0.570312, 0.578125, 0.570312, 0.5625, 0.578125, 0.578125, 0.578125, 0.554688, 0.5625, 0.585938}, - std::vector{ - 1.20312, 1.30469, 1.22656, 1.24219, 1.28906, 1.28125, 1.35938, 1.29688, 1.28125, 1.25, - 1.28906, 1.21875, 1.29688, 1.375, 1.21875, 1.25, 1.32812, 1.35156, 1.30469, 1.34375, - 1.30469, 1.26562, 1.35156, 1.26562, 1.35156, 1.28906, 1.23438, 1.21875, 1.32031, 1.21875, - 1.21875, 1.29688, 1.24219, 1.32031, 1.25781, 1.22656, 1.28125, 1.22656, 1.25, 1.3125, - 1.26562, 1.32031, 1.25781, 1.24219, 1.34375, 1.32812, 1.32812, 1.21875, 1.25, 1.375}), + 0.554688, 0.570312, 0.5625, 0.578125, 0.570312, 0.5625, 0.570312, 0.5625, 0.5625, 0.578125, + 0.554688, 0.578125, 0.570312, 0.585938, 0.570312, 0.5625, 0.578125, 0.5625, 0.570312, 0.585938, + 0.554688, 0.585938, 0.570312, 0.59375, 0.578125, 0.5625, 0.585938, 0.5625, 0.570312, 0.59375, + 0.554688, 0.601562, 0.578125, 0.609375, 0.585938, 0.570312, 0.59375, 0.570312, 0.578125, 0.609375, + 0.554688, 0.617188, 0.585938, 0.625, 0.59375, 0.570312, 0.609375, 0.570312, 0.585938, 0.625, + 0.554688, 0.632812, 0.59375, 0.640625, 0.609375, 0.585938, 0.625, 0.578125, 0.601562, 0.640625, + 0.554688, 0.648438, 0.609375, 0.65625, 0.625, 0.59375, 0.640625, 0.585938, 0.617188, 0.65625, + 0.5625, 0.664062, 0.625, 0.664062, 0.640625, 0.601562, 0.65625, 0.601562, 0.632812, 0.664062, + 0.5625, 0.664062, 0.640625, 0.667969, 0.65625, 0.617188, 0.664062, 0.617188, 0.648438, 0.667969, + 0.5625, 0.667969, 0.65625, 0.667969, 0.664062, 0.632812, 0.667969, 0.632812, 0.65625, 0.667969, + 0.570312, 0.578125, 0.570312, 0.5625, 0.578125, 0.578125, 0.578125, 0.554688, 0.5625, 0.585938, + 0.570312, 0.585938, 0.570312, 0.570312, 0.585938, 0.585938, 0.585938, 0.5625, 0.570312, 0.59375, + 0.578125, 0.59375, 0.578125, 0.570312, 0.601562, 0.601562, 0.601562, 0.5625, 0.570312, 0.609375, + 0.585938, 0.609375, 0.585938, 0.578125, 0.617188, 0.617188, 0.617188, 0.5625, 0.578125, 0.625, + 0.601562, 0.625, 0.59375, 0.585938, 0.632812, 0.632812, 0.632812, 0.570312, 0.585938, 0.640625, + 0.617188, 0.640625, 0.609375, 0.59375, 0.648438, 0.648438, 0.648438, 0.570312, 0.601562, 0.65625, + 0.632812, 0.65625, 0.625, 0.609375, 0.65625, 0.65625, 0.65625, 0.585938, 0.617188, 0.664062, + 0.648438, 0.664062, 0.640625, 0.625, 0.664062, 0.664062, 0.664062, 0.59375, 0.632812, 0.667969, + 0.65625, 0.667969, 0.65625, 0.648438, 0.667969, 0.667969, 0.667969, 0.601562, 0.648438, 0.667969, + 0.664062, 0.667969, 0.664062, 0.65625, 0.667969, 0.667969, 0.667969, 0.617188, 0.65625, 0.667969}, + std::vector{0.554688, 0.570312, 0.5625, 0.5625, 0.570312, 0.570312, 0.585938, 0.570312, 0.570312, + 0.5625, 0.570312, 0.554688, 0.570312, 0.585938, 0.554688, 0.5625, 0.578125, 0.585938, + 0.570312, 0.578125, 0.570312, 0.570312, 0.585938, 0.570312, 0.585938, 0.570312, 0.5625, + 0.554688, 0.578125, 0.554688, 0.554688, 0.570312, 0.5625, 0.578125, 0.570312, 0.5625, + 0.570312, 0.5625, 0.5625, 0.578125, 0.570312, 0.578125, 0.570312, 0.5625, 0.578125, + 0.578125, 0.578125, 0.554688, 0.5625, 0.585938}, + std::vector{1.20312, 1.30469, 1.22656, 1.24219, 1.28906, 1.28125, 1.35938, 1.29688, 1.28125, 1.25, + 1.28906, 1.21875, 1.29688, 1.375, 1.21875, 1.25, 1.32812, 1.35156, 1.30469, 1.34375, + 1.30469, 1.26562, 1.35156, 1.26562, 1.35156, 1.28906, 1.23438, 1.21875, 1.32031, 1.21875, + 1.21875, 1.29688, 1.24219, 1.32031, 1.25781, 1.22656, 1.28125, 1.22656, 1.25, 1.3125, + 1.26562, 1.32031, 1.25781, 1.24219, 1.34375, 1.32812, 1.32812, 1.21875, 1.25, 1.375}), LSTMSequenceV1Params( - 5, 10, 10, 5, - 0.7f, true, op::RecurrentSequenceDirection::BIDIRECTIONAL, + 5, + 10, + 10, + 5, + 0.7f, + true, + op::RecurrentSequenceDirection::BIDIRECTIONAL, ET, std::vector{ - 1, 9.375, 9, 3.84375, 2.17188, 2.65625, 1.35938, 2.84375, 8.4375, 6.125, - 5.78125, 6.375, 9.625, 9.625, 5.15625, 6.875, 9.3125, 7.75, 4.375, 6.875, - 2.39062, 7.71875, 9, 9.625, 1.23438, 1.07812, 3.625, 1.95312, 4.5625, 3.6875, - 8.25, 6.90625, 6.625, 8.25, 9.125, 8.875, 6, 9.625, 8.5, 7.5, - 1.45312, 6.78125, 8.25, 7.4375, 9.375, 5.1875, 4.25, 3.9375, 7.1875, 4.9375, - 2.15625, 7.5625, 8.5, 9.9375, 3.85938, 7.0625, 7.625, 8.125, 6.375, 2.53125, - 4.25, 1.23438, 8.125, 8.1875, 7.28125, 9.125, 8.375, 1.21875, 9.125, 5.4375, - 8.5, 5.75, 9.1875, 6.375, 9.75, 1.46875, 6.875, 9, 8.25, 7.5625, - 1.92188, 8.375, 3.125, 5.5, 4.40625, 8.25, 7.28125, 1.85938, 5.375, 2.96875, - 4.75, 3.32812, 6.75, 5.1875, 7.8125, 5.125, 6, 7.375, 7.25, 2.59375, - 9.25, 5.78125, 1.21875, 2.5, 8.5, 7.90625, 4.4375, 9.375, 3.6875, 6.5, - 1.05469, 2.34375, 4.9375, 5.40625, 7.625, 4.375, 4.375, 8.625, 5.4375, 9.1875, - 1.125, 4.4375, 3.25, 3.84375, 4.125, 6.125, 8.125, 2.6875, 9.4375, 2.125, - 1.90625, 7.1875, 7.625, 8.1875, 9.75, 6.15625, 7.34375, 9.75, 9.5625, 6.6875, - 9.375, 9, 4.6875, 5.4375, 4.03125, 4.15625, 7.9375, 7.4375, 4, 5.53125, - 1.74219, 3.03125, 9.0625, 3.20312, 8.0625, 8.125, 7.4375, 5.4375, 5, 9.25, - 7.75, 9.5, 6.90625, 5.8125, 4.25, 3.26562, 4.375, 7.5, 6.84375, 4.3125, - 1.5, 5.5, 1.70312, 3.03125, 1.82812, 4.1875, 8.25, 6.84375, 1.58594, 3.8125, - 3.01562, 7.90625, 2.375, 8, 7.125, 8.625, 2.125, 9.5, 3.3125, 1.96875, - 4.9375, 9.1875, 1.98438, 4, 3.82812, 8.375, 4.15625, 9.0625, 7.84375, 1.38281, - 1.89062, 2.75, 9.375, 3.65625, 3.9375, 6.625, 4.8125, 1.77344, 3.4375, 2.28125, - 8.0625, 5.625, 5.0625, 7.1875, 1.75, 8.6875, 1.63281, 6.8125, 3.96875, 6.25, - 2.71875, 7.375, 8.5, 3.26562, 1.55469, 9.125, 6, 4.96875, 6.125, 1.1875, - 5.15625, 9.625, 9.5, 6.875, 4.09375, 5.625, 8.9375, 7.125, 4.875, 5.375, - 9.9375, 9.3125, 8.1875, 5.625, 9.5, 1.64844, 4.40625, 6.09375, 4.625, 10}, - std::vector{ - 1, 9.1875, 5.5625, 6.625, 2.65625, 8.125, 8.25, 4.875, 9.4375, 5.875, - 1.26562, 4.71875, 8.0625, 1.76562, 2.46875, 8, 4.875, 5.375, 6.15625, 1.45312, - 2.95312, 5.84375, 8.5, 1.375, 3.6875, 8.25, 4.25, 9.9375, 8.8125, 6.75, - 1.10938, 9.5, 7.0625, 7.625, 5.3125, 8.375, 9.75, 2.03125, 2.90625, 7.625, - 2.90625, 8.375, 9.5, 1.66406, 3.9375, 2.875, 9.875, 8.25, 4.9375, 9.25, - 9.6875, 2.34375, 3.3125, 9.625, 7.8125, 4.34375, 2.71875, 7.4375, 3.53125, 1.9375, - 7.9375, 8.875, 1.07031, 6.25, 4.1875, 7.125, 3.09375, 9, 4.4375, 2.60938, - 1.98438, 2.76562, 4.65625, 5.125, 4.625, 8.375, 7.9375, 6.6875, 8.5625, 6.8125, - 4.53125, 5.09375, 5.1875, 6.0625, 1.9375, 7, 2.71875, 6.8125, 7.0625, 1.42188, - 5.25, 3.34375, 8.1875, 1.07812, 3.21875, 8.6875, 7.6875, 1.27344, 7.0625, 10}, - std::vector{ - 1, 6.59375, 2.125, 2.89062, 5.71875, 5.0625, 9.75, 6, 4.9375, 3.21875, - 5.875, 1.85156, 6.28125, 9.875, 1.59375, 3.40625, 7.75, 9.25, 6.46875, 8.75, - 6.5, 4.0625, 9.125, 4.4375, 9.25, 5.5625, 2.625, 1.8125, 7.625, 1.875, - 1.26562, 6.3125, 3.03125, 7.3125, 3.92188, 2.21875, 4.90625, 2.10938, 3.28125, 6.875, - 4.375, 7.25, 3.92188, 3.09375, 8.375, 7.96875, 7.9375, 1.875, 3.125, 4.9375, - 1.32031, 3.67188, 4, 7.4375, 8.875, 6.75, 3.28125, 1.71875, 8.25, 2.39062, - 5.84375, 6.84375, 9.0625, 1.71875, 6.25, 7, 7.28125, 3.8125, 7.53125, 6.0625, - 1.48438, 2.64062, 5.6875, 2.34375, 6.4375, 9.375, 9.625, 7.25, 3.70312, 7.5, - 3.65625, 8.375, 10, 6.5, 5.65625, 5.9375, 7.0625, 5.5625, 5.375, 9, - 4.625, 7.3125, 4.8125, 1.71875, 1.51562, 2.3125, 8.875, 8.625, 9, 10}, + 1, 9.375, 9, 3.84375, 2.17188, 2.65625, 1.35938, 2.84375, 8.4375, 6.125, 5.78125, + 6.375, 9.625, 9.625, 5.15625, 6.875, 9.3125, 7.75, 4.375, 6.875, 2.39062, 7.71875, + 9, 9.625, 1.23438, 1.07812, 3.625, 1.95312, 4.5625, 3.6875, 8.25, 6.90625, 6.625, + 8.25, 9.125, 8.875, 6, 9.625, 8.5, 7.5, 1.45312, 6.78125, 8.25, 7.4375, + 9.375, 5.1875, 4.25, 3.9375, 7.1875, 4.9375, 2.15625, 7.5625, 8.5, 9.9375, 3.85938, + 7.0625, 7.625, 8.125, 6.375, 2.53125, 4.25, 1.23438, 8.125, 8.1875, 7.28125, 9.125, + 8.375, 1.21875, 9.125, 5.4375, 8.5, 5.75, 9.1875, 6.375, 9.75, 1.46875, 6.875, + 9, 8.25, 7.5625, 1.92188, 8.375, 3.125, 5.5, 4.40625, 8.25, 7.28125, 1.85938, + 5.375, 2.96875, 4.75, 3.32812, 6.75, 5.1875, 7.8125, 5.125, 6, 7.375, 7.25, + 2.59375, 9.25, 5.78125, 1.21875, 2.5, 8.5, 7.90625, 4.4375, 9.375, 3.6875, 6.5, + 1.05469, 2.34375, 4.9375, 5.40625, 7.625, 4.375, 4.375, 8.625, 5.4375, 9.1875, 1.125, + 4.4375, 3.25, 3.84375, 4.125, 6.125, 8.125, 2.6875, 9.4375, 2.125, 1.90625, 7.1875, + 7.625, 8.1875, 9.75, 6.15625, 7.34375, 9.75, 9.5625, 6.6875, 9.375, 9, 4.6875, + 5.4375, 4.03125, 4.15625, 7.9375, 7.4375, 4, 5.53125, 1.74219, 3.03125, 9.0625, 3.20312, + 8.0625, 8.125, 7.4375, 5.4375, 5, 9.25, 7.75, 9.5, 6.90625, 5.8125, 4.25, + 3.26562, 4.375, 7.5, 6.84375, 4.3125, 1.5, 5.5, 1.70312, 3.03125, 1.82812, 4.1875, + 8.25, 6.84375, 1.58594, 3.8125, 3.01562, 7.90625, 2.375, 8, 7.125, 8.625, 2.125, + 9.5, 3.3125, 1.96875, 4.9375, 9.1875, 1.98438, 4, 3.82812, 8.375, 4.15625, 9.0625, + 7.84375, 1.38281, 1.89062, 2.75, 9.375, 3.65625, 3.9375, 6.625, 4.8125, 1.77344, 3.4375, + 2.28125, 8.0625, 5.625, 5.0625, 7.1875, 1.75, 8.6875, 1.63281, 6.8125, 3.96875, 6.25, + 2.71875, 7.375, 8.5, 3.26562, 1.55469, 9.125, 6, 4.96875, 6.125, 1.1875, 5.15625, + 9.625, 9.5, 6.875, 4.09375, 5.625, 8.9375, 7.125, 4.875, 5.375, 9.9375, 9.3125, + 8.1875, 5.625, 9.5, 1.64844, 4.40625, 6.09375, 4.625, 10}, + std::vector{1, 9.1875, 5.5625, 6.625, 2.65625, 8.125, 8.25, 4.875, 9.4375, 5.875, + 1.26562, 4.71875, 8.0625, 1.76562, 2.46875, 8, 4.875, 5.375, 6.15625, 1.45312, + 2.95312, 5.84375, 8.5, 1.375, 3.6875, 8.25, 4.25, 9.9375, 8.8125, 6.75, + 1.10938, 9.5, 7.0625, 7.625, 5.3125, 8.375, 9.75, 2.03125, 2.90625, 7.625, + 2.90625, 8.375, 9.5, 1.66406, 3.9375, 2.875, 9.875, 8.25, 4.9375, 9.25, + 9.6875, 2.34375, 3.3125, 9.625, 7.8125, 4.34375, 2.71875, 7.4375, 3.53125, 1.9375, + 7.9375, 8.875, 1.07031, 6.25, 4.1875, 7.125, 3.09375, 9, 4.4375, 2.60938, + 1.98438, 2.76562, 4.65625, 5.125, 4.625, 8.375, 7.9375, 6.6875, 8.5625, 6.8125, + 4.53125, 5.09375, 5.1875, 6.0625, 1.9375, 7, 2.71875, 6.8125, 7.0625, 1.42188, + 5.25, 3.34375, 8.1875, 1.07812, 3.21875, 8.6875, 7.6875, 1.27344, 7.0625, 10}, + std::vector{1, 6.59375, 2.125, 2.89062, 5.71875, 5.0625, 9.75, 6, 4.9375, 3.21875, + 5.875, 1.85156, 6.28125, 9.875, 1.59375, 3.40625, 7.75, 9.25, 6.46875, 8.75, + 6.5, 4.0625, 9.125, 4.4375, 9.25, 5.5625, 2.625, 1.8125, 7.625, 1.875, + 1.26562, 6.3125, 3.03125, 7.3125, 3.92188, 2.21875, 4.90625, 2.10938, 3.28125, 6.875, + 4.375, 7.25, 3.92188, 3.09375, 8.375, 7.96875, 7.9375, 1.875, 3.125, 4.9375, + 1.32031, 3.67188, 4, 7.4375, 8.875, 6.75, 3.28125, 1.71875, 8.25, 2.39062, + 5.84375, 6.84375, 9.0625, 1.71875, 6.25, 7, 7.28125, 3.8125, 7.53125, 6.0625, + 1.48438, 2.64062, 5.6875, 2.34375, 6.4375, 9.375, 9.625, 7.25, 3.70312, 7.5, + 3.65625, 8.375, 10, 6.5, 5.65625, 5.9375, 7.0625, 5.5625, 5.375, 9, + 4.625, 7.3125, 4.8125, 1.71875, 1.51562, 2.3125, 8.875, 8.625, 9, 10}, std::vector{5, 5, 5, 5, 5}, std::vector{ - 1, 7.5, 1.57812, 10, 1.55469, 3.5, 9.0625, 7.5625, 9, 1.30469, - 6, 7.1875, 2.20312, 9, 5.6875, 2, 5.5625, 5.5625, 6.21875, 3.09375, - 3.82812, 7.28125, 9, 1.625, 6.78125, 9.875, 5.46875, 4.1875, 3.84375, 2.21875, - 1.57812, 9.125, 6, 6, 9.5, 2.28125, 8.375, 9.875, 2.32812, 5.96875, - 1.42969, 4.5625, 1.10156, 5.4375, 8.25, 1.625, 6.875, 4.6875, 6.15625, 6.15625, - 8.625, 4.125, 6.1875, 1.375, 6.1875, 8.875, 6, 3.40625, 1.75781, 4.8125, - 1.40625, 4.21875, 4, 6.4375, 6.5625, 4.1875, 8.25, 7.40625, 2.40625, 7, - 5.5625, 7.9375, 7.625, 4.75, 7, 1.625, 9.25, 7, 7, 2.5, - 5.9375, 7.1875, 6.875, 5.84375, 7.5625, 6.5, 2.09375, 6.0625, 2.4375, 3.34375, - 3.76562, 2.1875, 3.51562, 5.875, 2.54688, 8.3125, 9.125, 2.96875, 1.9375, 3.76562, - 4.1875, 6.28125, 4.84375, 7.5, 3.78125, 5.375, 2.84375, 8.5, 3.3125, 8.1875, - 4.21875, 6.375, 8.375, 1.46875, 6.625, 6.5625, 9.0625, 2.90625, 9.4375, 5.375, - 1.32812, 5.9375, 8.9375, 4.4375, 7.5625, 8.9375, 5.28125, 2.59375, 8.375, 5.15625, - 6.8125, 9.25, 5.3125, 4.375, 1.46875, 7.5625, 8.3125, 2.82812, 7.25, 7.03125, - 3.3125, 3.03125, 8.5, 3.21875, 8.875, 7, 9.6875, 5.28125, 3.65625, 1.8125, - 2.5, 4.0625, 6.15625, 8, 5.1875, 2.45312, 6.1875, 1.375, 7.9375, 7.1875, - 9.625, 7.5, 7.84375, 7.40625, 9.75, 7.09375, 2.0625, 1.5, 6.53125, 5, - 9.875, 6.6875, 5.875, 6.8125, 5.53125, 9.25, 4.0625, 4.1875, 1.46875, 5, - 8.6875, 3.70312, 1.85938, 1.21094, 2.71875, 1.82812, 9, 2.71875, 9.9375, 7.8125, - 4.3125, 8.8125, 2.8125, 3.23438, 4.375, 4.1875, 8.375, 8.75, 6.625, 5.34375, - 7.1875, 3.45312, 7.0625, 8.5, 5.8125, 4.875, 8.875, 3.5625, 3.84375, 6.1875, - 3.90625, 4.9375, 4.5625, 6.625, 2.59375, 9.875, 2.90625, 1.82031, 1.25781, 6, - 9.25, 4.09375, 9.125, 2.5625, 5.25, 2.34375, 5.90625, 7.90625, 9.75, 6.875, - 7.3125, 1.14062, 9.125, 7.75, 5.5625, 2.8125, 1.32812, 7.5625, 9, 7.125, - 8.625, 4.4375, 8.375, 6.375, 6.6875, 3.82812, 5.1875, 7.8125, 3.28125, 1.17188, - 7.125, 8.9375, 6.6875, 5.4375, 6.21875, 4.125, 1.40625, 3.51562, 3.5, 3.0625, - 1.03906, 7.28125, 2.64062, 8.125, 4.4375, 5.25, 1.75, 1.96875, 7.9375, 4.46875, - 6.25, 8.75, 1.80469, 3.375, 2.4375, 8.9375, 4.1875, 4.1875, 7.15625, 6.65625, - 8.375, 1.13281, 7.3125, 7.375, 3.3125, 1.36719, 7.40625, 6.375, 7.875, 4, - 8.5, 8.5, 6.1875, 2.3125, 6.5625, 6.25, 7.03125, 7.625, 5.1875, 6.71875, - 4.125, 7.4375, 1.09375, 5, 4.90625, 5.5625, 10, 8.0625, 2.625, 1.21875, - 7.46875, 3.125, 4.0625, 8.3125, 1.11719, 5.40625, 4.96875, 1.35156, 2.04688, 2.5, - 3.8125, 6.125, 3.78125, 2.82812, 8.9375, 6.90625, 3.6875, 1.95312, 9.8125, 7.25, - 4.125, 4.875, 1.54688, 6.40625, 2.57812, 6.46875, 5.34375, 7.8125, 9.9375, 5.5625, - 2.625, 7.1875, 8.375, 9.75, 1.67188, 3, 6.96875, 6, 1.53125, 2.09375, - 6.15625, 5.3125, 7.25, 7.3125, 3.625, 1.10938, 7.53125, 1.375, 7.84375, 7.96875, - 9.875, 9.8125, 5.78125, 7.9375, 4.3125, 8.0625, 7.8125, 6.5625, 2.21875, 4.0625, - 3.1875, 4.75, 8.25, 6.125, 3.03125, 6.1875, 4.125, 7.71875, 4.4375, 1.46875, - 4.40625, 6.375, 4.375, 1.48438, 2.65625, 1.80469, 7.5, 9.875, 7.25, 7.875, - 8.1875, 5.4375, 2.70312, 3.39062, 2.23438, 2.5625, 9.875, 1.76562, 3.3125, 3.10938, - 2.78125, 6.9375, 7.3125, 5.59375, 1.03125, 5.9375, 3.15625, 6.1875, 3.15625, 7.5, - 4.625, 5.65625, 2.89062, 2.71875, 8.75, 1.85938, 3.8125, 2.71875, 4.03125, 6.25, - 5.0625, 8, 7.4375, 5.625, 3, 1.1875, 6.75, 4.4375, 5.6875, 7.625, - 5.125, 9.625, 5.4375, 3.28125, 1.78125, 2.03125, 6.65625, 6.875, 3.85938, 7.0625, - 8.1875, 2.15625, 6.8125, 3.84375, 5.15625, 8.875, 7.09375, 8.375, 8.875, 8.75, - 2.79688, 3.1875, 2.0625, 9.75, 9.4375, 4.3125, 5.5625, 8.8125, 5.09375, 4, - 5.375, 7.375, 4.75, 8.875, 6.5, 1.25, 5.9375, 8.125, 7.4375, 5.625, - 7.34375, 9.75, 8.625, 7.125, 3.5625, 1.67969, 6.75, 3.35938, 2.375, 5.9375, - 8.375, 1.95312, 4.8125, 4.0625, 4.5625, 1.21875, 3.10938, 1.96094, 4.625, 3.4375, - 1.97656, 2.32812, 6.28125, 5.0625, 4.5625, 1.375, 2.53125, 1.23438, 8.125, 9.75, - 1.59375, 4.6875, 1.89062, 2.625, 7.3125, 5.5, 2.15625, 6.84375, 4.0625, 9.875, - 8.9375, 5.4375, 9.9375, 3.96875, 9.75, 7.5, 6.59375, 2.96875, 6.625, 1.05469, - 8.125, 7.6875, 5, 3.92188, 8.3125, 6.65625, 9.4375, 8.125, 1.53125, 3.75, - 4.875, 9.375, 9, 5.53125, 3.65625, 2.29688, 6.125, 4.21875, 9.375, 1.39062, - 6.125, 8, 1.34375, 6.90625, 6.84375, 6.4375, 1.26562, 4.375, 5.875, 5.0625, - 6.375, 2.73438, 9.4375, 7.90625, 6.15625, 6.3125, 1.46875, 6.125, 2.32812, 2.53125, - 4.71875, 7.40625, 2.57812, 1.9375, 8.75, 5.0625, 2.25, 1.95312, 2.79688, 3.40625, - 6.53125, 3.98438, 9.75, 4.875, 2.67188, 9.25, 1.5, 6.9375, 9.25, 2.46875, - 6.6875, 2.1875, 2.48438, 6.40625, 2.9375, 1.25, 8.875, 3.8125, 9.5, 2.375, - 2.53125, 8.5, 3.28125, 7.4375, 2.9375, 6.53125, 2.0625, 3.45312, 3.5, 1.60938, - 8, 5.25, 6.5, 8.875, 2.89062, 4.5625, 9.4375, 9.625, 9.375, 3.4375, - 5, 7.46875, 3.71875, 2.875, 1.09375, 6.0625, 5.4375, 4.4375, 8.375, 9.25, - 4.9375, 9.625, 4.5, 4.28125, 9.0625, 1.92188, 3.5625, 6.15625, 7.84375, 7.09375, - 9.25, 3.04688, 8.875, 7.5, 3.90625, 6.40625, 8.875, 8.9375, 7.125, 9.5, - 7.375, 8.875, 6, 1.03125, 9.875, 1.27344, 5.9375, 3.8125, 7.96875, 5.6875, - 7.1875, 9.625, 2.07812, 2.5, 4.1875, 6.375, 7.125, 6.4375, 5.09375, 9.375, - 5.5625, 6.40625, 7.5625, 3.3125, 2.09375, 1.07812, 8.25, 9.0625, 5.4375, 8.375, - 5.0625, 2.5, 7.1875, 1.04688, 3.40625, 7, 9.125, 1.21875, 2.46875, 2.53125, - 7.5625, 6.125, 3.04688, 9.375, 4.75, 10, 6.15625, 2.0625, 5.4375, 8.5, - 6.375, 7.875, 5.5, 3.375, 9.75, 7.9375, 2.03125, 2.0625, 6.03125, 5.5625, - 1.625, 1.13281, 1.22656, 7.09375, 8.5625, 1.77344, 8.625, 7.6875, 7.5, 7.34375, - 7.65625, 3.20312, 5.9375, 6.1875, 1.01562, 5.65625, 5.78125, 2.21875, 9, 2.04688, - 5.71875, 5.125, 4.96875, 2.53125, 1.33594, 4.1875, 9.75, 3.0625, 9, 7.1875, - 3.46875, 3.75, 3.09375, 2.85938, 9.125, 1.35938, 7.84375, 3.82812, 8.1875, 4.75, - 2.65625, 1.40625, 8.5, 5.375, 6.75, 1.69531, 5.875, 6.75, 4.59375, 2.625, - 4.125, 5.375, 4.125, 9.375, 6.25, 7.3125, 8.375, 1.55469, 8.3125, 5.125, - 9.4375, 5.03125, 1.3125, 8.625, 3.15625, 1.30469, 9, 7.90625, 7.875, 7.8125, - 1.45312, 5.4375, 2.84375, 1.23438, 4.96875, 7.59375, 4.65625, 2.04688, 8.25, 4.21875, - 9.4375, 5.9375, 2.64062, 5.75, 3.15625, 9.5, 1.42188, 8.4375, 5.3125, 5, - 9.25, 7.875, 8.875, 4, 6.875, 8.625, 2.875, 2.54688, 8.75, 10}, + 1, 7.5, 1.57812, 10, 1.55469, 3.5, 9.0625, 7.5625, 9, 1.30469, 6, + 7.1875, 2.20312, 9, 5.6875, 2, 5.5625, 5.5625, 6.21875, 3.09375, 3.82812, 7.28125, + 9, 1.625, 6.78125, 9.875, 5.46875, 4.1875, 3.84375, 2.21875, 1.57812, 9.125, 6, + 6, 9.5, 2.28125, 8.375, 9.875, 2.32812, 5.96875, 1.42969, 4.5625, 1.10156, 5.4375, + 8.25, 1.625, 6.875, 4.6875, 6.15625, 6.15625, 8.625, 4.125, 6.1875, 1.375, 6.1875, + 8.875, 6, 3.40625, 1.75781, 4.8125, 1.40625, 4.21875, 4, 6.4375, 6.5625, 4.1875, + 8.25, 7.40625, 2.40625, 7, 5.5625, 7.9375, 7.625, 4.75, 7, 1.625, 9.25, + 7, 7, 2.5, 5.9375, 7.1875, 6.875, 5.84375, 7.5625, 6.5, 2.09375, 6.0625, + 2.4375, 3.34375, 3.76562, 2.1875, 3.51562, 5.875, 2.54688, 8.3125, 9.125, 2.96875, 1.9375, + 3.76562, 4.1875, 6.28125, 4.84375, 7.5, 3.78125, 5.375, 2.84375, 8.5, 3.3125, 8.1875, + 4.21875, 6.375, 8.375, 1.46875, 6.625, 6.5625, 9.0625, 2.90625, 9.4375, 5.375, 1.32812, + 5.9375, 8.9375, 4.4375, 7.5625, 8.9375, 5.28125, 2.59375, 8.375, 5.15625, 6.8125, 9.25, + 5.3125, 4.375, 1.46875, 7.5625, 8.3125, 2.82812, 7.25, 7.03125, 3.3125, 3.03125, 8.5, + 3.21875, 8.875, 7, 9.6875, 5.28125, 3.65625, 1.8125, 2.5, 4.0625, 6.15625, 8, + 5.1875, 2.45312, 6.1875, 1.375, 7.9375, 7.1875, 9.625, 7.5, 7.84375, 7.40625, 9.75, + 7.09375, 2.0625, 1.5, 6.53125, 5, 9.875, 6.6875, 5.875, 6.8125, 5.53125, 9.25, + 4.0625, 4.1875, 1.46875, 5, 8.6875, 3.70312, 1.85938, 1.21094, 2.71875, 1.82812, 9, + 2.71875, 9.9375, 7.8125, 4.3125, 8.8125, 2.8125, 3.23438, 4.375, 4.1875, 8.375, 8.75, + 6.625, 5.34375, 7.1875, 3.45312, 7.0625, 8.5, 5.8125, 4.875, 8.875, 3.5625, 3.84375, + 6.1875, 3.90625, 4.9375, 4.5625, 6.625, 2.59375, 9.875, 2.90625, 1.82031, 1.25781, 6, + 9.25, 4.09375, 9.125, 2.5625, 5.25, 2.34375, 5.90625, 7.90625, 9.75, 6.875, 7.3125, + 1.14062, 9.125, 7.75, 5.5625, 2.8125, 1.32812, 7.5625, 9, 7.125, 8.625, 4.4375, + 8.375, 6.375, 6.6875, 3.82812, 5.1875, 7.8125, 3.28125, 1.17188, 7.125, 8.9375, 6.6875, + 5.4375, 6.21875, 4.125, 1.40625, 3.51562, 3.5, 3.0625, 1.03906, 7.28125, 2.64062, 8.125, + 4.4375, 5.25, 1.75, 1.96875, 7.9375, 4.46875, 6.25, 8.75, 1.80469, 3.375, 2.4375, + 8.9375, 4.1875, 4.1875, 7.15625, 6.65625, 8.375, 1.13281, 7.3125, 7.375, 3.3125, 1.36719, + 7.40625, 6.375, 7.875, 4, 8.5, 8.5, 6.1875, 2.3125, 6.5625, 6.25, 7.03125, + 7.625, 5.1875, 6.71875, 4.125, 7.4375, 1.09375, 5, 4.90625, 5.5625, 10, 8.0625, + 2.625, 1.21875, 7.46875, 3.125, 4.0625, 8.3125, 1.11719, 5.40625, 4.96875, 1.35156, 2.04688, + 2.5, 3.8125, 6.125, 3.78125, 2.82812, 8.9375, 6.90625, 3.6875, 1.95312, 9.8125, 7.25, + 4.125, 4.875, 1.54688, 6.40625, 2.57812, 6.46875, 5.34375, 7.8125, 9.9375, 5.5625, 2.625, + 7.1875, 8.375, 9.75, 1.67188, 3, 6.96875, 6, 1.53125, 2.09375, 6.15625, 5.3125, + 7.25, 7.3125, 3.625, 1.10938, 7.53125, 1.375, 7.84375, 7.96875, 9.875, 9.8125, 5.78125, + 7.9375, 4.3125, 8.0625, 7.8125, 6.5625, 2.21875, 4.0625, 3.1875, 4.75, 8.25, 6.125, + 3.03125, 6.1875, 4.125, 7.71875, 4.4375, 1.46875, 4.40625, 6.375, 4.375, 1.48438, 2.65625, + 1.80469, 7.5, 9.875, 7.25, 7.875, 8.1875, 5.4375, 2.70312, 3.39062, 2.23438, 2.5625, + 9.875, 1.76562, 3.3125, 3.10938, 2.78125, 6.9375, 7.3125, 5.59375, 1.03125, 5.9375, 3.15625, + 6.1875, 3.15625, 7.5, 4.625, 5.65625, 2.89062, 2.71875, 8.75, 1.85938, 3.8125, 2.71875, + 4.03125, 6.25, 5.0625, 8, 7.4375, 5.625, 3, 1.1875, 6.75, 4.4375, 5.6875, + 7.625, 5.125, 9.625, 5.4375, 3.28125, 1.78125, 2.03125, 6.65625, 6.875, 3.85938, 7.0625, + 8.1875, 2.15625, 6.8125, 3.84375, 5.15625, 8.875, 7.09375, 8.375, 8.875, 8.75, 2.79688, + 3.1875, 2.0625, 9.75, 9.4375, 4.3125, 5.5625, 8.8125, 5.09375, 4, 5.375, 7.375, + 4.75, 8.875, 6.5, 1.25, 5.9375, 8.125, 7.4375, 5.625, 7.34375, 9.75, 8.625, + 7.125, 3.5625, 1.67969, 6.75, 3.35938, 2.375, 5.9375, 8.375, 1.95312, 4.8125, 4.0625, + 4.5625, 1.21875, 3.10938, 1.96094, 4.625, 3.4375, 1.97656, 2.32812, 6.28125, 5.0625, 4.5625, + 1.375, 2.53125, 1.23438, 8.125, 9.75, 1.59375, 4.6875, 1.89062, 2.625, 7.3125, 5.5, + 2.15625, 6.84375, 4.0625, 9.875, 8.9375, 5.4375, 9.9375, 3.96875, 9.75, 7.5, 6.59375, + 2.96875, 6.625, 1.05469, 8.125, 7.6875, 5, 3.92188, 8.3125, 6.65625, 9.4375, 8.125, + 1.53125, 3.75, 4.875, 9.375, 9, 5.53125, 3.65625, 2.29688, 6.125, 4.21875, 9.375, + 1.39062, 6.125, 8, 1.34375, 6.90625, 6.84375, 6.4375, 1.26562, 4.375, 5.875, 5.0625, + 6.375, 2.73438, 9.4375, 7.90625, 6.15625, 6.3125, 1.46875, 6.125, 2.32812, 2.53125, 4.71875, + 7.40625, 2.57812, 1.9375, 8.75, 5.0625, 2.25, 1.95312, 2.79688, 3.40625, 6.53125, 3.98438, + 9.75, 4.875, 2.67188, 9.25, 1.5, 6.9375, 9.25, 2.46875, 6.6875, 2.1875, 2.48438, + 6.40625, 2.9375, 1.25, 8.875, 3.8125, 9.5, 2.375, 2.53125, 8.5, 3.28125, 7.4375, + 2.9375, 6.53125, 2.0625, 3.45312, 3.5, 1.60938, 8, 5.25, 6.5, 8.875, 2.89062, + 4.5625, 9.4375, 9.625, 9.375, 3.4375, 5, 7.46875, 3.71875, 2.875, 1.09375, 6.0625, + 5.4375, 4.4375, 8.375, 9.25, 4.9375, 9.625, 4.5, 4.28125, 9.0625, 1.92188, 3.5625, + 6.15625, 7.84375, 7.09375, 9.25, 3.04688, 8.875, 7.5, 3.90625, 6.40625, 8.875, 8.9375, + 7.125, 9.5, 7.375, 8.875, 6, 1.03125, 9.875, 1.27344, 5.9375, 3.8125, 7.96875, + 5.6875, 7.1875, 9.625, 2.07812, 2.5, 4.1875, 6.375, 7.125, 6.4375, 5.09375, 9.375, + 5.5625, 6.40625, 7.5625, 3.3125, 2.09375, 1.07812, 8.25, 9.0625, 5.4375, 8.375, 5.0625, + 2.5, 7.1875, 1.04688, 3.40625, 7, 9.125, 1.21875, 2.46875, 2.53125, 7.5625, 6.125, + 3.04688, 9.375, 4.75, 10, 6.15625, 2.0625, 5.4375, 8.5, 6.375, 7.875, 5.5, + 3.375, 9.75, 7.9375, 2.03125, 2.0625, 6.03125, 5.5625, 1.625, 1.13281, 1.22656, 7.09375, + 8.5625, 1.77344, 8.625, 7.6875, 7.5, 7.34375, 7.65625, 3.20312, 5.9375, 6.1875, 1.01562, + 5.65625, 5.78125, 2.21875, 9, 2.04688, 5.71875, 5.125, 4.96875, 2.53125, 1.33594, 4.1875, + 9.75, 3.0625, 9, 7.1875, 3.46875, 3.75, 3.09375, 2.85938, 9.125, 1.35938, 7.84375, + 3.82812, 8.1875, 4.75, 2.65625, 1.40625, 8.5, 5.375, 6.75, 1.69531, 5.875, 6.75, + 4.59375, 2.625, 4.125, 5.375, 4.125, 9.375, 6.25, 7.3125, 8.375, 1.55469, 8.3125, + 5.125, 9.4375, 5.03125, 1.3125, 8.625, 3.15625, 1.30469, 9, 7.90625, 7.875, 7.8125, + 1.45312, 5.4375, 2.84375, 1.23438, 4.96875, 7.59375, 4.65625, 2.04688, 8.25, 4.21875, 9.4375, + 5.9375, 2.64062, 5.75, 3.15625, 9.5, 1.42188, 8.4375, 5.3125, 5, 9.25, 7.875, + 8.875, 4, 6.875, 8.625, 2.875, 2.54688, 8.75, 10}, std::vector{ - 1, 6.125, 4.53125, 4.4375, 6.3125, 6.6875, 5.375, 8.25, 9.875, 9.375, - 9.0625, 5.9375, 3.0625, 6.75, 9.75, 8.8125, 3.5, 2.40625, 7.625, 2.21875, - 2.39062, 9.25, 6.1875, 4.0625, 6.25, 5.375, 8.25, 7.3125, 6.5, 7.8125, - 2.65625, 2.10938, 8.375, 7.65625, 4.09375, 2.71875, 9.4375, 7.0625, 6.5625, 8.625, - 7.625, 8.25, 2.10938, 8.625, 8.125, 7.40625, 4.5, 2.76562, 5.125, 9.625, - 8.5625, 8.75, 7.46875, 9.625, 8.875, 4.40625, 2.26562, 9.3125, 1.67188, 9.1875, - 6.1875, 4.78125, 5.5, 6.40625, 5.59375, 8.125, 7.65625, 1.75, 2.96875, 3.875, - 8.75, 1.99219, 3.53125, 2.53125, 9.375, 2.1875, 2.875, 1.86719, 9.25, 7.125, - 3.89062, 9.5, 1.92188, 5.4375, 4.5625, 1, 8, 3.96875, 9.375, 9.1875, - 1.19531, 6.875, 3.21875, 8.5625, 7.0625, 8.6875, 9.875, 4.65625, 9.5, 6.25, - 1.82812, 1.51562, 2.42188, 4.21875, 2.78125, 7.75, 4.96875, 3.89062, 2.76562, 9.25, - 5.84375, 5.84375, 8.375, 3.34375, 9.875, 2.625, 2.15625, 1.73438, 6.25, 8.875, - 4.0625, 7.8125, 4.625, 7.59375, 7.625, 2.71875, 4.25, 3.96875, 2, 2.9375, - 6.25, 7.3125, 7.09375, 7.1875, 7.40625, 1.13281, 9.625, 5.90625, 9.9375, 1.0625, - 2.10938, 9.5, 6.25, 5.1875, 3.3125, 9.4375, 6.84375, 8.25, 4.375, 4.59375, - 1.79688, 9, 7.9375, 2.64062, 9.75, 8.75, 9.6875, 3.59375, 4, 10, - 8.875, 2.82812, 9.0625, 8.8125, 1.76562, 2.23438, 6.625, 2.375, 3.70312, 8.375, - 8.625, 4, 6.1875, 9.8125, 2.625, 2.60938, 9.375, 1.625, 2.03125, 9.5, - 1.84375, 9.125, 7.75, 4.75, 2.0625, 2.375, 6.03125, 5.65625, 3.92188, 4.125, - 9.625, 4.25, 5.4375, 1.34375, 5.1875, 7.53125, 3.96875, 4.875, 1.65625, 3.54688, - 1.64062, 4.625, 1.51562, 4.4375, 4.375, 5.1875, 1.03906, 1.58594, 9.75, 2.78125, - 1.27344, 6.25, 6.4375, 9.5625, 4.625, 3.89062, 8.875, 5.875, 9.875, 4, - 9.625, 8.1875, 6, 6.5625, 3.1875, 5.9375, 1.17188, 6.375, 3.09375, 3.5, - 5.34375, 6.625, 9.6875, 1.85938, 2.85938, 9.75, 5.5, 7.6875, 1.86719, 1.03125, - 7.21875, 7.125, 7.75, 6.1875, 2, 2.59375, 2.46875, 8.25, 7.78125, 3.75, - 7.875, 4.6875, 8.0625, 7.9375, 2.53125, 6.5, 2.48438, 6.75, 2.60938, 1.60938, - 7.75, 2.28125, 8.75, 7.6875, 8.25, 8.0625, 1.23438, 6.0625, 1.53125, 6.96875, - 4.9375, 5.21875, 1.5, 5.125, 7.5, 7.1875, 6, 2.71875, 6.5625, 9.875, - 2.15625, 4.40625, 5.5, 3.98438, 5.5625, 8.875, 1.84375, 8.75, 8.875, 9.6875, - 8.8125, 2.78125, 1.16406, 6.03125, 7.625, 2.73438, 6.5, 5.6875, 9.75, 8.125, - 6.875, 7.34375, 9, 5.0625, 6.1875, 3.95312, 4.5, 2.35938, 4.6875, 9.875, - 1.09375, 6.09375, 4, 9.75, 8.5, 1.70312, 6.9375, 1.29688, 5.6875, 7.8125, - 9.625, 3.125, 7.1875, 6.6875, 7.84375, 1.21094, 1.71094, 5.875, 3.4375, 5.8125, - 4.25, 4.125, 7.875, 5.1875, 9.3125, 9, 4.4375, 1.0625, 3.01562, 5.25, - 3.09375, 7.375, 6.1875, 3.4375, 6.46875, 9.375, 5.625, 4.8125, 8.1875, 2.03125, - 8.75, 4.21875, 9.25, 8.3125, 1.1875, 3.0625, 1.6875, 3.375, 5.09375, 1.95312, - 1.25, 3.76562, 7.75, 5.09375, 6.1875, 4.625, 4.625, 1.49219, 4.96875, 9.875, - 2, 9, 4.46875, 7.25, 1.36719, 7.9375, 1.79688, 3, 7.5625, 2.625, - 7.5625, 1.92969, 2.32812, 3.25, 4.375, 1.125, 7.75, 2.4375, 3.34375, 5.6875, - 1.30469, 7.9375, 8.75, 3.625, 6.3125, 6.75, 1.73438, 2.5, 3.09375, 1.28906, - 1.75, 8.4375, 4.875, 3.5, 7.78125, 6.8125, 1.42188, 5.125, 7.6875, 3.90625, - 4.125, 9.8125, 2.4375, 4.625, 9.9375, 9.75, 7.625, 5.875, 9.5, 9.125, - 9.5, 1.03125, 1.15625, 8.5625, 5.34375, 2.75, 5.6875, 6.03125, 2.6875, 3.15625, - 9.75, 2.04688, 8.875, 4.6875, 4.40625, 5, 3.78125, 1.17188, 7, 3.92188, - 3.48438, 9.0625, 4.0625, 3.34375, 3.5625, 6.6875, 5.5625, 8.875, 5.25, 2.34375, - 1.48438, 1.14844, 7.21875, 7.25, 5.375, 7.1875, 3.34375, 1.5625, 8.1875, 1.95312, - 7.21875, 1.48438, 8.625, 9.25, 1.14062, 4.65625, 5.15625, 9.75, 2.28125, 1.71875, - 6.8125, 9.25, 6.125, 2.84375, 7.21875, 4.09375, 9, 4.8125, 6.15625, 7.625, - 6.625, 6, 7.5, 2.46875, 6.125, 1.33594, 8.25, 5.125, 3.53125, 6.875, - 4.4375, 3.10938, 7.5625, 9.25, 7.1875, 1.15625, 7.875, 3.21875, 7.40625, 6.46875, - 4.875, 5.3125, 7.09375, 9.375, 8.75, 3.75, 9.3125, 2.25, 9.5, 3.375, - 7.3125, 6.875, 8.5625, 6.5, 5.09375, 6.4375, 6.625, 4.28125, 6.75, 2.65625, - 8.25, 7, 4.1875, 5.4375, 8.125, 2.71875, 4.3125, 8, 2.65625, 6.375, - 3.67188, 3.6875, 8.125, 8.125, 4.09375, 2.25, 9.6875, 1.04688, 5.375, 1.96875, - 3.03125, 2.42188, 7.75, 5.125, 8.25, 6.9375, 6.8125, 8.375, 8.5, 1.04688, - 1.39062, 4.21875, 2.03125, 5.40625, 8.25, 9, 6.5625, 4.25, 8.5, 4.9375, - 7.875, 5.875, 5.75, 9.4375, 6.84375, 4.0625, 9, 3.375, 4.84375, 4.375, - 9.75, 6.5, 7.125, 9.375, 4.5, 1.40625, 2.71875, 8.75, 5.59375, 8.875, - 8.5625, 4.375, 9.625, 5.5625, 7.0625, 9, 5.9375, 4.1875, 2.1875, 8.75, - 2.90625, 6.5, 5.96875, 5.15625, 4.4375, 7.25, 5.0625, 1.65625, 4.1875, 5.46875, - 5.03125, 2.59375, 3.78125, 7.84375, 3.125, 2.46875, 4.03125, 4.5625, 6.0625, 9.25, - 2.6875, 6.75, 3.14062, 3.71875, 9.875, 5.9375, 1.96875, 4.375, 6.6875, 7.6875, - 7.1875, 6.375, 6.8125, 1.76562, 8.125, 8.625, 7.96875, 2.45312, 2.20312, 1.65625, - 6.625, 7.8125, 4.65625, 5.25, 4.875, 3.71875, 8.8125, 7.3125, 1.54688, 4.3125, - 5.34375, 1.8125, 1.03125, 7.84375, 2.09375, 1.8125, 5.6875, 4.3125, 3.8125, 8.25, - 1.48438, 2.75, 8.75, 6.4375, 7, 1.67188, 9.125, 7.875, 9.625, 7.875, - 1.46875, 10, 2.15625, 7.28125, 5.03125, 4.34375, 7.4375, 8.1875, 5.21875, 2.625, - 9.625, 10, 7.6875, 7.75, 8.75, 2.25, 4.71875, 6.375, 5.84375, 8.8125, - 1.54688, 6.4375, 7.125, 7.25, 8.875, 5.25, 8.25, 10, 1.03125, 1.45312, - 6.5625, 4.5625, 4.125, 4.125, 7.53125, 8.75, 1.53125, 7.4375, 6.125, 2.71875, - 4.9375, 6.25, 6.5, 2.95312, 9.375, 9.625, 4.5, 5.40625, 1.16406, 2.71875, - 1.08594, 8.875, 5.3125, 2.34375, 7.09375, 8.875, 4.71875, 3.95312, 3.79688, 5.375, - 2.59375, 9.0625, 6.125, 8.25, 3.5625, 5.375, 9.5, 7.5625, 8.75, 3.75, - 1.125, 3.21875, 5.5625, 3.59375, 4.625, 8.5, 7.71875, 3.15625, 8, 8.25, - 8.6875, 4.78125, 2.625, 4.28125, 5.6875, 1.625, 6.375, 2.4375, 8.625, 5.75, - 9, 2.39062, 1.76562, 1.5, 8.6875, 3.96875, 6.75, 2.40625, 6.4375, 8.8125, - 3.375, 2.15625, 8.75, 3.625, 4.9375, 7.9375, 9.625, 8.125, 2.96875, 9.625, - 4.4375, 9.4375, 2.6875, 3.625, 3.59375, 9.25, 4.1875, 2.6875, 5.9375, 7.875, - 7.1875, 8, 7.90625, 4.28125, 6.0625, 8.875, 3.90625, 1.69531, 3.5, 3.34375, - 7.75, 2.46875, 6.875, 4.1875, 8.5625, 5.1875, 5.34375, 6.15625, 9.375, 10}, - std::vector{ - 1, 7.25, 1.08594, 1.90625, 7.3125, 8.1875, 1.84375, 9.8125, 3.65625, 7.6875, - 7.03125, 6.75, 9.875, 9, 2.28125, 4.625, 8.375, 8.125, 4.25, 9.9375, - 2.125, 1.92969, 1.35938, 7.625, 5.6875, 2.65625, 6.9375, 8.0625, 2.53125, 7.375, - 2.8125, 9.1875, 7.3125, 8.75, 7.15625, 7.15625, 3.8125, 6.75, 3.53125, 8.75, - 9.875, 5.75, 7.1875, 5.65625, 7.375, 9.25, 6.03125, 9.75, 8.625, 1.07031, - 6.8125, 2.90625, 6.1875, 4.6875, 7.25, 1.14062, 9.0625, 2.78125, 5.625, 6.875, - 2.0625, 3.3125, 9.875, 8.9375, 5.6875, 5.875, 3.65625, 2.78125, 8.625, 4.1875, - 7.125, 7.09375, 5.125, 2.625, 3.10938, 9.4375, 5.5625, 5.8125, 3.5625, 10}, - std::vector{ - 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, - 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, - 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, - 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, - 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, - 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094}, + 1, 6.125, 4.53125, 4.4375, 6.3125, 6.6875, 5.375, 8.25, 9.875, 9.375, 9.0625, + 5.9375, 3.0625, 6.75, 9.75, 8.8125, 3.5, 2.40625, 7.625, 2.21875, 2.39062, 9.25, + 6.1875, 4.0625, 6.25, 5.375, 8.25, 7.3125, 6.5, 7.8125, 2.65625, 2.10938, 8.375, + 7.65625, 4.09375, 2.71875, 9.4375, 7.0625, 6.5625, 8.625, 7.625, 8.25, 2.10938, 8.625, + 8.125, 7.40625, 4.5, 2.76562, 5.125, 9.625, 8.5625, 8.75, 7.46875, 9.625, 8.875, + 4.40625, 2.26562, 9.3125, 1.67188, 9.1875, 6.1875, 4.78125, 5.5, 6.40625, 5.59375, 8.125, + 7.65625, 1.75, 2.96875, 3.875, 8.75, 1.99219, 3.53125, 2.53125, 9.375, 2.1875, 2.875, + 1.86719, 9.25, 7.125, 3.89062, 9.5, 1.92188, 5.4375, 4.5625, 1, 8, 3.96875, + 9.375, 9.1875, 1.19531, 6.875, 3.21875, 8.5625, 7.0625, 8.6875, 9.875, 4.65625, 9.5, + 6.25, 1.82812, 1.51562, 2.42188, 4.21875, 2.78125, 7.75, 4.96875, 3.89062, 2.76562, 9.25, + 5.84375, 5.84375, 8.375, 3.34375, 9.875, 2.625, 2.15625, 1.73438, 6.25, 8.875, 4.0625, + 7.8125, 4.625, 7.59375, 7.625, 2.71875, 4.25, 3.96875, 2, 2.9375, 6.25, 7.3125, + 7.09375, 7.1875, 7.40625, 1.13281, 9.625, 5.90625, 9.9375, 1.0625, 2.10938, 9.5, 6.25, + 5.1875, 3.3125, 9.4375, 6.84375, 8.25, 4.375, 4.59375, 1.79688, 9, 7.9375, 2.64062, + 9.75, 8.75, 9.6875, 3.59375, 4, 10, 8.875, 2.82812, 9.0625, 8.8125, 1.76562, + 2.23438, 6.625, 2.375, 3.70312, 8.375, 8.625, 4, 6.1875, 9.8125, 2.625, 2.60938, + 9.375, 1.625, 2.03125, 9.5, 1.84375, 9.125, 7.75, 4.75, 2.0625, 2.375, 6.03125, + 5.65625, 3.92188, 4.125, 9.625, 4.25, 5.4375, 1.34375, 5.1875, 7.53125, 3.96875, 4.875, + 1.65625, 3.54688, 1.64062, 4.625, 1.51562, 4.4375, 4.375, 5.1875, 1.03906, 1.58594, 9.75, + 2.78125, 1.27344, 6.25, 6.4375, 9.5625, 4.625, 3.89062, 8.875, 5.875, 9.875, 4, + 9.625, 8.1875, 6, 6.5625, 3.1875, 5.9375, 1.17188, 6.375, 3.09375, 3.5, 5.34375, + 6.625, 9.6875, 1.85938, 2.85938, 9.75, 5.5, 7.6875, 1.86719, 1.03125, 7.21875, 7.125, + 7.75, 6.1875, 2, 2.59375, 2.46875, 8.25, 7.78125, 3.75, 7.875, 4.6875, 8.0625, + 7.9375, 2.53125, 6.5, 2.48438, 6.75, 2.60938, 1.60938, 7.75, 2.28125, 8.75, 7.6875, + 8.25, 8.0625, 1.23438, 6.0625, 1.53125, 6.96875, 4.9375, 5.21875, 1.5, 5.125, 7.5, + 7.1875, 6, 2.71875, 6.5625, 9.875, 2.15625, 4.40625, 5.5, 3.98438, 5.5625, 8.875, + 1.84375, 8.75, 8.875, 9.6875, 8.8125, 2.78125, 1.16406, 6.03125, 7.625, 2.73438, 6.5, + 5.6875, 9.75, 8.125, 6.875, 7.34375, 9, 5.0625, 6.1875, 3.95312, 4.5, 2.35938, + 4.6875, 9.875, 1.09375, 6.09375, 4, 9.75, 8.5, 1.70312, 6.9375, 1.29688, 5.6875, + 7.8125, 9.625, 3.125, 7.1875, 6.6875, 7.84375, 1.21094, 1.71094, 5.875, 3.4375, 5.8125, + 4.25, 4.125, 7.875, 5.1875, 9.3125, 9, 4.4375, 1.0625, 3.01562, 5.25, 3.09375, + 7.375, 6.1875, 3.4375, 6.46875, 9.375, 5.625, 4.8125, 8.1875, 2.03125, 8.75, 4.21875, + 9.25, 8.3125, 1.1875, 3.0625, 1.6875, 3.375, 5.09375, 1.95312, 1.25, 3.76562, 7.75, + 5.09375, 6.1875, 4.625, 4.625, 1.49219, 4.96875, 9.875, 2, 9, 4.46875, 7.25, + 1.36719, 7.9375, 1.79688, 3, 7.5625, 2.625, 7.5625, 1.92969, 2.32812, 3.25, 4.375, + 1.125, 7.75, 2.4375, 3.34375, 5.6875, 1.30469, 7.9375, 8.75, 3.625, 6.3125, 6.75, + 1.73438, 2.5, 3.09375, 1.28906, 1.75, 8.4375, 4.875, 3.5, 7.78125, 6.8125, 1.42188, + 5.125, 7.6875, 3.90625, 4.125, 9.8125, 2.4375, 4.625, 9.9375, 9.75, 7.625, 5.875, + 9.5, 9.125, 9.5, 1.03125, 1.15625, 8.5625, 5.34375, 2.75, 5.6875, 6.03125, 2.6875, + 3.15625, 9.75, 2.04688, 8.875, 4.6875, 4.40625, 5, 3.78125, 1.17188, 7, 3.92188, + 3.48438, 9.0625, 4.0625, 3.34375, 3.5625, 6.6875, 5.5625, 8.875, 5.25, 2.34375, 1.48438, + 1.14844, 7.21875, 7.25, 5.375, 7.1875, 3.34375, 1.5625, 8.1875, 1.95312, 7.21875, 1.48438, + 8.625, 9.25, 1.14062, 4.65625, 5.15625, 9.75, 2.28125, 1.71875, 6.8125, 9.25, 6.125, + 2.84375, 7.21875, 4.09375, 9, 4.8125, 6.15625, 7.625, 6.625, 6, 7.5, 2.46875, + 6.125, 1.33594, 8.25, 5.125, 3.53125, 6.875, 4.4375, 3.10938, 7.5625, 9.25, 7.1875, + 1.15625, 7.875, 3.21875, 7.40625, 6.46875, 4.875, 5.3125, 7.09375, 9.375, 8.75, 3.75, + 9.3125, 2.25, 9.5, 3.375, 7.3125, 6.875, 8.5625, 6.5, 5.09375, 6.4375, 6.625, + 4.28125, 6.75, 2.65625, 8.25, 7, 4.1875, 5.4375, 8.125, 2.71875, 4.3125, 8, + 2.65625, 6.375, 3.67188, 3.6875, 8.125, 8.125, 4.09375, 2.25, 9.6875, 1.04688, 5.375, + 1.96875, 3.03125, 2.42188, 7.75, 5.125, 8.25, 6.9375, 6.8125, 8.375, 8.5, 1.04688, + 1.39062, 4.21875, 2.03125, 5.40625, 8.25, 9, 6.5625, 4.25, 8.5, 4.9375, 7.875, + 5.875, 5.75, 9.4375, 6.84375, 4.0625, 9, 3.375, 4.84375, 4.375, 9.75, 6.5, + 7.125, 9.375, 4.5, 1.40625, 2.71875, 8.75, 5.59375, 8.875, 8.5625, 4.375, 9.625, + 5.5625, 7.0625, 9, 5.9375, 4.1875, 2.1875, 8.75, 2.90625, 6.5, 5.96875, 5.15625, + 4.4375, 7.25, 5.0625, 1.65625, 4.1875, 5.46875, 5.03125, 2.59375, 3.78125, 7.84375, 3.125, + 2.46875, 4.03125, 4.5625, 6.0625, 9.25, 2.6875, 6.75, 3.14062, 3.71875, 9.875, 5.9375, + 1.96875, 4.375, 6.6875, 7.6875, 7.1875, 6.375, 6.8125, 1.76562, 8.125, 8.625, 7.96875, + 2.45312, 2.20312, 1.65625, 6.625, 7.8125, 4.65625, 5.25, 4.875, 3.71875, 8.8125, 7.3125, + 1.54688, 4.3125, 5.34375, 1.8125, 1.03125, 7.84375, 2.09375, 1.8125, 5.6875, 4.3125, 3.8125, + 8.25, 1.48438, 2.75, 8.75, 6.4375, 7, 1.67188, 9.125, 7.875, 9.625, 7.875, + 1.46875, 10, 2.15625, 7.28125, 5.03125, 4.34375, 7.4375, 8.1875, 5.21875, 2.625, 9.625, + 10, 7.6875, 7.75, 8.75, 2.25, 4.71875, 6.375, 5.84375, 8.8125, 1.54688, 6.4375, + 7.125, 7.25, 8.875, 5.25, 8.25, 10, 1.03125, 1.45312, 6.5625, 4.5625, 4.125, + 4.125, 7.53125, 8.75, 1.53125, 7.4375, 6.125, 2.71875, 4.9375, 6.25, 6.5, 2.95312, + 9.375, 9.625, 4.5, 5.40625, 1.16406, 2.71875, 1.08594, 8.875, 5.3125, 2.34375, 7.09375, + 8.875, 4.71875, 3.95312, 3.79688, 5.375, 2.59375, 9.0625, 6.125, 8.25, 3.5625, 5.375, + 9.5, 7.5625, 8.75, 3.75, 1.125, 3.21875, 5.5625, 3.59375, 4.625, 8.5, 7.71875, + 3.15625, 8, 8.25, 8.6875, 4.78125, 2.625, 4.28125, 5.6875, 1.625, 6.375, 2.4375, + 8.625, 5.75, 9, 2.39062, 1.76562, 1.5, 8.6875, 3.96875, 6.75, 2.40625, 6.4375, + 8.8125, 3.375, 2.15625, 8.75, 3.625, 4.9375, 7.9375, 9.625, 8.125, 2.96875, 9.625, + 4.4375, 9.4375, 2.6875, 3.625, 3.59375, 9.25, 4.1875, 2.6875, 5.9375, 7.875, 7.1875, + 8, 7.90625, 4.28125, 6.0625, 8.875, 3.90625, 1.69531, 3.5, 3.34375, 7.75, 2.46875, + 6.875, 4.1875, 8.5625, 5.1875, 5.34375, 6.15625, 9.375, 10}, + std::vector{1, 7.25, 1.08594, 1.90625, 7.3125, 8.1875, 1.84375, 9.8125, 3.65625, 7.6875, + 7.03125, 6.75, 9.875, 9, 2.28125, 4.625, 8.375, 8.125, 4.25, 9.9375, + 2.125, 1.92969, 1.35938, 7.625, 5.6875, 2.65625, 6.9375, 8.0625, 2.53125, 7.375, + 2.8125, 9.1875, 7.3125, 8.75, 7.15625, 7.15625, 3.8125, 6.75, 3.53125, 8.75, + 9.875, 5.75, 7.1875, 5.65625, 7.375, 9.25, 6.03125, 9.75, 8.625, 1.07031, + 6.8125, 2.90625, 6.1875, 4.6875, 7.25, 1.14062, 9.0625, 2.78125, 5.625, 6.875, + 2.0625, 3.3125, 9.875, 8.9375, 5.6875, 5.875, 3.65625, 2.78125, 8.625, 4.1875, + 7.125, 7.09375, 5.125, 2.625, 3.10938, 9.4375, 5.5625, 5.8125, 3.5625, 10}, + std::vector{0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, + 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, + 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, + 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, + 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, + 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, + 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, 0.0996094, + 0.0996094, 0.0996094, 0.0996094, 0.0996094}, std::vector{ 0.466797, 0.667969, 0.617188, 0.648438, 0.667969, 0.667969, 0.667969, 0.667969, 0.667969, 0.65625, - 0.433594, 0.664062, 0.570312, 0.617188, 0.664062, 0.65625, 0.667969, 0.664062, 0.65625, 0.625, - 0.410156, 0.65625, 0.523438, 0.570312, 0.648438, 0.632812, 0.664062, 0.648438, 0.632812, 0.585938, - 0.390625, 0.625, 0.480469, 0.523438, 0.617188, 0.601562, 0.65625, 0.617188, 0.601562, 0.539062, + 0.433594, 0.664062, 0.570312, 0.617188, 0.664062, 0.65625, 0.667969, 0.664062, 0.65625, 0.625, + 0.410156, 0.65625, 0.523438, 0.570312, 0.648438, 0.632812, 0.664062, 0.648438, 0.632812, 0.585938, + 0.390625, 0.625, 0.480469, 0.523438, 0.617188, 0.601562, 0.65625, 0.617188, 0.601562, 0.539062, 0.380859, 0.585938, 0.443359, 0.480469, 0.570312, 0.554688, 0.632812, 0.578125, 0.554688, 0.490234, - 0.570312, 0.427734, 0.578125, 0.632812, 0.417969, 0.5, 0.609375, 0.625, 0.585938, 0.617188, - 0.617188, 0.458984, 0.625, 0.65625, 0.443359, 0.546875, 0.640625, 0.648438, 0.625, 0.648438, - 0.648438, 0.5, 0.648438, 0.664062, 0.476562, 0.59375, 0.664062, 0.664062, 0.65625, 0.664062, + 0.570312, 0.427734, 0.578125, 0.632812, 0.417969, 0.5, 0.609375, 0.625, 0.585938, 0.617188, + 0.617188, 0.458984, 0.625, 0.65625, 0.443359, 0.546875, 0.640625, 0.648438, 0.625, 0.648438, + 0.648438, 0.5, 0.648438, 0.664062, 0.476562, 0.59375, 0.664062, 0.664062, 0.65625, 0.664062, 0.664062, 0.546875, 0.664062, 0.667969, 0.523438, 0.632812, 0.667969, 0.667969, 0.664062, 0.667969, - 0.667969, 0.59375, 0.667969, 0.667969, 0.570312, 0.65625, 0.667969, 0.667969, 0.667969, 0.667969, + 0.667969, 0.59375, 0.667969, 0.667969, 0.570312, 0.65625, 0.667969, 0.667969, 0.667969, 0.667969, 0.667969, 0.664062, 0.667969, 0.664062, 0.667969, 0.667969, 0.640625, 0.585938, 0.667969, 0.59375, 0.664062, 0.648438, 0.667969, 0.648438, 0.667969, 0.664062, 0.601562, 0.539062, 0.667969, 0.546875, - 0.65625, 0.617188, 0.664062, 0.625, 0.664062, 0.648438, 0.554688, 0.496094, 0.65625, 0.5, - 0.625, 0.570312, 0.648438, 0.578125, 0.648438, 0.609375, 0.507812, 0.458984, 0.640625, 0.464844, - 0.585938, 0.523438, 0.625, 0.53125, 0.625, 0.5625, 0.466797, 0.427734, 0.601562, 0.433594, + 0.65625, 0.617188, 0.664062, 0.625, 0.664062, 0.648438, 0.554688, 0.496094, 0.65625, 0.5, + 0.625, 0.570312, 0.648438, 0.578125, 0.648438, 0.609375, 0.507812, 0.458984, 0.640625, 0.464844, + 0.585938, 0.523438, 0.625, 0.53125, 0.625, 0.5625, 0.466797, 0.427734, 0.601562, 0.433594, 0.396484, 0.578125, 0.484375, 0.601562, 0.515625, 0.449219, 0.546875, 0.443359, 0.492188, 0.59375, - 0.417969, 0.625, 0.53125, 0.632812, 0.5625, 0.484375, 0.59375, 0.480469, 0.539062, 0.632812, - 0.443359, 0.648438, 0.578125, 0.65625, 0.609375, 0.53125, 0.632812, 0.523438, 0.585938, 0.65625, - 0.476562, 0.664062, 0.625, 0.667969, 0.648438, 0.578125, 0.65625, 0.570312, 0.632812, 0.664062, - 0.523438, 0.667969, 0.648438, 0.667969, 0.664062, 0.625, 0.667969, 0.617188, 0.65625, 0.667969, - 0.664062, 0.667969, 0.664062, 0.648438, 0.667969, 0.667969, 0.667969, 0.59375, 0.648438, 0.667969, - 0.648438, 0.667969, 0.648438, 0.625, 0.667969, 0.667969, 0.667969, 0.546875, 0.625, 0.65625, - 0.625, 0.65625, 0.609375, 0.578125, 0.664062, 0.664062, 0.664062, 0.5, 0.578125, 0.632812, - 0.578125, 0.632812, 0.5625, 0.53125, 0.648438, 0.648438, 0.648438, 0.464844, 0.53125, 0.601562, - 0.53125, 0.601562, 0.515625, 0.484375, 0.617188, 0.609375, 0.609375, 0.433594, 0.484375, 0.554688, - 0.398438, 0.507812, 0.523438, 0.601562, 0.625, 0.585938, 0.492188, 0.421875, 0.617188, 0.458984, + 0.417969, 0.625, 0.53125, 0.632812, 0.5625, 0.484375, 0.59375, 0.480469, 0.539062, 0.632812, + 0.443359, 0.648438, 0.578125, 0.65625, 0.609375, 0.53125, 0.632812, 0.523438, 0.585938, 0.65625, + 0.476562, 0.664062, 0.625, 0.667969, 0.648438, 0.578125, 0.65625, 0.570312, 0.632812, 0.664062, + 0.523438, 0.667969, 0.648438, 0.667969, 0.664062, 0.625, 0.667969, 0.617188, 0.65625, 0.667969, + 0.664062, 0.667969, 0.664062, 0.648438, 0.667969, 0.667969, 0.667969, 0.59375, 0.648438, 0.667969, + 0.648438, 0.667969, 0.648438, 0.625, 0.667969, 0.667969, 0.667969, 0.546875, 0.625, 0.65625, + 0.625, 0.65625, 0.609375, 0.578125, 0.664062, 0.664062, 0.664062, 0.5, 0.578125, 0.632812, + 0.578125, 0.632812, 0.5625, 0.53125, 0.648438, 0.648438, 0.648438, 0.464844, 0.53125, 0.601562, + 0.53125, 0.601562, 0.515625, 0.484375, 0.617188, 0.609375, 0.609375, 0.433594, 0.484375, 0.554688, + 0.398438, 0.507812, 0.523438, 0.601562, 0.625, 0.585938, 0.492188, 0.421875, 0.617188, 0.458984, 0.417969, 0.554688, 0.570312, 0.640625, 0.648438, 0.632812, 0.539062, 0.449219, 0.648438, 0.496094, - 0.445312, 0.601562, 0.617188, 0.65625, 0.664062, 0.65625, 0.585938, 0.484375, 0.664062, 0.539062, - 0.484375, 0.640625, 0.648438, 0.667969, 0.667969, 0.664062, 0.632812, 0.53125, 0.667969, 0.585938, - 0.523438, 0.65625, 0.664062, 0.667969, 0.667969, 0.667969, 0.65625, 0.578125, 0.667969, 0.632812, + 0.445312, 0.601562, 0.617188, 0.65625, 0.664062, 0.65625, 0.585938, 0.484375, 0.664062, 0.539062, + 0.484375, 0.640625, 0.648438, 0.667969, 0.667969, 0.664062, 0.632812, 0.53125, 0.667969, 0.585938, + 0.523438, 0.65625, 0.664062, 0.667969, 0.667969, 0.667969, 0.65625, 0.578125, 0.667969, 0.632812, 0.667969, 0.667969, 0.667969, 0.578125, 0.667969, 0.667969, 0.667969, 0.664062, 0.667969, 0.667969, - 0.664062, 0.664062, 0.667969, 0.53125, 0.664062, 0.664062, 0.667969, 0.640625, 0.667969, 0.664062, - 0.648438, 0.65625, 0.664062, 0.484375, 0.648438, 0.65625, 0.65625, 0.609375, 0.65625, 0.648438, - 0.617188, 0.632812, 0.648438, 0.449219, 0.625, 0.632812, 0.632812, 0.554688, 0.640625, 0.625, - 0.570312, 0.59375, 0.625, 0.421875, 0.578125, 0.59375, 0.601562, 0.507812, 0.601562, 0.578125, - 0.410156, 0.46875, 0.570312, 0.453125, 0.585938, 0.625, 0.632812, 0.601562, 0.507812, 0.601562, - 0.433594, 0.507812, 0.617188, 0.490234, 0.625, 0.65625, 0.65625, 0.632812, 0.554688, 0.640625, - 0.464844, 0.554688, 0.648438, 0.539062, 0.65625, 0.664062, 0.664062, 0.65625, 0.601562, 0.65625, + 0.664062, 0.664062, 0.667969, 0.53125, 0.664062, 0.664062, 0.667969, 0.640625, 0.667969, 0.664062, + 0.648438, 0.65625, 0.664062, 0.484375, 0.648438, 0.65625, 0.65625, 0.609375, 0.65625, 0.648438, + 0.617188, 0.632812, 0.648438, 0.449219, 0.625, 0.632812, 0.632812, 0.554688, 0.640625, 0.625, + 0.570312, 0.59375, 0.625, 0.421875, 0.578125, 0.59375, 0.601562, 0.507812, 0.601562, 0.578125, + 0.410156, 0.46875, 0.570312, 0.453125, 0.585938, 0.625, 0.632812, 0.601562, 0.507812, 0.601562, + 0.433594, 0.507812, 0.617188, 0.490234, 0.625, 0.65625, 0.65625, 0.632812, 0.554688, 0.640625, + 0.464844, 0.554688, 0.648438, 0.539062, 0.65625, 0.664062, 0.664062, 0.65625, 0.601562, 0.65625, 0.507812, 0.601562, 0.664062, 0.585938, 0.664062, 0.667969, 0.667969, 0.667969, 0.640625, 0.667969, - 0.554688, 0.640625, 0.667969, 0.625, 0.667969, 0.667969, 0.667969, 0.667969, 0.65625, 0.667969, - 0.65625, 0.667969, 0.667969, 0.667969, 0.667969, 0.667969, 0.667969, 0.667969, 0.667969, 0.667969, + 0.554688, 0.640625, 0.667969, 0.625, 0.667969, 0.667969, 0.667969, 0.667969, 0.65625, 0.667969, + 0.65625, 0.667969, 0.667969, 0.667969, 0.667969, 0.667969, 0.667969, 0.667969, 0.667969, 0.667969, 0.640625, 0.667969, 0.667969, 0.664062, 0.664062, 0.664062, 0.664062, 0.664062, 0.664062, 0.667969, - 0.601562, 0.664062, 0.664062, 0.65625, 0.648438, 0.648438, 0.65625, 0.648438, 0.640625, 0.664062, - 0.554688, 0.648438, 0.65625, 0.625, 0.617188, 0.617188, 0.632812, 0.609375, 0.609375, 0.648438, - 0.507812, 0.617188, 0.632812, 0.585938, 0.570312, 0.578125, 0.59375, 0.5625, 0.554688, 0.625, - 0.539062, 0.601562, 0.546875, 0.421875, 0.412109, 0.453125, 0.625, 0.617188, 0.625, 0.632812, - 0.585938, 0.632812, 0.59375, 0.449219, 0.4375, 0.490234, 0.648438, 0.648438, 0.648438, 0.65625, - 0.632812, 0.65625, 0.632812, 0.484375, 0.46875, 0.539062, 0.664062, 0.664062, 0.664062, 0.664062, - 0.65625, 0.667969, 0.65625, 0.53125, 0.507812, 0.585938, 0.667969, 0.667969, 0.667969, 0.667969, - 0.664062, 0.667969, 0.664062, 0.578125, 0.554688, 0.625, 0.667969, 0.667969, 0.667969, 0.667969}, + 0.601562, 0.664062, 0.664062, 0.65625, 0.648438, 0.648438, 0.65625, 0.648438, 0.640625, 0.664062, + 0.554688, 0.648438, 0.65625, 0.625, 0.617188, 0.617188, 0.632812, 0.609375, 0.609375, 0.648438, + 0.507812, 0.617188, 0.632812, 0.585938, 0.570312, 0.578125, 0.59375, 0.5625, 0.554688, 0.625, + 0.539062, 0.601562, 0.546875, 0.421875, 0.412109, 0.453125, 0.625, 0.617188, 0.625, 0.632812, + 0.585938, 0.632812, 0.59375, 0.449219, 0.4375, 0.490234, 0.648438, 0.648438, 0.648438, 0.65625, + 0.632812, 0.65625, 0.632812, 0.484375, 0.46875, 0.539062, 0.664062, 0.664062, 0.664062, 0.664062, + 0.65625, 0.667969, 0.65625, 0.53125, 0.507812, 0.585938, 0.667969, 0.667969, 0.667969, 0.667969, + 0.664062, 0.667969, 0.664062, 0.578125, 0.554688, 0.625, 0.667969, 0.667969, 0.667969, 0.667969}, std::vector{ 0.380859, 0.585938, 0.443359, 0.480469, 0.570312, 0.554688, 0.632812, 0.578125, 0.554688, 0.490234, - 0.570312, 0.427734, 0.578125, 0.632812, 0.417969, 0.5, 0.609375, 0.625, 0.585938, 0.617188, - 0.585938, 0.523438, 0.625, 0.53125, 0.625, 0.5625, 0.466797, 0.427734, 0.601562, 0.433594, + 0.570312, 0.427734, 0.578125, 0.632812, 0.417969, 0.5, 0.609375, 0.625, 0.585938, 0.617188, + 0.585938, 0.523438, 0.625, 0.53125, 0.625, 0.5625, 0.466797, 0.427734, 0.601562, 0.433594, 0.396484, 0.578125, 0.484375, 0.601562, 0.515625, 0.449219, 0.546875, 0.443359, 0.492188, 0.59375, - 0.53125, 0.601562, 0.515625, 0.484375, 0.617188, 0.609375, 0.609375, 0.433594, 0.484375, 0.554688, - 0.398438, 0.507812, 0.523438, 0.601562, 0.625, 0.585938, 0.492188, 0.421875, 0.617188, 0.458984, - 0.570312, 0.59375, 0.625, 0.421875, 0.578125, 0.59375, 0.601562, 0.507812, 0.601562, 0.578125, - 0.410156, 0.46875, 0.570312, 0.453125, 0.585938, 0.625, 0.632812, 0.601562, 0.507812, 0.601562, - 0.507812, 0.617188, 0.632812, 0.585938, 0.570312, 0.578125, 0.59375, 0.5625, 0.554688, 0.625, - 0.539062, 0.601562, 0.546875, 0.421875, 0.412109, 0.453125, 0.625, 0.617188, 0.625, 0.632812}, + 0.53125, 0.601562, 0.515625, 0.484375, 0.617188, 0.609375, 0.609375, 0.433594, 0.484375, 0.554688, + 0.398438, 0.507812, 0.523438, 0.601562, 0.625, 0.585938, 0.492188, 0.421875, 0.617188, 0.458984, + 0.570312, 0.59375, 0.625, 0.421875, 0.578125, 0.59375, 0.601562, 0.507812, 0.601562, 0.578125, + 0.410156, 0.46875, 0.570312, 0.453125, 0.585938, 0.625, 0.632812, 0.601562, 0.507812, 0.601562, + 0.507812, 0.617188, 0.632812, 0.585938, 0.570312, 0.578125, 0.59375, 0.5625, 0.554688, 0.625, + 0.539062, 0.601562, 0.546875, 0.421875, 0.412109, 0.453125, 0.625, 0.617188, 0.625, 0.632812}, std::vector{ - 0.648438, 1.375, 0.800781, 0.902344, 1.28125, 1.17969, 1.78125, 1.3125, 1.17969, 0.945312, - 1.29688, 0.761719, 1.34375, 1.8125, 0.730469, 0.972656, 1.53125, 1.71875, 1.375, 1.65625, - 1.375, 1.05469, 1.71875, 1.09375, 1.71875, 1.25, 0.867188, 0.761719, 1.51562, 0.769531, - 0.6875, 1.34375, 0.925781, 1.46875, 1.03125, 0.816406, 1.17188, 0.800781, 0.949219, 1.42188, - 1.09375, 1.46875, 1.03125, 0.929688, 1.625, 1.57812, 1.57812, 0.769531, 0.929688, 1.17969, - 0.691406, 1, 1.05469, 1.5, 1.6875, 1.40625, 0.949219, 0.746094, 1.625, 0.839844, - 1.29688, 1.42188, 1.71875, 0.746094, 1.34375, 1.4375, 1.46875, 1.01562, 1.5, 1.32812, - 0.714844, 0.878906, 1.28125, 0.832031, 1.375, 1.75, 1.78125, 1.46875, 1.01562, 1.5, - 1, 1.625, 1.82812, 1.375, 1.26562, 1.3125, 1.4375, 1.25, 1.21875, 1.6875, - 1.125, 1.46875, 1.15625, 0.746094, 0.722656, 0.832031, 1.6875, 1.65625, 1.6875, 1.82812}), + 0.648438, 1.375, 0.800781, 0.902344, 1.28125, 1.17969, 1.78125, 1.3125, 1.17969, 0.945312, + 1.29688, 0.761719, 1.34375, 1.8125, 0.730469, 0.972656, 1.53125, 1.71875, 1.375, 1.65625, + 1.375, 1.05469, 1.71875, 1.09375, 1.71875, 1.25, 0.867188, 0.761719, 1.51562, 0.769531, + 0.6875, 1.34375, 0.925781, 1.46875, 1.03125, 0.816406, 1.17188, 0.800781, 0.949219, 1.42188, + 1.09375, 1.46875, 1.03125, 0.929688, 1.625, 1.57812, 1.57812, 0.769531, 0.929688, 1.17969, + 0.691406, 1, 1.05469, 1.5, 1.6875, 1.40625, 0.949219, 0.746094, 1.625, 0.839844, + 1.29688, 1.42188, 1.71875, 0.746094, 1.34375, 1.4375, 1.46875, 1.01562, 1.5, 1.32812, + 0.714844, 0.878906, 1.28125, 0.832031, 1.375, 1.75, 1.78125, 1.46875, 1.01562, 1.5, + 1, 1.625, 1.82812, 1.375, 1.26562, 1.3125, 1.4375, 1.25, 1.21875, 1.6875, + 1.125, 1.46875, 1.15625, 0.746094, 0.722656, 0.832031, 1.6875, 1.65625, 1.6875, 1.82812}), }; return params; } std::vector generateCombinedParams() { - const std::vector> generatedParams { + const std::vector> generatedParams{ generateParams(), generateParams(), generateParamsBF16(), @@ -3364,7 +3461,7 @@ std::vector generateCombinedParams() { } std::vector generateV1CombinedParams() { - const std::vector> generatedParams { + const std::vector> generatedParams{ generateV1Params(), generateV1Params(), generateV1Params(), @@ -3378,10 +3475,14 @@ std::vector generateV1CombinedParams() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_LSTMSequence_With_Hardcoded_Refs, ReferenceLSTMSequenceTest, - testing::ValuesIn(generateCombinedParams()), ReferenceLSTMSequenceTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_LSTMSequence_With_Hardcoded_Refs, + ReferenceLSTMSequenceTest, + testing::ValuesIn(generateCombinedParams()), + ReferenceLSTMSequenceTest::getTestCaseName); -INSTANTIATE_TEST_SUITE_P(smoke_LSTMSequence_With_Hardcoded_Refs, ReferenceLSTMSequenceV1Test, - testing::ValuesIn(generateV1CombinedParams()), ReferenceLSTMSequenceV1Test::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_LSTMSequence_With_Hardcoded_Refs, + ReferenceLSTMSequenceV1Test, + testing::ValuesIn(generateV1CombinedParams()), + ReferenceLSTMSequenceV1Test::getTestCaseName); -} // namespace \ No newline at end of file +} // namespace \ No newline at end of file diff --git a/src/plugins/template/tests/functional/op_reference/matmul.cpp b/src/plugins/template/tests/functional/op_reference/matmul.cpp index a59eb87b366..7b8d9551f68 100644 --- a/src/plugins/template/tests/functional/op_reference/matmul.cpp +++ b/src/plugins/template/tests/functional/op_reference/matmul.cpp @@ -2,11 +2,12 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/matmul.hpp" + #include #include "base_reference_test.hpp" #include "openvino/op/constant.hpp" -#include "openvino/op/matmul.hpp" using namespace reference_tests; using namespace ov; diff --git a/src/plugins/template/tests/functional/op_reference/matrix_nms.cpp b/src/plugins/template/tests/functional/op_reference/matrix_nms.cpp index 95bbd6ebcac..4c2fd3ee507 100644 --- a/src/plugins/template/tests/functional/op_reference/matrix_nms.cpp +++ b/src/plugins/template/tests/functional/op_reference/matrix_nms.cpp @@ -4,24 +4,29 @@ #include -#include "openvino/opsets/opset8.hpp" -#include "openvino/opsets/opset1.hpp" #include "base_reference_test.hpp" +#include "openvino/opsets/opset1.hpp" +#include "openvino/opsets/opset8.hpp" using namespace reference_tests; using namespace ov; namespace { struct MatrixNmsParams { - MatrixNmsParams( - const opset8::MatrixNms::Attributes& attrs, - const reference_tests::Tensor& boxes, const reference_tests::Tensor& scores, - const reference_tests::Tensor& expectedSelectedScores, const reference_tests::Tensor& expectedSelectedIndices, - const reference_tests::Tensor& expectedValidOutputs, const std::string& testcaseName = "") : - attrs(attrs), - boxes(boxes), scores(scores), - expectedSelectedScores(expectedSelectedScores), expectedSelectedIndices(expectedSelectedIndices), - expectedValidOutputs(expectedValidOutputs), testcaseName(testcaseName) {} + MatrixNmsParams(const opset8::MatrixNms::Attributes& attrs, + const reference_tests::Tensor& boxes, + const reference_tests::Tensor& scores, + const reference_tests::Tensor& expectedSelectedScores, + const reference_tests::Tensor& expectedSelectedIndices, + const reference_tests::Tensor& expectedValidOutputs, + const std::string& testcaseName = "") + : attrs(attrs), + boxes(boxes), + scores(scores), + expectedSelectedScores(expectedSelectedScores), + expectedSelectedIndices(expectedSelectedIndices), + expectedValidOutputs(expectedValidOutputs), + testcaseName(testcaseName) {} opset8::MatrixNms::Attributes attrs; reference_tests::Tensor boxes; @@ -83,384 +88,489 @@ std::vector generateParams() { using T = typename element_type_traits::value_type; using T_TH = typename element_type_traits::value_type; using T_IND = typename element_type_traits::value_type; - std::vector params { + std::vector params{ MatrixNmsParams( { - opset8::MatrixNms::SortResultType::SCORE, // sort_result_type - false, // sort_result_across_batch - ET_IND, // output_type - 0.0f, // score_threshold - 3, // nms_top_k - -1, // keep_top_k - 0, // background_class - opset8::MatrixNms::DecayFunction::LINEAR, // decay_function - 2.0f, // gaussian_sigma - 0.0f, // post_threshold - true, // normalized + opset8::MatrixNms::SortResultType::SCORE, // sort_result_type + false, // sort_result_across_batch + ET_IND, // output_type + 0.0f, // score_threshold + 3, // nms_top_k + -1, // keep_top_k + 0, // background_class + opset8::MatrixNms::DecayFunction::LINEAR, // decay_function + 2.0f, // gaussian_sigma + 0.0f, // post_threshold + true, // normalized }, - reference_tests::Tensor(ET, {1, 6, 4}, std::vector{ - 0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, 0.0, -0.1, 1.0, 0.9, - 0.0, 10.0, 1.0, 11.0, 0.0, 10.1, 1.0, 11.1, 0.0, 100.0, 1.0, 101.0}), // boxes - reference_tests::Tensor(ET_TH, {1, 2, 6}, std::vector{ - 0.9, 0.75, 0.6, 0.95, 0.5, 0.3, 0.95, 0.75, 0.6, 0.80, 0.5, 0.3}), // scores - reference_tests::Tensor(ET_TH, {3, 6}, std::vector{ - 1.00, 0.95, 0.00, 0.00, 1.00, 1.00, 1.00, 0.8, 0.00, - 10.00, 1.00, 11.00, 1.00, 0.13636364, 0.0, 0.1, 1.0, 1.1}), // expected_selected_scores - reference_tests::Tensor(ET_IND, {3, 1}, std::vector{0, 3, 1}), // expected_selected_indices - reference_tests::Tensor(ET_IND, {1}, std::vector{3}), // expected_valid_outputs + reference_tests::Tensor(ET, {1, 6, 4}, std::vector{0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, 0.0, + -0.1, 1.0, 0.9, 0.0, 10.0, 1.0, 11.0, 0.0, 10.1, + 1.0, 11.1, 0.0, 100.0, 1.0, 101.0}), // boxes + reference_tests::Tensor( + ET_TH, + {1, 2, 6}, + std::vector{0.9, 0.75, 0.6, 0.95, 0.5, 0.3, 0.95, 0.75, 0.6, 0.80, 0.5, 0.3}), // scores + reference_tests::Tensor(ET_TH, + {3, 6}, + std::vector{1.00, + 0.95, + 0.00, + 0.00, + 1.00, + 1.00, + 1.00, + 0.8, + 0.00, + 10.00, + 1.00, + 11.00, + 1.00, + 0.13636364, + 0.0, + 0.1, + 1.0, + 1.1}), // expected_selected_scores + reference_tests::Tensor(ET_IND, {3, 1}, std::vector{0, 3, 1}), // expected_selected_indices + reference_tests::Tensor(ET_IND, {1}, std::vector{3}), // expected_valid_outputs "matrix_nms_output_type_i64"), MatrixNmsParams( { - opset8::MatrixNms::SortResultType::SCORE, // sort_result_type - false, // sort_result_across_batch - ET_IND, // output_type - 0.0f, // score_threshold - 3, // nms_top_k - -1, // keep_top_k - 0, // background_class - opset8::MatrixNms::DecayFunction::LINEAR, // decay_function - 2.0f, // gaussian_sigma - 0.0f, // post_threshold - true, // normalized + opset8::MatrixNms::SortResultType::SCORE, // sort_result_type + false, // sort_result_across_batch + ET_IND, // output_type + 0.0f, // score_threshold + 3, // nms_top_k + -1, // keep_top_k + 0, // background_class + opset8::MatrixNms::DecayFunction::LINEAR, // decay_function + 2.0f, // gaussian_sigma + 0.0f, // post_threshold + true, // normalized }, - reference_tests::Tensor(ET, {1, 6, 4}, std::vector{ - 0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, 0.0, -0.1, 1.0, 0.9, - 0.0, 10.0, 1.0, 11.0, 0.0, 10.1, 1.0, 11.1, 0.0, 100.0, 1.0, 101.0}), // boxes - reference_tests::Tensor(ET_TH, {1, 2, 6}, std::vector{ - 0.9, 0.75, 0.6, 0.95, 0.5, 0.3, 0.95, 0.75, 0.6, 0.80, 0.5, 0.3}), // scores - reference_tests::Tensor(ET_TH, {3, 6}, std::vector{ - 1.00, 0.95, 0.00, 0.00, 1.00, 1.00, 1.00, 0.8, 0.00, - 10.00, 1.00, 11.00, 1.00, 0.13636364, 0.0, 0.1, 1.0, 1.1}), // expected_selected_scores - reference_tests::Tensor(ET_IND, {3, 1}, std::vector{0, 3, 1}), // expected_selected_indices - reference_tests::Tensor(ET_IND, {1}, std::vector{3}), // expected_valid_outputs + reference_tests::Tensor(ET, {1, 6, 4}, std::vector{0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, 0.0, + -0.1, 1.0, 0.9, 0.0, 10.0, 1.0, 11.0, 0.0, 10.1, + 1.0, 11.1, 0.0, 100.0, 1.0, 101.0}), // boxes + reference_tests::Tensor( + ET_TH, + {1, 2, 6}, + std::vector{0.9, 0.75, 0.6, 0.95, 0.5, 0.3, 0.95, 0.75, 0.6, 0.80, 0.5, 0.3}), // scores + reference_tests::Tensor(ET_TH, + {3, 6}, + std::vector{1.00, + 0.95, + 0.00, + 0.00, + 1.00, + 1.00, + 1.00, + 0.8, + 0.00, + 10.00, + 1.00, + 11.00, + 1.00, + 0.13636364, + 0.0, + 0.1, + 1.0, + 1.1}), // expected_selected_scores + reference_tests::Tensor(ET_IND, {3, 1}, std::vector{0, 3, 1}), // expected_selected_indices + reference_tests::Tensor(ET_IND, {1}, std::vector{3}), // expected_valid_outputs "matrix_nms_output_type_i32"), MatrixNmsParams( { - opset8::MatrixNms::SortResultType::SCORE, // sort_result_type - false, // sort_result_across_batch - ET_IND, // output_type - 0.0f, // score_threshold - 3, // nms_top_k - -1, // keep_top_k - 0, // background_class - opset8::MatrixNms::DecayFunction::GAUSSIAN, // decay_function - 2.0f, // gaussian_sigma - 0.0f, // post_threshold - true, // normalized + opset8::MatrixNms::SortResultType::SCORE, // sort_result_type + false, // sort_result_across_batch + ET_IND, // output_type + 0.0f, // score_threshold + 3, // nms_top_k + -1, // keep_top_k + 0, // background_class + opset8::MatrixNms::DecayFunction::GAUSSIAN, // decay_function + 2.0f, // gaussian_sigma + 0.0f, // post_threshold + true, // normalized }, - reference_tests::Tensor(ET, {1, 6, 4}, std::vector{ - 0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, 0.0, -0.1, 1.0, 0.9, - 0.0, 10.0, 1.0, 11.0, 0.0, 10.1, 1.0, 11.1, 0.0, 100.0, 1.0, 101.0}), // boxes - reference_tests::Tensor(ET_TH, {1, 2, 6}, std::vector{ - 0.9, 0.75, 0.6, 0.95, 0.5, 0.3, 0.95, 0.75, 0.6, 0.80, 0.5, 0.3}), // scores - reference_tests::Tensor(ET_TH, {3, 6}, std::vector{ - 1.00, 0.95, 0.00, 0.00, 1.00, 1.00, 1.00, 0.8, 0.00, - 10.00, 1.00, 11.00, 1.00, 0.1966116, 0.0, 0.1, 1.0, 1.1}), // expected_selected_scores - reference_tests::Tensor(ET_IND, {3, 1}, std::vector{0, 3, 1}), // expected_selected_indices - reference_tests::Tensor(ET_IND, {1}, std::vector{3}), // expected_valid_outputs + reference_tests::Tensor(ET, {1, 6, 4}, std::vector{0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, 0.0, + -0.1, 1.0, 0.9, 0.0, 10.0, 1.0, 11.0, 0.0, 10.1, + 1.0, 11.1, 0.0, 100.0, 1.0, 101.0}), // boxes + reference_tests::Tensor( + ET_TH, + {1, 2, 6}, + std::vector{0.9, 0.75, 0.6, 0.95, 0.5, 0.3, 0.95, 0.75, 0.6, 0.80, 0.5, 0.3}), // scores + reference_tests::Tensor(ET_TH, + {3, 6}, + std::vector{1.00, + 0.95, + 0.00, + 0.00, + 1.00, + 1.00, + 1.00, + 0.8, + 0.00, + 10.00, + 1.00, + 11.00, + 1.00, + 0.1966116, + 0.0, + 0.1, + 1.0, + 1.1}), // expected_selected_scores + reference_tests::Tensor(ET_IND, {3, 1}, std::vector{0, 3, 1}), // expected_selected_indices + reference_tests::Tensor(ET_IND, {1}, std::vector{3}), // expected_valid_outputs "matrix_nms_gaussian"), MatrixNmsParams( { - opset8::MatrixNms::SortResultType::SCORE, // sort_result_type - false, // sort_result_across_batch - ET_IND, // output_type - 0.0f, // score_threshold - 3, // nms_top_k - -1, // keep_top_k - 0, // background_class - opset8::MatrixNms::DecayFunction::LINEAR, // decay_function - 2.0f, // gaussian_sigma - 0.0f, // post_threshold - true, // normalized + opset8::MatrixNms::SortResultType::SCORE, // sort_result_type + false, // sort_result_across_batch + ET_IND, // output_type + 0.0f, // score_threshold + 3, // nms_top_k + -1, // keep_top_k + 0, // background_class + opset8::MatrixNms::DecayFunction::LINEAR, // decay_function + 2.0f, // gaussian_sigma + 0.0f, // post_threshold + true, // normalized }, - reference_tests::Tensor(ET, {2, 6, 4}, std::vector{ - 0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, 0.0, -0.1, 1.0, 0.9, - 0.0, 10.0, 1.0, 11.0, 0.0, 10.1, 1.0, 11.1, 0.0, 100.0, 1.0, 101.0, - 0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, 0.0, -0.1, 1.0, 0.9, - 0.0, 10.0, 1.0, 11.0, 0.0, 10.1, 1.0, 11.1, 0.0, 100.0, 1.0, 101.0}), // boxes - reference_tests::Tensor(ET_TH, {2, 2, 6}, std::vector{ - 0.9, 0.75, 0.6, 0.95, 0.5, 0.3, 0.95, 0.75, 0.6, 0.80, 0.5, 0.3, - 0.9, 0.75, 0.6, 0.95, 0.5, 0.3, 0.95, 0.75, 0.6, 0.80, 0.5, 0.3}), // scores - reference_tests::Tensor(ET_TH, {6, 6}, std::vector{ - 1.00, 0.95, 0.00, 0.00, 1.00, 1.00, 1.00, 0.8, 0.00, 10.00, 1.00, 11.00, 1.00, 0.13636364, 0.0, 0.1, 1.0, 1.1, - 1.00, 0.95, 0.00, 0.00, 1.00, 1.00, 1.00, 0.8, 0.00, 10.00, 1.00, 11.00, 1.00, 0.13636364, 0.0, 0.1, 1.0, 1.1}), - // expected_selected_scores - reference_tests::Tensor(ET_IND, {6, 1}, std::vector{0, 3, 1, 6, 9, 7}), // expected_selected_indices - reference_tests::Tensor(ET_IND, {2}, std::vector{3, 3}), // expected_valid_outputs + reference_tests::Tensor( + ET, + {2, 6, 4}, + std::vector{0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, 0.0, -0.1, 1.0, 0.9, + 0.0, 10.0, 1.0, 11.0, 0.0, 10.1, 1.0, 11.1, 0.0, 100.0, 1.0, 101.0, + 0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, 0.0, -0.1, 1.0, 0.9, + 0.0, 10.0, 1.0, 11.0, 0.0, 10.1, 1.0, 11.1, 0.0, 100.0, 1.0, 101.0}), // boxes + reference_tests::Tensor(ET_TH, {2, 2, 6}, std::vector{0.9, 0.75, 0.6, 0.95, 0.5, 0.3, + 0.95, 0.75, 0.6, 0.80, 0.5, 0.3, + 0.9, 0.75, 0.6, 0.95, 0.5, 0.3, + 0.95, 0.75, 0.6, 0.80, 0.5, 0.3}), // scores + reference_tests::Tensor(ET_TH, + {6, 6}, + std::vector{1.00, 0.95, 0.00, 0.00, 1.00, 1.00, 1.00, 0.8, 0.00, + 10.00, 1.00, 11.00, 1.00, 0.13636364, 0.0, 0.1, 1.0, 1.1, + 1.00, 0.95, 0.00, 0.00, 1.00, 1.00, 1.00, 0.8, 0.00, + 10.00, 1.00, 11.00, 1.00, 0.13636364, 0.0, 0.1, 1.0, 1.1}), + // expected_selected_scores + reference_tests::Tensor(ET_IND, {6, 1}, std::vector{0, 3, 1, 6, 9, 7}), // expected_selected_indices + reference_tests::Tensor(ET_IND, {2}, std::vector{3, 3}), // expected_valid_outputs "matrix_nms_two_batches_two_classes"), MatrixNmsParams( { - opset8::MatrixNms::SortResultType::SCORE, // sort_result_type - true, // sort_result_across_batch - ET_IND, // output_type - 0.0f, // score_threshold - 3, // nms_top_k - -1, // keep_top_k - -1, // background_class - opset8::MatrixNms::DecayFunction::LINEAR, // decay_function - 2.0f, // gaussian_sigma - 0.5f, // post_threshold - true, // normalized + opset8::MatrixNms::SortResultType::SCORE, // sort_result_type + true, // sort_result_across_batch + ET_IND, // output_type + 0.0f, // score_threshold + 3, // nms_top_k + -1, // keep_top_k + -1, // background_class + opset8::MatrixNms::DecayFunction::LINEAR, // decay_function + 2.0f, // gaussian_sigma + 0.5f, // post_threshold + true, // normalized }, - reference_tests::Tensor(ET, {2, 6, 4}, std::vector{ - 0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, 0.0, -0.1, 1.0, 0.9, - 0.0, 10.0, 1.0, 11.0, 0.0, 10.1, 1.0, 11.1, 0.0, 100.0, 1.0, 101.0, - 0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, 0.0, -0.1, 1.0, 0.9, - 0.0, 10.0, 1.0, 11.0, 0.0, 10.1, 1.0, 11.1, 0.0, 100.0, 1.0, 101.0}), // boxes - reference_tests::Tensor(ET_TH, {2, 2, 6}, std::vector{ - 0.9, 0.75, 0.6, 0.95, 0.5, 0.3, 0.95, 0.75, 0.6, 0.80, 0.5, 0.3, - 0.9, 0.75, 0.6, 0.95, 0.5, 0.3, 0.95, 0.75, 0.6, 0.80, 0.5, 0.3}), // scores - reference_tests::Tensor(ET_TH, {8, 6}, std::vector{ - 0.00, 0.95, 0.00, 10.00, 1.00, 11.00, - 1.00, 0.95, 0.00, 0.00, 1.00, 1.00, - 0.00, 0.95, 0.00, 10.00, 1.00, 11.00, - 1.00, 0.95, 0.00, 0.00, 1.00, 1.00, - 0.00, 0.90, 0.00, 0.00, 1.00, 1.00, - 0.00, 0.90, 0.00, 0.00, 1.00, 1.00, - 1.00, 0.80, 0.00, 10.00, 1.00, 11.00, - 1.00, 0.80, 0.00, 10.00, 1.00, 11.00}), // expected_selected_scores - reference_tests::Tensor(ET_IND, {8, 1}, std::vector{3, 0, 9, 6, 0, 6, 3, 9}), // expected_selected_indices - reference_tests::Tensor(ET_IND, {2}, std::vector{4, 4}), // expected_valid_outputs + reference_tests::Tensor( + ET, + {2, 6, 4}, + std::vector{0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, 0.0, -0.1, 1.0, 0.9, + 0.0, 10.0, 1.0, 11.0, 0.0, 10.1, 1.0, 11.1, 0.0, 100.0, 1.0, 101.0, + 0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, 0.0, -0.1, 1.0, 0.9, + 0.0, 10.0, 1.0, 11.0, 0.0, 10.1, 1.0, 11.1, 0.0, 100.0, 1.0, 101.0}), // boxes + reference_tests::Tensor(ET_TH, {2, 2, 6}, std::vector{0.9, 0.75, 0.6, 0.95, 0.5, 0.3, + 0.95, 0.75, 0.6, 0.80, 0.5, 0.3, + 0.9, 0.75, 0.6, 0.95, 0.5, 0.3, + 0.95, 0.75, 0.6, 0.80, 0.5, 0.3}), // scores + reference_tests::Tensor( + ET_TH, + {8, 6}, + std::vector{ + 0.00, 0.95, 0.00, 10.00, 1.00, 11.00, 1.00, 0.95, 0.00, 0.00, 1.00, 1.00, 0.00, + 0.95, 0.00, 10.00, 1.00, 11.00, 1.00, 0.95, 0.00, 0.00, 1.00, 1.00, 0.00, 0.90, + 0.00, 0.00, 1.00, 1.00, 0.00, 0.90, 0.00, 0.00, 1.00, 1.00, 1.00, 0.80, 0.00, + 10.00, 1.00, 11.00, 1.00, 0.80, 0.00, 10.00, 1.00, 11.00}), // expected_selected_scores + reference_tests::Tensor(ET_IND, + {8, 1}, + std::vector{3, 0, 9, 6, 0, 6, 3, 9}), // expected_selected_indices + reference_tests::Tensor(ET_IND, {2}, std::vector{4, 4}), // expected_valid_outputs "matrix_nms_two_batches_two_classes_by_score_cross_batch"), MatrixNmsParams( { - opset8::MatrixNms::SortResultType::CLASSID, // sort_result_type - true, // sort_result_across_batch - ET_IND, // output_type - 0.0f, // score_threshold - 3, // nms_top_k - -1, // keep_top_k - -1, // background_class - opset8::MatrixNms::DecayFunction::LINEAR, // decay_function - 2.0f, // gaussian_sigma - 0.5f, // post_threshold - true, // normalized + opset8::MatrixNms::SortResultType::CLASSID, // sort_result_type + true, // sort_result_across_batch + ET_IND, // output_type + 0.0f, // score_threshold + 3, // nms_top_k + -1, // keep_top_k + -1, // background_class + opset8::MatrixNms::DecayFunction::LINEAR, // decay_function + 2.0f, // gaussian_sigma + 0.5f, // post_threshold + true, // normalized }, - reference_tests::Tensor(ET, {2, 6, 4}, std::vector{ - 0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, 0.0, -0.1, 1.0, 0.9, - 0.0, 10.0, 1.0, 11.0, 0.0, 10.1, 1.0, 11.1, 0.0, 100.0, 1.0, 101.0, - 0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, 0.0, -0.1, 1.0, 0.9, - 0.0, 10.0, 1.0, 11.0, 0.0, 10.1, 1.0, 11.1, 0.0, 100.0, 1.0, 101.0}), // boxes - reference_tests::Tensor(ET_TH, {2, 2, 6}, std::vector{ - 0.9, 0.75, 0.6, 0.95, 0.5, 0.3, 0.95, 0.75, 0.6, 0.80, 0.5, 0.3, - 0.9, 0.75, 0.6, 0.95, 0.5, 0.3, 0.95, 0.75, 0.6, 0.80, 0.5, 0.3}), // scores - reference_tests::Tensor(ET_TH, {8, 6}, std::vector{ - 0.00, 0.95, 0.00, 10.00, 1.00, 11.00, - 0.00, 0.90, 0.00, 0.00, 1.00, 1.00, - 0.00, 0.95, 0.00, 10.00, 1.00, 11.00, - 0.00, 0.90, 0.00, 0.00, 1.00, 1.00, - 1.00, 0.95, 0.00, 0.00, 1.00, 1.00, - 1.00, 0.80, 0.00, 10.00, 1.00, 11.00, - 1.00, 0.95, 0.00, 0.00, 1.00, 1.00, - 1.00, 0.80, 0.00, 10.00, 1.00, 11.00}), // expected_selected_scores - reference_tests::Tensor(ET_IND, {8, 1}, std::vector{3, 0, 9, 6, 0, 3, 6, 9}), // expected_selected_indices - reference_tests::Tensor(ET_IND, {2}, std::vector{4, 4}), // expected_valid_outputs + reference_tests::Tensor( + ET, + {2, 6, 4}, + std::vector{0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, 0.0, -0.1, 1.0, 0.9, + 0.0, 10.0, 1.0, 11.0, 0.0, 10.1, 1.0, 11.1, 0.0, 100.0, 1.0, 101.0, + 0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, 0.0, -0.1, 1.0, 0.9, + 0.0, 10.0, 1.0, 11.0, 0.0, 10.1, 1.0, 11.1, 0.0, 100.0, 1.0, 101.0}), // boxes + reference_tests::Tensor(ET_TH, {2, 2, 6}, std::vector{0.9, 0.75, 0.6, 0.95, 0.5, 0.3, + 0.95, 0.75, 0.6, 0.80, 0.5, 0.3, + 0.9, 0.75, 0.6, 0.95, 0.5, 0.3, + 0.95, 0.75, 0.6, 0.80, 0.5, 0.3}), // scores + reference_tests::Tensor( + ET_TH, + {8, 6}, + std::vector{ + 0.00, 0.95, 0.00, 10.00, 1.00, 11.00, 0.00, 0.90, 0.00, 0.00, 1.00, 1.00, 0.00, + 0.95, 0.00, 10.00, 1.00, 11.00, 0.00, 0.90, 0.00, 0.00, 1.00, 1.00, 1.00, 0.95, + 0.00, 0.00, 1.00, 1.00, 1.00, 0.80, 0.00, 10.00, 1.00, 11.00, 1.00, 0.95, 0.00, + 0.00, 1.00, 1.00, 1.00, 0.80, 0.00, 10.00, 1.00, 11.00}), // expected_selected_scores + reference_tests::Tensor(ET_IND, + {8, 1}, + std::vector{3, 0, 9, 6, 0, 3, 6, 9}), // expected_selected_indices + reference_tests::Tensor(ET_IND, {2}, std::vector{4, 4}), // expected_valid_outputs "matrix_nms_two_batches_two_classes_by_classid_cross_batch"), MatrixNmsParams( { - opset8::MatrixNms::SortResultType::CLASSID, // sort_result_type - false, // sort_result_across_batch - ET_IND, // output_type - 0.0f, // score_threshold - 3, // nms_top_k - 3, // keep_top_k - 0, // background_class - opset8::MatrixNms::DecayFunction::LINEAR, // decay_function - 2.0f, // gaussian_sigma - 0.0f, // post_threshold - true, // normalized + opset8::MatrixNms::SortResultType::CLASSID, // sort_result_type + false, // sort_result_across_batch + ET_IND, // output_type + 0.0f, // score_threshold + 3, // nms_top_k + 3, // keep_top_k + 0, // background_class + opset8::MatrixNms::DecayFunction::LINEAR, // decay_function + 2.0f, // gaussian_sigma + 0.0f, // post_threshold + true, // normalized }, - reference_tests::Tensor(ET, {2, 6, 4}, std::vector{ - 0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, 0.0, -0.1, 1.0, 0.9, - 0.0, 10.0, 1.0, 11.0, 0.0, 10.1, 1.0, 11.1, 0.0, 100.0, 1.0, 101.0, - 0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, 0.0, -0.1, 1.0, 0.9, - 0.0, 10.0, 1.0, 11.0, 0.0, 10.1, 1.0, 11.1, 0.0, 100.0, 1.0, 101.0}), // boxes - reference_tests::Tensor(ET_TH, {2, 2, 6}, std::vector{ - 0.9, 0.75, 0.6, 0.95, 0.5, 0.3, 0.95, 0.75, 0.6, 0.80, 0.5, 0.3, - 0.9, 0.75, 0.6, 0.95, 0.5, 0.3, 0.95, 0.75, 0.6, 0.80, 0.5, 0.3}), // scores - reference_tests::Tensor(ET_TH, {6, 6}, std::vector{ - 1.00, 0.95, 0.00, 0.00, 1.00, 1.00, 1.00, 0.8, 0.00, 10.00, 1.00, 11.00, 1.00, 0.13636364, 0.0, 0.1, 1.0, 1.1, - 1.00, 0.95, 0.00, 0.00, 1.00, 1.00, 1.00, 0.8, 0.00, 10.00, 1.00, 11.00, 1.00, 0.13636364, 0.0, 0.1, 1.0, 1.1}), - // expected_selected_scores - reference_tests::Tensor(ET_IND, {6, 1}, std::vector{0, 3, 1, 6, 9, 7}), // expected_selected_indices - reference_tests::Tensor(ET_IND, {2}, std::vector{3, 3}), // expected_valid_outputs + reference_tests::Tensor( + ET, + {2, 6, 4}, + std::vector{0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, 0.0, -0.1, 1.0, 0.9, + 0.0, 10.0, 1.0, 11.0, 0.0, 10.1, 1.0, 11.1, 0.0, 100.0, 1.0, 101.0, + 0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, 0.0, -0.1, 1.0, 0.9, + 0.0, 10.0, 1.0, 11.0, 0.0, 10.1, 1.0, 11.1, 0.0, 100.0, 1.0, 101.0}), // boxes + reference_tests::Tensor(ET_TH, {2, 2, 6}, std::vector{0.9, 0.75, 0.6, 0.95, 0.5, 0.3, + 0.95, 0.75, 0.6, 0.80, 0.5, 0.3, + 0.9, 0.75, 0.6, 0.95, 0.5, 0.3, + 0.95, 0.75, 0.6, 0.80, 0.5, 0.3}), // scores + reference_tests::Tensor(ET_TH, + {6, 6}, + std::vector{1.00, 0.95, 0.00, 0.00, 1.00, 1.00, 1.00, 0.8, 0.00, + 10.00, 1.00, 11.00, 1.00, 0.13636364, 0.0, 0.1, 1.0, 1.1, + 1.00, 0.95, 0.00, 0.00, 1.00, 1.00, 1.00, 0.8, 0.00, + 10.00, 1.00, 11.00, 1.00, 0.13636364, 0.0, 0.1, 1.0, 1.1}), + // expected_selected_scores + reference_tests::Tensor(ET_IND, {6, 1}, std::vector{0, 3, 1, 6, 9, 7}), // expected_selected_indices + reference_tests::Tensor(ET_IND, {2}, std::vector{3, 3}), // expected_valid_outputs "matrix_nms_by_keep_top_k"), MatrixNmsParams( { - opset8::MatrixNms::SortResultType::SCORE, // sort_result_type - false, // sort_result_across_batch - ET_IND, // output_type - 0.0f, // score_threshold - 3, // nms_top_k - -1, // keep_top_k - -1, // background_class - opset8::MatrixNms::DecayFunction::LINEAR, // decay_function - 2.0f, // gaussian_sigma - 0.0f, // post_threshold - true, // normalized + opset8::MatrixNms::SortResultType::SCORE, // sort_result_type + false, // sort_result_across_batch + ET_IND, // output_type + 0.0f, // score_threshold + 3, // nms_top_k + -1, // keep_top_k + -1, // background_class + opset8::MatrixNms::DecayFunction::LINEAR, // decay_function + 2.0f, // gaussian_sigma + 0.0f, // post_threshold + true, // normalized }, - reference_tests::Tensor(ET, {1, 6, 4}, std::vector{ - 0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, 0.0, -0.1, 1.0, 0.9, - 0.0, 10.0, 1.0, 11.0, 0.0, 10.1, 1.0, 11.1, 0.0, 100.0, 1.0, 101.0}), // boxes - reference_tests::Tensor(ET_TH, {1, 2, 6}, std::vector{ - 0.9, 0.75, 0.6, 0.95, 0.5, 0.3, 0.95, 0.75, 0.6, 0.80, 0.5, 0.3}), // scores - reference_tests::Tensor(ET_TH, {6, 6}, std::vector{ - 0.00, 0.95, 0.0, 10.0, 1.0, 11.0, 1.00, 0.95, 0.0, 0.0, 1.0, 1.0, 0.00, 0.9, 0.0, 0.0, 1.0, 1.0, - 1.00, 0.8, 0.0, 10.0, 1.0, 11.0, 0.00, 0.13636364, 0.0, 0.1, 1.0, 1.1, 1.00, 0.13636364, 0.0, 0.1, 1.0, 1.1}), - // expected_selected_scores - reference_tests::Tensor(ET_IND, {6, 1}, std::vector{3, 0, 0, 3, 1, 1}), // expected_selected_indices - reference_tests::Tensor(ET_IND, {1}, std::vector{6}), // expected_valid_outputs + reference_tests::Tensor(ET, {1, 6, 4}, std::vector{0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, 0.0, + -0.1, 1.0, 0.9, 0.0, 10.0, 1.0, 11.0, 0.0, 10.1, + 1.0, 11.1, 0.0, 100.0, 1.0, 101.0}), // boxes + reference_tests::Tensor( + ET_TH, + {1, 2, 6}, + std::vector{0.9, 0.75, 0.6, 0.95, 0.5, 0.3, 0.95, 0.75, 0.6, 0.80, 0.5, 0.3}), // scores + reference_tests::Tensor( + ET_TH, + {6, 6}, + std::vector{0.00, 0.95, 0.0, 10.0, 1.0, 11.0, 1.00, 0.95, 0.0, 0.0, 1.0, 1.0, + 0.00, 0.9, 0.0, 0.0, 1.0, 1.0, 1.00, 0.8, 0.0, 10.0, 1.0, 11.0, + 0.00, 0.13636364, 0.0, 0.1, 1.0, 1.1, 1.00, 0.13636364, 0.0, 0.1, 1.0, 1.1}), + // expected_selected_scores + reference_tests::Tensor(ET_IND, {6, 1}, std::vector{3, 0, 0, 3, 1, 1}), // expected_selected_indices + reference_tests::Tensor(ET_IND, {1}, std::vector{6}), // expected_valid_outputs "matrix_nms_background"), MatrixNmsParams( { - opset8::MatrixNms::SortResultType::SCORE, // sort_result_type - false, // sort_result_across_batch - ET_IND, // output_type - 0.0f, // score_threshold - 3, // nms_top_k - -1, // keep_top_k - -1, // background_class - opset8::MatrixNms::DecayFunction::LINEAR, // decay_function - 2.0f, // gaussian_sigma - 0.0f, // post_threshold - true, // normalized + opset8::MatrixNms::SortResultType::SCORE, // sort_result_type + false, // sort_result_across_batch + ET_IND, // output_type + 0.0f, // score_threshold + 3, // nms_top_k + -1, // keep_top_k + -1, // background_class + opset8::MatrixNms::DecayFunction::LINEAR, // decay_function + 2.0f, // gaussian_sigma + 0.0f, // post_threshold + true, // normalized }, - reference_tests::Tensor(ET, {1, 6, 4}, std::vector{ - 1.0, 1.0, 0.0, 0.0, 0.0, 0.1, 1.0, 1.1, 0.0, 0.9, 1.0, -0.1, - 0.0, 10.0, 1.0, 11.0, 1.0, 10.1, 0.0, 11.1, 1.0, 101.0, 0.0, 100.0}), // boxes - reference_tests::Tensor(ET_TH, {1, 1, 6}, std::vector{ - 0.9, 0.75, 0.6, 0.95, 0.5, 0.3}), // scores - reference_tests::Tensor(ET_TH, {3, 6}, std::vector{ - 0.00, 0.95, 0.0, 10.0, 1.0, 11.0, 0.00, 0.9, 1.0, 1.0, 0.0, 0.0, 0.00, 0.75, 0.0, 0.1, 1.0, 1.1}), - // expected_selected_scores - reference_tests::Tensor(ET_IND, {3, 1}, std::vector{3, 0, 1}), // expected_selected_indices - reference_tests::Tensor(ET_IND, {1}, std::vector{3}), // expected_valid_outputs + reference_tests::Tensor(ET, {1, 6, 4}, std::vector{1.0, 1.0, 0.0, 0.0, 0.0, 0.1, 1.0, 1.1, 0.0, + 0.9, 1.0, -0.1, 0.0, 10.0, 1.0, 11.0, 1.0, 10.1, + 0.0, 11.1, 1.0, 101.0, 0.0, 100.0}), // boxes + reference_tests::Tensor(ET_TH, {1, 1, 6}, std::vector{0.9, 0.75, 0.6, 0.95, 0.5, 0.3}), // scores + reference_tests::Tensor(ET_TH, + {3, 6}, + std::vector{0.00, + 0.95, + 0.0, + 10.0, + 1.0, + 11.0, + 0.00, + 0.9, + 1.0, + 1.0, + 0.0, + 0.0, + 0.00, + 0.75, + 0.0, + 0.1, + 1.0, + 1.1}), + // expected_selected_scores + reference_tests::Tensor(ET_IND, {3, 1}, std::vector{3, 0, 1}), // expected_selected_indices + reference_tests::Tensor(ET_IND, {1}, std::vector{3}), // expected_valid_outputs "matrix_nms_flipped_coordinates"), MatrixNmsParams( { - opset8::MatrixNms::SortResultType::SCORE, // sort_result_type - false, // sort_result_across_batch - ET_IND, // output_type - 0.0f, // score_threshold - 3, // nms_top_k - -1, // keep_top_k - -1, // background_class - opset8::MatrixNms::DecayFunction::LINEAR, // decay_function - 2.0f, // gaussian_sigma - 0.8f, // post_threshold - true, // normalized + opset8::MatrixNms::SortResultType::SCORE, // sort_result_type + false, // sort_result_across_batch + ET_IND, // output_type + 0.0f, // score_threshold + 3, // nms_top_k + -1, // keep_top_k + -1, // background_class + opset8::MatrixNms::DecayFunction::LINEAR, // decay_function + 2.0f, // gaussian_sigma + 0.8f, // post_threshold + true, // normalized }, - reference_tests::Tensor(ET, {1, 6, 4}, std::vector{ - 0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, 0.0, -0.1, 1.0, 0.9, - 0.0, 10.0, 1.0, 11.0, 0.0, 10.1, 1.0, 11.1, 0.0, 100.0, 1.0, 101.0}), // boxes - reference_tests::Tensor(ET_TH, {1, 1, 6}, std::vector{ - 0.9, 0.75, 0.6, 0.95, 0.5, 0.3}), // scores - reference_tests::Tensor(ET_TH, {2, 6}, std::vector{ - 0.00, 0.95, 0.00, 10.00, 1.00, 11.00, 0.00, 0.9, 0.00, 0.00, 1.00, 1.00}), - // expected_selected_scores - reference_tests::Tensor(ET_IND, {2, 1}, std::vector{3, 0}), // expected_selected_indices - reference_tests::Tensor(ET_IND, {1}, std::vector{2}), // expected_valid_outputs + reference_tests::Tensor(ET, {1, 6, 4}, std::vector{0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, 0.0, + -0.1, 1.0, 0.9, 0.0, 10.0, 1.0, 11.0, 0.0, 10.1, + 1.0, 11.1, 0.0, 100.0, 1.0, 101.0}), // boxes + reference_tests::Tensor(ET_TH, {1, 1, 6}, std::vector{0.9, 0.75, 0.6, 0.95, 0.5, 0.3}), // scores + reference_tests::Tensor( + ET_TH, + {2, 6}, + std::vector{0.00, 0.95, 0.00, 10.00, 1.00, 11.00, 0.00, 0.9, 0.00, 0.00, 1.00, 1.00}), + // expected_selected_scores + reference_tests::Tensor(ET_IND, {2, 1}, std::vector{3, 0}), // expected_selected_indices + reference_tests::Tensor(ET_IND, {1}, std::vector{2}), // expected_valid_outputs "matrix_nms_post_threshold"), MatrixNmsParams( { - opset8::MatrixNms::SortResultType::SCORE, // sort_result_type - false, // sort_result_across_batch - ET_IND, // output_type - 0.0f, // score_threshold - 3, // nms_top_k - -1, // keep_top_k - -1, // background_class - opset8::MatrixNms::DecayFunction::LINEAR, // decay_function - 2.0f, // gaussian_sigma - 0.3f, // post_threshold - true, // normalized + opset8::MatrixNms::SortResultType::SCORE, // sort_result_type + false, // sort_result_across_batch + ET_IND, // output_type + 0.0f, // score_threshold + 3, // nms_top_k + -1, // keep_top_k + -1, // background_class + opset8::MatrixNms::DecayFunction::LINEAR, // decay_function + 2.0f, // gaussian_sigma + 0.3f, // post_threshold + true, // normalized }, - reference_tests::Tensor(ET, {1, 10, 4}, std::vector{ - 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, - 1.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0, - 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0}), // boxes - reference_tests::Tensor(ET_TH, {1, 1, 10}, std::vector{ - 0.4, 0.01, 0.2, 0.09, 0.15, 0.05, 0.02, 0.03, 0.05, 0.0}), // scores - reference_tests::Tensor(ET_TH, {1, 6}, std::vector{ - 0.00, 0.40, 0.00, 0.00, 1.00, 1.00}), // expected_selected_scores - reference_tests::Tensor(ET_IND, {1, 1}, std::vector{0}), // expected_selected_indices - reference_tests::Tensor(ET_IND, {1}, std::vector{1}), // expected_valid_outputs + reference_tests::Tensor(ET, {1, 10, 4}, std::vector{0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0, + 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0, + 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0, + 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0, + 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0}), // boxes + reference_tests::Tensor( + ET_TH, + {1, 1, 10}, + std::vector{0.4, 0.01, 0.2, 0.09, 0.15, 0.05, 0.02, 0.03, 0.05, 0.0}), // scores + reference_tests::Tensor(ET_TH, + {1, 6}, + std::vector{0.00, 0.40, 0.00, 0.00, 1.00, 1.00}), // expected_selected_scores + reference_tests::Tensor(ET_IND, {1, 1}, std::vector{0}), // expected_selected_indices + reference_tests::Tensor(ET_IND, {1}, std::vector{1}), // expected_valid_outputs "matrix_nms_identical_boxes"), MatrixNmsParams( { - opset8::MatrixNms::SortResultType::SCORE, // sort_result_type - false, // sort_result_across_batch - ET_IND, // output_type - 0.0f, // score_threshold - 2, // nms_top_k - -1, // keep_top_k - -1, // background_class - opset8::MatrixNms::DecayFunction::LINEAR, // decay_function - 2.0f, // gaussian_sigma - 0.0f, // post_threshold - true, // normalized + opset8::MatrixNms::SortResultType::SCORE, // sort_result_type + false, // sort_result_across_batch + ET_IND, // output_type + 0.0f, // score_threshold + 2, // nms_top_k + -1, // keep_top_k + -1, // background_class + opset8::MatrixNms::DecayFunction::LINEAR, // decay_function + 2.0f, // gaussian_sigma + 0.0f, // post_threshold + true, // normalized }, - reference_tests::Tensor(ET, {1, 6, 4}, std::vector{ - 0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, 0.0, -0.1, 1.0, 0.9, - 0.0, 10.0, 1.0, 11.0, 0.0, 10.1, 1.0, 11.1, 0.0, 100.0, 1.0, 101.0}), // boxes - reference_tests::Tensor(ET_TH, {1, 1, 6}, std::vector{ - 0.9, 0.75, 0.6, 0.95, 0.5, 0.3}), // scores - reference_tests::Tensor(ET_TH, {2, 6}, std::vector{ - 0.00, 0.95, 0.00, 10.00, 1.00, 11.00, 0.00, 0.90, 0.00, 0.00, 1.00, 1.00}), - // expected_selected_scores - reference_tests::Tensor(ET_IND, {2, 1}, std::vector{3, 0}), // expected_selected_indices - reference_tests::Tensor(ET_IND, {1}, std::vector{2}), // expected_valid_outputs + reference_tests::Tensor(ET, {1, 6, 4}, std::vector{0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, 0.0, + -0.1, 1.0, 0.9, 0.0, 10.0, 1.0, 11.0, 0.0, 10.1, + 1.0, 11.1, 0.0, 100.0, 1.0, 101.0}), // boxes + reference_tests::Tensor(ET_TH, {1, 1, 6}, std::vector{0.9, 0.75, 0.6, 0.95, 0.5, 0.3}), // scores + reference_tests::Tensor( + ET_TH, + {2, 6}, + std::vector{0.00, 0.95, 0.00, 10.00, 1.00, 11.00, 0.00, 0.90, 0.00, 0.00, 1.00, 1.00}), + // expected_selected_scores + reference_tests::Tensor(ET_IND, {2, 1}, std::vector{3, 0}), // expected_selected_indices + reference_tests::Tensor(ET_IND, {1}, std::vector{2}), // expected_valid_outputs "matrix_nms_nms_top_k"), MatrixNmsParams( { - opset8::MatrixNms::SortResultType::SCORE, // sort_result_type - false, // sort_result_across_batch - ET_IND, // output_type - 0.0f, // score_threshold - 3, // nms_top_k - -1, // keep_top_k - -1, // background_class - opset8::MatrixNms::DecayFunction::LINEAR, // decay_function - 2.0f, // gaussian_sigma - 0.0f, // post_threshold - true, // normalized + opset8::MatrixNms::SortResultType::SCORE, // sort_result_type + false, // sort_result_across_batch + ET_IND, // output_type + 0.0f, // score_threshold + 3, // nms_top_k + -1, // keep_top_k + -1, // background_class + opset8::MatrixNms::DecayFunction::LINEAR, // decay_function + 2.0f, // gaussian_sigma + 0.0f, // post_threshold + true, // normalized }, - reference_tests::Tensor(ET, {1, 1, 4}, std::vector{0.0, 0.0, 1.0, 1.0}), // boxes - reference_tests::Tensor(ET_TH, {1, 1, 1}, std::vector{0.9}), // scores - reference_tests::Tensor(ET_TH, {1, 6}, std::vector{ - 0.00, 0.90, 0.00, 0.00, 1.00, 1.00}), // expected_selected_scores - reference_tests::Tensor(ET_IND, {1, 1}, std::vector{0}), // expected_selected_indices - reference_tests::Tensor(ET_IND, {1}, std::vector{1}), // expected_valid_outputs + reference_tests::Tensor(ET, {1, 1, 4}, std::vector{0.0, 0.0, 1.0, 1.0}), // boxes + reference_tests::Tensor(ET_TH, {1, 1, 1}, std::vector{0.9}), // scores + reference_tests::Tensor(ET_TH, + {1, 6}, + std::vector{0.00, 0.90, 0.00, 0.00, 1.00, 1.00}), // expected_selected_scores + reference_tests::Tensor(ET_IND, {1, 1}, std::vector{0}), // expected_selected_indices + reference_tests::Tensor(ET_IND, {1}, std::vector{1}), // expected_valid_outputs "matrix_nms_single_box"), MatrixNmsParams( { - opset8::MatrixNms::SortResultType::SCORE, // sort_result_type - false, // sort_result_across_batch - ET_IND, // output_type - 2.0f, // score_threshold - 3, // nms_top_k - -1, // keep_top_k - -1, // background_class - opset8::MatrixNms::DecayFunction::LINEAR, // decay_function - 2.0f, // gaussian_sigma - 0.0f, // post_threshold - true, // normalized + opset8::MatrixNms::SortResultType::SCORE, // sort_result_type + false, // sort_result_across_batch + ET_IND, // output_type + 2.0f, // score_threshold + 3, // nms_top_k + -1, // keep_top_k + -1, // background_class + opset8::MatrixNms::DecayFunction::LINEAR, // decay_function + 2.0f, // gaussian_sigma + 0.0f, // post_threshold + true, // normalized }, - reference_tests::Tensor(ET, {1, 6, 4}, std::vector{ - 0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, 0.0, -0.1, 1.0, 0.9, - 0.0, 10.0, 1.0, 11.0, 0.0, 10.1, 1.0, 11.1, 0.0, 100.0, 1.0, 101.0}), // boxes - reference_tests::Tensor(ET_TH, {1, 1, 6}, std::vector{ - 0.9, 0.75, 0.6, 0.95, 0.5, 0.3}), // scores - reference_tests::Tensor(ET_TH, {0, 6}, std::vector{}), // expected_selected_scores - reference_tests::Tensor(ET_IND, {0, 1}, std::vector{}), // expected_selected_indices - reference_tests::Tensor(ET_IND, {1}, std::vector{0}), // expected_valid_outputs + reference_tests::Tensor(ET, {1, 6, 4}, std::vector{0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, 0.0, + -0.1, 1.0, 0.9, 0.0, 10.0, 1.0, 11.0, 0.0, 10.1, + 1.0, 11.1, 0.0, 100.0, 1.0, 101.0}), // boxes + reference_tests::Tensor(ET_TH, {1, 1, 6}, std::vector{0.9, 0.75, 0.6, 0.95, 0.5, 0.3}), // scores + reference_tests::Tensor(ET_TH, {0, 6}, std::vector{}), // expected_selected_scores + reference_tests::Tensor(ET_IND, {0, 1}, std::vector{}), // expected_selected_indices + reference_tests::Tensor(ET_IND, {1}, std::vector{0}), // expected_valid_outputs "matrix_nms_no_output"), }; return params; } std::vector generateCombinedParams() { - const std::vector> generatedParams { + const std::vector> generatedParams{ generateParams(), generateParams(), generateParams(), @@ -476,6 +586,8 @@ std::vector generateCombinedParams() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_MatrixNms_With_Hardcoded_Refs, ReferenceMatrixNmsTest, - testing::ValuesIn(generateCombinedParams()), ReferenceMatrixNmsTest::getTestCaseName); -} // namespace +INSTANTIATE_TEST_SUITE_P(smoke_MatrixNms_With_Hardcoded_Refs, + ReferenceMatrixNmsTest, + testing::ValuesIn(generateCombinedParams()), + ReferenceMatrixNmsTest::getTestCaseName); +} // namespace diff --git a/src/plugins/template/tests/functional/op_reference/max_pool.cpp b/src/plugins/template/tests/functional/op_reference/max_pool.cpp index 1ae548a93ee..2a599eb5831 100644 --- a/src/plugins/template/tests/functional/op_reference/max_pool.cpp +++ b/src/plugins/template/tests/functional/op_reference/max_pool.cpp @@ -2,9 +2,10 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/max_pool.hpp" + #include -#include "openvino/op/max_pool.hpp" #include "base_reference_test.hpp" using namespace reference_tests; diff --git a/src/plugins/template/tests/functional/op_reference/maximum.cpp b/src/plugins/template/tests/functional/op_reference/maximum.cpp index faf8e328a13..1fafa5499d0 100644 --- a/src/plugins/template/tests/functional/op_reference/maximum.cpp +++ b/src/plugins/template/tests/functional/op_reference/maximum.cpp @@ -2,10 +2,12 @@ // SPDX-License-Identifier: Apache-2.0 // -#include -#include "base_reference_test.hpp" #include "openvino/op/maximum.hpp" +#include + +#include "base_reference_test.hpp" + using namespace ov; using namespace reference_tests; @@ -14,11 +16,11 @@ namespace { struct MaximumParams { template MaximumParams(const PartialShape& iShape1, - const PartialShape& iShape2, - const element::Type& iType, - const std::vector& iValues1, - const std::vector& iValues2, - const std::vector& oValues) + const PartialShape& iShape2, + const element::Type& iType, + const std::vector& iValues1, + const std::vector& iValues2, + const std::vector& oValues) : pshape1(iShape1), pshape2(iShape2), inType(iType), @@ -57,9 +59,9 @@ public: private: static std::shared_ptr CreateFunction(const PartialShape& input_shape1, - const PartialShape& input_shape2, - const element::Type& input_type, - const element::Type& expected_output_type) { + const PartialShape& input_shape2, + const element::Type& input_type, + const element::Type& expected_output_type) { const auto in1 = std::make_shared(input_type, input_shape1); const auto in2 = std::make_shared(input_type, input_shape2); const auto maximum = std::make_shared(in1, in2); @@ -76,14 +78,12 @@ template std::vector generateParamsForMaximumFloat() { using T = typename element_type_traits::value_type; - std::vector params{ - MaximumParams(ov::PartialShape{2, 2, 2}, - ov::PartialShape{2, 2, 2}, - IN_ET, - std::vector{1, 8, -8, 17, -0.5, 0.5, 2, 1}, - std::vector{1, 2, 4, 8, 0, 0, 1, 1.5}, - std::vector{1, 8, 4, 17, 0, 0.5, 2, 1.5}) - }; + std::vector params{MaximumParams(ov::PartialShape{2, 2, 2}, + ov::PartialShape{2, 2, 2}, + IN_ET, + std::vector{1, 8, -8, 17, -0.5, 0.5, 2, 1}, + std::vector{1, 2, 4, 8, 0, 0, 1, 1.5}, + std::vector{1, 8, 4, 17, 0, 0.5, 2, 1.5})}; return params; } @@ -91,14 +91,12 @@ template std::vector generateParamsForMaximumInt32() { using T = typename element_type_traits::value_type; - std::vector params{ - MaximumParams(ov::PartialShape{2, 2}, - ov::PartialShape{2, 2}, - IN_ET, - std::vector{0x40000140, 0x40000001, -8, 17}, - std::vector{0x40000170, 0x40000000, 4, 8}, - std::vector{0x40000170, 0x40000001, 4, 17}) - }; + std::vector params{MaximumParams(ov::PartialShape{2, 2}, + ov::PartialShape{2, 2}, + IN_ET, + std::vector{0x40000140, 0x40000001, -8, 17}, + std::vector{0x40000170, 0x40000000, 4, 8}, + std::vector{0x40000170, 0x40000001, 4, 17})}; return params; } @@ -106,14 +104,12 @@ template std::vector generateParamsForMaximumInt64() { using T = typename element_type_traits::value_type; - std::vector params{ - MaximumParams(ov::PartialShape{2, 2, 2}, - ov::PartialShape{2, 2, 2}, - IN_ET, - std::vector{1, 8, -8, 17, -5, 67635216, 2, 17179887632}, - std::vector{1, 2, 4, 8, 0, 18448, 1, 28059}, - std::vector{1, 8, 4, 17, 0, 67635216, 2, 17179887632}) - }; + std::vector params{MaximumParams(ov::PartialShape{2, 2, 2}, + ov::PartialShape{2, 2, 2}, + IN_ET, + std::vector{1, 8, -8, 17, -5, 67635216, 2, 17179887632}, + std::vector{1, 2, 4, 8, 0, 18448, 1, 28059}, + std::vector{1, 8, 4, 17, 0, 67635216, 2, 17179887632})}; return params; } @@ -121,22 +117,18 @@ template std::vector generateParamsForMaximumUnsignedInt() { using T = typename element_type_traits::value_type; - std::vector params{ - MaximumParams(ov::PartialShape{2, 2, 2}, - ov::PartialShape{2, 2, 2}, - IN_ET, - std::vector{1, 8, 7, 17, 5, 67635216, 2, 17179887}, - std::vector{1, 2, 4, 8, 0, 18448, 1, 28059}, - std::vector{1, 8, 7, 17, 5, 67635216, 2, 17179887}) - }; + std::vector params{MaximumParams(ov::PartialShape{2, 2, 2}, + ov::PartialShape{2, 2, 2}, + IN_ET, + std::vector{1, 8, 7, 17, 5, 67635216, 2, 17179887}, + std::vector{1, 2, 4, 8, 0, 18448, 1, 28059}, + std::vector{1, 8, 7, 17, 5, 67635216, 2, 17179887})}; return params; } std::vector generateCombinedParamsForMaximumFloat() { - const std::vector> allTypeParams{ - generateParamsForMaximumFloat(), - generateParamsForMaximumFloat() - }; + const std::vector> allTypeParams{generateParamsForMaximumFloat(), + generateParamsForMaximumFloat()}; std::vector combinedParams; @@ -148,9 +140,7 @@ std::vector generateCombinedParamsForMaximumFloat() { } std::vector generateCombinedParamsForMaximumInt32() { - const std::vector> allTypeParams{ - generateParamsForMaximumInt32() - }; + const std::vector> allTypeParams{generateParamsForMaximumInt32()}; std::vector combinedParams; @@ -162,9 +152,7 @@ std::vector generateCombinedParamsForMaximumInt32() { } std::vector generateCombinedParamsForMaximumInt64() { - const std::vector> allTypeParams{ - generateParamsForMaximumInt64() - }; + const std::vector> allTypeParams{generateParamsForMaximumInt64()}; std::vector combinedParams; @@ -178,8 +166,7 @@ std::vector generateCombinedParamsForMaximumInt64() { std::vector generateCombinedParamsForMaximumUnsignedInt() { const std::vector> allTypeParams{ generateParamsForMaximumUnsignedInt(), - generateParamsForMaximumUnsignedInt() - }; + generateParamsForMaximumUnsignedInt()}; std::vector combinedParams; @@ -190,28 +177,24 @@ std::vector generateCombinedParamsForMaximumUnsignedInt() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P( - smoke_Maximum_Float_With_Hardcoded_Refs, - ReferenceMaximumLayerTest, - ::testing::ValuesIn(generateCombinedParamsForMaximumFloat()), - ReferenceMaximumLayerTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_Maximum_Float_With_Hardcoded_Refs, + ReferenceMaximumLayerTest, + ::testing::ValuesIn(generateCombinedParamsForMaximumFloat()), + ReferenceMaximumLayerTest::getTestCaseName); -INSTANTIATE_TEST_SUITE_P( - smoke_Maximum_Int32_With_Hardcoded_Refs, - ReferenceMaximumLayerTest, - ::testing::ValuesIn(generateCombinedParamsForMaximumInt32()), - ReferenceMaximumLayerTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_Maximum_Int32_With_Hardcoded_Refs, + ReferenceMaximumLayerTest, + ::testing::ValuesIn(generateCombinedParamsForMaximumInt32()), + ReferenceMaximumLayerTest::getTestCaseName); -INSTANTIATE_TEST_SUITE_P( - smoke_Maximume_Int64_With_Hardcoded_Refs, - ReferenceMaximumLayerTest, - ::testing::ValuesIn(generateCombinedParamsForMaximumInt64()), - ReferenceMaximumLayerTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_Maximume_Int64_With_Hardcoded_Refs, + ReferenceMaximumLayerTest, + ::testing::ValuesIn(generateCombinedParamsForMaximumInt64()), + ReferenceMaximumLayerTest::getTestCaseName); -INSTANTIATE_TEST_SUITE_P( - smoke_Maximume_UnsignedInt_With_Hardcoded_Refs, - ReferenceMaximumLayerTest, - ::testing::ValuesIn(generateCombinedParamsForMaximumUnsignedInt()), - ReferenceMaximumLayerTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_Maximume_UnsignedInt_With_Hardcoded_Refs, + ReferenceMaximumLayerTest, + ::testing::ValuesIn(generateCombinedParamsForMaximumUnsignedInt()), + ReferenceMaximumLayerTest::getTestCaseName); } // namespace diff --git a/src/plugins/template/tests/functional/op_reference/memory.cpp b/src/plugins/template/tests/functional/op_reference/memory.cpp index 01c7a321b53..b2fb97d6acc 100644 --- a/src/plugins/template/tests/functional/op_reference/memory.cpp +++ b/src/plugins/template/tests/functional/op_reference/memory.cpp @@ -699,7 +699,6 @@ INSTANTIATE_TEST_SUITE_P(smoke_Memory_With_Hardcoded_Refs, ::testing::ValuesIn(generateCombinedParamsForReadValueAssignAddReset()), ReferenceReadValueAssignAddResetLayerTest::getTestCaseName); - class ReferenceReadValueAssignAddModifyLayerTest : public ReferenceMemoryTest { protected: std::shared_ptr CreateFunction(const ov::Shape& input_shape, @@ -861,7 +860,6 @@ INSTANTIATE_TEST_SUITE_P(smoke_Memory_With_Hardcoded_Refs, ::testing::ValuesIn(generateCombinedParamsForReadValueAssignAddModify()), ReferenceReadValueAssignAddModifyLayerTest::getTestCaseName); - class ReferenceReadValueAssignAddMultiVariableModifyLayerTest : public ReferenceMemoryTest { protected: std::shared_ptr CreateFunction(const ov::Shape& input_shape, @@ -923,20 +921,20 @@ std::vector generateParamsForReadValueAssignAddMultiVariableMo } std::transform(first_result_shape1.begin(), - first_result_shape1.end(), - first_result_shape1.begin(), - first_result_shape1.begin(), - std::plus()); + first_result_shape1.end(), + first_result_shape1.begin(), + first_result_shape1.begin(), + std::plus()); std::transform(first_result_shape22.begin(), - first_result_shape22.end(), - first_result_shape22.begin(), - first_result_shape22.begin(), - std::plus()); + first_result_shape22.end(), + first_result_shape22.begin(), + first_result_shape22.begin(), + std::plus()); std::transform(first_result_shape123.begin(), - first_result_shape123.end(), - first_result_shape123.begin(), - first_result_shape123.begin(), - std::plus()); + first_result_shape123.end(), + first_result_shape123.begin(), + first_result_shape123.begin(), + std::plus()); for (size_t i = count_runs - reset_on_run; i < count_runs; i++) { std::transform(new_result_shape1.begin(), diff --git a/src/plugins/template/tests/functional/op_reference/minimum.cpp b/src/plugins/template/tests/functional/op_reference/minimum.cpp index 852d299cbe7..f955c76190e 100644 --- a/src/plugins/template/tests/functional/op_reference/minimum.cpp +++ b/src/plugins/template/tests/functional/op_reference/minimum.cpp @@ -2,9 +2,10 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/minimum.hpp" + #include -#include "openvino/op/minimum.hpp" #include "base_reference_test.hpp" using namespace ov; @@ -13,8 +14,10 @@ using namespace reference_tests; struct MinimumParams { template MinimumParams(const PartialShape& s, - const element::Type& iType, const element::Type& oType, - const std::vector& iValues1, const std::vector& iValues2, + const element::Type& iType, + const element::Type& oType, + const std::vector& iValues1, + const std::vector& iValues2, const std::vector& oValues) : pshape(s), inType(iType), @@ -60,47 +63,48 @@ TEST_P(ReferenceMinimumLayerTest, CompareWithHardcodedRefs) { } INSTANTIATE_TEST_SUITE_P( - smoke_Minimum, ReferenceMinimumLayerTest, ::testing::Values( - MinimumParams(PartialShape {8}, - element::u8, - element::u8, - std::vector {1, 8, 8, 17, 5, 5, 2, 3}, - std::vector {1, 2, 4, 8, 0, 2, 1, 200}, - std::vector {1, 2, 4, 8, 0, 2, 1, 3}), - MinimumParams(PartialShape {8}, - element::u16, - element::u16, - std::vector {1, 8, 8, 17, 5, 7, 123, 3}, - std::vector {1, 2, 4, 8, 0, 2, 1, 1037}, - std::vector {1, 2, 4, 8, 0, 2, 1, 3}), - MinimumParams(PartialShape {8}, - element::u32, - element::u32, - std::vector {1, 8, 8, 17, 5, 5, 2, 1}, - std::vector {1, 2, 4, 8, 0, 2, 1, 222}, - std::vector {1, 2, 4, 8, 0, 2, 1, 1}), - MinimumParams(PartialShape {8}, - element::u64, - element::u64, - std::vector {1, 8, 8, 17, 5, 5, 2, 13}, - std::vector {1, 2, 4, 8, 0, 2, 1, 2222}, - std::vector {1, 2, 4, 8, 0, 2, 1, 13}), - MinimumParams(PartialShape {8}, - element::f32, - element::f32, - std::vector {1, 8, -8, 17, -0.5, 0.5, 2, 1}, - std::vector {1, 2, 4, 8, 0, 0, 1, 1.5}, - std::vector {1, 2, -8, 8, -.5, 0, 1, 1}), - MinimumParams(PartialShape {8}, - element::i32, - element::i32, - std::vector {1, 8, -8, 17, -5, 67635216, 2, 1}, - std::vector {1, 2, 4, 8, 0, 18448, 1, 6}, - std::vector {1, 2, -8, 8, -5, 18448, 1, 1}), - MinimumParams(PartialShape {8}, - element::i64, - element::i64, - std::vector {1, 8, -8, 17, -5, 67635216, 2, 17179887632}, - std::vector {1, 2, 4, 8, 0, 18448, 1, 280592}, - std::vector {1, 2, -8, 8, -5, 18448, 1, 280592})), - ReferenceMinimumLayerTest::getTestCaseName); + smoke_Minimum, + ReferenceMinimumLayerTest, + ::testing::Values(MinimumParams(PartialShape{8}, + element::u8, + element::u8, + std::vector{1, 8, 8, 17, 5, 5, 2, 3}, + std::vector{1, 2, 4, 8, 0, 2, 1, 200}, + std::vector{1, 2, 4, 8, 0, 2, 1, 3}), + MinimumParams(PartialShape{8}, + element::u16, + element::u16, + std::vector{1, 8, 8, 17, 5, 7, 123, 3}, + std::vector{1, 2, 4, 8, 0, 2, 1, 1037}, + std::vector{1, 2, 4, 8, 0, 2, 1, 3}), + MinimumParams(PartialShape{8}, + element::u32, + element::u32, + std::vector{1, 8, 8, 17, 5, 5, 2, 1}, + std::vector{1, 2, 4, 8, 0, 2, 1, 222}, + std::vector{1, 2, 4, 8, 0, 2, 1, 1}), + MinimumParams(PartialShape{8}, + element::u64, + element::u64, + std::vector{1, 8, 8, 17, 5, 5, 2, 13}, + std::vector{1, 2, 4, 8, 0, 2, 1, 2222}, + std::vector{1, 2, 4, 8, 0, 2, 1, 13}), + MinimumParams(PartialShape{8}, + element::f32, + element::f32, + std::vector{1, 8, -8, 17, -0.5, 0.5, 2, 1}, + std::vector{1, 2, 4, 8, 0, 0, 1, 1.5}, + std::vector{1, 2, -8, 8, -.5, 0, 1, 1}), + MinimumParams(PartialShape{8}, + element::i32, + element::i32, + std::vector{1, 8, -8, 17, -5, 67635216, 2, 1}, + std::vector{1, 2, 4, 8, 0, 18448, 1, 6}, + std::vector{1, 2, -8, 8, -5, 18448, 1, 1}), + MinimumParams(PartialShape{8}, + element::i64, + element::i64, + std::vector{1, 8, -8, 17, -5, 67635216, 2, 17179887632}, + std::vector{1, 2, 4, 8, 0, 18448, 1, 280592}, + std::vector{1, 2, -8, 8, -5, 18448, 1, 280592})), + ReferenceMinimumLayerTest::getTestCaseName); diff --git a/src/plugins/template/tests/functional/op_reference/mish.cpp b/src/plugins/template/tests/functional/op_reference/mish.cpp index 9557e6ef61b..d78b90d02e1 100644 --- a/src/plugins/template/tests/functional/op_reference/mish.cpp +++ b/src/plugins/template/tests/functional/op_reference/mish.cpp @@ -2,10 +2,12 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/mish.hpp" + #include #include -#include "openvino/op/mish.hpp" + #include "base_reference_test.hpp" using namespace reference_tests; @@ -14,8 +16,11 @@ using namespace ov; namespace { struct MishParams { template - MishParams(const ov::PartialShape& dynamicShape, const ov::Shape& inputShape, - const ov::element::Type& iType, const std::vector& iValues, const std::vector& oValues, + MishParams(const ov::PartialShape& dynamicShape, + const ov::Shape& inputShape, + const ov::element::Type& iType, + const std::vector& iValues, + const std::vector& oValues, const std::string& test_name = "") : dynamicShape(dynamicShape), inputShape(inputShape), @@ -61,7 +66,7 @@ private: static std::shared_ptr CreateFunction(const PartialShape& input_shape, const element::Type& input_type) { const auto in = std::make_shared(input_type, input_shape); const auto Mish = std::make_shared(in); - return std::make_shared(NodeVector {Mish}, ParameterVector {in}); + return std::make_shared(NodeVector{Mish}, ParameterVector{in}); } }; @@ -70,7 +75,9 @@ TEST_P(ReferenceMishLayerTest, CompareWithRefs) { } template -std::vector generateMishFloatParams(const PartialShape& dynamicShape, const Shape& staticShape, const std::string& test_name = "") { +std::vector generateMishFloatParams(const PartialShape& dynamicShape, + const Shape& staticShape, + const std::string& test_name = "") { using T = typename element_type_traits::value_type; // generate input tensor (with possible type conversion) @@ -92,28 +99,27 @@ std::vector generateMishFloatParams(const PartialShape& dynamicShape std::vector mishParams; if (test_name != "") { - mishParams = { - MishParams(dynamicShape, staticShape, IN_ET, input, expected, test_name) - }; + mishParams = {MishParams(dynamicShape, staticShape, IN_ET, input, expected, test_name)}; } else { - mishParams = { - MishParams(dynamicShape, staticShape, IN_ET, input, expected) - }; + mishParams = {MishParams(dynamicShape, staticShape, IN_ET, input, expected)}; } return mishParams; } std::vector generateMishCombinedParams() { - const std::vector> mishTypeParams { + const std::vector> mishTypeParams{ generateMishFloatParams({2, 5}, {2, 5}), generateMishFloatParams({2, 3, 4, 5}, {2, 3, 4, 5}), generateMishFloatParams(PartialShape::dynamic(), {2, 3, 4, 5}), - generateMishFloatParams({2, Dimension::dynamic(), 4, 5}, {2, 3, 4, 5}, "dimensionDynamic"), + generateMishFloatParams({2, Dimension::dynamic(), 4, 5}, + {2, 3, 4, 5}, + "dimensionDynamic"), generateMishFloatParams({2, 5}, {2, 5}), generateMishFloatParams({2, 3, 4, 5}, {2, 3, 4, 5}), generateMishFloatParams(PartialShape::dynamic(), {2, 3, 4, 5}), - generateMishFloatParams({2, Dimension::dynamic(), 4, 5}, {2, 3, 4, 5}, "dimensionDynamic") - }; + generateMishFloatParams({2, Dimension::dynamic(), 4, 5}, + {2, 3, 4, 5}, + "dimensionDynamic")}; std::vector combinedParams; for (const auto& params : mishTypeParams) { @@ -122,7 +128,9 @@ std::vector generateMishCombinedParams() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_Mish_With_Hardcoded_Refs, ReferenceMishLayerTest, - testing::ValuesIn(generateMishCombinedParams()), ReferenceMishLayerTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_Mish_With_Hardcoded_Refs, + ReferenceMishLayerTest, + testing::ValuesIn(generateMishCombinedParams()), + ReferenceMishLayerTest::getTestCaseName); -} // namespace +} // namespace diff --git a/src/plugins/template/tests/functional/op_reference/mod.cpp b/src/plugins/template/tests/functional/op_reference/mod.cpp index f1283194571..e72c725b78e 100644 --- a/src/plugins/template/tests/functional/op_reference/mod.cpp +++ b/src/plugins/template/tests/functional/op_reference/mod.cpp @@ -2,10 +2,12 @@ // SPDX-License-Identifier: Apache-2.0 // -#include -#include "base_reference_test.hpp" #include "openvino/op/mod.hpp" +#include + +#include "base_reference_test.hpp" + using namespace ov; using namespace reference_tests; @@ -57,9 +59,9 @@ public: private: static std::shared_ptr CreateFunction(const PartialShape& input_shape1, - const PartialShape& input_shape2, - const element::Type& input_type, - const element::Type& expected_output_type) { + const PartialShape& input_shape2, + const element::Type& input_type, + const element::Type& expected_output_type) { const auto in1 = std::make_shared(input_type, input_shape1); const auto in2 = std::make_shared(input_type, input_shape2); const auto mod = std::make_shared(in1, in2); @@ -89,9 +91,9 @@ public: private: static std::shared_ptr CreateFunction(const PartialShape& input_shape1, - const PartialShape& input_shape2, - const element::Type& input_type, - const element::Type& expected_output_type) { + const PartialShape& input_shape2, + const element::Type& input_type, + const element::Type& expected_output_type) { const auto in1 = std::make_shared(input_type, input_shape1); const auto in2 = std::make_shared(input_type, input_shape2); auto mod = std::make_shared(in1, in2); @@ -113,38 +115,36 @@ template std::vector generateParamsForMod() { using T = typename element_type_traits::value_type; - std::vector params{ - ModParams(ov::PartialShape{1, 2}, - ov::PartialShape{1, 2}, - IN_ET, - std::vector{256, 56}, - std::vector{256, 56}, - std::vector{0, 0}), - ModParams(ov::PartialShape{2, 2}, - ov::PartialShape{2, 2}, - IN_ET, - std::vector{256, 56, 21, 14}, - std::vector{112, 56, 6, 8}, - std::vector{32, 0, 3, 6}), - ModParams(ov::PartialShape{1, 2}, - ov::PartialShape{3, 2, 2}, - IN_ET, - std::vector{1, 2}, - std::vector{5, 6, 7, 8, 2, 3, 1, 5, 6, 7, 1, 3}, - std::vector{1, 2, 1, 2, 1, 2, 0, 2, 1, 2, 0, 2}), - ModParams(ov::PartialShape{1}, - ov::PartialShape{1}, - IN_ET, - std::vector{57}, - std::vector{13}, - std::vector{5}), - ModParams(ov::PartialShape{2, 2}, - ov::PartialShape{1}, - IN_ET, - std::vector{2, 4, 7, 8}, - std::vector{8}, - std::vector{2, 4, 7, 0}) - }; + std::vector params{ModParams(ov::PartialShape{1, 2}, + ov::PartialShape{1, 2}, + IN_ET, + std::vector{256, 56}, + std::vector{256, 56}, + std::vector{0, 0}), + ModParams(ov::PartialShape{2, 2}, + ov::PartialShape{2, 2}, + IN_ET, + std::vector{256, 56, 21, 14}, + std::vector{112, 56, 6, 8}, + std::vector{32, 0, 3, 6}), + ModParams(ov::PartialShape{1, 2}, + ov::PartialShape{3, 2, 2}, + IN_ET, + std::vector{1, 2}, + std::vector{5, 6, 7, 8, 2, 3, 1, 5, 6, 7, 1, 3}, + std::vector{1, 2, 1, 2, 1, 2, 0, 2, 1, 2, 0, 2}), + ModParams(ov::PartialShape{1}, + ov::PartialShape{1}, + IN_ET, + std::vector{57}, + std::vector{13}, + std::vector{5}), + ModParams(ov::PartialShape{2, 2}, + ov::PartialShape{1}, + IN_ET, + std::vector{2, 4, 7, 8}, + std::vector{8}, + std::vector{2, 4, 7, 0})}; return params; } @@ -152,14 +152,12 @@ template std::vector generateParamsForModNegative() { using T = typename element_type_traits::value_type; - std::vector params{ - ModParams(ov::PartialShape{2, 2}, - ov::PartialShape{2, 2}, - IN_ET, - std::vector{-57, -14, -12, -6}, - std::vector{13, -7, 5, -5}, - std::vector{-5, 0, -2, -1}) - }; + std::vector params{ModParams(ov::PartialShape{2, 2}, + ov::PartialShape{2, 2}, + IN_ET, + std::vector{-57, -14, -12, -6}, + std::vector{13, -7, 5, -5}, + std::vector{-5, 0, -2, -1})}; return params; } @@ -167,24 +165,20 @@ template std::vector generateParamsForModInPlace() { using T = typename element_type_traits::value_type; - std::vector params{ - ModParams(ov::PartialShape{2, 2}, - ov::PartialShape{2, 2}, - IN_ET, - std::vector{1, 2, 3, 4}, - std::vector{5, 6, 7, 8}, - std::vector{0, 0, 0, 0}) - }; + std::vector params{ModParams(ov::PartialShape{2, 2}, + ov::PartialShape{2, 2}, + IN_ET, + std::vector{1, 2, 3, 4}, + std::vector{5, 6, 7, 8}, + std::vector{0, 0, 0, 0})}; return params; } std::vector generateCombinedParamsForMod() { - const std::vector> allTypeParams{ - generateParamsForMod(), - generateParamsForMod(), - generateParamsForMod(), - generateParamsForMod() - }; + const std::vector> allTypeParams{generateParamsForMod(), + generateParamsForMod(), + generateParamsForMod(), + generateParamsForMod()}; std::vector combinedParams; @@ -196,12 +190,10 @@ std::vector generateCombinedParamsForMod() { } std::vector generateCombinedParamsForModNegative() { - const std::vector> allTypeParams{ - generateParamsForModNegative(), - generateParamsForModNegative(), - generateParamsForModNegative(), - generateParamsForModNegative() - }; + const std::vector> allTypeParams{generateParamsForModNegative(), + generateParamsForModNegative(), + generateParamsForModNegative(), + generateParamsForModNegative()}; std::vector combinedParams; @@ -212,14 +204,11 @@ std::vector generateCombinedParamsForModNegative() { return combinedParams; } - std::vector generateCombinedParamsForModInPlace() { - const std::vector> allTypeParams{ - generateParamsForModInPlace(), - generateParamsForModInPlace(), - generateParamsForModInPlace(), - generateParamsForModInPlace() - }; + const std::vector> allTypeParams{generateParamsForModInPlace(), + generateParamsForModInPlace(), + generateParamsForModInPlace(), + generateParamsForModInPlace()}; std::vector combinedParams; @@ -230,22 +219,19 @@ std::vector generateCombinedParamsForModInPlace() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P( - smoke_Mod_With_Hardcoded_Refs, - ReferenceModLayerTest, - ::testing::ValuesIn(generateCombinedParamsForMod()), - ReferenceModLayerTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_Mod_With_Hardcoded_Refs, + ReferenceModLayerTest, + ::testing::ValuesIn(generateCombinedParamsForMod()), + ReferenceModLayerTest::getTestCaseName); -INSTANTIATE_TEST_SUITE_P( - smoke_Mod_Negative_With_Hardcoded_Refs, - ReferenceModLayerTest, - ::testing::ValuesIn(generateCombinedParamsForModNegative()), - ReferenceModLayerTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_Mod_Negative_With_Hardcoded_Refs, + ReferenceModLayerTest, + ::testing::ValuesIn(generateCombinedParamsForModNegative()), + ReferenceModLayerTest::getTestCaseName); -INSTANTIATE_TEST_SUITE_P( - smoke_Mod_InPlace_With_Hardcoded_Refs, - ReferenceModInPlaceLayerTest, - ::testing::ValuesIn(generateCombinedParamsForModInPlace()), - ReferenceModInPlaceLayerTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_Mod_InPlace_With_Hardcoded_Refs, + ReferenceModInPlaceLayerTest, + ::testing::ValuesIn(generateCombinedParamsForModInPlace()), + ReferenceModInPlaceLayerTest::getTestCaseName); } // namespace diff --git a/src/plugins/template/tests/functional/op_reference/multiclass_nms.cpp b/src/plugins/template/tests/functional/op_reference/multiclass_nms.cpp index 890051dec75..0610af6c459 100644 --- a/src/plugins/template/tests/functional/op_reference/multiclass_nms.cpp +++ b/src/plugins/template/tests/functional/op_reference/multiclass_nms.cpp @@ -2,9 +2,10 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/multiclass_nms.hpp" + #include -#include "openvino/op/multiclass_nms.hpp" #include "base_reference_test.hpp" using namespace reference_tests; @@ -12,33 +13,38 @@ using namespace ov; namespace { struct MulticlassNmsParams { - MulticlassNmsParams( - const int nms_top_k, - const float iou_threshold, - const float score_threshold, - const op::v8::MulticlassNms::SortResultType sort_result_type, - const int keep_top_k, - const int background_class, - const float nms_eta, - const ov::element::Type output_type, - const bool sort_result_across_batch, - const bool normalized, - const reference_tests::Tensor& boxes, const reference_tests::Tensor& scores, - const reference_tests::Tensor& expectedSelectedScores, const reference_tests::Tensor& expectedSelectedIndices, - const reference_tests::Tensor& expectedValidOutputs, const std::string& testcaseName = "") : - nms_top_k(nms_top_k), - iou_threshold(iou_threshold), - score_threshold(score_threshold), - sort_result_type(sort_result_type), - keep_top_k(keep_top_k), - background_class(background_class), - nms_eta(nms_eta), - output_type(output_type), - sort_result_across_batch(sort_result_across_batch), - normalized(normalized), - boxes(boxes), scores(scores), - expectedSelectedScores(expectedSelectedScores), expectedSelectedIndices(expectedSelectedIndices), - expectedValidOutputs(expectedValidOutputs), testcaseName(testcaseName) {} + MulticlassNmsParams(const int nms_top_k, + const float iou_threshold, + const float score_threshold, + const op::v8::MulticlassNms::SortResultType sort_result_type, + const int keep_top_k, + const int background_class, + const float nms_eta, + const ov::element::Type output_type, + const bool sort_result_across_batch, + const bool normalized, + const reference_tests::Tensor& boxes, + const reference_tests::Tensor& scores, + const reference_tests::Tensor& expectedSelectedScores, + const reference_tests::Tensor& expectedSelectedIndices, + const reference_tests::Tensor& expectedValidOutputs, + const std::string& testcaseName = "") + : nms_top_k(nms_top_k), + iou_threshold(iou_threshold), + score_threshold(score_threshold), + sort_result_type(sort_result_type), + keep_top_k(keep_top_k), + background_class(background_class), + nms_eta(nms_eta), + output_type(output_type), + sort_result_across_batch(sort_result_across_batch), + normalized(normalized), + boxes(boxes), + scores(scores), + expectedSelectedScores(expectedSelectedScores), + expectedSelectedIndices(expectedSelectedIndices), + expectedValidOutputs(expectedValidOutputs), + testcaseName(testcaseName) {} int nms_top_k; float iou_threshold; @@ -122,431 +128,498 @@ std::vector generateParams() { using T = typename element_type_traits::value_type; using T_TH = typename element_type_traits::value_type; using T_IND = typename element_type_traits::value_type; - std::vector params { + std::vector params{ MulticlassNmsParams( - 3, // nms_top_k - 0.5f, // iou_threshold - 0.0f, // score_threshold - op::v8::MulticlassNms::SortResultType::SCORE, // sort_result_type - -1, // keep_top_k - -1, // background_class - 1.0f, // nms_eta - ET_IND, // output_type - false, // sort_result_across_batch - true, // normalized - reference_tests::Tensor(ET, {1, 6, 4}, std::vector{ - 0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, 0.0, -0.1, 1.0, 0.9, - 0.0, 10.0, 1.0, 11.0, 0.0, 10.1, 1.0, 11.1, 0.0, 100.0, 1.0, 101.0}), // boxes - reference_tests::Tensor(ET_TH, {1, 2, 6}, std::vector{ - 0.9, 0.75, 0.6, 0.95, 0.5, 0.3, 0.95, 0.75, 0.6, 0.80, 0.5, 0.3}), // scores - reference_tests::Tensor(ET_TH, {4, 6}, std::vector{ - 0.00, 0.95, 0.00, 10.00, 1.00, 11.00, 1.00, 0.95, - 0.00, 0.00, 1.00, 1.00, 0.00, 0.90, 0.00, 0.00, - 1.00, 1.00, 1.00, 0.80, 0.00, 10.00, 1.00, 11.00}), // expected_selected_scores - reference_tests::Tensor(ET_IND, {4, 1}, std::vector{3, 0, 0, 3}), // expected_selected_indices - reference_tests::Tensor(ET_IND, {1}, std::vector{4}), // expected_valid_outputs + 3, // nms_top_k + 0.5f, // iou_threshold + 0.0f, // score_threshold + op::v8::MulticlassNms::SortResultType::SCORE, // sort_result_type + -1, // keep_top_k + -1, // background_class + 1.0f, // nms_eta + ET_IND, // output_type + false, // sort_result_across_batch + true, // normalized + reference_tests::Tensor(ET, {1, 6, 4}, std::vector{0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, 0.0, + -0.1, 1.0, 0.9, 0.0, 10.0, 1.0, 11.0, 0.0, 10.1, + 1.0, 11.1, 0.0, 100.0, 1.0, 101.0}), // boxes + reference_tests::Tensor( + ET_TH, + {1, 2, 6}, + std::vector{0.9, 0.75, 0.6, 0.95, 0.5, 0.3, 0.95, 0.75, 0.6, 0.80, 0.5, 0.3}), // scores + reference_tests::Tensor(ET_TH, {4, 6}, std::vector{0.00, 0.95, 0.00, 10.00, 1.00, 11.00, 1.00, + 0.95, 0.00, 0.00, 1.00, 1.00, 0.00, 0.90, + 0.00, 0.00, 1.00, 1.00, 1.00, 0.80, 0.00, + 10.00, 1.00, 11.00}), // expected_selected_scores + reference_tests::Tensor(ET_IND, {4, 1}, std::vector{3, 0, 0, 3}), // expected_selected_indices + reference_tests::Tensor(ET_IND, {1}, std::vector{4}), // expected_valid_outputs "multiclass_nms_by_score"), MulticlassNmsParams( - 3, // nms_top_k - 0.5f, // iou_threshold - 0.0f, // score_threshold - op::v8::MulticlassNms::SortResultType::CLASSID, // sort_result_type - -1, // keep_top_k - -1, // background_class - 1.0f, // nms_eta - ET_IND, // output_type - false, // sort_result_across_batch - true, // normalized - reference_tests::Tensor(ET, {1, 6, 4}, std::vector{ - 0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, 0.0, -0.1, 1.0, 0.9, - 0.0, 10.0, 1.0, 11.0, 0.0, 10.1, 1.0, 11.1, 0.0, 100.0, 1.0, 101.0}), // boxes - reference_tests::Tensor(ET_TH, {1, 2, 6}, std::vector{ - 0.9, 0.75, 0.6, 0.95, 0.5, 0.3, 0.95, 0.75, 0.6, 0.80, 0.5, 0.3}), // scores - reference_tests::Tensor(ET_TH, {4, 6}, std::vector{ - 0.00, 0.95, 0.00, 10.00, 1.00, 11.00, 0.00, 0.90, - 0.00, 0.00, 1.00, 1.00, 1.00, 0.95, 0.00, 0.00, - 1.00, 1.00, 1.00, 0.80, 0.00, 10.00, 1.00, 11.00}), // expected_selected_scores - reference_tests::Tensor(ET_IND, {4, 1}, std::vector{3, 0, 0, 3}), // expected_selected_indices - reference_tests::Tensor(ET_IND, {1}, std::vector{4}), // expected_valid_outputs + 3, // nms_top_k + 0.5f, // iou_threshold + 0.0f, // score_threshold + op::v8::MulticlassNms::SortResultType::CLASSID, // sort_result_type + -1, // keep_top_k + -1, // background_class + 1.0f, // nms_eta + ET_IND, // output_type + false, // sort_result_across_batch + true, // normalized + reference_tests::Tensor(ET, {1, 6, 4}, std::vector{0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, 0.0, + -0.1, 1.0, 0.9, 0.0, 10.0, 1.0, 11.0, 0.0, 10.1, + 1.0, 11.1, 0.0, 100.0, 1.0, 101.0}), // boxes + reference_tests::Tensor( + ET_TH, + {1, 2, 6}, + std::vector{0.9, 0.75, 0.6, 0.95, 0.5, 0.3, 0.95, 0.75, 0.6, 0.80, 0.5, 0.3}), // scores + reference_tests::Tensor(ET_TH, {4, 6}, std::vector{0.00, 0.95, 0.00, 10.00, 1.00, 11.00, 0.00, + 0.90, 0.00, 0.00, 1.00, 1.00, 1.00, 0.95, + 0.00, 0.00, 1.00, 1.00, 1.00, 0.80, 0.00, + 10.00, 1.00, 11.00}), // expected_selected_scores + reference_tests::Tensor(ET_IND, {4, 1}, std::vector{3, 0, 0, 3}), // expected_selected_indices + reference_tests::Tensor(ET_IND, {1}, std::vector{4}), // expected_valid_outputs "multiclass_nms_by_class_id"), MulticlassNmsParams( - 3, // nms_top_k - 0.5f, // iou_threshold - 0.0f, // score_threshold - op::v8::MulticlassNms::SortResultType::CLASSID, // sort_result_type - -1, // keep_top_k - -1, // background_class - 1.0f, // nms_eta - ET_IND, // output_type - false, // sort_result_across_batch - true, // normalized - reference_tests::Tensor(ET, {1, 6, 4}, std::vector{ - 0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, 0.0, -0.1, 1.0, 0.9, - 0.0, 10.0, 1.0, 11.0, 0.0, 10.1, 1.0, 11.1, 0.0, 100.0, 1.0, 101.0}), // boxes - reference_tests::Tensor(ET_TH, {1, 2, 6}, std::vector{ - 0.9, 0.75, 0.6, 0.95, 0.5, 0.3, 0.95, 0.75, 0.6, 0.80, 0.5, 0.3}), // scores - reference_tests::Tensor(ET_TH, {4, 6}, std::vector{ - 0.00, 0.95, 0.00, 10.00, 1.00, 11.00, 0.00, 0.90, - 0.00, 0.00, 1.00, 1.00, 1.00, 0.95, 0.00, 0.00, - 1.00, 1.00, 1.00, 0.80, 0.00, 10.00, 1.00, 11.00}), // expected_selected_scores - reference_tests::Tensor(ET_IND, {4, 1}, std::vector{3, 0, 0, 3}), // expected_selected_indices - reference_tests::Tensor(ET_IND, {1}, std::vector{4}), // expected_valid_outputs + 3, // nms_top_k + 0.5f, // iou_threshold + 0.0f, // score_threshold + op::v8::MulticlassNms::SortResultType::CLASSID, // sort_result_type + -1, // keep_top_k + -1, // background_class + 1.0f, // nms_eta + ET_IND, // output_type + false, // sort_result_across_batch + true, // normalized + reference_tests::Tensor(ET, {1, 6, 4}, std::vector{0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, 0.0, + -0.1, 1.0, 0.9, 0.0, 10.0, 1.0, 11.0, 0.0, 10.1, + 1.0, 11.1, 0.0, 100.0, 1.0, 101.0}), // boxes + reference_tests::Tensor( + ET_TH, + {1, 2, 6}, + std::vector{0.9, 0.75, 0.6, 0.95, 0.5, 0.3, 0.95, 0.75, 0.6, 0.80, 0.5, 0.3}), // scores + reference_tests::Tensor(ET_TH, {4, 6}, std::vector{0.00, 0.95, 0.00, 10.00, 1.00, 11.00, 0.00, + 0.90, 0.00, 0.00, 1.00, 1.00, 1.00, 0.95, + 0.00, 0.00, 1.00, 1.00, 1.00, 0.80, 0.00, + 10.00, 1.00, 11.00}), // expected_selected_scores + reference_tests::Tensor(ET_IND, {4, 1}, std::vector{3, 0, 0, 3}), // expected_selected_indices + reference_tests::Tensor(ET_IND, {1}, std::vector{4}), // expected_valid_outputs "multiclass_nms_output_type_i32"), MulticlassNmsParams( - 3, // nms_top_k - 0.5f, // iou_threshold - 0.0f, // score_threshold - op::v8::MulticlassNms::SortResultType::SCORE, // sort_result_type - -1, // keep_top_k - -1, // background_class - 1.0f, // nms_eta - ET_IND, // output_type - false, // sort_result_across_batch - true, // normalized - reference_tests::Tensor(ET, {2, 6, 4}, std::vector{ - 0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, 0.0, -0.1, 1.0, 0.9, - 0.0, 10.0, 1.0, 11.0, 0.0, 10.1, 1.0, 11.1, 0.0, 100.0, 1.0, 101.0, - 0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, 0.0, -0.1, 1.0, 0.9, - 0.0, 10.0, 1.0, 11.0, 0.0, 10.1, 1.0, 11.1, 0.0, 100.0, 1.0, 101.0}), // boxes - reference_tests::Tensor(ET_TH, {2, 2, 6}, std::vector{ - 0.9, 0.75, 0.6, 0.95, 0.5, 0.3, 0.95, 0.75, 0.6, 0.80, 0.5, 0.3, - 0.9, 0.75, 0.6, 0.95, 0.5, 0.3, 0.95, 0.75, 0.6, 0.80, 0.5, 0.3}), // scores - reference_tests::Tensor(ET_TH, {8, 6}, std::vector{ - 0.00, 0.95, 0.00, 10.00, 1.00, 11.00, 1.00, 0.95, 0.00, 0.00, 1.00, 1.00, - 0.00, 0.90, 0.00, 0.00, 1.00, 1.00, 1.00, 0.80, 0.00, 10.00, 1.00, 11.00, - 0.00, 0.95, 0.00, 10.00, 1.00, 11.00, 1.00, 0.95, 0.00, 0.00, 1.00, 1.00, - 0.00, 0.90, 0.00, 0.00, 1.00, 1.00, 1.00, 0.80, 0.00, 10.00, 1.00, 11.00}), - // expected_selected_scores - reference_tests::Tensor(ET_IND, {8, 1}, std::vector{3, 0, 0, 3, 9, 6, 6, 9}), // expected_selected_indices - reference_tests::Tensor(ET_IND, {2}, std::vector{4, 4}), // expected_valid_outputs + 3, // nms_top_k + 0.5f, // iou_threshold + 0.0f, // score_threshold + op::v8::MulticlassNms::SortResultType::SCORE, // sort_result_type + -1, // keep_top_k + -1, // background_class + 1.0f, // nms_eta + ET_IND, // output_type + false, // sort_result_across_batch + true, // normalized + reference_tests::Tensor( + ET, + {2, 6, 4}, + std::vector{0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, 0.0, -0.1, 1.0, 0.9, + 0.0, 10.0, 1.0, 11.0, 0.0, 10.1, 1.0, 11.1, 0.0, 100.0, 1.0, 101.0, + 0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, 0.0, -0.1, 1.0, 0.9, + 0.0, 10.0, 1.0, 11.0, 0.0, 10.1, 1.0, 11.1, 0.0, 100.0, 1.0, 101.0}), // boxes + reference_tests::Tensor(ET_TH, {2, 2, 6}, std::vector{0.9, 0.75, 0.6, 0.95, 0.5, 0.3, + 0.95, 0.75, 0.6, 0.80, 0.5, 0.3, + 0.9, 0.75, 0.6, 0.95, 0.5, 0.3, + 0.95, 0.75, 0.6, 0.80, 0.5, 0.3}), // scores + reference_tests::Tensor( + ET_TH, + {8, 6}, + std::vector{0.00, 0.95, 0.00, 10.00, 1.00, 11.00, 1.00, 0.95, 0.00, 0.00, 1.00, 1.00, + 0.00, 0.90, 0.00, 0.00, 1.00, 1.00, 1.00, 0.80, 0.00, 10.00, 1.00, 11.00, + 0.00, 0.95, 0.00, 10.00, 1.00, 11.00, 1.00, 0.95, 0.00, 0.00, 1.00, 1.00, + 0.00, 0.90, 0.00, 0.00, 1.00, 1.00, 1.00, 0.80, 0.00, 10.00, 1.00, 11.00}), + // expected_selected_scores + reference_tests::Tensor(ET_IND, + {8, 1}, + std::vector{3, 0, 0, 3, 9, 6, 6, 9}), // expected_selected_indices + reference_tests::Tensor(ET_IND, {2}, std::vector{4, 4}), // expected_valid_outputs "multiclass_nms_two_batches_two_classes_by_score"), MulticlassNmsParams( - 3, // nms_top_k - 0.5f, // iou_threshold - 0.0f, // score_threshold - op::v8::MulticlassNms::SortResultType::CLASSID, // sort_result_type - -1, // keep_top_k - -1, // background_class - 1.0f, // nms_eta - ET_IND, // output_type - false, // sort_result_across_batch - true, // normalized - reference_tests::Tensor(ET, {2, 6, 4}, std::vector{ - 0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, 0.0, -0.1, 1.0, 0.9, - 0.0, 10.0, 1.0, 11.0, 0.0, 10.1, 1.0, 11.1, 0.0, 100.0, 1.0, 101.0, - 0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, 0.0, -0.1, 1.0, 0.9, - 0.0, 10.0, 1.0, 11.0, 0.0, 10.1, 1.0, 11.1, 0.0, 100.0, 1.0, 101.0}), // boxes - reference_tests::Tensor(ET_TH, {2, 2, 6}, std::vector{ - 0.9, 0.75, 0.6, 0.95, 0.5, 0.3, 0.95, 0.75, 0.6, 0.80, 0.5, 0.3, - 0.9, 0.75, 0.6, 0.95, 0.5, 0.3, 0.95, 0.75, 0.6, 0.80, 0.5, 0.3}), // scores - reference_tests::Tensor(ET_TH, {8, 6}, std::vector{ - 0.00, 0.95, 0.00, 10.00, 1.00, 11.00, 0.00, 0.90, 0.00, 0.00, 1.00, 1.00, - 1.00, 0.95, 0.00, 0.00, 1.00, 1.00, 1.00, 0.80, 0.00, 10.00, 1.00, 11.00, - 0.00, 0.95, 0.00, 10.00, 1.00, 11.00, 0.00, 0.90, 0.00, 0.00, 1.00, 1.00, - 1.00, 0.95, 0.00, 0.00, 1.00, 1.00, 1.00, 0.80, 0.00, 10.00, 1.00, 11.00}), - // expected_selected_scores - reference_tests::Tensor(ET_IND, {8, 1}, std::vector{3, 0, 0, 3, 9, 6, 6, 9}), // expected_selected_indices - reference_tests::Tensor(ET_IND, {2}, std::vector{4, 4}), // expected_valid_outputs + 3, // nms_top_k + 0.5f, // iou_threshold + 0.0f, // score_threshold + op::v8::MulticlassNms::SortResultType::CLASSID, // sort_result_type + -1, // keep_top_k + -1, // background_class + 1.0f, // nms_eta + ET_IND, // output_type + false, // sort_result_across_batch + true, // normalized + reference_tests::Tensor( + ET, + {2, 6, 4}, + std::vector{0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, 0.0, -0.1, 1.0, 0.9, + 0.0, 10.0, 1.0, 11.0, 0.0, 10.1, 1.0, 11.1, 0.0, 100.0, 1.0, 101.0, + 0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, 0.0, -0.1, 1.0, 0.9, + 0.0, 10.0, 1.0, 11.0, 0.0, 10.1, 1.0, 11.1, 0.0, 100.0, 1.0, 101.0}), // boxes + reference_tests::Tensor(ET_TH, {2, 2, 6}, std::vector{0.9, 0.75, 0.6, 0.95, 0.5, 0.3, + 0.95, 0.75, 0.6, 0.80, 0.5, 0.3, + 0.9, 0.75, 0.6, 0.95, 0.5, 0.3, + 0.95, 0.75, 0.6, 0.80, 0.5, 0.3}), // scores + reference_tests::Tensor( + ET_TH, + {8, 6}, + std::vector{0.00, 0.95, 0.00, 10.00, 1.00, 11.00, 0.00, 0.90, 0.00, 0.00, 1.00, 1.00, + 1.00, 0.95, 0.00, 0.00, 1.00, 1.00, 1.00, 0.80, 0.00, 10.00, 1.00, 11.00, + 0.00, 0.95, 0.00, 10.00, 1.00, 11.00, 0.00, 0.90, 0.00, 0.00, 1.00, 1.00, + 1.00, 0.95, 0.00, 0.00, 1.00, 1.00, 1.00, 0.80, 0.00, 10.00, 1.00, 11.00}), + // expected_selected_scores + reference_tests::Tensor(ET_IND, + {8, 1}, + std::vector{3, 0, 0, 3, 9, 6, 6, 9}), // expected_selected_indices + reference_tests::Tensor(ET_IND, {2}, std::vector{4, 4}), // expected_valid_outputs "multiclass_nms_two_batches_two_classes_by_class_id"), MulticlassNmsParams( - 3, // nms_top_k - 0.5f, // iou_threshold - 0.0f, // score_threshold - op::v8::MulticlassNms::SortResultType::SCORE, // sort_result_type - -1, // keep_top_k - -1, // background_class - 1.0f, // nms_eta - ET_IND, // output_type - true, // sort_result_across_batch - true, // normalized - reference_tests::Tensor(ET, {2, 6, 4}, std::vector{ - 0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, 0.0, -0.1, 1.0, 0.9, - 0.0, 10.0, 1.0, 11.0, 0.0, 10.1, 1.0, 11.1, 0.0, 100.0, 1.0, 101.0, - 0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, 0.0, -0.1, 1.0, 0.9, - 0.0, 10.0, 1.0, 11.0, 0.0, 10.1, 1.0, 11.1, 0.0, 100.0, 1.0, 101.0}), // boxes - reference_tests::Tensor(ET_TH, {2, 2, 6}, std::vector{ - 0.9, 0.75, 0.6, 0.95, 0.5, 0.3, 0.95, 0.75, 0.6, 0.80, 0.5, 0.3, - 0.9, 0.75, 0.6, 0.95, 0.5, 0.3, 0.95, 0.75, 0.6, 0.80, 0.5, 0.3}), // scores - reference_tests::Tensor(ET_TH, {8, 6}, std::vector{ - 0.00, 0.95, 0.00, 10.00, 1.00, 11.00, - 1.00, 0.95, 0.00, 0.00, 1.00, 1.00, - 0.00, 0.95, 0.00, 10.00, 1.00, 11.00, - 1.00, 0.95, 0.00, 0.00, 1.00, 1.00, - 0.00, 0.90, 0.00, 0.00, 1.00, 1.00, - 0.00, 0.90, 0.00, 0.00, 1.00, 1.00, - 1.00, 0.80, 0.00, 10.00, 1.00, 11.00, - 1.00, 0.80, 0.00, 10.00, 1.00, 11.00}), // expected_selected_scores - reference_tests::Tensor(ET_IND, {8, 1}, std::vector{3, 0, 9, 6, 0, 6, 3, 9}), // expected_selected_indices - reference_tests::Tensor(ET_IND, {2}, std::vector{4, 4}), // expected_valid_outputs + 3, // nms_top_k + 0.5f, // iou_threshold + 0.0f, // score_threshold + op::v8::MulticlassNms::SortResultType::SCORE, // sort_result_type + -1, // keep_top_k + -1, // background_class + 1.0f, // nms_eta + ET_IND, // output_type + true, // sort_result_across_batch + true, // normalized + reference_tests::Tensor( + ET, + {2, 6, 4}, + std::vector{0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, 0.0, -0.1, 1.0, 0.9, + 0.0, 10.0, 1.0, 11.0, 0.0, 10.1, 1.0, 11.1, 0.0, 100.0, 1.0, 101.0, + 0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, 0.0, -0.1, 1.0, 0.9, + 0.0, 10.0, 1.0, 11.0, 0.0, 10.1, 1.0, 11.1, 0.0, 100.0, 1.0, 101.0}), // boxes + reference_tests::Tensor(ET_TH, {2, 2, 6}, std::vector{0.9, 0.75, 0.6, 0.95, 0.5, 0.3, + 0.95, 0.75, 0.6, 0.80, 0.5, 0.3, + 0.9, 0.75, 0.6, 0.95, 0.5, 0.3, + 0.95, 0.75, 0.6, 0.80, 0.5, 0.3}), // scores + reference_tests::Tensor( + ET_TH, + {8, 6}, + std::vector{ + 0.00, 0.95, 0.00, 10.00, 1.00, 11.00, 1.00, 0.95, 0.00, 0.00, 1.00, 1.00, 0.00, + 0.95, 0.00, 10.00, 1.00, 11.00, 1.00, 0.95, 0.00, 0.00, 1.00, 1.00, 0.00, 0.90, + 0.00, 0.00, 1.00, 1.00, 0.00, 0.90, 0.00, 0.00, 1.00, 1.00, 1.00, 0.80, 0.00, + 10.00, 1.00, 11.00, 1.00, 0.80, 0.00, 10.00, 1.00, 11.00}), // expected_selected_scores + reference_tests::Tensor(ET_IND, + {8, 1}, + std::vector{3, 0, 9, 6, 0, 6, 3, 9}), // expected_selected_indices + reference_tests::Tensor(ET_IND, {2}, std::vector{4, 4}), // expected_valid_outputs "multiclass_nms_two_batches_two_classes_by_score_cross_batch"), MulticlassNmsParams( - 3, // nms_top_k - 0.5f, // iou_threshold - 0.0f, // score_threshold - op::v8::MulticlassNms::SortResultType::CLASSID, // sort_result_type - -1, // keep_top_k - -1, // background_class - 1.0f, // nms_eta - ET_IND, // output_type - true, // sort_result_across_batch - true, // normalized - reference_tests::Tensor(ET, {2, 6, 4}, std::vector{ - 0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, 0.0, -0.1, 1.0, 0.9, - 0.0, 10.0, 1.0, 11.0, 0.0, 10.1, 1.0, 11.1, 0.0, 100.0, 1.0, 101.0, - 0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, 0.0, -0.1, 1.0, 0.9, - 0.0, 10.0, 1.0, 11.0, 0.0, 10.1, 1.0, 11.1, 0.0, 100.0, 1.0, 101.0}), // boxes - reference_tests::Tensor(ET_TH, {2, 2, 6}, std::vector{ - 0.9, 0.75, 0.6, 0.95, 0.5, 0.3, 0.95, 0.75, 0.6, 0.80, 0.5, 0.3, - 0.9, 0.75, 0.6, 0.95, 0.5, 0.3, 0.95, 0.75, 0.6, 0.80, 0.5, 0.3}), // scores - reference_tests::Tensor(ET_TH, {8, 6}, std::vector{ - 0.00, 0.95, 0.00, 10.00, 1.00, 11.00, - 0.00, 0.90, 0.00, 0.00, 1.00, 1.00, - 0.00, 0.95, 0.00, 10.00, 1.00, 11.00, - 0.00, 0.90, 0.00, 0.00, 1.00, 1.00, - 1.00, 0.95, 0.00, 0.00, 1.00, 1.00, - 1.00, 0.80, 0.00, 10.00, 1.00, 11.00, - 1.00, 0.95, 0.00, 0.00, 1.00, 1.00, - 1.00, 0.80, 0.00, 10.00, 1.00, 11.00}), // expected_selected_scores - reference_tests::Tensor(ET_IND, {8, 1}, std::vector{3, 0, 9, 6, 0, 3, 6, 9}), // expected_selected_indices - reference_tests::Tensor(ET_IND, {2}, std::vector{4, 4}), // expected_valid_outputs + 3, // nms_top_k + 0.5f, // iou_threshold + 0.0f, // score_threshold + op::v8::MulticlassNms::SortResultType::CLASSID, // sort_result_type + -1, // keep_top_k + -1, // background_class + 1.0f, // nms_eta + ET_IND, // output_type + true, // sort_result_across_batch + true, // normalized + reference_tests::Tensor( + ET, + {2, 6, 4}, + std::vector{0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, 0.0, -0.1, 1.0, 0.9, + 0.0, 10.0, 1.0, 11.0, 0.0, 10.1, 1.0, 11.1, 0.0, 100.0, 1.0, 101.0, + 0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, 0.0, -0.1, 1.0, 0.9, + 0.0, 10.0, 1.0, 11.0, 0.0, 10.1, 1.0, 11.1, 0.0, 100.0, 1.0, 101.0}), // boxes + reference_tests::Tensor(ET_TH, {2, 2, 6}, std::vector{0.9, 0.75, 0.6, 0.95, 0.5, 0.3, + 0.95, 0.75, 0.6, 0.80, 0.5, 0.3, + 0.9, 0.75, 0.6, 0.95, 0.5, 0.3, + 0.95, 0.75, 0.6, 0.80, 0.5, 0.3}), // scores + reference_tests::Tensor( + ET_TH, + {8, 6}, + std::vector{ + 0.00, 0.95, 0.00, 10.00, 1.00, 11.00, 0.00, 0.90, 0.00, 0.00, 1.00, 1.00, 0.00, + 0.95, 0.00, 10.00, 1.00, 11.00, 0.00, 0.90, 0.00, 0.00, 1.00, 1.00, 1.00, 0.95, + 0.00, 0.00, 1.00, 1.00, 1.00, 0.80, 0.00, 10.00, 1.00, 11.00, 1.00, 0.95, 0.00, + 0.00, 1.00, 1.00, 1.00, 0.80, 0.00, 10.00, 1.00, 11.00}), // expected_selected_scores + reference_tests::Tensor(ET_IND, + {8, 1}, + std::vector{3, 0, 9, 6, 0, 3, 6, 9}), // expected_selected_indices + reference_tests::Tensor(ET_IND, {2}, std::vector{4, 4}), // expected_valid_outputs "multiclass_nms_two_batches_two_classes_by_class_id_cross_batch"), MulticlassNmsParams( - 3, // nms_top_k - 0.5f, // iou_threshold - 0.0f, // score_threshold - op::v8::MulticlassNms::SortResultType::SCORE, // sort_result_type - -1, // keep_top_k - -1, // background_class - 1.0f, // nms_eta - ET_IND, // output_type - false, // sort_result_across_batch - true, // normalized - reference_tests::Tensor(ET, {1, 6, 4}, std::vector{ - 1.0, 1.0, 0.0, 0.0, 0.0, 0.1, 1.0, 1.1, 0.0, 0.9, 1.0, -0.1, - 0.0, 10.0, 1.0, 11.0, 1.0, 10.1, 0.0, 11.1, 1.0, 101.0, 0.0, 100.0}), // boxes - reference_tests::Tensor(ET_TH, {1, 1, 6}, std::vector{ - 0.9, 0.75, 0.6, 0.95, 0.5, 0.3}), // scores - reference_tests::Tensor(ET_TH, {3, 6}, std::vector{ - 0.00, 0.95, 0.00, 10.00, 1.00, 11.00, 0.00, 0.90, 1.00, 1.00, 0.00, 0.00, 0.00, 0.75, 0.00, 0.10, 1.00, 1.10}), - // expected_selected_scores - reference_tests::Tensor(ET_IND, {3, 1}, std::vector{3, 0, 1}), // expected_selected_indices - reference_tests::Tensor(ET_IND, {1}, std::vector{3}), // expected_valid_outputs + 3, // nms_top_k + 0.5f, // iou_threshold + 0.0f, // score_threshold + op::v8::MulticlassNms::SortResultType::SCORE, // sort_result_type + -1, // keep_top_k + -1, // background_class + 1.0f, // nms_eta + ET_IND, // output_type + false, // sort_result_across_batch + true, // normalized + reference_tests::Tensor(ET, {1, 6, 4}, std::vector{1.0, 1.0, 0.0, 0.0, 0.0, 0.1, 1.0, 1.1, 0.0, + 0.9, 1.0, -0.1, 0.0, 10.0, 1.0, 11.0, 1.0, 10.1, + 0.0, 11.1, 1.0, 101.0, 0.0, 100.0}), // boxes + reference_tests::Tensor(ET_TH, {1, 1, 6}, std::vector{0.9, 0.75, 0.6, 0.95, 0.5, 0.3}), // scores + reference_tests::Tensor(ET_TH, + {3, 6}, + std::vector{0.00, + 0.95, + 0.00, + 10.00, + 1.00, + 11.00, + 0.00, + 0.90, + 1.00, + 1.00, + 0.00, + 0.00, + 0.00, + 0.75, + 0.00, + 0.10, + 1.00, + 1.10}), + // expected_selected_scores + reference_tests::Tensor(ET_IND, {3, 1}, std::vector{3, 0, 1}), // expected_selected_indices + reference_tests::Tensor(ET_IND, {1}, std::vector{3}), // expected_valid_outputs "multiclass_nms_flipped_coordinates"), MulticlassNmsParams( - 3, // nms_top_k - 0.5f, // iou_threshold - 0.0f, // score_threshold - op::v8::MulticlassNms::SortResultType::SCORE, // sort_result_type - -1, // keep_top_k - -1, // background_class - 1.0f, // nms_eta - ET_IND, // output_type - false, // sort_result_across_batch - true, // normalized - reference_tests::Tensor(ET, {1, 10, 4}, std::vector{ - 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, - 1.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0, - 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0}), // boxes - reference_tests::Tensor(ET_TH, {1, 1, 10}, std::vector{ - 0.9, 0.9, 0.9, 0.9, 0.9, 0.9, 0.9, 0.9, 0.9, 0.9}), // scores - reference_tests::Tensor(ET_TH, {1, 6}, std::vector{ - 0.00, 0.90, 0.00, 0.00, 1.00, 1.00}), - // expected_selected_scores - reference_tests::Tensor(ET_IND, {1, 1}, std::vector{0}), // expected_selected_indices - reference_tests::Tensor(ET_IND, {1}, std::vector{1}), // expected_valid_outputs + 3, // nms_top_k + 0.5f, // iou_threshold + 0.0f, // score_threshold + op::v8::MulticlassNms::SortResultType::SCORE, // sort_result_type + -1, // keep_top_k + -1, // background_class + 1.0f, // nms_eta + ET_IND, // output_type + false, // sort_result_across_batch + true, // normalized + reference_tests::Tensor( + ET, + {1, 10, 4}, + std::vector{0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, + 1.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0, + 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0}), // boxes + reference_tests::Tensor(ET_TH, + {1, 1, 10}, + std::vector{0.9, 0.9, 0.9, 0.9, 0.9, 0.9, 0.9, 0.9, 0.9, 0.9}), // scores + reference_tests::Tensor(ET_TH, {1, 6}, std::vector{0.00, 0.90, 0.00, 0.00, 1.00, 1.00}), + // expected_selected_scores + reference_tests::Tensor(ET_IND, {1, 1}, std::vector{0}), // expected_selected_indices + reference_tests::Tensor(ET_IND, {1}, std::vector{1}), // expected_valid_outputs "multiclass_nms_identical_boxes"), MulticlassNmsParams( - 2, // nms_top_k - 0.5f, // iou_threshold - 0.0f, // score_threshold - op::v8::MulticlassNms::SortResultType::SCORE, // sort_result_type - -1, // keep_top_k - -1, // background_class - 1.0f, // nms_eta - ET_IND, // output_type - false, // sort_result_across_batch - true, // normalized - reference_tests::Tensor(ET, {1, 6, 4}, std::vector{ - 0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, 0.0, -0.1, 1.0, 0.9, - 0.0, 10.0, 1.0, 11.0, 0.0, 10.1, 1.0, 11.1, 0.0, 100.0, 1.0, 101.0}), // boxes - reference_tests::Tensor(ET_TH, {1, 1, 6}, std::vector{ - 0.9, 0.75, 0.6, 0.95, 0.5, 0.3}), // scores - reference_tests::Tensor(ET_TH, {2, 6}, std::vector{ - 0.00, 0.95, 0.00, 10.00, 1.00, 11.00, 0.00, 0.90, 0.00, 0.00, 1.00, 1.00}), - // expected_selected_scores - reference_tests::Tensor(ET_IND, {2, 1}, std::vector{3, 0}), // expected_selected_indices - reference_tests::Tensor(ET_IND, {1}, std::vector{2}), // expected_valid_outputs + 2, // nms_top_k + 0.5f, // iou_threshold + 0.0f, // score_threshold + op::v8::MulticlassNms::SortResultType::SCORE, // sort_result_type + -1, // keep_top_k + -1, // background_class + 1.0f, // nms_eta + ET_IND, // output_type + false, // sort_result_across_batch + true, // normalized + reference_tests::Tensor(ET, {1, 6, 4}, std::vector{0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, 0.0, + -0.1, 1.0, 0.9, 0.0, 10.0, 1.0, 11.0, 0.0, 10.1, + 1.0, 11.1, 0.0, 100.0, 1.0, 101.0}), // boxes + reference_tests::Tensor(ET_TH, {1, 1, 6}, std::vector{0.9, 0.75, 0.6, 0.95, 0.5, 0.3}), // scores + reference_tests::Tensor( + ET_TH, + {2, 6}, + std::vector{0.00, 0.95, 0.00, 10.00, 1.00, 11.00, 0.00, 0.90, 0.00, 0.00, 1.00, 1.00}), + // expected_selected_scores + reference_tests::Tensor(ET_IND, {2, 1}, std::vector{3, 0}), // expected_selected_indices + reference_tests::Tensor(ET_IND, {1}, std::vector{2}), // expected_valid_outputs "multiclass_nms_limit_output_size"), MulticlassNmsParams( - 3, // nms_top_k - 0.5f, // iou_threshold - 0.0f, // score_threshold - op::v8::MulticlassNms::SortResultType::SCORE, // sort_result_type - -1, // keep_top_k - -1, // background_class - 1.0f, // nms_eta - ET_IND, // output_type - false, // sort_result_across_batch - true, // normalized - reference_tests::Tensor(ET, {1, 1, 4}, std::vector{0.0, 0.0, 1.0, 1.0}), // boxes - reference_tests::Tensor(ET_TH, {1, 1, 1}, std::vector{0.9}), // scores - reference_tests::Tensor(ET_TH, {1, 6}, std::vector{ - 0.00, 0.90, 0.00, 0.00, 1.00, 1.00}), // expected_selected_scores - reference_tests::Tensor(ET_IND, {1, 1}, std::vector{0}), // expected_selected_indices - reference_tests::Tensor(ET_IND, {1}, std::vector{1}), // expected_valid_outputs + 3, // nms_top_k + 0.5f, // iou_threshold + 0.0f, // score_threshold + op::v8::MulticlassNms::SortResultType::SCORE, // sort_result_type + -1, // keep_top_k + -1, // background_class + 1.0f, // nms_eta + ET_IND, // output_type + false, // sort_result_across_batch + true, // normalized + reference_tests::Tensor(ET, {1, 1, 4}, std::vector{0.0, 0.0, 1.0, 1.0}), // boxes + reference_tests::Tensor(ET_TH, {1, 1, 1}, std::vector{0.9}), // scores + reference_tests::Tensor(ET_TH, + {1, 6}, + std::vector{0.00, 0.90, 0.00, 0.00, 1.00, 1.00}), // expected_selected_scores + reference_tests::Tensor(ET_IND, {1, 1}, std::vector{0}), // expected_selected_indices + reference_tests::Tensor(ET_IND, {1}, std::vector{1}), // expected_valid_outputs "multiclass_nms_single_box"), MulticlassNmsParams( - 3, // nms_top_k - 0.2f, // iou_threshold - 0.0f, // score_threshold - op::v8::MulticlassNms::SortResultType::SCORE, // sort_result_type - -1, // keep_top_k - -1, // background_class - 1.0f, // nms_eta - ET_IND, // output_type - false, // sort_result_across_batch - true, // normalized - reference_tests::Tensor(ET, {1, 6, 4}, std::vector{ - 0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, 0.0, -0.1, 1.0, 0.9, - 0.0, 10.0, 1.0, 11.0, 0.0, 10.1, 1.0, 11.1, 0.0, 100.0, 1.0, 101.0}), // boxes - reference_tests::Tensor(ET_TH, {1, 1, 6}, std::vector{ - 0.9, 0.75, 0.6, 0.95, 0.5, 0.3}), // scores - reference_tests::Tensor(ET_TH, {2, 6}, std::vector{ - 0.00, 0.95, 0.00, 10.00, 1.00, 11.00, 0.00, 0.90, 0.00, 0.00, 1.00, 1.00}), - // expected_selected_scores - reference_tests::Tensor(ET_IND, {2, 1}, std::vector{3, 0}), // expected_selected_indices - reference_tests::Tensor(ET_IND, {1}, std::vector{2}), // expected_valid_outputs + 3, // nms_top_k + 0.2f, // iou_threshold + 0.0f, // score_threshold + op::v8::MulticlassNms::SortResultType::SCORE, // sort_result_type + -1, // keep_top_k + -1, // background_class + 1.0f, // nms_eta + ET_IND, // output_type + false, // sort_result_across_batch + true, // normalized + reference_tests::Tensor(ET, {1, 6, 4}, std::vector{0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, 0.0, + -0.1, 1.0, 0.9, 0.0, 10.0, 1.0, 11.0, 0.0, 10.1, + 1.0, 11.1, 0.0, 100.0, 1.0, 101.0}), // boxes + reference_tests::Tensor(ET_TH, {1, 1, 6}, std::vector{0.9, 0.75, 0.6, 0.95, 0.5, 0.3}), // scores + reference_tests::Tensor( + ET_TH, + {2, 6}, + std::vector{0.00, 0.95, 0.00, 10.00, 1.00, 11.00, 0.00, 0.90, 0.00, 0.00, 1.00, 1.00}), + // expected_selected_scores + reference_tests::Tensor(ET_IND, {2, 1}, std::vector{3, 0}), // expected_selected_indices + reference_tests::Tensor(ET_IND, {1}, std::vector{2}), // expected_valid_outputs "multiclass_nms_by_IOU"), MulticlassNmsParams( - 3, // nms_top_k - 0.5f, // iou_threshold - 0.95f, // score_threshold - op::v8::MulticlassNms::SortResultType::SCORE, // sort_result_type - -1, // keep_top_k - -1, // background_class - 1.0f, // nms_eta - ET_IND, // output_type - false, // sort_result_across_batch - true, // normalized - reference_tests::Tensor(ET, {1, 6, 4}, std::vector{ - 0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, 0.0, -0.1, 1.0, 0.9, - 0.0, 10.0, 1.0, 11.0, 0.0, 10.1, 1.0, 11.1, 0.0, 100.0, 1.0, 101.0}), // boxes - reference_tests::Tensor(ET_TH, {1, 1, 6}, std::vector{ - 0.9, 0.75, 0.6, 0.96, 0.5, 0.3}), // scores - reference_tests::Tensor(ET_TH, {1, 6}, std::vector{ - 0.00, 0.96, 0.00, 10.00, 1.00, 11.00}), // expected_selected_scores - reference_tests::Tensor(ET_IND, {1, 1}, std::vector{3}), // expected_selected_indices - reference_tests::Tensor(ET_IND, {1}, std::vector{1}), // expected_valid_outputs + 3, // nms_top_k + 0.5f, // iou_threshold + 0.95f, // score_threshold + op::v8::MulticlassNms::SortResultType::SCORE, // sort_result_type + -1, // keep_top_k + -1, // background_class + 1.0f, // nms_eta + ET_IND, // output_type + false, // sort_result_across_batch + true, // normalized + reference_tests::Tensor(ET, {1, 6, 4}, std::vector{0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, 0.0, + -0.1, 1.0, 0.9, 0.0, 10.0, 1.0, 11.0, 0.0, 10.1, + 1.0, 11.1, 0.0, 100.0, 1.0, 101.0}), // boxes + reference_tests::Tensor(ET_TH, {1, 1, 6}, std::vector{0.9, 0.75, 0.6, 0.96, 0.5, 0.3}), // scores + reference_tests::Tensor( + ET_TH, + {1, 6}, + std::vector{0.00, 0.96, 0.00, 10.00, 1.00, 11.00}), // expected_selected_scores + reference_tests::Tensor(ET_IND, {1, 1}, std::vector{3}), // expected_selected_indices + reference_tests::Tensor(ET_IND, {1}, std::vector{1}), // expected_valid_outputs "multiclass_nms_by_IOU_and_scores"), MulticlassNmsParams( - 3, // nms_top_k - 0.5f, // iou_threshold - 2.0f, // score_threshold - op::v8::MulticlassNms::SortResultType::SCORE, // sort_result_type - -1, // keep_top_k - -1, // background_class - 1.0f, // nms_eta - ET_IND, // output_type - false, // sort_result_across_batch - true, // normalized - reference_tests::Tensor(ET, {1, 6, 4}, std::vector{ - 0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, 0.0, -0.1, 1.0, 0.9, - 0.0, 10.0, 1.0, 11.0, 0.0, 10.1, 1.0, 11.1, 0.0, 100.0, 1.0, 101.0}), // boxes - reference_tests::Tensor(ET_TH, {1, 1, 6}, std::vector{ - 0.9, 0.75, 0.6, 0.95, 0.5, 0.3}), // scores - reference_tests::Tensor(ET_TH, {0, 6}, std::vector{}), // expected_selected_scores - reference_tests::Tensor(ET_IND, {0, 1}, std::vector{}), // expected_selected_indices - reference_tests::Tensor(ET_IND, {1}, std::vector{0}), // expected_valid_outputs + 3, // nms_top_k + 0.5f, // iou_threshold + 2.0f, // score_threshold + op::v8::MulticlassNms::SortResultType::SCORE, // sort_result_type + -1, // keep_top_k + -1, // background_class + 1.0f, // nms_eta + ET_IND, // output_type + false, // sort_result_across_batch + true, // normalized + reference_tests::Tensor(ET, {1, 6, 4}, std::vector{0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, 0.0, + -0.1, 1.0, 0.9, 0.0, 10.0, 1.0, 11.0, 0.0, 10.1, + 1.0, 11.1, 0.0, 100.0, 1.0, 101.0}), // boxes + reference_tests::Tensor(ET_TH, {1, 1, 6}, std::vector{0.9, 0.75, 0.6, 0.95, 0.5, 0.3}), // scores + reference_tests::Tensor(ET_TH, {0, 6}, std::vector{}), // expected_selected_scores + reference_tests::Tensor(ET_IND, {0, 1}, std::vector{}), // expected_selected_indices + reference_tests::Tensor(ET_IND, {1}, std::vector{0}), // expected_valid_outputs "multiclass_nms_no_output"), MulticlassNmsParams( - 3, // nms_top_k - 0.5f, // iou_threshold - 0.0f, // score_threshold - op::v8::MulticlassNms::SortResultType::CLASSID, // sort_result_type - -1, // keep_top_k - 0, // background_class - 1.0f, // nms_eta - ET_IND, // output_type - false, // sort_result_across_batch - true, // normalized - reference_tests::Tensor(ET, {2, 6, 4}, std::vector{ - 0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, 0.0, -0.1, 1.0, 0.9, - 0.0, 10.0, 1.0, 11.0, 0.0, 10.1, 1.0, 11.1, 0.0, 100.0, 1.0, 101.0, - 0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, 0.0, -0.1, 1.0, 0.9, - 0.0, 10.0, 1.0, 11.0, 0.0, 10.1, 1.0, 11.1, 0.0, 100.0, 1.0, 101.0}), // boxes - reference_tests::Tensor(ET_TH, {2, 2, 6}, std::vector{ - 0.9, 0.75, 0.6, 0.95, 0.5, 0.3, 0.95, 0.75, 0.6, 0.80, 0.5, 0.3, - 0.9, 0.75, 0.6, 0.95, 0.5, 0.3, 0.95, 0.75, 0.6, 0.80, 0.5, 0.3}), // scores - reference_tests::Tensor(ET_TH, {4, 6}, std::vector{ - 1.00, 0.95, 0.00, 0.00, 1.00, 1.00, 1.00, 0.80, 0.00, 10.00, 1.00, 11.00, - 1.00, 0.95, 0.00, 0.00, 1.00, 1.00, 1.00, 0.80, 0.00, 10.00, 1.00, 11.00}), - // expected_selected_scores - reference_tests::Tensor(ET_IND, {4, 1}, std::vector{0, 3, 6, 9}), // expected_selected_indices - reference_tests::Tensor(ET_IND, {2}, std::vector{2, 2}), // expected_valid_outputs + 3, // nms_top_k + 0.5f, // iou_threshold + 0.0f, // score_threshold + op::v8::MulticlassNms::SortResultType::CLASSID, // sort_result_type + -1, // keep_top_k + 0, // background_class + 1.0f, // nms_eta + ET_IND, // output_type + false, // sort_result_across_batch + true, // normalized + reference_tests::Tensor( + ET, + {2, 6, 4}, + std::vector{0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, 0.0, -0.1, 1.0, 0.9, + 0.0, 10.0, 1.0, 11.0, 0.0, 10.1, 1.0, 11.1, 0.0, 100.0, 1.0, 101.0, + 0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, 0.0, -0.1, 1.0, 0.9, + 0.0, 10.0, 1.0, 11.0, 0.0, 10.1, 1.0, 11.1, 0.0, 100.0, 1.0, 101.0}), // boxes + reference_tests::Tensor(ET_TH, {2, 2, 6}, std::vector{0.9, 0.75, 0.6, 0.95, 0.5, 0.3, + 0.95, 0.75, 0.6, 0.80, 0.5, 0.3, + 0.9, 0.75, 0.6, 0.95, 0.5, 0.3, + 0.95, 0.75, 0.6, 0.80, 0.5, 0.3}), // scores + reference_tests::Tensor(ET_TH, {4, 6}, std::vector{1.00, 0.95, 0.00, 0.00, 1.00, 1.00, + 1.00, 0.80, 0.00, 10.00, 1.00, 11.00, + 1.00, 0.95, 0.00, 0.00, 1.00, 1.00, + 1.00, 0.80, 0.00, 10.00, 1.00, 11.00}), + // expected_selected_scores + reference_tests::Tensor(ET_IND, {4, 1}, std::vector{0, 3, 6, 9}), // expected_selected_indices + reference_tests::Tensor(ET_IND, {2}, std::vector{2, 2}), // expected_valid_outputs "multiclass_nms_by_background"), MulticlassNmsParams( - 3, // nms_top_k - 0.5f, // iou_threshold - 0.0f, // score_threshold - op::v8::MulticlassNms::SortResultType::CLASSID, // sort_result_type - 3, // keep_top_k - -1, // background_class - 1.0f, // nms_eta - ET_IND, // output_type - false, // sort_result_across_batch - true, // normalized - reference_tests::Tensor(ET, {2, 6, 4}, std::vector{ - 0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, 0.0, -0.1, 1.0, 0.9, - 0.0, 10.0, 1.0, 11.0, 0.0, 10.1, 1.0, 11.1, 0.0, 100.0, 1.0, 101.0, - 0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, 0.0, -0.1, 1.0, 0.9, - 0.0, 10.0, 1.0, 11.0, 0.0, 10.1, 1.0, 11.1, 0.0, 100.0, 1.0, 101.0}), // boxes - reference_tests::Tensor(ET_TH, {2, 2, 6}, std::vector{ - 0.9, 0.75, 0.6, 0.95, 0.5, 0.3, 0.95, 0.75, 0.6, 0.80, 0.5, 0.3, - 0.9, 0.75, 0.6, 0.95, 0.5, 0.3, 0.95, 0.75, 0.6, 0.80, 0.5, 0.3}), // scores - reference_tests::Tensor(ET_TH, {6, 6}, std::vector{ - 0.00, 0.95, 0.00, 10.00, 1.00, 11.00, 0.00, 0.90, 0.00, - 0.00, 1.00, 1.00, 1.00, 0.95, 0.00, 0.00, 1.00, 1.00, - 0.00, 0.95, 0.00, 10.00, 1.00, 11.00, 0.00, 0.90, 0.00, - 0.00, 1.00, 1.00, 1.00, 0.95, 0.00, 0.00, 1.00, 1.00}), // expected_selected_scores - reference_tests::Tensor(ET_IND, {6, 1}, std::vector{3, 0, 0, 9, 6, 6}), // expected_selected_indices - reference_tests::Tensor(ET_IND, {2}, std::vector{3, 3}), // expected_valid_outputs + 3, // nms_top_k + 0.5f, // iou_threshold + 0.0f, // score_threshold + op::v8::MulticlassNms::SortResultType::CLASSID, // sort_result_type + 3, // keep_top_k + -1, // background_class + 1.0f, // nms_eta + ET_IND, // output_type + false, // sort_result_across_batch + true, // normalized + reference_tests::Tensor( + ET, + {2, 6, 4}, + std::vector{0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, 0.0, -0.1, 1.0, 0.9, + 0.0, 10.0, 1.0, 11.0, 0.0, 10.1, 1.0, 11.1, 0.0, 100.0, 1.0, 101.0, + 0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, 0.0, -0.1, 1.0, 0.9, + 0.0, 10.0, 1.0, 11.0, 0.0, 10.1, 1.0, 11.1, 0.0, 100.0, 1.0, 101.0}), // boxes + reference_tests::Tensor(ET_TH, {2, 2, 6}, std::vector{0.9, 0.75, 0.6, 0.95, 0.5, 0.3, + 0.95, 0.75, 0.6, 0.80, 0.5, 0.3, + 0.9, 0.75, 0.6, 0.95, 0.5, 0.3, + 0.95, 0.75, 0.6, 0.80, 0.5, 0.3}), // scores + reference_tests::Tensor( + ET_TH, + {6, 6}, + std::vector{ + 0.00, 0.95, 0.00, 10.00, 1.00, 11.00, 0.00, 0.90, 0.00, 0.00, 1.00, 1.00, 1.00, + 0.95, 0.00, 0.00, 1.00, 1.00, 0.00, 0.95, 0.00, 10.00, 1.00, 11.00, 0.00, 0.90, + 0.00, 0.00, 1.00, 1.00, 1.00, 0.95, 0.00, 0.00, 1.00, 1.00}), // expected_selected_scores + reference_tests::Tensor(ET_IND, {6, 1}, std::vector{3, 0, 0, 9, 6, 6}), // expected_selected_indices + reference_tests::Tensor(ET_IND, {2}, std::vector{3, 3}), // expected_valid_outputs "multiclass_nms_by_keep_top_k"), MulticlassNmsParams( - -1, // nms_top_k - 1.0f, // iou_threshold - 0.0f, // score_threshold - op::v8::MulticlassNms::SortResultType::CLASSID, // sort_result_type - -1, // keep_top_k - -1, // background_class - 0.1f, // nms_eta - ET_IND, // output_type - false, // sort_result_across_batch - true, // normalized - reference_tests::Tensor(ET, {2, 6, 4}, std::vector{ - 0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, 0.0, -0.1, 1.0, 0.9, - 0.0, 10.0, 1.0, 11.0, 0.0, 10.1, 1.0, 11.1, 0.0, 100.0, 1.0, 101.0, - 0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, 0.0, -0.1, 1.0, 0.9, - 0.0, 10.0, 1.0, 11.0, 0.0, 10.1, 1.0, 11.1, 0.0, 100.0, 1.0, 101.0}), // boxes - reference_tests::Tensor(ET_TH, {2, 2, 6}, std::vector{ - 0.9, 0.75, 0.6, 0.95, 0.5, 0.3, 0.95, 0.75, 0.6, 0.80, 0.5, 0.3, - 0.9, 0.75, 0.6, 0.95, 0.5, 0.3, 0.95, 0.75, 0.6, 0.80, 0.5, 0.3}), // scores - reference_tests::Tensor(ET_TH, {12, 6}, std::vector{ - 0.00, 0.95, 0.00, 10.00, 1.00, 11.00, 0.00, 0.90, 0.00, 0.00, 1.00, 1.00, 0.00, 0.30, 0.00, - 100.00, 1.00, 101.00, 1.00, 0.95, 0.00, 0.00, 1.00, 1.00, 1.00, 0.80, 0.00, 10.00, 1.00, 11.00, - 1.00, 0.30, 0.00, 100.00, 1.00, 101.00, 0.00, 0.95, 0.00, 10.00, 1.00, 11.00, 0.00, 0.90, 0.00, - 0.00, 1.00, 1.00, 0.00, 0.30, 0.00, 100.00, 1.00, 101.00, 1.00, 0.95, 0.00, 0.00, 1.00, 1.00, - 1.00, 0.80, 0.00, 10.00, 1.00, 11.00, 1.00, 0.30, 0.00, 100.00, 1.00, 101.00}), - // expected_selected_scores - reference_tests::Tensor(ET_IND, {12, 1}, std::vector{ - 3, 0, 5, 0, 3, 5, 9, 6, 11, 6, 9, 11}), // expected_selected_indices - reference_tests::Tensor(ET_IND, {2}, std::vector{6, 6}), // expected_valid_outputs + -1, // nms_top_k + 1.0f, // iou_threshold + 0.0f, // score_threshold + op::v8::MulticlassNms::SortResultType::CLASSID, // sort_result_type + -1, // keep_top_k + -1, // background_class + 0.1f, // nms_eta + ET_IND, // output_type + false, // sort_result_across_batch + true, // normalized + reference_tests::Tensor( + ET, + {2, 6, 4}, + std::vector{0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, 0.0, -0.1, 1.0, 0.9, + 0.0, 10.0, 1.0, 11.0, 0.0, 10.1, 1.0, 11.1, 0.0, 100.0, 1.0, 101.0, + 0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, 0.0, -0.1, 1.0, 0.9, + 0.0, 10.0, 1.0, 11.0, 0.0, 10.1, 1.0, 11.1, 0.0, 100.0, 1.0, 101.0}), // boxes + reference_tests::Tensor(ET_TH, {2, 2, 6}, std::vector{0.9, 0.75, 0.6, 0.95, 0.5, 0.3, + 0.95, 0.75, 0.6, 0.80, 0.5, 0.3, + 0.9, 0.75, 0.6, 0.95, 0.5, 0.3, + 0.95, 0.75, 0.6, 0.80, 0.5, 0.3}), // scores + reference_tests::Tensor( + ET_TH, + {12, 6}, + std::vector{0.00, 0.95, 0.00, 10.00, 1.00, 11.00, 0.00, 0.90, 0.00, 0.00, 1.00, 1.00, + 0.00, 0.30, 0.00, 100.00, 1.00, 101.00, 1.00, 0.95, 0.00, 0.00, 1.00, 1.00, + 1.00, 0.80, 0.00, 10.00, 1.00, 11.00, 1.00, 0.30, 0.00, 100.00, 1.00, 101.00, + 0.00, 0.95, 0.00, 10.00, 1.00, 11.00, 0.00, 0.90, 0.00, 0.00, 1.00, 1.00, + 0.00, 0.30, 0.00, 100.00, 1.00, 101.00, 1.00, 0.95, 0.00, 0.00, 1.00, 1.00, + 1.00, 0.80, 0.00, 10.00, 1.00, 11.00, 1.00, 0.30, 0.00, 100.00, 1.00, 101.00}), + // expected_selected_scores + reference_tests::Tensor( + ET_IND, + {12, 1}, + std::vector{3, 0, 5, 0, 3, 5, 9, 6, 11, 6, 9, 11}), // expected_selected_indices + reference_tests::Tensor(ET_IND, {2}, std::vector{6, 6}), // expected_valid_outputs "multiclass_nms_by_nms_eta"), }; return params; } std::vector generateCombinedParams() { - const std::vector> generatedParams { + const std::vector> generatedParams{ generateParams(), generateParams(), generateParams(), @@ -562,6 +635,8 @@ std::vector generateCombinedParams() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_MulticlassNms_With_Hardcoded_Refs, ReferenceMulticlassNmsTest, - testing::ValuesIn(generateCombinedParams()), ReferenceMulticlassNmsTest::getTestCaseName); -} // namespace +INSTANTIATE_TEST_SUITE_P(smoke_MulticlassNms_With_Hardcoded_Refs, + ReferenceMulticlassNmsTest, + testing::ValuesIn(generateCombinedParams()), + ReferenceMulticlassNmsTest::getTestCaseName); +} // namespace diff --git a/src/plugins/template/tests/functional/op_reference/multiply.cpp b/src/plugins/template/tests/functional/op_reference/multiply.cpp index 607ff5dc0e7..bd3b27f500a 100644 --- a/src/plugins/template/tests/functional/op_reference/multiply.cpp +++ b/src/plugins/template/tests/functional/op_reference/multiply.cpp @@ -2,10 +2,12 @@ // SPDX-License-Identifier: Apache-2.0 // -#include -#include "base_reference_test.hpp" #include "openvino/op/multiply.hpp" +#include + +#include "base_reference_test.hpp" + using namespace ov; using namespace reference_tests; @@ -14,11 +16,11 @@ namespace { struct MultiplyParams { template MultiplyParams(const PartialShape& iShape1, - const PartialShape& iShape2, - const element::Type& iType, - const std::vector& iValues1, - const std::vector& iValues2, - const std::vector& oValues) + const PartialShape& iShape2, + const element::Type& iType, + const std::vector& iValues1, + const std::vector& iValues2, + const std::vector& oValues) : pshape1(iShape1), pshape2(iShape2), inType(iType), @@ -57,9 +59,9 @@ public: private: static std::shared_ptr CreateFunction(const PartialShape& input_shape1, - const PartialShape& input_shape2, - const element::Type& input_type, - const element::Type& expected_output_type) { + const PartialShape& input_shape2, + const element::Type& input_type, + const element::Type& expected_output_type) { const auto in1 = std::make_shared(input_type, input_shape1); const auto in2 = std::make_shared(input_type, input_shape2); const auto multiply = std::make_shared(in1, in2); @@ -83,21 +85,20 @@ std::vector generateParamsForMultiply() { std::vector{1, 2, 3, 4}, std::vector{5, 6, 7, 8}, std::vector{5, 12, 21, 32}), - MultiplyParams(ov::PartialShape{3, 2, 1}, - ov::PartialShape{1, 6}, - IN_ET, - std::vector{12, 24, 36, 48, 60, 72}, - std::vector{1, 2, 3, 4, 6, 1}, - std::vector{12, 24, 36, 48, 72, 12, 24, 48, 72, 96, 144, 24, - 36, 72, 108, 144, 216, 36, 48, 96, 144, 192, 288, 48, - 60, 120, 180, 240, 360, 60, 72, 144, 216, 288, 432, 72}), + MultiplyParams( + ov::PartialShape{3, 2, 1}, + ov::PartialShape{1, 6}, + IN_ET, + std::vector{12, 24, 36, 48, 60, 72}, + std::vector{1, 2, 3, 4, 6, 1}, + std::vector{12, 24, 36, 48, 72, 12, 24, 48, 72, 96, 144, 24, 36, 72, 108, 144, 216, 36, + 48, 96, 144, 192, 288, 48, 60, 120, 180, 240, 360, 60, 72, 144, 216, 288, 432, 72}), MultiplyParams(ov::PartialShape{1}, ov::PartialShape{1}, IN_ET, std::vector{2}, std::vector{8}, - std::vector{16}) - }; + std::vector{16})}; return params; } @@ -105,27 +106,23 @@ template std::vector generateParamsForMultiplyFloat() { using T = typename element_type_traits::value_type; - std::vector params{ - MultiplyParams(ov::PartialShape{1}, - ov::PartialShape{1}, - IN_ET, - std::vector{3.1}, - std::vector{8}, - std::vector{24.8}) - }; + std::vector params{MultiplyParams(ov::PartialShape{1}, + ov::PartialShape{1}, + IN_ET, + std::vector{3.1}, + std::vector{8}, + std::vector{24.8})}; return params; } std::vector generateCombinedParamsForMultiply() { - const std::vector> allTypeParams{ - generateParamsForMultiply(), - generateParamsForMultiply(), - generateParamsForMultiply(), - generateParamsForMultiply(), - generateParamsForMultiply(), - generateParamsForMultiply(), - generateParamsForMultiply() - }; + const std::vector> allTypeParams{generateParamsForMultiply(), + generateParamsForMultiply(), + generateParamsForMultiply(), + generateParamsForMultiply(), + generateParamsForMultiply(), + generateParamsForMultiply(), + generateParamsForMultiply()}; std::vector combinedParams; @@ -139,8 +136,7 @@ std::vector generateCombinedParamsForMultiply() { std::vector generateCombinedParamsForMultiplyFloat() { const std::vector> allTypeParams{ generateParamsForMultiplyFloat(), - generateParamsForMultiplyFloat() - }; + generateParamsForMultiplyFloat()}; std::vector combinedParams; @@ -151,16 +147,14 @@ std::vector generateCombinedParamsForMultiplyFloat() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P( - smoke_Multiply_With_Hardcoded_Refs, - ReferenceMultiplyLayerTest, - ::testing::ValuesIn(generateCombinedParamsForMultiply()), - ReferenceMultiplyLayerTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_Multiply_With_Hardcoded_Refs, + ReferenceMultiplyLayerTest, + ::testing::ValuesIn(generateCombinedParamsForMultiply()), + ReferenceMultiplyLayerTest::getTestCaseName); -INSTANTIATE_TEST_SUITE_P( - smoke_Multiply_Float_With_Hardcoded_Refs, - ReferenceMultiplyLayerTest, - ::testing::ValuesIn(generateCombinedParamsForMultiplyFloat()), - ReferenceMultiplyLayerTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_Multiply_Float_With_Hardcoded_Refs, + ReferenceMultiplyLayerTest, + ::testing::ValuesIn(generateCombinedParamsForMultiplyFloat()), + ReferenceMultiplyLayerTest::getTestCaseName); } // namespace diff --git a/src/plugins/template/tests/functional/op_reference/mvn.cpp b/src/plugins/template/tests/functional/op_reference/mvn.cpp index 5816351c2da..d16c7a9a761 100644 --- a/src/plugins/template/tests/functional/op_reference/mvn.cpp +++ b/src/plugins/template/tests/functional/op_reference/mvn.cpp @@ -2,9 +2,10 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/mvn.hpp" + #include -#include "openvino/op/mvn.hpp" #include "base_reference_test.hpp" #include "shared_test_classes/base/layer_test_utils.hpp" @@ -14,8 +15,12 @@ using namespace reference_tests; // ------------------------------ V0 ------------------------------ struct MVN1Params { - MVN1Params(const reference_tests::Tensor& paramInput, const ov::AxisSet& paramReductionAxes, const bool paramAcrossChannels, const bool paramNormalizeVariance, - const double paramEps, const reference_tests::Tensor& paramExpected) + MVN1Params(const reference_tests::Tensor& paramInput, + const ov::AxisSet& paramReductionAxes, + const bool paramAcrossChannels, + const bool paramNormalizeVariance, + const double paramEps, + const reference_tests::Tensor& paramExpected) : input(paramInput), reductionAxes(paramReductionAxes), acrossChannels(paramAcrossChannels), @@ -34,7 +39,11 @@ class ReferenceMVN1LayerTest : public testing::TestWithParam, public public: void SetUp() override { auto params = GetParam(); - function = CreateFunction(params.input, params.reductionAxes, params.acrossChannels, params.normalizeVariance, params.eps); + function = CreateFunction(params.input, + params.reductionAxes, + params.acrossChannels, + params.normalizeVariance, + params.eps); inputData = {params.input.data}; refOutData = {params.expected.data}; } @@ -54,14 +63,17 @@ public: } private: - static std::shared_ptr CreateFunction(const reference_tests::Tensor& input, const ov::AxisSet& reductionAxes, const bool acrossChannels, - const bool normalizeVariance, const double eps) { + static std::shared_ptr CreateFunction(const reference_tests::Tensor& input, + const ov::AxisSet& reductionAxes, + const bool acrossChannels, + const bool normalizeVariance, + const double eps) { const auto in = std::make_shared(input.type, input.shape); auto mvn = std::make_shared(in, acrossChannels, normalizeVariance, eps); if (!reductionAxes.empty()) { mvn = std::make_shared(in, reductionAxes, normalizeVariance, eps); } - return std::make_shared(NodeVector {mvn}, ParameterVector {in}); + return std::make_shared(NodeVector{mvn}, ParameterVector{in}); } }; @@ -69,79 +81,110 @@ TEST_P(ReferenceMVN1LayerTest, CompareWithHardcodedRefs) { Exec(); } -const ov::AxisSet emptyReductionAxes {}; +const ov::AxisSet emptyReductionAxes{}; INSTANTIATE_TEST_SUITE_P( - smoke_MVN1_With_Hardcoded_Refs, ReferenceMVN1LayerTest, + smoke_MVN1_With_Hardcoded_Refs, + ReferenceMVN1LayerTest, ::testing::Values( // across_channels=false, variance=false - MVN1Params(reference_tests::Tensor {{1, 3, 3, 3}, ov::element::f32, std::vector {1, 2, 3, 4, 5, 6, 7, 8, 9, 1, 2, 3, 4, 5, - 6, 7, 8, 9, 1, 2, 3, 4, 5, 6, 7, 8, 9}}, + MVN1Params(reference_tests::Tensor{{1, 3, 3, 3}, + ov::element::f32, + std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 1, 2, 3, 4, 5, + 6, 7, 8, 9, 1, 2, 3, 4, 5, 6, 7, 8, 9}}, emptyReductionAxes, false, false, 1e-9, - reference_tests::Tensor {{1, 3, 3, 3}, ov::element::f32, std::vector {-4, -3, -2, -1, 0, 1, 2, 3, 4, -4, -3, -2, -1, 0, - 1, 2, 3, 4, -4, -3, -2, -1, 0, 1, 2, 3, 4}}), + reference_tests::Tensor{{1, 3, 3, 3}, + ov::element::f32, + std::vector{-4, -3, -2, -1, 0, 1, 2, 3, 4, -4, -3, -2, -1, 0, + 1, 2, 3, 4, -4, -3, -2, -1, 0, 1, 2, 3, 4}}), // across_channels=true, variance=false MVN1Params( - reference_tests::Tensor {{1, 3, 2, 2}, ov::element::f32, std::vector {1, 2, 3, 4, 5, 6, 7, 8, 9, 1, 2, 3}}, + reference_tests::Tensor{{1, 3, 2, 2}, + ov::element::f32, + std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 1, 2, 3}}, emptyReductionAxes, true, false, 1e-9, - reference_tests::Tensor {{1, 3, 2, 2}, ov::element::f32, std::vector {-3.25, -2.25, -1.25, -0.25, 0.75, 1.75, 2.75, 3.75, 4.75, -3.25, -2.25, -1.25}}), + reference_tests::Tensor{ + {1, 3, 2, 2}, + ov::element::f32, + std::vector{-3.25, -2.25, -1.25, -0.25, 0.75, 1.75, 2.75, 3.75, 4.75, -3.25, -2.25, -1.25}}), // across_channels=false, variance=true - MVN1Params(reference_tests::Tensor {{1, 3, 3, 3}, ov::element::f32, std::vector {1, 2, 3, 4, 5, 6, 7, 8, 9, 1, 2, 3, 4, 5, - 6, 7, 8, 9, 1, 2, 3, 4, 5, 6, 7, 8, 9}}, - emptyReductionAxes, - false, - true, - 1e-9, - reference_tests::Tensor {{1, 3, 3, 3}, - ov::element::f32, - std::vector {-1.5491934, -1.161895, -0.7745967, -0.38729835, 0., 0.38729835, 0.7745967, 1.161895, 1.5491934, - -1.5491934, -1.161895, -0.7745967, -0.38729835, 0., 0.38729835, 0.7745967, 1.161895, 1.5491934, - -1.5491934, -1.161895, -0.7745967, -0.38729835, 0., 0.38729835, 0.7745967, 1.161895, 1.5491934}}), + MVN1Params( + reference_tests::Tensor{{1, 3, 3, 3}, ov::element::f32, std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, + 1, 2, 3, 4, 5, 6, 7, 8, 9, + 1, 2, 3, 4, 5, 6, 7, 8, 9}}, + emptyReductionAxes, + false, + true, + 1e-9, + reference_tests::Tensor{ + {1, 3, 3, 3}, + ov::element::f32, + std::vector{-1.5491934, -1.161895, -0.7745967, -0.38729835, 0., 0.38729835, 0.7745967, + 1.161895, 1.5491934, -1.5491934, -1.161895, -0.7745967, -0.38729835, 0., + 0.38729835, 0.7745967, 1.161895, 1.5491934, -1.5491934, -1.161895, -0.7745967, + -0.38729835, 0., 0.38729835, 0.7745967, 1.161895, 1.5491934}}), // across_channels=true, variance=true - MVN1Params(reference_tests::Tensor {{1, 3, 3, 3}, ov::element::f32, std::vector {1, 2, 3, 4, 5, 6, 7, 8, 9, 1, 2, 3, 4, 5, - 6, 7, 8, 9, 1, 2, 3, 4, 5, 6, 7, 8, 9}}, - emptyReductionAxes, - true, - true, - 1e-9, - reference_tests::Tensor {{1, 3, 3, 3}, - ov::element::f32, - std::vector {-1.5491934, -1.161895, -0.7745967, -0.38729835, 0., 0.38729835, 0.7745967, 1.161895, 1.5491934, - -1.5491934, -1.161895, -0.7745967, -0.38729835, 0., 0.38729835, 0.7745967, 1.161895, 1.5491934, - -1.5491934, -1.161895, -0.7745967, -0.38729835, 0., 0.38729835, 0.7745967, 1.161895, 1.5491934}}), + MVN1Params( + reference_tests::Tensor{{1, 3, 3, 3}, ov::element::f32, std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, + 1, 2, 3, 4, 5, 6, 7, 8, 9, + 1, 2, 3, 4, 5, 6, 7, 8, 9}}, + emptyReductionAxes, + true, + true, + 1e-9, + reference_tests::Tensor{ + {1, 3, 3, 3}, + ov::element::f32, + std::vector{-1.5491934, -1.161895, -0.7745967, -0.38729835, 0., 0.38729835, 0.7745967, + 1.161895, 1.5491934, -1.5491934, -1.161895, -0.7745967, -0.38729835, 0., + 0.38729835, 0.7745967, 1.161895, 1.5491934, -1.5491934, -1.161895, -0.7745967, + -0.38729835, 0., 0.38729835, 0.7745967, 1.161895, 1.5491934}}), // reductionAxes, variance=false MVN1Params( - reference_tests::Tensor {{1, 3, 2, 2}, ov::element::f32, std::vector {1, 2, 3, 4, 5, 6, 7, 8, 9, 1, 2, 3}}, + reference_tests::Tensor{{1, 3, 2, 2}, + ov::element::f32, + std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 1, 2, 3}}, {1, 2, 3}, false, false, 1e-9, - reference_tests::Tensor {{1, 3, 2, 2}, ov::element::f32, std::vector {-3.25, -2.25, -1.25, -0.25, 0.75, 1.75, 2.75, 3.75, 4.75, -3.25, -2.25, -1.25}}), + reference_tests::Tensor{ + {1, 3, 2, 2}, + ov::element::f32, + std::vector{-3.25, -2.25, -1.25, -0.25, 0.75, 1.75, 2.75, 3.75, 4.75, -3.25, -2.25, -1.25}}), // reductionAxes, variance=true - MVN1Params(reference_tests::Tensor {{1, 3, 3, 3}, ov::element::f32, std::vector {1, 2, 3, 4, 5, 6, 7, 8, 9, 1, 2, 3, 4, 5, - 6, 7, 8, 9, 1, 2, 3, 4, 5, 6, 7, 8, 9}}, - {2, 3}, - false, - true, - 1e-9, - reference_tests::Tensor {{1, 3, 3, 3}, - ov::element::f32, - std::vector {-1.5491934, -1.161895, -0.7745967, -0.38729835, 0., 0.38729835, 0.7745967, 1.161895, 1.5491934, - -1.5491934, -1.161895, -0.7745967, -0.38729835, 0., 0.38729835, 0.7745967, 1.161895, 1.5491934, - -1.5491934, -1.161895, -0.7745967, -0.38729835, 0., 0.38729835, 0.7745967, 1.161895, 1.5491934}})), + MVN1Params( + reference_tests::Tensor{{1, 3, 3, 3}, ov::element::f32, std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, + 1, 2, 3, 4, 5, 6, 7, 8, 9, + 1, 2, 3, 4, 5, 6, 7, 8, 9}}, + {2, 3}, + false, + true, + 1e-9, + reference_tests::Tensor{ + {1, 3, 3, 3}, + ov::element::f32, + std::vector{-1.5491934, -1.161895, -0.7745967, -0.38729835, 0., 0.38729835, 0.7745967, + 1.161895, 1.5491934, -1.5491934, -1.161895, -0.7745967, -0.38729835, 0., + 0.38729835, 0.7745967, 1.161895, 1.5491934, -1.5491934, -1.161895, -0.7745967, + -0.38729835, 0., 0.38729835, 0.7745967, 1.161895, 1.5491934}})), ReferenceMVN1LayerTest::getTestCaseName); // ------------------------------ V6 ------------------------------ struct MVN6Params { - MVN6Params(const reference_tests::Tensor& paramInput, const reference_tests::Tensor& paramReductionAxes, const bool paramNormalizeVariance, const double paramEps, - const op::MVNEpsMode mode, const reference_tests::Tensor& paramExpected) + MVN6Params(const reference_tests::Tensor& paramInput, + const reference_tests::Tensor& paramReductionAxes, + const bool paramNormalizeVariance, + const double paramEps, + const op::MVNEpsMode mode, + const reference_tests::Tensor& paramExpected) : input(paramInput), reductionAxes(paramReductionAxes), normalizeVariance(paramNormalizeVariance), @@ -160,7 +203,8 @@ class ReferenceMVN6LayerTest : public testing::TestWithParam, public public: void SetUp() override { auto params = GetParam(); - function = CreateFunction(params.input, params.reductionAxes, params.normalizeVariance, params.eps, params.epsMode); + function = + CreateFunction(params.input, params.reductionAxes, params.normalizeVariance, params.eps, params.epsMode); inputData = {params.input.data}; refOutData = {params.expected.data}; } @@ -177,8 +221,11 @@ public: } private: - static std::shared_ptr CreateFunction(const reference_tests::Tensor& input, const reference_tests::Tensor& reductionAxes, const bool normalizeVariance, const double eps, - const op::MVNEpsMode epsMode) { + static std::shared_ptr CreateFunction(const reference_tests::Tensor& input, + const reference_tests::Tensor& reductionAxes, + const bool normalizeVariance, + const double eps, + const op::MVNEpsMode epsMode) { std::vector dataVector(reductionAxes.shape[0]); const auto in = std::make_shared(input.type, input.shape); const auto refBuffer = reductionAxes.data.data(); @@ -187,7 +234,7 @@ private: } const auto axes = std::make_shared(reductionAxes.type, reductionAxes.shape, dataVector); auto mvn = std::make_shared(in, axes, normalizeVariance, static_cast(eps), epsMode); - return std::make_shared(NodeVector {mvn}, ParameterVector {in}); + return std::make_shared(NodeVector{mvn}, ParameterVector{in}); } }; @@ -196,51 +243,68 @@ TEST_P(ReferenceMVN6LayerTest, CompareWithHardcodedRefs) { } INSTANTIATE_TEST_SUITE_P( - smoke_MVN6_With_Hardcoded_Refs, ReferenceMVN6LayerTest, + smoke_MVN6_With_Hardcoded_Refs, + ReferenceMVN6LayerTest, ::testing::Values( // variance=false, OUTSIDE_SQRT - MVN6Params(reference_tests::Tensor {{1, 3, 3, 3}, ov::element::f32, std::vector {1, 2, 3, 4, 5, 6, 7, 8, 9, 1, 2, 3, 4, 5, - 6, 7, 8, 9, 1, 2, 3, 4, 5, 6, 7, 8, 9}}, - reference_tests::Tensor {Shape {2}, ov::element::i64, std::vector {2, 3}}, + MVN6Params(reference_tests::Tensor{{1, 3, 3, 3}, + ov::element::f32, + std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 1, 2, 3, 4, 5, + 6, 7, 8, 9, 1, 2, 3, 4, 5, 6, 7, 8, 9}}, + reference_tests::Tensor{Shape{2}, ov::element::i64, std::vector{2, 3}}, false, 1e-9, op::MVNEpsMode::OUTSIDE_SQRT, - reference_tests::Tensor {{1, 3, 3, 3}, ov::element::f32, std::vector {-4, -3, -2, -1, 0, 1, 2, 3, 4, -4, -3, -2, -1, 0, - 1, 2, 3, 4, -4, -3, -2, -1, 0, 1, 2, 3, 4}}), + reference_tests::Tensor{{1, 3, 3, 3}, + ov::element::f32, + std::vector{-4, -3, -2, -1, 0, 1, 2, 3, 4, -4, -3, -2, -1, 0, + 1, 2, 3, 4, -4, -3, -2, -1, 0, 1, 2, 3, 4}}), // variance=true, OUTSIDE_SQRT - MVN6Params(reference_tests::Tensor {{1, 3, 3, 3}, ov::element::f32, std::vector {1, 2, 3, 4, 5, 6, 7, 8, 9, 1, 2, 3, 4, 5, - 6, 7, 8, 9, 1, 2, 3, 4, 5, 6, 7, 8, 9}}, - reference_tests::Tensor {Shape {2}, ov::element::i64, std::vector {2, 3}}, - true, - 1e-9, - op::MVNEpsMode::OUTSIDE_SQRT, - reference_tests::Tensor {{1, 3, 3, 3}, - ov::element::f32, - std::vector {-1.5491934, -1.161895, -0.7745967, -0.38729835, 0., 0.38729835, 0.7745967, 1.161895, 1.5491934, - -1.5491934, -1.161895, -0.7745967, -0.38729835, 0., 0.38729835, 0.7745967, 1.161895, 1.5491934, - -1.5491934, -1.161895, -0.7745967, -0.38729835, 0., 0.38729835, 0.7745967, 1.161895, 1.5491934}}), + MVN6Params( + reference_tests::Tensor{{1, 3, 3, 3}, ov::element::f32, std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, + 1, 2, 3, 4, 5, 6, 7, 8, 9, + 1, 2, 3, 4, 5, 6, 7, 8, 9}}, + reference_tests::Tensor{Shape{2}, ov::element::i64, std::vector{2, 3}}, + true, + 1e-9, + op::MVNEpsMode::OUTSIDE_SQRT, + reference_tests::Tensor{ + {1, 3, 3, 3}, + ov::element::f32, + std::vector{-1.5491934, -1.161895, -0.7745967, -0.38729835, 0., 0.38729835, 0.7745967, + 1.161895, 1.5491934, -1.5491934, -1.161895, -0.7745967, -0.38729835, 0., + 0.38729835, 0.7745967, 1.161895, 1.5491934, -1.5491934, -1.161895, -0.7745967, + -0.38729835, 0., 0.38729835, 0.7745967, 1.161895, 1.5491934}}), // variance=true, INSIDE_SQRT - MVN6Params(reference_tests::Tensor {{1, 3, 3, 3}, ov::element::f32, std::vector {1, 2, 3, 4, 5, 6, 7, 8, 9, 1, 2, 3, 4, 5, - 6, 7, 8, 9, 1, 2, 3, 4, 5, 6, 7, 8, 9}}, - reference_tests::Tensor {Shape {2}, ov::element::i64, std::vector {2, 3}}, - true, - 1e-9, - op::MVNEpsMode::INSIDE_SQRT, - reference_tests::Tensor {{1, 3, 3, 3}, - ov::element::f32, - std::vector {-1.5491934, -1.161895, -0.7745967, -0.38729835, 0., 0.38729835, 0.7745967, 1.161895, 1.5491934, - -1.5491934, -1.161895, -0.7745967, -0.38729835, 0., 0.38729835, 0.7745967, 1.161895, 1.5491934, - -1.5491934, -1.161895, -0.7745967, -0.38729835, 0., 0.38729835, 0.7745967, 1.161895, 1.5491934}}), + MVN6Params( + reference_tests::Tensor{{1, 3, 3, 3}, ov::element::f32, std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, + 1, 2, 3, 4, 5, 6, 7, 8, 9, + 1, 2, 3, 4, 5, 6, 7, 8, 9}}, + reference_tests::Tensor{Shape{2}, ov::element::i64, std::vector{2, 3}}, + true, + 1e-9, + op::MVNEpsMode::INSIDE_SQRT, + reference_tests::Tensor{ + {1, 3, 3, 3}, + ov::element::f32, + std::vector{-1.5491934, -1.161895, -0.7745967, -0.38729835, 0., 0.38729835, 0.7745967, + 1.161895, 1.5491934, -1.5491934, -1.161895, -0.7745967, -0.38729835, 0., + 0.38729835, 0.7745967, 1.161895, 1.5491934, -1.5491934, -1.161895, -0.7745967, + -0.38729835, 0., 0.38729835, 0.7745967, 1.161895, 1.5491934}}), // variance=true, another reductionAxes, OUTSIDE_SQRT - MVN6Params(reference_tests::Tensor {{1, 3, 3, 3}, ov::element::f32, std::vector({1, 2, 3, 4, 5, 6, 7, 8, 9, 1, 2, 3, 4, 5, - 6, 7, 8, 9, 1, 2, 3, 4, 5, 6, 7, 8, 9})}, - reference_tests::Tensor {Shape {3}, ov::element::i64, std::vector({1, 2, 3})}, - true, - 1e-9, - op::MVNEpsMode::OUTSIDE_SQRT, - reference_tests::Tensor {{1, 3, 3, 3}, - ov::element::f32, - std::vector {-1.5491934, -1.161895, -0.7745967, -0.38729835, 0., 0.38729835, 0.7745967, 1.161895, 1.5491934, - -1.5491934, -1.161895, -0.7745967, -0.38729835, 0., 0.38729835, 0.7745967, 1.161895, 1.5491934, - -1.5491934, -1.161895, -0.7745967, -0.38729835, 0., 0.38729835, 0.7745967, 1.161895, 1.5491934}})), + MVN6Params( + reference_tests::Tensor{{1, 3, 3, 3}, ov::element::f32, std::vector({1, 2, 3, 4, 5, 6, 7, 8, 9, + 1, 2, 3, 4, 5, 6, 7, 8, 9, + 1, 2, 3, 4, 5, 6, 7, 8, 9})}, + reference_tests::Tensor{Shape{3}, ov::element::i64, std::vector({1, 2, 3})}, + true, + 1e-9, + op::MVNEpsMode::OUTSIDE_SQRT, + reference_tests::Tensor{ + {1, 3, 3, 3}, + ov::element::f32, + std::vector{-1.5491934, -1.161895, -0.7745967, -0.38729835, 0., 0.38729835, 0.7745967, + 1.161895, 1.5491934, -1.5491934, -1.161895, -0.7745967, -0.38729835, 0., + 0.38729835, 0.7745967, 1.161895, 1.5491934, -1.5491934, -1.161895, -0.7745967, + -0.38729835, 0., 0.38729835, 0.7745967, 1.161895, 1.5491934}})), ReferenceMVN6LayerTest::getTestCaseName); diff --git a/src/plugins/template/tests/functional/op_reference/negative.cpp b/src/plugins/template/tests/functional/op_reference/negative.cpp index caf94a0fbc0..89cda5cfe3c 100644 --- a/src/plugins/template/tests/functional/op_reference/negative.cpp +++ b/src/plugins/template/tests/functional/op_reference/negative.cpp @@ -2,10 +2,12 @@ // SPDX-License-Identifier: Apache-2.0 // -#include -#include "base_reference_test.hpp" #include "openvino/op/negative.hpp" +#include + +#include "base_reference_test.hpp" + using namespace ov; using namespace reference_tests; @@ -14,9 +16,9 @@ namespace { struct NegativeParams { template NegativeParams(const PartialShape& shape, - const element::Type& iType, - const std::vector& iValues, - const std::vector& oValues) + const element::Type& iType, + const std::vector& iValues, + const std::vector& oValues) : pshape(shape), inType(iType), outType(iType), @@ -50,8 +52,8 @@ public: private: static std::shared_ptr CreateFunction(const PartialShape& input_shape, - const element::Type& input_type, - const element::Type& expected_output_type) { + const element::Type& input_type, + const element::Type& expected_output_type) { const auto in = std::make_shared(input_type, input_shape); const auto negative = std::make_shared(in); return std::make_shared(NodeVector{negative}, ParameterVector{in}); @@ -66,12 +68,10 @@ template std::vector generateParamsForNegativeFloat() { using T = typename element_type_traits::value_type; - std::vector params{ - NegativeParams(ov::PartialShape{6}, - IN_ET, - std::vector{1, -2, 0, -4.75f, 8.75f, -8.75f}, - std::vector{-1, 2, 0, 4.75f, -8.75f, 8.75f}) - }; + std::vector params{NegativeParams(ov::PartialShape{6}, + IN_ET, + std::vector{1, -2, 0, -4.75f, 8.75f, -8.75f}, + std::vector{-1, 2, 0, 4.75f, -8.75f, 8.75f})}; return params; } @@ -79,12 +79,10 @@ template std::vector generateParamsForNegativeInt() { using T = typename element_type_traits::value_type; - std::vector params{ - NegativeParams(ov::PartialShape{10}, - IN_ET, - std::vector{1, 8, -8, 17, -2, 1, 8, -8, 17, -1}, - std::vector{-1, -8, 8, -17, 2, -1, -8, 8, -17, 1}) - }; + std::vector params{NegativeParams(ov::PartialShape{10}, + IN_ET, + std::vector{1, 8, -8, 17, -2, 1, 8, -8, 17, -1}, + std::vector{-1, -8, 8, -17, 2, -1, -8, 8, -17, 1})}; return params; } @@ -94,8 +92,7 @@ std::vector generateCombinedParamsForNegative() { generateParamsForNegativeFloat(), generateParamsForNegativeFloat(), generateParamsForNegativeInt(), - generateParamsForNegativeInt() - }; + generateParamsForNegativeInt()}; std::vector combinedParams; @@ -106,9 +103,8 @@ std::vector generateCombinedParamsForNegative() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P( - smoke_Negative_With_Hardcoded_Refs, - ReferenceNegativeLayerTest, - ::testing::ValuesIn(generateCombinedParamsForNegative()), - ReferenceNegativeLayerTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_Negative_With_Hardcoded_Refs, + ReferenceNegativeLayerTest, + ::testing::ValuesIn(generateCombinedParamsForNegative()), + ReferenceNegativeLayerTest::getTestCaseName); } // namespace diff --git a/src/plugins/template/tests/functional/op_reference/non_max_suppression.cpp b/src/plugins/template/tests/functional/op_reference/non_max_suppression.cpp index 5e309f4e6e9..333ea4cf0d2 100644 --- a/src/plugins/template/tests/functional/op_reference/non_max_suppression.cpp +++ b/src/plugins/template/tests/functional/op_reference/non_max_suppression.cpp @@ -4,11 +4,11 @@ #include -#include "openvino/opsets/opset5.hpp" -#include "openvino/opsets/opset4.hpp" -#include "openvino/opsets/opset3.hpp" -#include "openvino/opsets/opset1.hpp" #include "base_reference_test.hpp" +#include "openvino/opsets/opset1.hpp" +#include "openvino/opsets/opset3.hpp" +#include "openvino/opsets/opset4.hpp" +#include "openvino/opsets/opset5.hpp" using namespace reference_tests; using namespace ov; @@ -42,7 +42,8 @@ struct Builder : ParamsBuilder { REFERENCE_TESTS_ADD_SET_PARAM(Builder, testcaseName); }; -class ReferenceNonMaxSuppressionTest : public testing::TestWithParam, public CommonReferenceTest { +class ReferenceNonMaxSuppressionTest : public testing::TestWithParam, + public CommonReferenceTest { public: void SetUp() override { auto params = GetParam(); @@ -76,14 +77,19 @@ private: static std::shared_ptr CreateFunction(const NonMaxSuppressionParams& params) { const auto boxes = std::make_shared(params.boxes.type, params.boxes.shape); const auto scores = std::make_shared(params.scores.type, params.scores.shape); - const auto max_output_boxes_per_class = std::make_shared( - params.maxOutputBoxesPerClass.type, params.maxOutputBoxesPerClass.shape, params.maxOutputBoxesPerClass.data.data()); - const auto iou_threshold = std::make_shared( - params.iouThreshold.type, params.iouThreshold.shape, params.iouThreshold.data.data()); - const auto score_threshold = std::make_shared( - params.scoreThreshold.type, params.scoreThreshold.shape, params.scoreThreshold.data.data()); - const auto soft_nms_sigma = std::make_shared( - params.softNmsSigma.type, params.softNmsSigma.shape, params.softNmsSigma.data.data()); + const auto max_output_boxes_per_class = + std::make_shared(params.maxOutputBoxesPerClass.type, + params.maxOutputBoxesPerClass.shape, + params.maxOutputBoxesPerClass.data.data()); + const auto iou_threshold = std::make_shared(params.iouThreshold.type, + params.iouThreshold.shape, + params.iouThreshold.data.data()); + const auto score_threshold = std::make_shared(params.scoreThreshold.type, + params.scoreThreshold.shape, + params.scoreThreshold.data.data()); + const auto soft_nms_sigma = std::make_shared(params.softNmsSigma.type, + params.softNmsSigma.shape, + params.softNmsSigma.data.data()); const auto nms = std::make_shared(boxes, scores, max_output_boxes_per_class, @@ -103,8 +109,12 @@ public: void SetUp() override { auto params = GetParam(); function = CreateFunction(params); - inputData = {params.boxes.data, params.scores.data, params.maxOutputBoxesPerClass.data, - params.iouThreshold.data, params.scoreThreshold.data, params.softNmsSigma.data}; + inputData = {params.boxes.data, + params.scores.data, + params.maxOutputBoxesPerClass.data, + params.iouThreshold.data, + params.scoreThreshold.data, + params.softNmsSigma.data}; refOutData = {params.expectedSelectedIndices.data, params.expectedSelectedScores.data, params.expectedValidOutputs.data}; @@ -114,14 +124,15 @@ private: static std::shared_ptr CreateFunction(const NonMaxSuppressionParams& params) { const auto boxes = std::make_shared(params.boxes.type, params.boxes.shape); const auto scores = std::make_shared(params.scores.type, params.scores.shape); - const auto max_output_boxes_per_class = std::make_shared( - params.maxOutputBoxesPerClass.type, params.maxOutputBoxesPerClass.shape); - const auto iou_threshold = std::make_shared( - params.iouThreshold.type, params.iouThreshold.shape); - const auto score_threshold = std::make_shared( - params.scoreThreshold.type, params.scoreThreshold.shape); - const auto soft_nms_sigma = std::make_shared( - params.softNmsSigma.type, params.softNmsSigma.shape); + const auto max_output_boxes_per_class = + std::make_shared(params.maxOutputBoxesPerClass.type, + params.maxOutputBoxesPerClass.shape); + const auto iou_threshold = + std::make_shared(params.iouThreshold.type, params.iouThreshold.shape); + const auto score_threshold = + std::make_shared(params.scoreThreshold.type, params.scoreThreshold.shape); + const auto soft_nms_sigma = + std::make_shared(params.softNmsSigma.type, params.softNmsSigma.shape); const auto nms = std::make_shared(boxes, scores, max_output_boxes_per_class, @@ -131,9 +142,9 @@ private: params.boxEncoding, false, params.expectedSelectedIndices.type); - const auto f = std::make_shared(nms->outputs(), - ParameterVector{boxes, scores, max_output_boxes_per_class, - iou_threshold, score_threshold, soft_nms_sigma}); + const auto f = std::make_shared( + nms->outputs(), + ParameterVector{boxes, scores, max_output_boxes_per_class, iou_threshold, score_threshold, soft_nms_sigma}); return f; } }; @@ -152,268 +163,174 @@ std::vector generateParams() { using T_BOX = typename element_type_traits::value_type; using T_TH = typename element_type_traits::value_type; using T_IND = typename element_type_traits::value_type; - std::vector params { - Builder {} - .boxes( - reference_tests::Tensor(ET, {1, 6, 4}, std::vector{ - 0.5, 0.5, 1.0, 1.0, 0.5, 0.6, 1.0, 1.0, 0.5, 0.4, 1.0, 1.0, - 0.5, 10.5, 1.0, 1.0, 0.5, 10.6, 1.0, 1.0, 0.5, 100.5, 1.0, 1.0})) - .scores( - reference_tests::Tensor(ET, {1, 1, 6}, std::vector{ - 0.9, 0.75, 0.6, 0.95, 0.5, 0.3})) - .maxOutputBoxesPerClass( - reference_tests::Tensor(ET_BOX, {}, std::vector{3})) - .iouThreshold( - reference_tests::Tensor(ET_TH, {}, std::vector{0.5f})) - .scoreThreshold( - reference_tests::Tensor(ET_TH, {}, std::vector{0.0f})) - .softNmsSigma( - reference_tests::Tensor(ET_TH, {}, std::vector{0.0f})) - .boxEncoding( - opset5::NonMaxSuppression::BoxEncodingType::CENTER) - .expectedSelectedIndices( - reference_tests::Tensor(ET_IND, {3, 3}, std::vector{ - 0, 0, 3, 0, 0, 0, 0, 0, 5})) - .expectedSelectedScores( - reference_tests::Tensor(ET_TH, {3, 3}, std::vector{ - 0.0, 0.0, 0.95, 0.0, 0.0, 0.9, 0.0, 0.0, 0.3})) - .expectedValidOutputs( - reference_tests::Tensor(ET_IND, {1}, std::vector{3})) - .testcaseName( - "nonmaxsuppression_center_point_box_format"), + std::vector params{ + Builder{} + .boxes(reference_tests::Tensor(ET, {1, 6, 4}, std::vector{0.5, 0.5, 1.0, 1.0, 0.5, 0.6, 1.0, 1.0, + 0.5, 0.4, 1.0, 1.0, 0.5, 10.5, 1.0, 1.0, + 0.5, 10.6, 1.0, 1.0, 0.5, 100.5, 1.0, 1.0})) + .scores(reference_tests::Tensor(ET, {1, 1, 6}, std::vector{0.9, 0.75, 0.6, 0.95, 0.5, 0.3})) + .maxOutputBoxesPerClass(reference_tests::Tensor(ET_BOX, {}, std::vector{3})) + .iouThreshold(reference_tests::Tensor(ET_TH, {}, std::vector{0.5f})) + .scoreThreshold(reference_tests::Tensor(ET_TH, {}, std::vector{0.0f})) + .softNmsSigma(reference_tests::Tensor(ET_TH, {}, std::vector{0.0f})) + .boxEncoding(opset5::NonMaxSuppression::BoxEncodingType::CENTER) + .expectedSelectedIndices( + reference_tests::Tensor(ET_IND, {3, 3}, std::vector{0, 0, 3, 0, 0, 0, 0, 0, 5})) + .expectedSelectedScores( + reference_tests::Tensor(ET_TH, {3, 3}, std::vector{0.0, 0.0, 0.95, 0.0, 0.0, 0.9, 0.0, 0.0, 0.3})) + .expectedValidOutputs(reference_tests::Tensor(ET_IND, {1}, std::vector{3})) + .testcaseName("nonmaxsuppression_center_point_box_format"), - Builder {} - .boxes( - reference_tests::Tensor(ET, {1, 6, 4}, std::vector{ - 1.0, 1.0, 0.0, 0.0, 0.0, 0.1, 1.0, 1.1, 0.0, 0.9, 1.0, -0.1, - 0.0, 10.0, 1.0, 11.0, 1.0, 10.1, 0.0, 11.1, 1.0, 101.0, 0.0, 100.0})) - .scores( - reference_tests::Tensor(ET, {1, 1, 6}, std::vector{ - 0.9, 0.75, 0.6, 0.95, 0.5, 0.3})) - .maxOutputBoxesPerClass( - reference_tests::Tensor(ET_BOX, {}, std::vector{3})) - .iouThreshold( - reference_tests::Tensor(ET_TH, {}, std::vector{0.5f})) - .scoreThreshold( - reference_tests::Tensor(ET_TH, {}, std::vector{0.0f})) - .softNmsSigma( - reference_tests::Tensor(ET_TH, {}, std::vector{0.0f})) - .boxEncoding( - opset5::NonMaxSuppression::BoxEncodingType::CORNER) - .expectedSelectedIndices( - reference_tests::Tensor(ET_IND, {3, 3}, std::vector{ - 0, 0, 3, 0, 0, 0, 0, 0, 5})) - .expectedSelectedScores( - reference_tests::Tensor(ET_TH, {3, 3}, std::vector{ - 0.0, 0.0, 0.95, 0.0, 0.0, 0.9, 0.0, 0.0, 0.3})) - .expectedValidOutputs( - reference_tests::Tensor(ET_IND, {1}, std::vector{3})) - .testcaseName( - "nonmaxsuppression_flipped_coordinates"), + Builder{} + .boxes(reference_tests::Tensor(ET, {1, 6, 4}, std::vector{1.0, 1.0, 0.0, 0.0, 0.0, 0.1, 1.0, 1.1, + 0.0, 0.9, 1.0, -0.1, 0.0, 10.0, 1.0, 11.0, + 1.0, 10.1, 0.0, 11.1, 1.0, 101.0, 0.0, 100.0})) + .scores(reference_tests::Tensor(ET, {1, 1, 6}, std::vector{0.9, 0.75, 0.6, 0.95, 0.5, 0.3})) + .maxOutputBoxesPerClass(reference_tests::Tensor(ET_BOX, {}, std::vector{3})) + .iouThreshold(reference_tests::Tensor(ET_TH, {}, std::vector{0.5f})) + .scoreThreshold(reference_tests::Tensor(ET_TH, {}, std::vector{0.0f})) + .softNmsSigma(reference_tests::Tensor(ET_TH, {}, std::vector{0.0f})) + .boxEncoding(opset5::NonMaxSuppression::BoxEncodingType::CORNER) + .expectedSelectedIndices( + reference_tests::Tensor(ET_IND, {3, 3}, std::vector{0, 0, 3, 0, 0, 0, 0, 0, 5})) + .expectedSelectedScores( + reference_tests::Tensor(ET_TH, {3, 3}, std::vector{0.0, 0.0, 0.95, 0.0, 0.0, 0.9, 0.0, 0.0, 0.3})) + .expectedValidOutputs(reference_tests::Tensor(ET_IND, {1}, std::vector{3})) + .testcaseName("nonmaxsuppression_flipped_coordinates"), - Builder {} - .boxes( - reference_tests::Tensor(ET, {1, 10, 4}, std::vector{ - 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, - 1.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0, - 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0})) - .scores( - reference_tests::Tensor(ET, {1, 1, 10}, std::vector{ - 0.9, 0.9, 0.9, 0.9, 0.9, 0.9, 0.9, 0.9, 0.9, 0.9})) - .maxOutputBoxesPerClass( - reference_tests::Tensor(ET_BOX, {}, std::vector{3})) - .iouThreshold( - reference_tests::Tensor(ET_TH, {}, std::vector{0.5f})) - .scoreThreshold( - reference_tests::Tensor(ET_TH, {}, std::vector{0.0f})) - .softNmsSigma( - reference_tests::Tensor(ET_TH, {}, std::vector{0.0f})) - .boxEncoding( - opset5::NonMaxSuppression::BoxEncodingType::CORNER) - .expectedSelectedIndices( - reference_tests::Tensor(ET_IND, {1, 3}, std::vector{0, 0, 0})) - .expectedSelectedScores( - reference_tests::Tensor(ET_TH, {1, 3}, std::vector{0.0, 0.0, 0.9})) - .expectedValidOutputs( - reference_tests::Tensor(ET_IND, {1}, std::vector{1})) - .testcaseName( - "nonmaxsuppression_identical_boxes"), + Builder{} + .boxes(reference_tests::Tensor(ET, {1, 10, 4}, std::vector{0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0, + 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0, + 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0, + 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0, + 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0})) + .scores(reference_tests::Tensor(ET, + {1, 1, 10}, + std::vector{0.9, 0.9, 0.9, 0.9, 0.9, 0.9, 0.9, 0.9, 0.9, 0.9})) + .maxOutputBoxesPerClass(reference_tests::Tensor(ET_BOX, {}, std::vector{3})) + .iouThreshold(reference_tests::Tensor(ET_TH, {}, std::vector{0.5f})) + .scoreThreshold(reference_tests::Tensor(ET_TH, {}, std::vector{0.0f})) + .softNmsSigma(reference_tests::Tensor(ET_TH, {}, std::vector{0.0f})) + .boxEncoding(opset5::NonMaxSuppression::BoxEncodingType::CORNER) + .expectedSelectedIndices(reference_tests::Tensor(ET_IND, {1, 3}, std::vector{0, 0, 0})) + .expectedSelectedScores(reference_tests::Tensor(ET_TH, {1, 3}, std::vector{0.0, 0.0, 0.9})) + .expectedValidOutputs(reference_tests::Tensor(ET_IND, {1}, std::vector{1})) + .testcaseName("nonmaxsuppression_identical_boxes"), - Builder {} - .boxes( - reference_tests::Tensor(ET, {1, 6, 4}, std::vector{ - 0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, 0.0, -0.1, 1.0, 0.9, - 0.0, 10.0, 1.0, 11.0, 0.0, 10.1, 1.0, 11.1, 0.0, 100.0, 1.0, 101.0})) - .scores( - reference_tests::Tensor(ET, {1, 1, 6}, std::vector{ - 0.9, 0.75, 0.6, 0.95, 0.5, 0.3})) - .maxOutputBoxesPerClass( - reference_tests::Tensor(ET_BOX, {}, std::vector{2})) - .iouThreshold( - reference_tests::Tensor(ET_TH, {}, std::vector{0.5f})) - .scoreThreshold( - reference_tests::Tensor(ET_TH, {}, std::vector{0.0f})) - .softNmsSigma( - reference_tests::Tensor(ET_TH, {}, std::vector{0.0f})) - .boxEncoding( - opset5::NonMaxSuppression::BoxEncodingType::CORNER) - .expectedSelectedIndices( - reference_tests::Tensor(ET_IND, {2, 3}, std::vector{0, 0, 3, 0, 0, 0})) - .expectedSelectedScores( - reference_tests::Tensor(ET_TH, {2, 3}, std::vector{ - 0.0, 0.0, 0.95, 0.0, 0.0, 0.9})) - .expectedValidOutputs( - reference_tests::Tensor(ET_IND, {1}, std::vector{2})) - .testcaseName( - "nonmaxsuppression_limit_output_size"), + Builder{} + .boxes(reference_tests::Tensor(ET, {1, 6, 4}, std::vector{0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, + 0.0, -0.1, 1.0, 0.9, 0.0, 10.0, 1.0, 11.0, + 0.0, 10.1, 1.0, 11.1, 0.0, 100.0, 1.0, 101.0})) + .scores(reference_tests::Tensor(ET, {1, 1, 6}, std::vector{0.9, 0.75, 0.6, 0.95, 0.5, 0.3})) + .maxOutputBoxesPerClass(reference_tests::Tensor(ET_BOX, {}, std::vector{2})) + .iouThreshold(reference_tests::Tensor(ET_TH, {}, std::vector{0.5f})) + .scoreThreshold(reference_tests::Tensor(ET_TH, {}, std::vector{0.0f})) + .softNmsSigma(reference_tests::Tensor(ET_TH, {}, std::vector{0.0f})) + .boxEncoding(opset5::NonMaxSuppression::BoxEncodingType::CORNER) + .expectedSelectedIndices(reference_tests::Tensor(ET_IND, {2, 3}, std::vector{0, 0, 3, 0, 0, 0})) + .expectedSelectedScores( + reference_tests::Tensor(ET_TH, {2, 3}, std::vector{0.0, 0.0, 0.95, 0.0, 0.0, 0.9})) + .expectedValidOutputs(reference_tests::Tensor(ET_IND, {1}, std::vector{2})) + .testcaseName("nonmaxsuppression_limit_output_size"), - Builder {} - .boxes( - reference_tests::Tensor(ET, {1, 1, 4}, std::vector{0.0, 0.0, 1.0, 1.0})) - .scores( - reference_tests::Tensor(ET, {1, 1, 1}, std::vector{0.9})) - .maxOutputBoxesPerClass( - reference_tests::Tensor(ET_BOX, {}, std::vector{3})) - .iouThreshold( - reference_tests::Tensor(ET_TH, {}, std::vector{0.5f})) - .scoreThreshold( - reference_tests::Tensor(ET_TH, {}, std::vector{0.0f})) - .softNmsSigma( - reference_tests::Tensor(ET_TH, {}, std::vector{0.0f})) - .boxEncoding( - opset5::NonMaxSuppression::BoxEncodingType::CORNER) - .expectedSelectedIndices( - reference_tests::Tensor(ET_IND, {1, 3}, std::vector{0, 0, 0})) - .expectedSelectedScores( - reference_tests::Tensor(ET_TH, {1, 3}, std::vector{0.0, 0.0, 0.9})) - .expectedValidOutputs( - reference_tests::Tensor(ET_IND, {1}, std::vector{1})) - .testcaseName( - "nonmaxsuppression_single_box"), + Builder{} + .boxes(reference_tests::Tensor(ET, {1, 1, 4}, std::vector{0.0, 0.0, 1.0, 1.0})) + .scores(reference_tests::Tensor(ET, {1, 1, 1}, std::vector{0.9})) + .maxOutputBoxesPerClass(reference_tests::Tensor(ET_BOX, {}, std::vector{3})) + .iouThreshold(reference_tests::Tensor(ET_TH, {}, std::vector{0.5f})) + .scoreThreshold(reference_tests::Tensor(ET_TH, {}, std::vector{0.0f})) + .softNmsSigma(reference_tests::Tensor(ET_TH, {}, std::vector{0.0f})) + .boxEncoding(opset5::NonMaxSuppression::BoxEncodingType::CORNER) + .expectedSelectedIndices(reference_tests::Tensor(ET_IND, {1, 3}, std::vector{0, 0, 0})) + .expectedSelectedScores(reference_tests::Tensor(ET_TH, {1, 3}, std::vector{0.0, 0.0, 0.9})) + .expectedValidOutputs(reference_tests::Tensor(ET_IND, {1}, std::vector{1})) + .testcaseName("nonmaxsuppression_single_box"), - Builder {} - .boxes( - reference_tests::Tensor(ET, {1, 6, 4}, std::vector{ - 0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, 0.0, -0.1, 1.0, 0.9, - 0.0, 10.0, 1.0, 11.0, 0.0, 10.1, 1.0, 11.1, 0.0, 100.0, 1.0, 101.0})) - .scores( - reference_tests::Tensor(ET, {1, 1, 6}, std::vector{ - 0.9, 0.75, 0.6, 0.95, 0.5, 0.3})) - .maxOutputBoxesPerClass( - reference_tests::Tensor(ET_BOX, {}, std::vector{3})) - .iouThreshold( - reference_tests::Tensor(ET_TH, {}, std::vector{0.5f})) - .scoreThreshold( - reference_tests::Tensor(ET_TH, {}, std::vector{0.0f})) - .softNmsSigma( - reference_tests::Tensor(ET_TH, {}, std::vector{0.0f})) - .boxEncoding( - opset5::NonMaxSuppression::BoxEncodingType::CORNER) - .expectedSelectedIndices( - reference_tests::Tensor(ET_IND, {3, 3}, std::vector{ - 0, 0, 3, 0, 0, 0, 0, 0, 5})) - .expectedSelectedScores( - reference_tests::Tensor(ET_TH, {3, 3}, std::vector{ - 0.0, 0.0, 0.95, 0.0, 0.0, 0.9, 0.0, 0.0, 0.3})) - .expectedValidOutputs( - reference_tests::Tensor(ET_IND, {1}, std::vector{3})) - .testcaseName( - "nonmaxsuppression_suppress_by_IOU"), + Builder{} + .boxes(reference_tests::Tensor(ET, {1, 6, 4}, std::vector{0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, + 0.0, -0.1, 1.0, 0.9, 0.0, 10.0, 1.0, 11.0, + 0.0, 10.1, 1.0, 11.1, 0.0, 100.0, 1.0, 101.0})) + .scores(reference_tests::Tensor(ET, {1, 1, 6}, std::vector{0.9, 0.75, 0.6, 0.95, 0.5, 0.3})) + .maxOutputBoxesPerClass(reference_tests::Tensor(ET_BOX, {}, std::vector{3})) + .iouThreshold(reference_tests::Tensor(ET_TH, {}, std::vector{0.5f})) + .scoreThreshold(reference_tests::Tensor(ET_TH, {}, std::vector{0.0f})) + .softNmsSigma(reference_tests::Tensor(ET_TH, {}, std::vector{0.0f})) + .boxEncoding(opset5::NonMaxSuppression::BoxEncodingType::CORNER) + .expectedSelectedIndices( + reference_tests::Tensor(ET_IND, {3, 3}, std::vector{0, 0, 3, 0, 0, 0, 0, 0, 5})) + .expectedSelectedScores( + reference_tests::Tensor(ET_TH, {3, 3}, std::vector{0.0, 0.0, 0.95, 0.0, 0.0, 0.9, 0.0, 0.0, 0.3})) + .expectedValidOutputs(reference_tests::Tensor(ET_IND, {1}, std::vector{3})) + .testcaseName("nonmaxsuppression_suppress_by_IOU"), - Builder {} - .boxes( - reference_tests::Tensor(ET, {1, 6, 4}, std::vector{ - 0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, 0.0, -0.1, 1.0, 0.9, - 0.0, 10.0, 1.0, 11.0, 0.0, 10.1, 1.0, 11.1, 0.0, 100.0, 1.0, 101.0})) - .scores( - reference_tests::Tensor(ET, {1, 1, 6}, std::vector{ - 0.9, 0.75, 0.6, 0.95, 0.5, 0.3})) - .maxOutputBoxesPerClass( - reference_tests::Tensor(ET_BOX, {}, std::vector{3})) - .iouThreshold( - reference_tests::Tensor(ET_TH, {}, std::vector{0.5f})) - .scoreThreshold( - reference_tests::Tensor(ET_TH, {}, std::vector{0.4f})) - .softNmsSigma( - reference_tests::Tensor(ET_TH, {}, std::vector{0.0f})) - .boxEncoding( - opset5::NonMaxSuppression::BoxEncodingType::CORNER) - .expectedSelectedIndices( - reference_tests::Tensor(ET_IND, {2, 3}, std::vector{ - 0, 0, 3, 0, 0, 0})) - .expectedSelectedScores( - reference_tests::Tensor(ET_TH, {2, 3}, std::vector{ - 0.0, 0.0, 0.95, 0.0, 0.0, 0.9})) - .expectedValidOutputs( - reference_tests::Tensor(ET_IND, {1}, std::vector{2})) - .testcaseName( - "nonmaxsuppression_suppress_by_IOU_and_scores"), + Builder{} + .boxes(reference_tests::Tensor(ET, {1, 6, 4}, std::vector{0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, + 0.0, -0.1, 1.0, 0.9, 0.0, 10.0, 1.0, 11.0, + 0.0, 10.1, 1.0, 11.1, 0.0, 100.0, 1.0, 101.0})) + .scores(reference_tests::Tensor(ET, {1, 1, 6}, std::vector{0.9, 0.75, 0.6, 0.95, 0.5, 0.3})) + .maxOutputBoxesPerClass(reference_tests::Tensor(ET_BOX, {}, std::vector{3})) + .iouThreshold(reference_tests::Tensor(ET_TH, {}, std::vector{0.5f})) + .scoreThreshold(reference_tests::Tensor(ET_TH, {}, std::vector{0.4f})) + .softNmsSigma(reference_tests::Tensor(ET_TH, {}, std::vector{0.0f})) + .boxEncoding(opset5::NonMaxSuppression::BoxEncodingType::CORNER) + .expectedSelectedIndices(reference_tests::Tensor(ET_IND, {2, 3}, std::vector{0, 0, 3, 0, 0, 0})) + .expectedSelectedScores( + reference_tests::Tensor(ET_TH, {2, 3}, std::vector{0.0, 0.0, 0.95, 0.0, 0.0, 0.9})) + .expectedValidOutputs(reference_tests::Tensor(ET_IND, {1}, std::vector{2})) + .testcaseName("nonmaxsuppression_suppress_by_IOU_and_scores"), - Builder {} - .boxes( - reference_tests::Tensor(ET, {2, 6, 4}, std::vector{ - 0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, 0.0, -0.1, 1.0, 0.9, - 0.0, 10.0, 1.0, 11.0, 0.0, 10.1, 1.0, 11.1, 0.0, 100.0, 1.0, 101.0, - 0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, 0.0, -0.1, 1.0, 0.9, - 0.0, 10.0, 1.0, 11.0, 0.0, 10.1, 1.0, 11.1, 0.0, 100.0, 1.0, 101.0})) - .scores( - reference_tests::Tensor(ET, {2, 1, 6}, std::vector{ - 0.9, 0.75, 0.6, 0.95, 0.5, 0.3, 0.9, 0.75, 0.6, 0.95, 0.5, 0.3})) - .maxOutputBoxesPerClass( - reference_tests::Tensor(ET_BOX, {}, std::vector{2})) - .iouThreshold( - reference_tests::Tensor(ET_TH, {}, std::vector{0.5f})) - .scoreThreshold( - reference_tests::Tensor(ET_TH, {}, std::vector{0.0f})) - .softNmsSigma( - reference_tests::Tensor(ET_TH, {}, std::vector{0.0f})) - .boxEncoding( - opset5::NonMaxSuppression::BoxEncodingType::CORNER) - .expectedSelectedIndices( - reference_tests::Tensor(ET_IND, {4, 3}, std::vector{ - 0, 0, 3, 0, 0, 0, 1, 0, 3, 1, 0, 0})) - .expectedSelectedScores( - reference_tests::Tensor(ET_TH, {4, 3}, std::vector{ - 0.0, 0.0, 0.95, 0.0, 0.0, 0.9, 1.0, 0.0, 0.95, 1.0, 0.0, 0.9})) - .expectedValidOutputs( - reference_tests::Tensor(ET_IND, {1}, std::vector{4})) - .testcaseName( - "nonmaxsuppression_two_batches"), + Builder{} + .boxes(reference_tests::Tensor(ET, {2, 6, 4}, std::vector{0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, + 0.0, -0.1, 1.0, 0.9, 0.0, 10.0, 1.0, 11.0, + 0.0, 10.1, 1.0, 11.1, 0.0, 100.0, 1.0, 101.0, + 0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, + 0.0, -0.1, 1.0, 0.9, 0.0, 10.0, 1.0, 11.0, + 0.0, 10.1, 1.0, 11.1, 0.0, 100.0, 1.0, 101.0})) + .scores( + reference_tests::Tensor(ET, + {2, 1, 6}, + std::vector{0.9, 0.75, 0.6, 0.95, 0.5, 0.3, 0.9, 0.75, 0.6, 0.95, 0.5, 0.3})) + .maxOutputBoxesPerClass(reference_tests::Tensor(ET_BOX, {}, std::vector{2})) + .iouThreshold(reference_tests::Tensor(ET_TH, {}, std::vector{0.5f})) + .scoreThreshold(reference_tests::Tensor(ET_TH, {}, std::vector{0.0f})) + .softNmsSigma(reference_tests::Tensor(ET_TH, {}, std::vector{0.0f})) + .boxEncoding(opset5::NonMaxSuppression::BoxEncodingType::CORNER) + .expectedSelectedIndices( + reference_tests::Tensor(ET_IND, {4, 3}, std::vector{0, 0, 3, 0, 0, 0, 1, 0, 3, 1, 0, 0})) + .expectedSelectedScores(reference_tests::Tensor( + ET_TH, + {4, 3}, + std::vector{0.0, 0.0, 0.95, 0.0, 0.0, 0.9, 1.0, 0.0, 0.95, 1.0, 0.0, 0.9})) + .expectedValidOutputs(reference_tests::Tensor(ET_IND, {1}, std::vector{4})) + .testcaseName("nonmaxsuppression_two_batches"), - Builder {} - .boxes( - reference_tests::Tensor(ET, {1, 6, 4}, std::vector{ - 0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, 0.0, -0.1, 1.0, 0.9, - 0.0, 10.0, 1.0, 11.0, 0.0, 10.1, 1.0, 11.1, 0.0, 100.0, 1.0, 101.0})) - .scores( - reference_tests::Tensor(ET, {1, 2, 6}, std::vector{ - 0.9, 0.75, 0.6, 0.95, 0.5, 0.3, 0.9, 0.75, 0.6, 0.95, 0.5, 0.3})) - .maxOutputBoxesPerClass( - reference_tests::Tensor(ET_BOX, {}, std::vector{2})) - .iouThreshold( - reference_tests::Tensor(ET_TH, {}, std::vector{0.5f})) - .scoreThreshold( - reference_tests::Tensor(ET_TH, {}, std::vector{0.0f})) - .softNmsSigma( - reference_tests::Tensor(ET_TH, {}, std::vector{0.0f})) - .boxEncoding( - opset5::NonMaxSuppression::BoxEncodingType::CORNER) - .expectedSelectedIndices( - reference_tests::Tensor(ET_IND, {4, 3}, std::vector{ - 0, 0, 3, 0, 0, 0, 0, 1, 3, 0, 1, 0})) - .expectedSelectedScores( - reference_tests::Tensor(ET_TH, {4, 3}, std::vector{ - 0.0, 0.0, 0.95, 0.0, 0.0, 0.9, 0.0, 1.0, 0.95, 0.0, 1.0, 0.9})) - .expectedValidOutputs( - reference_tests::Tensor(ET_IND, {1}, std::vector{4})) - .testcaseName( - "nonmaxsuppression_two_classes"), + Builder{} + .boxes(reference_tests::Tensor(ET, {1, 6, 4}, std::vector{0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, + 0.0, -0.1, 1.0, 0.9, 0.0, 10.0, 1.0, 11.0, + 0.0, 10.1, 1.0, 11.1, 0.0, 100.0, 1.0, 101.0})) + .scores( + reference_tests::Tensor(ET, + {1, 2, 6}, + std::vector{0.9, 0.75, 0.6, 0.95, 0.5, 0.3, 0.9, 0.75, 0.6, 0.95, 0.5, 0.3})) + .maxOutputBoxesPerClass(reference_tests::Tensor(ET_BOX, {}, std::vector{2})) + .iouThreshold(reference_tests::Tensor(ET_TH, {}, std::vector{0.5f})) + .scoreThreshold(reference_tests::Tensor(ET_TH, {}, std::vector{0.0f})) + .softNmsSigma(reference_tests::Tensor(ET_TH, {}, std::vector{0.0f})) + .boxEncoding(opset5::NonMaxSuppression::BoxEncodingType::CORNER) + .expectedSelectedIndices( + reference_tests::Tensor(ET_IND, {4, 3}, std::vector{0, 0, 3, 0, 0, 0, 0, 1, 3, 0, 1, 0})) + .expectedSelectedScores(reference_tests::Tensor( + ET_TH, + {4, 3}, + std::vector{0.0, 0.0, 0.95, 0.0, 0.0, 0.9, 0.0, 1.0, 0.95, 0.0, 1.0, 0.9})) + .expectedValidOutputs(reference_tests::Tensor(ET_IND, {1}, std::vector{4})) + .testcaseName("nonmaxsuppression_two_classes"), }; return params; } std::vector generateCombinedParams() { - const std::vector> generatedParams { + const std::vector> generatedParams{ generateParams(), generateParams(), generateParams(), @@ -435,45 +352,52 @@ std::vector generateParamsWithoutConstants() { using T_BOX = typename element_type_traits::value_type; using T_TH = typename element_type_traits::value_type; using T_IND = typename element_type_traits::value_type; - std::vector params { - Builder {} - .boxes( - reference_tests::Tensor(ET, {1, 6, 4}, std::vector{ - 0.0f, 0.0f, 1.0f, 1.0f, 0.0f, 0.1f, 1.0f, 1.1f, 0.0f, -0.1f, 1.0f, 0.9f, - 0.0f, 10.0f, 1.0f, 11.0f, 0.0f, 10.1f, 1.0f, 11.1f, 0.0f, 100.0f, 1.0f, 101.0f})) - .scores( - reference_tests::Tensor(ET, {1, 1, 6}, std::vector{ - 0.9f, 0.75f, 0.6f, 0.95f, 0.5f, 0.3f})) - .maxOutputBoxesPerClass( - reference_tests::Tensor(ET_BOX, {1}, std::vector{1})) - .iouThreshold( - reference_tests::Tensor(ET_TH, {1}, std::vector{0.4f})) - .scoreThreshold( - reference_tests::Tensor(ET_TH, {1}, std::vector{0.2f})) - .softNmsSigma( - reference_tests::Tensor(ET_TH, {1}, std::vector{0.0f})) - .boxEncoding( - opset5::NonMaxSuppression::BoxEncodingType::CORNER) - .expectedSelectedIndices( - reference_tests::Tensor(ET_IND, {1, 3}, std::vector{0, 0, 3})) - .expectedSelectedScores( - reference_tests::Tensor(ET_TH, {1, 3}, std::vector{0.0f, 0.0f, 0.95f})) - .expectedValidOutputs( - reference_tests::Tensor(ET_IND, {1}, std::vector{1})) - .testcaseName( - "nonmaxsuppression_suppress_by_IOU_and_scores_without_constants"), + std::vector params{ + Builder{} + .boxes(reference_tests::Tensor(ET, {1, 6, 4}, std::vector{0.0f, 0.0f, 1.0f, 1.0f, 0.0f, 0.1f, + 1.0f, 1.1f, 0.0f, -0.1f, 1.0f, 0.9f, + 0.0f, 10.0f, 1.0f, 11.0f, 0.0f, 10.1f, + 1.0f, 11.1f, 0.0f, 100.0f, 1.0f, 101.0f})) + .scores(reference_tests::Tensor(ET, {1, 1, 6}, std::vector{0.9f, 0.75f, 0.6f, 0.95f, 0.5f, 0.3f})) + .maxOutputBoxesPerClass(reference_tests::Tensor(ET_BOX, {1}, std::vector{1})) + .iouThreshold(reference_tests::Tensor(ET_TH, {1}, std::vector{0.4f})) + .scoreThreshold(reference_tests::Tensor(ET_TH, {1}, std::vector{0.2f})) + .softNmsSigma(reference_tests::Tensor(ET_TH, {1}, std::vector{0.0f})) + .boxEncoding(opset5::NonMaxSuppression::BoxEncodingType::CORNER) + .expectedSelectedIndices(reference_tests::Tensor(ET_IND, {1, 3}, std::vector{0, 0, 3})) + .expectedSelectedScores(reference_tests::Tensor(ET_TH, {1, 3}, std::vector{0.0f, 0.0f, 0.95f})) + .expectedValidOutputs(reference_tests::Tensor(ET_IND, {1}, std::vector{1})) + .testcaseName("nonmaxsuppression_suppress_by_IOU_and_scores_without_constants"), }; return params; } std::vector generateCombinedParamsWithoutConstants() { - const std::vector> generatedParams { - generateParamsWithoutConstants(), - generateParamsWithoutConstants(), - generateParamsWithoutConstants(), - generateParamsWithoutConstants(), - generateParamsWithoutConstants(), - generateParamsWithoutConstants(), + const std::vector> generatedParams{ + generateParamsWithoutConstants(), + generateParamsWithoutConstants(), + generateParamsWithoutConstants(), + generateParamsWithoutConstants(), + generateParamsWithoutConstants(), + generateParamsWithoutConstants(), }; std::vector combinedParams; @@ -483,11 +407,14 @@ std::vector generateCombinedParamsWithoutConstants() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_NonMaxSuppression_With_Hardcoded_Refs, ReferenceNonMaxSuppressionTest, - testing::ValuesIn(generateCombinedParams()), ReferenceNonMaxSuppressionTest::getTestCaseName); -INSTANTIATE_TEST_SUITE_P(smoke_NonMaxSuppression_With_Hardcoded_Refs, ReferenceNonMaxSuppressionTestWithoutConstants, - testing::ValuesIn(generateCombinedParamsWithoutConstants()), ReferenceNonMaxSuppressionTestWithoutConstants::getTestCaseName); - +INSTANTIATE_TEST_SUITE_P(smoke_NonMaxSuppression_With_Hardcoded_Refs, + ReferenceNonMaxSuppressionTest, + testing::ValuesIn(generateCombinedParams()), + ReferenceNonMaxSuppressionTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_NonMaxSuppression_With_Hardcoded_Refs, + ReferenceNonMaxSuppressionTestWithoutConstants, + testing::ValuesIn(generateCombinedParamsWithoutConstants()), + ReferenceNonMaxSuppressionTestWithoutConstants::getTestCaseName); struct NonMaxSuppression4Params { reference_tests::Tensor boxes; @@ -511,7 +438,8 @@ struct Builder4 : ParamsBuilder { REFERENCE_TESTS_ADD_SET_PARAM(Builder4, testcaseName); }; -class ReferenceNonMaxSuppression4Test : public testing::TestWithParam, public CommonReferenceTest { +class ReferenceNonMaxSuppression4Test : public testing::TestWithParam, + public CommonReferenceTest { public: void SetUp() override { auto params = GetParam(); @@ -539,12 +467,16 @@ private: static std::shared_ptr CreateFunction(const NonMaxSuppression4Params& params) { const auto boxes = std::make_shared(params.boxes.type, params.boxes.shape); const auto scores = std::make_shared(params.scores.type, params.scores.shape); - const auto max_output_boxes_per_class = std::make_shared( - params.maxOutputBoxesPerClass.type, params.maxOutputBoxesPerClass.shape, params.maxOutputBoxesPerClass.data.data()); - const auto iou_threshold = std::make_shared( - params.iouThreshold.type, params.iouThreshold.shape, params.iouThreshold.data.data()); - const auto score_threshold = std::make_shared( - params.scoreThreshold.type, params.scoreThreshold.shape, params.scoreThreshold.data.data()); + const auto max_output_boxes_per_class = + std::make_shared(params.maxOutputBoxesPerClass.type, + params.maxOutputBoxesPerClass.shape, + params.maxOutputBoxesPerClass.data.data()); + const auto iou_threshold = std::make_shared(params.iouThreshold.type, + params.iouThreshold.shape, + params.iouThreshold.data.data()); + const auto score_threshold = std::make_shared(params.scoreThreshold.type, + params.scoreThreshold.shape, + params.scoreThreshold.data.data()); const auto nms = std::make_shared(boxes, scores, max_output_boxes_per_class, @@ -563,8 +495,11 @@ public: void SetUp() override { auto params = GetParam(); function = CreateFunction(params); - inputData = {params.boxes.data, params.scores.data, params.maxOutputBoxesPerClass.data, - params.iouThreshold.data, params.scoreThreshold.data}; + inputData = {params.boxes.data, + params.scores.data, + params.maxOutputBoxesPerClass.data, + params.iouThreshold.data, + params.scoreThreshold.data}; refOutData = {params.expectedSelectedIndices.data}; } @@ -572,12 +507,13 @@ private: static std::shared_ptr CreateFunction(const NonMaxSuppression4Params& params) { const auto boxes = std::make_shared(params.boxes.type, params.boxes.shape); const auto scores = std::make_shared(params.scores.type, params.scores.shape); - const auto max_output_boxes_per_class = std::make_shared( - params.maxOutputBoxesPerClass.type, params.maxOutputBoxesPerClass.shape); - const auto iou_threshold = std::make_shared( - params.iouThreshold.type, params.iouThreshold.shape); - const auto score_threshold = std::make_shared( - params.scoreThreshold.type, params.scoreThreshold.shape); + const auto max_output_boxes_per_class = + std::make_shared(params.maxOutputBoxesPerClass.type, + params.maxOutputBoxesPerClass.shape); + const auto iou_threshold = + std::make_shared(params.iouThreshold.type, params.iouThreshold.shape); + const auto score_threshold = + std::make_shared(params.scoreThreshold.type, params.scoreThreshold.shape); const auto nms = std::make_shared(boxes, scores, max_output_boxes_per_class, @@ -586,9 +522,9 @@ private: params.boxEncoding, false, params.expectedSelectedIndices.type); - const auto f = std::make_shared(nms->outputs(), - ParameterVector{boxes, scores, max_output_boxes_per_class, - iou_threshold, score_threshold}); + const auto f = std::make_shared( + nms->outputs(), + ParameterVector{boxes, scores, max_output_boxes_per_class, iou_threshold, score_threshold}); return f; } }; @@ -607,207 +543,136 @@ std::vector generateParams4() { using T_BOX = typename element_type_traits::value_type; using T_TH = typename element_type_traits::value_type; using T_IND = typename element_type_traits::value_type; - std::vector params { - Builder4 {} - .boxes( - reference_tests::Tensor(ET, {1, 6, 4}, std::vector{ - 0.5, 0.5, 1.0, 1.0, 0.5, 0.6, 1.0, 1.0, 0.5, 0.4, 1.0, 1.0, - 0.5, 10.5, 1.0, 1.0, 0.5, 10.6, 1.0, 1.0, 0.5, 100.5, 1.0, 1.0})) - .scores( - reference_tests::Tensor(ET, {1, 1, 6}, std::vector{ - 0.9, 0.75, 0.6, 0.95, 0.5, 0.3})) - .maxOutputBoxesPerClass( - reference_tests::Tensor(ET_BOX, {}, std::vector{3})) - .iouThreshold( - reference_tests::Tensor(ET_TH, {}, std::vector{0.5f})) - .scoreThreshold( - reference_tests::Tensor(ET_TH, {}, std::vector{0.0f})) - .boxEncoding( - opset4::NonMaxSuppression::BoxEncodingType::CENTER) - .expectedSelectedIndices( - reference_tests::Tensor(ET_IND, {3, 3}, std::vector{ - 0, 0, 3, 0, 0, 0, 0, 0, 5})) - .testcaseName( - "nonmaxsuppression_center_point_box_format"), + std::vector params{ + Builder4{} + .boxes(reference_tests::Tensor(ET, {1, 6, 4}, std::vector{0.5, 0.5, 1.0, 1.0, 0.5, 0.6, 1.0, 1.0, + 0.5, 0.4, 1.0, 1.0, 0.5, 10.5, 1.0, 1.0, + 0.5, 10.6, 1.0, 1.0, 0.5, 100.5, 1.0, 1.0})) + .scores(reference_tests::Tensor(ET, {1, 1, 6}, std::vector{0.9, 0.75, 0.6, 0.95, 0.5, 0.3})) + .maxOutputBoxesPerClass(reference_tests::Tensor(ET_BOX, {}, std::vector{3})) + .iouThreshold(reference_tests::Tensor(ET_TH, {}, std::vector{0.5f})) + .scoreThreshold(reference_tests::Tensor(ET_TH, {}, std::vector{0.0f})) + .boxEncoding(opset4::NonMaxSuppression::BoxEncodingType::CENTER) + .expectedSelectedIndices( + reference_tests::Tensor(ET_IND, {3, 3}, std::vector{0, 0, 3, 0, 0, 0, 0, 0, 5})) + .testcaseName("nonmaxsuppression_center_point_box_format"), - Builder4 {} - .boxes( - reference_tests::Tensor(ET, {1, 6, 4}, std::vector{ - 1.0, 1.0, 0.0, 0.0, 0.0, 0.1, 1.0, 1.1, 0.0, 0.9, 1.0, -0.1, - 0.0, 10.0, 1.0, 11.0, 1.0, 10.1, 0.0, 11.1, 1.0, 101.0, 0.0, 100.0})) - .scores( - reference_tests::Tensor(ET, {1, 1, 6}, std::vector{ - 0.9, 0.75, 0.6, 0.95, 0.5, 0.3})) - .maxOutputBoxesPerClass( - reference_tests::Tensor(ET_BOX, {}, std::vector{3})) - .iouThreshold( - reference_tests::Tensor(ET_TH, {}, std::vector{0.5f})) - .scoreThreshold( - reference_tests::Tensor(ET_TH, {}, std::vector{0.0f})) - .boxEncoding( - opset4::NonMaxSuppression::BoxEncodingType::CORNER) - .expectedSelectedIndices( - reference_tests::Tensor(ET_IND, {3, 3}, std::vector{ - 0, 0, 3, 0, 0, 0, 0, 0, 5})) - .testcaseName( - "nonmaxsuppression_flipped_coordinates"), + Builder4{} + .boxes(reference_tests::Tensor(ET, {1, 6, 4}, std::vector{1.0, 1.0, 0.0, 0.0, 0.0, 0.1, 1.0, 1.1, + 0.0, 0.9, 1.0, -0.1, 0.0, 10.0, 1.0, 11.0, + 1.0, 10.1, 0.0, 11.1, 1.0, 101.0, 0.0, 100.0})) + .scores(reference_tests::Tensor(ET, {1, 1, 6}, std::vector{0.9, 0.75, 0.6, 0.95, 0.5, 0.3})) + .maxOutputBoxesPerClass(reference_tests::Tensor(ET_BOX, {}, std::vector{3})) + .iouThreshold(reference_tests::Tensor(ET_TH, {}, std::vector{0.5f})) + .scoreThreshold(reference_tests::Tensor(ET_TH, {}, std::vector{0.0f})) + .boxEncoding(opset4::NonMaxSuppression::BoxEncodingType::CORNER) + .expectedSelectedIndices( + reference_tests::Tensor(ET_IND, {3, 3}, std::vector{0, 0, 3, 0, 0, 0, 0, 0, 5})) + .testcaseName("nonmaxsuppression_flipped_coordinates"), - Builder4 {} - .boxes( - reference_tests::Tensor(ET, {1, 10, 4}, std::vector{ - 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, - 1.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0, - 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0})) - .scores( - reference_tests::Tensor(ET, {1, 1, 10}, std::vector{ - 0.9, 0.9, 0.9, 0.9, 0.9, 0.9, 0.9, 0.9, 0.9, 0.9})) - .maxOutputBoxesPerClass( - reference_tests::Tensor(ET_BOX, {}, std::vector{1})) - .iouThreshold( - reference_tests::Tensor(ET_TH, {}, std::vector{0.5f})) - .scoreThreshold( - reference_tests::Tensor(ET_TH, {}, std::vector{0.0f})) - .boxEncoding( - opset4::NonMaxSuppression::BoxEncodingType::CORNER) - .expectedSelectedIndices( - reference_tests::Tensor(ET_IND, {1, 3}, std::vector{0, 0, 0})) - .testcaseName( - "nonmaxsuppression_identical_boxes"), + Builder4{} + .boxes(reference_tests::Tensor(ET, {1, 10, 4}, std::vector{0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0, + 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0, + 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0, + 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0, + 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0})) + .scores(reference_tests::Tensor(ET, + {1, 1, 10}, + std::vector{0.9, 0.9, 0.9, 0.9, 0.9, 0.9, 0.9, 0.9, 0.9, 0.9})) + .maxOutputBoxesPerClass(reference_tests::Tensor(ET_BOX, {}, std::vector{1})) + .iouThreshold(reference_tests::Tensor(ET_TH, {}, std::vector{0.5f})) + .scoreThreshold(reference_tests::Tensor(ET_TH, {}, std::vector{0.0f})) + .boxEncoding(opset4::NonMaxSuppression::BoxEncodingType::CORNER) + .expectedSelectedIndices(reference_tests::Tensor(ET_IND, {1, 3}, std::vector{0, 0, 0})) + .testcaseName("nonmaxsuppression_identical_boxes"), - Builder4 {} - .boxes( - reference_tests::Tensor(ET, {1, 6, 4}, std::vector{ - 0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, 0.0, -0.1, 1.0, 0.9, - 0.0, 10.0, 1.0, 11.0, 0.0, 10.1, 1.0, 11.1, 0.0, 100.0, 1.0, 101.0})) - .scores( - reference_tests::Tensor(ET, {1, 1, 6}, std::vector{ - 0.9, 0.75, 0.6, 0.95, 0.5, 0.3})) - .maxOutputBoxesPerClass( - reference_tests::Tensor(ET_BOX, {}, std::vector{2})) - .iouThreshold( - reference_tests::Tensor(ET_TH, {}, std::vector{0.5f})) - .scoreThreshold( - reference_tests::Tensor(ET_TH, {}, std::vector{0.0f})) - .boxEncoding( - opset4::NonMaxSuppression::BoxEncodingType::CORNER) - .expectedSelectedIndices( - reference_tests::Tensor(ET_IND, {2, 3}, std::vector{0, 0, 3, 0, 0, 0})) - .testcaseName( - "nonmaxsuppression_limit_output_size"), + Builder4{} + .boxes(reference_tests::Tensor(ET, {1, 6, 4}, std::vector{0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, + 0.0, -0.1, 1.0, 0.9, 0.0, 10.0, 1.0, 11.0, + 0.0, 10.1, 1.0, 11.1, 0.0, 100.0, 1.0, 101.0})) + .scores(reference_tests::Tensor(ET, {1, 1, 6}, std::vector{0.9, 0.75, 0.6, 0.95, 0.5, 0.3})) + .maxOutputBoxesPerClass(reference_tests::Tensor(ET_BOX, {}, std::vector{2})) + .iouThreshold(reference_tests::Tensor(ET_TH, {}, std::vector{0.5f})) + .scoreThreshold(reference_tests::Tensor(ET_TH, {}, std::vector{0.0f})) + .boxEncoding(opset4::NonMaxSuppression::BoxEncodingType::CORNER) + .expectedSelectedIndices(reference_tests::Tensor(ET_IND, {2, 3}, std::vector{0, 0, 3, 0, 0, 0})) + .testcaseName("nonmaxsuppression_limit_output_size"), - Builder4 {} - .boxes( - reference_tests::Tensor(ET, {1, 1, 4}, std::vector{0.0, 0.0, 1.0, 1.0})) - .scores( - reference_tests::Tensor(ET, {1, 1, 1}, std::vector{0.9})) - .maxOutputBoxesPerClass( - reference_tests::Tensor(ET_BOX, {}, std::vector{3})) - .iouThreshold( - reference_tests::Tensor(ET_TH, {}, std::vector{0.5f})) - .scoreThreshold( - reference_tests::Tensor(ET_TH, {}, std::vector{0.0f})) - .boxEncoding( - opset4::NonMaxSuppression::BoxEncodingType::CORNER) - .expectedSelectedIndices( - reference_tests::Tensor(ET_IND, {1, 3}, std::vector{0, 0, 0})) - .testcaseName( - "nonmaxsuppression_single_box"), + Builder4{} + .boxes(reference_tests::Tensor(ET, {1, 1, 4}, std::vector{0.0, 0.0, 1.0, 1.0})) + .scores(reference_tests::Tensor(ET, {1, 1, 1}, std::vector{0.9})) + .maxOutputBoxesPerClass(reference_tests::Tensor(ET_BOX, {}, std::vector{3})) + .iouThreshold(reference_tests::Tensor(ET_TH, {}, std::vector{0.5f})) + .scoreThreshold(reference_tests::Tensor(ET_TH, {}, std::vector{0.0f})) + .boxEncoding(opset4::NonMaxSuppression::BoxEncodingType::CORNER) + .expectedSelectedIndices(reference_tests::Tensor(ET_IND, {1, 3}, std::vector{0, 0, 0})) + .testcaseName("nonmaxsuppression_single_box"), - Builder4 {} - .boxes( - reference_tests::Tensor(ET, {1, 6, 4}, std::vector{ - 0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, 0.0, -0.1, 1.0, 0.9, - 0.0, 10.0, 1.0, 11.0, 0.0, 10.1, 1.0, 11.1, 0.0, 100.0, 1.0, 101.0})) - .scores( - reference_tests::Tensor(ET, {1, 1, 6}, std::vector{ - 0.9, 0.75, 0.6, 0.95, 0.5, 0.3})) - .maxOutputBoxesPerClass( - reference_tests::Tensor(ET_BOX, {}, std::vector{3})) - .iouThreshold( - reference_tests::Tensor(ET_TH, {}, std::vector{0.5f})) - .scoreThreshold( - reference_tests::Tensor(ET_TH, {}, std::vector{0.0f})) - .boxEncoding( - opset4::NonMaxSuppression::BoxEncodingType::CORNER) - .expectedSelectedIndices( - reference_tests::Tensor(ET_IND, {3, 3}, std::vector{ - 0, 0, 3, 0, 0, 0, 0, 0, 5})) - .testcaseName( - "nonmaxsuppression_suppress_by_IOU"), + Builder4{} + .boxes(reference_tests::Tensor(ET, {1, 6, 4}, std::vector{0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, + 0.0, -0.1, 1.0, 0.9, 0.0, 10.0, 1.0, 11.0, + 0.0, 10.1, 1.0, 11.1, 0.0, 100.0, 1.0, 101.0})) + .scores(reference_tests::Tensor(ET, {1, 1, 6}, std::vector{0.9, 0.75, 0.6, 0.95, 0.5, 0.3})) + .maxOutputBoxesPerClass(reference_tests::Tensor(ET_BOX, {}, std::vector{3})) + .iouThreshold(reference_tests::Tensor(ET_TH, {}, std::vector{0.5f})) + .scoreThreshold(reference_tests::Tensor(ET_TH, {}, std::vector{0.0f})) + .boxEncoding(opset4::NonMaxSuppression::BoxEncodingType::CORNER) + .expectedSelectedIndices( + reference_tests::Tensor(ET_IND, {3, 3}, std::vector{0, 0, 3, 0, 0, 0, 0, 0, 5})) + .testcaseName("nonmaxsuppression_suppress_by_IOU"), - Builder4 {} - .boxes( - reference_tests::Tensor(ET, {1, 6, 4}, std::vector{ - 0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, 0.0, -0.1, 1.0, 0.9, - 0.0, 10.0, 1.0, 11.0, 0.0, 10.1, 1.0, 11.1, 0.0, 100.0, 1.0, 101.0})) - .scores( - reference_tests::Tensor(ET, {1, 1, 6}, std::vector{ - 0.9, 0.75, 0.6, 0.95, 0.5, 0.3})) - .maxOutputBoxesPerClass( - reference_tests::Tensor(ET_BOX, {}, std::vector{2})) - .iouThreshold( - reference_tests::Tensor(ET_TH, {}, std::vector{0.5f})) - .scoreThreshold( - reference_tests::Tensor(ET_TH, {}, std::vector{0.4f})) - .boxEncoding( - opset4::NonMaxSuppression::BoxEncodingType::CORNER) - .expectedSelectedIndices( - reference_tests::Tensor(ET_IND, {2, 3}, std::vector{ - 0, 0, 3, 0, 0, 0})) - .testcaseName( - "nonmaxsuppression_suppress_by_IOU_and_scores"), + Builder4{} + .boxes(reference_tests::Tensor(ET, {1, 6, 4}, std::vector{0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, + 0.0, -0.1, 1.0, 0.9, 0.0, 10.0, 1.0, 11.0, + 0.0, 10.1, 1.0, 11.1, 0.0, 100.0, 1.0, 101.0})) + .scores(reference_tests::Tensor(ET, {1, 1, 6}, std::vector{0.9, 0.75, 0.6, 0.95, 0.5, 0.3})) + .maxOutputBoxesPerClass(reference_tests::Tensor(ET_BOX, {}, std::vector{2})) + .iouThreshold(reference_tests::Tensor(ET_TH, {}, std::vector{0.5f})) + .scoreThreshold(reference_tests::Tensor(ET_TH, {}, std::vector{0.4f})) + .boxEncoding(opset4::NonMaxSuppression::BoxEncodingType::CORNER) + .expectedSelectedIndices(reference_tests::Tensor(ET_IND, {2, 3}, std::vector{0, 0, 3, 0, 0, 0})) + .testcaseName("nonmaxsuppression_suppress_by_IOU_and_scores"), - Builder4 {} - .boxes( - reference_tests::Tensor(ET, {2, 6, 4}, std::vector{ - 0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, 0.0, -0.1, 1.0, 0.9, - 0.0, 10.0, 1.0, 11.0, 0.0, 10.1, 1.0, 11.1, 0.0, 100.0, 1.0, 101.0, - 0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, 0.0, -0.1, 1.0, 0.9, - 0.0, 10.0, 1.0, 11.0, 0.0, 10.1, 1.0, 11.1, 0.0, 100.0, 1.0, 101.0})) - .scores( - reference_tests::Tensor(ET, {2, 1, 6}, std::vector{ - 0.9, 0.75, 0.6, 0.95, 0.5, 0.3, 0.9, 0.75, 0.6, 0.95, 0.5, 0.3})) - .maxOutputBoxesPerClass( - reference_tests::Tensor(ET_BOX, {}, std::vector{2})) - .iouThreshold( - reference_tests::Tensor(ET_TH, {}, std::vector{0.5f})) - .scoreThreshold( - reference_tests::Tensor(ET_TH, {}, std::vector{0.0f})) - .boxEncoding( - opset4::NonMaxSuppression::BoxEncodingType::CORNER) - .expectedSelectedIndices( - reference_tests::Tensor(ET_IND, {4, 3}, std::vector{ - 0, 0, 3, 0, 0, 0, 1, 0, 3, 1, 0, 0})) - .testcaseName( - "nonmaxsuppression_two_batches"), + Builder4{} + .boxes(reference_tests::Tensor(ET, {2, 6, 4}, std::vector{0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, + 0.0, -0.1, 1.0, 0.9, 0.0, 10.0, 1.0, 11.0, + 0.0, 10.1, 1.0, 11.1, 0.0, 100.0, 1.0, 101.0, + 0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, + 0.0, -0.1, 1.0, 0.9, 0.0, 10.0, 1.0, 11.0, + 0.0, 10.1, 1.0, 11.1, 0.0, 100.0, 1.0, 101.0})) + .scores( + reference_tests::Tensor(ET, + {2, 1, 6}, + std::vector{0.9, 0.75, 0.6, 0.95, 0.5, 0.3, 0.9, 0.75, 0.6, 0.95, 0.5, 0.3})) + .maxOutputBoxesPerClass(reference_tests::Tensor(ET_BOX, {}, std::vector{2})) + .iouThreshold(reference_tests::Tensor(ET_TH, {}, std::vector{0.5f})) + .scoreThreshold(reference_tests::Tensor(ET_TH, {}, std::vector{0.0f})) + .boxEncoding(opset4::NonMaxSuppression::BoxEncodingType::CORNER) + .expectedSelectedIndices( + reference_tests::Tensor(ET_IND, {4, 3}, std::vector{0, 0, 3, 0, 0, 0, 1, 0, 3, 1, 0, 0})) + .testcaseName("nonmaxsuppression_two_batches"), - Builder4 {} - .boxes( - reference_tests::Tensor(ET, {1, 6, 4}, std::vector{ - 0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, 0.0, -0.1, 1.0, 0.9, - 0.0, 10.0, 1.0, 11.0, 0.0, 10.1, 1.0, 11.1, 0.0, 100.0, 1.0, 101.0})) - .scores( - reference_tests::Tensor(ET, {1, 2, 6}, std::vector{ - 0.9, 0.75, 0.6, 0.95, 0.5, 0.3, 0.9, 0.75, 0.6, 0.95, 0.5, 0.3})) - .maxOutputBoxesPerClass( - reference_tests::Tensor(ET_BOX, {}, std::vector{2})) - .iouThreshold( - reference_tests::Tensor(ET_TH, {}, std::vector{0.5f})) - .scoreThreshold( - reference_tests::Tensor(ET_TH, {}, std::vector{0.0f})) - .boxEncoding( - opset4::NonMaxSuppression::BoxEncodingType::CORNER) - .expectedSelectedIndices( - reference_tests::Tensor(ET_IND, {4, 3}, std::vector{ - 0, 0, 3, 0, 0, 0, 0, 1, 3, 0, 1, 0})) - .testcaseName( - "nonmaxsuppression_two_classes"), + Builder4{} + .boxes(reference_tests::Tensor(ET, {1, 6, 4}, std::vector{0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, + 0.0, -0.1, 1.0, 0.9, 0.0, 10.0, 1.0, 11.0, + 0.0, 10.1, 1.0, 11.1, 0.0, 100.0, 1.0, 101.0})) + .scores( + reference_tests::Tensor(ET, + {1, 2, 6}, + std::vector{0.9, 0.75, 0.6, 0.95, 0.5, 0.3, 0.9, 0.75, 0.6, 0.95, 0.5, 0.3})) + .maxOutputBoxesPerClass(reference_tests::Tensor(ET_BOX, {}, std::vector{2})) + .iouThreshold(reference_tests::Tensor(ET_TH, {}, std::vector{0.5f})) + .scoreThreshold(reference_tests::Tensor(ET_TH, {}, std::vector{0.0f})) + .boxEncoding(opset4::NonMaxSuppression::BoxEncodingType::CORNER) + .expectedSelectedIndices( + reference_tests::Tensor(ET_IND, {4, 3}, std::vector{0, 0, 3, 0, 0, 0, 0, 1, 3, 0, 1, 0})) + .testcaseName("nonmaxsuppression_two_classes"), }; return params; } std::vector generateCombinedParams4() { - const std::vector> generatedParams { + const std::vector> generatedParams{ generateParams4(), generateParams4(), generateParams4(), @@ -829,39 +694,49 @@ std::vector generateParams4WithoutConstants() { using T_BOX = typename element_type_traits::value_type; using T_TH = typename element_type_traits::value_type; using T_IND = typename element_type_traits::value_type; - std::vector params { - Builder4 {} - .boxes( - reference_tests::Tensor(ET, {1, 6, 4}, std::vector{ - 0.0f, 0.0f, 1.0f, 1.0f, 0.0f, 0.1f, 1.0f, 1.1f, 0.0f, -0.1f, 1.0f, 0.9f, - 0.0f, 10.0f, 1.0f, 11.0f, 0.0f, 10.1f, 1.0f, 11.1f, 0.0f, 100.0f, 1.0f, 101.0f})) - .scores( - reference_tests::Tensor(ET, {1, 1, 6}, std::vector{ - 0.9f, 0.75f, 0.6f, 0.95f, 0.5f, 0.3f})) - .maxOutputBoxesPerClass( - reference_tests::Tensor(ET_BOX, {}, std::vector{1})) - .iouThreshold( - reference_tests::Tensor(ET_TH, {}, std::vector{0.4f})) - .scoreThreshold( - reference_tests::Tensor(ET_TH, {}, std::vector{0.2f})) - .boxEncoding( - opset4::NonMaxSuppression::BoxEncodingType::CORNER) - .expectedSelectedIndices( - reference_tests::Tensor(ET_IND, {1, 3}, std::vector{0, 0, 3})) - .testcaseName( - "nonmaxsuppression_suppress_by_IOU_and_scores_without_constants"), + std::vector params{ + Builder4{} + .boxes(reference_tests::Tensor(ET, {1, 6, 4}, std::vector{0.0f, 0.0f, 1.0f, 1.0f, 0.0f, 0.1f, + 1.0f, 1.1f, 0.0f, -0.1f, 1.0f, 0.9f, + 0.0f, 10.0f, 1.0f, 11.0f, 0.0f, 10.1f, + 1.0f, 11.1f, 0.0f, 100.0f, 1.0f, 101.0f})) + .scores(reference_tests::Tensor(ET, {1, 1, 6}, std::vector{0.9f, 0.75f, 0.6f, 0.95f, 0.5f, 0.3f})) + .maxOutputBoxesPerClass(reference_tests::Tensor(ET_BOX, {}, std::vector{1})) + .iouThreshold(reference_tests::Tensor(ET_TH, {}, std::vector{0.4f})) + .scoreThreshold(reference_tests::Tensor(ET_TH, {}, std::vector{0.2f})) + .boxEncoding(opset4::NonMaxSuppression::BoxEncodingType::CORNER) + .expectedSelectedIndices(reference_tests::Tensor(ET_IND, {1, 3}, std::vector{0, 0, 3})) + .testcaseName("nonmaxsuppression_suppress_by_IOU_and_scores_without_constants"), }; return params; } std::vector generateCombinedParams4WithoutConstants() { - const std::vector> generatedParams { - generateParams4WithoutConstants(), - generateParams4WithoutConstants(), - generateParams4WithoutConstants(), - generateParams4WithoutConstants(), - generateParams4WithoutConstants(), - generateParams4WithoutConstants(), + const std::vector> generatedParams{ + generateParams4WithoutConstants(), + generateParams4WithoutConstants(), + generateParams4WithoutConstants(), + generateParams4WithoutConstants(), + generateParams4WithoutConstants(), + generateParams4WithoutConstants(), }; std::vector combinedParams; @@ -871,11 +746,14 @@ std::vector generateCombinedParams4WithoutConstants() return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_NonMaxSuppression_With_Hardcoded_Refs, ReferenceNonMaxSuppression4Test, - testing::ValuesIn(generateCombinedParams4()), ReferenceNonMaxSuppression4Test::getTestCaseName); -INSTANTIATE_TEST_SUITE_P(smoke_NonMaxSuppression_With_Hardcoded_Refs, ReferenceNonMaxSuppression4TestWithoutConstants, - testing::ValuesIn(generateCombinedParams4WithoutConstants()), ReferenceNonMaxSuppression4TestWithoutConstants::getTestCaseName); - +INSTANTIATE_TEST_SUITE_P(smoke_NonMaxSuppression_With_Hardcoded_Refs, + ReferenceNonMaxSuppression4Test, + testing::ValuesIn(generateCombinedParams4()), + ReferenceNonMaxSuppression4Test::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_NonMaxSuppression_With_Hardcoded_Refs, + ReferenceNonMaxSuppression4TestWithoutConstants, + testing::ValuesIn(generateCombinedParams4WithoutConstants()), + ReferenceNonMaxSuppression4TestWithoutConstants::getTestCaseName); struct NonMaxSuppression3Params { reference_tests::Tensor boxes; @@ -899,7 +777,8 @@ struct Builder3 : ParamsBuilder { REFERENCE_TESTS_ADD_SET_PARAM(Builder3, testcaseName); }; -class ReferenceNonMaxSuppression3Test : public testing::TestWithParam, public CommonReferenceTest { +class ReferenceNonMaxSuppression3Test : public testing::TestWithParam, + public CommonReferenceTest { public: void SetUp() override { auto params = GetParam(); @@ -927,12 +806,16 @@ private: static std::shared_ptr CreateFunction(const NonMaxSuppression3Params& params) { const auto boxes = std::make_shared(params.boxes.type, params.boxes.shape); const auto scores = std::make_shared(params.scores.type, params.scores.shape); - const auto max_output_boxes_per_class = std::make_shared( - params.maxOutputBoxesPerClass.type, params.maxOutputBoxesPerClass.shape, params.maxOutputBoxesPerClass.data.data()); - const auto iou_threshold = std::make_shared( - params.iouThreshold.type, params.iouThreshold.shape, params.iouThreshold.data.data()); - const auto score_threshold = std::make_shared( - params.scoreThreshold.type, params.scoreThreshold.shape, params.scoreThreshold.data.data()); + const auto max_output_boxes_per_class = + std::make_shared(params.maxOutputBoxesPerClass.type, + params.maxOutputBoxesPerClass.shape, + params.maxOutputBoxesPerClass.data.data()); + const auto iou_threshold = std::make_shared(params.iouThreshold.type, + params.iouThreshold.shape, + params.iouThreshold.data.data()); + const auto score_threshold = std::make_shared(params.scoreThreshold.type, + params.scoreThreshold.shape, + params.scoreThreshold.data.data()); const auto nms = std::make_shared(boxes, scores, max_output_boxes_per_class, @@ -951,8 +834,11 @@ public: void SetUp() override { auto params = GetParam(); function = CreateFunction(params); - inputData = {params.boxes.data, params.scores.data, params.maxOutputBoxesPerClass.data, - params.iouThreshold.data, params.scoreThreshold.data}; + inputData = {params.boxes.data, + params.scores.data, + params.maxOutputBoxesPerClass.data, + params.iouThreshold.data, + params.scoreThreshold.data}; refOutData = {params.expectedSelectedIndices.data}; } @@ -960,12 +846,13 @@ private: static std::shared_ptr CreateFunction(const NonMaxSuppression3Params& params) { const auto boxes = std::make_shared(params.boxes.type, params.boxes.shape); const auto scores = std::make_shared(params.scores.type, params.scores.shape); - const auto max_output_boxes_per_class = std::make_shared( - params.maxOutputBoxesPerClass.type, params.maxOutputBoxesPerClass.shape); - const auto iou_threshold = std::make_shared( - params.iouThreshold.type, params.iouThreshold.shape); - const auto score_threshold = std::make_shared( - params.scoreThreshold.type, params.scoreThreshold.shape); + const auto max_output_boxes_per_class = + std::make_shared(params.maxOutputBoxesPerClass.type, + params.maxOutputBoxesPerClass.shape); + const auto iou_threshold = + std::make_shared(params.iouThreshold.type, params.iouThreshold.shape); + const auto score_threshold = + std::make_shared(params.scoreThreshold.type, params.scoreThreshold.shape); const auto nms = std::make_shared(boxes, scores, max_output_boxes_per_class, @@ -974,9 +861,9 @@ private: params.boxEncoding, false, params.expectedSelectedIndices.type); - const auto f = std::make_shared(nms->outputs(), - ParameterVector{boxes, scores, max_output_boxes_per_class, - iou_threshold, score_threshold}); + const auto f = std::make_shared( + nms->outputs(), + ParameterVector{boxes, scores, max_output_boxes_per_class, iou_threshold, score_threshold}); return f; } }; @@ -995,183 +882,117 @@ std::vector generateParams3() { using T_BOX = typename element_type_traits::value_type; using T_TH = typename element_type_traits::value_type; using T_IND = typename element_type_traits::value_type; - std::vector params { - Builder3 {} - .boxes( - reference_tests::Tensor(ET, {1, 6, 4}, std::vector{ - 0.5, 0.5, 1.0, 1.0, 0.5, 0.6, 1.0, 1.0, 0.5, 0.4, 1.0, 1.0, - 0.5, 10.5, 1.0, 1.0, 0.5, 10.6, 1.0, 1.0, 0.5, 100.5, 1.0, 1.0})) - .scores( - reference_tests::Tensor(ET, {1, 1, 6}, std::vector{ - 0.9, 0.75, 0.6, 0.95, 0.5, 0.3})) - .maxOutputBoxesPerClass( - reference_tests::Tensor(ET_BOX, {}, std::vector{3})) - .iouThreshold( - reference_tests::Tensor(ET_TH, {}, std::vector{0.5f})) - .scoreThreshold( - reference_tests::Tensor(ET_TH, {}, std::vector{0.0f})) - .boxEncoding( - opset3::NonMaxSuppression::BoxEncodingType::CENTER) - .expectedSelectedIndices( - reference_tests::Tensor(ET_IND, {3, 3}, std::vector{ - 0, 0, 3, 0, 0, 0, 0, 0, 5})) - .testcaseName( - "nonmaxsuppression_center_point_box_format"), + std::vector params{ + Builder3{} + .boxes(reference_tests::Tensor(ET, {1, 6, 4}, std::vector{0.5, 0.5, 1.0, 1.0, 0.5, 0.6, 1.0, 1.0, + 0.5, 0.4, 1.0, 1.0, 0.5, 10.5, 1.0, 1.0, + 0.5, 10.6, 1.0, 1.0, 0.5, 100.5, 1.0, 1.0})) + .scores(reference_tests::Tensor(ET, {1, 1, 6}, std::vector{0.9, 0.75, 0.6, 0.95, 0.5, 0.3})) + .maxOutputBoxesPerClass(reference_tests::Tensor(ET_BOX, {}, std::vector{3})) + .iouThreshold(reference_tests::Tensor(ET_TH, {}, std::vector{0.5f})) + .scoreThreshold(reference_tests::Tensor(ET_TH, {}, std::vector{0.0f})) + .boxEncoding(opset3::NonMaxSuppression::BoxEncodingType::CENTER) + .expectedSelectedIndices( + reference_tests::Tensor(ET_IND, {3, 3}, std::vector{0, 0, 3, 0, 0, 0, 0, 0, 5})) + .testcaseName("nonmaxsuppression_center_point_box_format"), - Builder3 {} - .boxes( - reference_tests::Tensor(ET, {1, 6, 4}, std::vector{ - 1.0, 1.0, 0.0, 0.0, 0.0, 0.1, 1.0, 1.1, 0.0, 0.9, 1.0, -0.1, - 0.0, 10.0, 1.0, 11.0, 1.0, 10.1, 0.0, 11.1, 1.0, 101.0, 0.0, 100.0})) - .scores( - reference_tests::Tensor(ET, {1, 1, 6}, std::vector{ - 0.9, 0.75, 0.6, 0.95, 0.5, 0.3})) - .maxOutputBoxesPerClass( - reference_tests::Tensor(ET_BOX, {}, std::vector{3})) - .iouThreshold( - reference_tests::Tensor(ET_TH, {}, std::vector{0.5f})) - .scoreThreshold( - reference_tests::Tensor(ET_TH, {}, std::vector{0.0f})) - .boxEncoding( - opset3::NonMaxSuppression::BoxEncodingType::CORNER) - .expectedSelectedIndices( - reference_tests::Tensor(ET_IND, {3, 3}, std::vector{ - 0, 0, 3, 0, 0, 0, 0, 0, 5})) - .testcaseName( - "nonmaxsuppression_flipped_coordinates"), + Builder3{} + .boxes(reference_tests::Tensor(ET, {1, 6, 4}, std::vector{1.0, 1.0, 0.0, 0.0, 0.0, 0.1, 1.0, 1.1, + 0.0, 0.9, 1.0, -0.1, 0.0, 10.0, 1.0, 11.0, + 1.0, 10.1, 0.0, 11.1, 1.0, 101.0, 0.0, 100.0})) + .scores(reference_tests::Tensor(ET, {1, 1, 6}, std::vector{0.9, 0.75, 0.6, 0.95, 0.5, 0.3})) + .maxOutputBoxesPerClass(reference_tests::Tensor(ET_BOX, {}, std::vector{3})) + .iouThreshold(reference_tests::Tensor(ET_TH, {}, std::vector{0.5f})) + .scoreThreshold(reference_tests::Tensor(ET_TH, {}, std::vector{0.0f})) + .boxEncoding(opset3::NonMaxSuppression::BoxEncodingType::CORNER) + .expectedSelectedIndices( + reference_tests::Tensor(ET_IND, {3, 3}, std::vector{0, 0, 3, 0, 0, 0, 0, 0, 5})) + .testcaseName("nonmaxsuppression_flipped_coordinates"), - Builder3 {} - .boxes( - reference_tests::Tensor(ET, {1, 10, 4}, std::vector{ - 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, - 1.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0, - 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0})) - .scores( - reference_tests::Tensor(ET, {1, 1, 10}, std::vector{ - 0.9, 0.9, 0.9, 0.9, 0.9, 0.9, 0.9, 0.9, 0.9, 0.9})) - .maxOutputBoxesPerClass( - reference_tests::Tensor(ET_BOX, {}, std::vector{1})) - .iouThreshold( - reference_tests::Tensor(ET_TH, {}, std::vector{0.5f})) - .scoreThreshold( - reference_tests::Tensor(ET_TH, {}, std::vector{0.0f})) - .boxEncoding( - opset3::NonMaxSuppression::BoxEncodingType::CORNER) - .expectedSelectedIndices( - reference_tests::Tensor(ET_IND, {1, 3}, std::vector{0, 0, 0})) - .testcaseName( - "nonmaxsuppression_identical_boxes"), + Builder3{} + .boxes(reference_tests::Tensor(ET, {1, 10, 4}, std::vector{0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0, + 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0, + 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0, + 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0, + 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0})) + .scores(reference_tests::Tensor(ET, + {1, 1, 10}, + std::vector{0.9, 0.9, 0.9, 0.9, 0.9, 0.9, 0.9, 0.9, 0.9, 0.9})) + .maxOutputBoxesPerClass(reference_tests::Tensor(ET_BOX, {}, std::vector{1})) + .iouThreshold(reference_tests::Tensor(ET_TH, {}, std::vector{0.5f})) + .scoreThreshold(reference_tests::Tensor(ET_TH, {}, std::vector{0.0f})) + .boxEncoding(opset3::NonMaxSuppression::BoxEncodingType::CORNER) + .expectedSelectedIndices(reference_tests::Tensor(ET_IND, {1, 3}, std::vector{0, 0, 0})) + .testcaseName("nonmaxsuppression_identical_boxes"), - Builder3 {} - .boxes( - reference_tests::Tensor(ET, {1, 6, 4}, std::vector{ - 0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, 0.0, -0.1, 1.0, 0.9, - 0.0, 10.0, 1.0, 11.0, 0.0, 10.1, 1.0, 11.1, 0.0, 100.0, 1.0, 101.0})) - .scores( - reference_tests::Tensor(ET, {1, 1, 6}, std::vector{ - 0.9, 0.75, 0.6, 0.95, 0.5, 0.3})) - .maxOutputBoxesPerClass( - reference_tests::Tensor(ET_BOX, {}, std::vector{2})) - .iouThreshold( - reference_tests::Tensor(ET_TH, {}, std::vector{0.5f})) - .scoreThreshold( - reference_tests::Tensor(ET_TH, {}, std::vector{0.0f})) - .boxEncoding( - opset3::NonMaxSuppression::BoxEncodingType::CORNER) - .expectedSelectedIndices( - reference_tests::Tensor(ET_IND, {2, 3}, std::vector{0, 0, 3, 0, 0, 0})) - .testcaseName( - "nonmaxsuppression_limit_output_size"), + Builder3{} + .boxes(reference_tests::Tensor(ET, {1, 6, 4}, std::vector{0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, + 0.0, -0.1, 1.0, 0.9, 0.0, 10.0, 1.0, 11.0, + 0.0, 10.1, 1.0, 11.1, 0.0, 100.0, 1.0, 101.0})) + .scores(reference_tests::Tensor(ET, {1, 1, 6}, std::vector{0.9, 0.75, 0.6, 0.95, 0.5, 0.3})) + .maxOutputBoxesPerClass(reference_tests::Tensor(ET_BOX, {}, std::vector{2})) + .iouThreshold(reference_tests::Tensor(ET_TH, {}, std::vector{0.5f})) + .scoreThreshold(reference_tests::Tensor(ET_TH, {}, std::vector{0.0f})) + .boxEncoding(opset3::NonMaxSuppression::BoxEncodingType::CORNER) + .expectedSelectedIndices(reference_tests::Tensor(ET_IND, {2, 3}, std::vector{0, 0, 3, 0, 0, 0})) + .testcaseName("nonmaxsuppression_limit_output_size"), - Builder3 {} - .boxes( - reference_tests::Tensor(ET, {1, 1, 4}, std::vector{0.0, 0.0, 1.0, 1.0})) - .scores( - reference_tests::Tensor(ET, {1, 1, 1}, std::vector{0.9})) - .maxOutputBoxesPerClass( - reference_tests::Tensor(ET_BOX, {}, std::vector{3})) - .iouThreshold( - reference_tests::Tensor(ET_TH, {}, std::vector{0.5f})) - .scoreThreshold( - reference_tests::Tensor(ET_TH, {}, std::vector{0.0f})) - .boxEncoding( - opset3::NonMaxSuppression::BoxEncodingType::CORNER) - .expectedSelectedIndices( - reference_tests::Tensor(ET_IND, {1, 3}, std::vector{0, 0, 0})) - .testcaseName( - "nonmaxsuppression_single_box"), + Builder3{} + .boxes(reference_tests::Tensor(ET, {1, 1, 4}, std::vector{0.0, 0.0, 1.0, 1.0})) + .scores(reference_tests::Tensor(ET, {1, 1, 1}, std::vector{0.9})) + .maxOutputBoxesPerClass(reference_tests::Tensor(ET_BOX, {}, std::vector{3})) + .iouThreshold(reference_tests::Tensor(ET_TH, {}, std::vector{0.5f})) + .scoreThreshold(reference_tests::Tensor(ET_TH, {}, std::vector{0.0f})) + .boxEncoding(opset3::NonMaxSuppression::BoxEncodingType::CORNER) + .expectedSelectedIndices(reference_tests::Tensor(ET_IND, {1, 3}, std::vector{0, 0, 0})) + .testcaseName("nonmaxsuppression_single_box"), - Builder3 {} - .boxes( - reference_tests::Tensor(ET, {1, 6, 4}, std::vector{ - 0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, 0.0, -0.1, 1.0, 0.9, - 0.0, 10.0, 1.0, 11.0, 0.0, 10.1, 1.0, 11.1, 0.0, 100.0, 1.0, 101.0})) - .scores( - reference_tests::Tensor(ET, {1, 1, 6}, std::vector{ - 0.9, 0.75, 0.6, 0.95, 0.5, 0.3})) - .maxOutputBoxesPerClass( - reference_tests::Tensor(ET_BOX, {}, std::vector{3})) - .iouThreshold( - reference_tests::Tensor(ET_TH, {}, std::vector{0.5f})) - .scoreThreshold( - reference_tests::Tensor(ET_TH, {}, std::vector{0.0f})) - .boxEncoding( - opset3::NonMaxSuppression::BoxEncodingType::CORNER) - .expectedSelectedIndices( - reference_tests::Tensor(ET_IND, {3, 3}, std::vector{ - 0, 0, 3, 0, 0, 0, 0, 0, 5})) - .testcaseName( - "nonmaxsuppression_suppress_by_IOU"), + Builder3{} + .boxes(reference_tests::Tensor(ET, {1, 6, 4}, std::vector{0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, + 0.0, -0.1, 1.0, 0.9, 0.0, 10.0, 1.0, 11.0, + 0.0, 10.1, 1.0, 11.1, 0.0, 100.0, 1.0, 101.0})) + .scores(reference_tests::Tensor(ET, {1, 1, 6}, std::vector{0.9, 0.75, 0.6, 0.95, 0.5, 0.3})) + .maxOutputBoxesPerClass(reference_tests::Tensor(ET_BOX, {}, std::vector{3})) + .iouThreshold(reference_tests::Tensor(ET_TH, {}, std::vector{0.5f})) + .scoreThreshold(reference_tests::Tensor(ET_TH, {}, std::vector{0.0f})) + .boxEncoding(opset3::NonMaxSuppression::BoxEncodingType::CORNER) + .expectedSelectedIndices( + reference_tests::Tensor(ET_IND, {3, 3}, std::vector{0, 0, 3, 0, 0, 0, 0, 0, 5})) + .testcaseName("nonmaxsuppression_suppress_by_IOU"), - Builder3 {} - .boxes( - reference_tests::Tensor(ET, {1, 6, 4}, std::vector{ - 0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, 0.0, -0.1, 1.0, 0.9, - 0.0, 10.0, 1.0, 11.0, 0.0, 10.1, 1.0, 11.1, 0.0, 100.0, 1.0, 101.0})) - .scores( - reference_tests::Tensor(ET, {1, 1, 6}, std::vector{ - 0.9, 0.75, 0.6, 0.95, 0.5, 0.3})) - .maxOutputBoxesPerClass( - reference_tests::Tensor(ET_BOX, {}, std::vector{2})) - .iouThreshold( - reference_tests::Tensor(ET_TH, {}, std::vector{0.5f})) - .scoreThreshold( - reference_tests::Tensor(ET_TH, {}, std::vector{0.4f})) - .boxEncoding( - opset3::NonMaxSuppression::BoxEncodingType::CORNER) - .expectedSelectedIndices( - reference_tests::Tensor(ET_IND, {2, 3}, std::vector{ - 0, 0, 3, 0, 0, 0})) - .testcaseName( - "nonmaxsuppression_suppress_by_IOU_and_scores"), + Builder3{} + .boxes(reference_tests::Tensor(ET, {1, 6, 4}, std::vector{0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, + 0.0, -0.1, 1.0, 0.9, 0.0, 10.0, 1.0, 11.0, + 0.0, 10.1, 1.0, 11.1, 0.0, 100.0, 1.0, 101.0})) + .scores(reference_tests::Tensor(ET, {1, 1, 6}, std::vector{0.9, 0.75, 0.6, 0.95, 0.5, 0.3})) + .maxOutputBoxesPerClass(reference_tests::Tensor(ET_BOX, {}, std::vector{2})) + .iouThreshold(reference_tests::Tensor(ET_TH, {}, std::vector{0.5f})) + .scoreThreshold(reference_tests::Tensor(ET_TH, {}, std::vector{0.4f})) + .boxEncoding(opset3::NonMaxSuppression::BoxEncodingType::CORNER) + .expectedSelectedIndices(reference_tests::Tensor(ET_IND, {2, 3}, std::vector{0, 0, 3, 0, 0, 0})) + .testcaseName("nonmaxsuppression_suppress_by_IOU_and_scores"), - Builder3 {} - .boxes( - reference_tests::Tensor(ET, {1, 6, 4}, std::vector{ - 0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, 0.0, -0.1, 1.0, 0.9, - 0.0, 10.0, 1.0, 11.0, 0.0, 10.1, 1.0, 11.1, 0.0, 100.0, 1.0, 101.0})) - .scores( - reference_tests::Tensor(ET, {1, 2, 6}, std::vector{ - 0.9, 0.75, 0.6, 0.95, 0.5, 0.3, 0.9, 0.75, 0.6, 0.95, 0.5, 0.3})) - .maxOutputBoxesPerClass( - reference_tests::Tensor(ET_BOX, {}, std::vector{2})) - .iouThreshold( - reference_tests::Tensor(ET_TH, {}, std::vector{0.5f})) - .scoreThreshold( - reference_tests::Tensor(ET_TH, {}, std::vector{0.0f})) - .boxEncoding( - opset3::NonMaxSuppression::BoxEncodingType::CORNER) - .expectedSelectedIndices( - reference_tests::Tensor(ET_IND, {4, 3}, std::vector{ - 0, 0, 3, 0, 0, 0, 0, 1, 3, 0, 1, 0})) - .testcaseName( - "nonmaxsuppression_two_classes"), + Builder3{} + .boxes(reference_tests::Tensor(ET, {1, 6, 4}, std::vector{0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, + 0.0, -0.1, 1.0, 0.9, 0.0, 10.0, 1.0, 11.0, + 0.0, 10.1, 1.0, 11.1, 0.0, 100.0, 1.0, 101.0})) + .scores( + reference_tests::Tensor(ET, + {1, 2, 6}, + std::vector{0.9, 0.75, 0.6, 0.95, 0.5, 0.3, 0.9, 0.75, 0.6, 0.95, 0.5, 0.3})) + .maxOutputBoxesPerClass(reference_tests::Tensor(ET_BOX, {}, std::vector{2})) + .iouThreshold(reference_tests::Tensor(ET_TH, {}, std::vector{0.5f})) + .scoreThreshold(reference_tests::Tensor(ET_TH, {}, std::vector{0.0f})) + .boxEncoding(opset3::NonMaxSuppression::BoxEncodingType::CORNER) + .expectedSelectedIndices( + reference_tests::Tensor(ET_IND, {4, 3}, std::vector{0, 0, 3, 0, 0, 0, 0, 1, 3, 0, 1, 0})) + .testcaseName("nonmaxsuppression_two_classes"), }; return params; } std::vector generateCombinedParams3() { - const std::vector> generatedParams { + const std::vector> generatedParams{ generateParams3(), generateParams3(), generateParams3(), @@ -1193,39 +1014,49 @@ std::vector generateParams3WithoutConstants() { using T_BOX = typename element_type_traits::value_type; using T_TH = typename element_type_traits::value_type; using T_IND = typename element_type_traits::value_type; - std::vector params { - Builder3 {} - .boxes( - reference_tests::Tensor(ET, {1, 6, 4}, std::vector{ - 0.0f, 0.0f, 1.0f, 1.0f, 0.0f, 0.1f, 1.0f, 1.1f, 0.0f, -0.1f, 1.0f, 0.9f, - 0.0f, 10.0f, 1.0f, 11.0f, 0.0f, 10.1f, 1.0f, 11.1f, 0.0f, 100.0f, 1.0f, 101.0f})) - .scores( - reference_tests::Tensor(ET, {1, 1, 6}, std::vector{ - 0.9f, 0.75f, 0.6f, 0.95f, 0.5f, 0.3f})) - .maxOutputBoxesPerClass( - reference_tests::Tensor(ET_BOX, {}, std::vector{1})) - .iouThreshold( - reference_tests::Tensor(ET_TH, {}, std::vector{0.4f})) - .scoreThreshold( - reference_tests::Tensor(ET_TH, {}, std::vector{0.2f})) - .boxEncoding( - opset3::NonMaxSuppression::BoxEncodingType::CORNER) - .expectedSelectedIndices( - reference_tests::Tensor(ET_IND, {1, 3}, std::vector{0, 0, 3})) - .testcaseName( - "nonmaxsuppression_suppress_by_IOU_and_scores_without_constants"), + std::vector params{ + Builder3{} + .boxes(reference_tests::Tensor(ET, {1, 6, 4}, std::vector{0.0f, 0.0f, 1.0f, 1.0f, 0.0f, 0.1f, + 1.0f, 1.1f, 0.0f, -0.1f, 1.0f, 0.9f, + 0.0f, 10.0f, 1.0f, 11.0f, 0.0f, 10.1f, + 1.0f, 11.1f, 0.0f, 100.0f, 1.0f, 101.0f})) + .scores(reference_tests::Tensor(ET, {1, 1, 6}, std::vector{0.9f, 0.75f, 0.6f, 0.95f, 0.5f, 0.3f})) + .maxOutputBoxesPerClass(reference_tests::Tensor(ET_BOX, {}, std::vector{1})) + .iouThreshold(reference_tests::Tensor(ET_TH, {}, std::vector{0.4f})) + .scoreThreshold(reference_tests::Tensor(ET_TH, {}, std::vector{0.2f})) + .boxEncoding(opset3::NonMaxSuppression::BoxEncodingType::CORNER) + .expectedSelectedIndices(reference_tests::Tensor(ET_IND, {1, 3}, std::vector{0, 0, 3})) + .testcaseName("nonmaxsuppression_suppress_by_IOU_and_scores_without_constants"), }; return params; } std::vector generateCombinedParams3WithoutConstants() { - const std::vector> generatedParams { - generateParams3WithoutConstants(), - generateParams3WithoutConstants(), - generateParams3WithoutConstants(), - generateParams3WithoutConstants(), - generateParams3WithoutConstants(), - generateParams3WithoutConstants(), + const std::vector> generatedParams{ + generateParams3WithoutConstants(), + generateParams3WithoutConstants(), + generateParams3WithoutConstants(), + generateParams3WithoutConstants(), + generateParams3WithoutConstants(), + generateParams3WithoutConstants(), }; std::vector combinedParams; @@ -1235,11 +1066,14 @@ std::vector generateCombinedParams3WithoutConstants() return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_NonMaxSuppression_With_Hardcoded_Refs, ReferenceNonMaxSuppression3Test, - testing::ValuesIn(generateCombinedParams3()), ReferenceNonMaxSuppression3Test::getTestCaseName); -INSTANTIATE_TEST_SUITE_P(smoke_NonMaxSuppression_With_Hardcoded_Refs, ReferenceNonMaxSuppression3TestWithoutConstants, - testing::ValuesIn(generateCombinedParams3WithoutConstants()), ReferenceNonMaxSuppression3TestWithoutConstants::getTestCaseName); - +INSTANTIATE_TEST_SUITE_P(smoke_NonMaxSuppression_With_Hardcoded_Refs, + ReferenceNonMaxSuppression3Test, + testing::ValuesIn(generateCombinedParams3()), + ReferenceNonMaxSuppression3Test::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_NonMaxSuppression_With_Hardcoded_Refs, + ReferenceNonMaxSuppression3TestWithoutConstants, + testing::ValuesIn(generateCombinedParams3WithoutConstants()), + ReferenceNonMaxSuppression3TestWithoutConstants::getTestCaseName); struct NonMaxSuppression1Params { reference_tests::Tensor boxes; @@ -1263,7 +1097,8 @@ struct Builder1 : ParamsBuilder { REFERENCE_TESTS_ADD_SET_PARAM(Builder1, testcaseName); }; -class ReferenceNonMaxSuppression1Test : public testing::TestWithParam, public CommonReferenceTest { +class ReferenceNonMaxSuppression1Test : public testing::TestWithParam, + public CommonReferenceTest { public: void SetUp() override { auto params = GetParam(); @@ -1291,12 +1126,16 @@ private: static std::shared_ptr CreateFunction(const NonMaxSuppression1Params& params) { const auto boxes = std::make_shared(params.boxes.type, params.boxes.shape); const auto scores = std::make_shared(params.scores.type, params.scores.shape); - const auto max_output_boxes_per_class = std::make_shared( - params.maxOutputBoxesPerClass.type, params.maxOutputBoxesPerClass.shape, params.maxOutputBoxesPerClass.data.data()); - const auto iou_threshold = std::make_shared( - params.iouThreshold.type, params.iouThreshold.shape, params.iouThreshold.data.data()); - const auto score_threshold = std::make_shared( - params.scoreThreshold.type, params.scoreThreshold.shape, params.scoreThreshold.data.data()); + const auto max_output_boxes_per_class = + std::make_shared(params.maxOutputBoxesPerClass.type, + params.maxOutputBoxesPerClass.shape, + params.maxOutputBoxesPerClass.data.data()); + const auto iou_threshold = std::make_shared(params.iouThreshold.type, + params.iouThreshold.shape, + params.iouThreshold.data.data()); + const auto score_threshold = std::make_shared(params.scoreThreshold.type, + params.scoreThreshold.shape, + params.scoreThreshold.data.data()); const auto nms = std::make_shared(boxes, scores, max_output_boxes_per_class, @@ -1314,8 +1153,11 @@ public: void SetUp() override { auto params = GetParam(); function = CreateFunction(params); - inputData = {params.boxes.data, params.scores.data, params.maxOutputBoxesPerClass.data, - params.iouThreshold.data, params.scoreThreshold.data}; + inputData = {params.boxes.data, + params.scores.data, + params.maxOutputBoxesPerClass.data, + params.iouThreshold.data, + params.scoreThreshold.data}; refOutData = {params.expectedSelectedIndices.data}; } @@ -1323,12 +1165,13 @@ private: static std::shared_ptr CreateFunction(const NonMaxSuppression1Params& params) { const auto boxes = std::make_shared(params.boxes.type, params.boxes.shape); const auto scores = std::make_shared(params.scores.type, params.scores.shape); - const auto max_output_boxes_per_class = std::make_shared( - params.maxOutputBoxesPerClass.type, params.maxOutputBoxesPerClass.shape); - const auto iou_threshold = std::make_shared( - params.iouThreshold.type, params.iouThreshold.shape); - const auto score_threshold = std::make_shared( - params.scoreThreshold.type, params.scoreThreshold.shape); + const auto max_output_boxes_per_class = + std::make_shared(params.maxOutputBoxesPerClass.type, + params.maxOutputBoxesPerClass.shape); + const auto iou_threshold = + std::make_shared(params.iouThreshold.type, params.iouThreshold.shape); + const auto score_threshold = + std::make_shared(params.scoreThreshold.type, params.scoreThreshold.shape); const auto nms = std::make_shared(boxes, scores, max_output_boxes_per_class, @@ -1336,9 +1179,9 @@ private: score_threshold, params.boxEncoding, false); - const auto f = std::make_shared(nms->outputs(), - ParameterVector{boxes, scores, max_output_boxes_per_class, - iou_threshold, score_threshold}); + const auto f = std::make_shared( + nms->outputs(), + ParameterVector{boxes, scores, max_output_boxes_per_class, iou_threshold, score_threshold}); return f; } }; @@ -1357,183 +1200,117 @@ std::vector generateParams1() { using T_BOX = typename element_type_traits::value_type; using T_TH = typename element_type_traits::value_type; using T_IND = typename element_type_traits::value_type; - std::vector params { - Builder1 {} - .boxes( - reference_tests::Tensor(ET, {1, 6, 4}, std::vector{ - 0.5, 0.5, 1.0, 1.0, 0.5, 0.6, 1.0, 1.0, 0.5, 0.4, 1.0, 1.0, - 0.5, 10.5, 1.0, 1.0, 0.5, 10.6, 1.0, 1.0, 0.5, 100.5, 1.0, 1.0})) - .scores( - reference_tests::Tensor(ET, {1, 1, 6}, std::vector{ - 0.9, 0.75, 0.6, 0.95, 0.5, 0.3})) - .maxOutputBoxesPerClass( - reference_tests::Tensor(ET_BOX, {}, std::vector{3})) - .iouThreshold( - reference_tests::Tensor(ET_TH, {}, std::vector{0.5f})) - .scoreThreshold( - reference_tests::Tensor(ET_TH, {}, std::vector{0.0f})) - .boxEncoding( - opset1::NonMaxSuppression::BoxEncodingType::CENTER) - .expectedSelectedIndices( - reference_tests::Tensor(ET_IND, {3, 3}, std::vector{ - 0, 0, 3, 0, 0, 0, 0, 0, 5})) - .testcaseName( - "nonmaxsuppression_center_point_box_format"), + std::vector params{ + Builder1{} + .boxes(reference_tests::Tensor(ET, {1, 6, 4}, std::vector{0.5, 0.5, 1.0, 1.0, 0.5, 0.6, 1.0, 1.0, + 0.5, 0.4, 1.0, 1.0, 0.5, 10.5, 1.0, 1.0, + 0.5, 10.6, 1.0, 1.0, 0.5, 100.5, 1.0, 1.0})) + .scores(reference_tests::Tensor(ET, {1, 1, 6}, std::vector{0.9, 0.75, 0.6, 0.95, 0.5, 0.3})) + .maxOutputBoxesPerClass(reference_tests::Tensor(ET_BOX, {}, std::vector{3})) + .iouThreshold(reference_tests::Tensor(ET_TH, {}, std::vector{0.5f})) + .scoreThreshold(reference_tests::Tensor(ET_TH, {}, std::vector{0.0f})) + .boxEncoding(opset1::NonMaxSuppression::BoxEncodingType::CENTER) + .expectedSelectedIndices( + reference_tests::Tensor(ET_IND, {3, 3}, std::vector{0, 0, 3, 0, 0, 0, 0, 0, 5})) + .testcaseName("nonmaxsuppression_center_point_box_format"), - Builder1 {} - .boxes( - reference_tests::Tensor(ET, {1, 6, 4}, std::vector{ - 1.0, 1.0, 0.0, 0.0, 0.0, 0.1, 1.0, 1.1, 0.0, 0.9, 1.0, -0.1, - 0.0, 10.0, 1.0, 11.0, 1.0, 10.1, 0.0, 11.1, 1.0, 101.0, 0.0, 100.0})) - .scores( - reference_tests::Tensor(ET, {1, 1, 6}, std::vector{ - 0.9, 0.75, 0.6, 0.95, 0.5, 0.3})) - .maxOutputBoxesPerClass( - reference_tests::Tensor(ET_BOX, {}, std::vector{3})) - .iouThreshold( - reference_tests::Tensor(ET_TH, {}, std::vector{0.5f})) - .scoreThreshold( - reference_tests::Tensor(ET_TH, {}, std::vector{0.0f})) - .boxEncoding( - opset1::NonMaxSuppression::BoxEncodingType::CORNER) - .expectedSelectedIndices( - reference_tests::Tensor(ET_IND, {3, 3}, std::vector{ - 0, 0, 3, 0, 0, 0, 0, 0, 5})) - .testcaseName( - "nonmaxsuppression_flipped_coordinates"), + Builder1{} + .boxes(reference_tests::Tensor(ET, {1, 6, 4}, std::vector{1.0, 1.0, 0.0, 0.0, 0.0, 0.1, 1.0, 1.1, + 0.0, 0.9, 1.0, -0.1, 0.0, 10.0, 1.0, 11.0, + 1.0, 10.1, 0.0, 11.1, 1.0, 101.0, 0.0, 100.0})) + .scores(reference_tests::Tensor(ET, {1, 1, 6}, std::vector{0.9, 0.75, 0.6, 0.95, 0.5, 0.3})) + .maxOutputBoxesPerClass(reference_tests::Tensor(ET_BOX, {}, std::vector{3})) + .iouThreshold(reference_tests::Tensor(ET_TH, {}, std::vector{0.5f})) + .scoreThreshold(reference_tests::Tensor(ET_TH, {}, std::vector{0.0f})) + .boxEncoding(opset1::NonMaxSuppression::BoxEncodingType::CORNER) + .expectedSelectedIndices( + reference_tests::Tensor(ET_IND, {3, 3}, std::vector{0, 0, 3, 0, 0, 0, 0, 0, 5})) + .testcaseName("nonmaxsuppression_flipped_coordinates"), - Builder1 {} - .boxes( - reference_tests::Tensor(ET, {1, 10, 4}, std::vector{ - 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, - 1.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0, - 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0})) - .scores( - reference_tests::Tensor(ET, {1, 1, 10}, std::vector{ - 0.9, 0.9, 0.9, 0.9, 0.9, 0.9, 0.9, 0.9, 0.9, 0.9})) - .maxOutputBoxesPerClass( - reference_tests::Tensor(ET_BOX, {}, std::vector{1})) - .iouThreshold( - reference_tests::Tensor(ET_TH, {}, std::vector{0.5f})) - .scoreThreshold( - reference_tests::Tensor(ET_TH, {}, std::vector{0.0f})) - .boxEncoding( - opset1::NonMaxSuppression::BoxEncodingType::CORNER) - .expectedSelectedIndices( - reference_tests::Tensor(ET_IND, {1, 3}, std::vector{0, 0, 0})) - .testcaseName( - "nonmaxsuppression_identical_boxes"), + Builder1{} + .boxes(reference_tests::Tensor(ET, {1, 10, 4}, std::vector{0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0, + 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0, + 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0, + 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0, + 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0})) + .scores(reference_tests::Tensor(ET, + {1, 1, 10}, + std::vector{0.9, 0.9, 0.9, 0.9, 0.9, 0.9, 0.9, 0.9, 0.9, 0.9})) + .maxOutputBoxesPerClass(reference_tests::Tensor(ET_BOX, {}, std::vector{1})) + .iouThreshold(reference_tests::Tensor(ET_TH, {}, std::vector{0.5f})) + .scoreThreshold(reference_tests::Tensor(ET_TH, {}, std::vector{0.0f})) + .boxEncoding(opset1::NonMaxSuppression::BoxEncodingType::CORNER) + .expectedSelectedIndices(reference_tests::Tensor(ET_IND, {1, 3}, std::vector{0, 0, 0})) + .testcaseName("nonmaxsuppression_identical_boxes"), - Builder1 {} - .boxes( - reference_tests::Tensor(ET, {1, 6, 4}, std::vector{ - 0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, 0.0, -0.1, 1.0, 0.9, - 0.0, 10.0, 1.0, 11.0, 0.0, 10.1, 1.0, 11.1, 0.0, 100.0, 1.0, 101.0})) - .scores( - reference_tests::Tensor(ET, {1, 1, 6}, std::vector{ - 0.9, 0.75, 0.6, 0.95, 0.5, 0.3})) - .maxOutputBoxesPerClass( - reference_tests::Tensor(ET_BOX, {}, std::vector{2})) - .iouThreshold( - reference_tests::Tensor(ET_TH, {}, std::vector{0.5f})) - .scoreThreshold( - reference_tests::Tensor(ET_TH, {}, std::vector{0.0f})) - .boxEncoding( - opset1::NonMaxSuppression::BoxEncodingType::CORNER) - .expectedSelectedIndices( - reference_tests::Tensor(ET_IND, {2, 3}, std::vector{0, 0, 3, 0, 0, 0})) - .testcaseName( - "nonmaxsuppression_limit_output_size"), + Builder1{} + .boxes(reference_tests::Tensor(ET, {1, 6, 4}, std::vector{0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, + 0.0, -0.1, 1.0, 0.9, 0.0, 10.0, 1.0, 11.0, + 0.0, 10.1, 1.0, 11.1, 0.0, 100.0, 1.0, 101.0})) + .scores(reference_tests::Tensor(ET, {1, 1, 6}, std::vector{0.9, 0.75, 0.6, 0.95, 0.5, 0.3})) + .maxOutputBoxesPerClass(reference_tests::Tensor(ET_BOX, {}, std::vector{2})) + .iouThreshold(reference_tests::Tensor(ET_TH, {}, std::vector{0.5f})) + .scoreThreshold(reference_tests::Tensor(ET_TH, {}, std::vector{0.0f})) + .boxEncoding(opset1::NonMaxSuppression::BoxEncodingType::CORNER) + .expectedSelectedIndices(reference_tests::Tensor(ET_IND, {2, 3}, std::vector{0, 0, 3, 0, 0, 0})) + .testcaseName("nonmaxsuppression_limit_output_size"), - Builder1 {} - .boxes( - reference_tests::Tensor(ET, {1, 1, 4}, std::vector{0.0, 0.0, 1.0, 1.0})) - .scores( - reference_tests::Tensor(ET, {1, 1, 1}, std::vector{0.9})) - .maxOutputBoxesPerClass( - reference_tests::Tensor(ET_BOX, {}, std::vector{3})) - .iouThreshold( - reference_tests::Tensor(ET_TH, {}, std::vector{0.5f})) - .scoreThreshold( - reference_tests::Tensor(ET_TH, {}, std::vector{0.0f})) - .boxEncoding( - opset1::NonMaxSuppression::BoxEncodingType::CORNER) - .expectedSelectedIndices( - reference_tests::Tensor(ET_IND, {1, 3}, std::vector{0, 0, 0})) - .testcaseName( - "nonmaxsuppression_single_box"), + Builder1{} + .boxes(reference_tests::Tensor(ET, {1, 1, 4}, std::vector{0.0, 0.0, 1.0, 1.0})) + .scores(reference_tests::Tensor(ET, {1, 1, 1}, std::vector{0.9})) + .maxOutputBoxesPerClass(reference_tests::Tensor(ET_BOX, {}, std::vector{3})) + .iouThreshold(reference_tests::Tensor(ET_TH, {}, std::vector{0.5f})) + .scoreThreshold(reference_tests::Tensor(ET_TH, {}, std::vector{0.0f})) + .boxEncoding(opset1::NonMaxSuppression::BoxEncodingType::CORNER) + .expectedSelectedIndices(reference_tests::Tensor(ET_IND, {1, 3}, std::vector{0, 0, 0})) + .testcaseName("nonmaxsuppression_single_box"), - Builder1 {} - .boxes( - reference_tests::Tensor(ET, {1, 6, 4}, std::vector{ - 0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, 0.0, -0.1, 1.0, 0.9, - 0.0, 10.0, 1.0, 11.0, 0.0, 10.1, 1.0, 11.1, 0.0, 100.0, 1.0, 101.0})) - .scores( - reference_tests::Tensor(ET, {1, 1, 6}, std::vector{ - 0.9, 0.75, 0.6, 0.95, 0.5, 0.3})) - .maxOutputBoxesPerClass( - reference_tests::Tensor(ET_BOX, {}, std::vector{3})) - .iouThreshold( - reference_tests::Tensor(ET_TH, {}, std::vector{0.5f})) - .scoreThreshold( - reference_tests::Tensor(ET_TH, {}, std::vector{0.0f})) - .boxEncoding( - opset1::NonMaxSuppression::BoxEncodingType::CORNER) - .expectedSelectedIndices( - reference_tests::Tensor(ET_IND, {3, 3}, std::vector{ - 0, 0, 3, 0, 0, 0, 0, 0, 5})) - .testcaseName( - "nonmaxsuppression_suppress_by_IOU"), + Builder1{} + .boxes(reference_tests::Tensor(ET, {1, 6, 4}, std::vector{0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, + 0.0, -0.1, 1.0, 0.9, 0.0, 10.0, 1.0, 11.0, + 0.0, 10.1, 1.0, 11.1, 0.0, 100.0, 1.0, 101.0})) + .scores(reference_tests::Tensor(ET, {1, 1, 6}, std::vector{0.9, 0.75, 0.6, 0.95, 0.5, 0.3})) + .maxOutputBoxesPerClass(reference_tests::Tensor(ET_BOX, {}, std::vector{3})) + .iouThreshold(reference_tests::Tensor(ET_TH, {}, std::vector{0.5f})) + .scoreThreshold(reference_tests::Tensor(ET_TH, {}, std::vector{0.0f})) + .boxEncoding(opset1::NonMaxSuppression::BoxEncodingType::CORNER) + .expectedSelectedIndices( + reference_tests::Tensor(ET_IND, {3, 3}, std::vector{0, 0, 3, 0, 0, 0, 0, 0, 5})) + .testcaseName("nonmaxsuppression_suppress_by_IOU"), - Builder1 {} - .boxes( - reference_tests::Tensor(ET, {1, 6, 4}, std::vector{ - 0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, 0.0, -0.1, 1.0, 0.9, - 0.0, 10.0, 1.0, 11.0, 0.0, 10.1, 1.0, 11.1, 0.0, 100.0, 1.0, 101.0})) - .scores( - reference_tests::Tensor(ET, {1, 1, 6}, std::vector{ - 0.9, 0.75, 0.6, 0.95, 0.5, 0.3})) - .maxOutputBoxesPerClass( - reference_tests::Tensor(ET_BOX, {}, std::vector{2})) - .iouThreshold( - reference_tests::Tensor(ET_TH, {}, std::vector{0.5f})) - .scoreThreshold( - reference_tests::Tensor(ET_TH, {}, std::vector{0.4f})) - .boxEncoding( - opset1::NonMaxSuppression::BoxEncodingType::CORNER) - .expectedSelectedIndices( - reference_tests::Tensor(ET_IND, {2, 3}, std::vector{ - 0, 0, 3, 0, 0, 0})) - .testcaseName( - "nonmaxsuppression_suppress_by_IOU_and_scores"), + Builder1{} + .boxes(reference_tests::Tensor(ET, {1, 6, 4}, std::vector{0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, + 0.0, -0.1, 1.0, 0.9, 0.0, 10.0, 1.0, 11.0, + 0.0, 10.1, 1.0, 11.1, 0.0, 100.0, 1.0, 101.0})) + .scores(reference_tests::Tensor(ET, {1, 1, 6}, std::vector{0.9, 0.75, 0.6, 0.95, 0.5, 0.3})) + .maxOutputBoxesPerClass(reference_tests::Tensor(ET_BOX, {}, std::vector{2})) + .iouThreshold(reference_tests::Tensor(ET_TH, {}, std::vector{0.5f})) + .scoreThreshold(reference_tests::Tensor(ET_TH, {}, std::vector{0.4f})) + .boxEncoding(opset1::NonMaxSuppression::BoxEncodingType::CORNER) + .expectedSelectedIndices(reference_tests::Tensor(ET_IND, {2, 3}, std::vector{0, 0, 3, 0, 0, 0})) + .testcaseName("nonmaxsuppression_suppress_by_IOU_and_scores"), - Builder1 {} - .boxes( - reference_tests::Tensor(ET, {1, 6, 4}, std::vector{ - 0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, 0.0, -0.1, 1.0, 0.9, - 0.0, 10.0, 1.0, 11.0, 0.0, 10.1, 1.0, 11.1, 0.0, 100.0, 1.0, 101.0})) - .scores( - reference_tests::Tensor(ET, {1, 2, 6}, std::vector{ - 0.9, 0.75, 0.6, 0.95, 0.5, 0.3, 0.9, 0.75, 0.6, 0.95, 0.5, 0.3})) - .maxOutputBoxesPerClass( - reference_tests::Tensor(ET_BOX, {}, std::vector{2})) - .iouThreshold( - reference_tests::Tensor(ET_TH, {}, std::vector{0.5f})) - .scoreThreshold( - reference_tests::Tensor(ET_TH, {}, std::vector{0.0f})) - .boxEncoding( - opset1::NonMaxSuppression::BoxEncodingType::CORNER) - .expectedSelectedIndices( - reference_tests::Tensor(ET_IND, {4, 3}, std::vector{ - 0, 0, 3, 0, 0, 0, 0, 1, 3, 0, 1, 0})) - .testcaseName( - "nonmaxsuppression_two_classes"), + Builder1{} + .boxes(reference_tests::Tensor(ET, {1, 6, 4}, std::vector{0.0, 0.0, 1.0, 1.0, 0.0, 0.1, 1.0, 1.1, + 0.0, -0.1, 1.0, 0.9, 0.0, 10.0, 1.0, 11.0, + 0.0, 10.1, 1.0, 11.1, 0.0, 100.0, 1.0, 101.0})) + .scores( + reference_tests::Tensor(ET, + {1, 2, 6}, + std::vector{0.9, 0.75, 0.6, 0.95, 0.5, 0.3, 0.9, 0.75, 0.6, 0.95, 0.5, 0.3})) + .maxOutputBoxesPerClass(reference_tests::Tensor(ET_BOX, {}, std::vector{2})) + .iouThreshold(reference_tests::Tensor(ET_TH, {}, std::vector{0.5f})) + .scoreThreshold(reference_tests::Tensor(ET_TH, {}, std::vector{0.0f})) + .boxEncoding(opset1::NonMaxSuppression::BoxEncodingType::CORNER) + .expectedSelectedIndices( + reference_tests::Tensor(ET_IND, {4, 3}, std::vector{0, 0, 3, 0, 0, 0, 0, 1, 3, 0, 1, 0})) + .testcaseName("nonmaxsuppression_two_classes"), }; return params; } std::vector generateCombinedParams1() { - const std::vector> generatedParams { + const std::vector> generatedParams{ generateParams1(), generateParams1(), generateParams1(), @@ -1552,36 +1329,37 @@ std::vector generateParams1WithoutConstants() { using T_BOX = typename element_type_traits::value_type; using T_TH = typename element_type_traits::value_type; using T_IND = typename element_type_traits::value_type; - std::vector params { - Builder1 {} - .boxes( - reference_tests::Tensor(ET, {1, 6, 4}, std::vector{ - 0.0f, 0.0f, 1.0f, 1.0f, 0.0f, 0.1f, 1.0f, 1.1f, 0.0f, -0.1f, 1.0f, 0.9f, - 0.0f, 10.0f, 1.0f, 11.0f, 0.0f, 10.1f, 1.0f, 11.1f, 0.0f, 100.0f, 1.0f, 101.0f})) - .scores( - reference_tests::Tensor(ET, {1, 1, 6}, std::vector{ - 0.9f, 0.75f, 0.6f, 0.95f, 0.5f, 0.3f})) - .maxOutputBoxesPerClass( - reference_tests::Tensor(ET_BOX, {}, std::vector{1})) - .iouThreshold( - reference_tests::Tensor(ET_TH, {}, std::vector{0.4f})) - .scoreThreshold( - reference_tests::Tensor(ET_TH, {}, std::vector{0.2f})) - .boxEncoding( - opset1::NonMaxSuppression::BoxEncodingType::CORNER) - .expectedSelectedIndices( - reference_tests::Tensor(ET_IND, {1, 3}, std::vector{0, 0, 3})) - .testcaseName( - "nonmaxsuppression_suppress_by_IOU_and_scores_without_constants"), + std::vector params{ + Builder1{} + .boxes(reference_tests::Tensor(ET, {1, 6, 4}, std::vector{0.0f, 0.0f, 1.0f, 1.0f, 0.0f, 0.1f, + 1.0f, 1.1f, 0.0f, -0.1f, 1.0f, 0.9f, + 0.0f, 10.0f, 1.0f, 11.0f, 0.0f, 10.1f, + 1.0f, 11.1f, 0.0f, 100.0f, 1.0f, 101.0f})) + .scores(reference_tests::Tensor(ET, {1, 1, 6}, std::vector{0.9f, 0.75f, 0.6f, 0.95f, 0.5f, 0.3f})) + .maxOutputBoxesPerClass(reference_tests::Tensor(ET_BOX, {}, std::vector{1})) + .iouThreshold(reference_tests::Tensor(ET_TH, {}, std::vector{0.4f})) + .scoreThreshold(reference_tests::Tensor(ET_TH, {}, std::vector{0.2f})) + .boxEncoding(opset1::NonMaxSuppression::BoxEncodingType::CORNER) + .expectedSelectedIndices(reference_tests::Tensor(ET_IND, {1, 3}, std::vector{0, 0, 3})) + .testcaseName("nonmaxsuppression_suppress_by_IOU_and_scores_without_constants"), }; return params; } std::vector generateCombinedParams1WithoutConstants() { - const std::vector> generatedParams { - generateParams1WithoutConstants(), - generateParams1WithoutConstants(), - generateParams1WithoutConstants(), + const std::vector> generatedParams{ + generateParams1WithoutConstants(), + generateParams1WithoutConstants(), + generateParams1WithoutConstants(), }; std::vector combinedParams; @@ -1591,8 +1369,12 @@ std::vector generateCombinedParams1WithoutConstants() return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_NonMaxSuppression_With_Hardcoded_Refs, ReferenceNonMaxSuppression1Test, - testing::ValuesIn(generateCombinedParams1()), ReferenceNonMaxSuppression1Test::getTestCaseName); -INSTANTIATE_TEST_SUITE_P(smoke_NonMaxSuppression_With_Hardcoded_Refs, ReferenceNonMaxSuppression1TestWithoutConstants, - testing::ValuesIn(generateCombinedParams1WithoutConstants()), ReferenceNonMaxSuppression1TestWithoutConstants::getTestCaseName); -} // namespace +INSTANTIATE_TEST_SUITE_P(smoke_NonMaxSuppression_With_Hardcoded_Refs, + ReferenceNonMaxSuppression1Test, + testing::ValuesIn(generateCombinedParams1()), + ReferenceNonMaxSuppression1Test::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_NonMaxSuppression_With_Hardcoded_Refs, + ReferenceNonMaxSuppression1TestWithoutConstants, + testing::ValuesIn(generateCombinedParams1WithoutConstants()), + ReferenceNonMaxSuppression1TestWithoutConstants::getTestCaseName); +} // namespace diff --git a/src/plugins/template/tests/functional/op_reference/nonzero.cpp b/src/plugins/template/tests/functional/op_reference/nonzero.cpp index f8baa42bbe2..88d0faec87e 100644 --- a/src/plugins/template/tests/functional/op_reference/nonzero.cpp +++ b/src/plugins/template/tests/functional/op_reference/nonzero.cpp @@ -5,8 +5,9 @@ #include #include -#include "openvino/op/non_zero.hpp" + #include "base_reference_test.hpp" +#include "openvino/op/non_zero.hpp" using namespace reference_tests; using namespace ov; @@ -14,10 +15,13 @@ using namespace ov; namespace { struct NonZeroParams { template - NonZeroParams(const PartialShape& dynamicShape, const PartialShape& inputShape, - const element::Type& inType, const element::Type& refType, - const std::vector& inputData, const std::vector& refData, - const std::string& test_name = "") + NonZeroParams(const PartialShape& dynamicShape, + const PartialShape& inputShape, + const element::Type& inType, + const element::Type& refType, + const std::vector& inputData, + const std::vector& refData, + const std::string& test_name = "") : dynamicShape(dynamicShape), inputShape(inputShape), inType(inType), @@ -60,11 +64,12 @@ public: } private: - static std::shared_ptr CreateFunction(const PartialShape& input_shape, const element::Type& input_type, - const element::Type& output_type) { + static std::shared_ptr CreateFunction(const PartialShape& input_shape, + const element::Type& input_type, + const element::Type& output_type) { const auto in = std::make_shared(input_type, input_shape); const auto NonZero = std::make_shared(in, output_type); - return std::make_shared(NodeVector {NonZero}, ParameterVector {in}); + return std::make_shared(NodeVector{NonZero}, ParameterVector{in}); } }; @@ -72,191 +77,191 @@ TEST_P(ReferenceNonZeroLayerTest, CompareWithHardcodedRefs) { Exec(); } -INSTANTIATE_TEST_SUITE_P(smoke_NonZero_With_Hardcoded_Refs, ReferenceNonZeroLayerTest, - ::testing::Values( - NonZeroParams(PartialShape{3, 2}, - PartialShape{3, 2}, - element::i32, - element::i32, - std::vector{1, 1, 1, 1, 1, 1}, - std::vector{0, 0, 1, 1, 2, 2, 0, 1, 0, 1, 0, 1}, - "all_1s"), - NonZeroParams(PartialShape{3, 2}, - PartialShape{3, 2}, - element::i32, - element::i32, - std::vector{0, 0, 0, 0, 0, 0}, - std::vector{}, - "all_0s"), - NonZeroParams(PartialShape{3, 2}, - PartialShape{3, 2}, - element::i32, - element::i64, - std::vector{1, 1, 1, 1, 1, 1}, - std::vector{0, 0, 1, 1, 2, 2, 0, 1, 0, 1, 0, 1}, - "all_1s_int64"), - NonZeroParams(PartialShape{3, 2}, - PartialShape{3, 2}, - element::i32, - element::i64, - std::vector{0, 0, 0, 0, 0, 0}, - std::vector{}, - "all_0s_int64"), - NonZeroParams(PartialShape{3, 2}, - PartialShape{3, 2}, - element::boolean, - element::i32, - std::vector{false, false, false, false, true, true}, - std::vector{2, 2, 0, 1}), - NonZeroParams(PartialShape{3, 2}, - PartialShape{3, 2}, - element::i8, - element::i32, - std::vector{0, 0, 0, 0, 1, 3}, - std::vector{2, 2, 0, 1}), - NonZeroParams(PartialShape{3, 2}, - PartialShape{3, 2}, - element::i16, - element::i32, - std::vector{0, 0, 0, 0, 1, 3}, - std::vector{2, 2, 0, 1}), - NonZeroParams(PartialShape{3, 2}, - PartialShape{3, 2}, - element::i32, - element::i32, - std::vector{0, 0, 0, 0, 1, 3}, - std::vector{2, 2, 0, 1}), - NonZeroParams(PartialShape{3, 2}, - PartialShape{3, 2}, - element::i64, - element::i32, - std::vector{0, 0, 0, 0, 1, 3}, - std::vector{2, 2, 0, 1}), - NonZeroParams(PartialShape{3, 2}, - PartialShape{3, 2}, - element::u8, - element::i32, - std::vector{0, 0, 0, 0, 1, 3}, - std::vector{2, 2, 0, 1}), - NonZeroParams(PartialShape{3, 2}, - PartialShape{3, 2}, - element::u16, - element::i32, - std::vector{0, 0, 0, 0, 1, 3}, - std::vector{2, 2, 0, 1}), - NonZeroParams(PartialShape{3, 2}, - PartialShape{3, 2}, - element::u32, - element::i32, - std::vector{0, 0, 0, 0, 1, 3}, - std::vector{2, 2, 0, 1}), - NonZeroParams(PartialShape{3, 2}, - PartialShape{3, 2}, - element::u64, - element::i32, - std::vector{0, 0, 0, 0, 1, 3}, - std::vector{2, 2, 0, 1}), - NonZeroParams(PartialShape{3, 2}, - PartialShape{3, 2}, - element::bf16, - element::i32, - std::vector{0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 3.0f}, - std::vector{2, 2, 0, 1}), - NonZeroParams(PartialShape{3, 2}, - PartialShape{3, 2}, - element::f16, - element::i32, - std::vector{0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 3.0f}, - std::vector{2, 2, 0, 1}), - NonZeroParams(PartialShape{3, 2}, - PartialShape{3, 2}, - element::f32, - element::i32, - std::vector{0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 3.0f}, - std::vector{2, 2, 0, 1}), - NonZeroParams(PartialShape{3, 2}, - PartialShape{3, 2}, - element::f64, - element::i32, - std::vector{0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 3.0f}, - std::vector{2, 2, 0, 1}), - NonZeroParams(PartialShape{3, 2}, - PartialShape{3, 2}, - element::boolean, - element::i64, - std::vector{false, false, false, false, true, true}, - std::vector{2, 2, 0, 1}), - NonZeroParams(PartialShape{3, 2}, - PartialShape{3, 2}, - element::i8, - element::i64, - std::vector{0, 0, 0, 0, 1, 3}, - std::vector{2, 2, 0, 1}), - NonZeroParams(PartialShape{3, 2}, - PartialShape{3, 2}, - element::i16, - element::i64, - std::vector{0, 0, 0, 0, 1, 3}, - std::vector{2, 2, 0, 1}), - NonZeroParams(PartialShape{3, 2}, - PartialShape{3, 2}, - element::i32, - element::i64, - std::vector{0, 0, 0, 0, 1, 3}, - std::vector{2, 2, 0, 1}), - NonZeroParams(PartialShape{3, 2}, - PartialShape{3, 2}, - element::i64, - element::i64, - std::vector{0, 0, 0, 0, 1, 3}, - std::vector{2, 2, 0, 1}), - NonZeroParams(PartialShape{3, 2}, - PartialShape{3, 2}, - element::u8, - element::i64, - std::vector{0, 0, 0, 0, 1, 3}, - std::vector{2, 2, 0, 1}), - NonZeroParams(PartialShape{3, 2}, - PartialShape{3, 2}, - element::u16, - element::i64, - std::vector{0, 0, 0, 0, 1, 3}, - std::vector{2, 2, 0, 1}), - NonZeroParams(PartialShape{3, 2}, - PartialShape{3, 2}, - element::u32, - element::i64, - std::vector{0, 0, 0, 0, 1, 3}, - std::vector{2, 2, 0, 1}), - NonZeroParams(PartialShape{3, 2}, - PartialShape{3, 2}, - element::u64, - element::i64, - std::vector{0, 0, 0, 0, 1, 3}, - std::vector{2, 2, 0, 1}), - NonZeroParams(PartialShape{3, 2}, - PartialShape{3, 2}, - element::bf16, - element::i64, - std::vector{0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 3.0f}, - std::vector{2, 2, 0, 1}), - NonZeroParams(PartialShape{3, 2}, - PartialShape{3, 2}, - element::f16, - element::i64, - std::vector{0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 3.0f}, - std::vector{2, 2, 0, 1}), - NonZeroParams(PartialShape{3, 2}, - PartialShape{3, 2}, - element::f32, - element::i64, - std::vector{0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 3.0f}, - std::vector{2, 2, 0, 1}), - NonZeroParams(PartialShape{3, 2}, - PartialShape{3, 2}, - element::f64, - element::i64, - std::vector{0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 3.0f}, - std::vector{2, 2, 0, 1})), +INSTANTIATE_TEST_SUITE_P(smoke_NonZero_With_Hardcoded_Refs, + ReferenceNonZeroLayerTest, + ::testing::Values(NonZeroParams(PartialShape{3, 2}, + PartialShape{3, 2}, + element::i32, + element::i32, + std::vector{1, 1, 1, 1, 1, 1}, + std::vector{0, 0, 1, 1, 2, 2, 0, 1, 0, 1, 0, 1}, + "all_1s"), + NonZeroParams(PartialShape{3, 2}, + PartialShape{3, 2}, + element::i32, + element::i32, + std::vector{0, 0, 0, 0, 0, 0}, + std::vector{}, + "all_0s"), + NonZeroParams(PartialShape{3, 2}, + PartialShape{3, 2}, + element::i32, + element::i64, + std::vector{1, 1, 1, 1, 1, 1}, + std::vector{0, 0, 1, 1, 2, 2, 0, 1, 0, 1, 0, 1}, + "all_1s_int64"), + NonZeroParams(PartialShape{3, 2}, + PartialShape{3, 2}, + element::i32, + element::i64, + std::vector{0, 0, 0, 0, 0, 0}, + std::vector{}, + "all_0s_int64"), + NonZeroParams(PartialShape{3, 2}, + PartialShape{3, 2}, + element::boolean, + element::i32, + std::vector{false, false, false, false, true, true}, + std::vector{2, 2, 0, 1}), + NonZeroParams(PartialShape{3, 2}, + PartialShape{3, 2}, + element::i8, + element::i32, + std::vector{0, 0, 0, 0, 1, 3}, + std::vector{2, 2, 0, 1}), + NonZeroParams(PartialShape{3, 2}, + PartialShape{3, 2}, + element::i16, + element::i32, + std::vector{0, 0, 0, 0, 1, 3}, + std::vector{2, 2, 0, 1}), + NonZeroParams(PartialShape{3, 2}, + PartialShape{3, 2}, + element::i32, + element::i32, + std::vector{0, 0, 0, 0, 1, 3}, + std::vector{2, 2, 0, 1}), + NonZeroParams(PartialShape{3, 2}, + PartialShape{3, 2}, + element::i64, + element::i32, + std::vector{0, 0, 0, 0, 1, 3}, + std::vector{2, 2, 0, 1}), + NonZeroParams(PartialShape{3, 2}, + PartialShape{3, 2}, + element::u8, + element::i32, + std::vector{0, 0, 0, 0, 1, 3}, + std::vector{2, 2, 0, 1}), + NonZeroParams(PartialShape{3, 2}, + PartialShape{3, 2}, + element::u16, + element::i32, + std::vector{0, 0, 0, 0, 1, 3}, + std::vector{2, 2, 0, 1}), + NonZeroParams(PartialShape{3, 2}, + PartialShape{3, 2}, + element::u32, + element::i32, + std::vector{0, 0, 0, 0, 1, 3}, + std::vector{2, 2, 0, 1}), + NonZeroParams(PartialShape{3, 2}, + PartialShape{3, 2}, + element::u64, + element::i32, + std::vector{0, 0, 0, 0, 1, 3}, + std::vector{2, 2, 0, 1}), + NonZeroParams(PartialShape{3, 2}, + PartialShape{3, 2}, + element::bf16, + element::i32, + std::vector{0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 3.0f}, + std::vector{2, 2, 0, 1}), + NonZeroParams(PartialShape{3, 2}, + PartialShape{3, 2}, + element::f16, + element::i32, + std::vector{0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 3.0f}, + std::vector{2, 2, 0, 1}), + NonZeroParams(PartialShape{3, 2}, + PartialShape{3, 2}, + element::f32, + element::i32, + std::vector{0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 3.0f}, + std::vector{2, 2, 0, 1}), + NonZeroParams(PartialShape{3, 2}, + PartialShape{3, 2}, + element::f64, + element::i32, + std::vector{0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 3.0f}, + std::vector{2, 2, 0, 1}), + NonZeroParams(PartialShape{3, 2}, + PartialShape{3, 2}, + element::boolean, + element::i64, + std::vector{false, false, false, false, true, true}, + std::vector{2, 2, 0, 1}), + NonZeroParams(PartialShape{3, 2}, + PartialShape{3, 2}, + element::i8, + element::i64, + std::vector{0, 0, 0, 0, 1, 3}, + std::vector{2, 2, 0, 1}), + NonZeroParams(PartialShape{3, 2}, + PartialShape{3, 2}, + element::i16, + element::i64, + std::vector{0, 0, 0, 0, 1, 3}, + std::vector{2, 2, 0, 1}), + NonZeroParams(PartialShape{3, 2}, + PartialShape{3, 2}, + element::i32, + element::i64, + std::vector{0, 0, 0, 0, 1, 3}, + std::vector{2, 2, 0, 1}), + NonZeroParams(PartialShape{3, 2}, + PartialShape{3, 2}, + element::i64, + element::i64, + std::vector{0, 0, 0, 0, 1, 3}, + std::vector{2, 2, 0, 1}), + NonZeroParams(PartialShape{3, 2}, + PartialShape{3, 2}, + element::u8, + element::i64, + std::vector{0, 0, 0, 0, 1, 3}, + std::vector{2, 2, 0, 1}), + NonZeroParams(PartialShape{3, 2}, + PartialShape{3, 2}, + element::u16, + element::i64, + std::vector{0, 0, 0, 0, 1, 3}, + std::vector{2, 2, 0, 1}), + NonZeroParams(PartialShape{3, 2}, + PartialShape{3, 2}, + element::u32, + element::i64, + std::vector{0, 0, 0, 0, 1, 3}, + std::vector{2, 2, 0, 1}), + NonZeroParams(PartialShape{3, 2}, + PartialShape{3, 2}, + element::u64, + element::i64, + std::vector{0, 0, 0, 0, 1, 3}, + std::vector{2, 2, 0, 1}), + NonZeroParams(PartialShape{3, 2}, + PartialShape{3, 2}, + element::bf16, + element::i64, + std::vector{0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 3.0f}, + std::vector{2, 2, 0, 1}), + NonZeroParams(PartialShape{3, 2}, + PartialShape{3, 2}, + element::f16, + element::i64, + std::vector{0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 3.0f}, + std::vector{2, 2, 0, 1}), + NonZeroParams(PartialShape{3, 2}, + PartialShape{3, 2}, + element::f32, + element::i64, + std::vector{0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 3.0f}, + std::vector{2, 2, 0, 1}), + NonZeroParams(PartialShape{3, 2}, + PartialShape{3, 2}, + element::f64, + element::i64, + std::vector{0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 3.0f}, + std::vector{2, 2, 0, 1})), ReferenceNonZeroLayerTest::getTestCaseName); -} // namespace +} // namespace diff --git a/src/plugins/template/tests/functional/op_reference/normalize_l2.cpp b/src/plugins/template/tests/functional/op_reference/normalize_l2.cpp index da26e601685..76789cb4d00 100644 --- a/src/plugins/template/tests/functional/op_reference/normalize_l2.cpp +++ b/src/plugins/template/tests/functional/op_reference/normalize_l2.cpp @@ -2,11 +2,12 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/normalize_l2.hpp" + #include #include "base_reference_test.hpp" #include "openvino/op/constant.hpp" -#include "openvino/op/normalize_l2.hpp" using namespace reference_tests; using namespace ov; @@ -78,11 +79,8 @@ class ReferenceNormalizeL2LayerTest : public testing::TestWithParam CreateFunction(const Shape& input_shape, - const element::Type_t& input_type, - const std::vector& axes, - const op::EpsMode& eps_mode, - const float& eps) { + const element::Type_t& input_type, + const std::vector& axes, + const op::EpsMode& eps_mode, + const float& eps) { const auto in = std::make_shared(input_type, input_shape); const auto axes_data = std::make_shared(element::Type_t::i32, Shape{axes.size()}, axes); auto normalize = std::make_shared(in, axes_data, eps, eps_mode); @@ -306,273 +304,305 @@ std::vector generateParamsForNormalizeL2() { 0.1, "normalize_l2_4D_axes_empty_max"), NormalizeL2Params( - Shape{2, 2, 3, 4}, - Shape{2, 2, 3, 4}, - ET, - ET, - static_cast(0), - std::vector{0., 0.0399648, 0.0766909, 0.110424, 0.141413, 0.169897, 0.196106, 0.22025, - 0.242524, 0.263106, 0.282155, 0.299815, 0.316217, 0.331475, 0.345695, 0.358969, - 0.371381, 0.383005, 0.39391, 0.404155, 0.413794, 0.422877, 0.431447, 0.439545, - 0.999913, 0.999121, 0.996981, 0.993816, 0.989888, 0.985403, 0.980528, 0.975393, - 0.970098, 0.964723, 0.959327, 0.953958, 0.94865, 0.94343, 0.938315, 0.933319, - 0.928452, 0.923719, 0.919123, 0.914666, 0.910347, 0.906165, 0.902117, 0.8982}, - std::vector{0}, - op::EpsMode::ADD, - 0.1, - "normalize_l2_4D_axes_0_add"), - NormalizeL2Params(Shape{2, 2, 3, 4}, - Shape{2, 2, 3, 4}, - ET, - ET, - static_cast(0), - std::vector{0., 0.03996804, 0.07669649, 0.11043153, 0.14142135, 0.1699069, 0.19611612, 0.22026087, - 0.2425356, 0.26311737, 0.2821663, 0.2998266, 0.31622776, 0.331486, 0.34570533, 0.35897905, - 0.37139067, 0.38301498, 0.3939193, 0.40416384, 0.41380292, 0.42288542, 0.43145543, 0.43955287, - 0.99999994, 0.9992009, 0.9970544, 0.9938838, 0.98994946, 0.98546, 0.9805806, 0.97544104, - 0.9701424, 0.96476364, 0.9593654, 0.95399374, 0.9486833, 0.9434601, 0.93834305, 0.93334556, - 0.9284767, 0.923742, 0.919145, 0.91468656, 0.9103665, 0.90618306, 0.90213406, 0.8982167}, - std::vector{0}, - op::EpsMode::MAX, - 0.1, - "normalize_l2_4D_axes_0_max"), - NormalizeL2Params(Shape{2, 2, 3, 4}, - Shape{2, 2, 3, 4}, - ET, - ET, - static_cast(0), - std::vector{0., 0.07667395, 0.14138602, 0.19607423, 0.24249104, 0.28212142, 0.31618387, 0.3456632, - 0.37135068, 0.3938816, 0.41376755, 0.43142232, 0.9996529, 0.9967614, 0.9897021, 0.9803712, - 0.96996415, 0.9592128, 0.94855154, 0.93822867, 0.9283767, 0.9190571, 0.9102886, 0.9020648, - 0.5546854, 0.55984336, 0.56467056, 0.56919736, 0.5734503, 0.57745326, 0.58122724, 0.5847912, - 0.58816177, 0.59135413, 0.594382, 0.59725744, 0.8320281, 0.8285682, 0.82528776, 0.82217395, - 0.8192147, 0.8163994, 0.8137182, 0.81116194, 0.8087224, 0.806392, 0.8041638, 0.8020314}, - std::vector{1}, - op::EpsMode::ADD, - 0.1, - "normalize_l2_4D_axes_1_add"), - NormalizeL2Params(Shape{2, 2, 3, 4}, - Shape{2, 2, 3, 4}, - ET, - ET, - static_cast(0), - std::vector{0., 0.07669649, 0.14142135, 0.19611612, 0.2425356, 0.2821663, 0.31622776, 0.34570533, - 0.37139067, 0.3939193, 0.41380292, 0.43145543, 0.99999994, 0.9970544, 0.98994946, 0.9805806, - 0.9701424, 0.9593654, 0.9486833, 0.93834305, 0.9284767, 0.919145, 0.9103665, 0.90213406, - 0.5547002, 0.55985737, 0.56468385, 0.5692099, 0.57346237, 0.57746464, 0.58123815, 0.5848015, - 0.58817166, 0.59136367, 0.59439105, 0.5972662, 0.83205026, 0.82858896, 0.8253072, 0.8221921, - 0.8192319, 0.81641555, 0.8137334, 0.8111763, 0.808736, 0.80640495, 0.8041761, 0.8020432}, - std::vector{1}, - op::EpsMode::MAX, - 0.1, - "normalize_l2_4D_axes_1_max"), - NormalizeL2Params(Shape{2, 2, 3, 4}, - Shape{2, 2, 3, 4}, - ET, - ET, - static_cast(0), - std::vector{0, 0.0966285, 0.168971, 0.224168, 0.446934, 0.483143, 0.506912, 0.523058, - 0.893869, 0.869657, 0.844853, 0.821949, 0.424238, 0.43355, 0.441814, 0.449194, - 0.56565, 0.56695, 0.568047, 0.56898, 0.707063, 0.70035, 0.694279, 0.688765, - 0.491529, 0.494579, 0.497422, 0.500077, 0.57345, 0.573712, 0.573949, 0.574163, - 0.655372, 0.652845, 0.650475, 0.648248, 0.517886, 0.519373, 0.520787, 0.522135, - 0.575429, 0.575521, 0.575607, 0.575687, 0.632972, 0.63167, 0.630427, 0.629239}, - std::vector{2}, - op::EpsMode::ADD, - 0.1, - "normalize_l2_4D_axes_2_add"), - NormalizeL2Params(Shape{2, 2, 3, 4}, - Shape{2, 2, 3, 4}, - ET, - ET, - static_cast(0), - std::vector{0., 0.09667365, 0.16903085, 0.22423053, 0.4472136, 0.48336822, 0.50709254, 0.52320457, - 0.8944272, 0.8700628, 0.8451542, 0.8221786, 0.42426404, 0.4335743, 0.4418361, 0.4492145, - 0.5656854, 0.5669818, 0.56807494, 0.569005, 0.7071067, 0.70038927, 0.6943139, 0.68879557, - 0.49153918, 0.4945891, 0.49743116, 0.5000857, 0.57346237, 0.5737234, 0.57395905, 0.5741725, - 0.65538555, 0.6528576, 0.6504869, 0.6482592, 0.51789176, 0.5193782, 0.52079225, 0.5221394, - 0.5754353, 0.5755272, 0.57561255, 0.5756921, 0.63297886, 0.6316762, 0.6304327, 0.62924486}, - std::vector{2}, - op::EpsMode::MAX, - 0.1, - "normalize_l2_4D_axes_2_max"), - NormalizeL2Params(Shape{2, 2, 3, 4}, - Shape{2, 2, 3, 4}, - ET, - ET, - static_cast(0), - std::vector{0, 0.266312, 0.532624, 0.798935, 0.356207, 0.445259, 0.534311, 0.623362, - 0.41811, 0.470373, 0.522637, 0.574901, 0.442898, 0.479806, 0.516714, 0.553622, - 0.456194, 0.484706, 0.513219, 0.541731, 0.464476, 0.4877, 0.510924, 0.534148, - 0.470128, 0.489716, 0.509305, 0.528893, 0.474229, 0.491166, 0.508102, 0.525039, - 0.477341, 0.492258, 0.507175, 0.522092, 0.479783, 0.49311, 0.506437, 0.519764, - 0.481749, 0.493793, 0.505837, 0.517881, 0.483368, 0.494353, 0.505339, 0.516325}, - std::vector{3}, - op::EpsMode::ADD, - 0.1, - "normalize_l2_4D_axes_3_add"), - NormalizeL2Params(Shape{2, 2, 3, 4}, - Shape{2, 2, 3, 4}, - ET, - ET, - static_cast(0), - std::vector{0., 0.26726124, 0.5345225, 0.8017837, 0.3563483, 0.44543537, 0.5345225, 0.62360954, - 0.41816667, 0.4704375, 0.52270836, 0.5749792, 0.44292808, 0.47983873, 0.5167494, 0.5536601, - 0.45621273, 0.484726, 0.5132393, 0.54175264, 0.4644887, 0.4877131, 0.5109376, 0.534162, - 0.47013652, 0.48972553, 0.50931454, 0.5289036, 0.47423577, 0.49117276, 0.50810975, 0.5250467, - 0.47734618, 0.49226326, 0.50718033, 0.5220974, 0.4797868, 0.49311423, 0.50644165, 0.5197691, - 0.48175293, 0.49379677, 0.5058406, 0.51788443, 0.48337057, 0.49435627, 0.50534195, 0.5163277}, - std::vector{3}, - op::EpsMode::MAX, - 0.1, - "normalize_l2_4D_axes_3_max"), - NormalizeL2Params(Shape{2, 2, 3, 4}, - Shape{2, 2, 3, 4}, - ET, - ET, - static_cast(0), - std::vector{0., 0.04445103, 0.08890206, 0.1333531, 0.17780413, 0.22225516, 0.2667062, 0.31115723, - 0.35560825, 0.40005928, 0.4445103, 0.48896134, 0.19420375, 0.2103874, 0.22657104, 0.24275468, - 0.2589383, 0.275122, 0.29130563, 0.30748928, 0.32367292, 0.33985656, 0.3560402, 0.37222385, - 0.2332616, 0.24298084, 0.25270006, 0.2624193, 0.27213854, 0.2818578, 0.291577, 0.30129623, - 0.3110155, 0.3207347, 0.33045393, 0.34017318, 0.2495545, 0.25648656, 0.26341864, 0.27035072, - 0.27728277, 0.28421485, 0.29114693, 0.29807898, 0.30501106, 0.3119431, 0.3188752, 0.32580727}, - std::vector{2, 3}, - op::EpsMode::ADD, - 0.1, - "normalize_l2_4D_axes_23_add"), - NormalizeL2Params(Shape{2, 2, 3, 4}, - Shape{2, 2, 3, 4}, - ET, - ET, - static_cast(0), - std::vector{0., 0.04445542, 0.08891085, 0.13336627, 0.1778217, 0.22227712, 0.26673254, 0.31118798, - 0.3556434, 0.4000988, 0.44455424, 0.48900968, 0.19420628, 0.21039014, 0.226574, 0.24275786, - 0.2589417, 0.27512556, 0.29130942, 0.30749327, 0.32367712, 0.339861, 0.35604486, 0.3722287, - 0.23326269, 0.24298197, 0.25270125, 0.26242054, 0.2721398, 0.28185907, 0.29157835, 0.30129763, - 0.31101692, 0.3207362, 0.33045548, 0.34017476, 0.24955511, 0.2564872, 0.26341927, 0.27035138, - 0.27728346, 0.28421554, 0.29114762, 0.2980797, 0.3050118, 0.3119439, 0.31887597, 0.32580805}, - std::vector{2, 3}, - op::EpsMode::MAX, - 0.1, - "normalize_l2_4D_axes_23_max"), - NormalizeL2Params(Shape{2, 2, 3, 4}, - Shape{2, 2, 3, 4}, - ET, - ET, - static_cast(0), - std::vector{0, 0.0152075, 0.030415, 0.0456224, 0.0608299, 0.0760374, 0.0912449, 0.106452, 0.12166, 0.136867, - 0.152075, 0.167282, 0.18249, 0.197697, 0.212905, 0.228112, 0.24332, 0.258527, 0.273735, 0.288942, - 0.30415, 0.319357, 0.334565, 0.349772, 0.135448, 0.141092, 0.146736, 0.15238, 0.158023, 0.163667, - 0.169311, 0.174954, 0.180598, 0.186242, 0.191885, 0.197529, 0.203173, 0.208816, 0.21446, 0.220104, - 0.225747, 0.231391, 0.237035, 0.242678, 0.248322, 0.253966, 0.25961, 0.265253}, - std::vector{1, 2, 3}, - op::EpsMode::ADD, - 1e-9, - "normalize_l2_4D_axes_123_add"), - NormalizeL2Params(Shape{2, 2, 3, 4}, - Shape{2, 2, 3, 4}, - ET, - ET, - static_cast(0), - std::vector{0., 0.01520748, 0.03041495, 0.04562243, 0.06082991, 0.07603738, 0.09124486, 0.10645234, - 0.12165982, 0.13686728, 0.15207477, 0.16728225, 0.18248972, 0.19769719, 0.21290468, 0.22811216, - 0.24331963, 0.2585271, 0.27373457, 0.28894207, 0.30414954, 0.319357, 0.3345645, 0.34977198, - 0.13544846, 0.14109215, 0.14673583, 0.15237951, 0.15802321, 0.16366689, 0.16931057, 0.17495427, - 0.18059795, 0.18624163, 0.19188532, 0.197529, 0.20317268, 0.20881638, 0.21446006, 0.22010374, - 0.22574744, 0.23139112, 0.2370348, 0.2426785, 0.24832217, 0.25396585, 0.25960955, 0.26525325}, - std::vector{1, 2, 3}, - op::EpsMode::MAX, - 0.1, - "normalize_l2_4D_axes_123_max"), - NormalizeL2Params(Shape{2, 2, 3, 4}, - Shape{2, 2, 3, 4}, - ET, - ET, - static_cast(0), - std::vector{0, 0.0152066, 0.0304132, 0.0456198, 0.0608264, 0.076033, 0.0912396, 0.106446, 0.121653, 0.136859, - 0.152066, 0.167273, 0.182479, 0.197686, 0.212892, 0.228099, 0.243306, 0.258512, 0.273719, 0.288925, - 0.304132, 0.319339, 0.334545, 0.349752, 0.135447, 0.141091, 0.146735, 0.152378, 0.158022, 0.163666, - 0.169309, 0.174953, 0.180597, 0.18624, 0.191884, 0.197527, 0.203171, 0.208815, 0.214458, 0.220102, - 0.225746, 0.231389, 0.237033, 0.242677, 0.24832, 0.253964, 0.259607, 0.265251}, - std::vector{1, 2, 3}, - op::EpsMode::ADD, - 0.5, - "normalize_l2_4D_axes_123_big_eps_add"), - NormalizeL2Params(Shape{2, 2, 3, 4}, - Shape{2, 2, 3, 4}, - ET, - ET, - static_cast(0), - std::vector{0., 0.01520748, 0.03041495, 0.04562243, 0.06082991, 0.07603738, 0.09124486, 0.10645234, - 0.12165982, 0.13686728, 0.15207477, 0.16728225, 0.18248972, 0.19769719, 0.21290468, 0.22811216, - 0.24331963, 0.2585271, 0.27373457, 0.28894207, 0.30414954, 0.319357, 0.3345645, 0.34977198, - 0.13544846, 0.14109215, 0.14673583, 0.15237951, 0.15802321, 0.16366689, 0.16931057, 0.17495427, - 0.18059795, 0.18624163, 0.19188532, 0.197529, 0.20317268, 0.20881638, 0.21446006, 0.22010374, - 0.22574744, 0.23139112, 0.2370348, 0.2426785, 0.24832217, 0.25396585, 0.25960955, 0.26525325}, - std::vector{1, 2, 3}, - op::EpsMode::MAX, - 100, - "normalize_l2_4D_axes_123_big_eps_max"), - NormalizeL2Params(Shape{2, 2, 3, 4}, - Shape{2, 2, 3, 4}, - ET, - ET, - static_cast(0), - std::vector{0, 0.0152075, 0.030415, 0.0456224, 0.0608299, 0.0760374, 0.0912449, 0.106452, 0.12166, 0.136867, - 0.152075, 0.167282, 0.18249, 0.197697, 0.212905, 0.228112, 0.24332, 0.258527, 0.273735, 0.288942, - 0.30415, 0.319357, 0.334565, 0.349772, 0.135448, 0.141092, 0.146736, 0.15238, 0.158023, 0.163667, - 0.169311, 0.174954, 0.180598, 0.186242, 0.191885, 0.197529, 0.203173, 0.208816, 0.21446, 0.220104, - 0.225747, 0.231391, 0.237035, 0.242678, 0.248322, 0.253966, 0.25961, 0.265253}, - std::vector{3, 1, 2}, - op::EpsMode::ADD, - 1e-9, - "normalize_l2_4D_axes_unsorted_312_add"), - NormalizeL2Params(Shape{2, 2, 3, 4}, - Shape{2, 2, 3, 4}, - ET, - ET, - static_cast(0), - std::vector{0., 0.01520748, 0.03041495, 0.04562243, 0.06082991, 0.07603738, 0.09124486, 0.10645234, - 0.12165982, 0.13686728, 0.15207477, 0.16728225, 0.18248972, 0.19769719, 0.21290468, 0.22811216, - 0.24331963, 0.2585271, 0.27373457, 0.28894207, 0.30414954, 0.319357, 0.3345645, 0.34977198, - 0.13544846, 0.14109215, 0.14673583, 0.15237951, 0.15802321, 0.16366689, 0.16931057, 0.17495427, - 0.18059795, 0.18624163, 0.19188532, 0.197529, 0.20317268, 0.20881638, 0.21446006, 0.22010374, - 0.22574744, 0.23139112, 0.2370348, 0.2426785, 0.24832217, 0.25396585, 0.25960955, 0.26525325}, - std::vector{3, 1, 2}, - op::EpsMode::MAX, - 0.1, - "normalize_l2_4D_axes_unsorted_312_max"), - NormalizeL2Params(Shape{2, 2, 3, 4}, - Shape{2, 2, 3, 4}, - ET, - ET, - static_cast(0), - std::vector{0., 0.00529108, 0.01058216, 0.01587324, 0.02116432, 0.02645539, 0.03174648, 0.03703756, - 0.04232863, 0.04761971, 0.05291079, 0.05820187, 0.06349295, 0.06878403, 0.07407511, 0.07936618, - 0.08465727, 0.08994835, 0.09523942, 0.10053051, 0.10582158, 0.11111266, 0.11640374, 0.12169482, - 0.12698591, 0.13227698, 0.13756806, 0.14285913, 0.14815022, 0.1534413, 0.15873237, 0.16402346, - 0.16931453, 0.17460561, 0.1798967, 0.18518777, 0.19047885, 0.19576994, 0.20106101, 0.20635208, - 0.21164316, 0.21693425, 0.22222532, 0.2275164, 0.23280749, 0.23809856, 0.24338964, 0.24868073}, - std::vector{0, 1, 2, 3}, - op::EpsMode::ADD, - 0.1, - "normalize_l2_4D_axes_0123_add"), - NormalizeL2Params(Shape{2, 2, 3, 4}, - Shape{2, 2, 3, 4}, - ET, - ET, - static_cast(0), - std::vector{0., 0.00529108, 0.01058216, 0.01587324, 0.02116432, 0.02645539, 0.03174648, 0.03703756, - 0.04232863, 0.04761971, 0.05291079, 0.05820187, 0.06349295, 0.06878403, 0.07407511, 0.07936618, - 0.08465727, 0.08994835, 0.09523942, 0.10053051, 0.10582158, 0.11111266, 0.11640374, 0.12169482, - 0.12698591, 0.13227698, 0.13756806, 0.14285913, 0.14815022, 0.1534413, 0.15873237, 0.16402346, - 0.16931453, 0.17460561, 0.1798967, 0.18518777, 0.19047885, 0.19576994, 0.20106101, 0.20635208, - 0.21164316, 0.21693425, 0.22222532, 0.2275164, 0.23280749, 0.23809856, 0.24338964, 0.24868073}, - std::vector{0, 1, 2, 3}, - op::EpsMode::MAX, - 0.1, - "normalize_l2_4D_axes_0123_max"), + Shape{2, 2, 3, 4}, + Shape{2, 2, 3, 4}, + ET, + ET, + static_cast(0), + std::vector{0., 0.0399648, 0.0766909, 0.110424, 0.141413, 0.169897, 0.196106, 0.22025, + 0.242524, 0.263106, 0.282155, 0.299815, 0.316217, 0.331475, 0.345695, 0.358969, + 0.371381, 0.383005, 0.39391, 0.404155, 0.413794, 0.422877, 0.431447, 0.439545, + 0.999913, 0.999121, 0.996981, 0.993816, 0.989888, 0.985403, 0.980528, 0.975393, + 0.970098, 0.964723, 0.959327, 0.953958, 0.94865, 0.94343, 0.938315, 0.933319, + 0.928452, 0.923719, 0.919123, 0.914666, 0.910347, 0.906165, 0.902117, 0.8982}, + std::vector{0}, + op::EpsMode::ADD, + 0.1, + "normalize_l2_4D_axes_0_add"), + NormalizeL2Params( + Shape{2, 2, 3, 4}, + Shape{2, 2, 3, 4}, + ET, + ET, + static_cast(0), + std::vector{0., 0.03996804, 0.07669649, 0.11043153, 0.14142135, 0.1699069, 0.19611612, + 0.22026087, 0.2425356, 0.26311737, 0.2821663, 0.2998266, 0.31622776, 0.331486, + 0.34570533, 0.35897905, 0.37139067, 0.38301498, 0.3939193, 0.40416384, 0.41380292, + 0.42288542, 0.43145543, 0.43955287, 0.99999994, 0.9992009, 0.9970544, 0.9938838, + 0.98994946, 0.98546, 0.9805806, 0.97544104, 0.9701424, 0.96476364, 0.9593654, + 0.95399374, 0.9486833, 0.9434601, 0.93834305, 0.93334556, 0.9284767, 0.923742, + 0.919145, 0.91468656, 0.9103665, 0.90618306, 0.90213406, 0.8982167}, + std::vector{0}, + op::EpsMode::MAX, + 0.1, + "normalize_l2_4D_axes_0_max"), + NormalizeL2Params( + Shape{2, 2, 3, 4}, + Shape{2, 2, 3, 4}, + ET, + ET, + static_cast(0), + std::vector{0., 0.07667395, 0.14138602, 0.19607423, 0.24249104, 0.28212142, 0.31618387, + 0.3456632, 0.37135068, 0.3938816, 0.41376755, 0.43142232, 0.9996529, 0.9967614, + 0.9897021, 0.9803712, 0.96996415, 0.9592128, 0.94855154, 0.93822867, 0.9283767, + 0.9190571, 0.9102886, 0.9020648, 0.5546854, 0.55984336, 0.56467056, 0.56919736, + 0.5734503, 0.57745326, 0.58122724, 0.5847912, 0.58816177, 0.59135413, 0.594382, + 0.59725744, 0.8320281, 0.8285682, 0.82528776, 0.82217395, 0.8192147, 0.8163994, + 0.8137182, 0.81116194, 0.8087224, 0.806392, 0.8041638, 0.8020314}, + std::vector{1}, + op::EpsMode::ADD, + 0.1, + "normalize_l2_4D_axes_1_add"), + NormalizeL2Params( + Shape{2, 2, 3, 4}, + Shape{2, 2, 3, 4}, + ET, + ET, + static_cast(0), + std::vector{0., 0.07669649, 0.14142135, 0.19611612, 0.2425356, 0.2821663, 0.31622776, + 0.34570533, 0.37139067, 0.3939193, 0.41380292, 0.43145543, 0.99999994, 0.9970544, + 0.98994946, 0.9805806, 0.9701424, 0.9593654, 0.9486833, 0.93834305, 0.9284767, + 0.919145, 0.9103665, 0.90213406, 0.5547002, 0.55985737, 0.56468385, 0.5692099, + 0.57346237, 0.57746464, 0.58123815, 0.5848015, 0.58817166, 0.59136367, 0.59439105, + 0.5972662, 0.83205026, 0.82858896, 0.8253072, 0.8221921, 0.8192319, 0.81641555, + 0.8137334, 0.8111763, 0.808736, 0.80640495, 0.8041761, 0.8020432}, + std::vector{1}, + op::EpsMode::MAX, + 0.1, + "normalize_l2_4D_axes_1_max"), + NormalizeL2Params( + Shape{2, 2, 3, 4}, + Shape{2, 2, 3, 4}, + ET, + ET, + static_cast(0), + std::vector{0, 0.0966285, 0.168971, 0.224168, 0.446934, 0.483143, 0.506912, 0.523058, + 0.893869, 0.869657, 0.844853, 0.821949, 0.424238, 0.43355, 0.441814, 0.449194, + 0.56565, 0.56695, 0.568047, 0.56898, 0.707063, 0.70035, 0.694279, 0.688765, + 0.491529, 0.494579, 0.497422, 0.500077, 0.57345, 0.573712, 0.573949, 0.574163, + 0.655372, 0.652845, 0.650475, 0.648248, 0.517886, 0.519373, 0.520787, 0.522135, + 0.575429, 0.575521, 0.575607, 0.575687, 0.632972, 0.63167, 0.630427, 0.629239}, + std::vector{2}, + op::EpsMode::ADD, + 0.1, + "normalize_l2_4D_axes_2_add"), + NormalizeL2Params( + Shape{2, 2, 3, 4}, + Shape{2, 2, 3, 4}, + ET, + ET, + static_cast(0), + std::vector{0., 0.09667365, 0.16903085, 0.22423053, 0.4472136, 0.48336822, 0.50709254, + 0.52320457, 0.8944272, 0.8700628, 0.8451542, 0.8221786, 0.42426404, 0.4335743, + 0.4418361, 0.4492145, 0.5656854, 0.5669818, 0.56807494, 0.569005, 0.7071067, + 0.70038927, 0.6943139, 0.68879557, 0.49153918, 0.4945891, 0.49743116, 0.5000857, + 0.57346237, 0.5737234, 0.57395905, 0.5741725, 0.65538555, 0.6528576, 0.6504869, + 0.6482592, 0.51789176, 0.5193782, 0.52079225, 0.5221394, 0.5754353, 0.5755272, + 0.57561255, 0.5756921, 0.63297886, 0.6316762, 0.6304327, 0.62924486}, + std::vector{2}, + op::EpsMode::MAX, + 0.1, + "normalize_l2_4D_axes_2_max"), + NormalizeL2Params( + Shape{2, 2, 3, 4}, + Shape{2, 2, 3, 4}, + ET, + ET, + static_cast(0), + std::vector{0, 0.266312, 0.532624, 0.798935, 0.356207, 0.445259, 0.534311, 0.623362, + 0.41811, 0.470373, 0.522637, 0.574901, 0.442898, 0.479806, 0.516714, 0.553622, + 0.456194, 0.484706, 0.513219, 0.541731, 0.464476, 0.4877, 0.510924, 0.534148, + 0.470128, 0.489716, 0.509305, 0.528893, 0.474229, 0.491166, 0.508102, 0.525039, + 0.477341, 0.492258, 0.507175, 0.522092, 0.479783, 0.49311, 0.506437, 0.519764, + 0.481749, 0.493793, 0.505837, 0.517881, 0.483368, 0.494353, 0.505339, 0.516325}, + std::vector{3}, + op::EpsMode::ADD, + 0.1, + "normalize_l2_4D_axes_3_add"), + NormalizeL2Params( + Shape{2, 2, 3, 4}, + Shape{2, 2, 3, 4}, + ET, + ET, + static_cast(0), + std::vector{0., 0.26726124, 0.5345225, 0.8017837, 0.3563483, 0.44543537, 0.5345225, + 0.62360954, 0.41816667, 0.4704375, 0.52270836, 0.5749792, 0.44292808, 0.47983873, + 0.5167494, 0.5536601, 0.45621273, 0.484726, 0.5132393, 0.54175264, 0.4644887, + 0.4877131, 0.5109376, 0.534162, 0.47013652, 0.48972553, 0.50931454, 0.5289036, + 0.47423577, 0.49117276, 0.50810975, 0.5250467, 0.47734618, 0.49226326, 0.50718033, + 0.5220974, 0.4797868, 0.49311423, 0.50644165, 0.5197691, 0.48175293, 0.49379677, + 0.5058406, 0.51788443, 0.48337057, 0.49435627, 0.50534195, 0.5163277}, + std::vector{3}, + op::EpsMode::MAX, + 0.1, + "normalize_l2_4D_axes_3_max"), + NormalizeL2Params( + Shape{2, 2, 3, 4}, + Shape{2, 2, 3, 4}, + ET, + ET, + static_cast(0), + std::vector{0., 0.04445103, 0.08890206, 0.1333531, 0.17780413, 0.22225516, 0.2667062, + 0.31115723, 0.35560825, 0.40005928, 0.4445103, 0.48896134, 0.19420375, 0.2103874, + 0.22657104, 0.24275468, 0.2589383, 0.275122, 0.29130563, 0.30748928, 0.32367292, + 0.33985656, 0.3560402, 0.37222385, 0.2332616, 0.24298084, 0.25270006, 0.2624193, + 0.27213854, 0.2818578, 0.291577, 0.30129623, 0.3110155, 0.3207347, 0.33045393, + 0.34017318, 0.2495545, 0.25648656, 0.26341864, 0.27035072, 0.27728277, 0.28421485, + 0.29114693, 0.29807898, 0.30501106, 0.3119431, 0.3188752, 0.32580727}, + std::vector{2, 3}, + op::EpsMode::ADD, + 0.1, + "normalize_l2_4D_axes_23_add"), + NormalizeL2Params( + Shape{2, 2, 3, 4}, + Shape{2, 2, 3, 4}, + ET, + ET, + static_cast(0), + std::vector{0., 0.04445542, 0.08891085, 0.13336627, 0.1778217, 0.22227712, 0.26673254, + 0.31118798, 0.3556434, 0.4000988, 0.44455424, 0.48900968, 0.19420628, 0.21039014, + 0.226574, 0.24275786, 0.2589417, 0.27512556, 0.29130942, 0.30749327, 0.32367712, + 0.339861, 0.35604486, 0.3722287, 0.23326269, 0.24298197, 0.25270125, 0.26242054, + 0.2721398, 0.28185907, 0.29157835, 0.30129763, 0.31101692, 0.3207362, 0.33045548, + 0.34017476, 0.24955511, 0.2564872, 0.26341927, 0.27035138, 0.27728346, 0.28421554, + 0.29114762, 0.2980797, 0.3050118, 0.3119439, 0.31887597, 0.32580805}, + std::vector{2, 3}, + op::EpsMode::MAX, + 0.1, + "normalize_l2_4D_axes_23_max"), + NormalizeL2Params( + Shape{2, 2, 3, 4}, + Shape{2, 2, 3, 4}, + ET, + ET, + static_cast(0), + std::vector{0, 0.0152075, 0.030415, 0.0456224, 0.0608299, 0.0760374, 0.0912449, 0.106452, + 0.12166, 0.136867, 0.152075, 0.167282, 0.18249, 0.197697, 0.212905, 0.228112, + 0.24332, 0.258527, 0.273735, 0.288942, 0.30415, 0.319357, 0.334565, 0.349772, + 0.135448, 0.141092, 0.146736, 0.15238, 0.158023, 0.163667, 0.169311, 0.174954, + 0.180598, 0.186242, 0.191885, 0.197529, 0.203173, 0.208816, 0.21446, 0.220104, + 0.225747, 0.231391, 0.237035, 0.242678, 0.248322, 0.253966, 0.25961, 0.265253}, + std::vector{1, 2, 3}, + op::EpsMode::ADD, + 1e-9, + "normalize_l2_4D_axes_123_add"), + NormalizeL2Params( + Shape{2, 2, 3, 4}, + Shape{2, 2, 3, 4}, + ET, + ET, + static_cast(0), + std::vector{0., 0.01520748, 0.03041495, 0.04562243, 0.06082991, 0.07603738, 0.09124486, + 0.10645234, 0.12165982, 0.13686728, 0.15207477, 0.16728225, 0.18248972, 0.19769719, + 0.21290468, 0.22811216, 0.24331963, 0.2585271, 0.27373457, 0.28894207, 0.30414954, + 0.319357, 0.3345645, 0.34977198, 0.13544846, 0.14109215, 0.14673583, 0.15237951, + 0.15802321, 0.16366689, 0.16931057, 0.17495427, 0.18059795, 0.18624163, 0.19188532, + 0.197529, 0.20317268, 0.20881638, 0.21446006, 0.22010374, 0.22574744, 0.23139112, + 0.2370348, 0.2426785, 0.24832217, 0.25396585, 0.25960955, 0.26525325}, + std::vector{1, 2, 3}, + op::EpsMode::MAX, + 0.1, + "normalize_l2_4D_axes_123_max"), + NormalizeL2Params( + Shape{2, 2, 3, 4}, + Shape{2, 2, 3, 4}, + ET, + ET, + static_cast(0), + std::vector{0, 0.0152066, 0.0304132, 0.0456198, 0.0608264, 0.076033, 0.0912396, 0.106446, + 0.121653, 0.136859, 0.152066, 0.167273, 0.182479, 0.197686, 0.212892, 0.228099, + 0.243306, 0.258512, 0.273719, 0.288925, 0.304132, 0.319339, 0.334545, 0.349752, + 0.135447, 0.141091, 0.146735, 0.152378, 0.158022, 0.163666, 0.169309, 0.174953, + 0.180597, 0.18624, 0.191884, 0.197527, 0.203171, 0.208815, 0.214458, 0.220102, + 0.225746, 0.231389, 0.237033, 0.242677, 0.24832, 0.253964, 0.259607, 0.265251}, + std::vector{1, 2, 3}, + op::EpsMode::ADD, + 0.5, + "normalize_l2_4D_axes_123_big_eps_add"), + NormalizeL2Params( + Shape{2, 2, 3, 4}, + Shape{2, 2, 3, 4}, + ET, + ET, + static_cast(0), + std::vector{0., 0.01520748, 0.03041495, 0.04562243, 0.06082991, 0.07603738, 0.09124486, + 0.10645234, 0.12165982, 0.13686728, 0.15207477, 0.16728225, 0.18248972, 0.19769719, + 0.21290468, 0.22811216, 0.24331963, 0.2585271, 0.27373457, 0.28894207, 0.30414954, + 0.319357, 0.3345645, 0.34977198, 0.13544846, 0.14109215, 0.14673583, 0.15237951, + 0.15802321, 0.16366689, 0.16931057, 0.17495427, 0.18059795, 0.18624163, 0.19188532, + 0.197529, 0.20317268, 0.20881638, 0.21446006, 0.22010374, 0.22574744, 0.23139112, + 0.2370348, 0.2426785, 0.24832217, 0.25396585, 0.25960955, 0.26525325}, + std::vector{1, 2, 3}, + op::EpsMode::MAX, + 100, + "normalize_l2_4D_axes_123_big_eps_max"), + NormalizeL2Params( + Shape{2, 2, 3, 4}, + Shape{2, 2, 3, 4}, + ET, + ET, + static_cast(0), + std::vector{0, 0.0152075, 0.030415, 0.0456224, 0.0608299, 0.0760374, 0.0912449, 0.106452, + 0.12166, 0.136867, 0.152075, 0.167282, 0.18249, 0.197697, 0.212905, 0.228112, + 0.24332, 0.258527, 0.273735, 0.288942, 0.30415, 0.319357, 0.334565, 0.349772, + 0.135448, 0.141092, 0.146736, 0.15238, 0.158023, 0.163667, 0.169311, 0.174954, + 0.180598, 0.186242, 0.191885, 0.197529, 0.203173, 0.208816, 0.21446, 0.220104, + 0.225747, 0.231391, 0.237035, 0.242678, 0.248322, 0.253966, 0.25961, 0.265253}, + std::vector{3, 1, 2}, + op::EpsMode::ADD, + 1e-9, + "normalize_l2_4D_axes_unsorted_312_add"), + NormalizeL2Params( + Shape{2, 2, 3, 4}, + Shape{2, 2, 3, 4}, + ET, + ET, + static_cast(0), + std::vector{0., 0.01520748, 0.03041495, 0.04562243, 0.06082991, 0.07603738, 0.09124486, + 0.10645234, 0.12165982, 0.13686728, 0.15207477, 0.16728225, 0.18248972, 0.19769719, + 0.21290468, 0.22811216, 0.24331963, 0.2585271, 0.27373457, 0.28894207, 0.30414954, + 0.319357, 0.3345645, 0.34977198, 0.13544846, 0.14109215, 0.14673583, 0.15237951, + 0.15802321, 0.16366689, 0.16931057, 0.17495427, 0.18059795, 0.18624163, 0.19188532, + 0.197529, 0.20317268, 0.20881638, 0.21446006, 0.22010374, 0.22574744, 0.23139112, + 0.2370348, 0.2426785, 0.24832217, 0.25396585, 0.25960955, 0.26525325}, + std::vector{3, 1, 2}, + op::EpsMode::MAX, + 0.1, + "normalize_l2_4D_axes_unsorted_312_max"), + NormalizeL2Params( + Shape{2, 2, 3, 4}, + Shape{2, 2, 3, 4}, + ET, + ET, + static_cast(0), + std::vector{0., 0.00529108, 0.01058216, 0.01587324, 0.02116432, 0.02645539, 0.03174648, + 0.03703756, 0.04232863, 0.04761971, 0.05291079, 0.05820187, 0.06349295, 0.06878403, + 0.07407511, 0.07936618, 0.08465727, 0.08994835, 0.09523942, 0.10053051, 0.10582158, + 0.11111266, 0.11640374, 0.12169482, 0.12698591, 0.13227698, 0.13756806, 0.14285913, + 0.14815022, 0.1534413, 0.15873237, 0.16402346, 0.16931453, 0.17460561, 0.1798967, + 0.18518777, 0.19047885, 0.19576994, 0.20106101, 0.20635208, 0.21164316, 0.21693425, + 0.22222532, 0.2275164, 0.23280749, 0.23809856, 0.24338964, 0.24868073}, + std::vector{0, 1, 2, 3}, + op::EpsMode::ADD, + 0.1, + "normalize_l2_4D_axes_0123_add"), + NormalizeL2Params( + Shape{2, 2, 3, 4}, + Shape{2, 2, 3, 4}, + ET, + ET, + static_cast(0), + std::vector{0., 0.00529108, 0.01058216, 0.01587324, 0.02116432, 0.02645539, 0.03174648, + 0.03703756, 0.04232863, 0.04761971, 0.05291079, 0.05820187, 0.06349295, 0.06878403, + 0.07407511, 0.07936618, 0.08465727, 0.08994835, 0.09523942, 0.10053051, 0.10582158, + 0.11111266, 0.11640374, 0.12169482, 0.12698591, 0.13227698, 0.13756806, 0.14285913, + 0.14815022, 0.1534413, 0.15873237, 0.16402346, 0.16931453, 0.17460561, 0.1798967, + 0.18518777, 0.19047885, 0.19576994, 0.20106101, 0.20635208, 0.21164316, 0.21693425, + 0.22222532, 0.2275164, 0.23280749, 0.23809856, 0.24338964, 0.24868073}, + std::vector{0, 1, 2, 3}, + op::EpsMode::MAX, + 0.1, + "normalize_l2_4D_axes_0123_max"), NormalizeL2Params(Shape{1, 2, 2, 3, 4}, Shape{1, 2, 2, 3, 4}, ET, @@ -593,186 +623,207 @@ std::vector generateParamsForNormalizeL2() { op::EpsMode::MAX, 0.1, "normalize_l2_5D_axes_empty_max"), - NormalizeL2Params(Shape{1, 2, 2, 3, 4}, - Shape{1, 2, 2, 3, 4}, - ET, - ET, - static_cast(0), - std::vector{0, 0.0399648, 0.0766909, 0.110424, 0.141413, 0.169897, 0.196106, 0.22025, - 0.242524, 0.263106, 0.282155, 0.299815, 0.316217, 0.331475, 0.345695, 0.358969, - 0.371381, 0.383005, 0.39391, 0.404155, 0.413794, 0.422877, 0.431447, 0.439545, - 0.999913, 0.999121, 0.996981, 0.993816, 0.989888, 0.985403, 0.980528, 0.975393, - 0.970098, 0.964723, 0.959327, 0.953958, 0.94865, 0.94343, 0.938315, 0.933319, - 0.928452, 0.923719, 0.919123, 0.914666, 0.910347, 0.906165, 0.902117, 0.8982}, - std::vector{1}, - op::EpsMode::ADD, - 0.1, - "normalize_l2_5D_axes_1_add"), - NormalizeL2Params(Shape{1, 2, 2, 3, 4}, - Shape{1, 2, 2, 3, 4}, - ET, - ET, - static_cast(0), - std::vector{0., 0.03996804, 0.07669649, 0.11043153, 0.14142135, 0.1699069, 0.19611612, 0.22026087, - 0.2425356, 0.26311737, 0.2821663, 0.2998266, 0.31622776, 0.331486, 0.34570533, 0.35897905, - 0.37139067, 0.38301498, 0.3939193, 0.40416384, 0.41380292, 0.42288542, 0.43145543, 0.43955287, - 0.99999994, 0.9992009, 0.9970544, 0.9938838, 0.98994946, 0.98546, 0.9805806, 0.97544104, - 0.9701424, 0.96476364, 0.9593654, 0.95399374, 0.9486833, 0.9434601, 0.93834305, 0.93334556, - 0.9284767, 0.923742, 0.919145, 0.91468656, 0.9103665, 0.90618306, 0.90213406, 0.8982167}, - std::vector{1}, - op::EpsMode::MAX, - 0.1, - "normalize_l2_5D_axes_1_max"), - NormalizeL2Params(Shape{1, 2, 2, 3, 4}, - Shape{1, 2, 2, 3, 4}, - ET, - ET, - static_cast(0), - std::vector{0., 0.07667395, 0.14138602, 0.19607423, 0.24249104, 0.28212142, 0.31618387, 0.3456632, - 0.37135068, 0.3938816, 0.41376755, 0.43142232, 0.9996529, 0.9967614, 0.9897021, 0.9803712, - 0.96996415, 0.9592128, 0.94855154, 0.93822867, 0.9283767, 0.9190571, 0.9102886, 0.9020648, - 0.5546854, 0.55984336, 0.56467056, 0.56919736, 0.5734503, 0.57745326, 0.58122724, 0.5847912, - 0.58816177, 0.59135413, 0.594382, 0.59725744, 0.8320281, 0.8285682, 0.82528776, 0.82217395, - 0.8192147, 0.8163994, 0.8137182, 0.81116194, 0.8087224, 0.806392, 0.8041638, 0.8020314}, - std::vector{2}, - op::EpsMode::ADD, - 0.1, - "normalize_l2_5D_axes_2_add"), - NormalizeL2Params(Shape{1, 2, 2, 3, 4}, - Shape{1, 2, 2, 3, 4}, - ET, - ET, - static_cast(0), - std::vector{0., 0.07669649, 0.14142135, 0.19611612, 0.2425356, 0.2821663, 0.31622776, 0.34570533, - 0.37139067, 0.3939193, 0.41380292, 0.43145543, 0.99999994, 0.9970544, 0.98994946, 0.9805806, - 0.9701424, 0.9593654, 0.9486833, 0.93834305, 0.9284767, 0.919145, 0.9103665, 0.90213406, - 0.5547002, 0.55985737, 0.56468385, 0.5692099, 0.57346237, 0.57746464, 0.58123815, 0.5848015, - 0.58817166, 0.59136367, 0.59439105, 0.5972662, 0.83205026, 0.82858896, 0.8253072, 0.8221921, - 0.8192319, 0.81641555, 0.8137334, 0.8111763, 0.808736, 0.80640495, 0.8041761, 0.8020432}, - std::vector{2}, - op::EpsMode::MAX, - 0.1, - "normalize_l2_5D_axes_2_max"), - NormalizeL2Params(Shape{1, 2, 2, 3, 4}, - Shape{1, 2, 2, 3, 4}, - ET, - ET, - static_cast(0), - std::vector{0, 0.0966285, 0.168971, 0.224168, 0.446934, 0.483143, 0.506912, 0.523058, - 0.893869, 0.869657, 0.844853, 0.821949, 0.424238, 0.43355, 0.441814, 0.449194, - 0.56565, 0.56695, 0.568047, 0.56898, 0.707063, 0.70035, 0.694279, 0.688765, - 0.491529, 0.494579, 0.497422, 0.500077, 0.57345, 0.573712, 0.573949, 0.574163, - 0.655372, 0.652845, 0.650475, 0.648248, 0.517886, 0.519373, 0.520787, 0.522135, - 0.575429, 0.575521, 0.575607, 0.575687, 0.632972, 0.63167, 0.630427, 0.629239}, - std::vector{3}, - op::EpsMode::ADD, - 0.1, - "normalize_l2_5D_axes_3_add"), - NormalizeL2Params(Shape{1, 2, 2, 3, 4}, - Shape{1, 2, 2, 3, 4}, - ET, - ET, - static_cast(0), - std::vector{0., 0.09667365, 0.16903085, 0.22423053, 0.4472136, 0.48336822, 0.50709254, 0.52320457, - 0.8944272, 0.8700628, 0.8451542, 0.8221786, 0.42426404, 0.4335743, 0.4418361, 0.4492145, - 0.5656854, 0.5669818, 0.56807494, 0.569005, 0.7071067, 0.70038927, 0.6943139, 0.68879557, - 0.49153918, 0.4945891, 0.49743116, 0.5000857, 0.57346237, 0.5737234, 0.57395905, 0.5741725, - 0.65538555, 0.6528576, 0.6504869, 0.6482592, 0.51789176, 0.5193782, 0.52079225, 0.5221394, - 0.5754353, 0.5755272, 0.57561255, 0.5756921, 0.63297886, 0.6316762, 0.6304327, 0.62924486}, - std::vector{3}, - op::EpsMode::MAX, - 0.1, - "normalize_l2_5D_axes_3_max"), - NormalizeL2Params(Shape{1, 2, 2, 3, 4}, - Shape{1, 2, 2, 3, 4}, - ET, - ET, - static_cast(0), - std::vector{0, 0.266312, 0.532624, 0.798935, 0.356207, 0.445259, 0.534311, 0.623362, - 0.41811, 0.470373, 0.522637, 0.574901, 0.442898, 0.479806, 0.516714, 0.553622, - 0.456194, 0.484706, 0.513219, 0.541731, 0.464476, 0.4877, 0.510924, 0.534148, - 0.470128, 0.489716, 0.509305, 0.528893, 0.474229, 0.491166, 0.508102, 0.525039, - 0.477341, 0.492258, 0.507175, 0.522092, 0.479783, 0.49311, 0.506437, 0.519764, - 0.481749, 0.493793, 0.505837, 0.517881, 0.483368, 0.494353, 0.505339, 0.516325}, - std::vector{4}, - op::EpsMode::ADD, - 0.1, - "normalize_l2_5D_axes_4_add"), - NormalizeL2Params(Shape{1, 2, 2, 3, 4}, - Shape{1, 2, 2, 3, 4}, - ET, - ET, - static_cast(0), - std::vector{0., 0.26726124, 0.5345225, 0.8017837, 0.3563483, 0.44543537, 0.5345225, 0.62360954, - 0.41816667, 0.4704375, 0.52270836, 0.5749792, 0.44292808, 0.47983873, 0.5167494, 0.5536601, - 0.45621273, 0.484726, 0.5132393, 0.54175264, 0.4644887, 0.4877131, 0.5109376, 0.534162, - 0.47013652, 0.48972553, 0.50931454, 0.5289036, 0.47423577, 0.49117276, 0.50810975, 0.5250467, - 0.47734618, 0.49226326, 0.50718033, 0.5220974, 0.4797868, 0.49311423, 0.50644165, 0.5197691, - 0.48175293, 0.49379677, 0.5058406, 0.51788443, 0.48337057, 0.49435627, 0.50534195, 0.5163277}, - std::vector{4}, - op::EpsMode::MAX, - 0.1, - "normalize_l2_5D_axes_4_max"), - NormalizeL2Params(Shape{1, 2, 2, 3, 4}, - Shape{1, 2, 2, 3, 4}, - ET, - ET, - static_cast(0), - std::vector{0., 0.04445103, 0.08890206, 0.1333531, 0.17780413, 0.22225516, 0.2667062, 0.31115723, - 0.35560825, 0.40005928, 0.4445103, 0.48896134, 0.19420375, 0.2103874, 0.22657104, 0.24275468, - 0.2589383, 0.275122, 0.29130563, 0.30748928, 0.32367292, 0.33985656, 0.3560402, 0.37222385, - 0.2332616, 0.24298084, 0.25270006, 0.2624193, 0.27213854, 0.2818578, 0.291577, 0.30129623, - 0.3110155, 0.3207347, 0.33045393, 0.34017318, 0.2495545, 0.25648656, 0.26341864, 0.27035072, - 0.27728277, 0.28421485, 0.29114693, 0.29807898, 0.30501106, 0.3119431, 0.3188752, 0.32580727}, - std::vector{3, 4}, - op::EpsMode::ADD, - 0.1, - "normalize_l2_5D_axes_34_add"), - NormalizeL2Params(Shape{1, 2, 2, 3, 4}, - Shape{1, 2, 2, 3, 4}, - ET, - ET, - static_cast(0), - std::vector{0., 0.04445542, 0.08891085, 0.13336627, 0.1778217, 0.22227712, 0.26673254, 0.31118798, - 0.3556434, 0.4000988, 0.44455424, 0.48900968, 0.19420628, 0.21039014, 0.226574, 0.24275786, - 0.2589417, 0.27512556, 0.29130942, 0.30749327, 0.32367712, 0.339861, 0.35604486, 0.3722287, - 0.23326269, 0.24298197, 0.25270125, 0.26242054, 0.2721398, 0.28185907, 0.29157835, 0.30129763, - 0.31101692, 0.3207362, 0.33045548, 0.34017476, 0.24955511, 0.2564872, 0.26341927, 0.27035138, - 0.27728346, 0.28421554, 0.29114762, 0.2980797, 0.3050118, 0.3119439, 0.31887597, 0.32580805}, - std::vector{3, 4}, - op::EpsMode::MAX, - 0.1, - "normalize_l2_5D_axes_34_max"), - NormalizeL2Params(Shape{1, 2, 2, 3, 4}, - Shape{1, 2, 2, 3, 4}, - ET, - ET, - static_cast(0), - std::vector{0., 0.0152073, 0.0304146, 0.0456219, 0.0608292, 0.07603651, 0.0912438, 0.10645111, - 0.12165841, 0.1368657, 0.15207301, 0.16728032, 0.1824876, 0.19769491, 0.21290222, 0.22810951, - 0.24331681, 0.25852412, 0.2737314, 0.28893873, 0.30414602, 0.3193533, 0.33456063, 0.34976792, - 0.13544825, 0.14109191, 0.1467356, 0.15237927, 0.15802296, 0.16366662, 0.1693103, 0.17495398, - 0.18059766, 0.18624133, 0.19188501, 0.19752869, 0.20317237, 0.20881604, 0.21445972, 0.2201034, - 0.22574706, 0.23139074, 0.23703443, 0.2426781, 0.24832177, 0.25396547, 0.25960913, 0.2652528}, - std::vector{2, 3, 4}, - op::EpsMode::ADD, - 0.1, - "normalize_l2_5D_axes_234_add"), - NormalizeL2Params(Shape{1, 2, 2, 3, 4}, - Shape{1, 2, 2, 3, 4}, - ET, - ET, - static_cast(0), - std::vector{0., 0.01520748, 0.03041495, 0.04562243, 0.06082991, 0.07603738, 0.09124486, 0.10645234, - 0.12165982, 0.13686728, 0.15207477, 0.16728225, 0.18248972, 0.19769719, 0.21290468, 0.22811216, - 0.24331963, 0.2585271, 0.27373457, 0.28894207, 0.30414954, 0.319357, 0.3345645, 0.34977198, - 0.13544846, 0.14109215, 0.14673583, 0.15237951, 0.15802321, 0.16366689, 0.16931057, 0.17495427, - 0.18059795, 0.18624163, 0.19188532, 0.197529, 0.20317268, 0.20881638, 0.21446006, 0.22010374, - 0.22574744, 0.23139112, 0.2370348, 0.2426785, 0.24832217, 0.25396585, 0.25960955, 0.26525325}, - std::vector{2, 3, 4}, - op::EpsMode::MAX, - 0.1, - "normalize_l2_5D_axes_234_max"), + NormalizeL2Params( + Shape{1, 2, 2, 3, 4}, + Shape{1, 2, 2, 3, 4}, + ET, + ET, + static_cast(0), + std::vector{0, 0.0399648, 0.0766909, 0.110424, 0.141413, 0.169897, 0.196106, 0.22025, + 0.242524, 0.263106, 0.282155, 0.299815, 0.316217, 0.331475, 0.345695, 0.358969, + 0.371381, 0.383005, 0.39391, 0.404155, 0.413794, 0.422877, 0.431447, 0.439545, + 0.999913, 0.999121, 0.996981, 0.993816, 0.989888, 0.985403, 0.980528, 0.975393, + 0.970098, 0.964723, 0.959327, 0.953958, 0.94865, 0.94343, 0.938315, 0.933319, + 0.928452, 0.923719, 0.919123, 0.914666, 0.910347, 0.906165, 0.902117, 0.8982}, + std::vector{1}, + op::EpsMode::ADD, + 0.1, + "normalize_l2_5D_axes_1_add"), + NormalizeL2Params( + Shape{1, 2, 2, 3, 4}, + Shape{1, 2, 2, 3, 4}, + ET, + ET, + static_cast(0), + std::vector{0., 0.03996804, 0.07669649, 0.11043153, 0.14142135, 0.1699069, 0.19611612, + 0.22026087, 0.2425356, 0.26311737, 0.2821663, 0.2998266, 0.31622776, 0.331486, + 0.34570533, 0.35897905, 0.37139067, 0.38301498, 0.3939193, 0.40416384, 0.41380292, + 0.42288542, 0.43145543, 0.43955287, 0.99999994, 0.9992009, 0.9970544, 0.9938838, + 0.98994946, 0.98546, 0.9805806, 0.97544104, 0.9701424, 0.96476364, 0.9593654, + 0.95399374, 0.9486833, 0.9434601, 0.93834305, 0.93334556, 0.9284767, 0.923742, + 0.919145, 0.91468656, 0.9103665, 0.90618306, 0.90213406, 0.8982167}, + std::vector{1}, + op::EpsMode::MAX, + 0.1, + "normalize_l2_5D_axes_1_max"), + NormalizeL2Params( + Shape{1, 2, 2, 3, 4}, + Shape{1, 2, 2, 3, 4}, + ET, + ET, + static_cast(0), + std::vector{0., 0.07667395, 0.14138602, 0.19607423, 0.24249104, 0.28212142, 0.31618387, + 0.3456632, 0.37135068, 0.3938816, 0.41376755, 0.43142232, 0.9996529, 0.9967614, + 0.9897021, 0.9803712, 0.96996415, 0.9592128, 0.94855154, 0.93822867, 0.9283767, + 0.9190571, 0.9102886, 0.9020648, 0.5546854, 0.55984336, 0.56467056, 0.56919736, + 0.5734503, 0.57745326, 0.58122724, 0.5847912, 0.58816177, 0.59135413, 0.594382, + 0.59725744, 0.8320281, 0.8285682, 0.82528776, 0.82217395, 0.8192147, 0.8163994, + 0.8137182, 0.81116194, 0.8087224, 0.806392, 0.8041638, 0.8020314}, + std::vector{2}, + op::EpsMode::ADD, + 0.1, + "normalize_l2_5D_axes_2_add"), + NormalizeL2Params( + Shape{1, 2, 2, 3, 4}, + Shape{1, 2, 2, 3, 4}, + ET, + ET, + static_cast(0), + std::vector{0., 0.07669649, 0.14142135, 0.19611612, 0.2425356, 0.2821663, 0.31622776, + 0.34570533, 0.37139067, 0.3939193, 0.41380292, 0.43145543, 0.99999994, 0.9970544, + 0.98994946, 0.9805806, 0.9701424, 0.9593654, 0.9486833, 0.93834305, 0.9284767, + 0.919145, 0.9103665, 0.90213406, 0.5547002, 0.55985737, 0.56468385, 0.5692099, + 0.57346237, 0.57746464, 0.58123815, 0.5848015, 0.58817166, 0.59136367, 0.59439105, + 0.5972662, 0.83205026, 0.82858896, 0.8253072, 0.8221921, 0.8192319, 0.81641555, + 0.8137334, 0.8111763, 0.808736, 0.80640495, 0.8041761, 0.8020432}, + std::vector{2}, + op::EpsMode::MAX, + 0.1, + "normalize_l2_5D_axes_2_max"), + NormalizeL2Params( + Shape{1, 2, 2, 3, 4}, + Shape{1, 2, 2, 3, 4}, + ET, + ET, + static_cast(0), + std::vector{0, 0.0966285, 0.168971, 0.224168, 0.446934, 0.483143, 0.506912, 0.523058, + 0.893869, 0.869657, 0.844853, 0.821949, 0.424238, 0.43355, 0.441814, 0.449194, + 0.56565, 0.56695, 0.568047, 0.56898, 0.707063, 0.70035, 0.694279, 0.688765, + 0.491529, 0.494579, 0.497422, 0.500077, 0.57345, 0.573712, 0.573949, 0.574163, + 0.655372, 0.652845, 0.650475, 0.648248, 0.517886, 0.519373, 0.520787, 0.522135, + 0.575429, 0.575521, 0.575607, 0.575687, 0.632972, 0.63167, 0.630427, 0.629239}, + std::vector{3}, + op::EpsMode::ADD, + 0.1, + "normalize_l2_5D_axes_3_add"), + NormalizeL2Params( + Shape{1, 2, 2, 3, 4}, + Shape{1, 2, 2, 3, 4}, + ET, + ET, + static_cast(0), + std::vector{0., 0.09667365, 0.16903085, 0.22423053, 0.4472136, 0.48336822, 0.50709254, + 0.52320457, 0.8944272, 0.8700628, 0.8451542, 0.8221786, 0.42426404, 0.4335743, + 0.4418361, 0.4492145, 0.5656854, 0.5669818, 0.56807494, 0.569005, 0.7071067, + 0.70038927, 0.6943139, 0.68879557, 0.49153918, 0.4945891, 0.49743116, 0.5000857, + 0.57346237, 0.5737234, 0.57395905, 0.5741725, 0.65538555, 0.6528576, 0.6504869, + 0.6482592, 0.51789176, 0.5193782, 0.52079225, 0.5221394, 0.5754353, 0.5755272, + 0.57561255, 0.5756921, 0.63297886, 0.6316762, 0.6304327, 0.62924486}, + std::vector{3}, + op::EpsMode::MAX, + 0.1, + "normalize_l2_5D_axes_3_max"), + NormalizeL2Params( + Shape{1, 2, 2, 3, 4}, + Shape{1, 2, 2, 3, 4}, + ET, + ET, + static_cast(0), + std::vector{0, 0.266312, 0.532624, 0.798935, 0.356207, 0.445259, 0.534311, 0.623362, + 0.41811, 0.470373, 0.522637, 0.574901, 0.442898, 0.479806, 0.516714, 0.553622, + 0.456194, 0.484706, 0.513219, 0.541731, 0.464476, 0.4877, 0.510924, 0.534148, + 0.470128, 0.489716, 0.509305, 0.528893, 0.474229, 0.491166, 0.508102, 0.525039, + 0.477341, 0.492258, 0.507175, 0.522092, 0.479783, 0.49311, 0.506437, 0.519764, + 0.481749, 0.493793, 0.505837, 0.517881, 0.483368, 0.494353, 0.505339, 0.516325}, + std::vector{4}, + op::EpsMode::ADD, + 0.1, + "normalize_l2_5D_axes_4_add"), + NormalizeL2Params( + Shape{1, 2, 2, 3, 4}, + Shape{1, 2, 2, 3, 4}, + ET, + ET, + static_cast(0), + std::vector{0., 0.26726124, 0.5345225, 0.8017837, 0.3563483, 0.44543537, 0.5345225, + 0.62360954, 0.41816667, 0.4704375, 0.52270836, 0.5749792, 0.44292808, 0.47983873, + 0.5167494, 0.5536601, 0.45621273, 0.484726, 0.5132393, 0.54175264, 0.4644887, + 0.4877131, 0.5109376, 0.534162, 0.47013652, 0.48972553, 0.50931454, 0.5289036, + 0.47423577, 0.49117276, 0.50810975, 0.5250467, 0.47734618, 0.49226326, 0.50718033, + 0.5220974, 0.4797868, 0.49311423, 0.50644165, 0.5197691, 0.48175293, 0.49379677, + 0.5058406, 0.51788443, 0.48337057, 0.49435627, 0.50534195, 0.5163277}, + std::vector{4}, + op::EpsMode::MAX, + 0.1, + "normalize_l2_5D_axes_4_max"), + NormalizeL2Params( + Shape{1, 2, 2, 3, 4}, + Shape{1, 2, 2, 3, 4}, + ET, + ET, + static_cast(0), + std::vector{0., 0.04445103, 0.08890206, 0.1333531, 0.17780413, 0.22225516, 0.2667062, + 0.31115723, 0.35560825, 0.40005928, 0.4445103, 0.48896134, 0.19420375, 0.2103874, + 0.22657104, 0.24275468, 0.2589383, 0.275122, 0.29130563, 0.30748928, 0.32367292, + 0.33985656, 0.3560402, 0.37222385, 0.2332616, 0.24298084, 0.25270006, 0.2624193, + 0.27213854, 0.2818578, 0.291577, 0.30129623, 0.3110155, 0.3207347, 0.33045393, + 0.34017318, 0.2495545, 0.25648656, 0.26341864, 0.27035072, 0.27728277, 0.28421485, + 0.29114693, 0.29807898, 0.30501106, 0.3119431, 0.3188752, 0.32580727}, + std::vector{3, 4}, + op::EpsMode::ADD, + 0.1, + "normalize_l2_5D_axes_34_add"), + NormalizeL2Params( + Shape{1, 2, 2, 3, 4}, + Shape{1, 2, 2, 3, 4}, + ET, + ET, + static_cast(0), + std::vector{0., 0.04445542, 0.08891085, 0.13336627, 0.1778217, 0.22227712, 0.26673254, + 0.31118798, 0.3556434, 0.4000988, 0.44455424, 0.48900968, 0.19420628, 0.21039014, + 0.226574, 0.24275786, 0.2589417, 0.27512556, 0.29130942, 0.30749327, 0.32367712, + 0.339861, 0.35604486, 0.3722287, 0.23326269, 0.24298197, 0.25270125, 0.26242054, + 0.2721398, 0.28185907, 0.29157835, 0.30129763, 0.31101692, 0.3207362, 0.33045548, + 0.34017476, 0.24955511, 0.2564872, 0.26341927, 0.27035138, 0.27728346, 0.28421554, + 0.29114762, 0.2980797, 0.3050118, 0.3119439, 0.31887597, 0.32580805}, + std::vector{3, 4}, + op::EpsMode::MAX, + 0.1, + "normalize_l2_5D_axes_34_max"), + NormalizeL2Params( + Shape{1, 2, 2, 3, 4}, + Shape{1, 2, 2, 3, 4}, + ET, + ET, + static_cast(0), + std::vector{0., 0.0152073, 0.0304146, 0.0456219, 0.0608292, 0.07603651, 0.0912438, + 0.10645111, 0.12165841, 0.1368657, 0.15207301, 0.16728032, 0.1824876, 0.19769491, + 0.21290222, 0.22810951, 0.24331681, 0.25852412, 0.2737314, 0.28893873, 0.30414602, + 0.3193533, 0.33456063, 0.34976792, 0.13544825, 0.14109191, 0.1467356, 0.15237927, + 0.15802296, 0.16366662, 0.1693103, 0.17495398, 0.18059766, 0.18624133, 0.19188501, + 0.19752869, 0.20317237, 0.20881604, 0.21445972, 0.2201034, 0.22574706, 0.23139074, + 0.23703443, 0.2426781, 0.24832177, 0.25396547, 0.25960913, 0.2652528}, + std::vector{2, 3, 4}, + op::EpsMode::ADD, + 0.1, + "normalize_l2_5D_axes_234_add"), + NormalizeL2Params( + Shape{1, 2, 2, 3, 4}, + Shape{1, 2, 2, 3, 4}, + ET, + ET, + static_cast(0), + std::vector{0., 0.01520748, 0.03041495, 0.04562243, 0.06082991, 0.07603738, 0.09124486, + 0.10645234, 0.12165982, 0.13686728, 0.15207477, 0.16728225, 0.18248972, 0.19769719, + 0.21290468, 0.22811216, 0.24331963, 0.2585271, 0.27373457, 0.28894207, 0.30414954, + 0.319357, 0.3345645, 0.34977198, 0.13544846, 0.14109215, 0.14673583, 0.15237951, + 0.15802321, 0.16366689, 0.16931057, 0.17495427, 0.18059795, 0.18624163, 0.19188532, + 0.197529, 0.20317268, 0.20881638, 0.21446006, 0.22010374, 0.22574744, 0.23139112, + 0.2370348, 0.2426785, 0.24832217, 0.25396585, 0.25960955, 0.26525325}, + std::vector{2, 3, 4}, + op::EpsMode::MAX, + 0.1, + "normalize_l2_5D_axes_234_max"), }; return params; @@ -780,8 +831,7 @@ std::vector generateParamsForNormalizeL2() { std::vector generateCombinedParamsForNormalizeL2() { const std::vector> allTypeParams{ - generateParamsForNormalizeL2() - }; + generateParamsForNormalizeL2()}; std::vector combinedParams; @@ -792,10 +842,9 @@ std::vector generateCombinedParamsForNormalizeL2() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P( - smoke_NormalizeL2_With_Hardcoded_Refs, - ReferenceNormalizeL2LayerTest, - ::testing::ValuesIn(generateCombinedParamsForNormalizeL2()), - ReferenceNormalizeL2LayerTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_NormalizeL2_With_Hardcoded_Refs, + ReferenceNormalizeL2LayerTest, + ::testing::ValuesIn(generateCombinedParamsForNormalizeL2()), + ReferenceNormalizeL2LayerTest::getTestCaseName); } // namespace diff --git a/src/plugins/template/tests/functional/op_reference/not_equal.cpp b/src/plugins/template/tests/functional/op_reference/not_equal.cpp index c02c5ea537f..cd871b25d13 100644 --- a/src/plugins/template/tests/functional/op_reference/not_equal.cpp +++ b/src/plugins/template/tests/functional/op_reference/not_equal.cpp @@ -2,9 +2,10 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/not_equal.hpp" + #include -#include "openvino/op/not_equal.hpp" #include "comparison.hpp" using namespace ov; @@ -16,43 +17,43 @@ namespace { template std::vector generateComparisonParams(const element::Type& type) { using T = typename element_type_traits::value_type; - std::vector compParams { + std::vector compParams{ // 1D // 2D // 3D // 4D - Builder {} + Builder{} .compType(ComparisonTypes::NOT_EQUAL) - .input1({{2, 2}, type, std::vector {1, 0, 10, 255}}) - .input2({{2, 2}, type, std::vector {1, 0, 10, 255}}) - .expected({{2, 2}, element::boolean, std::vector {0, 0, 0, 0}}), - Builder {} + .input1({{2, 2}, type, std::vector{1, 0, 10, 255}}) + .input2({{2, 2}, type, std::vector{1, 0, 10, 255}}) + .expected({{2, 2}, element::boolean, std::vector{0, 0, 0, 0}}), + Builder{} .compType(ComparisonTypes::NOT_EQUAL) - .input1({{2, 3}, type, std::vector {0, 15, 45, 10, 5, 10}}) - .input2({{2, 3}, type, std::vector {1, 15, 5, 10, 50, 10}}) - .expected({{2, 3}, element::boolean, std::vector {1, 0, 1, 0, 1, 0}}), - Builder {} + .input1({{2, 3}, type, std::vector{0, 15, 45, 10, 5, 10}}) + .input2({{2, 3}, type, std::vector{1, 15, 5, 10, 50, 10}}) + .expected({{2, 3}, element::boolean, std::vector{1, 0, 1, 0, 1, 0}}), + Builder{} .compType(ComparisonTypes::NOT_EQUAL) - .input1({{1}, type, std::vector {20}}) - .input2({{1}, type, std::vector {10}}) - .expected({{1}, element::boolean, std::vector {1}}), - Builder {} + .input1({{1}, type, std::vector{20}}) + .input2({{1}, type, std::vector{10}}) + .expected({{1}, element::boolean, std::vector{1}}), + Builder{} .compType(ComparisonTypes::NOT_EQUAL) - .input1({{2, 4}, type, std::vector {0, 12, 23, 0, 1, 5, 12, 8}}) - .input2({{2, 4}, type, std::vector {0, 12, 23, 0, 10, 5, 11, 8}}) - .expected({{2, 4}, element::boolean, std::vector {0, 0, 0, 0, 1, 0, 1, 0}}), - Builder {} - .compType(ComparisonTypes::NOT_EQUAL) - .input1({{3, 1, 2}, type, std::vector {2, 7, 4, 7, 3, 7}}) - .input2({{1, 2, 1}, type, std::vector {7, 7}}) - .expected({{3, 2, 2}, element::boolean, std::vector {1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0}}), - Builder {} + .input1({{2, 4}, type, std::vector{0, 12, 23, 0, 1, 5, 12, 8}}) + .input2({{2, 4}, type, std::vector{0, 12, 23, 0, 10, 5, 11, 8}}) + .expected({{2, 4}, element::boolean, std::vector{0, 0, 0, 0, 1, 0, 1, 0}}), + Builder{} .compType(ComparisonTypes::NOT_EQUAL) - .input1({{2, 1, 2, 1}, type, std::vector {1, 2, 1, 4}}) - .input2({{1, 2, 1}, type, std::vector {1, 1}}) - .expected({{2, 1, 2, 1}, element::boolean, std::vector {0, 1, 0, 1}})}; + .input1({{3, 1, 2}, type, std::vector{2, 7, 4, 7, 3, 7}}) + .input2({{1, 2, 1}, type, std::vector{7, 7}}) + .expected({{3, 2, 2}, element::boolean, std::vector{1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0}}), + Builder{} + .compType(ComparisonTypes::NOT_EQUAL) + .input1({{2, 1, 2, 1}, type, std::vector{1, 2, 1, 4}}) + .input2({{1, 2, 1}, type, std::vector{1, 1}}) + .expected({{2, 1, 2, 1}, element::boolean, std::vector{0, 1, 0, 1}})}; return compParams; } std::vector generateComparisonCombinedParams() { - const std::vector> compTypeParams { + const std::vector> compTypeParams{ generateComparisonParams(element::f32), generateComparisonParams(element::f16), generateComparisonParams(element::i32), @@ -66,39 +67,40 @@ std::vector generateComparisonCombinedParams() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_Comparison_With_Hardcoded_Refs, ReferenceComparisonLayerTest, +INSTANTIATE_TEST_SUITE_P(smoke_Comparison_With_Hardcoded_Refs, + ReferenceComparisonLayerTest, ::testing::ValuesIn(generateComparisonCombinedParams()), ReferenceComparisonLayerTest::getTestCaseName); template std::vector generateNumericParams(const element::Type& type) { using T = typename element_type_traits::value_type; - std::vector compParams { - Builder {} + std::vector compParams{ + Builder{} .compType(ComparisonTypes::NOT_EQUAL) - .input1({{4}, type, std::vector {-2.5f, 25.5f, 2.25f, NAN}}) - .input2({{4}, type, std::vector {10.0f, 5.0f, 2.25f, 10.0f}}) - .expected({{4}, element::boolean, std::vector {1, 1, 0, 1}}), - Builder {} + .input1({{4}, type, std::vector{-2.5f, 25.5f, 2.25f, NAN}}) + .input2({{4}, type, std::vector{10.0f, 5.0f, 2.25f, 10.0f}}) + .expected({{4}, element::boolean, std::vector{1, 1, 0, 1}}), + Builder{} .compType(ComparisonTypes::NOT_EQUAL) - .input1({{2, 3}, type, std::vector {0.0f, NAN, NAN, 1.0f, 21.0f, -INFINITY}}) - .input2({{2, 3}, type, std::vector {1.0f, NAN, 23.0f, 1.0f, 19.0f, 21.0f}}) - .expected({{2, 3}, element::boolean, std::vector {1, 1, 1, 0, 1, 1}}), - Builder {} + .input1({{2, 3}, type, std::vector{0.0f, NAN, NAN, 1.0f, 21.0f, -INFINITY}}) + .input2({{2, 3}, type, std::vector{1.0f, NAN, 23.0f, 1.0f, 19.0f, 21.0f}}) + .expected({{2, 3}, element::boolean, std::vector{1, 1, 1, 0, 1, 1}}), + Builder{} .compType(ComparisonTypes::NOT_EQUAL) - .input1({{1}, type, std::vector {INFINITY}}) - .input2({{1}, type, std::vector {INFINITY}}) - .expected({{1}, element::boolean, std::vector {0}}), - Builder {} + .input1({{1}, type, std::vector{INFINITY}}) + .input2({{1}, type, std::vector{INFINITY}}) + .expected({{1}, element::boolean, std::vector{0}}), + Builder{} .compType(ComparisonTypes::NOT_EQUAL) - .input1({{5}, type, std::vector {-2.5f, 25.5f, 2.25f, INFINITY, 6.0f}}) - .input2({{5}, type, std::vector {10.0f, 5.0f, 2.25f, 10.0f, -INFINITY}}) - .expected({{5}, element::boolean, std::vector {1, 1, 0, 1, 1}})}; + .input1({{5}, type, std::vector{-2.5f, 25.5f, 2.25f, INFINITY, 6.0f}}) + .input2({{5}, type, std::vector{10.0f, 5.0f, 2.25f, 10.0f, -INFINITY}}) + .expected({{5}, element::boolean, std::vector{1, 1, 0, 1, 1}})}; return compParams; } std::vector generateNumericCombinedParams() { - const std::vector> compTypeParams { + const std::vector> compTypeParams{ generateNumericParams(element::f16), generateNumericParams(element::f32)}; std::vector combinedParams; @@ -109,8 +111,10 @@ std::vector generateNumericCombinedParams() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_Numeric_With_Hardcoded_Refs, ReferenceComparisonLayerTest, ::testing::ValuesIn(generateNumericCombinedParams()), +INSTANTIATE_TEST_SUITE_P(smoke_Numeric_With_Hardcoded_Refs, + ReferenceComparisonLayerTest, + ::testing::ValuesIn(generateNumericCombinedParams()), ReferenceComparisonLayerTest::getTestCaseName); -} // namespace -} // namespace ComparisonOpsRefTestDefinitions -} // namespace reference_tests +} // namespace +} // namespace ComparisonOpsRefTestDefinitions +} // namespace reference_tests diff --git a/src/plugins/template/tests/functional/op_reference/one_hot.cpp b/src/plugins/template/tests/functional/op_reference/one_hot.cpp index b0f53a1e783..0c6dc8c6937 100644 --- a/src/plugins/template/tests/functional/op_reference/one_hot.cpp +++ b/src/plugins/template/tests/functional/op_reference/one_hot.cpp @@ -2,24 +2,32 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/one_hot.hpp" + #include -#include "openvino/op/one_hot.hpp" -#include "openvino/op/constant.hpp" #include "base_reference_test.hpp" +#include "openvino/op/constant.hpp" using namespace reference_tests; using namespace ov; namespace { struct OneHotParams { - OneHotParams( - const reference_tests::Tensor& dataTensor, const int32_t axis, - const reference_tests::Tensor& depthTensor, const reference_tests::Tensor& onValueTensor, const reference_tests::Tensor& offValueTensor, - const reference_tests::Tensor& expectedTensor, const std::string& testcaseName = "") : - dataTensor(dataTensor), axis(axis), - depthTensor(depthTensor), onValueTensor(onValueTensor), offValueTensor(offValueTensor), - expectedTensor(expectedTensor), testcaseName(testcaseName) {} + OneHotParams(const reference_tests::Tensor& dataTensor, + const int32_t axis, + const reference_tests::Tensor& depthTensor, + const reference_tests::Tensor& onValueTensor, + const reference_tests::Tensor& offValueTensor, + const reference_tests::Tensor& expectedTensor, + const std::string& testcaseName = "") + : dataTensor(dataTensor), + axis(axis), + depthTensor(depthTensor), + onValueTensor(onValueTensor), + offValueTensor(offValueTensor), + expectedTensor(expectedTensor), + testcaseName(testcaseName) {} reference_tests::Tensor dataTensor; int32_t axis; @@ -65,12 +73,15 @@ private: static std::shared_ptr CreateFunction(const OneHotParams& params) { std::shared_ptr function; const auto data = std::make_shared(params.dataTensor.type, params.dataTensor.shape); - const auto depth = std::make_shared(params.depthTensor.type, params.depthTensor.shape, + const auto depth = std::make_shared(params.depthTensor.type, + params.depthTensor.shape, params.depthTensor.data.data()); - const auto onValue = std::make_shared(params.onValueTensor.type, params.onValueTensor.shape, - params.onValueTensor.data.data()); - const auto offValue = std::make_shared(params.offValueTensor.type, params.offValueTensor.shape, - params.offValueTensor.data.data()); + const auto onValue = std::make_shared(params.onValueTensor.type, + params.onValueTensor.shape, + params.onValueTensor.data.data()); + const auto offValue = std::make_shared(params.offValueTensor.type, + params.offValueTensor.shape, + params.offValueTensor.data.data()); const auto oneHot = std::make_shared(data, depth, onValue, offValue, params.axis); function = std::make_shared(oneHot, ParameterVector{data}); return function; @@ -81,9 +92,9 @@ TEST_P(ReferenceOneHotTest, CompareWithRefs) { Exec(); } -template +template std::vector generateExpectedValues(const Shape& input_shape, std::vector input, uint32_t category_count) { -// std::vector input{0, 11, 101, 1001, 10001, static_cast(category_count - 1)}; + // std::vector input{0, 11, 101, 1001, 10001, static_cast(category_count - 1)}; std::vector output(shape_size(input_shape), 0); for (size_t i = 0; i < input.size(); ++i) { output[i * category_count + input[i]] = 1; @@ -95,80 +106,70 @@ template std::vector generateParams() { using T1 = typename element_type_traits::value_type; using T2 = typename element_type_traits::value_type; - std::vector params { - OneHotParams( - reference_tests::Tensor(ET1, {}, std::vector{2}), - 0, - reference_tests::Tensor(ET1, {}, std::vector{3}), - reference_tests::Tensor(ET2, {}, std::vector{1}), - reference_tests::Tensor(ET2, {}, std::vector{0}), - reference_tests::Tensor(ET2, {3}, std::vector{0, 0, 1}), - "one_hot_scalar_2_in_3"), - OneHotParams( - reference_tests::Tensor(ET1, {}, std::vector{1}), - 0, - reference_tests::Tensor(ET1, {}, std::vector{3}), - reference_tests::Tensor(ET2, {}, std::vector{1}), - reference_tests::Tensor(ET2, {}, std::vector{0}), - reference_tests::Tensor(ET2, {3}, std::vector{0, 1, 0}), - "one_hot_scalar_1_in_3"), - OneHotParams( - reference_tests::Tensor(ET1, {}, std::vector{0}), - 0, - reference_tests::Tensor(ET1, {}, std::vector{3}), - reference_tests::Tensor(ET2, {}, std::vector{1}), - reference_tests::Tensor(ET2, {}, std::vector{0}), - reference_tests::Tensor(ET2, {3}, std::vector{1, 0, 0}), - "one_hot_scalar_0_in_3"), - OneHotParams( - reference_tests::Tensor(ET1, {8}, std::vector{2, 1, 0, 0, 2, 2, 1, 0}), - 0, - reference_tests::Tensor(ET1, {}, std::vector{3}), - reference_tests::Tensor(ET2, {}, std::vector{1}), - reference_tests::Tensor(ET2, {}, std::vector{0}), - reference_tests::Tensor(ET2, {3, 8}, std::vector{0, 0, 1, 1, 0, 0, 0, 1, - 0, 1, 0, 0, 0, 0, 1, 0, - 1, 0, 0, 0, 1, 1, 0, 0}), - "one_hot_vector_0"), - OneHotParams( - reference_tests::Tensor(ET1, {8}, std::vector{2, 1, 0, 0, 2, 2, 1, 0}), - 1, - reference_tests::Tensor(ET1, {}, std::vector{3}), - reference_tests::Tensor(ET2, {}, std::vector{1}), - reference_tests::Tensor(ET2, {}, std::vector{0}), - reference_tests::Tensor(ET2, {8, 3}, std::vector{0, 0, 1, 0, 1, 0, 1, 0, - 0, 1, 0, 0, 0, 0, 1, 0, - 0, 1, 0, 1, 0, 1, 0, 0}), - "one_hot_vector_1"), - OneHotParams( - reference_tests::Tensor(ET1, {8}, std::vector{2, 1, 0, 0, 3, 2, 1, 0}), - 1, - reference_tests::Tensor(ET1, {}, std::vector{3}), - reference_tests::Tensor(ET2, {}, std::vector{1}), - reference_tests::Tensor(ET2, {}, std::vector{0}), - reference_tests::Tensor(ET2, {8, 3}, std::vector{0, 0, 1, 0, 1, 0, 1, 0, - 0, 1, 0, 0, 0, 0, 0, 0, - 0, 1, 0, 1, 0, 1, 0, 0}), - "one_hot_vector_1_barely_oob"), - OneHotParams( - reference_tests::Tensor(ET1, {3, 3}, std::vector{0, 1, 1, 2, 1, 0, 0, 2, 1}), - 0, - reference_tests::Tensor(ET1, {}, std::vector{3}), - reference_tests::Tensor(ET2, {}, std::vector{1}), - reference_tests::Tensor(ET2, {}, std::vector{0}), - reference_tests::Tensor(ET2, {3, 3, 3}, std::vector{1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0}), - "one_hot_matrix_0"), - OneHotParams( - reference_tests::Tensor(ET1, {6}, std::vector{0, 11, 101, 1001, 10001, 19999}), - 1, - reference_tests::Tensor(ET1, {}, std::vector{20000}), - reference_tests::Tensor(ET2, {}, std::vector{1}), - reference_tests::Tensor(ET2, {}, std::vector{0}), - reference_tests::Tensor(ET2, {6, 20000}, generateExpectedValues({6, 20000}, - std::vector{0, 11, 101, 1001, 10001, 19999}, - 20000)), - "one_hot_vector_many_categories"), + std::vector params{ + OneHotParams(reference_tests::Tensor(ET1, {}, std::vector{2}), + 0, + reference_tests::Tensor(ET1, {}, std::vector{3}), + reference_tests::Tensor(ET2, {}, std::vector{1}), + reference_tests::Tensor(ET2, {}, std::vector{0}), + reference_tests::Tensor(ET2, {3}, std::vector{0, 0, 1}), + "one_hot_scalar_2_in_3"), + OneHotParams(reference_tests::Tensor(ET1, {}, std::vector{1}), + 0, + reference_tests::Tensor(ET1, {}, std::vector{3}), + reference_tests::Tensor(ET2, {}, std::vector{1}), + reference_tests::Tensor(ET2, {}, std::vector{0}), + reference_tests::Tensor(ET2, {3}, std::vector{0, 1, 0}), + "one_hot_scalar_1_in_3"), + OneHotParams(reference_tests::Tensor(ET1, {}, std::vector{0}), + 0, + reference_tests::Tensor(ET1, {}, std::vector{3}), + reference_tests::Tensor(ET2, {}, std::vector{1}), + reference_tests::Tensor(ET2, {}, std::vector{0}), + reference_tests::Tensor(ET2, {3}, std::vector{1, 0, 0}), + "one_hot_scalar_0_in_3"), + OneHotParams(reference_tests::Tensor(ET1, {8}, std::vector{2, 1, 0, 0, 2, 2, 1, 0}), + 0, + reference_tests::Tensor(ET1, {}, std::vector{3}), + reference_tests::Tensor(ET2, {}, std::vector{1}), + reference_tests::Tensor(ET2, {}, std::vector{0}), + reference_tests::Tensor(ET2, {3, 8}, std::vector{0, 0, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, + 0, 0, 1, 0, 1, 0, 0, 0, 1, 1, 0, 0}), + "one_hot_vector_0"), + OneHotParams(reference_tests::Tensor(ET1, {8}, std::vector{2, 1, 0, 0, 2, 2, 1, 0}), + 1, + reference_tests::Tensor(ET1, {}, std::vector{3}), + reference_tests::Tensor(ET2, {}, std::vector{1}), + reference_tests::Tensor(ET2, {}, std::vector{0}), + reference_tests::Tensor(ET2, {8, 3}, std::vector{0, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 0, + 0, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 0}), + "one_hot_vector_1"), + OneHotParams(reference_tests::Tensor(ET1, {8}, std::vector{2, 1, 0, 0, 3, 2, 1, 0}), + 1, + reference_tests::Tensor(ET1, {}, std::vector{3}), + reference_tests::Tensor(ET2, {}, std::vector{1}), + reference_tests::Tensor(ET2, {}, std::vector{0}), + reference_tests::Tensor(ET2, {8, 3}, std::vector{0, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0}), + "one_hot_vector_1_barely_oob"), + OneHotParams(reference_tests::Tensor(ET1, {3, 3}, std::vector{0, 1, 1, 2, 1, 0, 0, 2, 1}), + 0, + reference_tests::Tensor(ET1, {}, std::vector{3}), + reference_tests::Tensor(ET2, {}, std::vector{1}), + reference_tests::Tensor(ET2, {}, std::vector{0}), + reference_tests::Tensor(ET2, {3, 3, 3}, std::vector{1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 1, + 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0}), + "one_hot_matrix_0"), + OneHotParams(reference_tests::Tensor(ET1, {6}, std::vector{0, 11, 101, 1001, 10001, 19999}), + 1, + reference_tests::Tensor(ET1, {}, std::vector{20000}), + reference_tests::Tensor(ET2, {}, std::vector{1}), + reference_tests::Tensor(ET2, {}, std::vector{0}), + reference_tests::Tensor( + ET2, + {6, 20000}, + generateExpectedValues({6, 20000}, std::vector{0, 11, 101, 1001, 10001, 19999}, 20000)), + "one_hot_vector_many_categories"), }; return params; } @@ -177,23 +178,23 @@ template std::vector generateParamsFloat() { using T1 = typename element_type_traits::value_type; using T2 = typename element_type_traits::value_type; - std::vector params { + std::vector params{ OneHotParams( reference_tests::Tensor(ET1, {3, 3}, std::vector{0, 1, 1, 2, 1, 0, 0, 2, 1}), 0, reference_tests::Tensor(ET1, {}, std::vector{3}), reference_tests::Tensor(ET2, {}, std::vector{2.5}), reference_tests::Tensor(ET2, {}, std::vector{0.5}), - reference_tests::Tensor(ET2, {3, 3, 3}, std::vector{ - 2.5, 0.5, 0.5, 0.5, 0.5, 2.5, 2.5, 0.5, 0.5, 0.5, 2.5, 2.5, 0.5, 2.5, - 0.5, 0.5, 0.5, 2.5, 0.5, 0.5, 0.5, 2.5, 0.5, 0.5, 0.5, 2.5, 0.5}), + reference_tests::Tensor(ET2, {3, 3, 3}, std::vector{2.5, 0.5, 0.5, 0.5, 0.5, 2.5, 2.5, 0.5, 0.5, + 0.5, 2.5, 2.5, 0.5, 2.5, 0.5, 0.5, 0.5, 2.5, + 0.5, 0.5, 0.5, 2.5, 0.5, 0.5, 0.5, 2.5, 0.5}), "one_hot_on_off_float"), }; return params; } std::vector generateCombinedParams() { - const std::vector> generatedParams { + const std::vector> generatedParams{ generateParams(), generateParams(), generateParams(), @@ -221,6 +222,8 @@ std::vector generateCombinedParams() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_OneHot_With_Hardcoded_Refs, ReferenceOneHotTest, - testing::ValuesIn(generateCombinedParams()), ReferenceOneHotTest::getTestCaseName); -} // namespace +INSTANTIATE_TEST_SUITE_P(smoke_OneHot_With_Hardcoded_Refs, + ReferenceOneHotTest, + testing::ValuesIn(generateCombinedParams()), + ReferenceOneHotTest::getTestCaseName); +} // namespace diff --git a/src/plugins/template/tests/functional/op_reference/pad.cpp b/src/plugins/template/tests/functional/op_reference/pad.cpp index 1ca30e499d9..eca5f7dbd07 100644 --- a/src/plugins/template/tests/functional/op_reference/pad.cpp +++ b/src/plugins/template/tests/functional/op_reference/pad.cpp @@ -2,34 +2,48 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/pad.hpp" + #include + #include -#include "openvino/op/pad.hpp" -#include "openvino/op/constant.hpp" #include "base_reference_test.hpp" +#include "openvino/op/constant.hpp" using namespace reference_tests; using namespace ov; namespace { struct PadParams { - PadParams( - const reference_tests::Tensor& inputData, const reference_tests::Tensor& padsBegin, const reference_tests::Tensor& padsEnd, - const reference_tests::Tensor& expectedOutput, op::PadMode padMode, const reference_tests::Tensor& constantValue, - const std::string& testcaseName = "") : - inputData(inputData), padsBegin(padsBegin), padsEnd(padsEnd), - expectedOutput(expectedOutput), padMode(padMode), - useConstValue{true}, constantValue(constantValue), - testcaseName(testcaseName) {} + PadParams(const reference_tests::Tensor& inputData, + const reference_tests::Tensor& padsBegin, + const reference_tests::Tensor& padsEnd, + const reference_tests::Tensor& expectedOutput, + op::PadMode padMode, + const reference_tests::Tensor& constantValue, + const std::string& testcaseName = "") + : inputData(inputData), + padsBegin(padsBegin), + padsEnd(padsEnd), + expectedOutput(expectedOutput), + padMode(padMode), + useConstValue{true}, + constantValue(constantValue), + testcaseName(testcaseName) {} - PadParams( - const reference_tests::Tensor& inputData, const reference_tests::Tensor& padsBegin, const reference_tests::Tensor& padsEnd, - const reference_tests::Tensor& expectedOutput, op::PadMode padMode, - const std::string& testcaseName = "") : - inputData(inputData), padsBegin(padsBegin), padsEnd(padsEnd), - expectedOutput(expectedOutput), padMode(padMode), - testcaseName(testcaseName) {} + PadParams(const reference_tests::Tensor& inputData, + const reference_tests::Tensor& padsBegin, + const reference_tests::Tensor& padsEnd, + const reference_tests::Tensor& expectedOutput, + op::PadMode padMode, + const std::string& testcaseName = "") + : inputData(inputData), + padsBegin(padsBegin), + padsEnd(padsEnd), + expectedOutput(expectedOutput), + padMode(padMode), + testcaseName(testcaseName) {} reference_tests::Tensor inputData; reference_tests::Tensor padsBegin; @@ -124,7 +138,7 @@ public: function = CreateFunction(GetParam()); } - public: +public: static std::shared_ptr CreateFunction(const PadParams& params) { return commonConstPadsCreateFunction(params); } @@ -142,7 +156,6 @@ public: } }; - TEST_P(ReferencePadV1Test, CompareWithRefs) { Exec(); } @@ -163,7 +176,6 @@ TEST_P(ReferencePadTestParamsOk, CompareWithRefs) { EXPECT_NO_THROW(Exec()); } - class ReferencePadV1TestNonConstPadsBeginPadsEndPadVal : public ReferencePadTest { public: void SetUp() override { @@ -196,13 +208,15 @@ TEST_P(ReferencePadV12TestNonConstPadsBeginPadsEndPadVal, CompareWithRefs) { Exec(); } -class ReferencePadV1TestNonConstPadsBeginPadsEndPadValTooLarge : public ReferencePadV1TestNonConstPadsBeginPadsEndPadVal {}; +class ReferencePadV1TestNonConstPadsBeginPadsEndPadValTooLarge + : public ReferencePadV1TestNonConstPadsBeginPadsEndPadVal {}; TEST_P(ReferencePadV1TestNonConstPadsBeginPadsEndPadValTooLarge, CompareWithRefs) { EXPECT_ANY_THROW(Exec()); } -class ReferencePadV1TestNonConstPadsBeginPadsEndPadValParamsOk : public ReferencePadV1TestNonConstPadsBeginPadsEndPadVal {}; +class ReferencePadV1TestNonConstPadsBeginPadsEndPadValParamsOk + : public ReferencePadV1TestNonConstPadsBeginPadsEndPadVal {}; TEST_P(ReferencePadV1TestNonConstPadsBeginPadsEndPadValParamsOk, CompareWithRefs) { EXPECT_NO_THROW(Exec()); @@ -212,691 +226,1308 @@ template std::vector generateParams() { using T = typename element_type_traits::value_type; using T_INT = typename element_type_traits::value_type; - std::vector params { - PadParams( - reference_tests::Tensor(ET, {6}, std::vector{ - 1, 2, 3, 4, 5, 6, - }), - reference_tests::Tensor(ET_INT, {1}, std::vector{4}), - reference_tests::Tensor(ET_INT, {1}, std::vector{5}), - reference_tests::Tensor(ET, {15}, std::vector{ - 2112, 2112, 2112, 2112, 1, 2, 3, 4, 5, 6, 2112, 2112, 2112, 2112, 2112, - }), - op::PadMode::CONSTANT, - reference_tests::Tensor(ET, {}, std::vector{2112}), - "pad_1d_constant_const_value_provided_0"), - PadParams( - reference_tests::Tensor(ET, {6}, std::vector{ - 1, 2, 3, 4, 5, 6, - }), - reference_tests::Tensor(ET_INT, {1}, std::vector{4}), - reference_tests::Tensor(ET_INT, {1}, std::vector{0}), - reference_tests::Tensor(ET, {10}, std::vector{ - 2112, 2112, 2112, 2112, 1, 2, 3, 4, 5, 6, - }), - op::PadMode::CONSTANT, - reference_tests::Tensor(ET, {}, std::vector{2112}), - "pad_1d_constant_const_value_provided_1"), - PadParams( - reference_tests::Tensor(ET, {6}, std::vector{ - 1, 2, 3, 4, 5, 6, - }), - reference_tests::Tensor(ET_INT, {1}, std::vector{0}), - reference_tests::Tensor(ET_INT, {1}, std::vector{3}), - reference_tests::Tensor(ET, {9}, std::vector{ - 1, 2, 3, 4, 5, 6, 2112, 2112, 2112, - }), - op::PadMode::CONSTANT, - reference_tests::Tensor(ET, {}, std::vector{2112}), - "pad_1d_constant_const_value_provided_2"), + std::vector params{ + PadParams(reference_tests::Tensor(ET, + {6}, + std::vector{ + 1, + 2, + 3, + 4, + 5, + 6, + }), + reference_tests::Tensor(ET_INT, {1}, std::vector{4}), + reference_tests::Tensor(ET_INT, {1}, std::vector{5}), + reference_tests::Tensor(ET, + {15}, + std::vector{ + 2112, + 2112, + 2112, + 2112, + 1, + 2, + 3, + 4, + 5, + 6, + 2112, + 2112, + 2112, + 2112, + 2112, + }), + op::PadMode::CONSTANT, + reference_tests::Tensor(ET, {}, std::vector{2112}), + "pad_1d_constant_const_value_provided_0"), + PadParams(reference_tests::Tensor(ET, + {6}, + std::vector{ + 1, + 2, + 3, + 4, + 5, + 6, + }), + reference_tests::Tensor(ET_INT, {1}, std::vector{4}), + reference_tests::Tensor(ET_INT, {1}, std::vector{0}), + reference_tests::Tensor(ET, + {10}, + std::vector{ + 2112, + 2112, + 2112, + 2112, + 1, + 2, + 3, + 4, + 5, + 6, + }), + op::PadMode::CONSTANT, + reference_tests::Tensor(ET, {}, std::vector{2112}), + "pad_1d_constant_const_value_provided_1"), + PadParams(reference_tests::Tensor(ET, + {6}, + std::vector{ + 1, + 2, + 3, + 4, + 5, + 6, + }), + reference_tests::Tensor(ET_INT, {1}, std::vector{0}), + reference_tests::Tensor(ET_INT, {1}, std::vector{3}), + reference_tests::Tensor(ET, + {9}, + std::vector{ + 1, + 2, + 3, + 4, + 5, + 6, + 2112, + 2112, + 2112, + }), + op::PadMode::CONSTANT, + reference_tests::Tensor(ET, {}, std::vector{2112}), + "pad_1d_constant_const_value_provided_2"), - PadParams( - reference_tests::Tensor(ET, {6}, std::vector{ - 1, 2, 3, 4, 5, 6, - }), - reference_tests::Tensor(ET_INT, {1}, std::vector{4}), - reference_tests::Tensor(ET_INT, {1}, std::vector{5}), - reference_tests::Tensor(ET, {15}, std::vector{ - 0, 0, 0, 0, 1, 2, 3, 4, 5, 6, 0, 0, 0, 0, 0, - }), - op::PadMode::CONSTANT, - "pad_1d_constant_use_default_const_0"), - PadParams( - reference_tests::Tensor(ET, {6}, std::vector{ - 1, 2, 3, 4, 5, 6, - }), - reference_tests::Tensor(ET_INT, {1}, std::vector{4}), - reference_tests::Tensor(ET_INT, {1}, std::vector{0}), - reference_tests::Tensor(ET, {10}, std::vector{ - 0, 0, 0, 0, 1, 2, 3, 4, 5, 6, - }), - op::PadMode::CONSTANT, - "pad_1d_constant_use_default_const_1"), - PadParams( - reference_tests::Tensor(ET, {6}, std::vector{ - 1, 2, 3, 4, 5, 6, - }), - reference_tests::Tensor(ET_INT, {1}, std::vector{0}), - reference_tests::Tensor(ET_INT, {1}, std::vector{3}), - reference_tests::Tensor(ET, {9}, std::vector{ - 1, 2, 3, 4, 5, 6, 0, 0, 0, - }), - op::PadMode::CONSTANT, - "pad_1d_constant_use_default_const_2"), + PadParams(reference_tests::Tensor(ET, + {6}, + std::vector{ + 1, + 2, + 3, + 4, + 5, + 6, + }), + reference_tests::Tensor(ET_INT, {1}, std::vector{4}), + reference_tests::Tensor(ET_INT, {1}, std::vector{5}), + reference_tests::Tensor(ET, + {15}, + std::vector{ + 0, + 0, + 0, + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 0, + 0, + 0, + 0, + 0, + }), + op::PadMode::CONSTANT, + "pad_1d_constant_use_default_const_0"), + PadParams(reference_tests::Tensor(ET, + {6}, + std::vector{ + 1, + 2, + 3, + 4, + 5, + 6, + }), + reference_tests::Tensor(ET_INT, {1}, std::vector{4}), + reference_tests::Tensor(ET_INT, {1}, std::vector{0}), + reference_tests::Tensor(ET, + {10}, + std::vector{ + 0, + 0, + 0, + 0, + 1, + 2, + 3, + 4, + 5, + 6, + }), + op::PadMode::CONSTANT, + "pad_1d_constant_use_default_const_1"), + PadParams(reference_tests::Tensor(ET, + {6}, + std::vector{ + 1, + 2, + 3, + 4, + 5, + 6, + }), + reference_tests::Tensor(ET_INT, {1}, std::vector{0}), + reference_tests::Tensor(ET_INT, {1}, std::vector{3}), + reference_tests::Tensor(ET, + {9}, + std::vector{ + 1, + 2, + 3, + 4, + 5, + 6, + 0, + 0, + 0, + }), + op::PadMode::CONSTANT, + "pad_1d_constant_use_default_const_2"), - PadParams( - reference_tests::Tensor(ET, {2, 2}, std::vector{ - 1, 2, 3, 4, - }), - reference_tests::Tensor(ET_INT, {2}, std::vector{1, 2}), - reference_tests::Tensor(ET_INT, {2}, std::vector{3, 4}), - reference_tests::Tensor(ET, {6, 8}, std::vector{ - 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, - 2112, 2112, 1, 2, 2112, 2112, 2112, 2112, - 2112, 2112, 3, 4, 2112, 2112, 2112, 2112, - 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, - 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, - 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, - }), - op::PadMode::CONSTANT, - reference_tests::Tensor(ET, {}, std::vector{2112}), - "pad_2d_constant_const_value_provided_0"), - PadParams( - reference_tests::Tensor(ET, {2, 2}, std::vector{ - 1, 2, 3, 4, - }), - reference_tests::Tensor(ET_INT, {2}, std::vector{1, 2}), - reference_tests::Tensor(ET_INT, {2}, std::vector{0, 0}), - reference_tests::Tensor(ET, {3, 4}, std::vector{ - 2112, 2112, 2112, 2112, - 2112, 2112, 1, 2, - 2112, 2112, 3, 4, - }), - op::PadMode::CONSTANT, - reference_tests::Tensor(ET, {}, std::vector{2112}), - "pad_2d_constant_const_value_provided_1"), - PadParams( - reference_tests::Tensor(ET, {2, 2}, std::vector{ - 1, 2, 3, 4, - }), - reference_tests::Tensor(ET_INT, {2}, std::vector{0, 0}), - reference_tests::Tensor(ET_INT, {2}, std::vector{1, 2}), - reference_tests::Tensor(ET, {3, 4}, std::vector{ - 1, 2, 2112, 2112, - 3, 4, 2112, 2112, - 2112, 2112, 2112, 2112, - }), - op::PadMode::CONSTANT, - reference_tests::Tensor(ET, {}, std::vector{2112}), - "pad_2d_constant_const_value_provided_2"), + PadParams(reference_tests::Tensor(ET, + {2, 2}, + std::vector{ + 1, + 2, + 3, + 4, + }), + reference_tests::Tensor(ET_INT, {2}, std::vector{1, 2}), + reference_tests::Tensor(ET_INT, {2}, std::vector{3, 4}), + reference_tests::Tensor(ET, + {6, 8}, + std::vector{ + 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 1, 2, + 2112, 2112, 2112, 2112, 2112, 2112, 3, 4, 2112, 2112, 2112, 2112, + 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, + 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, + }), + op::PadMode::CONSTANT, + reference_tests::Tensor(ET, {}, std::vector{2112}), + "pad_2d_constant_const_value_provided_0"), + PadParams(reference_tests::Tensor(ET, + {2, 2}, + std::vector{ + 1, + 2, + 3, + 4, + }), + reference_tests::Tensor(ET_INT, {2}, std::vector{1, 2}), + reference_tests::Tensor(ET_INT, {2}, std::vector{0, 0}), + reference_tests::Tensor(ET, + {3, 4}, + std::vector{ + 2112, + 2112, + 2112, + 2112, + 2112, + 2112, + 1, + 2, + 2112, + 2112, + 3, + 4, + }), + op::PadMode::CONSTANT, + reference_tests::Tensor(ET, {}, std::vector{2112}), + "pad_2d_constant_const_value_provided_1"), + PadParams(reference_tests::Tensor(ET, + {2, 2}, + std::vector{ + 1, + 2, + 3, + 4, + }), + reference_tests::Tensor(ET_INT, {2}, std::vector{0, 0}), + reference_tests::Tensor(ET_INT, {2}, std::vector{1, 2}), + reference_tests::Tensor(ET, + {3, 4}, + std::vector{ + 1, + 2, + 2112, + 2112, + 3, + 4, + 2112, + 2112, + 2112, + 2112, + 2112, + 2112, + }), + op::PadMode::CONSTANT, + reference_tests::Tensor(ET, {}, std::vector{2112}), + "pad_2d_constant_const_value_provided_2"), - PadParams( - reference_tests::Tensor(ET, {2, 2}, std::vector{ - 1, 2, 3, 4, - }), - reference_tests::Tensor(ET_INT, {2}, std::vector{1, 2}), - reference_tests::Tensor(ET_INT, {2}, std::vector{3, 4}), - reference_tests::Tensor(ET, {6, 8}, std::vector{ - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1, 2, 0, 0, 0, 0, - 0, 0, 3, 4, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - }), - op::PadMode::CONSTANT, - "pad_2d_constant_use_default_const_0"), - PadParams( - reference_tests::Tensor(ET, {2, 2}, std::vector{ - 1, 2, 3, 4, - }), - reference_tests::Tensor(ET_INT, {2}, std::vector{1, 2}), - reference_tests::Tensor(ET_INT, {2}, std::vector{0, 0}), - reference_tests::Tensor(ET, {3, 4}, std::vector{ - 0, 0, 0, 0, - 0, 0, 1, 2, - 0, 0, 3, 4, - }), - op::PadMode::CONSTANT, - "pad_2d_constant_use_default_const_1"), - PadParams( - reference_tests::Tensor(ET, {2, 2}, std::vector{ - 1, 2, 3, 4, - }), - reference_tests::Tensor(ET_INT, {2}, std::vector{0, 0}), - reference_tests::Tensor(ET_INT, {2}, std::vector{1, 2}), - reference_tests::Tensor(ET, {3, 4}, std::vector{ - 1, 2, 0, 0, - 3, 4, 0, 0, - 0, 0, 0, 0, - }), - op::PadMode::CONSTANT, - "pad_2d_constant_use_default_const_2"), + PadParams(reference_tests::Tensor(ET, + {2, 2}, + std::vector{ + 1, + 2, + 3, + 4, + }), + reference_tests::Tensor(ET_INT, {2}, std::vector{1, 2}), + reference_tests::Tensor(ET_INT, {2}, std::vector{3, 4}), + reference_tests::Tensor(ET, + {6, 8}, + std::vector{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }), + op::PadMode::CONSTANT, + "pad_2d_constant_use_default_const_0"), + PadParams(reference_tests::Tensor(ET, + {2, 2}, + std::vector{ + 1, + 2, + 3, + 4, + }), + reference_tests::Tensor(ET_INT, {2}, std::vector{1, 2}), + reference_tests::Tensor(ET_INT, {2}, std::vector{0, 0}), + reference_tests::Tensor(ET, + {3, 4}, + std::vector{ + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 2, + 0, + 0, + 3, + 4, + }), + op::PadMode::CONSTANT, + "pad_2d_constant_use_default_const_1"), + PadParams(reference_tests::Tensor(ET, + {2, 2}, + std::vector{ + 1, + 2, + 3, + 4, + }), + reference_tests::Tensor(ET_INT, {2}, std::vector{0, 0}), + reference_tests::Tensor(ET_INT, {2}, std::vector{1, 2}), + reference_tests::Tensor(ET, + {3, 4}, + std::vector{ + 1, + 2, + 0, + 0, + 3, + 4, + 0, + 0, + 0, + 0, + 0, + 0, + }), + op::PadMode::CONSTANT, + "pad_2d_constant_use_default_const_2"), - PadParams( - reference_tests::Tensor(ET, {6}, std::vector{ - 1, 2, 3, 4, 5, 6, - }), - reference_tests::Tensor(ET_INT, {1}, std::vector{2}), - reference_tests::Tensor(ET_INT, {1}, std::vector{3}), - reference_tests::Tensor(ET, {11}, std::vector{ - 1, 1, 1, 2, 3, 4, 5, 6, 6, 6, 6, - }), - op::PadMode::EDGE, - "pad_1d_edge_0"), - PadParams( - reference_tests::Tensor(ET, {6}, std::vector{ - 1, 2, 3, 4, 5, 6, - }), - reference_tests::Tensor(ET_INT, {1}, std::vector{1}), - reference_tests::Tensor(ET_INT, {1}, std::vector{0}), - reference_tests::Tensor(ET, {7}, std::vector{ - 1, 1, 2, 3, 4, 5, 6, - }), - op::PadMode::EDGE, - "pad_1d_edge_1"), - PadParams( - reference_tests::Tensor(ET, {6}, std::vector{ - 1, 2, 3, 4, 5, 6, - }), - reference_tests::Tensor(ET_INT, {1}, std::vector{0}), - reference_tests::Tensor(ET_INT, {1}, std::vector{2}), - reference_tests::Tensor(ET, {8}, std::vector{ - 1, 2, 3, 4, 5, 6, 6, 6, - }), - op::PadMode::EDGE, - "pad_1d_edge_2"), + PadParams(reference_tests::Tensor(ET, + {6}, + std::vector{ + 1, + 2, + 3, + 4, + 5, + 6, + }), + reference_tests::Tensor(ET_INT, {1}, std::vector{2}), + reference_tests::Tensor(ET_INT, {1}, std::vector{3}), + reference_tests::Tensor(ET, + {11}, + std::vector{ + 1, + 1, + 1, + 2, + 3, + 4, + 5, + 6, + 6, + 6, + 6, + }), + op::PadMode::EDGE, + "pad_1d_edge_0"), + PadParams(reference_tests::Tensor(ET, + {6}, + std::vector{ + 1, + 2, + 3, + 4, + 5, + 6, + }), + reference_tests::Tensor(ET_INT, {1}, std::vector{1}), + reference_tests::Tensor(ET_INT, {1}, std::vector{0}), + reference_tests::Tensor(ET, + {7}, + std::vector{ + 1, + 1, + 2, + 3, + 4, + 5, + 6, + }), + op::PadMode::EDGE, + "pad_1d_edge_1"), + PadParams(reference_tests::Tensor(ET, + {6}, + std::vector{ + 1, + 2, + 3, + 4, + 5, + 6, + }), + reference_tests::Tensor(ET_INT, {1}, std::vector{0}), + reference_tests::Tensor(ET_INT, {1}, std::vector{2}), + reference_tests::Tensor(ET, + {8}, + std::vector{ + 1, + 2, + 3, + 4, + 5, + 6, + 6, + 6, + }), + op::PadMode::EDGE, + "pad_1d_edge_2"), - PadParams( - reference_tests::Tensor(ET, {2, 2}, std::vector{ - 1, 2, 3, 4, - }), - reference_tests::Tensor(ET_INT, {2}, std::vector{1, 2}), - reference_tests::Tensor(ET_INT, {2}, std::vector{2, 1}), - reference_tests::Tensor(ET, {5, 5}, std::vector{ - 1, 1, 1, 2, 2, - 1, 1, 1, 2, 2, - 3, 3, 3, 4, 4, - 3, 3, 3, 4, 4, - 3, 3, 3, 4, 4, - }), - op::PadMode::EDGE, - "pad_2d_edge_0"), - PadParams( - reference_tests::Tensor(ET, {2, 2}, std::vector{ - 1, 2, 3, 4, - }), - reference_tests::Tensor(ET_INT, {2}, std::vector{1, 2}), - reference_tests::Tensor(ET_INT, {2}, std::vector{0, 0}), - reference_tests::Tensor(ET, {3, 4}, std::vector{ - 1, 1, 1, 2, - 1, 1, 1, 2, - 3, 3, 3, 4, - }), - op::PadMode::EDGE, - "pad_2d_edge_1"), - PadParams( - reference_tests::Tensor(ET, {2, 2}, std::vector{ - 1, 2, 3, 4, - }), - reference_tests::Tensor(ET_INT, {2}, std::vector{0, 0}), - reference_tests::Tensor(ET_INT, {2}, std::vector{2, 1}), - reference_tests::Tensor(ET, {4, 3}, std::vector{ - 1, 2, 2, - 3, 4, 4, - 3, 4, 4, - 3, 4, 4, - }), - op::PadMode::EDGE, - "pad_2d_edge_2"), + PadParams(reference_tests::Tensor(ET, + {2, 2}, + std::vector{ + 1, + 2, + 3, + 4, + }), + reference_tests::Tensor(ET_INT, {2}, std::vector{1, 2}), + reference_tests::Tensor(ET_INT, {2}, std::vector{2, 1}), + reference_tests::Tensor(ET, + {5, 5}, + std::vector{ + 1, 1, 1, 2, 2, 1, 1, 1, 2, 2, 3, 3, 3, 4, 4, 3, 3, 3, 4, 4, 3, 3, 3, 4, 4, + }), + op::PadMode::EDGE, + "pad_2d_edge_0"), + PadParams(reference_tests::Tensor(ET, + {2, 2}, + std::vector{ + 1, + 2, + 3, + 4, + }), + reference_tests::Tensor(ET_INT, {2}, std::vector{1, 2}), + reference_tests::Tensor(ET_INT, {2}, std::vector{0, 0}), + reference_tests::Tensor(ET, + {3, 4}, + std::vector{ + 1, + 1, + 1, + 2, + 1, + 1, + 1, + 2, + 3, + 3, + 3, + 4, + }), + op::PadMode::EDGE, + "pad_2d_edge_1"), + PadParams(reference_tests::Tensor(ET, + {2, 2}, + std::vector{ + 1, + 2, + 3, + 4, + }), + reference_tests::Tensor(ET_INT, {2}, std::vector{0, 0}), + reference_tests::Tensor(ET_INT, {2}, std::vector{2, 1}), + reference_tests::Tensor(ET, + {4, 3}, + std::vector{ + 1, + 2, + 2, + 3, + 4, + 4, + 3, + 4, + 4, + 3, + 4, + 4, + }), + op::PadMode::EDGE, + "pad_2d_edge_2"), - PadParams( - reference_tests::Tensor(ET, {6}, std::vector{ - 1, 2, 3, 4, 5, 6, - }), - reference_tests::Tensor(ET_INT, {1}, std::vector{2}), - reference_tests::Tensor(ET_INT, {1}, std::vector{3}), - reference_tests::Tensor(ET, {11}, std::vector{ - 3, 2, 1, 2, 3, 4, 5, 6, 5, 4, 3, - }), - op::PadMode::REFLECT, - "pad_1d_reflect_0"), - PadParams( - reference_tests::Tensor(ET, {6}, std::vector{ - 1, 2, 3, 4, 5, 6, - }), - reference_tests::Tensor(ET_INT, {1}, std::vector{1}), - reference_tests::Tensor(ET_INT, {1}, std::vector{0}), - reference_tests::Tensor(ET, {7}, std::vector{ - 2, 1, 2, 3, 4, 5, 6, - }), - op::PadMode::REFLECT, - "pad_1d_reflect_1"), - PadParams( - reference_tests::Tensor(ET, {6}, std::vector{ - 1, 2, 3, 4, 5, 6, - }), - reference_tests::Tensor(ET_INT, {1}, std::vector{0}), - reference_tests::Tensor(ET_INT, {1}, std::vector{2}), - reference_tests::Tensor(ET, {8}, std::vector{ - 1, 2, 3, 4, 5, 6, 5, 4, - }), - op::PadMode::REFLECT, - "pad_1d_reflect_2"), + PadParams(reference_tests::Tensor(ET, + {6}, + std::vector{ + 1, + 2, + 3, + 4, + 5, + 6, + }), + reference_tests::Tensor(ET_INT, {1}, std::vector{2}), + reference_tests::Tensor(ET_INT, {1}, std::vector{3}), + reference_tests::Tensor(ET, + {11}, + std::vector{ + 3, + 2, + 1, + 2, + 3, + 4, + 5, + 6, + 5, + 4, + 3, + }), + op::PadMode::REFLECT, + "pad_1d_reflect_0"), + PadParams(reference_tests::Tensor(ET, + {6}, + std::vector{ + 1, + 2, + 3, + 4, + 5, + 6, + }), + reference_tests::Tensor(ET_INT, {1}, std::vector{1}), + reference_tests::Tensor(ET_INT, {1}, std::vector{0}), + reference_tests::Tensor(ET, + {7}, + std::vector{ + 2, + 1, + 2, + 3, + 4, + 5, + 6, + }), + op::PadMode::REFLECT, + "pad_1d_reflect_1"), + PadParams(reference_tests::Tensor(ET, + {6}, + std::vector{ + 1, + 2, + 3, + 4, + 5, + 6, + }), + reference_tests::Tensor(ET_INT, {1}, std::vector{0}), + reference_tests::Tensor(ET_INT, {1}, std::vector{2}), + reference_tests::Tensor(ET, + {8}, + std::vector{ + 1, + 2, + 3, + 4, + 5, + 6, + 5, + 4, + }), + op::PadMode::REFLECT, + "pad_1d_reflect_2"), - PadParams( - reference_tests::Tensor(ET, {3, 3}, std::vector{ - 1, 2, 3, 4, 5, 6, 7, 8, 9, - }), - reference_tests::Tensor(ET_INT, {2}, std::vector{1, 2}), - reference_tests::Tensor(ET_INT, {2}, std::vector{2, 1}), - reference_tests::Tensor(ET, {6, 6}, std::vector{ - 6, 5, 4, 5, 6, 5, - 3, 2, 1, 2, 3, 2, - 6, 5, 4, 5, 6, 5, - 9, 8, 7, 8, 9, 8, - 6, 5, 4, 5, 6, 5, - 3, 2, 1, 2, 3, 2, - }), - op::PadMode::REFLECT, - "pad_2d_reflect_0"), - PadParams( - reference_tests::Tensor(ET, {3, 3}, std::vector{ - 1, 2, 3, 4, 5, 6, 7, 8, 9, - }), - reference_tests::Tensor(ET_INT, {2}, std::vector{1, 2}), - reference_tests::Tensor(ET_INT, {2}, std::vector{0, 0}), - reference_tests::Tensor(ET, {4, 5}, std::vector{ - 6, 5, 4, 5, 6, - 3, 2, 1, 2, 3, - 6, 5, 4, 5, 6, - 9, 8, 7, 8, 9, - }), - op::PadMode::REFLECT, - "pad_2d_reflect_1"), - PadParams( - reference_tests::Tensor(ET, {3, 3}, std::vector{ - 1, 2, 3, 4, 5, 6, 7, 8, 9, - }), - reference_tests::Tensor(ET_INT, {2}, std::vector{0, 0}), - reference_tests::Tensor(ET_INT, {2}, std::vector{2, 1}), - reference_tests::Tensor(ET, {5, 4}, std::vector{ - 1, 2, 3, 2, - 4, 5, 6, 5, - 7, 8, 9, 8, - 4, 5, 6, 5, - 1, 2, 3, 2, - }), - op::PadMode::REFLECT, - "pad_2d_reflect_2"), + PadParams(reference_tests::Tensor(ET, + {3, 3}, + std::vector{ + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + }), + reference_tests::Tensor(ET_INT, {2}, std::vector{1, 2}), + reference_tests::Tensor(ET_INT, {2}, std::vector{2, 1}), + reference_tests::Tensor(ET, + {6, 6}, + std::vector{ + 6, 5, 4, 5, 6, 5, 3, 2, 1, 2, 3, 2, 6, 5, 4, 5, 6, 5, + 9, 8, 7, 8, 9, 8, 6, 5, 4, 5, 6, 5, 3, 2, 1, 2, 3, 2, + }), + op::PadMode::REFLECT, + "pad_2d_reflect_0"), + PadParams(reference_tests::Tensor(ET, + {3, 3}, + std::vector{ + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + }), + reference_tests::Tensor(ET_INT, {2}, std::vector{1, 2}), + reference_tests::Tensor(ET_INT, {2}, std::vector{0, 0}), + reference_tests::Tensor(ET, + {4, 5}, + std::vector{ + 6, 5, 4, 5, 6, 3, 2, 1, 2, 3, 6, 5, 4, 5, 6, 9, 8, 7, 8, 9, + }), + op::PadMode::REFLECT, + "pad_2d_reflect_1"), + PadParams(reference_tests::Tensor(ET, + {3, 3}, + std::vector{ + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + }), + reference_tests::Tensor(ET_INT, {2}, std::vector{0, 0}), + reference_tests::Tensor(ET_INT, {2}, std::vector{2, 1}), + reference_tests::Tensor(ET, + {5, 4}, + std::vector{ + 1, 2, 3, 2, 4, 5, 6, 5, 7, 8, 9, 8, 4, 5, 6, 5, 1, 2, 3, 2, + }), + op::PadMode::REFLECT, + "pad_2d_reflect_2"), - PadParams( - reference_tests::Tensor(ET, {6}, std::vector{ - 1, 2, 3, 4, 5, 6, - }), - reference_tests::Tensor(ET_INT, {1}, std::vector{2}), - reference_tests::Tensor(ET_INT, {1}, std::vector{3}), - reference_tests::Tensor(ET, {11}, std::vector{ - 2, 1, 1, 2, 3, 4, 5, 6, 6, 5, 4, - }), - op::PadMode::SYMMETRIC, - "pad_1d_symmetric_0"), - PadParams( - reference_tests::Tensor(ET, {6}, std::vector{ - 1, 2, 3, 4, 5, 6, - }), - reference_tests::Tensor(ET_INT, {1}, std::vector{1}), - reference_tests::Tensor(ET_INT, {1}, std::vector{0}), - reference_tests::Tensor(ET, {7}, std::vector{ - 1, 1, 2, 3, 4, 5, 6, - }), - op::PadMode::SYMMETRIC, - "pad_1d_symmetric_1"), - PadParams( - reference_tests::Tensor(ET, {6}, std::vector{ - 1, 2, 3, 4, 5, 6, - }), - reference_tests::Tensor(ET_INT, {1}, std::vector{0}), - reference_tests::Tensor(ET_INT, {1}, std::vector{2}), - reference_tests::Tensor(ET, {8}, std::vector{ - 1, 2, 3, 4, 5, 6, 6, 5, - }), - op::PadMode::SYMMETRIC, - "pad_1d_symmetric_2"), + PadParams(reference_tests::Tensor(ET, + {6}, + std::vector{ + 1, + 2, + 3, + 4, + 5, + 6, + }), + reference_tests::Tensor(ET_INT, {1}, std::vector{2}), + reference_tests::Tensor(ET_INT, {1}, std::vector{3}), + reference_tests::Tensor(ET, + {11}, + std::vector{ + 2, + 1, + 1, + 2, + 3, + 4, + 5, + 6, + 6, + 5, + 4, + }), + op::PadMode::SYMMETRIC, + "pad_1d_symmetric_0"), + PadParams(reference_tests::Tensor(ET, + {6}, + std::vector{ + 1, + 2, + 3, + 4, + 5, + 6, + }), + reference_tests::Tensor(ET_INT, {1}, std::vector{1}), + reference_tests::Tensor(ET_INT, {1}, std::vector{0}), + reference_tests::Tensor(ET, + {7}, + std::vector{ + 1, + 1, + 2, + 3, + 4, + 5, + 6, + }), + op::PadMode::SYMMETRIC, + "pad_1d_symmetric_1"), + PadParams(reference_tests::Tensor(ET, + {6}, + std::vector{ + 1, + 2, + 3, + 4, + 5, + 6, + }), + reference_tests::Tensor(ET_INT, {1}, std::vector{0}), + reference_tests::Tensor(ET_INT, {1}, std::vector{2}), + reference_tests::Tensor(ET, + {8}, + std::vector{ + 1, + 2, + 3, + 4, + 5, + 6, + 6, + 5, + }), + op::PadMode::SYMMETRIC, + "pad_1d_symmetric_2"), - PadParams( - reference_tests::Tensor(ET, {3, 3}, std::vector{ - 1, 2, 3, 4, 5, 6, 7, 8, 9, - }), - reference_tests::Tensor(ET_INT, {2}, std::vector{1, 2}), - reference_tests::Tensor(ET_INT, {2}, std::vector{2, 1}), - reference_tests::Tensor(ET, {6, 6}, std::vector{ - 2, 1, 1, 2, 3, 3, - 2, 1, 1, 2, 3, 3, - 5, 4, 4, 5, 6, 6, - 8, 7, 7, 8, 9, 9, - 8, 7, 7, 8, 9, 9, - 5, 4, 4, 5, 6, 6, - }), - op::PadMode::SYMMETRIC, - "pad_2d_symmetric_0"), - PadParams( - reference_tests::Tensor(ET, {3, 3}, std::vector{ - 1, 2, 3, 4, 5, 6, 7, 8, 9, - }), - reference_tests::Tensor(ET_INT, {2}, std::vector{1, 2}), - reference_tests::Tensor(ET_INT, {2}, std::vector{0, 0}), - reference_tests::Tensor(ET, {4, 5}, std::vector{ - 2, 1, 1, 2, 3, - 2, 1, 1, 2, 3, - 5, 4, 4, 5, 6, - 8, 7, 7, 8, 9, - }), - op::PadMode::SYMMETRIC, - "pad_2d_symmetric_1"), - PadParams( - reference_tests::Tensor(ET, {3, 3}, std::vector{ - 1, 2, 3, 4, 5, 6, 7, 8, 9, - }), - reference_tests::Tensor(ET_INT, {2}, std::vector{0, 0}), - reference_tests::Tensor(ET_INT, {2}, std::vector{2, 1}), - reference_tests::Tensor(ET, {5, 4}, std::vector{ - 1, 2, 3, 3, - 4, 5, 6, 6, - 7, 8, 9, 9, - 7, 8, 9, 9, - 4, 5, 6, 6, - }), - op::PadMode::SYMMETRIC, - "pad_2d_symmetric"), + PadParams(reference_tests::Tensor(ET, + {3, 3}, + std::vector{ + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + }), + reference_tests::Tensor(ET_INT, {2}, std::vector{1, 2}), + reference_tests::Tensor(ET_INT, {2}, std::vector{2, 1}), + reference_tests::Tensor(ET, + {6, 6}, + std::vector{ + 2, 1, 1, 2, 3, 3, 2, 1, 1, 2, 3, 3, 5, 4, 4, 5, 6, 6, + 8, 7, 7, 8, 9, 9, 8, 7, 7, 8, 9, 9, 5, 4, 4, 5, 6, 6, + }), + op::PadMode::SYMMETRIC, + "pad_2d_symmetric_0"), + PadParams(reference_tests::Tensor(ET, + {3, 3}, + std::vector{ + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + }), + reference_tests::Tensor(ET_INT, {2}, std::vector{1, 2}), + reference_tests::Tensor(ET_INT, {2}, std::vector{0, 0}), + reference_tests::Tensor(ET, + {4, 5}, + std::vector{ + 2, 1, 1, 2, 3, 2, 1, 1, 2, 3, 5, 4, 4, 5, 6, 8, 7, 7, 8, 9, + }), + op::PadMode::SYMMETRIC, + "pad_2d_symmetric_1"), + PadParams(reference_tests::Tensor(ET, + {3, 3}, + std::vector{ + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + }), + reference_tests::Tensor(ET_INT, {2}, std::vector{0, 0}), + reference_tests::Tensor(ET_INT, {2}, std::vector{2, 1}), + reference_tests::Tensor(ET, + {5, 4}, + std::vector{ + 1, 2, 3, 3, 4, 5, 6, 6, 7, 8, 9, 9, 7, 8, 9, 9, 4, 5, 6, 6, + }), + op::PadMode::SYMMETRIC, + "pad_2d_symmetric"), - PadParams( - reference_tests::Tensor(ET, {6}, std::vector{ - 1, 2, 3, 4, 5, 6, - }), - reference_tests::Tensor(ET_INT, {1}, std::vector{4}), - reference_tests::Tensor(ET_INT, {1}, std::vector{5}), - reference_tests::Tensor(ET, {15}, std::vector{ - 2112, 2112, 2112, 2112, 1, 2, 3, 4, 5, 6, 2112, 2112, 2112, 2112, 2112, - }), - op::PadMode::CONSTANT, - reference_tests::Tensor(ET, {}, std::vector{2112}), - "pad_exterior_1d"), + PadParams(reference_tests::Tensor(ET, + {6}, + std::vector{ + 1, + 2, + 3, + 4, + 5, + 6, + }), + reference_tests::Tensor(ET_INT, {1}, std::vector{4}), + reference_tests::Tensor(ET_INT, {1}, std::vector{5}), + reference_tests::Tensor(ET, + {15}, + std::vector{ + 2112, + 2112, + 2112, + 2112, + 1, + 2, + 3, + 4, + 5, + 6, + 2112, + 2112, + 2112, + 2112, + 2112, + }), + op::PadMode::CONSTANT, + reference_tests::Tensor(ET, {}, std::vector{2112}), + "pad_exterior_1d"), - PadParams( - reference_tests::Tensor(ET, {6}, std::vector{ - 1, 2, 3, 4, 5, 6, - }), - reference_tests::Tensor(ET_INT, {1}, std::vector{4}), - reference_tests::Tensor(ET_INT, {1}, std::vector{-2}), - reference_tests::Tensor(ET, {8}, std::vector{ - 2112, 2112, 2112, 2112, 1, 2, 3, 4, - }), - op::PadMode::CONSTANT, - reference_tests::Tensor(ET, {}, std::vector{2112}), - "pad_negative_exterior_1d"), + PadParams(reference_tests::Tensor(ET, + {6}, + std::vector{ + 1, + 2, + 3, + 4, + 5, + 6, + }), + reference_tests::Tensor(ET_INT, {1}, std::vector{4}), + reference_tests::Tensor(ET_INT, {1}, std::vector{-2}), + reference_tests::Tensor(ET, + {8}, + std::vector{ + 2112, + 2112, + 2112, + 2112, + 1, + 2, + 3, + 4, + }), + op::PadMode::CONSTANT, + reference_tests::Tensor(ET, {}, std::vector{2112}), + "pad_negative_exterior_1d"), - PadParams( - reference_tests::Tensor(ET, {6}, std::vector{ - 1, 2, 3, 4, 5, 6, - }), - reference_tests::Tensor(ET_INT, {1}, std::vector{4}), - reference_tests::Tensor(ET_INT, {1}, std::vector{-7}), - reference_tests::Tensor(ET, {3}, std::vector{ - 2112, 2112, 2112, - }), - op::PadMode::CONSTANT, - reference_tests::Tensor(ET, {}, std::vector{2112}), - "pad_negative_exterior_1d_check_limits"), + PadParams(reference_tests::Tensor(ET, + {6}, + std::vector{ + 1, + 2, + 3, + 4, + 5, + 6, + }), + reference_tests::Tensor(ET_INT, {1}, std::vector{4}), + reference_tests::Tensor(ET_INT, {1}, std::vector{-7}), + reference_tests::Tensor(ET, + {3}, + std::vector{ + 2112, + 2112, + 2112, + }), + op::PadMode::CONSTANT, + reference_tests::Tensor(ET, {}, std::vector{2112}), + "pad_negative_exterior_1d_check_limits"), - PadParams( - reference_tests::Tensor(ET, {6}, std::vector{ - 1, 2, 3, 4, 5, 6, - }), - reference_tests::Tensor(ET_INT, {1}, std::vector{2}), - reference_tests::Tensor(ET_INT, {1}, std::vector{3}), - reference_tests::Tensor(ET, {11}, std::vector{ - 1, 1, 1, 2, 3, 4, 5, 6, 6, 6, 6, - }), - op::PadMode::EDGE, - reference_tests::Tensor(ET, {}, std::vector{2112}), - "pad_edge_1d"), + PadParams(reference_tests::Tensor(ET, + {6}, + std::vector{ + 1, + 2, + 3, + 4, + 5, + 6, + }), + reference_tests::Tensor(ET_INT, {1}, std::vector{2}), + reference_tests::Tensor(ET_INT, {1}, std::vector{3}), + reference_tests::Tensor(ET, + {11}, + std::vector{ + 1, + 1, + 1, + 2, + 3, + 4, + 5, + 6, + 6, + 6, + 6, + }), + op::PadMode::EDGE, + reference_tests::Tensor(ET, {}, std::vector{2112}), + "pad_edge_1d"), - PadParams( - reference_tests::Tensor(ET, {6}, std::vector{ - 1, 2, 3, 4, 5, 6, - }), - reference_tests::Tensor(ET_INT, {1}, std::vector{2}), - reference_tests::Tensor(ET_INT, {1}, std::vector{-3}), - reference_tests::Tensor(ET, {5}, std::vector{ - 1, 1, 1, 2, 3, - }), - op::PadMode::EDGE, - reference_tests::Tensor(ET, {}, std::vector{2112}), - "pad_edge_1d_top_neg"), + PadParams(reference_tests::Tensor(ET, + {6}, + std::vector{ + 1, + 2, + 3, + 4, + 5, + 6, + }), + reference_tests::Tensor(ET_INT, {1}, std::vector{2}), + reference_tests::Tensor(ET_INT, {1}, std::vector{-3}), + reference_tests::Tensor(ET, + {5}, + std::vector{ + 1, + 1, + 1, + 2, + 3, + }), + op::PadMode::EDGE, + reference_tests::Tensor(ET, {}, std::vector{2112}), + "pad_edge_1d_top_neg"), - PadParams( - reference_tests::Tensor(ET, {6}, std::vector{ - 1, 2, 3, 4, 5, 6, - }), - reference_tests::Tensor(ET_INT, {1}, std::vector{2}), - reference_tests::Tensor(ET_INT, {1}, std::vector{-7}), - reference_tests::Tensor(ET, {1}, std::vector{ - 1, - }), - op::PadMode::EDGE, - reference_tests::Tensor(ET, {}, std::vector{2112}), - "pad_edge_1d_top_neg_bigger_than_tensor"), + PadParams(reference_tests::Tensor(ET, + {6}, + std::vector{ + 1, + 2, + 3, + 4, + 5, + 6, + }), + reference_tests::Tensor(ET_INT, {1}, std::vector{2}), + reference_tests::Tensor(ET_INT, {1}, std::vector{-7}), + reference_tests::Tensor(ET, + {1}, + std::vector{ + 1, + }), + op::PadMode::EDGE, + reference_tests::Tensor(ET, {}, std::vector{2112}), + "pad_edge_1d_top_neg_bigger_than_tensor"), - PadParams( - reference_tests::Tensor(ET, {6}, std::vector{ - 1, 2, 3, 4, 5, 6, - }), - reference_tests::Tensor(ET_INT, {1}, std::vector{-2}), - reference_tests::Tensor(ET_INT, {1}, std::vector{3}), - reference_tests::Tensor(ET, {7}, std::vector{ - 3, 4, 5, 6, 6, 6, 6, - }), - op::PadMode::EDGE, - reference_tests::Tensor(ET, {}, std::vector{2112}), - "pad_edge_1d_bottom_neg"), + PadParams(reference_tests::Tensor(ET, + {6}, + std::vector{ + 1, + 2, + 3, + 4, + 5, + 6, + }), + reference_tests::Tensor(ET_INT, {1}, std::vector{-2}), + reference_tests::Tensor(ET_INT, {1}, std::vector{3}), + reference_tests::Tensor(ET, + {7}, + std::vector{ + 3, + 4, + 5, + 6, + 6, + 6, + 6, + }), + op::PadMode::EDGE, + reference_tests::Tensor(ET, {}, std::vector{2112}), + "pad_edge_1d_bottom_neg"), - PadParams( - reference_tests::Tensor(ET, {6}, std::vector{ - 1, 2, 3, 4, 5, 6, - }), - reference_tests::Tensor(ET_INT, {1}, std::vector{-7}), - reference_tests::Tensor(ET_INT, {1}, std::vector{3}), - reference_tests::Tensor(ET, {2}, std::vector{ - 6, 6, - }), - op::PadMode::EDGE, - reference_tests::Tensor(ET, {}, std::vector{2112}), - "pad_edge_1d_bottom_neg_bigger_than_tensor"), + PadParams(reference_tests::Tensor(ET, + {6}, + std::vector{ + 1, + 2, + 3, + 4, + 5, + 6, + }), + reference_tests::Tensor(ET_INT, {1}, std::vector{-7}), + reference_tests::Tensor(ET_INT, {1}, std::vector{3}), + reference_tests::Tensor(ET, + {2}, + std::vector{ + 6, + 6, + }), + op::PadMode::EDGE, + reference_tests::Tensor(ET, {}, std::vector{2112}), + "pad_edge_1d_bottom_neg_bigger_than_tensor"), - PadParams( - reference_tests::Tensor(ET, {3, 4}, std::vector{ - 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, - }), - reference_tests::Tensor(ET_INT, {2}, std::vector{2, 3}), - reference_tests::Tensor(ET_INT, {2}, std::vector{1, 2}), - reference_tests::Tensor(ET, {6, 9}, std::vector{ - 1, 1, 1, 1, 2, 3, 4, 4, 4, - 1, 1, 1, 1, 2, 3, 4, 4, 4, - 1, 1, 1, 1, 2, 3, 4, 4, 4, - 5, 5, 5, 5, 6, 7, 8, 8, 8, - 9, 9, 9, 9, 10, 11, 12, 12, 12, - 9, 9, 9, 9, 10, 11, 12, 12, 12, - }), - op::PadMode::EDGE, - reference_tests::Tensor(ET, {}, std::vector{2112}), - "pad_edge_2d"), + PadParams(reference_tests::Tensor(ET, + {3, 4}, + std::vector{ + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + }), + reference_tests::Tensor(ET_INT, {2}, std::vector{2, 3}), + reference_tests::Tensor(ET_INT, {2}, std::vector{1, 2}), + reference_tests::Tensor( + ET, + {6, 9}, + std::vector{ + 1, 1, 1, 1, 2, 3, 4, 4, 4, 1, 1, 1, 1, 2, 3, 4, 4, 4, 1, 1, 1, 1, 2, 3, 4, 4, 4, + 5, 5, 5, 5, 6, 7, 8, 8, 8, 9, 9, 9, 9, 10, 11, 12, 12, 12, 9, 9, 9, 9, 10, 11, 12, 12, 12, + }), + op::PadMode::EDGE, + reference_tests::Tensor(ET, {}, std::vector{2112}), + "pad_edge_2d"), - PadParams( - reference_tests::Tensor(ET, {3, 4}, std::vector{ - 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, - }), - reference_tests::Tensor(ET_INT, {2}, std::vector{2, -1}), - reference_tests::Tensor(ET_INT, {2}, std::vector{1, 2}), - reference_tests::Tensor(ET, {6, 5}, std::vector{ - 2, 3, 4, 4, 4, - 2, 3, 4, 4, 4, - 2, 3, 4, 4, 4, - 6, 7, 8, 8, 8, - 10, 11, 12, 12, 12, - 10, 11, 12, 12, 12, - }), - op::PadMode::EDGE, - reference_tests::Tensor(ET, {}, std::vector{2112}), - "pad_edge_2d_with_neg"), + PadParams(reference_tests::Tensor(ET, + {3, 4}, + std::vector{ + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + }), + reference_tests::Tensor(ET_INT, {2}, std::vector{2, -1}), + reference_tests::Tensor(ET_INT, {2}, std::vector{1, 2}), + reference_tests::Tensor(ET, + {6, 5}, + std::vector{ + 2, 3, 4, 4, 4, 2, 3, 4, 4, 4, 2, 3, 4, 4, 4, + 6, 7, 8, 8, 8, 10, 11, 12, 12, 12, 10, 11, 12, 12, 12, + }), + op::PadMode::EDGE, + reference_tests::Tensor(ET, {}, std::vector{2112}), + "pad_edge_2d_with_neg"), - PadParams( - reference_tests::Tensor(ET, {6}, std::vector{ - 1, 2, 3, 4, 5, 6, - }), - reference_tests::Tensor(ET_INT, {1}, std::vector{2}), - reference_tests::Tensor(ET_INT, {1}, std::vector{3}), - reference_tests::Tensor(ET, {11}, std::vector{ - 3, 2, 1, 2, 3, 4, 5, 6, 5, 4, 3, - }), - op::PadMode::REFLECT, - reference_tests::Tensor(ET, {}, std::vector{2112}), - "pad_reflect_1d"), + PadParams(reference_tests::Tensor(ET, + {6}, + std::vector{ + 1, + 2, + 3, + 4, + 5, + 6, + }), + reference_tests::Tensor(ET_INT, {1}, std::vector{2}), + reference_tests::Tensor(ET_INT, {1}, std::vector{3}), + reference_tests::Tensor(ET, + {11}, + std::vector{ + 3, + 2, + 1, + 2, + 3, + 4, + 5, + 6, + 5, + 4, + 3, + }), + op::PadMode::REFLECT, + reference_tests::Tensor(ET, {}, std::vector{2112}), + "pad_reflect_1d"), - PadParams( - reference_tests::Tensor(ET, {6}, std::vector{ - 1, 2, 3, 4, 5, 6, - }), - reference_tests::Tensor(ET_INT, {1}, std::vector{2}), - reference_tests::Tensor(ET_INT, {1}, std::vector{-3}), - reference_tests::Tensor(ET, {5}, std::vector{ - 3, 2, 1, 2, 3, - }), - op::PadMode::REFLECT, - reference_tests::Tensor(ET, {}, std::vector{2112}), - "pad_reflect_1d_top_neg"), + PadParams(reference_tests::Tensor(ET, + {6}, + std::vector{ + 1, + 2, + 3, + 4, + 5, + 6, + }), + reference_tests::Tensor(ET_INT, {1}, std::vector{2}), + reference_tests::Tensor(ET_INT, {1}, std::vector{-3}), + reference_tests::Tensor(ET, + {5}, + std::vector{ + 3, + 2, + 1, + 2, + 3, + }), + op::PadMode::REFLECT, + reference_tests::Tensor(ET, {}, std::vector{2112}), + "pad_reflect_1d_top_neg"), - PadParams( - reference_tests::Tensor(ET, {6}, std::vector{ - 1, 2, 3, 4, 5, 6, - }), - reference_tests::Tensor(ET_INT, {1}, std::vector{2}), - reference_tests::Tensor(ET_INT, {1}, std::vector{-7}), - reference_tests::Tensor(ET, {1}, std::vector{ - 3, - }), - op::PadMode::REFLECT, - reference_tests::Tensor(ET, {}, std::vector{2112}), - "pad_reflect_1d_top_neg_bigger_than_tensor"), + PadParams(reference_tests::Tensor(ET, + {6}, + std::vector{ + 1, + 2, + 3, + 4, + 5, + 6, + }), + reference_tests::Tensor(ET_INT, {1}, std::vector{2}), + reference_tests::Tensor(ET_INT, {1}, std::vector{-7}), + reference_tests::Tensor(ET, + {1}, + std::vector{ + 3, + }), + op::PadMode::REFLECT, + reference_tests::Tensor(ET, {}, std::vector{2112}), + "pad_reflect_1d_top_neg_bigger_than_tensor"), - PadParams( - reference_tests::Tensor(ET, {6}, std::vector{ - 1, 2, 3, 4, 5, 6, - }), - reference_tests::Tensor(ET_INT, {1}, std::vector{-2}), - reference_tests::Tensor(ET_INT, {1}, std::vector{3}), - reference_tests::Tensor(ET, {7}, std::vector{ - 3, 4, 5, 6, 5, 4, 3, - }), - op::PadMode::REFLECT, - reference_tests::Tensor(ET, {}, std::vector{2112}), - "pad_reflect_1d_bottom_neg"), + PadParams(reference_tests::Tensor(ET, + {6}, + std::vector{ + 1, + 2, + 3, + 4, + 5, + 6, + }), + reference_tests::Tensor(ET_INT, {1}, std::vector{-2}), + reference_tests::Tensor(ET_INT, {1}, std::vector{3}), + reference_tests::Tensor(ET, + {7}, + std::vector{ + 3, + 4, + 5, + 6, + 5, + 4, + 3, + }), + op::PadMode::REFLECT, + reference_tests::Tensor(ET, {}, std::vector{2112}), + "pad_reflect_1d_bottom_neg"), - PadParams( - reference_tests::Tensor(ET, {6}, std::vector{ - 1, 2, 3, 4, 5, 6, - }), - reference_tests::Tensor(ET_INT, {1}, std::vector{-7}), - reference_tests::Tensor(ET_INT, {1}, std::vector{3}), - reference_tests::Tensor(ET, {2}, std::vector{ - 4, 3, - }), - op::PadMode::REFLECT, - reference_tests::Tensor(ET, {}, std::vector{2112}), - "pad_reflect_1d_bottom_neg_bigger_than_tensor"), + PadParams(reference_tests::Tensor(ET, + {6}, + std::vector{ + 1, + 2, + 3, + 4, + 5, + 6, + }), + reference_tests::Tensor(ET_INT, {1}, std::vector{-7}), + reference_tests::Tensor(ET_INT, {1}, std::vector{3}), + reference_tests::Tensor(ET, + {2}, + std::vector{ + 4, + 3, + }), + op::PadMode::REFLECT, + reference_tests::Tensor(ET, {}, std::vector{2112}), + "pad_reflect_1d_bottom_neg_bigger_than_tensor"), - PadParams( - reference_tests::Tensor(ET, {3, 4}, std::vector{ - 1, 2, 3, 4, - 5, 6, 7, 8, - 9, 10, 11, 12, - }), - reference_tests::Tensor(ET_INT, {2}, std::vector{2, 3}), - reference_tests::Tensor(ET_INT, {2}, std::vector{1, 2}), - reference_tests::Tensor(ET, {6, 9}, std::vector{ - 12, 11, 10, 9, 10, 11, 12, 11, 10, - 8, 7, 6, 5, 6, 7, 8, 7, 6, - 4, 3, 2, 1, 2, 3, 4, 3, 2, - 8, 7, 6, 5, 6, 7, 8, 7, 6, - 12, 11, 10, 9, 10, 11, 12, 11, 10, - 8, 7, 6, 5, 6, 7, 8, 7, 6, - }), - op::PadMode::REFLECT, - reference_tests::Tensor(ET, {}, std::vector{2112}), - "pad_reflect_2d"), + PadParams(reference_tests::Tensor(ET, + {3, 4}, + std::vector{ + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + }), + reference_tests::Tensor(ET_INT, {2}, std::vector{2, 3}), + reference_tests::Tensor(ET_INT, {2}, std::vector{1, 2}), + reference_tests::Tensor(ET, + {6, 9}, + std::vector{ + 12, 11, 10, 9, 10, 11, 12, 11, 10, 8, 7, 6, 5, 6, 7, 8, 7, 6, + 4, 3, 2, 1, 2, 3, 4, 3, 2, 8, 7, 6, 5, 6, 7, 8, 7, 6, + 12, 11, 10, 9, 10, 11, 12, 11, 10, 8, 7, 6, 5, 6, 7, 8, 7, 6, + }), + op::PadMode::REFLECT, + reference_tests::Tensor(ET, {}, std::vector{2112}), + "pad_reflect_2d"), - PadParams( - reference_tests::Tensor(ET, {3, 4}, std::vector{ - 1, 2, 3, 4, - 5, 6, 7, 8, - 9, 10, 11, 12, - }), - reference_tests::Tensor(ET_INT, {2}, std::vector{2, -1}), - reference_tests::Tensor(ET_INT, {2}, std::vector{1, 2}), - reference_tests::Tensor(ET, {6, 5}, std::vector{ - 10, 11, 12, 11, 10, - 6, 7, 8, 7, 6, - 2, 3, 4, 3, 2, - 6, 7, 8, 7, 6, - 10, 11, 12, 11, 10, - 6, 7, 8, 7, 6, - }), - op::PadMode::REFLECT, - reference_tests::Tensor(ET, {}, std::vector{2112}), - "pad_reflect_2d_with_neg"), + PadParams(reference_tests::Tensor(ET, + {3, 4}, + std::vector{ + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + }), + reference_tests::Tensor(ET_INT, {2}, std::vector{2, -1}), + reference_tests::Tensor(ET_INT, {2}, std::vector{1, 2}), + reference_tests::Tensor(ET, + {6, 5}, + std::vector{ + 10, 11, 12, 11, 10, 6, 7, 8, 7, 6, 2, 3, 4, 3, 2, + 6, 7, 8, 7, 6, 10, 11, 12, 11, 10, 6, 7, 8, 7, 6, + }), + op::PadMode::REFLECT, + reference_tests::Tensor(ET, {}, std::vector{2112}), + "pad_reflect_2d_with_neg"), - PadParams( - reference_tests::Tensor(ET, {2, 3}, std::vector{ - 1, 2, 3, - 4, 5, 6, - }), - reference_tests::Tensor(ET_INT, {2}, std::vector{1, -1}), - reference_tests::Tensor(ET_INT, {2}, std::vector{2, 0}), - reference_tests::Tensor(ET, {5, 2}, std::vector{ - 9, 9, - 2, 3, - 5, 6, - 9, 9, - 9, 9, - }), - op::PadMode::CONSTANT, - reference_tests::Tensor(ET, {}, std::vector{9}), - "pad_negative_exterior_2d"), + PadParams(reference_tests::Tensor(ET, + {2, 3}, + std::vector{ + 1, + 2, + 3, + 4, + 5, + 6, + }), + reference_tests::Tensor(ET_INT, {2}, std::vector{1, -1}), + reference_tests::Tensor(ET_INT, {2}, std::vector{2, 0}), + reference_tests::Tensor(ET, + {5, 2}, + std::vector{ + 9, + 9, + 2, + 3, + 5, + 6, + 9, + 9, + 9, + 9, + }), + op::PadMode::CONSTANT, + reference_tests::Tensor(ET, {}, std::vector{9}), + "pad_negative_exterior_2d"), - PadParams( - reference_tests::Tensor(ET, {3, 3}, std::vector{ - 1, 2, 3, - 4, 5, 6, - 7, 8, 9, - }), - reference_tests::Tensor(ET_INT, {2}, std::vector{-1, -1}), - reference_tests::Tensor(ET_INT, {2}, std::vector{-1, -1}), - reference_tests::Tensor(ET, {1, 1}, std::vector{5}), - op::PadMode::CONSTANT, - reference_tests::Tensor(ET, {}, std::vector{9}), - "pad_negative_exterior_2d_all_negative"), + PadParams(reference_tests::Tensor(ET, + {3, 3}, + std::vector{ + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + }), + reference_tests::Tensor(ET_INT, {2}, std::vector{-1, -1}), + reference_tests::Tensor(ET_INT, {2}, std::vector{-1, -1}), + reference_tests::Tensor(ET, {1, 1}, std::vector{5}), + op::PadMode::CONSTANT, + reference_tests::Tensor(ET, {}, std::vector{9}), + "pad_negative_exterior_2d_all_negative"), PadParams( reference_tests::Tensor(ET, {0, 0}, std::vector{}), reference_tests::Tensor(ET_INT, {2}, std::vector{2, 3}), reference_tests::Tensor(ET_INT, {2}, std::vector{3, 2}), - reference_tests::Tensor(ET, {5, 5}, std::vector{ - 2112, 2112, 2112, 2112, 2112, - 2112, 2112, 2112, 2112, 2112, - 2112, 2112, 2112, 2112, 2112, - 2112, 2112, 2112, 2112, 2112, - 2112, 2112, 2112, 2112, 2112, - }), + reference_tests::Tensor(ET, + {5, 5}, + std::vector{ + 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, + 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, + }), op::PadMode::CONSTANT, reference_tests::Tensor(ET, {}, std::vector{2112}), "pad_exterior_2d_0x0"), @@ -905,13 +1536,12 @@ std::vector generateParams() { reference_tests::Tensor(ET, {0, 3}, std::vector{}), reference_tests::Tensor(ET_INT, {2}, std::vector{2, 1}), reference_tests::Tensor(ET_INT, {2}, std::vector{3, 1}), - reference_tests::Tensor(ET, {5, 5}, std::vector{ - 2112, 2112, 2112, 2112, 2112, - 2112, 2112, 2112, 2112, 2112, - 2112, 2112, 2112, 2112, 2112, - 2112, 2112, 2112, 2112, 2112, - 2112, 2112, 2112, 2112, 2112, - }), + reference_tests::Tensor(ET, + {5, 5}, + std::vector{ + 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, + 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, + }), op::PadMode::CONSTANT, reference_tests::Tensor(ET, {}, std::vector{2112}), "pad_exterior_2d_0x3"), @@ -920,365 +1550,317 @@ std::vector generateParams() { reference_tests::Tensor(ET, {3, 0}, std::vector{}), reference_tests::Tensor(ET_INT, {2}, std::vector{1, 3}), reference_tests::Tensor(ET_INT, {2}, std::vector{1, 2}), - reference_tests::Tensor(ET, {5, 5}, std::vector{ - 2112, 2112, 2112, 2112, 2112, - 2112, 2112, 2112, 2112, 2112, - 2112, 2112, 2112, 2112, 2112, - 2112, 2112, 2112, 2112, 2112, - 2112, 2112, 2112, 2112, 2112, - }), + reference_tests::Tensor(ET, + {5, 5}, + std::vector{ + 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, + 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, + }), op::PadMode::CONSTANT, reference_tests::Tensor(ET, {}, std::vector{2112}), "pad_exterior_2d_3x0"), - PadParams( - reference_tests::Tensor(ET, {2, 2, 4, 4}, std::vector{ - 0, 1, 0, 2, - 0, 3, 2, 0, - 2, 0, 0, 0, - 0, 2, 1, 0, + PadParams(reference_tests::Tensor(ET, + {2, 2, 4, 4}, + std::vector{ + 0, 1, 0, 2, 0, 3, 2, 0, 2, 0, 0, 0, 0, 2, 1, 0, - 0, 0, 0, 2, - 0, 2, 3, 0, - 2, 0, 1, 0, - 2, 0, 0, 0, + 0, 0, 0, 2, 0, 2, 3, 0, 2, 0, 1, 0, 2, 0, 0, 0, - 0, 2, 1, 1, - 0, 0, 2, 0, - 0, 0, 1, 2, - 0, 0, 0, 0, + 0, 2, 1, 1, 0, 0, 2, 0, 0, 0, 1, 2, 0, 0, 0, 0, - 2, 1, 0, 0, - 0, 2, 0, 0, - 1, 1, 2, 0, - 1, 0, 0, 0, - }), - reference_tests::Tensor(ET_INT, {4}, std::vector{0, 0, 0, 0}), - reference_tests::Tensor(ET_INT, {4}, std::vector{0, 0, 2, 2}), - reference_tests::Tensor(ET, {2, 2, 6, 6}, std::vector{ - 0, 1, 0, 2, 42, 42, - 0, 3, 2, 0, 42, 42, - 2, 0, 0, 0, 42, 42, - 0, 2, 1, 0, 42, 42, - 42, 42, 42, 42, 42, 42, - 42, 42, 42, 42, 42, 42, + 2, 1, 0, 0, 0, 2, 0, 0, 1, 1, 2, 0, 1, 0, 0, 0, + }), + reference_tests::Tensor(ET_INT, {4}, std::vector{0, 0, 0, 0}), + reference_tests::Tensor(ET_INT, {4}, std::vector{0, 0, 2, 2}), + reference_tests::Tensor(ET, + {2, 2, 6, 6}, + std::vector{ + 0, 1, 0, 2, 42, 42, 0, 3, 2, 0, 42, 42, 2, 0, 0, 0, 42, 42, + 0, 2, 1, 0, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, - 0, 0, 0, 2, 42, 42, - 0, 2, 3, 0, 42, 42, - 2, 0, 1, 0, 42, 42, - 2, 0, 0, 0, 42, 42, - 42, 42, 42, 42, 42, 42, - 42, 42, 42, 42, 42, 42, + 0, 0, 0, 2, 42, 42, 0, 2, 3, 0, 42, 42, 2, 0, 1, 0, 42, 42, + 2, 0, 0, 0, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, - 0, 2, 1, 1, 42, 42, - 0, 0, 2, 0, 42, 42, - 0, 0, 1, 2, 42, 42, - 0, 0, 0, 0, 42, 42, - 42, 42, 42, 42, 42, 42, - 42, 42, 42, 42, 42, 42, + 0, 2, 1, 1, 42, 42, 0, 0, 2, 0, 42, 42, 0, 0, 1, 2, 42, 42, + 0, 0, 0, 0, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, - 2, 1, 0, 0, 42, 42, - 0, 2, 0, 0, 42, 42, - 1, 1, 2, 0, 42, 42, - 1, 0, 0, 0, 42, 42, - 42, 42, 42, 42, 42, 42, - 42, 42, 42, 42, 42, 42, - }), - op::PadMode::CONSTANT, - reference_tests::Tensor(ET, {}, std::vector{42}), - "pad_2channel_2image_asym"), + 2, 1, 0, 0, 42, 42, 0, 2, 0, 0, 42, 42, 1, 1, 2, 0, 42, 42, + 1, 0, 0, 0, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, + }), + op::PadMode::CONSTANT, + reference_tests::Tensor(ET, {}, std::vector{42}), + "pad_2channel_2image_asym"), - PadParams( - reference_tests::Tensor(ET, {2, 3}, std::vector{ - 1, 2, 3, - 4, 5, 6, - }), - reference_tests::Tensor(ET_INT, {2}, std::vector{1, 2}), - reference_tests::Tensor(ET_INT, {2}, std::vector{1, 2}), - reference_tests::Tensor(ET, {4, 7}, std::vector{ - 2, 1, 1, 2, 3, 3, 2, - 2, 1, 1, 2, 3, 3, 2, - 5, 4, 4, 5, 6, 6, 5, - 5, 4, 4, 5, 6, 6, 5, - }), - op::PadMode::SYMMETRIC, - reference_tests::Tensor(ET, {}, std::vector{2112}), - "pad_symmetric"), - PadParams( - reference_tests::Tensor(ET, {4, 3}, std::vector{ - 1, 2, 3, - 4, 5, 6, - 7, 8, 9, - 10, 11, 12 - }), - reference_tests::Tensor(ET_INT, {2}, std::vector{-1, -1}), - reference_tests::Tensor(ET_INT, {2}, std::vector{-1, -1}), - reference_tests::Tensor(ET, {2, 1}, std::vector{ - 5, 8 - }), - op::PadMode::CONSTANT, - reference_tests::Tensor(ET, {}, std::vector{0}), - "pad_neg_4x3_mode_const"), - PadParams( - reference_tests::Tensor(ET, {3, 4}, std::vector{ - 1, 2, 3, 4, - 5, 6, 7, 8, - 9, 10, 11, 12 - }), - reference_tests::Tensor(ET_INT, {2}, std::vector{-1, -1}), - reference_tests::Tensor(ET_INT, {2}, std::vector{-1, -1}), - reference_tests::Tensor(ET, {1, 2}, std::vector{ - 6, 7 - }), - op::PadMode::CONSTANT, - reference_tests::Tensor(ET, {}, std::vector{0}), - "pad_neg_3x4_mode_const"), - PadParams( - reference_tests::Tensor(ET, {2, 2, 3}, std::vector{ - 1, 2, 3, - 4, 5, 6, + PadParams(reference_tests::Tensor(ET, + {2, 3}, + std::vector{ + 1, + 2, + 3, + 4, + 5, + 6, + }), + reference_tests::Tensor(ET_INT, {2}, std::vector{1, 2}), + reference_tests::Tensor(ET_INT, {2}, std::vector{1, 2}), + reference_tests::Tensor( + ET, + {4, 7}, + std::vector{ + 2, 1, 1, 2, 3, 3, 2, 2, 1, 1, 2, 3, 3, 2, 5, 4, 4, 5, 6, 6, 5, 5, 4, 4, 5, 6, 6, 5, + }), + op::PadMode::SYMMETRIC, + reference_tests::Tensor(ET, {}, std::vector{2112}), + "pad_symmetric"), + PadParams(reference_tests::Tensor(ET, {4, 3}, std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}), + reference_tests::Tensor(ET_INT, {2}, std::vector{-1, -1}), + reference_tests::Tensor(ET_INT, {2}, std::vector{-1, -1}), + reference_tests::Tensor(ET, {2, 1}, std::vector{5, 8}), + op::PadMode::CONSTANT, + reference_tests::Tensor(ET, {}, std::vector{0}), + "pad_neg_4x3_mode_const"), + PadParams(reference_tests::Tensor(ET, {3, 4}, std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}), + reference_tests::Tensor(ET_INT, {2}, std::vector{-1, -1}), + reference_tests::Tensor(ET_INT, {2}, std::vector{-1, -1}), + reference_tests::Tensor(ET, {1, 2}, std::vector{6, 7}), + op::PadMode::CONSTANT, + reference_tests::Tensor(ET, {}, std::vector{0}), + "pad_neg_3x4_mode_const"), + PadParams(reference_tests::Tensor(ET, + {2, 2, 3}, + std::vector{1, + 2, + 3, + 4, + 5, + 6, - 7, 8, 9, - 10, 11, 12 - }), - reference_tests::Tensor(ET_INT, {3}, std::vector{0, 0, 0}), - reference_tests::Tensor(ET_INT, {3}, std::vector{-1, 0, 0}), - reference_tests::Tensor(ET, {1, 2, 3}, std::vector{ - 1, 2, 3, - 4, 5, 6, - }), - op::PadMode::CONSTANT, - reference_tests::Tensor(ET, {}, std::vector{0}), - "pad_neg_2x2x3_mode_const_remove_last"), - PadParams( - reference_tests::Tensor(ET, {2, 2, 3}, std::vector{ - 1, 2, 3, - 4, 5, 6, + 7, + 8, + 9, + 10, + 11, + 12}), + reference_tests::Tensor(ET_INT, {3}, std::vector{0, 0, 0}), + reference_tests::Tensor(ET_INT, {3}, std::vector{-1, 0, 0}), + reference_tests::Tensor(ET, + {1, 2, 3}, + std::vector{ + 1, + 2, + 3, + 4, + 5, + 6, + }), + op::PadMode::CONSTANT, + reference_tests::Tensor(ET, {}, std::vector{0}), + "pad_neg_2x2x3_mode_const_remove_last"), + PadParams(reference_tests::Tensor(ET, + {2, 2, 3}, + std::vector{1, + 2, + 3, + 4, + 5, + 6, - 7, 8, 9, - 10, 11, 12 - }), - reference_tests::Tensor(ET_INT, {3}, std::vector{-1, 0, 0}), - reference_tests::Tensor(ET_INT, {3}, std::vector{0, 0, 0}), - reference_tests::Tensor(ET, {1, 2, 3}, std::vector{ - 7, 8, 9, - 10, 11, 12 - }), - op::PadMode::CONSTANT, - reference_tests::Tensor(ET, {}, std::vector{0}), - "pad_neg_2x2x3_mode_const_remove_first"), - PadParams( - reference_tests::Tensor(ET, {2, 2, 3}, std::vector{ - 1, 2, 3, - 4, 5, 6, + 7, + 8, + 9, + 10, + 11, + 12}), + reference_tests::Tensor(ET_INT, {3}, std::vector{-1, 0, 0}), + reference_tests::Tensor(ET_INT, {3}, std::vector{0, 0, 0}), + reference_tests::Tensor(ET, {1, 2, 3}, std::vector{7, 8, 9, 10, 11, 12}), + op::PadMode::CONSTANT, + reference_tests::Tensor(ET, {}, std::vector{0}), + "pad_neg_2x2x3_mode_const_remove_first"), + PadParams(reference_tests::Tensor(ET, + {2, 2, 3}, + std::vector{1, + 2, + 3, + 4, + 5, + 6, - 7, 8, 9, - 10, 11, 12 - }), - reference_tests::Tensor(ET_INT, {3}, std::vector{0, -1, 0}), - reference_tests::Tensor(ET_INT, {3}, std::vector{0, 0, 0}), - reference_tests::Tensor(ET, {2, 1, 3}, std::vector{ - 4, 5, 6, + 7, + 8, + 9, + 10, + 11, + 12}), + reference_tests::Tensor(ET_INT, {3}, std::vector{0, -1, 0}), + reference_tests::Tensor(ET_INT, {3}, std::vector{0, 0, 0}), + reference_tests::Tensor(ET, + {2, 1, 3}, + std::vector{4, + 5, + 6, - 10, 11, 12 - }), - op::PadMode::CONSTANT, - reference_tests::Tensor(ET, {}, std::vector{0}), - "pad_neg_2x2x3_mode_const_remove_middle_begin"), - PadParams( - reference_tests::Tensor(ET, {2, 2, 3}, std::vector{ - 1, 2, 3, - 4, 5, 6, + 10, + 11, + 12}), + op::PadMode::CONSTANT, + reference_tests::Tensor(ET, {}, std::vector{0}), + "pad_neg_2x2x3_mode_const_remove_middle_begin"), + PadParams(reference_tests::Tensor(ET, + {2, 2, 3}, + std::vector{1, + 2, + 3, + 4, + 5, + 6, - 7, 8, 9, - 10, 11, 12 - }), - reference_tests::Tensor(ET_INT, {3}, std::vector{0, 0, 0}), - reference_tests::Tensor(ET_INT, {3}, std::vector{0, -1, 0}), - reference_tests::Tensor(ET, {2, 1, 3}, std::vector{ - 1, 2, 3, + 7, + 8, + 9, + 10, + 11, + 12}), + reference_tests::Tensor(ET_INT, {3}, std::vector{0, 0, 0}), + reference_tests::Tensor(ET_INT, {3}, std::vector{0, -1, 0}), + reference_tests::Tensor(ET, + {2, 1, 3}, + std::vector{ + 1, + 2, + 3, - 7, 8, 9, - }), - op::PadMode::CONSTANT, - reference_tests::Tensor(ET, {}, std::vector{0}), - "pad_neg_2x2x3_mode_const_remove_middle_end"), + 7, + 8, + 9, + }), + op::PadMode::CONSTANT, + reference_tests::Tensor(ET, {}, std::vector{0}), + "pad_neg_2x2x3_mode_const_remove_middle_end"), + PadParams(reference_tests::Tensor(ET, + {2, 2}, + std::vector{ + 1, + 2, + 3, + 4, + }), + reference_tests::Tensor(ET_INT, {2}, std::vector{-1, 0}), + reference_tests::Tensor(ET_INT, {2}, std::vector{-1, 0}), + reference_tests::Tensor(ET, {0, 2}, std::vector{}), + op::PadMode::CONSTANT, + reference_tests::Tensor(ET, {}, std::vector{10}), + "pad_neg_2x2_reult_empty_mode_const"), + PadParams(reference_tests::Tensor(ET, {3, 4}, std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}), + reference_tests::Tensor(ET_INT, {2}, std::vector{-2, -2}), + reference_tests::Tensor(ET_INT, {2}, std::vector{-1, -2}), + reference_tests::Tensor(ET, {0, 0}, std::vector{}), + op::PadMode::CONSTANT, + reference_tests::Tensor(ET, {}, std::vector{10}), + "pad_neg_3x4_reult_empty_mode_const"), + PadParams(reference_tests::Tensor(ET, {3, 4}, std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}), + reference_tests::Tensor(ET_INT, {2}, std::vector{-1, 0}), + reference_tests::Tensor(ET_INT, {2}, std::vector{0, -2}), + reference_tests::Tensor(ET, {2, 2}, std::vector{5, 6, 9, 10}), + op::PadMode::CONSTANT, + reference_tests::Tensor(ET, {}, std::vector{0}), + "pad_neg_mix_cross_3x4_mode_const"), + PadParams(reference_tests::Tensor(ET, {3, 4}, std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}), + reference_tests::Tensor(ET_INT, {2}, std::vector{-1, -2}), + reference_tests::Tensor(ET_INT, {2}, std::vector{2, 3}), + reference_tests::Tensor(ET, {4, 5}, std::vector{7, 8, 0, 0, 0, 11, 12, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}), + op::PadMode::CONSTANT, + reference_tests::Tensor(ET, {}, std::vector{0}), + "pad_neg_begin_3x4_mode_const"), + PadParams(reference_tests::Tensor(ET, {3, 4}, std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}), + reference_tests::Tensor(ET_INT, {2}, std::vector{2, 3}), + reference_tests::Tensor(ET_INT, {2}, std::vector{-1, -2}), + reference_tests::Tensor(ET, + {4, 5}, + std::vector{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 0, 0, 5, 6, + }), + op::PadMode::CONSTANT, + reference_tests::Tensor(ET, {}, std::vector{0}), + "pad_neg_end_3x4_mode_const"), PadParams( - reference_tests::Tensor(ET, {2, 2}, std::vector{ - 1, 2, - 3, 4, - }), - reference_tests::Tensor(ET_INT, {2}, std::vector{-1, 0}), - reference_tests::Tensor(ET_INT, {2}, std::vector{-1, 0}), - reference_tests::Tensor(ET, {0, 2}, std::vector{}), - op::PadMode::CONSTANT, - reference_tests::Tensor(ET, {}, std::vector{10}), - "pad_neg_2x2_reult_empty_mode_const"), - PadParams( - reference_tests::Tensor(ET, {3, 4}, std::vector{ - 1, 2, 3, 4, - 5, 6, 7, 8, - 9, 10, 11, 12 - }), - reference_tests::Tensor(ET_INT, {2}, std::vector{-2, -2}), - reference_tests::Tensor(ET_INT, {2}, std::vector{-1, -2}), - reference_tests::Tensor(ET, {0, 0}, std::vector{}), - op::PadMode::CONSTANT, - reference_tests::Tensor(ET, {}, std::vector{10}), - "pad_neg_3x4_reult_empty_mode_const"), - PadParams( - reference_tests::Tensor(ET, {3, 4}, std::vector{ - 1, 2, 3, 4, - 5, 6, 7, 8, - 9, 10, 11, 12 - }), - reference_tests::Tensor(ET_INT, {2}, std::vector{-1, 0}), - reference_tests::Tensor(ET_INT, {2}, std::vector{0, -2}), - reference_tests::Tensor(ET, {2, 2}, std::vector{ - 5, 6, - 9, 10 - }), - op::PadMode::CONSTANT, - reference_tests::Tensor(ET, {}, std::vector{0}), - "pad_neg_mix_cross_3x4_mode_const"), - PadParams( - reference_tests::Tensor(ET, {3, 4}, std::vector{ - 1, 2, 3, 4, - 5, 6, 7, 8, - 9, 10, 11, 12 - }), - reference_tests::Tensor(ET_INT, {2}, std::vector{-1, -2}), - reference_tests::Tensor(ET_INT, {2}, std::vector{2, 3}), - reference_tests::Tensor(ET, {4, 5}, std::vector{ - 7, 8, 0, 0, 0, - 11, 12, 0, 0, 0, - 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 - }), - op::PadMode::CONSTANT, - reference_tests::Tensor(ET, {}, std::vector{0}), - "pad_neg_begin_3x4_mode_const"), - PadParams( - reference_tests::Tensor(ET, {3, 4}, std::vector{ - 1, 2, 3, 4, - 5, 6, 7, 8, - 9, 10, 11, 12 - }), - reference_tests::Tensor(ET_INT, {2}, std::vector{2, 3}), - reference_tests::Tensor(ET_INT, {2}, std::vector{-1, -2}), - reference_tests::Tensor(ET, {4, 5}, std::vector{ - 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, - 0, 0, 0, 1, 2, - 0, 0, 0, 5, 6, - }), - op::PadMode::CONSTANT, - reference_tests::Tensor(ET, {}, std::vector{0}), - "pad_neg_end_3x4_mode_const"), - PadParams( - reference_tests::Tensor(ET, {3, 4}, std::vector{ - 1, 2, 3, 4, - 5, 6, 7, 8, - 9, 10, 11, 12 - }), + reference_tests::Tensor(ET, {3, 4}, std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}), reference_tests::Tensor(ET_INT, {2}, std::vector{2, -1}), reference_tests::Tensor(ET_INT, {2}, std::vector{-1, 3}), - reference_tests::Tensor(ET, {4, 6}, std::vector{ - 10, 11, 12, 11, 10, 9, - 6, 7, 8, 7, 6, 5, - 2, 3, 4, 3, 2, 1, - 6, 7, 8, 7, 6, 5, - }), + reference_tests::Tensor(ET, + {4, 6}, + std::vector{ + 10, 11, 12, 11, 10, 9, 6, 7, 8, 7, 6, 5, 2, 3, 4, 3, 2, 1, 6, 7, 8, 7, 6, 5, + }), op::PadMode::REFLECT, "pad_neg_ones_cross_3x4_mode_reflect"), - PadParams( - reference_tests::Tensor(ET, {3, 4}, std::vector{ - 1, 2, 3, 4, - 5, 6, 7, 8, - 9, 10, 11, 12, + PadParams(reference_tests::Tensor(ET, + {3, 4}, + std::vector{ + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, - }), - reference_tests::Tensor(ET_INT, {2}, std::vector{-4, 3}), - reference_tests::Tensor(ET_INT, {2}, std::vector{2, -5}), - reference_tests::Tensor(ET, {1, 2}, std::vector{ - 4, 3, - }), - op::PadMode::REFLECT, - "pad_neg_mix_cross_3x4_mode_reflect"), - PadParams( - reference_tests::Tensor(ET, {3, 4}, std::vector{ - 1, 2, 3, 4, - 5, 6, 7, 8, - 9, 10, 11, 12 - }), - reference_tests::Tensor(ET_INT, {2}, std::vector{2, -1}), - reference_tests::Tensor(ET_INT, {2}, std::vector{-1, 3}), - reference_tests::Tensor(ET, {4, 6}, std::vector{ - 2, 3, 4, 4, 4, 4, - 2, 3, 4, 4, 4, 4, - 2, 3, 4, 4, 4, 4, - 6, 7, 8, 8, 8, 8, - }), - op::PadMode::EDGE, - "pad_neg_ones_cross_3x4_mode_edge"), - PadParams( - reference_tests::Tensor(ET, {3, 4}, std::vector{ - 1, 2, 3, 4, - 5, 6, 7, 8, - 9, 10, 11, 12 - }), - reference_tests::Tensor(ET_INT, {2}, std::vector{-1, 0}), - reference_tests::Tensor(ET_INT, {2}, std::vector{0, -2}), - reference_tests::Tensor(ET, {2, 2}, std::vector{ - 5, 6, - 9, 10 - }), - op::PadMode::EDGE, - "pad_neg_mix_cross_3x4_mode_edge"), - PadParams( - reference_tests::Tensor(ET, {3, 4}, std::vector{ - 1, 2, 3, 4, - 5, 6, 7, 8, - 9, 10, 11, 12 - }), - reference_tests::Tensor(ET_INT, {2}, std::vector{-1, 0}), - reference_tests::Tensor(ET_INT, {2}, std::vector{0, -2}), - reference_tests::Tensor(ET, {2, 2}, std::vector{ - 5, 6, - 9, 10 - }), - op::PadMode::REFLECT, - "pad_neg_mix_cross_3x4_mode_reflect"), - PadParams( - reference_tests::Tensor(ET, {3, 4}, std::vector{ - 1, 2, 3, 4, - 5, 6, 7, 8, - 9, 10, 11, 12 - }), - reference_tests::Tensor(ET_INT, {2}, std::vector{-1, 0}), - reference_tests::Tensor(ET_INT, {2}, std::vector{0, -2}), - reference_tests::Tensor(ET, {2, 2}, std::vector{ - 5, 6, - 9, 10 - }), - op::PadMode::SYMMETRIC, - "pad_neg_mix_cross_3x4_mode_symmetric"), - PadParams( - reference_tests::Tensor(ET, {3, 4}, std::vector{ - 1, 2, 3, 4, - 5, 6, 7, 8, - 9, 10, 11, 12 - }), - reference_tests::Tensor(ET_INT, {2}, std::vector{2, -1}), - reference_tests::Tensor(ET_INT, {2}, std::vector{-1, 3}), - reference_tests::Tensor(ET, {4, 6}, std::vector{ - 6, 7, 8, 8, 7, 6, - 2, 3, 4, 4, 3, 2, - 2, 3, 4, 4, 3, 2, - 6, 7, 8, 8, 7, 6, - }), - op::PadMode::SYMMETRIC, - "pad_neg_ones_cross_3x4_mode_symmetric"), + }), + reference_tests::Tensor(ET_INT, {2}, std::vector{-4, 3}), + reference_tests::Tensor(ET_INT, {2}, std::vector{2, -5}), + reference_tests::Tensor(ET, + {1, 2}, + std::vector{ + 4, + 3, + }), + op::PadMode::REFLECT, + "pad_neg_mix_cross_3x4_mode_reflect"), + PadParams(reference_tests::Tensor(ET, {3, 4}, std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}), + reference_tests::Tensor(ET_INT, {2}, std::vector{2, -1}), + reference_tests::Tensor(ET_INT, {2}, std::vector{-1, 3}), + reference_tests::Tensor(ET, + {4, 6}, + std::vector{ + 2, 3, 4, 4, 4, 4, 2, 3, 4, 4, 4, 4, 2, 3, 4, 4, 4, 4, 6, 7, 8, 8, 8, 8, + }), + op::PadMode::EDGE, + "pad_neg_ones_cross_3x4_mode_edge"), + PadParams(reference_tests::Tensor(ET, {3, 4}, std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}), + reference_tests::Tensor(ET_INT, {2}, std::vector{-1, 0}), + reference_tests::Tensor(ET_INT, {2}, std::vector{0, -2}), + reference_tests::Tensor(ET, {2, 2}, std::vector{5, 6, 9, 10}), + op::PadMode::EDGE, + "pad_neg_mix_cross_3x4_mode_edge"), + PadParams(reference_tests::Tensor(ET, {3, 4}, std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}), + reference_tests::Tensor(ET_INT, {2}, std::vector{-1, 0}), + reference_tests::Tensor(ET_INT, {2}, std::vector{0, -2}), + reference_tests::Tensor(ET, {2, 2}, std::vector{5, 6, 9, 10}), + op::PadMode::REFLECT, + "pad_neg_mix_cross_3x4_mode_reflect"), + PadParams(reference_tests::Tensor(ET, {3, 4}, std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}), + reference_tests::Tensor(ET_INT, {2}, std::vector{-1, 0}), + reference_tests::Tensor(ET_INT, {2}, std::vector{0, -2}), + reference_tests::Tensor(ET, {2, 2}, std::vector{5, 6, 9, 10}), + op::PadMode::SYMMETRIC, + "pad_neg_mix_cross_3x4_mode_symmetric"), + PadParams(reference_tests::Tensor(ET, {3, 4}, std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}), + reference_tests::Tensor(ET_INT, {2}, std::vector{2, -1}), + reference_tests::Tensor(ET_INT, {2}, std::vector{-1, 3}), + reference_tests::Tensor(ET, + {4, 6}, + std::vector{ + 6, 7, 8, 8, 7, 6, 2, 3, 4, 4, 3, 2, 2, 3, 4, 4, 3, 2, 6, 7, 8, 8, 7, 6, + }), + op::PadMode::SYMMETRIC, + "pad_neg_ones_cross_3x4_mode_symmetric"), }; return params; } @@ -1287,56 +1869,80 @@ template std::vector generateParamsFloatValue() { using T = typename element_type_traits::value_type; using T_INT = typename element_type_traits::value_type; - std::vector params { + std::vector params{ PadParams( - reference_tests::Tensor(ET, {1, 2, 2, 2}, std::vector{ - 0.0f, 0.0f, - 0.0f, 0.0f, - 0.0f, 0.0f, - 0.0f, 0.0f, - }), + reference_tests::Tensor(ET, + {1, 2, 2, 2}, + std::vector{ + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + }), reference_tests::Tensor(ET_INT, {4}, std::vector{0, 0, 1, 1}), reference_tests::Tensor(ET_INT, {4}, std::vector{0, 0, 1, 1}), - reference_tests::Tensor(ET, {1, 2, 4, 4}, std::vector{ - 42.0f, 42.0f, 42.0f, 42.0f, - 42.0f, 0.0f, 0.0f, 42.0f, - 42.0f, 0.0f, 0.0f, 42.0f, - 42.0f, 42.0f, 42.0f, 42.0f, - 42.0f, 42.0f, 42.0f, 42.0f, - 42.0f, 0.0f, 0.0f, 42.0f, - 42.0f, 0.0f, 0.0f, 42.0f, - 42.0f, 42.0f, 42.0f, 42.0f, - }), + reference_tests::Tensor(ET, + {1, 2, 4, 4}, + std::vector{ + 42.0f, 42.0f, 42.0f, 42.0f, 42.0f, 0.0f, 0.0f, 42.0f, 42.0f, 0.0f, 0.0f, + 42.0f, 42.0f, 42.0f, 42.0f, 42.0f, 42.0f, 42.0f, 42.0f, 42.0f, 42.0f, 0.0f, + 0.0f, 42.0f, 42.0f, 0.0f, 0.0f, 42.0f, 42.0f, 42.0f, 42.0f, 42.0f, + }), op::PadMode::CONSTANT, reference_tests::Tensor(ET, {}, std::vector{42}), "pad_exterior_4d_1x2x2x2"), - PadParams( - reference_tests::Tensor(ET, {1, 3, 2, 2}, std::vector{ - 0.0f, 0.0f, - 0.0f, 0.0f, - 1.0f, 1.0f, - 1.0f, 1.0f, - 2.0f, 2.0f, - 2.0f, 2.0f, - }), - reference_tests::Tensor(ET_INT, {4}, std::vector{0, -1, 1, 1}), - reference_tests::Tensor(ET_INT, {4}, std::vector{0, -1, 1, 1}), - reference_tests::Tensor(ET, {1, 1, 4, 4}, std::vector{ - 42.0f, 42.0f, 42.0f, 42.0f, - 42.0f, 1.0f, 1.0f, 42.0f, - 42.0f, 1.0f, 1.0f, 42.0f, - 42.0f, 42.0f, 42.0f, 42.0f, - }), - op::PadMode::CONSTANT, - reference_tests::Tensor(ET, {}, std::vector{42}), - "pad_negative_exterior_4d"), + PadParams(reference_tests::Tensor(ET, + {1, 3, 2, 2}, + std::vector{ + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 2.0f, + 2.0f, + 2.0f, + 2.0f, + }), + reference_tests::Tensor(ET_INT, {4}, std::vector{0, -1, 1, 1}), + reference_tests::Tensor(ET_INT, {4}, std::vector{0, -1, 1, 1}), + reference_tests::Tensor(ET, + {1, 1, 4, 4}, + std::vector{ + 42.0f, + 42.0f, + 42.0f, + 42.0f, + 42.0f, + 1.0f, + 1.0f, + 42.0f, + 42.0f, + 1.0f, + 1.0f, + 42.0f, + 42.0f, + 42.0f, + 42.0f, + 42.0f, + }), + op::PadMode::CONSTANT, + reference_tests::Tensor(ET, {}, std::vector{42}), + "pad_negative_exterior_4d"), }; return params; } std::vector generateCombinedParams() { - const std::vector> generatedParams { + const std::vector> generatedParams{ generateParams(), generateParams(), generateParams(), @@ -1370,53 +1976,88 @@ std::vector generateCombinedParams() { return combinedParams; } +INSTANTIATE_TEST_SUITE_P(smoke_PadV1_With_Hardcoded_Refs, + ReferencePadV1Test, + testing::ValuesIn(generateCombinedParams()), + ReferencePadTest::getTestCaseName); -INSTANTIATE_TEST_SUITE_P(smoke_PadV1_With_Hardcoded_Refs, ReferencePadV1Test, - testing::ValuesIn(generateCombinedParams()), ReferencePadTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_PadV1_With_Hardcoded_Refs, + ReferencePadV1TestNonConstPadsBeginPadsEndPadVal, + testing::ValuesIn(generateCombinedParams()), + ReferencePadTest::getTestCaseName); -INSTANTIATE_TEST_SUITE_P(smoke_PadV1_With_Hardcoded_Refs, ReferencePadV1TestNonConstPadsBeginPadsEndPadVal, - testing::ValuesIn(generateCombinedParams()), ReferencePadTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_PadV12_With_Hardcoded_Refs, + ReferencePadV12Test, + testing::ValuesIn(generateCombinedParams()), + ReferencePadTest::getTestCaseName); -INSTANTIATE_TEST_SUITE_P(smoke_PadV12_With_Hardcoded_Refs, ReferencePadV12Test, - testing::ValuesIn(generateCombinedParams()), ReferencePadTest::getTestCaseName); - -INSTANTIATE_TEST_SUITE_P(smoke_PadV12_With_Hardcoded_Refs, ReferencePadV12TestNonConstPadsBeginPadsEndPadVal, - testing::ValuesIn(generateCombinedParams()), ReferencePadTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_PadV12_With_Hardcoded_Refs, + ReferencePadV12TestNonConstPadsBeginPadsEndPadVal, + testing::ValuesIn(generateCombinedParams()), + ReferencePadTest::getTestCaseName); template std::vector generateParamsTooLarge() { using T = typename element_type_traits::value_type; using T_INT = typename element_type_traits::value_type; - std::vector params { - PadParams( - reference_tests::Tensor(ET, {2, 2}, std::vector{ - 1, 2, 4, 5, - }), - reference_tests::Tensor(ET_INT, {2}, std::vector{0, 3}), - reference_tests::Tensor(ET_INT, {2}, std::vector{0, 0}), - reference_tests::Tensor(ET, {2, 5}, std::vector{ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - }), - op::PadMode::SYMMETRIC, - "pad_to_large_symmetric_padding"), + std::vector params{ + PadParams(reference_tests::Tensor(ET, + {2, 2}, + std::vector{ + 1, + 2, + 4, + 5, + }), + reference_tests::Tensor(ET_INT, {2}, std::vector{0, 3}), + reference_tests::Tensor(ET_INT, {2}, std::vector{0, 0}), + reference_tests::Tensor(ET, + {2, 5}, + std::vector{ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + }), + op::PadMode::SYMMETRIC, + "pad_to_large_symmetric_padding"), - PadParams( - reference_tests::Tensor(ET, {2, 2}, std::vector{ - 1, 2, 4, 5, - }), - reference_tests::Tensor(ET_INT, {2}, std::vector{0, 2}), - reference_tests::Tensor(ET_INT, {2}, std::vector{0, 0}), - reference_tests::Tensor(ET, {2, 4}, std::vector{ - 0, 0, 0, 0, 0, 0, 0, 0, - }), - op::PadMode::REFLECT, - "pad_to_large_reflect_padding"), + PadParams(reference_tests::Tensor(ET, + {2, 2}, + std::vector{ + 1, + 2, + 4, + 5, + }), + reference_tests::Tensor(ET_INT, {2}, std::vector{0, 2}), + reference_tests::Tensor(ET_INT, {2}, std::vector{0, 0}), + reference_tests::Tensor(ET, + {2, 4}, + std::vector{ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + }), + op::PadMode::REFLECT, + "pad_to_large_reflect_padding"), }; return params; } std::vector generateCombinedParamsTooLarge() { - const std::vector> generatedParams { + const std::vector> generatedParams{ generateParamsTooLarge(), }; std::vector combinedParams; @@ -1427,46 +2068,74 @@ std::vector generateCombinedParamsTooLarge() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_Pad_With_Hardcoded_Refs, ReferencePadTestParamsTooLarge, - testing::ValuesIn(generateCombinedParamsTooLarge()), ReferencePadTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_Pad_With_Hardcoded_Refs, + ReferencePadTestParamsTooLarge, + testing::ValuesIn(generateCombinedParamsTooLarge()), + ReferencePadTest::getTestCaseName); -INSTANTIATE_TEST_SUITE_P(smoke_Pad_With_Hardcoded_Refs, ReferencePadV1TestNonConstPadsBeginPadsEndPadValTooLarge, - testing::ValuesIn(generateCombinedParamsTooLarge()), ReferencePadTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_Pad_With_Hardcoded_Refs, + ReferencePadV1TestNonConstPadsBeginPadsEndPadValTooLarge, + testing::ValuesIn(generateCombinedParamsTooLarge()), + ReferencePadTest::getTestCaseName); template std::vector generateParamsOk() { using T = typename element_type_traits::value_type; using T_INT = typename element_type_traits::value_type; - std::vector params { - PadParams( - reference_tests::Tensor(ET, {2, 2}, std::vector{ - 1, 2, 4, 5, - }), - reference_tests::Tensor(ET_INT, {2}, std::vector{0, 2}), - reference_tests::Tensor(ET_INT, {2}, std::vector{0, 0}), - reference_tests::Tensor(ET, {2, 4}, std::vector{ - 2, 1, 1, 2, 5, 4, 4, 5, - }), - op::PadMode::SYMMETRIC, - "pad_ok_symmetric_padding"), + std::vector params{ + PadParams(reference_tests::Tensor(ET, + {2, 2}, + std::vector{ + 1, + 2, + 4, + 5, + }), + reference_tests::Tensor(ET_INT, {2}, std::vector{0, 2}), + reference_tests::Tensor(ET_INT, {2}, std::vector{0, 0}), + reference_tests::Tensor(ET, + {2, 4}, + std::vector{ + 2, + 1, + 1, + 2, + 5, + 4, + 4, + 5, + }), + op::PadMode::SYMMETRIC, + "pad_ok_symmetric_padding"), - PadParams( - reference_tests::Tensor(ET, {2, 2}, std::vector{ - 1, 2, 4, 5, - }), - reference_tests::Tensor(ET_INT, {2}, std::vector{0, 1}), - reference_tests::Tensor(ET_INT, {2}, std::vector{0, 0}), - reference_tests::Tensor(ET, {2, 3}, std::vector{ - 2, 1, 2, 5, 4, 5, - }), - op::PadMode::REFLECT, - "pad_ok_reflect_padding"), + PadParams(reference_tests::Tensor(ET, + {2, 2}, + std::vector{ + 1, + 2, + 4, + 5, + }), + reference_tests::Tensor(ET_INT, {2}, std::vector{0, 1}), + reference_tests::Tensor(ET_INT, {2}, std::vector{0, 0}), + reference_tests::Tensor(ET, + {2, 3}, + std::vector{ + 2, + 1, + 2, + 5, + 4, + 5, + }), + op::PadMode::REFLECT, + "pad_ok_reflect_padding"), }; return params; } std::vector generateCombinedParamsOk() { - const std::vector> generatedParams { + const std::vector> generatedParams{ generateParamsOk(), }; std::vector combinedParams; @@ -1477,9 +2146,13 @@ std::vector generateCombinedParamsOk() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_Pad_With_Hardcoded_Refs, ReferencePadTestParamsOk, - testing::ValuesIn(generateCombinedParamsOk()), ReferencePadTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_Pad_With_Hardcoded_Refs, + ReferencePadTestParamsOk, + testing::ValuesIn(generateCombinedParamsOk()), + ReferencePadTest::getTestCaseName); -INSTANTIATE_TEST_SUITE_P(smoke_Pad_With_Hardcoded_Refs, ReferencePadV1TestNonConstPadsBeginPadsEndPadValParamsOk, - testing::ValuesIn(generateCombinedParamsOk()), ReferencePadTest::getTestCaseName); -} // namespace +INSTANTIATE_TEST_SUITE_P(smoke_Pad_With_Hardcoded_Refs, + ReferencePadV1TestNonConstPadsBeginPadsEndPadValParamsOk, + testing::ValuesIn(generateCombinedParamsOk()), + ReferencePadTest::getTestCaseName); +} // namespace diff --git a/src/plugins/template/tests/functional/op_reference/parameter_as_output.cpp b/src/plugins/template/tests/functional/op_reference/parameter_as_output.cpp index 607e93e3849..6b44fdc1773 100644 --- a/src/plugins/template/tests/functional/op_reference/parameter_as_output.cpp +++ b/src/plugins/template/tests/functional/op_reference/parameter_as_output.cpp @@ -72,14 +72,12 @@ template std::vector generateParamsForParameter() { using T = typename element_type_traits::value_type; - std::vector params{ - ParameterParams(Shape{3, 4}, - Shape{3, 4}, - ET, - ET, - std::vector{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11}, - std::vector{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11}) - }; + std::vector params{ParameterParams(Shape{3, 4}, + Shape{3, 4}, + ET, + ET, + std::vector{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11}, + std::vector{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11})}; return params; } @@ -97,8 +95,7 @@ std::vector generateCombinedParamsForParameter() { generateParamsForParameter(), generateParamsForParameter(), generateParamsForParameter(), - generateParamsForParameter() - }; + generateParamsForParameter()}; std::vector combinedParams; @@ -109,10 +106,9 @@ std::vector generateCombinedParamsForParameter() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P( - smoke_Parameter_With_Hardcoded_Refs, - ReferenceParameterLayerTest, - ::testing::ValuesIn(generateCombinedParamsForParameter()), - ReferenceParameterLayerTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_Parameter_With_Hardcoded_Refs, + ReferenceParameterLayerTest, + ::testing::ValuesIn(generateCombinedParamsForParameter()), + ReferenceParameterLayerTest::getTestCaseName); } // namespace diff --git a/src/plugins/template/tests/functional/op_reference/power.cpp b/src/plugins/template/tests/functional/op_reference/power.cpp index 53b04579041..4ca06153977 100644 --- a/src/plugins/template/tests/functional/op_reference/power.cpp +++ b/src/plugins/template/tests/functional/op_reference/power.cpp @@ -2,10 +2,12 @@ // SPDX-License-Identifier: Apache-2.0 // -#include -#include "base_reference_test.hpp" #include "openvino/op/power.hpp" +#include + +#include "base_reference_test.hpp" + using namespace ov; using namespace reference_tests; @@ -14,11 +16,11 @@ namespace { struct PowerParams { template PowerParams(const PartialShape& iShape1, - const PartialShape& iShape2, - const element::Type& iType, - const std::vector& iValues1, - const std::vector& iValues2, - const std::vector& oValues) + const PartialShape& iShape2, + const element::Type& iType, + const std::vector& iValues1, + const std::vector& iValues2, + const std::vector& oValues) : pshape1(iShape1), pshape2(iShape2), inType(iType), @@ -57,9 +59,9 @@ public: private: static std::shared_ptr CreateFunction(const PartialShape& input_shape1, - const PartialShape& input_shape2, - const element::Type& input_type, - const element::Type& expected_output_type) { + const PartialShape& input_shape2, + const element::Type& input_type, + const element::Type& expected_output_type) { const auto in1 = std::make_shared(input_type, input_shape1); const auto in2 = std::make_shared(input_type, input_shape2); const auto power = std::make_shared(in1, in2); @@ -78,43 +80,40 @@ std::vector generateParamsForPower() { std::vector params{ PowerParams(ov::PartialShape{2, 2}, - ov::PartialShape{2, 2}, - IN_ET, - std::vector{1, 2, 3, 5}, - std::vector{2, 0, 6, 3}, - std::vector{1, 1, 729, 125}), + ov::PartialShape{2, 2}, + IN_ET, + std::vector{1, 2, 3, 5}, + std::vector{2, 0, 6, 3}, + std::vector{1, 1, 729, 125}), PowerParams(ov::PartialShape{2, 1, 5}, - ov::PartialShape{2, 1}, - IN_ET, - std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}, - std::vector{1, 2}, - std::vector{1, 2, 3, 4, 5, 1, 4, 9, 16, 25, 6, 7, 8, 9, 10, 36, 49, 64, 81, 100}), + ov::PartialShape{2, 1}, + IN_ET, + std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}, + std::vector{1, 2}, + std::vector{1, 2, 3, 4, 5, 1, 4, 9, 16, 25, 6, 7, 8, 9, 10, 36, 49, 64, 81, 100}), PowerParams(ov::PartialShape{1}, - ov::PartialShape{1}, - IN_ET, - std::vector{2}, - std::vector{3}, - std::vector{8}), + ov::PartialShape{1}, + IN_ET, + std::vector{2}, + std::vector{3}, + std::vector{8}), PowerParams(ov::PartialShape{2, 2}, ov::PartialShape{1}, IN_ET, std::vector{2, 3, 4, 5}, std::vector{2}, - std::vector{4, 9, 16, 25}) - }; + std::vector{4, 9, 16, 25})}; return params; } std::vector generateCombinedParamsForPower() { - const std::vector> allTypeParams{ - generateParamsForPower(), - generateParamsForPower(), - generateParamsForPower(), - generateParamsForPower(), - generateParamsForPower(), - generateParamsForPower(), - generateParamsForPower() - }; + const std::vector> allTypeParams{generateParamsForPower(), + generateParamsForPower(), + generateParamsForPower(), + generateParamsForPower(), + generateParamsForPower(), + generateParamsForPower(), + generateParamsForPower()}; std::vector combinedParams; @@ -125,10 +124,9 @@ std::vector generateCombinedParamsForPower() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P( - smoke_Power_With_Hardcoded_Refs, - ReferencePowerLayerTest, - ::testing::ValuesIn(generateCombinedParamsForPower()), - ReferencePowerLayerTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_Power_With_Hardcoded_Refs, + ReferencePowerLayerTest, + ::testing::ValuesIn(generateCombinedParamsForPower()), + ReferencePowerLayerTest::getTestCaseName); } // namespace diff --git a/src/plugins/template/tests/functional/op_reference/prelu.cpp b/src/plugins/template/tests/functional/op_reference/prelu.cpp index bfc9c949dec..98ab7d02f83 100644 --- a/src/plugins/template/tests/functional/op_reference/prelu.cpp +++ b/src/plugins/template/tests/functional/op_reference/prelu.cpp @@ -2,9 +2,10 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/prelu.hpp" + #include -#include "openvino/op/prelu.hpp" #include "base_reference_test.hpp" using namespace reference_tests; @@ -13,8 +14,13 @@ using namespace ov; namespace { struct PreluParams { template - PreluParams(const ov::PartialShape& shape, const ov::element::Type& iType, const std::vector& iValues, const std::vector& oValues, - const ov::Shape& slopeShape, const std::vector& negativeSlopeValues, const std::string& test_name = "") + PreluParams(const ov::PartialShape& shape, + const ov::element::Type& iType, + const std::vector& iValues, + const std::vector& oValues, + const ov::Shape& slopeShape, + const std::vector& negativeSlopeValues, + const std::string& test_name = "") : pshape(shape), inType(iType), outType(iType), @@ -59,11 +65,13 @@ public: } private: - static std::shared_ptr CreateFunction(const PartialShape& input_shape, const Shape& slope_shape, const element::Type& input_type) { + static std::shared_ptr CreateFunction(const PartialShape& input_shape, + const Shape& slope_shape, + const element::Type& input_type) { const auto in = std::make_shared(input_type, input_shape); const auto SLOPE = std::make_shared(input_type, slope_shape); const auto Prelu = std::make_shared(in, SLOPE); - return std::make_shared(NodeVector {Prelu}, ParameterVector {in, SLOPE}); + return std::make_shared(NodeVector{Prelu}, ParameterVector{in, SLOPE}); } }; @@ -75,179 +83,186 @@ template std::vector generatePreluFloatParams() { using T = typename element_type_traits::value_type; - std::vector preluParams { - PreluParams(ov::PartialShape {6}, + std::vector preluParams{ + PreluParams(ov::PartialShape{6}, IN_ET, std::vector{1, 2, -3, -4, 5, 6}, std::vector{1, 2, -6, -8, 5, 6}, - ov::Shape {1}, + ov::Shape{1}, std::vector{2}), - PreluParams(ov::PartialShape {6}, + PreluParams(ov::PartialShape{6}, IN_ET, std::vector{1, 2, -3, -4, 5, 6}, std::vector{1, 2, -12, -20, 5, 6}, - ov::Shape {6}, + ov::Shape{6}, std::vector{2, 3, 4, 5, 6, 7}), - PreluParams(ov::PartialShape {3, 2}, + PreluParams(ov::PartialShape{3, 2}, IN_ET, std::vector{-2, 3, -2, 1, -1, 0}, std::vector{0, 3, 0, 1, 0, 0}, - ov::Shape {2}, + ov::Shape{2}, std::vector{0, 1}), - PreluParams(ov::PartialShape {2, 6}, + PreluParams(ov::PartialShape{2, 6}, IN_ET, std::vector{1, 2, -3, -4, 5, 6, 7, 8, -9, -10, 11, 12}, std::vector{1, 2, -9, -16, 5, 6, 7, 8, -27, -40, 11, 12}, - ov::Shape {6}, + ov::Shape{6}, std::vector{1, 2, 3, 4, 5, 6}), - PreluParams(ov::PartialShape {3, 2}, + PreluParams(ov::PartialShape{3, 2}, IN_ET, std::vector{-1, -1, -1, -1, -1, -1}, std::vector{-2, -0.5, -2, -0.5, -2, -0.5}, - ov::Shape {2}, + ov::Shape{2}, std::vector{2, 0.5}, "C_2_const"), - PreluParams(ov::PartialShape {2, 2, 2}, + PreluParams(ov::PartialShape{2, 2, 2}, IN_ET, std::vector{-0.5, -2, -3, -4, -5, -6, -7, -8}, std::vector{0.25, 1, 6, 8, 2.5, 3, 14, 16}, - ov::Shape {2}, + ov::Shape{2}, std::vector{-0.5, -2}), - PreluParams(ov::PartialShape {3, 2}, + PreluParams(ov::PartialShape{3, 2}, IN_ET, std::vector{-2, 3, -2, 1, -1, 0}, std::vector{1, 3, 1, 1, 0.5, 0}, - ov::Shape {2}, + ov::Shape{2}, std::vector{-0.5, -1}, "negative_slope"), - PreluParams(ov::PartialShape {2, 6}, + PreluParams(ov::PartialShape{2, 6}, IN_ET, std::vector{1, 2, -3, -4, 5, 6, 1, 2, -3, -4, 5, 6}, std::vector{1, 2, -6, -8, 5, 6, 1, 2, -12, -8, 5, 6}, - ov::Shape {2, 6}, + ov::Shape{2, 6}, std::vector{2, 2, 2, 2, 2, 2, 1, 1, 4, 2, 1, 1}), - PreluParams(ov::PartialShape {2, 2, 2, 2}, + PreluParams(ov::PartialShape{2, 2, 2, 2}, IN_ET, std::vector{1, 2, -3, -4, 1, 2, -3, -4, 1, 2, -3, -4, 1, 2, -3, -4}, std::vector{1, 2, -3, -8, 1, 2, -9, -16, 1, 2, -3, -8, 1, 2, -9, -16}, - ov::Shape {2, 1, 2}, + ov::Shape{2, 1, 2}, std::vector{1, 2, 3, 4}), - PreluParams(ov::PartialShape {2, 2, 2, 2}, + PreluParams(ov::PartialShape{2, 2, 2, 2}, IN_ET, std::vector{1, 2, -3, -4, 1, 2, -3, -4, 1, 2, -3, -4, 1, 2, -3, -4}, std::vector{1, 2, -3, -8, 1, 2, -9, -16, 1, 2, -3, -8, 1, 2, -9, -16}, - ov::Shape {1, 2, 1, 2}, + ov::Shape{1, 2, 1, 2}, std::vector{1, 2, 3, 4}), - PreluParams(ov::PartialShape {2, 2, 6}, - IN_ET, - std::vector{1, 2, -3, -4, -5, 6, -1, -2, -3, -4, -5, -6, 1, 2, -3, -4, 5, 6, -2, 4, -6, -8, 10, 12}, - std::vector{1, 2, -9, -16, -5, 6, -2, -2, -9, -16, -5, -42, 1, 2, -9, -16, 5, 6, -2, 4, -18, -32, 10, 12}, - ov::Shape {2, 1, 6}, - std::vector{2, 1, 3, 4, 1, 7, 1, 2, 3, 4, 5, 6}), - PreluParams(ov::PartialShape {2, 3, 2}, + PreluParams( + ov::PartialShape{2, 2, 6}, + IN_ET, + std::vector{1, 2, -3, -4, -5, 6, -1, -2, -3, -4, -5, -6, 1, 2, -3, -4, 5, 6, -2, 4, -6, -8, 10, 12}, + std::vector{1, 2, -9, -16, -5, 6, -2, -2, -9, -16, -5, -42, + 1, 2, -9, -16, 5, 6, -2, 4, -18, -32, 10, 12}, + ov::Shape{2, 1, 6}, + std::vector{2, 1, 3, 4, 1, 7, 1, 2, 3, 4, 5, 6}), + PreluParams(ov::PartialShape{2, 3, 2}, IN_ET, std::vector{1, 2, -3, -4, -5, 6, -1, -2, -3, -4, -5, -6}, std::vector{1, 2, -9, -16, -5, 6, -1, -4, -9, -16, -25, -36}, - ov::Shape {2, 3, 2}, + ov::Shape{2, 3, 2}, std::vector{2, 1, 3, 4, 1, 7, 1, 2, 3, 4, 5, 6}), - PreluParams(ov::PartialShape {2, 1, 2}, + PreluParams(ov::PartialShape{2, 1, 2}, IN_ET, std::vector{-10, -10, -10, -10}, std::vector{-1, -100, -1, -100}, - ov::Shape {2}, + ov::Shape{2}, std::vector{0.1, 10}), - PreluParams(ov::PartialShape {1, 2, 1, 2}, + PreluParams(ov::PartialShape{1, 2, 1, 2}, IN_ET, std::vector{-10, -10, -10, -10}, std::vector{-1, -1, -100, -100}, - ov::Shape {2}, + ov::Shape{2}, std::vector{0.1, 10}), - PreluParams(ov::PartialShape {1, 5, 1, 1}, + PreluParams(ov::PartialShape{1, 5, 1, 1}, IN_ET, std::vector{-1, 0, -1, -1, -1}, std::vector{-1, 0, -3, -4, -5}, - ov::Shape {5}, + ov::Shape{5}, std::vector{1, 2, 3, 4, 5}), - PreluParams(ov::PartialShape {2, 3, 4, 5}, - IN_ET, - std::vector{-1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., - -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., - -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., - -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., - -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., - -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., - -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1.}, - std::vector{-0., -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., -72., -73., -74., - -75., -76., -77., -78., -79., -80., -81., -82., -83., -84., -85., -86., -87., -88., -89., - -90., -91., -92., -93., -94., -95., -96., -97., -98., -99., -100., -101., -102., -103., -104., - -105., -106., -107., -108., -109., -110., -111., -112., -113., -114., -115., -116., -117., -118., -119.}, - ov::Shape {2, 3, 4, 5}, - std::vector{0, 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, - 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, - 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, - 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119}), - PreluParams(ov::PartialShape {2, 3, 4, 5}, - IN_ET, - std::vector{-1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., - -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., - -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., - -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., - -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., - -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., - -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1.}, - std::vector{-0., -1., -2., -3., -4., -0., -1., -2., -3., -4., -0., -1., -2., -3., -4., -0., -1., -2., - -3., -4., -0., -1., -2., -3., -4., -0., -1., -2., -3., -4., -0., -1., -2., -3., -4., -0., - -1., -2., -3., -4., -0., -1., -2., -3., -4., -0., -1., -2., -3., -4., -0., -1., -2., -3., - -4., -0., -1., -2., -3., -4., -0., -1., -2., -3., -4., -0., -1., -2., -3., -4., -0., -1., - -2., -3., -4., -0., -1., -2., -3., -4., -0., -1., -2., -3., -4., -0., -1., -2., -3., -4., - -0., -1., -2., -3., -4., -0., -1., -2., -3., -4., -0., -1., -2., -3., -4., -0., -1., -2., - -3., -4., -0., -1., -2., -3., -4., -0., -1., -2., -3., -4.}, - ov::Shape {5}, - std::vector{0, 1, 2, 3, 4}), - PreluParams(ov::PartialShape {2, 3, 4, 5}, - IN_ET, - std::vector{-1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., - -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., - -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., - -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., - -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., - -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., - -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1.}, - std::vector{-0., -0., -0., -0., -0., -0., -0., -0., -0., -0., -0., -0., -0., -0., -0., -0., -0., -0., - -0., -0., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., - -1., -1., -1., -1., -2., -2., -2., -2., -2., -2., -2., -2., -2., -2., -2., -2., -2., -2., - -2., -2., -2., -2., -2., -2., -0., -0., -0., -0., -0., -0., -0., -0., -0., -0., -0., -0., - -0., -0., -0., -0., -0., -0., -0., -0., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., - -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -2., -2., -2., -2., -2., -2., -2., -2., - -2., -2., -2., -2., -2., -2., -2., -2., -2., -2., -2., -2.}, - ov::Shape {3}, - std::vector{0, 1, 2}), - PreluParams(ov::PartialShape {2, 3, 4, 5}, - IN_ET, - std::vector{-1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., - -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., - -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., - -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., - -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., - -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., - -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1.}, - std::vector{-0., -0., -0., -0., -0., -0., -0., -0., -0., -0., -0., -0., -0., -0., -0., -0., -0., -0., - -0., -0., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., - -1., -1., -1., -1., -2., -2., -2., -2., -2., -2., -2., -2., -2., -2., -2., -2., -2., -2., - -2., -2., -2., -2., -2., -2., -0., -0., -0., -0., -0., -0., -0., -0., -0., -0., -0., -0., - -0., -0., -0., -0., -0., -0., -0., -0., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., - -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -2., -2., -2., -2., -2., -2., -2., -2., - -2., -2., -2., -2., -2., -2., -2., -2., -2., -2., -2., -2.}, - ov::Shape {3, 1, 1}, - std::vector{0, 1, 2}) - }; + PreluParams( + ov::PartialShape{2, 3, 4, 5}, + IN_ET, + std::vector{-1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., + -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., + -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., + -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., + -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., + -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., + -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1.}, + std::vector{-0., -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., + -72., -73., -74., -75., -76., -77., -78., -79., -80., -81., -82., -83., + -84., -85., -86., -87., -88., -89., -90., -91., -92., -93., -94., -95., + -96., -97., -98., -99., -100., -101., -102., -103., -104., -105., -106., -107., + -108., -109., -110., -111., -112., -113., -114., -115., -116., -117., -118., -119.}, + ov::Shape{2, 3, 4, 5}, + std::vector{0, 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, + 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, + 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, + 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119}), + PreluParams( + ov::PartialShape{2, 3, 4, 5}, + IN_ET, + std::vector{-1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., + -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., + -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., + -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., + -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., + -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., + -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1.}, + std::vector{-0., -1., -2., -3., -4., -0., -1., -2., -3., -4., -0., -1., -2., -3., -4., -0., -1., -2., + -3., -4., -0., -1., -2., -3., -4., -0., -1., -2., -3., -4., -0., -1., -2., -3., -4., -0., + -1., -2., -3., -4., -0., -1., -2., -3., -4., -0., -1., -2., -3., -4., -0., -1., -2., -3., + -4., -0., -1., -2., -3., -4., -0., -1., -2., -3., -4., -0., -1., -2., -3., -4., -0., -1., + -2., -3., -4., -0., -1., -2., -3., -4., -0., -1., -2., -3., -4., -0., -1., -2., -3., -4., + -0., -1., -2., -3., -4., -0., -1., -2., -3., -4., -0., -1., -2., -3., -4., -0., -1., -2., + -3., -4., -0., -1., -2., -3., -4., -0., -1., -2., -3., -4.}, + ov::Shape{5}, + std::vector{0, 1, 2, 3, 4}), + PreluParams( + ov::PartialShape{2, 3, 4, 5}, + IN_ET, + std::vector{-1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., + -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., + -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., + -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., + -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., + -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., + -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1.}, + std::vector{-0., -0., -0., -0., -0., -0., -0., -0., -0., -0., -0., -0., -0., -0., -0., -0., -0., -0., + -0., -0., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., + -1., -1., -1., -1., -2., -2., -2., -2., -2., -2., -2., -2., -2., -2., -2., -2., -2., -2., + -2., -2., -2., -2., -2., -2., -0., -0., -0., -0., -0., -0., -0., -0., -0., -0., -0., -0., + -0., -0., -0., -0., -0., -0., -0., -0., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., + -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -2., -2., -2., -2., -2., -2., -2., -2., + -2., -2., -2., -2., -2., -2., -2., -2., -2., -2., -2., -2.}, + ov::Shape{3}, + std::vector{0, 1, 2}), + PreluParams( + ov::PartialShape{2, 3, 4, 5}, + IN_ET, + std::vector{-1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., + -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., + -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., + -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., + -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., + -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., + -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1.}, + std::vector{-0., -0., -0., -0., -0., -0., -0., -0., -0., -0., -0., -0., -0., -0., -0., -0., -0., -0., + -0., -0., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., + -1., -1., -1., -1., -2., -2., -2., -2., -2., -2., -2., -2., -2., -2., -2., -2., -2., -2., + -2., -2., -2., -2., -2., -2., -0., -0., -0., -0., -0., -0., -0., -0., -0., -0., -0., -0., + -0., -0., -0., -0., -0., -0., -0., -0., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., + -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -2., -2., -2., -2., -2., -2., -2., -2., + -2., -2., -2., -2., -2., -2., -2., -2., -2., -2., -2., -2.}, + ov::Shape{3, 1, 1}, + std::vector{0, 1, 2})}; return preluParams; } @@ -255,157 +270,150 @@ template std::vector generatePreluI8Params() { using T = typename element_type_traits::value_type; - std::vector preluParams { - PreluParams(ov::PartialShape {6}, + std::vector preluParams{ + PreluParams(ov::PartialShape{6}, IN_ET, std::vector{1, 2, -3, -4, 5, 6}, std::vector{1, 2, -6, -8, 5, 6}, - ov::Shape {1}, + ov::Shape{1}, std::vector{2}), - PreluParams(ov::PartialShape {6}, + PreluParams(ov::PartialShape{6}, IN_ET, std::vector{1, 2, -3, -4, 5, 6}, std::vector{1, 2, -12, -20, 5, 6}, - ov::Shape {6}, + ov::Shape{6}, std::vector{2, 3, 4, 5, 6, 7}), - PreluParams(ov::PartialShape {3, 2}, + PreluParams(ov::PartialShape{3, 2}, IN_ET, std::vector{-2, 3, -2, 1, -1, 0}, std::vector{0, 3, 0, 1, 0, 0}, - ov::Shape {2}, + ov::Shape{2}, std::vector{0, 1}), - PreluParams(ov::PartialShape {2, 6}, + PreluParams(ov::PartialShape{2, 6}, IN_ET, std::vector{1, 2, -3, -4, 5, 6, 7, 8, -9, -10, 11, 12}, std::vector{1, 2, -9, -16, 5, 6, 7, 8, -27, -40, 11, 12}, - ov::Shape {6}, + ov::Shape{6}, std::vector{1, 2, 3, 4, 5, 6}), - PreluParams(ov::PartialShape {2, 6}, + PreluParams(ov::PartialShape{2, 6}, IN_ET, std::vector{1, 2, -3, -4, 5, 6, 1, 2, -3, -4, 5, 6}, std::vector{1, 2, -6, -8, 5, 6, 1, 2, -12, -8, 5, 6}, - ov::Shape {2, 6}, + ov::Shape{2, 6}, std::vector{2, 2, 2, 2, 2, 2, 1, 1, 4, 2, 1, 1}), - PreluParams(ov::PartialShape {2, 2, 2, 2}, + PreluParams(ov::PartialShape{2, 2, 2, 2}, IN_ET, std::vector{1, 2, -3, -4, 1, 2, -3, -4, 1, 2, -3, -4, 1, 2, -3, -4}, std::vector{1, 2, -3, -8, 1, 2, -9, -16, 1, 2, -3, -8, 1, 2, -9, -16}, - ov::Shape {2, 1, 2}, + ov::Shape{2, 1, 2}, std::vector{1, 2, 3, 4}), - PreluParams(ov::PartialShape {2, 2, 2, 2}, + PreluParams(ov::PartialShape{2, 2, 2, 2}, IN_ET, std::vector{1, 2, -3, -4, 1, 2, -3, -4, 1, 2, -3, -4, 1, 2, -3, -4}, std::vector{1, 2, -3, -8, 1, 2, -9, -16, 1, 2, -3, -8, 1, 2, -9, -16}, - ov::Shape {1, 2, 1, 2}, + ov::Shape{1, 2, 1, 2}, std::vector{1, 2, 3, 4}), - PreluParams(ov::PartialShape {2, 2, 6}, - IN_ET, - std::vector{1, 2, -3, -4, -5, 6, -1, -2, -3, -4, -5, -6, 1, 2, -3, -4, 5, 6, -2, 4, -6, -8, 10, 12}, - std::vector{1, 2, -9, -16, -5, 6, -2, -2, -9, -16, -5, -42, 1, 2, -9, -16, 5, 6, -2, 4, -18, -32, 10, 12}, - ov::Shape {2, 1, 6}, - std::vector{2, 1, 3, 4, 1, 7, 1, 2, 3, 4, 5, 6}), - PreluParams(ov::PartialShape {2, 3, 2}, + PreluParams( + ov::PartialShape{2, 2, 6}, + IN_ET, + std::vector{1, 2, -3, -4, -5, 6, -1, -2, -3, -4, -5, -6, 1, 2, -3, -4, 5, 6, -2, 4, -6, -8, 10, 12}, + std::vector{1, 2, -9, -16, -5, 6, -2, -2, -9, -16, -5, -42, + 1, 2, -9, -16, 5, 6, -2, 4, -18, -32, 10, 12}, + ov::Shape{2, 1, 6}, + std::vector{2, 1, 3, 4, 1, 7, 1, 2, 3, 4, 5, 6}), + PreluParams(ov::PartialShape{2, 3, 2}, IN_ET, std::vector{1, 2, -3, -4, -5, 6, -1, -2, -3, -4, -5, -6}, std::vector{1, 2, -9, -16, -5, 6, -1, -4, -9, -16, -25, -36}, - ov::Shape {2, 3, 2}, + ov::Shape{2, 3, 2}, std::vector{2, 1, 3, 4, 1, 7, 1, 2, 3, 4, 5, 6}), - PreluParams(ov::PartialShape {1, 5, 1, 1}, + PreluParams(ov::PartialShape{1, 5, 1, 1}, IN_ET, std::vector{-1, 0, -1, -1, -1}, std::vector{-1, 0, -3, -4, -5}, - ov::Shape {5}, + ov::Shape{5}, std::vector{1, 2, 3, 4, 5}), - PreluParams(ov::PartialShape {2, 3, 4, 5}, + PreluParams( + ov::PartialShape{2, 3, 4, 5}, + IN_ET, + std::vector{-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, + std::vector{-0, -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, -72, -73, -74, + -75, -76, -77, -78, -79, -80, -81, -82, -83, -84, -85, -86, -87, -88, -89, + -90, -91, -92, -93, -94, -95, -96, -97, -98, -99, -100, -101, -102, -103, -104, + -105, -106, -107, -108, -109, -110, -111, -112, -113, -114, -115, -116, -117, -118, -119}, + ov::Shape{2, 3, 4, 5}, + std::vector{0, 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, + 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, + 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, + 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119}), + PreluParams(ov::PartialShape{2, 3, 4, 5}, IN_ET, - std::vector{-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, - std::vector{-0, -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, -72, -73, -74, - -75, -76, -77, -78, -79, -80, -81, -82, -83, -84, -85, -86, -87, -88, -89, - -90, -91, -92, -93, -94, -95, -96, -97, -98, -99, -100, -101, -102, -103, -104, - -105, -106, -107, -108, -109, -110, -111, -112, -113, -114, -115, -116, -117, -118, -119}, - ov::Shape {2, 3, 4, 5}, - std::vector{0, 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, - 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, - 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, - 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119}), - PreluParams(ov::PartialShape {2, 3, 4, 5}, - IN_ET, - std::vector{-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, - std::vector{-0, -1, -2, -3, -4, -0, -1, -2, -3, -4, -0, -1, -2, -3, -4, -0, -1, -2, - -3, -4, -0, -1, -2, -3, -4, -0, -1, -2, -3, -4, -0, -1, -2, -3, -4, -0, - -1, -2, -3, -4, -0, -1, -2, -3, -4, -0, -1, -2, -3, -4, -0, -1, -2, -3, - -4, -0, -1, -2, -3, -4, -0, -1, -2, -3, -4, -0, -1, -2, -3, -4, -0, -1, - -2, -3, -4, -0, -1, -2, -3, -4, -0, -1, -2, -3, -4, -0, -1, -2, -3, -4, - -0, -1, -2, -3, -4, -0, -1, -2, -3, -4, -0, -1, -2, -3, -4, -0, -1, -2, - -3, -4, -0, -1, -2, -3, -4, -0, -1, -2, -3, -4}, - ov::Shape {5}, + std::vector{-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, + std::vector{-0, -1, -2, -3, -4, -0, -1, -2, -3, -4, -0, -1, -2, -3, -4, -0, -1, -2, -3, -4, + -0, -1, -2, -3, -4, -0, -1, -2, -3, -4, -0, -1, -2, -3, -4, -0, -1, -2, -3, -4, + -0, -1, -2, -3, -4, -0, -1, -2, -3, -4, -0, -1, -2, -3, -4, -0, -1, -2, -3, -4, + -0, -1, -2, -3, -4, -0, -1, -2, -3, -4, -0, -1, -2, -3, -4, -0, -1, -2, -3, -4, + -0, -1, -2, -3, -4, -0, -1, -2, -3, -4, -0, -1, -2, -3, -4, -0, -1, -2, -3, -4, + -0, -1, -2, -3, -4, -0, -1, -2, -3, -4, -0, -1, -2, -3, -4, -0, -1, -2, -3, -4}, + ov::Shape{5}, std::vector{0, 1, 2, 3, 4}), - PreluParams(ov::PartialShape {2, 3, 4, 5}, + PreluParams(ov::PartialShape{2, 3, 4, 5}, IN_ET, - std::vector{-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, - std::vector{-0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, - -0, -0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, - -2, -2, -2, -2, -2, -2, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, - -0, -0, -0, -0, -0, -0, -0, -0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -2, -2, -2, -2, -2, -2, -2, -2, - -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2}, - ov::Shape {3}, + std::vector{-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, + std::vector{-0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, + -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2}, + ov::Shape{3}, std::vector{0, 1, 2}), - PreluParams(ov::PartialShape {2, 3, 4, 5}, + PreluParams(ov::PartialShape{2, 3, 4, 5}, IN_ET, - std::vector{-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, - std::vector{-0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, - -0, -0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, - -2, -2, -2, -2, -2, -2, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, - -0, -0, -0, -0, -0, -0, -0, -0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -2, -2, -2, -2, -2, -2, -2, -2, - -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2}, - ov::Shape {3, 1, 1}, - std::vector{0, 1, 2}) - }; + std::vector{-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, + std::vector{-0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, + -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2}, + ov::Shape{3, 1, 1}, + std::vector{0, 1, 2})}; return preluParams; } std::vector generatePreluCombinedParams() { - const std::vector> preluTypeParams { - generatePreluFloatParams(), - generatePreluFloatParams(), - generatePreluFloatParams(), - generatePreluI8Params() - }; + const std::vector> preluTypeParams{generatePreluFloatParams(), + generatePreluFloatParams(), + generatePreluFloatParams(), + generatePreluI8Params()}; std::vector combinedParams; for (const auto& params : preluTypeParams) { @@ -414,7 +422,9 @@ std::vector generatePreluCombinedParams() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_Prelu_With_Hardcoded_Refs, ReferencePreluLayerTest, - testing::ValuesIn(generatePreluCombinedParams()), ReferencePreluLayerTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_Prelu_With_Hardcoded_Refs, + ReferencePreluLayerTest, + testing::ValuesIn(generatePreluCombinedParams()), + ReferencePreluLayerTest::getTestCaseName); -} // namespace +} // namespace diff --git a/src/plugins/template/tests/functional/op_reference/prior_box_clustered.cpp b/src/plugins/template/tests/functional/op_reference/prior_box_clustered.cpp index cecf1055276..9097c3a2019 100644 --- a/src/plugins/template/tests/functional/op_reference/prior_box_clustered.cpp +++ b/src/plugins/template/tests/functional/op_reference/prior_box_clustered.cpp @@ -4,8 +4,8 @@ #include -#include "openvino/op/prior_box.hpp" #include "base_reference_test.hpp" +#include "openvino/op/prior_box.hpp" #include "openvino/opsets/opset1.hpp" using namespace reference_tests; @@ -17,9 +17,11 @@ struct PriorBoxClusteredParams { PriorBoxClusteredParams(const std::vector& widths, const std::vector& heights, const bool clip, - const ov::Shape& layerShapeShape, const ov::Shape& imageShapeShape, + const ov::Shape& layerShapeShape, + const ov::Shape& imageShapeShape, const ov::element::Type& iType, - const std::vector& layerShapeValues, const std::vector& imageShapeValues, + const std::vector& layerShapeValues, + const std::vector& imageShapeValues, const std::vector& oValues, const std::vector& variances = {}, const std::string& testcaseName = "") @@ -31,12 +33,12 @@ struct PriorBoxClusteredParams { imageShapeData(CreateTensor(iType, imageShapeValues)), refData(CreateTensor(outType, oValues)), testcaseName(testcaseName) { - attrs.widths = widths; - attrs.heights = heights; - attrs.clip = clip; - if ( variances.size() != 0) - attrs.variances = variances; - } + attrs.widths = widths; + attrs.heights = heights; + attrs.clip = clip; + if (variances.size() != 0) + attrs.variances = variances; + } ov::op::v0::PriorBoxClustered::Attributes attrs; ov::Shape layerShapeShape; @@ -49,7 +51,8 @@ struct PriorBoxClusteredParams { std::string testcaseName; }; -class ReferencePriorBoxClusteredLayerTest : public testing::TestWithParam, public CommonReferenceTest { +class ReferencePriorBoxClusteredLayerTest : public testing::TestWithParam, + public CommonReferenceTest { public: void SetUp() override { auto params = GetParam(); @@ -72,10 +75,12 @@ public: private: static std::shared_ptr CreateFunction(const PriorBoxClusteredParams& params) { - auto LS = std::make_shared(params.inType, params.layerShapeShape, params.layerShapeData.data()); - auto IS = std::make_shared(params.inType, params.imageShapeShape, params.imageShapeData.data()); + auto LS = + std::make_shared(params.inType, params.layerShapeShape, params.layerShapeData.data()); + auto IS = + std::make_shared(params.inType, params.imageShapeShape, params.imageShapeData.data()); const auto PriorBoxClustered = std::make_shared(LS, IS, params.attrs); - return std::make_shared(NodeVector {PriorBoxClustered}, ParameterVector {}); + return std::make_shared(NodeVector{PriorBoxClustered}, ParameterVector{}); } }; @@ -87,30 +92,40 @@ template std::vector generatePriorBoxClusteredFloatParams() { using T = typename element_type_traits::value_type; - std::vector priorBoxClusteredParams { - PriorBoxClusteredParams({3.0f}, {3.0f}, true, - {2}, {2}, - IN_ET, - std::vector{2, 2}, - std::vector{10, 10}, - std::vector{0, 0, 0.15f, 0.15f, 0.34999f, 0, 0.64999f, 0.15f, 0, 0.34999f, 0.15f, - 0.64999f, 0.34999f, 0.34999f, 0.64999f, 0.64999f, 0.1f, 0.1f, 0.1f, 0.1f, 0.1f, 0.1f, - 0.1f, 0.1f, 0.1f, 0.1f, 0.1f, 0.1f, 0.1f, 0.1f, 0.1f, 0.1f}), - PriorBoxClusteredParams({3.0f}, {3.0f}, true, - {2}, {2}, - IN_ET, - std::vector{2, 2}, - std::vector{10, 10}, - std::vector{0, 0, 0.15f, 0.15f, 0.34999f, 0, 0.64999f, 0.15f, 0, 0.34999f, 0.15f, - 0.64999f, 0.34999f, 0.34999f, 0.64999f, 0.64999f, 0.1f, 0.2f, 0.3f, 0.4f, 0.1f, 0.2f, - 0.3f, 0.4f, 0.1f, 0.2f, 0.3f, 0.4f, 0.1f, 0.2f, 0.3f, 0.4f}, - {0.1f, 0.2f, 0.3f, 0.4f}), + std::vector priorBoxClusteredParams{ + PriorBoxClusteredParams( + {3.0f}, + {3.0f}, + true, + {2}, + {2}, + IN_ET, + std::vector{2, 2}, + std::vector{10, 10}, + std::vector{0, 0, 0.15f, 0.15f, 0.34999f, 0, 0.64999f, 0.15f, + 0, 0.34999f, 0.15f, 0.64999f, 0.34999f, 0.34999f, 0.64999f, 0.64999f, + 0.1f, 0.1f, 0.1f, 0.1f, 0.1f, 0.1f, 0.1f, 0.1f, + 0.1f, 0.1f, 0.1f, 0.1f, 0.1f, 0.1f, 0.1f, 0.1f}), + PriorBoxClusteredParams( + {3.0f}, + {3.0f}, + true, + {2}, + {2}, + IN_ET, + std::vector{2, 2}, + std::vector{10, 10}, + std::vector{0, 0, 0.15f, 0.15f, 0.34999f, 0, 0.64999f, 0.15f, + 0, 0.34999f, 0.15f, 0.64999f, 0.34999f, 0.34999f, 0.64999f, 0.64999f, + 0.1f, 0.2f, 0.3f, 0.4f, 0.1f, 0.2f, 0.3f, 0.4f, + 0.1f, 0.2f, 0.3f, 0.4f, 0.1f, 0.2f, 0.3f, 0.4f}, + {0.1f, 0.2f, 0.3f, 0.4f}), }; return priorBoxClusteredParams; } std::vector generatePriorBoxClusteredCombinedParams() { - const std::vector> priorBoxClusteredTypeParams { + const std::vector> priorBoxClusteredTypeParams{ generatePriorBoxClusteredFloatParams(), generatePriorBoxClusteredFloatParams(), generatePriorBoxClusteredFloatParams(), @@ -119,7 +134,7 @@ std::vector generatePriorBoxClusteredCombinedParams() { generatePriorBoxClusteredFloatParams(), generatePriorBoxClusteredFloatParams(), generatePriorBoxClusteredFloatParams(), - }; + }; std::vector combinedParams; for (const auto& params : priorBoxClusteredTypeParams) { @@ -128,7 +143,9 @@ std::vector generatePriorBoxClusteredCombinedParams() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_PriorBoxClustered_With_Hardcoded_Refs, ReferencePriorBoxClusteredLayerTest, - testing::ValuesIn(generatePriorBoxClusteredCombinedParams()), ReferencePriorBoxClusteredLayerTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_PriorBoxClustered_With_Hardcoded_Refs, + ReferencePriorBoxClusteredLayerTest, + testing::ValuesIn(generatePriorBoxClusteredCombinedParams()), + ReferencePriorBoxClusteredLayerTest::getTestCaseName); -} // namespace +} // namespace diff --git a/src/plugins/template/tests/functional/op_reference/proposal.cpp b/src/plugins/template/tests/functional/op_reference/proposal.cpp index 119d29b03e5..431ded8ca1a 100644 --- a/src/plugins/template/tests/functional/op_reference/proposal.cpp +++ b/src/plugins/template/tests/functional/op_reference/proposal.cpp @@ -2,9 +2,10 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/proposal.hpp" + #include -#include "openvino/op/proposal.hpp" #include "base_reference_test.hpp" using namespace reference_tests; @@ -14,58 +15,58 @@ namespace { struct ProposalV1Params { template ProposalV1Params(const float iou_threshold, - const int min_bbox_size, - const int feature_stride, - const int pre_nms_topn, - const int post_nms_topn, - const size_t image_shape_num, - const size_t image_h, - const size_t image_w, - const size_t image_z, - const std::vector& ratios, - const std::vector& scales, - const size_t batch_size, - const size_t anchor_num, - const size_t feat_map_height, - const size_t feat_map_width, - const ov::element::Type& iType, - const std::vector& clsScoreValues, - const std::vector& bboxPredValues, - const std::vector& proposalValues, - const std::string& test_name = "") + const int min_bbox_size, + const int feature_stride, + const int pre_nms_topn, + const int post_nms_topn, + const size_t image_shape_num, + const size_t image_h, + const size_t image_w, + const size_t image_z, + const std::vector& ratios, + const std::vector& scales, + const size_t batch_size, + const size_t anchor_num, + const size_t feat_map_height, + const size_t feat_map_width, + const ov::element::Type& iType, + const std::vector& clsScoreValues, + const std::vector& bboxPredValues, + const std::vector& proposalValues, + const std::string& test_name = "") : inType(iType), outType(iType), clsScoreData(CreateTensor(iType, clsScoreValues)), bboxPredData(CreateTensor(iType, bboxPredValues)), refProposalData(CreateTensor(iType, proposalValues)), testcaseName(test_name) { - clsScoreShape = Shape{batch_size, anchor_num * 2, feat_map_height, feat_map_width}; - bboxPredShape = Shape{batch_size, anchor_num * 4, feat_map_height, feat_map_width}; - imageShapeShape = Shape{image_shape_num}; + clsScoreShape = Shape{batch_size, anchor_num * 2, feat_map_height, feat_map_width}; + bboxPredShape = Shape{batch_size, anchor_num * 4, feat_map_height, feat_map_width}; + imageShapeShape = Shape{image_shape_num}; - attrs.base_size = min_bbox_size; - attrs.min_size = min_bbox_size; - attrs.pre_nms_topn = pre_nms_topn; - attrs.post_nms_topn = post_nms_topn; - attrs.nms_thresh = iou_threshold; - attrs.feat_stride = feature_stride; - attrs.min_size = min_bbox_size; - attrs.ratio = ratios; - attrs.scale = scales; - attrs.clip_before_nms = true; - attrs.clip_after_nms = false; - attrs.normalize = false; - attrs.box_size_scale = 1.0f; - attrs.box_coordinate_scale = 1.0f; - attrs.framework = ""; - attrs.infer_probs = false; + attrs.base_size = min_bbox_size; + attrs.min_size = min_bbox_size; + attrs.pre_nms_topn = pre_nms_topn; + attrs.post_nms_topn = post_nms_topn; + attrs.nms_thresh = iou_threshold; + attrs.feat_stride = feature_stride; + attrs.min_size = min_bbox_size; + attrs.ratio = ratios; + attrs.scale = scales; + attrs.clip_before_nms = true; + attrs.clip_after_nms = false; + attrs.normalize = false; + attrs.box_size_scale = 1.0f; + attrs.box_coordinate_scale = 1.0f; + attrs.framework = ""; + attrs.infer_probs = false; - std::vector inputShapeValues; - inputShapeValues.push_back(static_cast(image_h)); - inputShapeValues.push_back(static_cast(image_w)); - inputShapeValues.push_back(static_cast(image_z)); - imageShapeData = CreateTensor(iType, inputShapeValues); - } + std::vector inputShapeValues; + inputShapeValues.push_back(static_cast(image_h)); + inputShapeValues.push_back(static_cast(image_w)); + inputShapeValues.push_back(static_cast(image_z)); + imageShapeData = CreateTensor(iType, inputShapeValues); + } ov::op::v0::Proposal::Attributes attrs; ov::PartialShape clsScoreShape; @@ -83,26 +84,26 @@ struct ProposalV1Params { struct ProposalV4Params { template ProposalV4Params(const float iou_threshold, - const int min_bbox_size, - const int feature_stride, - const int pre_nms_topn, - const int post_nms_topn, - const size_t image_shape_num, - const size_t image_h, - const size_t image_w, - const size_t image_z, - const std::vector& ratios, - const std::vector& scales, - const size_t batch_size, - const size_t anchor_num, - const size_t feat_map_height, - const size_t feat_map_width, - const ov::element::Type& iType, - const std::vector& clsScoreValues, - const std::vector& bboxPredValues, - const std::vector& proposalValues, - const std::vector& probsValues, - const std::string& test_name = "") + const int min_bbox_size, + const int feature_stride, + const int pre_nms_topn, + const int post_nms_topn, + const size_t image_shape_num, + const size_t image_h, + const size_t image_w, + const size_t image_z, + const std::vector& ratios, + const std::vector& scales, + const size_t batch_size, + const size_t anchor_num, + const size_t feat_map_height, + const size_t feat_map_width, + const ov::element::Type& iType, + const std::vector& clsScoreValues, + const std::vector& bboxPredValues, + const std::vector& proposalValues, + const std::vector& probsValues, + const std::string& test_name = "") : inType(iType), outType(iType), clsScoreData(CreateTensor(iType, clsScoreValues)), @@ -110,33 +111,33 @@ struct ProposalV4Params { refProposalData(CreateTensor(iType, proposalValues)), refProbsData(CreateTensor(iType, probsValues)), testcaseName(test_name) { - clsScoreShape = Shape{batch_size, anchor_num * 2, feat_map_height, feat_map_width}; - bboxPredShape = Shape{batch_size, anchor_num * 4, feat_map_height, feat_map_width}; - imageShapeShape = Shape{image_shape_num}; + clsScoreShape = Shape{batch_size, anchor_num * 2, feat_map_height, feat_map_width}; + bboxPredShape = Shape{batch_size, anchor_num * 4, feat_map_height, feat_map_width}; + imageShapeShape = Shape{image_shape_num}; - attrs.base_size = min_bbox_size; - attrs.min_size = min_bbox_size; - attrs.pre_nms_topn = pre_nms_topn; - attrs.post_nms_topn = post_nms_topn; - attrs.nms_thresh = iou_threshold; - attrs.feat_stride = feature_stride; - attrs.min_size = min_bbox_size; - attrs.ratio = ratios; - attrs.scale = scales; - attrs.clip_before_nms = true; - attrs.clip_after_nms = false; - attrs.normalize = false; - attrs.box_size_scale = 1.0f; - attrs.box_coordinate_scale = 1.0f; - attrs.framework = ""; - attrs.infer_probs = true; + attrs.base_size = min_bbox_size; + attrs.min_size = min_bbox_size; + attrs.pre_nms_topn = pre_nms_topn; + attrs.post_nms_topn = post_nms_topn; + attrs.nms_thresh = iou_threshold; + attrs.feat_stride = feature_stride; + attrs.min_size = min_bbox_size; + attrs.ratio = ratios; + attrs.scale = scales; + attrs.clip_before_nms = true; + attrs.clip_after_nms = false; + attrs.normalize = false; + attrs.box_size_scale = 1.0f; + attrs.box_coordinate_scale = 1.0f; + attrs.framework = ""; + attrs.infer_probs = true; - std::vector inputShapeValues; - inputShapeValues.push_back(static_cast(image_h)); - inputShapeValues.push_back(static_cast(image_w)); - inputShapeValues.push_back(static_cast(image_z)); - imageShapeData = CreateTensor(iType, inputShapeValues); - } + std::vector inputShapeValues; + inputShapeValues.push_back(static_cast(image_h)); + inputShapeValues.push_back(static_cast(image_w)); + inputShapeValues.push_back(static_cast(image_z)); + imageShapeData = CreateTensor(iType, inputShapeValues); + } ov::op::v4::Proposal::Attributes attrs; ov::PartialShape clsScoreShape; @@ -182,8 +183,10 @@ private: const auto class_probs_param = std::make_shared(params.inType, params.clsScoreShape); const auto bbox_deltas_param = std::make_shared(params.inType, params.bboxPredShape); const auto image_shape_param = std::make_shared(params.inType, params.imageShapeShape); - const auto Proposal = std::make_shared(class_probs_param, bbox_deltas_param, image_shape_param, params.attrs); - return std::make_shared(NodeVector {Proposal}, ParameterVector {class_probs_param, bbox_deltas_param, image_shape_param}); + const auto Proposal = + std::make_shared(class_probs_param, bbox_deltas_param, image_shape_param, params.attrs); + return std::make_shared(NodeVector{Proposal}, + ParameterVector{class_probs_param, bbox_deltas_param, image_shape_param}); } }; @@ -217,8 +220,10 @@ private: const auto class_probs_param = std::make_shared(params.inType, params.clsScoreShape); const auto bbox_deltas_param = std::make_shared(params.inType, params.bboxPredShape); const auto image_shape_param = std::make_shared(params.inType, params.imageShapeShape); - const auto Proposal = std::make_shared(class_probs_param, bbox_deltas_param, image_shape_param, params.attrs); - return std::make_shared(Proposal->outputs(), ParameterVector {class_probs_param, bbox_deltas_param, image_shape_param}); + const auto Proposal = + std::make_shared(class_probs_param, bbox_deltas_param, image_shape_param, params.attrs); + return std::make_shared(Proposal->outputs(), + ParameterVector{class_probs_param, bbox_deltas_param, image_shape_param}); } }; @@ -234,99 +239,115 @@ template std::vector generateProposalV1Params() { using T = typename element_type_traits::value_type; - std::vector proposalV1Params { - ProposalV1Params(0.7f, 16, 16, 6000, 10, // iou_threshold, min_nnox_size, feature_stride,pre_nms_topn, post_nms_topn - 3, 210, 350, 1, // image_shape_num, image_h, image_w, image_z - {0.5f}, // ratios - {32.0f}, //scales - 1, 1, 10, 10, // batch_size, anchor_num, feat_map_height, feat_map_width - IN_ET, - std::vector{ - 0.000240f, 0.003802f, 0.111432f, 0.000503f, 0.007887f, 0.144701f, 0.399074f, 0.004680f, // 0 - 0.139741f, 0.002386f, 0.030003f, 0.276552f, 0.000267f, 0.022971f, 0.287953f, 0.050235f, // 8 - 0.002580f, 0.206311f, 0.000146f, 0.009656f, 0.175462f, 0.000147f, 0.014718f, 0.272348f, // 16 - 0.065199f, 0.003286f, 0.185335f, 0.003720f, 0.025932f, 0.251401f, 0.001465f, 0.090447f, // 24 - 0.488469f, 0.092259f, 0.019306f, 0.379091f, 0.005311f, 0.010369f, 0.087615f, 0.042003f, // 32 - 0.073871f, 0.416763f, 0.044282f, 0.069776f, 0.313032f, 0.000457f, 0.017346f, 0.089762f, // 40 - 0.000820f, 0.103986f, 0.367993f, 0.026315f, 0.035701f, 0.299252f, 0.000135f, 0.017825f, // 48 - 0.150119f, 0.000076f, 0.050511f, 0.269601f, 0.026680f, 0.003541f, 0.189765f, 0.000051f, // 56 - 0.004315f, 0.193150f, 0.000032f, 0.007254f, 0.185557f, 0.051526f, 0.000657f, 0.117579f, // 64 - 0.000115f, 0.010179f, 0.293187f, 0.000025f, 0.006505f, 0.175345f, 0.032587f, 0.000469f, // 72 - 0.098443f, 0.000121f, 0.009600f, 0.322782f, 0.000032f, 0.004543f, 0.166860f, 0.044911f, // 80 - 0.000187f, 0.102691f, 0.000242f, 0.005502f, 0.107865f, 0.000191f, 0.005336f, 0.086893f, // 88 - 0.078422f, 0.000345f, 0.079096f, 0.000281f, 0.016388f, 0.214072f, 0.000107f, 0.012027f, // 96 - 0.192754f, 0.049531f, 0.000386f, 0.149893f, 0.000374f, 0.016965f, 0.204781f, 0.000163f, // 104 - 0.016272f, 0.215277f, 0.032298f, 0.000857f, 0.133426f, 0.000614f, 0.020215f, 0.165789f, // 112 - 0.000225f, 0.036951f, 0.262195f, 0.087675f, 0.004596f, 0.147764f, 0.000219f, 0.010502f, // 120 - 0.163394f, 0.000152f, 0.023116f, 0.241702f, 0.081800f, 0.002197f, 0.146637f, 0.000193f, // 128 - 0.012017f, 0.133497f, 0.000375f, 0.028605f, 0.309179f, 0.065962f, 0.005508f, 0.155530f, // 136 - 0.000186f, 0.004540f, 0.079319f, 0.000799f, 0.031003f, 0.303045f, 0.051473f, 0.017770f, // 144 - 0.206188f, 0.000202f, 0.004291f, 0.061095f, 0.001109f, 0.018094f, 0.156639f, 0.026062f, // 152 - 0.005270f, 0.148651f, 0.000026f, 0.007300f, 0.096013f, 0.000383f, 0.022134f, 0.129511f, // 160 - 0.080882f, 0.003416f, 0.129922f, 0.000037f, 0.010040f, 0.130007f, 0.000116f, 0.014904f, // 168 - 0.171423f, 0.082893f, 0.000921f, 0.154976f, 0.000142f, 0.016552f, 0.209696f, 0.000227f, // 176 - 0.022418f, 0.228501f, 0.111712f, 0.001987f, 0.158164f, 0.001200f, 0.027049f, 0.308222f, // 184 - 0.001366f, 0.038146f, 0.287945f, 0.072526f, 0.016064f, 0.257895f, 0.000595f, 0.016962f, // 192 - }, - std::vector{ - 0.006756f, -0.055635f, 0.030843f, 0.007482f, 0.009056f, -0.041824f, 0.119722f, 0.168988f, 0.002822f, - 0.039733f, 0.109005f, 0.245152f, -0.013196f, -0.018222f, -0.170122f, -0.374904f, -0.005455f, -0.034059f, - -0.006787f, 0.072005f, -0.017933f, -0.007358f, 0.034149f, 0.123846f, 0.128319f, 0.016107f, -0.615487f, - -1.235094f, -0.024253f, -0.019406f, 0.134142f, 0.157853f, -0.021119f, 0.007383f, 0.089365f, 0.092854f, - 0.062491f, 0.002366f, 0.122464f, -0.003326f, 0.015468f, -0.034088f, 0.079009f, 0.075483f, 0.011972f, - 0.042427f, 0.106865f, 0.158754f, 0.071211f, -0.034009f, 0.007985f, -0.441477f, 0.009046f, -0.028515f, - 0.095372f, 0.119598f, -0.007553f, -0.0072f, 0.105072f, 0.084314f, 0.23268f, -0.02906f, -0.408454f, - -1.13439f, 0.016202f, -0.037859f, 0.130873f, 0.129652f, 0.002064f, -0.011969f, 0.171623f, 0.050218f, - 0.113831f, 0.028922f, 0.017785f, 0.059708f, 0.037658f, -0.011245f, 0.097197f, 0.137491f, 0.024218f, - 0.04739f, 0.091978f, 0.217333f, 0.088418f, -0.004662f, -0.095168f, -0.397928f, 0.02639f, -0.008501f, - 0.068487f, 0.108465f, 0.020069f, 0.018829f, 0.040206f, 0.068473f, 0.226458f, -0.072871f, -0.672384f, - -1.447558f, 0.039598f, 0.017471f, 0.187288f, 0.08409f, 0.017152f, -0.00516f, 0.183419f, 0.068469f, - 0.063944f, 0.160725f, -0.022493f, -0.132291f, 0.010542f, 0.036318f, 0.074042f, -0.013323f, 0.00808f, - 0.060365f, 0.120566f, 0.21866f, 0.046324f, 0.088741f, 0.029469f, -0.517183f, 0.00917f, 0.011915f, - 0.053674f, 0.140168f, 0.0033f, 0.022759f, -0.006196f, 0.063839f, 0.083726f, -0.088385f, -0.57208f, - -1.454211f, 0.020655f, 0.010788f, 0.134951f, 0.109709f, 0.015445f, -0.015363f, 0.109153f, 0.051209f, - 0.024297f, 0.139126f, -0.12358f, -0.127979f, 0.004587f, 0.004751f, 0.047292f, 0.027066f, 0.011003f, - 0.069887f, 0.117052f, 0.267419f, 0.039306f, 0.077584f, 0.02579f, -0.496149f, -0.005569f, 0.015494f, - -0.011662f, 0.105549f, -0.007015f, 0.031984f, -0.075742f, 0.0852f, 0.023886f, -0.053107f, -0.325533f, - -1.329066f, 0.004688f, 0.034501f, 0.089317f, 0.042463f, 0.004212f, -0.015128f, 0.00892f, 0.028266f, - 0.009997f, 0.157822f, 0.020116f, -0.142337f, 0.008199f, 0.046564f, 0.083014f, 0.046307f, 0.006771f, - 0.084997f, 0.141935f, 0.228339f, -0.020308f, 0.077745f, -0.018319f, -0.522311f, 0.010432f, 0.024641f, - 0.020571f, 0.097148f, 0.002064f, 0.035053f, -0.121995f, 0.012222f, -0.030779f, 0.100481f, -0.331737f, - -1.257669f, -0.013079f, 0.021227f, 0.159949f, 0.120097f, 0.005765f, -0.012335f, -0.005268f, 0.042067f, - -0.043972f, 0.102556f, 0.180494f, -0.084721f, -0.011962f, 0.031302f, 0.112511f, 0.027557f, -0.002085f, - 0.082978f, 0.149409f, 0.195091f, -0.033731f, 0.019861f, -0.064047f, -0.471328f, -0.004093f, 0.016803f, - 0.044635f, 0.058912f, -0.018735f, 0.035536f, -0.050373f, -0.002794f, -0.086705f, 0.038435f, -0.301466f, - -1.071246f, -0.028247f, 0.018984f, 0.254702f, 0.141142f, -0.017522f, 0.014843f, 0.079391f, 0.079662f, - -0.051204f, 0.048419f, 0.235604f, -0.185797f, -0.019569f, 0.02678f, 0.162507f, 0.046435f, -0.004606f, - 0.08806f, 0.18634f, 0.193957f, -0.024333f, -0.01298f, -0.17977f, -0.65881f, -0.003778f, 0.007418f, - 0.065439f, 0.104549f, -0.027706f, 0.03301f, 0.057492f, 0.032019f, -0.135337f, 0.000269f, -0.250203f, - -1.181688f, -0.027022f, -0.006755f, 0.206848f, 0.129268f, -0.003529f, 0.013445f, 0.181484f, 0.139955f, - -0.036587f, 0.065824f, 0.288751f, -0.110813f, -0.015578f, 0.044818f, 0.17756f, 0.006914f, 0.002329f, - 0.068982f, 0.189079f, 0.184253f, 0.00301f, -0.039168f, -0.010855f, -0.393254f, 0.000028f, 0.001906f, - 0.07217f, 0.063305f, -0.026144f, 0.028842f, 0.139149f, 0.023377f, 0.023362f, 0.023559f, -0.145386f, - -0.863572f, -0.015749f, -0.021364f, 0.172571f, 0.078393f, -0.037253f, 0.014978f, 0.221502f, 0.189111f, - -0.048956f, 0.085409f, 0.325399f, -0.058294f, -0.028495f, 0.021663f, 0.19392f, 0.02706f, 0.006908f, - 0.065751f, 0.176395f, 0.138375f, 0.012418f, -0.031228f, -0.008762f, -0.427345f, -0.013677f, -0.002429f, - 0.069655f, 0.019505f, -0.036763f, 0.022528f, 0.201062f, 0.022205f, 0.024528f, 0.06241f, -0.076237f, - -0.840695f, -0.007268f, -0.027865f, 0.211056f, 0.074744f, -0.053563f, 0.006863f, 0.301432f, 0.192879f, - -0.021944f, 0.100535f, 0.19031f, -0.133746f, -0.006151f, 0.023944f, 0.13561f, -0.03259f, 0.000618f, - 0.063736f, 0.180904f, 0.12393f, 0.001275f, -0.0306f, -0.032822f, -0.496515f, 0.009757f, 0.014602f, - 0.004532f, -0.039969f, -0.015984f, 0.047726f, 0.099865f, 0.003163f, 0.026623f, 0.117951f, -0.076234f, - -0.811997f, 0.01301f, 0.020042f, 0.173756f, -0.036191f, -0.068887f, 0.0229f, 0.245465f, 0.214282f, - -0.011054f, 0.132813f, 0.241014f, -0.148763f, - }, - std::vector{ - 0.000000f, 0.000000f, 0.000000f, 349.000000f, 209.000000f, // 0 - 0.000000f, 0.000000f, 0.000000f, 237.625443f, 209.000000f, // 5 - 0.000000f, 140.305511f, 0.000000f, 349.000000f, 209.000000f, // 10 - 0.000000f, 0.000000f, 0.000000f, 349.000000f, 65.359818f, // 15 - 0.000000f, 0.000000f, 0.000000f, 349.000000f, 130.324097f, // 20 - 0.000000f, 0.000000f, 15.562508f, 97.587891f, 181.224182f, // 25 - 0.000000f, 0.000000f, 68.539543f, 250.406708f, 209.000000f, // 30 - 0.000000f, 0.000000f, 0.000000f, 195.881531f, 99.841385f, // 35 - 0.000000f, 0.000000f, 0.000000f, 78.303986f, 209.000000f, // 40 - 0.000000f, 0.000000f, 0.000000f, 0.000000f, 209.000000f, // 45 - }), + std::vector proposalV1Params{ + ProposalV1Params( + 0.7f, + 16, + 16, + 6000, + 10, // iou_threshold, min_nnox_size, feature_stride,pre_nms_topn, post_nms_topn + 3, + 210, + 350, + 1, // image_shape_num, image_h, image_w, image_z + {0.5f}, // ratios + {32.0f}, // scales + 1, + 1, + 10, + 10, // batch_size, anchor_num, feat_map_height, feat_map_width + IN_ET, + std::vector{ + 0.000240f, 0.003802f, 0.111432f, 0.000503f, 0.007887f, 0.144701f, 0.399074f, 0.004680f, // 0 + 0.139741f, 0.002386f, 0.030003f, 0.276552f, 0.000267f, 0.022971f, 0.287953f, 0.050235f, // 8 + 0.002580f, 0.206311f, 0.000146f, 0.009656f, 0.175462f, 0.000147f, 0.014718f, 0.272348f, // 16 + 0.065199f, 0.003286f, 0.185335f, 0.003720f, 0.025932f, 0.251401f, 0.001465f, 0.090447f, // 24 + 0.488469f, 0.092259f, 0.019306f, 0.379091f, 0.005311f, 0.010369f, 0.087615f, 0.042003f, // 32 + 0.073871f, 0.416763f, 0.044282f, 0.069776f, 0.313032f, 0.000457f, 0.017346f, 0.089762f, // 40 + 0.000820f, 0.103986f, 0.367993f, 0.026315f, 0.035701f, 0.299252f, 0.000135f, 0.017825f, // 48 + 0.150119f, 0.000076f, 0.050511f, 0.269601f, 0.026680f, 0.003541f, 0.189765f, 0.000051f, // 56 + 0.004315f, 0.193150f, 0.000032f, 0.007254f, 0.185557f, 0.051526f, 0.000657f, 0.117579f, // 64 + 0.000115f, 0.010179f, 0.293187f, 0.000025f, 0.006505f, 0.175345f, 0.032587f, 0.000469f, // 72 + 0.098443f, 0.000121f, 0.009600f, 0.322782f, 0.000032f, 0.004543f, 0.166860f, 0.044911f, // 80 + 0.000187f, 0.102691f, 0.000242f, 0.005502f, 0.107865f, 0.000191f, 0.005336f, 0.086893f, // 88 + 0.078422f, 0.000345f, 0.079096f, 0.000281f, 0.016388f, 0.214072f, 0.000107f, 0.012027f, // 96 + 0.192754f, 0.049531f, 0.000386f, 0.149893f, 0.000374f, 0.016965f, 0.204781f, 0.000163f, // 104 + 0.016272f, 0.215277f, 0.032298f, 0.000857f, 0.133426f, 0.000614f, 0.020215f, 0.165789f, // 112 + 0.000225f, 0.036951f, 0.262195f, 0.087675f, 0.004596f, 0.147764f, 0.000219f, 0.010502f, // 120 + 0.163394f, 0.000152f, 0.023116f, 0.241702f, 0.081800f, 0.002197f, 0.146637f, 0.000193f, // 128 + 0.012017f, 0.133497f, 0.000375f, 0.028605f, 0.309179f, 0.065962f, 0.005508f, 0.155530f, // 136 + 0.000186f, 0.004540f, 0.079319f, 0.000799f, 0.031003f, 0.303045f, 0.051473f, 0.017770f, // 144 + 0.206188f, 0.000202f, 0.004291f, 0.061095f, 0.001109f, 0.018094f, 0.156639f, 0.026062f, // 152 + 0.005270f, 0.148651f, 0.000026f, 0.007300f, 0.096013f, 0.000383f, 0.022134f, 0.129511f, // 160 + 0.080882f, 0.003416f, 0.129922f, 0.000037f, 0.010040f, 0.130007f, 0.000116f, 0.014904f, // 168 + 0.171423f, 0.082893f, 0.000921f, 0.154976f, 0.000142f, 0.016552f, 0.209696f, 0.000227f, // 176 + 0.022418f, 0.228501f, 0.111712f, 0.001987f, 0.158164f, 0.001200f, 0.027049f, 0.308222f, // 184 + 0.001366f, 0.038146f, 0.287945f, 0.072526f, 0.016064f, 0.257895f, 0.000595f, 0.016962f, // 192 + }, + std::vector{ + 0.006756f, -0.055635f, 0.030843f, 0.007482f, 0.009056f, -0.041824f, 0.119722f, 0.168988f, + 0.002822f, 0.039733f, 0.109005f, 0.245152f, -0.013196f, -0.018222f, -0.170122f, -0.374904f, + -0.005455f, -0.034059f, -0.006787f, 0.072005f, -0.017933f, -0.007358f, 0.034149f, 0.123846f, + 0.128319f, 0.016107f, -0.615487f, -1.235094f, -0.024253f, -0.019406f, 0.134142f, 0.157853f, + -0.021119f, 0.007383f, 0.089365f, 0.092854f, 0.062491f, 0.002366f, 0.122464f, -0.003326f, + 0.015468f, -0.034088f, 0.079009f, 0.075483f, 0.011972f, 0.042427f, 0.106865f, 0.158754f, + 0.071211f, -0.034009f, 0.007985f, -0.441477f, 0.009046f, -0.028515f, 0.095372f, 0.119598f, + -0.007553f, -0.0072f, 0.105072f, 0.084314f, 0.23268f, -0.02906f, -0.408454f, -1.13439f, + 0.016202f, -0.037859f, 0.130873f, 0.129652f, 0.002064f, -0.011969f, 0.171623f, 0.050218f, + 0.113831f, 0.028922f, 0.017785f, 0.059708f, 0.037658f, -0.011245f, 0.097197f, 0.137491f, + 0.024218f, 0.04739f, 0.091978f, 0.217333f, 0.088418f, -0.004662f, -0.095168f, -0.397928f, + 0.02639f, -0.008501f, 0.068487f, 0.108465f, 0.020069f, 0.018829f, 0.040206f, 0.068473f, + 0.226458f, -0.072871f, -0.672384f, -1.447558f, 0.039598f, 0.017471f, 0.187288f, 0.08409f, + 0.017152f, -0.00516f, 0.183419f, 0.068469f, 0.063944f, 0.160725f, -0.022493f, -0.132291f, + 0.010542f, 0.036318f, 0.074042f, -0.013323f, 0.00808f, 0.060365f, 0.120566f, 0.21866f, + 0.046324f, 0.088741f, 0.029469f, -0.517183f, 0.00917f, 0.011915f, 0.053674f, 0.140168f, + 0.0033f, 0.022759f, -0.006196f, 0.063839f, 0.083726f, -0.088385f, -0.57208f, -1.454211f, + 0.020655f, 0.010788f, 0.134951f, 0.109709f, 0.015445f, -0.015363f, 0.109153f, 0.051209f, + 0.024297f, 0.139126f, -0.12358f, -0.127979f, 0.004587f, 0.004751f, 0.047292f, 0.027066f, + 0.011003f, 0.069887f, 0.117052f, 0.267419f, 0.039306f, 0.077584f, 0.02579f, -0.496149f, + -0.005569f, 0.015494f, -0.011662f, 0.105549f, -0.007015f, 0.031984f, -0.075742f, 0.0852f, + 0.023886f, -0.053107f, -0.325533f, -1.329066f, 0.004688f, 0.034501f, 0.089317f, 0.042463f, + 0.004212f, -0.015128f, 0.00892f, 0.028266f, 0.009997f, 0.157822f, 0.020116f, -0.142337f, + 0.008199f, 0.046564f, 0.083014f, 0.046307f, 0.006771f, 0.084997f, 0.141935f, 0.228339f, + -0.020308f, 0.077745f, -0.018319f, -0.522311f, 0.010432f, 0.024641f, 0.020571f, 0.097148f, + 0.002064f, 0.035053f, -0.121995f, 0.012222f, -0.030779f, 0.100481f, -0.331737f, -1.257669f, + -0.013079f, 0.021227f, 0.159949f, 0.120097f, 0.005765f, -0.012335f, -0.005268f, 0.042067f, + -0.043972f, 0.102556f, 0.180494f, -0.084721f, -0.011962f, 0.031302f, 0.112511f, 0.027557f, + -0.002085f, 0.082978f, 0.149409f, 0.195091f, -0.033731f, 0.019861f, -0.064047f, -0.471328f, + -0.004093f, 0.016803f, 0.044635f, 0.058912f, -0.018735f, 0.035536f, -0.050373f, -0.002794f, + -0.086705f, 0.038435f, -0.301466f, -1.071246f, -0.028247f, 0.018984f, 0.254702f, 0.141142f, + -0.017522f, 0.014843f, 0.079391f, 0.079662f, -0.051204f, 0.048419f, 0.235604f, -0.185797f, + -0.019569f, 0.02678f, 0.162507f, 0.046435f, -0.004606f, 0.08806f, 0.18634f, 0.193957f, + -0.024333f, -0.01298f, -0.17977f, -0.65881f, -0.003778f, 0.007418f, 0.065439f, 0.104549f, + -0.027706f, 0.03301f, 0.057492f, 0.032019f, -0.135337f, 0.000269f, -0.250203f, -1.181688f, + -0.027022f, -0.006755f, 0.206848f, 0.129268f, -0.003529f, 0.013445f, 0.181484f, 0.139955f, + -0.036587f, 0.065824f, 0.288751f, -0.110813f, -0.015578f, 0.044818f, 0.17756f, 0.006914f, + 0.002329f, 0.068982f, 0.189079f, 0.184253f, 0.00301f, -0.039168f, -0.010855f, -0.393254f, + 0.000028f, 0.001906f, 0.07217f, 0.063305f, -0.026144f, 0.028842f, 0.139149f, 0.023377f, + 0.023362f, 0.023559f, -0.145386f, -0.863572f, -0.015749f, -0.021364f, 0.172571f, 0.078393f, + -0.037253f, 0.014978f, 0.221502f, 0.189111f, -0.048956f, 0.085409f, 0.325399f, -0.058294f, + -0.028495f, 0.021663f, 0.19392f, 0.02706f, 0.006908f, 0.065751f, 0.176395f, 0.138375f, + 0.012418f, -0.031228f, -0.008762f, -0.427345f, -0.013677f, -0.002429f, 0.069655f, 0.019505f, + -0.036763f, 0.022528f, 0.201062f, 0.022205f, 0.024528f, 0.06241f, -0.076237f, -0.840695f, + -0.007268f, -0.027865f, 0.211056f, 0.074744f, -0.053563f, 0.006863f, 0.301432f, 0.192879f, + -0.021944f, 0.100535f, 0.19031f, -0.133746f, -0.006151f, 0.023944f, 0.13561f, -0.03259f, + 0.000618f, 0.063736f, 0.180904f, 0.12393f, 0.001275f, -0.0306f, -0.032822f, -0.496515f, + 0.009757f, 0.014602f, 0.004532f, -0.039969f, -0.015984f, 0.047726f, 0.099865f, 0.003163f, + 0.026623f, 0.117951f, -0.076234f, -0.811997f, 0.01301f, 0.020042f, 0.173756f, -0.036191f, + -0.068887f, 0.0229f, 0.245465f, 0.214282f, -0.011054f, 0.132813f, 0.241014f, -0.148763f, + }, + std::vector{ + 0.000000f, 0.000000f, 0.000000f, 349.000000f, 209.000000f, // 0 + 0.000000f, 0.000000f, 0.000000f, 237.625443f, 209.000000f, // 5 + 0.000000f, 140.305511f, 0.000000f, 349.000000f, 209.000000f, // 10 + 0.000000f, 0.000000f, 0.000000f, 349.000000f, 65.359818f, // 15 + 0.000000f, 0.000000f, 0.000000f, 349.000000f, 130.324097f, // 20 + 0.000000f, 0.000000f, 15.562508f, 97.587891f, 181.224182f, // 25 + 0.000000f, 0.000000f, 68.539543f, 250.406708f, 209.000000f, // 30 + 0.000000f, 0.000000f, 0.000000f, 195.881531f, 99.841385f, // 35 + 0.000000f, 0.000000f, 0.000000f, 78.303986f, 209.000000f, // 40 + 0.000000f, 0.000000f, 0.000000f, 0.000000f, 209.000000f, // 45 + }), }; return proposalV1Params; } @@ -335,122 +356,137 @@ template std::vector generateProposalV4Params() { using T = typename element_type_traits::value_type; - std::vector proposalV4Params { - ProposalV4Params(0.7f, 16, 16, 6000, 10, // iou_threshold, min_nnox_size, feature_stride,pre_nms_topn, post_nms_topn - 3, 210, 350, 1, // image_shape_num, image_h, image_w, image_z - {0.5f}, // ratios - {32.0f}, //scales - 1, 1, 10, 10, // batch_size, anchor_num, feat_map_height, feat_map_width - IN_ET, - std::vector{ - 0.000240f, 0.003802f, 0.111432f, 0.000503f, 0.007887f, 0.144701f, 0.399074f, 0.004680f, // 0 - 0.139741f, 0.002386f, 0.030003f, 0.276552f, 0.000267f, 0.022971f, 0.287953f, 0.050235f, // 8 - 0.002580f, 0.206311f, 0.000146f, 0.009656f, 0.175462f, 0.000147f, 0.014718f, 0.272348f, // 16 - 0.065199f, 0.003286f, 0.185335f, 0.003720f, 0.025932f, 0.251401f, 0.001465f, 0.090447f, // 24 - 0.488469f, 0.092259f, 0.019306f, 0.379091f, 0.005311f, 0.010369f, 0.087615f, 0.042003f, // 32 - 0.073871f, 0.416763f, 0.044282f, 0.069776f, 0.313032f, 0.000457f, 0.017346f, 0.089762f, // 40 - 0.000820f, 0.103986f, 0.367993f, 0.026315f, 0.035701f, 0.299252f, 0.000135f, 0.017825f, // 48 - 0.150119f, 0.000076f, 0.050511f, 0.269601f, 0.026680f, 0.003541f, 0.189765f, 0.000051f, // 56 - 0.004315f, 0.193150f, 0.000032f, 0.007254f, 0.185557f, 0.051526f, 0.000657f, 0.117579f, // 64 - 0.000115f, 0.010179f, 0.293187f, 0.000025f, 0.006505f, 0.175345f, 0.032587f, 0.000469f, // 72 - 0.098443f, 0.000121f, 0.009600f, 0.322782f, 0.000032f, 0.004543f, 0.166860f, 0.044911f, // 80 - 0.000187f, 0.102691f, 0.000242f, 0.005502f, 0.107865f, 0.000191f, 0.005336f, 0.086893f, // 88 - 0.078422f, 0.000345f, 0.079096f, 0.000281f, 0.016388f, 0.214072f, 0.000107f, 0.012027f, // 96 - 0.192754f, 0.049531f, 0.000386f, 0.149893f, 0.000374f, 0.016965f, 0.204781f, 0.000163f, // 104 - 0.016272f, 0.215277f, 0.032298f, 0.000857f, 0.133426f, 0.000614f, 0.020215f, 0.165789f, // 112 - 0.000225f, 0.036951f, 0.262195f, 0.087675f, 0.004596f, 0.147764f, 0.000219f, 0.010502f, // 120 - 0.163394f, 0.000152f, 0.023116f, 0.241702f, 0.081800f, 0.002197f, 0.146637f, 0.000193f, // 128 - 0.012017f, 0.133497f, 0.000375f, 0.028605f, 0.309179f, 0.065962f, 0.005508f, 0.155530f, // 136 - 0.000186f, 0.004540f, 0.079319f, 0.000799f, 0.031003f, 0.303045f, 0.051473f, 0.017770f, // 144 - 0.206188f, 0.000202f, 0.004291f, 0.061095f, 0.001109f, 0.018094f, 0.156639f, 0.026062f, // 152 - 0.005270f, 0.148651f, 0.000026f, 0.007300f, 0.096013f, 0.000383f, 0.022134f, 0.129511f, // 160 - 0.080882f, 0.003416f, 0.129922f, 0.000037f, 0.010040f, 0.130007f, 0.000116f, 0.014904f, // 168 - 0.171423f, 0.082893f, 0.000921f, 0.154976f, 0.000142f, 0.016552f, 0.209696f, 0.000227f, // 176 - 0.022418f, 0.228501f, 0.111712f, 0.001987f, 0.158164f, 0.001200f, 0.027049f, 0.308222f, // 184 - 0.001366f, 0.038146f, 0.287945f, 0.072526f, 0.016064f, 0.257895f, 0.000595f, 0.016962f, // 192 - }, - std::vector{ - 0.006756f, -0.055635f, 0.030843f, 0.007482f, 0.009056f, -0.041824f, 0.119722f, 0.168988f, 0.002822f, - 0.039733f, 0.109005f, 0.245152f, -0.013196f, -0.018222f, -0.170122f, -0.374904f, -0.005455f, -0.034059f, - -0.006787f, 0.072005f, -0.017933f, -0.007358f, 0.034149f, 0.123846f, 0.128319f, 0.016107f, -0.615487f, - -1.235094f, -0.024253f, -0.019406f, 0.134142f, 0.157853f, -0.021119f, 0.007383f, 0.089365f, 0.092854f, - 0.062491f, 0.002366f, 0.122464f, -0.003326f, 0.015468f, -0.034088f, 0.079009f, 0.075483f, 0.011972f, - 0.042427f, 0.106865f, 0.158754f, 0.071211f, -0.034009f, 0.007985f, -0.441477f, 0.009046f, -0.028515f, - 0.095372f, 0.119598f, -0.007553f, -0.0072f, 0.105072f, 0.084314f, 0.23268f, -0.02906f, -0.408454f, - -1.13439f, 0.016202f, -0.037859f, 0.130873f, 0.129652f, 0.002064f, -0.011969f, 0.171623f, 0.050218f, - 0.113831f, 0.028922f, 0.017785f, 0.059708f, 0.037658f, -0.011245f, 0.097197f, 0.137491f, 0.024218f, - 0.04739f, 0.091978f, 0.217333f, 0.088418f, -0.004662f, -0.095168f, -0.397928f, 0.02639f, -0.008501f, - 0.068487f, 0.108465f, 0.020069f, 0.018829f, 0.040206f, 0.068473f, 0.226458f, -0.072871f, -0.672384f, - -1.447558f, 0.039598f, 0.017471f, 0.187288f, 0.08409f, 0.017152f, -0.00516f, 0.183419f, 0.068469f, - 0.063944f, 0.160725f, -0.022493f, -0.132291f, 0.010542f, 0.036318f, 0.074042f, -0.013323f, 0.00808f, - 0.060365f, 0.120566f, 0.21866f, 0.046324f, 0.088741f, 0.029469f, -0.517183f, 0.00917f, 0.011915f, - 0.053674f, 0.140168f, 0.0033f, 0.022759f, -0.006196f, 0.063839f, 0.083726f, -0.088385f, -0.57208f, - -1.454211f, 0.020655f, 0.010788f, 0.134951f, 0.109709f, 0.015445f, -0.015363f, 0.109153f, 0.051209f, - 0.024297f, 0.139126f, -0.12358f, -0.127979f, 0.004587f, 0.004751f, 0.047292f, 0.027066f, 0.011003f, - 0.069887f, 0.117052f, 0.267419f, 0.039306f, 0.077584f, 0.02579f, -0.496149f, -0.005569f, 0.015494f, - -0.011662f, 0.105549f, -0.007015f, 0.031984f, -0.075742f, 0.0852f, 0.023886f, -0.053107f, -0.325533f, - -1.329066f, 0.004688f, 0.034501f, 0.089317f, 0.042463f, 0.004212f, -0.015128f, 0.00892f, 0.028266f, - 0.009997f, 0.157822f, 0.020116f, -0.142337f, 0.008199f, 0.046564f, 0.083014f, 0.046307f, 0.006771f, - 0.084997f, 0.141935f, 0.228339f, -0.020308f, 0.077745f, -0.018319f, -0.522311f, 0.010432f, 0.024641f, - 0.020571f, 0.097148f, 0.002064f, 0.035053f, -0.121995f, 0.012222f, -0.030779f, 0.100481f, -0.331737f, - -1.257669f, -0.013079f, 0.021227f, 0.159949f, 0.120097f, 0.005765f, -0.012335f, -0.005268f, 0.042067f, - -0.043972f, 0.102556f, 0.180494f, -0.084721f, -0.011962f, 0.031302f, 0.112511f, 0.027557f, -0.002085f, - 0.082978f, 0.149409f, 0.195091f, -0.033731f, 0.019861f, -0.064047f, -0.471328f, -0.004093f, 0.016803f, - 0.044635f, 0.058912f, -0.018735f, 0.035536f, -0.050373f, -0.002794f, -0.086705f, 0.038435f, -0.301466f, - -1.071246f, -0.028247f, 0.018984f, 0.254702f, 0.141142f, -0.017522f, 0.014843f, 0.079391f, 0.079662f, - -0.051204f, 0.048419f, 0.235604f, -0.185797f, -0.019569f, 0.02678f, 0.162507f, 0.046435f, -0.004606f, - 0.08806f, 0.18634f, 0.193957f, -0.024333f, -0.01298f, -0.17977f, -0.65881f, -0.003778f, 0.007418f, - 0.065439f, 0.104549f, -0.027706f, 0.03301f, 0.057492f, 0.032019f, -0.135337f, 0.000269f, -0.250203f, - -1.181688f, -0.027022f, -0.006755f, 0.206848f, 0.129268f, -0.003529f, 0.013445f, 0.181484f, 0.139955f, - -0.036587f, 0.065824f, 0.288751f, -0.110813f, -0.015578f, 0.044818f, 0.17756f, 0.006914f, 0.002329f, - 0.068982f, 0.189079f, 0.184253f, 0.00301f, -0.039168f, -0.010855f, -0.393254f, 0.000028f, 0.001906f, - 0.07217f, 0.063305f, -0.026144f, 0.028842f, 0.139149f, 0.023377f, 0.023362f, 0.023559f, -0.145386f, - -0.863572f, -0.015749f, -0.021364f, 0.172571f, 0.078393f, -0.037253f, 0.014978f, 0.221502f, 0.189111f, - -0.048956f, 0.085409f, 0.325399f, -0.058294f, -0.028495f, 0.021663f, 0.19392f, 0.02706f, 0.006908f, - 0.065751f, 0.176395f, 0.138375f, 0.012418f, -0.031228f, -0.008762f, -0.427345f, -0.013677f, -0.002429f, - 0.069655f, 0.019505f, -0.036763f, 0.022528f, 0.201062f, 0.022205f, 0.024528f, 0.06241f, -0.076237f, - -0.840695f, -0.007268f, -0.027865f, 0.211056f, 0.074744f, -0.053563f, 0.006863f, 0.301432f, 0.192879f, - -0.021944f, 0.100535f, 0.19031f, -0.133746f, -0.006151f, 0.023944f, 0.13561f, -0.03259f, 0.000618f, - 0.063736f, 0.180904f, 0.12393f, 0.001275f, -0.0306f, -0.032822f, -0.496515f, 0.009757f, 0.014602f, - 0.004532f, -0.039969f, -0.015984f, 0.047726f, 0.099865f, 0.003163f, 0.026623f, 0.117951f, -0.076234f, - -0.811997f, 0.01301f, 0.020042f, 0.173756f, -0.036191f, -0.068887f, 0.0229f, 0.245465f, 0.214282f, - -0.011054f, 0.132813f, 0.241014f, -0.148763f, - }, - std::vector{ - 0.000000f, 0.000000f, 0.000000f, 349.000000f, 209.000000f, // 0 - 0.000000f, 0.000000f, 0.000000f, 237.625443f, 209.000000f, // 5 - 0.000000f, 140.305511f, 0.000000f, 349.000000f, 209.000000f, // 10 - 0.000000f, 0.000000f, 0.000000f, 349.000000f, 65.359818f, // 15 - 0.000000f, 0.000000f, 0.000000f, 349.000000f, 130.324097f, // 20 - 0.000000f, 0.000000f, 15.562508f, 97.587891f, 181.224182f, // 25 - 0.000000f, 0.000000f, 68.539543f, 250.406708f, 209.000000f, // 30 - 0.000000f, 0.000000f, 0.000000f, 195.881531f, 99.841385f, // 35 - 0.000000f, 0.000000f, 0.000000f, 78.303986f, 209.000000f, // 40 - 0.000000f, 0.000000f, 0.000000f, 0.000000f, 209.000000f, // 45 - }, - std::vector{ - 0.3091790f, - 0.1555300f, - 0.1549760f, - 0.1466370f, - 0.0260620f, - 0.0177700f, - 0.0019870f, - 0.0008570f, - 0.0002190f, - 0.0000000f, - }), + std::vector proposalV4Params{ + ProposalV4Params( + 0.7f, + 16, + 16, + 6000, + 10, // iou_threshold, min_nnox_size, feature_stride,pre_nms_topn, post_nms_topn + 3, + 210, + 350, + 1, // image_shape_num, image_h, image_w, image_z + {0.5f}, // ratios + {32.0f}, // scales + 1, + 1, + 10, + 10, // batch_size, anchor_num, feat_map_height, feat_map_width + IN_ET, + std::vector{ + 0.000240f, 0.003802f, 0.111432f, 0.000503f, 0.007887f, 0.144701f, 0.399074f, 0.004680f, // 0 + 0.139741f, 0.002386f, 0.030003f, 0.276552f, 0.000267f, 0.022971f, 0.287953f, 0.050235f, // 8 + 0.002580f, 0.206311f, 0.000146f, 0.009656f, 0.175462f, 0.000147f, 0.014718f, 0.272348f, // 16 + 0.065199f, 0.003286f, 0.185335f, 0.003720f, 0.025932f, 0.251401f, 0.001465f, 0.090447f, // 24 + 0.488469f, 0.092259f, 0.019306f, 0.379091f, 0.005311f, 0.010369f, 0.087615f, 0.042003f, // 32 + 0.073871f, 0.416763f, 0.044282f, 0.069776f, 0.313032f, 0.000457f, 0.017346f, 0.089762f, // 40 + 0.000820f, 0.103986f, 0.367993f, 0.026315f, 0.035701f, 0.299252f, 0.000135f, 0.017825f, // 48 + 0.150119f, 0.000076f, 0.050511f, 0.269601f, 0.026680f, 0.003541f, 0.189765f, 0.000051f, // 56 + 0.004315f, 0.193150f, 0.000032f, 0.007254f, 0.185557f, 0.051526f, 0.000657f, 0.117579f, // 64 + 0.000115f, 0.010179f, 0.293187f, 0.000025f, 0.006505f, 0.175345f, 0.032587f, 0.000469f, // 72 + 0.098443f, 0.000121f, 0.009600f, 0.322782f, 0.000032f, 0.004543f, 0.166860f, 0.044911f, // 80 + 0.000187f, 0.102691f, 0.000242f, 0.005502f, 0.107865f, 0.000191f, 0.005336f, 0.086893f, // 88 + 0.078422f, 0.000345f, 0.079096f, 0.000281f, 0.016388f, 0.214072f, 0.000107f, 0.012027f, // 96 + 0.192754f, 0.049531f, 0.000386f, 0.149893f, 0.000374f, 0.016965f, 0.204781f, 0.000163f, // 104 + 0.016272f, 0.215277f, 0.032298f, 0.000857f, 0.133426f, 0.000614f, 0.020215f, 0.165789f, // 112 + 0.000225f, 0.036951f, 0.262195f, 0.087675f, 0.004596f, 0.147764f, 0.000219f, 0.010502f, // 120 + 0.163394f, 0.000152f, 0.023116f, 0.241702f, 0.081800f, 0.002197f, 0.146637f, 0.000193f, // 128 + 0.012017f, 0.133497f, 0.000375f, 0.028605f, 0.309179f, 0.065962f, 0.005508f, 0.155530f, // 136 + 0.000186f, 0.004540f, 0.079319f, 0.000799f, 0.031003f, 0.303045f, 0.051473f, 0.017770f, // 144 + 0.206188f, 0.000202f, 0.004291f, 0.061095f, 0.001109f, 0.018094f, 0.156639f, 0.026062f, // 152 + 0.005270f, 0.148651f, 0.000026f, 0.007300f, 0.096013f, 0.000383f, 0.022134f, 0.129511f, // 160 + 0.080882f, 0.003416f, 0.129922f, 0.000037f, 0.010040f, 0.130007f, 0.000116f, 0.014904f, // 168 + 0.171423f, 0.082893f, 0.000921f, 0.154976f, 0.000142f, 0.016552f, 0.209696f, 0.000227f, // 176 + 0.022418f, 0.228501f, 0.111712f, 0.001987f, 0.158164f, 0.001200f, 0.027049f, 0.308222f, // 184 + 0.001366f, 0.038146f, 0.287945f, 0.072526f, 0.016064f, 0.257895f, 0.000595f, 0.016962f, // 192 + }, + std::vector{ + 0.006756f, -0.055635f, 0.030843f, 0.007482f, 0.009056f, -0.041824f, 0.119722f, 0.168988f, + 0.002822f, 0.039733f, 0.109005f, 0.245152f, -0.013196f, -0.018222f, -0.170122f, -0.374904f, + -0.005455f, -0.034059f, -0.006787f, 0.072005f, -0.017933f, -0.007358f, 0.034149f, 0.123846f, + 0.128319f, 0.016107f, -0.615487f, -1.235094f, -0.024253f, -0.019406f, 0.134142f, 0.157853f, + -0.021119f, 0.007383f, 0.089365f, 0.092854f, 0.062491f, 0.002366f, 0.122464f, -0.003326f, + 0.015468f, -0.034088f, 0.079009f, 0.075483f, 0.011972f, 0.042427f, 0.106865f, 0.158754f, + 0.071211f, -0.034009f, 0.007985f, -0.441477f, 0.009046f, -0.028515f, 0.095372f, 0.119598f, + -0.007553f, -0.0072f, 0.105072f, 0.084314f, 0.23268f, -0.02906f, -0.408454f, -1.13439f, + 0.016202f, -0.037859f, 0.130873f, 0.129652f, 0.002064f, -0.011969f, 0.171623f, 0.050218f, + 0.113831f, 0.028922f, 0.017785f, 0.059708f, 0.037658f, -0.011245f, 0.097197f, 0.137491f, + 0.024218f, 0.04739f, 0.091978f, 0.217333f, 0.088418f, -0.004662f, -0.095168f, -0.397928f, + 0.02639f, -0.008501f, 0.068487f, 0.108465f, 0.020069f, 0.018829f, 0.040206f, 0.068473f, + 0.226458f, -0.072871f, -0.672384f, -1.447558f, 0.039598f, 0.017471f, 0.187288f, 0.08409f, + 0.017152f, -0.00516f, 0.183419f, 0.068469f, 0.063944f, 0.160725f, -0.022493f, -0.132291f, + 0.010542f, 0.036318f, 0.074042f, -0.013323f, 0.00808f, 0.060365f, 0.120566f, 0.21866f, + 0.046324f, 0.088741f, 0.029469f, -0.517183f, 0.00917f, 0.011915f, 0.053674f, 0.140168f, + 0.0033f, 0.022759f, -0.006196f, 0.063839f, 0.083726f, -0.088385f, -0.57208f, -1.454211f, + 0.020655f, 0.010788f, 0.134951f, 0.109709f, 0.015445f, -0.015363f, 0.109153f, 0.051209f, + 0.024297f, 0.139126f, -0.12358f, -0.127979f, 0.004587f, 0.004751f, 0.047292f, 0.027066f, + 0.011003f, 0.069887f, 0.117052f, 0.267419f, 0.039306f, 0.077584f, 0.02579f, -0.496149f, + -0.005569f, 0.015494f, -0.011662f, 0.105549f, -0.007015f, 0.031984f, -0.075742f, 0.0852f, + 0.023886f, -0.053107f, -0.325533f, -1.329066f, 0.004688f, 0.034501f, 0.089317f, 0.042463f, + 0.004212f, -0.015128f, 0.00892f, 0.028266f, 0.009997f, 0.157822f, 0.020116f, -0.142337f, + 0.008199f, 0.046564f, 0.083014f, 0.046307f, 0.006771f, 0.084997f, 0.141935f, 0.228339f, + -0.020308f, 0.077745f, -0.018319f, -0.522311f, 0.010432f, 0.024641f, 0.020571f, 0.097148f, + 0.002064f, 0.035053f, -0.121995f, 0.012222f, -0.030779f, 0.100481f, -0.331737f, -1.257669f, + -0.013079f, 0.021227f, 0.159949f, 0.120097f, 0.005765f, -0.012335f, -0.005268f, 0.042067f, + -0.043972f, 0.102556f, 0.180494f, -0.084721f, -0.011962f, 0.031302f, 0.112511f, 0.027557f, + -0.002085f, 0.082978f, 0.149409f, 0.195091f, -0.033731f, 0.019861f, -0.064047f, -0.471328f, + -0.004093f, 0.016803f, 0.044635f, 0.058912f, -0.018735f, 0.035536f, -0.050373f, -0.002794f, + -0.086705f, 0.038435f, -0.301466f, -1.071246f, -0.028247f, 0.018984f, 0.254702f, 0.141142f, + -0.017522f, 0.014843f, 0.079391f, 0.079662f, -0.051204f, 0.048419f, 0.235604f, -0.185797f, + -0.019569f, 0.02678f, 0.162507f, 0.046435f, -0.004606f, 0.08806f, 0.18634f, 0.193957f, + -0.024333f, -0.01298f, -0.17977f, -0.65881f, -0.003778f, 0.007418f, 0.065439f, 0.104549f, + -0.027706f, 0.03301f, 0.057492f, 0.032019f, -0.135337f, 0.000269f, -0.250203f, -1.181688f, + -0.027022f, -0.006755f, 0.206848f, 0.129268f, -0.003529f, 0.013445f, 0.181484f, 0.139955f, + -0.036587f, 0.065824f, 0.288751f, -0.110813f, -0.015578f, 0.044818f, 0.17756f, 0.006914f, + 0.002329f, 0.068982f, 0.189079f, 0.184253f, 0.00301f, -0.039168f, -0.010855f, -0.393254f, + 0.000028f, 0.001906f, 0.07217f, 0.063305f, -0.026144f, 0.028842f, 0.139149f, 0.023377f, + 0.023362f, 0.023559f, -0.145386f, -0.863572f, -0.015749f, -0.021364f, 0.172571f, 0.078393f, + -0.037253f, 0.014978f, 0.221502f, 0.189111f, -0.048956f, 0.085409f, 0.325399f, -0.058294f, + -0.028495f, 0.021663f, 0.19392f, 0.02706f, 0.006908f, 0.065751f, 0.176395f, 0.138375f, + 0.012418f, -0.031228f, -0.008762f, -0.427345f, -0.013677f, -0.002429f, 0.069655f, 0.019505f, + -0.036763f, 0.022528f, 0.201062f, 0.022205f, 0.024528f, 0.06241f, -0.076237f, -0.840695f, + -0.007268f, -0.027865f, 0.211056f, 0.074744f, -0.053563f, 0.006863f, 0.301432f, 0.192879f, + -0.021944f, 0.100535f, 0.19031f, -0.133746f, -0.006151f, 0.023944f, 0.13561f, -0.03259f, + 0.000618f, 0.063736f, 0.180904f, 0.12393f, 0.001275f, -0.0306f, -0.032822f, -0.496515f, + 0.009757f, 0.014602f, 0.004532f, -0.039969f, -0.015984f, 0.047726f, 0.099865f, 0.003163f, + 0.026623f, 0.117951f, -0.076234f, -0.811997f, 0.01301f, 0.020042f, 0.173756f, -0.036191f, + -0.068887f, 0.0229f, 0.245465f, 0.214282f, -0.011054f, 0.132813f, 0.241014f, -0.148763f, + }, + std::vector{ + 0.000000f, 0.000000f, 0.000000f, 349.000000f, 209.000000f, // 0 + 0.000000f, 0.000000f, 0.000000f, 237.625443f, 209.000000f, // 5 + 0.000000f, 140.305511f, 0.000000f, 349.000000f, 209.000000f, // 10 + 0.000000f, 0.000000f, 0.000000f, 349.000000f, 65.359818f, // 15 + 0.000000f, 0.000000f, 0.000000f, 349.000000f, 130.324097f, // 20 + 0.000000f, 0.000000f, 15.562508f, 97.587891f, 181.224182f, // 25 + 0.000000f, 0.000000f, 68.539543f, 250.406708f, 209.000000f, // 30 + 0.000000f, 0.000000f, 0.000000f, 195.881531f, 99.841385f, // 35 + 0.000000f, 0.000000f, 0.000000f, 78.303986f, 209.000000f, // 40 + 0.000000f, 0.000000f, 0.000000f, 0.000000f, 209.000000f, // 45 + }, + std::vector{ + 0.3091790f, + 0.1555300f, + 0.1549760f, + 0.1466370f, + 0.0260620f, + 0.0177700f, + 0.0019870f, + 0.0008570f, + 0.0002190f, + 0.0000000f, + }), }; return proposalV4Params; } std::vector generateProposalV1CombinedParams() { - const std::vector> proposalTypeParams { + const std::vector> proposalTypeParams{ generateProposalV1Params(), generateProposalV1Params(), generateProposalV1Params(), - generateProposalV1Params() - }; + generateProposalV1Params()}; std::vector combinedParams; for (const auto& params : proposalTypeParams) { @@ -460,12 +496,11 @@ std::vector generateProposalV1CombinedParams() { } std::vector generateProposalV4CombinedParams() { - const std::vector> proposalTypeParams { + const std::vector> proposalTypeParams{ generateProposalV4Params(), generateProposalV4Params(), generateProposalV4Params(), - generateProposalV4Params() - }; + generateProposalV4Params()}; std::vector combinedParams; for (const auto& params : proposalTypeParams) { @@ -474,10 +509,14 @@ std::vector generateProposalV4CombinedParams() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_Proposal_With_Hardcoded_Refs, ReferenceProposalV1LayerTest, - testing::ValuesIn(generateProposalV1CombinedParams()), ReferenceProposalV1LayerTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_Proposal_With_Hardcoded_Refs, + ReferenceProposalV1LayerTest, + testing::ValuesIn(generateProposalV1CombinedParams()), + ReferenceProposalV1LayerTest::getTestCaseName); -INSTANTIATE_TEST_SUITE_P(smoke_Proposal_With_Hardcoded_Refs, ReferenceProposalV4LayerTest, - testing::ValuesIn(generateProposalV4CombinedParams()), ReferenceProposalV4LayerTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_Proposal_With_Hardcoded_Refs, + ReferenceProposalV4LayerTest, + testing::ValuesIn(generateProposalV4CombinedParams()), + ReferenceProposalV4LayerTest::getTestCaseName); -} // namespace +} // namespace diff --git a/src/plugins/template/tests/functional/op_reference/psroi_pooling.cpp b/src/plugins/template/tests/functional/op_reference/psroi_pooling.cpp index f6e7596219b..0d7207b5ddc 100644 --- a/src/plugins/template/tests/functional/op_reference/psroi_pooling.cpp +++ b/src/plugins/template/tests/functional/op_reference/psroi_pooling.cpp @@ -2,10 +2,12 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/psroi_pooling.hpp" + #include #include -#include "openvino/op/psroi_pooling.hpp" + #include "base_reference_test.hpp" using namespace reference_tests; @@ -14,11 +16,16 @@ using namespace ov; namespace { struct PSROIPoolingParams { template - PSROIPoolingParams(const size_t num_channels, const size_t group_size, - const size_t spatial_bins_x, const size_t spatial_bins_y, - const size_t num_boxes, const float spatial_scale, const std::string& mode, + PSROIPoolingParams(const size_t num_channels, + const size_t group_size, + const size_t spatial_bins_x, + const size_t spatial_bins_y, + const size_t num_boxes, + const float spatial_scale, + const std::string& mode, const ov::element::Type& iType, - const std::vector& coordsValues, const std::vector& oValues, + const std::vector& coordsValues, + const std::vector& oValues, const std::string& test_name = "") : groupSize(group_size), spatialBinsX(spatial_bins_x), @@ -31,19 +38,19 @@ struct PSROIPoolingParams { coordsData(CreateTensor(iType, coordsValues)), refData(CreateTensor(iType, oValues)), testcaseName(test_name) { - if (mode == "bilinear") - outputDim = num_channels / (spatial_bins_x * spatial_bins_y); - else - outputDim = num_channels / (group_size * group_size); - imageShape = Shape{2, num_channels, 20, 20}; - coordsShape = Shape{num_boxes, 5}; - std::vector imageValues(shape_size(imageShape.get_shape())); - float val = 0; - std::generate(imageValues.begin(), imageValues.end(), [val]() mutable -> float { - return val += 0.1; - }); - imageData = CreateTensor(iType, imageValues); - } + if (mode == "bilinear") + outputDim = num_channels / (spatial_bins_x * spatial_bins_y); + else + outputDim = num_channels / (group_size * group_size); + imageShape = Shape{2, num_channels, 20, 20}; + coordsShape = Shape{num_boxes, 5}; + std::vector imageValues(shape_size(imageShape.get_shape())); + float val = 0; + std::generate(imageValues.begin(), imageValues.end(), [val]() mutable -> float { + return val += 0.1; + }); + imageData = CreateTensor(iType, imageValues); + } size_t groupSize; size_t spatialBinsX; @@ -98,7 +105,7 @@ private: static_cast(params.spatialBinsX), static_cast(params.spatialBinsY), params.mode); - return std::make_shared(NodeVector {PSROIPooling}, ParameterVector {image, coords}); + return std::make_shared(NodeVector{PSROIPooling}, ParameterVector{image, coords}); } }; @@ -110,103 +117,118 @@ template std::vector generatePSROIPoolingFloatParams() { using T = typename element_type_traits::value_type; - std::vector pSROIPoolingParams { - PSROIPoolingParams(8, + std::vector pSROIPoolingParams{ + PSROIPoolingParams( + 8, + 2, + 1, + 1, + 3, + 1, + "average", + IN_ET, + std::vector{// batch_id, x1, y1, x2, y2 + 0, + 1, 2, - 1, - 1, - 3, - 1, - "average", - IN_ET, - std::vector{ - // batch_id, x1, y1, x2, y2 - 0, 1, 2, 4, 6, 1, 0, 3, 10, 4, 0, 10, 7, 11, 13}, - std::vector{ - 6.2499962, 46.44986, 90.249184, 130.44876, 166.25095, 206.45341, 250.25606, 290.45853, - 326.36069, 366.86316, 408.36572, 448.86816, 486.37045, 526.86841, 568.35828, 608.84839, - 18.100033, 58.199684, 104.09898, 144.1996, 178.10167, 218.20412, 264.1069, 304.20935}), - PSROIPoolingParams(8, - 2, - 1, - 1, 4, - 0.2, - "average", - IN_ET, - std::vector{ - // batch_id, x1, y1, x2, y2 - 0, 5, 10, 20, 30, 0, 0, 15, 50, 20, 1, 50, 35, 55, 65, 1, 0, 60, 5, 70}, - std::vector{ - 6.24999619, 46.399868, 90.2491837, 130.398758, 166.250946, 206.403397, 250.256058, 290.408508, - 6.34999657, 46.8498573, 87.3492432, 127.848656, 166.350952, 206.853409, 247.355896, 287.858368, - 338.11142, 378.163879, 424.116669, 464.169128, 498.121185, 538.165649, 584.104431, 624.144653, - 345.111847, 385.164307, 427.116852, 467.169312, 505.121613, 545.16394, 587.103699, 627.143921}), - PSROIPoolingParams(12, - 3, - 2, - 3, - 5, - 1, - "bilinear", - IN_ET, - std::vector{ - 0, 0.1, 0.2, 0.7, 0.4, 1, 0.4, 0.1, 0.9, 0.3, 0, 0.5, 0.7, - 0.7, 0.9, 1, 0.15, 0.3, 0.65, 0.35, 0, 0.0, 0.2, 0.7, 0.8}, - std::vector{ - 210.71394, 210.99896, 211.28398, 211.98065, 212.26567, 212.55066, 213.24738, 213.53239, 213.8174, 250.71545, - 251.00047, 251.28548, 251.98218, 252.2672, 252.5522, 253.2489, 253.53392, 253.81892, 687.40869, 687.64606, - 687.88354, 688.67511, 688.91254, 689.14996, 689.94147, 690.17896, 690.41644, 727.40021, 727.6377, 727.87518, - 728.66669, 728.90405, 729.14154, 729.93292, 730.17041, 730.4079, 230.28471, 230.3797, 230.47472, 231.55144, - 231.64642, 231.74141, 232.81813, 232.91313, 233.00813, 270.28638, 270.38141, 270.47641, 271.5531, 271.64813, - 271.74313, 272.81985, 272.91486, 273.00986, 692.63281, 692.87018, 693.1076, 692.94928, 693.18683, 693.42426, - 693.26593, 693.50342, 693.74078, 732.62402, 732.86139, 733.09888, 732.94049, 733.17804, 733.41547, 733.25714, - 733.49463, 733.73199, 215.63843, 215.97093, 216.30345, 219.43855, 219.77106, 220.10358, 223.23871, 223.57123, - 223.90375, 255.63994, 255.97246, 256.30496, 259.44009, 259.77261, 260.10513, 263.2403, 263.57281, 263.9053}), - PSROIPoolingParams(12, - 4, - 2, - 3, 6, - 0.5, - "bilinear", - IN_ET, - std::vector{ - // batch_id, x1, y1, x2, y2 - 0, 0.1, 0.2, 0.7, 0.4, 0, 0.5, 0.7, 1.2, 1.3, 0, 1.0, 1.3, 1.2, 1.8, - 1, 0.5, 1.1, 0.7, 1.44, 1, 0.2, 1.1, 0.5, 1.2, 1, 0.34, 1.3, 1.15, 1.35}, - std::vector{ - 205.40955, 205.50456, 205.59955, 205.69453, 205.83179, 205.9268, 206.0218, 206.11681, 206.25403, 206.34901, - 206.44403, 206.53905, 206.67627, 206.77126, 206.86627, 206.96129, 245.41107, 245.50606, 245.60106, 245.69604, - 245.8333, 245.9283, 246.02327, 246.1183, 246.25554, 246.35052, 246.44556, 246.54054, 246.67778, 246.77277, - 246.86775, 246.96278, 217.84717, 217.95801, 218.06885, 218.17969, 219.11389, 219.22473, 219.33557, 219.44641, - 220.3806, 220.49144, 220.60228, 220.71312, 221.64732, 221.75816, 221.86897, 221.97981, 257.84872, 257.95956, - 258.0704, 258.18124, 259.11545, 259.22629, 259.33713, 259.44797, 260.38217, 260.49301, 260.60385, 260.71469, - 261.6489, 261.75974, 261.87057, 261.98141, 228.9705, 229.00215, 229.03383, 229.06549, 230.02608, 230.05774, - 230.08943, 230.12109, 231.08168, 231.11334, 231.14502, 231.1767, 232.13728, 232.16895, 232.20062, 232.23228, - 268.97217, 269.00385, 269.03549, 269.06717, 270.02777, 270.05945, 270.09109, 270.12277, 271.08337, 271.11502, - 271.1467, 271.17838, 272.13901, 272.17065, 272.2023, 272.23398, 703.65057, 703.68219, 703.71387, 703.74554, - 704.36816, 704.39984, 704.43146, 704.4632, 705.08575, 705.11749, 705.14911, 705.18085, 705.80347, 705.83514, - 705.86676, 705.89844, 743.64136, 743.67291, 743.70459, 743.73633, 744.35889, 744.39056, 744.42218, 744.45392, - 745.07648, 745.10815, 745.13983, 745.17157, 745.79413, 745.82574, 745.85742, 745.8891, 701.86963, 701.91724, - 701.9646, 702.01221, 702.08081, 702.12823, 702.17578, 702.22321, 702.29181, 702.33936, 702.38678, 702.43433, - 702.50293, 702.55035, 702.5979, 702.64545, 741.86041, 741.90796, 741.95538, 742.00293, 742.07153, 742.11896, - 742.1665, 742.21405, 742.28253, 742.33008, 742.3775, 742.42505, 742.49365, 742.54108, 742.58862, 742.63617, - 705.60645, 705.73468, 705.86298, 705.99115, 705.71198, 705.84027, 705.96844, 706.09668, 705.81757, 705.94574, - 706.07397, 706.20215, 705.9231, 706.05127, 706.1795, 706.3078, 745.59698, 745.72534, 745.85352, 745.98169, - 745.70264, 745.83081, 745.95898, 746.08722, 745.80811, 745.93628, 746.06451, 746.19269, 745.91364, 746.04181, - 746.1701, 746.29834}), + 1, + 0, + 3, + 10, + 4, + 0, + 10, + 7, + 11, + 13}, + std::vector{6.2499962, 46.44986, 90.249184, 130.44876, 166.25095, 206.45341, 250.25606, 290.45853, + 326.36069, 366.86316, 408.36572, 448.86816, 486.37045, 526.86841, 568.35828, 608.84839, + 18.100033, 58.199684, 104.09898, 144.1996, 178.10167, 218.20412, 264.1069, 304.20935}), + PSROIPoolingParams( + 8, + 2, + 1, + 1, + 4, + 0.2, + "average", + IN_ET, + std::vector{// batch_id, x1, y1, x2, y2 + 0, 5, 10, 20, 30, 0, 0, 15, 50, 20, 1, 50, 35, 55, 65, 1, 0, 60, 5, 70}, + std::vector{6.24999619, 46.399868, 90.2491837, 130.398758, 166.250946, 206.403397, 250.256058, + 290.408508, 6.34999657, 46.8498573, 87.3492432, 127.848656, 166.350952, 206.853409, + 247.355896, 287.858368, 338.11142, 378.163879, 424.116669, 464.169128, 498.121185, + 538.165649, 584.104431, 624.144653, 345.111847, 385.164307, 427.116852, 467.169312, + 505.121613, 545.16394, 587.103699, 627.143921}), + PSROIPoolingParams( + 12, + 3, + 2, + 3, + 5, + 1, + "bilinear", + IN_ET, + std::vector{0, 0.1, 0.2, 0.7, 0.4, 1, 0.4, 0.1, 0.9, 0.3, 0, 0.5, 0.7, + 0.7, 0.9, 1, 0.15, 0.3, 0.65, 0.35, 0, 0.0, 0.2, 0.7, 0.8}, + std::vector{ + 210.71394, 210.99896, 211.28398, 211.98065, 212.26567, 212.55066, 213.24738, 213.53239, 213.8174, + 250.71545, 251.00047, 251.28548, 251.98218, 252.2672, 252.5522, 253.2489, 253.53392, 253.81892, + 687.40869, 687.64606, 687.88354, 688.67511, 688.91254, 689.14996, 689.94147, 690.17896, 690.41644, + 727.40021, 727.6377, 727.87518, 728.66669, 728.90405, 729.14154, 729.93292, 730.17041, 730.4079, + 230.28471, 230.3797, 230.47472, 231.55144, 231.64642, 231.74141, 232.81813, 232.91313, 233.00813, + 270.28638, 270.38141, 270.47641, 271.5531, 271.64813, 271.74313, 272.81985, 272.91486, 273.00986, + 692.63281, 692.87018, 693.1076, 692.94928, 693.18683, 693.42426, 693.26593, 693.50342, 693.74078, + 732.62402, 732.86139, 733.09888, 732.94049, 733.17804, 733.41547, 733.25714, 733.49463, 733.73199, + 215.63843, 215.97093, 216.30345, 219.43855, 219.77106, 220.10358, 223.23871, 223.57123, 223.90375, + 255.63994, 255.97246, 256.30496, 259.44009, 259.77261, 260.10513, 263.2403, 263.57281, 263.9053}), + PSROIPoolingParams( + 12, + 4, + 2, + 3, + 6, + 0.5, + "bilinear", + IN_ET, + std::vector{// batch_id, x1, y1, x2, y2 + 0, 0.1, 0.2, 0.7, 0.4, 0, 0.5, 0.7, 1.2, 1.3, 0, 1.0, 1.3, 1.2, 1.8, + 1, 0.5, 1.1, 0.7, 1.44, 1, 0.2, 1.1, 0.5, 1.2, 1, 0.34, 1.3, 1.15, 1.35}, + std::vector{ + 205.40955, 205.50456, 205.59955, 205.69453, 205.83179, 205.9268, 206.0218, 206.11681, 206.25403, + 206.34901, 206.44403, 206.53905, 206.67627, 206.77126, 206.86627, 206.96129, 245.41107, 245.50606, + 245.60106, 245.69604, 245.8333, 245.9283, 246.02327, 246.1183, 246.25554, 246.35052, 246.44556, + 246.54054, 246.67778, 246.77277, 246.86775, 246.96278, 217.84717, 217.95801, 218.06885, 218.17969, + 219.11389, 219.22473, 219.33557, 219.44641, 220.3806, 220.49144, 220.60228, 220.71312, 221.64732, + 221.75816, 221.86897, 221.97981, 257.84872, 257.95956, 258.0704, 258.18124, 259.11545, 259.22629, + 259.33713, 259.44797, 260.38217, 260.49301, 260.60385, 260.71469, 261.6489, 261.75974, 261.87057, + 261.98141, 228.9705, 229.00215, 229.03383, 229.06549, 230.02608, 230.05774, 230.08943, 230.12109, + 231.08168, 231.11334, 231.14502, 231.1767, 232.13728, 232.16895, 232.20062, 232.23228, 268.97217, + 269.00385, 269.03549, 269.06717, 270.02777, 270.05945, 270.09109, 270.12277, 271.08337, 271.11502, + 271.1467, 271.17838, 272.13901, 272.17065, 272.2023, 272.23398, 703.65057, 703.68219, 703.71387, + 703.74554, 704.36816, 704.39984, 704.43146, 704.4632, 705.08575, 705.11749, 705.14911, 705.18085, + 705.80347, 705.83514, 705.86676, 705.89844, 743.64136, 743.67291, 743.70459, 743.73633, 744.35889, + 744.39056, 744.42218, 744.45392, 745.07648, 745.10815, 745.13983, 745.17157, 745.79413, 745.82574, + 745.85742, 745.8891, 701.86963, 701.91724, 701.9646, 702.01221, 702.08081, 702.12823, 702.17578, + 702.22321, 702.29181, 702.33936, 702.38678, 702.43433, 702.50293, 702.55035, 702.5979, 702.64545, + 741.86041, 741.90796, 741.95538, 742.00293, 742.07153, 742.11896, 742.1665, 742.21405, 742.28253, + 742.33008, 742.3775, 742.42505, 742.49365, 742.54108, 742.58862, 742.63617, 705.60645, 705.73468, + 705.86298, 705.99115, 705.71198, 705.84027, 705.96844, 706.09668, 705.81757, 705.94574, 706.07397, + 706.20215, 705.9231, 706.05127, 706.1795, 706.3078, 745.59698, 745.72534, 745.85352, 745.98169, + 745.70264, 745.83081, 745.95898, 746.08722, 745.80811, 745.93628, 746.06451, 746.19269, 745.91364, + 746.04181, 746.1701, 746.29834}), }; return pSROIPoolingParams; } std::vector generatePSROIPoolingCombinedParams() { - const std::vector> pSROIPoolingTypeParams { + const std::vector> pSROIPoolingTypeParams{ generatePSROIPoolingFloatParams(), generatePSROIPoolingFloatParams(), generatePSROIPoolingFloatParams(), - generatePSROIPoolingFloatParams() - }; + generatePSROIPoolingFloatParams()}; std::vector combinedParams; for (const auto& params : pSROIPoolingTypeParams) { @@ -215,7 +237,9 @@ std::vector generatePSROIPoolingCombinedParams() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_PSROIPooling_With_Hardcoded_Refs, ReferencePSROIPoolingLayerTest, - testing::ValuesIn(generatePSROIPoolingCombinedParams()), ReferencePSROIPoolingLayerTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_PSROIPooling_With_Hardcoded_Refs, + ReferencePSROIPoolingLayerTest, + testing::ValuesIn(generatePSROIPoolingCombinedParams()), + ReferencePSROIPoolingLayerTest::getTestCaseName); -} // namespace +} // namespace diff --git a/src/plugins/template/tests/functional/op_reference/random_uniform.cpp b/src/plugins/template/tests/functional/op_reference/random_uniform.cpp index 2ffc8c351e2..9da97ef7c0b 100644 --- a/src/plugins/template/tests/functional/op_reference/random_uniform.cpp +++ b/src/plugins/template/tests/functional/op_reference/random_uniform.cpp @@ -59,22 +59,22 @@ public: private: static std::shared_ptr CreateFunction(const std::vector& out_shape, - const reference_tests::Tensor& min_val, - const reference_tests::Tensor& max_val, - const ov::element::Type& out_type, - int64_t global_seed, - int64_t op_seed) { + const reference_tests::Tensor& min_val, + const reference_tests::Tensor& max_val, + const ov::element::Type& out_type, + int64_t global_seed, + int64_t op_seed) { const auto min_val_param = std::make_shared(min_val.type, min_val.shape); const auto max_val_param = std::make_shared(max_val.type, max_val.shape); auto out_shape_ = std::make_shared(element::i64, Shape{out_shape.size()}, out_shape); return std::make_shared(NodeVector{std::make_shared(out_shape_, - min_val_param, - max_val_param, - out_type, - global_seed, - op_seed)}, - ParameterVector{min_val_param, max_val_param}); + min_val_param, + max_val_param, + out_type, + global_seed, + op_seed)}, + ParameterVector{min_val_param, max_val_param}); } }; @@ -95,13 +95,14 @@ INSTANTIATE_TEST_SUITE_P( element::Type_t::f32, 150, 10, - reference_tests::Tensor{{3, 2, 4}, - element::f32, - std::vector{0.70112360, 0.30539632, 0.93931055, 0.94560349, 0.11694777, - 0.50770056, 0.51971972, 0.22727466, 0.99137402, 0.35519040, - 0.82692313, 0.59864855, 0.31364107, 0.57481313, 0.41399086, - 0.96308255, 0.37140799, 0.85253167, 0.09358585, 0.08200955, - 0.23655081, 0.81056309, 0.74226606, 0.76106691}}, + reference_tests::Tensor{ + {3, 2, 4}, + element::f32, + std::vector{0.70112360, 0.30539632, 0.93931055, 0.94560349, 0.11694777, + 0.50770056, 0.51971972, 0.22727466, 0.99137402, 0.35519040, + 0.82692313, 0.59864855, 0.31364107, 0.57481313, 0.41399086, + 0.96308255, 0.37140799, 0.85253167, 0.09358585, 0.08200955, + 0.23655081, 0.81056309, 0.74226606, 0.76106691}}, "float32_default_min_max"), RandomUniformParams(std::vector{3, 2, 4}, reference_tests::Tensor{{1}, element::f16, std::vector{0}}, @@ -109,13 +110,14 @@ INSTANTIATE_TEST_SUITE_P( element::Type_t::f16, 150, 10, - reference_tests::Tensor{{3, 2, 4}, - element::f16, - std::vector{0.60449219, 0.80664062, 0.83203125, 0.38378906, 0.03613281, - 0.08300781, 0.54394531, 0.83398438, 0.33593750, 0.71972656, - 0.15429688, 0.12890625, 0.34765625, 0.86914062, 0.41308594, - 0.57226562, 0.57421875, 0.93945312, 0.65527344, 0.82226562, - 0.82421875, 0.13281250, 0.64355469, 0.66015625}}, + reference_tests::Tensor{ + {3, 2, 4}, + element::f16, + std::vector{0.60449219, 0.80664062, 0.83203125, 0.38378906, 0.03613281, + 0.08300781, 0.54394531, 0.83398438, 0.33593750, 0.71972656, + 0.15429688, 0.12890625, 0.34765625, 0.86914062, 0.41308594, + 0.57226562, 0.57421875, 0.93945312, 0.65527344, 0.82226562, + 0.82421875, 0.13281250, 0.64355469, 0.66015625}}, "float16_default_min_max"), RandomUniformParams(std::vector{3, 2, 4}, reference_tests::Tensor{{1}, element::f32, std::vector{-650}}, @@ -123,14 +125,15 @@ INSTANTIATE_TEST_SUITE_P( element::Type_t::f32, 150, 10, - reference_tests::Tensor{{3, 2, 4}, - element::f32, - std::vector{121.23596191, -314.06405640, 383.24157715, 390.16381836, - -521.35742188, -91.52935791, -78.30828857, -399.99786377, - 440.51147461, -259.29055786, 259.61541748, 8.51342773, - -304.99481201, -17.70556641, -194.61004639, 409.39074707, - -241.45120239, 287.78485107, -547.05554199, -559.78948975, - -389.79409790, 241.61938477, 166.49267578, 187.17358398}}, + reference_tests::Tensor{ + {3, 2, 4}, + element::f32, + std::vector{121.23596191, -314.06405640, 383.24157715, 390.16381836, + -521.35742188, -91.52935791, -78.30828857, -399.99786377, + 440.51147461, -259.29055786, 259.61541748, 8.51342773, + -304.99481201, -17.70556641, -194.61004639, 409.39074707, + -241.45120239, 287.78485107, -547.05554199, -559.78948975, + -389.79409790, 241.61938477, 166.49267578, 187.17358398}}, "float32_non_default_min_max"), RandomUniformParams(std::vector{3, 2, 4}, reference_tests::Tensor{{1}, element::f16, std::vector{-1.5}}, @@ -138,13 +141,14 @@ INSTANTIATE_TEST_SUITE_P( element::Type_t::f16, 150, 10, - reference_tests::Tensor{{3, 2, 4}, - element::f16, - std::vector{-1.19726562, -1.09667969, -1.08398438, -1.30859375, -1.48242188, - -1.45898438, -1.22851562, -1.08300781, -1.33203125, -1.14062500, - -1.42285156, -1.43554688, -1.32617188, -1.06542969, -1.29296875, - -1.21386719, -1.21289062, -1.03027344, -1.17187500, -1.08886719, - -1.08789062, -1.43359375, -1.17773438, -1.16992188}}, + reference_tests::Tensor{ + {3, 2, 4}, + element::f16, + std::vector{-1.19726562, -1.09667969, -1.08398438, -1.30859375, -1.48242188, + -1.45898438, -1.22851562, -1.08300781, -1.33203125, -1.14062500, + -1.42285156, -1.43554688, -1.32617188, -1.06542969, -1.29296875, + -1.21386719, -1.21289062, -1.03027344, -1.17187500, -1.08886719, + -1.08789062, -1.43359375, -1.17773438, -1.16992188}}, "float16_non_default_min_max"), RandomUniformParams(std::vector{2, 3, 4}, reference_tests::Tensor{{1}, element::i32, std::vector{-100}}, @@ -153,11 +157,11 @@ INSTANTIATE_TEST_SUITE_P( 100, 350, reference_tests::Tensor{{2, 3, 4}, - element::i32, - std::vector{ - 22, -56, -33, -89, -98, -33, -3, -48, -82, 5, -66, 21, - 29, -42, -73, -37, 3, 36, -35, 20, -11, -8, -78, 47, - }}, + element::i32, + std::vector{ + 22, -56, -33, -89, -98, -33, -3, -48, -82, 5, -66, 21, + 29, -42, -73, -37, 3, 36, -35, 20, -11, -8, -78, 47, + }}, "int32"), RandomUniformParams(std::vector{5, 4, 3}, reference_tests::Tensor{{1}, element::i64, std::vector{-2600}}, @@ -165,14 +169,15 @@ INSTANTIATE_TEST_SUITE_P( element::Type_t::i64, 755, 951, - reference_tests::Tensor{{5, 4, 3}, - element::i64, - std::vector{ - 2116, -1581, 2559, -339, -1660, 519, 90, 2027, -210, 3330, 1831, -1737, - 2683, 2661, 3473, 1220, 3534, -2384, 2199, 1935, 499, 2861, 2743, 3223, - -531, -836, -65, 3435, 632, 1765, 2613, 1891, 1698, 3069, 169, -792, - -32, 2976, -1552, -2588, 3327, -1756, 2637, -1084, 3567, -778, -1465, 2967, - 1242, 2672, -1585, -2271, 3536, -1502, 400, 2241, 3126, 908, 1073, -2110}}, + reference_tests::Tensor{ + {5, 4, 3}, + element::i64, + std::vector{ + 2116, -1581, 2559, -339, -1660, 519, 90, 2027, -210, 3330, 1831, -1737, + 2683, 2661, 3473, 1220, 3534, -2384, 2199, 1935, 499, 2861, 2743, 3223, + -531, -836, -65, 3435, 632, 1765, 2613, 1891, 1698, 3069, 169, -792, + -32, 2976, -1552, -2588, 3327, -1756, 2637, -1084, 3567, -778, -1465, 2967, + 1242, 2672, -1585, -2271, 3536, -1502, 400, 2241, 3126, 908, 1073, -2110}}, "int64"), RandomUniformParams(std::vector{7, 3}, reference_tests::Tensor{{1}, element::bf16, std::vector{0}}, @@ -180,12 +185,13 @@ INSTANTIATE_TEST_SUITE_P( element::Type_t::bf16, 4978, 5164, - reference_tests::Tensor{{7, 3}, - element::bf16, - std::vector{0.8984375, 0.84375, 0.1640625, 0.1875, 0.46875, 0.6875, - 0.5234375, 0.3046875, 0.9140625, 0.453125, 0.953125, 0.328125, - 0.359375, 0.1875, 0.9453125, 0.390625, 0.21875, 0.9921875, - 0.8203125, 0.453125, 0.875}}, + reference_tests::Tensor{ + {7, 3}, + element::bf16, + std::vector{0.8984375, 0.84375, 0.1640625, 0.1875, 0.46875, 0.6875, + 0.5234375, 0.3046875, 0.9140625, 0.453125, 0.953125, 0.328125, + 0.359375, 0.1875, 0.9453125, 0.390625, 0.21875, 0.9921875, + 0.8203125, 0.453125, 0.875}}, "bfloat16_default_min_max"), RandomUniformParams(std::vector{7, 3}, reference_tests::Tensor{{1}, element::bf16, std::vector{-150}}, @@ -193,10 +199,11 @@ INSTANTIATE_TEST_SUITE_P( element::Type_t::bf16, 4978, 5164, - reference_tests::Tensor{{7, 3}, - element::bf16, - std::vector{164, 146, -92.5, -84.5, 14, 90, 33, -43.5, 170, 8, 182, - -35, -24, -84.5, 180, -14, -73.5, 198, 138, 8, 156}}, + reference_tests::Tensor{ + {7, 3}, + element::bf16, + std::vector{164, 146, -92.5, -84.5, 14, 90, 33, -43.5, 170, 8, 182, + -35, -24, -84.5, 180, -14, -73.5, 198, 138, 8, 156}}, "bfloat16_non_default_min_max")), ReferenceRandomUniformLayerTest::getTestCaseName); } // namespace reference_tests diff --git a/src/plugins/template/tests/functional/op_reference/range.cpp b/src/plugins/template/tests/functional/op_reference/range.cpp index 392d0154806..1948fcb0919 100644 --- a/src/plugins/template/tests/functional/op_reference/range.cpp +++ b/src/plugins/template/tests/functional/op_reference/range.cpp @@ -2,9 +2,11 @@ // SPDX-License-Identifier: Apache-2.0 // -#include -#include "base_reference_test.hpp" #include "openvino/op/range.hpp" + +#include + +#include "base_reference_test.hpp" #include "openvino/op/constant.hpp" using namespace ov; @@ -104,13 +106,13 @@ public: private: static std::shared_ptr CreateFunction(Shape& ishape, - Shape& oshape, - element::Type& itype, - element::Type& otype, - element::Type& ntype, - float fstart, - float fstop, - float fstep) { + Shape& oshape, + element::Type& itype, + element::Type& otype, + element::Type& ntype, + float fstart, + float fstop, + float fstep) { auto start = CreateConstant(ishape, ntype, fstart); auto stop = CreateConstant(ishape, ntype, fstop); auto step = CreateConstant(ishape, ntype, fstep); @@ -147,13 +149,13 @@ public: private: static std::shared_ptr CreateFunction(Shape& ishape, - Shape& oshape, - element::Type& itype, - element::Type& otype, - element::Type& ntype, - float fstart, - float fstop, - float fstep) { + Shape& oshape, + element::Type& itype, + element::Type& otype, + element::Type& ntype, + float fstart, + float fstop, + float fstep) { auto start = CreateConstant(ishape, ntype, fstart); auto stop = CreateConstant(ishape, ntype, fstop); auto step = CreateConstant(ishape, ntype, fstep); @@ -175,26 +177,8 @@ std::vector generateParamsForRangeV0Int() { using T = typename element_type_traits::value_type; std::vector params{ - RangeParams( - ov::Shape{}, - ov::Shape{4}, - IN_ET, - IN_ET, - IN_ET, - std::vector{-5, -2, 1, 4}, - -5, - 6, - 3), - RangeParams( - ov::Shape{}, - ov::Shape{2}, - IN_ET, - IN_ET, - IN_ET, - std::vector{10, 7}, - 10, - 5, - -3)}; + RangeParams(ov::Shape{}, ov::Shape{4}, IN_ET, IN_ET, IN_ET, std::vector{-5, -2, 1, 4}, -5, 6, 3), + RangeParams(ov::Shape{}, ov::Shape{2}, IN_ET, IN_ET, IN_ET, std::vector{10, 7}, 10, 5, -3)}; return params; } @@ -202,18 +186,15 @@ template std::vector generateParamsForRangeV0UnsignedInt() { using T = typename element_type_traits::value_type; - std::vector params{ - RangeParams( - ov::Shape{}, - ov::Shape{10}, - IN_ET, - IN_ET, - IN_ET, - std::vector{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}, - 0, - 10, - 1) - }; + std::vector params{RangeParams(ov::Shape{}, + ov::Shape{10}, + IN_ET, + IN_ET, + IN_ET, + std::vector{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}, + 0, + 10, + 1)}; return params; } @@ -231,15 +212,7 @@ std::vector generateParamsForRangeV0Float() { 0.0f, 1.0f, 0.25f), - RangeParams(ov::Shape{}, - ov::Shape{}, - IN_ET, - IN_ET, - IN_ET, - std::vector{1.0f, 4.f, 7.f}, - 1.0f, - 10.0f, - 3.0f), + RangeParams(ov::Shape{}, ov::Shape{}, IN_ET, IN_ET, IN_ET, std::vector{1.0f, 4.f, 7.f}, 1.0f, 10.0f, 3.0f), RangeParams(ov::Shape{}, ov::Shape{10}, IN_ET, @@ -266,27 +239,8 @@ std::vector generateParamsForRangeV4Int() { using T = typename element_type_traits::value_type; std::vector params{ - RangeParams( - ov::Shape{}, - ov::Shape{4}, - IN_ET, - IN_ET, - IN_ET, - std::vector{-5, -2, 1, 4}, - -5, - 6, - 3), - RangeParams( - ov::Shape{}, - ov::Shape{2}, - IN_ET, - IN_ET, - IN_ET, - std::vector{10, 7}, - 10, - 5, - -3) - }; + RangeParams(ov::Shape{}, ov::Shape{4}, IN_ET, IN_ET, IN_ET, std::vector{-5, -2, 1, 4}, -5, 6, 3), + RangeParams(ov::Shape{}, ov::Shape{2}, IN_ET, IN_ET, IN_ET, std::vector{10, 7}, 10, 5, -3)}; return params; } @@ -295,28 +249,24 @@ template std::vector generateParamsForRangeV4UnsignedInt() { using T = typename element_type_traits::value_type; - std::vector params{ - RangeParams( - ov::Shape{}, - ov::Shape{10}, - IN_ET, - IN_ET, - element::Type_t::f32, - std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}, - 1.2f, - 11.3f, - 1.6f), - RangeParams( - ov::Shape{}, - ov::Shape{10}, - IN_ET, - IN_ET, - IN_ET, - std::vector{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}, - 0, - 10, - 1) - }; + std::vector params{RangeParams(ov::Shape{}, + ov::Shape{10}, + IN_ET, + IN_ET, + element::Type_t::f32, + std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}, + 1.2f, + 11.3f, + 1.6f), + RangeParams(ov::Shape{}, + ov::Shape{10}, + IN_ET, + IN_ET, + IN_ET, + std::vector{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}, + 0, + 10, + 1)}; return params; } @@ -352,8 +302,7 @@ std::vector generateParamsForRangeV4Float() { std::vector{2.0f, 1.75f, 1.5f, 1.25f, 1.0f, 0.75f, 0.5f, 0.25f}, 2, 0, - -0.25) - }; + -0.25)}; return params; } @@ -404,16 +353,14 @@ std::vector generateCombinedParamsForRangeV4() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P( - smoke_Range_V0_With_Hardcoded_Refs, - ReferenceRangeV0LayerTest, - ::testing::ValuesIn(generateCombinedParamsForRangeV0()), - ReferenceRangeV0LayerTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_Range_V0_With_Hardcoded_Refs, + ReferenceRangeV0LayerTest, + ::testing::ValuesIn(generateCombinedParamsForRangeV0()), + ReferenceRangeV0LayerTest::getTestCaseName); -INSTANTIATE_TEST_SUITE_P( - smoke_Range_V4_With_Hardcoded_Refs, - ReferenceRangeV4LayerTest, - ::testing::ValuesIn(generateCombinedParamsForRangeV4()), - ReferenceRangeV4LayerTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_Range_V4_With_Hardcoded_Refs, + ReferenceRangeV4LayerTest, + ::testing::ValuesIn(generateCombinedParamsForRangeV4()), + ReferenceRangeV4LayerTest::getTestCaseName); } // namespace diff --git a/src/plugins/template/tests/functional/op_reference/rdft.cpp b/src/plugins/template/tests/functional/op_reference/rdft.cpp index 91e247b2891..41bfc9d0645 100644 --- a/src/plugins/template/tests/functional/op_reference/rdft.cpp +++ b/src/plugins/template/tests/functional/op_reference/rdft.cpp @@ -2,11 +2,12 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/rdft.hpp" + #include #include "base_reference_test.hpp" #include "openvino/op/constant.hpp" -#include "openvino/op/rdft.hpp" using namespace reference_tests; using namespace ov; @@ -90,306 +91,262 @@ TEST_P(ReferenceRDFTLayerTest, CompareWithHardcodedRefs) { } static const std::vector input_data = { - 0.10606491, 0.7454715, 0.57231355, 0.4582412, 0.3847059, 0.27398932, 0.66796243, 0.395475, - 0.2815729, 0.7799197, 0.59909415, 0.12294636, 0.38957402, 0.97498834, 0.46759892, 0.14017141, - 0.04206858, 0.7279963, 0.61560553, 0.9027321, 0.6226334, 0.2601217, 0.5555177, 0.40498647, - 0.14175586, 0.57774633, 0.52652127, 0.9385691, 0.9588788, 0.9844318, 0.23095612, 0.09707925, - 0.24574867, 0.6907577, 0.1974319, 0.8295272, 0.34612727, 0.51401484, 0.66115797, 0.9336245, - 0.06690067, 0.7468897, 0.39028263, 0.53575844, 0.060429193, 0.8913558, 0.77787375, 0.6701197, - 0.7350527, 0.6636995, 0.18176624, 0.8629976, 0.45142895, 0.6497297, 0.159372, 0.40598175, - 0.7988516, 0.7291543, 0.07090418, 0.7697132, 0.4972157, 0.7669217, 0.67975855, 0.13026066, - 0.6587437, 0.24532892, 0.24545169, 0.83795583, 0.105490535, 0.7264323, 0.94568557, 0.7216649, - 0.14389831, 0.7930531, 0.70895344, 0.9724701, 0.9775157, 0.49999878, 0.65569246, 0.26876843, - 0.63248956, 0.85201293, 0.5689624, 0.023386303, 0.5546464, 0.36860028, 0.9603114, 0.39123482, - 0.0380728, 0.89212376, 0.14387614, 0.63858676, 0.10003748, 0.8906635, 0.06681054, 0.7458642, - 0.45452347, 0.54724604, 0.6496482, 0.7818356, 0.6608355, 0.77711326, 0.24588613, 0.013456763, - 0.355845, 0.80388206, 0.027993264, 0.73677206, 0.52755004, 0.9052324, 0.54311025, 0.5367805, - 0.4131242, 0.7752338, 0.109669454, 0.13664648, 0.7828739, 0.9083969, 0.5247593, 0.7493595, - 0.19275227, 0.007190853, 0.6087981, 0.344136, 0.46909887, 0.41924855, 0.7072913, 0.19932869, - 0.5303847, 0.651384, 0.06686331, 0.9717932, 0.65702224, 0.11786682, 0.3154073, 0.88923013, - 0.5564087, 0.91047823, 0.28466642, 0.0934668, 0.88953066, 0.9919338, 0.18322521, 0.8185455, - 0.566391, 0.014207997, 0.29673064, 0.6347744, 0.6801958, 0.39601147, 0.34374171, 0.7216888, - 0.6152569, 0.76679546, 0.5860851, 0.4276813, 0.79339284, 0.13130653, 0.68764234, 0.053128112, - 0.02611321, 0.2982243, 0.7618372, 0.3331729, 0.5468192, 0.15707079, 0.28592056, 0.15286565, - 0.9368963, 0.350671, 0.4336494, 0.08934934, 0.41172776, 0.5850259, 0.70730376, 0.8598349, - 0.088788144, 0.26711187, 0.8002491, 0.19422275, 0.8312039, 0.5198718, 0.40111357, 0.98375803, - 0.77703434, 0.037818834, 0.704231, 0.689808, 0.17102319, 0.42153922, 0.7278252, 0.8030207, - 0.9101717, 0.0199644, 0.13768466, 0.55669, 0.17991355, 0.6720098, 0.7733328, 0.20881335}; + 0.10606491, 0.7454715, 0.57231355, 0.4582412, 0.3847059, 0.27398932, 0.66796243, 0.395475, 0.2815729, + 0.7799197, 0.59909415, 0.12294636, 0.38957402, 0.97498834, 0.46759892, 0.14017141, 0.04206858, 0.7279963, + 0.61560553, 0.9027321, 0.6226334, 0.2601217, 0.5555177, 0.40498647, 0.14175586, 0.57774633, 0.52652127, + 0.9385691, 0.9588788, 0.9844318, 0.23095612, 0.09707925, 0.24574867, 0.6907577, 0.1974319, 0.8295272, + 0.34612727, 0.51401484, 0.66115797, 0.9336245, 0.06690067, 0.7468897, 0.39028263, 0.53575844, 0.060429193, + 0.8913558, 0.77787375, 0.6701197, 0.7350527, 0.6636995, 0.18176624, 0.8629976, 0.45142895, 0.6497297, + 0.159372, 0.40598175, 0.7988516, 0.7291543, 0.07090418, 0.7697132, 0.4972157, 0.7669217, 0.67975855, + 0.13026066, 0.6587437, 0.24532892, 0.24545169, 0.83795583, 0.105490535, 0.7264323, 0.94568557, 0.7216649, + 0.14389831, 0.7930531, 0.70895344, 0.9724701, 0.9775157, 0.49999878, 0.65569246, 0.26876843, 0.63248956, + 0.85201293, 0.5689624, 0.023386303, 0.5546464, 0.36860028, 0.9603114, 0.39123482, 0.0380728, 0.89212376, + 0.14387614, 0.63858676, 0.10003748, 0.8906635, 0.06681054, 0.7458642, 0.45452347, 0.54724604, 0.6496482, + 0.7818356, 0.6608355, 0.77711326, 0.24588613, 0.013456763, 0.355845, 0.80388206, 0.027993264, 0.73677206, + 0.52755004, 0.9052324, 0.54311025, 0.5367805, 0.4131242, 0.7752338, 0.109669454, 0.13664648, 0.7828739, + 0.9083969, 0.5247593, 0.7493595, 0.19275227, 0.007190853, 0.6087981, 0.344136, 0.46909887, 0.41924855, + 0.7072913, 0.19932869, 0.5303847, 0.651384, 0.06686331, 0.9717932, 0.65702224, 0.11786682, 0.3154073, + 0.88923013, 0.5564087, 0.91047823, 0.28466642, 0.0934668, 0.88953066, 0.9919338, 0.18322521, 0.8185455, + 0.566391, 0.014207997, 0.29673064, 0.6347744, 0.6801958, 0.39601147, 0.34374171, 0.7216888, 0.6152569, + 0.76679546, 0.5860851, 0.4276813, 0.79339284, 0.13130653, 0.68764234, 0.053128112, 0.02611321, 0.2982243, + 0.7618372, 0.3331729, 0.5468192, 0.15707079, 0.28592056, 0.15286565, 0.9368963, 0.350671, 0.4336494, + 0.08934934, 0.41172776, 0.5850259, 0.70730376, 0.8598349, 0.088788144, 0.26711187, 0.8002491, 0.19422275, + 0.8312039, 0.5198718, 0.40111357, 0.98375803, 0.77703434, 0.037818834, 0.704231, 0.689808, 0.17102319, + 0.42153922, 0.7278252, 0.8030207, 0.9101717, 0.0199644, 0.13768466, 0.55669, 0.17991355, 0.6720098, + 0.7733328, 0.20881335}; static const std::vector expected_rdft1d_results_1 = { - 4.6657147, -1.1622906e-06, 0.21456887, -0.14946258, -0.20476034, -0.37063062, - -0.31414136, 0.5099413, -1.1779613, 0.07057127, -0.64047664, -1.0058284e-07, - 4.982774, -1.1771917e-06, 0.6607505, 0.18829148, -0.9772357, 1.4243596, - 0.8640026, 0.34923682, 0.33401352, 0.25859502, -0.7548928, 8.940697e-08, - 5.9711604, -1.4901161e-06, 0.5638976, 1.5429841, -0.52065414, 0.24638398, - -0.27140495, 0.5040715, 0.5360231, 0.3234269, -0.36054826, 1.7508864e-07, - 4.7464237, -1.2218952e-06, -0.29650804, 0.80609477, -0.161426, 1.0022418, - -0.50812817, 0.7967348, 0.4394225, -0.1588624, -1.3835809, -7.4505806e-08, - 5.53836, -1.7136335e-06, -0.38635445, 0.8284859, -0.23278837, -0.63777345, - -0.93614054, 0.3215857, -0.14075133, -0.67071164, -1.4772836, 2.0861626e-07, - 5.0798974, -1.5944242e-06, 0.056767445, 0.03468219, -0.1497254, -0.9672509, - 0.2603209, 0.69644475, -0.9208536, 0.006730467, -1.7552528, 2.682209e-07, - 4.893558, -1.6242266e-06, 0.6719861, -0.13982919, 0.064845346, -0.39896214, - 0.21785057, -0.5099982, -0.65526295, 1.4383471, -0.52023906, 2.5331974e-07, - 6.687699, -1.5497208e-06, -0.7423769, 0.09968524, 1.052381, -0.21306956, - 0.5875206, -0.3038844, 0.3991575, -1.1895186, 0.17579001, 3.874302e-07, - 5.2818384, -1.1026859e-06, 0.5087582, 0.106959194, 1.1816688, -0.87592727, - 0.03740315, 0.5197907, -1.3198637, 0.6398836, 0.22712436, 2.2351742e-08, - 5.0190897, -1.5646219e-06, -0.087282926, 0.50819266, -0.28002462, 0.29240948, - -0.32303664, 0.38377762, -0.0051696897, -0.99301195, -2.189299, 2.0861626e-07, - 5.0545654, -1.5795231e-06, 0.9146397, 0.83839166, 0.870533, 0.17405808, - -0.56308234, -0.7806684, 0.26397777, 0.6880482, -1.4183462, 2.682209e-07, - 5.479953, -1.2665987e-06, 0.49444157, 0.7534672, -0.76784146, -0.4507342, - 0.88815784, 0.6985409, -0.2727425, -0.25027415, -0.7328796, 2.682209e-07, - 4.1296124, -5.662441e-07, -0.46133032, 0.30635798, -0.18225375, 0.42515472, - -0.5484285, 0.9704039, -0.35255045, 0.17549685, 0.8870368, -3.1292439e-07, - 4.8632016, -1.8924475e-06, -0.6926452, 0.025076404, -0.039108217, -1.7492937, - -0.8120377, -0.85315156, -0.0022608787, 0.45002514, -1.1024668, 3.501773e-07, - 5.4715447, -1.4901161e-06, 1.1176248, -0.2109062, -0.27492502, 0.08983741, - 1.1903813, -1.007312, -0.20150042, -0.83919466, -0.23939973, 4.917383e-07, - 5.1267176, -9.983778e-07, -0.44803134, -0.8066604, -0.3435102, -0.41692197, - -0.22457689, -0.1076939, -0.29129186, -1.1880502, 0.9255183, -1.6391277e-07, - 3.8495903, -5.5134296e-07, 0.09505272, -0.12751618, -1.1264827, 0.5068884, - -1.055237, -0.19516481, -0.34035242, -0.15379356, 1.2655814, -2.6077032e-07, - 4.4372616, -9.23872e-07, -0.72962606, -0.23475963, -0.04278487, 1.1032158, - -0.558924, -0.5300043, 1.0578637, -0.2466627, 0.44617313, -7.8231096e-08, - 5.5374002, -1.4156103e-06, 0.016273111, -0.5989829, -0.19913958, 0.013256833, - 1.8512837, 0.14526272, -0.39700353, -0.07573915, 0.23181, 2.9429793e-07, - 4.989425, -1.4901161e-06, 1.0391837, 0.16554561, -0.22647032, -1.0689808, - -0.84556, -0.82779336, 0.9430445, 0.37618563, 0.4684292, -9.685755e-08}; + 4.6657147, -1.1622906e-06, 0.21456887, -0.14946258, -0.20476034, -0.37063062, -0.31414136, + 0.5099413, -1.1779613, 0.07057127, -0.64047664, -1.0058284e-07, 4.982774, -1.1771917e-06, + 0.6607505, 0.18829148, -0.9772357, 1.4243596, 0.8640026, 0.34923682, 0.33401352, + 0.25859502, -0.7548928, 8.940697e-08, 5.9711604, -1.4901161e-06, 0.5638976, 1.5429841, + -0.52065414, 0.24638398, -0.27140495, 0.5040715, 0.5360231, 0.3234269, -0.36054826, + 1.7508864e-07, 4.7464237, -1.2218952e-06, -0.29650804, 0.80609477, -0.161426, 1.0022418, + -0.50812817, 0.7967348, 0.4394225, -0.1588624, -1.3835809, -7.4505806e-08, 5.53836, + -1.7136335e-06, -0.38635445, 0.8284859, -0.23278837, -0.63777345, -0.93614054, 0.3215857, + -0.14075133, -0.67071164, -1.4772836, 2.0861626e-07, 5.0798974, -1.5944242e-06, 0.056767445, + 0.03468219, -0.1497254, -0.9672509, 0.2603209, 0.69644475, -0.9208536, 0.006730467, + -1.7552528, 2.682209e-07, 4.893558, -1.6242266e-06, 0.6719861, -0.13982919, 0.064845346, + -0.39896214, 0.21785057, -0.5099982, -0.65526295, 1.4383471, -0.52023906, 2.5331974e-07, + 6.687699, -1.5497208e-06, -0.7423769, 0.09968524, 1.052381, -0.21306956, 0.5875206, + -0.3038844, 0.3991575, -1.1895186, 0.17579001, 3.874302e-07, 5.2818384, -1.1026859e-06, + 0.5087582, 0.106959194, 1.1816688, -0.87592727, 0.03740315, 0.5197907, -1.3198637, + 0.6398836, 0.22712436, 2.2351742e-08, 5.0190897, -1.5646219e-06, -0.087282926, 0.50819266, + -0.28002462, 0.29240948, -0.32303664, 0.38377762, -0.0051696897, -0.99301195, -2.189299, + 2.0861626e-07, 5.0545654, -1.5795231e-06, 0.9146397, 0.83839166, 0.870533, 0.17405808, + -0.56308234, -0.7806684, 0.26397777, 0.6880482, -1.4183462, 2.682209e-07, 5.479953, + -1.2665987e-06, 0.49444157, 0.7534672, -0.76784146, -0.4507342, 0.88815784, 0.6985409, + -0.2727425, -0.25027415, -0.7328796, 2.682209e-07, 4.1296124, -5.662441e-07, -0.46133032, + 0.30635798, -0.18225375, 0.42515472, -0.5484285, 0.9704039, -0.35255045, 0.17549685, + 0.8870368, -3.1292439e-07, 4.8632016, -1.8924475e-06, -0.6926452, 0.025076404, -0.039108217, + -1.7492937, -0.8120377, -0.85315156, -0.0022608787, 0.45002514, -1.1024668, 3.501773e-07, + 5.4715447, -1.4901161e-06, 1.1176248, -0.2109062, -0.27492502, 0.08983741, 1.1903813, + -1.007312, -0.20150042, -0.83919466, -0.23939973, 4.917383e-07, 5.1267176, -9.983778e-07, + -0.44803134, -0.8066604, -0.3435102, -0.41692197, -0.22457689, -0.1076939, -0.29129186, + -1.1880502, 0.9255183, -1.6391277e-07, 3.8495903, -5.5134296e-07, 0.09505272, -0.12751618, + -1.1264827, 0.5068884, -1.055237, -0.19516481, -0.34035242, -0.15379356, 1.2655814, + -2.6077032e-07, 4.4372616, -9.23872e-07, -0.72962606, -0.23475963, -0.04278487, 1.1032158, + -0.558924, -0.5300043, 1.0578637, -0.2466627, 0.44617313, -7.8231096e-08, 5.5374002, + -1.4156103e-06, 0.016273111, -0.5989829, -0.19913958, 0.013256833, 1.8512837, 0.14526272, + -0.39700353, -0.07573915, 0.23181, 2.9429793e-07, 4.989425, -1.4901161e-06, 1.0391837, + 0.16554561, -0.22647032, -1.0689808, -0.84556, -0.82779336, 0.9430445, 0.37618563, + 0.4684292, -9.685755e-08}; -static const std::vector expected_rdft1d_results_2 = { - 2.266797, -8.195639e-08, -0.37842733, -0.41015846, -0.48980892, -0.10356337, - 2.5542018, -2.2351742e-08, -0.3223713, 0.671882, 0.54300576, -0.35418037, - 1.985015, -2.2351742e-08, -0.030243821, -0.20105253, 0.59431964, 0.07358998, - 1.4619737, -7.450581e-09, -0.4356845, 0.35701087, 0.28208786, -0.36424285, - 1.8002605, -1.1920929e-07, -0.43280697, -0.56735414, -0.30007166, -0.541847, - 2.3052943, -1.2293458e-07, -0.39316025, -0.5526293, -0.30507135, -0.6021758, - 2.7329001, -6.7055225e-08, 0.28245124, -0.42586988, -0.40586215, 0.4590181, - 3.3132548, -5.9604645e-08, 0.6297612, 0.3694744, 0.077824846, -0.6248544, - 2.6314974, -2.9802322e-08, 0.58795106, -0.60349375, -0.3224758, 0.34408605, - 1.8399743, -9.685755e-08, -0.43963802, -0.079073176, -0.120658875, -1.0880115, - 2.0531366, -4.4703484e-08, 0.80112594, -0.53726834, -0.17560546, -0.026561722, - 2.3779182, -9.685755e-08, -0.21852754, -0.19336401, 0.38734403, -0.5954362, - 1.6219761, 7.450581e-09, -0.43100592, 0.28373614, 0.101898566, 0.52321124, - 2.128953, -1.4901161e-07, -0.1622684, -0.94116735, -0.7350497, 0.12695336, - 3.449626, -8.940697e-08, 0.56062996, -0.031283244, -0.06161648, -0.8543532, - 3.033568, -8.195639e-08, -0.37023768, -0.03989461, -0.28719214, -0.22382751, - 1.9661667, -1.4901161e-08, -0.59863573, -0.015534669, -0.31916466, 0.55380434, - 2.227056, -5.2154064e-08, -0.12656188, 0.6895717, 0.097157195, 0.19840825, - 3.5129817, -2.1234155e-07, 0.11158541, 0.5870459, 0.20993343, -0.40297145, - 2.5986667, 0.0, 0.26602313, -1.1560227, 0.2542065, 0.45556274}; +static const std::vector expected_rdft1d_results_2 = {2.266797, -8.195639e-08, -0.37842733, -0.41015846, + -0.48980892, -0.10356337, 2.5542018, -2.2351742e-08, + -0.3223713, 0.671882, 0.54300576, -0.35418037, + 1.985015, -2.2351742e-08, -0.030243821, -0.20105253, + 0.59431964, 0.07358998, 1.4619737, -7.450581e-09, + -0.4356845, 0.35701087, 0.28208786, -0.36424285, + 1.8002605, -1.1920929e-07, -0.43280697, -0.56735414, + -0.30007166, -0.541847, 2.3052943, -1.2293458e-07, + -0.39316025, -0.5526293, -0.30507135, -0.6021758, + 2.7329001, -6.7055225e-08, 0.28245124, -0.42586988, + -0.40586215, 0.4590181, 3.3132548, -5.9604645e-08, + 0.6297612, 0.3694744, 0.077824846, -0.6248544, + 2.6314974, -2.9802322e-08, 0.58795106, -0.60349375, + -0.3224758, 0.34408605, 1.8399743, -9.685755e-08, + -0.43963802, -0.079073176, -0.120658875, -1.0880115, + 2.0531366, -4.4703484e-08, 0.80112594, -0.53726834, + -0.17560546, -0.026561722, 2.3779182, -9.685755e-08, + -0.21852754, -0.19336401, 0.38734403, -0.5954362, + 1.6219761, 7.450581e-09, -0.43100592, 0.28373614, + 0.101898566, 0.52321124, 2.128953, -1.4901161e-07, + -0.1622684, -0.94116735, -0.7350497, 0.12695336, + 3.449626, -8.940697e-08, 0.56062996, -0.031283244, + -0.06161648, -0.8543532, 3.033568, -8.195639e-08, + -0.37023768, -0.03989461, -0.28719214, -0.22382751, + 1.9661667, -1.4901161e-08, -0.59863573, -0.015534669, + -0.31916466, 0.55380434, 2.227056, -5.2154064e-08, + -0.12656188, 0.6895717, 0.097157195, 0.19840825, + 3.5129817, -2.1234155e-07, 0.11158541, 0.5870459, + 0.20993343, -0.40297145, 2.5986667, 0.0, + 0.26602313, -1.1560227, 0.2542065, 0.45556274}; static const std::vector expected_rdft1d_results_3 = { - 4.665715, -1.6093254e-06, -0.5430559, -0.5752678, -0.37596112, -1.1571281, - -0.46793216, -0.94566363, 0.6854232, -0.3444838, -0.674704, 0.5946392, - -0.64047587, 1.3560057e-06, 4.9827743, -1.7434359e-06, -0.43517, -0.049020194, - -1.4773891, -1.0811031, 1.2506557, 0.5371344, 1.2869358, -0.14998645, - 0.8555907, 0.3693859, -0.7548918, 1.5944242e-06, 5.971161, -1.5199184e-06, - -1.2643411, 0.85635287, -0.1801207, -1.7264944, 0.6412285, -0.4787441, - 0.82227707, 0.65098876, 0.9114491, 0.40323836, -0.36054718, 1.2852252e-06, - 4.7464237, -1.66893e-06, -1.5010594, 0.2253451, -0.87915635, -0.4252541, - 0.4976693, -0.6554581, 0.928985, 0.8035921, 0.6578763, -0.15220329, - -1.3835799, 1.0430813e-06, 5.5383606, -1.4901161e-06, -1.619024, -0.10987502, - 0.20661727, -1.3774645, -0.3057741, -1.0960662, 0.2971667, 0.46700704, - -0.20812088, -0.602368, -1.4772825, 9.3877316e-07, 5.0798974, -1.758337e-06, - -0.7421876, -0.61749315, 0.21938956, -1.3415859, -0.838238, -0.6598083, - 1.0601404, -0.7129184, -0.27083004, 0.31763482, -1.7552516, 1.4677644e-06, - 4.893558, -1.4975667e-06, -0.06445231, -0.55879503, 0.08908144, -1.2869594, - 0.33623943, -0.7704663, -0.047739983, -1.0678453, 0.48350462, 1.5768427, - -0.52023804, 1.1697412e-06, 6.687699, -1.3113022e-06, -1.292419, -1.2920969, - 1.2041754, -0.2943018, 1.1889167, -0.66985166, 1.1336832, -0.13731277, - 0.008011267, -0.9506076, 0.1757915, 1.1026859e-06, 5.2818394, -1.4305115e-06, - -0.25987166, -0.48605326, 0.90237427, -0.8028362, -0.3040653, -1.6981151, - 1.1215456, -0.7120959, -0.4195284, 1.3941492, 0.22712523, 8.046627e-07, - 5.01909, -1.7881393e-06, -1.1856917, -0.10931289, -0.5164983, -0.9724103, - 0.30577338, -0.72837675, 0.89680094, 0.21036407, -0.052024096, -0.9455472, - -2.1892984, 1.4305115e-06, 5.054565, -1.5050173e-06, -0.3471575, 0.40542153, - 0.36438322, -0.9765247, 1.2703501, -1.7359983, -0.1160066, -0.25323528, - 0.9753329, 0.5339062, -1.418345, 9.834766e-07, 5.4799523, -1.7285347e-06, - -0.7905842, 0.093313254, 0.068526804, -1.8504739, -0.01845923, 0.26084417, - 1.5358877, -0.4159652, 0.089752786, 0.089908056, -0.7328786, 1.4007092e-06, - 4.129612, -9.536743e-07, -1.2393575, -0.28046644, -0.58673245, -0.39608067, - -0.12385368, -0.53435826, 0.77853805, 0.7645384, -0.18040559, 0.6678516, - 0.88703763, 8.046627e-07, 4.8632016, -1.0430813e-06, -1.1780663, -1.0952923, - 1.1691413, -1.4023741, -0.546494, -0.92614484, -1.1796933, -0.31762218, - 0.25592417, 0.0959474, -1.1024656, 1.013279e-06, 5.471545, -1.6987324e-06, - 0.35812324, -0.66833705, 0.07725692, -1.6537004, 1.6561611, 0.051166296, - 0.865453, -1.1392289, -0.23588535, -0.5480979, -0.2393986, 1.3411045e-06, - 5.126718, -9.23872e-07, -0.6379836, -1.6675751, 0.013057679, -0.9891113, - 0.20881936, -0.30439606, 0.37222707, 0.25244698, -0.9197892, -0.77782196, - 0.9255192, 1.1101365e-06, 3.8495903, -7.4505806e-07, -0.63088936, -0.4556699, - -1.1905057, -1.2522144, 0.46207082, -0.31992733, -0.4309795, 0.74295896, - -0.6106033, 0.18823686, 1.2655822, 7.748604e-07, 4.4372616, -7.0780516e-07, - -1.1016369, -1.0079124, -0.6083025, -0.0011255145, 1.4406854, -0.2912693, - -0.26610214, 0.87299407, 0.69553405, -0.45576566, 0.44617438, 7.4505806e-07, - 5.5374007, -1.5944242e-06, -0.32642078, -1.3683549, 0.079301864, -0.83741367, - 0.67391664, 0.69433576, 1.6423957, -1.1923066, 0.0334223, 0.37603495, - 0.23181117, 1.4156103e-06, 4.9894247, -7.748604e-07, 0.1788401, -0.39274544, - 0.78422666, -2.1340246, 0.5487572, -0.8765497, -0.7899384, 0.5434137, - 0.91613716, 0.08274247, 0.46843058, 8.34465e-07 -}; + 4.665715, -1.6093254e-06, -0.5430559, -0.5752678, -0.37596112, -1.1571281, -0.46793216, + -0.94566363, 0.6854232, -0.3444838, -0.674704, 0.5946392, -0.64047587, 1.3560057e-06, + 4.9827743, -1.7434359e-06, -0.43517, -0.049020194, -1.4773891, -1.0811031, 1.2506557, + 0.5371344, 1.2869358, -0.14998645, 0.8555907, 0.3693859, -0.7548918, 1.5944242e-06, + 5.971161, -1.5199184e-06, -1.2643411, 0.85635287, -0.1801207, -1.7264944, 0.6412285, + -0.4787441, 0.82227707, 0.65098876, 0.9114491, 0.40323836, -0.36054718, 1.2852252e-06, + 4.7464237, -1.66893e-06, -1.5010594, 0.2253451, -0.87915635, -0.4252541, 0.4976693, + -0.6554581, 0.928985, 0.8035921, 0.6578763, -0.15220329, -1.3835799, 1.0430813e-06, + 5.5383606, -1.4901161e-06, -1.619024, -0.10987502, 0.20661727, -1.3774645, -0.3057741, + -1.0960662, 0.2971667, 0.46700704, -0.20812088, -0.602368, -1.4772825, 9.3877316e-07, + 5.0798974, -1.758337e-06, -0.7421876, -0.61749315, 0.21938956, -1.3415859, -0.838238, + -0.6598083, 1.0601404, -0.7129184, -0.27083004, 0.31763482, -1.7552516, 1.4677644e-06, + 4.893558, -1.4975667e-06, -0.06445231, -0.55879503, 0.08908144, -1.2869594, 0.33623943, + -0.7704663, -0.047739983, -1.0678453, 0.48350462, 1.5768427, -0.52023804, 1.1697412e-06, + 6.687699, -1.3113022e-06, -1.292419, -1.2920969, 1.2041754, -0.2943018, 1.1889167, + -0.66985166, 1.1336832, -0.13731277, 0.008011267, -0.9506076, 0.1757915, 1.1026859e-06, + 5.2818394, -1.4305115e-06, -0.25987166, -0.48605326, 0.90237427, -0.8028362, -0.3040653, + -1.6981151, 1.1215456, -0.7120959, -0.4195284, 1.3941492, 0.22712523, 8.046627e-07, + 5.01909, -1.7881393e-06, -1.1856917, -0.10931289, -0.5164983, -0.9724103, 0.30577338, + -0.72837675, 0.89680094, 0.21036407, -0.052024096, -0.9455472, -2.1892984, 1.4305115e-06, + 5.054565, -1.5050173e-06, -0.3471575, 0.40542153, 0.36438322, -0.9765247, 1.2703501, + -1.7359983, -0.1160066, -0.25323528, 0.9753329, 0.5339062, -1.418345, 9.834766e-07, + 5.4799523, -1.7285347e-06, -0.7905842, 0.093313254, 0.068526804, -1.8504739, -0.01845923, + 0.26084417, 1.5358877, -0.4159652, 0.089752786, 0.089908056, -0.7328786, 1.4007092e-06, + 4.129612, -9.536743e-07, -1.2393575, -0.28046644, -0.58673245, -0.39608067, -0.12385368, + -0.53435826, 0.77853805, 0.7645384, -0.18040559, 0.6678516, 0.88703763, 8.046627e-07, + 4.8632016, -1.0430813e-06, -1.1780663, -1.0952923, 1.1691413, -1.4023741, -0.546494, + -0.92614484, -1.1796933, -0.31762218, 0.25592417, 0.0959474, -1.1024656, 1.013279e-06, + 5.471545, -1.6987324e-06, 0.35812324, -0.66833705, 0.07725692, -1.6537004, 1.6561611, + 0.051166296, 0.865453, -1.1392289, -0.23588535, -0.5480979, -0.2393986, 1.3411045e-06, + 5.126718, -9.23872e-07, -0.6379836, -1.6675751, 0.013057679, -0.9891113, 0.20881936, + -0.30439606, 0.37222707, 0.25244698, -0.9197892, -0.77782196, 0.9255192, 1.1101365e-06, + 3.8495903, -7.4505806e-07, -0.63088936, -0.4556699, -1.1905057, -1.2522144, 0.46207082, + -0.31992733, -0.4309795, 0.74295896, -0.6106033, 0.18823686, 1.2655822, 7.748604e-07, + 4.4372616, -7.0780516e-07, -1.1016369, -1.0079124, -0.6083025, -0.0011255145, 1.4406854, + -0.2912693, -0.26610214, 0.87299407, 0.69553405, -0.45576566, 0.44617438, 7.4505806e-07, + 5.5374007, -1.5944242e-06, -0.32642078, -1.3683549, 0.079301864, -0.83741367, 0.67391664, + 0.69433576, 1.6423957, -1.1923066, 0.0334223, 0.37603495, 0.23181117, 1.4156103e-06, + 4.9894247, -7.748604e-07, 0.1788401, -0.39274544, 0.78422666, -2.1340246, 0.5487572, + -0.8765497, -0.7899384, 0.5434137, 0.91613716, 0.08274247, 0.46843058, 8.34465e-07}; const std::vector expected_rdft2d_results = { - 52.8665, -2.9623508e-05, 1.1642078, 3.826082, -0.22771922, -0.49822173, - -0.3857528, 3.2676966, -2.5112464, -0.27454787, -8.678656, 3.7550926e-06, - -0.818072, 0.8330209, 3.4618711, -0.2419473, 1.7408192, 5.744002, - 1.8477443, 2.039329, 0.3268112, -2.7421296, 0.6809025, 1.7613728, - -2.294264, -0.8984407, -0.2868184, -3.2426705, -0.801461, -0.58971727, - -1.463435, -2.5413132, 0.116907075, -0.5013529, -2.8377397, -2.8455539, - -0.13475686, -1.3145845, -2.2820292, -0.199, -0.056986623, 0.12560216, - -0.589707, -1.7577857, -0.5274223, -1.0395792, 0.53813136, -1.7159984, - 0.22503978, 2.902198, -1.8643543, -1.8789856, 2.1722724, -2.068454, - 0.59446484, 0.6067899, 1.5525781, 1.7612485, 1.1877432, -0.48152098, - -0.16525066, 1.5497208e-06, 1.9815066, 0.55218977, 0.80434155, -3.575598, - -2.1471107, -0.57691807, -3.004384, 3.8775828, 3.1358109, -6.2584877e-07, - 0.22504184, -2.9021916, 1.0378464, 0.9877456, 0.38395065, -1.6089694, - -0.5107449, 1.8621777, -4.960479, -1.8983803, 1.187743, 0.48151842, - -0.1347583, 1.3145843, -0.9968031, -1.3782079, 0.9922035, 1.6614089, - -0.83039653, -0.043888614, 1.9431384, -1.6448143, 0.5381324, 1.7159982, - -2.2942696, 0.8984335, 1.3057998, -0.26607463, -3.2994738, -1.9240448, - 1.4963659, 2.8365738, -4.691832, 1.2995429, -2.8377357, 2.8455553, - -0.8180722, -0.8330165, -1.3755352, 0.34623986, -3.7555497, -0.9723124, - -1.1528367, -0.593254, -0.023679793, 1.8681414, 0.6809023, -1.7613728, - 48.939255, -2.4735928e-05, 1.3455832, 0.11001387, -2.3319814, -1.3735183, - -0.6780232, -2.4875786, 0.40718403, -1.0639579, 0.7314569, -1.2665987e-07, - 0.97006464, -0.30789328, 3.3290033, 2.7749023, -0.7520597, -0.98800826, - 1.3100916, 1.1514524, 1.1085359, 4.348257, -2.839456, 2.4404035, - 0.9518837, 2.1538901, 3.8438358, 2.410589, 3.0649068, 0.95690995, - 2.2213395, 0.66509914, -0.4409917, -0.37408838, -0.6316552, -1.5842111, - -0.72352415, -2.5862057, 0.2678757, 0.610149, 2.9564474, 0.08470708, - -2.0889034, -8.370071, -0.16373271, 2.0413866, -3.3811545, 2.0487003, - 0.0316903, -1.078939, -2.5515578, -0.16135174, -0.17406325, 1.2709827, - -0.67006403, -1.6342779, 0.42163712, 2.1418998, -0.96614444, 1.9175051, - -0.8538456, 2.8014183e-06, 2.0189362, 0.30467552, 0.5074463, 3.7919073, - 2.427857, 0.7526233, -2.4620402, 0.65359443, 0.7219074, -2.3841858e-07, - 0.03169757, 1.0789458, -2.1129081, -1.0250417, 4.8181386, -0.39162922, - -1.2349386, 1.8470186, -0.49495277, -1.5516026, -0.96614635, -1.9175065, - -0.7235237, 2.5862021, 0.677946, 2.0370173, -0.29536027, 0.6505451, - -2.8572361, 2.3176546, 3.4459226, 1.1869265, -3.3811545, -2.048697, - 0.95187366, -2.1538982, 1.808088, -1.1755496, -2.7418838, -1.6770658, - -3.5766084, -2.8320727, -0.02944839, -1.6522555, -0.63165283, 1.5842092, - 0.9700667, 0.30789307, 0.5195943, 2.4985125, 3.6537378, -0.5842519, - -0.4843334, 0.78346854, 0.84766304, 1.1503224, -2.839459, -2.440402}; + 52.8665, -2.9623508e-05, 1.1642078, 3.826082, -0.22771922, -0.49822173, -0.3857528, 3.2676966, + -2.5112464, -0.27454787, -8.678656, 3.7550926e-06, -0.818072, 0.8330209, 3.4618711, -0.2419473, + 1.7408192, 5.744002, 1.8477443, 2.039329, 0.3268112, -2.7421296, 0.6809025, 1.7613728, + -2.294264, -0.8984407, -0.2868184, -3.2426705, -0.801461, -0.58971727, -1.463435, -2.5413132, + 0.116907075, -0.5013529, -2.8377397, -2.8455539, -0.13475686, -1.3145845, -2.2820292, -0.199, + -0.056986623, 0.12560216, -0.589707, -1.7577857, -0.5274223, -1.0395792, 0.53813136, -1.7159984, + 0.22503978, 2.902198, -1.8643543, -1.8789856, 2.1722724, -2.068454, 0.59446484, 0.6067899, + 1.5525781, 1.7612485, 1.1877432, -0.48152098, -0.16525066, 1.5497208e-06, 1.9815066, 0.55218977, + 0.80434155, -3.575598, -2.1471107, -0.57691807, -3.004384, 3.8775828, 3.1358109, -6.2584877e-07, + 0.22504184, -2.9021916, 1.0378464, 0.9877456, 0.38395065, -1.6089694, -0.5107449, 1.8621777, + -4.960479, -1.8983803, 1.187743, 0.48151842, -0.1347583, 1.3145843, -0.9968031, -1.3782079, + 0.9922035, 1.6614089, -0.83039653, -0.043888614, 1.9431384, -1.6448143, 0.5381324, 1.7159982, + -2.2942696, 0.8984335, 1.3057998, -0.26607463, -3.2994738, -1.9240448, 1.4963659, 2.8365738, + -4.691832, 1.2995429, -2.8377357, 2.8455553, -0.8180722, -0.8330165, -1.3755352, 0.34623986, + -3.7555497, -0.9723124, -1.1528367, -0.593254, -0.023679793, 1.8681414, 0.6809023, -1.7613728, + 48.939255, -2.4735928e-05, 1.3455832, 0.11001387, -2.3319814, -1.3735183, -0.6780232, -2.4875786, + 0.40718403, -1.0639579, 0.7314569, -1.2665987e-07, 0.97006464, -0.30789328, 3.3290033, 2.7749023, + -0.7520597, -0.98800826, 1.3100916, 1.1514524, 1.1085359, 4.348257, -2.839456, 2.4404035, + 0.9518837, 2.1538901, 3.8438358, 2.410589, 3.0649068, 0.95690995, 2.2213395, 0.66509914, + -0.4409917, -0.37408838, -0.6316552, -1.5842111, -0.72352415, -2.5862057, 0.2678757, 0.610149, + 2.9564474, 0.08470708, -2.0889034, -8.370071, -0.16373271, 2.0413866, -3.3811545, 2.0487003, + 0.0316903, -1.078939, -2.5515578, -0.16135174, -0.17406325, 1.2709827, -0.67006403, -1.6342779, + 0.42163712, 2.1418998, -0.96614444, 1.9175051, -0.8538456, 2.8014183e-06, 2.0189362, 0.30467552, + 0.5074463, 3.7919073, 2.427857, 0.7526233, -2.4620402, 0.65359443, 0.7219074, -2.3841858e-07, + 0.03169757, 1.0789458, -2.1129081, -1.0250417, 4.8181386, -0.39162922, -1.2349386, 1.8470186, + -0.49495277, -1.5516026, -0.96614635, -1.9175065, -0.7235237, 2.5862021, 0.677946, 2.0370173, + -0.29536027, 0.6505451, -2.8572361, 2.3176546, 3.4459226, 1.1869265, -3.3811545, -2.048697, + 0.95187366, -2.1538982, 1.808088, -1.1755496, -2.7418838, -1.6770658, -3.5766084, -2.8320727, + -0.02944839, -1.6522555, -0.63165283, 1.5842092, 0.9700667, 0.30789307, 0.5195943, 2.4985125, + 3.6537378, -0.5842519, -0.4843334, 0.78346854, 0.84766304, 1.1503224, -2.839459, -2.440402}; const std::vector expected_rdft2d_results_2 = { - 25.904434, -8.46386e-06, -5.3626504, 0.3475349, -2.7060094, -5.767444, - 1.615847, -2.6387978, 4.020789, 1.4271183, 1.5420923, 0.6126925, - -4.6167765, 5.5730343e-06, -0.753784, -0.19148755, 1.4881928, -2.7645326, - -0.39467168, 1.014636, 0.5598, -1.7654291, -0.91835654, -2.3019042, - -0.49356225, -0.8411435, 0.080773115, -1.2883577, -0.5341466, 1.4913602, - -0.30008763, -0.5831754, 1.7365295, 1.821624, -0.08851206, -1.622279, - -0.27249795, -0.834725, -0.6706438, 0.4766277, 0.62642634, 0.5483514, - -0.5341469, -1.4913592, 0.8286207, 0.35826343, -1.0869694, -1.4876881, - -1.6723244, -0.06565219, 0.16255295, 0.5317876, -0.75649667, 1.2447717, - 0.6264261, -0.5483517, -0.7537827, 0.19148779, 0.6306459, -0.23442982, - 0.57131517, -1.366768, -2.7544713, 1.3638397, 0.43463084, -0.5446956, - -2.9949086, 1.4802479, 0.080771565, 1.2883584, 24.998875, -7.390976e-06, - -3.1970425, -1.5453612, 1.0925753, -6.279154, 2.237704, -2.8844912, - 1.8841789, -1.3615136, 0.90471864, 0.8395144, -2.6060505, 4.976988e-06, - 1.1634235, 0.42319643, 2.678257, 2.4692535, 0.34259582, 0.43598562, - 2.748452, 0.88622695, 2.2745323, -2.8840196, 1.8120161, -0.27884078, - -1.5445104, -0.7000726, -1.0264511, -0.7026249, -1.071573, 1.062395, - -0.64628685, -0.36214483, -0.5110928, -1.0534683, -2.786768, 2.6113648, - 0.94799054, 0.53423727, -0.69832724, 2.1821892, -1.0264513, 0.70262754, - -0.41705567, -0.17140968, 1.4991179, 2.9674625, -0.012362838, -3.8260121, - -1.5786235, -0.32526863, 1.2857957, 1.7469958, -0.6983267, -2.1821907, - 1.1634252, -0.42319855, 0.2716269, 0.21222934, -0.46608746, -1.6447732, - 1.8890494, -1.8022469, -0.37335354, 0.69326025, -0.07385725, -0.1723765, - -1.5445105, 0.7000739}; + 25.904434, -8.46386e-06, -5.3626504, 0.3475349, -2.7060094, -5.767444, 1.615847, -2.6387978, + 4.020789, 1.4271183, 1.5420923, 0.6126925, -4.6167765, 5.5730343e-06, -0.753784, -0.19148755, + 1.4881928, -2.7645326, -0.39467168, 1.014636, 0.5598, -1.7654291, -0.91835654, -2.3019042, + -0.49356225, -0.8411435, 0.080773115, -1.2883577, -0.5341466, 1.4913602, -0.30008763, -0.5831754, + 1.7365295, 1.821624, -0.08851206, -1.622279, -0.27249795, -0.834725, -0.6706438, 0.4766277, + 0.62642634, 0.5483514, -0.5341469, -1.4913592, 0.8286207, 0.35826343, -1.0869694, -1.4876881, + -1.6723244, -0.06565219, 0.16255295, 0.5317876, -0.75649667, 1.2447717, 0.6264261, -0.5483517, + -0.7537827, 0.19148779, 0.6306459, -0.23442982, 0.57131517, -1.366768, -2.7544713, 1.3638397, + 0.43463084, -0.5446956, -2.9949086, 1.4802479, 0.080771565, 1.2883584, 24.998875, -7.390976e-06, + -3.1970425, -1.5453612, 1.0925753, -6.279154, 2.237704, -2.8844912, 1.8841789, -1.3615136, + 0.90471864, 0.8395144, -2.6060505, 4.976988e-06, 1.1634235, 0.42319643, 2.678257, 2.4692535, + 0.34259582, 0.43598562, 2.748452, 0.88622695, 2.2745323, -2.8840196, 1.8120161, -0.27884078, + -1.5445104, -0.7000726, -1.0264511, -0.7026249, -1.071573, 1.062395, -0.64628685, -0.36214483, + -0.5110928, -1.0534683, -2.786768, 2.6113648, 0.94799054, 0.53423727, -0.69832724, 2.1821892, + -1.0264513, 0.70262754, -0.41705567, -0.17140968, 1.4991179, 2.9674625, -0.012362838, -3.8260121, + -1.5786235, -0.32526863, 1.2857957, 1.7469958, -0.6983267, -2.1821907, 1.1634252, -0.42319855, + 0.2716269, 0.21222934, -0.46608746, -1.6447732, 1.8890494, -1.8022469, -0.37335354, 0.69326025, + -0.07385725, -0.1723765, -1.5445105, 0.7000739}; const std::vector expected_rdft3d_results = { - 101.805756, -5.2273273e-05, 2.5097876, 3.936094, -2.5597036, -1.8717405, - -1.0637736, 0.7801182, -2.1040666, -1.3385094, -7.9471993, 2.026558e-06, - 0.15199316, 0.52512753, 6.7908745, 2.5329556, 0.98875976, 4.755993, - 3.157838, 3.190782, 1.4353466, 1.6061276, -2.158554, 4.201776, - -1.3423799, 1.2554499, 3.5570183, -0.8320818, 2.263445, 0.36719292, - 0.7579028, -1.8762131, -0.32408538, -0.87544185, -3.4693956, -4.429764, - -0.85828185, -3.9007902, -2.0141544, 0.4111499, 2.8994608, 0.21030927, - -2.6786098, -10.127857, -0.6911557, 1.0018079, -2.8430226, 0.33270124, - 0.25672907, 1.8232578, -4.4159126, -2.040338, 1.9982092, -0.7974717, - -0.07559925, -1.0274884, 1.9742157, 3.9031482, 0.22159882, 1.4359848, - -1.0190966, 3.2186508e-06, 4.0004425, 0.8568655, 1.3117876, 0.2163087, - 0.28074512, 0.17570588, -5.466423, 4.531178, 3.857718, -1.2516975e-06, - 0.2567385, -1.823246, -1.0750613, -0.037295938, 5.20209, -2.0005994, - -1.7456844, 3.7091968, -5.45543, -3.4499822, 0.22159535, -1.4359887, - -0.8582816, 3.9007854, -0.31885874, 0.65880924, 0.6968423, 2.3119528, - -3.6876333, 2.273767, 5.38906, -0.45788872, -2.8430223, -0.33269957, - -1.3423961, -1.2554631, 3.1138885, -1.4416232, -6.0413575, -3.6011095, - -2.080242, 0.0045015216, -4.7212796, -0.3527125, -3.4693892, 4.429763, - 0.15199506, -0.52512354, -0.85594195, 2.8447511, -0.10181111, -1.5565643, - -1.6371696, 0.19021615, 0.8239815, 3.018465, -2.158556, -4.2017746, - 3.9272437, -3.9339066e-06, -0.18137527, 3.7160687, 2.1042633, 0.8752967, - 0.29226887, 5.755277, -2.9184306, 0.78941, -9.410112, 3.0100346e-06, - -1.7881365, 1.140914, 0.13286811, -3.01685, 2.4928799, 6.7320104, - 0.5376528, 0.88787735, -0.78172505, -7.0903873, 3.5203578, -0.6790314, - -3.246148, -3.0523329, -4.1306543, -5.653259, -3.866367, -1.5466263, - -3.6847744, -3.2064118, 0.5578996, -0.12726665, -2.2060838, -1.2613428, - 0.588767, 1.2716217, -2.5499039, -0.8091496, -3.0134337, 0.0408957, - 1.4991964, 6.6122847, -0.36368948, -3.0809648, 3.9192853, -3.764699, - 0.19334978, 3.9811373, 0.68720365, -1.717634, 2.346336, -3.3394372, - 1.2645291, 2.241068, 1.1309403, -0.3806507, 2.1538877, -2.3990266, - 0.6885946, -1.4901161e-06, -0.037429705, 0.24751475, 0.2968948, -7.367506, - -4.574969, -1.329541, -0.5423446, 3.2239883, 2.4139037, 2.9802322e-07, - 0.19334424, -3.9811373, 3.1507545, 2.0127864, -4.4341884, -1.2173393, - 0.72419256, 0.015158802, -4.4655256, -0.34677732, 2.1538897, 2.3990245, - 0.5887663, -1.2716188, -1.6747494, -3.415226, 1.2875631, 1.0108626, - 2.0268395, -2.3615427, -1.502785, -2.8317401, 3.919288, 3.764695, - -3.2461433, 3.0523314, -0.5022881, 0.9094755, -0.55759126, -0.24697942, - 5.0729737, 5.668646, -4.662384, 2.9517999, -2.2060819, 1.2613468, - -1.7881389, -1.1409098, -1.8951292, -2.1522717, -7.4092865, -0.38806117, - -0.6685039, -1.3767233, -0.8713439, 0.71781945, 3.5203605, 0.6790297}; + 101.805756, -5.2273273e-05, 2.5097876, 3.936094, -2.5597036, -1.8717405, -1.0637736, 0.7801182, + -2.1040666, -1.3385094, -7.9471993, 2.026558e-06, 0.15199316, 0.52512753, 6.7908745, 2.5329556, + 0.98875976, 4.755993, 3.157838, 3.190782, 1.4353466, 1.6061276, -2.158554, 4.201776, + -1.3423799, 1.2554499, 3.5570183, -0.8320818, 2.263445, 0.36719292, 0.7579028, -1.8762131, + -0.32408538, -0.87544185, -3.4693956, -4.429764, -0.85828185, -3.9007902, -2.0141544, 0.4111499, + 2.8994608, 0.21030927, -2.6786098, -10.127857, -0.6911557, 1.0018079, -2.8430226, 0.33270124, + 0.25672907, 1.8232578, -4.4159126, -2.040338, 1.9982092, -0.7974717, -0.07559925, -1.0274884, + 1.9742157, 3.9031482, 0.22159882, 1.4359848, -1.0190966, 3.2186508e-06, 4.0004425, 0.8568655, + 1.3117876, 0.2163087, 0.28074512, 0.17570588, -5.466423, 4.531178, 3.857718, -1.2516975e-06, + 0.2567385, -1.823246, -1.0750613, -0.037295938, 5.20209, -2.0005994, -1.7456844, 3.7091968, + -5.45543, -3.4499822, 0.22159535, -1.4359887, -0.8582816, 3.9007854, -0.31885874, 0.65880924, + 0.6968423, 2.3119528, -3.6876333, 2.273767, 5.38906, -0.45788872, -2.8430223, -0.33269957, + -1.3423961, -1.2554631, 3.1138885, -1.4416232, -6.0413575, -3.6011095, -2.080242, 0.0045015216, + -4.7212796, -0.3527125, -3.4693892, 4.429763, 0.15199506, -0.52512354, -0.85594195, 2.8447511, + -0.10181111, -1.5565643, -1.6371696, 0.19021615, 0.8239815, 3.018465, -2.158556, -4.2017746, + 3.9272437, -3.9339066e-06, -0.18137527, 3.7160687, 2.1042633, 0.8752967, 0.29226887, 5.755277, + -2.9184306, 0.78941, -9.410112, 3.0100346e-06, -1.7881365, 1.140914, 0.13286811, -3.01685, + 2.4928799, 6.7320104, 0.5376528, 0.88787735, -0.78172505, -7.0903873, 3.5203578, -0.6790314, + -3.246148, -3.0523329, -4.1306543, -5.653259, -3.866367, -1.5466263, -3.6847744, -3.2064118, + 0.5578996, -0.12726665, -2.2060838, -1.2613428, 0.588767, 1.2716217, -2.5499039, -0.8091496, + -3.0134337, 0.0408957, 1.4991964, 6.6122847, -0.36368948, -3.0809648, 3.9192853, -3.764699, + 0.19334978, 3.9811373, 0.68720365, -1.717634, 2.346336, -3.3394372, 1.2645291, 2.241068, + 1.1309403, -0.3806507, 2.1538877, -2.3990266, 0.6885946, -1.4901161e-06, -0.037429705, 0.24751475, + 0.2968948, -7.367506, -4.574969, -1.329541, -0.5423446, 3.2239883, 2.4139037, 2.9802322e-07, + 0.19334424, -3.9811373, 3.1507545, 2.0127864, -4.4341884, -1.2173393, 0.72419256, 0.015158802, + -4.4655256, -0.34677732, 2.1538897, 2.3990245, 0.5887663, -1.2716188, -1.6747494, -3.415226, + 1.2875631, 1.0108626, 2.0268395, -2.3615427, -1.502785, -2.8317401, 3.919288, 3.764695, + -3.2461433, 3.0523314, -0.5022881, 0.9094755, -0.55759126, -0.24697942, 5.0729737, 5.668646, + -4.662384, 2.9517999, -2.2060819, 1.2613468, -1.7881389, -1.1409098, -1.8951292, -2.1522717, + -7.4092865, -0.38806117, -0.6685039, -1.3767233, -0.8713439, 0.71781945, 3.5203605, 0.6790297}; const std::vector expected_rdft3d_results_2 = { - 50.90331, -1.4543533e-05, -8.559692, -1.1978266, -1.6134334, -12.046599, - 3.8535514, -5.5232873, 5.9049683, 0.065603495, 2.4468107, 1.4522064, - -7.222825, 1.2278557e-05, 0.40963984, 0.231709, 4.16645, -0.29528028, - -0.052075505, 1.450621, 3.3082519, -0.8792013, 1.356175, -5.1859245, - 1.3184534, -1.1199851, -1.4637363, -1.9884299, -1.5605974, 0.7887349, - -1.3716602, 0.47921878, 1.0902424, 1.4594792, -0.59960556, -2.6757474, - -3.0592656, 1.7766399, 0.27734682, 1.0108652, -0.07190053, 2.7305403, - -1.5605986, -0.78873086, 0.41156515, 0.18685403, 0.4121489, 1.4797752, - -1.6846865, -3.8916636, -1.4160703, 0.20651829, 0.52929974, 2.9917672, - -0.07190076, -2.7305427, 0.4096415, -0.23171037, 0.9022726, -0.022200808, - 0.10522783, -3.0115416, -0.8654218, -0.4384073, 0.061277367, 0.14856634, - -3.0687659, 1.3078697, -1.4637384, 1.9884316, 25.904425, -24.998884, - -6.9080105, 3.5445771, -8.985163, -6.860018, -1.2686447, -4.8765025, - 2.6592734, -0.45706248, 2.3816066, -0.29202732, -4.6167727, 2.6060565, - -0.33058774, -1.3549114, 3.9574459, -5.44279, 0.041313916, 0.67204094, - 1.446027, -4.5138807, -3.8023772, -4.576436, -0.7724026, -2.6531591, - -0.6192993, 0.25615194, -1.2367722, 2.5178113, 0.7623075, 0.48839718, - 1.3743844, 2.4679115, -1.1419809, -1.1111865, 2.3388672, 1.9520425, - -0.13640736, -0.47136223, 2.8086162, 1.2466785, 0.16848034, -0.46490768, - 0.6572111, 0.7753189, 1.8804929, -2.9868064, -5.498336, -0.053289652, - -0.16271627, 2.1104114, 0.9904991, -0.041024223, -1.5557647, 0.14997506, - -1.1769819, -0.9719368, 0.8428756, -0.5060569, -1.0734584, -0.9006812, - -4.556718, -0.5252099, 1.1278908, -0.17134166, -3.1672862, 1.5541049, - 0.78084624, 2.8328683, 0.90555733, -1.3709068e-06, -2.1656086, 1.8928962, - -3.7985847, 0.511709, -0.62185717, 0.24569236, 2.1366088, 2.7886305, - 0.6373716, -0.2268233, -2.0107267, 5.662441e-07, -1.9172084, -0.6146841, - -1.1900643, -5.233785, -0.73726743, 0.5786506, -2.188651, -2.6516552, - -3.1928902, 0.58211625, -2.305578, -0.5623034, 1.6252834, -0.58828497, - 0.49230486, 2.1939852, 0.7714851, -1.6455705, 2.382816, 2.1837692, - 0.4225806, -0.56881106, 2.514269, -3.4460905, -1.618634, -0.057608932, - 1.3247533, -1.6338379, 0.49230492, -2.1939862, 1.2456759, 0.5296728, - -2.5860875, -4.45515, -1.659962, 3.7603593, 1.7411764, 0.8570565, - -2.0422916, -0.50222373, 1.3247528, 1.633839, -1.9172082, 0.6146865, - 0.35901868, -0.44665974, 1.0374024, 0.27800465, -4.6435204, 3.1660864, - 0.8079842, -1.2379556, -2.921052, 1.6526239, 1.6252828, 0.588284, - 25.90444, 24.998867, -3.817289, -2.8495073, 3.573144, -4.6748676, - 4.500339, -0.40109348, 5.382302, 3.3112957, 0.7025763, 1.5174108, - -4.616783, -2.6060438, -1.1769816, 0.97193646, -0.9810596, -0.086276084, - -0.83065766, 1.3572321, -0.3264265, 0.9830234, 1.9656628, -0.027371943, - -0.2147214, 0.9708719, 0.7808455, -2.8328671, 0.16847888, 0.46490908, - -1.3624828, -1.6547482, 2.0986745, 1.1753378, 0.9649557, -2.1333718, - -2.8838634, -3.6214924, -1.2048804, 1.4246187, -1.5557631, -0.14997569, - -1.2367743, -2.5178103, 1.0000296, -0.05879204, -4.0544314, 0.01142931, - 2.153687, -0.078014135, 0.4878212, -1.0468364, -2.503492, 2.5305676, - 2.808617, -1.2466786, -0.33058444, 1.3549128, 0.41841656, 0.03719666, - 2.216088, -1.8328552, -0.95222485, 3.2528882, -0.25863037, -0.91804826, - -2.822532, 1.4063904, -0.6193025, -0.25615215}; + 50.90331, -1.4543533e-05, -8.559692, -1.1978266, -1.6134334, -12.046599, 3.8535514, -5.5232873, + 5.9049683, 0.065603495, 2.4468107, 1.4522064, -7.222825, 1.2278557e-05, 0.40963984, 0.231709, + 4.16645, -0.29528028, -0.052075505, 1.450621, 3.3082519, -0.8792013, 1.356175, -5.1859245, + 1.3184534, -1.1199851, -1.4637363, -1.9884299, -1.5605974, 0.7887349, -1.3716602, 0.47921878, + 1.0902424, 1.4594792, -0.59960556, -2.6757474, -3.0592656, 1.7766399, 0.27734682, 1.0108652, + -0.07190053, 2.7305403, -1.5605986, -0.78873086, 0.41156515, 0.18685403, 0.4121489, 1.4797752, + -1.6846865, -3.8916636, -1.4160703, 0.20651829, 0.52929974, 2.9917672, -0.07190076, -2.7305427, + 0.4096415, -0.23171037, 0.9022726, -0.022200808, 0.10522783, -3.0115416, -0.8654218, -0.4384073, + 0.061277367, 0.14856634, -3.0687659, 1.3078697, -1.4637384, 1.9884316, 25.904425, -24.998884, + -6.9080105, 3.5445771, -8.985163, -6.860018, -1.2686447, -4.8765025, 2.6592734, -0.45706248, + 2.3816066, -0.29202732, -4.6167727, 2.6060565, -0.33058774, -1.3549114, 3.9574459, -5.44279, + 0.041313916, 0.67204094, 1.446027, -4.5138807, -3.8023772, -4.576436, -0.7724026, -2.6531591, + -0.6192993, 0.25615194, -1.2367722, 2.5178113, 0.7623075, 0.48839718, 1.3743844, 2.4679115, + -1.1419809, -1.1111865, 2.3388672, 1.9520425, -0.13640736, -0.47136223, 2.8086162, 1.2466785, + 0.16848034, -0.46490768, 0.6572111, 0.7753189, 1.8804929, -2.9868064, -5.498336, -0.053289652, + -0.16271627, 2.1104114, 0.9904991, -0.041024223, -1.5557647, 0.14997506, -1.1769819, -0.9719368, + 0.8428756, -0.5060569, -1.0734584, -0.9006812, -4.556718, -0.5252099, 1.1278908, -0.17134166, + -3.1672862, 1.5541049, 0.78084624, 2.8328683, 0.90555733, -1.3709068e-06, -2.1656086, 1.8928962, + -3.7985847, 0.511709, -0.62185717, 0.24569236, 2.1366088, 2.7886305, 0.6373716, -0.2268233, + -2.0107267, 5.662441e-07, -1.9172084, -0.6146841, -1.1900643, -5.233785, -0.73726743, 0.5786506, + -2.188651, -2.6516552, -3.1928902, 0.58211625, -2.305578, -0.5623034, 1.6252834, -0.58828497, + 0.49230486, 2.1939852, 0.7714851, -1.6455705, 2.382816, 2.1837692, 0.4225806, -0.56881106, + 2.514269, -3.4460905, -1.618634, -0.057608932, 1.3247533, -1.6338379, 0.49230492, -2.1939862, + 1.2456759, 0.5296728, -2.5860875, -4.45515, -1.659962, 3.7603593, 1.7411764, 0.8570565, + -2.0422916, -0.50222373, 1.3247528, 1.633839, -1.9172082, 0.6146865, 0.35901868, -0.44665974, + 1.0374024, 0.27800465, -4.6435204, 3.1660864, 0.8079842, -1.2379556, -2.921052, 1.6526239, + 1.6252828, 0.588284, 25.90444, 24.998867, -3.817289, -2.8495073, 3.573144, -4.6748676, + 4.500339, -0.40109348, 5.382302, 3.3112957, 0.7025763, 1.5174108, -4.616783, -2.6060438, + -1.1769816, 0.97193646, -0.9810596, -0.086276084, -0.83065766, 1.3572321, -0.3264265, 0.9830234, + 1.9656628, -0.027371943, -0.2147214, 0.9708719, 0.7808455, -2.8328671, 0.16847888, 0.46490908, + -1.3624828, -1.6547482, 2.0986745, 1.1753378, 0.9649557, -2.1333718, -2.8838634, -3.6214924, + -1.2048804, 1.4246187, -1.5557631, -0.14997569, -1.2367743, -2.5178103, 1.0000296, -0.05879204, + -4.0544314, 0.01142931, 2.153687, -0.078014135, 0.4878212, -1.0468364, -2.503492, 2.5305676, + 2.808617, -1.2466786, -0.33058444, 1.3549128, 0.41841656, 0.03719666, 2.216088, -1.8328552, + -0.95222485, 3.2528882, -0.25863037, -0.91804826, -2.822532, 1.4063904, -0.6193025, -0.25615215}; -template +template static std::vector convert(const std::vector& v) { if (v.empty()) { return std::vector(); @@ -683,9 +640,7 @@ std::vector generateParamsForRDFT() { } std::vector generateCombinedParamsForRDFT() { - const std::vector> allTypeParams{ - generateParamsForRDFT() - }; + const std::vector> allTypeParams{generateParamsForRDFT()}; std::vector combinedParams; @@ -696,9 +651,8 @@ std::vector generateCombinedParamsForRDFT() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P( - smoke_RDFT_With_Hardcoded_Refs, - ReferenceRDFTLayerTest, - ::testing::ValuesIn(generateCombinedParamsForRDFT()), - ReferenceRDFTLayerTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_RDFT_With_Hardcoded_Refs, + ReferenceRDFTLayerTest, + ::testing::ValuesIn(generateCombinedParamsForRDFT()), + ReferenceRDFTLayerTest::getTestCaseName); } // namespace diff --git a/src/plugins/template/tests/functional/op_reference/reduce_l1.cpp b/src/plugins/template/tests/functional/op_reference/reduce_l1.cpp index 63802601ad0..679074176e4 100644 --- a/src/plugins/template/tests/functional/op_reference/reduce_l1.cpp +++ b/src/plugins/template/tests/functional/op_reference/reduce_l1.cpp @@ -2,9 +2,10 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/reduce_l1.hpp" + #include -#include "openvino/op/reduce_l1.hpp" #include "reduction.hpp" using namespace ov; @@ -16,17 +17,19 @@ namespace { template std::vector generateReductionParams(const bool keep_dims) { using T = typename element_type_traits::value_type; - std::vector params = { - ReductionParams(ReductionType::L1, keep_dims, std::vector{2}, - reference_tests::Tensor({3, 2, 2}, element::Type(IN_ET), std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}), - reference_tests::Tensor(reduce(Shape{3, 2, 2}, AxisSet{2}, keep_dims), - element::Type(IN_ET), std::vector{3, 7, 11, 15, 19, 23})) - }; + std::vector params = {ReductionParams( + ReductionType::L1, + keep_dims, + std::vector{2}, + reference_tests::Tensor({3, 2, 2}, element::Type(IN_ET), std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}), + reference_tests::Tensor(reduce(Shape{3, 2, 2}, AxisSet{2}, keep_dims), + element::Type(IN_ET), + std::vector{3, 7, 11, 15, 19, 23}))}; return params; } std::vector generateReductionCombinedParams() { - const std::vector> reductionTypeParams { + const std::vector> reductionTypeParams{ generateReductionParams(true), generateReductionParams(false), generateReductionParams(true), @@ -36,16 +39,17 @@ std::vector generateReductionCombinedParams() { generateReductionParams(true), generateReductionParams(false), generateReductionParams(true), - generateReductionParams(false) - }; + generateReductionParams(false)}; std::vector combinedParams; std::for_each(reductionTypeParams.begin(), reductionTypeParams.end(), [&](std::vector params) { combinedParams.insert(combinedParams.end(), params.begin(), params.end()); }); return combinedParams; } -} // namespace -INSTANTIATE_TEST_SUITE_P(smoke_Reduction_With_Hardcoded_Refs, ReferenceReductionLayerTest, ::testing::ValuesIn(generateReductionCombinedParams()), +} // namespace +INSTANTIATE_TEST_SUITE_P(smoke_Reduction_With_Hardcoded_Refs, + ReferenceReductionLayerTest, + ::testing::ValuesIn(generateReductionCombinedParams()), ReferenceReductionLayerTest::getTestCaseName); -} // namespace ReductionOpsRefTestDefinitions -} // namespace reference_tests +} // namespace ReductionOpsRefTestDefinitions +} // namespace reference_tests diff --git a/src/plugins/template/tests/functional/op_reference/reduce_l2.cpp b/src/plugins/template/tests/functional/op_reference/reduce_l2.cpp index a0e7439c661..8649400d975 100644 --- a/src/plugins/template/tests/functional/op_reference/reduce_l2.cpp +++ b/src/plugins/template/tests/functional/op_reference/reduce_l2.cpp @@ -2,9 +2,10 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/reduce_l2.hpp" + #include -#include "openvino/op/reduce_l2.hpp" #include "reduction.hpp" using namespace ov; @@ -14,32 +15,41 @@ namespace ReductionOpsRefTestDefinitions { namespace { template ::value_type>::value, bool>::type = true> + typename std::enable_if::value_type>::value, + bool>::type = true> std::vector generateReductionParams(const bool keep_dims) { using T = typename element_type_traits::value_type; - std::vector params = { - ReductionParams(ReductionType::L2, keep_dims, std::vector{2}, - reference_tests::Tensor({3, 2, 2}, element::Type(IN_ET), std::vector{1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0}), - reference_tests::Tensor(reduce(Shape{3, 2, 2}, AxisSet{2}, keep_dims), - element::Type(IN_ET), std::vector{2.23606798, 5.0, 7.81024968, 10.63014581, 13.45362405, 16.2788206})) - }; + std::vector params = {ReductionParams( + ReductionType::L2, + keep_dims, + std::vector{2}, + reference_tests::Tensor({3, 2, 2}, + element::Type(IN_ET), + std::vector{1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0}), + reference_tests::Tensor(reduce(Shape{3, 2, 2}, AxisSet{2}, keep_dims), + element::Type(IN_ET), + std::vector{2.23606798, 5.0, 7.81024968, 10.63014581, 13.45362405, 16.2788206}))}; return params; } template ::value_type>::value, bool>::type = true> + typename std::enable_if::value_type>::value, + bool>::type = true> std::vector generateReductionParams(const bool keep_dims) { using T = typename element_type_traits::value_type; - std::vector params = { - ReductionParams(ReductionType::L2, keep_dims, std::vector{2}, - reference_tests::Tensor({3, 2, 2}, element::Type(IN_ET), std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}), - reference_tests::Tensor(reduce(Shape{3, 2, 2}, AxisSet{2}, keep_dims), element::Type(IN_ET), std::vector{2, 5, 8, 11, 13, 16})) - }; + std::vector params = {ReductionParams( + ReductionType::L2, + keep_dims, + std::vector{2}, + reference_tests::Tensor({3, 2, 2}, element::Type(IN_ET), std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}), + reference_tests::Tensor(reduce(Shape{3, 2, 2}, AxisSet{2}, keep_dims), + element::Type(IN_ET), + std::vector{2, 5, 8, 11, 13, 16}))}; return params; } std::vector generateReductionCombinedParams() { - const std::vector> reductionTypeParams { + const std::vector> reductionTypeParams{ generateReductionParams(true), generateReductionParams(false), generateReductionParams(true), @@ -49,8 +59,7 @@ std::vector generateReductionCombinedParams() { generateReductionParams(true), generateReductionParams(false), generateReductionParams(true), - generateReductionParams(false) - }; + generateReductionParams(false)}; std::vector combinedParams; std::for_each(reductionTypeParams.begin(), reductionTypeParams.end(), [&](std::vector params) { combinedParams.insert(combinedParams.end(), params.begin(), params.end()); @@ -58,8 +67,10 @@ std::vector generateReductionCombinedParams() { return combinedParams; } -} // namespace -INSTANTIATE_TEST_SUITE_P(smoke_Reduction_With_Hardcoded_Refs, ReferenceReductionLayerTest, ::testing::ValuesIn(generateReductionCombinedParams()), +} // namespace +INSTANTIATE_TEST_SUITE_P(smoke_Reduction_With_Hardcoded_Refs, + ReferenceReductionLayerTest, + ::testing::ValuesIn(generateReductionCombinedParams()), ReferenceReductionLayerTest::getTestCaseName); -} // namespace ReductionOpsRefTestDefinitions -} // namespace reference_tests +} // namespace ReductionOpsRefTestDefinitions +} // namespace reference_tests diff --git a/src/plugins/template/tests/functional/op_reference/reduce_max.cpp b/src/plugins/template/tests/functional/op_reference/reduce_max.cpp index 97233a73e9e..4d2011f1083 100644 --- a/src/plugins/template/tests/functional/op_reference/reduce_max.cpp +++ b/src/plugins/template/tests/functional/op_reference/reduce_max.cpp @@ -2,9 +2,10 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/reduce_max.hpp" + #include -#include "openvino/op/reduce_max.hpp" #include "reduction.hpp" using namespace ov; @@ -17,38 +18,72 @@ template std::vector generateReductionParams(const bool keep_dims) { using T = typename element_type_traits::value_type; std::vector params = { - ReductionParams(ReductionType::Max, keep_dims, std::vector{0, 1}, + ReductionParams(ReductionType::Max, + keep_dims, + std::vector{0, 1}, reference_tests::Tensor({2, 2}, element::Type(IN_ET), std::vector{1, 2, 3, 4}), - reference_tests::Tensor(reduce(Shape{2, 2}, AxisSet{0, 1}, keep_dims), element::Type(IN_ET), std::vector{4})), - ReductionParams(ReductionType::Max, keep_dims, std::vector{0}, + reference_tests::Tensor(reduce(Shape{2, 2}, AxisSet{0, 1}, keep_dims), + element::Type(IN_ET), + std::vector{4})), + ReductionParams(ReductionType::Max, + keep_dims, + std::vector{0}, reference_tests::Tensor({3, 2}, element::Type(IN_ET), std::vector{1, 2, 3, 4, 5, 6}), - reference_tests::Tensor(reduce(Shape{3, 2}, AxisSet{0}, keep_dims), element::Type(IN_ET), std::vector{5, 6})), - ReductionParams(ReductionType::Max, keep_dims, std::vector{1}, + reference_tests::Tensor(reduce(Shape{3, 2}, AxisSet{0}, keep_dims), + element::Type(IN_ET), + std::vector{5, 6})), + ReductionParams(ReductionType::Max, + keep_dims, + std::vector{1}, reference_tests::Tensor({3, 2}, element::Type(IN_ET), std::vector{1, 2, 3, 4, 5, 6}), - reference_tests::Tensor(reduce(Shape{3, 2}, AxisSet{1}, keep_dims), element::Type(IN_ET), std::vector{2, 4, 6})), - ReductionParams(ReductionType::Max, keep_dims, std::vector{0}, - reference_tests::Tensor({3, 3, 3}, element::Type(IN_ET), std::vector{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}), + reference_tests::Tensor(reduce(Shape{3, 2}, AxisSet{1}, keep_dims), + element::Type(IN_ET), + std::vector{2, 4, 6})), + ReductionParams(ReductionType::Max, + keep_dims, + std::vector{0}, + reference_tests::Tensor({3, 3, 3}, + element::Type(IN_ET), + std::vector{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}), reference_tests::Tensor(reduce(Shape{3, 3, 3}, AxisSet{0}, keep_dims), - element::Type(IN_ET), std::vector{19, 20, 21, 22, 23, 24, 25, 26, 27})), - ReductionParams(ReductionType::Max, keep_dims, std::vector{2}, - reference_tests::Tensor({3, 3, 3}, element::Type(IN_ET), std::vector{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}), - reference_tests::Tensor(reduce(Shape{3, 3, 3}, AxisSet{2}, keep_dims), element::Type(IN_ET), std::vector{3, 6, 9, 12, 15, 18, 21, 24, 27})), - ReductionParams(ReductionType::Max, keep_dims, std::vector{0, 1}, - reference_tests::Tensor({3, 3, 3}, element::Type(IN_ET), std::vector{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}), - reference_tests::Tensor(reduce(Shape{3, 3, 3}, AxisSet{0, 1}, keep_dims), element::Type(IN_ET), std::vector{25, 26, 27})), - ReductionParams(ReductionType::Max, keep_dims, std::vector{0, 1, 2}, - reference_tests::Tensor({3, 3, 3}, element::Type(IN_ET), std::vector{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}), - reference_tests::Tensor(reduce(Shape{3, 3, 3}, AxisSet{0, 1, 2}, keep_dims), element::Type(IN_ET), std::vector{27})) - }; + element::Type(IN_ET), + std::vector{19, 20, 21, 22, 23, 24, 25, 26, 27})), + ReductionParams(ReductionType::Max, + keep_dims, + std::vector{2}, + reference_tests::Tensor({3, 3, 3}, + element::Type(IN_ET), + std::vector{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}), + reference_tests::Tensor(reduce(Shape{3, 3, 3}, AxisSet{2}, keep_dims), + element::Type(IN_ET), + std::vector{3, 6, 9, 12, 15, 18, 21, 24, 27})), + ReductionParams(ReductionType::Max, + keep_dims, + std::vector{0, 1}, + reference_tests::Tensor({3, 3, 3}, + element::Type(IN_ET), + std::vector{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}), + reference_tests::Tensor(reduce(Shape{3, 3, 3}, AxisSet{0, 1}, keep_dims), + element::Type(IN_ET), + std::vector{25, 26, 27})), + ReductionParams(ReductionType::Max, + keep_dims, + std::vector{0, 1, 2}, + reference_tests::Tensor({3, 3, 3}, + element::Type(IN_ET), + std::vector{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}), + reference_tests::Tensor(reduce(Shape{3, 3, 3}, AxisSet{0, 1, 2}, keep_dims), + element::Type(IN_ET), + std::vector{27}))}; return params; } std::vector generateReductionCombinedParams() { - const std::vector> reductionTypeParams { + const std::vector> reductionTypeParams{ generateReductionParams(true), generateReductionParams(false), generateReductionParams(true), @@ -58,8 +93,7 @@ std::vector generateReductionCombinedParams() { generateReductionParams(true), generateReductionParams(false), generateReductionParams(true), - generateReductionParams(false) - }; + generateReductionParams(false)}; std::vector combinedParams; std::for_each(reductionTypeParams.begin(), reductionTypeParams.end(), [&](std::vector params) { combinedParams.insert(combinedParams.end(), params.begin(), params.end()); @@ -67,8 +101,10 @@ std::vector generateReductionCombinedParams() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_Reduction_With_Hardcoded_Refs, ReferenceReductionLayerTest, ::testing::ValuesIn(generateReductionCombinedParams()), +INSTANTIATE_TEST_SUITE_P(smoke_Reduction_With_Hardcoded_Refs, + ReferenceReductionLayerTest, + ::testing::ValuesIn(generateReductionCombinedParams()), ReferenceReductionLayerTest::getTestCaseName); -} // namespace -} // namespace ReductionOpsRefTestDefinitions -} // namespace reference_tests +} // namespace +} // namespace ReductionOpsRefTestDefinitions +} // namespace reference_tests diff --git a/src/plugins/template/tests/functional/op_reference/reduce_mean.cpp b/src/plugins/template/tests/functional/op_reference/reduce_mean.cpp index 2baf98e48a8..0a15efca570 100644 --- a/src/plugins/template/tests/functional/op_reference/reduce_mean.cpp +++ b/src/plugins/template/tests/functional/op_reference/reduce_mean.cpp @@ -2,9 +2,10 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/reduce_mean.hpp" + #include -#include "openvino/op/reduce_mean.hpp" #include "reduction.hpp" using namespace ov; @@ -14,43 +15,67 @@ namespace ReductionOpsRefTestDefinitions { namespace { template ::value_type>::value, bool>::type = true> + typename std::enable_if::value_type>::value, + bool>::type = true> std::vector generateReductionParams(const bool keep_dims) { using T = typename element_type_traits::value_type; std::vector params = { - ReductionParams(ReductionType::Mean, keep_dims, std::vector{0, 1}, + ReductionParams(ReductionType::Mean, + keep_dims, + std::vector{0, 1}, reference_tests::Tensor({2, 2}, element::Type(IN_ET), std::vector{1, 2, 3, 4}), - reference_tests::Tensor(reduce(Shape{2, 2}, AxisSet{0, 1}, keep_dims), element::Type(IN_ET), std::vector{2.5})), - ReductionParams(ReductionType::Mean, keep_dims, std::vector{0}, + reference_tests::Tensor(reduce(Shape{2, 2}, AxisSet{0, 1}, keep_dims), + element::Type(IN_ET), + std::vector{2.5})), + ReductionParams(ReductionType::Mean, + keep_dims, + std::vector{0}, reference_tests::Tensor({3, 2}, element::Type(IN_ET), std::vector{1, 2, 3, 4, 5, 6}), - reference_tests::Tensor(reduce(Shape{3, 2}, AxisSet{0}, keep_dims), element::Type(IN_ET), std::vector{3, 4})), - ReductionParams(ReductionType::Mean, keep_dims, std::vector{1}, + reference_tests::Tensor(reduce(Shape{3, 2}, AxisSet{0}, keep_dims), + element::Type(IN_ET), + std::vector{3, 4})), + ReductionParams(ReductionType::Mean, + keep_dims, + std::vector{1}, reference_tests::Tensor({3, 2}, element::Type(IN_ET), std::vector{1, 2, 3, 4, 5, 6}), - reference_tests::Tensor(reduce(Shape{3, 2}, AxisSet{1}, keep_dims), element::Type(IN_ET), std::vector{1.5, 3.5, 5.5})) - }; + reference_tests::Tensor(reduce(Shape{3, 2}, AxisSet{1}, keep_dims), + element::Type(IN_ET), + std::vector{1.5, 3.5, 5.5}))}; return params; } template ::value_type>::value, bool>::type = true> + typename std::enable_if::value_type>::value, + bool>::type = true> std::vector generateReductionParams(const bool keep_dims) { using T = typename element_type_traits::value_type; std::vector params = { - ReductionParams(ReductionType::Mean, keep_dims, std::vector{0, 1}, + ReductionParams(ReductionType::Mean, + keep_dims, + std::vector{0, 1}, reference_tests::Tensor({2, 2}, element::Type(IN_ET), std::vector{1, 2, 3, 4}), - reference_tests::Tensor(reduce(Shape{2, 2}, AxisSet{0, 1}, keep_dims), element::Type(IN_ET), std::vector{2})), - ReductionParams(ReductionType::Mean, keep_dims, std::vector{0}, + reference_tests::Tensor(reduce(Shape{2, 2}, AxisSet{0, 1}, keep_dims), + element::Type(IN_ET), + std::vector{2})), + ReductionParams(ReductionType::Mean, + keep_dims, + std::vector{0}, reference_tests::Tensor({3, 2}, element::Type(IN_ET), std::vector{1, 2, 3, 4, 5, 6}), - reference_tests::Tensor(reduce(Shape{3, 2}, AxisSet{0}, keep_dims), element::Type(IN_ET), std::vector{3, 4})), - ReductionParams(ReductionType::Mean, keep_dims, std::vector{1}, + reference_tests::Tensor(reduce(Shape{3, 2}, AxisSet{0}, keep_dims), + element::Type(IN_ET), + std::vector{3, 4})), + ReductionParams(ReductionType::Mean, + keep_dims, + std::vector{1}, reference_tests::Tensor({3, 2}, element::Type(IN_ET), std::vector{1, 2, 3, 4, 5, 6}), - reference_tests::Tensor(reduce(Shape{3, 2}, AxisSet{1}, keep_dims), element::Type(IN_ET), std::vector{1, 3, 5})) - }; + reference_tests::Tensor(reduce(Shape{3, 2}, AxisSet{1}, keep_dims), + element::Type(IN_ET), + std::vector{1, 3, 5}))}; return params; } std::vector generateReductionCombinedParams() { - const std::vector> reductionTypeParams { + const std::vector> reductionTypeParams{ generateReductionParams(true), generateReductionParams(false), generateReductionParams(true), @@ -60,16 +85,17 @@ std::vector generateReductionCombinedParams() { generateReductionParams(true), generateReductionParams(false), generateReductionParams(true), - generateReductionParams(false) - }; + generateReductionParams(false)}; std::vector combinedParams; std::for_each(reductionTypeParams.begin(), reductionTypeParams.end(), [&](std::vector params) { combinedParams.insert(combinedParams.end(), params.begin(), params.end()); }); return combinedParams; } -} // namespace -INSTANTIATE_TEST_SUITE_P(smoke_Reduction_With_Hardcoded_Refs, ReferenceReductionLayerTest, ::testing::ValuesIn(generateReductionCombinedParams()), +} // namespace +INSTANTIATE_TEST_SUITE_P(smoke_Reduction_With_Hardcoded_Refs, + ReferenceReductionLayerTest, + ::testing::ValuesIn(generateReductionCombinedParams()), ReferenceReductionLayerTest::getTestCaseName); -} // namespace ReductionOpsRefTestDefinitions -} // namespace reference_tests +} // namespace ReductionOpsRefTestDefinitions +} // namespace reference_tests diff --git a/src/plugins/template/tests/functional/op_reference/reduce_min.cpp b/src/plugins/template/tests/functional/op_reference/reduce_min.cpp index ea0f583055d..0b9fb15f75c 100644 --- a/src/plugins/template/tests/functional/op_reference/reduce_min.cpp +++ b/src/plugins/template/tests/functional/op_reference/reduce_min.cpp @@ -2,9 +2,10 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/reduce_min.hpp" + #include -#include "openvino/op/reduce_min.hpp" #include "reduction.hpp" using namespace ov; @@ -17,37 +18,72 @@ template std::vector generateReductionParams(const bool keep_dims) { using T = typename element_type_traits::value_type; std::vector params = { - ReductionParams(ReductionType::Min, keep_dims, std::vector{0, 1}, + ReductionParams(ReductionType::Min, + keep_dims, + std::vector{0, 1}, reference_tests::Tensor({2, 2}, element::Type(IN_ET), std::vector{1, 2, 3, 4}), - reference_tests::Tensor(reduce(Shape{2, 2}, AxisSet{0, 1}, keep_dims), element::Type(IN_ET), std::vector{1})), - ReductionParams(ReductionType::Min, keep_dims, std::vector{0}, + reference_tests::Tensor(reduce(Shape{2, 2}, AxisSet{0, 1}, keep_dims), + element::Type(IN_ET), + std::vector{1})), + ReductionParams(ReductionType::Min, + keep_dims, + std::vector{0}, reference_tests::Tensor({3, 2}, element::Type(IN_ET), std::vector{1, 2, 3, 4, 5, 6}), - reference_tests::Tensor(reduce(Shape{3, 2}, AxisSet{0}, keep_dims), element::Type(IN_ET), std::vector{1, 2})), - ReductionParams(ReductionType::Min, keep_dims, std::vector{1}, + reference_tests::Tensor(reduce(Shape{3, 2}, AxisSet{0}, keep_dims), + element::Type(IN_ET), + std::vector{1, 2})), + ReductionParams(ReductionType::Min, + keep_dims, + std::vector{1}, reference_tests::Tensor({3, 2}, element::Type(IN_ET), std::vector{1, 2, 3, 4, 5, 6}), - reference_tests::Tensor(reduce(Shape{3, 2}, AxisSet{1}, keep_dims), element::Type(IN_ET), std::vector{1, 3, 5})), - ReductionParams(ReductionType::Min, keep_dims, std::vector{0}, - reference_tests::Tensor({3, 3, 3}, element::Type(IN_ET), std::vector{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}), - reference_tests::Tensor(reduce(Shape{3, 3, 3}, AxisSet{0}, keep_dims), element::Type(IN_ET), std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9})), - ReductionParams(ReductionType::Min, keep_dims, std::vector{2}, - reference_tests::Tensor({3, 3, 3}, element::Type(IN_ET), std::vector{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}), - reference_tests::Tensor(reduce(Shape{3, 3, 3}, AxisSet{2}, keep_dims), element::Type(IN_ET), std::vector{1, 4, 7, 10, 13, 16, 19, 22, 25})), - ReductionParams(ReductionType::Min, keep_dims, std::vector{0, 1}, - reference_tests::Tensor({3, 3, 3}, element::Type(IN_ET), std::vector{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}), - reference_tests::Tensor(reduce(Shape{3, 3, 3}, AxisSet{0, 1}, keep_dims), element::Type(IN_ET), std::vector{1, 2, 3})), - ReductionParams(ReductionType::Min, keep_dims, std::vector{0, 1, 2}, - reference_tests::Tensor({3, 3, 3}, element::Type(IN_ET), std::vector{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}), - reference_tests::Tensor(reduce(Shape{3, 3, 3}, AxisSet{0, 1, 2}, keep_dims), element::Type(IN_ET), std::vector{1})) - }; + reference_tests::Tensor(reduce(Shape{3, 2}, AxisSet{1}, keep_dims), + element::Type(IN_ET), + std::vector{1, 3, 5})), + ReductionParams(ReductionType::Min, + keep_dims, + std::vector{0}, + reference_tests::Tensor({3, 3, 3}, + element::Type(IN_ET), + std::vector{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}), + reference_tests::Tensor(reduce(Shape{3, 3, 3}, AxisSet{0}, keep_dims), + element::Type(IN_ET), + std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9})), + ReductionParams(ReductionType::Min, + keep_dims, + std::vector{2}, + reference_tests::Tensor({3, 3, 3}, + element::Type(IN_ET), + std::vector{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}), + reference_tests::Tensor(reduce(Shape{3, 3, 3}, AxisSet{2}, keep_dims), + element::Type(IN_ET), + std::vector{1, 4, 7, 10, 13, 16, 19, 22, 25})), + ReductionParams(ReductionType::Min, + keep_dims, + std::vector{0, 1}, + reference_tests::Tensor({3, 3, 3}, + element::Type(IN_ET), + std::vector{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}), + reference_tests::Tensor(reduce(Shape{3, 3, 3}, AxisSet{0, 1}, keep_dims), + element::Type(IN_ET), + std::vector{1, 2, 3})), + ReductionParams(ReductionType::Min, + keep_dims, + std::vector{0, 1, 2}, + reference_tests::Tensor({3, 3, 3}, + element::Type(IN_ET), + std::vector{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}), + reference_tests::Tensor(reduce(Shape{3, 3, 3}, AxisSet{0, 1, 2}, keep_dims), + element::Type(IN_ET), + std::vector{1}))}; return params; } std::vector generateReductionCombinedParams() { - const std::vector> reductionTypeParams { + const std::vector> reductionTypeParams{ generateReductionParams(true), generateReductionParams(false), generateReductionParams(true), @@ -57,16 +93,17 @@ std::vector generateReductionCombinedParams() { generateReductionParams(true), generateReductionParams(false), generateReductionParams(true), - generateReductionParams(false) - }; + generateReductionParams(false)}; std::vector combinedParams; std::for_each(reductionTypeParams.begin(), reductionTypeParams.end(), [&](std::vector params) { combinedParams.insert(combinedParams.end(), params.begin(), params.end()); }); return combinedParams; } -} // namespace -INSTANTIATE_TEST_SUITE_P(smoke_Reduction_With_Hardcoded_Refs, ReferenceReductionLayerTest, ::testing::ValuesIn(generateReductionCombinedParams()), +} // namespace +INSTANTIATE_TEST_SUITE_P(smoke_Reduction_With_Hardcoded_Refs, + ReferenceReductionLayerTest, + ::testing::ValuesIn(generateReductionCombinedParams()), ReferenceReductionLayerTest::getTestCaseName); -} // namespace ReductionOpsRefTestDefinitions -} // namespace reference_tests +} // namespace ReductionOpsRefTestDefinitions +} // namespace reference_tests diff --git a/src/plugins/template/tests/functional/op_reference/reduce_prod.cpp b/src/plugins/template/tests/functional/op_reference/reduce_prod.cpp index b3780145838..96cf56bd5fa 100644 --- a/src/plugins/template/tests/functional/op_reference/reduce_prod.cpp +++ b/src/plugins/template/tests/functional/op_reference/reduce_prod.cpp @@ -2,9 +2,10 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/reduce_prod.hpp" + #include -#include "openvino/op/reduce_prod.hpp" #include "reduction.hpp" using namespace ov; @@ -16,45 +17,68 @@ template std::vector generateReductionParams(const bool keep_dims) { using T = typename element_type_traits::value_type; std::vector params = { - ReductionParams(ReductionType::Prod, keep_dims, std::vector{0, 1}, + ReductionParams(ReductionType::Prod, + keep_dims, + std::vector{0, 1}, reference_tests::Tensor({2, 2}, element::Type(IN_ET), std::vector{1, 2, 3, 4}), - reference_tests::Tensor(reduce(Shape{2, 2}, AxisSet{0, 1}, keep_dims), element::Type(IN_ET), std::vector{24})), - ReductionParams(ReductionType::Prod, keep_dims, std::vector{0}, + reference_tests::Tensor(reduce(Shape{2, 2}, AxisSet{0, 1}, keep_dims), + element::Type(IN_ET), + std::vector{24})), + ReductionParams(ReductionType::Prod, + keep_dims, + std::vector{0}, reference_tests::Tensor({3, 2}, element::Type(IN_ET), std::vector{1, 2, 3, 4, 5, 6}), - reference_tests::Tensor(reduce(Shape{3, 2}, AxisSet{0}, keep_dims), element::Type(IN_ET), std::vector{15, 48})), - ReductionParams(ReductionType::Prod, keep_dims, std::vector{1}, + reference_tests::Tensor(reduce(Shape{3, 2}, AxisSet{0}, keep_dims), + element::Type(IN_ET), + std::vector{15, 48})), + ReductionParams(ReductionType::Prod, + keep_dims, + std::vector{1}, reference_tests::Tensor({3, 2}, element::Type(IN_ET), std::vector{1, 2, 3, 4, 5, 6}), - reference_tests::Tensor(reduce(Shape{3, 2}, AxisSet{1}, keep_dims), element::Type(IN_ET), std::vector{2, 12, 30})), - ReductionParams(ReductionType::Prod, keep_dims, std::vector{0}, - reference_tests::Tensor({3, 3, 3}, element::Type(IN_ET), std::vector{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}), - reference_tests::Tensor(reduce(Shape{3, 3, 3}, AxisSet{0}, keep_dims), element::Type(IN_ET), std::vector{1 * 10 * 19, - 2 * 11 * 20, - 3 * 12 * 21, - 4 * 13 * 22, - 5 * 14 * 23, - 6 * 15 * 24, - 7 * 16 * 25, - 8 * 17 * 26, - 9 * 18 * 27})), - ReductionParams(ReductionType::Prod, keep_dims, std::vector{2}, - reference_tests::Tensor({3, 3, 3}, element::Type(IN_ET), std::vector{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}), - reference_tests::Tensor(reduce(Shape{3, 3, 3}, AxisSet{2}, keep_dims), element::Type(IN_ET), std::vector{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})) - }; + reference_tests::Tensor(reduce(Shape{3, 2}, AxisSet{1}, keep_dims), + element::Type(IN_ET), + std::vector{2, 12, 30})), + ReductionParams(ReductionType::Prod, + keep_dims, + std::vector{0}, + reference_tests::Tensor({3, 3, 3}, + element::Type(IN_ET), + std::vector{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}), + reference_tests::Tensor(reduce(Shape{3, 3, 3}, AxisSet{0}, keep_dims), + element::Type(IN_ET), + std::vector{1 * 10 * 19, + 2 * 11 * 20, + 3 * 12 * 21, + 4 * 13 * 22, + 5 * 14 * 23, + 6 * 15 * 24, + 7 * 16 * 25, + 8 * 17 * 26, + 9 * 18 * 27})), + ReductionParams(ReductionType::Prod, + keep_dims, + std::vector{2}, + reference_tests::Tensor({3, 3, 3}, + element::Type(IN_ET), + std::vector{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}), + reference_tests::Tensor(reduce(Shape{3, 3, 3}, AxisSet{2}, keep_dims), + element::Type(IN_ET), + std::vector{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}))}; return params; } std::vector generateReductionCombinedParams() { - const std::vector> reductionTypeParams { + const std::vector> reductionTypeParams{ generateReductionParams(true), generateReductionParams(false), generateReductionParams(true), @@ -64,33 +88,45 @@ std::vector generateReductionCombinedParams() { generateReductionParams(true), generateReductionParams(false), generateReductionParams(true), - generateReductionParams(false) - }; + generateReductionParams(false)}; std::vector combinedParams; std::for_each(reductionTypeParams.begin(), reductionTypeParams.end(), [&](std::vector params) { combinedParams.insert(combinedParams.end(), params.begin(), params.end()); }); - combinedParams.push_back( - ReductionParams(ReductionType::Prod, true, std::vector{0, 1}, - reference_tests::Tensor({3, 3, 3}, element::Type_t::f32, std::vector{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}), - reference_tests::Tensor({1, 1, 3}, element::Type_t::f32, std::vector{1.0f * 10.0f * 19.0f * 4.0f * 13.0f * 22.0f * 7.0f * 16.0f * 25.0f, - 2.0f * 11.0f * 20.0f * 5.0f * 14.0f * 23.0f * 8.0f * 17.0f * 26.0f, - 3.0f * 12.0f * 21.0f * 6.0f * 15.0f * 24.0f * 9.0f * 18.0f * 27.0f}))); - combinedParams.push_back( - ReductionParams(ReductionType::Prod, true, std::vector{0, 1, 2}, - reference_tests::Tensor({3, 3, 3}, element::Type_t::f32, std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, - 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1}), - reference_tests::Tensor({1, 1, 1}, element::Type_t::f32, std::vector{1.0f * 10.0f * 9.0f * 4.0f * 13.0f * 6.0f * 7.0f * - 12.0f * 3.0f * 2.0f * 11.0f * 8.0f * 5.0f * 14.0f * - 5.0f * 8.0f * 11.0f * 2.0f * 3.0f * 12.0f * 7.0f * - 6.0f * 13.0f * 4.0f * 9.0f * 10.0f * 1.0f}))); + combinedParams.push_back(ReductionParams( + ReductionType::Prod, + true, + std::vector{0, 1}, + reference_tests::Tensor({3, 3, 3}, + element::Type_t::f32, + std::vector{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}), + reference_tests::Tensor( + {1, 1, 3}, + element::Type_t::f32, + std::vector{1.0f * 10.0f * 19.0f * 4.0f * 13.0f * 22.0f * 7.0f * 16.0f * 25.0f, + 2.0f * 11.0f * 20.0f * 5.0f * 14.0f * 23.0f * 8.0f * 17.0f * 26.0f, + 3.0f * 12.0f * 21.0f * 6.0f * 15.0f * 24.0f * 9.0f * 18.0f * 27.0f}))); + combinedParams.push_back(ReductionParams( + ReductionType::Prod, + true, + std::vector{0, 1, 2}, + reference_tests::Tensor({3, 3, 3}, element::Type_t::f32, std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, + 10, 11, 12, 13, 14, 13, 12, 11, 10, + 9, 8, 7, 6, 5, 4, 3, 2, 1}), + reference_tests::Tensor({1, 1, 1}, + element::Type_t::f32, + std::vector{1.0f * 10.0f * 9.0f * 4.0f * 13.0f * 6.0f * 7.0f * 12.0f * 3.0f * + 2.0f * 11.0f * 8.0f * 5.0f * 14.0f * 5.0f * 8.0f * 11.0f * 2.0f * + 3.0f * 12.0f * 7.0f * 6.0f * 13.0f * 4.0f * 9.0f * 10.0f * 1.0f}))); return combinedParams; } -} // namespace -INSTANTIATE_TEST_SUITE_P(smoke_Reduction_With_Hardcoded_Refs, ReferenceReductionLayerTest, ::testing::ValuesIn(generateReductionCombinedParams()), +} // namespace +INSTANTIATE_TEST_SUITE_P(smoke_Reduction_With_Hardcoded_Refs, + ReferenceReductionLayerTest, + ::testing::ValuesIn(generateReductionCombinedParams()), ReferenceReductionLayerTest::getTestCaseName); -} // namespace ReductionOpsRefTestDefinitions -} // namespace reference_tests +} // namespace ReductionOpsRefTestDefinitions +} // namespace reference_tests diff --git a/src/plugins/template/tests/functional/op_reference/reduce_sum.cpp b/src/plugins/template/tests/functional/op_reference/reduce_sum.cpp index 850cd269a6c..82c3e305026 100644 --- a/src/plugins/template/tests/functional/op_reference/reduce_sum.cpp +++ b/src/plugins/template/tests/functional/op_reference/reduce_sum.cpp @@ -2,9 +2,10 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/reduce_sum.hpp" + #include -#include "openvino/op/reduce_sum.hpp" #include "reduction.hpp" using namespace ov; @@ -28,56 +29,96 @@ template std::vector generateReductionParams(const bool keep_dims) { using T = typename element_type_traits::value_type; std::vector params = { - ReductionParams(ReductionType::Sum, keep_dims, std::vector{0, 1}, + ReductionParams(ReductionType::Sum, + keep_dims, + std::vector{0, 1}, reference_tests::Tensor({2, 2}, element::Type(IN_ET), std::vector{1, 2, 3, 4}), - reference_tests::Tensor(reduce(Shape{2, 2}, AxisSet{0, 1}, keep_dims), element::Type(IN_ET), std::vector{10})), - ReductionParams(ReductionType::Sum, keep_dims, std::vector{0}, + reference_tests::Tensor(reduce(Shape{2, 2}, AxisSet{0, 1}, keep_dims), + element::Type(IN_ET), + std::vector{10})), + ReductionParams(ReductionType::Sum, + keep_dims, + std::vector{0}, reference_tests::Tensor({3, 2}, element::Type(IN_ET), std::vector{1, 2, 3, 4, 5, 6}), - reference_tests::Tensor(reduce(Shape{3, 2}, AxisSet{0}, keep_dims), element::Type(IN_ET), std::vector{9, 12})), - ReductionParams(ReductionType::Sum, keep_dims, std::vector{1}, + reference_tests::Tensor(reduce(Shape{3, 2}, AxisSet{0}, keep_dims), + element::Type(IN_ET), + std::vector{9, 12})), + ReductionParams(ReductionType::Sum, + keep_dims, + std::vector{1}, reference_tests::Tensor({3, 2}, element::Type(IN_ET), std::vector{1, 2, 3, 4, 5, 6}), - reference_tests::Tensor(reduce(Shape{3, 2}, AxisSet{1}, keep_dims), element::Type(IN_ET), std::vector{3, 7, 11})), - ReductionParams(ReductionType::Sum, keep_dims, std::vector{0}, - reference_tests::Tensor({3, 3, 3}, element::Type(IN_ET), std::vector{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}), - reference_tests::Tensor(reduce(Shape{3, 3, 3}, AxisSet{0}, keep_dims), element::Type(IN_ET), std::vector{1 + 10 + 19, - 2 + 11 + 20, - 3 + 12 + 21, - 4 + 13 + 22, - 5 + 14 + 23, - 6 + 15 + 24, - 7 + 16 + 25, - 8 + 17 + 26, - 9 + 18 + 27})), - ReductionParams(ReductionType::Sum, keep_dims, std::vector{2}, - reference_tests::Tensor({3, 3, 3}, element::Type(IN_ET), std::vector{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}), - reference_tests::Tensor(reduce(Shape{3, 3, 3}, AxisSet{2}, keep_dims), element::Type(IN_ET), std::vector{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})), - ReductionParams(ReductionType::Sum, keep_dims, std::vector{0, 1}, - reference_tests::Tensor({3, 3, 3}, element::Type(IN_ET), std::vector{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}), + reference_tests::Tensor(reduce(Shape{3, 2}, AxisSet{1}, keep_dims), + element::Type(IN_ET), + std::vector{3, 7, 11})), + ReductionParams(ReductionType::Sum, + keep_dims, + std::vector{0}, + reference_tests::Tensor({3, 3, 3}, + element::Type(IN_ET), + std::vector{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}), + reference_tests::Tensor(reduce(Shape{3, 3, 3}, AxisSet{0}, keep_dims), + element::Type(IN_ET), + std::vector{1 + 10 + 19, + 2 + 11 + 20, + 3 + 12 + 21, + 4 + 13 + 22, + 5 + 14 + 23, + 6 + 15 + 24, + 7 + 16 + 25, + 8 + 17 + 26, + 9 + 18 + 27})), + ReductionParams(ReductionType::Sum, + keep_dims, + std::vector{2}, + reference_tests::Tensor({3, 3, 3}, + element::Type(IN_ET), + std::vector{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}), + reference_tests::Tensor(reduce(Shape{3, 3, 3}, AxisSet{2}, keep_dims), + element::Type(IN_ET), + std::vector{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})), + ReductionParams(ReductionType::Sum, + keep_dims, + std::vector{0, 1}, + reference_tests::Tensor({3, 3, 3}, + element::Type(IN_ET), + std::vector{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}), reference_tests::Tensor(reduce(Shape{3, 3, 3}, AxisSet{0, 1}, keep_dims), - element::Type(IN_ET), std::vector{1 + 10 + 19 + 4 + 13 + 22 + 7 + 16 + 25, - 2 + 11 + 20 + 5 + 14 + 23 + 8 + 17 + 26, - 3 + 12 + 21 + 6 + 15 + 24 + 9 + 18 + 27})), - ReductionParams(ReductionType::Sum, keep_dims, std::vector{0, 1, 2}, - reference_tests::Tensor({3, 3, 3}, element::Type(IN_ET), std::vector{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}), - reference_tests::Tensor(reduce(Shape{3, 3, 3}, AxisSet{0, 1, 2}, keep_dims), element::Type(IN_ET), - std::vector{1 + 10 + 19 + 4 + 13 + 22 + 7 + 16 + 25 + 2 + 11 + 20 + 5 + 14 + 23 + 8 + - 17 + 26 + 3 + 12 + 21 + 6 + 15 + 24 + 9 + 18 + 27})), - ReductionParams(ReductionType::Sum, keep_dims, std::vector{0, 1, 2, 3, 4}, - reference_tests::Tensor({3, 3, 3, 3, 3}, element::Type(IN_ET), std::vector(static_cast(std::pow(3, 5)), 1)), - reference_tests::Tensor(reduce(Shape{3, 3, 3, 3, 3}, AxisSet{0, 1, 2, 3, 4}, keep_dims), element::Type(IN_ET), std::vector{243})) - }; + element::Type(IN_ET), + std::vector{1 + 10 + 19 + 4 + 13 + 22 + 7 + 16 + 25, + 2 + 11 + 20 + 5 + 14 + 23 + 8 + 17 + 26, + 3 + 12 + 21 + 6 + 15 + 24 + 9 + 18 + 27})), + ReductionParams( + ReductionType::Sum, + keep_dims, + std::vector{0, 1, 2}, + reference_tests::Tensor({3, 3, 3}, + element::Type(IN_ET), + std::vector{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}), + reference_tests::Tensor(reduce(Shape{3, 3, 3}, AxisSet{0, 1, 2}, keep_dims), + element::Type(IN_ET), + std::vector{1 + 10 + 19 + 4 + 13 + 22 + 7 + 16 + 25 + 2 + 11 + 20 + 5 + 14 + 23 + + 8 + 17 + 26 + 3 + 12 + 21 + 6 + 15 + 24 + 9 + 18 + 27})), + ReductionParams(ReductionType::Sum, + keep_dims, + std::vector{0, 1, 2, 3, 4}, + reference_tests::Tensor({3, 3, 3, 3, 3}, + element::Type(IN_ET), + std::vector(static_cast(std::pow(3, 5)), 1)), + reference_tests::Tensor(reduce(Shape{3, 3, 3, 3, 3}, AxisSet{0, 1, 2, 3, 4}, keep_dims), + element::Type(IN_ET), + std::vector{243}))}; return params; } @@ -85,20 +126,29 @@ std::vector generateReductionParamsFloat(const bool keep_dims) std::vector in = generateRandomVector(1000000); float res = static_cast(std::accumulate(std::begin(in), std::end(in), 0.f)); std::vector params = { - ReductionParams(ReductionType::Sum, keep_dims, std::vector{0}, + ReductionParams(ReductionType::Sum, + keep_dims, + std::vector{0}, reference_tests::Tensor({1000000}, element::f32, in), - reference_tests::Tensor(reduce(Shape{1000000}, AxisSet{0}, keep_dims), element::f32, std::vector{res})), - ReductionParams(ReductionType::Sum, keep_dims, std::vector{0}, - reference_tests::Tensor({20}, element::f32, std::vector{10000000.0f, 0.9f, 0.3f, 0.4f, 0.5f, 0.6f, 0.7f, - 0.8f, 0.1f, 0.9f, 0.5f, 0.2f, 0.3f, 0.4f, - 0.5f, 0.6f, 0.7f, 0.8f, 0.9f, 0.1f}), - reference_tests::Tensor(reduce(Shape{20}, AxisSet{0}, keep_dims), element::f32, std::vector{10000010.2f})) - }; + reference_tests::Tensor(reduce(Shape{1000000}, AxisSet{0}, keep_dims), + element::f32, + std::vector{res})), + ReductionParams(ReductionType::Sum, + keep_dims, + std::vector{0}, + reference_tests::Tensor( + {20}, + element::f32, + std::vector{10000000.0f, 0.9f, 0.3f, 0.4f, 0.5f, 0.6f, 0.7f, 0.8f, 0.1f, 0.9f, + 0.5f, 0.2f, 0.3f, 0.4f, 0.5f, 0.6f, 0.7f, 0.8f, 0.9f, 0.1f}), + reference_tests::Tensor(reduce(Shape{20}, AxisSet{0}, keep_dims), + element::f32, + std::vector{10000010.2f}))}; return params; } std::vector generateReductionCombinedParams() { - const std::vector> reductionTypeParams { + const std::vector> reductionTypeParams{ generateReductionParams(true), generateReductionParams(false), generateReductionParams(true), @@ -110,16 +160,17 @@ std::vector generateReductionCombinedParams() { generateReductionParams(true), generateReductionParams(false), generateReductionParamsFloat(true), - generateReductionParamsFloat(false) - }; + generateReductionParamsFloat(false)}; std::vector combinedParams; std::for_each(reductionTypeParams.begin(), reductionTypeParams.end(), [&](std::vector params) { combinedParams.insert(combinedParams.end(), params.begin(), params.end()); }); return combinedParams; } -} // namespace -INSTANTIATE_TEST_SUITE_P(smoke_Reduction_With_Hardcoded_Refs, ReferenceReductionLayerTest, ::testing::ValuesIn(generateReductionCombinedParams()), +} // namespace +INSTANTIATE_TEST_SUITE_P(smoke_Reduction_With_Hardcoded_Refs, + ReferenceReductionLayerTest, + ::testing::ValuesIn(generateReductionCombinedParams()), ReferenceReductionLayerTest::getTestCaseName); -} // namespace ReductionOpsRefTestDefinitions -} // namespace reference_tests +} // namespace ReductionOpsRefTestDefinitions +} // namespace reference_tests diff --git a/src/plugins/template/tests/functional/op_reference/reduction.cpp b/src/plugins/template/tests/functional/op_reference/reduction.cpp index d36cad37678..98a0133ee62 100644 --- a/src/plugins/template/tests/functional/op_reference/reduction.cpp +++ b/src/plugins/template/tests/functional/op_reference/reduction.cpp @@ -10,6 +10,6 @@ namespace { TEST_P(ReferenceReductionLayerTest, CompareWithHardcodedRefs) { Exec(); } -} // namespace -} // namespace ReductionOpsRefTestDefinitions -} // namespace reference_tests +} // namespace +} // namespace ReductionOpsRefTestDefinitions +} // namespace reference_tests diff --git a/src/plugins/template/tests/functional/op_reference/reduction.hpp b/src/plugins/template/tests/functional/op_reference/reduction.hpp index 30f6ca559fc..f3f58587913 100644 --- a/src/plugins/template/tests/functional/op_reference/reduction.hpp +++ b/src/plugins/template/tests/functional/op_reference/reduction.hpp @@ -6,16 +6,16 @@ #include "base_reference_test.hpp" #include "common_test_utils/test_enums.hpp" -#include "shared_test_classes/base/layer_test_utils.hpp" -#include "openvino/op/reduce_logical_and.hpp" -#include "openvino/op/reduce_logical_or.hpp" #include "openvino/op/reduce_l1.hpp" #include "openvino/op/reduce_l2.hpp" -#include "openvino/op/reduce_min.hpp" +#include "openvino/op/reduce_logical_and.hpp" +#include "openvino/op/reduce_logical_or.hpp" #include "openvino/op/reduce_max.hpp" #include "openvino/op/reduce_mean.hpp" +#include "openvino/op/reduce_min.hpp" #include "openvino/op/reduce_prod.hpp" #include "openvino/op/reduce_sum.hpp" +#include "shared_test_classes/base/layer_test_utils.hpp" using namespace ov; @@ -42,9 +42,16 @@ AXIS_VALUES reduce(const AXIS_VALUES& axis_values, const ov::AxisSet& deleted_ax } struct ReductionParams { - ReductionParams(const ReductionType& reductType, const bool keepDims, const std::vector& axes, - const reference_tests::Tensor& dataTensor, const reference_tests::Tensor& outputTensor) : reductionType(reductType), keepDimensions(keepDims), reductionAxes(axes), - data(dataTensor), output(outputTensor) {} + ReductionParams(const ReductionType& reductType, + const bool keepDims, + const std::vector& axes, + const reference_tests::Tensor& dataTensor, + const reference_tests::Tensor& outputTensor) + : reductionType(reductType), + keepDimensions(keepDims), + reductionAxes(axes), + data(dataTensor), + output(outputTensor) {} ReductionType reductionType; bool keepDimensions; @@ -53,7 +60,7 @@ struct ReductionParams { reference_tests::Tensor output; }; -class ReferenceReductionLayerTest : public testing::TestWithParam, public CommonReferenceTest { +class ReferenceReductionLayerTest : public testing::TestWithParam, public CommonReferenceTest { public: void SetUp() override { auto params = GetParam(); @@ -125,5 +132,5 @@ private: return std::make_shared(reduction, ov::ParameterVector{data}); } }; -} // namespace ReductionOpsRefTestDefinitions -} // namespace reference_tests +} // namespace ReductionOpsRefTestDefinitions +} // namespace reference_tests diff --git a/src/plugins/template/tests/functional/op_reference/region_yolo.cpp b/src/plugins/template/tests/functional/op_reference/region_yolo.cpp index 1ffb4ae1bd3..f1160722810 100644 --- a/src/plugins/template/tests/functional/op_reference/region_yolo.cpp +++ b/src/plugins/template/tests/functional/op_reference/region_yolo.cpp @@ -2,12 +2,14 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/region_yolo.hpp" + #include + #include #include #include -#include "openvino/op/region_yolo.hpp" #include "base_reference_test.hpp" #include "openvino/util/file_util.hpp" @@ -18,20 +20,20 @@ namespace { struct RegionYoloParams { template RegionYoloParams(const size_t num, - const size_t coords, - const size_t classes, - const bool do_softmax, - const int axis, - const int end_axis, - const size_t batch, - const size_t channels, - const size_t width, - const size_t height, - const std::vector& mask, - const ov::element::Type& iType, - const std::vector& iValues, - const std::vector& oValues, - const std::string& testcaseName = "") + const size_t coords, + const size_t classes, + const bool do_softmax, + const int axis, + const int end_axis, + const size_t batch, + const size_t channels, + const size_t width, + const size_t height, + const std::vector& mask, + const ov::element::Type& iType, + const std::vector& iValues, + const std::vector& oValues, + const std::string& testcaseName = "") : num(num), coords(coords), classes(classes), @@ -48,8 +50,8 @@ struct RegionYoloParams { inputData(CreateTensor(iType, iValues)), refData(CreateTensor(iType, oValues)), testcaseName(testcaseName) { - inputShape = Shape{batch, channels, height, width}; - } + inputShape = Shape{batch, channels, height, width}; + } size_t num; size_t coords; @@ -107,7 +109,7 @@ private: params.mask, params.axis, params.end_axis); - return std::make_shared(NodeVector {RegionYolo}, ParameterVector {p}); + return std::make_shared(NodeVector{RegionYolo}, ParameterVector{p}); } }; @@ -119,28 +121,36 @@ template std::vector generateRegionYoloParams() { using T = typename element_type_traits::value_type; - std::vector regionYoloParams { - RegionYoloParams(1, 4, 1, false, 1, 3, - 1, 8, 2, 2, - std::vector{0}, - IN_ET, - std::vector{0.1f, 0.2f, 0.3f, 0.4f, 0.5f, 0.6f, 0.7f, 0.8f, 0.1f, 0.2f, 0.3f, - 0.4f, 0.5f, 0.6f, 0.7f, 0.8f, 0.1f, 0.2f, 0.3f, 0.4f, 0.5f, 0.6f, - 0.7f, 0.8f, 0.1f, 0.2f, 0.3f, 0.4f, 0.5f, 0.6f, 0.7f, 0.8f}, - std::vector{0.52497f, 0.54983f, 0.57444f, 0.59868f, 0.62245f, 0.64565f, 0.66818f, 0.68997f, - 0.1f, 0.2f, 0.3f, 0.4f, 0.5f, 0.6f, 0.7f, 0.8f, - 0.52497f, 0.54983f, 0.57444f, 0.59868f, 0.62245f, 0.64565f, 0.66818f, 0.68997f}), + std::vector regionYoloParams{ + RegionYoloParams( + 1, + 4, + 1, + false, + 1, + 3, + 1, + 8, + 2, + 2, + std::vector{0}, + IN_ET, + std::vector{0.1f, 0.2f, 0.3f, 0.4f, 0.5f, 0.6f, 0.7f, 0.8f, 0.1f, 0.2f, 0.3f, + 0.4f, 0.5f, 0.6f, 0.7f, 0.8f, 0.1f, 0.2f, 0.3f, 0.4f, 0.5f, 0.6f, + 0.7f, 0.8f, 0.1f, 0.2f, 0.3f, 0.4f, 0.5f, 0.6f, 0.7f, 0.8f}, + std::vector{0.52497f, 0.54983f, 0.57444f, 0.59868f, 0.62245f, 0.64565f, 0.66818f, 0.68997f, + 0.1f, 0.2f, 0.3f, 0.4f, 0.5f, 0.6f, 0.7f, 0.8f, + 0.52497f, 0.54983f, 0.57444f, 0.59868f, 0.62245f, 0.64565f, 0.66818f, 0.68997f}), }; return regionYoloParams; } std::vector generateRegionYoloCombinedParams() { - const std::vector> regionYoloTypeParams { + const std::vector> regionYoloTypeParams{ generateRegionYoloParams(), generateRegionYoloParams(), generateRegionYoloParams(), - generateRegionYoloParams() - }; + generateRegionYoloParams()}; std::vector combinedParams; for (const auto& params : regionYoloTypeParams) { @@ -149,7 +159,9 @@ std::vector generateRegionYoloCombinedParams() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_RegionYolo_With_Hardcoded_Refs, ReferenceRegionYoloLayerTest, - testing::ValuesIn(generateRegionYoloCombinedParams()), ReferenceRegionYoloLayerTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_RegionYolo_With_Hardcoded_Refs, + ReferenceRegionYoloLayerTest, + testing::ValuesIn(generateRegionYoloCombinedParams()), + ReferenceRegionYoloLayerTest::getTestCaseName); -} // namespace \ No newline at end of file +} // namespace \ No newline at end of file diff --git a/src/plugins/template/tests/functional/op_reference/relu.cpp b/src/plugins/template/tests/functional/op_reference/relu.cpp index 2e31a299fd2..2df326758fd 100644 --- a/src/plugins/template/tests/functional/op_reference/relu.cpp +++ b/src/plugins/template/tests/functional/op_reference/relu.cpp @@ -2,9 +2,10 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/relu.hpp" + #include -#include "openvino/op/relu.hpp" #include "base_reference_test.hpp" using namespace reference_tests; @@ -13,7 +14,10 @@ using namespace ov; namespace { struct ReluParams { template - ReluParams(const ov::PartialShape& shape, const ov::element::Type& iType, const std::vector& iValues, const std::vector& oValues) + ReluParams(const ov::PartialShape& shape, + const ov::element::Type& iType, + const std::vector& iValues, + const std::vector& oValues) : pshape(shape), inType(iType), outType(iType), @@ -45,11 +49,12 @@ public: } private: - static std::shared_ptr CreateFunction(const PartialShape& input_shape, const element::Type& input_type, - const element::Type& Reluected_output_type) { + static std::shared_ptr CreateFunction(const PartialShape& input_shape, + const element::Type& input_type, + const element::Type& Reluected_output_type) { const auto in = std::make_shared(input_type, input_shape); const auto Relu = std::make_shared(in); - return std::make_shared(NodeVector {Relu}, ParameterVector {in}); + return std::make_shared(NodeVector{Relu}, ParameterVector{in}); } }; @@ -57,21 +62,19 @@ TEST_P(ReferenceReluLayerTest, CompareWithRefs) { Exec(); } - template std::vector generateReluFloatParams() { using T = typename element_type_traits::value_type; - std::vector reluParams { - ReluParams(ov::PartialShape {2, 5}, - IN_ET, - std::vector{1, 8, -8, 17, -0.5, 1, 8, -8, 17, -0.5}, - std::vector{1, 8, 0, 17, 0, 1, 8, 0, 17, 0}), - ReluParams(ov::PartialShape {2, 2, 2, 2}, - IN_ET, - std::vector{1, 8, -8, 17, -0.5, 1, 8, -8, 17, -0.5, 1, 8, -8, 17, -0.5, 1}, - std::vector{1, 8, 0, 17, 0, 1, 8, 0, 17, 0, 1, 8, 0, 17, 0, 1}) - }; + std::vector reluParams{ + ReluParams(ov::PartialShape{2, 5}, + IN_ET, + std::vector{1, 8, -8, 17, -0.5, 1, 8, -8, 17, -0.5}, + std::vector{1, 8, 0, 17, 0, 1, 8, 0, 17, 0}), + ReluParams(ov::PartialShape{2, 2, 2, 2}, + IN_ET, + std::vector{1, 8, -8, 17, -0.5, 1, 8, -8, 17, -0.5, 1, 8, -8, 17, -0.5, 1}, + std::vector{1, 8, 0, 17, 0, 1, 8, 0, 17, 0, 1, 8, 0, 17, 0, 1})}; return reluParams; } @@ -79,12 +82,10 @@ template std::vector generateReluIntParams() { using T = typename element_type_traits::value_type; - std::vector reluParams { - ReluParams(ov::PartialShape {2, 5}, - IN_ET, - std::vector{1, 8, -8, 17, -2, 1, 8, -8, 17, -1}, - std::vector{1, 8, 0, 17, 0, 1, 8, 0, 17, 0}) - }; + std::vector reluParams{ReluParams(ov::PartialShape{2, 5}, + IN_ET, + std::vector{1, 8, -8, 17, -2, 1, 8, -8, 17, -1}, + std::vector{1, 8, 0, 17, 0, 1, 8, 0, 17, 0})}; return reluParams; } @@ -92,24 +93,20 @@ template std::vector generateReluUintParams() { using T = typename element_type_traits::value_type; - std::vector reluParams { - ReluParams(ov::PartialShape {2, 5}, - IN_ET, - std::vector{1, 8, 17, 1, 8, 17, 1, 8, 17, 0}, - std::vector{1, 8, 17, 1, 8, 17, 1, 8, 17, 0}) - }; + std::vector reluParams{ReluParams(ov::PartialShape{2, 5}, + IN_ET, + std::vector{1, 8, 17, 1, 8, 17, 1, 8, 17, 0}, + std::vector{1, 8, 17, 1, 8, 17, 1, 8, 17, 0})}; return reluParams; } std::vector generateReluCombinedParams() { - const std::vector> reluTypeParams { - generateReluFloatParams(), - generateReluFloatParams(), - generateReluIntParams(), - generateReluIntParams(), - generateReluUintParams(), - generateReluUintParams() - }; + const std::vector> reluTypeParams{generateReluFloatParams(), + generateReluFloatParams(), + generateReluIntParams(), + generateReluIntParams(), + generateReluUintParams(), + generateReluUintParams()}; std::vector combinedParams; for (const auto& params : reluTypeParams) { @@ -118,7 +115,9 @@ std::vector generateReluCombinedParams() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_Relu_With_Hardcoded_Refs, ReferenceReluLayerTest, - testing::ValuesIn(generateReluCombinedParams()), ReferenceReluLayerTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_Relu_With_Hardcoded_Refs, + ReferenceReluLayerTest, + testing::ValuesIn(generateReluCombinedParams()), + ReferenceReluLayerTest::getTestCaseName); -} // namespace +} // namespace diff --git a/src/plugins/template/tests/functional/op_reference/reorg_yolo.cpp b/src/plugins/template/tests/functional/op_reference/reorg_yolo.cpp index ddea9ce114b..43e509b4b05 100644 --- a/src/plugins/template/tests/functional/op_reference/reorg_yolo.cpp +++ b/src/plugins/template/tests/functional/op_reference/reorg_yolo.cpp @@ -2,9 +2,10 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/reorg_yolo.hpp" + #include -#include "openvino/op/reorg_yolo.hpp" #include "base_reference_test.hpp" using namespace reference_tests; @@ -30,10 +31,10 @@ struct ReorgYoloParams { outType(iType), refData(CreateTensor(iType, oValues)), testcaseName(testcaseName) { - std::vector iValues(shape_size(inputShape.get_shape())); - std::iota(iValues.begin(), iValues.end(), 0); - inputData = CreateTensor(iType, iValues); - } + std::vector iValues(shape_size(inputShape.get_shape())); + std::iota(iValues.begin(), iValues.end(), 0); + inputData = CreateTensor(iType, iValues); + } ov::Strides stride; ov::PartialShape inputShape; @@ -72,7 +73,7 @@ private: static std::shared_ptr CreateFunction(const ReorgYoloParams& params) { const auto p = std::make_shared(params.inType, params.inputShape); const auto ReorgYolo = std::make_shared(p, params.stride); - return std::make_shared(NodeVector {ReorgYolo}, ParameterVector {p}); + return std::make_shared(NodeVector{ReorgYolo}, ParameterVector{p}); } }; @@ -84,28 +85,32 @@ template std::vector generateReorgYoloParams() { using T = typename element_type_traits::value_type; - std::vector reorgYoloParams { + std::vector reorgYoloParams{ ReorgYoloParams({2}, - PartialShape {1, 8, 4, 4}, + PartialShape{1, 8, 4, 4}, IN_ET, - std::vector{0, 2, 4, 6, 16, 18, 20, 22, 32, 34, 36, 38, 48, 50, 52, 54, 64, 66, 68, 70, 80, 82, - 84, 86, 96, 98, 100, 102, 112, 114, 116, 118, 1, 3, 5, 7, 17, 19, 21, 23, 33, 35, 37, 39, - 49, 51, 53, 55, 65, 67, 69, 71, 81, 83, 85, 87, 97, 99, 101, 103, 113, 115, 117, 119, 8, 10, - 12, 14, 24, 26, 28, 30, 40, 42, 44, 46, 56, 58, 60, 62, 72, 74, 76, 78, 88, 90, 92, 94, - 104, 106, 108, 110, 120, 122, 124, 126, 9, 11, 13, 15, 25, 27, 29, 31, 41, 43, 45, 47, 57, 59, - 61, 63, 73, 75, 77, 79, 89, 91, 93, 95, 105, 107, 109, 111, 121, 123, 125, 127}), - ReorgYoloParams({3}, - PartialShape {1, 9, 3, 3}, - IN_ET, - std::vector{0, 3, 6, 27, 30, 33, 54, 57, 60, 1, 4, 7, 28, 31, 34, 55, 58, 61, 2, 5, 8, 29, 32, 35, 56, 59, 62, - 9, 12, 15, 36, 39, 42, 63, 66, 69, 10, 13, 16, 37, 40, 43, 64, 67, 70, 11, 14, 17, 38, 41, 44, 65, 68, 71, - 18, 21, 24, 45, 48, 51, 72, 75, 78, 19, 22, 25, 46, 49, 52, 73, 76, 79, 20, 23, 26, 47, 50, 53, 74, 77, 80}), + std::vector{0, 2, 4, 6, 16, 18, 20, 22, 32, 34, 36, 38, 48, 50, 52, 54, + 64, 66, 68, 70, 80, 82, 84, 86, 96, 98, 100, 102, 112, 114, 116, 118, + 1, 3, 5, 7, 17, 19, 21, 23, 33, 35, 37, 39, 49, 51, 53, 55, + 65, 67, 69, 71, 81, 83, 85, 87, 97, 99, 101, 103, 113, 115, 117, 119, + 8, 10, 12, 14, 24, 26, 28, 30, 40, 42, 44, 46, 56, 58, 60, 62, + 72, 74, 76, 78, 88, 90, 92, 94, 104, 106, 108, 110, 120, 122, 124, 126, + 9, 11, 13, 15, 25, 27, 29, 31, 41, 43, 45, 47, 57, 59, 61, 63, + 73, 75, 77, 79, 89, 91, 93, 95, 105, 107, 109, 111, 121, 123, 125, 127}), + ReorgYoloParams( + {3}, + PartialShape{1, 9, 3, 3}, + IN_ET, + std::vector{0, 3, 6, 27, 30, 33, 54, 57, 60, 1, 4, 7, 28, 31, 34, 55, 58, 61, 2, 5, 8, + 29, 32, 35, 56, 59, 62, 9, 12, 15, 36, 39, 42, 63, 66, 69, 10, 13, 16, 37, 40, 43, + 64, 67, 70, 11, 14, 17, 38, 41, 44, 65, 68, 71, 18, 21, 24, 45, 48, 51, 72, 75, 78, + 19, 22, 25, 46, 49, 52, 73, 76, 79, 20, 23, 26, 47, 50, 53, 74, 77, 80}), }; return reorgYoloParams; } std::vector generateReorgYoloCombinedParams() { - const std::vector> reorgYoloTypeParams { + const std::vector> reorgYoloTypeParams{ generateReorgYoloParams(), generateReorgYoloParams(), generateReorgYoloParams(), @@ -118,7 +123,7 @@ std::vector generateReorgYoloCombinedParams() { generateReorgYoloParams(), generateReorgYoloParams(), generateReorgYoloParams(), - }; + }; std::vector combinedParams; for (const auto& params : reorgYoloTypeParams) { @@ -127,7 +132,9 @@ std::vector generateReorgYoloCombinedParams() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_ReorgYolo_With_Hardcoded_Refs, ReferenceReorgYoloLayerTest, - testing::ValuesIn(generateReorgYoloCombinedParams()), ReferenceReorgYoloLayerTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_ReorgYolo_With_Hardcoded_Refs, + ReferenceReorgYoloLayerTest, + testing::ValuesIn(generateReorgYoloCombinedParams()), + ReferenceReorgYoloLayerTest::getTestCaseName); -} // namespace +} // namespace diff --git a/src/plugins/template/tests/functional/op_reference/reshape.cpp b/src/plugins/template/tests/functional/op_reference/reshape.cpp index dabd4c20ce1..85dabdd6ce8 100644 --- a/src/plugins/template/tests/functional/op_reference/reshape.cpp +++ b/src/plugins/template/tests/functional/op_reference/reshape.cpp @@ -2,15 +2,16 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/reshape.hpp" + #include -#include "openvino/op/reshape.hpp" -#include "openvino/op/constant.hpp" #include "base_reference_test.hpp" +#include "openvino/op/constant.hpp" using namespace reference_tests; using namespace ov; -//using T1 = typename element_type_traits::value_type; +// using T1 = typename element_type_traits::value_type; namespace { struct ReshapeParams { @@ -27,15 +28,13 @@ struct ReshapeParams { m_input_type = input_type; m_expected_type = expected_type; m_zero_flag = zero_flag; - m_input_value = input_shape.size() > 0 - ? CreateTensor(input_shape, input_type, input_value) - : CreateTensor(input_type, input_value); - m_expected_value = expected_shape.size() > 0 - ? CreateTensor(expected_shape, expected_type, expected_value) - : CreateTensor(expected_type, expected_value); + m_input_value = input_shape.size() > 0 ? CreateTensor(input_shape, input_type, input_value) + : CreateTensor(input_type, input_value); + m_expected_value = expected_shape.size() > 0 ? CreateTensor(expected_shape, expected_type, expected_value) + : CreateTensor(expected_type, expected_value); } - template + template ReshapeParams(const Shape& input_shape, const Shape& expected_shape, const element::Type& input_type, @@ -69,7 +68,7 @@ struct ReshapeParams { }; struct ReshapeShuffleParams { - template + template ReshapeShuffleParams(const Shape& input_shape1, const Shape& input_shape2, const Shape& input_shape3, @@ -130,10 +129,10 @@ public: private: static std::shared_ptr CreateFunction(const element::Type& input_type, - const element::Type& expected_type, - const Shape& input_shape, - const Shape& expected_shape, - const bool zero_flag) { + const element::Type& expected_type, + const Shape& input_shape, + const Shape& expected_shape, + const bool zero_flag) { const auto in = std::make_shared(input_type, input_shape); const auto reshape = std::make_shared( in, @@ -143,7 +142,8 @@ private: } }; -class ReferenceReshapeShuffleLayerTest : public testing::TestWithParam, public CommonReferenceTest { +class ReferenceReshapeShuffleLayerTest : public testing::TestWithParam, + public CommonReferenceTest { public: void SetUp() override { const auto params = GetParam(); @@ -172,12 +172,12 @@ public: private: static std::shared_ptr CreateFunction(const element::Type& input_type, - const element::Type& expected_type, - const Shape& input_shape1, - const Shape& input_shape2, - const Shape& input_shape3, - const Shape& expected_shape, - const bool zero_flag) { + const element::Type& expected_type, + const Shape& input_shape1, + const Shape& input_shape2, + const Shape& input_shape3, + const Shape& expected_shape, + const bool zero_flag) { const auto in = std::make_shared(input_type, input_shape1); const auto reshape1 = std::make_shared( in, @@ -215,41 +215,11 @@ std::vector generateParamsForReshape() { std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}, std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}, false), - ReshapeParams(Shape{1, 1, 1}, - Shape{}, - ET, - ET, - std::vector{6}, - std::vector{6}, - false), - ReshapeParams(Shape{}, - Shape{1, 1, 1, 1, 1, 1}, - ET, - ET, - std::vector{42}, - std::vector{42}, - false), - ReshapeParams(Shape{3}, - Shape{3, 1}, - ET, - ET, - std::vector{1, 2, 3}, - std::vector{1, 2, 3}, - false), - ReshapeParams(Shape{3}, - Shape{1, 3}, - ET, - ET, - std::vector{1, 2, 3}, - std::vector{1, 2, 3}, - false), - ReshapeParams(Shape{3}, - Shape{1, 3, 1}, - ET, - ET, - std::vector{1, 2, 3}, - std::vector{1, 2, 3}, - false), + ReshapeParams(Shape{1, 1, 1}, Shape{}, ET, ET, std::vector{6}, std::vector{6}, false), + ReshapeParams(Shape{}, Shape{1, 1, 1, 1, 1, 1}, ET, ET, std::vector{42}, std::vector{42}, false), + ReshapeParams(Shape{3}, Shape{3, 1}, ET, ET, std::vector{1, 2, 3}, std::vector{1, 2, 3}, false), + ReshapeParams(Shape{3}, Shape{1, 3}, ET, ET, std::vector{1, 2, 3}, std::vector{1, 2, 3}, false), + ReshapeParams(Shape{3}, Shape{1, 3, 1}, ET, ET, std::vector{1, 2, 3}, std::vector{1, 2, 3}, false), ReshapeParams(Shape{3, 3}, Shape{3, 3}, ET, @@ -257,34 +227,10 @@ std::vector generateParamsForReshape() { std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9}, std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9}, false), - ReshapeParams(Shape{1}, - Shape{}, - ET, - ET, - std::vector{1}, - std::vector{1}, - false), - ReshapeParams(Shape{}, - Shape{}, - ET, - ET, - std::vector{1}, - std::vector{1}, - false), - ReshapeParams(Shape{2, 2, 3, 3, 2, 4}, - Shape{3, 2, 2, 4, 3, 2}, - ET, - ET, - false, - static_cast(1)), - ReshapeParams(Shape{2, 2, 5, 5}, - Shape{2, 5, 5, 2}, - ET, - ET, - true, - static_cast(1), - Shape{0, 5, 0, 2}) - }; + ReshapeParams(Shape{1}, Shape{}, ET, ET, std::vector{1}, std::vector{1}, false), + ReshapeParams(Shape{}, Shape{}, ET, ET, std::vector{1}, std::vector{1}, false), + ReshapeParams(Shape{2, 2, 3, 3, 2, 4}, Shape{3, 2, 2, 4, 3, 2}, ET, ET, false, static_cast(1)), + ReshapeParams(Shape{2, 2, 5, 5}, Shape{2, 5, 5, 2}, ET, ET, true, static_cast(1), Shape{0, 5, 0, 2})}; return params; } @@ -301,56 +247,13 @@ std::vector generateParamsForReshape8Bit() { std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}, std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}, false), - ReshapeParams(Shape{1, 1, 1}, - Shape{}, - ET, - ET, - std::vector{6}, - std::vector{6}, - false), - ReshapeParams(Shape{}, - Shape{1, 1, 1, 1, 1, 1}, - ET, - ET, - std::vector{42}, - std::vector{42}, - false), - ReshapeParams(Shape{3}, - Shape{3, 1}, - ET, - ET, - std::vector{1, 2, 3}, - std::vector{1, 2, 3}, - false), - ReshapeParams(Shape{3}, - Shape{1, 3}, - ET, - ET, - std::vector{1, 2, 3}, - std::vector{1, 2, 3}, - false), - ReshapeParams(Shape{3}, - Shape{1, 3, 1}, - ET, - ET, - std::vector{1, 2, 3}, - std::vector{1, 2, 3}, - false), - ReshapeParams(Shape{1}, - Shape{}, - ET, - ET, - std::vector{1}, - std::vector{1}, - false), - ReshapeParams(Shape{}, - Shape{}, - ET, - ET, - std::vector{1}, - std::vector{1}, - false) - }; + ReshapeParams(Shape{1, 1, 1}, Shape{}, ET, ET, std::vector{6}, std::vector{6}, false), + ReshapeParams(Shape{}, Shape{1, 1, 1, 1, 1, 1}, ET, ET, std::vector{42}, std::vector{42}, false), + ReshapeParams(Shape{3}, Shape{3, 1}, ET, ET, std::vector{1, 2, 3}, std::vector{1, 2, 3}, false), + ReshapeParams(Shape{3}, Shape{1, 3}, ET, ET, std::vector{1, 2, 3}, std::vector{1, 2, 3}, false), + ReshapeParams(Shape{3}, Shape{1, 3, 1}, ET, ET, std::vector{1, 2, 3}, std::vector{1, 2, 3}, false), + ReshapeParams(Shape{1}, Shape{}, ET, ET, std::vector{1}, std::vector{1}, false), + ReshapeParams(Shape{}, Shape{}, ET, ET, std::vector{1}, std::vector{1}, false)}; return params; } @@ -359,32 +262,28 @@ template std::vector generateParamsForReshapeShuffle() { using T = typename element_type_traits::value_type; - std::vector params{ - ReshapeShuffleParams(Shape{1, 112, 56, 56}, - Shape{1, 4, 28, 56, 56}, - Shape{1, 28, 4, 56, 56}, - Shape{1, 112, 56, 56}, - ET, - ET, - false, - static_cast(1)) - }; + std::vector params{ReshapeShuffleParams(Shape{1, 112, 56, 56}, + Shape{1, 4, 28, 56, 56}, + Shape{1, 28, 4, 56, 56}, + Shape{1, 112, 56, 56}, + ET, + ET, + false, + static_cast(1))}; return params; } std::vector generateCombinedParamsForReshape() { - const std::vector> allTypeParams{ - generateParamsForReshape(), - generateParamsForReshape(), - generateParamsForReshape(), - generateParamsForReshape(), - generateParamsForReshape(), - generateParamsForReshape(), - generateParamsForReshape(), - generateParamsForReshape8Bit(), - generateParamsForReshape8Bit() - }; + const std::vector> allTypeParams{generateParamsForReshape(), + generateParamsForReshape(), + generateParamsForReshape(), + generateParamsForReshape(), + generateParamsForReshape(), + generateParamsForReshape(), + generateParamsForReshape(), + generateParamsForReshape8Bit(), + generateParamsForReshape8Bit()}; std::vector combinedParams; @@ -417,16 +316,14 @@ std::vector generateCombinedParamsForReshapeShuffle() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P( - smoke_Reshape_With_Hardcoded_Refs, - ReferenceReshapeLayerTest, - ::testing::ValuesIn(generateCombinedParamsForReshape()), - ReferenceReshapeLayerTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_Reshape_With_Hardcoded_Refs, + ReferenceReshapeLayerTest, + ::testing::ValuesIn(generateCombinedParamsForReshape()), + ReferenceReshapeLayerTest::getTestCaseName); -INSTANTIATE_TEST_SUITE_P( - smoke_Reshape_Shuffle_With_Hardcoded_Refs, - ReferenceReshapeShuffleLayerTest, - ::testing::ValuesIn(generateCombinedParamsForReshapeShuffle()), - ReferenceReshapeShuffleLayerTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_Reshape_Shuffle_With_Hardcoded_Refs, + ReferenceReshapeShuffleLayerTest, + ::testing::ValuesIn(generateCombinedParamsForReshapeShuffle()), + ReferenceReshapeShuffleLayerTest::getTestCaseName); } // namespace diff --git a/src/plugins/template/tests/functional/op_reference/result.cpp b/src/plugins/template/tests/functional/op_reference/result.cpp index 38ba2ea06a0..9b458e4e130 100644 --- a/src/plugins/template/tests/functional/op_reference/result.cpp +++ b/src/plugins/template/tests/functional/op_reference/result.cpp @@ -2,11 +2,12 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/result.hpp" + #include #include "base_reference_test.hpp" #include "openvino/op/constant.hpp" -#include "openvino/op/result.hpp" using namespace reference_tests; using namespace ov; @@ -16,11 +17,11 @@ namespace { struct ResultParams { template ResultParams(const Shape& input_shape, - const Shape& expected_shape, - const element::Type& input_type, - const element::Type& expected_type, - const std::vector& input_value, - const std::vector& expected_value) + const Shape& expected_shape, + const element::Type& input_type, + const element::Type& expected_type, + const std::vector& input_value, + const std::vector& expected_value) : m_input_shape(input_shape), m_expected_shape(expected_shape), m_input_type(input_type), @@ -74,32 +75,24 @@ std::vector generateParamsForResult() { using T = typename element_type_traits::value_type; std::vector params{ - ResultParams(Shape{2, 2}, - Shape{2, 2}, - ET, - ET, - std::vector{1, 2, 3, 5}, - std::vector{1, 2, 3, 5}) - }; + ResultParams(Shape{2, 2}, Shape{2, 2}, ET, ET, std::vector{1, 2, 3, 5}, std::vector{1, 2, 3, 5})}; return params; } std::vector generateCombinedParamsForResult() { - const std::vector> allTypeParams{ - generateParamsForResult(), - generateParamsForResult(), - generateParamsForResult(), - generateParamsForResult(), - generateParamsForResult(), - generateParamsForResult(), - generateParamsForResult(), - generateParamsForResult(), - generateParamsForResult(), - generateParamsForResult(), - generateParamsForResult(), - generateParamsForResult() - }; + const std::vector> allTypeParams{generateParamsForResult(), + generateParamsForResult(), + generateParamsForResult(), + generateParamsForResult(), + generateParamsForResult(), + generateParamsForResult(), + generateParamsForResult(), + generateParamsForResult(), + generateParamsForResult(), + generateParamsForResult(), + generateParamsForResult(), + generateParamsForResult()}; std::vector combinedParams; @@ -110,10 +103,9 @@ std::vector generateCombinedParamsForResult() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P( - smoke_Result_With_Hardcoded_Refs, - ReferenceResultLayerTest, - ::testing::ValuesIn(generateCombinedParamsForResult()), - ReferenceResultLayerTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_Result_With_Hardcoded_Refs, + ReferenceResultLayerTest, + ::testing::ValuesIn(generateCombinedParamsForResult()), + ReferenceResultLayerTest::getTestCaseName); } // namespace diff --git a/src/plugins/template/tests/functional/op_reference/reverse.cpp b/src/plugins/template/tests/functional/op_reference/reverse.cpp index 48d3387cbd4..b7e19dfbdaf 100644 --- a/src/plugins/template/tests/functional/op_reference/reverse.cpp +++ b/src/plugins/template/tests/functional/op_reference/reverse.cpp @@ -9,7 +9,6 @@ #include "base_reference_test.hpp" #include "openvino/op/constant.hpp" - using namespace reference_tests; using namespace ov; diff --git a/src/plugins/template/tests/functional/op_reference/reverse_sequence.cpp b/src/plugins/template/tests/functional/op_reference/reverse_sequence.cpp index c4861456ffa..8135f94b360 100644 --- a/src/plugins/template/tests/functional/op_reference/reverse_sequence.cpp +++ b/src/plugins/template/tests/functional/op_reference/reverse_sequence.cpp @@ -2,9 +2,10 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/reverse_sequence.hpp" + #include -#include "openvino/op/reverse_sequence.hpp" #include "base_reference_test.hpp" using namespace reference_tests; @@ -12,9 +13,16 @@ using namespace ov; namespace { struct ReverseSequenceParams { - ReverseSequenceParams(const int64_t batchAxis, const int64_t seqAxis, const reference_tests::Tensor& dataTensor, const reference_tests::Tensor& seqLengthsTensor, - const reference_tests::Tensor& expectedTensor) : mBatchAxis(batchAxis), mSeqAxis(seqAxis), mDataTensor(dataTensor), - mSeqLengthsTensor(seqLengthsTensor), mExpectedTensor(expectedTensor) {} + ReverseSequenceParams(const int64_t batchAxis, + const int64_t seqAxis, + const reference_tests::Tensor& dataTensor, + const reference_tests::Tensor& seqLengthsTensor, + const reference_tests::Tensor& expectedTensor) + : mBatchAxis(batchAxis), + mSeqAxis(seqAxis), + mDataTensor(dataTensor), + mSeqLengthsTensor(seqLengthsTensor), + mExpectedTensor(expectedTensor) {} int64_t mBatchAxis; int64_t mSeqAxis; reference_tests::Tensor mDataTensor; @@ -45,9 +53,11 @@ public: private: static std::shared_ptr CreateFunction(const ReverseSequenceParams& params) { const auto data = std::make_shared(params.mDataTensor.type, params.mDataTensor.shape); - const auto seqLengths = std::make_shared(params.mSeqLengthsTensor.type, params.mSeqLengthsTensor.shape); - const auto reverseSequence = std::make_shared(data, seqLengths, params.mBatchAxis, params.mSeqAxis); - return std::make_shared(NodeVector {reverseSequence}, ParameterVector {data, seqLengths}); + const auto seqLengths = + std::make_shared(params.mSeqLengthsTensor.type, params.mSeqLengthsTensor.shape); + const auto reverseSequence = + std::make_shared(data, seqLengths, params.mBatchAxis, params.mSeqAxis); + return std::make_shared(NodeVector{reverseSequence}, ParameterVector{data, seqLengths}); } }; @@ -58,76 +68,93 @@ TEST_P(ReferenceReverseSequenceTest, CompareWithRefs) { template std::vector generateReverseSeqParams() { using T = typename element_type_traits::value_type; - std::vector reverseSeqParams { + std::vector reverseSeqParams{ // 2D - ReverseSequenceParams(1, 0, - reference_tests::Tensor({4, 4}, IN_ET, std::vector{0, 4, 8, 12, - 1, 5, 9, 13, - 2, 6, 10, 14, - 3, 7, 11, 15}), - reference_tests::Tensor({4}, element::i32, std::vector{4, 3, 2, 1}), - reference_tests::Tensor({4, 4}, IN_ET, std::vector{3, 6, 9, 12, - 2, 5, 8, 13, - 1, 4, 10, 14, - 0, 7, 11, 15})), - ReverseSequenceParams(0, 1, - reference_tests::Tensor({4, 4}, IN_ET, std::vector{0, 1, 2, 3, - 4, 5, 6, 7, - 8, 9, 10, 11, - 12, 13, 14, 15}), - reference_tests::Tensor({4}, element::i32, std::vector{1, 2, 3, 4}), - reference_tests::Tensor({4, 4}, IN_ET, std::vector{0, 1, 2, 3, - 5, 4, 6, 7, - 10, 9, 8, 11, - 15, 14, 13, 12})), + ReverseSequenceParams( + 1, + 0, + reference_tests::Tensor({4, 4}, + IN_ET, + std::vector{0, 4, 8, 12, 1, 5, 9, 13, 2, 6, 10, 14, 3, 7, 11, 15}), + reference_tests::Tensor({4}, element::i32, std::vector{4, 3, 2, 1}), + reference_tests::Tensor({4, 4}, + IN_ET, + std::vector{3, 6, 9, 12, 2, 5, 8, 13, 1, 4, 10, 14, 0, 7, 11, 15})), + ReverseSequenceParams( + 0, + 1, + reference_tests::Tensor({4, 4}, + IN_ET, + std::vector{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}), + reference_tests::Tensor({4}, element::i32, std::vector{1, 2, 3, 4}), + reference_tests::Tensor({4, 4}, + IN_ET, + std::vector{0, 1, 2, 3, 5, 4, 6, 7, 10, 9, 8, 11, 15, 14, 13, 12})), // 4D - ReverseSequenceParams(2, 1, - reference_tests::Tensor({2, 3, 4, 2}, IN_ET, std::vector{ - 0, 0, 3, 0, 6, 0, 9, 0, 1, 0, 4, 0, 7, 0, 10, 0, 2, 0, 5, 0, 8, 0, 11, 0, - 12, 0, 15, 0, 18, 0, 21, 0, 13, 0, 16, 0, 19, 0, 22, 0, 14, 0, 17, 0, 20, 0, 23, 0}), - reference_tests::Tensor({4}, element::i32, std::vector{1, 2, 1, 2}), - reference_tests::Tensor({2, 3, 4, 2}, IN_ET, std::vector{ - 0, 0, 4, 0, 6, 0, 10, 0, 1, 0, 3, 0, 7, 0, 9, 0, 2, 0, 5, 0, 8, 0, 11, 0, - 12, 0, 16, 0, 18, 0, 22, 0, 13, 0, 15, 0, 19, 0, 21, 0, 14, 0, 17, 0, 20, 0, 23, 0})), - ReverseSequenceParams(-2, -3, - reference_tests::Tensor({2, 3, 4, 2}, IN_ET, std::vector{ - 0, 0, 3, 0, 6, 0, 9, 0, 1, 0, 4, 0, 7, 0, 10, 0, 2, 0, 5, 0, 8, 0, 11, 0, - 12, 0, 15, 0, 18, 0, 21, 0, 13, 0, 16, 0, 19, 0, 22, 0, 14, 0, 17, 0, 20, 0, 23, 0}), - reference_tests::Tensor({4}, element::i32, std::vector{1, 2, 1, 2}), - reference_tests::Tensor({2, 3, 4, 2}, IN_ET, std::vector{ - 0, 0, 4, 0, 6, 0, 10, 0, 1, 0, 3, 0, 7, 0, 9, 0, 2, 0, 5, 0, 8, 0, 11, 0, - 12, 0, 16, 0, 18, 0, 22, 0, 13, 0, 15, 0, 19, 0, 21, 0, 14, 0, 17, 0, 20, 0, 23, 0})), - ReverseSequenceParams(0, 1, - reference_tests::Tensor({4, 3, 2, 2}, IN_ET, std::vector{ - 0, 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}), - reference_tests::Tensor({4}, element::i32, std::vector{1, 2, 3, 3}), - reference_tests::Tensor({4, 3, 2, 2}, IN_ET, std::vector{ - 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 16, 17, 18, 19, - 12, 13, 14, 15, 20, 21, 22, 23, 32, 33, 34, 35, 28, 29, 30, 31, - 24, 25, 26, 27, 44, 45, 46, 47, 40, 41, 42, 43, 36, 37, 38, 39})), + ReverseSequenceParams( + 2, + 1, + reference_tests::Tensor({2, 3, 4, 2}, IN_ET, std::vector{0, 0, 3, 0, 6, 0, 9, 0, 1, 0, 4, 0, + 7, 0, 10, 0, 2, 0, 5, 0, 8, 0, 11, 0, + 12, 0, 15, 0, 18, 0, 21, 0, 13, 0, 16, 0, + 19, 0, 22, 0, 14, 0, 17, 0, 20, 0, 23, 0}), + reference_tests::Tensor({4}, element::i32, std::vector{1, 2, 1, 2}), + reference_tests::Tensor({2, 3, 4, 2}, IN_ET, std::vector{0, 0, 4, 0, 6, 0, 10, 0, 1, 0, 3, 0, + 7, 0, 9, 0, 2, 0, 5, 0, 8, 0, 11, 0, + 12, 0, 16, 0, 18, 0, 22, 0, 13, 0, 15, 0, + 19, 0, 21, 0, 14, 0, 17, 0, 20, 0, 23, 0})), + ReverseSequenceParams( + -2, + -3, + reference_tests::Tensor({2, 3, 4, 2}, IN_ET, std::vector{0, 0, 3, 0, 6, 0, 9, 0, 1, 0, 4, 0, + 7, 0, 10, 0, 2, 0, 5, 0, 8, 0, 11, 0, + 12, 0, 15, 0, 18, 0, 21, 0, 13, 0, 16, 0, + 19, 0, 22, 0, 14, 0, 17, 0, 20, 0, 23, 0}), + reference_tests::Tensor({4}, element::i32, std::vector{1, 2, 1, 2}), + reference_tests::Tensor({2, 3, 4, 2}, IN_ET, std::vector{0, 0, 4, 0, 6, 0, 10, 0, 1, 0, 3, 0, + 7, 0, 9, 0, 2, 0, 5, 0, 8, 0, 11, 0, + 12, 0, 16, 0, 18, 0, 22, 0, 13, 0, 15, 0, + 19, 0, 21, 0, 14, 0, 17, 0, 20, 0, 23, 0})), + ReverseSequenceParams( + 0, + 1, + reference_tests::Tensor({4, 3, 2, 2}, + IN_ET, + std::vector{0, 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}), + reference_tests::Tensor({4}, element::i32, std::vector{1, 2, 3, 3}), + reference_tests::Tensor({4, 3, 2, 2}, + IN_ET, + std::vector{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 16, 17, 18, 19, + 12, 13, 14, 15, 20, 21, 22, 23, 32, 33, 34, 35, 28, 29, 30, 31, + 24, 25, 26, 27, 44, 45, 46, 47, 40, 41, 42, 43, 36, 37, 38, 39})), // 5D - ReverseSequenceParams(0, 2, - reference_tests::Tensor({4, 2, 3, 2, 2}, IN_ET, std::vector{ - 0, 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, 72, 73, 74, 75, 76, 77, 78, 79, - 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95}), - reference_tests::Tensor({4}, element::i32, std::vector{1, 2, 1, 2}), - reference_tests::Tensor({4, 3, 2, 2}, IN_ET, std::vector{ - 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, - 20, 21, 22, 23, 28, 29, 30, 31, 24, 25, 26, 27, 32, 33, 34, 35, 40, 41, 42, 43, - 36, 37, 38, 39, 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, 76, 77, 78, 79, 72, 73, 74, 75, - 80, 81, 82, 83, 88, 89, 90, 91, 84, 85, 86, 87, 92, 93, 94, 95})) - }; + ReverseSequenceParams( + 0, + 2, + reference_tests::Tensor( + {4, 2, 3, 2, 2}, + IN_ET, + std::vector{0, 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, 72, 73, 74, 75, 76, 77, 78, 79, + 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95}), + reference_tests::Tensor({4}, element::i32, std::vector{1, 2, 1, 2}), + reference_tests::Tensor( + {4, 3, 2, 2}, + IN_ET, + std::vector{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, + 20, 21, 22, 23, 28, 29, 30, 31, 24, 25, 26, 27, 32, 33, 34, 35, 40, 41, 42, 43, + 36, 37, 38, 39, 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, 76, 77, 78, 79, 72, 73, 74, 75, + 80, 81, 82, 83, 88, 89, 90, 91, 84, 85, 86, 87, 92, 93, 94, 95}))}; return reverseSeqParams; } std::vector generateReverseSeqCombinedParams() { - const std::vector> reverseSeqTypeParams { + const std::vector> reverseSeqTypeParams{ generateReverseSeqParams(), generateReverseSeqParams(), generateReverseSeqParams(), @@ -142,6 +169,8 @@ std::vector generateReverseSeqCombinedParams() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_ReverseSequence_With_Hardcoded_Refs, ReferenceReverseSequenceTest, - testing::ValuesIn(generateReverseSeqCombinedParams()), ReferenceReverseSequenceTest::getTestCaseName); -} // namespace +INSTANTIATE_TEST_SUITE_P(smoke_ReverseSequence_With_Hardcoded_Refs, + ReferenceReverseSequenceTest, + testing::ValuesIn(generateReverseSeqCombinedParams()), + ReferenceReverseSequenceTest::getTestCaseName); +} // namespace diff --git a/src/plugins/template/tests/functional/op_reference/rnn_cell.cpp b/src/plugins/template/tests/functional/op_reference/rnn_cell.cpp index 8d0c36d94d9..ae9685174a1 100644 --- a/src/plugins/template/tests/functional/op_reference/rnn_cell.cpp +++ b/src/plugins/template/tests/functional/op_reference/rnn_cell.cpp @@ -2,9 +2,10 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/rnn_cell.hpp" + #include -#include "openvino/op/rnn_cell.hpp" #include "base_reference_test.hpp" using namespace reference_tests; @@ -12,12 +13,26 @@ using namespace ov; namespace { struct RNNCellParams { - RNNCellParams( - int32_t batchSize, int32_t inputSize, int32_t hiddenSize, - const reference_tests::Tensor& X, const reference_tests::Tensor& H_t, const reference_tests::Tensor& W, const reference_tests::Tensor& R, const reference_tests::Tensor& B, - const reference_tests::Tensor& Ho, const std::string& testcaseName = "") : - batchSize(batchSize), inputSize(inputSize), hiddenSize(hiddenSize), - X(X), H_t(H_t), W(W), R(R), B(B), Ho(Ho), testcaseName(testcaseName) {} + RNNCellParams(int32_t batchSize, + int32_t inputSize, + int32_t hiddenSize, + const reference_tests::Tensor& X, + const reference_tests::Tensor& H_t, + const reference_tests::Tensor& W, + const reference_tests::Tensor& R, + const reference_tests::Tensor& B, + const reference_tests::Tensor& Ho, + const std::string& testcaseName = "") + : batchSize(batchSize), + inputSize(inputSize), + hiddenSize(hiddenSize), + X(X), + H_t(H_t), + W(W), + R(R), + B(B), + Ho(Ho), + testcaseName(testcaseName) {} int32_t batchSize; int32_t inputSize; @@ -89,9 +104,16 @@ private: const auto R = std::make_shared(params.R.type, params.R.shape); const auto B = std::make_shared(params.B.type, params.B.shape); - const auto rnn_cell = std::make_shared( - X, H_t, W, R, B, params.hiddenSize, - std::vector{"tanh"}, std::vector{}, std::vector{}, clip); + const auto rnn_cell = std::make_shared(X, + H_t, + W, + R, + B, + params.hiddenSize, + std::vector{"tanh"}, + std::vector{}, + std::vector{}, + clip); auto function = std::make_shared(NodeVector{rnn_cell}, ParameterVector{X, H_t, W, R, B}); return function; } @@ -146,40 +168,52 @@ TEST_P(ReferenceRNNCellTestSigmoidActivationFunction, CompareWithRefs) { template std::vector generateParams() { using T = typename element_type_traits::value_type; - std::vector params { - RNNCellParams( - 2, 3, 3, - reference_tests::Tensor(ET, {2, 3}, std::vector{ - 0.3432185f, 0.612268f, 0.20272376f, 0.9513413f, 0.30585995f, 0.7265472f}), - reference_tests::Tensor(ET, {2, 3}, std::vector{ - 0.12444675f, 0.52055854f, 0.46489045f, 0.4983964f, 0.7730452f, 0.28439692f}), - reference_tests::Tensor(ET, {3, 3}, std::vector{0.41930267f, - 0.7872176f, - 0.89940447f, - 0.23659843f, - 0.24676207f, - 0.17101714f, - 0.3147149f, - 0.6555601f, - 0.4559603f}), - reference_tests::Tensor(ET, {3, 3}, std::vector{0.8374871f, - 0.86660194f, - 0.82114047f, - 0.71549815f, - 0.18775631f, - 0.3182116f, - 0.25392973f, - 0.38301638f, - 0.85531586f}), - reference_tests::Tensor(ET, {3}, std::vector{0.0f, 0.0f, 0.0f}), - reference_tests::Tensor(ET, {2, 3}, std::vector{0.9408395f, 0.53823817f, 0.84270686f, 0.98932856f, 0.768665f, 0.90461975f}), - "rnn_cell_zero_bias_default_attrs"), + std::vector params{ + RNNCellParams(2, + 3, + 3, + reference_tests::Tensor( + ET, + {2, 3}, + std::vector{0.3432185f, 0.612268f, 0.20272376f, 0.9513413f, 0.30585995f, 0.7265472f}), + reference_tests::Tensor( + ET, + {2, 3}, + std::vector{0.12444675f, 0.52055854f, 0.46489045f, 0.4983964f, 0.7730452f, 0.28439692f}), + reference_tests::Tensor(ET, + {3, 3}, + std::vector{0.41930267f, + 0.7872176f, + 0.89940447f, + 0.23659843f, + 0.24676207f, + 0.17101714f, + 0.3147149f, + 0.6555601f, + 0.4559603f}), + reference_tests::Tensor(ET, + {3, 3}, + std::vector{0.8374871f, + 0.86660194f, + 0.82114047f, + 0.71549815f, + 0.18775631f, + 0.3182116f, + 0.25392973f, + 0.38301638f, + 0.85531586f}), + reference_tests::Tensor(ET, {3}, std::vector{0.0f, 0.0f, 0.0f}), + reference_tests::Tensor( + ET, + {2, 3}, + std::vector{0.9408395f, 0.53823817f, 0.84270686f, 0.98932856f, 0.768665f, 0.90461975f}), + "rnn_cell_zero_bias_default_attrs"), }; return params; } std::vector generateCombinedParams() { - const std::vector> generatedParams { + const std::vector> generatedParams{ generateParams(), generateParams(), generateParams(), @@ -196,40 +230,52 @@ std::vector generateCombinedParams() { template std::vector generateParamsBiasClip() { using T = typename element_type_traits::value_type; - std::vector params { - RNNCellParams( - 2, 3, 3, - reference_tests::Tensor(ET, {2, 3}, std::vector{ - 0.3432185f, 0.612268f, 0.20272376f, 0.9513413f, 0.30585995f, 0.7265472f}), - reference_tests::Tensor(ET, {2, 3}, std::vector{ - 0.12444675f, 0.52055854f, 0.46489045f, 0.4983964f, 0.7730452f, 0.28439692f}), - reference_tests::Tensor(ET, {3, 3}, std::vector{0.41930267f, - 0.7872176f, - 0.89940447f, - 0.23659843f, - 0.24676207f, - 0.17101714f, - 0.3147149f, - 0.6555601f, - 0.4559603f}), - reference_tests::Tensor(ET, {3, 3}, std::vector{0.8374871f, - 0.86660194f, - 0.82114047f, - 0.71549815f, - 0.18775631f, - 0.3182116f, - 0.25392973f, - 0.38301638f, - 0.85531586f}), - reference_tests::Tensor(ET, {3}, std::vector{1.0289404f, 1.6362579f, 0.4370661f}), - reference_tests::Tensor(ET, {2, 3}, std::vector{0.9922437f, 0.97749525f, 0.9312212f, 0.9937176f, 0.9901317f, 0.95906746f}), - "rnn_cell_bias_clip"), + std::vector params{ + RNNCellParams(2, + 3, + 3, + reference_tests::Tensor( + ET, + {2, 3}, + std::vector{0.3432185f, 0.612268f, 0.20272376f, 0.9513413f, 0.30585995f, 0.7265472f}), + reference_tests::Tensor( + ET, + {2, 3}, + std::vector{0.12444675f, 0.52055854f, 0.46489045f, 0.4983964f, 0.7730452f, 0.28439692f}), + reference_tests::Tensor(ET, + {3, 3}, + std::vector{0.41930267f, + 0.7872176f, + 0.89940447f, + 0.23659843f, + 0.24676207f, + 0.17101714f, + 0.3147149f, + 0.6555601f, + 0.4559603f}), + reference_tests::Tensor(ET, + {3, 3}, + std::vector{0.8374871f, + 0.86660194f, + 0.82114047f, + 0.71549815f, + 0.18775631f, + 0.3182116f, + 0.25392973f, + 0.38301638f, + 0.85531586f}), + reference_tests::Tensor(ET, {3}, std::vector{1.0289404f, 1.6362579f, 0.4370661f}), + reference_tests::Tensor( + ET, + {2, 3}, + std::vector{0.9922437f, 0.97749525f, 0.9312212f, 0.9937176f, 0.9901317f, 0.95906746f}), + "rnn_cell_bias_clip"), }; return params; } std::vector generateCombinedParamsBiasClip() { - const std::vector> generatedParams { + const std::vector> generatedParams{ generateParamsBiasClip(), generateParamsBiasClip(), generateParamsBiasClip(), @@ -246,40 +292,52 @@ std::vector generateCombinedParamsBiasClip() { template std::vector generateParamsSigmoidActivationFunction() { using T = typename element_type_traits::value_type; - std::vector params { - RNNCellParams( - 2, 3, 3, - reference_tests::Tensor(ET, {2, 3}, std::vector{ - 0.3432185f, 0.612268f, 0.20272376f, 0.9513413f, 0.30585995f, 0.7265472f}), - reference_tests::Tensor(ET, {2, 3}, std::vector{ - 0.12444675f, 0.52055854f, 0.46489045f, 0.4983964f, 0.7730452f, 0.28439692f}), - reference_tests::Tensor(ET, {3, 3}, std::vector{0.41930267f, - 0.7872176f, - 0.89940447f, - 0.23659843f, - 0.24676207f, - 0.17101714f, - 0.3147149f, - 0.6555601f, - 0.4559603f}), - reference_tests::Tensor(ET, {3, 3}, std::vector{0.8374871f, - 0.86660194f, - 0.82114047f, - 0.71549815f, - 0.18775631f, - 0.3182116f, - 0.25392973f, - 0.38301638f, - 0.85531586f}), - reference_tests::Tensor(ET, {3}, std::vector{1.0289404f, 1.6362579f, 0.4370661f}), - reference_tests::Tensor(ET, {2, 3}, std::vector{0.94126844f, 0.9036043f, 0.841243f, 0.9468489f, 0.934215f, 0.873708f}), - "rnn_cell_sigmoid_activation_function"), + std::vector params{ + RNNCellParams(2, + 3, + 3, + reference_tests::Tensor( + ET, + {2, 3}, + std::vector{0.3432185f, 0.612268f, 0.20272376f, 0.9513413f, 0.30585995f, 0.7265472f}), + reference_tests::Tensor( + ET, + {2, 3}, + std::vector{0.12444675f, 0.52055854f, 0.46489045f, 0.4983964f, 0.7730452f, 0.28439692f}), + reference_tests::Tensor(ET, + {3, 3}, + std::vector{0.41930267f, + 0.7872176f, + 0.89940447f, + 0.23659843f, + 0.24676207f, + 0.17101714f, + 0.3147149f, + 0.6555601f, + 0.4559603f}), + reference_tests::Tensor(ET, + {3, 3}, + std::vector{0.8374871f, + 0.86660194f, + 0.82114047f, + 0.71549815f, + 0.18775631f, + 0.3182116f, + 0.25392973f, + 0.38301638f, + 0.85531586f}), + reference_tests::Tensor(ET, {3}, std::vector{1.0289404f, 1.6362579f, 0.4370661f}), + reference_tests::Tensor( + ET, + {2, 3}, + std::vector{0.94126844f, 0.9036043f, 0.841243f, 0.9468489f, 0.934215f, 0.873708f}), + "rnn_cell_sigmoid_activation_function"), }; return params; } std::vector generateCombinedParamsSigmoidActivationFunction() { - const std::vector> generatedParams { + const std::vector> generatedParams{ generateParamsSigmoidActivationFunction(), generateParamsSigmoidActivationFunction(), generateParamsSigmoidActivationFunction(), @@ -293,12 +351,18 @@ std::vector generateCombinedParamsSigmoidActivationFunction() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_RNNCell_With_Hardcoded_Refs, ReferenceRNNCellTest, - testing::ValuesIn(generateCombinedParams()), ReferenceRNNCellTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_RNNCell_With_Hardcoded_Refs, + ReferenceRNNCellTest, + testing::ValuesIn(generateCombinedParams()), + ReferenceRNNCellTest::getTestCaseName); -INSTANTIATE_TEST_SUITE_P(smoke_RNNCell_With_Hardcoded_Refs, ReferenceRNNCellTestBiasClip, - testing::ValuesIn(generateCombinedParamsBiasClip()), ReferenceRNNCellTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_RNNCell_With_Hardcoded_Refs, + ReferenceRNNCellTestBiasClip, + testing::ValuesIn(generateCombinedParamsBiasClip()), + ReferenceRNNCellTest::getTestCaseName); -INSTANTIATE_TEST_SUITE_P(smoke_RNNCell_With_Hardcoded_Refs, ReferenceRNNCellTestSigmoidActivationFunction, - testing::ValuesIn(generateCombinedParamsSigmoidActivationFunction()), ReferenceRNNCellTest::getTestCaseName); -} // namespace +INSTANTIATE_TEST_SUITE_P(smoke_RNNCell_With_Hardcoded_Refs, + ReferenceRNNCellTestSigmoidActivationFunction, + testing::ValuesIn(generateCombinedParamsSigmoidActivationFunction()), + ReferenceRNNCellTest::getTestCaseName); +} // namespace diff --git a/src/plugins/template/tests/functional/op_reference/rnn_sequence.cpp b/src/plugins/template/tests/functional/op_reference/rnn_sequence.cpp index 2a8d5519fb9..de19641733b 100644 --- a/src/plugins/template/tests/functional/op_reference/rnn_sequence.cpp +++ b/src/plugins/template/tests/functional/op_reference/rnn_sequence.cpp @@ -2,9 +2,10 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/rnn_sequence.hpp" + #include -#include "openvino/op/rnn_sequence.hpp" #include "base_reference_test.hpp" using namespace reference_tests; @@ -13,37 +14,51 @@ using namespace ov; namespace { struct RNNSequenceParams { template - RNNSequenceParams( - const size_t batchSize, const size_t inputSize, const size_t hiddenSize, const size_t seqLength, - const float clip, const op::RecurrentSequenceDirection& rnn_direction, - const element::Type_t& iType, - const std::vector& XValues, const std::vector& H_tValues, const std::vector& seqLengthsValues, - const std::vector& WValues, const std::vector& RValues, const std::vector& BValues, - const std::vector& YValues, const std::vector& HoValues, - const std::string& testcaseName = "") : - batchSize(batchSize), inputSize(inputSize), hiddenSize(hiddenSize), seqLength(seqLength), - clip(clip), rnn_direction(rnn_direction), iType(iType), oType(iType), - testcaseName(testcaseName) { - numDirections = (rnn_direction == op::RecurrentSequenceDirection::BIDIRECTIONAL) ? 2 : 1; + RNNSequenceParams(const size_t batchSize, + const size_t inputSize, + const size_t hiddenSize, + const size_t seqLength, + const float clip, + const op::RecurrentSequenceDirection& rnn_direction, + const element::Type_t& iType, + const std::vector& XValues, + const std::vector& H_tValues, + const std::vector& seqLengthsValues, + const std::vector& WValues, + const std::vector& RValues, + const std::vector& BValues, + const std::vector& YValues, + const std::vector& HoValues, + const std::string& testcaseName = "") + : batchSize(batchSize), + inputSize(inputSize), + hiddenSize(hiddenSize), + seqLength(seqLength), + clip(clip), + rnn_direction(rnn_direction), + iType(iType), + oType(iType), + testcaseName(testcaseName) { + numDirections = (rnn_direction == op::RecurrentSequenceDirection::BIDIRECTIONAL) ? 2 : 1; - Shape XShape = Shape{batchSize, seqLength, inputSize}; - Shape H_tShape = Shape{batchSize, numDirections, hiddenSize}; - Shape seqLengthsShape = Shape{batchSize}; - Shape WShape = Shape{numDirections, hiddenSize, inputSize}; - Shape RShape = Shape{numDirections, hiddenSize, hiddenSize}; - Shape BShape = Shape{numDirections, hiddenSize}; - Shape YShape = Shape{batchSize, numDirections, seqLength, hiddenSize}; - Shape HoShape = Shape{batchSize, numDirections, hiddenSize}; + Shape XShape = Shape{batchSize, seqLength, inputSize}; + Shape H_tShape = Shape{batchSize, numDirections, hiddenSize}; + Shape seqLengthsShape = Shape{batchSize}; + Shape WShape = Shape{numDirections, hiddenSize, inputSize}; + Shape RShape = Shape{numDirections, hiddenSize, hiddenSize}; + Shape BShape = Shape{numDirections, hiddenSize}; + Shape YShape = Shape{batchSize, numDirections, seqLength, hiddenSize}; + Shape HoShape = Shape{batchSize, numDirections, hiddenSize}; - X = reference_tests::Tensor(XShape, iType, XValues); - H_t = reference_tests::Tensor(H_tShape, iType, H_tValues); - sequence_lengths = reference_tests::Tensor(seqLengthsShape, element::Type_t::i64, seqLengthsValues); - W = reference_tests::Tensor(WShape, iType, WValues); - R = reference_tests::Tensor(RShape, iType, RValues); - B = reference_tests::Tensor(BShape, iType, BValues); - Y = reference_tests::Tensor(YShape, oType, YValues); - Ho = reference_tests::Tensor(HoShape, oType, HoValues); - } + X = reference_tests::Tensor(XShape, iType, XValues); + H_t = reference_tests::Tensor(H_tShape, iType, H_tValues); + sequence_lengths = reference_tests::Tensor(seqLengthsShape, element::Type_t::i64, seqLengthsValues); + W = reference_tests::Tensor(WShape, iType, WValues); + R = reference_tests::Tensor(RShape, iType, RValues); + B = reference_tests::Tensor(BShape, iType, BValues); + Y = reference_tests::Tensor(YShape, oType, YValues); + Ho = reference_tests::Tensor(HoShape, oType, HoValues); + } size_t batchSize; size_t inputSize; @@ -71,7 +86,8 @@ public: void SetUp() override { auto params = GetParam(); function = CreateFunction(params); - inputData = {params.X.data, params.H_t.data, params.sequence_lengths.data, params.W.data, params.R.data, params.B.data}; + inputData = + {params.X.data, params.H_t.data, params.sequence_lengths.data, params.W.data, params.R.data, params.B.data}; refOutData = {params.Y.data, params.Ho.data}; } @@ -99,26 +115,27 @@ private: static std::shared_ptr CreateFunction(const RNNSequenceParams& params) { const auto X = std::make_shared(params.X.type, params.X.shape); const auto H_t = std::make_shared(params.H_t.type, params.H_t.shape); - const auto sequence_lengths = std::make_shared(params.sequence_lengths.type, params.sequence_lengths.shape); + const auto sequence_lengths = + std::make_shared(params.sequence_lengths.type, params.sequence_lengths.shape); const auto W = std::make_shared(params.W.type, params.W.shape); const auto R = std::make_shared(params.R.type, params.R.shape); const auto B = std::make_shared(params.B.type, params.B.shape); - const auto rnn_sequence = - std::make_shared(X, - H_t, - sequence_lengths, - W, - R, - B, - params.hiddenSize, - params.rnn_direction, - std::vector{"tanh"}, - std::vector{}, - std::vector{}, - params.clip); + const auto rnn_sequence = std::make_shared(X, + H_t, + sequence_lengths, + W, + R, + B, + params.hiddenSize, + params.rnn_direction, + std::vector{"tanh"}, + std::vector{}, + std::vector{}, + params.clip); - auto function = std::make_shared(rnn_sequence->outputs(), ParameterVector{X, H_t, sequence_lengths, W, R, B}); + auto function = + std::make_shared(rnn_sequence->outputs(), ParameterVector{X, H_t, sequence_lengths, W, R, B}); return function; } }; @@ -131,442 +148,564 @@ template std::vector generateParams() { using T = typename element_type_traits::value_type; - std::vector params { + std::vector params{ RNNSequenceParams( - 5, 10, 10, 10, - 0.f, op::RecurrentSequenceDirection::FORWARD, + 5, + 10, + 10, + 10, + 0.f, + op::RecurrentSequenceDirection::FORWARD, ET, - std::vector{ - -1, 0.780309, -0.738585, -0.920481, 0.652872, 0.0641558, 0.91262, -0.0761474, 0.847476, -0.252158, - -0.690053, 0.784687, -0.946421, -0.416995, -0.202512, 0.614577, 0.254189, 0.81585, 0.112795, 0.679838, - -0.899024, 0.61247, 0.861631, -0.271941, 0.381896, -0.741371, 0.665373, -0.363293, 0.474405, 0.193539, - -0.272586, 0.589941, 0.396962, 0.643758, 0.798932, 0.663799, 0.819915, 0.949827, 0.312239, 0.623979, - -0.794512, -0.524943, -0.24131, 0.398472, -0.0301095, -0.169556, 0.277324, 0.51858, 0.115046, 0.386911, - 0.826518, -0.950774, 0.674757, -0.23359, -0.402458, -0.987406, -0.124885, 0.475875, -0.248479, -0.0135011, - -0.971921, -0.501126, -0.30573, 0.593373, 0.876799, -0.798956, 0.470805, 0.952874, 0.411772, 0.903529, - 0.855695, -0.179938, -0.32381, 0.538217, -0.330704, -0.834627, 0.797116, 0.57467, 0.434931, -0.11202, - 0.501784, 0.315797, -0.278605, -0.243354, 0.299264, -0.888726, -0.843481, -0.816194, 0.61021, -0.869385, - -0.551361, -0.695734, 0.361182, -0.748082, -0.485284, -0.124065, -0.780665, -0.370868, -0.298536, 0.522286, - -0.802298, 0.862921, -0.347842, -0.146729, -0.458638, 0.57622, -0.0933521, -0.833528, -0.859246, -0.340501, - -0.61579, 0.675731, -0.876629, 0.108469, 0.141222, -0.0757794, 0.897658, -0.310452, 0.768898, -0.13792, - 0.98896, 0.601007, 0.883268, -0.241041, -0.18915, -0.426225, -0.0989319, 0.530222, 0.159798, -0.243754, - 0.244787, 0.478345, 0.826766, 0.0642072, 0.0356427, -0.794826, -0.75666, 0.287393, -0.108071, -0.84735, - -0.694862, -0.840984, 0.758743, -0.677052, 0.845901, -0.992841, 0.605204, -0.392934, -0.510492, 0.536422, - 0.406964, 0.772353, 0.826283, -0.549379, -0.157033, -0.668275, -0.57833, 0.679797, 0.830901, 0.363183, - -0.181486, -0.555743, 0.6706, 0.553474, 0.474691, 0.717404, 0.945023, -0.180081, 0.194028, 0.476884, - -0.466581, 0.526266, 0.861006, 0.749377, -0.767673, 0.934578, -0.394025, 0.218032, -0.664486, 0.716852, - 0.452785, -0.869765, 0.0361971, 0.190971, -0.0841559, 0.184484, -0.361089, 0.639664, -0.814522, -0.64626, - -0.558575, -0.0518135, 0.834904, 0.983071, 0.208429, 0.841115, -0.266728, -0.984396, 0.310033, -0.663894, - -0.00708379, 0.581608, 0.635922, -0.266473, -0.742514, -0.605766, -0.958209, 0.267088, -0.0427639, -0.575115, - -0.469043, -0.622282, 0.77962, 0.432287, -0.862854, -0.508723, 0.840711, -0.59019, -0.0682369, 0.526142, - 0.0647325, 0.102044, -0.529739, -0.448041, -0.966308, -0.155126, -0.906004, -0.881601, -0.362032, -0.113877, - -0.662836, -0.397345, -0.101194, -0.0538374, 0.408442, 0.40128, 0.187299, 0.94587, 0.324356, 0.75563, - -0.171329, 0.59615, -0.724044, -0.477747, -0.546406, 0.064904, 0.389431, -0.512046, -0.609801, 0.580285, - -0.18924, -0.129838, 0.252768, 0.357634, -0.137093, -0.409645, 0.99457, -0.60545, 0.115919, -0.0537746, - -0.822487, -0.37496, 0.197357, -0.901543, -0.264034, -0.743536, -0.948014, 0.464231, -0.473613, 0.422959, - 0.354869, 0.641287, 0.582011, 0.21152, 0.00800619, -0.138603, -0.798317, -0.0269492, -0.19921, 0.174343, - -0.111682, -0.532153, 0.268423, -0.541535, -0.497098, 0.957141, -0.106795, -0.838224, -0.760405, -0.0744435, - 0.556972, -0.203011, 0.248964, 0.59689, -0.0109004, -0.925239, 0.438413, 0.386685, -0.369077, 0.673153, - -0.919203, 0.259205, -0.956505, 0.483536, -0.206068, 0.0391633, -0.0715966, 0.34823, 0.700705, -0.3679, - -0.368349, -0.665279, 0.36909, 0.636464, -0.634393, -0.931031, 0.0198778, 0.556591, 0.233121, 0.880379, - -0.544078, 0.565815, -0.177247, 0.388592, -0.498401, 0.0146546, -0.43808, -0.562895, 0.847527, 0.556404, - -0.481485, -0.54575, 0.586809, -0.645919, -0.411731, 0.634336, -0.107599, 0.699691, 0.879165, -0.605746, - 0.851844, -0.197677, -0.0638249, -0.550345, 0.427207, 0.281324, 0.82633, -0.00911417, -0.523082, 0.360537, - 0.295952, 0.537166, 0.235453, 0.414191, 0.340562, -0.0328213, 0.828018, -0.944312, 0.806772, -0.108092, - 0.089091, -0.960954, 0.725746, 0.269557, -0.000429476, -0.231468, -0.991745, 0.471178, -0.496647, 0.943754, - -0.815517, -0.069551, 0.263998, -0.226304, -0.684247, -0.0426104, 0.0763018, 0.903734, 0.36846, -0.0844384, - -0.0746106, -0.641445, 0.969822, 0.997518, 0.307509, 0.622212, -0.349354, -0.876697, -0.7214, -0.594663, - -0.919986, 0.409152, -0.603743, -0.4911, 0.703263, 0.314707, 0.612499, -0.369318, 0.614946, 0.770576, - 0.371061, 0.593678, 0.750314, -0.364852, 0.698688, 0.609751, 0.142622, -0.787519, 0.509953, 0.415293, - -0.640467, 0.701937, 0.649218, 0.824335, 0.711544, -0.57001, -0.32463, -0.921129, -0.52984, -0.750256, - -0.445129, -0.122558, 0.719862, -0.354157, 0.975094, 0.930568, 0.390521, 0.340562, -0.927739, 0.570913, - 0.0577081, 0.345886, -0.147266, -0.920045, 0.290715, 0.137354, 0.409865, 0.407486, -0.548271, 0.969365, - -0.763785, -0.589062, 0.906249, 0.869164, -0.322404, 0.860601, -0.792338, -0.74819, -0.11752, 0.246401, - 0.215602, -0.659965, -0.334239, -0.701839, 0.916408, -0.870779, -0.765881, -0.0786394, -0.25551, 0.903985, - 0.159976, -0.731893, -0.88472, 0.310355, 0.421346, -0.190523, 0.320507, 0.689287, 0.976754, 0.910255, - 0.467333, -0.411659, 0.410252, 0.00145024, -0.329416, 0.0472609, 0.792444, 0.874022, -0.108247, 0.452289, - 0.613927, -0.608009, 0.0925679, -0.701885, -0.625309, -0.233405, -0.885755, 0.356572, 0.775295, -0.312218, - -0.485195, -0.760842, -0.196276, -0.326445, -0.837129, 0.260253, 0.125437, -0.848069, -0.850426, 1}, - std::vector{ - -1, 0.0194419, -0.633291, 0.617539, 0.87557, -0.940787, 0.569968, -0.672245, -0.132298, 0.148535, - -0.565955, 0.661358, -0.40092, -0.278338, 0.738713, -0.975645, 0.350663, -0.0375085, 0.954534, -0.57807, - -0.573083, 0.887977, -0.347673, 0.972259, -0.125333, 0.930768, -0.484139, 0.519932, -0.615546, -0.434102, - 0.539075, -0.983636, -0.29435, -0.532884, -0.229788, -0.78175, -0.185304, -0.189241, 0.540048, 0.68374, - -0.213783, -0.0673415, -0.791954, -0.618463, 0.345361, -0.0507364, 0.603086, -0.504686, 0.482923, 1}, + std::vector{-1, 0.780309, -0.738585, -0.920481, 0.652872, 0.0641558, 0.91262, + -0.0761474, 0.847476, -0.252158, -0.690053, 0.784687, -0.946421, -0.416995, + -0.202512, 0.614577, 0.254189, 0.81585, 0.112795, 0.679838, -0.899024, + 0.61247, 0.861631, -0.271941, 0.381896, -0.741371, 0.665373, -0.363293, + 0.474405, 0.193539, -0.272586, 0.589941, 0.396962, 0.643758, 0.798932, + 0.663799, 0.819915, 0.949827, 0.312239, 0.623979, -0.794512, -0.524943, + -0.24131, 0.398472, -0.0301095, -0.169556, 0.277324, 0.51858, 0.115046, + 0.386911, 0.826518, -0.950774, 0.674757, -0.23359, -0.402458, -0.987406, + -0.124885, 0.475875, -0.248479, -0.0135011, -0.971921, -0.501126, -0.30573, + 0.593373, 0.876799, -0.798956, 0.470805, 0.952874, 0.411772, 0.903529, + 0.855695, -0.179938, -0.32381, 0.538217, -0.330704, -0.834627, 0.797116, + 0.57467, 0.434931, -0.11202, 0.501784, 0.315797, -0.278605, -0.243354, + 0.299264, -0.888726, -0.843481, -0.816194, 0.61021, -0.869385, -0.551361, + -0.695734, 0.361182, -0.748082, -0.485284, -0.124065, -0.780665, -0.370868, + -0.298536, 0.522286, -0.802298, 0.862921, -0.347842, -0.146729, -0.458638, + 0.57622, -0.0933521, -0.833528, -0.859246, -0.340501, -0.61579, 0.675731, + -0.876629, 0.108469, 0.141222, -0.0757794, 0.897658, -0.310452, 0.768898, + -0.13792, 0.98896, 0.601007, 0.883268, -0.241041, -0.18915, -0.426225, + -0.0989319, 0.530222, 0.159798, -0.243754, 0.244787, 0.478345, 0.826766, + 0.0642072, 0.0356427, -0.794826, -0.75666, 0.287393, -0.108071, -0.84735, + -0.694862, -0.840984, 0.758743, -0.677052, 0.845901, -0.992841, 0.605204, + -0.392934, -0.510492, 0.536422, 0.406964, 0.772353, 0.826283, -0.549379, + -0.157033, -0.668275, -0.57833, 0.679797, 0.830901, 0.363183, -0.181486, + -0.555743, 0.6706, 0.553474, 0.474691, 0.717404, 0.945023, -0.180081, + 0.194028, 0.476884, -0.466581, 0.526266, 0.861006, 0.749377, -0.767673, + 0.934578, -0.394025, 0.218032, -0.664486, 0.716852, 0.452785, -0.869765, + 0.0361971, 0.190971, -0.0841559, 0.184484, -0.361089, 0.639664, -0.814522, + -0.64626, -0.558575, -0.0518135, 0.834904, 0.983071, 0.208429, 0.841115, + -0.266728, -0.984396, 0.310033, -0.663894, -0.00708379, 0.581608, 0.635922, + -0.266473, -0.742514, -0.605766, -0.958209, 0.267088, -0.0427639, -0.575115, + -0.469043, -0.622282, 0.77962, 0.432287, -0.862854, -0.508723, 0.840711, + -0.59019, -0.0682369, 0.526142, 0.0647325, 0.102044, -0.529739, -0.448041, + -0.966308, -0.155126, -0.906004, -0.881601, -0.362032, -0.113877, -0.662836, + -0.397345, -0.101194, -0.0538374, 0.408442, 0.40128, 0.187299, 0.94587, + 0.324356, 0.75563, -0.171329, 0.59615, -0.724044, -0.477747, -0.546406, + 0.064904, 0.389431, -0.512046, -0.609801, 0.580285, -0.18924, -0.129838, + 0.252768, 0.357634, -0.137093, -0.409645, 0.99457, -0.60545, 0.115919, + -0.0537746, -0.822487, -0.37496, 0.197357, -0.901543, -0.264034, -0.743536, + -0.948014, 0.464231, -0.473613, 0.422959, 0.354869, 0.641287, 0.582011, + 0.21152, 0.00800619, -0.138603, -0.798317, -0.0269492, -0.19921, 0.174343, + -0.111682, -0.532153, 0.268423, -0.541535, -0.497098, 0.957141, -0.106795, + -0.838224, -0.760405, -0.0744435, 0.556972, -0.203011, 0.248964, 0.59689, + -0.0109004, -0.925239, 0.438413, 0.386685, -0.369077, 0.673153, -0.919203, + 0.259205, -0.956505, 0.483536, -0.206068, 0.0391633, -0.0715966, 0.34823, + 0.700705, -0.3679, -0.368349, -0.665279, 0.36909, 0.636464, -0.634393, + -0.931031, 0.0198778, 0.556591, 0.233121, 0.880379, -0.544078, 0.565815, + -0.177247, 0.388592, -0.498401, 0.0146546, -0.43808, -0.562895, 0.847527, + 0.556404, -0.481485, -0.54575, 0.586809, -0.645919, -0.411731, 0.634336, + -0.107599, 0.699691, 0.879165, -0.605746, 0.851844, -0.197677, -0.0638249, + -0.550345, 0.427207, 0.281324, 0.82633, -0.00911417, -0.523082, 0.360537, + 0.295952, 0.537166, 0.235453, 0.414191, 0.340562, -0.0328213, 0.828018, + -0.944312, 0.806772, -0.108092, 0.089091, -0.960954, 0.725746, 0.269557, + -0.000429476, -0.231468, -0.991745, 0.471178, -0.496647, 0.943754, -0.815517, + -0.069551, 0.263998, -0.226304, -0.684247, -0.0426104, 0.0763018, 0.903734, + 0.36846, -0.0844384, -0.0746106, -0.641445, 0.969822, 0.997518, 0.307509, + 0.622212, -0.349354, -0.876697, -0.7214, -0.594663, -0.919986, 0.409152, + -0.603743, -0.4911, 0.703263, 0.314707, 0.612499, -0.369318, 0.614946, + 0.770576, 0.371061, 0.593678, 0.750314, -0.364852, 0.698688, 0.609751, + 0.142622, -0.787519, 0.509953, 0.415293, -0.640467, 0.701937, 0.649218, + 0.824335, 0.711544, -0.57001, -0.32463, -0.921129, -0.52984, -0.750256, + -0.445129, -0.122558, 0.719862, -0.354157, 0.975094, 0.930568, 0.390521, + 0.340562, -0.927739, 0.570913, 0.0577081, 0.345886, -0.147266, -0.920045, + 0.290715, 0.137354, 0.409865, 0.407486, -0.548271, 0.969365, -0.763785, + -0.589062, 0.906249, 0.869164, -0.322404, 0.860601, -0.792338, -0.74819, + -0.11752, 0.246401, 0.215602, -0.659965, -0.334239, -0.701839, 0.916408, + -0.870779, -0.765881, -0.0786394, -0.25551, 0.903985, 0.159976, -0.731893, + -0.88472, 0.310355, 0.421346, -0.190523, 0.320507, 0.689287, 0.976754, + 0.910255, 0.467333, -0.411659, 0.410252, 0.00145024, -0.329416, 0.0472609, + 0.792444, 0.874022, -0.108247, 0.452289, 0.613927, -0.608009, 0.0925679, + -0.701885, -0.625309, -0.233405, -0.885755, 0.356572, 0.775295, -0.312218, + -0.485195, -0.760842, -0.196276, -0.326445, -0.837129, 0.260253, 0.125437, + -0.848069, -0.850426, 1}, + std::vector{-1, 0.0194419, -0.633291, 0.617539, 0.87557, -0.940787, 0.569968, -0.672245, + -0.132298, 0.148535, -0.565955, 0.661358, -0.40092, -0.278338, 0.738713, -0.975645, + 0.350663, -0.0375085, 0.954534, -0.57807, -0.573083, 0.887977, -0.347673, 0.972259, + -0.125333, 0.930768, -0.484139, 0.519932, -0.615546, -0.434102, 0.539075, -0.983636, + -0.29435, -0.532884, -0.229788, -0.78175, -0.185304, -0.189241, 0.540048, 0.68374, + -0.213783, -0.0673415, -0.791954, -0.618463, 0.345361, -0.0507364, 0.603086, -0.504686, + 0.482923, 1}, std::vector{10, 10, 10, 10, 10}, + std::vector{-1, -0.913489, 0.693052, 0.019041, 0.0899735, 0.267736, -0.83394, 0.521807, + 0.782117, 0.297318, -0.269702, -0.912514, 0.694362, -0.6763, -0.041225, 0.136946, + -0.95289, 0.0132674, -0.716936, 0.821415, 0.94, -0.545582, -0.79185, -0.897178, + -0.871876, -0.752293, -0.219966, -0.144664, 0.981552, 0.738669, -0.02916, 0.661658, + -0.0956457, 0.187724, 0.0764894, -0.644897, 0.984866, -0.831317, 0.995369, -0.687197, + 0.796943, 0.211748, 0.720581, 0.659591, -0.45931, -0.407646, -0.223375, 0.916773, + -0.833119, -0.0234757, -0.377257, -0.914253, 0.754316, -0.968665, 0.387126, -0.781003, + -0.481575, 0.10334, 0.376482, -0.540745, 0.596997, -0.946251, -0.802122, -0.393072, + 0.917111, 0.51311, 0.708101, 0.502501, -0.457544, 0.603489, 0.889737, 0.809528, + -0.698177, 0.980047, 0.614314, 0.577663, 0.877533, -0.0142305, -0.282326, 0.272626, + 0.154382, 0.950671, 0.537283, -0.405515, -0.12969, -0.90906, 0.442845, -0.982063, + 0.761418, 0.346103, 0.061014, -0.221426, 0.655872, -0.487476, 0.0797454, -0.686778, + 0.272147, 0.612127, -0.390442, 1}, + std::vector{-1, 0.141964, -0.595054, -0.275782, -0.0524186, -0.100404, 0.356214, 0.892551, + -0.595043, -0.477837, 0.216629, -0.672137, 0.0817748, 0.356531, 0.22735, -0.73296, + -0.206045, -0.286988, 0.61286, 0.287588, 0.220286, 0.251281, -0.327665, -0.648745, + 0.792805, 0.644284, -0.355157, -0.430805, 0.363233, -0.828104, -0.650602, 0.406752, + -0.0604071, 0.370716, 0.38019, -0.441156, 0.713, 0.756505, 0.41166, -0.0277081, + 0.498859, -0.673484, -0.801405, -0.900367, 0.436681, -0.758691, 0.138279, 0.677402, + -0.744722, 0.939746, 0.669847, -0.402517, -0.970535, 0.92845, -0.662595, 0.89595, + 0.169792, 0.574887, 0.805658, -0.042754, 0.419412, 0.372186, 0.730907, -0.750522, + 0.985225, -0.205298, 0.843882, 0.233976, 0.272515, -0.194655, -0.405147, -0.61521, + 0.276029, 0.837373, -0.765691, -0.61865, -0.531337, -0.0268663, 0.804463, 0.958094, + -0.625586, -0.878096, 0.134272, -0.0648465, -0.356075, 0.447334, 0.745843, -0.997586, + 0.994596, -0.581395, -0.525029, -0.603188, 0.657781, 0.665195, -0.472963, 0.3469, + -0.658721, -0.485042, -0.038087, 1}, + std::vector{-1, 0.230334, 0.179311, -0.134689, 0.535764, -0.0883306, 0.945667, 0.757567, -0.164013, 1}, std::vector{ - -1, -0.913489, 0.693052, 0.019041, 0.0899735, 0.267736, -0.83394, 0.521807, 0.782117, 0.297318, - -0.269702, -0.912514, 0.694362, -0.6763, -0.041225, 0.136946, -0.95289, 0.0132674, -0.716936, 0.821415, - 0.94, -0.545582, -0.79185, -0.897178, -0.871876, -0.752293, -0.219966, -0.144664, 0.981552, 0.738669, - -0.02916, 0.661658, -0.0956457, 0.187724, 0.0764894, -0.644897, 0.984866, -0.831317, 0.995369, -0.687197, - 0.796943, 0.211748, 0.720581, 0.659591, -0.45931, -0.407646, -0.223375, 0.916773, -0.833119, -0.0234757, - -0.377257, -0.914253, 0.754316, -0.968665, 0.387126, -0.781003, -0.481575, 0.10334, 0.376482, -0.540745, - 0.596997, -0.946251, -0.802122, -0.393072, 0.917111, 0.51311, 0.708101, 0.502501, -0.457544, 0.603489, - 0.889737, 0.809528, -0.698177, 0.980047, 0.614314, 0.577663, 0.877533, -0.0142305, -0.282326, 0.272626, - 0.154382, 0.950671, 0.537283, -0.405515, -0.12969, -0.90906, 0.442845, -0.982063, 0.761418, 0.346103, - 0.061014, -0.221426, 0.655872, -0.487476, 0.0797454, -0.686778, 0.272147, 0.612127, -0.390442, 1}, - std::vector{ - -1, 0.141964, -0.595054, -0.275782, -0.0524186, -0.100404, 0.356214, 0.892551, -0.595043, -0.477837, - 0.216629, -0.672137, 0.0817748, 0.356531, 0.22735, -0.73296, -0.206045, -0.286988, 0.61286, 0.287588, - 0.220286, 0.251281, -0.327665, -0.648745, 0.792805, 0.644284, -0.355157, -0.430805, 0.363233, -0.828104, - -0.650602, 0.406752, -0.0604071, 0.370716, 0.38019, -0.441156, 0.713, 0.756505, 0.41166, -0.0277081, - 0.498859, -0.673484, -0.801405, -0.900367, 0.436681, -0.758691, 0.138279, 0.677402, -0.744722, 0.939746, - 0.669847, -0.402517, -0.970535, 0.92845, -0.662595, 0.89595, 0.169792, 0.574887, 0.805658, -0.042754, - 0.419412, 0.372186, 0.730907, -0.750522, 0.985225, -0.205298, 0.843882, 0.233976, 0.272515, -0.194655, - -0.405147, -0.61521, 0.276029, 0.837373, -0.765691, -0.61865, -0.531337, -0.0268663, 0.804463, 0.958094, - -0.625586, -0.878096, 0.134272, -0.0648465, -0.356075, 0.447334, 0.745843, -0.997586, 0.994596, -0.581395, - -0.525029, -0.603188, 0.657781, 0.665195, -0.472963, 0.3469, -0.658721, -0.485042, -0.038087, 1}, - std::vector{ - -1, 0.230334, 0.179311, -0.134689, 0.535764, -0.0883306, 0.945667, 0.757567, -0.164013, 1}, - std::vector{ - -0.470427, -0.735855, -0.329029, 0.999017, -0.97258, -0.832011, 0.845522, 0.894361, 0.958116, 0.224556, - -0.194886, 0.7597, -0.979301, 0.857585, -0.317987, 0.646902, 0.593991, 0.999861, 0.538864, 0.927538, - 0.37339, -0.72924, -0.950366, 0.998894, -0.345412, 0.999566, -0.905088, 0.653838, 0.931462, 0.963299, - -0.906984, 0.0686653, -0.987239, -0.536094, 0.796584, 0.99365, -0.558737, 0.999976, -0.599586, 0.998812, - 0.983484, -0.701986, 0.423666, -0.135422, 0.989586, 0.139235, 0.685596, -0.461324, -0.99599, 0.953192, - -0.966443, 0.971833, 0.924096, -0.966079, 0.999922, 0.619564, 0.992519, -0.955464, -0.780334, 0.996958, - 0.754961, -0.856074, 0.390907, 0.0981389, 0.119931, -0.998381, 0.999874, -0.831976, -0.451887, 0.995945, - -0.999099, -0.0742243, 0.0827845, 0.612425, 0.999317, -0.937344, 0.983523, 0.995035, 0.585578, 0.977957, - -0.43647, 0.388421, -0.258281, 0.999908, 0.831387, 0.667824, 0.562112, 0.922843, 0.822575, -0.242546, - 0.926723, 0.993825, 0.934094, 0.43523, -0.883989, 0.998732, 0.817433, -0.981772, 0.0274753, 0.835067, - -0.888153, 0.515512, -0.535921, 0.959418, -0.562229, -0.987868, 0.792129, 0.475789, 0.514164, -0.984779, - 0.0509315, -0.982143, -0.67308, 0.999919, -0.996151, -0.260185, 0.199735, 0.993083, 0.969637, -0.910127, - -0.675983, 0.70171, -0.299249, 0.829332, 0.944843, 0.999636, -0.939607, 0.989802, 0.988641, 0.905483, - -0.646793, 0.164027, -0.106558, 0.912668, 0.865034, 0.996346, -0.954819, 0.658484, -0.733437, 0.981117, - 0.370026, 0.921197, -0.488649, 0.0900238, 0.0720321, 0.992835, 0.585617, -0.46584, -0.903143, 0.99996, - -0.356482, -0.749733, 0.932796, -0.465316, 0.97494, 0.899907, -0.67506, -0.965299, 0.454869, 0.988603, - -0.982064, 0.828854, -0.220461, -0.86623, -0.339239, -0.96652, 0.991063, 0.991035, 0.777575, 0.999398, - 0.946364, 0.880981, -0.998482, 0.547716, 0.999092, -0.992971, 0.697291, 0.963563, -0.891479, 0.300176, - 0.364938, 0.775309, -0.820081, -0.376288, 0.999946, 0.558757, 0.997203, -0.866317, -0.999996, -0.941121, - 0.784196, -0.940529, -0.276717, 0.491236, -0.114034, -0.801807, 0.497822, -0.998929, -0.126009, -0.999082, - 0.681976, -0.725531, 0.510584, 0.12361, 0.125229, 0.977814, -0.998011, -0.965556, -0.631127, 0.871774, - -0.995246, 0.831005, 0.603614, -0.976149, 0.723436, 0.005006, -0.813208, 0.378399, 0.675123, 0.999891, - -0.91046, 0.734962, 0.983588, 0.29022, 0.353188, -0.987676, 0.607138, 0.0411221, -0.694228, 0.70539, - 0.932037, 0.733177, -0.964759, 0.257687, 0.195126, -0.995997, 0.998685, 0.826683, -0.990081, 0.991014, - -0.950626, -0.146971, -0.715613, 0.841348, 0.998419, -0.887543, 0.961327, 0.600526, -0.994247, -0.619601, - 0.84072, -0.738013, -0.698475, 0.999502, 0.881153, -0.793456, 0.739883, 0.0180047, 0.4453, -0.485067, - 0.313446, 0.99986, 0.801312, -0.827691, 0.933498, 0.999094, 0.803509, -0.98389, -0.00203269, 0.846717, - -0.988731, -0.155845, 0.813561, -0.821903, 0.876179, -0.974753, 0.978543, -0.888744, 0.618244, 0.827802, - -0.891081, 0.997132, -0.574761, -0.133318, 0.51666, -0.998325, 0.998647, 0.557186, 0.745226, 0.750499, - -0.151921, 0.471127, -0.0807336, 0.991118, 0.998363, -0.834192, 0.995547, 0.970334, -0.285624, 0.876872, - -0.89536, 0.233029, -0.512256, 0.0501049, 0.914272, -0.446383, -0.0660111, 0.987471, -0.293181, 0.0090407, - 0.993962, 0.725552, 0.861327, 0.802724, 0.996225, -0.357275, 0.692737, -0.765375, -0.923606, 0.94725, - -0.976212, 0.112285, 0.116271, 0.625773, -0.107807, -0.991827, 0.616004, -0.187246, -0.546877, 0.598621, - 0.984211, 0.834327, -0.949712, 0.697382, 0.314412, 0.264601, -0.0311285, -0.167991, -0.815124, 0.938068, - -0.997105, -0.0607237, 0.323916, -0.751497, 0.967815, 0.488129, 0.992229, 0.909782, -0.994726, 0.944747, - 0.0310377, -0.997291, -0.57774, 0.999577, 0.952662, -0.993977, 0.966995, 0.653885, 0.81589, -0.00180226, - 0.919955, 0.999967, -0.388806, -0.69297, 0.998599, 0.989852, 0.977406, 0.454365, -0.613587, 0.96152, - 0.668411, -0.834641, 0.808747, -0.218147, 0.994641, 0.649985, 0.983425, -0.999456, -0.993521, -0.237065, - -0.90937, 0.803391, -0.959971, -0.966409, 0.914242, -0.890865, 0.974014, -0.926672, -0.0687355, -0.127353, - 0.662279, -0.589603, 0.901327, 0.980076, -0.823804, -0.997316, 0.998387, -0.547919, 0.932731, -0.869742, - -0.873948, 0.587376, -0.0521998, 0.796093, 0.814562, -0.270571, 0.85441, 0.943845, 0.98825, 0.685685, - -0.451584, 0.0440054, -0.999464, 0.999774, 0.460959, 0.681076, -0.324321, 0.967583, 0.654874, -0.168221, - 0.667043, 0.960345, -0.97207, -0.595059, -0.106839, 0.993147, 0.943661, 0.942445, -0.939552, 0.971532, - -0.300632, -0.791734, 0.396844, -0.757931, 0.995531, 0.657585, 0.997931, -0.830918, -0.989057, 0.804422, - 0.851206, 0.947814, -0.89455, -0.972667, 0.973761, -0.978947, 0.71407, -0.969456, -0.0211013, 0.75895, - -0.824819, 0.994166, 0.996015, -0.911606, 0.992728, -0.180097, 0.999886, -0.970702, -0.859906, 0.384982, - 0.399817, -0.871178, 0.992977, 0.360447, -0.310061, -0.999914, 0.999989, -0.551683, -0.639379, 0.840487, - -0.977291, 0.950401, -0.958736, -0.796325, 0.997133, -0.937949, 0.994022, 0.99259, -0.233032, 0.999401, - 0.996386, 0.496829, 0.983234, 0.972622, 0.999547, 0.0118207, 0.977296, -0.989754, -0.984194, -0.799701, - -0.97941, 0.979603, 0.934784, -0.947689, -0.950645, -0.962226, 0.998866, -0.990042, -0.547825, 0.689601}, - std::vector{ - 0.926723, 0.993825, 0.934094, 0.43523, -0.883989, 0.998732, 0.817433, -0.981772, 0.0274753, 0.835067, - 0.784196, -0.940529, -0.276717, 0.491236, -0.114034, -0.801807, 0.497822, -0.998929, -0.126009, -0.999082, - -0.151921, 0.471127, -0.0807336, 0.991118, 0.998363, -0.834192, 0.995547, 0.970334, -0.285624, 0.876872, - 0.662279, -0.589603, 0.901327, 0.980076, -0.823804, -0.997316, 0.998387, -0.547919, 0.932731, -0.869742, - -0.97941, 0.979603, 0.934784, -0.947689, -0.950645, -0.962226, 0.998866, -0.990042, -0.547825, 0.689601}), + -0.470427, -0.735855, -0.329029, 0.999017, -0.97258, -0.832011, 0.845522, 0.894361, + 0.958116, 0.224556, -0.194886, 0.7597, -0.979301, 0.857585, -0.317987, 0.646902, + 0.593991, 0.999861, 0.538864, 0.927538, 0.37339, -0.72924, -0.950366, 0.998894, + -0.345412, 0.999566, -0.905088, 0.653838, 0.931462, 0.963299, -0.906984, 0.0686653, + -0.987239, -0.536094, 0.796584, 0.99365, -0.558737, 0.999976, -0.599586, 0.998812, + 0.983484, -0.701986, 0.423666, -0.135422, 0.989586, 0.139235, 0.685596, -0.461324, + -0.99599, 0.953192, -0.966443, 0.971833, 0.924096, -0.966079, 0.999922, 0.619564, + 0.992519, -0.955464, -0.780334, 0.996958, 0.754961, -0.856074, 0.390907, 0.0981389, + 0.119931, -0.998381, 0.999874, -0.831976, -0.451887, 0.995945, -0.999099, -0.0742243, + 0.0827845, 0.612425, 0.999317, -0.937344, 0.983523, 0.995035, 0.585578, 0.977957, + -0.43647, 0.388421, -0.258281, 0.999908, 0.831387, 0.667824, 0.562112, 0.922843, + 0.822575, -0.242546, 0.926723, 0.993825, 0.934094, 0.43523, -0.883989, 0.998732, + 0.817433, -0.981772, 0.0274753, 0.835067, -0.888153, 0.515512, -0.535921, 0.959418, + -0.562229, -0.987868, 0.792129, 0.475789, 0.514164, -0.984779, 0.0509315, -0.982143, + -0.67308, 0.999919, -0.996151, -0.260185, 0.199735, 0.993083, 0.969637, -0.910127, + -0.675983, 0.70171, -0.299249, 0.829332, 0.944843, 0.999636, -0.939607, 0.989802, + 0.988641, 0.905483, -0.646793, 0.164027, -0.106558, 0.912668, 0.865034, 0.996346, + -0.954819, 0.658484, -0.733437, 0.981117, 0.370026, 0.921197, -0.488649, 0.0900238, + 0.0720321, 0.992835, 0.585617, -0.46584, -0.903143, 0.99996, -0.356482, -0.749733, + 0.932796, -0.465316, 0.97494, 0.899907, -0.67506, -0.965299, 0.454869, 0.988603, + -0.982064, 0.828854, -0.220461, -0.86623, -0.339239, -0.96652, 0.991063, 0.991035, + 0.777575, 0.999398, 0.946364, 0.880981, -0.998482, 0.547716, 0.999092, -0.992971, + 0.697291, 0.963563, -0.891479, 0.300176, 0.364938, 0.775309, -0.820081, -0.376288, + 0.999946, 0.558757, 0.997203, -0.866317, -0.999996, -0.941121, 0.784196, -0.940529, + -0.276717, 0.491236, -0.114034, -0.801807, 0.497822, -0.998929, -0.126009, -0.999082, + 0.681976, -0.725531, 0.510584, 0.12361, 0.125229, 0.977814, -0.998011, -0.965556, + -0.631127, 0.871774, -0.995246, 0.831005, 0.603614, -0.976149, 0.723436, 0.005006, + -0.813208, 0.378399, 0.675123, 0.999891, -0.91046, 0.734962, 0.983588, 0.29022, + 0.353188, -0.987676, 0.607138, 0.0411221, -0.694228, 0.70539, 0.932037, 0.733177, + -0.964759, 0.257687, 0.195126, -0.995997, 0.998685, 0.826683, -0.990081, 0.991014, + -0.950626, -0.146971, -0.715613, 0.841348, 0.998419, -0.887543, 0.961327, 0.600526, + -0.994247, -0.619601, 0.84072, -0.738013, -0.698475, 0.999502, 0.881153, -0.793456, + 0.739883, 0.0180047, 0.4453, -0.485067, 0.313446, 0.99986, 0.801312, -0.827691, + 0.933498, 0.999094, 0.803509, -0.98389, -0.00203269, 0.846717, -0.988731, -0.155845, + 0.813561, -0.821903, 0.876179, -0.974753, 0.978543, -0.888744, 0.618244, 0.827802, + -0.891081, 0.997132, -0.574761, -0.133318, 0.51666, -0.998325, 0.998647, 0.557186, + 0.745226, 0.750499, -0.151921, 0.471127, -0.0807336, 0.991118, 0.998363, -0.834192, + 0.995547, 0.970334, -0.285624, 0.876872, -0.89536, 0.233029, -0.512256, 0.0501049, + 0.914272, -0.446383, -0.0660111, 0.987471, -0.293181, 0.0090407, 0.993962, 0.725552, + 0.861327, 0.802724, 0.996225, -0.357275, 0.692737, -0.765375, -0.923606, 0.94725, + -0.976212, 0.112285, 0.116271, 0.625773, -0.107807, -0.991827, 0.616004, -0.187246, + -0.546877, 0.598621, 0.984211, 0.834327, -0.949712, 0.697382, 0.314412, 0.264601, + -0.0311285, -0.167991, -0.815124, 0.938068, -0.997105, -0.0607237, 0.323916, -0.751497, + 0.967815, 0.488129, 0.992229, 0.909782, -0.994726, 0.944747, 0.0310377, -0.997291, + -0.57774, 0.999577, 0.952662, -0.993977, 0.966995, 0.653885, 0.81589, -0.00180226, + 0.919955, 0.999967, -0.388806, -0.69297, 0.998599, 0.989852, 0.977406, 0.454365, + -0.613587, 0.96152, 0.668411, -0.834641, 0.808747, -0.218147, 0.994641, 0.649985, + 0.983425, -0.999456, -0.993521, -0.237065, -0.90937, 0.803391, -0.959971, -0.966409, + 0.914242, -0.890865, 0.974014, -0.926672, -0.0687355, -0.127353, 0.662279, -0.589603, + 0.901327, 0.980076, -0.823804, -0.997316, 0.998387, -0.547919, 0.932731, -0.869742, + -0.873948, 0.587376, -0.0521998, 0.796093, 0.814562, -0.270571, 0.85441, 0.943845, + 0.98825, 0.685685, -0.451584, 0.0440054, -0.999464, 0.999774, 0.460959, 0.681076, + -0.324321, 0.967583, 0.654874, -0.168221, 0.667043, 0.960345, -0.97207, -0.595059, + -0.106839, 0.993147, 0.943661, 0.942445, -0.939552, 0.971532, -0.300632, -0.791734, + 0.396844, -0.757931, 0.995531, 0.657585, 0.997931, -0.830918, -0.989057, 0.804422, + 0.851206, 0.947814, -0.89455, -0.972667, 0.973761, -0.978947, 0.71407, -0.969456, + -0.0211013, 0.75895, -0.824819, 0.994166, 0.996015, -0.911606, 0.992728, -0.180097, + 0.999886, -0.970702, -0.859906, 0.384982, 0.399817, -0.871178, 0.992977, 0.360447, + -0.310061, -0.999914, 0.999989, -0.551683, -0.639379, 0.840487, -0.977291, 0.950401, + -0.958736, -0.796325, 0.997133, -0.937949, 0.994022, 0.99259, -0.233032, 0.999401, + 0.996386, 0.496829, 0.983234, 0.972622, 0.999547, 0.0118207, 0.977296, -0.989754, + -0.984194, -0.799701, -0.97941, 0.979603, 0.934784, -0.947689, -0.950645, -0.962226, + 0.998866, -0.990042, -0.547825, 0.689601}, + std::vector{0.926723, 0.993825, 0.934094, 0.43523, -0.883989, 0.998732, 0.817433, -0.981772, + 0.0274753, 0.835067, 0.784196, -0.940529, -0.276717, 0.491236, -0.114034, -0.801807, + 0.497822, -0.998929, -0.126009, -0.999082, -0.151921, 0.471127, -0.0807336, 0.991118, + 0.998363, -0.834192, 0.995547, 0.970334, -0.285624, 0.876872, 0.662279, -0.589603, + 0.901327, 0.980076, -0.823804, -0.997316, 0.998387, -0.547919, 0.932731, -0.869742, + -0.97941, 0.979603, 0.934784, -0.947689, -0.950645, -0.962226, 0.998866, -0.990042, + -0.547825, 0.689601}), RNNSequenceParams( - 5, 10, 10, 10, - 0.f, op::RecurrentSequenceDirection::REVERSE, + 5, + 10, + 10, + 10, + 0.f, + op::RecurrentSequenceDirection::REVERSE, ET, - std::vector{ - -1, 0.780309, -0.738585, -0.920481, 0.652872, 0.0641558, 0.91262, -0.0761474, 0.847476, -0.252158, - -0.690053, 0.784687, -0.946421, -0.416995, -0.202512, 0.614577, 0.254189, 0.81585, 0.112795, 0.679838, - -0.899024, 0.61247, 0.861631, -0.271941, 0.381896, -0.741371, 0.665373, -0.363293, 0.474405, 0.193539, - -0.272586, 0.589941, 0.396962, 0.643758, 0.798932, 0.663799, 0.819915, 0.949827, 0.312239, 0.623979, - -0.794512, -0.524943, -0.24131, 0.398472, -0.0301095, -0.169556, 0.277324, 0.51858, 0.115046, 0.386911, - 0.826518, -0.950774, 0.674757, -0.23359, -0.402458, -0.987406, -0.124885, 0.475875, -0.248479, -0.0135011, - -0.971921, -0.501126, -0.30573, 0.593373, 0.876799, -0.798956, 0.470805, 0.952874, 0.411772, 0.903529, - 0.855695, -0.179938, -0.32381, 0.538217, -0.330704, -0.834627, 0.797116, 0.57467, 0.434931, -0.11202, - 0.501784, 0.315797, -0.278605, -0.243354, 0.299264, -0.888726, -0.843481, -0.816194, 0.61021, -0.869385, - -0.551361, -0.695734, 0.361182, -0.748082, -0.485284, -0.124065, -0.780665, -0.370868, -0.298536, 0.522286, - -0.802298, 0.862921, -0.347842, -0.146729, -0.458638, 0.57622, -0.0933521, -0.833528, -0.859246, -0.340501, - -0.61579, 0.675731, -0.876629, 0.108469, 0.141222, -0.0757794, 0.897658, -0.310452, 0.768898, -0.13792, - 0.98896, 0.601007, 0.883268, -0.241041, -0.18915, -0.426225, -0.0989319, 0.530222, 0.159798, -0.243754, - 0.244787, 0.478345, 0.826766, 0.0642072, 0.0356427, -0.794826, -0.75666, 0.287393, -0.108071, -0.84735, - -0.694862, -0.840984, 0.758743, -0.677052, 0.845901, -0.992841, 0.605204, -0.392934, -0.510492, 0.536422, - 0.406964, 0.772353, 0.826283, -0.549379, -0.157033, -0.668275, -0.57833, 0.679797, 0.830901, 0.363183, - -0.181486, -0.555743, 0.6706, 0.553474, 0.474691, 0.717404, 0.945023, -0.180081, 0.194028, 0.476884, - -0.466581, 0.526266, 0.861006, 0.749377, -0.767673, 0.934578, -0.394025, 0.218032, -0.664486, 0.716852, - 0.452785, -0.869765, 0.0361971, 0.190971, -0.0841559, 0.184484, -0.361089, 0.639664, -0.814522, -0.64626, - -0.558575, -0.0518135, 0.834904, 0.983071, 0.208429, 0.841115, -0.266728, -0.984396, 0.310033, -0.663894, - -0.00708379, 0.581608, 0.635922, -0.266473, -0.742514, -0.605766, -0.958209, 0.267088, -0.0427639, -0.575115, - -0.469043, -0.622282, 0.77962, 0.432287, -0.862854, -0.508723, 0.840711, -0.59019, -0.0682369, 0.526142, - 0.0647325, 0.102044, -0.529739, -0.448041, -0.966308, -0.155126, -0.906004, -0.881601, -0.362032, -0.113877, - -0.662836, -0.397345, -0.101194, -0.0538374, 0.408442, 0.40128, 0.187299, 0.94587, 0.324356, 0.75563, - -0.171329, 0.59615, -0.724044, -0.477747, -0.546406, 0.064904, 0.389431, -0.512046, -0.609801, 0.580285, - -0.18924, -0.129838, 0.252768, 0.357634, -0.137093, -0.409645, 0.99457, -0.60545, 0.115919, -0.0537746, - -0.822487, -0.37496, 0.197357, -0.901543, -0.264034, -0.743536, -0.948014, 0.464231, -0.473613, 0.422959, - 0.354869, 0.641287, 0.582011, 0.21152, 0.00800619, -0.138603, -0.798317, -0.0269492, -0.19921, 0.174343, - -0.111682, -0.532153, 0.268423, -0.541535, -0.497098, 0.957141, -0.106795, -0.838224, -0.760405, -0.0744435, - 0.556972, -0.203011, 0.248964, 0.59689, -0.0109004, -0.925239, 0.438413, 0.386685, -0.369077, 0.673153, - -0.919203, 0.259205, -0.956505, 0.483536, -0.206068, 0.0391633, -0.0715966, 0.34823, 0.700705, -0.3679, - -0.368349, -0.665279, 0.36909, 0.636464, -0.634393, -0.931031, 0.0198778, 0.556591, 0.233121, 0.880379, - -0.544078, 0.565815, -0.177247, 0.388592, -0.498401, 0.0146546, -0.43808, -0.562895, 0.847527, 0.556404, - -0.481485, -0.54575, 0.586809, -0.645919, -0.411731, 0.634336, -0.107599, 0.699691, 0.879165, -0.605746, - 0.851844, -0.197677, -0.0638249, -0.550345, 0.427207, 0.281324, 0.82633, -0.00911417, -0.523082, 0.360537, - 0.295952, 0.537166, 0.235453, 0.414191, 0.340562, -0.0328213, 0.828018, -0.944312, 0.806772, -0.108092, - 0.089091, -0.960954, 0.725746, 0.269557, -0.000429476, -0.231468, -0.991745, 0.471178, -0.496647, 0.943754, - -0.815517, -0.069551, 0.263998, -0.226304, -0.684247, -0.0426104, 0.0763018, 0.903734, 0.36846, -0.0844384, - -0.0746106, -0.641445, 0.969822, 0.997518, 0.307509, 0.622212, -0.349354, -0.876697, -0.7214, -0.594663, - -0.919986, 0.409152, -0.603743, -0.4911, 0.703263, 0.314707, 0.612499, -0.369318, 0.614946, 0.770576, - 0.371061, 0.593678, 0.750314, -0.364852, 0.698688, 0.609751, 0.142622, -0.787519, 0.509953, 0.415293, - -0.640467, 0.701937, 0.649218, 0.824335, 0.711544, -0.57001, -0.32463, -0.921129, -0.52984, -0.750256, - -0.445129, -0.122558, 0.719862, -0.354157, 0.975094, 0.930568, 0.390521, 0.340562, -0.927739, 0.570913, - 0.0577081, 0.345886, -0.147266, -0.920045, 0.290715, 0.137354, 0.409865, 0.407486, -0.548271, 0.969365, - -0.763785, -0.589062, 0.906249, 0.869164, -0.322404, 0.860601, -0.792338, -0.74819, -0.11752, 0.246401, - 0.215602, -0.659965, -0.334239, -0.701839, 0.916408, -0.870779, -0.765881, -0.0786394, -0.25551, 0.903985, - 0.159976, -0.731893, -0.88472, 0.310355, 0.421346, -0.190523, 0.320507, 0.689287, 0.976754, 0.910255, - 0.467333, -0.411659, 0.410252, 0.00145024, -0.329416, 0.0472609, 0.792444, 0.874022, -0.108247, 0.452289, - 0.613927, -0.608009, 0.0925679, -0.701885, -0.625309, -0.233405, -0.885755, 0.356572, 0.775295, -0.312218, - -0.485195, -0.760842, -0.196276, -0.326445, -0.837129, 0.260253, 0.125437, -0.848069, -0.850426, 1}, - std::vector{ - -1, 0.0194419, -0.633291, 0.617539, 0.87557, -0.940787, 0.569968, -0.672245, -0.132298, 0.148535, - -0.565955, 0.661358, -0.40092, -0.278338, 0.738713, -0.975645, 0.350663, -0.0375085, 0.954534, -0.57807, - -0.573083, 0.887977, -0.347673, 0.972259, -0.125333, 0.930768, -0.484139, 0.519932, -0.615546, -0.434102, - 0.539075, -0.983636, -0.29435, -0.532884, -0.229788, -0.78175, -0.185304, -0.189241, 0.540048, 0.68374, - -0.213783, -0.0673415, -0.791954, -0.618463, 0.345361, -0.0507364, 0.603086, -0.504686, 0.482923, 1}, + std::vector{-1, 0.780309, -0.738585, -0.920481, 0.652872, 0.0641558, 0.91262, + -0.0761474, 0.847476, -0.252158, -0.690053, 0.784687, -0.946421, -0.416995, + -0.202512, 0.614577, 0.254189, 0.81585, 0.112795, 0.679838, -0.899024, + 0.61247, 0.861631, -0.271941, 0.381896, -0.741371, 0.665373, -0.363293, + 0.474405, 0.193539, -0.272586, 0.589941, 0.396962, 0.643758, 0.798932, + 0.663799, 0.819915, 0.949827, 0.312239, 0.623979, -0.794512, -0.524943, + -0.24131, 0.398472, -0.0301095, -0.169556, 0.277324, 0.51858, 0.115046, + 0.386911, 0.826518, -0.950774, 0.674757, -0.23359, -0.402458, -0.987406, + -0.124885, 0.475875, -0.248479, -0.0135011, -0.971921, -0.501126, -0.30573, + 0.593373, 0.876799, -0.798956, 0.470805, 0.952874, 0.411772, 0.903529, + 0.855695, -0.179938, -0.32381, 0.538217, -0.330704, -0.834627, 0.797116, + 0.57467, 0.434931, -0.11202, 0.501784, 0.315797, -0.278605, -0.243354, + 0.299264, -0.888726, -0.843481, -0.816194, 0.61021, -0.869385, -0.551361, + -0.695734, 0.361182, -0.748082, -0.485284, -0.124065, -0.780665, -0.370868, + -0.298536, 0.522286, -0.802298, 0.862921, -0.347842, -0.146729, -0.458638, + 0.57622, -0.0933521, -0.833528, -0.859246, -0.340501, -0.61579, 0.675731, + -0.876629, 0.108469, 0.141222, -0.0757794, 0.897658, -0.310452, 0.768898, + -0.13792, 0.98896, 0.601007, 0.883268, -0.241041, -0.18915, -0.426225, + -0.0989319, 0.530222, 0.159798, -0.243754, 0.244787, 0.478345, 0.826766, + 0.0642072, 0.0356427, -0.794826, -0.75666, 0.287393, -0.108071, -0.84735, + -0.694862, -0.840984, 0.758743, -0.677052, 0.845901, -0.992841, 0.605204, + -0.392934, -0.510492, 0.536422, 0.406964, 0.772353, 0.826283, -0.549379, + -0.157033, -0.668275, -0.57833, 0.679797, 0.830901, 0.363183, -0.181486, + -0.555743, 0.6706, 0.553474, 0.474691, 0.717404, 0.945023, -0.180081, + 0.194028, 0.476884, -0.466581, 0.526266, 0.861006, 0.749377, -0.767673, + 0.934578, -0.394025, 0.218032, -0.664486, 0.716852, 0.452785, -0.869765, + 0.0361971, 0.190971, -0.0841559, 0.184484, -0.361089, 0.639664, -0.814522, + -0.64626, -0.558575, -0.0518135, 0.834904, 0.983071, 0.208429, 0.841115, + -0.266728, -0.984396, 0.310033, -0.663894, -0.00708379, 0.581608, 0.635922, + -0.266473, -0.742514, -0.605766, -0.958209, 0.267088, -0.0427639, -0.575115, + -0.469043, -0.622282, 0.77962, 0.432287, -0.862854, -0.508723, 0.840711, + -0.59019, -0.0682369, 0.526142, 0.0647325, 0.102044, -0.529739, -0.448041, + -0.966308, -0.155126, -0.906004, -0.881601, -0.362032, -0.113877, -0.662836, + -0.397345, -0.101194, -0.0538374, 0.408442, 0.40128, 0.187299, 0.94587, + 0.324356, 0.75563, -0.171329, 0.59615, -0.724044, -0.477747, -0.546406, + 0.064904, 0.389431, -0.512046, -0.609801, 0.580285, -0.18924, -0.129838, + 0.252768, 0.357634, -0.137093, -0.409645, 0.99457, -0.60545, 0.115919, + -0.0537746, -0.822487, -0.37496, 0.197357, -0.901543, -0.264034, -0.743536, + -0.948014, 0.464231, -0.473613, 0.422959, 0.354869, 0.641287, 0.582011, + 0.21152, 0.00800619, -0.138603, -0.798317, -0.0269492, -0.19921, 0.174343, + -0.111682, -0.532153, 0.268423, -0.541535, -0.497098, 0.957141, -0.106795, + -0.838224, -0.760405, -0.0744435, 0.556972, -0.203011, 0.248964, 0.59689, + -0.0109004, -0.925239, 0.438413, 0.386685, -0.369077, 0.673153, -0.919203, + 0.259205, -0.956505, 0.483536, -0.206068, 0.0391633, -0.0715966, 0.34823, + 0.700705, -0.3679, -0.368349, -0.665279, 0.36909, 0.636464, -0.634393, + -0.931031, 0.0198778, 0.556591, 0.233121, 0.880379, -0.544078, 0.565815, + -0.177247, 0.388592, -0.498401, 0.0146546, -0.43808, -0.562895, 0.847527, + 0.556404, -0.481485, -0.54575, 0.586809, -0.645919, -0.411731, 0.634336, + -0.107599, 0.699691, 0.879165, -0.605746, 0.851844, -0.197677, -0.0638249, + -0.550345, 0.427207, 0.281324, 0.82633, -0.00911417, -0.523082, 0.360537, + 0.295952, 0.537166, 0.235453, 0.414191, 0.340562, -0.0328213, 0.828018, + -0.944312, 0.806772, -0.108092, 0.089091, -0.960954, 0.725746, 0.269557, + -0.000429476, -0.231468, -0.991745, 0.471178, -0.496647, 0.943754, -0.815517, + -0.069551, 0.263998, -0.226304, -0.684247, -0.0426104, 0.0763018, 0.903734, + 0.36846, -0.0844384, -0.0746106, -0.641445, 0.969822, 0.997518, 0.307509, + 0.622212, -0.349354, -0.876697, -0.7214, -0.594663, -0.919986, 0.409152, + -0.603743, -0.4911, 0.703263, 0.314707, 0.612499, -0.369318, 0.614946, + 0.770576, 0.371061, 0.593678, 0.750314, -0.364852, 0.698688, 0.609751, + 0.142622, -0.787519, 0.509953, 0.415293, -0.640467, 0.701937, 0.649218, + 0.824335, 0.711544, -0.57001, -0.32463, -0.921129, -0.52984, -0.750256, + -0.445129, -0.122558, 0.719862, -0.354157, 0.975094, 0.930568, 0.390521, + 0.340562, -0.927739, 0.570913, 0.0577081, 0.345886, -0.147266, -0.920045, + 0.290715, 0.137354, 0.409865, 0.407486, -0.548271, 0.969365, -0.763785, + -0.589062, 0.906249, 0.869164, -0.322404, 0.860601, -0.792338, -0.74819, + -0.11752, 0.246401, 0.215602, -0.659965, -0.334239, -0.701839, 0.916408, + -0.870779, -0.765881, -0.0786394, -0.25551, 0.903985, 0.159976, -0.731893, + -0.88472, 0.310355, 0.421346, -0.190523, 0.320507, 0.689287, 0.976754, + 0.910255, 0.467333, -0.411659, 0.410252, 0.00145024, -0.329416, 0.0472609, + 0.792444, 0.874022, -0.108247, 0.452289, 0.613927, -0.608009, 0.0925679, + -0.701885, -0.625309, -0.233405, -0.885755, 0.356572, 0.775295, -0.312218, + -0.485195, -0.760842, -0.196276, -0.326445, -0.837129, 0.260253, 0.125437, + -0.848069, -0.850426, 1}, + std::vector{-1, 0.0194419, -0.633291, 0.617539, 0.87557, -0.940787, 0.569968, -0.672245, + -0.132298, 0.148535, -0.565955, 0.661358, -0.40092, -0.278338, 0.738713, -0.975645, + 0.350663, -0.0375085, 0.954534, -0.57807, -0.573083, 0.887977, -0.347673, 0.972259, + -0.125333, 0.930768, -0.484139, 0.519932, -0.615546, -0.434102, 0.539075, -0.983636, + -0.29435, -0.532884, -0.229788, -0.78175, -0.185304, -0.189241, 0.540048, 0.68374, + -0.213783, -0.0673415, -0.791954, -0.618463, 0.345361, -0.0507364, 0.603086, -0.504686, + 0.482923, 1}, std::vector{10, 10, 10, 10, 10}, + std::vector{-1, -0.913489, 0.693052, 0.019041, 0.0899735, 0.267736, -0.83394, 0.521807, + 0.782117, 0.297318, -0.269702, -0.912514, 0.694362, -0.6763, -0.041225, 0.136946, + -0.95289, 0.0132674, -0.716936, 0.821415, 0.94, -0.545582, -0.79185, -0.897178, + -0.871876, -0.752293, -0.219966, -0.144664, 0.981552, 0.738669, -0.02916, 0.661658, + -0.0956457, 0.187724, 0.0764894, -0.644897, 0.984866, -0.831317, 0.995369, -0.687197, + 0.796943, 0.211748, 0.720581, 0.659591, -0.45931, -0.407646, -0.223375, 0.916773, + -0.833119, -0.0234757, -0.377257, -0.914253, 0.754316, -0.968665, 0.387126, -0.781003, + -0.481575, 0.10334, 0.376482, -0.540745, 0.596997, -0.946251, -0.802122, -0.393072, + 0.917111, 0.51311, 0.708101, 0.502501, -0.457544, 0.603489, 0.889737, 0.809528, + -0.698177, 0.980047, 0.614314, 0.577663, 0.877533, -0.0142305, -0.282326, 0.272626, + 0.154382, 0.950671, 0.537283, -0.405515, -0.12969, -0.90906, 0.442845, -0.982063, + 0.761418, 0.346103, 0.061014, -0.221426, 0.655872, -0.487476, 0.0797454, -0.686778, + 0.272147, 0.612127, -0.390442, 1}, + std::vector{-1, 0.141964, -0.595054, -0.275782, -0.0524186, -0.100404, 0.356214, 0.892551, + -0.595043, -0.477837, 0.216629, -0.672137, 0.0817748, 0.356531, 0.22735, -0.73296, + -0.206045, -0.286988, 0.61286, 0.287588, 0.220286, 0.251281, -0.327665, -0.648745, + 0.792805, 0.644284, -0.355157, -0.430805, 0.363233, -0.828104, -0.650602, 0.406752, + -0.0604071, 0.370716, 0.38019, -0.441156, 0.713, 0.756505, 0.41166, -0.0277081, + 0.498859, -0.673484, -0.801405, -0.900367, 0.436681, -0.758691, 0.138279, 0.677402, + -0.744722, 0.939746, 0.669847, -0.402517, -0.970535, 0.92845, -0.662595, 0.89595, + 0.169792, 0.574887, 0.805658, -0.042754, 0.419412, 0.372186, 0.730907, -0.750522, + 0.985225, -0.205298, 0.843882, 0.233976, 0.272515, -0.194655, -0.405147, -0.61521, + 0.276029, 0.837373, -0.765691, -0.61865, -0.531337, -0.0268663, 0.804463, 0.958094, + -0.625586, -0.878096, 0.134272, -0.0648465, -0.356075, 0.447334, 0.745843, -0.997586, + 0.994596, -0.581395, -0.525029, -0.603188, 0.657781, 0.665195, -0.472963, 0.3469, + -0.658721, -0.485042, -0.038087, 1}, + std::vector{-1, 0.230334, 0.179311, -0.134689, 0.535764, -0.0883306, 0.945667, 0.757567, -0.164013, 1}, std::vector{ - -1, -0.913489, 0.693052, 0.019041, 0.0899735, 0.267736, -0.83394, 0.521807, 0.782117, 0.297318, - -0.269702, -0.912514, 0.694362, -0.6763, -0.041225, 0.136946, -0.95289, 0.0132674, -0.716936, 0.821415, - 0.94, -0.545582, -0.79185, -0.897178, -0.871876, -0.752293, -0.219966, -0.144664, 0.981552, 0.738669, - -0.02916, 0.661658, -0.0956457, 0.187724, 0.0764894, -0.644897, 0.984866, -0.831317, 0.995369, -0.687197, - 0.796943, 0.211748, 0.720581, 0.659591, -0.45931, -0.407646, -0.223375, 0.916773, -0.833119, -0.0234757, - -0.377257, -0.914253, 0.754316, -0.968665, 0.387126, -0.781003, -0.481575, 0.10334, 0.376482, -0.540745, - 0.596997, -0.946251, -0.802122, -0.393072, 0.917111, 0.51311, 0.708101, 0.502501, -0.457544, 0.603489, - 0.889737, 0.809528, -0.698177, 0.980047, 0.614314, 0.577663, 0.877533, -0.0142305, -0.282326, 0.272626, - 0.154382, 0.950671, 0.537283, -0.405515, -0.12969, -0.90906, 0.442845, -0.982063, 0.761418, 0.346103, - 0.061014, -0.221426, 0.655872, -0.487476, 0.0797454, -0.686778, 0.272147, 0.612127, -0.390442, 1}, - std::vector{ - -1, 0.141964, -0.595054, -0.275782, -0.0524186, -0.100404, 0.356214, 0.892551, -0.595043, -0.477837, - 0.216629, -0.672137, 0.0817748, 0.356531, 0.22735, -0.73296, -0.206045, -0.286988, 0.61286, 0.287588, - 0.220286, 0.251281, -0.327665, -0.648745, 0.792805, 0.644284, -0.355157, -0.430805, 0.363233, -0.828104, - -0.650602, 0.406752, -0.0604071, 0.370716, 0.38019, -0.441156, 0.713, 0.756505, 0.41166, -0.0277081, - 0.498859, -0.673484, -0.801405, -0.900367, 0.436681, -0.758691, 0.138279, 0.677402, -0.744722, 0.939746, - 0.669847, -0.402517, -0.970535, 0.92845, -0.662595, 0.89595, 0.169792, 0.574887, 0.805658, -0.042754, - 0.419412, 0.372186, 0.730907, -0.750522, 0.985225, -0.205298, 0.843882, 0.233976, 0.272515, -0.194655, - -0.405147, -0.61521, 0.276029, 0.837373, -0.765691, -0.61865, -0.531337, -0.0268663, 0.804463, 0.958094, - -0.625586, -0.878096, 0.134272, -0.0648465, -0.356075, 0.447334, 0.745843, -0.997586, 0.994596, -0.581395, - -0.525029, -0.603188, 0.657781, 0.665195, -0.472963, 0.3469, -0.658721, -0.485042, -0.038087, 1}, - std::vector{ - -1, 0.230334, 0.179311, -0.134689, 0.535764, -0.0883306, 0.945667, 0.757567, -0.164013, 1}, - std::vector{ - 0.526906, -0.997383, -0.695943, 0.999682, -0.980027, -0.898274, 0.995111, 0.0799119, 0.363935, -0.0884402, - -0.990447, 0.842608, 0.657827, -0.362801, 0.295894, 0.222178, 0.972885, 0.957886, -0.376478, 0.504993, - 0.965053, -0.229597, -0.946319, 0.999672, 0.998961, -0.195694, 0.586567, -0.58356, 0.631116, 0.416555, - -0.725706, 0.0420496, -0.999482, -0.508284, 0.998452, -0.989286, 0.958206, 0.99888, -0.480881, 0.982364, - 0.346879, -0.687323, -0.160273, -0.0172902, -0.303112, -0.950921, 0.991803, -0.710375, -0.933744, 0.991481, - -0.659493, 0.754693, 0.754852, 0.236133, 0.989564, 0.999994, 0.684852, -0.369004, -0.847966, 0.979346, - 0.834702, 0.835757, -0.997023, 0.951418, -0.477717, 0.981288, 0.927471, 0.999848, 0.734415, 0.999904, - -0.991467, -0.766918, 0.62936, 0.964863, -0.857313, -0.0870588, 0.835937, 0.999409, 0.999204, 0.997886, - -0.999555, -0.592204, 0.971622, 0.798724, -0.568013, 0.283743, 0.828658, -0.549155, 0.834866, -0.133557, - 0.920764, 0.999356, 0.694179, -0.30478, 0.427957, 0.281501, 0.429332, -0.936185, 0.347986, 0.950708, - -0.888573, 0.608715, -0.999921, 0.828499, -0.150879, -0.301067, -0.976568, 0.999748, 0.284666, 0.983777, - -0.940115, -0.985955, 0.544464, 0.998682, -0.969063, -0.18267, 0.237068, 0.997719, -0.0337554, 0.905842, - -0.878285, 0.309217, -0.0181193, 0.525607, 0.973771, 0.999497, -0.995735, 0.998789, 0.789885, 0.999584, - -0.736026, -0.435883, -0.953494, 0.903303, -0.417712, 0.997552, -0.981539, 0.869809, 0.98394, 0.991402, - -0.988794, 0.999331, -0.158609, 0.780733, -0.969231, 0.909109, 0.999747, -0.381524, 0.972722, 0.994431, - 0.630485, 0.472457, 0.995772, 0.91051, 0.911919, -0.941698, 0.954069, -0.988044, 0.992782, -0.139916, - -0.566348, 0.763459, -0.0718403, -0.72653, 0.979029, -0.995935, 0.999778, -0.738847, 0.210184, -0.737883, - 0.988825, -0.816843, 0.0513971, -0.839016, 0.988178, -0.992621, 0.848743, -0.998577, -0.929295, -0.919254, - -0.43992, 0.93494, -0.647745, -0.780525, 0.918286, 0.992679, 0.912136, 0.383811, -0.994623, -0.820734, - 0.775965, 0.433662, -0.926421, 0.989989, -0.476612, -0.854611, 0.473324, 0.263526, 0.410454, -0.995444, - -0.979617, 0.971752, -0.698165, -0.513943, 0.855178, -0.725843, -0.954888, 0.940128, 0.956929, 0.996744, - -0.539351, 0.163227, 0.960576, -0.520992, -0.779952, -0.939853, -0.248751, -0.933185, 0.96781, 0.998035, - -0.748558, -0.422557, 0.652144, 0.289789, 0.942327, 0.989907, -0.541705, -0.967179, -0.992064, -0.679435, - 0.987373, 0.88219, -0.990581, 0.966343, 0.149118, 0.900446, 0.967235, 0.996815, -0.959944, 0.950417, - -0.998807, 0.981472, -0.715279, 0.854894, -0.575615, -0.996191, 0.938588, 0.99962, 0.997776, 0.996625, - -0.993116, -0.974635, 0.797837, 0.757842, 0.414458, -0.995602, 0.997473, -0.928389, 0.585003, 0.685336, - 0.35296, 0.999335, 0.815556, -0.978755, 0.977322, 0.862941, 0.844783, -0.999172, -0.737575, 0.868368, - 0.850968, -0.355691, -0.477411, 0.670716, 0.999938, -0.985769, 0.753579, -0.861071, -0.947635, -0.441339, - -0.636707, 0.958056, -0.917965, -0.888682, 0.887396, -0.469046, 0.878908, 0.343275, -0.953879, 0.983756, - -0.265801, -0.874482, 0.732147, 0.142205, 0.488677, 0.601925, 0.0526216, 0.707467, -0.793197, 0.99486, - -0.851224, -0.910939, 0.657066, 0.603613, 0.504114, -0.988843, 0.968051, 0.487372, -0.996597, -0.349508, - 0.351675, 0.738722, 0.784989, -0.98241, 0.901682, 0.0865038, -0.847449, 0.575283, 0.329635, 0.999976, - -0.637486, -0.843608, 0.551505, -0.177101, -0.372926, 0.935283, -0.990545, -0.149183, -0.491596, 0.541562, - 0.996025, 0.472454, -0.845026, 0.991427, -0.334852, 0.999497, -0.0331139, 0.0179286, -0.837703, 0.512776, - -0.984419, 0.979792, -0.974191, 0.925265, -0.135773, 0.0270891, 0.996536, 0.999985, 0.979748, 0.998403, - -0.993161, -0.996728, 0.638566, 0.991593, -0.560185, -0.999493, 0.993987, 0.271173, 0.98406, 0.322271, - -0.334357, 0.997101, 0.943976, -0.999868, 0.880896, 0.709814, 0.982917, -0.995932, -0.474997, 0.995407, - 0.96453, -0.753175, 0.651881, 0.526273, 0.902097, 0.992134, 0.507577, -0.999034, -0.996382, -0.673348, - 0.819122, 0.779549, -0.999686, 0.974422, 0.880611, 0.6546, 0.6598, 0.96634, -0.920738, -0.418959, - -0.954179, 0.87176, -0.330375, 0.223247, -0.100151, -0.310826, 0.93752, 0.996072, 0.883849, 0.902299, - 0.105549, 0.799733, 0.118137, 0.89021, -0.160378, -0.831619, -0.0241198, 0.723485, 0.984892, 0.21006, - -0.707005, -0.612093, -0.996712, 0.953598, 0.999635, -0.958756, 0.196832, -0.816948, -0.822502, -0.969466, - 0.440709, 0.915352, -0.987622, -0.756492, 0.811622, -0.999958, 0.999982, -0.47131, -0.907012, 0.897248, - -0.954296, 0.86897, 0.92591, -0.945222, 0.996168, -0.983258, 0.999693, -0.883999, -0.800457, 0.18094, - 0.985958, 0.362557, -0.882676, -0.598648, 0.887364, -0.970348, 0.756076, -0.993787, -0.968946, -0.118565, - -0.636271, 0.998778, -0.0656388, -0.527903, 0.990153, 0.781603, 0.999725, -0.246065, -0.97279, 0.986471, - 0.984443, -0.70469, 0.701, 0.981588, 0.982162, -0.994913, 0.99988, 0.698499, -0.996202, 0.541067, - -0.990485, 0.844747, -0.222405, -0.209739, 0.91219, -0.989144, 0.999699, 0.724279, -0.885552, 0.988889, - 0.58029, 0.759885, 0.99201, 0.818603, 0.873055, -0.884289, 0.99798, -0.965469, -0.480964, 0.475605, - -0.781967, 0.99447, 0.863794, -0.861781, 0.891732, -0.547791, 0.97225, -0.00379388, 0.342407, 0.92741}, - std::vector{ - 0.526906, -0.997383, -0.695943, 0.999682, -0.980027, -0.898274, 0.995111, 0.0799119, 0.363935, -0.0884402, - -0.888573, 0.608715, -0.999921, 0.828499, -0.150879, -0.301067, -0.976568, 0.999748, 0.284666, 0.983777, - -0.979617, 0.971752, -0.698165, -0.513943, 0.855178, -0.725843, -0.954888, 0.940128, 0.956929, 0.996744, - -0.851224, -0.910939, 0.657066, 0.603613, 0.504114, -0.988843, 0.968051, 0.487372, -0.996597, -0.349508, - 0.105549, 0.799733, 0.118137, 0.89021, -0.160378, -0.831619, -0.0241198, 0.723485, 0.984892, 0.21006}), + 0.526906, -0.997383, -0.695943, 0.999682, -0.980027, -0.898274, 0.995111, 0.0799119, + 0.363935, -0.0884402, -0.990447, 0.842608, 0.657827, -0.362801, 0.295894, 0.222178, + 0.972885, 0.957886, -0.376478, 0.504993, 0.965053, -0.229597, -0.946319, 0.999672, + 0.998961, -0.195694, 0.586567, -0.58356, 0.631116, 0.416555, -0.725706, 0.0420496, + -0.999482, -0.508284, 0.998452, -0.989286, 0.958206, 0.99888, -0.480881, 0.982364, + 0.346879, -0.687323, -0.160273, -0.0172902, -0.303112, -0.950921, 0.991803, -0.710375, + -0.933744, 0.991481, -0.659493, 0.754693, 0.754852, 0.236133, 0.989564, 0.999994, + 0.684852, -0.369004, -0.847966, 0.979346, 0.834702, 0.835757, -0.997023, 0.951418, + -0.477717, 0.981288, 0.927471, 0.999848, 0.734415, 0.999904, -0.991467, -0.766918, + 0.62936, 0.964863, -0.857313, -0.0870588, 0.835937, 0.999409, 0.999204, 0.997886, + -0.999555, -0.592204, 0.971622, 0.798724, -0.568013, 0.283743, 0.828658, -0.549155, + 0.834866, -0.133557, 0.920764, 0.999356, 0.694179, -0.30478, 0.427957, 0.281501, + 0.429332, -0.936185, 0.347986, 0.950708, -0.888573, 0.608715, -0.999921, 0.828499, + -0.150879, -0.301067, -0.976568, 0.999748, 0.284666, 0.983777, -0.940115, -0.985955, + 0.544464, 0.998682, -0.969063, -0.18267, 0.237068, 0.997719, -0.0337554, 0.905842, + -0.878285, 0.309217, -0.0181193, 0.525607, 0.973771, 0.999497, -0.995735, 0.998789, + 0.789885, 0.999584, -0.736026, -0.435883, -0.953494, 0.903303, -0.417712, 0.997552, + -0.981539, 0.869809, 0.98394, 0.991402, -0.988794, 0.999331, -0.158609, 0.780733, + -0.969231, 0.909109, 0.999747, -0.381524, 0.972722, 0.994431, 0.630485, 0.472457, + 0.995772, 0.91051, 0.911919, -0.941698, 0.954069, -0.988044, 0.992782, -0.139916, + -0.566348, 0.763459, -0.0718403, -0.72653, 0.979029, -0.995935, 0.999778, -0.738847, + 0.210184, -0.737883, 0.988825, -0.816843, 0.0513971, -0.839016, 0.988178, -0.992621, + 0.848743, -0.998577, -0.929295, -0.919254, -0.43992, 0.93494, -0.647745, -0.780525, + 0.918286, 0.992679, 0.912136, 0.383811, -0.994623, -0.820734, 0.775965, 0.433662, + -0.926421, 0.989989, -0.476612, -0.854611, 0.473324, 0.263526, 0.410454, -0.995444, + -0.979617, 0.971752, -0.698165, -0.513943, 0.855178, -0.725843, -0.954888, 0.940128, + 0.956929, 0.996744, -0.539351, 0.163227, 0.960576, -0.520992, -0.779952, -0.939853, + -0.248751, -0.933185, 0.96781, 0.998035, -0.748558, -0.422557, 0.652144, 0.289789, + 0.942327, 0.989907, -0.541705, -0.967179, -0.992064, -0.679435, 0.987373, 0.88219, + -0.990581, 0.966343, 0.149118, 0.900446, 0.967235, 0.996815, -0.959944, 0.950417, + -0.998807, 0.981472, -0.715279, 0.854894, -0.575615, -0.996191, 0.938588, 0.99962, + 0.997776, 0.996625, -0.993116, -0.974635, 0.797837, 0.757842, 0.414458, -0.995602, + 0.997473, -0.928389, 0.585003, 0.685336, 0.35296, 0.999335, 0.815556, -0.978755, + 0.977322, 0.862941, 0.844783, -0.999172, -0.737575, 0.868368, 0.850968, -0.355691, + -0.477411, 0.670716, 0.999938, -0.985769, 0.753579, -0.861071, -0.947635, -0.441339, + -0.636707, 0.958056, -0.917965, -0.888682, 0.887396, -0.469046, 0.878908, 0.343275, + -0.953879, 0.983756, -0.265801, -0.874482, 0.732147, 0.142205, 0.488677, 0.601925, + 0.0526216, 0.707467, -0.793197, 0.99486, -0.851224, -0.910939, 0.657066, 0.603613, + 0.504114, -0.988843, 0.968051, 0.487372, -0.996597, -0.349508, 0.351675, 0.738722, + 0.784989, -0.98241, 0.901682, 0.0865038, -0.847449, 0.575283, 0.329635, 0.999976, + -0.637486, -0.843608, 0.551505, -0.177101, -0.372926, 0.935283, -0.990545, -0.149183, + -0.491596, 0.541562, 0.996025, 0.472454, -0.845026, 0.991427, -0.334852, 0.999497, + -0.0331139, 0.0179286, -0.837703, 0.512776, -0.984419, 0.979792, -0.974191, 0.925265, + -0.135773, 0.0270891, 0.996536, 0.999985, 0.979748, 0.998403, -0.993161, -0.996728, + 0.638566, 0.991593, -0.560185, -0.999493, 0.993987, 0.271173, 0.98406, 0.322271, + -0.334357, 0.997101, 0.943976, -0.999868, 0.880896, 0.709814, 0.982917, -0.995932, + -0.474997, 0.995407, 0.96453, -0.753175, 0.651881, 0.526273, 0.902097, 0.992134, + 0.507577, -0.999034, -0.996382, -0.673348, 0.819122, 0.779549, -0.999686, 0.974422, + 0.880611, 0.6546, 0.6598, 0.96634, -0.920738, -0.418959, -0.954179, 0.87176, + -0.330375, 0.223247, -0.100151, -0.310826, 0.93752, 0.996072, 0.883849, 0.902299, + 0.105549, 0.799733, 0.118137, 0.89021, -0.160378, -0.831619, -0.0241198, 0.723485, + 0.984892, 0.21006, -0.707005, -0.612093, -0.996712, 0.953598, 0.999635, -0.958756, + 0.196832, -0.816948, -0.822502, -0.969466, 0.440709, 0.915352, -0.987622, -0.756492, + 0.811622, -0.999958, 0.999982, -0.47131, -0.907012, 0.897248, -0.954296, 0.86897, + 0.92591, -0.945222, 0.996168, -0.983258, 0.999693, -0.883999, -0.800457, 0.18094, + 0.985958, 0.362557, -0.882676, -0.598648, 0.887364, -0.970348, 0.756076, -0.993787, + -0.968946, -0.118565, -0.636271, 0.998778, -0.0656388, -0.527903, 0.990153, 0.781603, + 0.999725, -0.246065, -0.97279, 0.986471, 0.984443, -0.70469, 0.701, 0.981588, + 0.982162, -0.994913, 0.99988, 0.698499, -0.996202, 0.541067, -0.990485, 0.844747, + -0.222405, -0.209739, 0.91219, -0.989144, 0.999699, 0.724279, -0.885552, 0.988889, + 0.58029, 0.759885, 0.99201, 0.818603, 0.873055, -0.884289, 0.99798, -0.965469, + -0.480964, 0.475605, -0.781967, 0.99447, 0.863794, -0.861781, 0.891732, -0.547791, + 0.97225, -0.00379388, 0.342407, 0.92741}, + std::vector{0.526906, -0.997383, -0.695943, 0.999682, -0.980027, -0.898274, 0.995111, 0.0799119, + 0.363935, -0.0884402, -0.888573, 0.608715, -0.999921, 0.828499, -0.150879, -0.301067, + -0.976568, 0.999748, 0.284666, 0.983777, -0.979617, 0.971752, -0.698165, -0.513943, + 0.855178, -0.725843, -0.954888, 0.940128, 0.956929, 0.996744, -0.851224, -0.910939, + 0.657066, 0.603613, 0.504114, -0.988843, 0.968051, 0.487372, -0.996597, -0.349508, + 0.105549, 0.799733, 0.118137, 0.89021, -0.160378, -0.831619, -0.0241198, 0.723485, + 0.984892, 0.21006}), RNNSequenceParams( - 5, 10, 10, 5, - 0.f, op::RecurrentSequenceDirection::BIDIRECTIONAL, + 5, + 10, + 10, + 5, + 0.f, + op::RecurrentSequenceDirection::BIDIRECTIONAL, ET, std::vector{ - -1, 0.780309, -0.738585, -0.920481, 0.652872, 0.0641558, 0.91262, -0.0761474, 0.847476, -0.252158, - -0.690053, 0.784687, -0.946421, -0.416995, -0.202512, 0.614577, 0.254189, 0.81585, 0.112795, 0.679838, - -0.899024, 0.61247, 0.861631, -0.271941, 0.381896, -0.741371, 0.665373, -0.363293, 0.474405, 0.193539, - -0.272586, 0.589941, 0.396962, 0.643758, 0.798932, 0.663799, 0.819915, 0.949827, 0.312239, 0.623979, - -0.794512, -0.524943, -0.24131, 0.398472, -0.0301095, -0.169556, 0.277324, 0.51858, 0.115046, 0.386911, - 0.826518, -0.950774, 0.674757, -0.23359, -0.402458, -0.987406, -0.124885, 0.475875, -0.248479, -0.0135011, - -0.971921, -0.501126, -0.30573, 0.593373, 0.876799, -0.798956, 0.470805, 0.952874, 0.411772, 0.903529, - 0.855695, -0.179938, -0.32381, 0.538217, -0.330704, -0.834627, 0.797116, 0.57467, 0.434931, -0.11202, - 0.501784, 0.315797, -0.278605, -0.243354, 0.299264, -0.888726, -0.843481, -0.816194, 0.61021, -0.869385, - -0.551361, -0.695734, 0.361182, -0.748082, -0.485284, -0.124065, -0.780665, -0.370868, -0.298536, 0.522286, - -0.802298, 0.862921, -0.347842, -0.146729, -0.458638, 0.57622, -0.0933521, -0.833528, -0.859246, -0.340501, - -0.61579, 0.675731, -0.876629, 0.108469, 0.141222, -0.0757794, 0.897658, -0.310452, 0.768898, -0.13792, - 0.98896, 0.601007, 0.883268, -0.241041, -0.18915, -0.426225, -0.0989319, 0.530222, 0.159798, -0.243754, - 0.244787, 0.478345, 0.826766, 0.0642072, 0.0356427, -0.794826, -0.75666, 0.287393, -0.108071, -0.84735, - -0.694862, -0.840984, 0.758743, -0.677052, 0.845901, -0.992841, 0.605204, -0.392934, -0.510492, 0.536422, - 0.406964, 0.772353, 0.826283, -0.549379, -0.157033, -0.668275, -0.57833, 0.679797, 0.830901, 0.363183, - -0.181486, -0.555743, 0.6706, 0.553474, 0.474691, 0.717404, 0.945023, -0.180081, 0.194028, 0.476884, - -0.466581, 0.526266, 0.861006, 0.749377, -0.767673, 0.934578, -0.394025, 0.218032, -0.664486, 0.716852, - 0.452785, -0.869765, 0.0361971, 0.190971, -0.0841559, 0.184484, -0.361089, 0.639664, -0.814522, -0.64626, - -0.558575, -0.0518135, 0.834904, 0.983071, 0.208429, 0.841115, -0.266728, -0.984396, 0.310033, -0.663894, - -0.00708379, 0.581608, 0.635922, -0.266473, -0.742514, -0.605766, -0.958209, 0.267088, -0.0427639, -0.575115, - -0.469043, -0.622282, 0.77962, 0.432287, -0.862854, -0.508723, 0.840711, -0.59019, -0.0682369, 0.526142, - 0.0647325, 0.102044, -0.529739, -0.448041, -0.966308, -0.155126, -0.906004, -0.881601, -0.362032, -0.113877, - -0.662836, -0.397345, -0.101194, -0.0538374, 0.408442, 0.40128, 0.187299, 0.94587, 0.324356, 0.75563, - -0.171329, 0.59615, -0.724044, -0.477747, -0.546406, 0.064904, 0.389431, -0.512046, -0.609801, 1}, - std::vector{ - -1, 0.0194419, -0.633291, 0.617539, 0.87557, -0.940787, 0.569968, -0.672245, -0.132298, 0.148535, - -0.565955, 0.661358, -0.40092, -0.278338, 0.738713, -0.975645, 0.350663, -0.0375085, 0.954534, -0.57807, - -0.573083, 0.887977, -0.347673, 0.972259, -0.125333, 0.930768, -0.484139, 0.519932, -0.615546, -0.434102, - 0.539075, -0.983636, -0.29435, -0.532884, -0.229788, -0.78175, -0.185304, -0.189241, 0.540048, 0.68374, - -0.213783, -0.0673415, -0.791954, -0.618463, 0.345361, -0.0507364, 0.603086, -0.504686, 0.482923, 0.347901, - 0.311816, -0.576313, 0.179154, 0.567313, -0.00876484, -0.798421, 0.757543, 0.233467, 0.37899, 0.943278, - -0.15769, -0.857001, -0.619298, -0.547625, -0.900258, -0.644746, 0.114178, 0.915776, 0.898331, -0.0161833, - -0.722535, -0.480636, 0.149871, 0.971252, -0.787511, -0.0598378, -0.906727, -0.441301, 0.199715, -0.976172, - -0.990469, -0.967287, -0.187634, -0.64864, -0.797272, -0.144963, 0.354636, 0.0431377, -0.34536, 0.0950868, - 0.433708, -0.190774, 0.144971, 0.796839, -0.583502, 0.698024, -0.569746, -0.685824, -0.306595, 1}, + -1, 0.780309, -0.738585, -0.920481, 0.652872, 0.0641558, 0.91262, -0.0761474, + 0.847476, -0.252158, -0.690053, 0.784687, -0.946421, -0.416995, -0.202512, 0.614577, + 0.254189, 0.81585, 0.112795, 0.679838, -0.899024, 0.61247, 0.861631, -0.271941, + 0.381896, -0.741371, 0.665373, -0.363293, 0.474405, 0.193539, -0.272586, 0.589941, + 0.396962, 0.643758, 0.798932, 0.663799, 0.819915, 0.949827, 0.312239, 0.623979, + -0.794512, -0.524943, -0.24131, 0.398472, -0.0301095, -0.169556, 0.277324, 0.51858, + 0.115046, 0.386911, 0.826518, -0.950774, 0.674757, -0.23359, -0.402458, -0.987406, + -0.124885, 0.475875, -0.248479, -0.0135011, -0.971921, -0.501126, -0.30573, 0.593373, + 0.876799, -0.798956, 0.470805, 0.952874, 0.411772, 0.903529, 0.855695, -0.179938, + -0.32381, 0.538217, -0.330704, -0.834627, 0.797116, 0.57467, 0.434931, -0.11202, + 0.501784, 0.315797, -0.278605, -0.243354, 0.299264, -0.888726, -0.843481, -0.816194, + 0.61021, -0.869385, -0.551361, -0.695734, 0.361182, -0.748082, -0.485284, -0.124065, + -0.780665, -0.370868, -0.298536, 0.522286, -0.802298, 0.862921, -0.347842, -0.146729, + -0.458638, 0.57622, -0.0933521, -0.833528, -0.859246, -0.340501, -0.61579, 0.675731, + -0.876629, 0.108469, 0.141222, -0.0757794, 0.897658, -0.310452, 0.768898, -0.13792, + 0.98896, 0.601007, 0.883268, -0.241041, -0.18915, -0.426225, -0.0989319, 0.530222, + 0.159798, -0.243754, 0.244787, 0.478345, 0.826766, 0.0642072, 0.0356427, -0.794826, + -0.75666, 0.287393, -0.108071, -0.84735, -0.694862, -0.840984, 0.758743, -0.677052, + 0.845901, -0.992841, 0.605204, -0.392934, -0.510492, 0.536422, 0.406964, 0.772353, + 0.826283, -0.549379, -0.157033, -0.668275, -0.57833, 0.679797, 0.830901, 0.363183, + -0.181486, -0.555743, 0.6706, 0.553474, 0.474691, 0.717404, 0.945023, -0.180081, + 0.194028, 0.476884, -0.466581, 0.526266, 0.861006, 0.749377, -0.767673, 0.934578, + -0.394025, 0.218032, -0.664486, 0.716852, 0.452785, -0.869765, 0.0361971, 0.190971, + -0.0841559, 0.184484, -0.361089, 0.639664, -0.814522, -0.64626, -0.558575, -0.0518135, + 0.834904, 0.983071, 0.208429, 0.841115, -0.266728, -0.984396, 0.310033, -0.663894, + -0.00708379, 0.581608, 0.635922, -0.266473, -0.742514, -0.605766, -0.958209, 0.267088, + -0.0427639, -0.575115, -0.469043, -0.622282, 0.77962, 0.432287, -0.862854, -0.508723, + 0.840711, -0.59019, -0.0682369, 0.526142, 0.0647325, 0.102044, -0.529739, -0.448041, + -0.966308, -0.155126, -0.906004, -0.881601, -0.362032, -0.113877, -0.662836, -0.397345, + -0.101194, -0.0538374, 0.408442, 0.40128, 0.187299, 0.94587, 0.324356, 0.75563, + -0.171329, 0.59615, -0.724044, -0.477747, -0.546406, 0.064904, 0.389431, -0.512046, + -0.609801, 1}, + std::vector{-1, 0.0194419, -0.633291, 0.617539, 0.87557, -0.940787, 0.569968, -0.672245, + -0.132298, 0.148535, -0.565955, 0.661358, -0.40092, -0.278338, 0.738713, -0.975645, + 0.350663, -0.0375085, 0.954534, -0.57807, -0.573083, 0.887977, -0.347673, 0.972259, + -0.125333, 0.930768, -0.484139, 0.519932, -0.615546, -0.434102, 0.539075, -0.983636, + -0.29435, -0.532884, -0.229788, -0.78175, -0.185304, -0.189241, 0.540048, 0.68374, + -0.213783, -0.0673415, -0.791954, -0.618463, 0.345361, -0.0507364, 0.603086, -0.504686, + 0.482923, 0.347901, 0.311816, -0.576313, 0.179154, 0.567313, -0.00876484, -0.798421, + 0.757543, 0.233467, 0.37899, 0.943278, -0.15769, -0.857001, -0.619298, -0.547625, + -0.900258, -0.644746, 0.114178, 0.915776, 0.898331, -0.0161833, -0.722535, -0.480636, + 0.149871, 0.971252, -0.787511, -0.0598378, -0.906727, -0.441301, 0.199715, -0.976172, + -0.990469, -0.967287, -0.187634, -0.64864, -0.797272, -0.144963, 0.354636, 0.0431377, + -0.34536, 0.0950868, 0.433708, -0.190774, 0.144971, 0.796839, -0.583502, 0.698024, + -0.569746, -0.685824, -0.306595, 1}, std::vector{5, 5, 5, 5, 5}, std::vector{ - -1, -0.926344, -0.582316, 0.0865198, 0.297413, 0.322063, 0.843462, -0.0454604, -0.984223, 0.775538, - -0.435946, 0.241916, -0.0617699, 0.0814942, -0.132106, -0.151756, -0.11959, 0.179991, -0.875631, 0.568118, - -0.389758, -0.479348, -0.964229, -0.356113, 0.542067, 0.689303, 0.142807, -0.538379, -0.0514927, 0.785763, - -0.0770423, -0.456633, -0.215616, -0.952389, 0.414427, 0.843987, -0.212933, 0.19066, -0.660616, 0.761736, - 0.919935, -0.312803, -0.785377, -0.540347, -0.798652, -0.686071, 0.213151, -0.449002, 0.824935, -0.828034, - -0.299549, -0.761415, 0.438801, 0.482191, -0.280699, -0.859561, 0.550405, -0.555281, -0.805135, -0.0118858, - 0.480064, 0.771889, -0.699574, -0.977754, 0.446223, -0.160575, -0.895838, 0.119659, -0.72875, -0.0616542, - -0.181988, 0.710806, -0.196843, -0.640025, 0.57054, -0.616873, 0.862449, 0.408087, 0.100587, -0.201909, - 0.149038, 0.032842, 0.934702, 0.57581, -0.99622, 0.437858, -0.268711, 0.224117, -0.364069, -0.860503, - 0.890393, 0.295326, -0.917327, 0.856288, 0.893708, 0.39705, -0.619794, 0.00161488, -0.168908, -0.254165, - -0.184681, 0.537402, -0.481641, 0.87129, -0.280677, 0.854046, 0.287546, -0.0278301, -0.3463, -0.242125, - -0.739907, -0.686197, 0.853342, 0.0498392, 0.559902, -0.578234, -0.25999, 0.582969, 0.200952, 0.675112, - -0.962187, 0.0809053, 0.952629, -0.625565, -0.549088, -0.11634, -0.576362, -0.381605, -0.872919, -0.0600615, - 0.765514, 0.670759, 0.802974, 0.460444, 0.999155, -0.298183, -0.385252, -0.275577, 0.953655, 0.264913, - -0.786946, 0.711652, 0.854234, 0.380515, 0.91512, 0.477837, 0.437375, 0.853442, -0.268497, 0.677688, - 0.863327, -0.3444, -0.161007, 0.461606, 0.0772189, 0.117377, 0.163221, 0.0239453, 0.019685, 0.273669, - -0.282091, 0.365973, 0.427208, 0.574901, 0.309154, 0.329836, 0.541685, 0.0837654, -0.0486602, 0.0510945, - -0.434022, -0.526059, -0.855641, -0.485477, -0.205111, 0.505822, 0.123943, -0.635588, -0.936965, -0.204293, - -0.967828, 0.891365, 0.498722, 0.482032, 0.102506, -0.264663, -0.218876, 0.839871, -0.750406, 0.585929, - -0.385895, -0.660037, -0.672461, -0.0446399, 0.428186, 0.716547, 0.855249, -0.889884, 0.570145, 1}, - std::vector{ - -1, -0.253945, 0.73288, -0.966727, 0.0901037, 0.837826, -0.893587, 0.622855, -0.0867499, 0.479825, - -0.261255, 0.26512, 0.0826726, -0.505826, -0.390737, 0.684796, 0.86693, 0.464841, 0.687843, -0.891697, - -0.665494, 0.970505, 0.364571, -0.534104, 0.44091, -0.962463, 0.8284, 0.800076, 0.95721, -0.634602, - -0.504336, 0.905075, 0.23103, -0.736274, -0.814191, 0.956706, 0.112823, 0.588837, -0.831731, 0.581655, - 0.914972, -0.992799, -0.282463, -0.544414, 0.847968, -0.165939, -0.726117, -0.238597, -0.974254, -0.810775, - -0.532935, -0.643432, -0.940879, 0.0380719, 0.631952, 0.183682, 0.752789, -0.0175759, -0.61915, -0.185426, - 0.398154, -0.918035, -0.338854, 0.809874, 0.110495, -0.230016, -0.610258, 0.498212, 0.39098, -0.567554, - -0.534496, -0.638824, 0.225616, -0.553646, -0.707093, 0.581841, -0.96963, 0.0352891, -0.5563, -0.228776, - 0.9294, -0.7047, 0.928105, -0.403176, 0.278741, 0.46796, 0.188304, 0.253805, 0.182099, -0.0110354, - -0.858687, 0.260241, 0.220721, 0.665172, 0.661437, 0.602803, 0.306672, -0.84912, -0.222462, -0.541647, - -0.962065, -0.805781, 0.120177, -0.0642701, -0.544034, 0.827055, -0.0296891, 0.215652, 0.517538, 0.522539, - -0.0204405, -0.992085, -0.156433, 0.689398, -0.0805059, 0.425146, 0.0442416, -0.395637, -0.247687, 0.59433, - 0.131145, 0.286784, 0.407671, -0.169255, 0.555561, 0.953183, 0.219984, -0.705963, 0.92809, -0.354063, - -0.626351, 0.215441, 0.53867, 0.552067, -0.121693, 0.383347, -0.0938885, 0.534377, 0.684564, -0.286056, - -0.939983, 0.321623, -0.467205, 0.683613, -0.586294, -0.398608, -0.808, -0.274275, -0.381228, 0.426617, - 0.845405, 0.940272, -0.866575, -0.818976, 0.785773, 0.176847, -0.0428235, 0.357473, 0.615433, 0.700104, - 0.685618, -0.0173497, 0.496372, 0.856828, -0.548016, 0.813342, 0.711675, 0.303949, -0.496123, -0.851943, - 0.87302, -0.386388, -0.121659, -0.941249, -0.22728, 0.754366, -0.871963, 0.860706, -0.0306181, 0.781978, - 0.808575, -0.552888, 0.934217, -0.445505, -0.359024, 0.348107, -0.387147, 0.765867, -0.500837, -0.618321, - -0.208389, -0.994924, -0.411653, -0.142604, -0.019078, 0.386257, -0.86829, -0.576939, 0.69359, 1}, - std::vector{ - -1, -0.870588, -0.87619, 0.79389, 0.774298, 0.116866, -0.731208, 0.043552, 0.0202228, 0.161924, - -0.371015, 0.77565, 0.2867, -0.00586168, -0.366594, -0.871108, 0.111998, 0.897703, 0.633766, 1}, - std::vector{ - -0.966396, -0.986771, 0.926876, -0.722396, 0.675557, 0.602292, -0.498172, 0.790898, -0.999677, 0.832672, - 0.999863, -0.731074, -0.551715, 0.999514, 0.758388, -0.721206, -0.411589, 0.998558, 0.111818, 0.0592748, - -0.992179, -0.985487, -0.963537, -0.995447, 0.954873, 0.865383, 0.871542, 0.391732, -0.149309, -0.997971, - 0.813067, 0.939383, 0.294972, 0.783985, -0.144818, 0.992986, -0.951086, 0.953676, -0.221013, 0.958121, - 0.959354, -0.881273, -0.970651, 0.995653, -0.821644, -0.835365, -0.950953, 0.213407, -0.00109488, -0.896989, - -0.965055, -0.78096, -0.170206, -0.481907, -0.538034, 0.641884, -0.884119, 0.982638, 0.406508, 0.988232, - 0.831903, 0.757781, 0.76693, -0.424041, 0.991776, -0.955123, -0.181495, 0.405243, 0.597223, 0.9837, - -0.996655, 0.966301, 0.972842, 0.695827, 0.91464, 0.839867, -0.491131, -0.691128, -0.621549, 0.960544, - 0.890169, 0.963342, -0.504563, 0.827856, 0.99986, -0.683868, -0.0510934, -0.378609, 0.960018, 0.997703, - -0.862139, 0.323698, 0.639983, -0.511134, 0.319546, 0.264711, -0.877705, -0.831202, -0.380162, 0.747056, - -0.823153, -0.585965, -0.996211, 0.980581, 0.791137, 0.95481, -0.657369, 0.344983, -0.616705, 0.618986, - 0.989789, -0.945455, -0.991626, 0.756961, -0.335582, 0.995072, -0.718516, 0.969593, -0.997331, 0.835764, - -0.876628, -0.997024, -0.999998, -0.0175216, 0.999809, 0.923745, 0.267774, 0.972511, 0.550053, -0.846703, - -0.989225, -0.0441148, -0.684613, -0.937905, 0.999519, 0.987282, 0.987515, 0.581755, -0.316902, 0.982837, - 0.970184, 0.645835, 0.437802, 0.999792, -0.395441, 0.998468, -0.983758, -0.861604, -0.102437, -0.726916, - -0.878295, 0.961768, 0.948726, 0.223961, -0.142666, 0.986927, -0.997041, 0.591299, -0.992189, 0.781923, - -0.991835, 0.994752, -0.945418, -0.196264, 0.977303, 0.988259, -0.601266, -0.271539, 0.17424, 0.953503, - 0.53872, 0.96462, -0.99991, 0.522511, 0.806427, -0.914626, 0.333313, 0.675464, 0.475059, 0.941286, - -0.238261, -0.971927, -0.828532, 0.995514, -0.860047, -0.253, -0.998519, 0.975192, -0.575898, 0.160909, - -0.867538, 0.990647, 0.957296, -0.981018, -0.895147, -0.719873, -0.98971, 0.997134, 0.620214, 0.997141, - -0.609738, 0.475016, 0.403754, 0.606247, -0.309416, 0.886356, -0.510721, -0.75893, 0.176028, 0.097955, - 0.348629, -0.866701, -0.835186, 0.564923, 0.062626, -0.871556, -0.958889, 0.98606, -0.973364, 0.965377, - -0.998828, -0.999759, -0.999971, -0.626266, 0.997697, 0.311617, 0.955397, 0.84038, 0.534363, -0.979817, - -0.994872, 0.90103, -0.789867, -0.946177, 0.954561, 0.998517, 0.797661, 0.0702938, 0.91554, 0.776407, - 0.995062, 0.930073, 0.972781, 0.998503, -0.994274, 0.999141, -0.99872, -0.0965485, -0.985132, -0.7469, - 0.81997, 0.78163, 0.667184, -0.991648, 0.876578, -0.99955, -0.697148, 0.550283, -0.274609, 0.963469, - -0.695669, -0.803776, 0.198897, 0.824321, 0.617847, -0.993569, 0.211401, -0.99829, -0.93661, 0.871181, - -0.831197, 0.794105, 0.774464, 0.994574, 0.809722, -0.998086, 0.111103, -0.998328, 0.570258, -0.785505, - -0.753277, -0.303051, 0.678275, 0.985752, 0.37114, -0.264355, -0.985409, -0.780116, 0.224394, -0.993415, - -0.979806, 0.999698, 0.763876, -0.295216, 0.407618, -0.912578, -0.0110002, 0.737138, 0.474711, 0.988256, - -0.998907, -0.0574032, -0.904585, -0.395231, 0.425855, -0.839491, 0.865367, 0.862032, 0.0869983, -0.997064, - 0.0553182, 0.530786, 0.99843, 0.484269, -0.698659, 0.996345, -0.992878, -0.816039, -0.895165, -0.125273, - 0.619797, -0.311227, -0.999652, 0.996676, -0.972845, -0.906996, -0.982145, 0.461568, 0.979399, 0.778045, - -0.97935, -0.986793, -0.990768, -0.465094, -0.263282, -0.607552, 0.971551, -0.896471, 0.320939, -0.93909, - -0.994494, -0.237455, -0.100728, -0.975005, -0.0117797, 0.995582, -0.986234, -0.899297, 0.439427, 0.911726, - 0.203506, 0.993091, 0.951738, 0.999095, 0.841566, -0.99347, 0.350599, -0.999231, -0.433626, -0.406675, - -0.96008, 0.335784, 0.741311, 0.77931, -0.902052, 0.426213, 0.978833, -0.720206, 0.842681, 0.793444, - 0.961349, 0.095775, 0.990917, 0.162366, 0.988417, -0.997433, 0.971865, 0.347841, 0.999839, -0.671945, - -0.989461, 0.60871, 0.876491, -0.919018, -0.954406, 0.834608, -0.410929, -0.529981, -0.925456, -0.914565, - 0.943016, 0.886728, 0.71595, 0.984002, 0.975321, -0.999722, 0.963597, -0.667433, 0.533139, 0.971698, - -0.977911, -0.189758, -0.998167, 0.570572, 0.819584, 0.819533, -0.15264, 0.924569, 0.874921, -0.774673, - 0.829862, 0.826993, 0.0484993, -0.745097, 0.170151, 0.999774, -0.934382, -0.591278, -0.185407, -0.771122, - -0.762141, -0.048014, -0.946054, 0.955278, 0.99961, -0.731922, 0.138094, -0.0371518, 0.817227, 0.449736, - -0.571427, -0.905313, 0.923767, -0.388737, -0.972294, 0.647981, -0.360347, -0.944748, -0.993917, 0.537831, - 0.994776, -0.484682, -0.990703, 0.999149, 0.779736, 0.0102033, -0.709741, 0.998436, -0.511018, 0.152785, - -0.937848, -0.687825, 0.905885, 0.312886, -0.950348, 0.917466, -0.957475, 0.399452, 0.226108, -0.996484, - 0.38622, 0.99715, -0.317704, -0.497559, -0.118911, -0.961001, 0.965842, 0.999756, 0.999437, 0.996626, - 0.982077, -0.793749, 0.977901, 0.469991, -0.972339, 0.344807, -0.994449, 0.999891, -0.566665, 0.985128, - -0.950463, 0.389667, -0.171013, -0.494231, -0.288177, 0.989171, -0.806886, 0.967839, 0.956819, 0.853921, - 0.78097, 0.925808, 0.681741, -0.934712, 0.642082, -0.933539, 0.481516, 0.997935, 0.805567, 0.999646}, - std::vector{ - 0.959354, -0.881273, -0.970651, 0.995653, -0.821644, -0.835365, -0.950953, 0.213407, -0.00109488, -0.896989, - -0.965055, -0.78096, -0.170206, -0.481907, -0.538034, 0.641884, -0.884119, 0.982638, 0.406508, 0.988232, - 0.970184, 0.645835, 0.437802, 0.999792, -0.395441, 0.998468, -0.983758, -0.861604, -0.102437, -0.726916, - -0.878295, 0.961768, 0.948726, 0.223961, -0.142666, 0.986927, -0.997041, 0.591299, -0.992189, 0.781923, - 0.995062, 0.930073, 0.972781, 0.998503, -0.994274, 0.999141, -0.99872, -0.0965485, -0.985132, -0.7469, - 0.81997, 0.78163, 0.667184, -0.991648, 0.876578, -0.99955, -0.697148, 0.550283, -0.274609, 0.963469, - -0.994494, -0.237455, -0.100728, -0.975005, -0.0117797, 0.995582, -0.986234, -0.899297, 0.439427, 0.911726, - 0.203506, 0.993091, 0.951738, 0.999095, 0.841566, -0.99347, 0.350599, -0.999231, -0.433626, -0.406675, - 0.994776, -0.484682, -0.990703, 0.999149, 0.779736, 0.0102033, -0.709741, 0.998436, -0.511018, 0.152785, - -0.937848, -0.687825, 0.905885, 0.312886, -0.950348, 0.917466, -0.957475, 0.399452, 0.226108, -0.996484}), + -1, -0.926344, -0.582316, 0.0865198, 0.297413, 0.322063, 0.843462, -0.0454604, + -0.984223, 0.775538, -0.435946, 0.241916, -0.0617699, 0.0814942, -0.132106, -0.151756, + -0.11959, 0.179991, -0.875631, 0.568118, -0.389758, -0.479348, -0.964229, -0.356113, + 0.542067, 0.689303, 0.142807, -0.538379, -0.0514927, 0.785763, -0.0770423, -0.456633, + -0.215616, -0.952389, 0.414427, 0.843987, -0.212933, 0.19066, -0.660616, 0.761736, + 0.919935, -0.312803, -0.785377, -0.540347, -0.798652, -0.686071, 0.213151, -0.449002, + 0.824935, -0.828034, -0.299549, -0.761415, 0.438801, 0.482191, -0.280699, -0.859561, + 0.550405, -0.555281, -0.805135, -0.0118858, 0.480064, 0.771889, -0.699574, -0.977754, + 0.446223, -0.160575, -0.895838, 0.119659, -0.72875, -0.0616542, -0.181988, 0.710806, + -0.196843, -0.640025, 0.57054, -0.616873, 0.862449, 0.408087, 0.100587, -0.201909, + 0.149038, 0.032842, 0.934702, 0.57581, -0.99622, 0.437858, -0.268711, 0.224117, + -0.364069, -0.860503, 0.890393, 0.295326, -0.917327, 0.856288, 0.893708, 0.39705, + -0.619794, 0.00161488, -0.168908, -0.254165, -0.184681, 0.537402, -0.481641, 0.87129, + -0.280677, 0.854046, 0.287546, -0.0278301, -0.3463, -0.242125, -0.739907, -0.686197, + 0.853342, 0.0498392, 0.559902, -0.578234, -0.25999, 0.582969, 0.200952, 0.675112, + -0.962187, 0.0809053, 0.952629, -0.625565, -0.549088, -0.11634, -0.576362, -0.381605, + -0.872919, -0.0600615, 0.765514, 0.670759, 0.802974, 0.460444, 0.999155, -0.298183, + -0.385252, -0.275577, 0.953655, 0.264913, -0.786946, 0.711652, 0.854234, 0.380515, + 0.91512, 0.477837, 0.437375, 0.853442, -0.268497, 0.677688, 0.863327, -0.3444, + -0.161007, 0.461606, 0.0772189, 0.117377, 0.163221, 0.0239453, 0.019685, 0.273669, + -0.282091, 0.365973, 0.427208, 0.574901, 0.309154, 0.329836, 0.541685, 0.0837654, + -0.0486602, 0.0510945, -0.434022, -0.526059, -0.855641, -0.485477, -0.205111, 0.505822, + 0.123943, -0.635588, -0.936965, -0.204293, -0.967828, 0.891365, 0.498722, 0.482032, + 0.102506, -0.264663, -0.218876, 0.839871, -0.750406, 0.585929, -0.385895, -0.660037, + -0.672461, -0.0446399, 0.428186, 0.716547, 0.855249, -0.889884, 0.570145, 1}, + std::vector{-1, -0.253945, 0.73288, -0.966727, 0.0901037, 0.837826, -0.893587, 0.622855, + -0.0867499, 0.479825, -0.261255, 0.26512, 0.0826726, -0.505826, -0.390737, 0.684796, + 0.86693, 0.464841, 0.687843, -0.891697, -0.665494, 0.970505, 0.364571, -0.534104, + 0.44091, -0.962463, 0.8284, 0.800076, 0.95721, -0.634602, -0.504336, 0.905075, + 0.23103, -0.736274, -0.814191, 0.956706, 0.112823, 0.588837, -0.831731, 0.581655, + 0.914972, -0.992799, -0.282463, -0.544414, 0.847968, -0.165939, -0.726117, -0.238597, + -0.974254, -0.810775, -0.532935, -0.643432, -0.940879, 0.0380719, 0.631952, 0.183682, + 0.752789, -0.0175759, -0.61915, -0.185426, 0.398154, -0.918035, -0.338854, 0.809874, + 0.110495, -0.230016, -0.610258, 0.498212, 0.39098, -0.567554, -0.534496, -0.638824, + 0.225616, -0.553646, -0.707093, 0.581841, -0.96963, 0.0352891, -0.5563, -0.228776, + 0.9294, -0.7047, 0.928105, -0.403176, 0.278741, 0.46796, 0.188304, 0.253805, + 0.182099, -0.0110354, -0.858687, 0.260241, 0.220721, 0.665172, 0.661437, 0.602803, + 0.306672, -0.84912, -0.222462, -0.541647, -0.962065, -0.805781, 0.120177, -0.0642701, + -0.544034, 0.827055, -0.0296891, 0.215652, 0.517538, 0.522539, -0.0204405, -0.992085, + -0.156433, 0.689398, -0.0805059, 0.425146, 0.0442416, -0.395637, -0.247687, 0.59433, + 0.131145, 0.286784, 0.407671, -0.169255, 0.555561, 0.953183, 0.219984, -0.705963, + 0.92809, -0.354063, -0.626351, 0.215441, 0.53867, 0.552067, -0.121693, 0.383347, + -0.0938885, 0.534377, 0.684564, -0.286056, -0.939983, 0.321623, -0.467205, 0.683613, + -0.586294, -0.398608, -0.808, -0.274275, -0.381228, 0.426617, 0.845405, 0.940272, + -0.866575, -0.818976, 0.785773, 0.176847, -0.0428235, 0.357473, 0.615433, 0.700104, + 0.685618, -0.0173497, 0.496372, 0.856828, -0.548016, 0.813342, 0.711675, 0.303949, + -0.496123, -0.851943, 0.87302, -0.386388, -0.121659, -0.941249, -0.22728, 0.754366, + -0.871963, 0.860706, -0.0306181, 0.781978, 0.808575, -0.552888, 0.934217, -0.445505, + -0.359024, 0.348107, -0.387147, 0.765867, -0.500837, -0.618321, -0.208389, -0.994924, + -0.411653, -0.142604, -0.019078, 0.386257, -0.86829, -0.576939, 0.69359, 1}, + std::vector{-1, -0.870588, -0.87619, 0.79389, 0.774298, 0.116866, -0.731208, + 0.043552, 0.0202228, 0.161924, -0.371015, 0.77565, 0.2867, -0.00586168, + -0.366594, -0.871108, 0.111998, 0.897703, 0.633766, 1}, + std::vector{-0.966396, -0.986771, 0.926876, -0.722396, 0.675557, 0.602292, -0.498172, 0.790898, + -0.999677, 0.832672, 0.999863, -0.731074, -0.551715, 0.999514, 0.758388, -0.721206, + -0.411589, 0.998558, 0.111818, 0.0592748, -0.992179, -0.985487, -0.963537, -0.995447, + 0.954873, 0.865383, 0.871542, 0.391732, -0.149309, -0.997971, 0.813067, 0.939383, + 0.294972, 0.783985, -0.144818, 0.992986, -0.951086, 0.953676, -0.221013, 0.958121, + 0.959354, -0.881273, -0.970651, 0.995653, -0.821644, -0.835365, -0.950953, 0.213407, + -0.00109488, -0.896989, -0.965055, -0.78096, -0.170206, -0.481907, -0.538034, 0.641884, + -0.884119, 0.982638, 0.406508, 0.988232, 0.831903, 0.757781, 0.76693, -0.424041, + 0.991776, -0.955123, -0.181495, 0.405243, 0.597223, 0.9837, -0.996655, 0.966301, + 0.972842, 0.695827, 0.91464, 0.839867, -0.491131, -0.691128, -0.621549, 0.960544, + 0.890169, 0.963342, -0.504563, 0.827856, 0.99986, -0.683868, -0.0510934, -0.378609, + 0.960018, 0.997703, -0.862139, 0.323698, 0.639983, -0.511134, 0.319546, 0.264711, + -0.877705, -0.831202, -0.380162, 0.747056, -0.823153, -0.585965, -0.996211, 0.980581, + 0.791137, 0.95481, -0.657369, 0.344983, -0.616705, 0.618986, 0.989789, -0.945455, + -0.991626, 0.756961, -0.335582, 0.995072, -0.718516, 0.969593, -0.997331, 0.835764, + -0.876628, -0.997024, -0.999998, -0.0175216, 0.999809, 0.923745, 0.267774, 0.972511, + 0.550053, -0.846703, -0.989225, -0.0441148, -0.684613, -0.937905, 0.999519, 0.987282, + 0.987515, 0.581755, -0.316902, 0.982837, 0.970184, 0.645835, 0.437802, 0.999792, + -0.395441, 0.998468, -0.983758, -0.861604, -0.102437, -0.726916, -0.878295, 0.961768, + 0.948726, 0.223961, -0.142666, 0.986927, -0.997041, 0.591299, -0.992189, 0.781923, + -0.991835, 0.994752, -0.945418, -0.196264, 0.977303, 0.988259, -0.601266, -0.271539, + 0.17424, 0.953503, 0.53872, 0.96462, -0.99991, 0.522511, 0.806427, -0.914626, + 0.333313, 0.675464, 0.475059, 0.941286, -0.238261, -0.971927, -0.828532, 0.995514, + -0.860047, -0.253, -0.998519, 0.975192, -0.575898, 0.160909, -0.867538, 0.990647, + 0.957296, -0.981018, -0.895147, -0.719873, -0.98971, 0.997134, 0.620214, 0.997141, + -0.609738, 0.475016, 0.403754, 0.606247, -0.309416, 0.886356, -0.510721, -0.75893, + 0.176028, 0.097955, 0.348629, -0.866701, -0.835186, 0.564923, 0.062626, -0.871556, + -0.958889, 0.98606, -0.973364, 0.965377, -0.998828, -0.999759, -0.999971, -0.626266, + 0.997697, 0.311617, 0.955397, 0.84038, 0.534363, -0.979817, -0.994872, 0.90103, + -0.789867, -0.946177, 0.954561, 0.998517, 0.797661, 0.0702938, 0.91554, 0.776407, + 0.995062, 0.930073, 0.972781, 0.998503, -0.994274, 0.999141, -0.99872, -0.0965485, + -0.985132, -0.7469, 0.81997, 0.78163, 0.667184, -0.991648, 0.876578, -0.99955, + -0.697148, 0.550283, -0.274609, 0.963469, -0.695669, -0.803776, 0.198897, 0.824321, + 0.617847, -0.993569, 0.211401, -0.99829, -0.93661, 0.871181, -0.831197, 0.794105, + 0.774464, 0.994574, 0.809722, -0.998086, 0.111103, -0.998328, 0.570258, -0.785505, + -0.753277, -0.303051, 0.678275, 0.985752, 0.37114, -0.264355, -0.985409, -0.780116, + 0.224394, -0.993415, -0.979806, 0.999698, 0.763876, -0.295216, 0.407618, -0.912578, + -0.0110002, 0.737138, 0.474711, 0.988256, -0.998907, -0.0574032, -0.904585, -0.395231, + 0.425855, -0.839491, 0.865367, 0.862032, 0.0869983, -0.997064, 0.0553182, 0.530786, + 0.99843, 0.484269, -0.698659, 0.996345, -0.992878, -0.816039, -0.895165, -0.125273, + 0.619797, -0.311227, -0.999652, 0.996676, -0.972845, -0.906996, -0.982145, 0.461568, + 0.979399, 0.778045, -0.97935, -0.986793, -0.990768, -0.465094, -0.263282, -0.607552, + 0.971551, -0.896471, 0.320939, -0.93909, -0.994494, -0.237455, -0.100728, -0.975005, + -0.0117797, 0.995582, -0.986234, -0.899297, 0.439427, 0.911726, 0.203506, 0.993091, + 0.951738, 0.999095, 0.841566, -0.99347, 0.350599, -0.999231, -0.433626, -0.406675, + -0.96008, 0.335784, 0.741311, 0.77931, -0.902052, 0.426213, 0.978833, -0.720206, + 0.842681, 0.793444, 0.961349, 0.095775, 0.990917, 0.162366, 0.988417, -0.997433, + 0.971865, 0.347841, 0.999839, -0.671945, -0.989461, 0.60871, 0.876491, -0.919018, + -0.954406, 0.834608, -0.410929, -0.529981, -0.925456, -0.914565, 0.943016, 0.886728, + 0.71595, 0.984002, 0.975321, -0.999722, 0.963597, -0.667433, 0.533139, 0.971698, + -0.977911, -0.189758, -0.998167, 0.570572, 0.819584, 0.819533, -0.15264, 0.924569, + 0.874921, -0.774673, 0.829862, 0.826993, 0.0484993, -0.745097, 0.170151, 0.999774, + -0.934382, -0.591278, -0.185407, -0.771122, -0.762141, -0.048014, -0.946054, 0.955278, + 0.99961, -0.731922, 0.138094, -0.0371518, 0.817227, 0.449736, -0.571427, -0.905313, + 0.923767, -0.388737, -0.972294, 0.647981, -0.360347, -0.944748, -0.993917, 0.537831, + 0.994776, -0.484682, -0.990703, 0.999149, 0.779736, 0.0102033, -0.709741, 0.998436, + -0.511018, 0.152785, -0.937848, -0.687825, 0.905885, 0.312886, -0.950348, 0.917466, + -0.957475, 0.399452, 0.226108, -0.996484, 0.38622, 0.99715, -0.317704, -0.497559, + -0.118911, -0.961001, 0.965842, 0.999756, 0.999437, 0.996626, 0.982077, -0.793749, + 0.977901, 0.469991, -0.972339, 0.344807, -0.994449, 0.999891, -0.566665, 0.985128, + -0.950463, 0.389667, -0.171013, -0.494231, -0.288177, 0.989171, -0.806886, 0.967839, + 0.956819, 0.853921, 0.78097, 0.925808, 0.681741, -0.934712, 0.642082, -0.933539, + 0.481516, 0.997935, 0.805567, 0.999646}, + std::vector{0.959354, -0.881273, -0.970651, 0.995653, -0.821644, -0.835365, -0.950953, 0.213407, + -0.00109488, -0.896989, -0.965055, -0.78096, -0.170206, -0.481907, -0.538034, 0.641884, + -0.884119, 0.982638, 0.406508, 0.988232, 0.970184, 0.645835, 0.437802, 0.999792, + -0.395441, 0.998468, -0.983758, -0.861604, -0.102437, -0.726916, -0.878295, 0.961768, + 0.948726, 0.223961, -0.142666, 0.986927, -0.997041, 0.591299, -0.992189, 0.781923, + 0.995062, 0.930073, 0.972781, 0.998503, -0.994274, 0.999141, -0.99872, -0.0965485, + -0.985132, -0.7469, 0.81997, 0.78163, 0.667184, -0.991648, 0.876578, -0.99955, + -0.697148, 0.550283, -0.274609, 0.963469, -0.994494, -0.237455, -0.100728, -0.975005, + -0.0117797, 0.995582, -0.986234, -0.899297, 0.439427, 0.911726, 0.203506, 0.993091, + 0.951738, 0.999095, 0.841566, -0.99347, 0.350599, -0.999231, -0.433626, -0.406675, + 0.994776, -0.484682, -0.990703, 0.999149, 0.779736, 0.0102033, -0.709741, 0.998436, + -0.511018, 0.152785, -0.937848, -0.687825, 0.905885, 0.312886, -0.950348, 0.917466, + -0.957475, 0.399452, 0.226108, -0.996484}), }; return params; } @@ -575,448 +714,339 @@ template std::vector generateParamsBF16() { using T = typename element_type_traits::value_type; - std::vector params { + std::vector params{ RNNSequenceParams( - 5, 10, 10, 10, - 0.f, op::RecurrentSequenceDirection::FORWARD, + 5, + 10, + 10, + 10, + 0.f, + op::RecurrentSequenceDirection::FORWARD, ET, std::vector{ - -2, 2, 2, -1, -2, -2, -2, -1, 2, 0, - 0, 0, 2, 2, 0, 1, 2, 1, -1, 1, - -2, 1, 2, 2, -2, -2, -1, -2, -1, -1, - 2, 1, 1, 2, 2, 2, 0, 2, 2, 1, - -2, 1, 2, 1, 2, 0, -1, -1, 1, 0, - -2, 1, 2, 2, -1, 1, 1, 1, 0, -2, - -1, -2, 1, 2, 1, 2, 2, -2, 2, 0, - 2, 0, 2, 0, 2, -2, 1, 2, 2, 1, - -2, 2, -1, 0, -1, 2, 1, -2, 0, -1, - 0, -1, 1, 0, 1, 0, 0, 1, 1, -2, - 2, 0, -2, -2, 2, 1, -1, 2, -1, 1, - -2, -2, 0, 0, 1, -1, -1, 2, 0, 2, - -2, -1, -1, -1, -1, 0, 1, -2, 2, -2, - -2, 1, 1, 1, 2, 0, 1, 2, 2, 1, - 2, 2, 0, 0, -1, -1, 1, 1, -1, 0, - -2, -1, 2, -1, 1, 1, 1, 0, 0, 2, - 1, 2, 1, 0, -1, -1, -1, 1, 1, -1, - -2, 0, -2, -1, -2, -1, 2, 1, -2, -1, - -1, 1, -2, 1, 1, 2, -2, 2, -1, -2, - 0, 2, -2, -1, -1, 2, -1, 2, 1, -2, - -2, -2, 2, -1, -1, 1, 0, -2, -1, -2, - 1, 0, 0, 1, -2, 2, -2, 1, -1, 0, - -2, 1, 2, -1, -2, 2, 0, 0, 0, -2, - 0, 2, 2, 1, -1, 0, 2, 1, 0, 0, - 2, 2, 2, 0, 2, -2, -1, 0, 0, 1, - -1, 2, 0, 0, 1, -1, 0, -2, -1, 0, - 1, 0, 1, -2, 2, 1, 0, 1, 0, 1, - -2, 0, -2, -2, 1, 2, 0, 1, -2, -2, - -2, -1, -2, 1, 2, -1, -2, -2, 2, -2, - -2, 2, 2, -1, -1, 0, -1, 0, 1, 0, - 1, 2, 2, 1, 2, -1, -1, -2, 0, -2, - -2, 2, -1, 2, 2, 2, 2, -2, 1, 0, - 0, 0, -1, -2, 2, -1, 1, 0, 1, 1, - 2, 1, 2, 2, 0, 1, 0, 0, 1, 1, - -1, 2, 1, -1, 2, 2, 2, 2, -2, 1, - 2, -1, -1, 2, 1, 2, -2, 2, 2, -2, - 1, -2, -2, -1, 0, 2, 0, -2, 0, -2, - 0, 1, -1, -2, 2, 1, -2, 0, -2, -2, - -1, 1, 0, 1, 2, -2, 2, -2, 1, 1, - 2, -1, -1, -1, -2, 0, 1, -1, -2, 0, - 0, 2, 1, -1, 2, 0, -1, 2, -2, -1, - -2, -2, -2, 0, 1, 0, 0, 1, -1, -1, - -1, 2, -2, 0, 2, 0, 1, 1, -2, 0, - -1, 1, 2, -1, -1, 1, 0, -1, 1, -2, - 0, -1, 0, -1, -1, -2, -1, 1, -2, -1, - 0, -2, -2, 1, -2, 0, -1, 1, 0, 1, - -2, -1, -1, -1, 0, -1, 0, -2, 1, -2, - 1, -2, 0, -1, 2, -1, 1, 1, 2, 2, - 0, 1, 1, 1, -2, -1, -1, -1, -1, -2, - 0, 2, 1, 0, -1, 2, -2, -1, 1, 2}, - std::vector{ - -2, 2, 0, 1, -2, 1, 2, 0, 2, 0, - -2, 0, 1, -2, -2, 1, 0, 0, 0, -2, - -1, 0, 2, -2, -1, 2, -1, 2, 2, 1, - -2, 2, 1, 1, 0, 2, 2, -2, -1, 1, - -1, 2, 2, -2, -1, -1, 2, 2, 0, 2}, + -2, 2, 2, -1, -2, -2, -2, -1, 2, 0, 0, 0, 2, 2, 0, 1, 2, 1, -1, 1, -2, 1, 2, 2, -2, + -2, -1, -2, -1, -1, 2, 1, 1, 2, 2, 2, 0, 2, 2, 1, -2, 1, 2, 1, 2, 0, -1, -1, 1, 0, + -2, 1, 2, 2, -1, 1, 1, 1, 0, -2, -1, -2, 1, 2, 1, 2, 2, -2, 2, 0, 2, 0, 2, 0, 2, + -2, 1, 2, 2, 1, -2, 2, -1, 0, -1, 2, 1, -2, 0, -1, 0, -1, 1, 0, 1, 0, 0, 1, 1, -2, + 2, 0, -2, -2, 2, 1, -1, 2, -1, 1, -2, -2, 0, 0, 1, -1, -1, 2, 0, 2, -2, -1, -1, -1, -1, + 0, 1, -2, 2, -2, -2, 1, 1, 1, 2, 0, 1, 2, 2, 1, 2, 2, 0, 0, -1, -1, 1, 1, -1, 0, + -2, -1, 2, -1, 1, 1, 1, 0, 0, 2, 1, 2, 1, 0, -1, -1, -1, 1, 1, -1, -2, 0, -2, -1, -2, + -1, 2, 1, -2, -1, -1, 1, -2, 1, 1, 2, -2, 2, -1, -2, 0, 2, -2, -1, -1, 2, -1, 2, 1, -2, + -2, -2, 2, -1, -1, 1, 0, -2, -1, -2, 1, 0, 0, 1, -2, 2, -2, 1, -1, 0, -2, 1, 2, -1, -2, + 2, 0, 0, 0, -2, 0, 2, 2, 1, -1, 0, 2, 1, 0, 0, 2, 2, 2, 0, 2, -2, -1, 0, 0, 1, + -1, 2, 0, 0, 1, -1, 0, -2, -1, 0, 1, 0, 1, -2, 2, 1, 0, 1, 0, 1, -2, 0, -2, -2, 1, + 2, 0, 1, -2, -2, -2, -1, -2, 1, 2, -1, -2, -2, 2, -2, -2, 2, 2, -1, -1, 0, -1, 0, 1, 0, + 1, 2, 2, 1, 2, -1, -1, -2, 0, -2, -2, 2, -1, 2, 2, 2, 2, -2, 1, 0, 0, 0, -1, -2, 2, + -1, 1, 0, 1, 1, 2, 1, 2, 2, 0, 1, 0, 0, 1, 1, -1, 2, 1, -1, 2, 2, 2, 2, -2, 1, + 2, -1, -1, 2, 1, 2, -2, 2, 2, -2, 1, -2, -2, -1, 0, 2, 0, -2, 0, -2, 0, 1, -1, -2, 2, + 1, -2, 0, -2, -2, -1, 1, 0, 1, 2, -2, 2, -2, 1, 1, 2, -1, -1, -1, -2, 0, 1, -1, -2, 0, + 0, 2, 1, -1, 2, 0, -1, 2, -2, -1, -2, -2, -2, 0, 1, 0, 0, 1, -1, -1, -1, 2, -2, 0, 2, + 0, 1, 1, -2, 0, -1, 1, 2, -1, -1, 1, 0, -1, 1, -2, 0, -1, 0, -1, -1, -2, -1, 1, -2, -1, + 0, -2, -2, 1, -2, 0, -1, 1, 0, 1, -2, -1, -1, -1, 0, -1, 0, -2, 1, -2, 1, -2, 0, -1, 2, + -1, 1, 1, 2, 2, 0, 1, 1, 1, -2, -1, -1, -1, -1, -2, 0, 2, 1, 0, -1, 2, -2, -1, 1, 2}, + std::vector{-2, 2, 0, 1, -2, 1, 2, 0, 2, 0, -2, 0, 1, -2, -2, 1, 0, 0, 0, -2, -1, 0, 2, -2, -1, + 2, -1, 2, 2, 1, -2, 2, 1, 1, 0, 2, 2, -2, -1, 1, -1, 2, 2, -2, -1, -1, 2, 2, 0, 2}, std::vector{10, 10, 10, 10, 10}, + std::vector{-2, 2, -2, -1, -1, 2, 0, 0, 1, 1, 1, 1, 2, 1, 0, 2, -2, 0, 2, 1, + -1, -1, 1, -2, 0, 1, 0, 2, 0, 0, 0, 0, 0, -2, 0, -1, -2, 2, 1, 2, + -1, -1, -1, -2, -2, -2, -1, -1, 1, -1, 2, -2, 0, 0, -1, -1, 0, -2, 2, 2, + 0, 1, -1, 2, -1, 0, -2, 0, 1, -2, 2, 1, -1, 0, 0, 0, -2, -2, 2, 2, + 2, -1, -1, -1, -2, 2, -1, 1, -2, -2, -2, -2, 1, -2, -1, -2, 2, -1, -2, 2}, + std::vector{-2, -2, -1, 0, 2, -1, -2, 1, 0, 0, 2, -2, -2, 2, 2, -1, 0, -1, 1, -2, + -1, -1, 1, 2, 0, 2, -1, 1, -1, 1, 2, 0, 2, 0, 1, 2, 2, -1, -2, 2, + -2, 0, 2, 2, 1, -1, -1, -2, 1, -2, -2, 1, 2, -1, 2, -2, 2, 0, -2, 0, + -1, 1, 2, -2, 1, 2, -2, -1, -2, -2, 2, 0, 0, 1, 1, 1, -2, -2, 1, 0, + 2, -1, -2, 1, -1, -2, -1, -2, 2, -2, 0, -2, -2, 1, -1, 2, -2, 1, -2, 2}, + std::vector{-2, 1, -2, 2, -2, -1, 2, 1, 2, 2}, std::vector{ - -2, 2, -2, -1, -1, 2, 0, 0, 1, 1, - 1, 1, 2, 1, 0, 2, -2, 0, 2, 1, - -1, -1, 1, -2, 0, 1, 0, 2, 0, 0, - 0, 0, 0, -2, 0, -1, -2, 2, 1, 2, - -1, -1, -1, -2, -2, -2, -1, -1, 1, -1, - 2, -2, 0, 0, -1, -1, 0, -2, 2, 2, - 0, 1, -1, 2, -1, 0, -2, 0, 1, -2, - 2, 1, -1, 0, 0, 0, -2, -2, 2, 2, - 2, -1, -1, -1, -2, 2, -1, 1, -2, -2, - -2, -2, 1, -2, -1, -2, 2, -1, -2, 2}, - std::vector{ - -2, -2, -1, 0, 2, -1, -2, 1, 0, 0, - 2, -2, -2, 2, 2, -1, 0, -1, 1, -2, - -1, -1, 1, 2, 0, 2, -1, 1, -1, 1, - 2, 0, 2, 0, 1, 2, 2, -1, -2, 2, - -2, 0, 2, 2, 1, -1, -1, -2, 1, -2, - -2, 1, 2, -1, 2, -2, 2, 0, -2, 0, - -1, 1, 2, -2, 1, 2, -2, -1, -2, -2, - 2, 0, 0, 1, 1, 1, -2, -2, 1, 0, - 2, -1, -2, 1, -1, -2, -1, -2, 2, -2, - 0, -2, -2, 1, -1, 2, -2, 1, -2, 2}, - std::vector{ - -2, 1, -2, 2, -2, -1, 2, 1, 2, 2}, - std::vector{ - -1, -0.757812, -0.960938, 1, 1, 0, 0.960938, 0.757812, -1, -0.960938, - -0.59375, 1, 0.921875, -1, -1, 0.244141, -1, -1, -0.992188, 1, - -1, -1, -1, -0.953125, 1, -0.449219, 1, -0.957031, -1, 1, - 0.898438, 1, -1, 1, -1, 1, 0.992188, 1, -1, -1, - -1, 1, -0.953125, 0.992188, -1, -1, 0.96875, -0.185547, -1, 0.960938, - -0.996094, 0.154297, -0.154297, -1, -1, -1, 0.890625, -1, -0.542969, -0.289062, - -1, 0.96875, -1, -1, -1, 1, 0.617188, -1, -1, -0.976562, - -1, 0.757812, -0.984375, 1, -1, 1, 0.992188, -0.244141, -1, -0.124023, - 1, -0.992188, -0.96875, -1, -0.976562, -1, 1, -1, -0.773438, 1, - -1, 0.996094, -0.996094, 1, -1, -1, -0.984375, -1, 1, -0.507812, - -0.960938, -1, 0.960938, 1, -1, -0.960938, 1, -0.960938, 1, -1, - -1, 0.96875, 1, 1, 1, 0.640625, -1, -1, 0.757812, 1, - 1, -1, 0.984375, -0.976562, 1, 0.996094, 1, 1, -1, 1, - 0.765625, 0.992188, 1, 1, -1, -0.992188, 0.953125, -1, -1, 0.96875, - -1, -1, -1, 1, -1, 0.871094, -0.921875, 0.558594, 1, -0.992188, - 1, 1, 1, -1, -0.992188, -1, -1, -0.996094, -0.960938, 1, - -1, 0.0625, -1, 1, -0.960938, -0.785156, 1, 1, 0.992188, -1, - 1, -1, -0.554688, -1, 1, -1, -1, -1, 1, 1, - 1, 1, -1, -0.108887, -1, -1, 1, 0.960938, 1, -1, - 1, 1, -1, -0.75, -1, -1, 1, -0.964844, 1, -1, - -1, -1, 1, -1, 0.757812, -1, 1, -1, -1, 1, - 0.984375, 1, -0.960938, 1, -0.996094, 1, 1, -0.847656, 1, -1, - -1, 1, 0.976562, -0.96875, 0.671875, -1, 0.757812, -1, 1, -0.726562, - -0.996094, 0.957031, -1, -1, -0.921875, 0.992188, 1, -1, -0.953125, -1, - -1, 0.996094, -1, 1, -1, 0.992188, 1, 1, -1, -0.992188, - -0.992188, -1, -1, -1, -1, -1, 0.960938, -0.992188, -1, 1, - -0.957031, 0.960938, 0.96875, 1, -1, 0.953125, -1, -1, 0.96875, 1, - 1, -1, 1, 0, 1, -1, 0.992188, -1, 1, 0.992188, - -0.960938, 1, -1, 1, 1, 0.992188, 1, 1, -0.992188, -1, - 1, 1, 1, 1, 0.960938, -0.96875, 1, -0.992188, -1, 1, - -1, -1, -1, 1, -0.757812, 1, 1, 0.992188, -1, -1, - 1, 1, -1, -1, -1, -1, 0.976562, -1, -1, 0.9375, - -1, -1, -1, 1, -1, 1, -1, 0.96875, -1, 1, - -0.773438, 1, 0.992188, -0.960938, -1, -0.960938, 0.964844, 1, -1, 1, - 0.554688, -1, 1, 1, -1, -1, -1, -1, -1, 0.976562, - -1, 1, 0.882812, 1, -1, -0.992188, 1, 1, 1, -1, - -1, -1, -1, -1, 1, 1, -0.214844, -0.992188, 1, -1, - 1, 0.992188, -0.652344, -0.890625, 0.835938, -1, 1, 0.882812, 1, -1, - -1, 0.871094, -1, -1, -1, 1, -1, 0.976562, -1, -0.90625, - -1, -1, -0.992188, -1, -0.96875, 0.992188, 1, -0.992188, 1, 1, - -1, -1, 0, 1, -1, -0.992188, -0.757812, -1, -1, -1, - 0.984375, -1, 1, -1, 1, -1, 1, -1, 1, 1, - 0.992188, -1, -1, 1, -1, -1, -1, -0.992188, 0.960938, -1, - 0.964844, 1, -0.960938, -1, 1, -1, -0.734375, 1, 1, 0.789062, - -1, -1, -1, 0.96875, 0.300781, -1, -0.960938, -1, 1, 1, - 1, 1, -0.800781, -0.554688, 1, 0.9375, -0.59375, 1, 1, 1, - 0.0625, -1, -0.996094, -0.71875, 1, -1, 1, 0.984375, -0.996094, 1, - -0.96875, 0.992188, 0.449219, 1, -1, 1, -1, -0.507812, -1, 1, - -1, -1, -0.0625, -0.910156, 1, -1, 1, 0.078125, 0.828125, 1, - 1, 1, -1, 1, -1, 1, -0.0625, 1, -0.976562, -1}, - std::vector{ - -1, 0.996094, -0.996094, 1, -1, -1, -0.984375, -1, 1, -0.507812, - 1, 1, -1, -0.75, -1, -1, 1, -0.964844, 1, -1, - 1, 1, 1, 1, 0.960938, -0.96875, 1, -0.992188, -1, 1, - -1, -1, -0.992188, -1, -0.96875, 0.992188, 1, -0.992188, 1, 1, - 1, 1, -1, 1, -1, 1, -0.0625, 1, -0.976562, -1}), + -1, -0.757812, -0.960938, 1, 1, 0, 0.960938, 0.757812, -1, + -0.960938, -0.59375, 1, 0.921875, -1, -1, 0.244141, -1, -1, + -0.992188, 1, -1, -1, -1, -0.953125, 1, -0.449219, 1, + -0.957031, -1, 1, 0.898438, 1, -1, 1, -1, 1, + 0.992188, 1, -1, -1, -1, 1, -0.953125, 0.992188, -1, + -1, 0.96875, -0.185547, -1, 0.960938, -0.996094, 0.154297, -0.154297, -1, + -1, -1, 0.890625, -1, -0.542969, -0.289062, -1, 0.96875, -1, + -1, -1, 1, 0.617188, -1, -1, -0.976562, -1, 0.757812, + -0.984375, 1, -1, 1, 0.992188, -0.244141, -1, -0.124023, 1, + -0.992188, -0.96875, -1, -0.976562, -1, 1, -1, -0.773438, 1, + -1, 0.996094, -0.996094, 1, -1, -1, -0.984375, -1, 1, + -0.507812, -0.960938, -1, 0.960938, 1, -1, -0.960938, 1, -0.960938, + 1, -1, -1, 0.96875, 1, 1, 1, 0.640625, -1, + -1, 0.757812, 1, 1, -1, 0.984375, -0.976562, 1, 0.996094, + 1, 1, -1, 1, 0.765625, 0.992188, 1, 1, -1, + -0.992188, 0.953125, -1, -1, 0.96875, -1, -1, -1, 1, + -1, 0.871094, -0.921875, 0.558594, 1, -0.992188, 1, 1, 1, + -1, -0.992188, -1, -1, -0.996094, -0.960938, 1, -1, 0.0625, + -1, 1, -0.960938, -0.785156, 1, 1, 0.992188, -1, 1, + -1, -0.554688, -1, 1, -1, -1, -1, 1, 1, + 1, 1, -1, -0.108887, -1, -1, 1, 0.960938, 1, + -1, 1, 1, -1, -0.75, -1, -1, 1, -0.964844, + 1, -1, -1, -1, 1, -1, 0.757812, -1, 1, + -1, -1, 1, 0.984375, 1, -0.960938, 1, -0.996094, 1, + 1, -0.847656, 1, -1, -1, 1, 0.976562, -0.96875, 0.671875, + -1, 0.757812, -1, 1, -0.726562, -0.996094, 0.957031, -1, -1, + -0.921875, 0.992188, 1, -1, -0.953125, -1, -1, 0.996094, -1, + 1, -1, 0.992188, 1, 1, -1, -0.992188, -0.992188, -1, + -1, -1, -1, -1, 0.960938, -0.992188, -1, 1, -0.957031, + 0.960938, 0.96875, 1, -1, 0.953125, -1, -1, 0.96875, 1, + 1, -1, 1, 0, 1, -1, 0.992188, -1, 1, + 0.992188, -0.960938, 1, -1, 1, 1, 0.992188, 1, 1, + -0.992188, -1, 1, 1, 1, 1, 0.960938, -0.96875, 1, + -0.992188, -1, 1, -1, -1, -1, 1, -0.757812, 1, + 1, 0.992188, -1, -1, 1, 1, -1, -1, -1, + -1, 0.976562, -1, -1, 0.9375, -1, -1, -1, 1, + -1, 1, -1, 0.96875, -1, 1, -0.773438, 1, 0.992188, + -0.960938, -1, -0.960938, 0.964844, 1, -1, 1, 0.554688, -1, + 1, 1, -1, -1, -1, -1, -1, 0.976562, -1, + 1, 0.882812, 1, -1, -0.992188, 1, 1, 1, -1, + -1, -1, -1, -1, 1, 1, -0.214844, -0.992188, 1, + -1, 1, 0.992188, -0.652344, -0.890625, 0.835938, -1, 1, 0.882812, + 1, -1, -1, 0.871094, -1, -1, -1, 1, -1, + 0.976562, -1, -0.90625, -1, -1, -0.992188, -1, -0.96875, 0.992188, + 1, -0.992188, 1, 1, -1, -1, 0, 1, -1, + -0.992188, -0.757812, -1, -1, -1, 0.984375, -1, 1, -1, + 1, -1, 1, -1, 1, 1, 0.992188, -1, -1, + 1, -1, -1, -1, -0.992188, 0.960938, -1, 0.964844, 1, + -0.960938, -1, 1, -1, -0.734375, 1, 1, 0.789062, -1, + -1, -1, 0.96875, 0.300781, -1, -0.960938, -1, 1, 1, + 1, 1, -0.800781, -0.554688, 1, 0.9375, -0.59375, 1, 1, + 1, 0.0625, -1, -0.996094, -0.71875, 1, -1, 1, 0.984375, + -0.996094, 1, -0.96875, 0.992188, 0.449219, 1, -1, 1, -1, + -0.507812, -1, 1, -1, -1, -0.0625, -0.910156, 1, -1, + 1, 0.078125, 0.828125, 1, 1, 1, -1, 1, -1, + 1, -0.0625, 1, -0.976562, -1}, + std::vector{-1, 0.996094, -0.996094, 1, -1, -1, -0.984375, -1, 1, + -0.507812, 1, 1, -1, -0.75, -1, -1, 1, -0.964844, + 1, -1, 1, 1, 1, 1, 0.960938, -0.96875, 1, + -0.992188, -1, 1, -1, -1, -0.992188, -1, -0.96875, 0.992188, + 1, -0.992188, 1, 1, 1, 1, -1, 1, -1, + 1, -0.0625, 1, -0.976562, -1}), RNNSequenceParams( - 5, 10, 10, 10, - 0.f, op::RecurrentSequenceDirection::REVERSE, + 5, + 10, + 10, + 10, + 0.f, + op::RecurrentSequenceDirection::REVERSE, ET, std::vector{ - -2, 2, 2, -1, -2, -2, -2, -1, 2, 0, - 0, 0, 2, 2, 0, 1, 2, 1, -1, 1, - -2, 1, 2, 2, -2, -2, -1, -2, -1, -1, - 2, 1, 1, 2, 2, 2, 0, 2, 2, 1, - -2, 1, 2, 1, 2, 0, -1, -1, 1, 0, - -2, 1, 2, 2, -1, 1, 1, 1, 0, -2, - -1, -2, 1, 2, 1, 2, 2, -2, 2, 0, - 2, 0, 2, 0, 2, -2, 1, 2, 2, 1, - -2, 2, -1, 0, -1, 2, 1, -2, 0, -1, - 0, -1, 1, 0, 1, 0, 0, 1, 1, -2, - 2, 0, -2, -2, 2, 1, -1, 2, -1, 1, - -2, -2, 0, 0, 1, -1, -1, 2, 0, 2, - -2, -1, -1, -1, -1, 0, 1, -2, 2, -2, - -2, 1, 1, 1, 2, 0, 1, 2, 2, 1, - 2, 2, 0, 0, -1, -1, 1, 1, -1, 0, - -2, -1, 2, -1, 1, 1, 1, 0, 0, 2, - 1, 2, 1, 0, -1, -1, -1, 1, 1, -1, - -2, 0, -2, -1, -2, -1, 2, 1, -2, -1, - -1, 1, -2, 1, 1, 2, -2, 2, -1, -2, - 0, 2, -2, -1, -1, 2, -1, 2, 1, -2, - -2, -2, 2, -1, -1, 1, 0, -2, -1, -2, - 1, 0, 0, 1, -2, 2, -2, 1, -1, 0, - -2, 1, 2, -1, -2, 2, 0, 0, 0, -2, - 0, 2, 2, 1, -1, 0, 2, 1, 0, 0, - 2, 2, 2, 0, 2, -2, -1, 0, 0, 1, - -1, 2, 0, 0, 1, -1, 0, -2, -1, 0, - 1, 0, 1, -2, 2, 1, 0, 1, 0, 1, - -2, 0, -2, -2, 1, 2, 0, 1, -2, -2, - -2, -1, -2, 1, 2, -1, -2, -2, 2, -2, - -2, 2, 2, -1, -1, 0, -1, 0, 1, 0, - 1, 2, 2, 1, 2, -1, -1, -2, 0, -2, - -2, 2, -1, 2, 2, 2, 2, -2, 1, 0, - 0, 0, -1, -2, 2, -1, 1, 0, 1, 1, - 2, 1, 2, 2, 0, 1, 0, 0, 1, 1, - -1, 2, 1, -1, 2, 2, 2, 2, -2, 1, - 2, -1, -1, 2, 1, 2, -2, 2, 2, -2, - 1, -2, -2, -1, 0, 2, 0, -2, 0, -2, - 0, 1, -1, -2, 2, 1, -2, 0, -2, -2, - -1, 1, 0, 1, 2, -2, 2, -2, 1, 1, - 2, -1, -1, -1, -2, 0, 1, -1, -2, 0, - 0, 2, 1, -1, 2, 0, -1, 2, -2, -1, - -2, -2, -2, 0, 1, 0, 0, 1, -1, -1, - -1, 2, -2, 0, 2, 0, 1, 1, -2, 0, - -1, 1, 2, -1, -1, 1, 0, -1, 1, -2, - 0, -1, 0, -1, -1, -2, -1, 1, -2, -1, - 0, -2, -2, 1, -2, 0, -1, 1, 0, 1, - -2, -1, -1, -1, 0, -1, 0, -2, 1, -2, - 1, -2, 0, -1, 2, -1, 1, 1, 2, 2, - 0, 1, 1, 1, -2, -1, -1, -1, -1, -2, - 0, 2, 1, 0, -1, 2, -2, -1, 1, 2}, - std::vector{ - -2, 2, 0, 1, -2, 1, 2, 0, 2, 0, - -2, 0, 1, -2, -2, 1, 0, 0, 0, -2, - -1, 0, 2, -2, -1, 2, -1, 2, 2, 1, - -2, 2, 1, 1, 0, 2, 2, -2, -1, 1, - -1, 2, 2, -2, -1, -1, 2, 2, 0, 2}, + -2, 2, 2, -1, -2, -2, -2, -1, 2, 0, 0, 0, 2, 2, 0, 1, 2, 1, -1, 1, -2, 1, 2, 2, -2, + -2, -1, -2, -1, -1, 2, 1, 1, 2, 2, 2, 0, 2, 2, 1, -2, 1, 2, 1, 2, 0, -1, -1, 1, 0, + -2, 1, 2, 2, -1, 1, 1, 1, 0, -2, -1, -2, 1, 2, 1, 2, 2, -2, 2, 0, 2, 0, 2, 0, 2, + -2, 1, 2, 2, 1, -2, 2, -1, 0, -1, 2, 1, -2, 0, -1, 0, -1, 1, 0, 1, 0, 0, 1, 1, -2, + 2, 0, -2, -2, 2, 1, -1, 2, -1, 1, -2, -2, 0, 0, 1, -1, -1, 2, 0, 2, -2, -1, -1, -1, -1, + 0, 1, -2, 2, -2, -2, 1, 1, 1, 2, 0, 1, 2, 2, 1, 2, 2, 0, 0, -1, -1, 1, 1, -1, 0, + -2, -1, 2, -1, 1, 1, 1, 0, 0, 2, 1, 2, 1, 0, -1, -1, -1, 1, 1, -1, -2, 0, -2, -1, -2, + -1, 2, 1, -2, -1, -1, 1, -2, 1, 1, 2, -2, 2, -1, -2, 0, 2, -2, -1, -1, 2, -1, 2, 1, -2, + -2, -2, 2, -1, -1, 1, 0, -2, -1, -2, 1, 0, 0, 1, -2, 2, -2, 1, -1, 0, -2, 1, 2, -1, -2, + 2, 0, 0, 0, -2, 0, 2, 2, 1, -1, 0, 2, 1, 0, 0, 2, 2, 2, 0, 2, -2, -1, 0, 0, 1, + -1, 2, 0, 0, 1, -1, 0, -2, -1, 0, 1, 0, 1, -2, 2, 1, 0, 1, 0, 1, -2, 0, -2, -2, 1, + 2, 0, 1, -2, -2, -2, -1, -2, 1, 2, -1, -2, -2, 2, -2, -2, 2, 2, -1, -1, 0, -1, 0, 1, 0, + 1, 2, 2, 1, 2, -1, -1, -2, 0, -2, -2, 2, -1, 2, 2, 2, 2, -2, 1, 0, 0, 0, -1, -2, 2, + -1, 1, 0, 1, 1, 2, 1, 2, 2, 0, 1, 0, 0, 1, 1, -1, 2, 1, -1, 2, 2, 2, 2, -2, 1, + 2, -1, -1, 2, 1, 2, -2, 2, 2, -2, 1, -2, -2, -1, 0, 2, 0, -2, 0, -2, 0, 1, -1, -2, 2, + 1, -2, 0, -2, -2, -1, 1, 0, 1, 2, -2, 2, -2, 1, 1, 2, -1, -1, -1, -2, 0, 1, -1, -2, 0, + 0, 2, 1, -1, 2, 0, -1, 2, -2, -1, -2, -2, -2, 0, 1, 0, 0, 1, -1, -1, -1, 2, -2, 0, 2, + 0, 1, 1, -2, 0, -1, 1, 2, -1, -1, 1, 0, -1, 1, -2, 0, -1, 0, -1, -1, -2, -1, 1, -2, -1, + 0, -2, -2, 1, -2, 0, -1, 1, 0, 1, -2, -1, -1, -1, 0, -1, 0, -2, 1, -2, 1, -2, 0, -1, 2, + -1, 1, 1, 2, 2, 0, 1, 1, 1, -2, -1, -1, -1, -1, -2, 0, 2, 1, 0, -1, 2, -2, -1, 1, 2}, + std::vector{-2, 2, 0, 1, -2, 1, 2, 0, 2, 0, -2, 0, 1, -2, -2, 1, 0, 0, 0, -2, -1, 0, 2, -2, -1, + 2, -1, 2, 2, 1, -2, 2, 1, 1, 0, 2, 2, -2, -1, 1, -1, 2, 2, -2, -1, -1, 2, 2, 0, 2}, std::vector{10, 10, 10, 10, 10}, + std::vector{-2, 2, -2, -1, -1, 2, 0, 0, 1, 1, 1, 1, 2, 1, 0, 2, -2, 0, 2, 1, + -1, -1, 1, -2, 0, 1, 0, 2, 0, 0, 0, 0, 0, -2, 0, -1, -2, 2, 1, 2, + -1, -1, -1, -2, -2, -2, -1, -1, 1, -1, 2, -2, 0, 0, -1, -1, 0, -2, 2, 2, + 0, 1, -1, 2, -1, 0, -2, 0, 1, -2, 2, 1, -1, 0, 0, 0, -2, -2, 2, 2, + 2, -1, -1, -1, -2, 2, -1, 1, -2, -2, -2, -2, 1, -2, -1, -2, 2, -1, -2, 2}, + std::vector{-2, -2, -1, 0, 2, -1, -2, 1, 0, 0, 2, -2, -2, 2, 2, -1, 0, -1, 1, -2, + -1, -1, 1, 2, 0, 2, -1, 1, -1, 1, 2, 0, 2, 0, 1, 2, 2, -1, -2, 2, + -2, 0, 2, 2, 1, -1, -1, -2, 1, -2, -2, 1, 2, -1, 2, -2, 2, 0, -2, 0, + -1, 1, 2, -2, 1, 2, -2, -1, -2, -2, 2, 0, 0, 1, 1, 1, -2, -2, 1, 0, + 2, -1, -2, 1, -1, -2, -1, -2, 2, -2, 0, -2, -2, 1, -1, 2, -2, 1, -2, 2}, + std::vector{-2, 1, -2, 2, -2, -1, 2, 1, 2, 2}, std::vector{ - -2, 2, -2, -1, -1, 2, 0, 0, 1, 1, - 1, 1, 2, 1, 0, 2, -2, 0, 2, 1, - -1, -1, 1, -2, 0, 1, 0, 2, 0, 0, - 0, 0, 0, -2, 0, -1, -2, 2, 1, 2, - -1, -1, -1, -2, -2, -2, -1, -1, 1, -1, - 2, -2, 0, 0, -1, -1, 0, -2, 2, 2, - 0, 1, -1, 2, -1, 0, -2, 0, 1, -2, - 2, 1, -1, 0, 0, 0, -2, -2, 2, 2, - 2, -1, -1, -1, -2, 2, -1, 1, -2, -2, - -2, -2, 1, -2, -1, -2, 2, -1, -2, 2}, + 0.921875, -0.507812, -0.804688, 1, 1, -0.890625, 1, 1, -1, + 1, -0.808594, 1, -1, -0.960938, -1, 1, -1, -1, + -0.992188, 1, -1, -0.960938, -1, -1, 0.964844, -0.992188, 1, + -1, -1, 1, -1, 1, -0.996094, 1, -1, 0.972656, + 1, 1, -0.992188, -1, -0.988281, 1, -1, 0.214844, -0.124023, + 0.671875, 1, -0.988281, -1, -1, -1, -1, 0.589844, 0.357422, + -1, -1, 1, -1, -1, -0.984375, -0.96875, 0.992188, 0.734375, + -1, -1, 0.960938, 1, -0.953125, -1, 1, -1, 1, + -1, 1, -1, 1, -1, 0.949219, -1, -1, 1, + 0.921875, -1, -1, 1, -0.984375, 1, 0.585938, 1, -1, + -1, -1, 0.960938, -0.992188, 0.757812, -1, -0.960938, -1, 0, + -1, -0.984375, -0.765625, 1, 1, -1, -1, -1, 1, + 1, -0.574219, 0.890625, -0.124023, 1, 1, -1, -0.957031, -1, + -1, -1, 1, -0.75, -1, -0.996094, -0.244141, 1, 0.992188, + 1, 0.960938, 0.847656, 1, 1, 1, 0.96875, 0, -1, + -1, -1, -1, -1, 0.90625, -1, -1, -0.992188, 0.542969, + -1, -1, 0.984375, 0.96875, 1, 1, -0.796875, 1, -0.757812, + 0.75, -1, -0.0932617, -1, -1, -0.960938, 1, 1, 1, + -1, 0, 0.960938, -0.992188, 1, 1, 1, -1, -0.992188, + -1, -1, -1, 1, -1, -1, -1, 1, 1, + 1, 1, -1, 0.984375, -0.992188, -1, 1, -0.941406, 1, + -1, 1, -1, 0.757812, -0.757812, 0.992188, -1, 1, -1, + 1, -1, -0.976562, 0.992188, 0.0625, -1, 1, 0.59375, -1, + -1, 1, 1, -0.921875, 1, -1, 1, 0.992188, -0.925781, + 1, 1, 1, -1, 0.75, -1, 0.984375, 0.984375, 0.460938, + -0.976562, 1, -1, 0.996094, -0.910156, -0.757812, 0.273438, 0.996094, -1, + -1, -1, 1, -1, -1, 1, -1, 1, -1, + 1, -1, 1, -1, 1, -1, -0.640625, 0.773438, -1, + -1, -1, 1, -1, 0.953125, 0.773438, -1, 0.185547, -1, + 1, 0.953125, 1, -1, -0.984375, -1, 0.996094, 1, -0.976562, + 1, -1, 1, -0.0625, -0.75, -1, 0.960938, -1, 1, + 1, -1, 0.03125, -1, 1, 1, 0.96875, 1, 1, + -1, -1, 1, -1, 1, 1, -0.960938, -1, 1, + -0.960938, -1, 1, -1, 0.964844, -1, -0.992188, -1, -0.964844, + 0.960938, -0.734375, -1, -1, 1, 0.984375, -1, -1, -1, + -1, 0.988281, 0.996094, -1, 1, -0.992188, -1, -0.996094, 0.9375, + -1, 0.273438, -1, -0.96875, -1, 1, -1, 1, -1, + -1, -1, 0.855469, 1, 1, 1, -1, -0.773438, 0.71875, + -0.992188, -1, -1, -1, -1, -1, 1, -0.96875, 0.992188, + 1, -0.960938, -1, -1, -1, 1, 1, 1, -1, + -1, -0.384766, -1, -0.976562, 1, 0.796875, -1, 1, 1, + -1, 1, -0.90625, 1, 0.992188, -1, -1, 1, -0.796875, + 1, 1, -0.90625, -0.945312, -1, 0.980469, 0.734375, 1, -1, + 1, -1, 1, -1, -1, 0.757812, 1, 1, 1, + 1, -0.757812, 0.960938, 1, 1, 1, -0.357422, 0.921875, -1, + -1, -0.847656, -1, 1, -0.992188, -0.617188, -0.960938, -0.757812, -1, + 0.984375, -1, -0.808594, -1, 1, 1, 0.75, -1, -1, + 0.472656, -1, -1, -0.390625, -1, -0.384766, -1, 1, 1, + 1, -1, 1, -0.992188, 0.992188, 0.960938, 1, -0.757812, -1, + -1, 1, 1, 1, -1, -1, -1, 1, 1, + -0.753906, 0, -1, 1, 0.757812, 1, 1, 0.992188, 1, + 0, 1, -1, 1, -1, 1, -1, 0.996094, -0.992188, + -1, 1, -1, -0.992188, -1, 1, -1, 1, -1, + 0.890625, -1, 0.933594, -1, 1, -1, -0.90625, -0.460938, -1, + 1, -0.898438, 1, 1, 0.757812, -1, -1, 1, -1, + 1, 0.992188, 0, -1, -1}, std::vector{ - -2, -2, -1, 0, 2, -1, -2, 1, 0, 0, - 2, -2, -2, 2, 2, -1, 0, -1, 1, -2, - -1, -1, 1, 2, 0, 2, -1, 1, -1, 1, - 2, 0, 2, 0, 1, 2, 2, -1, -2, 2, - -2, 0, 2, 2, 1, -1, -1, -2, 1, -2, - -2, 1, 2, -1, 2, -2, 2, 0, -2, 0, - -1, 1, 2, -2, 1, 2, -2, -1, -2, -2, - 2, 0, 0, 1, 1, 1, -2, -2, 1, 0, - 2, -1, -2, 1, -1, -2, -1, -2, 2, -2, - 0, -2, -2, 1, -1, 2, -2, 1, -2, 2}, - std::vector{ - -2, 1, -2, 2, -2, -1, 2, 1, 2, 2}, - std::vector{ - 0.921875, -0.507812, -0.804688, 1, 1, -0.890625, 1, 1, -1, 1, - -0.808594, 1, -1, -0.960938, -1, 1, -1, -1, -0.992188, 1, - -1, -0.960938, -1, -1, 0.964844, -0.992188, 1, -1, -1, 1, - -1, 1, -0.996094, 1, -1, 0.972656, 1, 1, -0.992188, -1, - -0.988281, 1, -1, 0.214844, -0.124023, 0.671875, 1, -0.988281, -1, -1, - -1, -1, 0.589844, 0.357422, -1, -1, 1, -1, -1, -0.984375, - -0.96875, 0.992188, 0.734375, -1, -1, 0.960938, 1, -0.953125, -1, 1, - -1, 1, -1, 1, -1, 1, -1, 0.949219, -1, -1, - 1, 0.921875, -1, -1, 1, -0.984375, 1, 0.585938, 1, -1, - -1, -1, 0.960938, -0.992188, 0.757812, -1, -0.960938, -1, 0, -1, - -0.984375, -0.765625, 1, 1, -1, -1, -1, 1, 1, -0.574219, - 0.890625, -0.124023, 1, 1, -1, -0.957031, -1, -1, -1, 1, - -0.75, -1, -0.996094, -0.244141, 1, 0.992188, 1, 0.960938, 0.847656, 1, - 1, 1, 0.96875, 0, -1, -1, -1, -1, -1, 0.90625, - -1, -1, -0.992188, 0.542969, -1, -1, 0.984375, 0.96875, 1, 1, - -0.796875, 1, -0.757812, 0.75, -1, -0.0932617, -1, -1, -0.960938, 1, - 1, 1, -1, 0, 0.960938, -0.992188, 1, 1, 1, -1, - -0.992188, -1, -1, -1, 1, -1, -1, -1, 1, 1, - 1, 1, -1, 0.984375, -0.992188, -1, 1, -0.941406, 1, -1, - 1, -1, 0.757812, -0.757812, 0.992188, -1, 1, -1, 1, -1, - -0.976562, 0.992188, 0.0625, -1, 1, 0.59375, -1, -1, 1, 1, - -0.921875, 1, -1, 1, 0.992188, -0.925781, 1, 1, 1, -1, - 0.75, -1, 0.984375, 0.984375, 0.460938, -0.976562, 1, -1, 0.996094, -0.910156, - -0.757812, 0.273438, 0.996094, -1, -1, -1, 1, -1, -1, 1, - -1, 1, -1, 1, -1, 1, -1, 1, -1, -0.640625, - 0.773438, -1, -1, -1, 1, -1, 0.953125, 0.773438, -1, 0.185547, - -1, 1, 0.953125, 1, -1, -0.984375, -1, 0.996094, 1, -0.976562, - 1, -1, 1, -0.0625, -0.75, -1, 0.960938, -1, 1, 1, - -1, 0.03125, -1, 1, 1, 0.96875, 1, 1, -1, -1, - 1, -1, 1, 1, -0.960938, -1, 1, -0.960938, -1, 1, - -1, 0.964844, -1, -0.992188, -1, -0.964844, 0.960938, -0.734375, -1, -1, - 1, 0.984375, -1, -1, -1, -1, 0.988281, 0.996094, -1, 1, - -0.992188, -1, -0.996094, 0.9375, -1, 0.273438, -1, -0.96875, -1, 1, - -1, 1, -1, -1, -1, 0.855469, 1, 1, 1, -1, - -0.773438, 0.71875, -0.992188, -1, -1, -1, -1, -1, 1, -0.96875, - 0.992188, 1, -0.960938, -1, -1, -1, 1, 1, 1, -1, - -1, -0.384766, -1, -0.976562, 1, 0.796875, -1, 1, 1, -1, - 1, -0.90625, 1, 0.992188, -1, -1, 1, -0.796875, 1, 1, - -0.90625, -0.945312, -1, 0.980469, 0.734375, 1, -1, 1, -1, 1, - -1, -1, 0.757812, 1, 1, 1, 1, -0.757812, 0.960938, 1, - 1, 1, -0.357422, 0.921875, -1, -1, -0.847656, -1, 1, -0.992188, - -0.617188, -0.960938, -0.757812, -1, 0.984375, -1, -0.808594, -1, 1, 1, - 0.75, -1, -1, 0.472656, -1, -1, -0.390625, -1, -0.384766, -1, - 1, 1, 1, -1, 1, -0.992188, 0.992188, 0.960938, 1, -0.757812, - -1, -1, 1, 1, 1, -1, -1, -1, 1, 1, - -0.753906, 0, -1, 1, 0.757812, 1, 1, 0.992188, 1, 0, - 1, -1, 1, -1, 1, -1, 0.996094, -0.992188, -1, 1, - -1, -0.992188, -1, 1, -1, 1, -1, 0.890625, -1, 0.933594, - -1, 1, -1, -0.90625, -0.460938, -1, 1, -0.898438, 1, 1, - 0.757812, -1, -1, 1, -1, 1, 0.992188, 0, -1, -1}, - std::vector{ - 0.921875, -0.507812, -0.804688, 1, 1, -0.890625, 1, 1, -1, 1, - -0.984375, -0.765625, 1, 1, -1, -1, -1, 1, 1, -0.574219, - -0.976562, 0.992188, 0.0625, -1, 1, 0.59375, -1, -1, 1, 1, - -1, 0.964844, -1, -0.992188, -1, -0.964844, 0.960938, -0.734375, -1, -1, - 1, 1, -0.357422, 0.921875, -1, -1, -0.847656, -1, 1, -0.992188}), + 0.921875, -0.507812, -0.804688, 1, 1, -0.890625, 1, 1, -1, 1, + -0.984375, -0.765625, 1, 1, -1, -1, -1, 1, 1, -0.574219, + -0.976562, 0.992188, 0.0625, -1, 1, 0.59375, -1, -1, 1, 1, + -1, 0.964844, -1, -0.992188, -1, -0.964844, 0.960938, -0.734375, -1, -1, + 1, 1, -0.357422, 0.921875, -1, -1, -0.847656, -1, 1, -0.992188}), RNNSequenceParams( - 5, 10, 10, 5, - 0.f, op::RecurrentSequenceDirection::BIDIRECTIONAL, + 5, + 10, + 10, + 5, + 0.f, + op::RecurrentSequenceDirection::BIDIRECTIONAL, ET, - std::vector{ - -2, 2, 2, -1, -2, -2, -2, -1, 2, 0, - 0, 0, 2, 2, 0, 1, 2, 1, -1, 1, - -2, 1, 2, 2, -2, -2, -1, -2, -1, -1, - 2, 1, 1, 2, 2, 2, 0, 2, 2, 1, - -2, 1, 2, 1, 2, 0, -1, -1, 1, 0, - -2, 1, 2, 2, -1, 1, 1, 1, 0, -2, - -1, -2, 1, 2, 1, 2, 2, -2, 2, 0, - 2, 0, 2, 0, 2, -2, 1, 2, 2, 1, - -2, 2, -1, 0, -1, 2, 1, -2, 0, -1, - 0, -1, 1, 0, 1, 0, 0, 1, 1, -2, - 2, 0, -2, -2, 2, 1, -1, 2, -1, 1, - -2, -2, 0, 0, 1, -1, -1, 2, 0, 2, - -2, -1, -1, -1, -1, 0, 1, -2, 2, -2, - -2, 1, 1, 1, 2, 0, 1, 2, 2, 1, - 2, 2, 0, 0, -1, -1, 1, 1, -1, 0, - -2, -1, 2, -1, 1, 1, 1, 0, 0, 2, - 1, 2, 1, 0, -1, -1, -1, 1, 1, -1, - -2, 0, -2, -1, -2, -1, 2, 1, -2, -1, - -1, 1, -2, 1, 1, 2, -2, 2, -1, -2, - 0, 2, -2, -1, -1, 2, -1, 2, 1, -2, - -2, -2, 2, -1, -1, 1, 0, -2, -1, -2, - 1, 0, 0, 1, -2, 2, -2, 1, -1, 0, - -2, 1, 2, -1, -2, 2, 0, 0, 0, -2, - 0, 2, 2, 1, -1, 0, 2, 1, 0, 0, - 2, 2, 2, 0, 2, -2, -1, 0, 0, 2}, - std::vector{ - -2, 2, 0, 1, -2, 1, 2, 0, 2, 0, - -2, 0, 1, -2, -2, 1, 0, 0, 0, -2, - -1, 0, 2, -2, -1, 2, -1, 2, 2, 1, - -2, 2, 1, 1, 0, 2, 2, -2, -1, 1, - -1, 2, 2, -2, -1, -1, 2, 2, 0, 2, - 2, -2, -1, 2, 1, -1, -2, 1, -1, -2, - 1, 2, -2, 0, -1, 1, -1, 2, -1, -2, - -2, -2, 0, 0, 0, 2, 1, 1, 2, 1, - -1, 0, 0, 0, -2, 1, -2, 1, 1, -2, - 0, -1, 2, -2, -1, 2, 1, -2, 1, 2}, + std::vector{-2, 2, 2, -1, -2, -2, -2, -1, 2, 0, 0, 0, 2, 2, 0, 1, 2, 1, -1, 1, -2, 1, 2, + 2, -2, -2, -1, -2, -1, -1, 2, 1, 1, 2, 2, 2, 0, 2, 2, 1, -2, 1, 2, 1, 2, 0, + -1, -1, 1, 0, -2, 1, 2, 2, -1, 1, 1, 1, 0, -2, -1, -2, 1, 2, 1, 2, 2, -2, 2, + 0, 2, 0, 2, 0, 2, -2, 1, 2, 2, 1, -2, 2, -1, 0, -1, 2, 1, -2, 0, -1, 0, -1, + 1, 0, 1, 0, 0, 1, 1, -2, 2, 0, -2, -2, 2, 1, -1, 2, -1, 1, -2, -2, 0, 0, 1, + -1, -1, 2, 0, 2, -2, -1, -1, -1, -1, 0, 1, -2, 2, -2, -2, 1, 1, 1, 2, 0, 1, 2, + 2, 1, 2, 2, 0, 0, -1, -1, 1, 1, -1, 0, -2, -1, 2, -1, 1, 1, 1, 0, 0, 2, 1, + 2, 1, 0, -1, -1, -1, 1, 1, -1, -2, 0, -2, -1, -2, -1, 2, 1, -2, -1, -1, 1, -2, 1, + 1, 2, -2, 2, -1, -2, 0, 2, -2, -1, -1, 2, -1, 2, 1, -2, -2, -2, 2, -1, -1, 1, 0, + -2, -1, -2, 1, 0, 0, 1, -2, 2, -2, 1, -1, 0, -2, 1, 2, -1, -2, 2, 0, 0, 0, -2, + 0, 2, 2, 1, -1, 0, 2, 1, 0, 0, 2, 2, 2, 0, 2, -2, -1, 0, 0, 2}, + std::vector{-2, 2, 0, 1, -2, 1, 2, 0, 2, 0, -2, 0, 1, -2, -2, 1, 0, 0, 0, -2, + -1, 0, 2, -2, -1, 2, -1, 2, 2, 1, -2, 2, 1, 1, 0, 2, 2, -2, -1, 1, + -1, 2, 2, -2, -1, -1, 2, 2, 0, 2, 2, -2, -1, 2, 1, -1, -2, 1, -1, -2, + 1, 2, -2, 0, -1, 1, -1, 2, -1, -2, -2, -2, 0, 0, 0, 2, 1, 1, 2, 1, + -1, 0, 0, 0, -2, 1, -2, 1, 1, -2, 0, -1, 2, -2, -1, 2, 1, -2, 1, 2}, std::vector{5, 5, 5, 5, 5}, + std::vector{-2, 2, -2, -1, -1, 2, 0, 0, 1, 1, 1, 1, 2, 1, 0, 2, -2, 0, 2, 1, -1, -1, 1, + -2, 0, 1, 0, 2, 0, 0, 0, 0, 0, -2, 0, -1, -2, 2, 1, 2, -1, -1, -1, -2, -2, -2, + -1, -1, 1, -1, 2, -2, 0, 0, -1, -1, 0, -2, 2, 2, 0, 1, -1, 2, -1, 0, -2, 0, 1, + -2, 2, 1, -1, 0, 0, 0, -2, -2, 2, 2, 2, -1, -1, -1, -2, 2, -1, 1, -2, -2, -2, -2, + 1, -2, -1, -2, 2, -1, -2, 2, -1, 0, -2, -1, 1, 0, 1, 2, -1, -2, -2, -2, 1, 0, -1, + -2, -2, -2, 0, -1, 1, 2, 2, -2, -2, 1, -2, 2, 1, -1, 0, -2, -2, -1, 0, -1, -2, 2, + 0, 2, 0, 2, 2, -2, 0, 1, -2, 2, 1, 0, -2, 0, 2, -1, 1, -2, 0, 0, -1, -1, 0, + 1, 0, 0, 2, 1, 1, -1, -2, -2, 1, 1, -1, -1, 1, 0, -1, 0, -2, 1, 2, 1, 1, -1, + -2, 0, 2, 2, 2, 0, 1, 1, -2, -2, 0, 0, 0, -1, -1, 2}, + std::vector{-2, -2, -1, 0, 2, -1, -2, 1, 0, 0, 2, -2, -2, 2, 2, -1, 0, -1, 1, -2, -1, -1, 1, + 2, 0, 2, -1, 1, -1, 1, 2, 0, 2, 0, 1, 2, 2, -1, -2, 2, -2, 0, 2, 2, 1, -1, + -1, -2, 1, -2, -2, 1, 2, -1, 2, -2, 2, 0, -2, 0, -1, 1, 2, -2, 1, 2, -2, -1, -2, + -2, 2, 0, 0, 1, 1, 1, -2, -2, 1, 0, 2, -1, -2, 1, -1, -2, -1, -2, 2, -2, 0, -2, + -2, 1, -1, 2, -2, 1, -2, 1, -1, -2, -2, -2, -2, -2, 0, -1, 2, 0, 0, 2, 2, 1, 0, + 1, -2, -1, 0, -1, 1, 1, -2, 1, -1, 1, 2, 0, 0, -2, -1, 0, -2, -2, 1, 2, 1, -1, + -1, 1, -1, 0, -2, 1, 1, 1, -1, 2, -2, 2, 1, 1, -2, 2, 0, 0, -1, -2, -1, 2, 2, + 1, -2, -2, 2, 1, -1, -2, 1, 0, 1, 2, 0, 2, 1, 0, 0, -1, 0, 1, -2, -1, 1, 2, + 1, -1, 2, 1, 2, -2, 2, 1, 1, -1, -2, -1, -1, -1, -1, 2}, + std::vector{-2, 1, -2, 2, -2, -1, 2, 1, 2, -2, 0, 1, -2, 2, 0, -2, 0, 0, 0, 2}, std::vector{ - -2, 2, -2, -1, -1, 2, 0, 0, 1, 1, - 1, 1, 2, 1, 0, 2, -2, 0, 2, 1, - -1, -1, 1, -2, 0, 1, 0, 2, 0, 0, - 0, 0, 0, -2, 0, -1, -2, 2, 1, 2, - -1, -1, -1, -2, -2, -2, -1, -1, 1, -1, - 2, -2, 0, 0, -1, -1, 0, -2, 2, 2, - 0, 1, -1, 2, -1, 0, -2, 0, 1, -2, - 2, 1, -1, 0, 0, 0, -2, -2, 2, 2, - 2, -1, -1, -1, -2, 2, -1, 1, -2, -2, - -2, -2, 1, -2, -1, -2, 2, -1, -2, 2, - -1, 0, -2, -1, 1, 0, 1, 2, -1, -2, - -2, -2, 1, 0, -1, -2, -2, -2, 0, -1, - 1, 2, 2, -2, -2, 1, -2, 2, 1, -1, - 0, -2, -2, -1, 0, -1, -2, 2, 0, 2, - 0, 2, 2, -2, 0, 1, -2, 2, 1, 0, - -2, 0, 2, -1, 1, -2, 0, 0, -1, -1, - 0, 1, 0, 0, 2, 1, 1, -1, -2, -2, - 1, 1, -1, -1, 1, 0, -1, 0, -2, 1, - 2, 1, 1, -1, -2, 0, 2, 2, 2, 0, - 1, 1, -2, -2, 0, 0, 0, -1, -1, 2}, - std::vector{ - -2, -2, -1, 0, 2, -1, -2, 1, 0, 0, - 2, -2, -2, 2, 2, -1, 0, -1, 1, -2, - -1, -1, 1, 2, 0, 2, -1, 1, -1, 1, - 2, 0, 2, 0, 1, 2, 2, -1, -2, 2, - -2, 0, 2, 2, 1, -1, -1, -2, 1, -2, - -2, 1, 2, -1, 2, -2, 2, 0, -2, 0, - -1, 1, 2, -2, 1, 2, -2, -1, -2, -2, - 2, 0, 0, 1, 1, 1, -2, -2, 1, 0, - 2, -1, -2, 1, -1, -2, -1, -2, 2, -2, - 0, -2, -2, 1, -1, 2, -2, 1, -2, 1, - -1, -2, -2, -2, -2, -2, 0, -1, 2, 0, - 0, 2, 2, 1, 0, 1, -2, -1, 0, -1, - 1, 1, -2, 1, -1, 1, 2, 0, 0, -2, - -1, 0, -2, -2, 1, 2, 1, -1, -1, 1, - -1, 0, -2, 1, 1, 1, -1, 2, -2, 2, - 1, 1, -2, 2, 0, 0, -1, -2, -1, 2, - 2, 1, -2, -2, 2, 1, -1, -2, 1, 0, - 1, 2, 0, 2, 1, 0, 0, -1, 0, 1, - -2, -1, 1, 2, 1, -1, 2, 1, 2, -2, - 2, 1, 1, -1, -2, -1, -1, -1, -1, 2}, - std::vector{ - -2, 1, -2, 2, -2, -1, 2, 1, 2, -2, - 0, 1, -2, 2, 0, -2, 0, 0, 0, 2}, - std::vector{ - -1, -0.757812, -0.960938, 1, 1, 0, 0.960938, 0.757812, -1, -1, - -0.59375, 1, 0.921875, -1, -1, 0.244141, -1, -1, -0.992188, 1, - -1, -1, -1, -0.953125, 1, -0.449219, 1, -0.957031, -1, 1, - 0.898438, 1, -1, 1, -1, 1, 0.992188, 1, -1, -1, - -1, 1, -0.953125, 0.992188, -1, -1, 0.96875, -0.185547, -1, -0.757812, - -1, 1, 1, 0.863281, 1, 1, -1, -1, 1, -1, - -0.757812, -0.96875, -0.957031, 0.757812, -0.773438, -0.03125, 1, -1, -0.992188, -0.992188, - -1, 1, -1, -1, -1, 1, -0.960938, -1, -1, -1, - 0.0625, -1, 1, 0.214844, 1, -1, 1, -0.832031, -0.300781, 0.996094, - 0.757812, 1, -0.960938, -0.992188, -0.960938, -1, -0.960938, -1, -1, -1, - -0.757812, -1, 1, -1, -1, -1, 1, -1, -1, -1, - -1, 1, -1, -1, -1, 1, 1, -1, -1, -1, - -1, 0.757812, -0.992188, 1, -1, 1, 0.960938, -0.757812, -1, -1, - 1, -0.652344, -1, -1, 0.515625, -1, 1, -0.984375, 0.945312, -0.835938, - -1, 1, -1, -0.785156, -0.992188, -1, -0.300781, -1, 1, -1, - 1, 0, 1, -1, -1, 0.78125, 1, -1, 1, -1, - -1, 1, -1, -1, -1, -1, 1, -1, 0.949219, -1, - 1, -1, 1, 1, 0.835938, -0.992188, -1, -1, 1, -1, - -1, 1, -1, -1, -0.859375, -1, 1, 0.03125, 1, -0.996094, - -1, 1, 1, 1, 1, 1, -0.757812, 0.960938, 0.992188, -1, - -1, -1, 0, 1, -1, 1, -1, -1, -1, -1, - -0.757812, 0, 1, 1, 1, -1, 0.992188, -0.757812, -0.992188, 1, - 1, -1, -0.0078125, 0.976562, 1, 1, 1, -0.992188, -1, -0.9375, - 0, 1, 1, 1, -1, -1, 0.953125, 0.734375, -1, -0.992188, - -1, -1, -1, 0.976562, -0.984375, 0.992188, 0.875, -1, 1, -1, - -0.734375, -1, 0.984375, 1, 1, -0.996094, -0.703125, 1, -1, 1, - 1, 1, 0.960938, 1, -1, 0.992188, -0.0625, 0, -1, 0.785156, - 1, 1, -1, -1, -1, 1, 1, -1, 0.925781, -1, - 1, -1, -1, 0.820312, 1, -1, -1, -1, 1, -1, - -0.960938, -1, 1, -1, 1, -0.757812, 0.757812, 1, 1, 0.960938, - -0.992188, 0.992188, 1, -0.960938, -1, -1, -1, -1, -1, 1, - -1, -1, -1, 1, 0.96875, 0.992188, 1, 0.96875, -0.734375, -1, - 1, -1, 1, -0.914062, 1, -1, -0.486328, -1, 1, 1, - 1, 1, -0.996094, 1, -1, -1, 1, 0.785156, 1, -1, - 1, 1, -0.996094, -0.652344, -0.914062, -1, 0.976562, -0.507812, 1, -1, - -1, 0.976562, -1, 0.980469, 1, 0.410156, 0.996094, -1, -1, 0.96875, - 0.914062, -1, 1, -0.984375, 1, 1, -1, 0.757812, 1, 1, - 1, -1, -0.53125, 1, -1, -0.882812, 0.523438, -1, -0.632812, 1, - 1, 0, -0.757812, -0.992188, -0.960938, -1, 1, 1, -0.992188, -0.960938, - 1, -1, 1, 1, 1, -1, -1, -1, 1, -1, - -0.992188, -1, 1, -1, 1, -1, 1, -1, 1, 1, - 0.992188, 1, -1, 1, -0.757812, 1, 1, 0.757812, 1, -1, - -0.9375, 1, 1, -1, -0.976562, -1, -0.460938, -1, 1, -0.984375, - -1, -0.6875, -1, -1, -0.929688, -0.992188, 1, -1, 0.914062, -1, - -1, 1, -1, 0.976562, -1, 1, -1, 1, -0.914062, -1, - -0.460938, 1, -0.996094, -1, -0.992188, 1, -1, -1, 0.244141, -1, - -0.992188, 0.765625, 1, 0.992188, -1, -1, 0.992188, 1, 1, 0.960938, - 0.984375, 1, 1, -1, 1, -0.984375, 1, -1, 1, -1, - -0.460938, -1, 1, -1, 1, 0.964844, -1, -1, 1, -1, - -1, -0.992188, -1, 1, 0, -0.757812, 0.960938, 1, -1, 1}, - std::vector{ - -1, 1, -0.953125, 0.992188, -1, -1, 0.96875, -0.185547, -1, -0.757812, - -1, 1, 1, 0.863281, 1, 1, -1, -1, 1, -1, - -1, 1, -1, -0.785156, -0.992188, -1, -0.300781, -1, 1, -1, - 1, 0, 1, -1, -1, 0.78125, 1, -1, 1, -1, - -1, -1, -1, 0.976562, -0.984375, 0.992188, 0.875, -1, 1, -1, - -0.734375, -1, 0.984375, 1, 1, -0.996094, -0.703125, 1, -1, 1, - 1, 1, -0.996094, -0.652344, -0.914062, -1, 0.976562, -0.507812, 1, -1, - -1, 0.976562, -1, 0.980469, 1, 0.410156, 0.996094, -1, -1, 0.96875, - -1, 1, -1, 0.976562, -1, 1, -1, 1, -0.914062, -1, - -0.460938, 1, -0.996094, -1, -0.992188, 1, -1, -1, 0.244141, -1}), + -1, -0.757812, -0.960938, 1, 1, 0, 0.960938, 0.757812, -1, + -1, -0.59375, 1, 0.921875, -1, -1, 0.244141, -1, -1, + -0.992188, 1, -1, -1, -1, -0.953125, 1, -0.449219, 1, + -0.957031, -1, 1, 0.898438, 1, -1, 1, -1, 1, + 0.992188, 1, -1, -1, -1, 1, -0.953125, 0.992188, -1, + -1, 0.96875, -0.185547, -1, -0.757812, -1, 1, 1, 0.863281, + 1, 1, -1, -1, 1, -1, -0.757812, -0.96875, -0.957031, + 0.757812, -0.773438, -0.03125, 1, -1, -0.992188, -0.992188, -1, 1, + -1, -1, -1, 1, -0.960938, -1, -1, -1, 0.0625, + -1, 1, 0.214844, 1, -1, 1, -0.832031, -0.300781, 0.996094, + 0.757812, 1, -0.960938, -0.992188, -0.960938, -1, -0.960938, -1, -1, + -1, -0.757812, -1, 1, -1, -1, -1, 1, -1, + -1, -1, -1, 1, -1, -1, -1, 1, 1, + -1, -1, -1, -1, 0.757812, -0.992188, 1, -1, 1, + 0.960938, -0.757812, -1, -1, 1, -0.652344, -1, -1, 0.515625, + -1, 1, -0.984375, 0.945312, -0.835938, -1, 1, -1, -0.785156, + -0.992188, -1, -0.300781, -1, 1, -1, 1, 0, 1, + -1, -1, 0.78125, 1, -1, 1, -1, -1, 1, + -1, -1, -1, -1, 1, -1, 0.949219, -1, 1, + -1, 1, 1, 0.835938, -0.992188, -1, -1, 1, -1, + -1, 1, -1, -1, -0.859375, -1, 1, 0.03125, 1, + -0.996094, -1, 1, 1, 1, 1, 1, -0.757812, 0.960938, + 0.992188, -1, -1, -1, 0, 1, -1, 1, -1, + -1, -1, -1, -0.757812, 0, 1, 1, 1, -1, + 0.992188, -0.757812, -0.992188, 1, 1, -1, -0.0078125, 0.976562, 1, + 1, 1, -0.992188, -1, -0.9375, 0, 1, 1, 1, + -1, -1, 0.953125, 0.734375, -1, -0.992188, -1, -1, -1, + 0.976562, -0.984375, 0.992188, 0.875, -1, 1, -1, -0.734375, -1, + 0.984375, 1, 1, -0.996094, -0.703125, 1, -1, 1, 1, + 1, 0.960938, 1, -1, 0.992188, -0.0625, 0, -1, 0.785156, + 1, 1, -1, -1, -1, 1, 1, -1, 0.925781, + -1, 1, -1, -1, 0.820312, 1, -1, -1, -1, + 1, -1, -0.960938, -1, 1, -1, 1, -0.757812, 0.757812, + 1, 1, 0.960938, -0.992188, 0.992188, 1, -0.960938, -1, -1, + -1, -1, -1, 1, -1, -1, -1, 1, 0.96875, + 0.992188, 1, 0.96875, -0.734375, -1, 1, -1, 1, -0.914062, + 1, -1, -0.486328, -1, 1, 1, 1, 1, -0.996094, + 1, -1, -1, 1, 0.785156, 1, -1, 1, 1, + -0.996094, -0.652344, -0.914062, -1, 0.976562, -0.507812, 1, -1, -1, + 0.976562, -1, 0.980469, 1, 0.410156, 0.996094, -1, -1, 0.96875, + 0.914062, -1, 1, -0.984375, 1, 1, -1, 0.757812, 1, + 1, 1, -1, -0.53125, 1, -1, -0.882812, 0.523438, -1, + -0.632812, 1, 1, 0, -0.757812, -0.992188, -0.960938, -1, 1, + 1, -0.992188, -0.960938, 1, -1, 1, 1, 1, -1, + -1, -1, 1, -1, -0.992188, -1, 1, -1, 1, + -1, 1, -1, 1, 1, 0.992188, 1, -1, 1, + -0.757812, 1, 1, 0.757812, 1, -1, -0.9375, 1, 1, + -1, -0.976562, -1, -0.460938, -1, 1, -0.984375, -1, -0.6875, + -1, -1, -0.929688, -0.992188, 1, -1, 0.914062, -1, -1, + 1, -1, 0.976562, -1, 1, -1, 1, -0.914062, -1, + -0.460938, 1, -0.996094, -1, -0.992188, 1, -1, -1, 0.244141, + -1, -0.992188, 0.765625, 1, 0.992188, -1, -1, 0.992188, 1, + 1, 0.960938, 0.984375, 1, 1, -1, 1, -0.984375, 1, + -1, 1, -1, -0.460938, -1, 1, -1, 1, 0.964844, + -1, -1, 1, -1, -1, -0.992188, -1, 1, 0, + -0.757812, 0.960938, 1, -1, 1}, + std::vector{-1, 1, -0.953125, 0.992188, -1, -1, 0.96875, -0.185547, + -1, -0.757812, -1, 1, 1, 0.863281, 1, 1, + -1, -1, 1, -1, -1, 1, -1, -0.785156, + -0.992188, -1, -0.300781, -1, 1, -1, 1, 0, + 1, -1, -1, 0.78125, 1, -1, 1, -1, + -1, -1, -1, 0.976562, -0.984375, 0.992188, 0.875, -1, + 1, -1, -0.734375, -1, 0.984375, 1, 1, -0.996094, + -0.703125, 1, -1, 1, 1, 1, -0.996094, -0.652344, + -0.914062, -1, 0.976562, -0.507812, 1, -1, -1, 0.976562, + -1, 0.980469, 1, 0.410156, 0.996094, -1, -1, 0.96875, + -1, 1, -1, 0.976562, -1, 1, -1, 1, + -0.914062, -1, -0.460938, 1, -0.996094, -1, -0.992188, 1, + -1, -1, 0.244141, -1}), }; return params; } std::vector generateCombinedParams() { - const std::vector> generatedParams { + const std::vector> generatedParams{ generateParams(), generateParams(), generateParams(), @@ -1030,7 +1060,9 @@ std::vector generateCombinedParams() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_RNNSequence_With_Hardcoded_Refs, ReferenceRNNSequenceTest, - testing::ValuesIn(generateCombinedParams()), ReferenceRNNSequenceTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_RNNSequence_With_Hardcoded_Refs, + ReferenceRNNSequenceTest, + testing::ValuesIn(generateCombinedParams()), + ReferenceRNNSequenceTest::getTestCaseName); -} // namespace \ No newline at end of file +} // namespace \ No newline at end of file diff --git a/src/plugins/template/tests/functional/op_reference/roi_align.cpp b/src/plugins/template/tests/functional/op_reference/roi_align.cpp index d27fec9377a..ede8f75ace3 100644 --- a/src/plugins/template/tests/functional/op_reference/roi_align.cpp +++ b/src/plugins/template/tests/functional/op_reference/roi_align.cpp @@ -4,12 +4,12 @@ #include -#include "openvino/opsets/opset9.hpp" -#include "openvino/opsets/opset5.hpp" -#include "openvino/opsets/opset4.hpp" -#include "openvino/opsets/opset3.hpp" -#include "openvino/opsets/opset1.hpp" #include "base_reference_test.hpp" +#include "openvino/opsets/opset1.hpp" +#include "openvino/opsets/opset3.hpp" +#include "openvino/opsets/opset4.hpp" +#include "openvino/opsets/opset5.hpp" +#include "openvino/opsets/opset9.hpp" using namespace reference_tests; using namespace ov; @@ -17,11 +17,17 @@ using namespace ov; namespace { struct ROIAlignParams { template - ROIAlignParams(const PartialShape& pShape, const element::Type& iType, const std::vector& iValues, + ROIAlignParams(const PartialShape& pShape, + const element::Type& iType, + const std::vector& iValues, const reference_tests::Tensor& expectedFeatureMap, - const reference_tests::Tensor& coords, const reference_tests::Tensor& roiIdx, - const int32_t pooledH, const int32_t pooledW, - const float spatialScale, const int32_t poolingRatio, const std::string& poolingMode, + const reference_tests::Tensor& coords, + const reference_tests::Tensor& roiIdx, + const int32_t pooledH, + const int32_t pooledW, + const float spatialScale, + const int32_t poolingRatio, + const std::string& poolingMode, const std::string& testcaseName) : pShape(pShape), iType(iType), @@ -52,12 +58,19 @@ struct ROIAlignParams { struct ROIAlignV9Params { template - ROIAlignV9Params(const PartialShape& pShape, const element::Type& iType, const std::vector& iValues, - const reference_tests::Tensor& expectedFeatureMap, - const reference_tests::Tensor& coords, const reference_tests::Tensor& roiIdx, - const int32_t pooledH, const int32_t pooledW, - const float spatialScale, const int32_t poolingRatio, const std::string& poolingMode, - const std::string& alignedMode, const std::string& testcaseName) + ROIAlignV9Params(const PartialShape& pShape, + const element::Type& iType, + const std::vector& iValues, + const reference_tests::Tensor& expectedFeatureMap, + const reference_tests::Tensor& coords, + const reference_tests::Tensor& roiIdx, + const int32_t pooledH, + const int32_t pooledW, + const float spatialScale, + const int32_t poolingRatio, + const std::string& poolingMode, + const std::string& alignedMode, + const std::string& testcaseName) : pShape(pShape), iType(iType), featureMap(CreateTensor(iType, iValues)), @@ -121,8 +134,10 @@ public: private: static std::shared_ptr CreateFunction(const ROIAlignParams& params) { const auto featureMap = std::make_shared(params.iType, params.pShape); - const auto coords = std::make_shared(params.coords.type, params.coords.shape, params.coords.data.data()); - const auto roisIdx = std::make_shared(params.roiIdx.type, params.roiIdx.shape, params.roiIdx.data.data()); + const auto coords = + std::make_shared(params.coords.type, params.coords.shape, params.coords.data.data()); + const auto roisIdx = + std::make_shared(params.roiIdx.type, params.roiIdx.shape, params.roiIdx.data.data()); const auto roi_align = std::make_shared(featureMap, coords, roisIdx, @@ -171,8 +186,10 @@ public: private: static std::shared_ptr CreateFunction(const ROIAlignV9Params& params) { const auto featureMap = std::make_shared(params.iType, params.pShape); - const auto coords = std::make_shared(params.coords.type, params.coords.shape, params.coords.data.data()); - const auto roisIdx = std::make_shared(params.roiIdx.type, params.roiIdx.shape, params.roiIdx.data.data()); + const auto coords = + std::make_shared(params.coords.type, params.coords.shape, params.coords.data.data()); + const auto roisIdx = + std::make_shared(params.roiIdx.type, params.roiIdx.shape, params.roiIdx.data.data()); const auto pooling_mode = EnumNames::as_enum(params.poolingMode); const auto aligned_mode = EnumNames::as_enum(params.alignedMode); const auto roi_align = std::make_shared(featureMap, @@ -201,64 +218,74 @@ template std::vector generateParams() { using T = typename element_type_traits::value_type; using T_IND = typename element_type_traits::value_type; - std::vector params { - ROIAlignParams(PartialShape{2, 1, 8, 8}, ET, - std::vector{0, 1, 8, 5, 5, 2, 0, 7, 7, 10, 4, 5, 9, 0, 0, 5, - 7, 0, 4, 0, 4, 7, 6, 10, 9, 5, 1, 7, 4, 7, 10, 8, - 2, 0, 8, 3, 6, 8, 10, 4, 2, 10, 7, 8, 7, 0, 6, 9, - 2, 4, 8, 5, 2, 3, 3, 1, 5, 9, 10, 0, 9, 5, 5, 3, - 10, 5, 2, 0, 10, 0, 5, 4, 3, 10, 5, 5, 10, 0, 8, 8, - 9, 1, 0, 7, 9, 6, 8, 7, 10, 9, 2, 3, 3, 5, 6, 9, - 4, 9, 2, 4, 5, 5, 3, 1, 1, 6, 8, 0, 5, 5, 10, 8, - 6, 9, 6, 9, 1, 2, 7, 1, 1, 3, 0, 4, 0, 7, 10, 2}, - reference_tests::Tensor(ET, {2, 1, 2, 2}, std::vector{3, 3.75, 4.75, 5, 3, 5.5, 2.75, 3.75}), - reference_tests::Tensor(ET, {2, 4}, std::vector{2, 2, 4, 4, 2, 2, 4, 4}), - reference_tests::Tensor(ET_IND, {2}, std::vector{0, 1}), - 2, 2, 1, 2, "avg", "roi_align_avg"), + std::vector params{ + ROIAlignParams( + PartialShape{2, 1, 8, 8}, + ET, + std::vector{0, 1, 8, 5, 5, 2, 0, 7, 7, 10, 4, 5, 9, 0, 0, 5, 7, 0, 4, 0, 4, 7, 6, 10, 9, 5, + 1, 7, 4, 7, 10, 8, 2, 0, 8, 3, 6, 8, 10, 4, 2, 10, 7, 8, 7, 0, 6, 9, 2, 4, 8, 5, + 2, 3, 3, 1, 5, 9, 10, 0, 9, 5, 5, 3, 10, 5, 2, 0, 10, 0, 5, 4, 3, 10, 5, 5, 10, 0, + 8, 8, 9, 1, 0, 7, 9, 6, 8, 7, 10, 9, 2, 3, 3, 5, 6, 9, 4, 9, 2, 4, 5, 5, 3, 1, + 1, 6, 8, 0, 5, 5, 10, 8, 6, 9, 6, 9, 1, 2, 7, 1, 1, 3, 0, 4, 0, 7, 10, 2}, + reference_tests::Tensor(ET, {2, 1, 2, 2}, std::vector{3, 3.75, 4.75, 5, 3, 5.5, 2.75, 3.75}), + reference_tests::Tensor(ET, {2, 4}, std::vector{2, 2, 4, 4, 2, 2, 4, 4}), + reference_tests::Tensor(ET_IND, {2}, std::vector{0, 1}), + 2, + 2, + 1, + 2, + "avg", + "roi_align_avg"), - ROIAlignParams(PartialShape{2, 1, 8, 8}, ET, - std::vector{0, 1, 8, 5, 5, 2, 0, 7, 7, 10, 4, 5, 9, 0, 0, 5, - 7, 0, 4, 0, 4, 7, 6, 10, 9, 5, 1, 7, 4, 7, 10, 8, - 2, 0, 8, 3, 6, 8, 10, 4, 2, 10, 7, 8, 7, 0, 6, 9, - 2, 4, 8, 5, 2, 3, 3, 1, 5, 9, 10, 0, 9, 5, 5, 3, - 10, 5, 2, 0, 10, 0, 5, 4, 3, 10, 5, 5, 10, 0, 8, 8, - 9, 1, 0, 7, 9, 6, 8, 7, 10, 9, 2, 3, 3, 5, 6, 9, - 4, 9, 2, 4, 5, 5, 3, 1, 1, 6, 8, 0, 5, 5, 10, 8, - 6, 9, 6, 9, 1, 2, 7, 1, 1, 3, 0, 4, 0, 7, 10, 2}, - reference_tests::Tensor(ET, {2, 1, 2, 2}, std::vector{4.375, 4.9375, 5.6875, 5.625, 4.625, 7.125, 3.3125, 4.3125}), - reference_tests::Tensor(ET, {2, 4}, std::vector{2, 2, 4, 4, 2, 2, 4, 4}), - reference_tests::Tensor(ET_IND, {2}, std::vector{0, 1}), - 2, 2, 1, 2, "max", "roi_align_max"), + ROIAlignParams( + PartialShape{2, 1, 8, 8}, + ET, + std::vector{0, 1, 8, 5, 5, 2, 0, 7, 7, 10, 4, 5, 9, 0, 0, 5, 7, 0, 4, 0, 4, 7, 6, 10, 9, 5, + 1, 7, 4, 7, 10, 8, 2, 0, 8, 3, 6, 8, 10, 4, 2, 10, 7, 8, 7, 0, 6, 9, 2, 4, 8, 5, + 2, 3, 3, 1, 5, 9, 10, 0, 9, 5, 5, 3, 10, 5, 2, 0, 10, 0, 5, 4, 3, 10, 5, 5, 10, 0, + 8, 8, 9, 1, 0, 7, 9, 6, 8, 7, 10, 9, 2, 3, 3, 5, 6, 9, 4, 9, 2, 4, 5, 5, 3, 1, + 1, 6, 8, 0, 5, 5, 10, 8, 6, 9, 6, 9, 1, 2, 7, 1, 1, 3, 0, 4, 0, 7, 10, 2}, + reference_tests::Tensor(ET, + {2, 1, 2, 2}, + std::vector{4.375, 4.9375, 5.6875, 5.625, 4.625, 7.125, 3.3125, 4.3125}), + reference_tests::Tensor(ET, {2, 4}, std::vector{2, 2, 4, 4, 2, 2, 4, 4}), + reference_tests::Tensor(ET_IND, {2}, std::vector{0, 1}), + 2, + 2, + 1, + 2, + "max", + "roi_align_max"), }; return params; } std::vector generateCombinedParams() { - const std::vector> generatedParams { - generateParams(), - generateParams(), - generateParams(), - generateParams(), - generateParams(), - generateParams(), - generateParams(), - generateParams(), - generateParams(), - generateParams(), - generateParams(), - generateParams(), - generateParams(), - generateParams(), - generateParams(), - generateParams(), - generateParams(), - generateParams(), - generateParams(), - generateParams(), - generateParams(), - generateParams(), - generateParams(), - generateParams(), + const std::vector> generatedParams{ + generateParams(), + generateParams(), + generateParams(), + generateParams(), + generateParams(), + generateParams(), + generateParams(), + generateParams(), + generateParams(), + generateParams(), + generateParams(), + generateParams(), + generateParams(), + generateParams(), + generateParams(), + generateParams(), + generateParams(), + generateParams(), + generateParams(), + generateParams(), + generateParams(), + generateParams(), + generateParams(), + generateParams(), }; std::vector combinedParams; @@ -272,78 +299,95 @@ template std::vector generateParamsV9() { using T = typename element_type_traits::value_type; using T_IND = typename element_type_traits::value_type; - std::vector params { - ROIAlignV9Params(PartialShape{2, 1, 8, 8}, ET, - std::vector{0, 1, 8, 5, 5, 2, 0, 7, 7, 10, 4, 5, 9, 0, 0, 5, - 7, 0, 4, 0, 4, 7, 6, 10, 9, 5, 1, 7, 4, 7, 10, 8, - 2, 0, 8, 3, 6, 8, 10, 4, 2, 10, 7, 8, 7, 0, 6, 9, - 2, 4, 8, 5, 2, 3, 3, 1, 5, 9, 10, 0, 9, 5, 5, 3, - 10, 5, 2, 0, 10, 0, 5, 4, 3, 10, 5, 5, 10, 0, 8, 8, - 9, 1, 0, 7, 9, 6, 8, 7, 10, 9, 2, 3, 3, 5, 6, 9, - 4, 9, 2, 4, 5, 5, 3, 1, 1, 6, 8, 0, 5, 5, 10, 8, - 6, 9, 6, 9, 1, 2, 7, 1, 1, 3, 0, 4, 0, 7, 10, 2}, - reference_tests::Tensor(ET, {2, 1, 2, 2}, std::vector{3, 3.75, 4.75, 5, 3, 5.5, 2.75, 3.75}), - reference_tests::Tensor(ET, {2, 4}, std::vector{2, 2, 4, 4, 2, 2, 4, 4}), - reference_tests::Tensor(ET_IND, {2}, std::vector{0, 1}), - 2, 2, 1, 2, "avg", "asymmetric", "roi_align_v9_avg_asymmetric"), + std::vector params{ + ROIAlignV9Params( + PartialShape{2, 1, 8, 8}, + ET, + std::vector{0, 1, 8, 5, 5, 2, 0, 7, 7, 10, 4, 5, 9, 0, 0, 5, 7, 0, 4, 0, 4, 7, 6, 10, 9, 5, + 1, 7, 4, 7, 10, 8, 2, 0, 8, 3, 6, 8, 10, 4, 2, 10, 7, 8, 7, 0, 6, 9, 2, 4, 8, 5, + 2, 3, 3, 1, 5, 9, 10, 0, 9, 5, 5, 3, 10, 5, 2, 0, 10, 0, 5, 4, 3, 10, 5, 5, 10, 0, + 8, 8, 9, 1, 0, 7, 9, 6, 8, 7, 10, 9, 2, 3, 3, 5, 6, 9, 4, 9, 2, 4, 5, 5, 3, 1, + 1, 6, 8, 0, 5, 5, 10, 8, 6, 9, 6, 9, 1, 2, 7, 1, 1, 3, 0, 4, 0, 7, 10, 2}, + reference_tests::Tensor(ET, {2, 1, 2, 2}, std::vector{3, 3.75, 4.75, 5, 3, 5.5, 2.75, 3.75}), + reference_tests::Tensor(ET, {2, 4}, std::vector{2, 2, 4, 4, 2, 2, 4, 4}), + reference_tests::Tensor(ET_IND, {2}, std::vector{0, 1}), + 2, + 2, + 1, + 2, + "avg", + "asymmetric", + "roi_align_v9_avg_asymmetric"), - ROIAlignV9Params(PartialShape{2, 1, 8, 8}, ET, - std::vector{0, 1, 8, 5, 5, 2, 0, 7, 7, 10, 4, 5, 9, 0, 0, 5, - 7, 0, 4, 0, 4, 7, 6, 10, 9, 5, 1, 7, 4, 7, 10, 8, - 2, 0, 8, 3, 6, 8, 10, 4, 2, 10, 7, 8, 7, 0, 6, 9, - 2, 4, 8, 5, 2, 3, 3, 1, 5, 9, 10, 0, 9, 5, 5, 3, - 10, 5, 2, 0, 10, 0, 5, 4, 3, 10, 5, 5, 10, 0, 8, 8, - 9, 1, 0, 7, 9, 6, 8, 7, 10, 9, 2, 3, 3, 5, 6, 9, - 4, 9, 2, 4, 5, 5, 3, 1, 1, 6, 8, 0, 5, 5, 10, 8, - 6, 9, 6, 9, 1, 2, 7, 1, 1, 3, 0, 4, 0, 7, 10, 2}, - reference_tests::Tensor(ET, {2, 1, 2, 2}, std::vector{3.14, 2.16, 2.86, 5.03, 1.83, 5.84, 2.77, 3.44}), - reference_tests::Tensor(ET, {2, 4}, std::vector{2, 2, 4, 4, 2, 2, 4, 4}), - reference_tests::Tensor(ET_IND, {2}, std::vector{0, 1}), - 2, 2, 1, 2, "avg", "half_pixel_for_nn", "roi_align_v9_avg_half_pixel_for_nn"), + ROIAlignV9Params( + PartialShape{2, 1, 8, 8}, + ET, + std::vector{0, 1, 8, 5, 5, 2, 0, 7, 7, 10, 4, 5, 9, 0, 0, 5, 7, 0, 4, 0, 4, 7, 6, 10, 9, 5, + 1, 7, 4, 7, 10, 8, 2, 0, 8, 3, 6, 8, 10, 4, 2, 10, 7, 8, 7, 0, 6, 9, 2, 4, 8, 5, + 2, 3, 3, 1, 5, 9, 10, 0, 9, 5, 5, 3, 10, 5, 2, 0, 10, 0, 5, 4, 3, 10, 5, 5, 10, 0, + 8, 8, 9, 1, 0, 7, 9, 6, 8, 7, 10, 9, 2, 3, 3, 5, 6, 9, 4, 9, 2, 4, 5, 5, 3, 1, + 1, 6, 8, 0, 5, 5, 10, 8, 6, 9, 6, 9, 1, 2, 7, 1, 1, 3, 0, 4, 0, 7, 10, 2}, + reference_tests::Tensor(ET, {2, 1, 2, 2}, std::vector{3.14, 2.16, 2.86, 5.03, 1.83, 5.84, 2.77, 3.44}), + reference_tests::Tensor(ET, {2, 4}, std::vector{2, 2, 4, 4, 2, 2, 4, 4}), + reference_tests::Tensor(ET_IND, {2}, std::vector{0, 1}), + 2, + 2, + 1, + 2, + "avg", + "half_pixel_for_nn", + "roi_align_v9_avg_half_pixel_for_nn"), - ROIAlignV9Params(PartialShape{2, 1, 8, 8}, ET, - std::vector{0, 1, 8, 5, 5, 2, 0, 7, 7, 10, 4, 5, 9, 0, 0, 5, - 7, 0, 4, 0, 4, 7, 6, 10, 9, 5, 1, 7, 4, 7, 10, 8, - 2, 0, 8, 3, 6, 8, 10, 4, 2, 10, 7, 8, 7, 0, 6, 9, - 2, 4, 8, 5, 2, 3, 3, 1, 5, 9, 10, 0, 9, 5, 5, 3, - 10, 5, 2, 0, 10, 0, 5, 4, 3, 10, 5, 5, 10, 0, 8, 8, - 9, 1, 0, 7, 9, 6, 8, 7, 10, 9, 2, 3, 3, 5, 6, 9, - 4, 9, 2, 4, 5, 5, 3, 1, 1, 6, 8, 0, 5, 5, 10, 8, - 6, 9, 6, 9, 1, 2, 7, 1, 1, 3, 0, 4, 0, 7, 10, 2}, - reference_tests::Tensor(ET, {2, 1, 2, 2}, std::vector{4.375, 4.9375, 5.6875, 5.625, 4.625, 7.125, 3.3125, 4.3125}), - reference_tests::Tensor(ET, {2, 4}, std::vector{2, 2, 4, 4, 2, 2, 4, 4}), - reference_tests::Tensor(ET_IND, {2}, std::vector{0, 1}), - 2, 2, 1, 2, "max", "half_pixel", "roi_align_v9_max_half_pixel"), + ROIAlignV9Params( + PartialShape{2, 1, 8, 8}, + ET, + std::vector{0, 1, 8, 5, 5, 2, 0, 7, 7, 10, 4, 5, 9, 0, 0, 5, 7, 0, 4, 0, 4, 7, 6, 10, 9, 5, + 1, 7, 4, 7, 10, 8, 2, 0, 8, 3, 6, 8, 10, 4, 2, 10, 7, 8, 7, 0, 6, 9, 2, 4, 8, 5, + 2, 3, 3, 1, 5, 9, 10, 0, 9, 5, 5, 3, 10, 5, 2, 0, 10, 0, 5, 4, 3, 10, 5, 5, 10, 0, + 8, 8, 9, 1, 0, 7, 9, 6, 8, 7, 10, 9, 2, 3, 3, 5, 6, 9, 4, 9, 2, 4, 5, 5, 3, 1, + 1, 6, 8, 0, 5, 5, 10, 8, 6, 9, 6, 9, 1, 2, 7, 1, 1, 3, 0, 4, 0, 7, 10, 2}, + reference_tests::Tensor(ET, + {2, 1, 2, 2}, + std::vector{4.375, 4.9375, 5.6875, 5.625, 4.625, 7.125, 3.3125, 4.3125}), + reference_tests::Tensor(ET, {2, 4}, std::vector{2, 2, 4, 4, 2, 2, 4, 4}), + reference_tests::Tensor(ET_IND, {2}, std::vector{0, 1}), + 2, + 2, + 1, + 2, + "max", + "half_pixel", + "roi_align_v9_max_half_pixel"), }; return params; } std::vector generateCombinedParamsV9() { - const std::vector> generatedParams { - generateParamsV9(), - generateParamsV9(), - generateParamsV9(), - generateParamsV9(), - generateParamsV9(), - generateParamsV9(), - generateParamsV9(), - generateParamsV9(), - generateParamsV9(), - generateParamsV9(), - generateParamsV9(), - generateParamsV9(), - generateParamsV9(), - generateParamsV9(), - generateParamsV9(), - generateParamsV9(), - generateParamsV9(), - generateParamsV9(), - generateParamsV9(), - generateParamsV9(), - generateParamsV9(), - generateParamsV9(), - generateParamsV9(), - generateParamsV9(), + const std::vector> generatedParams{ + generateParamsV9(), + generateParamsV9(), + generateParamsV9(), + generateParamsV9(), + generateParamsV9(), + generateParamsV9(), + generateParamsV9(), + generateParamsV9(), + generateParamsV9(), + generateParamsV9(), + generateParamsV9(), + generateParamsV9(), + generateParamsV9(), + generateParamsV9(), + generateParamsV9(), + generateParamsV9(), + generateParamsV9(), + generateParamsV9(), + generateParamsV9(), + generateParamsV9(), + generateParamsV9(), + generateParamsV9(), + generateParamsV9(), + generateParamsV9(), }; std::vector combinedParams; @@ -353,9 +397,13 @@ std::vector generateCombinedParamsV9() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_ROIAlign_With_Hardcoded_Refs, ReferenceROIAlignTest, - testing::ValuesIn(generateCombinedParams()), ReferenceROIAlignTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_ROIAlign_With_Hardcoded_Refs, + ReferenceROIAlignTest, + testing::ValuesIn(generateCombinedParams()), + ReferenceROIAlignTest::getTestCaseName); -INSTANTIATE_TEST_SUITE_P(smoke_ROIAlignV9_With_Hardcoded_Refs, ReferenceROIAlignV9Test, - testing::ValuesIn(generateCombinedParamsV9()), ReferenceROIAlignV9Test::getTestCaseName); -} // namespace +INSTANTIATE_TEST_SUITE_P(smoke_ROIAlignV9_With_Hardcoded_Refs, + ReferenceROIAlignV9Test, + testing::ValuesIn(generateCombinedParamsV9()), + ReferenceROIAlignV9Test::getTestCaseName); +} // namespace diff --git a/src/plugins/template/tests/functional/op_reference/roi_pooling.cpp b/src/plugins/template/tests/functional/op_reference/roi_pooling.cpp index de1f4c1b81d..cce7a1dd4ec 100644 --- a/src/plugins/template/tests/functional/op_reference/roi_pooling.cpp +++ b/src/plugins/template/tests/functional/op_reference/roi_pooling.cpp @@ -2,9 +2,10 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/roi_pooling.hpp" + #include -#include "openvino/op/roi_pooling.hpp" #include "base_reference_test.hpp" using namespace ov; @@ -12,13 +13,30 @@ using namespace reference_tests; struct ROIPoolingParams { template - ROIPoolingParams(const size_t iH, const size_t iW, const size_t ch, const size_t rois, - const size_t oH, const size_t oW, const float sS, const std::string mode, - const ov::element::Type& type, const std::vector& inputValues, - const std::vector& proposalValues, const std::vector& outputValues) - : inputH(iH), inputW(iW), channelCount(ch), roiCount(rois), outputH(oH), outputW(oW), spatialScale(sS), - poolingMode(mode), dataType(type), featureMap(CreateTensor(type, inputValues)), - proposal(CreateTensor(type, proposalValues)), refData(CreateTensor(type, outputValues)) {} + ROIPoolingParams(const size_t iH, + const size_t iW, + const size_t ch, + const size_t rois, + const size_t oH, + const size_t oW, + const float sS, + const std::string mode, + const ov::element::Type& type, + const std::vector& inputValues, + const std::vector& proposalValues, + const std::vector& outputValues) + : inputH(iH), + inputW(iW), + channelCount(ch), + roiCount(rois), + outputH(oH), + outputW(oW), + spatialScale(sS), + poolingMode(mode), + dataType(type), + featureMap(CreateTensor(type, inputValues)), + proposal(CreateTensor(type, proposalValues)), + refData(CreateTensor(type, outputValues)) {} size_t inputH; size_t inputW; size_t channelCount; @@ -33,7 +51,7 @@ struct ROIPoolingParams { ov::Tensor refData; public: - template + template inline static std::vector increasinglyFilledBlob(size_t size) { std::vector inputValues; T one = 1; @@ -42,7 +60,7 @@ public: } return inputValues; } - template + template inline static std::vector equallyFilledBlob(size_t size, T value) { std::vector inputValues; for (size_t i = 0; i < size; i++) { @@ -56,8 +74,15 @@ class ReferenceRoiPoolingLayerTest : public testing::TestWithParam CreateFunction(const size_t i_h, const size_t i_w, const size_t ch, const size_t roi_count, - const size_t o_h, const size_t o_w, const float spat_scale, const std::string mode, - const ov::element::Type& type) { + static std::shared_ptr CreateFunction(const size_t i_h, + const size_t i_w, + const size_t ch, + const size_t roi_count, + const size_t o_h, + const size_t o_w, + const float spat_scale, + const std::string mode, + const ov::element::Type& type) { Shape feat_map_shape{1, ch, i_h, i_w}; Shape rois_shape{roi_count, 5}; Shape pooled_shape{o_h, o_w}; @@ -96,126 +127,209 @@ TEST_P(ReferenceRoiPoolingLayerTest, CompareWithHardcodedRefs) { } INSTANTIATE_TEST_SUITE_P( - smoke_ROIPooling_With_Hardcoded_Refs, ReferenceRoiPoolingLayerTest, - ::testing::Values( - // fp32 - // roi_pooling_1x1_max - ROIPoolingParams(6, 6, // iH, iW - 3, 3, // channels, rois - 1, 1, // oH, oW - 1.f, "max", // scale, mode - element::f32, ROIPoolingParams::increasinglyFilledBlob(3 * 6 * 6), - std::vector {0, 1, 1, 2, 3, 0, 1, 1, 2, 3, 0, 1, 1, 2, 3}, - std::vector {2.0f, 5.6f, 9.2f, 2.0f, 5.6f, 9.2f, 2.0f, 5.6f, 9.2f}), - // roi_pooling_2x2_max - ROIPoolingParams(6, 6, // iH, iW - 1, 3, // channels, rois - 2, 2, // oH, oW - 1.f, "max", // scale, mode - element::f32, ROIPoolingParams::increasinglyFilledBlob(1 * 6 * 6), - std::vector {0, 1, 1, 3, 3, 0, 1, 2, 2, 4, 0, 0, 1, 4, 5}, - std::vector {1.4f, 1.5f, 2.0f, 2.1f, 1.9f, 2.0f, 2.5f, 2.6f, 2.0f, 2.2f, 3.2f, 3.4f}), - // roi_pooling_1x1_bilinear - ROIPoolingParams(6, 6, // iH, iW - 3, 2, // channels, rois - 1, 1, // oH, oW - 1.f, "bilinear", // scale, mode - element::f32, ROIPoolingParams::increasinglyFilledBlob(3 * 6 * 6), - std::vector {0, 0.2, 0.2, 0.4, 0.4, 0, 0.2, 0.2, 0.6, 0.6}, - std::vector {1.05f, 4.65f, 8.25f, 1.4f, 5.0f, 8.6f}), - // roi_pooling_2x2_bilinear - ROIPoolingParams(8, 8, // iH, iW - 1, 3, // channels, rois - 2, 2, // oH, oW - 1.f, "bilinear", // scale, mode - element::f32, ROIPoolingParams::increasinglyFilledBlob(1 * 8 * 8), - std::vector {0.f, 0.15f, 0.2f, 0.75f, 0.8f, - 0.f, 0.15f, 0.2f, 0.75f, 0.8f, - 0.f, 0.15f, 0.2f, 0.75f, 0.8f}, - std::vector {1.225f, 1.645f, 4.585f, 5.005f, - 1.225f, 1.645f, 4.585f, 5.005f, - 1.225f, 1.645f, 4.585f, 5.005f}), - // roi_pooling_2x2_bilinear_border_proposal - ROIPoolingParams(50, 50, // iH, iW - 1, 1, // channels, rois - 4, 4, // oH, oW - 1.f, "bilinear", // scale, mode - element::f32, ROIPoolingParams::equallyFilledBlob(1 * 50 * 50, 1), - std::vector {0.f, 0.f, 0.248046786f, 0.471333951f, 1.f}, - std::vector(16, 1.f)), + smoke_ROIPooling_With_Hardcoded_Refs, + ReferenceRoiPoolingLayerTest, + ::testing::Values( + // fp32 + // roi_pooling_1x1_max + ROIPoolingParams(6, + 6, // iH, iW + 3, + 3, // channels, rois + 1, + 1, // oH, oW + 1.f, + "max", // scale, mode + element::f32, + ROIPoolingParams::increasinglyFilledBlob(3 * 6 * 6), + std::vector{0, 1, 1, 2, 3, 0, 1, 1, 2, 3, 0, 1, 1, 2, 3}, + std::vector{2.0f, 5.6f, 9.2f, 2.0f, 5.6f, 9.2f, 2.0f, 5.6f, 9.2f}), + // roi_pooling_2x2_max + ROIPoolingParams(6, + 6, // iH, iW + 1, + 3, // channels, rois + 2, + 2, // oH, oW + 1.f, + "max", // scale, mode + element::f32, + ROIPoolingParams::increasinglyFilledBlob(1 * 6 * 6), + std::vector{0, 1, 1, 3, 3, 0, 1, 2, 2, 4, 0, 0, 1, 4, 5}, + std::vector{1.4f, 1.5f, 2.0f, 2.1f, 1.9f, 2.0f, 2.5f, 2.6f, 2.0f, 2.2f, 3.2f, 3.4f}), + // roi_pooling_1x1_bilinear + ROIPoolingParams(6, + 6, // iH, iW + 3, + 2, // channels, rois + 1, + 1, // oH, oW + 1.f, + "bilinear", // scale, mode + element::f32, + ROIPoolingParams::increasinglyFilledBlob(3 * 6 * 6), + std::vector{0, 0.2, 0.2, 0.4, 0.4, 0, 0.2, 0.2, 0.6, 0.6}, + std::vector{1.05f, 4.65f, 8.25f, 1.4f, 5.0f, 8.6f}), + // roi_pooling_2x2_bilinear + ROIPoolingParams( + 8, + 8, // iH, iW + 1, + 3, // channels, rois + 2, + 2, // oH, oW + 1.f, + "bilinear", // scale, mode + element::f32, + ROIPoolingParams::increasinglyFilledBlob(1 * 8 * 8), + std::vector< + float>{0.f, 0.15f, 0.2f, 0.75f, 0.8f, 0.f, 0.15f, 0.2f, 0.75f, 0.8f, 0.f, 0.15f, 0.2f, 0.75f, 0.8f}, + std::vector< + float>{1.225f, 1.645f, 4.585f, 5.005f, 1.225f, 1.645f, 4.585f, 5.005f, 1.225f, 1.645f, 4.585f, 5.005f}), + // roi_pooling_2x2_bilinear_border_proposal + ROIPoolingParams(50, + 50, // iH, iW + 1, + 1, // channels, rois + 4, + 4, // oH, oW + 1.f, + "bilinear", // scale, mode + element::f32, + ROIPoolingParams::equallyFilledBlob(1 * 50 * 50, 1), + std::vector{0.f, 0.f, 0.248046786f, 0.471333951f, 1.f}, + std::vector(16, 1.f)), - // bf16 - // roi_pooling_1x1_max - ROIPoolingParams(6, 6, // iH, iW - 3, 3, // channels, rois - 1, 1, // oH, oW - 1.f, "max", // scale, mode - element::bf16, ROIPoolingParams::increasinglyFilledBlob(3 * 6 * 6), - std::vector {0, 1, 1, 2, 3, 0, 1, 1, 2, 3, 0, 1, 1, 2, 3}, - std::vector {2.0f, 5.6f, 9.2f, 2.0f, 5.6f, 9.2f, 2.0f, 5.6f, 9.2f}), - // roi_pooling_2x2_max - ROIPoolingParams(6, 6, // iH, iW - 1, 3, // channels, rois - 2, 2, // oH, oW - 1.f, "max", // scale, mode - element::bf16, ROIPoolingParams::increasinglyFilledBlob(1 * 6 * 6), - std::vector {0, 1, 1, 3, 3, 0, 1, 2, 2, 4, 0, 0, 1, 4, 5}, - std::vector {1.4f, 1.5f, 2.0f, 2.1f, 1.9f, 2.0f, 2.5f, 2.6f, 2.0f, 2.2f, 3.2f, 3.4f}), - // roi_pooling_1x1_bilinear - ROIPoolingParams(6, 6, // iH, iW - 3, 2, // channels, rois - 1, 1, // oH, oW - 1.f, "bilinear", // scale, mode - element::bf16, ROIPoolingParams::increasinglyFilledBlob(3 * 6 * 6), - std::vector {0, 0.2, 0.2, 0.4, 0.4, 0, 0.2, 0.2, 0.6, 0.6}, - std::vector {1.05f, 4.65f, 8.25f, 1.4f, 5.0f, 8.6f}), - // roi_pooling_2x2_bilinear - ROIPoolingParams(8, 8, // iH, iW - 1, 3, // channels, rois - 2, 2, // oH, oW - 1.f, "bilinear", // scale, mode - element::bf16, ROIPoolingParams::increasinglyFilledBlob(1 * 8 * 8), - std::vector {0.f, 0.15f, 0.2f, 0.75f, 0.8f, - 0.f, 0.15f, 0.2f, 0.75f, 0.8f, - 0.f, 0.15f, 0.2f, 0.75f, 0.8f}, - std::vector {1.225f, 1.645f, 4.585f, 4.937f, - 1.225f, 1.645f, 4.585f, 4.937f, - 1.225f, 1.645f, 4.585f, 4.937f}), - // fp16 - // roi_pooling_1x1_max - ROIPoolingParams(6, 6, // iH, iW - 3, 3, // channels, rois - 1, 1, // oH, oW - 1.f, "max", // scale, mode - element::f16, ROIPoolingParams::increasinglyFilledBlob(3 * 6 * 6), - std::vector {0, 1, 1, 2, 3, 0, 1, 1, 2, 3, 0, 1, 1, 2, 3}, - std::vector {2.0f, 5.6f, 9.2f, 2.0f, 5.6f, 9.2f, 2.0f, 5.6f, 9.2f}), - // roi_pooling_2x2_max - ROIPoolingParams(6, 6, // iH, iW - 1, 3, // channels, rois - 2, 2, // oH, oW - 1.f, "max", // scale, mode - element::f16, ROIPoolingParams::increasinglyFilledBlob(1 * 6 * 6), - std::vector {0, 1, 1, 3, 3, 0, 1, 2, 2, 4, 0, 0, 1, 4, 5}, - std::vector {1.4f, 1.5f, 2.0f, 2.1f, 1.9f, 2.0f, 2.5f, 2.6f, 2.0f, 2.2f, 3.2f, 3.4f}), - // roi_pooling_1x1_bilinear - ROIPoolingParams(6, 6, // iH, iW - 3, 2, // channels, rois - 1, 1, // oH, oW - 1.f, "bilinear", // scale, mode - element::f16, ROIPoolingParams::increasinglyFilledBlob(3 * 6 * 6), - std::vector {0, 0.2, 0.2, 0.4, 0.4, 0, 0.2, 0.2, 0.6, 0.6}, - std::vector {1.05f, 4.65f, 8.25f, 1.4f, 5.0f, 8.6f}), - // roi_pooling_2x2_bilinear - ROIPoolingParams(8, 8, // iH, iW - 1, 3, // channels, rois - 2, 2, // oH, oW - 1.f, "bilinear", // scale, mode - element::f16, ROIPoolingParams::increasinglyFilledBlob(1 * 8 * 8), - std::vector {0.f, 0.15f, 0.2f, 0.75f, 0.8f, - 0.f, 0.15f, 0.2f, 0.75f, 0.8f, - 0.f, 0.15f, 0.2f, 0.75f, 0.8f}, - std::vector {1.225f, 1.645f, 4.585f, 5.005f, - 1.225f, 1.645f, 4.585f, 5.005f, - 1.225f, 1.645f, 4.585f, 5.005f})), - ReferenceRoiPoolingLayerTest::getTestCaseName); + // bf16 + // roi_pooling_1x1_max + ROIPoolingParams(6, + 6, // iH, iW + 3, + 3, // channels, rois + 1, + 1, // oH, oW + 1.f, + "max", // scale, mode + element::bf16, + ROIPoolingParams::increasinglyFilledBlob(3 * 6 * 6), + std::vector{0, 1, 1, 2, 3, 0, 1, 1, 2, 3, 0, 1, 1, 2, 3}, + std::vector{2.0f, 5.6f, 9.2f, 2.0f, 5.6f, 9.2f, 2.0f, 5.6f, 9.2f}), + // roi_pooling_2x2_max + ROIPoolingParams(6, + 6, // iH, iW + 1, + 3, // channels, rois + 2, + 2, // oH, oW + 1.f, + "max", // scale, mode + element::bf16, + ROIPoolingParams::increasinglyFilledBlob(1 * 6 * 6), + std::vector{0, 1, 1, 3, 3, 0, 1, 2, 2, 4, 0, 0, 1, 4, 5}, + std::vector{1.4f, 1.5f, 2.0f, 2.1f, 1.9f, 2.0f, 2.5f, 2.6f, 2.0f, 2.2f, 3.2f, 3.4f}), + // roi_pooling_1x1_bilinear + ROIPoolingParams(6, + 6, // iH, iW + 3, + 2, // channels, rois + 1, + 1, // oH, oW + 1.f, + "bilinear", // scale, mode + element::bf16, + ROIPoolingParams::increasinglyFilledBlob(3 * 6 * 6), + std::vector{0, 0.2, 0.2, 0.4, 0.4, 0, 0.2, 0.2, 0.6, 0.6}, + std::vector{1.05f, 4.65f, 8.25f, 1.4f, 5.0f, 8.6f}), + // roi_pooling_2x2_bilinear + ROIPoolingParams( + 8, + 8, // iH, iW + 1, + 3, // channels, rois + 2, + 2, // oH, oW + 1.f, + "bilinear", // scale, mode + element::bf16, + ROIPoolingParams::increasinglyFilledBlob(1 * 8 * 8), + std::vector< + bfloat16>{0.f, 0.15f, 0.2f, 0.75f, 0.8f, 0.f, 0.15f, 0.2f, 0.75f, 0.8f, 0.f, 0.15f, 0.2f, 0.75f, 0.8f}, + std::vector{1.225f, + 1.645f, + 4.585f, + 4.937f, + 1.225f, + 1.645f, + 4.585f, + 4.937f, + 1.225f, + 1.645f, + 4.585f, + 4.937f}), + // fp16 + // roi_pooling_1x1_max + ROIPoolingParams(6, + 6, // iH, iW + 3, + 3, // channels, rois + 1, + 1, // oH, oW + 1.f, + "max", // scale, mode + element::f16, + ROIPoolingParams::increasinglyFilledBlob(3 * 6 * 6), + std::vector{0, 1, 1, 2, 3, 0, 1, 1, 2, 3, 0, 1, 1, 2, 3}, + std::vector{2.0f, 5.6f, 9.2f, 2.0f, 5.6f, 9.2f, 2.0f, 5.6f, 9.2f}), + // roi_pooling_2x2_max + ROIPoolingParams(6, + 6, // iH, iW + 1, + 3, // channels, rois + 2, + 2, // oH, oW + 1.f, + "max", // scale, mode + element::f16, + ROIPoolingParams::increasinglyFilledBlob(1 * 6 * 6), + std::vector{0, 1, 1, 3, 3, 0, 1, 2, 2, 4, 0, 0, 1, 4, 5}, + std::vector{1.4f, 1.5f, 2.0f, 2.1f, 1.9f, 2.0f, 2.5f, 2.6f, 2.0f, 2.2f, 3.2f, 3.4f}), + // roi_pooling_1x1_bilinear + ROIPoolingParams(6, + 6, // iH, iW + 3, + 2, // channels, rois + 1, + 1, // oH, oW + 1.f, + "bilinear", // scale, mode + element::f16, + ROIPoolingParams::increasinglyFilledBlob(3 * 6 * 6), + std::vector{0, 0.2, 0.2, 0.4, 0.4, 0, 0.2, 0.2, 0.6, 0.6}, + std::vector{1.05f, 4.65f, 8.25f, 1.4f, 5.0f, 8.6f}), + // roi_pooling_2x2_bilinear + ROIPoolingParams( + 8, + 8, // iH, iW + 1, + 3, // channels, rois + 2, + 2, // oH, oW + 1.f, + "bilinear", // scale, mode + element::f16, + ROIPoolingParams::increasinglyFilledBlob(1 * 8 * 8), + std::vector< + float16>{0.f, 0.15f, 0.2f, 0.75f, 0.8f, 0.f, 0.15f, 0.2f, 0.75f, 0.8f, 0.f, 0.15f, 0.2f, 0.75f, 0.8f}, + std::vector{1.225f, + 1.645f, + 4.585f, + 5.005f, + 1.225f, + 1.645f, + 4.585f, + 5.005f, + 1.225f, + 1.645f, + 4.585f, + 5.005f})), + ReferenceRoiPoolingLayerTest::getTestCaseName); diff --git a/src/plugins/template/tests/functional/op_reference/roll.cpp b/src/plugins/template/tests/functional/op_reference/roll.cpp index d275b15f6f5..b9d2b54f5de 100644 --- a/src/plugins/template/tests/functional/op_reference/roll.cpp +++ b/src/plugins/template/tests/functional/op_reference/roll.cpp @@ -4,19 +4,25 @@ #include +#include "base_reference_test.hpp" #include "openvino/opsets/opset1.hpp" #include "openvino/opsets/opset7.hpp" -#include "base_reference_test.hpp" using namespace reference_tests; using namespace ov; namespace { struct RollParams { - RollParams(const reference_tests::Tensor& dataTensor, const reference_tests::Tensor& shiftTensor, const reference_tests::Tensor& axesTensor, - const reference_tests::Tensor& expectedTensor, const std::string& testcaseName = "") : - dataTensor(dataTensor), shiftTensor(shiftTensor), axesTensor(axesTensor), - expectedTensor(expectedTensor), testcaseName(testcaseName) {} + RollParams(const reference_tests::Tensor& dataTensor, + const reference_tests::Tensor& shiftTensor, + const reference_tests::Tensor& axesTensor, + const reference_tests::Tensor& expectedTensor, + const std::string& testcaseName = "") + : dataTensor(dataTensor), + shiftTensor(shiftTensor), + axesTensor(axesTensor), + expectedTensor(expectedTensor), + testcaseName(testcaseName) {} reference_tests::Tensor dataTensor; reference_tests::Tensor shiftTensor; @@ -63,7 +69,7 @@ private: params.axesTensor.shape, params.axesTensor.data.data()); const auto roll = std::make_shared(data, shift, axes); - return std::make_shared(NodeVector {roll}, ParameterVector {data}); + return std::make_shared(NodeVector{roll}, ParameterVector{data}); } }; @@ -74,117 +80,135 @@ TEST_P(ReferenceRollLayerTest, CompareWithRefs) { template std::vector generateRollParams() { using T = typename element_type_traits::value_type; - std::vector rollParams { + std::vector rollParams{ // roll_repeated_axes - RollParams( - reference_tests::Tensor({4, 3}, IN_ET, std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}), - reference_tests::Tensor({3}, element::i64, std::vector{1, 2, 1}), - reference_tests::Tensor({3}, element::i64, std::vector{0, 1, 0}), - reference_tests::Tensor({4, 3}, IN_ET, std::vector{8, 9, 7, 11, 12, 10, 2, 3, 1, 5, 6, 4}), - "roll_repeated_axes"), + RollParams(reference_tests::Tensor({4, 3}, IN_ET, std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}), + reference_tests::Tensor({3}, element::i64, std::vector{1, 2, 1}), + reference_tests::Tensor({3}, element::i64, std::vector{0, 1, 0}), + reference_tests::Tensor({4, 3}, IN_ET, std::vector{8, 9, 7, 11, 12, 10, 2, 3, 1, 5, 6, 4}), + "roll_repeated_axes"), // roll_negative_axes RollParams( - reference_tests::Tensor({4, 2, 3}, IN_ET, std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24}), + reference_tests::Tensor({4, 2, 3}, IN_ET, std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, + 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24}), reference_tests::Tensor({3}, element::i64, std::vector{2, -1, -7}), reference_tests::Tensor({3}, element::i64, std::vector{-1, -1, -2}), - reference_tests::Tensor({4, 2, 3}, IN_ET, std::vector{6, 4, 5, 3, 1, 2, 12, 10, 11, 9, 7, 8, 18, 16, 17, 15, 13, 14, 24, 22, 23, 21, 19, 20}), + reference_tests::Tensor({4, 2, 3}, IN_ET, std::vector{6, 4, 5, 3, 1, 2, 12, 10, 11, 9, 7, 8, + 18, 16, 17, 15, 13, 14, 24, 22, 23, 21, 19, 20}), "roll_negative_axes"), }; return rollParams; } std::vector generateRollFloatingPointParams() { - std::vector rollParams { + std::vector rollParams{ // roll_2d_input - RollParams( - reference_tests::Tensor({4, 3}, element::f32, std::vector{50.2907, - 70.8054, - -68.3403, - 62.6444, - 4.9748, - -18.5551, - 40.5383, - -15.3859, - -4.5881, - -43.3479, - 94.1676, - -95.7097}), - reference_tests::Tensor({1}, element::i64, std::vector{1}), - reference_tests::Tensor({1}, element::i64, std::vector{0}), - reference_tests::Tensor({4, 3}, element::f32, std::vector{-43.3479, - 94.1676, - -95.7097, - 50.2907, - 70.8054, - -68.3403, - 62.6444, - 4.9748, - -18.5551, - 40.5383, - -15.3859, - -4.5881}), - "roll_2d_input"), + RollParams(reference_tests::Tensor({4, 3}, + element::f32, + std::vector{50.2907, + 70.8054, + -68.3403, + 62.6444, + 4.9748, + -18.5551, + 40.5383, + -15.3859, + -4.5881, + -43.3479, + 94.1676, + -95.7097}), + reference_tests::Tensor({1}, element::i64, std::vector{1}), + reference_tests::Tensor({1}, element::i64, std::vector{0}), + reference_tests::Tensor({4, 3}, + element::f32, + std::vector{-43.3479, + 94.1676, + -95.7097, + 50.2907, + 70.8054, + -68.3403, + 62.6444, + 4.9748, + -18.5551, + 40.5383, + -15.3859, + -4.5881}), + "roll_2d_input"), // roll_2d_input_negative_shift - RollParams( - reference_tests::Tensor({4, 3}, element::f32, std::vector{50.2907, - 70.8054, - -68.3403, - 62.6444, - 4.9748, - -18.5551, - 40.5383, - -15.3859, - -4.5881, - -43.3479, - 94.1676, - -95.7097}), - reference_tests::Tensor({2}, element::i64, std::vector{-1, 2}), - reference_tests::Tensor({2}, element::i64, std::vector{0, 1}), - reference_tests::Tensor({4, 3}, element::f32, std::vector{4.9748, - -18.5551, - 62.6444, - -15.3859, - -4.5881, - 40.5383, - 94.1676, - -95.7097, - -43.3479, - 70.8054, - -68.3403, - 50.2907}), - "roll_2d_input_negative_shift"), + RollParams(reference_tests::Tensor({4, 3}, + element::f32, + std::vector{50.2907, + 70.8054, + -68.3403, + 62.6444, + 4.9748, + -18.5551, + 40.5383, + -15.3859, + -4.5881, + -43.3479, + 94.1676, + -95.7097}), + reference_tests::Tensor({2}, element::i64, std::vector{-1, 2}), + reference_tests::Tensor({2}, element::i64, std::vector{0, 1}), + reference_tests::Tensor({4, 3}, + element::f32, + std::vector{4.9748, + -18.5551, + 62.6444, + -15.3859, + -4.5881, + 40.5383, + 94.1676, + -95.7097, + -43.3479, + 70.8054, + -68.3403, + 50.2907}), + "roll_2d_input_negative_shift"), // roll_3d_input RollParams( - reference_tests::Tensor({4, 2, 3}, element::f32, std::vector{94.0773, 33.0599, 58.1724, -20.3640, 54.5372, -54.3023, 10.4662, 11.7532, - -11.7692, 56.4223, -95.3774, 8.8978, 1.9305, 13.8025, 12.0827, 81.4669, - 19.5321, -8.9553, -75.3226, 20.8033, 20.7660, 62.7361, 14.9372, -33.0825}), + reference_tests::Tensor( + {4, 2, 3}, + element::f32, + std::vector{94.0773, 33.0599, 58.1724, -20.3640, 54.5372, -54.3023, 10.4662, 11.7532, + -11.7692, 56.4223, -95.3774, 8.8978, 1.9305, 13.8025, 12.0827, 81.4669, + 19.5321, -8.9553, -75.3226, 20.8033, 20.7660, 62.7361, 14.9372, -33.0825}), reference_tests::Tensor({3}, element::i64, std::vector{2, 1, 3}), reference_tests::Tensor({3}, element::i64, std::vector{0, 1, 2}), - reference_tests::Tensor({4, 2, 3}, element::f32, std::vector{81.4669, 19.5321, -8.9553, 1.9305, 13.8025, 12.0827, 62.7361, 14.9372, - -33.0825, -75.3226, 20.8033, 20.7660, -20.3640, 54.5372, -54.3023, 94.0773, - 33.0599, 58.1724, 56.4223, -95.3774, 8.8978, 10.4662, 11.7532, -11.7692}), + reference_tests::Tensor( + {4, 2, 3}, + element::f32, + std::vector{81.4669, 19.5321, -8.9553, 1.9305, 13.8025, 12.0827, 62.7361, 14.9372, + -33.0825, -75.3226, 20.8033, 20.7660, -20.3640, 54.5372, -54.3023, 94.0773, + 33.0599, 58.1724, 56.4223, -95.3774, 8.8978, 10.4662, 11.7532, -11.7692}), "roll_3d_input"), // roll_3d_input_negative_shift - RollParams( - reference_tests::Tensor({4, 2, 3}, element::f32, std::vector{94.0773, 33.0599, 58.1724, -20.3640, 54.5372, -54.3023, 10.4662, 11.7532, - -11.7692, 56.4223, -95.3774, 8.8978, 1.9305, 13.8025, 12.0827, 81.4669, - 19.5321, -8.9553, -75.3226, 20.8033, 20.7660, 62.7361, 14.9372, -33.0825}), - reference_tests::Tensor({3}, element::i64, std::vector{-5, 1, 3}), - reference_tests::Tensor({3}, element::i64, std::vector{0, 1, 1}), - reference_tests::Tensor({4, 2, 3}, element::f32, std::vector{10.4662, 11.7532, -11.7692, 56.4223, -95.3774, 8.8978, 1.9305, 13.8025, - 12.0827, 81.4669, 19.5321, -8.9553, -75.3226, 20.8033, 20.7660, 62.7361, - 14.9372, -33.0825, 94.0773, 33.0599, 58.1724, -20.3640, 54.5372, -54.3023}), - "roll_3d_input_negative_shift"), + RollParams(reference_tests::Tensor( + {4, 2, 3}, + element::f32, + std::vector{94.0773, 33.0599, 58.1724, -20.3640, 54.5372, -54.3023, 10.4662, 11.7532, + -11.7692, 56.4223, -95.3774, 8.8978, 1.9305, 13.8025, 12.0827, 81.4669, + 19.5321, -8.9553, -75.3226, 20.8033, 20.7660, 62.7361, 14.9372, -33.0825}), + reference_tests::Tensor({3}, element::i64, std::vector{-5, 1, 3}), + reference_tests::Tensor({3}, element::i64, std::vector{0, 1, 1}), + reference_tests::Tensor( + {4, 2, 3}, + element::f32, + std::vector{10.4662, 11.7532, -11.7692, 56.4223, -95.3774, 8.8978, 1.9305, 13.8025, + 12.0827, 81.4669, 19.5321, -8.9553, -75.3226, 20.8033, 20.7660, 62.7361, + 14.9372, -33.0825, 94.0773, 33.0599, 58.1724, -20.3640, 54.5372, -54.3023}), + "roll_3d_input_negative_shift"), }; return rollParams; } std::vector generateRollCombinedParams() { - const std::vector> rollTypeParams { + const std::vector> rollTypeParams{ generateRollParams(), generateRollParams(), generateRollParams(), @@ -207,6 +231,8 @@ std::vector generateRollCombinedParams() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_Roll_With_Hardcoded_Refs, ReferenceRollLayerTest, - testing::ValuesIn(generateRollCombinedParams()), ReferenceRollLayerTest::getTestCaseName); -} // namespace +INSTANTIATE_TEST_SUITE_P(smoke_Roll_With_Hardcoded_Refs, + ReferenceRollLayerTest, + testing::ValuesIn(generateRollCombinedParams()), + ReferenceRollLayerTest::getTestCaseName); +} // namespace diff --git a/src/plugins/template/tests/functional/op_reference/round.cpp b/src/plugins/template/tests/functional/op_reference/round.cpp index 2b01faf9487..cb20868e575 100644 --- a/src/plugins/template/tests/functional/op_reference/round.cpp +++ b/src/plugins/template/tests/functional/op_reference/round.cpp @@ -2,10 +2,12 @@ // SPDX-License-Identifier: Apache-2.0 // -#include -#include "base_reference_test.hpp" #include "openvino/op/round.hpp" +#include + +#include "base_reference_test.hpp" + using namespace ov; using namespace reference_tests; @@ -13,7 +15,10 @@ namespace { struct RoundParams { template - RoundParams(const PartialShape& shape, const element::Type& iType, const std::vector& iValues, const std::vector& oValues) + RoundParams(const PartialShape& shape, + const element::Type& iType, + const std::vector& iValues, + const std::vector& oValues) : pshape(shape), inType(iType), outType(iType), @@ -25,7 +30,7 @@ struct RoundParams { element::Type outType; ov::Tensor inputData; ov::Tensor refData; - }; +}; class ReferenceRoundHalfToEvenLayerTest : public testing::TestWithParam, public CommonReferenceTest { public: @@ -46,8 +51,8 @@ public: private: static std::shared_ptr CreateFunction(const PartialShape& input_shape, - const element::Type& input_type, - const element::Type& expected_output_type) { + const element::Type& input_type, + const element::Type& expected_output_type) { const auto in = std::make_shared(input_type, input_shape); const auto round = std::make_shared(in, op::v5::Round::RoundMode::HALF_TO_EVEN); return std::make_shared(NodeVector{round}, ParameterVector{in}); @@ -73,8 +78,8 @@ public: private: static std::shared_ptr CreateFunction(const PartialShape& input_shape, - const element::Type& input_type, - const element::Type& expected_output_type) { + const element::Type& input_type, + const element::Type& expected_output_type) { const auto in = std::make_shared(input_type, input_shape); const auto round = std::make_shared(in, op::v5::Round::RoundMode::HALF_AWAY_FROM_ZERO); return std::make_shared(NodeVector{round}, ParameterVector{in}); @@ -93,12 +98,10 @@ template std::vector generateParamsForRoundHalfToEven() { using T = typename element_type_traits::value_type; - std::vector params{ - RoundParams(ov::PartialShape{5}, - IN_ET, - std::vector{0.9f, 2.5f, 2.3f, 1.5f, -4.5f}, - std::vector{1.0f, 2.0f, 2.0f, 2.0f, -4.0f}) - }; + std::vector params{RoundParams(ov::PartialShape{5}, + IN_ET, + std::vector{0.9f, 2.5f, 2.3f, 1.5f, -4.5f}, + std::vector{1.0f, 2.0f, 2.0f, 2.0f, -4.0f})}; return params; } @@ -106,12 +109,11 @@ template std::vector generateParamsForRound2D() { using T = typename element_type_traits::value_type; - std::vector params{ - RoundParams(ov::PartialShape{15}, - IN_ET, - std::vector{0.1f, 0.5f, 0.9f, 1.2f, 1.5f, 1.8f, 2.3f, 2.5f, 2.7f, -1.1f, -1.5f, -1.9f, -2.2f, -2.5f, -2.8f}, - std::vector{0.f, 0.f, 1.f, 1.f, 2.f, 2.f, 2.f, 2.f, 3.f, -1.f, -2.f, -2.f, -2.f, -2.f, -3.f}) - }; + std::vector params{RoundParams( + ov::PartialShape{15}, + IN_ET, + std::vector{0.1f, 0.5f, 0.9f, 1.2f, 1.5f, 1.8f, 2.3f, 2.5f, 2.7f, -1.1f, -1.5f, -1.9f, -2.2f, -2.5f, -2.8f}, + std::vector{0.f, 0.f, 1.f, 1.f, 2.f, 2.f, 2.f, 2.f, 3.f, -1.f, -2.f, -2.f, -2.f, -2.f, -3.f})}; return params; } @@ -119,11 +121,10 @@ template std::vector generateParamsForRoundInt64() { using T = typename element_type_traits::value_type; - std::vector params{ - RoundParams(ov::PartialShape{3}, - IN_ET, - std::vector{0, 1, 0x4000000000000001}, - std::vector{0, 1, 0x4000000000000001})}; + std::vector params{RoundParams(ov::PartialShape{3}, + IN_ET, + std::vector{0, 1, 0x4000000000000001}, + std::vector{0, 1, 0x4000000000000001})}; return params; } @@ -132,10 +133,7 @@ std::vector generateParamsForRoundInt() { using T = typename element_type_traits::value_type; std::vector params{ - RoundParams(ov::PartialShape{3}, - IN_ET, - std::vector{0, 1, 0x40}, - std::vector{0, 1, 0x40})}; + RoundParams(ov::PartialShape{3}, IN_ET, std::vector{0, 1, 0x40}, std::vector{0, 1, 0x40})}; return params; } @@ -143,11 +141,10 @@ template std::vector generateParamsForRoundAwayFromZero() { using T = typename element_type_traits::value_type; - std::vector params{ - RoundParams(ov::PartialShape{5}, - IN_ET, - std::vector{0.9f, 2.5f, 2.3f, 1.5f, -4.5f}, - std::vector{1.0f, 3.0f, 2.0f, 2.0f, -5.0f})}; + std::vector params{RoundParams(ov::PartialShape{5}, + IN_ET, + std::vector{0.9f, 2.5f, 2.3f, 1.5f, -4.5f}, + std::vector{1.0f, 3.0f, 2.0f, 2.0f, -5.0f})}; return params; } @@ -168,11 +165,9 @@ std::vector generateCombinedParamsForRoundHalfToEven() { } std::vector generateCombinedParamsForRound2D() { - const std::vector> allTypeParams{ - generateParamsForRound2D(), - generateParamsForRound2D(), - generateParamsForRound2D() - }; + const std::vector> allTypeParams{generateParamsForRound2D(), + generateParamsForRound2D(), + generateParamsForRound2D()}; std::vector combinedParams; @@ -184,16 +179,14 @@ std::vector generateCombinedParamsForRound2D() { } std::vector generateCombinedParamsForRoundInt() { - const std::vector> allTypeParams{ - generateParamsForRoundInt64(), - generateParamsForRoundInt(), - generateParamsForRoundInt(), - generateParamsForRoundInt(), - generateParamsForRoundInt(), - generateParamsForRoundInt(), - generateParamsForRoundInt(), - generateParamsForRoundInt() - }; + const std::vector> allTypeParams{generateParamsForRoundInt64(), + generateParamsForRoundInt(), + generateParamsForRoundInt(), + generateParamsForRoundInt(), + generateParamsForRoundInt(), + generateParamsForRoundInt(), + generateParamsForRoundInt(), + generateParamsForRoundInt()}; std::vector combinedParams; @@ -208,8 +201,7 @@ std::vector generateCombinedParamsForRoundAwayFromZero() { const std::vector> allTypeParams{ generateParamsForRoundAwayFromZero(), generateParamsForRoundAwayFromZero(), - generateParamsForRoundAwayFromZero() - }; + generateParamsForRoundAwayFromZero()}; std::vector combinedParams; @@ -220,28 +212,24 @@ std::vector generateCombinedParamsForRoundAwayFromZero() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P( - smoke_Round_Half_To_Even_With_Hardcoded_Refs, - ReferenceRoundHalfToEvenLayerTest, - ::testing::ValuesIn(generateCombinedParamsForRoundHalfToEven()), - ReferenceRoundHalfToEvenLayerTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_Round_Half_To_Even_With_Hardcoded_Refs, + ReferenceRoundHalfToEvenLayerTest, + ::testing::ValuesIn(generateCombinedParamsForRoundHalfToEven()), + ReferenceRoundHalfToEvenLayerTest::getTestCaseName); -INSTANTIATE_TEST_SUITE_P( - smoke_Round_2D_With_Hardcoded_Refs, - ReferenceRoundHalfToEvenLayerTest, - ::testing::ValuesIn(generateCombinedParamsForRound2D()), - ReferenceRoundHalfToEvenLayerTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_Round_2D_With_Hardcoded_Refs, + ReferenceRoundHalfToEvenLayerTest, + ::testing::ValuesIn(generateCombinedParamsForRound2D()), + ReferenceRoundHalfToEvenLayerTest::getTestCaseName); -INSTANTIATE_TEST_SUITE_P( - smoke_Round_Int_With_Hardcoded_Refs, - ReferenceRoundHalfToEvenLayerTest, - ::testing::ValuesIn(generateCombinedParamsForRoundInt()), - ReferenceRoundHalfToEvenLayerTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_Round_Int_With_Hardcoded_Refs, + ReferenceRoundHalfToEvenLayerTest, + ::testing::ValuesIn(generateCombinedParamsForRoundInt()), + ReferenceRoundHalfToEvenLayerTest::getTestCaseName); -INSTANTIATE_TEST_SUITE_P( - smoke_Round_Away_From_Zero_With_Hardcoded_Refs, - ReferenceRoundHalfAwayFromZeroLayerTest, - ::testing::ValuesIn(generateCombinedParamsForRoundAwayFromZero()), - ReferenceRoundHalfAwayFromZeroLayerTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_Round_Away_From_Zero_With_Hardcoded_Refs, + ReferenceRoundHalfAwayFromZeroLayerTest, + ::testing::ValuesIn(generateCombinedParamsForRoundAwayFromZero()), + ReferenceRoundHalfAwayFromZeroLayerTest::getTestCaseName); } // namespace diff --git a/src/plugins/template/tests/functional/op_reference/scatter_elements_update.cpp b/src/plugins/template/tests/functional/op_reference/scatter_elements_update.cpp index 18d5103aaf4..48db3024d0b 100644 --- a/src/plugins/template/tests/functional/op_reference/scatter_elements_update.cpp +++ b/src/plugins/template/tests/functional/op_reference/scatter_elements_update.cpp @@ -2,9 +2,10 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/scatter_elements_update.hpp" + #include -#include "openvino/op/scatter_elements_update.hpp" #include "base_reference_test.hpp" using namespace reference_tests; @@ -31,15 +32,12 @@ struct ScatterElementsUpdateParams { }; class ReferenceScatterElementsUpdateLayerTest : public testing::TestWithParam, - public CommonReferenceTest { + public CommonReferenceTest { public: void SetUp() override { auto params = GetParam(); function = CreateFunction(params); - inputData = {params.input.data, - params.indices.data, - params.updates.data, - params.axis.data}; + inputData = {params.input.data, params.indices.data, params.updates.data, params.axis.data}; refOutData = {params.expected.data}; } static std::string getTestCaseName(const testing::TestParamInfo& obj) { @@ -55,6 +53,7 @@ public: result << "_axis_pr=" << param.axis.type; return result.str(); } + private: static std::shared_ptr CreateFunction(const ScatterElementsUpdateParams& params) { const auto A = std::make_shared(params.input.type, params.input.shape); @@ -76,17 +75,19 @@ std::vector generateScatterParams() { using T_INT = typename element_type_traits::value_type; std::vector scatterParams{ // axis = 0 - ScatterElementsUpdateParams(reference_tests::Tensor({2, 2}, element::Type(ET), std::vector{1, 2, 3, 4}), // input - reference_tests::Tensor({2, 2}, element::Type(ET_IND), std::vector{1, 1, 0, 0}), // indices - reference_tests::Tensor({2, 2}, element::Type(ET), std::vector{10, 20, 30, 40}), // updates - reference_tests::Tensor({1}, element::Type(ET_IND), std::vector{0}), // axis - reference_tests::Tensor({2, 2}, element::Type(ET), std::vector{30, 40, 10, 20})), // expected + ScatterElementsUpdateParams( + reference_tests::Tensor({2, 2}, element::Type(ET), std::vector{1, 2, 3, 4}), // input + reference_tests::Tensor({2, 2}, element::Type(ET_IND), std::vector{1, 1, 0, 0}), // indices + reference_tests::Tensor({2, 2}, element::Type(ET), std::vector{10, 20, 30, 40}), // updates + reference_tests::Tensor({1}, element::Type(ET_IND), std::vector{0}), // axis + reference_tests::Tensor({2, 2}, element::Type(ET), std::vector{30, 40, 10, 20})), // expected // axis = 1 - ScatterElementsUpdateParams(reference_tests::Tensor({2, 1}, element::Type(ET), std::vector{1, 2}), // input - reference_tests::Tensor({2, 1}, element::Type(ET_IND), std::vector{0, 0}), // indices - reference_tests::Tensor({2, 1}, element::Type(ET), std::vector{10, 20}), // updates - reference_tests::Tensor({1}, element::Type(ET_IND), std::vector{1}), // axis - reference_tests::Tensor({2, 1}, element::Type(ET), std::vector{10, 20})), // expected + ScatterElementsUpdateParams( + reference_tests::Tensor({2, 1}, element::Type(ET), std::vector{1, 2}), // input + reference_tests::Tensor({2, 1}, element::Type(ET_IND), std::vector{0, 0}), // indices + reference_tests::Tensor({2, 1}, element::Type(ET), std::vector{10, 20}), // updates + reference_tests::Tensor({1}, element::Type(ET_IND), std::vector{1}), // axis + reference_tests::Tensor({2, 1}, element::Type(ET), std::vector{10, 20})), // expected }; return scatterParams; } @@ -167,4 +168,4 @@ INSTANTIATE_TEST_SUITE_P(smoke_ScatterEltsUpdate_With_Hardcoded_Refs, ReferenceScatterElementsUpdateLayerTest, ::testing::ValuesIn(generateScatterCombinedParams()), ReferenceScatterElementsUpdateLayerTest::getTestCaseName); -} // namespace +} // namespace diff --git a/src/plugins/template/tests/functional/op_reference/scatter_nd_update.cpp b/src/plugins/template/tests/functional/op_reference/scatter_nd_update.cpp index 334b75f118e..090503c5c29 100644 --- a/src/plugins/template/tests/functional/op_reference/scatter_nd_update.cpp +++ b/src/plugins/template/tests/functional/op_reference/scatter_nd_update.cpp @@ -2,21 +2,28 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/scatter_nd_update.hpp" + #include -#include "openvino/op/scatter_nd_update.hpp" -#include "openvino/op/constant.hpp" #include "base_reference_test.hpp" +#include "openvino/op/constant.hpp" using namespace reference_tests; using namespace ov; namespace { struct ScatterNDUpdateParams { - ScatterNDUpdateParams(const reference_tests::Tensor& dataTensor, const reference_tests::Tensor& indexTensor, const reference_tests::Tensor& updateTensor, - const reference_tests::Tensor& expectedTensor, const std::string& testcaseName = "") : - dataTensor(dataTensor), indexTensor(indexTensor), updateTensor(updateTensor), - expectedTensor(expectedTensor), testcaseName(testcaseName) {} + ScatterNDUpdateParams(const reference_tests::Tensor& dataTensor, + const reference_tests::Tensor& indexTensor, + const reference_tests::Tensor& updateTensor, + const reference_tests::Tensor& expectedTensor, + const std::string& testcaseName = "") + : dataTensor(dataTensor), + indexTensor(indexTensor), + updateTensor(updateTensor), + expectedTensor(expectedTensor), + testcaseName(testcaseName) {} reference_tests::Tensor dataTensor; reference_tests::Tensor indexTensor; @@ -25,7 +32,8 @@ struct ScatterNDUpdateParams { std::string testcaseName; }; -class ReferenceScatterNDUpdateLayerTest : public testing::TestWithParam, public CommonReferenceTest { +class ReferenceScatterNDUpdateLayerTest : public testing::TestWithParam, + public CommonReferenceTest { public: void SetUp() override { auto params = GetParam(); @@ -75,7 +83,7 @@ template std::vector generateScatterNDUpdateParams() { using T = typename element_type_traits::value_type; using U = typename element_type_traits::value_type; - std::vector scatterParams { + std::vector scatterParams{ // scatter_nd_update_1x1 ScatterNDUpdateParams(reference_tests::Tensor({1}, IN_ET, std::vector{1}), reference_tests::Tensor({1}, IU_ET, std::vector{0}), @@ -95,46 +103,52 @@ std::vector generateScatterNDUpdateParams() { reference_tests::Tensor({2, 2}, IN_ET, std::vector{10, 2, 3, 40}), "scatter_nd_update_2x2_by_2"), // scatter_nd_update_3x3_by_1 - ScatterNDUpdateParams(reference_tests::Tensor({3, 3, 3}, IN_ET, std::vector{11, 12, 13, 14, 15, 16, 17, 18, 19, - 21, 22, 23, 24, 25, 26, 27, 28, 29, - 31, 32, 33, 34, 35, 36, 37, 38, 39}), - reference_tests::Tensor({2, 1}, IU_ET, std::vector{0, 2}), - reference_tests::Tensor({2, 3, 3}, IN_ET, std::vector{91, 92, 93, 94, 95, 96, 97, 98, 99, - 81, 82, 83, 84, 85, 86, 87, 88, 89}), - reference_tests::Tensor({3, 3, 3}, IN_ET, std::vector{91, 92, 93, 94, 95, 96, 97, 98, 99, - 21, 22, 23, 24, 25, 26, 27, 28, 29, - 81, 82, 83, 84, 85, 86, 87, 88, 89}), - "scatter_nd_update_3x3_by_1"), + ScatterNDUpdateParams( + reference_tests::Tensor({3, 3, 3}, IN_ET, std::vector{11, 12, 13, 14, 15, 16, 17, 18, 19, + 21, 22, 23, 24, 25, 26, 27, 28, 29, + 31, 32, 33, 34, 35, 36, 37, 38, 39}), + reference_tests::Tensor({2, 1}, IU_ET, std::vector{0, 2}), + reference_tests::Tensor( + {2, 3, 3}, + IN_ET, + std::vector{91, 92, 93, 94, 95, 96, 97, 98, 99, 81, 82, 83, 84, 85, 86, 87, 88, 89}), + reference_tests::Tensor({3, 3, 3}, IN_ET, std::vector{91, 92, 93, 94, 95, 96, 97, 98, 99, + 21, 22, 23, 24, 25, 26, 27, 28, 29, + 81, 82, 83, 84, 85, 86, 87, 88, 89}), + "scatter_nd_update_3x3_by_1"), // scatter_nd_update_3x3_by_2v2 - ScatterNDUpdateParams(reference_tests::Tensor({3, 3, 3}, IN_ET, std::vector{11, 12, 13, 14, 15, 16, 17, 18, 19, - 21, 22, 23, 24, 25, 26, 27, 28, 29, - 31, 32, 33, 34, 35, 36, 37, 38, 39}), - reference_tests::Tensor({2, 2, 3}, IU_ET, std::vector{0, 0, 0, 2, 2, 2, 1, 0, 0, 1, 2, 2}), - reference_tests::Tensor({2, 2}, IN_ET, std::vector{91, 92, 81, 82}), - reference_tests::Tensor({3, 3, 3}, IN_ET, std::vector{91, 12, 13, 14, 15, 16, 17, 18, 19, - 81, 22, 23, 24, 25, 26, 27, 28, 82, - 31, 32, 33, 34, 35, 36, 37, 38, 92}), - "scatter_nd_update_3x3_by_2v2"), + ScatterNDUpdateParams( + reference_tests::Tensor({3, 3, 3}, IN_ET, std::vector{11, 12, 13, 14, 15, 16, 17, 18, 19, + 21, 22, 23, 24, 25, 26, 27, 28, 29, + 31, 32, 33, 34, 35, 36, 37, 38, 39}), + reference_tests::Tensor({2, 2, 3}, IU_ET, std::vector{0, 0, 0, 2, 2, 2, 1, 0, 0, 1, 2, 2}), + reference_tests::Tensor({2, 2}, IN_ET, std::vector{91, 92, 81, 82}), + reference_tests::Tensor({3, 3, 3}, IN_ET, std::vector{91, 12, 13, 14, 15, 16, 17, 18, 19, + 81, 22, 23, 24, 25, 26, 27, 28, 82, + 31, 32, 33, 34, 35, 36, 37, 38, 92}), + "scatter_nd_update_3x3_by_2v2"), // scatter_nd_update_3x3_by_2 - ScatterNDUpdateParams(reference_tests::Tensor({3, 3, 3}, IN_ET, std::vector{11, 12, 13, 14, 15, 16, 17, 18, 19, - 21, 22, 23, 24, 25, 26, 27, 28, 29, - 31, 32, 33, 34, 35, 36, 37, 38, 39}), - reference_tests::Tensor({2, 2}, IU_ET, std::vector{0, 0, 2, 2}), - reference_tests::Tensor({2, 3}, IN_ET, std::vector{91, 92, 93, 87, 88, 89}), - reference_tests::Tensor({3, 3, 3}, IN_ET, std::vector{91, 92, 93, 14, 15, 16, 17, 18, 19, - 21, 22, 23, 24, 25, 26, 27, 28, 29, - 31, 32, 33, 34, 35, 36, 87, 88, 89}), - "scatter_nd_update_3x3_by_2"), + ScatterNDUpdateParams( + reference_tests::Tensor({3, 3, 3}, IN_ET, std::vector{11, 12, 13, 14, 15, 16, 17, 18, 19, + 21, 22, 23, 24, 25, 26, 27, 28, 29, + 31, 32, 33, 34, 35, 36, 37, 38, 39}), + reference_tests::Tensor({2, 2}, IU_ET, std::vector{0, 0, 2, 2}), + reference_tests::Tensor({2, 3}, IN_ET, std::vector{91, 92, 93, 87, 88, 89}), + reference_tests::Tensor({3, 3, 3}, IN_ET, std::vector{91, 92, 93, 14, 15, 16, 17, 18, 19, + 21, 22, 23, 24, 25, 26, 27, 28, 29, + 31, 32, 33, 34, 35, 36, 87, 88, 89}), + "scatter_nd_update_3x3_by_2"), // scatter_nd_update_3x3_by_3 - ScatterNDUpdateParams(reference_tests::Tensor({3, 3, 3}, IN_ET, std::vector{11, 12, 13, 14, 15, 16, 17, 18, 19, - 21, 22, 23, 24, 25, 26, 27, 28, 29, - 31, 32, 33, 34, 35, 36, 37, 38, 39}), - reference_tests::Tensor({2, 3}, IU_ET, std::vector{0, 0, 0, 2, 2, 2}), - reference_tests::Tensor({2}, IN_ET, std::vector{91, 99}), - reference_tests::Tensor({3, 3, 3}, IN_ET, std::vector{91, 12, 13, 14, 15, 16, 17, 18, 19, - 21, 22, 23, 24, 25, 26, 27, 28, 29, - 31, 32, 33, 34, 35, 36, 37, 38, 99}), - "scatter_nd_update_3x3_by_3"), + ScatterNDUpdateParams( + reference_tests::Tensor({3, 3, 3}, IN_ET, std::vector{11, 12, 13, 14, 15, 16, 17, 18, 19, + 21, 22, 23, 24, 25, 26, 27, 28, 29, + 31, 32, 33, 34, 35, 36, 37, 38, 39}), + reference_tests::Tensor({2, 3}, IU_ET, std::vector{0, 0, 0, 2, 2, 2}), + reference_tests::Tensor({2}, IN_ET, std::vector{91, 99}), + reference_tests::Tensor({3, 3, 3}, IN_ET, std::vector{91, 12, 13, 14, 15, 16, 17, 18, 19, + 21, 22, 23, 24, 25, 26, 27, 28, 29, + 31, 32, 33, 34, 35, 36, 37, 38, 99}), + "scatter_nd_update_3x3_by_3"), // scatter_nd_update_1d_from_examples ScatterNDUpdateParams(reference_tests::Tensor({8}, IN_ET, std::vector{1, 2, 3, 4, 5, 6, 7, 8}), reference_tests::Tensor({4, 1}, IU_ET, std::vector{4, 3, 1, 7}), @@ -142,37 +156,41 @@ std::vector generateScatterNDUpdateParams() { reference_tests::Tensor({8}, IN_ET, std::vector{1, 11, 3, 10, 9, 6, 7, 12}), "scatter_nd_update_1d_from_examples"), // scatter_nd_update_4x4_shape_from_examples - ScatterNDUpdateParams(reference_tests::Tensor({4, 4, 4}, IN_ET, std::vector{1, 2, 3, 4, 5, 6, 7, 8, 8, 7, 6, 5, 4, 3, 2, 1, - 1, 2, 3, 4, 5, 6, 7, 8, 8, 7, 6, 5, 4, 3, 2, 1, - 8, 7, 6, 5, 4, 3, 2, 1, 1, 2, 3, 4, 5, 6, 7, 8, - 8, 7, 6, 5, 4, 3, 2, 1, 1, 2, 3, 4, 5, 6, 7, 8}), - reference_tests::Tensor({2, 1}, IU_ET, std::vector{0, 2}), - reference_tests::Tensor({2, 4, 4}, IN_ET, std::vector{5, 5, 5, 5, 6, 6, 6, 6, 7, 7, 7, 7, 8, 8, 8, 8, - 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4}), - reference_tests::Tensor({4, 4, 4}, IN_ET, std::vector{5, 5, 5, 5, 6, 6, 6, 6, 7, 7, 7, 7, 8, 8, 8, 8, - 1, 2, 3, 4, 5, 6, 7, 8, 8, 7, 6, 5, 4, 3, 2, 1, - 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, - 8, 7, 6, 5, 4, 3, 2, 1, 1, 2, 3, 4, 5, 6, 7, 8}), - "scatter_nd_update_4x4_shape_from_examples"), + ScatterNDUpdateParams( + reference_tests::Tensor({4, 4, 4}, IN_ET, std::vector{1, 2, 3, 4, 5, 6, 7, 8, 8, 7, 6, 5, 4, 3, 2, 1, + 1, 2, 3, 4, 5, 6, 7, 8, 8, 7, 6, 5, 4, 3, 2, 1, + 8, 7, 6, 5, 4, 3, 2, 1, 1, 2, 3, 4, 5, 6, 7, 8, + 8, 7, 6, 5, 4, 3, 2, 1, 1, 2, 3, 4, 5, 6, 7, 8}), + reference_tests::Tensor({2, 1}, IU_ET, std::vector{0, 2}), + reference_tests::Tensor({2, 4, 4}, IN_ET, std::vector{5, 5, 5, 5, 6, 6, 6, 6, 7, 7, 7, 7, 8, 8, 8, 8, + 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4}), + reference_tests::Tensor({4, 4, 4}, IN_ET, std::vector{5, 5, 5, 5, 6, 6, 6, 6, 7, 7, 7, 7, 8, 8, 8, 8, + 1, 2, 3, 4, 5, 6, 7, 8, 8, 7, 6, 5, 4, 3, 2, 1, + 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, + 8, 7, 6, 5, 4, 3, 2, 1, 1, 2, 3, 4, 5, 6, 7, 8}), + "scatter_nd_update_4x4_shape_from_examples"), // scatter_nd_update_4x4_v2 - ScatterNDUpdateParams(reference_tests::Tensor({4, 4, 4}, IN_ET, std::vector{1, 2, 3, 4, 5, 6, 7, 8, 8, 7, 6, 5, 4, 3, 2, 1, - 1, 2, 3, 4, 5, 6, 7, 8, 8, 7, 6, 5, 4, 3, 2, 1, - 8, 7, 6, 5, 4, 3, 2, 1, 1, 2, 3, 4, 5, 6, 7, 8, - 8, 7, 6, 5, 4, 3, 2, 1, 1, 2, 3, 4, 5, 6, 7, 8}), - reference_tests::Tensor({2, 2, 2}, IU_ET, std::vector{0, 0, 2, 2, 1, 1, 3, 3}), - reference_tests::Tensor({2, 2, 4}, IN_ET, std::vector{15, 16, 17, 18, 25, 26, 27, 28, - 35, 36, 37, 38, 45, 46, 47, 58}), - reference_tests::Tensor({4, 4, 4}, IN_ET, std::vector{15, 16, 17, 18, 5, 6, 7, 8, 8, 7, 6, 5, 4, 3, 2, 1, - 1, 2, 3, 4, 35, 36, 37, 38, 8, 7, 6, 5, 4, 3, 2, 1, - 8, 7, 6, 5, 4, 3, 2, 1, 25, 26, 27, 28, 5, 6, 7, 8, - 8, 7, 6, 5, 4, 3, 2, 1, 1, 2, 3, 4, 45, 46, 47, 58}), - "scatter_nd_update_4x4_v2"), + ScatterNDUpdateParams( + reference_tests::Tensor({4, 4, 4}, IN_ET, std::vector{1, 2, 3, 4, 5, 6, 7, 8, 8, 7, 6, 5, 4, 3, 2, 1, + 1, 2, 3, 4, 5, 6, 7, 8, 8, 7, 6, 5, 4, 3, 2, 1, + 8, 7, 6, 5, 4, 3, 2, 1, 1, 2, 3, 4, 5, 6, 7, 8, + 8, 7, 6, 5, 4, 3, 2, 1, 1, 2, 3, 4, 5, 6, 7, 8}), + reference_tests::Tensor({2, 2, 2}, IU_ET, std::vector{0, 0, 2, 2, 1, 1, 3, 3}), + reference_tests::Tensor({2, 2, 4}, + IN_ET, + std::vector{15, 16, 17, 18, 25, 26, 27, 28, 35, 36, 37, 38, 45, 46, 47, 58}), + reference_tests::Tensor({4, 4, 4}, IN_ET, std::vector{15, 16, 17, 18, 5, 6, 7, 8, 8, 7, 6, 5, 4, + 3, 2, 1, 1, 2, 3, 4, 35, 36, 37, 38, 8, 7, + 6, 5, 4, 3, 2, 1, 8, 7, 6, 5, 4, 3, 2, + 1, 25, 26, 27, 28, 5, 6, 7, 8, 8, 7, 6, 5, + 4, 3, 2, 1, 1, 2, 3, 4, 45, 46, 47, 58}), + "scatter_nd_update_4x4_v2"), }; return scatterParams; } std::vector generateScatterNDUpdateCombinedParams() { - const std::vector> scatterTypeParams { + const std::vector> scatterTypeParams{ generateScatterNDUpdateParams(), generateScatterNDUpdateParams(), generateScatterNDUpdateParams(), @@ -196,11 +214,12 @@ std::vector generateScatterNDUpdateCombinedParams() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_ScatterNDUpdate_With_Hardcoded_Refs, ReferenceScatterNDUpdateLayerTest, - testing::ValuesIn(generateScatterNDUpdateCombinedParams()), ReferenceScatterNDUpdateLayerTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_ScatterNDUpdate_With_Hardcoded_Refs, + ReferenceScatterNDUpdateLayerTest, + testing::ValuesIn(generateScatterNDUpdateCombinedParams()), + ReferenceScatterNDUpdateLayerTest::getTestCaseName); -class ReferenceScatterNDUpdateLayerNegativeTest : public ReferenceScatterNDUpdateLayerTest{ -}; +class ReferenceScatterNDUpdateLayerNegativeTest : public ReferenceScatterNDUpdateLayerTest {}; TEST_P(ReferenceScatterNDUpdateLayerNegativeTest, CompareWithRefsNegative) { LoadNetwork(); @@ -219,7 +238,7 @@ template std::vector generateScatterNDUpdateNegativeParams() { using T = typename element_type_traits::value_type; using U = typename element_type_traits::value_type; - std::vector scatterParams { + std::vector scatterParams{ // scatter_nd_update_2x3_with_out_of_bounds_index ScatterNDUpdateParams(reference_tests::Tensor({2, 3}, IN_ET, std::vector{1, 2, 3, 4, 5, 6}), reference_tests::Tensor({1, 2}, IU_ET, std::vector{1, 3}), @@ -231,9 +250,8 @@ std::vector generateScatterNDUpdateNegativeParams() { } std::vector generateScatterNDUpdateCombinedNegativeParams() { - const std::vector> scatterTypeParams { - generateScatterNDUpdateNegativeParams() - }; + const std::vector> scatterTypeParams{ + generateScatterNDUpdateNegativeParams()}; std::vector combinedParams; for (const auto& params : scatterTypeParams) { @@ -242,9 +260,9 @@ std::vector generateScatterNDUpdateCombinedNegativeParams return combinedParams; } +INSTANTIATE_TEST_SUITE_P(smoke_ScatterNDUpdate_With_Hardcoded_Refs, + ReferenceScatterNDUpdateLayerNegativeTest, + testing::ValuesIn(generateScatterNDUpdateCombinedNegativeParams()), + ReferenceScatterNDUpdateLayerNegativeTest::getTestCaseName); -INSTANTIATE_TEST_SUITE_P(smoke_ScatterNDUpdate_With_Hardcoded_Refs, ReferenceScatterNDUpdateLayerNegativeTest, - testing::ValuesIn(generateScatterNDUpdateCombinedNegativeParams()), ReferenceScatterNDUpdateLayerNegativeTest::getTestCaseName); - - -} // namespace +} // namespace diff --git a/src/plugins/template/tests/functional/op_reference/scatter_update.cpp b/src/plugins/template/tests/functional/op_reference/scatter_update.cpp index 47d17750c08..c3f210d7bfd 100644 --- a/src/plugins/template/tests/functional/op_reference/scatter_update.cpp +++ b/src/plugins/template/tests/functional/op_reference/scatter_update.cpp @@ -2,13 +2,13 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/scatter_update.hpp" #include #include "base_reference_test.hpp" #include "gtest/gtest.h" #include "openvino/op/parameter.hpp" -#include "openvino/op/scatter_update.hpp" using namespace reference_tests; @@ -34,7 +34,8 @@ struct Builder : ParamsBuilder { REFERENCE_TESTS_ADD_SET_PARAM(Builder, expected); }; -class ReferenceScatterUpdate6LayerTest : public testing::TestWithParam, public CommonReferenceTest { +class ReferenceScatterUpdate6LayerTest : public testing::TestWithParam, + public CommonReferenceTest { public: void SetUp() override { auto params = GetParam(); @@ -73,7 +74,8 @@ private: const auto updates = std::make_shared(numeric_type, updates_shape); const auto axis = std::make_shared(axis_type, axis_shape); const auto scatter_update = std::make_shared(data, indices, updates, axis); - return std::make_shared(ov::NodeVector {scatter_update}, ov::ParameterVector {data, indices, updates, axis}); + return std::make_shared(ov::NodeVector{scatter_update}, + ov::ParameterVector{data, indices, updates, axis}); } }; @@ -82,855 +84,386 @@ TEST_P(ReferenceScatterUpdate6LayerTest, ScatterUpdateWithHardcodedRefs) { } template -std::vector generateScatterUpdate3Params(const ov::element::Type& numeric_type, const ov::element::Type& integer_type) { +std::vector generateScatterUpdate3Params(const ov::element::Type& numeric_type, + const ov::element::Type& integer_type) { using N = typename ov::element_type_traits::value_type; using I = typename ov::element_type_traits::value_type; - std::vector ScatterUpdateParams { - Builder {} - .data({{3, 2, 2, 3}, numeric_type, std::vector { - 0, 0, 0, - 0, 0, 0, - 0, 0, 0, - 0, 0, 0, - 0, 0, 0, - 0, 0, 0, - 0, 0, 0, - 0, 0, 0, - 0, 0, 0, - 0, 0, 0, - 0, 0, 0, - 0, 0, 0}}) - .indices({{2, 1}, integer_type, std::vector {0, 1}}) - .updates({{3, 3, 2, 2, 2}, numeric_type, std::vector { - 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, 72}}) - .axis({{1}, integer_type, std::vector {2}}) - .expected({{3, 2, 2, 3}, numeric_type, std::vector { - 1, 2, 9, - 3, 4, 11, - 10, 17, 18, - 12, 19, 20, - 25, 26, 33, - 27, 28, 35, - 34, 41, 42, - 36, 43, 44, - 49, 50, 57, - 51, 52, 59, - 58, 65, 66, - 60, 67, 68}}), - Builder {} - .data({{3, 3}, numeric_type, std::vector {0, 0, 0, - 0, 0, 0, - 0, 0, 0}}) - .indices({{2}, integer_type, std::vector {1, 2}}) - .updates({{3, 2}, numeric_type, std::vector {1, 1, - 1, 2, - 2, 2}}) - .axis({{1}, integer_type, std::vector {1}}) - .expected({{3, 3}, numeric_type, std::vector {0, 1, 1, - 0, 1, 2, - 0, 2, 2}}), - Builder {} - .data({{3, 3}, numeric_type, std::vector {0, 0, 0, - 0, 0, 0, - 0, 0, 0}}) - .indices({{2}, integer_type, std::vector {1, 2}}) - .updates({{2, 3}, numeric_type, std::vector {1, 1, 1, - 2, 2, 2}}) - .axis({{1}, integer_type, std::vector {0}}) - .expected({{3, 3}, numeric_type, std::vector {0, 0, 0, - 1, 1, 1, - 2, 2, 2}}), - Builder {} - .data({{3, 4}, numeric_type, std::vector {0, 0, 0, 0, - 0, 0, 0, 0, - 0, 0, 0, 0}}) - .indices({{2}, integer_type, std::vector {0, 2}}) - .updates({{3, 4}, numeric_type, std::vector {1, 2, 3, 7, - 4, 5, 6, 8, - 7, 8, 9, 10}}) - .axis({{1}, integer_type, std::vector {0}}) - .expected({{3, 4}, numeric_type, std::vector {1, 2, 3, 7, - 0, 0, 0, 0, - 4, 5, 6, 8}}), - Builder {} - .data({{3, 3}, numeric_type, std::vector {0, 0, 0, - 0, 0, 0, - 0, 0, 0}}) - .indices({{2}, integer_type, std::vector {0, 2}}) - .updates({{3, 5}, numeric_type, std::vector {1, 2, 3, 4, 5, - 6, 7, 8, 9, 10, - 11, 12, 13, 14, 15}}) - .axis({{1}, integer_type, std::vector {1}}) - .expected({{3, 3}, numeric_type, std::vector {1, 0, 2, - 6, 0, 7, - 11, 0, 12}}), - Builder {} - .data({{3, 3}, numeric_type, std::vector {0, 0, 0, - 0, 0, 0, - 0, 0, 0}}) - .indices({{1, 2}, integer_type, std::vector {1, 2}}) - .updates({{1, 2, 3}, numeric_type, std::vector {1, 2, 3, - 4, 5, 6}}) - .axis({{1}, integer_type, std::vector {0}}) - .expected({{3, 3}, numeric_type, std::vector {0, 0, 0, - 1, 2, 3, - 4, 5, 6}}), - Builder {} - .data({{3, 3}, numeric_type, std::vector {0, 0, 0, - 0, 0, 0, - 0, 0, 0}}) - .indices({{1, 2}, integer_type, std::vector {1, 2}}) - .updates({{3, 1, 2}, numeric_type, std::vector {1, 2, - 3, 4, - 5, 6}}) - .axis({{1}, integer_type, std::vector {1}}) - .expected({{3, 3}, numeric_type, std::vector {0, 1, 2, - 0, 3, 4, - 0, 5, 6}}), - Builder {} - .data({{3, 3}, numeric_type, std::vector {0, 0, 0, - 0, 0, 0, - 0, 0, 0}}) - .indices({{1, 2}, integer_type, std::vector {1, 2}}) - .updates({{4, 4, 4}, numeric_type, std::vector {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}}) - .axis({{1}, integer_type, std::vector {1}}) - .expected({{3, 3}, numeric_type, std::vector {0, 1, 2, - 0, 17, 18, - 0, 33, 34}}), - Builder {} - .data({{3, 3}, numeric_type, std::vector {0, 0, 0, - 0, 0, 0, - 0, 0, 0}}) - .indices({{1, 3}, integer_type, std::vector {0, 1, 2}}) - .updates({{4, 4, 4}, numeric_type, std::vector {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}}) - .axis({{1}, integer_type, std::vector {1}}) - .expected({{3, 3}, numeric_type, std::vector {1, 2, 3, - 17, 18, 19, - 33, 34, 35}}), - Builder {} - .data({{3, 3}, numeric_type, std::vector {0, 0, 0, - 0, 0, 0, - 0, 0, 0}}) - .indices({{1, 1}, integer_type, std::vector {2}}) - .updates({{2, 2, 2}, numeric_type, std::vector {1, 2, - 3, 4, - 5, 6, - 7, 8}}) - .axis({{1}, integer_type, std::vector {1}}) - .expected({{3, 3}, numeric_type, std::vector {0, 0, 1, - 0, 0, 5, - 0, 0, 0}}), - Builder {} - .data({{3, 4}, numeric_type, std::vector {0, 0, 0, 0, - 0, 0, 0, 0, - 0, 0, 0, 0}}) - .indices({{1, 4}, integer_type, std::vector {0, 1, 2, 3}}) - .updates({{2, 2, 2}, numeric_type, std::vector {1, 2, - 3, 4, - 5, 6, - 7, 8}}) - .axis({{1}, integer_type, std::vector {1}}) - .expected({{3, 4}, numeric_type, std::vector {1, 2, 3, 4, - 5, 6, 7, 8, - 0, 0, 0, 0}}), - Builder {} - .data({{3, 3}, numeric_type, std::vector {0, 0, 0, - 0, 0, 0, - 0, 0, 0}}) - .indices({{1, 3}, integer_type, std::vector {0, 1, 2}}) - .updates({{2, 2, 2}, numeric_type, std::vector {1, 2, - 3, 4, - 5, 6, - 7, 8}}) - .axis({{1}, integer_type, std::vector {0}}) - .expected({{3, 3}, numeric_type, std::vector {1, 2, 0, - 3, 4, 0, - 5, 6, 0}}), - Builder {} - .data({{3, 3}, numeric_type, std::vector {0, 0, 0, - 0, 0, 0, - 0, 0, 0}}) - .indices({{1, 3}, integer_type, std::vector {0, 1, 2}}) - .updates({{2, 2, 1}, numeric_type, std::vector {1, 2, - 3, 4}}) - .axis({{1}, integer_type, std::vector {0}}) - .expected({{3, 3}, numeric_type, std::vector {1, 0, 0, - 2, 0, 0, - 3, 0, 0}}), - Builder {} - .data({{3, 3}, numeric_type, std::vector {0, 0, 0, - 0, 0, 0, - 0, 0, 0}}) - .indices({{1, 3}, integer_type, std::vector {0, 1, 2}}) - .updates({{1, 1, 1}, numeric_type, std::vector {1}}) - .axis({{1}, integer_type, std::vector {0}}) - .expected({{3, 3}, numeric_type, std::vector {1, 0, 0, - 0, 0, 0, - 0, 0, 0}}), - Builder {} - .data({{2, 2}, numeric_type, std::vector {0, 0, - 0, 0}}) - .indices({{2, 1}, integer_type, std::vector {0, 1}}) - .updates({{2, 2, 2}, numeric_type, std::vector {1, 2, - 3, 4, - 5, 6, - 7, 8}}) - .axis({{1}, integer_type, std::vector {0}}) - .expected({{2, 2}, numeric_type, std::vector {1, 2, - 3, 4}}), - Builder {} - .data({{4, 4}, numeric_type, std::vector {0, 0, 0, 0, - 0, 0, 0, 0, - 0, 0, 0, 0, - 0, 0, 0, 0}}) - .indices({{4, 1}, integer_type, std::vector {0, 1, 2, 3}}) - .updates({{2, 2, 2}, numeric_type, std::vector {1, 2, - 3, 4, - 5, 6, - 7, 8}}) - .axis({{1}, integer_type, std::vector {0}}) - .expected({{4, 4}, numeric_type, std::vector {1, 2, 0, 0, - 3, 4, 0, 0, - 5, 6, 0, 0, - 7, 8, 0, 0}}), - Builder {} - .data({{2, 3, 4, 2}, numeric_type, std::vector {0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0}}) - .indices({{3, 1}, integer_type, std::vector {0, 1, 2}}) - .updates({{3, 2, 3, 3, 2}, numeric_type, std::vector {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, 72, - 73, 74, - 75, 76, - 77, 78, - 79, 80, - 81, 82, - 83, 84, - 85, 86, - 87, 88, - 89, 90, - 91, 92, - 93, 94, - 95, 96, - 97, 98, - 99, 100, - 101, 102, - 103, 104, - 105, 106, - 107, 108}}) - .axis({{1}, integer_type, std::vector {2}}) - .expected({{2, 3, 4, 2}, numeric_type, std::vector { - 1, 2, - 3, 4, - 5, 6, - 0, 0, - 19, 20, - 21, 22, - 23, 24, - 0, 0, - 37, 38, - 39, 40, - 41, 42, - 0, 0, - 55, 56, - 57, 58, - 59, 60, - 0, 0, - 73, 74, - 75, 76, - 77, 78, - 0, 0, - 91, 92, - 93, 94, - 95, 96, - 0, 0}}), - Builder {} - .data({{1, 3, 2, 2}, numeric_type, std::vector {0, 0, 0, - 0, 0, 0, - 0, 0, 0, - 0, 0, 0}}) - .indices({{1, 3}, integer_type, std::vector {2, 0, 1}}) - .updates({{1, 3, 2, 2, 2}, numeric_type, std::vector { - 1, 2, - 3, 4, - 5, 6, - 7, 8, - 9, 10, - 11, 12, - 13, 14, - 15, 16, - 17, 18, - 19, 20, - 21, 22, - 23, 24}}) - .axis({{1}, integer_type, std::vector {1}}) - .expected({{1, 3, 2, 2}, numeric_type, std::vector { - 5, 6, - 7, 8, - 9, 10, - 11, 12, - 1, 2, - 3, 4}}), - Builder {} - .data({{2, 2, 2}, numeric_type, std::vector {0, 0, - 0, 0, - 0, 0, - 0, 0}}) - .indices({{1, 2}, integer_type, std::vector {0, 1}}) - .updates({{2, 2, 3, 2}, numeric_type, std::vector {1, 2, - 3, 4, - 5, 6, - 7, 8, - 9, 10, - 11, 12, - 13, 14, - 15, 16, - 17, 18, - 19, 20, - 21, 22, - 23, 24}}) - .axis({{1}, integer_type, std::vector {1}}) - .expected({{2, 2, 2}, numeric_type, std::vector {1, 2, - 3, 4, - 13, 14, - 15, 16}}), - Builder {} - .data({{2, 2, 4}, numeric_type, std::vector {0, 0, 0, 0, - 0, 0, 0, 0, - 0, 0, 0, 0, - 0, 0, 0, 0}}) - .indices({{1, 2, 1}, integer_type, std::vector {0, 1}}) - .updates({{2, 2, 3, 2, 1}, numeric_type, std::vector {1, 2, - 3, 4, - 5, 6, - 7, 8, - 9, 10, - 11, 12, - 13, 14, - 15, 16, - 17, 18, - 19, 20, - 21, 22, - 23, 24}}) - .axis({{1}, integer_type, std::vector {1}}) - .expected({{2, 2, 2}, numeric_type, std::vector {1, 13, 0, 0, - 2, 14, 0, 0, - 0, 0, 0, 0, - 0, 0, 0, 0}}), - Builder {} - .data({{2, 4, 2}, numeric_type, std::vector {0, 0, 0, 0, - 0, 0, 0, 0, - 0, 0, 0, 0, - 0, 0, 0, 0}}) - .indices({{1, 2, 1}, integer_type, std::vector {0, 1}}) - .updates({{2, 2, 3, 2, 1}, numeric_type, std::vector {1, 2, - 3, 4, - 5, 6, - 7, 8, - 9, 10, - 11, 12, - 13, 14, - 15, 16, - 17, 18, - 19, 20, - 21, 22, - 23, 24}}) - .axis({{1}, integer_type, std::vector {1}}) - .expected({{2, 4, 2}, numeric_type, std::vector {1, 13, - 2, 14, - 0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0}}), - Builder {} - .data({{2, 2, 2}, numeric_type, std::vector {0, 0, - 0, 0, - 0, 0, - 0, 0}}) - .indices({{2, 1}, integer_type, std::vector {1, 0}}) - .updates({{2, 2, 3, 2}, numeric_type, std::vector {1, 2, - 3, 4, - 5, 6, - 7, 8, - 9, 10, - 11, 12, - 13, 14, - 15, 16, - 17, 18, - 19, 20, - 21, 22, - 23, 24}}) - .axis({{1}, integer_type, std::vector {2}}) - .expected({{2, 2, 2}, numeric_type, std::vector { - 2, 1, - 8, 7, - // - 14, 13, - 20, 19}}), -Builder {} - .data({{2, 2, 4}, numeric_type, std::vector {0, 0, 0, 0, - 0, 0, 0, 0, - 0, 0, 0, 0, - 0, 0, 0, 0}}) - .indices({{1, 2, 1}, integer_type, std::vector {0, 1}}) - .updates({{2, 2, 3, 1, 2}, numeric_type, std::vector {1, 2, - 3, 4, - 5, 6, - 7, 8, - 9, 10, - 11, 12, - 13, 14, - 15, 16, - 17, 18, - 19, 20, - 21, 22, - 23, 24}}) - .axis({{1}, integer_type, std::vector {1}}) - .expected({{2, 2, 4}, numeric_type, std::vector {1, 2, 13, 14, - 3, 4, 15, 16, - 0, 0, 0, 0, - 0, 0, 0, 0}}), + std::vector ScatterUpdateParams{ + Builder{} + .data({{3, 2, 2, 3}, numeric_type, std::vector{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}) + .indices({{2, 1}, integer_type, std::vector{0, 1}}) + .updates({{3, 3, 2, 2, 2}, + numeric_type, + std::vector{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, 72}}) + .axis({{1}, integer_type, std::vector{2}}) + .expected({{3, 2, 2, 3}, numeric_type, std::vector{1, 2, 9, 3, 4, 11, 10, 17, 18, 12, 19, 20, + 25, 26, 33, 27, 28, 35, 34, 41, 42, 36, 43, 44, + 49, 50, 57, 51, 52, 59, 58, 65, 66, 60, 67, 68}}), + Builder{} + .data({{3, 3}, numeric_type, std::vector{0, 0, 0, 0, 0, 0, 0, 0, 0}}) + .indices({{2}, integer_type, std::vector{1, 2}}) + .updates({{3, 2}, numeric_type, std::vector{1, 1, 1, 2, 2, 2}}) + .axis({{1}, integer_type, std::vector{1}}) + .expected({{3, 3}, numeric_type, std::vector{0, 1, 1, 0, 1, 2, 0, 2, 2}}), + Builder{} + .data({{3, 3}, numeric_type, std::vector{0, 0, 0, 0, 0, 0, 0, 0, 0}}) + .indices({{2}, integer_type, std::vector{1, 2}}) + .updates({{2, 3}, numeric_type, std::vector{1, 1, 1, 2, 2, 2}}) + .axis({{1}, integer_type, std::vector{0}}) + .expected({{3, 3}, numeric_type, std::vector{0, 0, 0, 1, 1, 1, 2, 2, 2}}), + Builder{} + .data({{3, 4}, numeric_type, std::vector{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}) + .indices({{2}, integer_type, std::vector{0, 2}}) + .updates({{3, 4}, numeric_type, std::vector{1, 2, 3, 7, 4, 5, 6, 8, 7, 8, 9, 10}}) + .axis({{1}, integer_type, std::vector{0}}) + .expected({{3, 4}, numeric_type, std::vector{1, 2, 3, 7, 0, 0, 0, 0, 4, 5, 6, 8}}), + Builder{} + .data({{3, 3}, numeric_type, std::vector{0, 0, 0, 0, 0, 0, 0, 0, 0}}) + .indices({{2}, integer_type, std::vector{0, 2}}) + .updates({{3, 5}, numeric_type, std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}}) + .axis({{1}, integer_type, std::vector{1}}) + .expected({{3, 3}, numeric_type, std::vector{1, 0, 2, 6, 0, 7, 11, 0, 12}}), + Builder{} + .data({{3, 3}, numeric_type, std::vector{0, 0, 0, 0, 0, 0, 0, 0, 0}}) + .indices({{1, 2}, integer_type, std::vector{1, 2}}) + .updates({{1, 2, 3}, numeric_type, std::vector{1, 2, 3, 4, 5, 6}}) + .axis({{1}, integer_type, std::vector{0}}) + .expected({{3, 3}, numeric_type, std::vector{0, 0, 0, 1, 2, 3, 4, 5, 6}}), + Builder{} + .data({{3, 3}, numeric_type, std::vector{0, 0, 0, 0, 0, 0, 0, 0, 0}}) + .indices({{1, 2}, integer_type, std::vector{1, 2}}) + .updates({{3, 1, 2}, numeric_type, std::vector{1, 2, 3, 4, 5, 6}}) + .axis({{1}, integer_type, std::vector{1}}) + .expected({{3, 3}, numeric_type, std::vector{0, 1, 2, 0, 3, 4, 0, 5, 6}}), + Builder{} + .data({{3, 3}, numeric_type, std::vector{0, 0, 0, 0, 0, 0, 0, 0, 0}}) + .indices({{1, 2}, integer_type, std::vector{1, 2}}) + .updates({{4, 4, 4}, numeric_type, std::vector{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}}) + .axis({{1}, integer_type, std::vector{1}}) + .expected({{3, 3}, numeric_type, std::vector{0, 1, 2, 0, 17, 18, 0, 33, 34}}), + Builder{} + .data({{3, 3}, numeric_type, std::vector{0, 0, 0, 0, 0, 0, 0, 0, 0}}) + .indices({{1, 3}, integer_type, std::vector{0, 1, 2}}) + .updates({{4, 4, 4}, numeric_type, std::vector{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}}) + .axis({{1}, integer_type, std::vector{1}}) + .expected({{3, 3}, numeric_type, std::vector{1, 2, 3, 17, 18, 19, 33, 34, 35}}), + Builder{} + .data({{3, 3}, numeric_type, std::vector{0, 0, 0, 0, 0, 0, 0, 0, 0}}) + .indices({{1, 1}, integer_type, std::vector{2}}) + .updates({{2, 2, 2}, numeric_type, std::vector{1, 2, 3, 4, 5, 6, 7, 8}}) + .axis({{1}, integer_type, std::vector{1}}) + .expected({{3, 3}, numeric_type, std::vector{0, 0, 1, 0, 0, 5, 0, 0, 0}}), + Builder{} + .data({{3, 4}, numeric_type, std::vector{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}) + .indices({{1, 4}, integer_type, std::vector{0, 1, 2, 3}}) + .updates({{2, 2, 2}, numeric_type, std::vector{1, 2, 3, 4, 5, 6, 7, 8}}) + .axis({{1}, integer_type, std::vector{1}}) + .expected({{3, 4}, numeric_type, std::vector{1, 2, 3, 4, 5, 6, 7, 8, 0, 0, 0, 0}}), + Builder{} + .data({{3, 3}, numeric_type, std::vector{0, 0, 0, 0, 0, 0, 0, 0, 0}}) + .indices({{1, 3}, integer_type, std::vector{0, 1, 2}}) + .updates({{2, 2, 2}, numeric_type, std::vector{1, 2, 3, 4, 5, 6, 7, 8}}) + .axis({{1}, integer_type, std::vector{0}}) + .expected({{3, 3}, numeric_type, std::vector{1, 2, 0, 3, 4, 0, 5, 6, 0}}), + Builder{} + .data({{3, 3}, numeric_type, std::vector{0, 0, 0, 0, 0, 0, 0, 0, 0}}) + .indices({{1, 3}, integer_type, std::vector{0, 1, 2}}) + .updates({{2, 2, 1}, numeric_type, std::vector{1, 2, 3, 4}}) + .axis({{1}, integer_type, std::vector{0}}) + .expected({{3, 3}, numeric_type, std::vector{1, 0, 0, 2, 0, 0, 3, 0, 0}}), + Builder{} + .data({{3, 3}, numeric_type, std::vector{0, 0, 0, 0, 0, 0, 0, 0, 0}}) + .indices({{1, 3}, integer_type, std::vector{0, 1, 2}}) + .updates({{1, 1, 1}, numeric_type, std::vector{1}}) + .axis({{1}, integer_type, std::vector{0}}) + .expected({{3, 3}, numeric_type, std::vector{1, 0, 0, 0, 0, 0, 0, 0, 0}}), + Builder{} + .data({{2, 2}, numeric_type, std::vector{0, 0, 0, 0}}) + .indices({{2, 1}, integer_type, std::vector{0, 1}}) + .updates({{2, 2, 2}, numeric_type, std::vector{1, 2, 3, 4, 5, 6, 7, 8}}) + .axis({{1}, integer_type, std::vector{0}}) + .expected({{2, 2}, numeric_type, std::vector{1, 2, 3, 4}}), + Builder{} + .data({{4, 4}, numeric_type, std::vector{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}) + .indices({{4, 1}, integer_type, std::vector{0, 1, 2, 3}}) + .updates({{2, 2, 2}, numeric_type, std::vector{1, 2, 3, 4, 5, 6, 7, 8}}) + .axis({{1}, integer_type, std::vector{0}}) + .expected({{4, 4}, numeric_type, std::vector{1, 2, 0, 0, 3, 4, 0, 0, 5, 6, 0, 0, 7, 8, 0, 0}}), + Builder{} + .data({{2, 3, 4, 2}, numeric_type, std::vector{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}) + .indices({{3, 1}, integer_type, std::vector{0, 1, 2}}) + .updates({{3, 2, 3, 3, 2}, + numeric_type, + std::vector{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, 72, + 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, + 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108}}) + .axis({{1}, integer_type, std::vector{2}}) + .expected({{2, 3, 4, 2}, numeric_type, std::vector{1, 2, 3, 4, 5, 6, 0, 0, 19, 20, 21, 22, + 23, 24, 0, 0, 37, 38, 39, 40, 41, 42, 0, 0, + 55, 56, 57, 58, 59, 60, 0, 0, 73, 74, 75, 76, + 77, 78, 0, 0, 91, 92, 93, 94, 95, 96, 0, 0}}), + Builder{} + .data({{1, 3, 2, 2}, numeric_type, std::vector{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}) + .indices({{1, 3}, integer_type, std::vector{2, 0, 1}}) + .updates({{1, 3, 2, 2, 2}, numeric_type, std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, + 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24}}) + .axis({{1}, integer_type, std::vector{1}}) + .expected({{1, 3, 2, 2}, numeric_type, std::vector{5, 6, 7, 8, 9, 10, 11, 12, 1, 2, 3, 4}}), + Builder{} + .data({{2, 2, 2}, numeric_type, std::vector{0, 0, 0, 0, 0, 0, 0, 0}}) + .indices({{1, 2}, integer_type, std::vector{0, 1}}) + .updates({{2, 2, 3, 2}, numeric_type, std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, + 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24}}) + .axis({{1}, integer_type, std::vector{1}}) + .expected({{2, 2, 2}, numeric_type, std::vector{1, 2, 3, 4, 13, 14, 15, 16}}), + Builder{} + .data({{2, 2, 4}, numeric_type, std::vector{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}) + .indices({{1, 2, 1}, integer_type, std::vector{0, 1}}) + .updates({{2, 2, 3, 2, 1}, numeric_type, std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, + 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24}}) + .axis({{1}, integer_type, std::vector{1}}) + .expected({{2, 2, 2}, numeric_type, std::vector{1, 13, 0, 0, 2, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}), + Builder{} + .data({{2, 4, 2}, numeric_type, std::vector{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}) + .indices({{1, 2, 1}, integer_type, std::vector{0, 1}}) + .updates({{2, 2, 3, 2, 1}, numeric_type, std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, + 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24}}) + .axis({{1}, integer_type, std::vector{1}}) + .expected({{2, 4, 2}, numeric_type, std::vector{1, 13, 2, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}), + Builder{} + .data({{2, 2, 2}, numeric_type, std::vector{0, 0, 0, 0, 0, 0, 0, 0}}) + .indices({{2, 1}, integer_type, std::vector{1, 0}}) + .updates({{2, 2, 3, 2}, numeric_type, std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, + 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24}}) + .axis({{1}, integer_type, std::vector{2}}) + .expected({{2, 2, 2}, + numeric_type, + std::vector{2, + 1, + 8, + 7, + // + 14, + 13, + 20, + 19}}), + Builder{} + .data({{2, 2, 4}, numeric_type, std::vector{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}) + .indices({{1, 2, 1}, integer_type, std::vector{0, 1}}) + .updates({{2, 2, 3, 1, 2}, numeric_type, std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, + 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24}}) + .axis({{1}, integer_type, std::vector{1}}) + .expected({{2, 2, 4}, numeric_type, std::vector{1, 2, 13, 14, 3, 4, 15, 16, 0, 0, 0, 0, 0, 0, 0, 0}}), - Builder {} - .data({{3, 2, 2, 2}, numeric_type, std::vector {0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0}}) - .indices({{2}, integer_type, std::vector {0, 1}}) - .updates({{2, 2, 2, 2}, numeric_type, std::vector {1, 2, - 3, 4, - 5, 6, - 7, 8, - 9, 10, - 11, 12, - 13, 14, - 15, 16}}) - .axis({{1}, integer_type, std::vector {3}}) - .expected({{3, 2, 2, 2}, numeric_type, std::vector { - 1, 2, - 3, 4, - 5, 6, - 7, 8, - 9, 10, - 11, 12, - 13, 14, - 15, 16, - 0, 0, - 0, 0, - 0, 0, - 0, 0}}), - Builder {} - .data({{5, 2, 2, 2}, numeric_type, std::vector {0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0}}) - .indices({{2}, integer_type, std::vector {0, 1}}) - .updates({{2, 2, 2, 2}, numeric_type, std::vector {1, 2, - 3, 4, - 5, 6, - 7, 8, - 9, 10, - 11, 12, - 13, 14, - 15, 16}}) - .axis({{1}, integer_type, std::vector {2}}) - .expected({{5, 2, 2, 2}, numeric_type, std::vector { - 1, 2, - 3, 4, - 5, 6, - 7, 8, - 9, 10, - 11, 12, - 13, 14, - 15, 16, - 0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0}}), -Builder {} - .data({{5, 2, 2, 2}, numeric_type, std::vector {0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0}}) - .indices({{2, 1}, integer_type, std::vector {0, 1}}) - .updates({{2, 2, 2, 2, 2}, numeric_type, std::vector {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}}) - .axis({{1}, integer_type, std::vector {2}}) - .expected({{5, 2, 2, 2}, numeric_type, std::vector { - 1, 2, - 3, 4, - 9, 10, - 11, 12, - 17, 18, - 19, 20, - 25, 26, - 27, 28, - 0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0}})}; + Builder{} + .data({{3, 2, 2, 2}, numeric_type, std::vector{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}) + .indices({{2}, integer_type, std::vector{0, 1}}) + .updates( + {{2, 2, 2, 2}, numeric_type, std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}}) + .axis({{1}, integer_type, std::vector{3}}) + .expected({{3, 2, 2, 2}, numeric_type, std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, + 13, 14, 15, 16, 0, 0, 0, 0, 0, 0, 0, 0}}), + Builder{} + .data({{5, 2, 2, 2}, numeric_type, std::vector{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}) + .indices({{2}, integer_type, std::vector{0, 1}}) + .updates( + {{2, 2, 2, 2}, numeric_type, std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}}) + .axis({{1}, integer_type, std::vector{2}}) + .expected({{5, 2, 2, 2}, numeric_type, std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, + 15, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}), + Builder{} + .data({{5, 2, 2, 2}, numeric_type, std::vector{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}) + .indices({{2, 1}, integer_type, std::vector{0, 1}}) + .updates({{2, 2, 2, 2, 2}, numeric_type, std::vector{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}}) + .axis({{1}, integer_type, std::vector{2}}) + .expected({{5, 2, 2, 2}, numeric_type, std::vector{1, 2, 3, 4, 9, 10, 11, 12, 17, 18, 19, 20, 25, 26, + 27, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}})}; return ScatterUpdateParams; } template -std::vector generateScatterUpdate3ParamsNegativeAxis(const ov::element::Type& numeric_type, const ov::element::Type& integer_type) { +std::vector generateScatterUpdate3ParamsNegativeAxis(const ov::element::Type& numeric_type, + const ov::element::Type& integer_type) { using N = typename ov::element_type_traits::value_type; using I = typename ov::element_type_traits::value_type; - std::vector ScatterUpdateParams { - Builder {} - .data({{2, 2, 3}, numeric_type, std::vector {0, 0, 0, - 0, 0, 0, - 0, 0, 0, - 0, 0, 0}}) - .indices({{1, 2, 1}, integer_type, std::vector {0, 1}}) - .updates({{2, 2, 3, 1, 2}, numeric_type, std::vector {1, 2, - 3, 4, - 5, 6, - 7, 8, - 9, 10, - 11, 12, - 13, 14, - 15, 16, - 17, 18, - 19, 20, - 21, 22, - 23, 24}}) - .axis({{1}, integer_type, std::vector {-2}}) - .expected({{2, 2, 3}, numeric_type, std::vector {1, 2, 13, - 3, 4, 15, - 14, 0, 0, - 16, 0, 0}}), - Builder {} - .data({{2, 2, 2}, numeric_type, std::vector {0, 0, - 0, 0, - 0, 0, - 0, 0}}) - .indices({{1, 2, 1}, integer_type, std::vector {0, 1}}) - .updates({{2, 2, 3, 1, 2}, numeric_type, std::vector {1, 2, - 3, 4, - 5, 6, - 7, 8, - 9, 10, - 11, 12, - 13, 14, - 15, 16, - 17, 18, - 19, 20, - 21, 22, - 23, 24}}) - .axis({{1}, integer_type, std::vector {-1}}) - .expected({{2, 2, 2}, numeric_type, std::vector {1, 2, - 7, 8, - 13, 14, - 19, 20}}), - Builder {} - .data({{4, 2, 2, 2}, numeric_type, std::vector {0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0}}) - .indices({{2}, integer_type, std::vector {0, 1}}) - .updates({{2, 2, 2, 2}, numeric_type, std::vector {1, 2, - 3, 4, - 5, 6, - 7, 8, - 9, 10, - 11, 12, - 13, 14, - 15, 16}}) - .axis({{1}, integer_type, std::vector {-3}}) - .expected({{4, 2, 2, 2}, numeric_type, std::vector { - 1, 2, - 3, 4, - 5, 6, - 7, 8, - 9, 10, - 11, 12, - 13, 14, - 15, 16, - 0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0}})}; + std::vector ScatterUpdateParams{ + Builder{} + .data({{2, 2, 3}, numeric_type, std::vector{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}) + .indices({{1, 2, 1}, integer_type, std::vector{0, 1}}) + .updates({{2, 2, 3, 1, 2}, numeric_type, std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, + 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24}}) + .axis({{1}, integer_type, std::vector{-2}}) + .expected({{2, 2, 3}, numeric_type, std::vector{1, 2, 13, 3, 4, 15, 14, 0, 0, 16, 0, 0}}), + Builder{} + .data({{2, 2, 2}, numeric_type, std::vector{0, 0, 0, 0, 0, 0, 0, 0}}) + .indices({{1, 2, 1}, integer_type, std::vector{0, 1}}) + .updates({{2, 2, 3, 1, 2}, numeric_type, std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, + 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24}}) + .axis({{1}, integer_type, std::vector{-1}}) + .expected({{2, 2, 2}, numeric_type, std::vector{1, 2, 7, 8, 13, 14, 19, 20}}), + Builder{} + .data({{4, 2, 2, 2}, numeric_type, std::vector{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}) + .indices({{2}, integer_type, std::vector{0, 1}}) + .updates( + {{2, 2, 2, 2}, numeric_type, std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}}) + .axis({{1}, integer_type, std::vector{-3}}) + .expected( + {{4, 2, 2, 2}, numeric_type, std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}})}; return ScatterUpdateParams; } std::vector generateScatterUpdateCombinedParams() { - const std::vector> ScatterUpdateTypeParams { + const std::vector> ScatterUpdateTypeParams{ // f32 - generateScatterUpdate3Params(ov::element::f32, ov::element::i16), - generateScatterUpdate3Params(ov::element::f32, ov::element::i32), - generateScatterUpdate3Params(ov::element::f32, ov::element::i64), - generateScatterUpdate3Params(ov::element::f32, ov::element::u32), - generateScatterUpdate3Params(ov::element::f32, ov::element::u64), + generateScatterUpdate3Params(ov::element::f32, + ov::element::i16), + generateScatterUpdate3Params(ov::element::f32, + ov::element::i32), + generateScatterUpdate3Params(ov::element::f32, + ov::element::i64), + generateScatterUpdate3Params(ov::element::f32, + ov::element::u32), + generateScatterUpdate3Params(ov::element::f32, + ov::element::u64), // f16 - generateScatterUpdate3Params(ov::element::f16, ov::element::i16), - generateScatterUpdate3Params(ov::element::f16, ov::element::i32), - generateScatterUpdate3Params(ov::element::f16, ov::element::i64), - generateScatterUpdate3Params(ov::element::f16, ov::element::u32), - generateScatterUpdate3Params(ov::element::f16, ov::element::u64), + generateScatterUpdate3Params(ov::element::f16, + ov::element::i16), + generateScatterUpdate3Params(ov::element::f16, + ov::element::i32), + generateScatterUpdate3Params(ov::element::f16, + ov::element::i64), + generateScatterUpdate3Params(ov::element::f16, + ov::element::u32), + generateScatterUpdate3Params(ov::element::f16, + ov::element::u64), // i8 - generateScatterUpdate3Params(ov::element::i8, ov::element::i16), - generateScatterUpdate3Params(ov::element::i8, ov::element::i32), - generateScatterUpdate3Params(ov::element::i8, ov::element::i64), - generateScatterUpdate3Params(ov::element::i8, ov::element::u32), - generateScatterUpdate3Params(ov::element::i8, ov::element::u64), + generateScatterUpdate3Params(ov::element::i8, + ov::element::i16), + generateScatterUpdate3Params(ov::element::i8, + ov::element::i32), + generateScatterUpdate3Params(ov::element::i8, + ov::element::i64), + generateScatterUpdate3Params(ov::element::i8, + ov::element::u32), + generateScatterUpdate3Params(ov::element::i8, + ov::element::u64), // i16 - generateScatterUpdate3Params(ov::element::i16, ov::element::i16), - generateScatterUpdate3Params(ov::element::i16, ov::element::i32), - generateScatterUpdate3Params(ov::element::i16, ov::element::i64), - generateScatterUpdate3Params(ov::element::i16, ov::element::u32), - generateScatterUpdate3Params(ov::element::i16, ov::element::u64), + generateScatterUpdate3Params(ov::element::i16, + ov::element::i16), + generateScatterUpdate3Params(ov::element::i16, + ov::element::i32), + generateScatterUpdate3Params(ov::element::i16, + ov::element::i64), + generateScatterUpdate3Params(ov::element::i16, + ov::element::u32), + generateScatterUpdate3Params(ov::element::i16, + ov::element::u64), // i32 - generateScatterUpdate3Params(ov::element::i32, ov::element::i16), - generateScatterUpdate3Params(ov::element::i32, ov::element::i32), - generateScatterUpdate3Params(ov::element::i32, ov::element::i64), - generateScatterUpdate3Params(ov::element::i32, ov::element::u32), - generateScatterUpdate3Params(ov::element::i32, ov::element::u64), + generateScatterUpdate3Params(ov::element::i32, + ov::element::i16), + generateScatterUpdate3Params(ov::element::i32, + ov::element::i32), + generateScatterUpdate3Params(ov::element::i32, + ov::element::i64), + generateScatterUpdate3Params(ov::element::i32, + ov::element::u32), + generateScatterUpdate3Params(ov::element::i32, + ov::element::u64), // i64 - generateScatterUpdate3Params(ov::element::i64, ov::element::i16), - generateScatterUpdate3Params(ov::element::i64, ov::element::i32), - generateScatterUpdate3Params(ov::element::i64, ov::element::i64), - generateScatterUpdate3Params(ov::element::i64, ov::element::u32), - generateScatterUpdate3Params(ov::element::i64, ov::element::u64), + generateScatterUpdate3Params(ov::element::i64, + ov::element::i16), + generateScatterUpdate3Params(ov::element::i64, + ov::element::i32), + generateScatterUpdate3Params(ov::element::i64, + ov::element::i64), + generateScatterUpdate3Params(ov::element::i64, + ov::element::u32), + generateScatterUpdate3Params(ov::element::i64, + ov::element::u64), // u8 - generateScatterUpdate3Params(ov::element::u8, ov::element::i16), - generateScatterUpdate3Params(ov::element::u8, ov::element::i32), - generateScatterUpdate3Params(ov::element::u8, ov::element::i64), - generateScatterUpdate3Params(ov::element::u8, ov::element::u32), - generateScatterUpdate3Params(ov::element::u8, ov::element::u64), + generateScatterUpdate3Params(ov::element::u8, + ov::element::i16), + generateScatterUpdate3Params(ov::element::u8, + ov::element::i32), + generateScatterUpdate3Params(ov::element::u8, + ov::element::i64), + generateScatterUpdate3Params(ov::element::u8, + ov::element::u32), + generateScatterUpdate3Params(ov::element::u8, + ov::element::u64), // u16 - generateScatterUpdate3Params(ov::element::u16, ov::element::i16), - generateScatterUpdate3Params(ov::element::u16, ov::element::i32), - generateScatterUpdate3Params(ov::element::u16, ov::element::i64), - generateScatterUpdate3Params(ov::element::u16, ov::element::u32), - generateScatterUpdate3Params(ov::element::u16, ov::element::u64), + generateScatterUpdate3Params(ov::element::u16, + ov::element::i16), + generateScatterUpdate3Params(ov::element::u16, + ov::element::i32), + generateScatterUpdate3Params(ov::element::u16, + ov::element::i64), + generateScatterUpdate3Params(ov::element::u16, + ov::element::u32), + generateScatterUpdate3Params(ov::element::u16, + ov::element::u64), // u32 - generateScatterUpdate3Params(ov::element::u32, ov::element::i16), - generateScatterUpdate3Params(ov::element::u32, ov::element::i32), - generateScatterUpdate3Params(ov::element::u32, ov::element::i64), - generateScatterUpdate3Params(ov::element::u32, ov::element::u32), - generateScatterUpdate3Params(ov::element::u32, ov::element::u64), + generateScatterUpdate3Params(ov::element::u32, + ov::element::i16), + generateScatterUpdate3Params(ov::element::u32, + ov::element::i32), + generateScatterUpdate3Params(ov::element::u32, + ov::element::i64), + generateScatterUpdate3Params(ov::element::u32, + ov::element::u32), + generateScatterUpdate3Params(ov::element::u32, + ov::element::u64), // u64 - generateScatterUpdate3Params(ov::element::u64, ov::element::i16), - generateScatterUpdate3Params(ov::element::u64, ov::element::i32), - generateScatterUpdate3Params(ov::element::u64, ov::element::i64), - generateScatterUpdate3Params(ov::element::u64, ov::element::u32), - generateScatterUpdate3Params(ov::element::u64, ov::element::u64), + generateScatterUpdate3Params(ov::element::u64, + ov::element::i16), + generateScatterUpdate3Params(ov::element::u64, + ov::element::i32), + generateScatterUpdate3Params(ov::element::u64, + ov::element::i64), + generateScatterUpdate3Params(ov::element::u64, + ov::element::u32), + generateScatterUpdate3Params(ov::element::u64, + ov::element::u64), // bf16 - generateScatterUpdate3Params(ov::element::bf16, ov::element::i16), - generateScatterUpdate3Params(ov::element::bf16, ov::element::i32), - generateScatterUpdate3Params(ov::element::bf16, ov::element::i64), - generateScatterUpdate3Params(ov::element::bf16, ov::element::u32), - generateScatterUpdate3Params(ov::element::bf16, ov::element::u64)}; + generateScatterUpdate3Params(ov::element::bf16, + ov::element::i16), + generateScatterUpdate3Params(ov::element::bf16, + ov::element::i32), + generateScatterUpdate3Params(ov::element::bf16, + ov::element::i64), + generateScatterUpdate3Params(ov::element::bf16, + ov::element::u32), + generateScatterUpdate3Params(ov::element::bf16, + ov::element::u64)}; std::vector combinedParams; for (const auto& params : ScatterUpdateTypeParams) { @@ -940,51 +473,84 @@ std::vector generateScatterUpdateCombinedParams() { } std::vector generateScatterUpdateNegativeAxisParams() { - const std::vector> ScatterUpdateTypeParams { + const std::vector> ScatterUpdateTypeParams{ // f32 - generateScatterUpdate3Params(ov::element::f32, ov::element::i16), - generateScatterUpdate3Params(ov::element::f32, ov::element::i32), - generateScatterUpdate3Params(ov::element::f32, ov::element::i64), + generateScatterUpdate3Params(ov::element::f32, + ov::element::i16), + generateScatterUpdate3Params(ov::element::f32, + ov::element::i32), + generateScatterUpdate3Params(ov::element::f32, + ov::element::i64), // f16 - generateScatterUpdate3Params(ov::element::f16, ov::element::i16), - generateScatterUpdate3Params(ov::element::f16, ov::element::i32), - generateScatterUpdate3Params(ov::element::f16, ov::element::i64), + generateScatterUpdate3Params(ov::element::f16, + ov::element::i16), + generateScatterUpdate3Params(ov::element::f16, + ov::element::i32), + generateScatterUpdate3Params(ov::element::f16, + ov::element::i64), // i8 - generateScatterUpdate3Params(ov::element::i8, ov::element::i16), - generateScatterUpdate3Params(ov::element::i8, ov::element::i32), - generateScatterUpdate3Params(ov::element::i8, ov::element::i64), + generateScatterUpdate3Params(ov::element::i8, + ov::element::i16), + generateScatterUpdate3Params(ov::element::i8, + ov::element::i32), + generateScatterUpdate3Params(ov::element::i8, + ov::element::i64), // i16 - generateScatterUpdate3Params(ov::element::i16, ov::element::i16), - generateScatterUpdate3Params(ov::element::i16, ov::element::i32), - generateScatterUpdate3Params(ov::element::i16, ov::element::i64), + generateScatterUpdate3Params(ov::element::i16, + ov::element::i16), + generateScatterUpdate3Params(ov::element::i16, + ov::element::i32), + generateScatterUpdate3Params(ov::element::i16, + ov::element::i64), // i32 - generateScatterUpdate3Params(ov::element::i32, ov::element::i16), - generateScatterUpdate3Params(ov::element::i32, ov::element::i32), - generateScatterUpdate3Params(ov::element::i32, ov::element::i64), + generateScatterUpdate3Params(ov::element::i32, + ov::element::i16), + generateScatterUpdate3Params(ov::element::i32, + ov::element::i32), + generateScatterUpdate3Params(ov::element::i32, + ov::element::i64), // i64 - generateScatterUpdate3Params(ov::element::i64, ov::element::i16), - generateScatterUpdate3Params(ov::element::i64, ov::element::i32), - generateScatterUpdate3Params(ov::element::i64, ov::element::i64), + generateScatterUpdate3Params(ov::element::i64, + ov::element::i16), + generateScatterUpdate3Params(ov::element::i64, + ov::element::i32), + generateScatterUpdate3Params(ov::element::i64, + ov::element::i64), // u8 - generateScatterUpdate3Params(ov::element::u8, ov::element::i16), - generateScatterUpdate3Params(ov::element::u8, ov::element::i32), - generateScatterUpdate3Params(ov::element::u8, ov::element::i64), + generateScatterUpdate3Params(ov::element::u8, + ov::element::i16), + generateScatterUpdate3Params(ov::element::u8, + ov::element::i32), + generateScatterUpdate3Params(ov::element::u8, + ov::element::i64), // u16 - generateScatterUpdate3Params(ov::element::u16, ov::element::i16), - generateScatterUpdate3Params(ov::element::u16, ov::element::i32), - generateScatterUpdate3Params(ov::element::u16, ov::element::i64), + generateScatterUpdate3Params(ov::element::u16, + ov::element::i16), + generateScatterUpdate3Params(ov::element::u16, + ov::element::i32), + generateScatterUpdate3Params(ov::element::u16, + ov::element::i64), // u32 - generateScatterUpdate3Params(ov::element::u32, ov::element::i16), - generateScatterUpdate3Params(ov::element::u32, ov::element::i32), - generateScatterUpdate3Params(ov::element::u32, ov::element::i64), + generateScatterUpdate3Params(ov::element::u32, + ov::element::i16), + generateScatterUpdate3Params(ov::element::u32, + ov::element::i32), + generateScatterUpdate3Params(ov::element::u32, + ov::element::i64), // u64 - generateScatterUpdate3Params(ov::element::u64, ov::element::i16), - generateScatterUpdate3Params(ov::element::u64, ov::element::i32), - generateScatterUpdate3Params(ov::element::u64, ov::element::i64), + generateScatterUpdate3Params(ov::element::u64, + ov::element::i16), + generateScatterUpdate3Params(ov::element::u64, + ov::element::i32), + generateScatterUpdate3Params(ov::element::u64, + ov::element::i64), // bf16 - generateScatterUpdate3Params(ov::element::bf16, ov::element::i16), - generateScatterUpdate3Params(ov::element::bf16, ov::element::i32), - generateScatterUpdate3Params(ov::element::bf16, ov::element::i64)}; + generateScatterUpdate3Params(ov::element::bf16, + ov::element::i16), + generateScatterUpdate3Params(ov::element::bf16, + ov::element::i32), + generateScatterUpdate3Params(ov::element::bf16, + ov::element::i64)}; std::vector combinedParams; for (const auto& params : ScatterUpdateTypeParams) { @@ -992,11 +558,15 @@ std::vector generateScatterUpdateNegativeAxisParams() { } return combinedParams; } -} // namespace +} // namespace -INSTANTIATE_TEST_SUITE_P(smoke_ScatterUpdate_With_Hardcoded_Refs, ReferenceScatterUpdate6LayerTest, - ::testing::ValuesIn(generateScatterUpdateCombinedParams()), ReferenceScatterUpdate6LayerTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_ScatterUpdate_With_Hardcoded_Refs, + ReferenceScatterUpdate6LayerTest, + ::testing::ValuesIn(generateScatterUpdateCombinedParams()), + ReferenceScatterUpdate6LayerTest::getTestCaseName); -INSTANTIATE_TEST_SUITE_P(smoke_ScatterUpdate_Negative_Axis_With_Hardcoded_Refs, ReferenceScatterUpdate6LayerTest, - ::testing::ValuesIn(generateScatterUpdateNegativeAxisParams()), ReferenceScatterUpdate6LayerTest::getTestCaseName); -} // namespace reference_tests +INSTANTIATE_TEST_SUITE_P(smoke_ScatterUpdate_Negative_Axis_With_Hardcoded_Refs, + ReferenceScatterUpdate6LayerTest, + ::testing::ValuesIn(generateScatterUpdateNegativeAxisParams()), + ReferenceScatterUpdate6LayerTest::getTestCaseName); +} // namespace reference_tests diff --git a/src/plugins/template/tests/functional/op_reference/select.cpp b/src/plugins/template/tests/functional/op_reference/select.cpp index 4e8467fc839..72971888f27 100644 --- a/src/plugins/template/tests/functional/op_reference/select.cpp +++ b/src/plugins/template/tests/functional/op_reference/select.cpp @@ -2,9 +2,10 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/select.hpp" + #include -#include "openvino/op/select.hpp" #include "base_reference_test.hpp" using namespace reference_tests; @@ -12,9 +13,15 @@ using namespace ov; struct SelectParams { template - SelectParams(const element::Type& data_type, const op::AutoBroadcastSpec& broadcast, const PartialShape& select_input_pshape, - const std::vector& select_input, const PartialShape& if_input_pshape, const std::vector& if_input, - const PartialShape& else_input_pshape, const std::vector& else_input, const std::vector& expected_output) + SelectParams(const element::Type& data_type, + const op::AutoBroadcastSpec& broadcast, + const PartialShape& select_input_pshape, + const std::vector& select_input, + const PartialShape& if_input_pshape, + const std::vector& if_input, + const PartialShape& else_input_pshape, + const std::vector& else_input, + const std::vector& expected_output) : data_type(data_type), broadcast(broadcast), select_input_pshape(select_input_pshape), @@ -40,7 +47,11 @@ class ReferenceSelectLayerTest : public testing::TestWithParam, pu public: void SetUp() override { auto params = GetParam(); - function = CreateFunction(params.data_type, params.broadcast, params.select_input_pshape, params.if_input_pshape, params.else_input_pshape); + function = CreateFunction(params.data_type, + params.broadcast, + params.select_input_pshape, + params.if_input_pshape, + params.else_input_pshape); inputData = {params.select_input, params.if_input, params.else_input}; refOutData = {params.expected_output}; } @@ -56,12 +67,16 @@ public: } private: - static std::shared_ptr CreateFunction(const element::Type& data_type, const op::AutoBroadcastSpec& broadcast, - const PartialShape& select_pshape, const PartialShape& if_pshape, const PartialShape& else_pshape) { + static std::shared_ptr CreateFunction(const element::Type& data_type, + const op::AutoBroadcastSpec& broadcast, + const PartialShape& select_pshape, + const PartialShape& if_pshape, + const PartialShape& else_pshape) { auto A = std::make_shared(element::boolean, select_pshape); auto B = std::make_shared(data_type, if_pshape); auto C = std::make_shared(data_type, else_pshape); - return std::make_shared(std::make_shared(A, B, C, broadcast), ParameterVector {A, B, C}); + return std::make_shared(std::make_shared(A, B, C, broadcast), + ParameterVector{A, B, C}); } }; @@ -69,66 +84,67 @@ TEST_P(ReferenceSelectLayerTest, CompareWithHardcodedRefs) { Exec(); } -INSTANTIATE_TEST_SUITE_P(smoke_Select_With_Hardcoded_Refs, ReferenceSelectLayerTest, +INSTANTIATE_TEST_SUITE_P(smoke_Select_With_Hardcoded_Refs, + ReferenceSelectLayerTest, ::testing::Values( // fp32, no brodcasting - SelectParams(element::f32, // if/else/output data type - op::AutoBroadcastType::NONE, // broadcasting type - PartialShape {2, 2, 2}, // select shape - std::vector {0, 1, 1, 0, 0, 1, 0, 1}, // select data - PartialShape {2, 2, 2}, // if shape - std::vector {1, 2, 3, 4, 5, 6, 7, 8}, // if data - PartialShape {2, 2, 2}, // else shape - std::vector {11, 12, 13, 14, 15, 16, 17, 18}, // else data - std::vector {11, 2, 3, 14, 15, 6, 17, 8}), // expected output data + SelectParams(element::f32, // if/else/output data type + op::AutoBroadcastType::NONE, // broadcasting type + PartialShape{2, 2, 2}, // select shape + std::vector{0, 1, 1, 0, 0, 1, 0, 1}, // select data + PartialShape{2, 2, 2}, // if shape + std::vector{1, 2, 3, 4, 5, 6, 7, 8}, // if data + PartialShape{2, 2, 2}, // else shape + std::vector{11, 12, 13, 14, 15, 16, 17, 18}, // else data + std::vector{11, 2, 3, 14, 15, 6, 17, 8}), // expected output data // i32, no brodcasting - SelectParams(element::i32, // if/else/output data type - op::AutoBroadcastType::NONE, // broadcasting type - PartialShape {2, 2, 2}, // select shape - std::vector {0, 1, 1, 0, 0, 1, 0, 1}, // select data - PartialShape {2, 2, 2}, // if shape - std::vector {1, 2, 3, 4, 5, 6, 7, 8}, // if data - PartialShape {2, 2, 2}, // else shape - std::vector {11, 12, 13, 14, 15, 16, 17, 18}, // else data - std::vector {11, 2, 3, 14, 15, 6, 17, 8}), // expected output data + SelectParams(element::i32, // if/else/output data type + op::AutoBroadcastType::NONE, // broadcasting type + PartialShape{2, 2, 2}, // select shape + std::vector{0, 1, 1, 0, 0, 1, 0, 1}, // select data + PartialShape{2, 2, 2}, // if shape + std::vector{1, 2, 3, 4, 5, 6, 7, 8}, // if data + PartialShape{2, 2, 2}, // else shape + std::vector{11, 12, 13, 14, 15, 16, 17, 18}, // else data + std::vector{11, 2, 3, 14, 15, 6, 17, 8}), // expected output data // fp32, numpy brodcasting - SelectParams(element::f32, // if/else/output data type - op::AutoBroadcastType::NUMPY, // broadcasting type - PartialShape {4}, // select shape - std::vector {0, 1, 1, 0}, // select data - PartialShape {4}, // if shape - std::vector {1, 2, 3, 4}, // if data - PartialShape {2, 4}, // else shape - std::vector {11, 12, 13, 14, 15, 16, 17, 18}, // else data - std::vector {11, 2, 3, 14, 15, 2, 3, 18}), // expected output data + SelectParams(element::f32, // if/else/output data type + op::AutoBroadcastType::NUMPY, // broadcasting type + PartialShape{4}, // select shape + std::vector{0, 1, 1, 0}, // select data + PartialShape{4}, // if shape + std::vector{1, 2, 3, 4}, // if data + PartialShape{2, 4}, // else shape + std::vector{11, 12, 13, 14, 15, 16, 17, 18}, // else data + std::vector{11, 2, 3, 14, 15, 2, 3, 18}), // expected output data // i32, numpy brodcasting - SelectParams(element::i32, // if/else/output data type - op::AutoBroadcastType::NUMPY, // broadcasting type - PartialShape {4}, // select shape - std::vector {0, 1, 1, 0}, // select data - PartialShape {4}, // if shape - std::vector {1, 2, 3, 4}, // if data - PartialShape {2, 4}, // else shape - std::vector {11, 12, 13, 14, 15, 16, 17, 18}, // else data - std::vector {11, 2, 3, 14, 15, 2, 3, 18}), // expected output data + SelectParams(element::i32, // if/else/output data type + op::AutoBroadcastType::NUMPY, // broadcasting type + PartialShape{4}, // select shape + std::vector{0, 1, 1, 0}, // select data + PartialShape{4}, // if shape + std::vector{1, 2, 3, 4}, // if data + PartialShape{2, 4}, // else shape + std::vector{11, 12, 13, 14, 15, 16, 17, 18}, // else data + std::vector{11, 2, 3, 14, 15, 2, 3, 18}), // expected output data // fp32, pdpd brodcasting - SelectParams(element::f32, // if/else/output data type - {op::AutoBroadcastType::PDPD, -1}, // broadcasting type - PartialShape {2, 4}, // select shape - std::vector {0, 0, 0, 0, 0, 1, 1, 1}, // select data - PartialShape {2, 4}, // if shape - std::vector {1, 2, 3, 4, 5, 6, 7, 8}, // if data - PartialShape {4}, // else shape - std::vector {11, 12, 13, 14}, // else data - std::vector {11, 12, 13, 14, 11, 6, 7, 8}), // expected output data + SelectParams(element::f32, // if/else/output data type + {op::AutoBroadcastType::PDPD, -1}, // broadcasting type + PartialShape{2, 4}, // select shape + std::vector{0, 0, 0, 0, 0, 1, 1, 1}, // select data + PartialShape{2, 4}, // if shape + std::vector{1, 2, 3, 4, 5, 6, 7, 8}, // if data + PartialShape{4}, // else shape + std::vector{11, 12, 13, 14}, // else data + std::vector{11, 12, 13, 14, 11, 6, 7, 8}), // expected output data // i32, pdpd brodcasting - SelectParams(element::i32, // if/else/output data type - {op::AutoBroadcastType::PDPD, -1}, // broadcasting type - PartialShape {2, 4}, // select shape - std::vector {0, 0, 0, 0, 0, 1, 1, 1}, // select data - PartialShape {2, 4}, // if shape - std::vector {1, 2, 3, 4, 5, 6, 7, 8}, // if data - PartialShape {4}, // else shape - std::vector {11, 12, 13, 14}, // else data - std::vector {11, 12, 13, 14, 11, 6, 7, 8})), // expected output data + SelectParams(element::i32, // if/else/output data type + {op::AutoBroadcastType::PDPD, -1}, // broadcasting type + PartialShape{2, 4}, // select shape + std::vector{0, 0, 0, 0, 0, 1, 1, 1}, // select data + PartialShape{2, 4}, // if shape + std::vector{1, 2, 3, 4, 5, 6, 7, 8}, // if data + PartialShape{4}, // else shape + std::vector{11, 12, 13, 14}, // else data + std::vector{11, 12, 13, 14, 11, 6, 7, 8})), // expected output data ReferenceSelectLayerTest::getTestCaseName); diff --git a/src/plugins/template/tests/functional/op_reference/selu.cpp b/src/plugins/template/tests/functional/op_reference/selu.cpp index af3ced366ae..5feecc16b82 100644 --- a/src/plugins/template/tests/functional/op_reference/selu.cpp +++ b/src/plugins/template/tests/functional/op_reference/selu.cpp @@ -2,9 +2,10 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/selu.hpp" + #include -#include "openvino/op/selu.hpp" #include "base_reference_test.hpp" using namespace reference_tests; @@ -13,10 +14,15 @@ using namespace ov; namespace { struct SeluParams { template - SeluParams(const ov::PartialShape& shape, const ov::element::Type& iType, const std::vector& iValues, const std::vector& oValues, - const ov::Shape& alphaShape, const ov::Shape& lambdaShape, - const std::vector& alphaValues, const std::vector& lambdaValues, - const std::string& test_name = "") + SeluParams(const ov::PartialShape& shape, + const ov::element::Type& iType, + const std::vector& iValues, + const std::vector& oValues, + const ov::Shape& alphaShape, + const ov::Shape& lambdaShape, + const std::vector& alphaValues, + const std::vector& lambdaValues, + const std::string& test_name = "") : pshape(shape), inType(iType), outType(iType), @@ -71,7 +77,7 @@ private: const auto alpha = std::make_shared(params.inType, params.alphaShape); const auto lambda = std::make_shared(params.inType, params.lambdaShape); const auto Selu = std::make_shared(in, alpha, lambda); - return std::make_shared(NodeVector {Selu}, ParameterVector {in, alpha, lambda}); + return std::make_shared(NodeVector{Selu}, ParameterVector{in, alpha, lambda}); } }; @@ -83,49 +89,45 @@ template std::vector generateSeluFloatParams() { using T = typename element_type_traits::value_type; - std::vector seluParams { - SeluParams(ov::PartialShape {2}, - IN_ET, - std::vector{-1, 3}, - std::vector{-1.1113307, 3.152103}, - ov::Shape {1}, - ov::Shape {1}, - std::vector{1.67326324}, - std::vector{1.05070098}), - SeluParams(ov::PartialShape {4}, - IN_ET, - std::vector{-1.0, 0.0, 1.0, 2.0}, - std::vector{-1.1113307, 0., 1.050701, 2.101402}, - ov::Shape {1}, - ov::Shape {1}, - std::vector{1.67326324}, - std::vector{1.05070098}), - SeluParams(ov::PartialShape {1}, - IN_ET, - std::vector{112.0}, - std::vector{117.67851}, - ov::Shape {1}, - ov::Shape {1}, - std::vector{1.67326324}, - std::vector{1.05070098}), - SeluParams(ov::PartialShape {3}, - IN_ET, - std::vector{-3.0, -12.5, -7.0}, - std::vector{-1.6705687, -1.7580928, -1.7564961}, - ov::Shape {1}, - ov::Shape {1}, - std::vector{1.67326324}, - std::vector{1.05070098}) - }; + std::vector seluParams{SeluParams(ov::PartialShape{2}, + IN_ET, + std::vector{-1, 3}, + std::vector{-1.1113307, 3.152103}, + ov::Shape{1}, + ov::Shape{1}, + std::vector{1.67326324}, + std::vector{1.05070098}), + SeluParams(ov::PartialShape{4}, + IN_ET, + std::vector{-1.0, 0.0, 1.0, 2.0}, + std::vector{-1.1113307, 0., 1.050701, 2.101402}, + ov::Shape{1}, + ov::Shape{1}, + std::vector{1.67326324}, + std::vector{1.05070098}), + SeluParams(ov::PartialShape{1}, + IN_ET, + std::vector{112.0}, + std::vector{117.67851}, + ov::Shape{1}, + ov::Shape{1}, + std::vector{1.67326324}, + std::vector{1.05070098}), + SeluParams(ov::PartialShape{3}, + IN_ET, + std::vector{-3.0, -12.5, -7.0}, + std::vector{-1.6705687, -1.7580928, -1.7564961}, + ov::Shape{1}, + ov::Shape{1}, + std::vector{1.67326324}, + std::vector{1.05070098})}; return seluParams; } std::vector generateSeluCombinedParams() { - const std::vector> seluTypeParams { - generateSeluFloatParams(), - generateSeluFloatParams(), - generateSeluFloatParams() - }; + const std::vector> seluTypeParams{generateSeluFloatParams(), + generateSeluFloatParams(), + generateSeluFloatParams()}; std::vector combinedParams; for (const auto& params : seluTypeParams) { @@ -134,7 +136,9 @@ std::vector generateSeluCombinedParams() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_Selu_With_Hardcoded_Refs, ReferenceSeluLayerTest, - testing::ValuesIn(generateSeluCombinedParams()), ReferenceSeluLayerTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_Selu_With_Hardcoded_Refs, + ReferenceSeluLayerTest, + testing::ValuesIn(generateSeluCombinedParams()), + ReferenceSeluLayerTest::getTestCaseName); -} // namespace +} // namespace diff --git a/src/plugins/template/tests/functional/op_reference/shape_of.cpp b/src/plugins/template/tests/functional/op_reference/shape_of.cpp index 4068544f48c..70069c2b9ad 100644 --- a/src/plugins/template/tests/functional/op_reference/shape_of.cpp +++ b/src/plugins/template/tests/functional/op_reference/shape_of.cpp @@ -2,11 +2,12 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/shape_of.hpp" + #include -#include "openvino/op/shape_of.hpp" -#include "openvino/op/constant.hpp" #include "base_reference_test.hpp" +#include "openvino/op/constant.hpp" using namespace reference_tests; using namespace ov; @@ -16,11 +17,11 @@ namespace { struct ShapeOfParamsV1 { template ShapeOfParamsV1(const Shape& input_shape, - const Shape& expected_shape, - const element::Type& input_type, - const element::Type& expected_type, - const std::vector& input_value, - const std::vector& expected_value) + const Shape& expected_shape, + const element::Type& input_type, + const element::Type& expected_type, + const std::vector& input_value, + const std::vector& expected_value) : m_input_shape(input_shape), m_expected_shape(expected_shape), m_input_type(input_type), @@ -139,19 +140,8 @@ std::vector generateParamsForShapeOfSmall_V1() { using T2 = typename element_type_traits::value_type; std::vector params{ - ShapeOfParamsV1(Shape{2}, - Shape{1}, - IT, - OT, - std::vector{2, 0}, - std::vector{2}), - ShapeOfParamsV1(Shape{2, 4}, - Shape{2}, - IT, - OT, - std::vector{2 * 4, 0}, - std::vector{2, 4}) - }; + ShapeOfParamsV1(Shape{2}, Shape{1}, IT, OT, std::vector{2, 0}, std::vector{2}), + ShapeOfParamsV1(Shape{2, 4}, Shape{2}, IT, OT, std::vector{2 * 4, 0}, std::vector{2, 4})}; return params; } @@ -162,18 +152,8 @@ std::vector generateParamsForShapeOfBig_V1() { using T2 = typename element_type_traits::value_type; std::vector params{ - ShapeOfParamsV1(Shape{2}, - Shape{1}, - IT, - OT, - std::vector{2, 0}, - std::vector{2}), - ShapeOfParamsV1(Shape{2, 4}, - Shape{2}, - IT, - OT, - std::vector{2 * 4, 0}, - std::vector{2, 4}), + ShapeOfParamsV1(Shape{2}, Shape{1}, IT, OT, std::vector{2, 0}, std::vector{2}), + ShapeOfParamsV1(Shape{2, 4}, Shape{2}, IT, OT, std::vector{2 * 4, 0}, std::vector{2, 4}), ShapeOfParamsV1(Shape{2, 4, 8, 16, 32}, Shape{5}, IT, @@ -190,24 +170,22 @@ std::vector generateParamsForShapeOfSmall_V3() { using T2 = typename element_type_traits::value_type; using T3 = typename element_type_traits::value_type; - std::vector params{ - ShapeOfParamsV3(Shape{2}, - Shape{1}, - IT, - OT1, - OT2, - std::vector{2, 0}, - std::vector{2}, - std::vector{2}), - ShapeOfParamsV3(Shape{2, 4}, - Shape{2}, - IT, - OT1, - OT2, - std::vector{2 * 4, 0}, - std::vector{2, 4}, - std::vector{2, 4}) - }; + std::vector params{ShapeOfParamsV3(Shape{2}, + Shape{1}, + IT, + OT1, + OT2, + std::vector{2, 0}, + std::vector{2}, + std::vector{2}), + ShapeOfParamsV3(Shape{2, 4}, + Shape{2}, + IT, + OT1, + OT2, + std::vector{2 * 4, 0}, + std::vector{2, 4}, + std::vector{2, 4})}; return params; } @@ -218,32 +196,30 @@ std::vector generateParamsForShapeOfBig_V3() { using T2 = typename element_type_traits::value_type; using T3 = typename element_type_traits::value_type; - std::vector params{ - ShapeOfParamsV3(Shape{2}, - Shape{1}, - IT, - OT1, - OT2, - std::vector{2, 0}, - std::vector{2}, - std::vector{2}), - ShapeOfParamsV3(Shape{2, 4}, - Shape{2}, - IT, - OT1, - OT2, - std::vector{2 * 4, 0}, - std::vector{2, 4}, - std::vector{2, 4}), - ShapeOfParamsV3(Shape{2, 4, 8, 16, 32}, - Shape{5}, - IT, - OT1, - OT2, - std::vector{2 * 4 * 8 * 16 * 32, 0}, - std::vector{2, 4, 8, 16, 32}, - std::vector{2, 4, 8, 16, 32}) - }; + std::vector params{ShapeOfParamsV3(Shape{2}, + Shape{1}, + IT, + OT1, + OT2, + std::vector{2, 0}, + std::vector{2}, + std::vector{2}), + ShapeOfParamsV3(Shape{2, 4}, + Shape{2}, + IT, + OT1, + OT2, + std::vector{2 * 4, 0}, + std::vector{2, 4}, + std::vector{2, 4}), + ShapeOfParamsV3(Shape{2, 4, 8, 16, 32}, + Shape{5}, + IT, + OT1, + OT2, + std::vector{2 * 4 * 8 * 16 * 32, 0}, + std::vector{2, 4, 8, 16, 32}, + std::vector{2, 4, 8, 16, 32})}; return params; } @@ -260,8 +236,7 @@ std::vector generateCombinedParamsForShapeOfV1() { generateParamsForShapeOfSmall_V1(), generateParamsForShapeOfSmall_V1(), generateParamsForShapeOfSmall_V1(), - generateParamsForShapeOfSmall_V1() - }; + generateParamsForShapeOfSmall_V1()}; std::vector combinedParams; @@ -284,8 +259,7 @@ std::vector generateCombinedParamsForShapeOfV3() { generateParamsForShapeOfSmall_V3(), generateParamsForShapeOfSmall_V3(), generateParamsForShapeOfSmall_V3(), - generateParamsForShapeOfSmall_V3() - }; + generateParamsForShapeOfSmall_V3()}; std::vector combinedParams; @@ -296,16 +270,14 @@ std::vector generateCombinedParamsForShapeOfV3() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P( - smoke_ShapeOf_With_Hardcoded_Refs, - ReferenceShapeOfV1LayerTest, - ::testing::ValuesIn(generateCombinedParamsForShapeOfV1()), - ReferenceShapeOfV1LayerTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_ShapeOf_With_Hardcoded_Refs, + ReferenceShapeOfV1LayerTest, + ::testing::ValuesIn(generateCombinedParamsForShapeOfV1()), + ReferenceShapeOfV1LayerTest::getTestCaseName); -INSTANTIATE_TEST_SUITE_P( - smoke_ShapeOf_With_Hardcoded_Refs, - ReferenceShapeOfV3LayerTest, - ::testing::ValuesIn(generateCombinedParamsForShapeOfV3()), - ReferenceShapeOfV3LayerTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_ShapeOf_With_Hardcoded_Refs, + ReferenceShapeOfV3LayerTest, + ::testing::ValuesIn(generateCombinedParamsForShapeOfV3()), + ReferenceShapeOfV3LayerTest::getTestCaseName); } // namespace diff --git a/src/plugins/template/tests/functional/op_reference/shuffle_channels.cpp b/src/plugins/template/tests/functional/op_reference/shuffle_channels.cpp index 26ccdbe3dca..7b605e62680 100644 --- a/src/plugins/template/tests/functional/op_reference/shuffle_channels.cpp +++ b/src/plugins/template/tests/functional/op_reference/shuffle_channels.cpp @@ -4,18 +4,24 @@ #include -#include "openvino/opsets/opset1.hpp" #include "base_reference_test.hpp" +#include "openvino/opsets/opset1.hpp" using namespace reference_tests; using namespace ov; namespace { struct ShuffleChannelsParams { - ShuffleChannelsParams(const reference_tests::Tensor& dataTensor, const int32_t axis, const int32_t group, - const reference_tests::Tensor& expectedTensor, const std::string& testcaseName = "") : - dataTensor(dataTensor), axis(axis), group(group), - expectedTensor(expectedTensor), testcaseName(testcaseName) {} + ShuffleChannelsParams(const reference_tests::Tensor& dataTensor, + const int32_t axis, + const int32_t group, + const reference_tests::Tensor& expectedTensor, + const std::string& testcaseName = "") + : dataTensor(dataTensor), + axis(axis), + group(group), + expectedTensor(expectedTensor), + testcaseName(testcaseName) {} reference_tests::Tensor dataTensor; int32_t axis; @@ -24,7 +30,8 @@ struct ShuffleChannelsParams { std::string testcaseName; }; -class ReferenceShuffleChannelsLayerTest : public testing::TestWithParam, public CommonReferenceTest { +class ReferenceShuffleChannelsLayerTest : public testing::TestWithParam, + public CommonReferenceTest { public: void SetUp() override { auto params = GetParam(); @@ -54,7 +61,7 @@ private: static std::shared_ptr CreateFunction(const ShuffleChannelsParams& params) { const auto data = std::make_shared(params.dataTensor.type, params.dataTensor.shape); const auto function = std::make_shared(data, params.axis, params.group); - return std::make_shared(NodeVector {function}, ParameterVector {data}); + return std::make_shared(NodeVector{function}, ParameterVector{data}); } }; @@ -65,42 +72,49 @@ TEST_P(ReferenceShuffleChannelsLayerTest, CompareWithRefs) { template std::vector generateParams() { using T = typename element_type_traits::value_type; - std::vector params { + std::vector params{ // shuffle_channels_simple ShuffleChannelsParams( - reference_tests::Tensor({1, 15, 2, 2}, IN_ET, std::vector{ - 0, 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}), + reference_tests::Tensor( + {1, 15, 2, 2}, + IN_ET, + std::vector{0, 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}), 1, 5, - reference_tests::Tensor({1, 15, 2, 2}, IN_ET, std::vector{ - 0, 1, 2, 3, 12, 13, 14, 15, 24, 25, 26, 27, 36, 37, 38, 39, 48, 49, 50, 51, - 4, 5, 6, 7, 16, 17, 18, 19, 28, 29, 30, 31, 40, 41, 42, 43, 52, 53, 54, 55, - 8, 9, 10, 11, 20, 21, 22, 23, 32, 33, 34, 35, 44, 45, 46, 47, 56, 57, 58, 59}), + reference_tests::Tensor( + {1, 15, 2, 2}, + IN_ET, + std::vector{0, 1, 2, 3, 12, 13, 14, 15, 24, 25, 26, 27, 36, 37, 38, 39, 48, 49, 50, 51, + 4, 5, 6, 7, 16, 17, 18, 19, 28, 29, 30, 31, 40, 41, 42, 43, 52, 53, 54, 55, + 8, 9, 10, 11, 20, 21, 22, 23, 32, 33, 34, 35, 44, 45, 46, 47, 56, 57, 58, 59}), "shuffle_channels_simple"), // shuffle_channels_negative_axis ShuffleChannelsParams( - reference_tests::Tensor({15, 2, 1, 2}, IN_ET, std::vector{ - 0, 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}), + reference_tests::Tensor( + {15, 2, 1, 2}, + IN_ET, + std::vector{0, 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}), -4, 5, - reference_tests::Tensor({15, 2, 1, 2}, IN_ET, std::vector{ - 0, 1, 2, 3, 12, 13, 14, 15, 24, 25, 26, 27, 36, 37, 38, 39, 48, 49, 50, 51, - 4, 5, 6, 7, 16, 17, 18, 19, 28, 29, 30, 31, 40, 41, 42, 43, 52, 53, 54, 55, - 8, 9, 10, 11, 20, 21, 22, 23, 32, 33, 34, 35, 44, 45, 46, 47, 56, 57, 58, 59}), + reference_tests::Tensor( + {15, 2, 1, 2}, + IN_ET, + std::vector{0, 1, 2, 3, 12, 13, 14, 15, 24, 25, 26, 27, 36, 37, 38, 39, 48, 49, 50, 51, + 4, 5, 6, 7, 16, 17, 18, 19, 28, 29, 30, 31, 40, 41, 42, 43, 52, 53, 54, 55, + 8, 9, 10, 11, 20, 21, 22, 23, 32, 33, 34, 35, 44, 45, 46, 47, 56, 57, 58, 59}), "shuffle_channels_negative_axis"), // shuffle_channels_float - ShuffleChannelsParams( - reference_tests::Tensor({6, 1, 1, 1}, IN_ET, std::vector{0, 1, 2, 3, 4, 5}), - 0, - 2, - reference_tests::Tensor({6, 1, 1, 1}, IN_ET, std::vector{0, 3, 1, 4, 2, 5}), - "shuffle_channels_float"), + ShuffleChannelsParams(reference_tests::Tensor({6, 1, 1, 1}, IN_ET, std::vector{0, 1, 2, 3, 4, 5}), + 0, + 2, + reference_tests::Tensor({6, 1, 1, 1}, IN_ET, std::vector{0, 3, 1, 4, 2, 5}), + "shuffle_channels_float"), // shuffle_channels_1d ShuffleChannelsParams( @@ -112,77 +126,83 @@ std::vector generateParams() { // shuffle_channels_2d ShuffleChannelsParams( - reference_tests::Tensor({15, 4}, IN_ET, std::vector{ - 0, 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}), + reference_tests::Tensor({15, 4}, IN_ET, std::vector{0, 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}), 0, 5, - reference_tests::Tensor({15, 4}, IN_ET, std::vector{ - 0, 1, 2, 3, 12, 13, 14, 15, 24, 25, 26, 27, 36, 37, 38, - 39, 48, 49, 50, 51, 4, 5, 6, 7, 16, 17, 18, 19, 28, 29, - 30, 31, 40, 41, 42, 43, 52, 53, 54, 55, 8, 9, 10, 11, 20, - 21, 22, 23, 32, 33, 34, 35, 44, 45, 46, 47, 56, 57, 58, 59}), + reference_tests::Tensor({15, 4}, IN_ET, std::vector{0, 1, 2, 3, 12, 13, 14, 15, 24, 25, 26, 27, + 36, 37, 38, 39, 48, 49, 50, 51, 4, 5, 6, 7, + 16, 17, 18, 19, 28, 29, 30, 31, 40, 41, 42, 43, + 52, 53, 54, 55, 8, 9, 10, 11, 20, 21, 22, 23, + 32, 33, 34, 35, 44, 45, 46, 47, 56, 57, 58, 59}), "shuffle_channels_2d"), // shuffle_channels_3d ShuffleChannelsParams( - reference_tests::Tensor({15, 2, 2}, IN_ET, std::vector{ - 0, 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}), + reference_tests::Tensor({15, 2, 2}, IN_ET, std::vector{0, 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}), 0, 5, - reference_tests::Tensor({15, 2, 2}, IN_ET, std::vector{ - 0, 1, 2, 3, 12, 13, 14, 15, 24, 25, 26, 27, 36, 37, 38, - 39, 48, 49, 50, 51, 4, 5, 6, 7, 16, 17, 18, 19, 28, 29, - 30, 31, 40, 41, 42, 43, 52, 53, 54, 55, 8, 9, 10, 11, 20, - 21, 22, 23, 32, 33, 34, 35, 44, 45, 46, 47, 56, 57, 58, 59}), + reference_tests::Tensor({15, 2, 2}, IN_ET, std::vector{0, 1, 2, 3, 12, 13, 14, 15, 24, 25, 26, 27, + 36, 37, 38, 39, 48, 49, 50, 51, 4, 5, 6, 7, + 16, 17, 18, 19, 28, 29, 30, 31, 40, 41, 42, 43, + 52, 53, 54, 55, 8, 9, 10, 11, 20, 21, 22, 23, + 32, 33, 34, 35, 44, 45, 46, 47, 56, 57, 58, 59}), "shuffle_channels_3d"), // shuffle_channels_5d ShuffleChannelsParams( - reference_tests::Tensor({2, 2, 15, 2, 2}, IN_ET, std::vector{ - 0, 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, + reference_tests::Tensor( + {2, 2, 15, 2, 2}, + IN_ET, + std::vector{0, 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, - 0, 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, + 0, 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, - 0, 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, + 0, 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, - 0, 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}), + 0, 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}), 2, 5, - reference_tests::Tensor({2, 2, 15, 2, 2}, IN_ET, std::vector{ - 0, 1, 2, 3, 12, 13, 14, 15, 24, 25, 26, 27, 36, 37, 38, 39, 48, 49, 50, 51, - 4, 5, 6, 7, 16, 17, 18, 19, 28, 29, 30, 31, 40, 41, 42, 43, 52, 53, 54, 55, - 8, 9, 10, 11, 20, 21, 22, 23, 32, 33, 34, 35, 44, 45, 46, 47, 56, 57, 58, 59, + reference_tests::Tensor( + {2, 2, 15, 2, 2}, + IN_ET, + std::vector{0, 1, 2, 3, 12, 13, 14, 15, 24, 25, 26, 27, 36, 37, 38, 39, 48, 49, 50, 51, + 4, 5, 6, 7, 16, 17, 18, 19, 28, 29, 30, 31, 40, 41, 42, 43, 52, 53, 54, 55, + 8, 9, 10, 11, 20, 21, 22, 23, 32, 33, 34, 35, 44, 45, 46, 47, 56, 57, 58, 59, - 0, 1, 2, 3, 12, 13, 14, 15, 24, 25, 26, 27, 36, 37, 38, 39, 48, 49, 50, 51, - 4, 5, 6, 7, 16, 17, 18, 19, 28, 29, 30, 31, 40, 41, 42, 43, 52, 53, 54, 55, - 8, 9, 10, 11, 20, 21, 22, 23, 32, 33, 34, 35, 44, 45, 46, 47, 56, 57, 58, 59, + 0, 1, 2, 3, 12, 13, 14, 15, 24, 25, 26, 27, 36, 37, 38, 39, 48, 49, 50, 51, + 4, 5, 6, 7, 16, 17, 18, 19, 28, 29, 30, 31, 40, 41, 42, 43, 52, 53, 54, 55, + 8, 9, 10, 11, 20, 21, 22, 23, 32, 33, 34, 35, 44, 45, 46, 47, 56, 57, 58, 59, - 0, 1, 2, 3, 12, 13, 14, 15, 24, 25, 26, 27, 36, 37, 38, 39, 48, 49, 50, 51, - 4, 5, 6, 7, 16, 17, 18, 19, 28, 29, 30, 31, 40, 41, 42, 43, 52, 53, 54, 55, - 8, 9, 10, 11, 20, 21, 22, 23, 32, 33, 34, 35, 44, 45, 46, 47, 56, 57, 58, 59, + 0, 1, 2, 3, 12, 13, 14, 15, 24, 25, 26, 27, 36, 37, 38, 39, 48, 49, 50, 51, + 4, 5, 6, 7, 16, 17, 18, 19, 28, 29, 30, 31, 40, 41, 42, 43, 52, 53, 54, 55, + 8, 9, 10, 11, 20, 21, 22, 23, 32, 33, 34, 35, 44, 45, 46, 47, 56, 57, 58, 59, - 0, 1, 2, 3, 12, 13, 14, 15, 24, 25, 26, 27, 36, 37, 38, 39, 48, 49, 50, 51, - 4, 5, 6, 7, 16, 17, 18, 19, 28, 29, 30, 31, 40, 41, 42, 43, 52, 53, 54, 55, - 8, 9, 10, 11, 20, 21, 22, 23, 32, 33, 34, 35, 44, 45, 46, 47, 56, 57, 58, 59}), + 0, 1, 2, 3, 12, 13, 14, 15, 24, 25, 26, 27, 36, 37, 38, 39, 48, 49, 50, 51, + 4, 5, 6, 7, 16, 17, 18, 19, 28, 29, 30, 31, 40, 41, 42, 43, 52, 53, 54, 55, + 8, 9, 10, 11, 20, 21, 22, 23, 32, 33, 34, 35, 44, 45, 46, 47, 56, 57, 58, 59}), "shuffle_channels_5d"), }; return params; } std::vector generateShuffleChannelsCombinedParams() { - const std::vector> generatedParams { + const std::vector> generatedParams{ generateParams(), generateParams(), generateParams(), @@ -204,6 +224,8 @@ std::vector generateShuffleChannelsCombinedParams() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_ShuffleChannels_With_Hardcoded_Refs, ReferenceShuffleChannelsLayerTest, - testing::ValuesIn(generateShuffleChannelsCombinedParams()), ReferenceShuffleChannelsLayerTest::getTestCaseName); -} // namespace +INSTANTIATE_TEST_SUITE_P(smoke_ShuffleChannels_With_Hardcoded_Refs, + ReferenceShuffleChannelsLayerTest, + testing::ValuesIn(generateShuffleChannelsCombinedParams()), + ReferenceShuffleChannelsLayerTest::getTestCaseName); +} // namespace diff --git a/src/plugins/template/tests/functional/op_reference/sigmoid.cpp b/src/plugins/template/tests/functional/op_reference/sigmoid.cpp index e82d8b5aa45..b8f29219783 100644 --- a/src/plugins/template/tests/functional/op_reference/sigmoid.cpp +++ b/src/plugins/template/tests/functional/op_reference/sigmoid.cpp @@ -2,9 +2,10 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/sigmoid.hpp" + #include -#include "openvino/op/sigmoid.hpp" #include "base_reference_test.hpp" using namespace reference_tests; @@ -13,7 +14,10 @@ using namespace ov; namespace { struct SigmoidParams { template - SigmoidParams(const ov::PartialShape& shape, const ov::element::Type& iType, const std::vector& iValues, const std::vector& oValues) + SigmoidParams(const ov::PartialShape& shape, + const ov::element::Type& iType, + const std::vector& iValues, + const std::vector& oValues) : pshape(shape), inType(iType), outType(iType), @@ -45,11 +49,12 @@ public: } private: - static std::shared_ptr CreateFunction(const PartialShape& input_shape, const element::Type& input_type, - const element::Type& Sigmoidected_output_type) { + static std::shared_ptr CreateFunction(const PartialShape& input_shape, + const element::Type& input_type, + const element::Type& Sigmoidected_output_type) { const auto in = std::make_shared(input_type, input_shape); const auto Sigmoid = std::make_shared(in); - return std::make_shared(NodeVector {Sigmoid}, ParameterVector {in}); + return std::make_shared(NodeVector{Sigmoid}, ParameterVector{in}); } }; @@ -57,7 +62,6 @@ TEST_P(ReferenceSigmoidLayerTest, CompareWithRefs) { Exec(); } - template std::vector generateSigmoidFloatParams() { using T = typename element_type_traits::value_type; @@ -67,16 +71,14 @@ std::vector generateSigmoidFloatParams() { float sigma1 = 1.0f / (1.0f + std::exp(-x1)); float sigma2 = 1.0f / (1.0f + std::exp(-x2)); - std::vector sigmoidParams { - SigmoidParams(ov::PartialShape {1, 1, 2, 2}, - IN_ET, - std::vector{x1, x2, x1, x2}, - std::vector{sigma1, sigma2, sigma1, sigma2}), - SigmoidParams(ov::PartialShape {1, 1, 4}, - IN_ET, - std::vector{x1, x2, x1, x2}, - std::vector{sigma1, sigma2, sigma1, sigma2}) - }; + std::vector sigmoidParams{SigmoidParams(ov::PartialShape{1, 1, 2, 2}, + IN_ET, + std::vector{x1, x2, x1, x2}, + std::vector{sigma1, sigma2, sigma1, sigma2}), + SigmoidParams(ov::PartialShape{1, 1, 4}, + IN_ET, + std::vector{x1, x2, x1, x2}, + std::vector{sigma1, sigma2, sigma1, sigma2})}; return sigmoidParams; } @@ -84,16 +86,9 @@ template std::vector generateSigmoidIntParams() { using T = typename element_type_traits::value_type; - std::vector sigmoidParams { - SigmoidParams(ov::PartialShape {1, 1, 2, 2}, - IN_ET, - std::vector{1, 4, -1, -4}, - std::vector{1, 1, 0, 0}), - SigmoidParams(ov::PartialShape {1, 1, 4}, - IN_ET, - std::vector{1, 4, -1, -4}, - std::vector{1, 1, 0, 0}) - }; + std::vector sigmoidParams{ + SigmoidParams(ov::PartialShape{1, 1, 2, 2}, IN_ET, std::vector{1, 4, -1, -4}, std::vector{1, 1, 0, 0}), + SigmoidParams(ov::PartialShape{1, 1, 4}, IN_ET, std::vector{1, 4, -1, -4}, std::vector{1, 1, 0, 0})}; return sigmoidParams; } @@ -101,28 +96,19 @@ template std::vector generateSigmoidUintParams() { using T = typename element_type_traits::value_type; - std::vector sigmoidParams { - SigmoidParams(ov::PartialShape {1, 1, 2, 2}, - IN_ET, - std::vector{1, 4, 1, 4}, - std::vector{1, 1, 1, 1}), - SigmoidParams(ov::PartialShape {1, 1, 4}, - IN_ET, - std::vector{1, 4, 1, 4}, - std::vector{1, 1, 1, 1}) - }; + std::vector sigmoidParams{ + SigmoidParams(ov::PartialShape{1, 1, 2, 2}, IN_ET, std::vector{1, 4, 1, 4}, std::vector{1, 1, 1, 1}), + SigmoidParams(ov::PartialShape{1, 1, 4}, IN_ET, std::vector{1, 4, 1, 4}, std::vector{1, 1, 1, 1})}; return sigmoidParams; } std::vector generateSigmoidCombinedParams() { - const std::vector> sigmoidTypeParams { - generateSigmoidFloatParams(), - generateSigmoidFloatParams(), - generateSigmoidIntParams(), - generateSigmoidIntParams(), - generateSigmoidUintParams(), - generateSigmoidUintParams() - }; + const std::vector> sigmoidTypeParams{generateSigmoidFloatParams(), + generateSigmoidFloatParams(), + generateSigmoidIntParams(), + generateSigmoidIntParams(), + generateSigmoidUintParams(), + generateSigmoidUintParams()}; std::vector combinedParams; for (const auto& params : sigmoidTypeParams) { @@ -131,7 +117,9 @@ std::vector generateSigmoidCombinedParams() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_Sigmoid_With_Hardcoded_Refs, ReferenceSigmoidLayerTest, - testing::ValuesIn(generateSigmoidCombinedParams()), ReferenceSigmoidLayerTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_Sigmoid_With_Hardcoded_Refs, + ReferenceSigmoidLayerTest, + testing::ValuesIn(generateSigmoidCombinedParams()), + ReferenceSigmoidLayerTest::getTestCaseName); -} // namespace +} // namespace diff --git a/src/plugins/template/tests/functional/op_reference/sign.cpp b/src/plugins/template/tests/functional/op_reference/sign.cpp index 34ac622cb43..ae08360aa38 100644 --- a/src/plugins/template/tests/functional/op_reference/sign.cpp +++ b/src/plugins/template/tests/functional/op_reference/sign.cpp @@ -2,9 +2,10 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/sign.hpp" + #include -#include "openvino/op/sign.hpp" #include "base_reference_test.hpp" using namespace reference_tests; @@ -12,9 +13,16 @@ using namespace ov; struct SignParams { template - SignParams(const PartialShape& shape, const element::Type& iType, const element::Type& oType, const std::vector& iValues, - const std::vector& oValues) - : pshape(shape), inType(iType), outType(oType), inputData(CreateTensor(iType, iValues)), refData(CreateTensor(oType, oValues)) {} + SignParams(const PartialShape& shape, + const element::Type& iType, + const element::Type& oType, + const std::vector& iValues, + const std::vector& oValues) + : pshape(shape), + inType(iType), + outType(oType), + inputData(CreateTensor(iType, iValues)), + refData(CreateTensor(oType, oValues)) {} PartialShape pshape; element::Type inType; element::Type outType; @@ -43,7 +51,7 @@ private: static std::shared_ptr CreateFunction(const PartialShape& input_shape, const element::Type& input_type) { const auto in = std::make_shared(input_type, input_shape); const auto sign = std::make_shared(in); - return std::make_shared(NodeVector {sign}, ParameterVector {in}); + return std::make_shared(NodeVector{sign}, ParameterVector{in}); } }; @@ -51,25 +59,36 @@ TEST_P(ReferenceSignLayerTest, CompareWithHardcodedRefs) { Exec(); } -INSTANTIATE_TEST_SUITE_P( - smoke_Sign_With_Hardcoded_Refs, ReferenceSignLayerTest, - ::testing::Values( - SignParams(PartialShape {6}, element::f32, element::f32, - std::vector {1, -2, 0, -4.8f, 4.8f, -0.0f}, - std::vector {1, -1, 0, -1, 1, 0}), - SignParams(PartialShape {6}, element::f16, element::f16, - std::vector {1, -2, 0, -4.8f, 4.8f, -0.0f}, - std::vector {1, -1, 0, -1, 1, 0}), - SignParams(PartialShape {6}, element::u64, element::u64, - std::vector {1, 2, 0, 4, 4, 0}, - std::vector {1, 1, 0, 1, 1, 0}), - SignParams(PartialShape {6}, element::u32, element::u32, - std::vector {1, 2, 0, 4, 4, 0}, - std::vector {1, 1, 0, 1, 1, 0}), - SignParams(PartialShape {6}, element::i32, element::i32, - std::vector {1, -2, 0, -4, 4, -0}, - std::vector {1, -1, 0, -1, 1, 0}), - SignParams(PartialShape {6}, element::i64, element::i64, - std::vector {1, -2, 0, -4, 4, -0}, - std::vector {1, -1, 0, -1, 1, 0})), - ReferenceSignLayerTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_Sign_With_Hardcoded_Refs, + ReferenceSignLayerTest, + ::testing::Values(SignParams(PartialShape{6}, + element::f32, + element::f32, + std::vector{1, -2, 0, -4.8f, 4.8f, -0.0f}, + std::vector{1, -1, 0, -1, 1, 0}), + SignParams(PartialShape{6}, + element::f16, + element::f16, + std::vector{1, -2, 0, -4.8f, 4.8f, -0.0f}, + std::vector{1, -1, 0, -1, 1, 0}), + SignParams(PartialShape{6}, + element::u64, + element::u64, + std::vector{1, 2, 0, 4, 4, 0}, + std::vector{1, 1, 0, 1, 1, 0}), + SignParams(PartialShape{6}, + element::u32, + element::u32, + std::vector{1, 2, 0, 4, 4, 0}, + std::vector{1, 1, 0, 1, 1, 0}), + SignParams(PartialShape{6}, + element::i32, + element::i32, + std::vector{1, -2, 0, -4, 4, -0}, + std::vector{1, -1, 0, -1, 1, 0}), + SignParams(PartialShape{6}, + element::i64, + element::i64, + std::vector{1, -2, 0, -4, 4, -0}, + std::vector{1, -1, 0, -1, 1, 0})), + ReferenceSignLayerTest::getTestCaseName); diff --git a/src/plugins/template/tests/functional/op_reference/sin.cpp b/src/plugins/template/tests/functional/op_reference/sin.cpp index 0db13c355a1..e3466415bc9 100644 --- a/src/plugins/template/tests/functional/op_reference/sin.cpp +++ b/src/plugins/template/tests/functional/op_reference/sin.cpp @@ -2,9 +2,10 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/sin.hpp" + #include -#include "openvino/op/sin.hpp" #include "base_reference_test.hpp" using namespace ov; @@ -42,7 +43,7 @@ private: static std::shared_ptr CreateFunction(const Shape& shape, const element::Type& type) { const auto in = std::make_shared(type, shape); const auto Sin = std::make_shared(in); - return std::make_shared(NodeVector {Sin}, ParameterVector {in}); + return std::make_shared(NodeVector{Sin}, ParameterVector{in}); } }; @@ -53,46 +54,55 @@ TEST_P(ReferenceSinLayerTest, SinWithHardcodedRefs) { } // namespace INSTANTIATE_TEST_SUITE_P( - smoke_Sin_With_Hardcoded_Refs, ReferenceSinLayerTest, + smoke_Sin_With_Hardcoded_Refs, + ReferenceSinLayerTest, ::testing::Values( - Builder {} - .input({{11}, element::f16, std::vector {0.f, 0.25f, -0.25f, 0.5f, -0.5f, 1.f, -1.f, 2.f, -2.f, 4.f, -4.f}}) - .expected({{11}, element::f16, std::vector {0.00000000f, - 0.24740396f, - -0.24740396f, - 0.47942554f, - -0.47942554f, - 0.84147098f, - -0.84147098f, - 0.90929743f, - -0.90929743f, - -0.75680250f, - 0.75680250f}}), - Builder {} - .input({{11}, element::f32, std::vector {0.f, 0.25f, -0.25f, 0.5f, -0.5f, 1.f, -1.f, 2.f, -2.f, 4.f, -4.f}}) - .expected({{11}, element::f32, std::vector {0.00000000f, - 0.24740396f, - -0.24740396f, - 0.47942554f, - -0.47942554f, - 0.84147098f, - -0.84147098f, - 0.90929743f, - -0.90929743f, - -0.75680250f, - 0.75680250f}}), - Builder {} - .input({{7}, element::i32, std::vector {0, 1, -1, 2, -2, 4, -4}}) - .expected({{7}, element::i32, std::vector {0, 0, 0, 0, 0, 0, 0}}), - Builder {} - .input({{7}, element::i64, std::vector {0, 1, -1, 2, -2, 4, -4}}) - .expected({{7}, element::i64, std::vector {0, 0, 0, 0, 0, 0, 0}}), - Builder {} - .input({{4}, element::u32, std::vector {0, 1, 2, 4}}) - .expected({{4}, element::u32, std::vector {0, 0, 0, 0}}), - Builder {} - .input({{4}, element::u64, std::vector {0, 1, 2, 4}}) - .expected({{4}, element::u64, std::vector {0, 0, 0, 0}})), + Builder{} + .input({{11}, + element::f16, + std::vector{0.f, 0.25f, -0.25f, 0.5f, -0.5f, 1.f, -1.f, 2.f, -2.f, 4.f, -4.f}}) + .expected({{11}, + element::f16, + std::vector{0.00000000f, + 0.24740396f, + -0.24740396f, + 0.47942554f, + -0.47942554f, + 0.84147098f, + -0.84147098f, + 0.90929743f, + -0.90929743f, + -0.75680250f, + 0.75680250f}}), + Builder{} + .input({{11}, + element::f32, + std::vector{0.f, 0.25f, -0.25f, 0.5f, -0.5f, 1.f, -1.f, 2.f, -2.f, 4.f, -4.f}}) + .expected({{11}, + element::f32, + std::vector{0.00000000f, + 0.24740396f, + -0.24740396f, + 0.47942554f, + -0.47942554f, + 0.84147098f, + -0.84147098f, + 0.90929743f, + -0.90929743f, + -0.75680250f, + 0.75680250f}}), + Builder{} + .input({{7}, element::i32, std::vector{0, 1, -1, 2, -2, 4, -4}}) + .expected({{7}, element::i32, std::vector{0, 0, 0, 0, 0, 0, 0}}), + Builder{} + .input({{7}, element::i64, std::vector{0, 1, -1, 2, -2, 4, -4}}) + .expected({{7}, element::i64, std::vector{0, 0, 0, 0, 0, 0, 0}}), + Builder{} + .input({{4}, element::u32, std::vector{0, 1, 2, 4}}) + .expected({{4}, element::u32, std::vector{0, 0, 0, 0}}), + Builder{} + .input({{4}, element::u64, std::vector{0, 1, 2, 4}}) + .expected({{4}, element::u64, std::vector{0, 0, 0, 0}})), ReferenceSinLayerTest::getTestCaseName); } // namespace reference_tests diff --git a/src/plugins/template/tests/functional/op_reference/sinh.cpp b/src/plugins/template/tests/functional/op_reference/sinh.cpp index c93c6eb5c72..f966d08897d 100644 --- a/src/plugins/template/tests/functional/op_reference/sinh.cpp +++ b/src/plugins/template/tests/functional/op_reference/sinh.cpp @@ -2,9 +2,10 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/sinh.hpp" + #include -#include "openvino/op/sinh.hpp" #include "base_reference_test.hpp" using namespace ov; @@ -42,7 +43,7 @@ private: static std::shared_ptr CreateFunction(const Shape& shape, const element::Type& type) { const auto in = std::make_shared(type, shape); const auto Sinh = std::make_shared(in); - return std::make_shared(NodeVector {Sinh}, ParameterVector {in}); + return std::make_shared(NodeVector{Sinh}, ParameterVector{in}); } }; @@ -53,46 +54,55 @@ TEST_P(ReferenceSinhLayerTest, SinhWithHardcodedRefs) { } // namespace INSTANTIATE_TEST_SUITE_P( - smoke_Sinh_With_Hardcoded_Refs, ReferenceSinhLayerTest, + smoke_Sinh_With_Hardcoded_Refs, + ReferenceSinhLayerTest, ::testing::Values( - Builder {} - .input({{11}, element::f16, std::vector {-4.f, -2.f, -1.f, -0.5f, -0.25f, 0.f, 0.25f, 0.5f, 1.f, 2.f, 4.f}}) - .expected({{11}, element::f16, std::vector {-27.28991720f, - -3.62686041f, - -1.17520120f, - -0.52109531f, - -0.25261232f, - 0.00000000f, - 0.25261232f, - 0.52109531f, - 1.17520120f, - 3.62686041f, - 27.28991720f}}), - Builder {} - .input({{11}, element::f32, std::vector {-4.f, -2.f, -1.f, -0.5f, -0.25f, 0.f, 0.25f, 0.5f, 1.f, 2.f, 4.f}}) - .expected({{11}, element::f32, std::vector {-27.28991720f, - -3.62686041f, - -1.17520120f, - -0.52109531f, - -0.25261232f, - 0.00000000f, - 0.25261232f, - 0.52109531f, - 1.17520120f, - 3.62686041f, - 27.28991720f}}), - Builder {} - .input({{7}, element::i32, std::vector {-4, -2, -1, 0, 1, 2, 4}}) - .expected({{7}, element::i32, std::vector {-27, -4, -1, 0, 1, 4, 27}}), - Builder {} - .input({{7}, element::i64, std::vector {-4, -2, -1, 0, 1, 2, 4}}) - .expected({{7}, element::i64, std::vector {-27, -4, -1, 0, 1, 4, 27}}), - Builder {} - .input({{4}, element::u32, std::vector {0, 1, 2, 4}}) - .expected({{4}, element::u32, std::vector {0, 1, 4, 27}}), - Builder {} - .input({{4}, element::u64, std::vector {0, 1, 2, 4}}) - .expected({{4}, element::u64, std::vector {0, 1, 4, 27}})), + Builder{} + .input({{11}, + element::f16, + std::vector{-4.f, -2.f, -1.f, -0.5f, -0.25f, 0.f, 0.25f, 0.5f, 1.f, 2.f, 4.f}}) + .expected({{11}, + element::f16, + std::vector{-27.28991720f, + -3.62686041f, + -1.17520120f, + -0.52109531f, + -0.25261232f, + 0.00000000f, + 0.25261232f, + 0.52109531f, + 1.17520120f, + 3.62686041f, + 27.28991720f}}), + Builder{} + .input({{11}, + element::f32, + std::vector{-4.f, -2.f, -1.f, -0.5f, -0.25f, 0.f, 0.25f, 0.5f, 1.f, 2.f, 4.f}}) + .expected({{11}, + element::f32, + std::vector{-27.28991720f, + -3.62686041f, + -1.17520120f, + -0.52109531f, + -0.25261232f, + 0.00000000f, + 0.25261232f, + 0.52109531f, + 1.17520120f, + 3.62686041f, + 27.28991720f}}), + Builder{} + .input({{7}, element::i32, std::vector{-4, -2, -1, 0, 1, 2, 4}}) + .expected({{7}, element::i32, std::vector{-27, -4, -1, 0, 1, 4, 27}}), + Builder{} + .input({{7}, element::i64, std::vector{-4, -2, -1, 0, 1, 2, 4}}) + .expected({{7}, element::i64, std::vector{-27, -4, -1, 0, 1, 4, 27}}), + Builder{} + .input({{4}, element::u32, std::vector{0, 1, 2, 4}}) + .expected({{4}, element::u32, std::vector{0, 1, 4, 27}}), + Builder{} + .input({{4}, element::u64, std::vector{0, 1, 2, 4}}) + .expected({{4}, element::u64, std::vector{0, 1, 4, 27}})), ReferenceSinhLayerTest::getTestCaseName); } // namespace reference_tests diff --git a/src/plugins/template/tests/functional/op_reference/slice.cpp b/src/plugins/template/tests/functional/op_reference/slice.cpp index b709cd7f169..2fa64b2dd45 100644 --- a/src/plugins/template/tests/functional/op_reference/slice.cpp +++ b/src/plugins/template/tests/functional/op_reference/slice.cpp @@ -98,10 +98,10 @@ public: private: static std::shared_ptr CreateFunction(const reference_tests::Tensor& data, - const reference_tests::Tensor& start, - const reference_tests::Tensor& stop, - const reference_tests::Tensor& step, - const reference_tests::Tensor& axes) { + const reference_tests::Tensor& start, + const reference_tests::Tensor& stop, + const reference_tests::Tensor& step, + const reference_tests::Tensor& axes) { const auto data_param = std::make_shared(data.type, data.shape); const auto start_param = std::make_shared(start.type, start.shape); const auto stop_param = std::make_shared(stop.type, stop.shape); @@ -110,14 +110,14 @@ private: const auto slice = std::make_shared(data_param, start_param, stop_param, step_param, axes_param); return std::make_shared(NodeVector{slice}, - ParameterVector{data_param, start_param, stop_param, step_param, axes_param}); + ParameterVector{data_param, start_param, stop_param, step_param, axes_param}); } // Default `axes` input static std::shared_ptr CreateFunction(const reference_tests::Tensor& data, - const reference_tests::Tensor& start, - const reference_tests::Tensor& stop, - const reference_tests::Tensor& step) { + const reference_tests::Tensor& start, + const reference_tests::Tensor& stop, + const reference_tests::Tensor& step) { const auto data_param = std::make_shared(data.type, data.shape); const auto start_param = std::make_shared(start.type, start.shape); const auto stop_param = std::make_shared(stop.type, stop.shape); @@ -125,7 +125,7 @@ private: const auto slice = std::make_shared(data_param, start_param, stop_param, step_param); return std::make_shared(NodeVector{slice}, - ParameterVector{data_param, start_param, stop_param, step_param}); + ParameterVector{data_param, start_param, stop_param, step_param}); } }; @@ -234,10 +234,12 @@ std::vector generateSliceParamsUnsigned() { reference_tests::Tensor{{4}, IND_ET, std::vector{4, 2, 3, 2}}, reference_tests::Tensor{{4}, IND_ET, std::vector{1, 1, 1, 1}}, reference_tests::Tensor{{4}, AXIS_ET, std::vector{0, 1, 2, 3}}, - reference_tests::Tensor{{4, 2, 3, 2}, DATA_ET, std::vector{0, 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}}, + reference_tests::Tensor{ + {4, 2, 3, 2}, + DATA_ET, + std::vector{0, 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}}, "4D_full_axes"), SliceParams(Tensor{{4, 2, 3, 2}, DATA_ET, std::vector{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, @@ -246,10 +248,12 @@ std::vector generateSliceParamsUnsigned() { reference_tests::Tensor{{4}, IND_ET, std::vector{0, 0, 0, 0}}, reference_tests::Tensor{{4}, IND_ET, std::vector{4, 2, 3, 2}}, reference_tests::Tensor{{4}, IND_ET, std::vector{1, 1, 1, 1}}, - reference_tests::Tensor{{4, 2, 3, 2}, DATA_ET, std::vector{0, 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}}, + reference_tests::Tensor{ + {4, 2, 3, 2}, + DATA_ET, + std::vector{0, 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}}, "4D_default_axes"), SliceParams(Tensor{{4, 2, 3, 2}, DATA_ET, std::vector{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, @@ -259,8 +263,9 @@ std::vector generateSliceParamsUnsigned() { reference_tests::Tensor{{1}, IND_ET, std::vector{2}}, reference_tests::Tensor{{1}, IND_ET, std::vector{1}}, reference_tests::Tensor{{1}, AXIS_ET, std::vector{0}}, - reference_tests::Tensor{{2, 2, 3, 2}, DATA_ET, std::vector{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, - 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23}}, + reference_tests::Tensor{{2, 2, 3, 2}, DATA_ET, std::vector{0, 1, 2, 3, 4, 5, 6, 7, + 8, 9, 10, 11, 12, 13, 14, 15, + 16, 17, 18, 19, 20, 21, 22, 23}}, "4D_half_dim"), SliceParams(Tensor{{4, 2, 3, 2}, DATA_ET, std::vector{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, @@ -270,28 +275,31 @@ std::vector generateSliceParamsUnsigned() { reference_tests::Tensor{{1}, IND_ET, std::vector{4}}, reference_tests::Tensor{{1}, IND_ET, std::vector{2}}, reference_tests::Tensor{{1}, AXIS_ET, std::vector{0}}, - reference_tests::Tensor{{2, 2, 3, 2}, DATA_ET, std::vector{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, - 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35}}, + reference_tests::Tensor{{2, 2, 3, 2}, DATA_ET, std::vector{0, 1, 2, 3, 4, 5, 6, 7, + 8, 9, 10, 11, 24, 25, 26, 27, + 28, 29, 30, 31, 32, 33, 34, 35}}, "4D_half_dim_step"), SliceParams( - reference_tests::Tensor{{2, 4, 2, 2, 3}, - DATA_ET, - std::vector{0, 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, 72, 73, 74, 75, 76, 77, 78, 79, - 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95}}, + reference_tests::Tensor{ + {2, 4, 2, 2, 3}, + DATA_ET, + std::vector{0, 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, 72, 73, 74, 75, 76, 77, 78, 79, + 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95}}, reference_tests::Tensor{{5}, IND_ET, std::vector{0, 0, 0, 0, 0}}, reference_tests::Tensor{{5}, IND_ET, std::vector{2, 4, 2, 2, 3}}, reference_tests::Tensor{{5}, IND_ET, std::vector{1, 1, 1, 1, 1}}, reference_tests::Tensor{{5}, AXIS_ET, std::vector{0, 1, 2, 3, 4}}, - reference_tests::Tensor{{2, 2, 2, 1, 2}, - DATA_ET, - std::vector{0, 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, 72, 73, 74, 75, 76, 77, 78, 79, - 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95}}, + reference_tests::Tensor{ + {2, 2, 2, 1, 2}, + DATA_ET, + std::vector{0, 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, 72, 73, 74, 75, 76, 77, 78, 79, + 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95}}, "5D_full_axes"), }; return test_params; @@ -361,23 +369,25 @@ std::vector generateSliceParams() { 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47}}, reference_tests::Tensor{{4}, - IND_ET, - std::vector{std::numeric_limits::min(), - std::numeric_limits::max(), - std::numeric_limits::max(), - std::numeric_limits::min()}}, + IND_ET, + std::vector{std::numeric_limits::min(), + std::numeric_limits::max(), + std::numeric_limits::max(), + std::numeric_limits::min()}}, reference_tests::Tensor{{4}, - IND_ET, - std::vector{std::numeric_limits::max(), - std::numeric_limits::min(), - std::numeric_limits::min(), - std::numeric_limits::max()}}, + IND_ET, + std::vector{std::numeric_limits::max(), + std::numeric_limits::min(), + std::numeric_limits::min(), + std::numeric_limits::max()}}, reference_tests::Tensor{{4}, IND_ET, std::vector{1, -1, -1, 1}}, reference_tests::Tensor{{4}, AXIS_ET, std::vector{0, 1, 2, 3}}, - reference_tests::Tensor{{4, 2, 3, 2}, DATA_ET, std::vector{10, 11, 8, 9, 6, 7, 4, 5, 2, 3, 0, 1, - 22, 23, 20, 21, 18, 19, 16, 17, 14, 15, 12, 13, - 34, 35, 32, 33, 30, 31, 28, 29, 26, 27, 24, 25, - 46, 47, 44, 45, 42, 43, 40, 41, 38, 39, 36, 37}}, + reference_tests::Tensor{ + {4, 2, 3, 2}, + DATA_ET, + std::vector{10, 11, 8, 9, 6, 7, 4, 5, 2, 3, 0, 1, 22, 23, 20, 21, + 18, 19, 16, 17, 14, 15, 12, 13, 34, 35, 32, 33, 30, 31, 28, 29, + 26, 27, 24, 25, 46, 47, 44, 45, 42, 43, 40, 41, 38, 39, 36, 37}}, "4D_INT_MIN_MAX_index"), SliceParams(Tensor{{4, 2, 3, 2}, DATA_ET, std::vector{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, @@ -387,24 +397,27 @@ std::vector generateSliceParams() { reference_tests::Tensor{{2}, IND_ET, std::vector{-100, 100}}, reference_tests::Tensor{{2}, IND_ET, std::vector{-1, 2}}, reference_tests::Tensor{{2}, AXIS_ET, std::vector{2, 0}}, - reference_tests::Tensor{{2, 2, 3, 2}, DATA_ET, std::vector{4, 5, 2, 3, 0, 1, 10, 11, 8, 9, 6, 7, - 28, 29, 26, 27, 24, 25, 34, 35, 32, 33, 30, 31}}, + reference_tests::Tensor{{2, 2, 3, 2}, DATA_ET, std::vector{4, 5, 2, 3, 0, 1, 10, 11, + 8, 9, 6, 7, 28, 29, 26, 27, + 24, 25, 34, 35, 32, 33, 30, 31}}, "4D_mixed"), SliceParams( - reference_tests::Tensor{{2, 4, 2, 2, 3}, - DATA_ET, - std::vector{0, 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, 72, 73, 74, 75, 76, 77, 78, 79, - 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95}}, + reference_tests::Tensor{ + {2, 4, 2, 2, 3}, + DATA_ET, + std::vector{0, 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, 72, 73, 74, 75, 76, 77, 78, 79, + 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95}}, reference_tests::Tensor{{5}, IND_ET, std::vector{0, 1, -5, 100, 1}}, reference_tests::Tensor{{5}, IND_ET, std::vector{2, 6, 3, -100, 2}}, reference_tests::Tensor{{5}, IND_ET, std::vector{1, 2, 2, -1, 1}}, reference_tests::Tensor{{5}, AXIS_ET, std::vector{-5, 1, 4, 2, 3}}, - reference_tests::Tensor{{2, 2, 2, 1, 2}, - DATA_ET, - std::vector{21, 23, 15, 17, 45, 47, 39, 41, 69, 71, 63, 65, 93, 95, 87, 89}}, + reference_tests::Tensor{ + {2, 2, 2, 1, 2}, + DATA_ET, + std::vector{21, 23, 15, 17, 45, 47, 39, 41, 69, 71, 63, 65, 93, 95, 87, 89}}, "5D_mixed"), }; const auto& unsigned_test_params = generateSliceParamsUnsigned(); diff --git a/src/plugins/template/tests/functional/op_reference/softmax.cpp b/src/plugins/template/tests/functional/op_reference/softmax.cpp index 3e002d50e45..4bbd1191548 100644 --- a/src/plugins/template/tests/functional/op_reference/softmax.cpp +++ b/src/plugins/template/tests/functional/op_reference/softmax.cpp @@ -2,23 +2,28 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/softmax.hpp" + #include -#include "openvino/op/softmax.hpp" #include "base_reference_test.hpp" using namespace reference_tests; using namespace ov; #ifdef _MSC_VER -# pragma warning(disable : 4756) -#endif +# pragma warning(disable : 4756) +#endif namespace { struct SoftmaxParams { template - SoftmaxParams(const ov::PartialShape& shape, const ov::element::Type& iType, const std::vector& iValues, const std::vector& oValues, - const int64_t axis, const std::string& test_name) + SoftmaxParams(const ov::PartialShape& shape, + const ov::element::Type& iType, + const std::vector& iValues, + const std::vector& oValues, + const int64_t axis, + const std::string& test_name) : axis(axis), pshape(shape), inType(iType), @@ -61,11 +66,13 @@ public: } private: - static std::shared_ptr CreateFunction(const PartialShape& input_shape, const element::Type& input_type, - const element::Type& expected_output_type, const int64_t axis) { + static std::shared_ptr CreateFunction(const PartialShape& input_shape, + const element::Type& input_type, + const element::Type& expected_output_type, + const int64_t axis) { const auto in = std::make_shared(input_type, input_shape); const auto Softmax = std::make_shared(in, axis); - return std::make_shared(NodeVector {Softmax}, ParameterVector {in}); + return std::make_shared(NodeVector{Softmax}, ParameterVector{in}); } }; @@ -102,85 +109,83 @@ std::vector generateSoftmaxFloatParams() { auto d1_of = expf(1) + expf(4); auto d2_of = expf(2) + expf(5); - std::vector softmaxParams { - SoftmaxParams(ov::PartialShape {2, 2, 3}, - IN_ET, - std::vector{-10, -20, -30, -40, -50, -60, -1, -2, -3, -4, -5, -6}, - std::vector{expf(-10) / d0, - expf(-20) / d1, - expf(-30) / d2, - expf(-40) / d3, - expf(-50) / d4, - expf(-60) / d5, - expf(-1) / d0, - expf(-2) / d1, - expf(-3) / d2, - expf(-4) / d3, - expf(-5) / d4, - expf(-6) / d5}, - 0, - ""), - SoftmaxParams(ov::PartialShape {2, 3}, - IN_ET, - std::vector{-10, -20, -30, -40, -50, -60}, - std::vector{expf(-10) / d0_a1, - expf(-20) / d0_a1, - expf(-30) / d0_a1, - expf(-40) / d1_a1, - expf(-50) / d1_a1, - expf(-60) / d1_a1}, - 1, - ""), - SoftmaxParams(ov::PartialShape {2, 3}, - IN_ET, - std::vector{-10, -20, -30, -40, -50, -60}, - std::vector{expf(-10) / d0_a0, - expf(-20) / d1_a0, - expf(-30) / d2_a0, - expf(-40) / d0_a0, - expf(-50) / d1_a0, - expf(-60) / d2_a0}, - 0, - "test"), - SoftmaxParams(ov::PartialShape {1, 2, 3}, - IN_ET, - std::vector{-10, -20, -30, -40, -50, -60}, - std::vector{1, 1, 1, 1, 1, 1}, - 0, - "trivial"), - SoftmaxParams(ov::PartialShape {2, 3}, - IN_ET, - std::vector{low, 1, 2, 3, 4, 5}, - std::vector{expf(low) / d0_uf, - expf(1) / d1_uf, - expf(2) / d2_uf, - expf(3) / d0_uf, - expf(4) / d1_uf, - expf(5) / d2_uf}, - 0, - "underflow"), - SoftmaxParams(ov::PartialShape {2, 3}, - IN_ET, - std::vector{high, 1, 2, 3, 4, 5}, - std::vector{expf(high - high) / d0_of, - expf(1) / d1_of, - expf(2) / d2_of, - expf(3 - high) / d0_of, - expf(4) / d1_of, - expf(5) / d2_of}, - 0, - "overflow") - }; + std::vector softmaxParams{ + SoftmaxParams(ov::PartialShape{2, 2, 3}, + IN_ET, + std::vector{-10, -20, -30, -40, -50, -60, -1, -2, -3, -4, -5, -6}, + std::vector{expf(-10) / d0, + expf(-20) / d1, + expf(-30) / d2, + expf(-40) / d3, + expf(-50) / d4, + expf(-60) / d5, + expf(-1) / d0, + expf(-2) / d1, + expf(-3) / d2, + expf(-4) / d3, + expf(-5) / d4, + expf(-6) / d5}, + 0, + ""), + SoftmaxParams(ov::PartialShape{2, 3}, + IN_ET, + std::vector{-10, -20, -30, -40, -50, -60}, + std::vector{expf(-10) / d0_a1, + expf(-20) / d0_a1, + expf(-30) / d0_a1, + expf(-40) / d1_a1, + expf(-50) / d1_a1, + expf(-60) / d1_a1}, + 1, + ""), + SoftmaxParams(ov::PartialShape{2, 3}, + IN_ET, + std::vector{-10, -20, -30, -40, -50, -60}, + std::vector{expf(-10) / d0_a0, + expf(-20) / d1_a0, + expf(-30) / d2_a0, + expf(-40) / d0_a0, + expf(-50) / d1_a0, + expf(-60) / d2_a0}, + 0, + "test"), + SoftmaxParams(ov::PartialShape{1, 2, 3}, + IN_ET, + std::vector{-10, -20, -30, -40, -50, -60}, + std::vector{1, 1, 1, 1, 1, 1}, + 0, + "trivial"), + SoftmaxParams(ov::PartialShape{2, 3}, + IN_ET, + std::vector{low, 1, 2, 3, 4, 5}, + std::vector{expf(low) / d0_uf, + expf(1) / d1_uf, + expf(2) / d2_uf, + expf(3) / d0_uf, + expf(4) / d1_uf, + expf(5) / d2_uf}, + 0, + "underflow"), + SoftmaxParams(ov::PartialShape{2, 3}, + IN_ET, + std::vector{high, 1, 2, 3, 4, 5}, + std::vector{expf(high - high) / d0_of, + expf(1) / d1_of, + expf(2) / d2_of, + expf(3 - high) / d0_of, + expf(4) / d1_of, + expf(5) / d2_of}, + 0, + "overflow")}; return softmaxParams; } std::vector generateSoftmaxCombinedParams() { - const std::vector> softmaxTypeParams { + const std::vector> softmaxTypeParams{ generateSoftmaxFloatParams(), generateSoftmaxFloatParams(), generateSoftmaxFloatParams(), - generateSoftmaxFloatParams() - }; + generateSoftmaxFloatParams()}; std::vector combinedParams; for (const auto& params : softmaxTypeParams) { @@ -189,7 +194,9 @@ std::vector generateSoftmaxCombinedParams() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_Softmax_With_Hardcoded_Refs, ReferenceSoftmaxLayerTest, - testing::ValuesIn(generateSoftmaxCombinedParams()), ReferenceSoftmaxLayerTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_Softmax_With_Hardcoded_Refs, + ReferenceSoftmaxLayerTest, + testing::ValuesIn(generateSoftmaxCombinedParams()), + ReferenceSoftmaxLayerTest::getTestCaseName); -} // namespace +} // namespace diff --git a/src/plugins/template/tests/functional/op_reference/softplus.cpp b/src/plugins/template/tests/functional/op_reference/softplus.cpp index 3530ed71ff8..1d0e18accb9 100644 --- a/src/plugins/template/tests/functional/op_reference/softplus.cpp +++ b/src/plugins/template/tests/functional/op_reference/softplus.cpp @@ -2,9 +2,10 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/softplus.hpp" + #include -#include "openvino/op/softplus.hpp" #include "base_reference_test.hpp" using namespace reference_tests; @@ -13,7 +14,10 @@ using namespace ov; namespace { struct SoftPlusParams { template - SoftPlusParams(const ov::PartialShape& shape, const ov::element::Type& iType, const std::vector& iValues, const std::vector& oValues) + SoftPlusParams(const ov::PartialShape& shape, + const ov::element::Type& iType, + const std::vector& iValues, + const std::vector& oValues) : pshape(shape), inType(iType), outType(iType), @@ -45,11 +49,12 @@ public: } private: - static std::shared_ptr CreateFunction(const PartialShape& input_shape, const element::Type& input_type, - const element::Type& SoftPlusected_output_type) { + static std::shared_ptr CreateFunction(const PartialShape& input_shape, + const element::Type& input_type, + const element::Type& SoftPlusected_output_type) { const auto in = std::make_shared(input_type, input_shape); const auto SoftPlus = std::make_shared(in); - return std::make_shared(NodeVector {SoftPlus}, ParameterVector {in}); + return std::make_shared(NodeVector{SoftPlus}, ParameterVector{in}); } }; @@ -61,21 +66,18 @@ template std::vector generateSoftPlusFloatParams() { using T = typename element_type_traits::value_type; - std::vector softPlusParams { - SoftPlusParams(ov::PartialShape {4}, - IN_ET, - std::vector{-1.0, 0.0, 1.0, 20.0}, - std::vector{0.31326166, 0.69314718, 1.3132616, 20.0}) - }; + std::vector softPlusParams{SoftPlusParams(ov::PartialShape{4}, + IN_ET, + std::vector{-1.0, 0.0, 1.0, 20.0}, + std::vector{0.31326166, 0.69314718, 1.3132616, 20.0})}; return softPlusParams; } std::vector generateSoftPlusCombinedParams() { - const std::vector> softPlusTypeParams { + const std::vector> softPlusTypeParams{ generateSoftPlusFloatParams(), generateSoftPlusFloatParams(), - generateSoftPlusFloatParams() - }; + generateSoftPlusFloatParams()}; std::vector combinedParams; for (const auto& params : softPlusTypeParams) { @@ -84,7 +86,9 @@ std::vector generateSoftPlusCombinedParams() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_SoftPlus_With_Hardcoded_Refs, ReferenceSoftPlusLayerTest, - testing::ValuesIn(generateSoftPlusCombinedParams()), ReferenceSoftPlusLayerTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_SoftPlus_With_Hardcoded_Refs, + ReferenceSoftPlusLayerTest, + testing::ValuesIn(generateSoftPlusCombinedParams()), + ReferenceSoftPlusLayerTest::getTestCaseName); -} // namespace +} // namespace diff --git a/src/plugins/template/tests/functional/op_reference/softsign.cpp b/src/plugins/template/tests/functional/op_reference/softsign.cpp index 6664bcf19d6..299c108956c 100644 --- a/src/plugins/template/tests/functional/op_reference/softsign.cpp +++ b/src/plugins/template/tests/functional/op_reference/softsign.cpp @@ -2,9 +2,10 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/softsign.hpp" + #include -#include "openvino/op/softsign.hpp" #include "base_reference_test.hpp" using namespace reference_tests; @@ -13,7 +14,10 @@ using namespace ov; namespace { struct SoftSignParams { template - SoftSignParams(const ov::PartialShape& shape, const ov::element::Type& iType, const std::vector& iValues, const std::vector& oValues) + SoftSignParams(const ov::PartialShape& shape, + const ov::element::Type& iType, + const std::vector& iValues, + const std::vector& oValues) : pshape(shape), inType(iType), outType(iType), @@ -45,11 +49,12 @@ public: } private: - static std::shared_ptr CreateFunction(const PartialShape& input_shape, const element::Type& input_type, - const element::Type& SoftSign_output_type) { + static std::shared_ptr CreateFunction(const PartialShape& input_shape, + const element::Type& input_type, + const element::Type& SoftSign_output_type) { const auto in = std::make_shared(input_type, input_shape); const auto SoftSign = std::make_shared(in); - return std::make_shared(NodeVector {SoftSign}, ParameterVector {in}); + return std::make_shared(NodeVector{SoftSign}, ParameterVector{in}); } }; @@ -61,21 +66,18 @@ template std::vector generateSoftSignFloatParams() { using T = typename element_type_traits::value_type; - std::vector ParamsVector { - SoftSignParams(ov::PartialShape {4}, - IN_ET, - std::vector{-1.0, 0.0, 1.0, 15.0}, - std::vector{-0.5, 0.0, 0.5, 0.9375}) - }; + std::vector ParamsVector{SoftSignParams(ov::PartialShape{4}, + IN_ET, + std::vector{-1.0, 0.0, 1.0, 15.0}, + std::vector{-0.5, 0.0, 0.5, 0.9375})}; return ParamsVector; } std::vector generateSoftSignCombinedParams() { - const std::vector> SoftSignTypeParams { + const std::vector> SoftSignTypeParams{ generateSoftSignFloatParams(), generateSoftSignFloatParams(), - generateSoftSignFloatParams() - }; + generateSoftSignFloatParams()}; std::vector combinedParams; for (const auto& params : SoftSignTypeParams) { @@ -84,7 +86,9 @@ std::vector generateSoftSignCombinedParams() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_SoftSign_With_Hardcoded_Refs, ReferenceSoftSignLayerTest, - testing::ValuesIn(generateSoftSignCombinedParams()), ReferenceSoftSignLayerTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_SoftSign_With_Hardcoded_Refs, + ReferenceSoftSignLayerTest, + testing::ValuesIn(generateSoftSignCombinedParams()), + ReferenceSoftSignLayerTest::getTestCaseName); -} // namespace +} // namespace diff --git a/src/plugins/template/tests/functional/op_reference/space_to_batch.cpp b/src/plugins/template/tests/functional/op_reference/space_to_batch.cpp index cbfe36d6963..39cadfe8956 100644 --- a/src/plugins/template/tests/functional/op_reference/space_to_batch.cpp +++ b/src/plugins/template/tests/functional/op_reference/space_to_batch.cpp @@ -4,22 +4,28 @@ #include +#include "base_reference_test.hpp" +#include "openvino/op/constant.hpp" #include "openvino/opsets/opset1.hpp" #include "openvino/opsets/opset2.hpp" -#include "openvino/op/constant.hpp" -#include "base_reference_test.hpp" using namespace reference_tests; using namespace ov; namespace { struct SpaceToBatchParams { - SpaceToBatchParams(const reference_tests::Tensor& dataTensor, const reference_tests::Tensor& blockShapeTensor, - const reference_tests::Tensor& padsBeginTensor, const reference_tests::Tensor& padsEndTensor, - const reference_tests::Tensor& expectedTensor, const std::string& testcaseName = "") : - dataTensor(dataTensor), blockShapeTensor(blockShapeTensor), - padsBeginTensor(padsBeginTensor), padsEndTensor(padsEndTensor), - expectedTensor(expectedTensor), testcaseName(testcaseName) {} + SpaceToBatchParams(const reference_tests::Tensor& dataTensor, + const reference_tests::Tensor& blockShapeTensor, + const reference_tests::Tensor& padsBeginTensor, + const reference_tests::Tensor& padsEndTensor, + const reference_tests::Tensor& expectedTensor, + const std::string& testcaseName = "") + : dataTensor(dataTensor), + blockShapeTensor(blockShapeTensor), + padsBeginTensor(padsBeginTensor), + padsEndTensor(padsEndTensor), + expectedTensor(expectedTensor), + testcaseName(testcaseName) {} reference_tests::Tensor dataTensor; reference_tests::Tensor blockShapeTensor; @@ -81,55 +87,51 @@ TEST_P(ReferenceSpaceToBatchLayerTest, CompareWithRefs) { template std::vector generateParams() { using T = typename element_type_traits::value_type; - std::vector batchToSpaceParams { + std::vector batchToSpaceParams{ // space_to_batch_3D - SpaceToBatchParams( - reference_tests::Tensor({1, 2, 2}, IN_ET, std::vector{1, 1, 1, 1}), - reference_tests::Tensor({3}, element::i64, std::vector{1, 1, 1}), - reference_tests::Tensor({3}, element::i64, std::vector{0, 0, 0}), - reference_tests::Tensor({3}, element::i64, std::vector{0, 0, 0}), - reference_tests::Tensor({1, 2, 2}, IN_ET, std::vector{1, 1, 1, 1}), - "space_to_batch_4D"), + SpaceToBatchParams(reference_tests::Tensor({1, 2, 2}, IN_ET, std::vector{1, 1, 1, 1}), + reference_tests::Tensor({3}, element::i64, std::vector{1, 1, 1}), + reference_tests::Tensor({3}, element::i64, std::vector{0, 0, 0}), + reference_tests::Tensor({3}, element::i64, std::vector{0, 0, 0}), + reference_tests::Tensor({1, 2, 2}, IN_ET, std::vector{1, 1, 1, 1}), + "space_to_batch_4D"), // space_to_batch_4D - SpaceToBatchParams( - reference_tests::Tensor({1, 1, 2, 2}, IN_ET, std::vector{1, 1, 1, 1}), - reference_tests::Tensor({4}, element::i64, std::vector{1, 1, 1, 1}), - reference_tests::Tensor({4}, element::i64, std::vector{0, 0, 0, 0}), - reference_tests::Tensor({4}, element::i64, std::vector{0, 0, 0, 0}), - reference_tests::Tensor({1, 1, 2, 2}, IN_ET, std::vector{1, 1, 1, 1}), - "space_to_batch_4D"), + SpaceToBatchParams(reference_tests::Tensor({1, 1, 2, 2}, IN_ET, std::vector{1, 1, 1, 1}), + reference_tests::Tensor({4}, element::i64, std::vector{1, 1, 1, 1}), + reference_tests::Tensor({4}, element::i64, std::vector{0, 0, 0, 0}), + reference_tests::Tensor({4}, element::i64, std::vector{0, 0, 0, 0}), + reference_tests::Tensor({1, 1, 2, 2}, IN_ET, std::vector{1, 1, 1, 1}), + "space_to_batch_4D"), // space_to_batch_5D - SpaceToBatchParams( - reference_tests::Tensor({1, 1, 3, 2, 1}, IN_ET, std::vector{1, 1, 1, 1, 1, 1}), - reference_tests::Tensor({5}, element::i64, std::vector{1, 1, 3, 2, 2}), - reference_tests::Tensor({5}, element::i64, std::vector{0, 0, 1, 0, 3}), - reference_tests::Tensor({5}, element::i64, std::vector{0, 0, 2, 0, 0}), - reference_tests::Tensor({12, 1, 2, 1, 2}, IN_ET, std::vector{ - 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, - 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0}), - "space_to_batch_5D"), + SpaceToBatchParams(reference_tests::Tensor({1, 1, 3, 2, 1}, IN_ET, std::vector{1, 1, 1, 1, 1, 1}), + reference_tests::Tensor({5}, element::i64, std::vector{1, 1, 3, 2, 2}), + reference_tests::Tensor({5}, element::i64, std::vector{0, 0, 1, 0, 3}), + reference_tests::Tensor({5}, element::i64, std::vector{0, 0, 2, 0, 0}), + reference_tests::Tensor( + {12, 1, 2, 1, 2}, + IN_ET, + std::vector{0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0}), + "space_to_batch_5D"), // space_to_batch_4x4 - SpaceToBatchParams( - reference_tests::Tensor({1, 1, 4, 4}, IN_ET, std::vector{ - 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1}), - reference_tests::Tensor({4}, element::i64, std::vector{1, 1, 1, 1}), - reference_tests::Tensor({4}, element::i64, std::vector{0, 0, 1, 0}), - reference_tests::Tensor({4}, element::i64, std::vector{0, 0, 0, 0}), - reference_tests::Tensor({1, 1, 5, 4}, IN_ET, std::vector{ - 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, - 0, 0, 0, 0, 1, 0, 0, 0, 0, 1}), - "space_to_batch_4x4"), + SpaceToBatchParams(reference_tests::Tensor({1, 1, 4, 4}, + IN_ET, + std::vector{1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1}), + reference_tests::Tensor({4}, element::i64, std::vector{1, 1, 1, 1}), + reference_tests::Tensor({4}, element::i64, std::vector{0, 0, 1, 0}), + reference_tests::Tensor({4}, element::i64, std::vector{0, 0, 0, 0}), + reference_tests::Tensor({1, 1, 5, 4}, IN_ET, std::vector{0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + 0, 0, 0, 0, 1, 0, 0, 0, 0, 1}), + "space_to_batch_4x4"), }; return batchToSpaceParams; } std::vector generateCombinedParams() { - const std::vector> batchToSpaceTypeParams { + const std::vector> batchToSpaceTypeParams{ generateParams(), generateParams(), generateParams(), @@ -151,6 +153,8 @@ std::vector generateCombinedParams() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_SpaceToBatch_With_Hardcoded_Refs, ReferenceSpaceToBatchLayerTest, - testing::ValuesIn(generateCombinedParams()), ReferenceSpaceToBatchLayerTest::getTestCaseName); -} // namespace +INSTANTIATE_TEST_SUITE_P(smoke_SpaceToBatch_With_Hardcoded_Refs, + ReferenceSpaceToBatchLayerTest, + testing::ValuesIn(generateCombinedParams()), + ReferenceSpaceToBatchLayerTest::getTestCaseName); +} // namespace diff --git a/src/plugins/template/tests/functional/op_reference/space_to_depth.cpp b/src/plugins/template/tests/functional/op_reference/space_to_depth.cpp index ef325b7dd93..7420376f802 100644 --- a/src/plugins/template/tests/functional/op_reference/space_to_depth.cpp +++ b/src/plugins/template/tests/functional/op_reference/space_to_depth.cpp @@ -4,18 +4,24 @@ #include -#include "openvino/opsets/opset1.hpp" #include "base_reference_test.hpp" +#include "openvino/opsets/opset1.hpp" using namespace reference_tests; using namespace ov; namespace { struct SpaceToDepthParams { - SpaceToDepthParams(const reference_tests::Tensor& dataTensor, const std::string mode, const int32_t blockSize, - const reference_tests::Tensor& expectedTensor, const std::string& testcaseName = "") : - dataTensor(dataTensor), mode(mode), blockSize(blockSize), expectedTensor(expectedTensor), - testcaseName(testcaseName) {} + SpaceToDepthParams(const reference_tests::Tensor& dataTensor, + const std::string mode, + const int32_t blockSize, + const reference_tests::Tensor& expectedTensor, + const std::string& testcaseName = "") + : dataTensor(dataTensor), + mode(mode), + blockSize(blockSize), + expectedTensor(expectedTensor), + testcaseName(testcaseName) {} reference_tests::Tensor dataTensor; std::string mode; @@ -50,11 +56,12 @@ public: private: static std::shared_ptr CreateFunction(const SpaceToDepthParams& params) { - opset1::SpaceToDepth::SpaceToDepthMode mode = params.mode == "DEPTH_FIRST" ? - opset1::SpaceToDepth::SpaceToDepthMode::DEPTH_FIRST : opset1::SpaceToDepth::SpaceToDepthMode::BLOCKS_FIRST; + opset1::SpaceToDepth::SpaceToDepthMode mode = params.mode == "DEPTH_FIRST" + ? opset1::SpaceToDepth::SpaceToDepthMode::DEPTH_FIRST + : opset1::SpaceToDepth::SpaceToDepthMode::BLOCKS_FIRST; const auto data = std::make_shared(params.dataTensor.type, params.dataTensor.shape); const auto SpaceToDepth = std::make_shared(data, mode, params.blockSize); - return std::make_shared(NodeVector {SpaceToDepth}, ParameterVector {data}); + return std::make_shared(NodeVector{SpaceToDepth}, ParameterVector{data}); } }; @@ -65,84 +72,80 @@ TEST_P(ReferenceSpaceToDepthLayerTest, CompareWithRefs) { template std::vector generateParams() { using T = typename element_type_traits::value_type; - std::vector params { + std::vector params{ // space_to_depth_block_first_K2_BS2 SpaceToDepthParams( - reference_tests::Tensor({1, 2, 4, 4}, IN_ET, std::vector{ - 0, 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}), + reference_tests::Tensor({1, 2, 4, 4}, IN_ET, std::vector{0, 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}), "BLOCKS_FIRST", 2, - reference_tests::Tensor({1, 8, 2, 2}, IN_ET, std::vector{ - 0, 2, 8, 10, 16, 18, 24, 26, 1, 3, 9, 11, 17, 19, 25, 27, - 4, 6, 12, 14, 20, 22, 28, 30, 5, 7, 13, 15, 21, 23, 29, 31}), + reference_tests::Tensor({1, 8, 2, 2}, IN_ET, std::vector{0, 2, 8, 10, 16, 18, 24, 26, 1, 3, 9, + 11, 17, 19, 25, 27, 4, 6, 12, 14, 20, 22, + 28, 30, 5, 7, 13, 15, 21, 23, 29, 31}), "space_to_depth_block_first_K2_BS2"), // space_to_depth_block_first_K2_BS3 SpaceToDepthParams( - reference_tests::Tensor({1, 2, 6, 3}, IN_ET, std::vector{ - 0, 4, 8, 12, 16, 20, 24, 28, 32, 1, 5, 9, - 13, 17, 21, 25, 29, 33, 2, 6, 10, 14, 18, 22, - 26, 30, 34, 3, 7, 11, 15, 19, 23, 27, 31, 35}), + reference_tests::Tensor({1, 2, 6, 3}, + IN_ET, + std::vector{0, 4, 8, 12, 16, 20, 24, 28, 32, 1, 5, 9, 13, 17, 21, 25, 29, 33, + 2, 6, 10, 14, 18, 22, 26, 30, 34, 3, 7, 11, 15, 19, 23, 27, 31, 35}), "BLOCKS_FIRST", 3, - reference_tests::Tensor({1, 18, 2, 1}, IN_ET, std::vector{ - 0, 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}), + reference_tests::Tensor({1, 18, 2, 1}, IN_ET, std::vector{0, 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}), "space_to_depth_block_first_K2_BS3"), // space_to_depth_block_first_K1_BS3 SpaceToDepthParams( - reference_tests::Tensor({1, 2, 6}, IN_ET, std::vector{ - 0, 4, 8, 1, 5, 9, 2, 6, 10, 3, 7, 11}), + reference_tests::Tensor({1, 2, 6}, IN_ET, std::vector{0, 4, 8, 1, 5, 9, 2, 6, 10, 3, 7, 11}), "BLOCKS_FIRST", 3, - reference_tests::Tensor({1, 6, 2}, IN_ET, std::vector{ - 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11}), + reference_tests::Tensor({1, 6, 2}, IN_ET, std::vector{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11}), "space_to_depth_block_first_K1_BS3"), // space_to_depth_depth_first_K2_BS2 SpaceToDepthParams( - reference_tests::Tensor({1, 2, 4, 4}, IN_ET, std::vector{ - 0, 16, 2, 18, 1, 17, 3, 19, 8, 24, 10, - 26, 9, 25, 11, 27, 4, 20, 6, 22, 5, 21, - 7, 23, 12, 28, 14, 30, 13, 29, 15, 31}), + reference_tests::Tensor({1, 2, 4, 4}, IN_ET, std::vector{0, 16, 2, 18, 1, 17, 3, 19, 8, 24, 10, + 26, 9, 25, 11, 27, 4, 20, 6, 22, 5, 21, + 7, 23, 12, 28, 14, 30, 13, 29, 15, 31}), "DEPTH_FIRST", 2, - reference_tests::Tensor({1, 8, 2, 2}, IN_ET, std::vector{ - 0, 2, 8, 10, 16, 18, 24, 26, 1, 3, 9, 11, 17, 19, 25, 27, - 4, 6, 12, 14, 20, 22, 28, 30, 5, 7, 13, 15, 21, 23, 29, 31}), + reference_tests::Tensor({1, 8, 2, 2}, IN_ET, std::vector{0, 2, 8, 10, 16, 18, 24, 26, 1, 3, 9, + 11, 17, 19, 25, 27, 4, 6, 12, 14, 20, 22, + 28, 30, 5, 7, 13, 15, 21, 23, 29, 31}), "space_to_depth_depth_first_K2_BS2"), // space_to_depth_depth_first_K2_BS3 SpaceToDepthParams( - reference_tests::Tensor({1, 2, 6, 3}, IN_ET, std::vector{ - 0, 2, 4, 6, 8, 10, 12, 14, 16, 1, 3, 5, - 7, 9, 11, 13, 15, 17, 18, 20, 22, 24, 26, 28, - 30, 32, 34, 19, 21, 23, 25, 27, 29, 31, 33, 35}), + reference_tests::Tensor({1, 2, 6, 3}, IN_ET, std::vector{0, 2, 4, 6, 8, 10, 12, 14, 16, + 1, 3, 5, 7, 9, 11, 13, 15, 17, + 18, 20, 22, 24, 26, 28, 30, 32, 34, + 19, 21, 23, 25, 27, 29, 31, 33, 35}), "DEPTH_FIRST", 3, - reference_tests::Tensor({1, 18, 2, 1}, IN_ET, std::vector{ - 0, 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}), + reference_tests::Tensor({1, 18, 2, 1}, IN_ET, std::vector{0, 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}), "space_to_depth_depth_first_K2_BS3"), // space_to_depth_depth_first_K1_BS3 SpaceToDepthParams( - reference_tests::Tensor({1, 2, 6}, IN_ET, std::vector{ - 0, 2, 4, 1, 3, 5, 6, 8, 10, 7, 9, 11}), + reference_tests::Tensor({1, 2, 6}, IN_ET, std::vector{0, 2, 4, 1, 3, 5, 6, 8, 10, 7, 9, 11}), "DEPTH_FIRST", 3, - reference_tests::Tensor({1, 6, 2}, IN_ET, std::vector{ - 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11}), + reference_tests::Tensor({1, 6, 2}, IN_ET, std::vector{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11}), "space_to_depth_depth_first_K1_BS3"), }; return params; } std::vector generateCombinedParams() { - const std::vector> generatedParams { + const std::vector> generatedParams{ generateParams(), generateParams(), generateParams(), @@ -164,6 +167,8 @@ std::vector generateCombinedParams() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_SpaceToDepth_With_Hardcoded_Refs, ReferenceSpaceToDepthLayerTest, - testing::ValuesIn(generateCombinedParams()), ReferenceSpaceToDepthLayerTest::getTestCaseName); -} // namespace +INSTANTIATE_TEST_SUITE_P(smoke_SpaceToDepth_With_Hardcoded_Refs, + ReferenceSpaceToDepthLayerTest, + testing::ValuesIn(generateCombinedParams()), + ReferenceSpaceToDepthLayerTest::getTestCaseName); +} // namespace diff --git a/src/plugins/template/tests/functional/op_reference/split.cpp b/src/plugins/template/tests/functional/op_reference/split.cpp index f360159b643..cba426f33a2 100644 --- a/src/plugins/template/tests/functional/op_reference/split.cpp +++ b/src/plugins/template/tests/functional/op_reference/split.cpp @@ -2,21 +2,28 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/split.hpp" + #include -#include "openvino/op/split.hpp" -#include "openvino/op/constant.hpp" #include "base_reference_test.hpp" +#include "openvino/op/constant.hpp" using namespace reference_tests; using namespace ov; namespace { struct SplitParams { - SplitParams(const reference_tests::Tensor& dataTensor, const reference_tests::Tensor& axisTensor, const size_t numSplits, - const std::vector& expectedTensors, const std::string& testcaseName = "") : - dataTensor(dataTensor), axisTensor(axisTensor), numSplits(numSplits), - expectedTensors(expectedTensors), testcaseName(testcaseName) {} + SplitParams(const reference_tests::Tensor& dataTensor, + const reference_tests::Tensor& axisTensor, + const size_t numSplits, + const std::vector& expectedTensors, + const std::string& testcaseName = "") + : dataTensor(dataTensor), + axisTensor(axisTensor), + numSplits(numSplits), + expectedTensors(expectedTensors), + testcaseName(testcaseName) {} reference_tests::Tensor dataTensor; reference_tests::Tensor axisTensor; @@ -55,10 +62,10 @@ private: static std::shared_ptr CreateFunction(const SplitParams& params) { const auto data = std::make_shared(params.dataTensor.type, params.dataTensor.shape); const auto axis = std::make_shared(params.axisTensor.type, - params.axisTensor.shape, - params.axisTensor.data.data()); + params.axisTensor.shape, + params.axisTensor.data.data()); const auto split = std::make_shared(data, axis, params.numSplits); - return std::make_shared(split->outputs(), ParameterVector {data}); + return std::make_shared(split->outputs(), ParameterVector{data}); } }; @@ -69,91 +76,117 @@ TEST_P(ReferenceSplitTest, CompareWithRefs) { template std::vector generateSplitParams() { using T = typename element_type_traits::value_type; - std::vector splitParams { + std::vector splitParams{ // split_1d SplitParams(reference_tests::Tensor({6}, IN_ET, std::vector{1, 2, 3, 4, 5, 6}), reference_tests::Tensor({}, element::i64, std::vector{0}), 3, std::vector{reference_tests::Tensor({2}, IN_ET, std::vector{1, 2}), - reference_tests::Tensor({2}, IN_ET, std::vector{3, 4}), - reference_tests::Tensor({2}, IN_ET, std::vector{5, 6})}, + reference_tests::Tensor({2}, IN_ET, std::vector{3, 4}), + reference_tests::Tensor({2}, IN_ET, std::vector{5, 6})}, "split_1d"), // split_2d_axis_0 SplitParams(reference_tests::Tensor({6, 2}, IN_ET, std::vector{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11}), reference_tests::Tensor({}, element::i64, std::vector{0}), 2, - std::vector{reference_tests::Tensor({3, 2}, IN_ET, std::vector{0, 1, 2, 3, 4, 5}), - reference_tests::Tensor({3, 2}, IN_ET, std::vector{6, 7, 8, 9, 10, 11})}, + std::vector{ + reference_tests::Tensor({3, 2}, IN_ET, std::vector{0, 1, 2, 3, 4, 5}), + reference_tests::Tensor({3, 2}, IN_ET, std::vector{6, 7, 8, 9, 10, 11})}, "split_2d_axis_0"), // split_2d_axis_1 SplitParams(reference_tests::Tensor({6, 2}, IN_ET, std::vector{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11}), reference_tests::Tensor({}, element::i64, std::vector{1}), 2, - std::vector{reference_tests::Tensor({6, 1}, IN_ET, std::vector{0, 2, 4, 6, 8, 10}), - reference_tests::Tensor({6, 1}, IN_ET, std::vector{1, 3, 5, 7, 9, 11})}, + std::vector{ + reference_tests::Tensor({6, 1}, IN_ET, std::vector{0, 2, 4, 6, 8, 10}), + reference_tests::Tensor({6, 1}, IN_ET, std::vector{1, 3, 5, 7, 9, 11})}, "split_2d_axis_1"), // split_3d_axis_0 SplitParams(reference_tests::Tensor({2, 2, 3}, IN_ET, std::vector{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11}), reference_tests::Tensor({}, element::i64, std::vector{0}), 2, - std::vector{reference_tests::Tensor({1, 2, 3}, IN_ET, std::vector{0, 1, 2, 3, 4, 5}), - reference_tests::Tensor({1, 2, 3}, IN_ET, std::vector{6, 7, 8, 9, 10, 11})}, + std::vector{ + reference_tests::Tensor({1, 2, 3}, IN_ET, std::vector{0, 1, 2, 3, 4, 5}), + reference_tests::Tensor({1, 2, 3}, IN_ET, std::vector{6, 7, 8, 9, 10, 11})}, "split_3d_axis_0"), // split_3d_axis_1 - SplitParams(reference_tests::Tensor({2, 8, 2}, IN_ET, std::vector{0, 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}), + SplitParams(reference_tests::Tensor({2, 8, 2}, IN_ET, std::vector{0, 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}), reference_tests::Tensor({}, element::i64, std::vector{1}), 4, - std::vector{reference_tests::Tensor({2, 2, 2}, IN_ET, std::vector{0, 1, 2, 3, 16, 17, 18, 19}), - reference_tests::Tensor({2, 2, 2}, IN_ET, std::vector{4, 5, 6, 7, 20, 21, 22, 23}), - reference_tests::Tensor({2, 2, 2}, IN_ET, std::vector{8, 9, 10, 11, 24, 25, 26, 27}), - reference_tests::Tensor({2, 2, 2}, IN_ET, std::vector{12, 13, 14, 15, 28, 29, 30, 31})}, + std::vector{ + reference_tests::Tensor({2, 2, 2}, IN_ET, std::vector{0, 1, 2, 3, 16, 17, 18, 19}), + reference_tests::Tensor({2, 2, 2}, IN_ET, std::vector{4, 5, 6, 7, 20, 21, 22, 23}), + reference_tests::Tensor({2, 2, 2}, IN_ET, std::vector{8, 9, 10, 11, 24, 25, 26, 27}), + reference_tests::Tensor({2, 2, 2}, IN_ET, std::vector{12, 13, 14, 15, 28, 29, 30, 31})}, "split_3d_axis_1"), // split_3d_axis_2 SplitParams(reference_tests::Tensor({2, 1, 6}, IN_ET, std::vector{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11}), reference_tests::Tensor({}, element::i64, std::vector{2}), 2, - std::vector{reference_tests::Tensor({2, 1, 3}, IN_ET, std::vector{0, 1, 2, 6, 7, 8}), - reference_tests::Tensor({2, 1, 3}, IN_ET, std::vector{3, 4, 5, 9, 10, 11})}, + std::vector{ + reference_tests::Tensor({2, 1, 3}, IN_ET, std::vector{0, 1, 2, 6, 7, 8}), + reference_tests::Tensor({2, 1, 3}, IN_ET, std::vector{3, 4, 5, 9, 10, 11})}, "split_3d_axis_2"), // split_4d_axis_0 - SplitParams(reference_tests::Tensor({3, 2, 3, 1}, IN_ET, std::vector{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17}), - reference_tests::Tensor({}, element::i64, std::vector{0}), - 3, - std::vector{reference_tests::Tensor({1, 2, 3, 1}, IN_ET, std::vector{0, 1, 2, 3, 4, 5}), - reference_tests::Tensor({1, 2, 3, 1}, IN_ET, std::vector{6, 7, 8, 9, 10, 11}), - reference_tests::Tensor({1, 2, 3, 1}, IN_ET, std::vector{12, 13, 14, 15, 16, 17})}, - "split_4d_axis_0"), + SplitParams( + reference_tests::Tensor({3, 2, 3, 1}, + IN_ET, + std::vector{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17}), + reference_tests::Tensor({}, element::i64, std::vector{0}), + 3, + std::vector{ + reference_tests::Tensor({1, 2, 3, 1}, IN_ET, std::vector{0, 1, 2, 3, 4, 5}), + reference_tests::Tensor({1, 2, 3, 1}, IN_ET, std::vector{6, 7, 8, 9, 10, 11}), + reference_tests::Tensor({1, 2, 3, 1}, IN_ET, std::vector{12, 13, 14, 15, 16, 17})}, + "split_4d_axis_0"), // split_4d_axis_1 - SplitParams(reference_tests::Tensor({2, 8, 2, 2}, IN_ET, std::vector{0, 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}), - reference_tests::Tensor({}, element::i64, std::vector{1}), - 4, - std::vector{ - reference_tests::Tensor({2, 2, 2, 2}, IN_ET, std::vector{0, 1, 2, 3, 4, 5, 6, 7, 32, 33, 34, 35, 36, 37, 38, 39}), - reference_tests::Tensor({2, 2, 2, 2}, IN_ET, std::vector{8, 9, 10, 11, 12, 13, 14, 15, 40, 41, 42, 43, 44, 45, 46, 47}), - reference_tests::Tensor({2, 2, 2, 2}, IN_ET, std::vector{16, 17, 18, 19, 20, 21, 22, 23, 48, 49, 50, 51, 52, 53, 54, 55}), - reference_tests::Tensor({2, 2, 2, 2}, IN_ET, std::vector{24, 25, 26, 27, 28, 29, 30, 31, 56, 57, 58, 59, 60, 61, 62, 63})}, - "split_4d_axis_1"), + SplitParams( + reference_tests::Tensor( + {2, 8, 2, 2}, + IN_ET, + std::vector{0, 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}), + reference_tests::Tensor({}, element::i64, std::vector{1}), + 4, + std::vector{ + reference_tests::Tensor({2, 2, 2, 2}, + IN_ET, + std::vector{0, 1, 2, 3, 4, 5, 6, 7, 32, 33, 34, 35, 36, 37, 38, 39}), + reference_tests::Tensor({2, 2, 2, 2}, + IN_ET, + std::vector{8, 9, 10, 11, 12, 13, 14, 15, 40, 41, 42, 43, 44, 45, 46, 47}), + reference_tests::Tensor({2, 2, 2, 2}, + IN_ET, + std::vector{16, 17, 18, 19, 20, 21, 22, 23, 48, 49, 50, 51, 52, 53, 54, 55}), + reference_tests::Tensor( + {2, 2, 2, 2}, + IN_ET, + std::vector{24, 25, 26, 27, 28, 29, 30, 31, 56, 57, 58, 59, 60, 61, 62, 63})}, + "split_4d_axis_1"), // split_4d_axis_2 - SplitParams(reference_tests::Tensor({2, 1, 6, 2}, IN_ET, std::vector{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, - 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23}), + SplitParams(reference_tests::Tensor({2, 1, 6, 2}, IN_ET, std::vector{0, 1, 2, 3, 4, 5, 6, 7, + 8, 9, 10, 11, 12, 13, 14, 15, + 16, 17, 18, 19, 20, 21, 22, 23}), reference_tests::Tensor({}, element::i64, std::vector{2}), 3, - std::vector{reference_tests::Tensor({2, 1, 2, 2}, IN_ET, std::vector{0, 1, 2, 3, 12, 13, 14, 15}), - reference_tests::Tensor({2, 1, 2, 2}, IN_ET, std::vector{4, 5, 6, 7, 16, 17, 18, 19}), - reference_tests::Tensor({2, 1, 2, 2}, IN_ET, std::vector{8, 9, 10, 11, 20, 21, 22, 23})}, + std::vector{ + reference_tests::Tensor({2, 1, 2, 2}, IN_ET, std::vector{0, 1, 2, 3, 12, 13, 14, 15}), + reference_tests::Tensor({2, 1, 2, 2}, IN_ET, std::vector{4, 5, 6, 7, 16, 17, 18, 19}), + reference_tests::Tensor({2, 1, 2, 2}, IN_ET, std::vector{8, 9, 10, 11, 20, 21, 22, 23})}, "split_4d_axis_2"), // split_4d_axis_3 - SplitParams(reference_tests::Tensor({2, 1, 2, 6}, IN_ET, std::vector{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, - 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23}), + SplitParams(reference_tests::Tensor({2, 1, 2, 6}, IN_ET, std::vector{0, 1, 2, 3, 4, 5, 6, 7, + 8, 9, 10, 11, 12, 13, 14, 15, + 16, 17, 18, 19, 20, 21, 22, 23}), reference_tests::Tensor({}, element::i64, std::vector{3}), 3, - std::vector{reference_tests::Tensor({2, 1, 2, 2}, IN_ET, std::vector{0, 1, 6, 7, 12, 13, 18, 19}), - reference_tests::Tensor({2, 1, 2, 2}, IN_ET, std::vector{2, 3, 8, 9, 14, 15, 20, 21}), - reference_tests::Tensor({2, 1, 2, 2}, IN_ET, std::vector{4, 5, 10, 11, 16, 17, 22, 23})}, + std::vector{ + reference_tests::Tensor({2, 1, 2, 2}, IN_ET, std::vector{0, 1, 6, 7, 12, 13, 18, 19}), + reference_tests::Tensor({2, 1, 2, 2}, IN_ET, std::vector{2, 3, 8, 9, 14, 15, 20, 21}), + reference_tests::Tensor({2, 1, 2, 2}, IN_ET, std::vector{4, 5, 10, 11, 16, 17, 22, 23})}, "split_4d_axis_3"), // split_4d_axis_negative_2 SplitParams(reference_tests::Tensor({2, 1, 4, 1}, IN_ET, std::vector{0, 1, 2, 3, 4, 5, 6, 7}), @@ -168,7 +201,7 @@ std::vector generateSplitParams() { } std::vector generateSplitCombinedParams() { - const std::vector> splitTypeParams { + const std::vector> splitTypeParams{ generateSplitParams(), generateSplitParams(), generateSplitParams(), @@ -189,6 +222,8 @@ std::vector generateSplitCombinedParams() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_Split_With_Hardcoded_Refs, ReferenceSplitTest, - testing::ValuesIn(generateSplitCombinedParams()), ReferenceSplitTest::getTestCaseName); -} // namespace +INSTANTIATE_TEST_SUITE_P(smoke_Split_With_Hardcoded_Refs, + ReferenceSplitTest, + testing::ValuesIn(generateSplitCombinedParams()), + ReferenceSplitTest::getTestCaseName); +} // namespace diff --git a/src/plugins/template/tests/functional/op_reference/squared_difference.cpp b/src/plugins/template/tests/functional/op_reference/squared_difference.cpp index 747f52e5bd7..230798b927f 100644 --- a/src/plugins/template/tests/functional/op_reference/squared_difference.cpp +++ b/src/plugins/template/tests/functional/op_reference/squared_difference.cpp @@ -2,10 +2,12 @@ // SPDX-License-Identifier: Apache-2.0 // -#include -#include "base_reference_test.hpp" #include "openvino/op/squared_difference.hpp" +#include + +#include "base_reference_test.hpp" + using namespace ov; using namespace reference_tests; @@ -14,11 +16,11 @@ namespace { struct SquaredDifferenceParams { template SquaredDifferenceParams(const PartialShape& iShape1, - const PartialShape& iShape2, - const element::Type& iType, - const std::vector& iValues1, - const std::vector& iValues2, - const std::vector& oValues) + const PartialShape& iShape2, + const element::Type& iType, + const std::vector& iValues1, + const std::vector& iValues2, + const std::vector& oValues) : pshape1(iShape1), pshape2(iShape2), inType(iType), @@ -36,39 +38,7 @@ struct SquaredDifferenceParams { ov::Tensor refData; }; -class ReferenceSquaredDifferenceLayerTest : public testing::TestWithParam, public CommonReferenceTest { -public: - void SetUp() override { - auto params = GetParam(); - function = CreateFunction(params.pshape1, params.pshape2, params.inType, params.outType); - inputData = {params.inputData1, params.inputData2}; - refOutData = {params.refData}; - } - - static std::string getTestCaseName(const testing::TestParamInfo& obj) { - auto param = obj.param; - std::ostringstream result; - result << "iShape1=" << param.pshape1 << "_"; - result << "iShape2=" << param.pshape2 << "_"; - result << "iType=" << param.inType << "_"; - result << "oType=" << param.outType; - return result.str(); - } - -private: - static std::shared_ptr CreateFunction(const PartialShape& input_shape1, - const PartialShape& input_shape2, - const element::Type& input_type, - const element::Type& expected_output_type) { - const auto in1 = std::make_shared(input_type, input_shape1); - const auto in2 = std::make_shared(input_type, input_shape2); - const auto squared_difference = std::make_shared(in1, in2); - - return std::make_shared(NodeVector{squared_difference}, ParameterVector{in1, in2}); - } -}; - -class ReferenceSquaredDifferenceInPlaceLayerTest : public testing::TestWithParam, +class ReferenceSquaredDifferenceLayerTest : public testing::TestWithParam, public CommonReferenceTest { public: void SetUp() override { @@ -90,9 +60,42 @@ public: private: static std::shared_ptr CreateFunction(const PartialShape& input_shape1, - const PartialShape& input_shape2, - const element::Type& input_type, - const element::Type& expected_output_type) { + const PartialShape& input_shape2, + const element::Type& input_type, + const element::Type& expected_output_type) { + const auto in1 = std::make_shared(input_type, input_shape1); + const auto in2 = std::make_shared(input_type, input_shape2); + const auto squared_difference = std::make_shared(in1, in2); + + return std::make_shared(NodeVector{squared_difference}, ParameterVector{in1, in2}); + } +}; + +class ReferenceSquaredDifferenceInPlaceLayerTest : public testing::TestWithParam, + public CommonReferenceTest { +public: + void SetUp() override { + auto params = GetParam(); + function = CreateFunction(params.pshape1, params.pshape2, params.inType, params.outType); + inputData = {params.inputData1, params.inputData2}; + refOutData = {params.refData}; + } + + static std::string getTestCaseName(const testing::TestParamInfo& obj) { + auto param = obj.param; + std::ostringstream result; + result << "iShape1=" << param.pshape1 << "_"; + result << "iShape2=" << param.pshape2 << "_"; + result << "iType=" << param.inType << "_"; + result << "oType=" << param.outType; + return result.str(); + } + +private: + static std::shared_ptr CreateFunction(const PartialShape& input_shape1, + const PartialShape& input_shape2, + const element::Type& input_type, + const element::Type& expected_output_type) { const auto in1 = std::make_shared(input_type, input_shape1); const auto in2 = std::make_shared(input_type, input_shape2); auto squared_difference = std::make_shared(in1, in2); @@ -116,36 +119,35 @@ std::vector generateParamsForSquaredDifference() { std::vector params{ SquaredDifferenceParams(ov::PartialShape{1, 2}, - ov::PartialShape{1, 2}, - IN_ET, - std::vector{256, 56}, - std::vector{256, 56}, - std::vector{0, 0}), + ov::PartialShape{1, 2}, + IN_ET, + std::vector{256, 56}, + std::vector{256, 56}, + std::vector{0, 0}), SquaredDifferenceParams(ov::PartialShape{2, 2}, - ov::PartialShape{2, 2}, - IN_ET, - std::vector{256, 56, -21, -14}, - std::vector{-112, 56, 6, -8}, - std::vector{135424, 0, 729, 36}), + ov::PartialShape{2, 2}, + IN_ET, + std::vector{256, 56, -21, -14}, + std::vector{-112, 56, 6, -8}, + std::vector{135424, 0, 729, 36}), SquaredDifferenceParams(ov::PartialShape{1, 2}, - ov::PartialShape{3, 2, 2}, - IN_ET, - std::vector{1, 2}, - std::vector{5, 6, 7, 8, 2, 3, 1, 5, 6, 7, 1, 3}, - std::vector{16, 16, 36, 36, 1, 1, 0, 9, 25, 25, 0, 1}), + ov::PartialShape{3, 2, 2}, + IN_ET, + std::vector{1, 2}, + std::vector{5, 6, 7, 8, 2, 3, 1, 5, 6, 7, 1, 3}, + std::vector{16, 16, 36, 36, 1, 1, 0, 9, 25, 25, 0, 1}), SquaredDifferenceParams(ov::PartialShape{1}, - ov::PartialShape{1}, - IN_ET, - std::vector{57}, - std::vector{13}, - std::vector{1936}), + ov::PartialShape{1}, + IN_ET, + std::vector{57}, + std::vector{13}, + std::vector{1936}), SquaredDifferenceParams(ov::PartialShape{2, 2}, ov::PartialShape{1}, IN_ET, std::vector{2, 4, 7, 8}, std::vector{8}, - std::vector{36, 16, 1, 0}) - }; + std::vector{36, 16, 1, 0})}; return params; } @@ -153,14 +155,12 @@ template std::vector generateParamsForSquaredDifferenceInPlace() { using T = typename element_type_traits::value_type; - std::vector params{ - SquaredDifferenceParams(ov::PartialShape{2, 2}, - ov::PartialShape{2, 2}, - IN_ET, - std::vector{1, 2, 3, 4}, - std::vector{5, 6, 7, 8}, - std::vector{0, 0, 0, 0}) - }; + std::vector params{SquaredDifferenceParams(ov::PartialShape{2, 2}, + ov::PartialShape{2, 2}, + IN_ET, + std::vector{1, 2, 3, 4}, + std::vector{5, 6, 7, 8}, + std::vector{0, 0, 0, 0})}; return params; } @@ -169,8 +169,7 @@ std::vector generateCombinedParamsForSquaredDifference( generateParamsForSquaredDifference(), generateParamsForSquaredDifference(), generateParamsForSquaredDifference(), - generateParamsForSquaredDifference() - }; + generateParamsForSquaredDifference()}; std::vector combinedParams; @@ -197,16 +196,14 @@ std::vector generateCombinedParamsForSquaredDifferenceI return combinedParams; } -INSTANTIATE_TEST_SUITE_P( - smoke_SquaredDifference_With_Hardcoded_Refs, - ReferenceSquaredDifferenceLayerTest, - ::testing::ValuesIn(generateCombinedParamsForSquaredDifference()), - ReferenceSquaredDifferenceLayerTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_SquaredDifference_With_Hardcoded_Refs, + ReferenceSquaredDifferenceLayerTest, + ::testing::ValuesIn(generateCombinedParamsForSquaredDifference()), + ReferenceSquaredDifferenceLayerTest::getTestCaseName); -INSTANTIATE_TEST_SUITE_P( - smoke_SquaredDifferenceInPlace_With_Hardcoded_Refs, - ReferenceSquaredDifferenceInPlaceLayerTest, - ::testing::ValuesIn(generateCombinedParamsForSquaredDifferenceInPlace()), - ReferenceSquaredDifferenceInPlaceLayerTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_SquaredDifferenceInPlace_With_Hardcoded_Refs, + ReferenceSquaredDifferenceInPlaceLayerTest, + ::testing::ValuesIn(generateCombinedParamsForSquaredDifferenceInPlace()), + ReferenceSquaredDifferenceInPlaceLayerTest::getTestCaseName); } // namespace diff --git a/src/plugins/template/tests/functional/op_reference/squeeze.cpp b/src/plugins/template/tests/functional/op_reference/squeeze.cpp index 60639bfc54d..0a1504de880 100644 --- a/src/plugins/template/tests/functional/op_reference/squeeze.cpp +++ b/src/plugins/template/tests/functional/op_reference/squeeze.cpp @@ -2,11 +2,12 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/squeeze.hpp" + #include -#include "openvino/op/squeeze.hpp" -#include "openvino/op/constant.hpp" #include "base_reference_test.hpp" +#include "openvino/op/constant.hpp" using namespace reference_tests; using namespace ov; @@ -94,7 +95,8 @@ private: std::shared_ptr axes_node = NULL; std::shared_ptr squeeze = NULL; if (params.m_axes_node) { - axes_node = std::make_shared(params.m_axes_type, params.m_axes_shape, params.m_axes_value.data()); + axes_node = + std::make_shared(params.m_axes_type, params.m_axes_shape, params.m_axes_value.data()); squeeze = std::make_shared(in, axes_node); } else { squeeze = std::make_shared(in); @@ -120,7 +122,7 @@ std::vector generateParamsForSqueeze() { IO_T, std::vector{1, 2, 3, 4, 5, 6, 7, 8}, std::vector{1, 2, 3, 4, 5, 6, 7, 8}, - Shape {2}, + Shape{2}, Axes_T, std::vector{0, 2}), SqueezeParams(Shape{1, 4, 1, 1, 2}, @@ -153,8 +155,7 @@ std::vector generateCombinedParamsForSqueeze() { generateParamsForSqueeze(), generateParamsForSqueeze(), generateParamsForSqueeze(), - generateParamsForSqueeze() - }; + generateParamsForSqueeze()}; std::vector combinedParams; @@ -165,10 +166,9 @@ std::vector generateCombinedParamsForSqueeze() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P( - smoke_Squeeze_With_Hardcoded_Refs, - ReferenceSqueezeLayerTest, - ::testing::ValuesIn(generateCombinedParamsForSqueeze()), - ReferenceSqueezeLayerTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_Squeeze_With_Hardcoded_Refs, + ReferenceSqueezeLayerTest, + ::testing::ValuesIn(generateCombinedParamsForSqueeze()), + ReferenceSqueezeLayerTest::getTestCaseName); } // namespace diff --git a/src/plugins/template/tests/functional/op_reference/strided_slice.cpp b/src/plugins/template/tests/functional/op_reference/strided_slice.cpp index 423397a85a9..54ae9bb8ed3 100644 --- a/src/plugins/template/tests/functional/op_reference/strided_slice.cpp +++ b/src/plugins/template/tests/functional/op_reference/strided_slice.cpp @@ -2,11 +2,12 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/strided_slice.hpp" + #include -#include "openvino/op/strided_slice.hpp" -#include "openvino/op/constant.hpp" #include "base_reference_test.hpp" +#include "openvino/op/constant.hpp" using namespace reference_tests; using namespace ov; @@ -24,12 +25,19 @@ struct StridedSliceParams { const std::vector& shrinkAxisMask, const std::vector& ellipsisMask, const reference_tests::Tensor& expectedTensor, - const std::string& testcaseName = "") : - dynamicDataShape(dynamicDataShape), dataTensor(dataTensor), - beginTensor(beginTensor), endTensor(endTensor), - stridesTensor(stridesTensor), beginMask(beginMask), endMask(endMask), - newAxisMask(newAxisMask), shrinkAxisMask(shrinkAxisMask), ellipsisMask(ellipsisMask), - expectedTensor(expectedTensor), testcaseName(testcaseName) {} + const std::string& testcaseName = "") + : dynamicDataShape(dynamicDataShape), + dataTensor(dataTensor), + beginTensor(beginTensor), + endTensor(endTensor), + stridesTensor(stridesTensor), + beginMask(beginMask), + endMask(endMask), + newAxisMask(newAxisMask), + shrinkAxisMask(shrinkAxisMask), + ellipsisMask(ellipsisMask), + expectedTensor(expectedTensor), + testcaseName(testcaseName) {} PartialShape dynamicDataShape; reference_tests::Tensor dataTensor; @@ -47,21 +55,27 @@ struct StridedSliceParams { struct StridedSliceStrideOptionalParams { StridedSliceStrideOptionalParams(const PartialShape& dynamicDataShape, - const reference_tests::Tensor& dataTensor, - const reference_tests::Tensor& beginTensor, - const reference_tests::Tensor& endTensor, - const std::vector& beginMask, - const std::vector& endMask, - const std::vector& newAxisMask, - const std::vector& shrinkAxisMask, - const std::vector& ellipsisMask, - const reference_tests::Tensor& expectedTensor, - const std::string& testcaseName = "") : - dynamicDataShape(dynamicDataShape), dataTensor(dataTensor), - beginTensor(beginTensor), endTensor(endTensor), - beginMask(beginMask), endMask(endMask), - newAxisMask(newAxisMask), shrinkAxisMask(shrinkAxisMask), ellipsisMask(ellipsisMask), - expectedTensor(expectedTensor), testcaseName(testcaseName) {} + const reference_tests::Tensor& dataTensor, + const reference_tests::Tensor& beginTensor, + const reference_tests::Tensor& endTensor, + const std::vector& beginMask, + const std::vector& endMask, + const std::vector& newAxisMask, + const std::vector& shrinkAxisMask, + const std::vector& ellipsisMask, + const reference_tests::Tensor& expectedTensor, + const std::string& testcaseName = "") + : dynamicDataShape(dynamicDataShape), + dataTensor(dataTensor), + beginTensor(beginTensor), + endTensor(endTensor), + beginMask(beginMask), + endMask(endMask), + newAxisMask(newAxisMask), + shrinkAxisMask(shrinkAxisMask), + ellipsisMask(ellipsisMask), + expectedTensor(expectedTensor), + testcaseName(testcaseName) {} PartialShape dynamicDataShape; reference_tests::Tensor dataTensor; @@ -84,7 +98,10 @@ public: if (params.dynamicDataShape.is_static()) { inputData = {params.dataTensor.data}; } else { - inputData = {params.dataTensor.data, params.beginTensor.data, params.endTensor.data, params.stridesTensor.data}; + inputData = {params.dataTensor.data, + params.beginTensor.data, + params.endTensor.data, + params.stridesTensor.data}; } refOutData = {params.expectedTensor.data}; } @@ -116,31 +133,49 @@ private: std::shared_ptr function; if (params.dynamicDataShape.is_static()) { const auto data = std::make_shared(params.dataTensor.type, params.dataTensor.shape); - const auto beginOp = std::make_shared(params.beginTensor.type, params.beginTensor.shape, + const auto beginOp = std::make_shared(params.beginTensor.type, + params.beginTensor.shape, params.beginTensor.data.data()); - const auto endOp = std::make_shared(params.endTensor.type, params.endTensor.shape, + const auto endOp = std::make_shared(params.endTensor.type, + params.endTensor.shape, params.endTensor.data.data()); - const auto stridesOp = std::make_shared(params.stridesTensor.type, params.stridesTensor.shape, + const auto stridesOp = std::make_shared(params.stridesTensor.type, + params.stridesTensor.shape, params.stridesTensor.data.data()); - const auto StridedSlice = std::make_shared(data, beginOp, endOp, stridesOp, - params.beginMask, params.endMask, params.newAxisMask, - params.shrinkAxisMask, params.ellipsisMask); + const auto StridedSlice = std::make_shared(data, + beginOp, + endOp, + stridesOp, + params.beginMask, + params.endMask, + params.newAxisMask, + params.shrinkAxisMask, + params.ellipsisMask); function = std::make_shared(NodeVector{StridedSlice}, ParameterVector{data}); } else { const auto data = std::make_shared(params.dataTensor.type, PartialShape::dynamic()); const auto beginOp = std::make_shared(params.beginTensor.type, params.beginTensor.shape); const auto endOp = std::make_shared(params.endTensor.type, params.endTensor.shape); - const auto stridesOp = std::make_shared(params.stridesTensor.type, params.stridesTensor.shape); - const auto StridedSlice = std::make_shared(data, beginOp, endOp, stridesOp, - params.beginMask, params.endMask, params.newAxisMask, - params.shrinkAxisMask, params.ellipsisMask); - function = std::make_shared(NodeVector{StridedSlice}, ParameterVector{data, beginOp, endOp, stridesOp}); + const auto stridesOp = + std::make_shared(params.stridesTensor.type, params.stridesTensor.shape); + const auto StridedSlice = std::make_shared(data, + beginOp, + endOp, + stridesOp, + params.beginMask, + params.endMask, + params.newAxisMask, + params.shrinkAxisMask, + params.ellipsisMask); + function = + std::make_shared(NodeVector{StridedSlice}, ParameterVector{data, beginOp, endOp, stridesOp}); } return function; } }; -class ReferenceStridedSliceLayerTestStrideOptional : public testing::TestWithParam, public CommonReferenceTest { +class ReferenceStridedSliceLayerTestStrideOptional : public testing::TestWithParam, + public CommonReferenceTest { public: void SetUp() override { auto params = GetParam(); @@ -178,21 +213,33 @@ private: std::shared_ptr function; if (params.dynamicDataShape.is_static()) { const auto data = std::make_shared(params.dataTensor.type, params.dataTensor.shape); - const auto beginOp = std::make_shared(params.beginTensor.type, params.beginTensor.shape, + const auto beginOp = std::make_shared(params.beginTensor.type, + params.beginTensor.shape, params.beginTensor.data.data()); - const auto endOp = std::make_shared(params.endTensor.type, params.endTensor.shape, + const auto endOp = std::make_shared(params.endTensor.type, + params.endTensor.shape, params.endTensor.data.data()); - const auto StridedSlice = std::make_shared(data, beginOp, endOp, - params.beginMask, params.endMask, params.newAxisMask, - params.shrinkAxisMask, params.ellipsisMask); + const auto StridedSlice = std::make_shared(data, + beginOp, + endOp, + params.beginMask, + params.endMask, + params.newAxisMask, + params.shrinkAxisMask, + params.ellipsisMask); function = std::make_shared(NodeVector{StridedSlice}, ParameterVector{data}); } else { const auto data = std::make_shared(params.dataTensor.type, PartialShape::dynamic()); const auto beginOp = std::make_shared(params.beginTensor.type, params.beginTensor.shape); const auto endOp = std::make_shared(params.endTensor.type, params.endTensor.shape); - const auto StridedSlice = std::make_shared(data, beginOp, endOp, - params.beginMask, params.endMask, params.newAxisMask, - params.shrinkAxisMask, params.ellipsisMask); + const auto StridedSlice = std::make_shared(data, + beginOp, + endOp, + params.beginMask, + params.endMask, + params.newAxisMask, + params.shrinkAxisMask, + params.ellipsisMask); function = std::make_shared(NodeVector{StridedSlice}, ParameterVector{data, beginOp, endOp}); } return function; @@ -207,7 +254,7 @@ TEST_P(ReferenceStridedSliceLayerTestStrideOptional, CompareWithRefs) { Exec(); } -template +template std::vector generateInputValues(const Shape& input_shape, T initial) { std::vector input_values(shape_size(input_shape)); std::iota(input_values.begin(), input_values.end(), static_cast(initial)); @@ -217,12 +264,12 @@ std::vector generateInputValues(const Shape& input_shape, T initial) { template std::vector generateSmallParams() { using T = typename element_type_traits::value_type; - std::vector params { + std::vector params{ // strided_slice_0 StridedSliceParams( {}, reference_tests::Tensor(IN_ET, {2, 3, 4}, std::vector{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, - 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23}), + 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23}), reference_tests::Tensor(element::i64, {2}, std::vector{1, 0}), reference_tests::Tensor(element::i64, {2}, std::vector{0, 0}), reference_tests::Tensor(element::i64, {2}, std::vector{1, 1}), @@ -237,7 +284,7 @@ std::vector generateSmallParams() { StridedSliceParams( PartialShape::dynamic(), reference_tests::Tensor(IN_ET, {2, 3, 4}, std::vector{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, - 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23}), + 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23}), reference_tests::Tensor(element::i64, {2}, std::vector{1, 0}), reference_tests::Tensor(element::i64, {2}, std::vector{0, 0}), reference_tests::Tensor(element::i64, {2}, std::vector{1, 1}), @@ -255,12 +302,12 @@ std::vector generateSmallParams() { template std::vector generateParams() { using T = typename element_type_traits::value_type; - std::vector params { + std::vector params{ // strided_slice_0 StridedSliceParams( {}, reference_tests::Tensor(IN_ET, {2, 3, 4}, std::vector{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, - 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23}), + 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23}), reference_tests::Tensor(element::i64, {2}, std::vector{1, 0}), reference_tests::Tensor(element::i64, {2}, std::vector{0, 0}), reference_tests::Tensor(element::i64, {2}, std::vector{1, 1}), @@ -275,7 +322,7 @@ std::vector generateParams() { StridedSliceParams( PartialShape::dynamic(), reference_tests::Tensor(IN_ET, {2, 3, 4}, std::vector{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, - 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23}), + 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23}), reference_tests::Tensor(element::i64, {2}, std::vector{1, 0}), reference_tests::Tensor(element::i64, {2}, std::vector{0, 0}), reference_tests::Tensor(element::i64, {2}, std::vector{1, 1}), @@ -298,16 +345,18 @@ std::vector generateParams() { std::vector{0, 0, 0, 0, 1, 0, 0}, std::vector{0, 0, 0, 0, 0, 0, 1}, std::vector{0, 0, 0, 0, 0, 1, 0}, - reference_tests::Tensor(IN_ET, {2, 4, 2, 2, 1, 2, 2}, std::vector{ - 185, 187, 189, 191, 169, 171, 173, 175, 313, 315, 317, 319, 297, 299, 301, - 303, 569, 571, 573, 575, 553, 555, 557, 559, 697, 699, 701, 703, 681, 683, - 685, 687, 953, 955, 957, 959, 937, 939, 941, 943, 1081, 1083, 1085, 1087, 1065, - 1067, 1069, 1071, 1337, 1339, 1341, 1343, 1321, 1323, 1325, 1327, 1465, 1467, 1469, 1471, - 1449, 1451, 1453, 1455, 1721, 1723, 1725, 1727, 1705, 1707, 1709, 1711, 1849, 1851, 1853, - 1855, 1833, 1835, 1837, 1839, 2105, 2107, 2109, 2111, 2089, 2091, 2093, 2095, 2233, 2235, - 2237, 2239, 2217, 2219, 2221, 2223, 2489, 2491, 2493, 2495, 2473, 2475, 2477, 2479, 2617, - 2619, 2621, 2623, 2601, 2603, 2605, 2607, 2873, 2875, 2877, 2879, 2857, 2859, 2861, 2863, - 3001, 3003, 3005, 3007, 2985, 2987, 2989, 2991}), + reference_tests::Tensor( + IN_ET, + {2, 4, 2, 2, 1, 2, 2}, + std::vector{185, 187, 189, 191, 169, 171, 173, 175, 313, 315, 317, 319, 297, 299, 301, + 303, 569, 571, 573, 575, 553, 555, 557, 559, 697, 699, 701, 703, 681, 683, + 685, 687, 953, 955, 957, 959, 937, 939, 941, 943, 1081, 1083, 1085, 1087, 1065, + 1067, 1069, 1071, 1337, 1339, 1341, 1343, 1321, 1323, 1325, 1327, 1465, 1467, 1469, 1471, + 1449, 1451, 1453, 1455, 1721, 1723, 1725, 1727, 1705, 1707, 1709, 1711, 1849, 1851, 1853, + 1855, 1833, 1835, 1837, 1839, 2105, 2107, 2109, 2111, 2089, 2091, 2093, 2095, 2233, 2235, + 2237, 2239, 2217, 2219, 2221, 2223, 2489, 2491, 2493, 2495, 2473, 2475, 2477, 2479, 2617, + 2619, 2621, 2623, 2601, 2603, 2605, 2607, 2873, 2875, 2877, 2879, 2857, 2859, 2861, 2863, + 3001, 3003, 3005, 3007, 2985, 2987, 2989, 2991}), "strided_slice_1"), // strided_slice_1_dynamic StridedSliceParams( @@ -321,16 +370,18 @@ std::vector generateParams() { std::vector{0, 0, 0, 0, 1, 0, 0}, std::vector{0, 0, 0, 0, 0, 0, 1}, std::vector{0, 0, 0, 0, 0, 1, 0}, - reference_tests::Tensor(IN_ET, {2, 4, 2, 2, 1, 2, 2}, std::vector{ - 185, 187, 189, 191, 169, 171, 173, 175, 313, 315, 317, 319, 297, 299, 301, - 303, 569, 571, 573, 575, 553, 555, 557, 559, 697, 699, 701, 703, 681, 683, - 685, 687, 953, 955, 957, 959, 937, 939, 941, 943, 1081, 1083, 1085, 1087, 1065, - 1067, 1069, 1071, 1337, 1339, 1341, 1343, 1321, 1323, 1325, 1327, 1465, 1467, 1469, 1471, - 1449, 1451, 1453, 1455, 1721, 1723, 1725, 1727, 1705, 1707, 1709, 1711, 1849, 1851, 1853, - 1855, 1833, 1835, 1837, 1839, 2105, 2107, 2109, 2111, 2089, 2091, 2093, 2095, 2233, 2235, - 2237, 2239, 2217, 2219, 2221, 2223, 2489, 2491, 2493, 2495, 2473, 2475, 2477, 2479, 2617, - 2619, 2621, 2623, 2601, 2603, 2605, 2607, 2873, 2875, 2877, 2879, 2857, 2859, 2861, 2863, - 3001, 3003, 3005, 3007, 2985, 2987, 2989, 2991}), + reference_tests::Tensor( + IN_ET, + {2, 4, 2, 2, 1, 2, 2}, + std::vector{185, 187, 189, 191, 169, 171, 173, 175, 313, 315, 317, 319, 297, 299, 301, + 303, 569, 571, 573, 575, 553, 555, 557, 559, 697, 699, 701, 703, 681, 683, + 685, 687, 953, 955, 957, 959, 937, 939, 941, 943, 1081, 1083, 1085, 1087, 1065, + 1067, 1069, 1071, 1337, 1339, 1341, 1343, 1321, 1323, 1325, 1327, 1465, 1467, 1469, 1471, + 1449, 1451, 1453, 1455, 1721, 1723, 1725, 1727, 1705, 1707, 1709, 1711, 1849, 1851, 1853, + 1855, 1833, 1835, 1837, 1839, 2105, 2107, 2109, 2111, 2089, 2091, 2093, 2095, 2233, 2235, + 2237, 2239, 2217, 2219, 2221, 2223, 2489, 2491, 2493, 2495, 2473, 2475, 2477, 2479, 2617, + 2619, 2621, 2623, 2601, 2603, 2605, 2607, 2873, 2875, 2877, 2879, 2857, 2859, 2861, 2863, + 3001, 3003, 3005, 3007, 2985, 2987, 2989, 2991}), "strided_slice_1_dynamic"), }; return params; @@ -339,12 +390,12 @@ std::vector generateParams() { template std::vector generateStrideOptionalParams() { using T = typename element_type_traits::value_type; - std::vector params { + std::vector params{ // strided_slice_stride_optional StridedSliceStrideOptionalParams( {}, reference_tests::Tensor(IN_ET, {2, 3, 4}, std::vector{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, - 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23}), + 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23}), reference_tests::Tensor(element::i64, {3}, std::vector{-1, -1, 0}), reference_tests::Tensor(element::i64, {3}, std::vector{0, 0, 0}), std::vector{0, 0, 0}, @@ -358,7 +409,7 @@ std::vector generateStrideOptionalParams() { StridedSliceStrideOptionalParams( PartialShape::dynamic(), reference_tests::Tensor(IN_ET, {2, 3, 4}, std::vector{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, - 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23}), + 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23}), reference_tests::Tensor(element::i64, {3}, std::vector{-1, -1, 0}), reference_tests::Tensor(element::i64, {3}, std::vector{0, 0, 0}), std::vector{0, 0, 0}, @@ -372,7 +423,7 @@ std::vector generateStrideOptionalParams() { StridedSliceStrideOptionalParams( PartialShape::dynamic(), reference_tests::Tensor(IN_ET, {2, 3, 4}, std::vector{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, - 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23}), + 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23}), reference_tests::Tensor(element::i64, {2}, std::vector{0, 0}), reference_tests::Tensor(element::i64, {2}, std::vector{-1, 0}), std::vector{1, 0}, @@ -387,7 +438,7 @@ std::vector generateStrideOptionalParams() { } std::vector generateCombinedParams() { - const std::vector> generatedParams { + const std::vector> generatedParams{ generateSmallParams(), generateParams(), generateParams(), @@ -410,7 +461,7 @@ std::vector generateCombinedParams() { } std::vector generateCombinedStrideOptionalParams() { - const std::vector> generatedParams { + const std::vector> generatedParams{ generateStrideOptionalParams(), generateStrideOptionalParams(), generateStrideOptionalParams(), @@ -430,9 +481,13 @@ std::vector generateCombinedStrideOptionalPara return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_StridedSlice_With_Hardcoded_Refs, ReferenceStridedSliceLayerTest, - testing::ValuesIn(generateCombinedParams()), ReferenceStridedSliceLayerTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_StridedSlice_With_Hardcoded_Refs, + ReferenceStridedSliceLayerTest, + testing::ValuesIn(generateCombinedParams()), + ReferenceStridedSliceLayerTest::getTestCaseName); -INSTANTIATE_TEST_SUITE_P(smoke_StridedSlice_With_Hardcoded_Refs, ReferenceStridedSliceLayerTestStrideOptional, - testing::ValuesIn(generateCombinedStrideOptionalParams()), ReferenceStridedSliceLayerTestStrideOptional::getTestCaseName); -} // namespace +INSTANTIATE_TEST_SUITE_P(smoke_StridedSlice_With_Hardcoded_Refs, + ReferenceStridedSliceLayerTestStrideOptional, + testing::ValuesIn(generateCombinedStrideOptionalParams()), + ReferenceStridedSliceLayerTestStrideOptional::getTestCaseName); +} // namespace diff --git a/src/plugins/template/tests/functional/op_reference/subtract.cpp b/src/plugins/template/tests/functional/op_reference/subtract.cpp index 5eb145d12d6..12bc8c888cb 100644 --- a/src/plugins/template/tests/functional/op_reference/subtract.cpp +++ b/src/plugins/template/tests/functional/op_reference/subtract.cpp @@ -2,10 +2,12 @@ // SPDX-License-Identifier: Apache-2.0 // -#include -#include "base_reference_test.hpp" #include "openvino/op/subtract.hpp" +#include + +#include "base_reference_test.hpp" + using namespace ov; using namespace reference_tests; @@ -14,11 +16,11 @@ namespace { struct SubtractParams { template SubtractParams(const PartialShape& iShape1, - const PartialShape& iShape2, - const element::Type& iType, - const std::vector& iValues1, - const std::vector& iValues2, - const std::vector& oValues) + const PartialShape& iShape2, + const element::Type& iType, + const std::vector& iValues1, + const std::vector& iValues2, + const std::vector& oValues) : pshape1(iShape1), pshape2(iShape2), inType(iType), @@ -57,9 +59,9 @@ public: private: static std::shared_ptr CreateFunction(const PartialShape& input_shape1, - const PartialShape& input_shape2, - const element::Type& input_type, - const element::Type& expected_output_type) { + const PartialShape& input_shape2, + const element::Type& input_type, + const element::Type& expected_output_type) { const auto in1 = std::make_shared(input_type, input_shape1); const auto in2 = std::make_shared(input_type, input_shape2); const auto subtract = std::make_shared(in1, in2); @@ -88,19 +90,14 @@ std::vector generateParamsForSubtract() { IN_ET, std::vector{12, 24, 36, 48, 60, 72}, std::vector{1, 2, 3, 4, 6, 1}, - std::vector{11, 10, 9, 8, 6, 11, - 23, 22, 21, 20, 18, 23, - 35, 34, 33, 32, 30, 35, - 47, 46, 45, 44, 42, 47, - 59, 58, 57, 56, 54, 59, - 71, 70, 69, 68, 66, 71}), + std::vector{11, 10, 9, 8, 6, 11, 23, 22, 21, 20, 18, 23, 35, 34, 33, 32, 30, 35, + 47, 46, 45, 44, 42, 47, 59, 58, 57, 56, 54, 59, 71, 70, 69, 68, 66, 71}), SubtractParams(ov::PartialShape{1}, ov::PartialShape{1}, IN_ET, std::vector{8}, std::vector{2}, - std::vector{6}) - }; + std::vector{6})}; return params; } @@ -108,27 +105,23 @@ template std::vector generateParamsForSubtractFloat() { using T = typename element_type_traits::value_type; - std::vector params{ - SubtractParams(ov::PartialShape{1}, - ov::PartialShape{1}, - IN_ET, - std::vector{3.1}, - std::vector{8}, - std::vector{-4.9}) - }; + std::vector params{SubtractParams(ov::PartialShape{1}, + ov::PartialShape{1}, + IN_ET, + std::vector{3.1}, + std::vector{8}, + std::vector{-4.9})}; return params; } std::vector generateCombinedParamsForSubtract() { - const std::vector> allTypeParams{ - generateParamsForSubtract(), - generateParamsForSubtract(), - generateParamsForSubtract(), - generateParamsForSubtract(), - generateParamsForSubtract(), - generateParamsForSubtract(), - generateParamsForSubtract() - }; + const std::vector> allTypeParams{generateParamsForSubtract(), + generateParamsForSubtract(), + generateParamsForSubtract(), + generateParamsForSubtract(), + generateParamsForSubtract(), + generateParamsForSubtract(), + generateParamsForSubtract()}; std::vector combinedParams; @@ -142,8 +135,7 @@ std::vector generateCombinedParamsForSubtract() { std::vector generateCombinedParamsForSubtractFloat() { const std::vector> allTypeParams{ generateParamsForSubtractFloat(), - generateParamsForSubtractFloat() - }; + generateParamsForSubtractFloat()}; std::vector combinedParams; @@ -154,16 +146,14 @@ std::vector generateCombinedParamsForSubtractFloat() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P( - smoke_Subtract_With_Hardcoded_Refs, - ReferenceSubtractLayerTest, - ::testing::ValuesIn(generateCombinedParamsForSubtract()), - ReferenceSubtractLayerTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_Subtract_With_Hardcoded_Refs, + ReferenceSubtractLayerTest, + ::testing::ValuesIn(generateCombinedParamsForSubtract()), + ReferenceSubtractLayerTest::getTestCaseName); -INSTANTIATE_TEST_SUITE_P( - smoke_Subtract_Float_With_Hardcoded_Refs, - ReferenceSubtractLayerTest, - ::testing::ValuesIn(generateCombinedParamsForSubtractFloat()), - ReferenceSubtractLayerTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_Subtract_Float_With_Hardcoded_Refs, + ReferenceSubtractLayerTest, + ::testing::ValuesIn(generateCombinedParamsForSubtractFloat()), + ReferenceSubtractLayerTest::getTestCaseName); } // namespace diff --git a/src/plugins/template/tests/functional/op_reference/swish.cpp b/src/plugins/template/tests/functional/op_reference/swish.cpp index d609e2b1a84..5c551902f7c 100644 --- a/src/plugins/template/tests/functional/op_reference/swish.cpp +++ b/src/plugins/template/tests/functional/op_reference/swish.cpp @@ -2,9 +2,10 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/swish.hpp" + #include -#include "openvino/op/swish.hpp" #include "base_reference_test.hpp" using namespace reference_tests; @@ -13,31 +14,33 @@ using namespace ov; namespace { struct SwishParams { template - SwishParams(const ov::PartialShape& shape, const ov::element::Type& iType, const std::vector& iValues, + SwishParams(const ov::PartialShape& shape, + const ov::element::Type& iType, + const std::vector& iValues, const float beta = 1) : pshape(shape), inType(iType), outType(iType), inputData(CreateTensor(iType, iValues)), beta(beta) { - std::vector oValues; - std::vector output; - std::vector betaVector; + std::vector oValues; + std::vector output; + std::vector betaVector; - for (auto element : iValues) - output.push_back(static_cast(element)); + for (auto element : iValues) + output.push_back(static_cast(element)); - std::transform(output.begin(), output.end(), output.begin(), [&beta](float x) -> float { - return (x / (1.0f + std::exp(x * beta * -1.0f))); - }); + std::transform(output.begin(), output.end(), output.begin(), [&beta](float x) -> float { + return (x / (1.0f + std::exp(x * beta * -1.0f))); + }); - for (auto element : output) - oValues.push_back(static_cast(element)); - refData = CreateTensor(outType, oValues); + for (auto element : output) + oValues.push_back(static_cast(element)); + refData = CreateTensor(outType, oValues); - betaVector.push_back(static_cast(beta)); - betaBlob = CreateTensor(inType, betaVector); - } + betaVector.push_back(static_cast(beta)); + betaBlob = CreateTensor(inType, betaVector); + } ov::PartialShape pshape; ov::element::Type inType; @@ -52,7 +55,7 @@ struct SwishParams { class ReferenceSwishLayerTest : public testing::TestWithParam, public CommonReferenceTest { public: void SetUp() override { - threshold = 0.06; // 0.01 failed in fp32 test + threshold = 0.06; // 0.01 failed in fp32 test auto params = GetParam(); function = CreateFunction(params.pshape, params.inType, params.outType, params.beta); @@ -76,16 +79,18 @@ public: } private: - static std::shared_ptr CreateFunction(const PartialShape& input_shape, const element::Type& input_type, - const element::Type& Swishected_output_type, const float beta) { + static std::shared_ptr CreateFunction(const PartialShape& input_shape, + const element::Type& input_type, + const element::Type& Swishected_output_type, + const float beta) { const auto in = std::make_shared(input_type, input_shape); if (beta != 1) { - const auto BETA = std::make_shared(input_type, Shape {}); + const auto BETA = std::make_shared(input_type, Shape{}); const auto Swish = std::make_shared(in, BETA); - return std::make_shared(NodeVector {Swish}, ParameterVector {in, BETA}); + return std::make_shared(NodeVector{Swish}, ParameterVector{in, BETA}); } else { const auto Swish = std::make_shared(in); - return std::make_shared(NodeVector {Swish}, ParameterVector {in}); + return std::make_shared(NodeVector{Swish}, ParameterVector{in}); } } }; @@ -98,27 +103,16 @@ template std::vector generateSwishFloatParams() { using T = typename element_type_traits::value_type; - std::vector swishParams { - SwishParams(ov::PartialShape {2, 4}, - IN_ET, - std::vector{0.4, -5.7, -6, 3, -0.9, 23, 5, 3.3}, - 0.6f), - SwishParams(ov::PartialShape {2, 3}, - IN_ET, - std::vector{1, 8, -8, 17, -0.5, -1}), - SwishParams(ov::PartialShape {2, 2, 1, 2}, - IN_ET, - std::vector{0.1, 0.6, 20, -7, -5.3, 3.5, -9, 11}, - 0.33f) - }; + std::vector swishParams{ + SwishParams(ov::PartialShape{2, 4}, IN_ET, std::vector{0.4, -5.7, -6, 3, -0.9, 23, 5, 3.3}, 0.6f), + SwishParams(ov::PartialShape{2, 3}, IN_ET, std::vector{1, 8, -8, 17, -0.5, -1}), + SwishParams(ov::PartialShape{2, 2, 1, 2}, IN_ET, std::vector{0.1, 0.6, 20, -7, -5.3, 3.5, -9, 11}, 0.33f)}; return swishParams; } std::vector generateSwishCombinedParams() { - const std::vector> swishTypeParams { - generateSwishFloatParams(), - generateSwishFloatParams() - }; + const std::vector> swishTypeParams{generateSwishFloatParams(), + generateSwishFloatParams()}; std::vector combinedParams; for (const auto& params : swishTypeParams) { @@ -127,7 +121,9 @@ std::vector generateSwishCombinedParams() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_Swish_With_Hardcoded_Refs, ReferenceSwishLayerTest, - testing::ValuesIn(generateSwishCombinedParams()), ReferenceSwishLayerTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_Swish_With_Hardcoded_Refs, + ReferenceSwishLayerTest, + testing::ValuesIn(generateSwishCombinedParams()), + ReferenceSwishLayerTest::getTestCaseName); -} // namespace +} // namespace diff --git a/src/plugins/template/tests/functional/op_reference/tan.cpp b/src/plugins/template/tests/functional/op_reference/tan.cpp index 705c53e78cc..6bb99834617 100644 --- a/src/plugins/template/tests/functional/op_reference/tan.cpp +++ b/src/plugins/template/tests/functional/op_reference/tan.cpp @@ -2,9 +2,10 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/tan.hpp" + #include -#include "openvino/op/tan.hpp" #include "base_reference_test.hpp" using namespace ov; @@ -13,9 +14,15 @@ using namespace reference_tests; namespace { struct TanParams { template - TanParams(const ov::PartialShape& shape, const ov::element::Type& iType, const std::vector& iValues, + TanParams(const ov::PartialShape& shape, + const ov::element::Type& iType, + const std::vector& iValues, const std::vector& oValues) - :pshape(shape), inType(iType), outType(iType), inputData(CreateTensor(iType, iValues)), refData(CreateTensor(iType, oValues)) {} + : pshape(shape), + inType(iType), + outType(iType), + inputData(CreateTensor(iType, iValues)), + refData(CreateTensor(iType, oValues)) {} ov::PartialShape pshape; ov::element::Type inType; ov::element::Type outType; @@ -44,7 +51,7 @@ private: static std::shared_ptr CreateFunction(const PartialShape& input_shape, const element::Type& input_type) { const auto in = std::make_shared(input_type, input_shape); const auto tan = std::make_shared(in); - return std::make_shared(tan, ParameterVector {in}); + return std::make_shared(tan, ParameterVector{in}); } }; @@ -53,27 +60,56 @@ TEST_P(ReferenceTanLayerTest, CompareWithHardcodedRefs) { } std::vector generateTanCombinedParams() { - std::vector combinedParams { - TanParams(ov::PartialShape {5}, ov::element::i32, std::vector {-2, -1, 0, 1, 2}, - std::vector {2, -2, 0, 2, -2}), - TanParams(ov::PartialShape {5}, ov::element::i64, std::vector {-2, -1, 0, 1, 2}, - std::vector {2, -2, 0, 2, -2}), - TanParams(ov::PartialShape {5}, ov::element::u32, std::vector {1, 2, 3, 4, 5}, - std::vector {2, 0xFFFFFFFF - 1, 0, 1, 0xFFFFFFFF - 2}), - TanParams(ov::PartialShape {5}, ov::element::u64, std::vector {1, 2, 3, 4, 5}, - std::vector {2, 0xFFFFFFFFFFFFFFFF - 1, 0, 1, 0xFFFFFFFFFFFFFFFF - 2}), - TanParams(ov::PartialShape {11}, ov::element::f32, std::vector {0.f, 0.25f, - -0.25f, 0.5f, -0.5f, 1.f, -1.f, 2.f, -2.f, 4.f, -4.f}, - std::vector {0.00000000f, 0.25534192f, -0.25534192f, 0.54630249f, -0.54630249f, - 1.55740772f, -1.55740772f, -2.18503986f, 2.18503986f, 1.15782128f, -1.15782128f}), - TanParams(ov::PartialShape {11}, ov::element::f16, std::vector {0.f, 0.25f, - -0.25f, 0.5f, -0.5f, 1.f, -1.f, 2.f, -2.f, 4.f, -4.f}, - std::vector {0.00000000f, 0.25534192f, -0.25534192f, 0.54630249f, -0.54630249f, - 1.55740772f, -1.55740772f, -2.18503986f, 2.18503986f, 1.15782128f, -1.15782128f}) - }; + std::vector combinedParams{ + TanParams(ov::PartialShape{5}, + ov::element::i32, + std::vector{-2, -1, 0, 1, 2}, + std::vector{2, -2, 0, 2, -2}), + TanParams(ov::PartialShape{5}, + ov::element::i64, + std::vector{-2, -1, 0, 1, 2}, + std::vector{2, -2, 0, 2, -2}), + TanParams(ov::PartialShape{5}, + ov::element::u32, + std::vector{1, 2, 3, 4, 5}, + std::vector{2, 0xFFFFFFFF - 1, 0, 1, 0xFFFFFFFF - 2}), + TanParams(ov::PartialShape{5}, + ov::element::u64, + std::vector{1, 2, 3, 4, 5}, + std::vector{2, 0xFFFFFFFFFFFFFFFF - 1, 0, 1, 0xFFFFFFFFFFFFFFFF - 2}), + TanParams(ov::PartialShape{11}, + ov::element::f32, + std::vector{0.f, 0.25f, -0.25f, 0.5f, -0.5f, 1.f, -1.f, 2.f, -2.f, 4.f, -4.f}, + std::vector{0.00000000f, + 0.25534192f, + -0.25534192f, + 0.54630249f, + -0.54630249f, + 1.55740772f, + -1.55740772f, + -2.18503986f, + 2.18503986f, + 1.15782128f, + -1.15782128f}), + TanParams(ov::PartialShape{11}, + ov::element::f16, + std::vector{0.f, 0.25f, -0.25f, 0.5f, -0.5f, 1.f, -1.f, 2.f, -2.f, 4.f, -4.f}, + std::vector{0.00000000f, + 0.25534192f, + -0.25534192f, + 0.54630249f, + -0.54630249f, + 1.55740772f, + -1.55740772f, + -2.18503986f, + 2.18503986f, + 1.15782128f, + -1.15782128f})}; return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_TAN_With_Hardcoded_Refs, ReferenceTanLayerTest, ::testing::ValuesIn(generateTanCombinedParams()), +INSTANTIATE_TEST_SUITE_P(smoke_TAN_With_Hardcoded_Refs, + ReferenceTanLayerTest, + ::testing::ValuesIn(generateTanCombinedParams()), ReferenceTanLayerTest::getTestCaseName); } // namespace diff --git a/src/plugins/template/tests/functional/op_reference/tanh.cpp b/src/plugins/template/tests/functional/op_reference/tanh.cpp index da0f8303d4c..43765f9145a 100644 --- a/src/plugins/template/tests/functional/op_reference/tanh.cpp +++ b/src/plugins/template/tests/functional/op_reference/tanh.cpp @@ -2,9 +2,10 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/tanh.hpp" + #include -#include "openvino/op/tanh.hpp" #include "base_reference_test.hpp" using namespace ov; @@ -42,7 +43,7 @@ private: static std::shared_ptr CreateFunction(const Shape& shape, const element::Type& type) { const auto in = std::make_shared(type, shape); const auto Tanh = std::make_shared(in); - return std::make_shared(NodeVector {Tanh}, ParameterVector {in}); + return std::make_shared(NodeVector{Tanh}, ParameterVector{in}); } }; @@ -53,46 +54,55 @@ TEST_P(ReferenceTanhLayerTest, TanhWithHardcodedRefs) { } // namespace INSTANTIATE_TEST_SUITE_P( - smoke_Tanh_With_Hardcoded_Refs, ReferenceTanhLayerTest, + smoke_Tanh_With_Hardcoded_Refs, + ReferenceTanhLayerTest, ::testing::Values( - Builder {} - .input({{11}, element::f16, std::vector {-4.f, -2.f, -1.f, -0.5f, -0.25f, 0.f, 0.25f, 0.5f, 1.f, 2.f, 4.f}}) - .expected({{11}, element::f16, std::vector {-0.99932930f, - -0.96402758f, - -0.76159416f, - -0.46211716f, - -0.24491866f, - 0.00000000f, - 0.24491866f, - 0.46211716f, - 0.76159416f, - 0.96402758f, - 0.99932930f}}), - Builder {} - .input({{11}, element::f32, std::vector {-4.f, -2.f, -1.f, -0.5f, -0.25f, 0.f, 0.25f, 0.5f, 1.f, 2.f, 4.f}}) - .expected({{11}, element::f32, std::vector {-0.99932930f, - -0.96402758f, - -0.76159416f, - -0.46211716f, - -0.24491866f, - 0.00000000f, - 0.24491866f, - 0.46211716f, - 0.76159416f, - 0.96402758f, - 0.99932930f}}), - Builder {} - .input({{7}, element::i32, std::vector {-4, -2, -1, 0, 1, 2, 4}}) - .expected({{7}, element::i32, std::vector {-1, -1, -1, 0, 1, 1, 1}}), - Builder {} - .input({{7}, element::i64, std::vector {-4, -2, -1, 0, 1, 2, 4}}) - .expected({{7}, element::i64, std::vector {-1, -1, -1, 0, 1, 1, 1}}), - Builder {} - .input({{4}, element::u32, std::vector {0, 1, 2, 4}}) - .expected({{4}, element::u32, std::vector {0, 1, 1, 1}}), - Builder {} - .input({{4}, element::u64, std::vector {0, 1, 2, 4}}) - .expected({{4}, element::u64, std::vector {0, 1, 1, 1}})), + Builder{} + .input({{11}, + element::f16, + std::vector{-4.f, -2.f, -1.f, -0.5f, -0.25f, 0.f, 0.25f, 0.5f, 1.f, 2.f, 4.f}}) + .expected({{11}, + element::f16, + std::vector{-0.99932930f, + -0.96402758f, + -0.76159416f, + -0.46211716f, + -0.24491866f, + 0.00000000f, + 0.24491866f, + 0.46211716f, + 0.76159416f, + 0.96402758f, + 0.99932930f}}), + Builder{} + .input({{11}, + element::f32, + std::vector{-4.f, -2.f, -1.f, -0.5f, -0.25f, 0.f, 0.25f, 0.5f, 1.f, 2.f, 4.f}}) + .expected({{11}, + element::f32, + std::vector{-0.99932930f, + -0.96402758f, + -0.76159416f, + -0.46211716f, + -0.24491866f, + 0.00000000f, + 0.24491866f, + 0.46211716f, + 0.76159416f, + 0.96402758f, + 0.99932930f}}), + Builder{} + .input({{7}, element::i32, std::vector{-4, -2, -1, 0, 1, 2, 4}}) + .expected({{7}, element::i32, std::vector{-1, -1, -1, 0, 1, 1, 1}}), + Builder{} + .input({{7}, element::i64, std::vector{-4, -2, -1, 0, 1, 2, 4}}) + .expected({{7}, element::i64, std::vector{-1, -1, -1, 0, 1, 1, 1}}), + Builder{} + .input({{4}, element::u32, std::vector{0, 1, 2, 4}}) + .expected({{4}, element::u32, std::vector{0, 1, 1, 1}}), + Builder{} + .input({{4}, element::u64, std::vector{0, 1, 2, 4}}) + .expected({{4}, element::u64, std::vector{0, 1, 1, 1}})), ReferenceTanhLayerTest::getTestCaseName); } // namespace reference_tests diff --git a/src/plugins/template/tests/functional/op_reference/tensor_iterator.cpp b/src/plugins/template/tests/functional/op_reference/tensor_iterator.cpp index 1caa12dff5c..5c53422b0da 100644 --- a/src/plugins/template/tests/functional/op_reference/tensor_iterator.cpp +++ b/src/plugins/template/tests/functional/op_reference/tensor_iterator.cpp @@ -12,8 +12,8 @@ namespace { struct TIFunctionalBase { - virtual std::shared_ptr create_function(const std::vector &ti_inputs, - const std::vector &results) = 0; + virtual std::shared_ptr create_function(const std::vector& ti_inputs, + const std::vector& results) = 0; TIFunctionalBase() = default; @@ -21,8 +21,8 @@ struct TIFunctionalBase { }; struct TIDynamicInputs : public TIFunctionalBase { - std::shared_ptr create_function(const std::vector &ti_inputs, - const std::vector &results) override { + std::shared_ptr create_function(const std::vector& ti_inputs, + const std::vector& results) override { auto X = std::make_shared(ov::element::f32, ov::PartialShape::dynamic()); auto Y = std::make_shared(ov::element::f32, ov::PartialShape::dynamic()); auto M = std::make_shared(ov::element::f32, ov::PartialShape::dynamic()); @@ -39,8 +39,8 @@ struct TIDynamicInputs : public TIFunctionalBase { // Body auto sum = std::make_shared(Xi, Yi); auto Zo = std::make_shared(sum, M_body); - auto body = std::make_shared(ov::OutputVector{body_condition, Zo}, - ov::ParameterVector{Xi, Yi, M_body}); + auto body = + std::make_shared(ov::OutputVector{body_condition, Zo}, ov::ParameterVector{Xi, Yi, M_body}); auto tensor_iterator = std::make_shared(); tensor_iterator->set_function(body); @@ -56,14 +56,14 @@ struct TIDynamicInputs : public TIFunctionalBase { }; struct TensorIteratorParams { - TensorIteratorParams(const std::shared_ptr &functional, - const std::vector &ti_inputs, - const std::vector &expected_results, - const std::string &test_case_name) + TensorIteratorParams(const std::shared_ptr& functional, + const std::vector& ti_inputs, + const std::vector& expected_results, + const std::string& test_case_name) : function(functional), - inputs(ti_inputs), - expected_results(expected_results), - test_case_name(test_case_name) {} + inputs(ti_inputs), + expected_results(expected_results), + test_case_name(test_case_name) {} std::shared_ptr function; std::vector inputs; @@ -72,7 +72,7 @@ struct TensorIteratorParams { }; class ReferenceTILayerTest : public testing::TestWithParam, - public reference_tests::CommonReferenceTest { + public reference_tests::CommonReferenceTest { public: void SetUp() override { SKIP_IF_CURRENT_TEST_IS_DISABLED() @@ -80,15 +80,15 @@ public: function = params.function->create_function(params.inputs, params.expected_results); inputData.reserve(params.inputs.size()); refOutData.reserve(params.expected_results.size()); - for (auto &input_tensor: params.inputs) { + for (auto& input_tensor : params.inputs) { inputData.push_back(input_tensor.data); } - for (auto &expected_tensor: params.expected_results) { + for (auto& expected_tensor : params.expected_results) { refOutData.push_back(expected_tensor.data); } } - static std::string getTestCaseName(const testing::TestParamInfo &obj) { + static std::string getTestCaseName(const testing::TestParamInfo& obj) { auto param = obj.param; return param.test_case_name; } @@ -98,20 +98,18 @@ TEST_P(ReferenceTILayerTest, TensorIteratorWithHardcodedRefs) { Exec(); } -INSTANTIATE_TEST_SUITE_P( - smoke_TensorIterator_With_Hardcoded_Refs, - ReferenceTILayerTest, - ::testing::Values( - TensorIteratorParams( - std::make_shared(), - std::vector{ - reference_tests::Tensor(ov::element::f32, ov::Shape{1, 2}, std::vector{2, 3}), - reference_tests::Tensor(ov::element::f32, ov::Shape{2, 1}, std::vector{4, 5}), - reference_tests::Tensor(ov::element::f32, ov::Shape{1, 1}, std::vector{5})}, - std::vector{ - reference_tests::Tensor(ov::element::f32, ov::Shape{1, 1}, std::vector{240})}, - "tensor_iterator_dynamic_inputs")), - ReferenceTILayerTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_TensorIterator_With_Hardcoded_Refs, + ReferenceTILayerTest, + ::testing::Values(TensorIteratorParams( + std::make_shared(), + std::vector{ + reference_tests::Tensor(ov::element::f32, ov::Shape{1, 2}, std::vector{2, 3}), + reference_tests::Tensor(ov::element::f32, ov::Shape{2, 1}, std::vector{4, 5}), + reference_tests::Tensor(ov::element::f32, ov::Shape{1, 1}, std::vector{5})}, + std::vector{ + reference_tests::Tensor(ov::element::f32, ov::Shape{1, 1}, std::vector{240})}, + "tensor_iterator_dynamic_inputs")), + ReferenceTILayerTest::getTestCaseName); enum TensorIteratorBodyType { RNN, @@ -129,87 +127,104 @@ struct TIStaticFunctionalBase { struct TensorIteratorStaticParams { template - TensorIteratorStaticParams( - const std::shared_ptr& functional, - const size_t batchSize, const size_t inputSize, const size_t hiddenSize, const size_t seqLength, - const float clip, const ov::op::RecurrentSequenceDirection& direction, - const TensorIteratorBodyType& body_type, - const ov::element::Type_t& iType, - const std::vector& XValues, const std::vector& H_tValues, const std::vector& C_tValues, const std::vector& S_tValues, - const std::vector& WValues, const std::vector& RValues, const std::vector& BValues, - const std::vector& YValues, const std::vector& HoValues, const std::vector& CoValues, - const std::string& testcaseName = "") : - function(functional), - batchSize(batchSize), inputSize(inputSize), hiddenSize(hiddenSize), seqLength(seqLength), - clip(clip), body_type(body_type), direction(direction), iType(iType), oType(iType), - testcaseName(testcaseName) { - switch (body_type) { - case TensorIteratorBodyType::LSTM: { - ov::Shape XShape = ov::Shape{batchSize, seqLength, inputSize}; - ov::Shape H_tShape = ov::Shape{batchSize, hiddenSize}; - ov::Shape C_tShape = ov::Shape{batchSize, hiddenSize}; - ov::Shape S_tShape = ov::Shape{batchSize}; - ov::Shape WShape = ov::Shape{4 * hiddenSize, inputSize}; - ov::Shape RShape = ov::Shape{4 * hiddenSize, hiddenSize}; - ov::Shape BShape = ov::Shape{4 * hiddenSize}; - ov::Shape YShape = ov::Shape{batchSize, seqLength, hiddenSize}; - ov::Shape HoShape = ov::Shape{batchSize, hiddenSize}; - ov::Shape CoShape = ov::Shape{batchSize, hiddenSize}; + TensorIteratorStaticParams(const std::shared_ptr& functional, + const size_t batchSize, + const size_t inputSize, + const size_t hiddenSize, + const size_t seqLength, + const float clip, + const ov::op::RecurrentSequenceDirection& direction, + const TensorIteratorBodyType& body_type, + const ov::element::Type_t& iType, + const std::vector& XValues, + const std::vector& H_tValues, + const std::vector& C_tValues, + const std::vector& S_tValues, + const std::vector& WValues, + const std::vector& RValues, + const std::vector& BValues, + const std::vector& YValues, + const std::vector& HoValues, + const std::vector& CoValues, + const std::string& testcaseName = "") + : function(functional), + batchSize(batchSize), + inputSize(inputSize), + hiddenSize(hiddenSize), + seqLength(seqLength), + clip(clip), + body_type(body_type), + direction(direction), + iType(iType), + oType(iType), + testcaseName(testcaseName) { + switch (body_type) { + case TensorIteratorBodyType::LSTM: { + ov::Shape XShape = ov::Shape{batchSize, seqLength, inputSize}; + ov::Shape H_tShape = ov::Shape{batchSize, hiddenSize}; + ov::Shape C_tShape = ov::Shape{batchSize, hiddenSize}; + ov::Shape S_tShape = ov::Shape{batchSize}; + ov::Shape WShape = ov::Shape{4 * hiddenSize, inputSize}; + ov::Shape RShape = ov::Shape{4 * hiddenSize, hiddenSize}; + ov::Shape BShape = ov::Shape{4 * hiddenSize}; + ov::Shape YShape = ov::Shape{batchSize, seqLength, hiddenSize}; + ov::Shape HoShape = ov::Shape{batchSize, hiddenSize}; + ov::Shape CoShape = ov::Shape{batchSize, hiddenSize}; - X = reference_tests::Tensor(XShape, iType, XValues); - H_t = reference_tests::Tensor(H_tShape, iType, H_tValues); - C_t = reference_tests::Tensor(C_tShape, iType, C_tValues); - S_t = reference_tests::Tensor(S_tShape, ov::element::Type_t::i64, S_tValues); - W = reference_tests::Tensor(WShape, iType, WValues); - R = reference_tests::Tensor(RShape, iType, RValues); - B = reference_tests::Tensor(BShape, iType, BValues); - Y = reference_tests::Tensor(YShape, oType, YValues); - Ho = reference_tests::Tensor(HoShape, oType, HoValues); - Co = reference_tests::Tensor(CoShape, oType, CoValues); - break; - } - case TensorIteratorBodyType::GRU: { - ov::Shape XShape = ov::Shape{batchSize, seqLength, inputSize}; - ov::Shape H_tShape = ov::Shape{batchSize, hiddenSize}; - ov::Shape S_tShape = ov::Shape{batchSize}; - ov::Shape WShape = ov::Shape{3 * hiddenSize, inputSize}; - ov::Shape RShape = ov::Shape{3 * hiddenSize, hiddenSize}; - ov::Shape BShape = ov::Shape{3 * hiddenSize}; - ov::Shape YShape = ov::Shape{batchSize, seqLength, hiddenSize}; - ov::Shape HoShape = ov::Shape{batchSize, hiddenSize}; - - X = reference_tests::Tensor(XShape, iType, XValues); - H_t = reference_tests::Tensor(H_tShape, iType, H_tValues); - S_t = reference_tests::Tensor(S_tShape, ov::element::Type_t::i64, S_tValues); - W = reference_tests::Tensor(WShape, iType, WValues); - R = reference_tests::Tensor(RShape, iType, RValues); - B = reference_tests::Tensor(BShape, iType, BValues); - Y = reference_tests::Tensor(YShape, oType, YValues); - Ho = reference_tests::Tensor(HoShape, oType, HoValues); - break; - } - case TensorIteratorBodyType::RNN: { - ov::Shape XShape = ov::Shape{batchSize, seqLength, inputSize}; - ov::Shape H_tShape = ov::Shape{batchSize, hiddenSize}; - ov::Shape S_tShape = ov::Shape{batchSize}; - ov::Shape WShape = ov::Shape{hiddenSize, inputSize}; - ov::Shape RShape = ov::Shape{hiddenSize, hiddenSize}; - ov::Shape BShape = ov::Shape{hiddenSize}; - ov::Shape YShape = ov::Shape{batchSize, seqLength, hiddenSize}; - ov::Shape HoShape = ov::Shape{batchSize, hiddenSize}; - - X = reference_tests::Tensor(XShape, iType, XValues); - H_t = reference_tests::Tensor(H_tShape, iType, H_tValues); - S_t = reference_tests::Tensor(S_tShape, ov::element::Type_t::i64, S_tValues); - W = reference_tests::Tensor(WShape, iType, WValues); - R = reference_tests::Tensor(RShape, iType, RValues); - B = reference_tests::Tensor(BShape, iType, BValues); - Y = reference_tests::Tensor(YShape, oType, YValues); - Ho = reference_tests::Tensor(HoShape, oType, HoValues); - break; - } - } + X = reference_tests::Tensor(XShape, iType, XValues); + H_t = reference_tests::Tensor(H_tShape, iType, H_tValues); + C_t = reference_tests::Tensor(C_tShape, iType, C_tValues); + S_t = reference_tests::Tensor(S_tShape, ov::element::Type_t::i64, S_tValues); + W = reference_tests::Tensor(WShape, iType, WValues); + R = reference_tests::Tensor(RShape, iType, RValues); + B = reference_tests::Tensor(BShape, iType, BValues); + Y = reference_tests::Tensor(YShape, oType, YValues); + Ho = reference_tests::Tensor(HoShape, oType, HoValues); + Co = reference_tests::Tensor(CoShape, oType, CoValues); + break; } + case TensorIteratorBodyType::GRU: { + ov::Shape XShape = ov::Shape{batchSize, seqLength, inputSize}; + ov::Shape H_tShape = ov::Shape{batchSize, hiddenSize}; + ov::Shape S_tShape = ov::Shape{batchSize}; + ov::Shape WShape = ov::Shape{3 * hiddenSize, inputSize}; + ov::Shape RShape = ov::Shape{3 * hiddenSize, hiddenSize}; + ov::Shape BShape = ov::Shape{3 * hiddenSize}; + ov::Shape YShape = ov::Shape{batchSize, seqLength, hiddenSize}; + ov::Shape HoShape = ov::Shape{batchSize, hiddenSize}; + + X = reference_tests::Tensor(XShape, iType, XValues); + H_t = reference_tests::Tensor(H_tShape, iType, H_tValues); + S_t = reference_tests::Tensor(S_tShape, ov::element::Type_t::i64, S_tValues); + W = reference_tests::Tensor(WShape, iType, WValues); + R = reference_tests::Tensor(RShape, iType, RValues); + B = reference_tests::Tensor(BShape, iType, BValues); + Y = reference_tests::Tensor(YShape, oType, YValues); + Ho = reference_tests::Tensor(HoShape, oType, HoValues); + break; + } + case TensorIteratorBodyType::RNN: { + ov::Shape XShape = ov::Shape{batchSize, seqLength, inputSize}; + ov::Shape H_tShape = ov::Shape{batchSize, hiddenSize}; + ov::Shape S_tShape = ov::Shape{batchSize}; + ov::Shape WShape = ov::Shape{hiddenSize, inputSize}; + ov::Shape RShape = ov::Shape{hiddenSize, hiddenSize}; + ov::Shape BShape = ov::Shape{hiddenSize}; + ov::Shape YShape = ov::Shape{batchSize, seqLength, hiddenSize}; + ov::Shape HoShape = ov::Shape{batchSize, hiddenSize}; + + X = reference_tests::Tensor(XShape, iType, XValues); + H_t = reference_tests::Tensor(H_tShape, iType, H_tValues); + S_t = reference_tests::Tensor(S_tShape, ov::element::Type_t::i64, S_tValues); + W = reference_tests::Tensor(WShape, iType, WValues); + R = reference_tests::Tensor(RShape, iType, RValues); + B = reference_tests::Tensor(BShape, iType, BValues); + Y = reference_tests::Tensor(YShape, oType, YValues); + Ho = reference_tests::Tensor(HoShape, oType, HoValues); + break; + } + } + } std::shared_ptr function; @@ -248,206 +263,213 @@ struct TIStaticInputs : public TIStaticFunctionalBase { // 1. Create TensorIterator body. // 2. Set PortMap // 3. Create outer function - auto axis = std::make_shared(ov::element::i64, ov::Shape{1}, - std::vector{static_cast(params.sequenceAxis)}); + auto axis = + std::make_shared(ov::element::i64, + ov::Shape{1}, + std::vector{static_cast(params.sequenceAxis)}); switch (params.body_type) { - case TensorIteratorBodyType::LSTM: { - inputShapes = { - {{params.batchSize, params.seqLength, params.inputSize}, // X - {params.batchSize, params.hiddenSize}, // H_i - {params.batchSize, params.hiddenSize}, // C_i - {4 * params.hiddenSize, params.inputSize}, // W - {4 * params.hiddenSize, params.inputSize}, // R - {4 * params.inputSize}}, // B - }; - if (params.sequenceAxis == 0) { - // swap params.batchSize and params.seqLength - std::swap(inputShapes[0][0], inputShapes[0][1]); - } - ov::ParameterVector outer_params{std::make_shared(params.iType, inputShapes[0]), - std::make_shared(params.iType, inputShapes[1]), - std::make_shared(params.iType, inputShapes[2])}; - - // 1. Create TensorIterator body. - inputShapes[0][params.sequenceAxis] = 1; // sliced dimension - ov::ParameterVector body_params{std::make_shared(params.iType, inputShapes[0]), - std::make_shared(params.iType, inputShapes[1]), - std::make_shared(params.iType, inputShapes[2])}; - auto squeeze = std::make_shared(body_params[0], axis); - ov::OutputVector out_vector = {squeeze, body_params[1], body_params[2]}; - - auto W = std::make_shared(params.W.type, params.W.shape, params.W.data.data()); - auto R = std::make_shared(params.R.type, params.R.shape, params.R.data.data()); - auto B = std::make_shared(params.B.type, params.B.shape, params.B.data.data()); - auto lstm_cell = std::make_shared(out_vector[0], - out_vector[1], - out_vector[2], - W, - R, - B, - params.hiddenSize, - std::vector{"sigmoid", "tanh", "tanh"}, - std::vector{}, - std::vector{}, - params.clip); - - auto unsqueeze = std::make_shared(lstm_cell->output(0), axis); - ov::ResultVector results{std::make_shared(unsqueeze), - std::make_shared(lstm_cell->output(0)), - std::make_shared(lstm_cell->output(1))}; - auto body = std::make_shared(results, body_params, "lstm_cell"); - tensor_iterator->set_function(body); - - // 2. Set PortMap - if (params.direction == ov::op::RecurrentSequenceDirection::FORWARD) { - tensor_iterator->set_sliced_input(body_params[0], outer_params[0], 0, 1, 1, -1, params.sequenceAxis); - tensor_iterator->get_concatenated_slices(results[0], 0, 1, 1, -1, params.sequenceAxis); - } else if (params.direction == ov::op::RecurrentSequenceDirection::REVERSE) { - tensor_iterator->set_sliced_input(body_params[0], outer_params[0], -1, -1, 1, 0, params.sequenceAxis); - tensor_iterator->get_concatenated_slices(results[0], -1, -1, 1, 0, params.sequenceAxis); - } else { - OPENVINO_ASSERT(false, "Bidirectional case is not supported."); - } - - tensor_iterator->set_merged_input(body_params[1], outer_params[1], results[1]); - tensor_iterator->set_merged_input(body_params[2], outer_params[2], results[2]); - tensor_iterator->get_iter_value(results[1]); - tensor_iterator->get_iter_value(results[2]); - - // 3. Outer function - function = std::make_shared(ov::OutputVector{tensor_iterator->output(0), tensor_iterator->output(1), - tensor_iterator->output(2)}, outer_params); - break; + case TensorIteratorBodyType::LSTM: { + inputShapes = { + {{params.batchSize, params.seqLength, params.inputSize}, // X + {params.batchSize, params.hiddenSize}, // H_i + {params.batchSize, params.hiddenSize}, // C_i + {4 * params.hiddenSize, params.inputSize}, // W + {4 * params.hiddenSize, params.inputSize}, // R + {4 * params.inputSize}}, // B + }; + if (params.sequenceAxis == 0) { + // swap params.batchSize and params.seqLength + std::swap(inputShapes[0][0], inputShapes[0][1]); } - case TensorIteratorBodyType::GRU: { - inputShapes = { - {{params.batchSize, params.seqLength, params.inputSize}, // X - {params.batchSize, params.inputSize}, // H_i - {3 * params.hiddenSize, params.inputSize}, // W - {3 * params.hiddenSize, params.hiddenSize}, // R - {3 * params.hiddenSize}}, // B - }; - if (params.sequenceAxis == 0) { - // swap params.batchSize and params.seqLength - std::swap(inputShapes[0][0], inputShapes[0][1]); - } - ov::ParameterVector outer_params{std::make_shared(params.iType, inputShapes[0]), - std::make_shared(params.iType, inputShapes[1])}; + ov::ParameterVector outer_params{std::make_shared(params.iType, inputShapes[0]), + std::make_shared(params.iType, inputShapes[1]), + std::make_shared(params.iType, inputShapes[2])}; - // 1. Create TensorIterator body. - inputShapes[0][params.sequenceAxis] = 1; // sliced dimension - ov::ParameterVector body_params{std::make_shared(params.iType, inputShapes[0]), - std::make_shared(params.iType, inputShapes[1])}; + // 1. Create TensorIterator body. + inputShapes[0][params.sequenceAxis] = 1; // sliced dimension + ov::ParameterVector body_params{std::make_shared(params.iType, inputShapes[0]), + std::make_shared(params.iType, inputShapes[1]), + std::make_shared(params.iType, inputShapes[2])}; + auto squeeze = std::make_shared(body_params[0], axis); + ov::OutputVector out_vector = {squeeze, body_params[1], body_params[2]}; - auto squeeze = std::make_shared(body_params[0], axis); - ov::OutputVector out_vector = {squeeze, body_params[1]}; + auto W = std::make_shared(params.W.type, params.W.shape, params.W.data.data()); + auto R = std::make_shared(params.R.type, params.R.shape, params.R.data.data()); + auto B = std::make_shared(params.B.type, params.B.shape, params.B.data.data()); + auto lstm_cell = std::make_shared(out_vector[0], + out_vector[1], + out_vector[2], + W, + R, + B, + params.hiddenSize, + std::vector{"sigmoid", "tanh", "tanh"}, + std::vector{}, + std::vector{}, + params.clip); - auto W = std::make_shared(params.W.type, params.W.shape, params.W.data.data()); - auto R = std::make_shared(params.R.type, params.R.shape, params.R.data.data()); - auto B = std::make_shared(params.B.type, params.B.shape, params.B.data.data()); - auto gru_cell = std::make_shared(out_vector[0], - out_vector[1], - W, - R, - B, - params.hiddenSize, - std::vector{"sigmoid", "tanh"}, - std::vector{}, - std::vector{}, - params.clip, - false); + auto unsqueeze = std::make_shared(lstm_cell->output(0), axis); + ov::ResultVector results{std::make_shared(unsqueeze), + std::make_shared(lstm_cell->output(0)), + std::make_shared(lstm_cell->output(1))}; + auto body = std::make_shared(results, body_params, "lstm_cell"); + tensor_iterator->set_function(body); - auto unsqueeze = std::make_shared(gru_cell->output(0), axis); - ov::ResultVector results{std::make_shared(gru_cell->output(0)), - std::make_shared(unsqueeze)}; - auto body = std::make_shared(results, body_params, "gru_cell"); - tensor_iterator->set_function(body); - - // 2. Set PortMap - if (params.direction == ov::op::RecurrentSequenceDirection::FORWARD) { - tensor_iterator->set_sliced_input(body_params[0], outer_params[0], 0, 1, 1, -1, params.sequenceAxis); - tensor_iterator->get_concatenated_slices(results[1], 0, 1, 1, -1, params.sequenceAxis); - } else if (params.direction == ov::op::RecurrentSequenceDirection::REVERSE) { - tensor_iterator->set_sliced_input(body_params[0], outer_params[0], -1, -1, 1, 0, params.sequenceAxis); - tensor_iterator->get_concatenated_slices(results[1], -1, -1, 1, 0, params.sequenceAxis); - } else { - OPENVINO_ASSERT(false, "Bidirectional case is not supported."); - } - - tensor_iterator->set_merged_input(body_params[1], outer_params[1], results[0]); - tensor_iterator->get_iter_value(results[0]); - - // 3. Outer function - function = std::make_shared(ov::OutputVector{tensor_iterator->output(0), tensor_iterator->output(1)}, outer_params); - break; + // 2. Set PortMap + if (params.direction == ov::op::RecurrentSequenceDirection::FORWARD) { + tensor_iterator->set_sliced_input(body_params[0], outer_params[0], 0, 1, 1, -1, params.sequenceAxis); + tensor_iterator->get_concatenated_slices(results[0], 0, 1, 1, -1, params.sequenceAxis); + } else if (params.direction == ov::op::RecurrentSequenceDirection::REVERSE) { + tensor_iterator->set_sliced_input(body_params[0], outer_params[0], -1, -1, 1, 0, params.sequenceAxis); + tensor_iterator->get_concatenated_slices(results[0], -1, -1, 1, 0, params.sequenceAxis); + } else { + OPENVINO_ASSERT(false, "Bidirectional case is not supported."); } - case TensorIteratorBodyType::RNN: { - inputShapes = { - {{params.batchSize, params.seqLength, params.inputSize}, // X - {params.batchSize, params.inputSize}, // H_i - {params.hiddenSize, params.inputSize}, // W - {params.hiddenSize, params.hiddenSize}, // R - {params.hiddenSize}}, // B - }; - if (params.sequenceAxis == 0) { - // swap params.batchSize and params.seqLength - std::swap(inputShapes[0][0], inputShapes[0][1]); - } - ov::ParameterVector outer_params{std::make_shared(params.iType, inputShapes[0]), - std::make_shared(params.iType, inputShapes[1])}; - // 1. Create TensorIterator body. - inputShapes[0][params.sequenceAxis] = 1; // sliced dimension - ov::ParameterVector body_params{std::make_shared(params.iType, inputShapes[0]), - std::make_shared(params.iType, inputShapes[1])}; - auto squeeze = std::make_shared(body_params[0], axis); - ov::OutputVector out_vector = {squeeze, body_params[1]}; + tensor_iterator->set_merged_input(body_params[1], outer_params[1], results[1]); + tensor_iterator->set_merged_input(body_params[2], outer_params[2], results[2]); + tensor_iterator->get_iter_value(results[1]); + tensor_iterator->get_iter_value(results[2]); - auto W = std::make_shared(params.W.type, params.W.shape, params.W.data.data()); - auto R = std::make_shared(params.R.type, params.R.shape, params.R.data.data()); - auto B = std::make_shared(params.B.type, params.B.shape, params.B.data.data()); - auto rnn_cell = std::make_shared(out_vector[0], - out_vector[1], - W, - R, - B, - params.hiddenSize, - std::vector{"tanh"}, - std::vector{}, - std::vector{}, - params.clip); - - auto unsqueeze = std::make_shared(rnn_cell->output(0), axis); - ov::ResultVector results{std::make_shared(rnn_cell), - std::make_shared(unsqueeze)}; - auto body = std::make_shared(results, body_params, "rnn_cell"); - tensor_iterator->set_function(body); - - // 2. Set PortMap - if (params.direction == ov::op::RecurrentSequenceDirection::FORWARD) { - tensor_iterator->set_sliced_input(body_params[0], outer_params[0], 0, 1, 1, -1, params.sequenceAxis); - tensor_iterator->get_concatenated_slices(results[1], 0, 1, 1, -1, params.sequenceAxis); - } else if (params.direction == ov::op::RecurrentSequenceDirection::REVERSE) { - tensor_iterator->set_sliced_input(body_params[0], outer_params[0], -1, -1, 1, 0, params.sequenceAxis); - tensor_iterator->get_concatenated_slices(results[1], -1, -1, 1, 0, params.sequenceAxis); - } else { - OPENVINO_ASSERT(false, "Bidirectional case is not supported."); - } - - tensor_iterator->set_merged_input(body_params[1], outer_params[1], results[0]); - tensor_iterator->get_iter_value(results[0]); - - // 3. Outer function - function = std::make_shared(ov::OutputVector{tensor_iterator->output(0), tensor_iterator->output(1)}, outer_params); - break; + // 3. Outer function + function = std::make_shared( + ov::OutputVector{tensor_iterator->output(0), tensor_iterator->output(1), tensor_iterator->output(2)}, + outer_params); + break; + } + case TensorIteratorBodyType::GRU: { + inputShapes = { + {{params.batchSize, params.seqLength, params.inputSize}, // X + {params.batchSize, params.inputSize}, // H_i + {3 * params.hiddenSize, params.inputSize}, // W + {3 * params.hiddenSize, params.hiddenSize}, // R + {3 * params.hiddenSize}}, // B + }; + if (params.sequenceAxis == 0) { + // swap params.batchSize and params.seqLength + std::swap(inputShapes[0][0], inputShapes[0][1]); } + ov::ParameterVector outer_params{std::make_shared(params.iType, inputShapes[0]), + std::make_shared(params.iType, inputShapes[1])}; + + // 1. Create TensorIterator body. + inputShapes[0][params.sequenceAxis] = 1; // sliced dimension + ov::ParameterVector body_params{std::make_shared(params.iType, inputShapes[0]), + std::make_shared(params.iType, inputShapes[1])}; + + auto squeeze = std::make_shared(body_params[0], axis); + ov::OutputVector out_vector = {squeeze, body_params[1]}; + + auto W = std::make_shared(params.W.type, params.W.shape, params.W.data.data()); + auto R = std::make_shared(params.R.type, params.R.shape, params.R.data.data()); + auto B = std::make_shared(params.B.type, params.B.shape, params.B.data.data()); + auto gru_cell = std::make_shared(out_vector[0], + out_vector[1], + W, + R, + B, + params.hiddenSize, + std::vector{"sigmoid", "tanh"}, + std::vector{}, + std::vector{}, + params.clip, + false); + + auto unsqueeze = std::make_shared(gru_cell->output(0), axis); + ov::ResultVector results{std::make_shared(gru_cell->output(0)), + std::make_shared(unsqueeze)}; + auto body = std::make_shared(results, body_params, "gru_cell"); + tensor_iterator->set_function(body); + + // 2. Set PortMap + if (params.direction == ov::op::RecurrentSequenceDirection::FORWARD) { + tensor_iterator->set_sliced_input(body_params[0], outer_params[0], 0, 1, 1, -1, params.sequenceAxis); + tensor_iterator->get_concatenated_slices(results[1], 0, 1, 1, -1, params.sequenceAxis); + } else if (params.direction == ov::op::RecurrentSequenceDirection::REVERSE) { + tensor_iterator->set_sliced_input(body_params[0], outer_params[0], -1, -1, 1, 0, params.sequenceAxis); + tensor_iterator->get_concatenated_slices(results[1], -1, -1, 1, 0, params.sequenceAxis); + } else { + OPENVINO_ASSERT(false, "Bidirectional case is not supported."); + } + + tensor_iterator->set_merged_input(body_params[1], outer_params[1], results[0]); + tensor_iterator->get_iter_value(results[0]); + + // 3. Outer function + function = + std::make_shared(ov::OutputVector{tensor_iterator->output(0), tensor_iterator->output(1)}, + outer_params); + break; + } + case TensorIteratorBodyType::RNN: { + inputShapes = { + {{params.batchSize, params.seqLength, params.inputSize}, // X + {params.batchSize, params.inputSize}, // H_i + {params.hiddenSize, params.inputSize}, // W + {params.hiddenSize, params.hiddenSize}, // R + {params.hiddenSize}}, // B + }; + if (params.sequenceAxis == 0) { + // swap params.batchSize and params.seqLength + std::swap(inputShapes[0][0], inputShapes[0][1]); + } + ov::ParameterVector outer_params{std::make_shared(params.iType, inputShapes[0]), + std::make_shared(params.iType, inputShapes[1])}; + + // 1. Create TensorIterator body. + inputShapes[0][params.sequenceAxis] = 1; // sliced dimension + ov::ParameterVector body_params{std::make_shared(params.iType, inputShapes[0]), + std::make_shared(params.iType, inputShapes[1])}; + auto squeeze = std::make_shared(body_params[0], axis); + ov::OutputVector out_vector = {squeeze, body_params[1]}; + + auto W = std::make_shared(params.W.type, params.W.shape, params.W.data.data()); + auto R = std::make_shared(params.R.type, params.R.shape, params.R.data.data()); + auto B = std::make_shared(params.B.type, params.B.shape, params.B.data.data()); + auto rnn_cell = std::make_shared(out_vector[0], + out_vector[1], + W, + R, + B, + params.hiddenSize, + std::vector{"tanh"}, + std::vector{}, + std::vector{}, + params.clip); + + auto unsqueeze = std::make_shared(rnn_cell->output(0), axis); + ov::ResultVector results{std::make_shared(rnn_cell), + std::make_shared(unsqueeze)}; + auto body = std::make_shared(results, body_params, "rnn_cell"); + tensor_iterator->set_function(body); + + // 2. Set PortMap + if (params.direction == ov::op::RecurrentSequenceDirection::FORWARD) { + tensor_iterator->set_sliced_input(body_params[0], outer_params[0], 0, 1, 1, -1, params.sequenceAxis); + tensor_iterator->get_concatenated_slices(results[1], 0, 1, 1, -1, params.sequenceAxis); + } else if (params.direction == ov::op::RecurrentSequenceDirection::REVERSE) { + tensor_iterator->set_sliced_input(body_params[0], outer_params[0], -1, -1, 1, 0, params.sequenceAxis); + tensor_iterator->get_concatenated_slices(results[1], -1, -1, 1, 0, params.sequenceAxis); + } else { + OPENVINO_ASSERT(false, "Bidirectional case is not supported."); + } + + tensor_iterator->set_merged_input(body_params[1], outer_params[1], results[0]); + tensor_iterator->get_iter_value(results[0]); + + // 3. Outer function + function = + std::make_shared(ov::OutputVector{tensor_iterator->output(0), tensor_iterator->output(1)}, + outer_params); + break; + } } return function; } }; class ReferenceTILayerStaticTest : public testing::TestWithParam, - public reference_tests::CommonReferenceTest { + public reference_tests::CommonReferenceTest { public: void SetUp() override { SKIP_IF_CURRENT_TEST_IS_DISABLED() @@ -491,1112 +513,1172 @@ template std::vector generateParams() { using T = typename ov::element_type_traits::value_type; - std::vector params { + std::vector params{ TensorIteratorStaticParams( std::make_shared(), - 5, 10, 10, 10, - 0.7f, ov::op::RecurrentSequenceDirection::FORWARD, TensorIteratorBodyType::LSTM, + 5, + 10, + 10, + 10, + 0.7f, + ov::op::RecurrentSequenceDirection::FORWARD, + TensorIteratorBodyType::LSTM, ET, std::vector{ - 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, - 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, - 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, - 7.03475, 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, - 6.61627, 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 2.07541, - 5.72319, 1.75261, 9.25175, 9.19404, 3.69037, 6.2595, 6.09321, 6.52544, 9.60882, 3.34881, - 3.07914, 5.80104, 9.54944, 5.43754, 5.8654, 7.88937, 1.40811, 2.2597, 8.13163, 1.26821, - 8.94813, 5.86709, 5.03182, 9.02922, 4.39826, 5.84582, 6.87069, 4.25135, 6.13908, 6.74053, - 2.13683, 7.21184, 6.82974, 4.18545, 7.8691, 4.20879, 7.77509, 8.93208, 1.10502, 5.48298, - 1.66413, 8.08256, 1.57661, 4.19779, 9.47653, 4.41823, 7.86628, 7.94436, 3.71224, 7.95465, - 2.37637, 6.20771, 1.08107, 7.38138, 5.23577, 7.88133, 5.20653, 3.42101, 8.48523, 5.96192, - 1.63073, 5.25228, 7.68488, 2.7276, 5.1788, 3.07327, 5.57423, 2.87711, 1.44374, 5.66976, - 2.55051, 4.56682, 1.96629, 5.58829, 1.91922, 3.59846, 3.08583, 9.70901, 3.50487, 3.1026, - 1.82401, 6.1306, 4.76134, 4.31059, 8.31695, 3.60784, 7.45652, 6.51653, 4.84219, 7.76686, - 4.85031, 4.85544, 4.25714, 2.38005, 9.43471, 9.24769, 8.03763, 6.54696, 1.32399, 6.88891, - 2.16793, 3.64924, 4.24733, 3.47181, 1.66572, 2.36923, 2.45457, 9.44841, 4.34021, 1.45016, - 7.6686, 3.68812, 2.83922, 9.83581, 9.03719, 7.83414, 6.86009, 1.35715, 8.32489, 7.86316, - 5.09754, 5.78644, 1.98402, 2.31429, 5.5791, 2.94085, 9.24799, 5.15937, 2.19041, 7.87817, - 2.9146, 1.66833, 1.85877, 2.45985, 4.20817, 1.85777, 2.28937, 9.37912, 6.18926, 8.55681, - 6.60963, 3.92066, 7.5521, 5.70463, 7.6313, 2.48866, 7.18352, 4.8413, 7.55702, 7.80702, - 4.5785, 9.3268, 2.83159, 1.07202, 9.33716, 3.6506, 2.50256, 1.21691, 5.06801, 8.27505, - 4.31539, 6.48286, 1.31363, 4.1912, 1.70668, 7.23867, 1.11441, 5.13591, 9.65186, 4.00767, - 5.24875, 1.94852, 5.52768, 8.97121, 5.8094, 3.53329, 4.19126, 9.06652, 3.1734, 1.21496, - 9.69154, 4.86971, 4.1166, 6.19361, 2.13874, 9.55039, 3.8225, 9.57548, 2.96554, 3.2383, - 8.77422, 3.11741, 8.3359, 5.89508, 2.72134, 6.29956, 1.43323, 1.14286, 1.4474, 4.59474, - 6.19214, 8.80766, 8.07546, 3.29232, 1.74029, 2.4198, 2.88544, 4.75644, 4.12921, 7.29896, - 7.27759, 1.67252, 1.32823, 8.1046, 9.10476, 1.04197, 3.37783, 5.2064, 4.23835, 3.16196, - 1.20852, 5.78501, 2.17175, 6.05313, 2.51048, 4.78967, 7.16219, 3.4651, 1.09, 2.9788, - 1.28761, 9.41385, 8.03883, 5.65835, 1.14816, 3.6892, 5.86648, 8.73895, 2.66603, 1.75192, - 1.39845, 4.99427, 1.17387, 1.60329, 8.30594, 6.72662, 7.95565, 7.35114, 3.1439, 1.39976, - 3.53095, 8.78581, 1.65811, 6.94299, 2.68641, 5.70058, 9.13491, 5.27637, 8.6232, 8.54902, - 2.25352, 5.86274, 5.20377, 2.96815, 4.96745, 5.3225, 3.99956, 1.08021, 5.54918, 7.05833, - 1.49913, 2.41822, 6.44593, 3.87301, 9.01465, 8.11336, 2.95749, 2.80188, 7.12396, 2.40595, - 5.59325, 9.89258, 2.30223, 1.4347, 9.09158, 7.43797, 3.79295, 4.53646, 1.72705, 4.16909, - 1.00912, 6.62167, 2.80244, 6.626, 3.89307, 1.42586, 7.51028, 7.83327, 4.65674, 7.33902, - 6.26823, 9.72608, 3.73491, 3.8238, 3.03815, 7.05101, 8.0103, 5.61396, 6.53738, 1.41095, - 5.0149, 9.71211, 4.23604, 5.98629, 4.70219, 9.69442, 2.82752, 9.93544, 6.9328, 8.2817, - 5.12336, 8.98577, 5.80541, 6.19552, 9.25748, 3.82732, 7.53525, 8.24712, 5.32057, 5.38817, - 8.57269, 5.99975, 3.42893, 5.38068, 3.48261, 3.02851, 6.82079, 9.2902, 2.80427, 8.91868, - 5.19227, 7.52482, 3.72584, 5.40107, 2.83307, 1.79755, 2.49121, 5.52697, 8.08823, 9.13242, - 2.97572, 7.64318, 3.32023, 6.07788, 2.19187, 4.34879, 1.7457, 5.55154, 7.24966, 5.1128, - 4.25147, 8.34407, 1.4123, 4.49045, 5.12671, 7.62159, 9.18673, 3.49665, 8.35992, 6.90684, - 1.10152, 7.61818, 6.43145, 7.12017, 6.25564, 6.16169, 4.24916, 9.6283, 9.88249, 4.48422, - 8.52562, 9.83928, 6.26818, 7.03839, 1.77631, 9.92305, 8.0155, 9.94928, 6.88321, 1.33685, - 7.4718, 7.19305, 6.47932, 1.9559, 3.52616, 7.98593, 9.0115, 5.59539, 7.44137, 1.70001, - 6.53774, 8.54023, 7.26405, 5.99553, 8.75071, 7.70789, 3.38094, 9.99792, 6.16359, 6.75153, - 5.4073, 9.00437, 8.87059, 8.63011, 6.82951, 6.27021, 3.53425, 9.92489, 8.19695, 5.51473, - 7.95084, 2.11852, 9.28916, 1.40353, 3.05744, 8.58238, 3.75014, 5.35889, 6.85048, 2.29549, - 3.75218, 8.98228, 8.98158, 5.63695, 3.40379, 8.92309, 5.48185, 4.00095, 9.05227, 2.84035, - 8.37644, 8.54954, 5.70516, 2.45744, 9.54079, 1.53504, 8.9785, 6.1691, 4.40962, 10}, - std::vector{ - 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, - 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, - 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, - 7.03475, 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, - 6.61627, 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 10}, - std::vector{ - 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, - 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, - 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, - 7.03475, 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, - 6.61627, 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 10}, + 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, 8.6168, + 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, 8.0055, 7.44373, + 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, 7.03475, 6.33759, 7.04489, + 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, 6.61627, 6.94572, 3.68646, 5.01521, + 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 2.07541, 5.72319, 1.75261, 9.25175, 9.19404, 3.69037, + 6.2595, 6.09321, 6.52544, 9.60882, 3.34881, 3.07914, 5.80104, 9.54944, 5.43754, 5.8654, 7.88937, + 1.40811, 2.2597, 8.13163, 1.26821, 8.94813, 5.86709, 5.03182, 9.02922, 4.39826, 5.84582, 6.87069, + 4.25135, 6.13908, 6.74053, 2.13683, 7.21184, 6.82974, 4.18545, 7.8691, 4.20879, 7.77509, 8.93208, + 1.10502, 5.48298, 1.66413, 8.08256, 1.57661, 4.19779, 9.47653, 4.41823, 7.86628, 7.94436, 3.71224, + 7.95465, 2.37637, 6.20771, 1.08107, 7.38138, 5.23577, 7.88133, 5.20653, 3.42101, 8.48523, 5.96192, + 1.63073, 5.25228, 7.68488, 2.7276, 5.1788, 3.07327, 5.57423, 2.87711, 1.44374, 5.66976, 2.55051, + 4.56682, 1.96629, 5.58829, 1.91922, 3.59846, 3.08583, 9.70901, 3.50487, 3.1026, 1.82401, 6.1306, + 4.76134, 4.31059, 8.31695, 3.60784, 7.45652, 6.51653, 4.84219, 7.76686, 4.85031, 4.85544, 4.25714, + 2.38005, 9.43471, 9.24769, 8.03763, 6.54696, 1.32399, 6.88891, 2.16793, 3.64924, 4.24733, 3.47181, + 1.66572, 2.36923, 2.45457, 9.44841, 4.34021, 1.45016, 7.6686, 3.68812, 2.83922, 9.83581, 9.03719, + 7.83414, 6.86009, 1.35715, 8.32489, 7.86316, 5.09754, 5.78644, 1.98402, 2.31429, 5.5791, 2.94085, + 9.24799, 5.15937, 2.19041, 7.87817, 2.9146, 1.66833, 1.85877, 2.45985, 4.20817, 1.85777, 2.28937, + 9.37912, 6.18926, 8.55681, 6.60963, 3.92066, 7.5521, 5.70463, 7.6313, 2.48866, 7.18352, 4.8413, + 7.55702, 7.80702, 4.5785, 9.3268, 2.83159, 1.07202, 9.33716, 3.6506, 2.50256, 1.21691, 5.06801, + 8.27505, 4.31539, 6.48286, 1.31363, 4.1912, 1.70668, 7.23867, 1.11441, 5.13591, 9.65186, 4.00767, + 5.24875, 1.94852, 5.52768, 8.97121, 5.8094, 3.53329, 4.19126, 9.06652, 3.1734, 1.21496, 9.69154, + 4.86971, 4.1166, 6.19361, 2.13874, 9.55039, 3.8225, 9.57548, 2.96554, 3.2383, 8.77422, 3.11741, + 8.3359, 5.89508, 2.72134, 6.29956, 1.43323, 1.14286, 1.4474, 4.59474, 6.19214, 8.80766, 8.07546, + 3.29232, 1.74029, 2.4198, 2.88544, 4.75644, 4.12921, 7.29896, 7.27759, 1.67252, 1.32823, 8.1046, + 9.10476, 1.04197, 3.37783, 5.2064, 4.23835, 3.16196, 1.20852, 5.78501, 2.17175, 6.05313, 2.51048, + 4.78967, 7.16219, 3.4651, 1.09, 2.9788, 1.28761, 9.41385, 8.03883, 5.65835, 1.14816, 3.6892, + 5.86648, 8.73895, 2.66603, 1.75192, 1.39845, 4.99427, 1.17387, 1.60329, 8.30594, 6.72662, 7.95565, + 7.35114, 3.1439, 1.39976, 3.53095, 8.78581, 1.65811, 6.94299, 2.68641, 5.70058, 9.13491, 5.27637, + 8.6232, 8.54902, 2.25352, 5.86274, 5.20377, 2.96815, 4.96745, 5.3225, 3.99956, 1.08021, 5.54918, + 7.05833, 1.49913, 2.41822, 6.44593, 3.87301, 9.01465, 8.11336, 2.95749, 2.80188, 7.12396, 2.40595, + 5.59325, 9.89258, 2.30223, 1.4347, 9.09158, 7.43797, 3.79295, 4.53646, 1.72705, 4.16909, 1.00912, + 6.62167, 2.80244, 6.626, 3.89307, 1.42586, 7.51028, 7.83327, 4.65674, 7.33902, 6.26823, 9.72608, + 3.73491, 3.8238, 3.03815, 7.05101, 8.0103, 5.61396, 6.53738, 1.41095, 5.0149, 9.71211, 4.23604, + 5.98629, 4.70219, 9.69442, 2.82752, 9.93544, 6.9328, 8.2817, 5.12336, 8.98577, 5.80541, 6.19552, + 9.25748, 3.82732, 7.53525, 8.24712, 5.32057, 5.38817, 8.57269, 5.99975, 3.42893, 5.38068, 3.48261, + 3.02851, 6.82079, 9.2902, 2.80427, 8.91868, 5.19227, 7.52482, 3.72584, 5.40107, 2.83307, 1.79755, + 2.49121, 5.52697, 8.08823, 9.13242, 2.97572, 7.64318, 3.32023, 6.07788, 2.19187, 4.34879, 1.7457, + 5.55154, 7.24966, 5.1128, 4.25147, 8.34407, 1.4123, 4.49045, 5.12671, 7.62159, 9.18673, 3.49665, + 8.35992, 6.90684, 1.10152, 7.61818, 6.43145, 7.12017, 6.25564, 6.16169, 4.24916, 9.6283, 9.88249, + 4.48422, 8.52562, 9.83928, 6.26818, 7.03839, 1.77631, 9.92305, 8.0155, 9.94928, 6.88321, 1.33685, + 7.4718, 7.19305, 6.47932, 1.9559, 3.52616, 7.98593, 9.0115, 5.59539, 7.44137, 1.70001, 6.53774, + 8.54023, 7.26405, 5.99553, 8.75071, 7.70789, 3.38094, 9.99792, 6.16359, 6.75153, 5.4073, 9.00437, + 8.87059, 8.63011, 6.82951, 6.27021, 3.53425, 9.92489, 8.19695, 5.51473, 7.95084, 2.11852, 9.28916, + 1.40353, 3.05744, 8.58238, 3.75014, 5.35889, 6.85048, 2.29549, 3.75218, 8.98228, 8.98158, 5.63695, + 3.40379, 8.92309, 5.48185, 4.00095, 9.05227, 2.84035, 8.37644, 8.54954, 5.70516, 2.45744, 9.54079, + 1.53504, 8.9785, 6.1691, 4.40962, 10}, + std::vector{1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, + 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, + 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, + 7.03475, 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, + 6.61627, 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 10}, + std::vector{1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, + 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, + 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, + 7.03475, 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, + 6.61627, 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 10}, std::vector{10, 10, 10, 10, 10}, std::vector{ - 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, - 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, - 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, - 7.03475, 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, - 6.61627, 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 2.07541, - 5.72319, 1.75261, 9.25175, 9.19404, 3.69037, 6.2595, 6.09321, 6.52544, 9.60882, 3.34881, - 3.07914, 5.80104, 9.54944, 5.43754, 5.8654, 7.88937, 1.40811, 2.2597, 8.13163, 1.26821, - 8.94813, 5.86709, 5.03182, 9.02922, 4.39826, 5.84582, 6.87069, 4.25135, 6.13908, 6.74053, - 2.13683, 7.21184, 6.82974, 4.18545, 7.8691, 4.20879, 7.77509, 8.93208, 1.10502, 5.48298, - 1.66413, 8.08256, 1.57661, 4.19779, 9.47653, 4.41823, 7.86628, 7.94436, 3.71224, 7.95465, - 2.37637, 6.20771, 1.08107, 7.38138, 5.23577, 7.88133, 5.20653, 3.42101, 8.48523, 5.96192, - 1.63073, 5.25228, 7.68488, 2.7276, 5.1788, 3.07327, 5.57423, 2.87711, 1.44374, 5.66976, - 2.55051, 4.56682, 1.96629, 5.58829, 1.91922, 3.59846, 3.08583, 9.70901, 3.50487, 3.1026, - 1.82401, 6.1306, 4.76134, 4.31059, 8.31695, 3.60784, 7.45652, 6.51653, 4.84219, 7.76686, - 4.85031, 4.85544, 4.25714, 2.38005, 9.43471, 9.24769, 8.03763, 6.54696, 1.32399, 6.88891, - 2.16793, 3.64924, 4.24733, 3.47181, 1.66572, 2.36923, 2.45457, 9.44841, 4.34021, 1.45016, - 7.6686, 3.68812, 2.83922, 9.83581, 9.03719, 7.83414, 6.86009, 1.35715, 8.32489, 7.86316, - 5.09754, 5.78644, 1.98402, 2.31429, 5.5791, 2.94085, 9.24799, 5.15937, 2.19041, 7.87817, - 2.9146, 1.66833, 1.85877, 2.45985, 4.20817, 1.85777, 2.28937, 9.37912, 6.18926, 8.55681, - 6.60963, 3.92066, 7.5521, 5.70463, 7.6313, 2.48866, 7.18352, 4.8413, 7.55702, 7.80702, - 4.5785, 9.3268, 2.83159, 1.07202, 9.33716, 3.6506, 2.50256, 1.21691, 5.06801, 8.27505, - 4.31539, 6.48286, 1.31363, 4.1912, 1.70668, 7.23867, 1.11441, 5.13591, 9.65186, 4.00767, - 5.24875, 1.94852, 5.52768, 8.97121, 5.8094, 3.53329, 4.19126, 9.06652, 3.1734, 1.21496, - 9.69154, 4.86971, 4.1166, 6.19361, 2.13874, 9.55039, 3.8225, 9.57548, 2.96554, 3.2383, - 8.77422, 3.11741, 8.3359, 5.89508, 2.72134, 6.29956, 1.43323, 1.14286, 1.4474, 4.59474, - 6.19214, 8.80766, 8.07546, 3.29232, 1.74029, 2.4198, 2.88544, 4.75644, 4.12921, 7.29896, - 7.27759, 1.67252, 1.32823, 8.1046, 9.10476, 1.04197, 3.37783, 5.2064, 4.23835, 3.16196, - 1.20852, 5.78501, 2.17175, 6.05313, 2.51048, 4.78967, 7.16219, 3.4651, 1.09, 2.9788, - 1.28761, 9.41385, 8.03883, 5.65835, 1.14816, 3.6892, 5.86648, 8.73895, 2.66603, 1.75192, - 1.39845, 4.99427, 1.17387, 1.60329, 8.30594, 6.72662, 7.95565, 7.35114, 3.1439, 1.39976, - 3.53095, 8.78581, 1.65811, 6.94299, 2.68641, 5.70058, 9.13491, 5.27637, 8.6232, 8.54902, - 2.25352, 5.86274, 5.20377, 2.96815, 4.96745, 5.3225, 3.99956, 1.08021, 5.54918, 7.05833, - 1.49913, 2.41822, 6.44593, 3.87301, 9.01465, 8.11336, 2.95749, 2.80188, 7.12396, 2.40595, - 5.59325, 9.89258, 2.30223, 1.4347, 9.09158, 7.43797, 3.79295, 4.53646, 1.72705, 4.16909, - 1.00912, 6.62167, 2.80244, 6.626, 3.89307, 1.42586, 7.51028, 7.83327, 4.65674, 7.33902, - 6.26823, 9.72608, 3.73491, 3.8238, 3.03815, 7.05101, 8.0103, 5.61396, 6.53738, 1.41095, - 5.0149, 9.71211, 4.23604, 5.98629, 4.70219, 9.69442, 2.82752, 9.93544, 6.9328, 8.2817, - 5.12336, 8.98577, 5.80541, 6.19552, 9.25748, 3.82732, 7.53525, 8.24712, 5.32057, 5.38817, - 8.57269, 5.99975, 3.42893, 5.38068, 3.48261, 3.02851, 6.82079, 9.2902, 2.80427, 8.91868, - 5.19227, 7.52482, 3.72584, 5.40107, 2.83307, 1.79755, 2.49121, 5.52697, 8.08823, 10}, + 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, 8.6168, + 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, 8.0055, 7.44373, + 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, 7.03475, 6.33759, 7.04489, + 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, 6.61627, 6.94572, 3.68646, 5.01521, + 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 2.07541, 5.72319, 1.75261, 9.25175, 9.19404, 3.69037, + 6.2595, 6.09321, 6.52544, 9.60882, 3.34881, 3.07914, 5.80104, 9.54944, 5.43754, 5.8654, 7.88937, + 1.40811, 2.2597, 8.13163, 1.26821, 8.94813, 5.86709, 5.03182, 9.02922, 4.39826, 5.84582, 6.87069, + 4.25135, 6.13908, 6.74053, 2.13683, 7.21184, 6.82974, 4.18545, 7.8691, 4.20879, 7.77509, 8.93208, + 1.10502, 5.48298, 1.66413, 8.08256, 1.57661, 4.19779, 9.47653, 4.41823, 7.86628, 7.94436, 3.71224, + 7.95465, 2.37637, 6.20771, 1.08107, 7.38138, 5.23577, 7.88133, 5.20653, 3.42101, 8.48523, 5.96192, + 1.63073, 5.25228, 7.68488, 2.7276, 5.1788, 3.07327, 5.57423, 2.87711, 1.44374, 5.66976, 2.55051, + 4.56682, 1.96629, 5.58829, 1.91922, 3.59846, 3.08583, 9.70901, 3.50487, 3.1026, 1.82401, 6.1306, + 4.76134, 4.31059, 8.31695, 3.60784, 7.45652, 6.51653, 4.84219, 7.76686, 4.85031, 4.85544, 4.25714, + 2.38005, 9.43471, 9.24769, 8.03763, 6.54696, 1.32399, 6.88891, 2.16793, 3.64924, 4.24733, 3.47181, + 1.66572, 2.36923, 2.45457, 9.44841, 4.34021, 1.45016, 7.6686, 3.68812, 2.83922, 9.83581, 9.03719, + 7.83414, 6.86009, 1.35715, 8.32489, 7.86316, 5.09754, 5.78644, 1.98402, 2.31429, 5.5791, 2.94085, + 9.24799, 5.15937, 2.19041, 7.87817, 2.9146, 1.66833, 1.85877, 2.45985, 4.20817, 1.85777, 2.28937, + 9.37912, 6.18926, 8.55681, 6.60963, 3.92066, 7.5521, 5.70463, 7.6313, 2.48866, 7.18352, 4.8413, + 7.55702, 7.80702, 4.5785, 9.3268, 2.83159, 1.07202, 9.33716, 3.6506, 2.50256, 1.21691, 5.06801, + 8.27505, 4.31539, 6.48286, 1.31363, 4.1912, 1.70668, 7.23867, 1.11441, 5.13591, 9.65186, 4.00767, + 5.24875, 1.94852, 5.52768, 8.97121, 5.8094, 3.53329, 4.19126, 9.06652, 3.1734, 1.21496, 9.69154, + 4.86971, 4.1166, 6.19361, 2.13874, 9.55039, 3.8225, 9.57548, 2.96554, 3.2383, 8.77422, 3.11741, + 8.3359, 5.89508, 2.72134, 6.29956, 1.43323, 1.14286, 1.4474, 4.59474, 6.19214, 8.80766, 8.07546, + 3.29232, 1.74029, 2.4198, 2.88544, 4.75644, 4.12921, 7.29896, 7.27759, 1.67252, 1.32823, 8.1046, + 9.10476, 1.04197, 3.37783, 5.2064, 4.23835, 3.16196, 1.20852, 5.78501, 2.17175, 6.05313, 2.51048, + 4.78967, 7.16219, 3.4651, 1.09, 2.9788, 1.28761, 9.41385, 8.03883, 5.65835, 1.14816, 3.6892, + 5.86648, 8.73895, 2.66603, 1.75192, 1.39845, 4.99427, 1.17387, 1.60329, 8.30594, 6.72662, 7.95565, + 7.35114, 3.1439, 1.39976, 3.53095, 8.78581, 1.65811, 6.94299, 2.68641, 5.70058, 9.13491, 5.27637, + 8.6232, 8.54902, 2.25352, 5.86274, 5.20377, 2.96815, 4.96745, 5.3225, 3.99956, 1.08021, 5.54918, + 7.05833, 1.49913, 2.41822, 6.44593, 3.87301, 9.01465, 8.11336, 2.95749, 2.80188, 7.12396, 2.40595, + 5.59325, 9.89258, 2.30223, 1.4347, 9.09158, 7.43797, 3.79295, 4.53646, 1.72705, 4.16909, 1.00912, + 6.62167, 2.80244, 6.626, 3.89307, 1.42586, 7.51028, 7.83327, 4.65674, 7.33902, 6.26823, 9.72608, + 3.73491, 3.8238, 3.03815, 7.05101, 8.0103, 5.61396, 6.53738, 1.41095, 5.0149, 9.71211, 4.23604, + 5.98629, 4.70219, 9.69442, 2.82752, 9.93544, 6.9328, 8.2817, 5.12336, 8.98577, 5.80541, 6.19552, + 9.25748, 3.82732, 7.53525, 8.24712, 5.32057, 5.38817, 8.57269, 5.99975, 3.42893, 5.38068, 3.48261, + 3.02851, 6.82079, 9.2902, 2.80427, 8.91868, 5.19227, 7.52482, 3.72584, 5.40107, 2.83307, 1.79755, + 2.49121, 5.52697, 8.08823, 10}, std::vector{ - 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, - 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, - 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, - 7.03475, 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, - 6.61627, 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 2.07541, - 5.72319, 1.75261, 9.25175, 9.19404, 3.69037, 6.2595, 6.09321, 6.52544, 9.60882, 3.34881, - 3.07914, 5.80104, 9.54944, 5.43754, 5.8654, 7.88937, 1.40811, 2.2597, 8.13163, 1.26821, - 8.94813, 5.86709, 5.03182, 9.02922, 4.39826, 5.84582, 6.87069, 4.25135, 6.13908, 6.74053, - 2.13683, 7.21184, 6.82974, 4.18545, 7.8691, 4.20879, 7.77509, 8.93208, 1.10502, 5.48298, - 1.66413, 8.08256, 1.57661, 4.19779, 9.47653, 4.41823, 7.86628, 7.94436, 3.71224, 7.95465, - 2.37637, 6.20771, 1.08107, 7.38138, 5.23577, 7.88133, 5.20653, 3.42101, 8.48523, 5.96192, - 1.63073, 5.25228, 7.68488, 2.7276, 5.1788, 3.07327, 5.57423, 2.87711, 1.44374, 5.66976, - 2.55051, 4.56682, 1.96629, 5.58829, 1.91922, 3.59846, 3.08583, 9.70901, 3.50487, 3.1026, - 1.82401, 6.1306, 4.76134, 4.31059, 8.31695, 3.60784, 7.45652, 6.51653, 4.84219, 7.76686, - 4.85031, 4.85544, 4.25714, 2.38005, 9.43471, 9.24769, 8.03763, 6.54696, 1.32399, 6.88891, - 2.16793, 3.64924, 4.24733, 3.47181, 1.66572, 2.36923, 2.45457, 9.44841, 4.34021, 1.45016, - 7.6686, 3.68812, 2.83922, 9.83581, 9.03719, 7.83414, 6.86009, 1.35715, 8.32489, 7.86316, - 5.09754, 5.78644, 1.98402, 2.31429, 5.5791, 2.94085, 9.24799, 5.15937, 2.19041, 7.87817, - 2.9146, 1.66833, 1.85877, 2.45985, 4.20817, 1.85777, 2.28937, 9.37912, 6.18926, 8.55681, - 6.60963, 3.92066, 7.5521, 5.70463, 7.6313, 2.48866, 7.18352, 4.8413, 7.55702, 7.80702, - 4.5785, 9.3268, 2.83159, 1.07202, 9.33716, 3.6506, 2.50256, 1.21691, 5.06801, 8.27505, - 4.31539, 6.48286, 1.31363, 4.1912, 1.70668, 7.23867, 1.11441, 5.13591, 9.65186, 4.00767, - 5.24875, 1.94852, 5.52768, 8.97121, 5.8094, 3.53329, 4.19126, 9.06652, 3.1734, 1.21496, - 9.69154, 4.86971, 4.1166, 6.19361, 2.13874, 9.55039, 3.8225, 9.57548, 2.96554, 3.2383, - 8.77422, 3.11741, 8.3359, 5.89508, 2.72134, 6.29956, 1.43323, 1.14286, 1.4474, 4.59474, - 6.19214, 8.80766, 8.07546, 3.29232, 1.74029, 2.4198, 2.88544, 4.75644, 4.12921, 7.29896, - 7.27759, 1.67252, 1.32823, 8.1046, 9.10476, 1.04197, 3.37783, 5.2064, 4.23835, 3.16196, - 1.20852, 5.78501, 2.17175, 6.05313, 2.51048, 4.78967, 7.16219, 3.4651, 1.09, 2.9788, - 1.28761, 9.41385, 8.03883, 5.65835, 1.14816, 3.6892, 5.86648, 8.73895, 2.66603, 1.75192, - 1.39845, 4.99427, 1.17387, 1.60329, 8.30594, 6.72662, 7.95565, 7.35114, 3.1439, 1.39976, - 3.53095, 8.78581, 1.65811, 6.94299, 2.68641, 5.70058, 9.13491, 5.27637, 8.6232, 8.54902, - 2.25352, 5.86274, 5.20377, 2.96815, 4.96745, 5.3225, 3.99956, 1.08021, 5.54918, 7.05833, - 1.49913, 2.41822, 6.44593, 3.87301, 9.01465, 8.11336, 2.95749, 2.80188, 7.12396, 2.40595, - 5.59325, 9.89258, 2.30223, 1.4347, 9.09158, 7.43797, 3.79295, 4.53646, 1.72705, 4.16909, - 1.00912, 6.62167, 2.80244, 6.626, 3.89307, 1.42586, 7.51028, 7.83327, 4.65674, 7.33902, - 6.26823, 9.72608, 3.73491, 3.8238, 3.03815, 7.05101, 8.0103, 5.61396, 6.53738, 1.41095, - 5.0149, 9.71211, 4.23604, 5.98629, 4.70219, 9.69442, 2.82752, 9.93544, 6.9328, 8.2817, - 5.12336, 8.98577, 5.80541, 6.19552, 9.25748, 3.82732, 7.53525, 8.24712, 5.32057, 5.38817, - 8.57269, 5.99975, 3.42893, 5.38068, 3.48261, 3.02851, 6.82079, 9.2902, 2.80427, 8.91868, - 5.19227, 7.52482, 3.72584, 5.40107, 2.83307, 1.79755, 2.49121, 5.52697, 8.08823, 10}, - std::vector{ - 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, - 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, - 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, - 7.03475, 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 10}, + 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, 8.6168, + 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, 8.0055, 7.44373, + 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, 7.03475, 6.33759, 7.04489, + 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, 6.61627, 6.94572, 3.68646, 5.01521, + 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 2.07541, 5.72319, 1.75261, 9.25175, 9.19404, 3.69037, + 6.2595, 6.09321, 6.52544, 9.60882, 3.34881, 3.07914, 5.80104, 9.54944, 5.43754, 5.8654, 7.88937, + 1.40811, 2.2597, 8.13163, 1.26821, 8.94813, 5.86709, 5.03182, 9.02922, 4.39826, 5.84582, 6.87069, + 4.25135, 6.13908, 6.74053, 2.13683, 7.21184, 6.82974, 4.18545, 7.8691, 4.20879, 7.77509, 8.93208, + 1.10502, 5.48298, 1.66413, 8.08256, 1.57661, 4.19779, 9.47653, 4.41823, 7.86628, 7.94436, 3.71224, + 7.95465, 2.37637, 6.20771, 1.08107, 7.38138, 5.23577, 7.88133, 5.20653, 3.42101, 8.48523, 5.96192, + 1.63073, 5.25228, 7.68488, 2.7276, 5.1788, 3.07327, 5.57423, 2.87711, 1.44374, 5.66976, 2.55051, + 4.56682, 1.96629, 5.58829, 1.91922, 3.59846, 3.08583, 9.70901, 3.50487, 3.1026, 1.82401, 6.1306, + 4.76134, 4.31059, 8.31695, 3.60784, 7.45652, 6.51653, 4.84219, 7.76686, 4.85031, 4.85544, 4.25714, + 2.38005, 9.43471, 9.24769, 8.03763, 6.54696, 1.32399, 6.88891, 2.16793, 3.64924, 4.24733, 3.47181, + 1.66572, 2.36923, 2.45457, 9.44841, 4.34021, 1.45016, 7.6686, 3.68812, 2.83922, 9.83581, 9.03719, + 7.83414, 6.86009, 1.35715, 8.32489, 7.86316, 5.09754, 5.78644, 1.98402, 2.31429, 5.5791, 2.94085, + 9.24799, 5.15937, 2.19041, 7.87817, 2.9146, 1.66833, 1.85877, 2.45985, 4.20817, 1.85777, 2.28937, + 9.37912, 6.18926, 8.55681, 6.60963, 3.92066, 7.5521, 5.70463, 7.6313, 2.48866, 7.18352, 4.8413, + 7.55702, 7.80702, 4.5785, 9.3268, 2.83159, 1.07202, 9.33716, 3.6506, 2.50256, 1.21691, 5.06801, + 8.27505, 4.31539, 6.48286, 1.31363, 4.1912, 1.70668, 7.23867, 1.11441, 5.13591, 9.65186, 4.00767, + 5.24875, 1.94852, 5.52768, 8.97121, 5.8094, 3.53329, 4.19126, 9.06652, 3.1734, 1.21496, 9.69154, + 4.86971, 4.1166, 6.19361, 2.13874, 9.55039, 3.8225, 9.57548, 2.96554, 3.2383, 8.77422, 3.11741, + 8.3359, 5.89508, 2.72134, 6.29956, 1.43323, 1.14286, 1.4474, 4.59474, 6.19214, 8.80766, 8.07546, + 3.29232, 1.74029, 2.4198, 2.88544, 4.75644, 4.12921, 7.29896, 7.27759, 1.67252, 1.32823, 8.1046, + 9.10476, 1.04197, 3.37783, 5.2064, 4.23835, 3.16196, 1.20852, 5.78501, 2.17175, 6.05313, 2.51048, + 4.78967, 7.16219, 3.4651, 1.09, 2.9788, 1.28761, 9.41385, 8.03883, 5.65835, 1.14816, 3.6892, + 5.86648, 8.73895, 2.66603, 1.75192, 1.39845, 4.99427, 1.17387, 1.60329, 8.30594, 6.72662, 7.95565, + 7.35114, 3.1439, 1.39976, 3.53095, 8.78581, 1.65811, 6.94299, 2.68641, 5.70058, 9.13491, 5.27637, + 8.6232, 8.54902, 2.25352, 5.86274, 5.20377, 2.96815, 4.96745, 5.3225, 3.99956, 1.08021, 5.54918, + 7.05833, 1.49913, 2.41822, 6.44593, 3.87301, 9.01465, 8.11336, 2.95749, 2.80188, 7.12396, 2.40595, + 5.59325, 9.89258, 2.30223, 1.4347, 9.09158, 7.43797, 3.79295, 4.53646, 1.72705, 4.16909, 1.00912, + 6.62167, 2.80244, 6.626, 3.89307, 1.42586, 7.51028, 7.83327, 4.65674, 7.33902, 6.26823, 9.72608, + 3.73491, 3.8238, 3.03815, 7.05101, 8.0103, 5.61396, 6.53738, 1.41095, 5.0149, 9.71211, 4.23604, + 5.98629, 4.70219, 9.69442, 2.82752, 9.93544, 6.9328, 8.2817, 5.12336, 8.98577, 5.80541, 6.19552, + 9.25748, 3.82732, 7.53525, 8.24712, 5.32057, 5.38817, 8.57269, 5.99975, 3.42893, 5.38068, 3.48261, + 3.02851, 6.82079, 9.2902, 2.80427, 8.91868, 5.19227, 7.52482, 3.72584, 5.40107, 2.83307, 1.79755, + 2.49121, 5.52697, 8.08823, 10}, + std::vector{1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, + 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, + 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, + 7.03475, 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 10}, std::vector{ 0.528016, 0.668187, 0.668186, 0.635471, 0.668187, 0.659096, 0.666861, 0.666715, 0.668138, 0.668186, - 0.53964, 0.668141, 0.668109, 0.619255, 0.668141, 0.647193, 0.662341, 0.661921, 0.667534, 0.66811, - 0.54692, 0.667558, 0.667297, 0.604361, 0.667564, 0.631676, 0.652518, 0.651781, 0.664541, 0.667311, + 0.53964, 0.668141, 0.668109, 0.619255, 0.668141, 0.647193, 0.662341, 0.661921, 0.667534, 0.66811, + 0.54692, 0.667558, 0.667297, 0.604361, 0.667564, 0.631676, 0.652518, 0.651781, 0.664541, 0.667311, 0.551576, 0.664629, 0.663703, 0.592106, 0.664652, 0.615579, 0.638092, 0.637163, 0.656733, 0.663751, 0.554596, 0.656917, 0.655047, 0.582718, 0.656967, 0.601233, 0.621878, 0.620939, 0.643723, 0.65514, 0.556574, 0.643984, 0.641397, 0.575854, 0.644055, 0.589658, 0.606642, 0.605821, 0.627796, 0.641522, 0.557878, 0.628081, 0.625301, 0.570987, 0.628158, 0.580903, 0.593915, 0.593262, 0.611954, 0.625433, 0.558742, 0.612216, 0.609684, 0.567605, 0.612287, 0.574556, 0.584071, 0.583581, 0.598219, 0.609803, - 0.559316, 0.598435, 0.596364, 0.565285, 0.598493, 0.57008, 0.576828, 0.576475, 0.587333, 0.596461, - 0.559698, 0.587499, 0.58592, 0.563707, 0.587544, 0.56698, 0.571671, 0.571423, 0.579197, 0.585993, - 0.668182, 0.66458, 0.667903, 0.667432, 0.658361, 0.667935, 0.668185, 0.667547, 0.667307, 0.668186, - 0.66803, 0.656815, 0.666091, 0.664171, 0.646084, 0.666251, 0.668096, 0.66459, 0.663738, 0.668113, - 0.666772, 0.643839, 0.66026, 0.655973, 0.630413, 0.660667, 0.667203, 0.656835, 0.655116, 0.667328, - 0.662084, 0.627922, 0.649014, 0.642661, 0.614386, 0.649671, 0.663395, 0.643868, 0.64149, 0.663807, - 0.652065, 0.61207, 0.633798, 0.626647, 0.600233, 0.634582, 0.654454, 0.627954, 0.625399, 0.65525, + 0.559316, 0.598435, 0.596364, 0.565285, 0.598493, 0.57008, 0.576828, 0.576475, 0.587333, 0.596461, + 0.559698, 0.587499, 0.58592, 0.563707, 0.587544, 0.56698, 0.571671, 0.571423, 0.579197, 0.585993, + 0.668182, 0.66458, 0.667903, 0.667432, 0.658361, 0.667935, 0.668185, 0.667547, 0.667307, 0.668186, + 0.66803, 0.656815, 0.666091, 0.664171, 0.646084, 0.666251, 0.668096, 0.66459, 0.663738, 0.668113, + 0.666772, 0.643839, 0.66026, 0.655973, 0.630413, 0.660667, 0.667203, 0.656835, 0.655116, 0.667328, + 0.662084, 0.627922, 0.649014, 0.642661, 0.614386, 0.649671, 0.663395, 0.643868, 0.64149, 0.663807, + 0.652065, 0.61207, 0.633798, 0.626647, 0.600233, 0.634582, 0.654454, 0.627954, 0.625399, 0.65525, 0.637519, 0.598314, 0.617618, 0.610903, 0.588883, 0.618381, 0.640604, 0.612099, 0.609772, 0.641672, 0.621298, 0.587406, 0.602959, 0.597357, 0.580333, 0.603611, 0.624467, 0.598338, 0.596436, 0.625592, - 0.606134, 0.57925, 0.591004, 0.586675, 0.57415, 0.591515, 0.608935, 0.587425, 0.585974, 0.609946, + 0.606134, 0.57925, 0.591004, 0.586675, 0.57415, 0.591515, 0.608935, 0.587425, 0.585974, 0.609946, 0.593511, 0.573381, 0.581898, 0.578717, 0.569797, 0.582278, 0.595758, 0.579264, 0.578207, 0.596577, - 0.583768, 0.569262, 0.575267, 0.573003, 0.566785, 0.575539, 0.58546, 0.57339, 0.572642, 0.586082, - 0.668174, 0.668159, 0.668178, 0.618792, 0.66788, 0.668183, 0.66818, 0.66818, 0.662345, 0.595566, + 0.583768, 0.569262, 0.575267, 0.573003, 0.566785, 0.575539, 0.58546, 0.57339, 0.572642, 0.586082, + 0.668174, 0.668159, 0.668178, 0.618792, 0.66788, 0.668183, 0.66818, 0.66818, 0.662345, 0.595566, 0.667915, 0.667737, 0.667963, 0.603963, 0.665981, 0.668052, 0.668006, 0.668007, 0.652525, 0.585315, - 0.66615, 0.665341, 0.6664, 0.591792, 0.659985, 0.666907, 0.666636, 0.66664, 0.638101, 0.577728, + 0.66615, 0.665341, 0.6664, 0.591792, 0.659985, 0.666907, 0.666636, 0.66664, 0.638101, 0.577728, 0.660409, 0.658471, 0.661057, 0.582484, 0.648575, 0.662479, 0.661698, 0.661709, 0.621887, 0.572305, - 0.649254, 0.646247, 0.650314, 0.575687, 0.633281, 0.652764, 0.651396, 0.651414, 0.60665, 0.568515, - 0.634083, 0.630598, 0.635357, 0.57087, 0.617117, 0.638404, 0.636684, 0.636707, 0.593922, 0.565907, - 0.617895, 0.614559, 0.619142, 0.567524, 0.602533, 0.622196, 0.62046, 0.620482, 0.584076, 0.564129, - 0.603195, 0.600379, 0.604265, 0.56523, 0.59067, 0.606921, 0.605404, 0.605423, 0.576832, 0.562925, - 0.591189, 0.588995, 0.592029, 0.56367, 0.581651, 0.594139, 0.59293, 0.592946, 0.571674, 0.562114, - 0.582036, 0.580415, 0.582661, 0.562616, 0.57509, 0.584239, 0.583333, 0.583345, 0.568079, 0.561569, + 0.649254, 0.646247, 0.650314, 0.575687, 0.633281, 0.652764, 0.651396, 0.651414, 0.60665, 0.568515, + 0.634083, 0.630598, 0.635357, 0.57087, 0.617117, 0.638404, 0.636684, 0.636707, 0.593922, 0.565907, + 0.617895, 0.614559, 0.619142, 0.567524, 0.602533, 0.622196, 0.62046, 0.620482, 0.584076, 0.564129, + 0.603195, 0.600379, 0.604265, 0.56523, 0.59067, 0.606921, 0.605404, 0.605423, 0.576832, 0.562925, + 0.591189, 0.588995, 0.592029, 0.56367, 0.581651, 0.594139, 0.59293, 0.592946, 0.571674, 0.562114, + 0.582036, 0.580415, 0.582661, 0.562616, 0.57509, 0.584239, 0.583333, 0.583345, 0.568079, 0.561569, 0.668139, 0.668063, 0.668139, 0.667082, 0.653793, 0.663397, 0.640434, 0.668175, 0.667092, 0.571849, 0.667538, 0.666978, 0.667544, 0.663011, 0.639734, 0.654459, 0.624289, 0.667925, 0.663042, 0.5682, - 0.664556, 0.66269, 0.664578, 0.653734, 0.623561, 0.640611, 0.608777, 0.666203, 0.653791, 0.565691, - 0.656765, 0.653146, 0.65681, 0.639656, 0.608128, 0.624474, 0.59563, 0.660545, 0.639731, 0.563983, - 0.643768, 0.638894, 0.643833, 0.62348, 0.595107, 0.608942, 0.585363, 0.649473, 0.623558, 0.562827, + 0.664556, 0.66269, 0.664578, 0.653734, 0.623561, 0.640611, 0.608777, 0.666203, 0.653791, 0.565691, + 0.656765, 0.653146, 0.65681, 0.639656, 0.608128, 0.624474, 0.59563, 0.660545, 0.639731, 0.563983, + 0.643768, 0.638894, 0.643833, 0.62348, 0.595107, 0.608942, 0.585363, 0.649473, 0.623558, 0.562827, 0.627845, 0.622696, 0.627915, 0.608056, 0.584968, 0.595763, 0.577763, 0.634345, 0.608125, 0.562048, - 0.611999, 0.607362, 0.612063, 0.595049, 0.577477, 0.585464, 0.572329, 0.61815, 0.595104, 0.561524, + 0.611999, 0.607362, 0.612063, 0.595049, 0.577477, 0.585464, 0.572329, 0.61815, 0.595104, 0.561524, 0.598256, 0.594491, 0.598309, 0.584924, 0.572127, 0.577836, 0.568532, 0.603413, 0.584966, 0.561173, 0.587362, 0.584504, 0.587403, 0.577445, 0.568392, 0.572381, 0.565918, 0.591359, 0.577475, 0.560938, 0.579218, 0.577141, 0.579248, 0.572105, 0.565823, 0.568568, 0.564137, 0.582163, 0.572127, 0.560781, - 0.668102, 0.668132, 0.66388, 0.667456, 0.657447, 0.606385, 0.667634, 0.620685, 0.668185, 0.668187, - 0.667244, 0.667485, 0.655394, 0.664256, 0.644744, 0.59371, 0.664921, 0.6056, 0.668088, 0.668142, - 0.663529, 0.664358, 0.641868, 0.656146, 0.628916, 0.583917, 0.65754, 0.593086, 0.667146, 0.667567, - 0.654712, 0.656356, 0.625799, 0.642901, 0.612988, 0.576717, 0.644878, 0.583449, 0.66321, 0.664664, - 0.640947, 0.643193, 0.610134, 0.626905, 0.599072, 0.571593, 0.629065, 0.57638, 0.654104, 0.656992, - 0.624826, 0.62722, 0.59673, 0.611138, 0.587988, 0.568023, 0.613126, 0.571356, 0.640142, 0.644091, - 0.609258, 0.611426, 0.586197, 0.59755, 0.579676, 0.56557, 0.599186, 0.567859, 0.623984, 0.628198, + 0.668102, 0.668132, 0.66388, 0.667456, 0.657447, 0.606385, 0.667634, 0.620685, 0.668185, 0.668187, + 0.667244, 0.667485, 0.655394, 0.664256, 0.644744, 0.59371, 0.664921, 0.6056, 0.668088, 0.668142, + 0.663529, 0.664358, 0.641868, 0.656146, 0.628916, 0.583917, 0.65754, 0.593086, 0.667146, 0.667567, + 0.654712, 0.656356, 0.625799, 0.642901, 0.612988, 0.576717, 0.644878, 0.583449, 0.66321, 0.664664, + 0.640947, 0.643193, 0.610134, 0.626905, 0.599072, 0.571593, 0.629065, 0.57638, 0.654104, 0.656992, + 0.624826, 0.62722, 0.59673, 0.611138, 0.587988, 0.568023, 0.613126, 0.571356, 0.640142, 0.644091, + 0.609258, 0.611426, 0.586197, 0.59755, 0.579676, 0.56557, 0.599186, 0.567859, 0.623984, 0.628198, 0.596018, 0.597785, 0.578369, 0.586822, 0.573683, 0.563901, 0.588076, 0.565458, 0.608505, 0.612324, - 0.585658, 0.587002, 0.572757, 0.578824, 0.569471, 0.562771, 0.57974, 0.563825, 0.59541, 0.598524, - 0.577977, 0.578955, 0.568828, 0.573079, 0.566562, 0.562011, 0.573728, 0.56272, 0.585197, 0.587567}, - std::vector{ - 0.559698, 0.587499, 0.58592, 0.563707, 0.587544, 0.56698, 0.571671, 0.571423, 0.579197, 0.585993, - 0.583768, 0.569262, 0.575267, 0.573003, 0.566785, 0.575539, 0.58546, 0.57339, 0.572642, 0.586082, - 0.582036, 0.580415, 0.582661, 0.562616, 0.57509, 0.584239, 0.583333, 0.583345, 0.568079, 0.561569, - 0.579218, 0.577141, 0.579248, 0.572105, 0.565823, 0.568568, 0.564137, 0.582163, 0.572127, 0.560781, - 0.577977, 0.578955, 0.568828, 0.573079, 0.566562, 0.562011, 0.573728, 0.56272, 0.585197, 0.587567}, - std::vector{ - 1.2132, 1.37242, 1.3621, 1.23365, 1.37271, 1.25089, 1.27652, 1.27513, 1.32014, 1.36258, - 1.34833, 1.26322, 1.29695, 1.284, 1.24985, 1.29853, 1.35913, 1.2862, 1.28197, 1.36315, - 1.33748, 1.32752, 1.34137, 1.22801, 1.29593, 1.35132, 1.34559, 1.34566, 1.25679, 1.22266, - 1.32026, 1.30789, 1.32044, 1.27895, 1.24474, 1.25944, 1.23589, 1.33827, 1.27907, 1.21865, - 1.31284, 1.31868, 1.26086, 1.28443, 1.24866, 1.22491, 1.28812, 1.22855, 1.35744, 1.37287}), + 0.585658, 0.587002, 0.572757, 0.578824, 0.569471, 0.562771, 0.57974, 0.563825, 0.59541, 0.598524, + 0.577977, 0.578955, 0.568828, 0.573079, 0.566562, 0.562011, 0.573728, 0.56272, 0.585197, 0.587567}, + std::vector{0.559698, 0.587499, 0.58592, 0.563707, 0.587544, 0.56698, 0.571671, 0.571423, 0.579197, + 0.585993, 0.583768, 0.569262, 0.575267, 0.573003, 0.566785, 0.575539, 0.58546, 0.57339, + 0.572642, 0.586082, 0.582036, 0.580415, 0.582661, 0.562616, 0.57509, 0.584239, 0.583333, + 0.583345, 0.568079, 0.561569, 0.579218, 0.577141, 0.579248, 0.572105, 0.565823, 0.568568, + 0.564137, 0.582163, 0.572127, 0.560781, 0.577977, 0.578955, 0.568828, 0.573079, 0.566562, + 0.562011, 0.573728, 0.56272, 0.585197, 0.587567}, + std::vector{1.2132, 1.37242, 1.3621, 1.23365, 1.37271, 1.25089, 1.27652, 1.27513, 1.32014, 1.36258, + 1.34833, 1.26322, 1.29695, 1.284, 1.24985, 1.29853, 1.35913, 1.2862, 1.28197, 1.36315, + 1.33748, 1.32752, 1.34137, 1.22801, 1.29593, 1.35132, 1.34559, 1.34566, 1.25679, 1.22266, + 1.32026, 1.30789, 1.32044, 1.27895, 1.24474, 1.25944, 1.23589, 1.33827, 1.27907, 1.21865, + 1.31284, 1.31868, 1.26086, 1.28443, 1.24866, 1.22491, 1.28812, 1.22855, 1.35744, 1.37287}), TensorIteratorStaticParams( std::make_shared(), - 5, 10, 10, 10, - 0.7f, ov::op::RecurrentSequenceDirection::REVERSE, TensorIteratorBodyType::LSTM, + 5, + 10, + 10, + 10, + 0.7f, + ov::op::RecurrentSequenceDirection::REVERSE, + TensorIteratorBodyType::LSTM, ET, std::vector{ - 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, - 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, - 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, - 7.03475, 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, - 6.61627, 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 2.07541, - 5.72319, 1.75261, 9.25175, 9.19404, 3.69037, 6.2595, 6.09321, 6.52544, 9.60882, 3.34881, - 3.07914, 5.80104, 9.54944, 5.43754, 5.8654, 7.88937, 1.40811, 2.2597, 8.13163, 1.26821, - 8.94813, 5.86709, 5.03182, 9.02922, 4.39826, 5.84582, 6.87069, 4.25135, 6.13908, 6.74053, - 2.13683, 7.21184, 6.82974, 4.18545, 7.8691, 4.20879, 7.77509, 8.93208, 1.10502, 5.48298, - 1.66413, 8.08256, 1.57661, 4.19779, 9.47653, 4.41823, 7.86628, 7.94436, 3.71224, 7.95465, - 2.37637, 6.20771, 1.08107, 7.38138, 5.23577, 7.88133, 5.20653, 3.42101, 8.48523, 5.96192, - 1.63073, 5.25228, 7.68488, 2.7276, 5.1788, 3.07327, 5.57423, 2.87711, 1.44374, 5.66976, - 2.55051, 4.56682, 1.96629, 5.58829, 1.91922, 3.59846, 3.08583, 9.70901, 3.50487, 3.1026, - 1.82401, 6.1306, 4.76134, 4.31059, 8.31695, 3.60784, 7.45652, 6.51653, 4.84219, 7.76686, - 4.85031, 4.85544, 4.25714, 2.38005, 9.43471, 9.24769, 8.03763, 6.54696, 1.32399, 6.88891, - 2.16793, 3.64924, 4.24733, 3.47181, 1.66572, 2.36923, 2.45457, 9.44841, 4.34021, 1.45016, - 7.6686, 3.68812, 2.83922, 9.83581, 9.03719, 7.83414, 6.86009, 1.35715, 8.32489, 7.86316, - 5.09754, 5.78644, 1.98402, 2.31429, 5.5791, 2.94085, 9.24799, 5.15937, 2.19041, 7.87817, - 2.9146, 1.66833, 1.85877, 2.45985, 4.20817, 1.85777, 2.28937, 9.37912, 6.18926, 8.55681, - 6.60963, 3.92066, 7.5521, 5.70463, 7.6313, 2.48866, 7.18352, 4.8413, 7.55702, 7.80702, - 4.5785, 9.3268, 2.83159, 1.07202, 9.33716, 3.6506, 2.50256, 1.21691, 5.06801, 8.27505, - 4.31539, 6.48286, 1.31363, 4.1912, 1.70668, 7.23867, 1.11441, 5.13591, 9.65186, 4.00767, - 5.24875, 1.94852, 5.52768, 8.97121, 5.8094, 3.53329, 4.19126, 9.06652, 3.1734, 1.21496, - 9.69154, 4.86971, 4.1166, 6.19361, 2.13874, 9.55039, 3.8225, 9.57548, 2.96554, 3.2383, - 8.77422, 3.11741, 8.3359, 5.89508, 2.72134, 6.29956, 1.43323, 1.14286, 1.4474, 4.59474, - 6.19214, 8.80766, 8.07546, 3.29232, 1.74029, 2.4198, 2.88544, 4.75644, 4.12921, 7.29896, - 7.27759, 1.67252, 1.32823, 8.1046, 9.10476, 1.04197, 3.37783, 5.2064, 4.23835, 3.16196, - 1.20852, 5.78501, 2.17175, 6.05313, 2.51048, 4.78967, 7.16219, 3.4651, 1.09, 2.9788, - 1.28761, 9.41385, 8.03883, 5.65835, 1.14816, 3.6892, 5.86648, 8.73895, 2.66603, 1.75192, - 1.39845, 4.99427, 1.17387, 1.60329, 8.30594, 6.72662, 7.95565, 7.35114, 3.1439, 1.39976, - 3.53095, 8.78581, 1.65811, 6.94299, 2.68641, 5.70058, 9.13491, 5.27637, 8.6232, 8.54902, - 2.25352, 5.86274, 5.20377, 2.96815, 4.96745, 5.3225, 3.99956, 1.08021, 5.54918, 7.05833, - 1.49913, 2.41822, 6.44593, 3.87301, 9.01465, 8.11336, 2.95749, 2.80188, 7.12396, 2.40595, - 5.59325, 9.89258, 2.30223, 1.4347, 9.09158, 7.43797, 3.79295, 4.53646, 1.72705, 4.16909, - 1.00912, 6.62167, 2.80244, 6.626, 3.89307, 1.42586, 7.51028, 7.83327, 4.65674, 7.33902, - 6.26823, 9.72608, 3.73491, 3.8238, 3.03815, 7.05101, 8.0103, 5.61396, 6.53738, 1.41095, - 5.0149, 9.71211, 4.23604, 5.98629, 4.70219, 9.69442, 2.82752, 9.93544, 6.9328, 8.2817, - 5.12336, 8.98577, 5.80541, 6.19552, 9.25748, 3.82732, 7.53525, 8.24712, 5.32057, 5.38817, - 8.57269, 5.99975, 3.42893, 5.38068, 3.48261, 3.02851, 6.82079, 9.2902, 2.80427, 8.91868, - 5.19227, 7.52482, 3.72584, 5.40107, 2.83307, 1.79755, 2.49121, 5.52697, 8.08823, 9.13242, - 2.97572, 7.64318, 3.32023, 6.07788, 2.19187, 4.34879, 1.7457, 5.55154, 7.24966, 5.1128, - 4.25147, 8.34407, 1.4123, 4.49045, 5.12671, 7.62159, 9.18673, 3.49665, 8.35992, 6.90684, - 1.10152, 7.61818, 6.43145, 7.12017, 6.25564, 6.16169, 4.24916, 9.6283, 9.88249, 4.48422, - 8.52562, 9.83928, 6.26818, 7.03839, 1.77631, 9.92305, 8.0155, 9.94928, 6.88321, 1.33685, - 7.4718, 7.19305, 6.47932, 1.9559, 3.52616, 7.98593, 9.0115, 5.59539, 7.44137, 1.70001, - 6.53774, 8.54023, 7.26405, 5.99553, 8.75071, 7.70789, 3.38094, 9.99792, 6.16359, 6.75153, - 5.4073, 9.00437, 8.87059, 8.63011, 6.82951, 6.27021, 3.53425, 9.92489, 8.19695, 5.51473, - 7.95084, 2.11852, 9.28916, 1.40353, 3.05744, 8.58238, 3.75014, 5.35889, 6.85048, 2.29549, - 3.75218, 8.98228, 8.98158, 5.63695, 3.40379, 8.92309, 5.48185, 4.00095, 9.05227, 2.84035, - 8.37644, 8.54954, 5.70516, 2.45744, 9.54079, 1.53504, 8.9785, 6.1691, 4.40962, 10}, - std::vector{ - 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, - 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, - 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, - 7.03475, 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, - 6.61627, 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 10}, - std::vector{ - 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, - 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, - 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, - 7.03475, 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, - 6.61627, 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 10}, + 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, 8.6168, + 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, 8.0055, 7.44373, + 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, 7.03475, 6.33759, 7.04489, + 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, 6.61627, 6.94572, 3.68646, 5.01521, + 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 2.07541, 5.72319, 1.75261, 9.25175, 9.19404, 3.69037, + 6.2595, 6.09321, 6.52544, 9.60882, 3.34881, 3.07914, 5.80104, 9.54944, 5.43754, 5.8654, 7.88937, + 1.40811, 2.2597, 8.13163, 1.26821, 8.94813, 5.86709, 5.03182, 9.02922, 4.39826, 5.84582, 6.87069, + 4.25135, 6.13908, 6.74053, 2.13683, 7.21184, 6.82974, 4.18545, 7.8691, 4.20879, 7.77509, 8.93208, + 1.10502, 5.48298, 1.66413, 8.08256, 1.57661, 4.19779, 9.47653, 4.41823, 7.86628, 7.94436, 3.71224, + 7.95465, 2.37637, 6.20771, 1.08107, 7.38138, 5.23577, 7.88133, 5.20653, 3.42101, 8.48523, 5.96192, + 1.63073, 5.25228, 7.68488, 2.7276, 5.1788, 3.07327, 5.57423, 2.87711, 1.44374, 5.66976, 2.55051, + 4.56682, 1.96629, 5.58829, 1.91922, 3.59846, 3.08583, 9.70901, 3.50487, 3.1026, 1.82401, 6.1306, + 4.76134, 4.31059, 8.31695, 3.60784, 7.45652, 6.51653, 4.84219, 7.76686, 4.85031, 4.85544, 4.25714, + 2.38005, 9.43471, 9.24769, 8.03763, 6.54696, 1.32399, 6.88891, 2.16793, 3.64924, 4.24733, 3.47181, + 1.66572, 2.36923, 2.45457, 9.44841, 4.34021, 1.45016, 7.6686, 3.68812, 2.83922, 9.83581, 9.03719, + 7.83414, 6.86009, 1.35715, 8.32489, 7.86316, 5.09754, 5.78644, 1.98402, 2.31429, 5.5791, 2.94085, + 9.24799, 5.15937, 2.19041, 7.87817, 2.9146, 1.66833, 1.85877, 2.45985, 4.20817, 1.85777, 2.28937, + 9.37912, 6.18926, 8.55681, 6.60963, 3.92066, 7.5521, 5.70463, 7.6313, 2.48866, 7.18352, 4.8413, + 7.55702, 7.80702, 4.5785, 9.3268, 2.83159, 1.07202, 9.33716, 3.6506, 2.50256, 1.21691, 5.06801, + 8.27505, 4.31539, 6.48286, 1.31363, 4.1912, 1.70668, 7.23867, 1.11441, 5.13591, 9.65186, 4.00767, + 5.24875, 1.94852, 5.52768, 8.97121, 5.8094, 3.53329, 4.19126, 9.06652, 3.1734, 1.21496, 9.69154, + 4.86971, 4.1166, 6.19361, 2.13874, 9.55039, 3.8225, 9.57548, 2.96554, 3.2383, 8.77422, 3.11741, + 8.3359, 5.89508, 2.72134, 6.29956, 1.43323, 1.14286, 1.4474, 4.59474, 6.19214, 8.80766, 8.07546, + 3.29232, 1.74029, 2.4198, 2.88544, 4.75644, 4.12921, 7.29896, 7.27759, 1.67252, 1.32823, 8.1046, + 9.10476, 1.04197, 3.37783, 5.2064, 4.23835, 3.16196, 1.20852, 5.78501, 2.17175, 6.05313, 2.51048, + 4.78967, 7.16219, 3.4651, 1.09, 2.9788, 1.28761, 9.41385, 8.03883, 5.65835, 1.14816, 3.6892, + 5.86648, 8.73895, 2.66603, 1.75192, 1.39845, 4.99427, 1.17387, 1.60329, 8.30594, 6.72662, 7.95565, + 7.35114, 3.1439, 1.39976, 3.53095, 8.78581, 1.65811, 6.94299, 2.68641, 5.70058, 9.13491, 5.27637, + 8.6232, 8.54902, 2.25352, 5.86274, 5.20377, 2.96815, 4.96745, 5.3225, 3.99956, 1.08021, 5.54918, + 7.05833, 1.49913, 2.41822, 6.44593, 3.87301, 9.01465, 8.11336, 2.95749, 2.80188, 7.12396, 2.40595, + 5.59325, 9.89258, 2.30223, 1.4347, 9.09158, 7.43797, 3.79295, 4.53646, 1.72705, 4.16909, 1.00912, + 6.62167, 2.80244, 6.626, 3.89307, 1.42586, 7.51028, 7.83327, 4.65674, 7.33902, 6.26823, 9.72608, + 3.73491, 3.8238, 3.03815, 7.05101, 8.0103, 5.61396, 6.53738, 1.41095, 5.0149, 9.71211, 4.23604, + 5.98629, 4.70219, 9.69442, 2.82752, 9.93544, 6.9328, 8.2817, 5.12336, 8.98577, 5.80541, 6.19552, + 9.25748, 3.82732, 7.53525, 8.24712, 5.32057, 5.38817, 8.57269, 5.99975, 3.42893, 5.38068, 3.48261, + 3.02851, 6.82079, 9.2902, 2.80427, 8.91868, 5.19227, 7.52482, 3.72584, 5.40107, 2.83307, 1.79755, + 2.49121, 5.52697, 8.08823, 9.13242, 2.97572, 7.64318, 3.32023, 6.07788, 2.19187, 4.34879, 1.7457, + 5.55154, 7.24966, 5.1128, 4.25147, 8.34407, 1.4123, 4.49045, 5.12671, 7.62159, 9.18673, 3.49665, + 8.35992, 6.90684, 1.10152, 7.61818, 6.43145, 7.12017, 6.25564, 6.16169, 4.24916, 9.6283, 9.88249, + 4.48422, 8.52562, 9.83928, 6.26818, 7.03839, 1.77631, 9.92305, 8.0155, 9.94928, 6.88321, 1.33685, + 7.4718, 7.19305, 6.47932, 1.9559, 3.52616, 7.98593, 9.0115, 5.59539, 7.44137, 1.70001, 6.53774, + 8.54023, 7.26405, 5.99553, 8.75071, 7.70789, 3.38094, 9.99792, 6.16359, 6.75153, 5.4073, 9.00437, + 8.87059, 8.63011, 6.82951, 6.27021, 3.53425, 9.92489, 8.19695, 5.51473, 7.95084, 2.11852, 9.28916, + 1.40353, 3.05744, 8.58238, 3.75014, 5.35889, 6.85048, 2.29549, 3.75218, 8.98228, 8.98158, 5.63695, + 3.40379, 8.92309, 5.48185, 4.00095, 9.05227, 2.84035, 8.37644, 8.54954, 5.70516, 2.45744, 9.54079, + 1.53504, 8.9785, 6.1691, 4.40962, 10}, + std::vector{1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, + 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, + 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, + 7.03475, 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, + 6.61627, 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 10}, + std::vector{1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, + 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, + 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, + 7.03475, 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, + 6.61627, 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 10}, std::vector{10, 10, 10, 10, 10}, std::vector{ - 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, - 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, - 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, - 7.03475, 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, - 6.61627, 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 2.07541, - 5.72319, 1.75261, 9.25175, 9.19404, 3.69037, 6.2595, 6.09321, 6.52544, 9.60882, 3.34881, - 3.07914, 5.80104, 9.54944, 5.43754, 5.8654, 7.88937, 1.40811, 2.2597, 8.13163, 1.26821, - 8.94813, 5.86709, 5.03182, 9.02922, 4.39826, 5.84582, 6.87069, 4.25135, 6.13908, 6.74053, - 2.13683, 7.21184, 6.82974, 4.18545, 7.8691, 4.20879, 7.77509, 8.93208, 1.10502, 5.48298, - 1.66413, 8.08256, 1.57661, 4.19779, 9.47653, 4.41823, 7.86628, 7.94436, 3.71224, 7.95465, - 2.37637, 6.20771, 1.08107, 7.38138, 5.23577, 7.88133, 5.20653, 3.42101, 8.48523, 5.96192, - 1.63073, 5.25228, 7.68488, 2.7276, 5.1788, 3.07327, 5.57423, 2.87711, 1.44374, 5.66976, - 2.55051, 4.56682, 1.96629, 5.58829, 1.91922, 3.59846, 3.08583, 9.70901, 3.50487, 3.1026, - 1.82401, 6.1306, 4.76134, 4.31059, 8.31695, 3.60784, 7.45652, 6.51653, 4.84219, 7.76686, - 4.85031, 4.85544, 4.25714, 2.38005, 9.43471, 9.24769, 8.03763, 6.54696, 1.32399, 6.88891, - 2.16793, 3.64924, 4.24733, 3.47181, 1.66572, 2.36923, 2.45457, 9.44841, 4.34021, 1.45016, - 7.6686, 3.68812, 2.83922, 9.83581, 9.03719, 7.83414, 6.86009, 1.35715, 8.32489, 7.86316, - 5.09754, 5.78644, 1.98402, 2.31429, 5.5791, 2.94085, 9.24799, 5.15937, 2.19041, 7.87817, - 2.9146, 1.66833, 1.85877, 2.45985, 4.20817, 1.85777, 2.28937, 9.37912, 6.18926, 8.55681, - 6.60963, 3.92066, 7.5521, 5.70463, 7.6313, 2.48866, 7.18352, 4.8413, 7.55702, 7.80702, - 4.5785, 9.3268, 2.83159, 1.07202, 9.33716, 3.6506, 2.50256, 1.21691, 5.06801, 8.27505, - 4.31539, 6.48286, 1.31363, 4.1912, 1.70668, 7.23867, 1.11441, 5.13591, 9.65186, 4.00767, - 5.24875, 1.94852, 5.52768, 8.97121, 5.8094, 3.53329, 4.19126, 9.06652, 3.1734, 1.21496, - 9.69154, 4.86971, 4.1166, 6.19361, 2.13874, 9.55039, 3.8225, 9.57548, 2.96554, 3.2383, - 8.77422, 3.11741, 8.3359, 5.89508, 2.72134, 6.29956, 1.43323, 1.14286, 1.4474, 4.59474, - 6.19214, 8.80766, 8.07546, 3.29232, 1.74029, 2.4198, 2.88544, 4.75644, 4.12921, 7.29896, - 7.27759, 1.67252, 1.32823, 8.1046, 9.10476, 1.04197, 3.37783, 5.2064, 4.23835, 3.16196, - 1.20852, 5.78501, 2.17175, 6.05313, 2.51048, 4.78967, 7.16219, 3.4651, 1.09, 2.9788, - 1.28761, 9.41385, 8.03883, 5.65835, 1.14816, 3.6892, 5.86648, 8.73895, 2.66603, 1.75192, - 1.39845, 4.99427, 1.17387, 1.60329, 8.30594, 6.72662, 7.95565, 7.35114, 3.1439, 1.39976, - 3.53095, 8.78581, 1.65811, 6.94299, 2.68641, 5.70058, 9.13491, 5.27637, 8.6232, 8.54902, - 2.25352, 5.86274, 5.20377, 2.96815, 4.96745, 5.3225, 3.99956, 1.08021, 5.54918, 7.05833, - 1.49913, 2.41822, 6.44593, 3.87301, 9.01465, 8.11336, 2.95749, 2.80188, 7.12396, 2.40595, - 5.59325, 9.89258, 2.30223, 1.4347, 9.09158, 7.43797, 3.79295, 4.53646, 1.72705, 4.16909, - 1.00912, 6.62167, 2.80244, 6.626, 3.89307, 1.42586, 7.51028, 7.83327, 4.65674, 7.33902, - 6.26823, 9.72608, 3.73491, 3.8238, 3.03815, 7.05101, 8.0103, 5.61396, 6.53738, 1.41095, - 5.0149, 9.71211, 4.23604, 5.98629, 4.70219, 9.69442, 2.82752, 9.93544, 6.9328, 8.2817, - 5.12336, 8.98577, 5.80541, 6.19552, 9.25748, 3.82732, 7.53525, 8.24712, 5.32057, 5.38817, - 8.57269, 5.99975, 3.42893, 5.38068, 3.48261, 3.02851, 6.82079, 9.2902, 2.80427, 8.91868, - 5.19227, 7.52482, 3.72584, 5.40107, 2.83307, 1.79755, 2.49121, 5.52697, 8.08823, 10}, + 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, 8.6168, + 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, 8.0055, 7.44373, + 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, 7.03475, 6.33759, 7.04489, + 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, 6.61627, 6.94572, 3.68646, 5.01521, + 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 2.07541, 5.72319, 1.75261, 9.25175, 9.19404, 3.69037, + 6.2595, 6.09321, 6.52544, 9.60882, 3.34881, 3.07914, 5.80104, 9.54944, 5.43754, 5.8654, 7.88937, + 1.40811, 2.2597, 8.13163, 1.26821, 8.94813, 5.86709, 5.03182, 9.02922, 4.39826, 5.84582, 6.87069, + 4.25135, 6.13908, 6.74053, 2.13683, 7.21184, 6.82974, 4.18545, 7.8691, 4.20879, 7.77509, 8.93208, + 1.10502, 5.48298, 1.66413, 8.08256, 1.57661, 4.19779, 9.47653, 4.41823, 7.86628, 7.94436, 3.71224, + 7.95465, 2.37637, 6.20771, 1.08107, 7.38138, 5.23577, 7.88133, 5.20653, 3.42101, 8.48523, 5.96192, + 1.63073, 5.25228, 7.68488, 2.7276, 5.1788, 3.07327, 5.57423, 2.87711, 1.44374, 5.66976, 2.55051, + 4.56682, 1.96629, 5.58829, 1.91922, 3.59846, 3.08583, 9.70901, 3.50487, 3.1026, 1.82401, 6.1306, + 4.76134, 4.31059, 8.31695, 3.60784, 7.45652, 6.51653, 4.84219, 7.76686, 4.85031, 4.85544, 4.25714, + 2.38005, 9.43471, 9.24769, 8.03763, 6.54696, 1.32399, 6.88891, 2.16793, 3.64924, 4.24733, 3.47181, + 1.66572, 2.36923, 2.45457, 9.44841, 4.34021, 1.45016, 7.6686, 3.68812, 2.83922, 9.83581, 9.03719, + 7.83414, 6.86009, 1.35715, 8.32489, 7.86316, 5.09754, 5.78644, 1.98402, 2.31429, 5.5791, 2.94085, + 9.24799, 5.15937, 2.19041, 7.87817, 2.9146, 1.66833, 1.85877, 2.45985, 4.20817, 1.85777, 2.28937, + 9.37912, 6.18926, 8.55681, 6.60963, 3.92066, 7.5521, 5.70463, 7.6313, 2.48866, 7.18352, 4.8413, + 7.55702, 7.80702, 4.5785, 9.3268, 2.83159, 1.07202, 9.33716, 3.6506, 2.50256, 1.21691, 5.06801, + 8.27505, 4.31539, 6.48286, 1.31363, 4.1912, 1.70668, 7.23867, 1.11441, 5.13591, 9.65186, 4.00767, + 5.24875, 1.94852, 5.52768, 8.97121, 5.8094, 3.53329, 4.19126, 9.06652, 3.1734, 1.21496, 9.69154, + 4.86971, 4.1166, 6.19361, 2.13874, 9.55039, 3.8225, 9.57548, 2.96554, 3.2383, 8.77422, 3.11741, + 8.3359, 5.89508, 2.72134, 6.29956, 1.43323, 1.14286, 1.4474, 4.59474, 6.19214, 8.80766, 8.07546, + 3.29232, 1.74029, 2.4198, 2.88544, 4.75644, 4.12921, 7.29896, 7.27759, 1.67252, 1.32823, 8.1046, + 9.10476, 1.04197, 3.37783, 5.2064, 4.23835, 3.16196, 1.20852, 5.78501, 2.17175, 6.05313, 2.51048, + 4.78967, 7.16219, 3.4651, 1.09, 2.9788, 1.28761, 9.41385, 8.03883, 5.65835, 1.14816, 3.6892, + 5.86648, 8.73895, 2.66603, 1.75192, 1.39845, 4.99427, 1.17387, 1.60329, 8.30594, 6.72662, 7.95565, + 7.35114, 3.1439, 1.39976, 3.53095, 8.78581, 1.65811, 6.94299, 2.68641, 5.70058, 9.13491, 5.27637, + 8.6232, 8.54902, 2.25352, 5.86274, 5.20377, 2.96815, 4.96745, 5.3225, 3.99956, 1.08021, 5.54918, + 7.05833, 1.49913, 2.41822, 6.44593, 3.87301, 9.01465, 8.11336, 2.95749, 2.80188, 7.12396, 2.40595, + 5.59325, 9.89258, 2.30223, 1.4347, 9.09158, 7.43797, 3.79295, 4.53646, 1.72705, 4.16909, 1.00912, + 6.62167, 2.80244, 6.626, 3.89307, 1.42586, 7.51028, 7.83327, 4.65674, 7.33902, 6.26823, 9.72608, + 3.73491, 3.8238, 3.03815, 7.05101, 8.0103, 5.61396, 6.53738, 1.41095, 5.0149, 9.71211, 4.23604, + 5.98629, 4.70219, 9.69442, 2.82752, 9.93544, 6.9328, 8.2817, 5.12336, 8.98577, 5.80541, 6.19552, + 9.25748, 3.82732, 7.53525, 8.24712, 5.32057, 5.38817, 8.57269, 5.99975, 3.42893, 5.38068, 3.48261, + 3.02851, 6.82079, 9.2902, 2.80427, 8.91868, 5.19227, 7.52482, 3.72584, 5.40107, 2.83307, 1.79755, + 2.49121, 5.52697, 8.08823, 10}, std::vector{ - 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, - 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, - 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, - 7.03475, 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, - 6.61627, 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 2.07541, - 5.72319, 1.75261, 9.25175, 9.19404, 3.69037, 6.2595, 6.09321, 6.52544, 9.60882, 3.34881, - 3.07914, 5.80104, 9.54944, 5.43754, 5.8654, 7.88937, 1.40811, 2.2597, 8.13163, 1.26821, - 8.94813, 5.86709, 5.03182, 9.02922, 4.39826, 5.84582, 6.87069, 4.25135, 6.13908, 6.74053, - 2.13683, 7.21184, 6.82974, 4.18545, 7.8691, 4.20879, 7.77509, 8.93208, 1.10502, 5.48298, - 1.66413, 8.08256, 1.57661, 4.19779, 9.47653, 4.41823, 7.86628, 7.94436, 3.71224, 7.95465, - 2.37637, 6.20771, 1.08107, 7.38138, 5.23577, 7.88133, 5.20653, 3.42101, 8.48523, 5.96192, - 1.63073, 5.25228, 7.68488, 2.7276, 5.1788, 3.07327, 5.57423, 2.87711, 1.44374, 5.66976, - 2.55051, 4.56682, 1.96629, 5.58829, 1.91922, 3.59846, 3.08583, 9.70901, 3.50487, 3.1026, - 1.82401, 6.1306, 4.76134, 4.31059, 8.31695, 3.60784, 7.45652, 6.51653, 4.84219, 7.76686, - 4.85031, 4.85544, 4.25714, 2.38005, 9.43471, 9.24769, 8.03763, 6.54696, 1.32399, 6.88891, - 2.16793, 3.64924, 4.24733, 3.47181, 1.66572, 2.36923, 2.45457, 9.44841, 4.34021, 1.45016, - 7.6686, 3.68812, 2.83922, 9.83581, 9.03719, 7.83414, 6.86009, 1.35715, 8.32489, 7.86316, - 5.09754, 5.78644, 1.98402, 2.31429, 5.5791, 2.94085, 9.24799, 5.15937, 2.19041, 7.87817, - 2.9146, 1.66833, 1.85877, 2.45985, 4.20817, 1.85777, 2.28937, 9.37912, 6.18926, 8.55681, - 6.60963, 3.92066, 7.5521, 5.70463, 7.6313, 2.48866, 7.18352, 4.8413, 7.55702, 7.80702, - 4.5785, 9.3268, 2.83159, 1.07202, 9.33716, 3.6506, 2.50256, 1.21691, 5.06801, 8.27505, - 4.31539, 6.48286, 1.31363, 4.1912, 1.70668, 7.23867, 1.11441, 5.13591, 9.65186, 4.00767, - 5.24875, 1.94852, 5.52768, 8.97121, 5.8094, 3.53329, 4.19126, 9.06652, 3.1734, 1.21496, - 9.69154, 4.86971, 4.1166, 6.19361, 2.13874, 9.55039, 3.8225, 9.57548, 2.96554, 3.2383, - 8.77422, 3.11741, 8.3359, 5.89508, 2.72134, 6.29956, 1.43323, 1.14286, 1.4474, 4.59474, - 6.19214, 8.80766, 8.07546, 3.29232, 1.74029, 2.4198, 2.88544, 4.75644, 4.12921, 7.29896, - 7.27759, 1.67252, 1.32823, 8.1046, 9.10476, 1.04197, 3.37783, 5.2064, 4.23835, 3.16196, - 1.20852, 5.78501, 2.17175, 6.05313, 2.51048, 4.78967, 7.16219, 3.4651, 1.09, 2.9788, - 1.28761, 9.41385, 8.03883, 5.65835, 1.14816, 3.6892, 5.86648, 8.73895, 2.66603, 1.75192, - 1.39845, 4.99427, 1.17387, 1.60329, 8.30594, 6.72662, 7.95565, 7.35114, 3.1439, 1.39976, - 3.53095, 8.78581, 1.65811, 6.94299, 2.68641, 5.70058, 9.13491, 5.27637, 8.6232, 8.54902, - 2.25352, 5.86274, 5.20377, 2.96815, 4.96745, 5.3225, 3.99956, 1.08021, 5.54918, 7.05833, - 1.49913, 2.41822, 6.44593, 3.87301, 9.01465, 8.11336, 2.95749, 2.80188, 7.12396, 2.40595, - 5.59325, 9.89258, 2.30223, 1.4347, 9.09158, 7.43797, 3.79295, 4.53646, 1.72705, 4.16909, - 1.00912, 6.62167, 2.80244, 6.626, 3.89307, 1.42586, 7.51028, 7.83327, 4.65674, 7.33902, - 6.26823, 9.72608, 3.73491, 3.8238, 3.03815, 7.05101, 8.0103, 5.61396, 6.53738, 1.41095, - 5.0149, 9.71211, 4.23604, 5.98629, 4.70219, 9.69442, 2.82752, 9.93544, 6.9328, 8.2817, - 5.12336, 8.98577, 5.80541, 6.19552, 9.25748, 3.82732, 7.53525, 8.24712, 5.32057, 5.38817, - 8.57269, 5.99975, 3.42893, 5.38068, 3.48261, 3.02851, 6.82079, 9.2902, 2.80427, 8.91868, - 5.19227, 7.52482, 3.72584, 5.40107, 2.83307, 1.79755, 2.49121, 5.52697, 8.08823, 10}, + 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, 8.6168, + 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, 8.0055, 7.44373, + 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, 7.03475, 6.33759, 7.04489, + 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, 6.61627, 6.94572, 3.68646, 5.01521, + 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 2.07541, 5.72319, 1.75261, 9.25175, 9.19404, 3.69037, + 6.2595, 6.09321, 6.52544, 9.60882, 3.34881, 3.07914, 5.80104, 9.54944, 5.43754, 5.8654, 7.88937, + 1.40811, 2.2597, 8.13163, 1.26821, 8.94813, 5.86709, 5.03182, 9.02922, 4.39826, 5.84582, 6.87069, + 4.25135, 6.13908, 6.74053, 2.13683, 7.21184, 6.82974, 4.18545, 7.8691, 4.20879, 7.77509, 8.93208, + 1.10502, 5.48298, 1.66413, 8.08256, 1.57661, 4.19779, 9.47653, 4.41823, 7.86628, 7.94436, 3.71224, + 7.95465, 2.37637, 6.20771, 1.08107, 7.38138, 5.23577, 7.88133, 5.20653, 3.42101, 8.48523, 5.96192, + 1.63073, 5.25228, 7.68488, 2.7276, 5.1788, 3.07327, 5.57423, 2.87711, 1.44374, 5.66976, 2.55051, + 4.56682, 1.96629, 5.58829, 1.91922, 3.59846, 3.08583, 9.70901, 3.50487, 3.1026, 1.82401, 6.1306, + 4.76134, 4.31059, 8.31695, 3.60784, 7.45652, 6.51653, 4.84219, 7.76686, 4.85031, 4.85544, 4.25714, + 2.38005, 9.43471, 9.24769, 8.03763, 6.54696, 1.32399, 6.88891, 2.16793, 3.64924, 4.24733, 3.47181, + 1.66572, 2.36923, 2.45457, 9.44841, 4.34021, 1.45016, 7.6686, 3.68812, 2.83922, 9.83581, 9.03719, + 7.83414, 6.86009, 1.35715, 8.32489, 7.86316, 5.09754, 5.78644, 1.98402, 2.31429, 5.5791, 2.94085, + 9.24799, 5.15937, 2.19041, 7.87817, 2.9146, 1.66833, 1.85877, 2.45985, 4.20817, 1.85777, 2.28937, + 9.37912, 6.18926, 8.55681, 6.60963, 3.92066, 7.5521, 5.70463, 7.6313, 2.48866, 7.18352, 4.8413, + 7.55702, 7.80702, 4.5785, 9.3268, 2.83159, 1.07202, 9.33716, 3.6506, 2.50256, 1.21691, 5.06801, + 8.27505, 4.31539, 6.48286, 1.31363, 4.1912, 1.70668, 7.23867, 1.11441, 5.13591, 9.65186, 4.00767, + 5.24875, 1.94852, 5.52768, 8.97121, 5.8094, 3.53329, 4.19126, 9.06652, 3.1734, 1.21496, 9.69154, + 4.86971, 4.1166, 6.19361, 2.13874, 9.55039, 3.8225, 9.57548, 2.96554, 3.2383, 8.77422, 3.11741, + 8.3359, 5.89508, 2.72134, 6.29956, 1.43323, 1.14286, 1.4474, 4.59474, 6.19214, 8.80766, 8.07546, + 3.29232, 1.74029, 2.4198, 2.88544, 4.75644, 4.12921, 7.29896, 7.27759, 1.67252, 1.32823, 8.1046, + 9.10476, 1.04197, 3.37783, 5.2064, 4.23835, 3.16196, 1.20852, 5.78501, 2.17175, 6.05313, 2.51048, + 4.78967, 7.16219, 3.4651, 1.09, 2.9788, 1.28761, 9.41385, 8.03883, 5.65835, 1.14816, 3.6892, + 5.86648, 8.73895, 2.66603, 1.75192, 1.39845, 4.99427, 1.17387, 1.60329, 8.30594, 6.72662, 7.95565, + 7.35114, 3.1439, 1.39976, 3.53095, 8.78581, 1.65811, 6.94299, 2.68641, 5.70058, 9.13491, 5.27637, + 8.6232, 8.54902, 2.25352, 5.86274, 5.20377, 2.96815, 4.96745, 5.3225, 3.99956, 1.08021, 5.54918, + 7.05833, 1.49913, 2.41822, 6.44593, 3.87301, 9.01465, 8.11336, 2.95749, 2.80188, 7.12396, 2.40595, + 5.59325, 9.89258, 2.30223, 1.4347, 9.09158, 7.43797, 3.79295, 4.53646, 1.72705, 4.16909, 1.00912, + 6.62167, 2.80244, 6.626, 3.89307, 1.42586, 7.51028, 7.83327, 4.65674, 7.33902, 6.26823, 9.72608, + 3.73491, 3.8238, 3.03815, 7.05101, 8.0103, 5.61396, 6.53738, 1.41095, 5.0149, 9.71211, 4.23604, + 5.98629, 4.70219, 9.69442, 2.82752, 9.93544, 6.9328, 8.2817, 5.12336, 8.98577, 5.80541, 6.19552, + 9.25748, 3.82732, 7.53525, 8.24712, 5.32057, 5.38817, 8.57269, 5.99975, 3.42893, 5.38068, 3.48261, + 3.02851, 6.82079, 9.2902, 2.80427, 8.91868, 5.19227, 7.52482, 3.72584, 5.40107, 2.83307, 1.79755, + 2.49121, 5.52697, 8.08823, 10}, + std::vector{1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, + 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, + 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, + 7.03475, 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 10}, std::vector{ - 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, - 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, - 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, - 7.03475, 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 10}, - std::vector{ - 0.559698, 0.587499, 0.58592, 0.563707, 0.587544, 0.56698, 0.571671, 0.571423, 0.579197, 0.585993, - 0.559316, 0.598435, 0.596364, 0.565285, 0.598493, 0.57008, 0.576828, 0.576475, 0.587333, 0.596461, + 0.559698, 0.587499, 0.58592, 0.563707, 0.587544, 0.56698, 0.571671, 0.571423, 0.579197, 0.585993, + 0.559316, 0.598435, 0.596364, 0.565285, 0.598493, 0.57008, 0.576828, 0.576475, 0.587333, 0.596461, 0.558742, 0.612216, 0.609684, 0.567605, 0.612287, 0.574556, 0.584071, 0.583581, 0.598219, 0.609803, 0.557878, 0.628081, 0.625301, 0.570987, 0.628158, 0.580903, 0.593915, 0.593262, 0.611954, 0.625433, 0.556574, 0.643984, 0.641397, 0.575854, 0.644055, 0.589658, 0.606642, 0.605821, 0.627796, 0.641522, 0.554596, 0.656917, 0.655047, 0.582718, 0.656967, 0.601233, 0.621878, 0.620939, 0.643723, 0.65514, 0.551576, 0.664629, 0.663703, 0.592106, 0.664652, 0.615579, 0.638092, 0.637163, 0.656733, 0.663751, - 0.54692, 0.667558, 0.667297, 0.604361, 0.667564, 0.631676, 0.652518, 0.651781, 0.664541, 0.667311, - 0.53964, 0.668141, 0.668109, 0.619255, 0.668141, 0.647193, 0.662341, 0.661921, 0.667534, 0.66811, + 0.54692, 0.667558, 0.667297, 0.604361, 0.667564, 0.631676, 0.652518, 0.651781, 0.664541, 0.667311, + 0.53964, 0.668141, 0.668109, 0.619255, 0.668141, 0.647193, 0.662341, 0.661921, 0.667534, 0.66811, 0.528016, 0.668187, 0.668186, 0.635471, 0.668187, 0.659096, 0.666861, 0.666715, 0.668138, 0.668186, - 0.583768, 0.569262, 0.575267, 0.573003, 0.566785, 0.575539, 0.58546, 0.57339, 0.572642, 0.586082, + 0.583768, 0.569262, 0.575267, 0.573003, 0.566785, 0.575539, 0.58546, 0.57339, 0.572642, 0.586082, 0.593511, 0.573381, 0.581898, 0.578717, 0.569797, 0.582278, 0.595758, 0.579264, 0.578207, 0.596577, - 0.606134, 0.57925, 0.591004, 0.586675, 0.57415, 0.591515, 0.608935, 0.587425, 0.585974, 0.609946, + 0.606134, 0.57925, 0.591004, 0.586675, 0.57415, 0.591515, 0.608935, 0.587425, 0.585974, 0.609946, 0.621298, 0.587406, 0.602959, 0.597357, 0.580333, 0.603611, 0.624467, 0.598338, 0.596436, 0.625592, 0.637519, 0.598314, 0.617618, 0.610903, 0.588883, 0.618381, 0.640604, 0.612099, 0.609772, 0.641672, - 0.652065, 0.61207, 0.633798, 0.626647, 0.600233, 0.634582, 0.654454, 0.627954, 0.625399, 0.65525, - 0.662084, 0.627922, 0.649014, 0.642661, 0.614386, 0.649671, 0.663395, 0.643868, 0.64149, 0.663807, - 0.666772, 0.643839, 0.66026, 0.655973, 0.630413, 0.660667, 0.667203, 0.656835, 0.655116, 0.667328, - 0.66803, 0.656815, 0.666091, 0.664171, 0.646084, 0.666251, 0.668096, 0.66459, 0.663738, 0.668113, - 0.668182, 0.66458, 0.667903, 0.667432, 0.658361, 0.667935, 0.668185, 0.667547, 0.667307, 0.668186, - 0.582036, 0.580415, 0.582661, 0.562616, 0.57509, 0.584239, 0.583333, 0.583345, 0.568079, 0.561569, - 0.591189, 0.588995, 0.592029, 0.56367, 0.581651, 0.594139, 0.59293, 0.592946, 0.571674, 0.562114, - 0.603195, 0.600379, 0.604265, 0.56523, 0.59067, 0.606921, 0.605404, 0.605423, 0.576832, 0.562925, - 0.617895, 0.614559, 0.619142, 0.567524, 0.602533, 0.622196, 0.62046, 0.620482, 0.584076, 0.564129, - 0.634083, 0.630598, 0.635357, 0.57087, 0.617117, 0.638404, 0.636684, 0.636707, 0.593922, 0.565907, - 0.649254, 0.646247, 0.650314, 0.575687, 0.633281, 0.652764, 0.651396, 0.651414, 0.60665, 0.568515, + 0.652065, 0.61207, 0.633798, 0.626647, 0.600233, 0.634582, 0.654454, 0.627954, 0.625399, 0.65525, + 0.662084, 0.627922, 0.649014, 0.642661, 0.614386, 0.649671, 0.663395, 0.643868, 0.64149, 0.663807, + 0.666772, 0.643839, 0.66026, 0.655973, 0.630413, 0.660667, 0.667203, 0.656835, 0.655116, 0.667328, + 0.66803, 0.656815, 0.666091, 0.664171, 0.646084, 0.666251, 0.668096, 0.66459, 0.663738, 0.668113, + 0.668182, 0.66458, 0.667903, 0.667432, 0.658361, 0.667935, 0.668185, 0.667547, 0.667307, 0.668186, + 0.582036, 0.580415, 0.582661, 0.562616, 0.57509, 0.584239, 0.583333, 0.583345, 0.568079, 0.561569, + 0.591189, 0.588995, 0.592029, 0.56367, 0.581651, 0.594139, 0.59293, 0.592946, 0.571674, 0.562114, + 0.603195, 0.600379, 0.604265, 0.56523, 0.59067, 0.606921, 0.605404, 0.605423, 0.576832, 0.562925, + 0.617895, 0.614559, 0.619142, 0.567524, 0.602533, 0.622196, 0.62046, 0.620482, 0.584076, 0.564129, + 0.634083, 0.630598, 0.635357, 0.57087, 0.617117, 0.638404, 0.636684, 0.636707, 0.593922, 0.565907, + 0.649254, 0.646247, 0.650314, 0.575687, 0.633281, 0.652764, 0.651396, 0.651414, 0.60665, 0.568515, 0.660409, 0.658471, 0.661057, 0.582484, 0.648575, 0.662479, 0.661698, 0.661709, 0.621887, 0.572305, - 0.66615, 0.665341, 0.6664, 0.591792, 0.659985, 0.666907, 0.666636, 0.66664, 0.638101, 0.577728, + 0.66615, 0.665341, 0.6664, 0.591792, 0.659985, 0.666907, 0.666636, 0.66664, 0.638101, 0.577728, 0.667915, 0.667737, 0.667963, 0.603963, 0.665981, 0.668052, 0.668006, 0.668007, 0.652525, 0.585315, - 0.668174, 0.668159, 0.668178, 0.618792, 0.66788, 0.668183, 0.66818, 0.66818, 0.662345, 0.595566, + 0.668174, 0.668159, 0.668178, 0.618792, 0.66788, 0.668183, 0.66818, 0.66818, 0.662345, 0.595566, 0.579218, 0.577141, 0.579248, 0.572105, 0.565823, 0.568568, 0.564137, 0.582163, 0.572127, 0.560781, 0.587362, 0.584504, 0.587403, 0.577445, 0.568392, 0.572381, 0.565918, 0.591359, 0.577475, 0.560938, 0.598256, 0.594491, 0.598309, 0.584924, 0.572127, 0.577836, 0.568532, 0.603413, 0.584966, 0.561173, - 0.611999, 0.607362, 0.612063, 0.595049, 0.577477, 0.585464, 0.572329, 0.61815, 0.595104, 0.561524, + 0.611999, 0.607362, 0.612063, 0.595049, 0.577477, 0.585464, 0.572329, 0.61815, 0.595104, 0.561524, 0.627845, 0.622696, 0.627915, 0.608056, 0.584968, 0.595763, 0.577763, 0.634345, 0.608125, 0.562048, - 0.643768, 0.638894, 0.643833, 0.62348, 0.595107, 0.608942, 0.585363, 0.649473, 0.623558, 0.562827, - 0.656765, 0.653146, 0.65681, 0.639656, 0.608128, 0.624474, 0.59563, 0.660545, 0.639731, 0.563983, - 0.664556, 0.66269, 0.664578, 0.653734, 0.623561, 0.640611, 0.608777, 0.666203, 0.653791, 0.565691, + 0.643768, 0.638894, 0.643833, 0.62348, 0.595107, 0.608942, 0.585363, 0.649473, 0.623558, 0.562827, + 0.656765, 0.653146, 0.65681, 0.639656, 0.608128, 0.624474, 0.59563, 0.660545, 0.639731, 0.563983, + 0.664556, 0.66269, 0.664578, 0.653734, 0.623561, 0.640611, 0.608777, 0.666203, 0.653791, 0.565691, 0.667538, 0.666978, 0.667544, 0.663011, 0.639734, 0.654459, 0.624289, 0.667925, 0.663042, 0.5682, 0.668139, 0.668063, 0.668139, 0.667082, 0.653793, 0.663397, 0.640434, 0.668175, 0.667092, 0.571849, - 0.577977, 0.578955, 0.568828, 0.573079, 0.566562, 0.562011, 0.573728, 0.56272, 0.585197, 0.587567, - 0.585658, 0.587002, 0.572757, 0.578824, 0.569471, 0.562771, 0.57974, 0.563825, 0.59541, 0.598524, + 0.577977, 0.578955, 0.568828, 0.573079, 0.566562, 0.562011, 0.573728, 0.56272, 0.585197, 0.587567, + 0.585658, 0.587002, 0.572757, 0.578824, 0.569471, 0.562771, 0.57974, 0.563825, 0.59541, 0.598524, 0.596018, 0.597785, 0.578369, 0.586822, 0.573683, 0.563901, 0.588076, 0.565458, 0.608505, 0.612324, - 0.609258, 0.611426, 0.586197, 0.59755, 0.579676, 0.56557, 0.599186, 0.567859, 0.623984, 0.628198, - 0.624826, 0.62722, 0.59673, 0.611138, 0.587988, 0.568023, 0.613126, 0.571356, 0.640142, 0.644091, - 0.640947, 0.643193, 0.610134, 0.626905, 0.599072, 0.571593, 0.629065, 0.57638, 0.654104, 0.656992, - 0.654712, 0.656356, 0.625799, 0.642901, 0.612988, 0.576717, 0.644878, 0.583449, 0.66321, 0.664664, - 0.663529, 0.664358, 0.641868, 0.656146, 0.628916, 0.583917, 0.65754, 0.593086, 0.667146, 0.667567, - 0.667244, 0.667485, 0.655394, 0.664256, 0.644744, 0.59371, 0.664921, 0.6056, 0.668088, 0.668142, - 0.668102, 0.668132, 0.66388, 0.667456, 0.657447, 0.606385, 0.667634, 0.620685, 0.668185, 0.668187}, - std::vector{ - 0.559698, 0.587499, 0.58592, 0.563707, 0.587544, 0.56698, 0.571671, 0.571423, 0.579197, 0.585993, - 0.583768, 0.569262, 0.575267, 0.573003, 0.566785, 0.575539, 0.58546, 0.57339, 0.572642, 0.586082, - 0.582036, 0.580415, 0.582661, 0.562616, 0.57509, 0.584239, 0.583333, 0.583345, 0.568079, 0.561569, - 0.579218, 0.577141, 0.579248, 0.572105, 0.565823, 0.568568, 0.564137, 0.582163, 0.572127, 0.560781, - 0.577977, 0.578955, 0.568828, 0.573079, 0.566562, 0.562011, 0.573728, 0.56272, 0.585197, 0.587567}, - std::vector{ - 1.2132, 1.37242, 1.3621, 1.23365, 1.37271, 1.25089, 1.27652, 1.27513, 1.32014, 1.36258, - 1.34833, 1.26322, 1.29695, 1.284, 1.24985, 1.29853, 1.35913, 1.2862, 1.28197, 1.36315, - 1.33748, 1.32752, 1.34137, 1.22801, 1.29593, 1.35132, 1.34559, 1.34566, 1.25679, 1.22266, - 1.32026, 1.30789, 1.32044, 1.27895, 1.24474, 1.25944, 1.23589, 1.33827, 1.27907, 1.21865, - 1.31284, 1.31868, 1.26086, 1.28443, 1.24866, 1.22491, 1.28812, 1.22855, 1.35744, 1.37287}), + 0.609258, 0.611426, 0.586197, 0.59755, 0.579676, 0.56557, 0.599186, 0.567859, 0.623984, 0.628198, + 0.624826, 0.62722, 0.59673, 0.611138, 0.587988, 0.568023, 0.613126, 0.571356, 0.640142, 0.644091, + 0.640947, 0.643193, 0.610134, 0.626905, 0.599072, 0.571593, 0.629065, 0.57638, 0.654104, 0.656992, + 0.654712, 0.656356, 0.625799, 0.642901, 0.612988, 0.576717, 0.644878, 0.583449, 0.66321, 0.664664, + 0.663529, 0.664358, 0.641868, 0.656146, 0.628916, 0.583917, 0.65754, 0.593086, 0.667146, 0.667567, + 0.667244, 0.667485, 0.655394, 0.664256, 0.644744, 0.59371, 0.664921, 0.6056, 0.668088, 0.668142, + 0.668102, 0.668132, 0.66388, 0.667456, 0.657447, 0.606385, 0.667634, 0.620685, 0.668185, 0.668187}, + std::vector{0.559698, 0.587499, 0.58592, 0.563707, 0.587544, 0.56698, 0.571671, 0.571423, 0.579197, + 0.585993, 0.583768, 0.569262, 0.575267, 0.573003, 0.566785, 0.575539, 0.58546, 0.57339, + 0.572642, 0.586082, 0.582036, 0.580415, 0.582661, 0.562616, 0.57509, 0.584239, 0.583333, + 0.583345, 0.568079, 0.561569, 0.579218, 0.577141, 0.579248, 0.572105, 0.565823, 0.568568, + 0.564137, 0.582163, 0.572127, 0.560781, 0.577977, 0.578955, 0.568828, 0.573079, 0.566562, + 0.562011, 0.573728, 0.56272, 0.585197, 0.587567}, + std::vector{1.2132, 1.37242, 1.3621, 1.23365, 1.37271, 1.25089, 1.27652, 1.27513, 1.32014, 1.36258, + 1.34833, 1.26322, 1.29695, 1.284, 1.24985, 1.29853, 1.35913, 1.2862, 1.28197, 1.36315, + 1.33748, 1.32752, 1.34137, 1.22801, 1.29593, 1.35132, 1.34559, 1.34566, 1.25679, 1.22266, + 1.32026, 1.30789, 1.32044, 1.27895, 1.24474, 1.25944, 1.23589, 1.33827, 1.27907, 1.21865, + 1.31284, 1.31868, 1.26086, 1.28443, 1.24866, 1.22491, 1.28812, 1.22855, 1.35744, 1.37287}), TensorIteratorStaticParams( std::make_shared(), - 5, 10, 10, 10, - 0.7f, ov::op::RecurrentSequenceDirection::FORWARD, TensorIteratorBodyType::GRU, + 5, + 10, + 10, + 10, + 0.7f, + ov::op::RecurrentSequenceDirection::FORWARD, + TensorIteratorBodyType::GRU, ET, std::vector{ - 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, - 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, - 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, - 7.03475, 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, - 6.61627, 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 2.07541, - 5.72319, 1.75261, 9.25175, 9.19404, 3.69037, 6.2595, 6.09321, 6.52544, 9.60882, 3.34881, - 3.07914, 5.80104, 9.54944, 5.43754, 5.8654, 7.88937, 1.40811, 2.2597, 8.13163, 1.26821, - 8.94813, 5.86709, 5.03182, 9.02922, 4.39826, 5.84582, 6.87069, 4.25135, 6.13908, 6.74053, - 2.13683, 7.21184, 6.82974, 4.18545, 7.8691, 4.20879, 7.77509, 8.93208, 1.10502, 5.48298, - 1.66413, 8.08256, 1.57661, 4.19779, 9.47653, 4.41823, 7.86628, 7.94436, 3.71224, 7.95465, - 2.37637, 6.20771, 1.08107, 7.38138, 5.23577, 7.88133, 5.20653, 3.42101, 8.48523, 5.96192, - 1.63073, 5.25228, 7.68488, 2.7276, 5.1788, 3.07327, 5.57423, 2.87711, 1.44374, 5.66976, - 2.55051, 4.56682, 1.96629, 5.58829, 1.91922, 3.59846, 3.08583, 9.70901, 3.50487, 3.1026, - 1.82401, 6.1306, 4.76134, 4.31059, 8.31695, 3.60784, 7.45652, 6.51653, 4.84219, 7.76686, - 4.85031, 4.85544, 4.25714, 2.38005, 9.43471, 9.24769, 8.03763, 6.54696, 1.32399, 6.88891, - 2.16793, 3.64924, 4.24733, 3.47181, 1.66572, 2.36923, 2.45457, 9.44841, 4.34021, 1.45016, - 7.6686, 3.68812, 2.83922, 9.83581, 9.03719, 7.83414, 6.86009, 1.35715, 8.32489, 7.86316, - 5.09754, 5.78644, 1.98402, 2.31429, 5.5791, 2.94085, 9.24799, 5.15937, 2.19041, 7.87817, - 2.9146, 1.66833, 1.85877, 2.45985, 4.20817, 1.85777, 2.28937, 9.37912, 6.18926, 8.55681, - 6.60963, 3.92066, 7.5521, 5.70463, 7.6313, 2.48866, 7.18352, 4.8413, 7.55702, 7.80702, - 4.5785, 9.3268, 2.83159, 1.07202, 9.33716, 3.6506, 2.50256, 1.21691, 5.06801, 8.27505, - 4.31539, 6.48286, 1.31363, 4.1912, 1.70668, 7.23867, 1.11441, 5.13591, 9.65186, 4.00767, - 5.24875, 1.94852, 5.52768, 8.97121, 5.8094, 3.53329, 4.19126, 9.06652, 3.1734, 1.21496, - 9.69154, 4.86971, 4.1166, 6.19361, 2.13874, 9.55039, 3.8225, 9.57548, 2.96554, 3.2383, - 8.77422, 3.11741, 8.3359, 5.89508, 2.72134, 6.29956, 1.43323, 1.14286, 1.4474, 4.59474, - 6.19214, 8.80766, 8.07546, 3.29232, 1.74029, 2.4198, 2.88544, 4.75644, 4.12921, 7.29896, - 7.27759, 1.67252, 1.32823, 8.1046, 9.10476, 1.04197, 3.37783, 5.2064, 4.23835, 3.16196, - 1.20852, 5.78501, 2.17175, 6.05313, 2.51048, 4.78967, 7.16219, 3.4651, 1.09, 2.9788, - 1.28761, 9.41385, 8.03883, 5.65835, 1.14816, 3.6892, 5.86648, 8.73895, 2.66603, 1.75192, - 1.39845, 4.99427, 1.17387, 1.60329, 8.30594, 6.72662, 7.95565, 7.35114, 3.1439, 1.39976, - 3.53095, 8.78581, 1.65811, 6.94299, 2.68641, 5.70058, 9.13491, 5.27637, 8.6232, 8.54902, - 2.25352, 5.86274, 5.20377, 2.96815, 4.96745, 5.3225, 3.99956, 1.08021, 5.54918, 7.05833, - 1.49913, 2.41822, 6.44593, 3.87301, 9.01465, 8.11336, 2.95749, 2.80188, 7.12396, 2.40595, - 5.59325, 9.89258, 2.30223, 1.4347, 9.09158, 7.43797, 3.79295, 4.53646, 1.72705, 4.16909, - 1.00912, 6.62167, 2.80244, 6.626, 3.89307, 1.42586, 7.51028, 7.83327, 4.65674, 7.33902, - 6.26823, 9.72608, 3.73491, 3.8238, 3.03815, 7.05101, 8.0103, 5.61396, 6.53738, 1.41095, - 5.0149, 9.71211, 4.23604, 5.98629, 4.70219, 9.69442, 2.82752, 9.93544, 6.9328, 8.2817, - 5.12336, 8.98577, 5.80541, 6.19552, 9.25748, 3.82732, 7.53525, 8.24712, 5.32057, 5.38817, - 8.57269, 5.99975, 3.42893, 5.38068, 3.48261, 3.02851, 6.82079, 9.2902, 2.80427, 8.91868, - 5.19227, 7.52482, 3.72584, 5.40107, 2.83307, 1.79755, 2.49121, 5.52697, 8.08823, 9.13242, - 2.97572, 7.64318, 3.32023, 6.07788, 2.19187, 4.34879, 1.7457, 5.55154, 7.24966, 5.1128, - 4.25147, 8.34407, 1.4123, 4.49045, 5.12671, 7.62159, 9.18673, 3.49665, 8.35992, 6.90684, - 1.10152, 7.61818, 6.43145, 7.12017, 6.25564, 6.16169, 4.24916, 9.6283, 9.88249, 4.48422, - 8.52562, 9.83928, 6.26818, 7.03839, 1.77631, 9.92305, 8.0155, 9.94928, 6.88321, 1.33685, - 7.4718, 7.19305, 6.47932, 1.9559, 3.52616, 7.98593, 9.0115, 5.59539, 7.44137, 1.70001, - 6.53774, 8.54023, 7.26405, 5.99553, 8.75071, 7.70789, 3.38094, 9.99792, 6.16359, 6.75153, - 5.4073, 9.00437, 8.87059, 8.63011, 6.82951, 6.27021, 3.53425, 9.92489, 8.19695, 5.51473, - 7.95084, 2.11852, 9.28916, 1.40353, 3.05744, 8.58238, 3.75014, 5.35889, 6.85048, 2.29549, - 3.75218, 8.98228, 8.98158, 5.63695, 3.40379, 8.92309, 5.48185, 4.00095, 9.05227, 2.84035, - 8.37644, 8.54954, 5.70516, 2.45744, 9.54079, 1.53504, 8.9785, 6.1691, 4.40962, 10}, - std::vector{ - 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, - 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, - 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, - 7.03475, 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, - 6.61627, 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 10}, + 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, 8.6168, + 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, 8.0055, 7.44373, + 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, 7.03475, 6.33759, 7.04489, + 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, 6.61627, 6.94572, 3.68646, 5.01521, + 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 2.07541, 5.72319, 1.75261, 9.25175, 9.19404, 3.69037, + 6.2595, 6.09321, 6.52544, 9.60882, 3.34881, 3.07914, 5.80104, 9.54944, 5.43754, 5.8654, 7.88937, + 1.40811, 2.2597, 8.13163, 1.26821, 8.94813, 5.86709, 5.03182, 9.02922, 4.39826, 5.84582, 6.87069, + 4.25135, 6.13908, 6.74053, 2.13683, 7.21184, 6.82974, 4.18545, 7.8691, 4.20879, 7.77509, 8.93208, + 1.10502, 5.48298, 1.66413, 8.08256, 1.57661, 4.19779, 9.47653, 4.41823, 7.86628, 7.94436, 3.71224, + 7.95465, 2.37637, 6.20771, 1.08107, 7.38138, 5.23577, 7.88133, 5.20653, 3.42101, 8.48523, 5.96192, + 1.63073, 5.25228, 7.68488, 2.7276, 5.1788, 3.07327, 5.57423, 2.87711, 1.44374, 5.66976, 2.55051, + 4.56682, 1.96629, 5.58829, 1.91922, 3.59846, 3.08583, 9.70901, 3.50487, 3.1026, 1.82401, 6.1306, + 4.76134, 4.31059, 8.31695, 3.60784, 7.45652, 6.51653, 4.84219, 7.76686, 4.85031, 4.85544, 4.25714, + 2.38005, 9.43471, 9.24769, 8.03763, 6.54696, 1.32399, 6.88891, 2.16793, 3.64924, 4.24733, 3.47181, + 1.66572, 2.36923, 2.45457, 9.44841, 4.34021, 1.45016, 7.6686, 3.68812, 2.83922, 9.83581, 9.03719, + 7.83414, 6.86009, 1.35715, 8.32489, 7.86316, 5.09754, 5.78644, 1.98402, 2.31429, 5.5791, 2.94085, + 9.24799, 5.15937, 2.19041, 7.87817, 2.9146, 1.66833, 1.85877, 2.45985, 4.20817, 1.85777, 2.28937, + 9.37912, 6.18926, 8.55681, 6.60963, 3.92066, 7.5521, 5.70463, 7.6313, 2.48866, 7.18352, 4.8413, + 7.55702, 7.80702, 4.5785, 9.3268, 2.83159, 1.07202, 9.33716, 3.6506, 2.50256, 1.21691, 5.06801, + 8.27505, 4.31539, 6.48286, 1.31363, 4.1912, 1.70668, 7.23867, 1.11441, 5.13591, 9.65186, 4.00767, + 5.24875, 1.94852, 5.52768, 8.97121, 5.8094, 3.53329, 4.19126, 9.06652, 3.1734, 1.21496, 9.69154, + 4.86971, 4.1166, 6.19361, 2.13874, 9.55039, 3.8225, 9.57548, 2.96554, 3.2383, 8.77422, 3.11741, + 8.3359, 5.89508, 2.72134, 6.29956, 1.43323, 1.14286, 1.4474, 4.59474, 6.19214, 8.80766, 8.07546, + 3.29232, 1.74029, 2.4198, 2.88544, 4.75644, 4.12921, 7.29896, 7.27759, 1.67252, 1.32823, 8.1046, + 9.10476, 1.04197, 3.37783, 5.2064, 4.23835, 3.16196, 1.20852, 5.78501, 2.17175, 6.05313, 2.51048, + 4.78967, 7.16219, 3.4651, 1.09, 2.9788, 1.28761, 9.41385, 8.03883, 5.65835, 1.14816, 3.6892, + 5.86648, 8.73895, 2.66603, 1.75192, 1.39845, 4.99427, 1.17387, 1.60329, 8.30594, 6.72662, 7.95565, + 7.35114, 3.1439, 1.39976, 3.53095, 8.78581, 1.65811, 6.94299, 2.68641, 5.70058, 9.13491, 5.27637, + 8.6232, 8.54902, 2.25352, 5.86274, 5.20377, 2.96815, 4.96745, 5.3225, 3.99956, 1.08021, 5.54918, + 7.05833, 1.49913, 2.41822, 6.44593, 3.87301, 9.01465, 8.11336, 2.95749, 2.80188, 7.12396, 2.40595, + 5.59325, 9.89258, 2.30223, 1.4347, 9.09158, 7.43797, 3.79295, 4.53646, 1.72705, 4.16909, 1.00912, + 6.62167, 2.80244, 6.626, 3.89307, 1.42586, 7.51028, 7.83327, 4.65674, 7.33902, 6.26823, 9.72608, + 3.73491, 3.8238, 3.03815, 7.05101, 8.0103, 5.61396, 6.53738, 1.41095, 5.0149, 9.71211, 4.23604, + 5.98629, 4.70219, 9.69442, 2.82752, 9.93544, 6.9328, 8.2817, 5.12336, 8.98577, 5.80541, 6.19552, + 9.25748, 3.82732, 7.53525, 8.24712, 5.32057, 5.38817, 8.57269, 5.99975, 3.42893, 5.38068, 3.48261, + 3.02851, 6.82079, 9.2902, 2.80427, 8.91868, 5.19227, 7.52482, 3.72584, 5.40107, 2.83307, 1.79755, + 2.49121, 5.52697, 8.08823, 9.13242, 2.97572, 7.64318, 3.32023, 6.07788, 2.19187, 4.34879, 1.7457, + 5.55154, 7.24966, 5.1128, 4.25147, 8.34407, 1.4123, 4.49045, 5.12671, 7.62159, 9.18673, 3.49665, + 8.35992, 6.90684, 1.10152, 7.61818, 6.43145, 7.12017, 6.25564, 6.16169, 4.24916, 9.6283, 9.88249, + 4.48422, 8.52562, 9.83928, 6.26818, 7.03839, 1.77631, 9.92305, 8.0155, 9.94928, 6.88321, 1.33685, + 7.4718, 7.19305, 6.47932, 1.9559, 3.52616, 7.98593, 9.0115, 5.59539, 7.44137, 1.70001, 6.53774, + 8.54023, 7.26405, 5.99553, 8.75071, 7.70789, 3.38094, 9.99792, 6.16359, 6.75153, 5.4073, 9.00437, + 8.87059, 8.63011, 6.82951, 6.27021, 3.53425, 9.92489, 8.19695, 5.51473, 7.95084, 2.11852, 9.28916, + 1.40353, 3.05744, 8.58238, 3.75014, 5.35889, 6.85048, 2.29549, 3.75218, 8.98228, 8.98158, 5.63695, + 3.40379, 8.92309, 5.48185, 4.00095, 9.05227, 2.84035, 8.37644, 8.54954, 5.70516, 2.45744, 9.54079, + 1.53504, 8.9785, 6.1691, 4.40962, 10}, + std::vector{1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, + 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, + 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, + 7.03475, 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, + 6.61627, 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 10}, std::vector{0}, std::vector{10, 10, 10, 10, 10}, std::vector{ - 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, - 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, - 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, - 7.03475, 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, - 6.61627, 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 2.07541, - 5.72319, 1.75261, 9.25175, 9.19404, 3.69037, 6.2595, 6.09321, 6.52544, 9.60882, 3.34881, - 3.07914, 5.80104, 9.54944, 5.43754, 5.8654, 7.88937, 1.40811, 2.2597, 8.13163, 1.26821, - 8.94813, 5.86709, 5.03182, 9.02922, 4.39826, 5.84582, 6.87069, 4.25135, 6.13908, 6.74053, - 2.13683, 7.21184, 6.82974, 4.18545, 7.8691, 4.20879, 7.77509, 8.93208, 1.10502, 5.48298, - 1.66413, 8.08256, 1.57661, 4.19779, 9.47653, 4.41823, 7.86628, 7.94436, 3.71224, 7.95465, - 2.37637, 6.20771, 1.08107, 7.38138, 5.23577, 7.88133, 5.20653, 3.42101, 8.48523, 5.96192, - 1.63073, 5.25228, 7.68488, 2.7276, 5.1788, 3.07327, 5.57423, 2.87711, 1.44374, 5.66976, - 2.55051, 4.56682, 1.96629, 5.58829, 1.91922, 3.59846, 3.08583, 9.70901, 3.50487, 3.1026, - 1.82401, 6.1306, 4.76134, 4.31059, 8.31695, 3.60784, 7.45652, 6.51653, 4.84219, 7.76686, - 4.85031, 4.85544, 4.25714, 2.38005, 9.43471, 9.24769, 8.03763, 6.54696, 1.32399, 6.88891, - 2.16793, 3.64924, 4.24733, 3.47181, 1.66572, 2.36923, 2.45457, 9.44841, 4.34021, 1.45016, - 7.6686, 3.68812, 2.83922, 9.83581, 9.03719, 7.83414, 6.86009, 1.35715, 8.32489, 7.86316, - 5.09754, 5.78644, 1.98402, 2.31429, 5.5791, 2.94085, 9.24799, 5.15937, 2.19041, 7.87817, - 2.9146, 1.66833, 1.85877, 2.45985, 4.20817, 1.85777, 2.28937, 9.37912, 6.18926, 8.55681, - 6.60963, 3.92066, 7.5521, 5.70463, 7.6313, 2.48866, 7.18352, 4.8413, 7.55702, 7.80702, - 4.5785, 9.3268, 2.83159, 1.07202, 9.33716, 3.6506, 2.50256, 1.21691, 5.06801, 8.27505, - 4.31539, 6.48286, 1.31363, 4.1912, 1.70668, 7.23867, 1.11441, 5.13591, 9.65186, 4.00767, - 5.24875, 1.94852, 5.52768, 8.97121, 5.8094, 3.53329, 4.19126, 9.06652, 3.1734, 1.21496, - 9.69154, 4.86971, 4.1166, 6.19361, 2.13874, 9.55039, 3.8225, 9.57548, 2.96554, 3.2383, - 8.77422, 3.11741, 8.3359, 5.89508, 2.72134, 6.29956, 1.43323, 1.14286, 1.4474, 4.59474, - 6.19214, 8.80766, 8.07546, 3.29232, 1.74029, 2.4198, 2.88544, 4.75644, 4.12921, 7.29896, - 7.27759, 1.67252, 1.32823, 8.1046, 9.10476, 1.04197, 3.37783, 5.2064, 4.23835, 3.16196, - 1.20852, 5.78501, 2.17175, 6.05313, 2.51048, 4.78967, 7.16219, 3.4651, 1.09, 2.9788, - 1.28761, 9.41385, 8.03883, 5.65835, 1.14816, 3.6892, 5.86648, 8.73895, 2.66603, 1.75192, - 1.39845, 4.99427, 1.17387, 1.60329, 8.30594, 6.72662, 7.95565, 7.35114, 3.1439, 10}, + 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, 8.6168, + 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, 8.0055, 7.44373, + 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, 7.03475, 6.33759, 7.04489, + 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, 6.61627, 6.94572, 3.68646, 5.01521, + 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 2.07541, 5.72319, 1.75261, 9.25175, 9.19404, 3.69037, + 6.2595, 6.09321, 6.52544, 9.60882, 3.34881, 3.07914, 5.80104, 9.54944, 5.43754, 5.8654, 7.88937, + 1.40811, 2.2597, 8.13163, 1.26821, 8.94813, 5.86709, 5.03182, 9.02922, 4.39826, 5.84582, 6.87069, + 4.25135, 6.13908, 6.74053, 2.13683, 7.21184, 6.82974, 4.18545, 7.8691, 4.20879, 7.77509, 8.93208, + 1.10502, 5.48298, 1.66413, 8.08256, 1.57661, 4.19779, 9.47653, 4.41823, 7.86628, 7.94436, 3.71224, + 7.95465, 2.37637, 6.20771, 1.08107, 7.38138, 5.23577, 7.88133, 5.20653, 3.42101, 8.48523, 5.96192, + 1.63073, 5.25228, 7.68488, 2.7276, 5.1788, 3.07327, 5.57423, 2.87711, 1.44374, 5.66976, 2.55051, + 4.56682, 1.96629, 5.58829, 1.91922, 3.59846, 3.08583, 9.70901, 3.50487, 3.1026, 1.82401, 6.1306, + 4.76134, 4.31059, 8.31695, 3.60784, 7.45652, 6.51653, 4.84219, 7.76686, 4.85031, 4.85544, 4.25714, + 2.38005, 9.43471, 9.24769, 8.03763, 6.54696, 1.32399, 6.88891, 2.16793, 3.64924, 4.24733, 3.47181, + 1.66572, 2.36923, 2.45457, 9.44841, 4.34021, 1.45016, 7.6686, 3.68812, 2.83922, 9.83581, 9.03719, + 7.83414, 6.86009, 1.35715, 8.32489, 7.86316, 5.09754, 5.78644, 1.98402, 2.31429, 5.5791, 2.94085, + 9.24799, 5.15937, 2.19041, 7.87817, 2.9146, 1.66833, 1.85877, 2.45985, 4.20817, 1.85777, 2.28937, + 9.37912, 6.18926, 8.55681, 6.60963, 3.92066, 7.5521, 5.70463, 7.6313, 2.48866, 7.18352, 4.8413, + 7.55702, 7.80702, 4.5785, 9.3268, 2.83159, 1.07202, 9.33716, 3.6506, 2.50256, 1.21691, 5.06801, + 8.27505, 4.31539, 6.48286, 1.31363, 4.1912, 1.70668, 7.23867, 1.11441, 5.13591, 9.65186, 4.00767, + 5.24875, 1.94852, 5.52768, 8.97121, 5.8094, 3.53329, 4.19126, 9.06652, 3.1734, 1.21496, 9.69154, + 4.86971, 4.1166, 6.19361, 2.13874, 9.55039, 3.8225, 9.57548, 2.96554, 3.2383, 8.77422, 3.11741, + 8.3359, 5.89508, 2.72134, 6.29956, 1.43323, 1.14286, 1.4474, 4.59474, 6.19214, 8.80766, 8.07546, + 3.29232, 1.74029, 2.4198, 2.88544, 4.75644, 4.12921, 7.29896, 7.27759, 1.67252, 1.32823, 8.1046, + 9.10476, 1.04197, 3.37783, 5.2064, 4.23835, 3.16196, 1.20852, 5.78501, 2.17175, 6.05313, 2.51048, + 4.78967, 7.16219, 3.4651, 1.09, 2.9788, 1.28761, 9.41385, 8.03883, 5.65835, 1.14816, 3.6892, + 5.86648, 8.73895, 2.66603, 1.75192, 1.39845, 4.99427, 1.17387, 1.60329, 8.30594, 6.72662, 7.95565, + 7.35114, 3.1439, 10}, std::vector{ - 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, - 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, - 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, - 7.03475, 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, - 6.61627, 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 2.07541, - 5.72319, 1.75261, 9.25175, 9.19404, 3.69037, 6.2595, 6.09321, 6.52544, 9.60882, 3.34881, - 3.07914, 5.80104, 9.54944, 5.43754, 5.8654, 7.88937, 1.40811, 2.2597, 8.13163, 1.26821, - 8.94813, 5.86709, 5.03182, 9.02922, 4.39826, 5.84582, 6.87069, 4.25135, 6.13908, 6.74053, - 2.13683, 7.21184, 6.82974, 4.18545, 7.8691, 4.20879, 7.77509, 8.93208, 1.10502, 5.48298, - 1.66413, 8.08256, 1.57661, 4.19779, 9.47653, 4.41823, 7.86628, 7.94436, 3.71224, 7.95465, - 2.37637, 6.20771, 1.08107, 7.38138, 5.23577, 7.88133, 5.20653, 3.42101, 8.48523, 5.96192, - 1.63073, 5.25228, 7.68488, 2.7276, 5.1788, 3.07327, 5.57423, 2.87711, 1.44374, 5.66976, - 2.55051, 4.56682, 1.96629, 5.58829, 1.91922, 3.59846, 3.08583, 9.70901, 3.50487, 3.1026, - 1.82401, 6.1306, 4.76134, 4.31059, 8.31695, 3.60784, 7.45652, 6.51653, 4.84219, 7.76686, - 4.85031, 4.85544, 4.25714, 2.38005, 9.43471, 9.24769, 8.03763, 6.54696, 1.32399, 6.88891, - 2.16793, 3.64924, 4.24733, 3.47181, 1.66572, 2.36923, 2.45457, 9.44841, 4.34021, 1.45016, - 7.6686, 3.68812, 2.83922, 9.83581, 9.03719, 7.83414, 6.86009, 1.35715, 8.32489, 7.86316, - 5.09754, 5.78644, 1.98402, 2.31429, 5.5791, 2.94085, 9.24799, 5.15937, 2.19041, 7.87817, - 2.9146, 1.66833, 1.85877, 2.45985, 4.20817, 1.85777, 2.28937, 9.37912, 6.18926, 8.55681, - 6.60963, 3.92066, 7.5521, 5.70463, 7.6313, 2.48866, 7.18352, 4.8413, 7.55702, 7.80702, - 4.5785, 9.3268, 2.83159, 1.07202, 9.33716, 3.6506, 2.50256, 1.21691, 5.06801, 8.27505, - 4.31539, 6.48286, 1.31363, 4.1912, 1.70668, 7.23867, 1.11441, 5.13591, 9.65186, 4.00767, - 5.24875, 1.94852, 5.52768, 8.97121, 5.8094, 3.53329, 4.19126, 9.06652, 3.1734, 1.21496, - 9.69154, 4.86971, 4.1166, 6.19361, 2.13874, 9.55039, 3.8225, 9.57548, 2.96554, 3.2383, - 8.77422, 3.11741, 8.3359, 5.89508, 2.72134, 6.29956, 1.43323, 1.14286, 1.4474, 4.59474, - 6.19214, 8.80766, 8.07546, 3.29232, 1.74029, 2.4198, 2.88544, 4.75644, 4.12921, 7.29896, - 7.27759, 1.67252, 1.32823, 8.1046, 9.10476, 1.04197, 3.37783, 5.2064, 4.23835, 3.16196, - 1.20852, 5.78501, 2.17175, 6.05313, 2.51048, 4.78967, 7.16219, 3.4651, 1.09, 2.9788, - 1.28761, 9.41385, 8.03883, 5.65835, 1.14816, 3.6892, 5.86648, 8.73895, 2.66603, 1.75192, - 1.39845, 4.99427, 1.17387, 1.60329, 8.30594, 6.72662, 7.95565, 7.35114, 3.1439, 10}, + 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, 8.6168, + 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, 8.0055, 7.44373, + 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, 7.03475, 6.33759, 7.04489, + 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, 6.61627, 6.94572, 3.68646, 5.01521, + 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 2.07541, 5.72319, 1.75261, 9.25175, 9.19404, 3.69037, + 6.2595, 6.09321, 6.52544, 9.60882, 3.34881, 3.07914, 5.80104, 9.54944, 5.43754, 5.8654, 7.88937, + 1.40811, 2.2597, 8.13163, 1.26821, 8.94813, 5.86709, 5.03182, 9.02922, 4.39826, 5.84582, 6.87069, + 4.25135, 6.13908, 6.74053, 2.13683, 7.21184, 6.82974, 4.18545, 7.8691, 4.20879, 7.77509, 8.93208, + 1.10502, 5.48298, 1.66413, 8.08256, 1.57661, 4.19779, 9.47653, 4.41823, 7.86628, 7.94436, 3.71224, + 7.95465, 2.37637, 6.20771, 1.08107, 7.38138, 5.23577, 7.88133, 5.20653, 3.42101, 8.48523, 5.96192, + 1.63073, 5.25228, 7.68488, 2.7276, 5.1788, 3.07327, 5.57423, 2.87711, 1.44374, 5.66976, 2.55051, + 4.56682, 1.96629, 5.58829, 1.91922, 3.59846, 3.08583, 9.70901, 3.50487, 3.1026, 1.82401, 6.1306, + 4.76134, 4.31059, 8.31695, 3.60784, 7.45652, 6.51653, 4.84219, 7.76686, 4.85031, 4.85544, 4.25714, + 2.38005, 9.43471, 9.24769, 8.03763, 6.54696, 1.32399, 6.88891, 2.16793, 3.64924, 4.24733, 3.47181, + 1.66572, 2.36923, 2.45457, 9.44841, 4.34021, 1.45016, 7.6686, 3.68812, 2.83922, 9.83581, 9.03719, + 7.83414, 6.86009, 1.35715, 8.32489, 7.86316, 5.09754, 5.78644, 1.98402, 2.31429, 5.5791, 2.94085, + 9.24799, 5.15937, 2.19041, 7.87817, 2.9146, 1.66833, 1.85877, 2.45985, 4.20817, 1.85777, 2.28937, + 9.37912, 6.18926, 8.55681, 6.60963, 3.92066, 7.5521, 5.70463, 7.6313, 2.48866, 7.18352, 4.8413, + 7.55702, 7.80702, 4.5785, 9.3268, 2.83159, 1.07202, 9.33716, 3.6506, 2.50256, 1.21691, 5.06801, + 8.27505, 4.31539, 6.48286, 1.31363, 4.1912, 1.70668, 7.23867, 1.11441, 5.13591, 9.65186, 4.00767, + 5.24875, 1.94852, 5.52768, 8.97121, 5.8094, 3.53329, 4.19126, 9.06652, 3.1734, 1.21496, 9.69154, + 4.86971, 4.1166, 6.19361, 2.13874, 9.55039, 3.8225, 9.57548, 2.96554, 3.2383, 8.77422, 3.11741, + 8.3359, 5.89508, 2.72134, 6.29956, 1.43323, 1.14286, 1.4474, 4.59474, 6.19214, 8.80766, 8.07546, + 3.29232, 1.74029, 2.4198, 2.88544, 4.75644, 4.12921, 7.29896, 7.27759, 1.67252, 1.32823, 8.1046, + 9.10476, 1.04197, 3.37783, 5.2064, 4.23835, 3.16196, 1.20852, 5.78501, 2.17175, 6.05313, 2.51048, + 4.78967, 7.16219, 3.4651, 1.09, 2.9788, 1.28761, 9.41385, 8.03883, 5.65835, 1.14816, 3.6892, + 5.86648, 8.73895, 2.66603, 1.75192, 1.39845, 4.99427, 1.17387, 1.60329, 8.30594, 6.72662, 7.95565, + 7.35114, 3.1439, 10}, + std::vector{1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, + 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, + 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 10}, std::vector{ - 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, - 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, - 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 10}, - std::vector{ - 0.868724, 6.86548, 6.47683, 1.63923, 6.87664, 2.28849, 3.25364, 3.2015, 4.89637, 6.49477, - 0.781008, 4.78797, 4.52828, 1.29585, 4.79543, 1.72968, 2.37458, 2.33974, 3.47223, 4.54026, - 0.722396, 3.3998, 3.22628, 1.06641, 3.40478, 1.35629, 1.7872, 1.76392, 2.52064, 3.23428, - 0.683233, 2.47224, 2.3563, 0.913096, 2.47557, 1.10679, 1.39472, 1.37917, 1.8848, 2.36164, - 0.657064, 1.85246, 1.77498, 0.810656, 1.85468, 0.94008, 1.13247, 1.12208, 1.45993, 1.77856, - 0.639579, 1.43833, 1.38656, 0.742207, 1.43981, 0.828687, 0.957241, 0.950296, 1.17605, 1.38895, - 0.627896, 1.16161, 1.12702, 0.69647, 1.1626, 0.754255, 0.840153, 0.835513, 0.986357, 1.12861, - 0.620089, 0.976709, 0.953597, 0.66591, 0.977373, 0.704521, 0.761917, 0.758816, 0.859608, 0.954663, - 0.614872, 0.853162, 0.837718, 0.645489, 0.853605, 0.671289, 0.70964, 0.707568, 0.774916, 0.838431, - 0.611387, 0.770609, 0.76029, 0.631845, 0.770905, 0.649083, 0.674709, 0.673325, 0.718326, 0.760766, - 5.95818, 2.75265, 4.02319, 3.53551, 2.24933, 4.08252, 6.36501, 3.61821, 3.45881, 6.51635, - 4.18172, 2.03983, 2.88879, 2.56292, 1.70351, 2.92843, 4.45356, 2.61818, 2.51167, 4.55468, - 2.99471, 1.56352, 2.13079, 1.91305, 1.3388, 2.15728, 3.17635, 1.94997, 1.87881, 3.24392, - 2.20156, 1.24526, 1.6243, 1.47881, 1.09511, 1.642, 2.32293, 1.50349, 1.45593, 2.36808, - 1.67159, 1.03261, 1.28588, 1.18866, 0.932274, 1.2977, 1.75269, 1.20515, 1.17337, 1.78286, - 1.31748, 0.890512, 1.05974, 0.994786, 0.823471, 1.06765, 1.37166, 1.0058, 0.984569, 1.39182, - 1.08086, 0.795566, 0.908644, 0.86524, 0.75077, 0.913924, 1.11707, 0.872601, 0.858414, 1.13054, - 0.922752, 0.732124, 0.807681, 0.778679, 0.702192, 0.81121, 0.946946, 0.783598, 0.774118, 0.955946, + 0.868724, 6.86548, 6.47683, 1.63923, 6.87664, 2.28849, 3.25364, 3.2015, 4.89637, 6.49477, + 0.781008, 4.78797, 4.52828, 1.29585, 4.79543, 1.72968, 2.37458, 2.33974, 3.47223, 4.54026, + 0.722396, 3.3998, 3.22628, 1.06641, 3.40478, 1.35629, 1.7872, 1.76392, 2.52064, 3.23428, + 0.683233, 2.47224, 2.3563, 0.913096, 2.47557, 1.10679, 1.39472, 1.37917, 1.8848, 2.36164, + 0.657064, 1.85246, 1.77498, 0.810656, 1.85468, 0.94008, 1.13247, 1.12208, 1.45993, 1.77856, + 0.639579, 1.43833, 1.38656, 0.742207, 1.43981, 0.828687, 0.957241, 0.950296, 1.17605, 1.38895, + 0.627896, 1.16161, 1.12702, 0.69647, 1.1626, 0.754255, 0.840153, 0.835513, 0.986357, 1.12861, + 0.620089, 0.976709, 0.953597, 0.66591, 0.977373, 0.704521, 0.761917, 0.758816, 0.859608, 0.954663, + 0.614872, 0.853162, 0.837718, 0.645489, 0.853605, 0.671289, 0.70964, 0.707568, 0.774916, 0.838431, + 0.611387, 0.770609, 0.76029, 0.631845, 0.770905, 0.649083, 0.674709, 0.673325, 0.718326, 0.760766, + 5.95818, 2.75265, 4.02319, 3.53551, 2.24933, 4.08252, 6.36501, 3.61821, 3.45881, 6.51635, + 4.18172, 2.03983, 2.88879, 2.56292, 1.70351, 2.92843, 4.45356, 2.61818, 2.51167, 4.55468, + 2.99471, 1.56352, 2.13079, 1.91305, 1.3388, 2.15728, 3.17635, 1.94997, 1.87881, 3.24392, + 2.20156, 1.24526, 1.6243, 1.47881, 1.09511, 1.642, 2.32293, 1.50349, 1.45593, 2.36808, + 1.67159, 1.03261, 1.28588, 1.18866, 0.932274, 1.2977, 1.75269, 1.20515, 1.17337, 1.78286, + 1.31748, 0.890512, 1.05974, 0.994786, 0.823471, 1.06765, 1.37166, 1.0058, 0.984569, 1.39182, + 1.08086, 0.795566, 0.908644, 0.86524, 0.75077, 0.913924, 1.11707, 0.872601, 0.858414, 1.13054, + 0.922752, 0.732124, 0.807681, 0.778679, 0.702192, 0.81121, 0.946946, 0.783598, 0.774118, 0.955946, 0.817109, 0.689733, 0.740219, 0.720841, 0.669733, 0.742577, 0.833275, 0.724127, 0.717793, 0.839288, - 0.746518, 0.661408, 0.695142, 0.682194, 0.648044, 0.696717, 0.75732, 0.684389, 0.680157, 0.761339, - 5.54972, 5.17435, 5.69626, 1.4268, 3.98473, 6.07069, 5.85496, 5.8577, 2.51076, 1.22499, - 3.90879, 3.65797, 4.00671, 1.15391, 2.86309, 4.2569, 4.11275, 4.11458, 1.8782, 1.01906, - 2.81234, 2.64475, 2.87777, 0.971563, 2.11362, 3.04494, 2.94862, 2.94985, 1.45553, 0.881462, - 2.07971, 1.96773, 2.12343, 0.849723, 1.61283, 2.23513, 2.17077, 2.17159, 1.1731, 0.789519, - 1.59017, 1.51535, 1.61938, 0.768311, 1.27821, 1.69402, 1.65102, 1.65157, 0.984388, 0.728083, - 1.26307, 1.21307, 1.28259, 0.713913, 1.05462, 1.33246, 1.30373, 1.30409, 0.858293, 0.687033, - 1.0445, 1.0111, 1.05755, 0.677564, 0.905221, 1.09087, 1.07167, 1.07192, 0.774037, 0.659604, + 0.746518, 0.661408, 0.695142, 0.682194, 0.648044, 0.696717, 0.75732, 0.684389, 0.680157, 0.761339, + 5.54972, 5.17435, 5.69626, 1.4268, 3.98473, 6.07069, 5.85496, 5.8577, 2.51076, 1.22499, + 3.90879, 3.65797, 4.00671, 1.15391, 2.86309, 4.2569, 4.11275, 4.11458, 1.8782, 1.01906, + 2.81234, 2.64475, 2.87777, 0.971563, 2.11362, 3.04494, 2.94862, 2.94985, 1.45553, 0.881462, + 2.07971, 1.96773, 2.12343, 0.849723, 1.61283, 2.23513, 2.17077, 2.17159, 1.1731, 0.789519, + 1.59017, 1.51535, 1.61938, 0.768311, 1.27821, 1.69402, 1.65102, 1.65157, 0.984388, 0.728083, + 1.26307, 1.21307, 1.28259, 0.713913, 1.05462, 1.33246, 1.30373, 1.30409, 0.858293, 0.687033, + 1.0445, 1.0111, 1.05755, 0.677564, 0.905221, 1.09087, 1.07167, 1.07192, 0.774037, 0.659604, 0.898462, 0.876139, 0.907177, 0.653277, 0.805394, 0.929444, 0.916614, 0.916777, 0.717739, 0.641276, 0.800878, 0.785962, 0.806701, 0.637048, 0.738691, 0.821579, 0.813007, 0.813116, 0.680121, 0.629029, 0.735673, 0.725707, 0.739564, 0.626204, 0.694121, 0.749506, 0.743778, 0.743851, 0.654985, 0.620846, - 4.90107, 4.43524, 4.90784, 3.34509, 2.05673, 2.61047, 1.72339, 5.57933, 3.34961, 1.07422, - 3.47537, 3.16411, 3.4799, 2.43568, 1.57482, 1.94482, 1.35209, 3.92858, 2.4387, 0.918317, - 2.52274, 2.31475, 2.52576, 1.82803, 1.25281, 1.50004, 1.10398, 2.82557, 1.83005, 0.814145, - 1.8862, 1.74723, 1.88822, 1.422, 1.03765, 1.20285, 0.938205, 2.08854, 1.42335, 0.744538, - 1.46087, 1.36801, 1.46222, 1.1507, 0.893882, 1.00426, 0.827433, 1.59608, 1.1516, 0.698028, - 1.17667, 1.11463, 1.17758, 0.969422, 0.797818, 0.871573, 0.753417, 1.26702, 0.970024, 0.66695, - 0.986775, 0.945316, 0.987378, 0.848292, 0.733629, 0.782911, 0.703961, 1.04714, 0.848694, 0.646185, - 0.859888, 0.832185, 0.86029, 0.767355, 0.690738, 0.723668, 0.670915, 0.900223, 0.767624, 0.632309, + 4.90107, 4.43524, 4.90784, 3.34509, 2.05673, 2.61047, 1.72339, 5.57933, 3.34961, 1.07422, + 3.47537, 3.16411, 3.4799, 2.43568, 1.57482, 1.94482, 1.35209, 3.92858, 2.4387, 0.918317, + 2.52274, 2.31475, 2.52576, 1.82803, 1.25281, 1.50004, 1.10398, 2.82557, 1.83005, 0.814145, + 1.8862, 1.74723, 1.88822, 1.422, 1.03765, 1.20285, 0.938205, 2.08854, 1.42335, 0.744538, + 1.46087, 1.36801, 1.46222, 1.1507, 0.893882, 1.00426, 0.827433, 1.59608, 1.1516, 0.698028, + 1.17667, 1.11463, 1.17758, 0.969422, 0.797818, 0.871573, 0.753417, 1.26702, 0.970024, 0.66695, + 0.986775, 0.945316, 0.987378, 0.848292, 0.733629, 0.782911, 0.703961, 1.04714, 0.848694, 0.646185, + 0.859888, 0.832185, 0.86029, 0.767355, 0.690738, 0.723668, 0.670915, 0.900223, 0.767624, 0.632309, 0.775103, 0.756592, 0.775372, 0.713274, 0.662079, 0.684083, 0.648834, 0.802055, 0.713453, 0.623038, - 0.718451, 0.706082, 0.718631, 0.677138, 0.64293, 0.657632, 0.634079, 0.73646, 0.677257, 0.616843, - 4.62145, 4.84158, 2.66378, 3.55164, 2.20451, 1.30991, 3.69058, 1.44707, 6.30131, 6.88241, - 3.28853, 3.43562, 1.98044, 2.5737, 1.67356, 1.0758, 2.66654, 1.16745, 4.411, 4.79928, - 2.39789, 2.49618, 1.52384, 1.92025, 1.31879, 0.919376, 1.98228, 0.980615, 3.14791, 3.40736, - 1.80278, 1.86845, 1.21875, 1.48362, 1.08174, 0.814853, 1.52507, 0.855772, 2.30393, 2.47729, - 1.40513, 1.44901, 1.01489, 1.19188, 0.92334, 0.745011, 1.21957, 0.772353, 1.74, 1.85583, - 1.13943, 1.16875, 0.878674, 0.996934, 0.817501, 0.698344, 1.01544, 0.716613, 1.36318, 1.44058, - 0.961889, 0.981481, 0.787656, 0.866675, 0.746781, 0.667161, 0.879041, 0.679369, 1.1114, 1.16312, - 0.843259, 0.85635, 0.726839, 0.779639, 0.699526, 0.646326, 0.787901, 0.654483, 0.943158, 0.977716, + 0.718451, 0.706082, 0.718631, 0.677138, 0.64293, 0.657632, 0.634079, 0.73646, 0.677257, 0.616843, + 4.62145, 4.84158, 2.66378, 3.55164, 2.20451, 1.30991, 3.69058, 1.44707, 6.30131, 6.88241, + 3.28853, 3.43562, 1.98044, 2.5737, 1.67356, 1.0758, 2.66654, 1.16745, 4.411, 4.79928, + 2.39789, 2.49618, 1.52384, 1.92025, 1.31879, 0.919376, 1.98228, 0.980615, 3.14791, 3.40736, + 1.80278, 1.86845, 1.21875, 1.48362, 1.08174, 0.814853, 1.52507, 0.855772, 2.30393, 2.47729, + 1.40513, 1.44901, 1.01489, 1.19188, 0.92334, 0.745011, 1.21957, 0.772353, 1.74, 1.85583, + 1.13943, 1.16875, 0.878674, 0.996934, 0.817501, 0.698344, 1.01544, 0.716613, 1.36318, 1.44058, + 0.961889, 0.981481, 0.787656, 0.866675, 0.746781, 0.667161, 0.879041, 0.679369, 1.1114, 1.16312, + 0.843259, 0.85635, 0.726839, 0.779639, 0.699526, 0.646326, 0.787901, 0.654483, 0.943158, 0.977716, 0.763992, 0.772739, 0.686201, 0.721482, 0.667952, 0.632404, 0.727003, 0.637854, 0.830743, 0.853834, 0.711027, 0.716871, 0.659048, 0.682622, 0.646854, 0.623101, 0.686311, 0.626743, 0.755629, 0.771058}, - std::vector{ - 0.611387, 0.770609, 0.76029, 0.631845, 0.770905, 0.649083, 0.674709, 0.673325, 0.718326, 0.760766, - 0.746518, 0.661408, 0.695142, 0.682194, 0.648044, 0.696717, 0.75732, 0.684389, 0.680157, 0.761339, - 0.735673, 0.725707, 0.739564, 0.626204, 0.694121, 0.749506, 0.743778, 0.743851, 0.654985, 0.620846, - 0.718451, 0.706082, 0.718631, 0.677138, 0.64293, 0.657632, 0.634079, 0.73646, 0.677257, 0.616843, - 0.711027, 0.716871, 0.659048, 0.682622, 0.646854, 0.623101, 0.686311, 0.626743, 0.755629, 0.771058}, + std::vector{0.611387, 0.770609, 0.76029, 0.631845, 0.770905, 0.649083, 0.674709, 0.673325, 0.718326, + 0.760766, 0.746518, 0.661408, 0.695142, 0.682194, 0.648044, 0.696717, 0.75732, 0.684389, + 0.680157, 0.761339, 0.735673, 0.725707, 0.739564, 0.626204, 0.694121, 0.749506, 0.743778, + 0.743851, 0.654985, 0.620846, 0.718451, 0.706082, 0.718631, 0.677138, 0.64293, 0.657632, + 0.634079, 0.73646, 0.677257, 0.616843, 0.711027, 0.716871, 0.659048, 0.682622, 0.646854, + 0.623101, 0.686311, 0.626743, 0.755629, 0.771058}, std::vector{0}), TensorIteratorStaticParams( std::make_shared(), - 5, 10, 10, 10, - 0.7f, ov::op::RecurrentSequenceDirection::REVERSE, TensorIteratorBodyType::GRU, + 5, + 10, + 10, + 10, + 0.7f, + ov::op::RecurrentSequenceDirection::REVERSE, + TensorIteratorBodyType::GRU, ET, std::vector{ - 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, - 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, - 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, - 7.03475, 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, - 6.61627, 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 2.07541, - 5.72319, 1.75261, 9.25175, 9.19404, 3.69037, 6.2595, 6.09321, 6.52544, 9.60882, 3.34881, - 3.07914, 5.80104, 9.54944, 5.43754, 5.8654, 7.88937, 1.40811, 2.2597, 8.13163, 1.26821, - 8.94813, 5.86709, 5.03182, 9.02922, 4.39826, 5.84582, 6.87069, 4.25135, 6.13908, 6.74053, - 2.13683, 7.21184, 6.82974, 4.18545, 7.8691, 4.20879, 7.77509, 8.93208, 1.10502, 5.48298, - 1.66413, 8.08256, 1.57661, 4.19779, 9.47653, 4.41823, 7.86628, 7.94436, 3.71224, 7.95465, - 2.37637, 6.20771, 1.08107, 7.38138, 5.23577, 7.88133, 5.20653, 3.42101, 8.48523, 5.96192, - 1.63073, 5.25228, 7.68488, 2.7276, 5.1788, 3.07327, 5.57423, 2.87711, 1.44374, 5.66976, - 2.55051, 4.56682, 1.96629, 5.58829, 1.91922, 3.59846, 3.08583, 9.70901, 3.50487, 3.1026, - 1.82401, 6.1306, 4.76134, 4.31059, 8.31695, 3.60784, 7.45652, 6.51653, 4.84219, 7.76686, - 4.85031, 4.85544, 4.25714, 2.38005, 9.43471, 9.24769, 8.03763, 6.54696, 1.32399, 6.88891, - 2.16793, 3.64924, 4.24733, 3.47181, 1.66572, 2.36923, 2.45457, 9.44841, 4.34021, 1.45016, - 7.6686, 3.68812, 2.83922, 9.83581, 9.03719, 7.83414, 6.86009, 1.35715, 8.32489, 7.86316, - 5.09754, 5.78644, 1.98402, 2.31429, 5.5791, 2.94085, 9.24799, 5.15937, 2.19041, 7.87817, - 2.9146, 1.66833, 1.85877, 2.45985, 4.20817, 1.85777, 2.28937, 9.37912, 6.18926, 8.55681, - 6.60963, 3.92066, 7.5521, 5.70463, 7.6313, 2.48866, 7.18352, 4.8413, 7.55702, 7.80702, - 4.5785, 9.3268, 2.83159, 1.07202, 9.33716, 3.6506, 2.50256, 1.21691, 5.06801, 8.27505, - 4.31539, 6.48286, 1.31363, 4.1912, 1.70668, 7.23867, 1.11441, 5.13591, 9.65186, 4.00767, - 5.24875, 1.94852, 5.52768, 8.97121, 5.8094, 3.53329, 4.19126, 9.06652, 3.1734, 1.21496, - 9.69154, 4.86971, 4.1166, 6.19361, 2.13874, 9.55039, 3.8225, 9.57548, 2.96554, 3.2383, - 8.77422, 3.11741, 8.3359, 5.89508, 2.72134, 6.29956, 1.43323, 1.14286, 1.4474, 4.59474, - 6.19214, 8.80766, 8.07546, 3.29232, 1.74029, 2.4198, 2.88544, 4.75644, 4.12921, 7.29896, - 7.27759, 1.67252, 1.32823, 8.1046, 9.10476, 1.04197, 3.37783, 5.2064, 4.23835, 3.16196, - 1.20852, 5.78501, 2.17175, 6.05313, 2.51048, 4.78967, 7.16219, 3.4651, 1.09, 2.9788, - 1.28761, 9.41385, 8.03883, 5.65835, 1.14816, 3.6892, 5.86648, 8.73895, 2.66603, 1.75192, - 1.39845, 4.99427, 1.17387, 1.60329, 8.30594, 6.72662, 7.95565, 7.35114, 3.1439, 1.39976, - 3.53095, 8.78581, 1.65811, 6.94299, 2.68641, 5.70058, 9.13491, 5.27637, 8.6232, 8.54902, - 2.25352, 5.86274, 5.20377, 2.96815, 4.96745, 5.3225, 3.99956, 1.08021, 5.54918, 7.05833, - 1.49913, 2.41822, 6.44593, 3.87301, 9.01465, 8.11336, 2.95749, 2.80188, 7.12396, 2.40595, - 5.59325, 9.89258, 2.30223, 1.4347, 9.09158, 7.43797, 3.79295, 4.53646, 1.72705, 4.16909, - 1.00912, 6.62167, 2.80244, 6.626, 3.89307, 1.42586, 7.51028, 7.83327, 4.65674, 7.33902, - 6.26823, 9.72608, 3.73491, 3.8238, 3.03815, 7.05101, 8.0103, 5.61396, 6.53738, 1.41095, - 5.0149, 9.71211, 4.23604, 5.98629, 4.70219, 9.69442, 2.82752, 9.93544, 6.9328, 8.2817, - 5.12336, 8.98577, 5.80541, 6.19552, 9.25748, 3.82732, 7.53525, 8.24712, 5.32057, 5.38817, - 8.57269, 5.99975, 3.42893, 5.38068, 3.48261, 3.02851, 6.82079, 9.2902, 2.80427, 8.91868, - 5.19227, 7.52482, 3.72584, 5.40107, 2.83307, 1.79755, 2.49121, 5.52697, 8.08823, 9.13242, - 2.97572, 7.64318, 3.32023, 6.07788, 2.19187, 4.34879, 1.7457, 5.55154, 7.24966, 5.1128, - 4.25147, 8.34407, 1.4123, 4.49045, 5.12671, 7.62159, 9.18673, 3.49665, 8.35992, 6.90684, - 1.10152, 7.61818, 6.43145, 7.12017, 6.25564, 6.16169, 4.24916, 9.6283, 9.88249, 4.48422, - 8.52562, 9.83928, 6.26818, 7.03839, 1.77631, 9.92305, 8.0155, 9.94928, 6.88321, 1.33685, - 7.4718, 7.19305, 6.47932, 1.9559, 3.52616, 7.98593, 9.0115, 5.59539, 7.44137, 1.70001, - 6.53774, 8.54023, 7.26405, 5.99553, 8.75071, 7.70789, 3.38094, 9.99792, 6.16359, 6.75153, - 5.4073, 9.00437, 8.87059, 8.63011, 6.82951, 6.27021, 3.53425, 9.92489, 8.19695, 5.51473, - 7.95084, 2.11852, 9.28916, 1.40353, 3.05744, 8.58238, 3.75014, 5.35889, 6.85048, 2.29549, - 3.75218, 8.98228, 8.98158, 5.63695, 3.40379, 8.92309, 5.48185, 4.00095, 9.05227, 2.84035, - 8.37644, 8.54954, 5.70516, 2.45744, 9.54079, 1.53504, 8.9785, 6.1691, 4.40962, 10}, - std::vector{ - 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, - 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, - 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, - 7.03475, 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, - 6.61627, 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 10}, + 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, 8.6168, + 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, 8.0055, 7.44373, + 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, 7.03475, 6.33759, 7.04489, + 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, 6.61627, 6.94572, 3.68646, 5.01521, + 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 2.07541, 5.72319, 1.75261, 9.25175, 9.19404, 3.69037, + 6.2595, 6.09321, 6.52544, 9.60882, 3.34881, 3.07914, 5.80104, 9.54944, 5.43754, 5.8654, 7.88937, + 1.40811, 2.2597, 8.13163, 1.26821, 8.94813, 5.86709, 5.03182, 9.02922, 4.39826, 5.84582, 6.87069, + 4.25135, 6.13908, 6.74053, 2.13683, 7.21184, 6.82974, 4.18545, 7.8691, 4.20879, 7.77509, 8.93208, + 1.10502, 5.48298, 1.66413, 8.08256, 1.57661, 4.19779, 9.47653, 4.41823, 7.86628, 7.94436, 3.71224, + 7.95465, 2.37637, 6.20771, 1.08107, 7.38138, 5.23577, 7.88133, 5.20653, 3.42101, 8.48523, 5.96192, + 1.63073, 5.25228, 7.68488, 2.7276, 5.1788, 3.07327, 5.57423, 2.87711, 1.44374, 5.66976, 2.55051, + 4.56682, 1.96629, 5.58829, 1.91922, 3.59846, 3.08583, 9.70901, 3.50487, 3.1026, 1.82401, 6.1306, + 4.76134, 4.31059, 8.31695, 3.60784, 7.45652, 6.51653, 4.84219, 7.76686, 4.85031, 4.85544, 4.25714, + 2.38005, 9.43471, 9.24769, 8.03763, 6.54696, 1.32399, 6.88891, 2.16793, 3.64924, 4.24733, 3.47181, + 1.66572, 2.36923, 2.45457, 9.44841, 4.34021, 1.45016, 7.6686, 3.68812, 2.83922, 9.83581, 9.03719, + 7.83414, 6.86009, 1.35715, 8.32489, 7.86316, 5.09754, 5.78644, 1.98402, 2.31429, 5.5791, 2.94085, + 9.24799, 5.15937, 2.19041, 7.87817, 2.9146, 1.66833, 1.85877, 2.45985, 4.20817, 1.85777, 2.28937, + 9.37912, 6.18926, 8.55681, 6.60963, 3.92066, 7.5521, 5.70463, 7.6313, 2.48866, 7.18352, 4.8413, + 7.55702, 7.80702, 4.5785, 9.3268, 2.83159, 1.07202, 9.33716, 3.6506, 2.50256, 1.21691, 5.06801, + 8.27505, 4.31539, 6.48286, 1.31363, 4.1912, 1.70668, 7.23867, 1.11441, 5.13591, 9.65186, 4.00767, + 5.24875, 1.94852, 5.52768, 8.97121, 5.8094, 3.53329, 4.19126, 9.06652, 3.1734, 1.21496, 9.69154, + 4.86971, 4.1166, 6.19361, 2.13874, 9.55039, 3.8225, 9.57548, 2.96554, 3.2383, 8.77422, 3.11741, + 8.3359, 5.89508, 2.72134, 6.29956, 1.43323, 1.14286, 1.4474, 4.59474, 6.19214, 8.80766, 8.07546, + 3.29232, 1.74029, 2.4198, 2.88544, 4.75644, 4.12921, 7.29896, 7.27759, 1.67252, 1.32823, 8.1046, + 9.10476, 1.04197, 3.37783, 5.2064, 4.23835, 3.16196, 1.20852, 5.78501, 2.17175, 6.05313, 2.51048, + 4.78967, 7.16219, 3.4651, 1.09, 2.9788, 1.28761, 9.41385, 8.03883, 5.65835, 1.14816, 3.6892, + 5.86648, 8.73895, 2.66603, 1.75192, 1.39845, 4.99427, 1.17387, 1.60329, 8.30594, 6.72662, 7.95565, + 7.35114, 3.1439, 1.39976, 3.53095, 8.78581, 1.65811, 6.94299, 2.68641, 5.70058, 9.13491, 5.27637, + 8.6232, 8.54902, 2.25352, 5.86274, 5.20377, 2.96815, 4.96745, 5.3225, 3.99956, 1.08021, 5.54918, + 7.05833, 1.49913, 2.41822, 6.44593, 3.87301, 9.01465, 8.11336, 2.95749, 2.80188, 7.12396, 2.40595, + 5.59325, 9.89258, 2.30223, 1.4347, 9.09158, 7.43797, 3.79295, 4.53646, 1.72705, 4.16909, 1.00912, + 6.62167, 2.80244, 6.626, 3.89307, 1.42586, 7.51028, 7.83327, 4.65674, 7.33902, 6.26823, 9.72608, + 3.73491, 3.8238, 3.03815, 7.05101, 8.0103, 5.61396, 6.53738, 1.41095, 5.0149, 9.71211, 4.23604, + 5.98629, 4.70219, 9.69442, 2.82752, 9.93544, 6.9328, 8.2817, 5.12336, 8.98577, 5.80541, 6.19552, + 9.25748, 3.82732, 7.53525, 8.24712, 5.32057, 5.38817, 8.57269, 5.99975, 3.42893, 5.38068, 3.48261, + 3.02851, 6.82079, 9.2902, 2.80427, 8.91868, 5.19227, 7.52482, 3.72584, 5.40107, 2.83307, 1.79755, + 2.49121, 5.52697, 8.08823, 9.13242, 2.97572, 7.64318, 3.32023, 6.07788, 2.19187, 4.34879, 1.7457, + 5.55154, 7.24966, 5.1128, 4.25147, 8.34407, 1.4123, 4.49045, 5.12671, 7.62159, 9.18673, 3.49665, + 8.35992, 6.90684, 1.10152, 7.61818, 6.43145, 7.12017, 6.25564, 6.16169, 4.24916, 9.6283, 9.88249, + 4.48422, 8.52562, 9.83928, 6.26818, 7.03839, 1.77631, 9.92305, 8.0155, 9.94928, 6.88321, 1.33685, + 7.4718, 7.19305, 6.47932, 1.9559, 3.52616, 7.98593, 9.0115, 5.59539, 7.44137, 1.70001, 6.53774, + 8.54023, 7.26405, 5.99553, 8.75071, 7.70789, 3.38094, 9.99792, 6.16359, 6.75153, 5.4073, 9.00437, + 8.87059, 8.63011, 6.82951, 6.27021, 3.53425, 9.92489, 8.19695, 5.51473, 7.95084, 2.11852, 9.28916, + 1.40353, 3.05744, 8.58238, 3.75014, 5.35889, 6.85048, 2.29549, 3.75218, 8.98228, 8.98158, 5.63695, + 3.40379, 8.92309, 5.48185, 4.00095, 9.05227, 2.84035, 8.37644, 8.54954, 5.70516, 2.45744, 9.54079, + 1.53504, 8.9785, 6.1691, 4.40962, 10}, + std::vector{1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, + 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, + 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, + 7.03475, 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, + 6.61627, 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 10}, std::vector{0}, std::vector{10, 10, 10, 10, 10}, std::vector{ - 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, - 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, - 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, - 7.03475, 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, - 6.61627, 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 2.07541, - 5.72319, 1.75261, 9.25175, 9.19404, 3.69037, 6.2595, 6.09321, 6.52544, 9.60882, 3.34881, - 3.07914, 5.80104, 9.54944, 5.43754, 5.8654, 7.88937, 1.40811, 2.2597, 8.13163, 1.26821, - 8.94813, 5.86709, 5.03182, 9.02922, 4.39826, 5.84582, 6.87069, 4.25135, 6.13908, 6.74053, - 2.13683, 7.21184, 6.82974, 4.18545, 7.8691, 4.20879, 7.77509, 8.93208, 1.10502, 5.48298, - 1.66413, 8.08256, 1.57661, 4.19779, 9.47653, 4.41823, 7.86628, 7.94436, 3.71224, 7.95465, - 2.37637, 6.20771, 1.08107, 7.38138, 5.23577, 7.88133, 5.20653, 3.42101, 8.48523, 5.96192, - 1.63073, 5.25228, 7.68488, 2.7276, 5.1788, 3.07327, 5.57423, 2.87711, 1.44374, 5.66976, - 2.55051, 4.56682, 1.96629, 5.58829, 1.91922, 3.59846, 3.08583, 9.70901, 3.50487, 3.1026, - 1.82401, 6.1306, 4.76134, 4.31059, 8.31695, 3.60784, 7.45652, 6.51653, 4.84219, 7.76686, - 4.85031, 4.85544, 4.25714, 2.38005, 9.43471, 9.24769, 8.03763, 6.54696, 1.32399, 6.88891, - 2.16793, 3.64924, 4.24733, 3.47181, 1.66572, 2.36923, 2.45457, 9.44841, 4.34021, 1.45016, - 7.6686, 3.68812, 2.83922, 9.83581, 9.03719, 7.83414, 6.86009, 1.35715, 8.32489, 7.86316, - 5.09754, 5.78644, 1.98402, 2.31429, 5.5791, 2.94085, 9.24799, 5.15937, 2.19041, 7.87817, - 2.9146, 1.66833, 1.85877, 2.45985, 4.20817, 1.85777, 2.28937, 9.37912, 6.18926, 8.55681, - 6.60963, 3.92066, 7.5521, 5.70463, 7.6313, 2.48866, 7.18352, 4.8413, 7.55702, 7.80702, - 4.5785, 9.3268, 2.83159, 1.07202, 9.33716, 3.6506, 2.50256, 1.21691, 5.06801, 8.27505, - 4.31539, 6.48286, 1.31363, 4.1912, 1.70668, 7.23867, 1.11441, 5.13591, 9.65186, 4.00767, - 5.24875, 1.94852, 5.52768, 8.97121, 5.8094, 3.53329, 4.19126, 9.06652, 3.1734, 1.21496, - 9.69154, 4.86971, 4.1166, 6.19361, 2.13874, 9.55039, 3.8225, 9.57548, 2.96554, 3.2383, - 8.77422, 3.11741, 8.3359, 5.89508, 2.72134, 6.29956, 1.43323, 1.14286, 1.4474, 4.59474, - 6.19214, 8.80766, 8.07546, 3.29232, 1.74029, 2.4198, 2.88544, 4.75644, 4.12921, 7.29896, - 7.27759, 1.67252, 1.32823, 8.1046, 9.10476, 1.04197, 3.37783, 5.2064, 4.23835, 3.16196, - 1.20852, 5.78501, 2.17175, 6.05313, 2.51048, 4.78967, 7.16219, 3.4651, 1.09, 2.9788, - 1.28761, 9.41385, 8.03883, 5.65835, 1.14816, 3.6892, 5.86648, 8.73895, 2.66603, 1.75192, - 1.39845, 4.99427, 1.17387, 1.60329, 8.30594, 6.72662, 7.95565, 7.35114, 3.1439, 10}, + 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, 8.6168, + 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, 8.0055, 7.44373, + 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, 7.03475, 6.33759, 7.04489, + 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, 6.61627, 6.94572, 3.68646, 5.01521, + 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 2.07541, 5.72319, 1.75261, 9.25175, 9.19404, 3.69037, + 6.2595, 6.09321, 6.52544, 9.60882, 3.34881, 3.07914, 5.80104, 9.54944, 5.43754, 5.8654, 7.88937, + 1.40811, 2.2597, 8.13163, 1.26821, 8.94813, 5.86709, 5.03182, 9.02922, 4.39826, 5.84582, 6.87069, + 4.25135, 6.13908, 6.74053, 2.13683, 7.21184, 6.82974, 4.18545, 7.8691, 4.20879, 7.77509, 8.93208, + 1.10502, 5.48298, 1.66413, 8.08256, 1.57661, 4.19779, 9.47653, 4.41823, 7.86628, 7.94436, 3.71224, + 7.95465, 2.37637, 6.20771, 1.08107, 7.38138, 5.23577, 7.88133, 5.20653, 3.42101, 8.48523, 5.96192, + 1.63073, 5.25228, 7.68488, 2.7276, 5.1788, 3.07327, 5.57423, 2.87711, 1.44374, 5.66976, 2.55051, + 4.56682, 1.96629, 5.58829, 1.91922, 3.59846, 3.08583, 9.70901, 3.50487, 3.1026, 1.82401, 6.1306, + 4.76134, 4.31059, 8.31695, 3.60784, 7.45652, 6.51653, 4.84219, 7.76686, 4.85031, 4.85544, 4.25714, + 2.38005, 9.43471, 9.24769, 8.03763, 6.54696, 1.32399, 6.88891, 2.16793, 3.64924, 4.24733, 3.47181, + 1.66572, 2.36923, 2.45457, 9.44841, 4.34021, 1.45016, 7.6686, 3.68812, 2.83922, 9.83581, 9.03719, + 7.83414, 6.86009, 1.35715, 8.32489, 7.86316, 5.09754, 5.78644, 1.98402, 2.31429, 5.5791, 2.94085, + 9.24799, 5.15937, 2.19041, 7.87817, 2.9146, 1.66833, 1.85877, 2.45985, 4.20817, 1.85777, 2.28937, + 9.37912, 6.18926, 8.55681, 6.60963, 3.92066, 7.5521, 5.70463, 7.6313, 2.48866, 7.18352, 4.8413, + 7.55702, 7.80702, 4.5785, 9.3268, 2.83159, 1.07202, 9.33716, 3.6506, 2.50256, 1.21691, 5.06801, + 8.27505, 4.31539, 6.48286, 1.31363, 4.1912, 1.70668, 7.23867, 1.11441, 5.13591, 9.65186, 4.00767, + 5.24875, 1.94852, 5.52768, 8.97121, 5.8094, 3.53329, 4.19126, 9.06652, 3.1734, 1.21496, 9.69154, + 4.86971, 4.1166, 6.19361, 2.13874, 9.55039, 3.8225, 9.57548, 2.96554, 3.2383, 8.77422, 3.11741, + 8.3359, 5.89508, 2.72134, 6.29956, 1.43323, 1.14286, 1.4474, 4.59474, 6.19214, 8.80766, 8.07546, + 3.29232, 1.74029, 2.4198, 2.88544, 4.75644, 4.12921, 7.29896, 7.27759, 1.67252, 1.32823, 8.1046, + 9.10476, 1.04197, 3.37783, 5.2064, 4.23835, 3.16196, 1.20852, 5.78501, 2.17175, 6.05313, 2.51048, + 4.78967, 7.16219, 3.4651, 1.09, 2.9788, 1.28761, 9.41385, 8.03883, 5.65835, 1.14816, 3.6892, + 5.86648, 8.73895, 2.66603, 1.75192, 1.39845, 4.99427, 1.17387, 1.60329, 8.30594, 6.72662, 7.95565, + 7.35114, 3.1439, 10}, std::vector{ - 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, - 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, - 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, - 7.03475, 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, - 6.61627, 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 2.07541, - 5.72319, 1.75261, 9.25175, 9.19404, 3.69037, 6.2595, 6.09321, 6.52544, 9.60882, 3.34881, - 3.07914, 5.80104, 9.54944, 5.43754, 5.8654, 7.88937, 1.40811, 2.2597, 8.13163, 1.26821, - 8.94813, 5.86709, 5.03182, 9.02922, 4.39826, 5.84582, 6.87069, 4.25135, 6.13908, 6.74053, - 2.13683, 7.21184, 6.82974, 4.18545, 7.8691, 4.20879, 7.77509, 8.93208, 1.10502, 5.48298, - 1.66413, 8.08256, 1.57661, 4.19779, 9.47653, 4.41823, 7.86628, 7.94436, 3.71224, 7.95465, - 2.37637, 6.20771, 1.08107, 7.38138, 5.23577, 7.88133, 5.20653, 3.42101, 8.48523, 5.96192, - 1.63073, 5.25228, 7.68488, 2.7276, 5.1788, 3.07327, 5.57423, 2.87711, 1.44374, 5.66976, - 2.55051, 4.56682, 1.96629, 5.58829, 1.91922, 3.59846, 3.08583, 9.70901, 3.50487, 3.1026, - 1.82401, 6.1306, 4.76134, 4.31059, 8.31695, 3.60784, 7.45652, 6.51653, 4.84219, 7.76686, - 4.85031, 4.85544, 4.25714, 2.38005, 9.43471, 9.24769, 8.03763, 6.54696, 1.32399, 6.88891, - 2.16793, 3.64924, 4.24733, 3.47181, 1.66572, 2.36923, 2.45457, 9.44841, 4.34021, 1.45016, - 7.6686, 3.68812, 2.83922, 9.83581, 9.03719, 7.83414, 6.86009, 1.35715, 8.32489, 7.86316, - 5.09754, 5.78644, 1.98402, 2.31429, 5.5791, 2.94085, 9.24799, 5.15937, 2.19041, 7.87817, - 2.9146, 1.66833, 1.85877, 2.45985, 4.20817, 1.85777, 2.28937, 9.37912, 6.18926, 8.55681, - 6.60963, 3.92066, 7.5521, 5.70463, 7.6313, 2.48866, 7.18352, 4.8413, 7.55702, 7.80702, - 4.5785, 9.3268, 2.83159, 1.07202, 9.33716, 3.6506, 2.50256, 1.21691, 5.06801, 8.27505, - 4.31539, 6.48286, 1.31363, 4.1912, 1.70668, 7.23867, 1.11441, 5.13591, 9.65186, 4.00767, - 5.24875, 1.94852, 5.52768, 8.97121, 5.8094, 3.53329, 4.19126, 9.06652, 3.1734, 1.21496, - 9.69154, 4.86971, 4.1166, 6.19361, 2.13874, 9.55039, 3.8225, 9.57548, 2.96554, 3.2383, - 8.77422, 3.11741, 8.3359, 5.89508, 2.72134, 6.29956, 1.43323, 1.14286, 1.4474, 4.59474, - 6.19214, 8.80766, 8.07546, 3.29232, 1.74029, 2.4198, 2.88544, 4.75644, 4.12921, 7.29896, - 7.27759, 1.67252, 1.32823, 8.1046, 9.10476, 1.04197, 3.37783, 5.2064, 4.23835, 3.16196, - 1.20852, 5.78501, 2.17175, 6.05313, 2.51048, 4.78967, 7.16219, 3.4651, 1.09, 2.9788, - 1.28761, 9.41385, 8.03883, 5.65835, 1.14816, 3.6892, 5.86648, 8.73895, 2.66603, 1.75192, - 1.39845, 4.99427, 1.17387, 1.60329, 8.30594, 6.72662, 7.95565, 7.35114, 3.1439, 10}, + 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, 8.6168, + 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, 8.0055, 7.44373, + 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, 7.03475, 6.33759, 7.04489, + 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, 6.61627, 6.94572, 3.68646, 5.01521, + 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 2.07541, 5.72319, 1.75261, 9.25175, 9.19404, 3.69037, + 6.2595, 6.09321, 6.52544, 9.60882, 3.34881, 3.07914, 5.80104, 9.54944, 5.43754, 5.8654, 7.88937, + 1.40811, 2.2597, 8.13163, 1.26821, 8.94813, 5.86709, 5.03182, 9.02922, 4.39826, 5.84582, 6.87069, + 4.25135, 6.13908, 6.74053, 2.13683, 7.21184, 6.82974, 4.18545, 7.8691, 4.20879, 7.77509, 8.93208, + 1.10502, 5.48298, 1.66413, 8.08256, 1.57661, 4.19779, 9.47653, 4.41823, 7.86628, 7.94436, 3.71224, + 7.95465, 2.37637, 6.20771, 1.08107, 7.38138, 5.23577, 7.88133, 5.20653, 3.42101, 8.48523, 5.96192, + 1.63073, 5.25228, 7.68488, 2.7276, 5.1788, 3.07327, 5.57423, 2.87711, 1.44374, 5.66976, 2.55051, + 4.56682, 1.96629, 5.58829, 1.91922, 3.59846, 3.08583, 9.70901, 3.50487, 3.1026, 1.82401, 6.1306, + 4.76134, 4.31059, 8.31695, 3.60784, 7.45652, 6.51653, 4.84219, 7.76686, 4.85031, 4.85544, 4.25714, + 2.38005, 9.43471, 9.24769, 8.03763, 6.54696, 1.32399, 6.88891, 2.16793, 3.64924, 4.24733, 3.47181, + 1.66572, 2.36923, 2.45457, 9.44841, 4.34021, 1.45016, 7.6686, 3.68812, 2.83922, 9.83581, 9.03719, + 7.83414, 6.86009, 1.35715, 8.32489, 7.86316, 5.09754, 5.78644, 1.98402, 2.31429, 5.5791, 2.94085, + 9.24799, 5.15937, 2.19041, 7.87817, 2.9146, 1.66833, 1.85877, 2.45985, 4.20817, 1.85777, 2.28937, + 9.37912, 6.18926, 8.55681, 6.60963, 3.92066, 7.5521, 5.70463, 7.6313, 2.48866, 7.18352, 4.8413, + 7.55702, 7.80702, 4.5785, 9.3268, 2.83159, 1.07202, 9.33716, 3.6506, 2.50256, 1.21691, 5.06801, + 8.27505, 4.31539, 6.48286, 1.31363, 4.1912, 1.70668, 7.23867, 1.11441, 5.13591, 9.65186, 4.00767, + 5.24875, 1.94852, 5.52768, 8.97121, 5.8094, 3.53329, 4.19126, 9.06652, 3.1734, 1.21496, 9.69154, + 4.86971, 4.1166, 6.19361, 2.13874, 9.55039, 3.8225, 9.57548, 2.96554, 3.2383, 8.77422, 3.11741, + 8.3359, 5.89508, 2.72134, 6.29956, 1.43323, 1.14286, 1.4474, 4.59474, 6.19214, 8.80766, 8.07546, + 3.29232, 1.74029, 2.4198, 2.88544, 4.75644, 4.12921, 7.29896, 7.27759, 1.67252, 1.32823, 8.1046, + 9.10476, 1.04197, 3.37783, 5.2064, 4.23835, 3.16196, 1.20852, 5.78501, 2.17175, 6.05313, 2.51048, + 4.78967, 7.16219, 3.4651, 1.09, 2.9788, 1.28761, 9.41385, 8.03883, 5.65835, 1.14816, 3.6892, + 5.86648, 8.73895, 2.66603, 1.75192, 1.39845, 4.99427, 1.17387, 1.60329, 8.30594, 6.72662, 7.95565, + 7.35114, 3.1439, 10}, + std::vector{1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, + 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, + 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 10}, std::vector{ - 1, 9.97466, 9.39302, 2.15312, 9.99136, 3.1248, 4.56923, 4.4912, 7.02771, 9.41985, - 8.6168, 3.81946, 5.72093, 4.99108, 3.0662, 5.80973, 9.22566, 5.11484, 4.87629, 9.45215, - 8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 10}, - std::vector{ - 0.611387, 0.770609, 0.76029, 0.631845, 0.770905, 0.649083, 0.674709, 0.673325, 0.718326, 0.760766, - 0.614872, 0.853162, 0.837718, 0.645489, 0.853605, 0.671289, 0.70964, 0.707568, 0.774916, 0.838431, - 0.620089, 0.976709, 0.953597, 0.66591, 0.977373, 0.704521, 0.761917, 0.758816, 0.859608, 0.954663, - 0.627896, 1.16161, 1.12702, 0.69647, 1.1626, 0.754255, 0.840153, 0.835513, 0.986357, 1.12861, - 0.639579, 1.43833, 1.38656, 0.742207, 1.43981, 0.828687, 0.957241, 0.950296, 1.17605, 1.38895, - 0.657064, 1.85246, 1.77498, 0.810656, 1.85468, 0.94008, 1.13247, 1.12208, 1.45993, 1.77856, - 0.683233, 2.47224, 2.3563, 0.913096, 2.47557, 1.10679, 1.39472, 1.37917, 1.8848, 2.36164, - 0.722396, 3.3998, 3.22628, 1.06641, 3.40478, 1.35629, 1.7872, 1.76392, 2.52064, 3.23428, - 0.781008, 4.78797, 4.52828, 1.29585, 4.79543, 1.72968, 2.37458, 2.33974, 3.47223, 4.54026, - 0.868724, 6.86548, 6.47683, 1.63923, 6.87664, 2.28849, 3.25364, 3.2015, 4.89637, 6.49477, - 0.746518, 0.661408, 0.695142, 0.682194, 0.648044, 0.696717, 0.75732, 0.684389, 0.680157, 0.761339, + 0.611387, 0.770609, 0.76029, 0.631845, 0.770905, 0.649083, 0.674709, 0.673325, 0.718326, 0.760766, + 0.614872, 0.853162, 0.837718, 0.645489, 0.853605, 0.671289, 0.70964, 0.707568, 0.774916, 0.838431, + 0.620089, 0.976709, 0.953597, 0.66591, 0.977373, 0.704521, 0.761917, 0.758816, 0.859608, 0.954663, + 0.627896, 1.16161, 1.12702, 0.69647, 1.1626, 0.754255, 0.840153, 0.835513, 0.986357, 1.12861, + 0.639579, 1.43833, 1.38656, 0.742207, 1.43981, 0.828687, 0.957241, 0.950296, 1.17605, 1.38895, + 0.657064, 1.85246, 1.77498, 0.810656, 1.85468, 0.94008, 1.13247, 1.12208, 1.45993, 1.77856, + 0.683233, 2.47224, 2.3563, 0.913096, 2.47557, 1.10679, 1.39472, 1.37917, 1.8848, 2.36164, + 0.722396, 3.3998, 3.22628, 1.06641, 3.40478, 1.35629, 1.7872, 1.76392, 2.52064, 3.23428, + 0.781008, 4.78797, 4.52828, 1.29585, 4.79543, 1.72968, 2.37458, 2.33974, 3.47223, 4.54026, + 0.868724, 6.86548, 6.47683, 1.63923, 6.87664, 2.28849, 3.25364, 3.2015, 4.89637, 6.49477, + 0.746518, 0.661408, 0.695142, 0.682194, 0.648044, 0.696717, 0.75732, 0.684389, 0.680157, 0.761339, 0.817109, 0.689733, 0.740219, 0.720841, 0.669733, 0.742577, 0.833275, 0.724127, 0.717793, 0.839288, - 0.922752, 0.732124, 0.807681, 0.778679, 0.702192, 0.81121, 0.946946, 0.783598, 0.774118, 0.955946, - 1.08086, 0.795566, 0.908644, 0.86524, 0.75077, 0.913924, 1.11707, 0.872601, 0.858414, 1.13054, - 1.31748, 0.890512, 1.05974, 0.994786, 0.823471, 1.06765, 1.37166, 1.0058, 0.984569, 1.39182, - 1.67159, 1.03261, 1.28588, 1.18866, 0.932274, 1.2977, 1.75269, 1.20515, 1.17337, 1.78286, - 2.20156, 1.24526, 1.6243, 1.47881, 1.09511, 1.642, 2.32293, 1.50349, 1.45593, 2.36808, - 2.99471, 1.56352, 2.13079, 1.91305, 1.3388, 2.15728, 3.17635, 1.94997, 1.87881, 3.24392, - 4.18172, 2.03983, 2.88879, 2.56292, 1.70351, 2.92843, 4.45356, 2.61818, 2.51167, 4.55468, - 5.95818, 2.75265, 4.02319, 3.53551, 2.24933, 4.08252, 6.36501, 3.61821, 3.45881, 6.51635, + 0.922752, 0.732124, 0.807681, 0.778679, 0.702192, 0.81121, 0.946946, 0.783598, 0.774118, 0.955946, + 1.08086, 0.795566, 0.908644, 0.86524, 0.75077, 0.913924, 1.11707, 0.872601, 0.858414, 1.13054, + 1.31748, 0.890512, 1.05974, 0.994786, 0.823471, 1.06765, 1.37166, 1.0058, 0.984569, 1.39182, + 1.67159, 1.03261, 1.28588, 1.18866, 0.932274, 1.2977, 1.75269, 1.20515, 1.17337, 1.78286, + 2.20156, 1.24526, 1.6243, 1.47881, 1.09511, 1.642, 2.32293, 1.50349, 1.45593, 2.36808, + 2.99471, 1.56352, 2.13079, 1.91305, 1.3388, 2.15728, 3.17635, 1.94997, 1.87881, 3.24392, + 4.18172, 2.03983, 2.88879, 2.56292, 1.70351, 2.92843, 4.45356, 2.61818, 2.51167, 4.55468, + 5.95818, 2.75265, 4.02319, 3.53551, 2.24933, 4.08252, 6.36501, 3.61821, 3.45881, 6.51635, 0.735673, 0.725707, 0.739564, 0.626204, 0.694121, 0.749506, 0.743778, 0.743851, 0.654985, 0.620846, 0.800878, 0.785962, 0.806701, 0.637048, 0.738691, 0.821579, 0.813007, 0.813116, 0.680121, 0.629029, 0.898462, 0.876139, 0.907177, 0.653277, 0.805394, 0.929444, 0.916614, 0.916777, 0.717739, 0.641276, - 1.0445, 1.0111, 1.05755, 0.677564, 0.905221, 1.09087, 1.07167, 1.07192, 0.774037, 0.659604, - 1.26307, 1.21307, 1.28259, 0.713913, 1.05462, 1.33246, 1.30373, 1.30409, 0.858293, 0.687033, - 1.59017, 1.51535, 1.61938, 0.768311, 1.27821, 1.69402, 1.65102, 1.65157, 0.984388, 0.728083, - 2.07971, 1.96773, 2.12343, 0.849723, 1.61283, 2.23513, 2.17077, 2.17159, 1.1731, 0.789519, - 2.81234, 2.64475, 2.87777, 0.971563, 2.11362, 3.04494, 2.94862, 2.94985, 1.45553, 0.881462, - 3.90879, 3.65797, 4.00671, 1.15391, 2.86309, 4.2569, 4.11275, 4.11458, 1.8782, 1.01906, - 5.54972, 5.17435, 5.69626, 1.4268, 3.98473, 6.07069, 5.85496, 5.8577, 2.51076, 1.22499, - 0.718451, 0.706082, 0.718631, 0.677138, 0.64293, 0.657632, 0.634079, 0.73646, 0.677257, 0.616843, + 1.0445, 1.0111, 1.05755, 0.677564, 0.905221, 1.09087, 1.07167, 1.07192, 0.774037, 0.659604, + 1.26307, 1.21307, 1.28259, 0.713913, 1.05462, 1.33246, 1.30373, 1.30409, 0.858293, 0.687033, + 1.59017, 1.51535, 1.61938, 0.768311, 1.27821, 1.69402, 1.65102, 1.65157, 0.984388, 0.728083, + 2.07971, 1.96773, 2.12343, 0.849723, 1.61283, 2.23513, 2.17077, 2.17159, 1.1731, 0.789519, + 2.81234, 2.64475, 2.87777, 0.971563, 2.11362, 3.04494, 2.94862, 2.94985, 1.45553, 0.881462, + 3.90879, 3.65797, 4.00671, 1.15391, 2.86309, 4.2569, 4.11275, 4.11458, 1.8782, 1.01906, + 5.54972, 5.17435, 5.69626, 1.4268, 3.98473, 6.07069, 5.85496, 5.8577, 2.51076, 1.22499, + 0.718451, 0.706082, 0.718631, 0.677138, 0.64293, 0.657632, 0.634079, 0.73646, 0.677257, 0.616843, 0.775103, 0.756592, 0.775372, 0.713274, 0.662079, 0.684083, 0.648834, 0.802055, 0.713453, 0.623038, - 0.859888, 0.832185, 0.86029, 0.767355, 0.690738, 0.723668, 0.670915, 0.900223, 0.767624, 0.632309, - 0.986775, 0.945316, 0.987378, 0.848292, 0.733629, 0.782911, 0.703961, 1.04714, 0.848694, 0.646185, - 1.17667, 1.11463, 1.17758, 0.969422, 0.797818, 0.871573, 0.753417, 1.26702, 0.970024, 0.66695, - 1.46087, 1.36801, 1.46222, 1.1507, 0.893882, 1.00426, 0.827433, 1.59608, 1.1516, 0.698028, - 1.8862, 1.74723, 1.88822, 1.422, 1.03765, 1.20285, 0.938205, 2.08854, 1.42335, 0.744538, - 2.52274, 2.31475, 2.52576, 1.82803, 1.25281, 1.50004, 1.10398, 2.82557, 1.83005, 0.814145, - 3.47537, 3.16411, 3.4799, 2.43568, 1.57482, 1.94482, 1.35209, 3.92858, 2.4387, 0.918317, - 4.90107, 4.43524, 4.90784, 3.34509, 2.05673, 2.61047, 1.72339, 5.57933, 3.34961, 1.07422, + 0.859888, 0.832185, 0.86029, 0.767355, 0.690738, 0.723668, 0.670915, 0.900223, 0.767624, 0.632309, + 0.986775, 0.945316, 0.987378, 0.848292, 0.733629, 0.782911, 0.703961, 1.04714, 0.848694, 0.646185, + 1.17667, 1.11463, 1.17758, 0.969422, 0.797818, 0.871573, 0.753417, 1.26702, 0.970024, 0.66695, + 1.46087, 1.36801, 1.46222, 1.1507, 0.893882, 1.00426, 0.827433, 1.59608, 1.1516, 0.698028, + 1.8862, 1.74723, 1.88822, 1.422, 1.03765, 1.20285, 0.938205, 2.08854, 1.42335, 0.744538, + 2.52274, 2.31475, 2.52576, 1.82803, 1.25281, 1.50004, 1.10398, 2.82557, 1.83005, 0.814145, + 3.47537, 3.16411, 3.4799, 2.43568, 1.57482, 1.94482, 1.35209, 3.92858, 2.4387, 0.918317, + 4.90107, 4.43524, 4.90784, 3.34509, 2.05673, 2.61047, 1.72339, 5.57933, 3.34961, 1.07422, 0.711027, 0.716871, 0.659048, 0.682622, 0.646854, 0.623101, 0.686311, 0.626743, 0.755629, 0.771058, 0.763992, 0.772739, 0.686201, 0.721482, 0.667952, 0.632404, 0.727003, 0.637854, 0.830743, 0.853834, - 0.843259, 0.85635, 0.726839, 0.779639, 0.699526, 0.646326, 0.787901, 0.654483, 0.943158, 0.977716, - 0.961889, 0.981481, 0.787656, 0.866675, 0.746781, 0.667161, 0.879041, 0.679369, 1.1114, 1.16312, - 1.13943, 1.16875, 0.878674, 0.996934, 0.817501, 0.698344, 1.01544, 0.716613, 1.36318, 1.44058, - 1.40513, 1.44901, 1.01489, 1.19188, 0.92334, 0.745011, 1.21957, 0.772353, 1.74, 1.85583, - 1.80278, 1.86845, 1.21875, 1.48362, 1.08174, 0.814853, 1.52507, 0.855772, 2.30393, 2.47729, - 2.39789, 2.49618, 1.52384, 1.92025, 1.31879, 0.919376, 1.98228, 0.980615, 3.14791, 3.40736, - 3.28853, 3.43562, 1.98044, 2.5737, 1.67356, 1.0758, 2.66654, 1.16745, 4.411, 4.79928, - 4.62145, 4.84158, 2.66378, 3.55164, 2.20451, 1.30991, 3.69058, 1.44707, 6.30131, 6.88241}, - std::vector{ - 0.611387, 0.770609, 0.76029, 0.631845, 0.770905, 0.649083, 0.674709, 0.673325, 0.718326, 0.760766, - 0.746518, 0.661408, 0.695142, 0.682194, 0.648044, 0.696717, 0.75732, 0.684389, 0.680157, 0.761339, - 0.735673, 0.725707, 0.739564, 0.626204, 0.694121, 0.749506, 0.743778, 0.743851, 0.654985, 0.620846, - 0.718451, 0.706082, 0.718631, 0.677138, 0.64293, 0.657632, 0.634079, 0.73646, 0.677257, 0.616843, - 0.711027, 0.716871, 0.659048, 0.682622, 0.646854, 0.623101, 0.686311, 0.626743, 0.755629, 0.771058}, + 0.843259, 0.85635, 0.726839, 0.779639, 0.699526, 0.646326, 0.787901, 0.654483, 0.943158, 0.977716, + 0.961889, 0.981481, 0.787656, 0.866675, 0.746781, 0.667161, 0.879041, 0.679369, 1.1114, 1.16312, + 1.13943, 1.16875, 0.878674, 0.996934, 0.817501, 0.698344, 1.01544, 0.716613, 1.36318, 1.44058, + 1.40513, 1.44901, 1.01489, 1.19188, 0.92334, 0.745011, 1.21957, 0.772353, 1.74, 1.85583, + 1.80278, 1.86845, 1.21875, 1.48362, 1.08174, 0.814853, 1.52507, 0.855772, 2.30393, 2.47729, + 2.39789, 2.49618, 1.52384, 1.92025, 1.31879, 0.919376, 1.98228, 0.980615, 3.14791, 3.40736, + 3.28853, 3.43562, 1.98044, 2.5737, 1.67356, 1.0758, 2.66654, 1.16745, 4.411, 4.79928, + 4.62145, 4.84158, 2.66378, 3.55164, 2.20451, 1.30991, 3.69058, 1.44707, 6.30131, 6.88241}, + std::vector{0.611387, 0.770609, 0.76029, 0.631845, 0.770905, 0.649083, 0.674709, 0.673325, 0.718326, + 0.760766, 0.746518, 0.661408, 0.695142, 0.682194, 0.648044, 0.696717, 0.75732, 0.684389, + 0.680157, 0.761339, 0.735673, 0.725707, 0.739564, 0.626204, 0.694121, 0.749506, 0.743778, + 0.743851, 0.654985, 0.620846, 0.718451, 0.706082, 0.718631, 0.677138, 0.64293, 0.657632, + 0.634079, 0.73646, 0.677257, 0.616843, 0.711027, 0.716871, 0.659048, 0.682622, 0.646854, + 0.623101, 0.686311, 0.626743, 0.755629, 0.771058}, std::vector{0}), TensorIteratorStaticParams( std::make_shared(), - 5, 10, 10, 10, - 0.f, ov::op::RecurrentSequenceDirection::FORWARD, TensorIteratorBodyType::RNN, + 5, + 10, + 10, + 10, + 0.f, + ov::op::RecurrentSequenceDirection::FORWARD, + TensorIteratorBodyType::RNN, ET, - std::vector{ - -1, 0.780309, -0.738585, -0.920481, 0.652872, 0.0641558, 0.91262, -0.0761474, 0.847476, -0.252158, - -0.690053, 0.784687, -0.946421, -0.416995, -0.202512, 0.614577, 0.254189, 0.81585, 0.112795, 0.679838, - -0.899024, 0.61247, 0.861631, -0.271941, 0.381896, -0.741371, 0.665373, -0.363293, 0.474405, 0.193539, - -0.272586, 0.589941, 0.396962, 0.643758, 0.798932, 0.663799, 0.819915, 0.949827, 0.312239, 0.623979, - -0.794512, -0.524943, -0.24131, 0.398472, -0.0301095, -0.169556, 0.277324, 0.51858, 0.115046, 0.386911, - 0.826518, -0.950774, 0.674757, -0.23359, -0.402458, -0.987406, -0.124885, 0.475875, -0.248479, -0.0135011, - -0.971921, -0.501126, -0.30573, 0.593373, 0.876799, -0.798956, 0.470805, 0.952874, 0.411772, 0.903529, - 0.855695, -0.179938, -0.32381, 0.538217, -0.330704, -0.834627, 0.797116, 0.57467, 0.434931, -0.11202, - 0.501784, 0.315797, -0.278605, -0.243354, 0.299264, -0.888726, -0.843481, -0.816194, 0.61021, -0.869385, - -0.551361, -0.695734, 0.361182, -0.748082, -0.485284, -0.124065, -0.780665, -0.370868, -0.298536, 0.522286, - -0.802298, 0.862921, -0.347842, -0.146729, -0.458638, 0.57622, -0.0933521, -0.833528, -0.859246, -0.340501, - -0.61579, 0.675731, -0.876629, 0.108469, 0.141222, -0.0757794, 0.897658, -0.310452, 0.768898, -0.13792, - 0.98896, 0.601007, 0.883268, -0.241041, -0.18915, -0.426225, -0.0989319, 0.530222, 0.159798, -0.243754, - 0.244787, 0.478345, 0.826766, 0.0642072, 0.0356427, -0.794826, -0.75666, 0.287393, -0.108071, -0.84735, - -0.694862, -0.840984, 0.758743, -0.677052, 0.845901, -0.992841, 0.605204, -0.392934, -0.510492, 0.536422, - 0.406964, 0.772353, 0.826283, -0.549379, -0.157033, -0.668275, -0.57833, 0.679797, 0.830901, 0.363183, - -0.181486, -0.555743, 0.6706, 0.553474, 0.474691, 0.717404, 0.945023, -0.180081, 0.194028, 0.476884, - -0.466581, 0.526266, 0.861006, 0.749377, -0.767673, 0.934578, -0.394025, 0.218032, -0.664486, 0.716852, - 0.452785, -0.869765, 0.0361971, 0.190971, -0.0841559, 0.184484, -0.361089, 0.639664, -0.814522, -0.64626, - -0.558575, -0.0518135, 0.834904, 0.983071, 0.208429, 0.841115, -0.266728, -0.984396, 0.310033, -0.663894, - -0.00708379, 0.581608, 0.635922, -0.266473, -0.742514, -0.605766, -0.958209, 0.267088, -0.0427639, -0.575115, - -0.469043, -0.622282, 0.77962, 0.432287, -0.862854, -0.508723, 0.840711, -0.59019, -0.0682369, 0.526142, - 0.0647325, 0.102044, -0.529739, -0.448041, -0.966308, -0.155126, -0.906004, -0.881601, -0.362032, -0.113877, - -0.662836, -0.397345, -0.101194, -0.0538374, 0.408442, 0.40128, 0.187299, 0.94587, 0.324356, 0.75563, - -0.171329, 0.59615, -0.724044, -0.477747, -0.546406, 0.064904, 0.389431, -0.512046, -0.609801, 0.580285, - -0.18924, -0.129838, 0.252768, 0.357634, -0.137093, -0.409645, 0.99457, -0.60545, 0.115919, -0.0537746, - -0.822487, -0.37496, 0.197357, -0.901543, -0.264034, -0.743536, -0.948014, 0.464231, -0.473613, 0.422959, - 0.354869, 0.641287, 0.582011, 0.21152, 0.00800619, -0.138603, -0.798317, -0.0269492, -0.19921, 0.174343, - -0.111682, -0.532153, 0.268423, -0.541535, -0.497098, 0.957141, -0.106795, -0.838224, -0.760405, -0.0744435, - 0.556972, -0.203011, 0.248964, 0.59689, -0.0109004, -0.925239, 0.438413, 0.386685, -0.369077, 0.673153, - -0.919203, 0.259205, -0.956505, 0.483536, -0.206068, 0.0391633, -0.0715966, 0.34823, 0.700705, -0.3679, - -0.368349, -0.665279, 0.36909, 0.636464, -0.634393, -0.931031, 0.0198778, 0.556591, 0.233121, 0.880379, - -0.544078, 0.565815, -0.177247, 0.388592, -0.498401, 0.0146546, -0.43808, -0.562895, 0.847527, 0.556404, - -0.481485, -0.54575, 0.586809, -0.645919, -0.411731, 0.634336, -0.107599, 0.699691, 0.879165, -0.605746, - 0.851844, -0.197677, -0.0638249, -0.550345, 0.427207, 0.281324, 0.82633, -0.00911417, -0.523082, 0.360537, - 0.295952, 0.537166, 0.235453, 0.414191, 0.340562, -0.0328213, 0.828018, -0.944312, 0.806772, -0.108092, - 0.089091, -0.960954, 0.725746, 0.269557, -0.000429476, -0.231468, -0.991745, 0.471178, -0.496647, 0.943754, - -0.815517, -0.069551, 0.263998, -0.226304, -0.684247, -0.0426104, 0.0763018, 0.903734, 0.36846, -0.0844384, - -0.0746106, -0.641445, 0.969822, 0.997518, 0.307509, 0.622212, -0.349354, -0.876697, -0.7214, -0.594663, - -0.919986, 0.409152, -0.603743, -0.4911, 0.703263, 0.314707, 0.612499, -0.369318, 0.614946, 0.770576, - 0.371061, 0.593678, 0.750314, -0.364852, 0.698688, 0.609751, 0.142622, -0.787519, 0.509953, 0.415293, - -0.640467, 0.701937, 0.649218, 0.824335, 0.711544, -0.57001, -0.32463, -0.921129, -0.52984, -0.750256, - -0.445129, -0.122558, 0.719862, -0.354157, 0.975094, 0.930568, 0.390521, 0.340562, -0.927739, 0.570913, - 0.0577081, 0.345886, -0.147266, -0.920045, 0.290715, 0.137354, 0.409865, 0.407486, -0.548271, 0.969365, - -0.763785, -0.589062, 0.906249, 0.869164, -0.322404, 0.860601, -0.792338, -0.74819, -0.11752, 0.246401, - 0.215602, -0.659965, -0.334239, -0.701839, 0.916408, -0.870779, -0.765881, -0.0786394, -0.25551, 0.903985, - 0.159976, -0.731893, -0.88472, 0.310355, 0.421346, -0.190523, 0.320507, 0.689287, 0.976754, 0.910255, - 0.467333, -0.411659, 0.410252, 0.00145024, -0.329416, 0.0472609, 0.792444, 0.874022, -0.108247, 0.452289, - 0.613927, -0.608009, 0.0925679, -0.701885, -0.625309, -0.233405, -0.885755, 0.356572, 0.775295, -0.312218, - -0.485195, -0.760842, -0.196276, -0.326445, -0.837129, 0.260253, 0.125437, -0.848069, -0.850426, 1}, - std::vector{ - -1, 0.0194419, -0.633291, 0.617539, 0.87557, -0.940787, 0.569968, -0.672245, -0.132298, 0.148535, - -0.565955, 0.661358, -0.40092, -0.278338, 0.738713, -0.975645, 0.350663, -0.0375085, 0.954534, -0.57807, - -0.573083, 0.887977, -0.347673, 0.972259, -0.125333, 0.930768, -0.484139, 0.519932, -0.615546, -0.434102, - 0.539075, -0.983636, -0.29435, -0.532884, -0.229788, -0.78175, -0.185304, -0.189241, 0.540048, 0.68374, - -0.213783, -0.0673415, -0.791954, -0.618463, 0.345361, -0.0507364, 0.603086, -0.504686, 0.482923, 1}, + std::vector{-1, 0.780309, -0.738585, -0.920481, 0.652872, 0.0641558, 0.91262, + -0.0761474, 0.847476, -0.252158, -0.690053, 0.784687, -0.946421, -0.416995, + -0.202512, 0.614577, 0.254189, 0.81585, 0.112795, 0.679838, -0.899024, + 0.61247, 0.861631, -0.271941, 0.381896, -0.741371, 0.665373, -0.363293, + 0.474405, 0.193539, -0.272586, 0.589941, 0.396962, 0.643758, 0.798932, + 0.663799, 0.819915, 0.949827, 0.312239, 0.623979, -0.794512, -0.524943, + -0.24131, 0.398472, -0.0301095, -0.169556, 0.277324, 0.51858, 0.115046, + 0.386911, 0.826518, -0.950774, 0.674757, -0.23359, -0.402458, -0.987406, + -0.124885, 0.475875, -0.248479, -0.0135011, -0.971921, -0.501126, -0.30573, + 0.593373, 0.876799, -0.798956, 0.470805, 0.952874, 0.411772, 0.903529, + 0.855695, -0.179938, -0.32381, 0.538217, -0.330704, -0.834627, 0.797116, + 0.57467, 0.434931, -0.11202, 0.501784, 0.315797, -0.278605, -0.243354, + 0.299264, -0.888726, -0.843481, -0.816194, 0.61021, -0.869385, -0.551361, + -0.695734, 0.361182, -0.748082, -0.485284, -0.124065, -0.780665, -0.370868, + -0.298536, 0.522286, -0.802298, 0.862921, -0.347842, -0.146729, -0.458638, + 0.57622, -0.0933521, -0.833528, -0.859246, -0.340501, -0.61579, 0.675731, + -0.876629, 0.108469, 0.141222, -0.0757794, 0.897658, -0.310452, 0.768898, + -0.13792, 0.98896, 0.601007, 0.883268, -0.241041, -0.18915, -0.426225, + -0.0989319, 0.530222, 0.159798, -0.243754, 0.244787, 0.478345, 0.826766, + 0.0642072, 0.0356427, -0.794826, -0.75666, 0.287393, -0.108071, -0.84735, + -0.694862, -0.840984, 0.758743, -0.677052, 0.845901, -0.992841, 0.605204, + -0.392934, -0.510492, 0.536422, 0.406964, 0.772353, 0.826283, -0.549379, + -0.157033, -0.668275, -0.57833, 0.679797, 0.830901, 0.363183, -0.181486, + -0.555743, 0.6706, 0.553474, 0.474691, 0.717404, 0.945023, -0.180081, + 0.194028, 0.476884, -0.466581, 0.526266, 0.861006, 0.749377, -0.767673, + 0.934578, -0.394025, 0.218032, -0.664486, 0.716852, 0.452785, -0.869765, + 0.0361971, 0.190971, -0.0841559, 0.184484, -0.361089, 0.639664, -0.814522, + -0.64626, -0.558575, -0.0518135, 0.834904, 0.983071, 0.208429, 0.841115, + -0.266728, -0.984396, 0.310033, -0.663894, -0.00708379, 0.581608, 0.635922, + -0.266473, -0.742514, -0.605766, -0.958209, 0.267088, -0.0427639, -0.575115, + -0.469043, -0.622282, 0.77962, 0.432287, -0.862854, -0.508723, 0.840711, + -0.59019, -0.0682369, 0.526142, 0.0647325, 0.102044, -0.529739, -0.448041, + -0.966308, -0.155126, -0.906004, -0.881601, -0.362032, -0.113877, -0.662836, + -0.397345, -0.101194, -0.0538374, 0.408442, 0.40128, 0.187299, 0.94587, + 0.324356, 0.75563, -0.171329, 0.59615, -0.724044, -0.477747, -0.546406, + 0.064904, 0.389431, -0.512046, -0.609801, 0.580285, -0.18924, -0.129838, + 0.252768, 0.357634, -0.137093, -0.409645, 0.99457, -0.60545, 0.115919, + -0.0537746, -0.822487, -0.37496, 0.197357, -0.901543, -0.264034, -0.743536, + -0.948014, 0.464231, -0.473613, 0.422959, 0.354869, 0.641287, 0.582011, + 0.21152, 0.00800619, -0.138603, -0.798317, -0.0269492, -0.19921, 0.174343, + -0.111682, -0.532153, 0.268423, -0.541535, -0.497098, 0.957141, -0.106795, + -0.838224, -0.760405, -0.0744435, 0.556972, -0.203011, 0.248964, 0.59689, + -0.0109004, -0.925239, 0.438413, 0.386685, -0.369077, 0.673153, -0.919203, + 0.259205, -0.956505, 0.483536, -0.206068, 0.0391633, -0.0715966, 0.34823, + 0.700705, -0.3679, -0.368349, -0.665279, 0.36909, 0.636464, -0.634393, + -0.931031, 0.0198778, 0.556591, 0.233121, 0.880379, -0.544078, 0.565815, + -0.177247, 0.388592, -0.498401, 0.0146546, -0.43808, -0.562895, 0.847527, + 0.556404, -0.481485, -0.54575, 0.586809, -0.645919, -0.411731, 0.634336, + -0.107599, 0.699691, 0.879165, -0.605746, 0.851844, -0.197677, -0.0638249, + -0.550345, 0.427207, 0.281324, 0.82633, -0.00911417, -0.523082, 0.360537, + 0.295952, 0.537166, 0.235453, 0.414191, 0.340562, -0.0328213, 0.828018, + -0.944312, 0.806772, -0.108092, 0.089091, -0.960954, 0.725746, 0.269557, + -0.000429476, -0.231468, -0.991745, 0.471178, -0.496647, 0.943754, -0.815517, + -0.069551, 0.263998, -0.226304, -0.684247, -0.0426104, 0.0763018, 0.903734, + 0.36846, -0.0844384, -0.0746106, -0.641445, 0.969822, 0.997518, 0.307509, + 0.622212, -0.349354, -0.876697, -0.7214, -0.594663, -0.919986, 0.409152, + -0.603743, -0.4911, 0.703263, 0.314707, 0.612499, -0.369318, 0.614946, + 0.770576, 0.371061, 0.593678, 0.750314, -0.364852, 0.698688, 0.609751, + 0.142622, -0.787519, 0.509953, 0.415293, -0.640467, 0.701937, 0.649218, + 0.824335, 0.711544, -0.57001, -0.32463, -0.921129, -0.52984, -0.750256, + -0.445129, -0.122558, 0.719862, -0.354157, 0.975094, 0.930568, 0.390521, + 0.340562, -0.927739, 0.570913, 0.0577081, 0.345886, -0.147266, -0.920045, + 0.290715, 0.137354, 0.409865, 0.407486, -0.548271, 0.969365, -0.763785, + -0.589062, 0.906249, 0.869164, -0.322404, 0.860601, -0.792338, -0.74819, + -0.11752, 0.246401, 0.215602, -0.659965, -0.334239, -0.701839, 0.916408, + -0.870779, -0.765881, -0.0786394, -0.25551, 0.903985, 0.159976, -0.731893, + -0.88472, 0.310355, 0.421346, -0.190523, 0.320507, 0.689287, 0.976754, + 0.910255, 0.467333, -0.411659, 0.410252, 0.00145024, -0.329416, 0.0472609, + 0.792444, 0.874022, -0.108247, 0.452289, 0.613927, -0.608009, 0.0925679, + -0.701885, -0.625309, -0.233405, -0.885755, 0.356572, 0.775295, -0.312218, + -0.485195, -0.760842, -0.196276, -0.326445, -0.837129, 0.260253, 0.125437, + -0.848069, -0.850426, 1}, + std::vector{-1, 0.0194419, -0.633291, 0.617539, 0.87557, -0.940787, 0.569968, -0.672245, + -0.132298, 0.148535, -0.565955, 0.661358, -0.40092, -0.278338, 0.738713, -0.975645, + 0.350663, -0.0375085, 0.954534, -0.57807, -0.573083, 0.887977, -0.347673, 0.972259, + -0.125333, 0.930768, -0.484139, 0.519932, -0.615546, -0.434102, 0.539075, -0.983636, + -0.29435, -0.532884, -0.229788, -0.78175, -0.185304, -0.189241, 0.540048, 0.68374, + -0.213783, -0.0673415, -0.791954, -0.618463, 0.345361, -0.0507364, 0.603086, -0.504686, + 0.482923, 1}, std::vector{0}, std::vector{10, 10, 10, 10, 10}, + std::vector{-1, -0.913489, 0.693052, 0.019041, 0.0899735, 0.267736, -0.83394, 0.521807, + 0.782117, 0.297318, -0.269702, -0.912514, 0.694362, -0.6763, -0.041225, 0.136946, + -0.95289, 0.0132674, -0.716936, 0.821415, 0.94, -0.545582, -0.79185, -0.897178, + -0.871876, -0.752293, -0.219966, -0.144664, 0.981552, 0.738669, -0.02916, 0.661658, + -0.0956457, 0.187724, 0.0764894, -0.644897, 0.984866, -0.831317, 0.995369, -0.687197, + 0.796943, 0.211748, 0.720581, 0.659591, -0.45931, -0.407646, -0.223375, 0.916773, + -0.833119, -0.0234757, -0.377257, -0.914253, 0.754316, -0.968665, 0.387126, -0.781003, + -0.481575, 0.10334, 0.376482, -0.540745, 0.596997, -0.946251, -0.802122, -0.393072, + 0.917111, 0.51311, 0.708101, 0.502501, -0.457544, 0.603489, 0.889737, 0.809528, + -0.698177, 0.980047, 0.614314, 0.577663, 0.877533, -0.0142305, -0.282326, 0.272626, + 0.154382, 0.950671, 0.537283, -0.405515, -0.12969, -0.90906, 0.442845, -0.982063, + 0.761418, 0.346103, 0.061014, -0.221426, 0.655872, -0.487476, 0.0797454, -0.686778, + 0.272147, 0.612127, -0.390442, 1}, + std::vector{-1, 0.141964, -0.595054, -0.275782, -0.0524186, -0.100404, 0.356214, 0.892551, + -0.595043, -0.477837, 0.216629, -0.672137, 0.0817748, 0.356531, 0.22735, -0.73296, + -0.206045, -0.286988, 0.61286, 0.287588, 0.220286, 0.251281, -0.327665, -0.648745, + 0.792805, 0.644284, -0.355157, -0.430805, 0.363233, -0.828104, -0.650602, 0.406752, + -0.0604071, 0.370716, 0.38019, -0.441156, 0.713, 0.756505, 0.41166, -0.0277081, + 0.498859, -0.673484, -0.801405, -0.900367, 0.436681, -0.758691, 0.138279, 0.677402, + -0.744722, 0.939746, 0.669847, -0.402517, -0.970535, 0.92845, -0.662595, 0.89595, + 0.169792, 0.574887, 0.805658, -0.042754, 0.419412, 0.372186, 0.730907, -0.750522, + 0.985225, -0.205298, 0.843882, 0.233976, 0.272515, -0.194655, -0.405147, -0.61521, + 0.276029, 0.837373, -0.765691, -0.61865, -0.531337, -0.0268663, 0.804463, 0.958094, + -0.625586, -0.878096, 0.134272, -0.0648465, -0.356075, 0.447334, 0.745843, -0.997586, + 0.994596, -0.581395, -0.525029, -0.603188, 0.657781, 0.665195, -0.472963, 0.3469, + -0.658721, -0.485042, -0.038087, 1}, + std::vector{-1, 0.230334, 0.179311, -0.134689, 0.535764, -0.0883306, 0.945667, 0.757567, -0.164013, 1}, std::vector{ - -1, -0.913489, 0.693052, 0.019041, 0.0899735, 0.267736, -0.83394, 0.521807, 0.782117, 0.297318, - -0.269702, -0.912514, 0.694362, -0.6763, -0.041225, 0.136946, -0.95289, 0.0132674, -0.716936, 0.821415, - 0.94, -0.545582, -0.79185, -0.897178, -0.871876, -0.752293, -0.219966, -0.144664, 0.981552, 0.738669, - -0.02916, 0.661658, -0.0956457, 0.187724, 0.0764894, -0.644897, 0.984866, -0.831317, 0.995369, -0.687197, - 0.796943, 0.211748, 0.720581, 0.659591, -0.45931, -0.407646, -0.223375, 0.916773, -0.833119, -0.0234757, - -0.377257, -0.914253, 0.754316, -0.968665, 0.387126, -0.781003, -0.481575, 0.10334, 0.376482, -0.540745, - 0.596997, -0.946251, -0.802122, -0.393072, 0.917111, 0.51311, 0.708101, 0.502501, -0.457544, 0.603489, - 0.889737, 0.809528, -0.698177, 0.980047, 0.614314, 0.577663, 0.877533, -0.0142305, -0.282326, 0.272626, - 0.154382, 0.950671, 0.537283, -0.405515, -0.12969, -0.90906, 0.442845, -0.982063, 0.761418, 0.346103, - 0.061014, -0.221426, 0.655872, -0.487476, 0.0797454, -0.686778, 0.272147, 0.612127, -0.390442, 1}, - std::vector{ - -1, 0.141964, -0.595054, -0.275782, -0.0524186, -0.100404, 0.356214, 0.892551, -0.595043, -0.477837, - 0.216629, -0.672137, 0.0817748, 0.356531, 0.22735, -0.73296, -0.206045, -0.286988, 0.61286, 0.287588, - 0.220286, 0.251281, -0.327665, -0.648745, 0.792805, 0.644284, -0.355157, -0.430805, 0.363233, -0.828104, - -0.650602, 0.406752, -0.0604071, 0.370716, 0.38019, -0.441156, 0.713, 0.756505, 0.41166, -0.0277081, - 0.498859, -0.673484, -0.801405, -0.900367, 0.436681, -0.758691, 0.138279, 0.677402, -0.744722, 0.939746, - 0.669847, -0.402517, -0.970535, 0.92845, -0.662595, 0.89595, 0.169792, 0.574887, 0.805658, -0.042754, - 0.419412, 0.372186, 0.730907, -0.750522, 0.985225, -0.205298, 0.843882, 0.233976, 0.272515, -0.194655, - -0.405147, -0.61521, 0.276029, 0.837373, -0.765691, -0.61865, -0.531337, -0.0268663, 0.804463, 0.958094, - -0.625586, -0.878096, 0.134272, -0.0648465, -0.356075, 0.447334, 0.745843, -0.997586, 0.994596, -0.581395, - -0.525029, -0.603188, 0.657781, 0.665195, -0.472963, 0.3469, -0.658721, -0.485042, -0.038087, 1}, - std::vector{ - -1, 0.230334, 0.179311, -0.134689, 0.535764, -0.0883306, 0.945667, 0.757567, -0.164013, 1}, - std::vector{ - -0.470427, -0.735855, -0.329029, 0.999017, -0.97258, -0.832011, 0.845522, 0.894361, 0.958116, 0.224556, - -0.194886, 0.7597, -0.979301, 0.857585, -0.317987, 0.646902, 0.593991, 0.999861, 0.538864, 0.927538, - 0.37339, -0.72924, -0.950366, 0.998894, -0.345412, 0.999566, -0.905088, 0.653838, 0.931462, 0.963299, - -0.906984, 0.0686653, -0.987239, -0.536094, 0.796584, 0.99365, -0.558737, 0.999976, -0.599586, 0.998812, - 0.983484, -0.701986, 0.423666, -0.135422, 0.989586, 0.139235, 0.685596, -0.461324, -0.99599, 0.953192, - -0.966443, 0.971833, 0.924096, -0.966079, 0.999922, 0.619564, 0.992519, -0.955464, -0.780334, 0.996958, - 0.754961, -0.856074, 0.390907, 0.0981389, 0.119931, -0.998381, 0.999874, -0.831976, -0.451887, 0.995945, - -0.999099, -0.0742243, 0.0827845, 0.612425, 0.999317, -0.937344, 0.983523, 0.995035, 0.585578, 0.977957, - -0.43647, 0.388421, -0.258281, 0.999908, 0.831387, 0.667824, 0.562112, 0.922843, 0.822575, -0.242546, - 0.926723, 0.993825, 0.934094, 0.43523, -0.883989, 0.998732, 0.817433, -0.981772, 0.0274753, 0.835067, - -0.888153, 0.515512, -0.535921, 0.959418, -0.562229, -0.987868, 0.792129, 0.475789, 0.514164, -0.984779, - 0.0509315, -0.982143, -0.67308, 0.999919, -0.996151, -0.260185, 0.199735, 0.993083, 0.969637, -0.910127, - -0.675983, 0.70171, -0.299249, 0.829332, 0.944843, 0.999636, -0.939607, 0.989802, 0.988641, 0.905483, - -0.646793, 0.164027, -0.106558, 0.912668, 0.865034, 0.996346, -0.954819, 0.658484, -0.733437, 0.981117, - 0.370026, 0.921197, -0.488649, 0.0900238, 0.0720321, 0.992835, 0.585617, -0.46584, -0.903143, 0.99996, - -0.356482, -0.749733, 0.932796, -0.465316, 0.97494, 0.899907, -0.67506, -0.965299, 0.454869, 0.988603, - -0.982064, 0.828854, -0.220461, -0.86623, -0.339239, -0.96652, 0.991063, 0.991035, 0.777575, 0.999398, - 0.946364, 0.880981, -0.998482, 0.547716, 0.999092, -0.992971, 0.697291, 0.963563, -0.891479, 0.300176, - 0.364938, 0.775309, -0.820081, -0.376288, 0.999946, 0.558757, 0.997203, -0.866317, -0.999996, -0.941121, - 0.784196, -0.940529, -0.276717, 0.491236, -0.114034, -0.801807, 0.497822, -0.998929, -0.126009, -0.999082, - 0.681976, -0.725531, 0.510584, 0.12361, 0.125229, 0.977814, -0.998011, -0.965556, -0.631127, 0.871774, - -0.995246, 0.831005, 0.603614, -0.976149, 0.723436, 0.005006, -0.813208, 0.378399, 0.675123, 0.999891, - -0.91046, 0.734962, 0.983588, 0.29022, 0.353188, -0.987676, 0.607138, 0.0411221, -0.694228, 0.70539, - 0.932037, 0.733177, -0.964759, 0.257687, 0.195126, -0.995997, 0.998685, 0.826683, -0.990081, 0.991014, - -0.950626, -0.146971, -0.715613, 0.841348, 0.998419, -0.887543, 0.961327, 0.600526, -0.994247, -0.619601, - 0.84072, -0.738013, -0.698475, 0.999502, 0.881153, -0.793456, 0.739883, 0.0180047, 0.4453, -0.485067, - 0.313446, 0.99986, 0.801312, -0.827691, 0.933498, 0.999094, 0.803509, -0.98389, -0.00203269, 0.846717, - -0.988731, -0.155845, 0.813561, -0.821903, 0.876179, -0.974753, 0.978543, -0.888744, 0.618244, 0.827802, - -0.891081, 0.997132, -0.574761, -0.133318, 0.51666, -0.998325, 0.998647, 0.557186, 0.745226, 0.750499, - -0.151921, 0.471127, -0.0807336, 0.991118, 0.998363, -0.834192, 0.995547, 0.970334, -0.285624, 0.876872, - -0.89536, 0.233029, -0.512256, 0.0501049, 0.914272, -0.446383, -0.0660111, 0.987471, -0.293181, 0.0090407, - 0.993962, 0.725552, 0.861327, 0.802724, 0.996225, -0.357275, 0.692737, -0.765375, -0.923606, 0.94725, - -0.976212, 0.112285, 0.116271, 0.625773, -0.107807, -0.991827, 0.616004, -0.187246, -0.546877, 0.598621, - 0.984211, 0.834327, -0.949712, 0.697382, 0.314412, 0.264601, -0.0311285, -0.167991, -0.815124, 0.938068, - -0.997105, -0.0607237, 0.323916, -0.751497, 0.967815, 0.488129, 0.992229, 0.909782, -0.994726, 0.944747, - 0.0310377, -0.997291, -0.57774, 0.999577, 0.952662, -0.993977, 0.966995, 0.653885, 0.81589, -0.00180226, - 0.919955, 0.999967, -0.388806, -0.69297, 0.998599, 0.989852, 0.977406, 0.454365, -0.613587, 0.96152, - 0.668411, -0.834641, 0.808747, -0.218147, 0.994641, 0.649985, 0.983425, -0.999456, -0.993521, -0.237065, - -0.90937, 0.803391, -0.959971, -0.966409, 0.914242, -0.890865, 0.974014, -0.926672, -0.0687355, -0.127353, - 0.662279, -0.589603, 0.901327, 0.980076, -0.823804, -0.997316, 0.998387, -0.547919, 0.932731, -0.869742, - -0.873948, 0.587376, -0.0521998, 0.796093, 0.814562, -0.270571, 0.85441, 0.943845, 0.98825, 0.685685, - -0.451584, 0.0440054, -0.999464, 0.999774, 0.460959, 0.681076, -0.324321, 0.967583, 0.654874, -0.168221, - 0.667043, 0.960345, -0.97207, -0.595059, -0.106839, 0.993147, 0.943661, 0.942445, -0.939552, 0.971532, - -0.300632, -0.791734, 0.396844, -0.757931, 0.995531, 0.657585, 0.997931, -0.830918, -0.989057, 0.804422, - 0.851206, 0.947814, -0.89455, -0.972667, 0.973761, -0.978947, 0.71407, -0.969456, -0.0211013, 0.75895, - -0.824819, 0.994166, 0.996015, -0.911606, 0.992728, -0.180097, 0.999886, -0.970702, -0.859906, 0.384982, - 0.399817, -0.871178, 0.992977, 0.360447, -0.310061, -0.999914, 0.999989, -0.551683, -0.639379, 0.840487, - -0.977291, 0.950401, -0.958736, -0.796325, 0.997133, -0.937949, 0.994022, 0.99259, -0.233032, 0.999401, - 0.996386, 0.496829, 0.983234, 0.972622, 0.999547, 0.0118207, 0.977296, -0.989754, -0.984194, -0.799701, - -0.97941, 0.979603, 0.934784, -0.947689, -0.950645, -0.962226, 0.998866, -0.990042, -0.547825, 0.689601}, - std::vector{ - 0.926723, 0.993825, 0.934094, 0.43523, -0.883989, 0.998732, 0.817433, -0.981772, 0.0274753, 0.835067, - 0.784196, -0.940529, -0.276717, 0.491236, -0.114034, -0.801807, 0.497822, -0.998929, -0.126009, -0.999082, - -0.151921, 0.471127, -0.0807336, 0.991118, 0.998363, -0.834192, 0.995547, 0.970334, -0.285624, 0.876872, - 0.662279, -0.589603, 0.901327, 0.980076, -0.823804, -0.997316, 0.998387, -0.547919, 0.932731, -0.869742, - -0.97941, 0.979603, 0.934784, -0.947689, -0.950645, -0.962226, 0.998866, -0.990042, -0.547825, 0.689601}, + -0.470427, -0.735855, -0.329029, 0.999017, -0.97258, -0.832011, 0.845522, 0.894361, + 0.958116, 0.224556, -0.194886, 0.7597, -0.979301, 0.857585, -0.317987, 0.646902, + 0.593991, 0.999861, 0.538864, 0.927538, 0.37339, -0.72924, -0.950366, 0.998894, + -0.345412, 0.999566, -0.905088, 0.653838, 0.931462, 0.963299, -0.906984, 0.0686653, + -0.987239, -0.536094, 0.796584, 0.99365, -0.558737, 0.999976, -0.599586, 0.998812, + 0.983484, -0.701986, 0.423666, -0.135422, 0.989586, 0.139235, 0.685596, -0.461324, + -0.99599, 0.953192, -0.966443, 0.971833, 0.924096, -0.966079, 0.999922, 0.619564, + 0.992519, -0.955464, -0.780334, 0.996958, 0.754961, -0.856074, 0.390907, 0.0981389, + 0.119931, -0.998381, 0.999874, -0.831976, -0.451887, 0.995945, -0.999099, -0.0742243, + 0.0827845, 0.612425, 0.999317, -0.937344, 0.983523, 0.995035, 0.585578, 0.977957, + -0.43647, 0.388421, -0.258281, 0.999908, 0.831387, 0.667824, 0.562112, 0.922843, + 0.822575, -0.242546, 0.926723, 0.993825, 0.934094, 0.43523, -0.883989, 0.998732, + 0.817433, -0.981772, 0.0274753, 0.835067, -0.888153, 0.515512, -0.535921, 0.959418, + -0.562229, -0.987868, 0.792129, 0.475789, 0.514164, -0.984779, 0.0509315, -0.982143, + -0.67308, 0.999919, -0.996151, -0.260185, 0.199735, 0.993083, 0.969637, -0.910127, + -0.675983, 0.70171, -0.299249, 0.829332, 0.944843, 0.999636, -0.939607, 0.989802, + 0.988641, 0.905483, -0.646793, 0.164027, -0.106558, 0.912668, 0.865034, 0.996346, + -0.954819, 0.658484, -0.733437, 0.981117, 0.370026, 0.921197, -0.488649, 0.0900238, + 0.0720321, 0.992835, 0.585617, -0.46584, -0.903143, 0.99996, -0.356482, -0.749733, + 0.932796, -0.465316, 0.97494, 0.899907, -0.67506, -0.965299, 0.454869, 0.988603, + -0.982064, 0.828854, -0.220461, -0.86623, -0.339239, -0.96652, 0.991063, 0.991035, + 0.777575, 0.999398, 0.946364, 0.880981, -0.998482, 0.547716, 0.999092, -0.992971, + 0.697291, 0.963563, -0.891479, 0.300176, 0.364938, 0.775309, -0.820081, -0.376288, + 0.999946, 0.558757, 0.997203, -0.866317, -0.999996, -0.941121, 0.784196, -0.940529, + -0.276717, 0.491236, -0.114034, -0.801807, 0.497822, -0.998929, -0.126009, -0.999082, + 0.681976, -0.725531, 0.510584, 0.12361, 0.125229, 0.977814, -0.998011, -0.965556, + -0.631127, 0.871774, -0.995246, 0.831005, 0.603614, -0.976149, 0.723436, 0.005006, + -0.813208, 0.378399, 0.675123, 0.999891, -0.91046, 0.734962, 0.983588, 0.29022, + 0.353188, -0.987676, 0.607138, 0.0411221, -0.694228, 0.70539, 0.932037, 0.733177, + -0.964759, 0.257687, 0.195126, -0.995997, 0.998685, 0.826683, -0.990081, 0.991014, + -0.950626, -0.146971, -0.715613, 0.841348, 0.998419, -0.887543, 0.961327, 0.600526, + -0.994247, -0.619601, 0.84072, -0.738013, -0.698475, 0.999502, 0.881153, -0.793456, + 0.739883, 0.0180047, 0.4453, -0.485067, 0.313446, 0.99986, 0.801312, -0.827691, + 0.933498, 0.999094, 0.803509, -0.98389, -0.00203269, 0.846717, -0.988731, -0.155845, + 0.813561, -0.821903, 0.876179, -0.974753, 0.978543, -0.888744, 0.618244, 0.827802, + -0.891081, 0.997132, -0.574761, -0.133318, 0.51666, -0.998325, 0.998647, 0.557186, + 0.745226, 0.750499, -0.151921, 0.471127, -0.0807336, 0.991118, 0.998363, -0.834192, + 0.995547, 0.970334, -0.285624, 0.876872, -0.89536, 0.233029, -0.512256, 0.0501049, + 0.914272, -0.446383, -0.0660111, 0.987471, -0.293181, 0.0090407, 0.993962, 0.725552, + 0.861327, 0.802724, 0.996225, -0.357275, 0.692737, -0.765375, -0.923606, 0.94725, + -0.976212, 0.112285, 0.116271, 0.625773, -0.107807, -0.991827, 0.616004, -0.187246, + -0.546877, 0.598621, 0.984211, 0.834327, -0.949712, 0.697382, 0.314412, 0.264601, + -0.0311285, -0.167991, -0.815124, 0.938068, -0.997105, -0.0607237, 0.323916, -0.751497, + 0.967815, 0.488129, 0.992229, 0.909782, -0.994726, 0.944747, 0.0310377, -0.997291, + -0.57774, 0.999577, 0.952662, -0.993977, 0.966995, 0.653885, 0.81589, -0.00180226, + 0.919955, 0.999967, -0.388806, -0.69297, 0.998599, 0.989852, 0.977406, 0.454365, + -0.613587, 0.96152, 0.668411, -0.834641, 0.808747, -0.218147, 0.994641, 0.649985, + 0.983425, -0.999456, -0.993521, -0.237065, -0.90937, 0.803391, -0.959971, -0.966409, + 0.914242, -0.890865, 0.974014, -0.926672, -0.0687355, -0.127353, 0.662279, -0.589603, + 0.901327, 0.980076, -0.823804, -0.997316, 0.998387, -0.547919, 0.932731, -0.869742, + -0.873948, 0.587376, -0.0521998, 0.796093, 0.814562, -0.270571, 0.85441, 0.943845, + 0.98825, 0.685685, -0.451584, 0.0440054, -0.999464, 0.999774, 0.460959, 0.681076, + -0.324321, 0.967583, 0.654874, -0.168221, 0.667043, 0.960345, -0.97207, -0.595059, + -0.106839, 0.993147, 0.943661, 0.942445, -0.939552, 0.971532, -0.300632, -0.791734, + 0.396844, -0.757931, 0.995531, 0.657585, 0.997931, -0.830918, -0.989057, 0.804422, + 0.851206, 0.947814, -0.89455, -0.972667, 0.973761, -0.978947, 0.71407, -0.969456, + -0.0211013, 0.75895, -0.824819, 0.994166, 0.996015, -0.911606, 0.992728, -0.180097, + 0.999886, -0.970702, -0.859906, 0.384982, 0.399817, -0.871178, 0.992977, 0.360447, + -0.310061, -0.999914, 0.999989, -0.551683, -0.639379, 0.840487, -0.977291, 0.950401, + -0.958736, -0.796325, 0.997133, -0.937949, 0.994022, 0.99259, -0.233032, 0.999401, + 0.996386, 0.496829, 0.983234, 0.972622, 0.999547, 0.0118207, 0.977296, -0.989754, + -0.984194, -0.799701, -0.97941, 0.979603, 0.934784, -0.947689, -0.950645, -0.962226, + 0.998866, -0.990042, -0.547825, 0.689601}, + std::vector{0.926723, 0.993825, 0.934094, 0.43523, -0.883989, 0.998732, 0.817433, -0.981772, + 0.0274753, 0.835067, 0.784196, -0.940529, -0.276717, 0.491236, -0.114034, -0.801807, + 0.497822, -0.998929, -0.126009, -0.999082, -0.151921, 0.471127, -0.0807336, 0.991118, + 0.998363, -0.834192, 0.995547, 0.970334, -0.285624, 0.876872, 0.662279, -0.589603, + 0.901327, 0.980076, -0.823804, -0.997316, 0.998387, -0.547919, 0.932731, -0.869742, + -0.97941, 0.979603, 0.934784, -0.947689, -0.950645, -0.962226, 0.998866, -0.990042, + -0.547825, 0.689601}, std::vector{0}), TensorIteratorStaticParams( std::make_shared(), - 5, 10, 10, 10, - 0.f, ov::op::RecurrentSequenceDirection::REVERSE, TensorIteratorBodyType::RNN, + 5, + 10, + 10, + 10, + 0.f, + ov::op::RecurrentSequenceDirection::REVERSE, + TensorIteratorBodyType::RNN, ET, - std::vector{ - -1, 0.780309, -0.738585, -0.920481, 0.652872, 0.0641558, 0.91262, -0.0761474, 0.847476, -0.252158, - -0.690053, 0.784687, -0.946421, -0.416995, -0.202512, 0.614577, 0.254189, 0.81585, 0.112795, 0.679838, - -0.899024, 0.61247, 0.861631, -0.271941, 0.381896, -0.741371, 0.665373, -0.363293, 0.474405, 0.193539, - -0.272586, 0.589941, 0.396962, 0.643758, 0.798932, 0.663799, 0.819915, 0.949827, 0.312239, 0.623979, - -0.794512, -0.524943, -0.24131, 0.398472, -0.0301095, -0.169556, 0.277324, 0.51858, 0.115046, 0.386911, - 0.826518, -0.950774, 0.674757, -0.23359, -0.402458, -0.987406, -0.124885, 0.475875, -0.248479, -0.0135011, - -0.971921, -0.501126, -0.30573, 0.593373, 0.876799, -0.798956, 0.470805, 0.952874, 0.411772, 0.903529, - 0.855695, -0.179938, -0.32381, 0.538217, -0.330704, -0.834627, 0.797116, 0.57467, 0.434931, -0.11202, - 0.501784, 0.315797, -0.278605, -0.243354, 0.299264, -0.888726, -0.843481, -0.816194, 0.61021, -0.869385, - -0.551361, -0.695734, 0.361182, -0.748082, -0.485284, -0.124065, -0.780665, -0.370868, -0.298536, 0.522286, - -0.802298, 0.862921, -0.347842, -0.146729, -0.458638, 0.57622, -0.0933521, -0.833528, -0.859246, -0.340501, - -0.61579, 0.675731, -0.876629, 0.108469, 0.141222, -0.0757794, 0.897658, -0.310452, 0.768898, -0.13792, - 0.98896, 0.601007, 0.883268, -0.241041, -0.18915, -0.426225, -0.0989319, 0.530222, 0.159798, -0.243754, - 0.244787, 0.478345, 0.826766, 0.0642072, 0.0356427, -0.794826, -0.75666, 0.287393, -0.108071, -0.84735, - -0.694862, -0.840984, 0.758743, -0.677052, 0.845901, -0.992841, 0.605204, -0.392934, -0.510492, 0.536422, - 0.406964, 0.772353, 0.826283, -0.549379, -0.157033, -0.668275, -0.57833, 0.679797, 0.830901, 0.363183, - -0.181486, -0.555743, 0.6706, 0.553474, 0.474691, 0.717404, 0.945023, -0.180081, 0.194028, 0.476884, - -0.466581, 0.526266, 0.861006, 0.749377, -0.767673, 0.934578, -0.394025, 0.218032, -0.664486, 0.716852, - 0.452785, -0.869765, 0.0361971, 0.190971, -0.0841559, 0.184484, -0.361089, 0.639664, -0.814522, -0.64626, - -0.558575, -0.0518135, 0.834904, 0.983071, 0.208429, 0.841115, -0.266728, -0.984396, 0.310033, -0.663894, - -0.00708379, 0.581608, 0.635922, -0.266473, -0.742514, -0.605766, -0.958209, 0.267088, -0.0427639, -0.575115, - -0.469043, -0.622282, 0.77962, 0.432287, -0.862854, -0.508723, 0.840711, -0.59019, -0.0682369, 0.526142, - 0.0647325, 0.102044, -0.529739, -0.448041, -0.966308, -0.155126, -0.906004, -0.881601, -0.362032, -0.113877, - -0.662836, -0.397345, -0.101194, -0.0538374, 0.408442, 0.40128, 0.187299, 0.94587, 0.324356, 0.75563, - -0.171329, 0.59615, -0.724044, -0.477747, -0.546406, 0.064904, 0.389431, -0.512046, -0.609801, 0.580285, - -0.18924, -0.129838, 0.252768, 0.357634, -0.137093, -0.409645, 0.99457, -0.60545, 0.115919, -0.0537746, - -0.822487, -0.37496, 0.197357, -0.901543, -0.264034, -0.743536, -0.948014, 0.464231, -0.473613, 0.422959, - 0.354869, 0.641287, 0.582011, 0.21152, 0.00800619, -0.138603, -0.798317, -0.0269492, -0.19921, 0.174343, - -0.111682, -0.532153, 0.268423, -0.541535, -0.497098, 0.957141, -0.106795, -0.838224, -0.760405, -0.0744435, - 0.556972, -0.203011, 0.248964, 0.59689, -0.0109004, -0.925239, 0.438413, 0.386685, -0.369077, 0.673153, - -0.919203, 0.259205, -0.956505, 0.483536, -0.206068, 0.0391633, -0.0715966, 0.34823, 0.700705, -0.3679, - -0.368349, -0.665279, 0.36909, 0.636464, -0.634393, -0.931031, 0.0198778, 0.556591, 0.233121, 0.880379, - -0.544078, 0.565815, -0.177247, 0.388592, -0.498401, 0.0146546, -0.43808, -0.562895, 0.847527, 0.556404, - -0.481485, -0.54575, 0.586809, -0.645919, -0.411731, 0.634336, -0.107599, 0.699691, 0.879165, -0.605746, - 0.851844, -0.197677, -0.0638249, -0.550345, 0.427207, 0.281324, 0.82633, -0.00911417, -0.523082, 0.360537, - 0.295952, 0.537166, 0.235453, 0.414191, 0.340562, -0.0328213, 0.828018, -0.944312, 0.806772, -0.108092, - 0.089091, -0.960954, 0.725746, 0.269557, -0.000429476, -0.231468, -0.991745, 0.471178, -0.496647, 0.943754, - -0.815517, -0.069551, 0.263998, -0.226304, -0.684247, -0.0426104, 0.0763018, 0.903734, 0.36846, -0.0844384, - -0.0746106, -0.641445, 0.969822, 0.997518, 0.307509, 0.622212, -0.349354, -0.876697, -0.7214, -0.594663, - -0.919986, 0.409152, -0.603743, -0.4911, 0.703263, 0.314707, 0.612499, -0.369318, 0.614946, 0.770576, - 0.371061, 0.593678, 0.750314, -0.364852, 0.698688, 0.609751, 0.142622, -0.787519, 0.509953, 0.415293, - -0.640467, 0.701937, 0.649218, 0.824335, 0.711544, -0.57001, -0.32463, -0.921129, -0.52984, -0.750256, - -0.445129, -0.122558, 0.719862, -0.354157, 0.975094, 0.930568, 0.390521, 0.340562, -0.927739, 0.570913, - 0.0577081, 0.345886, -0.147266, -0.920045, 0.290715, 0.137354, 0.409865, 0.407486, -0.548271, 0.969365, - -0.763785, -0.589062, 0.906249, 0.869164, -0.322404, 0.860601, -0.792338, -0.74819, -0.11752, 0.246401, - 0.215602, -0.659965, -0.334239, -0.701839, 0.916408, -0.870779, -0.765881, -0.0786394, -0.25551, 0.903985, - 0.159976, -0.731893, -0.88472, 0.310355, 0.421346, -0.190523, 0.320507, 0.689287, 0.976754, 0.910255, - 0.467333, -0.411659, 0.410252, 0.00145024, -0.329416, 0.0472609, 0.792444, 0.874022, -0.108247, 0.452289, - 0.613927, -0.608009, 0.0925679, -0.701885, -0.625309, -0.233405, -0.885755, 0.356572, 0.775295, -0.312218, - -0.485195, -0.760842, -0.196276, -0.326445, -0.837129, 0.260253, 0.125437, -0.848069, -0.850426, 1}, - std::vector{ - -1, 0.0194419, -0.633291, 0.617539, 0.87557, -0.940787, 0.569968, -0.672245, -0.132298, 0.148535, - -0.565955, 0.661358, -0.40092, -0.278338, 0.738713, -0.975645, 0.350663, -0.0375085, 0.954534, -0.57807, - -0.573083, 0.887977, -0.347673, 0.972259, -0.125333, 0.930768, -0.484139, 0.519932, -0.615546, -0.434102, - 0.539075, -0.983636, -0.29435, -0.532884, -0.229788, -0.78175, -0.185304, -0.189241, 0.540048, 0.68374, - -0.213783, -0.0673415, -0.791954, -0.618463, 0.345361, -0.0507364, 0.603086, -0.504686, 0.482923, 1}, + std::vector{-1, 0.780309, -0.738585, -0.920481, 0.652872, 0.0641558, 0.91262, + -0.0761474, 0.847476, -0.252158, -0.690053, 0.784687, -0.946421, -0.416995, + -0.202512, 0.614577, 0.254189, 0.81585, 0.112795, 0.679838, -0.899024, + 0.61247, 0.861631, -0.271941, 0.381896, -0.741371, 0.665373, -0.363293, + 0.474405, 0.193539, -0.272586, 0.589941, 0.396962, 0.643758, 0.798932, + 0.663799, 0.819915, 0.949827, 0.312239, 0.623979, -0.794512, -0.524943, + -0.24131, 0.398472, -0.0301095, -0.169556, 0.277324, 0.51858, 0.115046, + 0.386911, 0.826518, -0.950774, 0.674757, -0.23359, -0.402458, -0.987406, + -0.124885, 0.475875, -0.248479, -0.0135011, -0.971921, -0.501126, -0.30573, + 0.593373, 0.876799, -0.798956, 0.470805, 0.952874, 0.411772, 0.903529, + 0.855695, -0.179938, -0.32381, 0.538217, -0.330704, -0.834627, 0.797116, + 0.57467, 0.434931, -0.11202, 0.501784, 0.315797, -0.278605, -0.243354, + 0.299264, -0.888726, -0.843481, -0.816194, 0.61021, -0.869385, -0.551361, + -0.695734, 0.361182, -0.748082, -0.485284, -0.124065, -0.780665, -0.370868, + -0.298536, 0.522286, -0.802298, 0.862921, -0.347842, -0.146729, -0.458638, + 0.57622, -0.0933521, -0.833528, -0.859246, -0.340501, -0.61579, 0.675731, + -0.876629, 0.108469, 0.141222, -0.0757794, 0.897658, -0.310452, 0.768898, + -0.13792, 0.98896, 0.601007, 0.883268, -0.241041, -0.18915, -0.426225, + -0.0989319, 0.530222, 0.159798, -0.243754, 0.244787, 0.478345, 0.826766, + 0.0642072, 0.0356427, -0.794826, -0.75666, 0.287393, -0.108071, -0.84735, + -0.694862, -0.840984, 0.758743, -0.677052, 0.845901, -0.992841, 0.605204, + -0.392934, -0.510492, 0.536422, 0.406964, 0.772353, 0.826283, -0.549379, + -0.157033, -0.668275, -0.57833, 0.679797, 0.830901, 0.363183, -0.181486, + -0.555743, 0.6706, 0.553474, 0.474691, 0.717404, 0.945023, -0.180081, + 0.194028, 0.476884, -0.466581, 0.526266, 0.861006, 0.749377, -0.767673, + 0.934578, -0.394025, 0.218032, -0.664486, 0.716852, 0.452785, -0.869765, + 0.0361971, 0.190971, -0.0841559, 0.184484, -0.361089, 0.639664, -0.814522, + -0.64626, -0.558575, -0.0518135, 0.834904, 0.983071, 0.208429, 0.841115, + -0.266728, -0.984396, 0.310033, -0.663894, -0.00708379, 0.581608, 0.635922, + -0.266473, -0.742514, -0.605766, -0.958209, 0.267088, -0.0427639, -0.575115, + -0.469043, -0.622282, 0.77962, 0.432287, -0.862854, -0.508723, 0.840711, + -0.59019, -0.0682369, 0.526142, 0.0647325, 0.102044, -0.529739, -0.448041, + -0.966308, -0.155126, -0.906004, -0.881601, -0.362032, -0.113877, -0.662836, + -0.397345, -0.101194, -0.0538374, 0.408442, 0.40128, 0.187299, 0.94587, + 0.324356, 0.75563, -0.171329, 0.59615, -0.724044, -0.477747, -0.546406, + 0.064904, 0.389431, -0.512046, -0.609801, 0.580285, -0.18924, -0.129838, + 0.252768, 0.357634, -0.137093, -0.409645, 0.99457, -0.60545, 0.115919, + -0.0537746, -0.822487, -0.37496, 0.197357, -0.901543, -0.264034, -0.743536, + -0.948014, 0.464231, -0.473613, 0.422959, 0.354869, 0.641287, 0.582011, + 0.21152, 0.00800619, -0.138603, -0.798317, -0.0269492, -0.19921, 0.174343, + -0.111682, -0.532153, 0.268423, -0.541535, -0.497098, 0.957141, -0.106795, + -0.838224, -0.760405, -0.0744435, 0.556972, -0.203011, 0.248964, 0.59689, + -0.0109004, -0.925239, 0.438413, 0.386685, -0.369077, 0.673153, -0.919203, + 0.259205, -0.956505, 0.483536, -0.206068, 0.0391633, -0.0715966, 0.34823, + 0.700705, -0.3679, -0.368349, -0.665279, 0.36909, 0.636464, -0.634393, + -0.931031, 0.0198778, 0.556591, 0.233121, 0.880379, -0.544078, 0.565815, + -0.177247, 0.388592, -0.498401, 0.0146546, -0.43808, -0.562895, 0.847527, + 0.556404, -0.481485, -0.54575, 0.586809, -0.645919, -0.411731, 0.634336, + -0.107599, 0.699691, 0.879165, -0.605746, 0.851844, -0.197677, -0.0638249, + -0.550345, 0.427207, 0.281324, 0.82633, -0.00911417, -0.523082, 0.360537, + 0.295952, 0.537166, 0.235453, 0.414191, 0.340562, -0.0328213, 0.828018, + -0.944312, 0.806772, -0.108092, 0.089091, -0.960954, 0.725746, 0.269557, + -0.000429476, -0.231468, -0.991745, 0.471178, -0.496647, 0.943754, -0.815517, + -0.069551, 0.263998, -0.226304, -0.684247, -0.0426104, 0.0763018, 0.903734, + 0.36846, -0.0844384, -0.0746106, -0.641445, 0.969822, 0.997518, 0.307509, + 0.622212, -0.349354, -0.876697, -0.7214, -0.594663, -0.919986, 0.409152, + -0.603743, -0.4911, 0.703263, 0.314707, 0.612499, -0.369318, 0.614946, + 0.770576, 0.371061, 0.593678, 0.750314, -0.364852, 0.698688, 0.609751, + 0.142622, -0.787519, 0.509953, 0.415293, -0.640467, 0.701937, 0.649218, + 0.824335, 0.711544, -0.57001, -0.32463, -0.921129, -0.52984, -0.750256, + -0.445129, -0.122558, 0.719862, -0.354157, 0.975094, 0.930568, 0.390521, + 0.340562, -0.927739, 0.570913, 0.0577081, 0.345886, -0.147266, -0.920045, + 0.290715, 0.137354, 0.409865, 0.407486, -0.548271, 0.969365, -0.763785, + -0.589062, 0.906249, 0.869164, -0.322404, 0.860601, -0.792338, -0.74819, + -0.11752, 0.246401, 0.215602, -0.659965, -0.334239, -0.701839, 0.916408, + -0.870779, -0.765881, -0.0786394, -0.25551, 0.903985, 0.159976, -0.731893, + -0.88472, 0.310355, 0.421346, -0.190523, 0.320507, 0.689287, 0.976754, + 0.910255, 0.467333, -0.411659, 0.410252, 0.00145024, -0.329416, 0.0472609, + 0.792444, 0.874022, -0.108247, 0.452289, 0.613927, -0.608009, 0.0925679, + -0.701885, -0.625309, -0.233405, -0.885755, 0.356572, 0.775295, -0.312218, + -0.485195, -0.760842, -0.196276, -0.326445, -0.837129, 0.260253, 0.125437, + -0.848069, -0.850426, 1}, + std::vector{-1, 0.0194419, -0.633291, 0.617539, 0.87557, -0.940787, 0.569968, -0.672245, + -0.132298, 0.148535, -0.565955, 0.661358, -0.40092, -0.278338, 0.738713, -0.975645, + 0.350663, -0.0375085, 0.954534, -0.57807, -0.573083, 0.887977, -0.347673, 0.972259, + -0.125333, 0.930768, -0.484139, 0.519932, -0.615546, -0.434102, 0.539075, -0.983636, + -0.29435, -0.532884, -0.229788, -0.78175, -0.185304, -0.189241, 0.540048, 0.68374, + -0.213783, -0.0673415, -0.791954, -0.618463, 0.345361, -0.0507364, 0.603086, -0.504686, + 0.482923, 1}, std::vector{0}, std::vector{10, 10, 10, 10, 10}, + std::vector{-1, -0.913489, 0.693052, 0.019041, 0.0899735, 0.267736, -0.83394, 0.521807, + 0.782117, 0.297318, -0.269702, -0.912514, 0.694362, -0.6763, -0.041225, 0.136946, + -0.95289, 0.0132674, -0.716936, 0.821415, 0.94, -0.545582, -0.79185, -0.897178, + -0.871876, -0.752293, -0.219966, -0.144664, 0.981552, 0.738669, -0.02916, 0.661658, + -0.0956457, 0.187724, 0.0764894, -0.644897, 0.984866, -0.831317, 0.995369, -0.687197, + 0.796943, 0.211748, 0.720581, 0.659591, -0.45931, -0.407646, -0.223375, 0.916773, + -0.833119, -0.0234757, -0.377257, -0.914253, 0.754316, -0.968665, 0.387126, -0.781003, + -0.481575, 0.10334, 0.376482, -0.540745, 0.596997, -0.946251, -0.802122, -0.393072, + 0.917111, 0.51311, 0.708101, 0.502501, -0.457544, 0.603489, 0.889737, 0.809528, + -0.698177, 0.980047, 0.614314, 0.577663, 0.877533, -0.0142305, -0.282326, 0.272626, + 0.154382, 0.950671, 0.537283, -0.405515, -0.12969, -0.90906, 0.442845, -0.982063, + 0.761418, 0.346103, 0.061014, -0.221426, 0.655872, -0.487476, 0.0797454, -0.686778, + 0.272147, 0.612127, -0.390442, 1}, + std::vector{-1, 0.141964, -0.595054, -0.275782, -0.0524186, -0.100404, 0.356214, 0.892551, + -0.595043, -0.477837, 0.216629, -0.672137, 0.0817748, 0.356531, 0.22735, -0.73296, + -0.206045, -0.286988, 0.61286, 0.287588, 0.220286, 0.251281, -0.327665, -0.648745, + 0.792805, 0.644284, -0.355157, -0.430805, 0.363233, -0.828104, -0.650602, 0.406752, + -0.0604071, 0.370716, 0.38019, -0.441156, 0.713, 0.756505, 0.41166, -0.0277081, + 0.498859, -0.673484, -0.801405, -0.900367, 0.436681, -0.758691, 0.138279, 0.677402, + -0.744722, 0.939746, 0.669847, -0.402517, -0.970535, 0.92845, -0.662595, 0.89595, + 0.169792, 0.574887, 0.805658, -0.042754, 0.419412, 0.372186, 0.730907, -0.750522, + 0.985225, -0.205298, 0.843882, 0.233976, 0.272515, -0.194655, -0.405147, -0.61521, + 0.276029, 0.837373, -0.765691, -0.61865, -0.531337, -0.0268663, 0.804463, 0.958094, + -0.625586, -0.878096, 0.134272, -0.0648465, -0.356075, 0.447334, 0.745843, -0.997586, + 0.994596, -0.581395, -0.525029, -0.603188, 0.657781, 0.665195, -0.472963, 0.3469, + -0.658721, -0.485042, -0.038087, 1}, + std::vector{-1, 0.230334, 0.179311, -0.134689, 0.535764, -0.0883306, 0.945667, 0.757567, -0.164013, 1}, std::vector{ - -1, -0.913489, 0.693052, 0.019041, 0.0899735, 0.267736, -0.83394, 0.521807, 0.782117, 0.297318, - -0.269702, -0.912514, 0.694362, -0.6763, -0.041225, 0.136946, -0.95289, 0.0132674, -0.716936, 0.821415, - 0.94, -0.545582, -0.79185, -0.897178, -0.871876, -0.752293, -0.219966, -0.144664, 0.981552, 0.738669, - -0.02916, 0.661658, -0.0956457, 0.187724, 0.0764894, -0.644897, 0.984866, -0.831317, 0.995369, -0.687197, - 0.796943, 0.211748, 0.720581, 0.659591, -0.45931, -0.407646, -0.223375, 0.916773, -0.833119, -0.0234757, - -0.377257, -0.914253, 0.754316, -0.968665, 0.387126, -0.781003, -0.481575, 0.10334, 0.376482, -0.540745, - 0.596997, -0.946251, -0.802122, -0.393072, 0.917111, 0.51311, 0.708101, 0.502501, -0.457544, 0.603489, - 0.889737, 0.809528, -0.698177, 0.980047, 0.614314, 0.577663, 0.877533, -0.0142305, -0.282326, 0.272626, - 0.154382, 0.950671, 0.537283, -0.405515, -0.12969, -0.90906, 0.442845, -0.982063, 0.761418, 0.346103, - 0.061014, -0.221426, 0.655872, -0.487476, 0.0797454, -0.686778, 0.272147, 0.612127, -0.390442, 1}, - std::vector{ - -1, 0.141964, -0.595054, -0.275782, -0.0524186, -0.100404, 0.356214, 0.892551, -0.595043, -0.477837, - 0.216629, -0.672137, 0.0817748, 0.356531, 0.22735, -0.73296, -0.206045, -0.286988, 0.61286, 0.287588, - 0.220286, 0.251281, -0.327665, -0.648745, 0.792805, 0.644284, -0.355157, -0.430805, 0.363233, -0.828104, - -0.650602, 0.406752, -0.0604071, 0.370716, 0.38019, -0.441156, 0.713, 0.756505, 0.41166, -0.0277081, - 0.498859, -0.673484, -0.801405, -0.900367, 0.436681, -0.758691, 0.138279, 0.677402, -0.744722, 0.939746, - 0.669847, -0.402517, -0.970535, 0.92845, -0.662595, 0.89595, 0.169792, 0.574887, 0.805658, -0.042754, - 0.419412, 0.372186, 0.730907, -0.750522, 0.985225, -0.205298, 0.843882, 0.233976, 0.272515, -0.194655, - -0.405147, -0.61521, 0.276029, 0.837373, -0.765691, -0.61865, -0.531337, -0.0268663, 0.804463, 0.958094, - -0.625586, -0.878096, 0.134272, -0.0648465, -0.356075, 0.447334, 0.745843, -0.997586, 0.994596, -0.581395, - -0.525029, -0.603188, 0.657781, 0.665195, -0.472963, 0.3469, -0.658721, -0.485042, -0.038087, 1}, - std::vector{ - -1, 0.230334, 0.179311, -0.134689, 0.535764, -0.0883306, 0.945667, 0.757567, -0.164013, 1}, - std::vector{ - 0.526906, -0.997383, -0.695943, 0.999682, -0.980027, -0.898274, 0.995111, 0.0799119, 0.363935, -0.0884402, - -0.990447, 0.842608, 0.657827, -0.362801, 0.295894, 0.222178, 0.972885, 0.957886, -0.376478, 0.504993, - 0.965053, -0.229597, -0.946319, 0.999672, 0.998961, -0.195694, 0.586567, -0.58356, 0.631116, 0.416555, - -0.725706, 0.0420496, -0.999482, -0.508284, 0.998452, -0.989286, 0.958206, 0.99888, -0.480881, 0.982364, - 0.346879, -0.687323, -0.160273, -0.0172902, -0.303112, -0.950921, 0.991803, -0.710375, -0.933744, 0.991481, - -0.659493, 0.754693, 0.754852, 0.236133, 0.989564, 0.999994, 0.684852, -0.369004, -0.847966, 0.979346, - 0.834702, 0.835757, -0.997023, 0.951418, -0.477717, 0.981288, 0.927471, 0.999848, 0.734415, 0.999904, - -0.991467, -0.766918, 0.62936, 0.964863, -0.857313, -0.0870588, 0.835937, 0.999409, 0.999204, 0.997886, - -0.999555, -0.592204, 0.971622, 0.798724, -0.568013, 0.283743, 0.828658, -0.549155, 0.834866, -0.133557, - 0.920764, 0.999356, 0.694179, -0.30478, 0.427957, 0.281501, 0.429332, -0.936185, 0.347986, 0.950708, - -0.888573, 0.608715, -0.999921, 0.828499, -0.150879, -0.301067, -0.976568, 0.999748, 0.284666, 0.983777, - -0.940115, -0.985955, 0.544464, 0.998682, -0.969063, -0.18267, 0.237068, 0.997719, -0.0337554, 0.905842, - -0.878285, 0.309217, -0.0181193, 0.525607, 0.973771, 0.999497, -0.995735, 0.998789, 0.789885, 0.999584, - -0.736026, -0.435883, -0.953494, 0.903303, -0.417712, 0.997552, -0.981539, 0.869809, 0.98394, 0.991402, - -0.988794, 0.999331, -0.158609, 0.780733, -0.969231, 0.909109, 0.999747, -0.381524, 0.972722, 0.994431, - 0.630485, 0.472457, 0.995772, 0.91051, 0.911919, -0.941698, 0.954069, -0.988044, 0.992782, -0.139916, - -0.566348, 0.763459, -0.0718403, -0.72653, 0.979029, -0.995935, 0.999778, -0.738847, 0.210184, -0.737883, - 0.988825, -0.816843, 0.0513971, -0.839016, 0.988178, -0.992621, 0.848743, -0.998577, -0.929295, -0.919254, - -0.43992, 0.93494, -0.647745, -0.780525, 0.918286, 0.992679, 0.912136, 0.383811, -0.994623, -0.820734, - 0.775965, 0.433662, -0.926421, 0.989989, -0.476612, -0.854611, 0.473324, 0.263526, 0.410454, -0.995444, - -0.979617, 0.971752, -0.698165, -0.513943, 0.855178, -0.725843, -0.954888, 0.940128, 0.956929, 0.996744, - -0.539351, 0.163227, 0.960576, -0.520992, -0.779952, -0.939853, -0.248751, -0.933185, 0.96781, 0.998035, - -0.748558, -0.422557, 0.652144, 0.289789, 0.942327, 0.989907, -0.541705, -0.967179, -0.992064, -0.679435, - 0.987373, 0.88219, -0.990581, 0.966343, 0.149118, 0.900446, 0.967235, 0.996815, -0.959944, 0.950417, - -0.998807, 0.981472, -0.715279, 0.854894, -0.575615, -0.996191, 0.938588, 0.99962, 0.997776, 0.996625, - -0.993116, -0.974635, 0.797837, 0.757842, 0.414458, -0.995602, 0.997473, -0.928389, 0.585003, 0.685336, - 0.35296, 0.999335, 0.815556, -0.978755, 0.977322, 0.862941, 0.844783, -0.999172, -0.737575, 0.868368, - 0.850968, -0.355691, -0.477411, 0.670716, 0.999938, -0.985769, 0.753579, -0.861071, -0.947635, -0.441339, - -0.636707, 0.958056, -0.917965, -0.888682, 0.887396, -0.469046, 0.878908, 0.343275, -0.953879, 0.983756, - -0.265801, -0.874482, 0.732147, 0.142205, 0.488677, 0.601925, 0.0526216, 0.707467, -0.793197, 0.99486, - -0.851224, -0.910939, 0.657066, 0.603613, 0.504114, -0.988843, 0.968051, 0.487372, -0.996597, -0.349508, - 0.351675, 0.738722, 0.784989, -0.98241, 0.901682, 0.0865038, -0.847449, 0.575283, 0.329635, 0.999976, - -0.637486, -0.843608, 0.551505, -0.177101, -0.372926, 0.935283, -0.990545, -0.149183, -0.491596, 0.541562, - 0.996025, 0.472454, -0.845026, 0.991427, -0.334852, 0.999497, -0.0331139, 0.0179286, -0.837703, 0.512776, - -0.984419, 0.979792, -0.974191, 0.925265, -0.135773, 0.0270891, 0.996536, 0.999985, 0.979748, 0.998403, - -0.993161, -0.996728, 0.638566, 0.991593, -0.560185, -0.999493, 0.993987, 0.271173, 0.98406, 0.322271, - -0.334357, 0.997101, 0.943976, -0.999868, 0.880896, 0.709814, 0.982917, -0.995932, -0.474997, 0.995407, - 0.96453, -0.753175, 0.651881, 0.526273, 0.902097, 0.992134, 0.507577, -0.999034, -0.996382, -0.673348, - 0.819122, 0.779549, -0.999686, 0.974422, 0.880611, 0.6546, 0.6598, 0.96634, -0.920738, -0.418959, - -0.954179, 0.87176, -0.330375, 0.223247, -0.100151, -0.310826, 0.93752, 0.996072, 0.883849, 0.902299, - 0.105549, 0.799733, 0.118137, 0.89021, -0.160378, -0.831619, -0.0241198, 0.723485, 0.984892, 0.21006, - -0.707005, -0.612093, -0.996712, 0.953598, 0.999635, -0.958756, 0.196832, -0.816948, -0.822502, -0.969466, - 0.440709, 0.915352, -0.987622, -0.756492, 0.811622, -0.999958, 0.999982, -0.47131, -0.907012, 0.897248, - -0.954296, 0.86897, 0.92591, -0.945222, 0.996168, -0.983258, 0.999693, -0.883999, -0.800457, 0.18094, - 0.985958, 0.362557, -0.882676, -0.598648, 0.887364, -0.970348, 0.756076, -0.993787, -0.968946, -0.118565, - -0.636271, 0.998778, -0.0656388, -0.527903, 0.990153, 0.781603, 0.999725, -0.246065, -0.97279, 0.986471, - 0.984443, -0.70469, 0.701, 0.981588, 0.982162, -0.994913, 0.99988, 0.698499, -0.996202, 0.541067, - -0.990485, 0.844747, -0.222405, -0.209739, 0.91219, -0.989144, 0.999699, 0.724279, -0.885552, 0.988889, - 0.58029, 0.759885, 0.99201, 0.818603, 0.873055, -0.884289, 0.99798, -0.965469, -0.480964, 0.475605, - -0.781967, 0.99447, 0.863794, -0.861781, 0.891732, -0.547791, 0.97225, -0.00379388, 0.342407, 0.92741}, - std::vector{ - 0.526906, -0.997383, -0.695943, 0.999682, -0.980027, -0.898274, 0.995111, 0.0799119, 0.363935, -0.0884402, - -0.888573, 0.608715, -0.999921, 0.828499, -0.150879, -0.301067, -0.976568, 0.999748, 0.284666, 0.983777, - -0.979617, 0.971752, -0.698165, -0.513943, 0.855178, -0.725843, -0.954888, 0.940128, 0.956929, 0.996744, - -0.851224, -0.910939, 0.657066, 0.603613, 0.504114, -0.988843, 0.968051, 0.487372, -0.996597, -0.349508, - 0.105549, 0.799733, 0.118137, 0.89021, -0.160378, -0.831619, -0.0241198, 0.723485, 0.984892, 0.21006}, + 0.526906, -0.997383, -0.695943, 0.999682, -0.980027, -0.898274, 0.995111, 0.0799119, + 0.363935, -0.0884402, -0.990447, 0.842608, 0.657827, -0.362801, 0.295894, 0.222178, + 0.972885, 0.957886, -0.376478, 0.504993, 0.965053, -0.229597, -0.946319, 0.999672, + 0.998961, -0.195694, 0.586567, -0.58356, 0.631116, 0.416555, -0.725706, 0.0420496, + -0.999482, -0.508284, 0.998452, -0.989286, 0.958206, 0.99888, -0.480881, 0.982364, + 0.346879, -0.687323, -0.160273, -0.0172902, -0.303112, -0.950921, 0.991803, -0.710375, + -0.933744, 0.991481, -0.659493, 0.754693, 0.754852, 0.236133, 0.989564, 0.999994, + 0.684852, -0.369004, -0.847966, 0.979346, 0.834702, 0.835757, -0.997023, 0.951418, + -0.477717, 0.981288, 0.927471, 0.999848, 0.734415, 0.999904, -0.991467, -0.766918, + 0.62936, 0.964863, -0.857313, -0.0870588, 0.835937, 0.999409, 0.999204, 0.997886, + -0.999555, -0.592204, 0.971622, 0.798724, -0.568013, 0.283743, 0.828658, -0.549155, + 0.834866, -0.133557, 0.920764, 0.999356, 0.694179, -0.30478, 0.427957, 0.281501, + 0.429332, -0.936185, 0.347986, 0.950708, -0.888573, 0.608715, -0.999921, 0.828499, + -0.150879, -0.301067, -0.976568, 0.999748, 0.284666, 0.983777, -0.940115, -0.985955, + 0.544464, 0.998682, -0.969063, -0.18267, 0.237068, 0.997719, -0.0337554, 0.905842, + -0.878285, 0.309217, -0.0181193, 0.525607, 0.973771, 0.999497, -0.995735, 0.998789, + 0.789885, 0.999584, -0.736026, -0.435883, -0.953494, 0.903303, -0.417712, 0.997552, + -0.981539, 0.869809, 0.98394, 0.991402, -0.988794, 0.999331, -0.158609, 0.780733, + -0.969231, 0.909109, 0.999747, -0.381524, 0.972722, 0.994431, 0.630485, 0.472457, + 0.995772, 0.91051, 0.911919, -0.941698, 0.954069, -0.988044, 0.992782, -0.139916, + -0.566348, 0.763459, -0.0718403, -0.72653, 0.979029, -0.995935, 0.999778, -0.738847, + 0.210184, -0.737883, 0.988825, -0.816843, 0.0513971, -0.839016, 0.988178, -0.992621, + 0.848743, -0.998577, -0.929295, -0.919254, -0.43992, 0.93494, -0.647745, -0.780525, + 0.918286, 0.992679, 0.912136, 0.383811, -0.994623, -0.820734, 0.775965, 0.433662, + -0.926421, 0.989989, -0.476612, -0.854611, 0.473324, 0.263526, 0.410454, -0.995444, + -0.979617, 0.971752, -0.698165, -0.513943, 0.855178, -0.725843, -0.954888, 0.940128, + 0.956929, 0.996744, -0.539351, 0.163227, 0.960576, -0.520992, -0.779952, -0.939853, + -0.248751, -0.933185, 0.96781, 0.998035, -0.748558, -0.422557, 0.652144, 0.289789, + 0.942327, 0.989907, -0.541705, -0.967179, -0.992064, -0.679435, 0.987373, 0.88219, + -0.990581, 0.966343, 0.149118, 0.900446, 0.967235, 0.996815, -0.959944, 0.950417, + -0.998807, 0.981472, -0.715279, 0.854894, -0.575615, -0.996191, 0.938588, 0.99962, + 0.997776, 0.996625, -0.993116, -0.974635, 0.797837, 0.757842, 0.414458, -0.995602, + 0.997473, -0.928389, 0.585003, 0.685336, 0.35296, 0.999335, 0.815556, -0.978755, + 0.977322, 0.862941, 0.844783, -0.999172, -0.737575, 0.868368, 0.850968, -0.355691, + -0.477411, 0.670716, 0.999938, -0.985769, 0.753579, -0.861071, -0.947635, -0.441339, + -0.636707, 0.958056, -0.917965, -0.888682, 0.887396, -0.469046, 0.878908, 0.343275, + -0.953879, 0.983756, -0.265801, -0.874482, 0.732147, 0.142205, 0.488677, 0.601925, + 0.0526216, 0.707467, -0.793197, 0.99486, -0.851224, -0.910939, 0.657066, 0.603613, + 0.504114, -0.988843, 0.968051, 0.487372, -0.996597, -0.349508, 0.351675, 0.738722, + 0.784989, -0.98241, 0.901682, 0.0865038, -0.847449, 0.575283, 0.329635, 0.999976, + -0.637486, -0.843608, 0.551505, -0.177101, -0.372926, 0.935283, -0.990545, -0.149183, + -0.491596, 0.541562, 0.996025, 0.472454, -0.845026, 0.991427, -0.334852, 0.999497, + -0.0331139, 0.0179286, -0.837703, 0.512776, -0.984419, 0.979792, -0.974191, 0.925265, + -0.135773, 0.0270891, 0.996536, 0.999985, 0.979748, 0.998403, -0.993161, -0.996728, + 0.638566, 0.991593, -0.560185, -0.999493, 0.993987, 0.271173, 0.98406, 0.322271, + -0.334357, 0.997101, 0.943976, -0.999868, 0.880896, 0.709814, 0.982917, -0.995932, + -0.474997, 0.995407, 0.96453, -0.753175, 0.651881, 0.526273, 0.902097, 0.992134, + 0.507577, -0.999034, -0.996382, -0.673348, 0.819122, 0.779549, -0.999686, 0.974422, + 0.880611, 0.6546, 0.6598, 0.96634, -0.920738, -0.418959, -0.954179, 0.87176, + -0.330375, 0.223247, -0.100151, -0.310826, 0.93752, 0.996072, 0.883849, 0.902299, + 0.105549, 0.799733, 0.118137, 0.89021, -0.160378, -0.831619, -0.0241198, 0.723485, + 0.984892, 0.21006, -0.707005, -0.612093, -0.996712, 0.953598, 0.999635, -0.958756, + 0.196832, -0.816948, -0.822502, -0.969466, 0.440709, 0.915352, -0.987622, -0.756492, + 0.811622, -0.999958, 0.999982, -0.47131, -0.907012, 0.897248, -0.954296, 0.86897, + 0.92591, -0.945222, 0.996168, -0.983258, 0.999693, -0.883999, -0.800457, 0.18094, + 0.985958, 0.362557, -0.882676, -0.598648, 0.887364, -0.970348, 0.756076, -0.993787, + -0.968946, -0.118565, -0.636271, 0.998778, -0.0656388, -0.527903, 0.990153, 0.781603, + 0.999725, -0.246065, -0.97279, 0.986471, 0.984443, -0.70469, 0.701, 0.981588, + 0.982162, -0.994913, 0.99988, 0.698499, -0.996202, 0.541067, -0.990485, 0.844747, + -0.222405, -0.209739, 0.91219, -0.989144, 0.999699, 0.724279, -0.885552, 0.988889, + 0.58029, 0.759885, 0.99201, 0.818603, 0.873055, -0.884289, 0.99798, -0.965469, + -0.480964, 0.475605, -0.781967, 0.99447, 0.863794, -0.861781, 0.891732, -0.547791, + 0.97225, -0.00379388, 0.342407, 0.92741}, + std::vector{0.526906, -0.997383, -0.695943, 0.999682, -0.980027, -0.898274, 0.995111, 0.0799119, + 0.363935, -0.0884402, -0.888573, 0.608715, -0.999921, 0.828499, -0.150879, -0.301067, + -0.976568, 0.999748, 0.284666, 0.983777, -0.979617, 0.971752, -0.698165, -0.513943, + 0.855178, -0.725843, -0.954888, 0.940128, 0.956929, 0.996744, -0.851224, -0.910939, + 0.657066, 0.603613, 0.504114, -0.988843, 0.968051, 0.487372, -0.996597, -0.349508, + 0.105549, 0.799733, 0.118137, 0.89021, -0.160378, -0.831619, -0.0241198, 0.723485, + 0.984892, 0.21006}, std::vector{0}), }; return params; @@ -1606,827 +1688,799 @@ template std::vector generateParamsBF16() { using T = typename ov::element_type_traits::value_type; - std::vector params { + std::vector params{ TensorIteratorStaticParams( std::make_shared(), - 5, 10, 10, 10, - 0.7f, ov::op::RecurrentSequenceDirection::FORWARD, TensorIteratorBodyType::LSTM, + 5, + 10, + 10, + 10, + 0.7f, + ov::op::RecurrentSequenceDirection::FORWARD, + TensorIteratorBodyType::LSTM, ET, std::vector{ - 1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, - 3.125, 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, - 8.625, 4.75, 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 1.25, - 5.8125, 7.03125, 9.25, 4.75, 5.125, 6, 4.875, 2.25, 9.4375, 2.78125, - 8, 8.1875, 7.4375, 9.6875, 8.25, 3.8125, 1.82812, 7.21875, 5.65625, 8.875, - 8.75, 9, 8.4375, 1.76562, 8.4375, 1.34375, 3.45312, 2.53125, 1.53125, 8.875, - 7.03125, 1.88281, 6.3125, 4.78125, 7.03125, 9.625, 4.6875, 5.8125, 2.78125, 7.21875, - 3.59375, 3.84375, 2.28125, 7.1875, 8, 8.5, 4.6875, 1.16406, 1.30469, 7.75, - 6.625, 9.875, 6.9375, 7.71875, 3.6875, 3.53125, 5, 8.125, 3, 1.92188, - 1.65625, 5, 5.21875, 9.125, 1.85938, 3.64062, 9.125, 3.59375, 2.0625, 2.15625, - 5.71875, 1.17188, 1.75, 7.125, 9.25, 2.90625, 9.1875, 3.375, 3.6875, 5.4375, - 6.25, 1.47656, 6.0625, 6.15625, 6.5, 2.3125, 9.625, 6.3125, 3.34375, 7.3125, - 3.07812, 1.92188, 5.8125, 4.71875, 9.5, 7.25, 5.4375, 4.71875, 5.875, 1.45312, - 7.875, 5.8125, 1.40625, 6.96875, 2.25, 5.625, 8.125, 9.5, 1.26562, 6.25, - 8.9375, 9.125, 5.875, 2.23438, 5.03125, 2.25, 9, 8.25, 4.375, 4.5625, - 5.84375, 2.48438, 6.875, 9.375, 4.25, 4.125, 6.125, 7.75, 6.75, 7.53125, - 2.125, 8.9375, 7.1875, 6.625, 6.8125, 7.75, 4.1875, 4.125, 7.875, 3.42188, - 4.1875, 9.0625, 7.75, 4.84375, 8.875, 9.625, 1.10156, 6.96875, 5.46875, 6.59375, - 1.66406, 2.03125, 8.0625, 9.5, 1.57812, 5.0625, 4.1875, 6.1875, 9.5, 4.6875, - 4.40625, 3.125, 7.875, 9.125, 7.9375, 6.15625, 3.71875, 1.02344, 7.9375, 6.5625, - 2.375, 3.9375, 6.1875, 5.75, 1.07812, 9, 7.375, 4.1875, 5.25, 9.125, - 7.875, 6.625, 5.1875, 1.14062, 3.40625, 9.375, 8.5, 7.1875, 5.9375, 10, - 1.625, 2.54688, 5.25, 2.21875, 7.6875, 9.375, 2.71875, 7.25, 5.1875, 1.59375, - 3.0625, 7.8125, 5.5625, 7.78125, 2.875, 9.25, 1.4375, 7.375, 5.65625, 2.125, - 2.54688, 1.17188, 4.5625, 1.23438, 1.96875, 1.25, 5.5625, 3.21875, 1.92188, 8.75, - 3.59375, 5.84375, 3.07812, 5.96875, 9.6875, 8.5625, 3.5, 2.125, 3.09375, 3.5, - 1.82031, 6.25, 6.125, 9.75, 4.75, 6.0625, 4.3125, 1.16406, 8.3125, 8.1875, - 3.59375, 3.09375, 7.4375, 8.25, 6.5, 4.5, 4.8125, 8.75, 7.75, 7.71875, - 4.84375, 6, 4.84375, 2.21875, 4.25, 1.53906, 2.375, 2.09375, 9.375, 1.39844, - 9.25, 1.96875, 8, 3.03125, 6.5625, 7.40625, 1.32031, 6.03125, 6.875, 1.10938, - 2.15625, 1.64062, 3.65625, 9.6875, 4.25, 6.125, 3.46875, 2.82812, 1.66406, 3.26562, - 2.375, 7.6875, 2.45312, 2.75, 9.4375, 6.21875, 4.3125, 9.75, 1.45312, 8.625, - 7.65625, 3.15625, 3.6875, 5.4375, 2.84375, 6.5625, 9.8125, 8.4375, 9, 2.40625, - 7.8125, 1.16406, 6.875, 1.625, 1.35938, 5.375, 8.3125, 6.4375, 7.875, 6.125, - 5.09375, 3.84375, 5.78125, 9.875, 1.98438, 6.1875, 2.3125, 4.40625, 5.5625, 5.9375, - 2.9375, 7.6875, 9.25, 7, 5.15625, 3.375, 2.1875, 1.59375, 7.875, 4.3125, - 2.90625, 6.65625, 1.67188, 2.89062, 1.85938, 7.75, 2.45312, 1.59375, 4.1875, 3.34375, - 1.85938, 8.25, 2.28125, 2.73438, 9.375, 6.75, 6.1875, 5.71875, 8.5, 9.3125, - 6.625, 3.375, 3.90625, 1.59375, 7.5625, 7.625, 5.6875, 7.9375, 7.625, 9.125, - 2.48438, 9.375, 7.1875, 1.125, 4.8125, 3.09375, 7.5625, 6.5625, 7.8125, 9.5, - 4.5625, 9.5, 9.3125, 6, 2.82812, 9.25, 1.07031, 6.75, 9.3125, 4.5, - 3.65625, 5.375, 2.5, 6.4375, 1.21875, 5.9375, 5.0625, 9.3125, 8.25, 9.25, - 4.3125, 4.5625, 6.46875, 9.625, 1.3125, 2.5625, 4.1875, 2.125, 1.70312, 2.21875, - 7.25, 5.5625, 1.10938, 1.1875, 5.125, 9.5, 9.625, 8.4375, 4, 1.13281, - 5.25, 2.57812, 1.94531, 3.98438, 5.5, 2.17188, 9, 8.25, 5.8125, 4.09375, - 3.53125, 9.4375, 4.1875, 6.25, 9.0625, 8.875, 3.17188, 8.625, 1.21875, 9.125, - 9.6875, 5.125, 4.875, 5.90625, 4.125, 8.125, 6.1875, 3.5625, 2.125, 5.40625, - 9.5, 6.375, 3.8125, 1.14062, 9.5625, 6.3125, 2.96875, 4.875, 3.23438, 8.25, - 8.75, 3.84375, 3.125, 9, 8.3125, 6.1875, 5.875, 2.65625, 2.71875, 8.0625, - 6.3125, 6.5, 1.42969, 1.48438, 1.14062, 4.78125, 1.44531, 7.125, 4.59375, 10}, - std::vector{ - 1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, - 3.125, 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, - 8.625, 4.75, 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 1.25, - 5.8125, 7.03125, 9.25, 4.75, 5.125, 6, 4.875, 2.25, 9.4375, 2.78125, - 8, 8.1875, 7.4375, 9.6875, 8.25, 3.8125, 1.82812, 7.21875, 5.65625, 10}, - std::vector{ - 1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, - 3.125, 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, - 8.625, 4.75, 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 1.25, - 5.8125, 7.03125, 9.25, 4.75, 5.125, 6, 4.875, 2.25, 9.4375, 2.78125, - 8, 8.1875, 7.4375, 9.6875, 8.25, 3.8125, 1.82812, 7.21875, 5.65625, 10}, + 1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, 3.125, + 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, 8.625, 4.75, + 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 1.25, 5.8125, 7.03125, 9.25, + 4.75, 5.125, 6, 4.875, 2.25, 9.4375, 2.78125, 8, 8.1875, 7.4375, 9.6875, + 8.25, 3.8125, 1.82812, 7.21875, 5.65625, 8.875, 8.75, 9, 8.4375, 1.76562, 8.4375, + 1.34375, 3.45312, 2.53125, 1.53125, 8.875, 7.03125, 1.88281, 6.3125, 4.78125, 7.03125, 9.625, + 4.6875, 5.8125, 2.78125, 7.21875, 3.59375, 3.84375, 2.28125, 7.1875, 8, 8.5, 4.6875, + 1.16406, 1.30469, 7.75, 6.625, 9.875, 6.9375, 7.71875, 3.6875, 3.53125, 5, 8.125, + 3, 1.92188, 1.65625, 5, 5.21875, 9.125, 1.85938, 3.64062, 9.125, 3.59375, 2.0625, + 2.15625, 5.71875, 1.17188, 1.75, 7.125, 9.25, 2.90625, 9.1875, 3.375, 3.6875, 5.4375, + 6.25, 1.47656, 6.0625, 6.15625, 6.5, 2.3125, 9.625, 6.3125, 3.34375, 7.3125, 3.07812, + 1.92188, 5.8125, 4.71875, 9.5, 7.25, 5.4375, 4.71875, 5.875, 1.45312, 7.875, 5.8125, + 1.40625, 6.96875, 2.25, 5.625, 8.125, 9.5, 1.26562, 6.25, 8.9375, 9.125, 5.875, + 2.23438, 5.03125, 2.25, 9, 8.25, 4.375, 4.5625, 5.84375, 2.48438, 6.875, 9.375, + 4.25, 4.125, 6.125, 7.75, 6.75, 7.53125, 2.125, 8.9375, 7.1875, 6.625, 6.8125, + 7.75, 4.1875, 4.125, 7.875, 3.42188, 4.1875, 9.0625, 7.75, 4.84375, 8.875, 9.625, + 1.10156, 6.96875, 5.46875, 6.59375, 1.66406, 2.03125, 8.0625, 9.5, 1.57812, 5.0625, 4.1875, + 6.1875, 9.5, 4.6875, 4.40625, 3.125, 7.875, 9.125, 7.9375, 6.15625, 3.71875, 1.02344, + 7.9375, 6.5625, 2.375, 3.9375, 6.1875, 5.75, 1.07812, 9, 7.375, 4.1875, 5.25, + 9.125, 7.875, 6.625, 5.1875, 1.14062, 3.40625, 9.375, 8.5, 7.1875, 5.9375, 10, + 1.625, 2.54688, 5.25, 2.21875, 7.6875, 9.375, 2.71875, 7.25, 5.1875, 1.59375, 3.0625, + 7.8125, 5.5625, 7.78125, 2.875, 9.25, 1.4375, 7.375, 5.65625, 2.125, 2.54688, 1.17188, + 4.5625, 1.23438, 1.96875, 1.25, 5.5625, 3.21875, 1.92188, 8.75, 3.59375, 5.84375, 3.07812, + 5.96875, 9.6875, 8.5625, 3.5, 2.125, 3.09375, 3.5, 1.82031, 6.25, 6.125, 9.75, + 4.75, 6.0625, 4.3125, 1.16406, 8.3125, 8.1875, 3.59375, 3.09375, 7.4375, 8.25, 6.5, + 4.5, 4.8125, 8.75, 7.75, 7.71875, 4.84375, 6, 4.84375, 2.21875, 4.25, 1.53906, + 2.375, 2.09375, 9.375, 1.39844, 9.25, 1.96875, 8, 3.03125, 6.5625, 7.40625, 1.32031, + 6.03125, 6.875, 1.10938, 2.15625, 1.64062, 3.65625, 9.6875, 4.25, 6.125, 3.46875, 2.82812, + 1.66406, 3.26562, 2.375, 7.6875, 2.45312, 2.75, 9.4375, 6.21875, 4.3125, 9.75, 1.45312, + 8.625, 7.65625, 3.15625, 3.6875, 5.4375, 2.84375, 6.5625, 9.8125, 8.4375, 9, 2.40625, + 7.8125, 1.16406, 6.875, 1.625, 1.35938, 5.375, 8.3125, 6.4375, 7.875, 6.125, 5.09375, + 3.84375, 5.78125, 9.875, 1.98438, 6.1875, 2.3125, 4.40625, 5.5625, 5.9375, 2.9375, 7.6875, + 9.25, 7, 5.15625, 3.375, 2.1875, 1.59375, 7.875, 4.3125, 2.90625, 6.65625, 1.67188, + 2.89062, 1.85938, 7.75, 2.45312, 1.59375, 4.1875, 3.34375, 1.85938, 8.25, 2.28125, 2.73438, + 9.375, 6.75, 6.1875, 5.71875, 8.5, 9.3125, 6.625, 3.375, 3.90625, 1.59375, 7.5625, + 7.625, 5.6875, 7.9375, 7.625, 9.125, 2.48438, 9.375, 7.1875, 1.125, 4.8125, 3.09375, + 7.5625, 6.5625, 7.8125, 9.5, 4.5625, 9.5, 9.3125, 6, 2.82812, 9.25, 1.07031, + 6.75, 9.3125, 4.5, 3.65625, 5.375, 2.5, 6.4375, 1.21875, 5.9375, 5.0625, 9.3125, + 8.25, 9.25, 4.3125, 4.5625, 6.46875, 9.625, 1.3125, 2.5625, 4.1875, 2.125, 1.70312, + 2.21875, 7.25, 5.5625, 1.10938, 1.1875, 5.125, 9.5, 9.625, 8.4375, 4, 1.13281, + 5.25, 2.57812, 1.94531, 3.98438, 5.5, 2.17188, 9, 8.25, 5.8125, 4.09375, 3.53125, + 9.4375, 4.1875, 6.25, 9.0625, 8.875, 3.17188, 8.625, 1.21875, 9.125, 9.6875, 5.125, + 4.875, 5.90625, 4.125, 8.125, 6.1875, 3.5625, 2.125, 5.40625, 9.5, 6.375, 3.8125, + 1.14062, 9.5625, 6.3125, 2.96875, 4.875, 3.23438, 8.25, 8.75, 3.84375, 3.125, 9, + 8.3125, 6.1875, 5.875, 2.65625, 2.71875, 8.0625, 6.3125, 6.5, 1.42969, 1.48438, 1.14062, + 4.78125, 1.44531, 7.125, 4.59375, 10}, + std::vector{1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, + 3.125, 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, + 8.625, 4.75, 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 1.25, + 5.8125, 7.03125, 9.25, 4.75, 5.125, 6, 4.875, 2.25, 9.4375, 2.78125, + 8, 8.1875, 7.4375, 9.6875, 8.25, 3.8125, 1.82812, 7.21875, 5.65625, 10}, + std::vector{1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, + 3.125, 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, + 8.625, 4.75, 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 1.25, + 5.8125, 7.03125, 9.25, 4.75, 5.125, 6, 4.875, 2.25, 9.4375, 2.78125, + 8, 8.1875, 7.4375, 9.6875, 8.25, 3.8125, 1.82812, 7.21875, 5.65625, 10}, std::vector{10, 10, 10, 10, 10}, std::vector{ - 1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, - 3.125, 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, - 8.625, 4.75, 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 1.25, - 5.8125, 7.03125, 9.25, 4.75, 5.125, 6, 4.875, 2.25, 9.4375, 2.78125, - 8, 8.1875, 7.4375, 9.6875, 8.25, 3.8125, 1.82812, 7.21875, 5.65625, 8.875, - 8.75, 9, 8.4375, 1.76562, 8.4375, 1.34375, 3.45312, 2.53125, 1.53125, 8.875, - 7.03125, 1.88281, 6.3125, 4.78125, 7.03125, 9.625, 4.6875, 5.8125, 2.78125, 7.21875, - 3.59375, 3.84375, 2.28125, 7.1875, 8, 8.5, 4.6875, 1.16406, 1.30469, 7.75, - 6.625, 9.875, 6.9375, 7.71875, 3.6875, 3.53125, 5, 8.125, 3, 1.92188, - 1.65625, 5, 5.21875, 9.125, 1.85938, 3.64062, 9.125, 3.59375, 2.0625, 2.15625, - 5.71875, 1.17188, 1.75, 7.125, 9.25, 2.90625, 9.1875, 3.375, 3.6875, 5.4375, - 6.25, 1.47656, 6.0625, 6.15625, 6.5, 2.3125, 9.625, 6.3125, 3.34375, 7.3125, - 3.07812, 1.92188, 5.8125, 4.71875, 9.5, 7.25, 5.4375, 4.71875, 5.875, 1.45312, - 7.875, 5.8125, 1.40625, 6.96875, 2.25, 5.625, 8.125, 9.5, 1.26562, 6.25, - 8.9375, 9.125, 5.875, 2.23438, 5.03125, 2.25, 9, 8.25, 4.375, 4.5625, - 5.84375, 2.48438, 6.875, 9.375, 4.25, 4.125, 6.125, 7.75, 6.75, 7.53125, - 2.125, 8.9375, 7.1875, 6.625, 6.8125, 7.75, 4.1875, 4.125, 7.875, 3.42188, - 4.1875, 9.0625, 7.75, 4.84375, 8.875, 9.625, 1.10156, 6.96875, 5.46875, 6.59375, - 1.66406, 2.03125, 8.0625, 9.5, 1.57812, 5.0625, 4.1875, 6.1875, 9.5, 4.6875, - 4.40625, 3.125, 7.875, 9.125, 7.9375, 6.15625, 3.71875, 1.02344, 7.9375, 6.5625, - 2.375, 3.9375, 6.1875, 5.75, 1.07812, 9, 7.375, 4.1875, 5.25, 9.125, - 7.875, 6.625, 5.1875, 1.14062, 3.40625, 9.375, 8.5, 7.1875, 5.9375, 10, - 1.625, 2.54688, 5.25, 2.21875, 7.6875, 9.375, 2.71875, 7.25, 5.1875, 1.59375, - 3.0625, 7.8125, 5.5625, 7.78125, 2.875, 9.25, 1.4375, 7.375, 5.65625, 2.125, - 2.54688, 1.17188, 4.5625, 1.23438, 1.96875, 1.25, 5.5625, 3.21875, 1.92188, 8.75, - 3.59375, 5.84375, 3.07812, 5.96875, 9.6875, 8.5625, 3.5, 2.125, 3.09375, 3.5, - 1.82031, 6.25, 6.125, 9.75, 4.75, 6.0625, 4.3125, 1.16406, 8.3125, 8.1875, - 3.59375, 3.09375, 7.4375, 8.25, 6.5, 4.5, 4.8125, 8.75, 7.75, 7.71875, - 4.84375, 6, 4.84375, 2.21875, 4.25, 1.53906, 2.375, 2.09375, 9.375, 1.39844, - 9.25, 1.96875, 8, 3.03125, 6.5625, 7.40625, 1.32031, 6.03125, 6.875, 1.10938, - 2.15625, 1.64062, 3.65625, 9.6875, 4.25, 6.125, 3.46875, 2.82812, 1.66406, 3.26562, - 2.375, 7.6875, 2.45312, 2.75, 9.4375, 6.21875, 4.3125, 9.75, 1.45312, 8.625, - 7.65625, 3.15625, 3.6875, 5.4375, 2.84375, 6.5625, 9.8125, 8.4375, 9, 2.40625, - 7.8125, 1.16406, 6.875, 1.625, 1.35938, 5.375, 8.3125, 6.4375, 7.875, 6.125, - 5.09375, 3.84375, 5.78125, 9.875, 1.98438, 6.1875, 2.3125, 4.40625, 5.5625, 5.9375, - 2.9375, 7.6875, 9.25, 7, 5.15625, 3.375, 2.1875, 1.59375, 7.875, 4.3125, - 2.90625, 6.65625, 1.67188, 2.89062, 1.85938, 7.75, 2.45312, 1.59375, 4.1875, 3.34375, - 1.85938, 8.25, 2.28125, 2.73438, 9.375, 6.75, 6.1875, 5.71875, 8.5, 9.3125, - 6.625, 3.375, 3.90625, 1.59375, 7.5625, 7.625, 5.6875, 7.9375, 7.625, 9.125, - 2.48438, 9.375, 7.1875, 1.125, 4.8125, 3.09375, 7.5625, 6.5625, 7.8125, 10}, + 1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, 3.125, + 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, 8.625, 4.75, + 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 1.25, 5.8125, 7.03125, 9.25, + 4.75, 5.125, 6, 4.875, 2.25, 9.4375, 2.78125, 8, 8.1875, 7.4375, 9.6875, + 8.25, 3.8125, 1.82812, 7.21875, 5.65625, 8.875, 8.75, 9, 8.4375, 1.76562, 8.4375, + 1.34375, 3.45312, 2.53125, 1.53125, 8.875, 7.03125, 1.88281, 6.3125, 4.78125, 7.03125, 9.625, + 4.6875, 5.8125, 2.78125, 7.21875, 3.59375, 3.84375, 2.28125, 7.1875, 8, 8.5, 4.6875, + 1.16406, 1.30469, 7.75, 6.625, 9.875, 6.9375, 7.71875, 3.6875, 3.53125, 5, 8.125, + 3, 1.92188, 1.65625, 5, 5.21875, 9.125, 1.85938, 3.64062, 9.125, 3.59375, 2.0625, + 2.15625, 5.71875, 1.17188, 1.75, 7.125, 9.25, 2.90625, 9.1875, 3.375, 3.6875, 5.4375, + 6.25, 1.47656, 6.0625, 6.15625, 6.5, 2.3125, 9.625, 6.3125, 3.34375, 7.3125, 3.07812, + 1.92188, 5.8125, 4.71875, 9.5, 7.25, 5.4375, 4.71875, 5.875, 1.45312, 7.875, 5.8125, + 1.40625, 6.96875, 2.25, 5.625, 8.125, 9.5, 1.26562, 6.25, 8.9375, 9.125, 5.875, + 2.23438, 5.03125, 2.25, 9, 8.25, 4.375, 4.5625, 5.84375, 2.48438, 6.875, 9.375, + 4.25, 4.125, 6.125, 7.75, 6.75, 7.53125, 2.125, 8.9375, 7.1875, 6.625, 6.8125, + 7.75, 4.1875, 4.125, 7.875, 3.42188, 4.1875, 9.0625, 7.75, 4.84375, 8.875, 9.625, + 1.10156, 6.96875, 5.46875, 6.59375, 1.66406, 2.03125, 8.0625, 9.5, 1.57812, 5.0625, 4.1875, + 6.1875, 9.5, 4.6875, 4.40625, 3.125, 7.875, 9.125, 7.9375, 6.15625, 3.71875, 1.02344, + 7.9375, 6.5625, 2.375, 3.9375, 6.1875, 5.75, 1.07812, 9, 7.375, 4.1875, 5.25, + 9.125, 7.875, 6.625, 5.1875, 1.14062, 3.40625, 9.375, 8.5, 7.1875, 5.9375, 10, + 1.625, 2.54688, 5.25, 2.21875, 7.6875, 9.375, 2.71875, 7.25, 5.1875, 1.59375, 3.0625, + 7.8125, 5.5625, 7.78125, 2.875, 9.25, 1.4375, 7.375, 5.65625, 2.125, 2.54688, 1.17188, + 4.5625, 1.23438, 1.96875, 1.25, 5.5625, 3.21875, 1.92188, 8.75, 3.59375, 5.84375, 3.07812, + 5.96875, 9.6875, 8.5625, 3.5, 2.125, 3.09375, 3.5, 1.82031, 6.25, 6.125, 9.75, + 4.75, 6.0625, 4.3125, 1.16406, 8.3125, 8.1875, 3.59375, 3.09375, 7.4375, 8.25, 6.5, + 4.5, 4.8125, 8.75, 7.75, 7.71875, 4.84375, 6, 4.84375, 2.21875, 4.25, 1.53906, + 2.375, 2.09375, 9.375, 1.39844, 9.25, 1.96875, 8, 3.03125, 6.5625, 7.40625, 1.32031, + 6.03125, 6.875, 1.10938, 2.15625, 1.64062, 3.65625, 9.6875, 4.25, 6.125, 3.46875, 2.82812, + 1.66406, 3.26562, 2.375, 7.6875, 2.45312, 2.75, 9.4375, 6.21875, 4.3125, 9.75, 1.45312, + 8.625, 7.65625, 3.15625, 3.6875, 5.4375, 2.84375, 6.5625, 9.8125, 8.4375, 9, 2.40625, + 7.8125, 1.16406, 6.875, 1.625, 1.35938, 5.375, 8.3125, 6.4375, 7.875, 6.125, 5.09375, + 3.84375, 5.78125, 9.875, 1.98438, 6.1875, 2.3125, 4.40625, 5.5625, 5.9375, 2.9375, 7.6875, + 9.25, 7, 5.15625, 3.375, 2.1875, 1.59375, 7.875, 4.3125, 2.90625, 6.65625, 1.67188, + 2.89062, 1.85938, 7.75, 2.45312, 1.59375, 4.1875, 3.34375, 1.85938, 8.25, 2.28125, 2.73438, + 9.375, 6.75, 6.1875, 5.71875, 8.5, 9.3125, 6.625, 3.375, 3.90625, 1.59375, 7.5625, + 7.625, 5.6875, 7.9375, 7.625, 9.125, 2.48438, 9.375, 7.1875, 1.125, 4.8125, 3.09375, + 7.5625, 6.5625, 7.8125, 10}, std::vector{ - 1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, - 3.125, 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, - 8.625, 4.75, 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 1.25, - 5.8125, 7.03125, 9.25, 4.75, 5.125, 6, 4.875, 2.25, 9.4375, 2.78125, - 8, 8.1875, 7.4375, 9.6875, 8.25, 3.8125, 1.82812, 7.21875, 5.65625, 8.875, - 8.75, 9, 8.4375, 1.76562, 8.4375, 1.34375, 3.45312, 2.53125, 1.53125, 8.875, - 7.03125, 1.88281, 6.3125, 4.78125, 7.03125, 9.625, 4.6875, 5.8125, 2.78125, 7.21875, - 3.59375, 3.84375, 2.28125, 7.1875, 8, 8.5, 4.6875, 1.16406, 1.30469, 7.75, - 6.625, 9.875, 6.9375, 7.71875, 3.6875, 3.53125, 5, 8.125, 3, 1.92188, - 1.65625, 5, 5.21875, 9.125, 1.85938, 3.64062, 9.125, 3.59375, 2.0625, 2.15625, - 5.71875, 1.17188, 1.75, 7.125, 9.25, 2.90625, 9.1875, 3.375, 3.6875, 5.4375, - 6.25, 1.47656, 6.0625, 6.15625, 6.5, 2.3125, 9.625, 6.3125, 3.34375, 7.3125, - 3.07812, 1.92188, 5.8125, 4.71875, 9.5, 7.25, 5.4375, 4.71875, 5.875, 1.45312, - 7.875, 5.8125, 1.40625, 6.96875, 2.25, 5.625, 8.125, 9.5, 1.26562, 6.25, - 8.9375, 9.125, 5.875, 2.23438, 5.03125, 2.25, 9, 8.25, 4.375, 4.5625, - 5.84375, 2.48438, 6.875, 9.375, 4.25, 4.125, 6.125, 7.75, 6.75, 7.53125, - 2.125, 8.9375, 7.1875, 6.625, 6.8125, 7.75, 4.1875, 4.125, 7.875, 3.42188, - 4.1875, 9.0625, 7.75, 4.84375, 8.875, 9.625, 1.10156, 6.96875, 5.46875, 6.59375, - 1.66406, 2.03125, 8.0625, 9.5, 1.57812, 5.0625, 4.1875, 6.1875, 9.5, 4.6875, - 4.40625, 3.125, 7.875, 9.125, 7.9375, 6.15625, 3.71875, 1.02344, 7.9375, 6.5625, - 2.375, 3.9375, 6.1875, 5.75, 1.07812, 9, 7.375, 4.1875, 5.25, 9.125, - 7.875, 6.625, 5.1875, 1.14062, 3.40625, 9.375, 8.5, 7.1875, 5.9375, 10, - 1.625, 2.54688, 5.25, 2.21875, 7.6875, 9.375, 2.71875, 7.25, 5.1875, 1.59375, - 3.0625, 7.8125, 5.5625, 7.78125, 2.875, 9.25, 1.4375, 7.375, 5.65625, 2.125, - 2.54688, 1.17188, 4.5625, 1.23438, 1.96875, 1.25, 5.5625, 3.21875, 1.92188, 8.75, - 3.59375, 5.84375, 3.07812, 5.96875, 9.6875, 8.5625, 3.5, 2.125, 3.09375, 3.5, - 1.82031, 6.25, 6.125, 9.75, 4.75, 6.0625, 4.3125, 1.16406, 8.3125, 8.1875, - 3.59375, 3.09375, 7.4375, 8.25, 6.5, 4.5, 4.8125, 8.75, 7.75, 7.71875, - 4.84375, 6, 4.84375, 2.21875, 4.25, 1.53906, 2.375, 2.09375, 9.375, 1.39844, - 9.25, 1.96875, 8, 3.03125, 6.5625, 7.40625, 1.32031, 6.03125, 6.875, 1.10938, - 2.15625, 1.64062, 3.65625, 9.6875, 4.25, 6.125, 3.46875, 2.82812, 1.66406, 3.26562, - 2.375, 7.6875, 2.45312, 2.75, 9.4375, 6.21875, 4.3125, 9.75, 1.45312, 8.625, - 7.65625, 3.15625, 3.6875, 5.4375, 2.84375, 6.5625, 9.8125, 8.4375, 9, 2.40625, - 7.8125, 1.16406, 6.875, 1.625, 1.35938, 5.375, 8.3125, 6.4375, 7.875, 6.125, - 5.09375, 3.84375, 5.78125, 9.875, 1.98438, 6.1875, 2.3125, 4.40625, 5.5625, 5.9375, - 2.9375, 7.6875, 9.25, 7, 5.15625, 3.375, 2.1875, 1.59375, 7.875, 4.3125, - 2.90625, 6.65625, 1.67188, 2.89062, 1.85938, 7.75, 2.45312, 1.59375, 4.1875, 3.34375, - 1.85938, 8.25, 2.28125, 2.73438, 9.375, 6.75, 6.1875, 5.71875, 8.5, 9.3125, - 6.625, 3.375, 3.90625, 1.59375, 7.5625, 7.625, 5.6875, 7.9375, 7.625, 9.125, - 2.48438, 9.375, 7.1875, 1.125, 4.8125, 3.09375, 7.5625, 6.5625, 7.8125, 10}, - std::vector{ - 1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, - 3.125, 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, - 8.625, 4.75, 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 1.25, - 5.8125, 7.03125, 9.25, 4.75, 5.125, 6, 4.875, 2.25, 9.4375, 10}, + 1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, 3.125, + 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, 8.625, 4.75, + 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 1.25, 5.8125, 7.03125, 9.25, + 4.75, 5.125, 6, 4.875, 2.25, 9.4375, 2.78125, 8, 8.1875, 7.4375, 9.6875, + 8.25, 3.8125, 1.82812, 7.21875, 5.65625, 8.875, 8.75, 9, 8.4375, 1.76562, 8.4375, + 1.34375, 3.45312, 2.53125, 1.53125, 8.875, 7.03125, 1.88281, 6.3125, 4.78125, 7.03125, 9.625, + 4.6875, 5.8125, 2.78125, 7.21875, 3.59375, 3.84375, 2.28125, 7.1875, 8, 8.5, 4.6875, + 1.16406, 1.30469, 7.75, 6.625, 9.875, 6.9375, 7.71875, 3.6875, 3.53125, 5, 8.125, + 3, 1.92188, 1.65625, 5, 5.21875, 9.125, 1.85938, 3.64062, 9.125, 3.59375, 2.0625, + 2.15625, 5.71875, 1.17188, 1.75, 7.125, 9.25, 2.90625, 9.1875, 3.375, 3.6875, 5.4375, + 6.25, 1.47656, 6.0625, 6.15625, 6.5, 2.3125, 9.625, 6.3125, 3.34375, 7.3125, 3.07812, + 1.92188, 5.8125, 4.71875, 9.5, 7.25, 5.4375, 4.71875, 5.875, 1.45312, 7.875, 5.8125, + 1.40625, 6.96875, 2.25, 5.625, 8.125, 9.5, 1.26562, 6.25, 8.9375, 9.125, 5.875, + 2.23438, 5.03125, 2.25, 9, 8.25, 4.375, 4.5625, 5.84375, 2.48438, 6.875, 9.375, + 4.25, 4.125, 6.125, 7.75, 6.75, 7.53125, 2.125, 8.9375, 7.1875, 6.625, 6.8125, + 7.75, 4.1875, 4.125, 7.875, 3.42188, 4.1875, 9.0625, 7.75, 4.84375, 8.875, 9.625, + 1.10156, 6.96875, 5.46875, 6.59375, 1.66406, 2.03125, 8.0625, 9.5, 1.57812, 5.0625, 4.1875, + 6.1875, 9.5, 4.6875, 4.40625, 3.125, 7.875, 9.125, 7.9375, 6.15625, 3.71875, 1.02344, + 7.9375, 6.5625, 2.375, 3.9375, 6.1875, 5.75, 1.07812, 9, 7.375, 4.1875, 5.25, + 9.125, 7.875, 6.625, 5.1875, 1.14062, 3.40625, 9.375, 8.5, 7.1875, 5.9375, 10, + 1.625, 2.54688, 5.25, 2.21875, 7.6875, 9.375, 2.71875, 7.25, 5.1875, 1.59375, 3.0625, + 7.8125, 5.5625, 7.78125, 2.875, 9.25, 1.4375, 7.375, 5.65625, 2.125, 2.54688, 1.17188, + 4.5625, 1.23438, 1.96875, 1.25, 5.5625, 3.21875, 1.92188, 8.75, 3.59375, 5.84375, 3.07812, + 5.96875, 9.6875, 8.5625, 3.5, 2.125, 3.09375, 3.5, 1.82031, 6.25, 6.125, 9.75, + 4.75, 6.0625, 4.3125, 1.16406, 8.3125, 8.1875, 3.59375, 3.09375, 7.4375, 8.25, 6.5, + 4.5, 4.8125, 8.75, 7.75, 7.71875, 4.84375, 6, 4.84375, 2.21875, 4.25, 1.53906, + 2.375, 2.09375, 9.375, 1.39844, 9.25, 1.96875, 8, 3.03125, 6.5625, 7.40625, 1.32031, + 6.03125, 6.875, 1.10938, 2.15625, 1.64062, 3.65625, 9.6875, 4.25, 6.125, 3.46875, 2.82812, + 1.66406, 3.26562, 2.375, 7.6875, 2.45312, 2.75, 9.4375, 6.21875, 4.3125, 9.75, 1.45312, + 8.625, 7.65625, 3.15625, 3.6875, 5.4375, 2.84375, 6.5625, 9.8125, 8.4375, 9, 2.40625, + 7.8125, 1.16406, 6.875, 1.625, 1.35938, 5.375, 8.3125, 6.4375, 7.875, 6.125, 5.09375, + 3.84375, 5.78125, 9.875, 1.98438, 6.1875, 2.3125, 4.40625, 5.5625, 5.9375, 2.9375, 7.6875, + 9.25, 7, 5.15625, 3.375, 2.1875, 1.59375, 7.875, 4.3125, 2.90625, 6.65625, 1.67188, + 2.89062, 1.85938, 7.75, 2.45312, 1.59375, 4.1875, 3.34375, 1.85938, 8.25, 2.28125, 2.73438, + 9.375, 6.75, 6.1875, 5.71875, 8.5, 9.3125, 6.625, 3.375, 3.90625, 1.59375, 7.5625, + 7.625, 5.6875, 7.9375, 7.625, 9.125, 2.48438, 9.375, 7.1875, 1.125, 4.8125, 3.09375, + 7.5625, 6.5625, 7.8125, 10}, + std::vector{1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, + 3.125, 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, + 8.625, 4.75, 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 1.25, + 5.8125, 7.03125, 9.25, 4.75, 5.125, 6, 4.875, 2.25, 9.4375, 10}, std::vector{ 0.523438, 0.667969, 0.667969, 0.667969, 0.667969, 0.523438, 0.632812, 0.664062, 0.667969, 0.640625, - 0.539062, 0.664062, 0.667969, 0.667969, 0.667969, 0.539062, 0.617188, 0.65625, 0.667969, 0.625, + 0.539062, 0.664062, 0.667969, 0.667969, 0.667969, 0.539062, 0.617188, 0.65625, 0.667969, 0.625, 0.546875, 0.648438, 0.667969, 0.664062, 0.667969, 0.546875, 0.601562, 0.640625, 0.667969, 0.609375, - 0.546875, 0.632812, 0.664062, 0.65625, 0.664062, 0.546875, 0.585938, 0.625, 0.664062, 0.59375, - 0.554688, 0.617188, 0.65625, 0.640625, 0.648438, 0.554688, 0.578125, 0.609375, 0.65625, 0.585938, - 0.554688, 0.601562, 0.640625, 0.625, 0.640625, 0.554688, 0.570312, 0.59375, 0.640625, 0.578125, - 0.554688, 0.59375, 0.625, 0.609375, 0.625, 0.554688, 0.570312, 0.585938, 0.625, 0.570312, - 0.554688, 0.585938, 0.609375, 0.59375, 0.609375, 0.554688, 0.5625, 0.578125, 0.609375, 0.570312, - 0.554688, 0.570312, 0.59375, 0.585938, 0.59375, 0.554688, 0.5625, 0.570312, 0.59375, 0.5625, - 0.554688, 0.570312, 0.585938, 0.578125, 0.585938, 0.554688, 0.5625, 0.570312, 0.585938, 0.5625, - 0.65625, 0.617188, 0.664062, 0.648438, 0.664062, 0.664062, 0.667969, 0.664062, 0.667969, 0.667969, - 0.648438, 0.601562, 0.664062, 0.632812, 0.664062, 0.65625, 0.667969, 0.664062, 0.667969, 0.664062, + 0.546875, 0.632812, 0.664062, 0.65625, 0.664062, 0.546875, 0.585938, 0.625, 0.664062, 0.59375, + 0.554688, 0.617188, 0.65625, 0.640625, 0.648438, 0.554688, 0.578125, 0.609375, 0.65625, 0.585938, + 0.554688, 0.601562, 0.640625, 0.625, 0.640625, 0.554688, 0.570312, 0.59375, 0.640625, 0.578125, + 0.554688, 0.59375, 0.625, 0.609375, 0.625, 0.554688, 0.570312, 0.585938, 0.625, 0.570312, + 0.554688, 0.585938, 0.609375, 0.59375, 0.609375, 0.554688, 0.5625, 0.578125, 0.609375, 0.570312, + 0.554688, 0.570312, 0.59375, 0.585938, 0.59375, 0.554688, 0.5625, 0.570312, 0.59375, 0.5625, + 0.554688, 0.570312, 0.585938, 0.578125, 0.585938, 0.554688, 0.5625, 0.570312, 0.585938, 0.5625, + 0.65625, 0.617188, 0.664062, 0.648438, 0.664062, 0.664062, 0.667969, 0.664062, 0.667969, 0.667969, + 0.648438, 0.601562, 0.664062, 0.632812, 0.664062, 0.65625, 0.667969, 0.664062, 0.667969, 0.664062, 0.632812, 0.585938, 0.648438, 0.617188, 0.648438, 0.648438, 0.664062, 0.648438, 0.667969, 0.65625, - 0.617188, 0.578125, 0.632812, 0.601562, 0.632812, 0.632812, 0.65625, 0.632812, 0.664062, 0.648438, + 0.617188, 0.578125, 0.632812, 0.601562, 0.632812, 0.632812, 0.65625, 0.632812, 0.664062, 0.648438, 0.601562, 0.570312, 0.617188, 0.585938, 0.617188, 0.617188, 0.640625, 0.617188, 0.648438, 0.632812, - 0.585938, 0.570312, 0.601562, 0.578125, 0.601562, 0.601562, 0.625, 0.601562, 0.640625, 0.617188, - 0.578125, 0.5625, 0.585938, 0.570312, 0.585938, 0.585938, 0.609375, 0.585938, 0.625, 0.601562, - 0.570312, 0.5625, 0.578125, 0.570312, 0.578125, 0.578125, 0.59375, 0.578125, 0.609375, 0.585938, - 0.570312, 0.5625, 0.570312, 0.5625, 0.570312, 0.570312, 0.585938, 0.570312, 0.59375, 0.578125, - 0.5625, 0.554688, 0.570312, 0.5625, 0.570312, 0.570312, 0.578125, 0.570312, 0.585938, 0.570312, - 0.667969, 0.667969, 0.664062, 0.667969, 0.667969, 0.648438, 0.667969, 0.667969, 0.65625, 0.5625, - 0.667969, 0.664062, 0.65625, 0.667969, 0.664062, 0.640625, 0.664062, 0.667969, 0.640625, 0.5625, - 0.664062, 0.648438, 0.640625, 0.664062, 0.65625, 0.625, 0.65625, 0.664062, 0.625, 0.554688, - 0.65625, 0.632812, 0.625, 0.65625, 0.648438, 0.609375, 0.640625, 0.664062, 0.609375, 0.554688, - 0.648438, 0.617188, 0.609375, 0.640625, 0.632812, 0.59375, 0.625, 0.648438, 0.59375, 0.554688, - 0.632812, 0.601562, 0.59375, 0.625, 0.617188, 0.585938, 0.609375, 0.632812, 0.585938, 0.554688, - 0.617188, 0.59375, 0.585938, 0.609375, 0.601562, 0.578125, 0.59375, 0.617188, 0.578125, 0.554688, - 0.601562, 0.585938, 0.578125, 0.59375, 0.585938, 0.570312, 0.585938, 0.601562, 0.570312, 0.554688, + 0.585938, 0.570312, 0.601562, 0.578125, 0.601562, 0.601562, 0.625, 0.601562, 0.640625, 0.617188, + 0.578125, 0.5625, 0.585938, 0.570312, 0.585938, 0.585938, 0.609375, 0.585938, 0.625, 0.601562, + 0.570312, 0.5625, 0.578125, 0.570312, 0.578125, 0.578125, 0.59375, 0.578125, 0.609375, 0.585938, + 0.570312, 0.5625, 0.570312, 0.5625, 0.570312, 0.570312, 0.585938, 0.570312, 0.59375, 0.578125, + 0.5625, 0.554688, 0.570312, 0.5625, 0.570312, 0.570312, 0.578125, 0.570312, 0.585938, 0.570312, + 0.667969, 0.667969, 0.664062, 0.667969, 0.667969, 0.648438, 0.667969, 0.667969, 0.65625, 0.5625, + 0.667969, 0.664062, 0.65625, 0.667969, 0.664062, 0.640625, 0.664062, 0.667969, 0.640625, 0.5625, + 0.664062, 0.648438, 0.640625, 0.664062, 0.65625, 0.625, 0.65625, 0.664062, 0.625, 0.554688, + 0.65625, 0.632812, 0.625, 0.65625, 0.648438, 0.609375, 0.640625, 0.664062, 0.609375, 0.554688, + 0.648438, 0.617188, 0.609375, 0.640625, 0.632812, 0.59375, 0.625, 0.648438, 0.59375, 0.554688, + 0.632812, 0.601562, 0.59375, 0.625, 0.617188, 0.585938, 0.609375, 0.632812, 0.585938, 0.554688, + 0.617188, 0.59375, 0.585938, 0.609375, 0.601562, 0.578125, 0.59375, 0.617188, 0.578125, 0.554688, + 0.601562, 0.585938, 0.578125, 0.59375, 0.585938, 0.570312, 0.585938, 0.601562, 0.570312, 0.554688, 0.585938, 0.570312, 0.570312, 0.585938, 0.578125, 0.570312, 0.578125, 0.585938, 0.570312, 0.554688, - 0.578125, 0.570312, 0.570312, 0.578125, 0.570312, 0.5625, 0.570312, 0.578125, 0.5625, 0.554688, + 0.578125, 0.570312, 0.570312, 0.578125, 0.570312, 0.5625, 0.570312, 0.578125, 0.5625, 0.554688, 0.667969, 0.667969, 0.667969, 0.667969, 0.667969, 0.667969, 0.667969, 0.632812, 0.667969, 0.648438, 0.664062, 0.667969, 0.667969, 0.664062, 0.664062, 0.664062, 0.664062, 0.617188, 0.667969, 0.632812, - 0.65625, 0.664062, 0.667969, 0.648438, 0.65625, 0.65625, 0.648438, 0.601562, 0.667969, 0.617188, - 0.648438, 0.65625, 0.664062, 0.632812, 0.640625, 0.648438, 0.640625, 0.59375, 0.664062, 0.601562, - 0.632812, 0.640625, 0.648438, 0.617188, 0.625, 0.632812, 0.625, 0.585938, 0.648438, 0.59375, - 0.617188, 0.625, 0.632812, 0.601562, 0.609375, 0.617188, 0.609375, 0.570312, 0.640625, 0.585938, - 0.601562, 0.609375, 0.617188, 0.59375, 0.59375, 0.601562, 0.59375, 0.570312, 0.625, 0.570312, - 0.585938, 0.59375, 0.601562, 0.585938, 0.585938, 0.585938, 0.585938, 0.5625, 0.609375, 0.570312, - 0.578125, 0.585938, 0.59375, 0.570312, 0.578125, 0.578125, 0.578125, 0.5625, 0.59375, 0.5625, - 0.570312, 0.578125, 0.585938, 0.570312, 0.570312, 0.570312, 0.570312, 0.5625, 0.585938, 0.5625, + 0.65625, 0.664062, 0.667969, 0.648438, 0.65625, 0.65625, 0.648438, 0.601562, 0.667969, 0.617188, + 0.648438, 0.65625, 0.664062, 0.632812, 0.640625, 0.648438, 0.640625, 0.59375, 0.664062, 0.601562, + 0.632812, 0.640625, 0.648438, 0.617188, 0.625, 0.632812, 0.625, 0.585938, 0.648438, 0.59375, + 0.617188, 0.625, 0.632812, 0.601562, 0.609375, 0.617188, 0.609375, 0.570312, 0.640625, 0.585938, + 0.601562, 0.609375, 0.617188, 0.59375, 0.59375, 0.601562, 0.59375, 0.570312, 0.625, 0.570312, + 0.585938, 0.59375, 0.601562, 0.585938, 0.585938, 0.585938, 0.585938, 0.5625, 0.609375, 0.570312, + 0.578125, 0.585938, 0.59375, 0.570312, 0.578125, 0.578125, 0.578125, 0.5625, 0.59375, 0.5625, + 0.570312, 0.578125, 0.585938, 0.570312, 0.570312, 0.570312, 0.570312, 0.5625, 0.585938, 0.5625, 0.667969, 0.667969, 0.667969, 0.667969, 0.667969, 0.664062, 0.617188, 0.667969, 0.667969, 0.667969, - 0.667969, 0.667969, 0.667969, 0.667969, 0.667969, 0.65625, 0.601562, 0.667969, 0.664062, 0.667969, - 0.664062, 0.664062, 0.664062, 0.667969, 0.664062, 0.640625, 0.585938, 0.664062, 0.65625, 0.667969, - 0.65625, 0.65625, 0.65625, 0.664062, 0.65625, 0.625, 0.578125, 0.65625, 0.648438, 0.664062, - 0.648438, 0.648438, 0.640625, 0.65625, 0.648438, 0.609375, 0.570312, 0.640625, 0.632812, 0.65625, - 0.632812, 0.632812, 0.625, 0.640625, 0.632812, 0.59375, 0.570312, 0.625, 0.617188, 0.640625, - 0.617188, 0.617188, 0.609375, 0.625, 0.617188, 0.585938, 0.5625, 0.609375, 0.601562, 0.625, - 0.601562, 0.601562, 0.59375, 0.609375, 0.601562, 0.578125, 0.5625, 0.59375, 0.585938, 0.609375, - 0.585938, 0.585938, 0.585938, 0.59375, 0.585938, 0.570312, 0.5625, 0.585938, 0.578125, 0.59375, + 0.667969, 0.667969, 0.667969, 0.667969, 0.667969, 0.65625, 0.601562, 0.667969, 0.664062, 0.667969, + 0.664062, 0.664062, 0.664062, 0.667969, 0.664062, 0.640625, 0.585938, 0.664062, 0.65625, 0.667969, + 0.65625, 0.65625, 0.65625, 0.664062, 0.65625, 0.625, 0.578125, 0.65625, 0.648438, 0.664062, + 0.648438, 0.648438, 0.640625, 0.65625, 0.648438, 0.609375, 0.570312, 0.640625, 0.632812, 0.65625, + 0.632812, 0.632812, 0.625, 0.640625, 0.632812, 0.59375, 0.570312, 0.625, 0.617188, 0.640625, + 0.617188, 0.617188, 0.609375, 0.625, 0.617188, 0.585938, 0.5625, 0.609375, 0.601562, 0.625, + 0.601562, 0.601562, 0.59375, 0.609375, 0.601562, 0.578125, 0.5625, 0.59375, 0.585938, 0.609375, + 0.585938, 0.585938, 0.585938, 0.59375, 0.585938, 0.570312, 0.5625, 0.585938, 0.578125, 0.59375, 0.578125, 0.578125, 0.578125, 0.585938, 0.578125, 0.570312, 0.554688, 0.578125, 0.570312, 0.585938}, - std::vector{ - 0.554688, 0.570312, 0.585938, 0.578125, 0.585938, 0.554688, 0.5625, 0.570312, 0.585938, 0.5625, - 0.5625, 0.554688, 0.570312, 0.5625, 0.570312, 0.570312, 0.578125, 0.570312, 0.585938, 0.570312, - 0.578125, 0.570312, 0.570312, 0.578125, 0.570312, 0.5625, 0.570312, 0.578125, 0.5625, 0.554688, - 0.570312, 0.578125, 0.585938, 0.570312, 0.570312, 0.570312, 0.570312, 0.5625, 0.585938, 0.5625, - 0.578125, 0.578125, 0.578125, 0.585938, 0.578125, 0.570312, 0.554688, 0.578125, 0.570312, 0.585938}, - std::vector{ - 1.20312, 1.27344, 1.375, 1.32031, 1.35156, 1.20312, 1.22656, 1.25781, 1.375, 1.23438, - 1.25, 1.21875, 1.26562, 1.23438, 1.26562, 1.26562, 1.32031, 1.26562, 1.35156, 1.28906, - 1.34375, 1.27344, 1.25781, 1.32031, 1.28906, 1.24219, 1.28125, 1.34375, 1.24219, 1.21875, - 1.28906, 1.32031, 1.35156, 1.27344, 1.28125, 1.29688, 1.28125, 1.22656, 1.35156, 1.23438, - 1.32812, 1.32812, 1.32031, 1.35938, 1.32812, 1.25781, 1.21875, 1.32031, 1.28906, 1.375}), + std::vector{0.554688, 0.570312, 0.585938, 0.578125, 0.585938, 0.554688, 0.5625, 0.570312, 0.585938, + 0.5625, 0.5625, 0.554688, 0.570312, 0.5625, 0.570312, 0.570312, 0.578125, 0.570312, + 0.585938, 0.570312, 0.578125, 0.570312, 0.570312, 0.578125, 0.570312, 0.5625, 0.570312, + 0.578125, 0.5625, 0.554688, 0.570312, 0.578125, 0.585938, 0.570312, 0.570312, 0.570312, + 0.570312, 0.5625, 0.585938, 0.5625, 0.578125, 0.578125, 0.578125, 0.585938, 0.578125, + 0.570312, 0.554688, 0.578125, 0.570312, 0.585938}, + std::vector{1.20312, 1.27344, 1.375, 1.32031, 1.35156, 1.20312, 1.22656, 1.25781, 1.375, 1.23438, + 1.25, 1.21875, 1.26562, 1.23438, 1.26562, 1.26562, 1.32031, 1.26562, 1.35156, 1.28906, + 1.34375, 1.27344, 1.25781, 1.32031, 1.28906, 1.24219, 1.28125, 1.34375, 1.24219, 1.21875, + 1.28906, 1.32031, 1.35156, 1.27344, 1.28125, 1.29688, 1.28125, 1.22656, 1.35156, 1.23438, + 1.32812, 1.32812, 1.32031, 1.35938, 1.32812, 1.25781, 1.21875, 1.32031, 1.28906, 1.375}), TensorIteratorStaticParams( std::make_shared(), - 5, 10, 10, 10, - 0.7f, ov::op::RecurrentSequenceDirection::REVERSE, TensorIteratorBodyType::LSTM, + 5, + 10, + 10, + 10, + 0.7f, + ov::op::RecurrentSequenceDirection::REVERSE, + TensorIteratorBodyType::LSTM, ET, std::vector{ - 1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, - 3.125, 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, - 8.625, 4.75, 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 1.25, - 5.8125, 7.03125, 9.25, 4.75, 5.125, 6, 4.875, 2.25, 9.4375, 2.78125, - 8, 8.1875, 7.4375, 9.6875, 8.25, 3.8125, 1.82812, 7.21875, 5.65625, 8.875, - 8.75, 9, 8.4375, 1.76562, 8.4375, 1.34375, 3.45312, 2.53125, 1.53125, 8.875, - 7.03125, 1.88281, 6.3125, 4.78125, 7.03125, 9.625, 4.6875, 5.8125, 2.78125, 7.21875, - 3.59375, 3.84375, 2.28125, 7.1875, 8, 8.5, 4.6875, 1.16406, 1.30469, 7.75, - 6.625, 9.875, 6.9375, 7.71875, 3.6875, 3.53125, 5, 8.125, 3, 1.92188, - 1.65625, 5, 5.21875, 9.125, 1.85938, 3.64062, 9.125, 3.59375, 2.0625, 2.15625, - 5.71875, 1.17188, 1.75, 7.125, 9.25, 2.90625, 9.1875, 3.375, 3.6875, 5.4375, - 6.25, 1.47656, 6.0625, 6.15625, 6.5, 2.3125, 9.625, 6.3125, 3.34375, 7.3125, - 3.07812, 1.92188, 5.8125, 4.71875, 9.5, 7.25, 5.4375, 4.71875, 5.875, 1.45312, - 7.875, 5.8125, 1.40625, 6.96875, 2.25, 5.625, 8.125, 9.5, 1.26562, 6.25, - 8.9375, 9.125, 5.875, 2.23438, 5.03125, 2.25, 9, 8.25, 4.375, 4.5625, - 5.84375, 2.48438, 6.875, 9.375, 4.25, 4.125, 6.125, 7.75, 6.75, 7.53125, - 2.125, 8.9375, 7.1875, 6.625, 6.8125, 7.75, 4.1875, 4.125, 7.875, 3.42188, - 4.1875, 9.0625, 7.75, 4.84375, 8.875, 9.625, 1.10156, 6.96875, 5.46875, 6.59375, - 1.66406, 2.03125, 8.0625, 9.5, 1.57812, 5.0625, 4.1875, 6.1875, 9.5, 4.6875, - 4.40625, 3.125, 7.875, 9.125, 7.9375, 6.15625, 3.71875, 1.02344, 7.9375, 6.5625, - 2.375, 3.9375, 6.1875, 5.75, 1.07812, 9, 7.375, 4.1875, 5.25, 9.125, - 7.875, 6.625, 5.1875, 1.14062, 3.40625, 9.375, 8.5, 7.1875, 5.9375, 10, - 1.625, 2.54688, 5.25, 2.21875, 7.6875, 9.375, 2.71875, 7.25, 5.1875, 1.59375, - 3.0625, 7.8125, 5.5625, 7.78125, 2.875, 9.25, 1.4375, 7.375, 5.65625, 2.125, - 2.54688, 1.17188, 4.5625, 1.23438, 1.96875, 1.25, 5.5625, 3.21875, 1.92188, 8.75, - 3.59375, 5.84375, 3.07812, 5.96875, 9.6875, 8.5625, 3.5, 2.125, 3.09375, 3.5, - 1.82031, 6.25, 6.125, 9.75, 4.75, 6.0625, 4.3125, 1.16406, 8.3125, 8.1875, - 3.59375, 3.09375, 7.4375, 8.25, 6.5, 4.5, 4.8125, 8.75, 7.75, 7.71875, - 4.84375, 6, 4.84375, 2.21875, 4.25, 1.53906, 2.375, 2.09375, 9.375, 1.39844, - 9.25, 1.96875, 8, 3.03125, 6.5625, 7.40625, 1.32031, 6.03125, 6.875, 1.10938, - 2.15625, 1.64062, 3.65625, 9.6875, 4.25, 6.125, 3.46875, 2.82812, 1.66406, 3.26562, - 2.375, 7.6875, 2.45312, 2.75, 9.4375, 6.21875, 4.3125, 9.75, 1.45312, 8.625, - 7.65625, 3.15625, 3.6875, 5.4375, 2.84375, 6.5625, 9.8125, 8.4375, 9, 2.40625, - 7.8125, 1.16406, 6.875, 1.625, 1.35938, 5.375, 8.3125, 6.4375, 7.875, 6.125, - 5.09375, 3.84375, 5.78125, 9.875, 1.98438, 6.1875, 2.3125, 4.40625, 5.5625, 5.9375, - 2.9375, 7.6875, 9.25, 7, 5.15625, 3.375, 2.1875, 1.59375, 7.875, 4.3125, - 2.90625, 6.65625, 1.67188, 2.89062, 1.85938, 7.75, 2.45312, 1.59375, 4.1875, 3.34375, - 1.85938, 8.25, 2.28125, 2.73438, 9.375, 6.75, 6.1875, 5.71875, 8.5, 9.3125, - 6.625, 3.375, 3.90625, 1.59375, 7.5625, 7.625, 5.6875, 7.9375, 7.625, 9.125, - 2.48438, 9.375, 7.1875, 1.125, 4.8125, 3.09375, 7.5625, 6.5625, 7.8125, 9.5, - 4.5625, 9.5, 9.3125, 6, 2.82812, 9.25, 1.07031, 6.75, 9.3125, 4.5, - 3.65625, 5.375, 2.5, 6.4375, 1.21875, 5.9375, 5.0625, 9.3125, 8.25, 9.25, - 4.3125, 4.5625, 6.46875, 9.625, 1.3125, 2.5625, 4.1875, 2.125, 1.70312, 2.21875, - 7.25, 5.5625, 1.10938, 1.1875, 5.125, 9.5, 9.625, 8.4375, 4, 1.13281, - 5.25, 2.57812, 1.94531, 3.98438, 5.5, 2.17188, 9, 8.25, 5.8125, 4.09375, - 3.53125, 9.4375, 4.1875, 6.25, 9.0625, 8.875, 3.17188, 8.625, 1.21875, 9.125, - 9.6875, 5.125, 4.875, 5.90625, 4.125, 8.125, 6.1875, 3.5625, 2.125, 5.40625, - 9.5, 6.375, 3.8125, 1.14062, 9.5625, 6.3125, 2.96875, 4.875, 3.23438, 8.25, - 8.75, 3.84375, 3.125, 9, 8.3125, 6.1875, 5.875, 2.65625, 2.71875, 8.0625, - 6.3125, 6.5, 1.42969, 1.48438, 1.14062, 4.78125, 1.44531, 7.125, 4.59375, 10}, - std::vector{ - 1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, - 3.125, 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, - 8.625, 4.75, 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 1.25, - 5.8125, 7.03125, 9.25, 4.75, 5.125, 6, 4.875, 2.25, 9.4375, 2.78125, - 8, 8.1875, 7.4375, 9.6875, 8.25, 3.8125, 1.82812, 7.21875, 5.65625, 10}, - std::vector{ - 1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, - 3.125, 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, - 8.625, 4.75, 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 1.25, - 5.8125, 7.03125, 9.25, 4.75, 5.125, 6, 4.875, 2.25, 9.4375, 2.78125, - 8, 8.1875, 7.4375, 9.6875, 8.25, 3.8125, 1.82812, 7.21875, 5.65625, 10}, + 1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, 3.125, + 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, 8.625, 4.75, + 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 1.25, 5.8125, 7.03125, 9.25, + 4.75, 5.125, 6, 4.875, 2.25, 9.4375, 2.78125, 8, 8.1875, 7.4375, 9.6875, + 8.25, 3.8125, 1.82812, 7.21875, 5.65625, 8.875, 8.75, 9, 8.4375, 1.76562, 8.4375, + 1.34375, 3.45312, 2.53125, 1.53125, 8.875, 7.03125, 1.88281, 6.3125, 4.78125, 7.03125, 9.625, + 4.6875, 5.8125, 2.78125, 7.21875, 3.59375, 3.84375, 2.28125, 7.1875, 8, 8.5, 4.6875, + 1.16406, 1.30469, 7.75, 6.625, 9.875, 6.9375, 7.71875, 3.6875, 3.53125, 5, 8.125, + 3, 1.92188, 1.65625, 5, 5.21875, 9.125, 1.85938, 3.64062, 9.125, 3.59375, 2.0625, + 2.15625, 5.71875, 1.17188, 1.75, 7.125, 9.25, 2.90625, 9.1875, 3.375, 3.6875, 5.4375, + 6.25, 1.47656, 6.0625, 6.15625, 6.5, 2.3125, 9.625, 6.3125, 3.34375, 7.3125, 3.07812, + 1.92188, 5.8125, 4.71875, 9.5, 7.25, 5.4375, 4.71875, 5.875, 1.45312, 7.875, 5.8125, + 1.40625, 6.96875, 2.25, 5.625, 8.125, 9.5, 1.26562, 6.25, 8.9375, 9.125, 5.875, + 2.23438, 5.03125, 2.25, 9, 8.25, 4.375, 4.5625, 5.84375, 2.48438, 6.875, 9.375, + 4.25, 4.125, 6.125, 7.75, 6.75, 7.53125, 2.125, 8.9375, 7.1875, 6.625, 6.8125, + 7.75, 4.1875, 4.125, 7.875, 3.42188, 4.1875, 9.0625, 7.75, 4.84375, 8.875, 9.625, + 1.10156, 6.96875, 5.46875, 6.59375, 1.66406, 2.03125, 8.0625, 9.5, 1.57812, 5.0625, 4.1875, + 6.1875, 9.5, 4.6875, 4.40625, 3.125, 7.875, 9.125, 7.9375, 6.15625, 3.71875, 1.02344, + 7.9375, 6.5625, 2.375, 3.9375, 6.1875, 5.75, 1.07812, 9, 7.375, 4.1875, 5.25, + 9.125, 7.875, 6.625, 5.1875, 1.14062, 3.40625, 9.375, 8.5, 7.1875, 5.9375, 10, + 1.625, 2.54688, 5.25, 2.21875, 7.6875, 9.375, 2.71875, 7.25, 5.1875, 1.59375, 3.0625, + 7.8125, 5.5625, 7.78125, 2.875, 9.25, 1.4375, 7.375, 5.65625, 2.125, 2.54688, 1.17188, + 4.5625, 1.23438, 1.96875, 1.25, 5.5625, 3.21875, 1.92188, 8.75, 3.59375, 5.84375, 3.07812, + 5.96875, 9.6875, 8.5625, 3.5, 2.125, 3.09375, 3.5, 1.82031, 6.25, 6.125, 9.75, + 4.75, 6.0625, 4.3125, 1.16406, 8.3125, 8.1875, 3.59375, 3.09375, 7.4375, 8.25, 6.5, + 4.5, 4.8125, 8.75, 7.75, 7.71875, 4.84375, 6, 4.84375, 2.21875, 4.25, 1.53906, + 2.375, 2.09375, 9.375, 1.39844, 9.25, 1.96875, 8, 3.03125, 6.5625, 7.40625, 1.32031, + 6.03125, 6.875, 1.10938, 2.15625, 1.64062, 3.65625, 9.6875, 4.25, 6.125, 3.46875, 2.82812, + 1.66406, 3.26562, 2.375, 7.6875, 2.45312, 2.75, 9.4375, 6.21875, 4.3125, 9.75, 1.45312, + 8.625, 7.65625, 3.15625, 3.6875, 5.4375, 2.84375, 6.5625, 9.8125, 8.4375, 9, 2.40625, + 7.8125, 1.16406, 6.875, 1.625, 1.35938, 5.375, 8.3125, 6.4375, 7.875, 6.125, 5.09375, + 3.84375, 5.78125, 9.875, 1.98438, 6.1875, 2.3125, 4.40625, 5.5625, 5.9375, 2.9375, 7.6875, + 9.25, 7, 5.15625, 3.375, 2.1875, 1.59375, 7.875, 4.3125, 2.90625, 6.65625, 1.67188, + 2.89062, 1.85938, 7.75, 2.45312, 1.59375, 4.1875, 3.34375, 1.85938, 8.25, 2.28125, 2.73438, + 9.375, 6.75, 6.1875, 5.71875, 8.5, 9.3125, 6.625, 3.375, 3.90625, 1.59375, 7.5625, + 7.625, 5.6875, 7.9375, 7.625, 9.125, 2.48438, 9.375, 7.1875, 1.125, 4.8125, 3.09375, + 7.5625, 6.5625, 7.8125, 9.5, 4.5625, 9.5, 9.3125, 6, 2.82812, 9.25, 1.07031, + 6.75, 9.3125, 4.5, 3.65625, 5.375, 2.5, 6.4375, 1.21875, 5.9375, 5.0625, 9.3125, + 8.25, 9.25, 4.3125, 4.5625, 6.46875, 9.625, 1.3125, 2.5625, 4.1875, 2.125, 1.70312, + 2.21875, 7.25, 5.5625, 1.10938, 1.1875, 5.125, 9.5, 9.625, 8.4375, 4, 1.13281, + 5.25, 2.57812, 1.94531, 3.98438, 5.5, 2.17188, 9, 8.25, 5.8125, 4.09375, 3.53125, + 9.4375, 4.1875, 6.25, 9.0625, 8.875, 3.17188, 8.625, 1.21875, 9.125, 9.6875, 5.125, + 4.875, 5.90625, 4.125, 8.125, 6.1875, 3.5625, 2.125, 5.40625, 9.5, 6.375, 3.8125, + 1.14062, 9.5625, 6.3125, 2.96875, 4.875, 3.23438, 8.25, 8.75, 3.84375, 3.125, 9, + 8.3125, 6.1875, 5.875, 2.65625, 2.71875, 8.0625, 6.3125, 6.5, 1.42969, 1.48438, 1.14062, + 4.78125, 1.44531, 7.125, 4.59375, 10}, + std::vector{1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, + 3.125, 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, + 8.625, 4.75, 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 1.25, + 5.8125, 7.03125, 9.25, 4.75, 5.125, 6, 4.875, 2.25, 9.4375, 2.78125, + 8, 8.1875, 7.4375, 9.6875, 8.25, 3.8125, 1.82812, 7.21875, 5.65625, 10}, + std::vector{1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, + 3.125, 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, + 8.625, 4.75, 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 1.25, + 5.8125, 7.03125, 9.25, 4.75, 5.125, 6, 4.875, 2.25, 9.4375, 2.78125, + 8, 8.1875, 7.4375, 9.6875, 8.25, 3.8125, 1.82812, 7.21875, 5.65625, 10}, std::vector{10, 10, 10, 10, 10}, std::vector{ - 1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, - 3.125, 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, - 8.625, 4.75, 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 1.25, - 5.8125, 7.03125, 9.25, 4.75, 5.125, 6, 4.875, 2.25, 9.4375, 2.78125, - 8, 8.1875, 7.4375, 9.6875, 8.25, 3.8125, 1.82812, 7.21875, 5.65625, 8.875, - 8.75, 9, 8.4375, 1.76562, 8.4375, 1.34375, 3.45312, 2.53125, 1.53125, 8.875, - 7.03125, 1.88281, 6.3125, 4.78125, 7.03125, 9.625, 4.6875, 5.8125, 2.78125, 7.21875, - 3.59375, 3.84375, 2.28125, 7.1875, 8, 8.5, 4.6875, 1.16406, 1.30469, 7.75, - 6.625, 9.875, 6.9375, 7.71875, 3.6875, 3.53125, 5, 8.125, 3, 1.92188, - 1.65625, 5, 5.21875, 9.125, 1.85938, 3.64062, 9.125, 3.59375, 2.0625, 2.15625, - 5.71875, 1.17188, 1.75, 7.125, 9.25, 2.90625, 9.1875, 3.375, 3.6875, 5.4375, - 6.25, 1.47656, 6.0625, 6.15625, 6.5, 2.3125, 9.625, 6.3125, 3.34375, 7.3125, - 3.07812, 1.92188, 5.8125, 4.71875, 9.5, 7.25, 5.4375, 4.71875, 5.875, 1.45312, - 7.875, 5.8125, 1.40625, 6.96875, 2.25, 5.625, 8.125, 9.5, 1.26562, 6.25, - 8.9375, 9.125, 5.875, 2.23438, 5.03125, 2.25, 9, 8.25, 4.375, 4.5625, - 5.84375, 2.48438, 6.875, 9.375, 4.25, 4.125, 6.125, 7.75, 6.75, 7.53125, - 2.125, 8.9375, 7.1875, 6.625, 6.8125, 7.75, 4.1875, 4.125, 7.875, 3.42188, - 4.1875, 9.0625, 7.75, 4.84375, 8.875, 9.625, 1.10156, 6.96875, 5.46875, 6.59375, - 1.66406, 2.03125, 8.0625, 9.5, 1.57812, 5.0625, 4.1875, 6.1875, 9.5, 4.6875, - 4.40625, 3.125, 7.875, 9.125, 7.9375, 6.15625, 3.71875, 1.02344, 7.9375, 6.5625, - 2.375, 3.9375, 6.1875, 5.75, 1.07812, 9, 7.375, 4.1875, 5.25, 9.125, - 7.875, 6.625, 5.1875, 1.14062, 3.40625, 9.375, 8.5, 7.1875, 5.9375, 10, - 1.625, 2.54688, 5.25, 2.21875, 7.6875, 9.375, 2.71875, 7.25, 5.1875, 1.59375, - 3.0625, 7.8125, 5.5625, 7.78125, 2.875, 9.25, 1.4375, 7.375, 5.65625, 2.125, - 2.54688, 1.17188, 4.5625, 1.23438, 1.96875, 1.25, 5.5625, 3.21875, 1.92188, 8.75, - 3.59375, 5.84375, 3.07812, 5.96875, 9.6875, 8.5625, 3.5, 2.125, 3.09375, 3.5, - 1.82031, 6.25, 6.125, 9.75, 4.75, 6.0625, 4.3125, 1.16406, 8.3125, 8.1875, - 3.59375, 3.09375, 7.4375, 8.25, 6.5, 4.5, 4.8125, 8.75, 7.75, 7.71875, - 4.84375, 6, 4.84375, 2.21875, 4.25, 1.53906, 2.375, 2.09375, 9.375, 1.39844, - 9.25, 1.96875, 8, 3.03125, 6.5625, 7.40625, 1.32031, 6.03125, 6.875, 1.10938, - 2.15625, 1.64062, 3.65625, 9.6875, 4.25, 6.125, 3.46875, 2.82812, 1.66406, 3.26562, - 2.375, 7.6875, 2.45312, 2.75, 9.4375, 6.21875, 4.3125, 9.75, 1.45312, 8.625, - 7.65625, 3.15625, 3.6875, 5.4375, 2.84375, 6.5625, 9.8125, 8.4375, 9, 2.40625, - 7.8125, 1.16406, 6.875, 1.625, 1.35938, 5.375, 8.3125, 6.4375, 7.875, 6.125, - 5.09375, 3.84375, 5.78125, 9.875, 1.98438, 6.1875, 2.3125, 4.40625, 5.5625, 5.9375, - 2.9375, 7.6875, 9.25, 7, 5.15625, 3.375, 2.1875, 1.59375, 7.875, 4.3125, - 2.90625, 6.65625, 1.67188, 2.89062, 1.85938, 7.75, 2.45312, 1.59375, 4.1875, 3.34375, - 1.85938, 8.25, 2.28125, 2.73438, 9.375, 6.75, 6.1875, 5.71875, 8.5, 9.3125, - 6.625, 3.375, 3.90625, 1.59375, 7.5625, 7.625, 5.6875, 7.9375, 7.625, 9.125, - 2.48438, 9.375, 7.1875, 1.125, 4.8125, 3.09375, 7.5625, 6.5625, 7.8125, 10}, + 1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, 3.125, + 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, 8.625, 4.75, + 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 1.25, 5.8125, 7.03125, 9.25, + 4.75, 5.125, 6, 4.875, 2.25, 9.4375, 2.78125, 8, 8.1875, 7.4375, 9.6875, + 8.25, 3.8125, 1.82812, 7.21875, 5.65625, 8.875, 8.75, 9, 8.4375, 1.76562, 8.4375, + 1.34375, 3.45312, 2.53125, 1.53125, 8.875, 7.03125, 1.88281, 6.3125, 4.78125, 7.03125, 9.625, + 4.6875, 5.8125, 2.78125, 7.21875, 3.59375, 3.84375, 2.28125, 7.1875, 8, 8.5, 4.6875, + 1.16406, 1.30469, 7.75, 6.625, 9.875, 6.9375, 7.71875, 3.6875, 3.53125, 5, 8.125, + 3, 1.92188, 1.65625, 5, 5.21875, 9.125, 1.85938, 3.64062, 9.125, 3.59375, 2.0625, + 2.15625, 5.71875, 1.17188, 1.75, 7.125, 9.25, 2.90625, 9.1875, 3.375, 3.6875, 5.4375, + 6.25, 1.47656, 6.0625, 6.15625, 6.5, 2.3125, 9.625, 6.3125, 3.34375, 7.3125, 3.07812, + 1.92188, 5.8125, 4.71875, 9.5, 7.25, 5.4375, 4.71875, 5.875, 1.45312, 7.875, 5.8125, + 1.40625, 6.96875, 2.25, 5.625, 8.125, 9.5, 1.26562, 6.25, 8.9375, 9.125, 5.875, + 2.23438, 5.03125, 2.25, 9, 8.25, 4.375, 4.5625, 5.84375, 2.48438, 6.875, 9.375, + 4.25, 4.125, 6.125, 7.75, 6.75, 7.53125, 2.125, 8.9375, 7.1875, 6.625, 6.8125, + 7.75, 4.1875, 4.125, 7.875, 3.42188, 4.1875, 9.0625, 7.75, 4.84375, 8.875, 9.625, + 1.10156, 6.96875, 5.46875, 6.59375, 1.66406, 2.03125, 8.0625, 9.5, 1.57812, 5.0625, 4.1875, + 6.1875, 9.5, 4.6875, 4.40625, 3.125, 7.875, 9.125, 7.9375, 6.15625, 3.71875, 1.02344, + 7.9375, 6.5625, 2.375, 3.9375, 6.1875, 5.75, 1.07812, 9, 7.375, 4.1875, 5.25, + 9.125, 7.875, 6.625, 5.1875, 1.14062, 3.40625, 9.375, 8.5, 7.1875, 5.9375, 10, + 1.625, 2.54688, 5.25, 2.21875, 7.6875, 9.375, 2.71875, 7.25, 5.1875, 1.59375, 3.0625, + 7.8125, 5.5625, 7.78125, 2.875, 9.25, 1.4375, 7.375, 5.65625, 2.125, 2.54688, 1.17188, + 4.5625, 1.23438, 1.96875, 1.25, 5.5625, 3.21875, 1.92188, 8.75, 3.59375, 5.84375, 3.07812, + 5.96875, 9.6875, 8.5625, 3.5, 2.125, 3.09375, 3.5, 1.82031, 6.25, 6.125, 9.75, + 4.75, 6.0625, 4.3125, 1.16406, 8.3125, 8.1875, 3.59375, 3.09375, 7.4375, 8.25, 6.5, + 4.5, 4.8125, 8.75, 7.75, 7.71875, 4.84375, 6, 4.84375, 2.21875, 4.25, 1.53906, + 2.375, 2.09375, 9.375, 1.39844, 9.25, 1.96875, 8, 3.03125, 6.5625, 7.40625, 1.32031, + 6.03125, 6.875, 1.10938, 2.15625, 1.64062, 3.65625, 9.6875, 4.25, 6.125, 3.46875, 2.82812, + 1.66406, 3.26562, 2.375, 7.6875, 2.45312, 2.75, 9.4375, 6.21875, 4.3125, 9.75, 1.45312, + 8.625, 7.65625, 3.15625, 3.6875, 5.4375, 2.84375, 6.5625, 9.8125, 8.4375, 9, 2.40625, + 7.8125, 1.16406, 6.875, 1.625, 1.35938, 5.375, 8.3125, 6.4375, 7.875, 6.125, 5.09375, + 3.84375, 5.78125, 9.875, 1.98438, 6.1875, 2.3125, 4.40625, 5.5625, 5.9375, 2.9375, 7.6875, + 9.25, 7, 5.15625, 3.375, 2.1875, 1.59375, 7.875, 4.3125, 2.90625, 6.65625, 1.67188, + 2.89062, 1.85938, 7.75, 2.45312, 1.59375, 4.1875, 3.34375, 1.85938, 8.25, 2.28125, 2.73438, + 9.375, 6.75, 6.1875, 5.71875, 8.5, 9.3125, 6.625, 3.375, 3.90625, 1.59375, 7.5625, + 7.625, 5.6875, 7.9375, 7.625, 9.125, 2.48438, 9.375, 7.1875, 1.125, 4.8125, 3.09375, + 7.5625, 6.5625, 7.8125, 10}, std::vector{ - 1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, - 3.125, 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, - 8.625, 4.75, 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 1.25, - 5.8125, 7.03125, 9.25, 4.75, 5.125, 6, 4.875, 2.25, 9.4375, 2.78125, - 8, 8.1875, 7.4375, 9.6875, 8.25, 3.8125, 1.82812, 7.21875, 5.65625, 8.875, - 8.75, 9, 8.4375, 1.76562, 8.4375, 1.34375, 3.45312, 2.53125, 1.53125, 8.875, - 7.03125, 1.88281, 6.3125, 4.78125, 7.03125, 9.625, 4.6875, 5.8125, 2.78125, 7.21875, - 3.59375, 3.84375, 2.28125, 7.1875, 8, 8.5, 4.6875, 1.16406, 1.30469, 7.75, - 6.625, 9.875, 6.9375, 7.71875, 3.6875, 3.53125, 5, 8.125, 3, 1.92188, - 1.65625, 5, 5.21875, 9.125, 1.85938, 3.64062, 9.125, 3.59375, 2.0625, 2.15625, - 5.71875, 1.17188, 1.75, 7.125, 9.25, 2.90625, 9.1875, 3.375, 3.6875, 5.4375, - 6.25, 1.47656, 6.0625, 6.15625, 6.5, 2.3125, 9.625, 6.3125, 3.34375, 7.3125, - 3.07812, 1.92188, 5.8125, 4.71875, 9.5, 7.25, 5.4375, 4.71875, 5.875, 1.45312, - 7.875, 5.8125, 1.40625, 6.96875, 2.25, 5.625, 8.125, 9.5, 1.26562, 6.25, - 8.9375, 9.125, 5.875, 2.23438, 5.03125, 2.25, 9, 8.25, 4.375, 4.5625, - 5.84375, 2.48438, 6.875, 9.375, 4.25, 4.125, 6.125, 7.75, 6.75, 7.53125, - 2.125, 8.9375, 7.1875, 6.625, 6.8125, 7.75, 4.1875, 4.125, 7.875, 3.42188, - 4.1875, 9.0625, 7.75, 4.84375, 8.875, 9.625, 1.10156, 6.96875, 5.46875, 6.59375, - 1.66406, 2.03125, 8.0625, 9.5, 1.57812, 5.0625, 4.1875, 6.1875, 9.5, 4.6875, - 4.40625, 3.125, 7.875, 9.125, 7.9375, 6.15625, 3.71875, 1.02344, 7.9375, 6.5625, - 2.375, 3.9375, 6.1875, 5.75, 1.07812, 9, 7.375, 4.1875, 5.25, 9.125, - 7.875, 6.625, 5.1875, 1.14062, 3.40625, 9.375, 8.5, 7.1875, 5.9375, 10, - 1.625, 2.54688, 5.25, 2.21875, 7.6875, 9.375, 2.71875, 7.25, 5.1875, 1.59375, - 3.0625, 7.8125, 5.5625, 7.78125, 2.875, 9.25, 1.4375, 7.375, 5.65625, 2.125, - 2.54688, 1.17188, 4.5625, 1.23438, 1.96875, 1.25, 5.5625, 3.21875, 1.92188, 8.75, - 3.59375, 5.84375, 3.07812, 5.96875, 9.6875, 8.5625, 3.5, 2.125, 3.09375, 3.5, - 1.82031, 6.25, 6.125, 9.75, 4.75, 6.0625, 4.3125, 1.16406, 8.3125, 8.1875, - 3.59375, 3.09375, 7.4375, 8.25, 6.5, 4.5, 4.8125, 8.75, 7.75, 7.71875, - 4.84375, 6, 4.84375, 2.21875, 4.25, 1.53906, 2.375, 2.09375, 9.375, 1.39844, - 9.25, 1.96875, 8, 3.03125, 6.5625, 7.40625, 1.32031, 6.03125, 6.875, 1.10938, - 2.15625, 1.64062, 3.65625, 9.6875, 4.25, 6.125, 3.46875, 2.82812, 1.66406, 3.26562, - 2.375, 7.6875, 2.45312, 2.75, 9.4375, 6.21875, 4.3125, 9.75, 1.45312, 8.625, - 7.65625, 3.15625, 3.6875, 5.4375, 2.84375, 6.5625, 9.8125, 8.4375, 9, 2.40625, - 7.8125, 1.16406, 6.875, 1.625, 1.35938, 5.375, 8.3125, 6.4375, 7.875, 6.125, - 5.09375, 3.84375, 5.78125, 9.875, 1.98438, 6.1875, 2.3125, 4.40625, 5.5625, 5.9375, - 2.9375, 7.6875, 9.25, 7, 5.15625, 3.375, 2.1875, 1.59375, 7.875, 4.3125, - 2.90625, 6.65625, 1.67188, 2.89062, 1.85938, 7.75, 2.45312, 1.59375, 4.1875, 3.34375, - 1.85938, 8.25, 2.28125, 2.73438, 9.375, 6.75, 6.1875, 5.71875, 8.5, 9.3125, - 6.625, 3.375, 3.90625, 1.59375, 7.5625, 7.625, 5.6875, 7.9375, 7.625, 9.125, - 2.48438, 9.375, 7.1875, 1.125, 4.8125, 3.09375, 7.5625, 6.5625, 7.8125, 10}, + 1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, 3.125, + 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, 8.625, 4.75, + 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 1.25, 5.8125, 7.03125, 9.25, + 4.75, 5.125, 6, 4.875, 2.25, 9.4375, 2.78125, 8, 8.1875, 7.4375, 9.6875, + 8.25, 3.8125, 1.82812, 7.21875, 5.65625, 8.875, 8.75, 9, 8.4375, 1.76562, 8.4375, + 1.34375, 3.45312, 2.53125, 1.53125, 8.875, 7.03125, 1.88281, 6.3125, 4.78125, 7.03125, 9.625, + 4.6875, 5.8125, 2.78125, 7.21875, 3.59375, 3.84375, 2.28125, 7.1875, 8, 8.5, 4.6875, + 1.16406, 1.30469, 7.75, 6.625, 9.875, 6.9375, 7.71875, 3.6875, 3.53125, 5, 8.125, + 3, 1.92188, 1.65625, 5, 5.21875, 9.125, 1.85938, 3.64062, 9.125, 3.59375, 2.0625, + 2.15625, 5.71875, 1.17188, 1.75, 7.125, 9.25, 2.90625, 9.1875, 3.375, 3.6875, 5.4375, + 6.25, 1.47656, 6.0625, 6.15625, 6.5, 2.3125, 9.625, 6.3125, 3.34375, 7.3125, 3.07812, + 1.92188, 5.8125, 4.71875, 9.5, 7.25, 5.4375, 4.71875, 5.875, 1.45312, 7.875, 5.8125, + 1.40625, 6.96875, 2.25, 5.625, 8.125, 9.5, 1.26562, 6.25, 8.9375, 9.125, 5.875, + 2.23438, 5.03125, 2.25, 9, 8.25, 4.375, 4.5625, 5.84375, 2.48438, 6.875, 9.375, + 4.25, 4.125, 6.125, 7.75, 6.75, 7.53125, 2.125, 8.9375, 7.1875, 6.625, 6.8125, + 7.75, 4.1875, 4.125, 7.875, 3.42188, 4.1875, 9.0625, 7.75, 4.84375, 8.875, 9.625, + 1.10156, 6.96875, 5.46875, 6.59375, 1.66406, 2.03125, 8.0625, 9.5, 1.57812, 5.0625, 4.1875, + 6.1875, 9.5, 4.6875, 4.40625, 3.125, 7.875, 9.125, 7.9375, 6.15625, 3.71875, 1.02344, + 7.9375, 6.5625, 2.375, 3.9375, 6.1875, 5.75, 1.07812, 9, 7.375, 4.1875, 5.25, + 9.125, 7.875, 6.625, 5.1875, 1.14062, 3.40625, 9.375, 8.5, 7.1875, 5.9375, 10, + 1.625, 2.54688, 5.25, 2.21875, 7.6875, 9.375, 2.71875, 7.25, 5.1875, 1.59375, 3.0625, + 7.8125, 5.5625, 7.78125, 2.875, 9.25, 1.4375, 7.375, 5.65625, 2.125, 2.54688, 1.17188, + 4.5625, 1.23438, 1.96875, 1.25, 5.5625, 3.21875, 1.92188, 8.75, 3.59375, 5.84375, 3.07812, + 5.96875, 9.6875, 8.5625, 3.5, 2.125, 3.09375, 3.5, 1.82031, 6.25, 6.125, 9.75, + 4.75, 6.0625, 4.3125, 1.16406, 8.3125, 8.1875, 3.59375, 3.09375, 7.4375, 8.25, 6.5, + 4.5, 4.8125, 8.75, 7.75, 7.71875, 4.84375, 6, 4.84375, 2.21875, 4.25, 1.53906, + 2.375, 2.09375, 9.375, 1.39844, 9.25, 1.96875, 8, 3.03125, 6.5625, 7.40625, 1.32031, + 6.03125, 6.875, 1.10938, 2.15625, 1.64062, 3.65625, 9.6875, 4.25, 6.125, 3.46875, 2.82812, + 1.66406, 3.26562, 2.375, 7.6875, 2.45312, 2.75, 9.4375, 6.21875, 4.3125, 9.75, 1.45312, + 8.625, 7.65625, 3.15625, 3.6875, 5.4375, 2.84375, 6.5625, 9.8125, 8.4375, 9, 2.40625, + 7.8125, 1.16406, 6.875, 1.625, 1.35938, 5.375, 8.3125, 6.4375, 7.875, 6.125, 5.09375, + 3.84375, 5.78125, 9.875, 1.98438, 6.1875, 2.3125, 4.40625, 5.5625, 5.9375, 2.9375, 7.6875, + 9.25, 7, 5.15625, 3.375, 2.1875, 1.59375, 7.875, 4.3125, 2.90625, 6.65625, 1.67188, + 2.89062, 1.85938, 7.75, 2.45312, 1.59375, 4.1875, 3.34375, 1.85938, 8.25, 2.28125, 2.73438, + 9.375, 6.75, 6.1875, 5.71875, 8.5, 9.3125, 6.625, 3.375, 3.90625, 1.59375, 7.5625, + 7.625, 5.6875, 7.9375, 7.625, 9.125, 2.48438, 9.375, 7.1875, 1.125, 4.8125, 3.09375, + 7.5625, 6.5625, 7.8125, 10}, + std::vector{1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, + 3.125, 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, + 8.625, 4.75, 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 1.25, + 5.8125, 7.03125, 9.25, 4.75, 5.125, 6, 4.875, 2.25, 9.4375, 10}, std::vector{ - 1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, - 3.125, 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, - 8.625, 4.75, 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 1.25, - 5.8125, 7.03125, 9.25, 4.75, 5.125, 6, 4.875, 2.25, 9.4375, 10}, - std::vector{ - 0.554688, 0.570312, 0.585938, 0.578125, 0.585938, 0.554688, 0.5625, 0.570312, 0.585938, 0.5625, - 0.554688, 0.570312, 0.59375, 0.585938, 0.59375, 0.554688, 0.5625, 0.570312, 0.59375, 0.5625, - 0.554688, 0.585938, 0.609375, 0.59375, 0.609375, 0.554688, 0.5625, 0.578125, 0.609375, 0.570312, - 0.554688, 0.59375, 0.625, 0.609375, 0.625, 0.554688, 0.570312, 0.585938, 0.625, 0.570312, - 0.554688, 0.601562, 0.640625, 0.625, 0.640625, 0.554688, 0.570312, 0.59375, 0.640625, 0.578125, - 0.554688, 0.617188, 0.65625, 0.640625, 0.648438, 0.554688, 0.578125, 0.609375, 0.65625, 0.585938, - 0.546875, 0.632812, 0.664062, 0.65625, 0.664062, 0.546875, 0.585938, 0.625, 0.664062, 0.59375, + 0.554688, 0.570312, 0.585938, 0.578125, 0.585938, 0.554688, 0.5625, 0.570312, 0.585938, 0.5625, + 0.554688, 0.570312, 0.59375, 0.585938, 0.59375, 0.554688, 0.5625, 0.570312, 0.59375, 0.5625, + 0.554688, 0.585938, 0.609375, 0.59375, 0.609375, 0.554688, 0.5625, 0.578125, 0.609375, 0.570312, + 0.554688, 0.59375, 0.625, 0.609375, 0.625, 0.554688, 0.570312, 0.585938, 0.625, 0.570312, + 0.554688, 0.601562, 0.640625, 0.625, 0.640625, 0.554688, 0.570312, 0.59375, 0.640625, 0.578125, + 0.554688, 0.617188, 0.65625, 0.640625, 0.648438, 0.554688, 0.578125, 0.609375, 0.65625, 0.585938, + 0.546875, 0.632812, 0.664062, 0.65625, 0.664062, 0.546875, 0.585938, 0.625, 0.664062, 0.59375, 0.546875, 0.648438, 0.667969, 0.664062, 0.667969, 0.546875, 0.601562, 0.640625, 0.667969, 0.609375, - 0.539062, 0.664062, 0.667969, 0.667969, 0.667969, 0.539062, 0.617188, 0.65625, 0.667969, 0.625, + 0.539062, 0.664062, 0.667969, 0.667969, 0.667969, 0.539062, 0.617188, 0.65625, 0.667969, 0.625, 0.523438, 0.667969, 0.667969, 0.667969, 0.667969, 0.523438, 0.632812, 0.664062, 0.667969, 0.640625, - 0.5625, 0.554688, 0.570312, 0.5625, 0.570312, 0.570312, 0.578125, 0.570312, 0.585938, 0.570312, - 0.570312, 0.5625, 0.570312, 0.5625, 0.570312, 0.570312, 0.585938, 0.570312, 0.59375, 0.578125, - 0.570312, 0.5625, 0.578125, 0.570312, 0.578125, 0.578125, 0.59375, 0.578125, 0.609375, 0.585938, - 0.578125, 0.5625, 0.585938, 0.570312, 0.585938, 0.585938, 0.609375, 0.585938, 0.625, 0.601562, - 0.585938, 0.570312, 0.601562, 0.578125, 0.601562, 0.601562, 0.625, 0.601562, 0.640625, 0.617188, + 0.5625, 0.554688, 0.570312, 0.5625, 0.570312, 0.570312, 0.578125, 0.570312, 0.585938, 0.570312, + 0.570312, 0.5625, 0.570312, 0.5625, 0.570312, 0.570312, 0.585938, 0.570312, 0.59375, 0.578125, + 0.570312, 0.5625, 0.578125, 0.570312, 0.578125, 0.578125, 0.59375, 0.578125, 0.609375, 0.585938, + 0.578125, 0.5625, 0.585938, 0.570312, 0.585938, 0.585938, 0.609375, 0.585938, 0.625, 0.601562, + 0.585938, 0.570312, 0.601562, 0.578125, 0.601562, 0.601562, 0.625, 0.601562, 0.640625, 0.617188, 0.601562, 0.570312, 0.617188, 0.585938, 0.617188, 0.617188, 0.640625, 0.617188, 0.648438, 0.632812, - 0.617188, 0.578125, 0.632812, 0.601562, 0.632812, 0.632812, 0.65625, 0.632812, 0.664062, 0.648438, + 0.617188, 0.578125, 0.632812, 0.601562, 0.632812, 0.632812, 0.65625, 0.632812, 0.664062, 0.648438, 0.632812, 0.585938, 0.648438, 0.617188, 0.648438, 0.648438, 0.664062, 0.648438, 0.667969, 0.65625, - 0.648438, 0.601562, 0.664062, 0.632812, 0.664062, 0.65625, 0.667969, 0.664062, 0.667969, 0.664062, - 0.65625, 0.617188, 0.664062, 0.648438, 0.664062, 0.664062, 0.667969, 0.664062, 0.667969, 0.667969, - 0.578125, 0.570312, 0.570312, 0.578125, 0.570312, 0.5625, 0.570312, 0.578125, 0.5625, 0.554688, + 0.648438, 0.601562, 0.664062, 0.632812, 0.664062, 0.65625, 0.667969, 0.664062, 0.667969, 0.664062, + 0.65625, 0.617188, 0.664062, 0.648438, 0.664062, 0.664062, 0.667969, 0.664062, 0.667969, 0.667969, + 0.578125, 0.570312, 0.570312, 0.578125, 0.570312, 0.5625, 0.570312, 0.578125, 0.5625, 0.554688, 0.585938, 0.570312, 0.570312, 0.585938, 0.578125, 0.570312, 0.578125, 0.585938, 0.570312, 0.554688, - 0.601562, 0.585938, 0.578125, 0.59375, 0.585938, 0.570312, 0.585938, 0.601562, 0.570312, 0.554688, - 0.617188, 0.59375, 0.585938, 0.609375, 0.601562, 0.578125, 0.59375, 0.617188, 0.578125, 0.554688, - 0.632812, 0.601562, 0.59375, 0.625, 0.617188, 0.585938, 0.609375, 0.632812, 0.585938, 0.554688, - 0.648438, 0.617188, 0.609375, 0.640625, 0.632812, 0.59375, 0.625, 0.648438, 0.59375, 0.554688, - 0.65625, 0.632812, 0.625, 0.65625, 0.648438, 0.609375, 0.640625, 0.664062, 0.609375, 0.554688, - 0.664062, 0.648438, 0.640625, 0.664062, 0.65625, 0.625, 0.65625, 0.664062, 0.625, 0.554688, - 0.667969, 0.664062, 0.65625, 0.667969, 0.664062, 0.640625, 0.664062, 0.667969, 0.640625, 0.5625, - 0.667969, 0.667969, 0.664062, 0.667969, 0.667969, 0.648438, 0.667969, 0.667969, 0.65625, 0.5625, - 0.570312, 0.578125, 0.585938, 0.570312, 0.570312, 0.570312, 0.570312, 0.5625, 0.585938, 0.5625, - 0.578125, 0.585938, 0.59375, 0.570312, 0.578125, 0.578125, 0.578125, 0.5625, 0.59375, 0.5625, - 0.585938, 0.59375, 0.601562, 0.585938, 0.585938, 0.585938, 0.585938, 0.5625, 0.609375, 0.570312, - 0.601562, 0.609375, 0.617188, 0.59375, 0.59375, 0.601562, 0.59375, 0.570312, 0.625, 0.570312, - 0.617188, 0.625, 0.632812, 0.601562, 0.609375, 0.617188, 0.609375, 0.570312, 0.640625, 0.585938, - 0.632812, 0.640625, 0.648438, 0.617188, 0.625, 0.632812, 0.625, 0.585938, 0.648438, 0.59375, - 0.648438, 0.65625, 0.664062, 0.632812, 0.640625, 0.648438, 0.640625, 0.59375, 0.664062, 0.601562, - 0.65625, 0.664062, 0.667969, 0.648438, 0.65625, 0.65625, 0.648438, 0.601562, 0.667969, 0.617188, + 0.601562, 0.585938, 0.578125, 0.59375, 0.585938, 0.570312, 0.585938, 0.601562, 0.570312, 0.554688, + 0.617188, 0.59375, 0.585938, 0.609375, 0.601562, 0.578125, 0.59375, 0.617188, 0.578125, 0.554688, + 0.632812, 0.601562, 0.59375, 0.625, 0.617188, 0.585938, 0.609375, 0.632812, 0.585938, 0.554688, + 0.648438, 0.617188, 0.609375, 0.640625, 0.632812, 0.59375, 0.625, 0.648438, 0.59375, 0.554688, + 0.65625, 0.632812, 0.625, 0.65625, 0.648438, 0.609375, 0.640625, 0.664062, 0.609375, 0.554688, + 0.664062, 0.648438, 0.640625, 0.664062, 0.65625, 0.625, 0.65625, 0.664062, 0.625, 0.554688, + 0.667969, 0.664062, 0.65625, 0.667969, 0.664062, 0.640625, 0.664062, 0.667969, 0.640625, 0.5625, + 0.667969, 0.667969, 0.664062, 0.667969, 0.667969, 0.648438, 0.667969, 0.667969, 0.65625, 0.5625, + 0.570312, 0.578125, 0.585938, 0.570312, 0.570312, 0.570312, 0.570312, 0.5625, 0.585938, 0.5625, + 0.578125, 0.585938, 0.59375, 0.570312, 0.578125, 0.578125, 0.578125, 0.5625, 0.59375, 0.5625, + 0.585938, 0.59375, 0.601562, 0.585938, 0.585938, 0.585938, 0.585938, 0.5625, 0.609375, 0.570312, + 0.601562, 0.609375, 0.617188, 0.59375, 0.59375, 0.601562, 0.59375, 0.570312, 0.625, 0.570312, + 0.617188, 0.625, 0.632812, 0.601562, 0.609375, 0.617188, 0.609375, 0.570312, 0.640625, 0.585938, + 0.632812, 0.640625, 0.648438, 0.617188, 0.625, 0.632812, 0.625, 0.585938, 0.648438, 0.59375, + 0.648438, 0.65625, 0.664062, 0.632812, 0.640625, 0.648438, 0.640625, 0.59375, 0.664062, 0.601562, + 0.65625, 0.664062, 0.667969, 0.648438, 0.65625, 0.65625, 0.648438, 0.601562, 0.667969, 0.617188, 0.664062, 0.667969, 0.667969, 0.664062, 0.664062, 0.664062, 0.664062, 0.617188, 0.667969, 0.632812, 0.667969, 0.667969, 0.667969, 0.667969, 0.667969, 0.667969, 0.667969, 0.632812, 0.667969, 0.648438, 0.578125, 0.578125, 0.578125, 0.585938, 0.578125, 0.570312, 0.554688, 0.578125, 0.570312, 0.585938, - 0.585938, 0.585938, 0.585938, 0.59375, 0.585938, 0.570312, 0.5625, 0.585938, 0.578125, 0.59375, - 0.601562, 0.601562, 0.59375, 0.609375, 0.601562, 0.578125, 0.5625, 0.59375, 0.585938, 0.609375, - 0.617188, 0.617188, 0.609375, 0.625, 0.617188, 0.585938, 0.5625, 0.609375, 0.601562, 0.625, - 0.632812, 0.632812, 0.625, 0.640625, 0.632812, 0.59375, 0.570312, 0.625, 0.617188, 0.640625, - 0.648438, 0.648438, 0.640625, 0.65625, 0.648438, 0.609375, 0.570312, 0.640625, 0.632812, 0.65625, - 0.65625, 0.65625, 0.65625, 0.664062, 0.65625, 0.625, 0.578125, 0.65625, 0.648438, 0.664062, - 0.664062, 0.664062, 0.664062, 0.667969, 0.664062, 0.640625, 0.585938, 0.664062, 0.65625, 0.667969, - 0.667969, 0.667969, 0.667969, 0.667969, 0.667969, 0.65625, 0.601562, 0.667969, 0.664062, 0.667969, + 0.585938, 0.585938, 0.585938, 0.59375, 0.585938, 0.570312, 0.5625, 0.585938, 0.578125, 0.59375, + 0.601562, 0.601562, 0.59375, 0.609375, 0.601562, 0.578125, 0.5625, 0.59375, 0.585938, 0.609375, + 0.617188, 0.617188, 0.609375, 0.625, 0.617188, 0.585938, 0.5625, 0.609375, 0.601562, 0.625, + 0.632812, 0.632812, 0.625, 0.640625, 0.632812, 0.59375, 0.570312, 0.625, 0.617188, 0.640625, + 0.648438, 0.648438, 0.640625, 0.65625, 0.648438, 0.609375, 0.570312, 0.640625, 0.632812, 0.65625, + 0.65625, 0.65625, 0.65625, 0.664062, 0.65625, 0.625, 0.578125, 0.65625, 0.648438, 0.664062, + 0.664062, 0.664062, 0.664062, 0.667969, 0.664062, 0.640625, 0.585938, 0.664062, 0.65625, 0.667969, + 0.667969, 0.667969, 0.667969, 0.667969, 0.667969, 0.65625, 0.601562, 0.667969, 0.664062, 0.667969, 0.667969, 0.667969, 0.667969, 0.667969, 0.667969, 0.664062, 0.617188, 0.667969, 0.667969, 0.667969}, - std::vector{ - 0.554688, 0.570312, 0.585938, 0.578125, 0.585938, 0.554688, 0.5625, 0.570312, 0.585938, 0.5625, - 0.5625, 0.554688, 0.570312, 0.5625, 0.570312, 0.570312, 0.578125, 0.570312, 0.585938, 0.570312, - 0.578125, 0.570312, 0.570312, 0.578125, 0.570312, 0.5625, 0.570312, 0.578125, 0.5625, 0.554688, - 0.570312, 0.578125, 0.585938, 0.570312, 0.570312, 0.570312, 0.570312, 0.5625, 0.585938, 0.5625, - 0.578125, 0.578125, 0.578125, 0.585938, 0.578125, 0.570312, 0.554688, 0.578125, 0.570312, 0.585938}, - std::vector{ - 1.20312, 1.27344, 1.375, 1.32031, 1.35156, 1.20312, 1.22656, 1.25781, 1.375, 1.23438, - 1.25, 1.21875, 1.26562, 1.23438, 1.26562, 1.26562, 1.32031, 1.26562, 1.35156, 1.28906, - 1.34375, 1.27344, 1.25781, 1.32031, 1.28906, 1.24219, 1.28125, 1.34375, 1.24219, 1.21875, - 1.28906, 1.32031, 1.35156, 1.27344, 1.28125, 1.29688, 1.28125, 1.22656, 1.35156, 1.23438, - 1.32812, 1.32812, 1.32031, 1.35938, 1.32812, 1.25781, 1.21875, 1.32031, 1.28906, 1.375}), + std::vector{0.554688, 0.570312, 0.585938, 0.578125, 0.585938, 0.554688, 0.5625, 0.570312, 0.585938, + 0.5625, 0.5625, 0.554688, 0.570312, 0.5625, 0.570312, 0.570312, 0.578125, 0.570312, + 0.585938, 0.570312, 0.578125, 0.570312, 0.570312, 0.578125, 0.570312, 0.5625, 0.570312, + 0.578125, 0.5625, 0.554688, 0.570312, 0.578125, 0.585938, 0.570312, 0.570312, 0.570312, + 0.570312, 0.5625, 0.585938, 0.5625, 0.578125, 0.578125, 0.578125, 0.585938, 0.578125, + 0.570312, 0.554688, 0.578125, 0.570312, 0.585938}, + std::vector{1.20312, 1.27344, 1.375, 1.32031, 1.35156, 1.20312, 1.22656, 1.25781, 1.375, 1.23438, + 1.25, 1.21875, 1.26562, 1.23438, 1.26562, 1.26562, 1.32031, 1.26562, 1.35156, 1.28906, + 1.34375, 1.27344, 1.25781, 1.32031, 1.28906, 1.24219, 1.28125, 1.34375, 1.24219, 1.21875, + 1.28906, 1.32031, 1.35156, 1.27344, 1.28125, 1.29688, 1.28125, 1.22656, 1.35156, 1.23438, + 1.32812, 1.32812, 1.32031, 1.35938, 1.32812, 1.25781, 1.21875, 1.32031, 1.28906, 1.375}), TensorIteratorStaticParams( std::make_shared(), - 5, 10, 10, 10, - 0.7f, ov::op::RecurrentSequenceDirection::FORWARD, TensorIteratorBodyType::GRU, + 5, + 10, + 10, + 10, + 0.7f, + ov::op::RecurrentSequenceDirection::FORWARD, + TensorIteratorBodyType::GRU, ET, std::vector{ - 1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, - 3.125, 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, - 8.625, 4.75, 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 1.25, - 5.8125, 7.03125, 9.25, 4.75, 5.125, 6, 4.875, 2.25, 9.4375, 2.78125, - 8, 8.1875, 7.4375, 9.6875, 8.25, 3.8125, 1.82812, 7.21875, 5.65625, 8.875, - 8.75, 9, 8.4375, 1.76562, 8.4375, 1.34375, 3.45312, 2.53125, 1.53125, 8.875, - 7.03125, 1.88281, 6.3125, 4.78125, 7.03125, 9.625, 4.6875, 5.8125, 2.78125, 7.21875, - 3.59375, 3.84375, 2.28125, 7.1875, 8, 8.5, 4.6875, 1.16406, 1.30469, 7.75, - 6.625, 9.875, 6.9375, 7.71875, 3.6875, 3.53125, 5, 8.125, 3, 1.92188, - 1.65625, 5, 5.21875, 9.125, 1.85938, 3.64062, 9.125, 3.59375, 2.0625, 2.15625, - 5.71875, 1.17188, 1.75, 7.125, 9.25, 2.90625, 9.1875, 3.375, 3.6875, 5.4375, - 6.25, 1.47656, 6.0625, 6.15625, 6.5, 2.3125, 9.625, 6.3125, 3.34375, 7.3125, - 3.07812, 1.92188, 5.8125, 4.71875, 9.5, 7.25, 5.4375, 4.71875, 5.875, 1.45312, - 7.875, 5.8125, 1.40625, 6.96875, 2.25, 5.625, 8.125, 9.5, 1.26562, 6.25, - 8.9375, 9.125, 5.875, 2.23438, 5.03125, 2.25, 9, 8.25, 4.375, 4.5625, - 5.84375, 2.48438, 6.875, 9.375, 4.25, 4.125, 6.125, 7.75, 6.75, 7.53125, - 2.125, 8.9375, 7.1875, 6.625, 6.8125, 7.75, 4.1875, 4.125, 7.875, 3.42188, - 4.1875, 9.0625, 7.75, 4.84375, 8.875, 9.625, 1.10156, 6.96875, 5.46875, 6.59375, - 1.66406, 2.03125, 8.0625, 9.5, 1.57812, 5.0625, 4.1875, 6.1875, 9.5, 4.6875, - 4.40625, 3.125, 7.875, 9.125, 7.9375, 6.15625, 3.71875, 1.02344, 7.9375, 6.5625, - 2.375, 3.9375, 6.1875, 5.75, 1.07812, 9, 7.375, 4.1875, 5.25, 9.125, - 7.875, 6.625, 5.1875, 1.14062, 3.40625, 9.375, 8.5, 7.1875, 5.9375, 10, - 1.625, 2.54688, 5.25, 2.21875, 7.6875, 9.375, 2.71875, 7.25, 5.1875, 1.59375, - 3.0625, 7.8125, 5.5625, 7.78125, 2.875, 9.25, 1.4375, 7.375, 5.65625, 2.125, - 2.54688, 1.17188, 4.5625, 1.23438, 1.96875, 1.25, 5.5625, 3.21875, 1.92188, 8.75, - 3.59375, 5.84375, 3.07812, 5.96875, 9.6875, 8.5625, 3.5, 2.125, 3.09375, 3.5, - 1.82031, 6.25, 6.125, 9.75, 4.75, 6.0625, 4.3125, 1.16406, 8.3125, 8.1875, - 3.59375, 3.09375, 7.4375, 8.25, 6.5, 4.5, 4.8125, 8.75, 7.75, 7.71875, - 4.84375, 6, 4.84375, 2.21875, 4.25, 1.53906, 2.375, 2.09375, 9.375, 1.39844, - 9.25, 1.96875, 8, 3.03125, 6.5625, 7.40625, 1.32031, 6.03125, 6.875, 1.10938, - 2.15625, 1.64062, 3.65625, 9.6875, 4.25, 6.125, 3.46875, 2.82812, 1.66406, 3.26562, - 2.375, 7.6875, 2.45312, 2.75, 9.4375, 6.21875, 4.3125, 9.75, 1.45312, 8.625, - 7.65625, 3.15625, 3.6875, 5.4375, 2.84375, 6.5625, 9.8125, 8.4375, 9, 2.40625, - 7.8125, 1.16406, 6.875, 1.625, 1.35938, 5.375, 8.3125, 6.4375, 7.875, 6.125, - 5.09375, 3.84375, 5.78125, 9.875, 1.98438, 6.1875, 2.3125, 4.40625, 5.5625, 5.9375, - 2.9375, 7.6875, 9.25, 7, 5.15625, 3.375, 2.1875, 1.59375, 7.875, 4.3125, - 2.90625, 6.65625, 1.67188, 2.89062, 1.85938, 7.75, 2.45312, 1.59375, 4.1875, 3.34375, - 1.85938, 8.25, 2.28125, 2.73438, 9.375, 6.75, 6.1875, 5.71875, 8.5, 9.3125, - 6.625, 3.375, 3.90625, 1.59375, 7.5625, 7.625, 5.6875, 7.9375, 7.625, 9.125, - 2.48438, 9.375, 7.1875, 1.125, 4.8125, 3.09375, 7.5625, 6.5625, 7.8125, 9.5, - 4.5625, 9.5, 9.3125, 6, 2.82812, 9.25, 1.07031, 6.75, 9.3125, 4.5, - 3.65625, 5.375, 2.5, 6.4375, 1.21875, 5.9375, 5.0625, 9.3125, 8.25, 9.25, - 4.3125, 4.5625, 6.46875, 9.625, 1.3125, 2.5625, 4.1875, 2.125, 1.70312, 2.21875, - 7.25, 5.5625, 1.10938, 1.1875, 5.125, 9.5, 9.625, 8.4375, 4, 1.13281, - 5.25, 2.57812, 1.94531, 3.98438, 5.5, 2.17188, 9, 8.25, 5.8125, 4.09375, - 3.53125, 9.4375, 4.1875, 6.25, 9.0625, 8.875, 3.17188, 8.625, 1.21875, 9.125, - 9.6875, 5.125, 4.875, 5.90625, 4.125, 8.125, 6.1875, 3.5625, 2.125, 5.40625, - 9.5, 6.375, 3.8125, 1.14062, 9.5625, 6.3125, 2.96875, 4.875, 3.23438, 8.25, - 8.75, 3.84375, 3.125, 9, 8.3125, 6.1875, 5.875, 2.65625, 2.71875, 8.0625, - 6.3125, 6.5, 1.42969, 1.48438, 1.14062, 4.78125, 1.44531, 7.125, 4.59375, 10}, - std::vector{ - 1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, - 3.125, 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, - 8.625, 4.75, 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 1.25, - 5.8125, 7.03125, 9.25, 4.75, 5.125, 6, 4.875, 2.25, 9.4375, 2.78125, - 8, 8.1875, 7.4375, 9.6875, 8.25, 3.8125, 1.82812, 7.21875, 5.65625, 10}, + 1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, 3.125, + 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, 8.625, 4.75, + 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 1.25, 5.8125, 7.03125, 9.25, + 4.75, 5.125, 6, 4.875, 2.25, 9.4375, 2.78125, 8, 8.1875, 7.4375, 9.6875, + 8.25, 3.8125, 1.82812, 7.21875, 5.65625, 8.875, 8.75, 9, 8.4375, 1.76562, 8.4375, + 1.34375, 3.45312, 2.53125, 1.53125, 8.875, 7.03125, 1.88281, 6.3125, 4.78125, 7.03125, 9.625, + 4.6875, 5.8125, 2.78125, 7.21875, 3.59375, 3.84375, 2.28125, 7.1875, 8, 8.5, 4.6875, + 1.16406, 1.30469, 7.75, 6.625, 9.875, 6.9375, 7.71875, 3.6875, 3.53125, 5, 8.125, + 3, 1.92188, 1.65625, 5, 5.21875, 9.125, 1.85938, 3.64062, 9.125, 3.59375, 2.0625, + 2.15625, 5.71875, 1.17188, 1.75, 7.125, 9.25, 2.90625, 9.1875, 3.375, 3.6875, 5.4375, + 6.25, 1.47656, 6.0625, 6.15625, 6.5, 2.3125, 9.625, 6.3125, 3.34375, 7.3125, 3.07812, + 1.92188, 5.8125, 4.71875, 9.5, 7.25, 5.4375, 4.71875, 5.875, 1.45312, 7.875, 5.8125, + 1.40625, 6.96875, 2.25, 5.625, 8.125, 9.5, 1.26562, 6.25, 8.9375, 9.125, 5.875, + 2.23438, 5.03125, 2.25, 9, 8.25, 4.375, 4.5625, 5.84375, 2.48438, 6.875, 9.375, + 4.25, 4.125, 6.125, 7.75, 6.75, 7.53125, 2.125, 8.9375, 7.1875, 6.625, 6.8125, + 7.75, 4.1875, 4.125, 7.875, 3.42188, 4.1875, 9.0625, 7.75, 4.84375, 8.875, 9.625, + 1.10156, 6.96875, 5.46875, 6.59375, 1.66406, 2.03125, 8.0625, 9.5, 1.57812, 5.0625, 4.1875, + 6.1875, 9.5, 4.6875, 4.40625, 3.125, 7.875, 9.125, 7.9375, 6.15625, 3.71875, 1.02344, + 7.9375, 6.5625, 2.375, 3.9375, 6.1875, 5.75, 1.07812, 9, 7.375, 4.1875, 5.25, + 9.125, 7.875, 6.625, 5.1875, 1.14062, 3.40625, 9.375, 8.5, 7.1875, 5.9375, 10, + 1.625, 2.54688, 5.25, 2.21875, 7.6875, 9.375, 2.71875, 7.25, 5.1875, 1.59375, 3.0625, + 7.8125, 5.5625, 7.78125, 2.875, 9.25, 1.4375, 7.375, 5.65625, 2.125, 2.54688, 1.17188, + 4.5625, 1.23438, 1.96875, 1.25, 5.5625, 3.21875, 1.92188, 8.75, 3.59375, 5.84375, 3.07812, + 5.96875, 9.6875, 8.5625, 3.5, 2.125, 3.09375, 3.5, 1.82031, 6.25, 6.125, 9.75, + 4.75, 6.0625, 4.3125, 1.16406, 8.3125, 8.1875, 3.59375, 3.09375, 7.4375, 8.25, 6.5, + 4.5, 4.8125, 8.75, 7.75, 7.71875, 4.84375, 6, 4.84375, 2.21875, 4.25, 1.53906, + 2.375, 2.09375, 9.375, 1.39844, 9.25, 1.96875, 8, 3.03125, 6.5625, 7.40625, 1.32031, + 6.03125, 6.875, 1.10938, 2.15625, 1.64062, 3.65625, 9.6875, 4.25, 6.125, 3.46875, 2.82812, + 1.66406, 3.26562, 2.375, 7.6875, 2.45312, 2.75, 9.4375, 6.21875, 4.3125, 9.75, 1.45312, + 8.625, 7.65625, 3.15625, 3.6875, 5.4375, 2.84375, 6.5625, 9.8125, 8.4375, 9, 2.40625, + 7.8125, 1.16406, 6.875, 1.625, 1.35938, 5.375, 8.3125, 6.4375, 7.875, 6.125, 5.09375, + 3.84375, 5.78125, 9.875, 1.98438, 6.1875, 2.3125, 4.40625, 5.5625, 5.9375, 2.9375, 7.6875, + 9.25, 7, 5.15625, 3.375, 2.1875, 1.59375, 7.875, 4.3125, 2.90625, 6.65625, 1.67188, + 2.89062, 1.85938, 7.75, 2.45312, 1.59375, 4.1875, 3.34375, 1.85938, 8.25, 2.28125, 2.73438, + 9.375, 6.75, 6.1875, 5.71875, 8.5, 9.3125, 6.625, 3.375, 3.90625, 1.59375, 7.5625, + 7.625, 5.6875, 7.9375, 7.625, 9.125, 2.48438, 9.375, 7.1875, 1.125, 4.8125, 3.09375, + 7.5625, 6.5625, 7.8125, 9.5, 4.5625, 9.5, 9.3125, 6, 2.82812, 9.25, 1.07031, + 6.75, 9.3125, 4.5, 3.65625, 5.375, 2.5, 6.4375, 1.21875, 5.9375, 5.0625, 9.3125, + 8.25, 9.25, 4.3125, 4.5625, 6.46875, 9.625, 1.3125, 2.5625, 4.1875, 2.125, 1.70312, + 2.21875, 7.25, 5.5625, 1.10938, 1.1875, 5.125, 9.5, 9.625, 8.4375, 4, 1.13281, + 5.25, 2.57812, 1.94531, 3.98438, 5.5, 2.17188, 9, 8.25, 5.8125, 4.09375, 3.53125, + 9.4375, 4.1875, 6.25, 9.0625, 8.875, 3.17188, 8.625, 1.21875, 9.125, 9.6875, 5.125, + 4.875, 5.90625, 4.125, 8.125, 6.1875, 3.5625, 2.125, 5.40625, 9.5, 6.375, 3.8125, + 1.14062, 9.5625, 6.3125, 2.96875, 4.875, 3.23438, 8.25, 8.75, 3.84375, 3.125, 9, + 8.3125, 6.1875, 5.875, 2.65625, 2.71875, 8.0625, 6.3125, 6.5, 1.42969, 1.48438, 1.14062, + 4.78125, 1.44531, 7.125, 4.59375, 10}, + std::vector{1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, + 3.125, 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, + 8.625, 4.75, 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 1.25, + 5.8125, 7.03125, 9.25, 4.75, 5.125, 6, 4.875, 2.25, 9.4375, 2.78125, + 8, 8.1875, 7.4375, 9.6875, 8.25, 3.8125, 1.82812, 7.21875, 5.65625, 10}, std::vector{0}, std::vector{10, 10, 10, 10, 10}, std::vector{ - 1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, - 3.125, 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, - 8.625, 4.75, 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 1.25, - 5.8125, 7.03125, 9.25, 4.75, 5.125, 6, 4.875, 2.25, 9.4375, 2.78125, - 8, 8.1875, 7.4375, 9.6875, 8.25, 3.8125, 1.82812, 7.21875, 5.65625, 8.875, - 8.75, 9, 8.4375, 1.76562, 8.4375, 1.34375, 3.45312, 2.53125, 1.53125, 8.875, - 7.03125, 1.88281, 6.3125, 4.78125, 7.03125, 9.625, 4.6875, 5.8125, 2.78125, 7.21875, - 3.59375, 3.84375, 2.28125, 7.1875, 8, 8.5, 4.6875, 1.16406, 1.30469, 7.75, - 6.625, 9.875, 6.9375, 7.71875, 3.6875, 3.53125, 5, 8.125, 3, 1.92188, - 1.65625, 5, 5.21875, 9.125, 1.85938, 3.64062, 9.125, 3.59375, 2.0625, 2.15625, - 5.71875, 1.17188, 1.75, 7.125, 9.25, 2.90625, 9.1875, 3.375, 3.6875, 5.4375, - 6.25, 1.47656, 6.0625, 6.15625, 6.5, 2.3125, 9.625, 6.3125, 3.34375, 7.3125, - 3.07812, 1.92188, 5.8125, 4.71875, 9.5, 7.25, 5.4375, 4.71875, 5.875, 1.45312, - 7.875, 5.8125, 1.40625, 6.96875, 2.25, 5.625, 8.125, 9.5, 1.26562, 6.25, - 8.9375, 9.125, 5.875, 2.23438, 5.03125, 2.25, 9, 8.25, 4.375, 4.5625, - 5.84375, 2.48438, 6.875, 9.375, 4.25, 4.125, 6.125, 7.75, 6.75, 7.53125, - 2.125, 8.9375, 7.1875, 6.625, 6.8125, 7.75, 4.1875, 4.125, 7.875, 3.42188, - 4.1875, 9.0625, 7.75, 4.84375, 8.875, 9.625, 1.10156, 6.96875, 5.46875, 6.59375, - 1.66406, 2.03125, 8.0625, 9.5, 1.57812, 5.0625, 4.1875, 6.1875, 9.5, 4.6875, - 4.40625, 3.125, 7.875, 9.125, 7.9375, 6.15625, 3.71875, 1.02344, 7.9375, 6.5625, - 2.375, 3.9375, 6.1875, 5.75, 1.07812, 9, 7.375, 4.1875, 5.25, 9.125, - 7.875, 6.625, 5.1875, 1.14062, 3.40625, 9.375, 8.5, 7.1875, 5.9375, 10, - 1.625, 2.54688, 5.25, 2.21875, 7.6875, 9.375, 2.71875, 7.25, 5.1875, 1.59375, - 3.0625, 7.8125, 5.5625, 7.78125, 2.875, 9.25, 1.4375, 7.375, 5.65625, 2.125, - 2.54688, 1.17188, 4.5625, 1.23438, 1.96875, 1.25, 5.5625, 3.21875, 1.92188, 8.75, - 3.59375, 5.84375, 3.07812, 5.96875, 9.6875, 8.5625, 3.5, 2.125, 3.09375, 3.5, - 1.82031, 6.25, 6.125, 9.75, 4.75, 6.0625, 4.3125, 1.16406, 8.3125, 8.1875, - 3.59375, 3.09375, 7.4375, 8.25, 6.5, 4.5, 4.8125, 8.75, 7.75, 7.71875, - 4.84375, 6, 4.84375, 2.21875, 4.25, 1.53906, 2.375, 2.09375, 9.375, 1.39844, - 9.25, 1.96875, 8, 3.03125, 6.5625, 7.40625, 1.32031, 6.03125, 6.875, 10}, + 1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, 3.125, + 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, 8.625, 4.75, + 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 1.25, 5.8125, 7.03125, 9.25, + 4.75, 5.125, 6, 4.875, 2.25, 9.4375, 2.78125, 8, 8.1875, 7.4375, 9.6875, + 8.25, 3.8125, 1.82812, 7.21875, 5.65625, 8.875, 8.75, 9, 8.4375, 1.76562, 8.4375, + 1.34375, 3.45312, 2.53125, 1.53125, 8.875, 7.03125, 1.88281, 6.3125, 4.78125, 7.03125, 9.625, + 4.6875, 5.8125, 2.78125, 7.21875, 3.59375, 3.84375, 2.28125, 7.1875, 8, 8.5, 4.6875, + 1.16406, 1.30469, 7.75, 6.625, 9.875, 6.9375, 7.71875, 3.6875, 3.53125, 5, 8.125, + 3, 1.92188, 1.65625, 5, 5.21875, 9.125, 1.85938, 3.64062, 9.125, 3.59375, 2.0625, + 2.15625, 5.71875, 1.17188, 1.75, 7.125, 9.25, 2.90625, 9.1875, 3.375, 3.6875, 5.4375, + 6.25, 1.47656, 6.0625, 6.15625, 6.5, 2.3125, 9.625, 6.3125, 3.34375, 7.3125, 3.07812, + 1.92188, 5.8125, 4.71875, 9.5, 7.25, 5.4375, 4.71875, 5.875, 1.45312, 7.875, 5.8125, + 1.40625, 6.96875, 2.25, 5.625, 8.125, 9.5, 1.26562, 6.25, 8.9375, 9.125, 5.875, + 2.23438, 5.03125, 2.25, 9, 8.25, 4.375, 4.5625, 5.84375, 2.48438, 6.875, 9.375, + 4.25, 4.125, 6.125, 7.75, 6.75, 7.53125, 2.125, 8.9375, 7.1875, 6.625, 6.8125, + 7.75, 4.1875, 4.125, 7.875, 3.42188, 4.1875, 9.0625, 7.75, 4.84375, 8.875, 9.625, + 1.10156, 6.96875, 5.46875, 6.59375, 1.66406, 2.03125, 8.0625, 9.5, 1.57812, 5.0625, 4.1875, + 6.1875, 9.5, 4.6875, 4.40625, 3.125, 7.875, 9.125, 7.9375, 6.15625, 3.71875, 1.02344, + 7.9375, 6.5625, 2.375, 3.9375, 6.1875, 5.75, 1.07812, 9, 7.375, 4.1875, 5.25, + 9.125, 7.875, 6.625, 5.1875, 1.14062, 3.40625, 9.375, 8.5, 7.1875, 5.9375, 10, + 1.625, 2.54688, 5.25, 2.21875, 7.6875, 9.375, 2.71875, 7.25, 5.1875, 1.59375, 3.0625, + 7.8125, 5.5625, 7.78125, 2.875, 9.25, 1.4375, 7.375, 5.65625, 2.125, 2.54688, 1.17188, + 4.5625, 1.23438, 1.96875, 1.25, 5.5625, 3.21875, 1.92188, 8.75, 3.59375, 5.84375, 3.07812, + 5.96875, 9.6875, 8.5625, 3.5, 2.125, 3.09375, 3.5, 1.82031, 6.25, 6.125, 9.75, + 4.75, 6.0625, 4.3125, 1.16406, 8.3125, 8.1875, 3.59375, 3.09375, 7.4375, 8.25, 6.5, + 4.5, 4.8125, 8.75, 7.75, 7.71875, 4.84375, 6, 4.84375, 2.21875, 4.25, 1.53906, + 2.375, 2.09375, 9.375, 1.39844, 9.25, 1.96875, 8, 3.03125, 6.5625, 7.40625, 1.32031, + 6.03125, 6.875, 10}, std::vector{ - 1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, - 3.125, 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, - 8.625, 4.75, 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 1.25, - 5.8125, 7.03125, 9.25, 4.75, 5.125, 6, 4.875, 2.25, 9.4375, 2.78125, - 8, 8.1875, 7.4375, 9.6875, 8.25, 3.8125, 1.82812, 7.21875, 5.65625, 8.875, - 8.75, 9, 8.4375, 1.76562, 8.4375, 1.34375, 3.45312, 2.53125, 1.53125, 8.875, - 7.03125, 1.88281, 6.3125, 4.78125, 7.03125, 9.625, 4.6875, 5.8125, 2.78125, 7.21875, - 3.59375, 3.84375, 2.28125, 7.1875, 8, 8.5, 4.6875, 1.16406, 1.30469, 7.75, - 6.625, 9.875, 6.9375, 7.71875, 3.6875, 3.53125, 5, 8.125, 3, 1.92188, - 1.65625, 5, 5.21875, 9.125, 1.85938, 3.64062, 9.125, 3.59375, 2.0625, 2.15625, - 5.71875, 1.17188, 1.75, 7.125, 9.25, 2.90625, 9.1875, 3.375, 3.6875, 5.4375, - 6.25, 1.47656, 6.0625, 6.15625, 6.5, 2.3125, 9.625, 6.3125, 3.34375, 7.3125, - 3.07812, 1.92188, 5.8125, 4.71875, 9.5, 7.25, 5.4375, 4.71875, 5.875, 1.45312, - 7.875, 5.8125, 1.40625, 6.96875, 2.25, 5.625, 8.125, 9.5, 1.26562, 6.25, - 8.9375, 9.125, 5.875, 2.23438, 5.03125, 2.25, 9, 8.25, 4.375, 4.5625, - 5.84375, 2.48438, 6.875, 9.375, 4.25, 4.125, 6.125, 7.75, 6.75, 7.53125, - 2.125, 8.9375, 7.1875, 6.625, 6.8125, 7.75, 4.1875, 4.125, 7.875, 3.42188, - 4.1875, 9.0625, 7.75, 4.84375, 8.875, 9.625, 1.10156, 6.96875, 5.46875, 6.59375, - 1.66406, 2.03125, 8.0625, 9.5, 1.57812, 5.0625, 4.1875, 6.1875, 9.5, 4.6875, - 4.40625, 3.125, 7.875, 9.125, 7.9375, 6.15625, 3.71875, 1.02344, 7.9375, 6.5625, - 2.375, 3.9375, 6.1875, 5.75, 1.07812, 9, 7.375, 4.1875, 5.25, 9.125, - 7.875, 6.625, 5.1875, 1.14062, 3.40625, 9.375, 8.5, 7.1875, 5.9375, 10, - 1.625, 2.54688, 5.25, 2.21875, 7.6875, 9.375, 2.71875, 7.25, 5.1875, 1.59375, - 3.0625, 7.8125, 5.5625, 7.78125, 2.875, 9.25, 1.4375, 7.375, 5.65625, 2.125, - 2.54688, 1.17188, 4.5625, 1.23438, 1.96875, 1.25, 5.5625, 3.21875, 1.92188, 8.75, - 3.59375, 5.84375, 3.07812, 5.96875, 9.6875, 8.5625, 3.5, 2.125, 3.09375, 3.5, - 1.82031, 6.25, 6.125, 9.75, 4.75, 6.0625, 4.3125, 1.16406, 8.3125, 8.1875, - 3.59375, 3.09375, 7.4375, 8.25, 6.5, 4.5, 4.8125, 8.75, 7.75, 7.71875, - 4.84375, 6, 4.84375, 2.21875, 4.25, 1.53906, 2.375, 2.09375, 9.375, 1.39844, - 9.25, 1.96875, 8, 3.03125, 6.5625, 7.40625, 1.32031, 6.03125, 6.875, 10}, + 1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, 3.125, + 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, 8.625, 4.75, + 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 1.25, 5.8125, 7.03125, 9.25, + 4.75, 5.125, 6, 4.875, 2.25, 9.4375, 2.78125, 8, 8.1875, 7.4375, 9.6875, + 8.25, 3.8125, 1.82812, 7.21875, 5.65625, 8.875, 8.75, 9, 8.4375, 1.76562, 8.4375, + 1.34375, 3.45312, 2.53125, 1.53125, 8.875, 7.03125, 1.88281, 6.3125, 4.78125, 7.03125, 9.625, + 4.6875, 5.8125, 2.78125, 7.21875, 3.59375, 3.84375, 2.28125, 7.1875, 8, 8.5, 4.6875, + 1.16406, 1.30469, 7.75, 6.625, 9.875, 6.9375, 7.71875, 3.6875, 3.53125, 5, 8.125, + 3, 1.92188, 1.65625, 5, 5.21875, 9.125, 1.85938, 3.64062, 9.125, 3.59375, 2.0625, + 2.15625, 5.71875, 1.17188, 1.75, 7.125, 9.25, 2.90625, 9.1875, 3.375, 3.6875, 5.4375, + 6.25, 1.47656, 6.0625, 6.15625, 6.5, 2.3125, 9.625, 6.3125, 3.34375, 7.3125, 3.07812, + 1.92188, 5.8125, 4.71875, 9.5, 7.25, 5.4375, 4.71875, 5.875, 1.45312, 7.875, 5.8125, + 1.40625, 6.96875, 2.25, 5.625, 8.125, 9.5, 1.26562, 6.25, 8.9375, 9.125, 5.875, + 2.23438, 5.03125, 2.25, 9, 8.25, 4.375, 4.5625, 5.84375, 2.48438, 6.875, 9.375, + 4.25, 4.125, 6.125, 7.75, 6.75, 7.53125, 2.125, 8.9375, 7.1875, 6.625, 6.8125, + 7.75, 4.1875, 4.125, 7.875, 3.42188, 4.1875, 9.0625, 7.75, 4.84375, 8.875, 9.625, + 1.10156, 6.96875, 5.46875, 6.59375, 1.66406, 2.03125, 8.0625, 9.5, 1.57812, 5.0625, 4.1875, + 6.1875, 9.5, 4.6875, 4.40625, 3.125, 7.875, 9.125, 7.9375, 6.15625, 3.71875, 1.02344, + 7.9375, 6.5625, 2.375, 3.9375, 6.1875, 5.75, 1.07812, 9, 7.375, 4.1875, 5.25, + 9.125, 7.875, 6.625, 5.1875, 1.14062, 3.40625, 9.375, 8.5, 7.1875, 5.9375, 10, + 1.625, 2.54688, 5.25, 2.21875, 7.6875, 9.375, 2.71875, 7.25, 5.1875, 1.59375, 3.0625, + 7.8125, 5.5625, 7.78125, 2.875, 9.25, 1.4375, 7.375, 5.65625, 2.125, 2.54688, 1.17188, + 4.5625, 1.23438, 1.96875, 1.25, 5.5625, 3.21875, 1.92188, 8.75, 3.59375, 5.84375, 3.07812, + 5.96875, 9.6875, 8.5625, 3.5, 2.125, 3.09375, 3.5, 1.82031, 6.25, 6.125, 9.75, + 4.75, 6.0625, 4.3125, 1.16406, 8.3125, 8.1875, 3.59375, 3.09375, 7.4375, 8.25, 6.5, + 4.5, 4.8125, 8.75, 7.75, 7.71875, 4.84375, 6, 4.84375, 2.21875, 4.25, 1.53906, + 2.375, 2.09375, 9.375, 1.39844, 9.25, 1.96875, 8, 3.03125, 6.5625, 7.40625, 1.32031, + 6.03125, 6.875, 10}, + std::vector{1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, + 3.125, 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, + 8.625, 4.75, 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 10}, std::vector{ - 1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, - 3.125, 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, - 8.625, 4.75, 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 10}, - std::vector{ - 0.867188, 3.375, 6.875, 5.1875, 6.4375, 0.867188, 1.64062, 2.65625, 6.875, 1.75, - 0.777344, 2.4375, 4.75, 3.65625, 4.5, 0.777344, 1.29688, 1.96875, 4.75, 1.375, - 0.714844, 1.82812, 3.375, 2.625, 3.1875, 0.714844, 1.0625, 1.51562, 3.375, 1.11719, - 0.675781, 1.42188, 2.4375, 1.95312, 2.3125, 0.675781, 0.910156, 1.21875, 2.4375, 0.945312, - 0.648438, 1.14844, 1.82812, 1.5, 1.75, 0.648438, 0.808594, 1.01562, 1.82812, 0.832031, - 0.632812, 0.964844, 1.42188, 1.20312, 1.375, 0.632812, 0.738281, 0.878906, 1.42188, 0.753906, - 0.621094, 0.839844, 1.14844, 1, 1.11719, 0.621094, 0.691406, 0.785156, 1.14844, 0.699219, + 0.867188, 3.375, 6.875, 5.1875, 6.4375, 0.867188, 1.64062, 2.65625, 6.875, 1.75, + 0.777344, 2.4375, 4.75, 3.65625, 4.5, 0.777344, 1.29688, 1.96875, 4.75, 1.375, + 0.714844, 1.82812, 3.375, 2.625, 3.1875, 0.714844, 1.0625, 1.51562, 3.375, 1.11719, + 0.675781, 1.42188, 2.4375, 1.95312, 2.3125, 0.675781, 0.910156, 1.21875, 2.4375, 0.945312, + 0.648438, 1.14844, 1.82812, 1.5, 1.75, 0.648438, 0.808594, 1.01562, 1.82812, 0.832031, + 0.632812, 0.964844, 1.42188, 1.20312, 1.375, 0.632812, 0.738281, 0.878906, 1.42188, 0.753906, + 0.621094, 0.839844, 1.14844, 1, 1.11719, 0.621094, 0.691406, 0.785156, 1.14844, 0.699219, 0.613281, 0.761719, 0.964844, 0.867188, 0.945312, 0.613281, 0.660156, 0.722656, 0.964844, 0.664062, 0.609375, 0.707031, 0.839844, 0.777344, 0.832031, 0.609375, 0.640625, 0.679688, 0.839844, 0.640625, - 0.605469, 0.671875, 0.761719, 0.714844, 0.753906, 0.605469, 0.625, 0.652344, 0.761719, 0.625, - 2.28125, 1.42188, 3.25, 1.98438, 3.1875, 2.9375, 4.875, 3.25, 6.4375, 4.09375, - 1.71875, 1.14844, 2.34375, 1.53125, 2.3125, 2.15625, 3.4375, 2.34375, 4.5, 2.9375, - 1.34375, 0.964844, 1.76562, 1.21875, 1.75, 1.64062, 2.46875, 1.76562, 3.1875, 2.15625, - 1.09375, 0.839844, 1.375, 1.01562, 1.375, 1.29688, 1.84375, 1.375, 2.3125, 1.64062, - 0.929688, 0.761719, 1.11719, 0.878906, 1.11719, 1.0625, 1.4375, 1.11719, 1.75, 1.29688, - 0.816406, 0.707031, 0.945312, 0.785156, 0.945312, 0.910156, 1.15625, 0.945312, 1.375, 1.0625, - 0.746094, 0.671875, 0.832031, 0.722656, 0.832031, 0.808594, 0.972656, 0.832031, 1.11719, 0.910156, + 0.605469, 0.671875, 0.761719, 0.714844, 0.753906, 0.605469, 0.625, 0.652344, 0.761719, 0.625, + 2.28125, 1.42188, 3.25, 1.98438, 3.1875, 2.9375, 4.875, 3.25, 6.4375, 4.09375, + 1.71875, 1.14844, 2.34375, 1.53125, 2.3125, 2.15625, 3.4375, 2.34375, 4.5, 2.9375, + 1.34375, 0.964844, 1.76562, 1.21875, 1.75, 1.64062, 2.46875, 1.76562, 3.1875, 2.15625, + 1.09375, 0.839844, 1.375, 1.01562, 1.375, 1.29688, 1.84375, 1.375, 2.3125, 1.64062, + 0.929688, 0.761719, 1.11719, 0.878906, 1.11719, 1.0625, 1.4375, 1.11719, 1.75, 1.29688, + 0.816406, 0.707031, 0.945312, 0.785156, 0.945312, 0.910156, 1.15625, 0.945312, 1.375, 1.0625, + 0.746094, 0.671875, 0.832031, 0.722656, 0.832031, 0.808594, 0.972656, 0.832031, 1.11719, 0.910156, 0.695312, 0.648438, 0.753906, 0.679688, 0.753906, 0.738281, 0.847656, 0.753906, 0.945312, 0.808594, 0.664062, 0.632812, 0.699219, 0.652344, 0.699219, 0.691406, 0.761719, 0.699219, 0.832031, 0.738281, 0.640625, 0.621094, 0.664062, 0.632812, 0.664062, 0.660156, 0.707031, 0.664062, 0.753906, 0.691406, - 5.9375, 3.375, 2.71875, 4.9375, 4, 2.09375, 3.53125, 6.125, 2.21875, 1.03125, - 4.15625, 2.4375, 2, 3.5, 2.875, 1.59375, 2.53125, 4.25, 1.6875, 0.886719, - 2.96875, 1.82812, 1.53125, 2.53125, 2.125, 1.26562, 1.89062, 3.03125, 1.32812, 0.792969, - 2.1875, 1.42188, 1.21875, 1.89062, 1.625, 1.04688, 1.46875, 2.21875, 1.08594, 0.730469, - 1.65625, 1.14844, 1.01562, 1.46875, 1.28125, 0.898438, 1.17969, 1.6875, 0.925781, 0.6875, - 1.3125, 0.964844, 0.878906, 1.17969, 1.05469, 0.800781, 0.988281, 1.32812, 0.816406, 0.65625, - 1.07812, 0.839844, 0.785156, 0.988281, 0.902344, 0.730469, 0.855469, 1.08594, 0.746094, 0.636719, - 0.917969, 0.761719, 0.722656, 0.855469, 0.800781, 0.6875, 0.769531, 0.925781, 0.695312, 0.625, - 0.808594, 0.707031, 0.679688, 0.769531, 0.730469, 0.65625, 0.714844, 0.816406, 0.664062, 0.617188, - 0.738281, 0.671875, 0.652344, 0.714844, 0.6875, 0.636719, 0.675781, 0.746094, 0.640625, 0.609375, - 4.0625, 4.875, 6.375, 3.375, 3.625, 4.1875, 3.4375, 1.70312, 6.5, 2.0625, - 2.90625, 3.4375, 4.4375, 2.4375, 2.59375, 3, 2.46875, 1.34375, 4.5, 1.57812, - 2.125, 2.46875, 3.15625, 1.82812, 1.9375, 2.1875, 1.84375, 1.09375, 3.1875, 1.25, - 1.625, 1.84375, 2.28125, 1.42188, 1.5, 1.65625, 1.4375, 0.929688, 2.3125, 1.03125, - 1.28125, 1.4375, 1.71875, 1.14844, 1.20312, 1.3125, 1.15625, 0.816406, 1.75, 0.886719, - 1.05469, 1.15625, 1.34375, 0.964844, 1, 1.07812, 0.972656, 0.746094, 1.375, 0.792969, - 0.902344, 0.972656, 1.09375, 0.839844, 0.867188, 0.917969, 0.847656, 0.695312, 1.11719, 0.730469, + 5.9375, 3.375, 2.71875, 4.9375, 4, 2.09375, 3.53125, 6.125, 2.21875, 1.03125, + 4.15625, 2.4375, 2, 3.5, 2.875, 1.59375, 2.53125, 4.25, 1.6875, 0.886719, + 2.96875, 1.82812, 1.53125, 2.53125, 2.125, 1.26562, 1.89062, 3.03125, 1.32812, 0.792969, + 2.1875, 1.42188, 1.21875, 1.89062, 1.625, 1.04688, 1.46875, 2.21875, 1.08594, 0.730469, + 1.65625, 1.14844, 1.01562, 1.46875, 1.28125, 0.898438, 1.17969, 1.6875, 0.925781, 0.6875, + 1.3125, 0.964844, 0.878906, 1.17969, 1.05469, 0.800781, 0.988281, 1.32812, 0.816406, 0.65625, + 1.07812, 0.839844, 0.785156, 0.988281, 0.902344, 0.730469, 0.855469, 1.08594, 0.746094, 0.636719, + 0.917969, 0.761719, 0.722656, 0.855469, 0.800781, 0.6875, 0.769531, 0.925781, 0.695312, 0.625, + 0.808594, 0.707031, 0.679688, 0.769531, 0.730469, 0.65625, 0.714844, 0.816406, 0.664062, 0.617188, + 0.738281, 0.671875, 0.652344, 0.714844, 0.6875, 0.636719, 0.675781, 0.746094, 0.640625, 0.609375, + 4.0625, 4.875, 6.375, 3.375, 3.625, 4.1875, 3.4375, 1.70312, 6.5, 2.0625, + 2.90625, 3.4375, 4.4375, 2.4375, 2.59375, 3, 2.46875, 1.34375, 4.5, 1.57812, + 2.125, 2.46875, 3.15625, 1.82812, 1.9375, 2.1875, 1.84375, 1.09375, 3.1875, 1.25, + 1.625, 1.84375, 2.28125, 1.42188, 1.5, 1.65625, 1.4375, 0.929688, 2.3125, 1.03125, + 1.28125, 1.4375, 1.71875, 1.14844, 1.20312, 1.3125, 1.15625, 0.816406, 1.75, 0.886719, + 1.05469, 1.15625, 1.34375, 0.964844, 1, 1.07812, 0.972656, 0.746094, 1.375, 0.792969, + 0.902344, 0.972656, 1.09375, 0.839844, 0.867188, 0.917969, 0.847656, 0.695312, 1.11719, 0.730469, 0.800781, 0.847656, 0.929688, 0.761719, 0.777344, 0.808594, 0.761719, 0.664062, 0.945312, 0.6875, 0.730469, 0.761719, 0.816406, 0.707031, 0.714844, 0.738281, 0.707031, 0.640625, 0.832031, 0.65625, - 0.6875, 0.707031, 0.746094, 0.671875, 0.675781, 0.691406, 0.671875, 0.625, 0.753906, 0.636719, - 5.53125, 5.65625, 5.125, 6.65625, 5.6875, 2.71875, 1.42188, 5, 3.96875, 6.875, - 3.875, 3.96875, 3.625, 4.625, 4, 2, 1.14844, 3.53125, 2.84375, 4.75, - 2.78125, 2.84375, 2.59375, 3.28125, 2.875, 1.53125, 0.964844, 2.53125, 2.09375, 3.375, - 2.0625, 2.09375, 1.9375, 2.375, 2.125, 1.21875, 0.839844, 1.89062, 1.59375, 2.4375, - 1.57812, 1.59375, 1.5, 1.78125, 1.625, 1.01562, 0.761719, 1.46875, 1.26562, 1.82812, - 1.25, 1.26562, 1.20312, 1.39062, 1.28125, 0.878906, 0.707031, 1.17969, 1.04688, 1.42188, - 1.03125, 1.04688, 1, 1.125, 1.05469, 0.785156, 0.671875, 0.988281, 0.898438, 1.14844, + 0.6875, 0.707031, 0.746094, 0.671875, 0.675781, 0.691406, 0.671875, 0.625, 0.753906, 0.636719, + 5.53125, 5.65625, 5.125, 6.65625, 5.6875, 2.71875, 1.42188, 5, 3.96875, 6.875, + 3.875, 3.96875, 3.625, 4.625, 4, 2, 1.14844, 3.53125, 2.84375, 4.75, + 2.78125, 2.84375, 2.59375, 3.28125, 2.875, 1.53125, 0.964844, 2.53125, 2.09375, 3.375, + 2.0625, 2.09375, 1.9375, 2.375, 2.125, 1.21875, 0.839844, 1.89062, 1.59375, 2.4375, + 1.57812, 1.59375, 1.5, 1.78125, 1.625, 1.01562, 0.761719, 1.46875, 1.26562, 1.82812, + 1.25, 1.26562, 1.20312, 1.39062, 1.28125, 0.878906, 0.707031, 1.17969, 1.04688, 1.42188, + 1.03125, 1.04688, 1, 1.125, 1.05469, 0.785156, 0.671875, 0.988281, 0.898438, 1.14844, 0.886719, 0.898438, 0.867188, 0.949219, 0.902344, 0.722656, 0.648438, 0.855469, 0.800781, 0.964844, 0.792969, 0.800781, 0.777344, 0.832031, 0.800781, 0.679688, 0.632812, 0.769531, 0.730469, 0.839844, - 0.730469, 0.730469, 0.714844, 0.753906, 0.730469, 0.652344, 0.621094, 0.714844, 0.6875, 0.761719}, - std::vector{ - 0.605469, 0.671875, 0.761719, 0.714844, 0.753906, 0.605469, 0.625, 0.652344, 0.761719, 0.625, - 0.640625, 0.621094, 0.664062, 0.632812, 0.664062, 0.660156, 0.707031, 0.664062, 0.753906, 0.691406, - 0.738281, 0.671875, 0.652344, 0.714844, 0.6875, 0.636719, 0.675781, 0.746094, 0.640625, 0.609375, - 0.6875, 0.707031, 0.746094, 0.671875, 0.675781, 0.691406, 0.671875, 0.625, 0.753906, 0.636719, - 0.730469, 0.730469, 0.714844, 0.753906, 0.730469, 0.652344, 0.621094, 0.714844, 0.6875, 0.761719}, + 0.730469, 0.730469, 0.714844, 0.753906, 0.730469, 0.652344, 0.621094, 0.714844, 0.6875, 0.761719}, + std::vector{0.605469, 0.671875, 0.761719, 0.714844, 0.753906, 0.605469, 0.625, 0.652344, 0.761719, + 0.625, 0.640625, 0.621094, 0.664062, 0.632812, 0.664062, 0.660156, 0.707031, 0.664062, + 0.753906, 0.691406, 0.738281, 0.671875, 0.652344, 0.714844, 0.6875, 0.636719, 0.675781, + 0.746094, 0.640625, 0.609375, 0.6875, 0.707031, 0.746094, 0.671875, 0.675781, 0.691406, + 0.671875, 0.625, 0.753906, 0.636719, 0.730469, 0.730469, 0.714844, 0.753906, 0.730469, + 0.652344, 0.621094, 0.714844, 0.6875, 0.761719}, std::vector{0}), TensorIteratorStaticParams( std::make_shared(), - 5, 10, 10, 10, - 0.7f, ov::op::RecurrentSequenceDirection::REVERSE, TensorIteratorBodyType::GRU, + 5, + 10, + 10, + 10, + 0.7f, + ov::op::RecurrentSequenceDirection::REVERSE, + TensorIteratorBodyType::GRU, ET, std::vector{ - 1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, - 3.125, 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, - 8.625, 4.75, 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 1.25, - 5.8125, 7.03125, 9.25, 4.75, 5.125, 6, 4.875, 2.25, 9.4375, 2.78125, - 8, 8.1875, 7.4375, 9.6875, 8.25, 3.8125, 1.82812, 7.21875, 5.65625, 8.875, - 8.75, 9, 8.4375, 1.76562, 8.4375, 1.34375, 3.45312, 2.53125, 1.53125, 8.875, - 7.03125, 1.88281, 6.3125, 4.78125, 7.03125, 9.625, 4.6875, 5.8125, 2.78125, 7.21875, - 3.59375, 3.84375, 2.28125, 7.1875, 8, 8.5, 4.6875, 1.16406, 1.30469, 7.75, - 6.625, 9.875, 6.9375, 7.71875, 3.6875, 3.53125, 5, 8.125, 3, 1.92188, - 1.65625, 5, 5.21875, 9.125, 1.85938, 3.64062, 9.125, 3.59375, 2.0625, 2.15625, - 5.71875, 1.17188, 1.75, 7.125, 9.25, 2.90625, 9.1875, 3.375, 3.6875, 5.4375, - 6.25, 1.47656, 6.0625, 6.15625, 6.5, 2.3125, 9.625, 6.3125, 3.34375, 7.3125, - 3.07812, 1.92188, 5.8125, 4.71875, 9.5, 7.25, 5.4375, 4.71875, 5.875, 1.45312, - 7.875, 5.8125, 1.40625, 6.96875, 2.25, 5.625, 8.125, 9.5, 1.26562, 6.25, - 8.9375, 9.125, 5.875, 2.23438, 5.03125, 2.25, 9, 8.25, 4.375, 4.5625, - 5.84375, 2.48438, 6.875, 9.375, 4.25, 4.125, 6.125, 7.75, 6.75, 7.53125, - 2.125, 8.9375, 7.1875, 6.625, 6.8125, 7.75, 4.1875, 4.125, 7.875, 3.42188, - 4.1875, 9.0625, 7.75, 4.84375, 8.875, 9.625, 1.10156, 6.96875, 5.46875, 6.59375, - 1.66406, 2.03125, 8.0625, 9.5, 1.57812, 5.0625, 4.1875, 6.1875, 9.5, 4.6875, - 4.40625, 3.125, 7.875, 9.125, 7.9375, 6.15625, 3.71875, 1.02344, 7.9375, 6.5625, - 2.375, 3.9375, 6.1875, 5.75, 1.07812, 9, 7.375, 4.1875, 5.25, 9.125, - 7.875, 6.625, 5.1875, 1.14062, 3.40625, 9.375, 8.5, 7.1875, 5.9375, 10, - 1.625, 2.54688, 5.25, 2.21875, 7.6875, 9.375, 2.71875, 7.25, 5.1875, 1.59375, - 3.0625, 7.8125, 5.5625, 7.78125, 2.875, 9.25, 1.4375, 7.375, 5.65625, 2.125, - 2.54688, 1.17188, 4.5625, 1.23438, 1.96875, 1.25, 5.5625, 3.21875, 1.92188, 8.75, - 3.59375, 5.84375, 3.07812, 5.96875, 9.6875, 8.5625, 3.5, 2.125, 3.09375, 3.5, - 1.82031, 6.25, 6.125, 9.75, 4.75, 6.0625, 4.3125, 1.16406, 8.3125, 8.1875, - 3.59375, 3.09375, 7.4375, 8.25, 6.5, 4.5, 4.8125, 8.75, 7.75, 7.71875, - 4.84375, 6, 4.84375, 2.21875, 4.25, 1.53906, 2.375, 2.09375, 9.375, 1.39844, - 9.25, 1.96875, 8, 3.03125, 6.5625, 7.40625, 1.32031, 6.03125, 6.875, 1.10938, - 2.15625, 1.64062, 3.65625, 9.6875, 4.25, 6.125, 3.46875, 2.82812, 1.66406, 3.26562, - 2.375, 7.6875, 2.45312, 2.75, 9.4375, 6.21875, 4.3125, 9.75, 1.45312, 8.625, - 7.65625, 3.15625, 3.6875, 5.4375, 2.84375, 6.5625, 9.8125, 8.4375, 9, 2.40625, - 7.8125, 1.16406, 6.875, 1.625, 1.35938, 5.375, 8.3125, 6.4375, 7.875, 6.125, - 5.09375, 3.84375, 5.78125, 9.875, 1.98438, 6.1875, 2.3125, 4.40625, 5.5625, 5.9375, - 2.9375, 7.6875, 9.25, 7, 5.15625, 3.375, 2.1875, 1.59375, 7.875, 4.3125, - 2.90625, 6.65625, 1.67188, 2.89062, 1.85938, 7.75, 2.45312, 1.59375, 4.1875, 3.34375, - 1.85938, 8.25, 2.28125, 2.73438, 9.375, 6.75, 6.1875, 5.71875, 8.5, 9.3125, - 6.625, 3.375, 3.90625, 1.59375, 7.5625, 7.625, 5.6875, 7.9375, 7.625, 9.125, - 2.48438, 9.375, 7.1875, 1.125, 4.8125, 3.09375, 7.5625, 6.5625, 7.8125, 9.5, - 4.5625, 9.5, 9.3125, 6, 2.82812, 9.25, 1.07031, 6.75, 9.3125, 4.5, - 3.65625, 5.375, 2.5, 6.4375, 1.21875, 5.9375, 5.0625, 9.3125, 8.25, 9.25, - 4.3125, 4.5625, 6.46875, 9.625, 1.3125, 2.5625, 4.1875, 2.125, 1.70312, 2.21875, - 7.25, 5.5625, 1.10938, 1.1875, 5.125, 9.5, 9.625, 8.4375, 4, 1.13281, - 5.25, 2.57812, 1.94531, 3.98438, 5.5, 2.17188, 9, 8.25, 5.8125, 4.09375, - 3.53125, 9.4375, 4.1875, 6.25, 9.0625, 8.875, 3.17188, 8.625, 1.21875, 9.125, - 9.6875, 5.125, 4.875, 5.90625, 4.125, 8.125, 6.1875, 3.5625, 2.125, 5.40625, - 9.5, 6.375, 3.8125, 1.14062, 9.5625, 6.3125, 2.96875, 4.875, 3.23438, 8.25, - 8.75, 3.84375, 3.125, 9, 8.3125, 6.1875, 5.875, 2.65625, 2.71875, 8.0625, - 6.3125, 6.5, 1.42969, 1.48438, 1.14062, 4.78125, 1.44531, 7.125, 4.59375, 10}, - std::vector{ - 1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, - 3.125, 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, - 8.625, 4.75, 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 1.25, - 5.8125, 7.03125, 9.25, 4.75, 5.125, 6, 4.875, 2.25, 9.4375, 2.78125, - 8, 8.1875, 7.4375, 9.6875, 8.25, 3.8125, 1.82812, 7.21875, 5.65625, 10}, + 1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, 3.125, + 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, 8.625, 4.75, + 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 1.25, 5.8125, 7.03125, 9.25, + 4.75, 5.125, 6, 4.875, 2.25, 9.4375, 2.78125, 8, 8.1875, 7.4375, 9.6875, + 8.25, 3.8125, 1.82812, 7.21875, 5.65625, 8.875, 8.75, 9, 8.4375, 1.76562, 8.4375, + 1.34375, 3.45312, 2.53125, 1.53125, 8.875, 7.03125, 1.88281, 6.3125, 4.78125, 7.03125, 9.625, + 4.6875, 5.8125, 2.78125, 7.21875, 3.59375, 3.84375, 2.28125, 7.1875, 8, 8.5, 4.6875, + 1.16406, 1.30469, 7.75, 6.625, 9.875, 6.9375, 7.71875, 3.6875, 3.53125, 5, 8.125, + 3, 1.92188, 1.65625, 5, 5.21875, 9.125, 1.85938, 3.64062, 9.125, 3.59375, 2.0625, + 2.15625, 5.71875, 1.17188, 1.75, 7.125, 9.25, 2.90625, 9.1875, 3.375, 3.6875, 5.4375, + 6.25, 1.47656, 6.0625, 6.15625, 6.5, 2.3125, 9.625, 6.3125, 3.34375, 7.3125, 3.07812, + 1.92188, 5.8125, 4.71875, 9.5, 7.25, 5.4375, 4.71875, 5.875, 1.45312, 7.875, 5.8125, + 1.40625, 6.96875, 2.25, 5.625, 8.125, 9.5, 1.26562, 6.25, 8.9375, 9.125, 5.875, + 2.23438, 5.03125, 2.25, 9, 8.25, 4.375, 4.5625, 5.84375, 2.48438, 6.875, 9.375, + 4.25, 4.125, 6.125, 7.75, 6.75, 7.53125, 2.125, 8.9375, 7.1875, 6.625, 6.8125, + 7.75, 4.1875, 4.125, 7.875, 3.42188, 4.1875, 9.0625, 7.75, 4.84375, 8.875, 9.625, + 1.10156, 6.96875, 5.46875, 6.59375, 1.66406, 2.03125, 8.0625, 9.5, 1.57812, 5.0625, 4.1875, + 6.1875, 9.5, 4.6875, 4.40625, 3.125, 7.875, 9.125, 7.9375, 6.15625, 3.71875, 1.02344, + 7.9375, 6.5625, 2.375, 3.9375, 6.1875, 5.75, 1.07812, 9, 7.375, 4.1875, 5.25, + 9.125, 7.875, 6.625, 5.1875, 1.14062, 3.40625, 9.375, 8.5, 7.1875, 5.9375, 10, + 1.625, 2.54688, 5.25, 2.21875, 7.6875, 9.375, 2.71875, 7.25, 5.1875, 1.59375, 3.0625, + 7.8125, 5.5625, 7.78125, 2.875, 9.25, 1.4375, 7.375, 5.65625, 2.125, 2.54688, 1.17188, + 4.5625, 1.23438, 1.96875, 1.25, 5.5625, 3.21875, 1.92188, 8.75, 3.59375, 5.84375, 3.07812, + 5.96875, 9.6875, 8.5625, 3.5, 2.125, 3.09375, 3.5, 1.82031, 6.25, 6.125, 9.75, + 4.75, 6.0625, 4.3125, 1.16406, 8.3125, 8.1875, 3.59375, 3.09375, 7.4375, 8.25, 6.5, + 4.5, 4.8125, 8.75, 7.75, 7.71875, 4.84375, 6, 4.84375, 2.21875, 4.25, 1.53906, + 2.375, 2.09375, 9.375, 1.39844, 9.25, 1.96875, 8, 3.03125, 6.5625, 7.40625, 1.32031, + 6.03125, 6.875, 1.10938, 2.15625, 1.64062, 3.65625, 9.6875, 4.25, 6.125, 3.46875, 2.82812, + 1.66406, 3.26562, 2.375, 7.6875, 2.45312, 2.75, 9.4375, 6.21875, 4.3125, 9.75, 1.45312, + 8.625, 7.65625, 3.15625, 3.6875, 5.4375, 2.84375, 6.5625, 9.8125, 8.4375, 9, 2.40625, + 7.8125, 1.16406, 6.875, 1.625, 1.35938, 5.375, 8.3125, 6.4375, 7.875, 6.125, 5.09375, + 3.84375, 5.78125, 9.875, 1.98438, 6.1875, 2.3125, 4.40625, 5.5625, 5.9375, 2.9375, 7.6875, + 9.25, 7, 5.15625, 3.375, 2.1875, 1.59375, 7.875, 4.3125, 2.90625, 6.65625, 1.67188, + 2.89062, 1.85938, 7.75, 2.45312, 1.59375, 4.1875, 3.34375, 1.85938, 8.25, 2.28125, 2.73438, + 9.375, 6.75, 6.1875, 5.71875, 8.5, 9.3125, 6.625, 3.375, 3.90625, 1.59375, 7.5625, + 7.625, 5.6875, 7.9375, 7.625, 9.125, 2.48438, 9.375, 7.1875, 1.125, 4.8125, 3.09375, + 7.5625, 6.5625, 7.8125, 9.5, 4.5625, 9.5, 9.3125, 6, 2.82812, 9.25, 1.07031, + 6.75, 9.3125, 4.5, 3.65625, 5.375, 2.5, 6.4375, 1.21875, 5.9375, 5.0625, 9.3125, + 8.25, 9.25, 4.3125, 4.5625, 6.46875, 9.625, 1.3125, 2.5625, 4.1875, 2.125, 1.70312, + 2.21875, 7.25, 5.5625, 1.10938, 1.1875, 5.125, 9.5, 9.625, 8.4375, 4, 1.13281, + 5.25, 2.57812, 1.94531, 3.98438, 5.5, 2.17188, 9, 8.25, 5.8125, 4.09375, 3.53125, + 9.4375, 4.1875, 6.25, 9.0625, 8.875, 3.17188, 8.625, 1.21875, 9.125, 9.6875, 5.125, + 4.875, 5.90625, 4.125, 8.125, 6.1875, 3.5625, 2.125, 5.40625, 9.5, 6.375, 3.8125, + 1.14062, 9.5625, 6.3125, 2.96875, 4.875, 3.23438, 8.25, 8.75, 3.84375, 3.125, 9, + 8.3125, 6.1875, 5.875, 2.65625, 2.71875, 8.0625, 6.3125, 6.5, 1.42969, 1.48438, 1.14062, + 4.78125, 1.44531, 7.125, 4.59375, 10}, + std::vector{1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, + 3.125, 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, + 8.625, 4.75, 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 1.25, + 5.8125, 7.03125, 9.25, 4.75, 5.125, 6, 4.875, 2.25, 9.4375, 2.78125, + 8, 8.1875, 7.4375, 9.6875, 8.25, 3.8125, 1.82812, 7.21875, 5.65625, 10}, std::vector{0}, std::vector{10, 10, 10, 10, 10}, std::vector{ - 1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, - 3.125, 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, - 8.625, 4.75, 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 1.25, - 5.8125, 7.03125, 9.25, 4.75, 5.125, 6, 4.875, 2.25, 9.4375, 2.78125, - 8, 8.1875, 7.4375, 9.6875, 8.25, 3.8125, 1.82812, 7.21875, 5.65625, 8.875, - 8.75, 9, 8.4375, 1.76562, 8.4375, 1.34375, 3.45312, 2.53125, 1.53125, 8.875, - 7.03125, 1.88281, 6.3125, 4.78125, 7.03125, 9.625, 4.6875, 5.8125, 2.78125, 7.21875, - 3.59375, 3.84375, 2.28125, 7.1875, 8, 8.5, 4.6875, 1.16406, 1.30469, 7.75, - 6.625, 9.875, 6.9375, 7.71875, 3.6875, 3.53125, 5, 8.125, 3, 1.92188, - 1.65625, 5, 5.21875, 9.125, 1.85938, 3.64062, 9.125, 3.59375, 2.0625, 2.15625, - 5.71875, 1.17188, 1.75, 7.125, 9.25, 2.90625, 9.1875, 3.375, 3.6875, 5.4375, - 6.25, 1.47656, 6.0625, 6.15625, 6.5, 2.3125, 9.625, 6.3125, 3.34375, 7.3125, - 3.07812, 1.92188, 5.8125, 4.71875, 9.5, 7.25, 5.4375, 4.71875, 5.875, 1.45312, - 7.875, 5.8125, 1.40625, 6.96875, 2.25, 5.625, 8.125, 9.5, 1.26562, 6.25, - 8.9375, 9.125, 5.875, 2.23438, 5.03125, 2.25, 9, 8.25, 4.375, 4.5625, - 5.84375, 2.48438, 6.875, 9.375, 4.25, 4.125, 6.125, 7.75, 6.75, 7.53125, - 2.125, 8.9375, 7.1875, 6.625, 6.8125, 7.75, 4.1875, 4.125, 7.875, 3.42188, - 4.1875, 9.0625, 7.75, 4.84375, 8.875, 9.625, 1.10156, 6.96875, 5.46875, 6.59375, - 1.66406, 2.03125, 8.0625, 9.5, 1.57812, 5.0625, 4.1875, 6.1875, 9.5, 4.6875, - 4.40625, 3.125, 7.875, 9.125, 7.9375, 6.15625, 3.71875, 1.02344, 7.9375, 6.5625, - 2.375, 3.9375, 6.1875, 5.75, 1.07812, 9, 7.375, 4.1875, 5.25, 9.125, - 7.875, 6.625, 5.1875, 1.14062, 3.40625, 9.375, 8.5, 7.1875, 5.9375, 10, - 1.625, 2.54688, 5.25, 2.21875, 7.6875, 9.375, 2.71875, 7.25, 5.1875, 1.59375, - 3.0625, 7.8125, 5.5625, 7.78125, 2.875, 9.25, 1.4375, 7.375, 5.65625, 2.125, - 2.54688, 1.17188, 4.5625, 1.23438, 1.96875, 1.25, 5.5625, 3.21875, 1.92188, 8.75, - 3.59375, 5.84375, 3.07812, 5.96875, 9.6875, 8.5625, 3.5, 2.125, 3.09375, 3.5, - 1.82031, 6.25, 6.125, 9.75, 4.75, 6.0625, 4.3125, 1.16406, 8.3125, 8.1875, - 3.59375, 3.09375, 7.4375, 8.25, 6.5, 4.5, 4.8125, 8.75, 7.75, 7.71875, - 4.84375, 6, 4.84375, 2.21875, 4.25, 1.53906, 2.375, 2.09375, 9.375, 1.39844, - 9.25, 1.96875, 8, 3.03125, 6.5625, 7.40625, 1.32031, 6.03125, 6.875, 10}, + 1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, 3.125, + 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, 8.625, 4.75, + 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 1.25, 5.8125, 7.03125, 9.25, + 4.75, 5.125, 6, 4.875, 2.25, 9.4375, 2.78125, 8, 8.1875, 7.4375, 9.6875, + 8.25, 3.8125, 1.82812, 7.21875, 5.65625, 8.875, 8.75, 9, 8.4375, 1.76562, 8.4375, + 1.34375, 3.45312, 2.53125, 1.53125, 8.875, 7.03125, 1.88281, 6.3125, 4.78125, 7.03125, 9.625, + 4.6875, 5.8125, 2.78125, 7.21875, 3.59375, 3.84375, 2.28125, 7.1875, 8, 8.5, 4.6875, + 1.16406, 1.30469, 7.75, 6.625, 9.875, 6.9375, 7.71875, 3.6875, 3.53125, 5, 8.125, + 3, 1.92188, 1.65625, 5, 5.21875, 9.125, 1.85938, 3.64062, 9.125, 3.59375, 2.0625, + 2.15625, 5.71875, 1.17188, 1.75, 7.125, 9.25, 2.90625, 9.1875, 3.375, 3.6875, 5.4375, + 6.25, 1.47656, 6.0625, 6.15625, 6.5, 2.3125, 9.625, 6.3125, 3.34375, 7.3125, 3.07812, + 1.92188, 5.8125, 4.71875, 9.5, 7.25, 5.4375, 4.71875, 5.875, 1.45312, 7.875, 5.8125, + 1.40625, 6.96875, 2.25, 5.625, 8.125, 9.5, 1.26562, 6.25, 8.9375, 9.125, 5.875, + 2.23438, 5.03125, 2.25, 9, 8.25, 4.375, 4.5625, 5.84375, 2.48438, 6.875, 9.375, + 4.25, 4.125, 6.125, 7.75, 6.75, 7.53125, 2.125, 8.9375, 7.1875, 6.625, 6.8125, + 7.75, 4.1875, 4.125, 7.875, 3.42188, 4.1875, 9.0625, 7.75, 4.84375, 8.875, 9.625, + 1.10156, 6.96875, 5.46875, 6.59375, 1.66406, 2.03125, 8.0625, 9.5, 1.57812, 5.0625, 4.1875, + 6.1875, 9.5, 4.6875, 4.40625, 3.125, 7.875, 9.125, 7.9375, 6.15625, 3.71875, 1.02344, + 7.9375, 6.5625, 2.375, 3.9375, 6.1875, 5.75, 1.07812, 9, 7.375, 4.1875, 5.25, + 9.125, 7.875, 6.625, 5.1875, 1.14062, 3.40625, 9.375, 8.5, 7.1875, 5.9375, 10, + 1.625, 2.54688, 5.25, 2.21875, 7.6875, 9.375, 2.71875, 7.25, 5.1875, 1.59375, 3.0625, + 7.8125, 5.5625, 7.78125, 2.875, 9.25, 1.4375, 7.375, 5.65625, 2.125, 2.54688, 1.17188, + 4.5625, 1.23438, 1.96875, 1.25, 5.5625, 3.21875, 1.92188, 8.75, 3.59375, 5.84375, 3.07812, + 5.96875, 9.6875, 8.5625, 3.5, 2.125, 3.09375, 3.5, 1.82031, 6.25, 6.125, 9.75, + 4.75, 6.0625, 4.3125, 1.16406, 8.3125, 8.1875, 3.59375, 3.09375, 7.4375, 8.25, 6.5, + 4.5, 4.8125, 8.75, 7.75, 7.71875, 4.84375, 6, 4.84375, 2.21875, 4.25, 1.53906, + 2.375, 2.09375, 9.375, 1.39844, 9.25, 1.96875, 8, 3.03125, 6.5625, 7.40625, 1.32031, + 6.03125, 6.875, 10}, std::vector{ - 1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, - 3.125, 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, - 8.625, 4.75, 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 1.25, - 5.8125, 7.03125, 9.25, 4.75, 5.125, 6, 4.875, 2.25, 9.4375, 2.78125, - 8, 8.1875, 7.4375, 9.6875, 8.25, 3.8125, 1.82812, 7.21875, 5.65625, 8.875, - 8.75, 9, 8.4375, 1.76562, 8.4375, 1.34375, 3.45312, 2.53125, 1.53125, 8.875, - 7.03125, 1.88281, 6.3125, 4.78125, 7.03125, 9.625, 4.6875, 5.8125, 2.78125, 7.21875, - 3.59375, 3.84375, 2.28125, 7.1875, 8, 8.5, 4.6875, 1.16406, 1.30469, 7.75, - 6.625, 9.875, 6.9375, 7.71875, 3.6875, 3.53125, 5, 8.125, 3, 1.92188, - 1.65625, 5, 5.21875, 9.125, 1.85938, 3.64062, 9.125, 3.59375, 2.0625, 2.15625, - 5.71875, 1.17188, 1.75, 7.125, 9.25, 2.90625, 9.1875, 3.375, 3.6875, 5.4375, - 6.25, 1.47656, 6.0625, 6.15625, 6.5, 2.3125, 9.625, 6.3125, 3.34375, 7.3125, - 3.07812, 1.92188, 5.8125, 4.71875, 9.5, 7.25, 5.4375, 4.71875, 5.875, 1.45312, - 7.875, 5.8125, 1.40625, 6.96875, 2.25, 5.625, 8.125, 9.5, 1.26562, 6.25, - 8.9375, 9.125, 5.875, 2.23438, 5.03125, 2.25, 9, 8.25, 4.375, 4.5625, - 5.84375, 2.48438, 6.875, 9.375, 4.25, 4.125, 6.125, 7.75, 6.75, 7.53125, - 2.125, 8.9375, 7.1875, 6.625, 6.8125, 7.75, 4.1875, 4.125, 7.875, 3.42188, - 4.1875, 9.0625, 7.75, 4.84375, 8.875, 9.625, 1.10156, 6.96875, 5.46875, 6.59375, - 1.66406, 2.03125, 8.0625, 9.5, 1.57812, 5.0625, 4.1875, 6.1875, 9.5, 4.6875, - 4.40625, 3.125, 7.875, 9.125, 7.9375, 6.15625, 3.71875, 1.02344, 7.9375, 6.5625, - 2.375, 3.9375, 6.1875, 5.75, 1.07812, 9, 7.375, 4.1875, 5.25, 9.125, - 7.875, 6.625, 5.1875, 1.14062, 3.40625, 9.375, 8.5, 7.1875, 5.9375, 10, - 1.625, 2.54688, 5.25, 2.21875, 7.6875, 9.375, 2.71875, 7.25, 5.1875, 1.59375, - 3.0625, 7.8125, 5.5625, 7.78125, 2.875, 9.25, 1.4375, 7.375, 5.65625, 2.125, - 2.54688, 1.17188, 4.5625, 1.23438, 1.96875, 1.25, 5.5625, 3.21875, 1.92188, 8.75, - 3.59375, 5.84375, 3.07812, 5.96875, 9.6875, 8.5625, 3.5, 2.125, 3.09375, 3.5, - 1.82031, 6.25, 6.125, 9.75, 4.75, 6.0625, 4.3125, 1.16406, 8.3125, 8.1875, - 3.59375, 3.09375, 7.4375, 8.25, 6.5, 4.5, 4.8125, 8.75, 7.75, 7.71875, - 4.84375, 6, 4.84375, 2.21875, 4.25, 1.53906, 2.375, 2.09375, 9.375, 1.39844, - 9.25, 1.96875, 8, 3.03125, 6.5625, 7.40625, 1.32031, 6.03125, 6.875, 10}, + 1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, 3.125, + 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, 8.625, 4.75, + 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 1.25, 5.8125, 7.03125, 9.25, + 4.75, 5.125, 6, 4.875, 2.25, 9.4375, 2.78125, 8, 8.1875, 7.4375, 9.6875, + 8.25, 3.8125, 1.82812, 7.21875, 5.65625, 8.875, 8.75, 9, 8.4375, 1.76562, 8.4375, + 1.34375, 3.45312, 2.53125, 1.53125, 8.875, 7.03125, 1.88281, 6.3125, 4.78125, 7.03125, 9.625, + 4.6875, 5.8125, 2.78125, 7.21875, 3.59375, 3.84375, 2.28125, 7.1875, 8, 8.5, 4.6875, + 1.16406, 1.30469, 7.75, 6.625, 9.875, 6.9375, 7.71875, 3.6875, 3.53125, 5, 8.125, + 3, 1.92188, 1.65625, 5, 5.21875, 9.125, 1.85938, 3.64062, 9.125, 3.59375, 2.0625, + 2.15625, 5.71875, 1.17188, 1.75, 7.125, 9.25, 2.90625, 9.1875, 3.375, 3.6875, 5.4375, + 6.25, 1.47656, 6.0625, 6.15625, 6.5, 2.3125, 9.625, 6.3125, 3.34375, 7.3125, 3.07812, + 1.92188, 5.8125, 4.71875, 9.5, 7.25, 5.4375, 4.71875, 5.875, 1.45312, 7.875, 5.8125, + 1.40625, 6.96875, 2.25, 5.625, 8.125, 9.5, 1.26562, 6.25, 8.9375, 9.125, 5.875, + 2.23438, 5.03125, 2.25, 9, 8.25, 4.375, 4.5625, 5.84375, 2.48438, 6.875, 9.375, + 4.25, 4.125, 6.125, 7.75, 6.75, 7.53125, 2.125, 8.9375, 7.1875, 6.625, 6.8125, + 7.75, 4.1875, 4.125, 7.875, 3.42188, 4.1875, 9.0625, 7.75, 4.84375, 8.875, 9.625, + 1.10156, 6.96875, 5.46875, 6.59375, 1.66406, 2.03125, 8.0625, 9.5, 1.57812, 5.0625, 4.1875, + 6.1875, 9.5, 4.6875, 4.40625, 3.125, 7.875, 9.125, 7.9375, 6.15625, 3.71875, 1.02344, + 7.9375, 6.5625, 2.375, 3.9375, 6.1875, 5.75, 1.07812, 9, 7.375, 4.1875, 5.25, + 9.125, 7.875, 6.625, 5.1875, 1.14062, 3.40625, 9.375, 8.5, 7.1875, 5.9375, 10, + 1.625, 2.54688, 5.25, 2.21875, 7.6875, 9.375, 2.71875, 7.25, 5.1875, 1.59375, 3.0625, + 7.8125, 5.5625, 7.78125, 2.875, 9.25, 1.4375, 7.375, 5.65625, 2.125, 2.54688, 1.17188, + 4.5625, 1.23438, 1.96875, 1.25, 5.5625, 3.21875, 1.92188, 8.75, 3.59375, 5.84375, 3.07812, + 5.96875, 9.6875, 8.5625, 3.5, 2.125, 3.09375, 3.5, 1.82031, 6.25, 6.125, 9.75, + 4.75, 6.0625, 4.3125, 1.16406, 8.3125, 8.1875, 3.59375, 3.09375, 7.4375, 8.25, 6.5, + 4.5, 4.8125, 8.75, 7.75, 7.71875, 4.84375, 6, 4.84375, 2.21875, 4.25, 1.53906, + 2.375, 2.09375, 9.375, 1.39844, 9.25, 1.96875, 8, 3.03125, 6.5625, 7.40625, 1.32031, + 6.03125, 6.875, 10}, + std::vector{1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, + 3.125, 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, + 8.625, 4.75, 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 10}, std::vector{ - 1, 4.75, 10, 7.46875, 9.375, 1, 2.15625, 3.71875, 10, 2.3125, - 3.125, 1.82812, 4.5625, 2.67188, 4.5, 4.125, 7, 4.5625, 9.375, 5.84375, - 8.625, 4.75, 3.8125, 7.15625, 5.71875, 2.84375, 5, 8.875, 3.0625, 10}, - std::vector{ - 0.605469, 0.671875, 0.761719, 0.714844, 0.753906, 0.605469, 0.625, 0.652344, 0.761719, 0.625, + 0.605469, 0.671875, 0.761719, 0.714844, 0.753906, 0.605469, 0.625, 0.652344, 0.761719, 0.625, 0.609375, 0.707031, 0.839844, 0.777344, 0.832031, 0.609375, 0.640625, 0.679688, 0.839844, 0.640625, 0.613281, 0.761719, 0.964844, 0.867188, 0.945312, 0.613281, 0.660156, 0.722656, 0.964844, 0.664062, - 0.621094, 0.839844, 1.14844, 1, 1.11719, 0.621094, 0.691406, 0.785156, 1.14844, 0.699219, - 0.632812, 0.964844, 1.42188, 1.20312, 1.375, 0.632812, 0.738281, 0.878906, 1.42188, 0.753906, - 0.648438, 1.14844, 1.82812, 1.5, 1.75, 0.648438, 0.808594, 1.01562, 1.82812, 0.832031, - 0.675781, 1.42188, 2.4375, 1.95312, 2.3125, 0.675781, 0.910156, 1.21875, 2.4375, 0.945312, - 0.714844, 1.82812, 3.375, 2.625, 3.1875, 0.714844, 1.0625, 1.51562, 3.375, 1.11719, - 0.777344, 2.4375, 4.75, 3.65625, 4.5, 0.777344, 1.29688, 1.96875, 4.75, 1.375, - 0.867188, 3.375, 6.875, 5.1875, 6.4375, 0.867188, 1.64062, 2.65625, 6.875, 1.75, + 0.621094, 0.839844, 1.14844, 1, 1.11719, 0.621094, 0.691406, 0.785156, 1.14844, 0.699219, + 0.632812, 0.964844, 1.42188, 1.20312, 1.375, 0.632812, 0.738281, 0.878906, 1.42188, 0.753906, + 0.648438, 1.14844, 1.82812, 1.5, 1.75, 0.648438, 0.808594, 1.01562, 1.82812, 0.832031, + 0.675781, 1.42188, 2.4375, 1.95312, 2.3125, 0.675781, 0.910156, 1.21875, 2.4375, 0.945312, + 0.714844, 1.82812, 3.375, 2.625, 3.1875, 0.714844, 1.0625, 1.51562, 3.375, 1.11719, + 0.777344, 2.4375, 4.75, 3.65625, 4.5, 0.777344, 1.29688, 1.96875, 4.75, 1.375, + 0.867188, 3.375, 6.875, 5.1875, 6.4375, 0.867188, 1.64062, 2.65625, 6.875, 1.75, 0.640625, 0.621094, 0.664062, 0.632812, 0.664062, 0.660156, 0.707031, 0.664062, 0.753906, 0.691406, 0.664062, 0.632812, 0.699219, 0.652344, 0.699219, 0.691406, 0.761719, 0.699219, 0.832031, 0.738281, 0.695312, 0.648438, 0.753906, 0.679688, 0.753906, 0.738281, 0.847656, 0.753906, 0.945312, 0.808594, - 0.746094, 0.671875, 0.832031, 0.722656, 0.832031, 0.808594, 0.972656, 0.832031, 1.11719, 0.910156, - 0.816406, 0.707031, 0.945312, 0.785156, 0.945312, 0.910156, 1.15625, 0.945312, 1.375, 1.0625, - 0.929688, 0.761719, 1.11719, 0.878906, 1.11719, 1.0625, 1.4375, 1.11719, 1.75, 1.29688, - 1.09375, 0.839844, 1.375, 1.01562, 1.375, 1.29688, 1.84375, 1.375, 2.3125, 1.64062, - 1.34375, 0.964844, 1.76562, 1.21875, 1.75, 1.64062, 2.46875, 1.76562, 3.1875, 2.15625, - 1.71875, 1.14844, 2.34375, 1.53125, 2.3125, 2.15625, 3.4375, 2.34375, 4.5, 2.9375, - 2.28125, 1.42188, 3.25, 1.98438, 3.1875, 2.9375, 4.875, 3.25, 6.4375, 4.09375, - 0.738281, 0.671875, 0.652344, 0.714844, 0.6875, 0.636719, 0.675781, 0.746094, 0.640625, 0.609375, - 0.808594, 0.707031, 0.679688, 0.769531, 0.730469, 0.65625, 0.714844, 0.816406, 0.664062, 0.617188, - 0.917969, 0.761719, 0.722656, 0.855469, 0.800781, 0.6875, 0.769531, 0.925781, 0.695312, 0.625, - 1.07812, 0.839844, 0.785156, 0.988281, 0.902344, 0.730469, 0.855469, 1.08594, 0.746094, 0.636719, - 1.3125, 0.964844, 0.878906, 1.17969, 1.05469, 0.800781, 0.988281, 1.32812, 0.816406, 0.65625, - 1.65625, 1.14844, 1.01562, 1.46875, 1.28125, 0.898438, 1.17969, 1.6875, 0.925781, 0.6875, - 2.1875, 1.42188, 1.21875, 1.89062, 1.625, 1.04688, 1.46875, 2.21875, 1.08594, 0.730469, - 2.96875, 1.82812, 1.53125, 2.53125, 2.125, 1.26562, 1.89062, 3.03125, 1.32812, 0.792969, - 4.15625, 2.4375, 2, 3.5, 2.875, 1.59375, 2.53125, 4.25, 1.6875, 0.886719, - 5.9375, 3.375, 2.71875, 4.9375, 4, 2.09375, 3.53125, 6.125, 2.21875, 1.03125, - 0.6875, 0.707031, 0.746094, 0.671875, 0.675781, 0.691406, 0.671875, 0.625, 0.753906, 0.636719, + 0.746094, 0.671875, 0.832031, 0.722656, 0.832031, 0.808594, 0.972656, 0.832031, 1.11719, 0.910156, + 0.816406, 0.707031, 0.945312, 0.785156, 0.945312, 0.910156, 1.15625, 0.945312, 1.375, 1.0625, + 0.929688, 0.761719, 1.11719, 0.878906, 1.11719, 1.0625, 1.4375, 1.11719, 1.75, 1.29688, + 1.09375, 0.839844, 1.375, 1.01562, 1.375, 1.29688, 1.84375, 1.375, 2.3125, 1.64062, + 1.34375, 0.964844, 1.76562, 1.21875, 1.75, 1.64062, 2.46875, 1.76562, 3.1875, 2.15625, + 1.71875, 1.14844, 2.34375, 1.53125, 2.3125, 2.15625, 3.4375, 2.34375, 4.5, 2.9375, + 2.28125, 1.42188, 3.25, 1.98438, 3.1875, 2.9375, 4.875, 3.25, 6.4375, 4.09375, + 0.738281, 0.671875, 0.652344, 0.714844, 0.6875, 0.636719, 0.675781, 0.746094, 0.640625, 0.609375, + 0.808594, 0.707031, 0.679688, 0.769531, 0.730469, 0.65625, 0.714844, 0.816406, 0.664062, 0.617188, + 0.917969, 0.761719, 0.722656, 0.855469, 0.800781, 0.6875, 0.769531, 0.925781, 0.695312, 0.625, + 1.07812, 0.839844, 0.785156, 0.988281, 0.902344, 0.730469, 0.855469, 1.08594, 0.746094, 0.636719, + 1.3125, 0.964844, 0.878906, 1.17969, 1.05469, 0.800781, 0.988281, 1.32812, 0.816406, 0.65625, + 1.65625, 1.14844, 1.01562, 1.46875, 1.28125, 0.898438, 1.17969, 1.6875, 0.925781, 0.6875, + 2.1875, 1.42188, 1.21875, 1.89062, 1.625, 1.04688, 1.46875, 2.21875, 1.08594, 0.730469, + 2.96875, 1.82812, 1.53125, 2.53125, 2.125, 1.26562, 1.89062, 3.03125, 1.32812, 0.792969, + 4.15625, 2.4375, 2, 3.5, 2.875, 1.59375, 2.53125, 4.25, 1.6875, 0.886719, + 5.9375, 3.375, 2.71875, 4.9375, 4, 2.09375, 3.53125, 6.125, 2.21875, 1.03125, + 0.6875, 0.707031, 0.746094, 0.671875, 0.675781, 0.691406, 0.671875, 0.625, 0.753906, 0.636719, 0.730469, 0.761719, 0.816406, 0.707031, 0.714844, 0.738281, 0.707031, 0.640625, 0.832031, 0.65625, 0.800781, 0.847656, 0.929688, 0.761719, 0.777344, 0.808594, 0.761719, 0.664062, 0.945312, 0.6875, - 0.902344, 0.972656, 1.09375, 0.839844, 0.867188, 0.917969, 0.847656, 0.695312, 1.11719, 0.730469, - 1.05469, 1.15625, 1.34375, 0.964844, 1, 1.07812, 0.972656, 0.746094, 1.375, 0.792969, - 1.28125, 1.4375, 1.71875, 1.14844, 1.20312, 1.3125, 1.15625, 0.816406, 1.75, 0.886719, - 1.625, 1.84375, 2.28125, 1.42188, 1.5, 1.65625, 1.4375, 0.929688, 2.3125, 1.03125, - 2.125, 2.46875, 3.15625, 1.82812, 1.9375, 2.1875, 1.84375, 1.09375, 3.1875, 1.25, - 2.90625, 3.4375, 4.4375, 2.4375, 2.59375, 3, 2.46875, 1.34375, 4.5, 1.57812, - 4.0625, 4.875, 6.375, 3.375, 3.625, 4.1875, 3.4375, 1.70312, 6.5, 2.0625, - 0.730469, 0.730469, 0.714844, 0.753906, 0.730469, 0.652344, 0.621094, 0.714844, 0.6875, 0.761719, + 0.902344, 0.972656, 1.09375, 0.839844, 0.867188, 0.917969, 0.847656, 0.695312, 1.11719, 0.730469, + 1.05469, 1.15625, 1.34375, 0.964844, 1, 1.07812, 0.972656, 0.746094, 1.375, 0.792969, + 1.28125, 1.4375, 1.71875, 1.14844, 1.20312, 1.3125, 1.15625, 0.816406, 1.75, 0.886719, + 1.625, 1.84375, 2.28125, 1.42188, 1.5, 1.65625, 1.4375, 0.929688, 2.3125, 1.03125, + 2.125, 2.46875, 3.15625, 1.82812, 1.9375, 2.1875, 1.84375, 1.09375, 3.1875, 1.25, + 2.90625, 3.4375, 4.4375, 2.4375, 2.59375, 3, 2.46875, 1.34375, 4.5, 1.57812, + 4.0625, 4.875, 6.375, 3.375, 3.625, 4.1875, 3.4375, 1.70312, 6.5, 2.0625, + 0.730469, 0.730469, 0.714844, 0.753906, 0.730469, 0.652344, 0.621094, 0.714844, 0.6875, 0.761719, 0.792969, 0.800781, 0.777344, 0.832031, 0.800781, 0.679688, 0.632812, 0.769531, 0.730469, 0.839844, 0.886719, 0.898438, 0.867188, 0.949219, 0.902344, 0.722656, 0.648438, 0.855469, 0.800781, 0.964844, - 1.03125, 1.04688, 1, 1.125, 1.05469, 0.785156, 0.671875, 0.988281, 0.898438, 1.14844, - 1.25, 1.26562, 1.20312, 1.39062, 1.28125, 0.878906, 0.707031, 1.17969, 1.04688, 1.42188, - 1.57812, 1.59375, 1.5, 1.78125, 1.625, 1.01562, 0.761719, 1.46875, 1.26562, 1.82812, - 2.0625, 2.09375, 1.9375, 2.375, 2.125, 1.21875, 0.839844, 1.89062, 1.59375, 2.4375, - 2.78125, 2.84375, 2.59375, 3.28125, 2.875, 1.53125, 0.964844, 2.53125, 2.09375, 3.375, - 3.875, 3.96875, 3.625, 4.625, 4, 2, 1.14844, 3.53125, 2.84375, 4.75, - 5.53125, 5.65625, 5.125, 6.65625, 5.6875, 2.71875, 1.42188, 5, 3.96875, 6.875}, - std::vector{ - 0.605469, 0.671875, 0.761719, 0.714844, 0.753906, 0.605469, 0.625, 0.652344, 0.761719, 0.625, - 0.640625, 0.621094, 0.664062, 0.632812, 0.664062, 0.660156, 0.707031, 0.664062, 0.753906, 0.691406, - 0.738281, 0.671875, 0.652344, 0.714844, 0.6875, 0.636719, 0.675781, 0.746094, 0.640625, 0.609375, - 0.6875, 0.707031, 0.746094, 0.671875, 0.675781, 0.691406, 0.671875, 0.625, 0.753906, 0.636719, - 0.730469, 0.730469, 0.714844, 0.753906, 0.730469, 0.652344, 0.621094, 0.714844, 0.6875, 0.761719}, + 1.03125, 1.04688, 1, 1.125, 1.05469, 0.785156, 0.671875, 0.988281, 0.898438, 1.14844, + 1.25, 1.26562, 1.20312, 1.39062, 1.28125, 0.878906, 0.707031, 1.17969, 1.04688, 1.42188, + 1.57812, 1.59375, 1.5, 1.78125, 1.625, 1.01562, 0.761719, 1.46875, 1.26562, 1.82812, + 2.0625, 2.09375, 1.9375, 2.375, 2.125, 1.21875, 0.839844, 1.89062, 1.59375, 2.4375, + 2.78125, 2.84375, 2.59375, 3.28125, 2.875, 1.53125, 0.964844, 2.53125, 2.09375, 3.375, + 3.875, 3.96875, 3.625, 4.625, 4, 2, 1.14844, 3.53125, 2.84375, 4.75, + 5.53125, 5.65625, 5.125, 6.65625, 5.6875, 2.71875, 1.42188, 5, 3.96875, 6.875}, + std::vector{0.605469, 0.671875, 0.761719, 0.714844, 0.753906, 0.605469, 0.625, 0.652344, 0.761719, + 0.625, 0.640625, 0.621094, 0.664062, 0.632812, 0.664062, 0.660156, 0.707031, 0.664062, + 0.753906, 0.691406, 0.738281, 0.671875, 0.652344, 0.714844, 0.6875, 0.636719, 0.675781, + 0.746094, 0.640625, 0.609375, 0.6875, 0.707031, 0.746094, 0.671875, 0.675781, 0.691406, + 0.671875, 0.625, 0.753906, 0.636719, 0.730469, 0.730469, 0.714844, 0.753906, 0.730469, + 0.652344, 0.621094, 0.714844, 0.6875, 0.761719}, std::vector{0}), }; return params; } std::vector generateCombinedParams() { - const std::vector> generatedParams { + const std::vector> generatedParams{ generateParams(), generateParams(), generateParams(), @@ -2440,6 +2494,8 @@ std::vector generateCombinedParams() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_TensorIterator_With_Hardcoded_Refs, ReferenceTILayerStaticTest, - testing::ValuesIn(generateCombinedParams()), ReferenceTILayerStaticTest::getTestCaseName); -} // namespace +INSTANTIATE_TEST_SUITE_P(smoke_TensorIterator_With_Hardcoded_Refs, + ReferenceTILayerStaticTest, + testing::ValuesIn(generateCombinedParams()), + ReferenceTILayerStaticTest::getTestCaseName); +} // namespace diff --git a/src/plugins/template/tests/functional/op_reference/tile.cpp b/src/plugins/template/tests/functional/op_reference/tile.cpp index f07d7c2198d..2a99ee45b11 100644 --- a/src/plugins/template/tests/functional/op_reference/tile.cpp +++ b/src/plugins/template/tests/functional/op_reference/tile.cpp @@ -4,18 +4,22 @@ #include -#include "openvino/opsets/opset1.hpp" #include "base_reference_test.hpp" +#include "openvino/opsets/opset1.hpp" using namespace reference_tests; using namespace ov; namespace { struct TileParams { - TileParams( - const reference_tests::Tensor& A, const reference_tests::Tensor& repeats, - const reference_tests::Tensor& expected, const std::string& testcaseName = "") : - A(A), repeats(repeats), expected(expected), testcaseName(testcaseName) {} + TileParams(const reference_tests::Tensor& A, + const reference_tests::Tensor& repeats, + const reference_tests::Tensor& expected, + const std::string& testcaseName = "") + : A(A), + repeats(repeats), + expected(expected), + testcaseName(testcaseName) {} reference_tests::Tensor A; reference_tests::Tensor repeats; @@ -52,8 +56,8 @@ public: private: static std::shared_ptr CreateFunction(const TileParams& params) { const auto A = std::make_shared(params.A.type, params.A.shape); - const auto repeats = std::make_shared(params.repeats.type, params.repeats.shape, - params.repeats.data.data()); + const auto repeats = + std::make_shared(params.repeats.type, params.repeats.shape, params.repeats.data.data()); const auto tile = std::make_shared(A, repeats); const auto f = std::make_shared(NodeVector{tile}, ParameterVector{A}); return f; @@ -68,46 +72,33 @@ template std::vector generateParams() { using T = typename element_type_traits::value_type; using T_INT = typename element_type_traits::value_type; - std::vector params { - TileParams( - reference_tests::Tensor(ET, {}, std::vector{ - 1 - }), - reference_tests::Tensor(ET_INT, {1}, std::vector{2}), - reference_tests::Tensor(ET, {2}, std::vector{ - 1, 1 - }), - "tile_0d_to_1d_data_broadcast"), - TileParams( - reference_tests::Tensor(ET, {6}, std::vector{ - 1, 2, 3, 4, 5, 6, - }), - reference_tests::Tensor(ET_INT, {1}, std::vector{4}), - reference_tests::Tensor(ET, {24}, std::vector{ - 1, 2, 3, 4, 5, 6, - 1, 2, 3, 4, 5, 6, - 1, 2, 3, 4, 5, 6, - 1, 2, 3, 4, 5, 6 - }), - "tile_1d_to_1d_no_broadcast"), - TileParams( - reference_tests::Tensor(ET, {3}, std::vector{ - 1, 2, 3 - }), - reference_tests::Tensor(ET_INT, {3}, std::vector{2, 2, 1}), - reference_tests::Tensor(ET, {2, 2, 3}, std::vector{ - 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3 - }), - "tile_1d_to_3d_data_broadcast"), - TileParams( - reference_tests::Tensor(ET, {2, 1, 3}, std::vector{ - 1, 2, 3, 4, 5, 6 - }), - reference_tests::Tensor(ET_INT, {2}, std::vector{2, 1}), - reference_tests::Tensor(ET, {2, 2, 3}, std::vector{ - 1, 2, 3, 1, 2, 3, 4, 5, 6, 4, 5, 6 - }), - "tile_3d_to_3d_repeats_broadcast"), + std::vector params{ + TileParams(reference_tests::Tensor(ET, {}, std::vector{1}), + reference_tests::Tensor(ET_INT, {1}, std::vector{2}), + reference_tests::Tensor(ET, {2}, std::vector{1, 1}), + "tile_0d_to_1d_data_broadcast"), + TileParams(reference_tests::Tensor(ET, + {6}, + std::vector{ + 1, + 2, + 3, + 4, + 5, + 6, + }), + reference_tests::Tensor(ET_INT, {1}, std::vector{4}), + reference_tests::Tensor(ET, {24}, std::vector{1, 2, 3, 4, 5, 6, 1, 2, 3, 4, 5, 6, + 1, 2, 3, 4, 5, 6, 1, 2, 3, 4, 5, 6}), + "tile_1d_to_1d_no_broadcast"), + TileParams(reference_tests::Tensor(ET, {3}, std::vector{1, 2, 3}), + reference_tests::Tensor(ET_INT, {3}, std::vector{2, 2, 1}), + reference_tests::Tensor(ET, {2, 2, 3}, std::vector{1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3}), + "tile_1d_to_3d_data_broadcast"), + TileParams(reference_tests::Tensor(ET, {2, 1, 3}, std::vector{1, 2, 3, 4, 5, 6}), + reference_tests::Tensor(ET_INT, {2}, std::vector{2, 1}), + reference_tests::Tensor(ET, {2, 2, 3}, std::vector{1, 2, 3, 1, 2, 3, 4, 5, 6, 4, 5, 6}), + "tile_3d_to_3d_repeats_broadcast"), }; return params; } @@ -116,22 +107,20 @@ template std::vector generateParamsFloatValue() { using T = typename element_type_traits::value_type; using T_INT = typename element_type_traits::value_type; - std::vector params { - TileParams( - reference_tests::Tensor(ET, {2, 1, 3}, std::vector{ - 1.1f, 2.2f, 3.3f, 4.4f, 5.5f, 6.6f - }), - reference_tests::Tensor(ET_INT, {2}, std::vector{2, 1}), - reference_tests::Tensor(ET, {2, 2, 3}, std::vector{ - 1.1f, 2.2f, 3.3f, 1.1f, 2.2f, 3.3f, 4.4f, 5.5f, 6.6f, 4.4f, 5.5f, 6.6f - }), - "tile_3d_to_3d_repeats_broadcast_float_val"), + std::vector params{ + TileParams(reference_tests::Tensor(ET, {2, 1, 3}, std::vector{1.1f, 2.2f, 3.3f, 4.4f, 5.5f, 6.6f}), + reference_tests::Tensor(ET_INT, {2}, std::vector{2, 1}), + reference_tests::Tensor( + ET, + {2, 2, 3}, + std::vector{1.1f, 2.2f, 3.3f, 1.1f, 2.2f, 3.3f, 4.4f, 5.5f, 6.6f, 4.4f, 5.5f, 6.6f}), + "tile_3d_to_3d_repeats_broadcast_float_val"), }; return params; } std::vector generateCombinedParams() { - const std::vector> generatedParams { + const std::vector> generatedParams{ // test each data type for each repeats type // CVS-73511 - commented here due segmentation fault // generateParams(), @@ -315,8 +304,7 @@ std::vector generateCombinedParams() { generateParamsFloatValue(), generateParamsFloatValue(), generateParamsFloatValue(), - generateParamsFloatValue() - }; + generateParamsFloatValue()}; std::vector combinedParams; for (const auto& params : generatedParams) { @@ -325,6 +313,8 @@ std::vector generateCombinedParams() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_Tile_With_Hardcoded_Refs, ReferenceTileTest, - testing::ValuesIn(generateCombinedParams()), ReferenceTileTest::getTestCaseName); -} // namespace +INSTANTIATE_TEST_SUITE_P(smoke_Tile_With_Hardcoded_Refs, + ReferenceTileTest, + testing::ValuesIn(generateCombinedParams()), + ReferenceTileTest::getTestCaseName); +} // namespace diff --git a/src/plugins/template/tests/functional/op_reference/topk.cpp b/src/plugins/template/tests/functional/op_reference/topk.cpp index 74291ea086f..f3fac57bd2a 100644 --- a/src/plugins/template/tests/functional/op_reference/topk.cpp +++ b/src/plugins/template/tests/functional/op_reference/topk.cpp @@ -14,14 +14,24 @@ using namespace ov; namespace { struct TopKParams { - TopKParams( - const reference_tests::Tensor& A, const reference_tests::Tensor& k, const int64_t axis, - const opset1::TopK::Mode mode, const opset1::TopK::SortType sort, - const reference_tests::Tensor& result0, const reference_tests::Tensor& result1, const size_t outIdx, - const std::string& testcaseName = "") : - A(A), k(k), axis(axis), mode(mode), sort(sort), - result0(result0), result1(result1), outIdx(outIdx), - testcaseName(testcaseName) {} + TopKParams(const reference_tests::Tensor& A, + const reference_tests::Tensor& k, + const int64_t axis, + const opset1::TopK::Mode mode, + const opset1::TopK::SortType sort, + const reference_tests::Tensor& result0, + const reference_tests::Tensor& result1, + const size_t outIdx, + const std::string& testcaseName = "") + : A(A), + k(k), + axis(axis), + mode(mode), + sort(sort), + result0(result0), + result1(result1), + outIdx(outIdx), + testcaseName(testcaseName) {} reference_tests::Tensor A; reference_tests::Tensor k; @@ -54,15 +64,18 @@ public: }; struct TopKParamsResnet50 { - TopKParamsResnet50( - const reference_tests::Tensor& A, - const reference_tests::Tensor& result5Value, const reference_tests::Tensor& result5Index, - const reference_tests::Tensor& result1Value, const reference_tests::Tensor& result1Index, - const std::string& testcaseName = "") : - A(A), - result5Value(result5Value), result5Index(result5Index), - result1Value(result1Value), result1Index(result1Index), - testcaseName(testcaseName) {} + TopKParamsResnet50(const reference_tests::Tensor& A, + const reference_tests::Tensor& result5Value, + const reference_tests::Tensor& result5Index, + const reference_tests::Tensor& result1Value, + const reference_tests::Tensor& result1Index, + const std::string& testcaseName = "") + : A(A), + result5Value(result5Value), + result5Index(result5Index), + result1Value(result1Value), + result1Index(result1Index), + testcaseName(testcaseName) {} reference_tests::Tensor A; reference_tests::Tensor result5Value; @@ -78,8 +91,10 @@ public: const auto& params = GetParam(); function = CreateFunction(params); inputData = {params.A.data}; - refOutData = {params.result5Value.data, params.result5Index.data, - params.result1Value.data, params.result1Index.data}; + refOutData = {params.result5Value.data, + params.result5Index.data, + params.result1Value.data, + params.result1Index.data}; } static std::string getTestCaseName(const testing::TestParamInfo& obj) { @@ -101,8 +116,7 @@ public: private: static std::shared_ptr CreateFunction(const TopKParamsResnet50& params) { - const auto A = std::make_shared(params.A.type, - params.A.shape); + const auto A = std::make_shared(params.A.type, params.A.shape); const auto B = std::make_shared(A, opset1::Constant::create(element::i64, {}, {5}), 1, @@ -118,7 +132,8 @@ private: const auto out5_index = B->output(1); const auto out1_value = C->output(0); const auto out1_index = C->output(1); - const auto f = std::make_shared(OutputVector{out5_value, out5_index, out1_value, out1_index}, ParameterVector{A}); + const auto f = + std::make_shared(OutputVector{out5_value, out5_index, out1_value, out1_index}, ParameterVector{A}); return f; } }; @@ -131,60 +146,70 @@ template std::vector generateParamsResnet50() { using T = typename element_type_traits::value_type; using T_OUT = typename element_type_traits::value_type; - std::vector params { + std::vector params{ TopKParamsResnet50( - reference_tests::Tensor(ET, {128, 1000}, [](std::vector shape) -> std::vector { - std::vector data; - for (size_t i = 0; i < shape[0]; i++) { - for (size_t j = 0; j < shape[1]; j++) { - data.push_back(static_cast(j)); - } - } - return data; - }({128, 1000})), - reference_tests::Tensor(ET, {128, 5}, [](std::vector rshape, std::vector shape) -> std::vector{ - std::vector expected_value; - for (size_t i = 0; i < rshape[0]; i++) { - for (size_t j = 0; j < rshape[1]; j++) { - expected_value.push_back(static_cast(shape[1] - j - 1)); - } - } - return expected_value; - }({128, 5}, {128, 1000})), - reference_tests::Tensor(ET_OUT, {128, 5}, [](std::vector rshape, std::vector shape) -> std::vector{ - std::vector expected_index; - for (size_t i = 0; i < rshape[0]; i++) { - for (size_t j = 0; j < rshape[1]; j++) { - expected_index.push_back(static_cast(shape[1] - j - 1)); - } - } - return expected_index; - }({128, 5}, {128, 1000})), - reference_tests::Tensor(ET, {128, 1}, [](std::vector rshape, std::vector shape) -> std::vector{ - std::vector expected_value; - for (size_t i = 0; i < rshape[0]; i++) { - for (size_t j = 0; j < rshape[1]; j++) { - expected_value.push_back(static_cast(shape[1] - j - 1)); - } - } - return expected_value; - }({128, 1}, {128, 1000})), - reference_tests::Tensor(ET_OUT, {128, 1}, [](std::vector rshape, std::vector shape) -> std::vector{ - std::vector expected_index; - for (size_t i = 0; i < rshape[0]; i++) { - for (size_t j = 0; j < rshape[1]; j++) { - expected_index.push_back(static_cast(shape[1] - j - 1)); - } - } - return expected_index; - }({128, 1}, {128, 1000})), + reference_tests::Tensor(ET, + {128, 1000}, + [](std::vector shape) -> std::vector { + std::vector data; + for (size_t i = 0; i < shape[0]; i++) { + for (size_t j = 0; j < shape[1]; j++) { + data.push_back(static_cast(j)); + } + } + return data; + }({128, 1000})), + reference_tests::Tensor(ET, + {128, 5}, + [](std::vector rshape, std::vector shape) -> std::vector { + std::vector expected_value; + for (size_t i = 0; i < rshape[0]; i++) { + for (size_t j = 0; j < rshape[1]; j++) { + expected_value.push_back(static_cast(shape[1] - j - 1)); + } + } + return expected_value; + }({128, 5}, {128, 1000})), + reference_tests::Tensor(ET_OUT, + {128, 5}, + [](std::vector rshape, std::vector shape) -> std::vector { + std::vector expected_index; + for (size_t i = 0; i < rshape[0]; i++) { + for (size_t j = 0; j < rshape[1]; j++) { + expected_index.push_back(static_cast(shape[1] - j - 1)); + } + } + return expected_index; + }({128, 5}, {128, 1000})), + reference_tests::Tensor(ET, + {128, 1}, + [](std::vector rshape, std::vector shape) -> std::vector { + std::vector expected_value; + for (size_t i = 0; i < rshape[0]; i++) { + for (size_t j = 0; j < rshape[1]; j++) { + expected_value.push_back(static_cast(shape[1] - j - 1)); + } + } + return expected_value; + }({128, 1}, {128, 1000})), + reference_tests::Tensor(ET_OUT, + {128, 1}, + [](std::vector rshape, std::vector shape) -> std::vector { + std::vector expected_index; + for (size_t i = 0; i < rshape[0]; i++) { + for (size_t j = 0; j < rshape[1]; j++) { + expected_index.push_back(static_cast(shape[1] - j - 1)); + } + } + return expected_index; + }({128, 1}, {128, 1000})), "topk_resnet50"), }; return params; } std::vector generateCombinedParamsResnet50() { - const std::vector> generatedParams { + const std::vector> generatedParams{ generateParamsResnet50(), generateParamsResnet50(), generateParamsResnet50(), @@ -206,8 +231,10 @@ std::vector generateCombinedParamsResnet50() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_TopK_With_Hardcoded_Refs, ReferenceTopKTestResnet50, - testing::ValuesIn(generateCombinedParamsResnet50()), ReferenceTopKTestResnet50::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_TopK_With_Hardcoded_Refs, + ReferenceTopKTestResnet50, + testing::ValuesIn(generateCombinedParamsResnet50()), + ReferenceTopKTestResnet50::getTestCaseName); class ReferenceTopKTestMaxMinSort : public ReferenceTopKTest { public: @@ -220,11 +247,8 @@ public: private: static std::shared_ptr CreateFunction(const TopKParams& params) { - const auto A = std::make_shared(params.A.type, - params.A.shape); - const auto k = opset1::Constant::create(params.k.type, - params.k.shape, - params.k.data.data()); + const auto A = std::make_shared(params.A.type, params.A.shape); + const auto k = opset1::Constant::create(params.k.type, params.k.shape, params.k.data.data()); const auto B = std::make_shared(A, k, params.axis, params.mode, params.sort); const auto f = std::make_shared(B->outputs(), ParameterVector{A}); return f; @@ -240,278 +264,307 @@ std::vector generateParamsMaxMinSort() { using T = typename element_type_traits::value_type; using T2 = typename element_type_traits::value_type; using T_OUT = typename element_type_traits::value_type; - std::vector params { + std::vector params{ TopKParams( - reference_tests::Tensor(ET, {128, 1000}, [](std::vector shape) -> std::vector { - std::vector data; - for (size_t i = 0; i < shape[0]; i++) { - for (size_t j = 0; j < shape[1]; j++) { - data.push_back(static_cast(j)); - } - } - return data; - }({128, 1000})), + reference_tests::Tensor(ET, + {128, 1000}, + [](std::vector shape) -> std::vector { + std::vector data; + for (size_t i = 0; i < shape[0]; i++) { + for (size_t j = 0; j < shape[1]; j++) { + data.push_back(static_cast(j)); + } + } + return data; + }({128, 1000})), reference_tests::Tensor(ET2, {}, std::vector{5}), 1, opset1::TopK::Mode::MAX, opset1::TopK::SortType::NONE, - reference_tests::Tensor(ET, {128, 5}, [](std::vector rshape, std::vector shape) -> std::vector{ - std::vector expected_value; - for (size_t i = 0; i < rshape[0]; i++) { - expected_value.push_back(static_cast(shape[1] - 3)); - expected_value.push_back(static_cast(shape[1] - 1)); - expected_value.push_back(static_cast(shape[1] - 2)); - expected_value.push_back(static_cast(shape[1] - 5)); - expected_value.push_back(static_cast(shape[1] - 4)); - } - return expected_value; - }({128, 5}, {128, 1000})), - reference_tests::Tensor(ET_OUT, {128, 5}, [](std::vector rshape, std::vector shape) -> std::vector{ - std::vector expected_index; - for (size_t i = 0; i < rshape[0]; i++) { - expected_index.push_back(static_cast(shape[1] - 3)); - expected_index.push_back(static_cast(shape[1] - 1)); - expected_index.push_back(static_cast(shape[1] - 2)); - expected_index.push_back(static_cast(shape[1] - 5)); - expected_index.push_back(static_cast(shape[1] - 4)); - } - return expected_index; - }({128, 5}, {128, 1000})), + reference_tests::Tensor(ET, + {128, 5}, + [](std::vector rshape, std::vector shape) -> std::vector { + std::vector expected_value; + for (size_t i = 0; i < rshape[0]; i++) { + expected_value.push_back(static_cast(shape[1] - 3)); + expected_value.push_back(static_cast(shape[1] - 1)); + expected_value.push_back(static_cast(shape[1] - 2)); + expected_value.push_back(static_cast(shape[1] - 5)); + expected_value.push_back(static_cast(shape[1] - 4)); + } + return expected_value; + }({128, 5}, {128, 1000})), + reference_tests::Tensor(ET_OUT, + {128, 5}, + [](std::vector rshape, std::vector shape) -> std::vector { + std::vector expected_index; + for (size_t i = 0; i < rshape[0]; i++) { + expected_index.push_back(static_cast(shape[1] - 3)); + expected_index.push_back(static_cast(shape[1] - 1)); + expected_index.push_back(static_cast(shape[1] - 2)); + expected_index.push_back(static_cast(shape[1] - 5)); + expected_index.push_back(static_cast(shape[1] - 4)); + } + return expected_index; + }({128, 5}, {128, 1000})), 0, "topk_max_sort_none"), - TopKParams( - reference_tests::Tensor(ET, {128, 1000}, [](std::vector shape) -> std::vector { - std::vector data; - for (size_t i = 0; i < shape[0]; i++) { - for (size_t j = 0; j < shape[1]; j++) { - data.push_back(static_cast(j)); - } - } - return data; - }({128, 1000})), - reference_tests::Tensor(ET2, {}, std::vector{5}), - 1, - opset1::TopK::Mode::MIN, - opset1::TopK::SortType::NONE, - reference_tests::Tensor(ET, {128, 5}, [](std::vector rshape) -> std::vector{ - std::vector expected_value; - for (size_t i = 0; i < rshape[0]; i++) { - expected_value.push_back(1); - expected_value.push_back(0); - expected_value.push_back(3); - expected_value.push_back(2); - expected_value.push_back(4); - } - return expected_value; - }({128, 5})), - reference_tests::Tensor(ET_OUT, {128, 5}, [](std::vector rshape) -> std::vector{ - std::vector expected_index; - for (size_t i = 0; i < rshape[0]; i++) { - expected_index.push_back(1); - expected_index.push_back(0); - expected_index.push_back(3); - expected_index.push_back(2); - expected_index.push_back(4); - } - return expected_index; - }({128, 5})), - 0, - "topk_min_sort_none"), + TopKParams(reference_tests::Tensor(ET, + {128, 1000}, + [](std::vector shape) -> std::vector { + std::vector data; + for (size_t i = 0; i < shape[0]; i++) { + for (size_t j = 0; j < shape[1]; j++) { + data.push_back(static_cast(j)); + } + } + return data; + }({128, 1000})), + reference_tests::Tensor(ET2, {}, std::vector{5}), + 1, + opset1::TopK::Mode::MIN, + opset1::TopK::SortType::NONE, + reference_tests::Tensor(ET, + {128, 5}, + [](std::vector rshape) -> std::vector { + std::vector expected_value; + for (size_t i = 0; i < rshape[0]; i++) { + expected_value.push_back(1); + expected_value.push_back(0); + expected_value.push_back(3); + expected_value.push_back(2); + expected_value.push_back(4); + } + return expected_value; + }({128, 5})), + reference_tests::Tensor(ET_OUT, + {128, 5}, + [](std::vector rshape) -> std::vector { + std::vector expected_index; + for (size_t i = 0; i < rshape[0]; i++) { + expected_index.push_back(1); + expected_index.push_back(0); + expected_index.push_back(3); + expected_index.push_back(2); + expected_index.push_back(4); + } + return expected_index; + }({128, 5})), + 0, + "topk_min_sort_none"), TopKParams( - reference_tests::Tensor(ET, {128, 1000}, [](std::vector shape) -> std::vector { - std::vector data; - for (size_t i = 0; i < shape[0]; i++) { - for (size_t j = 0; j < shape[1]; j++) { - data.push_back(static_cast(j)); - } - } - return data; - }({128, 1000})), + reference_tests::Tensor(ET, + {128, 1000}, + [](std::vector shape) -> std::vector { + std::vector data; + for (size_t i = 0; i < shape[0]; i++) { + for (size_t j = 0; j < shape[1]; j++) { + data.push_back(static_cast(j)); + } + } + return data; + }({128, 1000})), reference_tests::Tensor(ET2, {}, std::vector{5}), 1, opset1::TopK::Mode::MAX, opset1::TopK::SortType::SORT_VALUES, - reference_tests::Tensor(ET, {128, 5}, [](std::vector rshape, std::vector shape) -> std::vector{ - std::vector expected_value; - for (size_t i = 0; i < rshape[0]; i++) { - for (size_t j = 0; j < rshape[1]; j++) { - expected_value.push_back(static_cast((shape[1] - j - 1))); - } - } - return expected_value; - }({128, 5}, {128, 1000})), - reference_tests::Tensor(ET_OUT, {128, 5}, [](std::vector rshape, std::vector shape) -> std::vector{ - std::vector expected_index; - for (size_t i = 0; i < rshape[0]; i++) { - for (size_t j = 0; j < rshape[1]; j++) { - expected_index.push_back(static_cast(shape[1] - j - 1)); - } - } - return expected_index; - }({128, 5}, {128, 1000})), + reference_tests::Tensor(ET, + {128, 5}, + [](std::vector rshape, std::vector shape) -> std::vector { + std::vector expected_value; + for (size_t i = 0; i < rshape[0]; i++) { + for (size_t j = 0; j < rshape[1]; j++) { + expected_value.push_back(static_cast((shape[1] - j - 1))); + } + } + return expected_value; + }({128, 5}, {128, 1000})), + reference_tests::Tensor(ET_OUT, + {128, 5}, + [](std::vector rshape, std::vector shape) -> std::vector { + std::vector expected_index; + for (size_t i = 0; i < rshape[0]; i++) { + for (size_t j = 0; j < rshape[1]; j++) { + expected_index.push_back(static_cast(shape[1] - j - 1)); + } + } + return expected_index; + }({128, 5}, {128, 1000})), 0, "topk_max_sort_value"), - TopKParams( - reference_tests::Tensor(ET, {128, 1000}, [](std::vector shape) -> std::vector { - std::vector data; - for (size_t i = 0; i < shape[0]; i++) { - for (size_t j = 0; j < shape[1]; j++) { - data.push_back(static_cast(j)); - } - } - return data; - }({128, 1000})), - reference_tests::Tensor(ET2, {}, std::vector{5}), - 1, - opset1::TopK::Mode::MIN, - opset1::TopK::SortType::SORT_VALUES, - reference_tests::Tensor(ET, {128, 5}, [](std::vector rshape) -> std::vector{ - std::vector expected_value; - for (size_t i = 0; i < rshape[0]; i++) { - for (size_t j = 0; j < rshape[1]; j++) { - expected_value.push_back(static_cast(j)); - } - } - return expected_value; - }({128, 5})), - reference_tests::Tensor(ET_OUT, {128, 5}, [](std::vector rshape) -> std::vector{ - std::vector expected_index; - for (size_t i = 0; i < rshape[0]; i++) { - for (size_t j = 0; j < rshape[1]; j++) { - expected_index.push_back(static_cast(j)); - } - } - return expected_index; - }({128, 5})), - 0, - "topk_min_sort_value"), + TopKParams(reference_tests::Tensor(ET, + {128, 1000}, + [](std::vector shape) -> std::vector { + std::vector data; + for (size_t i = 0; i < shape[0]; i++) { + for (size_t j = 0; j < shape[1]; j++) { + data.push_back(static_cast(j)); + } + } + return data; + }({128, 1000})), + reference_tests::Tensor(ET2, {}, std::vector{5}), + 1, + opset1::TopK::Mode::MIN, + opset1::TopK::SortType::SORT_VALUES, + reference_tests::Tensor(ET, + {128, 5}, + [](std::vector rshape) -> std::vector { + std::vector expected_value; + for (size_t i = 0; i < rshape[0]; i++) { + for (size_t j = 0; j < rshape[1]; j++) { + expected_value.push_back(static_cast(j)); + } + } + return expected_value; + }({128, 5})), + reference_tests::Tensor(ET_OUT, + {128, 5}, + [](std::vector rshape) -> std::vector { + std::vector expected_index; + for (size_t i = 0; i < rshape[0]; i++) { + for (size_t j = 0; j < rshape[1]; j++) { + expected_index.push_back(static_cast(j)); + } + } + return expected_index; + }({128, 5})), + 0, + "topk_min_sort_value"), TopKParams( - reference_tests::Tensor(ET, {128, 1000}, [](std::vector shape) -> std::vector { - std::vector data; - for (size_t i = 0; i < shape[0]; i++) { - for (size_t j = 0; j < shape[1]; j++) { - data.push_back(static_cast(j)); - } - } - return data; - }({128, 1000})), + reference_tests::Tensor(ET, + {128, 1000}, + [](std::vector shape) -> std::vector { + std::vector data; + for (size_t i = 0; i < shape[0]; i++) { + for (size_t j = 0; j < shape[1]; j++) { + data.push_back(static_cast(j)); + } + } + return data; + }({128, 1000})), reference_tests::Tensor(ET2, {}, std::vector{5}), 1, opset1::TopK::Mode::MAX, opset1::TopK::SortType::SORT_INDICES, - reference_tests::Tensor(ET, {128, 5}, [](std::vector rshape, std::vector shape) -> std::vector{ - std::vector expected_value; - for (size_t i = 0; i < rshape[0]; i++) { - expected_value.push_back(static_cast(shape[1] - 5)); - expected_value.push_back(static_cast(shape[1] - 4)); - expected_value.push_back(static_cast(shape[1] - 3)); - expected_value.push_back(static_cast(shape[1] - 2)); - expected_value.push_back(static_cast(shape[1] - 1)); - } - return expected_value; - }({128, 5}, {128, 1000})), - reference_tests::Tensor(ET_OUT, {128, 5}, [](std::vector rshape, std::vector shape) -> std::vector{ - std::vector expected_index; - for (size_t i = 0; i < rshape[0]; i++) { - expected_index.push_back(static_cast(shape[1] - 5)); - expected_index.push_back(static_cast(shape[1] - 4)); - expected_index.push_back(static_cast(shape[1] - 3)); - expected_index.push_back(static_cast(shape[1] - 2)); - expected_index.push_back(static_cast(shape[1] - 1)); - } - return expected_index; - }({128, 5}, {128, 1000})), + reference_tests::Tensor(ET, + {128, 5}, + [](std::vector rshape, std::vector shape) -> std::vector { + std::vector expected_value; + for (size_t i = 0; i < rshape[0]; i++) { + expected_value.push_back(static_cast(shape[1] - 5)); + expected_value.push_back(static_cast(shape[1] - 4)); + expected_value.push_back(static_cast(shape[1] - 3)); + expected_value.push_back(static_cast(shape[1] - 2)); + expected_value.push_back(static_cast(shape[1] - 1)); + } + return expected_value; + }({128, 5}, {128, 1000})), + reference_tests::Tensor(ET_OUT, + {128, 5}, + [](std::vector rshape, std::vector shape) -> std::vector { + std::vector expected_index; + for (size_t i = 0; i < rshape[0]; i++) { + expected_index.push_back(static_cast(shape[1] - 5)); + expected_index.push_back(static_cast(shape[1] - 4)); + expected_index.push_back(static_cast(shape[1] - 3)); + expected_index.push_back(static_cast(shape[1] - 2)); + expected_index.push_back(static_cast(shape[1] - 1)); + } + return expected_index; + }({128, 5}, {128, 1000})), 0, "topk_max_sort_index"), - TopKParams( - reference_tests::Tensor(ET, {128, 1000}, [](std::vector shape) -> std::vector { - std::vector data; - for (size_t i = 0; i < shape[0]; i++) { - for (size_t j = 0; j < shape[1]; j++) { - data.push_back(static_cast(j)); - } - } - return data; - }({128, 1000})), - reference_tests::Tensor(ET2, {}, std::vector{5}), - 1, - opset1::TopK::Mode::MIN, - opset1::TopK::SortType::SORT_INDICES, - reference_tests::Tensor(ET, {128, 5}, [](std::vector rshape) -> std::vector{ - std::vector expected_value; - for (size_t i = 0; i < rshape[0]; i++) { - for (size_t j = 0; j < rshape[1]; j++) { - expected_value.push_back(static_cast(j)); - } - } - return expected_value; - }({128, 5})), - reference_tests::Tensor(ET_OUT, {128, 5}, [](std::vector rshape) -> std::vector{ - std::vector expected_index; - for (size_t i = 0; i < rshape[0]; i++) { - for (size_t j = 0; j < rshape[1]; j++) { - expected_index.push_back(static_cast(j)); - } - } - return expected_index; - }({128, 5})), - 0, - "topk_min_sort_index"), + TopKParams(reference_tests::Tensor(ET, + {128, 1000}, + [](std::vector shape) -> std::vector { + std::vector data; + for (size_t i = 0; i < shape[0]; i++) { + for (size_t j = 0; j < shape[1]; j++) { + data.push_back(static_cast(j)); + } + } + return data; + }({128, 1000})), + reference_tests::Tensor(ET2, {}, std::vector{5}), + 1, + opset1::TopK::Mode::MIN, + opset1::TopK::SortType::SORT_INDICES, + reference_tests::Tensor(ET, + {128, 5}, + [](std::vector rshape) -> std::vector { + std::vector expected_value; + for (size_t i = 0; i < rshape[0]; i++) { + for (size_t j = 0; j < rshape[1]; j++) { + expected_value.push_back(static_cast(j)); + } + } + return expected_value; + }({128, 5})), + reference_tests::Tensor(ET_OUT, + {128, 5}, + [](std::vector rshape) -> std::vector { + std::vector expected_index; + for (size_t i = 0; i < rshape[0]; i++) { + for (size_t j = 0; j < rshape[1]; j++) { + expected_index.push_back(static_cast(j)); + } + } + return expected_index; + }({128, 5})), + 0, + "topk_min_sort_index"), - TopKParams( - reference_tests::Tensor(ET, {5}, std::vector{3, 1, 2, 5, 4}), - reference_tests::Tensor(ET2, {}, std::vector{3}), - 0, - opset1::TopK::Mode::MAX, - opset1::TopK::SortType::SORT_VALUES, - reference_tests::Tensor(ET, {3}, std::vector{5, 4, 3}), - reference_tests::Tensor(ET_OUT, {3}, std::vector{3, 4, 0}), - 0, - "topk_mode_sort_order"), + TopKParams(reference_tests::Tensor(ET, {5}, std::vector{3, 1, 2, 5, 4}), + reference_tests::Tensor(ET2, {}, std::vector{3}), + 0, + opset1::TopK::Mode::MAX, + opset1::TopK::SortType::SORT_VALUES, + reference_tests::Tensor(ET, {3}, std::vector{5, 4, 3}), + reference_tests::Tensor(ET_OUT, {3}, std::vector{3, 4, 0}), + 0, + "topk_mode_sort_order"), - TopKParams( - reference_tests::Tensor(ET, {5}, std::vector{3, 1, 2, 5, 4}), - reference_tests::Tensor(ET2, {}, std::vector{3}), - 0, - opset1::TopK::Mode::MAX, - opset1::TopK::SortType::SORT_INDICES, - reference_tests::Tensor(ET, {3}, std::vector{3, 5, 4}), - reference_tests::Tensor(ET_OUT, {3}, std::vector{0, 3, 4}), - 0, - "topk_mode_sort_order_1"), + TopKParams(reference_tests::Tensor(ET, {5}, std::vector{3, 1, 2, 5, 4}), + reference_tests::Tensor(ET2, {}, std::vector{3}), + 0, + opset1::TopK::Mode::MAX, + opset1::TopK::SortType::SORT_INDICES, + reference_tests::Tensor(ET, {3}, std::vector{3, 5, 4}), + reference_tests::Tensor(ET_OUT, {3}, std::vector{0, 3, 4}), + 0, + "topk_mode_sort_order_1"), - TopKParams( - reference_tests::Tensor(ET, {5}, std::vector{3, 1, 2, 5, 4}), - reference_tests::Tensor(ET2, {}, std::vector{3}), - 0, - opset1::TopK::Mode::MIN, - opset1::TopK::SortType::SORT_VALUES, - reference_tests::Tensor(ET, {3}, std::vector{1, 2, 3}), - reference_tests::Tensor(ET_OUT, {3}, std::vector{1, 2, 0}), - 0, - "topk_mode_sort_order_2"), + TopKParams(reference_tests::Tensor(ET, {5}, std::vector{3, 1, 2, 5, 4}), + reference_tests::Tensor(ET2, {}, std::vector{3}), + 0, + opset1::TopK::Mode::MIN, + opset1::TopK::SortType::SORT_VALUES, + reference_tests::Tensor(ET, {3}, std::vector{1, 2, 3}), + reference_tests::Tensor(ET_OUT, {3}, std::vector{1, 2, 0}), + 0, + "topk_mode_sort_order_2"), - TopKParams( - reference_tests::Tensor(ET, {5}, std::vector{3, 1, 2, 5, 4}), - reference_tests::Tensor(ET2, {}, std::vector{3}), - 0, - opset1::TopK::Mode::MIN, - opset1::TopK::SortType::SORT_INDICES, - reference_tests::Tensor(ET, {3}, std::vector{3, 1, 2}), - reference_tests::Tensor(ET_OUT, {3}, std::vector{0, 1, 2}), - 0, - "topk_mode_sort_order_3"), + TopKParams(reference_tests::Tensor(ET, {5}, std::vector{3, 1, 2, 5, 4}), + reference_tests::Tensor(ET2, {}, std::vector{3}), + 0, + opset1::TopK::Mode::MIN, + opset1::TopK::SortType::SORT_INDICES, + reference_tests::Tensor(ET, {3}, std::vector{3, 1, 2}), + reference_tests::Tensor(ET_OUT, {3}, std::vector{0, 1, 2}), + 0, + "topk_mode_sort_order_3"), }; return params; } std::vector generateCombinedParamsMaxMinSort() { - const std::vector> generatedParams { + const std::vector> generatedParams{ generateParamsMaxMinSort(), generateParamsMaxMinSort(), generateParamsMaxMinSort(), @@ -533,8 +586,10 @@ std::vector generateCombinedParamsMaxMinSort() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_TopK_With_Hardcoded_Refs, ReferenceTopKTestMaxMinSort, - testing::ValuesIn(generateCombinedParamsMaxMinSort()), ReferenceTopKTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_TopK_With_Hardcoded_Refs, + ReferenceTopKTestMaxMinSort, + testing::ValuesIn(generateCombinedParamsMaxMinSort()), + ReferenceTopKTest::getTestCaseName); class ReferenceTopKTestBackend : public ReferenceTopKTest { public: @@ -547,11 +602,8 @@ public: private: static std::shared_ptr CreateFunction(const TopKParams& params) { - const auto A = std::make_shared(params.A.type, - params.A.shape); - const auto k = opset1::Constant::create(params.k.type, - params.k.shape, - params.k.data.data()); + const auto A = std::make_shared(params.A.type, params.A.shape); + const auto k = opset1::Constant::create(params.k.type, params.k.shape, params.k.data.data()); const auto B = std::make_shared(A, k, params.axis, params.mode, params.sort); const auto f = std::make_shared(B->outputs(), ParameterVector{A}); return f; @@ -563,7 +615,7 @@ TEST_P(ReferenceTopKTestBackend, CompareWithRefs) { } std::vector generateCombinedParamsBackend() { - const std::vector> generatedParams { + const std::vector> generatedParams{ generateParamsMaxMinSort(), generateParamsMaxMinSort(), generateParamsMaxMinSort(), @@ -585,8 +637,10 @@ std::vector generateCombinedParamsBackend() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_TopK_With_Hardcoded_Refs, ReferenceTopKTestBackend, - testing::ValuesIn(generateCombinedParamsBackend()), ReferenceTopKTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_TopK_With_Hardcoded_Refs, + ReferenceTopKTestBackend, + testing::ValuesIn(generateCombinedParamsBackend()), + ReferenceTopKTest::getTestCaseName); class ReferenceTopKTest1dMaxMin : public ReferenceTopKTest { public: @@ -620,11 +674,8 @@ public: private: static std::shared_ptr CreateFunction(const TopKParams& params, size_t out_idx) { - const auto A = std::make_shared(params.A.type, - params.A.shape); - const auto k = opset1::Constant::create(params.k.type, - params.k.shape, - params.k.data.data()); + const auto A = std::make_shared(params.A.type, params.A.shape); + const auto k = opset1::Constant::create(params.k.type, params.k.shape, params.k.data.data()); const auto B = std::make_shared(A, k, params.axis, params.mode, params.sort); const auto f = std::make_shared(OutputVector{B->output(out_idx)}, ParameterVector{A}); return f; @@ -640,668 +691,478 @@ std::vector generateParams1dMaxMin() { using T = typename element_type_traits::value_type; using T2 = typename element_type_traits::value_type; using T_OUT = typename element_type_traits::value_type; - std::vector params { - TopKParams( - reference_tests::Tensor(ET, {6}, std::vector{1, 2, 3, 4, 5, 6}), - reference_tests::Tensor(ET2, {}, std::vector{6}), - 0, - opset1::TopK::Mode::MAX, - opset1::TopK::SortType::SORT_VALUES, - reference_tests::Tensor(ET, {6}, std::vector{6, 5, 4, 3, 2, 1}), - reference_tests::Tensor(ET_OUT, {6}, std::vector{5, 4, 3, 2, 1, 0}), - 0, - "topk_1d_max_all"), + std::vector params{ + TopKParams(reference_tests::Tensor(ET, {6}, std::vector{1, 2, 3, 4, 5, 6}), + reference_tests::Tensor(ET2, {}, std::vector{6}), + 0, + opset1::TopK::Mode::MAX, + opset1::TopK::SortType::SORT_VALUES, + reference_tests::Tensor(ET, {6}, std::vector{6, 5, 4, 3, 2, 1}), + reference_tests::Tensor(ET_OUT, {6}, std::vector{5, 4, 3, 2, 1, 0}), + 0, + "topk_1d_max_all"), + + TopKParams(reference_tests::Tensor(ET, {6}, std::vector{1, 2, 3, 4, 5, 6}), + reference_tests::Tensor(ET2, {}, std::vector{6}), + 0, + opset1::TopK::Mode::MAX, + opset1::TopK::SortType::SORT_VALUES, + reference_tests::Tensor(ET, {6}, std::vector{6, 5, 4, 3, 2, 1}), + reference_tests::Tensor(ET_OUT, {6}, std::vector{5, 4, 3, 2, 1, 0}), + 1, + "topk_1d_max_all"), + + TopKParams(reference_tests::Tensor(ET, {6}, std::vector{1, 2, 3, 4, 5, 6}), + reference_tests::Tensor(ET2, {}, std::vector{3}), + 0, + opset1::TopK::Mode::MAX, + opset1::TopK::SortType::SORT_VALUES, + reference_tests::Tensor(ET, {3}, std::vector{6, 5, 4}), + reference_tests::Tensor(ET_OUT, {3}, std::vector{5, 4, 3}), + 0, + "topk_1d_max_partial"), + + TopKParams(reference_tests::Tensor(ET, {6}, std::vector{1, 2, 3, 4, 5, 6}), + reference_tests::Tensor(ET2, {}, std::vector{3}), + 0, + opset1::TopK::Mode::MAX, + opset1::TopK::SortType::SORT_VALUES, + reference_tests::Tensor(ET, {3}, std::vector{6, 5, 4}), + reference_tests::Tensor(ET_OUT, {3}, std::vector{5, 4, 3}), + 1, + "topk_1d_max_partial"), + + TopKParams(reference_tests::Tensor(ET, {6}, std::vector{1, 2, 3, 4, 5, 6}), + reference_tests::Tensor(ET2, {}, std::vector{1}), + 0, + opset1::TopK::Mode::MAX, + opset1::TopK::SortType::SORT_VALUES, + reference_tests::Tensor(ET, {1}, std::vector{6}), + reference_tests::Tensor(ET_OUT, {1}, std::vector{5}), + 0, + "topk_1d_max_one"), + + TopKParams(reference_tests::Tensor(ET, {6}, std::vector{1, 2, 3, 4, 5, 6}), + reference_tests::Tensor(ET2, {}, std::vector{1}), + 0, + opset1::TopK::Mode::MAX, + opset1::TopK::SortType::SORT_VALUES, + reference_tests::Tensor(ET, {1}, std::vector{6}), + reference_tests::Tensor(ET_OUT, {1}, std::vector{5}), + 1, + "topk_1d_max_one"), + + TopKParams(reference_tests::Tensor(ET, {6}, std::vector{6, 5, 4, 3, 2, 1}), + reference_tests::Tensor(ET2, {}, std::vector{6}), + 0, + opset1::TopK::Mode::MIN, + opset1::TopK::SortType::SORT_VALUES, + reference_tests::Tensor(ET, {6}, std::vector{1, 2, 3, 4, 5, 6}), + reference_tests::Tensor(ET_OUT, {6}, std::vector{5, 4, 3, 2, 1, 0}), + 0, + "topk_1d_min_all"), + + TopKParams(reference_tests::Tensor(ET, {6}, std::vector{6, 5, 4, 3, 2, 1}), + reference_tests::Tensor(ET2, {}, std::vector{6}), + 0, + opset1::TopK::Mode::MIN, + opset1::TopK::SortType::SORT_VALUES, + reference_tests::Tensor(ET, {6}, std::vector{1, 2, 3, 4, 5, 6}), + reference_tests::Tensor(ET_OUT, {6}, std::vector{5, 4, 3, 2, 1, 0}), + 1, + "topk_1d_min_all"), + + TopKParams(reference_tests::Tensor(ET, {6}, std::vector{6, 5, 4, 3, 2, 1}), + reference_tests::Tensor(ET2, {}, std::vector{3}), + 0, + opset1::TopK::Mode::MIN, + opset1::TopK::SortType::SORT_VALUES, + reference_tests::Tensor(ET, {3}, std::vector{1, 2, 3}), + reference_tests::Tensor(ET_OUT, {3}, std::vector{5, 4, 3}), + 0, + "topk_1d_min_partial"), + + TopKParams(reference_tests::Tensor(ET, {6}, std::vector{6, 5, 4, 3, 2, 1}), + reference_tests::Tensor(ET2, {}, std::vector{3}), + 0, + opset1::TopK::Mode::MIN, + opset1::TopK::SortType::SORT_VALUES, + reference_tests::Tensor(ET, {3}, std::vector{1, 2, 3}), + reference_tests::Tensor(ET_OUT, {3}, std::vector{5, 4, 3}), + 1, + "topk_1d_min_partial"), + + TopKParams(reference_tests::Tensor(ET, {6}, std::vector{6, 5, 4, 3, 2, 1}), + reference_tests::Tensor(ET2, {}, std::vector{1}), + 0, + opset1::TopK::Mode::MIN, + opset1::TopK::SortType::SORT_VALUES, + reference_tests::Tensor(ET, {1}, std::vector{1}), + reference_tests::Tensor(ET_OUT, {1}, std::vector{5}), + 0, + "topk_1d_min_one"), + + TopKParams(reference_tests::Tensor(ET, {6}, std::vector{6, 5, 4, 3, 2, 1}), + reference_tests::Tensor(ET2, {}, std::vector{1}), + 0, + opset1::TopK::Mode::MIN, + opset1::TopK::SortType::SORT_VALUES, + reference_tests::Tensor(ET, {1}, std::vector{1}), + reference_tests::Tensor(ET_OUT, {1}, std::vector{5}), + 1, + "topk_1d_min_one"), + + TopKParams(reference_tests::Tensor(ET, {2, 3, 2}, std::vector{9, 2, 10, 12, 8, 4, 6, 1, 5, 3, 11, 7}), + reference_tests::Tensor(ET2, {}, std::vector{3}), + 1, + opset1::TopK::Mode::MAX, + opset1::TopK::SortType::SORT_VALUES, + reference_tests::Tensor(ET, {2, 3, 2}, std::vector{10, 12, 9, 4, 8, 2, 11, 7, 6, 3, 5, 1}), + reference_tests::Tensor(ET_OUT, {2, 3, 2}, std::vector{1, 1, 0, 2, 2, 0, 2, 2, 0, 1, 1, 0}), + 0, + "topk_3d_max_all"), + + TopKParams(reference_tests::Tensor(ET, {2, 3, 2}, std::vector{9, 2, 10, 12, 8, 4, 6, 1, 5, 3, 11, 7}), + reference_tests::Tensor(ET2, {}, std::vector{3}), + 1, + opset1::TopK::Mode::MAX, + opset1::TopK::SortType::SORT_VALUES, + reference_tests::Tensor(ET, {2, 3, 2}, std::vector{10, 12, 9, 4, 8, 2, 11, 7, 6, 3, 5, 1}), + reference_tests::Tensor(ET_OUT, {2, 3, 2}, std::vector{1, 1, 0, 2, 2, 0, 2, 2, 0, 1, 1, 0}), + 1, + "topk_3d_max_all"), TopKParams( - reference_tests::Tensor(ET, {6}, std::vector{1, 2, 3, 4, 5, 6}), - reference_tests::Tensor(ET2, {}, std::vector{6}), - 0, - opset1::TopK::Mode::MAX, - opset1::TopK::SortType::SORT_VALUES, - reference_tests::Tensor(ET, {6}, std::vector{6, 5, 4, 3, 2, 1}), - reference_tests::Tensor(ET_OUT, {6}, std::vector{5, 4, 3, 2, 1, 0}), - 1, - "topk_1d_max_all"), - - TopKParams( - reference_tests::Tensor(ET, {6}, std::vector{1, 2, 3, 4, 5, 6}), - reference_tests::Tensor(ET2, {}, std::vector{3}), - 0, - opset1::TopK::Mode::MAX, - opset1::TopK::SortType::SORT_VALUES, - reference_tests::Tensor(ET, {3}, std::vector{6, 5, 4}), - reference_tests::Tensor(ET_OUT, {3}, std::vector{5, 4, 3}), - 0, - "topk_1d_max_partial"), - - TopKParams( - reference_tests::Tensor(ET, {6}, std::vector{1, 2, 3, 4, 5, 6}), - reference_tests::Tensor(ET2, {}, std::vector{3}), - 0, - opset1::TopK::Mode::MAX, - opset1::TopK::SortType::SORT_VALUES, - reference_tests::Tensor(ET, {3}, std::vector{6, 5, 4}), - reference_tests::Tensor(ET_OUT, {3}, std::vector{5, 4, 3}), - 1, - "topk_1d_max_partial"), - - TopKParams( - reference_tests::Tensor(ET, {6}, std::vector{1, 2, 3, 4, 5, 6}), - reference_tests::Tensor(ET2, {}, std::vector{1}), - 0, - opset1::TopK::Mode::MAX, - opset1::TopK::SortType::SORT_VALUES, - reference_tests::Tensor(ET, {1}, std::vector{6}), - reference_tests::Tensor(ET_OUT, {1}, std::vector{5}), - 0, - "topk_1d_max_one"), - - TopKParams( - reference_tests::Tensor(ET, {6}, std::vector{1, 2, 3, 4, 5, 6}), - reference_tests::Tensor(ET2, {}, std::vector{1}), - 0, - opset1::TopK::Mode::MAX, - opset1::TopK::SortType::SORT_VALUES, - reference_tests::Tensor(ET, {1}, std::vector{6}), - reference_tests::Tensor(ET_OUT, {1}, std::vector{5}), - 1, - "topk_1d_max_one"), - - TopKParams( - reference_tests::Tensor(ET, {6}, std::vector{6, 5, 4, 3, 2, 1}), - reference_tests::Tensor(ET2, {}, std::vector{6}), - 0, - opset1::TopK::Mode::MIN, - opset1::TopK::SortType::SORT_VALUES, - reference_tests::Tensor(ET, {6}, std::vector{1, 2, 3, 4, 5, 6}), - reference_tests::Tensor(ET_OUT, {6}, std::vector{5, 4, 3, 2, 1, 0}), - 0, - "topk_1d_min_all"), - - TopKParams( - reference_tests::Tensor(ET, {6}, std::vector{6, 5, 4, 3, 2, 1}), - reference_tests::Tensor(ET2, {}, std::vector{6}), - 0, - opset1::TopK::Mode::MIN, - opset1::TopK::SortType::SORT_VALUES, - reference_tests::Tensor(ET, {6}, std::vector{1, 2, 3, 4, 5, 6}), - reference_tests::Tensor(ET_OUT, {6}, std::vector{5, 4, 3, 2, 1, 0}), - 1, - "topk_1d_min_all"), - - TopKParams( - reference_tests::Tensor(ET, {6}, std::vector{6, 5, 4, 3, 2, 1}), - reference_tests::Tensor(ET2, {}, std::vector{3}), - 0, - opset1::TopK::Mode::MIN, - opset1::TopK::SortType::SORT_VALUES, - reference_tests::Tensor(ET, {3}, std::vector{1, 2, 3}), - reference_tests::Tensor(ET_OUT, {3}, std::vector{5, 4, 3}), - 0, - "topk_1d_min_partial"), - - TopKParams( - reference_tests::Tensor(ET, {6}, std::vector{6, 5, 4, 3, 2, 1}), - reference_tests::Tensor(ET2, {}, std::vector{3}), - 0, - opset1::TopK::Mode::MIN, - opset1::TopK::SortType::SORT_VALUES, - reference_tests::Tensor(ET, {3}, std::vector{1, 2, 3}), - reference_tests::Tensor(ET_OUT, {3}, std::vector{5, 4, 3}), - 1, - "topk_1d_min_partial"), - - TopKParams( - reference_tests::Tensor(ET, {6}, std::vector{6, 5, 4, 3, 2, 1}), - reference_tests::Tensor(ET2, {}, std::vector{1}), - 0, - opset1::TopK::Mode::MIN, - opset1::TopK::SortType::SORT_VALUES, - reference_tests::Tensor(ET, {1}, std::vector{1}), - reference_tests::Tensor(ET_OUT, {1}, std::vector{5}), - 0, - "topk_1d_min_one"), - - TopKParams( - reference_tests::Tensor(ET, {6}, std::vector{6, 5, 4, 3, 2, 1}), - reference_tests::Tensor(ET2, {}, std::vector{1}), - 0, - opset1::TopK::Mode::MIN, - opset1::TopK::SortType::SORT_VALUES, - reference_tests::Tensor(ET, {1}, std::vector{1}), - reference_tests::Tensor(ET_OUT, {1}, std::vector{5}), - 1, - "topk_1d_min_one"), - - TopKParams( - reference_tests::Tensor(ET, {2, 3, 2}, std::vector{ - 9, 2, 10, 12, 8, 4, 6, 1, 5, 3, 11, 7 - }), - reference_tests::Tensor(ET2, {}, std::vector{3}), - 1, - opset1::TopK::Mode::MAX, - opset1::TopK::SortType::SORT_VALUES, - reference_tests::Tensor(ET, {2, 3, 2}, std::vector{ - 10, 12, 9, 4, 8, 2, 11, 7, 6, 3, 5, 1 - }), - reference_tests::Tensor(ET_OUT, {2, 3, 2}, std::vector{ - 1, 1, 0, 2, 2, 0, 2, 2, 0, 1, 1, 0 - }), - 0, - "topk_3d_max_all"), - - TopKParams( - reference_tests::Tensor(ET, {2, 3, 2}, std::vector{ - 9, 2, 10, 12, 8, 4, 6, 1, 5, 3, 11, 7 - }), - reference_tests::Tensor(ET2, {}, std::vector{3}), - 1, - opset1::TopK::Mode::MAX, - opset1::TopK::SortType::SORT_VALUES, - reference_tests::Tensor(ET, {2, 3, 2}, std::vector{ - 10, 12, 9, 4, 8, 2, 11, 7, 6, 3, 5, 1 - }), - reference_tests::Tensor(ET_OUT, {2, 3, 2}, std::vector{ - 1, 1, 0, 2, 2, 0, 2, 2, 0, 1, 1, 0 - }), - 1, - "topk_3d_max_all"), - - TopKParams( - reference_tests::Tensor(ET, {2, 6, 3, 2, 4}, std::vector{ - 1, 73, 9, 81, 17, 89, 2, 74, 10, 82, 18, 90, 3, 75, 11, 83, 19, - 91, 4, 76, 12, 84, 20, 92, 145, 217, 153, 225, 161, 233, 146, 218, 154, 226, - 162, 234, 147, 219, 155, 227, 163, 235, 148, 220, 156, 228, 164, 236, 5, 77, 13, - 85, 21, 93, 6, 78, 14, 86, 22, 94, 7, 79, 15, 87, 23, 95, 8, 80, - 16, 88, 24, 96, 149, 221, 157, 229, 165, 27, 150, 222, 158, 230, 166, 23, 151, - 223, 159, 231, 17, 39, 2, 224, 160, 232, 168, 240, 25, 97, 33, 105, 41, 113, - 26, 98, 34, 106, 42, 114, 27, 99, 35, 107, 43, 115, 28, 100, 36, 108, 44, - 116, 169, 241, 177, 249, 185, 25, 170, 242, 178, 250, 186, 258, 171, 243, 179, 251, - 187, 259, 172, 24, 180, 252, 188, 260, 29, 101, 37, 109, 45, 117, 30, 102, 38, - 10, 46, 118, 31, 103, 39, 111, 47, 119, 32, 104, 40, 112, 48, 20, 173, 245, - 181, 253, 189, 261, 174, 246, 182, 254, 190, 262, 175, 27, 183, 255, 191, 263, 176, - 248, 184, 256, 192, 264, 49, 121, 57, 129, 65, 137, 50, 122, 58, 130, 66, 138, - 51, 123, 59, 131, 67, 139, 52, 124, 60, 132, 68, 140, 193, 265, 201, 273, 209, - 281, 194, 266, 202, 274, 210, 43, 115, 28, 100, 36, 108, 44, 116, 169, 241, 177, - 212, 284, 53, 125, 61, 133, 69, 141, 54, 126, 62, 134, 70, 142, 55, 127, 63, - 135, 71, 143, 56, 128, 64, 136, 72, 144, 197, 269, 205, 277, 213, 285, 198, 270, - 206, 278, 214, 286, 199, 271, 207, 279, 215, 287, 200, 272, 208, 280, 216, 288 - }), + reference_tests::Tensor( + ET, + {2, 6, 3, 2, 4}, + std::vector{ + 1, 73, 9, 81, 17, 89, 2, 74, 10, 82, 18, 90, 3, 75, 11, 83, 19, 91, 4, 76, + 12, 84, 20, 92, 145, 217, 153, 225, 161, 233, 146, 218, 154, 226, 162, 234, 147, 219, 155, 227, + 163, 235, 148, 220, 156, 228, 164, 236, 5, 77, 13, 85, 21, 93, 6, 78, 14, 86, 22, 94, + 7, 79, 15, 87, 23, 95, 8, 80, 16, 88, 24, 96, 149, 221, 157, 229, 165, 27, 150, 222, + 158, 230, 166, 23, 151, 223, 159, 231, 17, 39, 2, 224, 160, 232, 168, 240, 25, 97, 33, 105, + 41, 113, 26, 98, 34, 106, 42, 114, 27, 99, 35, 107, 43, 115, 28, 100, 36, 108, 44, 116, + 169, 241, 177, 249, 185, 25, 170, 242, 178, 250, 186, 258, 171, 243, 179, 251, 187, 259, 172, 24, + 180, 252, 188, 260, 29, 101, 37, 109, 45, 117, 30, 102, 38, 10, 46, 118, 31, 103, 39, 111, + 47, 119, 32, 104, 40, 112, 48, 20, 173, 245, 181, 253, 189, 261, 174, 246, 182, 254, 190, 262, + 175, 27, 183, 255, 191, 263, 176, 248, 184, 256, 192, 264, 49, 121, 57, 129, 65, 137, 50, 122, + 58, 130, 66, 138, 51, 123, 59, 131, 67, 139, 52, 124, 60, 132, 68, 140, 193, 265, 201, 273, + 209, 281, 194, 266, 202, 274, 210, 43, 115, 28, 100, 36, 108, 44, 116, 169, 241, 177, 212, 284, + 53, 125, 61, 133, 69, 141, 54, 126, 62, 134, 70, 142, 55, 127, 63, 135, 71, 143, 56, 128, + 64, 136, 72, 144, 197, 269, 205, 277, 213, 285, 198, 270, 206, 278, 214, 286, 199, 271, 207, 279, + 215, 287, 200, 272, 208, 280, 216, 288}), reference_tests::Tensor(ET2, {}, std::vector{2}), 1, opset1::TopK::Mode::MAX, opset1::TopK::SortType::SORT_VALUES, - reference_tests::Tensor(ET, {2, 2, 3, 2, 4}, std::vector{ - 169, 241, 177, 249, 185, 233, 170, 242, 178, 250, 186, 258, 171, 243, 179, 251, - 187, 259, 172, 224, 180, 252, 188, 260, 149, 221, 157, 229, 165, 113, 150, 222, - 158, 230, 166, 234, 151, 223, 159, 231, 163, 235, 148, 220, 160, 232, 168, 240, - 197, 269, 205, 277, 213, 285, 198, 270, 206, 278, 214, 286, 199, 271, 207, 279, - 215, 287, 200, 272, 241, 280, 216, 288, 193, 265, 201, 273, 209, 281, 194, 266, - 202, 274, 210, 262, 175, 127, 183, 255, 191, 263, 176, 248, 208, 256, 212, 284 - }), - reference_tests::Tensor(ET_OUT, {2, 2, 3, 2, 4}, std::vector{ - 5, 5, 5, 5, 5, 1, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 3, 5, 5, 5, 5, - 3, 3, 3, 3, 3, 4, 3, 3, 3, 3, 3, 1, 3, 3, 3, 3, 1, 1, 1, 1, 3, 3, 3, 3, - 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 3, 5, 5, 5, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 1, 4, 1, 1, 1, 1, 1, 1, 5, 1, 3, 3 - }), + reference_tests::Tensor( + ET, + {2, 2, 3, 2, 4}, + std::vector{169, 241, 177, 249, 185, 233, 170, 242, 178, 250, 186, 258, 171, 243, 179, 251, + 187, 259, 172, 224, 180, 252, 188, 260, 149, 221, 157, 229, 165, 113, 150, 222, + 158, 230, 166, 234, 151, 223, 159, 231, 163, 235, 148, 220, 160, 232, 168, 240, + 197, 269, 205, 277, 213, 285, 198, 270, 206, 278, 214, 286, 199, 271, 207, 279, + 215, 287, 200, 272, 241, 280, 216, 288, 193, 265, 201, 273, 209, 281, 194, 266, + 202, 274, 210, 262, 175, 127, 183, 255, 191, 263, 176, 248, 208, 256, 212, 284}), + reference_tests::Tensor( + ET_OUT, + {2, 2, 3, 2, 4}, + std::vector{5, 5, 5, 5, 5, 1, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 3, 5, 5, 5, 5, + 3, 3, 3, 3, 3, 4, 3, 3, 3, 3, 3, 1, 3, 3, 3, 3, 1, 1, 1, 1, 3, 3, 3, 3, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 3, 5, 5, 5, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 1, 4, 1, 1, 1, 1, 1, 1, 5, 1, 3, 3}), 0, "topk_5d_max_partial"), TopKParams( - reference_tests::Tensor(ET, {2, 6, 3, 2, 4}, std::vector{ - 1, 73, 9, 81, 17, 89, 2, 74, 10, 82, 18, 90, 3, 75, 11, 83, 19, - 91, 4, 76, 12, 84, 20, 92, 145, 217, 153, 225, 161, 233, 146, 218, 154, 226, - 162, 234, 147, 219, 155, 227, 163, 235, 148, 220, 156, 228, 164, 236, 5, 77, 13, - 85, 21, 93, 6, 78, 14, 86, 22, 94, 7, 79, 15, 87, 23, 95, 8, 80, - 16, 88, 24, 96, 149, 221, 157, 229, 165, 27, 150, 222, 158, 230, 166, 23, 151, - 223, 159, 231, 17, 39, 2, 224, 160, 232, 168, 240, 25, 97, 33, 105, 41, 113, - 26, 98, 34, 106, 42, 114, 27, 99, 35, 107, 43, 115, 28, 100, 36, 108, 44, - 116, 169, 241, 177, 249, 185, 25, 170, 242, 178, 250, 186, 258, 171, 243, 179, 251, - 187, 259, 172, 24, 180, 252, 188, 260, 29, 101, 37, 109, 45, 117, 30, 102, 38, - 10, 46, 118, 31, 103, 39, 111, 47, 119, 32, 104, 40, 112, 48, 20, 173, 245, - 181, 253, 189, 261, 174, 246, 182, 254, 190, 262, 175, 27, 183, 255, 191, 263, 176, - 248, 184, 256, 192, 264, 49, 121, 57, 129, 65, 137, 50, 122, 58, 130, 66, 138, - 51, 123, 59, 131, 67, 139, 52, 124, 60, 132, 68, 140, 193, 265, 201, 273, 209, - 281, 194, 266, 202, 274, 210, 43, 115, 28, 100, 36, 108, 44, 116, 169, 241, 177, - 212, 284, 53, 125, 61, 133, 69, 141, 54, 126, 62, 134, 70, 142, 55, 127, 63, - 135, 71, 143, 56, 128, 64, 136, 72, 144, 197, 269, 205, 277, 213, 285, 198, 270, - 206, 278, 214, 286, 199, 271, 207, 279, 215, 287, 200, 272, 208, 280, 216, 288 - }), + reference_tests::Tensor( + ET, + {2, 6, 3, 2, 4}, + std::vector{ + 1, 73, 9, 81, 17, 89, 2, 74, 10, 82, 18, 90, 3, 75, 11, 83, 19, 91, 4, 76, + 12, 84, 20, 92, 145, 217, 153, 225, 161, 233, 146, 218, 154, 226, 162, 234, 147, 219, 155, 227, + 163, 235, 148, 220, 156, 228, 164, 236, 5, 77, 13, 85, 21, 93, 6, 78, 14, 86, 22, 94, + 7, 79, 15, 87, 23, 95, 8, 80, 16, 88, 24, 96, 149, 221, 157, 229, 165, 27, 150, 222, + 158, 230, 166, 23, 151, 223, 159, 231, 17, 39, 2, 224, 160, 232, 168, 240, 25, 97, 33, 105, + 41, 113, 26, 98, 34, 106, 42, 114, 27, 99, 35, 107, 43, 115, 28, 100, 36, 108, 44, 116, + 169, 241, 177, 249, 185, 25, 170, 242, 178, 250, 186, 258, 171, 243, 179, 251, 187, 259, 172, 24, + 180, 252, 188, 260, 29, 101, 37, 109, 45, 117, 30, 102, 38, 10, 46, 118, 31, 103, 39, 111, + 47, 119, 32, 104, 40, 112, 48, 20, 173, 245, 181, 253, 189, 261, 174, 246, 182, 254, 190, 262, + 175, 27, 183, 255, 191, 263, 176, 248, 184, 256, 192, 264, 49, 121, 57, 129, 65, 137, 50, 122, + 58, 130, 66, 138, 51, 123, 59, 131, 67, 139, 52, 124, 60, 132, 68, 140, 193, 265, 201, 273, + 209, 281, 194, 266, 202, 274, 210, 43, 115, 28, 100, 36, 108, 44, 116, 169, 241, 177, 212, 284, + 53, 125, 61, 133, 69, 141, 54, 126, 62, 134, 70, 142, 55, 127, 63, 135, 71, 143, 56, 128, + 64, 136, 72, 144, 197, 269, 205, 277, 213, 285, 198, 270, 206, 278, 214, 286, 199, 271, 207, 279, + 215, 287, 200, 272, 208, 280, 216, 288}), reference_tests::Tensor(ET2, {}, std::vector{2}), 1, opset1::TopK::Mode::MAX, opset1::TopK::SortType::SORT_VALUES, - reference_tests::Tensor(ET, {2, 2, 3, 2, 4}, std::vector{ - 169, 241, 177, 249, 185, 233, 170, 242, 178, 250, 186, 258, 171, 243, 179, 251, - 187, 259, 172, 224, 180, 252, 188, 260, 149, 221, 157, 229, 165, 113, 150, 222, - 158, 230, 166, 234, 151, 223, 159, 231, 163, 235, 148, 220, 160, 232, 168, 240, - 197, 269, 205, 277, 213, 285, 198, 270, 206, 278, 214, 286, 199, 271, 207, 279, - 215, 287, 200, 272, 241, 280, 216, 288, 193, 265, 201, 273, 209, 281, 194, 266, - 202, 274, 210, 262, 175, 127, 183, 255, 191, 263, 176, 248, 208, 256, 212, 284 - }), - reference_tests::Tensor(ET_OUT, {2, 2, 3, 2, 4}, std::vector{ - 5, 5, 5, 5, 5, 1, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 3, 5, 5, 5, 5, - 3, 3, 3, 3, 3, 4, 3, 3, 3, 3, 3, 1, 3, 3, 3, 3, 1, 1, 1, 1, 3, 3, 3, 3, - 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 3, 5, 5, 5, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 1, 4, 1, 1, 1, 1, 1, 1, 5, 1, 3, 3 - }), + reference_tests::Tensor( + ET, + {2, 2, 3, 2, 4}, + std::vector{169, 241, 177, 249, 185, 233, 170, 242, 178, 250, 186, 258, 171, 243, 179, 251, + 187, 259, 172, 224, 180, 252, 188, 260, 149, 221, 157, 229, 165, 113, 150, 222, + 158, 230, 166, 234, 151, 223, 159, 231, 163, 235, 148, 220, 160, 232, 168, 240, + 197, 269, 205, 277, 213, 285, 198, 270, 206, 278, 214, 286, 199, 271, 207, 279, + 215, 287, 200, 272, 241, 280, 216, 288, 193, 265, 201, 273, 209, 281, 194, 266, + 202, 274, 210, 262, 175, 127, 183, 255, 191, 263, 176, 248, 208, 256, 212, 284}), + reference_tests::Tensor( + ET_OUT, + {2, 2, 3, 2, 4}, + std::vector{5, 5, 5, 5, 5, 1, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 3, 5, 5, 5, 5, + 3, 3, 3, 3, 3, 4, 3, 3, 3, 3, 3, 1, 3, 3, 3, 3, 1, 1, 1, 1, 3, 3, 3, 3, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 3, 5, 5, 5, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 1, 4, 1, 1, 1, 1, 1, 1, 5, 1, 3, 3}), 1, "topk_5d_max_partial"), - TopKParams( - reference_tests::Tensor(ET, {2, 3, 2}, std::vector{ - 9, 2, 10, 12, 8, 4, 6, 1, 5, 3, 11, 7 - }), - reference_tests::Tensor(ET2, {}, std::vector{2}), - 1, - opset1::TopK::Mode::MAX, - opset1::TopK::SortType::SORT_VALUES, - reference_tests::Tensor(ET, {2, 2, 2}, std::vector{ - 10, 12, 9, 4, 11, 7, 6, 3 - }), - reference_tests::Tensor(ET_OUT, {2, 2, 2}, std::vector{ - 1, 1, 0, 2, 2, 2, 0, 1 - }), - 0, - "topk_3d_max_partial"), + TopKParams(reference_tests::Tensor(ET, {2, 3, 2}, std::vector{9, 2, 10, 12, 8, 4, 6, 1, 5, 3, 11, 7}), + reference_tests::Tensor(ET2, {}, std::vector{2}), + 1, + opset1::TopK::Mode::MAX, + opset1::TopK::SortType::SORT_VALUES, + reference_tests::Tensor(ET, {2, 2, 2}, std::vector{10, 12, 9, 4, 11, 7, 6, 3}), + reference_tests::Tensor(ET_OUT, {2, 2, 2}, std::vector{1, 1, 0, 2, 2, 2, 0, 1}), + 0, + "topk_3d_max_partial"), - TopKParams( - reference_tests::Tensor(ET, {2, 3, 2}, std::vector{ - 9, 2, 10, 12, 8, 4, 6, 1, 5, 3, 11, 7 - }), - reference_tests::Tensor(ET2, {}, std::vector{2}), - 1, - opset1::TopK::Mode::MAX, - opset1::TopK::SortType::SORT_VALUES, - reference_tests::Tensor(ET, {2, 2, 2}, std::vector{ - 10, 12, 9, 4, 11, 7, 6, 3 - }), - reference_tests::Tensor(ET_OUT, {2, 2, 2}, std::vector{ - 1, 1, 0, 2, 2, 2, 0, 1 - }), - 1, - "topk_3d_max_partial"), + TopKParams(reference_tests::Tensor(ET, {2, 3, 2}, std::vector{9, 2, 10, 12, 8, 4, 6, 1, 5, 3, 11, 7}), + reference_tests::Tensor(ET2, {}, std::vector{2}), + 1, + opset1::TopK::Mode::MAX, + opset1::TopK::SortType::SORT_VALUES, + reference_tests::Tensor(ET, {2, 2, 2}, std::vector{10, 12, 9, 4, 11, 7, 6, 3}), + reference_tests::Tensor(ET_OUT, {2, 2, 2}, std::vector{1, 1, 0, 2, 2, 2, 0, 1}), + 1, + "topk_3d_max_partial"), - TopKParams( - reference_tests::Tensor(ET, {2, 3, 2}, std::vector{ - 9, 2, 10, 12, 8, 4, 6, 1, 5, 3, 11, 7 - }), - reference_tests::Tensor(ET2, {}, std::vector{1}), - 1, - opset1::TopK::Mode::MAX, - opset1::TopK::SortType::SORT_VALUES, - reference_tests::Tensor(ET, {2, 1, 2}, std::vector{ - 10, 12, 11, 7 - }), - reference_tests::Tensor(ET_OUT, {2, 1, 2}, std::vector{ - 1, 1, 2, 2 - }), - 0, - "topk_3d_max_one"), + TopKParams(reference_tests::Tensor(ET, {2, 3, 2}, std::vector{9, 2, 10, 12, 8, 4, 6, 1, 5, 3, 11, 7}), + reference_tests::Tensor(ET2, {}, std::vector{1}), + 1, + opset1::TopK::Mode::MAX, + opset1::TopK::SortType::SORT_VALUES, + reference_tests::Tensor(ET, {2, 1, 2}, std::vector{10, 12, 11, 7}), + reference_tests::Tensor(ET_OUT, {2, 1, 2}, std::vector{1, 1, 2, 2}), + 0, + "topk_3d_max_one"), - TopKParams( - reference_tests::Tensor(ET, {2, 3, 2}, std::vector{ - 9, 2, 10, 12, 8, 4, 6, 1, 5, 3, 11, 7 - }), - reference_tests::Tensor(ET2, {}, std::vector{1}), - 1, - opset1::TopK::Mode::MAX, - opset1::TopK::SortType::SORT_VALUES, - reference_tests::Tensor(ET, {2, 1, 2}, std::vector{ - 10, 12, 11, 7 - }), - reference_tests::Tensor(ET_OUT, {2, 1, 2}, std::vector{ - 1, 1, 2, 2 - }), - 1, - "topk_3d_max_one"), + TopKParams(reference_tests::Tensor(ET, {2, 3, 2}, std::vector{9, 2, 10, 12, 8, 4, 6, 1, 5, 3, 11, 7}), + reference_tests::Tensor(ET2, {}, std::vector{1}), + 1, + opset1::TopK::Mode::MAX, + opset1::TopK::SortType::SORT_VALUES, + reference_tests::Tensor(ET, {2, 1, 2}, std::vector{10, 12, 11, 7}), + reference_tests::Tensor(ET_OUT, {2, 1, 2}, std::vector{1, 1, 2, 2}), + 1, + "topk_3d_max_one"), - TopKParams( - reference_tests::Tensor(ET, {2, 3, 2}, std::vector{ - 12, 2, 10, 9, 8, 4, 6, 1, 5, 3, 11, 7 - }), - reference_tests::Tensor(ET2, {}, std::vector{3}), - 1, - opset1::TopK::Mode::MIN, - opset1::TopK::SortType::SORT_VALUES, - reference_tests::Tensor(ET, {2, 3, 2}, std::vector{ - 8, 2, 10, 4, 12, 9, 5, 1, 6, 3, 11, 7 - }), - reference_tests::Tensor(ET_OUT, {2, 3, 2}, std::vector{ - 2, 0, 1, 2, 0, 1, 1, 0, 0, 1, 2, 2 - }), - 0, - "topk_3d_min_all"), + TopKParams(reference_tests::Tensor(ET, {2, 3, 2}, std::vector{12, 2, 10, 9, 8, 4, 6, 1, 5, 3, 11, 7}), + reference_tests::Tensor(ET2, {}, std::vector{3}), + 1, + opset1::TopK::Mode::MIN, + opset1::TopK::SortType::SORT_VALUES, + reference_tests::Tensor(ET, {2, 3, 2}, std::vector{8, 2, 10, 4, 12, 9, 5, 1, 6, 3, 11, 7}), + reference_tests::Tensor(ET_OUT, {2, 3, 2}, std::vector{2, 0, 1, 2, 0, 1, 1, 0, 0, 1, 2, 2}), + 0, + "topk_3d_min_all"), - TopKParams( - reference_tests::Tensor(ET, {2, 3, 2}, std::vector{ - 12, 2, 10, 9, 8, 4, 6, 1, 5, 3, 11, 7 - }), - reference_tests::Tensor(ET2, {}, std::vector{3}), - 1, - opset1::TopK::Mode::MIN, - opset1::TopK::SortType::SORT_VALUES, - reference_tests::Tensor(ET, {2, 3, 2}, std::vector{ - 8, 2, 10, 4, 12, 9, 5, 1, 6, 3, 11, 7 - }), - reference_tests::Tensor(ET_OUT, {2, 3, 2}, std::vector{ - 2, 0, 1, 2, 0, 1, 1, 0, 0, 1, 2, 2 - }), - 1, - "topk_3d_min_all"), + TopKParams(reference_tests::Tensor(ET, {2, 3, 2}, std::vector{12, 2, 10, 9, 8, 4, 6, 1, 5, 3, 11, 7}), + reference_tests::Tensor(ET2, {}, std::vector{3}), + 1, + opset1::TopK::Mode::MIN, + opset1::TopK::SortType::SORT_VALUES, + reference_tests::Tensor(ET, {2, 3, 2}, std::vector{8, 2, 10, 4, 12, 9, 5, 1, 6, 3, 11, 7}), + reference_tests::Tensor(ET_OUT, {2, 3, 2}, std::vector{2, 0, 1, 2, 0, 1, 1, 0, 0, 1, 2, 2}), + 1, + "topk_3d_min_all"), - TopKParams( - reference_tests::Tensor(ET, {2, 3, 2}, std::vector{ - 12, 2, 10, 9, 8, 4, 6, 1, 5, 3, 11, 7 - }), - reference_tests::Tensor(ET2, {}, std::vector{2}), - 1, - opset1::TopK::Mode::MIN, - opset1::TopK::SortType::SORT_VALUES, - reference_tests::Tensor(ET, {2, 2, 2}, std::vector{ - 8, 2, 10, 4, 5, 1, 6, 3 - }), - reference_tests::Tensor(ET_OUT, {2, 2, 2}, std::vector{ - 2, 0, 1, 2, 1, 0, 0, 1 - }), - 0, - "topk_3d_min_partial"), + TopKParams(reference_tests::Tensor(ET, {2, 3, 2}, std::vector{12, 2, 10, 9, 8, 4, 6, 1, 5, 3, 11, 7}), + reference_tests::Tensor(ET2, {}, std::vector{2}), + 1, + opset1::TopK::Mode::MIN, + opset1::TopK::SortType::SORT_VALUES, + reference_tests::Tensor(ET, {2, 2, 2}, std::vector{8, 2, 10, 4, 5, 1, 6, 3}), + reference_tests::Tensor(ET_OUT, {2, 2, 2}, std::vector{2, 0, 1, 2, 1, 0, 0, 1}), + 0, + "topk_3d_min_partial"), - TopKParams( - reference_tests::Tensor(ET, {2, 3, 2}, std::vector{ - 12, 2, 10, 9, 8, 4, 6, 1, 5, 3, 11, 7 - }), - reference_tests::Tensor(ET2, {}, std::vector{2}), - 1, - opset1::TopK::Mode::MIN, - opset1::TopK::SortType::SORT_VALUES, - reference_tests::Tensor(ET, {2, 2, 2}, std::vector{ - 8, 2, 10, 4, 5, 1, 6, 3 - }), - reference_tests::Tensor(ET_OUT, {2, 2, 2}, std::vector{ - 2, 0, 1, 2, 1, 0, 0, 1 - }), - 1, - "topk_3d_min_partial"), + TopKParams(reference_tests::Tensor(ET, {2, 3, 2}, std::vector{12, 2, 10, 9, 8, 4, 6, 1, 5, 3, 11, 7}), + reference_tests::Tensor(ET2, {}, std::vector{2}), + 1, + opset1::TopK::Mode::MIN, + opset1::TopK::SortType::SORT_VALUES, + reference_tests::Tensor(ET, {2, 2, 2}, std::vector{8, 2, 10, 4, 5, 1, 6, 3}), + reference_tests::Tensor(ET_OUT, {2, 2, 2}, std::vector{2, 0, 1, 2, 1, 0, 0, 1}), + 1, + "topk_3d_min_partial"), - TopKParams( - reference_tests::Tensor(ET, {2, 3, 2}, std::vector{ - 12, 2, 10, 9, 8, 4, 6, 1, 5, 3, 11, 7 - }), - reference_tests::Tensor(ET2, {}, std::vector{1}), - 1, - opset1::TopK::Mode::MIN, - opset1::TopK::SortType::SORT_VALUES, - reference_tests::Tensor(ET, {2, 1, 2}, std::vector{ - 8, 2, 5, 1 - }), - reference_tests::Tensor(ET_OUT, {2, 1, 2}, std::vector{ - 2, 0, 1, 0 - }), - 0, - "topk_3d_min_one"), + TopKParams(reference_tests::Tensor(ET, {2, 3, 2}, std::vector{12, 2, 10, 9, 8, 4, 6, 1, 5, 3, 11, 7}), + reference_tests::Tensor(ET2, {}, std::vector{1}), + 1, + opset1::TopK::Mode::MIN, + opset1::TopK::SortType::SORT_VALUES, + reference_tests::Tensor(ET, {2, 1, 2}, std::vector{8, 2, 5, 1}), + reference_tests::Tensor(ET_OUT, {2, 1, 2}, std::vector{2, 0, 1, 0}), + 0, + "topk_3d_min_one"), - TopKParams( - reference_tests::Tensor(ET, {2, 3, 2}, std::vector{ - 12, 2, 10, 9, 8, 4, 6, 1, 5, 3, 11, 7 - }), - reference_tests::Tensor(ET2, {}, std::vector{1}), - 1, - opset1::TopK::Mode::MIN, - opset1::TopK::SortType::SORT_VALUES, - reference_tests::Tensor(ET, {2, 1, 2}, std::vector{ - 8, 2, 5, 1 - }), - reference_tests::Tensor(ET_OUT, {2, 1, 2}, std::vector{ - 2, 0, 1, 0 - }), - 1, - "topk_3d_min_one"), + TopKParams(reference_tests::Tensor(ET, {2, 3, 2}, std::vector{12, 2, 10, 9, 8, 4, 6, 1, 5, 3, 11, 7}), + reference_tests::Tensor(ET2, {}, std::vector{1}), + 1, + opset1::TopK::Mode::MIN, + opset1::TopK::SortType::SORT_VALUES, + reference_tests::Tensor(ET, {2, 1, 2}, std::vector{8, 2, 5, 1}), + reference_tests::Tensor(ET_OUT, {2, 1, 2}, std::vector{2, 0, 1, 0}), + 1, + "topk_3d_min_one"), - TopKParams( - reference_tests::Tensor(ET, {4, 3}, std::vector{ - 9, 2, 10, 12, 8, 4, 6, 1, 5, 3, 11, 7 - }), - reference_tests::Tensor(ET2, {}, std::vector{4}), - 0, - opset1::TopK::Mode::MAX, - opset1::TopK::SortType::SORT_VALUES, - reference_tests::Tensor(ET, {4, 3}, std::vector{ - 12, 11, 10, 9, 8, 7, 6, 2, 5, 3, 1, 4 - }), - reference_tests::Tensor(ET_OUT, {4, 3}, std::vector{ - 1, 3, 0, 0, 1, 3, 2, 0, 2, 3, 2, 1 - }), - 0, - "topk_2d_max_all"), + TopKParams(reference_tests::Tensor(ET, {4, 3}, std::vector{9, 2, 10, 12, 8, 4, 6, 1, 5, 3, 11, 7}), + reference_tests::Tensor(ET2, {}, std::vector{4}), + 0, + opset1::TopK::Mode::MAX, + opset1::TopK::SortType::SORT_VALUES, + reference_tests::Tensor(ET, {4, 3}, std::vector{12, 11, 10, 9, 8, 7, 6, 2, 5, 3, 1, 4}), + reference_tests::Tensor(ET_OUT, {4, 3}, std::vector{1, 3, 0, 0, 1, 3, 2, 0, 2, 3, 2, 1}), + 0, + "topk_2d_max_all"), - TopKParams( - reference_tests::Tensor(ET, {4, 3}, std::vector{ - 9, 2, 10, 12, 8, 4, 6, 1, 5, 3, 11, 7 - }), - reference_tests::Tensor(ET2, {}, std::vector{4}), - 0, - opset1::TopK::Mode::MAX, - opset1::TopK::SortType::SORT_VALUES, - reference_tests::Tensor(ET, {4, 3}, std::vector{ - 12, 11, 10, 9, 8, 7, 6, 2, 5, 3, 1, 4 - }), - reference_tests::Tensor(ET_OUT, {4, 3}, std::vector{ - 1, 3, 0, 0, 1, 3, 2, 0, 2, 3, 2, 1 - }), - 1, - "topk_2d_max_all"), + TopKParams(reference_tests::Tensor(ET, {4, 3}, std::vector{9, 2, 10, 12, 8, 4, 6, 1, 5, 3, 11, 7}), + reference_tests::Tensor(ET2, {}, std::vector{4}), + 0, + opset1::TopK::Mode::MAX, + opset1::TopK::SortType::SORT_VALUES, + reference_tests::Tensor(ET, {4, 3}, std::vector{12, 11, 10, 9, 8, 7, 6, 2, 5, 3, 1, 4}), + reference_tests::Tensor(ET_OUT, {4, 3}, std::vector{1, 3, 0, 0, 1, 3, 2, 0, 2, 3, 2, 1}), + 1, + "topk_2d_max_all"), - TopKParams( - reference_tests::Tensor(ET, {4, 3}, std::vector{ - 9, 2, 10, 12, 8, 4, 6, 1, 5, 3, 11, 7 - }), - reference_tests::Tensor(ET2, {}, std::vector{2}), - 0, - opset1::TopK::Mode::MAX, - opset1::TopK::SortType::SORT_VALUES, - reference_tests::Tensor(ET, {2, 3}, std::vector{ - 12, 11, 10, 9, 8, 7 - }), - reference_tests::Tensor(ET_OUT, {2, 3}, std::vector{ - 1, 3, 0, 0, 1, 3 - }), - 0, - "topk_2d_max_partial"), + TopKParams(reference_tests::Tensor(ET, {4, 3}, std::vector{9, 2, 10, 12, 8, 4, 6, 1, 5, 3, 11, 7}), + reference_tests::Tensor(ET2, {}, std::vector{2}), + 0, + opset1::TopK::Mode::MAX, + opset1::TopK::SortType::SORT_VALUES, + reference_tests::Tensor(ET, {2, 3}, std::vector{12, 11, 10, 9, 8, 7}), + reference_tests::Tensor(ET_OUT, {2, 3}, std::vector{1, 3, 0, 0, 1, 3}), + 0, + "topk_2d_max_partial"), - TopKParams( - reference_tests::Tensor(ET, {4, 3}, std::vector{ - 9, 2, 10, 12, 8, 4, 6, 1, 5, 3, 11, 7 - }), - reference_tests::Tensor(ET2, {}, std::vector{2}), - 0, - opset1::TopK::Mode::MAX, - opset1::TopK::SortType::SORT_VALUES, - reference_tests::Tensor(ET, {2, 3}, std::vector{ - 12, 11, 10, 9, 8, 7 - }), - reference_tests::Tensor(ET_OUT, {2, 3}, std::vector{ - 1, 3, 0, 0, 1, 3 - }), - 1, - "topk_2d_max_partial"), + TopKParams(reference_tests::Tensor(ET, {4, 3}, std::vector{9, 2, 10, 12, 8, 4, 6, 1, 5, 3, 11, 7}), + reference_tests::Tensor(ET2, {}, std::vector{2}), + 0, + opset1::TopK::Mode::MAX, + opset1::TopK::SortType::SORT_VALUES, + reference_tests::Tensor(ET, {2, 3}, std::vector{12, 11, 10, 9, 8, 7}), + reference_tests::Tensor(ET_OUT, {2, 3}, std::vector{1, 3, 0, 0, 1, 3}), + 1, + "topk_2d_max_partial"), - TopKParams( - reference_tests::Tensor(ET, {4, 3}, std::vector{ - 9, 2, 10, 12, 8, 4, 6, 1, 5, 3, 11, 7 - }), - reference_tests::Tensor(ET2, {}, std::vector{1}), - 0, - opset1::TopK::Mode::MAX, - opset1::TopK::SortType::SORT_VALUES, - reference_tests::Tensor(ET, {1, 3}, std::vector{ - 12, 11, 10 - }), - reference_tests::Tensor(ET_OUT, {1, 3}, std::vector{ - 1, 3, 0 - }), - 0, - "topk_2d_max_one"), + TopKParams(reference_tests::Tensor(ET, {4, 3}, std::vector{9, 2, 10, 12, 8, 4, 6, 1, 5, 3, 11, 7}), + reference_tests::Tensor(ET2, {}, std::vector{1}), + 0, + opset1::TopK::Mode::MAX, + opset1::TopK::SortType::SORT_VALUES, + reference_tests::Tensor(ET, {1, 3}, std::vector{12, 11, 10}), + reference_tests::Tensor(ET_OUT, {1, 3}, std::vector{1, 3, 0}), + 0, + "topk_2d_max_one"), - TopKParams( - reference_tests::Tensor(ET, {4, 3}, std::vector{ - 9, 2, 10, 12, 8, 4, 6, 1, 5, 3, 11, 7 - }), - reference_tests::Tensor(ET2, {}, std::vector{1}), - 0, - opset1::TopK::Mode::MAX, - opset1::TopK::SortType::SORT_VALUES, - reference_tests::Tensor(ET, {1, 3}, std::vector{ - 12, 11, 10 - }), - reference_tests::Tensor(ET_OUT, {1, 3}, std::vector{ - 1, 3, 0 - }), - 1, - "topk_2d_max_one"), + TopKParams(reference_tests::Tensor(ET, {4, 3}, std::vector{9, 2, 10, 12, 8, 4, 6, 1, 5, 3, 11, 7}), + reference_tests::Tensor(ET2, {}, std::vector{1}), + 0, + opset1::TopK::Mode::MAX, + opset1::TopK::SortType::SORT_VALUES, + reference_tests::Tensor(ET, {1, 3}, std::vector{12, 11, 10}), + reference_tests::Tensor(ET_OUT, {1, 3}, std::vector{1, 3, 0}), + 1, + "topk_2d_max_one"), - TopKParams( - reference_tests::Tensor(ET, {2, 4}, std::vector{ - 1, 3, 2, 4, 1, 3, 3, 2 - }), - reference_tests::Tensor(ET2, {}, std::vector{1}), - 1, - opset1::TopK::Mode::MAX, - opset1::TopK::SortType::SORT_VALUES, - reference_tests::Tensor(ET, {2, 1}, std::vector{ - 4, 3 - }), - reference_tests::Tensor(ET_OUT, {2, 1}, std::vector{ - 3, 1 - }), - 0, - "topk_2d_max_one_with_equal_values"), + TopKParams(reference_tests::Tensor(ET, {2, 4}, std::vector{1, 3, 2, 4, 1, 3, 3, 2}), + reference_tests::Tensor(ET2, {}, std::vector{1}), + 1, + opset1::TopK::Mode::MAX, + opset1::TopK::SortType::SORT_VALUES, + reference_tests::Tensor(ET, {2, 1}, std::vector{4, 3}), + reference_tests::Tensor(ET_OUT, {2, 1}, std::vector{3, 1}), + 0, + "topk_2d_max_one_with_equal_values"), - TopKParams( - reference_tests::Tensor(ET, {2, 4}, std::vector{ - 1, 3, 2, 4, 1, 3, 3, 2 - }), - reference_tests::Tensor(ET2, {}, std::vector{1}), - 1, - opset1::TopK::Mode::MAX, - opset1::TopK::SortType::SORT_VALUES, - reference_tests::Tensor(ET, {2, 1}, std::vector{ - 4, 3 - }), - reference_tests::Tensor(ET_OUT, {2, 1}, std::vector{ - 3, 1 - }), - 1, - "topk_2d_max_one_with_equal_values"), + TopKParams(reference_tests::Tensor(ET, {2, 4}, std::vector{1, 3, 2, 4, 1, 3, 3, 2}), + reference_tests::Tensor(ET2, {}, std::vector{1}), + 1, + opset1::TopK::Mode::MAX, + opset1::TopK::SortType::SORT_VALUES, + reference_tests::Tensor(ET, {2, 1}, std::vector{4, 3}), + reference_tests::Tensor(ET_OUT, {2, 1}, std::vector{3, 1}), + 1, + "topk_2d_max_one_with_equal_values"), - TopKParams( - reference_tests::Tensor(ET, {4, 3}, std::vector{ - 12, 2, 10, 9, 8, 4, 6, 1, 5, 3, 11, 7 - }), - reference_tests::Tensor(ET2, {}, std::vector{4}), - 0, - opset1::TopK::Mode::MIN, - opset1::TopK::SortType::SORT_VALUES, - reference_tests::Tensor(ET, {4, 3}, std::vector{ - 3, 1, 4, 6, 2, 5, 9, 8, 7, 12, 11, 10 - }), - reference_tests::Tensor(ET_OUT, {4, 3}, std::vector{ - 3, 2, 1, 2, 0, 2, 1, 1, 3, 0, 3, 0 - }), - 0, - "topk_2d_min_all"), + TopKParams(reference_tests::Tensor(ET, {4, 3}, std::vector{12, 2, 10, 9, 8, 4, 6, 1, 5, 3, 11, 7}), + reference_tests::Tensor(ET2, {}, std::vector{4}), + 0, + opset1::TopK::Mode::MIN, + opset1::TopK::SortType::SORT_VALUES, + reference_tests::Tensor(ET, {4, 3}, std::vector{3, 1, 4, 6, 2, 5, 9, 8, 7, 12, 11, 10}), + reference_tests::Tensor(ET_OUT, {4, 3}, std::vector{3, 2, 1, 2, 0, 2, 1, 1, 3, 0, 3, 0}), + 0, + "topk_2d_min_all"), - TopKParams( - reference_tests::Tensor(ET, {4, 3}, std::vector{ - 12, 2, 10, 9, 8, 4, 6, 1, 5, 3, 11, 7 - }), - reference_tests::Tensor(ET2, {}, std::vector{4}), - 0, - opset1::TopK::Mode::MIN, - opset1::TopK::SortType::SORT_VALUES, - reference_tests::Tensor(ET, {4, 3}, std::vector{ - 3, 1, 4, 6, 2, 5, 9, 8, 7, 12, 11, 10 - }), - reference_tests::Tensor(ET_OUT, {4, 3}, std::vector{ - 3, 2, 1, 2, 0, 2, 1, 1, 3, 0, 3, 0 - }), - 1, - "topk_2d_min_all"), + TopKParams(reference_tests::Tensor(ET, {4, 3}, std::vector{12, 2, 10, 9, 8, 4, 6, 1, 5, 3, 11, 7}), + reference_tests::Tensor(ET2, {}, std::vector{4}), + 0, + opset1::TopK::Mode::MIN, + opset1::TopK::SortType::SORT_VALUES, + reference_tests::Tensor(ET, {4, 3}, std::vector{3, 1, 4, 6, 2, 5, 9, 8, 7, 12, 11, 10}), + reference_tests::Tensor(ET_OUT, {4, 3}, std::vector{3, 2, 1, 2, 0, 2, 1, 1, 3, 0, 3, 0}), + 1, + "topk_2d_min_all"), - TopKParams( - reference_tests::Tensor(ET, {4, 3}, std::vector{ - 12, 2, 10, 9, 8, 4, 6, 1, 5, 3, 11, 7 - }), - reference_tests::Tensor(ET2, {}, std::vector{2}), - 0, - opset1::TopK::Mode::MIN, - opset1::TopK::SortType::SORT_VALUES, - reference_tests::Tensor(ET, {2, 3}, std::vector{ - 3, 1, 4, 6, 2, 5 - }), - reference_tests::Tensor(ET_OUT, {2, 3}, std::vector{ - 3, 2, 1, 2, 0, 2 - }), - 0, - "topk_2d_min_partial"), + TopKParams(reference_tests::Tensor(ET, {4, 3}, std::vector{12, 2, 10, 9, 8, 4, 6, 1, 5, 3, 11, 7}), + reference_tests::Tensor(ET2, {}, std::vector{2}), + 0, + opset1::TopK::Mode::MIN, + opset1::TopK::SortType::SORT_VALUES, + reference_tests::Tensor(ET, {2, 3}, std::vector{3, 1, 4, 6, 2, 5}), + reference_tests::Tensor(ET_OUT, {2, 3}, std::vector{3, 2, 1, 2, 0, 2}), + 0, + "topk_2d_min_partial"), - TopKParams( - reference_tests::Tensor(ET, {4, 3}, std::vector{ - 12, 2, 10, 9, 8, 4, 6, 1, 5, 3, 11, 7 - }), - reference_tests::Tensor(ET2, {}, std::vector{2}), - 0, - opset1::TopK::Mode::MIN, - opset1::TopK::SortType::SORT_VALUES, - reference_tests::Tensor(ET, {2, 3}, std::vector{ - 3, 1, 4, 6, 2, 5 - }), - reference_tests::Tensor(ET_OUT, {2, 3}, std::vector{ - 3, 2, 1, 2, 0, 2 - }), - 1, - "topk_2d_min_partial"), + TopKParams(reference_tests::Tensor(ET, {4, 3}, std::vector{12, 2, 10, 9, 8, 4, 6, 1, 5, 3, 11, 7}), + reference_tests::Tensor(ET2, {}, std::vector{2}), + 0, + opset1::TopK::Mode::MIN, + opset1::TopK::SortType::SORT_VALUES, + reference_tests::Tensor(ET, {2, 3}, std::vector{3, 1, 4, 6, 2, 5}), + reference_tests::Tensor(ET_OUT, {2, 3}, std::vector{3, 2, 1, 2, 0, 2}), + 1, + "topk_2d_min_partial"), - TopKParams( - reference_tests::Tensor(ET, {4, 3}, std::vector{ - 12, 2, 10, 9, 8, 4, 6, 1, 5, 3, 11, 7 - }), - reference_tests::Tensor(ET2, {}, std::vector{1}), - 0, - opset1::TopK::Mode::MIN, - opset1::TopK::SortType::NONE, - reference_tests::Tensor(ET, {1, 3}, std::vector{ - 3, 1, 4 - }), - reference_tests::Tensor(ET_OUT, {1, 3}, std::vector{ - 3, 2, 1 - }), - 0, - "topk_2d_min_one"), + TopKParams(reference_tests::Tensor(ET, {4, 3}, std::vector{12, 2, 10, 9, 8, 4, 6, 1, 5, 3, 11, 7}), + reference_tests::Tensor(ET2, {}, std::vector{1}), + 0, + opset1::TopK::Mode::MIN, + opset1::TopK::SortType::NONE, + reference_tests::Tensor(ET, {1, 3}, std::vector{3, 1, 4}), + reference_tests::Tensor(ET_OUT, {1, 3}, std::vector{3, 2, 1}), + 0, + "topk_2d_min_one"), - TopKParams( - reference_tests::Tensor(ET, {4, 3}, std::vector{ - 12, 2, 10, 9, 8, 4, 6, 1, 5, 3, 11, 7 - }), - reference_tests::Tensor(ET2, {}, std::vector{1}), - 0, - opset1::TopK::Mode::MIN, - opset1::TopK::SortType::NONE, - reference_tests::Tensor(ET, {1, 3}, std::vector{ - 3, 1, 4 - }), - reference_tests::Tensor(ET_OUT, {1, 3}, std::vector{ - 3, 2, 1 - }), - 1, - "topk_2d_min_one"), + TopKParams(reference_tests::Tensor(ET, {4, 3}, std::vector{12, 2, 10, 9, 8, 4, 6, 1, 5, 3, 11, 7}), + reference_tests::Tensor(ET2, {}, std::vector{1}), + 0, + opset1::TopK::Mode::MIN, + opset1::TopK::SortType::NONE, + reference_tests::Tensor(ET, {1, 3}, std::vector{3, 1, 4}), + reference_tests::Tensor(ET_OUT, {1, 3}, std::vector{3, 2, 1}), + 1, + "topk_2d_min_one"), }; return params; } std::vector generateCombinedParams1dMaxMin() { - const std::vector> generatedParams { + const std::vector> generatedParams{ generateParams1dMaxMin(), generateParams1dMaxMin(), generateParams1dMaxMin(), @@ -1321,23 +1182,17 @@ std::vector generateCombinedParams1dMaxMin() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_TopK_With_Hardcoded_Refs, ReferenceTopKTest1dMaxMin, - testing::ValuesIn(generateCombinedParams1dMaxMin()), ReferenceTopKTest1dMaxMin::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_TopK_With_Hardcoded_Refs, + ReferenceTopKTest1dMaxMin, + testing::ValuesIn(generateCombinedParams1dMaxMin()), + ReferenceTopKTest1dMaxMin::getTestCaseName); class ReferenceTopKTestInt64 : public ReferenceTopKTest1dMaxMin { private: static std::shared_ptr CreateFunction(const TopKParams& params, size_t out_idx) { - const auto A = std::make_shared(params.A.type, - params.A.shape); - const auto k = opset1::Constant::create(params.k.type, - params.k.shape, - params.k.data.data()); - const auto B = std::make_shared(A, - k, - params.axis, - params.mode, - params.sort, - element::i64); + const auto A = std::make_shared(params.A.type, params.A.shape); + const auto k = opset1::Constant::create(params.k.type, params.k.shape, params.k.data.data()); + const auto B = std::make_shared(A, k, params.axis, params.mode, params.sort, element::i64); const auto f = std::make_shared(OutputVector{B->output(out_idx)}, ParameterVector{A}); return f; } @@ -1352,45 +1207,31 @@ std::vector generateParamsInt64() { using T = typename element_type_traits::value_type; using T2 = typename element_type_traits::value_type; using T_OUT = typename element_type_traits::value_type; - std::vector params { - TopKParams( - reference_tests::Tensor(ET, {2, 3, 2}, std::vector{ - 9, 2, 10, 12, 8, 4, 6, 1, 5, 3, 11, 7 - }), - reference_tests::Tensor(ET2, {}, std::vector{3}), - 1, - opset1::TopK::Mode::MAX, - opset1::TopK::SortType::SORT_VALUES, - reference_tests::Tensor(ET, {2, 3, 2}, std::vector{ - 10, 12, 9, 4, 8, 2, 11, 7, 6, 3, 5, 1 - }), - reference_tests::Tensor(ET_OUT, {2, 3, 2}, std::vector{ - 1, 1, 0, 2, 2, 0, 2, 2, 0, 1, 1, 0 - }), - 0, - "topk_int64"), - TopKParams( - reference_tests::Tensor(ET, {2, 3, 2}, std::vector{ - 9, 2, 10, 12, 8, 4, 6, 1, 5, 3, 11, 7 - }), - reference_tests::Tensor(ET2, {}, std::vector{3}), - 1, - opset1::TopK::Mode::MAX, - opset1::TopK::SortType::SORT_VALUES, - reference_tests::Tensor(ET, {2, 3, 2}, std::vector{ - 10, 12, 9, 4, 8, 2, 11, 7, 6, 3, 5, 1 - }), - reference_tests::Tensor(ET_OUT, {2, 3, 2}, std::vector{ - 1, 1, 0, 2, 2, 0, 2, 2, 0, 1, 1, 0 - }), - 1, - "topk_int64"), + std::vector params{ + TopKParams(reference_tests::Tensor(ET, {2, 3, 2}, std::vector{9, 2, 10, 12, 8, 4, 6, 1, 5, 3, 11, 7}), + reference_tests::Tensor(ET2, {}, std::vector{3}), + 1, + opset1::TopK::Mode::MAX, + opset1::TopK::SortType::SORT_VALUES, + reference_tests::Tensor(ET, {2, 3, 2}, std::vector{10, 12, 9, 4, 8, 2, 11, 7, 6, 3, 5, 1}), + reference_tests::Tensor(ET_OUT, {2, 3, 2}, std::vector{1, 1, 0, 2, 2, 0, 2, 2, 0, 1, 1, 0}), + 0, + "topk_int64"), + TopKParams(reference_tests::Tensor(ET, {2, 3, 2}, std::vector{9, 2, 10, 12, 8, 4, 6, 1, 5, 3, 11, 7}), + reference_tests::Tensor(ET2, {}, std::vector{3}), + 1, + opset1::TopK::Mode::MAX, + opset1::TopK::SortType::SORT_VALUES, + reference_tests::Tensor(ET, {2, 3, 2}, std::vector{10, 12, 9, 4, 8, 2, 11, 7, 6, 3, 5, 1}), + reference_tests::Tensor(ET_OUT, {2, 3, 2}, std::vector{1, 1, 0, 2, 2, 0, 2, 2, 0, 1, 1, 0}), + 1, + "topk_int64"), }; return params; } std::vector generateCombinedParamsInt64() { - const std::vector> generatedParams { + const std::vector> generatedParams{ generateParamsInt64(), }; std::vector combinedParams; @@ -1401,8 +1242,10 @@ std::vector generateCombinedParamsInt64() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_TopK_With_Hardcoded_Refs, ReferenceTopKTestInt64, - testing::ValuesIn(generateCombinedParamsInt64()), ReferenceTopKTest1dMaxMin::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_TopK_With_Hardcoded_Refs, + ReferenceTopKTestInt64, + testing::ValuesIn(generateCombinedParamsInt64()), + ReferenceTopKTest1dMaxMin::getTestCaseName); class ReferenceTopKTestSingleOutput : public ReferenceTopKTest { public: @@ -1415,11 +1258,8 @@ public: private: static std::shared_ptr CreateFunction(const TopKParams& params) { - const auto A = std::make_shared(params.A.type, - params.A.shape); - const auto k = opset1::Constant::create(params.k.type, - params.k.shape, - params.k.data.data()); + const auto A = std::make_shared(params.A.type, params.A.shape); + const auto k = opset1::Constant::create(params.k.type, params.k.shape, params.k.data.data()); const auto B = std::make_shared(A, k, params.axis, params.mode, params.sort); const auto f = std::make_shared(OutputVector{B->output(1)}, ParameterVector{A}); return f; @@ -1435,23 +1275,22 @@ std::vector generateParamsSingleOutput() { using T = typename element_type_traits::value_type; using T2 = typename element_type_traits::value_type; using T_OUT = typename element_type_traits::value_type; - std::vector params { - TopKParams( - reference_tests::Tensor(ET, {2, 3, 2}, std::vector{12, 2, 10, 9, 8, 4, 6, 1, 5, 3, 11, 7}), - reference_tests::Tensor(ET2, {}, std::vector{2}), - 1, - opset1::TopK::Mode::MIN, - opset1::TopK::SortType::SORT_VALUES, - reference_tests::Tensor(ET, {2, 2, 2}, std::vector{}), - reference_tests::Tensor(ET_OUT, {2, 2, 2}, std::vector{2, 0, 1, 2, 1, 0, 0, 1}), - 0, - "topk_3d_single_output"), + std::vector params{ + TopKParams(reference_tests::Tensor(ET, {2, 3, 2}, std::vector{12, 2, 10, 9, 8, 4, 6, 1, 5, 3, 11, 7}), + reference_tests::Tensor(ET2, {}, std::vector{2}), + 1, + opset1::TopK::Mode::MIN, + opset1::TopK::SortType::SORT_VALUES, + reference_tests::Tensor(ET, {2, 2, 2}, std::vector{}), + reference_tests::Tensor(ET_OUT, {2, 2, 2}, std::vector{2, 0, 1, 2, 1, 0, 0, 1}), + 0, + "topk_3d_single_output"), }; return params; } std::vector generateCombinedParamsSingleOutput() { - const std::vector> generatedParams { + const std::vector> generatedParams{ generateParamsSingleOutput(), generateParamsSingleOutput(), generateParamsSingleOutput(), @@ -1473,8 +1312,10 @@ std::vector generateCombinedParamsSingleOutput() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_TopK_With_Hardcoded_Refs, ReferenceTopKTestSingleOutput, - testing::ValuesIn(generateCombinedParamsSingleOutput()), ReferenceTopKTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_TopK_With_Hardcoded_Refs, + ReferenceTopKTestSingleOutput, + testing::ValuesIn(generateCombinedParamsSingleOutput()), + ReferenceTopKTest::getTestCaseName); TEST(ReferenceTopKTestInvalid, topk_v1_invalid_strings) { const auto data = std::make_shared(element::f32, Shape{1, 2, 3}); @@ -1493,14 +1334,10 @@ TEST(ReferenceTopKTestInvalid, topk_v1_invalid_k) { EXPECT_THROW(opset1::TopK(data, k_negative, 0, "max", "index"), ov::NodeValidationFailure); } - - - class ReferenceTopKTestResnet50V3 : public ReferenceTopKTestResnet50 { private: static std::shared_ptr CreateFunction(const TopKParamsResnet50& params) { - const auto A = std::make_shared(params.A.type, - params.A.shape); + const auto A = std::make_shared(params.A.type, params.A.shape); const auto B = std::make_shared(A, opset1::Constant::create(element::i64, {}, {5}), 1, @@ -1516,7 +1353,8 @@ private: const auto out5_index = B->output(1); const auto out1_value = C->output(0); const auto out1_index = C->output(1); - const auto f = std::make_shared(OutputVector{out5_value, out5_index, out1_value, out1_index}, ParameterVector{A}); + const auto f = + std::make_shared(OutputVector{out5_value, out5_index, out1_value, out1_index}, ParameterVector{A}); return f; } }; @@ -1525,17 +1363,16 @@ TEST_P(ReferenceTopKTestResnet50V3, CompareWithRefs) { Exec(); } -INSTANTIATE_TEST_SUITE_P(smoke_TopK_With_Hardcoded_Refs, ReferenceTopKTestResnet50V3, - testing::ValuesIn(generateCombinedParamsResnet50()), ReferenceTopKTestResnet50V3::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_TopK_With_Hardcoded_Refs, + ReferenceTopKTestResnet50V3, + testing::ValuesIn(generateCombinedParamsResnet50()), + ReferenceTopKTestResnet50V3::getTestCaseName); class ReferenceTopKTestMaxMinSortV3 : public ReferenceTopKTestMaxMinSort { private: static std::shared_ptr CreateFunction(const TopKParams& params) { - const auto A = std::make_shared(params.A.type, - params.A.shape); - const auto k = opset1::Constant::create(params.k.type, - params.k.shape, - params.k.data.data()); + const auto A = std::make_shared(params.A.type, params.A.shape); + const auto k = opset1::Constant::create(params.k.type, params.k.shape, params.k.data.data()); const auto B = std::make_shared(A, k, params.axis, params.mode, params.sort); const auto f = std::make_shared(B->outputs(), ParameterVector{A}); return f; @@ -1546,17 +1383,16 @@ TEST_P(ReferenceTopKTestMaxMinSortV3, CompareWithRefs) { Exec(); } -INSTANTIATE_TEST_SUITE_P(smoke_TopK_With_Hardcoded_Refs, ReferenceTopKTestMaxMinSortV3, - testing::ValuesIn(generateCombinedParamsMaxMinSort()), ReferenceTopKTestMaxMinSortV3::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_TopK_With_Hardcoded_Refs, + ReferenceTopKTestMaxMinSortV3, + testing::ValuesIn(generateCombinedParamsMaxMinSort()), + ReferenceTopKTestMaxMinSortV3::getTestCaseName); class ReferenceTopKTestBackendV3 : public ReferenceTopKTestBackend { private: static std::shared_ptr CreateFunction(const TopKParams& params) { - const auto A = std::make_shared(params.A.type, - params.A.shape); - const auto k = opset1::Constant::create(params.k.type, - params.k.shape, - params.k.data.data()); + const auto A = std::make_shared(params.A.type, params.A.shape); + const auto k = opset1::Constant::create(params.k.type, params.k.shape, params.k.data.data()); const auto B = std::make_shared(A, k, params.axis, params.mode, params.sort); const auto f = std::make_shared(B->outputs(), ParameterVector{A}); return f; @@ -1567,17 +1403,16 @@ TEST_P(ReferenceTopKTestBackendV3, CompareWithRefs) { Exec(); } -INSTANTIATE_TEST_SUITE_P(smoke_TopK_With_Hardcoded_Refs, ReferenceTopKTestBackendV3, - testing::ValuesIn(generateCombinedParamsBackend()), ReferenceTopKTestBackendV3::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_TopK_With_Hardcoded_Refs, + ReferenceTopKTestBackendV3, + testing::ValuesIn(generateCombinedParamsBackend()), + ReferenceTopKTestBackendV3::getTestCaseName); class ReferenceTopKTest1dMaxMinV3 : public ReferenceTopKTest1dMaxMin { private: static std::shared_ptr CreateFunction(const TopKParams& params, size_t out_idx) { - const auto A = std::make_shared(params.A.type, - params.A.shape); - const auto k = opset1::Constant::create(params.k.type, - params.k.shape, - params.k.data.data()); + const auto A = std::make_shared(params.A.type, params.A.shape); + const auto k = opset1::Constant::create(params.k.type, params.k.shape, params.k.data.data()); const auto B = std::make_shared(A, k, params.axis, params.mode, params.sort); const auto f = std::make_shared(OutputVector{B->output(out_idx)}, ParameterVector{A}); return f; @@ -1588,23 +1423,17 @@ TEST_P(ReferenceTopKTest1dMaxMinV3, CompareWithRefs) { Exec(); } -INSTANTIATE_TEST_SUITE_P(smoke_TopK_With_Hardcoded_Refs, ReferenceTopKTest1dMaxMinV3, - testing::ValuesIn(generateCombinedParams1dMaxMin()), ReferenceTopKTest1dMaxMinV3::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_TopK_With_Hardcoded_Refs, + ReferenceTopKTest1dMaxMinV3, + testing::ValuesIn(generateCombinedParams1dMaxMin()), + ReferenceTopKTest1dMaxMinV3::getTestCaseName); class ReferenceTopKTestInt64V3 : public ReferenceTopKTestInt64 { private: static std::shared_ptr CreateFunction(const TopKParams& params, size_t out_idx) { - const auto A = std::make_shared(params.A.type, - params.A.shape); - const auto k = opset1::Constant::create(params.k.type, - params.k.shape, - params.k.data.data()); - const auto B = std::make_shared(A, - k, - params.axis, - params.mode, - params.sort, - element::i64); + const auto A = std::make_shared(params.A.type, params.A.shape); + const auto k = opset1::Constant::create(params.k.type, params.k.shape, params.k.data.data()); + const auto B = std::make_shared(A, k, params.axis, params.mode, params.sort, element::i64); const auto f = std::make_shared(OutputVector{B->output(out_idx)}, ParameterVector{A}); return f; } @@ -1614,17 +1443,16 @@ TEST_P(ReferenceTopKTestInt64V3, CompareWithRefs) { Exec(); } -INSTANTIATE_TEST_SUITE_P(smoke_TopK_With_Hardcoded_Refs, ReferenceTopKTestInt64V3, - testing::ValuesIn(generateCombinedParamsInt64()), ReferenceTopKTestInt64V3::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_TopK_With_Hardcoded_Refs, + ReferenceTopKTestInt64V3, + testing::ValuesIn(generateCombinedParamsInt64()), + ReferenceTopKTestInt64V3::getTestCaseName); class ReferenceTopKTestSingleOutputV3 : public ReferenceTopKTestSingleOutput { private: static std::shared_ptr CreateFunction(const TopKParams& params) { - const auto A = std::make_shared(params.A.type, - params.A.shape); - const auto k = opset1::Constant::create(params.k.type, - params.k.shape, - params.k.data.data()); + const auto A = std::make_shared(params.A.type, params.A.shape); + const auto k = opset1::Constant::create(params.k.type, params.k.shape, params.k.data.data()); const auto B = std::make_shared(A, k, params.axis, params.mode, params.sort); const auto f = std::make_shared(OutputVector{B->output(1)}, ParameterVector{A}); return f; @@ -1635,8 +1463,10 @@ TEST_P(ReferenceTopKTestSingleOutputV3, CompareWithRefs) { Exec(); } -INSTANTIATE_TEST_SUITE_P(smoke_TopK_With_Hardcoded_Refs, ReferenceTopKTestSingleOutputV3, - testing::ValuesIn(generateCombinedParamsSingleOutput()), ReferenceTopKTestSingleOutputV3::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_TopK_With_Hardcoded_Refs, + ReferenceTopKTestSingleOutputV3, + testing::ValuesIn(generateCombinedParamsSingleOutput()), + ReferenceTopKTestSingleOutputV3::getTestCaseName); TEST(ReferenceTopKTestInvalidV3, topk_v3_invalid_strings) { const auto data = std::make_shared(element::f32, Shape{1, 2, 3}); @@ -1753,4 +1583,4 @@ INSTANTIATE_TEST_SUITE_P(smoke_TopK_With_Hardcoded_Refs, testing::ValuesIn(generateCombinedParamsForStableTest()), ReferenceTopKv11StableTest::getTestCaseName); -} // namespace +} // namespace diff --git a/src/plugins/template/tests/functional/op_reference/transpose.cpp b/src/plugins/template/tests/functional/op_reference/transpose.cpp index 44d45f2710c..0ebb36e781b 100644 --- a/src/plugins/template/tests/functional/op_reference/transpose.cpp +++ b/src/plugins/template/tests/functional/op_reference/transpose.cpp @@ -2,13 +2,14 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/transpose.hpp" + #include -#include "openvino/op/transpose.hpp" -#include "openvino/op/constant.hpp" -#include "openvino/op/convert.hpp" #include "base_reference_test.hpp" #include "common_test_utils/type_prop.hpp" +#include "openvino/op/constant.hpp" +#include "openvino/op/convert.hpp" using namespace reference_tests; using namespace ov; @@ -33,7 +34,7 @@ struct TransposeParams { reference_tests::Tensor axisTensor; reference_tests::Tensor expectedTensor; std::string testcaseName; - std::pair expectedException; + std::pair expectedException; }; class ReferenceTransposeLayerTest : public testing::TestWithParam, public CommonReferenceTest { @@ -68,17 +69,19 @@ private: std::shared_ptr function; if (params.dynamicDataShape.is_static()) { const auto data = std::make_shared(params.dataTensor.type, params.dataTensor.shape); - const auto axis = std::make_shared(params.axisTensor.type, params.axisTensor.shape, + const auto axis = std::make_shared(params.axisTensor.type, + params.axisTensor.shape, params.axisTensor.data.data()); const auto axisI64 = std::make_shared(axis, element::i64); const auto transpose = std::make_shared(data, axisI64); - function = std::make_shared(NodeVector {transpose}, ParameterVector {data}); + function = std::make_shared(NodeVector{transpose}, ParameterVector{data}); } else { const auto data = std::make_shared(params.dataTensor.type, PartialShape::dynamic()); - const auto axis = std::make_shared(params.axisTensor.type, PartialShape{Dimension::dynamic()}); + const auto axis = + std::make_shared(params.axisTensor.type, PartialShape{Dimension::dynamic()}); const auto axisI64 = std::make_shared(axis, element::i64); const auto transpose = std::make_shared(data, axisI64); - function = std::make_shared(NodeVector {transpose}, ParameterVector {data, axis}); + function = std::make_shared(NodeVector{transpose}, ParameterVector{data, axis}); } return function; } @@ -105,7 +108,7 @@ TEST_P(ReferenceTransposeLayerTest, CompareWithRefs) { template std::vector generateTransposeParams() { using T = typename element_type_traits::value_type; - std::vector transposeParams { + std::vector transposeParams{ // transpose_basic TransposeParams(PartialShape::dynamic(), reference_tests::Tensor(IN_ET, {2, 3}, std::vector{1, 2, 3, 4, 5, 6}), @@ -117,51 +120,62 @@ std::vector generateTransposeParams() { reference_tests::Tensor(element::i64, {2}, std::vector{1, 0}), reference_tests::Tensor(IN_ET, {3, 2}, std::vector{1, 4, 2, 5, 3, 6}), "transpose_basic_2"), - TransposeParams(PartialShape::dynamic(), - reference_tests::Tensor(IN_ET, {2, 2, 3}, std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}), - reference_tests::Tensor(element::i64, {3}, std::vector{2, 1, 0}), - reference_tests::Tensor(IN_ET, {3, 2, 2}, std::vector{1, 7, 4, 10, 2, 8, 5, 11, 3, 9, 6, 12}), - "transpose_basic_3"), + TransposeParams( + PartialShape::dynamic(), + reference_tests::Tensor(IN_ET, {2, 2, 3}, std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}), + reference_tests::Tensor(element::i64, {3}, std::vector{2, 1, 0}), + reference_tests::Tensor(IN_ET, {3, 2, 2}, std::vector{1, 7, 4, 10, 2, 8, 5, 11, 3, 9, 6, 12}), + "transpose_basic_3"), // transpose_axes_constant - TransposeParams({}, - reference_tests::Tensor(IN_ET, {2, 1, 3, 4}, std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, - 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24}), - reference_tests::Tensor(element::i64, {4}, std::vector{2, 3, 0, 1}), - reference_tests::Tensor(IN_ET, {3, 4, 2, 1}, std::vector{1, 13, 2, 14, 3, 15, 4, 16, 5, 17, 6, 18, - 7, 19, 8, 20, 9, 21, 10, 22, 11, 23, 12, 24}), - "transpose_axes_constant"), + TransposeParams( + {}, + reference_tests::Tensor(IN_ET, {2, 1, 3, 4}, std::vector{1, 2, 3, 4, 5, 6, 7, 8, + 9, 10, 11, 12, 13, 14, 15, 16, + 17, 18, 19, 20, 21, 22, 23, 24}), + reference_tests::Tensor(element::i64, {4}, std::vector{2, 3, 0, 1}), + reference_tests::Tensor(IN_ET, {3, 4, 2, 1}, std::vector{1, 13, 2, 14, 3, 15, 4, 16, 5, 17, 6, 18, + 7, 19, 8, 20, 9, 21, 10, 22, 11, 23, 12, 24}), + "transpose_axes_constant"), // transpose_axes_empty_constant - TransposeParams({}, - reference_tests::Tensor(IN_ET, {2, 1, 3, 4}, std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, - 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24}), - reference_tests::Tensor(element::i64, {0}, std::vector{}), - reference_tests::Tensor(IN_ET, {4, 3, 1, 2}, std::vector{1, 13, 5, 17, 9, 21, 2, 14, 6, 18, 10, 22, - 3, 15, 7, 19, 11, 23, 4, 16, 8, 20, 12, 24}), - "transpose_axes_empty_constant"), + TransposeParams( + {}, + reference_tests::Tensor(IN_ET, {2, 1, 3, 4}, std::vector{1, 2, 3, 4, 5, 6, 7, 8, + 9, 10, 11, 12, 13, 14, 15, 16, + 17, 18, 19, 20, 21, 22, 23, 24}), + reference_tests::Tensor(element::i64, {0}, std::vector{}), + reference_tests::Tensor(IN_ET, {4, 3, 1, 2}, std::vector{1, 13, 5, 17, 9, 21, 2, 14, 6, 18, 10, 22, + 3, 15, 7, 19, 11, 23, 4, 16, 8, 20, 12, 24}), + "transpose_axes_empty_constant"), // transpose_axes_parameter_static_shapes - TransposeParams({}, - reference_tests::Tensor(IN_ET, {2, 1, 3, 4}, std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, - 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24}), - reference_tests::Tensor(element::i64, {4}, std::vector{2, 3, 0, 1}), - reference_tests::Tensor(IN_ET, {4, 3, 1, 2}, std::vector{1, 13, 2, 14, 3, 15, 4, 16, 5, 17, 6, 18, - 7, 19, 8, 20, 9, 21, 10, 22, 11, 23, 12, 24}), - "transpose_axes_parameter_static_shapes"), + TransposeParams( + {}, + reference_tests::Tensor(IN_ET, {2, 1, 3, 4}, std::vector{1, 2, 3, 4, 5, 6, 7, 8, + 9, 10, 11, 12, 13, 14, 15, 16, + 17, 18, 19, 20, 21, 22, 23, 24}), + reference_tests::Tensor(element::i64, {4}, std::vector{2, 3, 0, 1}), + reference_tests::Tensor(IN_ET, {4, 3, 1, 2}, std::vector{1, 13, 2, 14, 3, 15, 4, 16, 5, 17, 6, 18, + 7, 19, 8, 20, 9, 21, 10, 22, 11, 23, 12, 24}), + "transpose_axes_parameter_static_shapes"), // transpose_axes_parameter_dynamic_shapes - TransposeParams(PartialShape::dynamic(), - reference_tests::Tensor(IN_ET, {2, 1, 3, 4}, std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, - 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24}), - reference_tests::Tensor(element::i64, {4}, std::vector{2, 3, 0, 1}), - reference_tests::Tensor(IN_ET, {4, 3, 1, 2}, std::vector{1, 13, 2, 14, 3, 15, 4, 16, 5, 17, 6, 18, - 7, 19, 8, 20, 9, 21, 10, 22, 11, 23, 12, 24}), - "transpose_axes_parameter_dynamic_shapes"), + TransposeParams( + PartialShape::dynamic(), + reference_tests::Tensor(IN_ET, {2, 1, 3, 4}, std::vector{1, 2, 3, 4, 5, 6, 7, 8, + 9, 10, 11, 12, 13, 14, 15, 16, + 17, 18, 19, 20, 21, 22, 23, 24}), + reference_tests::Tensor(element::i64, {4}, std::vector{2, 3, 0, 1}), + reference_tests::Tensor(IN_ET, {4, 3, 1, 2}, std::vector{1, 13, 2, 14, 3, 15, 4, 16, 5, 17, 6, 18, + 7, 19, 8, 20, 9, 21, 10, 22, 11, 23, 12, 24}), + "transpose_axes_parameter_dynamic_shapes"), // transpose_int_data_axes_constant - TransposeParams({}, - reference_tests::Tensor(IN_ET, {2, 1, 3, 4}, std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, - 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24}), - reference_tests::Tensor(element::i64, {4}, std::vector{2, 3, 0, 1}), - reference_tests::Tensor(IN_ET, {3, 4, 2, 1}, std::vector{1, 13, 2, 14, 3, 15, 4, 16, 5, 17, 6, 18, - 7, 19, 8, 20, 9, 21, 10, 22, 11, 23, 12, 24}), - "transpose_int_data_axes_constant"), + TransposeParams( + {}, + reference_tests::Tensor(IN_ET, {2, 1, 3, 4}, std::vector{1, 2, 3, 4, 5, 6, 7, 8, + 9, 10, 11, 12, 13, 14, 15, 16, + 17, 18, 19, 20, 21, 22, 23, 24}), + reference_tests::Tensor(element::i64, {4}, std::vector{2, 3, 0, 1}), + reference_tests::Tensor(IN_ET, {3, 4, 2, 1}, std::vector{1, 13, 2, 14, 3, 15, 4, 16, 5, 17, 6, 18, + 7, 19, 8, 20, 9, 21, 10, 22, 11, 23, 12, 24}), + "transpose_int_data_axes_constant"), }; return transposeParams; } @@ -192,7 +206,7 @@ std::vector generateThrowingTransposeParams() { } std::vector generateTransposeCombinedParams() { - const std::vector> transposeTypeParams { + const std::vector> transposeTypeParams{ generateTransposeParams(), generateTransposeParams(), generateTransposeParams(), @@ -214,6 +228,8 @@ std::vector generateTransposeCombinedParams() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_Transpose_With_Hardcoded_Refs, ReferenceTransposeLayerTest, - testing::ValuesIn(generateTransposeCombinedParams()), ReferenceTransposeLayerTest::getTestCaseName); -} // namespace +INSTANTIATE_TEST_SUITE_P(smoke_Transpose_With_Hardcoded_Refs, + ReferenceTransposeLayerTest, + testing::ValuesIn(generateTransposeCombinedParams()), + ReferenceTransposeLayerTest::getTestCaseName); +} // namespace diff --git a/src/plugins/template/tests/functional/op_reference/unsqueeze.cpp b/src/plugins/template/tests/functional/op_reference/unsqueeze.cpp index 0fedf476e99..f486035de10 100644 --- a/src/plugins/template/tests/functional/op_reference/unsqueeze.cpp +++ b/src/plugins/template/tests/functional/op_reference/unsqueeze.cpp @@ -2,11 +2,12 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/unsqueeze.hpp" + #include -#include "openvino/op/unsqueeze.hpp" -#include "openvino/op/constant.hpp" #include "base_reference_test.hpp" +#include "openvino/op/constant.hpp" using namespace reference_tests; using namespace ov; @@ -16,14 +17,14 @@ namespace { struct UnsqueezeParams { template UnsqueezeParams(const Shape& input_shape, - const Shape& expected_shape, - const element::Type& input_type, - const element::Type& expected_type, - const std::vector& input_value, - const std::vector& expected_value, - const Shape& axes_shape, - const element::Type& axes_type, - const std::vector& axes_value) + const Shape& expected_shape, + const element::Type& input_type, + const element::Type& expected_type, + const std::vector& input_value, + const std::vector& expected_value, + const Shape& axes_shape, + const element::Type& axes_type, + const std::vector& axes_value) : m_input_shape(input_shape), m_expected_shape(expected_shape), m_input_type(input_type), @@ -74,10 +75,10 @@ public: private: static std::shared_ptr CreateFunction(const element::Type_t& input_type, - const Shape& input_shape, - const element::Type& axes_type, - const Shape& axes_shape, - const ov::Tensor& axes_value) { + const Shape& input_shape, + const element::Type& axes_type, + const Shape& axes_shape, + const ov::Tensor& axes_value) { const auto in = std::make_shared(input_type, input_shape); const auto axes = std::make_shared(axes_type, axes_shape, axes_value.data()); const auto unsqueeze = std::make_shared(in, axes); @@ -94,17 +95,15 @@ std::vector generateParamsForUnsqueeze() { using T1 = typename element_type_traits::value_type; using T2 = typename element_type_traits::value_type; - std::vector params{ - UnsqueezeParams(Shape{4, 2}, - Shape{4, 1, 1, 2}, - IO_T, - IO_T, - std::vector{1, 2, 3, 4, 5, 6, 7, 8}, - std::vector{1, 2, 3, 4, 5, 6, 7, 8}, - Shape {2}, - Axes_T, - std::vector{1, 2}) - }; + std::vector params{UnsqueezeParams(Shape{4, 2}, + Shape{4, 1, 1, 2}, + IO_T, + IO_T, + std::vector{1, 2, 3, 4, 5, 6, 7, 8}, + std::vector{1, 2, 3, 4, 5, 6, 7, 8}, + Shape{2}, + Axes_T, + std::vector{1, 2})}; return params; } @@ -114,17 +113,15 @@ std::vector generateParamsForUnsqueezeNegative() { using T1 = typename element_type_traits::value_type; using T2 = typename element_type_traits::value_type; - std::vector params{ - UnsqueezeParams(Shape{4, 2}, - Shape{4, 1, 2, 1}, - IO_T, - IO_T, - std::vector{1, 2, 3, 4, 5, 6, 7, 8}, - std::vector{1, 2, 3, 4, 5, 6, 7, 8}, - Shape {2}, - Axes_T, - std::vector{1, -1}) - }; + std::vector params{UnsqueezeParams(Shape{4, 2}, + Shape{4, 1, 2, 1}, + IO_T, + IO_T, + std::vector{1, 2, 3, 4, 5, 6, 7, 8}, + std::vector{1, 2, 3, 4, 5, 6, 7, 8}, + Shape{2}, + Axes_T, + std::vector{1, -1})}; return params; } @@ -162,10 +159,9 @@ std::vector generateCombinedParamsForUnsqueeze() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P( - smoke_Unsqueeze_With_Hardcoded_Refs, - ReferenceUnsqueezeLayerTest, - ::testing::ValuesIn(generateCombinedParamsForUnsqueeze()), - ReferenceUnsqueezeLayerTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_Unsqueeze_With_Hardcoded_Refs, + ReferenceUnsqueezeLayerTest, + ::testing::ValuesIn(generateCombinedParamsForUnsqueeze()), + ReferenceUnsqueezeLayerTest::getTestCaseName); } // namespace diff --git a/src/plugins/template/tests/functional/op_reference/variadic_split.cpp b/src/plugins/template/tests/functional/op_reference/variadic_split.cpp index 68eb1267f38..1f32da3440b 100644 --- a/src/plugins/template/tests/functional/op_reference/variadic_split.cpp +++ b/src/plugins/template/tests/functional/op_reference/variadic_split.cpp @@ -2,23 +2,30 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "openvino/op/variadic_split.hpp" + #include -#include "openvino/op/variadic_split.hpp" -#include "openvino/op/constant.hpp" #include "base_reference_test.hpp" +#include "openvino/op/constant.hpp" using namespace reference_tests; using namespace ov; namespace { struct VariadicSplitParams { - VariadicSplitParams(const ov::PartialShape& dynamicDataShape, const reference_tests::Tensor& dataTensor, - const reference_tests::Tensor& axisTensor, const reference_tests::Tensor& splitLengthTensor, - const std::vector& expectedTensors, const std::string& testcaseName = "") : - dynamicDataShape(dynamicDataShape), dataTensor(dataTensor), - axisTensor(axisTensor), splitLengthTensor(splitLengthTensor), - expectedTensors(expectedTensors), testcaseName(testcaseName) {} + VariadicSplitParams(const ov::PartialShape& dynamicDataShape, + const reference_tests::Tensor& dataTensor, + const reference_tests::Tensor& axisTensor, + const reference_tests::Tensor& splitLengthTensor, + const std::vector& expectedTensors, + const std::string& testcaseName = "") + : dynamicDataShape(dynamicDataShape), + dataTensor(dataTensor), + axisTensor(axisTensor), + splitLengthTensor(splitLengthTensor), + expectedTensors(expectedTensors), + testcaseName(testcaseName) {} ov::PartialShape dynamicDataShape; reference_tests::Tensor dataTensor; @@ -80,13 +87,13 @@ private: static std::shared_ptr CreateDynamicFunction(const VariadicSplitParams& params) { const auto data = std::make_shared(params.dataTensor.type, params.dynamicDataShape); const auto axis = std::make_shared(params.axisTensor.type, params.axisTensor.shape); - const auto splitLengths = std::make_shared(params.splitLengthTensor.type, params.splitLengthTensor.shape); + const auto splitLengths = + std::make_shared(params.splitLengthTensor.type, params.splitLengthTensor.shape); const auto split = std::make_shared(data, axis, splitLengths); return std::make_shared(split->outputs(), ParameterVector{data, axis, splitLengths}); } }; - TEST_P(ReferenceVariadicSplitTest, CompareWithRefs) { Exec(); } @@ -94,185 +101,213 @@ TEST_P(ReferenceVariadicSplitTest, CompareWithRefs) { template std::vector generateVariadicSplitParams() { using T = typename element_type_traits::value_type; - std::vector variadicSplitParams { + std::vector variadicSplitParams{ // variadic_split_1d_static - VariadicSplitParams({10}, - reference_tests::Tensor(IN_ET, {10}, std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}), - reference_tests::Tensor(element::i32, {1}, std::vector{0}), - reference_tests::Tensor(element::i32, {3}, std::vector{5, 3, 2}), - std::vector{reference_tests::Tensor(IN_ET, {5}, std::vector{1, 2, 3, 4, 5}), - reference_tests::Tensor(IN_ET, {3}, std::vector{6, 7, 8}), - reference_tests::Tensor(IN_ET, {2}, std::vector{9, 10})}, - "variadic_split_1d_static"), + VariadicSplitParams( + {10}, + reference_tests::Tensor(IN_ET, {10}, std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}), + reference_tests::Tensor(element::i32, {1}, std::vector{0}), + reference_tests::Tensor(element::i32, {3}, std::vector{5, 3, 2}), + std::vector{reference_tests::Tensor(IN_ET, {5}, std::vector{1, 2, 3, 4, 5}), + reference_tests::Tensor(IN_ET, {3}, std::vector{6, 7, 8}), + reference_tests::Tensor(IN_ET, {2}, std::vector{9, 10})}, + "variadic_split_1d_static"), // variadic_split_1d_dynamic - VariadicSplitParams(PartialShape::dynamic(), - reference_tests::Tensor(IN_ET, {10}, std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}), - reference_tests::Tensor(element::i32, {1}, std::vector{0}), - reference_tests::Tensor(element::i32, {3}, std::vector{5, 3, 2}), - std::vector{reference_tests::Tensor(IN_ET, {5}, std::vector{1, 2, 3, 4, 5}), - reference_tests::Tensor(IN_ET, {3}, std::vector{6, 7, 8}), - reference_tests::Tensor(IN_ET, {2}, std::vector{9, 10})}, - "variadic_split_1d_dynamic"), + VariadicSplitParams( + PartialShape::dynamic(), + reference_tests::Tensor(IN_ET, {10}, std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}), + reference_tests::Tensor(element::i32, {1}, std::vector{0}), + reference_tests::Tensor(element::i32, {3}, std::vector{5, 3, 2}), + std::vector{reference_tests::Tensor(IN_ET, {5}, std::vector{1, 2, 3, 4, 5}), + reference_tests::Tensor(IN_ET, {3}, std::vector{6, 7, 8}), + reference_tests::Tensor(IN_ET, {2}, std::vector{9, 10})}, + "variadic_split_1d_dynamic"), // variadic_split_2d_axis_0_static - VariadicSplitParams({6, 2}, - reference_tests::Tensor(IN_ET, {6, 2}, std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}), - reference_tests::Tensor(element::i32, {}, std::vector{0}), - reference_tests::Tensor(element::i32, {2}, std::vector{4, 2}), - std::vector{reference_tests::Tensor(IN_ET, {4, 2}, std::vector{1, 2, 3, 4, 5, 6, 7, 8}), - reference_tests::Tensor(IN_ET, {2, 2}, std::vector{9, 10, 11, 12})}, - "variadic_split_2d_axis_0_static"), + VariadicSplitParams( + {6, 2}, + reference_tests::Tensor(IN_ET, {6, 2}, std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}), + reference_tests::Tensor(element::i32, {}, std::vector{0}), + reference_tests::Tensor(element::i32, {2}, std::vector{4, 2}), + std::vector{ + reference_tests::Tensor(IN_ET, {4, 2}, std::vector{1, 2, 3, 4, 5, 6, 7, 8}), + reference_tests::Tensor(IN_ET, {2, 2}, std::vector{9, 10, 11, 12})}, + "variadic_split_2d_axis_0_static"), // variadic_split_2d_axis_0_dynamic - VariadicSplitParams(PartialShape::dynamic(), - reference_tests::Tensor(IN_ET, {6, 2}, std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}), - reference_tests::Tensor(element::i32, {}, std::vector{0}), - reference_tests::Tensor(element::i32, {2}, std::vector{4, 2}), - std::vector{reference_tests::Tensor(IN_ET, {4, 2}, std::vector{1, 2, 3, 4, 5, 6, 7, 8}), - reference_tests::Tensor(IN_ET, {2, 2}, std::vector{9, 10, 11, 12})}, - "variadic_split_2d_axis_0_dynamic"), + VariadicSplitParams( + PartialShape::dynamic(), + reference_tests::Tensor(IN_ET, {6, 2}, std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}), + reference_tests::Tensor(element::i32, {}, std::vector{0}), + reference_tests::Tensor(element::i32, {2}, std::vector{4, 2}), + std::vector{ + reference_tests::Tensor(IN_ET, {4, 2}, std::vector{1, 2, 3, 4, 5, 6, 7, 8}), + reference_tests::Tensor(IN_ET, {2, 2}, std::vector{9, 10, 11, 12})}, + "variadic_split_2d_axis_0_dynamic"), // variadic_split_2d_axis_1_static - VariadicSplitParams({4, 3}, - reference_tests::Tensor(IN_ET, {4, 3}, std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}), - reference_tests::Tensor(element::i32, {}, std::vector{1}), - reference_tests::Tensor(element::i32, {2}, std::vector{1, 2}), - std::vector{reference_tests::Tensor(IN_ET, {4, 1}, std::vector{1, 4, 7, 10}), - reference_tests::Tensor(IN_ET, {4, 2}, std::vector{2, 3, 5, 6, 8, 9, 11, 12})}, - "variadic_split_2d_axis_1_static"), + VariadicSplitParams( + {4, 3}, + reference_tests::Tensor(IN_ET, {4, 3}, std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}), + reference_tests::Tensor(element::i32, {}, std::vector{1}), + reference_tests::Tensor(element::i32, {2}, std::vector{1, 2}), + std::vector{ + reference_tests::Tensor(IN_ET, {4, 1}, std::vector{1, 4, 7, 10}), + reference_tests::Tensor(IN_ET, {4, 2}, std::vector{2, 3, 5, 6, 8, 9, 11, 12})}, + "variadic_split_2d_axis_1_static"), // variadic_split_2d_axis_1_dynamic - VariadicSplitParams(PartialShape::dynamic(), - reference_tests::Tensor(IN_ET, {4, 3}, std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}), - reference_tests::Tensor(element::i32, {}, std::vector{1}), - reference_tests::Tensor(element::i32, {2}, std::vector{1, 2}), - std::vector{reference_tests::Tensor(IN_ET, {4, 1}, std::vector{1, 4, 7, 10}), - reference_tests::Tensor(IN_ET, {4, 2}, std::vector{2, 3, 5, 6, 8, 9, 11, 12})}, - "variadic_split_2d_axis_1_dynamic"), + VariadicSplitParams( + PartialShape::dynamic(), + reference_tests::Tensor(IN_ET, {4, 3}, std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}), + reference_tests::Tensor(element::i32, {}, std::vector{1}), + reference_tests::Tensor(element::i32, {2}, std::vector{1, 2}), + std::vector{ + reference_tests::Tensor(IN_ET, {4, 1}, std::vector{1, 4, 7, 10}), + reference_tests::Tensor(IN_ET, {4, 2}, std::vector{2, 3, 5, 6, 8, 9, 11, 12})}, + "variadic_split_2d_axis_1_dynamic"), // variadic_split_4d_axis_0_static - VariadicSplitParams({6, 2, 3, 1}, - reference_tests::Tensor(IN_ET, {6, 2, 3, 1}, std::vector{0, 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}), - reference_tests::Tensor(element::i32, {1}, std::vector{0}), - reference_tests::Tensor(element::i32, {3}, std::vector{3, 1, 2}), - std::vector{reference_tests::Tensor(IN_ET, {3, 2, 3, 1}, std::vector{0, 1, 2, 3, 4, 5, 6, 7, - 8, 9, 10, 11, 12, 13, 14, 15, - 16, 17}), - reference_tests::Tensor(IN_ET, {1, 2, 3, 1}, std::vector{18, 19, 20, 21, 22, 23}), - reference_tests::Tensor(IN_ET, {2, 2, 3, 1}, std::vector{24, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, 35})}, - "variadic_split_4d_axis_0_static"), + VariadicSplitParams( + {6, 2, 3, 1}, + reference_tests::Tensor(IN_ET, {6, 2, 3, 1}, std::vector{0, 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}), + reference_tests::Tensor(element::i32, {1}, std::vector{0}), + reference_tests::Tensor(element::i32, {3}, std::vector{3, 1, 2}), + std::vector{ + reference_tests::Tensor(IN_ET, + {3, 2, 3, 1}, + std::vector{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17}), + reference_tests::Tensor(IN_ET, {1, 2, 3, 1}, std::vector{18, 19, 20, 21, 22, 23}), + reference_tests::Tensor(IN_ET, + {2, 2, 3, 1}, + std::vector{24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35})}, + "variadic_split_4d_axis_0_static"), // variadic_split_4d_axis_0_dynamic - VariadicSplitParams(PartialShape::dynamic(), - reference_tests::Tensor(IN_ET, {6, 2, 3, 1}, std::vector{0, 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}), - reference_tests::Tensor(element::i32, {1}, std::vector{0}), - reference_tests::Tensor(element::i32, {3}, std::vector{3, 1, 2}), - std::vector{reference_tests::Tensor(IN_ET, {3, 2, 3, 1}, std::vector{0, 1, 2, 3, 4, 5, 6, 7, - 8, 9, 10, 11, 12, 13, 14, 15, - 16, 17}), - reference_tests::Tensor(IN_ET, {1, 2, 3, 1}, std::vector{18, 19, 20, 21, 22, 23}), - reference_tests::Tensor(IN_ET, {2, 2, 3, 1}, std::vector{24, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, 35})}, - "variadic_split_4d_axis_0_dynamic"), + VariadicSplitParams( + PartialShape::dynamic(), + reference_tests::Tensor(IN_ET, {6, 2, 3, 1}, std::vector{0, 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}), + reference_tests::Tensor(element::i32, {1}, std::vector{0}), + reference_tests::Tensor(element::i32, {3}, std::vector{3, 1, 2}), + std::vector{ + reference_tests::Tensor(IN_ET, + {3, 2, 3, 1}, + std::vector{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17}), + reference_tests::Tensor(IN_ET, {1, 2, 3, 1}, std::vector{18, 19, 20, 21, 22, 23}), + reference_tests::Tensor(IN_ET, + {2, 2, 3, 1}, + std::vector{24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35})}, + "variadic_split_4d_axis_0_dynamic"), // variadic_split_4d_axis_1_static - VariadicSplitParams({2, 8, 2, 2}, - reference_tests::Tensor(IN_ET, {2, 8, 2, 2}, std::vector{0, 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}), - reference_tests::Tensor(element::u64, {1}, std::vector{1}), - reference_tests::Tensor(element::u64, {4}, std::vector{1, 3, 2, 2}), - std::vector{reference_tests::Tensor(IN_ET, {2, 1, 2, 2}, std::vector{0, 1, 2, 3, 32, 33, 34, 35}), - reference_tests::Tensor(IN_ET, {2, 3, 2, 2}, std::vector{4, 5, 6, 7, 8, 9, 10, 11, - 12, 13, 14, 15, 36, 37, 38, 39, - 40, 41, 42, 43, 44, 45, 46, 47}), - reference_tests::Tensor(IN_ET, {2, 2, 2, 2}, std::vector{16, 17, 18, 19, 20, 21, 22, 23, - 48, 49, 50, 51, 52, 53, 54, 55}), - reference_tests::Tensor(IN_ET, {2, 2, 2, 2}, std::vector{24, 25, 26, 27, 28, 29, 30, 31, - 56, 57, 58, 59, 60, 61, 62, 63})}, - "variadic_split_4d_axis_1_static"), + VariadicSplitParams( + {2, 8, 2, 2}, + reference_tests::Tensor( + IN_ET, + {2, 8, 2, 2}, + std::vector{0, 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}), + reference_tests::Tensor(element::u64, {1}, std::vector{1}), + reference_tests::Tensor(element::u64, {4}, std::vector{1, 3, 2, 2}), + std::vector{ + reference_tests::Tensor(IN_ET, {2, 1, 2, 2}, std::vector{0, 1, 2, 3, 32, 33, 34, 35}), + reference_tests::Tensor(IN_ET, {2, 3, 2, 2}, std::vector{4, 5, 6, 7, 8, 9, 10, 11, + 12, 13, 14, 15, 36, 37, 38, 39, + 40, 41, 42, 43, 44, 45, 46, 47}), + reference_tests::Tensor(IN_ET, + {2, 2, 2, 2}, + std::vector{16, 17, 18, 19, 20, 21, 22, 23, 48, 49, 50, 51, 52, 53, 54, 55}), + reference_tests::Tensor( + IN_ET, + {2, 2, 2, 2}, + std::vector{24, 25, 26, 27, 28, 29, 30, 31, 56, 57, 58, 59, 60, 61, 62, 63})}, + "variadic_split_4d_axis_1_static"), // variadic_split_4d_axis_1_dynamic - VariadicSplitParams(PartialShape::dynamic(), - reference_tests::Tensor(IN_ET, {2, 8, 2, 2}, std::vector{0, 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}), - reference_tests::Tensor(element::i64, {1}, std::vector{1}), - reference_tests::Tensor(element::i64, {4}, std::vector{1, 3, 2, 2}), - std::vector{reference_tests::Tensor(IN_ET, {2, 1, 2, 2}, std::vector{0, 1, 2, 3, 32, 33, 34, 35}), - reference_tests::Tensor(IN_ET, {2, 3, 2, 2}, std::vector{4, 5, 6, 7, 8, 9, 10, 11, - 12, 13, 14, 15, 36, 37, 38, 39, - 40, 41, 42, 43, 44, 45, 46, 47}), - reference_tests::Tensor(IN_ET, {2, 2, 2, 2}, std::vector{16, 17, 18, 19, 20, 21, 22, 23, - 48, 49, 50, 51, 52, 53, 54, 55}), - reference_tests::Tensor(IN_ET, {2, 2, 2, 2}, std::vector{24, 25, 26, 27, 28, 29, 30, 31, - 56, 57, 58, 59, 60, 61, 62, 63})}, - "variadic_split_4d_axis_1_dynamic"), + VariadicSplitParams( + PartialShape::dynamic(), + reference_tests::Tensor( + IN_ET, + {2, 8, 2, 2}, + std::vector{0, 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}), + reference_tests::Tensor(element::i64, {1}, std::vector{1}), + reference_tests::Tensor(element::i64, {4}, std::vector{1, 3, 2, 2}), + std::vector{ + reference_tests::Tensor(IN_ET, {2, 1, 2, 2}, std::vector{0, 1, 2, 3, 32, 33, 34, 35}), + reference_tests::Tensor(IN_ET, {2, 3, 2, 2}, std::vector{4, 5, 6, 7, 8, 9, 10, 11, + 12, 13, 14, 15, 36, 37, 38, 39, + 40, 41, 42, 43, 44, 45, 46, 47}), + reference_tests::Tensor(IN_ET, + {2, 2, 2, 2}, + std::vector{16, 17, 18, 19, 20, 21, 22, 23, 48, 49, 50, 51, 52, 53, 54, 55}), + reference_tests::Tensor( + IN_ET, + {2, 2, 2, 2}, + std::vector{24, 25, 26, 27, 28, 29, 30, 31, 56, 57, 58, 59, 60, 61, 62, 63})}, + "variadic_split_4d_axis_1_dynamic"), // variadic_split_4d_axis_2_static - VariadicSplitParams({2, 1, 6, 2}, - reference_tests::Tensor(IN_ET, {2, 1, 6, 2}, std::vector{0, 1, 2, 3, 4, 5, 6, 7, - 8, 9, 10, 11, 12, 13, 14, 15, - 16, 17, 18, 19, 20, 21, 22, 23}), - reference_tests::Tensor(element::u32, {1}, std::vector{2}), - reference_tests::Tensor(element::u32, {3}, std::vector{3, 1, 2}), - std::vector{reference_tests::Tensor(IN_ET, {2, 1, 3, 2}, std::vector{0, 1, 2, 3, 4, 5, 12, 13, - 14, 15, 16, 17}), - reference_tests::Tensor(IN_ET, {2, 1, 1, 2}, std::vector{6, 7, 18, 19}), - reference_tests::Tensor(IN_ET, {2, 1, 2, 2}, std::vector{8, 9, 10, 11, 20, 21, 22, 23})}, - "variadic_split_4d_axis_2_static"), + VariadicSplitParams( + {2, 1, 6, 2}, + reference_tests::Tensor(IN_ET, {2, 1, 6, 2}, std::vector{0, 1, 2, 3, 4, 5, 6, 7, + 8, 9, 10, 11, 12, 13, 14, 15, + 16, 17, 18, 19, 20, 21, 22, 23}), + reference_tests::Tensor(element::u32, {1}, std::vector{2}), + reference_tests::Tensor(element::u32, {3}, std::vector{3, 1, 2}), + std::vector{ + reference_tests::Tensor(IN_ET, {2, 1, 3, 2}, std::vector{0, 1, 2, 3, 4, 5, 12, 13, 14, 15, 16, 17}), + reference_tests::Tensor(IN_ET, {2, 1, 1, 2}, std::vector{6, 7, 18, 19}), + reference_tests::Tensor(IN_ET, {2, 1, 2, 2}, std::vector{8, 9, 10, 11, 20, 21, 22, 23})}, + "variadic_split_4d_axis_2_static"), // variadic_split_4d_axis_2_dynamic - VariadicSplitParams(PartialShape::dynamic(), - reference_tests::Tensor(IN_ET, {2, 1, 6, 2}, std::vector{0, 1, 2, 3, 4, 5, 6, 7, - 8, 9, 10, 11, 12, 13, 14, 15, - 16, 17, 18, 19, 20, 21, 22, 23}), - reference_tests::Tensor(element::i32, {1}, std::vector{2}), - reference_tests::Tensor(element::i32, {3}, std::vector{-1, 1, 2}), - std::vector{reference_tests::Tensor(IN_ET, {2, 1, 3, 2}, std::vector{0, 1, 2, 3, 4, 5, 12, 13, - 14, 15, 16, 17}), - reference_tests::Tensor(IN_ET, {2, 1, 1, 2}, std::vector{6, 7, 18, 19}), - reference_tests::Tensor(IN_ET, {2, 1, 2, 2}, std::vector{8, 9, 10, 11, 20, 21, 22, 23})}, - "variadic_split_4d_axis_2_dynamic"), + VariadicSplitParams( + PartialShape::dynamic(), + reference_tests::Tensor(IN_ET, {2, 1, 6, 2}, std::vector{0, 1, 2, 3, 4, 5, 6, 7, + 8, 9, 10, 11, 12, 13, 14, 15, + 16, 17, 18, 19, 20, 21, 22, 23}), + reference_tests::Tensor(element::i32, {1}, std::vector{2}), + reference_tests::Tensor(element::i32, {3}, std::vector{-1, 1, 2}), + std::vector{ + reference_tests::Tensor(IN_ET, {2, 1, 3, 2}, std::vector{0, 1, 2, 3, 4, 5, 12, 13, 14, 15, 16, 17}), + reference_tests::Tensor(IN_ET, {2, 1, 1, 2}, std::vector{6, 7, 18, 19}), + reference_tests::Tensor(IN_ET, {2, 1, 2, 2}, std::vector{8, 9, 10, 11, 20, 21, 22, 23})}, + "variadic_split_4d_axis_2_dynamic"), // variadic_split_4d_axis_3_static - VariadicSplitParams({2, 1, 2, 6}, - reference_tests::Tensor(IN_ET, {2, 1, 2, 6}, std::vector{0, 1, 2, 3, 4, 5, 6, 7, - 8, 9, 10, 11, 12, 13, 14, 15, - 16, 17, 18, 19, 20, 21, 22, 23}), - reference_tests::Tensor(element::i32, {1}, std::vector{3}), - reference_tests::Tensor(element::i32, {3}, std::vector{1, -1, 3}), - std::vector{reference_tests::Tensor(IN_ET, {2, 1, 2, 1}, std::vector{0, 6, 12, 18}), - reference_tests::Tensor(IN_ET, {2, 1, 2, 2}, std::vector{1, 2, 7, 8, 13, 14, 19, 20}), - reference_tests::Tensor(IN_ET, {2, 1, 2, 3}, std::vector{3, 4, 5, 9, 10, 11, 15, 16, - 17, 21, 22, 23})}, - "variadic_split_4d_axis_neg1_static"), + VariadicSplitParams( + {2, 1, 2, 6}, + reference_tests::Tensor(IN_ET, {2, 1, 2, 6}, std::vector{0, 1, 2, 3, 4, 5, 6, 7, + 8, 9, 10, 11, 12, 13, 14, 15, + 16, 17, 18, 19, 20, 21, 22, 23}), + reference_tests::Tensor(element::i32, {1}, std::vector{3}), + reference_tests::Tensor(element::i32, {3}, std::vector{1, -1, 3}), + std::vector{ + reference_tests::Tensor(IN_ET, {2, 1, 2, 1}, std::vector{0, 6, 12, 18}), + reference_tests::Tensor(IN_ET, {2, 1, 2, 2}, std::vector{1, 2, 7, 8, 13, 14, 19, 20}), + reference_tests::Tensor(IN_ET, + {2, 1, 2, 3}, + std::vector{3, 4, 5, 9, 10, 11, 15, 16, 17, 21, 22, 23})}, + "variadic_split_4d_axis_neg1_static"), // variadic_split_4d_axis_3_dynamic - VariadicSplitParams(PartialShape::dynamic(), - reference_tests::Tensor(IN_ET, {2, 1, 2, 6}, std::vector{0, 1, 2, 3, 4, 5, 6, 7, - 8, 9, 10, 11, 12, 13, 14, 15, - 16, 17, 18, 19, 20, 21, 22, 23}), - reference_tests::Tensor(element::i32, {1}, std::vector{-1}), - reference_tests::Tensor(element::i32, {3}, std::vector{1, 2, -1}), - std::vector{reference_tests::Tensor(IN_ET, {2, 1, 2, 1}, std::vector{0, 6, 12, 18}), - reference_tests::Tensor(IN_ET, {2, 1, 2, 2}, std::vector{1, 2, 7, 8, 13, 14, 19, 20}), - reference_tests::Tensor(IN_ET, {2, 1, 2, 3}, std::vector{3, 4, 5, 9, 10, 11, 15, 16, - 17, 21, 22, 23})}, - "variadic_split_4d_axis_3_dynamic"), + VariadicSplitParams( + PartialShape::dynamic(), + reference_tests::Tensor(IN_ET, {2, 1, 2, 6}, std::vector{0, 1, 2, 3, 4, 5, 6, 7, + 8, 9, 10, 11, 12, 13, 14, 15, + 16, 17, 18, 19, 20, 21, 22, 23}), + reference_tests::Tensor(element::i32, {1}, std::vector{-1}), + reference_tests::Tensor(element::i32, {3}, std::vector{1, 2, -1}), + std::vector{ + reference_tests::Tensor(IN_ET, {2, 1, 2, 1}, std::vector{0, 6, 12, 18}), + reference_tests::Tensor(IN_ET, {2, 1, 2, 2}, std::vector{1, 2, 7, 8, 13, 14, 19, 20}), + reference_tests::Tensor(IN_ET, + {2, 1, 2, 3}, + std::vector{3, 4, 5, 9, 10, 11, 15, 16, 17, 21, 22, 23})}, + "variadic_split_4d_axis_3_dynamic"), }; return variadicSplitParams; } std::vector generateVariadicSplitCombinedParams() { - const std::vector> variadicSplitTypeParams { + const std::vector> variadicSplitTypeParams{ generateVariadicSplitParams(), generateVariadicSplitParams(), generateVariadicSplitParams(), @@ -292,6 +327,8 @@ std::vector generateVariadicSplitCombinedParams() { return combinedParams; } -INSTANTIATE_TEST_SUITE_P(smoke_VariadicSplit_With_Hardcoded_Refs, ReferenceVariadicSplitTest, - testing::ValuesIn(generateVariadicSplitCombinedParams()), ReferenceVariadicSplitTest::getTestCaseName); -} // namespace +INSTANTIATE_TEST_SUITE_P(smoke_VariadicSplit_With_Hardcoded_Refs, + ReferenceVariadicSplitTest, + testing::ValuesIn(generateVariadicSplitCombinedParams()), + ReferenceVariadicSplitTest::getTestCaseName); +} // namespace diff --git a/src/plugins/template/tests/functional/preprocessing/yuv_to_grey_tests.cpp b/src/plugins/template/tests/functional/preprocessing/yuv_to_grey_tests.cpp index 8ead0964c01..e468fde15d8 100644 --- a/src/plugins/template/tests/functional/preprocessing/yuv_to_grey_tests.cpp +++ b/src/plugins/template/tests/functional/preprocessing/yuv_to_grey_tests.cpp @@ -2,10 +2,10 @@ // SPDX-License-Identifier: Apache-2.0 // -#include - #include "preprocessing/yuv_to_grey_tests.hpp" +#include + using namespace ov::preprocess; INSTANTIATE_TEST_SUITE_P(smoke_Preprocessing, diff --git a/src/plugins/template/tests/functional/set_device_name.cpp b/src/plugins/template/tests/functional/set_device_name.cpp index 4e9d9c8f35c..f2e45bd34df 100644 --- a/src/plugins/template/tests/functional/set_device_name.cpp +++ b/src/plugins/template/tests/functional/set_device_name.cpp @@ -1,11 +1,11 @@ // Copyright (C) 2018-2023 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // -#include -#include - #include "set_device_name.hpp" +#include +#include + namespace ov { namespace test { void set_device_suffix(const std::string& suffix) { @@ -13,5 +13,5 @@ void set_device_suffix(const std::string& suffix) { throw std::runtime_error("The suffix can't be used for TEMPLATE device!"); } } -} // namespace test -} // namespace ov +} // namespace test +} // namespace ov diff --git a/src/plugins/template/tests/functional/shared_tests_instances/behavior/executable_network/exec_network_base.cpp b/src/plugins/template/tests/functional/shared_tests_instances/behavior/executable_network/exec_network_base.cpp index edf64293723..454c2c5844c 100644 --- a/src/plugins/template/tests/functional/shared_tests_instances/behavior/executable_network/exec_network_base.cpp +++ b/src/plugins/template/tests/functional/shared_tests_instances/behavior/executable_network/exec_network_base.cpp @@ -2,33 +2,28 @@ // SPDX-License-Identifier: Apache-2.0 // -#include - #include "behavior/executable_network/exec_network_base.hpp" +#include + using namespace BehaviorTestsDefinitions; namespace { -const std::vector> configs = { - {} -}; +const std::vector> configs = {{}}; -INSTANTIATE_TEST_SUITE_P(smoke_BehaviorTests, ExecutableNetworkBaseTest, - ::testing::Combine( - ::testing::Values(ov::test::utils::DEVICE_TEMPLATE), - ::testing::ValuesIn(configs)), - ExecutableNetworkBaseTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_BehaviorTests, + ExecutableNetworkBaseTest, + ::testing::Combine(::testing::Values(ov::test::utils::DEVICE_TEMPLATE), + ::testing::ValuesIn(configs)), + ExecutableNetworkBaseTest::getTestCaseName); +const std::vector netPrecisions = {InferenceEngine::Precision::FP32, + InferenceEngine::Precision::FP16}; -const std::vector netPrecisions = { - InferenceEngine::Precision::FP32, - InferenceEngine::Precision::FP16 -}; - -INSTANTIATE_TEST_SUITE_P(smoke_BehaviorTests, ExecNetSetPrecision, - ::testing::Combine( - ::testing::ValuesIn(netPrecisions), - ::testing::Values(ov::test::utils::DEVICE_TEMPLATE), - ::testing::ValuesIn(configs)), +INSTANTIATE_TEST_SUITE_P(smoke_BehaviorTests, + ExecNetSetPrecision, + ::testing::Combine(::testing::ValuesIn(netPrecisions), + ::testing::Values(ov::test::utils::DEVICE_TEMPLATE), + ::testing::ValuesIn(configs)), ExecNetSetPrecision::getTestCaseName); } // namespace diff --git a/src/plugins/template/tests/functional/shared_tests_instances/behavior/infer_request/callback.cpp b/src/plugins/template/tests/functional/shared_tests_instances/behavior/infer_request/callback.cpp index fe7686dc590..5a54f7542f6 100644 --- a/src/plugins/template/tests/functional/shared_tests_instances/behavior/infer_request/callback.cpp +++ b/src/plugins/template/tests/functional/shared_tests_instances/behavior/infer_request/callback.cpp @@ -2,20 +2,18 @@ // SPDX-License-Identifier: Apache-2.0 // -#include - #include "behavior/infer_request/callback.hpp" +#include + using namespace BehaviorTestsDefinitions; namespace { -const std::vector> configs = { - {} -}; +const std::vector> configs = {{}}; -INSTANTIATE_TEST_SUITE_P(smoke_BehaviorTests, InferRequestCallbackTests, - ::testing::Combine( - ::testing::Values(ov::test::utils::DEVICE_TEMPLATE), - ::testing::ValuesIn(configs)), - InferRequestCallbackTests::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_BehaviorTests, + InferRequestCallbackTests, + ::testing::Combine(::testing::Values(ov::test::utils::DEVICE_TEMPLATE), + ::testing::ValuesIn(configs)), + InferRequestCallbackTests::getTestCaseName); } // namespace diff --git a/src/plugins/template/tests/functional/shared_tests_instances/behavior/infer_request/config.cpp b/src/plugins/template/tests/functional/shared_tests_instances/behavior/infer_request/config.cpp index 492d7c9bb3b..b822c6f94e6 100644 --- a/src/plugins/template/tests/functional/shared_tests_instances/behavior/infer_request/config.cpp +++ b/src/plugins/template/tests/functional/shared_tests_instances/behavior/infer_request/config.cpp @@ -2,23 +2,21 @@ // SPDX-License-Identifier: Apache-2.0 // -#include - #include "behavior/infer_request/config.hpp" +#include + using namespace BehaviorTestsDefinitions; namespace { -const std::vector> configs = { - {} -}; +const std::vector> configs = {{}}; -INSTANTIATE_TEST_SUITE_P(smoke_BehaviorTests, InferRequestConfigTest, - ::testing::Combine( - ::testing::Values(1u), - ::testing::Values(ov::test::utils::DEVICE_TEMPLATE), - ::testing::ValuesIn(configs)), +INSTANTIATE_TEST_SUITE_P(smoke_BehaviorTests, + InferRequestConfigTest, + ::testing::Combine(::testing::Values(1u), + ::testing::Values(ov::test::utils::DEVICE_TEMPLATE), + ::testing::ValuesIn(configs)), InferRequestConfigTest::getTestCaseName); } // namespace diff --git a/src/plugins/template/tests/functional/shared_tests_instances/behavior/infer_request/io_blob.cpp b/src/plugins/template/tests/functional/shared_tests_instances/behavior/infer_request/io_blob.cpp index 10d16f14da9..b6f1f38a3bd 100644 --- a/src/plugins/template/tests/functional/shared_tests_instances/behavior/infer_request/io_blob.cpp +++ b/src/plugins/template/tests/functional/shared_tests_instances/behavior/infer_request/io_blob.cpp @@ -2,21 +2,19 @@ // SPDX-License-Identifier: Apache-2.0 // -#include - #include "behavior/infer_request/io_blob.hpp" +#include + using namespace BehaviorTestsDefinitions; namespace { -const std::vector> configs = { - {} -}; +const std::vector> configs = {{}}; -INSTANTIATE_TEST_SUITE_P(smoke_BehaviorTests, InferRequestIOBBlobTest, - ::testing::Combine( - ::testing::Values(ov::test::utils::DEVICE_TEMPLATE), - ::testing::ValuesIn(configs)), - InferRequestIOBBlobTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_BehaviorTests, + InferRequestIOBBlobTest, + ::testing::Combine(::testing::Values(ov::test::utils::DEVICE_TEMPLATE), + ::testing::ValuesIn(configs)), + InferRequestIOBBlobTest::getTestCaseName); } // namespace diff --git a/src/plugins/template/tests/functional/shared_tests_instances/behavior/infer_request/memory_states.cpp b/src/plugins/template/tests/functional/shared_tests_instances/behavior/infer_request/memory_states.cpp index 3a8bc33f74b..323cdb5ac4c 100644 --- a/src/plugins/template/tests/functional/shared_tests_instances/behavior/infer_request/memory_states.cpp +++ b/src/plugins/template/tests/functional/shared_tests_instances/behavior/infer_request/memory_states.cpp @@ -22,4 +22,3 @@ INSTANTIATE_TEST_SUITE_P(smoke_Template_BehaviorTests, ::testing::ValuesIn(memoryStateTestCases), InferRequestQueryStateExceptionTest::getTestCaseName); } // namespace - diff --git a/src/plugins/template/tests/functional/shared_tests_instances/behavior/infer_request/multithreading.cpp b/src/plugins/template/tests/functional/shared_tests_instances/behavior/infer_request/multithreading.cpp index d0e2c321c53..d633da55e8f 100644 --- a/src/plugins/template/tests/functional/shared_tests_instances/behavior/infer_request/multithreading.cpp +++ b/src/plugins/template/tests/functional/shared_tests_instances/behavior/infer_request/multithreading.cpp @@ -2,22 +2,20 @@ // SPDX-License-Identifier: Apache-2.0 // -#include - #include "behavior/infer_request/multithreading.hpp" +#include + using namespace BehaviorTestsDefinitions; namespace { -const std::vector> configs = { - {} -}; +const std::vector> configs = {{}}; -INSTANTIATE_TEST_SUITE_P(smoke_BehaviorTests, InferRequestMultithreadingTests, - ::testing::Combine( - ::testing::Values(ov::test::utils::DEVICE_TEMPLATE), - ::testing::ValuesIn(configs)), - InferRequestMultithreadingTests::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_BehaviorTests, + InferRequestMultithreadingTests, + ::testing::Combine(::testing::Values(ov::test::utils::DEVICE_TEMPLATE), + ::testing::ValuesIn(configs)), + InferRequestMultithreadingTests::getTestCaseName); } // namespace diff --git a/src/plugins/template/tests/functional/shared_tests_instances/behavior/infer_request/wait.cpp b/src/plugins/template/tests/functional/shared_tests_instances/behavior/infer_request/wait.cpp index 94e97854188..8233cb87b65 100644 --- a/src/plugins/template/tests/functional/shared_tests_instances/behavior/infer_request/wait.cpp +++ b/src/plugins/template/tests/functional/shared_tests_instances/behavior/infer_request/wait.cpp @@ -2,21 +2,19 @@ // SPDX-License-Identifier: Apache-2.0 // -#include - #include "behavior/infer_request/wait.hpp" +#include + using namespace BehaviorTestsDefinitions; namespace { -const std::vector> configs = { - {} -}; +const std::vector> configs = {{}}; -INSTANTIATE_TEST_SUITE_P(smoke_BehaviorTests, InferRequestWaitTests, - ::testing::Combine( - ::testing::Values(ov::test::utils::DEVICE_TEMPLATE), - ::testing::ValuesIn(configs)), - InferRequestWaitTests::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_BehaviorTests, + InferRequestWaitTests, + ::testing::Combine(::testing::Values(ov::test::utils::DEVICE_TEMPLATE), + ::testing::ValuesIn(configs)), + InferRequestWaitTests::getTestCaseName); } // namespace diff --git a/src/plugins/template/tests/functional/shared_tests_instances/behavior/ov_executable_network/exec_network_base.cpp b/src/plugins/template/tests/functional/shared_tests_instances/behavior/ov_executable_network/exec_network_base.cpp index e0a40cae324..f6f96b5b20f 100644 --- a/src/plugins/template/tests/functional/shared_tests_instances/behavior/ov_executable_network/exec_network_base.cpp +++ b/src/plugins/template/tests/functional/shared_tests_instances/behavior/ov_executable_network/exec_network_base.cpp @@ -8,59 +8,56 @@ using namespace ov::test::behavior; namespace { - const std::vector configs = { - {}, - }; - const std::vector swPluginConfigs = { - {ov::device::priorities(ov::test::utils::DEVICE_TEMPLATE)} - }; +const std::vector configs = { + {}, +}; +const std::vector swPluginConfigs = {{ov::device::priorities(ov::test::utils::DEVICE_TEMPLATE)}}; - INSTANTIATE_TEST_SUITE_P(smoke_BehaviorTests, OVCompiledModelBaseTest, - ::testing::Combine( - ::testing::Values(ov::test::utils::DEVICE_TEMPLATE), - ::testing::ValuesIn(configs)), - OVCompiledModelBaseTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_BehaviorTests, + OVCompiledModelBaseTest, + ::testing::Combine(::testing::Values(ov::test::utils::DEVICE_TEMPLATE), + ::testing::ValuesIn(configs)), + OVCompiledModelBaseTest::getTestCaseName); - INSTANTIATE_TEST_SUITE_P(smoke_Multi_BehaviorTests, OVCompiledModelBaseTest, - ::testing::Combine( - ::testing::Values(ov::test::utils::DEVICE_MULTI), - ::testing::ValuesIn(swPluginConfigs)), - OVCompiledModelBaseTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_Multi_BehaviorTests, + OVCompiledModelBaseTest, + ::testing::Combine(::testing::Values(ov::test::utils::DEVICE_MULTI), + ::testing::ValuesIn(swPluginConfigs)), + OVCompiledModelBaseTest::getTestCaseName); - INSTANTIATE_TEST_SUITE_P(smoke_Auto_BehaviorTests, OVCompiledModelBaseTest, - ::testing::Combine( - ::testing::Values(ov::test::utils::DEVICE_AUTO), - ::testing::ValuesIn(swPluginConfigs)), - OVCompiledModelBaseTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_Auto_BehaviorTests, + OVCompiledModelBaseTest, + ::testing::Combine(::testing::Values(ov::test::utils::DEVICE_AUTO), + ::testing::ValuesIn(swPluginConfigs)), + OVCompiledModelBaseTest::getTestCaseName); - INSTANTIATE_TEST_SUITE_P(smoke_Hetero_BehaviorTests, OVCompiledModelBaseTest, - ::testing::Combine( - ::testing::Values(ov::test::utils::DEVICE_HETERO), - ::testing::ValuesIn(swPluginConfigs)), - OVCompiledModelBaseTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_Hetero_BehaviorTests, + OVCompiledModelBaseTest, + ::testing::Combine(::testing::Values(ov::test::utils::DEVICE_HETERO), + ::testing::ValuesIn(swPluginConfigs)), + OVCompiledModelBaseTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_BehaviorTests, + OVCompiledModelBaseTestOptional, + ::testing::Combine(::testing::Values(ov::test::utils::DEVICE_TEMPLATE), + ::testing::ValuesIn(configs)), + OVCompiledModelBaseTestOptional::getTestCaseName); - INSTANTIATE_TEST_SUITE_P(smoke_BehaviorTests, OVCompiledModelBaseTestOptional, - ::testing::Combine( - ::testing::Values(ov::test::utils::DEVICE_TEMPLATE), - ::testing::ValuesIn(configs)), - OVCompiledModelBaseTestOptional::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_Multi_BehaviorTests, + OVCompiledModelBaseTestOptional, + ::testing::Combine(::testing::Values(ov::test::utils::DEVICE_MULTI), + ::testing::ValuesIn(swPluginConfigs)), + OVCompiledModelBaseTestOptional::getTestCaseName); - INSTANTIATE_TEST_SUITE_P(smoke_Multi_BehaviorTests, OVCompiledModelBaseTestOptional, - ::testing::Combine( - ::testing::Values(ov::test::utils::DEVICE_MULTI), - ::testing::ValuesIn(swPluginConfigs)), - OVCompiledModelBaseTestOptional::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_Auto_BehaviorTests, + OVCompiledModelBaseTestOptional, + ::testing::Combine(::testing::Values(ov::test::utils::DEVICE_AUTO), + ::testing::ValuesIn(swPluginConfigs)), + OVCompiledModelBaseTestOptional::getTestCaseName); - INSTANTIATE_TEST_SUITE_P(smoke_Auto_BehaviorTests, OVCompiledModelBaseTestOptional, - ::testing::Combine( - ::testing::Values(ov::test::utils::DEVICE_AUTO), - ::testing::ValuesIn(swPluginConfigs)), - OVCompiledModelBaseTestOptional::getTestCaseName); - - INSTANTIATE_TEST_SUITE_P(smoke_Hetero_BehaviorTests, OVCompiledModelBaseTestOptional, - ::testing::Combine( - ::testing::Values(ov::test::utils::DEVICE_HETERO), - ::testing::ValuesIn(swPluginConfigs)), - OVCompiledModelBaseTestOptional::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_Hetero_BehaviorTests, + OVCompiledModelBaseTestOptional, + ::testing::Combine(::testing::Values(ov::test::utils::DEVICE_HETERO), + ::testing::ValuesIn(swPluginConfigs)), + OVCompiledModelBaseTestOptional::getTestCaseName); } // namespace diff --git a/src/plugins/template/tests/functional/shared_tests_instances/behavior/ov_executable_network/get_metric.cpp b/src/plugins/template/tests/functional/shared_tests_instances/behavior/ov_executable_network/get_metric.cpp index 17ed16f1621..6f1c98f11bc 100644 --- a/src/plugins/template/tests/functional/shared_tests_instances/behavior/ov_executable_network/get_metric.cpp +++ b/src/plugins/template/tests/functional/shared_tests_instances/behavior/ov_executable_network/get_metric.cpp @@ -4,7 +4,6 @@ #include "behavior/compiled_model/properties.hpp" #include "behavior/compiled_model/properties_hetero.hpp" - #include "behavior/ov_plugin/properties_tests.hpp" #include "openvino/runtime/core.hpp" @@ -71,4 +70,3 @@ INSTANTIATE_TEST_SUITE_P(smoke_OVClassHeteroCompiledModelGetMetricTest, ////////////////////////////////////////////////////////////////////////////////////////// } // namespace - diff --git a/src/plugins/template/tests/functional/shared_tests_instances/behavior/ov_executable_network/ov_exec_net_import_export.cpp b/src/plugins/template/tests/functional/shared_tests_instances/behavior/ov_executable_network/ov_exec_net_import_export.cpp index 57c487b18b9..391c2919c26 100644 --- a/src/plugins/template/tests/functional/shared_tests_instances/behavior/ov_executable_network/ov_exec_net_import_export.cpp +++ b/src/plugins/template/tests/functional/shared_tests_instances/behavior/ov_executable_network/ov_exec_net_import_export.cpp @@ -1,59 +1,55 @@ // Copyright (C) 2018-2023 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // -#include "behavior/compiled_model/import_export.hpp" - -#include "ie_plugin_config.hpp" #include +#include "behavior/compiled_model/import_export.hpp" +#include "ie_plugin_config.hpp" + using namespace ov::test::behavior; namespace { const std::vector netPrecisions = { - ov::element::i8, - ov::element::i16, - ov::element::i32, - ov::element::i64, - ov::element::u8, - ov::element::u16, - ov::element::u32, - ov::element::u64, - ov::element::f16, - ov::element::f32, + ov::element::i8, + ov::element::i16, + ov::element::i32, + ov::element::i64, + ov::element::u8, + ov::element::u16, + ov::element::u32, + ov::element::u64, + ov::element::f16, + ov::element::f32, }; const std::vector configs = { - {}, + {}, }; -const std::vector multiConfigs = { - {ov::device::priorities(ov::test::utils::DEVICE_TEMPLATE)}}; +const std::vector multiConfigs = {{ov::device::priorities(ov::test::utils::DEVICE_TEMPLATE)}}; -const std::vector heteroConfigs = { - {ov::device::priorities(ov::test::utils::DEVICE_TEMPLATE)}}; +const std::vector heteroConfigs = {{ov::device::priorities(ov::test::utils::DEVICE_TEMPLATE)}}; INSTANTIATE_TEST_SUITE_P(smoke_BehaviorTests, OVCompiledGraphImportExportTest, - ::testing::Combine( - ::testing::ValuesIn(netPrecisions), - ::testing::Values(ov::test::utils::DEVICE_TEMPLATE), - ::testing::ValuesIn(configs)), + ::testing::Combine(::testing::ValuesIn(netPrecisions), + ::testing::Values(ov::test::utils::DEVICE_TEMPLATE), + ::testing::ValuesIn(configs)), OVCompiledGraphImportExportTest::getTestCaseName); INSTANTIATE_TEST_SUITE_P(smoke_Auto_BehaviorTests, - OVCompiledGraphImportExportTest, - ::testing::Combine( - ::testing::ValuesIn(netPrecisions), - ::testing::Values(ov::test::utils::DEVICE_AUTO), - ::testing::ValuesIn(multiConfigs)), - OVCompiledGraphImportExportTest::getTestCaseName); + OVCompiledGraphImportExportTest, + ::testing::Combine(::testing::ValuesIn(netPrecisions), + ::testing::Values(ov::test::utils::DEVICE_AUTO), + ::testing::ValuesIn(multiConfigs)), + OVCompiledGraphImportExportTest::getTestCaseName); INSTANTIATE_TEST_SUITE_P(smoke_Hetero_BehaviorTests, - OVCompiledGraphImportExportTest, - ::testing::Combine(::testing::ValuesIn(netPrecisions), - ::testing::Values(ov::test::utils::DEVICE_HETERO), - ::testing::ValuesIn(heteroConfigs)), - OVCompiledGraphImportExportTest::getTestCaseName); + OVCompiledGraphImportExportTest, + ::testing::Combine(::testing::ValuesIn(netPrecisions), + ::testing::Values(ov::test::utils::DEVICE_HETERO), + ::testing::ValuesIn(heteroConfigs)), + OVCompiledGraphImportExportTest::getTestCaseName); INSTANTIATE_TEST_SUITE_P(smoke_OVClassImportExportTestP, OVClassCompiledModelImportExportTestP, - ::testing::Values("HETERO:TEMPLATE")); + ::testing::Values("HETERO:TEMPLATE")); } // namespace diff --git a/src/plugins/template/tests/functional/shared_tests_instances/behavior/ov_executable_network/properties.cpp b/src/plugins/template/tests/functional/shared_tests_instances/behavior/ov_executable_network/properties.cpp index 64b6fc0c172..5622be5f16c 100644 --- a/src/plugins/template/tests/functional/shared_tests_instances/behavior/ov_executable_network/properties.cpp +++ b/src/plugins/template/tests/functional/shared_tests_instances/behavior/ov_executable_network/properties.cpp @@ -45,7 +45,8 @@ INSTANTIATE_TEST_SUITE_P(smoke_BehaviorTests, ::testing::ValuesIn(default_properties)), OVClassCompiledModelPropertiesDefaultTests::getTestCaseName); -INSTANTIATE_TEST_SUITE_P(smoke_BehaviorTests, OVCompiledModelPropertiesDefaultSupportedTests, +INSTANTIATE_TEST_SUITE_P(smoke_BehaviorTests, + OVCompiledModelPropertiesDefaultSupportedTests, ::testing::Values(ov::test::utils::DEVICE_TEMPLATE), OVCompiledModelPropertiesDefaultSupportedTests::getTestCaseName); @@ -96,15 +97,15 @@ INSTANTIATE_TEST_SUITE_P(smoke_AutoBatch_BehaviorTests, ::testing::ValuesIn(auto_batch_properties)), OVClassCompiledModelPropertiesTests::getTestCaseName); -INSTANTIATE_TEST_SUITE_P( - smoke_OVClassCompiledModelEmptyPropertiesTests, OVClassCompiledModelEmptyPropertiesTests, - ::testing::Values(ov::test::utils::DEVICE_TEMPLATE)); +INSTANTIATE_TEST_SUITE_P(smoke_OVClassCompiledModelEmptyPropertiesTests, + OVClassCompiledModelEmptyPropertiesTests, + ::testing::Values(ov::test::utils::DEVICE_TEMPLATE)); // OV Class Load network -INSTANTIATE_TEST_SUITE_P( - smoke_OVCompiledModelIncorrectDevice, OVCompiledModelIncorrectDevice, - ::testing::Values(ov::test::utils::DEVICE_TEMPLATE)); +INSTANTIATE_TEST_SUITE_P(smoke_OVCompiledModelIncorrectDevice, + OVCompiledModelIncorrectDevice, + ::testing::Values(ov::test::utils::DEVICE_TEMPLATE)); const std::vector>> GetMetricTest_ExecutionDevice_TEMPLATE = {{ov::test::utils::DEVICE_TEMPLATE, std::make_pair(ov::AnyMap{}, "TEMPLATE.0")}}; diff --git a/src/plugins/template/tests/functional/shared_tests_instances/behavior/ov_infer_request/batched_tensors.cpp b/src/plugins/template/tests/functional/shared_tests_instances/behavior/ov_infer_request/batched_tensors.cpp index 25798f13590..d8e9b3a6284 100644 --- a/src/plugins/template/tests/functional/shared_tests_instances/behavior/ov_infer_request/batched_tensors.cpp +++ b/src/plugins/template/tests/functional/shared_tests_instances/behavior/ov_infer_request/batched_tensors.cpp @@ -2,10 +2,10 @@ // SPDX-License-Identifier: Apache-2.0 // -#include - #include "behavior/ov_infer_request/batched_tensors.hpp" +#include + namespace ov { namespace test { namespace behavior { @@ -61,10 +61,12 @@ TEST_P(OVInferRequestBatchedTests, SetInputTensors_Strides) { tensors.push_back(tensor1_cut); tensors.push_back(tensor2_cut); auto exp_tensor = ov::Tensor(element::f32, batch_shape); - ASSERT_THROW({ - req.set_tensors("tensor_input0", tensors); - req.infer(); - }, ov::Exception); + ASSERT_THROW( + { + req.set_tensors("tensor_input0", tensors); + req.infer(); + }, + ov::Exception); } } // namespace behavior @@ -76,7 +78,8 @@ namespace { using namespace ov::test::behavior; using namespace ov; -INSTANTIATE_TEST_SUITE_P(smoke_BehaviorTests, OVInferRequestBatchedTests, +INSTANTIATE_TEST_SUITE_P(smoke_BehaviorTests, + OVInferRequestBatchedTests, ::testing::Values(ov::test::utils::DEVICE_TEMPLATE), OVInferRequestBatchedTests::getTestCaseName); diff --git a/src/plugins/template/tests/functional/shared_tests_instances/behavior/ov_infer_request/callback.cpp b/src/plugins/template/tests/functional/shared_tests_instances/behavior/ov_infer_request/callback.cpp index a54609aaa15..64152aad1d3 100644 --- a/src/plugins/template/tests/functional/shared_tests_instances/behavior/ov_infer_request/callback.cpp +++ b/src/plugins/template/tests/functional/shared_tests_instances/behavior/ov_infer_request/callback.cpp @@ -2,20 +2,18 @@ // SPDX-License-Identifier: Apache-2.0 // -#include - #include "behavior/ov_infer_request/callback.hpp" +#include + using namespace ov::test::behavior; namespace { -const std::vector configs = { - {} -}; +const std::vector configs = {{}}; -INSTANTIATE_TEST_SUITE_P(smoke_BehaviorTests, OVInferRequestCallbackTests, - ::testing::Combine( - ::testing::Values(ov::test::utils::DEVICE_TEMPLATE), - ::testing::ValuesIn(configs)), - OVInferRequestCallbackTests::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_BehaviorTests, + OVInferRequestCallbackTests, + ::testing::Combine(::testing::Values(ov::test::utils::DEVICE_TEMPLATE), + ::testing::ValuesIn(configs)), + OVInferRequestCallbackTests::getTestCaseName); } // namespace diff --git a/src/plugins/template/tests/functional/shared_tests_instances/behavior/ov_infer_request/cancellation.cpp b/src/plugins/template/tests/functional/shared_tests_instances/behavior/ov_infer_request/cancellation.cpp index e31ce005428..1746a4ee5b7 100644 --- a/src/plugins/template/tests/functional/shared_tests_instances/behavior/ov_infer_request/cancellation.cpp +++ b/src/plugins/template/tests/functional/shared_tests_instances/behavior/ov_infer_request/cancellation.cpp @@ -8,12 +8,12 @@ using namespace ov::test::behavior; namespace { const std::vector configs = { - {}, + {}, }; -INSTANTIATE_TEST_SUITE_P(smoke_BehaviorTests, OVInferRequestCancellationTests, - ::testing::Combine( - ::testing::Values(ov::test::utils::DEVICE_TEMPLATE), - ::testing::ValuesIn(configs)), - OVInferRequestCancellationTests::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_BehaviorTests, + OVInferRequestCancellationTests, + ::testing::Combine(::testing::Values(ov::test::utils::DEVICE_TEMPLATE), + ::testing::ValuesIn(configs)), + OVInferRequestCancellationTests::getTestCaseName); } // namespace diff --git a/src/plugins/template/tests/functional/shared_tests_instances/behavior/ov_infer_request/infer_request_dynamic.cpp b/src/plugins/template/tests/functional/shared_tests_instances/behavior/ov_infer_request/infer_request_dynamic.cpp index 62f36bb5546..1ae1cb74130 100644 --- a/src/plugins/template/tests/functional/shared_tests_instances/behavior/ov_infer_request/infer_request_dynamic.cpp +++ b/src/plugins/template/tests/functional/shared_tests_instances/behavior/ov_infer_request/infer_request_dynamic.cpp @@ -2,37 +2,38 @@ // SPDX-License-Identifier: Apache-2.0 // -#include - #include "behavior/ov_infer_request/infer_request_dynamic.hpp" +#include + using namespace ov::test::behavior; namespace { -const std::vector configs = { - {} -}; +const std::vector configs = {{}}; -const std::vector HeteroConfigs = { - {ov::device::priorities(ov::test::utils::DEVICE_TEMPLATE)}}; +const std::vector HeteroConfigs = {{ov::device::priorities(ov::test::utils::DEVICE_TEMPLATE)}}; -INSTANTIATE_TEST_SUITE_P(smoke_BehaviorTests, OVInferRequestDynamicTests, - ::testing::Combine( - ::testing::Values(ngraph::builder::subgraph::makeSplitConvConcat()), - ::testing::Values(std::vector, std::vector>>{{{1, 4, 20, 20}, {1, 10, 18, 18}}, - {{2, 4, 20, 20}, {2, 10, 18, 18}}}), - ::testing::Values(ov::test::utils::DEVICE_TEMPLATE), - ::testing::ValuesIn(configs)), - OVInferRequestDynamicTests::getTestCaseName); +INSTANTIATE_TEST_SUITE_P( + smoke_BehaviorTests, + OVInferRequestDynamicTests, + ::testing::Combine(::testing::Values(ngraph::builder::subgraph::makeSplitConvConcat()), + ::testing::Values(std::vector, std::vector>>{ + {{1, 4, 20, 20}, {1, 10, 18, 18}}, + {{2, 4, 20, 20}, {2, 10, 18, 18}}}), + ::testing::Values(ov::test::utils::DEVICE_TEMPLATE), + ::testing::ValuesIn(configs)), + OVInferRequestDynamicTests::getTestCaseName); -INSTANTIATE_TEST_SUITE_P(smoke_Hetero_BehaviorTests, OVInferRequestDynamicTests, - ::testing::Combine( - ::testing::Values(ngraph::builder::subgraph::makeSplitConvConcat()), - ::testing::Values(std::vector, std::vector>>{{{1, 4, 20, 20}, {1, 10, 18, 18}}, - {{2, 4, 20, 20}, {2, 10, 18, 18}}}), - ::testing::Values(ov::test::utils::DEVICE_HETERO), - ::testing::ValuesIn(HeteroConfigs)), - OVInferRequestDynamicTests::getTestCaseName); +INSTANTIATE_TEST_SUITE_P( + smoke_Hetero_BehaviorTests, + OVInferRequestDynamicTests, + ::testing::Combine(::testing::Values(ngraph::builder::subgraph::makeSplitConvConcat()), + ::testing::Values(std::vector, std::vector>>{ + {{1, 4, 20, 20}, {1, 10, 18, 18}}, + {{2, 4, 20, 20}, {2, 10, 18, 18}}}), + ::testing::Values(ov::test::utils::DEVICE_HETERO), + ::testing::ValuesIn(HeteroConfigs)), + OVInferRequestDynamicTests::getTestCaseName); } // namespace diff --git a/src/plugins/template/tests/functional/shared_tests_instances/behavior/ov_infer_request/inference.cpp b/src/plugins/template/tests/functional/shared_tests_instances/behavior/ov_infer_request/inference.cpp index f3288d328f4..2490bcb1a33 100644 --- a/src/plugins/template/tests/functional/shared_tests_instances/behavior/ov_infer_request/inference.cpp +++ b/src/plugins/template/tests/functional/shared_tests_instances/behavior/ov_infer_request/inference.cpp @@ -2,19 +2,19 @@ // SPDX-License-Identifier: Apache-2.0 // -#include - #include "behavior/ov_infer_request/inference.hpp" +#include + namespace { using namespace ov::test::behavior; using namespace ov; -INSTANTIATE_TEST_SUITE_P(smoke_BehaviorTests, OVInferRequestInferenceTests, - ::testing::Combine( - ::testing::Values(tensor_roi::roi_nchw(), tensor_roi::roi_1d()), - ::testing::Values(ov::test::utils::DEVICE_TEMPLATE)), +INSTANTIATE_TEST_SUITE_P(smoke_BehaviorTests, + OVInferRequestInferenceTests, + ::testing::Combine(::testing::Values(tensor_roi::roi_nchw(), tensor_roi::roi_1d()), + ::testing::Values(ov::test::utils::DEVICE_TEMPLATE)), OVInferRequestInferenceTests::getTestCaseName); } // namespace diff --git a/src/plugins/template/tests/functional/shared_tests_instances/behavior/ov_infer_request/inference_chaining.cpp b/src/plugins/template/tests/functional/shared_tests_instances/behavior/ov_infer_request/inference_chaining.cpp index 87297a4ab90..14e51f2cfee 100644 --- a/src/plugins/template/tests/functional/shared_tests_instances/behavior/ov_infer_request/inference_chaining.cpp +++ b/src/plugins/template/tests/functional/shared_tests_instances/behavior/ov_infer_request/inference_chaining.cpp @@ -3,41 +3,39 @@ // #include "behavior/ov_infer_request/inference_chaining.hpp" + #include "common_test_utils/test_constants.hpp" using namespace ov::test::behavior; namespace { -const std::vector configs = { - {} -}; +const std::vector configs = {{}}; -const std::vector HeteroConfigs = { - {ov::device::priorities(ov::test::utils::DEVICE_TEMPLATE)}}; +const std::vector HeteroConfigs = {{ov::device::priorities(ov::test::utils::DEVICE_TEMPLATE)}}; -INSTANTIATE_TEST_SUITE_P(smoke_BehaviorTests, OVInferenceChaining, - ::testing::Combine( - ::testing::Values(ov::test::utils::DEVICE_TEMPLATE), - ::testing::ValuesIn(configs)), - OVInferenceChaining::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_BehaviorTests, + OVInferenceChaining, + ::testing::Combine(::testing::Values(ov::test::utils::DEVICE_TEMPLATE), + ::testing::ValuesIn(configs)), + OVInferenceChaining::getTestCaseName); -INSTANTIATE_TEST_SUITE_P(smoke_Hetero_BehaviorTests, OVInferenceChaining, - ::testing::Combine( - ::testing::Values(ov::test::utils::DEVICE_HETERO), - ::testing::ValuesIn(HeteroConfigs)), - OVInferenceChaining::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_Hetero_BehaviorTests, + OVInferenceChaining, + ::testing::Combine(::testing::Values(ov::test::utils::DEVICE_HETERO), + ::testing::ValuesIn(HeteroConfigs)), + OVInferenceChaining::getTestCaseName); -INSTANTIATE_TEST_SUITE_P(smoke_BehaviorTests, OVInferenceChainingStatic, - ::testing::Combine( - ::testing::Values(ov::test::utils::DEVICE_TEMPLATE), - ::testing::ValuesIn(configs)), - OVInferenceChainingStatic::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_BehaviorTests, + OVInferenceChainingStatic, + ::testing::Combine(::testing::Values(ov::test::utils::DEVICE_TEMPLATE), + ::testing::ValuesIn(configs)), + OVInferenceChainingStatic::getTestCaseName); -INSTANTIATE_TEST_SUITE_P(smoke_Hetero_BehaviorTests, OVInferenceChainingStatic, - ::testing::Combine( - ::testing::Values(ov::test::utils::DEVICE_HETERO), - ::testing::ValuesIn(HeteroConfigs)), - OVInferenceChainingStatic::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_Hetero_BehaviorTests, + OVInferenceChainingStatic, + ::testing::Combine(::testing::Values(ov::test::utils::DEVICE_HETERO), + ::testing::ValuesIn(HeteroConfigs)), + OVInferenceChainingStatic::getTestCaseName); } // namespace diff --git a/src/plugins/template/tests/functional/shared_tests_instances/behavior/ov_infer_request/io_tensor.cpp b/src/plugins/template/tests/functional/shared_tests_instances/behavior/ov_infer_request/io_tensor.cpp index a6d6fc10fd6..9949e943999 100644 --- a/src/plugins/template/tests/functional/shared_tests_instances/behavior/ov_infer_request/io_tensor.cpp +++ b/src/plugins/template/tests/functional/shared_tests_instances/behavior/ov_infer_request/io_tensor.cpp @@ -2,22 +2,20 @@ // SPDX-License-Identifier: Apache-2.0 // -#include - #include "behavior/ov_infer_request/io_tensor.hpp" +#include + using namespace ov::test::behavior; namespace { -const std::vector configs = { - {} -}; +const std::vector configs = {{}}; -INSTANTIATE_TEST_SUITE_P(smoke_BehaviorTests, OVInferRequestIOTensorTest, - ::testing::Combine( - ::testing::Values(ov::test::utils::DEVICE_TEMPLATE), - ::testing::ValuesIn(configs)), - OVInferRequestIOTensorTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_BehaviorTests, + OVInferRequestIOTensorTest, + ::testing::Combine(::testing::Values(ov::test::utils::DEVICE_TEMPLATE), + ::testing::ValuesIn(configs)), + OVInferRequestIOTensorTest::getTestCaseName); std::vector prcs = { ov::element::boolean, @@ -40,30 +38,28 @@ std::vector prcs = { const std::vector emptyConfigs = {{}}; -const std::vector HeteroConfigs = { - {ov::device::priorities(ov::test::utils::DEVICE_TEMPLATE)}}; +const std::vector HeteroConfigs = {{ov::device::priorities(ov::test::utils::DEVICE_TEMPLATE)}}; -const std::vector Multiconfigs = { - {ov::device::priorities(ov::test::utils::DEVICE_TEMPLATE)}}; +const std::vector Multiconfigs = {{ov::device::priorities(ov::test::utils::DEVICE_TEMPLATE)}}; -INSTANTIATE_TEST_SUITE_P(smoke_BehaviorTests, OVInferRequestCheckTensorPrecision, - ::testing::Combine( - ::testing::ValuesIn(prcs), - ::testing::Values(ov::test::utils::DEVICE_TEMPLATE), - ::testing::ValuesIn(emptyConfigs)), +INSTANTIATE_TEST_SUITE_P(smoke_BehaviorTests, + OVInferRequestCheckTensorPrecision, + ::testing::Combine(::testing::ValuesIn(prcs), + ::testing::Values(ov::test::utils::DEVICE_TEMPLATE), + ::testing::ValuesIn(emptyConfigs)), OVInferRequestCheckTensorPrecision::getTestCaseName); -INSTANTIATE_TEST_SUITE_P(smoke_Hetero_BehaviorTests, OVInferRequestCheckTensorPrecision, - ::testing::Combine( - ::testing::ValuesIn(prcs), - ::testing::Values(ov::test::utils::DEVICE_HETERO), - ::testing::ValuesIn(HeteroConfigs)), +INSTANTIATE_TEST_SUITE_P(smoke_Hetero_BehaviorTests, + OVInferRequestCheckTensorPrecision, + ::testing::Combine(::testing::ValuesIn(prcs), + ::testing::Values(ov::test::utils::DEVICE_HETERO), + ::testing::ValuesIn(HeteroConfigs)), OVInferRequestCheckTensorPrecision::getTestCaseName); -INSTANTIATE_TEST_SUITE_P(smoke_Multi_BehaviorTests, OVInferRequestCheckTensorPrecision, - ::testing::Combine( - ::testing::ValuesIn(prcs), - ::testing::Values(ov::test::utils::DEVICE_MULTI), - ::testing::ValuesIn(Multiconfigs)), +INSTANTIATE_TEST_SUITE_P(smoke_Multi_BehaviorTests, + OVInferRequestCheckTensorPrecision, + ::testing::Combine(::testing::ValuesIn(prcs), + ::testing::Values(ov::test::utils::DEVICE_MULTI), + ::testing::ValuesIn(Multiconfigs)), OVInferRequestCheckTensorPrecision::getTestCaseName); } // namespace diff --git a/src/plugins/template/tests/functional/shared_tests_instances/behavior/ov_infer_request/multithreading.cpp b/src/plugins/template/tests/functional/shared_tests_instances/behavior/ov_infer_request/multithreading.cpp index 98347aba2e4..3607e851ff6 100644 --- a/src/plugins/template/tests/functional/shared_tests_instances/behavior/ov_infer_request/multithreading.cpp +++ b/src/plugins/template/tests/functional/shared_tests_instances/behavior/ov_infer_request/multithreading.cpp @@ -2,22 +2,20 @@ // SPDX-License-Identifier: Apache-2.0 // -#include - #include "behavior/ov_infer_request/multithreading.hpp" +#include + using namespace ov::test::behavior; namespace { -const std::vector configs = { - {} -}; +const std::vector configs = {{}}; -INSTANTIATE_TEST_SUITE_P(smoke_BehaviorTests, OVInferRequestMultithreadingTests, - ::testing::Combine( - ::testing::Values(ov::test::utils::DEVICE_TEMPLATE), - ::testing::ValuesIn(configs)), - OVInferRequestMultithreadingTests::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_BehaviorTests, + OVInferRequestMultithreadingTests, + ::testing::Combine(::testing::Values(ov::test::utils::DEVICE_TEMPLATE), + ::testing::ValuesIn(configs)), + OVInferRequestMultithreadingTests::getTestCaseName); } // namespace diff --git a/src/plugins/template/tests/functional/shared_tests_instances/behavior/ov_infer_request/wait.cpp b/src/plugins/template/tests/functional/shared_tests_instances/behavior/ov_infer_request/wait.cpp index a4914fc899b..06733733a7b 100644 --- a/src/plugins/template/tests/functional/shared_tests_instances/behavior/ov_infer_request/wait.cpp +++ b/src/plugins/template/tests/functional/shared_tests_instances/behavior/ov_infer_request/wait.cpp @@ -2,21 +2,19 @@ // SPDX-License-Identifier: Apache-2.0 // -#include - #include "behavior/ov_infer_request/wait.hpp" +#include + using namespace ov::test::behavior; namespace { -const std::vector configs = { - {} -}; +const std::vector configs = {{}}; -INSTANTIATE_TEST_SUITE_P(smoke_BehaviorTests, OVInferRequestWaitTests, - ::testing::Combine( - ::testing::Values(ov::test::utils::DEVICE_TEMPLATE), - ::testing::ValuesIn(configs)), - OVInferRequestWaitTests::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_BehaviorTests, + OVInferRequestWaitTests, + ::testing::Combine(::testing::Values(ov::test::utils::DEVICE_TEMPLATE), + ::testing::ValuesIn(configs)), + OVInferRequestWaitTests::getTestCaseName); } // namespace diff --git a/src/plugins/template/tests/functional/shared_tests_instances/behavior/ov_plugin/life_time.cpp b/src/plugins/template/tests/functional/shared_tests_instances/behavior/ov_plugin/life_time.cpp index ca3a5b27901..a415fa49060 100644 --- a/src/plugins/template/tests/functional/shared_tests_instances/behavior/ov_plugin/life_time.cpp +++ b/src/plugins/template/tests/functional/shared_tests_instances/behavior/ov_plugin/life_time.cpp @@ -8,12 +8,14 @@ using namespace ov::test::behavior; namespace { -INSTANTIATE_TEST_SUITE_P(smoke_BehaviorTests, OVHoldersTest, - ::testing::Values(ov::test::utils::DEVICE_TEMPLATE), - OVHoldersTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_BehaviorTests, + OVHoldersTest, + ::testing::Values(ov::test::utils::DEVICE_TEMPLATE), + OVHoldersTest::getTestCaseName); -INSTANTIATE_TEST_SUITE_P(smoke_BehaviorTests, OVHoldersTestOnImportedNetwork, - ::testing::Values(ov::test::utils::DEVICE_TEMPLATE, "HETERO:TEMPLATE"), - OVHoldersTestOnImportedNetwork::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_BehaviorTests, + OVHoldersTestOnImportedNetwork, + ::testing::Values(ov::test::utils::DEVICE_TEMPLATE, "HETERO:TEMPLATE"), + OVHoldersTestOnImportedNetwork::getTestCaseName); } // namespace diff --git a/src/plugins/template/tests/functional/shared_tests_instances/behavior/ov_plugin/properties_tests.cpp b/src/plugins/template/tests/functional/shared_tests_instances/behavior/ov_plugin/properties_tests.cpp index 0f05a09f4da..bfc64eb0454 100644 --- a/src/plugins/template/tests/functional/shared_tests_instances/behavior/ov_plugin/properties_tests.cpp +++ b/src/plugins/template/tests/functional/shared_tests_instances/behavior/ov_plugin/properties_tests.cpp @@ -16,8 +16,10 @@ const std::vector inproperties = { INSTANTIATE_TEST_SUITE_P(smoke_BehaviorTests, OVPropertiesIncorrectTests, - ::testing::Combine(::testing::Values(ov::test::utils::DEVICE_TEMPLATE, ov::test::utils::DEVICE_HETERO, - ov::test::utils::DEVICE_MULTI, ov::test::utils::DEVICE_BATCH), + ::testing::Combine(::testing::Values(ov::test::utils::DEVICE_TEMPLATE, + ov::test::utils::DEVICE_HETERO, + ov::test::utils::DEVICE_MULTI, + ov::test::utils::DEVICE_BATCH), ::testing::ValuesIn(inproperties)), OVPropertiesIncorrectTests::getTestCaseName); diff --git a/src/plugins/template/tests/functional/shared_tests_instances/behavior/plugin/caching_tests.cpp b/src/plugins/template/tests/functional/shared_tests_instances/behavior/plugin/caching_tests.cpp index 03658e2e4fe..c17f0cfca2c 100644 --- a/src/plugins/template/tests/functional/shared_tests_instances/behavior/plugin/caching_tests.cpp +++ b/src/plugins/template/tests/functional/shared_tests_instances/behavior/plugin/caching_tests.cpp @@ -7,19 +7,17 @@ using namespace LayerTestsDefinitions; namespace { - static const std::vector precisionsTemplate = { - ov::element::f32, - }; +static const std::vector precisionsTemplate = { + ov::element::f32, +}; - static const std::vector batchSizesTemplate = { - 1, 2 - }; +static const std::vector batchSizesTemplate = {1, 2}; - INSTANTIATE_TEST_SUITE_P(smoke_Behavior_CachingSupportCase_Template, LoadNetworkCacheTestBase, - ::testing::Combine( - ::testing::ValuesIn(LoadNetworkCacheTestBase::getStandardFunctions()), - ::testing::ValuesIn(precisionsTemplate), - ::testing::ValuesIn(batchSizesTemplate), - ::testing::Values(ov::test::utils::DEVICE_TEMPLATE)), - LoadNetworkCacheTestBase::getTestCaseName); -} // namespace +INSTANTIATE_TEST_SUITE_P(smoke_Behavior_CachingSupportCase_Template, + LoadNetworkCacheTestBase, + ::testing::Combine(::testing::ValuesIn(LoadNetworkCacheTestBase::getStandardFunctions()), + ::testing::ValuesIn(precisionsTemplate), + ::testing::ValuesIn(batchSizesTemplate), + ::testing::Values(ov::test::utils::DEVICE_TEMPLATE)), + LoadNetworkCacheTestBase::getTestCaseName); +} // namespace diff --git a/src/plugins/template/tests/functional/shared_tests_instances/behavior/plugin/core_integration.cpp b/src/plugins/template/tests/functional/shared_tests_instances/behavior/plugin/core_integration.cpp index 55be786c2a6..858ba1f0d7b 100644 --- a/src/plugins/template/tests/functional/shared_tests_instances/behavior/plugin/core_integration.cpp +++ b/src/plugins/template/tests/functional/shared_tests_instances/behavior/plugin/core_integration.cpp @@ -2,12 +2,12 @@ // SPDX-License-Identifier: Apache-2.0 // -#include -#include -#include - #include "behavior/plugin/core_integration.hpp" +#include +#include +#include + using namespace BehaviorTestsDefinitions; namespace { @@ -16,54 +16,54 @@ namespace { // IE Class Common tests with // -INSTANTIATE_TEST_SUITE_P( - smoke_IEClassBasicTestP, IEClassBasicTestP, - ::testing::Values(std::make_pair("openvino_template_plugin", ov::test::utils::DEVICE_TEMPLATE))); +INSTANTIATE_TEST_SUITE_P(smoke_IEClassBasicTestP, + IEClassBasicTestP, + ::testing::Values(std::make_pair("openvino_template_plugin", + ov::test::utils::DEVICE_TEMPLATE))); -INSTANTIATE_TEST_SUITE_P( - smoke_IEClassNetworkTestP, IEClassNetworkTestP, - ::testing::Values(ov::test::utils::DEVICE_TEMPLATE)); +INSTANTIATE_TEST_SUITE_P(smoke_IEClassNetworkTestP, + IEClassNetworkTestP, + ::testing::Values(ov::test::utils::DEVICE_TEMPLATE)); // // IE Class GetMetric // -INSTANTIATE_TEST_SUITE_P( - smoke_IEClassGetMetricTest, IEClassGetMetricTest_SUPPORTED_CONFIG_KEYS, - ::testing::Values(ov::test::utils::DEVICE_TEMPLATE)); +INSTANTIATE_TEST_SUITE_P(smoke_IEClassGetMetricTest, + IEClassGetMetricTest_SUPPORTED_CONFIG_KEYS, + ::testing::Values(ov::test::utils::DEVICE_TEMPLATE)); -INSTANTIATE_TEST_SUITE_P( - smoke_IEClassGetMetricTest, IEClassGetMetricTest_SUPPORTED_METRICS, - ::testing::Values(ov::test::utils::DEVICE_TEMPLATE)); +INSTANTIATE_TEST_SUITE_P(smoke_IEClassGetMetricTest, + IEClassGetMetricTest_SUPPORTED_METRICS, + ::testing::Values(ov::test::utils::DEVICE_TEMPLATE)); -INSTANTIATE_TEST_SUITE_P( - smoke_IEClassGetMetricTest, IEClassGetMetricTest_AVAILABLE_DEVICES, - ::testing::Values(ov::test::utils::DEVICE_TEMPLATE)); +INSTANTIATE_TEST_SUITE_P(smoke_IEClassGetMetricTest, + IEClassGetMetricTest_AVAILABLE_DEVICES, + ::testing::Values(ov::test::utils::DEVICE_TEMPLATE)); -INSTANTIATE_TEST_SUITE_P( - smoke_IEClassGetMetricTest, IEClassGetMetricTest_FULL_DEVICE_NAME, - ::testing::Values(ov::test::utils::DEVICE_TEMPLATE)); +INSTANTIATE_TEST_SUITE_P(smoke_IEClassGetMetricTest, + IEClassGetMetricTest_FULL_DEVICE_NAME, + ::testing::Values(ov::test::utils::DEVICE_TEMPLATE)); -INSTANTIATE_TEST_SUITE_P( - smoke_IEClassGetMetricTest, IEClassGetMetricTest_OPTIMIZATION_CAPABILITIES, - ::testing::Values(ov::test::utils::DEVICE_TEMPLATE)); +INSTANTIATE_TEST_SUITE_P(smoke_IEClassGetMetricTest, + IEClassGetMetricTest_OPTIMIZATION_CAPABILITIES, + ::testing::Values(ov::test::utils::DEVICE_TEMPLATE)); -INSTANTIATE_TEST_SUITE_P( - smoke_IEClassGetMetricTest, IEClassGetMetricTest_RANGE_FOR_ASYNC_INFER_REQUESTS, - ::testing::Values(ov::test::utils::DEVICE_TEMPLATE)); +INSTANTIATE_TEST_SUITE_P(smoke_IEClassGetMetricTest, + IEClassGetMetricTest_RANGE_FOR_ASYNC_INFER_REQUESTS, + ::testing::Values(ov::test::utils::DEVICE_TEMPLATE)); -INSTANTIATE_TEST_SUITE_P( - smoke_IEClassGetMetricTest, IEClassGetMetricTest_ThrowUnsupported, - ::testing::Values(ov::test::utils::DEVICE_TEMPLATE)); +INSTANTIATE_TEST_SUITE_P(smoke_IEClassGetMetricTest, + IEClassGetMetricTest_ThrowUnsupported, + ::testing::Values(ov::test::utils::DEVICE_TEMPLATE)); -INSTANTIATE_TEST_SUITE_P( - smoke_IEClassGetConfigTest, IEClassGetConfigTest_ThrowUnsupported, - ::testing::Values(ov::test::utils::DEVICE_TEMPLATE)); - -INSTANTIATE_TEST_SUITE_P( - smoke_IEClassGetAvailableDevices, IEClassGetAvailableDevices, - ::testing::Values(ov::test::utils::DEVICE_TEMPLATE)); +INSTANTIATE_TEST_SUITE_P(smoke_IEClassGetConfigTest, + IEClassGetConfigTest_ThrowUnsupported, + ::testing::Values(ov::test::utils::DEVICE_TEMPLATE)); +INSTANTIATE_TEST_SUITE_P(smoke_IEClassGetAvailableDevices, + IEClassGetAvailableDevices, + ::testing::Values(ov::test::utils::DEVICE_TEMPLATE)); // // IE Class SetConfig @@ -117,9 +117,9 @@ TEST_F(IEClassSetConfigTestHETERO, smoke_SetConfigNoThrow) { // IE Class GetConfig // -INSTANTIATE_TEST_SUITE_P( - smoke_IEClassGetConfigTest, IEClassGetConfigTest, - ::testing::Values(ov::test::utils::DEVICE_TEMPLATE)); +INSTANTIATE_TEST_SUITE_P(smoke_IEClassGetConfigTest, + IEClassGetConfigTest, + ::testing::Values(ov::test::utils::DEVICE_TEMPLATE)); class IEClassGetConfigTestTEMPLATE : public BehaviorTestsUtils::IEClassNetworkTest, public BehaviorTestsUtils::IEPluginTestBase { @@ -137,7 +137,7 @@ TEST_F(IEClassGetConfigTestTEMPLATE, smoke_GetConfigNoThrow) { ASSERT_NO_THROW(p = ie.GetMetric(deviceName, METRIC_KEY(SUPPORTED_CONFIG_KEYS))); auto configValues = p.as>(); - for (auto &&confKey : configValues) { + for (auto&& confKey : configValues) { if (CONFIG_KEY(DEVICE_ID) == confKey) { auto defaultDeviceID = ie.GetConfig(deviceName, CONFIG_KEY(DEVICE_ID)).as(); std::cout << CONFIG_KEY(DEVICE_ID) << " : " << defaultDeviceID << std::endl; @@ -153,13 +153,13 @@ TEST_F(IEClassGetConfigTestTEMPLATE, smoke_GetConfigNoThrow) { // IE Class Query network -INSTANTIATE_TEST_SUITE_P( - smoke_IEClassQueryNetworkTest, IEClassQueryNetworkTest, - ::testing::Values(ov::test::utils::DEVICE_TEMPLATE)); +INSTANTIATE_TEST_SUITE_P(smoke_IEClassQueryNetworkTest, + IEClassQueryNetworkTest, + ::testing::Values(ov::test::utils::DEVICE_TEMPLATE)); // IE Class Load network -INSTANTIATE_TEST_SUITE_P( - smoke_IEClassLoadNetworkTest, IEClassLoadNetworkTest, - ::testing::Values(ov::test::utils::DEVICE_TEMPLATE)); -} // namespace +INSTANTIATE_TEST_SUITE_P(smoke_IEClassLoadNetworkTest, + IEClassLoadNetworkTest, + ::testing::Values(ov::test::utils::DEVICE_TEMPLATE)); +} // namespace diff --git a/src/plugins/template/tests/functional/shared_tests_instances/behavior/plugin/life_time.cpp b/src/plugins/template/tests/functional/shared_tests_instances/behavior/plugin/life_time.cpp index 0bc6c5ca1f3..b505320e1e0 100644 --- a/src/plugins/template/tests/functional/shared_tests_instances/behavior/plugin/life_time.cpp +++ b/src/plugins/template/tests/functional/shared_tests_instances/behavior/plugin/life_time.cpp @@ -8,7 +8,7 @@ using namespace BehaviorTestsDefinitions; namespace { -const std::vector> orders = { +const std::vector> orders = { // 0 - plugin // 1 - executable_network // 2 - infer_request @@ -17,23 +17,23 @@ const std::vector> orders = { {1, 0, 2}, {1, 2, 0}, {2, 0, 1}, - {2, 1, 0} -}; + {2, 1, 0}}; -INSTANTIATE_TEST_SUITE_P(smoke_BehaviorTests, HoldersTest, - ::testing::Combine( - ::testing::Values(ov::test::utils::DEVICE_TEMPLATE), - ::testing::ValuesIn(orders)), - HoldersTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_BehaviorTests, + HoldersTest, + ::testing::Combine(::testing::Values(ov::test::utils::DEVICE_TEMPLATE), + ::testing::ValuesIn(orders)), + HoldersTest::getTestCaseName); -INSTANTIATE_TEST_SUITE_P(smoke_BehaviorTests, HoldersTestImportNetwork, - ::testing::Combine( - ::testing::Values(ov::test::utils::DEVICE_TEMPLATE, "HETERO:TEMPLATE"), - ::testing::ValuesIn(orders)), - HoldersTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_BehaviorTests, + HoldersTestImportNetwork, + ::testing::Combine(::testing::Values(ov::test::utils::DEVICE_TEMPLATE, "HETERO:TEMPLATE"), + ::testing::ValuesIn(orders)), + HoldersTest::getTestCaseName); -INSTANTIATE_TEST_SUITE_P(smoke_BehaviorTests, HoldersTestOnImportedNetwork, - ::testing::Values(ov::test::utils::DEVICE_TEMPLATE, "HETERO:TEMPLATE"), - HoldersTestOnImportedNetwork::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_BehaviorTests, + HoldersTestOnImportedNetwork, + ::testing::Values(ov::test::utils::DEVICE_TEMPLATE, "HETERO:TEMPLATE"), + HoldersTestOnImportedNetwork::getTestCaseName); } // namespace diff --git a/src/plugins/template/tests/functional/shared_tests_instances/behavior/plugin/preprocessing.cpp b/src/plugins/template/tests/functional/shared_tests_instances/behavior/plugin/preprocessing.cpp index adc17a6d403..ea8d9a2e622 100644 --- a/src/plugins/template/tests/functional/shared_tests_instances/behavior/plugin/preprocessing.cpp +++ b/src/plugins/template/tests/functional/shared_tests_instances/behavior/plugin/preprocessing.cpp @@ -10,33 +10,30 @@ using namespace BehaviorTestsDefinitions; namespace { -const std::vector inputPrecisions = { - InferenceEngine::Precision::U8, - InferenceEngine::Precision::FP32 -}; +const std::vector inputPrecisions = {InferenceEngine::Precision::U8, + InferenceEngine::Precision::FP32}; -const std::vector> configs = { - {} -}; +const std::vector> configs = {{}}; -INSTANTIATE_TEST_SUITE_P(smoke_Behavior_PreprocessingPrecisionConvertTestsViaSetInput, PreprocessingPrecisionConvertTest, - ::testing::Combine( - ::testing::ValuesIn(inputPrecisions), - ::testing::Values(4), // Number of input tensor channels - ::testing::Values(true), // Use SetInput - ::testing::Values(ov::test::utils::DEVICE_TEMPLATE), - ::testing::ValuesIn(configs)), - PreprocessingPrecisionConvertTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_Behavior_PreprocessingPrecisionConvertTestsViaSetInput, + PreprocessingPrecisionConvertTest, + ::testing::Combine(::testing::ValuesIn(inputPrecisions), + ::testing::Values(4), // Number of input tensor channels + ::testing::Values(true), // Use SetInput + ::testing::Values(ov::test::utils::DEVICE_TEMPLATE), + ::testing::ValuesIn(configs)), + PreprocessingPrecisionConvertTest::getTestCaseName); -INSTANTIATE_TEST_SUITE_P(smoke_Behavior_PreprocessingPrecisionConvertTestsViaGetBlob, PreprocessingPrecisionConvertTest, - ::testing::Combine( - ::testing::ValuesIn(inputPrecisions), - ::testing::Values(4), // Number of input tensor channels (blob_copy only supports 4d and 5d tensors) - ::testing::Values(false), // use GetBlob - ::testing::Values(ov::test::utils::DEVICE_TEMPLATE), - ::testing::ValuesIn(configs)), - PreprocessingPrecisionConvertTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_Behavior_PreprocessingPrecisionConvertTestsViaGetBlob, + PreprocessingPrecisionConvertTest, + ::testing::Combine(::testing::ValuesIn(inputPrecisions), + ::testing::Values(4), // Number of input tensor channels (blob_copy only + // supports 4d and 5d tensors) + ::testing::Values(false), // use GetBlob + ::testing::Values(ov::test::utils::DEVICE_TEMPLATE), + ::testing::ValuesIn(configs)), + PreprocessingPrecisionConvertTest::getTestCaseName); } // namespace -#endif // ENABLE_GAPI_PREPROCESSING +#endif // ENABLE_GAPI_PREPROCESSING diff --git a/src/plugins/template/tests/functional/shared_tests_instances/behavior/plugin/set_preprocess.cpp b/src/plugins/template/tests/functional/shared_tests_instances/behavior/plugin/set_preprocess.cpp index 42f7e9fb7d9..e570c6fc0f6 100644 --- a/src/plugins/template/tests/functional/shared_tests_instances/behavior/plugin/set_preprocess.cpp +++ b/src/plugins/template/tests/functional/shared_tests_instances/behavior/plugin/set_preprocess.cpp @@ -8,49 +8,40 @@ using namespace BehaviorTestsDefinitions; namespace { -const std::vector netPrecisions = { - InferenceEngine::Precision::FP32, - InferenceEngine::Precision::FP16 -}; +const std::vector netPrecisions = {InferenceEngine::Precision::FP32, + InferenceEngine::Precision::FP16}; -const std::vector> configs = { - {} -}; +const std::vector> configs = {{}}; const std::vector> multiConfigs = { - {{ InferenceEngine::MultiDeviceConfigParams::KEY_MULTI_DEVICE_PRIORITIES, - ov::test::utils::DEVICE_TEMPLATE }} -}; + {{InferenceEngine::MultiDeviceConfigParams::KEY_MULTI_DEVICE_PRIORITIES, ov::test::utils::DEVICE_TEMPLATE}}}; const std::vector> heteroConfigs = { - {{ "TARGET_FALLBACK", ov::test::utils::DEVICE_TEMPLATE }} -}; + {{"TARGET_FALLBACK", ov::test::utils::DEVICE_TEMPLATE}}}; -INSTANTIATE_TEST_SUITE_P(smoke_BehaviorTests, InferRequestPreprocessTest, - ::testing::Combine( - ::testing::ValuesIn(netPrecisions), - ::testing::Values(ov::test::utils::DEVICE_TEMPLATE), - ::testing::ValuesIn(configs)), - InferRequestPreprocessTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_BehaviorTests, + InferRequestPreprocessTest, + ::testing::Combine(::testing::ValuesIn(netPrecisions), + ::testing::Values(ov::test::utils::DEVICE_TEMPLATE), + ::testing::ValuesIn(configs)), + InferRequestPreprocessTest::getTestCaseName); -INSTANTIATE_TEST_SUITE_P(smoke_Multi_BehaviorTests, InferRequestPreprocessTest, - ::testing::Combine( - ::testing::ValuesIn(netPrecisions), - ::testing::Values(ov::test::utils::DEVICE_MULTI), - ::testing::ValuesIn(multiConfigs)), - InferRequestPreprocessTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_Multi_BehaviorTests, + InferRequestPreprocessTest, + ::testing::Combine(::testing::ValuesIn(netPrecisions), + ::testing::Values(ov::test::utils::DEVICE_MULTI), + ::testing::ValuesIn(multiConfigs)), + InferRequestPreprocessTest::getTestCaseName); -INSTANTIATE_TEST_SUITE_P(smoke_Hetero_BehaviorTests, InferRequestPreprocessTest, - ::testing::Combine( - ::testing::ValuesIn(netPrecisions), - ::testing::Values(ov::test::utils::DEVICE_HETERO), - ::testing::ValuesIn(heteroConfigs)), - InferRequestPreprocessTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_Hetero_BehaviorTests, + InferRequestPreprocessTest, + ::testing::Combine(::testing::ValuesIn(netPrecisions), + ::testing::Values(ov::test::utils::DEVICE_HETERO), + ::testing::ValuesIn(heteroConfigs)), + InferRequestPreprocessTest::getTestCaseName); -const std::vector ioPrecisions = { - InferenceEngine::Precision::FP32, - InferenceEngine::Precision::U8 -}; +const std::vector ioPrecisions = {InferenceEngine::Precision::FP32, + InferenceEngine::Precision::U8}; const std::vector netLayouts = { InferenceEngine::Layout::NCHW, }; @@ -60,18 +51,18 @@ const std::vector ioLayouts = { InferenceEngine::Layout::NHWC, }; -INSTANTIATE_TEST_SUITE_P(smoke_BehaviorTests, InferRequestPreprocessConversionTest, - ::testing::Combine( - ::testing::ValuesIn(netPrecisions), - ::testing::ValuesIn(ioPrecisions), - ::testing::ValuesIn(ioPrecisions), - ::testing::ValuesIn(netLayouts), - ::testing::ValuesIn(ioLayouts), - ::testing::ValuesIn(ioLayouts), - ::testing::Bool(), - ::testing::Bool(), - ::testing::Values(ov::test::utils::DEVICE_TEMPLATE), - ::testing::ValuesIn(configs)), - InferRequestPreprocessConversionTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_BehaviorTests, + InferRequestPreprocessConversionTest, + ::testing::Combine(::testing::ValuesIn(netPrecisions), + ::testing::ValuesIn(ioPrecisions), + ::testing::ValuesIn(ioPrecisions), + ::testing::ValuesIn(netLayouts), + ::testing::ValuesIn(ioLayouts), + ::testing::ValuesIn(ioLayouts), + ::testing::Bool(), + ::testing::Bool(), + ::testing::Values(ov::test::utils::DEVICE_TEMPLATE), + ::testing::ValuesIn(configs)), + InferRequestPreprocessConversionTest::getTestCaseName); } // namespace diff --git a/src/plugins/template/tests/functional/shared_tests_instances/behavior/plugin/synthetic.cpp b/src/plugins/template/tests/functional/shared_tests_instances/behavior/plugin/synthetic.cpp index c3e82400793..6a152b6bdcd 100644 --- a/src/plugins/template/tests/functional/shared_tests_instances/behavior/plugin/synthetic.cpp +++ b/src/plugins/template/tests/functional/shared_tests_instances/behavior/plugin/synthetic.cpp @@ -14,71 +14,97 @@ using namespace HeteroTests; // this tests load plugin by library name: this is not available during static linkage #ifndef OPENVINO_STATIC_LIBRARY -INSTANTIATE_TEST_SUITE_P(smoke_manyTargetInputs, HeteroSyntheticTest, - ::testing::Combine( - ::testing::Values(std::vector{{"TEMPLATE0", "openvino_template_plugin"}, {"TEMPLATE1", "openvino_template_plugin"}}), - ::testing::ValuesIn(HeteroTests::HeteroSyntheticTest::withMajorNodesFunctions( - [] {return ngraph::builder::subgraph::makeConvPool2Relu2();}, {"Conv_1"}, true))), - HeteroSyntheticTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P( + smoke_manyTargetInputs, + HeteroSyntheticTest, + ::testing::Combine(::testing::Values(std::vector{{"TEMPLATE0", "openvino_template_plugin"}, + {"TEMPLATE1", "openvino_template_plugin"}}), + ::testing::ValuesIn(HeteroTests::HeteroSyntheticTest::withMajorNodesFunctions( + [] { + return ngraph::builder::subgraph::makeConvPool2Relu2(); + }, + {"Conv_1"}, + true))), + HeteroSyntheticTest::getTestCaseName); -INSTANTIATE_TEST_SUITE_P(smoke_SingleMajorNode, HeteroSyntheticTest, - ::testing::Combine( - ::testing::Values(std::vector{{"TEMPLATE0", "openvino_template_plugin"}, {"TEMPLATE1", "openvino_template_plugin"}}), - ::testing::ValuesIn(HeteroTests::HeteroSyntheticTest::_singleMajorNodeFunctions)), - HeteroSyntheticTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P( + smoke_SingleMajorNode, + HeteroSyntheticTest, + ::testing::Combine(::testing::Values(std::vector{{"TEMPLATE0", "openvino_template_plugin"}, + {"TEMPLATE1", "openvino_template_plugin"}}), + ::testing::ValuesIn(HeteroTests::HeteroSyntheticTest::_singleMajorNodeFunctions)), + HeteroSyntheticTest::getTestCaseName); -INSTANTIATE_TEST_SUITE_P(nightly_RandomMajorNodes, HeteroSyntheticTest, - ::testing::Combine( - ::testing::Values(std::vector{{"TEMPLATE0", "openvino_template_plugin"}, {"TEMPLATE1", "openvino_template_plugin"}}), - ::testing::ValuesIn(HeteroTests::HeteroSyntheticTest::_randomMajorNodeFunctions)), - HeteroSyntheticTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P( + nightly_RandomMajorNodes, + HeteroSyntheticTest, + ::testing::Combine(::testing::Values(std::vector{{"TEMPLATE0", "openvino_template_plugin"}, + {"TEMPLATE1", "openvino_template_plugin"}}), + ::testing::ValuesIn(HeteroTests::HeteroSyntheticTest::_randomMajorNodeFunctions)), + HeteroSyntheticTest::getTestCaseName); static std::vector()>> dynamicBuilders = { - [] {return ngraph::builder::subgraph::makeConvPoolReluNonZero();}, + [] { + return ngraph::builder::subgraph::makeConvPoolReluNonZero(); + }, }; -INSTANTIATE_TEST_SUITE_P(smoke_NonZeroMajorNode_dynamic, HeteroSyntheticTest, - ::testing::Combine( - ::testing::Values(std::vector{{"TEMPLATE0", "openvino_template_plugin"}, {"TEMPLATE1", "openvino_template_plugin"}}), - ::testing::ValuesIn(HeteroTests::HeteroSyntheticTest::withMajorNodesFunctions( - dynamicBuilders.front(), {"nonZero_1"}))), - HeteroSyntheticTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P( + smoke_NonZeroMajorNode_dynamic, + HeteroSyntheticTest, + ::testing::Combine( + ::testing::Values(std::vector{{"TEMPLATE0", "openvino_template_plugin"}, + {"TEMPLATE1", "openvino_template_plugin"}}), + ::testing::ValuesIn(HeteroTests::HeteroSyntheticTest::withMajorNodesFunctions(dynamicBuilders.front(), + {"nonZero_1"}))), + HeteroSyntheticTest::getTestCaseName); -INSTANTIATE_TEST_SUITE_P(smoke_NonZeroMajorNode_dynamic_batch, HeteroSyntheticTest, - ::testing::Combine( - ::testing::Values(std::vector{{"TEMPLATE0", "openvino_template_plugin"}, {"TEMPLATE1", "openvino_template_plugin"}}), - ::testing::ValuesIn(HeteroTests::HeteroSyntheticTest::withMajorNodesFunctions( - dynamicBuilders.front(), {"nonZero_1"}, true))), - HeteroSyntheticTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P( + smoke_NonZeroMajorNode_dynamic_batch, + HeteroSyntheticTest, + ::testing::Combine( + ::testing::Values(std::vector{{"TEMPLATE0", "openvino_template_plugin"}, + {"TEMPLATE1", "openvino_template_plugin"}}), + ::testing::ValuesIn( + HeteroTests::HeteroSyntheticTest::withMajorNodesFunctions(dynamicBuilders.front(), {"nonZero_1"}, true))), + HeteroSyntheticTest::getTestCaseName); -INSTANTIATE_TEST_SUITE_P(smoke_SingleMajorNode_dynamic, HeteroSyntheticTest, - ::testing::Combine( - ::testing::Values(std::vector{{"TEMPLATE0", "openvino_template_plugin"}, {"TEMPLATE1", "openvino_template_plugin"}}), - ::testing::ValuesIn(HeteroTests::HeteroSyntheticTest::singleMajorNodeFunctions( - dynamicBuilders))), - HeteroSyntheticTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P( + smoke_SingleMajorNode_dynamic, + HeteroSyntheticTest, + ::testing::Combine( + ::testing::Values(std::vector{{"TEMPLATE0", "openvino_template_plugin"}, + {"TEMPLATE1", "openvino_template_plugin"}}), + ::testing::ValuesIn(HeteroTests::HeteroSyntheticTest::singleMajorNodeFunctions(dynamicBuilders))), + HeteroSyntheticTest::getTestCaseName); -INSTANTIATE_TEST_SUITE_P(nightly_RandomMajorNodes_dynamic, HeteroSyntheticTest, - ::testing::Combine( - ::testing::Values(std::vector{{"TEMPLATE0", "openvino_template_plugin"}, {"TEMPLATE1", "openvino_template_plugin"}}), - ::testing::ValuesIn(HeteroTests::HeteroSyntheticTest::randomMajorNodeFunctions( - dynamicBuilders))), - HeteroSyntheticTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P( + nightly_RandomMajorNodes_dynamic, + HeteroSyntheticTest, + ::testing::Combine( + ::testing::Values(std::vector{{"TEMPLATE0", "openvino_template_plugin"}, + {"TEMPLATE1", "openvino_template_plugin"}}), + ::testing::ValuesIn(HeteroTests::HeteroSyntheticTest::randomMajorNodeFunctions(dynamicBuilders))), + HeteroSyntheticTest::getTestCaseName); -INSTANTIATE_TEST_SUITE_P(smoke_SingleMajorNode_dynamic_batch, HeteroSyntheticTest, - ::testing::Combine( - ::testing::Values(std::vector{{"TEMPLATE0", "openvino_template_plugin"}, {"TEMPLATE1", "openvino_template_plugin"}}), - ::testing::ValuesIn(HeteroTests::HeteroSyntheticTest::singleMajorNodeFunctions( - dynamicBuilders, true))), - HeteroSyntheticTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P( + smoke_SingleMajorNode_dynamic_batch, + HeteroSyntheticTest, + ::testing::Combine(::testing::Values(std::vector{{"TEMPLATE0", "openvino_template_plugin"}, + {"TEMPLATE1", "openvino_template_plugin"}}), + ::testing::ValuesIn(HeteroTests::HeteroSyntheticTest::singleMajorNodeFunctions(dynamicBuilders, + true))), + HeteroSyntheticTest::getTestCaseName); -INSTANTIATE_TEST_SUITE_P(nightly_RandomMajorNodes_dynamic_batch, HeteroSyntheticTest, - ::testing::Combine( - ::testing::Values(std::vector{{"TEMPLATE0", "openvino_template_plugin"}, {"TEMPLATE1", "openvino_template_plugin"}}), - ::testing::ValuesIn(HeteroTests::HeteroSyntheticTest::randomMajorNodeFunctions( - dynamicBuilders, true))), - HeteroSyntheticTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P( + nightly_RandomMajorNodes_dynamic_batch, + HeteroSyntheticTest, + ::testing::Combine(::testing::Values(std::vector{{"TEMPLATE0", "openvino_template_plugin"}, + {"TEMPLATE1", "openvino_template_plugin"}}), + ::testing::ValuesIn(HeteroTests::HeteroSyntheticTest::randomMajorNodeFunctions(dynamicBuilders, + true))), + HeteroSyntheticTest::getTestCaseName); -#endif // !OPENVINO_STATIC_LIBRARY +#endif // !OPENVINO_STATIC_LIBRARY } // namespace diff --git a/src/plugins/template/tests/functional/shared_tests_instances/behavior/plugin/version.cpp b/src/plugins/template/tests/functional/shared_tests_instances/behavior/plugin/version.cpp index 173c63f3d79..7fa154c1b86 100644 --- a/src/plugins/template/tests/functional/shared_tests_instances/behavior/plugin/version.cpp +++ b/src/plugins/template/tests/functional/shared_tests_instances/behavior/plugin/version.cpp @@ -8,12 +8,11 @@ using namespace BehaviorTestsDefinitions; namespace { -const std::vector> configs = { - {} -}; +const std::vector> configs = {{}}; -INSTANTIATE_TEST_SUITE_P(smoke_BehaviorTests, VersionTest, - ::testing::Values(ov::test::utils::DEVICE_TEMPLATE), - VersionTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_BehaviorTests, + VersionTest, + ::testing::Values(ov::test::utils::DEVICE_TEMPLATE), + VersionTest::getTestCaseName); } // namespace diff --git a/src/plugins/template/tests/functional/shared_tests_instances/single_layer_tests/convolution.cpp b/src/plugins/template/tests/functional/shared_tests_instances/single_layer_tests/convolution.cpp index d6528bd9f73..9aff6a6bcdf 100644 --- a/src/plugins/template/tests/functional/shared_tests_instances/single_layer_tests/convolution.cpp +++ b/src/plugins/template/tests/functional/shared_tests_instances/single_layer_tests/convolution.cpp @@ -2,9 +2,10 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "single_layer_tests/convolution.hpp" + #include -#include "single_layer_tests/convolution.hpp" #include "common_test_utils/test_constants.hpp" using namespace LayerTestsDefinitions; @@ -13,128 +14,108 @@ namespace { // ! [test_convolution:declare_parameters] const std::vector netPrecisions = { - InferenceEngine::Precision::FP32, - InferenceEngine::Precision::FP16, + InferenceEngine::Precision::FP32, + InferenceEngine::Precision::FP16, }; /* ============= 2D Convolution ============= */ -const std::vector> kernels = {{3, 3}, - {3, 5}}; -const std::vector> strides = {{1, 1}, - {1, 3}}; -const std::vector> padBegins = {{0, 0}, - {0, 3}}; -const std::vector> padEnds = {{0, 0}, - {0, 3}}; -const std::vector> dilations = {{1, 1}, - {3, 1}}; +const std::vector> kernels = {{3, 3}, {3, 5}}; +const std::vector> strides = {{1, 1}, {1, 3}}; +const std::vector> padBegins = {{0, 0}, {0, 3}}; +const std::vector> padEnds = {{0, 0}, {0, 3}}; +const std::vector> dilations = {{1, 1}, {3, 1}}; const std::vector numOutChannels = {1, 5}; -const std::vector padTypes = { - ngraph::op::PadType::EXPLICIT, - ngraph::op::PadType::VALID -}; +const std::vector padTypes = {ngraph::op::PadType::EXPLICIT, ngraph::op::PadType::VALID}; -const auto conv2DParams_ExplicitPadding = ::testing::Combine( - ::testing::ValuesIn(kernels), - ::testing::ValuesIn(strides), - ::testing::ValuesIn(padBegins), - ::testing::ValuesIn(padEnds), - ::testing::ValuesIn(dilations), - ::testing::ValuesIn(numOutChannels), - ::testing::Values(ngraph::op::PadType::EXPLICIT) -); +const auto conv2DParams_ExplicitPadding = ::testing::Combine(::testing::ValuesIn(kernels), + ::testing::ValuesIn(strides), + ::testing::ValuesIn(padBegins), + ::testing::ValuesIn(padEnds), + ::testing::ValuesIn(dilations), + ::testing::ValuesIn(numOutChannels), + ::testing::Values(ngraph::op::PadType::EXPLICIT)); // ! [test_convolution:declare_parameters] -const auto conv2DParams_AutoPadValid = ::testing::Combine( - ::testing::ValuesIn(kernels), - ::testing::ValuesIn(strides), - ::testing::Values(std::vector({0, 0})), - ::testing::Values(std::vector({0, 0})), - ::testing::ValuesIn(dilations), - ::testing::ValuesIn(numOutChannels), - ::testing::Values(ngraph::op::PadType::VALID) -); +const auto conv2DParams_AutoPadValid = ::testing::Combine(::testing::ValuesIn(kernels), + ::testing::ValuesIn(strides), + ::testing::Values(std::vector({0, 0})), + ::testing::Values(std::vector({0, 0})), + ::testing::ValuesIn(dilations), + ::testing::ValuesIn(numOutChannels), + ::testing::Values(ngraph::op::PadType::VALID)); // ! [test_convolution:instantiate] -INSTANTIATE_TEST_SUITE_P(Convolution2D_ExplicitPadding, ConvolutionLayerTest, - ::testing::Combine( - conv2DParams_ExplicitPadding, - ::testing::ValuesIn(netPrecisions), - ::testing::Values(InferenceEngine::Precision::UNSPECIFIED), - ::testing::Values(InferenceEngine::Precision::UNSPECIFIED), - ::testing::Values(InferenceEngine::Layout::ANY), - ::testing::Values(InferenceEngine::Layout::ANY), - ::testing::Values(std::vector({1, 3, 30, 30})), - ::testing::Values(ov::test::utils::DEVICE_TEMPLATE)), +INSTANTIATE_TEST_SUITE_P(Convolution2D_ExplicitPadding, + ConvolutionLayerTest, + ::testing::Combine(conv2DParams_ExplicitPadding, + ::testing::ValuesIn(netPrecisions), + ::testing::Values(InferenceEngine::Precision::UNSPECIFIED), + ::testing::Values(InferenceEngine::Precision::UNSPECIFIED), + ::testing::Values(InferenceEngine::Layout::ANY), + ::testing::Values(InferenceEngine::Layout::ANY), + ::testing::Values(std::vector({1, 3, 30, 30})), + ::testing::Values(ov::test::utils::DEVICE_TEMPLATE)), ConvolutionLayerTest::getTestCaseName); // ! [test_convolution:instantiate] -INSTANTIATE_TEST_SUITE_P(Convolution2D_AutoPadValid, ConvolutionLayerTest, - ::testing::Combine( - conv2DParams_AutoPadValid, - ::testing::ValuesIn(netPrecisions), - ::testing::Values(InferenceEngine::Precision::UNSPECIFIED), - ::testing::Values(InferenceEngine::Precision::UNSPECIFIED), - ::testing::Values(InferenceEngine::Layout::ANY), - ::testing::Values(InferenceEngine::Layout::ANY), - ::testing::Values(std::vector({1, 3, 30, 30})), - ::testing::Values(ov::test::utils::DEVICE_TEMPLATE)), +INSTANTIATE_TEST_SUITE_P(Convolution2D_AutoPadValid, + ConvolutionLayerTest, + ::testing::Combine(conv2DParams_AutoPadValid, + ::testing::ValuesIn(netPrecisions), + ::testing::Values(InferenceEngine::Precision::UNSPECIFIED), + ::testing::Values(InferenceEngine::Precision::UNSPECIFIED), + ::testing::Values(InferenceEngine::Layout::ANY), + ::testing::Values(InferenceEngine::Layout::ANY), + ::testing::Values(std::vector({1, 3, 30, 30})), + ::testing::Values(ov::test::utils::DEVICE_TEMPLATE)), ConvolutionLayerTest::getTestCaseName); /* ============= 3D Convolution ============= */ -const std::vector> kernels3d = {{3, 3, 3}, - {3, 5, 3}}; -const std::vector> paddings3d = {{0, 0, 0}, - {0, 2, 0}}; +const std::vector> kernels3d = {{3, 3, 3}, {3, 5, 3}}; +const std::vector> paddings3d = {{0, 0, 0}, {0, 2, 0}}; -const std::vector> strides3d = {{1, 1, 1}, - {1, 2, 1}}; -const std::vector> dilations3d = {{1, 1, 1}, - {1, 2, 1}}; +const std::vector> strides3d = {{1, 1, 1}, {1, 2, 1}}; +const std::vector> dilations3d = {{1, 1, 1}, {1, 2, 1}}; -const auto conv3DParams_ExplicitPadding = ::testing::Combine( - ::testing::ValuesIn(kernels3d), - ::testing::ValuesIn(strides3d), - ::testing::ValuesIn(paddings3d), - ::testing::ValuesIn(paddings3d), - ::testing::ValuesIn(dilations3d), - ::testing::Values(5), - ::testing::Values(ngraph::op::PadType::EXPLICIT) -); -const auto conv3DParams_AutoPadValid = ::testing::Combine( - ::testing::ValuesIn(kernels3d), - ::testing::ValuesIn(strides3d), - ::testing::Values(std::vector({0, 0, 0})), - ::testing::Values(std::vector({0, 0, 0})), - ::testing::ValuesIn(dilations3d), - ::testing::Values(5), - ::testing::Values(ngraph::op::PadType::VALID) -); +const auto conv3DParams_ExplicitPadding = ::testing::Combine(::testing::ValuesIn(kernels3d), + ::testing::ValuesIn(strides3d), + ::testing::ValuesIn(paddings3d), + ::testing::ValuesIn(paddings3d), + ::testing::ValuesIn(dilations3d), + ::testing::Values(5), + ::testing::Values(ngraph::op::PadType::EXPLICIT)); +const auto conv3DParams_AutoPadValid = ::testing::Combine(::testing::ValuesIn(kernels3d), + ::testing::ValuesIn(strides3d), + ::testing::Values(std::vector({0, 0, 0})), + ::testing::Values(std::vector({0, 0, 0})), + ::testing::ValuesIn(dilations3d), + ::testing::Values(5), + ::testing::Values(ngraph::op::PadType::VALID)); -INSTANTIATE_TEST_SUITE_P(smoke_Convolution3D_ExplicitPadding, ConvolutionLayerTest, - ::testing::Combine( - conv3DParams_ExplicitPadding, - ::testing::ValuesIn(netPrecisions), - ::testing::Values(InferenceEngine::Precision::UNSPECIFIED), - ::testing::Values(InferenceEngine::Precision::UNSPECIFIED), - ::testing::Values(InferenceEngine::Layout::ANY), - ::testing::Values(InferenceEngine::Layout::ANY), - ::testing::Values(std::vector({1, 3, 10, 10, 10})), - ::testing::Values(ov::test::utils::DEVICE_TEMPLATE)), +INSTANTIATE_TEST_SUITE_P(smoke_Convolution3D_ExplicitPadding, + ConvolutionLayerTest, + ::testing::Combine(conv3DParams_ExplicitPadding, + ::testing::ValuesIn(netPrecisions), + ::testing::Values(InferenceEngine::Precision::UNSPECIFIED), + ::testing::Values(InferenceEngine::Precision::UNSPECIFIED), + ::testing::Values(InferenceEngine::Layout::ANY), + ::testing::Values(InferenceEngine::Layout::ANY), + ::testing::Values(std::vector({1, 3, 10, 10, 10})), + ::testing::Values(ov::test::utils::DEVICE_TEMPLATE)), ConvolutionLayerTest::getTestCaseName); -INSTANTIATE_TEST_SUITE_P(nightly_Convolution3D_AutoPadValid, ConvolutionLayerTest, - ::testing::Combine( - conv3DParams_AutoPadValid, - ::testing::ValuesIn(netPrecisions), - ::testing::Values(InferenceEngine::Precision::UNSPECIFIED), - ::testing::Values(InferenceEngine::Precision::UNSPECIFIED), - ::testing::Values(InferenceEngine::Layout::ANY), - ::testing::Values(InferenceEngine::Layout::ANY), - ::testing::Values(std::vector({1, 3, 10, 10, 10})), - ::testing::Values(ov::test::utils::DEVICE_TEMPLATE)), +INSTANTIATE_TEST_SUITE_P(nightly_Convolution3D_AutoPadValid, + ConvolutionLayerTest, + ::testing::Combine(conv3DParams_AutoPadValid, + ::testing::ValuesIn(netPrecisions), + ::testing::Values(InferenceEngine::Precision::UNSPECIFIED), + ::testing::Values(InferenceEngine::Precision::UNSPECIFIED), + ::testing::Values(InferenceEngine::Layout::ANY), + ::testing::Values(InferenceEngine::Layout::ANY), + ::testing::Values(std::vector({1, 3, 10, 10, 10})), + ::testing::Values(ov::test::utils::DEVICE_TEMPLATE)), ConvolutionLayerTest::getTestCaseName); } // namespace diff --git a/src/plugins/template/tests/functional/shared_tests_instances/single_layer_tests/eltwise.cpp b/src/plugins/template/tests/functional/shared_tests_instances/single_layer_tests/eltwise.cpp index d476ff03b97..1c2bfa338e7 100644 --- a/src/plugins/template/tests/functional/shared_tests_instances/single_layer_tests/eltwise.cpp +++ b/src/plugins/template/tests/functional/shared_tests_instances/single_layer_tests/eltwise.cpp @@ -2,130 +2,130 @@ // SPDX-License-Identifier: Apache-2.0 // -#include #include "single_layer_tests/eltwise.hpp" + +#include + #include "common_test_utils/test_constants.hpp" using namespace ov::test::subgraph; namespace { std::vector> inShapesStatic = { - {{2}}, - {{2, 200}}, - {{10, 200}}, - {{1, 10, 100}}, - {{4, 4, 16}}, - {{1, 1, 1, 3}}, - {{2, 17, 5, 4}, {1, 17, 1, 1}}, - {{2, 17, 5, 1}, {1, 17, 1, 4}}, - {{1, 2, 4}}, - {{1, 4, 4}}, - {{1, 4, 4, 1}}, - {{1, 1, 1, 1, 1, 1, 3}}, - {{1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}}, + {{2}}, + {{2, 200}}, + {{10, 200}}, + {{1, 10, 100}}, + {{4, 4, 16}}, + {{1, 1, 1, 3}}, + {{2, 17, 5, 4}, {1, 17, 1, 1}}, + {{2, 17, 5, 1}, {1, 17, 1, 4}}, + {{1, 2, 4}}, + {{1, 4, 4}}, + {{1, 4, 4, 1}}, + {{1, 1, 1, 1, 1, 1, 3}}, + {{1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}}, }; std::vector> inShapesDynamic = { - {{{ngraph::Dimension(1, 10), 200}, {{2, 200}, {1, 200}}}, - {{ngraph::Dimension(1, 10), 200}, {{2, 200}, {5, 200}}}}, + {{{ngraph::Dimension(1, 10), 200}, {{2, 200}, {1, 200}}}, {{ngraph::Dimension(1, 10), 200}, {{2, 200}, {5, 200}}}}, }; std::vector netPrecisions = { - ov::element::f32, - ov::element::f16, - ov::element::i32, + ov::element::f32, + ov::element::f16, + ov::element::i32, }; std::vector secondaryInputTypes = { - ngraph::helpers::InputLayerType::CONSTANT, - ngraph::helpers::InputLayerType::PARAMETER, + ngraph::helpers::InputLayerType::CONSTANT, + ngraph::helpers::InputLayerType::PARAMETER, }; std::vector secondaryInputTypesDynamic = { - ngraph::helpers::InputLayerType::PARAMETER, + ngraph::helpers::InputLayerType::PARAMETER, }; std::vector opTypes = { - ov::test::utils::OpType::SCALAR, - ov::test::utils::OpType::VECTOR, + ov::test::utils::OpType::SCALAR, + ov::test::utils::OpType::VECTOR, }; std::vector opTypesDynamic = { - ov::test::utils::OpType::VECTOR, + ov::test::utils::OpType::VECTOR, }; -std::vector eltwiseOpTypes = { - ngraph::helpers::EltwiseTypes::ADD, - ngraph::helpers::EltwiseTypes::MULTIPLY, - ngraph::helpers::EltwiseTypes::SUBTRACT, - ngraph::helpers::EltwiseTypes::DIVIDE, - ngraph::helpers::EltwiseTypes::FLOOR_MOD, - ngraph::helpers::EltwiseTypes::SQUARED_DIFF, - ngraph::helpers::EltwiseTypes::POWER, - ngraph::helpers::EltwiseTypes::MOD -}; +std::vector eltwiseOpTypes = {ngraph::helpers::EltwiseTypes::ADD, + ngraph::helpers::EltwiseTypes::MULTIPLY, + ngraph::helpers::EltwiseTypes::SUBTRACT, + ngraph::helpers::EltwiseTypes::DIVIDE, + ngraph::helpers::EltwiseTypes::FLOOR_MOD, + ngraph::helpers::EltwiseTypes::SQUARED_DIFF, + ngraph::helpers::EltwiseTypes::POWER, + ngraph::helpers::EltwiseTypes::MOD}; std::vector eltwiseOpTypesDynamic = { - ngraph::helpers::EltwiseTypes::ADD, - ngraph::helpers::EltwiseTypes::MULTIPLY, - ngraph::helpers::EltwiseTypes::SUBTRACT, + ngraph::helpers::EltwiseTypes::ADD, + ngraph::helpers::EltwiseTypes::MULTIPLY, + ngraph::helpers::EltwiseTypes::SUBTRACT, }; ov::test::Config additional_config = {}; -const auto multiply_params = ::testing::Combine( - ::testing::ValuesIn(ov::test::static_shapes_to_test_representation(inShapesStatic)), - ::testing::ValuesIn(eltwiseOpTypes), - ::testing::ValuesIn(secondaryInputTypes), - ::testing::ValuesIn(opTypes), - ::testing::ValuesIn(netPrecisions), - ::testing::Values(ov::element::undefined), - ::testing::Values(ov::element::undefined), - ::testing::Values(ov::test::utils::DEVICE_TEMPLATE), - ::testing::Values(additional_config)); +const auto multiply_params = + ::testing::Combine(::testing::ValuesIn(ov::test::static_shapes_to_test_representation(inShapesStatic)), + ::testing::ValuesIn(eltwiseOpTypes), + ::testing::ValuesIn(secondaryInputTypes), + ::testing::ValuesIn(opTypes), + ::testing::ValuesIn(netPrecisions), + ::testing::Values(ov::element::undefined), + ::testing::Values(ov::element::undefined), + ::testing::Values(ov::test::utils::DEVICE_TEMPLATE), + ::testing::Values(additional_config)); -const auto multiply_params_dynamic = ::testing::Combine( - ::testing::ValuesIn(inShapesDynamic), - ::testing::ValuesIn(eltwiseOpTypesDynamic), - ::testing::ValuesIn(secondaryInputTypesDynamic), - ::testing::ValuesIn(opTypesDynamic), - ::testing::ValuesIn(netPrecisions), - ::testing::Values(ov::element::undefined), - ::testing::Values(ov::element::undefined), - ::testing::Values(ov::test::utils::DEVICE_TEMPLATE), - ::testing::Values(additional_config)); - -INSTANTIATE_TEST_SUITE_P(smoke_CompareWithRefs_static, EltwiseLayerTest, multiply_params, EltwiseLayerTest::getTestCaseName); -INSTANTIATE_TEST_SUITE_P(smoke_CompareWithRefs_dynamic, EltwiseLayerTest, multiply_params_dynamic, EltwiseLayerTest::getTestCaseName); +const auto multiply_params_dynamic = ::testing::Combine(::testing::ValuesIn(inShapesDynamic), + ::testing::ValuesIn(eltwiseOpTypesDynamic), + ::testing::ValuesIn(secondaryInputTypesDynamic), + ::testing::ValuesIn(opTypesDynamic), + ::testing::ValuesIn(netPrecisions), + ::testing::Values(ov::element::undefined), + ::testing::Values(ov::element::undefined), + ::testing::Values(ov::test::utils::DEVICE_TEMPLATE), + ::testing::Values(additional_config)); +INSTANTIATE_TEST_SUITE_P(smoke_CompareWithRefs_static, + EltwiseLayerTest, + multiply_params, + EltwiseLayerTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_CompareWithRefs_dynamic, + EltwiseLayerTest, + multiply_params_dynamic, + EltwiseLayerTest::getTestCaseName); std::vector> inShapesSingleThread = { - {{1, 2, 3, 4}}, - {{2, 2, 2, 2}}, - {{2, 1, 2, 1, 2, 2}}, + {{1, 2, 3, 4}}, + {{2, 2, 2, 2}}, + {{2, 1, 2, 1, 2, 2}}, }; std::vector eltwiseOpTypesSingleThread = { - ngraph::helpers::EltwiseTypes::ADD, - ngraph::helpers::EltwiseTypes::POWER, + ngraph::helpers::EltwiseTypes::ADD, + ngraph::helpers::EltwiseTypes::POWER, }; -ov::AnyMap additional_config_single_thread = { - {"CPU_THREADS_NUM", "1"} -}; +ov::AnyMap additional_config_single_thread = {{"CPU_THREADS_NUM", "1"}}; -const auto single_thread_params = ::testing::Combine( - ::testing::ValuesIn(ov::test::static_shapes_to_test_representation(inShapesSingleThread)), - ::testing::ValuesIn(eltwiseOpTypesSingleThread), - ::testing::ValuesIn(secondaryInputTypes), - ::testing::ValuesIn(opTypes), - ::testing::ValuesIn(netPrecisions), - ::testing::Values(ov::element::undefined), - ::testing::Values(ov::element::undefined), - ::testing::Values(ov::test::utils::DEVICE_TEMPLATE), - ::testing::Values(additional_config_single_thread)); +const auto single_thread_params = + ::testing::Combine(::testing::ValuesIn(ov::test::static_shapes_to_test_representation(inShapesSingleThread)), + ::testing::ValuesIn(eltwiseOpTypesSingleThread), + ::testing::ValuesIn(secondaryInputTypes), + ::testing::ValuesIn(opTypes), + ::testing::ValuesIn(netPrecisions), + ::testing::Values(ov::element::undefined), + ::testing::Values(ov::element::undefined), + ::testing::Values(ov::test::utils::DEVICE_TEMPLATE), + ::testing::Values(additional_config_single_thread)); INSTANTIATE_TEST_SUITE_P(smoke_SingleThread, EltwiseLayerTest, single_thread_params, EltwiseLayerTest::getTestCaseName); - -} // namespace +} // namespace diff --git a/src/plugins/template/tests/functional/shared_tests_instances/single_layer_tests/reshape.cpp b/src/plugins/template/tests/functional/shared_tests_instances/single_layer_tests/reshape.cpp index 7e2fff0a97f..576490fa79d 100644 --- a/src/plugins/template/tests/functional/shared_tests_instances/single_layer_tests/reshape.cpp +++ b/src/plugins/template/tests/functional/shared_tests_instances/single_layer_tests/reshape.cpp @@ -15,45 +15,45 @@ const std::vector netPrecisions = { InferenceEngine::Precision::FP32, }; -INSTANTIATE_TEST_SUITE_P( - smoke_ReshapeCheckDynBatch, ReshapeLayerTest, - ::testing::Combine( - ::testing::Values(true), ::testing::ValuesIn(netPrecisions), - ::testing::Values(InferenceEngine::Precision::UNSPECIFIED), - ::testing::Values(InferenceEngine::Precision::UNSPECIFIED), - ::testing::Values(InferenceEngine::Layout::ANY), - ::testing::Values(InferenceEngine::Layout::ANY), - ::testing::Values(std::vector({30, 30, 30, 30})), - ::testing::Values(std::vector({30, 30, 30, 30})), - ::testing::Values(ov::test::utils::DEVICE_TEMPLATE), - ::testing::Values(std::map({}))), - ReshapeLayerTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_ReshapeCheckDynBatch, + ReshapeLayerTest, + ::testing::Combine(::testing::Values(true), + ::testing::ValuesIn(netPrecisions), + ::testing::Values(InferenceEngine::Precision::UNSPECIFIED), + ::testing::Values(InferenceEngine::Precision::UNSPECIFIED), + ::testing::Values(InferenceEngine::Layout::ANY), + ::testing::Values(InferenceEngine::Layout::ANY), + ::testing::Values(std::vector({30, 30, 30, 30})), + ::testing::Values(std::vector({30, 30, 30, 30})), + ::testing::Values(ov::test::utils::DEVICE_TEMPLATE), + ::testing::Values(std::map({}))), + ReshapeLayerTest::getTestCaseName); -INSTANTIATE_TEST_SUITE_P( - smoke_ReshapeCheck, ReshapeLayerTest, - ::testing::Combine( - ::testing::Values(true), ::testing::ValuesIn(netPrecisions), - ::testing::Values(InferenceEngine::Precision::UNSPECIFIED), - ::testing::Values(InferenceEngine::Precision::UNSPECIFIED), - ::testing::Values(InferenceEngine::Layout::ANY), - ::testing::Values(InferenceEngine::Layout::ANY), - ::testing::Values(std::vector({10, 10, 10, 10})), - ::testing::Values(std::vector({10, 0, 100})), - ::testing::Values(ov::test::utils::DEVICE_TEMPLATE), - ::testing::Values(std::map({}))), - ReshapeLayerTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_ReshapeCheck, + ReshapeLayerTest, + ::testing::Combine(::testing::Values(true), + ::testing::ValuesIn(netPrecisions), + ::testing::Values(InferenceEngine::Precision::UNSPECIFIED), + ::testing::Values(InferenceEngine::Precision::UNSPECIFIED), + ::testing::Values(InferenceEngine::Layout::ANY), + ::testing::Values(InferenceEngine::Layout::ANY), + ::testing::Values(std::vector({10, 10, 10, 10})), + ::testing::Values(std::vector({10, 0, 100})), + ::testing::Values(ov::test::utils::DEVICE_TEMPLATE), + ::testing::Values(std::map({}))), + ReshapeLayerTest::getTestCaseName); -INSTANTIATE_TEST_SUITE_P( - smoke_ReshapeCheckNegative, ReshapeLayerTest, - ::testing::Combine( - ::testing::Values(true), ::testing::ValuesIn(netPrecisions), - ::testing::Values(InferenceEngine::Precision::UNSPECIFIED), - ::testing::Values(InferenceEngine::Precision::UNSPECIFIED), - ::testing::Values(InferenceEngine::Layout::ANY), - ::testing::Values(InferenceEngine::Layout::ANY), - ::testing::Values(std::vector({10, 10, 10, 10})), - ::testing::Values(std::vector({10, -1, 100})), - ::testing::Values(ov::test::utils::DEVICE_TEMPLATE), - ::testing::Values(std::map({}))), - ReshapeLayerTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_ReshapeCheckNegative, + ReshapeLayerTest, + ::testing::Combine(::testing::Values(true), + ::testing::ValuesIn(netPrecisions), + ::testing::Values(InferenceEngine::Precision::UNSPECIFIED), + ::testing::Values(InferenceEngine::Precision::UNSPECIFIED), + ::testing::Values(InferenceEngine::Layout::ANY), + ::testing::Values(InferenceEngine::Layout::ANY), + ::testing::Values(std::vector({10, 10, 10, 10})), + ::testing::Values(std::vector({10, -1, 100})), + ::testing::Values(ov::test::utils::DEVICE_TEMPLATE), + ::testing::Values(std::map({}))), + ReshapeLayerTest::getTestCaseName); } // namespace diff --git a/src/plugins/template/tests/functional/shared_tests_instances/single_layer_tests/softmax.cpp b/src/plugins/template/tests/functional/shared_tests_instances/single_layer_tests/softmax.cpp index bc97e14db8e..83c03b7a881 100644 --- a/src/plugins/template/tests/functional/shared_tests_instances/single_layer_tests/softmax.cpp +++ b/src/plugins/template/tests/functional/shared_tests_instances/single_layer_tests/softmax.cpp @@ -2,9 +2,10 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "single_layer_tests/softmax.hpp" + #include -#include "single_layer_tests/softmax.hpp" #include "common_test_utils/test_constants.hpp" using namespace ov::test::subgraph; @@ -12,164 +13,140 @@ using namespace ov::test::subgraph; namespace { const std::vector netPrecisions = { - ov::element::f32, - ov::element::f16, + ov::element::f32, + ov::element::f16, }; const std::vector inputStaticShape2D = { - {1, 100}, - {100, 1}, - {10, 10}, + {1, 100}, + {100, 1}, + {10, 10}, }; const std::vector inputDynamicShape2D = { - {{ngraph::Dimension::dynamic(), 10}, {{1, 10}, {2, 10}, {10, 10}}}, - {{ngraph::Dimension(1, 10), 10}, {{1, 10}, {2, 10}, {10, 10}}}, - {{10, ngraph::Dimension::dynamic()}, {{10, 1}, {10, 5}, {10, 10}}}, - {{ngraph::Dimension::dynamic(), ngraph::Dimension::dynamic()}, {{1, 10}, {2, 10}, {10, 10}}} -}; + {{ngraph::Dimension::dynamic(), 10}, {{1, 10}, {2, 10}, {10, 10}}}, + {{ngraph::Dimension(1, 10), 10}, {{1, 10}, {2, 10}, {10, 10}}}, + {{10, ngraph::Dimension::dynamic()}, {{10, 1}, {10, 5}, {10, 10}}}, + {{ngraph::Dimension::dynamic(), ngraph::Dimension::dynamic()}, {{1, 10}, {2, 10}, {10, 10}}}}; -const std::vector axis2D = { - -2, -1, 0, 1 -}; +const std::vector axis2D = {-2, -1, 0, 1}; -const auto params2D_static = testing::Combine( - testing::ValuesIn(netPrecisions), - ::testing::Values(ov::element::undefined), - ::testing::Values(ov::element::undefined), - testing::ValuesIn(ov::test::static_shapes_to_test_representation(inputStaticShape2D)), - testing::ValuesIn(axis2D), - testing::Values(ov::test::utils::DEVICE_TEMPLATE), - testing::Values(ov::AnyMap()) -); +const auto params2D_static = + testing::Combine(testing::ValuesIn(netPrecisions), + ::testing::Values(ov::element::undefined), + ::testing::Values(ov::element::undefined), + testing::ValuesIn(ov::test::static_shapes_to_test_representation(inputStaticShape2D)), + testing::ValuesIn(axis2D), + testing::Values(ov::test::utils::DEVICE_TEMPLATE), + testing::Values(ov::AnyMap())); -const auto params2D_dynamic = testing::Combine( - testing::ValuesIn(netPrecisions), - ::testing::Values(ov::element::undefined), - ::testing::Values(ov::element::undefined), - testing::ValuesIn(inputDynamicShape2D), - testing::ValuesIn(axis2D), - testing::Values(ov::test::utils::DEVICE_TEMPLATE), - testing::Values(ov::AnyMap()) -); +const auto params2D_dynamic = testing::Combine(testing::ValuesIn(netPrecisions), + ::testing::Values(ov::element::undefined), + ::testing::Values(ov::element::undefined), + testing::ValuesIn(inputDynamicShape2D), + testing::ValuesIn(axis2D), + testing::Values(ov::test::utils::DEVICE_TEMPLATE), + testing::Values(ov::AnyMap())); -INSTANTIATE_TEST_SUITE_P( - smoke_SoftMax2D_static, - SoftMax8LayerTest, - params2D_static, - SoftMax8LayerTest::getTestCaseName -); +INSTANTIATE_TEST_SUITE_P(smoke_SoftMax2D_static, + SoftMax8LayerTest, + params2D_static, + SoftMax8LayerTest::getTestCaseName); -INSTANTIATE_TEST_SUITE_P( - smoke_SoftMax2D_dynamic, - SoftMax8LayerTest, - params2D_dynamic, - SoftMax8LayerTest::getTestCaseName -); +INSTANTIATE_TEST_SUITE_P(smoke_SoftMax2D_dynamic, + SoftMax8LayerTest, + params2D_dynamic, + SoftMax8LayerTest::getTestCaseName); const std::vector inputStaticShape4D = { - {1, 100, 1, 1}, - {50, 100, 4, 1}, - {2, 100, 10, 1}, + {1, 100, 1, 1}, + {50, 100, 4, 1}, + {2, 100, 10, 1}, }; const std::vector inputDynamicShape4D = { - {{ngraph::Dimension::dynamic(), 100, ngraph::Dimension(1, 10), 1}, {{1, 100, 1, 1}, {100, 100, 5, 1}}}, - {{ngraph::Dimension::dynamic(), ngraph::Dimension::dynamic(), ngraph::Dimension::dynamic(), ngraph::Dimension::dynamic()}, - {{1, 100, 1, 1}, {50, 100, 4, 1}, {2, 100, 10, 1}}}, + {{ngraph::Dimension::dynamic(), 100, ngraph::Dimension(1, 10), 1}, {{1, 100, 1, 1}, {100, 100, 5, 1}}}, + {{ngraph::Dimension::dynamic(), + ngraph::Dimension::dynamic(), + ngraph::Dimension::dynamic(), + ngraph::Dimension::dynamic()}, + {{1, 100, 1, 1}, {50, 100, 4, 1}, {2, 100, 10, 1}}}, }; const std::vector netPrecisions4D = { - ov::element::f32, + ov::element::f32, }; const std::vector axis4D = {0, 1, 2, 3, -1, -2, -3, -4}; -const auto params4Dstatic = testing::Combine( - testing::ValuesIn(netPrecisions4D), - ::testing::Values(ov::element::undefined), - ::testing::Values(ov::element::undefined), - testing::ValuesIn(ov::test::static_shapes_to_test_representation(inputStaticShape4D)), - testing::ValuesIn(axis4D), - testing::Values(ov::test::utils::DEVICE_TEMPLATE), - testing::Values(ov::AnyMap()) -); +const auto params4Dstatic = + testing::Combine(testing::ValuesIn(netPrecisions4D), + ::testing::Values(ov::element::undefined), + ::testing::Values(ov::element::undefined), + testing::ValuesIn(ov::test::static_shapes_to_test_representation(inputStaticShape4D)), + testing::ValuesIn(axis4D), + testing::Values(ov::test::utils::DEVICE_TEMPLATE), + testing::Values(ov::AnyMap())); -const auto params4Ddynamic = testing::Combine( - testing::ValuesIn(netPrecisions4D), - ::testing::Values(ov::element::undefined), - ::testing::Values(ov::element::undefined), - testing::ValuesIn(inputDynamicShape4D), - testing::ValuesIn(axis4D), - testing::Values(ov::test::utils::DEVICE_TEMPLATE), - testing::Values(ov::AnyMap()) -); +const auto params4Ddynamic = testing::Combine(testing::ValuesIn(netPrecisions4D), + ::testing::Values(ov::element::undefined), + ::testing::Values(ov::element::undefined), + testing::ValuesIn(inputDynamicShape4D), + testing::ValuesIn(axis4D), + testing::Values(ov::test::utils::DEVICE_TEMPLATE), + testing::Values(ov::AnyMap())); -INSTANTIATE_TEST_SUITE_P( - smoke_SoftMax4D_static, - SoftMax8LayerTest, - params4Dstatic, - SoftMax8LayerTest::getTestCaseName -); - -INSTANTIATE_TEST_SUITE_P( - smoke_SoftMax4D_dynamic, - SoftMax8LayerTest, - params4Ddynamic, - SoftMax8LayerTest::getTestCaseName -); +INSTANTIATE_TEST_SUITE_P(smoke_SoftMax4D_static, SoftMax8LayerTest, params4Dstatic, SoftMax8LayerTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_SoftMax4D_dynamic, + SoftMax8LayerTest, + params4Ddynamic, + SoftMax8LayerTest::getTestCaseName); const std::vector inputStaticShape5D = { - {1, 100, 1, 1, 1}, - {50, 100, 4, 1, 1}, - {2, 100, 10, 1, 1}, + {1, 100, 1, 1, 1}, + {50, 100, 4, 1, 1}, + {2, 100, 10, 1, 1}, }; const std::vector inputDynamicShape5D = { - {{ngraph::Dimension::dynamic(), 100, ngraph::Dimension(1, 10), 1, 1}, {{1, 100, 1, 1, 1}, {100, 100, 5, 1, 1}}}, - {{ngraph::Dimension::dynamic(), ngraph::Dimension::dynamic(), ngraph::Dimension::dynamic(), ngraph::Dimension::dynamic(), ngraph::Dimension::dynamic()}, - {{1, 100, 1, 1, 1}, {50, 100, 4, 1, 1}, {2, 100, 10, 1, 1}}}, + {{ngraph::Dimension::dynamic(), 100, ngraph::Dimension(1, 10), 1, 1}, {{1, 100, 1, 1, 1}, {100, 100, 5, 1, 1}}}, + {{ngraph::Dimension::dynamic(), + ngraph::Dimension::dynamic(), + ngraph::Dimension::dynamic(), + ngraph::Dimension::dynamic(), + ngraph::Dimension::dynamic()}, + {{1, 100, 1, 1, 1}, {50, 100, 4, 1, 1}, {2, 100, 10, 1, 1}}}, }; const std::vector netPrecisions5D = { - ov::element::f32, + ov::element::f32, }; const std::vector axis5D = {0, 1, 2, 3, 4, -1, -2, -3, -4, -5}; -const auto params5Dstatic = testing::Combine( - testing::ValuesIn(netPrecisions5D), - ::testing::Values(ov::element::undefined), - ::testing::Values(ov::element::undefined), - testing::ValuesIn(ov::test::static_shapes_to_test_representation(inputStaticShape5D)), - testing::ValuesIn(axis5D), - testing::Values(ov::test::utils::DEVICE_TEMPLATE), - testing::Values(ov::AnyMap()) -); +const auto params5Dstatic = + testing::Combine(testing::ValuesIn(netPrecisions5D), + ::testing::Values(ov::element::undefined), + ::testing::Values(ov::element::undefined), + testing::ValuesIn(ov::test::static_shapes_to_test_representation(inputStaticShape5D)), + testing::ValuesIn(axis5D), + testing::Values(ov::test::utils::DEVICE_TEMPLATE), + testing::Values(ov::AnyMap())); -const auto params5Ddynamic = testing::Combine( - testing::ValuesIn(netPrecisions5D), - ::testing::Values(ov::element::undefined), - ::testing::Values(ov::element::undefined), - testing::ValuesIn(inputDynamicShape5D), - testing::ValuesIn(axis5D), - testing::Values(ov::test::utils::DEVICE_TEMPLATE), - testing::Values(ov::AnyMap()) -); +const auto params5Ddynamic = testing::Combine(testing::ValuesIn(netPrecisions5D), + ::testing::Values(ov::element::undefined), + ::testing::Values(ov::element::undefined), + testing::ValuesIn(inputDynamicShape5D), + testing::ValuesIn(axis5D), + testing::Values(ov::test::utils::DEVICE_TEMPLATE), + testing::Values(ov::AnyMap())); -INSTANTIATE_TEST_SUITE_P( - smoke_SoftMax5D_static, - SoftMax8LayerTest, - params5Dstatic, - SoftMax8LayerTest::getTestCaseName -); +INSTANTIATE_TEST_SUITE_P(smoke_SoftMax5D_static, SoftMax8LayerTest, params5Dstatic, SoftMax8LayerTest::getTestCaseName); -INSTANTIATE_TEST_SUITE_P( - smoke_SoftMax5D_dynamic, - SoftMax8LayerTest, - params5Ddynamic, - SoftMax8LayerTest::getTestCaseName -); +INSTANTIATE_TEST_SUITE_P(smoke_SoftMax5D_dynamic, + SoftMax8LayerTest, + params5Ddynamic, + SoftMax8LayerTest::getTestCaseName); } // namespace diff --git a/src/plugins/template/tests/functional/shared_tests_instances/single_layer_tests/split.cpp b/src/plugins/template/tests/functional/shared_tests_instances/single_layer_tests/split.cpp index 337138773ce..064f1b51502 100644 --- a/src/plugins/template/tests/functional/shared_tests_instances/single_layer_tests/split.cpp +++ b/src/plugins/template/tests/functional/shared_tests_instances/single_layer_tests/split.cpp @@ -2,27 +2,28 @@ // SPDX-License-Identifier: Apache-2.0 // +#include "single_layer_tests/split.hpp" + #include -#include "single_layer_tests/split.hpp" #include "common_test_utils/test_constants.hpp" using namespace LayerTestsDefinitions; namespace { -INSTANTIATE_TEST_SUITE_P(smoke_NumSplitsCheck, SplitLayerTest, - ::testing::Combine( - ::testing::Values(1, 2, 3, 5, 6, 10, 30), - ::testing::Values(0, 1, 2, 3), - ::testing::Values(InferenceEngine::Precision::FP32), - ::testing::Values(InferenceEngine::Precision::UNSPECIFIED), - ::testing::Values(InferenceEngine::Precision::UNSPECIFIED), - ::testing::Values(InferenceEngine::Layout::ANY), - ::testing::Values(InferenceEngine::Layout::ANY), - ::testing::Values(std::vector({30, 30, 30, 30})), - ::testing::Values(std::vector({})), - ::testing::Values(ov::test::utils::DEVICE_TEMPLATE)), - SplitLayerTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_NumSplitsCheck, + SplitLayerTest, + ::testing::Combine(::testing::Values(1, 2, 3, 5, 6, 10, 30), + ::testing::Values(0, 1, 2, 3), + ::testing::Values(InferenceEngine::Precision::FP32), + ::testing::Values(InferenceEngine::Precision::UNSPECIFIED), + ::testing::Values(InferenceEngine::Precision::UNSPECIFIED), + ::testing::Values(InferenceEngine::Layout::ANY), + ::testing::Values(InferenceEngine::Layout::ANY), + ::testing::Values(std::vector({30, 30, 30, 30})), + ::testing::Values(std::vector({})), + ::testing::Values(ov::test::utils::DEVICE_TEMPLATE)), + SplitLayerTest::getTestCaseName); } // namespace diff --git a/src/plugins/template/tests/functional/subgraph_reference/base_reference_cnn_test.cpp b/src/plugins/template/tests/functional/subgraph_reference/base_reference_cnn_test.cpp index df225ad0ca1..3086055af57 100644 --- a/src/plugins/template/tests/functional/subgraph_reference/base_reference_cnn_test.cpp +++ b/src/plugins/template/tests/functional/subgraph_reference/base_reference_cnn_test.cpp @@ -2,22 +2,22 @@ // SPDX-License-Identifier: Apache-2.0 // #include "base_reference_cnn_test.hpp" -#include "functional_test_utils/ov_plugin_cache.hpp" -#include "shared_test_classes/base/layer_test_utils.hpp" #include +#include "functional_test_utils/ov_plugin_cache.hpp" +#include "ie_ngraph_utils.hpp" #include "openvino/core/type/element_type.hpp" #include "openvino/runtime/allocator.hpp" #include "openvino/runtime/tensor.hpp" +#include "shared_test_classes/base/layer_test_utils.hpp" #include "transformations/utils/utils.hpp" -#include "ie_ngraph_utils.hpp" using namespace ov; namespace reference_tests { -ReferenceCNNTest::ReferenceCNNTest(): targetDevice("TEMPLATE") { +ReferenceCNNTest::ReferenceCNNTest() : targetDevice("TEMPLATE") { core = test::utils::PluginCache::get().core(targetDevice); legacy_core = PluginCache::get().ie(targetDevice); } @@ -43,22 +43,25 @@ void ReferenceCNNTest::LoadNetworkLegacy() { auto inputInfo = legacy_network.getInputsInfo(); auto outputInfo = legacy_network.getOutputsInfo(); for (const auto& param : function->get_parameters()) { - inputInfo[param->get_friendly_name()]->setPrecision(InferenceEngine::details::convertPrecision(param->get_element_type())); + inputInfo[param->get_friendly_name()]->setPrecision( + InferenceEngine::details::convertPrecision(param->get_element_type())); } for (const auto& result : function->get_results()) { outputInfo[ov::op::util::create_ie_output_name(result->input_value(0))]->setPrecision( - InferenceEngine::details::convertPrecision(result->get_element_type())); + InferenceEngine::details::convertPrecision(result->get_element_type())); } legacy_exec_network = legacy_core->LoadNetwork(legacy_network, targetDevice); } void ReferenceCNNTest::FillInputs() { const auto& params = function->get_parameters(); - std::default_random_engine random(0); // hard-coded seed to make test results predictable + std::default_random_engine random(0); // hard-coded seed to make test results predictable std::uniform_int_distribution distrib(0, 255); for (const auto& param : params) { auto elem_count = shape_size(param->get_output_tensor(0).get_shape()); - InferenceEngine::TensorDesc d(InferenceEngine::Precision::FP32, param->get_output_tensor(0).get_shape(), InferenceEngine::Layout::NCHW); + InferenceEngine::TensorDesc d(InferenceEngine::Precision::FP32, + param->get_output_tensor(0).get_shape(), + InferenceEngine::Layout::NCHW); auto blob = make_blob_with_precision(d); blob->allocate(); @@ -98,7 +101,6 @@ void ReferenceCNNTest::InferLegacy() { legacy_infer_request.Infer(); } - void ReferenceCNNTest::Validate() { for (const auto& result : function->get_results()) { auto name = ov::op::util::create_ie_output_name(result->input_value(0)); diff --git a/src/plugins/template/tests/functional/subgraph_reference/preprocess.cpp b/src/plugins/template/tests/functional/subgraph_reference/preprocess.cpp index 0b58dc517d8..ea5c3465dbb 100644 --- a/src/plugins/template/tests/functional/subgraph_reference/preprocess.cpp +++ b/src/plugins/template/tests/functional/subgraph_reference/preprocess.cpp @@ -20,7 +20,7 @@ using namespace reference_tests; namespace { struct RefPreprocessParams { - RefPreprocessParams(const std::string& val): name(val) {} + RefPreprocessParams(const std::string& val) : name(val) {} std::function()> function; std::vector inputs; std::vector expected; @@ -52,11 +52,10 @@ public: } }; - TEST_P(ReferencePreprocessTest, CompareWithHardcodedRefs) { Exec(); } -} // namespace +} // namespace static std::shared_ptr create_simple_function(element::Type type, const PartialShape& shape) { auto data1 = std::make_shared(type, shape); @@ -95,11 +94,16 @@ static RefPreprocessParams simple_mean_scale() { res.function = []() { auto f = create_simple_function(element::f32, Shape{1, 3, 2, 2}); auto p = PrePostProcessor(f); - p.input().preprocess().mean(1.f).scale(2.f); p.build(); + p.input().preprocess().mean(1.f).scale(2.f); + p.build(); return f; }; - res.inputs.emplace_back(Shape{1, 3, 2, 2}, element::f32, std::vector{1., 3., 5., 7., 9., 11., 13., 15., 17., 19., 21., 23.}); - res.expected.emplace_back(Shape{1, 3, 2, 2}, element::f32, std::vector{0., 1., 2., 3., 4., 5., 6., 7., 8., 9., 10., 11.}); + res.inputs.emplace_back(Shape{1, 3, 2, 2}, + element::f32, + std::vector{1., 3., 5., 7., 9., 11., 13., 15., 17., 19., 21., 23.}); + res.expected.emplace_back(Shape{1, 3, 2, 2}, + element::f32, + std::vector{0., 1., 2., 3., 4., 5., 6., 7., 8., 9., 10., 11.}); return res; } @@ -108,12 +112,17 @@ static RefPreprocessParams scale_then_mean() { res.function = []() { auto f = create_simple_function(element::f32, Shape{1, 3, 2, 2}); auto p = PrePostProcessor(f); - p.input().preprocess().scale(2.0f).mean(2.0f); p.build(); + p.input().preprocess().scale(2.0f).mean(2.0f); + p.build(); return f; }; - res.inputs.emplace_back(Shape{1, 3, 2, 2}, element::f32, std::vector{2., 4., 6., 8., 10., 12., 14., 16., 18., 20., 100., 200.}); - res.expected.emplace_back(Shape{1, 3, 2, 2}, element::f32, std::vector{-1., 0, 1., 2., 3., 4., 5., 6., 7., 8., 48., 98.}); + res.inputs.emplace_back(Shape{1, 3, 2, 2}, + element::f32, + std::vector{2., 4., 6., 8., 10., 12., 14., 16., 18., 20., 100., 200.}); + res.expected.emplace_back(Shape{1, 3, 2, 2}, + element::f32, + std::vector{-1., 0, 1., 2., 3., 4., 5., 6., 7., 8., 48., 98.}); return res; } @@ -122,13 +131,13 @@ static RefPreprocessParams convert_only() { res.function = []() { auto f = create_simple_function(element::f32, Shape{1, 1, 2, 2}); auto p = PrePostProcessor(f); + p.input().tensor().set_element_type(element::i16); p.input() - .tensor().set_element_type(element::i16); - p.input().preprocess() - .convert_element_type(element::f32) - .scale(3.f) - .convert_element_type(element::u8) - .convert_element_type(element::f32); + .preprocess() + .convert_element_type(element::f32) + .scale(3.f) + .convert_element_type(element::u8) + .convert_element_type(element::f32); p.build(); return f; }; @@ -142,19 +151,17 @@ static RefPreprocessParams convert_element_type_and_scale() { res.function = []() { auto f = create_simple_function(element::u8, Shape{1, 3, 2, 2}); auto p = PrePostProcessor(f); - p.input() - .tensor().set_element_type(element::i16); - p.input().preprocess() - .convert_element_type(element::f32) - .scale(2.f) - .convert_element_type(element::u8); + p.input().tensor().set_element_type(element::i16); + p.input().preprocess().convert_element_type(element::f32).scale(2.f).convert_element_type(element::u8); p.build(); return f; }; - res.inputs.emplace_back(Shape{1, 3, 2, 2}, element::i16, + res.inputs.emplace_back(Shape{1, 3, 2, 2}, + element::i16, std::vector{2, 3, 6, 8, 10, 12, 14, 16, 18, 20, 10000, 200}); - res.expected.emplace_back(Shape{1, 3, 2, 2}, element::u8, + res.expected.emplace_back(Shape{1, 3, 2, 2}, + element::u8, std::vector{1, 1, 3, 4, 5, 6, 7, 8, 9, 10, (uint8_t)5000, 100}); return res; } @@ -164,8 +171,7 @@ static RefPreprocessParams tensor_element_type_and_scale() { res.function = []() { auto f = create_simple_function(element::i8, Shape{1, 3, 1, 1}); auto p = PrePostProcessor(f); - p.input() - .tensor().set_element_type(element::f32); + p.input().tensor().set_element_type(element::f32); p.input().preprocess().scale(2.0f).convert_element_type(element::i8); p.build(); return f; @@ -206,7 +212,7 @@ static RefPreprocessParams test_multiple() { p1.input().preprocess().scale(2.f); p1.input().preprocess().mean({1.f, 2.f, 3.f}); p1.input().preprocess().scale({2.f, 3.f, 4.f}); - p1.input().preprocess().custom([](const Output &node) { + p1.input().preprocess().custom([](const Output& node) { auto abs = std::make_shared(node); abs->set_friendly_name(node.get_node_shared_ptr()->get_friendly_name() + "/abs"); return abs; @@ -227,9 +233,7 @@ static RefPreprocessParams test_2_inputs_basic() { auto f = create_n_inputs(2, element::f32, Shape{1, 3, 1, 1}); auto p = PrePostProcessor(f); p.input(0).preprocess().mean(1.f); - p.input("tensor_input2").preprocess() - .mean(1.f) - .scale(2.0f); + p.input("tensor_input2").preprocess().mean(1.f).scale(2.0f); p.build(); return f; }; @@ -246,8 +250,7 @@ static RefPreprocessParams mean_scale_vector_tensor_layout() { res.function = []() { auto f = create_simple_function(element::f32, PartialShape{1, 3, 2, 1}); auto p = PrePostProcessor(f); - p.input() - .tensor().set_layout("NC??"); + p.input().tensor().set_layout("NC??"); p.input().preprocess().mean({1.f, 2.f, 3.f}).scale({2.f, 3.f, 4.f}); p.build(); return f; @@ -263,8 +266,7 @@ static RefPreprocessParams mean_scale_dynamic_layout() { res.function = []() { auto f = create_simple_function(element::f32, PartialShape{1, 2, 1, 3}); auto p = PrePostProcessor(f); - p.input() - .tensor().set_layout("N...C"); + p.input().tensor().set_layout("N...C"); p.input().preprocess().mean({1.f, 2.f, 3.f}).scale({2.f, 3.f, 4.f}); p.build(); return f; @@ -280,8 +282,7 @@ static RefPreprocessParams resize_to_network_height() { res.function = []() { auto f = create_simple_function(element::f32, PartialShape{1, 2, 1, 1}); auto p = PrePostProcessor(f); - p.input() - .tensor().set_spatial_dynamic_shape(); + p.input().tensor().set_spatial_dynamic_shape(); p.input().preprocess().resize(ResizeAlgorithm::RESIZE_LINEAR); p.input().model().set_layout("NHWC"); p.build(); @@ -297,15 +298,15 @@ static RefPreprocessParams resize_to_network_width() { res.function = []() { auto f = create_simple_function(element::f32, PartialShape{Dimension::dynamic(), 1, 2, 2}); auto p = PrePostProcessor(f); - p.input() - .tensor().set_spatial_dynamic_shape(); + p.input().tensor().set_spatial_dynamic_shape(); p.input().preprocess().resize(ResizeAlgorithm::RESIZE_LINEAR); p.input().model().set_layout("NCHW"); p.build(); return f; }; - res.inputs.emplace_back(element::f32, Shape{1, 1, 2, 6}, std::vector{0., 1., 2., 3., 4., 5., - 0., 1., 2., 3., 4., 5.}); + res.inputs.emplace_back(element::f32, + Shape{1, 1, 2, 6}, + std::vector{0., 1., 2., 3., 4., 5., 0., 1., 2., 3., 4., 5.}); res.expected.emplace_back(Shape{1, 1, 2, 2}, element::f32, std::vector{1., 4., 1., 4.}); return res; } @@ -315,8 +316,7 @@ static RefPreprocessParams resize_from_spatial_dims() { res.function = []() { auto f = create_simple_function(element::f32, PartialShape{Dimension::dynamic(), 1, 1, 1}); auto p = PrePostProcessor(f); - p.input() - .tensor().set_spatial_static_shape(1, 4); + p.input().tensor().set_spatial_static_shape(1, 4); p.input().preprocess().resize(ResizeAlgorithm::RESIZE_CUBIC); p.input().model().set_layout("NCHW"); p.build(); @@ -332,17 +332,13 @@ static RefPreprocessParams resize_i8() { res.function = []() { auto f = create_simple_function(element::i8, PartialShape{1, 3, 1, 1}); auto p = PrePostProcessor(f); - p.input() - .tensor() - .set_spatial_dynamic_shape(); + p.input().tensor().set_spatial_dynamic_shape(); p.input().preprocess().resize(ResizeAlgorithm::RESIZE_LINEAR); p.input().model().set_layout("NCHW"); p.build(); return f; }; - res.inputs.emplace_back(element::i8, Shape{1, 3, 2, 2}, std::vector{0, 0, 0, 0, - 1, 1, 1, 1, - 2, 2, 2, 2}); + res.inputs.emplace_back(element::i8, Shape{1, 3, 2, 2}, std::vector{0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2}); res.expected.emplace_back(Shape{1, 3, 1, 1}, element::i8, std::vector{0, 1, 2}); return res; } @@ -352,8 +348,7 @@ static RefPreprocessParams resize_to_network_width_height() { res.function = []() { auto f = create_simple_function(element::f32, PartialShape{1, 1, 4, 4}); auto p = PrePostProcessor(f); - p.input() - .tensor().set_spatial_static_shape(5, 5); + p.input().tensor().set_spatial_static_shape(5, 5); p.input().preprocess().resize(ResizeAlgorithm::RESIZE_NEAREST); p.input().model().set_layout("...HW"); p.build(); @@ -382,8 +377,7 @@ static RefPreprocessParams resize_to_specified_width_height() { res.function = []() { auto f = create_simple_function(element::f32, PartialShape{1, 1, Dimension::dynamic(), Dimension::dynamic()}); auto p = PrePostProcessor(f); - p.input() - .tensor().set_spatial_dynamic_shape(); + p.input().tensor().set_spatial_dynamic_shape(); p.input().preprocess().resize(ResizeAlgorithm::RESIZE_NEAREST, 4, 4); p.input().model().set_layout("...HW"); p.build(); @@ -419,13 +413,34 @@ static RefPreprocessParams convert_layout_nhwc_to_nchw() { p.build(); return f; }; - res.inputs.emplace_back(Shape{1, 2, 2, 3}, element::u8, std::vector{1, 2, 3, // [H=0, W=0, RGB] - 4, 5, 6, // [H=0, W=1] - 7, 8, 9, // [H=1, W=0] - 10, 11, 12}); // [H=1, W=1] - res.expected.emplace_back(Shape{1, 3, 2, 2}, element::u8, std::vector{1, 4, 7, 10, // R - 2, 5, 8, 11, // G - 3, 6, 9, 12}); // B + res.inputs.emplace_back(Shape{1, 2, 2, 3}, + element::u8, + std::vector{1, + 2, + 3, // [H=0, W=0, RGB] + 4, + 5, + 6, // [H=0, W=1] + 7, + 8, + 9, // [H=1, W=0] + 10, + 11, + 12}); // [H=1, W=1] + res.expected.emplace_back(Shape{1, 3, 2, 2}, + element::u8, + std::vector{1, + 4, + 7, + 10, // R + 2, + 5, + 8, + 11, // G + 3, + 6, + 9, + 12}); // B return res; } @@ -441,13 +456,34 @@ static RefPreprocessParams convert_layout_nhwc_to_nchw_fully_dynamic() { p.build(); return f; }; - res.inputs.emplace_back(element::u8, Shape{1, 2, 2, 3}, std::vector{1, 2, 3, // [H=0, W=0, RGB] - 4, 5, 6, // [H=0, W=1] - 7, 8, 9, // [H=1, W=0] - 10, 11, 12}); // [H=1, W=1] - res.expected.emplace_back(Shape{1, 3, 2, 2}, element::u8, std::vector{1, 4, 7, 10, // R - 2, 5, 8, 11, // G - 3, 6, 9, 12}); // B + res.inputs.emplace_back(element::u8, + Shape{1, 2, 2, 3}, + std::vector{1, + 2, + 3, // [H=0, W=0, RGB] + 4, + 5, + 6, // [H=0, W=1] + 7, + 8, + 9, // [H=1, W=0] + 10, + 11, + 12}); // [H=1, W=1] + res.expected.emplace_back(Shape{1, 3, 2, 2}, + element::u8, + std::vector{1, + 4, + 7, + 10, // R + 2, + 5, + 8, + 11, // G + 3, + 6, + 9, + 12}); // B return res; } @@ -461,13 +497,34 @@ static RefPreprocessParams convert_layout_hwc_to_nchw() { p.build(); return f; }; - res.inputs.emplace_back(Shape{2, 2, 3}, element::u8, std::vector{1, 2, 3, // [H=0, W=0, RGB] - 4, 5, 6, // [H=0, W=1] - 7, 8, 9, // [H=1, W=0] - 10, 11, 12}); // [H=1, W=1] - res.expected.emplace_back(Shape{1, 3, 2, 2}, element::f32, std::vector{1, 4, 7, 10, // R - 2, 5, 8, 11, // G - 3, 6, 9, 12}); // B + res.inputs.emplace_back(Shape{2, 2, 3}, + element::u8, + std::vector{1, + 2, + 3, // [H=0, W=0, RGB] + 4, + 5, + 6, // [H=0, W=1] + 7, + 8, + 9, // [H=1, W=0] + 10, + 11, + 12}); // [H=1, W=1] + res.expected.emplace_back(Shape{1, 3, 2, 2}, + element::f32, + std::vector{1, + 4, + 7, + 10, // R + 2, + 5, + 8, + 11, // G + 3, + 6, + 9, + 12}); // B return res; } @@ -481,13 +538,34 @@ static RefPreprocessParams convert_layout_hwc_to_nchw_fully_dynamic() { p.build(); return f; }; - res.inputs.emplace_back(element::u8, Shape{2, 2, 3}, std::vector{1, 2, 3, // [H=0, W=0, RGB] - 4, 5, 6, // [H=0, W=1] - 7, 8, 9, // [H=1, W=0] - 10, 11, 12}); // [H=1, W=1] - res.expected.emplace_back(Shape{1, 3, 2, 2}, element::f32, std::vector{1, 4, 7, 10, // R - 2, 5, 8, 11, // G - 3, 6, 9, 12}); // B + res.inputs.emplace_back(element::u8, + Shape{2, 2, 3}, + std::vector{1, + 2, + 3, // [H=0, W=0, RGB] + 4, + 5, + 6, // [H=0, W=1] + 7, + 8, + 9, // [H=1, W=0] + 10, + 11, + 12}); // [H=1, W=1] + res.expected.emplace_back(Shape{1, 3, 2, 2}, + element::f32, + std::vector{1, + 4, + 7, + 10, // R + 2, + 5, + 8, + 11, // G + 3, + 6, + 9, + 12}); // B return res; } @@ -502,13 +580,34 @@ static RefPreprocessParams convert_layout_nhwc_to_net_no_tensor_shape() { p.build(); return f; }; - res.inputs.emplace_back(Shape{1, 2, 2, 3}, element::u8, std::vector{1, 2, 3, // [H=0, W=0, RGB] - 4, 5, 6, // [H=0, W=1] - 7, 8, 9, // [H=1, W=0] - 10, 11, 12}); // [H=1, W=1] - res.expected.emplace_back(Shape{1, 3, 2, 2}, element::u8, std::vector{1, 4, 7, 10, // R - 2, 5, 8, 11, // G - 3, 6, 9, 12}); // B + res.inputs.emplace_back(Shape{1, 2, 2, 3}, + element::u8, + std::vector{1, + 2, + 3, // [H=0, W=0, RGB] + 4, + 5, + 6, // [H=0, W=1] + 7, + 8, + 9, // [H=1, W=0] + 10, + 11, + 12}); // [H=1, W=1] + res.expected.emplace_back(Shape{1, 3, 2, 2}, + element::u8, + std::vector{1, + 4, + 7, + 10, // R + 2, + 5, + 8, + 11, // G + 3, + 6, + 9, + 12}); // B return res; } @@ -521,13 +620,34 @@ static RefPreprocessParams convert_layout_by_dims() { p.build(); return f; }; - res.inputs.emplace_back(Shape{1, 2, 2, 3}, element::u8, std::vector{1, 2, 3, // [H=0, W=0, RGB] - 4, 5, 6, // [H=0, W=1] - 7, 8, 9, // [H=1, W=0] - 10, 11, 12}); // [H=1, W=1] - res.expected.emplace_back(Shape{1, 3, 2, 2}, element::u8, std::vector{1, 4, 7, 10, // R - 2, 5, 8, 11, // G - 3, 6, 9, 12}); // B + res.inputs.emplace_back(Shape{1, 2, 2, 3}, + element::u8, + std::vector{1, + 2, + 3, // [H=0, W=0, RGB] + 4, + 5, + 6, // [H=0, W=1] + 7, + 8, + 9, // [H=1, W=0] + 10, + 11, + 12}); // [H=1, W=1] + res.expected.emplace_back(Shape{1, 3, 2, 2}, + element::u8, + std::vector{1, + 4, + 7, + 10, // R + 2, + 5, + 8, + 11, // G + 3, + 6, + 9, + 12}); // B return res; } @@ -536,18 +656,41 @@ static RefPreprocessParams convert_layout_by_dims_multi() { res.function = []() { auto f = create_simple_function(element::f32, {1, 3, 2, 2}); auto p = PrePostProcessor(f); - p.input().preprocess().convert_layout({0, 1, 3, 2}) // NHWC->NHCW - .convert_layout({0, 2, 1, 3}); // NHCW->NCHW + p.input() + .preprocess() + .convert_layout({0, 1, 3, 2}) // NHWC->NHCW + .convert_layout({0, 2, 1, 3}); // NHCW->NCHW p.build(); return f; }; - res.inputs.emplace_back(Shape{1, 2, 2, 3}, element::f32, std::vector{1, 2, 3, // [H=0, W=0] - 4, 5, 6, // [H=0, W=1] - 7, 8, 9, // [H=1, W=0] - 10, 11, 12}); // [H=1, W=1] - res.expected.emplace_back(Shape{1, 3, 2, 2}, element::f32, std::vector{1, 4, 7, 10, // R - 2, 5, 8, 11, // G - 3, 6, 9, 12}); // B + res.inputs.emplace_back(Shape{1, 2, 2, 3}, + element::f32, + std::vector{1, + 2, + 3, // [H=0, W=0] + 4, + 5, + 6, // [H=0, W=1] + 7, + 8, + 9, // [H=1, W=0] + 10, + 11, + 12}); // [H=1, W=1] + res.expected.emplace_back(Shape{1, 3, 2, 2}, + element::f32, + std::vector{1, + 4, + 7, + 10, // R + 2, + 5, + 8, + 11, // G + 3, + 6, + 9, + 12}); // B return res; } @@ -557,19 +700,42 @@ static RefPreprocessParams convert_layout_by_dims_multi_layout() { auto f = create_simple_function(element::f32, {1, 3, 2, 2}); auto p = PrePostProcessor(f); p.input().tensor().set_layout("N??C"); - p.input().preprocess().convert_layout({0, 1, 3, 2}) // NHWC->NHCW - .mean({1, 2, 2}) // Apply means to 'C' channel - .convert_layout({0, 2, 1, 3}); // NHCW->NCHW + p.input() + .preprocess() + .convert_layout({0, 1, 3, 2}) // NHWC->NHCW + .mean({1, 2, 2}) // Apply means to 'C' channel + .convert_layout({0, 2, 1, 3}); // NHCW->NCHW p.build(); return f; }; - res.inputs.emplace_back(Shape{1, 2, 2, 3}, element::f32, std::vector{1, 2, 3, // [H=0, W=0, RGB] - 4, 5, 6, // [H=0, W=1] - 7, 8, 9, // [H=1, W=0] - 10, 11, 12}); // [H=1, W=1] - res.expected.emplace_back(Shape{1, 3, 2, 2}, element::f32, std::vector{1-1, 4-1, 7-1, 10-1, // R - 2-2, 5-2, 8-2, 11-2, // G - 3-2, 6-2, 9-2, 12-2}); // B + res.inputs.emplace_back(Shape{1, 2, 2, 3}, + element::f32, + std::vector{1, + 2, + 3, // [H=0, W=0, RGB] + 4, + 5, + 6, // [H=0, W=1] + 7, + 8, + 9, // [H=1, W=0] + 10, + 11, + 12}); // [H=1, W=1] + res.expected.emplace_back(Shape{1, 3, 2, 2}, + element::f32, + std::vector{1 - 1, + 4 - 1, + 7 - 1, + 10 - 1, // R + 2 - 2, + 5 - 2, + 8 - 2, + 11 - 2, // G + 3 - 2, + 6 - 2, + 9 - 2, + 12 - 2}); // B return res; } @@ -578,13 +744,8 @@ static RefPreprocessParams resize_and_convert_layout() { res.function = []() { auto f = create_simple_function(element::f32, PartialShape{1, 2, 2, 2}); auto p = PrePostProcessor(f); - p.input() - .tensor() - .set_layout("NCHW") - .set_spatial_dynamic_shape(); - p.input().preprocess() - .resize(ResizeAlgorithm::RESIZE_LINEAR) - .convert_layout(); + p.input().tensor().set_layout("NCHW").set_spatial_dynamic_shape(); + p.input().preprocess().resize(ResizeAlgorithm::RESIZE_LINEAR).convert_layout(); p.input().model().set_layout("NHWC"); p.build(); return f; @@ -611,16 +772,13 @@ static RefPreprocessParams resize_and_convert_layout() { static RefPreprocessParams convert_color_nv12_to_bgr_two_planes() { RefPreprocessParams res("convert_color_nv12_to_bgr_two_planes"); - res.abs_threshold = 1.f; // Allow small color conversion deviations - res.rel_threshold = 1.f; // Ignore relative pixel values comparison (100%) + res.abs_threshold = 1.f; // Allow small color conversion deviations + res.rel_threshold = 1.f; // Ignore relative pixel values comparison (100%) res.function = []() { auto f = create_simple_function(element::u8, PartialShape{1, 4, 4, 3}); auto p = PrePostProcessor(f); - p.input() - .tensor() - .set_color_format(ColorFormat::NV12_TWO_PLANES); - p.input().preprocess() - .convert_color(ColorFormat::BGR); + p.input().tensor().set_color_format(ColorFormat::NV12_TWO_PLANES); + p.input().preprocess().convert_color(ColorFormat::BGR); p.build(); return f; }; @@ -650,16 +808,13 @@ static RefPreprocessParams convert_color_nv12_to_bgr_two_planes() { static RefPreprocessParams convert_color_nv12_single_plane() { RefPreprocessParams res("convert_color_nv12_single_plane"); - res.abs_threshold = 1.f; // Allow small color conversion deviations - res.rel_threshold = 1.f; // Ignore relative pixel values comparison (100%) + res.abs_threshold = 1.f; // Allow small color conversion deviations + res.rel_threshold = 1.f; // Ignore relative pixel values comparison (100%) res.function = []() { auto f = create_simple_function(element::f32, PartialShape{1, 4, 4, 3}); auto p = PrePostProcessor(f); - p.input() - .tensor() - .set_color_format(ColorFormat::NV12_SINGLE_PLANE); - p.input().preprocess() - .convert_color(ColorFormat::RGB); + p.input().tensor().set_color_format(ColorFormat::NV12_SINGLE_PLANE); + p.input().preprocess().convert_color(ColorFormat::RGB); p.build(); return f; }; @@ -685,21 +840,22 @@ static RefPreprocessParams convert_color_nv12_single_plane() { static RefPreprocessParams convert_color_nv12_layout_resize() { RefPreprocessParams res("convert_color_nv12_layout_resize"); - res.abs_threshold = 1.f; // Allow small color conversion deviations - res.rel_threshold = 1.f; // Ignore relative pixel values comparison (100%) + res.abs_threshold = 1.f; // Allow small color conversion deviations + res.rel_threshold = 1.f; // Ignore relative pixel values comparison (100%) res.function = []() { auto f = create_simple_function(element::f32, PartialShape{1, 3, 2, 2}); auto p = PrePostProcessor(f); p.input() - .tensor() - .set_color_format(ColorFormat::NV12_SINGLE_PLANE) - .set_element_type(element::u8) - .set_spatial_dynamic_shape(); - p.input().preprocess() - .convert_color(ColorFormat::RGB) - .convert_layout() - .convert_element_type(element::f32) - .resize(ResizeAlgorithm::RESIZE_NEAREST); + .tensor() + .set_color_format(ColorFormat::NV12_SINGLE_PLANE) + .set_element_type(element::u8) + .set_spatial_dynamic_shape(); + p.input() + .preprocess() + .convert_color(ColorFormat::RGB) + .convert_layout() + .convert_element_type(element::f32) + .resize(ResizeAlgorithm::RESIZE_NEAREST); p.input().model().set_layout("NCHW"); p.build(); return f; @@ -725,18 +881,13 @@ static RefPreprocessParams convert_color_nv12_layout_resize() { static RefPreprocessParams element_type_before_convert_color_nv12() { RefPreprocessParams res("element_type_before_convert_color_nv12"); - res.abs_threshold = 1.f; // Allow small color conversion deviations - res.rel_threshold = 1.f; // Ignore relative pixel values comparison (100%) + res.abs_threshold = 1.f; // Allow small color conversion deviations + res.rel_threshold = 1.f; // Ignore relative pixel values comparison (100%) res.function = []() { auto f = create_simple_function(element::f32, PartialShape{1, 2, 2, 3}); auto p = PrePostProcessor(f); - p.input() - .tensor() - .set_element_type(element::u8) - .set_color_format(ColorFormat::NV12_TWO_PLANES); - p.input().preprocess() - .convert_element_type(element::f32) - .convert_color(ColorFormat::RGB); + p.input().tensor().set_element_type(element::u8).set_color_format(ColorFormat::NV12_TWO_PLANES); + p.input().preprocess().convert_element_type(element::f32).convert_color(ColorFormat::RGB); p.input().model().set_layout("NHWC"); p.build(); return f; @@ -758,8 +909,8 @@ static RefPreprocessParams element_type_before_convert_color_nv12() { static RefPreprocessParams convert_color_i420_to_bgr_three_planes() { RefPreprocessParams res("convert_color_i420_to_bgr_three_planes"); - res.abs_threshold = 1.f; // Allow small color conversion deviations - res.rel_threshold = 1.f; // Ignore relative pixel values comparison (100%) + res.abs_threshold = 1.f; // Allow small color conversion deviations + res.rel_threshold = 1.f; // Ignore relative pixel values comparison (100%) res.function = []() { auto f = create_simple_function(element::u8, PartialShape{1, 4, 4, 3}); auto p = PrePostProcessor(f); @@ -798,8 +949,8 @@ static RefPreprocessParams convert_color_i420_to_bgr_three_planes() { static RefPreprocessParams convert_color_i420_single_plane() { RefPreprocessParams res("convert_color_i420_single_plane"); - res.abs_threshold = 1.f; // Allow small color conversion deviations - res.rel_threshold = 1.f; // Ignore relative pixel values comparison (100%) + res.abs_threshold = 1.f; // Allow small color conversion deviations + res.rel_threshold = 1.f; // Ignore relative pixel values comparison (100%) res.function = []() { auto f = create_simple_function(element::f32, PartialShape{1, 4, 4, 3}); auto p = PrePostProcessor(f); @@ -850,10 +1001,10 @@ static RefPreprocessParams set_shape_custom_crop() { std::vector input_values(shape_size(input_shape)); std::iota(input_values.begin(), input_values.end(), 0.f); res.inputs.emplace_back(element::f32, input_shape, input_values); - res.expected.emplace_back(Shape{2, 2, 2, 2}, element::f32, std::vector{ 85, 86, 89, 90, - 101, 102, 105, 106, - 149, 150, 153, 154, - 165, 166, 169, 170}); + res.expected.emplace_back( + Shape{2, 2, 2, 2}, + element::f32, + std::vector{85, 86, 89, 90, 101, 102, 105, 106, 149, 150, 153, 154, 165, 166, 169, 170}); return res; } @@ -871,11 +1022,8 @@ static RefPreprocessParams set_shape_with_resize() { auto input_size = 1 * 2 * 2 * 3; std::vector input_values(input_size); std::iota(input_values.begin(), input_values.end(), 0.f); - res.inputs.emplace_back(element::f32, Shape{1, 2, 2, 3}, std::vector {1, 2, 3, - 1, 2, 3, - 1, 2, 3, - 1, 2, 3}); - res.expected.emplace_back(Shape{1, 3, 1, 1}, element::f32, std::vector{ 1, 2, 3}); + res.inputs.emplace_back(element::f32, Shape{1, 2, 2, 3}, std::vector{1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3}); + res.expected.emplace_back(Shape{1, 3, 1, 1}, element::f32, std::vector{1, 2, 3}); return res; } @@ -893,10 +1041,10 @@ static RefPreprocessParams preprocess_crop_basic() { std::vector input_values(shape_size(input_shape)); std::iota(input_values.begin(), input_values.end(), 0.f); res.inputs.emplace_back(element::f32, input_shape, input_values); - res.expected.emplace_back(Shape{2, 2, 2, 2}, element::f32, std::vector{ 85, 86, 89, 90, - 101, 102, 105, 106, - 149, 150, 153, 154, - 165, 166, 169, 170}); + res.expected.emplace_back( + Shape{2, 2, 2, 2}, + element::f32, + std::vector{85, 86, 89, 90, 101, 102, 105, 106, 149, 150, 153, 154, 165, 166, 169, 170}); return res; } @@ -923,12 +1071,10 @@ static RefPreprocessParams postprocess_2_inputs_basic() { res.function = []() { auto f = create_n_inputs(2, element::f32, Shape{1, 3, 1, 2}); auto p = PrePostProcessor(f); - p.output("tensor_output1") - .model().set_layout("NCHW"); + p.output("tensor_output1").model().set_layout("NCHW"); p.output("tensor_output1").postprocess().convert_layout(); p.output("tensor_output1").tensor().set_layout("NHWC"); - p.output("tensor_output2") - .postprocess().convert_element_type(); + p.output("tensor_output2").postprocess().convert_element_type(); p.output("tensor_output2").tensor().set_element_type(element::u8); p.build(); return f; @@ -945,18 +1091,38 @@ static RefPreprocessParams post_convert_layout_by_dims() { res.function = []() { auto f = create_simple_function(element::u8, {1, 2, 2, 3}); auto p = PrePostProcessor(f); - p.output() - .postprocess().convert_layout({0, 3, 1, 2}); + p.output().postprocess().convert_layout({0, 3, 1, 2}); p.build(); return f; }; - res.inputs.emplace_back(Shape{1, 2, 2, 3}, element::u8, std::vector{1, 2, 3, // [H=0, W=0, RGB] - 4, 5, 6, // [H=0, W=1] - 7, 8, 9, // [H=1, W=0] - 10, 11, 12}); // [H=1, W=1] - res.expected.emplace_back(Shape{1, 3, 2, 2}, element::u8, std::vector{1, 4, 7, 10, // R - 2, 5, 8, 11, // G - 3, 6, 9, 12}); // B + res.inputs.emplace_back(Shape{1, 2, 2, 3}, + element::u8, + std::vector{1, + 2, + 3, // [H=0, W=0, RGB] + 4, + 5, + 6, // [H=0, W=1] + 7, + 8, + 9, // [H=1, W=0] + 10, + 11, + 12}); // [H=1, W=1] + res.expected.emplace_back(Shape{1, 3, 2, 2}, + element::u8, + std::vector{1, + 4, + 7, + 10, // R + 2, + 5, + 8, + 11, // G + 3, + 6, + 9, + 12}); // B return res; } @@ -965,18 +1131,39 @@ static RefPreprocessParams post_convert_layout_by_dims_multi() { res.function = []() { auto f = create_simple_function(element::f32, {1, 2, 2, 3}); auto p = PrePostProcessor(f); - p.output().postprocess().convert_layout({0, 1, 3, 2}); // NHWC->NHCW; - p.output().postprocess().convert_layout({0, 2, 1, 3}); // NHCW->NCHW; + p.output().postprocess().convert_layout({0, 1, 3, 2}); // NHWC->NHCW; + p.output().postprocess().convert_layout({0, 2, 1, 3}); // NHCW->NCHW; p.build(); return f; }; - res.inputs.emplace_back(Shape{1, 2, 2, 3}, element::f32, std::vector{1, 2, 3, // [H=0, W=0] - 4, 5, 6, // [H=0, W=1] - 7, 8, 9, // [H=1, W=0] - 10, 11, 12}); // [H=1, W=1] - res.expected.emplace_back(Shape{1, 3, 2, 2}, element::f32, std::vector{1, 4, 7, 10, // R - 2, 5, 8, 11, // G - 3, 6, 9, 12}); // B + res.inputs.emplace_back(Shape{1, 2, 2, 3}, + element::f32, + std::vector{1, + 2, + 3, // [H=0, W=0] + 4, + 5, + 6, // [H=0, W=1] + 7, + 8, + 9, // [H=1, W=0] + 10, + 11, + 12}); // [H=1, W=1] + res.expected.emplace_back(Shape{1, 3, 2, 2}, + element::f32, + std::vector{1, + 4, + 7, + 10, // R + 2, + 5, + 8, + 11, // G + 3, + 6, + 9, + 12}); // B return res; } @@ -985,16 +1172,13 @@ static RefPreprocessParams pre_and_post_processing() { res.function = []() { auto f = create_n_inputs(2, element::f32, Shape{1, 3, 1, 2}); auto p = PrePostProcessor(f); - p.input(0) - .tensor().set_element_type(element::u8); + p.input(0).tensor().set_element_type(element::u8); p.input(0).preprocess().convert_element_type(element::f32).mean(1.f); p.input(1).preprocess().scale(2.f); - p.output("tensor_output1") - .model().set_layout("NCHW"); + p.output("tensor_output1").model().set_layout("NCHW"); p.output("tensor_output1").postprocess().convert_layout(); p.output("tensor_output1").tensor().set_layout("NHWC"); - p.output("tensor_output2") - .postprocess().convert_element_type(); + p.output("tensor_output2").postprocess().convert_element_type(); p.output("tensor_output2").tensor().set_element_type(element::u8); p.build(); return f; @@ -1056,18 +1240,15 @@ static RefPreprocessParams reverse_channels_nchw() { static RefPreprocessParams color_cut_last_channel() { RefPreprocessParams res("color_cut_last_channel"); - auto input_tensor = reference_tests::Tensor(Shape{1, 2, 2, 4}, element::f32, std::vector{1, 2, 3, 4, - 5, 6, 7, 8, - 3, 4, 5, 6, - 6, 7, 8, 9}); - auto exp_3_channels = reference_tests::Tensor(Shape{1, 2, 2, 3}, element::f32, std::vector{1, 2, 3, - 5, 6, 7, - 3, 4, 5, - 6, 7, 8}); - auto inv_3_channels = reference_tests::Tensor(Shape{1, 2, 2, 3}, element::f32, std::vector{3, 2, 1, - 7, 6, 5, - 5, 4, 3, - 8, 7, 6}); + auto input_tensor = reference_tests::Tensor(Shape{1, 2, 2, 4}, + element::f32, + std::vector{1, 2, 3, 4, 5, 6, 7, 8, 3, 4, 5, 6, 6, 7, 8, 9}); + auto exp_3_channels = reference_tests::Tensor(Shape{1, 2, 2, 3}, + element::f32, + std::vector{1, 2, 3, 5, 6, 7, 3, 4, 5, 6, 7, 8}); + auto inv_3_channels = reference_tests::Tensor(Shape{1, 2, 2, 3}, + element::f32, + std::vector{3, 2, 1, 7, 6, 5, 5, 4, 3, 8, 7, 6}); res.function = []() { auto f = create_n_inputs(4, element::f32, Shape{1, 2, 2, 3}); auto prep = PrePostProcessor(f); @@ -1096,7 +1277,8 @@ static RefPreprocessParams reverse_channels_dyn_layout() { auto f = create_simple_function(element::f32, PartialShape{1, 1, 3, 2}); auto p = PrePostProcessor(f); p.input().tensor().set_color_format(ColorFormat::BGR).set_layout("...CN"); - p.input().preprocess().convert_color(ColorFormat::RGB); p.build(); + p.input().preprocess().convert_color(ColorFormat::RGB); + p.build(); return f; }; @@ -1108,10 +1290,9 @@ static RefPreprocessParams reverse_channels_dyn_layout() { static RefPreprocessParams reverse_dyn_shape() { RefPreprocessParams res("reverse_dyn_shape"); res.function = []() { - auto f = create_simple_function(element::u8, PartialShape{Dimension::dynamic(), - Dimension::dynamic(), - Dimension::dynamic(), - Dimension::dynamic()}); + auto f = create_simple_function( + element::u8, + PartialShape{Dimension::dynamic(), Dimension::dynamic(), Dimension::dynamic(), Dimension::dynamic()}); auto p = PrePostProcessor(f); p.input().tensor().set_layout("NCHW"); p.input().preprocess().reverse_channels(); @@ -1119,18 +1300,21 @@ static RefPreprocessParams reverse_dyn_shape() { return f; }; - res.inputs.emplace_back(element::u8, Shape{2, 2, 1, 3}, std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}); - res.expected.emplace_back(Shape{2, 2, 1, 3}, element::u8, std::vector{4, 5, 6, 1, 2, 3, 10, 11, 12, 7, 8, 9}); + res.inputs.emplace_back(element::u8, + Shape{2, 2, 1, 3}, + std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}); + res.expected.emplace_back(Shape{2, 2, 1, 3}, + element::u8, + std::vector{4, 5, 6, 1, 2, 3, 10, 11, 12, 7, 8, 9}); return res; } static RefPreprocessParams reverse_dyn_channels() { RefPreprocessParams res("reverse_dyn_channels"); res.function = []() { - auto f = create_simple_function(element::u8, PartialShape{Dimension::dynamic(), - 2, - Dimension::dynamic(), - Dimension::dynamic()}); + auto f = + create_simple_function(element::u8, + PartialShape{Dimension::dynamic(), 2, Dimension::dynamic(), Dimension::dynamic()}); auto p = PrePostProcessor(f); p.input().tensor().set_layout("NCHW"); p.input().preprocess().reverse_channels(); @@ -1138,8 +1322,12 @@ static RefPreprocessParams reverse_dyn_channels() { return f; }; - res.inputs.emplace_back(element::u8, Shape{2, 2, 1, 3}, std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}); - res.expected.emplace_back(Shape{2, 2, 1, 3}, element::u8, std::vector{4, 5, 6, 1, 2, 3, 10, 11, 12, 7, 8, 9}); + res.inputs.emplace_back(element::u8, + Shape{2, 2, 1, 3}, + std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}); + res.expected.emplace_back(Shape{2, 2, 1, 3}, + element::u8, + std::vector{4, 5, 6, 1, 2, 3, 10, 11, 12, 7, 8, 9}); return res; } @@ -1154,63 +1342,66 @@ static RefPreprocessParams reverse_fully_dyn_shape() { return f; }; - res.inputs.emplace_back(element::u8, Shape{2, 2, 1, 3}, std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}); - res.expected.emplace_back(Shape{2, 2, 1, 3}, element::u8, std::vector{4, 5, 6, 1, 2, 3, 10, 11, 12, 7, 8, 9}); + res.inputs.emplace_back(element::u8, + Shape{2, 2, 1, 3}, + std::vector{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}); + res.expected.emplace_back(Shape{2, 2, 1, 3}, + element::u8, + std::vector{4, 5, 6, 1, 2, 3, 10, 11, 12, 7, 8, 9}); return res; } std::vector allPreprocessTests() { - return std::vector { - simple_mean_scale(), - scale_then_mean(), - convert_only(), - convert_element_type_and_scale(), - tensor_element_type_and_scale(), - custom_preprocessing(), - test_multiple(), - test_2_inputs_basic(), - mean_scale_vector_tensor_layout(), - mean_scale_dynamic_layout(), - resize_to_network_height(), - resize_to_network_width(), - resize_from_spatial_dims(), - resize_i8(), - resize_to_network_width_height(), - resize_to_specified_width_height(), - convert_layout_nhwc_to_nchw(), - convert_layout_nhwc_to_nchw_fully_dynamic(), - convert_layout_nhwc_to_net_no_tensor_shape(), - convert_layout_by_dims(), - convert_layout_by_dims_multi(), - convert_layout_by_dims_multi_layout(), - convert_layout_hwc_to_nchw(), - convert_layout_hwc_to_nchw_fully_dynamic(), - resize_and_convert_layout(), - convert_color_nv12_to_bgr_two_planes(), - convert_color_nv12_single_plane(), - convert_color_nv12_layout_resize(), - element_type_before_convert_color_nv12(), - convert_color_i420_to_bgr_three_planes(), - convert_color_i420_single_plane(), - preprocess_crop_basic(), - preprocess_crop_2axis_dynamic(), - set_shape_custom_crop(), - set_shape_with_resize(), - postprocess_2_inputs_basic(), - post_convert_layout_by_dims(), - post_convert_layout_by_dims_multi(), - pre_and_post_processing(), - rgb_to_bgr(), - bgr_to_rgb(), - color_cut_last_channel(), - reverse_channels_nchw(), - reverse_channels_dyn_layout(), - reverse_dyn_shape(), - reverse_dyn_channels(), - reverse_fully_dyn_shape() - }; + return std::vector{simple_mean_scale(), + scale_then_mean(), + convert_only(), + convert_element_type_and_scale(), + tensor_element_type_and_scale(), + custom_preprocessing(), + test_multiple(), + test_2_inputs_basic(), + mean_scale_vector_tensor_layout(), + mean_scale_dynamic_layout(), + resize_to_network_height(), + resize_to_network_width(), + resize_from_spatial_dims(), + resize_i8(), + resize_to_network_width_height(), + resize_to_specified_width_height(), + convert_layout_nhwc_to_nchw(), + convert_layout_nhwc_to_nchw_fully_dynamic(), + convert_layout_nhwc_to_net_no_tensor_shape(), + convert_layout_by_dims(), + convert_layout_by_dims_multi(), + convert_layout_by_dims_multi_layout(), + convert_layout_hwc_to_nchw(), + convert_layout_hwc_to_nchw_fully_dynamic(), + resize_and_convert_layout(), + convert_color_nv12_to_bgr_two_planes(), + convert_color_nv12_single_plane(), + convert_color_nv12_layout_resize(), + element_type_before_convert_color_nv12(), + convert_color_i420_to_bgr_three_planes(), + convert_color_i420_single_plane(), + preprocess_crop_basic(), + preprocess_crop_2axis_dynamic(), + set_shape_custom_crop(), + set_shape_with_resize(), + postprocess_2_inputs_basic(), + post_convert_layout_by_dims(), + post_convert_layout_by_dims_multi(), + pre_and_post_processing(), + rgb_to_bgr(), + bgr_to_rgb(), + color_cut_last_channel(), + reverse_channels_nchw(), + reverse_channels_dyn_layout(), + reverse_dyn_shape(), + reverse_dyn_channels(), + reverse_fully_dyn_shape()}; } -INSTANTIATE_TEST_SUITE_P(smoke_Comparison_With_Hardcoded_Refs, ReferencePreprocessTest, +INSTANTIATE_TEST_SUITE_P(smoke_Comparison_With_Hardcoded_Refs, + ReferencePreprocessTest, ::testing::ValuesIn(allPreprocessTests()), ReferencePreprocessTest::getTestCaseName); diff --git a/src/plugins/template/tests/functional/subgraph_reference/preprocess_legacy.cpp b/src/plugins/template/tests/functional/subgraph_reference/preprocess_legacy.cpp index 574b8f618be..a8ba3ea3553 100644 --- a/src/plugins/template/tests/functional/subgraph_reference/preprocess_legacy.cpp +++ b/src/plugins/template/tests/functional/subgraph_reference/preprocess_legacy.cpp @@ -26,7 +26,7 @@ public: } }; -} // namespace +} // namespace static std::shared_ptr create_simple_function(element::Type type, const PartialShape& shape) { auto data1 = std::make_shared(type, shape); @@ -49,7 +49,7 @@ TEST_F(ReferencePreprocessLegacyTest, mean) { auto f2 = create_simple_function(element::f32, Shape{1, 3, 2, 2}); legacy_network = InferenceEngine::CNNNetwork(f2); - auto &preProcess = legacy_network.getInputsInfo().begin()->second->getPreProcess(); + auto& preProcess = legacy_network.getInputsInfo().begin()->second->getPreProcess(); preProcess.init(3); preProcess[0]->meanValue = 1; preProcess[1]->meanValue = 1; @@ -69,7 +69,7 @@ TEST_F(ReferencePreprocessLegacyTest, mean_scale) { auto f2 = create_simple_function(element::f32, Shape{1, 3, 20, 20}); legacy_network = InferenceEngine::CNNNetwork(f2); - auto &preProcess = legacy_network.getInputsInfo().begin()->second->getPreProcess(); + auto& preProcess = legacy_network.getInputsInfo().begin()->second->getPreProcess(); preProcess.init(3); preProcess[0]->meanValue = 0; preProcess[1]->meanValue = 0; @@ -92,7 +92,7 @@ TEST_F(ReferencePreprocessLegacyTest, resize) { p.input().model().set_layout("NCHW"); p.build(); - auto &preProcess = legacy_network.getInputsInfo().begin()->second->getPreProcess(); + auto& preProcess = legacy_network.getInputsInfo().begin()->second->getPreProcess(); preProcess.setResizeAlgorithm(InferenceEngine::ResizeAlgorithm::RESIZE_BILINEAR); Exec(); } @@ -120,7 +120,7 @@ TEST_F(ReferencePreprocessLegacyTest, bgrx_to_bgr) { {1, 4, h, w}, InferenceEngine::Layout::NHWC); legacy_network.getInputsInfo().begin()->second->setLayout(InferenceEngine::NHWC); - auto &preProcess = legacy_network.getInputsInfo().begin()->second->getPreProcess(); + auto& preProcess = legacy_network.getInputsInfo().begin()->second->getPreProcess(); preProcess.setColorFormat(InferenceEngine::ColorFormat::BGRX); legacy_input_blobs["input1"] = InferenceEngine::make_shared_blob(rgbx_plane_desc, rgbx_input.data()); @@ -150,7 +150,7 @@ TEST_F(ReferencePreprocessLegacyTest, rgbx_to_bgr) { {1, 4, h, w}, InferenceEngine::Layout::NHWC); legacy_network.getInputsInfo().begin()->second->setLayout(InferenceEngine::NHWC); - auto &preProcess = legacy_network.getInputsInfo().begin()->second->getPreProcess(); + auto& preProcess = legacy_network.getInputsInfo().begin()->second->getPreProcess(); preProcess.setColorFormat(InferenceEngine::ColorFormat::RGBX); legacy_input_blobs["input1"] = InferenceEngine::make_shared_blob(rgbx_plane_desc, rgbx_input.data()); diff --git a/src/plugins/template/tests/functional/subgraph_reference/preprocess_opencv.cpp b/src/plugins/template/tests/functional/subgraph_reference/preprocess_opencv.cpp index 4aea7d4173c..099cea661b5 100644 --- a/src/plugins/template/tests/functional/subgraph_reference/preprocess_opencv.cpp +++ b/src/plugins/template/tests/functional/subgraph_reference/preprocess_opencv.cpp @@ -4,18 +4,17 @@ #ifdef OPENCV_TEMPLATE_TESTS -#include +# include +# include -#include -#include +# include +# include +# include +# include +# include -#include -#include -#include -#include - -#include "base_reference_test.hpp" -#include "ngraph_functions/builders.hpp" +# include "base_reference_test.hpp" +# include "ngraph_functions/builders.hpp" using namespace ov; using namespace ov::preprocess; @@ -31,8 +30,8 @@ public: /// \brief Test class with counting deviated pixels /// -/// OpenCV contains custom implementation for 8U and 16U (all calculations -/// are done in INTs instead of FLOATs), so deviation in 1 color step +/// OpenCV contains custom implementation for 8U and 16U (all calculations +/// are done in INTs instead of FLOATs), so deviation in 1 color step /// between pixels is expected class PreprocessOpenCVReferenceTest_8U : public PreprocessOpenCVReferenceTest { public: @@ -44,11 +43,13 @@ public: // Less than 2% of deviations with 1 color step. 2% is experimental value // For very precise (acceptable) float calculations - 1.4% deviation with G-API/OpenCV is observed LayerTestsDefinitions::NV12TestUtils::ValidateColors(refOutData[0].data(), - actualOutData[0].data(), refOutData[0].get_size(), 0.02); + actualOutData[0].data(), + refOutData[0].get_size(), + 0.02); } }; -} // namespace +} // namespace static std::shared_ptr create_simple_function(element::Type type, const PartialShape& shape) { auto data1 = std::make_shared(type, shape); @@ -69,12 +70,12 @@ TEST_F(PreprocessOpenCVReferenceTest, convert_rgb_gray_fp32) { auto input_shape = Shape{1, input_height, input_width, 3}; auto model_shape = Shape{1, input_height, input_width, 1}; - auto input_img = std::vector (shape_size(input_shape)); - std::default_random_engine random(0); // hard-coded seed to make test results predictable + auto input_img = std::vector(shape_size(input_shape)); + std::default_random_engine random(0); // hard-coded seed to make test results predictable std::uniform_int_distribution distrib(-5, 300); for (std::size_t i = 0; i < shape_size(input_shape); i++) input_img[i] = static_cast(distrib(random)); - + function = create_simple_function(element::f32, model_shape); inputData.clear(); @@ -84,7 +85,7 @@ TEST_F(PreprocessOpenCVReferenceTest, convert_rgb_gray_fp32) { p.input().preprocess().convert_color(ColorFormat::GRAY); function = p.build(); - const auto ¶m = function->get_parameters()[0]; + const auto& param = function->get_parameters()[0]; inputData.emplace_back(param->get_element_type(), param->get_shape(), input_img.data()); // Calculate reference expected values from OpenCV @@ -102,8 +103,8 @@ TEST_F(PreprocessOpenCVReferenceTest, convert_bgr_gray_fp32) { auto input_shape = Shape{1, input_height, input_width, 3}; auto model_shape = Shape{1, input_height, input_width, 1}; - auto input_img = std::vector (shape_size(input_shape)); - std::default_random_engine random(0); // hard-coded seed to make test results predictable + auto input_img = std::vector(shape_size(input_shape)); + std::default_random_engine random(0); // hard-coded seed to make test results predictable std::uniform_int_distribution distrib(-5, 300); for (std::size_t i = 0; i < shape_size(input_shape); i++) input_img[i] = static_cast(distrib(random)); @@ -117,7 +118,7 @@ TEST_F(PreprocessOpenCVReferenceTest, convert_bgr_gray_fp32) { p.input().preprocess().convert_color(ColorFormat::GRAY); function = p.build(); - const auto ¶m = function->get_parameters()[0]; + const auto& param = function->get_parameters()[0]; inputData.emplace_back(param->get_element_type(), param->get_shape(), input_img.data()); // Calculate reference expected values from OpenCV @@ -136,8 +137,8 @@ TEST_F(PreprocessOpenCVReferenceTest_8U, convert_rgb_gray_u8) { auto input_shape = Shape{1, input_height, input_width, 3}; auto model_shape = Shape{1, input_height, input_width, 1}; - auto input_img = std::vector (shape_size(input_shape)); - std::default_random_engine random(0); // hard-coded seed to make test results predictable + auto input_img = std::vector(shape_size(input_shape)); + std::default_random_engine random(0); // hard-coded seed to make test results predictable std::uniform_int_distribution distrib(0, 255); for (std::size_t i = 0; i < shape_size(input_shape); i++) input_img[i] = static_cast(distrib(random)); @@ -151,7 +152,7 @@ TEST_F(PreprocessOpenCVReferenceTest_8U, convert_rgb_gray_u8) { p.input().preprocess().convert_color(ColorFormat::GRAY); function = p.build(); - const auto ¶m = function->get_parameters()[0]; + const auto& param = function->get_parameters()[0]; inputData.emplace_back(param->get_element_type(), param->get_shape(), input_img.data()); // Calculate reference expected values from OpenCV @@ -169,10 +170,10 @@ TEST_F(PreprocessOpenCVReferenceTest_8U, convert_bgr_gray_u8) { auto input_shape = Shape{1, input_height, input_width, 3}; auto model_shape = Shape{1, input_height, input_width, 1}; - auto input_img = std::vector (shape_size(input_shape)); - std::default_random_engine random(0); // hard-coded seed to make test results predictable + auto input_img = std::vector(shape_size(input_shape)); + std::default_random_engine random(0); // hard-coded seed to make test results predictable std::uniform_int_distribution distrib(0, 255); - for (std::size_t i = 0; i < shape_size(input_shape); i++) + for (std::size_t i = 0; i < shape_size(input_shape); i++) input_img[i] = static_cast(distrib(random)); function = create_simple_function(element::u8, model_shape); @@ -184,7 +185,7 @@ TEST_F(PreprocessOpenCVReferenceTest_8U, convert_bgr_gray_u8) { p.input().preprocess().convert_color(ColorFormat::GRAY); function = p.build(); - const auto ¶m = function->get_parameters()[0]; + const auto& param = function->get_parameters()[0]; inputData.emplace_back(param->get_element_type(), param->get_shape(), input_img.data()); // Calculate reference expected values from OpenCV @@ -198,8 +199,8 @@ TEST_F(PreprocessOpenCVReferenceTest_8U, convert_bgr_gray_u8) { } TEST_F(PreprocessOpenCVReferenceTest_8U, convert_i420_full_color_range) { - size_t height = 64; // 64/2 = 32 values for R - size_t width = 64; // 64/2 = 32 values for G + size_t height = 64; // 64/2 = 32 values for R + size_t width = 64; // 64/2 = 32 values for G int b_step = 5; int b_dim = 255 / b_step + 1; @@ -217,14 +218,12 @@ TEST_F(PreprocessOpenCVReferenceTest_8U, convert_i420_full_color_range) { p.input().preprocess().convert_color(ColorFormat::BGR); function = p.build(); - const auto ¶m = function->get_parameters()[0]; + const auto& param = function->get_parameters()[0]; inputData.emplace_back(param->get_element_type(), param->get_shape(), ov20_input_yuv.data()); // Calculate reference expected values from OpenCV - cv::Mat picYV12 = cv::Mat(static_cast(full_height) * 3 / 2, - static_cast(width), - CV_8UC1, - ov20_input_yuv.data()); + cv::Mat picYV12 = + cv::Mat(static_cast(full_height) * 3 / 2, static_cast(width), CV_8UC1, ov20_input_yuv.data()); cv::Mat picBGR; cv::cvtColor(picYV12, picBGR, CV_YUV2BGR_I420); refOutData.emplace_back(param->get_element_type(), func_shape, picBGR.data); @@ -234,8 +233,8 @@ TEST_F(PreprocessOpenCVReferenceTest_8U, convert_i420_full_color_range) { } TEST_F(PreprocessOpenCVReferenceTest_8U, convert_nv12_full_color_range) { - size_t height = 64; // 64/2 = 32 values for R - size_t width = 64; // 64/2 = 32 values for G + size_t height = 64; // 64/2 = 32 values for R + size_t width = 64; // 64/2 = 32 values for G int b_step = 5; int b_dim = 255 / b_step + 1; @@ -253,14 +252,12 @@ TEST_F(PreprocessOpenCVReferenceTest_8U, convert_nv12_full_color_range) { p.input().preprocess().convert_color(ColorFormat::BGR); function = p.build(); - const auto ¶m = function->get_parameters()[0]; + const auto& param = function->get_parameters()[0]; inputData.emplace_back(param->get_element_type(), param->get_shape(), ov20_input_yuv.data()); // Calculate reference expected values from OpenCV - cv::Mat picYV12 = cv::Mat(static_cast(full_height) * 3 / 2, - static_cast(width), - CV_8UC1, - ov20_input_yuv.data()); + cv::Mat picYV12 = + cv::Mat(static_cast(full_height) * 3 / 2, static_cast(width), CV_8UC1, ov20_input_yuv.data()); cv::Mat picBGR; cv::cvtColor(picYV12, picBGR, CV_YUV2BGR_NV12); refOutData.emplace_back(param->get_element_type(), func_shape, picBGR.data); @@ -270,7 +267,7 @@ TEST_F(PreprocessOpenCVReferenceTest_8U, convert_nv12_full_color_range) { } TEST_F(PreprocessOpenCVReferenceTest_8U, convert_nv12_colored) { - auto input_yuv = std::vector {235, 81, 235, 81, 109, 184}; + auto input_yuv = std::vector{235, 81, 235, 81, 109, 184}; auto func_shape = Shape{1, 2, 2, 3}; function = create_simple_function(element::u8, func_shape); @@ -281,7 +278,7 @@ TEST_F(PreprocessOpenCVReferenceTest_8U, convert_nv12_colored) { p.input().preprocess().convert_color(ColorFormat::BGR); function = p.build(); - const auto ¶m = function->get_parameters()[0]; + const auto& param = function->get_parameters()[0]; inputData.emplace_back(param->get_element_type(), param->get_shape(), input_yuv.data()); // Calculate reference expected values from OpenCV @@ -296,7 +293,7 @@ TEST_F(PreprocessOpenCVReferenceTest_8U, convert_nv12_colored) { TEST_F(PreprocessOpenCVReferenceTest, resize_u8_simple_linear) { auto input_shape = Shape{1, 1, 2, 2}; auto func_shape = Shape{1, 1, 1, 1}; - auto input_img = std::vector {5, 5, 5, 4}; + auto input_img = std::vector{5, 5, 5, 4}; function = create_simple_function(element::u8, func_shape); inputData.clear(); @@ -307,7 +304,7 @@ TEST_F(PreprocessOpenCVReferenceTest, resize_u8_simple_linear) { p.input().model().set_layout("NCHW"); function = p.build(); - const auto ¶m = function->get_parameters()[0]; + const auto& param = function->get_parameters()[0]; inputData.emplace_back(param->get_element_type(), param->get_shape(), input_img.data()); // Calculate reference expected values from OpenCV @@ -326,8 +323,8 @@ TEST_F(PreprocessOpenCVReferenceTest_8U, resize_u8_large_picture_linear) { const size_t func_width = 31; auto input_shape = Shape{1, 1, input_height, input_width}; auto func_shape = Shape{1, 1, func_height, func_width}; - auto input_img = std::vector (shape_size(input_shape)); - std::default_random_engine random(0); // hard-coded seed to make test results predictable + auto input_img = std::vector(shape_size(input_shape)); + std::default_random_engine random(0); // hard-coded seed to make test results predictable std::uniform_int_distribution distrib(0, 255); for (std::size_t i = 0; i < shape_size(input_shape); i++) { auto v = distrib(random); @@ -343,7 +340,7 @@ TEST_F(PreprocessOpenCVReferenceTest_8U, resize_u8_large_picture_linear) { p.input().model().set_layout("NCHW"); function = p.build(); - const auto ¶m = function->get_parameters()[0]; + const auto& param = function->get_parameters()[0]; inputData.emplace_back(param->get_element_type(), param->get_shape(), input_img.data()); // Calculate reference expected values from OpenCV @@ -364,8 +361,8 @@ TEST_F(PreprocessOpenCVReferenceTest, resize_f32_large_picture_linear) { const size_t func_width = 31; auto input_shape = Shape{1, 1, input_height, input_width}; auto func_shape = Shape{1, 1, func_height, func_width}; - auto input_img = std::vector (shape_size(input_shape)); - std::default_random_engine random(0); // hard-coded seed to make test results predictable + auto input_img = std::vector(shape_size(input_shape)); + std::default_random_engine random(0); // hard-coded seed to make test results predictable std::uniform_int_distribution distrib(0, 255); for (std::size_t i = 0; i < shape_size(input_shape); i++) { input_img[i] = static_cast(distrib(random)); @@ -380,7 +377,7 @@ TEST_F(PreprocessOpenCVReferenceTest, resize_f32_large_picture_linear) { p.input().model().set_layout("NCHW"); function = p.build(); - const auto ¶m = function->get_parameters()[0]; + const auto& param = function->get_parameters()[0]; inputData.emplace_back(param->get_element_type(), param->get_shape(), input_img.data()); // Calculate reference expected values from OpenCV @@ -400,7 +397,7 @@ TEST_F(PreprocessOpenCVReferenceTest, DISABLED_resize_f32_large_picture_cubic_sm auto input_shape = Shape{1, 1, input_height, input_width}; auto func_shape = Shape{1, 1, func_height, func_width}; auto element_type = element::f32; - auto input_img = std::vector {1.f, 2.f, 3.f, 4.f, 4.f, 3.f, 2.f, 1.f, 1.f, 2.f, 3.f, 4.f, 4.f, 3.f, 2.f, 1.f}; + auto input_img = std::vector{1.f, 2.f, 3.f, 4.f, 4.f, 3.f, 2.f, 1.f, 1.f, 2.f, 3.f, 4.f, 4.f, 3.f, 2.f, 1.f}; function = create_simple_function(element_type, func_shape); auto p = PrePostProcessor(function); p.input().tensor().set_spatial_static_shape(input_height, input_width); @@ -419,4 +416,4 @@ TEST_F(PreprocessOpenCVReferenceTest, DISABLED_resize_f32_large_picture_cubic_sm Exec(); } -#endif // OPENCV_TEMPLATE_TESTS +#endif // OPENCV_TEMPLATE_TESTS