a

Dependencies:   mbed mbed-rtos

Committer:
alexpirciu
Date:
Thu Mar 28 07:44:42 2019 +0000
Revision:
1:ceee5a608e7c
assa

Who changed what in which revision?

UserRevisionLine numberNew contents of line
alexpirciu 1:ceee5a608e7c 1 /**
alexpirciu 1:ceee5a608e7c 2 ******************************************************************************
alexpirciu 1:ceee5a608e7c 3 * @file PolynomialFunction.hpp
alexpirciu 1:ceee5a608e7c 4 * @author RBRO/PJ-IU
alexpirciu 1:ceee5a608e7c 5 * @version V1.0.0
alexpirciu 1:ceee5a608e7c 6 * @date day-month-year
alexpirciu 1:ceee5a608e7c 7 * @brief This file contains the class declaration for the Plynomial Function
alexpirciu 1:ceee5a608e7c 8 * methods.
alexpirciu 1:ceee5a608e7c 9 ******************************************************************************
alexpirciu 1:ceee5a608e7c 10 */
alexpirciu 1:ceee5a608e7c 11
alexpirciu 1:ceee5a608e7c 12 /* include guard */
alexpirciu 1:ceee5a608e7c 13 #ifndef POLYNOMIALFUNCTION_HPP
alexpirciu 1:ceee5a608e7c 14 #define POLYNOMIALFUNCTION_HPP
alexpirciu 1:ceee5a608e7c 15
alexpirciu 1:ceee5a608e7c 16 #include <stdint.h>
alexpirciu 1:ceee5a608e7c 17 #include <math.h>
alexpirciu 1:ceee5a608e7c 18 #include <iostream>
alexpirciu 1:ceee5a608e7c 19
alexpirciu 1:ceee5a608e7c 20
alexpirciu 1:ceee5a608e7c 21 namespace math{
alexpirciu 1:ceee5a608e7c 22 /**
alexpirciu 1:ceee5a608e7c 23 * @brief It represents a one dimensional polynomial function
alexpirciu 1:ceee5a608e7c 24 *
alexpirciu 1:ceee5a608e7c 25 * @tparam T The type of the Polynomial function
alexpirciu 1:ceee5a608e7c 26 * @tparam N The degree of the polynom.
alexpirciu 1:ceee5a608e7c 27 */
alexpirciu 1:ceee5a608e7c 28 template <class T,int32_t N>
alexpirciu 1:ceee5a608e7c 29 class PolynomialFunction
alexpirciu 1:ceee5a608e7c 30 {
alexpirciu 1:ceee5a608e7c 31 public:
alexpirciu 1:ceee5a608e7c 32 /* Constructors */
alexpirciu 1:ceee5a608e7c 33 PolynomialFunction();
alexpirciu 1:ceee5a608e7c 34 PolynomialFunction(T coefficients[N+1]);
alexpirciu 1:ceee5a608e7c 35 /* Destructors */
alexpirciu 1:ceee5a608e7c 36 virtual ~PolynomialFunction();
alexpirciu 1:ceee5a608e7c 37
alexpirciu 1:ceee5a608e7c 38 // template<int32_t N2> void add(PolynomialFunction<T,N2> poli);
alexpirciu 1:ceee5a608e7c 39 /* Add */
alexpirciu 1:ceee5a608e7c 40 template<int32_t N2> math::PolynomialFunction<T,(N2<N?N:N2)> add(PolynomialFunction<T,N2> b);
alexpirciu 1:ceee5a608e7c 41 /* Multiply */
alexpirciu 1:ceee5a608e7c 42 template<int32_t N2> math::PolynomialFunction<T,(N2+N)> multip(PolynomialFunction<T,N2> b);
alexpirciu 1:ceee5a608e7c 43 /* Calculate value */
alexpirciu 1:ceee5a608e7c 44 T calculateValue(T input_value);
alexpirciu 1:ceee5a608e7c 45 /* First order derivate */
alexpirciu 1:ceee5a608e7c 46 math::PolynomialFunction<T,N-1> derivateFO();
alexpirciu 1:ceee5a608e7c 47 /* Get degree */
alexpirciu 1:ceee5a608e7c 48 int32_t getDegree();
alexpirciu 1:ceee5a608e7c 49 /* Get coefficient value */
alexpirciu 1:ceee5a608e7c 50 T getCoefficientValue(int32_t index);
alexpirciu 1:ceee5a608e7c 51 /* Set coefficient value */
alexpirciu 1:ceee5a608e7c 52 void setCoefficientValue(int32_t index,T value );
alexpirciu 1:ceee5a608e7c 53 private:
alexpirciu 1:ceee5a608e7c 54 /* Coefficients array */
alexpirciu 1:ceee5a608e7c 55 /**
alexpirciu 1:ceee5a608e7c 56 * @brief The list of the coeffients.
alexpirciu 1:ceee5a608e7c 57 *
alexpirciu 1:ceee5a608e7c 58 */
alexpirciu 1:ceee5a608e7c 59 T coefficients[N+1];
alexpirciu 1:ceee5a608e7c 60 };
alexpirciu 1:ceee5a608e7c 61
alexpirciu 1:ceee5a608e7c 62 }; // namepace math
alexpirciu 1:ceee5a608e7c 63
alexpirciu 1:ceee5a608e7c 64 #include "polynomialfunction.inl"
alexpirciu 1:ceee5a608e7c 65
alexpirciu 1:ceee5a608e7c 66 #endif // POLYNOMIALFUNCTION_HPP
alexpirciu 1:ceee5a608e7c 67