mirror of
https://github.com/HandmadeMath/HandmadeMath.git
synced 2025-12-29 08:04:31 +00:00
Compare commits
18 Commits
general_ma
...
full_inlin
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
e88b625a31 | ||
|
|
9f6ddd6039 | ||
|
|
8c18186b3b | ||
|
|
5f816bf9b3 | ||
|
|
c5bc802042 | ||
|
|
43afc87fa7 | ||
|
|
5bbac2167e | ||
|
|
655c662528 | ||
|
|
1f0c6ba493 | ||
|
|
1d82b4f0bc | ||
|
|
2fa0b36715 | ||
|
|
ad169e649c | ||
|
|
1900cc9275 | ||
|
|
ddb9971e71 | ||
|
|
341a376a17 | ||
|
|
c825fe48cf | ||
|
|
15bef820db | ||
|
|
fe32f081f2 |
1489
HandmadeMath.h
1489
HandmadeMath.h
File diff suppressed because it is too large
Load Diff
11
README.md
11
README.md
@@ -10,8 +10,13 @@ To get started, go download [the latest release](https://github.com/HandmadeMath
|
|||||||
|
|
||||||
Version | Changes |
|
Version | Changes |
|
||||||
----------------|----------------|
|
----------------|----------------|
|
||||||
**1.10.2** | Introduced safe floating point comparison in HMM_EqualsVec2, HMM_EqualsVec3, HMM_EqualsVec4. SIMD'd HMM_EqualsVec4 comparison |
|
|
||||||
**1.10.1** | Removed use of stdint.h, this doesn't exist on some really old compilers and we didn't really use it anyways. |
|
**1.13.0** | Fully inlined HandmadeMath.h. No need for HANDMADE_MATH_IMPLEMENTATION anymore |
|
||||||
|
**1.12.1** | Added extra parentheses around some macros |
|
||||||
|
**1.12.0** | Added Unary Minus operator for `HMM_Vec2`, `HMM_Vec3`, and `HMM_Vec4`. |
|
||||||
|
**1.11.1** | Added HMM_PREFIX macro to a few functions that were missing it. |
|
||||||
|
**1.11.0** | Added ability to customize or remove the default `HMM_` prefix on function names by defining a macro called `HMM_PREFIX(name)`. |
|
||||||
|
**1.10.1** | Removed stdint.h, this doesn't exist on some really old compilers and we didn't really use it anyways. |
|
||||||
**1.10.0** | Made HMM_Perspective use vertical FOV instead of horizontal FOV for consistency with other graphics APIs. |
|
**1.10.0** | Made HMM_Perspective use vertical FOV instead of horizontal FOV for consistency with other graphics APIs. |
|
||||||
**1.9.0** | Added SSE versions of quaternion operations. |
|
**1.9.0** | Added SSE versions of quaternion operations. |
|
||||||
**1.8.0** | Added fast vector normalization routines that use fast inverse square roots.
|
**1.8.0** | Added fast vector normalization routines that use fast inverse square roots.
|
||||||
@@ -37,7 +42,7 @@ Version | Changes |
|
|||||||
**0.5** | Added scalar operations on vectors and matrices, added += and -= for hmm_mat4, reconciled headers and implementations, tidied up in general |
|
**0.5** | Added scalar operations on vectors and matrices, added += and -= for hmm_mat4, reconciled headers and implementations, tidied up in general |
|
||||||
**0.4** | Added SSE Optimized HMM_SqrtF, HMM_RSqrtF, Removed use of C Runtime |
|
**0.4** | Added SSE Optimized HMM_SqrtF, HMM_RSqrtF, Removed use of C Runtime |
|
||||||
**0.3** | Added +=,-=, *=, /= for hmm_vec2, hmm_vec3, hmm_vec4 |
|
**0.3** | Added +=,-=, *=, /= for hmm_vec2, hmm_vec3, hmm_vec4 |
|
||||||
**0.2b** | Disabled warning C4201 on MSVC, Added 64bit percision on HMM_PI |
|
**0.2b** | Disabled warning C4201 on MSVC, Added 64bit precision on HMM_PI |
|
||||||
**0.2a** | Prefixed Macros |
|
**0.2a** | Prefixed Macros |
|
||||||
**0.2** | Updated Documentation, Fixed C Compliance, Prefixed all functions, and added better operator overloading |
|
**0.2** | Updated Documentation, Fixed C Compliance, Prefixed all functions, and added better operator overloading |
|
||||||
**0.1** | Initial Version |
|
**0.1** | Initial Version |
|
||||||
|
|||||||
12
test/HandmadeMathDifferentPrefix.cpp
Normal file
12
test/HandmadeMathDifferentPrefix.cpp
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
#define HMM_PREFIX(name) WOW_##name
|
||||||
|
|
||||||
|
#define HANDMADE_MATH_IMPLEMENTATION
|
||||||
|
#define HANDMADE_MATH_NO_INLINE
|
||||||
|
#include "../HandmadeMath.h"
|
||||||
|
|
||||||
|
int main() {
|
||||||
|
hmm_vec4 a = WOW_Vec4(1, 2, 3, 4);
|
||||||
|
hmm_vec4 b = WOW_Vec4(5, 6, 7, 8);
|
||||||
|
|
||||||
|
WOW_Add(a, b);
|
||||||
|
}
|
||||||
@@ -1,8 +1,8 @@
|
|||||||
BUILD_DIR=./build
|
BUILD_DIR=./build
|
||||||
|
|
||||||
CXXFLAGS+=-g -Wall -Wextra -pthread -Wno-missing-braces -Wno-missing-field-initializers
|
CXXFLAGS+=-g -Wall -Wextra -pthread -Wno-missing-braces -Wno-missing-field-initializers -Wfloat-equal
|
||||||
|
|
||||||
all: c c_no_sse cpp cpp_no_sse build_c_without_coverage build_cpp_without_coverage
|
all: c c_no_sse cpp cpp_no_sse build_c_without_coverage build_cpp_without_coverage build_cpp_different_prefix
|
||||||
|
|
||||||
build_all: build_c build_c_no_sse build_cpp build_cpp_no_sse
|
build_all: build_c build_c_no_sse build_cpp build_cpp_no_sse
|
||||||
|
|
||||||
@@ -58,7 +58,7 @@ build_cpp_no_sse: HandmadeMath.cpp test_impl
|
|||||||
|
|
||||||
test_impl: hmm_test.cpp hmm_test.c
|
test_impl: hmm_test.cpp hmm_test.c
|
||||||
|
|
||||||
build_c_without_coverage: HandmadeMath.c
|
build_c_without_coverage: HandmadeMath.c test_impl
|
||||||
@echo "\nCompiling in C mode"
|
@echo "\nCompiling in C mode"
|
||||||
mkdir -p $(BUILD_DIR)
|
mkdir -p $(BUILD_DIR)
|
||||||
cd $(BUILD_DIR)\
|
cd $(BUILD_DIR)\
|
||||||
@@ -75,3 +75,11 @@ build_cpp_without_coverage: HandmadeMath.cpp test_impl
|
|||||||
&& $(CXX) $(CPPFLAGS) $(CXXFLAGS) -ohmm_test_cpp_no_sse \
|
&& $(CXX) $(CPPFLAGS) $(CXXFLAGS) -ohmm_test_cpp_no_sse \
|
||||||
-DHANDMADE_MATH_CPP_MODE -DWITHOUT_COVERAGE \
|
-DHANDMADE_MATH_CPP_MODE -DWITHOUT_COVERAGE \
|
||||||
../HandmadeMath.cpp ../hmm_test.cpp
|
../HandmadeMath.cpp ../hmm_test.cpp
|
||||||
|
|
||||||
|
build_cpp_different_prefix: HandmadeMath.cpp
|
||||||
|
@echo "\nCompiling C++ with different prefix"
|
||||||
|
mkdir -p $(BUILD_DIR)
|
||||||
|
cd $(BUILD_DIR) \
|
||||||
|
&& $(CXX) $(CPPFLAGS) $(CXXFLAGS) -ohmm_test_cpp_different_prefix \
|
||||||
|
-DHANDMADE_MATH_CPP_MODE -DDIFFERENT_PREFIX \
|
||||||
|
../HandmadeMathDifferentPrefix.cpp
|
||||||
|
|||||||
@@ -74,9 +74,9 @@ TEST(ScalarMath, Power)
|
|||||||
|
|
||||||
TEST(ScalarMath, PowerF)
|
TEST(ScalarMath, PowerF)
|
||||||
{
|
{
|
||||||
EXPECT_FLOAT_EQ(HMM_PowerF(2.0f, 0), 1.0f);
|
EXPECT_FLOAT_EQ(HMM_PowerF(2.0f, 0.0f), 1.0f);
|
||||||
EXPECT_NEAR(HMM_PowerF(2.0f, 4.1), 17.148376f, 0.0001f);
|
EXPECT_NEAR(HMM_PowerF(2.0f, 4.1f), 17.148376f, 0.0001f);
|
||||||
EXPECT_NEAR(HMM_PowerF(2.0f, -2.5), 0.176777f, 0.0001f);
|
EXPECT_NEAR(HMM_PowerF(2.0f, -2.5f), 0.176777f, 0.0001f);
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST(ScalarMath, Lerp)
|
TEST(ScalarMath, Lerp)
|
||||||
|
|||||||
@@ -199,3 +199,32 @@ TEST(Subtraction, Quaternion)
|
|||||||
EXPECT_FLOAT_EQ(q1.W, -4.0f);
|
EXPECT_FLOAT_EQ(q1.W, -4.0f);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
TEST(UnaryMinus, Vec2)
|
||||||
|
{
|
||||||
|
hmm_vec2 VectorOne = {1.0f, 2.0f};
|
||||||
|
hmm_vec2 Result = -VectorOne;
|
||||||
|
EXPECT_FLOAT_EQ(Result.X, -1.0f);
|
||||||
|
EXPECT_FLOAT_EQ(Result.Y, -2.0f);
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST(UnaryMinus, Vec3)
|
||||||
|
{
|
||||||
|
hmm_vec3 VectorOne = {1.0f, 2.0f, 3.0f};
|
||||||
|
hmm_vec3 Result = -VectorOne;
|
||||||
|
EXPECT_FLOAT_EQ(Result.X, -1.0f);
|
||||||
|
EXPECT_FLOAT_EQ(Result.Y, -2.0f);
|
||||||
|
EXPECT_FLOAT_EQ(Result.Z, -3.0f);
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST(UnaryMinus, Vec4)
|
||||||
|
{
|
||||||
|
hmm_vec4 VectorOne = {1.0f, 2.0f, 3.0f, 4.0f};
|
||||||
|
hmm_vec4 Result = -VectorOne;
|
||||||
|
EXPECT_FLOAT_EQ(Result.X, -1.0f);
|
||||||
|
EXPECT_FLOAT_EQ(Result.Y, -2.0f);
|
||||||
|
EXPECT_FLOAT_EQ(Result.Z, -3.0f);
|
||||||
|
EXPECT_FLOAT_EQ(Result.W, -4.0f);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|||||||
18
test/run_test_clang.bat
Normal file
18
test/run_test_clang.bat
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
@echo off
|
||||||
|
|
||||||
|
if not exist "build" mkdir build
|
||||||
|
pushd build
|
||||||
|
|
||||||
|
clang-cl /Fehmm_test_c.exe ..\HandmadeMath.c ..\hmm_test.c
|
||||||
|
hmm_test_c
|
||||||
|
|
||||||
|
clang-cl /Fehmm_test_c_no_sse.exe /DHANDMADE_MATH_NO_SSE ..\HandmadeMath.c ..\hmm_test.c
|
||||||
|
hmm_test_c_no_sse
|
||||||
|
|
||||||
|
clang-cl /Fehmm_test_cpp.exe ..\HandmadeMath.cpp ..\hmm_test.cpp
|
||||||
|
hmm_test_cpp
|
||||||
|
|
||||||
|
clang-cl /Fehmm_test_cpp_no_sse.exe /DHANDMADE_MATH_NO_SSE ..\HandmadeMath.cpp ..\hmm_test.cpp
|
||||||
|
hmm_test_cpp_no_sse
|
||||||
|
|
||||||
|
popd
|
||||||
@@ -1,27 +1,27 @@
|
|||||||
@echo off
|
@echo off
|
||||||
|
|
||||||
if "%1%"=="travis" (
|
if "%1%"=="travis" (
|
||||||
call "C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\Common7\Tools\VsDevCmd.bat" -host_arch=amd64 -arch=amd64
|
call "C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\Common7\Tools\VsDevCmd.bat" -host_arch=amd64 -arch=amd64
|
||||||
) else (
|
) else (
|
||||||
where /q cl
|
where /q cl
|
||||||
if ERRORLEVEL 1 (
|
if ERRORLEVEL 1 (
|
||||||
for /f "delims=" %%a in ('"%ProgramFiles(x86)%\Microsoft Visual Studio\Installer\vswhere.exe" -find VC\Auxiliary\Build\vcvarsall.bat') do (%%a x64)
|
for /f "delims=" %%a in ('"%ProgramFiles(x86)%\Microsoft Visual Studio\Installer\vswhere.exe" -find VC\Auxiliary\Build\vcvarsall.bat') do (%%a x64)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
if not exist "build" mkdir build
|
if not exist "build" mkdir build
|
||||||
pushd build
|
pushd build
|
||||||
|
|
||||||
cl /Fehmm_test_c.exe ..\HandmadeMath.c ..\hmm_test.c
|
cl /Fehmm_test_c.exe ..\HandmadeMath.c ..\hmm_test.c
|
||||||
hmm_test_c
|
hmm_test_c
|
||||||
|
|
||||||
cl /Fehmm_test_c_no_sse.exe /DHANDMADE_MATH_NO_SSE ..\HandmadeMath.c ..\hmm_test.c
|
cl /Fehmm_test_c_no_sse.exe /DHANDMADE_MATH_NO_SSE ..\HandmadeMath.c ..\hmm_test.c
|
||||||
hmm_test_c_no_sse
|
hmm_test_c_no_sse
|
||||||
|
|
||||||
cl /Fehmm_test_cpp.exe ..\HandmadeMath.cpp ..\hmm_test.cpp
|
cl /Fehmm_test_cpp.exe ..\HandmadeMath.cpp ..\hmm_test.cpp
|
||||||
hmm_test_cpp
|
hmm_test_cpp
|
||||||
|
|
||||||
cl /Fehmm_test_cpp_no_sse.exe /DHANDMADE_MATH_NO_SSE ..\HandmadeMath.cpp ..\hmm_test.cpp
|
cl /Fehmm_test_cpp_no_sse.exe /DHANDMADE_MATH_NO_SSE ..\HandmadeMath.cpp ..\hmm_test.cpp
|
||||||
hmm_test_cpp_no_sse
|
hmm_test_cpp_no_sse
|
||||||
|
|
||||||
popd
|
popd
|
||||||
Reference in New Issue
Block a user