/* * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * * Copyright 2011-2015 Danny Robson */ #ifdef __UTIL_MATRIX_IPP #error #endif #define __UTIL_MATRIX_IPP /////////////////////////////////////////////////////////////////////////////// template T* util::matrix::operator[] (size_t idx) { return this->values[idx]; } //----------------------------------------------------------------------------- template const T* util::matrix::operator[] (size_t idx) const { return this->values[idx]; } //----------------------------------------------------------------------------- template const T* util::matrix::begin (void) const { return &(*this)[0][0]; } //----------------------------------------------------------------------------- template const T* util::matrix::end (void) const { return &(*this)[S][0]; } //----------------------------------------------------------------------------- template const T* util::matrix::cbegin (void) const { return begin (); } //----------------------------------------------------------------------------- template const T* util::matrix::cend (void) const { return end (); } //----------------------------------------------------------------------------- template T* util::matrix::begin (void) { return &(*this)[0][0]; } //----------------------------------------------------------------------------- template T* util::matrix::end (void) { return &(*this)[S][0]; } /////////////////////////////////////////////////////////////////////////////// template template util::matrix util::matrix::cast (void) const { util::matrix out; for (size_t i = 0; i < rows; ++i) for (size_t j = 0; j < cols; ++j) out.values[i][j] = values[i][j]; return out; } ///////////////////////////////////////////////////////////////////////////////// //template //T //util::matrix::determinant (void) const //{ // return util::determinant (*this); //} // // ////----------------------------------------------------------------------------- //template //util::matrix //util::matrix::inverse (void) const //{ // return util::inverse (*this); //} /////////////////////////////////////////////////////////////////////////////// //template //util::matrix //util::matrix::operator/ (T t) const //{ // auto out = *this; // // for (auto &i: out.values) // for (auto &j: i) // j /= t; // // return out; //} // // ///////////////////////////////////////////////////////////////////////////////// //template //bool //util::matrix::operator== (const matrix &m) const //{ // for (size_t i = 0; i < S; ++i) // for (size_t j = 0; j < S; ++j) // if (!exactly_equal (values[i][j], m[i][j])) // return false; // return true; //}