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

Reply via email to