File indexing completed on 2024-04-28 11:20:42

0001 /*
0002     SPDX-License-Identifier: GPL-2.0-or-later
0003     SPDX-FileCopyrightText: 2009 Alexander Rieder <alexanderrieder@gmail.com>
0004 */
0005 
0006 #ifndef _SAGEEXTENSIONS_H
0007 #define _SAGEEXTENSIONS_H
0008 
0009 #include "extension.h"
0010 
0011 class SageHistoryExtension : public Cantor::HistoryExtension
0012 {
0013   public:
0014     explicit SageHistoryExtension( QObject* parent );
0015     ~SageHistoryExtension() override;
0016   public Q_SLOTS:
0017     QString lastResult() override;
0018 };
0019 
0020 class SageScriptExtension : public Cantor::ScriptExtension
0021 {
0022   public:
0023     explicit SageScriptExtension(QObject* parent);
0024     ~SageScriptExtension() override;
0025   public Q_SLOTS:
0026     QString runExternalScript(const QString& path) override;
0027     QString scriptFileFilter() override;
0028     QString highlightingMode() override;
0029 };
0030 
0031 class SageCASExtension : public Cantor::CASExtension
0032 {
0033   public:
0034     explicit SageCASExtension( QObject* parent);
0035     ~SageCASExtension() override;
0036 
0037   public Q_SLOTS:
0038     QString solve(const QStringList& equations, const QStringList& variables) override;
0039     QString simplify(const QString& expression) override;
0040     QString expand(const QString& expression) override;
0041 
0042 };
0043 
0044 class SageCalculusExtension : public Cantor::CalculusExtension
0045 {
0046   public:
0047     explicit SageCalculusExtension( QObject* parent);
0048     ~SageCalculusExtension() override;
0049 
0050   public Q_SLOTS:
0051     QString limit(const QString& expression, const QString& variable, const QString& limit) override;
0052     QString differentiate(const QString& function,const QString& variable, int times) override;
0053     QString integrate(const QString& function, const QString& variable) override;
0054     QString integrate(const QString& function,const QString& variable, const QString& left, const QString& right) override;
0055 };
0056 
0057 class SageLinearAlgebraExtension : public Cantor::LinearAlgebraExtension
0058 {
0059   public:
0060     explicit SageLinearAlgebraExtension( QObject* parent);
0061     ~SageLinearAlgebraExtension() override;
0062 
0063   public Q_SLOTS:
0064     //Commands to create Vectors/Matrices
0065     QString createVector(const QStringList& entries, Cantor::LinearAlgebraExtension::VectorType type) override;
0066     QString nullVector(int size, Cantor::LinearAlgebraExtension::VectorType type) override;
0067     QString createMatrix(const Matrix& matrix) override;
0068     QString identityMatrix(int size) override;
0069     QString nullMatrix(int rows,int columns) override;
0070 
0071     //basic functions
0072     QString rank(const QString& matrix) override;
0073     QString invertMatrix(const QString& matrix) override;
0074     QString charPoly(const QString& matrix) override;
0075     QString eigenVectors(const QString& matrix) override;
0076     QString eigenValues(const QString& matrix) override;
0077 };
0078 
0079 class SagePlotExtension : public Cantor::PlotExtension
0080 {
0081   public:
0082     explicit SagePlotExtension(QObject* parent);
0083     ~SagePlotExtension() override;
0084   public Q_SLOTS:
0085     QString plotFunction2d(const QString& function, const QString& variable, const QString& left, const QString& right) override;
0086     QString plotFunction3d(const QString& function, const VariableParameter& var1, const VariableParameter& var2) override;
0087 };
0088 
0089 class SagePackagingExtension : public Cantor::PackagingExtension
0090 {
0091   public:
0092     explicit SagePackagingExtension(QObject* parent);
0093     ~SagePackagingExtension() override;
0094 
0095   public Q_SLOTS:
0096     QString importPackage(const QString& module) override;
0097 };
0098 
0099 #endif /* _SAGEEXTENSIONS_H */