blob: 6e68ade1a4fbb2b6c713ad96feaa4db7e6804a7c [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,
12 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager)
13{
14 const unsigned int inputShape[] = { 2, 2 };
15
16 std::vector<float> inputValues
17 {
18 3.0f, 2.0f,
19 1.0f, 1.1f
20 };
21
22 std::vector<float> expectedOutputValues
23 {
24 20.085536923188f, 7.389056098931f,
25 2.718281828459f, 3.004166023946f
26 };
27
28 return ElementwiseUnaryTestHelper<2, ArmnnType>(
29 workloadFactory,
30 memoryManager,
31 armnn::UnaryOperation::Exp,
32 inputShape,
33 inputValues,
34 inputShape,
35 expectedOutputValues);
36}
37
38template<armnn::DataType ArmnnType, typename T>
39LayerTestResult<T, 3> Exp3dTest(
40 armnn::IWorkloadFactory& workloadFactory,
41 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager)
42{
43 const unsigned int inputShape[] = { 3, 1, 2 };
44
45 std::vector<float> inputValues
46 {
47 5.0f, 4.0f,
48 3.0f, 2.0f,
49 1.0f, 1.1f
50 };
51
52 std::vector<float> expectedOutputValues
53 {
54 148.413159102577f, 54.598150033144f,
55 20.085536923188f, 7.389056098931f,
56 2.718281828459f, 3.004166023946f
57 };
58
59 return ElementwiseUnaryTestHelper<3, ArmnnType>(
60 workloadFactory,
61 memoryManager,
62 armnn::UnaryOperation::Exp,
63 inputShape,
64 inputValues,
65 inputShape,
66 expectedOutputValues);
67}
68
69template<armnn::DataType ArmnnType, typename T>
70LayerTestResult<T, 2> ExpZeroTest(
71 armnn::IWorkloadFactory& workloadFactory,
72 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager)
73{
74 const unsigned int inputShape[] = { 1, 2 };
75
76 std::vector<float> inputValues
77 {
78 0.f, 0.f
79 };
80
81 std::vector<float> expectedOutputValues
82 {
83 1.0f, 1.0f
84 };
85
86 return ElementwiseUnaryTestHelper<2, ArmnnType>(
87 workloadFactory,
88 memoryManager,
89 armnn::UnaryOperation::Exp,
90 inputShape,
91 inputValues,
92 inputShape,
93 expectedOutputValues);
94}
95
96template<armnn::DataType ArmnnType, typename T>
97LayerTestResult<T, 2> ExpNegativeTest(
98 armnn::IWorkloadFactory& workloadFactory,
99 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager)
100{
101 const unsigned int inputShape[] = { 1, 2 };
102
103 std::vector<float> inputValues
104 {
105 -5.9f, -5.8f
106 };
107
108 std::vector<float> expectedOutputValues
109 {
110 0.0027394448187683684f, 0.0030275547453758153f,
111 };
112
113 return ElementwiseUnaryTestHelper<2, ArmnnType>(
114 workloadFactory,
115 memoryManager,
116 armnn::UnaryOperation::Exp,
117 inputShape,
118 inputValues,
119 inputShape,
120 expectedOutputValues);
121}
122
123//
124// Explicit template specializations
125//
126
127template LayerTestResult<armnn::ResolveType<armnn::DataType::Float32>, 2>
128Exp2dTest<armnn::DataType::Float32>(
129 armnn::IWorkloadFactory& workloadFactory,
130 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
131
132template LayerTestResult<armnn::ResolveType<armnn::DataType::Float16>, 2>
133Exp2dTest<armnn::DataType::Float16>(
134 armnn::IWorkloadFactory& workloadFactory,
135 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
136
137template LayerTestResult<armnn::ResolveType<armnn::DataType::QAsymmS8>, 2>
138Exp2dTest<armnn::DataType::QAsymmS8>(
139 armnn::IWorkloadFactory& workloadFactory,
140 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
141
142template LayerTestResult<armnn::ResolveType<armnn::DataType::QAsymmU8>, 2>
143Exp2dTest<armnn::DataType::QAsymmU8>(
144 armnn::IWorkloadFactory& workloadFactory,
145 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
146
147template LayerTestResult<armnn::ResolveType<armnn::DataType::QSymmS16>, 2>
148Exp2dTest<armnn::DataType::QSymmS16>(
149 armnn::IWorkloadFactory& workloadFactory,
150 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
151
152template LayerTestResult<armnn::ResolveType<armnn::DataType::Float32>, 3>
153Exp3dTest<armnn::DataType::Float32>(
154 armnn::IWorkloadFactory& workloadFactory,
155 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
156
157template LayerTestResult<armnn::ResolveType<armnn::DataType::Float16>, 3>
158Exp3dTest<armnn::DataType::Float16>(
159 armnn::IWorkloadFactory& workloadFactory,
160 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
161
162template LayerTestResult<armnn::ResolveType<armnn::DataType::QAsymmS8>, 3>
163Exp3dTest<armnn::DataType::QAsymmS8>(
164 armnn::IWorkloadFactory& workloadFactory,
165 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
166
167template LayerTestResult<armnn::ResolveType<armnn::DataType::QAsymmU8>, 3>
168Exp3dTest<armnn::DataType::QAsymmU8>(
169 armnn::IWorkloadFactory& workloadFactory,
170 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
171
172template LayerTestResult<armnn::ResolveType<armnn::DataType::QSymmS16>, 3>
173Exp3dTest<armnn::DataType::QSymmS16>(
174 armnn::IWorkloadFactory& workloadFactory,
175 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
176
177template LayerTestResult<armnn::ResolveType<armnn::DataType::Float32>, 2>
178ExpZeroTest<armnn::DataType::Float32>(
179 armnn::IWorkloadFactory& workloadFactory,
180 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
181
182template LayerTestResult<armnn::ResolveType<armnn::DataType::Float32>, 2>
183ExpNegativeTest<armnn::DataType::Float32>(
184 armnn::IWorkloadFactory& workloadFactory,
185 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);