> Consider the problem of multiplying together two 2-dimensional tensors. In > standard notation, this would be symbolized by > > Cijkl = Aij * Bkl > > where the letters i, j, k and l are written as subscripts and represent > the indices of their respective tensors. To accomplish that same > multiplication in Perl, one needs to write (using RFC 204 notation): > > for my $i = (0..2) { #assuming 3x3 tensors > for my $j = (0..2) { > for my $k = (0..2) { > for my $l = (0..2) { > $c[[$i,$j,$k,$l]] = $a[[$i,$j]] * $b[[$k,$l]] ; > } > } > } > } > > While this is not particularly difficult, it is clumsy, and slow. Using $"-joined numbers as hash keys n-dim syntax, it becomes something like my $outerkey; %C = map { $outerkey=$_; map { ( $outerkey.$".$_ , $a{$outerkey} * $b{$_} ) } keys %b } keys %a; which isn't a whole lot cleaner, is it.Thread Previous | Thread Next