## File: polynomial.h

package info (click to toggle)
analitza 4:17.08.3-2
 `1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586` ``````/************************************************************************************* * Copyright (C) 2011 by Aleix Pol * * * * This program is free software; you can redistribute it and/or * * modify it under the terms of the GNU General Public License * * as published by the Free Software Foundation; either version 2 * * of the License, or (at your option) any later version. * * * * This program is distributed in the hope that it will be useful, * * but WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * * GNU General Public License for more details. * * * * You should have received a copy of the GNU General Public License * * along with this program; if not, write to the Free Software * * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA * *************************************************************************************/ #ifndef POLYNOMIAL_H #define POLYNOMIAL_H #include #include "operator.h" namespace Analitza { class Apply; class Object; class Operator; /** * \class Monomial * * \ingroup AnalitzaModule * * \brief Monomial object. * * It allows you compose and create a Polynomial. */ class Monomial { public: Monomial(const Operator& o, Object* o2, bool& sign); Analitza::Object* createMono(const Analitza::Operator& o) const; bool isValue() const; static bool isScalar(const Object* o); qreal first; Analitza::Object* second; }; /** * \class Polynomial * * \ingroup AnalitzaModule * * \brief Polynomial object. * * The important method in this class is negate, which change the sign of the Monomial * referenced by an index. * * \author Aleix Pol */ class Polynomial : public QList { public: Polynomial(Apply* c); Analitza::Object* toObject(); void negate(int i); private: void addMonomial(const Monomial& m); void addValue(Analitza::Object* value); void simpScalars(bool m_firstValue); QList m_scalars; Operator m_operator; bool m_sign; }; } #endif // POLYNOMIAL_H ``````