blob: 1cc6714e1eb59d14510705446e8c54af61335ba4 [file] [log] [blame]
Sadik Armagan9fabf432020-05-27 13:40:58 +01001//
2// Copyright © 2020 Arm Ltd. All rights reserved.
3// SPDX-License-Identifier: MIT
4//
5
6#include "ExpTestImpl.hpp"
7#include "ElementwiseUnaryTestImpl.hpp"
8
9template<armnn::DataType ArmnnType, typename T>
10LayerTestResult<T, 2> Exp2dTest(
11 armnn::IWorkloadFactory& workloadFactory,
Keith Davis33a626f2020-08-27 15:38:12 +010012 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
13 const armnn::ITensorHandleFactory& tensorHandleFactory)
Sadik Armagan9fabf432020-05-27 13:40:58 +010014{
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 20.085536923188f, 7.389056098931f,
26 2.718281828459f, 3.004166023946f
27 };
28
29 return ElementwiseUnaryTestHelper<2, ArmnnType>(
30 workloadFactory,
31 memoryManager,
32 armnn::UnaryOperation::Exp,
33 inputShape,
34 inputValues,
35 inputShape,
Keith Davis33a626f2020-08-27 15:38:12 +010036 expectedOutputValues,
37 tensorHandleFactory);
Sadik Armagan9fabf432020-05-27 13:40:58 +010038}
39
40template<armnn::DataType ArmnnType, typename T>
41LayerTestResult<T, 3> Exp3dTest(
42 armnn::IWorkloadFactory& workloadFactory,
Keith Davis33a626f2020-08-27 15:38:12 +010043 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
44 const armnn::ITensorHandleFactory& tensorHandleFactory)
Sadik Armagan9fabf432020-05-27 13:40:58 +010045{
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 148.413159102577f, 54.598150033144f,
58 20.085536923188f, 7.389056098931f,
59 2.718281828459f, 3.004166023946f
60 };
61
62 return ElementwiseUnaryTestHelper<3, ArmnnType>(
63 workloadFactory,
64 memoryManager,
65 armnn::UnaryOperation::Exp,
66 inputShape,
67 inputValues,
68 inputShape,
Keith Davis33a626f2020-08-27 15:38:12 +010069 expectedOutputValues,
70 tensorHandleFactory);
Sadik Armagan9fabf432020-05-27 13:40:58 +010071}
72
73template<armnn::DataType ArmnnType, typename T>
74LayerTestResult<T, 2> ExpZeroTest(
75 armnn::IWorkloadFactory& workloadFactory,
Keith Davis33a626f2020-08-27 15:38:12 +010076 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
77 const armnn::ITensorHandleFactory& tensorHandleFactory)
Sadik Armagan9fabf432020-05-27 13:40:58 +010078{
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 1.0f, 1.0f
89 };
90
91 return ElementwiseUnaryTestHelper<2, ArmnnType>(
92 workloadFactory,
93 memoryManager,
94 armnn::UnaryOperation::Exp,
95 inputShape,
96 inputValues,
97 inputShape,
Keith Davis33a626f2020-08-27 15:38:12 +010098 expectedOutputValues,
99 tensorHandleFactory);
Sadik Armagan9fabf432020-05-27 13:40:58 +0100100}
101
102template<armnn::DataType ArmnnType, typename T>
103LayerTestResult<T, 2> ExpNegativeTest(
104 armnn::IWorkloadFactory& workloadFactory,
Keith Davis33a626f2020-08-27 15:38:12 +0100105 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
106 const armnn::ITensorHandleFactory& tensorHandleFactory)
Sadik Armagan9fabf432020-05-27 13:40:58 +0100107{
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.0027394448187683684f, 0.0030275547453758153f,
118 };
119
120 return ElementwiseUnaryTestHelper<2, ArmnnType>(
121 workloadFactory,
122 memoryManager,
123 armnn::UnaryOperation::Exp,
124 inputShape,
125 inputValues,
126 inputShape,
Keith Davis33a626f2020-08-27 15:38:12 +0100127 expectedOutputValues,
128 tensorHandleFactory);
Sadik Armagan9fabf432020-05-27 13:40:58 +0100129}
130
131//
132// Explicit template specializations
133//
134
135template LayerTestResult<armnn::ResolveType<armnn::DataType::Float32>, 2>
136Exp2dTest<armnn::DataType::Float32>(
137 armnn::IWorkloadFactory& workloadFactory,
Keith Davis33a626f2020-08-27 15:38:12 +0100138 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
139 const armnn::ITensorHandleFactory& tensorHandleFactory);
Sadik Armagan9fabf432020-05-27 13:40:58 +0100140
141template LayerTestResult<armnn::ResolveType<armnn::DataType::Float16>, 2>
142Exp2dTest<armnn::DataType::Float16>(
143 armnn::IWorkloadFactory& workloadFactory,
Keith Davis33a626f2020-08-27 15:38:12 +0100144 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
145 const armnn::ITensorHandleFactory& tensorHandleFactory);
Sadik Armagan9fabf432020-05-27 13:40:58 +0100146
147template LayerTestResult<armnn::ResolveType<armnn::DataType::QAsymmS8>, 2>
148Exp2dTest<armnn::DataType::QAsymmS8>(
149 armnn::IWorkloadFactory& workloadFactory,
Keith Davis33a626f2020-08-27 15:38:12 +0100150 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
151 const armnn::ITensorHandleFactory& tensorHandleFactory);
Sadik Armagan9fabf432020-05-27 13:40:58 +0100152
153template LayerTestResult<armnn::ResolveType<armnn::DataType::QAsymmU8>, 2>
154Exp2dTest<armnn::DataType::QAsymmU8>(
155 armnn::IWorkloadFactory& workloadFactory,
Keith Davis33a626f2020-08-27 15:38:12 +0100156 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
157 const armnn::ITensorHandleFactory& tensorHandleFactory);
Sadik Armagan9fabf432020-05-27 13:40:58 +0100158
159template LayerTestResult<armnn::ResolveType<armnn::DataType::QSymmS16>, 2>
160Exp2dTest<armnn::DataType::QSymmS16>(
161 armnn::IWorkloadFactory& workloadFactory,
Keith Davis33a626f2020-08-27 15:38:12 +0100162 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
163 const armnn::ITensorHandleFactory& tensorHandleFactory);
Sadik Armagan9fabf432020-05-27 13:40:58 +0100164
165template LayerTestResult<armnn::ResolveType<armnn::DataType::Float32>, 3>
166Exp3dTest<armnn::DataType::Float32>(
167 armnn::IWorkloadFactory& workloadFactory,
Keith Davis33a626f2020-08-27 15:38:12 +0100168 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
169 const armnn::ITensorHandleFactory& tensorHandleFactory);
Sadik Armagan9fabf432020-05-27 13:40:58 +0100170
171template LayerTestResult<armnn::ResolveType<armnn::DataType::Float16>, 3>
172Exp3dTest<armnn::DataType::Float16>(
173 armnn::IWorkloadFactory& workloadFactory,
Keith Davis33a626f2020-08-27 15:38:12 +0100174 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
175 const armnn::ITensorHandleFactory& tensorHandleFactory);
Sadik Armagan9fabf432020-05-27 13:40:58 +0100176
177template LayerTestResult<armnn::ResolveType<armnn::DataType::QAsymmS8>, 3>
178Exp3dTest<armnn::DataType::QAsymmS8>(
179 armnn::IWorkloadFactory& workloadFactory,
Keith Davis33a626f2020-08-27 15:38:12 +0100180 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
181 const armnn::ITensorHandleFactory& tensorHandleFactory);
Sadik Armagan9fabf432020-05-27 13:40:58 +0100182
183template LayerTestResult<armnn::ResolveType<armnn::DataType::QAsymmU8>, 3>
184Exp3dTest<armnn::DataType::QAsymmU8>(
185 armnn::IWorkloadFactory& workloadFactory,
Keith Davis33a626f2020-08-27 15:38:12 +0100186 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
187 const armnn::ITensorHandleFactory& tensorHandleFactory);
Sadik Armagan9fabf432020-05-27 13:40:58 +0100188
189template LayerTestResult<armnn::ResolveType<armnn::DataType::QSymmS16>, 3>
190Exp3dTest<armnn::DataType::QSymmS16>(
191 armnn::IWorkloadFactory& workloadFactory,
Keith Davis33a626f2020-08-27 15:38:12 +0100192 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
193 const armnn::ITensorHandleFactory& tensorHandleFactory);
Sadik Armagan9fabf432020-05-27 13:40:58 +0100194
195template LayerTestResult<armnn::ResolveType<armnn::DataType::Float32>, 2>
196ExpZeroTest<armnn::DataType::Float32>(
197 armnn::IWorkloadFactory& workloadFactory,
Keith Davis33a626f2020-08-27 15:38:12 +0100198 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
199 const armnn::ITensorHandleFactory& tensorHandleFactory);
Sadik Armagan9fabf432020-05-27 13:40:58 +0100200
201template LayerTestResult<armnn::ResolveType<armnn::DataType::Float32>, 2>
202ExpNegativeTest<armnn::DataType::Float32>(
203 armnn::IWorkloadFactory& workloadFactory,
Keith Davis33a626f2020-08-27 15:38:12 +0100204 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
205 const armnn::ITensorHandleFactory& tensorHandleFactory);