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

Last change on this file since 2833 was 2615, checked in by cmv, 21 years ago

using namespace sophya enleve de machdefs.h, nouveau sopnamsp.h cmv 10/09/2004

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