|Re: [eigen] skipXxx / computeXxx parameters in Eigenvalues module|
[ Thread Index |
| More lists.tuxfamily.org/eigen Archives
- To: eigen@xxxxxxxxxxxxxxxxxxx
- Subject: Re: [eigen] skipXxx / computeXxx parameters in Eigenvalues module
- From: Benoit Jacob <jacob.benoit.1@xxxxxxxxx>
- Date: Sun, 30 May 2010 11:41:42 -0400
- Dkim-signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:received:in-reply-to :references:date:message-id:subject:from:to:content-type; bh=1wYDpCpZHNM1pGGRbEuMTgqfTrlqhu6hzk1s2VgEzRk=; b=kdUnIwkXFWLtAnROKNHZGzEtHa30Alr/QTD+vhrfueJhazcwchOtPMHyI6NUVc2dRy JtD5hUQVPvOz8bdUSD42mBSI2gAmsWmfZikMqwgcUqgG/PhWI2VcTb2MxABqxKn/xicl Vd0veWH7WcW1r4EZDqqItnWfmmmzILaMr0Z1g=
- Domainkey-signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :content-type; b=f1r7ynBLznWoSOm/XRid9K6PA597b6J7ye+HG3gFpVdnMmdgwKdWdGHQKG+e8BUsXN 5kQeqc3iVc4dFeEZNP2vq/d93Wt3Ucwal9qEbZ/0tDEJ1axMd8n8L9bW5STYduop61tQ D9qgy8N/83RwFRbM6jp+FytX9UlnqerJ9sXTc=
Thanks for taking care of that and asking!
I would like us to align everywhere on runtime computeXxx parameters,
not skipXxx parameters. In other words, 'true' means do compute. This
is so we can avoid a double negation ("do not not compute"). Do you
Then a separate question is what the default should be. Initially I
thought default to true for ease of use. But actually, this makes it
easy to write slow code, even unbearingly slow (for 10000x10 matrices,
skipping the U computation is crucial...). So perhaps default to false
and make sure that the corresponding assertion messages make it very
clear what's going on ("You tried accessing this but you didn't ask
for it to be computed in this decomposition").
2010/5/30 Jitse Niesen <jitse@xxxxxxxxxxxxxxxxx>:
> The SelfAdjointEigenSolver class allows for the computation of only the
> eigenvalues and not the eigenvectors. This allows a non-trivial time saving.
> My plan is to extend this functionality to the other eigensolvers (this is
> not much work).
> However, there is an API issue that I'd like some opinions about. The
> compute() function in the SelfAdjointEigenSolver class has a bool argument
> computeEigenvectors; the eigenvectors are computed iff it is true. The
> compute() function in the Tridiagonalization class has a bool argument
> extractQ; the matrix Q (which is analogous to the eigenvectors) is computed
> iff it is true. However, the compute() function in the ComplexSchur class
> has a bool argument skipU; the matrix U is computed iff it is *false*.
> I think this inconsistency is potentially confusing for the users. On the
> other hand, changing it may break existing programs. So what to do?