diff options
author | bonmas14 <bonmas14@gmail.com> | 2025-09-25 14:17:07 +0300 |
---|---|---|
committer | bonmas14 <bonmas14@gmail.com> | 2025-09-25 14:17:07 +0300 |
commit | 166877cf15f6afa89c9f8a61e267d485868d0ee1 (patch) | |
tree | 9f080314edc4fb293f91227cdc1c01cfec8d7bae /tests/un/mathd.c | |
parent | 8ebdc95621bc61fdf3c98cd7ae4ddca67398df23 (diff) | |
download | ungrateful-166877cf15f6afa89c9f8a61e267d485868d0ee1.tar.gz ungrateful-166877cf15f6afa89c9f8a61e267d485868d0ee1.zip |
+disgrace and rework of ungrateful.h
Diffstat (limited to 'tests/un/mathd.c')
-rw-r--r-- | tests/un/mathd.c | 424 |
1 files changed, 188 insertions, 236 deletions
diff --git a/tests/un/mathd.c b/tests/un/mathd.c index 829a4a6..10ef24b 100644 --- a/tests/un/mathd.c +++ b/tests/un/mathd.c @@ -3,305 +3,257 @@ int main() { /* 2d */ { - f64 a[2] = {1.0, 2.0}; - f64 b[2] = {3.0, 4.0}; - f64 n[2] = {0.0, 1.0}; - f64 v[2]; + double2 a = {1.0, 2.0}; + double2 b = {3.0, 4.0}; + double2 n = {0.0, 1.0}; + double2 v; - un_m_add2d(v, a, b); - assert(fabs(v[0] - 4.0) < EPSILON); - assert(fabs(v[1] - 6.0) < EPSILON); - un_memory_set((void*)v, 0, sizeof(*v) * 2); + v = un_m_add2d(a, b); + assert(fabs(v.x - 4.0) < EPSILON); + assert(fabs(v.y - 6.0) < EPSILON); - un_m_sub2d(v, a, b); - assert(fabs(v[0] + 2.0) < EPSILON); - assert(fabs(v[1] + 2.0) < EPSILON); - un_memory_set((void*)v, 0, sizeof(*v) * 2); + v = un_m_sub2d(a, b); + assert(fabs(v.x + 2.0) < EPSILON); + assert(fabs(v.y + 2.0) < EPSILON); - un_m_add_scalar2d(v, a, 1); - assert(fabs(v[0] - 2.0) < EPSILON); - assert(fabs(v[1] - 3.0) < EPSILON); - un_memory_set((void*)v, 0, sizeof(*v) * 2); + v = un_m_add_scalar2d(a, 1); + assert(fabs(v.x - 2.0) < EPSILON); + assert(fabs(v.y - 3.0) < EPSILON); - un_m_sub_scalar2d(v, a, 1); - assert(fabs(v[0]) < EPSILON); - assert(fabs(v[1] - 1.0) < EPSILON); - un_memory_set((void*)v, 0, sizeof(*v) * 2); + v = un_m_sub_scalar2d(a, 1); + assert(fabs(v.x) < EPSILON); + assert(fabs(v.y - 1.0) < EPSILON); - un_m_mul_scalar2d(v, a, 2); - assert(fabs(v[0] - 2.0) < EPSILON); - assert(fabs(v[1] - 4.0) < EPSILON); - un_memory_set((void*)v, 0, sizeof(*v) * 2); + v = un_m_mul_scalar2d(a, 2); + assert(fabs(v.x - 2.0) < EPSILON); + assert(fabs(v.y - 4.0) < EPSILON); - un_m_div_scalar2d(v, a, 2); - assert(fabs(v[0] - 0.5) < EPSILON); - assert(fabs(v[1] - 1.0) < EPSILON); - un_memory_set((void*)v, 0, sizeof(*v) * 2); + v = un_m_div_scalar2d(a, 2); + assert(fabs(v.x - 0.5) < EPSILON); + assert(fabs(v.y - 1.0) < EPSILON); - un_m_dot2d(v, a, b); - assert(fabs(v[0] - 11.0) < EPSILON); - un_memory_set((void*)v, 0, sizeof(*v) * 2); + v.x = un_m_dot2d(a, b); + assert(fabs(v.x - 11.0) < EPSILON); - un_m_hadamard2d(v, a, b); - assert(fabs(v[0] - 3.0) < EPSILON); - assert(fabs(v[1] - 8.0) < EPSILON); - un_memory_set((void*)v, 0, sizeof(*v) * 2); + v = un_m_hadamard2d(a, b); + assert(fabs(v.x - 3.0) < EPSILON); + assert(fabs(v.y - 8.0) < EPSILON); - un_m_project2d(v, a, b); - assert(fabs(v[0] - 1.32) < EPSILON); - assert(fabs(v[1] - 1.76) < EPSILON); - un_memory_set((void*)v, 0, sizeof(*v) * 2); + v = un_m_project2d(a, b); + assert(fabs(v.x - 1.32) < EPSILON); + assert(fabs(v.y - 1.76) < EPSILON); - un_m_cross2d(v, a); - assert(fabs(v[0] - 2.0) < EPSILON); - assert(fabs(v[1] + 1.0) < EPSILON); - un_memory_set((void*)v, 0, sizeof(*v) * 2); + v = un_m_cross2d(a); + assert(fabs(v.x - 2.0) < EPSILON); + assert(fabs(v.y + 1.0) < EPSILON); - un_m_magnitude2d(v, b); - assert(fabs(v[0] - 5.0) < EPSILON); - un_memory_set((void*)v, 0, sizeof(*v) * 2); + v.x = un_m_magnitude2d(b); + assert(fabs(v.x - 5.0) < EPSILON); - un_m_magnitude_sqr2d(v, b); - assert(fabs(v[0] - 25.0) < EPSILON); - un_memory_set((void*)v, 0, sizeof(*v) * 2); + v.x = un_m_magnitude_sqr2d(b); + assert(fabs(v.x - 25.0) < EPSILON); - un_m_distance2d(v, a, b); - assert(fabs(v[0] - sqrt(8.0)) < EPSILON); - un_memory_set((void*)v, 0, sizeof(*v) * 2); + v.x = un_m_distance2d(a, b); + assert(fabs(v.x - sqrt(8.0)) < EPSILON); - un_m_distance_sqr2d(v, a, b); - assert(fabs(v[0] - 8.0) < EPSILON); - un_memory_set((void*)v, 0, sizeof(*v) * 2); + v.x = un_m_distance_sqr2d(a, b); + assert(fabs(v.x - 8.0) < EPSILON); - un_m_normalize2d(v, b); - assert(fabs(v[0] - 0.6) < EPSILON); - assert(fabs(v[1] - 0.8) < EPSILON); - un_memory_set((void*)v, 0, sizeof(*v) * 2); + v = un_m_normalize2d(b); + assert(fabs(v.x - 0.6) < EPSILON); + assert(fabs(v.y - 0.8) < EPSILON); - un_m_reflect2d(v, a, n); - assert(fabs(v[0] + a[0]) < EPSILON); - assert(fabs(v[1] - a[1]) < EPSILON); - un_memory_set((void*)v, 0, sizeof(*v) * 2); + v = un_m_reflect2d(a, n); + assert(fabs(v.x + a.x) < EPSILON); + assert(fabs(v.y - a.y) < EPSILON); } /* 3d */ { - f64 a[3] = {1.0, 2.0, 3.0}; - f64 b[3] = {3.0, 4.0, 5.0}; - f64 n[3] = {0.0, 1.0, 0.0}; - f64 v[3]; + double3 a = {1.0, 2.0, 3.0}; + double3 b = {3.0, 4.0, 5.0}; + double3 n = {0.0, 1.0, 0.0}; + double3 v; - un_m_add3d(v, a, b); - assert(fabs(v[0] - 4.0) < EPSILON); - assert(fabs(v[1] - 6.0) < EPSILON); - assert(fabs(v[2] - 8.0) < EPSILON); - un_memory_set((void*)v, 0, sizeof(*v) * 3); + v = un_m_add3d(a, b); + assert(fabs(v.x - 4.0) < EPSILON); + assert(fabs(v.y - 6.0) < EPSILON); + assert(fabs(v.z - 8.0) < EPSILON); - un_m_sub3d(v, a, b); - assert(fabs(v[0] + 2.0) < EPSILON); - assert(fabs(v[1] + 2.0) < EPSILON); - assert(fabs(v[2] + 2.0) < EPSILON); - un_memory_set((void*)v, 0, sizeof(*v) * 3); + v = un_m_sub3d(a, b); + assert(fabs(v.x + 2.0) < EPSILON); + assert(fabs(v.y + 2.0) < EPSILON); + assert(fabs(v.z + 2.0) < EPSILON); - un_m_add_scalar3d(v, a, 1); - assert(fabs(v[0] - 2.0) < EPSILON); - assert(fabs(v[1] - 3.0) < EPSILON); - assert(fabs(v[2] - 4.0) < EPSILON); - un_memory_set((void*)v, 0, sizeof(*v) * 3); + v = un_m_add_scalar3d(a, 1); + assert(fabs(v.x - 2.0) < EPSILON); + assert(fabs(v.y - 3.0) < EPSILON); + assert(fabs(v.z - 4.0) < EPSILON); - un_m_sub_scalar3d(v, a, 1); - assert(fabs(v[0]) < EPSILON); - assert(fabs(v[1] - 1.0) < EPSILON); - assert(fabs(v[2] - 2.0) < EPSILON); - un_memory_set((void*)v, 0, sizeof(*v) * 3); + v = un_m_sub_scalar3d(a, 1); + assert(fabs(v.x) < EPSILON); + assert(fabs(v.y - 1.0) < EPSILON); + assert(fabs(v.z - 2.0) < EPSILON); - un_m_mul_scalar3d(v, a, 2); - assert(fabs(v[0] - 2.0) < EPSILON); - assert(fabs(v[1] - 4.0) < EPSILON); - assert(fabs(v[2] - 6.0) < EPSILON); - un_memory_set((void*)v, 0, sizeof(*v) * 3); + v = un_m_mul_scalar3d(a, 2); + assert(fabs(v.x - 2.0) < EPSILON); + assert(fabs(v.y - 4.0) < EPSILON); + assert(fabs(v.z - 6.0) < EPSILON); - un_m_div_scalar3d(v, a, 2); - assert(fabs(v[0] - 0.5) < EPSILON); - assert(fabs(v[1] - 1.0) < EPSILON); - assert(fabs(v[2] - 1.5) < EPSILON); - un_memory_set((void*)v, 0, sizeof(*v) * 3); + v = un_m_div_scalar3d(a, 2); + assert(fabs(v.x - 0.5) < EPSILON); + assert(fabs(v.y - 1.0) < EPSILON); + assert(fabs(v.z - 1.5) < EPSILON); - un_m_dot3d(v, a, b); - assert(fabs(v[0] - 26.0) < EPSILON); - un_memory_set((void*)v, 0, sizeof(*v) * 3); + v.x = un_m_dot3d(a, b); + assert(fabs(v.x - 26.0) < EPSILON); - un_m_hadamard3d(v, a, b); - assert(fabs(v[0] - 3.0) < EPSILON); - assert(fabs(v[1] - 8.0) < EPSILON); - assert(fabs(v[2] - 15.0) < EPSILON); - un_memory_set((void*)v, 0, sizeof(*v) * 3); + v = un_m_hadamard3d(a, b); + assert(fabs(v.x - 3.0) < EPSILON); + assert(fabs(v.y - 8.0) < EPSILON); + assert(fabs(v.z - 15.0) < EPSILON); - un_m_project3d(v, a, b); - assert(fabs(v[0] - 1.56) < EPSILON); - assert(fabs(v[1] - 2.08) < EPSILON); - assert(fabs(v[2] - 2.6) < EPSILON); - un_memory_set((void*)v, 0, sizeof(*v) * 3); + v = un_m_project3d(a, b); + assert(fabs(v.x - 1.56) < EPSILON); + assert(fabs(v.y - 2.08) < EPSILON); + assert(fabs(v.z - 2.6) < EPSILON); - un_m_cross3d(v, a, b); - assert(fabs(v[0] + 2.0) < EPSILON); - assert(fabs(v[1] - 4.0) < EPSILON); - assert(fabs(v[2] + 2.0) < EPSILON); - un_memory_set((void*)v, 0, sizeof(*v) * 3); + v = un_m_cross3d(a, b); + assert(fabs(v.x + 2.0) < EPSILON); + assert(fabs(v.y - 4.0) < EPSILON); + assert(fabs(v.z + 2.0) < EPSILON); - un_m_magnitude3d(v, b); - assert(fabs(v[0] - sqrt(50.0)) < EPSILON); - un_memory_set((void*)v, 0, sizeof(*v) * 3); + v.x = un_m_magnitude3d(b); + assert(fabs(v.x - sqrt(50.0)) < EPSILON); - un_m_magnitude_sqr3d(v, b); - assert(fabs(v[0] - 50.0) < EPSILON); - un_memory_set((void*)v, 0, sizeof(*v) * 3); + v.x = un_m_magnitude_sqr3d(b); + assert(fabs(v.x - 50.0) < EPSILON); - un_m_distance3d(v, a, b); - assert(fabs(v[0] - sqrt(12.0)) < EPSILON); - un_memory_set((void*)v, 0, sizeof(*v) * 3); + v.x = un_m_distance3d(a, b); + assert(fabs(v.x - sqrt(12.0)) < EPSILON); - un_m_distance_sqr3d(v, a, b); - assert(fabs(v[0] - 12.0) < EPSILON); - un_memory_set((void*)v, 0, sizeof(*v) * 3); + v.x = un_m_distance_sqr3d(a, b); + assert(fabs(v.x - 12.0) < EPSILON); - un_m_normalize3d(v, b); - assert(fabs(v[0] - 0.424264) < EPSILON); - assert(fabs(v[1] - 0.565685) < EPSILON); - assert(fabs(v[2] - 0.707107) < EPSILON); - un_memory_set((void*)v, 0, sizeof(*v) * 3); + v = un_m_normalize3d(b); + assert(fabs(v.x - 0.424264) < EPSILON); + assert(fabs(v.y - 0.565685) < EPSILON); + assert(fabs(v.z - 0.707107) < EPSILON); - un_m_reflect3d(v, a, n); - assert(fabs(v[0] + a[0]) < EPSILON); - assert(fabs(v[1] - a[1]) < EPSILON); - assert(fabs(v[2] + a[2]) < EPSILON); - un_memory_set((void*)v, 0, sizeof(*v) * 3); + v = un_m_reflect3d(a, n); + assert(fabs(v.x + a.x) < EPSILON); + assert(fabs(v.y - a.y) < EPSILON); + assert(fabs(v.z + a.z) < EPSILON); } /* 4d */ { - f64 a[4] = {1.0, 2.0, 3.0, 4.0}; - f64 b[4] = {3.0, 4.0, 5.0, 6.0}; - f64 n[4] = {0.0, 1.0, 0.0, 0.0}; - f64 v[4]; + double4 a = {1.0, 2.0, 3.0, 4.0}; + double4 b = {3.0, 4.0, 5.0, 6.0}; + double4 n = {0.0, 1.0, 0.0, 0.0}; + double4 v; - un_m_add4d(v, a, b); - assert(fabs(v[0] - 4.0) < EPSILON); - assert(fabs(v[1] - 6.0) < EPSILON); - assert(fabs(v[2] - 8.0) < EPSILON); - assert(fabs(v[3] - 10.0) < EPSILON); - un_memory_set((void*)v, 0, sizeof(*v) * 4); + v = un_m_add4d(a, b); + assert(fabs(v.x - 4.0) < EPSILON); + assert(fabs(v.y - 6.0) < EPSILON); + assert(fabs(v.z - 8.0) < EPSILON); + assert(fabs(v.w - 10.0) < EPSILON); - un_m_sub4d(v, a, b); - assert(fabs(v[0] + 2.0) < EPSILON); - assert(fabs(v[1] + 2.0) < EPSILON); - assert(fabs(v[2] + 2.0) < EPSILON); - assert(fabs(v[3] + 2.0) < EPSILON); - un_memory_set((void*)v, 0, sizeof(*v) * 4); + v = un_m_sub4d(a, b); + assert(fabs(v.x + 2.0) < EPSILON); + assert(fabs(v.y + 2.0) < EPSILON); + assert(fabs(v.z + 2.0) < EPSILON); + assert(fabs(v.w + 2.0) < EPSILON); - un_m_add_scalar4d(v, a, 1); - assert(fabs(v[0] - 2.0) < EPSILON); - assert(fabs(v[1] - 3.0) < EPSILON); - assert(fabs(v[2] - 4.0) < EPSILON); - assert(fabs(v[3] - 5.0) < EPSILON); - un_memory_set((void*)v, 0, sizeof(*v) * 4); + v = un_m_add_scalar4d(a, 1); + assert(fabs(v.x - 2.0) < EPSILON); + assert(fabs(v.y - 3.0) < EPSILON); + assert(fabs(v.z - 4.0) < EPSILON); + assert(fabs(v.w - 5.0) < EPSILON); - un_m_sub_scalar4d(v, a, 1); - assert(fabs(v[0]) < EPSILON); - assert(fabs(v[1] - 1.0) < EPSILON); - assert(fabs(v[2] - 2.0) < EPSILON); - assert(fabs(v[3] - 3.0) < EPSILON); - un_memory_set((void*)v, 0, sizeof(*v) * 4); + v = un_m_sub_scalar4d(a, 1); + assert(fabs(v.x) < EPSILON); + assert(fabs(v.y - 1.0) < EPSILON); + assert(fabs(v.z - 2.0) < EPSILON); + assert(fabs(v.w - 3.0) < EPSILON); - un_m_mul_scalar4d(v, a, 2); - assert(fabs(v[0] - 2.0) < EPSILON); - assert(fabs(v[1] - 4.0) < EPSILON); - assert(fabs(v[2] - 6.0) < EPSILON); - assert(fabs(v[3] - 8.0) < EPSILON); - un_memory_set((void*)v, 0, sizeof(*v) * 4); + v = un_m_mul_scalar4d(a, 2); + assert(fabs(v.x - 2.0) < EPSILON); + assert(fabs(v.y - 4.0) < EPSILON); + assert(fabs(v.z - 6.0) < EPSILON); + assert(fabs(v.w - 8.0) < EPSILON); - un_m_div_scalar4d(v, a, 2); - assert(fabs(v[0] - 0.5) < EPSILON); - assert(fabs(v[1] - 1.0) < EPSILON); - assert(fabs(v[2] - 1.5) < EPSILON); - assert(fabs(v[3] - 2.0) < EPSILON); - un_memory_set((void*)v, 0, sizeof(*v) * 4); + v = un_m_div_scalar4d(a, 2); + assert(fabs(v.x - 0.5) < EPSILON); + assert(fabs(v.y - 1.0) < EPSILON); + assert(fabs(v.z - 1.5) < EPSILON); + assert(fabs(v.w - 2.0) < EPSILON); - un_m_dot4d(v, a, b); - assert(fabs(v[0] - 50.0) < EPSILON); - un_memory_set((void*)v, 0, sizeof(*v) * 4); + v.x = un_m_dot4d(a, b); + assert(fabs(v.x - 50.0) < EPSILON); - un_m_hadamard4d(v, a, b); - assert(fabs(v[0] - 3.0) < EPSILON); - assert(fabs(v[1] - 8.0) < EPSILON); - assert(fabs(v[2] - 15.0) < EPSILON); - assert(fabs(v[3] - 24.0) < EPSILON); - un_memory_set((void*)v, 0, sizeof(*v) * 4); + v = un_m_hadamard4d(a, b); + assert(fabs(v.x - 3.0) < EPSILON); + assert(fabs(v.y - 8.0) < EPSILON); + assert(fabs(v.z - 15.0) < EPSILON); + assert(fabs(v.w - 24.0) < EPSILON); - un_m_project4d(v, a, b); - assert(fabs(v[0] - 1.744186) < EPSILON); - assert(fabs(v[1] - 2.325581) < EPSILON); - assert(fabs(v[2] - 2.906976) < EPSILON); - assert(fabs(v[3] - 3.488372) < EPSILON); - un_memory_set((void*)v, 0, sizeof(*v) * 4); + v = un_m_project4d(a, b); + assert(fabs(v.x - 1.744186) < EPSILON); + assert(fabs(v.y - 2.325581) < EPSILON); + assert(fabs(v.z - 2.906976) < EPSILON); + assert(fabs(v.w - 3.488372) < EPSILON); - un_m_magnitude4d(v, b); - assert(fabs(v[0] - sqrt(86.0)) < EPSILON); - un_memory_set((void*)v, 0, sizeof(*v) * 4); + v.x = un_m_magnitude4d(b); + assert(fabs(v.x - sqrt(86.0)) < EPSILON); - un_m_magnitude_sqr4d(v, b); - assert(fabs(v[0] - 86.0) < EPSILON); - un_memory_set((void*)v, 0, sizeof(*v) * 4); + v.x = un_m_magnitude_sqr4d(b); + assert(fabs(v.x - 86.0) < EPSILON); - un_m_distance4d(v, a, b); - assert(fabs(v[0] - 4.0) < EPSILON); - un_memory_set((void*)v, 0, sizeof(*v) * 4); + v.x = un_m_distance4d(a, b); + assert(fabs(v.x - 4.0) < EPSILON); - un_m_distance_sqr4d(v, a, b); - assert(fabs(v[0] - 16.0) < EPSILON); - un_memory_set((void*)v, 0, sizeof(*v) * 4); + v.x = un_m_distance_sqr4d(a, b); + assert(fabs(v.x - 16.0) < EPSILON); - un_m_normalize4d(v, b); - assert(fabs(v[0] - 0.323498) < EPSILON); - assert(fabs(v[1] - 0.431331) < EPSILON); - assert(fabs(v[2] - 0.539164) < EPSILON); - assert(fabs(v[3] - 0.646997) < EPSILON); - un_memory_set((void*)v, 0, sizeof(*v) * 4); + v = un_m_normalize4d(b); + assert(fabs(v.x - 0.323498) < EPSILON); + assert(fabs(v.y - 0.431331) < EPSILON); + assert(fabs(v.z - 0.539164) < EPSILON); + assert(fabs(v.w - 0.646997) < EPSILON); - un_m_reflect4d(v, a, n); - assert(fabs(v[0] + a[0]) < EPSILON); - assert(fabs(v[1] - a[1]) < EPSILON); - assert(fabs(v[2] + a[2]) < EPSILON); - assert(fabs(v[3] + a[3]) < EPSILON); - un_memory_set((void*)v, 0, sizeof(*v) * 4); + v = un_m_reflect4d(a, n); + assert(fabs(v.x + a.x) < EPSILON); + assert(fabs(v.y - a.y) < EPSILON); + assert(fabs(v.z + a.z) < EPSILON); + assert(fabs(v.w + a.w) < EPSILON); } { // Complex - f64 v[2], a[2] = { 1, 2 }, b[2] = { 3, 4 }, c[2] = { 1, 0 }, d[3] = { 0, 1 }; + double2 v; + double2 a = { 1, 2 }; + double2 b = { 3, 4 }; + double2 c = { 1, 0 }; + double2 d = { 0, 1 }; - un_m_complex_addd(v, a, b); - assert((v[0] - 4.0) < EPSILON); - assert((v[1] - 6.0) < EPSILON); - un_memory_set((void*)v, 0, sizeof(*v) * 2); + v = un_m_complex_addd(a, b); + assert((v.x - 4.0) < EPSILON); + assert((v.y - 6.0) < EPSILON); - un_m_complex_subd(v, a, b); - assert((v[0] + 2.0) < EPSILON); - assert((v[1] + 2.0) < EPSILON); - un_memory_set((void*)v, 0, sizeof(*v) * 2); + v = un_m_complex_subd(a, b); + assert((v.x + 2.0) < EPSILON); + assert((v.y + 2.0) < EPSILON); - un_m_complex_muld(v, a, b); - assert((v[0] + 5.0) < EPSILON); - assert((v[1] - 10.0) < EPSILON); - un_memory_set((void*)v, 0, sizeof(*v) * 2); + v = un_m_complex_muld(a, b); + assert((v.x + 5.0) < EPSILON); + assert((v.y - 10.0) < EPSILON); - un_m_complex_divd(v, c, d); - assert(v[0] < EPSILON); - assert((v[1] + 1.0) < EPSILON); - un_memory_set((void*)v, 0, sizeof(*v) * 2); + v = un_m_complex_divd(c, d); + assert(v.x < EPSILON); + assert((v.y + 1.0) < EPSILON); - un_m_complex_magnituded(v, c); - assert((v[0] - 1.0) < EPSILON); - un_memory_set((void*)v, 0, sizeof(*v) * 2); + v.x = un_m_complex_magnituded(c); + assert((v.x - 1.0) < EPSILON); } return 0; |