Tpetra parallel linear algebra
Version of the Day
Toggle main menu visibility
Loading...
Searching...
No Matches
core
ext
TpetraExt_MatrixMatrix.cpp
1
/*
2
// @HEADER
3
// ***********************************************************************
4
//
5
// Tpetra: Templated Linear Algebra Services Package
6
// Copyright (2008) 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
#include "TpetraExt_MatrixMatrix.hpp"
45
46
#ifdef HAVE_TPETRA_EXPLICIT_INSTANTIATION
47
48
#include "TpetraCore_ETIHelperMacros.h"
49
#include "
TpetraExt_MatrixMatrix_def.hpp
"
50
51
namespace
Tpetra
{
52
53
TPETRA_ETI_MANGLING_TYPEDEFS()
54
55
TPETRA_INSTANTIATE_SLGN(TPETRA_MATRIXMATRIX_INSTANT)
56
57
// Zoltan2 wants Scalar = int (Bug 6298).
58
// This is already covered above for the GO = int case.
59
//
60
// FIXME (mfh 07 Oct 2015) I'm hand-rolling this for now.
61
// It would be better to let CMake do the ETI generation,
62
// as with CrsMatrix.
63
64
#ifdef HAVE_TPETRA_INST_INT_LONG
65
#ifdef HAVE_TPETRA_INST_LONG_DOUBLE
66
#define TPETRA_MATRIXMATRIX_INSTANT_SC_LONG_DOUBLE_LO_INT_GO_LONG( NT ) \
67
TPETRA_MATRIXMATRIX_INSTANT( longdouble, int, long, NT )
68
69
TPETRA_INSTANTIATE_N(TPETRA_MATRIXMATRIX_INSTANT_SC_LONG_DOUBLE_LO_INT_GO_LONG)
70
#else
71
#define TPETRA_MATRIXMATRIX_INSTANT_SC_INT_LO_INT_GO_LONG( NT ) \
72
TPETRA_MATRIXMATRIX_INSTANT( int, int, long, NT )
73
74
TPETRA_INSTANTIATE_N(TPETRA_MATRIXMATRIX_INSTANT_SC_INT_LO_INT_GO_LONG)
75
#endif
//HAVE_TPETRA_INST_LONG_DOUBLE
76
#endif
// HAVE_TPETRA_INST_INT_LONG
77
78
#ifdef HAVE_TPETRA_INST_INT_LONG_LONG
79
#ifdef HAVE_TPETRA_INST_LONG_DOUBLE
80
#define TPETRA_MATRIXMATRIX_INSTANT_SC_LONG_DOUBLE_LO_INT_GO_LONG_LONG( NT ) \
81
TPETRA_MATRIXMATRIX_INSTANT( longdouble, int, longlong, NT )
82
83
TPETRA_INSTANTIATE_N(TPETRA_MATRIXMATRIX_INSTANT_SC_LONG_DOUBLE_LO_INT_GO_LONG_LONG)
84
#else
85
#define TPETRA_MATRIXMATRIX_INSTANT_SC_INT_LO_INT_GO_LONG_LONG( NT ) \
86
TPETRA_MATRIXMATRIX_INSTANT( int, int, longlong, NT )
87
88
TPETRA_INSTANTIATE_N(TPETRA_MATRIXMATRIX_INSTANT_SC_INT_LO_INT_GO_LONG_LONG)
89
#endif
//HAVE_TPETRA_INST_LONG_DOUBLE
90
#endif
// HAVE_TPETRA_INST_INT_LONG_LONG
91
92
#ifdef HAVE_TPETRA_INST_INT_UNSIGNED
93
#ifdef HAVE_TPETRA_INST_LONG_DOUBLE
94
#define TPETRA_MATRIXMATRIX_INSTANT_SC_LONG_DOUBLE_LO_INT_GO_UNSIGNED( NT ) \
95
TPETRA_MATRIXMATRIX_INSTANT( longdouble, int, unsigned, NT )
96
97
TPETRA_INSTANTIATE_N(TPETRA_MATRIXMATRIX_INSTANT_SC_LONG_DOUBLE_LO_INT_GO_UNSIGNED)
98
#else
99
#define TPETRA_MATRIXMATRIX_INSTANT_SC_INT_LO_INT_GO_UNSIGNED( NT ) \
100
TPETRA_MATRIXMATRIX_INSTANT( int, int, unsigned, NT )
101
102
TPETRA_INSTANTIATE_N(TPETRA_MATRIXMATRIX_INSTANT_SC_INT_LO_INT_GO_UNSIGNED)
103
#endif
//HAVE_TPETRA_INST_LONG_DOUBLE
104
#endif
// HAVE_TPETRA_INST_INT_UNSIGNED
105
106
#ifdef HAVE_TPETRA_INST_INT_UNSIGNED_LONG
107
#ifdef HAVE_TPETRA_INST_LONG_DOUBLE
108
#define TPETRA_MATRIXMATRIX_INSTANT_SC_LONG_DOUBLE_LO_INT_GO_UNSIGNED_LONG( NT ) \
109
TPETRA_MATRIXMATRIX_INSTANT( longdouble, int, unsignedlong, NT )
110
111
TPETRA_INSTANTIATE_N(TPETRA_MATRIXMATRIX_INSTANT_SC_LONG_DOUBLE_LO_INT_GO_UNSIGNED_LONG)
112
#else
113
#define TPETRA_MATRIXMATRIX_INSTANT_SC_INT_LO_INT_GO_UNSIGNED_LONG( NT ) \
114
TPETRA_MATRIXMATRIX_INSTANT( int, int, unsignedlong, NT )
115
116
TPETRA_INSTANTIATE_N(TPETRA_MATRIXMATRIX_INSTANT_SC_INT_LO_INT_GO_UNSIGNED_LONG)
117
#endif
//HAVE_TPETRA_INST_LONG_DOUBLE
118
#endif
// HAVE_TPETRA_INST_INT_UNSIGNED_LONG
119
120
}
// namespace Tpetra
121
122
#endif
// HAVE_TPETRA_EXPLICIT_INSTANTIATION
TpetraExt_MatrixMatrix_def.hpp
Tpetra
Namespace Tpetra contains the class and methods constituting the Tpetra library.
Generated by
1.17.0