Wolfram Language Paclet Repository

Community-contributed installable additions to the Wolfram Language

Primary Navigation

    • Cloud & Deployment
    • Core Language & Structure
    • Data Manipulation & Analysis
    • Engineering Data & Computation
    • External Interfaces & Connections
    • Financial Data & Computation
    • Geographic Data & Computation
    • Geometry
    • Graphs & Networks
    • Higher Mathematical Computation
    • Images
    • Knowledge Representation & Natural Language
    • Machine Learning
    • Notebook Documents & Presentation
    • Scientific and Medical Data & Computation
    • Social, Cultural & Linguistic Data
    • Strings & Text
    • Symbolic & Numeric Computation
    • System Operation & Setup
    • Time-Related Computation
    • User Interface Construction
    • Visualization & Graphics
    • Random Paclet
    • Alphabetical List
  • Using Paclets
    • Get Started
    • Download Definition Notebook
  • Learn More about Wolfram Language

QuantumFramework

Tutorials

  • Getting Started

Guides

  • Wolfram Quantum Computation Framework

Tech Notes

  • Bell's Theorem
  • Circuit Diagram
  • Exploring Fundamentals of Quantum Theory
  • QPU Service Connection
  • Quantum object abstraction
  • Quantum Optimization
  • Second Quantization Functions
  • Tensor Network
  • Quantum Computation

Symbols

  • EinsteinSummation
  • QuantumBasis
  • QuantumChannel
  • QuantumCircuitMultiwayGraph [EXPERIMENTAL]
  • QuantumCircuitOperator
  • QuantumDistance
  • QuantumEntangledQ
  • QuantumEntanglementMonotone
  • QuantumEvolve
  • QuantumMeasurement
  • QuantumMeasurementOperator
  • QuantumMeasurementSimulation
  • QuantumMPS [EXPERIMENTAL]
  • QuantumOperator
  • QuantumPartialTrace
  • QuantumPhaseSpaceTransform
  • QuantumShortcut [EXPERIMENTAL]
  • QuantumStateEstimate [EXPERIMENTAL]
  • QuantumState
  • QuantumTensorProduct
  • QuantumWignerMICTransform [EXPERIMENTAL]
  • QuantumWignerTransform [EXPERIMENTAL]
  • QuditBasis
  • QuditName
Wolfram`QuantumFramework`
EinsteinSummation
​
EinsteinSummation[indices,tensors]
sums over repeated
indices
of the tensor product of
tensors
.
​
​
EinsteinSummation[indicesout,tensors]
sums over repeated
indices
of the tensor product of
tensors
, and then other array reshaping to match the
out
indices.
​
Details and Options
Examples  
(19)
Basic Examples  
(5)
Define two random complex-valued tensors:
In[1]:=
A=SparseArray@RandomComplex[{-1-I,1+I},{2,3,2}];​​B=SparseArray@RandomComplex[{-1-I,1+I},{3,2}];
Execute a summation as
∑
j
A
ijk
B
jl
In[2]:=
EinsteinSummation[{{i,j,k},{j,l}},{A,B}]
Out[2]=
TensorContractSparseArray
Specified elements: 12
Dimensions: {2,3,2}
SparseArray
Specified elements: 6
Dimensions: {3,2}
,{{2,4}}
Activate the outcome and get the final tensor:
In[3]:=
einsum=Activate@EinsteinSummation[{{1,2,3},{2,4}},{A,B}]
Out[3]=
SparseArray
Specified elements: 8
Dimensions: {2,2,2}

Check the result is the same as running summation manually:
In[4]:=
Table[Sum[A〚i,j,k〛B〚j,l〛,{j,3}],{i,2},{k,2},{l,2}]einsum
Out[4]=
True
​
Define two symbolic arrays of 3-rank and 2-rank with dimension
{
n
1
,
n
2
,
n
3
}
and
{
n
2
,
n
4
}
:
In[1]:=
A=ArraySymbol["A",{n1,n2,n3}];​​B=ArraySymbol["B",{n2,n4}];
Execute a summation as
∑
j
A
ijk
B
jl
In[2]:=
EinsteinSummation[{{1,2,3},{2,4}},{A,B}]
Out[2]=
TensorContract
3
A

2
B
,{{2,4}}
​
Define two random complex-valued tensors:
In[1]:=
A=SparseArray@RandomComplex[{-1-I,1+I},{2,3}];​​B=SparseArray@RandomComplex[{-1-I,1+I},{2,3}];
Calculate the inner product of two tensors as
〈A,B〉=Tr[SuperDagger[A]B]=
∑
ij
*
A
ij
B
ij
In[2]:=
einsum=ActivateTensor@EinsteinSummation[{{1,2},{1,2}},{Conjugate@A,B}]
Out[2]=
0.887333-1.34095
Compare the result with the trace:
In[3]:=
einsumTr[ConjugateTranspose[A].B]
Out[3]=
True
​
Calculate the cross product via Levi-Civita
(a×b)
i
=
∑
jk
ϵ
ijk
a
j
b
k
In[1]:=
{a,b}=RandomReal[{-1,1},{2,3}]
Out[1]=
{{0.270589,-0.552533,-0.6784},{0.161889,-0.716632,-0.598085}}
Excuse the cross product using EinsteinSummation:
In[2]:=
einsum=ActivateTensor@EinsteinSummation[{{i,j,k},{j},{k}},{LeviCivitaTensor[3],a,b}]
Out[2]=
{-0.155702,0.0520093,-0.104463}
Compare the result with manually summing over all indices:
In[3]:=
Table[Sum[LeviCivitaTensor[3]〚i,j,k〛a〚j〛b〚k〛,{j,3},{k,3}],{i,3}]einsum
Out[3]=
True
​
Double trace
∑
ij
T
ij,ij
In[1]:=
EinsteinSummation[{{i,j,i,j}},{ArraySymbol["T",{n1,n2,n3,n4}]}]
Out[1]=
TensorContractInactive[TensorProduct]
4
T
,{{1,3},{2,4}}
Applications  
(14)

""

© 2025 Wolfram. All rights reserved.

  • Legal & Privacy Policy
  • Contact Us
  • WolframAlpha.com
  • WolframCloud.com