diff --git a/include/fcarouge/kalman.hpp b/include/fcarouge/kalman.hpp index b52396ba5..f4b94ee0f 100644 --- a/include/fcarouge/kalman.hpp +++ b/include/fcarouge/kalman.hpp @@ -43,40 +43,12 @@ For more information, please refer to */ //! @brief The main Kalman filter class. #include "kalman_equation.hpp" +#include "kalman_operator.hpp" #include namespace fcarouge { -template struct transpose { - [[nodiscard]] inline constexpr auto operator()(const Type &value) - { - return value; - } -}; - -template struct symmetrize { - [[nodiscard]] inline constexpr auto operator()(const Type &value) - { - return value; - } -}; - -template struct divide { - [[nodiscard]] inline constexpr auto operator()(const Numerator &numerator, - const Denominator &denominator) - { - return numerator / denominator; - } -}; - -template struct identity { - [[nodiscard]] inline constexpr Type operator()() - { - return 1; - } -}; - //! @brief Kalman filter. //! //! @tparam State The type template parameter of the state vector x. diff --git a/include/fcarouge/kalman_operator.hpp b/include/fcarouge/kalman_operator.hpp new file mode 100644 index 000000000..27283b843 --- /dev/null +++ b/include/fcarouge/kalman_operator.hpp @@ -0,0 +1,78 @@ +/*_ __ _ __ __ _ _ + | |/ / /\ | | | \/ | /\ | \ | | + | ' / / \ | | | \ / | / \ | \| | + | < / /\ \ | | | |\/| | / /\ \ | . ` | + | . \ / ____ \| |____| | | |/ ____ \| |\ | + |_|\_\/_/ \_\______|_| |_/_/ \_\_| \_| + +Kalman Filter for C++ +Version 0.1.0 +https://github.com/FrancoisCarouge/Kalman + +SPDX-License-Identifier: Unlicense + +This is free and unencumbered software released into the public domain. + +Anyone is free to copy, modify, publish, use, compile, sell, or +distribute this software, either in source code form or as a compiled +binary, for any purpose, commercial or non-commercial, and by any +means. + +In jurisdictions that recognize copyright laws, the author or authors +of this software dedicate any and all copyright interest in the +software to the public domain. We make this dedication for the benefit +of the public at large and to the detriment of our heirs and +successors. We intend this dedication to be an overt act of +relinquishment in perpetuity of all present and future rights to this +software under copyright law. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR +OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +OTHER DEALINGS IN THE SOFTWARE. + +For more information, please refer to */ + +#ifndef FCAROUGE_KALMAN_OPERATOR_HPP +#define FCAROUGE_KALMAN_OPERATOR_HPP + +//! @file +//! @brief Kalman operation for standard types. + +namespace fcarouge +{ +template struct transpose { + [[nodiscard]] inline constexpr auto operator()(const Type &value) + { + return value; + } +}; + +template struct symmetrize { + [[nodiscard]] inline constexpr auto operator()(const Type &value) + { + return value; + } +}; + +template struct divide { + [[nodiscard]] inline constexpr auto operator()(const Numerator &numerator, + const Denominator &denominator) + { + return numerator / denominator; + } +}; + +template struct identity { + [[nodiscard]] inline constexpr Type operator()() + { + return 1; + } +}; + +} // namespace fcarouge + +#endif // FCAROUGE_KALMAN_OPERATOR_HPP diff --git a/include/fcarouge/eigen.hpp b/include/fcarouge/kalman_operator_eigen.hpp similarity index 94% rename from include/fcarouge/eigen.hpp rename to include/fcarouge/kalman_operator_eigen.hpp index fd5e3d4a6..90ca2b63c 100644 --- a/include/fcarouge/eigen.hpp +++ b/include/fcarouge/kalman_operator_eigen.hpp @@ -36,8 +36,11 @@ OTHER DEALINGS IN THE SOFTWARE. For more information, please refer to */ -#ifndef FCAROUGE_EIGEN_HPP -#define FCAROUGE_EIGEN_HPP +#ifndef FCAROUGE_KALMAN_OPERATOR_EIGEN_HPP +#define FCAROUGE_KALMAN_OPERATOR_EIGEN_HPP + +//! @file +//! @brief Kalman operation for Eigen 3 types. #include "kalman.hpp" @@ -95,4 +98,4 @@ using kalman = } // namespace fcarouge::eigen -#endif // FCAROUGE_EIGEN_HPP +#endif // FCAROUGE_KALMAN_OPERATOR_EIGEN_HPP diff --git a/test/test.cpp b/test/test.cpp index 13979fbd4..e3f4059f6 100644 --- a/test/test.cpp +++ b/test/test.cpp @@ -36,9 +36,6 @@ OTHER DEALINGS IN THE SOFTWARE. For more information, please refer to */ -#include "fcarouge/eigen.hpp" -#include "fcarouge/kalman.hpp" - #include namespace fcarouge::test