Account Options

  1. Sign in
Google Groups Home
« Groups Home
Wigner 3j, 6j, 9j, Clebsch-Gordan, Racah and Gaunt coefficients
There are currently too many topics in this group that display first. To make this topic appear first, remove this option from another topic.
There was an error processing your request. Please try again.
flag
  12 messages - Collapse all  -  Translate all to Translated (View all originals)
The group you are posting to is a Usenet group. Messages posted to this group will make your email address visible to anyone on the Internet.
Your reply message has not been sent.
Your post was successful
 
From:
To:
Cc:
Followup To:
Add Cc | Add Followup-to | Edit Subject
Subject:
Validation:
For verification purposes please type the characters you see in the picture below or the numbers you hear by clicking the accessibility icon. Listen and type the numbers you hear
 
jyr  
View profile  
 More options May 3 2009, 6:07 am
From: jyr <jyr2...@googlemail.com>
Date: Sun, 3 May 2009 03:07:11 -0700 (PDT)
Local: Sun, May 3 2009 6:07 am
Subject: Wigner 3j, 6j, 9j, Clebsch-Gordan, Racah and Gaunt coefficients
Hi,

I have coded some routines that calculate Wigner 3j, 6j, 9j, Clebsch-
Gordan, Racah and Gaunt coefficients (integrals over 3 spherical
harmonics) exactly. It is all in a single python file with doc tests.
If I am not mistaken then Sage currently does not have such
functionality and I think it would be very useful for atomic,
molecular, nuclear physicists as well as quantum chemists out there.

If there is interest I could post it here or get a trac account and
open a ticket for it for review.

regards,

Jens


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
mabshoff  
View profile  
 More options May 3 2009, 6:29 am
From: mabshoff <mabsh...@googlemail.com>
Date: Sun, 3 May 2009 03:29:16 -0700 (PDT)
Local: Sun, May 3 2009 6:29 am
Subject: Re: Wigner 3j, 6j, 9j, Clebsch-Gordan, Racah and Gaunt coefficients

On May 3, 3:07 am, jyr <jyr2...@googlemail.com> wrote:

> Hi,

Hi Jens,

> I have coded some routines that calculate Wigner 3j, 6j, 9j, Clebsch-
> Gordan, Racah and Gaunt coefficients (integrals over 3 spherical
> harmonics) exactly. It is all in a single python file with doc tests.
> If I am not mistaken then Sage currently does not have such
> functionality and I think it would be very useful for atomic,
> molecular, nuclear physicists as well as quantum chemists out there.

> If there is interest I could post it here or get a trac account and
> open a ticket for it for review.

Yes, do both.

> regards,

> Jens

Cheers,

Michael


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
jyr  
View profile  
 More options May 3 2009, 6:59 am
From: jyr <jyr2...@googlemail.com>
Date: Sun, 3 May 2009 03:59:43 -0700 (PDT)
Local: Sun, May 3 2009 6:59 am
Subject: Re: Wigner 3j, 6j, 9j, Clebsch-Gordan, Racah and Gaunt coefficients
Ok, here it is:

--------------------------------------------------------------------------- --------------------
r"""
Calculate Wigner 3j, 6j, 9j, Clebsch-Gordan, Racah and Gaunt
coefficients

Collection of functions for calculating er 3j, 6j, 9j, Clebsch-Gordan,
Racah as well as Gaunt coefficients exactly, all evaluating to a
rational number times the square root of a rational number [Rasch03].

Please see the description of the individual functions for further
details and examples.

REFERENCES:

- [Rasch03] 'Efficient Storage Scheme for Precalculated Wigner 3j, 6j
  and Gaunt Coefficients', J. Rasch and A. C. H. Yu, SIAM
  J. Sci. Comput. Volume 25, Issue 4, pp. 1416-1428 (2003)

AUTHORS:

- Jens Rasch (2009-03-24): initial version for Sage

"""

#***********************************************************************
#       Copyright (C) 2008 Jens Rasch <jyr2...@gmail.com>
#
#  Distributed under the terms of the GNU General Public License (GPL)
#                  http://www.gnu.org/licenses/
#***********************************************************************

from sage.all import *
# from sage.calculus.calculus   import sqrt,factorial
# from sage.functions.constants import pi

