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)
27template<class TA, class Tx, class Tres, class TDot, class TElement>
28friend inline Tres spsl_mv_mult(const TA&, const Tx&);
29#else
30template<class TA, class Tx, class Tres, class TDot, class TElement>
31friend inline Tres spsl_mv_mult(const TA&, const Tx&) noexcept;
32#endif
33
34#if(CXSC_INDEX_CHECK)
35template<class TA, class Tx, class Tres, class TDot, class TElement>
36friend inline Tres spsp_mv_mult(const TA&, const Tx&);
37#else
38template<class TA, class Tx, class Tres, class TDot, class TElement>
39friend inline Tres spsp_mv_mult(const TA&, const Tx&) noexcept;
40#endif
41
42#if(CXSC_INDEX_CHECK)
43template<class TA, class Tx, class Tres, class TDot>
44friend inline Tres spf_mv_mult(const TA&, const Tx&);
45#else
46template<class TA, class Tx, class Tres, class TDot>
47friend inline Tres spf_mv_mult(const TA&, const Tx&) noexcept;
48#endif
49
50#if(CXSC_INDEX_CHECK)
51template<class TA, class Tx, class Tres, class TDot>
52friend inline Tres fsp_mv_mult(const TA&, const Tx&);
53#else
54template<class TA, class Tx, class Tres, class TDot>
55friend inline Tres fsp_mv_mult(const TA&, const Tx&) noexcept;
56#endif
57
58#if(CXSC_INDEX_CHECK)
59template<class TA, class Tx, class Tres, class TDot>
60friend inline Tres fsl_mv_mult(const TA&, const Tx&);
61#else
62template<class TA, class Tx, class Tres, class TDot>
63friend inline Tres fsl_mv_mult(const TA&, const Tx&) noexcept;
64#endif
65
66#if(CXSC_INDEX_CHECK)
67template<class TA, class TB, class Tres, class TDot, class TElement>
68friend inline Tres spsp_mm_mult(const TA&, const TB&);
69#else
70template<class TA, class TB, class Tres, class TDot, class TElement>
71friend inline Tres spsp_mm_mult(const TA&, const TB&) noexcept;
72#endif
73
74#if(CXSC_INDEX_CHECK)
75template<class TA, class TB, class Tres, class TDot>
76friend inline Tres fsp_mm_mult(const TA&, const TB&);
77#else
78template<class TA, class TB, class Tres, class TDot>
79friend inline Tres fsp_mm_mult(const TA&, const TB&) noexcept;
80#endif
81
82#if(CXSC_INDEX_CHECK)
83template<class TA, class TB, class Tres, class TDot>
84friend inline Tres spf_mm_mult(const TA&, const TB&);
85#else
86template<class TA, class TB, class Tres, class TDot>
87friend inline Tres spf_mm_mult(const TA&, const TB&) noexcept;
88#endif
89
90template<class TA, class Ts, class Tres>
91friend inline Tres sp_ms_div(const TA&, const Ts&);
92
93template<class TA, class Ts, class Tres>
94friend inline Tres sp_ms_mult(const TA&, const Ts&);
95
96template<class Ts, class TA, class Tres>
97friend inline Tres sp_sm_mult(const Ts&, const TA&);
98
99#if(CXSC_INDEX_CHECK)
100template<class TA, class TB, class Tres, class TElement>
101friend inline Tres spsp_mm_add(const TA&, const TB&);
102#else
103template<class TA, class TB, class Tres, class TElement>
104friend inline Tres spsp_mm_add(const TA&, const TB&) noexcept;
105#endif
106
107#if(CXSC_INDEX_CHECK)
108template<class TA, class TB, class Tres>
109friend inline Tres spf_mm_add(const TA&, const TB&);
110#else
111template<class TA, class TB, class Tres>
112friend inline Tres spf_mm_add(const TA&, const TB&) noexcept;
113#endif
114
115#if(CXSC_INDEX_CHECK)
116template<class TA, class TB, class Tres>
117friend inline Tres fsp_mm_add(const TA&, const TB&);
118#else
119template<class TA, class TB, class Tres>
120friend inline Tres fsp_mm_add(const TA&, const TB&) noexcept;
121#endif
122
123#if(CXSC_INDEX_CHECK)
124template<class TA, class TB, class Tres, class TElement>
125friend inline Tres spsp_mm_sub(const TA&, const TB&);
126#else
127template<class TA, class TB, class Tres, class TElement>
128friend inline Tres spsp_mm_sub(const TA&, const TB&) noexcept;
129#endif
130
131#if(CXSC_INDEX_CHECK)
132template<class TA, class TB, class Tres>
133friend inline Tres spf_mm_sub(const TA&, const TB&);
134#else
135template<class TA, class TB, class Tres>
136friend inline Tres spf_mm_sub(const TA&, const TB&) noexcept;
137#endif
138
139#if(CXSC_INDEX_CHECK)
140template<class TA, class TB, class Tres>
141friend inline Tres fsp_mm_sub(const TA&, const TB&);
142#else
143template<class TA, class TB, class Tres>
144friend inline Tres fsp_mm_sub(const TA&, const TB&) noexcept;
145#endif
146
147#if(CXSC_INDEX_CHECK)
148template<class TA, class TB, class Tres, class TElement>
149friend inline Tres spsp_mm_hull(const TA&, const TB&);
150#else
151template<class TA, class TB, class Tres, class TElement>
152friend inline Tres spsp_mm_hull(const TA&, const TB&) noexcept;
153#endif
154
155#if(CXSC_INDEX_CHECK)
156template<class TA, class TB, class Tres>
157friend inline Tres spf_mm_hull(const TA&, const TB&);
158#else
159template<class TA, class TB, class Tres>
160friend inline Tres spf_mm_hull(const TA&, const TB&) noexcept;
161#endif
162
163#if(CXSC_INDEX_CHECK)
164template<class TA, class TB, class Tres>
165friend inline Tres fsp_mm_hull(const TA&, const TB&);
166#else
167template<class TA, class TB, class Tres>
168friend inline Tres fsp_mm_hull(const TA&, const TB&) noexcept;
169#endif
170
171#if(CXSC_INDEX_CHECK)
172template<class TA, class TB, class Tres, class TElement>
173friend inline Tres spsp_mm_intersect(const TA&, const TB&);
174#else
175template<class TA, class TB, class Tres, class TElement>
176friend inline Tres spsp_mm_intersect(const TA&, const TB&) noexcept;
177#endif
178
179#if(CXSC_INDEX_CHECK)
180template<class TA, class TB, class Tres>
181friend inline Tres spf_mm_intersect(const TA&, const TB&);
182#else
183template<class TA, class TB, class Tres>
184friend inline Tres spf_mm_intersect(const TA&, const TB&) noexcept;
185#endif
186
187#if(CXSC_INDEX_CHECK)
188template<class TA, class TB, class Tres>
189friend inline Tres fsp_mm_intersect(const TA&, const TB&);
190#else
191template<class TA, class TB, class Tres>
192friend inline Tres fsp_mm_intersect(const TA&, const TB&) noexcept;
193#endif
194
195template<class TA, class TB>
196friend inline bool spsp_mm_comp(const TA&, const TB&);
197
198template<class TA, class TB>
199friend inline bool spf_mm_comp(const TA&, const TB&);
200
201template<class TA, class TB>
202friend inline bool fsp_mm_comp(const TA&, const TB&);
203
204template<class TA, class TB, class TType>
205friend inline bool spsp_mm_less(const TA&, const TB&);
206
207template<class TA, class TB, class TType>
208friend inline bool spf_mm_less(const TA&, const TB&);
209
210template<class TA, class TB, class TType>
211friend inline bool fsp_mm_less(const TA&, const TB&);
212
213template<class TA, class TB, class TType>
214friend inline bool spsp_mm_leq(const TA&, const TB&);
215
216template<class TA, class TB, class TType>
217friend inline bool spf_mm_leq(const TA&, const TB&);
218
219template<class TA, class TB, class TType>
220friend inline bool fsp_mm_leq(const TA&, const TB&);
221
222template<class TA, class TB, class TType>
223friend inline bool spsp_mm_greater(const TA&, const TB&);
224
225template<class TA, class TB, class TType>
226friend inline bool spf_mm_greater(const TA&, const TB&);
227
228template<class TA, class TB, class TType>
229friend inline bool fsp_mm_greater(const TA&, const TB&);
230
231template<class TA, class TB, class TType>
232friend inline bool spsp_mm_geq(const TA&, const TB&);
233
234template<class TA, class TB, class TType>
235friend inline bool spf_mm_geq(const TA&, const TB&);
236
237template<class TA, class TB, class TType>
238friend inline bool fsp_mm_geq(const TA&, const TB&);
239
240template<class TA, class Tres>
241friend inline Tres sp_m_negative(const TA&);
242
243template<class TA, class TType>
244friend inline std::ostream& sp_m_output(std::ostream&, const TA&);
245
246template<class TA, class TType>
247friend inline std::istream& sp_m_input(std::istream&, TA&);
248
249#if(CXSC_INDEX_CHECK)
250template<class TA, class TB, class TElement>
251friend inline TA& slsp_mm_assign(TA&, const TB&);
252#else
253template<class TA, class TB, class TElement>
254friend inline TA& slsp_mm_assign(TA&, const TB&) noexcept;
255#endif
256
257#if(CXSC_INDEX_CHECK)
258template<class TA, class TB, class TElement, class TType>
259friend inline TA& slf_mm_assign(TA&, const TB&);
260#else
261template<class TA, class TB, class TElement, class TType>
262friend inline TA& slf_mm_assign(TA&, const TB&) noexcept;
263#endif
264
265template<class TA, class TB, class TType>
266friend inline TA& spf_mm_assign(TA&, const TB&);
267
268template<class TA, class Ts>
269friend inline TA& sp_ms_divassign(TA&, const Ts&);
270
271template<class TA, class Ts>
272friend inline TA& sp_ms_multassign(TA&, const Ts&);
273
274#if(CXSC_INDEX_CHECK)
275template<class TA, class TB, class TDot, class TElement>
276friend inline TA& spsp_mm_multassign(TA&, const TB&);
277#else
278template<class TA, class TB, class TDot, class TElement>
279friend inline TA& spsp_mm_multassign(TA&, const TB&) noexcept;
280#endif
281
282#if(CXSC_INDEX_CHECK)
283template<class TA, class TB, class TDot, class TFull>
284friend inline TA& spf_mm_multassign(TA&, const TB&);
285#else
286template<class TA, class TB, class TDot, class TFull>
287friend inline TA& spf_mm_multassign(TA&, const TB&) noexcept;
288#endif
289
290#if(CXSC_INDEX_CHECK)
291template<class TA, class TB, class TDot, class TFull>
292friend inline TA& fsp_mm_multassign(TA&, const TB&);
293#else
294template<class TA, class TB, class TDot, class TFull>
295friend inline TA& fsp_mm_multassign(TA&, const TB&) noexcept;
296#endif
297
298#if(CXSC_INDEX_CHECK)
299template<class TA, class TB>
300friend inline TA& fsp_mm_addassign(TA& A, const TB& B);
301#else
302template<class TA, class TB>
303friend inline TA& fsp_mm_addassign(TA& A, const TB& B) noexcept;
304#endif
305
306#if(CXSC_INDEX_CHECK)
307template<class TA, class TB, class TFull>
308friend inline TA& spf_mm_addassign(TA&, const TB&);
309#else
310template<class TA, class TB, class TFull>
311friend inline TA& spf_mm_addassign(TA&, const TB&) noexcept;
312#endif
313
314#if(CXSC_INDEX_CHECK)
315template<class TA, class TB, class TElement>
316friend inline TA& spsp_mm_addassign(TA&, const TB&);
317#else
318template<class TA, class TB, class TElement>
319friend inline TA& spsp_mm_addassign(TA&, const TB&) noexcept;
320#endif
321
322#if(CXSC_INDEX_CHECK)
323template<class TA, class TB>
324friend inline TA& spsp_mm_addassign(TA&, const TB&);
325#else
326template<class TA, class TB>
327friend inline TA& spsp_mm_addassign(TA&, const TB&) noexcept;
328#endif
329
330#if(CXSC_INDEX_CHECK)
331template<class TA, class TB>
332friend inline TA& fsp_mm_subassign(TA& A, const TB& B);
333#else
334template<class TA, class TB>
335friend inline TA& fsp_mm_subassign(TA& A, const TB& B) noexcept;
336#endif
337
338#if(CXSC_INDEX_CHECK)
339template<class TA, class TB, class TFull>
340friend inline TA& spf_mm_subassign(TA&, const TB&);
341#else
342template<class TA, class TB, class TFull>
343friend inline TA& spf_mm_subassign(TA&, const TB&) noexcept;
344#endif
345
346#if(CXSC_INDEX_CHECK)
347template<class TA, class TB, class TElement>
348friend inline TA& spsp_mm_subassign(TA&, const TB&);
349#else
350template<class TA, class TB, class TElement>
351friend inline TA& spsp_mm_subassign(TA&, const TB&) noexcept;
352#endif
353
354#if(CXSC_INDEX_CHECK)
355template<class TA, class TB>
356friend inline TA& spsp_mm_subassign(TA&, const TB&);
357#else
358template<class TA, class TB>
359friend inline TA& spsp_mm_subassign(TA&, const TB&) noexcept;
360#endif
361
362#if(CXSC_INDEX_CHECK)
363template<class TA, class TB, class TFull>
364friend inline TA& spf_mm_hullassign(TA&, const TB&);
365#else
366template<class TA, class TB, class TFull>
367friend inline TA& spf_mm_hullassign(TA&, const TB&) noexcept;
368#endif
369
370#if(CXSC_INDEX_CHECK)
371template<class TA, class TB>
372friend inline TA& fsp_mm_hullassign(TA& A, const TB& B) ;
373#else
374template<class TA, class TB>
375friend inline TA& fsp_mm_hullassign(TA& A, const TB& B) noexcept;
376#endif
377
378#if(CXSC_INDEX_CHECK)
379template<class TA, class TB, class TElement>
380friend inline TA& spsp_mm_hullassign(TA&, const TB&);
381#else
382template<class TA, class TB, class TElement>
383friend inline TA& spsp_mm_hullassign(TA&, const TB&) noexcept;
384#endif
385
386#if(CXSC_INDEX_CHECK)
387template<class TA, class TB>
388friend inline TA& spsp_mm_hullassign(TA&, const TB&);
389#else
390template<class TA, class TB>
391friend inline TA& spsp_mm_hullassign(TA&, const TB&) noexcept;
392#endif
393
394#if(CXSC_INDEX_CHECK)
395template<class TA, class TB>
396friend inline TA& fsp_mm_intersectassign(TA& A, const TB& B) ;
397#else
398template<class TA, class TB>
399friend inline TA& fsp_mm_intersectassign(TA& A, const TB& B) noexcept;
400#endif
401
402#if(CXSC_INDEX_CHECK)
403template<class TA, class TB, class TFull>
404friend inline TA& spf_mm_intersectassign(TA&, const TB&);
405#else
406template<class TA, class TB, class TFull>
407friend inline TA& spf_mm_intersectassign(TA&, const TB&) noexcept;
408#endif
409
410#if(CXSC_INDEX_CHECK)
411template<class TA, class TB, class TElement>
412friend inline TA& spsp_mm_intersectassign(TA&, const TB&);
413#else
414template<class TA, class TB, class TElement>
415friend inline TA& spsp_mm_intersectassign(TA&, const TB&) noexcept;
416#endif
417
418#if(CXSC_INDEX_CHECK)
419template<class TA, class TB>
420friend inline TA& spsp_mm_intersectassign(TA&, const TB&);
421#else
422template<class TA, class TB>
423friend inline TA& spsp_mm_intersectassign(TA&, const TB&) noexcept;
424#endif
425
426#if(CXSC_INDEX_CHECK)
427template<class Tx, class Ty>
428friend inline Tx& svsp_vv_assign(Tx&, const Ty&);
429#else
430template<class Tx, class Ty>
431friend inline Tx& svsp_vv_assign(Tx&, const Ty&) noexcept;
432#endif
433
434#if(CXSC_INDEX_CHECK)
435template<class Tx, class Ty>
436friend inline Tx& svsl_vv_assign(Tx&, const Ty&);
437#else
438template<class Tx, class Ty>
439friend inline Tx& svsl_vv_assign(Tx&, const Ty&) noexcept;
440#endif
441
442#if(CXSC_INDEX_CHECK)
443template<class Tx, class Ty>
444friend inline Tx& svf_vv_assign(Tx&, const Ty&);
445#else
446template<class Tx, class Ty>
447friend inline Tx& svf_vv_assign(Tx&, const Ty&) noexcept;
448#endif
449
450template<class TA, class Ts, class TType>
451friend inline TA& sp_ms_assign(TA&, const Ts&);
452
453template<class TA, class Ts, class TElement, class TType>
454friend inline TA& sl_ms_assign(TA&, const Ts&);
455
456template<class Tx, class Ts>
457friend inline Tx& sv_vs_assign(Tx&, const Ts&);
458
459template<class TA>
460friend inline bool sp_m_not(const TA&);
461
462template<class Tx>
463friend inline bool sv_v_not(const Tx&);
464
465template <class TA>
466friend inline void sp_m_resize(TA& A) noexcept;
467
468#if(CXSC_INDEX_CHECK)
469template <class TA>
470friend inline void sp_m_resize(TA &A,const int &m, const int &n);
471#else
472template <class TA>
473friend inline void sp_m_resize(TA &A,const int &m, const int &n) noexcept;
474#endif
475
476#if(CXSC_INDEX_CHECK)
477template<class TA>
478friend inline void sp_m_resize(TA &A,const int &m1, const int &m2,const int &n1,const int &n2);
479#else
480template<class TA>
481friend inline void sp_m_resize(TA &A,const int &m1, const int &m2,const int &n1,const int &n2) noexcept;
482#endif