(I am not sure if I am right in mentioning additional bugs
in this bug report. Please correct me if this is not the
convention and I will file a separate one.)

Below I have listed new bugs I found and the solutions to
fix them (except of one).

Just FYI, I have these packages now installed:
> dpkg -l *superlu* *arpack* *blas* | grep ^ii
ii  libsuperlu3    3.0-2   Direct solution of large,
sparse systems of
ii  libsuperlu3-de 3.0-2   Direct solution of large,
sparse systems of
ii  arpack++       2.1-5   Object-oriented version of the
ARPACK packag
ii  libarpack2     2.1-8   Fortran77 subroutines to solve
large scale e
ii  libarpack2-dev 2.1-8   Fortran77 subroutines to solve
large scale e
ii  refblas3       1.2-6   Basic Linear Algebra
Subroutines 3, shared l
ii  refblas3-dev   1.2-6   Basic Linear Algebra
Subroutines 3, static l


Continuing with the examples of ARPACK++, here is another
bug:
Line 34 of
/usr/share/doc/arpack++/examples/matrices/nonsym/lnmatrxa.h
is:
m      = INT(sqrt(n/2));

With this line, the compiler gives the error:
#-----------------------------------------------
/usr/share/doc/arpack++/examples/matrices/nonsym/lnmatrxa.h:
In function `void
   BrusselatorMatrix(FLOAT, FLOAT, FLOAT, FLOAT, FLOAT,
INT, INT&, FLOAT*&,
   INT*&, INT*&) [with FLOAT = double, INT = int]':
ansymshf.cc:71:   instantiated from here
/usr/share/doc/arpack++/examples/matrices/nonsym/lnmatrxa.h:35:
error: call of
   overloaded `sqrt(int)' is ambiguous
/usr/include/bits/mathcalls.h:157: error: candidates are:
double sqrt(double)
/usr/include/c++/3.3/cmath:550: error:                
long double
   std::sqrt(long double)
/usr/include/c++/3.3/cmath:546: error:                
float std::sqrt(float)
#-----------------------------------------------

The error is I guess removed by typecasting the argument
of 'sqrt' function to double by modifying the line
mentioned to:
m      = INT(sqrt( ((double)n) / 2));

So that took care of that. But is this even advisable?
Afterall, 'n' is a template parameter.


Anyhow, if I did that change, the compilation progressed
further, but I then got these two more rather serious
errors(only part of the compiler output here):

#---------------------------------------------------
/usr/include/arpack++/arlgnsym.h: In constructor `
   ARluNonSymGenEig<FLOAT>::ARluNonSymGenEig(int,
ARluNonSymMatrix<TYPE>&,
   ARluNonSymMatrix<TYPE>&, char*, int, FLOAT, int,
FLOAT*, bool) [with FLOAT =
   double]':
areig.h:773:   instantiated from `int AREig(FLOAT*,
FLOAT*, FLOAT*, int, int, FLOAT*, int*, int*, int, FLOAT*,
int*, int*, int, char*, int, FLOAT, int, FLOAT*, bool)
[with FLOAT = double]'
ansymgre.cc:87:   instantiated from here
/usr/include/arpack++/arlgnsym.h:193: error: no matching
function for call to `
   ARluNonSymGenEig<double>::DefineParameters(int, int&,
   ARluNonSymPencil<double, double>*, <unknown type>,
ARluNonSymPencil<double,
   double>*, <unknown type>, char*&, int&, double&, int&,
double*&, bool&)'
/usr/include/arpack++/argeig.h:128: error: candidates are:
void ARGenEig<FLOAT,
   TYPE, FOP, FB>::DefineParameters(int, int, FOP*,
typename ARStdEig<FLOAT,
   TYPE, FOP>::TypeOPx, FB*, void (FB::*)(TYPE*, TYPE*),
char*, int, FLOAT,
   int, TYPE*, bool) [with FLOAT = double, TYPE = double,
FOP =
   ARluNonSymPencil<double, double>, FB =
ARluNonSymPencil<double, double>]
/usr/include/arpack++/armat.h: In member function `void
ARluNonSymPencil<T,
   S>::DefineMatrices(ARluNonSymMatrix<TYPE>&,
ARluNonSymMatrix<TYPE>&) [with
   TYPE = double, FLOAT = double]':
areig.h:191:   instantiated from `int AREig(FLOAT*,
FLOAT*, FLOAT*, int, int, FLOAT*, int*, int*, int, FLOAT*,
int*, int*, int, char*, int, FLOAT, int, FLOAT*, bool)
[with FLOAT = double]'
ansymgre.cc:87:   instantiated from here
/usr/include/arpack++/armat.h:25: error: `int
ARMatrix<double>::m' is protected
/usr/include/arpack++/arlnspen.h:675: error: within this
context
/usr/include/arpack++/armat.h:25: error: `int
ARMatrix<double>::m' is protected
/usr/include/arpack++/arlnspen.h:675: error: within this
context
/usr/include/arpack++/armat.h:25: error: `int
ARMatrix<double>::n' is protected
/usr/include/arpack++/arlnspen.h:675: error: within this
context
/usr/include/arpack++/armat.h:25: error: `int
ARMatrix<double>::n' is protected
/usr/include/arpack++/arlnspen.h:675: error: within this
context

#---------------------------------------------------


The first error above is the now familiar one of "<unknown
type>". That is solved by putting "&" in before the 4th
and 6th arguments of DefineParameters function at line 193
of  /usr/include/arpack++/arlgnsym.h and making lines
193~196 of this file as:
%< %< ------------------------------------------------
  DefineParameters(A.ncols(), nevp, &Pencil,
                   &ARluNonSymPencil<FLOAT,
FLOAT>::MultInvBAv, &Pencil,
                   &ARluNonSymPencil<FLOAT,
FLOAT>::MultBv, whichp,
                   ncvp, tolp, maxitp, residp, ishiftp);
%< %< ------------------------------------------------


That leaves us with the second type of errors that a
variable "is protected within this context". That happens
because the class ARluNonSymPencil(in arlnspen.h) contains
ARluNonSymMatrix<TYPE>* A and ARluNonSymMatrix<TYPE>* B
(as protected members). And the class ARluNonSymMatrix (in
arlnsmat.h) is derived from the class ARMatrix(defined in
armat.h) which contains the "n" and "m" variables as
protected ints that ARluNonSymPencil is trying to access.
Which, of course, is not allowed in C++.

I am not sure how to solve the last problem (except to
make "n" and "m" as public. Not sure if that is a good
idea). Have my earlier changes that I did to remove other
compiler errors anything to do with this last problem? And
more important, if that problem is not solved, no program
needing that class will compile, rendering this packages
unusable.

Thanks,
->HS

__________________________________________________
Do You Yahoo!?
Tired of spam?  Yahoo! Mail has the best spam protection around 
http://mail.yahoo.com 


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]

Reply via email to