# This list of precomputed factorials is needed to massively
# accelerate consequetive calculations of the various coefficients
_Factlist=[1]

def _calc_factlist(nn):
    if nn>=len(_Factlist):
        for ii in range(len(_Factlist),nn+1):
            _Factlist.append(_Factlist[ii-1]*ii)
            #_Factlist.append(factorial(ii))
    #return _Factlist

def test_calc_factlist(nn):
    r"""
    Function calculates a list of precomputed factorials in order to
    massively accelerate consequetive calculations of the various
    coefficients.

    INPUT:

     - nn Highest factorial to be computed

    OUTPUT:

    integer list of factorials

    EXAMPLES:

    Calculate list of factorials:

        sage: test_calc_factlist(10)
        [1, 1, 2, 6, 24, 120, 720, 5040, 40320, 362880, 3628800]
    """
    _calc_factlist(nn)
    return _Factlist

def Wigner3j(j_1,j_2,j_3,m_1,m_2,m_3,prec=None):
    r"""
    Calculate the Wigner 3j symbol

    \left({j_1 \atop m_1} {j_2 \atop m_2} {j_3 \atop m_3} \right)

    NOTES:

    The Wigner 3j symbol obeys the following symmetry rules:

    - invariant under any permutation of the columns (with the
      exception of a sign change where $J:=j_1+j_2+j_3$):
      \begin{eqnarray}
      \left({j_1 \atop m_1} {j_2 \atop m_2} {j_3 \atop m_3}\right)
      &=&
      \left({j_3 \atop m_3} {j_1 \atop m_1} {j_2 \atop m_2}\right)
      =\left({j_2 \atop m_2} {j_3 \atop m_3} {j_1 \atop m_1}\right)
      \qquad \mbox{cyclic}
      &=&
       (-)^{J}\left({j_3\atop m_3} {j_2\atop m_2} {j_1\atop
m_1}\right)
      =(-)^{J}\left({j_1\atop m_1} {j_3\atop m_3} {j_2\atop
m_2}\right)
      =(-)^{J}\left({j_2\atop m_2} {j_1\atop m_1} {j_3\atop
m_3}\right)
      \qquad\mbox{anti-cyclic}
      \end{eqnarray}

    - invariant under space inflection, i. e.
      \begin{eqnarray}
      \left({{j_1}\atop{m_1}} {{j_2}\atop{m_2}} {{j_3}\atop{m_3}}
\right)
      =
      (-)^{J}
      \left({j_1 \atop -m_1} {j_2 \atop -m_2}{j_3 \atop -m_3}\right)
      \end{eqnarray}

    - symmetric with respect to the 72 additional symmetries based on
      the work by [Regge58]

    - zero for $j_1$, $j_2$, $j_3$ not fulfilling triangle relation

    - zero for ${m_1}+{m_2}+{m_3}!= 0$

    - zero for violating any one of the conditions
      $j_1\ge|m_1|$,  $j_2\ge|m_2|$,  $j_3\ge|m_3|$

    ALGORITHM:

    This function uses the algorithm of [Edmonds74] to calculate the
    value of the 3j symbol exactly. Note that the formula contains
    alternating sums over large factorials and is therefore unsuitable
    for finite precision arithmetic and only useful for a computer
    algebra system [Rasch03].

    INPUT:

    j_1 - integer or half integer
    j_2 - integer or half integer
    j_3 - integer or half integer
    m_1 - integer or half integer
    m_2 - integer or half integer
    m_3 - integer or half integer
    prec - precission, default: None. Providing a precission can
           drastically spead up the calculation.

    OUTPUT:

    The result will be a rational number times the square root of a
    rational number, unless a precission is given.

    EXAMPLES:

    A couple of examples:

        sage: Wigner3j(2,6,4,0,0,0)
        sqrt(5)/sqrt(143)

        sage: Wigner3j(2,6,4,0,0,1)
        0

        sage: Wigner3j(0.5,0.5,1,0.5,-0.5,0)
        1/sqrt(6)

        sage: Wigner3j(40,100,60,-10,60,-50)
        95608*sqrt(21082735836735314343364163310)/(18702538494885*sqrt
(220491455010479533763))

        sage: Wigner3j(2500,2500,5000,2488,2400,-4888 ,prec=64)
        7.60424456883448589e-12

    It is an error to have arguments that are not integer or half
    integer values:

        sage: Wigner3j(2.1,6,4,0,0,0)
        Traceback (most recent call last):
        ...
        ValueError: j values must be integer or half integer

        sage: Wigner3j(2,6,4,1,0,-1.1)
        Traceback (most recent call last):
        ...
        ValueError: m values must be integer or half integer

    REFERENCES:

    - [Regge58] 'Symmetry Properties of Clebsch-Gordan Coefficients',
      T. Regge, Nuovo Cimento, Volume 10, pp. 544 (1958)

    - [Edmonds74] 'Angular Momentum in Quantum Mechanics',
      A. R. Edmonds, Princeton University Press (1974)

    - [Rasch03] 'Efficient Storage Scheme for Precalculated Wigner 3j,
      6j and Gaunt Coefficients', J. Rasch and A. C. H. Yu, SIAM
      J. Sci. Comput. Volume 25, Issue 4, pp. 1416-1428 (2003)

    AUTHORS:

    - Jens Rasch (2009-03-24): initial version

    """

    if int(j_1*2)!=j_1*2 or int(j_2*2)!=j_2*2 or int(j_3*2)!=j_3*2:
        raise ValueError("j values must be integer or half integer")
        #return 0
    if int(m_1*2)!=m_1*2 or int(m_2*2)!=m_2*2 or int(m_3*2)!=m_3*2:
        raise ValueError("m values must be integer or half integer")
        #return 0
    if (m_1+m_2+m_3<>0):
        return 0
    prefid=Integer((-1)**(int(j_1-j_2-m_3)))
    m_3=-m_3
    a1=j_1+j_2-j_3
    if (a1<0):
        return 0
    a2=j_1-j_2+j_3
    if (a2<0):
        return 0
    a3=-j_1+j_2+j_3
    if (a3<0):
        return 0
    if (abs(m_1)>j_1) or (abs(m_2)>j_2) or (abs(m_3)>j_3):
        return 0

    maxfact=max(j_1+j_2+j_3+1,j_1+abs(m_1),j_2+abs(m_2),j_3+abs(m_3))
    _calc_factlist(maxfact)

    #try:
    argsqrt=Integer(_Factlist[int(j_1+j_2-j_3)]\
                     *_Factlist[int(j_1-j_2+j_3)]\
             *_Factlist[int(-j_1+j_2+j_3)]\
             *_Factlist[int(j_1-m_1)]*_Factlist[int(j_1+m_1)]\
             *_Factlist[int(j_2-m_2)]*_Factlist[int(j_2+m_2)]\
             *_Factlist[int(j_3-m_3)]*_Factlist[j_3+m_3])\
             /_Factlist[int(j_1+j_2+j_3+1)]\
    #except:
    #    return 0

    ressqrt=sqrt(argsqrt,prec)
    if type(ressqrt)==sage.rings.complex_number.ComplexNumber:
        ressqrt=ressqrt.real()

    imin=max(-j_3+j_1+m_2,-j_3+j_2-m_1,0)
    imax=min(j_2+m_2,j_1-m_1,j_1+j_2-j_3)
    sumres=0
    for ii in range(imin,imax+1):
        den=_Factlist[ii]*_Factlist[int(ii+j_3-j_1-m_2)]\
             *_Factlist[int(j_2+m_2-ii)]*_Factlist[int(j_1-ii-m_1)]\
             *_Factlist[int(ii+j_3-j_2+m_1)]\
             *_Factlist[int(j_1+j_2-j_3-ii)]
        sumres=sumres+Integer((-1)**ii)/den

    res=ressqrt*sumres*prefid
    return res

