Epetra Package Browser (Single Doxygen Collection) Development
Loading...
Searching...
No Matches
Epetra_BLAS.h
Go to the documentation of this file.
1/*
2//@HEADER
3// ************************************************************************
4//
5// Epetra: Linear Algebra Services Package
6// Copyright 2011 Sandia Corporation
7//
8// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation,
9// the U.S. Government retains certain rights in this software.
10//
11// Redistribution and use in source and binary forms, with or without
12// modification, are permitted provided that the following conditions are
13// met:
14//
15// 1. Redistributions of source code must retain the above copyright
16// notice, this list of conditions and the following disclaimer.
17//
18// 2. Redistributions in binary form must reproduce the above copyright
19// notice, this list of conditions and the following disclaimer in the
20// documentation and/or other materials provided with the distribution.
21//
22// 3. Neither the name of the Corporation nor the names of the
23// contributors may be used to endorse or promote products derived from
24// this software without specific prior written permission.
25//
26// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY
27// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
28// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
29// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE
30// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
31// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
32// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
33// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
34// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
35// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
36// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
37//
38// Questions? Contact Michael A. Heroux (maherou@sandia.gov)
39//
40// ************************************************************************
41//@HEADER
42*/
43
44#ifndef EPETRA_BLAS_H
45#define EPETRA_BLAS_H
46
47#include "Epetra_ConfigDefs.h"
48#include "Epetra_Object.h"
49
51
70class EPETRA_LIB_DLL_EXPORT Epetra_BLAS {
71
72 public:
74
75
78 Epetra_BLAS(void);
79
80
82
84 Epetra_BLAS(const Epetra_BLAS& BLAS);
85
87 virtual ~Epetra_BLAS(void);
89
91
92
93 float ASUM(const int N, const float * X, const int INCX = 1) const;
95 double ASUM(const int N, const double * X, const int INCX = 1) const;
96
98 float DOT(const int N, const float * X, const float * Y, const int INCX = 1, const int INCY = 1) const;
100 double DOT(const int N, const double * X, const double * Y, const int INCX = 1, const int INCY = 1) const;
101
103 float NRM2(const int N, const float * X, const int INCX = 1) const;
105 double NRM2(const int N, const double * X, const int INCX = 1) const;
106
108 void SCAL( const int N, const float ALPHA, float * X, const int INCX = 1) const;
110 void SCAL( const int N, const double ALPHA, double * X, const int INCX = 1) const;
111
113 void COPY( const int N, const float * X, float * Y, const int INCX = 1, const int INCY = 1) const;
115 void COPY( const int N, const double * X, double * Y, const int INCX = 1, const int INCY = 1) const;
116
118 int IAMAX( const int N, const float * X, const int INCX = 1) const;
120 int IAMAX( const int N, const double * X, const int INCX = 1) const;
121
123 void AXPY( const int N, const float ALPHA, const float * X, float * Y, const int INCX = 1, const int INCY = 1) const;
125 void AXPY( const int N, const double ALPHA, const double * X, double * Y, const int INCX = 1, const int INCY = 1) const;
127
129
130
131 void GEMV(const char TRANS, const int M, const int N,
132 const float ALPHA, const float * A, const int LDA, const float * X,
133 const float BETA, float * Y, const int INCX = 1, const int INCY = 1) const;
135 void GEMV(const char TRANS, const int M, const int N,
136 const double ALPHA, const double * A, const int LDA, const double * X,
137 const double BETA, double * Y, const int INCX = 1, const int INCY = 1) const;
139
140
142
143
144 void GEMM(const char TRANSA, const char TRANSB, const int M, const int N, const int K,
145 const float ALPHA, const float * A, const int LDA, const float * B,
146 const int LDB, const float BETA, float * C, const int LDC) const;
148 void GEMM(const char TRANSA, const char TRANSB, const int M, const int N, const int K,
149 const double ALPHA, const double * A, const int LDA, const double * B,
150 const int LDB, const double BETA, double * C, const int LDC) const;
151
153 void SYMM(const char SIDE, const char UPLO, const int M, const int N,
154 const float ALPHA, const float * A, const int LDA, const float * B,
155 const int LDB, const float BETA, float * C, const int LDC) const;
157 void SYMM(const char SIDE, const char UPLO, const int M, const int N,
158 const double ALPHA, const double * A, const int LDA, const double * B,
159 const int LDB, const double BETA, double * C, const int LDC) const;
160
162 void TRMM(const char SIDE, const char UPLO, const char TRANSA, const char DIAG, const int M, const int N,
163 const float ALPHA, const float * A, const int LDA, float * B,
164 const int LDB) const;
166 void TRMM(const char SIDE, const char UPLO, const char TRANSA, const char DIAG, const int M, const int N,
167 const double ALPHA, const double * A, const int LDA, double * B,
168 const int LDB) const;
170 void SYRK(const char UPLO, const char TRANS, const int N, const int K, const float ALPHA, const float *A,
171 const int LDA, const float BETA, float *C, const int LDC) const;
173 void SYRK(const char UPLO, const char TRANS, const int N, const int K, const double ALPHA, const double *A,
174 const int LDA, const double BETA, double *C, const int LDC) const;
176};
177
178// Epetra_BLAS constructor
180// Epetra_BLAS constructor
181inline Epetra_BLAS::Epetra_BLAS(const Epetra_BLAS& BLAS){(void)BLAS;}
182// Epetra_BLAS destructor
184
185#endif /* EPETRA_BLAS_H */
Epetra_BLAS: The Epetra BLAS Wrapper Class.
Definition Epetra_BLAS.h:70
virtual ~Epetra_BLAS(void)
Epetra_BLAS Destructor.
Epetra_BLAS(void)
Epetra_BLAS Constructor.