C-XSC - A C++ Class Library for Extended Scientific Computing  2.5.4
matrix_friend_declarations.inl
00001 /*
00002 **  CXSC is a C++ library for eXtended Scientific Computing (V 2.5.4)
00003 **
00004 **  Copyright (C) 1990-2000 Institut fuer Angewandte Mathematik,
00005 **                          Universitaet Karlsruhe, Germany
00006 **            (C) 2000-2014 Wiss. Rechnen/Softwaretechnologie
00007 **                          Universitaet Wuppertal, Germany   
00008 **
00009 **  This library is free software; you can redistribute it and/or
00010 **  modify it under the terms of the GNU Library General Public
00011 **  License as published by the Free Software Foundation; either
00012 **  version 2 of the License, or (at your option) any later version.
00013 **
00014 **  This library is distributed in the hope that it will be useful,
00015 **  but WITHOUT ANY WARRANTY; without even the implied warranty of
00016 **  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00017 **  Library General Public License for more details.
00018 **
00019 **  You should have received a copy of the GNU Library General Public
00020 **  License along with this library; if not, write to the Free
00021 **  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
00022 */
00023 
00024 /* CVS $Id: matrix_friend_declarations.inl,v 1.10 2014/01/30 17:23:47 cxsc Exp $ */
00025 
00026 #if(CXSC_INDEX_CHECK)
00027 template<class TA, class Tx, class Tres, class TDot, class TElement>
00028 friend inline Tres spsl_mv_mult(const TA&, const Tx&) throw(OP_WITH_WRONG_DIM);
00029 #else
00030 template<class TA, class Tx, class Tres, class TDot, class TElement>
00031 friend inline Tres spsl_mv_mult(const TA&, const Tx&) throw();
00032 #endif
00033 
00034 #if(CXSC_INDEX_CHECK)
00035 template<class TA, class Tx, class Tres, class TDot, class TElement>
00036 friend inline Tres spsp_mv_mult(const TA&, const Tx&) throw(OP_WITH_WRONG_DIM);
00037 #else
00038 template<class TA, class Tx, class Tres, class TDot, class TElement>
00039 friend inline Tres spsp_mv_mult(const TA&, const Tx&) throw();
00040 #endif
00041 
00042 #if(CXSC_INDEX_CHECK)
00043 template<class TA, class Tx, class Tres, class TDot>
00044 friend inline Tres spf_mv_mult(const TA&, const Tx&) throw(OP_WITH_WRONG_DIM);
00045 #else
00046 template<class TA, class Tx, class Tres, class TDot>
00047 friend inline Tres spf_mv_mult(const TA&, const Tx&) throw();
00048 #endif
00049 
00050 #if(CXSC_INDEX_CHECK)
00051 template<class TA, class Tx, class Tres, class TDot>
00052 friend inline Tres fsp_mv_mult(const TA&, const Tx&) throw(OP_WITH_WRONG_DIM);
00053 #else
00054 template<class TA, class Tx, class Tres, class TDot>
00055 friend inline Tres fsp_mv_mult(const TA&, const Tx&) throw();
00056 #endif
00057 
00058 #if(CXSC_INDEX_CHECK)
00059 template<class TA, class Tx, class Tres, class TDot>
00060 friend inline Tres fsl_mv_mult(const TA&, const Tx&) throw(OP_WITH_WRONG_DIM);
00061 #else
00062 template<class TA, class Tx, class Tres, class TDot>
00063 friend inline Tres fsl_mv_mult(const TA&, const Tx&) throw();
00064 #endif
00065 
00066 #if(CXSC_INDEX_CHECK)
00067 template<class TA, class TB, class Tres, class TDot, class TElement>
00068 friend inline Tres spsp_mm_mult(const TA&, const TB&) throw(OP_WITH_WRONG_DIM);
00069 #else
00070 template<class TA, class TB, class Tres, class TDot, class TElement>
00071 friend inline Tres spsp_mm_mult(const TA&, const TB&) throw();
00072 #endif
00073 
00074 #if(CXSC_INDEX_CHECK)
00075 template<class TA, class TB, class Tres, class TDot>
00076 friend inline Tres fsp_mm_mult(const TA&, const TB&) throw(OP_WITH_WRONG_DIM);
00077 #else
00078 template<class TA, class TB, class Tres, class TDot>
00079 friend inline Tres fsp_mm_mult(const TA&, const TB&) throw();
00080 #endif
00081 
00082 #if(CXSC_INDEX_CHECK)
00083 template<class TA, class TB, class Tres, class TDot>
00084 friend inline Tres spf_mm_mult(const TA&, const TB&) throw(OP_WITH_WRONG_DIM);
00085 #else
00086 template<class TA, class TB, class Tres, class TDot>
00087 friend inline Tres spf_mm_mult(const TA&, const TB&) throw();
00088 #endif
00089 
00090 template<class TA, class Ts, class Tres>
00091 friend inline Tres sp_ms_div(const TA&, const Ts&);
00092 
00093 template<class TA, class Ts, class Tres>
00094 friend inline Tres sp_ms_mult(const TA&, const Ts&);
00095 
00096 template<class Ts, class TA, class Tres>
00097 friend inline Tres sp_sm_mult(const Ts&, const TA&);
00098 
00099 #if(CXSC_INDEX_CHECK)
00100 template<class TA, class TB, class Tres, class TElement>
00101 friend inline Tres spsp_mm_add(const TA&, const TB&) throw(OP_WITH_WRONG_DIM);
00102 #else
00103 template<class TA, class TB, class Tres, class TElement>
00104 friend inline Tres spsp_mm_add(const TA&, const TB&) throw();
00105 #endif
00106 
00107 #if(CXSC_INDEX_CHECK)
00108 template<class TA, class TB, class Tres>
00109 friend inline Tres spf_mm_add(const TA&, const TB&) throw(OP_WITH_WRONG_DIM);
00110 #else
00111 template<class TA, class TB, class Tres>
00112 friend inline Tres spf_mm_add(const TA&, const TB&) throw();
00113 #endif
00114 
00115 #if(CXSC_INDEX_CHECK)
00116 template<class TA, class TB, class Tres>
00117 friend inline Tres fsp_mm_add(const TA&, const TB&) throw(OP_WITH_WRONG_DIM);
00118 #else
00119 template<class TA, class TB, class Tres>
00120 friend inline Tres fsp_mm_add(const TA&, const TB&) throw();
00121 #endif
00122 
00123 #if(CXSC_INDEX_CHECK)
00124 template<class TA, class TB, class Tres, class TElement>
00125 friend inline Tres spsp_mm_sub(const TA&, const TB&) throw(OP_WITH_WRONG_DIM);
00126 #else
00127 template<class TA, class TB, class Tres, class TElement>
00128 friend inline Tres spsp_mm_sub(const TA&, const TB&) throw();
00129 #endif
00130 
00131 #if(CXSC_INDEX_CHECK)
00132 template<class TA, class TB, class Tres>
00133 friend inline Tres spf_mm_sub(const TA&, const TB&) throw(OP_WITH_WRONG_DIM);
00134 #else
00135 template<class TA, class TB, class Tres>
00136 friend inline Tres spf_mm_sub(const TA&, const TB&) throw();
00137 #endif
00138 
00139 #if(CXSC_INDEX_CHECK)
00140 template<class TA, class TB, class Tres>
00141 friend inline Tres fsp_mm_sub(const TA&, const TB&) throw(OP_WITH_WRONG_DIM);
00142 #else
00143 template<class TA, class TB, class Tres>
00144 friend inline Tres fsp_mm_sub(const TA&, const TB&) throw();
00145 #endif
00146 
00147 #if(CXSC_INDEX_CHECK)
00148 template<class TA, class TB, class Tres, class TElement>
00149 friend inline Tres spsp_mm_hull(const TA&, const TB&) throw(OP_WITH_WRONG_DIM);
00150 #else
00151 template<class TA, class TB, class Tres, class TElement>
00152 friend inline Tres spsp_mm_hull(const TA&, const TB&) throw();
00153 #endif
00154 
00155 #if(CXSC_INDEX_CHECK)
00156 template<class TA, class TB, class Tres>
00157 friend inline Tres spf_mm_hull(const TA&, const TB&) throw(OP_WITH_WRONG_DIM);
00158 #else
00159 template<class TA, class TB, class Tres>
00160 friend inline Tres spf_mm_hull(const TA&, const TB&) throw();
00161 #endif
00162 
00163 #if(CXSC_INDEX_CHECK)
00164 template<class TA, class TB, class Tres>
00165 friend inline Tres fsp_mm_hull(const TA&, const TB&) throw(OP_WITH_WRONG_DIM);
00166 #else
00167 template<class TA, class TB, class Tres>
00168 friend inline Tres fsp_mm_hull(const TA&, const TB&) throw();
00169 #endif
00170 
00171 #if(CXSC_INDEX_CHECK)
00172 template<class TA, class TB, class Tres, class TElement>
00173 friend inline Tres spsp_mm_intersect(const TA&, const TB&) throw(OP_WITH_WRONG_DIM);
00174 #else
00175 template<class TA, class TB, class Tres, class TElement>
00176 friend inline Tres spsp_mm_intersect(const TA&, const TB&) throw();
00177 #endif
00178 
00179 #if(CXSC_INDEX_CHECK)
00180 template<class TA, class TB, class Tres>
00181 friend inline Tres spf_mm_intersect(const TA&, const TB&) throw(OP_WITH_WRONG_DIM);
00182 #else
00183 template<class TA, class TB, class Tres>
00184 friend inline Tres spf_mm_intersect(const TA&, const TB&) throw();
00185 #endif
00186 
00187 #if(CXSC_INDEX_CHECK)
00188 template<class TA, class TB, class Tres>
00189 friend inline Tres fsp_mm_intersect(const TA&, const TB&) throw(OP_WITH_WRONG_DIM);
00190 #else
00191 template<class TA, class TB, class Tres>
00192 friend inline Tres fsp_mm_intersect(const TA&, const TB&) throw();
00193 #endif
00194 
00195 template<class TA, class TB>
00196 friend inline bool spsp_mm_comp(const TA&, const TB&);
00197 
00198 template<class TA, class TB>
00199 friend inline bool spf_mm_comp(const TA&, const TB&);
00200 
00201 template<class TA, class TB>
00202 friend inline bool fsp_mm_comp(const TA&, const TB&);
00203 
00204 template<class TA, class TB, class TType>
00205 friend inline bool spsp_mm_less(const TA&, const TB&);
00206 
00207 template<class TA, class TB, class TType>
00208 friend inline bool spf_mm_less(const TA&, const TB&);
00209 
00210 template<class TA, class TB, class TType>
00211 friend inline bool fsp_mm_less(const TA&, const TB&);
00212 
00213 template<class TA, class TB, class TType>
00214 friend inline bool spsp_mm_leq(const TA&, const TB&);
00215 
00216 template<class TA, class TB, class TType>
00217 friend inline bool spf_mm_leq(const TA&, const TB&);
00218 
00219 template<class TA, class TB, class TType>
00220 friend inline bool fsp_mm_leq(const TA&, const TB&);
00221 
00222 template<class TA, class TB, class TType>
00223 friend inline bool spsp_mm_greater(const TA&, const TB&);
00224 
00225 template<class TA, class TB, class TType>
00226 friend inline bool spf_mm_greater(const TA&, const TB&);
00227 
00228 template<class TA, class TB, class TType>
00229 friend inline bool fsp_mm_greater(const TA&, const TB&);
00230 
00231 template<class TA, class TB, class TType>
00232 friend inline bool spsp_mm_geq(const TA&, const TB&);
00233 
00234 template<class TA, class TB, class TType>
00235 friend inline bool spf_mm_geq(const TA&, const TB&);
00236 
00237 template<class TA, class TB, class TType>
00238 friend inline bool fsp_mm_geq(const TA&, const TB&);
00239 
00240 template<class TA, class Tres>
00241 friend inline Tres sp_m_negative(const TA&);
00242 
00243 template<class TA, class TType>
00244 friend inline std::ostream& sp_m_output(std::ostream&, const TA&);
00245 
00246 template<class TA, class TType>
00247 friend inline std::istream& sp_m_input(std::istream&, TA&);
00248 
00249 #if(CXSC_INDEX_CHECK)
00250 template<class TA, class TB, class TElement>
00251 friend inline TA& slsp_mm_assign(TA&, const TB&) throw(OP_WITH_WRONG_DIM);
00252 #else
00253 template<class TA, class TB, class TElement>
00254 friend inline TA& slsp_mm_assign(TA&, const TB&) throw();
00255 #endif
00256 
00257 #if(CXSC_INDEX_CHECK)
00258 template<class TA, class TB, class TElement, class TType>
00259 friend inline TA& slf_mm_assign(TA&, const TB&) throw(OP_WITH_WRONG_DIM);
00260 #else
00261 template<class TA, class TB, class TElement, class TType>
00262 friend inline TA& slf_mm_assign(TA&, const TB&) throw();
00263 #endif
00264 
00265 template<class TA, class TB, class TType>
00266 friend inline TA& spf_mm_assign(TA&, const TB&);
00267 
00268 template<class TA, class Ts>
00269 friend inline TA& sp_ms_divassign(TA&, const Ts&);
00270 
00271 template<class TA, class Ts>
00272 friend inline TA& sp_ms_multassign(TA&, const Ts&);
00273 
00274 #if(CXSC_INDEX_CHECK)
00275 template<class TA, class TB, class TDot, class TElement>
00276 friend inline TA& spsp_mm_multassign(TA&, const TB&) throw(OP_WITH_WRONG_DIM);
00277 #else
00278 template<class TA, class TB, class TDot, class TElement>
00279 friend inline TA& spsp_mm_multassign(TA&, const TB&) throw();
00280 #endif
00281 
00282 #if(CXSC_INDEX_CHECK)
00283 template<class TA, class TB, class TDot, class TFull>
00284 friend inline TA& spf_mm_multassign(TA&, const TB&) throw(OP_WITH_WRONG_DIM);
00285 #else
00286 template<class TA, class TB, class TDot, class TFull>
00287 friend inline TA& spf_mm_multassign(TA&, const TB&) throw();
00288 #endif
00289 
00290 #if(CXSC_INDEX_CHECK)
00291 template<class TA, class TB, class TDot, class TFull>
00292 friend inline TA& fsp_mm_multassign(TA&, const TB&) throw(OP_WITH_WRONG_DIM);
00293 #else
00294 template<class TA, class TB, class TDot, class TFull>
00295 friend inline TA& fsp_mm_multassign(TA&, const TB&) throw();
00296 #endif
00297 
00298 #if(CXSC_INDEX_CHECK)
00299 template<class TA, class TB>
00300 friend inline TA& fsp_mm_addassign(TA& A, const TB& B) throw(OP_WITH_WRONG_DIM);
00301 #else
00302 template<class TA, class TB>
00303 friend inline TA& fsp_mm_addassign(TA& A, const TB& B) throw();
00304 #endif
00305 
00306 #if(CXSC_INDEX_CHECK)
00307 template<class TA, class TB, class TFull>
00308 friend inline TA& spf_mm_addassign(TA&, const TB&) throw(OP_WITH_WRONG_DIM);
00309 #else
00310 template<class TA, class TB, class TFull>
00311 friend inline TA& spf_mm_addassign(TA&, const TB&) throw();
00312 #endif
00313 
00314 #if(CXSC_INDEX_CHECK)
00315 template<class TA, class TB, class TElement>
00316 friend inline TA& spsp_mm_addassign(TA&, const TB&) throw(OP_WITH_WRONG_DIM);
00317 #else
00318 template<class TA, class TB, class TElement>
00319 friend inline TA& spsp_mm_addassign(TA&, const TB&) throw();
00320 #endif
00321 
00322 #if(CXSC_INDEX_CHECK)
00323 template<class TA, class TB>
00324 friend inline TA& spsp_mm_addassign(TA&, const TB&) throw(OP_WITH_WRONG_DIM);
00325 #else
00326 template<class TA, class TB>
00327 friend inline TA& spsp_mm_addassign(TA&, const TB&) throw();
00328 #endif
00329 
00330 #if(CXSC_INDEX_CHECK)
00331 template<class TA, class TB>
00332 friend inline TA& fsp_mm_subassign(TA& A, const TB& B) throw(OP_WITH_WRONG_DIM);
00333 #else
00334 template<class TA, class TB>
00335 friend inline TA& fsp_mm_subassign(TA& A, const TB& B) throw();
00336 #endif
00337 
00338 #if(CXSC_INDEX_CHECK)
00339 template<class TA, class TB, class TFull>
00340 friend inline TA& spf_mm_subassign(TA&, const TB&) throw(OP_WITH_WRONG_DIM);
00341 #else
00342 template<class TA, class TB, class TFull>
00343 friend inline TA& spf_mm_subassign(TA&, const TB&) throw();
00344 #endif
00345 
00346 #if(CXSC_INDEX_CHECK)
00347 template<class TA, class TB, class TElement>
00348 friend inline TA& spsp_mm_subassign(TA&, const TB&) throw(OP_WITH_WRONG_DIM);
00349 #else
00350 template<class TA, class TB, class TElement>
00351 friend inline TA& spsp_mm_subassign(TA&, const TB&) throw();
00352 #endif
00353 
00354 #if(CXSC_INDEX_CHECK)
00355 template<class TA, class TB>
00356 friend inline TA& spsp_mm_subassign(TA&, const TB&) throw(OP_WITH_WRONG_DIM);
00357 #else
00358 template<class TA, class TB>
00359 friend inline TA& spsp_mm_subassign(TA&, const TB&) throw();
00360 #endif
00361 
00362 #if(CXSC_INDEX_CHECK)
00363 template<class TA, class TB, class TFull>
00364 friend inline TA& spf_mm_hullassign(TA&, const TB&) throw(OP_WITH_WRONG_DIM);
00365 #else
00366 template<class TA, class TB, class TFull>
00367 friend inline TA& spf_mm_hullassign(TA&, const TB&) throw();
00368 #endif
00369 
00370 #if(CXSC_INDEX_CHECK)
00371 template<class TA, class TB>
00372 friend inline TA& fsp_mm_hullassign(TA& A, const TB& B)  throw(OP_WITH_WRONG_DIM);
00373 #else
00374 template<class TA, class TB>
00375 friend inline TA& fsp_mm_hullassign(TA& A, const TB& B)  throw();
00376 #endif
00377 
00378 #if(CXSC_INDEX_CHECK)
00379 template<class TA, class TB, class TElement>
00380 friend inline TA& spsp_mm_hullassign(TA&, const TB&) throw(OP_WITH_WRONG_DIM);
00381 #else
00382 template<class TA, class TB, class TElement>
00383 friend inline TA& spsp_mm_hullassign(TA&, const TB&) throw();
00384 #endif
00385 
00386 #if(CXSC_INDEX_CHECK)
00387 template<class TA, class TB>
00388 friend inline TA& spsp_mm_hullassign(TA&, const TB&) throw(OP_WITH_WRONG_DIM);
00389 #else
00390 template<class TA, class TB>
00391 friend inline TA& spsp_mm_hullassign(TA&, const TB&) throw();
00392 #endif
00393 
00394 #if(CXSC_INDEX_CHECK)
00395 template<class TA, class TB>
00396 friend inline TA& fsp_mm_intersectassign(TA& A, const TB& B)  throw(OP_WITH_WRONG_DIM);
00397 #else
00398 template<class TA, class TB>
00399 friend inline TA& fsp_mm_intersectassign(TA& A, const TB& B)  throw();
00400 #endif
00401 
00402 #if(CXSC_INDEX_CHECK)
00403 template<class TA, class TB, class TFull>
00404 friend inline TA& spf_mm_intersectassign(TA&, const TB&) throw(OP_WITH_WRONG_DIM);
00405 #else
00406 template<class TA, class TB, class TFull>
00407 friend inline TA& spf_mm_intersectassign(TA&, const TB&) throw();
00408 #endif
00409 
00410 #if(CXSC_INDEX_CHECK)
00411 template<class TA, class TB, class TElement>
00412 friend inline TA& spsp_mm_intersectassign(TA&, const TB&) throw(OP_WITH_WRONG_DIM);
00413 #else
00414 template<class TA, class TB, class TElement>
00415 friend inline TA& spsp_mm_intersectassign(TA&, const TB&) throw();
00416 #endif
00417 
00418 #if(CXSC_INDEX_CHECK)
00419 template<class TA, class TB>
00420 friend inline TA& spsp_mm_intersectassign(TA&, const TB&) throw(OP_WITH_WRONG_DIM);
00421 #else
00422 template<class TA, class TB>
00423 friend inline TA& spsp_mm_intersectassign(TA&, const TB&) throw();
00424 #endif
00425 
00426 #if(CXSC_INDEX_CHECK)
00427 template<class Tx, class Ty>
00428 friend inline Tx& svsp_vv_assign(Tx&, const Ty&) throw(OP_WITH_WRONG_DIM);
00429 #else
00430 template<class Tx, class Ty>
00431 friend inline Tx& svsp_vv_assign(Tx&, const Ty&) throw();
00432 #endif
00433 
00434 #if(CXSC_INDEX_CHECK)
00435 template<class Tx, class Ty>
00436 friend inline Tx& svsl_vv_assign(Tx&, const Ty&) throw(OP_WITH_WRONG_DIM);
00437 #else
00438 template<class Tx, class Ty>
00439 friend inline Tx& svsl_vv_assign(Tx&, const Ty&) throw();
00440 #endif
00441 
00442 #if(CXSC_INDEX_CHECK)
00443 template<class Tx, class Ty>
00444 friend inline Tx& svf_vv_assign(Tx&, const Ty&) throw(OP_WITH_WRONG_DIM);
00445 #else
00446 template<class Tx, class Ty>
00447 friend inline Tx& svf_vv_assign(Tx&, const Ty&) throw();
00448 #endif
00449 
00450 template<class TA, class Ts, class TType>
00451 friend inline TA& sp_ms_assign(TA&, const Ts&);
00452 
00453 template<class TA, class Ts, class TElement, class TType>
00454 friend inline TA& sl_ms_assign(TA&, const Ts&);
00455 
00456 template<class Tx, class Ts>
00457 friend inline Tx& sv_vs_assign(Tx&, const Ts&);
00458 
00459 template<class TA>
00460 friend inline bool sp_m_not(const TA&);
00461 
00462 template<class Tx>
00463 friend inline bool sv_v_not(const Tx&);
00464 
00465 template <class TA>
00466 friend inline void sp_m_resize(TA& A) throw();
00467 
00468 #if(CXSC_INDEX_CHECK)
00469 template <class TA>
00470 friend inline void sp_m_resize(TA &A,const int &m, const int &n) throw(WRONG_BOUNDARIES);
00471 #else
00472 template <class TA>
00473 friend inline void sp_m_resize(TA &A,const int &m, const int &n) throw();
00474 #endif
00475 
00476 #if(CXSC_INDEX_CHECK)
00477 template<class TA>
00478 friend inline void sp_m_resize(TA &A,const int &m1, const int &m2,const int &n1,const int &n2) throw(WRONG_BOUNDARIES);
00479 #else
00480 template<class TA>
00481 friend inline void sp_m_resize(TA &A,const int &m1, const int &m2,const int &n1,const int &n2) throw();
00482 #endif