43 lines
1.3 KiB
C
43 lines
1.3 KiB
C
// c99 -g -I.. bspectransl.c ../qpms/translations.c ../qpms/legendre.c ../qpms/vswf.c ../qpms/gaunt.c ../qpms/error.c -lm -lgsl -lblas
|
|
#include <qpms/translations.h>
|
|
#include <qpms/vswf.h>
|
|
#include <complex.h>
|
|
#include <stdio.h>
|
|
|
|
int main() {
|
|
cart3_t pos1={0,1,2}, pos2={3,5,2};
|
|
qpms_vswf_set_spec_t
|
|
*bspec1 = qpms_vswf_set_spec_from_lMax(1, QPMS_NORMALISATION_POWER),
|
|
*bspec2 = qpms_vswf_set_spec_from_lMax(2, QPMS_NORMALISATION_POWER);
|
|
|
|
qpms_trans_calculator *c = qpms_trans_calculator_init(3, QPMS_NORMALISATION_POWER);
|
|
|
|
complex double s_2_1[bspec2->n][bspec1->n];
|
|
complex double s_1_2[bspec1->n][bspec2->n];
|
|
const double k = 1.8;
|
|
|
|
qpms_trans_calculator_get_trans_array_lc3p(c, s_2_1[0], bspec2, bspec1->n,
|
|
bspec1, 1, k, pos2, pos1);
|
|
|
|
qpms_trans_calculator_get_trans_array_lc3p(c, s_1_2[0], bspec1, bspec2->n,
|
|
bspec2, 1, k, pos1, pos2);
|
|
|
|
for(size_t R = 0; R < bspec2->n; ++R) {
|
|
for(size_t C = 0; C < bspec1->n; ++C)
|
|
printf("%.3lg+%.3lgj\t", creal(s_2_1[R][C]), cimag(s_2_1[C][R]));
|
|
putchar('\n');
|
|
}
|
|
putchar('\n');
|
|
|
|
for(size_t R = 0; R < bspec1->n; ++R) {
|
|
for(size_t C = 0; C < bspec2->n; ++C)
|
|
printf("%.3lg+%.3lgj\t", creal(s_1_2[R][C]), cimag(s_1_2[R][C]));
|
|
putchar('\n');
|
|
}
|
|
|
|
qpms_trans_calculator_free(c);
|
|
qpms_vswf_set_spec_free(bspec1);
|
|
qpms_vswf_set_spec_free(bspec2);
|
|
return 0;
|
|
}
|