blob: be3f6267ae6a186929fcfc90c7f7b78f7cf4515c [file] [log] [blame]
Teresa Charlin50de4fa2021-05-31 18:47:33 +01001//
2// Copyright © 2021 Arm Ltd and Contributors. All rights reserved.
3// SPDX-License-Identifier: MIT
4//
5
6#include "SinTestImpl.hpp"
7#include "ElementwiseUnaryTestImpl.hpp"
8
9template<armnn::DataType ArmnnType, typename T>
10LayerTestResult<T, 2> Sin2dTest(
11 armnn::IWorkloadFactory& workloadFactory,
12 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
13 const armnn::ITensorHandleFactory& tensorHandleFactory)
14{
15 const unsigned int inputShape[] = { 2, 2 };
16
17 std::vector<float> inputValues
18 {
19 3.0f, 2.0f,
20 1.0f, 1.1f
21 };
22
23 std::vector<float> expectedOutputValues
24 {
25 0.14112000806f, 0.90929742682f,
26 0.8414709848f, 0.89120736006f
27 };
28
29 return ElementwiseUnaryTestHelper<2, ArmnnType>(
30 workloadFactory,
31 memoryManager,
32 armnn::UnaryOperation::Sin,
33 inputShape,
34 inputValues,
35 inputShape,
36 expectedOutputValues,
37 tensorHandleFactory);
38}
39
40template<armnn::DataType ArmnnType, typename T>
41LayerTestResult<T, 3> Sin3dTest(
42 armnn::IWorkloadFactory& workloadFactory,
43 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
44 const armnn::ITensorHandleFactory& tensorHandleFactory)
45{
46 const unsigned int inputShape[] = { 3, 1, 2 };
47
48 std::vector<float> inputValues
49 {
50 5.0f, 4.0f,
51 3.0f, 2.0f,
52 1.0f, 1.1f
53 };
54
55 std::vector<float> expectedOutputValues
56 {
57 -0.95892427466f, -0.7568024953f,
58 0.14112000806f, 0.90929742682f,
59 0.8414709848f, 0.89120736006f
60 };
61
62 return ElementwiseUnaryTestHelper<3, ArmnnType>(
63 workloadFactory,
64 memoryManager,
65 armnn::UnaryOperation::Sin,
66 inputShape,
67 inputValues,
68 inputShape,
69 expectedOutputValues,
70 tensorHandleFactory);
71}
72
73template<armnn::DataType ArmnnType, typename T>
74LayerTestResult<T, 2> SinZeroTest(
75 armnn::IWorkloadFactory& workloadFactory,
76 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
77 const armnn::ITensorHandleFactory& tensorHandleFactory)
78{
79 const unsigned int inputShape[] = { 1, 2 };
80
81 std::vector<float> inputValues
82 {
83 0.f, 0.f
84 };
85
86 std::vector<float> expectedOutputValues
87 {
88 0.f, 0.f
89 };
90
91 return ElementwiseUnaryTestHelper<2, ArmnnType>(
92 workloadFactory,
93 memoryManager,
94 armnn::UnaryOperation::Sin,
95 inputShape,
96 inputValues,
97 inputShape,
98 expectedOutputValues,
99 tensorHandleFactory);
100}
101
102template<armnn::DataType ArmnnType, typename T>
103LayerTestResult<T, 2> SinNegativeTest(
104 armnn::IWorkloadFactory& workloadFactory,
105 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
106 const armnn::ITensorHandleFactory& tensorHandleFactory)
107{
108 const unsigned int inputShape[] = { 1, 2 };
109
110 std::vector<float> inputValues
111 {
112 -5.9f, -5.8f
113 };
114
115 std::vector<float> expectedOutputValues
116 {
117 0.37387666483f, 0.46460217941f,
118 };
119
120 return ElementwiseUnaryTestHelper<2, ArmnnType>(
121 workloadFactory,
122 memoryManager,
123 armnn::UnaryOperation::Sin,
124 inputShape,
125 inputValues,
126 inputShape,
127 expectedOutputValues,
128 tensorHandleFactory);
129}
130
131//
132// Sinlicit template specializations
133//
134
135template LayerTestResult<armnn::ResolveType<armnn::DataType::Float32>, 2>
136Sin2dTest<armnn::DataType::Float32>(
137 armnn::IWorkloadFactory& workloadFactory,
138 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
139 const armnn::ITensorHandleFactory& tensorHandleFactory);
140
141template LayerTestResult<armnn::ResolveType<armnn::DataType::Float16>, 2>
142Sin2dTest<armnn::DataType::Float16>(
143 armnn::IWorkloadFactory& workloadFactory,
144 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
145 const armnn::ITensorHandleFactory& tensorHandleFactory);
146
147template LayerTestResult<armnn::ResolveType<armnn::DataType::QAsymmS8>, 2>
148Sin2dTest<armnn::DataType::QAsymmS8>(
149 armnn::IWorkloadFactory& workloadFactory,
150 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
151 const armnn::ITensorHandleFactory& tensorHandleFactory);
152
153template LayerTestResult<armnn::ResolveType<armnn::DataType::QAsymmU8>, 2>
154Sin2dTest<armnn::DataType::QAsymmU8>(
155 armnn::IWorkloadFactory& workloadFactory,
156 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
157 const armnn::ITensorHandleFactory& tensorHandleFactory);
158
159template LayerTestResult<armnn::ResolveType<armnn::DataType::QSymmS16>, 2>
160Sin2dTest<armnn::DataType::QSymmS16>(
161 armnn::IWorkloadFactory& workloadFactory,
162 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
163 const armnn::ITensorHandleFactory& tensorHandleFactory);
164
165template LayerTestResult<armnn::ResolveType<armnn::DataType::Float32>, 3>
166Sin3dTest<armnn::DataType::Float32>(
167 armnn::IWorkloadFactory& workloadFactory,
168 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
169 const armnn::ITensorHandleFactory& tensorHandleFactory);
170
171template LayerTestResult<armnn::ResolveType<armnn::DataType::Float16>, 3>
172Sin3dTest<armnn::DataType::Float16>(
173 armnn::IWorkloadFactory& workloadFactory,
174 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
175 const armnn::ITensorHandleFactory& tensorHandleFactory);
176
177template LayerTestResult<armnn::ResolveType<armnn::DataType::QAsymmS8>, 3>
178Sin3dTest<armnn::DataType::QAsymmS8>(
179 armnn::IWorkloadFactory& workloadFactory,
180 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
181 const armnn::ITensorHandleFactory& tensorHandleFactory);
182
183template LayerTestResult<armnn::ResolveType<armnn::DataType::QAsymmU8>, 3>
184Sin3dTest<armnn::DataType::QAsymmU8>(
185 armnn::IWorkloadFactory& workloadFactory,
186 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
187 const armnn::ITensorHandleFactory& tensorHandleFactory);
188
189template LayerTestResult<armnn::ResolveType<armnn::DataType::QSymmS16>, 3>
190Sin3dTest<armnn::DataType::QSymmS16>(
191 armnn::IWorkloadFactory& workloadFactory,
192 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
193 const armnn::ITensorHandleFactory& tensorHandleFactory);
194
195template LayerTestResult<armnn::ResolveType<armnn::DataType::Float32>, 2>
196SinZeroTest<armnn::DataType::Float32>(
197 armnn::IWorkloadFactory& workloadFactory,
198 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
199 const armnn::ITensorHandleFactory& tensorHandleFactory);
200
201template LayerTestResult<armnn::ResolveType<armnn::DataType::Float32>, 2>
202SinNegativeTest<armnn::DataType::Float32>(
203 armnn::IWorkloadFactory& workloadFactory,
204 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
205 const armnn::ITensorHandleFactory& tensorHandleFactory);