[poincare] Add a vector type for matrix product and norm operations

Change-Id: I28b0956273f8c0a3a9bdc4389956caa106d6b8af
This commit is contained in:
Hugo Saint-Vignes
2020-11-18 10:35:10 +01:00
committed by EmilieNumworks
parent 522456677a
commit d8527b02ad
8 changed files with 23 additions and 19 deletions

View File

@@ -8,10 +8,15 @@ namespace Poincare {
class Array {
public:
enum class VectorType {
None,
Vertical,
Horizontal
};
Array() :
m_numberOfRows(0),
m_numberOfColumns(0) {}
bool isVector() const { return m_numberOfRows == 1 || m_numberOfColumns == 1; }
VectorType vectorType() const { return m_numberOfColumns == 1 ? VectorType::Vertical : (m_numberOfRows == 1 ? VectorType::Horizontal : VectorType::None); }
int numberOfRows() const { return m_numberOfRows; }
int numberOfColumns() const { return m_numberOfColumns; }
void setNumberOfRows(int rows) { assert(rows >= 0); m_numberOfRows = rows; }

View File

@@ -57,7 +57,7 @@ public:
static Matrix Builder() { return TreeHandle::NAryBuilder<Matrix, MatrixNode>(); }
void setDimensions(int rows, int columns);
bool isVector() const { return node()->isVector(); }
Array::VectorType vectorType() const { return node()->vectorType(); }
int numberOfRows() const { return node()->numberOfRows(); }
int numberOfColumns() const { return node()->numberOfColumns(); }
using TreeHandle::addChildAtIndexInPlace;

View File

@@ -63,7 +63,7 @@ public:
std::complex<T> complexAtIndex(int index) const {
return node()->complexAtIndex(index);
}
bool isVector() const { return node()->isVector(); }
Array::VectorType vectorType() const { return node()->vectorType(); }
int numberOfRows() const { return node()->numberOfRows(); }
int numberOfColumns() const { return node()->numberOfColumns(); }
void setDimensions(int rows, int columns);