Also Raghu’s write up was about taking the wikipedia looping pseudo-code for 
matrix multiplication
and thinking in array languages on how to implement. I thought the solution in 
K was rather elegant
and wondered what matrix multiplication from scratch would look like in J using 
Raghu’s K 
implementation as a template. 

It turned out to be a lesson in Rank. This is something I should know more about
but Rank always makes my brain hurt when I have to get involved with it. 

> On Jul 19, 2022, at 3:55 PM, Devon McCormick <devon...@gmail.com> wrote:
> 
> I missed that.  I think this is an elegant way that avoids explicit rank.
> 
> On Tue, Jul 19, 2022 at 2:13 PM Hauke Rehr <hauke.r...@uni-jena.de> wrote:
> 
>> Tom did, in the very post starting this thread:
>> 
>>    (1+i. 4 3) +/ . * 1+i. 3 4
>>  38  44  50  56
>>  83  98 113 128
>> 128 152 176 200
>> 173 206 239 272
>> 
>> Am 19.07.22 um 20:10 schrieb Devon McCormick:
>>> I'm puzzled why no one has used the basic matrix multiplication
>> expression
>>> in J.
>>> 
>>>    matmul3
>>> ([: +/ *)"1 _
>>>    mat1=. <.0.5+10*<:+:1000 1000?@$0
>>>    mat0=. <.0.5+10*<:+:1000 1000?@$0
>>>    (10) 6!:2 'mat0 matmul3 mat1'
>>> 0.737084
>>>    (10) 6!:2 'mat0 +/ . * mat1'
>>> 0.0499271
>>>    (mat0 matmul3 mat1) -: mat0 +/ . * mat1
>>> 1
>>> 
>>> 
>>> 
>>> On Tue, Jul 19, 2022 at 12:49 PM Thomas McGuire <tmcguir...@gmail.com>
>>> wrote:
>>> 
>>>> My late night laziness and I got bitten by the 13 : definition doesn’t
>>>> always work
>>>> correctly with both x and y variables. Which I just assumed was working
>>>> correctly.
>>>> 
>>>> Now when I fix the definition of matmul3 so it works correctly (as
>> Elijah
>>>> pointed out) the variable
>>>> representation does not incur a worrisome time penalty:
>>>> 
>>>>    (1+i. 4 3) ([: +/ *)"1 _ (1+i. 3 4)
>>>>  38  44  50  56
>>>>  83  98 113 128
>>>> 128 152 176 200
>>>> 173 206 239 272
>>>>    matmul3 =: ([: +/ *)"1 _
>>>>    (1+i. 4 3) matmul3 (1+i. 3 4)
>>>>  38  44  50  56
>>>>  83  98 113 128
>>>> 128 152 176 200
>>>> 173 206 239 272
>>>> 
>>>>    10 timex 'bmat1 ([: +/ *)"1 _ bmat2’
>>>> 0.0464441
>>>>    10 timex 'bmat1 matmul3 bmat2’
>>>> 0.0471224
>>>> 
>>>>    (bmat1 matmul3 bmat2) -: bmat1 ([: +/ *)"1 _ bmat2
>>>> 1
>>>> 
>>>> 
>>>> Thanks for showing me the error
>>>> 
>>>>> On Jul 19, 2022, at 5:15 AM, Elijah Stone <elro...@elronnd.net> wrote:
>>>>> 
>>>>> You are measuring two completely different things.
>>>>> 
>>>>>   10 timex'bmat1 ([: +/ *)"1 _ bmat2'
>>>>> 0.0482293
>>>>>   10 timex'bmat1 ([: +/ *"1 _) bmat2'
>>>>> 0.115583
>>>>>   (bmat1 ([: +/ *)"1 _ bmat2) -: (bmat1 ([: +/ *"1 _) bmat2)
>>>>> 0
>>>>> ----------------------------------------------------------------------
>>>>> For information about J forums see http://www.jsoftware.com/forums.htm
>>>> 
>>>> ----------------------------------------------------------------------
>>>> For information about J forums see http://www.jsoftware.com/forums.htm
>>>> 
>>> 
>>> 
>> 
>> --
>> ----------------------
>> mail written using NEO
>> neo-layout.org
>> ----------------------------------------------------------------------
>> For information about J forums see http://www.jsoftware.com/forums.htm
>> 
> 
> 
> -- 
> 
> Devon McCormick, CFA
> 
> Quantitative Consultant
> ----------------------------------------------------------------------
> For information about J forums see http://www.jsoftware.com/forums.htm

----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to