source: Sophya/trunk/SophyaPI/PIext/pitvmaad.cc@ 2335

Last change on this file since 2335 was 2335, checked in by ansari, 23 years ago

Compil sur SGI-CC avec LANG:std suite au remplacement xxstream.h par xxstream (gcc 3.1) / ajout template <> pour specialisation template - Reza 10/03/2003

File size: 3.1 KB
Line 
1// Adaptateurs pour TMatrix TVector du package Sophya
2// R. Ansari 1/99
3// LAL (Orsay) / IN2P3-CNRS DAPNIA/SPP (Saclay) / CEA
4
5#include "pitvmaad.h"
6#include <math.h>
7
8/* --Methode-- */
9template <class T>
10POTVectorAdapter<T>::POTVectorAdapter(TVector<T>* v, bool ad)
11 : P1DArrayAdapter(v->NElts())
12{
13aDel = ad;
14mVec = v;
15}
16/* --Methode-- */
17template <class T>
18POTVectorAdapter<T>::~POTVectorAdapter()
19{
20if (aDel) delete mVec;
21}
22
23/* --Methode-- */
24template <class T>
25double POTVectorAdapter<T>::Value(int i)
26{
27return((*mVec)(i));
28}
29
30/* --Methode-- */
31#if defined(__SGICC__)
32template <>
33#endif
34double POTVectorAdapter< complex<float> >::Value(int i)
35{
36double re,im;
37re = (*mVec)(i).real();
38im = (*mVec)(i).imag();
39return(sqrt(re*re+im*im));
40}
41
42/* --Methode-- */
43#if defined(__SGICC__)
44template <>
45#endif
46double POTVectorAdapter< complex<double> >::Value(int i)
47{
48double re,im;
49re = (*mVec)(i).real();
50im = (*mVec)(i).imag();
51return(sqrt(re*re+im*im));
52}
53
54/* --Methode-- */
55template <class T>
56POTMatrixAdapter<T>::POTMatrixAdapter(TMatrix<T>* mtx, bool ad)
57 : P2DArrayAdapter(mtx->NCols(), mtx->NRows())
58{
59aDel = ad;
60mMtx = mtx;
61}
62/* --Methode-- */
63template <class T>
64POTMatrixAdapter<T>::~POTMatrixAdapter()
65{
66if (aDel) delete mMtx;
67}
68/* --Methode-- */
69template <class T>
70double POTMatrixAdapter<T>::Value(int ix, int iy)
71{
72return((double)(*mMtx)(iy, ix));
73}
74
75/* --Methode-- */
76#if defined(__SGICC__)
77template <>
78#endif
79double POTMatrixAdapter< complex<float> >::Value(int ix, int iy)
80{
81double re,im;
82re = (*mMtx)(iy, ix).real();
83im = (*mMtx)(iy, ix).imag();
84return(sqrt(re*re+im*im));
85}
86
87/* --Methode-- */
88#if defined(__SGICC__)
89template <>
90#endif
91double POTMatrixAdapter< complex<double> >::Value(int ix, int iy)
92{
93double re,im;
94re = (*mMtx)(iy, ix).real();
95im = (*mMtx)(iy, ix).imag();
96return(sqrt(re*re+im*im));
97}
98
99#ifdef __CXX_PRAGMA_TEMPLATES__
100#pragma define_template POTVectorAdapter< int_4 >
101#pragma define_template POTVectorAdapter< int_8 >
102#pragma define_template POTVectorAdapter< float >
103#pragma define_template POTVectorAdapter< double >
104#pragma define_template POTVectorAdapter< complex<float> >
105#pragma define_template POTVectorAdapter< complex<double> >
106
107#pragma define_template POTMatrixAdapter< int_4 >
108#pragma define_template POTMatrixAdapter< int_8 >
109#pragma define_template POTMatrixAdapter< float >
110#pragma define_template POTMatrixAdapter< double >
111#pragma define_template POTMatrixAdapter< complex<float> >
112#pragma define_template POTMatrixAdapter< complex<double> >
113#endif
114
115#if defined(ANSI_TEMPLATES)
116template class POTVectorAdapter< int_4 >;
117template class POTVectorAdapter< int_8 >;
118template class POTVectorAdapter< float >;
119template class POTVectorAdapter< double >;
120template class POTVectorAdapter< complex<float> >;
121template class POTVectorAdapter< complex<double> >;
122
123template class POTMatrixAdapter< int_4 >;
124template class POTMatrixAdapter< int_8 >;
125template class POTMatrixAdapter< float >;
126template class POTMatrixAdapter< double >;
127template class POTMatrixAdapter< complex<float> >;
128template class POTMatrixAdapter< complex<double> >;
129#endif
Note: See TracBrowser for help on using the repository browser.