|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:49:55 -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=JmZeOfsz2c8jTjOFM/yAiZH3fggJYbRuKHI/pAu6f1o=; b=kKX7iE6RrWLwPb400oepePSGiG0wZYWXYaO2ZUZgpHIQBX9zcR2gbfgQNqm0+K7k52 rtMChVzL+r4Z8VwK2wsrUNEMdhDYRcb/l1Jy8Rgcfiq9WyKwbE8h7MfXNOWU6OjD91xZ fs8RUeT0rghjrEgwqFcyC7Kk98FIyt9/PLgdo=
- 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=ntaJJAwYEssTXChWali6n4l5nDiRada0UB6N58xr2Gkv9iLSSWEnNadm26UXfv5jty 57c2NazaIdXlallX/2mkDbKorTxRKM1+Fl47WnfZ6d6pv9dRvXSWqrSd69u7i7aHbTej ruzco7ZAVy1UYtGSojmXWzVAxbTkL9+6WEgi8=
Note that the Tridiagonalization and Hessenberg classes are special
since the Q can rather be returned as a householder sequence,
incurring no extra cost at the time of the decomposition. These
classes should be rewritten as trivial adaptations of, respectively,
UpperBidiagonalization and HouseholderQR.
2010/5/30 Benoit Jacob <jacob.benoit.1@xxxxxxxxx>:
> Hi Jitse,
> 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?