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