Re: Autothreading generalization

2005-02-01 Thread Craig DeForest
On Tuesday 01 February 2005 01:18 am, Markus Laire wrote: > Luke Palmer writes: > > Yeah, the sigils do get in the way for small placeholder variables like > > these: > > Â @C[ $i; $j; $k; $l ] = @A[ $i; $j ] * @B[ $k; $l ] Â >... > Would placeholder variables be used often enough to varrant th

Re: Autothreading generalization

2005-02-01 Thread Markus Laire
Luke Palmer writes: Craig DeForest writes: Yeah, the sigils do get in the way for small placeholder variables like these. Â @C[ $i; $j; $k; $l ] = @A[ $i; $j ] * @B[ $k; $l ] Â Losing the carets doesn't do much for us (and would force us to use the explicit syntax, whatever that might be). Hmm

Re: Autothreading generalization

2005-01-31 Thread Luke Palmer
Craig DeForest writes: > Quoth Luke Palmer on Monday 31 January 2005 03:46 pm, > > C_{ijkl} = A_{ij} * B_{kl} > > > > You write either of: > > > > Â @C[$^i; $^j; $^k; $^l] = @A[$^i; $^j] * @B[$^k; $^l] Â > > @C = Â @A[$^i; $^j] * @B[$^k; $^l] Â > > Hmm... This is both insanely great an

Re: Autothreading generalization

2005-01-31 Thread Luke Palmer
Luke Palmer writes: > Or to write another typical tensor product: > > a^j = L_i^j b^i > > You write either of: > > Â @a[$^j] = @L[$^i; $^j] * @b[$^i] Â > @a = @L Â*Â @b; Or not. There's that implicit Einstein summation involved, and a general purpose programming language isn't abou

Re: Autothreading generalization

2005-01-31 Thread Craig DeForest
Quoth Luke Palmer on Monday 31 January 2005 03:46 pm, > C_{ijkl} = A_{ij} * B_{kl} > > You write either of: > > Â @C[$^i; $^j; $^k; $^l] = @A[$^i; $^j] * @B[$^k; $^l] Â > @C = Â @A[$^i; $^j] * @B[$^k; $^l] Â Hmm... This is both insanely great and also greatly insane. The issue is th

Autothreading generalization

2005-01-31 Thread Luke Palmer
S09 states (in "Parallelized parameters and autothreading") that if you use a parameter as an array subscript in a closure, the closure is a candidate for autothreading. -> $x, $y { @foo[$x;$y] } Means: -> ?$x = @foo.shape[0].range, ?$y = @foo.shape[1].range { @foo[$x;$y] } And e