mirror of
https://github.com/thunderbrewhq/typhoon.git
synced 2025-12-12 02:22:30 +00:00
feat(math): add CMath
This commit is contained in:
parent
62d5c2d355
commit
9bebffa8a1
3 changed files with 94 additions and 0 deletions
6
tempest/Math.hpp
Normal file
6
tempest/Math.hpp
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
#ifndef TEMPEST_MATH_HPP
|
||||
#define TEMPEST_MATH_HPP
|
||||
|
||||
#include "tempest/math/CMath.hpp"
|
||||
|
||||
#endif
|
||||
30
tempest/math/CMath.hpp
Normal file
30
tempest/math/CMath.hpp
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
#ifndef TEMPEST_MATH_C_MATH_HPP
|
||||
#define TEMPEST_MATH_C_MATH_HPP
|
||||
|
||||
#include <cmath>
|
||||
#include <cstdint>
|
||||
#include <storm/Error.hpp>
|
||||
|
||||
class CMath {
|
||||
public:
|
||||
// Static variables
|
||||
static constexpr float PI = 3.1415927f;
|
||||
static constexpr float TWO_PI = 6.2831855f;
|
||||
static constexpr float OO_TWO_PI = 1.0f / TWO_PI;
|
||||
|
||||
// Static functions
|
||||
static uint32_t fuint(float n) {
|
||||
return static_cast<uint32_t>(n);
|
||||
}
|
||||
|
||||
static uint32_t fuint_n(float n) {
|
||||
return static_cast<uint32_t>(n + 0.5f);
|
||||
}
|
||||
|
||||
static float sqrt(float x) {
|
||||
STORM_ASSERT(x >= 0.0f);
|
||||
return ::sqrt(x);
|
||||
}
|
||||
};
|
||||
|
||||
#endif
|
||||
58
test/Math.cpp
Normal file
58
test/Math.cpp
Normal file
|
|
@ -0,0 +1,58 @@
|
|||
#include "tempest/Math.hpp"
|
||||
#include "test/Test.hpp"
|
||||
|
||||
TEST_CASE("CMath::fuint", "[math]") {
|
||||
SECTION("converts 1.0f to 1u") {
|
||||
auto result = CMath::fuint(1.0f);
|
||||
REQUIRE(result == 1u);
|
||||
}
|
||||
|
||||
SECTION("converts 1.5f to 1u") {
|
||||
auto result = CMath::fuint(1.5f);
|
||||
REQUIRE(result == 1u);
|
||||
}
|
||||
|
||||
SECTION("converts 1.999f to 1u") {
|
||||
auto result = CMath::fuint(1.999f);
|
||||
REQUIRE(result == 1u);
|
||||
}
|
||||
|
||||
SECTION("converts 0.0f to 0u") {
|
||||
auto result = CMath::fuint(0.0f);
|
||||
REQUIRE(result == 0u);
|
||||
}
|
||||
}
|
||||
|
||||
TEST_CASE("CMath::fuint_n", "[math]") {
|
||||
SECTION("converts 1.0f to 1u") {
|
||||
auto result = CMath::fuint_n(1.0f);
|
||||
REQUIRE(result == 1u);
|
||||
}
|
||||
|
||||
SECTION("converts 1.5f to 2u") {
|
||||
auto result = CMath::fuint_n(1.5f);
|
||||
REQUIRE(result == 2u);
|
||||
}
|
||||
|
||||
SECTION("converts 1.999f to 2u") {
|
||||
auto result = CMath::fuint_n(1.999f);
|
||||
REQUIRE(result == 2u);
|
||||
}
|
||||
|
||||
SECTION("converts 0.0f to 0u") {
|
||||
auto result = CMath::fuint_n(0.0f);
|
||||
REQUIRE(result == 0u);
|
||||
}
|
||||
}
|
||||
|
||||
TEST_CASE("CMath::sqrt", "[math]") {
|
||||
SECTION("returns the square root of 4.0f") {
|
||||
auto result = CMath::sqrt(4.0f);
|
||||
REQUIRE(result == 2.0f);
|
||||
}
|
||||
|
||||
SECTION("returns the square root of 0.0f") {
|
||||
auto result = CMath::sqrt(0.0f);
|
||||
REQUIRE(result == 0.0f);
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue