-------- Original Message --------
Subject:        Re: [Perldl] Inverse of PDL?
Date:   Tue, 9 Dec 2008 22:07:00 -0500
From:   Alan Barclay <[EMAIL PROTECTED]>
To:     Derek Lamb <[EMAIL PROTECTED]>
References: 
<[EMAIL PROTECTED]> 
<[EMAIL PROTECTED]>



2008/12/9 Derek Lamb <[EMAIL PROTECTED]>:
> Alan Barclay wrote:
>>
>> I don't think this is going to be a PDL answer, but maybe I'm wrong,
>> and even if I'm not wrong, this list might have some ideas which can
>> point me in the right direction.
>>
>> I've been using PDL for quite a while, and it's been great to
>> manipulate large datasets with a few equations. Now I'd like to do the
>> opposite, I've got a relatively small dataset, and a large number of
>> equations that I'd like to use to manipulate against that dataset. For
>> example, (and this is not my real problem), lets say
>>
>> #!/usr/bin/perl
>>
>> my $a=1;
>> my $b=2;
>> my $c=3;
>>
>> print "1\n" if($a+$b==6);
>> print "2\n" if($a+$c==6);
>> print "3\n" if($b+$c == 6);
>> print "4\n" if($a+$b+$c == 6);
>>
>> In my real problem, I've got a few dozens of  variables  and tens of
>> thousands of equations to try out, while each one takes quite a short
>> amount of time, the overall program takes too long.
>>
>> Any ideas about what I can do to speed up equation processing like this.
>>
>
> Are your real equations simple like this, or complex?  Are they additions
> and subtractions of these variables, or more complicated functions like
> multiplication?  If it's the former, you could make a piddle
> [[1 0 0 -6]
> [1 0 1 -6]
> [0 1 1 -6]
> [1 1 1 -6]]
> and use appropriate multiplications by your variables and sumovers to
> generate your result.  You've probably already thought of that, though.
>
> If they are more complicated, you might need to be more specific about what
> you are trying to minimize: compiling time or running time?  Are you running
> this program more than once?  If they're more complicated equations, my
> first thought was to write it in C and start passing around function
> pointers instead.  Maybe Inline::Pdlpp or Inline::C could help you with
> that, maybe not--maybe you don't even want to use Perl for this.  Presumably
> you have abstracted your equations in some way so that they aren't
> hard-coded.  Maybe you could use Perl (or C or whatever) to read in this
> abstraction and write a bunch of C subroutines.  Compilation will be a bear,
> but execution should be faster.  I guess that's what the Inline modules do,
> too.  If you only need to run the program once, then maybe the C interface
> isn't the way to go, and you just need to slog through the hard way.
>
> Probably others have some better ideas, and some ideas about what would be
> faster, but this is a start anyway.
>
> cheers,
> Derek
>
>


They involve +,-,*,/, and sometimes ^, and I'm trying to minimize
runtime, trying to get a good answer for the user's specific
variables. I don't particularly care if it takes a month to compile.

I think you're pointing me in the direction I was already leaning,
autogenerating a metric buttload of C subroutines, which then do the
calculations for me. I tried a sample, and it's going to take forever
to compile the full set, but it works, I guess.


_______________________________________________
Perldl mailing list
[email protected]
http://mailman.jach.hawaii.edu/mailman/listinfo/perldl

Reply via email to