24.02.1
MinMaxLocation.cpp
Go to the documentation of this file.
1
/*
2
* Copyright (c) 2017 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 src 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 src 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. src NO EVENT SHALL THE
19
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20
* LIABILITY, WHETHER src AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21
* OUT OF OR src CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
22
* SOFTWARE.
23
*/
24
#include "
MinMaxLocation.h
"
25
26
namespace
arm_compute
27
{
28
namespace
test
29
{
30
namespace
validation
31
{
32
namespace
reference
33
{
34
template
<
typename
T>
35
void
compute_min_max
(
const
SimpleTensor<T>
&
src
, T &min, T &max)
36
{
37
// Set min and max to first pixel
38
min =
src
[0];
39
max =
src
[0];
40
41
ARM_COMPUTE_ERROR_ON
(
src
.num_elements() == 0);
42
43
// Look for min and max values
44
for
(
int
i = 1; i <
src
.num_elements(); ++i)
45
{
46
if
(
src
[i] < min)
47
{
48
min =
src
[i];
49
}
50
if
(
src
[i] > max)
51
{
52
max =
src
[i];
53
}
54
}
55
}
56
57
template
<
typename
T>
58
MinMaxLocationValues<T>
min_max_location
(
const
SimpleTensor<T>
&
src
)
59
{
60
MinMaxLocationValues<T>
dst
;
61
62
const
size_t
width =
src
.shape().x();
63
64
compute_min_max<T>(
src
,
dst
.min,
dst
.max);
65
66
Coordinates2D
coord{ 0, 0 };
67
68
for
(
int
i = 0; i <
src
.num_elements(); ++i)
69
{
70
coord.
x
=
static_cast<
int32_t
>
(i % width);
71
coord.y =
static_cast<
int32_t
>
(i / width);
72
73
if
(
src
[i] ==
dst
.min)
74
{
75
dst
.min_loc.push_back(coord);
76
}
77
if
(
src
[i] ==
dst
.max)
78
{
79
dst
.max_loc.push_back(coord);
80
}
81
}
82
83
return
dst
;
84
}
85
86
template
MinMaxLocationValues<uint8_t>
min_max_location
(
const
SimpleTensor<uint8_t>
&
src
);
87
template
MinMaxLocationValues<int16_t>
min_max_location
(
const
SimpleTensor<int16_t>
&
src
);
88
template
MinMaxLocationValues<float>
min_max_location
(
const
SimpleTensor<float>
&
src
);
89
}
// namespace reference
90
}
// namespace validation
91
}
// namespace test
92
}
// namespace arm_compute
arm_compute::test::validation::src
SimpleTensor< float > src
Definition:
DFT.cpp:155
arm_compute::test::validation::reference::compute_min_max
void compute_min_max(const SimpleTensor< T > &src, T &min, T &max)
Definition:
MinMaxLocation.cpp:35
arm_compute::test::validation::dst
auto dst
Definition:
DFT.cpp:170
MinMaxLocation.h
ARM_COMPUTE_ERROR_ON
#define ARM_COMPUTE_ERROR_ON(cond)
If the condition is true then an error message is printed and an exception thrown.
Definition:
Error.h:466
arm_compute::test::validation::reference::min_max_location
MinMaxLocationValues< T > min_max_location(const SimpleTensor< T > &src)
Definition:
MinMaxLocation.cpp:58
arm_compute::Coordinates2D::x
int32_t x
X coordinates.
Definition:
Types.h:386
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
arm_compute::Coordinates2D
Coordinate type.
Definition:
Types.h:384
arm_compute::MinMaxLocationValues
Min and max values and locations.
Definition:
Types.h:35
tests
validation
reference
MinMaxLocation.cpp
Generated on Mon Mar 18 2024 11:32:06 for Compute Library by
1.8.17