Skip to content

Commit cc77dee

Browse files
committed
a bit efficient
1 parent a7f645c commit cc77dee

File tree

1 file changed

+16
-2
lines changed

1 file changed

+16
-2
lines changed

src/stdlib_intrinsics_matmul.fypp

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -76,11 +76,25 @@ contains
7676

7777
select case (s(1,4))
7878
case (1)
79-
e = matmul(a, stdlib_matmul(b, c, d))
79+
select case (s(2, 4))
80+
case (2)
81+
e = matmul(a, matmul(b, matmul(c, d)))
82+
case (3)
83+
e = matmul(a, matmul(matmul(b, c), d))
84+
case default
85+
error stop "stdlib_matmul: unexpected error unexpected s(i,j)"
86+
end select
8087
case (2)
8188
e = matmul(matmul(a, b), matmul(c, d))
8289
case (3)
83-
e = matmul(stdlib_matmul(a, b ,c), d)
90+
select case (s(1, 3))
91+
case (1)
92+
e = matmul(matmul(a, matmul(b, c)), d)
93+
case (2)
94+
e = matmul(matmul(matmul(a, b), c), d)
95+
case default
96+
error stop "stdlib_matmul: unexpected error unexpected s(i,j)"
97+
end select
8498
case default
8599
error stop "stdlib_matmul: unexpected error unexpected s(i,j)"
86100
end select

0 commit comments

Comments
 (0)