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

📄 blas_2.cxx

📁 Multivac 的Level set包
💻 CXX
📖 第 1 页 / 共 5 页
字号:
// Copyright (C) 2001-2004 Vivien Mallet//// This file is part of Seldon library.// Seldon library provides matrices and vectors structures for// linear algebra.// // Seldon 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.// // Seldon 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 (file "license") for more details.//// For more information, please see the Seldon home page://     http://spacetown.free.fr/lib/seldon/#ifndef SELDON_FILE_BLAS_2_CXX/*  Functions defined in this file:  xROTG*/extern "C"{#include "cblas.h"}namespace Seldon{  /////////  // MLT //  /*** ColUpTriang, NoTrans and NonUnit ***/  template <class Prop0, class Allocator0,	    class Allocator1>  void Mlt(const Matrix<float, Prop0, ColUpTriang, Allocator0>& A,	   Vector<float, Vect_Full, Allocator1>& X)  {    cblas_strmv(CblasColMajor, CblasUpper, CblasNoTrans, CblasNonUnit,		A.GetN(), A.GetData(), A.GetM(), X.GetData(), 1);  }  template <class Prop0, class Allocator0,	    class Allocator1>  void Mlt(const Matrix<double, Prop0, ColUpTriang, Allocator0>& A,	   Vector<double, Vect_Full, Allocator1>& X)  {    cblas_dtrmv(CblasColMajor, CblasUpper, CblasNoTrans, CblasNonUnit,		A.GetN(), A.GetData(), A.GetM(), X.GetData(), 1);  }  template <class Prop0, class Allocator0,	    class Allocator1>  void  Mlt(const Matrix<complex<float>, Prop0, ColUpTriang, Allocator0>& A,      Vector<complex<float>, Vect_Full, Allocator1>& X)  {    cblas_ctrmv(CblasColMajor, CblasUpper, CblasNoTrans, CblasNonUnit,		A.GetN(), reinterpret_cast<const void*>(A.GetData()),		A.GetM(), reinterpret_cast<void*>(X.GetData()), 1);  }  template <class Prop0, class Allocator0,	    class Allocator1>  void  Mlt(const Matrix<complex<double>, Prop0, ColUpTriang, Allocator0>& A,      Vector<complex<double>, Vect_Full, Allocator1>& X)  {    cblas_ztrmv(CblasColMajor, CblasUpper, CblasNoTrans, CblasNonUnit,		A.GetN(), reinterpret_cast<const void*>(A.GetData()),		A.GetM(), reinterpret_cast<void*>(X.GetData()), 1);  }  /*** ColUpTriang ***/  template <class Prop0, class Allocator0,	    class Allocator1>  void Mlt(const enum CBLAS_TRANSPOSE TransA,	   const enum CBLAS_DIAG DiagA,	   const Matrix<float, Prop0, ColUpTriang, Allocator0>& A,	   Vector<float, Vect_Full, Allocator1>& X)  {    cblas_strmv(CblasColMajor, CblasUpper, TransA, DiagA,		A.GetN(), A.GetData(), A.GetM(), X.GetData(), 1);  }  template <class Prop0, class Allocator0,	    class Allocator1>  void Mlt(const enum CBLAS_TRANSPOSE TransA,	   const enum CBLAS_DIAG DiagA,	   const Matrix<double, Prop0, ColUpTriang, Allocator0>& A,	   Vector<double, Vect_Full, Allocator1>& X)  {    cblas_dtrmv(CblasColMajor, CblasUpper, TransA, DiagA,		A.GetN(), A.GetData(), A.GetM(), X.GetData(), 1);  }  template <class Prop0, class Allocator0,	    class Allocator1>  void  Mlt(const enum CBLAS_TRANSPOSE TransA,      const enum CBLAS_DIAG DiagA,      const Matrix<complex<float>, Prop0, ColUpTriang, Allocator0>& A,      Vector<complex<float>, Vect_Full, Allocator1>& X)  {    cblas_ctrmv(CblasColMajor, CblasUpper, TransA, DiagA,		A.GetN(), reinterpret_cast<const void*>(A.GetData()),		A.GetM(), reinterpret_cast<void*>(X.GetData()), 1);  }  template <class Prop0, class Allocator0,	    class Allocator1>  void  Mlt(const enum CBLAS_TRANSPOSE TransA,      const enum CBLAS_DIAG DiagA,      const Matrix<complex<double>, Prop0, ColUpTriang, Allocator0>& A,      Vector<complex<double>, Vect_Full, Allocator1>& X)  {    cblas_ztrmv(CblasColMajor, CblasUpper, TransA, DiagA,		A.GetN(), reinterpret_cast<const void*>(A.GetData()),		A.GetM(), reinterpret_cast<void*>(X.GetData()), 1);  }  /*** ColLoTriang, NoTrans and NonUnit ***/  template <class Prop0, class Allocator0,	    class Allocator1>  void Mlt(const Matrix<float, Prop0, ColLoTriang, Allocator0>& A,	   Vector<float, Vect_Full, Allocator1>& X)  {    cblas_strmv(CblasColMajor, CblasLower, CblasNoTrans, CblasNonUnit,		A.GetN(), A.GetData(), A.GetM(), X.GetData(), 1);  }  template <class Prop0, class Allocator0,	    class Allocator1>  void Mlt(const Matrix<double, Prop0, ColLoTriang, Allocator0>& A,	   Vector<double, Vect_Full, Allocator1>& X)  {    cblas_dtrmv(CblasColMajor, CblasLower, CblasNoTrans, CblasNonUnit,		A.GetN(), A.GetData(), A.GetM(), X.GetData(), 1);  }  template <class Prop0, class Allocator0,	    class Allocator1>  void  Mlt(const Matrix<complex<float>, Prop0, ColLoTriang, Allocator0>& A,      Vector<complex<float>, Vect_Full, Allocator1>& X)  {    cblas_ctrmv(CblasColMajor, CblasLower, CblasNoTrans, CblasNonUnit,		A.GetN(), reinterpret_cast<const void*>(A.GetData()),		A.GetM(), reinterpret_cast<void*>(X.GetData()), 1);  }  template <class Prop0, class Allocator0,	    class Allocator1>  void  Mlt(const Matrix<complex<double>, Prop0, ColLoTriang, Allocator0>& A,      Vector<complex<double>, Vect_Full, Allocator1>& X)  {    cblas_ztrmv(CblasColMajor, CblasLower, CblasNoTrans, CblasNonUnit,		A.GetN(), reinterpret_cast<const void*>(A.GetData()),		A.GetM(), reinterpret_cast<void*>(X.GetData()), 1);  }  /*** ColLoTriang ***/  template <class Prop0, class Allocator0,	    class Allocator1>  void Mlt(const enum CBLAS_TRANSPOSE TransA,	   const enum CBLAS_DIAG DiagA,	   const Matrix<float, Prop0, ColLoTriang, Allocator0>& A,	   Vector<float, Vect_Full, Allocator1>& X)  {    cblas_strmv(CblasColMajor, CblasLower, TransA, DiagA,		A.GetN(), A.GetData(), A.GetM(), X.GetData(), 1);  }  template <class Prop0, class Allocator0,	    class Allocator1>  void Mlt(const enum CBLAS_TRANSPOSE TransA,	   const enum CBLAS_DIAG DiagA,	   const Matrix<double, Prop0, ColLoTriang, Allocator0>& A,	   Vector<double, Vect_Full, Allocator1>& X)  {    cblas_dtrmv(CblasColMajor, CblasLower, TransA, DiagA,		A.GetN(), A.GetData(), A.GetM(), X.GetData(), 1);  }  template <class Prop0, class Allocator0,	    class Allocator1>  void  Mlt(const enum CBLAS_TRANSPOSE TransA,      const enum CBLAS_DIAG DiagA,      const Matrix<complex<float>, Prop0, ColLoTriang, Allocator0>& A,      Vector<complex<float>, Vect_Full, Allocator1>& X)  {    cblas_ctrmv(CblasColMajor, CblasLower, TransA, DiagA,		A.GetN(), reinterpret_cast<const void*>(A.GetData()),		A.GetM(), reinterpret_cast<void*>(X.GetData()), 1);  }  template <class Prop0, class Allocator0,	    class Allocator1>  void  Mlt(const enum CBLAS_TRANSPOSE TransA,      const enum CBLAS_DIAG DiagA,      const Matrix<complex<double>, Prop0, ColLoTriang, Allocator0>& A,      Vector<complex<double>, Vect_Full, Allocator1>& X)  {    cblas_ztrmv(CblasColMajor, CblasLower, TransA, DiagA,		A.GetN(), reinterpret_cast<const void*>(A.GetData()),		A.GetM(), reinterpret_cast<void*>(X.GetData()), 1);  }  /*** RowUpTriang, NoTrans and NonUnit ***/  template <class Prop0, class Allocator0,	    class Allocator1>  void Mlt(const Matrix<float, Prop0, RowUpTriang, Allocator0>& A,	   Vector<float, Vect_Full, Allocator1>& X)  {    cblas_strmv(CblasRowMajor, CblasUpper, CblasNoTrans, CblasNonUnit,		A.GetN(), A.GetData(), A.GetM(), X.GetData(), 1);  }  template <class Prop0, class Allocator0,	    class Allocator1>  void Mlt(const Matrix<double, Prop0, RowUpTriang, Allocator0>& A,	   Vector<double, Vect_Full, Allocator1>& X)  {    cblas_dtrmv(CblasRowMajor, CblasUpper, CblasNoTrans, CblasNonUnit,		A.GetN(), A.GetData(), A.GetM(), X.GetData(), 1);  }  template <class Prop0, class Allocator0,	    class Allocator1>  void  Mlt(const Matrix<complex<float>, Prop0, RowUpTriang, Allocator0>& A,      Vector<complex<float>, Vect_Full, Allocator1>& X)  {    cblas_ctrmv(CblasRowMajor, CblasUpper, CblasNoTrans, CblasNonUnit,		A.GetN(), reinterpret_cast<const void*>(A.GetData()),		A.GetM(), reinterpret_cast<void*>(X.GetData()), 1);  }  template <class Prop0, class Allocator0,	    class Allocator1>  void  Mlt(const Matrix<complex<double>, Prop0, RowUpTriang, Allocator0>& A,      Vector<complex<double>, Vect_Full, Allocator1>& X)  {    cblas_ztrmv(CblasRowMajor, CblasUpper, CblasNoTrans, CblasNonUnit,		A.GetN(), reinterpret_cast<const void*>(A.GetData()),		A.GetM(), reinterpret_cast<void*>(X.GetData()), 1);  }  /*** RowUpTriang ***/  template <class Prop0, class Allocator0,	    class Allocator1>  void Mlt(const enum CBLAS_TRANSPOSE TransA,	   const enum CBLAS_DIAG DiagA,	   const Matrix<float, Prop0, RowUpTriang, Allocator0>& A,	   Vector<float, Vect_Full, Allocator1>& X)  {    cblas_strmv(CblasRowMajor, CblasUpper, TransA, DiagA,		A.GetN(), A.GetData(), A.GetM(), X.GetData(), 1);  }  template <class Prop0, class Allocator0,	    class Allocator1>  void Mlt(const enum CBLAS_TRANSPOSE TransA,	   const enum CBLAS_DIAG DiagA,	   const Matrix<double, Prop0, RowUpTriang, Allocator0>& A,	   Vector<double, Vect_Full, Allocator1>& X)  {    cblas_dtrmv(CblasRowMajor, CblasUpper, TransA, DiagA,		A.GetN(), A.GetData(), A.GetM(), X.GetData(), 1);  }  template <class Prop0, class Allocator0,	    class Allocator1>  void  Mlt(const enum CBLAS_TRANSPOSE TransA,      const enum CBLAS_DIAG DiagA,      const Matrix<complex<float>, Prop0, RowUpTriang, Allocator0>& A,      Vector<complex<float>, Vect_Full, Allocator1>& X)  {    cblas_ctrmv(CblasRowMajor, CblasUpper, TransA, DiagA,		A.GetN(), reinterpret_cast<const void*>(A.GetData()),		A.GetM(), reinterpret_cast<void*>(X.GetData()), 1);  }  template <class Prop0, class Allocator0,	    class Allocator1>  void  Mlt(const enum CBLAS_TRANSPOSE TransA,      const enum CBLAS_DIAG DiagA,      const Matrix<complex<double>, Prop0, RowUpTriang, Allocator0>& A,      Vector<complex<double>, Vect_Full, Allocator1>& X)  {    cblas_ztrmv(CblasRowMajor, CblasUpper, TransA, DiagA,		A.GetN(), reinterpret_cast<const void*>(A.GetData()),		A.GetM(), reinterpret_cast<void*>(X.GetData()), 1);  }  /*** RowLoTriang, NoTrans and NonUnit ***/  template <class Prop0, class Allocator0,	    class Allocator1>  void Mlt(const Matrix<float, Prop0, RowLoTriang, Allocator0>& A,	   Vector<float, Vect_Full, Allocator1>& X)  {    cblas_strmv(CblasRowMajor, CblasLower, CblasNoTrans, CblasNonUnit,		A.GetN(), A.GetData(), A.GetM(), X.GetData(), 1);  }  template <class Prop0, class Allocator0,	    class Allocator1>  void Mlt(const Matrix<double, Prop0, RowLoTriang, Allocator0>& A,	   Vector<double, Vect_Full, Allocator1>& X)  {    cblas_dtrmv(CblasRowMajor, CblasLower, CblasNoTrans, CblasNonUnit,		A.GetN(), A.GetData(), A.GetM(), X.GetData(), 1);  }  template <class Prop0, class Allocator0,	    class Allocator1>  void  Mlt(const Matrix<complex<float>, Prop0, RowLoTriang, Allocator0>& A,      Vector<complex<float>, Vect_Full, Allocator1>& X)  {    cblas_ctrmv(CblasRowMajor, CblasLower, CblasNoTrans, CblasNonUnit,		A.GetN(), reinterpret_cast<const void*>(A.GetData()),		A.GetM(), reinterpret_cast<void*>(X.GetData()), 1);  }  template <class Prop0, class Allocator0,	    class Allocator1>  void  Mlt(const Matrix<complex<double>, Prop0, RowLoTriang, Allocator0>& A,      Vector<complex<double>, Vect_Full, Allocator1>& X)  {    cblas_ztrmv(CblasRowMajor, CblasLower, CblasNoTrans, CblasNonUnit,		A.GetN(), reinterpret_cast<const void*>(A.GetData()),		A.GetM(), reinterpret_cast<void*>(X.GetData()), 1);  }  /*** RowLoTriang ***/  template <class Prop0, class Allocator0,	    class Allocator1>  void Mlt(const enum CBLAS_TRANSPOSE TransA,	   const enum CBLAS_DIAG DiagA,	   const Matrix<float, Prop0, RowLoTriang, Allocator0>& A,	   Vector<float, Vect_Full, Allocator1>& X)  {    cblas_strmv(CblasRowMajor, CblasLower, TransA, DiagA,		A.GetN(), A.GetData(), A.GetM(), X.GetData(), 1);  }  template <class Prop0, class Allocator0,	    class Allocator1>  void Mlt(const enum CBLAS_TRANSPOSE TransA,	   const enum CBLAS_DIAG DiagA,	   const Matrix<double, Prop0, RowLoTriang, Allocator0>& A,	   Vector<double, Vect_Full, Allocator1>& X)  {    cblas_dtrmv(CblasRowMajor, CblasLower, TransA, DiagA,		A.GetN(), A.GetData(), A.GetM(), X.GetData(), 1);  }

⌨️ 快捷键说明

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