Re: [Lapackpp-devel] LaLinearSolve overloading Question
Status: Beta
Brought to you by:
cstim
From: Christian S. <sti...@tu...> - 2004-12-18 12:09:10
|
Dear Terrance, Am Samstag, 18. Dezember 2004 03:29 schrieb Terrrance O'Regan: > Hello everyone, I am just beginning to use Lapackpp. So far I am able to > create LaGenMatDouble and LaVectorDouble objects and use them with > LaLinearSolve to solve a set of linear equations. Now I want to use > LaSymmMatDouble (and eventually banded for drift-diffusion) with > LaLinearSolve. I started the lapackpp-2 project a year ago because I needed the (complex-valued) general matrices. Therefore I was only able to double-check the code related to these general matrices. The point with all more specialized matrices is that their code is untested in the lapackpp-2 context -- I cannot tell whether they work and whether they work correctly. Of course, it wouldn't help to only make sure that the functions are there. I also would have to check numerically whether the results are actually the promised results. As you intend to use LaLinearSolve with LaSymmMatDouble, you just ran over such an untested area of lapackpp. > However, when I do this I get this error: > > C:/DOCUME~1/TERRAN~1/LOCALS~1/Temp/ccQLbaaa.o(.text+0x316):possoin.cpp: > undefined reference to `LaLinearSolve(LaSymmMatDouble const&, > LaGenMatDouble&, LaGenMatDouble&)' > > I thought LaLinearSolve is overloaded such that I can use different objects > and it automatically chooses which inversion scheme is appropriate? Is > there another header file I need to include? These are the header files I > am using now: The header files are fine, otherwise you would have gotten a compiler error like "LaLinearSolve(LaSymmMatDouble ...) is undefined, candidates are: ...". But the header files seem fine. The error message is a linker error, which means that the header file contained the declaration for such a function, but the definition (the "function body") could not be found inside the lapackpp library. This is an error in lapackpp. I just checked this out a bit more, and it turns out that the function body had been disabled in the original lapack++-1.1 package. I have no idea why, although the code was slightly broken, too. I fixed this now, so that these functions are accessible again and the testing code in testing/tSymmSolve.cc works without errors. I checked this into CVS, so you can use this by checking out the code from anonymus CVS, see the website http://sf.net/projects/lapackpp on how to do this. (Note: There's a 24 hour delay until the code is available in anonymous CVS. If you need it faster, I can only send a .tar.gz file to you privately.) Are you familiar enough with compiling from CVS? If not, then you would have to wait until I can make a new release, which I don't have time for before next Wednesday. HOWEVER: I have no idea whether these functions are really doing correctly what they claim to do. Please please please check now whether the calculations are actually correct. As I said, I don't use non-general matrices, so I have no test case to verify these. > Also, I am working from documentation from Lapack++ v.1.1. Things seem to > have changed a bit in the newer versions, is there any more up to date > documentation. The only up to date documentation is the one generated from source code. A copy is on http://lapackpp.sf.net and you can create your local copy by "make srcdoc", if you have doxygen installed. There is no other "user guide" that is up to date, sorry. I'm using lapackpp as an auxiliary library, too, so I cannot spend extra time on writing user documentation. If anyone contributes something like this, I would happily publish it along with the lapackpp sources, including the proper credits. Christian |