complex problems

From: Jacek M. Holeczek <holeczek_at_us.edu.pl>
Date: Mon, 11 Apr 2005 15:23:40 +0200 (MET DST)


Hi,
the ROOT is 4.03/04 5 April 2005 (CINT 5.15.169, Mar 14 2005) running on a SLC3/i386 machine.

This newest ROOT has the complex.dll built in. It is not placed in the "usual" $ROOTSYS/cint/include subdirectory, but in the $ROOTSYS/cint/stl subdirectory.

There are some problems, however ...

... when I do not load/include complex manually:



root [0] complex<double> x;
Error: no such template complex<double> FILE:(tmpfile) LINE:1 *** Interpreter error recovered ***

... when I try to "load" the complex.dll library using "gSystem->Load()" (I guess that it does NOT recognize the ".dll" extension as a valid shared library extension, and more ... it does not see that the "full" paths to the library beginning with a "/" has been given and it tries to find the library anywhere in the $LD_LIBRARY_PATH.):



root [0] gSystem->Load("/.../cint/stl/complex.dll") Error in <TUnixSystem::DynamicPathName>: /.../cint/stl/complex.dll[.so | .sl | .dl | .a] does not exist in .:/.../lib::...:/usr/local/lib: (int)(-1)

... when I try to "load" the complex.dll library using ".L" (no complex<float> in complex.dll, note also the output of "root [2] x"):


root [0] .L /.../cint/stl/complex.dll
root [1] complex<double> x;
root [2] x

(class complex<double>)160952168
root [3] cout << x << endl;
Error: operator<< not defined for basic_ostream<char,char_traits<char> > FILE:(tmpfile) LINE:1 *** Interpreter error recovered ***
root [4] .class complex<double>
// ... the output seems to be fine (points to complex.dll) root [5] .class complex<long double>
// ... the output seems to be fine (points to complex.dll) root [6] .class complex<float>
Limitation: Can't instantiate precompiled template complex<float> FILE: LINE:0 *** Interpreter error recovered ***

... when I try to "include" complex (note that complex<float> below comes from _complex.h instead of complex.dll, note also the output of "root [2] x" below and compare with the one above):


root [0] #include "complex"
root [1] complex<double> x;
root [2] x

Error: operator<< not defined for basic_ostream<char,char_traits<char> > FILE:_complex LINE:17 *** Interpreter error recovered ***
root [3] cout << x << endl;
Error: operator<< not defined for basic_ostream<char,char_traits<char> > FILE:(tmpfile) LINE:1 *** Interpreter error recovered ***
root [4] .class complex<double>
// ... the output seems to be fine (points to complex.dll) root [5] .class complex<long double>
// ... the output seems to be fine (points to complex.dll) root [6] .class complex<float>

class complex<float>
 size=0x8 FILE:_complex.h LINE:14
 (tagnum=1448,voffset=-1,isabstract=0,parent=-1,gcomp=0:0,d21=~cd=b)
List of base class--------------------------------------------------------
List of member variable---------------------------------------------------
Defined in complex<float>
_complex.h       26 0xffffffff protected: float re
_complex.h       26 0x3        protected: float im
List of member function---------------------------------------------------
filename       line:size busy function type and name  (in complex<float>)
_complex.h       16:1    0 public: complex<float> complex<float>(float
a=0,float b=0);
_complex.h       17:1    0 public: complex<float> complex<float>(const
complex<float>& a);
_complex.h       18:5    0 public: complex<float>& operator=(const
complex<float>& a);
_complex.h       23:1    0 public: float real(void);
_complex.h       24:1    0 public: float imag(void);

--------------------------------------------------------------------------

Could you, please, fix these problems.

Thanks in advance,
Best regards,
Jacek. Received on Mon Apr 11 2005 - 15:30:04 MEST

This archive was generated by hypermail 2.2.0 : Tue Jan 02 2007 - 14:45:06 MET