def ClebschGordan(j_1,j_2,j_3,m_1,m_2,m_3,prec=None):
    r"""
    Calculates the Clebsch-Gordan coefficient

    $\left< j_1 m_1 \; j_2 m_2 | j_3 m_3 \right>$

    NOTES:

    The Clebsch-Gordan coefficient will be evaluated via its relation
    to Wigner 3j symbols:

    \begin{eqnarray}
    \left< j_1 m_1 \; j_2 m_2 | j_3 m_3 \right>=
    (-1)^(j_1-j_2+m_3) \sqrt(2j_3+1)
    \left({j_1 \atop m_1} {j_2 \atop m_2} {j_3 \atop -m_3}\right)
    \end{eqnarray}

    See also the documentation on Wigner 3j symbols which exhibit much
    higher symmetry releations that the Clebsch-Gordan coefficient.

    INPUT:

    j_1 - integer or half integer
    j_2 - integer or half integer
    j_3 - integer or half integer
    m_1 - integer or half integer
    m_2 - integer or half integer
    m_3 - integer or half integer
    prec - precission, default: None. Providing a precission can
           drastically spead up the calculation.

    OUTPUT:

    The result will be a rational number times the square root of a
    rational number, unless a precission is given.

    EXAMPLES:

    A couple of examples:

        sage: ClebschGordan(3/2,1/2,2, 3/2,1/2,2)
        1

        sage: ClebschGordan(1.5,0.5,1, 1.5,-0.5,1)
        sqrt(3)/2

        sage: ClebschGordan(3/2,1/2,1, -1/2,1/2,0)
        -sqrt(3)/sqrt(6)

    REFERENCES:

    - [Edmonds74] 'Angular Momentum in Quantum Mechanics',
      A. R. Edmonds, Princeton University Press (1974)

    - [Rasch03] 'Efficient Storage Scheme for Precalculated Wigner 3j,
      6j and Gaunt Coefficients', J. Rasch and A. C. H. Yu, SIAM
      J. Sci. Comput. Volume 25, Issue 4, pp. 1416-1428 (2003)

    AUTHORS:

    - Jens Rasch (2009-03-24): initial version

    """

    res=(-1)**(int(j_1-j_2+m_3))*sqrt(2*j_3+1)\
         *Wigner3j(j_1,j_2,j_3,m_1,m_2,-m_3,prec)
    return res

