49 lines
1.8 KiB
C++
49 lines
1.8 KiB
C++
// Copyright (C) 2018-2021 Intel Corporation
|
|
// SPDX-License-Identifier: Apache-2.0
|
|
//
|
|
|
|
#include "precision_utils.h"
|
|
|
|
#include <gtest/gtest.h>
|
|
|
|
#include <limits>
|
|
|
|
using namespace InferenceEngine;
|
|
|
|
using PrecisionUtilsTests = ::testing::Test;
|
|
|
|
static constexpr ie_fp16 positiveInf = 0x7C00;
|
|
static constexpr ie_fp16 negativeInf = 0xFC00;
|
|
static constexpr ie_fp16 largestNumber = 0x7BFF;
|
|
static constexpr ie_fp16 lowestNumber = 0xFBFF;
|
|
|
|
TEST_F(PrecisionUtilsTests, FP32ToFP16PositiveInfinity) {
|
|
const auto fp16ConvertedInf = InferenceEngine::PrecisionUtils::f32tof16(std::numeric_limits<float>::infinity());
|
|
ASSERT_EQ(fp16ConvertedInf, positiveInf);
|
|
}
|
|
|
|
TEST_F(PrecisionUtilsTests, FP32ToFP16NegativeInfinity) {
|
|
const auto fp16ConvertedInf = InferenceEngine::PrecisionUtils::f32tof16(-1 * std::numeric_limits<float>::infinity());
|
|
ASSERT_EQ(fp16ConvertedInf, negativeInf);
|
|
}
|
|
|
|
TEST_F(PrecisionUtilsTests, FP16ToFP32PositiveInfinity) {
|
|
const auto fp32ConvertedInf = InferenceEngine::PrecisionUtils::f16tof32(positiveInf);
|
|
ASSERT_EQ(fp32ConvertedInf, std::numeric_limits<float>::infinity());
|
|
}
|
|
|
|
TEST_F(PrecisionUtilsTests, FP16ToFP32NegativeInfinity) {
|
|
const auto fp32ConvertedInf = InferenceEngine::PrecisionUtils::f16tof32(negativeInf);
|
|
ASSERT_EQ(fp32ConvertedInf, -1 * std::numeric_limits<float>::infinity());
|
|
}
|
|
|
|
TEST_F(PrecisionUtilsTests, FP32ToFP16MaximumValue) {
|
|
const auto fp16ConvertedMaxValue = InferenceEngine::PrecisionUtils::f32tof16(std::numeric_limits<float>::max());
|
|
ASSERT_EQ(fp16ConvertedMaxValue, largestNumber);
|
|
}
|
|
|
|
TEST_F(PrecisionUtilsTests, FP32ToFP16LowestValue) {
|
|
const auto fp16ConvertedLowestValue = InferenceEngine::PrecisionUtils::f32tof16(std::numeric_limits<float>::lowest());
|
|
ASSERT_EQ(fp16ConvertedLowestValue, lowestNumber);
|
|
}
|