wigner-symbols-1.0.0: CG coefficients and Wigner symbols.

WignerSymbols.Internal

Description

Functions in this module are subject to change without notice.

Synopsis

# Documentation

newtype SignedSqrtRational Source

Represents a mathematical expression of the form:

```s √(n / d)
```

where

• `s` is a sign (`+`, `-`, or `0`),
• `n` is a nonnegative numerator, and
• `d` is a positive denominator.

Constructors

 SignedSqrtRational Rational

Arguments

 :: (Integer, Rational) `(c, r)` -> SignedSqrtRational

Construct a `SignedSqrtRational` equal to `c √r`.

Deconstruct a `SignedSqrtRational`.

Extract the sign of a `SignedSqrtRational`.

Extract the numerator of a `SignedSqrtRational`.

Extract the denominator of a `SignedSqrtRational`.

Approximate a `SignedSqrtRational` as a floating-point number.

Arguments

 :: (Int, Int, Int, Int, Int, Int) `(tj1, tm1, tj2, tm2, tj12, tm12)` -> Double

Calculate a Clebsch-Gordan coefficient:

```⟨j1 j2 m1 m2|j1 j2 j12 m12⟩
```

Arguments

 :: (Int, Int, Int, Int, Int, Int) `(tj1, tm1, tj2, tm2, tj12, tm12)` -> SignedSqrtRational

Similar to `clebschGordan` but exact.

Used only as a reference, it implements the formula from Wikipedia, which comes from equation (2.41) on page 172 of Quantum Mechanics: Foundations and Applications (1993) by A. Bohm and M. Loewe (ISBN 0-387-95330-2).

(Note: `clebschGordan` is not implemented using this function.)

Arguments

 :: (Int, Int, Int, Int, Int, Int) `(tj1, tm1, tj2, tm2, tj3, tm3)` -> Double

Calculate a Wigner 3-j symbol:

```⎛j1 j2 j3⎞
⎝m1 m2 m3⎠
```

Arguments

 :: (Int, Int, Int, Int, Int, Int) `(tj1, tm1, tj2, tm2, tj3, tm3)` -> SignedSqrtRational

Similar to `wigner3j` but exact.

Arguments

 :: (Int, Int, Int, Int, Int, Int) `(tj1, tm1, tj2, tm2, tj3, tm3)` -> SignedSqrtRational

Calculate the Wigner 3-j symbol times `(−1) ^ (j1 − j2 − m3)`.

Arguments

 :: (Int, Int) `(j1 + m1, j2 + m2)` -> (Int, Int, Int, Int, Int, Int) `(tj1, tm1, tj2, tm2, tj3, tm3)` -> SignedSqrtRational

Calculate the Wigner 3-j symbol times `(−1) ^ (j1 − j2 − m3)`. The selection rules are not checked.

Arguments

 :: (Int, Int, Int, Int, Int, Int) `(tj11, tj12, tj13, tj21, tj22, tj23)` -> Double

Calculate a Wigner 6-j symbol:

```⎧j11 j12 j13⎫
⎩j21 j22 j23⎭
```

Arguments

 :: (Int, Int, Int, Int, Int, Int) `(tj11, tj12, tj13, tj21, tj22, tj23)` -> SignedSqrtRational

Similar to `wigner6j` but exact.

Arguments

 :: (Int, Int, Int, Int, Int, Int) `(tj11, tj12, tj13, tj21, tj22, tj23)` -> SignedSqrtRational

Calculate the Wigner 6-j symbol. The selection rules are not checked.

Arguments

 :: (Int, Int, Int, Int, Int, Int, Int, Int, Int) `(tj11, tj12, tj13, tj21, tj22, tj23, tj31, tj32, tj33)` -> Double

Calculate a Wigner 9-j symbol:

```⎧j11 j12 j13⎫
⎨j21 j22 j23⎬
⎩j31 j32 j33⎭
```

Arguments

 :: (Int, Int, Int, Int, Int, Int, Int, Int, Int) `(tj11, tj12, tj13, tj21, tj22, tj23, tj31, tj32, tj33)` -> SignedSqrtRational

Similar to `wigner9j` but exact.

Arguments

 :: (Int, Int, Int, Int, Int, Int, Int, Int, Int) `(tj11, tj12, tj13, tj21, tj22, tj23, tj31, tj32, tj33)` -> SignedSqrtRational

Calculate the Wigner 9-j symbol. The selection rules are not checked.

Arguments

 :: Int `n` -> Integer

Calculate the factorial `n!`.

Arguments

 :: Int `n` -> Int `k` -> Integer

Calculate the falling factorial, i.e. the product of the integers `[n, k)`.

Arguments

 :: Int `n` -> Int `k` -> Integer

Calculate the binomial coefficient `C(n, k)`.

Arguments

 :: Int `n` -> Int

Calculate `(−1) ^ n`.

Arguments

 :: (Int, Int, Int) `(tj1, tj2, tj3)`. -> Bool

Check `|j1 − j2| ≤ j3 ≤ j1 + j2` and `j1 + j2 + j3 ∈ ℤ`.

Arguments

 :: (Int, Int, Int) `(tj1, tj2, tj3)` -> Rational

Calculate the triangular factor:

```Δ(j1, j2, j3) = (−j1 + j2 _ j3)! (j1 − j2 + j3)! (j1 + j2 − j3)!
/ (j1 + j2 + j3 + 1)!
```

Arguments

 :: Int `jd` -> (Int, Int, Int) `(ja, jb, jc)` -> Rational

Calculate `ja! jb! jc! / jd!`.

Arguments

 :: (Int, Int, Int, Int, Int, Int) `(tj11, tj12, tj13, tj21, tj22, tj23)` -> Integer

Calculate the symbol in the paper by L. Wei that is enclosed in square brackets:

```⎡j11 j12 j13⎤
⎣j21 j22 j23⎦
```

This is essentially a Wigner 6-j symbol without the triangular factors, although the ordering of the arguments is a bit funky here.

Arguments

 :: Int `tjmax` -> (Int, Int) `(tj1, tj2)` -> [Int]

Get all angular momenta that satisfy the triangle condition with the given pair of angular momenta, up to a maximum of `jmax`.

Arguments

 :: Int `tjmax` -> ((Int, Int), (Int, Int)) `((tj11, tj12), (tj21, tj22))` -> [Int]

Get all angular momenta that satisfy the triangle condition with each of the given two pairs of angular momenta, up to a maximum of `jmax`.

Arguments

 :: Int `tj` -> [Int]

Get all projection quantum numbers that lie within the multiplet of `j`.

Arguments

 :: Int `tjmax` -> [(Int, Int, Int, Int, Int, Int)]

Get all possible arguments of the Wigner 3-j symbol that satisfy the selection rules up to a maximum of `jmax`.

get6tjs :: Int -> [(Int, Int, Int, Int, Int, Int)] Source

Get all possible arguments of the Wigner 6-j symbol that satisfy the selection rules up to a maximum of `jmax`.

get9tjs :: Int -> [(Int, Int, Int, Int, Int, Int, Int, Int, Int)] Source

Get all possible arguments of the Wigner 9-j symbol that satisfy the selection rules up to a maximum of `jmax`.

tuple6ToList :: (a, a, a, a, a, a) -> [a] Source

Convert a 6-tuple into a list.

tuple9ToList :: (a, a, a, a, a, a, a, a, a) -> [a] Source

Convert a 9-tuple into a list.