Добрый день.
(Дисклеймер для Админов)
Помещаю тему в ПРР(Ф), т.к. полагаю, что с 3j-символами именно посетители этого раздела имеют чаще всего дело
Прошу прощения за беспокойство у Всех. Вновь у меня идиотические проблемы, связанные с моим непроходимым идиотизмом.
Понадобились мне (на определённый чёрт) Вигнеровские 3j-символы определённого вида:
Естественно, выражения для ненулевых коэффициентов такого вида доступны в Священной Книге (то бишь 3-м Ландавшице):
(конечно, там они даны не совсем в таком виде, я их преобразовал к нужному мне виду, возможно с ошибками).
Ну и конечно, написал C-шную функцию (точнее несколько версий), чтобы их считать. Последняя имеет такой вид:
double w3j_sym(int j1, int m1, int sigma, int j2, int m2)
{double res=0.0;
if(j1==j2)
{
if(sigma==0 && m1==-m2 )
{res=pow(-1.0, j1+m1+1) * 2*m1 / sqrt(2*j1*(2*j1+1)*(2*j1+2));}
if(sigma== 1 && m2==-(m1+1) )
{res=pow(-1.0, j1+m1+1) * sqrt(2*(j1-m1)*(j1+m1+1)) / sqrt(2*j1*(2*j1+1)*(2*j1+2));}
if(sigma==-1)
{res=pow(-1.0, j1+j2+1)*w3j_sym(j1, -m1, -sigma, j2, -m2);}
}
if(j1==(j2+1))
{
if(sigma==0 && m1==-m2)
{res=pow(-1.0, j2+m1) * sqrt(2*(j2+m1+1)*(j2-m1+1)) / sqrt(2*(2*j2+1)*(2*j2+2)*(2*j2+3));}
if(sigma== 1 && m2==-(m1+1) )
{res=pow(-1.0, j2+m1) * sqrt(2*(j2-m1)*(j2-m1+1)) / sqrt(2*(2*j2+1)*(2*j2+2)*(2*j2+3));}
if(sigma==-1)
{res=pow(-1.0, j1+j2+1)*w3j_sym(j1, -m1, -sigma, j2, -m2);}
}
return res;
}
Косячность реализации (что
j1 j2) компенсируется тем, что так они в эту функцию потом и поступают.
Но, сравнивая результаты с сетевым 3j-калькулятором
http://www-stone.ch.cam.ac.uk/wigner.shtml, а также результаты уже финального кода на тестовом примере с расчетами по аналогичной проге я получаю грусть, печаль и разочарование в своих умственных способностях.
Прошу помочь кто чем может! (статейкой/книжкой, где расчёты подобных символов разжёваны для таких идиотов, как я, уже готовым кодом или алгоритмом, который можно без угрызений совести вставить в свой, или просто советом и комментарием, что я идиот)
Всему буду рад.
Я уже перерыл кучу этих наших Интернетов, как русских, так и заграничных. Посмотрел и другие книги (такие, как Варшалович, Зар и т.д.) и статьи, но от идиота головного мозга ничего не помогает.
Поэтому и надеюсь на помощь живительных советов и пенделей от Здешних Обитателей.