C-XSC - A C++ Class Library for Extended Scientific Computing
2.5.4
|
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