Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Revise floor #5618

Merged
merged 14 commits into from
May 21, 2021
20 changes: 10 additions & 10 deletions docs/ops/arithmetic/Floor_1.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,31 +2,31 @@

**Versioned name**: *Floor-1*

**Category**: Arithmetic unary operation
**Category**: Arithmetic unary operation

**Short description**: *Floor* performs element-wise floor operation with given tensor.

**Attributes**:
**Detailed description**: For each element from the input tensor calculates corresponding
element in the output tensor with the following formula:

No attributes available.
\f[
a_{i} = floor(a_{i})
\f]

**Attributes**: *Floor* operation has no attributes.

**Inputs**

* **1**: An tensor of type T. **Required.**
* **1**: A tensor of type *T* and arbitrary shape. **Required.**

**Outputs**

* **1**: The result of element-wise floor operation. A tensor of type T.
* **1**: The result of element-wise floor operation. A tensor of type *T*.

**Types**

* *T*: any numeric type.
pszmel marked this conversation as resolved.
Show resolved Hide resolved

*Floor* does the following with the input tensor *a*:

\f[
a_{i} = floor(a_{i})
\f]

**Examples**

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@
'ExperimentalDetectronPriorGridGenerator-6',
'ExperimentalDetectronROIFeatureExtractor-6',
'ExperimentalDetectronTopKROIs-6',
'Floor-1'
'FloorMod-1'
'GRUSequence-5',
'Gather-1',
Expand Down
3 changes: 1 addition & 2 deletions ngraph/core/include/ngraph/op/floor.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,7 @@ namespace ngraph
class NGRAPH_API Floor : public util::UnaryElementwiseArithmetic
{
public:
static constexpr NodeTypeInfo type_info{"Floor", 0};
const NodeTypeInfo& get_type_info() const override { return type_info; }
NGRAPH_RTTI_DECLARATION;
/// \brief Constructs a floor operation.
Floor() = default;
/// \brief Constructs a floor operation.
Expand Down
2 changes: 1 addition & 1 deletion ngraph/core/src/op/floor.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
using namespace std;
using namespace ngraph;

constexpr NodeTypeInfo op::Floor::type_info;
NGRAPH_RTTI_DEFINITION(op::v0::Floor, "Floor", 0, util::UnaryElementwiseArithmetic);

op::Floor::Floor(const Output<Node>& arg)
: UnaryElementwiseArithmetic(arg)
Expand Down
1 change: 1 addition & 0 deletions ngraph/test/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -223,6 +223,7 @@ set(SRC
visitors/op/elu.cpp
visitors/op/extractimagepatches.cpp
visitors/op/fake_quantize.cpp
visitors/op/floor.cpp
visitors/op/gather.cpp
visitors/op/gelu.cpp
visitors/op/grn.cpp
Expand Down
2 changes: 1 addition & 1 deletion ngraph/test/type_prop/unary_ops.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -96,6 +96,6 @@ REGISTER_TYPED_TEST_CASE_P(UnaryOperator,
dynamic_rank_input_shape_3D,
dynamic_rank_input_shape_full);

using Types = ::testing::Types<op::Acos, op::Asin, op::Abs, op::Sqrt, op::Sin, op::Exp>;
using Types = ::testing::Types<op::Acos, op::Asin, op::Abs, op::Sqrt, op::Sin, op::Exp, op::Floor>;

INSTANTIATE_TYPED_TEST_CASE_P(type_prop, UnaryOperator, Types);
26 changes: 26 additions & 0 deletions ngraph/test/visitors/op/floor.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
// Copyright (C) 2018-2021 Intel Corporation
// SPDX-License-Identifier: Apache-2.0
//

#include "gtest/gtest.h"

#include "ngraph/ngraph.hpp"
#include "ngraph/op/util/attr_types.hpp"
#include "ngraph/opsets/opset1.hpp"
#include "util/visitor.hpp"

using namespace std;
using namespace ngraph;
using ngraph::test::NodeBuilder;

TEST(attributes, floor_op)
{
NodeBuilder::get_ops().register_factory<opset1::Floor>();
const auto A = make_shared<op::Parameter>(element::f32, Shape{5, 2});

const auto floor = make_shared<opset1::Floor>(A);
NodeBuilder builder(floor);

const auto expected_attr_count = 0;
EXPECT_EQ(builder.get_value_map_size(), expected_attr_count);
}