IVGCVSW-5334 Remove remaining boost::numeric_cast from armnn

 * Floating point casts now use armnn::numeric_cast.
 * Also removed remaining header imports.

Signed-off-by: Matthew Sloyan <matthew.sloyan@arm.com>
Change-Id: I2d37847d67f164fc0a0ae17f34d49ff3d2210c30
diff --git a/src/backends/reference/workloads/ConvImpl.hpp b/src/backends/reference/workloads/ConvImpl.hpp
index d971b8f..d9d8a87 100644
--- a/src/backends/reference/workloads/ConvImpl.hpp
+++ b/src/backends/reference/workloads/ConvImpl.hpp
@@ -15,8 +15,6 @@
 
 #include <armnnUtils/DataLayoutIndexed.hpp>
 
-#include <boost/numeric/conversion/cast.hpp>
-
 #include <cmath>
 #include <limits>
 
diff --git a/src/backends/reference/workloads/Debug.cpp b/src/backends/reference/workloads/Debug.cpp
index aadbc76..df05ad7 100644
--- a/src/backends/reference/workloads/Debug.cpp
+++ b/src/backends/reference/workloads/Debug.cpp
@@ -8,8 +8,6 @@
 #include <BFloat16.hpp>
 #include <Half.hpp>
 
-#include <boost/numeric/conversion/cast.hpp>
-
 #include <algorithm>
 #include <iostream>
 
@@ -53,10 +51,10 @@
     std::cout << "], ";
 
     std::cout << "\"min\": "
-        << boost::numeric_cast<float>(*std::min_element(inputData, inputData + numElements)) << ", ";
+        << static_cast<float>(*std::min_element(inputData, inputData + numElements)) << ", ";
 
     std::cout << "\"max\": "
-        << boost::numeric_cast<float>(*std::max_element(inputData, inputData + numElements)) << ", ";
+        << static_cast<float>(*std::max_element(inputData, inputData + numElements)) << ", ";
 
     std::cout << "\"data\": ";
 
@@ -70,7 +68,7 @@
             }
         }
 
-        std::cout << boost::numeric_cast<float>(inputData[i]);
+        std::cout << static_cast<float>(inputData[i]);
 
         for (unsigned int j = 0; j < numDims; j++)
         {
diff --git a/src/backends/reference/workloads/DetectionPostProcess.cpp b/src/backends/reference/workloads/DetectionPostProcess.cpp
index ce07110..f80f20a 100644
--- a/src/backends/reference/workloads/DetectionPostProcess.cpp
+++ b/src/backends/reference/workloads/DetectionPostProcess.cpp
@@ -8,8 +8,6 @@
 #include <armnn/utility/Assert.hpp>
 #include <armnn/utility/NumericCast.hpp>
 
-#include <boost/numeric/conversion/cast.hpp>
-
 #include <algorithm>
 #include <numeric>
 
@@ -120,7 +118,7 @@
             {
                 unsigned int boxCornorIndex = selectedBoxes[outputIndices[i]] * 4;
                 detectionScores[i] = selectedScores[outputIndices[i]];
-                detectionClasses[i] = boost::numeric_cast<float>(selectedClasses[outputIndices[i]]);
+                detectionClasses[i] = armnn::numeric_cast<float>(selectedClasses[outputIndices[i]]);
                 detectionBoxes[boxIndex] = boxCorners[boxCornorIndex];
                 detectionBoxes[boxIndex + 1] = boxCorners[boxCornorIndex + 1];
                 detectionBoxes[boxIndex + 2] = boxCorners[boxCornorIndex + 2];
@@ -136,7 +134,7 @@
                 detectionBoxes[boxIndex + 3] = 0.0f;
             }
         }
-        numDetections[0] = boost::numeric_cast<float>(numSelected);
+        numDetections[0] = armnn::numeric_cast<float>(numSelected);
 }
 
 void DetectionPostProcess(const TensorInfo& boxEncodingsInfo,
diff --git a/src/backends/reference/workloads/Mean.cpp b/src/backends/reference/workloads/Mean.cpp
index e43a4d5..fe34efe 100644
--- a/src/backends/reference/workloads/Mean.cpp
+++ b/src/backends/reference/workloads/Mean.cpp
@@ -8,8 +8,6 @@
 
 #include <armnn/utility/NumericCast.hpp>
 
-#include <boost/numeric/conversion/cast.hpp>
-
 #include <cmath>
 #include <cstddef>
 #include <functional>
@@ -130,15 +128,15 @@
     for (unsigned int idx = 0; idx < numResolvedAxis; ++idx)
     {
         unsigned int current = inputDims[resolvedAxis[idx]];
-        ARMNN_ASSERT(boost::numeric_cast<float>(current) <
-              (std::numeric_limits<float>::max() / boost::numeric_cast<float>(numElementsInAxis)));
+        ARMNN_ASSERT(armnn::numeric_cast<float>(current) <
+              (std::numeric_limits<float>::max() / armnn::numeric_cast<float>(numElementsInAxis)));
         numElementsInAxis *= current;
     }
     if (numElementsInAxis > 0) {
         for (unsigned int idx = 0; idx < numOutputs; ++idx)
         {
             output[idx];
-            output.Set(tempSum[idx] / boost::numeric_cast<float>(numElementsInAxis));
+            output.Set(tempSum[idx] / armnn::numeric_cast<float>(numElementsInAxis));
         }
     }
 }
