Skip to content

These module docs are in beta and may be incomplete.

modm:math: Math


// Class
class modm::Angle;
class modm::Circle2D< typename T >;
class modm::LUDecomposition::LUSubDecomposition< T, OFFSET, WIDTH, OFFSET >;
class modm::LUDecomposition::LUSubDecomposition< typename T , uint8_t OFFSET, uint8_t HEIGHT, uint8_t WIDTH >;
class modm::LUDecomposition::RowOperation< T, 0 >;
class modm::LUDecomposition::RowOperation< typename T , uint8_t HEIGHT >;
class modm::LUDecomposition;
class modm::Line2D< typename T >;
class modm::LineSegment2D< typename T=int16_t >;
class modm::Location2D< typename T=int16_t >;
class modm::Matrix< typename T, uint8_t ROWS, uint8_t COLUMNS >;
class modm::Pid< typename T , unsigned int ScaleFactor=1 >;
class modm::PointSet2D< typename T >;
class modm::Polygon2D< typename T >;
class modm::Quaternion< class T >;
class modm::Ray2D< typename T=int16_t >;
class modm::SCurveController< typename T  >;
class modm::SCurveGenerator< typename T  >;
class modm::Saturated< typename T >;
class modm::Tolerance;
class modm::Vector< T, 1 >;
class modm::Vector< T, 2 >;
class modm::Vector< T, 3 >;
class modm::Vector< T, 4 >;
class modm::Vector< typename T, uint8_t N >;
class modm::filter::Debounce< typename T =uint8_t >;
class modm::filter::Fir< typename T , int N, int BLOCK_SIZE, signed int ScaleFactor=1 >;
class modm::filter::Median< typename T, int N >;
class modm::filter::MovingAverage< typename T , std::size_t N >;
class modm::filter::Ramp< typename T  >;
class modm::interpolation::Lagrange< typename T, template< typename > class Accessor=::modm::accessor::Ram >;
class modm::interpolation::Linear< typename T, template< typename > class Accessor=::modm::accessor::Ram >;

// Struct
struct modm::GeometricTraits< double >;
struct modm::GeometricTraits< float >;
struct modm::GeometricTraits< int16_t >;
struct modm::GeometricTraits< int32_t >;
struct modm::GeometricTraits< int8_t >;
struct modm::GeometricTraits< typename T  >;
struct modm::GeometricTraits< uint8_t >;
struct modm::Pid::Parameter;
struct modm::SCurveController::Parameter;