def _bigDeltacoeff(aa,bb,cc,prec=None):
    r"""
    Calculates the Delta coefficient of the 3 angular momenta for
    Racah symbols. Also checks that the differences are of integer
    value.

    INPUT:

     - aa - first angular momentum, integer or half integer
     - bb - second angular momentum, integer or half integer
     - cc - third angular momentum,
...

read more »


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Ondrej Certik  
View profile  
 More options May 3 2009, 6:18 pm
From: Ondrej Certik <ond...@certik.cz>
Date: Sun, 3 May 2009 15:18:27 -0700
Local: Sun, May 3 2009 6:18 pm
Subject: Re: [sage-devel] Re: Wigner 3j, 6j, 9j, Clebsch-Gordan, Racah and Gaunt coefficients

Nice article. Is the C program, that you use in there available somewhere?

I especially like the magic square, eq. 2-10. Indeed, the sum in each
row or column is j1+j2+j3, it never occured to me the 3j symbols have
the same symmetries at the magic square.

Ondrej


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
jyr  
View profile  
 More options May 3 2009, 7:19 pm
From: jyr <jyr2...@googlemail.com>
Date: Sun, 3 May 2009 16:19:56 -0700 (PDT)
Local: Sun, May 3 2009 7:19 pm
Subject: Re: Wigner 3j, 6j, 9j, Clebsch-Gordan, Racah and Gaunt coefficients

Hi Ondrej,

No, I have not come round to publishing it yet in Comput. Phys.
Commun. or some similar journal.

The thought has occured to me that one could use the index functions
for the 3j, 6j, and Gaunt coefficients for a much simpler storage
scheme in python by using the index as a key for a dictionary of
stored symbols. I could then extend the above published routines with
an optional 'remember' keyword that would store them from one call to
the next.
However, I am not sure how much memory dictionaries consume in python
and whether this is efficient. At the end of the day for any realistic
calculation you are usually talking about millions of them.

regards,

Jens


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
jyr  
View profile  
 More options May 3 2009, 7:21 pm
From: jyr <jyr2...@googlemail.com>
Date: Sun, 3 May 2009 16:21:54 -0700 (PDT)
Local: Sun, May 3 2009 7:21 pm
Subject: Re: Wigner 3j, 6j, 9j, Clebsch-Gordan, Racah and Gaunt coefficients

On May 3, 11:29 am, mabshoff <mabsh...@googlemail.com> wrote:

> On May 3, 3:07 am, jyr <jyr2...@googlemail.com> wrote:

> > If there is interest I could post it here or get a trac account and
> > open a ticket for it for review.

> Yes, do both.

Hi Michael,

Could you open a trac account for me please, so that I can add the
code to a ticket.

I tried to email you earlier, but the email probably died in some spam
filter.

regards,

Jens


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Dan Christensen  
View profile  
 More options May 4 2009, 7:12 pm
From: Dan Christensen <j...@uwo.ca>
Date: Mon, 04 May 2009 19:12:43 -0400
Local: Mon, May 4 2009 7:12 pm
Subject: Re: Wigner 3j, 6j, 9j, Clebsch-Gordan, Racah and Gaunt coefficients

jyr <jyr2...@googlemail.com> writes:
> The thought has occured to me that one could use the index functions
> for the 3j, 6j, and Gaunt coefficients for a much simpler storage
> scheme in python by using the index as a key for a dictionary of
> stored symbols. I could then extend the above published routines with
> an optional 'remember' keyword that would store them from one call to
> the next.
> However, I am not sure how much memory dictionaries consume in python
> and whether this is efficient. At the end of the day for any realistic
> calculation you are usually talking about millions of them.

In my experience doing extremely large-scale computations using 10^10 or
more 6j symbols, it is faster to evaluate a 6j symbol than to look it up
in a hash table.  On the other hand, if you repeatedly need sequences of
6j symbols with one argument varying, it does pay off to store arrays of
6j symbols in a hash table with the key being the 5 fixed arguments.
That is all in C using floating point, so it may be worthwhile using
a hash table if you want exact rational results.

By the way, I have a C library, written with Igor Khavkine, that
computes 3j, 6j, 10j and other networks using your choice of exact
rational or floating point arithmetic.  It also does the q-deformed
calculations, either for fixed complex q (returning a complex) or for
symbolic q (returning an exact rational function of q).  It is
optimized for speed and even has a python interface.

The bad news is that it is complicated to build, not well-documented,
and not really in a state for others to use.

So it would be great if Jens' library could be included in sage!

Dan

PS: I'm currently working on using sage to evaluate 3j and 6j symbols
for SU(n) for n > 2 (the above being the n=2 case).  I'll report to the
list if I come up with something appropriate for inclusion in sage.


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Dan Christensen  
View profile  
 More options May 4 2009, 7:44 pm
From: Dan Christensen <j...@uwo.ca>
Date: Mon, 04 May 2009 19:44:12 -0400
Local: Mon, May 4 2009 7:44 pm
Subject: Re: Wigner 3j, 6j, 9j, Clebsch-Gordan, Racah and Gaunt coefficients

jyr <jyr2...@googlemail.com> writes:
> def test_calc_factlist(nn):
>     r"""
>     Function calculates a list of precomputed factorials in order to
>     massively accelerate consequetive calculations of the various

                           ^^^^^^^^^^^^

