24.02.1
AbsoluteDifference.cpp
Go to the documentation of this file.
1
/*
2
* Copyright (c) 2017-2020 Arm Limited.
3
*
4
* SPDX-License-Identifier: MIT
5
*
6
* Permission is hereby granted, free of charge, to any person obtaining a copy
7
* of this software and associated documentation files (the "Software"), to
8
* deal in the Software without restriction, including without limitation the
9
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
10
* sell copies of the Software, and to permit persons to whom the Software is
11
* furnished to do so, subject to the following conditions:
12
*
13
* The above copyright notice and this permission notice shall be included in all
14
* copies or substantial portions of the Software.
15
*
16
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
22
* SOFTWARE.
23
*/
24
#include "
AbsoluteDifference.h
"
25
26
#include "
arm_compute/core/Types.h
"
27
#include "
tests/validation/Helpers.h
"
28
29
namespace
arm_compute
30
{
31
namespace
test
32
{
33
namespace
validation
34
{
35
namespace
reference
36
{
37
template
<
typename
T>
38
SimpleTensor<T>
absolute_difference
(
const
SimpleTensor<T>
&src1,
const
SimpleTensor<T>
&src2,
DataType
dst_data_type)
39
{
40
SimpleTensor<T>
result(src1.
shape
(), dst_data_type);
41
42
using
intermediate_type =
typename
common_promoted_signed_type<T>::intermediate_type
;
43
#if defined(_OPENMP)
44
#pragma omp parallel for
45
#endif
/* _OPENMP */
46
for
(
int
i = 0; i < src1.
num_elements
(); ++i)
47
{
48
intermediate_type val = std::abs(
static_cast<
intermediate_type
>
(src1[i]) -
static_cast<
intermediate_type
>
(src2[i]));
49
result[i] = saturate_cast<T>(val);
50
}
51
52
return
result;
53
}
54
55
template
SimpleTensor<uint8_t>
absolute_difference
(
const
SimpleTensor<uint8_t>
&src1,
const
SimpleTensor<uint8_t>
&src2,
DataType
dst_data_type);
56
template
SimpleTensor<int16_t>
absolute_difference
(
const
SimpleTensor<int16_t>
&src1,
const
SimpleTensor<int16_t>
&src2,
DataType
dst_data_type);
57
template
SimpleTensor<int8_t>
absolute_difference
(
const
SimpleTensor<int8_t>
&src1,
const
SimpleTensor<int8_t>
&src2,
DataType
dst_data_type);
58
}
// namespace reference
59
}
// namespace validation
60
}
// namespace test
61
}
// namespace arm_compute
AbsoluteDifference.h
arm_compute::test::common_promoted_signed_type::intermediate_type
typename traits::make_signed_conditional_t< promoted_type >::type intermediate_type
Intermediate type.
Definition:
Utils.h:336
arm_compute::test::validation::reference::absolute_difference
SimpleTensor< T > absolute_difference(const SimpleTensor< T > &src1, const SimpleTensor< T > &src2, DataType dst_data_type)
Definition:
AbsoluteDifference.cpp:38
Types.h
arm_compute::test::SimpleTensor::shape
TensorShape shape() const override
Shape of the tensor.
Definition:
SimpleTensor.h:329
arm_compute::test::SimpleTensor::num_elements
int num_elements() const override
Number of elements of the tensor.
Definition:
SimpleTensor.h:424
arm_compute::test::SimpleTensor
Simple tensor object that stores elements in a consecutive chunk of memory.
Definition:
SimpleTensor.h:58
arm_compute
Copyright (c) 2017-2024 Arm Limited.
Definition:
introduction.dox:24
Helpers.h
arm_compute::DataType
DataType
Available data types.
Definition:
CoreTypes.h:83
tests
validation
reference
AbsoluteDifference.cpp
Generated on Mon Mar 18 2024 11:32:06 for Compute Library by
1.8.17