Matrix multiplication: Difference between revisions
Content added Content deleted
m (→JS ES6) |
|||
Line 2,749: | Line 2,749: | ||
{def mat*mat |
{def mat*mat |
||
{lambda {:a :b} |
{lambda {:a :b} |
||
{ |
{A.new {S.map {{lambda {:a :b :i} // loop on :i |
||
{ |
{A.new {S.map {{lambda {:a :b :i :j} // loop on :j |
||
{+ {map {{lambda {:a :b :i :j :k} |
{+ {S.map {{lambda {:a :b :i :j :k} // loop on :k |
||
{* { |
{* {A.get :k {A.get :i :a}} // a[i,k]*b[k,j] |
||
{ |
{A.get :j {A.get :k :b}}} |
||
} :a :b :i :j} {serie 0 {- { |
} :a :b :i :j} {S.serie 0 {- {A.length :b} 1}} }} |
||
} :a :b :i} {serie 0 {- { |
} :a :b :i} {S.serie 0 {- {A.length {A.get 0 :b}} 1}} }} |
||
} :a :b} {serie 0 {- { |
} :a :b} {S.serie 0 {- {A.length :a} 1}} } |
||
}}} |
}}} |
||
-> mat*mat |
|||
⚫ | |||
⚫ | |||
{def A {A.new {A.new 1 2} |
|||
{ |
{A.new 3 4} |
||
{A.new 5 6} |
|||
{ |
{A.new 7 8}}} |
||
-> A |
|||
⚫ | |||
⚫ | |||
-> B |
|||
{mat*mat {A} {B}} |
{mat*mat {A} {B}} |
||
-> [[ |
-> [[9,12,15], |
||
[19,26,33], |
[19,26,33], |
||
[29,40,51], |
[29,40,51], |