C-XSC - A C++ Class Library for Extended Scientific Computing  2.5.4
matrix_friend_declarations.inl
1 /*
2 ** CXSC is a C++ library for eXtended Scientific Computing (V 2.5.4)
3 **
4 ** Copyright (C) 1990-2000 Institut fuer Angewandte Mathematik,
5 ** Universitaet Karlsruhe, Germany
6 ** (C) 2000-2014 Wiss. Rechnen/Softwaretechnologie
7 ** Universitaet Wuppertal, Germany
8 **
9 ** This library is free software; you can redistribute it and/or
10 ** modify it under the terms of the GNU Library General Public
11 ** License as published by the Free Software Foundation; either
12 ** version 2 of the License, or (at your option) any later version.
13 **
14 ** This library is distributed in the hope that it will be useful,
15 ** but WITHOUT ANY WARRANTY; without even the implied warranty of
16 ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
17 ** Library General Public License for more details.
18 **
19 ** You should have received a copy of the GNU Library General Public
20 ** License along with this library; if not, write to the Free
21 ** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
22 */
23 
24 /* CVS $Id: matrix_friend_declarations.inl,v 1.10 2014/01/30 17:23:47 cxsc Exp $ */
25 
26 #if(CXSC_INDEX_CHECK)
27 template<class TA, class Tx, class Tres, class TDot, class TElement>
28 friend inline Tres spsl_mv_mult(const TA&, const Tx&) throw(OP_WITH_WRONG_DIM);
29 #else
30 template<class TA, class Tx, class Tres, class TDot, class TElement>
31 friend inline Tres spsl_mv_mult(const TA&, const Tx&) throw();
32 #endif
33 
34 #if(CXSC_INDEX_CHECK)
35 template<class TA, class Tx, class Tres, class TDot, class TElement>
36 friend inline Tres spsp_mv_mult(const TA&, const Tx&) throw(OP_WITH_WRONG_DIM);
37 #else
38 template<class TA, class Tx, class Tres, class TDot, class TElement>
39 friend inline Tres spsp_mv_mult(const TA&, const Tx&) throw();
40 #endif
41 
42 #if(CXSC_INDEX_CHECK)
43 template<class TA, class Tx, class Tres, class TDot>
44 friend inline Tres spf_mv_mult(const TA&, const Tx&) throw(OP_WITH_WRONG_DIM);
45 #else
46 template<class TA, class Tx, class Tres, class TDot>
47 friend inline Tres spf_mv_mult(const TA&, const Tx&) throw();
48 #endif
49 
50 #if(CXSC_INDEX_CHECK)
51 template<class TA, class Tx, class Tres, class TDot>
52 friend inline Tres fsp_mv_mult(const TA&, const Tx&) throw(OP_WITH_WRONG_DIM);
53 #else
54 template<class TA, class Tx, class Tres, class TDot>
55 friend inline Tres fsp_mv_mult(const TA&, const Tx&) throw();
56 #endif
57 
58 #if(CXSC_INDEX_CHECK)
59 template<class TA, class Tx, class Tres, class TDot>
60 friend inline Tres fsl_mv_mult(const TA&, const Tx&) throw(OP_WITH_WRONG_DIM);
61 #else
62 template<class TA, class Tx, class Tres, class TDot>
63 friend inline Tres fsl_mv_mult(const TA&, const Tx&) throw();
64 #endif
65 
66 #if(CXSC_INDEX_CHECK)
67 template<class TA, class TB, class Tres, class TDot, class TElement>
68 friend inline Tres spsp_mm_mult(const TA&, const TB&) throw(OP_WITH_WRONG_DIM);
69 #else
70 template<class TA, class TB, class Tres, class TDot, class TElement>
71 friend inline Tres spsp_mm_mult(const TA&, const TB&) throw();
72 #endif
73 
74 #if(CXSC_INDEX_CHECK)
75 template<class TA, class TB, class Tres, class TDot>
76 friend inline Tres fsp_mm_mult(const TA&, const TB&) throw(OP_WITH_WRONG_DIM);
77 #else
78 template<class TA, class TB, class Tres, class TDot>
79 friend inline Tres fsp_mm_mult(const TA&, const TB&) throw();
80 #endif
81 
82 #if(CXSC_INDEX_CHECK)
83 template<class TA, class TB, class Tres, class TDot>
84 friend inline Tres spf_mm_mult(const TA&, const TB&) throw(OP_WITH_WRONG_DIM);
85 #else
86 template<class TA, class TB, class Tres, class TDot>
87 friend inline Tres spf_mm_mult(const TA&, const TB&) throw();
88 #endif
89 
90 template<class TA, class Ts, class Tres>
91 friend inline Tres sp_ms_div(const TA&, const Ts&);
92 
93 template<class TA, class Ts, class Tres>
94 friend inline Tres sp_ms_mult(const TA&, const Ts&);
95 
96 template<class Ts, class TA, class Tres>
97 friend inline Tres sp_sm_mult(const Ts&, const TA&);
98 
99 #if(CXSC_INDEX_CHECK)
100 template<class TA, class TB, class Tres, class TElement>
101 friend inline Tres spsp_mm_add(const TA&, const TB&) throw(OP_WITH_WRONG_DIM);
102 #else
103 template<class TA, class TB, class Tres, class TElement>
104 friend inline Tres spsp_mm_add(const TA&, const TB&) throw();
105 #endif
106 
107 #if(CXSC_INDEX_CHECK)
108 template<class TA, class TB, class Tres>
109 friend inline Tres spf_mm_add(const TA&, const TB&) throw(OP_WITH_WRONG_DIM);
110 #else
111 template<class TA, class TB, class Tres>
112 friend inline Tres spf_mm_add(const TA&, const TB&) throw();
113 #endif
114 
115 #if(CXSC_INDEX_CHECK)
116 template<class TA, class TB, class Tres>
117 friend inline Tres fsp_mm_add(const TA&, const TB&) throw(OP_WITH_WRONG_DIM);
118 #else
119 template<class TA, class TB, class Tres>
120 friend inline Tres fsp_mm_add(const TA&, const TB&) throw();
121 #endif
122 
123 #if(CXSC_INDEX_CHECK)
124 template<class TA, class TB, class Tres, class TElement>
125 friend inline Tres spsp_mm_sub(const TA&, const TB&) throw(OP_WITH_WRONG_DIM);
126 #else
127 template<class TA, class TB, class Tres, class TElement>
128 friend inline Tres spsp_mm_sub(const TA&, const TB&) throw();
129 #endif
130 
131 #if(CXSC_INDEX_CHECK)
132 template<class TA, class TB, class Tres>
133 friend inline Tres spf_mm_sub(const TA&, const TB&) throw(OP_WITH_WRONG_DIM);
134 #else
135 template<class TA, class TB, class Tres>
136 friend inline Tres spf_mm_sub(const TA&, const TB&) throw();
137 #endif
138 
139 #if(CXSC_INDEX_CHECK)
140 template<class TA, class TB, class Tres>
141 friend inline Tres fsp_mm_sub(const TA&, const TB&) throw(OP_WITH_WRONG_DIM);
142 #else
143 template<class TA, class TB, class Tres>
144 friend inline Tres fsp_mm_sub(const TA&, const TB&) throw();
145 #endif
146 
147 #if(CXSC_INDEX_CHECK)
148 template<class TA, class TB, class Tres, class TElement>
149 friend inline Tres spsp_mm_hull(const TA&, const TB&) throw(OP_WITH_WRONG_DIM);
150 #else
151 template<class TA, class TB, class Tres, class TElement>
152 friend inline Tres spsp_mm_hull(const TA&, const TB&) throw();
153 #endif
154 
155 #if(CXSC_INDEX_CHECK)
156 template<class TA, class TB, class Tres>
157 friend inline Tres spf_mm_hull(const TA&, const TB&) throw(OP_WITH_WRONG_DIM);
158 #else
159 template<class TA, class TB, class Tres>
160 friend inline Tres spf_mm_hull(const TA&, const TB&) throw();
161 #endif
162 
163 #if(CXSC_INDEX_CHECK)
164 template<class TA, class TB, class Tres>
165 friend inline Tres fsp_mm_hull(const TA&, const TB&) throw(OP_WITH_WRONG_DIM);
166 #else
167 template<class TA, class TB, class Tres>
168 friend inline Tres fsp_mm_hull(const TA&, const TB&) throw();
169 #endif
170 
171 #if(CXSC_INDEX_CHECK)
172 template<class TA, class TB, class Tres, class TElement>
173 friend inline Tres spsp_mm_intersect(const TA&, const TB&) throw(OP_WITH_WRONG_DIM);
174 #else
175 template<class TA, class TB, class Tres, class TElement>
176 friend inline Tres spsp_mm_intersect(const TA&, const TB&) throw();
177 #endif
178 
179 #if(CXSC_INDEX_CHECK)
180 template<class TA, class TB, class Tres>
181 friend inline Tres spf_mm_intersect(const TA&, const TB&) throw(OP_WITH_WRONG_DIM);
182 #else
183 template<class TA, class TB, class Tres>
184 friend inline Tres spf_mm_intersect(const TA&, const TB&) throw();
185 #endif
186 
187 #if(CXSC_INDEX_CHECK)
188 template<class TA, class TB, class Tres>
189 friend inline Tres fsp_mm_intersect(const TA&, const TB&) throw(OP_WITH_WRONG_DIM);
190 #else
191 template<class TA, class TB, class Tres>
192 friend inline Tres fsp_mm_intersect(const TA&, const TB&) throw();
193 #endif
194 
195 template<class TA, class TB>
196 friend inline bool spsp_mm_comp(const TA&, const TB&);
197 
198 template<class TA, class TB>
199 friend inline bool spf_mm_comp(const TA&, const TB&);
200 
201 template<class TA, class TB>
202 friend inline bool fsp_mm_comp(const TA&, const TB&);
203 
204 template<class TA, class TB, class TType>
205 friend inline bool spsp_mm_less(const TA&, const TB&);
206 
207 template<class TA, class TB, class TType>
208 friend inline bool spf_mm_less(const TA&, const TB&);
209 
210 template<class TA, class TB, class TType>
211 friend inline bool fsp_mm_less(const TA&, const TB&);
212 
213 template<class TA, class TB, class TType>
214 friend inline bool spsp_mm_leq(const TA&, const TB&);
215 
216 template<class TA, class TB, class TType>
217 friend inline bool spf_mm_leq(const TA&, const TB&);
218 
219 template<class TA, class TB, class TType>
220 friend inline bool fsp_mm_leq(const TA&, const TB&);
221 
222 template<class TA, class TB, class TType>
223 friend inline bool spsp_mm_greater(const TA&, const TB&);
224 
225 template<class TA, class TB, class TType>
226 friend inline bool spf_mm_greater(const TA&, const TB&);
227 
228 template<class TA, class TB, class TType>
229 friend inline bool fsp_mm_greater(const TA&, const TB&);
230 
231 template<class TA, class TB, class TType>
232 friend inline bool spsp_mm_geq(const TA&, const TB&);
233 
234 template<class TA, class TB, class TType>
235 friend inline bool spf_mm_geq(const TA&, const TB&);
236 
237 template<class TA, class TB, class TType>
238 friend inline bool fsp_mm_geq(const TA&, const TB&);
239 
240 template<class TA, class Tres>
241 friend inline Tres sp_m_negative(const TA&);
242 
243 template<class TA, class TType>
244 friend inline std::ostream& sp_m_output(std::ostream&, const TA&);
245 
246 template<class TA, class TType>
247 friend inline std::istream& sp_m_input(std::istream&, TA&);
248 
249 #if(CXSC_INDEX_CHECK)
250 template<class TA, class TB, class TElement>
251 friend inline TA& slsp_mm_assign(TA&, const TB&) throw(OP_WITH_WRONG_DIM);
252 #else
253 template<class TA, class TB, class TElement>
254 friend inline TA& slsp_mm_assign(TA&, const TB&) throw();
255 #endif
256 
257 #if(CXSC_INDEX_CHECK)
258 template<class TA, class TB, class TElement, class TType>
259 friend inline TA& slf_mm_assign(TA&, const TB&) throw(OP_WITH_WRONG_DIM);
260 #else
261 template<class TA, class TB, class TElement, class TType>
262 friend inline TA& slf_mm_assign(TA&, const TB&) throw();
263 #endif
264 
265 template<class TA, class TB, class TType>
266 friend inline TA& spf_mm_assign(TA&, const TB&);
267 
268 template<class TA, class Ts>
269 friend inline TA& sp_ms_divassign(TA&, const Ts&);
270 
271 template<class TA, class Ts>
272 friend inline TA& sp_ms_multassign(TA&, const Ts&);
273 
274 #if(CXSC_INDEX_CHECK)
275 template<class TA, class TB, class TDot, class TElement>
276 friend inline TA& spsp_mm_multassign(TA&, const TB&) throw(OP_WITH_WRONG_DIM);
277 #else
278 template<class TA, class TB, class TDot, class TElement>
279 friend inline TA& spsp_mm_multassign(TA&, const TB&) throw();
280 #endif
281 
282 #if(CXSC_INDEX_CHECK)
283 template<class TA, class TB, class TDot, class TFull>
284 friend inline TA& spf_mm_multassign(TA&, const TB&) throw(OP_WITH_WRONG_DIM);
285 #else
286 template<class TA, class TB, class TDot, class TFull>
287 friend inline TA& spf_mm_multassign(TA&, const TB&) throw();
288 #endif
289 
290 #if(CXSC_INDEX_CHECK)
291 template<class TA, class TB, class TDot, class TFull>
292 friend inline TA& fsp_mm_multassign(TA&, const TB&) throw(OP_WITH_WRONG_DIM);
293 #else
294 template<class TA, class TB, class TDot, class TFull>
295 friend inline TA& fsp_mm_multassign(TA&, const TB&) throw();
296 #endif
297 
298 #if(CXSC_INDEX_CHECK)
299 template<class TA, class TB>
300 friend inline TA& fsp_mm_addassign(TA& A, const TB& B) throw(OP_WITH_WRONG_DIM);
301 #else
302 template<class TA, class TB>
303 friend inline TA& fsp_mm_addassign(TA& A, const TB& B) throw();
304 #endif
305 
306 #if(CXSC_INDEX_CHECK)
307 template<class TA, class TB, class TFull>
308 friend inline TA& spf_mm_addassign(TA&, const TB&) throw(OP_WITH_WRONG_DIM);
309 #else
310 template<class TA, class TB, class TFull>
311 friend inline TA& spf_mm_addassign(TA&, const TB&) throw();
312 #endif
313 
314 #if(CXSC_INDEX_CHECK)
315 template<class TA, class TB, class TElement>
316 friend inline TA& spsp_mm_addassign(TA&, const TB&) throw(OP_WITH_WRONG_DIM);
317 #else
318 template<class TA, class TB, class TElement>
319 friend inline TA& spsp_mm_addassign(TA&, const TB&) throw();
320 #endif
321 
322 #if(CXSC_INDEX_CHECK)
323 template<class TA, class TB>
324 friend inline TA& spsp_mm_addassign(TA&, const TB&) throw(OP_WITH_WRONG_DIM);
325 #else
326 template<class TA, class TB>
327 friend inline TA& spsp_mm_addassign(TA&, const TB&) throw();
328 #endif
329 
330 #if(CXSC_INDEX_CHECK)
331 template<class TA, class TB>
332 friend inline TA& fsp_mm_subassign(TA& A, const TB& B) throw(OP_WITH_WRONG_DIM);
333 #else
334 template<class TA, class TB>
335 friend inline TA& fsp_mm_subassign(TA& A, const TB& B) throw();
336 #endif
337 
338 #if(CXSC_INDEX_CHECK)
339 template<class TA, class TB, class TFull>
340 friend inline TA& spf_mm_subassign(TA&, const TB&) throw(OP_WITH_WRONG_DIM);
341 #else
342 template<class TA, class TB, class TFull>
343 friend inline TA& spf_mm_subassign(TA&, const TB&) throw();
344 #endif
345 
346 #if(CXSC_INDEX_CHECK)
347 template<class TA, class TB, class TElement>
348 friend inline TA& spsp_mm_subassign(TA&, const TB&) throw(OP_WITH_WRONG_DIM);
349 #else
350 template<class TA, class TB, class TElement>
351 friend inline TA& spsp_mm_subassign(TA&, const TB&) throw();
352 #endif
353 
354 #if(CXSC_INDEX_CHECK)
355 template<class TA, class TB>
356 friend inline TA& spsp_mm_subassign(TA&, const TB&) throw(OP_WITH_WRONG_DIM);
357 #else
358 template<class TA, class TB>
359 friend inline TA& spsp_mm_subassign(TA&, const TB&) throw();
360 #endif
361 
362 #if(CXSC_INDEX_CHECK)
363 template<class TA, class TB, class TFull>
364 friend inline TA& spf_mm_hullassign(TA&, const TB&) throw(OP_WITH_WRONG_DIM);
365 #else
366 template<class TA, class TB, class TFull>
367 friend inline TA& spf_mm_hullassign(TA&, const TB&) throw();
368 #endif
369 
370 #if(CXSC_INDEX_CHECK)
371 template<class TA, class TB>
372 friend inline TA& fsp_mm_hullassign(TA& A, const TB& B) throw(OP_WITH_WRONG_DIM);
373 #else
374 template<class TA, class TB>
375 friend inline TA& fsp_mm_hullassign(TA& A, const TB& B) throw();
376 #endif
377 
378 #if(CXSC_INDEX_CHECK)
379 template<class TA, class TB, class TElement>
380 friend inline TA& spsp_mm_hullassign(TA&, const TB&) throw(OP_WITH_WRONG_DIM);
381 #else
382 template<class TA, class TB, class TElement>
383 friend inline TA& spsp_mm_hullassign(TA&, const TB&) throw();
384 #endif
385 
386 #if(CXSC_INDEX_CHECK)
387 template<class TA, class TB>
388 friend inline TA& spsp_mm_hullassign(TA&, const TB&) throw(OP_WITH_WRONG_DIM);
389 #else
390 template<class TA, class TB>
391 friend inline TA& spsp_mm_hullassign(TA&, const TB&) throw();
392 #endif
393 
394 #if(CXSC_INDEX_CHECK)
395 template<class TA, class TB>
396 friend inline TA& fsp_mm_intersectassign(TA& A, const TB& B) throw(OP_WITH_WRONG_DIM);
397 #else
398 template<class TA, class TB>
399 friend inline TA& fsp_mm_intersectassign(TA& A, const TB& B) throw();
400 #endif
401 
402 #if(CXSC_INDEX_CHECK)
403 template<class TA, class TB, class TFull>
404 friend inline TA& spf_mm_intersectassign(TA&, const TB&) throw(OP_WITH_WRONG_DIM);
405 #else
406 template<class TA, class TB, class TFull>
407 friend inline TA& spf_mm_intersectassign(TA&, const TB&) throw();
408 #endif
409 
410 #if(CXSC_INDEX_CHECK)
411 template<class TA, class TB, class TElement>
412 friend inline TA& spsp_mm_intersectassign(TA&, const TB&) throw(OP_WITH_WRONG_DIM);
413 #else
414 template<class TA, class TB, class TElement>
415 friend inline TA& spsp_mm_intersectassign(TA&, const TB&) throw();
416 #endif
417 
418 #if(CXSC_INDEX_CHECK)
419 template<class TA, class TB>
420 friend inline TA& spsp_mm_intersectassign(TA&, const TB&) throw(OP_WITH_WRONG_DIM);
421 #else
422 template<class TA, class TB>
423 friend inline TA& spsp_mm_intersectassign(TA&, const TB&) throw();
424 #endif
425 
426 #if(CXSC_INDEX_CHECK)
427 template<class Tx, class Ty>
428 friend inline Tx& svsp_vv_assign(Tx&, const Ty&) throw(OP_WITH_WRONG_DIM);
429 #else
430 template<class Tx, class Ty>
431 friend inline Tx& svsp_vv_assign(Tx&, const Ty&) throw();
432 #endif
433 
434 #if(CXSC_INDEX_CHECK)
435 template<class Tx, class Ty>
436 friend inline Tx& svsl_vv_assign(Tx&, const Ty&) throw(OP_WITH_WRONG_DIM);
437 #else
438 template<class Tx, class Ty>
439 friend inline Tx& svsl_vv_assign(Tx&, const Ty&) throw();
440 #endif
441 
442 #if(CXSC_INDEX_CHECK)
443 template<class Tx, class Ty>
444 friend inline Tx& svf_vv_assign(Tx&, const Ty&) throw(OP_WITH_WRONG_DIM);
445 #else
446 template<class Tx, class Ty>
447 friend inline Tx& svf_vv_assign(Tx&, const Ty&) throw();
448 #endif
449 
450 template<class TA, class Ts, class TType>
451 friend inline TA& sp_ms_assign(TA&, const Ts&);
452 
453 template<class TA, class Ts, class TElement, class TType>
454 friend inline TA& sl_ms_assign(TA&, const Ts&);
455 
456 template<class Tx, class Ts>
457 friend inline Tx& sv_vs_assign(Tx&, const Ts&);
458 
459 template<class TA>
460 friend inline bool sp_m_not(const TA&);
461 
462 template<class Tx>
463 friend inline bool sv_v_not(const Tx&);
464 
465 template <class TA>
466 friend inline void sp_m_resize(TA& A) throw();
467 
468 #if(CXSC_INDEX_CHECK)
469 template <class TA>
470 friend inline void sp_m_resize(TA &A,const int &m, const int &n) throw(WRONG_BOUNDARIES);
471 #else
472 template <class TA>
473 friend inline void sp_m_resize(TA &A,const int &m, const int &n) throw();
474 #endif
475 
476 #if(CXSC_INDEX_CHECK)
477 template<class TA>
478 friend inline void sp_m_resize(TA &A,const int &m1, const int &m2,const int &n1,const int &n2) throw(WRONG_BOUNDARIES);
479 #else
480 template<class TA>
481 friend inline void sp_m_resize(TA &A,const int &m1, const int &m2,const int &n1,const int &n2) throw();
482 #endif