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 */