PlayaVector.cpp
Go to the documentation of this file.
00001 /* @HEADER@ */
00002 // ************************************************************************
00003 // 
00004 //                 Playa: Programmable Linear Algebra
00005 //                 Copyright 2012 Sandia Corporation
00006 // 
00007 // Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation,
00008 // the U.S. Government retains certain rights in this software.
00009 //
00010 // Redistribution and use in source and binary forms, with or without
00011 // modification, are permitted provided that the following conditions are
00012 // met:
00013 //
00014 // 1. Redistributions of source code must retain the above copyright
00015 // notice, this list of conditions and the following disclaimer.
00016 //
00017 // 2. Redistributions in binary form must reproduce the above copyright
00018 // notice, this list of conditions and the following disclaimer in the
00019 // documentation and/or other materials provided with the distribution.
00020 //
00021 // 3. Neither the name of the Corporation nor the names of the
00022 // contributors may be used to endorse or promote products derived from
00023 // this software without specific prior written permission.
00024 //
00025 // THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY
00026 // EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
00027 // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
00028 // PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE
00029 // CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
00030 // EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
00031 // PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
00032 // PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
00033 // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
00034 // NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
00035 // SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
00036 //
00037 // Questions? Contact Kevin Long (kevin.long@ttu.edu)
00038 // 
00039 
00040 /* @HEADER@ */
00041 
00042 
00043 #include "PlayaDefs.hpp"
00044 
00045 #ifdef HAVE_TEUCHOS_EXPLICIT_INSTANTIATION
00046 
00047 #include "PlayaVectorImpl.hpp"
00048 #include "PlayaLinearCombinationImpl.hpp"
00049 
00050 namespace Playa
00051 {
00052 
00053 template class Vector<double>;
00054 
00055 template LoadableVector<double>* loadable(Vector<double> vec);
00056 
00057 template 
00058 double* dataPtr(Vector<double> vec) ;
00059 
00060 template 
00061 const double* dataPtr(const Vector<double>& vec) ;
00062 
00063 template class LCN<double, 1>;
00064 template class LCN<double, 2>;
00065 template class LCN<double, 3>;
00066 template class LCN<double, 4>;
00067 
00068 template Vector<double> operator*(
00069   const LinearOperator<double>& A,
00070   const Vector<double>& x);
00071 
00072 template Vector<double> operator*(
00073   const LinearOperator<double>& A,
00074   const LCN<double, 1>& x);
00075 
00076 template Vector<double> operator*(
00077   const LinearOperator<double>& A,
00078   const LCN<double, 2>& x);
00079 
00080 template Vector<double> operator*(
00081   const LinearOperator<double>& A,
00082   const LCN<double, 3>& x);
00083 
00084 template Vector<double>& Vector<double>::operator+=(const LCN<double, 3>& x);
00085 template Vector<double>& Vector<double>::operator-=(const LCN<double, 3>& x);
00086 
00087 template double norm1(const LCN<double, 1>& x);
00088 template double norm1(const LCN<double, 2>& x);
00089 template double norm1(const LCN<double, 3>& x);
00090 
00091 template double norm2(const LCN<double, 1>& x);
00092 template double norm2(const LCN<double, 2>& x);
00093 template double norm2(const LCN<double, 3>& x);
00094 
00095 template double normInf(const LCN<double, 1>& x);
00096 template double normInf(const LCN<double, 2>& x);
00097 template double normInf(const LCN<double, 3>& x);
00098 
00099 template double min(const LCN<double, 1>& x);
00100 template double min(const LCN<double, 2>& x);
00101 template double min(const LCN<double, 3>& x);
00102 
00103 template double max(const LCN<double, 1>& x);
00104 template double max(const LCN<double, 2>& x);
00105 template double max(const LCN<double, 3>& x);
00106 
00107 template Vector<double> abs(const LCN<double, 1>& x);
00108 template Vector<double> abs(const LCN<double, 2>& x);
00109 template Vector<double> abs(const LCN<double, 3>& x);
00110 
00111 template Vector<double> reciprocal(const LCN<double, 1>& x);
00112 template Vector<double> reciprocal(const LCN<double, 2>& x);
00113 template Vector<double> reciprocal(const LCN<double, 3>& x);
00114 
00115 template LCN<double, 1> operator*(const double& a, const Vector<double>& x);
00116 template LCN<double, 1> operator*(const Vector<double>& x, const double& a);
00117 template LCN<double, 1> operator/(const Vector<double>& x, const double& a);
00118 
00119 template LCN<double, 1> operator*(const double& a, const LCN<double, 1>& x);
00120 template LCN<double, 1> operator*(const LCN<double, 1>& x, const double& a);
00121 template LCN<double, 1> operator/(const LCN<double, 1>& x, const double& a);
00122 
00123 template LCN<double, 2> operator*(const double& a, const LCN<double, 2>& x);
00124 template LCN<double, 2> operator*(const LCN<double, 2>& x, const double& a);
00125 template LCN<double, 2> operator/(const LCN<double, 2>& x, const double& a);
00126 
00127 template LCN<double, 3> operator*(const double& a, const LCN<double, 3>& x);
00128 template LCN<double, 3> operator*(const LCN<double, 3>& x, const double& a);
00129 template LCN<double, 3> operator/(const LCN<double, 3>& x, const double& a);
00130 
00131 template LCN<double, 2> 
00132 operator+(const Vector<double>& y, const LCN<double, 1>& x);
00133 template LCN<double, 2> 
00134 operator+(const LCN<double, 1>& x, const Vector<double>& y);
00135 template LCN<double, 2> 
00136 operator+(const LCN<double, 1>& x, const LCN<double, 1>& y);
00137 
00138 template LCN<double, 2> 
00139 operator-(const Vector<double>& y, const LCN<double, 1>& x);
00140 template LCN<double, 2> 
00141 operator-(const LCN<double, 1>& x, const Vector<double>& y);
00142 template LCN<double, 2> 
00143 operator-(const LCN<double, 1>& x, const LCN<double, 1>& y);
00144 
00145 
00146 template LCN<double, 3> 
00147 operator+(const Vector<double>& y, const LCN<double, 2>& x);
00148 template LCN<double, 3> 
00149 operator+(const LCN<double, 2>& x, const Vector<double>& y);
00150 template LCN<double, 3> 
00151 operator+(const LCN<double, 2>& x, const LCN<double, 1>& y);
00152 template LCN<double, 3> 
00153 operator+(const LCN<double, 1>& x, const LCN<double, 2>& y);
00154 
00155 template LCN<double, 3> 
00156 operator-(const Vector<double>& y, const LCN<double, 2>& x);
00157 template LCN<double, 3> 
00158 operator-(const LCN<double, 2>& x, const Vector<double>& y);
00159 template LCN<double, 3> 
00160 operator-(const LCN<double, 2>& x, const LCN<double, 1>& y);
00161 template LCN<double, 3> 
00162 operator-(const LCN<double, 1>& x, const LCN<double, 2>& y);
00163 
00164 
00165 
00166 }
00167 
00168 #endif

Site Contact