Good point.

The other factor might be that Steve is using PDL-2.4.3
where you were testing the expression with PDL-cvs.

Craig DeForest wrote:
> Steve,
>
> Are you sure you sent us the exact expression you used below?  For 
> example, if you masked
> your very large data set with something like:
>
>     $c = maximum( ($a==$b->dummy)->xchg(0,1)) != 0 && 
> (xvals($b->dim(0))<5000))
>
> to look at only the first 5000 rows, then the "&&" would throw the 
> 'multielement' error, because && is a short-circuiting operation.  In 
> general, you have to be in a branching logical construct to throw that 
> error, because there's no way to evaluate the argument of the branch 
> in anything but Perl's boolean context.  The branching logical 
> constructs are the tests of the 'if', 'unless', 'elsif', 'for(;;)', 
> 'while', and 'until' statements, and the '?:', '&&', and '||' 
> operators.  The reason your error message is puzzling is that your 
> example doesn't contain any of those, so if you are using that exact 
> expression it indicates something extremely peculiar going on in the 
> guts of PDL.
>
>
> On Sep 14, 2008, at 8:11 PM, Steve Cicala wrote:
>>
>>
>> (I am using this to collect indicies in a that correspond with 
>> elements in
>> b:
>> $d=which(maximum (($a==$b->dummy)->xchg(0,1))!=0)
>> ).
>>
>> Now, when I try to use this operation for large numbers (i.e. $a is 
>> 480000x1
>> and $b is 500x1) I get:
>>
>> 'multielement piddle in a conditional expression'
>>
>> --And I get this error whether calculating $c on its own, or just 
>> sticking
>> the expression that generates $c into the one that generates $d.
>
>
>


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

Reply via email to