亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? blas++.h

?? 完全使用C++寫的高效線性代數運算庫!還提供了矩陣類。
?? H
字號:
//      LAPACK++ (V. 1.1)#ifndef _BLAS_PP_H_#define _BLAS_PP_H_// requires//#include "laexcp.h"#include "blas1++.h"#include "blas2++.h"#include "blas3++.h"double abs(double);//-------------------------------------// Vector/Vector operators//-------------------------------------#ifdef _LA_VECTOR_DOUBLE_H_inline LaVectorDouble operator*(const LaVectorDouble &x, double a){    int N = x.size();    LaVectorDouble t(N);    for (int i=0; i<N; i++)    {        t(i) = a * x(i);    }    return t;}    inline LaVectorDouble operator*(double a, const LaVectorDouble &x){    return operator*(x,a);}inline double operator*(const LaVectorDouble &dx,                                 const LaVectorDouble &dy){    assert(dx.size()==dy.size());    integer incx = dx.inc(), incy = dy.inc(), n = dx.size();    return F77NAME(ddot)(&n, &dx(0), &incx, &dy(0), &incy);}                      inline LaVectorDouble operator+(const LaVectorDouble &dx,                                 const LaVectorDouble &dy){    assert(dx.size()==dy.size());    integer incx = dx.inc(), incy = dx.inc(), n = dx.size();    double da = 1.0;    LaVectorDouble tmp((int) n);    tmp = dy;    F77NAME(daxpy)(&n, &da, &dx(0), &incx, &tmp(0), &incy);    return tmp;}inline LaVectorDouble operator-(const LaVectorDouble &dx,                                 const LaVectorDouble &dy){    assert(dx.size()==dy.size());    integer incx = dx.inc(), incy = dy.inc(), n = dx.size();    double da = -1.0;    LaVectorDouble tmp(n);    tmp = dx;    F77NAME(daxpy)(&n, &da, &dy(0), &incx, &tmp(0), &incy);    return tmp;}//-------------------------------------// Matrix/Vector operators//-------------------------------------#ifdef _LA_GEN_MAT_DOUBLE_H_inline LaVectorDouble operator*(const LaGenMatDouble &A,                                 const LaVectorDouble &dx){    char trans = 'N';    double alpha = 1.0, beta = 0.0;    integer M = A.size(0), N = A.size(1), lda = A.gdim(0);    LaVectorDouble dy(M);    integer incx = dx.inc();    integer incy = dy.inc();    dy = 0.0;    F77NAME(dgemv)(&trans, &M, &N, &alpha, &A(0,0), &lda, &dx(0), &incx,         &beta, &dy(0), &incy);     return dy;         }#endif#ifdef _LA_BAND_MAT_DOUBLE_H_inline LaVectorDouble operator*(const LaBandMatDouble &A,                                 const LaVectorDouble &dx){    char trans = 'N';    double alpha = 1.0, beta = 0.0;    integer M = A.size(0), N = A.size(1), lda = A.gdim(0),        kl = A.subdiags(), ku = A.superdiags();     LaVectorDouble dy(N);    integer incx = dx.inc(), incy = dy.inc();    F77NAME(dgbmv)(&trans, &M, &N, &kl, &ku, &alpha, &A(0,0), &lda,                   &dx(0), &incx, &beta, &dy(0), &incy);    return dy;}#endif#ifdef _LA_SYMM_MAT_DOUBLE_H_inline LaVectorDouble operator*(const LaSymmMatDouble &A,                                 const LaVectorDouble &dx){    char uplo = 'L';    double alpha = 1.0, beta = 0.0;    integer N = A.size(1), lda = A.gdim(0);    LaVectorDouble dy(N);    integer incx = dx.inc(), incy = dy.inc();    F77NAME(dsymv)(&uplo, &N, &alpha, &A(0,0), &lda, &dx(0), &incx,                   &beta, &dy(0), &incy);    return dy;}#endif#ifdef _LA_SYMM_BAND_MAT_DOUBLE_H_ inline LaVectorDouble operator*(const LaSymmBandMatDouble &A,         const LaVectorDouble &dx) {    char uplo = 'L';    double alpha = 1.0, beta = 0.0;    integer N = A.size(1), lda = A.gdim(0), k = A.subdiags();    LaVectorDouble dy(N);    integer incx = dx.inc(), incy = dy.inc();    F77NAME(dsbmv)(&uplo, &N, &k, &alpha, &A(0,0), &lda, &dx(0), &incx,                   &beta, &dy(0), &incy);    return dy;}#endif#ifdef _LA_SPD_MAT_DOUBLE_H_inline LaVectorDouble operator*(const LaSpdMatDouble &AP,                                 const LaVectorDouble &dx){    char uplo = 'L';    double alpha = 1.0, beta = 0.0;    integer N = AP.size(1), incx = dx.inc();     integer lda = AP.gdim(0);    LaVectorDouble dy(N);    integer incy = dy.inc();    F77NAME(dsymv)(&uplo, &N, &alpha, &AP(0,0), &lda, &dx(0), &incx, &beta,                    &dy(0), &incy);    return dy;}#endif#ifdef _LA_LOWER_TRIANG_MAT_DOUBLE_H_inline LaVectorDouble operator*(const LaLowerTriangMatDouble &A,                                 const LaVectorDouble &dx){    char uplo = 'L', trans = 'N', diag = 'N';    integer N = A.size(1), lda = A.gdim(0),        incx = dx.inc();    LaVectorDouble dy(dx);    F77NAME(dtrmv)(&uplo, &trans, &diag, &N, &A(0,0), &lda, &dy(0), &incx);    return dy;}#endif#ifdef _LA_UPPER_TRIANG_MAT_DOUBLE_H_inline LaVectorDouble operator*(const LaUpperTriangMatDouble &A,                                 const LaVectorDouble &dx){    char uplo = 'U', trans = 'N', diag = 'N';    integer N = A.size(1), lda = A.gdim(0),        incx = dx.inc();    LaVectorDouble dy(dx);    F77NAME(dtrmv)(&uplo, &trans, &diag, &N, &A(0,0), &lda, &dy(0), &incx);    return dy;}#endif#ifdef _LA_UNIT_LOWER_TRIANG_MAT_DOUBLE_H_inline LaVectorDouble operator*(const LaUnitLowerTriangMatDouble &A,                                const LaVectorDouble &dx){    char uplo = 'L', trans = 'N', diag = 'U';    integer N = A.size(1), lda = A.gdim(0),        incx = dx.inc();    LaVectorDouble dy(dx);    F77NAME(dtrmv)(&uplo, &trans, &diag, &N, &A(0,0), &lda, &dy(0), &incx);    return dy;}#endif#ifdef _LA_UNIT_UPPER_TRIANG_MAT_DOUBLE_H_inline LaVectorDouble operator*(const LaUnitUpperTriangMatDouble &A,                                const LaVectorDouble &dx){    char uplo = 'U', trans = 'N', diag = 'U';    integer N = A.size(1), lda = A.gdim(0),        incx = dx.inc();    LaVectorDouble dy(dx);    F77NAME(dtrmv)(&uplo, &trans, &diag, &N, &A(0,0), &lda, &dy(0), &incx);    return dy;}#endif//-------------------------------------// Matrix/Matrix operators//-------------------------------------inline LaGenMatDouble operator*(const LaGenMatDouble &A,                                 const LaGenMatDouble &B){    char t = 'N';    integer m = A.size(0), k = A.size(1), n = B.size(1);    integer lda = A.gdim(0), ldb = B.gdim(0);    double alpha = 1.0, beta = 1.0;    LaGenMatDouble C(m,n);    integer ldc = A.gdim(0);    C = 0.0;  F77NAME(dgemm)(&t, &t, &m, &n, &k, &alpha, &A(0,0), &lda, &B(0,0), &ldb,                &beta, &C(0,0), &ldc);    return C;}#ifdef _LA_UNIT_LOWER_TRIANG_MAT_DOUBLE_H_inline LaGenMatDouble operator*(const LaUnitLowerTriangMatDouble &A,                                const LaGenMatDouble &B){        char side = 'L', uplo = 'L', transa = 'N', diag = 'U';        double alpha = 1.0;        integer m = B.size(0), n = B.size(1),                lda = A.gdim(0), ldb = B.gdim(0);        LaGenMatDouble C(B);  F77NAME(dtrmm)(&side, &uplo, &transa, &diag, &m, &n, &alpha,                &A(0,0), &lda, &C(0,0), &ldb);        return C;}#endif#ifdef _LA_UNIT_UPPER_TRIANG_MAT_DOUBLE_H_inline LaGenMatDouble operator*(const LaUnitUpperTriangMatDouble &A,                                const LaGenMatDouble &B){        char side = 'L', uplo = 'U', transa = 'N', diag = 'U';        double alpha = 1.0;        integer m = B.size(0), n = B.size(1),                lda = A.gdim(0), ldb = B.gdim(0);        LaGenMatDouble C(B);  F77NAME(dtrmm)(&side, &uplo, &transa, &diag, &m, &n, &alpha,                &A(0,0), &lda, &C(0,0), &ldb);        return C;}#endif#ifdef _LA_LOWER_TRIANG_MAT_DOUBLE_H_inline LaGenMatDouble operator*(const LaLowerTriangMatDouble &A,                                const LaGenMatDouble &B){        char side = 'L', uplo = 'L', transa = 'N', diag = 'N';        double alpha = 1.0;        integer m = B.size(0), n = B.size(1),                lda = A.gdim(0), ldb = B.gdim(0);        LaGenMatDouble C(B);  F77NAME(dtrmm)(&side, &uplo, &transa, &diag, &m, &n, &alpha,                &A(0,0), &lda, &C(0,0), &ldb);        return C;}#endif#ifdef _LA_UPPER_TRIANG_MAT_DOUBLE_H_inline LaGenMatDouble operator*(const LaUpperTriangMatDouble &A,                                const LaGenMatDouble &B){        char side = 'L', uplo = 'U', transa = 'N', diag = 'N';        double alpha = 1.0;        integer m = B.size(0), n = B.size(1),                lda = A.gdim(0), ldb = B.gdim(0);        LaGenMatDouble C(B);  F77NAME(dtrmm)(&side, &uplo, &transa, &diag, &m, &n, &alpha,                &A(0,0), &lda, &C(0,0), &ldb);        return C;}#endif#ifdef _LA_SYMM_MAT_DOUBLE_H_inline LaGenMatDouble operator*(const LaSymmMatDouble &A,                                 const LaGenMatDouble &B){        char side = 'L', uplo = 'L';        double alpha = 1.0, beta = 1.0;        LaGenMatDouble C(B.size(1),A.size(1));        integer m = C.size(0), n = C.size(1), lda = A.gdim(0),                ldb = B.gdim(0), ldc = C.gdim(0);  F77NAME(dsymm)(&side, &uplo, &m, &n, &alpha, &A(0,0), &lda,                &B(0,0), &ldb, &beta, &C(0,0), &ldc);        return C;}#endif#ifdef _LA_SYMM_TRIDIAG_MAT_DOUBLE_H_inline LaVectorDouble operator*(const LaSymmTridiagMatDouble& A,                                 const LaVectorDouble& X){    integer M = A.size();    integer N = X.size();    LaVectorDouble R(M);    R(0) = ((A.diag(0)(0) * X(0)) + (A.diag(-1)(0) * X(1)));    for (integer i = 1; i < M-2; i++)    {        R(i) = ((A.diag(-1)(i-1) * X(i-1)) +                (A.diag(0)(i) * X(i)) +                (A.diag(-1)(i) * X(i+1)));    }    R(M-1) = ((A.diag(0)(M-1) * X(N-1)) + (A.diag(-1)(M-2) * X(N-2)));    return R;}#endif#ifdef  _LA_TRIDIAG_MAT_DOUBLE_H_inline LaVectorDouble operator*(const LaTridiagMatDouble& A,                                 const LaVectorDouble& X){    integer M = A.size();    integer N = X.size();    LaVectorDouble R(M);    R(0) = ((A.diag(0)(0) * X(0)) + (A.diag(-1)(0) * X(1)));    for (integer i = 1; i < M-2; i++)    {        R(i) = ((A.diag(-1)(i-1) * X(i-1)) +                (A.diag(0)(i) * X(i)) +                (A.diag(1)(i) * X(i+1)));    }    R(M-1) = ((A.diag(0)(M-1) * X(N-1)) + (A.diag(1)(M-2) * X(N-2)));    return R;}#endifinline LaGenMatDouble operator-(const LaGenMatDouble &A,                                 const LaGenMatDouble &B){#ifndef HPPA    const char fname[] = "operator+(A,B)";#else    char *fname = NULL;#endif    integer M = A.size(0);    integer N = A.size(1);    if (M != B.size(0) || N != B.size(1))    {        throw(LaException(fname, "matrices non-conformant."));    }    LaGenMatDouble C(M,N);    // slow mode    // we'll hook the BLAS in later    for (integer i=0;  i<M; i++)        for(integer j=0; j<N; j++)            C(i,j) = A(i,j) - B(i,j);    return C;}inline LaGenMatDouble operator+(const LaGenMatDouble &A,                                 const LaGenMatDouble &B){#ifndef HPPA    const char fname[] = "operator+(A,B)";#else    char *fname = NULL;#endif    integer M = A.size(0);    integer N = A.size(1);    if (M != B.size(0) || N != B.size(1))    {        throw(LaException(fname, "matrices non-conformant."));    }    LaGenMatDouble C(M,N);    // slow mode    // we'll hook the BLAS in later    for (integer i=0;  i<M; i++)        for(integer j=0; j<N; j++)            C(i,j) = A(i,j) + B(i,j);    return C;}//-------------------------------------// Matrix/Vector Norms//-------------------------------------inline double Norm_Inf(const LaVectorDouble &x){       integer index = Blas_Index_Max(x);    return abs(x(index));}inline double Norm_Inf(const LaGenMatDouble &A){    integer M=A.size(0);    integer index;    // max row-sum    LaVectorDouble R(M);    for (integer i=0; i<M; i++)        R(i) = Blas_Norm1( A( i, LaIndex() ));    index = Blas_Index_Max(R);    return R(index);}#ifdef _LA_BAND_MAT_DOUBLE_H_inline double Norm_Inf(const LaBandMatDouble &A){    integer kl = A.subdiags(), ku = A.superdiags();     integer N=A.size(1);    integer M=N;    // slow version    LaVectorDouble R(M);    integer i;    integer j;    for (i=0; i<M; i++)    {        R(i) = 0.0;        for (j=0; j<N; j++)            R(i) += abs(A(i,j));    }    double max = R(0);    // report back largest row sum    for (i=1; i<M; i++)        if (R(i) > max) max=R(i);    return max;}#endif#ifdef _LA_SYMM_MAT_DOUBLE_H_inline double Norm_Inf(const LaSymmMatDouble &S){    integer N = S.size(0); // square matrix    // slow version    LaVectorDouble R(N);    integer i;     integer j;          for (i=0; i<N; i++)    {        R(i) = 0.0;        for (j=0; j<N; j++)            R(i) += abs(S(i,j));    }         double max = R(0);    // report back largest row sum    for (i=1; i<N; i++)        if (R(i) > max) max=R(i);    return max;}#endif#ifdef _LA_SPD_MAT_DOUBLE_H_inline double Norm_Inf(const LaSpdMatDouble &S){    integer N = S.size(0); //SPD matrices are square    // slow version    LaVectorDouble R(N);    integer i;     integer j;          for (i=0; i<N; i++)    {        R(i) = 0.0;        for (j=0; j<N; j++)            R(i) += abs(S(i,j));    }         double max = R(0);    // report back largest row sum    for (i=1; i<N; i++)        if (R(i) > max) max=R(i);    return max;}#endif#ifdef _LA_SYMM_TRIDIAG_MAT_DOUBLE_H_inline double Norm_Inf(const LaSymmTridiagMatDouble &S){    integer N = S.size();   // S is square    LaVectorDouble R(N);    R(0) = abs(S(0,0)) + abs(S(0,1));    for (integer i=1; i<N-1; i++)    {        R(i) = abs(S(i,i-1)) + abs(S(i,i)) + abs(S(i,i+1));    }    R(N-1) = abs(S(N-1,N-2)) + abs(S(N-1,N-1));    return Norm_Inf(R);}#endif#ifdef _LA_TRIDIAG_MAT_DOUBLE_H_inline double Norm_Inf(const LaTridiagMatDouble &T){    integer N = T.size();   // T is square    LaVectorDouble R(N);    R(0) = abs(T(0,0)) + abs(T(0,1));    for (int i=1; i<N-1; i++)    {        R(i) = abs(T(i,i-1)) + abs(T(i,i)) + abs(T(i,i+1));    }    R(N-1) = abs(T(N-1,N-2)) + abs(T(N-1,N-1));    return Norm_Inf(R);}#endif#endif    // LA_VECTOR_DOUBLE_H#endif     // _BLAS_PP_H_

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
色婷婷综合激情| 91精品欧美福利在线观看| 成人精品一区二区三区四区| 懂色av一区二区三区免费看| 国产伦理精品不卡| 91视频免费观看| 精品日韩在线一区| 自拍视频在线观看一区二区| 丝袜a∨在线一区二区三区不卡 | 亚洲宅男天堂在线观看无病毒| 精品精品国产高清a毛片牛牛| 欧美天天综合网| 26uuu精品一区二区| 亚洲欧美电影院| 亚洲国产一区在线观看| 国产美女视频一区| 欧美日本韩国一区二区三区视频 | 国产精品久久久一本精品| 久久欧美中文字幕| 欧美日韩日日夜夜| 国产亚洲人成网站| 亚洲国产精品久久艾草纯爱| 国模娜娜一区二区三区| 国产精品一区二区91| 色老汉一区二区三区| 在线一区二区三区做爰视频网站| 色婷婷久久久久swag精品| 欧美不卡123| 亚洲国产日韩a在线播放性色| 亚洲天堂福利av| 国产精品羞羞答答xxdd| 99国产精品久| 国产精品黄色在线观看| 极品美女销魂一区二区三区免费| 美女视频黄 久久| 欧美日韩国产精选| 91麻豆精品国产91久久久久久久久| 777亚洲妇女| 一区二区三区四区在线| 亚洲h在线观看| 欧美综合亚洲图片综合区| 中文在线资源观看网站视频免费不卡| 日韩久久一区二区| 国产精品77777竹菊影视小说| 成人免费黄色大片| 国模少妇一区二区三区| 成人免费看的视频| 亚洲免费在线视频| 欧美日韩在线观看一区二区| 亚洲二区在线视频| 日韩欧美亚洲国产另类| 国产一区二区三区香蕉| 中文字幕日韩一区二区| 一区二区三区在线视频免费| 欧美日韩精品三区| 久久se精品一区精品二区| 欧美成人伊人久久综合网| 国产成人综合网| 亚洲乱码中文字幕| 国产经典欧美精品| 一区二区三区中文字幕精品精品| 国产呦精品一区二区三区网站| 欧美亚洲动漫精品| 成人综合婷婷国产精品久久蜜臀 | 亚洲成人av在线电影| 国产成人免费9x9x人网站视频| 欧美日韩免费观看一区二区三区| 中文一区二区在线观看| 色婷婷国产精品综合在线观看| 欧美极品美女视频| 国内外成人在线| 亚洲免费观看高清完整版在线| 国内外成人在线| 一区二区三区高清不卡| 久久这里只有精品首页| 日本高清不卡在线观看| 老司机精品视频在线| 亚洲色图都市小说| 亚洲精品一区在线观看| 在线影院国内精品| 国产电影一区在线| 亚洲aaa精品| 中文字幕 久热精品 视频在线 | 5月丁香婷婷综合| 成人小视频在线| 中文文精品字幕一区二区| 欧美日韩国产123区| 粉嫩一区二区三区在线看| 中文字幕国产一区二区| 欧美一区在线视频| 在线观看亚洲精品视频| 国产99久久久国产精品免费看| 久久婷婷国产综合国色天香| 欧美色爱综合网| 99精品国产热久久91蜜凸| 精品一区二区三区在线播放视频| www国产亚洲精品久久麻豆| 欧洲激情一区二区| 91网站最新网址| 成人激情综合网站| 国产98色在线|日韩| 久久国产精品色婷婷| 日韩电影免费在线看| 一区二区三区中文免费| 欧美一区二区三区免费在线看| 精品一区二区成人精品| 日本亚洲免费观看| 视频一区二区三区中文字幕| 一区二区久久久久| 中文字幕日韩一区| 日韩一区中文字幕| 亚洲欧洲精品一区二区三区 | 久久网这里都是精品| 69av一区二区三区| 欧美一区二区三区免费视频| 在线成人av影院| 日韩一区国产二区欧美三区| 欧美日韩国产一区| 欧美一区二区在线不卡| 顶级嫩模精品视频在线看| 粉嫩13p一区二区三区| 国产成人免费高清| 成人黄色小视频| 色噜噜久久综合| 欧洲精品一区二区三区在线观看| 国产精品中文欧美| 国产成人高清在线| 成人精品一区二区三区四区| 日韩精品一卡二卡三卡四卡无卡| 国产精品色哟哟| 亚洲视频免费在线| 亚洲成人777| 麻豆91在线看| 国产成人夜色高潮福利影视| 国产传媒一区在线| 91久久线看在观草草青青| 欧美日韩综合在线| 日韩欧美国产午夜精品| 久久久久99精品一区| 亚洲精品少妇30p| 日韩电影在线观看电影| 国产精品99久久久久久久女警| 日本不卡一区二区三区高清视频| 亚洲色图制服诱惑| 日韩经典一区二区| 国产一区二区三区黄视频| 青青草成人在线观看| 国产在线播放一区| 色婷婷精品大视频在线蜜桃视频| 粉嫩嫩av羞羞动漫久久久| 极品少妇xxxx精品少妇| 99视频热这里只有精品免费| 欧美日韩视频在线第一区 | 日韩一级片在线观看| 色综合一区二区三区| 欧美日韩国产小视频在线观看| 97久久久精品综合88久久| 欧美日韩你懂的| 国产精品―色哟哟| 久久精品99国产精品日本| av亚洲产国偷v产偷v自拍| 91精品婷婷国产综合久久竹菊| 在线播放中文一区| 国产精品久久99| 狠狠色丁香久久婷婷综合丁香| 美日韩黄色大片| 色香蕉久久蜜桃| 欧美亚洲丝袜传媒另类| 久久久久久97三级| 首页综合国产亚洲丝袜| www.爱久久.com| 精品国产sm最大网站| 亚洲成人免费视频| 色8久久精品久久久久久蜜| 国产欧美视频一区二区| 亚洲欧洲精品天堂一级| 国精品**一区二区三区在线蜜桃 | 丝袜脚交一区二区| 免费人成在线不卡| 色综合久久久久| 欧美日韩精品免费观看视频| 国产精品不卡在线| 国产精品一区二区免费不卡| 欧美电影影音先锋| 一区二区三区久久久| 97精品久久久午夜一区二区三区| 一本一道久久a久久精品| 精品福利一二区| 蜜臀av亚洲一区中文字幕| 欧美精选午夜久久久乱码6080| 日韩亚洲欧美中文三级| 久久老女人爱爱| 国产麻豆午夜三级精品| 精品日韩成人av| 免费成人av在线| 成人午夜在线播放| 欧美综合天天夜夜久久| 欧美电视剧免费全集观看| 国产精品国产精品国产专区不蜜| 亚洲永久精品国产|