diff --git a/src/backends/reference/workloads/Pooling2d.cpp b/src/backends/reference/workloads/Pooling2d.cpp
index be6ff38..c5633e8 100644
--- a/src/backends/reference/workloads/Pooling2d.cpp
+++ b/src/backends/reference/workloads/Pooling2d.cpp
@@ -11,8 +11,6 @@
 #include <armnnUtils/DataLayoutIndexed.hpp>
 #include <armnn/utility/NumericCast.hpp>
 
-#include <boost/numeric/conversion/cast.hpp>
-
 #include <limits>
 #include <algorithm>
 #include <functional>
@@ -208,7 +206,7 @@
                     wend = std::min(wend, widthInput + padRight);
 
                     float result = defaultInitializer;
-                    float poolAreaSize = boost::numeric_cast<float>(height * (wend - wstart));
+                    float poolAreaSize = armnn::numeric_cast<float>(height * (wend - wstart));
 
                     // Special case: when the pooling kernel is over a padding region and the padding
                     //               size is larger or equal to the kernel and the kernel only covers
@@ -248,7 +246,7 @@
                     {
                         // When we exclude the padding, it means we calculate with a smaller
                         // kernel size, so I changed the divisor here.
-                        poolAreaSize = boost::numeric_cast<float>((hend - hstart) * (wend - wstart));
+                        poolAreaSize = armnn::numeric_cast<float>((hend - hstart) * (wend - wstart));
                     }
 
                     for (auto yInput = hstart; yInput < hend; yInput++)
diff --git a/src/backends/reference/workloads/RefFakeQuantizationFloat32Workload.cpp b/src/backends/reference/workloads/RefFakeQuantizationFloat32Workload.cpp
index aca3308..cf355d3 100644
--- a/src/backends/reference/workloads/RefFakeQuantizationFloat32Workload.cpp
+++ b/src/backends/reference/workloads/RefFakeQuantizationFloat32Workload.cpp
@@ -9,7 +9,7 @@
 
 #include "Profiling.hpp"
 
-#include <boost/numeric/conversion/cast.hpp>
+#include <armnn/utility/NumericCast.hpp>
 
 namespace armnn
 {
@@ -17,7 +17,7 @@
 void FakeQuantization(const float* inputData, float* outputData, uint32_t numElements, float min, float max)
 {
     float scale = (max - min) / 255.f;
-    int32_t offset = boost::numeric_cast<int32_t>((-min * 255.f) / (max - min));
+    int32_t offset = armnn::numeric_cast<int32_t>((-min * 255.f) / (max - min));
 
     for (uint32_t i = 0; i < numElements; i++)
     {
diff --git a/src/backends/reference/workloads/Resize.cpp b/src/backends/reference/workloads/Resize.cpp
index 16cdd4a..b8bf1bc 100644
--- a/src/backends/reference/workloads/Resize.cpp
+++ b/src/backends/reference/workloads/Resize.cpp
@@ -7,7 +7,7 @@
 
 #include "TensorBufferArrayView.hpp"
 
-#include <boost/numeric/conversion/cast.hpp>
+#include <armnn/utility/NumericCast.hpp>
 
 #include <cmath>
 #include <algorithm>
@@ -27,7 +27,7 @@
 
 inline double EuclideanDistance(float Xa, float Ya, const unsigned int Xb, const unsigned int Yb)
 {
-    return std::sqrt(pow(Xa - boost::numeric_cast<float>(Xb), 2) + pow(Ya - boost::numeric_cast<float>(Yb), 2));
+    return std::sqrt(pow(Xa - armnn::numeric_cast<float>(Xb), 2) + pow(Ya - armnn::numeric_cast<float>(Yb), 2));
 }
 
 inline float CalculateResizeScale(const unsigned int& InputSize,
@@ -35,8 +35,8 @@
                                   const bool& AlignCorners)
 {
     return (AlignCorners && OutputSize > 1)
-            ?  boost::numeric_cast<float>(InputSize - 1) / boost::numeric_cast<float>(OutputSize - 1)
-            :  boost::numeric_cast<float>(InputSize) / boost::numeric_cast<float>(OutputSize);
+            ?  armnn::numeric_cast<float>(InputSize - 1) / armnn::numeric_cast<float>(OutputSize - 1)
+            :  armnn::numeric_cast<float>(InputSize) / armnn::numeric_cast<float>(OutputSize);
 }
 
 inline float PixelScaler(const unsigned int& Pixel,
diff --git a/src/backends/reference/workloads/Slice.cpp b/src/backends/reference/workloads/Slice.cpp
index e972524..d6836c6 100644
--- a/src/backends/reference/workloads/Slice.cpp
+++ b/src/backends/reference/workloads/Slice.cpp
@@ -8,8 +8,6 @@
 #include <armnn/utility/Assert.hpp>
 #include <armnn/utility/IgnoreUnused.hpp>
 
-#include <boost/numeric/conversion/cast.hpp>
-
 namespace armnn
 {