Skip to content

Releases: vadymchan/math_library

Build 2025-11-09 (e3c6460)

09 Nov 10:20

Choose a tag to compare

Automated release from CI/CD pipeline

Commit: e3c6460
Date: 2025-11-09

This release contains the header-only math library with SIMD support.

Installation

  1. Download and extract the archive
  2. Include in your CMake project using FetchContent or add_subdirectory

Changes

See commit history for details: fc2e1e7...e3c6460

v0.1.0

08 Apr 17:07
e30fc79

Choose a tag to compare

New Features:

  • Add negation operator to Matrix and Vector classes
  • Implement support for uint32_t data type
  • Add utility functions and variables (g_kPi, g_kDefaultTolerance, g_radianToDegree, g_degreeToRadian, g_abs, g_isNearlyEqual, g_isNearlyZero)
  • Add vector initialization using the << operator
  • Implement scalar multiplication for Matrix and Vector classes
  • Add conversion between Vector and Dimension classes
  • Loosen restrictions for matrix, vector, point, and dimension elements (now possible to assign convertible elements)
  • Add support for lower rank vector initialization (e.g., Vector3D(Vector2D, value))
  • Implement << overload for Dimension initialization and printing to console
  • Add graphics functionality (view, perspective projection, orthographic projection matrix creation, matrix rotation, scale, translation, transform vector, transform point) for both Lh and Rh systems and Zo, No for perspective projection matrices
  • Introduce predefined vectors (up, down, forward, backward, right, left, zero, one, unit)
  • Add data size getter (returns the size in bytes of the underlying array)
  • Refactor concepts
  • Implement getter and setter for column and row in Matrix class
  • Add resizedCopy method to create a resized copy of a Matrix
  • Implement functions for getting/setting basis vectors in Matrix class
  • Add magnitude squared method to Matrix and Vector classes
  • Implement comparison overloads (<, <=, >, >=) for Matrix, Vector, Point, and Dimension classes

Updates:

  • Fix error with FetchContent for the math_library project
  • Replace unsigned int with std::size_t / std::uint32_t and int with std::int32_t
  • Add more test cases (still not covering the full functionality of math_library)
  • Minor updates:
    • Change CMake version from 3.10 to 3.26
    • Add MATH_LIBRARY prefix to global build macro in CMake
    • Add source group to projects for better tree hierarchy in IDE
    • Change SimdWidth computation to use sizeof division (sizeof(simd type) / sizeof(primitive type))

TODO:

  • Add OpenMP support to InstructionSet fallback (carried over from previous release)
  • Add more test cases to cover the full functionality of math_library (ongoing)
  • Add Doxygen documentation for the library
  • Implement quaternion class for representing rotations
  • Optimize matrix and vector operations for better performance
  • Investigate and fix any potential bugs or issues
  • Enhance error handling and provide more informative error messages
  • Improve code documentation and comments for better readability and maintainability
  • Conduct thorough performance benchmarking and profiling
  • Explore integration with popular game engines or frameworks
  • Gather user feedback and incorporate suggestions for future releases
  • Create comprehensive tutorial or guide for using math_library effectively

I encourage you to try out the new features and provide feedback. If you encounter any issues or have suggestions for improvement, please open an issue on the GitHub repository or contact me (better create an issue ofc).

Full Changelog: v.0.0.2-beta...v0.1.0

v0.0.2-beta

22 Nov 18:26

Choose a tag to compare

v0.0.2-beta Pre-release
Pre-release

New Features:

  • Vector class (now not just alias to Matrix, but wrapper to Matrix class)
  • Point class - alias to Vector
  • Dimension class - wrapper around Vector

Updates

  • Matrix refinement (matrix by matrix multiplication for both major; matrix direct initialization using <<; conditional compilation to normalize method)
  • refactor code according to clang format file
  • InstructionSet refactor (there were lots of bugs there)
  • refactor code to satisfy LLVM and CppCoreGuidelines recommendations (clang tidy)
  • add more test cases (still not cover full functionality that math_library has)

TODO:

  • add OpenMP to InstructionSet fallback
  • add more test cases
  • add Doxygen documentation

Full Changelog: v.0.0.1-alpha...v.0.0.2-beta

v0.0.1-alpha

08 Aug 21:15

Choose a tag to compare

v0.0.1-alpha Pre-release
Pre-release

Features:

  • instruction set (SIMD: AVX 2, AVX, SSE 4.2, SSE 4.1, SSSE3, SSE 3)
  • matrix implementation
  • vector alias
  • view and projection matrix creation
    this is an incomplete version and I released it only to check for compatibility with my game engine