Typo.  And maybe say "future" instead of "consecutive"?

>     EXAMPLES:

>     Calculate list of factorials:

>         sage: test_calc_factlist(10)
>         [1, 1, 2, 6, 24, 120, 720, 5040, 40320, 362880, 3628800]
>     """
>     _calc_factlist(nn)
>     return _Factlist

Maybe "return _Factlist[:nn+1]" to ensure that the test passes even
if other tests run which create a larger _Factlist?  

>     This function uses the algorithm of [Edmonds74] to calculate the
>     value of the 3j symbol exactly. Note that the formula contains
>     alternating sums over large factorials and is therefore unsuitable
>     for finite precision arithmetic and only useful for a computer
>     algebra system [Rasch03].

Do you have a specific example illustrating what you mean by the last
sentence?  I've done lots of calculations of theta symbols which contain
a similar sum.  For these, if I use long double's in C, I retain good
precision even for fairly large arguments.

And I've found that floating point is also fine for 6j symbols.

>     higher symmetry releations that the Clebsch-Gordan coefficient.

Typo                  ^^^^^^^^^^

>     prec - precission, default: None. Providing a precission can

Only one s in "precision" (twice here and also in other places).

Probably worth running the file through a spell-checker.

Dan


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Dan Christensen  
View profile  
 More options May 4 2009, 7:52 pm
From: Dan Christensen <j...@uwo.ca>
Date: Mon, 04 May 2009 19:52:00 -0400
Subject: Re: Wigner 3j, 6j, 9j, Clebsch-Gordan, Racah and Gaunt coefficients
Jens,

I now see that you've written an article on this topic and tested
exactly the case I've also tested: floating point 6j symbols in a
compiled language.  Since your conclusions are different from mine, I'm
curious whether your storage system is faster or your 6j routine is
slower.  Is your code available somewhere?

Dan


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Ondrej Certik  
View profile  
 More options May 4 2009, 8:47 pm
From: Ondrej Certik <ond...@certik.cz>
Date: Mon, 4 May 2009 17:47:53 -0700
Local: Mon, May 4 2009 8:47 pm
Subject: Re: [sage-devel] Re: Wigner 3j, 6j, 9j, Clebsch-Gordan, Racah and Gaunt coefficients

On Mon, May 4, 2009 at 4:52 PM, Dan Christensen <j...@uwo.ca> wrote:

> Jens,

> I now see that you've written an article on this topic and tested
> exactly the case I've also tested: floating point 6j symbols in a
> compiled language.  Since your conclusions are different from mine, I'm
> curious whether your storage system is faster or your 6j routine is
> slower.  Is your code available somewhere?

Jens already replied above that it is not, until he publishes an
article. But I am certainly interested too in the C code, once the
article is done.

Ondrej


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
jyr  
View profile  
 More options May 5 2009, 4:09 pm
From: jyr <jyr2...@googlemail.com>
Date: Tue, 5 May 2009 13:09:19 -0700 (PDT)
Local: Tues, May 5 2009 4:09 pm
Subject: Re: Wigner 3j, 6j, 9j, Clebsch-Gordan, Racah and Gaunt coefficients
Hi Dan,

Thanks for reviewing the code. I have included your suggestions and I
have done a spell check on the file now and will submit the updated
version to trac once I get an account. (Michael?)

As a side remark concerning the prec argument, it is passed straight
into the sqrt() functions used in the algorithms and not used in any
other way. I am not much of a sage expert to know whether this is
sensible or whether there are better options available by now.

Concerning other algorithms for evaluating these symbols using finite
precision arithmetic, it has been my experience that most algorithms
loose precision pretty quickly. In addition to the algorithms used in
the paper I have also evaluated a number of other routines given to
me privately by other physicists and the conclusion is: they all
suffer from the cancellation effects of alternating sums of large
numbers even for moderatly low j values from around 15. The only
exception is the Schulten and Gordon paper where they have gone to
extraordinary length to evaluate which recursion relations are stable
for which parameter values and even then did the results have to be
renormalised.

I have therefore compared speed only to those routines in the paper
and found that the speed improvement is up to 40 times for Gaunt
coefficients, but only about 3-5 for 6j symbols. The latter is likely
due to the fact that due to the number of triangle relations the
recursion relations are much shorter and therefore faster to evaluate.
However, I have not redone these tests recently and on 64bit machines,
so I don't know what modern machines might give.

More recently people have suggested evaluating the symbols using prime
factor decomposition, essentially doing exact rational number
arithmetic. The problem here is that the factorial represenation is
always limited and for the very large factorials  approximations are
used which totally kills the result. A nice example here is the
calculator at Cambridge University:
http://www-stone.ch.cam.ac.uk/wigner.shtml
Try a $3j$ with (18,18,18,0,0,0)

I furthermore get the impression that these algorithms are not very
fast, but I have not done a detailed speed evalutation. For finite
precision symbol calculations the only code that I have found that is
reliable is the Schulten and Gordon one.

For specialised applications it might indeed be advisable to save only
subsets of the symbols or use precise formulas for special parameter
values. But these are optimisations and do not provide generic random
access values which I have tried to address in my paper.

I will try to get the storage codes published soon.

regards

Jens


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
jyr  
View profile  
 More options May 6 2009, 10:25 am
From: jyr <jyr2...@googlemail.com>
Date: Wed, 6 May 2009 07:25:35 -0700 (PDT)
Local: Wed, May 6 2009 10:25 am
Subject: Re: Wigner 3j, 6j, 9j, Clebsch-Gordan, Racah and Gaunt coefficients
Just to say that I have opened a ticket now with Dan's changes:

http://trac.sagemath.org/sage_trac/ticket/5996

Jens


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
End of messages
« Back to Discussions « Newer topic     Older topic »