Fixes for control systems AND SVD and QR decomposition #9

Merged
Cynopolis merged 11 commits from fixes-for-control-systems into main 2026-08-26 13:08:22 -04:00
3 changed files with 9 additions and 4 deletions
Showing only changes of commit a49e357f4c - Show all commits
+1 -1
View File
@@ -4,7 +4,7 @@ project(Vector3D)
add_subdirectory(src) add_subdirectory(src)
add_subdirectory(unit-tests) add_subdirectory(unit-tests)
set(CMAKE_CXX_STANDARD 11) set(CMAKE_CXX_STANDARD 17)
add_compile_options(-Wall -Wextra -Wpedantic) add_compile_options(-Wall -Wextra -Wpedantic)
add_compile_options (-fdiagnostics-color=always) add_compile_options (-fdiagnostics-color=always)
+2 -1
View File
2
@@ -20,7 +20,8 @@ Matrix<rows, columns>::Matrix(const std::array<float, rows * columns> &array) {
} }
template <uint8_t rows, uint8_t columns> template <uint8_t rows, uint8_t columns>
template <typename... Args> template <typename... Args,
std::enable_if_t<(std::is_arithmetic_v<Args> && ...), int>>
Matrix<rows, columns>::Matrix(Args... args) { Matrix<rows, columns>::Matrix(Args... args) {
constexpr uint16_t arraySize{static_cast<uint16_t>(rows) * constexpr uint16_t arraySize{static_cast<uint16_t>(rows) *
static_cast<uint16_t>(columns)}; static_cast<uint16_t>(columns)};
+6 -2
View File
@@ -3,6 +3,7 @@
#include <array> #include <array>
#include <cstdint> #include <cstdint>
#include <string> #include <string>
#include <type_traits>
// TODO: Add a function to calculate eigenvalues/vectors // TODO: Add a function to calculate eigenvalues/vectors
// TODO: Add a function to compute RREF // TODO: Add a function to compute RREF
@@ -29,9 +30,12 @@ public:
Matrix(const Matrix<rows, columns> &other); Matrix(const Matrix<rows, columns> &other);
/** /**
* @brief Initialize a matrix directly with any number of arguments * @brief Initialize a matrix directly with scalar values
* Uses SFINAE to only accept arithmetic types (int, float, double, etc.)
*/ */
template <typename... Args> Matrix(Args... args); template <typename... Args,
std::enable_if_t<(std::is_arithmetic_v<Args> && ...), int> = 0>
Matrix(Args... args);
/** /**
* @brief Create an identity matrix * @brief Create an identity matrix