@@ -11,22 +11,13 @@ function tensorcontract!(C::AbstractArray,
1111 dimcheck_tensorcontract(C, A, pA, B, pB, pAB)
1212
1313 if conjA && conjB
14- _diagtensorcontract!(wrap_stridedview(C), conj(wrap_stridedview(A)), pA,
15- conj(wrap_stridedview(B. diag)), pB,
16- pAB, α, β)
14+ _diagtensorcontract!(SV(C), conj(SV(A)), pA, conj(SV(B. diag)), pB, pAB, α, β)
1715 elseif conjA
18- _diagtensorcontract!(wrap_stridedview(C), conj(wrap_stridedview(A)), pA,
19- wrap_stridedview(B. diag),
20- pB, pAB, α,
21- β)
16+ _diagtensorcontract!(SV(C), conj(SV(A)), pA, SV(B. diag), pB, pAB, α, β)
2217 elseif conjB
23- _diagtensorcontract!(wrap_stridedview(C), wrap_stridedview(A), pA,
24- conj(wrap_stridedview(B. diag)),
25- pB, pAB, α,
26- β)
18+ _diagtensorcontract!(SV(C), SV(A), pA, conj(SV(B. diag)), pB, pAB, α, β)
2719 else
28- _diagtensorcontract!(wrap_stridedview(C), wrap_stridedview(A), pA,
29- wrap_stridedview(B. diag), pB, pAB, α, β)
20+ _diagtensorcontract!(SV(C), SV(A), pA, SV(B. diag), pB, pAB, α, β)
3021 end
3122 return C
3223end
@@ -50,17 +41,13 @@ function tensorcontract!(C::AbstractArray,
5041 TupleTools. getindices(indCinoBA, tpAB[2 ]))
5142
5243 if conjA && conjB
53- _diagtensorcontract!(wrap_stridedview(C), conj(wrap_stridedview(B)), rpB,
54- conj(wrap_stridedview(A. diag)), rpA, rpAB, α, β)
44+ _diagtensorcontract!(SV(C), conj(SV(B)), rpB, conj(SV(A. diag)), rpA, rpAB, α, β)
5545 elseif conjA
56- _diagtensorcontract!(wrap_stridedview(C), wrap_stridedview(B), rpB,
57- conj(wrap_stridedview(A. diag)), rpA, rpAB, α, β)
46+ _diagtensorcontract!(SV(C), SV(B), rpB, conj(SV(A. diag)), rpA, rpAB, α, β)
5847 elseif conjB
59- _diagtensorcontract!(wrap_stridedview(C), conj(wrap_stridedview(B)), rpB,
60- wrap_stridedview(A. diag), rpA, rpAB, α, β)
48+ _diagtensorcontract!(SV(C), conj(SV(B)), rpB, SV(A. diag), rpA, rpAB, α, β)
6149 else
62- _diagtensorcontract!(wrap_stridedview(C), wrap_stridedview(B), rpB,
63- wrap_stridedview(A. diag), rpA, rpAB, α, β)
50+ _diagtensorcontract!(SV(C), SV(B), rpB, SV(A. diag), rpA, rpAB, α, β)
6451 end
6552 return C
6653end
@@ -75,17 +62,13 @@ function tensorcontract!(C::AbstractArray,
7562 dimcheck_tensorcontract(C, A, pA, B, pB, pAB)
7663
7764 if conjA && conjB
78- _diagdiagcontract!(wrap_stridedview(C), conj(wrap_stridedview(A. diag)), pA,
79- conj(wrap_stridedview(B. diag)), pB, pAB, α, β)
65+ _diagdiagcontract!(SV(C), conj(SV(A. diag)), pA, conj(SV(B. diag)), pB, pAB, α, β)
8066 elseif conjA
81- _diagdiagcontract!(wrap_stridedview(C), conj(wrap_stridedview(A. diag)), pA,
82- wrap_stridedview(B. diag), pB, pAB, α, β)
67+ _diagdiagcontract!(SV(C), conj(SV(A. diag)), pA, SV(B. diag), pB, pAB, α, β)
8368 elseif conjB
84- _diagdiagcontract!(wrap_stridedview(C), wrap_stridedview(A. diag), pA,
85- conj(wrap_stridedview(B. diag)), pB, pAB, α, β)
69+ _diagdiagcontract!(SV(C), SV(A. diag), pA, conj(SV(B. diag)), pB, pAB, α, β)
8670 else
87- _diagdiagcontract!(wrap_stridedview(C), wrap_stridedview(A. diag), pA,
88- wrap_stridedview(B. diag), pB, pAB, α, β)
71+ _diagdiagcontract!(SV(C), SV(A. diag), pA, SV(B. diag), pB, pAB, α, β)
8972 end
9073 return C
9174end
0 commit comments