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

📄 spdfd.h

📁 完全使用C++写的高效线性代数运算库!还提供了矩阵类。
💻 H
字号:
//      LAPACK++ (V. 1.1)//      (C) 1992-1996 All Rights Reserved.#ifndef _LA_SPD_FACT_DOUBLE_H_#define _LA_SPD_FACT_DOUBLE_H_#include LA_SPD_MAT_DOUBLE_H#include "lapack.h"class LaSpdFactDouble{    int size_;    int gdim_;    LaSpdMatDouble S_;    public:    LaSpdFactDouble();    LaSpdFactDouble(int,int);    LaSpdFactDouble(const LaSpdFactDouble&);    ~LaSpdFactDouble();    LaSpdFactDouble& ref(LaSpdFactDouble&);    LaSpdFactDouble& ref(LaSpdMatDouble&);    LaSpdFactDouble& copy(const LaSpdFactDouble&);    LaSpdFactDouble& copy(const LaSpdMatDouble&);    LaSpdMatDouble& S() { return S_; }    int size() { return size_; }    int gdim() { return gdim_; }};inline LaSpdFactDouble::LaSpdFactDouble(): S_(), size_(0), gdim_(0){}inline LaSpdFactDouble::LaSpdFactDouble(int m,int n):S_(m,n),                 size_(n), gdim_(m){}inline LaSpdFactDouble::LaSpdFactDouble(const LaSpdFactDouble &X){    size_ = X.size_;    gdim_ = X.gdim_;    S_.copy(X.S_);}inline LaSpdFactDouble::~LaSpdFactDouble(){}inline LaSpdFactDouble& LaSpdFactDouble::ref(LaSpdFactDouble &X){    size_ = X.size_;    gdim_ = X.gdim_;    S_.ref(X.S_);    return *this;}inline LaSpdFactDouble& LaSpdFactDouble::ref(LaSpdMatDouble &X){    size_ = X.size(1);    gdim_ = X.gdim(0);    S_.ref(X);    return *this;}    inline LaSpdFactDouble& LaSpdFactDouble::copy(const LaSpdFactDouble &X){    size_ = X.size_;    gdim_ = X.gdim_;    S_.copy(X.S_);    return *this;}inline LaSpdFactDouble& LaSpdFactDouble::copy(const LaSpdMatDouble &X){    size_ = X.size(1);    gdim_ = X.gdim(0);    S_.copy(X);    return *this;}inline void LaSpdMatFactorize(LaSpdMatDouble &A, LaSpdFactDouble &AF){    char uplo = 'L';    integer N = A.size(1), lda = A.gdim(0), info = 0;    AF.copy(A);    F77NAME(dpotrf)(&uplo, &N, &(AF.S()(0,0)), &lda, &info);}inline void LaLinearSolve(LaSpdFactDouble &AF, LaGenMatDouble &X,                            LaGenMatDouble &B){    char uplo = 'L';    integer N = AF.size(), nrhs = X.size(1), lda = AF.gdim(),             ldb = B.size(0), info = 0;    X.inject(B);    F77NAME(dpotrs)(&uplo, &N, &nrhs, &(AF.S()(0,0)), &lda, &X(0,0),                    &ldb, &info);}#endif // _LA_SPD_FACT_DOUBLE_H_

⌨️ 快捷键说明

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