⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mstruct.h

📁 A C++ class library for scientific computing
💻 H
字号:
/*************************************************************************** * blitz/mstruct.h      Matrix structure classes * * $Id: mstruct.h,v 1.4 2003/12/11 03:44:22 julianc Exp $ * * Copyright (C) 1997-2001 Todd Veldhuizen <tveldhui@oonumerics.org> * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the * GNU General Public License for more details. * * * Suggestions:          blitz-dev@oonumerics.org * Bugs:                 blitz-bugs@oonumerics.org * * For more information, please see the Blitz++ Home Page: *    http://oonumerics.org/blitz/ * ***************************************************************************/#ifndef BZ_MSTRUCT_H#define BZ_MSTRUCT_H#ifndef BZ_BLITZ_H #include <blitz/blitz.h>#endif#ifndef BZ_ZERO_H #include <blitz/zero.h>#endif/* * Each matrix structure class encapsulates a storage format for matrix * data.  It is responsible for: * - Storing the size of the matrix * - Calculating how many unique elements the matrix will have * - Mapping indices (i,j) onto memory locations * - Performing any sign reversals or conjugations when matrix *   elements are retrieved (e.g. in a Hermitian or Skew symmetric *   matrix) * * Every matrix structure class must provide these methods: * * ctor() * ctor(unsigned rows, unsigned cols) * unsigned columns() const; * unsigned cols()    const; * unsigned firstInRow() const; * unsigned firstInCol() const; * template<typename T> T& get(T* data, unsigned i, unsigned j); * template<typename T> T  get(const T* data, unsigned i, unsigned j) const; * bool inRange(unsigned i, unsigned j) const * unsigned lastInRow() const; * unsigned lastInCol() const; * unsigned numElements() const; * void resize(unsigned rows, unsigned cols); * unsigned rows()    const; * * Each matrix structure class must declare a public type * T_iterator which is an iterator to scan through the unique * entries of the matrix.  The iterator class must provide * these methods: * * ctor(unsigned rows, unsigned cols) * unsigned offset() const * operator bool() const * unsigned row() const * unsigned col() const */BZ_NAMESPACE(blitz)class MatrixStructure { };class AsymmetricMatrix : public MatrixStructure {public:    AsymmetricMatrix()        : rows_(0), cols_(0)    { }    AsymmetricMatrix(unsigned rows, unsigned cols)        : rows_(rows), cols_(cols)    { }    unsigned columns() const { return cols_; }    unsigned cols() const { return cols_; }    bool inRange(const unsigned i,const unsigned j) const {        return (i<rows_) && (j<cols_);    }    void resize(unsigned rows, unsigned cols) {        rows_ = rows;        cols_ = cols;    }    unsigned rows() const { return rows_; }protected:    unsigned rows_, cols_;};// Still to be implemented:// SkewSymmetric// Hermitian// Tridiagonal// Banded<L,H>// Upper bidiagonal// Lower bidiagonal// Upper Hessenberg// Lower HessenbergBZ_NAMESPACE_END#include <blitz/matgen.h>         // RowMajor and ColumnMajor general matrices#include <blitz/matsymm.h>        // Symmetric#include <blitz/matdiag.h>        // Diagonal#include <blitz/mattoep.h>        // Toeplitz#include <blitz/matltri.h>        // Lower triangular#include <blitz/matutri.h>        // Upper triangular#endif // BZ_MSTRUCT_H

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -