Those are the current version of those modules. I could confirm the issue after installing the current PDL::Stats. I also have PDL::Slatec, so having that installed doesn't seem to make a difference.
This is perl 5, version 12, subversion 3 (v5.12.3) built for i386-linux-thread-multi Chad On Fri, Jun 10, 2011 at 14:00, Stéphane Lévy <[email protected]> wrote: > Hi, > Here are the versions on my computer : > • [slevy-desktop:Weborama-Math-Matrix] (users/slevy) $ perl -MPDL -e 'print > "$PDL::VERSION\n"' > 2.4.9 > • [slevy-desktop:Weborama-Math-Matrix] (users/slevy) $ perl -MPDL::Stats -e > 'print "$PDL::Stats::VERSION\n"' > No PDL::Slatec. Fall back on PDL::MatrixOps. > 0.5.5 > AS you can see, I do not have PDL::Slatec, and in order to get it, I should > install a Fortran compiler. > This is something that could be complicated for me, and I have ignored this > message until now. I don't think this could be the source of my problems, > but you may see things differently. > Thanx, > Stéphane > > > Le 10/06/2011 13:55, David Mertens a écrit : > > What you describe is very weird, no doubt about that. I don't have the stats > module installed, so I cannot test. However, Maggie and Chris put a lot of > work into the matrix inversion code a few months back due to strange results > with PDL:: Stats. The problem may be fixed in the latest cpan packages. > > What versions of PDL and PDL:: Stats are you using? > > David > > On Jun 10, 2011 6:21 AM, "Stéphane Lévy" <[email protected]> wrote: >> Thank you Chris. >> I would rather suspect a bug in the cov_table() function, based on your >> answer. >> cov_table is a function that computes covariance matrix (transposed). To >> use it, you have to do : use PDL::Stats >> If PDL::Stats is installed on your machine, you will be able to >> reproduce the bug. >> Thanx again for your help. >> Stéphane >> >> Le 10/06/2011 12:57, chm a écrit : >>> Hi- >>> >>> I can't reproduce this problem since I'm >>> not familiar with the cov_table() routine >>> (at least it doesn't show up on my PDL >>> install). See BUGS from the PDL distribution >>> or at >>> >>> http://cpansearch.perl.org/src/CHM/PDL-2.4.9/BUGS >>> >>> for some additional information that you'll >>> need to include for better diagnosis and >>> help with problems. Some possibilities that >>> come to mind are: >>> >>> (1) Multiple variables of the same name >>> where the lexical one might be "hiding" >>> the other expected value. Compiling >>> with 'use strict;' might help catch >>> these. >>> >>> (2) Dataflow is changing data in unexpected >>> ways (i.e., withing the cov_table() call) >>> >>> (3) Bug in the inv() routine. A number of >>> issues were addressed in the latest >>> PDL-2.4.9 release. Which PDL version >>> are you using? You could check against >>> the matinv() routine from PDL::Slatec. >>> >>> If you are using an old version of PDL, I >>> suggest upgrading to the current release. >>> There have been many bugs fixed and some >>> very nice feature and usability improvements >>> over the last year. >>> >>> Cheers, >>> Chris >>> >>> On 6/10/2011 5:54 AM, Stéphane Lévy wrote: >>>> Hello, >>>> I have found unexpected, astonishing results using the PDL matrix inv() >>>> function by 2 different ways. >>>> In the first way I manipulate PDL objects all the way, in the second way >>>> I recreate objects by pasting values of the original PDL object into a >>>> new PDL object. >>>> First way gives unexpected, wrong result, second way leads to accurate >>>> result. I do not understand this and it worries me a bit as I am >>>> supposed to use intensively PDL matrix functions. >>>> Anybody can give me an explanation of this, and tell me what I should do >>>> differently when I manipulate objects? >>>> Here is what I did : >>>> >>>> # step 1A : creating a (2,2) matrix >>>> Perl> my $m = random(2,2) >>>> $PDL1 = >>>> [ >>>> [0.65707276 0.12124598] >>>> [0.95303134 0.43850649] >>>> ] >>>> ; >>>> >>>> # step 1B : computing cov table of the matrix >>>> Perl> my $c = $m->cov_table() >>>> $PDL1 = >>>> [ >>>> [0.071777584 0.068924048] >>>> [0.068924048 0.066183954] >>>> ] >>>> ; >>>> >>>> # step 1C : testing if the the matrix multiplied by its inverse is equal >>>> to identity matrix >>>> Perl> $c x inv($c) >>>> $PDL1 = >>>> [ >>>> [ 1 0] >>>> [-0.125 1.125] >>>> ] >>>> ; >>>> # we observe that step 1C leads to unexpected result >>>> >>>> # step 2A : pasting the content of PDL obtained in step 1B to a new PDL >>>> object : the 2 PDL objects are supposedly perfectly identical >>>> Perl> $m = pdl([0.071777584,0.068924048],[0.068924048,0.066183954]) >>>> $PDL1 = >>>> [ >>>> [0.071777584 0.068924048] >>>> [0.068924048 0.066183954] >>>> ] >>>> ; >>>> >>>> # step 2B : same as step 1C, testing if the the matrix multiplied by its >>>> inverse is equal to identity matrix >>>> Perl> $m x $m->inv() >>>> $PDL1 = >>>> [ >>>> [1 0] >>>> [0 1] >>>> ] >>>> ; >>>> # we observe that step 2B leads to expected result >>>> >>>> Thank you. >>>> Best regards. >>>> Stéphane >>>> >>>> >>>> >>>> >>>> _______________________________________________ >>>> Perldl mailing list >>>> [email protected] >>>> http://mailman.jach.hawaii.edu/mailman/listinfo/perldl >>> > > _______________________________________________ > Perldl mailing list > [email protected] > http://mailman.jach.hawaii.edu/mailman/listinfo/perldl > > _______________________________________________ Perldl mailing list [email protected] http://mailman.jach.hawaii.edu/mailman/listinfo/perldl
