From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 32167 invoked by alias); 14 Aug 2006 14:59:34 -0000 Received: (qmail 32159 invoked by uid 22791); 14 Aug 2006 14:59:33 -0000 X-Spam-Check-By: sourceware.org Received: from alnrmhc13.comcast.net (HELO alnrmhc11.comcast.net) (206.18.177.53) by sourceware.org (qpsmtpd/0.31) with ESMTP; Mon, 14 Aug 2006 15:59:27 +0100 Received: from hippogriff.homeunix.org ([24.8.185.225]) by comcast.net (alnrmhc13) with ESMTP id <20060814145925b1300i0qeee>; Mon, 14 Aug 2006 14:59:25 +0000 Received: by hippogriff.homeunix.org (Postfix, from userid 1000) id E61172FFDF; Mon, 14 Aug 2006 08:59:25 -0600 (MDT) Date: Mon, 14 Aug 2006 14:59:00 -0000 From: Patrick Alken To: gsl-discuss@sourceware.org Subject: Re: unsymmetric eigenvalue update Message-ID: <20060814145925.GA19848@hippogriff.physics.drexel.edu> References: <20060613155620.GA21626@hippogriff.physics.drexel.edu> <874pwftmyf.wl%bjg@network-theory.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <874pwftmyf.wl%bjg@network-theory.co.uk> User-Agent: Mutt/1.4.2.1i Mailing-List: contact gsl-discuss-help@sourceware.org; run by ezmlm Precedence: bulk List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gsl-discuss-owner@sourceware.org X-SW-Source: 2006-q3/txt/msg00015.txt.bz2 Thanks for the update. I have a new balance and hessenberg routine too that I fixed up a while back. Its no longer necessary to do any dynamic allocation for the hessenberg function. I also modified the francis routine a little more to work better on ill-conditioned matrices and reduce more roundoff error. Also, I modified linalg.texi and eigen.texi to give complete documentation on all the functions I've added. I will make a new patch against the latest CVS and post it as soon as I can. An update regarding the high-performance eigensolver: I've been working on implementing the high-performance small bulge aggressive early deflation method, and currently have a completely working code. Unfortunately, the performance is currently about twice as slow as the fortran version which is going to be in the next lapack release. I already made gsl_matrix_{get,set} macros and disabled range checking which resulted in about a 30% speed improvement. I also made optimized versions of the householder transform routines specifically for 3-by-1 vectors, but it still does not match the speed of the fortran version. I am still investigating why. Another issue here is that I had to port about 4 lapack routines over to GSL to get the high-performance eigensolver to work. Plus the code for the eigensolver is heavily based on the fortran code which will be in lapack. I know there have been discussions on this list in the past regarding lapack licensing issues and I confess I don't fully understand whether it is acceptable/legal for GSL to contain lapack ported code. Due to the sheer amount of code needed to get the high-performance eigensolver to work (currently about 4500 lines) mainly due to the large lapack routines, I'm starting to wonder if its worth it. Most of this code is only useful in terms of the eigenvalue problem and won't be useful for more general linear algebra problems. So all this code is there for just solving one problem and it might be wiser to go with the simpler francis solver whose code would be easier to understand/maintain. The rest of GSL seems to have the goal of containing small and simple to understand algorithms and all of this lapack code might just "uglify" the library. Any comments on this? Patrick Alken On Mon, Aug 14, 2006 at 03:24:08PM +0100, Brian Gough wrote: > At Tue, 13 Jun 2006 09:56:20 -0600, > > I propose adding the double-shift method to gsl (assuming it > > passes any further tests needed) which would be a perfectly > > fine eigenvalue solver (EISPACK used it for a number of years) > > until I (or someone else) can find the time to implement method 3. > > > > Attached is the latest (final? :)) patch. > > The latest patch is in sources.redhat.com CVS with some extra > cleanups. It works well. I modified the balance() routine to return > the diagonal scaling elements D (for computing the eigenvectors later) > and moved the memory allocation up out of hessenberg() into the > workspace. > > -- > Brian Gough >