5#include "testing/testing.h"
16TEST(math_half, half_to_float_scalar)
43TEST(math_half, float_to_half_scalar)
45#define HFUN(v) blender::math::float_to_half(v)
65 EXPECT_EQ(
HFUN(std::numeric_limits<float>::infinity()), 31744);
67 EXPECT_EQ(
HFUN(std::numeric_limits<float>::quiet_NaN()), 32256);
77 EXPECT_EQ(
HFUN(-std::numeric_limits<float>::infinity()), 64512);
84 0, 1, 6789, 16383, 16384, 31743, 31744, 32768, 32769, 46765, 54501, 64511, 64512};
86 const float exp[14] = {
93 std::numeric_limits<float>::infinity(),
99 -std::numeric_limits<float>::infinity(),
106 EXPECT_EQ_ARRAY(
exp, dst, 14);
111 const float src[13] = {0.0f,
117 std::numeric_limits<float>::infinity(),
123 -std::numeric_limits<float>::infinity()};
126 0, 1, 6789, 16383, 16384, 31743, 31744, 32768, 32769, 46765, 54501, 64511, 64512, 12345};
131 EXPECT_EQ_ARRAY(
exp, dst, 14);
149TEST(math_half_perf, half_to_float_scalar)
153 for (
int i = 0; i < 100'000'000; i++) {
156 memcpy(&fu, &f,
sizeof(f));
160 printf(
"- FP16->FP32 scalar: %.3fs sum %zu\n", t1 - t0,
sum);
165 const int test_size = 100'000'000;
167 float *dst =
new float[test_size];
168 for (
int i = 0; i < test_size; i++) {
174 for (
int i = 0; i < test_size; i++) {
176 memcpy(&fu, &dst[i],
sizeof(fu));
180 printf(
"- FP16->FP32 array : %.3fs sum %zu\n", t1 - t0,
sum);
198TEST(math_half_perf, float_to_half_scalar)
202 for (
int i = 0; i < 100'000'000; i++) {
203 float f = ((i & 0xFFFF) - 0x8000) + 0.1f;
208 printf(
"- FP32->FP16 scalar: %.3fs sum %u\n", t1 - t0,
sum);
213 const int test_size = 100'000'000;
214 float *src =
new float[test_size];
216 for (
int i = 0; i < test_size; i++) {
217 src[i] = ((i & 0xFFFF) - 0x8000) + 0.1f;
223 for (
int i = 0; i < test_size; i++) {
227 printf(
"- FP32->FP16 array : %.3fs sum %u\n", t1 - t0,
sum);
EXPECT_EQ(BLI_expr_pylike_eval(expr, nullptr, 0, &result), EXPR_PYLIKE_INVALID)
Platform independent time functions.
double BLI_time_now_seconds(void)
static T sum(const btAlignedObjectArray< T > &items)
void float_to_half_array(const float *src, uint16_t *dst, size_t length)
uint16_t float_to_half(float v)
void half_to_float_array(const uint16_t *src, float *dst, size_t length)
float half_to_float(uint16_t v)
TEST(any, DefaultConstructor)