File indexing completed on 2024-04-28 11:20:38
0001 /* 0002 SPDX-FileCopyrightText: 2011 Matteo Agostinelli <agostinelli@gmail.com> 0003 0004 SPDX-License-Identifier: GPL-2.0-or-later 0005 */ 0006 0007 #ifndef QALCULATEEXTENSIONS_H 0008 #define QALCULATEEXTENSIONS_H 0009 0010 #include <extension.h> 0011 0012 #define QALCULATE_EXT_CDTOR_DECL(name) Qalculate##name##Extension(QObject* parent); \ 0013 ~Qalculate##name##Extension(); 0014 0015 class QalculateHistoryExtension : public Cantor::HistoryExtension 0016 { 0017 public: 0018 QALCULATE_EXT_CDTOR_DECL(History) 0019 QString lastResult() override; 0020 }; 0021 0022 class QalculateVariableManagementExtension : public Cantor::VariableManagementExtension 0023 { 0024 public: 0025 QALCULATE_EXT_CDTOR_DECL(VariableManagement) 0026 QString addVariable(const QString& name, const QString& value) override; 0027 QString setValue(const QString& name, const QString& value) override; 0028 QString removeVariable(const QString& name) override; 0029 QString saveVariables(const QString& fileName) override; 0030 QString loadVariables(const QString& fileName) override; 0031 QString clearVariables() override; 0032 }; 0033 0034 class QalculatePlotExtension : public Cantor::Extension 0035 { 0036 public: 0037 QALCULATE_EXT_CDTOR_DECL(Plot) 0038 }; 0039 0040 class QalculateCASExtension : public Cantor::CASExtension 0041 { 0042 public: 0043 QALCULATE_EXT_CDTOR_DECL(CAS) 0044 0045 public Q_SLOTS: 0046 QString solve(const QStringList& equations, const QStringList& variables) override; 0047 QString simplify(const QString& expression) override; 0048 QString expand(const QString& expression) override; 0049 0050 }; 0051 0052 class QalculateCalculusExtension : public Cantor::CalculusExtension 0053 { 0054 public: 0055 QALCULATE_EXT_CDTOR_DECL(Calculus) 0056 0057 public Q_SLOTS: 0058 QString limit(const QString& expression, const QString& variable, const QString& limit) override; 0059 QString differentiate(const QString& function,const QString& variable, int times) override; 0060 QString integrate(const QString& function, const QString& variable) override; 0061 QString integrate(const QString& function,const QString& variable, const QString& left, const QString& right) override; 0062 }; 0063 0064 class QalculateLinearAlgebraExtension : public Cantor::LinearAlgebraExtension 0065 { 0066 public: 0067 QALCULATE_EXT_CDTOR_DECL(LinearAlgebra) 0068 0069 public Q_SLOTS: 0070 //Commands to create Vectors/Matrices 0071 QString createVector(const QStringList& entries, VectorType type) override; 0072 QString createMatrix(const Matrix& matrix) override; 0073 QString identityMatrix(int size) override; 0074 0075 //basic functions 0076 QString rank(const QString& matrix) override; 0077 QString invertMatrix(const QString& matrix) override; 0078 QString charPoly(const QString& matrix) override; 0079 QString eigenVectors(const QString& matrix) override; 0080 QString eigenValues(const QString& matrix) override; 0081 0082 }; 0083 0084 #endif /* QALCULATEEXTENSIONS_H */