1 /*
2 * Copyright 2021-2022 Alyssa Rosenzweig
3 * SPDX-License-Identifier: MIT
4 */
5
6 #include "agx_test.h"
7
8 #include <gtest/gtest.h>
9
TEST(Minifloat,RepresentativeValues)10 TEST(Minifloat, RepresentativeValues)
11 {
12 EXPECT_EQ(agx_minifloat_decode(0), 0.0f);
13 EXPECT_EQ(agx_minifloat_decode(25), 0.390625f);
14 EXPECT_EQ(agx_minifloat_decode(135), -0.109375f);
15 EXPECT_EQ(agx_minifloat_decode(255), -31.0);
16 }
17
TEST(Minifloat,Exactness)18 TEST(Minifloat, Exactness)
19 {
20 EXPECT_TRUE(agx_minifloat_exact(0.0f));
21 EXPECT_TRUE(agx_minifloat_exact(0.390625f));
22 EXPECT_TRUE(agx_minifloat_exact(-0.109375f));
23 EXPECT_TRUE(agx_minifloat_exact(-31.0));
24 EXPECT_FALSE(agx_minifloat_exact(3.141f));
25 EXPECT_FALSE(agx_minifloat_exact(2.718f));
26 EXPECT_FALSE(agx_minifloat_exact(1.618f));
27 }
28
TEST(Minifloat,AllValuesRoundtrip)29 TEST(Minifloat, AllValuesRoundtrip)
30 {
31 for (unsigned i = 0; i < 0x100; ++i) {
32 float f = agx_minifloat_decode(i);
33 EXPECT_EQ(agx_minifloat_encode(f), i);
34 EXPECT_TRUE(agx_minifloat_exact(f));
35 }
36 }
37