// Function
IOStream& modm::operator<<(IOStream &, const Matrix< T, WIDTH, HEIGHT > &);
IOStream& modm::operator<<(IOStream &os, const Location2D< T > &l);
IOStream& modm::operator<<(IOStream &os, const Vector< U, 2 > &c);
Quaternion<T> modm::operator*(const T &lhs, const Quaternion< T > &rhs);
Saturated<U> modm::abs(const Saturated< U > &x);
Saturated<U> modm::operator+(const Saturated< U > &a, const Saturated< U > &b);
Saturated<U> modm::operator-(const Saturated< U > &a, const Saturated< U > &b);
Saturated<U> modm::operator-(const Saturated< U > &x);
T modm::determinant(const modm::Matrix< T, 1, 1 > &m);
T modm::determinant(const modm::Matrix< T, 2, 2 > &m);
T modm::determinant(const modm::Matrix< T, N, N > &m);
Vector<U, 2> modm::operator*(float scale, const Vector< U, 2 > &vector);
Vector<U, 2> modm::operator/(float scale, const Vector< U, 2 > &vector);
bool modm::isPositive(const float &a);
bool modm::operator!=(const Saturated< U > &a, const Saturated< U > &b);
bool modm::operator==(const Saturated< U > &a, const Saturated< U > &b);
const T& modm::max(const T &a, const T &b);
const T& modm::max(const T &a, const T &b, Compare compare);
const T& modm::min(const T &a, const T &b);
const T& modm::min(const T &a, const T &b, Compare compare);
constexpr T modm::max(const T a, const T b, const T c);
constexpr bool modm::isBigEndian();
constexpr bool modm::isLittleEndian();
constexpr int8_t modm::leftmostBit(uint32_t value);
constexpr uint32_t modm::pow(uint32_t base, uint8_t exponent);
int16_t modm::fromBigEndian(int16_t value);
int16_t modm::fromLittleEndian(int16_t value);
int16_t modm::toBigEndian(int16_t value);
int16_t modm::toLittleEndian(int16_t value);
int32_t modm::fromBigEndian(int32_t value);
int32_t modm::fromLittleEndian(int32_t value);
int32_t modm::math::mac(int32_t result, int16_t a, int16_t b);
int32_t modm::math::mul(int16_t a, int16_t b);
int32_t modm::toBigEndian(int32_t value);
int32_t modm::toLittleEndian(int32_t value);
static Vector<T, 1> modm::operator*(const U &lhs, const Vector< T, 1 > &rhs);
static Vector<T, 3> modm::operator*(const U &lhs, const Vector< T, 3 > &rhs);
static Vector<T,4> modm::operator*(const U &lhs, const Vector< T, 4 > &rhs);
static Vector<U, 3> modm::operator*(const Matrix< T, 3, 3 > &lhs, const Vector< U, 3 > &rhs);
static Vector<U,4> modm::operator*(const Matrix< T, 4, 4 > &lhs, const Vector< U, 4 > &rhs);
static constexpr float modm::toDegree(float angle);
static constexpr float modm::toRadian(float angle);
std::size_t modm::bitCount(uint16_t n);
std::size_t modm::bitCount(uint32_t n);
std::size_t modm::bitCount(uint8_t n);
uint16_t modm::bitReverse(uint16_t n);
uint16_t modm::fromBigEndian(uint16_t value);
uint16_t modm::fromLittleEndian(uint16_t value);
uint16_t modm::math::sqrt(uint32_t a);
uint16_t modm::swap(uint16_t n);
uint16_t modm::toBigEndian(uint16_t value);
uint16_t modm::toLittleEndian(uint16_t value);
uint16_t modm__sqrt32(uint32_t a);
uint32_t modm::bitReverse(uint32_t n);
uint32_t modm::fromBigEndian(uint32_t value);
uint32_t modm::fromLittleEndian(uint32_t value);
uint32_t modm::math::mul(uint16_t a, uint16_t b);
uint32_t modm::swap(uint32_t n);
uint32_t modm::toBigEndian(uint32_t value);
uint32_t modm::toLittleEndian(uint32_t value);
uint8_t modm::bitReverse(uint8_t n);
uint8_t modm::swap(uint8_t n);
void modm::swap(int16_t &a, int16_t &b);
void modm::swap(uint8_t &a, uint8_t &b);

// Typedef
typedef Matrix<float, 1, 1> modm::Matrix1f;
typedef Matrix<float, 2, 2> modm::Matrix2f;
typedef Matrix<float, 3, 3> modm::Matrix3f;
typedef Matrix<float, 4, 4> modm::Matrix4f;
typedef Vector<float, 1> modm::Vector1f;
typedef Vector<float, 2> modm::Vector2f;
typedef Vector<float, 3> modm::Vector3f;
typedef Vector<float, 4> modm::Vector4f;
typedef Vector<int16_t, 1> modm::Vector1i;
typedef Vector<int16_t, 2> modm::Vector2i;
typedef Vector<int16_t, 3> modm::Vector3i;
typedef Vector<int16_t, 4> modm::Vector4i;
typedef Vector<uint16_t, 2> modm::Vector2u;
typedef Vector<uint16_t, 3> modm::Vector3u;
typedef Vector<uint16_t, 4> modm::Vector4u;

// Define
#define IMPLEMENT_VECTOR_ACCESSOR4(a, b, c, d)
#define M_1_PI
#define M_2_PI
#define M_PI
#define M_PI_2
#define M_PI_4
#define M_SQRT2
#define M_TWOPI


modm:math modm_math modm: math modm_architecture modm: architecture modm_architecture->modm_math modm_math_filter modm: math: filter modm_math_filter->modm_math modm_math_geometry modm: math: geometry modm_math_geometry->modm_math modm_math_interpolation modm: math: interpolation modm_math_interpolation->modm_math modm_math_matrix modm: math: matrix modm_math_matrix->modm_math modm_math_saturated modm: math: saturated modm_math_saturated->modm_math modm_math_utils modm: math: utils modm_math_utils->modm_math