in reply to Parallelization of multiple nested loops
You shouldn't use non-integral step amounts, as you accumulate floating-point error each pass through the loop.
For example,
$ perl -E'for (my $i=0; $i<10; $i+=1) { say $i }' | wc -l 10 $ perl -E'for (my $i=0; $i<1; $i+=0.1) { say $i }' | wc -l 11
Replace
for ($p[0]=0; $p[0]<=1; $p[0]+=0.2){
with
for (0..5) { $p[0] = $_*0.2;
or with
my @ps = map { $_ * 0.2 } 0..5; for (@ps) { $p[0] = $_;
The second approach allows us to do the following:
use Algorithm::Loops qw( NestedLoops ); my @ps = map { $_ * 0.2 } 0..5; my $iter = NestedLoops([ (\@ps) x 11 ]); while (my @p = $iter->()) { my $temp_out = join("\t", @p, 1, 1)."\n"; ... }
|
|---|