Wolfram Research

Function Repository Resource:

NineJSymbol (1.0.1) current version: 1.0.2 »

Source Notebook

Evaluate the Wigner 9-j symbol

Contributed by: Jan Mangaldan

ResourceFunction["NineJSymbol"][{{j1,j2,j3},{j4,j5,j6},{j7,j8,j9}}]

gives the values of the Wigner 9‐j symbol.

Details

The 9‐j symbols vanish except when certain triples of the ji satisfy triangle inequalities.
The parameters of ResourceFunction["NineJSymbol"] can be integers or half‐integers.

Examples

Basic Examples (1) 

Evaluate numerically:

In[1]:=
ResourceFunction["NineJSymbol"][( {
   {4, 4, 5},
   {4, 4, 5},
   {4, 4, 4}
  } )]
Out[1]=

Scope (3) 

NineJSymbol works with integer and half-integer arguments:

In[2]:=
ResourceFunction["NineJSymbol"][( {
   {17/2, 19/2, 7},
   {25/2, 8, 17/2},
   {8, 21/2, 19/2}
  } )]
Out[2]=

Evaluate for large arguments:

In[3]:=
ResourceFunction["NineJSymbol"][( {
   {100, 80, 50},
   {50, 100, 70},
   {60, 50, 100}
  } )]
Out[3]=

Evaluate for inexact arguments:

In[4]:=
ResourceFunction["NineJSymbol"][( {
   {5., 0.5, 4.5},
   {5., 0.5, 5.5},
   {9., 1., 10.}
  } )]
Out[4]=

Properties and Relations (3) 

NineJSymbol is invariant under transposition:

In[5]:=
With[{ji = ( {
     {5, 1/2, 9/2},
     {5, 1/2, 11/2},
     {9, 1, 10}
    } )}, ResourceFunction["NineJSymbol"][ji] == ResourceFunction["NineJSymbol"][Transpose[ji]]]
Out[5]=

NineJSymbol is invariant under an even permutation of its rows or columns:

In[6]:=
With[{ji = ( {
     {5, 1/2, 9/2},
     {5, 1/2, 11/2},
     {9, 1, 10}
    } )}, ResourceFunction["NineJSymbol"][ji] == ResourceFunction["NineJSymbol"][ji[[{3, 1, 2}]]]]
Out[6]=
In[7]:=
With[{ji = ( {
     {5, 1/2, 9/2},
     {5, 1/2, 11/2},
     {9, 1, 10}
    } )}, ResourceFunction["NineJSymbol"][ji] == ResourceFunction["NineJSymbol"][ji[[All, {3, 1, 2}]]]]
Out[7]=

Under an odd permutation of its rows or columns, NineJSymbol gains an extra phase factor:

In[8]:=
With[{ji = ( {
     {5, 1/2, 9/2},
     {5, 1/2, 11/2},
     {9, 1, 10}
    } )}, ResourceFunction["NineJSymbol"][ji] == (-1)^
   Total[ji, 2] ResourceFunction["NineJSymbol"][ji[[{2, 1, 3}]]]]
Out[8]=
In[9]:=
With[{ji = ( {
     {5, 1/2, 9/2},
     {5, 1/2, 11/2},
     {9, 1, 10}
    } )}, ResourceFunction["NineJSymbol"][ji] == (-1)^
   Total[ji, 2] ResourceFunction["NineJSymbol"][ji[[All, {2, 1, 3}]]]]
Out[9]=

When one of the entries is 0, NineJSymbol can be expressed in terms of SixJSymbol:

In[10]:=
With[{ji = ( {
     {1, 2, 3},
     {1, 2, 3},
     {2, 2, 0}
    } )},
 ResourceFunction["NineJSymbol"][ji] == (-1)^(
\!\(\*SubscriptBox[\(ji\), \(\(\[LeftDoubleBracket]\)\(2\[InvisibleComma]1\)\(\[RightDoubleBracket]\)\)]\) + 
\!\(\*SubscriptBox[\(ji\), \(\(\[LeftDoubleBracket]\)\(1\[InvisibleComma]2\)\(\[RightDoubleBracket]\)\)]\) + 
\!\(\*SubscriptBox[\(ji\), \(\(\[LeftDoubleBracket]\)\(3\[InvisibleComma]1\)\(\[RightDoubleBracket]\)\)]\) + 
\!\(\*SubscriptBox[\(ji\), \(\(\[LeftDoubleBracket]\)\(1\[InvisibleComma]3\)\(\[RightDoubleBracket]\)\)]\))/Sqrt[(2 
\!\(\*SubscriptBox[\(ji\), \(\(\[LeftDoubleBracket]\)\(1\[InvisibleComma]3\)\(\[RightDoubleBracket]\)\)]\) + 1) (2 
\!\(\*SubscriptBox[\(ji\), \(\(\[LeftDoubleBracket]\)\(3\[InvisibleComma]1\)\(\[RightDoubleBracket]\)\)]\) + 1)]
    KroneckerDelta[
\!\(\*SubscriptBox[\(ji\), \(\(\[LeftDoubleBracket]\)\(1\[InvisibleComma]3\)\(\[RightDoubleBracket]\)\)]\), 
\!\(\*SubscriptBox[\(ji\), \(\(\[LeftDoubleBracket]\)\(2\[InvisibleComma]3\)\(\[RightDoubleBracket]\)\)]\)] KroneckerDelta[
\!\(\*SubscriptBox[\(ji\), \(\(\[LeftDoubleBracket]\)\(3\[InvisibleComma]1\)\(\[RightDoubleBracket]\)\)]\), 
\!\(\*SubscriptBox[\(ji\), \(\(\[LeftDoubleBracket]\)\(3\[InvisibleComma]2\)\(\[RightDoubleBracket]\)\)]\)] SixJSymbol[
    First[ji], {
\!\(\*SubscriptBox[\(ji\), \(\(\[LeftDoubleBracket]\)\(2\[InvisibleComma]2\)\(\[RightDoubleBracket]\)\)]\), 
\!\(\*SubscriptBox[\(ji\), \(\(\[LeftDoubleBracket]\)\(2\[InvisibleComma]1\)\(\[RightDoubleBracket]\)\)]\), 
\!\(\*SubscriptBox[\(ji\), \(\(\[LeftDoubleBracket]\)\(3\[InvisibleComma]1\)\(\[RightDoubleBracket]\)\)]\)}]]
Out[10]=

Possible Issues (1) 

A message is issued and the result 0 returned for unphysical cases:

In[11]:=
ResourceFunction["NineJSymbol"][( {
   {5, 1, 1/2},
   {2, 3/2, 7},
   {1, 1, 2}
  } )]
Out[11]=

Version History

  • 1.0.2 – 20 September 2023
  • 1.0.1 – 03 March 2021
  • 1.0.0 – 26 January 2021

Source Metadata

Related Resources

License Information