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

📄 sybfd.h

📁 完全使用C++写的高效线性代数运算库!还提供了矩阵类。
💻 H
字号:
//      LAPACK++ (V. 1.1)//      (C) 1992-1996 All Rights Reserved.#ifndef _LA_SYMM_BAND_FACT_DOUBLE_H_#define _LA_SYMM_BAND_FACT_DOUBLE_H_#include LA_VECTOR_INT_H#include LA_UNIT_LOWER_TRIANG_MAT_DOUBLE_H#include LA_SYMM_BAND_MAT_DOUBLE_H#include "lapack.h"class LaSymmBandFactDouble{    LaSymmBandMatDouble         S_;    int                      info_;    char                     uplo_;public:    // constructor    inline LaSymmBandFactDouble();    inline LaSymmBandFactDouble(int,int);    inline LaSymmBandFactDouble(LaSymmBandFactDouble &);    inline ~LaSymmBandFactDouble();    // extraction functions for components    inline LaSymmBandMatDouble& S();    inline int& info();    inline char& uplo();    // operators    inline LaSymmBandFactDouble ref(LaSymmBandFactDouble &);    inline LaSymmBandFactDouble ref(LaSymmBandMatDouble &);    inline LaSymmBandFactDouble& copy(LaSymmBandFactDouble &);    inline LaSymmBandFactDouble& copy(LaSymmBandMatDouble &);};    // constructor/destructor functionsinline LaSymmBandFactDouble::LaSymmBandFactDouble():S_(),            info_(0),uplo_('L'){}inline LaSymmBandFactDouble::LaSymmBandFactDouble(int n, int m):S_(n,m),            info_(0),uplo_('L'){}inline LaSymmBandFactDouble::LaSymmBandFactDouble(LaSymmBandFactDouble &F){  S_.ref(F.S_);  info_ = F.info_;  uplo_ = F.uplo_;}inline LaSymmBandFactDouble::~LaSymmBandFactDouble(){}    // member functionsinline LaSymmBandMatDouble& LaSymmBandFactDouble::S(){    return S_;}inline int& LaSymmBandFactDouble::info(){    return info_;}inline char& LaSymmBandFactDouble::uplo(){    return uplo_;}        // operatorsinline LaSymmBandFactDouble LaSymmBandFactDouble::ref(LaSymmBandFactDouble& F){    S_.ref(F.S_);    info_ = F.info_;    uplo_ = F.uplo_;        return *this;}inline LaSymmBandFactDouble LaSymmBandFactDouble::ref(LaSymmBandMatDouble &G){  S_.ref(G);  info_ = 0;  uplo_ = 'L';  return *this;}inline LaSymmBandFactDouble& LaSymmBandFactDouble::copy(LaSymmBandFactDouble& F){    S_.copy(F.S_);    info_ = F.info_;    uplo_ = F.uplo_;        return *this;}inline LaSymmBandFactDouble& LaSymmBandFactDouble::copy(LaSymmBandMatDouble &G){  S_.copy(G);  info_ = 0;  uplo_ = 'L';  return *this;}inline void LaSymmBandMatFactorize(const LaSymmBandMatDouble &A,                                    LaSymmBandFactDouble& AF){    char uplo = 'L';    integer n = A.size(0), kd = A.subdiags(), lda = A.gdim(0),            info = 0;    AF.S().copy(A);    F77NAME(dpbtrf)(&uplo, &n, &kd, &(AF.S()(0,0)), &lda, &info);}inline void LaLinearSolve(LaSymmBandFactDouble &AF, LaGenMatDouble &X,                            LaGenMatDouble &B){    char uplo = 'L';    integer n = AF.S().size(1), kd = AF.S().subdiags(), ldaf = AF.S().gdim(0),            info = 0, nrhs = X.size(1), ldb = B.size(0);    X.inject(B);    F77NAME(dpbtrs)(&uplo, &n, &kd, &nrhs, &(AF.S()(0,0)), &ldaf,                     &X(0,0), &ldb, &info);}#endif // _LA_SYMM_BAND_FACT_DOUBLE_H_

⌨️ 快捷键说明

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