/*************************************************************************** * Copyright (c) 2023 Ondsel, Inc. * * * * This file is part of OndselSolver. * * * * See LICENSE file for details about copyright. * ***************************************************************************/ #pragma once #include "Array.h" namespace MbD { template class RowTypeMatrix : public Array { public: RowTypeMatrix() {} RowTypeMatrix(size_t m) : Array(m) {} RowTypeMatrix(std::initializer_list list) : Array{ list } {} void copyFrom(std::shared_ptr> x); virtual void zeroSelf() override = 0; //double maxMagnitude() override; size_t numberOfElements() override; size_t nrow() { return this->size(); } size_t ncol() { return this->at(0)->numberOfElements(); } }; template inline void RowTypeMatrix::copyFrom(std::shared_ptr> x) { for (size_t i = 0; i < x->size(); i++) { this->at(i)->copyFrom(x->at(i)); } } //template //inline double RowTypeMatrix::maxMagnitude() //{ // double max = 0.0; // for (size_t i = 0; i < this->size(); i++) // { // double element = this->at(i)->maxMagnitude(); // if (max < element) max = element; // } // return max; //} template inline size_t RowTypeMatrix::numberOfElements() { return this->nrow() * this->ncol(); } }