diff --git a/pyscf_ipu/electron_repulsion/direct.sh b/pyscf_ipu/electron_repulsion/direct.sh index e4b7d77..61364bc 100755 --- a/pyscf_ipu/electron_repulsion/direct.sh +++ b/pyscf_ipu/electron_repulsion/direct.sh @@ -5,4 +5,10 @@ cc cpu_int2e_sph.cpp -shared -fpic -o gen.so -lpoplar -lpoputil -fpermissive echo "Done compiling" #echo "Calling from python"; -TF_POPLAR_FLAGS=--show_progress_bar=true python direct.py $@ +export XLA_IPU_PLATFORM_DEVICE_COUNT=1 +export POPLAR_ENGINE_OPTIONS="{ +\"autoReport.outputExecutionProfile\": \"true\", +\"autoReport.directory\": \"profs/\" +}" +export TF_POPLAR_FLAGS=--show_progress_bar=true +python direct.py $@ diff --git a/pyscf_ipu/electron_repulsion/popcint/libcint.c b/pyscf_ipu/electron_repulsion/popcint/libcint.c new file mode 100644 index 0000000..f45cae4 --- /dev/null +++ b/pyscf_ipu/electron_repulsion/popcint/libcint.c @@ -0,0 +1,28667 @@ +// Copyright (c) 2023 Graphcore Ltd. All rights reserved. +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include + +#ifdef __POPC__ +#else + #include +#endif + +#define dtype float +#define print false + +#define CINT_VERSION 6.0.0 +#define CINT_SOVERSION @cint_SOVERSION + +#ifdef I8 +#include +#define FINT int //int +#else +#define FINT int//int +#endif + +#ifdef CACHE_SIZE_I8 +#include +#define CACHE_SIZE_T int64_t +#else +#define CACHE_SIZE_T int64_t +#endif + +#define PTR_EXPCUTOFF 0 +#define PTR_COMMON_ORIG 1 +#define PTR_RINV_ORIG 4 +#define PTR_RINV_ZETA 7 +#define PTR_RANGE_OMEGA 8 +#define PTR_F12_ZETA 9 +#define PTR_GTG_ZETA 10 +#define NGRIDS 11 +#define PTR_GRIDS 12 +#define PTR_ENV_START 20 + +#define CHARGE_OF 0 +#define PTR_COORD 1 +#define NUC_MOD_OF 2 +#define PTR_ZETA 3 +#define PTR_FRAC_CHARGE 4 +#define RESERVE_ATMSLOT 5 +#define ATM_SLOTS 6 + + +#define ATOM_OF 0 +#define ANG_OF 1 +#define NPRIM_OF 2 +#define NCTR_OF 3 +#define KAPPA_OF 4 +#define PTR_EXP 5 +#define PTR_COEFF 6 +#define RESERVE_BASLOT 7 +#define BAS_SLOTS 8 + +#define POSX 0 +#define POSY 1 +#define POSZ 2 +#define POS1 3 + +#define POSXX 0 +#define POSYX 1 +#define POSZX 2 +#define POS1X 3 +#define POSXY 4 +#define POSYY 5 +#define POSZY 6 +#define POS1Y 7 +#define POSXZ 8 +#define POSYZ 9 +#define POSZZ 10 +#define POS1Z 11 +#define POSX1 12 +#define POSY1 13 +#define POSZ1 14 +#define POS11 15 + + +#define TSRX 0 +#define TSRY 1 +#define TSRZ 2 +#define TSRXX 0 +#define TSRXY 1 +#define TSRXZ 2 +#define TSRYX 3 +#define TSRYY 4 +#define TSRYZ 5 +#define TSRZX 6 +#define TSRZY 7 +#define TSRZZ 8 + + +#define MXRYSROOTS 32 +#define ANG_MAX 15 +#define LMAX1 16 +#define CART_MAX 136 +#define SHLS_MAX 1048576 +#define NPRIM_MAX 64 +#define NCTR_MAX 64 + +#define POINT_NUC 1 +#define GAUSSIAN_NUC 2 +#define FRAC_CHARGE_NUC 3 + +#define bas(SLOT,I) bas[BAS_SLOTS * (I) + (SLOT)] +#define atm(SLOT,I) atm[ATM_SLOTS * (I) + (SLOT)] + +#if !defined HAVE_DEFINED_CINTOPT_H +#define HAVE_DEFINED_CINTOPT_H +typedef struct { + dtype rij[3]; + dtype eij; + dtype cceij; +} PairData; +typedef struct { + FINT **index_xyz_array; + FINT **non0ctr; + FINT **sortedidx; + FINT nbas; + dtype **log_max_coeff; + PairData **pairdata; +} CINTOpt; + + +#define HAVE_DEFINED_CINTENVVARS_H +typedef struct { + FINT *atm; + FINT *bas; + dtype *env; + FINT *shls; + FINT natm; + FINT nbas; + + FINT i_l; + FINT j_l; + FINT k_l; + FINT l_l; + FINT nfi; + FINT nfj; + + union {FINT nfk; FINT grids_offset;}; + union {FINT nfl; FINT ngrids;}; + FINT nf; + FINT rys_order; + FINT x_ctr[4]; + + FINT gbits; + FINT ncomp_e1; + FINT ncomp_e2; + FINT ncomp_tensor; + + + FINT li_ceil; + FINT lj_ceil; + FINT lk_ceil; + FINT ll_ceil; + FINT g_stride_i; + FINT g_stride_k; + FINT g_stride_l; + FINT g_stride_j; + FINT nrys_roots; + FINT g_size; + + FINT g2d_ijmax; + FINT g2d_klmax; + dtype common_factor; + dtype expcutoff; + dtype rirj[3]; + dtype rkrl[3]; + dtype *rx_in_rijrx; + dtype *rx_in_rklrx; + + dtype *ri; + dtype *rj; + dtype *rk; + + + union {dtype *rl; dtype *grids;}; + + #ifdef __cplusplus + FINT (*f_g0_2e)(...); + void (*f_g0_2d4d)(...); + void (*f_gout)(...); + #else + FINT (*f_g0_2e)(); + void (*f_g0_2d4d)(); + void (*f_gout)(); + #endif + + + + CINTOpt *opt; + + + int *idx; + dtype ai[1]; + dtype aj[1]; + dtype ak[1]; + dtype al[1]; + dtype fac[1]; + dtype rij[3]; + dtype rkl[3]; +} CINTEnvVars; +#endif + +// using global variable instead of inside envs. +// fixes problem with inconsistency between IPU model and IPU. +//void (*f_gout)(dtype *gout, dtype *g, FINT *idx, CINTEnvVars *envs, FINT gout_empty); +// +int WHICH_INTEGRAL = -1; + +int INT1E_KIN = 0; +int INT1E_NUC = 1; +int INT1E_OVLP = 2; + +int INT1E_KIN_IP = 3; +int INT1E_NUC_IP = 4; +int INT1E_OVLP_IP = 5; + +int INT2E_SPH = 6; +int INT2E_IP1_SPH = 7; + + +FINT CINTlen_cart(const FINT l); +FINT CINTlen_spinor(const FINT bas_id, const FINT *bas); + +FINT CINTcgtos_cart(const FINT bas_id, const FINT *bas); +FINT CINTcgtos_spheric(const FINT bas_id, const FINT *bas); +FINT CINTcgtos_spinor(const FINT bas_id, const FINT *bas); +FINT CINTcgto_cart(const FINT bas_id, const FINT *bas); +FINT CINTcgto_spheric(const FINT bas_id, const FINT *bas); +FINT CINTcgto_spinor(const FINT bas_id, const FINT *bas); + +void CINTgout1e_int1e_kin(dtype *gout, dtype *g, FINT *idx, CINTEnvVars *envs, FINT gout_empty); + + + +FINT CINTtot_pgto_spheric(const FINT *bas, const FINT nbas); +FINT CINTtot_pgto_spinor(const FINT *bas, const FINT nbas); + +FINT CINTtot_cgto_cart(const FINT *bas, const FINT nbas); +FINT CINTtot_cgto_spheric(const FINT *bas, const FINT nbas); +FINT CINTtot_cgto_spinor(const FINT *bas, const FINT nbas); + +void CINTshells_cart_offset(FINT ao_loc[], const FINT *bas, const FINT nbas); +void CINTshells_spheric_offset(FINT ao_loc[], const FINT *bas, const FINT nbas); +void CINTshells_spinor_offset(FINT ao_loc[], const FINT *bas, const FINT nbas); + +dtype *CINTc2s_bra_sph(dtype *sph, FINT nket, dtype *cart, FINT l); +dtype *CINTc2s_ket_sph(dtype *sph, FINT nket, dtype *cart, FINT l); +dtype *CINTc2s_ket_sph1(dtype *sph, dtype *cart, FINT lds, FINT ldc, FINT l); + +dtype CINTgto_norm(FINT n, dtype a); + +void CINTinit_2e_optimizer(CINTOpt **opt, FINT *atm, FINT natm, + FINT *bas, FINT nbas, dtype *env){}; +void CINTinit_optimizer(CINTOpt **opt, FINT *atm, FINT natm, + FINT *bas, FINT nbas, dtype *env); +void CINTdel_2e_optimizer(CINTOpt **opt); +void CINTdel_optimizer(CINTOpt **opt); + +FINT cint2e_cart(dtype *opijkl, FINT *shls, + FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env, + CINTOpt *opt); +void cint2e_cart_optimizer(CINTOpt **opt, FINT *atm, FINT natm, + FINT *bas, FINT nbas, dtype *env); +FINT cint2e_sph(dtype *opijkl, FINT *shls, + FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env, + CINTOpt *opt); +void cint2e_sph_optimizer(CINTOpt **opt, FINT *atm, FINT natm, + FINT *bas, FINT nbas, dtype *env); +FINT cint2e(dtype *opijkl, FINT *shls, + FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env, + CINTOpt *opt); +void cint2e_optimizer(CINTOpt **opt, FINT *atm, FINT natm, + FINT *bas, FINT nbas, dtype *env); + +#ifndef __cplusplus +//#include + +void CINTc2s_ket_spinor_sf1(dtype *gspa, dtype *gspb, dtype *gcart, + FINT lds, FINT ldc, FINT nctr, FINT l, FINT kappa); +void CINTc2s_iket_spinor_sf1(dtype *gspa, dtype *gspb, dtype *gcart, + FINT lds, FINT ldc, FINT nctr, FINT l, FINT kappa); +void CINTc2s_ket_spinor_si1(dtype *gspa, dtype *gspb, dtype *gcart, + FINT lds, FINT ldc, FINT nctr, FINT l, FINT kappa); +void CINTc2s_iket_spinor_si1(dtype *gspa, dtype *gspb, dtype *gcart, + FINT lds, FINT ldc, FINT nctr, FINT l, FINT kappa); +#endif + +#define HAVE_EXPL +#define HAVE_SQRTL + + +#define HAVE_QUADMATH_H + + + +#ifndef M_PI +#define M_PI 3.1415926535897932384626433832795028 +#endif +#define SQRTPI 1.7724538509055160272981674833411451 + + +#define IINC 0 +#define JINC 1 +#define KINC 2 +#define LINC 3 +#define GSHIFT 4 +#define POS_E1 5 +#define POS_E2 6 +#define SLOT_RYS_ROOTS 6 +#define TENSOR 7 + +#define EXPCUTOFF 60 +#ifndef MIN_EXPCUTOFF + +#define MIN_EXPCUTOFF 40 +#endif + +#define OF_CMPLX 2 + +#define GRID_BLKSIZE 104 + +FINT CINTlen_cart(const FINT l); +FINT CINTlen_spinor(const FINT bas_id, const FINT *bas); + +FINT CINTcgtos_cart(const FINT bas_id, const FINT *bas); +FINT CINTcgtos_spheric(const FINT bas_id, const FINT *bas); +FINT CINTcgtos_spinor(const FINT bas_id, const FINT *bas); +FINT CINTcgto_cart(const FINT bas_id, const FINT *bas); +FINT CINTcgto_spheric(const FINT bas_id, const FINT *bas); +FINT CINTcgto_spinor(const FINT bas_id, const FINT *bas); + +FINT CINTtot_pgto_spheric(const FINT *bas, const FINT nbas); +FINT CINTtot_pgto_spinor(const FINT *bas, const FINT nbas); + +FINT CINTtot_cgto_cart(const FINT *bas, const FINT nbas); +FINT CINTtot_cgto_spheric(const FINT *bas, const FINT nbas); +FINT CINTtot_cgto_spinor(const FINT *bas, const FINT nbas); + +void CINTshells_cart_offset(FINT ao_loc[], const FINT *bas, const FINT nbas); +void CINTshells_spheric_offset(FINT ao_loc[], const FINT *bas, const FINT nbas); +void CINTshells_spinor_offset(FINT ao_loc[], const FINT *bas, const FINT nbas); + +void CINTcart_comp(FINT *nx, FINT *ny, FINT *nz, const FINT lmax); + + + +#define NOVALUE ((void *)0xffffffffffffffffuL) +#define MAX_PGTO_FOR_PAIRDATA 2048 + +void CINTinit_2e_optimizer(CINTOpt **opt, FINT *atm, FINT natm, + FINT *bas, FINT nbas, dtype *env); +void CINTinit_optimizer(CINTOpt **opt, FINT *atm, FINT natm, + FINT *bas, FINT nbas, dtype *env); +void CINTdel_2e_optimizer(CINTOpt **opt); +void CINTdel_optimizer(CINTOpt **opt); +void CINTdel_pairdata_optimizer(CINTOpt *cintopt); +void CINTOpt_log_max_pgto_coeff(dtype *log_maxc, dtype *coeff, FINT nprim, FINT nctr); +void CINTOpt_log_max_pgto_coeff(dtype *log_maxc, dtype *coeff, FINT nprim, FINT nctr); +//void CINTOpt_set_log_maxc(CINTOpt *opt, FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env); +//void CINTOpt_setij(CINTOpt *opt, FINT *ng, FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env); +void CINTOpt_non0coeff_byshell(FINT *sortedidx, FINT *non0ctr, dtype *ci, FINT iprim, FINT ictr); +void CINTOpt_set_non0coeff(CINTOpt *opt, FINT *atm, FINT natm, + FINT *bas, FINT nbas, dtype *env); +FINT CINTset_pairdata(PairData *pairdata, dtype *ai, dtype *aj, dtype *ri, dtype *rj, + dtype *log_maxci, dtype *log_maxcj, + FINT li_ceil, FINT lj_ceil, FINT iprim, FINT jprim, + dtype rr_ij, dtype expcutoff, dtype *env); + +void CINTOpt_4cindex_xyz(CINTOpt *opt, FINT *ng, + FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env); +void CINTOpt_3cindex_xyz(CINTOpt *opt, FINT *ng, + FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env); +void CINTOpt_2cindex_xyz(CINTOpt *opt, FINT *ng, + FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env); +void CINTOpt_3c1eindex_xyz(CINTOpt *opt, FINT *ng, + FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env); + + +void CINTno_optimizer(CINTOpt **opt, FINT *atm, FINT natm, + FINT *bas, FINT nbas, dtype *env); +void CINTall_1e_optimizer(CINTOpt **opt, FINT *ng, + FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env){} +void CINTall_2e_optimizer(CINTOpt **opt, FINT *ng, + FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env){} +void CINTall_3c2e_optimizer(CINTOpt **opt, FINT *ng, + FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env){} +void CINTall_2c2e_optimizer(CINTOpt **opt, FINT *ng, + FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env){} +void CINTall_3c1e_optimizer(CINTOpt **opt, FINT *ng, + FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env){} +void CINTall_1e_grids_optimizer(CINTOpt **opt, FINT *ng, + FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env){} + +#ifdef WITH_F12 +void CINTall_2e_stg_optimizer(CINTOpt **opt, FINT *ng, + FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env); +#endif + +#ifndef HAVE_DEFINED_APPROX_LOG +#define HAVE_DEFINED_APPROX_LOG +#ifdef __X86__ + + + + + + + + + + + + +#define approx_log log +#else +#define approx_log log +#endif +#endif + + + +void CINTinit_int1e_EnvVars(CINTEnvVars *envs, FINT *ng, FINT *shls, + FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env); +void CINTinit_int3c1e_EnvVars(CINTEnvVars *envs, FINT *ng, FINT *shls, + FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env); + +void CINTg1e_index_xyz(FINT *idx, CINTEnvVars *envs); + +FINT CINTg1e_ovlp(dtype *g, CINTEnvVars *envs); + +FINT CINTg1e_nuc(dtype *g, CINTEnvVars *envs, FINT nuc_id); + +void CINTnabla1i_1e(dtype *f, dtype *g, + FINT li, FINT lj, FINT lk, CINTEnvVars *envs); + +void CINTnabla1j_1e(dtype *f, dtype *g, + FINT li, FINT lj, FINT lk, CINTEnvVars *envs); + +void CINTnabla1k_1e(dtype *f, dtype *g, + FINT li, FINT lj, FINT lk, CINTEnvVars *envs); + +void CINTx1i_1e(dtype *f, dtype *g, dtype ri[3], + FINT li, FINT lj, FINT lk, CINTEnvVars *envs); + +void CINTx1j_1e(dtype *f, dtype *g, dtype rj[3], + FINT li, FINT lj, FINT lk, CINTEnvVars *envs); + +void CINTx1k_1e(dtype *f, dtype *g, dtype rk[3], + FINT li, FINT lj, FINT lk, CINTEnvVars *envs); + +void CINTprim_to_ctr(dtype *gc, FINT nf, dtype *gp, + FINT inc, FINT nprim, + FINT nctr, dtype *pcoeff); + +dtype CINTcommon_fac_sp(FINT l); + +void CINTprim_to_ctr_0(dtype *gc, dtype *gp, dtype *coeff, size_t nf, + FINT nprim, FINT nctr, FINT non0ctr, FINT *sortedidx); +void CINTprim_to_ctr_1(dtype *gc, dtype *gp, dtype *coeff, size_t nf, + FINT nprim, FINT nctr, FINT non0ctr, FINT *sortedidx); + +#define G1E_D_I(f, g, li, lj, lk) CINTnabla1i_1e(f, g, li, lj, lk, envs) +#define G1E_D_J(f, g, li, lj, lk) CINTnabla1j_1e(f, g, li, lj, lk, envs) +#define G1E_D_K(f, g, li, lj, lk) CINTnabla1k_1e(f, g, li, lj, lk, envs) + +#define G1E_R0I(f, g, li, lj, lk) CINTx1i_1e(f, g, envs->ri, li, lj, lk, envs) +#define G1E_R0J(f, g, li, lj, lk) CINTx1j_1e(f, g, envs->rj, li, lj, lk, envs) +#define G1E_R0K(f, g, li, lj, lk) CINTx1k_1e(f, g, envs->rk, li, lj, lk, envs) + +#define G1E_RCI(f, g, li, lj, lk) CINTx1i_1e(f, g, dri, li, lj, lk, envs) +#define G1E_RCJ(f, g, li, lj, lk) CINTx1j_1e(f, g, drj, li, lj, lk, envs) +#define G1E_RCK(f, g, li, lj, lk) CINTx1k_1e(f, g, drk, li, lj, lk, envs) + +#define G1E_R_I(f, g, li, lj, lk) f = g + envs->g_stride_i +#define G1E_R_J(f, g, li, lj, lk) f = g + envs->g_stride_j +#define G1E_R_K(f, g, li, lj, lk) f = g + envs->g_stride_k + + + +//#include + +FINT CINT1e_loop(dtype *gctr, CINTEnvVars *envs, dtype *cache, FINT int1e_type); + +CACHE_SIZE_T CINT1e_drv(dtype *out, FINT *dims, CINTEnvVars *envs, dtype *cache, void (*f_c2s)(dtype *opij, dtype *gctr, FINT *dims, CINTEnvVars *envs, dtype *cache), FINT int1e_type); + +CACHE_SIZE_T CINT1e_spinor_drv(dtype *out, FINT *dims, CINTEnvVars *envs, + dtype *cache, void (*f_c2s)(dtype *opij, dtype *gctr, FINT *dims, CINTEnvVars *envs, dtype *cache), FINT int1e_type); + +dtype CINTnuc_mod(dtype aij, FINT nuc_id, FINT *atm, dtype *env); + +CACHE_SIZE_T int1e_cache_size(CINTEnvVars *envs); + +#ifdef __cplusplus +CACHE_SIZE_T CINT3c1e_drv(dtype *out, FINT *dims, CINTEnvVars *envs, CINTOpt *opt, + dtype *cache, void (*f_e1_c2s)(...), FINT int_type, FINT is_ssc); +CACHE_SIZE_T CINT3c1e_spinor_drv(dtype *out, FINT *dims, CINTEnvVars *envs, CINTOpt *opt, + dtype *cache, void (*f_e1_c2s)(...), FINT int_type, FINT is_ssc); +#else +CACHE_SIZE_T CINT3c1e_drv(dtype *out, FINT *dims, CINTEnvVars *envs, CINTOpt *opt, + dtype *cache, void (*f_e1_c2s)(), FINT int_type, FINT is_ssc); +CACHE_SIZE_T CINT3c1e_spinor_drv(dtype *out, FINT *dims, CINTEnvVars *envs, CINTOpt *opt, + dtype *cache, void (*f_e1_c2s)(), FINT int_type, FINT is_ssc); +#endif + +#define INT1E_TYPE_OVLP 0 +#define INT1E_TYPE_RINV 1 +#define INT1E_TYPE_NUC 2 + +CACHE_SIZE_T CINT1e_grids_spinor_drv(dtype *out, FINT *dims, CINTEnvVars *envs, + dtype *cache, void (*f_c2s)(dtype *opij, dtype *gctr, FINT *dims, CINTEnvVars *envs, dtype *cache)); +CACHE_SIZE_T CINT1e_grids_drv(dtype *out, FINT *dims, CINTEnvVars *envs, + dtype *cache, void (*f_c2s)(dtype *opij, dtype *gctr, FINT *dims, CINTEnvVars *envs, dtype *cache)); + + + +#include + + + +#if defined __cplusplus +extern "C" { +#endif +//#include + +void CINTdset0(FINT n, dtype *x); +void CINTdaxpy2v(const FINT n, dtype a, dtype *x, dtype *y, dtype *v); +void CINTdmat_transpose(dtype *a_t, dtype *a, FINT m, FINT n); +void CINTdplus_transpose(dtype *a_t, dtype *a, FINT m, FINT n); +void CINTzmat_transpose(dtype *a_t, dtype *a, FINT m, FINT n); +void CINTzmat_dagger(dtype *a_c, dtype *a, FINT m, FINT n); + +void CINTdgemm_NN(FINT m, FINT n, FINT k, + dtype *a, dtype *b, dtype *c); +void CINTdgemm_NN1(FINT m, FINT n, FINT k, + dtype *a, dtype *b, dtype *c, FINT ldc); +void CINTdgemm_TN(FINT m, FINT n, FINT k, + dtype *a, dtype *b, dtype *c); +void CINTdgemm_NT(FINT m, FINT n, FINT k, + dtype *a, dtype *b, dtype *c); +#if defined __cplusplus +} +#endif + +#define MIN(X,Y) ((X)<(Y)?(X):(Y)) +#define MAX(X,Y) ((X)>(Y)?(X):(Y)) +#define SQUARE(r) ((r)[0]*(r)[0] + (r)[1]*(r)[1] + (r)[2]*(r)[2]) + +void CINTdcmplx_re(const FINT n, dtype *z, const dtype *re); +void CINTdcmplx_im(const FINT n, dtype *z, const dtype *im); +void CINTdcmplx_pp(const FINT n, dtype *z, const dtype *re, const dtype *im); +void CINTdcmplx_pn(const FINT n, dtype *z, const dtype *re, const dtype *im); +void CINTdcmplx_np(const FINT n, dtype *z, const dtype *re, const dtype *im); +void CINTdcmplx_nn(const FINT n, dtype *z, const dtype *re, const dtype *im); + +dtype CINTsquare_dist(const dtype *r1, const dtype *r2); + +dtype CINTgto_norm(FINT n, dtype a); + + +#ifdef __cplusplus +#define MALLOC_INSTACK(var, n) \ + var = reinterpret_cast(new char[(n) * sizeof(*var)]); + +#define MALLOC(type, var) \ + type var[256]; + +#else +#define MALLOC_INSTACK(var, n) \ + var = (void *)(((uintptr_t)cache + 7) & (-(uintptr_t)8)); \ + cache = (dtype *)(var + (n)); +#endif + +/*#ifdef __cplusplus +#define //var = reinterpret_cast(new char[(n) * sizeof(*var)]); + var = reinterpret_cast(new char[(1024) * sizeof(*var)]); + //var = reinterpret_cast(new char[(n) * sizeof(*var)]); + +#else +#define MALLOC_INSTACK(var, n) \ + var = (void *)(((uintptr_t)cache + 7) & (-(uintptr_t)8)); \ + cache = (dtype *)(var + (n)); +#endif */ + +#ifdef __cplusplus +#define MALLOC_ALIGN8_INSTACK(var, n) \ + var = reinterpret_cast(new char[(n) * sizeof(*var)]); + //var = reinterpret_cast(new char[(n) * sizeof(*var)]); + //var = reinterpret_cast(new char[(n) * sizeof(*var)]); +#else +#define MALLOC_ALIGN8_INSTACK(var, n) \ + var = (void *)(((uintptr_t)cache + 63) & (-(uintptr_t)64)); \ + cache = (dtype *)(var + (n)); +#endif + +#ifdef WITH_CINT2_INTERFACE +#define ALL_CINT(NAME) \ +FINT c##NAME##_cart(dtype *out, FINT *shls, FINT *atm, FINT natm, \ + FINT *bas, FINT nbas, dtype *env, CINTOpt *opt) { \ + return NAME##_cart(out, NULL, shls, atm, natm, bas, nbas, env, opt, NULL); \ +} \ +void c##NAME##_cart_optimizer(CINTOpt **opt, FINT *atm, FINT natm, \ + FINT *bas, FINT nbas, dtype *env) { \ + NAME##_optimizer(opt, atm, natm, bas, nbas, env); \ +} \ +FINT c##NAME##_sph(dtype *out, FINT *shls, FINT *atm, FINT natm, \ + FINT *bas, FINT nbas, dtype *env, CINTOpt *opt) { \ + return NAME##_sph(out, NULL, shls, atm, natm, bas, nbas, env, opt, NULL); \ +} \ +void c##NAME##_sph_optimizer(CINTOpt **opt, FINT *atm, FINT natm, \ + FINT *bas, FINT nbas, dtype *env) { \ + NAME##_optimizer(opt, atm, natm, bas, nbas, env); \ +} \ +FINT c##NAME(dtype *out, FINT *shls, FINT *atm, FINT natm, \ + FINT *bas, FINT nbas, dtype *env, CINTOpt *opt) { \ + return NAME##_spinor((dtype *)out, NULL, shls, \ + atm, natm, bas, nbas, env, opt, NULL); \ +} \ +void c##NAME##_optimizer(CINTOpt **opt, FINT *atm, FINT natm, \ + FINT *bas, FINT nbas, dtype *env) { \ + NAME##_optimizer(opt, atm, natm, bas, nbas, env); \ +} + +#define ALL_CINT1E(NAME) \ +FINT c##NAME##_cart(dtype *out, FINT *shls, FINT *atm, FINT natm, \ + FINT *bas, FINT nbas, dtype *env) { \ + return NAME##_cart(out, NULL, shls, atm, natm, bas, nbas, env, NULL, NULL); \ +} \ +FINT c##NAME##_sph(dtype *out, FINT *shls, FINT *atm, FINT natm, \ + FINT *bas, FINT nbas, dtype *env) { \ + return NAME##_sph(out, NULL, shls, atm, natm, bas, nbas, env, NULL, NULL); \ +} \ +FINT c##NAME(dtype *out, FINT *shls, FINT *atm, FINT natm, \ + FINT *bas, FINT nbas, dtype *env) { \ + return NAME##_spinor((dtype *)out, NULL, shls, \ + atm, natm, bas, nbas, env, NULL, NULL); \ +} + +#else + +#define ALL_CINT(NAME) +#define ALL_CINT1E(NAME) + +#endif + + + + +//#include + +void c2s_sph_1e(dtype *opij, dtype *gctr, FINT *dims, CINTEnvVars *envs, dtype *cache); +void c2s_sph_2e1(dtype *fijkl, dtype *gctr, FINT *dims, CINTEnvVars *envs, dtype *cache); +void c2s_sph_2e2(); + +void c2s_cart_1e(dtype *opij, dtype *gctr, FINT *dims, CINTEnvVars *envs, dtype *cache); +void c2s_cart_2e1(dtype *fijkl, dtype *gctr, FINT *dims, CINTEnvVars *envs, dtype *cache); +void c2s_cart_2e2(); + +void c2s_sf_1e(dtype *opij, dtype *gctr, FINT *dims, CINTEnvVars *envs, dtype *cache); +void c2s_sf_1ei(dtype *opij, dtype *gctr, FINT *dims, CINTEnvVars *envs, dtype *cache); + +void c2s_si_1e(dtype *opij, dtype *gctr, FINT *dims, CINTEnvVars *envs, dtype *cache); +void c2s_si_1ei(dtype *opij, dtype *gctr, FINT *dims, CINTEnvVars *envs, dtype *cache); + +void c2s_sph_1e_grids(dtype *out, dtype *gctr, FINT *dims, CINTEnvVars *envs, dtype *cache); +void c2s_cart_1e_grids(dtype *out, dtype *gctr, FINT *dims, CINTEnvVars *envs, dtype *cache); + +void c2s_sf_1e_grids(dtype *out, dtype *gctr, FINT *dims, CINTEnvVars *envs, dtype *cache); +void c2s_sf_1e_gridsi(dtype *out, dtype *gctr, FINT *dims, CINTEnvVars *envs, dtype *cache); +void c2s_si_1e_grids(dtype *out, dtype *gctr, FINT *dims, CINTEnvVars *envs, dtype *cache); +void c2s_si_1e_gridsi(dtype *out, dtype *gctr, FINT *dims, CINTEnvVars *envs, dtype *cache); + +void c2s_sf_2e1(dtype *opij, dtype *gctr, FINT *dims, CINTEnvVars *envs, dtype *cache); +void c2s_sf_2e1i(dtype *opij, dtype *gctr, FINT *dims, CINTEnvVars *envs, dtype *cache); + +void c2s_sf_2e2(dtype *fijkl, dtype *opij, FINT *dims, CINTEnvVars *envs, dtype *cache); +void c2s_sf_2e2i(dtype *fijkl, dtype *opij, FINT *dims, CINTEnvVars *envs, dtype *cache); + +void c2s_si_2e1(dtype *opij, dtype *gctr, FINT *dims, CINTEnvVars *envs, dtype *cache); +void c2s_si_2e1i(dtype *opij, dtype *gctr, FINT *dims, CINTEnvVars *envs, dtype *cache); + +void c2s_si_2e2(dtype *fijkl, dtype *opij, FINT *dims, CINTEnvVars *envs, dtype *cache); +void c2s_si_2e2i(dtype *fijkl, dtype *opij, FINT *dims, CINTEnvVars *envs, dtype *cache); + +void c2s_sph_3c2e1(dtype *fijkl, dtype *gctr, FINT *dims, CINTEnvVars *envs, dtype *cache); +void c2s_cart_3c2e1(dtype *fijkl, dtype *gctr, FINT *dims, CINTEnvVars *envs, dtype *cache); +void c2s_sph_3c2e1_ssc(dtype *fijkl, dtype *gctr, FINT *dims, CINTEnvVars *envs, dtype *cache); + +void c2s_sf_3c2e1(dtype *opijk, dtype *gctr, FINT *dims, CINTEnvVars *envs, dtype *cache); +void c2s_sf_3c2e1i(dtype *opijk, dtype *gctr, FINT *dims, CINTEnvVars *envs, dtype *cache); +void c2s_si_3c2e1(dtype *opijk, dtype *gctr, FINT *dims, CINTEnvVars *envs, dtype *cache); +void c2s_si_3c2e1i(dtype *opijk, dtype *gctr, FINT *dims, CINTEnvVars *envs, dtype *cache); +void c2s_sf_3c2e1_ssc(dtype *opijk, dtype *gctr, FINT *dims, CINTEnvVars *envs, dtype *cache); +void c2s_sf_3c2e1i_ssc(dtype *opijk, dtype *gctr, FINT *dims, CINTEnvVars *envs, dtype *cache); +void c2s_si_3c2e1_ssc(dtype *opijk, dtype *gctr, FINT *dims, CINTEnvVars *envs, dtype *cache); +void c2s_si_3c2e1i_ssc(dtype *opijk, dtype *gctr, FINT *dims, CINTEnvVars *envs, dtype *cache); + +void c2s_sph_3c1e(dtype *fijkl, dtype *gctr, FINT *dims, CINTEnvVars *envs, dtype *cache); +void c2s_cart_3c1e(dtype *fijkl, dtype *gctr, FINT *dims, CINTEnvVars *envs, dtype *cache); + +void c2s_dset0(dtype *out, FINT *dims, FINT *counts); +void c2s_zset0(dtype *out, FINT *dims, FINT *counts); +void c2s_grids_dset0(dtype *out, FINT *dims, FINT *counts); +void c2s_grids_zset0(dtype *out, FINT *dims, FINT *counts); + + +void c2s_sph_vec(dtype *sph, dtype *cart, FINT l, FINT nvec); + + + +#ifdef WITH_FORTRAN + +#define ALL_CINT_FORTRAN_(NAME) \ +FINT c##NAME##_sph_(dtype *out, FINT *shls, FINT *atm, FINT *natm, \ + FINT *bas, FINT *nbas, dtype *env, size_t optptr_as_integer8) { \ + CINTOpt **opt = (CINTOpt **)optptr_as_integer8; \ + return NAME##_sph(out, NULL, shls, \ + atm, *natm, bas, *nbas, env, *opt, NULL); \ +} \ +void c##NAME##_sph_optimizer_(size_t optptr_as_integer8, FINT *atm, FINT *natm, \ + FINT *bas, FINT *nbas, dtype *env) { \ + CINTOpt **opt = (CINTOpt **)optptr_as_integer8; \ + NAME##_optimizer(opt, atm, *natm, bas, *nbas, env); \ +} \ +FINT c##NAME##_cart_(dtype *out, FINT *shls, FINT *atm, FINT *natm, \ + FINT *bas, FINT *nbas, dtype *env, size_t optptr_as_integer8) { \ + CINTOpt **opt = (CINTOpt **)optptr_as_integer8; \ + return NAME##_cart(out, NULL, shls, \ + atm, *natm, bas, *nbas, env, *opt, NULL); \ +} \ +void c##NAME##_cart_optimizer_(CINTOpt **opt, FINT *atm, FINT *natm, \ + FINT *bas, FINT *nbas, dtype *env) { \ + NAME##_optimizer(opt, atm, *natm, bas, *nbas, env); \ +} \ +FINT c##NAME##_(dtype *out, FINT *shls, FINT *atm, FINT *natm, \ + FINT *bas, FINT *nbas, dtype *env, size_t optptr_as_integer8) { \ + CINTOpt **opt = (CINTOpt **)optptr_as_integer8; \ + return NAME##_spinor((dtype *)out, NULL, shls, \ + atm, *natm, bas, *nbas, env, *opt, NULL); \ +} \ +void c##NAME##_optimizer_(size_t optptr_as_integer8, FINT *atm, FINT *natm, \ + FINT *bas, FINT *nbas, dtype *env) { \ + CINTOpt **opt = (CINTOpt **)optptr_as_integer8; \ + NAME##_optimizer(opt, atm, *natm, bas, *nbas, env); \ +} + +#define ALL_CINT1E_FORTRAN_(NAME) \ +FINT c##NAME##_sph_(dtype *out, FINT *shls, FINT *atm, FINT *natm, \ + FINT *bas, FINT *nbas, dtype *env) { \ + return NAME##_sph(out, NULL, shls, atm, *natm, bas, *nbas, env, NULL, NULL); \ +} \ +FINT c##NAME##_cart_(dtype *out, FINT *shls, FINT *atm, FINT *natm, \ + FINT *bas, FINT *nbas, dtype *env) { \ + return NAME##_cart(out, NULL, shls, \ + atm, *natm, bas, *nbas, env, NULL, NULL); \ +} \ +FINT c##NAME##_(dtype *out, FINT *shls, FINT *atm, FINT *natm, \ + FINT *bas, FINT *nbas, dtype *env) { \ + return NAME##_spinor((dtype *)out, NULL, shls, \ + atm, *natm, bas, *nbas, env, NULL, NULL); \ +} + +#else + +#define ALL_CINT_FORTRAN_(NAME) +#define ALL_CINT1E_FORTRAN_(NAME) + +#endif + +#define PRIM2CTR0(ctrsymb, gp, ngp) \ + if (ctrsymb##_ctr > 1) {\ + if (*ctrsymb##empty) { \ + CINTprim_to_ctr_0(gctr##ctrsymb, gp, c##ctrsymb+ctrsymb##p, \ + ngp, ctrsymb##_prim, ctrsymb##_ctr, \ + non0ctr##ctrsymb[ctrsymb##p], \ + non0idx##ctrsymb+ctrsymb##p*ctrsymb##_ctr); \ + } else { \ + CINTprim_to_ctr_1(gctr##ctrsymb, gp, c##ctrsymb+ctrsymb##p, \ + ngp, ctrsymb##_prim, ctrsymb##_ctr, \ + non0ctr##ctrsymb[ctrsymb##p], \ + non0idx##ctrsymb+ctrsymb##p*ctrsymb##_ctr); \ + } \ + } \ + *ctrsymb##empty = 0 + +static void make_g1e_gout(dtype *gout, dtype *g, FINT *idx, CINTEnvVars *envs, FINT empty, FINT int1e_type); + +void CINTOpt_non0coeff_byshell(FINT *sortedidx, FINT *non0ctr, dtype *ci, FINT iprim, FINT ictr) { + FINT ip, j, k, kp; + //FINT zeroidx[ictr]; + FINT zeroidx[100]; + for (ip = 0; ip < iprim; ip++) { + for (j = 0, k = 0, kp = 0; j < ictr; j++) { + if (ci[iprim*j+ip] != 0) { + sortedidx[k] = j; + k++; + } else { + zeroidx[kp] = j; + kp++; + } + } + + for (j = 0; j < kp; j++) { + sortedidx[k+j] = zeroidx[j]; + } + non0ctr[ip] = k; + sortedidx += ictr; + } +} + +FINT CINT1e_loop(dtype *gctr, CINTEnvVars *envs, dtype *cache, FINT int1e_type) { + if (print) printf("inside CINT1e_loop\n"); + //printf("inside CINT1e_loop\n"); + + FINT *shls = envs->shls; + FINT *bas = envs->bas; + dtype *env = envs->env; + FINT i_sh = shls[0]; + FINT j_sh = shls[1]; + FINT i_ctr = envs->x_ctr[0]; + FINT j_ctr = envs->x_ctr[1]; + FINT i_prim = bas(NPRIM_OF, i_sh); + FINT j_prim = bas(NPRIM_OF, j_sh); + //printf("i_primt/j_prim, %d %d\n", i_prim, j_prim); + dtype *ai = env + bas(PTR_EXP, i_sh); + dtype *aj = env + bas(PTR_EXP, j_sh); + dtype *ci = env + bas(PTR_COEFF, i_sh); + dtype *cj = env + bas(PTR_COEFF, j_sh); + FINT n_comp = envs->ncomp_e1 * envs->ncomp_tensor; + + dtype expcutoff = envs->expcutoff; + dtype *log_maxcj; + PairData *pdata_ij; + //MALLOC_INSTACK(log_maxci, i_prim+j_prim); + //MALLOC_INSTACK(pdata_base, i_prim*j_prim); + MALLOC(dtype, log_maxci); + MALLOC(PairData, pdata_base); + log_maxcj = log_maxci + i_prim; + + + //if (print) printf("before opt_log_max_pgto\n"); + //printf("before opt_log_max_pgto\n"); + CINTOpt_log_max_pgto_coeff(log_maxci, ci, i_prim, i_ctr); + CINTOpt_log_max_pgto_coeff(log_maxcj, cj, j_prim, j_ctr); + //if (print) printf("after\n"); + //printf("after\n"); + + if (CINTset_pairdata(pdata_base, ai, aj, envs->ri, envs->rj, + log_maxci, log_maxcj, envs->li_ceil, envs->lj_ceil, + i_prim, j_prim, SQUARE(envs->rirj), expcutoff, env)) { + printf("inside CINTset_pairdata\n"); + return 0; + } + else{ + //printf("Not isnide CINTset_pairdat\n"); + + } + //printf("after CINset\n"); + + dtype fac1i, fac1j, expij; + FINT ip, jp; + FINT empty[4] = {1, 1, 1, 1}; + FINT *gempty = empty + 0; + FINT *iempty = empty + 1; + FINT *jempty = empty + 2; + dtype *rij; + //FINT *idx; + //MALLOC_INSTACK(idx, envs->nf * 3); + MALLOC(FINT, idx); + CINTg1e_index_xyz(idx, envs); + + FINT *non0idxi, *non0idxj; + //FINT *non0ctri, *non0ctrj; + //MALLOC_INSTACK(non0ctri, i_prim+j_prim+i_prim*i_ctr+j_prim*j_ctr); + FINT *non0ctrj; + MALLOC(FINT, non0ctri); + + non0ctrj = non0ctri + i_prim; + non0idxi = non0ctrj + j_prim; + non0idxj = non0idxi + i_prim*i_ctr; + CINTOpt_non0coeff_byshell(non0idxi, non0ctri, ci, i_prim, i_ctr); + CINTOpt_non0coeff_byshell(non0idxj, non0ctrj, cj, j_prim, j_ctr); + + const FINT nc = i_ctr * j_ctr; + + const FINT leng = envs->g_size * 3 * ((1<gbits)+1); + const FINT lenj = envs->nf * nc * n_comp; + const FINT leni = envs->nf * i_ctr * n_comp; + const FINT len0 = envs->nf * n_comp; + const FINT len = leng + lenj + leni + len0; + //dtype *g, *gout, *gctri, *gctrj; + //MALLOC_INSTACK(g, len); + dtype *gout, *gctri, *gctrj; + MALLOC(dtype, g); + dtype *g1 = g + leng; + if (n_comp == 1) { + gctrj = gctr; + } else { + gctrj = g1; + g1 += lenj; + } + if (j_ctr == 1) { + gctri = gctrj; + iempty = jempty; + } else { + gctri = g1; + g1 += leni; + } + if (i_ctr == 1) { + gout = gctri; + gempty = iempty; + } else { + gout = g1; + } + + dtype common_factor = envs->common_factor + * CINTcommon_fac_sp(envs->i_l) * CINTcommon_fac_sp(envs->j_l); + + + + pdata_ij = pdata_base; + for (jp = 0; jp < j_prim; jp++) { + envs->aj[0] = aj[jp]; + if (j_ctr == 1) { + fac1j = common_factor * cj[jp]; + } else { + fac1j = common_factor; + *iempty = 1; + } + for (ip = 0; ip < i_prim; ip++, pdata_ij++) { + //printf("[%d : %d]\n", jp, ip); + if (pdata_ij->cceij > expcutoff) { + continue; + } + envs->ai[0] = ai[ip]; + expij = pdata_ij->eij; + rij = pdata_ij->rij; + envs->rij[0] = rij[0]; + envs->rij[1] = rij[1]; + envs->rij[2] = rij[2]; + if (i_ctr == 1) { + fac1i = fac1j*ci[ip]*expij; + } else { + fac1i = fac1j*expij; + } + envs->fac[0] = fac1i; + //printf("before gout\n"); + make_g1e_gout(gout, g, idx, envs, *gempty, int1e_type); + PRIM2CTR0(i, gout, envs->nf*n_comp); + //printf("done iteration\n"); + + //for (int t = 0; t < 3; t++){ + // printf("%f ", gout[t]); + //} + //printf("\n"); + // all the same for ipnuc_sph here! + } + if (!*iempty) { + PRIM2CTR0(j, gctri, envs->nf*i_ctr*n_comp); + } + } + + //printf("ASDKLADKLAJDKLJSKDJASKLDJKLAJSDLKA\n"); + + if (n_comp > 1 && !*jempty) { + //printf("!!!!!!!!doing transpose!!!!!!!!!!\n"); + CINTdmat_transpose(gctr, gctrj, envs->nf*nc, n_comp); + } + else { + //printf("NOT DOING TRANSPOSE\n"); + } + + //printf("\n"); + + return !*jempty; +} + +CACHE_SIZE_T int1e_cache_size(CINTEnvVars *envs) +{ + FINT *shls = envs->shls; + FINT *bas = envs->bas; + FINT i_prim = bas(NPRIM_OF, shls[0]); + FINT j_prim = bas(NPRIM_OF, shls[1]); + FINT *x_ctr = envs->x_ctr; + FINT nc = envs->nf * x_ctr[0] * x_ctr[1]; + FINT n_comp = envs->ncomp_e1 * envs->ncomp_tensor; + FINT leng = envs->g_size*3*((1<gbits)+1); + FINT lenj = envs->nf * nc * n_comp; + FINT leni = envs->nf * x_ctr[0] * n_comp; + FINT len0 = envs->nf*n_comp; + FINT pdata_size = (i_prim*j_prim * 5 + + i_prim * x_ctr[0] + + j_prim * x_ctr[1] + +(i_prim+j_prim)*2 + envs->nf*3); + FINT cache_size = MAX(nc*n_comp + leng+lenj+leni+len0 + pdata_size, + nc*n_comp + envs->nf*8*OF_CMPLX); + return cache_size; +} + + +CACHE_SIZE_T CINT1e_drv(dtype *out, FINT *dims, CINTEnvVars *envs, + dtype *cache, void (*f_c2s)(dtype *opij, dtype *gctr, FINT *dims, CINTEnvVars *envs, dtype *cache), FINT int1e_type) +{ + if (print) printf("inside CINT1e_drv\n"); + + /*if (out == NULL) {// + printf("out null\n"); + //return 128; //int1e_cache_size(envs); + }*/ + FINT *x_ctr = envs->x_ctr; + FINT nc = envs->nf * x_ctr[0] * x_ctr[1]; + FINT n_comp = envs->ncomp_e1 * envs->ncomp_tensor; + //dtype *stack = NULL; + MALLOC(dtype, stack); + /*if (cache == NULL) { + size_t cache_size = 128;//int1e_cache_size(envs); + #ifdef __cplusplus + //stack = new dtype[10000]; + #else + stack = malloc(sizeof(dtype)*cache_size); + #endif + cache = stack; + }*/ + //dtype *gctr; + //MALLOC_INSTACK(gctr, nc*n_comp); + MALLOC(dtype, gctr); + + if (print) printf("before CINt1e_loop\n"); + FINT has_value = CINT1e_loop(gctr, envs, cache, int1e_type); + if (print) printf("after CINT1e_loop\n"); + + + /*printf("\t"); + for (int i = 0; i < 12; i++){ + printf("%f ", gctr[i]); + } + printf("\n");*/ + + + FINT counts[4]; + if (dims == NULL) { + dims = counts; + } + if (f_c2s == &c2s_sph_1e) { + counts[0] = (envs->i_l*2+1) * x_ctr[0]; + counts[1] = (envs->j_l*2+1) * x_ctr[1]; + } else if (f_c2s == &c2s_cart_1e) { + counts[0] = envs->nfi * x_ctr[0]; + counts[1] = envs->nfj * x_ctr[1]; + } + counts[2] = 1; + counts[3] = 1; + FINT nout = dims[0] * dims[1]; + FINT n; + if (print) printf("before c2s_dset0\n"); + if (has_value) { + for (n = 0; n < n_comp; n++) { + (*f_c2s)(out+nout*n, gctr+nc*n, dims, envs, cache); + } + } else { + for (n = 0; n < n_comp; n++) { + c2s_dset0(out+nout*n, dims, counts); + } + } + + + + /*if (stack != NULL) { + + //free(stack); + }*/ + if (print) printf("return cint1e_drv\n"); + return has_value; +} + +CACHE_SIZE_T CINT1e_spinor_drv(dtype *out, FINT *dims, CINTEnvVars *envs, + dtype *cache, void (*f_c2s)(dtype *opij, dtype *gctr, FINT *dims, CINTEnvVars *envs, dtype *cache), FINT int1e_type) +{ + return 0; // todo + if (out == NULL) { + return int1e_cache_size(envs); + } + FINT *x_ctr = envs->x_ctr; + FINT nc = envs->nf * x_ctr[0] * x_ctr[1] * envs->ncomp_e1; + dtype *stack = NULL; + if (cache == NULL) { + size_t cache_size = int1e_cache_size(envs); + #ifdef __cplusplus + stack = new dtype[10000]; + #else + stack = malloc(sizeof(dtype)*cache_size); + #endif + cache = stack; + } + dtype *gctr; + MALLOC_INSTACK(gctr, nc*envs->ncomp_tensor); + + FINT has_value = CINT1e_loop(gctr, envs, cache, int1e_type); + + FINT counts[4]; + if (dims == NULL) { + dims = counts; + } + counts[0] = CINTcgto_spinor(envs->shls[0], envs->bas); + counts[1] = CINTcgto_spinor(envs->shls[1], envs->bas); + counts[2] = 1; + counts[3] = 1; + FINT nout = dims[0] * dims[1]; + FINT n; + if (has_value) { + for (n = 0; n < envs->ncomp_tensor; n++) { + (*f_c2s)(out+nout*n, gctr+nc*n, dims, envs, cache); + } + } else { + for (n = 0; n < envs->ncomp_tensor; n++) { + c2s_zset0(out+nout*n, dims, counts); + } + } + + if (stack != NULL) { + //free(stack); + } + return has_value; +} + + +void CINTgout1e(dtype *gout, dtype *g, FINT *idx, CINTEnvVars *envs, FINT empty) +{ + FINT nf = envs->nf; + FINT n, ix, iy, iz; + if (empty) { + for (n = 0; n < nf; n++) { + ix = idx[n*3+0]; + iy = idx[n*3+1]; + iz = idx[n*3+2]; + gout[n] = g[ix] * g[iy] * g[iz]; + } + } else { + for (n = 0; n < nf; n++) { + ix = idx[n*3+0]; + iy = idx[n*3+1]; + iz = idx[n*3+2]; + gout[n] += g[ix] * g[iy] * g[iz]; + } + } +} + +void CINTgout1e_nuc(dtype *gout, dtype *g, FINT *idx, CINTEnvVars *envs, FINT empty) +{ + FINT nf = envs->nf; + FINT nrys_roots = envs->nrys_roots; + FINT n, i; + dtype *gx, *gy, *gz; + dtype s; + + if (empty) { + for (n = 0; n < nf; n++) { + gx = g + idx[n*3+0]; + gy = g + idx[n*3+1]; + gz = g + idx[n*3+2]; + s = 0; + for (i = 0; i < nrys_roots; i++) { + s += gx[i] * gy[i] * gz[i]; + } + gout[n] = s; + } + } else { + for (n = 0; n < nf; n++) { + gx = g + idx[n*3+0]; + gy = g + idx[n*3+1]; + gz = g + idx[n*3+2]; + s = 0; + for (i = 0; i < nrys_roots; i++) { + s += gx[i] * gy[i] * gz[i]; + } + gout[n] += s; + } + } +} + +CACHE_SIZE_T int1e_ovlp_sph(dtype *out, FINT *dims, FINT *shls, FINT *atm, FINT natm, + FINT *bas, FINT nbas, dtype *env, CINTOpt *opt, dtype *cache) +{ + + WHICH_INTEGRAL = INT1E_OVLP; + FINT ng[] = {0, 0, 0, 0, 0, 1, 1, 1}; + CINTEnvVars envs; + CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env); + #ifdef __cplusplus + envs.f_gout = (void (*)(...))&CINTgout1e; + #else + envs.f_gout = &CINTgout1e; + #endif + return CINT1e_drv(out, dims, &envs, cache, &c2s_sph_1e, 0); +} + +CACHE_SIZE_T int1e_ovlp_cart(dtype *out, FINT *dims, FINT *shls, FINT *atm, FINT natm, + FINT *bas, FINT nbas, dtype *env, CINTOpt *opt, dtype *cache) +{ + FINT ng[] = {0, 0, 0, 0, 0, 1, 1, 1}; + CINTEnvVars envs; + CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env); + #ifdef __cplusplus + envs.f_gout = (void (*)(...))&CINTgout1e; + #else + envs.f_gout = &CINTgout1e; + #endif + return CINT1e_drv(out, dims, &envs, cache, &c2s_cart_1e, 0); +} + +CACHE_SIZE_T int1e_ovlp_spinor(dtype *out, FINT *dims, FINT *shls, FINT *atm, FINT natm, + FINT *bas, FINT nbas, dtype *env, CINTOpt *opt, dtype *cache) +{ + FINT ng[] = {0, 0, 0, 0, 0, 1, 1, 1}; + CINTEnvVars envs; + CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env); + #ifdef __cplusplus + envs.f_gout = (void (*)(...))&CINTgout1e; + #else + envs.f_gout = &CINTgout1e; + #endif + return CINT1e_spinor_drv(out, dims, &envs, cache, &c2s_sf_1e, 0); +} + +void int1e_ovlp_optimizer(CINTOpt **opt, FINT *atm, FINT natm, + FINT *bas, FINT nbas, dtype *env) +{ + *opt = NULL; +} + +CACHE_SIZE_T int1e_nuc_sph(dtype *out, FINT *dims, FINT *shls, FINT *atm, FINT natm, + FINT *bas, FINT nbas, dtype *env, CINTOpt *opt, dtype *cache) +{ + WHICH_INTEGRAL = INT1E_NUC; + FINT ng[] = {0, 0, 0, 0, 0, 1, 0, 1}; + CINTEnvVars envs; + CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env); + #ifdef __cplusplus + envs.f_gout = (void (*)(...))&CINTgout1e_nuc; + #else + envs.f_gout = &CINTgout1e_nuc; + #endif + return CINT1e_drv(out, dims, &envs, cache, &c2s_sph_1e, 2); +} + +CACHE_SIZE_T int1e_nuc_cart(dtype *out, FINT *dims, FINT *shls, FINT *atm, FINT natm, + FINT *bas, FINT nbas, dtype *env, CINTOpt *opt, dtype *cache) +{ + FINT ng[] = {0, 0, 0, 0, 0, 1, 0, 1}; + CINTEnvVars envs; + CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env); + #ifdef __cplusplus + envs.f_gout = (void (*)(...))&CINTgout1e_nuc; + #else + envs.f_gout = &CINTgout1e_nuc; + #endif + return CINT1e_drv(out, dims, &envs, cache, &c2s_cart_1e, 2); +} + +CACHE_SIZE_T int1e_nuc_spinor(dtype *out, FINT *dims, FINT *shls, FINT *atm, FINT natm, + FINT *bas, FINT nbas, dtype *env, CINTOpt *opt, dtype *cache) +{ + FINT ng[] = {0, 0, 0, 0, 0, 1, 0, 1}; + CINTEnvVars envs; + CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env); + #ifdef __cplusplus + envs.f_gout = (void (*)(...))&CINTgout1e_nuc; + #else + envs.f_gout = &CINTgout1e_nuc; + #endif + return CINT1e_spinor_drv(out, dims, &envs, cache, &c2s_sf_1e, 2); +} + +void int1e_nuc_optimizer(CINTOpt **opt, FINT *atm, FINT natm, + FINT *bas, FINT nbas, dtype *env) +{ + *opt = NULL; +} + +ALL_CINT(int1e_ovlp); +ALL_CINT(int1e_nuc); +ALL_CINT_FORTRAN_(int1e_ovlp); +ALL_CINT_FORTRAN_(int1e_nuc); + + + + +#include +//#include + +void CINTinit_int1e_grids_EnvVars(CINTEnvVars *envs, FINT *ng, FINT *shls, + FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env); + +FINT CINTg0_1e_grids(dtype *g, dtype cutoff, + CINTEnvVars *envs, dtype *cache, dtype *gridsT); + +void CINTgout1e_grids(dtype *gout, dtype *g, FINT *idx, + CINTEnvVars *envs, FINT gout_empty); + +void CINTnabla1i_grids(dtype *f, dtype *g, + FINT li, FINT lj, CINTEnvVars *envs); + +void CINTnabla1j_grids(dtype *f, dtype *g, + FINT li, FINT lj, CINTEnvVars *envs); + +void CINTx1i_grids(dtype *f, dtype *g, dtype *ri, + FINT li, FINT lj, CINTEnvVars *envs); + +void CINTx1j_grids(dtype *f, dtype *g, dtype *rj, + FINT li, FINT lj, CINTEnvVars *envs); + +#define G1E_GRIDS_D_I(f, g, li, lj) CINTnabla1i_grids(f, g, li, lj, envs) +#define G1E_GRIDS_D_J(f, g, li, lj) CINTnabla1j_grids(f, g, li, lj, envs) + +#define G1E_GRIDS_R0I(f, g, li, lj) CINTx1i_grids(f, g, ri, li, lj, envs) +#define G1E_GRIDS_R0J(f, g, li, lj) CINTx1j_grids(f, g, rj, li, lj, envs) + +#define G1E_GRIDS_RCI(f, g, li, lj) CINTx1i_grids(f, g, dri, li, lj, envs) +#define G1E_GRIDS_RCJ(f, g, li, lj) CINTx1j_grids(f, g, drj, li, lj, envs) + +#define G1E_GRIDS_R_I(f, g, li, lj) f = g + envs->g_stride_i +#define G1E_GRIDS_R_J(f, g, li, lj) f = g + envs->g_stride_j + + + +#ifndef HAVE_RYS2E +#define HAVE_RYS2E +typedef struct { + dtype c00x[MXRYSROOTS]; + dtype c00y[MXRYSROOTS]; + dtype c00z[MXRYSROOTS]; + dtype c0px[MXRYSROOTS]; + dtype c0py[MXRYSROOTS]; + dtype c0pz[MXRYSROOTS]; + dtype b01[MXRYSROOTS]; + dtype b00[MXRYSROOTS]; + dtype b10[MXRYSROOTS]; +} Rys2eT; +#endif + +void CINTg2e_index_xyz(FINT *idx, const CINTEnvVars *envs); + +void CINTinit_int2e_EnvVars(CINTEnvVars *envs, FINT *ng, FINT *shls, + FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env); +void CINTinit_int3c2e_EnvVars(CINTEnvVars *envs, FINT *ng, FINT *shls, FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env){}; +void CINTinit_int2c2e_EnvVars(CINTEnvVars *envs, FINT *ng, FINT *shls, FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env){}; + +FINT CINTg0_2e(dtype *g, dtype *rij, dtype *rkl, dtype cutoff, CINTEnvVars *envs); +void CINTg0_2e_2d(dtype *g, Rys2eT *bc, CINTEnvVars *envs); +void CINTg0_2e_2d4d_unrolled(dtype *g, Rys2eT *bc, CINTEnvVars *envs); +void CINTsrg0_2e_2d4d_unrolled(dtype *g, Rys2eT *bc, CINTEnvVars *envs); +void CINTg0_2e_lj2d4d(dtype *g, Rys2eT *bc, CINTEnvVars *envs); +void CINTg0_2e_kj2d4d(dtype *g, Rys2eT *bc, CINTEnvVars *envs); +void CINTg0_2e_il2d4d(dtype *g, Rys2eT *bc, CINTEnvVars *envs); +void CINTg0_2e_ik2d4d(dtype *g, Rys2eT *bc, CINTEnvVars *envs); + +void CINTg0_lj2d_4d(dtype *g, CINTEnvVars *envs); +void CINTg0_kj2d_4d(dtype *g, CINTEnvVars *envs); +void CINTg0_il2d_4d(dtype *g, CINTEnvVars *envs); +void CINTg0_ik2d_4d(dtype *g, CINTEnvVars *envs); + +void CINTnabla1i_2e(dtype *f, const dtype *g, + const FINT li, const FINT lj, const FINT lk, const FINT ll, + const CINTEnvVars *envs); + +void CINTnabla1j_2e(dtype *f, const dtype *g, + const FINT li, const FINT lj, const FINT lk, const FINT ll, + const CINTEnvVars *envs); + +void CINTnabla1k_2e(dtype *f, const dtype *g, + const FINT li, const FINT lj, const FINT lk, const FINT ll, + const CINTEnvVars *envs); + +void CINTnabla1l_2e(dtype *f, const dtype *g, + const FINT li, const FINT lj, const FINT lk, const FINT ll, + const CINTEnvVars *envs); + +void CINTx1i_2e(dtype *f, const dtype *g, const dtype *ri, + const FINT li, const FINT lj, const FINT lk, const FINT ll, + const CINTEnvVars *envs); + +void CINTx1j_2e(dtype *f, const dtype *g, const dtype *rj, + const FINT li, const FINT lj, const FINT lk, const FINT ll, + const CINTEnvVars *envs); + +void CINTx1k_2e(dtype *f, const dtype *g, const dtype *rk, + const FINT li, const FINT lj, const FINT lk, const FINT ll, + const CINTEnvVars *envs); + +void CINTx1l_2e(dtype *f, const dtype *g, const dtype *rl, + const FINT li, const FINT lj, const FINT lk, const FINT ll, + const CINTEnvVars *envs); + +#ifdef WITH_F12 +void CINTinit_int2e_stg_EnvVars(CINTEnvVars *envs, FINT *ng, FINT *shls, + FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env); +void CINTinit_int2e_yp_EnvVars(CINTEnvVars *envs, FINT *ng, FINT *shls, + FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env); +#endif + +#define G2E_D_I(f, g, li, lj, lk, ll) CINTnabla1i_2e(f, g, li, lj, lk, ll, envs) +#define G2E_D_J(f, g, li, lj, lk, ll) CINTnabla1j_2e(f, g, li, lj, lk, ll, envs) +#define G2E_D_K(f, g, li, lj, lk, ll) CINTnabla1k_2e(f, g, li, lj, lk, ll, envs) +#define G2E_D_L(f, g, li, lj, lk, ll) CINTnabla1l_2e(f, g, li, lj, lk, ll, envs) + +#define G2E_R0I(f, g, li, lj, lk, ll) CINTx1i_2e(f, g, envs->ri, li, lj, lk, ll, envs) +#define G2E_R0J(f, g, li, lj, lk, ll) CINTx1j_2e(f, g, envs->rj, li, lj, lk, ll, envs) +#define G2E_R0K(f, g, li, lj, lk, ll) CINTx1k_2e(f, g, envs->rk, li, lj, lk, ll, envs) +#define G2E_R0L(f, g, li, lj, lk, ll) CINTx1l_2e(f, g, envs->rl, li, lj, lk, ll, envs) + +#define G2E_RCI(f, g, li, lj, lk, ll) CINTx1i_2e(f, g, dri, li, lj, lk, ll, envs) +#define G2E_RCJ(f, g, li, lj, lk, ll) CINTx1j_2e(f, g, drj, li, lj, lk, ll, envs) +#define G2E_RCK(f, g, li, lj, lk, ll) CINTx1k_2e(f, g, drk, li, lj, lk, ll, envs) +#define G2E_RCL(f, g, li, lj, lk, ll) CINTx1l_2e(f, g, drl, li, lj, lk, ll, envs) + +#define G2E_R_I(f, g, li, lj, lk, ll) f = g + envs->g_stride_i +#define G2E_R_K(f, g, li, lj, lk, ll) f = g + envs->g_stride_k +#define G2E_R_L(f, g, li, lj, lk, ll) f = g + envs->g_stride_l +#define G2E_R_J(f, g, li, lj, lk, ll) f = g + envs->g_stride_j + + + +//#include + +void CINTgout2e(dtype *g, dtype *gout, FINT *idx, CINTEnvVars *envs, FINT gout_empty); + +FINT CINT2e_loop(dtype *gctr, CINTEnvVars *envs, dtype *cache, FINT *empty); + +CACHE_SIZE_T CINT2e_drv(dtype *out, FINT *dims, CINTEnvVars *envs, CINTOpt *opt, + dtype *cache);//, void (*f_c2s)(dtype *opij, dtype *gctr, FINT *dims, CINTEnvVars *envs, dtype *cache)); +#ifdef __cplusplus +CACHE_SIZE_T CINT2e_spinor_drv(dtype *out, FINT *dims, CINTEnvVars *envs, CINTOpt *opt, + dtype *cache, void (*f_e1_c2s)(...), void (*f_e2_c2s)(...)); +CACHE_SIZE_T CINT3c2e_drv(dtype *out, FINT *dims, CINTEnvVars *envs, CINTOpt *opt, + dtype *cache, void (*f_e1_c2s)(...), FINT is_ssc); +CACHE_SIZE_T CINT3c2e_spinor_drv(dtype *out, FINT *dims, CINTEnvVars *envs, CINTOpt *opt, + dtype *cache, void (*f_e1_c2s)(...), FINT is_ssc); +#else +CACHE_SIZE_T CINT2e_spinor_drv(dtype *out, FINT *dims, CINTEnvVars *envs, CINTOpt *opt, + dtype *cache, void (*f_e1_c2s)(), void (*f_e2_c2s)()); +CACHE_SIZE_T CINT3c2e_drv(dtype *out, FINT *dims, CINTEnvVars *envs, CINTOpt *opt, + dtype *cache, void (*f_e1_c2s)(), FINT is_ssc); +CACHE_SIZE_T CINT3c2e_spinor_drv(dtype *out, FINT *dims, CINTEnvVars *envs, CINTOpt *opt, + dtype *cache, void (*f_e1_c2s)(), FINT is_ssc); +#endif +CACHE_SIZE_T CINT2c2e_drv(dtype *out, FINT *dims, CINTEnvVars *envs, CINTOpt *opt, + dtype *cache, void (*f_c2s)(dtype *opij, dtype *gctr, FINT *dims, CINTEnvVars *envs, dtype *cache)); + + + +#ifdef __cplusplus +CACHE_SIZE_T CINT2c2e_spinor_drv(dtype *out, FINT *dims, CINTEnvVars *envs, CINTOpt *opt, + dtype *cache, void (*f_e1_c2s)(...)); +#else +CACHE_SIZE_T CINT2c2e_spinor_drv(dtype *out, FINT *dims, CINTEnvVars *envs, CINTOpt *opt, + dtype *cache, void (*f_e1_c2s)()); +#endif + + +void CINTgout1e_int1e_kin(dtype *gout, dtype *g, FINT *idx, CINTEnvVars *envs, FINT gout_empty) { + if (print) printf("inside fgout\n"); + if (print) printf("envs-> nf %d\n", envs->nf); + //printf("inside fgout\n"); + FINT nf = envs->nf; + //printf("a\n"); + if (print) printf("got nf\n"); + FINT ix, iy, iz, n; + if (print) printf("engs->g-size, %d", envs->g_size); + //printf("a\n"); + dtype *g0 = g; + dtype *g1 = g0 + envs->g_size * 3; + dtype *g2 = g1 + envs->g_size * 3; + dtype *g3 = g2 + envs->g_size * 3; + dtype s[9]; + //printf("a\n"); + if (print) printf("before g1e_d_j\n"); + G1E_D_J(g1, g0, envs->i_l+0, envs->j_l+0, 0); + G1E_D_J(g2, g0, envs->i_l+0, envs->j_l+1, 0); + G1E_D_J(g3, g2, envs->i_l+0, envs->j_l+0, 0); + + //CINTnabla1j_1e(f, g, li, lj, lk, envs) + //CINTnabla1j_1e(g1, g0, envs->i_l+0, envs->j_l+0, 0, envs); + ///CINTnabla1j_1e(g2, g0, envs->i_l+0, envs->j_l+1, 0, envs); + //CINTnabla1j_1e(g3, g2, envs->i_l+0, envs->j_l+0, 0, envs); + + if (print) printf("for loop\n"); + + for (n = 0; n < nf; n++) { + ix = idx[0+n*3]; + iy = idx[1+n*3]; + iz = idx[2+n*3]; + s[0] = + g3[ix+0]*g0[iy+0]*g0[iz+0]; + s[1] = + g2[ix+0]*g1[iy+0]*g0[iz+0]; + s[2] = + g2[ix+0]*g0[iy+0]*g1[iz+0]; + s[3] = + g1[ix+0]*g2[iy+0]*g0[iz+0]; + s[4] = + g0[ix+0]*g3[iy+0]*g0[iz+0]; + s[5] = + g0[ix+0]*g2[iy+0]*g1[iz+0]; + s[6] = + g1[ix+0]*g0[iy+0]*g2[iz+0]; + s[7] = + g0[ix+0]*g1[iy+0]*g2[iz+0]; + s[8] = + g0[ix+0]*g0[iy+0]*g3[iz+0]; + + if (gout_empty) { + gout[n*1+0] = - s[0] - s[4] - s[8]; + } else { + gout[n*1+0] += - s[0] - s[4] - s[8]; + } + } + if (print) printf("done fgout\n"); +} + +void int1e_kin_optimizer(CINTOpt **opt, FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env) { +FINT ng[] = {0, 2, 0, 0, 2, 1, 1, 1}; +CINTall_1e_optimizer(opt, ng, atm, natm, bas, nbas, env); +} +CACHE_SIZE_T int1e_kin_cart(dtype *out, FINT *dims, FINT *shls, +FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env, CINTOpt *opt, dtype *cache) { +FINT ng[] = {0, 2, 0, 0, 2, 1, 1, 1}; +CINTEnvVars envs; +CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env); +#ifdef __cplusplus +envs.f_gout = (void (*)(...))&CINTgout1e_int1e_kin; +#else +envs.f_gout = &CINTgout1e_int1e_kin; +#endif +envs.common_factor *= 0.5; +return CINT1e_drv(out, dims, &envs, cache, &c2s_cart_1e, 0); +} +CACHE_SIZE_T int1e_kin_sph(dtype *out, FINT *dims, FINT *shls, FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env, +CINTOpt *opt, dtype *cache) { + + WHICH_INTEGRAL = INT1E_KIN; + if (print) printf("int1e_kin_sph>\n"); + //printf("shls %d %d \n", shls[0], shls[1]); + //int shls[] = {0, 0}; + FINT ng[] = {0, 2, 0, 0, 2, 1, 1, 1}; + CINTEnvVars envs; + CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env); + if (print) printf("int1e_kin_sph> post init env\n"); + + #ifdef __cplusplus + if (print) printf("before gout\n"); + envs.f_gout = (void (*)(...))&CINTgout1e_int1e_kin; + //f_gout = CINTgout1e_int1e_kin; + + if (print) printf("after gout \n"); + #else + envs.f_gout = &CINTgout1e_int1e_kin; + #endif + + if (print) printf("\n\n\ncommon_factor %f\n\n\n", envs.common_factor); + envs.common_factor *= 0.5; + if (print) printf("Calling cint1e_drv\n"); + return CINT1e_drv(out, dims, &envs, cache, &c2s_sph_1e, 0); +} +CACHE_SIZE_T int1e_kin_spinor(dtype *out, FINT *dims, FINT *shls, +FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env, CINTOpt *opt, dtype *cache) { +FINT ng[] = {0, 2, 0, 0, 2, 1, 1, 1}; +CINTEnvVars envs; +CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env); +#ifdef __cplusplus +envs.f_gout = (void (*)(...))&CINTgout1e_int1e_kin; +#else +envs.f_gout = &CINTgout1e_int1e_kin; +#endif +envs.common_factor *= 0.5; +return CINT1e_spinor_drv(out, dims, &envs, cache, &c2s_sf_1e, 0); +} +ALL_CINT1E(int1e_kin) +ALL_CINT1E_FORTRAN_(int1e_kin) + +void CINTgout1e_int1e_ia01p(dtype *gout, dtype *g, FINT *idx, CINTEnvVars *envs, FINT gout_empty) { +FINT nf = envs->nf; +FINT nrys_roots = envs->nrys_roots; +FINT ix, iy, iz, n, i; +dtype *g0 = g; +dtype *g1 = g0 + envs->g_size * 3; +dtype *g2 = g1 + envs->g_size * 3; +dtype *g3 = g2 + envs->g_size * 3; +G2E_D_J(g1, g0, envs->i_l+0, envs->j_l+0, 0, 0); +G2E_D_J(g2, g0, envs->i_l+0, envs->j_l+1, 0, 0); +G2E_D_I(g3, g0, envs->i_l+0, envs->j_l+1, 0, 0); +for (ix = 0; ix < envs->g_size * 3; ix++) {g2[ix] += g3[ix];} +G2E_D_J(g3, g2, envs->i_l+0, envs->j_l+0, 0, 0); +dtype s[9]; +for (n = 0; n < nf; n++) { +ix = idx[0+n*3]; +iy = idx[1+n*3]; +iz = idx[2+n*3]; +for (i = 0; i < 9; i++) { s[i] = 0; } +for (i = 0; i < nrys_roots; i++) { +s[0] += g3[ix+i] * g0[iy+i] * g0[iz+i]; +s[1] += g2[ix+i] * g1[iy+i] * g0[iz+i]; +s[2] += g2[ix+i] * g0[iy+i] * g1[iz+i]; +s[3] += g1[ix+i] * g2[iy+i] * g0[iz+i]; +s[4] += g0[ix+i] * g3[iy+i] * g0[iz+i]; +s[5] += g0[ix+i] * g2[iy+i] * g1[iz+i]; +s[6] += g1[ix+i] * g0[iy+i] * g2[iz+i]; +s[7] += g0[ix+i] * g1[iy+i] * g2[iz+i]; +s[8] += g0[ix+i] * g0[iy+i] * g3[iz+i]; +} +if (gout_empty) { +gout[n*3+0] = + s[5] - s[7]; +gout[n*3+1] = + s[6] - s[2]; +gout[n*3+2] = + s[1] - s[3]; +} else { +gout[n*3+0] += + s[5] - s[7]; +gout[n*3+1] += + s[6] - s[2]; +gout[n*3+2] += + s[1] - s[3]; +}}} +void int1e_ia01p_optimizer(CINTOpt **opt, FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env) { +FINT ng[] = {1, 2, 0, 0, 2, 1, 0, 3}; +CINTall_1e_optimizer(opt, ng, atm, natm, bas, nbas, env); +} +CACHE_SIZE_T int1e_ia01p_cart(dtype *out, FINT *dims, FINT *shls, +FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env, CINTOpt *opt, dtype *cache) { +FINT ng[] = {1, 2, 0, 0, 2, 1, 0, 3}; +CINTEnvVars envs; +CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env); +#ifdef __cplusplus +envs.f_gout = (void (*)(...))&CINTgout1e_int1e_ia01p; +#else +#endif +return CINT1e_drv(out, dims, &envs, cache, &c2s_cart_1e, 1); +} +CACHE_SIZE_T int1e_ia01p_sph(dtype *out, FINT *dims, FINT *shls, +FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env, CINTOpt *opt, dtype *cache) { +FINT ng[] = {1, 2, 0, 0, 2, 1, 0, 3}; +CINTEnvVars envs; +CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env); +#ifdef __cplusplus +envs.f_gout = (void (*)(...))&CINTgout1e_int1e_ia01p; +#else +envs.f_gout = &CINTgout1e_int1e_ia01p; +#endif + +return CINT1e_drv(out, dims, &envs, cache, &c2s_sph_1e, 1); +} +/*CACHE_SIZE_T int1e_ia01p_spinor(dtype *out, FINT *dims, FINT *shls, +FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env, CINTOpt *opt, dtype *cache) { +FINT ng[] = {1, 2, 0, 0, 2, 1, 0, 3}; +CINTEnvVars envs; +CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env); +envs.f_gout = &CINTgout1e_int1e_ia01p; +return CINT1e_spinor_drv(out, dims, &envs, cache, &c2s_sf_1e, 1); +} +ALL_CINT1E(int1e_ia01p) +ALL_CINT1E_FORTRAN_(int1e_ia01p) + +void CINTgout1e_int1e_giao_irjxp(dtype *gout, dtype *g, FINT *idx, CINTEnvVars *envs, FINT gout_empty) { +FINT nf = envs->nf; +FINT ix, iy, iz, n; +dtype *g0 = g; +dtype *g1 = g0 + envs->g_size * 3; +dtype *g2 = g1 + envs->g_size * 3; +dtype *g3 = g2 + envs->g_size * 3; +dtype s[9]; +G1E_D_J(g1, g0, envs->i_l+0, envs->j_l+0, 0); +G1E_R_J(g2, g0, envs->i_l+0, envs->j_l+1, 0); +G1E_D_J(g3, g2, envs->i_l+0, envs->j_l+0, 0); +for (n = 0; n < nf; n++) { +ix = idx[0+n*3]; +iy = idx[1+n*3]; +iz = idx[2+n*3]; +s[0] = + g3[ix+0]*g0[iy+0]*g0[iz+0]; +s[1] = + g2[ix+0]*g1[iy+0]*g0[iz+0]; +s[2] = + g2[ix+0]*g0[iy+0]*g1[iz+0]; +s[3] = + g1[ix+0]*g2[iy+0]*g0[iz+0]; +s[4] = + g0[ix+0]*g3[iy+0]*g0[iz+0]; +s[5] = + g0[ix+0]*g2[iy+0]*g1[iz+0]; +s[6] = + g1[ix+0]*g0[iy+0]*g2[iz+0]; +s[7] = + g0[ix+0]*g1[iy+0]*g2[iz+0]; +s[8] = + g0[ix+0]*g0[iy+0]*g3[iz+0]; +if (gout_empty) { +gout[n*3+0] = + s[5] - s[7]; +gout[n*3+1] = + s[6] - s[2]; +gout[n*3+2] = + s[1] - s[3]; +} else { +gout[n*3+0] += + s[5] - s[7]; +gout[n*3+1] += + s[6] - s[2]; +gout[n*3+2] += + s[1] - s[3]; +}}} +void int1e_giao_irjxp_optimizer(CINTOpt **opt, FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env) { +FINT ng[] = {0, 2, 0, 0, 2, 1, 1, 3}; +CINTall_1e_optimizer(opt, ng, atm, natm, bas, nbas, env); +} +CACHE_SIZE_T int1e_giao_irjxp_cart(dtype *out, FINT *dims, FINT *shls, +FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env, CINTOpt *opt, dtype *cache) { +FINT ng[] = {0, 2, 0, 0, 2, 1, 1, 3}; +CINTEnvVars envs; +CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env); +envs.f_gout = &CINTgout1e_int1e_giao_irjxp; +return CINT1e_drv(out, dims, &envs, cache, &c2s_cart_1e, 0); +} +CACHE_SIZE_T int1e_giao_irjxp_sph(dtype *out, FINT *dims, FINT *shls, +FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env, CINTOpt *opt, dtype *cache) { +FINT ng[] = {0, 2, 0, 0, 2, 1, 1, 3}; +CINTEnvVars envs; +CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env); +envs.f_gout = &CINTgout1e_int1e_giao_irjxp; +return CINT1e_drv(out, dims, &envs, cache, &c2s_sph_1e, 0); +} +CACHE_SIZE_T int1e_giao_irjxp_spinor(dtype *out, FINT *dims, FINT *shls, +FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env, CINTOpt *opt, dtype *cache) { +FINT ng[] = {0, 2, 0, 0, 2, 1, 1, 3}; +CINTEnvVars envs; +CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env); +envs.f_gout = &CINTgout1e_int1e_giao_irjxp; +return CINT1e_spinor_drv(out, dims, &envs, cache, &c2s_sf_1e, 0); +} +ALL_CINT1E(int1e_giao_irjxp) +ALL_CINT1E_FORTRAN_(int1e_giao_irjxp) + +void CINTgout1e_int1e_cg_irxp(dtype *gout, dtype *g, FINT *idx, CINTEnvVars *envs, FINT gout_empty) { +FINT nf = envs->nf; +FINT ix, iy, iz, n; +dtype *g0 = g; +dtype *g1 = g0 + envs->g_size * 3; +dtype *g2 = g1 + envs->g_size * 3; +dtype *g3 = g2 + envs->g_size * 3; +dtype drj[3]; +drj[0] = envs->rj[0] - envs->env[PTR_COMMON_ORIG+0]; +drj[1] = envs->rj[1] - envs->env[PTR_COMMON_ORIG+1]; +drj[2] = envs->rj[2] - envs->env[PTR_COMMON_ORIG+2]; +dtype s[9]; +G1E_D_J(g1, g0, envs->i_l+0, envs->j_l+0, 0); +G1E_RCJ(g2, g0, envs->i_l+0, envs->j_l+1, 0); +G1E_D_J(g3, g2, envs->i_l+0, envs->j_l+0, 0); +for (n = 0; n < nf; n++) { +ix = idx[0+n*3]; +iy = idx[1+n*3]; +iz = idx[2+n*3]; +s[0] = + g3[ix+0]*g0[iy+0]*g0[iz+0]; +s[1] = + g2[ix+0]*g1[iy+0]*g0[iz+0]; +s[2] = + g2[ix+0]*g0[iy+0]*g1[iz+0]; +s[3] = + g1[ix+0]*g2[iy+0]*g0[iz+0]; +s[4] = + g0[ix+0]*g3[iy+0]*g0[iz+0]; +s[5] = + g0[ix+0]*g2[iy+0]*g1[iz+0]; +s[6] = + g1[ix+0]*g0[iy+0]*g2[iz+0]; +s[7] = + g0[ix+0]*g1[iy+0]*g2[iz+0]; +s[8] = + g0[ix+0]*g0[iy+0]*g3[iz+0]; +if (gout_empty) { +gout[n*3+0] = + s[5] - s[7]; +gout[n*3+1] = + s[6] - s[2]; +gout[n*3+2] = + s[1] - s[3]; +} else { +gout[n*3+0] += + s[5] - s[7]; +gout[n*3+1] += + s[6] - s[2]; +gout[n*3+2] += + s[1] - s[3]; +}}} +void int1e_cg_irxp_optimizer(CINTOpt **opt, FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env) { +FINT ng[] = {0, 2, 0, 0, 2, 1, 1, 3}; +CINTall_1e_optimizer(opt, ng, atm, natm, bas, nbas, env); +} +CACHE_SIZE_T int1e_cg_irxp_cart(dtype *out, FINT *dims, FINT *shls, +FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env, CINTOpt *opt, dtype *cache) { +FINT ng[] = {0, 2, 0, 0, 2, 1, 1, 3}; +CINTEnvVars envs; +CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env); +envs.f_gout = &CINTgout1e_int1e_cg_irxp; +return CINT1e_drv(out, dims, &envs, cache, &c2s_cart_1e, 0); +} +CACHE_SIZE_T int1e_cg_irxp_sph(dtype *out, FINT *dims, FINT *shls, +FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env, CINTOpt *opt, dtype *cache) { +FINT ng[] = {0, 2, 0, 0, 2, 1, 1, 3}; +CINTEnvVars envs; +CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env); +envs.f_gout = &CINTgout1e_int1e_cg_irxp; +return CINT1e_drv(out, dims, &envs, cache, &c2s_sph_1e, 0); +} +CACHE_SIZE_T int1e_cg_irxp_spinor(dtype *out, FINT *dims, FINT *shls, +FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env, CINTOpt *opt, dtype *cache) { +FINT ng[] = {0, 2, 0, 0, 2, 1, 1, 3}; +CINTEnvVars envs; +CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env); +envs.f_gout = &CINTgout1e_int1e_cg_irxp; +return CINT1e_spinor_drv(out, dims, &envs, cache, &c2s_sf_1e, 0); +} */ +ALL_CINT1E(int1e_cg_irxp) +ALL_CINT1E_FORTRAN_(int1e_cg_irxp) + +void CINTgout1e_int1e_giao_a11part(dtype *gout, dtype *g, FINT *idx, CINTEnvVars *envs, FINT gout_empty) { +FINT nf = envs->nf; +FINT nrys_roots = envs->nrys_roots; +FINT ix, iy, iz, n, i; +dtype *g0 = g; +dtype *g1 = g0 + envs->g_size * 3; +dtype *g2 = g1 + envs->g_size * 3; +dtype *g3 = g2 + envs->g_size * 3; +G2E_R_J(g1, g0, envs->i_l+0, envs->j_l+0, 0, 0); +G2E_D_J(g2, g0, envs->i_l+0, envs->j_l+1, 0, 0); +G2E_D_I(g3, g0, envs->i_l+0, envs->j_l+1, 0, 0); +for (ix = 0; ix < envs->g_size * 3; ix++) {g2[ix] += g3[ix];} +G2E_R_J(g3, g2, envs->i_l+0, envs->j_l+0, 0, 0); +dtype s[9]; +for (n = 0; n < nf; n++) { +ix = idx[0+n*3]; +iy = idx[1+n*3]; +iz = idx[2+n*3]; +for (i = 0; i < 9; i++) { s[i] = 0; } +for (i = 0; i < nrys_roots; i++) { +s[0] += g3[ix+i] * g0[iy+i] * g0[iz+i]; +s[1] += g2[ix+i] * g1[iy+i] * g0[iz+i]; +s[2] += g2[ix+i] * g0[iy+i] * g1[iz+i]; +s[3] += g1[ix+i] * g2[iy+i] * g0[iz+i]; +s[4] += g0[ix+i] * g3[iy+i] * g0[iz+i]; +s[5] += g0[ix+i] * g2[iy+i] * g1[iz+i]; +s[6] += g1[ix+i] * g0[iy+i] * g2[iz+i]; +s[7] += g0[ix+i] * g1[iy+i] * g2[iz+i]; +s[8] += g0[ix+i] * g0[iy+i] * g3[iz+i]; +} +if (gout_empty) { +gout[n*9+0] = + s[0]; +gout[n*9+1] = + s[1]; +gout[n*9+2] = + s[2]; +gout[n*9+3] = + s[3]; +gout[n*9+4] = + s[4]; +gout[n*9+5] = + s[5]; +gout[n*9+6] = + s[6]; +gout[n*9+7] = + s[7]; +gout[n*9+8] = + s[8]; +} else { +gout[n*9+0] += + s[0]; +gout[n*9+1] += + s[1]; +gout[n*9+2] += + s[2]; +gout[n*9+3] += + s[3]; +gout[n*9+4] += + s[4]; +gout[n*9+5] += + s[5]; +gout[n*9+6] += + s[6]; +gout[n*9+7] += + s[7]; +gout[n*9+8] += + s[8]; +}}} +void int1e_giao_a11part_optimizer(CINTOpt **opt, FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env) { +FINT ng[] = {1, 2, 0, 0, 2, 1, 0, 9}; +CINTall_1e_optimizer(opt, ng, atm, natm, bas, nbas, env); +} +CACHE_SIZE_T int1e_giao_a11part_cart(dtype *out, FINT *dims, FINT *shls, +FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env, CINTOpt *opt, dtype *cache) { +FINT ng[] = {1, 2, 0, 0, 2, 1, 0, 9}; +CINTEnvVars envs; +CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env); +#ifdef __cplusplus +envs.f_gout = (void (*)(...))&CINTgout1e_int1e_giao_a11part; +#else +envs.f_gout = &CINTgout1e_int1e_giao_a11part; +#endif +envs.common_factor *= -0.5; +return CINT1e_drv(out, dims, &envs, cache, &c2s_cart_1e, 1); +} +CACHE_SIZE_T int1e_giao_a11part_sph(dtype *out, FINT *dims, FINT *shls, +FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env, CINTOpt *opt, dtype *cache) { +FINT ng[] = {1, 2, 0, 0, 2, 1, 0, 9}; +CINTEnvVars envs; +CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env); +#ifdef __cplusplus +envs.f_gout = (void (*)(...))&CINTgout1e_int1e_giao_a11part; +#else +envs.f_gout = &CINTgout1e_int1e_giao_a11part; +#endif +envs.common_factor *= -0.5; +return CINT1e_drv(out, dims, &envs, cache, &c2s_sph_1e, 1); +} +CACHE_SIZE_T int1e_giao_a11part_spinor(dtype *out, FINT *dims, FINT *shls, +FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env, CINTOpt *opt, dtype *cache) { +FINT ng[] = {1, 2, 0, 0, 2, 1, 0, 9}; +CINTEnvVars envs; +CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env); +#ifdef __cplusplus +envs.f_gout = (void (*)(...))&CINTgout1e_int1e_giao_a11part; +#else +envs.f_gout = &CINTgout1e_int1e_giao_a11part; +#endif +envs.common_factor *= -0.5; +return CINT1e_spinor_drv(out, dims, &envs, cache, &c2s_sf_1e, 1); +} +ALL_CINT1E(int1e_giao_a11part) +ALL_CINT1E_FORTRAN_(int1e_giao_a11part) + +void CINTgout1e_int1e_cg_a11part(dtype *gout, dtype *g, FINT *idx, CINTEnvVars *envs, FINT gout_empty) { +FINT nf = envs->nf; +FINT nrys_roots = envs->nrys_roots; +FINT ix, iy, iz, n, i; +dtype *g0 = g; +dtype *g1 = g0 + envs->g_size * 3; +dtype *g2 = g1 + envs->g_size * 3; +dtype *g3 = g2 + envs->g_size * 3; +dtype drj[3]; +drj[0] = envs->rj[0] - envs->env[PTR_COMMON_ORIG+0]; +drj[1] = envs->rj[1] - envs->env[PTR_COMMON_ORIG+1]; +drj[2] = envs->rj[2] - envs->env[PTR_COMMON_ORIG+2]; +G2E_RCJ(g1, g0, envs->i_l+0, envs->j_l+0, 0, 0); +G2E_D_J(g2, g0, envs->i_l+0, envs->j_l+1, 0, 0); +G2E_D_I(g3, g0, envs->i_l+0, envs->j_l+1, 0, 0); +for (ix = 0; ix < envs->g_size * 3; ix++) {g2[ix] += g3[ix];} +G2E_RCJ(g3, g2, envs->i_l+0, envs->j_l+0, 0, 0); +dtype s[9]; +for (n = 0; n < nf; n++) { +ix = idx[0+n*3]; +iy = idx[1+n*3]; +iz = idx[2+n*3]; +for (i = 0; i < 9; i++) { s[i] = 0; } +for (i = 0; i < nrys_roots; i++) { +s[0] += g3[ix+i] * g0[iy+i] * g0[iz+i]; +s[1] += g2[ix+i] * g1[iy+i] * g0[iz+i]; +s[2] += g2[ix+i] * g0[iy+i] * g1[iz+i]; +s[3] += g1[ix+i] * g2[iy+i] * g0[iz+i]; +s[4] += g0[ix+i] * g3[iy+i] * g0[iz+i]; +s[5] += g0[ix+i] * g2[iy+i] * g1[iz+i]; +s[6] += g1[ix+i] * g0[iy+i] * g2[iz+i]; +s[7] += g0[ix+i] * g1[iy+i] * g2[iz+i]; +s[8] += g0[ix+i] * g0[iy+i] * g3[iz+i]; +} +if (gout_empty) { +gout[n*9+0] = + s[0]; +gout[n*9+1] = + s[1]; +gout[n*9+2] = + s[2]; +gout[n*9+3] = + s[3]; +gout[n*9+4] = + s[4]; +gout[n*9+5] = + s[5]; +gout[n*9+6] = + s[6]; +gout[n*9+7] = + s[7]; +gout[n*9+8] = + s[8]; +} else { +gout[n*9+0] += + s[0]; +gout[n*9+1] += + s[1]; +gout[n*9+2] += + s[2]; +gout[n*9+3] += + s[3]; +gout[n*9+4] += + s[4]; +gout[n*9+5] += + s[5]; +gout[n*9+6] += + s[6]; +gout[n*9+7] += + s[7]; +gout[n*9+8] += + s[8]; +}}} +void int1e_cg_a11part_optimizer(CINTOpt **opt, FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env) { +FINT ng[] = {1, 2, 0, 0, 2, 1, 0, 9}; +CINTall_1e_optimizer(opt, ng, atm, natm, bas, nbas, env); +} +CACHE_SIZE_T int1e_cg_a11part_cart(dtype *out, FINT *dims, FINT *shls, +FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env, CINTOpt *opt, dtype *cache) { +FINT ng[] = {1, 2, 0, 0, 2, 1, 0, 9}; +CINTEnvVars envs; +CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env); +#ifdef __cplusplus +envs.f_gout = (void (*)(...))&CINTgout1e_int1e_cg_a11part; +#else +envs.f_gout = &CINTgout1e_int1e_cg_a11part; +#endif +envs.common_factor *= -0.5; +return CINT1e_drv(out, dims, &envs, cache, &c2s_cart_1e, 1); +} +CACHE_SIZE_T int1e_cg_a11part_sph(dtype *out, FINT *dims, FINT *shls, +FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env, CINTOpt *opt, dtype *cache) { +FINT ng[] = {1, 2, 0, 0, 2, 1, 0, 9}; +CINTEnvVars envs; +CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env); +#ifdef __cplusplus +envs.f_gout = (void (*)(...))&CINTgout1e_int1e_cg_a11part; +#else +envs.f_gout = &CINTgout1e_int1e_cg_a11part; +#endif +envs.common_factor *= -0.5; +return CINT1e_drv(out, dims, &envs, cache, &c2s_sph_1e, 1); +} +CACHE_SIZE_T int1e_cg_a11part_spinor(dtype *out, FINT *dims, FINT *shls, +FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env, CINTOpt *opt, dtype *cache) { +FINT ng[] = {1, 2, 0, 0, 2, 1, 0, 9}; +CINTEnvVars envs; +CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env); +#ifdef __cplusplus +envs.f_gout = (void (*)(...))&CINTgout1e_int1e_cg_a11part; +#else +envs.f_gout = &CINTgout1e_int1e_cg_a11part; +#endif +envs.common_factor *= -0.5; +return CINT1e_spinor_drv(out, dims, &envs, cache, &c2s_sf_1e, 1); +} +ALL_CINT1E(int1e_cg_a11part) +ALL_CINT1E_FORTRAN_(int1e_cg_a11part) + +void CINTgout1e_int1e_a01gp(dtype *gout, dtype *g, FINT *idx, CINTEnvVars *envs, FINT gout_empty) { +FINT nf = envs->nf; +FINT nrys_roots = envs->nrys_roots; +FINT ix, iy, iz, n, i; +dtype *g0 = g; +dtype *g1 = g0 + envs->g_size * 3; +dtype *g2 = g1 + envs->g_size * 3; +dtype *g3 = g2 + envs->g_size * 3; +dtype *g4 = g3 + envs->g_size * 3; +dtype *g5 = g4 + envs->g_size * 3; +dtype *g6 = g5 + envs->g_size * 3; +dtype *g7 = g6 + envs->g_size * 3; +dtype rirj[3], c[3]; +rirj[0] = envs->ri[0] - envs->rj[0]; +rirj[1] = envs->ri[1] - envs->rj[1]; +rirj[2] = envs->ri[2] - envs->rj[2]; +c[0] = 1 * rirj[0]; +c[1] = 1 * rirj[1]; +c[2] = 1 * rirj[2]; +G2E_D_J(g1, g0, envs->i_l+2, envs->j_l+0, 0, 0); +G2E_D_J(g2, g0, envs->i_l+1, envs->j_l+1, 0, 0); +G2E_D_I(g3, g0, envs->i_l+1, envs->j_l+1, 0, 0); +for (ix = 0; ix < envs->g_size * 3; ix++) {g2[ix] += g3[ix];} +G2E_D_J(g3, g2, envs->i_l+2, envs->j_l+0, 0, 0); +G2E_R0I(g4, g0, envs->i_l+0, envs->j_l, 0, 0); +G2E_R0I(g5, g1, envs->i_l+0, envs->j_l, 0, 0); +G2E_R0I(g6, g2, envs->i_l+0, envs->j_l, 0, 0); +G2E_R0I(g7, g3, envs->i_l+0, envs->j_l, 0, 0); +dtype s[27]; +for (n = 0; n < nf; n++) { +ix = idx[0+n*3]; +iy = idx[1+n*3]; +iz = idx[2+n*3]; +for (i = 0; i < 27; i++) { s[i] = 0; } +for (i = 0; i < nrys_roots; i++) { +s[0] += g7[ix+i] * g0[iy+i] * g0[iz+i]; +s[1] += g6[ix+i] * g1[iy+i] * g0[iz+i]; +s[2] += g6[ix+i] * g0[iy+i] * g1[iz+i]; +s[3] += g5[ix+i] * g2[iy+i] * g0[iz+i]; +s[4] += g4[ix+i] * g3[iy+i] * g0[iz+i]; +s[5] += g4[ix+i] * g2[iy+i] * g1[iz+i]; +s[6] += g5[ix+i] * g0[iy+i] * g2[iz+i]; +s[7] += g4[ix+i] * g1[iy+i] * g2[iz+i]; +s[8] += g4[ix+i] * g0[iy+i] * g3[iz+i]; +s[9] += g3[ix+i] * g4[iy+i] * g0[iz+i]; +s[10] += g2[ix+i] * g5[iy+i] * g0[iz+i]; +s[11] += g2[ix+i] * g4[iy+i] * g1[iz+i]; +s[12] += g1[ix+i] * g6[iy+i] * g0[iz+i]; +s[13] += g0[ix+i] * g7[iy+i] * g0[iz+i]; +s[14] += g0[ix+i] * g6[iy+i] * g1[iz+i]; +s[15] += g1[ix+i] * g4[iy+i] * g2[iz+i]; +s[16] += g0[ix+i] * g5[iy+i] * g2[iz+i]; +s[17] += g0[ix+i] * g4[iy+i] * g3[iz+i]; +s[18] += g3[ix+i] * g0[iy+i] * g4[iz+i]; +s[19] += g2[ix+i] * g1[iy+i] * g4[iz+i]; +s[20] += g2[ix+i] * g0[iy+i] * g5[iz+i]; +s[21] += g1[ix+i] * g2[iy+i] * g4[iz+i]; +s[22] += g0[ix+i] * g3[iy+i] * g4[iz+i]; +s[23] += g0[ix+i] * g2[iy+i] * g5[iz+i]; +s[24] += g1[ix+i] * g0[iy+i] * g6[iz+i]; +s[25] += g0[ix+i] * g1[iy+i] * g6[iz+i]; +s[26] += g0[ix+i] * g0[iy+i] * g7[iz+i]; +} +if (gout_empty) { +gout[n*9+0] = + c[1]*s[23] - c[2]*s[14] - c[1]*s[25] + c[2]*s[16]; +gout[n*9+1] = + c[1]*s[24] - c[2]*s[15] - c[1]*s[20] + c[2]*s[11]; +gout[n*9+2] = + c[1]*s[19] - c[2]*s[10] - c[1]*s[21] + c[2]*s[12]; +gout[n*9+3] = + c[2]*s[5] - c[0]*s[23] - c[2]*s[7] + c[0]*s[25]; +gout[n*9+4] = + c[2]*s[6] - c[0]*s[24] - c[2]*s[2] + c[0]*s[20]; +gout[n*9+5] = + c[2]*s[1] - c[0]*s[19] - c[2]*s[3] + c[0]*s[21]; +gout[n*9+6] = + c[0]*s[14] - c[1]*s[5] - c[0]*s[16] + c[1]*s[7]; +gout[n*9+7] = + c[0]*s[15] - c[1]*s[6] - c[0]*s[11] + c[1]*s[2]; +gout[n*9+8] = + c[0]*s[10] - c[1]*s[1] - c[0]*s[12] + c[1]*s[3]; +} else { +gout[n*9+0] += + c[1]*s[23] - c[2]*s[14] - c[1]*s[25] + c[2]*s[16]; +gout[n*9+1] += + c[1]*s[24] - c[2]*s[15] - c[1]*s[20] + c[2]*s[11]; +gout[n*9+2] += + c[1]*s[19] - c[2]*s[10] - c[1]*s[21] + c[2]*s[12]; +gout[n*9+3] += + c[2]*s[5] - c[0]*s[23] - c[2]*s[7] + c[0]*s[25]; +gout[n*9+4] += + c[2]*s[6] - c[0]*s[24] - c[2]*s[2] + c[0]*s[20]; +gout[n*9+5] += + c[2]*s[1] - c[0]*s[19] - c[2]*s[3] + c[0]*s[21]; +gout[n*9+6] += + c[0]*s[14] - c[1]*s[5] - c[0]*s[16] + c[1]*s[7]; +gout[n*9+7] += + c[0]*s[15] - c[1]*s[6] - c[0]*s[11] + c[1]*s[2]; +gout[n*9+8] += + c[0]*s[10] - c[1]*s[1] - c[0]*s[12] + c[1]*s[3]; +}}} +void int1e_a01gp_optimizer(CINTOpt **opt, FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env) { +FINT ng[] = {2, 2, 0, 0, 3, 1, 0, 9}; +CINTall_1e_optimizer(opt, ng, atm, natm, bas, nbas, env); +} +CACHE_SIZE_T int1e_a01gp_cart(dtype *out, FINT *dims, FINT *shls, +FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env, CINTOpt *opt, dtype *cache) { +FINT ng[] = {2, 2, 0, 0, 3, 1, 0, 9}; +CINTEnvVars envs; +CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env); +#ifdef __cplusplus +envs.f_gout = (void (*)(...))&CINTgout1e_int1e_a01gp; +#else +envs.f_gout = &CINTgout1e_int1e_a01gp; +#endif +envs.common_factor *= 0.5; +if (out != NULL && envs.shls[0] == envs.shls[1]) { +FINT i, nout; +FINT counts[4]; +counts[0] = envs.nfi * envs.x_ctr[0]; +counts[1] = envs.nfj * envs.x_ctr[1]; +counts[2] = 1; +counts[3] = 1; +if (dims == NULL) { dims = counts; } +nout = dims[0] * dims[1]; +for (i = 0; i < envs.ncomp_e1 * envs.ncomp_tensor; i++) { +c2s_dset0(out+nout*i, dims, counts); } + +return 0; } +return CINT1e_drv(out, dims, &envs, cache, &c2s_cart_1e, 1); +} +CACHE_SIZE_T int1e_a01gp_sph(dtype *out, FINT *dims, FINT *shls, +FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env, CINTOpt *opt, dtype *cache) { +FINT ng[] = {2, 2, 0, 0, 3, 1, 0, 9}; +CINTEnvVars envs; +CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env); +#ifdef __cplusplus +envs.f_gout = (void (*)(...))&CINTgout1e_int1e_a01gp; +#else +envs.f_gout = &CINTgout1e_int1e_a01gp; +#endif +envs.common_factor *= 0.5; +if (out != NULL && envs.shls[0] == envs.shls[1]) { +FINT i, nout; +FINT counts[4]; +counts[0] = (envs.i_l*2+1) * envs.x_ctr[0]; +counts[1] = (envs.j_l*2+1) * envs.x_ctr[1]; +counts[2] = 1; +counts[3] = 1; +if (dims == NULL) { dims = counts; } +nout = dims[0] * dims[1]; +for (i = 0; i < envs.ncomp_e1 * envs.ncomp_tensor; i++) { +c2s_dset0(out+nout*i, dims, counts); } +return 0; } +return CINT1e_drv(out, dims, &envs, cache, &c2s_sph_1e, 1); +} +CACHE_SIZE_T int1e_a01gp_spinor(dtype *out, FINT *dims, FINT *shls, +FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env, CINTOpt *opt, dtype *cache) { +FINT ng[] = {2, 2, 0, 0, 3, 1, 0, 9}; +CINTEnvVars envs; +CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env); +#ifdef __cplusplus +envs.f_gout = (void (*)(...))&CINTgout1e_int1e_a01gp; +#else +envs.f_gout = &CINTgout1e_int1e_a01gp; +#endif +envs.common_factor *= 0.5; +if (out != NULL && envs.shls[0] == envs.shls[1]) { +FINT i, nout; +FINT counts[4]; +counts[0] = CINTcgto_spinor(envs.shls[0], envs.bas); +counts[1] = CINTcgto_spinor(envs.shls[1], envs.bas); +counts[2] = 1; +counts[3] = 1; +if (dims == NULL) { dims = counts; } +nout = dims[0] * dims[1]; +for (i = 0; i < envs.ncomp_tensor; i++) { +c2s_zset0(out+nout*i, dims, counts); } +return 0; } +return CINT1e_spinor_drv(out, dims, &envs, cache, &c2s_sf_1e, 1); +} +ALL_CINT1E(int1e_a01gp) +ALL_CINT1E_FORTRAN_(int1e_a01gp) + +void CINTgout1e_int1e_igkin(dtype *gout, dtype *g, FINT *idx, CINTEnvVars *envs, FINT gout_empty) { +FINT nf = envs->nf; +FINT ix, iy, iz, n; +dtype *g0 = g; +dtype *g1 = g0 + envs->g_size * 3; +dtype *g2 = g1 + envs->g_size * 3; +dtype *g3 = g2 + envs->g_size * 3; +dtype *g4 = g3 + envs->g_size * 3; +dtype *g5 = g4 + envs->g_size * 3; +dtype *g6 = g5 + envs->g_size * 3; +dtype *g7 = g6 + envs->g_size * 3; +dtype rirj[3], c[3]; +rirj[0] = envs->ri[0] - envs->rj[0]; +rirj[1] = envs->ri[1] - envs->rj[1]; +rirj[2] = envs->ri[2] - envs->rj[2]; +c[0] = 1 * rirj[0]; +c[1] = 1 * rirj[1]; +c[2] = 1 * rirj[2]; +dtype s[27]; +G1E_D_J(g1, g0, envs->i_l+1, envs->j_l+0, 0); +G1E_D_J(g2, g0, envs->i_l+1, envs->j_l+1, 0); +G1E_D_J(g3, g2, envs->i_l+1, envs->j_l+0, 0); +G1E_R0I(g4, g0, envs->i_l+0, envs->j_l, 0); +G1E_R0I(g5, g1, envs->i_l+0, envs->j_l, 0); +G1E_R0I(g6, g2, envs->i_l+0, envs->j_l, 0); +G1E_R0I(g7, g3, envs->i_l+0, envs->j_l, 0); +for (n = 0; n < nf; n++) { +ix = idx[0+n*3]; +iy = idx[1+n*3]; +iz = idx[2+n*3]; +s[0] = + g7[ix+0]*g0[iy+0]*g0[iz+0]; +s[1] = + g6[ix+0]*g1[iy+0]*g0[iz+0]; +s[2] = + g6[ix+0]*g0[iy+0]*g1[iz+0]; +s[3] = + g5[ix+0]*g2[iy+0]*g0[iz+0]; +s[4] = + g4[ix+0]*g3[iy+0]*g0[iz+0]; +s[5] = + g4[ix+0]*g2[iy+0]*g1[iz+0]; +s[6] = + g5[ix+0]*g0[iy+0]*g2[iz+0]; +s[7] = + g4[ix+0]*g1[iy+0]*g2[iz+0]; +s[8] = + g4[ix+0]*g0[iy+0]*g3[iz+0]; +s[9] = + g3[ix+0]*g4[iy+0]*g0[iz+0]; +s[10] = + g2[ix+0]*g5[iy+0]*g0[iz+0]; +s[11] = + g2[ix+0]*g4[iy+0]*g1[iz+0]; +s[12] = + g1[ix+0]*g6[iy+0]*g0[iz+0]; +s[13] = + g0[ix+0]*g7[iy+0]*g0[iz+0]; +s[14] = + g0[ix+0]*g6[iy+0]*g1[iz+0]; +s[15] = + g1[ix+0]*g4[iy+0]*g2[iz+0]; +s[16] = + g0[ix+0]*g5[iy+0]*g2[iz+0]; +s[17] = + g0[ix+0]*g4[iy+0]*g3[iz+0]; +s[18] = + g3[ix+0]*g0[iy+0]*g4[iz+0]; +s[19] = + g2[ix+0]*g1[iy+0]*g4[iz+0]; +s[20] = + g2[ix+0]*g0[iy+0]*g5[iz+0]; +s[21] = + g1[ix+0]*g2[iy+0]*g4[iz+0]; +s[22] = + g0[ix+0]*g3[iy+0]*g4[iz+0]; +s[23] = + g0[ix+0]*g2[iy+0]*g5[iz+0]; +s[24] = + g1[ix+0]*g0[iy+0]*g6[iz+0]; +s[25] = + g0[ix+0]*g1[iy+0]*g6[iz+0]; +s[26] = + g0[ix+0]*g0[iy+0]*g7[iz+0]; +if (gout_empty) { +gout[n*3+0] = + c[1]*s[18] - c[2]*s[9] + c[1]*s[22] - c[2]*s[13] + c[1]*s[26] - c[2]*s[17]; +gout[n*3+1] = + c[2]*s[0] - c[0]*s[18] + c[2]*s[4] - c[0]*s[22] + c[2]*s[8] - c[0]*s[26]; +gout[n*3+2] = + c[0]*s[9] - c[1]*s[0] + c[0]*s[13] - c[1]*s[4] + c[0]*s[17] - c[1]*s[8]; +} else { +gout[n*3+0] += + c[1]*s[18] - c[2]*s[9] + c[1]*s[22] - c[2]*s[13] + c[1]*s[26] - c[2]*s[17]; +gout[n*3+1] += + c[2]*s[0] - c[0]*s[18] + c[2]*s[4] - c[0]*s[22] + c[2]*s[8] - c[0]*s[26]; +gout[n*3+2] += + c[0]*s[9] - c[1]*s[0] + c[0]*s[13] - c[1]*s[4] + c[0]*s[17] - c[1]*s[8]; +}}} +void int1e_igkin_optimizer(CINTOpt **opt, FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env) { +FINT ng[] = {1, 2, 0, 0, 3, 1, 1, 3}; +CINTall_1e_optimizer(opt, ng, atm, natm, bas, nbas, env); +} +/* +CACHE_SIZE_T int1e_igkin_cart(dtype *out, FINT *dims, FINT *shls, +FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env, CINTOpt *opt, dtype *cache) { +FINT ng[] = {1, 2, 0, 0, 3, 1, 1, 3}; +CINTEnvVars envs; +CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env); +envs.f_gout = &CINTgout1e_int1e_igkin; +envs.common_factor *= 0.25; +if (out != NULL && envs.shls[0] == envs.shls[1]) { +FINT i, nout; +FINT counts[4]; +counts[0] = envs.nfi * envs.x_ctr[0]; +counts[1] = envs.nfj * envs.x_ctr[1]; +counts[2] = 1; +counts[3] = 1; +if (dims == NULL) { dims = counts; } +nout = dims[0] * dims[1]; +for (i = 0; i < envs.ncomp_e1 * envs.ncomp_tensor; i++) { +c2s_dset0(out+nout*i, dims, counts); } +return 0; } +return CINT1e_drv(out, dims, &envs, cache, &c2s_cart_1e, 0); +} +CACHE_SIZE_T int1e_igkin_sph(dtype *out, FINT *dims, FINT *shls, +FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env, CINTOpt *opt, dtype *cache) { +FINT ng[] = {1, 2, 0, 0, 3, 1, 1, 3}; +CINTEnvVars envs; +CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env); +envs.f_gout = &CINTgout1e_int1e_igkin; +envs.common_factor *= 0.25; +if (out != NULL && envs.shls[0] == envs.shls[1]) { +FINT i, nout; +FINT counts[4]; +counts[0] = (envs.i_l*2+1) * envs.x_ctr[0]; +counts[1] = (envs.j_l*2+1) * envs.x_ctr[1]; +counts[2] = 1; +counts[3] = 1; +if (dims == NULL) { dims = counts; } +nout = dims[0] * dims[1]; +for (i = 0; i < envs.ncomp_e1 * envs.ncomp_tensor; i++) { +c2s_dset0(out+nout*i, dims, counts); } +return 0; } +return CINT1e_drv(out, dims, &envs, cache, &c2s_sph_1e, 0); +} +CACHE_SIZE_T int1e_igkin_spinor(dtype *out, FINT *dims, FINT *shls, +FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env, CINTOpt *opt, dtype *cache) { +FINT ng[] = {1, 2, 0, 0, 3, 1, 1, 3}; +CINTEnvVars envs; +CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env); +envs.f_gout = &CINTgout1e_int1e_igkin; +envs.common_factor *= 0.25; +if (out != NULL && envs.shls[0] == envs.shls[1]) { +FINT i, nout; +FINT counts[4]; +counts[0] = CINTcgto_spinor(envs.shls[0], envs.bas); +counts[1] = CINTcgto_spinor(envs.shls[1], envs.bas); +counts[2] = 1; +counts[3] = 1; +if (dims == NULL) { dims = counts; } +nout = dims[0] * dims[1]; +for (i = 0; i < envs.ncomp_tensor; i++) { +c2s_zset0(out+nout*i, dims, counts); } +return 0; } +return CINT1e_spinor_drv(out, dims, &envs, cache, &c2s_sf_1e, 0); +} +ALL_CINT1E(int1e_igkin) +ALL_CINT1E_FORTRAN_(int1e_igkin) + +void CINTgout1e_int1e_igovlp(dtype *gout, dtype *g, FINT *idx, CINTEnvVars *envs, FINT gout_empty) { +FINT nf = envs->nf; +FINT ix, iy, iz, n; +dtype *g0 = g; +dtype *g1 = g0 + envs->g_size * 3; +dtype rirj[3], c[3]; +rirj[0] = envs->ri[0] - envs->rj[0]; +rirj[1] = envs->ri[1] - envs->rj[1]; +rirj[2] = envs->ri[2] - envs->rj[2]; +c[0] = 1 * rirj[0]; +c[1] = 1 * rirj[1]; +c[2] = 1 * rirj[2]; +dtype s[3]; +G1E_R0I(g1, g0, envs->i_l+0, envs->j_l, 0); +for (n = 0; n < nf; n++) { +ix = idx[0+n*3]; +iy = idx[1+n*3]; +iz = idx[2+n*3]; +s[0] = + g1[ix+0]*g0[iy+0]*g0[iz+0]; +s[1] = + g0[ix+0]*g1[iy+0]*g0[iz+0]; +s[2] = + g0[ix+0]*g0[iy+0]*g1[iz+0]; +if (gout_empty) { +gout[n*3+0] = - c[1]*s[2] + c[2]*s[1]; +gout[n*3+1] = - c[2]*s[0] + c[0]*s[2]; +gout[n*3+2] = - c[0]*s[1] + c[1]*s[0]; +} else { +gout[n*3+0] += - c[1]*s[2] + c[2]*s[1]; +gout[n*3+1] += - c[2]*s[0] + c[0]*s[2]; +gout[n*3+2] += - c[0]*s[1] + c[1]*s[0]; +}}} +void int1e_igovlp_optimizer(CINTOpt **opt, FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env) { +FINT ng[] = {1, 0, 0, 0, 1, 1, 1, 3}; +CINTall_1e_optimizer(opt, ng, atm, natm, bas, nbas, env); +} +CACHE_SIZE_T int1e_igovlp_cart(dtype *out, FINT *dims, FINT *shls, +FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env, CINTOpt *opt, dtype *cache) { +FINT ng[] = {1, 0, 0, 0, 1, 1, 1, 3}; +CINTEnvVars envs; +CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env); +envs.f_gout = &CINTgout1e_int1e_igovlp; +envs.common_factor *= 0.5; +if (out != NULL && envs.shls[0] == envs.shls[1]) { +FINT i, nout; +FINT counts[4]; +counts[0] = envs.nfi * envs.x_ctr[0]; +counts[1] = envs.nfj * envs.x_ctr[1]; +counts[2] = 1; +counts[3] = 1; +if (dims == NULL) { dims = counts; } +nout = dims[0] * dims[1]; +for (i = 0; i < envs.ncomp_e1 * envs.ncomp_tensor; i++) { +c2s_dset0(out+nout*i, dims, counts); } +return 0; } +return CINT1e_drv(out, dims, &envs, cache, &c2s_cart_1e, 0); +} +CACHE_SIZE_T int1e_igovlp_sph(dtype *out, FINT *dims, FINT *shls, +FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env, CINTOpt *opt, dtype *cache) { +FINT ng[] = {1, 0, 0, 0, 1, 1, 1, 3}; +CINTEnvVars envs; +CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env); +envs.f_gout = &CINTgout1e_int1e_igovlp; +envs.common_factor *= 0.5; +if (out != NULL && envs.shls[0] == envs.shls[1]) { +FINT i, nout; +FINT counts[4]; +counts[0] = (envs.i_l*2+1) * envs.x_ctr[0]; +counts[1] = (envs.j_l*2+1) * envs.x_ctr[1]; +counts[2] = 1; +counts[3] = 1; +if (dims == NULL) { dims = counts; } +nout = dims[0] * dims[1]; +for (i = 0; i < envs.ncomp_e1 * envs.ncomp_tensor; i++) { +c2s_dset0(out+nout*i, dims, counts); } +return 0; } +return CINT1e_drv(out, dims, &envs, cache, &c2s_sph_1e, 0); +} +CACHE_SIZE_T int1e_igovlp_spinor(dtype *out, FINT *dims, FINT *shls, +FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env, CINTOpt *opt, dtype *cache) { +FINT ng[] = {1, 0, 0, 0, 1, 1, 1, 3}; +CINTEnvVars envs; +CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env); +envs.f_gout = &CINTgout1e_int1e_igovlp; +envs.common_factor *= 0.5; +if (out != NULL && envs.shls[0] == envs.shls[1]) { +FINT i, nout; +FINT counts[4]; +counts[0] = CINTcgto_spinor(envs.shls[0], envs.bas); +counts[1] = CINTcgto_spinor(envs.shls[1], envs.bas); +counts[2] = 1; +counts[3] = 1; +if (dims == NULL) { dims = counts; } +nout = dims[0] * dims[1]; +for (i = 0; i < envs.ncomp_tensor; i++) { +c2s_zset0(out+nout*i, dims, counts); } +return 0; } +return CINT1e_spinor_drv(out, dims, &envs, cache, &c2s_sf_1e, 0); +} +ALL_CINT1E(int1e_igovlp) +ALL_CINT1E_FORTRAN_(int1e_igovlp) + +void CINTgout1e_int1e_ignuc(dtype *gout, dtype *g, FINT *idx, CINTEnvVars *envs, FINT gout_empty) { +FINT nf = envs->nf; +FINT nrys_roots = envs->nrys_roots; +FINT ix, iy, iz, n, i; +dtype *g0 = g; +dtype *g1 = g0 + envs->g_size * 3; +dtype rirj[3], c[3]; +rirj[0] = envs->ri[0] - envs->rj[0]; +rirj[1] = envs->ri[1] - envs->rj[1]; +rirj[2] = envs->ri[2] - envs->rj[2]; +c[0] = 1 * rirj[0]; +c[1] = 1 * rirj[1]; +c[2] = 1 * rirj[2]; +G2E_R0I(g1, g0, envs->i_l+0, envs->j_l, 0, 0); +dtype s[3]; +for (n = 0; n < nf; n++) { +ix = idx[0+n*3]; +iy = idx[1+n*3]; +iz = idx[2+n*3]; +for (i = 0; i < 3; i++) { s[i] = 0; } +for (i = 0; i < nrys_roots; i++) { +s[0] += g1[ix+i] * g0[iy+i] * g0[iz+i]; +s[1] += g0[ix+i] * g1[iy+i] * g0[iz+i]; +s[2] += g0[ix+i] * g0[iy+i] * g1[iz+i]; +} +if (gout_empty) { +gout[n*3+0] = - c[1]*s[2] + c[2]*s[1]; +gout[n*3+1] = - c[2]*s[0] + c[0]*s[2]; +gout[n*3+2] = - c[0]*s[1] + c[1]*s[0]; +} else { +gout[n*3+0] += - c[1]*s[2] + c[2]*s[1]; +gout[n*3+1] += - c[2]*s[0] + c[0]*s[2]; +gout[n*3+2] += - c[0]*s[1] + c[1]*s[0]; +}}} +void int1e_ignuc_optimizer(CINTOpt **opt, FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env) { +FINT ng[] = {1, 0, 0, 0, 1, 1, 0, 3}; +CINTall_1e_optimizer(opt, ng, atm, natm, bas, nbas, env); +} +CACHE_SIZE_T int1e_ignuc_cart(dtype *out, FINT *dims, FINT *shls, +FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env, CINTOpt *opt, dtype *cache) { +FINT ng[] = {1, 0, 0, 0, 1, 1, 0, 3}; +CINTEnvVars envs; +CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env); +envs.f_gout = &CINTgout1e_int1e_ignuc; +envs.common_factor *= 0.5; +if (out != NULL && envs.shls[0] == envs.shls[1]) { +FINT i, nout; +FINT counts[4]; +counts[0] = envs.nfi * envs.x_ctr[0]; +counts[1] = envs.nfj * envs.x_ctr[1]; +counts[2] = 1; +counts[3] = 1; +if (dims == NULL) { dims = counts; } +nout = dims[0] * dims[1]; +for (i = 0; i < envs.ncomp_e1 * envs.ncomp_tensor; i++) { +c2s_dset0(out+nout*i, dims, counts); } +return 0; } +return CINT1e_drv(out, dims, &envs, cache, &c2s_cart_1e, 2); +} +CACHE_SIZE_T int1e_ignuc_sph(dtype *out, FINT *dims, FINT *shls, +FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env, CINTOpt *opt, dtype *cache) { +FINT ng[] = {1, 0, 0, 0, 1, 1, 0, 3}; +CINTEnvVars envs; +CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env); +envs.f_gout = &CINTgout1e_int1e_ignuc; +envs.common_factor *= 0.5; +if (out != NULL && envs.shls[0] == envs.shls[1]) { +FINT i, nout; +FINT counts[4]; +counts[0] = (envs.i_l*2+1) * envs.x_ctr[0]; +counts[1] = (envs.j_l*2+1) * envs.x_ctr[1]; +counts[2] = 1; +counts[3] = 1; +if (dims == NULL) { dims = counts; } +nout = dims[0] * dims[1]; +for (i = 0; i < envs.ncomp_e1 * envs.ncomp_tensor; i++) { +c2s_dset0(out+nout*i, dims, counts); } +return 0; } +return CINT1e_drv(out, dims, &envs, cache, &c2s_sph_1e, 2); +} +CACHE_SIZE_T int1e_ignuc_spinor(dtype *out, FINT *dims, FINT *shls, +FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env, CINTOpt *opt, dtype *cache) { +FINT ng[] = {1, 0, 0, 0, 1, 1, 0, 3}; +CINTEnvVars envs; +CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env); +envs.f_gout = &CINTgout1e_int1e_ignuc; +envs.common_factor *= 0.5; +if (out != NULL && envs.shls[0] == envs.shls[1]) { +FINT i, nout; +FINT counts[4]; +counts[0] = CINTcgto_spinor(envs.shls[0], envs.bas); +counts[1] = CINTcgto_spinor(envs.shls[1], envs.bas); +counts[2] = 1; +counts[3] = 1; +if (dims == NULL) { dims = counts; } +nout = dims[0] * dims[1]; +for (i = 0; i < envs.ncomp_tensor; i++) { +c2s_zset0(out+nout*i, dims, counts); } +return 0; } +return CINT1e_spinor_drv(out, dims, &envs, cache, &c2s_sf_1e, 2); +} +ALL_CINT1E(int1e_ignuc) +ALL_CINT1E_FORTRAN_(int1e_ignuc) + +void CINTgout1e_int1e_pnucp(dtype *gout, dtype *g, FINT *idx, CINTEnvVars *envs, FINT gout_empty) { +FINT nf = envs->nf; +FINT nrys_roots = envs->nrys_roots; +FINT ix, iy, iz, n, i; +dtype *g0 = g; +dtype *g1 = g0 + envs->g_size * 3; +dtype *g2 = g1 + envs->g_size * 3; +dtype *g3 = g2 + envs->g_size * 3; +G2E_D_J(g1, g0, envs->i_l+1, envs->j_l+0, 0, 0); +G2E_D_I(g2, g0, envs->i_l+0, envs->j_l, 0, 0); +G2E_D_I(g3, g1, envs->i_l+0, envs->j_l, 0, 0); +dtype s[9]; +for (n = 0; n < nf; n++) { +ix = idx[0+n*3]; +iy = idx[1+n*3]; +iz = idx[2+n*3]; +for (i = 0; i < 9; i++) { s[i] = 0; } +for (i = 0; i < nrys_roots; i++) { +s[0] += g3[ix+i] * g0[iy+i] * g0[iz+i]; +s[1] += g2[ix+i] * g1[iy+i] * g0[iz+i]; +s[2] += g2[ix+i] * g0[iy+i] * g1[iz+i]; +s[3] += g1[ix+i] * g2[iy+i] * g0[iz+i]; +s[4] += g0[ix+i] * g3[iy+i] * g0[iz+i]; +s[5] += g0[ix+i] * g2[iy+i] * g1[iz+i]; +s[6] += g1[ix+i] * g0[iy+i] * g2[iz+i]; +s[7] += g0[ix+i] * g1[iy+i] * g2[iz+i]; +s[8] += g0[ix+i] * g0[iy+i] * g3[iz+i]; +} +if (gout_empty) { +gout[n*1+0] = + s[0] + s[4] + s[8]; +} else { +gout[n*1+0] += + s[0] + s[4] + s[8]; +}}} +void int1e_pnucp_optimizer(CINTOpt **opt, FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env) { +FINT ng[] = {1, 1, 0, 0, 2, 1, 0, 1}; +CINTall_1e_optimizer(opt, ng, atm, natm, bas, nbas, env); +} +CACHE_SIZE_T int1e_pnucp_cart(dtype *out, FINT *dims, FINT *shls, +FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env, CINTOpt *opt, dtype *cache) { +FINT ng[] = {1, 1, 0, 0, 2, 1, 0, 1}; +CINTEnvVars envs; +CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env); +envs.f_gout = &CINTgout1e_int1e_pnucp; +return CINT1e_drv(out, dims, &envs, cache, &c2s_cart_1e, 2); +} +CACHE_SIZE_T int1e_pnucp_sph(dtype *out, FINT *dims, FINT *shls, +FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env, CINTOpt *opt, dtype *cache) { +FINT ng[] = {1, 1, 0, 0, 2, 1, 0, 1}; +CINTEnvVars envs; +CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env); +envs.f_gout = &CINTgout1e_int1e_pnucp; +return CINT1e_drv(out, dims, &envs, cache, &c2s_sph_1e, 2); +} +CACHE_SIZE_T int1e_pnucp_spinor(dtype *out, FINT *dims, FINT *shls, +FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env, CINTOpt *opt, dtype *cache) { +FINT ng[] = {1, 1, 0, 0, 2, 1, 0, 1}; +CINTEnvVars envs; +CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env); +envs.f_gout = &CINTgout1e_int1e_pnucp; +return CINT1e_spinor_drv(out, dims, &envs, cache, &c2s_sf_1e, 2); +} +ALL_CINT1E(int1e_pnucp) +ALL_CINT1E_FORTRAN_(int1e_pnucp) + +void CINTgout1e_int1e_z(dtype *gout, dtype *g, FINT *idx, CINTEnvVars *envs, FINT gout_empty) { +FINT nf = envs->nf; +FINT ix, iy, iz, n; +dtype *g0 = g; +dtype *g1 = g0 + envs->g_size * 3; +dtype drj[3]; +drj[0] = envs->rj[0] - envs->env[PTR_COMMON_ORIG+0]; +drj[1] = envs->rj[1] - envs->env[PTR_COMMON_ORIG+1]; +drj[2] = envs->rj[2] - envs->env[PTR_COMMON_ORIG+2]; +dtype s[3]; +G1E_RCJ(g1, g0, envs->i_l+0, envs->j_l+0, 0); +for (n = 0; n < nf; n++) { +ix = idx[0+n*3]; +iy = idx[1+n*3]; +iz = idx[2+n*3]; +s[0] = + g1[ix+0]*g0[iy+0]*g0[iz+0]; +s[1] = + g0[ix+0]*g1[iy+0]*g0[iz+0]; +s[2] = + g0[ix+0]*g0[iy+0]*g1[iz+0]; +if (gout_empty) { +gout[n*1+0] = + s[2]; +} else { +gout[n*1+0] += + s[2]; +}}} +void int1e_z_optimizer(CINTOpt **opt, FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env) { +FINT ng[] = {0, 1, 0, 0, 1, 1, 1, 1}; +CINTall_1e_optimizer(opt, ng, atm, natm, bas, nbas, env); +} +CACHE_SIZE_T int1e_z_cart(dtype *out, FINT *dims, FINT *shls, +FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env, CINTOpt *opt, dtype *cache) { +FINT ng[] = {0, 1, 0, 0, 1, 1, 1, 1}; +CINTEnvVars envs; +CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env); +envs.f_gout = &CINTgout1e_int1e_z; +return CINT1e_drv(out, dims, &envs, cache, &c2s_cart_1e, 0); +} +CACHE_SIZE_T int1e_z_sph(dtype *out, FINT *dims, FINT *shls, +FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env, CINTOpt *opt, dtype *cache) { +FINT ng[] = {0, 1, 0, 0, 1, 1, 1, 1}; +CINTEnvVars envs; +CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env); +envs.f_gout = &CINTgout1e_int1e_z; +return CINT1e_drv(out, dims, &envs, cache, &c2s_sph_1e, 0); +} +CACHE_SIZE_T int1e_z_spinor(dtype *out, FINT *dims, FINT *shls, +FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env, CINTOpt *opt, dtype *cache) { +FINT ng[] = {0, 1, 0, 0, 1, 1, 1, 1}; +CINTEnvVars envs; +CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env); +envs.f_gout = &CINTgout1e_int1e_z; +return CINT1e_spinor_drv(out, dims, &envs, cache, &c2s_sf_1e, 0); +} +ALL_CINT1E(int1e_z) +ALL_CINT1E_FORTRAN_(int1e_z) + +void CINTgout1e_int1e_zz(dtype *gout, dtype *g, FINT *idx, CINTEnvVars *envs, FINT gout_empty) { +FINT nf = envs->nf; +FINT ix, iy, iz, n; +dtype *g0 = g; +dtype *g1 = g0 + envs->g_size * 3; +dtype *g2 = g1 + envs->g_size * 3; +dtype *g3 = g2 + envs->g_size * 3; +dtype drj[3]; +drj[0] = envs->rj[0] - envs->env[PTR_COMMON_ORIG+0]; +drj[1] = envs->rj[1] - envs->env[PTR_COMMON_ORIG+1]; +drj[2] = envs->rj[2] - envs->env[PTR_COMMON_ORIG+2]; +dtype s[9]; +G1E_RCJ(g1, g0, envs->i_l+0, envs->j_l+0, 0); +G1E_RCJ(g2, g0, envs->i_l+0, envs->j_l+1, 0); +G1E_RCJ(g3, g2, envs->i_l+0, envs->j_l+0, 0); +for (n = 0; n < nf; n++) { +ix = idx[0+n*3]; +iy = idx[1+n*3]; +iz = idx[2+n*3]; +s[0] = + g3[ix+0]*g0[iy+0]*g0[iz+0]; +s[1] = + g2[ix+0]*g1[iy+0]*g0[iz+0]; +s[2] = + g2[ix+0]*g0[iy+0]*g1[iz+0]; +s[3] = + g1[ix+0]*g2[iy+0]*g0[iz+0]; +s[4] = + g0[ix+0]*g3[iy+0]*g0[iz+0]; +s[5] = + g0[ix+0]*g2[iy+0]*g1[iz+0]; +s[6] = + g1[ix+0]*g0[iy+0]*g2[iz+0]; +s[7] = + g0[ix+0]*g1[iy+0]*g2[iz+0]; +s[8] = + g0[ix+0]*g0[iy+0]*g3[iz+0]; +if (gout_empty) { +gout[n*1+0] = + s[8]; +} else { +gout[n*1+0] += + s[8]; +}}} +void int1e_zz_optimizer(CINTOpt **opt, FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env) { +FINT ng[] = {0, 2, 0, 0, 2, 1, 1, 1}; +CINTall_1e_optimizer(opt, ng, atm, natm, bas, nbas, env); +} +CACHE_SIZE_T int1e_zz_cart(dtype *out, FINT *dims, FINT *shls, +FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env, CINTOpt *opt, dtype *cache) { +FINT ng[] = {0, 2, 0, 0, 2, 1, 1, 1}; +CINTEnvVars envs; +CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env); +envs.f_gout = &CINTgout1e_int1e_zz; +return CINT1e_drv(out, dims, &envs, cache, &c2s_cart_1e, 0); +} +CACHE_SIZE_T int1e_zz_sph(dtype *out, FINT *dims, FINT *shls, +FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env, CINTOpt *opt, dtype *cache) { +FINT ng[] = {0, 2, 0, 0, 2, 1, 1, 1}; +CINTEnvVars envs; +CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env); +envs.f_gout = &CINTgout1e_int1e_zz; +return CINT1e_drv(out, dims, &envs, cache, &c2s_sph_1e, 0); +} +CACHE_SIZE_T int1e_zz_spinor(dtype *out, FINT *dims, FINT *shls, +FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env, CINTOpt *opt, dtype *cache) { +FINT ng[] = {0, 2, 0, 0, 2, 1, 1, 1}; +CINTEnvVars envs; +CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env); +envs.f_gout = &CINTgout1e_int1e_zz; +return CINT1e_spinor_drv(out, dims, &envs, cache, &c2s_sf_1e, 0); +} +ALL_CINT1E(int1e_zz) +ALL_CINT1E_FORTRAN_(int1e_zz) + +void CINTgout1e_int1e_r(dtype *gout, dtype *g, FINT *idx, CINTEnvVars *envs, FINT gout_empty) { +FINT nf = envs->nf; +FINT ix, iy, iz, n; +dtype *g0 = g; +dtype *g1 = g0 + envs->g_size * 3; +dtype drj[3]; +drj[0] = envs->rj[0] - envs->env[PTR_COMMON_ORIG+0]; +drj[1] = envs->rj[1] - envs->env[PTR_COMMON_ORIG+1]; +drj[2] = envs->rj[2] - envs->env[PTR_COMMON_ORIG+2]; +dtype s[3]; +G1E_RCJ(g1, g0, envs->i_l+0, envs->j_l+0, 0); +for (n = 0; n < nf; n++) { +ix = idx[0+n*3]; +iy = idx[1+n*3]; +iz = idx[2+n*3]; +s[0] = + g1[ix+0]*g0[iy+0]*g0[iz+0]; +s[1] = + g0[ix+0]*g1[iy+0]*g0[iz+0]; +s[2] = + g0[ix+0]*g0[iy+0]*g1[iz+0]; +if (gout_empty) { +gout[n*3+0] = + s[0]; +gout[n*3+1] = + s[1]; +gout[n*3+2] = + s[2]; +} else { +gout[n*3+0] += + s[0]; +gout[n*3+1] += + s[1]; +gout[n*3+2] += + s[2]; +}}} +void int1e_r_optimizer(CINTOpt **opt, FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env) { +FINT ng[] = {0, 1, 0, 0, 1, 1, 1, 3}; +CINTall_1e_optimizer(opt, ng, atm, natm, bas, nbas, env); +} +CACHE_SIZE_T int1e_r_cart(dtype *out, FINT *dims, FINT *shls, +FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env, CINTOpt *opt, dtype *cache) { +FINT ng[] = {0, 1, 0, 0, 1, 1, 1, 3}; +CINTEnvVars envs; +CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env); +envs.f_gout = &CINTgout1e_int1e_r; +return CINT1e_drv(out, dims, &envs, cache, &c2s_cart_1e, 0); +} +CACHE_SIZE_T int1e_r_sph(dtype *out, FINT *dims, FINT *shls, +FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env, CINTOpt *opt, dtype *cache) { +FINT ng[] = {0, 1, 0, 0, 1, 1, 1, 3}; +CINTEnvVars envs; +CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env); +envs.f_gout = &CINTgout1e_int1e_r; +return CINT1e_drv(out, dims, &envs, cache, &c2s_sph_1e, 0); +} +CACHE_SIZE_T int1e_r_spinor(dtype *out, FINT *dims, FINT *shls, +FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env, CINTOpt *opt, dtype *cache) { +FINT ng[] = {0, 1, 0, 0, 1, 1, 1, 3}; +CINTEnvVars envs; +CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env); +envs.f_gout = &CINTgout1e_int1e_r; +return CINT1e_spinor_drv(out, dims, &envs, cache, &c2s_sf_1e, 0); +} +ALL_CINT1E(int1e_r) +ALL_CINT1E_FORTRAN_(int1e_r) + +void CINTgout1e_int1e_r2(dtype *gout, dtype *g, FINT *idx, CINTEnvVars *envs, FINT gout_empty) { +FINT nf = envs->nf; +FINT ix, iy, iz, n; +dtype *g0 = g; +dtype *g1 = g0 + envs->g_size * 3; +dtype *g2 = g1 + envs->g_size * 3; +dtype *g3 = g2 + envs->g_size * 3; +dtype drj[3]; +drj[0] = envs->rj[0] - envs->env[PTR_COMMON_ORIG+0]; +drj[1] = envs->rj[1] - envs->env[PTR_COMMON_ORIG+1]; +drj[2] = envs->rj[2] - envs->env[PTR_COMMON_ORIG+2]; +dtype s[9]; +G1E_RCJ(g1, g0, envs->i_l+0, envs->j_l+0, 0); +G1E_RCJ(g2, g0, envs->i_l+0, envs->j_l+1, 0); +G1E_RCJ(g3, g2, envs->i_l+0, envs->j_l+0, 0); +for (n = 0; n < nf; n++) { +ix = idx[0+n*3]; +iy = idx[1+n*3]; +iz = idx[2+n*3]; +s[0] = + g3[ix+0]*g0[iy+0]*g0[iz+0]; +s[1] = + g2[ix+0]*g1[iy+0]*g0[iz+0]; +s[2] = + g2[ix+0]*g0[iy+0]*g1[iz+0]; +s[3] = + g1[ix+0]*g2[iy+0]*g0[iz+0]; +s[4] = + g0[ix+0]*g3[iy+0]*g0[iz+0]; +s[5] = + g0[ix+0]*g2[iy+0]*g1[iz+0]; +s[6] = + g1[ix+0]*g0[iy+0]*g2[iz+0]; +s[7] = + g0[ix+0]*g1[iy+0]*g2[iz+0]; +s[8] = + g0[ix+0]*g0[iy+0]*g3[iz+0]; +if (gout_empty) { +gout[n*1+0] = + s[0] + s[4] + s[8]; +} else { +gout[n*1+0] += + s[0] + s[4] + s[8]; +}}} +void int1e_r2_optimizer(CINTOpt **opt, FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env) { +FINT ng[] = {0, 2, 0, 0, 2, 1, 1, 1}; +CINTall_1e_optimizer(opt, ng, atm, natm, bas, nbas, env); +} +CACHE_SIZE_T int1e_r2_cart(dtype *out, FINT *dims, FINT *shls, +FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env, CINTOpt *opt, dtype *cache) { +FINT ng[] = {0, 2, 0, 0, 2, 1, 1, 1}; +CINTEnvVars envs; +CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env); +envs.f_gout = &CINTgout1e_int1e_r2; +return CINT1e_drv(out, dims, &envs, cache, &c2s_cart_1e, 0); +} +CACHE_SIZE_T int1e_r2_sph(dtype *out, FINT *dims, FINT *shls, +FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env, CINTOpt *opt, dtype *cache) { +FINT ng[] = {0, 2, 0, 0, 2, 1, 1, 1}; +CINTEnvVars envs; +CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env); +envs.f_gout = &CINTgout1e_int1e_r2; +return CINT1e_drv(out, dims, &envs, cache, &c2s_sph_1e, 0); +} +CACHE_SIZE_T int1e_r2_spinor(dtype *out, FINT *dims, FINT *shls, +FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env, CINTOpt *opt, dtype *cache) { +FINT ng[] = {0, 2, 0, 0, 2, 1, 1, 1}; +CINTEnvVars envs; +CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env); +envs.f_gout = &CINTgout1e_int1e_r2; +return CINT1e_spinor_drv(out, dims, &envs, cache, &c2s_sf_1e, 0); +} +ALL_CINT1E(int1e_r2) +ALL_CINT1E_FORTRAN_(int1e_r2) + +void CINTgout1e_int1e_r4(dtype *gout, dtype *g, FINT *idx, CINTEnvVars *envs, FINT gout_empty) { +FINT nf = envs->nf; +FINT ix, iy, iz, n; +dtype *g0 = g; +dtype *g1 = g0 + envs->g_size * 3; +dtype *g2 = g1 + envs->g_size * 3; +dtype *g3 = g2 + envs->g_size * 3; +dtype *g4 = g3 + envs->g_size * 3; +dtype *g5 = g4 + envs->g_size * 3; +dtype *g6 = g5 + envs->g_size * 3; +dtype *g7 = g6 + envs->g_size * 3; +dtype *g8 = g7 + envs->g_size * 3; +dtype *g9 = g8 + envs->g_size * 3; +dtype *g10 = g9 + envs->g_size * 3; +dtype *g11 = g10 + envs->g_size * 3; +dtype *g12 = g11 + envs->g_size * 3; +dtype *g13 = g12 + envs->g_size * 3; +dtype *g14 = g13 + envs->g_size * 3; +dtype *g15 = g14 + envs->g_size * 3; +dtype drj[3]; +drj[0] = envs->rj[0] - envs->env[PTR_COMMON_ORIG+0]; +drj[1] = envs->rj[1] - envs->env[PTR_COMMON_ORIG+1]; +drj[2] = envs->rj[2] - envs->env[PTR_COMMON_ORIG+2]; +dtype s[81]; +G1E_RCJ(g1, g0, envs->i_l+0, envs->j_l+0, 0); +G1E_RCJ(g2, g0, envs->i_l+0, envs->j_l+1, 0); +G1E_RCJ(g3, g2, envs->i_l+0, envs->j_l+0, 0); +G1E_RCJ(g4, g0, envs->i_l+0, envs->j_l+2, 0); +G1E_RCJ(g5, g4, envs->i_l+0, envs->j_l+0, 0); +G1E_RCJ(g6, g4, envs->i_l+0, envs->j_l+1, 0); +G1E_RCJ(g7, g6, envs->i_l+0, envs->j_l+0, 0); +G1E_RCJ(g8, g0, envs->i_l+0, envs->j_l+3, 0); +G1E_RCJ(g9, g8, envs->i_l+0, envs->j_l+0, 0); +G1E_RCJ(g10, g8, envs->i_l+0, envs->j_l+1, 0); +G1E_RCJ(g11, g10, envs->i_l+0, envs->j_l+0, 0); +G1E_RCJ(g12, g8, envs->i_l+0, envs->j_l+2, 0); +G1E_RCJ(g13, g12, envs->i_l+0, envs->j_l+0, 0); +G1E_RCJ(g14, g12, envs->i_l+0, envs->j_l+1, 0); +G1E_RCJ(g15, g14, envs->i_l+0, envs->j_l+0, 0); +for (n = 0; n < nf; n++) { +ix = idx[0+n*3]; +iy = idx[1+n*3]; +iz = idx[2+n*3]; +s[0] = + g15[ix+0]*g0[iy+0]*g0[iz+0]; +s[1] = + g14[ix+0]*g1[iy+0]*g0[iz+0]; +s[2] = + g14[ix+0]*g0[iy+0]*g1[iz+0]; +s[3] = + g13[ix+0]*g2[iy+0]*g0[iz+0]; +s[4] = + g12[ix+0]*g3[iy+0]*g0[iz+0]; +s[5] = + g12[ix+0]*g2[iy+0]*g1[iz+0]; +s[6] = + g13[ix+0]*g0[iy+0]*g2[iz+0]; +s[7] = + g12[ix+0]*g1[iy+0]*g2[iz+0]; +s[8] = + g12[ix+0]*g0[iy+0]*g3[iz+0]; +s[9] = + g11[ix+0]*g4[iy+0]*g0[iz+0]; +s[10] = + g10[ix+0]*g5[iy+0]*g0[iz+0]; +s[11] = + g10[ix+0]*g4[iy+0]*g1[iz+0]; +s[12] = + g9[ix+0]*g6[iy+0]*g0[iz+0]; +s[13] = + g8[ix+0]*g7[iy+0]*g0[iz+0]; +s[14] = + g8[ix+0]*g6[iy+0]*g1[iz+0]; +s[15] = + g9[ix+0]*g4[iy+0]*g2[iz+0]; +s[16] = + g8[ix+0]*g5[iy+0]*g2[iz+0]; +s[17] = + g8[ix+0]*g4[iy+0]*g3[iz+0]; +s[18] = + g11[ix+0]*g0[iy+0]*g4[iz+0]; +s[19] = + g10[ix+0]*g1[iy+0]*g4[iz+0]; +s[20] = + g10[ix+0]*g0[iy+0]*g5[iz+0]; +s[21] = + g9[ix+0]*g2[iy+0]*g4[iz+0]; +s[22] = + g8[ix+0]*g3[iy+0]*g4[iz+0]; +s[23] = + g8[ix+0]*g2[iy+0]*g5[iz+0]; +s[24] = + g9[ix+0]*g0[iy+0]*g6[iz+0]; +s[25] = + g8[ix+0]*g1[iy+0]*g6[iz+0]; +s[26] = + g8[ix+0]*g0[iy+0]*g7[iz+0]; +s[27] = + g7[ix+0]*g8[iy+0]*g0[iz+0]; +s[28] = + g6[ix+0]*g9[iy+0]*g0[iz+0]; +s[29] = + g6[ix+0]*g8[iy+0]*g1[iz+0]; +s[30] = + g5[ix+0]*g10[iy+0]*g0[iz+0]; +s[31] = + g4[ix+0]*g11[iy+0]*g0[iz+0]; +s[32] = + g4[ix+0]*g10[iy+0]*g1[iz+0]; +s[33] = + g5[ix+0]*g8[iy+0]*g2[iz+0]; +s[34] = + g4[ix+0]*g9[iy+0]*g2[iz+0]; +s[35] = + g4[ix+0]*g8[iy+0]*g3[iz+0]; +s[36] = + g3[ix+0]*g12[iy+0]*g0[iz+0]; +s[37] = + g2[ix+0]*g13[iy+0]*g0[iz+0]; +s[38] = + g2[ix+0]*g12[iy+0]*g1[iz+0]; +s[39] = + g1[ix+0]*g14[iy+0]*g0[iz+0]; +s[40] = + g0[ix+0]*g15[iy+0]*g0[iz+0]; +s[41] = + g0[ix+0]*g14[iy+0]*g1[iz+0]; +s[42] = + g1[ix+0]*g12[iy+0]*g2[iz+0]; +s[43] = + g0[ix+0]*g13[iy+0]*g2[iz+0]; +s[44] = + g0[ix+0]*g12[iy+0]*g3[iz+0]; +s[45] = + g3[ix+0]*g8[iy+0]*g4[iz+0]; +s[46] = + g2[ix+0]*g9[iy+0]*g4[iz+0]; +s[47] = + g2[ix+0]*g8[iy+0]*g5[iz+0]; +s[48] = + g1[ix+0]*g10[iy+0]*g4[iz+0]; +s[49] = + g0[ix+0]*g11[iy+0]*g4[iz+0]; +s[50] = + g0[ix+0]*g10[iy+0]*g5[iz+0]; +s[51] = + g1[ix+0]*g8[iy+0]*g6[iz+0]; +s[52] = + g0[ix+0]*g9[iy+0]*g6[iz+0]; +s[53] = + g0[ix+0]*g8[iy+0]*g7[iz+0]; +s[54] = + g7[ix+0]*g0[iy+0]*g8[iz+0]; +s[55] = + g6[ix+0]*g1[iy+0]*g8[iz+0]; +s[56] = + g6[ix+0]*g0[iy+0]*g9[iz+0]; +s[57] = + g5[ix+0]*g2[iy+0]*g8[iz+0]; +s[58] = + g4[ix+0]*g3[iy+0]*g8[iz+0]; +s[59] = + g4[ix+0]*g2[iy+0]*g9[iz+0]; +s[60] = + g5[ix+0]*g0[iy+0]*g10[iz+0]; +s[61] = + g4[ix+0]*g1[iy+0]*g10[iz+0]; +s[62] = + g4[ix+0]*g0[iy+0]*g11[iz+0]; +s[63] = + g3[ix+0]*g4[iy+0]*g8[iz+0]; +s[64] = + g2[ix+0]*g5[iy+0]*g8[iz+0]; +s[65] = + g2[ix+0]*g4[iy+0]*g9[iz+0]; +s[66] = + g1[ix+0]*g6[iy+0]*g8[iz+0]; +s[67] = + g0[ix+0]*g7[iy+0]*g8[iz+0]; +s[68] = + g0[ix+0]*g6[iy+0]*g9[iz+0]; +s[69] = + g1[ix+0]*g4[iy+0]*g10[iz+0]; +s[70] = + g0[ix+0]*g5[iy+0]*g10[iz+0]; +s[71] = + g0[ix+0]*g4[iy+0]*g11[iz+0]; +s[72] = + g3[ix+0]*g0[iy+0]*g12[iz+0]; +s[73] = + g2[ix+0]*g1[iy+0]*g12[iz+0]; +s[74] = + g2[ix+0]*g0[iy+0]*g13[iz+0]; +s[75] = + g1[ix+0]*g2[iy+0]*g12[iz+0]; +s[76] = + g0[ix+0]*g3[iy+0]*g12[iz+0]; +s[77] = + g0[ix+0]*g2[iy+0]*g13[iz+0]; +s[78] = + g1[ix+0]*g0[iy+0]*g14[iz+0]; +s[79] = + g0[ix+0]*g1[iy+0]*g14[iz+0]; +s[80] = + g0[ix+0]*g0[iy+0]*g15[iz+0]; +if (gout_empty) { +gout[n*1+0] = + s[0] + 2*s[4] + 2*s[8] + s[40] + 2*s[44] + s[80]; +} else { +gout[n*1+0] += + s[0] + 2*s[4] + 2*s[8] + s[40] + 2*s[44] + s[80]; +}}} +void int1e_r4_optimizer(CINTOpt **opt, FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env) { +FINT ng[] = {0, 4, 0, 0, 4, 1, 1, 1}; +CINTall_1e_optimizer(opt, ng, atm, natm, bas, nbas, env); +} +CACHE_SIZE_T int1e_r4_cart(dtype *out, FINT *dims, FINT *shls, +FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env, CINTOpt *opt, dtype *cache) { +FINT ng[] = {0, 4, 0, 0, 4, 1, 1, 1}; +CINTEnvVars envs; +CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env); +envs.f_gout = &CINTgout1e_int1e_r4; +return CINT1e_drv(out, dims, &envs, cache, &c2s_cart_1e, 0); +} +CACHE_SIZE_T int1e_r4_sph(dtype *out, FINT *dims, FINT *shls, +FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env, CINTOpt *opt, dtype *cache) { +FINT ng[] = {0, 4, 0, 0, 4, 1, 1, 1}; +CINTEnvVars envs; +CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env); +envs.f_gout = &CINTgout1e_int1e_r4; +return CINT1e_drv(out, dims, &envs, cache, &c2s_sph_1e, 0); +} +CACHE_SIZE_T int1e_r4_spinor(dtype *out, FINT *dims, FINT *shls, +FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env, CINTOpt *opt, dtype *cache) { +FINT ng[] = {0, 4, 0, 0, 4, 1, 1, 1}; +CINTEnvVars envs; +CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env); +envs.f_gout = &CINTgout1e_int1e_r4; +return CINT1e_spinor_drv(out, dims, &envs, cache, &c2s_sf_1e, 0); +} +ALL_CINT1E(int1e_r4) +ALL_CINT1E_FORTRAN_(int1e_r4) + +void CINTgout1e_int1e_rr(dtype *gout, dtype *g, FINT *idx, CINTEnvVars *envs, FINT gout_empty) { +FINT nf = envs->nf; +FINT ix, iy, iz, n; +dtype *g0 = g; +dtype *g1 = g0 + envs->g_size * 3; +dtype *g2 = g1 + envs->g_size * 3; +dtype *g3 = g2 + envs->g_size * 3; +dtype drj[3]; +drj[0] = envs->rj[0] - envs->env[PTR_COMMON_ORIG+0]; +drj[1] = envs->rj[1] - envs->env[PTR_COMMON_ORIG+1]; +drj[2] = envs->rj[2] - envs->env[PTR_COMMON_ORIG+2]; +dtype s[9]; +G1E_RCJ(g1, g0, envs->i_l+0, envs->j_l+0, 0); +G1E_RCJ(g2, g0, envs->i_l+0, envs->j_l+1, 0); +G1E_RCJ(g3, g2, envs->i_l+0, envs->j_l+0, 0); +for (n = 0; n < nf; n++) { +ix = idx[0+n*3]; +iy = idx[1+n*3]; +iz = idx[2+n*3]; +s[0] = + g3[ix+0]*g0[iy+0]*g0[iz+0]; +s[1] = + g2[ix+0]*g1[iy+0]*g0[iz+0]; +s[2] = + g2[ix+0]*g0[iy+0]*g1[iz+0]; +s[3] = + g1[ix+0]*g2[iy+0]*g0[iz+0]; +s[4] = + g0[ix+0]*g3[iy+0]*g0[iz+0]; +s[5] = + g0[ix+0]*g2[iy+0]*g1[iz+0]; +s[6] = + g1[ix+0]*g0[iy+0]*g2[iz+0]; +s[7] = + g0[ix+0]*g1[iy+0]*g2[iz+0]; +s[8] = + g0[ix+0]*g0[iy+0]*g3[iz+0]; +if (gout_empty) { +gout[n*9+0] = + s[0]; +gout[n*9+1] = + s[1]; +gout[n*9+2] = + s[2]; +gout[n*9+3] = + s[3]; +gout[n*9+4] = + s[4]; +gout[n*9+5] = + s[5]; +gout[n*9+6] = + s[6]; +gout[n*9+7] = + s[7]; +gout[n*9+8] = + s[8]; +} else { +gout[n*9+0] += + s[0]; +gout[n*9+1] += + s[1]; +gout[n*9+2] += + s[2]; +gout[n*9+3] += + s[3]; +gout[n*9+4] += + s[4]; +gout[n*9+5] += + s[5]; +gout[n*9+6] += + s[6]; +gout[n*9+7] += + s[7]; +gout[n*9+8] += + s[8]; +}}} +void int1e_rr_optimizer(CINTOpt **opt, FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env) { +FINT ng[] = {0, 2, 0, 0, 2, 1, 1, 9}; +CINTall_1e_optimizer(opt, ng, atm, natm, bas, nbas, env); +} +CACHE_SIZE_T int1e_rr_cart(dtype *out, FINT *dims, FINT *shls, +FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env, CINTOpt *opt, dtype *cache) { +FINT ng[] = {0, 2, 0, 0, 2, 1, 1, 9}; +CINTEnvVars envs; +CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env); +envs.f_gout = &CINTgout1e_int1e_rr; +return CINT1e_drv(out, dims, &envs, cache, &c2s_cart_1e, 0); +} +CACHE_SIZE_T int1e_rr_sph(dtype *out, FINT *dims, FINT *shls, +FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env, CINTOpt *opt, dtype *cache) { +FINT ng[] = {0, 2, 0, 0, 2, 1, 1, 9}; +CINTEnvVars envs; +CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env); +envs.f_gout = &CINTgout1e_int1e_rr; +return CINT1e_drv(out, dims, &envs, cache, &c2s_sph_1e, 0); +} +CACHE_SIZE_T int1e_rr_spinor(dtype *out, FINT *dims, FINT *shls, +FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env, CINTOpt *opt, dtype *cache) { +FINT ng[] = {0, 2, 0, 0, 2, 1, 1, 9}; +CINTEnvVars envs; +CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env); +envs.f_gout = &CINTgout1e_int1e_rr; +return CINT1e_spinor_drv(out, dims, &envs, cache, &c2s_sf_1e, 0); +} +ALL_CINT1E(int1e_rr) +ALL_CINT1E_FORTRAN_(int1e_rr) + +void CINTgout1e_int1e_rrr(dtype *gout, dtype *g, FINT *idx, CINTEnvVars *envs, FINT gout_empty) { +FINT nf = envs->nf; +FINT ix, iy, iz, n; +dtype *g0 = g; +dtype *g1 = g0 + envs->g_size * 3; +dtype *g2 = g1 + envs->g_size * 3; +dtype *g3 = g2 + envs->g_size * 3; +dtype *g4 = g3 + envs->g_size * 3; +dtype *g5 = g4 + envs->g_size * 3; +dtype *g6 = g5 + envs->g_size * 3; +dtype *g7 = g6 + envs->g_size * 3; +dtype drj[3]; +drj[0] = envs->rj[0] - envs->env[PTR_COMMON_ORIG+0]; +drj[1] = envs->rj[1] - envs->env[PTR_COMMON_ORIG+1]; +drj[2] = envs->rj[2] - envs->env[PTR_COMMON_ORIG+2]; +dtype s[27]; +G1E_RCJ(g1, g0, envs->i_l+0, envs->j_l+0, 0); +G1E_RCJ(g2, g0, envs->i_l+0, envs->j_l+1, 0); +G1E_RCJ(g3, g2, envs->i_l+0, envs->j_l+0, 0); +G1E_RCJ(g4, g0, envs->i_l+0, envs->j_l+2, 0); +G1E_RCJ(g5, g4, envs->i_l+0, envs->j_l+0, 0); +G1E_RCJ(g6, g4, envs->i_l+0, envs->j_l+1, 0); +G1E_RCJ(g7, g6, envs->i_l+0, envs->j_l+0, 0); +for (n = 0; n < nf; n++) { +ix = idx[0+n*3]; +iy = idx[1+n*3]; +iz = idx[2+n*3]; +s[0] = + g7[ix+0]*g0[iy+0]*g0[iz+0]; +s[1] = + g6[ix+0]*g1[iy+0]*g0[iz+0]; +s[2] = + g6[ix+0]*g0[iy+0]*g1[iz+0]; +s[3] = + g5[ix+0]*g2[iy+0]*g0[iz+0]; +s[4] = + g4[ix+0]*g3[iy+0]*g0[iz+0]; +s[5] = + g4[ix+0]*g2[iy+0]*g1[iz+0]; +s[6] = + g5[ix+0]*g0[iy+0]*g2[iz+0]; +s[7] = + g4[ix+0]*g1[iy+0]*g2[iz+0]; +s[8] = + g4[ix+0]*g0[iy+0]*g3[iz+0]; +s[9] = + g3[ix+0]*g4[iy+0]*g0[iz+0]; +s[10] = + g2[ix+0]*g5[iy+0]*g0[iz+0]; +s[11] = + g2[ix+0]*g4[iy+0]*g1[iz+0]; +s[12] = + g1[ix+0]*g6[iy+0]*g0[iz+0]; +s[13] = + g0[ix+0]*g7[iy+0]*g0[iz+0]; +s[14] = + g0[ix+0]*g6[iy+0]*g1[iz+0]; +s[15] = + g1[ix+0]*g4[iy+0]*g2[iz+0]; +s[16] = + g0[ix+0]*g5[iy+0]*g2[iz+0]; +s[17] = + g0[ix+0]*g4[iy+0]*g3[iz+0]; +s[18] = + g3[ix+0]*g0[iy+0]*g4[iz+0]; +s[19] = + g2[ix+0]*g1[iy+0]*g4[iz+0]; +s[20] = + g2[ix+0]*g0[iy+0]*g5[iz+0]; +s[21] = + g1[ix+0]*g2[iy+0]*g4[iz+0]; +s[22] = + g0[ix+0]*g3[iy+0]*g4[iz+0]; +s[23] = + g0[ix+0]*g2[iy+0]*g5[iz+0]; +s[24] = + g1[ix+0]*g0[iy+0]*g6[iz+0]; +s[25] = + g0[ix+0]*g1[iy+0]*g6[iz+0]; +s[26] = + g0[ix+0]*g0[iy+0]*g7[iz+0]; +if (gout_empty) { +gout[n*27+0] = + s[0]; +gout[n*27+1] = + s[1]; +gout[n*27+2] = + s[2]; +gout[n*27+3] = + s[3]; +gout[n*27+4] = + s[4]; +gout[n*27+5] = + s[5]; +gout[n*27+6] = + s[6]; +gout[n*27+7] = + s[7]; +gout[n*27+8] = + s[8]; +gout[n*27+9] = + s[9]; +gout[n*27+10] = + s[10]; +gout[n*27+11] = + s[11]; +gout[n*27+12] = + s[12]; +gout[n*27+13] = + s[13]; +gout[n*27+14] = + s[14]; +gout[n*27+15] = + s[15]; +gout[n*27+16] = + s[16]; +gout[n*27+17] = + s[17]; +gout[n*27+18] = + s[18]; +gout[n*27+19] = + s[19]; +gout[n*27+20] = + s[20]; +gout[n*27+21] = + s[21]; +gout[n*27+22] = + s[22]; +gout[n*27+23] = + s[23]; +gout[n*27+24] = + s[24]; +gout[n*27+25] = + s[25]; +gout[n*27+26] = + s[26]; +} else { +gout[n*27+0] += + s[0]; +gout[n*27+1] += + s[1]; +gout[n*27+2] += + s[2]; +gout[n*27+3] += + s[3]; +gout[n*27+4] += + s[4]; +gout[n*27+5] += + s[5]; +gout[n*27+6] += + s[6]; +gout[n*27+7] += + s[7]; +gout[n*27+8] += + s[8]; +gout[n*27+9] += + s[9]; +gout[n*27+10] += + s[10]; +gout[n*27+11] += + s[11]; +gout[n*27+12] += + s[12]; +gout[n*27+13] += + s[13]; +gout[n*27+14] += + s[14]; +gout[n*27+15] += + s[15]; +gout[n*27+16] += + s[16]; +gout[n*27+17] += + s[17]; +gout[n*27+18] += + s[18]; +gout[n*27+19] += + s[19]; +gout[n*27+20] += + s[20]; +gout[n*27+21] += + s[21]; +gout[n*27+22] += + s[22]; +gout[n*27+23] += + s[23]; +gout[n*27+24] += + s[24]; +gout[n*27+25] += + s[25]; +gout[n*27+26] += + s[26]; +}}} +void int1e_rrr_optimizer(CINTOpt **opt, FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env) { +FINT ng[] = {0, 3, 0, 0, 3, 1, 1, 27}; +CINTall_1e_optimizer(opt, ng, atm, natm, bas, nbas, env); +} +CACHE_SIZE_T int1e_rrr_cart(dtype *out, FINT *dims, FINT *shls, +FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env, CINTOpt *opt, dtype *cache) { +FINT ng[] = {0, 3, 0, 0, 3, 1, 1, 27}; +CINTEnvVars envs; +CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env); +envs.f_gout = &CINTgout1e_int1e_rrr; +return CINT1e_drv(out, dims, &envs, cache, &c2s_cart_1e, 0); +} +CACHE_SIZE_T int1e_rrr_sph(dtype *out, FINT *dims, FINT *shls, +FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env, CINTOpt *opt, dtype *cache) { +FINT ng[] = {0, 3, 0, 0, 3, 1, 1, 27}; +CINTEnvVars envs; +CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env); +envs.f_gout = &CINTgout1e_int1e_rrr; +return CINT1e_drv(out, dims, &envs, cache, &c2s_sph_1e, 0); +} +CACHE_SIZE_T int1e_rrr_spinor(dtype *out, FINT *dims, FINT *shls, +FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env, CINTOpt *opt, dtype *cache) { +FINT ng[] = {0, 3, 0, 0, 3, 1, 1, 27}; +CINTEnvVars envs; +CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env); +envs.f_gout = &CINTgout1e_int1e_rrr; +return CINT1e_spinor_drv(out, dims, &envs, cache, &c2s_sf_1e, 0); +} +ALL_CINT1E(int1e_rrr) +ALL_CINT1E_FORTRAN_(int1e_rrr) + +void CINTgout1e_int1e_rrrr(dtype *gout, dtype *g, FINT *idx, CINTEnvVars *envs, FINT gout_empty) { +FINT nf = envs->nf; +FINT ix, iy, iz, n; +dtype *g0 = g; +dtype *g1 = g0 + envs->g_size * 3; +dtype *g2 = g1 + envs->g_size * 3; +dtype *g3 = g2 + envs->g_size * 3; +dtype *g4 = g3 + envs->g_size * 3; +dtype *g5 = g4 + envs->g_size * 3; +dtype *g6 = g5 + envs->g_size * 3; +dtype *g7 = g6 + envs->g_size * 3; +dtype *g8 = g7 + envs->g_size * 3; +dtype *g9 = g8 + envs->g_size * 3; +dtype *g10 = g9 + envs->g_size * 3; +dtype *g11 = g10 + envs->g_size * 3; +dtype *g12 = g11 + envs->g_size * 3; +dtype *g13 = g12 + envs->g_size * 3; +dtype *g14 = g13 + envs->g_size * 3; +dtype *g15 = g14 + envs->g_size * 3; +dtype drj[3]; +drj[0] = envs->rj[0] - envs->env[PTR_COMMON_ORIG+0]; +drj[1] = envs->rj[1] - envs->env[PTR_COMMON_ORIG+1]; +drj[2] = envs->rj[2] - envs->env[PTR_COMMON_ORIG+2]; +dtype s[81]; +G1E_RCJ(g1, g0, envs->i_l+0, envs->j_l+0, 0); +G1E_RCJ(g2, g0, envs->i_l+0, envs->j_l+1, 0); +G1E_RCJ(g3, g2, envs->i_l+0, envs->j_l+0, 0); +G1E_RCJ(g4, g0, envs->i_l+0, envs->j_l+2, 0); +G1E_RCJ(g5, g4, envs->i_l+0, envs->j_l+0, 0); +G1E_RCJ(g6, g4, envs->i_l+0, envs->j_l+1, 0); +G1E_RCJ(g7, g6, envs->i_l+0, envs->j_l+0, 0); +G1E_RCJ(g8, g0, envs->i_l+0, envs->j_l+3, 0); +G1E_RCJ(g9, g8, envs->i_l+0, envs->j_l+0, 0); +G1E_RCJ(g10, g8, envs->i_l+0, envs->j_l+1, 0); +G1E_RCJ(g11, g10, envs->i_l+0, envs->j_l+0, 0); +G1E_RCJ(g12, g8, envs->i_l+0, envs->j_l+2, 0); +G1E_RCJ(g13, g12, envs->i_l+0, envs->j_l+0, 0); +G1E_RCJ(g14, g12, envs->i_l+0, envs->j_l+1, 0); +G1E_RCJ(g15, g14, envs->i_l+0, envs->j_l+0, 0); +for (n = 0; n < nf; n++) { +ix = idx[0+n*3]; +iy = idx[1+n*3]; +iz = idx[2+n*3]; +s[0] = + g15[ix+0]*g0[iy+0]*g0[iz+0]; +s[1] = + g14[ix+0]*g1[iy+0]*g0[iz+0]; +s[2] = + g14[ix+0]*g0[iy+0]*g1[iz+0]; +s[3] = + g13[ix+0]*g2[iy+0]*g0[iz+0]; +s[4] = + g12[ix+0]*g3[iy+0]*g0[iz+0]; +s[5] = + g12[ix+0]*g2[iy+0]*g1[iz+0]; +s[6] = + g13[ix+0]*g0[iy+0]*g2[iz+0]; +s[7] = + g12[ix+0]*g1[iy+0]*g2[iz+0]; +s[8] = + g12[ix+0]*g0[iy+0]*g3[iz+0]; +s[9] = + g11[ix+0]*g4[iy+0]*g0[iz+0]; +s[10] = + g10[ix+0]*g5[iy+0]*g0[iz+0]; +s[11] = + g10[ix+0]*g4[iy+0]*g1[iz+0]; +s[12] = + g9[ix+0]*g6[iy+0]*g0[iz+0]; +s[13] = + g8[ix+0]*g7[iy+0]*g0[iz+0]; +s[14] = + g8[ix+0]*g6[iy+0]*g1[iz+0]; +s[15] = + g9[ix+0]*g4[iy+0]*g2[iz+0]; +s[16] = + g8[ix+0]*g5[iy+0]*g2[iz+0]; +s[17] = + g8[ix+0]*g4[iy+0]*g3[iz+0]; +s[18] = + g11[ix+0]*g0[iy+0]*g4[iz+0]; +s[19] = + g10[ix+0]*g1[iy+0]*g4[iz+0]; +s[20] = + g10[ix+0]*g0[iy+0]*g5[iz+0]; +s[21] = + g9[ix+0]*g2[iy+0]*g4[iz+0]; +s[22] = + g8[ix+0]*g3[iy+0]*g4[iz+0]; +s[23] = + g8[ix+0]*g2[iy+0]*g5[iz+0]; +s[24] = + g9[ix+0]*g0[iy+0]*g6[iz+0]; +s[25] = + g8[ix+0]*g1[iy+0]*g6[iz+0]; +s[26] = + g8[ix+0]*g0[iy+0]*g7[iz+0]; +s[27] = + g7[ix+0]*g8[iy+0]*g0[iz+0]; +s[28] = + g6[ix+0]*g9[iy+0]*g0[iz+0]; +s[29] = + g6[ix+0]*g8[iy+0]*g1[iz+0]; +s[30] = + g5[ix+0]*g10[iy+0]*g0[iz+0]; +s[31] = + g4[ix+0]*g11[iy+0]*g0[iz+0]; +s[32] = + g4[ix+0]*g10[iy+0]*g1[iz+0]; +s[33] = + g5[ix+0]*g8[iy+0]*g2[iz+0]; +s[34] = + g4[ix+0]*g9[iy+0]*g2[iz+0]; +s[35] = + g4[ix+0]*g8[iy+0]*g3[iz+0]; +s[36] = + g3[ix+0]*g12[iy+0]*g0[iz+0]; +s[37] = + g2[ix+0]*g13[iy+0]*g0[iz+0]; +s[38] = + g2[ix+0]*g12[iy+0]*g1[iz+0]; +s[39] = + g1[ix+0]*g14[iy+0]*g0[iz+0]; +s[40] = + g0[ix+0]*g15[iy+0]*g0[iz+0]; +s[41] = + g0[ix+0]*g14[iy+0]*g1[iz+0]; +s[42] = + g1[ix+0]*g12[iy+0]*g2[iz+0]; +s[43] = + g0[ix+0]*g13[iy+0]*g2[iz+0]; +s[44] = + g0[ix+0]*g12[iy+0]*g3[iz+0]; +s[45] = + g3[ix+0]*g8[iy+0]*g4[iz+0]; +s[46] = + g2[ix+0]*g9[iy+0]*g4[iz+0]; +s[47] = + g2[ix+0]*g8[iy+0]*g5[iz+0]; +s[48] = + g1[ix+0]*g10[iy+0]*g4[iz+0]; +s[49] = + g0[ix+0]*g11[iy+0]*g4[iz+0]; +s[50] = + g0[ix+0]*g10[iy+0]*g5[iz+0]; +s[51] = + g1[ix+0]*g8[iy+0]*g6[iz+0]; +s[52] = + g0[ix+0]*g9[iy+0]*g6[iz+0]; +s[53] = + g0[ix+0]*g8[iy+0]*g7[iz+0]; +s[54] = + g7[ix+0]*g0[iy+0]*g8[iz+0]; +s[55] = + g6[ix+0]*g1[iy+0]*g8[iz+0]; +s[56] = + g6[ix+0]*g0[iy+0]*g9[iz+0]; +s[57] = + g5[ix+0]*g2[iy+0]*g8[iz+0]; +s[58] = + g4[ix+0]*g3[iy+0]*g8[iz+0]; +s[59] = + g4[ix+0]*g2[iy+0]*g9[iz+0]; +s[60] = + g5[ix+0]*g0[iy+0]*g10[iz+0]; +s[61] = + g4[ix+0]*g1[iy+0]*g10[iz+0]; +s[62] = + g4[ix+0]*g0[iy+0]*g11[iz+0]; +s[63] = + g3[ix+0]*g4[iy+0]*g8[iz+0]; +s[64] = + g2[ix+0]*g5[iy+0]*g8[iz+0]; +s[65] = + g2[ix+0]*g4[iy+0]*g9[iz+0]; +s[66] = + g1[ix+0]*g6[iy+0]*g8[iz+0]; +s[67] = + g0[ix+0]*g7[iy+0]*g8[iz+0]; +s[68] = + g0[ix+0]*g6[iy+0]*g9[iz+0]; +s[69] = + g1[ix+0]*g4[iy+0]*g10[iz+0]; +s[70] = + g0[ix+0]*g5[iy+0]*g10[iz+0]; +s[71] = + g0[ix+0]*g4[iy+0]*g11[iz+0]; +s[72] = + g3[ix+0]*g0[iy+0]*g12[iz+0]; +s[73] = + g2[ix+0]*g1[iy+0]*g12[iz+0]; +s[74] = + g2[ix+0]*g0[iy+0]*g13[iz+0]; +s[75] = + g1[ix+0]*g2[iy+0]*g12[iz+0]; +s[76] = + g0[ix+0]*g3[iy+0]*g12[iz+0]; +s[77] = + g0[ix+0]*g2[iy+0]*g13[iz+0]; +s[78] = + g1[ix+0]*g0[iy+0]*g14[iz+0]; +s[79] = + g0[ix+0]*g1[iy+0]*g14[iz+0]; +s[80] = + g0[ix+0]*g0[iy+0]*g15[iz+0]; +if (gout_empty) { +gout[n*81+0] = + s[0]; +gout[n*81+1] = + s[1]; +gout[n*81+2] = + s[2]; +gout[n*81+3] = + s[3]; +gout[n*81+4] = + s[4]; +gout[n*81+5] = + s[5]; +gout[n*81+6] = + s[6]; +gout[n*81+7] = + s[7]; +gout[n*81+8] = + s[8]; +gout[n*81+9] = + s[9]; +gout[n*81+10] = + s[10]; +gout[n*81+11] = + s[11]; +gout[n*81+12] = + s[12]; +gout[n*81+13] = + s[13]; +gout[n*81+14] = + s[14]; +gout[n*81+15] = + s[15]; +gout[n*81+16] = + s[16]; +gout[n*81+17] = + s[17]; +gout[n*81+18] = + s[18]; +gout[n*81+19] = + s[19]; +gout[n*81+20] = + s[20]; +gout[n*81+21] = + s[21]; +gout[n*81+22] = + s[22]; +gout[n*81+23] = + s[23]; +gout[n*81+24] = + s[24]; +gout[n*81+25] = + s[25]; +gout[n*81+26] = + s[26]; +gout[n*81+27] = + s[27]; +gout[n*81+28] = + s[28]; +gout[n*81+29] = + s[29]; +gout[n*81+30] = + s[30]; +gout[n*81+31] = + s[31]; +gout[n*81+32] = + s[32]; +gout[n*81+33] = + s[33]; +gout[n*81+34] = + s[34]; +gout[n*81+35] = + s[35]; +gout[n*81+36] = + s[36]; +gout[n*81+37] = + s[37]; +gout[n*81+38] = + s[38]; +gout[n*81+39] = + s[39]; +gout[n*81+40] = + s[40]; +gout[n*81+41] = + s[41]; +gout[n*81+42] = + s[42]; +gout[n*81+43] = + s[43]; +gout[n*81+44] = + s[44]; +gout[n*81+45] = + s[45]; +gout[n*81+46] = + s[46]; +gout[n*81+47] = + s[47]; +gout[n*81+48] = + s[48]; +gout[n*81+49] = + s[49]; +gout[n*81+50] = + s[50]; +gout[n*81+51] = + s[51]; +gout[n*81+52] = + s[52]; +gout[n*81+53] = + s[53]; +gout[n*81+54] = + s[54]; +gout[n*81+55] = + s[55]; +gout[n*81+56] = + s[56]; +gout[n*81+57] = + s[57]; +gout[n*81+58] = + s[58]; +gout[n*81+59] = + s[59]; +gout[n*81+60] = + s[60]; +gout[n*81+61] = + s[61]; +gout[n*81+62] = + s[62]; +gout[n*81+63] = + s[63]; +gout[n*81+64] = + s[64]; +gout[n*81+65] = + s[65]; +gout[n*81+66] = + s[66]; +gout[n*81+67] = + s[67]; +gout[n*81+68] = + s[68]; +gout[n*81+69] = + s[69]; +gout[n*81+70] = + s[70]; +gout[n*81+71] = + s[71]; +gout[n*81+72] = + s[72]; +gout[n*81+73] = + s[73]; +gout[n*81+74] = + s[74]; +gout[n*81+75] = + s[75]; +gout[n*81+76] = + s[76]; +gout[n*81+77] = + s[77]; +gout[n*81+78] = + s[78]; +gout[n*81+79] = + s[79]; +gout[n*81+80] = + s[80]; +} else { +gout[n*81+0] += + s[0]; +gout[n*81+1] += + s[1]; +gout[n*81+2] += + s[2]; +gout[n*81+3] += + s[3]; +gout[n*81+4] += + s[4]; +gout[n*81+5] += + s[5]; +gout[n*81+6] += + s[6]; +gout[n*81+7] += + s[7]; +gout[n*81+8] += + s[8]; +gout[n*81+9] += + s[9]; +gout[n*81+10] += + s[10]; +gout[n*81+11] += + s[11]; +gout[n*81+12] += + s[12]; +gout[n*81+13] += + s[13]; +gout[n*81+14] += + s[14]; +gout[n*81+15] += + s[15]; +gout[n*81+16] += + s[16]; +gout[n*81+17] += + s[17]; +gout[n*81+18] += + s[18]; +gout[n*81+19] += + s[19]; +gout[n*81+20] += + s[20]; +gout[n*81+21] += + s[21]; +gout[n*81+22] += + s[22]; +gout[n*81+23] += + s[23]; +gout[n*81+24] += + s[24]; +gout[n*81+25] += + s[25]; +gout[n*81+26] += + s[26]; +gout[n*81+27] += + s[27]; +gout[n*81+28] += + s[28]; +gout[n*81+29] += + s[29]; +gout[n*81+30] += + s[30]; +gout[n*81+31] += + s[31]; +gout[n*81+32] += + s[32]; +gout[n*81+33] += + s[33]; +gout[n*81+34] += + s[34]; +gout[n*81+35] += + s[35]; +gout[n*81+36] += + s[36]; +gout[n*81+37] += + s[37]; +gout[n*81+38] += + s[38]; +gout[n*81+39] += + s[39]; +gout[n*81+40] += + s[40]; +gout[n*81+41] += + s[41]; +gout[n*81+42] += + s[42]; +gout[n*81+43] += + s[43]; +gout[n*81+44] += + s[44]; +gout[n*81+45] += + s[45]; +gout[n*81+46] += + s[46]; +gout[n*81+47] += + s[47]; +gout[n*81+48] += + s[48]; +gout[n*81+49] += + s[49]; +gout[n*81+50] += + s[50]; +gout[n*81+51] += + s[51]; +gout[n*81+52] += + s[52]; +gout[n*81+53] += + s[53]; +gout[n*81+54] += + s[54]; +gout[n*81+55] += + s[55]; +gout[n*81+56] += + s[56]; +gout[n*81+57] += + s[57]; +gout[n*81+58] += + s[58]; +gout[n*81+59] += + s[59]; +gout[n*81+60] += + s[60]; +gout[n*81+61] += + s[61]; +gout[n*81+62] += + s[62]; +gout[n*81+63] += + s[63]; +gout[n*81+64] += + s[64]; +gout[n*81+65] += + s[65]; +gout[n*81+66] += + s[66]; +gout[n*81+67] += + s[67]; +gout[n*81+68] += + s[68]; +gout[n*81+69] += + s[69]; +gout[n*81+70] += + s[70]; +gout[n*81+71] += + s[71]; +gout[n*81+72] += + s[72]; +gout[n*81+73] += + s[73]; +gout[n*81+74] += + s[74]; +gout[n*81+75] += + s[75]; +gout[n*81+76] += + s[76]; +gout[n*81+77] += + s[77]; +gout[n*81+78] += + s[78]; +gout[n*81+79] += + s[79]; +gout[n*81+80] += + s[80]; +}}} +void int1e_rrrr_optimizer(CINTOpt **opt, FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env) { +FINT ng[] = {0, 4, 0, 0, 4, 1, 1, 81}; +CINTall_1e_optimizer(opt, ng, atm, natm, bas, nbas, env); +} +CACHE_SIZE_T int1e_rrrr_cart(dtype *out, FINT *dims, FINT *shls, +FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env, CINTOpt *opt, dtype *cache) { +FINT ng[] = {0, 4, 0, 0, 4, 1, 1, 81}; +CINTEnvVars envs; +CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env); +envs.f_gout = &CINTgout1e_int1e_rrrr; +return CINT1e_drv(out, dims, &envs, cache, &c2s_cart_1e, 0); +} +CACHE_SIZE_T int1e_rrrr_sph(dtype *out, FINT *dims, FINT *shls, +FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env, CINTOpt *opt, dtype *cache) { +FINT ng[] = {0, 4, 0, 0, 4, 1, 1, 81}; +CINTEnvVars envs; +CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env); +envs.f_gout = &CINTgout1e_int1e_rrrr; +return CINT1e_drv(out, dims, &envs, cache, &c2s_sph_1e, 0); +} +CACHE_SIZE_T int1e_rrrr_spinor(dtype *out, FINT *dims, FINT *shls, +FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env, CINTOpt *opt, dtype *cache) { +FINT ng[] = {0, 4, 0, 0, 4, 1, 1, 81}; +CINTEnvVars envs; +CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env); +envs.f_gout = &CINTgout1e_int1e_rrrr; +return CINT1e_spinor_drv(out, dims, &envs, cache, &c2s_sf_1e, 0); +} +ALL_CINT1E(int1e_rrrr) +ALL_CINT1E_FORTRAN_(int1e_rrrr) + +void CINTgout1e_int1e_z_origj(dtype *gout, dtype *g, FINT *idx, CINTEnvVars *envs, FINT gout_empty) { +FINT nf = envs->nf; +FINT ix, iy, iz, n; +dtype *g0 = g; +dtype *g1 = g0 + envs->g_size * 3; +dtype s[3]; +G1E_R_J(g1, g0, envs->i_l+0, envs->j_l+0, 0); +for (n = 0; n < nf; n++) { +ix = idx[0+n*3]; +iy = idx[1+n*3]; +iz = idx[2+n*3]; +s[0] = + g1[ix+0]*g0[iy+0]*g0[iz+0]; +s[1] = + g0[ix+0]*g1[iy+0]*g0[iz+0]; +s[2] = + g0[ix+0]*g0[iy+0]*g1[iz+0]; +if (gout_empty) { +gout[n*1+0] = + s[2]; +} else { +gout[n*1+0] += + s[2]; +}}} +void int1e_z_origj_optimizer(CINTOpt **opt, FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env) { +FINT ng[] = {0, 1, 0, 0, 1, 1, 1, 1}; +CINTall_1e_optimizer(opt, ng, atm, natm, bas, nbas, env); +} +CACHE_SIZE_T int1e_z_origj_cart(dtype *out, FINT *dims, FINT *shls, +FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env, CINTOpt *opt, dtype *cache) { +FINT ng[] = {0, 1, 0, 0, 1, 1, 1, 1}; +CINTEnvVars envs; +CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env); +envs.f_gout = &CINTgout1e_int1e_z_origj; +return CINT1e_drv(out, dims, &envs, cache, &c2s_cart_1e, 0); +} +CACHE_SIZE_T int1e_z_origj_sph(dtype *out, FINT *dims, FINT *shls, +FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env, CINTOpt *opt, dtype *cache) { +FINT ng[] = {0, 1, 0, 0, 1, 1, 1, 1}; +CINTEnvVars envs; +CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env); +envs.f_gout = &CINTgout1e_int1e_z_origj; +return CINT1e_drv(out, dims, &envs, cache, &c2s_sph_1e, 0); +} +CACHE_SIZE_T int1e_z_origj_spinor(dtype *out, FINT *dims, FINT *shls, +FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env, CINTOpt *opt, dtype *cache) { +FINT ng[] = {0, 1, 0, 0, 1, 1, 1, 1}; +CINTEnvVars envs; +CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env); +envs.f_gout = &CINTgout1e_int1e_z_origj; +return CINT1e_spinor_drv(out, dims, &envs, cache, &c2s_sf_1e, 0); +} +ALL_CINT1E(int1e_z_origj) +ALL_CINT1E_FORTRAN_(int1e_z_origj) + +void CINTgout1e_int1e_zz_origj(dtype *gout, dtype *g, FINT *idx, CINTEnvVars *envs, FINT gout_empty) { +FINT nf = envs->nf; +FINT ix, iy, iz, n; +dtype *g0 = g; +dtype *g1 = g0 + envs->g_size * 3; +dtype *g2 = g1 + envs->g_size * 3; +dtype *g3 = g2 + envs->g_size * 3; +dtype s[9]; +G1E_R_J(g1, g0, envs->i_l+0, envs->j_l+0, 0); +G1E_R_J(g2, g0, envs->i_l+0, envs->j_l+1, 0); +G1E_R_J(g3, g2, envs->i_l+0, envs->j_l+0, 0); +for (n = 0; n < nf; n++) { +ix = idx[0+n*3]; +iy = idx[1+n*3]; +iz = idx[2+n*3]; +s[0] = + g3[ix+0]*g0[iy+0]*g0[iz+0]; +s[1] = + g2[ix+0]*g1[iy+0]*g0[iz+0]; +s[2] = + g2[ix+0]*g0[iy+0]*g1[iz+0]; +s[3] = + g1[ix+0]*g2[iy+0]*g0[iz+0]; +s[4] = + g0[ix+0]*g3[iy+0]*g0[iz+0]; +s[5] = + g0[ix+0]*g2[iy+0]*g1[iz+0]; +s[6] = + g1[ix+0]*g0[iy+0]*g2[iz+0]; +s[7] = + g0[ix+0]*g1[iy+0]*g2[iz+0]; +s[8] = + g0[ix+0]*g0[iy+0]*g3[iz+0]; +if (gout_empty) { +gout[n*1+0] = + s[8]; +} else { +gout[n*1+0] += + s[8]; +}}} +void int1e_zz_origj_optimizer(CINTOpt **opt, FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env) { +FINT ng[] = {0, 2, 0, 0, 2, 1, 1, 1}; +CINTall_1e_optimizer(opt, ng, atm, natm, bas, nbas, env); +} +CACHE_SIZE_T int1e_zz_origj_cart(dtype *out, FINT *dims, FINT *shls, +FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env, CINTOpt *opt, dtype *cache) { +FINT ng[] = {0, 2, 0, 0, 2, 1, 1, 1}; +CINTEnvVars envs; +CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env); +envs.f_gout = &CINTgout1e_int1e_zz_origj; +return CINT1e_drv(out, dims, &envs, cache, &c2s_cart_1e, 0); +} +CACHE_SIZE_T int1e_zz_origj_sph(dtype *out, FINT *dims, FINT *shls, +FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env, CINTOpt *opt, dtype *cache) { +FINT ng[] = {0, 2, 0, 0, 2, 1, 1, 1}; +CINTEnvVars envs; +CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env); +envs.f_gout = &CINTgout1e_int1e_zz_origj; +return CINT1e_drv(out, dims, &envs, cache, &c2s_sph_1e, 0); +} +CACHE_SIZE_T int1e_zz_origj_spinor(dtype *out, FINT *dims, FINT *shls, +FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env, CINTOpt *opt, dtype *cache) { +FINT ng[] = {0, 2, 0, 0, 2, 1, 1, 1}; +CINTEnvVars envs; +CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env); +envs.f_gout = &CINTgout1e_int1e_zz_origj; +return CINT1e_spinor_drv(out, dims, &envs, cache, &c2s_sf_1e, 0); +} +ALL_CINT1E(int1e_zz_origj) +ALL_CINT1E_FORTRAN_(int1e_zz_origj) + +void CINTgout1e_int1e_r_origj(dtype *gout, dtype *g, FINT *idx, CINTEnvVars *envs, FINT gout_empty) { +FINT nf = envs->nf; +FINT ix, iy, iz, n; +dtype *g0 = g; +dtype *g1 = g0 + envs->g_size * 3; +dtype s[3]; +G1E_R_J(g1, g0, envs->i_l+0, envs->j_l+0, 0); +for (n = 0; n < nf; n++) { +ix = idx[0+n*3]; +iy = idx[1+n*3]; +iz = idx[2+n*3]; +s[0] = + g1[ix+0]*g0[iy+0]*g0[iz+0]; +s[1] = + g0[ix+0]*g1[iy+0]*g0[iz+0]; +s[2] = + g0[ix+0]*g0[iy+0]*g1[iz+0]; +if (gout_empty) { +gout[n*3+0] = + s[0]; +gout[n*3+1] = + s[1]; +gout[n*3+2] = + s[2]; +} else { +gout[n*3+0] += + s[0]; +gout[n*3+1] += + s[1]; +gout[n*3+2] += + s[2]; +}}} +void int1e_r_origj_optimizer(CINTOpt **opt, FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env) { +FINT ng[] = {0, 1, 0, 0, 1, 1, 1, 3}; +CINTall_1e_optimizer(opt, ng, atm, natm, bas, nbas, env); +} +CACHE_SIZE_T int1e_r_origj_cart(dtype *out, FINT *dims, FINT *shls, +FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env, CINTOpt *opt, dtype *cache) { +FINT ng[] = {0, 1, 0, 0, 1, 1, 1, 3}; +CINTEnvVars envs; +CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env); +envs.f_gout = &CINTgout1e_int1e_r_origj; +return CINT1e_drv(out, dims, &envs, cache, &c2s_cart_1e, 0); +} +CACHE_SIZE_T int1e_r_origj_sph(dtype *out, FINT *dims, FINT *shls, +FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env, CINTOpt *opt, dtype *cache) { +FINT ng[] = {0, 1, 0, 0, 1, 1, 1, 3}; +CINTEnvVars envs; +CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env); +envs.f_gout = &CINTgout1e_int1e_r_origj; +return CINT1e_drv(out, dims, &envs, cache, &c2s_sph_1e, 0); +} +CACHE_SIZE_T int1e_r_origj_spinor(dtype *out, FINT *dims, FINT *shls, +FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env, CINTOpt *opt, dtype *cache) { +FINT ng[] = {0, 1, 0, 0, 1, 1, 1, 3}; +CINTEnvVars envs; +CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env); +envs.f_gout = &CINTgout1e_int1e_r_origj; +return CINT1e_spinor_drv(out, dims, &envs, cache, &c2s_sf_1e, 0); +} +ALL_CINT1E(int1e_r_origj) +ALL_CINT1E_FORTRAN_(int1e_r_origj) + +void CINTgout1e_int1e_rr_origj(dtype *gout, dtype *g, FINT *idx, CINTEnvVars *envs, FINT gout_empty) { +FINT nf = envs->nf; +FINT ix, iy, iz, n; +dtype *g0 = g; +dtype *g1 = g0 + envs->g_size * 3; +dtype *g2 = g1 + envs->g_size * 3; +dtype *g3 = g2 + envs->g_size * 3; +dtype s[9]; +G1E_R_J(g1, g0, envs->i_l+0, envs->j_l+0, 0); +G1E_R_J(g2, g0, envs->i_l+0, envs->j_l+1, 0); +G1E_R_J(g3, g2, envs->i_l+0, envs->j_l+0, 0); +for (n = 0; n < nf; n++) { +ix = idx[0+n*3]; +iy = idx[1+n*3]; +iz = idx[2+n*3]; +s[0] = + g3[ix+0]*g0[iy+0]*g0[iz+0]; +s[1] = + g2[ix+0]*g1[iy+0]*g0[iz+0]; +s[2] = + g2[ix+0]*g0[iy+0]*g1[iz+0]; +s[3] = + g1[ix+0]*g2[iy+0]*g0[iz+0]; +s[4] = + g0[ix+0]*g3[iy+0]*g0[iz+0]; +s[5] = + g0[ix+0]*g2[iy+0]*g1[iz+0]; +s[6] = + g1[ix+0]*g0[iy+0]*g2[iz+0]; +s[7] = + g0[ix+0]*g1[iy+0]*g2[iz+0]; +s[8] = + g0[ix+0]*g0[iy+0]*g3[iz+0]; +if (gout_empty) { +gout[n*9+0] = + s[0]; +gout[n*9+1] = + s[1]; +gout[n*9+2] = + s[2]; +gout[n*9+3] = + s[3]; +gout[n*9+4] = + s[4]; +gout[n*9+5] = + s[5]; +gout[n*9+6] = + s[6]; +gout[n*9+7] = + s[7]; +gout[n*9+8] = + s[8]; +} else { +gout[n*9+0] += + s[0]; +gout[n*9+1] += + s[1]; +gout[n*9+2] += + s[2]; +gout[n*9+3] += + s[3]; +gout[n*9+4] += + s[4]; +gout[n*9+5] += + s[5]; +gout[n*9+6] += + s[6]; +gout[n*9+7] += + s[7]; +gout[n*9+8] += + s[8]; +}}} +void int1e_rr_origj_optimizer(CINTOpt **opt, FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env) { +FINT ng[] = {0, 2, 0, 0, 2, 1, 1, 9}; +CINTall_1e_optimizer(opt, ng, atm, natm, bas, nbas, env); +} +CACHE_SIZE_T int1e_rr_origj_cart(dtype *out, FINT *dims, FINT *shls, +FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env, CINTOpt *opt, dtype *cache) { +FINT ng[] = {0, 2, 0, 0, 2, 1, 1, 9}; +CINTEnvVars envs; +CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env); +envs.f_gout = &CINTgout1e_int1e_rr_origj; +return CINT1e_drv(out, dims, &envs, cache, &c2s_cart_1e, 0); +} +CACHE_SIZE_T int1e_rr_origj_sph(dtype *out, FINT *dims, FINT *shls, +FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env, CINTOpt *opt, dtype *cache) { +FINT ng[] = {0, 2, 0, 0, 2, 1, 1, 9}; +CINTEnvVars envs; +CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env); +envs.f_gout = &CINTgout1e_int1e_rr_origj; +return CINT1e_drv(out, dims, &envs, cache, &c2s_sph_1e, 0); +} +CACHE_SIZE_T int1e_rr_origj_spinor(dtype *out, FINT *dims, FINT *shls, +FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env, CINTOpt *opt, dtype *cache) { +FINT ng[] = {0, 2, 0, 0, 2, 1, 1, 9}; +CINTEnvVars envs; +CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env); +envs.f_gout = &CINTgout1e_int1e_rr_origj; +return CINT1e_spinor_drv(out, dims, &envs, cache, &c2s_sf_1e, 0); +} +ALL_CINT1E(int1e_rr_origj) +ALL_CINT1E_FORTRAN_(int1e_rr_origj) + +void CINTgout1e_int1e_r2_origj(dtype *gout, dtype *g, FINT *idx, CINTEnvVars *envs, FINT gout_empty) { +FINT nf = envs->nf; +FINT ix, iy, iz, n; +dtype *g0 = g; +dtype *g1 = g0 + envs->g_size * 3; +dtype *g2 = g1 + envs->g_size * 3; +dtype *g3 = g2 + envs->g_size * 3; +dtype s[9]; +G1E_R_J(g1, g0, envs->i_l+0, envs->j_l+0, 0); +G1E_R_J(g2, g0, envs->i_l+0, envs->j_l+1, 0); +G1E_R_J(g3, g2, envs->i_l+0, envs->j_l+0, 0); +for (n = 0; n < nf; n++) { +ix = idx[0+n*3]; +iy = idx[1+n*3]; +iz = idx[2+n*3]; +s[0] = + g3[ix+0]*g0[iy+0]*g0[iz+0]; +s[1] = + g2[ix+0]*g1[iy+0]*g0[iz+0]; +s[2] = + g2[ix+0]*g0[iy+0]*g1[iz+0]; +s[3] = + g1[ix+0]*g2[iy+0]*g0[iz+0]; +s[4] = + g0[ix+0]*g3[iy+0]*g0[iz+0]; +s[5] = + g0[ix+0]*g2[iy+0]*g1[iz+0]; +s[6] = + g1[ix+0]*g0[iy+0]*g2[iz+0]; +s[7] = + g0[ix+0]*g1[iy+0]*g2[iz+0]; +s[8] = + g0[ix+0]*g0[iy+0]*g3[iz+0]; +if (gout_empty) { +gout[n*1+0] = + s[0] + s[4] + s[8]; +} else { +gout[n*1+0] += + s[0] + s[4] + s[8]; +}}} +void int1e_r2_origj_optimizer(CINTOpt **opt, FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env) { +FINT ng[] = {0, 2, 0, 0, 2, 1, 1, 1}; +CINTall_1e_optimizer(opt, ng, atm, natm, bas, nbas, env); +} +CACHE_SIZE_T int1e_r2_origj_cart(dtype *out, FINT *dims, FINT *shls, +FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env, CINTOpt *opt, dtype *cache) { +FINT ng[] = {0, 2, 0, 0, 2, 1, 1, 1}; +CINTEnvVars envs; +CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env); +envs.f_gout = &CINTgout1e_int1e_r2_origj; +return CINT1e_drv(out, dims, &envs, cache, &c2s_cart_1e, 0); +} +CACHE_SIZE_T int1e_r2_origj_sph(dtype *out, FINT *dims, FINT *shls, +FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env, CINTOpt *opt, dtype *cache) { +FINT ng[] = {0, 2, 0, 0, 2, 1, 1, 1}; +CINTEnvVars envs; +CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env); +envs.f_gout = &CINTgout1e_int1e_r2_origj; +return CINT1e_drv(out, dims, &envs, cache, &c2s_sph_1e, 0); +} +CACHE_SIZE_T int1e_r2_origj_spinor(dtype *out, FINT *dims, FINT *shls, +FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env, CINTOpt *opt, dtype *cache) { +FINT ng[] = {0, 2, 0, 0, 2, 1, 1, 1}; +CINTEnvVars envs; +CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env); +envs.f_gout = &CINTgout1e_int1e_r2_origj; +return CINT1e_spinor_drv(out, dims, &envs, cache, &c2s_sf_1e, 0); +} +ALL_CINT1E(int1e_r2_origj) +ALL_CINT1E_FORTRAN_(int1e_r2_origj) + +void CINTgout1e_int1e_r4_origj(dtype *gout, dtype *g, FINT *idx, CINTEnvVars *envs, FINT gout_empty) { +FINT nf = envs->nf; +FINT ix, iy, iz, n; +dtype *g0 = g; +dtype *g1 = g0 + envs->g_size * 3; +dtype *g2 = g1 + envs->g_size * 3; +dtype *g3 = g2 + envs->g_size * 3; +dtype *g4 = g3 + envs->g_size * 3; +dtype *g5 = g4 + envs->g_size * 3; +dtype *g6 = g5 + envs->g_size * 3; +dtype *g7 = g6 + envs->g_size * 3; +dtype *g8 = g7 + envs->g_size * 3; +dtype *g9 = g8 + envs->g_size * 3; +dtype *g10 = g9 + envs->g_size * 3; +dtype *g11 = g10 + envs->g_size * 3; +dtype *g12 = g11 + envs->g_size * 3; +dtype *g13 = g12 + envs->g_size * 3; +dtype *g14 = g13 + envs->g_size * 3; +dtype *g15 = g14 + envs->g_size * 3; +dtype s[81]; +G1E_R_J(g1, g0, envs->i_l+0, envs->j_l+0, 0); +G1E_R_J(g2, g0, envs->i_l+0, envs->j_l+1, 0); +G1E_R_J(g3, g2, envs->i_l+0, envs->j_l+0, 0); +G1E_R_J(g4, g0, envs->i_l+0, envs->j_l+2, 0); +G1E_R_J(g5, g4, envs->i_l+0, envs->j_l+0, 0); +G1E_R_J(g6, g4, envs->i_l+0, envs->j_l+1, 0); +G1E_R_J(g7, g6, envs->i_l+0, envs->j_l+0, 0); +G1E_R_J(g8, g0, envs->i_l+0, envs->j_l+3, 0); +G1E_R_J(g9, g8, envs->i_l+0, envs->j_l+0, 0); +G1E_R_J(g10, g8, envs->i_l+0, envs->j_l+1, 0); +G1E_R_J(g11, g10, envs->i_l+0, envs->j_l+0, 0); +G1E_R_J(g12, g8, envs->i_l+0, envs->j_l+2, 0); +G1E_R_J(g13, g12, envs->i_l+0, envs->j_l+0, 0); +G1E_R_J(g14, g12, envs->i_l+0, envs->j_l+1, 0); +G1E_R_J(g15, g14, envs->i_l+0, envs->j_l+0, 0); +for (n = 0; n < nf; n++) { +ix = idx[0+n*3]; +iy = idx[1+n*3]; +iz = idx[2+n*3]; +s[0] = + g15[ix+0]*g0[iy+0]*g0[iz+0]; +s[1] = + g14[ix+0]*g1[iy+0]*g0[iz+0]; +s[2] = + g14[ix+0]*g0[iy+0]*g1[iz+0]; +s[3] = + g13[ix+0]*g2[iy+0]*g0[iz+0]; +s[4] = + g12[ix+0]*g3[iy+0]*g0[iz+0]; +s[5] = + g12[ix+0]*g2[iy+0]*g1[iz+0]; +s[6] = + g13[ix+0]*g0[iy+0]*g2[iz+0]; +s[7] = + g12[ix+0]*g1[iy+0]*g2[iz+0]; +s[8] = + g12[ix+0]*g0[iy+0]*g3[iz+0]; +s[9] = + g11[ix+0]*g4[iy+0]*g0[iz+0]; +s[10] = + g10[ix+0]*g5[iy+0]*g0[iz+0]; +s[11] = + g10[ix+0]*g4[iy+0]*g1[iz+0]; +s[12] = + g9[ix+0]*g6[iy+0]*g0[iz+0]; +s[13] = + g8[ix+0]*g7[iy+0]*g0[iz+0]; +s[14] = + g8[ix+0]*g6[iy+0]*g1[iz+0]; +s[15] = + g9[ix+0]*g4[iy+0]*g2[iz+0]; +s[16] = + g8[ix+0]*g5[iy+0]*g2[iz+0]; +s[17] = + g8[ix+0]*g4[iy+0]*g3[iz+0]; +s[18] = + g11[ix+0]*g0[iy+0]*g4[iz+0]; +s[19] = + g10[ix+0]*g1[iy+0]*g4[iz+0]; +s[20] = + g10[ix+0]*g0[iy+0]*g5[iz+0]; +s[21] = + g9[ix+0]*g2[iy+0]*g4[iz+0]; +s[22] = + g8[ix+0]*g3[iy+0]*g4[iz+0]; +s[23] = + g8[ix+0]*g2[iy+0]*g5[iz+0]; +s[24] = + g9[ix+0]*g0[iy+0]*g6[iz+0]; +s[25] = + g8[ix+0]*g1[iy+0]*g6[iz+0]; +s[26] = + g8[ix+0]*g0[iy+0]*g7[iz+0]; +s[27] = + g7[ix+0]*g8[iy+0]*g0[iz+0]; +s[28] = + g6[ix+0]*g9[iy+0]*g0[iz+0]; +s[29] = + g6[ix+0]*g8[iy+0]*g1[iz+0]; +s[30] = + g5[ix+0]*g10[iy+0]*g0[iz+0]; +s[31] = + g4[ix+0]*g11[iy+0]*g0[iz+0]; +s[32] = + g4[ix+0]*g10[iy+0]*g1[iz+0]; +s[33] = + g5[ix+0]*g8[iy+0]*g2[iz+0]; +s[34] = + g4[ix+0]*g9[iy+0]*g2[iz+0]; +s[35] = + g4[ix+0]*g8[iy+0]*g3[iz+0]; +s[36] = + g3[ix+0]*g12[iy+0]*g0[iz+0]; +s[37] = + g2[ix+0]*g13[iy+0]*g0[iz+0]; +s[38] = + g2[ix+0]*g12[iy+0]*g1[iz+0]; +s[39] = + g1[ix+0]*g14[iy+0]*g0[iz+0]; +s[40] = + g0[ix+0]*g15[iy+0]*g0[iz+0]; +s[41] = + g0[ix+0]*g14[iy+0]*g1[iz+0]; +s[42] = + g1[ix+0]*g12[iy+0]*g2[iz+0]; +s[43] = + g0[ix+0]*g13[iy+0]*g2[iz+0]; +s[44] = + g0[ix+0]*g12[iy+0]*g3[iz+0]; +s[45] = + g3[ix+0]*g8[iy+0]*g4[iz+0]; +s[46] = + g2[ix+0]*g9[iy+0]*g4[iz+0]; +s[47] = + g2[ix+0]*g8[iy+0]*g5[iz+0]; +s[48] = + g1[ix+0]*g10[iy+0]*g4[iz+0]; +s[49] = + g0[ix+0]*g11[iy+0]*g4[iz+0]; +s[50] = + g0[ix+0]*g10[iy+0]*g5[iz+0]; +s[51] = + g1[ix+0]*g8[iy+0]*g6[iz+0]; +s[52] = + g0[ix+0]*g9[iy+0]*g6[iz+0]; +s[53] = + g0[ix+0]*g8[iy+0]*g7[iz+0]; +s[54] = + g7[ix+0]*g0[iy+0]*g8[iz+0]; +s[55] = + g6[ix+0]*g1[iy+0]*g8[iz+0]; +s[56] = + g6[ix+0]*g0[iy+0]*g9[iz+0]; +s[57] = + g5[ix+0]*g2[iy+0]*g8[iz+0]; +s[58] = + g4[ix+0]*g3[iy+0]*g8[iz+0]; +s[59] = + g4[ix+0]*g2[iy+0]*g9[iz+0]; +s[60] = + g5[ix+0]*g0[iy+0]*g10[iz+0]; +s[61] = + g4[ix+0]*g1[iy+0]*g10[iz+0]; +s[62] = + g4[ix+0]*g0[iy+0]*g11[iz+0]; +s[63] = + g3[ix+0]*g4[iy+0]*g8[iz+0]; +s[64] = + g2[ix+0]*g5[iy+0]*g8[iz+0]; +s[65] = + g2[ix+0]*g4[iy+0]*g9[iz+0]; +s[66] = + g1[ix+0]*g6[iy+0]*g8[iz+0]; +s[67] = + g0[ix+0]*g7[iy+0]*g8[iz+0]; +s[68] = + g0[ix+0]*g6[iy+0]*g9[iz+0]; +s[69] = + g1[ix+0]*g4[iy+0]*g10[iz+0]; +s[70] = + g0[ix+0]*g5[iy+0]*g10[iz+0]; +s[71] = + g0[ix+0]*g4[iy+0]*g11[iz+0]; +s[72] = + g3[ix+0]*g0[iy+0]*g12[iz+0]; +s[73] = + g2[ix+0]*g1[iy+0]*g12[iz+0]; +s[74] = + g2[ix+0]*g0[iy+0]*g13[iz+0]; +s[75] = + g1[ix+0]*g2[iy+0]*g12[iz+0]; +s[76] = + g0[ix+0]*g3[iy+0]*g12[iz+0]; +s[77] = + g0[ix+0]*g2[iy+0]*g13[iz+0]; +s[78] = + g1[ix+0]*g0[iy+0]*g14[iz+0]; +s[79] = + g0[ix+0]*g1[iy+0]*g14[iz+0]; +s[80] = + g0[ix+0]*g0[iy+0]*g15[iz+0]; +if (gout_empty) { +gout[n*1+0] = + s[0] + 2*s[4] + 2*s[8] + s[40] + 2*s[44] + s[80]; +} else { +gout[n*1+0] += + s[0] + 2*s[4] + 2*s[8] + s[40] + 2*s[44] + s[80]; +}}} +void int1e_r4_origj_optimizer(CINTOpt **opt, FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env) { +FINT ng[] = {0, 4, 0, 0, 4, 1, 1, 1}; +CINTall_1e_optimizer(opt, ng, atm, natm, bas, nbas, env); +} +CACHE_SIZE_T int1e_r4_origj_cart(dtype *out, FINT *dims, FINT *shls, +FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env, CINTOpt *opt, dtype *cache) { +FINT ng[] = {0, 4, 0, 0, 4, 1, 1, 1}; +CINTEnvVars envs; +CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env); +envs.f_gout = &CINTgout1e_int1e_r4_origj; +return CINT1e_drv(out, dims, &envs, cache, &c2s_cart_1e, 0); +} +CACHE_SIZE_T int1e_r4_origj_sph(dtype *out, FINT *dims, FINT *shls, +FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env, CINTOpt *opt, dtype *cache) { +FINT ng[] = {0, 4, 0, 0, 4, 1, 1, 1}; +CINTEnvVars envs; +CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env); +envs.f_gout = &CINTgout1e_int1e_r4_origj; +return CINT1e_drv(out, dims, &envs, cache, &c2s_sph_1e, 0); +} +CACHE_SIZE_T int1e_r4_origj_spinor(dtype *out, FINT *dims, FINT *shls, +FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env, CINTOpt *opt, dtype *cache) { +FINT ng[] = {0, 4, 0, 0, 4, 1, 1, 1}; +CINTEnvVars envs; +CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env); +envs.f_gout = &CINTgout1e_int1e_r4_origj; +return CINT1e_spinor_drv(out, dims, &envs, cache, &c2s_sf_1e, 0); +} +ALL_CINT1E(int1e_r4_origj) +ALL_CINT1E_FORTRAN_(int1e_r4_origj) + +void CINTgout1e_int1e_p4(dtype *gout, dtype *g, FINT *idx, CINTEnvVars *envs, FINT gout_empty) { +FINT nf = envs->nf; +FINT ix, iy, iz, n; +dtype *g0 = g; +dtype *g1 = g0 + envs->g_size * 3; +dtype *g2 = g1 + envs->g_size * 3; +dtype *g3 = g2 + envs->g_size * 3; +dtype *g4 = g3 + envs->g_size * 3; +dtype *g5 = g4 + envs->g_size * 3; +dtype *g6 = g5 + envs->g_size * 3; +dtype *g7 = g6 + envs->g_size * 3; +dtype *g8 = g7 + envs->g_size * 3; +dtype *g9 = g8 + envs->g_size * 3; +dtype *g10 = g9 + envs->g_size * 3; +dtype *g11 = g10 + envs->g_size * 3; +dtype *g12 = g11 + envs->g_size * 3; +dtype *g13 = g12 + envs->g_size * 3; +dtype *g14 = g13 + envs->g_size * 3; +dtype *g15 = g14 + envs->g_size * 3; +dtype s[81]; +G1E_D_J(g1, g0, envs->i_l+2, envs->j_l+0, 0); +G1E_D_J(g2, g0, envs->i_l+2, envs->j_l+1, 0); +G1E_D_J(g3, g2, envs->i_l+2, envs->j_l+0, 0); +G1E_D_I(g4, g0, envs->i_l+1, envs->j_l, 0); +G1E_D_I(g5, g1, envs->i_l+1, envs->j_l, 0); +G1E_D_I(g6, g2, envs->i_l+1, envs->j_l, 0); +G1E_D_I(g7, g3, envs->i_l+1, envs->j_l, 0); +G1E_D_I(g8, g0, envs->i_l+0, envs->j_l, 0); +G1E_D_I(g9, g1, envs->i_l+0, envs->j_l, 0); +G1E_D_I(g10, g2, envs->i_l+0, envs->j_l, 0); +G1E_D_I(g11, g3, envs->i_l+0, envs->j_l, 0); +G1E_D_I(g12, g4, envs->i_l+0, envs->j_l, 0); +G1E_D_I(g13, g5, envs->i_l+0, envs->j_l, 0); +G1E_D_I(g14, g6, envs->i_l+0, envs->j_l, 0); +G1E_D_I(g15, g7, envs->i_l+0, envs->j_l, 0); +for (n = 0; n < nf; n++) { +ix = idx[0+n*3]; +iy = idx[1+n*3]; +iz = idx[2+n*3]; +s[0] = + g15[ix+0]*g0[iy+0]*g0[iz+0]; +s[1] = + g14[ix+0]*g1[iy+0]*g0[iz+0]; +s[2] = + g14[ix+0]*g0[iy+0]*g1[iz+0]; +s[3] = + g13[ix+0]*g2[iy+0]*g0[iz+0]; +s[4] = + g12[ix+0]*g3[iy+0]*g0[iz+0]; +s[5] = + g12[ix+0]*g2[iy+0]*g1[iz+0]; +s[6] = + g13[ix+0]*g0[iy+0]*g2[iz+0]; +s[7] = + g12[ix+0]*g1[iy+0]*g2[iz+0]; +s[8] = + g12[ix+0]*g0[iy+0]*g3[iz+0]; +s[9] = + g11[ix+0]*g4[iy+0]*g0[iz+0]; +s[10] = + g10[ix+0]*g5[iy+0]*g0[iz+0]; +s[11] = + g10[ix+0]*g4[iy+0]*g1[iz+0]; +s[12] = + g9[ix+0]*g6[iy+0]*g0[iz+0]; +s[13] = + g8[ix+0]*g7[iy+0]*g0[iz+0]; +s[14] = + g8[ix+0]*g6[iy+0]*g1[iz+0]; +s[15] = + g9[ix+0]*g4[iy+0]*g2[iz+0]; +s[16] = + g8[ix+0]*g5[iy+0]*g2[iz+0]; +s[17] = + g8[ix+0]*g4[iy+0]*g3[iz+0]; +s[18] = + g11[ix+0]*g0[iy+0]*g4[iz+0]; +s[19] = + g10[ix+0]*g1[iy+0]*g4[iz+0]; +s[20] = + g10[ix+0]*g0[iy+0]*g5[iz+0]; +s[21] = + g9[ix+0]*g2[iy+0]*g4[iz+0]; +s[22] = + g8[ix+0]*g3[iy+0]*g4[iz+0]; +s[23] = + g8[ix+0]*g2[iy+0]*g5[iz+0]; +s[24] = + g9[ix+0]*g0[iy+0]*g6[iz+0]; +s[25] = + g8[ix+0]*g1[iy+0]*g6[iz+0]; +s[26] = + g8[ix+0]*g0[iy+0]*g7[iz+0]; +s[27] = + g7[ix+0]*g8[iy+0]*g0[iz+0]; +s[28] = + g6[ix+0]*g9[iy+0]*g0[iz+0]; +s[29] = + g6[ix+0]*g8[iy+0]*g1[iz+0]; +s[30] = + g5[ix+0]*g10[iy+0]*g0[iz+0]; +s[31] = + g4[ix+0]*g11[iy+0]*g0[iz+0]; +s[32] = + g4[ix+0]*g10[iy+0]*g1[iz+0]; +s[33] = + g5[ix+0]*g8[iy+0]*g2[iz+0]; +s[34] = + g4[ix+0]*g9[iy+0]*g2[iz+0]; +s[35] = + g4[ix+0]*g8[iy+0]*g3[iz+0]; +s[36] = + g3[ix+0]*g12[iy+0]*g0[iz+0]; +s[37] = + g2[ix+0]*g13[iy+0]*g0[iz+0]; +s[38] = + g2[ix+0]*g12[iy+0]*g1[iz+0]; +s[39] = + g1[ix+0]*g14[iy+0]*g0[iz+0]; +s[40] = + g0[ix+0]*g15[iy+0]*g0[iz+0]; +s[41] = + g0[ix+0]*g14[iy+0]*g1[iz+0]; +s[42] = + g1[ix+0]*g12[iy+0]*g2[iz+0]; +s[43] = + g0[ix+0]*g13[iy+0]*g2[iz+0]; +s[44] = + g0[ix+0]*g12[iy+0]*g3[iz+0]; +s[45] = + g3[ix+0]*g8[iy+0]*g4[iz+0]; +s[46] = + g2[ix+0]*g9[iy+0]*g4[iz+0]; +s[47] = + g2[ix+0]*g8[iy+0]*g5[iz+0]; +s[48] = + g1[ix+0]*g10[iy+0]*g4[iz+0]; +s[49] = + g0[ix+0]*g11[iy+0]*g4[iz+0]; +s[50] = + g0[ix+0]*g10[iy+0]*g5[iz+0]; +s[51] = + g1[ix+0]*g8[iy+0]*g6[iz+0]; +s[52] = + g0[ix+0]*g9[iy+0]*g6[iz+0]; +s[53] = + g0[ix+0]*g8[iy+0]*g7[iz+0]; +s[54] = + g7[ix+0]*g0[iy+0]*g8[iz+0]; +s[55] = + g6[ix+0]*g1[iy+0]*g8[iz+0]; +s[56] = + g6[ix+0]*g0[iy+0]*g9[iz+0]; +s[57] = + g5[ix+0]*g2[iy+0]*g8[iz+0]; +s[58] = + g4[ix+0]*g3[iy+0]*g8[iz+0]; +s[59] = + g4[ix+0]*g2[iy+0]*g9[iz+0]; +s[60] = + g5[ix+0]*g0[iy+0]*g10[iz+0]; +s[61] = + g4[ix+0]*g1[iy+0]*g10[iz+0]; +s[62] = + g4[ix+0]*g0[iy+0]*g11[iz+0]; +s[63] = + g3[ix+0]*g4[iy+0]*g8[iz+0]; +s[64] = + g2[ix+0]*g5[iy+0]*g8[iz+0]; +s[65] = + g2[ix+0]*g4[iy+0]*g9[iz+0]; +s[66] = + g1[ix+0]*g6[iy+0]*g8[iz+0]; +s[67] = + g0[ix+0]*g7[iy+0]*g8[iz+0]; +s[68] = + g0[ix+0]*g6[iy+0]*g9[iz+0]; +s[69] = + g1[ix+0]*g4[iy+0]*g10[iz+0]; +s[70] = + g0[ix+0]*g5[iy+0]*g10[iz+0]; +s[71] = + g0[ix+0]*g4[iy+0]*g11[iz+0]; +s[72] = + g3[ix+0]*g0[iy+0]*g12[iz+0]; +s[73] = + g2[ix+0]*g1[iy+0]*g12[iz+0]; +s[74] = + g2[ix+0]*g0[iy+0]*g13[iz+0]; +s[75] = + g1[ix+0]*g2[iy+0]*g12[iz+0]; +s[76] = + g0[ix+0]*g3[iy+0]*g12[iz+0]; +s[77] = + g0[ix+0]*g2[iy+0]*g13[iz+0]; +s[78] = + g1[ix+0]*g0[iy+0]*g14[iz+0]; +s[79] = + g0[ix+0]*g1[iy+0]*g14[iz+0]; +s[80] = + g0[ix+0]*g0[iy+0]*g15[iz+0]; +if (gout_empty) { +gout[n*1+0] = + s[0] + 2*s[4] + 2*s[8] + s[40] + 2*s[44] + s[80]; +} else { +gout[n*1+0] += + s[0] + 2*s[4] + 2*s[8] + s[40] + 2*s[44] + s[80]; +}}} +void int1e_p4_optimizer(CINTOpt **opt, FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env) { +FINT ng[] = {2, 2, 0, 0, 4, 1, 1, 1}; +CINTall_1e_optimizer(opt, ng, atm, natm, bas, nbas, env); +} +CACHE_SIZE_T int1e_p4_cart(dtype *out, FINT *dims, FINT *shls, +FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env, CINTOpt *opt, dtype *cache) { +FINT ng[] = {2, 2, 0, 0, 4, 1, 1, 1}; +CINTEnvVars envs; +CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env); +envs.f_gout = &CINTgout1e_int1e_p4; +return CINT1e_drv(out, dims, &envs, cache, &c2s_cart_1e, 0); +} +CACHE_SIZE_T int1e_p4_sph(dtype *out, FINT *dims, FINT *shls, +FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env, CINTOpt *opt, dtype *cache) { +FINT ng[] = {2, 2, 0, 0, 4, 1, 1, 1}; +CINTEnvVars envs; +CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env); +envs.f_gout = &CINTgout1e_int1e_p4; +return CINT1e_drv(out, dims, &envs, cache, &c2s_sph_1e, 0); +} +CACHE_SIZE_T int1e_p4_spinor(dtype *out, FINT *dims, FINT *shls, +FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env, CINTOpt *opt, dtype *cache) { +FINT ng[] = {2, 2, 0, 0, 4, 1, 1, 1}; +CINTEnvVars envs; +CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env); +envs.f_gout = &CINTgout1e_int1e_p4; +return CINT1e_spinor_drv(out, dims, &envs, cache, &c2s_sf_1e, 0); +} +ALL_CINT1E(int1e_p4) +ALL_CINT1E_FORTRAN_(int1e_p4) + +void CINTgout1e_int1e_prinvp(dtype *gout, dtype *g, FINT *idx, CINTEnvVars *envs, FINT gout_empty) { +FINT nf = envs->nf; +FINT nrys_roots = envs->nrys_roots; +FINT ix, iy, iz, n, i; +dtype *g0 = g; +dtype *g1 = g0 + envs->g_size * 3; +dtype *g2 = g1 + envs->g_size * 3; +dtype *g3 = g2 + envs->g_size * 3; +G2E_D_J(g1, g0, envs->i_l+1, envs->j_l+0, 0, 0); +G2E_D_I(g2, g0, envs->i_l+0, envs->j_l, 0, 0); +G2E_D_I(g3, g1, envs->i_l+0, envs->j_l, 0, 0); +dtype s[9]; +for (n = 0; n < nf; n++) { +ix = idx[0+n*3]; +iy = idx[1+n*3]; +iz = idx[2+n*3]; +for (i = 0; i < 9; i++) { s[i] = 0; } +for (i = 0; i < nrys_roots; i++) { +s[0] += g3[ix+i] * g0[iy+i] * g0[iz+i]; +s[1] += g2[ix+i] * g1[iy+i] * g0[iz+i]; +s[2] += g2[ix+i] * g0[iy+i] * g1[iz+i]; +s[3] += g1[ix+i] * g2[iy+i] * g0[iz+i]; +s[4] += g0[ix+i] * g3[iy+i] * g0[iz+i]; +s[5] += g0[ix+i] * g2[iy+i] * g1[iz+i]; +s[6] += g1[ix+i] * g0[iy+i] * g2[iz+i]; +s[7] += g0[ix+i] * g1[iy+i] * g2[iz+i]; +s[8] += g0[ix+i] * g0[iy+i] * g3[iz+i]; +} +if (gout_empty) { +gout[n*1+0] = + s[0] + s[4] + s[8]; +} else { +gout[n*1+0] += + s[0] + s[4] + s[8]; +}}} +void int1e_prinvp_optimizer(CINTOpt **opt, FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env) { +FINT ng[] = {1, 1, 0, 0, 2, 1, 0, 1}; +CINTall_1e_optimizer(opt, ng, atm, natm, bas, nbas, env); +} +CACHE_SIZE_T int1e_prinvp_cart(dtype *out, FINT *dims, FINT *shls, +FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env, CINTOpt *opt, dtype *cache) { +FINT ng[] = {1, 1, 0, 0, 2, 1, 0, 1}; +CINTEnvVars envs; +CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env); +envs.f_gout = &CINTgout1e_int1e_prinvp; +return CINT1e_drv(out, dims, &envs, cache, &c2s_cart_1e, 1); +} +CACHE_SIZE_T int1e_prinvp_sph(dtype *out, FINT *dims, FINT *shls, +FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env, CINTOpt *opt, dtype *cache) { +FINT ng[] = {1, 1, 0, 0, 2, 1, 0, 1}; +CINTEnvVars envs; +CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env); +envs.f_gout = &CINTgout1e_int1e_prinvp; +return CINT1e_drv(out, dims, &envs, cache, &c2s_sph_1e, 1); +} +CACHE_SIZE_T int1e_prinvp_spinor(dtype *out, FINT *dims, FINT *shls, +FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env, CINTOpt *opt, dtype *cache) { +FINT ng[] = {1, 1, 0, 0, 2, 1, 0, 1}; +CINTEnvVars envs; +CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env); +envs.f_gout = &CINTgout1e_int1e_prinvp; +return CINT1e_spinor_drv(out, dims, &envs, cache, &c2s_sf_1e, 1); +} +ALL_CINT1E(int1e_prinvp) +ALL_CINT1E_FORTRAN_(int1e_prinvp) + +void CINTgout1e_int1e_prinvxp(dtype *gout, dtype *g, FINT *idx, CINTEnvVars *envs, FINT gout_empty) { +FINT nf = envs->nf; +FINT nrys_roots = envs->nrys_roots; +FINT ix, iy, iz, n, i; +dtype *g0 = g; +dtype *g1 = g0 + envs->g_size * 3; +dtype *g2 = g1 + envs->g_size * 3; +dtype *g3 = g2 + envs->g_size * 3; +G2E_D_J(g1, g0, envs->i_l+1, envs->j_l+0, 0, 0); +G2E_D_I(g2, g0, envs->i_l+0, envs->j_l, 0, 0); +G2E_D_I(g3, g1, envs->i_l+0, envs->j_l, 0, 0); +dtype s[9]; +for (n = 0; n < nf; n++) { +ix = idx[0+n*3]; +iy = idx[1+n*3]; +iz = idx[2+n*3]; +for (i = 0; i < 9; i++) { s[i] = 0; } +for (i = 0; i < nrys_roots; i++) { +s[0] += g3[ix+i] * g0[iy+i] * g0[iz+i]; +s[1] += g2[ix+i] * g1[iy+i] * g0[iz+i]; +s[2] += g2[ix+i] * g0[iy+i] * g1[iz+i]; +s[3] += g1[ix+i] * g2[iy+i] * g0[iz+i]; +s[4] += g0[ix+i] * g3[iy+i] * g0[iz+i]; +s[5] += g0[ix+i] * g2[iy+i] * g1[iz+i]; +s[6] += g1[ix+i] * g0[iy+i] * g2[iz+i]; +s[7] += g0[ix+i] * g1[iy+i] * g2[iz+i]; +s[8] += g0[ix+i] * g0[iy+i] * g3[iz+i]; +} +if (gout_empty) { +gout[n*3+0] = + s[5] - s[7]; +gout[n*3+1] = + s[6] - s[2]; +gout[n*3+2] = + s[1] - s[3]; +} else { +gout[n*3+0] += + s[5] - s[7]; +gout[n*3+1] += + s[6] - s[2]; +gout[n*3+2] += + s[1] - s[3]; +}}} +void int1e_prinvxp_optimizer(CINTOpt **opt, FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env) { +FINT ng[] = {1, 1, 0, 0, 2, 1, 0, 3}; +CINTall_1e_optimizer(opt, ng, atm, natm, bas, nbas, env); +} +CACHE_SIZE_T int1e_prinvxp_cart(dtype *out, FINT *dims, FINT *shls, +FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env, CINTOpt *opt, dtype *cache) { +FINT ng[] = {1, 1, 0, 0, 2, 1, 0, 3}; +CINTEnvVars envs; +CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env); +envs.f_gout = &CINTgout1e_int1e_prinvxp; +return CINT1e_drv(out, dims, &envs, cache, &c2s_cart_1e, 1); +} +CACHE_SIZE_T int1e_prinvxp_sph(dtype *out, FINT *dims, FINT *shls, +FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env, CINTOpt *opt, dtype *cache) { +FINT ng[] = {1, 1, 0, 0, 2, 1, 0, 3}; +CINTEnvVars envs; +CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env); +envs.f_gout = &CINTgout1e_int1e_prinvxp; +return CINT1e_drv(out, dims, &envs, cache, &c2s_sph_1e, 1); +} +CACHE_SIZE_T int1e_prinvxp_spinor(dtype *out, FINT *dims, FINT *shls, +FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env, CINTOpt *opt, dtype *cache) { +FINT ng[] = {1, 1, 0, 0, 2, 1, 0, 3}; +CINTEnvVars envs; +CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env); +envs.f_gout = &CINTgout1e_int1e_prinvxp; +return CINT1e_spinor_drv(out, dims, &envs, cache, &c2s_sf_1e, 1); +} +ALL_CINT1E(int1e_prinvxp) +ALL_CINT1E_FORTRAN_(int1e_prinvxp) + +void CINTgout1e_int1e_pnucxp(dtype *gout, dtype *g, FINT *idx, CINTEnvVars *envs, FINT gout_empty) { +FINT nf = envs->nf; +FINT nrys_roots = envs->nrys_roots; +FINT ix, iy, iz, n, i; +dtype *g0 = g; +dtype *g1 = g0 + envs->g_size * 3; +dtype *g2 = g1 + envs->g_size * 3; +dtype *g3 = g2 + envs->g_size * 3; +G2E_D_J(g1, g0, envs->i_l+1, envs->j_l+0, 0, 0); +G2E_D_I(g2, g0, envs->i_l+0, envs->j_l, 0, 0); +G2E_D_I(g3, g1, envs->i_l+0, envs->j_l, 0, 0); +dtype s[9]; +for (n = 0; n < nf; n++) { +ix = idx[0+n*3]; +iy = idx[1+n*3]; +iz = idx[2+n*3]; +for (i = 0; i < 9; i++) { s[i] = 0; } +for (i = 0; i < nrys_roots; i++) { +s[0] += g3[ix+i] * g0[iy+i] * g0[iz+i]; +s[1] += g2[ix+i] * g1[iy+i] * g0[iz+i]; +s[2] += g2[ix+i] * g0[iy+i] * g1[iz+i]; +s[3] += g1[ix+i] * g2[iy+i] * g0[iz+i]; +s[4] += g0[ix+i] * g3[iy+i] * g0[iz+i]; +s[5] += g0[ix+i] * g2[iy+i] * g1[iz+i]; +s[6] += g1[ix+i] * g0[iy+i] * g2[iz+i]; +s[7] += g0[ix+i] * g1[iy+i] * g2[iz+i]; +s[8] += g0[ix+i] * g0[iy+i] * g3[iz+i]; +} +if (gout_empty) { +gout[n*3+0] = + s[5] - s[7]; +gout[n*3+1] = + s[6] - s[2]; +gout[n*3+2] = + s[1] - s[3]; +} else { +gout[n*3+0] += + s[5] - s[7]; +gout[n*3+1] += + s[6] - s[2]; +gout[n*3+2] += + s[1] - s[3]; +}}} +void int1e_pnucxp_optimizer(CINTOpt **opt, FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env) { +FINT ng[] = {1, 1, 0, 0, 2, 1, 0, 3}; +CINTall_1e_optimizer(opt, ng, atm, natm, bas, nbas, env); +} +CACHE_SIZE_T int1e_pnucxp_cart(dtype *out, FINT *dims, FINT *shls, +FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env, CINTOpt *opt, dtype *cache) { +FINT ng[] = {1, 1, 0, 0, 2, 1, 0, 3}; +CINTEnvVars envs; +CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env); +envs.f_gout = &CINTgout1e_int1e_pnucxp; +return CINT1e_drv(out, dims, &envs, cache, &c2s_cart_1e, 2); +} +CACHE_SIZE_T int1e_pnucxp_sph(dtype *out, FINT *dims, FINT *shls, +FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env, CINTOpt *opt, dtype *cache) { +FINT ng[] = {1, 1, 0, 0, 2, 1, 0, 3}; +CINTEnvVars envs; +CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env); +envs.f_gout = &CINTgout1e_int1e_pnucxp; +return CINT1e_drv(out, dims, &envs, cache, &c2s_sph_1e, 2); +} +CACHE_SIZE_T int1e_pnucxp_spinor(dtype *out, FINT *dims, FINT *shls, +FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env, CINTOpt *opt, dtype *cache) { +FINT ng[] = {1, 1, 0, 0, 2, 1, 0, 3}; +CINTEnvVars envs; +CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env); +envs.f_gout = &CINTgout1e_int1e_pnucxp; +return CINT1e_spinor_drv(out, dims, &envs, cache, &c2s_sf_1e, 2); +} +ALL_CINT1E(int1e_pnucxp) +ALL_CINT1E_FORTRAN_(int1e_pnucxp) + +void CINTgout1e_int1e_irp(dtype *gout, dtype *g, FINT *idx, CINTEnvVars *envs, FINT gout_empty) { +FINT nf = envs->nf; +FINT ix, iy, iz, n; +dtype *g0 = g; +dtype *g1 = g0 + envs->g_size * 3; +dtype *g2 = g1 + envs->g_size * 3; +dtype *g3 = g2 + envs->g_size * 3; +dtype drj[3]; +drj[0] = envs->rj[0] - envs->env[PTR_COMMON_ORIG+0]; +drj[1] = envs->rj[1] - envs->env[PTR_COMMON_ORIG+1]; +drj[2] = envs->rj[2] - envs->env[PTR_COMMON_ORIG+2]; +dtype s[9]; +G1E_D_J(g1, g0, envs->i_l+0, envs->j_l+0, 0); +G1E_RCJ(g2, g0, envs->i_l+0, envs->j_l+1, 0); +G1E_D_J(g3, g2, envs->i_l+0, envs->j_l+0, 0); +for (n = 0; n < nf; n++) { +ix = idx[0+n*3]; +iy = idx[1+n*3]; +iz = idx[2+n*3]; +s[0] = + g3[ix+0]*g0[iy+0]*g0[iz+0]; +s[1] = + g2[ix+0]*g1[iy+0]*g0[iz+0]; +s[2] = + g2[ix+0]*g0[iy+0]*g1[iz+0]; +s[3] = + g1[ix+0]*g2[iy+0]*g0[iz+0]; +s[4] = + g0[ix+0]*g3[iy+0]*g0[iz+0]; +s[5] = + g0[ix+0]*g2[iy+0]*g1[iz+0]; +s[6] = + g1[ix+0]*g0[iy+0]*g2[iz+0]; +s[7] = + g0[ix+0]*g1[iy+0]*g2[iz+0]; +s[8] = + g0[ix+0]*g0[iy+0]*g3[iz+0]; +if (gout_empty) { +gout[n*9+0] = + s[0]; +gout[n*9+1] = + s[1]; +gout[n*9+2] = + s[2]; +gout[n*9+3] = + s[3]; +gout[n*9+4] = + s[4]; +gout[n*9+5] = + s[5]; +gout[n*9+6] = + s[6]; +gout[n*9+7] = + s[7]; +gout[n*9+8] = + s[8]; +} else { +gout[n*9+0] += + s[0]; +gout[n*9+1] += + s[1]; +gout[n*9+2] += + s[2]; +gout[n*9+3] += + s[3]; +gout[n*9+4] += + s[4]; +gout[n*9+5] += + s[5]; +gout[n*9+6] += + s[6]; +gout[n*9+7] += + s[7]; +gout[n*9+8] += + s[8]; +}}} +void int1e_irp_optimizer(CINTOpt **opt, FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env) { +FINT ng[] = {0, 2, 0, 0, 2, 1, 1, 9}; +CINTall_1e_optimizer(opt, ng, atm, natm, bas, nbas, env); +} +CACHE_SIZE_T int1e_irp_cart(dtype *out, FINT *dims, FINT *shls, +FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env, CINTOpt *opt, dtype *cache) { +FINT ng[] = {0, 2, 0, 0, 2, 1, 1, 9}; +CINTEnvVars envs; +CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env); +envs.f_gout = &CINTgout1e_int1e_irp; +return CINT1e_drv(out, dims, &envs, cache, &c2s_cart_1e, 0); +} +CACHE_SIZE_T int1e_irp_sph(dtype *out, FINT *dims, FINT *shls, +FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env, CINTOpt *opt, dtype *cache) { +FINT ng[] = {0, 2, 0, 0, 2, 1, 1, 9}; +CINTEnvVars envs; +CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env); +envs.f_gout = &CINTgout1e_int1e_irp; +return CINT1e_drv(out, dims, &envs, cache, &c2s_sph_1e, 0); +} +CACHE_SIZE_T int1e_irp_spinor(dtype *out, FINT *dims, FINT *shls, +FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env, CINTOpt *opt, dtype *cache) { +FINT ng[] = {0, 2, 0, 0, 2, 1, 1, 9}; +CINTEnvVars envs; +CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env); +envs.f_gout = &CINTgout1e_int1e_irp; +return CINT1e_spinor_drv(out, dims, &envs, cache, &c2s_sf_1e, 0); +} +ALL_CINT1E(int1e_irp) +ALL_CINT1E_FORTRAN_(int1e_irp) + +void CINTgout1e_int1e_irrp(dtype *gout, dtype *g, FINT *idx, CINTEnvVars *envs, FINT gout_empty) { +FINT nf = envs->nf; +FINT ix, iy, iz, n; +dtype *g0 = g; +dtype *g1 = g0 + envs->g_size * 3; +dtype *g2 = g1 + envs->g_size * 3; +dtype *g3 = g2 + envs->g_size * 3; +dtype *g4 = g3 + envs->g_size * 3; +dtype *g5 = g4 + envs->g_size * 3; +dtype *g6 = g5 + envs->g_size * 3; +dtype *g7 = g6 + envs->g_size * 3; +dtype drj[3]; +drj[0] = envs->rj[0] - envs->env[PTR_COMMON_ORIG+0]; +drj[1] = envs->rj[1] - envs->env[PTR_COMMON_ORIG+1]; +drj[2] = envs->rj[2] - envs->env[PTR_COMMON_ORIG+2]; +dtype s[27]; +G1E_D_J(g1, g0, envs->i_l+0, envs->j_l+0, 0); +G1E_RCJ(g2, g0, envs->i_l+0, envs->j_l+1, 0); +G1E_D_J(g3, g2, envs->i_l+0, envs->j_l+0, 0); +G1E_RCJ(g4, g0, envs->i_l+0, envs->j_l+2, 0); +G1E_D_J(g5, g4, envs->i_l+0, envs->j_l+0, 0); +G1E_RCJ(g6, g4, envs->i_l+0, envs->j_l+1, 0); +G1E_D_J(g7, g6, envs->i_l+0, envs->j_l+0, 0); +for (n = 0; n < nf; n++) { +ix = idx[0+n*3]; +iy = idx[1+n*3]; +iz = idx[2+n*3]; +s[0] = + g7[ix+0]*g0[iy+0]*g0[iz+0]; +s[1] = + g6[ix+0]*g1[iy+0]*g0[iz+0]; +s[2] = + g6[ix+0]*g0[iy+0]*g1[iz+0]; +s[3] = + g5[ix+0]*g2[iy+0]*g0[iz+0]; +s[4] = + g4[ix+0]*g3[iy+0]*g0[iz+0]; +s[5] = + g4[ix+0]*g2[iy+0]*g1[iz+0]; +s[6] = + g5[ix+0]*g0[iy+0]*g2[iz+0]; +s[7] = + g4[ix+0]*g1[iy+0]*g2[iz+0]; +s[8] = + g4[ix+0]*g0[iy+0]*g3[iz+0]; +s[9] = + g3[ix+0]*g4[iy+0]*g0[iz+0]; +s[10] = + g2[ix+0]*g5[iy+0]*g0[iz+0]; +s[11] = + g2[ix+0]*g4[iy+0]*g1[iz+0]; +s[12] = + g1[ix+0]*g6[iy+0]*g0[iz+0]; +s[13] = + g0[ix+0]*g7[iy+0]*g0[iz+0]; +s[14] = + g0[ix+0]*g6[iy+0]*g1[iz+0]; +s[15] = + g1[ix+0]*g4[iy+0]*g2[iz+0]; +s[16] = + g0[ix+0]*g5[iy+0]*g2[iz+0]; +s[17] = + g0[ix+0]*g4[iy+0]*g3[iz+0]; +s[18] = + g3[ix+0]*g0[iy+0]*g4[iz+0]; +s[19] = + g2[ix+0]*g1[iy+0]*g4[iz+0]; +s[20] = + g2[ix+0]*g0[iy+0]*g5[iz+0]; +s[21] = + g1[ix+0]*g2[iy+0]*g4[iz+0]; +s[22] = + g0[ix+0]*g3[iy+0]*g4[iz+0]; +s[23] = + g0[ix+0]*g2[iy+0]*g5[iz+0]; +s[24] = + g1[ix+0]*g0[iy+0]*g6[iz+0]; +s[25] = + g0[ix+0]*g1[iy+0]*g6[iz+0]; +s[26] = + g0[ix+0]*g0[iy+0]*g7[iz+0]; +if (gout_empty) { +gout[n*27+0] = + s[0]; +gout[n*27+1] = + s[1]; +gout[n*27+2] = + s[2]; +gout[n*27+3] = + s[3]; +gout[n*27+4] = + s[4]; +gout[n*27+5] = + s[5]; +gout[n*27+6] = + s[6]; +gout[n*27+7] = + s[7]; +gout[n*27+8] = + s[8]; +gout[n*27+9] = + s[9]; +gout[n*27+10] = + s[10]; +gout[n*27+11] = + s[11]; +gout[n*27+12] = + s[12]; +gout[n*27+13] = + s[13]; +gout[n*27+14] = + s[14]; +gout[n*27+15] = + s[15]; +gout[n*27+16] = + s[16]; +gout[n*27+17] = + s[17]; +gout[n*27+18] = + s[18]; +gout[n*27+19] = + s[19]; +gout[n*27+20] = + s[20]; +gout[n*27+21] = + s[21]; +gout[n*27+22] = + s[22]; +gout[n*27+23] = + s[23]; +gout[n*27+24] = + s[24]; +gout[n*27+25] = + s[25]; +gout[n*27+26] = + s[26]; +} else { +gout[n*27+0] += + s[0]; +gout[n*27+1] += + s[1]; +gout[n*27+2] += + s[2]; +gout[n*27+3] += + s[3]; +gout[n*27+4] += + s[4]; +gout[n*27+5] += + s[5]; +gout[n*27+6] += + s[6]; +gout[n*27+7] += + s[7]; +gout[n*27+8] += + s[8]; +gout[n*27+9] += + s[9]; +gout[n*27+10] += + s[10]; +gout[n*27+11] += + s[11]; +gout[n*27+12] += + s[12]; +gout[n*27+13] += + s[13]; +gout[n*27+14] += + s[14]; +gout[n*27+15] += + s[15]; +gout[n*27+16] += + s[16]; +gout[n*27+17] += + s[17]; +gout[n*27+18] += + s[18]; +gout[n*27+19] += + s[19]; +gout[n*27+20] += + s[20]; +gout[n*27+21] += + s[21]; +gout[n*27+22] += + s[22]; +gout[n*27+23] += + s[23]; +gout[n*27+24] += + s[24]; +gout[n*27+25] += + s[25]; +gout[n*27+26] += + s[26]; +}}} +void int1e_irrp_optimizer(CINTOpt **opt, FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env) { +FINT ng[] = {0, 3, 0, 0, 3, 1, 1, 27}; +CINTall_1e_optimizer(opt, ng, atm, natm, bas, nbas, env); +} +CACHE_SIZE_T int1e_irrp_cart(dtype *out, FINT *dims, FINT *shls, +FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env, CINTOpt *opt, dtype *cache) { +FINT ng[] = {0, 3, 0, 0, 3, 1, 1, 27}; +CINTEnvVars envs; +CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env); +envs.f_gout = &CINTgout1e_int1e_irrp; +return CINT1e_drv(out, dims, &envs, cache, &c2s_cart_1e, 0); +} +CACHE_SIZE_T int1e_irrp_sph(dtype *out, FINT *dims, FINT *shls, +FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env, CINTOpt *opt, dtype *cache) { +FINT ng[] = {0, 3, 0, 0, 3, 1, 1, 27}; +CINTEnvVars envs; +CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env); +envs.f_gout = &CINTgout1e_int1e_irrp; +return CINT1e_drv(out, dims, &envs, cache, &c2s_sph_1e, 0); +} +CACHE_SIZE_T int1e_irrp_spinor(dtype *out, FINT *dims, FINT *shls, +FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env, CINTOpt *opt, dtype *cache) { +FINT ng[] = {0, 3, 0, 0, 3, 1, 1, 27}; +CINTEnvVars envs; +CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env); +envs.f_gout = &CINTgout1e_int1e_irrp; +return CINT1e_spinor_drv(out, dims, &envs, cache, &c2s_sf_1e, 0); +} +ALL_CINT1E(int1e_irrp) +ALL_CINT1E_FORTRAN_(int1e_irrp) + +void CINTgout1e_int1e_irpr(dtype *gout, dtype *g, FINT *idx, CINTEnvVars *envs, FINT gout_empty) { +FINT nf = envs->nf; +FINT ix, iy, iz, n; +dtype *g0 = g; +dtype *g1 = g0 + envs->g_size * 3; +dtype *g2 = g1 + envs->g_size * 3; +dtype *g3 = g2 + envs->g_size * 3; +dtype *g4 = g3 + envs->g_size * 3; +dtype *g5 = g4 + envs->g_size * 3; +dtype *g6 = g5 + envs->g_size * 3; +dtype *g7 = g6 + envs->g_size * 3; +dtype drj[3]; +drj[0] = envs->rj[0] - envs->env[PTR_COMMON_ORIG+0]; +drj[1] = envs->rj[1] - envs->env[PTR_COMMON_ORIG+1]; +drj[2] = envs->rj[2] - envs->env[PTR_COMMON_ORIG+2]; +dtype s[27]; +G1E_RCJ(g1, g0, envs->i_l+0, envs->j_l+0, 0); +G1E_D_J(g2, g0, envs->i_l+0, envs->j_l+1, 0); +G1E_RCJ(g3, g2, envs->i_l+0, envs->j_l+0, 0); +G1E_RCJ(g4, g0, envs->i_l+0, envs->j_l+2, 0); +G1E_RCJ(g5, g4, envs->i_l+0, envs->j_l+0, 0); +G1E_D_J(g6, g4, envs->i_l+0, envs->j_l+1, 0); +G1E_RCJ(g7, g6, envs->i_l+0, envs->j_l+0, 0); +for (n = 0; n < nf; n++) { +ix = idx[0+n*3]; +iy = idx[1+n*3]; +iz = idx[2+n*3]; +s[0] = + g7[ix+0]*g0[iy+0]*g0[iz+0]; +s[1] = + g6[ix+0]*g1[iy+0]*g0[iz+0]; +s[2] = + g6[ix+0]*g0[iy+0]*g1[iz+0]; +s[3] = + g5[ix+0]*g2[iy+0]*g0[iz+0]; +s[4] = + g4[ix+0]*g3[iy+0]*g0[iz+0]; +s[5] = + g4[ix+0]*g2[iy+0]*g1[iz+0]; +s[6] = + g5[ix+0]*g0[iy+0]*g2[iz+0]; +s[7] = + g4[ix+0]*g1[iy+0]*g2[iz+0]; +s[8] = + g4[ix+0]*g0[iy+0]*g3[iz+0]; +s[9] = + g3[ix+0]*g4[iy+0]*g0[iz+0]; +s[10] = + g2[ix+0]*g5[iy+0]*g0[iz+0]; +s[11] = + g2[ix+0]*g4[iy+0]*g1[iz+0]; +s[12] = + g1[ix+0]*g6[iy+0]*g0[iz+0]; +s[13] = + g0[ix+0]*g7[iy+0]*g0[iz+0]; +s[14] = + g0[ix+0]*g6[iy+0]*g1[iz+0]; +s[15] = + g1[ix+0]*g4[iy+0]*g2[iz+0]; +s[16] = + g0[ix+0]*g5[iy+0]*g2[iz+0]; +s[17] = + g0[ix+0]*g4[iy+0]*g3[iz+0]; +s[18] = + g3[ix+0]*g0[iy+0]*g4[iz+0]; +s[19] = + g2[ix+0]*g1[iy+0]*g4[iz+0]; +s[20] = + g2[ix+0]*g0[iy+0]*g5[iz+0]; +s[21] = + g1[ix+0]*g2[iy+0]*g4[iz+0]; +s[22] = + g0[ix+0]*g3[iy+0]*g4[iz+0]; +s[23] = + g0[ix+0]*g2[iy+0]*g5[iz+0]; +s[24] = + g1[ix+0]*g0[iy+0]*g6[iz+0]; +s[25] = + g0[ix+0]*g1[iy+0]*g6[iz+0]; +s[26] = + g0[ix+0]*g0[iy+0]*g7[iz+0]; +if (gout_empty) { +gout[n*27+0] = + s[0]; +gout[n*27+1] = + s[1]; +gout[n*27+2] = + s[2]; +gout[n*27+3] = + s[3]; +gout[n*27+4] = + s[4]; +gout[n*27+5] = + s[5]; +gout[n*27+6] = + s[6]; +gout[n*27+7] = + s[7]; +gout[n*27+8] = + s[8]; +gout[n*27+9] = + s[9]; +gout[n*27+10] = + s[10]; +gout[n*27+11] = + s[11]; +gout[n*27+12] = + s[12]; +gout[n*27+13] = + s[13]; +gout[n*27+14] = + s[14]; +gout[n*27+15] = + s[15]; +gout[n*27+16] = + s[16]; +gout[n*27+17] = + s[17]; +gout[n*27+18] = + s[18]; +gout[n*27+19] = + s[19]; +gout[n*27+20] = + s[20]; +gout[n*27+21] = + s[21]; +gout[n*27+22] = + s[22]; +gout[n*27+23] = + s[23]; +gout[n*27+24] = + s[24]; +gout[n*27+25] = + s[25]; +gout[n*27+26] = + s[26]; +} else { +gout[n*27+0] += + s[0]; +gout[n*27+1] += + s[1]; +gout[n*27+2] += + s[2]; +gout[n*27+3] += + s[3]; +gout[n*27+4] += + s[4]; +gout[n*27+5] += + s[5]; +gout[n*27+6] += + s[6]; +gout[n*27+7] += + s[7]; +gout[n*27+8] += + s[8]; +gout[n*27+9] += + s[9]; +gout[n*27+10] += + s[10]; +gout[n*27+11] += + s[11]; +gout[n*27+12] += + s[12]; +gout[n*27+13] += + s[13]; +gout[n*27+14] += + s[14]; +gout[n*27+15] += + s[15]; +gout[n*27+16] += + s[16]; +gout[n*27+17] += + s[17]; +gout[n*27+18] += + s[18]; +gout[n*27+19] += + s[19]; +gout[n*27+20] += + s[20]; +gout[n*27+21] += + s[21]; +gout[n*27+22] += + s[22]; +gout[n*27+23] += + s[23]; +gout[n*27+24] += + s[24]; +gout[n*27+25] += + s[25]; +gout[n*27+26] += + s[26]; +}}} +void int1e_irpr_optimizer(CINTOpt **opt, FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env) { +FINT ng[] = {0, 3, 0, 0, 3, 1, 1, 27}; +CINTall_1e_optimizer(opt, ng, atm, natm, bas, nbas, env); +} +CACHE_SIZE_T int1e_irpr_cart(dtype *out, FINT *dims, FINT *shls, +FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env, CINTOpt *opt, dtype *cache) { +FINT ng[] = {0, 3, 0, 0, 3, 1, 1, 27}; +CINTEnvVars envs; +CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env); +envs.f_gout = &CINTgout1e_int1e_irpr; +return CINT1e_drv(out, dims, &envs, cache, &c2s_cart_1e, 0); +} +CACHE_SIZE_T int1e_irpr_sph(dtype *out, FINT *dims, FINT *shls, +FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env, CINTOpt *opt, dtype *cache) { +FINT ng[] = {0, 3, 0, 0, 3, 1, 1, 27}; +CINTEnvVars envs; +CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env); +envs.f_gout = &CINTgout1e_int1e_irpr; +return CINT1e_drv(out, dims, &envs, cache, &c2s_sph_1e, 0); +} +CACHE_SIZE_T int1e_irpr_spinor(dtype *out, FINT *dims, FINT *shls, +FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env, CINTOpt *opt, dtype *cache) { +FINT ng[] = {0, 3, 0, 0, 3, 1, 1, 27}; +CINTEnvVars envs; +CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env); +envs.f_gout = &CINTgout1e_int1e_irpr; +return CINT1e_spinor_drv(out, dims, &envs, cache, &c2s_sf_1e, 0); +} +ALL_CINT1E(int1e_irpr) +ALL_CINT1E_FORTRAN_(int1e_irpr) + +void CINTgout1e_int1e_ggovlp(dtype *gout, dtype *g, FINT *idx, CINTEnvVars *envs, FINT gout_empty) { +FINT nf = envs->nf; +FINT ix, iy, iz, n; +dtype *g0 = g; +dtype *g1 = g0 + envs->g_size * 3; +dtype *g2 = g1 + envs->g_size * 3; +dtype *g3 = g2 + envs->g_size * 3; +dtype rirj[3], c[9]; +rirj[0] = envs->ri[0] - envs->rj[0]; +rirj[1] = envs->ri[1] - envs->rj[1]; +rirj[2] = envs->ri[2] - envs->rj[2]; +c[0] = 1 * rirj[0] * rirj[0]; +c[1] = 1 * rirj[0] * rirj[1]; +c[2] = 1 * rirj[0] * rirj[2]; +c[3] = 1 * rirj[1] * rirj[0]; +c[4] = 1 * rirj[1] * rirj[1]; +c[5] = 1 * rirj[1] * rirj[2]; +c[6] = 1 * rirj[2] * rirj[0]; +c[7] = 1 * rirj[2] * rirj[1]; +c[8] = 1 * rirj[2] * rirj[2]; +dtype s[9]; +G1E_R0J(g1, g0, envs->i_l+0, envs->j_l+0, 0); +G1E_R0J(g2, g0, envs->i_l+0, envs->j_l+1, 0); +G1E_R0J(g3, g2, envs->i_l+0, envs->j_l+0, 0); +for (n = 0; n < nf; n++) { +ix = idx[0+n*3]; +iy = idx[1+n*3]; +iz = idx[2+n*3]; +s[0] = + g3[ix+0]*g0[iy+0]*g0[iz+0]; +s[1] = + g2[ix+0]*g1[iy+0]*g0[iz+0]; +s[2] = + g2[ix+0]*g0[iy+0]*g1[iz+0]; +s[3] = + g1[ix+0]*g2[iy+0]*g0[iz+0]; +s[4] = + g0[ix+0]*g3[iy+0]*g0[iz+0]; +s[5] = + g0[ix+0]*g2[iy+0]*g1[iz+0]; +s[6] = + g1[ix+0]*g0[iy+0]*g2[iz+0]; +s[7] = + g0[ix+0]*g1[iy+0]*g2[iz+0]; +s[8] = + g0[ix+0]*g0[iy+0]*g3[iz+0]; +if (gout_empty) { +gout[n*9+0] = - c[4]*s[8] + 2*c[5]*s[7] - c[8]*s[4]; +gout[n*9+1] = - c[5]*s[6] + c[8]*s[3] + c[3]*s[8] - c[6]*s[5]; +gout[n*9+2] = - c[3]*s[7] + c[6]*s[4] + c[4]*s[6] - c[7]*s[3]; +gout[n*9+3] = - c[7]*s[2] + c[1]*s[8] + c[8]*s[1] - c[2]*s[7]; +gout[n*9+4] = - c[8]*s[0] + 2*c[6]*s[2] - c[0]*s[8]; +gout[n*9+5] = - c[6]*s[1] + c[0]*s[7] + c[7]*s[0] - c[1]*s[6]; +gout[n*9+6] = - c[1]*s[5] + c[4]*s[2] + c[2]*s[4] - c[5]*s[1]; +gout[n*9+7] = - c[2]*s[3] + c[5]*s[0] + c[0]*s[5] - c[3]*s[2]; +gout[n*9+8] = - c[0]*s[4] + 2*c[1]*s[3] - c[4]*s[0]; +} else { +gout[n*9+0] += - c[4]*s[8] + 2*c[5]*s[7] - c[8]*s[4]; +gout[n*9+1] += - c[5]*s[6] + c[8]*s[3] + c[3]*s[8] - c[6]*s[5]; +gout[n*9+2] += - c[3]*s[7] + c[6]*s[4] + c[4]*s[6] - c[7]*s[3]; +gout[n*9+3] += - c[7]*s[2] + c[1]*s[8] + c[8]*s[1] - c[2]*s[7]; +gout[n*9+4] += - c[8]*s[0] + 2*c[6]*s[2] - c[0]*s[8]; +gout[n*9+5] += - c[6]*s[1] + c[0]*s[7] + c[7]*s[0] - c[1]*s[6]; +gout[n*9+6] += - c[1]*s[5] + c[4]*s[2] + c[2]*s[4] - c[5]*s[1]; +gout[n*9+7] += - c[2]*s[3] + c[5]*s[0] + c[0]*s[5] - c[3]*s[2]; +gout[n*9+8] += - c[0]*s[4] + 2*c[1]*s[3] - c[4]*s[0]; +}}} +void int1e_ggovlp_optimizer(CINTOpt **opt, FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env) { +FINT ng[] = {0, 2, 0, 0, 2, 1, 1, 9}; +CINTall_1e_optimizer(opt, ng, atm, natm, bas, nbas, env); +} +CACHE_SIZE_T int1e_ggovlp_cart(dtype *out, FINT *dims, FINT *shls, +FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env, CINTOpt *opt, dtype *cache) { +FINT ng[] = {0, 2, 0, 0, 2, 1, 1, 9}; +CINTEnvVars envs; +CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env); +envs.f_gout = &CINTgout1e_int1e_ggovlp; +envs.common_factor *= 0.25; +return CINT1e_drv(out, dims, &envs, cache, &c2s_cart_1e, 0); +} +CACHE_SIZE_T int1e_ggovlp_sph(dtype *out, FINT *dims, FINT *shls, +FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env, CINTOpt *opt, dtype *cache) { +FINT ng[] = {0, 2, 0, 0, 2, 1, 1, 9}; +CINTEnvVars envs; +CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env); +envs.f_gout = &CINTgout1e_int1e_ggovlp; +envs.common_factor *= 0.25; +return CINT1e_drv(out, dims, &envs, cache, &c2s_sph_1e, 0); +} +CACHE_SIZE_T int1e_ggovlp_spinor(dtype *out, FINT *dims, FINT *shls, +FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env, CINTOpt *opt, dtype *cache) { +FINT ng[] = {0, 2, 0, 0, 2, 1, 1, 9}; +CINTEnvVars envs; +CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env); +envs.f_gout = &CINTgout1e_int1e_ggovlp; +envs.common_factor *= 0.25; +return CINT1e_spinor_drv(out, dims, &envs, cache, &c2s_sf_1e, 0); +} +ALL_CINT1E(int1e_ggovlp) +ALL_CINT1E_FORTRAN_(int1e_ggovlp) + +void CINTgout1e_int1e_ggkin(dtype *gout, dtype *g, FINT *idx, CINTEnvVars *envs, FINT gout_empty) { +FINT nf = envs->nf; +FINT ix, iy, iz, n; +dtype *g0 = g; +dtype *g1 = g0 + envs->g_size * 3; +dtype *g2 = g1 + envs->g_size * 3; +dtype *g3 = g2 + envs->g_size * 3; +dtype *g4 = g3 + envs->g_size * 3; +dtype *g5 = g4 + envs->g_size * 3; +dtype *g6 = g5 + envs->g_size * 3; +dtype *g7 = g6 + envs->g_size * 3; +dtype *g8 = g7 + envs->g_size * 3; +dtype *g9 = g8 + envs->g_size * 3; +dtype *g10 = g9 + envs->g_size * 3; +dtype *g11 = g10 + envs->g_size * 3; +dtype *g12 = g11 + envs->g_size * 3; +dtype *g13 = g12 + envs->g_size * 3; +dtype *g14 = g13 + envs->g_size * 3; +dtype *g15 = g14 + envs->g_size * 3; +dtype rirj[3], c[9]; +rirj[0] = envs->ri[0] - envs->rj[0]; +rirj[1] = envs->ri[1] - envs->rj[1]; +rirj[2] = envs->ri[2] - envs->rj[2]; +c[0] = 1 * rirj[0] * rirj[0]; +c[1] = 1 * rirj[0] * rirj[1]; +c[2] = 1 * rirj[0] * rirj[2]; +c[3] = 1 * rirj[1] * rirj[0]; +c[4] = 1 * rirj[1] * rirj[1]; +c[5] = 1 * rirj[1] * rirj[2]; +c[6] = 1 * rirj[2] * rirj[0]; +c[7] = 1 * rirj[2] * rirj[1]; +c[8] = 1 * rirj[2] * rirj[2]; +dtype s[81]; +G1E_D_J(g1, g0, envs->i_l+0, envs->j_l+0, 0); +G1E_D_J(g2, g0, envs->i_l+0, envs->j_l+1, 0); +G1E_D_J(g3, g2, envs->i_l+0, envs->j_l+0, 0); +G1E_R0J(g4, g0, envs->i_l+0, envs->j_l+2, 0); +G1E_D_J(g5, g4, envs->i_l+0, envs->j_l+0, 0); +G1E_D_J(g6, g4, envs->i_l+0, envs->j_l+1, 0); +G1E_D_J(g7, g6, envs->i_l+0, envs->j_l+0, 0); +G1E_R0J(g8, g0, envs->i_l+0, envs->j_l+3, 0); +G1E_D_J(g9, g8, envs->i_l+0, envs->j_l+0, 0); +G1E_D_J(g10, g8, envs->i_l+0, envs->j_l+1, 0); +G1E_D_J(g11, g10, envs->i_l+0, envs->j_l+0, 0); +G1E_R0J(g12, g8, envs->i_l+0, envs->j_l+2, 0); +G1E_D_J(g13, g12, envs->i_l+0, envs->j_l+0, 0); +G1E_D_J(g14, g12, envs->i_l+0, envs->j_l+1, 0); +G1E_D_J(g15, g14, envs->i_l+0, envs->j_l+0, 0); +for (n = 0; n < nf; n++) { +ix = idx[0+n*3]; +iy = idx[1+n*3]; +iz = idx[2+n*3]; +s[0] = + g15[ix+0]*g0[iy+0]*g0[iz+0]; +s[1] = + g14[ix+0]*g1[iy+0]*g0[iz+0]; +s[2] = + g14[ix+0]*g0[iy+0]*g1[iz+0]; +s[3] = + g13[ix+0]*g2[iy+0]*g0[iz+0]; +s[4] = + g12[ix+0]*g3[iy+0]*g0[iz+0]; +s[5] = + g12[ix+0]*g2[iy+0]*g1[iz+0]; +s[6] = + g13[ix+0]*g0[iy+0]*g2[iz+0]; +s[7] = + g12[ix+0]*g1[iy+0]*g2[iz+0]; +s[8] = + g12[ix+0]*g0[iy+0]*g3[iz+0]; +s[9] = + g11[ix+0]*g4[iy+0]*g0[iz+0]; +s[10] = + g10[ix+0]*g5[iy+0]*g0[iz+0]; +s[11] = + g10[ix+0]*g4[iy+0]*g1[iz+0]; +s[12] = + g9[ix+0]*g6[iy+0]*g0[iz+0]; +s[13] = + g8[ix+0]*g7[iy+0]*g0[iz+0]; +s[14] = + g8[ix+0]*g6[iy+0]*g1[iz+0]; +s[15] = + g9[ix+0]*g4[iy+0]*g2[iz+0]; +s[16] = + g8[ix+0]*g5[iy+0]*g2[iz+0]; +s[17] = + g8[ix+0]*g4[iy+0]*g3[iz+0]; +s[18] = + g11[ix+0]*g0[iy+0]*g4[iz+0]; +s[19] = + g10[ix+0]*g1[iy+0]*g4[iz+0]; +s[20] = + g10[ix+0]*g0[iy+0]*g5[iz+0]; +s[21] = + g9[ix+0]*g2[iy+0]*g4[iz+0]; +s[22] = + g8[ix+0]*g3[iy+0]*g4[iz+0]; +s[23] = + g8[ix+0]*g2[iy+0]*g5[iz+0]; +s[24] = + g9[ix+0]*g0[iy+0]*g6[iz+0]; +s[25] = + g8[ix+0]*g1[iy+0]*g6[iz+0]; +s[26] = + g8[ix+0]*g0[iy+0]*g7[iz+0]; +s[27] = + g7[ix+0]*g8[iy+0]*g0[iz+0]; +s[28] = + g6[ix+0]*g9[iy+0]*g0[iz+0]; +s[29] = + g6[ix+0]*g8[iy+0]*g1[iz+0]; +s[30] = + g5[ix+0]*g10[iy+0]*g0[iz+0]; +s[31] = + g4[ix+0]*g11[iy+0]*g0[iz+0]; +s[32] = + g4[ix+0]*g10[iy+0]*g1[iz+0]; +s[33] = + g5[ix+0]*g8[iy+0]*g2[iz+0]; +s[34] = + g4[ix+0]*g9[iy+0]*g2[iz+0]; +s[35] = + g4[ix+0]*g8[iy+0]*g3[iz+0]; +s[36] = + g3[ix+0]*g12[iy+0]*g0[iz+0]; +s[37] = + g2[ix+0]*g13[iy+0]*g0[iz+0]; +s[38] = + g2[ix+0]*g12[iy+0]*g1[iz+0]; +s[39] = + g1[ix+0]*g14[iy+0]*g0[iz+0]; +s[40] = + g0[ix+0]*g15[iy+0]*g0[iz+0]; +s[41] = + g0[ix+0]*g14[iy+0]*g1[iz+0]; +s[42] = + g1[ix+0]*g12[iy+0]*g2[iz+0]; +s[43] = + g0[ix+0]*g13[iy+0]*g2[iz+0]; +s[44] = + g0[ix+0]*g12[iy+0]*g3[iz+0]; +s[45] = + g3[ix+0]*g8[iy+0]*g4[iz+0]; +s[46] = + g2[ix+0]*g9[iy+0]*g4[iz+0]; +s[47] = + g2[ix+0]*g8[iy+0]*g5[iz+0]; +s[48] = + g1[ix+0]*g10[iy+0]*g4[iz+0]; +s[49] = + g0[ix+0]*g11[iy+0]*g4[iz+0]; +s[50] = + g0[ix+0]*g10[iy+0]*g5[iz+0]; +s[51] = + g1[ix+0]*g8[iy+0]*g6[iz+0]; +s[52] = + g0[ix+0]*g9[iy+0]*g6[iz+0]; +s[53] = + g0[ix+0]*g8[iy+0]*g7[iz+0]; +s[54] = + g7[ix+0]*g0[iy+0]*g8[iz+0]; +s[55] = + g6[ix+0]*g1[iy+0]*g8[iz+0]; +s[56] = + g6[ix+0]*g0[iy+0]*g9[iz+0]; +s[57] = + g5[ix+0]*g2[iy+0]*g8[iz+0]; +s[58] = + g4[ix+0]*g3[iy+0]*g8[iz+0]; +s[59] = + g4[ix+0]*g2[iy+0]*g9[iz+0]; +s[60] = + g5[ix+0]*g0[iy+0]*g10[iz+0]; +s[61] = + g4[ix+0]*g1[iy+0]*g10[iz+0]; +s[62] = + g4[ix+0]*g0[iy+0]*g11[iz+0]; +s[63] = + g3[ix+0]*g4[iy+0]*g8[iz+0]; +s[64] = + g2[ix+0]*g5[iy+0]*g8[iz+0]; +s[65] = + g2[ix+0]*g4[iy+0]*g9[iz+0]; +s[66] = + g1[ix+0]*g6[iy+0]*g8[iz+0]; +s[67] = + g0[ix+0]*g7[iy+0]*g8[iz+0]; +s[68] = + g0[ix+0]*g6[iy+0]*g9[iz+0]; +s[69] = + g1[ix+0]*g4[iy+0]*g10[iz+0]; +s[70] = + g0[ix+0]*g5[iy+0]*g10[iz+0]; +s[71] = + g0[ix+0]*g4[iy+0]*g11[iz+0]; +s[72] = + g3[ix+0]*g0[iy+0]*g12[iz+0]; +s[73] = + g2[ix+0]*g1[iy+0]*g12[iz+0]; +s[74] = + g2[ix+0]*g0[iy+0]*g13[iz+0]; +s[75] = + g1[ix+0]*g2[iy+0]*g12[iz+0]; +s[76] = + g0[ix+0]*g3[iy+0]*g12[iz+0]; +s[77] = + g0[ix+0]*g2[iy+0]*g13[iz+0]; +s[78] = + g1[ix+0]*g0[iy+0]*g14[iz+0]; +s[79] = + g0[ix+0]*g1[iy+0]*g14[iz+0]; +s[80] = + g0[ix+0]*g0[iy+0]*g15[iz+0]; +if (gout_empty) { +gout[n*9+0] = + c[4]*s[72] -2*c[5]*s[63] + c[8]*s[36] + c[4]*s[76] -2*c[5]*s[67] + c[8]*s[40] + c[4]*s[80] -2*c[5]*s[71] + c[8]*s[44]; +gout[n*9+1] = + c[5]*s[54] - c[8]*s[27] - c[3]*s[72] + c[6]*s[45] + c[5]*s[58] - c[8]*s[31] - c[3]*s[76] + c[6]*s[49] + c[5]*s[62] - c[8]*s[35] - c[3]*s[80] + c[6]*s[53]; +gout[n*9+2] = + c[3]*s[63] - c[6]*s[36] - c[4]*s[54] + c[7]*s[27] + c[3]*s[67] - c[6]*s[40] - c[4]*s[58] + c[7]*s[31] + c[3]*s[71] - c[6]*s[44] - c[4]*s[62] + c[7]*s[35]; +gout[n*9+3] = + c[7]*s[18] - c[1]*s[72] - c[8]*s[9] + c[2]*s[63] + c[7]*s[22] - c[1]*s[76] - c[8]*s[13] + c[2]*s[67] + c[7]*s[26] - c[1]*s[80] - c[8]*s[17] + c[2]*s[71]; +gout[n*9+4] = + c[8]*s[0] -2*c[6]*s[18] + c[0]*s[72] + c[8]*s[4] -2*c[6]*s[22] + c[0]*s[76] + c[8]*s[8] -2*c[6]*s[26] + c[0]*s[80]; +gout[n*9+5] = + c[6]*s[9] - c[0]*s[63] - c[7]*s[0] + c[1]*s[54] + c[6]*s[13] - c[0]*s[67] - c[7]*s[4] + c[1]*s[58] + c[6]*s[17] - c[0]*s[71] - c[7]*s[8] + c[1]*s[62]; +gout[n*9+6] = + c[1]*s[45] - c[4]*s[18] - c[2]*s[36] + c[5]*s[9] + c[1]*s[49] - c[4]*s[22] - c[2]*s[40] + c[5]*s[13] + c[1]*s[53] - c[4]*s[26] - c[2]*s[44] + c[5]*s[17]; +gout[n*9+7] = + c[2]*s[27] - c[5]*s[0] - c[0]*s[45] + c[3]*s[18] + c[2]*s[31] - c[5]*s[4] - c[0]*s[49] + c[3]*s[22] + c[2]*s[35] - c[5]*s[8] - c[0]*s[53] + c[3]*s[26]; +gout[n*9+8] = + c[0]*s[36] -2*c[1]*s[27] + c[4]*s[0] + c[0]*s[40] -2*c[1]*s[31] + c[4]*s[4] + c[0]*s[44] -2*c[1]*s[35] + c[4]*s[8]; +} else { +gout[n*9+0] += + c[4]*s[72] -2*c[5]*s[63] + c[8]*s[36] + c[4]*s[76] -2*c[5]*s[67] + c[8]*s[40] + c[4]*s[80] -2*c[5]*s[71] + c[8]*s[44]; +gout[n*9+1] += + c[5]*s[54] - c[8]*s[27] - c[3]*s[72] + c[6]*s[45] + c[5]*s[58] - c[8]*s[31] - c[3]*s[76] + c[6]*s[49] + c[5]*s[62] - c[8]*s[35] - c[3]*s[80] + c[6]*s[53]; +gout[n*9+2] += + c[3]*s[63] - c[6]*s[36] - c[4]*s[54] + c[7]*s[27] + c[3]*s[67] - c[6]*s[40] - c[4]*s[58] + c[7]*s[31] + c[3]*s[71] - c[6]*s[44] - c[4]*s[62] + c[7]*s[35]; +gout[n*9+3] += + c[7]*s[18] - c[1]*s[72] - c[8]*s[9] + c[2]*s[63] + c[7]*s[22] - c[1]*s[76] - c[8]*s[13] + c[2]*s[67] + c[7]*s[26] - c[1]*s[80] - c[8]*s[17] + c[2]*s[71]; +gout[n*9+4] += + c[8]*s[0] -2*c[6]*s[18] + c[0]*s[72] + c[8]*s[4] -2*c[6]*s[22] + c[0]*s[76] + c[8]*s[8] -2*c[6]*s[26] + c[0]*s[80]; +gout[n*9+5] += + c[6]*s[9] - c[0]*s[63] - c[7]*s[0] + c[1]*s[54] + c[6]*s[13] - c[0]*s[67] - c[7]*s[4] + c[1]*s[58] + c[6]*s[17] - c[0]*s[71] - c[7]*s[8] + c[1]*s[62]; +gout[n*9+6] += + c[1]*s[45] - c[4]*s[18] - c[2]*s[36] + c[5]*s[9] + c[1]*s[49] - c[4]*s[22] - c[2]*s[40] + c[5]*s[13] + c[1]*s[53] - c[4]*s[26] - c[2]*s[44] + c[5]*s[17]; +gout[n*9+7] += + c[2]*s[27] - c[5]*s[0] - c[0]*s[45] + c[3]*s[18] + c[2]*s[31] - c[5]*s[4] - c[0]*s[49] + c[3]*s[22] + c[2]*s[35] - c[5]*s[8] - c[0]*s[53] + c[3]*s[26]; +gout[n*9+8] += + c[0]*s[36] -2*c[1]*s[27] + c[4]*s[0] + c[0]*s[40] -2*c[1]*s[31] + c[4]*s[4] + c[0]*s[44] -2*c[1]*s[35] + c[4]*s[8]; +}}} +void int1e_ggkin_optimizer(CINTOpt **opt, FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env) { +FINT ng[] = {0, 4, 0, 0, 4, 1, 1, 9}; +CINTall_1e_optimizer(opt, ng, atm, natm, bas, nbas, env); +} +CACHE_SIZE_T int1e_ggkin_cart(dtype *out, FINT *dims, FINT *shls, +FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env, CINTOpt *opt, dtype *cache) { +FINT ng[] = {0, 4, 0, 0, 4, 1, 1, 9}; +CINTEnvVars envs; +CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env); +envs.f_gout = &CINTgout1e_int1e_ggkin; +envs.common_factor *= 0.125; +return CINT1e_drv(out, dims, &envs, cache, &c2s_cart_1e, 0); +} +CACHE_SIZE_T int1e_ggkin_sph(dtype *out, FINT *dims, FINT *shls, +FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env, CINTOpt *opt, dtype *cache) { +FINT ng[] = {0, 4, 0, 0, 4, 1, 1, 9}; +CINTEnvVars envs; +CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env); +envs.f_gout = &CINTgout1e_int1e_ggkin; +envs.common_factor *= 0.125; +return CINT1e_drv(out, dims, &envs, cache, &c2s_sph_1e, 0); +} +CACHE_SIZE_T int1e_ggkin_spinor(dtype *out, FINT *dims, FINT *shls, +FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env, CINTOpt *opt, dtype *cache) { +FINT ng[] = {0, 4, 0, 0, 4, 1, 1, 9}; +CINTEnvVars envs; +CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env); +envs.f_gout = &CINTgout1e_int1e_ggkin; +envs.common_factor *= 0.125; +return CINT1e_spinor_drv(out, dims, &envs, cache, &c2s_sf_1e, 0); +} +ALL_CINT1E(int1e_ggkin) +ALL_CINT1E_FORTRAN_(int1e_ggkin) + +void CINTgout1e_int1e_ggnuc(dtype *gout, dtype *g, FINT *idx, CINTEnvVars *envs, FINT gout_empty) { +FINT nf = envs->nf; +FINT nrys_roots = envs->nrys_roots; +FINT ix, iy, iz, n, i; +dtype *g0 = g; +dtype *g1 = g0 + envs->g_size * 3; +dtype *g2 = g1 + envs->g_size * 3; +dtype *g3 = g2 + envs->g_size * 3; +dtype rirj[3], c[9]; +rirj[0] = envs->ri[0] - envs->rj[0]; +rirj[1] = envs->ri[1] - envs->rj[1]; +rirj[2] = envs->ri[2] - envs->rj[2]; +c[0] = 1 * rirj[0] * rirj[0]; +c[1] = 1 * rirj[0] * rirj[1]; +c[2] = 1 * rirj[0] * rirj[2]; +c[3] = 1 * rirj[1] * rirj[0]; +c[4] = 1 * rirj[1] * rirj[1]; +c[5] = 1 * rirj[1] * rirj[2]; +c[6] = 1 * rirj[2] * rirj[0]; +c[7] = 1 * rirj[2] * rirj[1]; +c[8] = 1 * rirj[2] * rirj[2]; +G2E_R0J(g1, g0, envs->i_l+0, envs->j_l+0, 0, 0); +G2E_R0J(g2, g0, envs->i_l+0, envs->j_l+1, 0, 0); +G2E_R0J(g3, g2, envs->i_l+0, envs->j_l+0, 0, 0); +dtype s[9]; +for (n = 0; n < nf; n++) { +ix = idx[0+n*3]; +iy = idx[1+n*3]; +iz = idx[2+n*3]; +for (i = 0; i < 9; i++) { s[i] = 0; } +for (i = 0; i < nrys_roots; i++) { +s[0] += g3[ix+i] * g0[iy+i] * g0[iz+i]; +s[1] += g2[ix+i] * g1[iy+i] * g0[iz+i]; +s[2] += g2[ix+i] * g0[iy+i] * g1[iz+i]; +s[3] += g1[ix+i] * g2[iy+i] * g0[iz+i]; +s[4] += g0[ix+i] * g3[iy+i] * g0[iz+i]; +s[5] += g0[ix+i] * g2[iy+i] * g1[iz+i]; +s[6] += g1[ix+i] * g0[iy+i] * g2[iz+i]; +s[7] += g0[ix+i] * g1[iy+i] * g2[iz+i]; +s[8] += g0[ix+i] * g0[iy+i] * g3[iz+i]; +} +if (gout_empty) { +gout[n*9+0] = - c[4]*s[8] + 2*c[5]*s[7] - c[8]*s[4]; +gout[n*9+1] = - c[5]*s[6] + c[8]*s[3] + c[3]*s[8] - c[6]*s[5]; +gout[n*9+2] = - c[3]*s[7] + c[6]*s[4] + c[4]*s[6] - c[7]*s[3]; +gout[n*9+3] = - c[7]*s[2] + c[1]*s[8] + c[8]*s[1] - c[2]*s[7]; +gout[n*9+4] = - c[8]*s[0] + 2*c[6]*s[2] - c[0]*s[8]; +gout[n*9+5] = - c[6]*s[1] + c[0]*s[7] + c[7]*s[0] - c[1]*s[6]; +gout[n*9+6] = - c[1]*s[5] + c[4]*s[2] + c[2]*s[4] - c[5]*s[1]; +gout[n*9+7] = - c[2]*s[3] + c[5]*s[0] + c[0]*s[5] - c[3]*s[2]; +gout[n*9+8] = - c[0]*s[4] + 2*c[1]*s[3] - c[4]*s[0]; +} else { +gout[n*9+0] += - c[4]*s[8] + 2*c[5]*s[7] - c[8]*s[4]; +gout[n*9+1] += - c[5]*s[6] + c[8]*s[3] + c[3]*s[8] - c[6]*s[5]; +gout[n*9+2] += - c[3]*s[7] + c[6]*s[4] + c[4]*s[6] - c[7]*s[3]; +gout[n*9+3] += - c[7]*s[2] + c[1]*s[8] + c[8]*s[1] - c[2]*s[7]; +gout[n*9+4] += - c[8]*s[0] + 2*c[6]*s[2] - c[0]*s[8]; +gout[n*9+5] += - c[6]*s[1] + c[0]*s[7] + c[7]*s[0] - c[1]*s[6]; +gout[n*9+6] += - c[1]*s[5] + c[4]*s[2] + c[2]*s[4] - c[5]*s[1]; +gout[n*9+7] += - c[2]*s[3] + c[5]*s[0] + c[0]*s[5] - c[3]*s[2]; +gout[n*9+8] += - c[0]*s[4] + 2*c[1]*s[3] - c[4]*s[0]; +}}} +void int1e_ggnuc_optimizer(CINTOpt **opt, FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env) { +FINT ng[] = {0, 2, 0, 0, 2, 1, 0, 9}; +CINTall_1e_optimizer(opt, ng, atm, natm, bas, nbas, env); +} +CACHE_SIZE_T int1e_ggnuc_cart(dtype *out, FINT *dims, FINT *shls, +FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env, CINTOpt *opt, dtype *cache) { +FINT ng[] = {0, 2, 0, 0, 2, 1, 0, 9}; +CINTEnvVars envs; +CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env); +envs.f_gout = &CINTgout1e_int1e_ggnuc; +envs.common_factor *= 0.25; +return CINT1e_drv(out, dims, &envs, cache, &c2s_cart_1e, 2); +} +CACHE_SIZE_T int1e_ggnuc_sph(dtype *out, FINT *dims, FINT *shls, +FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env, CINTOpt *opt, dtype *cache) { +FINT ng[] = {0, 2, 0, 0, 2, 1, 0, 9}; +CINTEnvVars envs; +CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env); +envs.f_gout = &CINTgout1e_int1e_ggnuc; +envs.common_factor *= 0.25; +return CINT1e_drv(out, dims, &envs, cache, &c2s_sph_1e, 2); +} +CACHE_SIZE_T int1e_ggnuc_spinor(dtype *out, FINT *dims, FINT *shls, +FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env, CINTOpt *opt, dtype *cache) { +FINT ng[] = {0, 2, 0, 0, 2, 1, 0, 9}; +CINTEnvVars envs; +CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env); +envs.f_gout = &CINTgout1e_int1e_ggnuc; +envs.common_factor *= 0.25; +return CINT1e_spinor_drv(out, dims, &envs, cache, &c2s_sf_1e, 2); +} +ALL_CINT1E(int1e_ggnuc) +ALL_CINT1E_FORTRAN_(int1e_ggnuc) + +void CINTgout1e_int1e_grjxp(dtype *gout, dtype *g, FINT *idx, CINTEnvVars *envs, FINT gout_empty) { +FINT nf = envs->nf; +FINT ix, iy, iz, n; +dtype *g0 = g; +dtype *g1 = g0 + envs->g_size * 3; +dtype *g2 = g1 + envs->g_size * 3; +dtype *g3 = g2 + envs->g_size * 3; +dtype *g4 = g3 + envs->g_size * 3; +dtype *g5 = g4 + envs->g_size * 3; +dtype *g6 = g5 + envs->g_size * 3; +dtype *g7 = g6 + envs->g_size * 3; +dtype rirj[3], c[3]; +rirj[0] = envs->ri[0] - envs->rj[0]; +rirj[1] = envs->ri[1] - envs->rj[1]; +rirj[2] = envs->ri[2] - envs->rj[2]; +c[0] = 1 * rirj[0]; +c[1] = 1 * rirj[1]; +c[2] = 1 * rirj[2]; +dtype s[27]; +G1E_D_J(g1, g0, envs->i_l+0, envs->j_l+0, 0); +G1E_R_J(g2, g0, envs->i_l+0, envs->j_l+1, 0); +G1E_D_J(g3, g2, envs->i_l+0, envs->j_l+0, 0); +G1E_R0J(g4, g0, envs->i_l+0, envs->j_l+2, 0); +G1E_D_J(g5, g4, envs->i_l+0, envs->j_l+0, 0); +G1E_R_J(g6, g4, envs->i_l+0, envs->j_l+1, 0); +G1E_D_J(g7, g6, envs->i_l+0, envs->j_l+0, 0); +for (n = 0; n < nf; n++) { +ix = idx[0+n*3]; +iy = idx[1+n*3]; +iz = idx[2+n*3]; +s[0] = + g7[ix+0]*g0[iy+0]*g0[iz+0]; +s[1] = + g6[ix+0]*g1[iy+0]*g0[iz+0]; +s[2] = + g6[ix+0]*g0[iy+0]*g1[iz+0]; +s[3] = + g5[ix+0]*g2[iy+0]*g0[iz+0]; +s[4] = + g4[ix+0]*g3[iy+0]*g0[iz+0]; +s[5] = + g4[ix+0]*g2[iy+0]*g1[iz+0]; +s[6] = + g5[ix+0]*g0[iy+0]*g2[iz+0]; +s[7] = + g4[ix+0]*g1[iy+0]*g2[iz+0]; +s[8] = + g4[ix+0]*g0[iy+0]*g3[iz+0]; +s[9] = + g3[ix+0]*g4[iy+0]*g0[iz+0]; +s[10] = + g2[ix+0]*g5[iy+0]*g0[iz+0]; +s[11] = + g2[ix+0]*g4[iy+0]*g1[iz+0]; +s[12] = + g1[ix+0]*g6[iy+0]*g0[iz+0]; +s[13] = + g0[ix+0]*g7[iy+0]*g0[iz+0]; +s[14] = + g0[ix+0]*g6[iy+0]*g1[iz+0]; +s[15] = + g1[ix+0]*g4[iy+0]*g2[iz+0]; +s[16] = + g0[ix+0]*g5[iy+0]*g2[iz+0]; +s[17] = + g0[ix+0]*g4[iy+0]*g3[iz+0]; +s[18] = + g3[ix+0]*g0[iy+0]*g4[iz+0]; +s[19] = + g2[ix+0]*g1[iy+0]*g4[iz+0]; +s[20] = + g2[ix+0]*g0[iy+0]*g5[iz+0]; +s[21] = + g1[ix+0]*g2[iy+0]*g4[iz+0]; +s[22] = + g0[ix+0]*g3[iy+0]*g4[iz+0]; +s[23] = + g0[ix+0]*g2[iy+0]*g5[iz+0]; +s[24] = + g1[ix+0]*g0[iy+0]*g6[iz+0]; +s[25] = + g0[ix+0]*g1[iy+0]*g6[iz+0]; +s[26] = + g0[ix+0]*g0[iy+0]*g7[iz+0]; +if (gout_empty) { +gout[n*9+0] = + c[1]*s[23] - c[2]*s[14] - c[1]*s[25] + c[2]*s[16]; +gout[n*9+1] = + c[1]*s[24] - c[2]*s[15] - c[1]*s[20] + c[2]*s[11]; +gout[n*9+2] = + c[1]*s[19] - c[2]*s[10] - c[1]*s[21] + c[2]*s[12]; +gout[n*9+3] = + c[2]*s[5] - c[0]*s[23] - c[2]*s[7] + c[0]*s[25]; +gout[n*9+4] = + c[2]*s[6] - c[0]*s[24] - c[2]*s[2] + c[0]*s[20]; +gout[n*9+5] = + c[2]*s[1] - c[0]*s[19] - c[2]*s[3] + c[0]*s[21]; +gout[n*9+6] = + c[0]*s[14] - c[1]*s[5] - c[0]*s[16] + c[1]*s[7]; +gout[n*9+7] = + c[0]*s[15] - c[1]*s[6] - c[0]*s[11] + c[1]*s[2]; +gout[n*9+8] = + c[0]*s[10] - c[1]*s[1] - c[0]*s[12] + c[1]*s[3]; +} else { +gout[n*9+0] += + c[1]*s[23] - c[2]*s[14] - c[1]*s[25] + c[2]*s[16]; +gout[n*9+1] += + c[1]*s[24] - c[2]*s[15] - c[1]*s[20] + c[2]*s[11]; +gout[n*9+2] += + c[1]*s[19] - c[2]*s[10] - c[1]*s[21] + c[2]*s[12]; +gout[n*9+3] += + c[2]*s[5] - c[0]*s[23] - c[2]*s[7] + c[0]*s[25]; +gout[n*9+4] += + c[2]*s[6] - c[0]*s[24] - c[2]*s[2] + c[0]*s[20]; +gout[n*9+5] += + c[2]*s[1] - c[0]*s[19] - c[2]*s[3] + c[0]*s[21]; +gout[n*9+6] += + c[0]*s[14] - c[1]*s[5] - c[0]*s[16] + c[1]*s[7]; +gout[n*9+7] += + c[0]*s[15] - c[1]*s[6] - c[0]*s[11] + c[1]*s[2]; +gout[n*9+8] += + c[0]*s[10] - c[1]*s[1] - c[0]*s[12] + c[1]*s[3]; +}}} +void int1e_grjxp_optimizer(CINTOpt **opt, FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env) { +FINT ng[] = {0, 3, 0, 0, 3, 1, 1, 9}; +CINTall_1e_optimizer(opt, ng, atm, natm, bas, nbas, env); +} +CACHE_SIZE_T int1e_grjxp_cart(dtype *out, FINT *dims, FINT *shls, +FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env, CINTOpt *opt, dtype *cache) { +FINT ng[] = {0, 3, 0, 0, 3, 1, 1, 9}; +CINTEnvVars envs; +CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env); +envs.f_gout = &CINTgout1e_int1e_grjxp; +envs.common_factor *= 0.5; +return CINT1e_drv(out, dims, &envs, cache, &c2s_cart_1e, 0); +} +CACHE_SIZE_T int1e_grjxp_sph(dtype *out, FINT *dims, FINT *shls, +FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env, CINTOpt *opt, dtype *cache) { +FINT ng[] = {0, 3, 0, 0, 3, 1, 1, 9}; +CINTEnvVars envs; +CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env); +envs.f_gout = &CINTgout1e_int1e_grjxp; +envs.common_factor *= 0.5; +return CINT1e_drv(out, dims, &envs, cache, &c2s_sph_1e, 0); +} +CACHE_SIZE_T int1e_grjxp_spinor(dtype *out, FINT *dims, FINT *shls, +FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env, CINTOpt *opt, dtype *cache) { +FINT ng[] = {0, 3, 0, 0, 3, 1, 1, 9}; +CINTEnvVars envs; +CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env); +envs.f_gout = &CINTgout1e_int1e_grjxp; +envs.common_factor *= 0.5; +return CINT1e_spinor_drv(out, dims, &envs, cache, &c2s_sf_1e, 0); +} +ALL_CINT1E(int1e_grjxp) +ALL_CINT1E_FORTRAN_(int1e_grjxp) + +void CINTgout1e_int1e_rinv(dtype *gout, dtype *g, FINT *idx, CINTEnvVars *envs, FINT gout_empty) { +FINT nf = envs->nf; +FINT nrys_roots = envs->nrys_roots; +FINT ix, iy, iz, n, i; +dtype *g0 = g; +dtype s[1]; +for (n = 0; n < nf; n++) { +ix = idx[0+n*3]; +iy = idx[1+n*3]; +iz = idx[2+n*3]; +for (i = 0; i < 1; i++) { s[i] = 0; } +for (i = 0; i < nrys_roots; i++) { +s[0] += g0[ix+i] * g0[iy+i] * g0[iz+i]; +} +if (gout_empty) { +gout[n*1+0] = + s[0]; +} else { +gout[n*1+0] += + s[0]; +}}} +void int1e_rinv_optimizer(CINTOpt **opt, FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env) { +FINT ng[] = {0, 0, 0, 0, 0, 1, 0, 1}; +CINTall_1e_optimizer(opt, ng, atm, natm, bas, nbas, env); +} +CACHE_SIZE_T int1e_rinv_cart(dtype *out, FINT *dims, FINT *shls, +FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env, CINTOpt *opt, dtype *cache) { +FINT ng[] = {0, 0, 0, 0, 0, 1, 0, 1}; +CINTEnvVars envs; +CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env); +envs.f_gout = &CINTgout1e_int1e_rinv; +return CINT1e_drv(out, dims, &envs, cache, &c2s_cart_1e, 1); +} +CACHE_SIZE_T int1e_rinv_sph(dtype *out, FINT *dims, FINT *shls, +FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env, CINTOpt *opt, dtype *cache) { +FINT ng[] = {0, 0, 0, 0, 0, 1, 0, 1}; +CINTEnvVars envs; +CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env); +envs.f_gout = &CINTgout1e_int1e_rinv; +return CINT1e_drv(out, dims, &envs, cache, &c2s_sph_1e, 1); +} +CACHE_SIZE_T int1e_rinv_spinor(dtype *out, FINT *dims, FINT *shls, +FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env, CINTOpt *opt, dtype *cache) { +FINT ng[] = {0, 0, 0, 0, 0, 1, 0, 1}; +CINTEnvVars envs; +CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env); +envs.f_gout = &CINTgout1e_int1e_rinv; +return CINT1e_spinor_drv(out, dims, &envs, cache, &c2s_sf_1e, 1); +} +ALL_CINT1E(int1e_rinv) +ALL_CINT1E_FORTRAN_(int1e_rinv) + +void CINTgout1e_int1e_drinv(dtype *gout, dtype *g, FINT *idx, CINTEnvVars *envs, FINT gout_empty) { +FINT nf = envs->nf; +FINT nrys_roots = envs->nrys_roots; +FINT ix, iy, iz, n, i; +dtype *g0 = g; +dtype *g1 = g0 + envs->g_size * 3; +dtype *g2 = g1 + envs->g_size * 3; +G2E_D_J(g1, g0, envs->i_l+0, envs->j_l+0, 0, 0); +G2E_D_I(g2, g0, envs->i_l+0, envs->j_l+0, 0, 0); +for (ix = 0; ix < envs->g_size * 3; ix++) {g1[ix] += g2[ix];} +dtype s[3]; +for (n = 0; n < nf; n++) { +ix = idx[0+n*3]; +iy = idx[1+n*3]; +iz = idx[2+n*3]; +for (i = 0; i < 3; i++) { s[i] = 0; } +for (i = 0; i < nrys_roots; i++) { +s[0] += g1[ix+i] * g0[iy+i] * g0[iz+i]; +s[1] += g0[ix+i] * g1[iy+i] * g0[iz+i]; +s[2] += g0[ix+i] * g0[iy+i] * g1[iz+i]; +} +if (gout_empty) { +gout[n*3+0] = + s[0]; +gout[n*3+1] = + s[1]; +gout[n*3+2] = + s[2]; +} else { +gout[n*3+0] += + s[0]; +gout[n*3+1] += + s[1]; +gout[n*3+2] += + s[2]; +}}} +void int1e_drinv_optimizer(CINTOpt **opt, FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env) { +FINT ng[] = {1, 1, 0, 0, 1, 1, 0, 3}; +CINTall_1e_optimizer(opt, ng, atm, natm, bas, nbas, env); +} +CACHE_SIZE_T int1e_drinv_cart(dtype *out, FINT *dims, FINT *shls, +FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env, CINTOpt *opt, dtype *cache) { +FINT ng[] = {1, 1, 0, 0, 1, 1, 0, 3}; +CINTEnvVars envs; +CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env); +envs.f_gout = &CINTgout1e_int1e_drinv; +return CINT1e_drv(out, dims, &envs, cache, &c2s_cart_1e, 1); +} +CACHE_SIZE_T int1e_drinv_sph(dtype *out, FINT *dims, FINT *shls, +FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env, CINTOpt *opt, dtype *cache) { +FINT ng[] = {1, 1, 0, 0, 1, 1, 0, 3}; +CINTEnvVars envs; +CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env); +envs.f_gout = &CINTgout1e_int1e_drinv; +return CINT1e_drv(out, dims, &envs, cache, &c2s_sph_1e, 1); +} +CACHE_SIZE_T int1e_drinv_spinor(dtype *out, FINT *dims, FINT *shls, +FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env, CINTOpt *opt, dtype *cache) { +FINT ng[] = {1, 1, 0, 0, 1, 1, 0, 3}; +CINTEnvVars envs; +CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env); +envs.f_gout = &CINTgout1e_int1e_drinv; +return CINT1e_spinor_drv(out, dims, &envs, cache, &c2s_sf_1e, 1); +} +ALL_CINT1E(int1e_drinv) +ALL_CINT1E_FORTRAN_(int1e_drinv) + + + + +#include +//#include + + +*/void CINTgout1e_int1e_ipovlp(dtype *gout, dtype *g, FINT *idx, CINTEnvVars *envs, FINT gout_empty) { +FINT nf = envs->nf; +FINT ix, iy, iz, n; +dtype *g0 = g; +dtype *g1 = g0 + envs->g_size * 3; +dtype s[3]; +G1E_D_I(g1, g0, envs->i_l+0, envs->j_l, 0); +for (n = 0; n < nf; n++) { +ix = idx[0+n*3]; +iy = idx[1+n*3]; +iz = idx[2+n*3]; +s[0] = + g1[ix+0]*g0[iy+0]*g0[iz+0]; +s[1] = + g0[ix+0]*g1[iy+0]*g0[iz+0]; +s[2] = + g0[ix+0]*g0[iy+0]*g1[iz+0]; +if (gout_empty) { +gout[n*3+0] = + s[0]; +gout[n*3+1] = + s[1]; +gout[n*3+2] = + s[2]; +} else { +gout[n*3+0] += + s[0]; +gout[n*3+1] += + s[1]; +gout[n*3+2] += + s[2]; +}}} +/*void int1e_ipovlp_optimizer(CINTOpt **opt, FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env) { +FINT ng[] = {1, 0, 0, 0, 1, 1, 1, 3}; +CINTall_1e_optimizer(opt, ng, atm, natm, bas, nbas, env); +} +CACHE_SIZE_T int1e_ipovlp_cart(dtype *out, FINT *dims, FINT *shls, +FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env, CINTOpt *opt, dtype *cache) { +FINT ng[] = {1, 0, 0, 0, 1, 1, 1, 3}; +CINTEnvVars envs; +CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env); +envs.f_gout = &CINTgout1e_int1e_ipovlp; +return CINT1e_drv(out, dims, &envs, cache, &c2s_cart_1e, 0); +} +*/ +CACHE_SIZE_T int1e_ipovlp_sph(dtype *out, FINT *dims, FINT *shls, +FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env, CINTOpt *opt, dtype *cache) { + + WHICH_INTEGRAL = INT1E_OVLP_IP; +FINT ng[] = {1, 0, 0, 0, 1, 1, 1, 3}; +CINTEnvVars envs; +CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env); +#ifdef __cplusplus +envs.f_gout = (void (*)(...))&CINTgout1e_int1e_ipovlp; +#else +envs.f_gout = &CINTgout1e_int1e_ipovlp; +#endif +return CINT1e_drv(out, dims, &envs, cache, &c2s_sph_1e, 0); +} /* +CACHE_SIZE_T int1e_ipovlp_spinor(dtype *out, FINT *dims, FINT *shls, +FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env, CINTOpt *opt, dtype *cache) { +FINT ng[] = {1, 0, 0, 0, 1, 1, 1, 3}; +CINTEnvVars envs; +CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env); +envs.f_gout = &CINTgout1e_int1e_ipovlp; +return CINT1e_spinor_drv(out, dims, &envs, cache, &c2s_sf_1e, 0); +} +ALL_CINT1E(int1e_ipovlp) +ALL_CINT1E_FORTRAN_(int1e_ipovlp) + +void CINTgout1e_int1e_ovlpip(dtype *gout, dtype *g, FINT *idx, CINTEnvVars *envs, FINT gout_empty) { +FINT nf = envs->nf; +FINT ix, iy, iz, n; +dtype *g0 = g; +dtype *g1 = g0 + envs->g_size * 3; +dtype s[3]; +G1E_D_J(g1, g0, envs->i_l+0, envs->j_l+0, 0); +for (n = 0; n < nf; n++) { +ix = idx[0+n*3]; +iy = idx[1+n*3]; +iz = idx[2+n*3]; +s[0] = + g1[ix+0]*g0[iy+0]*g0[iz+0]; +s[1] = + g0[ix+0]*g1[iy+0]*g0[iz+0]; +s[2] = + g0[ix+0]*g0[iy+0]*g1[iz+0]; +if (gout_empty) { +gout[n*3+0] = + s[0]; +gout[n*3+1] = + s[1]; +gout[n*3+2] = + s[2]; +} else { +gout[n*3+0] += + s[0]; +gout[n*3+1] += + s[1]; +gout[n*3+2] += + s[2]; +}}} +void int1e_ovlpip_optimizer(CINTOpt **opt, FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env) { +FINT ng[] = {0, 1, 0, 0, 1, 1, 1, 3}; +CINTall_1e_optimizer(opt, ng, atm, natm, bas, nbas, env); +} +CACHE_SIZE_T int1e_ovlpip_cart(dtype *out, FINT *dims, FINT *shls, +FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env, CINTOpt *opt, dtype *cache) { +FINT ng[] = {0, 1, 0, 0, 1, 1, 1, 3}; +CINTEnvVars envs; +CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env); +envs.f_gout = &CINTgout1e_int1e_ovlpip; +return CINT1e_drv(out, dims, &envs, cache, &c2s_cart_1e, 0); +} +CACHE_SIZE_T int1e_ovlpip_sph(dtype *out, FINT *dims, FINT *shls, +FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env, CINTOpt *opt, dtype *cache) { +FINT ng[] = {0, 1, 0, 0, 1, 1, 1, 3}; +CINTEnvVars envs; +CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env); +envs.f_gout = &CINTgout1e_int1e_ovlpip; +return CINT1e_drv(out, dims, &envs, cache, &c2s_sph_1e, 0); +} +CACHE_SIZE_T int1e_ovlpip_spinor(dtype *out, FINT *dims, FINT *shls, +FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env, CINTOpt *opt, dtype *cache) { +FINT ng[] = {0, 1, 0, 0, 1, 1, 1, 3}; +CINTEnvVars envs; +CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env); +envs.f_gout = &CINTgout1e_int1e_ovlpip; +return CINT1e_spinor_drv(out, dims, &envs, cache, &c2s_sf_1e, 0); +} +ALL_CINT1E(int1e_ovlpip) +ALL_CINT1E_FORTRAN_(int1e_ovlpip) + +*/ +void CINTgout1e_int1e_ipkin(dtype *gout, dtype *g, FINT *idx, CINTEnvVars *envs, FINT gout_empty) { +FINT nf = envs->nf; +FINT ix, iy, iz, n; +dtype *g0 = g; +dtype *g1 = g0 + envs->g_size * 3; +dtype *g2 = g1 + envs->g_size * 3; +dtype *g3 = g2 + envs->g_size * 3; +dtype *g4 = g3 + envs->g_size * 3; +dtype *g5 = g4 + envs->g_size * 3; +dtype *g6 = g5 + envs->g_size * 3; +dtype *g7 = g6 + envs->g_size * 3; +dtype s[27]; +G1E_D_J(g1, g0, envs->i_l+1, envs->j_l+0, 0); +G1E_D_J(g2, g0, envs->i_l+1, envs->j_l+1, 0); +G1E_D_J(g3, g2, envs->i_l+1, envs->j_l+0, 0); +G1E_D_I(g4, g0, envs->i_l+0, envs->j_l, 0); +G1E_D_I(g5, g1, envs->i_l+0, envs->j_l, 0); +G1E_D_I(g6, g2, envs->i_l+0, envs->j_l, 0); +G1E_D_I(g7, g3, envs->i_l+0, envs->j_l, 0); +for (n = 0; n < nf; n++) { +ix = idx[0+n*3]; +iy = idx[1+n*3]; +iz = idx[2+n*3]; +s[0] = + g7[ix+0]*g0[iy+0]*g0[iz+0]; +s[1] = + g6[ix+0]*g1[iy+0]*g0[iz+0]; +s[2] = + g6[ix+0]*g0[iy+0]*g1[iz+0]; +s[3] = + g5[ix+0]*g2[iy+0]*g0[iz+0]; +s[4] = + g4[ix+0]*g3[iy+0]*g0[iz+0]; +s[5] = + g4[ix+0]*g2[iy+0]*g1[iz+0]; +s[6] = + g5[ix+0]*g0[iy+0]*g2[iz+0]; +s[7] = + g4[ix+0]*g1[iy+0]*g2[iz+0]; +s[8] = + g4[ix+0]*g0[iy+0]*g3[iz+0]; +s[9] = + g3[ix+0]*g4[iy+0]*g0[iz+0]; +s[10] = + g2[ix+0]*g5[iy+0]*g0[iz+0]; +s[11] = + g2[ix+0]*g4[iy+0]*g1[iz+0]; +s[12] = + g1[ix+0]*g6[iy+0]*g0[iz+0]; +s[13] = + g0[ix+0]*g7[iy+0]*g0[iz+0]; +s[14] = + g0[ix+0]*g6[iy+0]*g1[iz+0]; +s[15] = + g1[ix+0]*g4[iy+0]*g2[iz+0]; +s[16] = + g0[ix+0]*g5[iy+0]*g2[iz+0]; +s[17] = + g0[ix+0]*g4[iy+0]*g3[iz+0]; +s[18] = + g3[ix+0]*g0[iy+0]*g4[iz+0]; +s[19] = + g2[ix+0]*g1[iy+0]*g4[iz+0]; +s[20] = + g2[ix+0]*g0[iy+0]*g5[iz+0]; +s[21] = + g1[ix+0]*g2[iy+0]*g4[iz+0]; +s[22] = + g0[ix+0]*g3[iy+0]*g4[iz+0]; +s[23] = + g0[ix+0]*g2[iy+0]*g5[iz+0]; +s[24] = + g1[ix+0]*g0[iy+0]*g6[iz+0]; +s[25] = + g0[ix+0]*g1[iy+0]*g6[iz+0]; +s[26] = + g0[ix+0]*g0[iy+0]*g7[iz+0]; +if (gout_empty) { +gout[n*3+0] = - s[0] - s[4] - s[8]; +gout[n*3+1] = - s[9] - s[13] - s[17]; +gout[n*3+2] = - s[18] - s[22] - s[26]; +} else { +gout[n*3+0] += - s[0] - s[4] - s[8]; +gout[n*3+1] += - s[9] - s[13] - s[17]; +gout[n*3+2] += - s[18] - s[22] - s[26]; +}}} +/* +void int1e_ipkin_optimizer(CINTOpt **opt, FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env) { +FINT ng[] = {1, 2, 0, 0, 3, 1, 1, 3}; +CINTall_1e_optimizer(opt, ng, atm, natm, bas, nbas, env); +} +CACHE_SIZE_T int1e_ipkin_cart(dtype *out, FINT *dims, FINT *shls, +FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env, CINTOpt *opt, dtype *cache) { +FINT ng[] = {1, 2, 0, 0, 3, 1, 1, 3}; +CINTEnvVars envs; +CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env); +envs.f_gout = &CINTgout1e_int1e_ipkin; +envs.common_factor *= 0.5; +return CINT1e_drv(out, dims, &envs, cache, &c2s_cart_1e, 0); +} +*/ +CACHE_SIZE_T int1e_ipkin_sph(dtype *out, FINT *dims, FINT *shls, + FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env, CINTOpt *opt, dtype *cache) { + WHICH_INTEGRAL = INT1E_KIN_IP; + FINT ng[] = {1, 2, 0, 0, 3, 1, 1, 3}; + CINTEnvVars envs; + CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env); + + #ifdef __cplusplus + envs.f_gout = (void (*)(...))&CINTgout1e_int1e_ipkin; + #else + envs.f_gout = &CINTgout1e_int1e_ipkin; + #endif + envs.common_factor *= 0.5; + return CINT1e_drv(out, dims, &envs, cache, &c2s_sph_1e, 0); +} /* +CACHE_SIZE_T int1e_ipkin_spinor(dtype *out, FINT *dims, FINT *shls, +FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env, CINTOpt *opt, dtype *cache) { +FINT ng[] = {1, 2, 0, 0, 3, 1, 1, 3}; +CINTEnvVars envs; +CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env); +envs.f_gout = &CINTgout1e_int1e_ipkin; +envs.common_factor *= 0.5; +return CINT1e_spinor_drv(out, dims, &envs, cache, &c2s_sf_1e, 0); +} +ALL_CINT1E(int1e_ipkin) +ALL_CINT1E_FORTRAN_(int1e_ipkin) + +void CINTgout1e_int1e_kinip(dtype *gout, dtype *g, FINT *idx, CINTEnvVars *envs, FINT gout_empty) { +FINT nf = envs->nf; +FINT ix, iy, iz, n; +dtype *g0 = g; +dtype *g1 = g0 + envs->g_size * 3; +dtype *g2 = g1 + envs->g_size * 3; +dtype *g3 = g2 + envs->g_size * 3; +dtype *g4 = g3 + envs->g_size * 3; +dtype *g5 = g4 + envs->g_size * 3; +dtype *g6 = g5 + envs->g_size * 3; +dtype *g7 = g6 + envs->g_size * 3; +dtype s[27]; +G1E_D_J(g1, g0, envs->i_l+0, envs->j_l+0, 0); +G1E_D_J(g2, g0, envs->i_l+0, envs->j_l+1, 0); +G1E_D_J(g3, g2, envs->i_l+0, envs->j_l+0, 0); +G1E_D_J(g4, g0, envs->i_l+0, envs->j_l+2, 0); +G1E_D_J(g5, g4, envs->i_l+0, envs->j_l+0, 0); +G1E_D_J(g6, g4, envs->i_l+0, envs->j_l+1, 0); +G1E_D_J(g7, g6, envs->i_l+0, envs->j_l+0, 0); +for (n = 0; n < nf; n++) { +ix = idx[0+n*3]; +iy = idx[1+n*3]; +iz = idx[2+n*3]; +s[0] = + g7[ix+0]*g0[iy+0]*g0[iz+0]; +s[1] = + g6[ix+0]*g1[iy+0]*g0[iz+0]; +s[2] = + g6[ix+0]*g0[iy+0]*g1[iz+0]; +s[3] = + g5[ix+0]*g2[iy+0]*g0[iz+0]; +s[4] = + g4[ix+0]*g3[iy+0]*g0[iz+0]; +s[5] = + g4[ix+0]*g2[iy+0]*g1[iz+0]; +s[6] = + g5[ix+0]*g0[iy+0]*g2[iz+0]; +s[7] = + g4[ix+0]*g1[iy+0]*g2[iz+0]; +s[8] = + g4[ix+0]*g0[iy+0]*g3[iz+0]; +s[9] = + g3[ix+0]*g4[iy+0]*g0[iz+0]; +s[10] = + g2[ix+0]*g5[iy+0]*g0[iz+0]; +s[11] = + g2[ix+0]*g4[iy+0]*g1[iz+0]; +s[12] = + g1[ix+0]*g6[iy+0]*g0[iz+0]; +s[13] = + g0[ix+0]*g7[iy+0]*g0[iz+0]; +s[14] = + g0[ix+0]*g6[iy+0]*g1[iz+0]; +s[15] = + g1[ix+0]*g4[iy+0]*g2[iz+0]; +s[16] = + g0[ix+0]*g5[iy+0]*g2[iz+0]; +s[17] = + g0[ix+0]*g4[iy+0]*g3[iz+0]; +s[18] = + g3[ix+0]*g0[iy+0]*g4[iz+0]; +s[19] = + g2[ix+0]*g1[iy+0]*g4[iz+0]; +s[20] = + g2[ix+0]*g0[iy+0]*g5[iz+0]; +s[21] = + g1[ix+0]*g2[iy+0]*g4[iz+0]; +s[22] = + g0[ix+0]*g3[iy+0]*g4[iz+0]; +s[23] = + g0[ix+0]*g2[iy+0]*g5[iz+0]; +s[24] = + g1[ix+0]*g0[iy+0]*g6[iz+0]; +s[25] = + g0[ix+0]*g1[iy+0]*g6[iz+0]; +s[26] = + g0[ix+0]*g0[iy+0]*g7[iz+0]; +if (gout_empty) { +gout[n*3+0] = - s[0] - s[12] - s[24]; +gout[n*3+1] = - s[1] - s[13] - s[25]; +gout[n*3+2] = - s[2] - s[14] - s[26]; +} else { +gout[n*3+0] += - s[0] - s[12] - s[24]; +gout[n*3+1] += - s[1] - s[13] - s[25]; +gout[n*3+2] += - s[2] - s[14] - s[26]; +}}} +void int1e_kinip_optimizer(CINTOpt **opt, FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env) { +FINT ng[] = {0, 3, 0, 0, 3, 1, 1, 3}; +CINTall_1e_optimizer(opt, ng, atm, natm, bas, nbas, env); +} +CACHE_SIZE_T int1e_kinip_cart(dtype *out, FINT *dims, FINT *shls, +FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env, CINTOpt *opt, dtype *cache) { +FINT ng[] = {0, 3, 0, 0, 3, 1, 1, 3}; +CINTEnvVars envs; +CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env); +envs.f_gout = &CINTgout1e_int1e_kinip; +envs.common_factor *= 0.5; +return CINT1e_drv(out, dims, &envs, cache, &c2s_cart_1e, 0); +} +CACHE_SIZE_T int1e_kinip_sph(dtype *out, FINT *dims, FINT *shls, +FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env, CINTOpt *opt, dtype *cache) { +FINT ng[] = {0, 3, 0, 0, 3, 1, 1, 3}; +CINTEnvVars envs; +CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env); +envs.f_gout = &CINTgout1e_int1e_kinip; +envs.common_factor *= 0.5; +return CINT1e_drv(out, dims, &envs, cache, &c2s_sph_1e, 0); +} +CACHE_SIZE_T int1e_kinip_spinor(dtype *out, FINT *dims, FINT *shls, +FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env, CINTOpt *opt, dtype *cache) { +FINT ng[] = {0, 3, 0, 0, 3, 1, 1, 3}; +CINTEnvVars envs; +CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env); +envs.f_gout = &CINTgout1e_int1e_kinip; +envs.common_factor *= 0.5; +return CINT1e_spinor_drv(out, dims, &envs, cache, &c2s_sf_1e, 0); +} +ALL_CINT1E(int1e_kinip) +ALL_CINT1E_FORTRAN_(int1e_kinip) + +*/void CINTgout1e_int1e_ipnuc(dtype *gout, dtype *g, FINT *idx, CINTEnvVars *envs, FINT gout_empty) { +FINT nf = envs->nf; +FINT nrys_roots = envs->nrys_roots; +FINT ix, iy, iz, n, i; +dtype *g0 = g; +dtype *g1 = g0 + envs->g_size * 3; +G2E_D_I(g1, g0, envs->i_l+0, envs->j_l, 0, 0); +dtype s[3]; +for (n = 0; n < nf; n++) { +ix = idx[0+n*3]; +iy = idx[1+n*3]; +iz = idx[2+n*3]; +for (i = 0; i < 3; i++) { s[i] = 0; } +for (i = 0; i < nrys_roots; i++) { +s[0] += g1[ix+i] * g0[iy+i] * g0[iz+i]; +s[1] += g0[ix+i] * g1[iy+i] * g0[iz+i]; +s[2] += g0[ix+i] * g0[iy+i] * g1[iz+i]; +} +if (gout_empty) { +gout[n*3+0] = + s[0]; +gout[n*3+1] = + s[1]; +gout[n*3+2] = + s[2]; +} else { +gout[n*3+0] += + s[0]; +gout[n*3+1] += + s[1]; +gout[n*3+2] += + s[2]; +}}}/* +void int1e_ipnuc_optimizer(CINTOpt **opt, FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env) { +FINT ng[] = {1, 0, 0, 0, 1, 1, 0, 3}; +CINTall_1e_optimizer(opt, ng, atm, natm, bas, nbas, env); +} +CACHE_SIZE_T int1e_ipnuc_cart(dtype *out, FINT *dims, FINT *shls, +FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env, CINTOpt *opt, dtype *cache) { +FINT ng[] = {1, 0, 0, 0, 1, 1, 0, 3}; +CINTEnvVars envs; +CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env); +envs.f_gout = &CINTgout1e_int1e_ipnuc; +return CINT1e_drv(out, dims, &envs, cache, &c2s_cart_1e, 2); +} +*/ +CACHE_SIZE_T int1e_ipnuc_sph(dtype *out, FINT *dims, FINT *shls, + FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env, CINTOpt *opt, dtype *cache) { + + //printf("int1e_ipnuc_sph\n"); + + //int ish= shls[0]; + //int jsh = shls[1]; + //printf("ish,jsh %d %d", ish, jsh); + //FINT i_prim = bas(NPRIM_OF, ish); + //FINT j_prim = bas(NPRIM_OF, jsh); + //printf("i_primt/j_prim, %d %d\n", i_prim, j_prim); + + WHICH_INTEGRAL = INT1E_NUC_IP; + FINT ng[] = {1, 0, 0, 0, 1, 1, 0, 3}; + CINTEnvVars envs; + CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env); + return CINT1e_drv(out, dims, &envs, cache, &c2s_sph_1e, 2); +}/* +CACHE_SIZE_T int1e_ipnuc_spinor(dtype *out, FINT *dims, FINT *shls, +FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env, CINTOpt *opt, dtype *cache) { +FINT ng[] = {1, 0, 0, 0, 1, 1, 0, 3}; +CINTEnvVars envs; +CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env); +envs.f_gout = &CINTgout1e_int1e_ipnuc; +return CINT1e_spinor_drv(out, dims, &envs, cache, &c2s_sf_1e, 2); +} +ALL_CINT1E(int1e_ipnuc) +ALL_CINT1E_FORTRAN_(int1e_ipnuc) + +*/void CINTgout1e_int1e_iprinv(dtype *gout, dtype *g, FINT *idx, CINTEnvVars *envs, FINT gout_empty) { +FINT nf = envs->nf; +FINT nrys_roots = envs->nrys_roots; +FINT ix, iy, iz, n, i; +dtype *g0 = g; +dtype *g1 = g0 + envs->g_size * 3; +G2E_D_I(g1, g0, envs->i_l+0, envs->j_l, 0, 0); +dtype s[3]; +for (n = 0; n < nf; n++) { +ix = idx[0+n*3]; +iy = idx[1+n*3]; +iz = idx[2+n*3]; +for (i = 0; i < 3; i++) { s[i] = 0; } +for (i = 0; i < nrys_roots; i++) { +s[0] += g1[ix+i] * g0[iy+i] * g0[iz+i]; +s[1] += g0[ix+i] * g1[iy+i] * g0[iz+i]; +s[2] += g0[ix+i] * g0[iy+i] * g1[iz+i]; +} +if (gout_empty) { +gout[n*3+0] = + s[0]; +gout[n*3+1] = + s[1]; +gout[n*3+2] = + s[2]; +} else { +gout[n*3+0] += + s[0]; +gout[n*3+1] += + s[1]; +gout[n*3+2] += + s[2]; +}}}/* +void int1e_iprinv_optimizer(CINTOpt **opt, FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env) { +FINT ng[] = {1, 0, 0, 0, 1, 1, 0, 3}; +CINTall_1e_optimizer(opt, ng, atm, natm, bas, nbas, env); +} +CACHE_SIZE_T int1e_iprinv_cart(dtype *out, FINT *dims, FINT *shls, +FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env, CINTOpt *opt, dtype *cache) { +FINT ng[] = {1, 0, 0, 0, 1, 1, 0, 3}; +CINTEnvVars envs; +CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env); +envs.f_gout = &CINTgout1e_int1e_iprinv; +return CINT1e_drv(out, dims, &envs, cache, &c2s_cart_1e, 1); +} +*/CACHE_SIZE_T int1e_iprinv_sph(dtype *out, FINT *dims, FINT *shls, +FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env, CINTOpt *opt, dtype *cache) { +FINT ng[] = {1, 0, 0, 0, 1, 1, 0, 3}; +CINTEnvVars envs; +CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env); +#ifdef __cplusplus +envs.f_gout = (void (*)(...))&CINTgout1e_int1e_iprinv; +#else +envs.f_gout = &CINTgout1e_int1e_iprinv; +#endif +return CINT1e_drv(out, dims, &envs, cache, &c2s_sph_1e, 1); +}/* +CACHE_SIZE_T int1e_iprinv_spinor(dtype *out, FINT *dims, FINT *shls, +FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env, CINTOpt *opt, dtype *cache) { +FINT ng[] = {1, 0, 0, 0, 1, 1, 0, 3}; +CINTEnvVars envs; +CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env); +envs.f_gout = &CINTgout1e_int1e_iprinv; +return CINT1e_spinor_drv(out, dims, &envs, cache, &c2s_sf_1e, 1); +} +ALL_CINT1E(int1e_iprinv) +ALL_CINT1E_FORTRAN_(int1e_iprinv) + +void CINTgout1e_int1e_ipspnucsp(dtype *gout, dtype *g, FINT *idx, CINTEnvVars *envs, FINT gout_empty) { +FINT nf = envs->nf; +FINT nrys_roots = envs->nrys_roots; +FINT ix, iy, iz, n, i; +dtype *g0 = g; +dtype *g1 = g0 + envs->g_size * 3; +dtype *g2 = g1 + envs->g_size * 3; +dtype *g3 = g2 + envs->g_size * 3; +dtype *g4 = g3 + envs->g_size * 3; +dtype *g5 = g4 + envs->g_size * 3; +dtype *g6 = g5 + envs->g_size * 3; +dtype *g7 = g6 + envs->g_size * 3; +G2E_D_J(g1, g0, envs->i_l+2, envs->j_l+0, 0, 0); +G2E_D_I(g2, g0, envs->i_l+1, envs->j_l, 0, 0); +G2E_D_I(g3, g1, envs->i_l+1, envs->j_l, 0, 0); +G2E_D_I(g4, g0, envs->i_l+0, envs->j_l, 0, 0); +G2E_D_I(g5, g1, envs->i_l+0, envs->j_l, 0, 0); +G2E_D_I(g6, g2, envs->i_l+0, envs->j_l, 0, 0); +G2E_D_I(g7, g3, envs->i_l+0, envs->j_l, 0, 0); +dtype s[27]; +for (n = 0; n < nf; n++) { +ix = idx[0+n*3]; +iy = idx[1+n*3]; +iz = idx[2+n*3]; +for (i = 0; i < 27; i++) { s[i] = 0; } +for (i = 0; i < nrys_roots; i++) { +s[0] += g7[ix+i] * g0[iy+i] * g0[iz+i]; +s[1] += g6[ix+i] * g1[iy+i] * g0[iz+i]; +s[2] += g6[ix+i] * g0[iy+i] * g1[iz+i]; +s[3] += g5[ix+i] * g2[iy+i] * g0[iz+i]; +s[4] += g4[ix+i] * g3[iy+i] * g0[iz+i]; +s[5] += g4[ix+i] * g2[iy+i] * g1[iz+i]; +s[6] += g5[ix+i] * g0[iy+i] * g2[iz+i]; +s[7] += g4[ix+i] * g1[iy+i] * g2[iz+i]; +s[8] += g4[ix+i] * g0[iy+i] * g3[iz+i]; +s[9] += g3[ix+i] * g4[iy+i] * g0[iz+i]; +s[10] += g2[ix+i] * g5[iy+i] * g0[iz+i]; +s[11] += g2[ix+i] * g4[iy+i] * g1[iz+i]; +s[12] += g1[ix+i] * g6[iy+i] * g0[iz+i]; +s[13] += g0[ix+i] * g7[iy+i] * g0[iz+i]; +s[14] += g0[ix+i] * g6[iy+i] * g1[iz+i]; +s[15] += g1[ix+i] * g4[iy+i] * g2[iz+i]; +s[16] += g0[ix+i] * g5[iy+i] * g2[iz+i]; +s[17] += g0[ix+i] * g4[iy+i] * g3[iz+i]; +s[18] += g3[ix+i] * g0[iy+i] * g4[iz+i]; +s[19] += g2[ix+i] * g1[iy+i] * g4[iz+i]; +s[20] += g2[ix+i] * g0[iy+i] * g5[iz+i]; +s[21] += g1[ix+i] * g2[iy+i] * g4[iz+i]; +s[22] += g0[ix+i] * g3[iy+i] * g4[iz+i]; +s[23] += g0[ix+i] * g2[iy+i] * g5[iz+i]; +s[24] += g1[ix+i] * g0[iy+i] * g6[iz+i]; +s[25] += g0[ix+i] * g1[iy+i] * g6[iz+i]; +s[26] += g0[ix+i] * g0[iy+i] * g7[iz+i]; +} +if (gout_empty) { +gout[n*12+0] = + s[11] - s[19]; +gout[n*12+1] = + s[18] - s[2]; +gout[n*12+2] = + s[1] - s[9]; +gout[n*12+3] = + s[0] + s[10] + s[20]; +gout[n*12+4] = + s[14] - s[22]; +gout[n*12+5] = + s[21] - s[5]; +gout[n*12+6] = + s[4] - s[12]; +gout[n*12+7] = + s[3] + s[13] + s[23]; +gout[n*12+8] = + s[17] - s[25]; +gout[n*12+9] = + s[24] - s[8]; +gout[n*12+10] = + s[7] - s[15]; +gout[n*12+11] = + s[6] + s[16] + s[26]; +} else { +gout[n*12+0] += + s[11] - s[19]; +gout[n*12+1] += + s[18] - s[2]; +gout[n*12+2] += + s[1] - s[9]; +gout[n*12+3] += + s[0] + s[10] + s[20]; +gout[n*12+4] += + s[14] - s[22]; +gout[n*12+5] += + s[21] - s[5]; +gout[n*12+6] += + s[4] - s[12]; +gout[n*12+7] += + s[3] + s[13] + s[23]; +gout[n*12+8] += + s[17] - s[25]; +gout[n*12+9] += + s[24] - s[8]; +gout[n*12+10] += + s[7] - s[15]; +gout[n*12+11] += + s[6] + s[16] + s[26]; +}}} +void int1e_ipspnucsp_optimizer(CINTOpt **opt, FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env) { +FINT ng[] = {2, 1, 0, 0, 3, 4, 0, 3}; +CINTall_1e_optimizer(opt, ng, atm, natm, bas, nbas, env); +} +CACHE_SIZE_T int1e_ipspnucsp_cart(dtype *out, FINT *dims, FINT *shls, +FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env, CINTOpt *opt, dtype *cache) { +FINT ng[] = {2, 1, 0, 0, 3, 4, 0, 3}; +CINTEnvVars envs; +CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env); +envs.f_gout = &CINTgout1e_int1e_ipspnucsp; +return CINT1e_drv(out, dims, &envs, cache, &c2s_cart_1e, 2); +} +CACHE_SIZE_T int1e_ipspnucsp_sph(dtype *out, FINT *dims, FINT *shls, +FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env, CINTOpt *opt, dtype *cache) { +FINT ng[] = {2, 1, 0, 0, 3, 4, 0, 3}; +CINTEnvVars envs; +CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env); +envs.f_gout = &CINTgout1e_int1e_ipspnucsp; +return CINT1e_drv(out, dims, &envs, cache, &c2s_sph_1e, 2); +} +CACHE_SIZE_T int1e_ipspnucsp_spinor(dtype *out, FINT *dims, FINT *shls, +FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env, CINTOpt *opt, dtype *cache) { +FINT ng[] = {2, 1, 0, 0, 3, 4, 0, 3}; +CINTEnvVars envs; +CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env); +envs.f_gout = &CINTgout1e_int1e_ipspnucsp; +return CINT1e_spinor_drv(out, dims, &envs, cache, &c2s_si_1e, 2); +} +ALL_CINT1E(int1e_ipspnucsp) +ALL_CINT1E_FORTRAN_(int1e_ipspnucsp) + +void CINTgout1e_int1e_ipsprinvsp(dtype *gout, dtype *g, FINT *idx, CINTEnvVars *envs, FINT gout_empty) { +FINT nf = envs->nf; +FINT nrys_roots = envs->nrys_roots; +FINT ix, iy, iz, n, i; +dtype *g0 = g; +dtype *g1 = g0 + envs->g_size * 3; +dtype *g2 = g1 + envs->g_size * 3; +dtype *g3 = g2 + envs->g_size * 3; +dtype *g4 = g3 + envs->g_size * 3; +dtype *g5 = g4 + envs->g_size * 3; +dtype *g6 = g5 + envs->g_size * 3; +dtype *g7 = g6 + envs->g_size * 3; +G2E_D_J(g1, g0, envs->i_l+2, envs->j_l+0, 0, 0); +G2E_D_I(g2, g0, envs->i_l+1, envs->j_l, 0, 0); +G2E_D_I(g3, g1, envs->i_l+1, envs->j_l, 0, 0); +G2E_D_I(g4, g0, envs->i_l+0, envs->j_l, 0, 0); +G2E_D_I(g5, g1, envs->i_l+0, envs->j_l, 0, 0); +G2E_D_I(g6, g2, envs->i_l+0, envs->j_l, 0, 0); +G2E_D_I(g7, g3, envs->i_l+0, envs->j_l, 0, 0); +dtype s[27]; +for (n = 0; n < nf; n++) { +ix = idx[0+n*3]; +iy = idx[1+n*3]; +iz = idx[2+n*3]; +for (i = 0; i < 27; i++) { s[i] = 0; } +for (i = 0; i < nrys_roots; i++) { +s[0] += g7[ix+i] * g0[iy+i] * g0[iz+i]; +s[1] += g6[ix+i] * g1[iy+i] * g0[iz+i]; +s[2] += g6[ix+i] * g0[iy+i] * g1[iz+i]; +s[3] += g5[ix+i] * g2[iy+i] * g0[iz+i]; +s[4] += g4[ix+i] * g3[iy+i] * g0[iz+i]; +s[5] += g4[ix+i] * g2[iy+i] * g1[iz+i]; +s[6] += g5[ix+i] * g0[iy+i] * g2[iz+i]; +s[7] += g4[ix+i] * g1[iy+i] * g2[iz+i]; +s[8] += g4[ix+i] * g0[iy+i] * g3[iz+i]; +s[9] += g3[ix+i] * g4[iy+i] * g0[iz+i]; +s[10] += g2[ix+i] * g5[iy+i] * g0[iz+i]; +s[11] += g2[ix+i] * g4[iy+i] * g1[iz+i]; +s[12] += g1[ix+i] * g6[iy+i] * g0[iz+i]; +s[13] += g0[ix+i] * g7[iy+i] * g0[iz+i]; +s[14] += g0[ix+i] * g6[iy+i] * g1[iz+i]; +s[15] += g1[ix+i] * g4[iy+i] * g2[iz+i]; +s[16] += g0[ix+i] * g5[iy+i] * g2[iz+i]; +s[17] += g0[ix+i] * g4[iy+i] * g3[iz+i]; +s[18] += g3[ix+i] * g0[iy+i] * g4[iz+i]; +s[19] += g2[ix+i] * g1[iy+i] * g4[iz+i]; +s[20] += g2[ix+i] * g0[iy+i] * g5[iz+i]; +s[21] += g1[ix+i] * g2[iy+i] * g4[iz+i]; +s[22] += g0[ix+i] * g3[iy+i] * g4[iz+i]; +s[23] += g0[ix+i] * g2[iy+i] * g5[iz+i]; +s[24] += g1[ix+i] * g0[iy+i] * g6[iz+i]; +s[25] += g0[ix+i] * g1[iy+i] * g6[iz+i]; +s[26] += g0[ix+i] * g0[iy+i] * g7[iz+i]; +} +if (gout_empty) { +gout[n*12+0] = + s[11] - s[19]; +gout[n*12+1] = + s[18] - s[2]; +gout[n*12+2] = + s[1] - s[9]; +gout[n*12+3] = + s[0] + s[10] + s[20]; +gout[n*12+4] = + s[14] - s[22]; +gout[n*12+5] = + s[21] - s[5]; +gout[n*12+6] = + s[4] - s[12]; +gout[n*12+7] = + s[3] + s[13] + s[23]; +gout[n*12+8] = + s[17] - s[25]; +gout[n*12+9] = + s[24] - s[8]; +gout[n*12+10] = + s[7] - s[15]; +gout[n*12+11] = + s[6] + s[16] + s[26]; +} else { +gout[n*12+0] += + s[11] - s[19]; +gout[n*12+1] += + s[18] - s[2]; +gout[n*12+2] += + s[1] - s[9]; +gout[n*12+3] += + s[0] + s[10] + s[20]; +gout[n*12+4] += + s[14] - s[22]; +gout[n*12+5] += + s[21] - s[5]; +gout[n*12+6] += + s[4] - s[12]; +gout[n*12+7] += + s[3] + s[13] + s[23]; +gout[n*12+8] += + s[17] - s[25]; +gout[n*12+9] += + s[24] - s[8]; +gout[n*12+10] += + s[7] - s[15]; +gout[n*12+11] += + s[6] + s[16] + s[26]; +}}} +void int1e_ipsprinvsp_optimizer(CINTOpt **opt, FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env) { +FINT ng[] = {2, 1, 0, 0, 3, 4, 0, 3}; +CINTall_1e_optimizer(opt, ng, atm, natm, bas, nbas, env); +} +CACHE_SIZE_T int1e_ipsprinvsp_cart(dtype *out, FINT *dims, FINT *shls, +FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env, CINTOpt *opt, dtype *cache) { +FINT ng[] = {2, 1, 0, 0, 3, 4, 0, 3}; +CINTEnvVars envs; +CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env); +envs.f_gout = &CINTgout1e_int1e_ipsprinvsp; +return CINT1e_drv(out, dims, &envs, cache, &c2s_cart_1e, 1); +} +CACHE_SIZE_T int1e_ipsprinvsp_sph(dtype *out, FINT *dims, FINT *shls, +FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env, CINTOpt *opt, dtype *cache) { +FINT ng[] = {2, 1, 0, 0, 3, 4, 0, 3}; +CINTEnvVars envs; +CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env); +envs.f_gout = &CINTgout1e_int1e_ipsprinvsp; +return CINT1e_drv(out, dims, &envs, cache, &c2s_sph_1e, 1); +} +CACHE_SIZE_T int1e_ipsprinvsp_spinor(dtype *out, FINT *dims, FINT *shls, +FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env, CINTOpt *opt, dtype *cache) { +FINT ng[] = {2, 1, 0, 0, 3, 4, 0, 3}; +CINTEnvVars envs; +CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env); +envs.f_gout = &CINTgout1e_int1e_ipsprinvsp; +return CINT1e_spinor_drv(out, dims, &envs, cache, &c2s_si_1e, 1); +} +ALL_CINT1E(int1e_ipsprinvsp) +ALL_CINT1E_FORTRAN_(int1e_ipsprinvsp) + +void CINTgout1e_int1e_ippnucp(dtype *gout, dtype *g, FINT *idx, CINTEnvVars *envs, FINT gout_empty) { +FINT nf = envs->nf; +FINT nrys_roots = envs->nrys_roots; +FINT ix, iy, iz, n, i; +dtype *g0 = g; +dtype *g1 = g0 + envs->g_size * 3; +dtype *g2 = g1 + envs->g_size * 3; +dtype *g3 = g2 + envs->g_size * 3; +dtype *g4 = g3 + envs->g_size * 3; +dtype *g5 = g4 + envs->g_size * 3; +dtype *g6 = g5 + envs->g_size * 3; +dtype *g7 = g6 + envs->g_size * 3; +G2E_D_J(g1, g0, envs->i_l+2, envs->j_l+0, 0, 0); +G2E_D_I(g2, g0, envs->i_l+1, envs->j_l, 0, 0); +G2E_D_I(g3, g1, envs->i_l+1, envs->j_l, 0, 0); +G2E_D_I(g4, g0, envs->i_l+0, envs->j_l, 0, 0); +G2E_D_I(g5, g1, envs->i_l+0, envs->j_l, 0, 0); +G2E_D_I(g6, g2, envs->i_l+0, envs->j_l, 0, 0); +G2E_D_I(g7, g3, envs->i_l+0, envs->j_l, 0, 0); +dtype s[27]; +for (n = 0; n < nf; n++) { +ix = idx[0+n*3]; +iy = idx[1+n*3]; +iz = idx[2+n*3]; +for (i = 0; i < 27; i++) { s[i] = 0; } +for (i = 0; i < nrys_roots; i++) { +s[0] += g7[ix+i] * g0[iy+i] * g0[iz+i]; +s[1] += g6[ix+i] * g1[iy+i] * g0[iz+i]; +s[2] += g6[ix+i] * g0[iy+i] * g1[iz+i]; +s[3] += g5[ix+i] * g2[iy+i] * g0[iz+i]; +s[4] += g4[ix+i] * g3[iy+i] * g0[iz+i]; +s[5] += g4[ix+i] * g2[iy+i] * g1[iz+i]; +s[6] += g5[ix+i] * g0[iy+i] * g2[iz+i]; +s[7] += g4[ix+i] * g1[iy+i] * g2[iz+i]; +s[8] += g4[ix+i] * g0[iy+i] * g3[iz+i]; +s[9] += g3[ix+i] * g4[iy+i] * g0[iz+i]; +s[10] += g2[ix+i] * g5[iy+i] * g0[iz+i]; +s[11] += g2[ix+i] * g4[iy+i] * g1[iz+i]; +s[12] += g1[ix+i] * g6[iy+i] * g0[iz+i]; +s[13] += g0[ix+i] * g7[iy+i] * g0[iz+i]; +s[14] += g0[ix+i] * g6[iy+i] * g1[iz+i]; +s[15] += g1[ix+i] * g4[iy+i] * g2[iz+i]; +s[16] += g0[ix+i] * g5[iy+i] * g2[iz+i]; +s[17] += g0[ix+i] * g4[iy+i] * g3[iz+i]; +s[18] += g3[ix+i] * g0[iy+i] * g4[iz+i]; +s[19] += g2[ix+i] * g1[iy+i] * g4[iz+i]; +s[20] += g2[ix+i] * g0[iy+i] * g5[iz+i]; +s[21] += g1[ix+i] * g2[iy+i] * g4[iz+i]; +s[22] += g0[ix+i] * g3[iy+i] * g4[iz+i]; +s[23] += g0[ix+i] * g2[iy+i] * g5[iz+i]; +s[24] += g1[ix+i] * g0[iy+i] * g6[iz+i]; +s[25] += g0[ix+i] * g1[iy+i] * g6[iz+i]; +s[26] += g0[ix+i] * g0[iy+i] * g7[iz+i]; +} +if (gout_empty) { +gout[n*3+0] = + s[0] + s[4] + s[8]; +gout[n*3+1] = + s[9] + s[13] + s[17]; +gout[n*3+2] = + s[18] + s[22] + s[26]; +} else { +gout[n*3+0] += + s[0] + s[4] + s[8]; +gout[n*3+1] += + s[9] + s[13] + s[17]; +gout[n*3+2] += + s[18] + s[22] + s[26]; +}}} +void int1e_ippnucp_optimizer(CINTOpt **opt, FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env) { +FINT ng[] = {2, 1, 0, 0, 3, 1, 0, 3}; +CINTall_1e_optimizer(opt, ng, atm, natm, bas, nbas, env); +} +CACHE_SIZE_T int1e_ippnucp_cart(dtype *out, FINT *dims, FINT *shls, +FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env, CINTOpt *opt, dtype *cache) { +FINT ng[] = {2, 1, 0, 0, 3, 1, 0, 3}; +CINTEnvVars envs; +CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env); +envs.f_gout = &CINTgout1e_int1e_ippnucp; +return CINT1e_drv(out, dims, &envs, cache, &c2s_cart_1e, 2); +} +CACHE_SIZE_T int1e_ippnucp_sph(dtype *out, FINT *dims, FINT *shls, +FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env, CINTOpt *opt, dtype *cache) { +FINT ng[] = {2, 1, 0, 0, 3, 1, 0, 3}; +CINTEnvVars envs; +CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env); +envs.f_gout = &CINTgout1e_int1e_ippnucp; +return CINT1e_drv(out, dims, &envs, cache, &c2s_sph_1e, 2); +} +CACHE_SIZE_T int1e_ippnucp_spinor(dtype *out, FINT *dims, FINT *shls, +FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env, CINTOpt *opt, dtype *cache) { +FINT ng[] = {2, 1, 0, 0, 3, 1, 0, 3}; +CINTEnvVars envs; +CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env); +envs.f_gout = &CINTgout1e_int1e_ippnucp; +return CINT1e_spinor_drv(out, dims, &envs, cache, &c2s_sf_1e, 2); +} +ALL_CINT1E(int1e_ippnucp) +ALL_CINT1E_FORTRAN_(int1e_ippnucp) + +void CINTgout1e_int1e_ipprinvp(dtype *gout, dtype *g, FINT *idx, CINTEnvVars *envs, FINT gout_empty) { +FINT nf = envs->nf; +FINT nrys_roots = envs->nrys_roots; +FINT ix, iy, iz, n, i; +dtype *g0 = g; +dtype *g1 = g0 + envs->g_size * 3; +dtype *g2 = g1 + envs->g_size * 3; +dtype *g3 = g2 + envs->g_size * 3; +dtype *g4 = g3 + envs->g_size * 3; +dtype *g5 = g4 + envs->g_size * 3; +dtype *g6 = g5 + envs->g_size * 3; +dtype *g7 = g6 + envs->g_size * 3; +G2E_D_J(g1, g0, envs->i_l+2, envs->j_l+0, 0, 0); +G2E_D_I(g2, g0, envs->i_l+1, envs->j_l, 0, 0); +G2E_D_I(g3, g1, envs->i_l+1, envs->j_l, 0, 0); +G2E_D_I(g4, g0, envs->i_l+0, envs->j_l, 0, 0); +G2E_D_I(g5, g1, envs->i_l+0, envs->j_l, 0, 0); +G2E_D_I(g6, g2, envs->i_l+0, envs->j_l, 0, 0); +G2E_D_I(g7, g3, envs->i_l+0, envs->j_l, 0, 0); +dtype s[27]; +for (n = 0; n < nf; n++) { +ix = idx[0+n*3]; +iy = idx[1+n*3]; +iz = idx[2+n*3]; +for (i = 0; i < 27; i++) { s[i] = 0; } +for (i = 0; i < nrys_roots; i++) { +s[0] += g7[ix+i] * g0[iy+i] * g0[iz+i]; +s[1] += g6[ix+i] * g1[iy+i] * g0[iz+i]; +s[2] += g6[ix+i] * g0[iy+i] * g1[iz+i]; +s[3] += g5[ix+i] * g2[iy+i] * g0[iz+i]; +s[4] += g4[ix+i] * g3[iy+i] * g0[iz+i]; +s[5] += g4[ix+i] * g2[iy+i] * g1[iz+i]; +s[6] += g5[ix+i] * g0[iy+i] * g2[iz+i]; +s[7] += g4[ix+i] * g1[iy+i] * g2[iz+i]; +s[8] += g4[ix+i] * g0[iy+i] * g3[iz+i]; +s[9] += g3[ix+i] * g4[iy+i] * g0[iz+i]; +s[10] += g2[ix+i] * g5[iy+i] * g0[iz+i]; +s[11] += g2[ix+i] * g4[iy+i] * g1[iz+i]; +s[12] += g1[ix+i] * g6[iy+i] * g0[iz+i]; +s[13] += g0[ix+i] * g7[iy+i] * g0[iz+i]; +s[14] += g0[ix+i] * g6[iy+i] * g1[iz+i]; +s[15] += g1[ix+i] * g4[iy+i] * g2[iz+i]; +s[16] += g0[ix+i] * g5[iy+i] * g2[iz+i]; +s[17] += g0[ix+i] * g4[iy+i] * g3[iz+i]; +s[18] += g3[ix+i] * g0[iy+i] * g4[iz+i]; +s[19] += g2[ix+i] * g1[iy+i] * g4[iz+i]; +s[20] += g2[ix+i] * g0[iy+i] * g5[iz+i]; +s[21] += g1[ix+i] * g2[iy+i] * g4[iz+i]; +s[22] += g0[ix+i] * g3[iy+i] * g4[iz+i]; +s[23] += g0[ix+i] * g2[iy+i] * g5[iz+i]; +s[24] += g1[ix+i] * g0[iy+i] * g6[iz+i]; +s[25] += g0[ix+i] * g1[iy+i] * g6[iz+i]; +s[26] += g0[ix+i] * g0[iy+i] * g7[iz+i]; +} +if (gout_empty) { +gout[n*3+0] = + s[0] + s[4] + s[8]; +gout[n*3+1] = + s[9] + s[13] + s[17]; +gout[n*3+2] = + s[18] + s[22] + s[26]; +} else { +gout[n*3+0] += + s[0] + s[4] + s[8]; +gout[n*3+1] += + s[9] + s[13] + s[17]; +gout[n*3+2] += + s[18] + s[22] + s[26]; +}}} +void int1e_ipprinvp_optimizer(CINTOpt **opt, FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env) { +FINT ng[] = {2, 1, 0, 0, 3, 1, 0, 3}; +CINTall_1e_optimizer(opt, ng, atm, natm, bas, nbas, env); +} +CACHE_SIZE_T int1e_ipprinvp_cart(dtype *out, FINT *dims, FINT *shls, +FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env, CINTOpt *opt, dtype *cache) { +FINT ng[] = {2, 1, 0, 0, 3, 1, 0, 3}; +CINTEnvVars envs; +CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env); +envs.f_gout = &CINTgout1e_int1e_ipprinvp; +return CINT1e_drv(out, dims, &envs, cache, &c2s_cart_1e, 1); +} +CACHE_SIZE_T int1e_ipprinvp_sph(dtype *out, FINT *dims, FINT *shls, +FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env, CINTOpt *opt, dtype *cache) { +FINT ng[] = {2, 1, 0, 0, 3, 1, 0, 3}; +CINTEnvVars envs; +CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env); +envs.f_gout = &CINTgout1e_int1e_ipprinvp; +return CINT1e_drv(out, dims, &envs, cache, &c2s_sph_1e, 1); +} +CACHE_SIZE_T int1e_ipprinvp_spinor(dtype *out, FINT *dims, FINT *shls, +FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env, CINTOpt *opt, dtype *cache) { +FINT ng[] = {2, 1, 0, 0, 3, 1, 0, 3}; +CINTEnvVars envs; +CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env); +envs.f_gout = &CINTgout1e_int1e_ipprinvp; +return CINT1e_spinor_drv(out, dims, &envs, cache, &c2s_sf_1e, 1); +} */ +ALL_CINT1E(int1e_ipprinvp) +ALL_CINT1E_FORTRAN_(int1e_ipprinvp) + + + + +#include +//#include + + +void CINTgout2e_int2e_ip1(dtype *gout, + dtype *g, FINT *idx, CINTEnvVars *envs, FINT gout_empty) { + //printf("inside cintgout2e_int2e_ip1\n"); + FINT nf = envs->nf; + //printf("nf %d\n", nf); + FINT nrys_roots = envs->nrys_roots; + FINT ix, iy, iz, i, n; + dtype *g0 = g; + dtype *g1 = g0 + envs->g_size * 3; + G2E_D_I(g1, g0, envs->i_l+0, envs->j_l, envs->k_l, envs->l_l); + dtype s[3]; + //printf("before for loop;\n"); + for (n = 0; n < nf; n++) { + //printf("for loop: %d / %d root=%d\n", n, nf, nrys_roots); + ix = idx[0+n*3]; + iy = idx[1+n*3]; + iz = idx[2+n*3]; + //printf("before switch\n"); + switch (nrys_roots) { + case 1: + //printf("case 1\n"); + s[0] = + g1[ix+0]*g0[iy+0]*g0[iz+0]; + s[1] = + g0[ix+0]*g1[iy+0]*g0[iz+0]; + s[2] = + g0[ix+0]*g0[iy+0]*g1[iz+0]; + break; + case 2: + //printf("case 2\n"); + s[0] = + g1[ix+0]*g0[iy+0]*g0[iz+0]+ g1[ix+1]*g0[iy+1]*g0[iz+1]; + s[1] = + g0[ix+0]*g1[iy+0]*g0[iz+0]+ g0[ix+1]*g1[iy+1]*g0[iz+1]; + s[2] = + g0[ix+0]*g0[iy+0]*g1[iz+0]+ g0[ix+1]*g0[iy+1]*g1[iz+1]; + break; + case 3: + //printf("case 3\n"); + s[0] = + g1[ix+0]*g0[iy+0]*g0[iz+0]+ g1[ix+1]*g0[iy+1]*g0[iz+1]+ g1[ix+2]*g0[iy+2]*g0[iz+2]; + s[1] = + g0[ix+0]*g1[iy+0]*g0[iz+0]+ g0[ix+1]*g1[iy+1]*g0[iz+1]+ g0[ix+2]*g1[iy+2]*g0[iz+2]; + s[2] = + g0[ix+0]*g0[iy+0]*g1[iz+0]+ g0[ix+1]*g0[iy+1]*g1[iz+1]+ g0[ix+2]*g0[iy+2]*g1[iz+2]; + break; + case 4: + //printf("case 4\n"); + s[0] = + g1[ix+0]*g0[iy+0]*g0[iz+0]+ g1[ix+1]*g0[iy+1]*g0[iz+1]+ g1[ix+2]*g0[iy+2]*g0[iz+2]+ g1[ix+3]*g0[iy+3]*g0[iz+3]; + s[1] = + g0[ix+0]*g1[iy+0]*g0[iz+0]+ g0[ix+1]*g1[iy+1]*g0[iz+1]+ g0[ix+2]*g1[iy+2]*g0[iz+2]+ g0[ix+3]*g1[iy+3]*g0[iz+3]; + s[2] = + g0[ix+0]*g0[iy+0]*g1[iz+0]+ g0[ix+1]*g0[iy+1]*g1[iz+1]+ g0[ix+2]*g0[iy+2]*g1[iz+2]+ g0[ix+3]*g0[iy+3]*g1[iz+3]; + break; + default: + //printf("case default \n"); + for (i = 0; i < 3; i++) { s[i] = 0; } + for (i = 0; i < nrys_roots; i++) { + s[0] += g1[ix+i] * g0[iy+i] * g0[iz+i]; + s[1] += g0[ix+i] * g1[iy+i] * g0[iz+i]; + s[2] += g0[ix+i] * g0[iy+i] * g1[iz+i]; + } + break; + } + //printf("after switching \n"); + if (gout_empty) { + gout[n*3+0] = + s[0]; + gout[n*3+1] = + s[1]; + gout[n*3+2] = + s[2]; + } + else { + gout[n*3+0] += + s[0]; + gout[n*3+1] += + s[1]; + gout[n*3+2] += + s[2]; + } + //printf("first for loop over\n"); + } + //printf("done. \n"); +} +void int2e_ip1_optimizer(CINTOpt **opt, FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env) { +FINT ng[] = {1, 0, 0, 0, 1, 1, 1, 3}; +CINTall_2e_optimizer(opt, ng, atm, natm, bas, nbas, env); +} +CACHE_SIZE_T int2e_ip1_cart(dtype *out, FINT *dims, FINT *shls, +FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env, CINTOpt *opt, dtype *cache) { +FINT ng[] = {1, 0, 0, 0, 1, 1, 1, 3}; +CINTEnvVars envs; +CINTinit_int2e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env); +#ifdef __cplusplus +envs.f_gout = (void (*)(...))&CINTgout2e_int2e_ip1; +#else +envs.f_gout = &CINTgout2e_int2e_ip1; +#endif +return CINT2e_drv(out, dims, &envs, opt, cache);//, &c2s_cart_2e1); +} +CACHE_SIZE_T int2e_ip1_sph(dtype *out, FINT *dims, FINT *shls, +FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env, CINTOpt *opt, dtype *cache) { + FINT ng[] = {1, 0, 0, 0, 1, 1, 1, 3}; + WHICH_INTEGRAL = INT2E_IP1_SPH; + CINTEnvVars envs; + CINTinit_int2e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env); + /*#ifdef __cplusplus + envs.f_gout = (void (*)(...))&CINTgout2e_int2e_ip1; + #else + envs.f_gout = &CINTgout2e_int2e_ip1; + #endif*/ + return CINT2e_drv(out, dims, &envs, opt, cache);//, &c2s_sph_2e1); +} +/*CACHE_SIZE_T int2e_ip1_spinor(dtype *out, FINT *dims, FINT *shls, +FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env, CINTOpt *opt, dtype *cache) { +FINT ng[] = {1, 0, 0, 0, 1, 1, 1, 3}; +CINTEnvVars envs; +CINTinit_int2e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env); +#ifdef __cplusplus +envs.f_gout = (void (*)(...))&CINTgout2e_int2e_ip1; +#else +envs.f_gout = &CINTgout2e_int2e_ip1; +#endif +return CINT2e_spinor_drv(out, dims, &envs, opt, cache, &c2s_sf_2e1, &c2s_sf_2e2); +}*/ +ALL_CINT(int2e_ip1) +ALL_CINT_FORTRAN_(int2e_ip1) + +void CINTgout2e_int2e_ip2(dtype *gout, +dtype *g, FINT *idx, CINTEnvVars *envs, FINT gout_empty) { +FINT nf = envs->nf; +FINT nrys_roots = envs->nrys_roots; +FINT ix, iy, iz, i, n; +dtype *g0 = g; +dtype *g1 = g0 + envs->g_size * 3; +G2E_D_K(g1, g0, envs->i_l+0, envs->j_l+0, envs->k_l+0, envs->l_l); +dtype s[3]; +for (n = 0; n < nf; n++) { +ix = idx[0+n*3]; +iy = idx[1+n*3]; +iz = idx[2+n*3]; +switch (nrys_roots) { +case 1: +s[0] = + g1[ix+0]*g0[iy+0]*g0[iz+0]; +s[1] = + g0[ix+0]*g1[iy+0]*g0[iz+0]; +s[2] = + g0[ix+0]*g0[iy+0]*g1[iz+0]; +break; +case 2: +s[0] = + g1[ix+0]*g0[iy+0]*g0[iz+0]+ g1[ix+1]*g0[iy+1]*g0[iz+1]; +s[1] = + g0[ix+0]*g1[iy+0]*g0[iz+0]+ g0[ix+1]*g1[iy+1]*g0[iz+1]; +s[2] = + g0[ix+0]*g0[iy+0]*g1[iz+0]+ g0[ix+1]*g0[iy+1]*g1[iz+1]; +break; +case 3: +s[0] = + g1[ix+0]*g0[iy+0]*g0[iz+0]+ g1[ix+1]*g0[iy+1]*g0[iz+1]+ g1[ix+2]*g0[iy+2]*g0[iz+2]; +s[1] = + g0[ix+0]*g1[iy+0]*g0[iz+0]+ g0[ix+1]*g1[iy+1]*g0[iz+1]+ g0[ix+2]*g1[iy+2]*g0[iz+2]; +s[2] = + g0[ix+0]*g0[iy+0]*g1[iz+0]+ g0[ix+1]*g0[iy+1]*g1[iz+1]+ g0[ix+2]*g0[iy+2]*g1[iz+2]; +break; +case 4: +s[0] = + g1[ix+0]*g0[iy+0]*g0[iz+0]+ g1[ix+1]*g0[iy+1]*g0[iz+1]+ g1[ix+2]*g0[iy+2]*g0[iz+2]+ g1[ix+3]*g0[iy+3]*g0[iz+3]; +s[1] = + g0[ix+0]*g1[iy+0]*g0[iz+0]+ g0[ix+1]*g1[iy+1]*g0[iz+1]+ g0[ix+2]*g1[iy+2]*g0[iz+2]+ g0[ix+3]*g1[iy+3]*g0[iz+3]; +s[2] = + g0[ix+0]*g0[iy+0]*g1[iz+0]+ g0[ix+1]*g0[iy+1]*g1[iz+1]+ g0[ix+2]*g0[iy+2]*g1[iz+2]+ g0[ix+3]*g0[iy+3]*g1[iz+3]; +break; +default: +for (i = 0; i < 3; i++) { s[i] = 0; } +for (i = 0; i < nrys_roots; i++) { +s[0] += g1[ix+i] * g0[iy+i] * g0[iz+i]; +s[1] += g0[ix+i] * g1[iy+i] * g0[iz+i]; +s[2] += g0[ix+i] * g0[iy+i] * g1[iz+i]; +} break;} +if (gout_empty) { +gout[n*3+0] = + s[0]; +gout[n*3+1] = + s[1]; +gout[n*3+2] = + s[2]; +} else { +gout[n*3+0] += + s[0]; +gout[n*3+1] += + s[1]; +gout[n*3+2] += + s[2]; +}}} +void int2e_ip2_optimizer(CINTOpt **opt, FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env) { +FINT ng[] = {0, 0, 1, 0, 1, 1, 1, 3}; +CINTall_2e_optimizer(opt, ng, atm, natm, bas, nbas, env); +} +/*CACHE_SIZE_T int2e_ip2_cart(dtype *out, FINT *dims, FINT *shls, +FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env, CINTOpt *opt, dtype *cache) { +FINT ng[] = {0, 0, 1, 0, 1, 1, 1, 3}; +CINTEnvVars envs; +CINTinit_int2e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env); +envs.f_gout = &CINTgout2e_int2e_ip2; +return CINT2e_drv(out, dims, &envs, opt, cache, &c2s_cart_2e1); +} +CACHE_SIZE_T int2e_ip2_sph(dtype *out, FINT *dims, FINT *shls, +FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env, CINTOpt *opt, dtype *cache) { +FINT ng[] = {0, 0, 1, 0, 1, 1, 1, 3}; +CINTEnvVars envs; +CINTinit_int2e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env); +envs.f_gout = &CINTgout2e_int2e_ip2; +return CINT2e_drv(out, dims, &envs, opt, cache, &c2s_sph_2e1); +} +CACHE_SIZE_T int2e_ip2_spinor(dtype *out, FINT *dims, FINT *shls, +FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env, CINTOpt *opt, dtype *cache) { +FINT ng[] = {0, 0, 1, 0, 1, 1, 1, 3}; +CINTEnvVars envs; +CINTinit_int2e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env); +envs.f_gout = &CINTgout2e_int2e_ip2; +return CINT2e_spinor_drv(out, dims, &envs, opt, cache, &c2s_sf_2e1, &c2s_sf_2e2); +} +ALL_CINT(int2e_ip2) +ALL_CINT_FORTRAN_(int2e_ip2) + +void CINTgout2e_int2e_ipspsp1(dtype *gout, +dtype *g, FINT *idx, CINTEnvVars *envs, FINT gout_empty) { +FINT nf = envs->nf; +FINT nrys_roots = envs->nrys_roots; +FINT ix, iy, iz, i, n; +dtype *g0 = g; +dtype *g1 = g0 + envs->g_size * 3; +dtype *g2 = g1 + envs->g_size * 3; +dtype *g3 = g2 + envs->g_size * 3; +dtype *g4 = g3 + envs->g_size * 3; +dtype *g5 = g4 + envs->g_size * 3; +dtype *g6 = g5 + envs->g_size * 3; +dtype *g7 = g6 + envs->g_size * 3; +G2E_D_J(g1, g0, envs->i_l+2, envs->j_l+0, envs->k_l, envs->l_l); +G2E_D_I(g2, g0, envs->i_l+1, envs->j_l, envs->k_l, envs->l_l); +G2E_D_I(g3, g1, envs->i_l+1, envs->j_l, envs->k_l, envs->l_l); +G2E_D_I(g4, g0, envs->i_l+0, envs->j_l, envs->k_l, envs->l_l); +G2E_D_I(g5, g1, envs->i_l+0, envs->j_l, envs->k_l, envs->l_l); +G2E_D_I(g6, g2, envs->i_l+0, envs->j_l, envs->k_l, envs->l_l); +G2E_D_I(g7, g3, envs->i_l+0, envs->j_l, envs->k_l, envs->l_l); +dtype s[27]; +for (n = 0; n < nf; n++) { +ix = idx[0+n*3]; +iy = idx[1+n*3]; +iz = idx[2+n*3]; +for (i = 0; i < 27; i++) { s[i] = 0; } +for (i = 0; i < nrys_roots; i++) { +s[0] += g7[ix+i] * g0[iy+i] * g0[iz+i]; +s[1] += g6[ix+i] * g1[iy+i] * g0[iz+i]; +s[2] += g6[ix+i] * g0[iy+i] * g1[iz+i]; +s[3] += g5[ix+i] * g2[iy+i] * g0[iz+i]; +s[4] += g4[ix+i] * g3[iy+i] * g0[iz+i]; +s[5] += g4[ix+i] * g2[iy+i] * g1[iz+i]; +s[6] += g5[ix+i] * g0[iy+i] * g2[iz+i]; +s[7] += g4[ix+i] * g1[iy+i] * g2[iz+i]; +s[8] += g4[ix+i] * g0[iy+i] * g3[iz+i]; +s[9] += g3[ix+i] * g4[iy+i] * g0[iz+i]; +s[10] += g2[ix+i] * g5[iy+i] * g0[iz+i]; +s[11] += g2[ix+i] * g4[iy+i] * g1[iz+i]; +s[12] += g1[ix+i] * g6[iy+i] * g0[iz+i]; +s[13] += g0[ix+i] * g7[iy+i] * g0[iz+i]; +s[14] += g0[ix+i] * g6[iy+i] * g1[iz+i]; +s[15] += g1[ix+i] * g4[iy+i] * g2[iz+i]; +s[16] += g0[ix+i] * g5[iy+i] * g2[iz+i]; +s[17] += g0[ix+i] * g4[iy+i] * g3[iz+i]; +s[18] += g3[ix+i] * g0[iy+i] * g4[iz+i]; +s[19] += g2[ix+i] * g1[iy+i] * g4[iz+i]; +s[20] += g2[ix+i] * g0[iy+i] * g5[iz+i]; +s[21] += g1[ix+i] * g2[iy+i] * g4[iz+i]; +s[22] += g0[ix+i] * g3[iy+i] * g4[iz+i]; +s[23] += g0[ix+i] * g2[iy+i] * g5[iz+i]; +s[24] += g1[ix+i] * g0[iy+i] * g6[iz+i]; +s[25] += g0[ix+i] * g1[iy+i] * g6[iz+i]; +s[26] += g0[ix+i] * g0[iy+i] * g7[iz+i]; +} +if (gout_empty) { +gout[n*12+0] = + s[11] - s[19]; +gout[n*12+1] = + s[18] - s[2]; +gout[n*12+2] = + s[1] - s[9]; +gout[n*12+3] = + s[0] + s[10] + s[20]; +gout[n*12+4] = + s[14] - s[22]; +gout[n*12+5] = + s[21] - s[5]; +gout[n*12+6] = + s[4] - s[12]; +gout[n*12+7] = + s[3] + s[13] + s[23]; +gout[n*12+8] = + s[17] - s[25]; +gout[n*12+9] = + s[24] - s[8]; +gout[n*12+10] = + s[7] - s[15]; +gout[n*12+11] = + s[6] + s[16] + s[26]; +} else { +gout[n*12+0] += + s[11] - s[19]; +gout[n*12+1] += + s[18] - s[2]; +gout[n*12+2] += + s[1] - s[9]; +gout[n*12+3] += + s[0] + s[10] + s[20]; +gout[n*12+4] += + s[14] - s[22]; +gout[n*12+5] += + s[21] - s[5]; +gout[n*12+6] += + s[4] - s[12]; +gout[n*12+7] += + s[3] + s[13] + s[23]; +gout[n*12+8] += + s[17] - s[25]; +gout[n*12+9] += + s[24] - s[8]; +gout[n*12+10] += + s[7] - s[15]; +gout[n*12+11] += + s[6] + s[16] + s[26]; +}}} +void int2e_ipspsp1_optimizer(CINTOpt **opt, FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env) { +FINT ng[] = {2, 1, 0, 0, 3, 4, 1, 3}; +CINTall_2e_optimizer(opt, ng, atm, natm, bas, nbas, env); +} +CACHE_SIZE_T int2e_ipspsp1_cart(dtype *out, FINT *dims, FINT *shls, +FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env, CINTOpt *opt, dtype *cache) { +FINT ng[] = {2, 1, 0, 0, 3, 4, 1, 3}; +CINTEnvVars envs; +CINTinit_int2e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env); +envs.f_gout = &CINTgout2e_int2e_ipspsp1; +return CINT2e_drv(out, dims, &envs, opt, cache, &c2s_cart_2e1); +} +CACHE_SIZE_T int2e_ipspsp1_sph(dtype *out, FINT *dims, FINT *shls, +FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env, CINTOpt *opt, dtype *cache) { +FINT ng[] = {2, 1, 0, 0, 3, 4, 1, 3}; +CINTEnvVars envs; +CINTinit_int2e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env); +envs.f_gout = &CINTgout2e_int2e_ipspsp1; +return CINT2e_drv(out, dims, &envs, opt, cache, &c2s_sph_2e1); +} +CACHE_SIZE_T int2e_ipspsp1_spinor(dtype *out, FINT *dims, FINT *shls, +FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env, CINTOpt *opt, dtype *cache) { +FINT ng[] = {2, 1, 0, 0, 3, 4, 1, 3}; +CINTEnvVars envs; +CINTinit_int2e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env); +envs.f_gout = &CINTgout2e_int2e_ipspsp1; +return CINT2e_spinor_drv(out, dims, &envs, opt, cache, &c2s_si_2e1, &c2s_sf_2e2); +} +ALL_CINT(int2e_ipspsp1) +ALL_CINT_FORTRAN_(int2e_ipspsp1) + +void CINTgout2e_int2e_ip1spsp2(dtype *gout, +dtype *g, FINT *idx, CINTEnvVars *envs, FINT gout_empty) { +FINT nf = envs->nf; +FINT nrys_roots = envs->nrys_roots; +FINT ix, iy, iz, i, n; +dtype *g0 = g; +dtype *g1 = g0 + envs->g_size * 3; +dtype *g2 = g1 + envs->g_size * 3; +dtype *g3 = g2 + envs->g_size * 3; +dtype *g4 = g3 + envs->g_size * 3; +dtype *g5 = g4 + envs->g_size * 3; +dtype *g6 = g5 + envs->g_size * 3; +dtype *g7 = g6 + envs->g_size * 3; +G2E_D_L(g1, g0, envs->i_l+1, envs->j_l+0, envs->k_l+1, envs->l_l+0); +G2E_D_K(g2, g0, envs->i_l+1, envs->j_l+0, envs->k_l+0, envs->l_l); +G2E_D_K(g3, g1, envs->i_l+1, envs->j_l+0, envs->k_l+0, envs->l_l); +G2E_D_I(g4, g0, envs->i_l+0, envs->j_l, envs->k_l, envs->l_l); +G2E_D_I(g5, g1, envs->i_l+0, envs->j_l, envs->k_l, envs->l_l); +G2E_D_I(g6, g2, envs->i_l+0, envs->j_l, envs->k_l, envs->l_l); +G2E_D_I(g7, g3, envs->i_l+0, envs->j_l, envs->k_l, envs->l_l); +dtype s[27]; +for (n = 0; n < nf; n++) { +ix = idx[0+n*3]; +iy = idx[1+n*3]; +iz = idx[2+n*3]; +for (i = 0; i < 27; i++) { s[i] = 0; } +for (i = 0; i < nrys_roots; i++) { +s[0] += g7[ix+i] * g0[iy+i] * g0[iz+i]; +s[1] += g6[ix+i] * g1[iy+i] * g0[iz+i]; +s[2] += g6[ix+i] * g0[iy+i] * g1[iz+i]; +s[3] += g5[ix+i] * g2[iy+i] * g0[iz+i]; +s[4] += g4[ix+i] * g3[iy+i] * g0[iz+i]; +s[5] += g4[ix+i] * g2[iy+i] * g1[iz+i]; +s[6] += g5[ix+i] * g0[iy+i] * g2[iz+i]; +s[7] += g4[ix+i] * g1[iy+i] * g2[iz+i]; +s[8] += g4[ix+i] * g0[iy+i] * g3[iz+i]; +s[9] += g3[ix+i] * g4[iy+i] * g0[iz+i]; +s[10] += g2[ix+i] * g5[iy+i] * g0[iz+i]; +s[11] += g2[ix+i] * g4[iy+i] * g1[iz+i]; +s[12] += g1[ix+i] * g6[iy+i] * g0[iz+i]; +s[13] += g0[ix+i] * g7[iy+i] * g0[iz+i]; +s[14] += g0[ix+i] * g6[iy+i] * g1[iz+i]; +s[15] += g1[ix+i] * g4[iy+i] * g2[iz+i]; +s[16] += g0[ix+i] * g5[iy+i] * g2[iz+i]; +s[17] += g0[ix+i] * g4[iy+i] * g3[iz+i]; +s[18] += g3[ix+i] * g0[iy+i] * g4[iz+i]; +s[19] += g2[ix+i] * g1[iy+i] * g4[iz+i]; +s[20] += g2[ix+i] * g0[iy+i] * g5[iz+i]; +s[21] += g1[ix+i] * g2[iy+i] * g4[iz+i]; +s[22] += g0[ix+i] * g3[iy+i] * g4[iz+i]; +s[23] += g0[ix+i] * g2[iy+i] * g5[iz+i]; +s[24] += g1[ix+i] * g0[iy+i] * g6[iz+i]; +s[25] += g0[ix+i] * g1[iy+i] * g6[iz+i]; +s[26] += g0[ix+i] * g0[iy+i] * g7[iz+i]; +} +if (gout_empty) { +gout[n*12+0] = + s[5] - s[7]; +gout[n*12+1] = + s[6] - s[2]; +gout[n*12+2] = + s[1] - s[3]; +gout[n*12+3] = + s[0] + s[4] + s[8]; +gout[n*12+4] = + s[14] - s[16]; +gout[n*12+5] = + s[15] - s[11]; +gout[n*12+6] = + s[10] - s[12]; +gout[n*12+7] = + s[9] + s[13] + s[17]; +gout[n*12+8] = + s[23] - s[25]; +gout[n*12+9] = + s[24] - s[20]; +gout[n*12+10] = + s[19] - s[21]; +gout[n*12+11] = + s[18] + s[22] + s[26]; +} else { +gout[n*12+0] += + s[5] - s[7]; +gout[n*12+1] += + s[6] - s[2]; +gout[n*12+2] += + s[1] - s[3]; +gout[n*12+3] += + s[0] + s[4] + s[8]; +gout[n*12+4] += + s[14] - s[16]; +gout[n*12+5] += + s[15] - s[11]; +gout[n*12+6] += + s[10] - s[12]; +gout[n*12+7] += + s[9] + s[13] + s[17]; +gout[n*12+8] += + s[23] - s[25]; +gout[n*12+9] += + s[24] - s[20]; +gout[n*12+10] += + s[19] - s[21]; +gout[n*12+11] += + s[18] + s[22] + s[26]; +}}} +void int2e_ip1spsp2_optimizer(CINTOpt **opt, FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env) { +FINT ng[] = {1, 0, 1, 1, 3, 1, 4, 3}; +CINTall_2e_optimizer(opt, ng, atm, natm, bas, nbas, env); +} +CACHE_SIZE_T int2e_ip1spsp2_cart(dtype *out, FINT *dims, FINT *shls, +FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env, CINTOpt *opt, dtype *cache) { +FINT ng[] = {1, 0, 1, 1, 3, 1, 4, 3}; +CINTEnvVars envs; +CINTinit_int2e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env); +envs.f_gout = &CINTgout2e_int2e_ip1spsp2; +return CINT2e_drv(out, dims, &envs, opt, cache, &c2s_cart_2e1); +} +CACHE_SIZE_T int2e_ip1spsp2_sph(dtype *out, FINT *dims, FINT *shls, +FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env, CINTOpt *opt, dtype *cache) { +FINT ng[] = {1, 0, 1, 1, 3, 1, 4, 3}; +CINTEnvVars envs; +CINTinit_int2e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env); +envs.f_gout = &CINTgout2e_int2e_ip1spsp2; +return CINT2e_drv(out, dims, &envs, opt, cache, &c2s_sph_2e1); +} +CACHE_SIZE_T int2e_ip1spsp2_spinor(dtype *out, FINT *dims, FINT *shls, +FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env, CINTOpt *opt, dtype *cache) { +FINT ng[] = {1, 0, 1, 1, 3, 1, 4, 3}; +CINTEnvVars envs; +CINTinit_int2e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env); +envs.f_gout = &CINTgout2e_int2e_ip1spsp2; +return CINT2e_spinor_drv(out, dims, &envs, opt, cache, &c2s_sf_2e1, &c2s_si_2e2); +} +ALL_CINT(int2e_ip1spsp2) +ALL_CINT_FORTRAN_(int2e_ip1spsp2) + +void CINTgout2e_int2e_ipspsp1spsp2(dtype *gout, +dtype *g, FINT *idx, CINTEnvVars *envs, FINT gout_empty) { +FINT nf = envs->nf; +FINT nrys_roots = envs->nrys_roots; +FINT ix, iy, iz, i, n; +dtype *g0 = g; +dtype *g1 = g0 + envs->g_size * 3; +dtype *g2 = g1 + envs->g_size * 3; +dtype *g3 = g2 + envs->g_size * 3; +dtype *g4 = g3 + envs->g_size * 3; +dtype *g5 = g4 + envs->g_size * 3; +dtype *g6 = g5 + envs->g_size * 3; +dtype *g7 = g6 + envs->g_size * 3; +dtype *g8 = g7 + envs->g_size * 3; +dtype *g9 = g8 + envs->g_size * 3; +dtype *g10 = g9 + envs->g_size * 3; +dtype *g11 = g10 + envs->g_size * 3; +dtype *g12 = g11 + envs->g_size * 3; +dtype *g13 = g12 + envs->g_size * 3; +dtype *g14 = g13 + envs->g_size * 3; +dtype *g15 = g14 + envs->g_size * 3; +dtype *g16 = g15 + envs->g_size * 3; +dtype *g17 = g16 + envs->g_size * 3; +dtype *g18 = g17 + envs->g_size * 3; +dtype *g19 = g18 + envs->g_size * 3; +dtype *g20 = g19 + envs->g_size * 3; +dtype *g21 = g20 + envs->g_size * 3; +dtype *g22 = g21 + envs->g_size * 3; +dtype *g23 = g22 + envs->g_size * 3; +dtype *g24 = g23 + envs->g_size * 3; +dtype *g25 = g24 + envs->g_size * 3; +dtype *g26 = g25 + envs->g_size * 3; +dtype *g27 = g26 + envs->g_size * 3; +dtype *g28 = g27 + envs->g_size * 3; +dtype *g29 = g28 + envs->g_size * 3; +dtype *g30 = g29 + envs->g_size * 3; +dtype *g31 = g30 + envs->g_size * 3; +G2E_D_L(g1, g0, envs->i_l+2, envs->j_l+1, envs->k_l+1, envs->l_l+0); +G2E_D_K(g2, g0, envs->i_l+2, envs->j_l+1, envs->k_l+0, envs->l_l); +G2E_D_K(g3, g1, envs->i_l+2, envs->j_l+1, envs->k_l+0, envs->l_l); +G2E_D_J(g4, g0, envs->i_l+2, envs->j_l+0, envs->k_l, envs->l_l); +G2E_D_J(g5, g1, envs->i_l+2, envs->j_l+0, envs->k_l, envs->l_l); +G2E_D_J(g6, g2, envs->i_l+2, envs->j_l+0, envs->k_l, envs->l_l); +G2E_D_J(g7, g3, envs->i_l+2, envs->j_l+0, envs->k_l, envs->l_l); +G2E_D_I(g8, g0, envs->i_l+1, envs->j_l, envs->k_l, envs->l_l); +G2E_D_I(g9, g1, envs->i_l+1, envs->j_l, envs->k_l, envs->l_l); +G2E_D_I(g10, g2, envs->i_l+1, envs->j_l, envs->k_l, envs->l_l); +G2E_D_I(g11, g3, envs->i_l+1, envs->j_l, envs->k_l, envs->l_l); +G2E_D_I(g12, g4, envs->i_l+1, envs->j_l, envs->k_l, envs->l_l); +G2E_D_I(g13, g5, envs->i_l+1, envs->j_l, envs->k_l, envs->l_l); +G2E_D_I(g14, g6, envs->i_l+1, envs->j_l, envs->k_l, envs->l_l); +G2E_D_I(g15, g7, envs->i_l+1, envs->j_l, envs->k_l, envs->l_l); +G2E_D_I(g16, g0, envs->i_l+0, envs->j_l, envs->k_l, envs->l_l); +G2E_D_I(g17, g1, envs->i_l+0, envs->j_l, envs->k_l, envs->l_l); +G2E_D_I(g18, g2, envs->i_l+0, envs->j_l, envs->k_l, envs->l_l); +G2E_D_I(g19, g3, envs->i_l+0, envs->j_l, envs->k_l, envs->l_l); +G2E_D_I(g20, g4, envs->i_l+0, envs->j_l, envs->k_l, envs->l_l); +G2E_D_I(g21, g5, envs->i_l+0, envs->j_l, envs->k_l, envs->l_l); +G2E_D_I(g22, g6, envs->i_l+0, envs->j_l, envs->k_l, envs->l_l); +G2E_D_I(g23, g7, envs->i_l+0, envs->j_l, envs->k_l, envs->l_l); +G2E_D_I(g24, g8, envs->i_l+0, envs->j_l, envs->k_l, envs->l_l); +G2E_D_I(g25, g9, envs->i_l+0, envs->j_l, envs->k_l, envs->l_l); +G2E_D_I(g26, g10, envs->i_l+0, envs->j_l, envs->k_l, envs->l_l); +G2E_D_I(g27, g11, envs->i_l+0, envs->j_l, envs->k_l, envs->l_l); +G2E_D_I(g28, g12, envs->i_l+0, envs->j_l, envs->k_l, envs->l_l); +G2E_D_I(g29, g13, envs->i_l+0, envs->j_l, envs->k_l, envs->l_l); +G2E_D_I(g30, g14, envs->i_l+0, envs->j_l, envs->k_l, envs->l_l); +G2E_D_I(g31, g15, envs->i_l+0, envs->j_l, envs->k_l, envs->l_l); +dtype s[243]; +for (n = 0; n < nf; n++) { +ix = idx[0+n*3]; +iy = idx[1+n*3]; +iz = idx[2+n*3]; +for (i = 0; i < 243; i++) { s[i] = 0; } +for (i = 0; i < nrys_roots; i++) { +s[0] += g31[ix+i] * g0[iy+i] * g0[iz+i]; +s[1] += g30[ix+i] * g1[iy+i] * g0[iz+i]; +s[2] += g30[ix+i] * g0[iy+i] * g1[iz+i]; +s[3] += g29[ix+i] * g2[iy+i] * g0[iz+i]; +s[4] += g28[ix+i] * g3[iy+i] * g0[iz+i]; +s[5] += g28[ix+i] * g2[iy+i] * g1[iz+i]; +s[6] += g29[ix+i] * g0[iy+i] * g2[iz+i]; +s[7] += g28[ix+i] * g1[iy+i] * g2[iz+i]; +s[8] += g28[ix+i] * g0[iy+i] * g3[iz+i]; +s[9] += g27[ix+i] * g4[iy+i] * g0[iz+i]; +s[10] += g26[ix+i] * g5[iy+i] * g0[iz+i]; +s[11] += g26[ix+i] * g4[iy+i] * g1[iz+i]; +s[12] += g25[ix+i] * g6[iy+i] * g0[iz+i]; +s[13] += g24[ix+i] * g7[iy+i] * g0[iz+i]; +s[14] += g24[ix+i] * g6[iy+i] * g1[iz+i]; +s[15] += g25[ix+i] * g4[iy+i] * g2[iz+i]; +s[16] += g24[ix+i] * g5[iy+i] * g2[iz+i]; +s[17] += g24[ix+i] * g4[iy+i] * g3[iz+i]; +s[18] += g27[ix+i] * g0[iy+i] * g4[iz+i]; +s[19] += g26[ix+i] * g1[iy+i] * g4[iz+i]; +s[20] += g26[ix+i] * g0[iy+i] * g5[iz+i]; +s[21] += g25[ix+i] * g2[iy+i] * g4[iz+i]; +s[22] += g24[ix+i] * g3[iy+i] * g4[iz+i]; +s[23] += g24[ix+i] * g2[iy+i] * g5[iz+i]; +s[24] += g25[ix+i] * g0[iy+i] * g6[iz+i]; +s[25] += g24[ix+i] * g1[iy+i] * g6[iz+i]; +s[26] += g24[ix+i] * g0[iy+i] * g7[iz+i]; +s[27] += g23[ix+i] * g8[iy+i] * g0[iz+i]; +s[28] += g22[ix+i] * g9[iy+i] * g0[iz+i]; +s[29] += g22[ix+i] * g8[iy+i] * g1[iz+i]; +s[30] += g21[ix+i] * g10[iy+i] * g0[iz+i]; +s[31] += g20[ix+i] * g11[iy+i] * g0[iz+i]; +s[32] += g20[ix+i] * g10[iy+i] * g1[iz+i]; +s[33] += g21[ix+i] * g8[iy+i] * g2[iz+i]; +s[34] += g20[ix+i] * g9[iy+i] * g2[iz+i]; +s[35] += g20[ix+i] * g8[iy+i] * g3[iz+i]; +s[36] += g19[ix+i] * g12[iy+i] * g0[iz+i]; +s[37] += g18[ix+i] * g13[iy+i] * g0[iz+i]; +s[38] += g18[ix+i] * g12[iy+i] * g1[iz+i]; +s[39] += g17[ix+i] * g14[iy+i] * g0[iz+i]; +s[40] += g16[ix+i] * g15[iy+i] * g0[iz+i]; +s[41] += g16[ix+i] * g14[iy+i] * g1[iz+i]; +s[42] += g17[ix+i] * g12[iy+i] * g2[iz+i]; +s[43] += g16[ix+i] * g13[iy+i] * g2[iz+i]; +s[44] += g16[ix+i] * g12[iy+i] * g3[iz+i]; +s[45] += g19[ix+i] * g8[iy+i] * g4[iz+i]; +s[46] += g18[ix+i] * g9[iy+i] * g4[iz+i]; +s[47] += g18[ix+i] * g8[iy+i] * g5[iz+i]; +s[48] += g17[ix+i] * g10[iy+i] * g4[iz+i]; +s[49] += g16[ix+i] * g11[iy+i] * g4[iz+i]; +s[50] += g16[ix+i] * g10[iy+i] * g5[iz+i]; +s[51] += g17[ix+i] * g8[iy+i] * g6[iz+i]; +s[52] += g16[ix+i] * g9[iy+i] * g6[iz+i]; +s[53] += g16[ix+i] * g8[iy+i] * g7[iz+i]; +s[54] += g23[ix+i] * g0[iy+i] * g8[iz+i]; +s[55] += g22[ix+i] * g1[iy+i] * g8[iz+i]; +s[56] += g22[ix+i] * g0[iy+i] * g9[iz+i]; +s[57] += g21[ix+i] * g2[iy+i] * g8[iz+i]; +s[58] += g20[ix+i] * g3[iy+i] * g8[iz+i]; +s[59] += g20[ix+i] * g2[iy+i] * g9[iz+i]; +s[60] += g21[ix+i] * g0[iy+i] * g10[iz+i]; +s[61] += g20[ix+i] * g1[iy+i] * g10[iz+i]; +s[62] += g20[ix+i] * g0[iy+i] * g11[iz+i]; +s[63] += g19[ix+i] * g4[iy+i] * g8[iz+i]; +s[64] += g18[ix+i] * g5[iy+i] * g8[iz+i]; +s[65] += g18[ix+i] * g4[iy+i] * g9[iz+i]; +s[66] += g17[ix+i] * g6[iy+i] * g8[iz+i]; +s[67] += g16[ix+i] * g7[iy+i] * g8[iz+i]; +s[68] += g16[ix+i] * g6[iy+i] * g9[iz+i]; +s[69] += g17[ix+i] * g4[iy+i] * g10[iz+i]; +s[70] += g16[ix+i] * g5[iy+i] * g10[iz+i]; +s[71] += g16[ix+i] * g4[iy+i] * g11[iz+i]; +s[72] += g19[ix+i] * g0[iy+i] * g12[iz+i]; +s[73] += g18[ix+i] * g1[iy+i] * g12[iz+i]; +s[74] += g18[ix+i] * g0[iy+i] * g13[iz+i]; +s[75] += g17[ix+i] * g2[iy+i] * g12[iz+i]; +s[76] += g16[ix+i] * g3[iy+i] * g12[iz+i]; +s[77] += g16[ix+i] * g2[iy+i] * g13[iz+i]; +s[78] += g17[ix+i] * g0[iy+i] * g14[iz+i]; +s[79] += g16[ix+i] * g1[iy+i] * g14[iz+i]; +s[80] += g16[ix+i] * g0[iy+i] * g15[iz+i]; +s[81] += g15[ix+i] * g16[iy+i] * g0[iz+i]; +s[82] += g14[ix+i] * g17[iy+i] * g0[iz+i]; +s[83] += g14[ix+i] * g16[iy+i] * g1[iz+i]; +s[84] += g13[ix+i] * g18[iy+i] * g0[iz+i]; +s[85] += g12[ix+i] * g19[iy+i] * g0[iz+i]; +s[86] += g12[ix+i] * g18[iy+i] * g1[iz+i]; +s[87] += g13[ix+i] * g16[iy+i] * g2[iz+i]; +s[88] += g12[ix+i] * g17[iy+i] * g2[iz+i]; +s[89] += g12[ix+i] * g16[iy+i] * g3[iz+i]; +s[90] += g11[ix+i] * g20[iy+i] * g0[iz+i]; +s[91] += g10[ix+i] * g21[iy+i] * g0[iz+i]; +s[92] += g10[ix+i] * g20[iy+i] * g1[iz+i]; +s[93] += g9[ix+i] * g22[iy+i] * g0[iz+i]; +s[94] += g8[ix+i] * g23[iy+i] * g0[iz+i]; +s[95] += g8[ix+i] * g22[iy+i] * g1[iz+i]; +s[96] += g9[ix+i] * g20[iy+i] * g2[iz+i]; +s[97] += g8[ix+i] * g21[iy+i] * g2[iz+i]; +s[98] += g8[ix+i] * g20[iy+i] * g3[iz+i]; +s[99] += g11[ix+i] * g16[iy+i] * g4[iz+i]; +s[100] += g10[ix+i] * g17[iy+i] * g4[iz+i]; +s[101] += g10[ix+i] * g16[iy+i] * g5[iz+i]; +s[102] += g9[ix+i] * g18[iy+i] * g4[iz+i]; +s[103] += g8[ix+i] * g19[iy+i] * g4[iz+i]; +s[104] += g8[ix+i] * g18[iy+i] * g5[iz+i]; +s[105] += g9[ix+i] * g16[iy+i] * g6[iz+i]; +s[106] += g8[ix+i] * g17[iy+i] * g6[iz+i]; +s[107] += g8[ix+i] * g16[iy+i] * g7[iz+i]; +s[108] += g7[ix+i] * g24[iy+i] * g0[iz+i]; +s[109] += g6[ix+i] * g25[iy+i] * g0[iz+i]; +s[110] += g6[ix+i] * g24[iy+i] * g1[iz+i]; +s[111] += g5[ix+i] * g26[iy+i] * g0[iz+i]; +s[112] += g4[ix+i] * g27[iy+i] * g0[iz+i]; +s[113] += g4[ix+i] * g26[iy+i] * g1[iz+i]; +s[114] += g5[ix+i] * g24[iy+i] * g2[iz+i]; +s[115] += g4[ix+i] * g25[iy+i] * g2[iz+i]; +s[116] += g4[ix+i] * g24[iy+i] * g3[iz+i]; +s[117] += g3[ix+i] * g28[iy+i] * g0[iz+i]; +s[118] += g2[ix+i] * g29[iy+i] * g0[iz+i]; +s[119] += g2[ix+i] * g28[iy+i] * g1[iz+i]; +s[120] += g1[ix+i] * g30[iy+i] * g0[iz+i]; +s[121] += g0[ix+i] * g31[iy+i] * g0[iz+i]; +s[122] += g0[ix+i] * g30[iy+i] * g1[iz+i]; +s[123] += g1[ix+i] * g28[iy+i] * g2[iz+i]; +s[124] += g0[ix+i] * g29[iy+i] * g2[iz+i]; +s[125] += g0[ix+i] * g28[iy+i] * g3[iz+i]; +s[126] += g3[ix+i] * g24[iy+i] * g4[iz+i]; +s[127] += g2[ix+i] * g25[iy+i] * g4[iz+i]; +s[128] += g2[ix+i] * g24[iy+i] * g5[iz+i]; +s[129] += g1[ix+i] * g26[iy+i] * g4[iz+i]; +s[130] += g0[ix+i] * g27[iy+i] * g4[iz+i]; +s[131] += g0[ix+i] * g26[iy+i] * g5[iz+i]; +s[132] += g1[ix+i] * g24[iy+i] * g6[iz+i]; +s[133] += g0[ix+i] * g25[iy+i] * g6[iz+i]; +s[134] += g0[ix+i] * g24[iy+i] * g7[iz+i]; +s[135] += g7[ix+i] * g16[iy+i] * g8[iz+i]; +s[136] += g6[ix+i] * g17[iy+i] * g8[iz+i]; +s[137] += g6[ix+i] * g16[iy+i] * g9[iz+i]; +s[138] += g5[ix+i] * g18[iy+i] * g8[iz+i]; +s[139] += g4[ix+i] * g19[iy+i] * g8[iz+i]; +s[140] += g4[ix+i] * g18[iy+i] * g9[iz+i]; +s[141] += g5[ix+i] * g16[iy+i] * g10[iz+i]; +s[142] += g4[ix+i] * g17[iy+i] * g10[iz+i]; +s[143] += g4[ix+i] * g16[iy+i] * g11[iz+i]; +s[144] += g3[ix+i] * g20[iy+i] * g8[iz+i]; +s[145] += g2[ix+i] * g21[iy+i] * g8[iz+i]; +s[146] += g2[ix+i] * g20[iy+i] * g9[iz+i]; +s[147] += g1[ix+i] * g22[iy+i] * g8[iz+i]; +s[148] += g0[ix+i] * g23[iy+i] * g8[iz+i]; +s[149] += g0[ix+i] * g22[iy+i] * g9[iz+i]; +s[150] += g1[ix+i] * g20[iy+i] * g10[iz+i]; +s[151] += g0[ix+i] * g21[iy+i] * g10[iz+i]; +s[152] += g0[ix+i] * g20[iy+i] * g11[iz+i]; +s[153] += g3[ix+i] * g16[iy+i] * g12[iz+i]; +s[154] += g2[ix+i] * g17[iy+i] * g12[iz+i]; +s[155] += g2[ix+i] * g16[iy+i] * g13[iz+i]; +s[156] += g1[ix+i] * g18[iy+i] * g12[iz+i]; +s[157] += g0[ix+i] * g19[iy+i] * g12[iz+i]; +s[158] += g0[ix+i] * g18[iy+i] * g13[iz+i]; +s[159] += g1[ix+i] * g16[iy+i] * g14[iz+i]; +s[160] += g0[ix+i] * g17[iy+i] * g14[iz+i]; +s[161] += g0[ix+i] * g16[iy+i] * g15[iz+i]; +s[162] += g15[ix+i] * g0[iy+i] * g16[iz+i]; +s[163] += g14[ix+i] * g1[iy+i] * g16[iz+i]; +s[164] += g14[ix+i] * g0[iy+i] * g17[iz+i]; +s[165] += g13[ix+i] * g2[iy+i] * g16[iz+i]; +s[166] += g12[ix+i] * g3[iy+i] * g16[iz+i]; +s[167] += g12[ix+i] * g2[iy+i] * g17[iz+i]; +s[168] += g13[ix+i] * g0[iy+i] * g18[iz+i]; +s[169] += g12[ix+i] * g1[iy+i] * g18[iz+i]; +s[170] += g12[ix+i] * g0[iy+i] * g19[iz+i]; +s[171] += g11[ix+i] * g4[iy+i] * g16[iz+i]; +s[172] += g10[ix+i] * g5[iy+i] * g16[iz+i]; +s[173] += g10[ix+i] * g4[iy+i] * g17[iz+i]; +s[174] += g9[ix+i] * g6[iy+i] * g16[iz+i]; +s[175] += g8[ix+i] * g7[iy+i] * g16[iz+i]; +s[176] += g8[ix+i] * g6[iy+i] * g17[iz+i]; +s[177] += g9[ix+i] * g4[iy+i] * g18[iz+i]; +s[178] += g8[ix+i] * g5[iy+i] * g18[iz+i]; +s[179] += g8[ix+i] * g4[iy+i] * g19[iz+i]; +s[180] += g11[ix+i] * g0[iy+i] * g20[iz+i]; +s[181] += g10[ix+i] * g1[iy+i] * g20[iz+i]; +s[182] += g10[ix+i] * g0[iy+i] * g21[iz+i]; +s[183] += g9[ix+i] * g2[iy+i] * g20[iz+i]; +s[184] += g8[ix+i] * g3[iy+i] * g20[iz+i]; +s[185] += g8[ix+i] * g2[iy+i] * g21[iz+i]; +s[186] += g9[ix+i] * g0[iy+i] * g22[iz+i]; +s[187] += g8[ix+i] * g1[iy+i] * g22[iz+i]; +s[188] += g8[ix+i] * g0[iy+i] * g23[iz+i]; +s[189] += g7[ix+i] * g8[iy+i] * g16[iz+i]; +s[190] += g6[ix+i] * g9[iy+i] * g16[iz+i]; +s[191] += g6[ix+i] * g8[iy+i] * g17[iz+i]; +s[192] += g5[ix+i] * g10[iy+i] * g16[iz+i]; +s[193] += g4[ix+i] * g11[iy+i] * g16[iz+i]; +s[194] += g4[ix+i] * g10[iy+i] * g17[iz+i]; +s[195] += g5[ix+i] * g8[iy+i] * g18[iz+i]; +s[196] += g4[ix+i] * g9[iy+i] * g18[iz+i]; +s[197] += g4[ix+i] * g8[iy+i] * g19[iz+i]; +s[198] += g3[ix+i] * g12[iy+i] * g16[iz+i]; +s[199] += g2[ix+i] * g13[iy+i] * g16[iz+i]; +s[200] += g2[ix+i] * g12[iy+i] * g17[iz+i]; +s[201] += g1[ix+i] * g14[iy+i] * g16[iz+i]; +s[202] += g0[ix+i] * g15[iy+i] * g16[iz+i]; +s[203] += g0[ix+i] * g14[iy+i] * g17[iz+i]; +s[204] += g1[ix+i] * g12[iy+i] * g18[iz+i]; +s[205] += g0[ix+i] * g13[iy+i] * g18[iz+i]; +s[206] += g0[ix+i] * g12[iy+i] * g19[iz+i]; +s[207] += g3[ix+i] * g8[iy+i] * g20[iz+i]; +s[208] += g2[ix+i] * g9[iy+i] * g20[iz+i]; +s[209] += g2[ix+i] * g8[iy+i] * g21[iz+i]; +s[210] += g1[ix+i] * g10[iy+i] * g20[iz+i]; +s[211] += g0[ix+i] * g11[iy+i] * g20[iz+i]; +s[212] += g0[ix+i] * g10[iy+i] * g21[iz+i]; +s[213] += g1[ix+i] * g8[iy+i] * g22[iz+i]; +s[214] += g0[ix+i] * g9[iy+i] * g22[iz+i]; +s[215] += g0[ix+i] * g8[iy+i] * g23[iz+i]; +s[216] += g7[ix+i] * g0[iy+i] * g24[iz+i]; +s[217] += g6[ix+i] * g1[iy+i] * g24[iz+i]; +s[218] += g6[ix+i] * g0[iy+i] * g25[iz+i]; +s[219] += g5[ix+i] * g2[iy+i] * g24[iz+i]; +s[220] += g4[ix+i] * g3[iy+i] * g24[iz+i]; +s[221] += g4[ix+i] * g2[iy+i] * g25[iz+i]; +s[222] += g5[ix+i] * g0[iy+i] * g26[iz+i]; +s[223] += g4[ix+i] * g1[iy+i] * g26[iz+i]; +s[224] += g4[ix+i] * g0[iy+i] * g27[iz+i]; +s[225] += g3[ix+i] * g4[iy+i] * g24[iz+i]; +s[226] += g2[ix+i] * g5[iy+i] * g24[iz+i]; +s[227] += g2[ix+i] * g4[iy+i] * g25[iz+i]; +s[228] += g1[ix+i] * g6[iy+i] * g24[iz+i]; +s[229] += g0[ix+i] * g7[iy+i] * g24[iz+i]; +s[230] += g0[ix+i] * g6[iy+i] * g25[iz+i]; +s[231] += g1[ix+i] * g4[iy+i] * g26[iz+i]; +s[232] += g0[ix+i] * g5[iy+i] * g26[iz+i]; +s[233] += g0[ix+i] * g4[iy+i] * g27[iz+i]; +s[234] += g3[ix+i] * g0[iy+i] * g28[iz+i]; +s[235] += g2[ix+i] * g1[iy+i] * g28[iz+i]; +s[236] += g2[ix+i] * g0[iy+i] * g29[iz+i]; +s[237] += g1[ix+i] * g2[iy+i] * g28[iz+i]; +s[238] += g0[ix+i] * g3[iy+i] * g28[iz+i]; +s[239] += g0[ix+i] * g2[iy+i] * g29[iz+i]; +s[240] += g1[ix+i] * g0[iy+i] * g30[iz+i]; +s[241] += g0[ix+i] * g1[iy+i] * g30[iz+i]; +s[242] += g0[ix+i] * g0[iy+i] * g31[iz+i]; +} +if (gout_empty) { +gout[n*48+0] = + s[104] - s[176] - s[106] + s[178]; +gout[n*48+1] = + s[167] - s[23] - s[169] + s[25]; +gout[n*48+2] = + s[14] - s[86] - s[16] + s[88]; +gout[n*48+3] = + s[5] + s[95] + s[185] - s[7] - s[97] - s[187]; +gout[n*48+4] = + s[105] - s[177] - s[101] + s[173]; +gout[n*48+5] = + s[168] - s[24] - s[164] + s[20]; +gout[n*48+6] = + s[15] - s[87] - s[11] + s[83]; +gout[n*48+7] = + s[6] + s[96] + s[186] - s[2] - s[92] - s[182]; +gout[n*48+8] = + s[100] - s[172] - s[102] + s[174]; +gout[n*48+9] = + s[163] - s[19] - s[165] + s[21]; +gout[n*48+10] = + s[10] - s[82] - s[12] + s[84]; +gout[n*48+11] = + s[1] + s[91] + s[181] - s[3] - s[93] - s[183]; +gout[n*48+12] = + s[99] - s[171] + s[103] - s[175] + s[107] - s[179]; +gout[n*48+13] = + s[162] - s[18] + s[166] - s[22] + s[170] - s[26]; +gout[n*48+14] = + s[9] - s[81] + s[13] - s[85] + s[17] - s[89]; +gout[n*48+15] = + s[0] + s[90] + s[180] + s[4] + s[94] + s[184] + s[8] + s[98] + s[188]; +gout[n*48+16] = + s[131] - s[203] - s[133] + s[205]; +gout[n*48+17] = + s[194] - s[50] - s[196] + s[52]; +gout[n*48+18] = + s[41] - s[113] - s[43] + s[115]; +gout[n*48+19] = + s[32] + s[122] + s[212] - s[34] - s[124] - s[214]; +gout[n*48+20] = + s[132] - s[204] - s[128] + s[200]; +gout[n*48+21] = + s[195] - s[51] - s[191] + s[47]; +gout[n*48+22] = + s[42] - s[114] - s[38] + s[110]; +gout[n*48+23] = + s[33] + s[123] + s[213] - s[29] - s[119] - s[209]; +gout[n*48+24] = + s[127] - s[199] - s[129] + s[201]; +gout[n*48+25] = + s[190] - s[46] - s[192] + s[48]; +gout[n*48+26] = + s[37] - s[109] - s[39] + s[111]; +gout[n*48+27] = + s[28] + s[118] + s[208] - s[30] - s[120] - s[210]; +gout[n*48+28] = + s[126] - s[198] + s[130] - s[202] + s[134] - s[206]; +gout[n*48+29] = + s[189] - s[45] + s[193] - s[49] + s[197] - s[53]; +gout[n*48+30] = + s[36] - s[108] + s[40] - s[112] + s[44] - s[116]; +gout[n*48+31] = + s[27] + s[117] + s[207] + s[31] + s[121] + s[211] + s[35] + s[125] + s[215]; +gout[n*48+32] = + s[158] - s[230] - s[160] + s[232]; +gout[n*48+33] = + s[221] - s[77] - s[223] + s[79]; +gout[n*48+34] = + s[68] - s[140] - s[70] + s[142]; +gout[n*48+35] = + s[59] + s[149] + s[239] - s[61] - s[151] - s[241]; +gout[n*48+36] = + s[159] - s[231] - s[155] + s[227]; +gout[n*48+37] = + s[222] - s[78] - s[218] + s[74]; +gout[n*48+38] = + s[69] - s[141] - s[65] + s[137]; +gout[n*48+39] = + s[60] + s[150] + s[240] - s[56] - s[146] - s[236]; +gout[n*48+40] = + s[154] - s[226] - s[156] + s[228]; +gout[n*48+41] = + s[217] - s[73] - s[219] + s[75]; +gout[n*48+42] = + s[64] - s[136] - s[66] + s[138]; +gout[n*48+43] = + s[55] + s[145] + s[235] - s[57] - s[147] - s[237]; +gout[n*48+44] = + s[153] - s[225] + s[157] - s[229] + s[161] - s[233]; +gout[n*48+45] = + s[216] - s[72] + s[220] - s[76] + s[224] - s[80]; +gout[n*48+46] = + s[63] - s[135] + s[67] - s[139] + s[71] - s[143]; +gout[n*48+47] = + s[54] + s[144] + s[234] + s[58] + s[148] + s[238] + s[62] + s[152] + s[242]; +} else { +gout[n*48+0] += + s[104] - s[176] - s[106] + s[178]; +gout[n*48+1] += + s[167] - s[23] - s[169] + s[25]; +gout[n*48+2] += + s[14] - s[86] - s[16] + s[88]; +gout[n*48+3] += + s[5] + s[95] + s[185] - s[7] - s[97] - s[187]; +gout[n*48+4] += + s[105] - s[177] - s[101] + s[173]; +gout[n*48+5] += + s[168] - s[24] - s[164] + s[20]; +gout[n*48+6] += + s[15] - s[87] - s[11] + s[83]; +gout[n*48+7] += + s[6] + s[96] + s[186] - s[2] - s[92] - s[182]; +gout[n*48+8] += + s[100] - s[172] - s[102] + s[174]; +gout[n*48+9] += + s[163] - s[19] - s[165] + s[21]; +gout[n*48+10] += + s[10] - s[82] - s[12] + s[84]; +gout[n*48+11] += + s[1] + s[91] + s[181] - s[3] - s[93] - s[183]; +gout[n*48+12] += + s[99] - s[171] + s[103] - s[175] + s[107] - s[179]; +gout[n*48+13] += + s[162] - s[18] + s[166] - s[22] + s[170] - s[26]; +gout[n*48+14] += + s[9] - s[81] + s[13] - s[85] + s[17] - s[89]; +gout[n*48+15] += + s[0] + s[90] + s[180] + s[4] + s[94] + s[184] + s[8] + s[98] + s[188]; +gout[n*48+16] += + s[131] - s[203] - s[133] + s[205]; +gout[n*48+17] += + s[194] - s[50] - s[196] + s[52]; +gout[n*48+18] += + s[41] - s[113] - s[43] + s[115]; +gout[n*48+19] += + s[32] + s[122] + s[212] - s[34] - s[124] - s[214]; +gout[n*48+20] += + s[132] - s[204] - s[128] + s[200]; +gout[n*48+21] += + s[195] - s[51] - s[191] + s[47]; +gout[n*48+22] += + s[42] - s[114] - s[38] + s[110]; +gout[n*48+23] += + s[33] + s[123] + s[213] - s[29] - s[119] - s[209]; +gout[n*48+24] += + s[127] - s[199] - s[129] + s[201]; +gout[n*48+25] += + s[190] - s[46] - s[192] + s[48]; +gout[n*48+26] += + s[37] - s[109] - s[39] + s[111]; +gout[n*48+27] += + s[28] + s[118] + s[208] - s[30] - s[120] - s[210]; +gout[n*48+28] += + s[126] - s[198] + s[130] - s[202] + s[134] - s[206]; +gout[n*48+29] += + s[189] - s[45] + s[193] - s[49] + s[197] - s[53]; +gout[n*48+30] += + s[36] - s[108] + s[40] - s[112] + s[44] - s[116]; +gout[n*48+31] += + s[27] + s[117] + s[207] + s[31] + s[121] + s[211] + s[35] + s[125] + s[215]; +gout[n*48+32] += + s[158] - s[230] - s[160] + s[232]; +gout[n*48+33] += + s[221] - s[77] - s[223] + s[79]; +gout[n*48+34] += + s[68] - s[140] - s[70] + s[142]; +gout[n*48+35] += + s[59] + s[149] + s[239] - s[61] - s[151] - s[241]; +gout[n*48+36] += + s[159] - s[231] - s[155] + s[227]; +gout[n*48+37] += + s[222] - s[78] - s[218] + s[74]; +gout[n*48+38] += + s[69] - s[141] - s[65] + s[137]; +gout[n*48+39] += + s[60] + s[150] + s[240] - s[56] - s[146] - s[236]; +gout[n*48+40] += + s[154] - s[226] - s[156] + s[228]; +gout[n*48+41] += + s[217] - s[73] - s[219] + s[75]; +gout[n*48+42] += + s[64] - s[136] - s[66] + s[138]; +gout[n*48+43] += + s[55] + s[145] + s[235] - s[57] - s[147] - s[237]; +gout[n*48+44] += + s[153] - s[225] + s[157] - s[229] + s[161] - s[233]; +gout[n*48+45] += + s[216] - s[72] + s[220] - s[76] + s[224] - s[80]; +gout[n*48+46] += + s[63] - s[135] + s[67] - s[139] + s[71] - s[143]; +gout[n*48+47] += + s[54] + s[144] + s[234] + s[58] + s[148] + s[238] + s[62] + s[152] + s[242]; +}}} +void int2e_ipspsp1spsp2_optimizer(CINTOpt **opt, FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env) { +FINT ng[] = {2, 1, 1, 1, 5, 4, 4, 3}; +CINTall_2e_optimizer(opt, ng, atm, natm, bas, nbas, env); +} +CACHE_SIZE_T int2e_ipspsp1spsp2_cart(dtype *out, FINT *dims, FINT *shls, +FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env, CINTOpt *opt, dtype *cache) { +FINT ng[] = {2, 1, 1, 1, 5, 4, 4, 3}; +CINTEnvVars envs; +CINTinit_int2e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env); +envs.f_gout = &CINTgout2e_int2e_ipspsp1spsp2; +return CINT2e_drv(out, dims, &envs, opt, cache, &c2s_cart_2e1); +} +CACHE_SIZE_T int2e_ipspsp1spsp2_sph(dtype *out, FINT *dims, FINT *shls, +FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env, CINTOpt *opt, dtype *cache) { +FINT ng[] = {2, 1, 1, 1, 5, 4, 4, 3}; +CINTEnvVars envs; +CINTinit_int2e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env); +envs.f_gout = &CINTgout2e_int2e_ipspsp1spsp2; +return CINT2e_drv(out, dims, &envs, opt, cache, &c2s_sph_2e1); +} +CACHE_SIZE_T int2e_ipspsp1spsp2_spinor(dtype *out, FINT *dims, FINT *shls, +FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env, CINTOpt *opt, dtype *cache) { +FINT ng[] = {2, 1, 1, 1, 5, 4, 4, 3}; +CINTEnvVars envs; +CINTinit_int2e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env); +envs.f_gout = &CINTgout2e_int2e_ipspsp1spsp2; +return CINT2e_spinor_drv(out, dims, &envs, opt, cache, &c2s_si_2e1, &c2s_si_2e2); +} +ALL_CINT(int2e_ipspsp1spsp2) +ALL_CINT_FORTRAN_(int2e_ipspsp1spsp2) + +void CINTgout2e_int2e_ipsrsr1(dtype *gout, +dtype *g, FINT *idx, CINTEnvVars *envs, FINT gout_empty) { +FINT nf = envs->nf; +FINT nrys_roots = envs->nrys_roots; +FINT ix, iy, iz, i, n; +dtype *g0 = g; +dtype *g1 = g0 + envs->g_size * 3; +dtype *g2 = g1 + envs->g_size * 3; +dtype *g3 = g2 + envs->g_size * 3; +dtype *g4 = g3 + envs->g_size * 3; +dtype *g5 = g4 + envs->g_size * 3; +dtype *g6 = g5 + envs->g_size * 3; +dtype *g7 = g6 + envs->g_size * 3; +G2E_R_J(g1, g0, envs->i_l+2, envs->j_l+0, envs->k_l, envs->l_l); +G2E_D_I(g2, g0, envs->i_l+1, envs->j_l, envs->k_l, envs->l_l); +G2E_D_I(g3, g1, envs->i_l+1, envs->j_l, envs->k_l, envs->l_l); +G2E_R_I(g4, g0, envs->i_l+0, envs->j_l, envs->k_l, envs->l_l); +G2E_R_I(g5, g1, envs->i_l+0, envs->j_l, envs->k_l, envs->l_l); +G2E_R_I(g6, g2, envs->i_l+0, envs->j_l, envs->k_l, envs->l_l); +G2E_R_I(g7, g3, envs->i_l+0, envs->j_l, envs->k_l, envs->l_l); +dtype s[27]; +for (n = 0; n < nf; n++) { +ix = idx[0+n*3]; +iy = idx[1+n*3]; +iz = idx[2+n*3]; +for (i = 0; i < 27; i++) { s[i] = 0; } +for (i = 0; i < nrys_roots; i++) { +s[0] += g7[ix+i] * g0[iy+i] * g0[iz+i]; +s[1] += g6[ix+i] * g1[iy+i] * g0[iz+i]; +s[2] += g6[ix+i] * g0[iy+i] * g1[iz+i]; +s[3] += g5[ix+i] * g2[iy+i] * g0[iz+i]; +s[4] += g4[ix+i] * g3[iy+i] * g0[iz+i]; +s[5] += g4[ix+i] * g2[iy+i] * g1[iz+i]; +s[6] += g5[ix+i] * g0[iy+i] * g2[iz+i]; +s[7] += g4[ix+i] * g1[iy+i] * g2[iz+i]; +s[8] += g4[ix+i] * g0[iy+i] * g3[iz+i]; +s[9] += g3[ix+i] * g4[iy+i] * g0[iz+i]; +s[10] += g2[ix+i] * g5[iy+i] * g0[iz+i]; +s[11] += g2[ix+i] * g4[iy+i] * g1[iz+i]; +s[12] += g1[ix+i] * g6[iy+i] * g0[iz+i]; +s[13] += g0[ix+i] * g7[iy+i] * g0[iz+i]; +s[14] += g0[ix+i] * g6[iy+i] * g1[iz+i]; +s[15] += g1[ix+i] * g4[iy+i] * g2[iz+i]; +s[16] += g0[ix+i] * g5[iy+i] * g2[iz+i]; +s[17] += g0[ix+i] * g4[iy+i] * g3[iz+i]; +s[18] += g3[ix+i] * g0[iy+i] * g4[iz+i]; +s[19] += g2[ix+i] * g1[iy+i] * g4[iz+i]; +s[20] += g2[ix+i] * g0[iy+i] * g5[iz+i]; +s[21] += g1[ix+i] * g2[iy+i] * g4[iz+i]; +s[22] += g0[ix+i] * g3[iy+i] * g4[iz+i]; +s[23] += g0[ix+i] * g2[iy+i] * g5[iz+i]; +s[24] += g1[ix+i] * g0[iy+i] * g6[iz+i]; +s[25] += g0[ix+i] * g1[iy+i] * g6[iz+i]; +s[26] += g0[ix+i] * g0[iy+i] * g7[iz+i]; +} +if (gout_empty) { +gout[n*12+0] = + s[11] - s[19]; +gout[n*12+1] = + s[18] - s[2]; +gout[n*12+2] = + s[1] - s[9]; +gout[n*12+3] = + s[0] + s[10] + s[20]; +gout[n*12+4] = + s[14] - s[22]; +gout[n*12+5] = + s[21] - s[5]; +gout[n*12+6] = + s[4] - s[12]; +gout[n*12+7] = + s[3] + s[13] + s[23]; +gout[n*12+8] = + s[17] - s[25]; +gout[n*12+9] = + s[24] - s[8]; +gout[n*12+10] = + s[7] - s[15]; +gout[n*12+11] = + s[6] + s[16] + s[26]; +} else { +gout[n*12+0] += + s[11] - s[19]; +gout[n*12+1] += + s[18] - s[2]; +gout[n*12+2] += + s[1] - s[9]; +gout[n*12+3] += + s[0] + s[10] + s[20]; +gout[n*12+4] += + s[14] - s[22]; +gout[n*12+5] += + s[21] - s[5]; +gout[n*12+6] += + s[4] - s[12]; +gout[n*12+7] += + s[3] + s[13] + s[23]; +gout[n*12+8] += + s[17] - s[25]; +gout[n*12+9] += + s[24] - s[8]; +gout[n*12+10] += + s[7] - s[15]; +gout[n*12+11] += + s[6] + s[16] + s[26]; +}}} +void int2e_ipsrsr1_optimizer(CINTOpt **opt, FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env) { +FINT ng[] = {2, 1, 0, 0, 3, 4, 1, 3}; +CINTall_2e_optimizer(opt, ng, atm, natm, bas, nbas, env); +} +CACHE_SIZE_T int2e_ipsrsr1_cart(dtype *out, FINT *dims, FINT *shls, +FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env, CINTOpt *opt, dtype *cache) { +FINT ng[] = {2, 1, 0, 0, 3, 4, 1, 3}; +CINTEnvVars envs; +CINTinit_int2e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env); +envs.f_gout = &CINTgout2e_int2e_ipsrsr1; +return CINT2e_drv(out, dims, &envs, opt, cache, &c2s_cart_2e1); +} +CACHE_SIZE_T int2e_ipsrsr1_sph(dtype *out, FINT *dims, FINT *shls, +FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env, CINTOpt *opt, dtype *cache) { +FINT ng[] = {2, 1, 0, 0, 3, 4, 1, 3}; +CINTEnvVars envs; +CINTinit_int2e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env); +envs.f_gout = &CINTgout2e_int2e_ipsrsr1; +return CINT2e_drv(out, dims, &envs, opt, cache, &c2s_sph_2e1); +} +CACHE_SIZE_T int2e_ipsrsr1_spinor(dtype *out, FINT *dims, FINT *shls, +FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env, CINTOpt *opt, dtype *cache) { +FINT ng[] = {2, 1, 0, 0, 3, 4, 1, 3}; +CINTEnvVars envs; +CINTinit_int2e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env); +envs.f_gout = &CINTgout2e_int2e_ipsrsr1; +return CINT2e_spinor_drv(out, dims, &envs, opt, cache, &c2s_si_2e1, &c2s_sf_2e2); +} +ALL_CINT(int2e_ipsrsr1) +ALL_CINT_FORTRAN_(int2e_ipsrsr1) + +void CINTgout2e_int2e_ip1srsr2(dtype *gout, +dtype *g, FINT *idx, CINTEnvVars *envs, FINT gout_empty) { +FINT nf = envs->nf; +FINT nrys_roots = envs->nrys_roots; +FINT ix, iy, iz, i, n; +dtype *g0 = g; +dtype *g1 = g0 + envs->g_size * 3; +dtype *g2 = g1 + envs->g_size * 3; +dtype *g3 = g2 + envs->g_size * 3; +dtype *g4 = g3 + envs->g_size * 3; +dtype *g5 = g4 + envs->g_size * 3; +dtype *g6 = g5 + envs->g_size * 3; +dtype *g7 = g6 + envs->g_size * 3; +G2E_R_L(g1, g0, envs->i_l+1, envs->j_l+0, envs->k_l+1, envs->l_l+0); +G2E_R_K(g2, g0, envs->i_l+1, envs->j_l+0, envs->k_l+0, envs->l_l); +G2E_R_K(g3, g1, envs->i_l+1, envs->j_l+0, envs->k_l+0, envs->l_l); +G2E_D_I(g4, g0, envs->i_l+0, envs->j_l, envs->k_l, envs->l_l); +G2E_D_I(g5, g1, envs->i_l+0, envs->j_l, envs->k_l, envs->l_l); +G2E_D_I(g6, g2, envs->i_l+0, envs->j_l, envs->k_l, envs->l_l); +G2E_D_I(g7, g3, envs->i_l+0, envs->j_l, envs->k_l, envs->l_l); +dtype s[27]; +for (n = 0; n < nf; n++) { +ix = idx[0+n*3]; +iy = idx[1+n*3]; +iz = idx[2+n*3]; +for (i = 0; i < 27; i++) { s[i] = 0; } +for (i = 0; i < nrys_roots; i++) { +s[0] += g7[ix+i] * g0[iy+i] * g0[iz+i]; +s[1] += g6[ix+i] * g1[iy+i] * g0[iz+i]; +s[2] += g6[ix+i] * g0[iy+i] * g1[iz+i]; +s[3] += g5[ix+i] * g2[iy+i] * g0[iz+i]; +s[4] += g4[ix+i] * g3[iy+i] * g0[iz+i]; +s[5] += g4[ix+i] * g2[iy+i] * g1[iz+i]; +s[6] += g5[ix+i] * g0[iy+i] * g2[iz+i]; +s[7] += g4[ix+i] * g1[iy+i] * g2[iz+i]; +s[8] += g4[ix+i] * g0[iy+i] * g3[iz+i]; +s[9] += g3[ix+i] * g4[iy+i] * g0[iz+i]; +s[10] += g2[ix+i] * g5[iy+i] * g0[iz+i]; +s[11] += g2[ix+i] * g4[iy+i] * g1[iz+i]; +s[12] += g1[ix+i] * g6[iy+i] * g0[iz+i]; +s[13] += g0[ix+i] * g7[iy+i] * g0[iz+i]; +s[14] += g0[ix+i] * g6[iy+i] * g1[iz+i]; +s[15] += g1[ix+i] * g4[iy+i] * g2[iz+i]; +s[16] += g0[ix+i] * g5[iy+i] * g2[iz+i]; +s[17] += g0[ix+i] * g4[iy+i] * g3[iz+i]; +s[18] += g3[ix+i] * g0[iy+i] * g4[iz+i]; +s[19] += g2[ix+i] * g1[iy+i] * g4[iz+i]; +s[20] += g2[ix+i] * g0[iy+i] * g5[iz+i]; +s[21] += g1[ix+i] * g2[iy+i] * g4[iz+i]; +s[22] += g0[ix+i] * g3[iy+i] * g4[iz+i]; +s[23] += g0[ix+i] * g2[iy+i] * g5[iz+i]; +s[24] += g1[ix+i] * g0[iy+i] * g6[iz+i]; +s[25] += g0[ix+i] * g1[iy+i] * g6[iz+i]; +s[26] += g0[ix+i] * g0[iy+i] * g7[iz+i]; +} +if (gout_empty) { +gout[n*12+0] = + s[5] - s[7]; +gout[n*12+1] = + s[6] - s[2]; +gout[n*12+2] = + s[1] - s[3]; +gout[n*12+3] = + s[0] + s[4] + s[8]; +gout[n*12+4] = + s[14] - s[16]; +gout[n*12+5] = + s[15] - s[11]; +gout[n*12+6] = + s[10] - s[12]; +gout[n*12+7] = + s[9] + s[13] + s[17]; +gout[n*12+8] = + s[23] - s[25]; +gout[n*12+9] = + s[24] - s[20]; +gout[n*12+10] = + s[19] - s[21]; +gout[n*12+11] = + s[18] + s[22] + s[26]; +} else { +gout[n*12+0] += + s[5] - s[7]; +gout[n*12+1] += + s[6] - s[2]; +gout[n*12+2] += + s[1] - s[3]; +gout[n*12+3] += + s[0] + s[4] + s[8]; +gout[n*12+4] += + s[14] - s[16]; +gout[n*12+5] += + s[15] - s[11]; +gout[n*12+6] += + s[10] - s[12]; +gout[n*12+7] += + s[9] + s[13] + s[17]; +gout[n*12+8] += + s[23] - s[25]; +gout[n*12+9] += + s[24] - s[20]; +gout[n*12+10] += + s[19] - s[21]; +gout[n*12+11] += + s[18] + s[22] + s[26]; +}}} +void int2e_ip1srsr2_optimizer(CINTOpt **opt, FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env) { +FINT ng[] = {1, 0, 1, 1, 3, 1, 4, 3}; +CINTall_2e_optimizer(opt, ng, atm, natm, bas, nbas, env); +} +CACHE_SIZE_T int2e_ip1srsr2_cart(dtype *out, FINT *dims, FINT *shls, +FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env, CINTOpt *opt, dtype *cache) { +FINT ng[] = {1, 0, 1, 1, 3, 1, 4, 3}; +CINTEnvVars envs; +CINTinit_int2e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env); +envs.f_gout = &CINTgout2e_int2e_ip1srsr2; +return CINT2e_drv(out, dims, &envs, opt, cache, &c2s_cart_2e1); +} +CACHE_SIZE_T int2e_ip1srsr2_sph(dtype *out, FINT *dims, FINT *shls, +FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env, CINTOpt *opt, dtype *cache) { +FINT ng[] = {1, 0, 1, 1, 3, 1, 4, 3}; +CINTEnvVars envs; +CINTinit_int2e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env); +envs.f_gout = &CINTgout2e_int2e_ip1srsr2; +return CINT2e_drv(out, dims, &envs, opt, cache, &c2s_sph_2e1); +} +CACHE_SIZE_T int2e_ip1srsr2_spinor(dtype *out, FINT *dims, FINT *shls, +FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env, CINTOpt *opt, dtype *cache) { +FINT ng[] = {1, 0, 1, 1, 3, 1, 4, 3}; +CINTEnvVars envs; +CINTinit_int2e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env); +envs.f_gout = &CINTgout2e_int2e_ip1srsr2; +return CINT2e_spinor_drv(out, dims, &envs, opt, cache, &c2s_sf_2e1, &c2s_si_2e2); +} +ALL_CINT(int2e_ip1srsr2) +ALL_CINT_FORTRAN_(int2e_ip1srsr2) + +void CINTgout2e_int2e_ipsrsr1srsr2(dtype *gout, +dtype *g, FINT *idx, CINTEnvVars *envs, FINT gout_empty) { +FINT nf = envs->nf; +FINT nrys_roots = envs->nrys_roots; +FINT ix, iy, iz, i, n; +dtype *g0 = g; +dtype *g1 = g0 + envs->g_size * 3; +dtype *g2 = g1 + envs->g_size * 3; +dtype *g3 = g2 + envs->g_size * 3; +dtype *g4 = g3 + envs->g_size * 3; +dtype *g5 = g4 + envs->g_size * 3; +dtype *g6 = g5 + envs->g_size * 3; +dtype *g7 = g6 + envs->g_size * 3; +dtype *g8 = g7 + envs->g_size * 3; +dtype *g9 = g8 + envs->g_size * 3; +dtype *g10 = g9 + envs->g_size * 3; +dtype *g11 = g10 + envs->g_size * 3; +dtype *g12 = g11 + envs->g_size * 3; +dtype *g13 = g12 + envs->g_size * 3; +dtype *g14 = g13 + envs->g_size * 3; +dtype *g15 = g14 + envs->g_size * 3; +dtype *g16 = g15 + envs->g_size * 3; +dtype *g17 = g16 + envs->g_size * 3; +dtype *g18 = g17 + envs->g_size * 3; +dtype *g19 = g18 + envs->g_size * 3; +dtype *g20 = g19 + envs->g_size * 3; +dtype *g21 = g20 + envs->g_size * 3; +dtype *g22 = g21 + envs->g_size * 3; +dtype *g23 = g22 + envs->g_size * 3; +dtype *g24 = g23 + envs->g_size * 3; +dtype *g25 = g24 + envs->g_size * 3; +dtype *g26 = g25 + envs->g_size * 3; +dtype *g27 = g26 + envs->g_size * 3; +dtype *g28 = g27 + envs->g_size * 3; +dtype *g29 = g28 + envs->g_size * 3; +dtype *g30 = g29 + envs->g_size * 3; +dtype *g31 = g30 + envs->g_size * 3; +G2E_R_L(g1, g0, envs->i_l+2, envs->j_l+1, envs->k_l+1, envs->l_l+0); +G2E_R_K(g2, g0, envs->i_l+2, envs->j_l+1, envs->k_l+0, envs->l_l); +G2E_R_K(g3, g1, envs->i_l+2, envs->j_l+1, envs->k_l+0, envs->l_l); +G2E_R_J(g4, g0, envs->i_l+2, envs->j_l+0, envs->k_l, envs->l_l); +G2E_R_J(g5, g1, envs->i_l+2, envs->j_l+0, envs->k_l, envs->l_l); +G2E_R_J(g6, g2, envs->i_l+2, envs->j_l+0, envs->k_l, envs->l_l); +G2E_R_J(g7, g3, envs->i_l+2, envs->j_l+0, envs->k_l, envs->l_l); +G2E_D_I(g8, g0, envs->i_l+1, envs->j_l, envs->k_l, envs->l_l); +G2E_D_I(g9, g1, envs->i_l+1, envs->j_l, envs->k_l, envs->l_l); +G2E_D_I(g10, g2, envs->i_l+1, envs->j_l, envs->k_l, envs->l_l); +G2E_D_I(g11, g3, envs->i_l+1, envs->j_l, envs->k_l, envs->l_l); +G2E_D_I(g12, g4, envs->i_l+1, envs->j_l, envs->k_l, envs->l_l); +G2E_D_I(g13, g5, envs->i_l+1, envs->j_l, envs->k_l, envs->l_l); +G2E_D_I(g14, g6, envs->i_l+1, envs->j_l, envs->k_l, envs->l_l); +G2E_D_I(g15, g7, envs->i_l+1, envs->j_l, envs->k_l, envs->l_l); +G2E_R_I(g16, g0, envs->i_l+0, envs->j_l, envs->k_l, envs->l_l); +G2E_R_I(g17, g1, envs->i_l+0, envs->j_l, envs->k_l, envs->l_l); +G2E_R_I(g18, g2, envs->i_l+0, envs->j_l, envs->k_l, envs->l_l); +G2E_R_I(g19, g3, envs->i_l+0, envs->j_l, envs->k_l, envs->l_l); +G2E_R_I(g20, g4, envs->i_l+0, envs->j_l, envs->k_l, envs->l_l); +G2E_R_I(g21, g5, envs->i_l+0, envs->j_l, envs->k_l, envs->l_l); +G2E_R_I(g22, g6, envs->i_l+0, envs->j_l, envs->k_l, envs->l_l); +G2E_R_I(g23, g7, envs->i_l+0, envs->j_l, envs->k_l, envs->l_l); +G2E_R_I(g24, g8, envs->i_l+0, envs->j_l, envs->k_l, envs->l_l); +G2E_R_I(g25, g9, envs->i_l+0, envs->j_l, envs->k_l, envs->l_l); +G2E_R_I(g26, g10, envs->i_l+0, envs->j_l, envs->k_l, envs->l_l); +G2E_R_I(g27, g11, envs->i_l+0, envs->j_l, envs->k_l, envs->l_l); +G2E_R_I(g28, g12, envs->i_l+0, envs->j_l, envs->k_l, envs->l_l); +G2E_R_I(g29, g13, envs->i_l+0, envs->j_l, envs->k_l, envs->l_l); +G2E_R_I(g30, g14, envs->i_l+0, envs->j_l, envs->k_l, envs->l_l); +G2E_R_I(g31, g15, envs->i_l+0, envs->j_l, envs->k_l, envs->l_l); +dtype s[243]; +for (n = 0; n < nf; n++) { +ix = idx[0+n*3]; +iy = idx[1+n*3]; +iz = idx[2+n*3]; +for (i = 0; i < 243; i++) { s[i] = 0; } +for (i = 0; i < nrys_roots; i++) { +s[0] += g31[ix+i] * g0[iy+i] * g0[iz+i]; +s[1] += g30[ix+i] * g1[iy+i] * g0[iz+i]; +s[2] += g30[ix+i] * g0[iy+i] * g1[iz+i]; +s[3] += g29[ix+i] * g2[iy+i] * g0[iz+i]; +s[4] += g28[ix+i] * g3[iy+i] * g0[iz+i]; +s[5] += g28[ix+i] * g2[iy+i] * g1[iz+i]; +s[6] += g29[ix+i] * g0[iy+i] * g2[iz+i]; +s[7] += g28[ix+i] * g1[iy+i] * g2[iz+i]; +s[8] += g28[ix+i] * g0[iy+i] * g3[iz+i]; +s[9] += g27[ix+i] * g4[iy+i] * g0[iz+i]; +s[10] += g26[ix+i] * g5[iy+i] * g0[iz+i]; +s[11] += g26[ix+i] * g4[iy+i] * g1[iz+i]; +s[12] += g25[ix+i] * g6[iy+i] * g0[iz+i]; +s[13] += g24[ix+i] * g7[iy+i] * g0[iz+i]; +s[14] += g24[ix+i] * g6[iy+i] * g1[iz+i]; +s[15] += g25[ix+i] * g4[iy+i] * g2[iz+i]; +s[16] += g24[ix+i] * g5[iy+i] * g2[iz+i]; +s[17] += g24[ix+i] * g4[iy+i] * g3[iz+i]; +s[18] += g27[ix+i] * g0[iy+i] * g4[iz+i]; +s[19] += g26[ix+i] * g1[iy+i] * g4[iz+i]; +s[20] += g26[ix+i] * g0[iy+i] * g5[iz+i]; +s[21] += g25[ix+i] * g2[iy+i] * g4[iz+i]; +s[22] += g24[ix+i] * g3[iy+i] * g4[iz+i]; +s[23] += g24[ix+i] * g2[iy+i] * g5[iz+i]; +s[24] += g25[ix+i] * g0[iy+i] * g6[iz+i]; +s[25] += g24[ix+i] * g1[iy+i] * g6[iz+i]; +s[26] += g24[ix+i] * g0[iy+i] * g7[iz+i]; +s[27] += g23[ix+i] * g8[iy+i] * g0[iz+i]; +s[28] += g22[ix+i] * g9[iy+i] * g0[iz+i]; +s[29] += g22[ix+i] * g8[iy+i] * g1[iz+i]; +s[30] += g21[ix+i] * g10[iy+i] * g0[iz+i]; +s[31] += g20[ix+i] * g11[iy+i] * g0[iz+i]; +s[32] += g20[ix+i] * g10[iy+i] * g1[iz+i]; +s[33] += g21[ix+i] * g8[iy+i] * g2[iz+i]; +s[34] += g20[ix+i] * g9[iy+i] * g2[iz+i]; +s[35] += g20[ix+i] * g8[iy+i] * g3[iz+i]; +s[36] += g19[ix+i] * g12[iy+i] * g0[iz+i]; +s[37] += g18[ix+i] * g13[iy+i] * g0[iz+i]; +s[38] += g18[ix+i] * g12[iy+i] * g1[iz+i]; +s[39] += g17[ix+i] * g14[iy+i] * g0[iz+i]; +s[40] += g16[ix+i] * g15[iy+i] * g0[iz+i]; +s[41] += g16[ix+i] * g14[iy+i] * g1[iz+i]; +s[42] += g17[ix+i] * g12[iy+i] * g2[iz+i]; +s[43] += g16[ix+i] * g13[iy+i] * g2[iz+i]; +s[44] += g16[ix+i] * g12[iy+i] * g3[iz+i]; +s[45] += g19[ix+i] * g8[iy+i] * g4[iz+i]; +s[46] += g18[ix+i] * g9[iy+i] * g4[iz+i]; +s[47] += g18[ix+i] * g8[iy+i] * g5[iz+i]; +s[48] += g17[ix+i] * g10[iy+i] * g4[iz+i]; +s[49] += g16[ix+i] * g11[iy+i] * g4[iz+i]; +s[50] += g16[ix+i] * g10[iy+i] * g5[iz+i]; +s[51] += g17[ix+i] * g8[iy+i] * g6[iz+i]; +s[52] += g16[ix+i] * g9[iy+i] * g6[iz+i]; +s[53] += g16[ix+i] * g8[iy+i] * g7[iz+i]; +s[54] += g23[ix+i] * g0[iy+i] * g8[iz+i]; +s[55] += g22[ix+i] * g1[iy+i] * g8[iz+i]; +s[56] += g22[ix+i] * g0[iy+i] * g9[iz+i]; +s[57] += g21[ix+i] * g2[iy+i] * g8[iz+i]; +s[58] += g20[ix+i] * g3[iy+i] * g8[iz+i]; +s[59] += g20[ix+i] * g2[iy+i] * g9[iz+i]; +s[60] += g21[ix+i] * g0[iy+i] * g10[iz+i]; +s[61] += g20[ix+i] * g1[iy+i] * g10[iz+i]; +s[62] += g20[ix+i] * g0[iy+i] * g11[iz+i]; +s[63] += g19[ix+i] * g4[iy+i] * g8[iz+i]; +s[64] += g18[ix+i] * g5[iy+i] * g8[iz+i]; +s[65] += g18[ix+i] * g4[iy+i] * g9[iz+i]; +s[66] += g17[ix+i] * g6[iy+i] * g8[iz+i]; +s[67] += g16[ix+i] * g7[iy+i] * g8[iz+i]; +s[68] += g16[ix+i] * g6[iy+i] * g9[iz+i]; +s[69] += g17[ix+i] * g4[iy+i] * g10[iz+i]; +s[70] += g16[ix+i] * g5[iy+i] * g10[iz+i]; +s[71] += g16[ix+i] * g4[iy+i] * g11[iz+i]; +s[72] += g19[ix+i] * g0[iy+i] * g12[iz+i]; +s[73] += g18[ix+i] * g1[iy+i] * g12[iz+i]; +s[74] += g18[ix+i] * g0[iy+i] * g13[iz+i]; +s[75] += g17[ix+i] * g2[iy+i] * g12[iz+i]; +s[76] += g16[ix+i] * g3[iy+i] * g12[iz+i]; +s[77] += g16[ix+i] * g2[iy+i] * g13[iz+i]; +s[78] += g17[ix+i] * g0[iy+i] * g14[iz+i]; +s[79] += g16[ix+i] * g1[iy+i] * g14[iz+i]; +s[80] += g16[ix+i] * g0[iy+i] * g15[iz+i]; +s[81] += g15[ix+i] * g16[iy+i] * g0[iz+i]; +s[82] += g14[ix+i] * g17[iy+i] * g0[iz+i]; +s[83] += g14[ix+i] * g16[iy+i] * g1[iz+i]; +s[84] += g13[ix+i] * g18[iy+i] * g0[iz+i]; +s[85] += g12[ix+i] * g19[iy+i] * g0[iz+i]; +s[86] += g12[ix+i] * g18[iy+i] * g1[iz+i]; +s[87] += g13[ix+i] * g16[iy+i] * g2[iz+i]; +s[88] += g12[ix+i] * g17[iy+i] * g2[iz+i]; +s[89] += g12[ix+i] * g16[iy+i] * g3[iz+i]; +s[90] += g11[ix+i] * g20[iy+i] * g0[iz+i]; +s[91] += g10[ix+i] * g21[iy+i] * g0[iz+i]; +s[92] += g10[ix+i] * g20[iy+i] * g1[iz+i]; +s[93] += g9[ix+i] * g22[iy+i] * g0[iz+i]; +s[94] += g8[ix+i] * g23[iy+i] * g0[iz+i]; +s[95] += g8[ix+i] * g22[iy+i] * g1[iz+i]; +s[96] += g9[ix+i] * g20[iy+i] * g2[iz+i]; +s[97] += g8[ix+i] * g21[iy+i] * g2[iz+i]; +s[98] += g8[ix+i] * g20[iy+i] * g3[iz+i]; +s[99] += g11[ix+i] * g16[iy+i] * g4[iz+i]; +s[100] += g10[ix+i] * g17[iy+i] * g4[iz+i]; +s[101] += g10[ix+i] * g16[iy+i] * g5[iz+i]; +s[102] += g9[ix+i] * g18[iy+i] * g4[iz+i]; +s[103] += g8[ix+i] * g19[iy+i] * g4[iz+i]; +s[104] += g8[ix+i] * g18[iy+i] * g5[iz+i]; +s[105] += g9[ix+i] * g16[iy+i] * g6[iz+i]; +s[106] += g8[ix+i] * g17[iy+i] * g6[iz+i]; +s[107] += g8[ix+i] * g16[iy+i] * g7[iz+i]; +s[108] += g7[ix+i] * g24[iy+i] * g0[iz+i]; +s[109] += g6[ix+i] * g25[iy+i] * g0[iz+i]; +s[110] += g6[ix+i] * g24[iy+i] * g1[iz+i]; +s[111] += g5[ix+i] * g26[iy+i] * g0[iz+i]; +s[112] += g4[ix+i] * g27[iy+i] * g0[iz+i]; +s[113] += g4[ix+i] * g26[iy+i] * g1[iz+i]; +s[114] += g5[ix+i] * g24[iy+i] * g2[iz+i]; +s[115] += g4[ix+i] * g25[iy+i] * g2[iz+i]; +s[116] += g4[ix+i] * g24[iy+i] * g3[iz+i]; +s[117] += g3[ix+i] * g28[iy+i] * g0[iz+i]; +s[118] += g2[ix+i] * g29[iy+i] * g0[iz+i]; +s[119] += g2[ix+i] * g28[iy+i] * g1[iz+i]; +s[120] += g1[ix+i] * g30[iy+i] * g0[iz+i]; +s[121] += g0[ix+i] * g31[iy+i] * g0[iz+i]; +s[122] += g0[ix+i] * g30[iy+i] * g1[iz+i]; +s[123] += g1[ix+i] * g28[iy+i] * g2[iz+i]; +s[124] += g0[ix+i] * g29[iy+i] * g2[iz+i]; +s[125] += g0[ix+i] * g28[iy+i] * g3[iz+i]; +s[126] += g3[ix+i] * g24[iy+i] * g4[iz+i]; +s[127] += g2[ix+i] * g25[iy+i] * g4[iz+i]; +s[128] += g2[ix+i] * g24[iy+i] * g5[iz+i]; +s[129] += g1[ix+i] * g26[iy+i] * g4[iz+i]; +s[130] += g0[ix+i] * g27[iy+i] * g4[iz+i]; +s[131] += g0[ix+i] * g26[iy+i] * g5[iz+i]; +s[132] += g1[ix+i] * g24[iy+i] * g6[iz+i]; +s[133] += g0[ix+i] * g25[iy+i] * g6[iz+i]; +s[134] += g0[ix+i] * g24[iy+i] * g7[iz+i]; +s[135] += g7[ix+i] * g16[iy+i] * g8[iz+i]; +s[136] += g6[ix+i] * g17[iy+i] * g8[iz+i]; +s[137] += g6[ix+i] * g16[iy+i] * g9[iz+i]; +s[138] += g5[ix+i] * g18[iy+i] * g8[iz+i]; +s[139] += g4[ix+i] * g19[iy+i] * g8[iz+i]; +s[140] += g4[ix+i] * g18[iy+i] * g9[iz+i]; +s[141] += g5[ix+i] * g16[iy+i] * g10[iz+i]; +s[142] += g4[ix+i] * g17[iy+i] * g10[iz+i]; +s[143] += g4[ix+i] * g16[iy+i] * g11[iz+i]; +s[144] += g3[ix+i] * g20[iy+i] * g8[iz+i]; +s[145] += g2[ix+i] * g21[iy+i] * g8[iz+i]; +s[146] += g2[ix+i] * g20[iy+i] * g9[iz+i]; +s[147] += g1[ix+i] * g22[iy+i] * g8[iz+i]; +s[148] += g0[ix+i] * g23[iy+i] * g8[iz+i]; +s[149] += g0[ix+i] * g22[iy+i] * g9[iz+i]; +s[150] += g1[ix+i] * g20[iy+i] * g10[iz+i]; +s[151] += g0[ix+i] * g21[iy+i] * g10[iz+i]; +s[152] += g0[ix+i] * g20[iy+i] * g11[iz+i]; +s[153] += g3[ix+i] * g16[iy+i] * g12[iz+i]; +s[154] += g2[ix+i] * g17[iy+i] * g12[iz+i]; +s[155] += g2[ix+i] * g16[iy+i] * g13[iz+i]; +s[156] += g1[ix+i] * g18[iy+i] * g12[iz+i]; +s[157] += g0[ix+i] * g19[iy+i] * g12[iz+i]; +s[158] += g0[ix+i] * g18[iy+i] * g13[iz+i]; +s[159] += g1[ix+i] * g16[iy+i] * g14[iz+i]; +s[160] += g0[ix+i] * g17[iy+i] * g14[iz+i]; +s[161] += g0[ix+i] * g16[iy+i] * g15[iz+i]; +s[162] += g15[ix+i] * g0[iy+i] * g16[iz+i]; +s[163] += g14[ix+i] * g1[iy+i] * g16[iz+i]; +s[164] += g14[ix+i] * g0[iy+i] * g17[iz+i]; +s[165] += g13[ix+i] * g2[iy+i] * g16[iz+i]; +s[166] += g12[ix+i] * g3[iy+i] * g16[iz+i]; +s[167] += g12[ix+i] * g2[iy+i] * g17[iz+i]; +s[168] += g13[ix+i] * g0[iy+i] * g18[iz+i]; +s[169] += g12[ix+i] * g1[iy+i] * g18[iz+i]; +s[170] += g12[ix+i] * g0[iy+i] * g19[iz+i]; +s[171] += g11[ix+i] * g4[iy+i] * g16[iz+i]; +s[172] += g10[ix+i] * g5[iy+i] * g16[iz+i]; +s[173] += g10[ix+i] * g4[iy+i] * g17[iz+i]; +s[174] += g9[ix+i] * g6[iy+i] * g16[iz+i]; +s[175] += g8[ix+i] * g7[iy+i] * g16[iz+i]; +s[176] += g8[ix+i] * g6[iy+i] * g17[iz+i]; +s[177] += g9[ix+i] * g4[iy+i] * g18[iz+i]; +s[178] += g8[ix+i] * g5[iy+i] * g18[iz+i]; +s[179] += g8[ix+i] * g4[iy+i] * g19[iz+i]; +s[180] += g11[ix+i] * g0[iy+i] * g20[iz+i]; +s[181] += g10[ix+i] * g1[iy+i] * g20[iz+i]; +s[182] += g10[ix+i] * g0[iy+i] * g21[iz+i]; +s[183] += g9[ix+i] * g2[iy+i] * g20[iz+i]; +s[184] += g8[ix+i] * g3[iy+i] * g20[iz+i]; +s[185] += g8[ix+i] * g2[iy+i] * g21[iz+i]; +s[186] += g9[ix+i] * g0[iy+i] * g22[iz+i]; +s[187] += g8[ix+i] * g1[iy+i] * g22[iz+i]; +s[188] += g8[ix+i] * g0[iy+i] * g23[iz+i]; +s[189] += g7[ix+i] * g8[iy+i] * g16[iz+i]; +s[190] += g6[ix+i] * g9[iy+i] * g16[iz+i]; +s[191] += g6[ix+i] * g8[iy+i] * g17[iz+i]; +s[192] += g5[ix+i] * g10[iy+i] * g16[iz+i]; +s[193] += g4[ix+i] * g11[iy+i] * g16[iz+i]; +s[194] += g4[ix+i] * g10[iy+i] * g17[iz+i]; +s[195] += g5[ix+i] * g8[iy+i] * g18[iz+i]; +s[196] += g4[ix+i] * g9[iy+i] * g18[iz+i]; +s[197] += g4[ix+i] * g8[iy+i] * g19[iz+i]; +s[198] += g3[ix+i] * g12[iy+i] * g16[iz+i]; +s[199] += g2[ix+i] * g13[iy+i] * g16[iz+i]; +s[200] += g2[ix+i] * g12[iy+i] * g17[iz+i]; +s[201] += g1[ix+i] * g14[iy+i] * g16[iz+i]; +s[202] += g0[ix+i] * g15[iy+i] * g16[iz+i]; +s[203] += g0[ix+i] * g14[iy+i] * g17[iz+i]; +s[204] += g1[ix+i] * g12[iy+i] * g18[iz+i]; +s[205] += g0[ix+i] * g13[iy+i] * g18[iz+i]; +s[206] += g0[ix+i] * g12[iy+i] * g19[iz+i]; +s[207] += g3[ix+i] * g8[iy+i] * g20[iz+i]; +s[208] += g2[ix+i] * g9[iy+i] * g20[iz+i]; +s[209] += g2[ix+i] * g8[iy+i] * g21[iz+i]; +s[210] += g1[ix+i] * g10[iy+i] * g20[iz+i]; +s[211] += g0[ix+i] * g11[iy+i] * g20[iz+i]; +s[212] += g0[ix+i] * g10[iy+i] * g21[iz+i]; +s[213] += g1[ix+i] * g8[iy+i] * g22[iz+i]; +s[214] += g0[ix+i] * g9[iy+i] * g22[iz+i]; +s[215] += g0[ix+i] * g8[iy+i] * g23[iz+i]; +s[216] += g7[ix+i] * g0[iy+i] * g24[iz+i]; +s[217] += g6[ix+i] * g1[iy+i] * g24[iz+i]; +s[218] += g6[ix+i] * g0[iy+i] * g25[iz+i]; +s[219] += g5[ix+i] * g2[iy+i] * g24[iz+i]; +s[220] += g4[ix+i] * g3[iy+i] * g24[iz+i]; +s[221] += g4[ix+i] * g2[iy+i] * g25[iz+i]; +s[222] += g5[ix+i] * g0[iy+i] * g26[iz+i]; +s[223] += g4[ix+i] * g1[iy+i] * g26[iz+i]; +s[224] += g4[ix+i] * g0[iy+i] * g27[iz+i]; +s[225] += g3[ix+i] * g4[iy+i] * g24[iz+i]; +s[226] += g2[ix+i] * g5[iy+i] * g24[iz+i]; +s[227] += g2[ix+i] * g4[iy+i] * g25[iz+i]; +s[228] += g1[ix+i] * g6[iy+i] * g24[iz+i]; +s[229] += g0[ix+i] * g7[iy+i] * g24[iz+i]; +s[230] += g0[ix+i] * g6[iy+i] * g25[iz+i]; +s[231] += g1[ix+i] * g4[iy+i] * g26[iz+i]; +s[232] += g0[ix+i] * g5[iy+i] * g26[iz+i]; +s[233] += g0[ix+i] * g4[iy+i] * g27[iz+i]; +s[234] += g3[ix+i] * g0[iy+i] * g28[iz+i]; +s[235] += g2[ix+i] * g1[iy+i] * g28[iz+i]; +s[236] += g2[ix+i] * g0[iy+i] * g29[iz+i]; +s[237] += g1[ix+i] * g2[iy+i] * g28[iz+i]; +s[238] += g0[ix+i] * g3[iy+i] * g28[iz+i]; +s[239] += g0[ix+i] * g2[iy+i] * g29[iz+i]; +s[240] += g1[ix+i] * g0[iy+i] * g30[iz+i]; +s[241] += g0[ix+i] * g1[iy+i] * g30[iz+i]; +s[242] += g0[ix+i] * g0[iy+i] * g31[iz+i]; +} +if (gout_empty) { +gout[n*48+0] = + s[104] - s[176] - s[106] + s[178]; +gout[n*48+1] = + s[167] - s[23] - s[169] + s[25]; +gout[n*48+2] = + s[14] - s[86] - s[16] + s[88]; +gout[n*48+3] = + s[5] + s[95] + s[185] - s[7] - s[97] - s[187]; +gout[n*48+4] = + s[105] - s[177] - s[101] + s[173]; +gout[n*48+5] = + s[168] - s[24] - s[164] + s[20]; +gout[n*48+6] = + s[15] - s[87] - s[11] + s[83]; +gout[n*48+7] = + s[6] + s[96] + s[186] - s[2] - s[92] - s[182]; +gout[n*48+8] = + s[100] - s[172] - s[102] + s[174]; +gout[n*48+9] = + s[163] - s[19] - s[165] + s[21]; +gout[n*48+10] = + s[10] - s[82] - s[12] + s[84]; +gout[n*48+11] = + s[1] + s[91] + s[181] - s[3] - s[93] - s[183]; +gout[n*48+12] = + s[99] - s[171] + s[103] - s[175] + s[107] - s[179]; +gout[n*48+13] = + s[162] - s[18] + s[166] - s[22] + s[170] - s[26]; +gout[n*48+14] = + s[9] - s[81] + s[13] - s[85] + s[17] - s[89]; +gout[n*48+15] = + s[0] + s[90] + s[180] + s[4] + s[94] + s[184] + s[8] + s[98] + s[188]; +gout[n*48+16] = + s[131] - s[203] - s[133] + s[205]; +gout[n*48+17] = + s[194] - s[50] - s[196] + s[52]; +gout[n*48+18] = + s[41] - s[113] - s[43] + s[115]; +gout[n*48+19] = + s[32] + s[122] + s[212] - s[34] - s[124] - s[214]; +gout[n*48+20] = + s[132] - s[204] - s[128] + s[200]; +gout[n*48+21] = + s[195] - s[51] - s[191] + s[47]; +gout[n*48+22] = + s[42] - s[114] - s[38] + s[110]; +gout[n*48+23] = + s[33] + s[123] + s[213] - s[29] - s[119] - s[209]; +gout[n*48+24] = + s[127] - s[199] - s[129] + s[201]; +gout[n*48+25] = + s[190] - s[46] - s[192] + s[48]; +gout[n*48+26] = + s[37] - s[109] - s[39] + s[111]; +gout[n*48+27] = + s[28] + s[118] + s[208] - s[30] - s[120] - s[210]; +gout[n*48+28] = + s[126] - s[198] + s[130] - s[202] + s[134] - s[206]; +gout[n*48+29] = + s[189] - s[45] + s[193] - s[49] + s[197] - s[53]; +gout[n*48+30] = + s[36] - s[108] + s[40] - s[112] + s[44] - s[116]; +gout[n*48+31] = + s[27] + s[117] + s[207] + s[31] + s[121] + s[211] + s[35] + s[125] + s[215]; +gout[n*48+32] = + s[158] - s[230] - s[160] + s[232]; +gout[n*48+33] = + s[221] - s[77] - s[223] + s[79]; +gout[n*48+34] = + s[68] - s[140] - s[70] + s[142]; +gout[n*48+35] = + s[59] + s[149] + s[239] - s[61] - s[151] - s[241]; +gout[n*48+36] = + s[159] - s[231] - s[155] + s[227]; +gout[n*48+37] = + s[222] - s[78] - s[218] + s[74]; +gout[n*48+38] = + s[69] - s[141] - s[65] + s[137]; +gout[n*48+39] = + s[60] + s[150] + s[240] - s[56] - s[146] - s[236]; +gout[n*48+40] = + s[154] - s[226] - s[156] + s[228]; +gout[n*48+41] = + s[217] - s[73] - s[219] + s[75]; +gout[n*48+42] = + s[64] - s[136] - s[66] + s[138]; +gout[n*48+43] = + s[55] + s[145] + s[235] - s[57] - s[147] - s[237]; +gout[n*48+44] = + s[153] - s[225] + s[157] - s[229] + s[161] - s[233]; +gout[n*48+45] = + s[216] - s[72] + s[220] - s[76] + s[224] - s[80]; +gout[n*48+46] = + s[63] - s[135] + s[67] - s[139] + s[71] - s[143]; +gout[n*48+47] = + s[54] + s[144] + s[234] + s[58] + s[148] + s[238] + s[62] + s[152] + s[242]; +} else { +gout[n*48+0] += + s[104] - s[176] - s[106] + s[178]; +gout[n*48+1] += + s[167] - s[23] - s[169] + s[25]; +gout[n*48+2] += + s[14] - s[86] - s[16] + s[88]; +gout[n*48+3] += + s[5] + s[95] + s[185] - s[7] - s[97] - s[187]; +gout[n*48+4] += + s[105] - s[177] - s[101] + s[173]; +gout[n*48+5] += + s[168] - s[24] - s[164] + s[20]; +gout[n*48+6] += + s[15] - s[87] - s[11] + s[83]; +gout[n*48+7] += + s[6] + s[96] + s[186] - s[2] - s[92] - s[182]; +gout[n*48+8] += + s[100] - s[172] - s[102] + s[174]; +gout[n*48+9] += + s[163] - s[19] - s[165] + s[21]; +gout[n*48+10] += + s[10] - s[82] - s[12] + s[84]; +gout[n*48+11] += + s[1] + s[91] + s[181] - s[3] - s[93] - s[183]; +gout[n*48+12] += + s[99] - s[171] + s[103] - s[175] + s[107] - s[179]; +gout[n*48+13] += + s[162] - s[18] + s[166] - s[22] + s[170] - s[26]; +gout[n*48+14] += + s[9] - s[81] + s[13] - s[85] + s[17] - s[89]; +gout[n*48+15] += + s[0] + s[90] + s[180] + s[4] + s[94] + s[184] + s[8] + s[98] + s[188]; +gout[n*48+16] += + s[131] - s[203] - s[133] + s[205]; +gout[n*48+17] += + s[194] - s[50] - s[196] + s[52]; +gout[n*48+18] += + s[41] - s[113] - s[43] + s[115]; +gout[n*48+19] += + s[32] + s[122] + s[212] - s[34] - s[124] - s[214]; +gout[n*48+20] += + s[132] - s[204] - s[128] + s[200]; +gout[n*48+21] += + s[195] - s[51] - s[191] + s[47]; +gout[n*48+22] += + s[42] - s[114] - s[38] + s[110]; +gout[n*48+23] += + s[33] + s[123] + s[213] - s[29] - s[119] - s[209]; +gout[n*48+24] += + s[127] - s[199] - s[129] + s[201]; +gout[n*48+25] += + s[190] - s[46] - s[192] + s[48]; +gout[n*48+26] += + s[37] - s[109] - s[39] + s[111]; +gout[n*48+27] += + s[28] + s[118] + s[208] - s[30] - s[120] - s[210]; +gout[n*48+28] += + s[126] - s[198] + s[130] - s[202] + s[134] - s[206]; +gout[n*48+29] += + s[189] - s[45] + s[193] - s[49] + s[197] - s[53]; +gout[n*48+30] += + s[36] - s[108] + s[40] - s[112] + s[44] - s[116]; +gout[n*48+31] += + s[27] + s[117] + s[207] + s[31] + s[121] + s[211] + s[35] + s[125] + s[215]; +gout[n*48+32] += + s[158] - s[230] - s[160] + s[232]; +gout[n*48+33] += + s[221] - s[77] - s[223] + s[79]; +gout[n*48+34] += + s[68] - s[140] - s[70] + s[142]; +gout[n*48+35] += + s[59] + s[149] + s[239] - s[61] - s[151] - s[241]; +gout[n*48+36] += + s[159] - s[231] - s[155] + s[227]; +gout[n*48+37] += + s[222] - s[78] - s[218] + s[74]; +gout[n*48+38] += + s[69] - s[141] - s[65] + s[137]; +gout[n*48+39] += + s[60] + s[150] + s[240] - s[56] - s[146] - s[236]; +gout[n*48+40] += + s[154] - s[226] - s[156] + s[228]; +gout[n*48+41] += + s[217] - s[73] - s[219] + s[75]; +gout[n*48+42] += + s[64] - s[136] - s[66] + s[138]; +gout[n*48+43] += + s[55] + s[145] + s[235] - s[57] - s[147] - s[237]; +gout[n*48+44] += + s[153] - s[225] + s[157] - s[229] + s[161] - s[233]; +gout[n*48+45] += + s[216] - s[72] + s[220] - s[76] + s[224] - s[80]; +gout[n*48+46] += + s[63] - s[135] + s[67] - s[139] + s[71] - s[143]; +gout[n*48+47] += + s[54] + s[144] + s[234] + s[58] + s[148] + s[238] + s[62] + s[152] + s[242]; +}}} +void int2e_ipsrsr1srsr2_optimizer(CINTOpt **opt, FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env) { +FINT ng[] = {2, 1, 1, 1, 5, 4, 4, 3}; +CINTall_2e_optimizer(opt, ng, atm, natm, bas, nbas, env); +} +CACHE_SIZE_T int2e_ipsrsr1srsr2_cart(dtype *out, FINT *dims, FINT *shls, +FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env, CINTOpt *opt, dtype *cache) { +FINT ng[] = {2, 1, 1, 1, 5, 4, 4, 3}; +CINTEnvVars envs; +CINTinit_int2e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env); +envs.f_gout = &CINTgout2e_int2e_ipsrsr1srsr2; +return CINT2e_drv(out, dims, &envs, opt, cache, &c2s_cart_2e1); +} +CACHE_SIZE_T int2e_ipsrsr1srsr2_sph(dtype *out, FINT *dims, FINT *shls, +FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env, CINTOpt *opt, dtype *cache) { +FINT ng[] = {2, 1, 1, 1, 5, 4, 4, 3}; +CINTEnvVars envs; +CINTinit_int2e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env); +envs.f_gout = &CINTgout2e_int2e_ipsrsr1srsr2; +return CINT2e_drv(out, dims, &envs, opt, cache, &c2s_sph_2e1); +} +CACHE_SIZE_T int2e_ipsrsr1srsr2_spinor(dtype *out, FINT *dims, FINT *shls, +FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env, CINTOpt *opt, dtype *cache) { +FINT ng[] = {2, 1, 1, 1, 5, 4, 4, 3}; +CINTEnvVars envs; +CINTinit_int2e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env); +envs.f_gout = &CINTgout2e_int2e_ipsrsr1srsr2; +return CINT2e_spinor_drv(out, dims, &envs, opt, cache, &c2s_si_2e1, &c2s_si_2e2); +} */ +ALL_CINT(int2e_ipsrsr1srsr2) +ALL_CINT_FORTRAN_(int2e_ipsrsr1srsr2) + + +FINT CINTlen_cart(const FINT l) +{ + return (l + 1) * (l + 2) / 2; +} + +FINT CINTlen_spinor(const FINT bas_id, const FINT *bas) +{ + if (0 == bas(KAPPA_OF, bas_id)) { + return 4 * bas(ANG_OF, bas_id) + 2; + } else if (bas(KAPPA_OF, bas_id) < 0) { + return 2 * bas(ANG_OF, bas_id) + 2; + } else { + return 2 * bas(ANG_OF, bas_id); + } +} + + +FINT CINTcgtos_cart(const FINT bas_id, const FINT *bas) +{ + FINT l = bas(ANG_OF, bas_id); + return (l+1)*(l+2)/2 * bas(NCTR_OF, bas_id); +} +FINT CINTcgto_cart(const FINT bas_id, const FINT *bas) +{ + FINT l = bas(ANG_OF, bas_id); + return (l+1)*(l+2)/2 * bas(NCTR_OF, bas_id); +} + + +FINT CINTcgtos_spheric(const FINT bas_id, const FINT *bas) +{ + return (bas(ANG_OF, bas_id) * 2 + 1) * bas(NCTR_OF, bas_id); +} +FINT CINTcgto_spheric(const FINT bas_id, const FINT *bas) +{ + return (bas(ANG_OF, bas_id) * 2 + 1) * bas(NCTR_OF, bas_id); +} + + +FINT CINTcgtos_spinor(const FINT bas_id, const FINT *bas) +{ + return CINTlen_spinor(bas_id, bas) * bas(NCTR_OF, bas_id); +} +FINT CINTcgto_spinor(const FINT bas_id, const FINT *bas) +{ + return CINTlen_spinor(bas_id, bas) * bas(NCTR_OF, bas_id); +} + + +FINT CINTtot_pgto_spheric(const FINT *bas, const FINT nbas) +{ + FINT i; + FINT s = 0; + + for (i = 0; i < nbas; i++) { + s += (bas(ANG_OF, i) * 2 + 1) + * bas(NPRIM_OF, i); + } + return s; +} + + +FINT CINTtot_pgto_spinor(const FINT *bas, const FINT nbas) +{ + FINT i; + FINT s = 0; + + for (i = 0; i < nbas; i++) { + s += CINTlen_spinor(i, bas) * bas(NPRIM_OF, i); + } + return s; +} + +#ifdef __cplusplus +static FINT tot_cgto_accum(FINT (*f)(...), const FINT *bas, const FINT nbas) +#else +static FINT tot_cgto_accum(FINT (*f)(), const FINT *bas, const FINT nbas) +#endif + +{ + FINT i; + FINT s = 0; + + for (i = 0; i < nbas; i++) { + s += (*f)(i, bas); + } + return s; +} + +/*FINT CINTtot_cgto_spheric(const FINT *bas, const FINT nbas) +{ + return tot_cgto_accum(&CINTcgto_spheric, bas, nbas); +} + + +FINT CINTtot_cgto_spinor(const FINT *bas, const FINT nbas) +{ + return tot_cgto_accum(&CINTcgto_spinor, bas, nbas); +} + + +FINT CINTtot_cgto_cart(const FINT *bas, const FINT nbas) +{ + return tot_cgto_accum(&CINTcgto_cart, bas, nbas); +}*/ + +#ifdef __cplusplus +static void shells_cgto_offset(FINT (*f)(...), FINT ao_loc[], const FINT *bas, const FINT nbas) +#else +static void shells_cgto_offset(FINT (*f)(), FINT ao_loc[], const FINT *bas, const FINT nbas) +#endif +{ + FINT i; + ao_loc[0] = 0; + for (i = 1; i < nbas; i++) { + ao_loc[i] = ao_loc[i-1] + (*f)(i-1, bas); + } +} + +/*void CINTshells_cart_offset(FINT ao_loc[], const FINT *bas, const FINT nbas) +{ + shells_cgto_offset(&CINTcgto_cart, ao_loc, bas, nbas); +} + + +void CINTshells_spheric_offset(FINT ao_loc[], const FINT *bas, const FINT nbas) +{ + shells_cgto_offset(&CINTcgto_spheric, ao_loc, bas, nbas); +} + + +void CINTshells_spinor_offset(FINT ao_loc[], const FINT *bas, const FINT nbas) +{ + shells_cgto_offset(&CINTcgto_spinor, ao_loc, bas, nbas); +}*/ + + +void CINTcart_comp(FINT *nx, FINT *ny, FINT *nz, const FINT lmax) +{ + FINT inc = 0; + FINT lx, ly, lz; + + for (lx = lmax; lx >= 0; lx--) { + for (ly = lmax - lx; ly >= 0; ly--) { + lz = lmax - lx - ly; + nx[inc] = lx; + ny[inc] = ly; + nz[inc] = lz; + inc++; + } + } +} + + + +#include +#include +#include +#include + +void CINTinit_int3c1e_EnvVars(CINTEnvVars *envs, FINT *ng, FINT *shls, + FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env); + +void CINTg3c1e_ovlp(dtype *g, dtype ai, dtype aj, dtype ak, + CINTEnvVars *envs); +void CINTg3c1e_nuc(dtype *g, dtype ai, dtype aj, dtype ak, dtype *rijk, + dtype *cr, dtype t2, CINTEnvVars *envs); + +void CINTnabla1i_3c1e(dtype *f, const dtype *g, + const FINT li, const FINT lj, const FINT lk, + const CINTEnvVars *envs); + +void CINTnabla1j_3c1e(dtype *f, const dtype *g, + const FINT li, const FINT lj, const FINT lk, + const CINTEnvVars *envs); + +void CINTnabla1k_3c1e(dtype *f, const dtype *g, + const FINT li, const FINT lj, const FINT lk, + const CINTEnvVars *envs); +void CINTx1i_3c1e(dtype *f, const dtype *g, const dtype *ri, + const FINT li, const FINT lj, const FINT lk, + const CINTEnvVars *envs); + +void CINTx1j_3c1e(dtype *f, const dtype *g, const dtype *rj, + const FINT li, const FINT lj, const FINT lk, + const CINTEnvVars *envs); + +void CINTx1k_3c1e(dtype *f, const dtype *g, const dtype *rk, + const FINT li, const FINT lj, const FINT lk, + const CINTEnvVars *envs); + +#define G3C1E_D_I(f, g, li, lj, lk) CINTnabla1i_3c1e(f, g, li, lj, lk, envs) +#define G3C1E_D_J(f, g, li, lj, lk) CINTnabla1j_3c1e(f, g, li, lj, lk, envs) +#define G3C1E_D_K(f, g, li, lj, lk) CINTnabla1k_3c1e(f, g, li, lj, lk, envs) + +#define G3C1E_R0I(f, g, li, lj, lk) CINTx1i_3c1e(f, g, ri, li, lj, lk, envs) +#define G3C1E_R0J(f, g, li, lj, lk) CINTx1j_3c1e(f, g, rj, li, lj, lk, envs) +#define G3C1E_R0K(f, g, li, lj, lk) CINTx1k_3c1e(f, g, rk, li, lj, lk, envs) + +#define G3C1E_RCI(f, g, li, lj, lk) CINTx1i_3c1e(f, g, dri, li, lj, lk, envs) +#define G3C1E_RCJ(f, g, li, lj, lk) CINTx1j_3c1e(f, g, drj, li, lj, lk, envs) +#define G3C1E_RCK(f, g, li, lj, lk) CINTx1k_3c1e(f, g, drk, li, lj, lk, envs) + +#define G3C1E_R_I(f, g, li, lj, lk) f = g + envs->g_stride_i +#define G3C1E_R_J(f, g, li, lj, lk) f = g + envs->g_stride_j +#define G3C1E_R_K(f, g, li, lj, lk) f = g + envs->g_stride_k + + +/*void CINTinit_2e_optimizer(CINTOpt **opt, FINT *atm, FINT natm, + FINT *bas, FINT nbas, dtype *env) +{ + + + CINTOpt *opt0 = (CINTOpt *)malloc(sizeof(CINTOpt)); + + opt0->index_xyz_array = NULL; + opt0->non0ctr = NULL; + opt0->sortedidx = NULL; + opt0->nbas = nbas; + opt0->log_max_coeff = NULL; + opt0->pairdata = NULL; + *opt = opt0; +}*/ +void CINTinit_optimizer(CINTOpt **opt, FINT *atm, FINT natm, + FINT *bas, FINT nbas, dtype *env) +{ + CINTinit_2e_optimizer(opt, atm, natm, bas, nbas, env); +} + +void CINTdel_2e_optimizer(CINTOpt **opt) +{ + CINTOpt *opt0 = *opt; + if (opt0 == NULL) { + return; + } + + if (opt0->index_xyz_array != NULL) { + //free(opt0->index_xyz_array[0]); + //free(opt0->index_xyz_array); + } + + if (opt0->non0ctr != NULL) { + //free(opt0->sortedidx[0]); + //free(opt0->sortedidx); + //free(opt0->non0ctr[0]); + //free(opt0->non0ctr); + } + + if (opt0->log_max_coeff != NULL) { + //free(opt0->log_max_coeff[0]); + //free(opt0->log_max_coeff); + } + + CINTdel_pairdata_optimizer(opt0); + + //free(opt0); + *opt = NULL; +} +void CINTdel_optimizer(CINTOpt **opt) +{ + CINTdel_2e_optimizer(opt); +} + +void CINTno_optimizer(CINTOpt **opt, FINT *atm, FINT natm, + FINT *bas, FINT nbas, dtype *env) +{ + *opt = NULL; +} + +static FINT _make_fakebas(FINT *fakebas, FINT *bas, FINT nbas, dtype *env) +{ + FINT i; + FINT max_l = 0; + for (i = 0; i < nbas; i++) { + max_l = MAX(max_l, bas(ANG_OF,i)); + } + + FINT fakenbas = max_l + 1; + for (i = 0; i < BAS_SLOTS*fakenbas; i++) { + fakebas[i] = 0; + } + + + for (i = 0; i <= max_l; i++) { + fakebas[BAS_SLOTS*i+ANG_OF] = i; + } + return max_l; +} +static FINT *_allocate_index_xyz(CINTOpt *opt, FINT max_l, FINT l_allow, FINT order) +{ + FINT i; + FINT cumcart = (l_allow+1) * (l_allow+2) * (l_allow+3) / 6; + size_t ll = max_l + 1; + size_t cc = cumcart; + for (i = 1; i < order; i++) { + ll *= LMAX1; + cc *= cumcart; + } + #ifdef __cplusplus + FINT *buf = new FINT[1000]; + FINT **ppbuf = new FINT*[ll]{new FINT[1000]}; + #else + FINT *buf = malloc(sizeof(FINT) * cc * 3); + FINT **ppbuf = malloc(sizeof(FINT*) * ll); + #endif + + ppbuf[0] = buf; + for (i = 1; i < ll; i++) { + ppbuf[i] = NULL; + } + opt->index_xyz_array = ppbuf; + return buf; +} +#ifdef __cplusplus +static void gen_idx(CINTOpt *opt, void (*finit)(...), void (*findex_xyz)(...), + FINT order, FINT l_allow, FINT *ng, FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env) +#else +static void gen_idx(CINTOpt *opt, void (*finit)(), void (*findex_xyz)(), + FINT order, FINT l_allow, FINT *ng, FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env) +#endif +{ + FINT i, j, k, l, ptr; + FINT fakebas[BAS_SLOTS*LMAX1]; + FINT max_l = _make_fakebas(fakebas, bas, nbas, env); + FINT fakenbas = max_l+1; + + l_allow = MIN(max_l, l_allow); + FINT *buf = _allocate_index_xyz(opt, max_l, l_allow, order); + + CINTEnvVars envs; + FINT shls[4] = {0,}; + if (order == 2) { + for (i = 0; i <= l_allow; i++) { + for (j = 0; j <= l_allow; j++) { + shls[0] = i; shls[1] = j; + (*finit)(&envs, ng, shls, atm, natm, fakebas, fakenbas, env); + ptr = i*LMAX1 + j; + opt->index_xyz_array[ptr] = buf; + (*findex_xyz)(buf, &envs); + buf += envs.nf * 3; + } } + + } else if (order == 3) { + for (i = 0; i <= l_allow; i++) { + for (j = 0; j <= l_allow; j++) { + for (k = 0; k <= l_allow; k++) { + shls[0] = i; shls[1] = j; shls[2] = k; + (*finit)(&envs, ng, shls, atm, natm, fakebas, fakenbas, env); + ptr = i*LMAX1*LMAX1 + j*LMAX1 + k; + opt->index_xyz_array[ptr] = buf; + (*findex_xyz)(buf, &envs); + buf += envs.nf * 3; + } } } + + } else { + for (i = 0; i <= l_allow; i++) { + for (j = 0; j <= l_allow; j++) { + for (k = 0; k <= l_allow; k++) { + for (l = 0; l <= l_allow; l++) { + shls[0] = i; shls[1] = j; shls[2] = k; shls[3] = l; + (*finit)(&envs, ng, shls, atm, natm, fakebas, fakenbas, env); + ptr = i*LMAX1*LMAX1*LMAX1 + + j*LMAX1*LMAX1 + + k*LMAX1 + + l; + opt->index_xyz_array[ptr] = buf; + (*findex_xyz)(buf, &envs); + buf += envs.nf * 3; + } } } } + } +} + +/*void CINTall_1e_optimizer(CINTOpt **opt, FINT *ng, + FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env) +{ + CINTinit_2e_optimizer(opt, atm, natm, bas, nbas, env); + CINTOpt_set_log_maxc(*opt, atm, natm, bas, nbas, env); + CINTOpt_set_non0coeff(*opt, atm, natm, bas, nbas, env); + gen_idx(*opt, &CINTinit_int1e_EnvVars, &CINTg1e_index_xyz, + 2, ANG_MAX, ng, atm, natm, bas, nbas, env); +} + +void CINTall_2e_optimizer(CINTOpt **opt, FINT *ng, + FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env) +{ + CINTinit_2e_optimizer(opt, atm, natm, bas, nbas, env); + CINTOpt_setij(*opt, ng, atm, natm, bas, nbas, env); + CINTOpt_set_non0coeff(*opt, atm, natm, bas, nbas, env); + gen_idx(*opt, &CINTinit_int2e_EnvVars, &CINTg2e_index_xyz, + 4, 6, ng, atm, natm, bas, nbas, env); +} + +void CINTall_3c2e_optimizer(CINTOpt **opt, FINT *ng, + FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env) +{ + CINTinit_2e_optimizer(opt, atm, natm, bas, nbas, env); + CINTOpt_setij(*opt, ng, atm, natm, bas, nbas, env); + CINTOpt_set_non0coeff(*opt, atm, natm, bas, nbas, env); + gen_idx(*opt, &CINTinit_int3c2e_EnvVars, &CINTg2e_index_xyz, + 3, 12, ng, atm, natm, bas, nbas, env); +} + +void CINTall_2c2e_optimizer(CINTOpt **opt, FINT *ng, + FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env) +{ + CINTinit_2e_optimizer(opt, atm, natm, bas, nbas, env); + CINTOpt_set_log_maxc(*opt, atm, natm, bas, nbas, env); + CINTOpt_set_non0coeff(*opt, atm, natm, bas, nbas, env); + gen_idx(*opt, &CINTinit_int2c2e_EnvVars, &CINTg1e_index_xyz, + 2, ANG_MAX, ng, atm, natm, bas, nbas, env); +} + +void CINTg3c1e_index_xyz(FINT *idx, const CINTEnvVars *envs); +void CINTall_3c1e_optimizer(CINTOpt **opt, FINT *ng, + FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env) +{ + CINTinit_2e_optimizer(opt, atm, natm, bas, nbas, env); + CINTOpt_setij(*opt, ng, atm, natm, bas, nbas, env); + CINTOpt_set_non0coeff(*opt, atm, natm, bas, nbas, env); + gen_idx(*opt, &CINTinit_int3c1e_EnvVars, &CINTg3c1e_index_xyz, + 3, 12, ng, atm, natm, bas, nbas, env); +} + +void CINTall_1e_grids_optimizer(CINTOpt **opt, FINT *ng, + FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env) +{ + CINTinit_2e_optimizer(opt, atm, natm, bas, nbas, env); + CINTOpt_set_log_maxc(*opt, atm, natm, bas, nbas, env); + CINTOpt_set_non0coeff(*opt, atm, natm, bas, nbas, env); + gen_idx(*opt, &CINTinit_int1e_grids_EnvVars, &CINTg1e_index_xyz, + 2, ANG_MAX, ng, atm, natm, bas, nbas, env); +}*/ + +#ifdef WITH_F12 +void CINTinit_int2e_stg_EnvVars(CINTEnvVars *envs, FINT *ng, FINT *shls, + FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env); +void CINTall_2e_stg_optimizer(CINTOpt **opt, FINT *ng, + FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env) +{ + CINTinit_2e_optimizer(opt, atm, natm, bas, nbas, env); + CINTOpt_setij(*opt, ng, atm, natm, bas, nbas, env); + CINTOpt_set_non0coeff(*opt, atm, natm, bas, nbas, env); + gen_idx(*opt, &CINTinit_int2e_stg_EnvVars, &CINTg2e_index_xyz, + 4, 6, ng, atm, natm, bas, nbas, env); +} +#endif + +void CINTOpt_log_max_pgto_coeff(dtype *log_maxc, dtype *coeff, FINT nprim, FINT nctr) +{ + FINT i, ip; + dtype maxc; + for (ip = 0; ip < nprim; ip++) { + maxc = 0; + for (i = 0; i < nctr; i++) { + maxc = MAX(maxc, fabs(coeff[i*nprim+ip])); + } + log_maxc[ip] = approx_log(maxc); + } +} + +/*void CINTOpt_set_log_maxc(CINTOpt *opt, FINT *atm, FINT natm, + FINT *bas, FINT nbas, dtype *env) +{ + printf("ASD"); // this isn't caled? + return; + FINT i, iprim, ictr; + dtype *ci; + size_t tot_prim = 0; + for (i = 0; i < nbas; i++) { + tot_prim += bas(NPRIM_OF, i); + } + if (tot_prim == 0) { + return; + } + + #ifdef __cplusplus + opt->log_max_coeff = new dtype*[1024]; + dtype *plog_maxc = new dtype[1024]; + //opt->log_max_coeff = new dtype*[128]; + //dtype *plog_maxc = new dtype[128]; + #else + opt->log_max_coeff = malloc(sizeof(dtype *) * MAX(nbas, 1)); + dtype *plog_maxc = malloc(sizeof(dtype) * tot_prim); + #endif + + opt->log_max_coeff[0] = plog_maxc; + for (i = 0; i < nbas; i++) { + iprim = bas(NPRIM_OF, i); + ictr = bas(NCTR_OF, i); + ci = env + bas(PTR_COEFF, i); + opt->log_max_coeff[i] = plog_maxc; + CINTOpt_log_max_pgto_coeff(plog_maxc, ci, iprim, ictr); + plog_maxc += iprim; + } +}*/ + +FINT CINTset_pairdata(PairData *pairdata, dtype *ai, dtype *aj, dtype *ri, dtype *rj, + dtype *log_maxci, dtype *log_maxcj, + FINT li_ceil, FINT lj_ceil, FINT iprim, FINT jprim, + dtype rr_ij, dtype expcutoff, dtype *env) +{ + FINT ip, jp, n; + dtype aij, eij, cceij, wj; + + aij = ai[iprim-1] + aj[jprim-1]; + dtype log_rr_ij = 1.7 - 1.5 * approx_log(aij); + int lij = li_ceil + lj_ceil; + + //printf("before first if\n"); + + if (lij > 0) { + dtype dist_ij = sqrt(rr_ij); + dtype omega = env[PTR_RANGE_OMEGA]; + if (omega < 0) { + dtype r_guess = 8.; + dtype omega2 = omega * omega; + dtype theta = omega2 / (omega2 + aij); + log_rr_ij += lij * approx_log(dist_ij + theta*r_guess + 1.); + } else { + log_rr_ij += lij * approx_log(dist_ij + 1.); + } + } + PairData *pdata; + + FINT empty = 1; + //printf("before for loop %d %d\n", jprim, iprim); + for (n = 0, jp = 0; jp < jprim; jp++) { + for (ip = 0; ip < iprim; ip++, n++) { + aij = 1/(ai[ip] + aj[jp]); + eij = rr_ij * ai[ip] * aj[jp] * aij; + cceij = eij - log_rr_ij - log_maxci[ip] - log_maxcj[jp]; + pdata = pairdata + n; + pdata->cceij = cceij; + //printf("%f\n", cceij) ; + //printf("%f\n", expcutoff) ; + //printf("%f < %f \n", cceij, expcutoff); + if (cceij < (float)expcutoff) { + empty = 0; + wj = aj[jp] * aij; + pdata->rij[0] = ri[0] + wj * (rj[0]-ri[0]); + pdata->rij[1] = ri[1] + wj * (rj[1]-ri[1]); + pdata->rij[2] = ri[2] + wj * (rj[2]-ri[2]); + pdata->eij = exp(-eij); + } else { + pdata->rij[0] = 1e18; + pdata->rij[1] = 1e18; + pdata->rij[2] = 1e18; + pdata->eij = 0; + } + } + } + return empty; +} + +/*void CINTOpt_setij(CINTOpt *opt, FINT *ng, + FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env) +{ + printf("---> CINTOpt_set_ij <--- \n"); + return; + FINT i, j, ip, jp; + FINT iprim, jprim, li, lj; + dtype *ai, *aj, *ri, *rj; + dtype expcutoff; + if (env[PTR_EXPCUTOFF] == 0) { + expcutoff = EXPCUTOFF; + } else { + expcutoff = MAX(MIN_EXPCUTOFF, env[PTR_EXPCUTOFF]); + } + + if (opt->log_max_coeff == NULL) { + CINTOpt_set_log_maxc(opt, atm, natm, bas, nbas, env); + } + dtype **log_max_coeff = opt->log_max_coeff; + dtype *log_maxci, *log_maxcj; + + size_t tot_prim = 0; + for (i = 0; i < nbas; i++) { + tot_prim += bas(NPRIM_OF, i); + } + if (tot_prim == 0 || tot_prim > MAX_PGTO_FOR_PAIRDATA) { + return; + } + #ifdef __cplusplus + opt->pairdata = new PairData*[128]; + PairData *pdata = new PairData[128]; + #else + opt->pairdata = malloc(sizeof(PairData *) * MAX(nbas * nbas, 1)); + PairData *pdata = malloc(sizeof(PairData) * tot_prim * tot_prim); + #endif + opt->pairdata[0] = pdata; + + FINT ijkl_inc; + if ((ng[IINC]+ng[JINC]) > (ng[KINC]+ng[LINC])) { + ijkl_inc = ng[IINC] + ng[JINC]; + } else { + ijkl_inc = ng[KINC] + ng[LINC]; + } + + FINT empty; + dtype rr; + PairData *pdata0; + for (i = 0; i < nbas; i++) { + ri = env + atm(PTR_COORD,bas(ATOM_OF,i)); + ai = env + bas(PTR_EXP,i); + iprim = bas(NPRIM_OF,i); + li = bas(ANG_OF,i); + log_maxci = log_max_coeff[i]; + + for (j = 0; j <= i; j++) { + rj = env + atm(PTR_COORD,bas(ATOM_OF,j)); + aj = env + bas(PTR_EXP,j); + jprim = bas(NPRIM_OF,j); + lj = bas(ANG_OF,j); + log_maxcj = log_max_coeff[j]; + rr = (ri[0]-rj[0])*(ri[0]-rj[0]) + + (ri[1]-rj[1])*(ri[1]-rj[1]) + + (ri[2]-rj[2])*(ri[2]-rj[2]); + + empty = CINTset_pairdata(pdata, ai, aj, ri, rj, log_maxci, log_maxcj, + li+ijkl_inc, lj, iprim, jprim, rr, expcutoff, env); + if (i == 0 && j == 0) { + opt->pairdata[0] = pdata; + pdata += iprim * jprim; + } else if (!empty) { + opt->pairdata[i*nbas+j] = pdata; + pdata += iprim * jprim; + if (i != j) { + opt->pairdata[j*nbas+i] = pdata; + pdata0 = opt->pairdata[i*nbas+j]; + + for (ip = 0; ip < iprim; ip++) { + for (jp = 0; jp < jprim; jp++, pdata++) { + memcpy(pdata, pdata0+jp*iprim+ip, + sizeof(PairData)); + } } + } + } else { + // ALEX: Warning + //opt->pairdata[i*nbas+j] = NOVALUE; + //opt->pairdata[j*nbas+i] = NOVALUE; + } + } + } +}*/ + +void CINTdel_pairdata_optimizer(CINTOpt *cintopt) +{ + if (cintopt != NULL && cintopt->pairdata != NULL) { + //free(cintopt->pairdata[0]); + //free(cintopt->pairdata); + cintopt->pairdata = NULL; + } +} + + +// start return +/*void CINTOpt_set_non0coeff(CINTOpt *opt, FINT *atm, FINT natm, + FINT *bas, FINT nbas, dtype *env) +{ + return; + FINT i, iprim, ictr; + dtype *ci; + size_t tot_prim = 0; + size_t tot_prim_ctr = 0; + for (i = 0; i < nbas; i++) { + tot_prim += bas(NPRIM_OF, i); + tot_prim_ctr += bas(NPRIM_OF, i) * bas(NCTR_OF,i); + } + if (tot_prim == 0) { + return; + } + + #ifdef __cplusplus + opt->non0ctr = new FINT*[128]; + opt->sortedidx = new FINT*[128]; + FINT *pnon0ctr = new FINT[128]; + FINT *psortedidx = new FINT[128]; + #else + opt->non0ctr = malloc(sizeof(FINT *) * MAX(nbas, 1)); + opt->sortedidx = malloc(sizeof(FINT *) * MAX(nbas, 1)); + FINT *pnon0ctr = malloc(sizeof(FINT) * tot_prim); + FINT *psortedidx = malloc(sizeof(FINT) * tot_prim_ctr); + #endif + opt->non0ctr[0] = pnon0ctr; + opt->sortedidx[0] = psortedidx; + for (i = 0; i < nbas; i++) { + iprim = bas(NPRIM_OF, i); + ictr = bas(NCTR_OF, i); + ci = env + bas(PTR_COEFF, i); + opt->non0ctr[i] = pnon0ctr; + opt->sortedidx[i] = psortedidx; + CINTOpt_non0coeff_byshell(psortedidx, pnon0ctr, ci, iprim, ictr); + pnon0ctr += iprim; + psortedidx += iprim * ictr; + } +}*/ + + +#include +#include +#include + +void CINTrys_roots(int nroots, dtype x, dtype *u, dtype *w); +void CINTsr_rys_roots(int nroots, dtype x, dtype lower, dtype *u, dtype *w); +void CINTstg_roots(int nroots, dtype ta, dtype ua, dtype* rr, dtype* ww); +int CINTsr_rys_polyfits(int nroots, dtype x, dtype lower, dtype *u, dtype *w); + +int CINTrys_schmidt(int nroots, dtype x, dtype lower, dtype *roots, dtype *weights); +int CINTlrys_schmidt(int nroots, dtype x, dtype lower, dtype *roots, dtype *weights); +int CINTrys_laguerre(int n, dtype x, dtype lower, dtype *roots, dtype *weights); +int CINTlrys_laguerre(int n, dtype x, dtype lower, dtype *roots, dtype *weights) {return 0; }; +int CINTrys_jacobi(int n, dtype x, dtype lower, dtype *roots, dtype *weights){ return 0; } +int CINTlrys_jacobi(int n, dtype x, dtype lower, dtype *roots, dtype *weights){ return 0; } +#ifdef HAVE_QUADMATH_H +int CINTqrys_schmidt(int nroots, dtype x, dtype lower, dtype *roots, dtype *weights) {return 0; }; +int CINTqrys_laguerre(int n, dtype x, dtype lower, dtype *roots, dtype *weights){return 0;}; +int CINTqrys_jacobi(int n, dtype x, dtype lower, dtype *roots, dtype *weights){return 0; }; +#else +#define CINTqrys_schmidt CINTlrys_schmidt +#define CINTqrys_laguerre CINTlrys_laguerre +#define CINTqrys_jacobi CINTlrys_jacobi +#endif + +void gamma_inc_like(dtype *f, dtype t, int m){} +void lgamma_inc_like(dtype *f, dtype t, int m){} + + +void fmt_erfc_like(dtype *f, dtype t, dtype lower, int m){} +void fmt1_erfc_like(dtype *f, dtype t, dtype lower, int m); +void fmt_lerfc_like(dtype *f, dtype t, dtype lower, int m){} +void fmt1_lerfc_like(dtype *f, dtype t, dtype lower, int m); +#ifdef HAVE_QUADMATH_H +#define __float128 dtype +void qgamma_inc_like(__float128 *f, __float128 t, int m){} +void fmt_qerfc_like(__float128 *f, __float128 t, __float128 lower, int m){} +void fmt1_qerfc_like(__float128 *f, __float128 t, __float128 lower, int m); +#else +#define qgamma_inc_like lgamma_inc_like +#define fmt_qerfc_like fmt_lerfc_like +#define fmt1_qerfc_like fmt1_lerfc_like +#endif + +#define EXPCUTOFF_SR 40 + + +void CINTinit_int1e_EnvVars(CINTEnvVars *envs, + FINT *ng, FINT *shls, + FINT *atm, FINT natm, + FINT *bas, FINT nbas, dtype *env) { + // FIXME + envs->natm = natm; + envs->nbas = nbas; + envs->atm = atm; + envs->bas = bas; + envs->env = env; + envs->shls = shls; + + //const FINT i_sh = (const int)shls[0]; + //const FINT j_sh = (const int)shls[1]; + const FINT i_sh = shls[0]; + const FINT j_sh = shls[1]; + envs->i_l = bas(ANG_OF, i_sh); + envs->j_l = bas(ANG_OF, j_sh); + envs->x_ctr[0] = bas(NCTR_OF, i_sh); + envs->x_ctr[1] = bas(NCTR_OF, j_sh); + envs->nfi = (envs->i_l+1)*(envs->i_l+2)/2; + envs->nfj = (envs->j_l+1)*(envs->j_l+2)/2; + envs->nf = envs->nfi * envs->nfj; + envs->common_factor = 1; + if (env[PTR_EXPCUTOFF] == 0) { + envs->expcutoff = EXPCUTOFF; + } else { + envs->expcutoff = MAX(MIN_EXPCUTOFF, env[PTR_EXPCUTOFF]); + } + + envs->li_ceil = envs->i_l + ng[IINC]; + envs->lj_ceil = envs->j_l + ng[JINC]; + envs->ri = env + atm(PTR_COORD, bas(ATOM_OF, i_sh)); + envs->rj = env + atm(PTR_COORD, bas(ATOM_OF, j_sh)); + + envs->gbits = ng[GSHIFT]; + envs->ncomp_e1 = ng[POS_E1]; + envs->ncomp_tensor = ng[TENSOR]; + if (ng[SLOT_RYS_ROOTS] > 0) { + envs->nrys_roots = ng[SLOT_RYS_ROOTS]; + } else { + envs->nrys_roots = (envs->li_ceil + envs->lj_ceil)/2 + 1; + } + + FINT dli, dlj; + FINT ibase = envs->li_ceil > envs->lj_ceil; + if (ibase) { + dli = envs->li_ceil + envs->lj_ceil + 1; + dlj = envs->lj_ceil + 1; + envs->rirj[0] = envs->ri[0] - envs->rj[0]; + envs->rirj[1] = envs->ri[1] - envs->rj[1]; + envs->rirj[2] = envs->ri[2] - envs->rj[2]; + } else { + dli = envs->li_ceil + 1; + dlj = envs->li_ceil + envs->lj_ceil + 1; + envs->rirj[0] = envs->rj[0] - envs->ri[0]; + envs->rirj[1] = envs->rj[1] - envs->ri[1]; + envs->rirj[2] = envs->rj[2] - envs->ri[2]; + } + envs->g_stride_i = envs->nrys_roots; + envs->g_stride_j = envs->nrys_roots * dli; + envs->g_size = envs->nrys_roots * dli * dlj; + envs->g_stride_k = envs->g_size; + envs->g_stride_l = envs->g_size; + + /*assert(i_sh < SHLS_MAX); + assert(j_sh < SHLS_MAX); + assert(envs->i_l < ANG_MAX); + assert(envs->j_l < ANG_MAX); + assert(bas(ATOM_OF,i_sh) >= 0); + assert(bas(ATOM_OF,j_sh) >= 0); + assert(bas(ATOM_OF,i_sh) < natm); + assert(bas(ATOM_OF,j_sh) < natm); + assert(envs->nrys_roots < MXRYSROOTS);*/ +} + +void CINTg1e_index_xyz(FINT *idx, CINTEnvVars *envs) +{ + const FINT i_l = envs->i_l; + const FINT j_l = envs->j_l; + const FINT nfi = envs->nfi; + const FINT nfj = envs->nfj; + const FINT di = envs->g_stride_i; + const FINT dj = envs->g_stride_j; + FINT i, j, n; + FINT ofx, ofjx; + FINT ofy, ofjy; + FINT ofz, ofjz; + FINT i_nx[CART_MAX], i_ny[CART_MAX], i_nz[CART_MAX]; + FINT j_nx[CART_MAX], j_ny[CART_MAX], j_nz[CART_MAX]; + + CINTcart_comp(i_nx, i_ny, i_nz, i_l); + CINTcart_comp(j_nx, j_ny, j_nz, j_l); + + ofx = 0; + ofy = envs->g_size; + ofz = envs->g_size * 2; + n = 0; + for (j = 0; j < nfj; j++) { + ofjx = ofx + dj * j_nx[j]; + ofjy = ofy + dj * j_ny[j]; + ofjz = ofz + dj * j_nz[j]; + for (i = 0; i < nfi; i++) { + idx[n+0] = ofjx + di * i_nx[i]; + idx[n+1] = ofjy + di * i_ny[i]; + idx[n+2] = ofjz + di * i_nz[i]; + n += 3; + } + } +} + +FINT CINTg1e_ovlp(dtype *g, CINTEnvVars *envs) +{ + if (print) printf("ovlp\n"); + dtype *gx = g; + dtype *gy = g + envs->g_size; + dtype *gz = g + envs->g_size * 2; + dtype aij = envs->ai[0] + envs->aj[0]; + + gx[0] = 1; + gy[0] = 1; + gz[0] = envs->fac[0] * SQRTPI*M_PI / (aij * sqrt(aij)); + + FINT nmax = envs->li_ceil + envs->lj_ceil; + if (nmax == 0) { + return 1; + } + + dtype *rij = envs->rij; + dtype *rirj = envs->rirj; + FINT lj, di, dj; + FINT i, j, n, ptr; + dtype *rx; + if (envs->li_ceil > envs->lj_ceil) { + + lj = envs->lj_ceil; + di = envs->g_stride_i; + dj = envs->g_stride_j; + rx = envs->ri; + } else { + + lj = envs->li_ceil; + di = envs->g_stride_j; + dj = envs->g_stride_i; + rx = envs->rj; + } + dtype rijrx[3]; + rijrx[0] = rij[0] - rx[0]; + rijrx[1] = rij[1] - rx[1]; + rijrx[2] = rij[2] - rx[2]; + + gx[di] = rijrx[0] * gx[0]; + gy[di] = rijrx[1] * gy[0]; + gz[di] = rijrx[2] * gz[0]; + + dtype aij2 = .5 / aij; + for (i = 1; i < nmax; i++) { + gx[(i+1)*di] = i * aij2 * gx[(i-1)*di] + rijrx[0] * gx[i*di]; + gy[(i+1)*di] = i * aij2 * gy[(i-1)*di] + rijrx[1] * gy[i*di]; + gz[(i+1)*di] = i * aij2 * gz[(i-1)*di] + rijrx[2] * gz[i*di]; + } + + for (j = 1; j <= lj; j++) { + ptr = dj * j; + for (i = 0, n = ptr; i <= nmax-j; i++, n+=di) { + gx[n] = gx[n+di-dj] + rirj[0] * gx[n-dj]; + gy[n] = gy[n+di-dj] + rirj[1] * gy[n-dj]; + gz[n] = gz[n+di-dj] + rirj[2] * gz[n-dj]; + } + } + if (print) printf("end ovlp\n"); + return 1; +} + + +dtype CINTnuc_mod(dtype aij, FINT nuc_id, FINT *atm, dtype *env) +{ + dtype zeta; + if (nuc_id < 0) { + zeta = env[PTR_RINV_ZETA]; + } else if (atm(NUC_MOD_OF, nuc_id) == GAUSSIAN_NUC) { + zeta = env[atm(PTR_ZETA, nuc_id)]; + } else { + zeta = 0; + } + + if (zeta > 0) { + return sqrt(zeta / (aij + zeta)); + } else { + return 1; + } +} + +FINT CINTg1e_nuc(dtype *g, CINTEnvVars *envs, FINT nuc_id) +{ + FINT nrys_roots = envs->nrys_roots; + FINT *atm = envs->atm; + dtype *env = envs->env; + dtype *rij = envs->rij; + dtype *gx = g; + dtype *gy = g + envs->g_size; + dtype *gz = g + envs->g_size * 2; + dtype u[MXRYSROOTS]; + dtype *w = gz; + dtype *cr; + FINT i, j, n; + dtype crij[3]; + dtype x, fac1; + dtype aij = envs->ai[0] + envs->aj[0]; + dtype tau = CINTnuc_mod(aij, nuc_id, atm, env); + + if (nuc_id < 0) { + fac1 = 2*M_PI * envs->fac[0] * tau / aij; + cr = env + PTR_RINV_ORIG; + } else if (atm(NUC_MOD_OF, nuc_id) == FRAC_CHARGE_NUC) { + fac1 = 2*M_PI * -env[atm[PTR_FRAC_CHARGE+nuc_id*ATM_SLOTS]] * envs->fac[0] * tau / aij; + cr = env + atm(PTR_COORD, nuc_id); + } else { + fac1 = 2*M_PI * -fabs(atm[CHARGE_OF+nuc_id*ATM_SLOTS]) * envs->fac[0] * tau / aij; + cr = env + atm(PTR_COORD, nuc_id); + } + crij[0] = cr[0] - rij[0]; + crij[1] = cr[1] - rij[1]; + crij[2] = cr[2] - rij[2]; + x = aij * tau * tau * SQUARE(crij); + CINTrys_roots(nrys_roots, x, u, w); + + for (i = 0; i < nrys_roots; i++) { + gx[i] = 1; + gy[i] = 1; + gz[i] *= fac1; + } + FINT nmax = envs->li_ceil + envs->lj_ceil; + if (nmax == 0) { + return 1; + } + + dtype *p0x, *p0y, *p0z; + dtype *p1x, *p1y, *p1z; + dtype *p2x, *p2y, *p2z; + FINT lj, di, dj; + dtype *rx; + if (envs->li_ceil > envs->lj_ceil) { + + lj = envs->lj_ceil; + di = envs->g_stride_i; + dj = envs->g_stride_j; + rx = envs->ri; + } else { + + lj = envs->li_ceil; + di = envs->g_stride_j; + dj = envs->g_stride_i; + rx = envs->rj; + } + dtype rijrx = rij[0] - rx[0]; + dtype rijry = rij[1] - rx[1]; + dtype rijrz = rij[2] - rx[2]; + dtype aij2 = 0.5 / aij; + dtype ru, rt, r0, r1, r2; + + p0x = gx + di; + p0y = gy + di; + p0z = gz + di; + p1x = gx - di; + p1y = gy - di; + p1z = gz - di; + for (n = 0; n < nrys_roots; n++) { + ru = tau * tau * u[n] / (1 + u[n]); + rt = aij2 - aij2 * ru; + r0 = rijrx + ru * crij[0]; + r1 = rijry + ru * crij[1]; + r2 = rijrz + ru * crij[2]; + + p0x[n] = r0 * gx[n]; + p0y[n] = r1 * gy[n]; + p0z[n] = r2 * gz[n]; + for (i = 1; i < nmax; i++) { + p0x[n+i*di] = i * rt * p1x[n+i*di] + r0 * gx[n+i*di]; + p0y[n+i*di] = i * rt * p1y[n+i*di] + r1 * gy[n+i*di]; + p0z[n+i*di] = i * rt * p1z[n+i*di] + r2 * gz[n+i*di]; + } + } + + dtype rirjx = envs->rirj[0]; + dtype rirjy = envs->rirj[1]; + dtype rirjz = envs->rirj[2]; + for (j = 1; j <= lj; j++) { + p0x = gx + j * dj; + p0y = gy + j * dj; + p0z = gz + j * dj; + p1x = p0x - dj; + p1y = p0y - dj; + p1z = p0z - dj; + p2x = p1x + di; + p2y = p1y + di; + p2z = p1z + di; + for (i = 0; i <= nmax - j; i++) { + for (n = 0; n < nrys_roots; n++) { + p0x[n+i*di] = p2x[n+i*di] + rirjx * p1x[n+i*di]; + p0y[n+i*di] = p2y[n+i*di] + rirjy * p1y[n+i*di]; + p0z[n+i*di] = p2z[n+i*di] + rirjz * p1z[n+i*di]; + } } + } + return 1; +} + +void CINTnabla1i_1e(dtype *f, dtype *g, + FINT li, FINT lj, FINT lk, CINTEnvVars *envs) +{ + const FINT dj = envs->g_stride_j; + const FINT dk = envs->g_stride_k; + const dtype ai2 = -2 * envs->ai[0]; + FINT i, j, k, ptr; + const dtype *gx = g; + const dtype *gy = g + envs->g_size; + const dtype *gz = g + envs->g_size * 2; + dtype *fx = f; + dtype *fy = f + envs->g_size; + dtype *fz = f + envs->g_size * 2; + + for (k = 0; k <= lk; k++) { + for (j = 0; j <= lj; j++) { + ptr = dj * j + dk * k; + + fx[ptr] = ai2 * gx[ptr+1]; + fy[ptr] = ai2 * gy[ptr+1]; + fz[ptr] = ai2 * gz[ptr+1]; + + for (i = 1; i <= li; i++) { + fx[ptr+i] = i * gx[ptr+i-1] + ai2 * gx[ptr+i+1]; + fy[ptr+i] = i * gy[ptr+i-1] + ai2 * gy[ptr+i+1]; + fz[ptr+i] = i * gz[ptr+i-1] + ai2 * gz[ptr+i+1]; + } + } } +} + +void CINTnabla1j_1e(dtype *f, dtype *g, + FINT li, FINT lj, FINT lk, CINTEnvVars *envs) { + if (print) printf("inside GINT1nable_1j_e1\n"); + const FINT dj = envs->g_stride_j; + const FINT dk = envs->g_stride_k; + const dtype aj2 = -2 * envs->aj[0]; + FINT i, j, k, ptr; + const dtype *gx = g; + const dtype *gy = g + envs->g_size; + const dtype *gz = g + envs->g_size * 2; + dtype *fx = f; + dtype *fy = f + envs->g_size; + dtype *fz = f + envs->g_size * 2; + + for (k = 0; k <= lk; k++) { + ptr = dk * k; + + for (i = ptr; i <= ptr+li; i++) { + fx[i] = aj2 * gx[i+dj]; + fy[i] = aj2 * gy[i+dj]; + fz[i] = aj2 * gz[i+dj]; + } + + for (j = 1; j <= lj; j++) { + ptr = dj * j + dk * k; + for (i = ptr; i <= ptr+li; i++) { + fx[i] = j * gx[i-dj] + aj2 * gx[i+dj]; + fy[i] = j * gy[i-dj] + aj2 * gy[i+dj]; + fz[i] = j * gz[i-dj] + aj2 * gz[i+dj]; + } + } + } + if (print) printf("done nabla\n"); +} + + +void CINTnabla1k_1e(dtype *f, dtype *g, + FINT li, FINT lj, FINT lk, CINTEnvVars *envs) +{ + const FINT dj = envs->g_stride_j; + const FINT dk = envs->g_stride_k; + const dtype ak2 = -2 * envs->ak[0]; + FINT i, j, k, ptr; + const dtype *gx = g; + const dtype *gy = g + envs->g_size; + const dtype *gz = g + envs->g_size * 2; + dtype *fx = f; + dtype *fy = f + envs->g_size; + dtype *fz = f + envs->g_size * 2; + + for (j = 0; j <= lj; j++) { + ptr = dj * j; + for (i = ptr; i <= ptr+li; i++) { + fx[i] = ak2 * gx[i+dk]; + fy[i] = ak2 * gy[i+dk]; + fz[i] = ak2 * gz[i+dk]; + } + } + for (k = 1; k <= lk; k++) { + for (j = 0; j <= lj; j++) { + ptr = dj * j + dk * k; + for (i = ptr; i <= ptr+li; i++) { + fx[i] = k * gx[i-dk] + ak2 * gx[i+dk]; + fy[i] = k * gy[i-dk] + ak2 * gy[i+dk]; + fz[i] = k * gz[i-dk] + ak2 * gz[i+dk]; + } + } + } +} + + +void CINTx1i_1e(dtype *f, dtype *g, dtype ri[3], + FINT li, FINT lj, FINT lk, CINTEnvVars *envs) +{ + FINT i, j, k, ptr; + const FINT dj = envs->g_stride_j; + const FINT dk = envs->g_stride_k; + const dtype *gx = g; + const dtype *gy = g + envs->g_size; + const dtype *gz = g + envs->g_size * 2; + dtype *fx = f; + dtype *fy = f + envs->g_size; + dtype *fz = f + envs->g_size * 2; + + for (k = 0; k <= lk; k++) { + for (j = 0; j <= lj; j++) { + ptr = dj * j + dk * k; + for (i = ptr; i <= ptr+li; i++) { + fx[i] = gx[i+1] + ri[0] * gx[i]; + fy[i] = gy[i+1] + ri[1] * gy[i]; + fz[i] = gz[i+1] + ri[2] * gz[i]; + } + } } +} + +void CINTx1j_1e(dtype *f, dtype *g, dtype rj[3], + FINT li, FINT lj, FINT lk, CINTEnvVars *envs) +{ + FINT i, j, k, ptr; + const FINT dj = envs->g_stride_j; + const FINT dk = envs->g_stride_k; + const dtype *gx = g; + const dtype *gy = g + envs->g_size; + const dtype *gz = g + envs->g_size * 2; + dtype *fx = f; + dtype *fy = f + envs->g_size; + dtype *fz = f + envs->g_size * 2; + + for (k = 0; k <= lk; k++) { + for (j = 0; j <= lj; j++) { + ptr = dj * j + dk * k; + for (i = ptr; i <= ptr+li; i++) { + fx[i] = gx[i+dj] + rj[0] * gx[i]; + fy[i] = gy[i+dj] + rj[1] * gy[i]; + fz[i] = gz[i+dj] + rj[2] * gz[i]; + } + } } +} + +void CINTx1k_1e(dtype *f, dtype *g, dtype *rk, + FINT li, FINT lj, FINT lk, CINTEnvVars *envs) +{ + FINT i, j, k, ptr; + const FINT dj = envs->g_stride_j; + const FINT dk = envs->g_stride_k; + const dtype *gx = g; + const dtype *gy = g + envs->g_size; + const dtype *gz = g + envs->g_size * 2; + dtype *fx = f; + dtype *fy = f + envs->g_size; + dtype *fz = f + envs->g_size * 2; + + for (k = 0; k <= lk; k++) { + for (j = 0; j <= lj; j++) { + ptr = dj * j + dk * k; + for (i = ptr; i <= ptr+li; i++) { + fx[i] = gx[i+dk] + rk[0] * gx[i]; + fy[i] = gy[i+dk] + rk[1] * gy[i]; + fz[i] = gz[i+dk] + rk[2] * gz[i]; + } + } } +} + + +void CINTprim_to_ctr(dtype *gc, FINT nf, dtype *gp, + FINT inc, FINT nprim, FINT nctr, dtype *coeff) +{ + FINT n, i, k; + dtype *pgc = gc; + dtype c; + + for (i = 0; i < inc; i++) { + + for (n = 0; n < nctr; n++) { + c = coeff[nprim*n]; + if (c != 0) { + for (k = 0; k < nf; k++) { + pgc[k] += c * gp[k*inc+i]; + } + } + + pgc += nf; + } + } +} + +void CINTprim_to_ctr_0(dtype *gc, dtype *gp, dtype *coeff, size_t nf, + FINT nprim, FINT nctr, FINT non0ctr, FINT *sortedidx) +{ + FINT i; + size_t n; + dtype c0; + + for (i = 0; i < nctr; i++) { + c0 = coeff[nprim* i]; + for (n = 0; n < nf; n++) { + gc[nf*i+n] = c0 * gp[n]; + } + } +} + +void CINTprim_to_ctr_1(dtype *gc, dtype *gp, dtype *coeff, size_t nf, + FINT nprim, FINT nctr, FINT non0ctr, FINT *sortedidx) +{ + FINT i, j; + size_t n; + dtype c0; + + for (i = 0; i < non0ctr; i++) { + c0 = coeff[nprim*sortedidx[i]]; + j = sortedidx[i]; + for (n = 0; n < nf; n++) { + gc[nf*j+n] += c0 * gp[n]; + } + } +} + + +dtype CINTcommon_fac_sp(FINT l) +{ + switch (l) { + case 0: return 0.282094791773878143; + case 1: return 0.488602511902919921; + default: return 1; + } +} + + +#include +#include + +#define PRIM2CTR0(ctrsymb, gp, ngp) \ + if (ctrsymb##_ctr > 1) {\ + if (*ctrsymb##empty) { \ + CINTprim_to_ctr_0(gctr##ctrsymb, gp, c##ctrsymb+ctrsymb##p, \ + ngp, ctrsymb##_prim, ctrsymb##_ctr, \ + non0ctr##ctrsymb[ctrsymb##p], \ + non0idx##ctrsymb+ctrsymb##p*ctrsymb##_ctr); \ + } else { \ + CINTprim_to_ctr_1(gctr##ctrsymb, gp, c##ctrsymb+ctrsymb##p, \ + ngp, ctrsymb##_prim, ctrsymb##_ctr, \ + non0ctr##ctrsymb[ctrsymb##p], \ + non0idx##ctrsymb+ctrsymb##p*ctrsymb##_ctr); \ + } \ + } \ + *ctrsymb##empty = 0 + + + + + + + + + + + + + + + + +ALL_CINT(int1e_ovlp); +ALL_CINT(int1e_nuc); +ALL_CINT_FORTRAN_(int1e_ovlp); +ALL_CINT_FORTRAN_(int1e_nuc); + + +#include +//#include + +#define OF_CMPLX 2 + +void CINTdset0(FINT n, dtype *x) +{ + FINT i; + for (i = 0; i < n; i++) { + x[i] = 0; + } +} + + +void CINTdaxpy2v(FINT n, dtype a, dtype *x, dtype *y, dtype *v) +{ + + + FINT i; + for (i = 0; i < n; i++) { + v[i] = a * x[i] + y[i]; + } +} + + +void CINTdmat_transpose(dtype *a_t, dtype *a, FINT m, FINT n) +{ + FINT i, j, k; + + for (j = 0; j < n-3; j+=4) { +//#pragma GCC ivdep + + for (i = 0; i < m; i++) { + a_t[(j+0)*m+i] = a[i*n+j+0]; + a_t[(j+1)*m+i] = a[i*n+j+1]; + a_t[(j+2)*m+i] = a[i*n+j+2]; + a_t[(j+3)*m+i] = a[i*n+j+3]; + } + } + + //printf("n-j: %d\n", n-j); + + switch (n-j) { + case 1: + //#pragma GCC ivdep + for (i = 0; i < m; i++) { + a_t[j*m+i] = a[i*n+j]; + } + break; + case 2: + //#pragma GCC ivdep + for (i = 0; i < m; i++) { + a_t[(j+0)*m+i] = a[i*n+j+0]; + a_t[(j+1)*m+i] = a[i*n+j+1]; + } + break; + case 3: + //#pragma GCC ivdep + for (i = 0; i < m; i++) { + a_t[(j+0)*m+i] = a[i*n+j+0]; + a_t[(j+1)*m+i] = a[i*n+j+1]; + a_t[(j+2)*m+i] = a[i*n+j+2]; + } + break; + } +} + + +void CINTdplus_transpose(dtype *a_t, dtype *a, FINT m, FINT n) +{ + FINT i, j, k; + + for (j = 0; j < n-3; j+=4) { +#pragma GCC ivdep + for (i = 0; i < m; i++) { + a_t[(j+0)*m+i] += a[i*n+j+0]; + a_t[(j+1)*m+i] += a[i*n+j+1]; + a_t[(j+2)*m+i] += a[i*n+j+2]; + a_t[(j+3)*m+i] += a[i*n+j+3]; + } + } + + switch (n-j) { + case 1: +#pragma GCC ivdep + for (i = 0; i < m; i++) { + a_t[j*m+i] += a[i*n+j]; + } + break; + case 2: +#pragma GCC ivdep + for (i = 0; i < m; i++) { + a_t[(j+0)*m+i] += a[i*n+j+0]; + a_t[(j+1)*m+i] += a[i*n+j+1]; + } + break; + case 3: +#pragma GCC ivdep + for (i = 0; i < m; i++) { + a_t[(j+0)*m+i] += a[i*n+j+0]; + a_t[(j+1)*m+i] += a[i*n+j+1]; + a_t[(j+2)*m+i] += a[i*n+j+2]; + } + break; + } +} + + +void CINTzmat_transpose(dtype *a_t, dtype *a, FINT m, FINT n) +{ + FINT i, j; + + switch (n) { + case 2: + for (i = 0; i < m; i++) { + a_t[i ] = a[2*i+0]; + a_t[i+m] = a[2*i+1]; + } + break; + default: + switch (m) { + case 2: for (i = 0; i < n; i++) { + a_t[2*i+0] = a[i ]; + a_t[2*i+1] = a[i+n]; + } + break; + default: + for (i = 0; i < n; i++) { + for (j = 0; j < m; j++) { + a_t[i*m+j] = a[j*n+i]; + } + } + } + } +} + + +void CINTdgemm_NN1(FINT m, FINT n, FINT k, + dtype *a, dtype *b, dtype *c, FINT ldc) +{ + FINT i, j, kp; + dtype bi; + for (j = 0; j < n; j++) { + for (i = 0; i < m; i++) { + c[i+ldc*j] = 0; + } + for (kp = 0; kp < k; kp++) { + bi = b[kp+k*j]; +#pragma GCC ivdep + for (i = 0; i < m; i++) { + c[i+ldc*j] += a[i+m*kp] * bi; + } + } + } +} + +void CINTdgemm_NN(FINT m, FINT n, FINT k, + dtype *a, dtype *b, dtype *c) +{ + CINTdgemm_NN1(m, n, k, a, b, c, m); +} + +void CINTdgemm_TN(FINT m, FINT n, FINT k, + dtype *a, dtype *b, dtype *c) +{ + FINT i, j, kp; + dtype ci; + for (j = 0; j < n; j++) { + for (i = 0; i < m; i++) { + ci = 0; +#pragma GCC ivdep + for (kp = 0; kp < k; kp++) { + ci += a[kp+k*i] * b[kp+k*j]; + } + c[i+m*j] = ci; + } + } +} + +void CINTdgemm_NT(FINT m, FINT n, FINT k, + dtype *a, dtype *b, dtype *c) +{ + FINT i, j, kp; + dtype bi; + for (j = 0; j < n; j++) { + for (i = 0; i < m; i++) { + c[i+m*j] = 0; + } + for (kp = 0; kp < k; kp++) { + bi = b[j+n*kp]; +#pragma GCC ivdep + for (i = 0; i < m; i++) { + c[i+m*j] += a[i+m*kp] * bi; + } + } + } +} + + +#include +//#include + + + +dtype CINTsquare_dist(const dtype *r1, const dtype *r2) +{ + dtype r12[3]; + + r12[0] = r1[0] - r2[0]; + r12[1] = r1[1] - r2[1]; + r12[2] = r1[2] - r2[2]; + + return r12[0] * r12[0] + r12[1] * r12[1] + r12[2] * r12[2]; +} + +/*static dtype _gaussian_int(FINT n, dtype alpha) +{ + dtype n1 = (n + 1) * .5; + return exp(lgamma(n1)) / (2. * pow(alpha, n1)); +} + +dtype CINTgto_norm(FINT n, dtype a) +{ + + return 1. / sqrt(_gaussian_int(n*2+2, 2*a)); +} +dtype CINTgto_norm_(FINT *n, dtype *a) +{ + return CINTgto_norm(*n, *a); +}*/ + + +#include +//#include + +static dtype g_trans_cart2sph[] = { + 1, + +#ifdef PYPZPX + + 0, 1, 0, 0, 0, 1, 1, 0, 0, +#else +1, 0, 0, 0, 1, 0, 0, 0, 1, +#endif + 0, 1.092548430592079070, 0, 0, 0, 0, 0, 0, 0, 0, 1.092548430592079070, 0, -0.315391565252520002, 0, 0, -0.315391565252520002, 0, 0.630783130505040012, 0, + 0, 1.092548430592079070, 0, 0, 0, 0.546274215296039535, 0, 0, -0.546274215296039535, 0, 0, 0, 1.770130769779930531, + 0, 0, 0, 0, -0.590043589926643510, 0, 0, 0, 0, 0, 0, 0, 2.890611442640554055, 0, + 0, 0, 0, 0, 0, -0.457045799464465739, 0, 0, 0, 0, -0.457045799464465739, 0, 1.828183197857862944, 0, + 0, 0, -1.119528997770346170, 0, 0, 0, 0, -1.119528997770346170, 0, 0.746352665180230782, -0.457045799464465739, 0, 0, + -0.457045799464465739, 0, 1.828183197857862944, 0, 0, 0, 0, 0, 0, 1.445305721320277020, 0, 0, 0, 0, -1.445305721320277020, + 0, 0, 0.590043589926643510, 0, 0, -1.770130769779930530, 0, 0, 0, 0, + 0, 0, 0, 2.503342941796704538, 0, 0, 0, 0, -2.503342941796704530, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5.310392309339791593, 0, 0, 0, 0, 0, 0, -1.770130769779930530, 0, 0, 0, 0, -0.946174695757560014, 0, 0, 0, 0, -0.946174695757560014, 0, 5.677048174545360108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2.007139630671867500, 0, 0, 0, 0, 0, 0, -2.007139630671867500, 0, 2.676186174229156671, 0, 0.317356640745612911, 0, 0, + 0.634713281491225822, 0, -2.538853125964903290, 0, 0, 0, 0, 0.317356640745612911, 0, -2.538853125964903290, 0, 0.846284375321634430, 0, 0, -2.007139630671867500, 0, 0, 0, 0, -2.007139630671867500, 0, 2.676186174229156671, 0, 0, 0, 0, 0, -0.473087347878780002, 0, 0, 0, 0, 2.838524087272680054, 0, 0, 0, 0, 0.473087347878780009, 0, -2.838524087272680050, 0, 0, 0, 0, 1.770130769779930531, 0, 0, 0, 0, -5.310392309339791590, 0, 0, 0, 0, 0, 0, 0, 0.625835735449176134, + 0, 0, -3.755014412695056800, 0, 0, 0, 0, 0, 0, 0.625835735449176134, 0, 0, 0, 0, 0, 3.281910284200850514, 0, 0, 0, 0, -6.563820568401701020, 0, 0, 0, 0, 0, 0, 0, 0, 0.656382056840170102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8.302649259524165115, 0, 0, 0, 0, 0, 0, -8.302649259524165110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1.467714898305751160, 0, 0, 0, 0, -0.978476598870500779, 0, 11.741719186446009300, 0, 0, 0, 0, 0, 0, 0.489238299435250387, 0, -3.913906395482003100, 0, 0, 0, 0, 0, 0, 0, -4.793536784973323750, 0, 0, 0, 0, 0, 0, -4.793536784973323750, 0, 9.587073569946647510, 0, 0, 0, 0, 0, 0, 0, 0, 0.452946651195696921, 0, 0, 0, 0, 0.905893302391393842, 0, -5.435359814348363050, 0, 0, 0, 0, 0, 0, 0.452946651195696921, 0, -5.435359814348363050, 0, 3.623573209565575370, 0, 0, 0, 1.754254836801353946, 0, 0, 0, 0, 3.508509673602707893, 0, -4.678012898136943850, 0, 0, 0, 0, 0, 0, 1.754254836801353946, 0, -4.678012898136943850, 0, 0.935602579627388771, 0.452946651195696921, 0, 0, 0.905893302391393842, 0, -5.435359814348363050, 0, 0, 0, 0, 0.452946651195696921, 0, -5.435359814348363050, 0, 3.623573209565575370, 0, 0, 0, 0, 0, 0, 0, 0, -2.396768392486661870, 0, 0, 0, 0, 0, 0, 4.793536784973323755, 0, 0, 0, 0, 0, 0, 2.396768392486661877, 0, -4.793536784973323750, 0, 0, -0.489238299435250389, 0, 0, 0.978476598870500775, 0, 3.913906395482003101, 0, 0, 0, 0, 1.467714898305751163, 0, -11.741719186446009300, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2.075662314881041278, 0, 0, 0, 0, -12.453973889286247600, 0, 0, 0, 0, 0, 0, 0, 0, 2.075662314881041278, 0, 0, 0, 0, 0.656382056840170102, 0, 0, -6.563820568401701020, 0, 0, 0, 0, 0, 0, 3.281910284200850514, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 4.0991046311514863, 0, 0, 0, 0, -13.6636821038382887, 0, 0, 0, 0, 0, 0, 0, 0, 4.0991046311514863, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, 11.8330958111587634, 0, 0, 0, 0, 0, 0, -23.6661916223175268, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2.3666191622317525, 0, 0, 0, 0, 0, + + 0, -2.0182596029148963, 0, 0, 0, 0, 0, 0, 20.1825960291489679, 0, 0, 0, 0, 0, 0, 2.0182596029148963, 0, -20.1825960291489679, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, -8.2908473356343109, 0, 0, 0, 0, 0, 0, -5.5272315570895412, 0, 22.1089262283581647, 0, 0, 0, 0, 0, 0, 0, 0, 2.7636157785447706, 0, -7.3696420761193888, 0, 0, 0, + + 0, 0.9212052595149236, 0, 0, 0, 0, 1.8424105190298472, 0, -14.7392841522387776, 0, 0, 0, 0, 0, 0, 0.9212052595149236, 0, -14.7392841522387776, 0, 14.7392841522387776, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, 2.9131068125936568, 0, 0, 0, 0, 0, 0, 5.8262136251873136, 0, -11.6524272503746271, 0, 0, 0, 0, 0, 0, 0, 0, 2.9131068125936568, 0, -11.6524272503746271, 0, 4.6609709001498505, 0, + + -0.3178460113381421, 0, 0, -0.9535380340144264, 0, 5.7212282040865583, 0, 0, 0, 0, -0.9535380340144264, 0, 11.4424564081731166, 0, -7.6283042721154111, 0, 0, 0, 0, 0, 0, -0.3178460113381421, 0, 5.7212282040865583, 0, -7.6283042721154111, 0, 1.0171072362820548, + + 0, 0, 2.9131068125936568, 0, 0, 0, 0, 5.8262136251873136, 0, -11.6524272503746271, 0, 0, 0, 0, 0, 0, 2.9131068125936568, 0, -11.6524272503746271, 0, 4.6609709001498505, 0, 0, 0, 0, 0, 0, 0, + + 0.4606026297574618, 0, 0, 0.4606026297574618, 0, -7.3696420761193888, 0, 0, 0, 0, -0.4606026297574618, 0, 0, 0, 7.3696420761193888, 0, 0, 0, 0, 0, 0, -0.4606026297574618, 0, 7.3696420761193888, 0, -7.3696420761193888, 0, 0, + + 0, 0, -2.7636157785447706, 0, 0, 0, 0, 5.5272315570895412, 0, 7.3696420761193888, 0, 0, 0, 0, 0, 0, 8.2908473356343109, 0, -22.1089262283581647, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + -0.5045649007287241, 0, 0, 2.5228245036436201, 0, 5.0456490072872420, 0, 0, 0, 0, 2.5228245036436201, 0, -30.2738940437234518, 0, 0, 0, 0, 0, 0, 0, 0, -0.5045649007287241, 0, 5.0456490072872420, 0, 0, 0, 0, + + 0, 0, 2.3666191622317525, 0, 0, 0, 0, -23.6661916223175268, 0, 0, 0, 0, 0, 0, 0, 0, 11.8330958111587634, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0.6831841051919144, 0, 0, -10.2477615778787161, 0, 0, 0, 0, 0, 0, 10.2477615778787161, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.6831841051919144, 0, 0, 0, 0, 0, 0, + + 0, 4.9501391276721742, 0, 0, 0, 0, -24.7506956383608703, 0, 0, 0, 0, 0, 0, 0, 0, 14.8504173830165218, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.7071627325245963, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, 15.8757639708114002, 0, 0, 0, 0, 0, 0, -52.9192132360380043, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15.8757639708114002, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, -2.5945778936013020, 0, 0, 0, 0, 2.5945778936013020, 0, 31.1349347232156219, 0, 0, 0, 0, 0, 0, 4.6702402084823440, 0, -62.2698694464312439, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.5189155787202604, 0, 6.2269869446431247, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, -12.4539738892862495, 0, 0, 0, 0, 0, 0, 0, 0, 41.5132462976208316, 0, 0, 0, 0, 0, 0, 0, 0, 12.4539738892862495, 0, -41.5132462976208316, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 1.4081304047606462, 0, 0, 0, 0, 2.3468840079344107, 0, -28.1626080952129243, 0, 0, 0, 0, 0, 0, 0.4693768015868821, 0, -18.7750720634752817, 0, 37.5501441269505705, 0, 0, 0, 0, 0, 0, 0, 0, -0.4693768015868821, 0, 9.3875360317376408, 0, -12.5167147089835229, 0, 0, 0, + + 0, 0, 0, 0, 6.6379903866747414, 0, 0, 0, 0, 0, 0, 13.2759807733494828, 0, -35.4026153955986160, 0, 0, 0, 0, 0, 0, 0, 0, 6.6379903866747414, 0, -35.4026153955986160, 0, 21.2415692373591725, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, -0.4516580379125866, 0, 0, 0, 0, -1.3549741137377600, 0, 10.8397929099020782, 0, 0, 0, 0, 0, 0, -1.3549741137377600, 0, 21.6795858198041564, 0, -21.6795858198041564, 0, 0, 0, 0, 0, 0, 0, 0, -0.4516580379125866, 0, 10.8397929099020782, 0, -21.6795858198041564, 0, 5.7812228852811094, 0, + + 0, 0, -2.3899496919201728, 0, 0, 0, 0, -7.1698490757605189, 0, 14.3396981515210360, 0, 0, 0, 0, 0, 0, -7.1698490757605189, 0, 28.6793963030420720, 0, -11.4717585212168292, 0, 0, 0, 0, 0, 0, 0, 0, -2.3899496919201728, 0, 14.3396981515210360, 0, -11.4717585212168292, 0, 1.0925484305920790, + + -0.4516580379125866, 0, 0, -1.3549741137377600, 0, 10.8397929099020782, 0, 0, 0, 0, -1.3549741137377600, 0, 21.6795858198041564, 0, -21.6795858198041564, 0, 0, 0, 0, 0, 0, -0.4516580379125866, 0, 10.8397929099020782, 0, -21.6795858198041564, 0, 5.7812228852811094, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 3.3189951933373707, 0, 0, 0, 0, 3.3189951933373707, 0, -17.7013076977993080, 0, 0, 0, 0, 0, 0, -3.3189951933373707, 0, 0, 0, 10.6207846186795862, 0, 0, 0, 0, 0, 0, 0, 0, -3.3189951933373707, 0, 17.7013076977993080, 0, -10.6207846186795862, 0, 0, + + 0.4693768015868821, 0, 0, -0.4693768015868821, 0, -9.3875360317376408, 0, 0, 0, 0, -2.3468840079344107, 0, 18.7750720634752817, 0, 12.5167147089835229, 0, 0, 0, 0, 0, 0, -1.4081304047606462, 0, 28.1626080952129243, 0, -37.5501441269505705, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, -3.1134934723215624, 0, 0, 0, 0, 15.5674673616078110, 0, 10.3783115744052079, 0, 0, 0, 0, 0, 0, 15.5674673616078110, 0, -62.2698694464312439, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -3.1134934723215624, 0, 10.3783115744052079, 0, 0, 0, 0, + + -0.5189155787202604, 0, 0, 4.6702402084823440, 0, 6.2269869446431247, 0, 0, 0, 0, 2.5945778936013020, 0, -62.2698694464312439, 0, 0, 0, 0, 0, 0, 0, 0, -2.5945778936013020, 0, 31.1349347232156219, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 2.6459606618019000, 0, 0, 0, 0, -39.6894099270284997, 0, 0, 0, 0, 0, 0, 0, 0, 39.6894099270284997, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2.6459606618019000, 0, 0, 0, 0, 0, 0, + + 0.7071627325245963, 0, 0, -14.8504173830165218, 0, 0, 0, 0, 0, 0, 24.7506956383608703, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -4.9501391276721742, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 5.83141328139864, 0, 0, 0, 0, -40.81989296979048, 0, 0, 0, 0, 0, 0, 0, 0, 40.81989296979048, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -5.83141328139864, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 20.40994648489524, 0, 0, 0, 0, 0, 0, -102.0497324244762, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 61.22983945468572, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2.91570664069932, 0, 0, 0, 0, 0, 0, 0, + 0, -3.193996596357255, 0, 0, 0, 0, 7.452658724833595, 0, 44.71595234900157, 0, 0, 0, 0, 0, 0, 7.452658724833595, 0, -149.0531744966719, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -3.193996596357255, 0, 44.71595234900157, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, -17.24955311049054, 0, 0, 0, 0, 0, 0, 17.24955311049054, 0, 68.99821244196217, 0, 0, 0, 0, 0, 0, 0, 0, 31.04919559888297, 0, -137.9964248839243, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -3.449910622098108, 0, 13.79964248839243, 0, 0, 0, 0, 0, + 0, 1.913666099037323, 0, 0, 0, 0, 1.913666099037323, 0, -45.92798637689575, 0, 0, 0, 0, 0, 0, -1.913666099037323, 0, 0, 0, 76.54664396149292, 0, 0, 0, 0, 0, 0, 0, 0, -1.913666099037323, 0, 45.92798637689575, 0, -76.54664396149292, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 11.1173953976599, 0, 0, 0, 0, 0, 0, 18.52899232943316, 0, -74.11596931773265, 0, 0, 0, 0, 0, 0, 0, 0, 3.705798465886632, 0, -49.41064621182176, 0, 59.29277545418611, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -3.705798465886632, 0, 24.70532310591088, 0, -19.7642584847287, 0, 0, 0, + 0, -0.9123045168698189, 0, 0, 0, 0, -2.736913550609457, 0, 27.36913550609457, 0, 0, 0, 0, 0, 0, -2.736913550609457, 0, 54.73827101218914, 0, -72.98436134958553, 0, 0, 0, 0, 0, 0, 0, 0, -0.9123045168698189, 0, 27.36913550609457, 0, -72.98436134958553, 0, 29.19374453983421, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, -3.8164436064573, 0, 0, 0, 0, 0, 0, -11.4493308193719, 0, 30.5315488516584, 0, 0, 0, 0, 0, 0, 0, 0, -11.4493308193719, 0, 61.06309770331679, 0, -36.63785862199007, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -3.8164436064573, 0, 30.5315488516584, 0, -36.63785862199007, 0, 6.978639737521918, 0, + 0.3180369672047749, 0, 0, 1.272147868819099, 0, -10.1771829505528, 0, 0, 0, 0, 1.908221803228649, 0, -30.53154885165839, 0, 30.53154885165839, 0, 0, 0, 0, 0, 0, 1.272147868819099, 0, -30.53154885165839, 0, 61.06309770331677, 0, -16.28349272088447, 0, 0, 0, 0, 0, 0, 0, 0, 0.3180369672047749, 0, -10.1771829505528, 0, 30.53154885165839, 0, -16.28349272088447, 0, 1.16310662292032, + 0, 0, -3.8164436064573, 0, 0, 0, 0, -11.4493308193719, 0, 30.5315488516584, 0, 0, 0, 0, 0, 0, -11.4493308193719, 0, 61.06309770331679, 0, -36.63785862199007, 0, 0, 0, 0, 0, 0, 0, 0, -3.8164436064573, 0, 30.5315488516584, 0, -36.63785862199007, 0, 6.978639737521918, 0, 0, 0, 0, 0, 0, 0, 0, 0, + -0.4561522584349095, 0, 0, -0.9123045168698189, 0, 13.68456775304729, 0, 0, 0, 0, 0, 0, 13.68456775304729, 0, -36.49218067479276, 0, 0, 0, 0, 0, 0, 0.9123045168698189, 0, -13.68456775304729, 0, 0, 0, 14.5968722699171, 0, 0, 0, 0, 0, 0, 0, 0, 0.4561522584349095, 0, -13.68456775304729, 0, 36.49218067479276, 0, -14.5968722699171, 0, 0, + 0, 0, 3.705798465886632, 0, 0, 0, 0, -3.705798465886632, 0, -24.70532310591088, 0, 0, 0, 0, 0, 0, -18.52899232943316, 0, 49.41064621182176, 0, 19.7642584847287, 0, 0, 0, 0, 0, 0, 0, 0, -11.1173953976599, 0, 74.11596931773265, 0, -59.29277545418611, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0.4784165247593308, 0, 0, -1.913666099037323, 0, -11.48199659422394, 0, 0, 0, 0, -4.784165247593307, 0, 57.40998297111968, 0, 19.13666099037323, 0, 0, 0, 0, 0, 0, -1.913666099037323, 0, 57.40998297111968, 0, -114.8199659422394, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.4784165247593308, 0, -11.48199659422394, 0, 19.13666099037323, 0, 0, 0, 0, + 0, 0, -3.449910622098108, 0, 0, 0, 0, 31.04919559888297, 0, 13.79964248839243, 0, 0, 0, 0, 0, 0, 17.24955311049054, 0, -137.9964248839243, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -17.24955311049054, 0, 68.99821244196217, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + -0.5323327660595425, 0, 0, 7.452658724833595, 0, 7.452658724833595, 0, 0, 0, 0, 0, 0, -111.7898808725039, 0, 0, 0, 0, 0, 0, 0, 0, -7.452658724833595, 0, 111.7898808725039, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5323327660595425, 0, -7.452658724833595, 0, 0, 0, 0, 0, 0, + 0, 0, 2.91570664069932, 0, 0, 0, 0, -61.22983945468572, 0, 0, 0, 0, 0, 0, 0, 0, 102.0497324244762, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -20.40994648489524, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0.72892666017483, 0, 0, -20.40994648489524, 0, 0, 0, 0, 0, 0, 51.0248662122381, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -20.40994648489524, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.72892666017483, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 6.740108566678694, 0, 0, 0, 0, -62.9076799556678, 0, 0, 0, 0, 0, 0, 0, 0, 94.36151993350171, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -26.96043426671477, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.7489009518531882, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 25.41854119163758, 0, 0, 0, 0, 0, 0, -177.9297883414631, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 177.9297883414631, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -25.41854119163758, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, -3.814338369408373, 0, 0, 0, 0, 15.25735347763349, 0, 61.02941391053396, 0, 0, 0, 0, 0, 0, 7.628676738816745, 0, -305.1470695526698, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -10.89810962688107, 0, 183.0882417316019, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5449054813440533, 0, -8.718487701504852, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, -22.65129549625621, 0, 0, 0, 0, 0, 0, 52.85302282459782, 0, 105.7060456491956, 0, 0, 0, 0, 0, 0, 0, 0, 52.85302282459782, 0, -352.3534854973187, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -22.65129549625621, 0, 105.7060456491956, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 2.436891395195093, 0, 0, 0, 0, 0, 0, -68.23295906546261, 0, 0, 0, 0, 0, 0, -6.82329590654626, 0, 68.23295906546261, 0, 136.4659181309252, 0, 0, 0, 0, 0, 0, 0, 0, -3.899026232312149, 0, 122.8193263178327, 0, -272.9318362618504, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.4873782790390186, 0, -13.64659181309252, 0, 27.29318362618504, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 16.31079695491669, 0, 0, 0, 0, 0, 0, 16.31079695491669, 0, -130.4863756393335, 0, 0, 0, 0, 0, 0, 0, 0, -16.31079695491669, 0, 0, 0, 130.4863756393335, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -16.31079695491669, 0, 130.4863756393335, 0, -130.4863756393335, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, -1.385125560048583, 0, 0, 0, 0, -3.693668160129556, 0, 49.864520161749, 0, 0, 0, 0, 0, 0, -2.770251120097167, 0, 83.107533602915, 0, -166.21506720583, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16.621506720583, 0, -110.8100448038867, 0, 88.64803584310934, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.4617085200161945, 0, -16.621506720583, 0, 55.40502240194333, 0, -29.54934528103645, 0, 0, 0, + 0, 0, 0, 0, -8.46325696792098, 0, 0, 0, 0, 0, 0, -25.38977090376294, 0, 84.63256967920979, 0, 0, 0, 0, 0, 0, 0, 0, -25.38977090376294, 0, 169.2651393584196, 0, -135.4121114867357, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8.46325696792098, 0, 84.63256967920979, 0, -135.4121114867357, 0, 38.68917471049591, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0.451093112065591, 0, 0, 0, 0, 1.804372448262364, 0, -18.04372448262364, 0, 0, 0, 0, 0, 0, 2.706558672393546, 0, -54.13117344787092, 0, 72.17489793049457, 0, 0, 0, 0, 0, 0, 0, 0, 1.804372448262364, 0, -54.13117344787092, 0, 144.3497958609891, 0, -57.73991834439565, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.451093112065591, 0, -18.04372448262364, 0, 72.17489793049457, 0, -57.73991834439565, 0, 8.248559763485094, 0, + 0, 0, 3.026024588281776, 0, 0, 0, 0, 12.1040983531271, 0, -32.27759560833895, 0, 0, 0, 0, 0, 0, 18.15614752969066, 0, -96.83278682501685, 0, 58.0996720950101, 0, 0, 0, 0, 0, 0, 0, 0, 12.1040983531271, 0, -96.83278682501685, 0, 116.1993441900202, 0, -22.1332084171467, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3.026024588281776, 0, -32.27759560833895, 0, 58.0996720950101, 0, -22.1332084171467, 0, 1.229622689841484, + 0.451093112065591, 0, 0, 1.804372448262364, 0, -18.04372448262364, 0, 0, 0, 0, 2.706558672393546, 0, -54.13117344787092, 0, 72.17489793049457, 0, 0, 0, 0, 0, 0, 1.804372448262364, 0, -54.13117344787092, 0, 144.3497958609891, 0, -57.73991834439565, 0, 0, 0, 0, 0, 0, 0, 0, 0.451093112065591, 0, -18.04372448262364, 0, 72.17489793049457, 0, -57.73991834439565, 0, 8.248559763485094, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, -4.23162848396049, 0, 0, 0, 0, -8.46325696792098, 0, 42.3162848396049, 0, 0, 0, 0, 0, 0, 0, 0, 42.3162848396049, 0, -67.70605574336784, 0, 0, 0, 0, 0, 0, 0, 0, 8.46325696792098, 0, -42.3162848396049, 0, 0, 0, 19.34458735524795, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4.23162848396049, 0, -42.3162848396049, 0, 67.70605574336784, 0, -19.34458735524795, 0, 0, + -0.4617085200161945, 0, 0, 0, 0, 16.621506720583, 0, 0, 0, 0, 2.770251120097167, 0, -16.621506720583, 0, -55.40502240194333, 0, 0, 0, 0, 0, 0, 3.693668160129556, 0, -83.107533602915, 0, 110.8100448038867, 0, 29.54934528103645, 0, 0, 0, 0, 0, 0, 0, 0, 1.385125560048583, 0, -49.864520161749, 0, 166.21506720583, 0, -88.64803584310934, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 4.077699238729173, 0, 0, 0, 0, -16.31079695491669, 0, -32.62159390983339, 0, 0, 0, 0, 0, 0, -40.77699238729173, 0, 163.1079695491669, 0, 32.62159390983339, 0, 0, 0, 0, 0, 0, 0, 0, -16.31079695491669, 0, 163.1079695491669, 0, -195.7295634590003, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4.077699238729173, 0, -32.62159390983339, 0, 32.62159390983339, 0, 0, 0, 0, + 0.4873782790390186, 0, 0, -3.899026232312149, 0, -13.64659181309252, 0, 0, 0, 0, -6.82329590654626, 0, 122.8193263178327, 0, 27.29318362618504, 0, 0, 0, 0, 0, 0, 0, 0, 68.23295906546261, 0, -272.9318362618504, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2.436891395195093, 0, -68.23295906546261, 0, 136.4659181309252, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, -3.775215916042701, 0, 0, 0, 0, 52.85302282459782, 0, 17.61767427486594, 0, 0, 0, 0, 0, 0, 0, 0, -264.2651141229891, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -52.85302282459782, 0, 264.2651141229891, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3.775215916042701, 0, -17.61767427486594, 0, 0, 0, 0, 0, 0, + -0.5449054813440533, 0, 0, 10.89810962688107, 0, 8.718487701504852, 0, 0, 0, 0, -7.628676738816745, 0, -183.0882417316019, 0, 0, 0, 0, 0, 0, 0, 0, -15.25735347763349, 0, 305.1470695526698, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3.814338369408373, 0, -61.02941391053396, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 3.177317648954698, 0, 0, 0, 0, -88.96489417073154, 0, 0, 0, 0, 0, 0, 0, 0, 222.4122354268289, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -88.96489417073154, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3.177317648954698, 0, 0, 0, 0, 0, 0, 0, 0, + 0.7489009518531882, 0, 0, -26.96043426671477, 0, 0, 0, 0, 0, 0, 94.36151993350171, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -62.9076799556678, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6.740108566678694, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 7.673951182219901, 0, 0, 0, 0, -92.08741418663881, 0, 0, 0, 0, 0, 0, 0, 0, 193.3835697919415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -92.08741418663881, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7.673951182219901, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 30.88705769902543, 0, 0, 0, 0, 0, 0, -288.2792051909041, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 432.4188077863561, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -123.5482307961017, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3.431895299891715, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, -4.453815461763347, 0, 0, 0, 0, 26.72289277058008, 0, 80.16867831174027, 0, 0, 0, 0, 0, 0, 0, 0, -561.1807481821819, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -26.72289277058008, 0, 561.1807481821819, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4.453815461763347, 0, -80.16867831174027, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, -28.63763513582592, 0, 0, 0, 0, 0, 0, 114.5505405433037, 0, 152.7340540577382, 0, 0, 0, 0, 0, 0, 0, 0, 57.27527027165184, 0, -763.6702702886912, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -81.82181467378834, 0, 458.2021621732147, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4.091090733689417, 0, -21.81915057967689, 0, 0, 0, 0, 0, 0, 0, + 0, 2.976705744527138, 0, 0, 0, 0, -3.968940992702851, 0, -95.25458382486842, 0, 0, 0, 0, 0, 0, -13.89129347445998, 0, 222.2606955913596, 0, 222.2606955913597, 0, 0, 0, 0, 0, 0, 0, 0, -3.968940992702851, 0, 222.2606955913596, 0, -740.8689853045323, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2.976705744527138, 0, -95.25458382486842, 0, 222.2606955913597, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 22.18705464592268, 0, 0, 0, 0, 0, 0, 0, 0, -207.0791766952783, 0, 0, 0, 0, 0, 0, 0, 0, -62.12375300858349, 0, 207.0791766952783, 0, 248.495012034334, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -35.49928743347628, 0, 372.742518051501, 0, -496.990024068668, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4.437410929184535, 0, -41.41583533905566, 0, 49.6990024068668, 0, 0, 0, 0, 0, + 0, -1.870976726712969, 0, 0, 0, 0, -3.741953453425937, 0, 78.58102252194469, 0, 0, 0, 0, 0, 0, 0, 0, 78.58102252194469, 0, -314.3240900877788, 0, 0, 0, 0, 0, 0, 0, 0, 3.741953453425937, 0, -78.58102252194469, 0, 0, 0, 209.5493933918525, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.870976726712969, 0, -78.58102252194469, 0, 314.3240900877788, 0, -209.5493933918525, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, -13.89129347445998, 0, 0, 0, 0, 0, 0, -37.04344926522661, 0, 166.6955216935197, 0, 0, 0, 0, 0, 0, 0, 0, -27.78258694891996, 0, 277.8258694891996, 0, -333.3910433870395, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 55.56517389783991, 0, -222.2606955913596, 0, 127.0061117664912, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4.630431158153326, 0, -55.56517389783991, 0, 111.1303477956798, 0, -42.33537058883041, 0, 0, 0, + 0, 0.9081022627604556, 0, 0, 0, 0, 3.632409051041822, 0, -43.58890861250187, 0, 0, 0, 0, 0, 0, 5.448613576562733, 0, -130.7667258375056, 0, 217.9445430625093, 0, 0, 0, 0, 0, 0, 0, 0, 3.632409051041822, 0, -130.7667258375056, 0, 435.8890861250187, 0, -232.4741792666766, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.9081022627604556, 0, -43.58890861250187, 0, 217.9445430625093, 0, -232.4741792666766, 0, 49.815895557145, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 4.718637772708116, 0, 0, 0, 0, 0, 0, 18.87455109083247, 0, -62.91517030277488, 0, 0, 0, 0, 0, 0, 0, 0, 28.3118266362487, 0, -188.7455109083247, 0, 150.9964087266597, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18.87455109083247, 0, -188.7455109083247, 0, 301.9928174533194, 0, -86.28366212951984, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4.718637772708116, 0, -62.91517030277488, 0, 150.9964087266597, 0, -86.28366212951984, 0, 9.587073569946648, 0, + -0.3181304937373671, 0, 0, -1.590652468686835, 0, 15.90652468686835, 0, 0, 0, 0, -3.181304937373671, 0, 63.62609874747341, 0, -84.83479832996456, 0, 0, 0, 0, 0, 0, -3.181304937373671, 0, 95.43914812121012, 0, -254.5043949898937, 0, 101.8017579959575, 0, 0, 0, 0, 0, 0, 0, 0, -1.590652468686835, 0, 63.62609874747341, 0, -254.5043949898937, 0, 203.6035159919149, 0, -29.08621657027356, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.3181304937373671, 0, 15.90652468686835, 0, -84.83479832996456, 0, 101.8017579959575, 0, -29.08621657027356, 0, 1.292720736456603, + 0, 0, 4.718637772708116, 0, 0, 0, 0, 18.87455109083247, 0, -62.91517030277488, 0, 0, 0, 0, 0, 0, 28.3118266362487, 0, -188.7455109083247, 0, 150.9964087266597, 0, 0, 0, 0, 0, 0, 0, 0, 18.87455109083247, 0, -188.7455109083247, 0, 301.9928174533194, 0, -86.28366212951984, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4.718637772708116, 0, -62.91517030277488, 0, 150.9964087266597, 0, -86.28366212951984, 0, 9.587073569946648, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0.4540511313802278, 0, 0, 1.362153394140683, 0, -21.79445430625093, 0, 0, 0, 0, 0.9081022627604556, 0, -43.58890861250187, 0, 108.9722715312547, 0, 0, 0, 0, 0, 0, -0.9081022627604556, 0, 0, 0, 108.9722715312547, 0, -116.2370896333383, 0, 0, 0, 0, 0, 0, 0, 0, -1.362153394140683, 0, 43.58890861250187, 0, -108.9722715312547, 0, 0, 0, 24.9079477785725, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.4540511313802278, 0, 21.79445430625093, 0, -108.9722715312547, 0, 116.2370896333383, 0, -24.9079477785725, 0, 0, + 0, 0, -4.630431158153326, 0, 0, 0, 0, 0, 0, 55.56517389783991, 0, 0, 0, 0, 0, 0, 27.78258694891996, 0, -55.56517389783991, 0, -111.1303477956798, 0, 0, 0, 0, 0, 0, 0, 0, 37.04344926522661, 0, -277.8258694891996, 0, 222.2606955913596, 0, 42.33537058883041, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13.89129347445998, 0, -166.6955216935197, 0, 333.3910433870395, 0, -127.0061117664912, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + -0.4677441816782422, 0, 0, 1.403232545034726, 0, 19.64525563048617, 0, 0, 0, 0, 6.548418543495391, 0, -78.58102252194469, 0, -78.58102252194469, 0, 0, 0, 0, 0, 0, 6.548418543495391, 0, -196.4525563048617, 0, 392.9051126097235, 0, 52.38734834796313, 0, 0, 0, 0, 0, 0, 0, 0, 1.403232545034726, 0, -78.58102252194469, 0, 392.9051126097235, 0, -314.3240900877788, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.4677441816782422, 0, 19.64525563048617, 0, -78.58102252194469, 0, 52.38734834796313, 0, 0, 0, 0, + 0, 0, 4.437410929184535, 0, 0, 0, 0, -35.49928743347628, 0, -41.41583533905566, 0, 0, 0, 0, 0, 0, -62.12375300858349, 0, 372.742518051501, 0, 49.6990024068668, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 207.0791766952783, 0, -496.990024068668, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22.18705464592268, 0, -207.0791766952783, 0, 248.495012034334, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0.4961176240878564, 0, 0, -6.449529113142133, 0, -15.8757639708114, 0, 0, 0, 0, -6.945646737229989, 0, 222.2606955913596, 0, 37.04344926522661, 0, 0, 0, 0, 0, 0, 6.945646737229989, 0, 0, 0, -555.6517389783992, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6.449529113142133, 0, -222.2606955913596, 0, 555.6517389783992, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.4961176240878564, 0, 15.8757639708114, 0, -37.04344926522661, 0, 0, 0, 0, 0, 0, + 0, 0, -4.091090733689417, 0, 0, 0, 0, 81.82181467378834, 0, 21.81915057967689, 0, 0, 0, 0, 0, 0, -57.27527027165184, 0, -458.2021621732147, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -114.5505405433037, 0, 763.6702702886912, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28.63763513582592, 0, -152.7340540577382, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + -0.5567269327204184, 0, 0, 15.0316271834513, 0, 10.02108478896753, 0, 0, 0, 0, -23.38253117425757, 0, -280.590374091091, 0, 0, 0, 0, 0, 0, 0, 0, -23.38253117425757, 0, 701.4759352277273, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15.0316271834513, 0, -280.590374091091, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.5567269327204184, 0, 10.02108478896753, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 3.431895299891715, 0, 0, 0, 0, -123.5482307961017, 0, 0, 0, 0, 0, 0, 0, 0, 432.4188077863561, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -288.2792051909041, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30.88705769902543, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0.7673951182219901, 0, 0, -34.53278031998956, 0, 0, 0, 0, 0, 0, 161.1529748266179, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -161.1529748266179, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34.53278031998956, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.7673951182219901, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 8.631063163659167, 0, 0, 0, 0, -129.4659474548875, 0, 0, 0, 0, 0, 0, 0, 0, 362.504652873685, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -258.9318949097751, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43.15531581829584, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.7846421057871971, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 36.80297698805311, 0, 0, 0, 0, 0, 0, -441.6357238566373, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 927.4350200989384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -441.6357238566373, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36.80297698805311, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, -5.110940374050938, 0, 0, 0, 0, 42.59116978375781, 0, 102.2188074810188, 0, 0, 0, 0, 0, 0, -23.85105507890438, 0, -954.0422031561751, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -51.10940374050938, 0, 1431.063304734263, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19.87587923242031, 0, -408.875229924075, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.5678822637834375, 0, 11.35764527566875, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, -35.19037680383713, 0, 0, 0, 0, 0, 0, 211.1422608230228, 0, 211.1422608230228, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1477.995825761159, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -211.1422608230228, 0, 1477.995825761159, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35.19037680383713, 0, -211.1422608230228, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 3.532036427339827, 0, 0, 0, 0, -10.59610928201948, 0, -127.1533113842337, 0, 0, 0, 0, 0, 0, -21.19221856403896, 0, 508.613245536935, 0, 339.0754970246234, 0, 0, 0, 0, 0, 0, 0, 0, 3.027459794862709, 0, 254.3066227684675, 0, -1695.377485123117, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9.586956017065244, 0, -363.295175383525, 0, 1017.22649107387, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.5045766324771181, 0, 18.16475876917625, 0, -48.43935671780334, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 28.72100542905686, 0, 0, 0, 0, 0, 0, -38.29467390540915, 0, -306.3573912432732, 0, 0, 0, 0, 0, 0, 0, 0, -134.031358668932, 0, 714.8339129009709, 0, 428.9003477405824, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -38.29467390540915, 0, 714.8339129009709, 0, -1429.667825801941, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28.72100542905686, 0, -306.3573912432732, 0, 428.9003477405824, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, -2.369836079783365, 0, 0, 0, 0, -2.369836079783365, 0, 113.7521318296015, 0, 0, 0, 0, 0, 0, 6.63554102339342, 0, 0, 0, -530.8432818714737, 0, 0, 0, 0, 0, 0, 0, 0, 10.4272787510468, 0, -318.5059691228842, 0, 530.8432818714737, 0, 424.674625497179, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3.31777051169671, 0, -182.0034109273624, 0, 955.5179073686526, 0, -849.349250994358, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.4739672159566729, 0, 22.7504263659203, 0, -106.1686563742947, 0, 84.9349250994358, 0, 0, 0, 0, 0, + 0, 0, 0, 0, -20.06399012830402, 0, 0, 0, 0, 0, 0, -40.12798025660804, 0, 280.8958617962563, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 280.8958617962563, 0, -674.150068311015, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40.12798025660804, 0, -280.8958617962563, 0, 0, 0, 321.0238420528643, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20.06399012830402, 0, -280.8958617962563, 0, 674.150068311015, 0, -321.0238420528643, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1.373687498354136, 0, 0, 0, 0, 5.036854160631831, 0, -76.92649990783158, 0, 0, 0, 0, 0, 0, 6.410541658985967, 0, -205.1373330875509, 0, 461.5589994469895, 0, 0, 0, 0, 0, 0, 0, 0, 2.747374996708271, 0, -153.8529998156632, 0, 769.2649990783159, 0, -615.4119992626527, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.4578958327847119, 0, 0, 0, 153.8529998156632, 0, -410.2746661751018, 0, 175.8319997893294, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.4578958327847119, 0, 25.64216663594386, 0, -153.8529998156632, 0, 205.1373330875509, 0, -58.61066659644312, 0, 0, 0, + 0, 0, 0, 0, 10.27973595067153, 0, 0, 0, 0, 0, 0, 41.11894380268614, 0, -164.4757752107446, 0, 0, 0, 0, 0, 0, 0, 0, 61.67841570402921, 0, -493.4273256322336, 0, 493.4273256322337, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41.11894380268614, 0, -493.4273256322336, 0, 986.8546512644674, 0, -375.9446290531304, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10.27973595067153, 0, -164.4757752107446, 0, 493.4273256322337, 0, -375.9446290531304, 0, 62.65743817552173, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, -0.4507962425947618, 0, 0, 0, 0, -2.253981212973809, 0, 27.04777455568571, 0, 0, 0, 0, 0, 0, -4.507962425947618, 0, 108.1910982227429, 0, -180.3184970379047, 0, 0, 0, 0, 0, 0, 0, 0, -4.507962425947618, 0, 162.2866473341143, 0, -540.9554911137142, 0, 288.5095952606476, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2.253981212973809, 0, 108.1910982227429, 0, -540.9554911137142, 0, 577.0191905212952, 0, -123.6469693974204, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.4507962425947618, 0, 27.04777455568571, 0, -180.3184970379047, 0, 288.5095952606476, 0, -123.6469693974204, 0, 10.99084172421515, 0, + 0, 0, -3.662285987505434, 0, 0, 0, 0, -18.31142993752717, 0, 61.03809979175723, 0, 0, 0, 0, 0, 0, -36.62285987505434, 0, 244.1523991670289, 0, -195.3219193336232, 0, 0, 0, 0, 0, 0, 0, 0, -36.62285987505434, 0, 366.2285987505434, 0, -585.9657580008695, 0, 167.4187880002484, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -18.31142993752717, 0, 244.1523991670289, 0, -585.9657580008695, 0, 334.8375760004968, 0, -37.20417511116631, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -3.662285987505434, 0, 61.03809979175723, 0, -195.3219193336232, 0, 167.4187880002484, 0, -37.20417511116631, 0, 1.352879094951502, + -0.4507962425947618, 0, 0, -2.253981212973809, 0, 27.04777455568571, 0, 0, 0, 0, -4.507962425947618, 0, 108.1910982227429, 0, -180.3184970379047, 0, 0, 0, 0, 0, 0, -4.507962425947618, 0, 162.2866473341143, 0, -540.9554911137142, 0, 288.5095952606476, 0, 0, 0, 0, 0, 0, 0, 0, -2.253981212973809, 0, 108.1910982227429, 0, -540.9554911137142, 0, 577.0191905212952, 0, -123.6469693974204, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.4507962425947618, 0, 27.04777455568571, 0, -180.3184970379047, 0, 288.5095952606476, 0, -123.6469693974204, 0, 10.99084172421515, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 5.139867975335767, 0, 0, 0, 0, 15.4196039260073, 0, -82.23788760537228, 0, 0, 0, 0, 0, 0, 10.27973595067153, 0, -164.4757752107446, 0, 246.7136628161169, 0, 0, 0, 0, 0, 0, 0, 0, -10.27973595067153, 0, 0, 0, 246.7136628161169, 0, -187.9723145265652, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -15.4196039260073, 0, 164.4757752107446, 0, -246.7136628161169, 0, 0, 0, 31.32871908776087, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -5.139867975335767, 0, 82.23788760537228, 0, -246.7136628161169, 0, 187.9723145265652, 0, -31.32871908776087, 0, 0, + 0.4578958327847119, 0, 0, 0.4578958327847119, 0, -25.64216663594386, 0, 0, 0, 0, -2.747374996708271, 0, 0, 0, 153.8529998156632, 0, 0, 0, 0, 0, 0, -6.410541658985967, 0, 153.8529998156632, 0, -153.8529998156632, 0, -205.1373330875509, 0, 0, 0, 0, 0, 0, 0, 0, -5.036854160631831, 0, 205.1373330875509, 0, -769.2649990783159, 0, 410.2746661751018, 0, 58.61066659644312, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1.373687498354136, 0, 76.92649990783158, 0, -461.5589994469895, 0, 615.4119992626527, 0, -175.8319997893294, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, -5.015997532076005, 0, 0, 0, 0, 15.04799259622802, 0, 70.22396544906408, 0, 0, 0, 0, 0, 0, 70.22396544906407, 0, -280.8958617962563, 0, -168.5375170777538, 0, 0, 0, 0, 0, 0, 0, 0, 70.22396544906407, 0, -702.2396544906408, 0, 842.6875853887689, 0, 80.25596051321608, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15.04799259622802, 0, -280.8958617962563, 0, 842.6875853887689, 0, -481.5357630792965, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -5.015997532076005, 0, 70.22396544906408, 0, -168.5375170777538, 0, 80.25596051321608, 0, 0, 0, 0, + -0.4739672159566729, 0, 0, 3.31777051169671, 0, 22.7504263659203, 0, 0, 0, 0, 10.4272787510468, 0, -182.0034109273624, 0, -106.1686563742947, 0, 0, 0, 0, 0, 0, 6.63554102339342, 0, -318.5059691228842, 0, 955.5179073686526, 0, 84.9349250994358, 0, 0, 0, 0, 0, 0, 0, 0, -2.369836079783365, 0, 0, 0, 530.8432818714737, 0, -849.349250994358, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2.369836079783365, 0, 113.7521318296015, 0, -530.8432818714737, 0, 424.674625497179, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 4.786834238176144, 0, 0, 0, 0, -62.22884509628987, 0, -51.0595652072122, 0, 0, 0, 0, 0, 0, -67.01567933446601, 0, 714.8339129009709, 0, 71.48339129009707, 0, 0, 0, 0, 0, 0, 0, 0, 67.01567933446601, 0, 0, 0, -1072.250869351456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62.22884509628987, 0, -714.8339129009709, 0, 1072.250869351456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -4.786834238176144, 0, 51.0595652072122, 0, -71.48339129009707, 0, 0, 0, 0, 0, 0, + 0.5045766324771181, 0, 0, -9.586956017065244, 0, -18.16475876917625, 0, 0, 0, 0, -3.027459794862709, 0, 363.295175383525, 0, 48.43935671780334, 0, 0, 0, 0, 0, 0, 21.19221856403896, 0, -254.3066227684675, 0, -1017.22649107387, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10.59610928201948, 0, -508.613245536935, 0, 1695.377485123117, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -3.532036427339827, 0, 127.1533113842337, 0, -339.0754970246234, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, -4.398797100479641, 0, 0, 0, 0, 118.7675217129503, 0, 26.39278260287784, 0, 0, 0, 0, 0, 0, -184.7494782201449, 0, -738.9979128805796, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -184.7494782201449, 0, 1847.494782201449, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 118.7675217129503, 0, -738.9979128805796, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -4.398797100479641, 0, 26.39278260287784, 0, 0, 0, 0, 0, 0, 0, 0, + -0.5678822637834375, 0, 0, 19.87587923242031, 0, 11.35764527566875, 0, 0, 0, 0, -51.10940374050938, 0, -408.875229924075, 0, 0, 0, 0, 0, 0, 0, 0, -23.85105507890438, 0, 1431.063304734263, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42.59116978375781, 0, -954.0422031561751, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -5.110940374050938, 0, 102.2188074810188, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 3.680297698805311, 0, 0, 0, 0, -165.613396446239, 0, 0, 0, 0, 0, 0, 0, 0, 772.8625167491152, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -772.8625167491152, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 165.613396446239, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -3.680297698805311, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0.7846421057871971, 0, 0, -43.15531581829584, 0, 0, 0, 0, 0, 0, 258.9318949097751, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -362.504652873685, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 129.4659474548875, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8.631063163659167, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 9.609863949407661, 0, 0, 0, 0, -176.1808390724738, 0, 0, 0, 0, 0, 0, 0, 0, 634.2510206609056, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -634.2510206609056, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 176.1808390724738, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9.609863949407661, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 43.15531581829583, 0, 0, 0, 0, 0, 0, -647.3297372744373, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1812.523264368425, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1294.659474548875, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 215.7765790914791, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -3.923210528935984, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, -5.784458347938102, 0, 0, 0, 0, 63.62904182731912, 0, 127.2580836546383, 0, 0, 0, 0, 0, 0, -76.35485019278295, 0, -1527.097003855659, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -76.35485019278295, 0, 3206.903708096884, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63.62904182731912, 0, -1527.097003855659, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -5.784458347938102, 0, 127.2580836546383, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, -42.2938455917996, 0, 0, 0, 0, 0, 0, 352.4487132649967, 0, 281.9589706119974, 0, 0, 0, 0, 0, 0, 0, 0, -197.3712794283981, 0, -2631.617059045309, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -422.938455917996, 0, 3947.425588567963, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 164.4760661903318, 0, -1127.835882447989, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -4.699316176866622, 0, 31.32877451244415, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 4.101899446670816, 0, 0, 0, 0, -20.50949723335408, 0, -164.0759778668327, 0, 0, 0, 0, 0, 0, -24.6113966800249, 0, 984.455867200996, 0, 492.2279336004979, 0, 0, 0, 0, 0, 0, 0, 0, 24.6113966800249, 0, 0, 0, -3445.595535203485, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20.50949723335408, 0, -984.455867200996, 0, 3445.595535203485, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -4.101899446670816, 0, 164.0759778668327, 0, -492.2279336004979, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 35.89162015836965, 0, 0, 0, 0, 0, 0, -107.6748604751089, 0, -430.6994419004357, 0, 0, 0, 0, 0, 0, 0, 0, -215.3497209502179, 0, 1722.797767601743, 0, 689.1191070406971, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30.76424585003112, 0, 861.3988838008713, 0, -3445.595535203485, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 97.42011185843189, 0, -1230.569834001245, 0, 2067.357321122091, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -5.127374308338521, 0, 61.52849170006224, 0, -98.44558672009958, 0, 0, 0, 0, 0, 0, 0, + 0, -2.881335616715016, 0, 0, 0, 0, 0.9604452055716719, 0, 155.5921233026108, 0, 0, 0, 0, 0, 0, 17.28801370029009, 0, -207.4561644034811, 0, -829.8246576139245, 0, 0, 0, 0, 0, 0, 0, 0, 17.28801370029009, 0, -726.0965754121839, 0, 1936.257534432491, 0, 774.5030137729962, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.9604452055716719, 0, -207.4561644034811, 0, 1936.257534432491, 0, -2581.676712576654, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2.881335616715016, 0, 155.5921233026108, 0, -829.8246576139245, 0, 774.5030137729962, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, -26.95242673514147, 0, 0, 0, 0, 0, 0, -26.95242673514147, 0, 431.2388277622634, 0, 0, 0, 0, 0, 0, 0, 0, 75.4667948583961, 0, 0, 0, -1207.468717734338, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 118.5906776346225, 0, -1207.468717734338, 0, 1207.468717734338, 0, 689.9821244196215, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37.73339742919805, 0, -689.9821244196215, 0, 2173.443691921808, 0, -1379.964248839243, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -5.390485347028293, 0, 86.24776555245269, 0, -241.4937435468676, 0, 137.9964248839243, 0, 0, 0, 0, 0, + 0, 1.848921220493557, 0, 0, 0, 0, 5.54676366148067, 0, -118.3309581115876, 0, 0, 0, 0, 0, 0, 3.697842440987113, 0, -236.6619162231752, 0, 828.3167067811135, 0, 0, 0, 0, 0, 0, 0, 0, -3.697842440987113, 0, 0, 0, 828.3167067811135, 0, -1325.306730849781, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -5.54676366148067, 0, 236.6619162231752, 0, -828.3167067811135, 0, 0, 0, 473.3238324463505, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1.848921220493557, 0, 118.3309581115876, 0, -828.3167067811135, 0, 1325.306730849781, 0, -473.3238324463505, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 16.64029098444201, 0, 0, 0, 0, 0, 0, 61.01440027628737, 0, -310.6187650429175, 0, 0, 0, 0, 0, 0, 0, 0, 77.65469126072938, 0, -828.3167067811133, 0, 1118.227554154503, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33.28058196888402, 0, -621.237530085835, 0, 1863.712590257505, 0, -1064.978623004289, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -5.54676366148067, 0, 0, 0, 372.742518051501, 0, -709.9857486695257, 0, 236.6619162231752, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -5.54676366148067, 0, 103.5395883476392, 0, -372.742518051501, 0, 354.9928743347629, 0, -78.88730540772508, 0, 0, 0, + 0, -0.9057827129626244, 0, 0, 0, 0, -4.528913564813122, 0, 63.4047899073837, 0, 0, 0, 0, 0, 0, -9.057827129626244, 0, 253.6191596295348, 0, -507.2383192590696, 0, 0, 0, 0, 0, 0, 0, 0, -9.057827129626244, 0, 380.4287394443022, 0, -1521.714957777209, 0, 1014.476638518139, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -4.528913564813122, 0, 253.6191596295348, 0, -1521.714957777209, 0, 2028.953277036278, 0, -579.7009362960796, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.9057827129626244, 0, 63.4047899073837, 0, -507.2383192590696, 0, 1014.476638518139, 0, -579.7009362960796, 0, 77.2934581728106, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, -5.620233931023189, 0, 0, 0, 0, 0, 0, -28.10116965511595, 0, 112.4046786204638, 0, 0, 0, 0, 0, 0, 0, 0, -56.20233931023189, 0, 449.6187144818551, 0, -449.6187144818551, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -56.20233931023189, 0, 674.4280717227828, 0, -1348.856143445566, 0, 513.8499594078344, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -28.10116965511595, 0, 449.6187144818551, 0, -1348.856143445566, 0, 1027.699918815669, 0, -171.2833198026115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -5.620233931023189, 0, 112.4046786204638, 0, -449.6187144818551, 0, 513.8499594078344, 0, -171.2833198026115, 0, 12.4569687129172, 0, + 0.318183090330888, 0, 0, 1.909098541985328, 0, -22.90918250382393, 0, 0, 0, 0, 4.77274635496332, 0, -114.5459125191197, 0, 190.9098541985328, 0, 0, 0, 0, 0, 0, 6.36366180661776, 0, -229.0918250382393, 0, 763.6394167941311, 0, -407.2743556235366, 0, 0, 0, 0, 0, 0, 0, 0, 4.77274635496332, 0, -229.0918250382393, 0, 1145.459125191197, 0, -1221.82306687061, 0, 261.8192286151307, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.909098541985328, 0, -114.5459125191197, 0, 763.6394167941311, 0, -1221.82306687061, 0, 523.6384572302613, 0, -46.5456406426899, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.318183090330888, 0, -22.90918250382393, 0, 190.9098541985328, 0, -407.2743556235366, 0, 261.8192286151307, 0, -46.5456406426899, 0, 1.410473958869391, + 0, 0, -5.620233931023189, 0, 0, 0, 0, -28.10116965511595, 0, 112.4046786204638, 0, 0, 0, 0, 0, 0, -56.20233931023189, 0, 449.6187144818551, 0, -449.6187144818551, 0, 0, 0, 0, 0, 0, 0, 0, -56.20233931023189, 0, 674.4280717227828, 0, -1348.856143445566, 0, 513.8499594078344, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -28.10116965511595, 0, 449.6187144818551, 0, -1348.856143445566, 0, 1027.699918815669, 0, -171.2833198026115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -5.620233931023189, 0, 112.4046786204638, 0, -449.6187144818551, 0, 513.8499594078344, 0, -171.2833198026115, 0, 12.4569687129172, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + -0.4528913564813122, 0, 0, -1.811565425925249, 0, 31.70239495369185, 0, 0, 0, 0, -2.264456782406561, 0, 95.10718486107555, 0, -253.6191596295348, 0, 0, 0, 0, 0, 0, 0, 0, 63.4047899073837, 0, -507.2383192590696, 0, 507.2383192590696, 0, 0, 0, 0, 0, 0, 0, 0, 2.264456782406561, 0, -63.4047899073837, 0, 0, 0, 507.2383192590696, 0, -289.8504681480398, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.811565425925249, 0, -95.10718486107555, 0, 507.2383192590696, 0, -507.2383192590696, 0, 0, 0, 38.6467290864053, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.4528913564813122, 0, -31.70239495369185, 0, 253.6191596295348, 0, -507.2383192590696, 0, 289.8504681480398, 0, -38.6467290864053, 0, 0, + 0, 0, 5.54676366148067, 0, 0, 0, 0, 5.54676366148067, 0, -103.5395883476392, 0, 0, 0, 0, 0, 0, -33.28058196888402, 0, 0, 0, 372.742518051501, 0, 0, 0, 0, 0, 0, 0, 0, -77.65469126072938, 0, 621.237530085835, 0, -372.742518051501, 0, -354.9928743347629, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -61.01440027628737, 0, 828.3167067811133, 0, -1863.712590257505, 0, 709.9857486695257, 0, 78.88730540772508, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -16.64029098444201, 0, 310.6187650429175, 0, -1118.227554154503, 0, 1064.978623004289, 0, -236.6619162231752, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0.4622303051233891, 0, 0, -0.9244606102467783, 0, -29.5827395278969, 0, 0, 0, 0, -7.857915187097616, 0, 88.74821858369071, 0, 207.0791766952784, 0, 0, 0, 0, 0, 0, -12.9424485434549, 0, 414.1583533905567, 0, -828.3167067811135, 0, -331.3266827124453, 0, 0, 0, 0, 0, 0, 0, 0, -7.857915187097616, 0, 414.1583533905567, 0, -2070.791766952784, 0, 1656.633413562227, 0, 118.3309581115876, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.9244606102467783, 0, 88.74821858369071, 0, -828.3167067811135, 0, 1656.633413562227, 0, -709.9857486695257, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.4622303051233891, 0, -29.5827395278969, 0, 207.0791766952784, 0, -331.3266827124453, 0, 118.3309581115876, 0, 0, 0, 0, + 0, 0, -5.390485347028293, 0, 0, 0, 0, 37.73339742919805, 0, 86.24776555245269, 0, 0, 0, 0, 0, 0, 118.5906776346225, 0, -689.9821244196215, 0, -241.4937435468676, 0, 0, 0, 0, 0, 0, 0, 0, 75.4667948583961, 0, -1207.468717734338, 0, 2173.443691921808, 0, 137.9964248839243, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -26.95242673514147, 0, 0, 0, 1207.468717734338, 0, -1379.964248839243, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -26.95242673514147, 0, 431.2388277622634, 0, -1207.468717734338, 0, 689.9821244196215, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + -0.480222602785836, 0, 0, 5.762671233430032, 0, 25.93202055043514, 0, 0, 0, 0, 12.96601027521757, 0, -337.1162671556568, 0, -138.3041096023208, 0, 0, 0, 0, 0, 0, 0, 0, -363.048287706092, 0, 1936.257534432491, 0, 129.0838356288327, 0, 0, 0, 0, 0, 0, 0, 0, -12.96601027521757, 0, 363.048287706092, 0, 0, 0, -1936.257534432491, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -5.762671233430032, 0, 337.1162671556568, 0, -1936.257534432491, 0, 1936.257534432491, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.480222602785836, 0, -25.93202055043514, 0, 138.3041096023208, 0, -129.0838356288327, 0, 0, 0, 0, 0, 0, + 0, 0, 5.127374308338521, 0, 0, 0, 0, -97.42011185843189, 0, -61.52849170006224, 0, 0, 0, 0, 0, 0, -30.76424585003112, 0, 1230.569834001245, 0, 98.44558672009958, 0, 0, 0, 0, 0, 0, 0, 0, 215.3497209502179, 0, -861.3988838008713, 0, -2067.357321122091, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 107.6748604751089, 0, -1722.797767601743, 0, 3445.595535203485, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -35.89162015836965, 0, 430.6994419004357, 0, -689.1191070406971, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0.512737430833852, 0, 0, -13.33117320168015, 0, -20.50949723335408, 0, 0, 0, 0, 7.691061462507781, 0, 553.7564253005602, 0, 61.52849170006224, 0, 0, 0, 0, 0, 0, 43.06994419004357, 0, -861.3988838008714, 0, -1722.797767601743, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7.691061462507781, 0, -861.3988838008714, 0, 4306.994419004357, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -13.33117320168015, 0, 553.7564253005602, 0, -1722.797767601743, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.512737430833852, 0, -20.50949723335408, 0, 61.52849170006224, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, -4.699316176866622, 0, 0, 0, 0, 164.4760661903318, 0, 31.32877451244415, 0, 0, 0, 0, 0, 0, -422.938455917996, 0, -1127.835882447989, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -197.3712794283981, 0, 3947.425588567963, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 352.4487132649967, 0, -2631.617059045309, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -42.2938455917996, 0, 281.9589706119974, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + -0.5784458347938102, 0, 0, 25.45161673092765, 0, 12.72580836546383, 0, 0, 0, 0, -95.44356274097868, 0, -572.6613764458722, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2672.419756747403, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 95.44356274097868, 0, -2672.419756747403, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -25.45161673092765, 0, 572.6613764458722, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5784458347938102, 0, -12.72580836546383, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 3.923210528935984, 0, 0, 0, 0, -215.7765790914791, 0, 0, 0, 0, 0, 0, 0, 0, 1294.659474548875, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1812.523264368425, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 647.3297372744373, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -43.15531581829583, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0.8008219957839717, 0, 0, -52.85425172174213, 0, 0, 0, 0, 0, 0, 396.406887913066, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -739.9595241043899, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 396.406887913066, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -52.85425172174213, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.8008219957839717, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 10.60900254488917, 0, 0, 0, 0, -233.3980559875617, 0, 0, 0, 0, 0, 0, 0, 0, 1050.291251944028, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1400.38833592537, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 583.4951399689042, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -63.65401526933501, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.8160771188376283, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 49.93431784259574, 0, 0, 0, 0, 0, 0, -915.4624937809218, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3295.664977611319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -3295.664977611319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 915.4624937809218, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -49.93431784259574, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, -6.473297372744374, 0, 0, 0, 0, 90.62616321842124, 0, 155.359136945865, 0, 0, 0, 0, 0, 0, -174.7790290640981, 0, -2330.387054187975, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -77.67956847293249, 0, 6525.083751726329, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 161.8324343186094, 0, -4660.774108375949, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -31.77800528438147, 0, 776.7956847293249, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5884815793403977, 0, -14.12355790416954, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, -49.93431784259574, 0, 0, 0, 0, 0, 0, 549.2774962685531, 0, 366.1849975123687, 0, 0, 0, 0, 0, 0, 0, 0, -659.1329955222637, 0, -4394.219970148425, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -659.1329955222637, 0, 9227.861937311692, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 549.2774962685531, 0, -4394.219970148425, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -49.93431784259574, 0, 366.1849975123687, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 4.685411261829863, 0, 0, 0, 0, -34.35968258675233, 0, -206.158095520514, 0, 0, 0, 0, 0, 0, -17.17984129337616, 0, 1717.984129337616, 0, 687.1936517350465, 0, 0, 0, 0, 0, 0, 0, 0, 68.71936517350465, 0, -962.0711124290651, 0, -6413.807416193768, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28.63306882229361, 0, -2061.58095520514, 0, 9620.711124290651, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -17.70044254469059, 0, 801.7259270242209, 0, -2748.774606940186, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5206012513144292, 0, -22.90645505783488, 0, 76.35485019278295, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 43.68089589976209, 0, 0, 0, 0, 0, 0, -218.4044794988104, 0, -582.4119453301611, 0, 0, 0, 0, 0, 0, 0, 0, -262.0853753985725, 0, 3494.471671980967, 0, 1048.34150159429, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 262.0853753985725, 0, 0, 0, -7338.39051116003, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 218.4044794988104, 0, -3494.471671980967, 0, 7338.39051116003, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -43.68089589976209, 0, 582.4119453301611, 0, -1048.34150159429, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, -3.404978058421841, 0, 0, 0, 0, 6.809956116843682, 0, 204.2986835053105, 0, 0, 0, 0, 0, 0, 30.64480252579657, 0, -612.8960505159314, 0, -1225.792101031863, 0, 0, 0, 0, 0, 0, 0, 0, 17.51131572902661, 0, -1225.792101031863, 0, 4903.168404127451, 0, 1307.511574433987, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -12.16063592293515, 0, 175.1131572902661, 0, 2451.584202063726, 0, -6537.557872169935, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8.755657864513306, 0, 554.5249980858427, 0, -3502.263145805322, 0, 3922.534723301961, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.4864254369174059, 0, -29.18552621504435, 0, 175.1131572902661, 0, -186.7873677762839, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, -34.53278031998955, 0, 0, 0, 0, 0, 0, 11.51092677332985, 0, 621.5900457598119, 0, 0, 0, 0, 0, 0, 0, 0, 207.1966819199373, 0, -828.7867276797492, 0, -1989.088146431398, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 207.1966819199373, 0, -2900.753546879122, 0, 4641.205675006596, 0, 1326.058764287599, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11.51092677332985, 0, -828.7867276797492, 0, 4641.205675006596, 0, -4420.195880958662, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -34.53278031998955, 0, 621.5900457598119, 0, -1989.088146431398, 0, 1326.058764287599, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 2.334148624627139, 0, 0, 0, 0, 4.668297249254278, 0, -168.058700973154, 0, 0, 0, 0, 0, 0, -4.20146752432885, 0, -168.058700973154, 0, 1344.469607785232, 0, 0, 0, 0, 0, 0, 0, 0, -16.8058700973154, 0, 470.5643627248312, 0, 0, 0, -2509.6766011991, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -13.53806202283741, 0, 739.4582842818776, 0, -3764.51490179865, 0, 2509.6766011991, 0, 1075.575686228186, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2.800978349552567, 0, 235.2821813624156, 0, -2151.151372456371, 0, 4517.41788215838, 0, -2151.151372456371, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.4668297249254278, 0, -33.6117401946308, 0, 268.8939215570464, 0, -501.93532023982, 0, 215.1151372456371, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 23.76708941910389, 0, 0, 0, 0, 0, 0, 71.30126825731166, 0, -507.0312409408829, 0, 0, 0, 0, 0, 0, 0, 0, 47.53417883820777, 0, -1014.062481881766, 0, 2129.531211951708, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -47.53417883820777, 0, 0, 0, 2129.531211951708, 0, -2433.749956516238, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -71.30126825731166, 0, 1014.062481881766, 0, -2129.531211951708, 0, 0, 0, 676.0416545878439, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -23.76708941910389, 0, 507.0312409408829, 0, -2129.531211951708, 0, 2433.749956516238, 0, -676.0416545878439, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, -1.36713941034431, 0, 0, 0, 0, -6.379983914940114, 0, 109.3711528275448, 0, 0, 0, 0, 0, 0, -11.39282841953592, 0, 401.0275603676643, 0, -1020.797426390418, 0, 0, 0, 0, 0, 0, 0, 0, -9.114262735628734, 0, 510.3987131952091, 0, -2722.126470374449, 0, 2449.913823337004, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2.278565683907184, 0, 218.7423056550896, 0, -2041.594852780836, 0, 4083.189705561673, 0, -1749.938445240717, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.9114262735628734, 0, -36.45705094251494, 0, 0, 0, 816.6379411123346, 0, -1166.625630160478, 0, 311.1001680427941, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.4557131367814367, 0, -36.45705094251494, 0, 340.2658087968061, 0, -816.6379411123346, 0, 583.312815080239, 0, -103.7000560142647, 0, 0, 0, + 0, 0, 0, 0, -12.09143589391947, 0, 0, 0, 0, 0, 0, -60.45717946959737, 0, 282.1335041914544, 0, 0, 0, 0, 0, 0, 0, 0, -120.9143589391947, 0, 1128.534016765818, 0, -1354.240820118981, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -120.9143589391947, 0, 1692.801025148726, 0, -4062.722460356943, 0, 1934.629743027116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -60.45717946959737, 0, 1128.534016765818, 0, -4062.722460356943, 0, 3869.259486054231, 0, -859.8354413453848, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -12.09143589391947, 0, 282.1335041914544, 0, -1354.240820118981, 0, 1934.629743027116, 0, -859.8354413453848, 0, 93.80022996495107, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0.4506212100730813, 0, 0, 0, 0, 2.703727260438488, 0, -37.85218164613883, 0, 0, 0, 0, 0, 0, 6.75931815109622, 0, -189.2609082306941, 0, 378.5218164613883, 0, 0, 0, 0, 0, 0, 0, 0, 9.012424201461626, 0, -378.5218164613883, 0, 1514.087265845553, 0, -1009.391510563702, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6.75931815109622, 0, -378.5218164613883, 0, 2271.13089876833, 0, -3028.174531691106, 0, 865.1927233403161, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2.703727260438488, 0, -189.2609082306941, 0, 1514.087265845553, 0, -3028.174531691106, 0, 1730.385446680632, 0, -230.7180595574176, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.4506212100730813, 0, -37.85218164613883, 0, 378.5218164613883, 0, -1009.391510563702, 0, 865.1927233403161, 0, -230.7180595574176, 0, 13.98291270044955, 0, + 0, 0, 4.298652372786529, 0, 0, 0, 0, 25.79191423671917, 0, -103.1676569468767, 0, 0, 0, 0, 0, 0, 64.47978559179793, 0, -515.8382847343835, 0, 515.8382847343835, 0, 0, 0, 0, 0, 0, 0, 0, 85.97304745573058, 0, -1031.676569468767, 0, 2063.353138937534, 0, -786.0392910238224, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64.47978559179793, 0, -1031.676569468767, 0, 3095.029708406301, 0, -2358.117873071467, 0, 393.0196455119112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25.79191423671917, 0, -515.8382847343835, 0, 2063.353138937534, 0, -2358.117873071467, 0, 786.0392910238224, 0, -57.16649389264163, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4.298652372786529, 0, -103.1676569468767, 0, 515.8382847343835, 0, -786.0392910238224, 0, 393.0196455119112, 0, -57.16649389264163, 0, 1.46580753570876, + 0.4506212100730813, 0, 0, 2.703727260438488, 0, -37.85218164613883, 0, 0, 0, 0, 6.75931815109622, 0, -189.2609082306941, 0, 378.5218164613883, 0, 0, 0, 0, 0, 0, 9.012424201461626, 0, -378.5218164613883, 0, 1514.087265845553, 0, -1009.391510563702, 0, 0, 0, 0, 0, 0, 0, 0, 6.75931815109622, 0, -378.5218164613883, 0, 2271.13089876833, 0, -3028.174531691106, 0, 865.1927233403161, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2.703727260438488, 0, -189.2609082306941, 0, 1514.087265845553, 0, -3028.174531691106, 0, 1730.385446680632, 0, -230.7180595574176, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.4506212100730813, 0, -37.85218164613883, 0, 378.5218164613883, 0, -1009.391510563702, 0, 865.1927233403161, 0, -230.7180595574176, 0, 13.98291270044955, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, -6.045717946959737, 0, 0, 0, 0, -24.18287178783895, 0, 141.0667520957272, 0, 0, 0, 0, 0, 0, -30.22858973479868, 0, 423.2002562871816, 0, -677.1204100594905, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 282.1335041914544, 0, -1354.240820118981, 0, 967.3148715135579, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30.22858973479868, 0, -282.1335041914544, 0, 0, 0, 967.3148715135579, 0, -429.9177206726924, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24.18287178783895, 0, -423.2002562871816, 0, 1354.240820118981, 0, -967.3148715135579, 0, 0, 0, 46.90011498247553, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6.045717946959737, 0, -141.0667520957272, 0, 677.1204100594905, 0, -967.3148715135579, 0, 429.9177206726924, 0, -46.90011498247553, 0, 0, + -0.4557131367814367, 0, 0, -0.9114262735628734, 0, 36.45705094251494, 0, 0, 0, 0, 2.278565683907184, 0, 36.45705094251494, 0, -340.2658087968061, 0, 0, 0, 0, 0, 0, 9.114262735628734, 0, -218.7423056550896, 0, 0, 0, 816.6379411123346, 0, 0, 0, 0, 0, 0, 0, 0, 11.39282841953592, 0, -510.3987131952091, 0, 2041.594852780836, 0, -816.6379411123346, 0, -583.312815080239, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6.379983914940114, 0, -401.0275603676643, 0, 2722.126470374449, 0, -4083.189705561673, 0, 1166.625630160478, 0, 103.7000560142647, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.36713941034431, 0, -109.3711528275448, 0, 1020.797426390418, 0, -2449.913823337004, 0, 1749.938445240717, 0, -311.1001680427941, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 5.941772354775972, 0, 0, 0, 0, -11.88354470955194, 0, -126.7578102352207, 0, 0, 0, 0, 0, 0, -101.0101300311915, 0, 380.2734307056622, 0, 532.3828029879271, 0, 0, 0, 0, 0, 0, 0, 0, -166.3696259337272, 0, 1774.60934329309, 0, -2129.531211951708, 0, -608.4374891290595, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -101.0101300311915, 0, 1774.60934329309, 0, -5323.828029879271, 0, 3042.187445645297, 0, 169.010413646961, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -11.88354470955194, 0, 380.2734307056622, 0, -2129.531211951708, 0, 3042.187445645297, 0, -1014.062481881766, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5.941772354775972, 0, -126.7578102352207, 0, 532.3828029879271, 0, -608.4374891290595, 0, 169.010413646961, 0, 0, 0, 0, + 0.4668297249254278, 0, 0, -2.800978349552567, 0, -33.6117401946308, 0, 0, 0, 0, -13.53806202283741, 0, 235.2821813624156, 0, 268.8939215570464, 0, 0, 0, 0, 0, 0, -16.8058700973154, 0, 739.4582842818776, 0, -2151.151372456371, 0, -501.93532023982, 0, 0, 0, 0, 0, 0, 0, 0, -4.20146752432885, 0, 470.5643627248312, 0, -3764.51490179865, 0, 4517.41788215838, 0, 215.1151372456371, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4.668297249254278, 0, -168.058700973154, 0, 0, 0, 2509.6766011991, 0, -2151.151372456371, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2.334148624627139, 0, -168.058700973154, 0, 1344.469607785232, 0, -2509.6766011991, 0, 1075.575686228186, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, -5.755463386664925, 0, 0, 0, 0, 69.0655606399791, 0, 103.5983409599687, 0, 0, 0, 0, 0, 0, 155.397511439953, 0, -1346.778432479592, 0, -331.5146910718997, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1450.376773439561, 0, 4641.205675006596, 0, 221.0097940479331, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -155.397511439953, 0, 1450.376773439561, 0, 0, 0, -3315.146910718997, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -69.0655606399791, 0, 1346.778432479592, 0, -4641.205675006596, 0, 3315.146910718997, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5.755463386664925, 0, -103.5983409599687, 0, 331.5146910718997, 0, -221.0097940479331, 0, 0, 0, 0, 0, 0, + -0.4864254369174059, 0, 0, 8.755657864513306, 0, 29.18552621504435, 0, 0, 0, 0, 12.16063592293515, 0, -554.5249980858427, 0, -175.1131572902661, 0, 0, 0, 0, 0, 0, -17.51131572902661, 0, -175.1131572902661, 0, 3502.263145805322, 0, 186.7873677762839, 0, 0, 0, 0, 0, 0, 0, 0, -30.64480252579657, 0, 1225.792101031863, 0, -2451.584202063726, 0, -3922.534723301961, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -6.809956116843682, 0, 612.8960505159314, 0, -4903.168404127451, 0, 6537.557872169935, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3.404978058421841, 0, -204.2986835053105, 0, 1225.792101031863, 0, -1307.511574433987, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 5.460111987470261, 0, 0, 0, 0, -141.9629116742268, 0, -72.80149316627014, 0, 0, 0, 0, 0, 0, 81.90167981205391, 0, 1965.640315489294, 0, 131.0426876992863, 0, 0, 0, 0, 0, 0, 0, 0, 458.6494069475019, 0, -3057.662712983346, 0, -3669.195255580015, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 81.90167981205391, 0, -3057.662712983346, 0, 9172.988138950038, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -141.9629116742268, 0, 1965.640315489294, 0, -3669.195255580015, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5.460111987470261, 0, -72.80149316627014, 0, 131.0426876992863, 0, 0, 0, 0, 0, 0, 0, 0, + 0.5206012513144292, 0, 0, -17.70044254469059, 0, -22.90645505783488, 0, 0, 0, 0, 28.63306882229361, 0, 801.7259270242209, 0, 76.35485019278295, 0, 0, 0, 0, 0, 0, 68.71936517350465, 0, -2061.58095520514, 0, -2748.774606940186, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -17.17984129337616, 0, -962.0711124290651, 0, 9620.711124290651, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -34.35968258675233, 0, 1717.984129337616, 0, -6413.807416193768, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4.685411261829863, 0, -206.158095520514, 0, 687.1936517350465, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, -4.993431784259574, 0, 0, 0, 0, 219.7109985074212, 0, 36.61849975123687, 0, 0, 0, 0, 0, 0, -823.9162444028297, 0, -1647.832488805659, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7689.884947759744, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 823.9162444028297, 0, -7689.884947759744, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -219.7109985074212, 0, 1647.832488805659, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4.993431784259574, 0, -36.61849975123687, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + -0.5884815793403977, 0, 0, 31.77800528438147, 0, 14.12355790416954, 0, 0, 0, 0, -161.8324343186094, 0, -776.7956847293249, 0, 0, 0, 0, 0, 0, 0, 0, 77.67956847293249, 0, 4660.774108375949, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 174.7790290640981, 0, -6525.083751726329, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -90.62616321842124, 0, 2330.387054187975, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6.473297372744374, 0, -155.359136945865, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 4.161193153549645, 0, 0, 0, 0, -274.6387481342766, 0, 0, 0, 0, 0, 0, 0, 0, 2059.790611007074, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -3844.942473879872, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2059.790611007074, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -274.6387481342766, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4.161193153549645, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0.8160771188376283, 0, 0, -63.65401526933501, 0, 0, 0, 0, 0, 0, 583.4951399689042, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1400.38833592537, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1050.291251944028, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -233.3980559875617, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10.60900254488917, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 11.62730916290334, 0, 0, 0, 0, -302.3100382354867, 0, 0, 0, 0, 0, 0, 0, 0, 1662.705210295177, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2850.351789077446, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1662.705210295177, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -302.3100382354867, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11.62730916290334, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 57.13122714353754, 0, 0, 0, 0, 0, 0, -1256.886997157826, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5655.991487210216, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7541.321982946955, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3142.217492894565, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -342.7873628612252, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4.394709780272118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, -7.176531019523646, 0, 0, 0, 0, 124.3932043384099, 0, 186.5898065076148, 0, 0, 0, 0, 0, 0, -342.0813119306271, 0, -3420.813119306271, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12314.92722950258, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 342.0813119306271, 0, -12314.92722950258, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -124.3932043384099, 0, 3420.813119306271, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7.176531019523646, 0, -186.5898065076148, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, -58.09962199636542, 0, 0, 0, 0, 0, 0, 813.3947079491158, 0, 464.7969759709233, 0, 0, 0, 0, 0, 0, 0, 0, -1568.689793901866, 0, -6971.95463956385, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -697.195463956385, 0, 19521.47299077878, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1452.490549909135, 0, -13943.9092791277, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -285.2163261639757, 0, 2323.984879854617, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5.281783817851402, 0, -42.25427054281121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 5.281783817851402, 0, 0, 0, 0, -52.81783817851402, 0, -253.5256232568673, 0, 0, 0, 0, 0, 0, 11.61992439927308, 0, 2788.78185582554, 0, 929.5939519418467, 0, 0, 0, 0, 0, 0, 0, 0, 139.439092791277, 0, -3346.538226990648, 0, -11155.12742330216, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11.61992439927308, 0, -3346.538226990648, 0, 23425.76758893454, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -52.81783817851402, 0, 2788.78185582554, 0, -11155.12742330216, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5.281783817851402, 0, -253.5256232568673, 0, 929.5939519418467, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 52.07313853625346, 0, 0, 0, 0, 0, 0, -381.8696825991921, 0, -763.7393651983841, 0, 0, 0, 0, 0, 0, 0, 0, -190.934841299596, 0, 6364.494709986534, 0, 1527.478730396768, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 763.7393651983841, 0, -3564.117037592459, 0, -14256.46815036984, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 318.2247354993267, 0, -7637.393651983841, 0, 21384.70222555475, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -196.720745581402, 0, 2970.097531327049, 0, -6109.914921587073, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5.78590428180594, 0, -84.85992946648712, 0, 169.7198589329742, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, -3.940231044985851, 0, 0, 0, 0, 15.7609241799434, 0, 260.0552489690662, 0, 0, 0, 0, 0, 0, 43.34254149484436, 0, -1300.276244845331, 0, -1733.701659793774, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1560.331493814397, 0, 10402.20995876265, 0, 2080.441991752529, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -43.34254149484436, 0, 1560.331493814397, 0, 0, 0, -14563.0939422677, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -15.7609241799434, 0, 1300.276244845331, 0, -10402.20995876265, 0, 14563.0939422677, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3.940231044985851, 0, -260.0552489690662, 0, 1733.701659793774, 0, -2080.441991752529, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, -42.78485868831644, 0, 0, 0, 0, 0, 0, 85.56971737663287, 0, 855.6971737663287, 0, 0, 0, 0, 0, 0, 0, 0, 385.0637281948479, 0, -2567.091521298986, 0, -3080.509825558783, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 220.0364161113417, 0, -5134.183042597972, 0, 12322.03930223513, 0, 2347.055105187644, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -152.8030667439873, 0, 733.4547203711389, 0, 6161.019651117567, 0, -11735.27552593822, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -110.0182080556708, 0, 2322.606614508606, 0, -8801.456644453667, 0, 7041.165315562933, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6.112122669759491, 0, -122.2424533951898, 0, 440.0728322226833, 0, -335.2935864553778, 0, 0, 0, 0, 0, 0, 0, + 0, 2.829363009969403, 0, 0, 0, 0, 1.886242006646268, 0, -226.3490407975522, 0, 0, 0, 0, 0, 0, -17.91929906313955, 0, 75.44968026585074, 0, 2037.14136717797, 0, 0, 0, 0, 0, 0, 0, 0, -33.95235611963283, 0, 1358.094244785313, 0, -2716.188489570627, 0, -4345.901583313003, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -17.91929906313955, 0, 1358.094244785313, 0, -9506.659713497193, 0, 10140.43702773034, 0, 2172.950791656501, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.886242006646268, 0, 75.44968026585074, 0, -2716.188489570627, 0, 10140.43702773034, 0, -7243.169305521671, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2.829363009969403, 0, -226.3490407975522, 0, 2037.14136717797, 0, -4345.901583313003, 0, 2172.950791656501, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 31.633240116575, 0, 0, 0, 0, 0, 0, 63.26648023315, 0, -759.1977627977999, 0, 0, 0, 0, 0, 0, 0, 0, -56.939832209835, 0, -759.1977627977999, 0, 3644.14926142944, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -227.75932883934, 0, 2125.75373583384, 0, 0, 0, -4858.86568190592, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -183.472792676135, 0, 3340.47015631032, 0, -10203.61793200243, 0, 4858.86568190592, 0, 1619.62189396864, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -37.95988813989, 0, 1062.87686791692, 0, -5830.638818287104, 0, 8745.958227430655, 0, -3239.24378793728, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6.326648023315, 0, -151.83955255956, 0, 728.8298522858879, 0, -971.7731363811839, 0, 323.924378793728, 0, 0, 0, 0, 0, + 0, -1.835933153488193, 0, 0, 0, 0, -7.343732613952774, 0, 165.2339838139374, 0, 0, 0, 0, 0, 0, -9.179665767440967, 0, 495.7019514418122, 0, -1762.495827348666, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 330.4679676278748, 0, -3524.991654697331, 0, 4934.988316576264, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9.179665767440967, 0, -330.4679676278748, 0, 0, 0, 4934.988316576264, 0, -4229.989985636798, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7.343732613952774, 0, -495.7019514418122, 0, 3524.991654697331, 0, -4934.988316576264, 0, 0, 0, 939.997774585955, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.835933153488193, 0, -165.2339838139374, 0, 1762.495827348666, 0, -4934.988316576264, 0, 4229.989985636798, 0, -939.997774585955, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, -19.37540204348254, 0, 0, 0, 0, 0, 0, -90.41854286958517, 0, 516.677387826201, 0, 0, 0, 0, 0, 0, 0, 0, -161.4616836956878, 0, 1894.483755362737, 0, -2893.393371826726, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -129.1693469565502, 0, 2411.161143188938, 0, -7715.715658204601, 0, 4960.10292313153, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -32.29233673913756, 0, 1033.354775652402, 0, -5786.786743653451, 0, 8266.838205219216, 0, -2755.612735073072, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12.91693469565502, 0, -172.225795942067, 0, 0, 0, 1653.367641043843, 0, -1837.075156715381, 0, 400.8163978288105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6.458467347827512, 0, -172.225795942067, 0, 964.4644572755752, 0, -1653.367641043843, 0, 918.5375783576907, 0, -133.6054659429368, 0, 0, 0, + 0, 0.9043663200508067, 0, 0, 0, 0, 5.42619792030484, 0, -86.81916672487744, 0, 0, 0, 0, 0, 0, 13.5654948007621, 0, -434.0958336243872, 0, 1012.890278456903, 0, 0, 0, 0, 0, 0, 0, 0, 18.08732640101613, 0, -868.1916672487744, 0, 4051.561113827614, 0, -3241.248891062091, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13.5654948007621, 0, -868.1916672487744, 0, 6077.341670741421, 0, -9723.746673186273, 0, 3472.766668995098, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5.42619792030484, 0, -434.0958336243872, 0, 4051.561113827614, 0, -9723.746673186273, 0, 6945.533337990195, 0, -1234.761482309368, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.9043663200508067, 0, -86.81916672487744, 0, 1012.890278456903, 0, -3241.248891062091, 0, 3472.766668995098, 0, -1234.761482309368, 0, 112.2510438463062, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 6.521478277491721, 0, 0, 0, 0, 0, 0, 39.12886966495032, 0, -182.6013917697682, 0, 0, 0, 0, 0, 0, 0, 0, 97.82217416237581, 0, -913.0069588488409, 0, 1095.608350618609, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 130.4295655498344, 0, -1826.013917697682, 0, 4382.433402474436, 0, -2086.873048797351, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 97.82217416237581, 0, -1826.013917697682, 0, 6573.650103711654, 0, -6260.619146392052, 0, 1391.248699198234, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39.12886966495032, 0, -913.0069588488409, 0, 4382.433402474436, 0, -6260.619146392052, 0, 2782.497398396467, 0, -303.5451707341601, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6.521478277491721, 0, -182.6013917697682, 0, 1095.608350618609, 0, -2086.873048797351, 0, 1391.248699198234, 0, -303.5451707341601, 0, 15.56641901200821, 0, + -0.3182155563368222, 0, 0, -2.227508894357756, 0, 31.18512452100858, 0, 0, 0, 0, -6.682526683073267, 0, 187.1107471260515, 0, -374.2214942521029, 0, 0, 0, 0, 0, 0, -11.13754447178878, 0, 467.7768678151287, 0, -1871.107471260515, 0, 1247.404980840343, 0, 0, 0, 0, 0, 0, 0, 0, -11.13754447178878, 0, 623.7024904201716, 0, -3742.214942521029, 0, 4989.619923361373, 0, -1425.605692388964, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -6.682526683073267, 0, 467.7768678151287, 0, -3742.214942521029, 0, 7484.429885042059, 0, -4276.817077166891, 0, 570.2422769555854, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2.227508894357756, 0, 187.1107471260515, 0, -1871.107471260515, 0, 4989.619923361373, 0, -4276.817077166891, 0, 1140.484553911171, 0, -69.12027599461642, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.3182155563368222, 0, 31.18512452100858, 0, -374.2214942521029, 0, 1247.404980840343, 0, -1425.605692388964, 0, 570.2422769555854, 0, -69.12027599461642, 0, 1.519126944936625, + 0, 0, 6.521478277491721, 0, 0, 0, 0, 39.12886966495032, 0, -182.6013917697682, 0, 0, 0, 0, 0, 0, 97.82217416237581, 0, -913.0069588488409, 0, 1095.608350618609, 0, 0, 0, 0, 0, 0, 0, 0, 130.4295655498344, 0, -1826.013917697682, 0, 4382.433402474436, 0, -2086.873048797351, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 97.82217416237581, 0, -1826.013917697682, 0, 6573.650103711654, 0, -6260.619146392052, 0, 1391.248699198234, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39.12886966495032, 0, -913.0069588488409, 0, 4382.433402474436, 0, -6260.619146392052, 0, 2782.497398396467, 0, -303.5451707341601, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6.521478277491721, 0, -182.6013917697682, 0, 1095.608350618609, 0, -2086.873048797351, 0, 1391.248699198234, 0, -303.5451707341601, 0, 15.56641901200821, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0.4521831600254033, 0, 0, 2.260915800127017, 0, -43.40958336243872, 0, 0, 0, 0, 4.06964844022863, 0, -173.6383334497549, 0, 506.4451392284517, 0, 0, 0, 0, 0, 0, 2.260915800127017, 0, -217.0479168121936, 0, 1519.335417685355, 0, -1620.624445531046, 0, 0, 0, 0, 0, 0, 0, 0, -2.260915800127017, 0, 0, 0, 1012.890278456903, 0, -3241.248891062091, 0, 1736.383334497549, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -4.06964844022863, 0, 217.0479168121936, 0, -1012.890278456903, 0, 0, 0, 1736.383334497549, 0, -617.380741154684, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2.260915800127017, 0, 173.6383334497549, 0, -1519.335417685355, 0, 3241.248891062091, 0, -1736.383334497549, 0, 0, 0, 56.12552192315309, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.4521831600254033, 0, 43.40958336243872, 0, -506.4451392284517, 0, 1620.624445531046, 0, -1736.383334497549, 0, 617.380741154684, 0, -56.12552192315309, 0, 0, + 0, 0, -6.458467347827512, 0, 0, 0, 0, -12.91693469565502, 0, 172.225795942067, 0, 0, 0, 0, 0, 0, 32.29233673913756, 0, 172.225795942067, 0, -964.4644572755752, 0, 0, 0, 0, 0, 0, 0, 0, 129.1693469565502, 0, -1033.354775652402, 0, 0, 0, 1653.367641043843, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 161.4616836956878, 0, -2411.161143188938, 0, 5786.786743653451, 0, -1653.367641043843, 0, -918.5375783576907, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 90.41854286958517, 0, -1894.483755362737, 0, 7715.715658204601, 0, -8266.838205219216, 0, 1837.075156715381, 0, 133.6054659429368, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19.37540204348254, 0, -516.677387826201, 0, 2893.393371826726, 0, -4960.10292313153, 0, 2755.612735073072, 0, -400.8163978288105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + -0.4589832883720484, 0, 0, 0.4589832883720484, 0, 41.30849595348435, 0, 0, 0, 0, 8.720682479068919, 0, -82.6169919069687, 0, -440.6239568371664, 0, 0, 0, 0, 0, 0, 20.65424797674218, 0, -702.244431209234, 0, 1321.871870511499, 0, 1233.747079144066, 0, 0, 0, 0, 0, 0, 0, 0, 20.65424797674218, 0, -1156.637886697562, 0, 6168.73539572033, 0, -4934.988316576264, 0, -1057.497496409199, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8.720682479068919, 0, -702.244431209234, 0, 6168.73539572033, 0, -12337.47079144066, 0, 5287.487482045997, 0, 234.9994436464888, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.4589832883720484, 0, -82.6169919069687, 0, 1321.871870511499, 0, -4934.988316576264, 0, 5287.487482045997, 0, -1409.996661878933, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.4589832883720484, 0, 41.30849595348435, 0, -440.6239568371664, 0, 1233.747079144066, 0, -1057.497496409199, 0, 234.9994436464888, 0, 0, 0, 0, + 0, 0, 6.326648023315, 0, 0, 0, 0, -37.95988813989, 0, -151.83955255956, 0, 0, 0, 0, 0, 0, -183.472792676135, 0, 1062.87686791692, 0, 728.8298522858879, 0, 0, 0, 0, 0, 0, 0, 0, -227.75932883934, 0, 3340.47015631032, 0, -5830.638818287104, 0, -971.7731363811839, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -56.939832209835, 0, 2125.75373583384, 0, -10203.61793200243, 0, 8745.958227430655, 0, 323.924378793728, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63.26648023315, 0, -759.1977627977999, 0, 0, 0, 4858.86568190592, 0, -3239.24378793728, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31.633240116575, 0, -759.1977627977999, 0, 3644.14926142944, 0, -4858.86568190592, 0, 1619.62189396864, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0.4715605016615671, 0, 0, -5.187165518277238, 0, -37.72484013292537, 0, 0, 0, 0, -18.39085956480112, 0, 452.6980815951044, 0, 339.5235611963283, 0, 0, 0, 0, 0, 0, -12.73213354486231, 0, 1018.570683588985, 0, -4413.806295552268, 0, -724.3169305521671, 0, 0, 0, 0, 0, 0, 0, 0, 12.73213354486231, 0, 0, 0, -4753.329856748596, 0, 10140.43702773034, 0, 362.1584652760835, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18.39085956480112, 0, -1018.570683588985, 0, 4753.329856748596, 0, 0, 0, -5432.376979141253, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5.187165518277238, 0, -452.6980815951044, 0, 4413.806295552268, 0, -10140.43702773034, 0, 5432.376979141253, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.4715605016615671, 0, 37.72484013292537, 0, -339.5235611963283, 0, 724.3169305521671, 0, -362.1584652760835, 0, 0, 0, 0, 0, 0, + 0, 0, -6.112122669759491, 0, 0, 0, 0, 110.0182080556708, 0, 122.2424533951898, 0, 0, 0, 0, 0, 0, 152.8030667439873, 0, -2322.606614508606, 0, -440.0728322226833, 0, 0, 0, 0, 0, 0, 0, 0, -220.0364161113417, 0, -733.4547203711389, 0, 8801.456644453667, 0, 335.2935864553778, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -385.0637281948479, 0, 5134.183042597972, 0, -6161.019651117567, 0, -7041.165315562933, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -85.56971737663287, 0, 2567.091521298986, 0, -12322.03930223513, 0, 11735.27552593822, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42.78485868831644, 0, -855.6971737663287, 0, 3080.509825558783, 0, -2347.055105187644, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + -0.4925288806232314, 0, 0, 12.31322201558078, 0, 32.50690612113327, 0, 0, 0, 0, 5.417817686855545, 0, -845.179559149465, 0, -216.7127074742218, 0, 0, 0, 0, 0, 0, -48.7603591816999, 0, 487.603591816999, 0, 5851.243101803988, 0, 260.0552489690662, 0, 0, 0, 0, 0, 0, 0, 0, -48.7603591816999, 0, 2730.580114175195, 0, -9101.933713917315, 0, -7281.546971133852, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5.417817686855545, 0, 487.603591816999, 0, -9101.933713917315, 0, 18203.86742783463, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12.31322201558078, 0, -845.179559149465, 0, 5851.243101803988, 0, -7281.546971133852, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.4925288806232314, 0, 32.50690612113327, 0, -216.7127074742218, 0, 260.0552489690662, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 5.78590428180594, 0, 0, 0, 0, -196.720745581402, 0, -84.85992946648712, 0, 0, 0, 0, 0, 0, 318.2247354993267, 0, 2970.097531327049, 0, 169.7198589329742, 0, 0, 0, 0, 0, 0, 0, 0, 763.7393651983841, 0, -7637.393651983841, 0, -6109.914921587073, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -190.934841299596, 0, -3564.117037592459, 0, 21384.70222555475, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -381.8696825991921, 0, 6364.494709986534, 0, -14256.46815036984, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52.07313853625346, 0, -763.7393651983841, 0, 1527.478730396768, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0.5281783817851402, 0, 0, -22.71167041676103, 0, -25.35256232568673, 0, 0, 0, 0, 63.90958419600196, 0, 1115.512742330216, 0, 92.95939519418467, 0, 0, 0, 0, 0, 0, 87.14943299454813, 0, -4183.17278373831, 0, -4183.17278373831, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -87.14943299454813, 0, 0, 0, 19521.47299077878, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -63.90958419600196, 0, 4183.17278373831, 0, -19521.47299077878, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22.71167041676103, 0, -1115.512742330216, 0, 4183.17278373831, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.5281783817851402, 0, 25.35256232568673, 0, -92.95939519418467, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, -5.281783817851402, 0, 0, 0, 0, 285.2163261639757, 0, 42.25427054281121, 0, 0, 0, 0, 0, 0, -1452.490549909135, 0, -2323.984879854617, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 697.195463956385, 0, 13943.9092791277, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1568.689793901866, 0, -19521.47299077878, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -813.3947079491158, 0, 6971.95463956385, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 58.09962199636542, 0, -464.7969759709233, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + -0.5980442516269705, 0, 0, 38.87287635575308, 0, 15.54915054230123, 0, 0, 0, 0, -256.5609839479703, 0, -1026.243935791881, 0, 0, 0, 0, 0, 0, 0, 0, 256.5609839479703, 0, 7696.82951843911, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 256.5609839479703, 0, -14367.41510108634, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -256.5609839479703, 0, 7696.82951843911, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38.87287635575308, 0, -1026.243935791881, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.5980442516269705, 0, 15.54915054230123, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 4.394709780272118, 0, 0, 0, 0, -342.7873628612252, 0, 0, 0, 0, 0, 0, 0, 0, 3142.217492894565, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7541.321982946955, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5655.991487210216, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1256.886997157826, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 57.13122714353754, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0.830522083064524, 0, 0, -75.57750955887168, 0, 0, 0, 0, 0, 0, 831.3526051475885, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2494.057815442766, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2494.057815442766, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -831.3526051475885, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75.57750955887168, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.830522083064524, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 12.66375976286059, 0, 0, 0, 0, -384.1340461401045, 0, 0, 0, 0, 0, 0, 0, 0, 2535.28470452469, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -5432.752938267193, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4225.47450754115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1152.402138420314, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88.64631834002413, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.8442506508573726, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 64.73811759282017, 0, 0, 0, 0, 0, 0, -1683.191057413324, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9257.550815773284, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -15870.0871127542, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9257.550815773284, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1683.191057413324, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64.73811759282017, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, -7.893350484654575, 0, 0, 0, 0, 165.7603601777461, 0, 221.0138135703281, 0, 0, 0, 0, 0, 0, -607.7879873184023, 0, -4862.303898547218, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 260.480565993601, 0, 21880.36754346248, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 607.7879873184023, 0, -29173.82339128331, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -386.7741737480742, 0, 12155.75974636805, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 46.75292210141556, 0, -1326.082881421969, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.6071808065118904, 0, 17.00106258233293, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, -66.77884815276176, 0, 0, 0, 0, 0, 0, 1157.500034647871, 0, 578.7500173239353, 0, 0, 0, 0, 0, 0, 0, 0, -3183.125095281644, 0, -10610.41698427215, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38197.50114337973, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3183.125095281644, 0, -38197.50114337973, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1157.500034647871, 0, 10610.41698427215, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66.77884815276176, 0, -578.7500173239353, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 5.890314521234328, 0, 0, 0, 0, -76.57408877604626, 0, -306.2963551041851, 0, 0, 0, 0, 0, 0, 76.57408877604626, 0, 4288.148971458591, 0, 1225.18542041674, 0, 0, 0, 0, 0, 0, 0, 0, 229.7222663281388, 0, -8270.001587812996, 0, -18377.7813062511, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -76.57408877604626, 0, -3675.556261250221, 0, 51457.78765750309, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -118.3417735629806, 0, 7657.408877604626, 0, -36755.56261250221, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28.38060632958358, 0, -1503.636652329636, 0, 6125.927102083701, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.5354831382940298, 0, 27.84512319128955, 0, -111.3804927651582, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 61.05447148378159, 0, 0, 0, 0, 0, 0, -610.5447148378159, 0, -976.8715437405055, 0, 0, 0, 0, 0, 0, 0, 0, 134.3198372643195, 0, 10745.58698114556, 0, 2149.117396229112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1611.838047171834, 0, -12894.70437737467, 0, -25789.40875474934, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 134.3198372643195, 0, -12894.70437737467, 0, 54157.75838497362, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -610.5447148378159, 0, 10745.58698114556, 0, -25789.40875474934, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 61.05447148378159, 0, -976.8715437405055, 0, 2149.117396229112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, -4.486569049517132, 0, 0, 0, 0, 28.4149373136085, 0, 323.0329715652335, 0, 0, 0, 0, 0, 0, 49.35225954468845, 0, -2368.908458145046, 0, -2368.908458145046, 0, 0, 0, 0, 0, 0, 0, 0, -49.35225954468845, 0, -1184.454229072523, 0, 19740.90381787538, 0, 3158.544610860061, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -93.22093469552263, 0, 4737.816916290091, 0, -11054.90613801021, 0, -29479.74970136057, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -10.46866111553997, 0, 1974.090381787538, 0, -23689.08458145046, 0, 44219.62455204085, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16.45075318156282, 0, -1220.34678146866, 0, 9212.421781675177, 0, -12634.17844344024, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.4985076721685702, 0, 35.89255239613705, 0, -263.2120509050051, 0, 350.9494012066734, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, -51.69118335186266, 0, 0, 0, 0, 0, 0, 206.7647334074506, 0, 1137.206033740979, 0, 0, 0, 0, 0, 0, 0, 0, 568.6030168704893, 0, -5686.030168704893, 0, -4548.824134963914, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -6823.236202445871, 0, 27292.94480978348, 0, 3898.992115683355, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -568.6030168704893, 0, 6823.236202445871, 0, 0, 0, -27292.94480978348, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -206.7647334074506, 0, 5686.030168704893, 0, -27292.94480978348, 0, 27292.94480978348, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51.69118335186266, 0, -1137.206033740979, 0, 4548.824134963914, 0, -3898.992115683355, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 3.334384020345036, 0, 0, 0, 0, -3.334384020345036, 0, -293.4257937903632, 0, 0, 0, 0, 0, 0, -36.6782242237954, 0, 586.8515875807264, 0, 2934.257937903632, 0, 0, 0, 0, 0, 0, 0, 0, -47.15771685916551, 0, 2640.832144113269, 0, -8802.773813710896, 0, -7042.219050968717, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -5.239746317685057, 0, 1509.046939493296, 0, -17605.54762742179, 0, 28168.87620387487, 0, 4024.125171982124, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20.48264469640522, 0, -1047.949263537011, 0, 2515.078232488827, 0, 14084.43810193743, 0, -20120.62585991062, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8.097789763695088, 0, -754.5234697466482, 0, 7964.414402881287, 0, -20120.62585991062, 0, 12072.37551594637, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.4763405743350052, 0, 41.91797054148046, 0, -419.1797054148046, 0, 1006.031292995531, 0, -574.8750245688748, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 40.21623606427654, 0, 0, 0, 0, 0, 0, 26.81082404285103, 0, -1072.432961714041, 0, 0, 0, 0, 0, 0, 0, 0, -254.7028284070847, 0, 357.4776539046803, 0, 5791.137993255822, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -482.5948327713185, 0, 6434.597770284246, 0, -7721.517324341095, 0, -8824.591227818395, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -254.7028284070847, 0, 6434.597770284246, 0, -27025.31063519383, 0, 20590.71286490959, 0, 3431.785477484931, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26.81082404285103, 0, 357.4776539046803, 0, -7721.517324341095, 0, 20590.71286490959, 0, -11439.28492494977, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40.21623606427654, 0, -1072.432961714041, 0, 5791.137993255822, 0, -8824.591227818395, 0, 3431.785477484931, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, -2.312653286194929, 0, 0, 0, 0, -6.937959858584787, 0, 231.2653286194929, 0, 0, 0, 0, 0, 0, -0.4625306572389858, 0, 462.5306572389858, 0, -2775.183943433915, 0, 0, 0, 0, 0, 0, 0, 0, 20.81387957575436, 0, -416.2775915150872, 0, -2775.183943433915, 0, 8880.588618988527, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30.06449272053408, 0, -1665.110366060349, 0, 7770.515041614961, 0, 0, 0, -8880.588618988527, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16.1885730033645, 0, -1341.338905993059, 0, 12210.80935110922, 0, -24865.64813316788, 0, 8880.588618988527, 0, 2368.156965063607, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2.312653286194929, 0, -277.5183943433915, 0, 3885.257520807481, 0, -14208.94179038164, 0, 15985.05951417935, 0, -4736.313930127214, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.4625306572389858, 0, 46.25306572389858, 0, -555.0367886867829, 0, 1776.117723797705, 0, -1776.117723797705, 0, 473.6313930127214, 0, 0, 0, 0, 0, + 0, 0, 0, 0, -27.44175328360903, 0, 0, 0, 0, 0, 0, -109.7670131344361, 0, 823.252598508271, 0, 0, 0, 0, 0, 0, 0, 0, -137.2087664180452, 0, 2469.757795524813, 0, -5268.816630452934, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1646.505197016542, 0, -10537.63326090587, 0, 10537.63326090587, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 137.2087664180452, 0, -1646.505197016542, 0, 0, 0, 10537.63326090587, 0, -7025.088840603912, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 109.7670131344361, 0, -2469.757795524813, 0, 10537.63326090587, 0, -10537.63326090587, 0, 0, 0, 1277.288880109802, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27.44175328360903, 0, -823.252598508271, 0, 5268.816630452934, 0, -10537.63326090587, 0, 7025.088840603912, 0, -1277.288880109802, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1.363030880952603, 0, 0, 0, 0, 7.723841658731416, 0, -147.2073351428811, 0, 0, 0, 0, 0, 0, 17.71940145238384, 0, -686.9675640001119, 0, 1962.764468571748, 0, 0, 0, 0, 0, 0, 0, 0, 20.44546321428904, 0, -1226.727792857343, 0, 7196.803051429743, 0, -7327.654016001193, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11.35859067460502, 0, -981.3822342858741, 0, 9159.567520001492, 0, -19540.41070933652, 0, 9421.269449144391, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.363030880952603, 0, -245.3455585714685, 0, 3925.528937143496, 0, -14655.30803200239, 0, 15702.11574857399, 0, -4187.230866286396, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1.363030880952603, 0, 98.13822342858741, 0, -654.2548228572494, 0, 0, 0, 3140.423149714797, 0, -2791.487244190931, 0, 507.543135307442, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.454343626984201, 0, 49.0691117142937, 0, -654.2548228572494, 0, 2442.551338667064, 0, -3140.423149714797, 0, 1395.743622095465, 0, -169.1810451024807, 0, 0, 0, + 0, 0, 0, 0, 13.90024211921377, 0, 0, 0, 0, 0, 0, 83.40145271528264, 0, -444.8077478148407, 0, 0, 0, 0, 0, 0, 0, 0, 208.5036317882066, 0, -2224.038739074204, 0, 3113.654234703885, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 278.0048423842755, 0, -4448.077478148407, 0, 12454.61693881554, 0, -7116.923965037452, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 208.5036317882066, 0, -4448.077478148407, 0, 18681.92540822331, 0, -21350.77189511235, 0, 5930.769970864543, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83.40145271528264, 0, -2224.038739074204, 0, 12454.61693881554, 0, -21350.77189511235, 0, 11861.53994172909, 0, -1725.31490061514, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13.90024211921377, 0, -444.8077478148407, 0, 3113.654234703885, 0, -7116.923965037452, 0, 5930.769970864543, 0, -1725.31490061514, 0, 132.7165308165492, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, -0.4505094349975498, 0, 0, 0, 0, -3.153566044982849, 0, 50.45705671972558, 0, 0, 0, 0, 0, 0, -9.460698134948546, 0, 302.7423403183535, 0, -706.3987940761581, 0, 0, 0, 0, 0, 0, 0, 0, -15.76783022491424, 0, 756.8558507958837, 0, -3531.99397038079, 0, 2825.595176304632, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -15.76783022491424, 0, 1009.141134394512, 0, -7063.987940761581, 0, 11302.38070521853, 0, -4036.564537578046, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9.460698134948546, 0, 756.8558507958837, 0, -7063.987940761581, 0, 16953.57105782779, 0, -12109.69361273414, 0, 2152.834420041625, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -3.153566044982849, 0, 302.7423403183535, 0, -3531.99397038079, 0, 11302.38070521853, 0, -12109.69361273414, 0, 4305.668840083249, 0, -391.4244400075681, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.4505094349975498, 0, 50.45705671972558, 0, -706.3987940761581, 0, 2825.595176304632, 0, -4036.564537578046, 0, 2152.834420041625, 0, -391.4244400075681, 0, 17.20546989044255, 0, + 0, 0, -4.935083598341307, 0, 0, 0, 0, -34.54558518838915, 0, 161.2127308791494, 0, 0, 0, 0, 0, 0, -103.6367555651675, 0, 967.2763852748962, 0, -1160.731662329875, 0, 0, 0, 0, 0, 0, 0, 0, -172.7279259419458, 0, 2418.190963187241, 0, -5803.658311649377, 0, 2763.646815071132, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -172.7279259419458, 0, 3224.254617582987, 0, -11607.31662329875, 0, 11054.58726028453, 0, -2456.574946729895, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -103.6367555651675, 0, 2418.190963187241, 0, -11607.31662329875, 0, 16581.88089042679, 0, -7369.724840189685, 0, 803.9699825661475, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -34.54558518838915, 0, 967.2763852748962, 0, -5803.658311649377, 0, 11054.58726028453, 0, -7369.724840189685, 0, 1607.939965132295, 0, -82.4584597503741, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -4.935083598341307, 0, 161.2127308791494, 0, -1160.731662329875, 0, 2763.646815071132, 0, -2456.574946729895, 0, 803.9699825661475, 0, -82.4584597503741, 0, 1.570637328578554, + -0.4505094349975498, 0, 0, -3.153566044982849, 0, 50.45705671972558, 0, 0, 0, 0, -9.460698134948546, 0, 302.7423403183535, 0, -706.3987940761581, 0, 0, 0, 0, 0, 0, -15.76783022491424, 0, 756.8558507958837, 0, -3531.99397038079, 0, 2825.595176304632, 0, 0, 0, 0, 0, 0, 0, 0, -15.76783022491424, 0, 1009.141134394512, 0, -7063.987940761581, 0, 11302.38070521853, 0, -4036.564537578046, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9.460698134948546, 0, 756.8558507958837, 0, -7063.987940761581, 0, 16953.57105782779, 0, -12109.69361273414, 0, 2152.834420041625, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -3.153566044982849, 0, 302.7423403183535, 0, -3531.99397038079, 0, 11302.38070521853, 0, -12109.69361273414, 0, 4305.668840083249, 0, -391.4244400075681, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.4505094349975498, 0, 50.45705671972558, 0, -706.3987940761581, 0, 2825.595176304632, 0, -4036.564537578046, 0, 2152.834420041625, 0, -391.4244400075681, 0, 17.20546989044255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 6.950121059606886, 0, 0, 0, 0, 34.75060529803443, 0, -222.4038739074204, 0, 0, 0, 0, 0, 0, 62.55108953646198, 0, -889.6154956296814, 0, 1556.827117351943, 0, 0, 0, 0, 0, 0, 0, 0, 34.75060529803443, 0, -1112.019369537102, 0, 4670.481352055828, 0, -3558.461982518726, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -34.75060529803443, 0, 0, 0, 3113.654234703885, 0, -7116.923965037452, 0, 2965.384985432271, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -62.55108953646198, 0, 1112.019369537102, 0, -3113.654234703885, 0, 0, 0, 2965.384985432271, 0, -862.6574503075699, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -34.75060529803443, 0, 889.6154956296814, 0, -4670.481352055828, 0, 7116.923965037452, 0, -2965.384985432271, 0, 0, 0, 66.35826540827461, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -6.950121059606886, 0, 222.4038739074204, 0, -1556.827117351943, 0, 3558.461982518726, 0, -2965.384985432271, 0, 862.6574503075699, 0, -66.35826540827461, 0, 0, + 0.454343626984201, 0, 0, 1.363030880952603, 0, -49.0691117142937, 0, 0, 0, 0, -1.363030880952603, 0, -98.13822342858741, 0, 654.2548228572494, 0, 0, 0, 0, 0, 0, -11.35859067460502, 0, 245.3455585714685, 0, 654.2548228572494, 0, -2442.551338667064, 0, 0, 0, 0, 0, 0, 0, 0, -20.44546321428904, 0, 981.3822342858741, 0, -3925.528937143496, 0, 0, 0, 3140.423149714797, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -17.71940145238384, 0, 1226.727792857343, 0, -9159.567520001492, 0, 14655.30803200239, 0, -3140.423149714797, 0, -1395.743622095465, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7.723841658731416, 0, 686.9675640001119, 0, -7196.803051429743, 0, 19540.41070933652, 0, -15702.11574857399, 0, 2791.487244190931, 0, 169.1810451024807, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1.363030880952603, 0, 147.2073351428811, 0, -1962.764468571748, 0, 7327.654016001193, 0, -9421.269449144391, 0, 4187.230866286396, 0, -507.543135307442, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, -6.860438320902258, 0, 0, 0, 0, 6.860438320902258, 0, 205.8131496270677, 0, 0, 0, 0, 0, 0, 130.3483280971429, 0, -411.6262992541355, 0, -1317.204157613234, 0, 0, 0, 0, 0, 0, 0, 0, 308.7197244406016, 0, -3498.823543660152, 0, 3951.612472839701, 0, 2634.408315226467, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 308.7197244406016, 0, -5762.768189557897, 0, 18440.85820658527, 0, -10537.63326090587, 0, -1756.272210150978, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 130.3483280971429, 0, -3498.823543660152, 0, 18440.85820658527, 0, -26344.08315226467, 0, 8781.36105075489, 0, 319.3222200274506, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6.860438320902258, 0, -411.6262992541355, 0, 3951.612472839701, 0, -10537.63326090587, 0, 8781.36105075489, 0, -1915.933320164703, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -6.860438320902258, 0, 205.8131496270677, 0, -1317.204157613234, 0, 2634.408315226467, 0, -1756.272210150978, 0, 319.3222200274506, 0, 0, 0, 0, + -0.4625306572389858, 0, 0, 2.312653286194929, 0, 46.25306572389858, 0, 0, 0, 0, 16.1885730033645, 0, -277.5183943433915, 0, -555.0367886867829, 0, 0, 0, 0, 0, 0, 30.06449272053408, 0, -1341.338905993059, 0, 3885.257520807481, 0, 1776.117723797705, 0, 0, 0, 0, 0, 0, 0, 0, 20.81387957575436, 0, -1665.110366060349, 0, 12210.80935110922, 0, -14208.94179038164, 0, -1776.117723797705, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.4625306572389858, 0, -416.2775915150872, 0, 7770.515041614961, 0, -24865.64813316788, 0, 15985.05951417935, 0, 473.6313930127214, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -6.937959858584787, 0, 462.5306572389858, 0, -2775.183943433915, 0, 0, 0, 8880.588618988527, 0, -4736.313930127214, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2.312653286194929, 0, 231.2653286194929, 0, -2775.183943433915, 0, 8880.588618988527, 0, -8880.588618988527, 0, 2368.156965063607, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 6.702706010712756, 0, 0, 0, 0, -73.72976611784032, 0, -178.7388269523402, 0, 0, 0, 0, 0, 0, -261.4055344177975, 0, 2144.865923428082, 0, 965.1896655426369, 0, 0, 0, 0, 0, 0, 0, 0, -180.9730622892444, 0, 4825.948327713185, 0, -12547.46565205428, 0, -1470.765204636399, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 180.9730622892444, 0, 0, 0, -13512.65531759692, 0, 20590.71286490959, 0, 571.9642462474885, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 261.4055344177975, 0, -4825.948327713185, 0, 13512.65531759692, 0, 0, 0, -8579.463693712328, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73.72976611784032, 0, -2144.865923428082, 0, 12547.46565205428, 0, -20590.71286490959, 0, 8579.463693712328, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -6.702706010712756, 0, 178.7388269523402, 0, -965.1896655426369, 0, 1470.765204636399, 0, -571.9642462474885, 0, 0, 0, 0, 0, 0, + 0.4763405743350052, 0, 0, -8.097789763695088, 0, -41.91797054148046, 0, 0, 0, 0, -20.48264469640522, 0, 754.5234697466482, 0, 419.1797054148046, 0, 0, 0, 0, 0, 0, 5.239746317685057, 0, 1047.949263537011, 0, -7964.414402881287, 0, -1006.031292995531, 0, 0, 0, 0, 0, 0, 0, 0, 47.15771685916551, 0, -1509.046939493296, 0, -2515.078232488827, 0, 20120.62585991062, 0, 574.8750245688748, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36.6782242237954, 0, -2640.832144113269, 0, 17605.54762742179, 0, -14084.43810193743, 0, -12072.37551594637, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3.334384020345036, 0, -586.8515875807264, 0, 8802.773813710896, 0, -28168.87620387487, 0, 20120.62585991062, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -3.334384020345036, 0, 293.4257937903632, 0, -2934.257937903632, 0, 7042.219050968717, 0, -4024.125171982124, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, -6.461397918982832, 0, 0, 0, 0, 161.5349479745708, 0, 142.1507542176223, 0, 0, 0, 0, 0, 0, 71.07537710881116, 0, -3695.91960965818, 0, -568.6030168704893, 0, 0, 0, 0, 0, 0, 0, 0, -639.6783939793004, 0, 2132.261313264335, 0, 15352.28145550321, 0, 487.3740144604194, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -639.6783939793004, 0, 11940.66335428027, 0, -23881.32670856055, 0, -13646.47240489174, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 71.07537710881116, 0, 2132.261313264335, 0, -23881.32670856055, 0, 34116.18101222936, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 161.5349479745708, 0, -3695.91960965818, 0, 15352.28145550321, 0, -13646.47240489174, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -6.461397918982832, 0, 142.1507542176223, 0, -568.6030168704893, 0, 487.3740144604194, 0, 0, 0, 0, 0, 0, 0, 0, + -0.4985076721685702, 0, 0, 16.45075318156282, 0, 35.89255239613705, 0, 0, 0, 0, -10.46866111553997, 0, -1220.34678146866, 0, -263.2120509050051, 0, 0, 0, 0, 0, 0, -93.22093469552263, 0, 1974.090381787538, 0, 9212.421781675177, 0, 350.9494012066734, 0, 0, 0, 0, 0, 0, 0, 0, -49.35225954468845, 0, 4737.816916290091, 0, -23689.08458145046, 0, -12634.17844344024, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49.35225954468845, 0, -1184.454229072523, 0, -11054.90613801021, 0, 44219.62455204085, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28.4149373136085, 0, -2368.908458145046, 0, 19740.90381787538, 0, -29479.74970136057, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -4.486569049517132, 0, 323.0329715652335, 0, -2368.908458145046, 0, 3158.544610860061, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 6.105447148378159, 0, 0, 0, 0, -262.5342273802609, 0, -97.68715437405055, 0, 0, 0, 0, 0, 0, 738.7591049537573, 0, 4298.234792458224, 0, 214.9117396229112, 0, 0, 0, 0, 0, 0, 0, 0, 1007.398779482396, 0, -16118.38047171834, 0, -9671.028283031004, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1007.398779482396, 0, 0, 0, 45131.46532081135, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -738.7591049537573, 0, 16118.38047171834, 0, -45131.46532081135, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 262.5342273802609, 0, -4298.234792458224, 0, 9671.028283031004, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -6.105447148378159, 0, 97.68715437405055, 0, -214.9117396229112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0.5354831382940298, 0, 0, -28.38060632958358, 0, -27.84512319128955, 0, 0, 0, 0, 118.3417735629806, 0, 1503.636652329636, 0, 111.3804927651582, 0, 0, 0, 0, 0, 0, 76.57408877604626, 0, -7657.408877604626, 0, -6125.927102083701, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -229.7222663281388, 0, 3675.556261250221, 0, 36755.56261250221, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -76.57408877604626, 0, 8270.001587812996, 0, -51457.78765750309, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76.57408877604626, 0, -4288.148971458591, 0, 18377.7813062511, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -5.890314521234328, 0, 306.2963551041851, 0, -1225.18542041674, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, -5.564904012730147, 0, 0, 0, 0, 361.7187608274595, 0, 48.22916811032794, 0, 0, 0, 0, 0, 0, -2387.343821461233, 0, -3183.125095281644, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2387.343821461233, 0, 23873.43821461233, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2387.343821461233, 0, -44563.75133394302, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2387.343821461233, 0, 23873.43821461233, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 361.7187608274595, 0, -3183.125095281644, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -5.564904012730147, 0, 48.22916811032794, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + -0.6071808065118904, 0, 0, 46.75292210141556, 0, 17.00106258233293, 0, 0, 0, 0, -386.7741737480742, 0, -1326.082881421969, 0, 0, 0, 0, 0, 0, 0, 0, 607.7879873184023, 0, 12155.75974636805, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 260.480565993601, 0, -29173.82339128331, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -607.7879873184023, 0, 21880.36754346248, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 165.7603601777461, 0, -4862.303898547218, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7.893350484654575, 0, 221.0138135703281, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 4.624151256630012, 0, 0, 0, 0, -420.7977643533311, 0, 0, 0, 0, 0, 0, 0, 0, 4628.775407886642, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -13886.32622365993, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13886.32622365993, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -4628.775407886642, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 420.7977643533311, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -4.624151256630012, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0.8442506508573726, 0, 0, -88.64631834002413, 0, 0, 0, 0, 0, 0, 1152.402138420314, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -4225.47450754115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5432.752938267193, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2535.28470452469, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 384.1340461401045, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -12.66375976286059, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +}; + + +static dtype g_trans_cart2jR[] = { + 0, + 1, + 1, + 0, + -0.577350269189625764, + 0, + 0, + 0, + 0, + 0.577350269189625764, + 0, + 0, + -0.577350269189625764, + -0.577350269189625764, + 0, + 0, + 0, + 0, + 0, + 0.707106781186547524, + 0, + 0, + 0.408248290463863016, + 0, + 0, + 0, + 0, + 0.816496580927726033, + 0, + 0, + 0.816496580927726033, + -0.408248290463863016, + 0, + 0, + -0.707106781186547524, + 0, + 0, + 0, + 0, + 0, + -0.345494149471335479, + 0, + 0, + 0.345494149471335479, + 0, + 0, + 0, + 0, + 0.345494149471335479, + 0, + 0, + 0, + 0, + 0, + -0.598413420602149016, + 0, + 0, + 0, + -0.199471140200716338, + 0, + 0, + -0.199471140200716338, + 0, + 0.398942280401432677, + 0.199471140200716338, + 0, + 0, + 0.199471140200716338, + 0, + -0.398942280401432677, + 0, + 0, + -0.598413420602149016, + 0, + 0, + 0, + 0, + 0, + 0.345494149471335479, + 0, + 0, + 0, + 0.345494149471335479, + 0, + 0, + -0.345494149471335479, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0.386274202023189580, + 0, + 0, + -0.386274202023189580, + 0, + 0, + 0.172747074735667739, + 0, + 0, + -0.172747074735667739, + 0, + 0, + 0, + 0, + 0.690988298942670958, + 0, + 0, + 0, + 0, + 0, + 0.488602511902919921, + 0, + 0, + 0, + -0.244301255951459960, + 0, + 0, + -0.244301255951459960, + 0, + 0.488602511902919921, + -0.244301255951459960, + 0, + 0, + -0.244301255951459960, + 0, + 0.488602511902919921, + 0, + 0, + -0.488602511902919921, + 0, + 0, + 0, + 0, + 0, + -0.690988298942670958, + 0, + 0, + 0, + 0.172747074735667739, + 0, + 0, + -0.172747074735667739, + 0, + 0, + 0.386274202023189580, + 0, + 0, + -0.386274202023189580, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + -0.386274202023189580, + 0, + 0, + 1.158822606069568741, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0.386274202023189580, + 0, + 0, + 0, + 0, + -0.386274202023189580, + 0, + 0, + 0, + 0, + -0.863735373678338698, + 0, + 0, + 0, + 0, + 0.863735373678338698, + 0, + 0, + -0.172747074735667739, + 0, + 0, + -0.172747074735667739, + 0, + 0.690988298942670958, + 0, + 0, + 0, + 0, + 0.244301255951459960, + 0, + 0, + 0.244301255951459960, + 0, + -0.977205023805839843, + 0, + 0, + 0, + 0, + 0, + 0, + -0.732903767854379882, + 0, + 0, + 0, + 0, + -0.732903767854379882, + 0, + 0.488602511902919921, + 0, + 0, + 0.732903767854379882, + 0, + 0, + 0, + 0, + 0.732903767854379882, + 0, + -0.488602511902919921, + 0.244301255951459960, + 0, + 0, + 0.244301255951459960, + 0, + -0.977205023805839843, + 0, + 0, + 0, + 0, + -0.172747074735667739, + 0, + 0, + -0.172747074735667739, + 0, + 0.690988298942670958, + 0, + 0, + 0, + 0, + 0, + 0, + 0.863735373678338698, + 0, + 0, + 0, + 0, + -0.863735373678338698, + 0, + 0, + 0, + 0, + -0.386274202023189580, + 0, + 0, + 0, + 0, + 0.386274202023189580, + 0, + 0, + -0.386274202023189580, + 0, + 0, + 1.158822606069568741, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0.417223823632784089, + 0, + 0, + -1.251671470898352269, + 0, + 0, + 0, + 0, + 0, + 0, + 0.157695782626260003, + 0, + 0, + -0.473087347878780009, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0.946174695757560018, + 0, + 0, + 0, + 0, + -0.946174695757560018, + 0, + 0, + 0, + 0, + 0.546274215296039535, + 0, + 0, + 0, + 0, + -0.546274215296039535, + 0, + 0, + -0.273137107648019767, + 0, + 0, + -0.273137107648019767, + 0, + 1.092548430592079070, + 0, + 0, + 0, + 0, + -0.211571093830408607, + 0, + 0, + -0.211571093830408607, + 0, + 0.846284375321634430, + 0, + 0, + 0, + 0, + 0, + 0, + -0.846284375321634430, + 0, + 0, + 0, + 0, + -0.846284375321634430, + 0, + 0.564189583547756286, + 0, + 0, + -0.846284375321634430, + 0, + 0, + 0, + 0, + -0.846284375321634430, + 0, + 0.564189583547756286, + 0.211571093830408607, + 0, + 0, + 0.211571093830408607, + 0, + -0.846284375321634430, + 0, + 0, + 0, + 0, + 0.273137107648019767, + 0, + 0, + 0.273137107648019767, + 0, + -1.092548430592079070, + 0, + 0, + 0, + 0, + 0, + 0, + 0.546274215296039535, + 0, + 0, + 0, + 0, + -0.546274215296039535, + 0, + 0, + 0, + 0, + 0.946174695757560018, + 0, + 0, + 0, + 0, + -0.946174695757560018, + 0, + 0, + -0.157695782626260003, + 0, + 0, + 0.473087347878780009, + 0, + 0, + 0, + 0, + 0, + 0, + -0.417223823632784089, + 0, + 0, + 1.251671470898352269, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + + -0.417223823632784089, 0, 0, 2.503342941796704538, 0, 0, 0, 0, 0, 0, -0.417223823632784089, 0, 0, 0, 0, + 0, 0, 0.417223823632784089, 0, 0, 0, 0, -1.251671470898352269, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, -1.103870478383820021, 0, 0, 0, 0, 3.311611435151460063, 0, 0, 0, 0, 0, 0, 0, + -0.157695782626260003, 0, 0, 0, 0, 0.946174695757560018, 0, 0, 0, 0, 0.157695782626260003, 0, -0.946174695757560018, 0, 0, + + 0.273137107648019767, 0, 0, 0, 0, -1.638822645888118605, 0, 0, 0, 0, -0.273137107648019767, 0, 1.638822645888118605, 0, 0, + 0, 0, -0.819411322944059302, 0, 0, 0, 0, -0.819411322944059302, 0, 1.092548430592079070, 0, 0, 0, 0, 0, + + 0, 0, 1.057855469152043038, 0, 0, 0, 0, 1.057855469152043038, 0, -1.410473958869390717, 0, 0, 0, 0, 0, + 0.211571093830408607, 0, 0, 0.423142187660817215, 0, -1.692568750643268860, 0, 0, 0, 0, 0.211571093830408607, 0, -1.692568750643268860, 0, 0.564189583547756286, + + -0.211571093830408607, 0, 0, -0.423142187660817215, 0, 1.692568750643268860, 0, 0, 0, 0, -0.211571093830408607, 0, 1.692568750643268860, 0, -0.564189583547756286, + 0, 0, 1.057855469152043038, 0, 0, 0, 0, 1.057855469152043038, 0, -1.410473958869390717, 0, 0, 0, 0, 0, + + 0, 0, -0.819411322944059302, 0, 0, 0, 0, -0.819411322944059302, 0, 1.092548430592079070, 0, 0, 0, 0, 0, + -0.273137107648019767, 0, 0, 0, 0, 1.638822645888118605, 0, 0, 0, 0, 0.273137107648019767, 0, -1.638822645888118605, 0, 0, + + 0.157695782626260003, 0, 0, 0, 0, -0.946174695757560018, 0, 0, 0, 0, -0.157695782626260003, 0, 0.946174695757560018, 0, 0, + 0, 0, -1.103870478383820021, 0, 0, 0, 0, 3.311611435151460063, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 0.417223823632784089, 0, 0, 0, 0, -1.251671470898352269, 0, 0, 0, 0, 0, 0, 0, + 0.417223823632784089, 0, 0, -2.503342941796704538, 0, 0, 0, 0, 0, 0, 0.417223823632784089, 0, 0, 0, 0, + + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0.442532692444982632, 0, 0, -2.655196154669895796, 0, 0, 0, 0, 0, 0, 0.442532692444982632, 0, 0, 0, 0, + + 0.147510897481660877, 0, 0, -0.885065384889965265, 0, 0, 0, 0, 0, 0, 0.147510897481660877, 0, 0, 0, 0, + 0, 0, 1.180087179853287020, 0, 0, 0, 0, -3.540261539559861062, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 0.590043589926643510, 0, 0, 0, 0, -1.770130769779930531, 0, 0, 0, 0, 0, 0, 0, + -0.295021794963321755, 0, 0, 0, 0, 1.770130769779930531, 0, 0, 0, 0, 0.295021794963321755, 0, -1.770130769779930531, 0, 0, + + -0.193137101011594790, 0, 0, 0, 0, 1.158822606069568741, 0, 0, 0, 0, 0.193137101011594790, 0, -1.158822606069568741, 0, 0, + 0, 0, -1.158822606069568741, 0, 0, 0, 0, -1.158822606069568741, 0, 1.545096808092758321, 0, 0, 0, 0, 0, + + 0, 0, -0.946174695757560018, 0, 0, 0, 0, -0.946174695757560018, 0, 1.261566261010080024, 0, 0, 0, 0, 0, + 0.236543673939390004, 0, 0, 0.473087347878780009, 0, -1.892349391515120036, 0, 0, 0, 0, 0.236543673939390004, 0, -1.892349391515120036, 0, 0.630783130505040012, + + 0.236543673939390004, 0, 0, 0.473087347878780009, 0, -1.892349391515120036, 0, 0, 0, 0, 0.236543673939390004, 0, -1.892349391515120036, 0, 0.630783130505040012, + 0, 0, 0.946174695757560018, 0, 0, 0, 0, 0.946174695757560018, 0, -1.261566261010080024, 0, 0, 0, 0, 0, + + 0, 0, 1.158822606069568741, 0, 0, 0, 0, 1.158822606069568741, 0, -1.545096808092758321, 0, 0, 0, 0, 0, + -0.193137101011594790, 0, 0, 0, 0, 1.158822606069568741, 0, 0, 0, 0, 0.193137101011594790, 0, -1.158822606069568741, 0, 0, + + -0.295021794963321755, 0, 0, 0, 0, 1.770130769779930531, 0, 0, 0, 0, 0.295021794963321755, 0, -1.770130769779930531, 0, 0, + 0, 0, -0.590043589926643510, 0, 0, 0, 0, 1.770130769779930531, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, -1.180087179853287020, 0, 0, 0, 0, 3.540261539559861062, 0, 0, 0, 0, 0, 0, 0, + 0.147510897481660877, 0, 0, -0.885065384889965265, 0, 0, 0, 0, 0, 0, 0.147510897481660877, 0, 0, 0, 0, + + 0.442532692444982632, 0, 0, -2.655196154669895796, 0, 0, 0, 0, 0, 0, 0.442532692444982632, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + -0.442532692444982632, 0, 0, 4.425326924449826327, 0, 0, 0, 0, 0, 0, -2.212663462224913163, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0.442532692444982632, 0, 0, 0, 0, -2.655196154669895796, 0, 0, 0, 0, 0, 0, 0, 0, 0.442532692444982632, 0, 0, 0, 0, + + 0, 0, -1.327598077334947898, 0, 0, 0, 0, 7.965588464009687389, 0, 0, 0, 0, 0, 0, 0, 0, -1.327598077334947898, 0, 0, 0, 0, + -0.147510897481660877, 0, 0, 0.295021794963321755, 0, 1.180087179853287020, 0, 0, 0, 0, 0.442532692444982632, 0, -3.540261539559861062, 0, 0, 0, 0, 0, 0, 0, 0, + + 0.295021794963321755, 0, 0, -0.590043589926643510, 0, -2.360174359706574041, 0, 0, 0, 0, -0.885065384889965265, 0, 7.080523079119722124, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, -0.885065384889965265, 0, 0, 0, 0, 0, 0, 1.770130769779930531, 0, 0, 0, 0, 0, 0, 0.885065384889965265, 0, -1.770130769779930531, 0, 0, + + 0, 0, 1.351959707081163531, 0, 0, 0, 0, 0, 0, -2.703919414162327062, 0, 0, 0, 0, 0, 0, -1.351959707081163531, 0, 2.703919414162327062, 0, 0, + 0.193137101011594790, 0, 0, 0.386274202023189580, 0, -2.317645212139137482, 0, 0, 0, 0, 0.193137101011594790, 0, -2.317645212139137482, 0, 1.545096808092758321, 0, 0, 0, 0, 0, 0, + + -0.236543673939390004, 0, 0, -0.473087347878780009, 0, 2.838524087272680054, 0, 0, 0, 0, -0.236543673939390004, 0, 2.838524087272680054, 0, -1.892349391515120036, 0, 0, 0, 0, 0, 0, + 0, 0, 1.182718369696950022, 0, 0, 0, 0, 2.365436739393900045, 0, -3.153915652525200060, 0, 0, 0, 0, 0, 0, 1.182718369696950022, 0, -3.153915652525200060, 0, 0.630783130505040012, + + 0, 0, -1.182718369696950022, 0, 0, 0, 0, -2.365436739393900045, 0, 3.153915652525200060, 0, 0, 0, 0, 0, 0, -1.182718369696950022, 0, 3.153915652525200060, 0, -0.630783130505040012, + -0.236543673939390004, 0, 0, -0.473087347878780009, 0, 2.838524087272680054, 0, 0, 0, 0, -0.236543673939390004, 0, 2.838524087272680054, 0, -1.892349391515120036, 0, 0, 0, 0, 0, 0, + + 0.193137101011594790, 0, 0, 0.386274202023189580, 0, -2.317645212139137482, 0, 0, 0, 0, 0.193137101011594790, 0, -2.317645212139137482, 0, 1.545096808092758321, 0, 0, 0, 0, 0, 0, + 0, 0, -1.351959707081163531, 0, 0, 0, 0, 0, 0, 2.703919414162327062, 0, 0, 0, 0, 0, 0, 1.351959707081163531, 0, -2.703919414162327062, 0, 0, + + 0, 0, 0.885065384889965265, 0, 0, 0, 0, 0, 0, -1.770130769779930531, 0, 0, 0, 0, 0, 0, -0.885065384889965265, 0, 1.770130769779930531, 0, 0, + 0.295021794963321755, 0, 0, -0.590043589926643510, 0, -2.360174359706574041, 0, 0, 0, 0, -0.885065384889965265, 0, 7.080523079119722124, 0, 0, 0, 0, 0, 0, 0, 0, + + -0.147510897481660877, 0, 0, 0.295021794963321755, 0, 1.180087179853287020, 0, 0, 0, 0, 0.442532692444982632, 0, -3.540261539559861062, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1.327598077334947898, 0, 0, 0, 0, -7.965588464009687389, 0, 0, 0, 0, 0, 0, 0, 0, 1.327598077334947898, 0, 0, 0, 0, + + 0, 0, -0.442532692444982632, 0, 0, 0, 0, 2.655196154669895796, 0, 0, 0, 0, 0, 0, 0, 0, -0.442532692444982632, 0, 0, 0, 0, + -0.442532692444982632, 0, 0, 4.425326924449826327, 0, 0, 0, 0, 0, 0, -2.212663462224913163, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0.464132203440858160, 0, 0, -4.641322034408581606, 0, 0, 0, 0, 0, 0, 2.320661017204290803, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0.139941124721293271, 0, 0, -1.399411247212932717, 0, 0, 0, 0, 0, 0, 0.699705623606466358, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1.399411247212932717, 0, 0, 0, 0, -8.396467483277596306, 0, 0, 0, 0, 0, 0, 0, 0, 1.399411247212932717, 0, 0, 0, 0, + + 0, 0, 0.625835735449176134, 0, 0, 0, 0, -3.755014412695056807, 0, 0, 0, 0, 0, 0, 0, 0, 0.625835735449176134, 0, 0, 0, 0, + -0.312917867724588067, 0, 0, 0.625835735449176134, 0, 2.503342941796704538, 0, 0, 0, 0, 0.938753603173764201, 0, -7.510028825390113615, 0, 0, 0, 0, 0, 0, 0, 0, + + -0.180663215165034628, 0, 0, 0.361326430330069256, 0, 1.445305721320277027, 0, 0, 0, 0, 0.541989645495103885, 0, -4.335917163960831083, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, -1.445305721320277027, 0, 0, 0, 0, 0, 0, 2.890611442640554055, 0, 0, 0, 0, 0, 0, 1.445305721320277027, 0, -2.890611442640554055, 0, 0, + + 0, 0, -1.021985476433282363, 0, 0, 0, 0, 0, 0, 2.043970952866564726, 0, 0, 0, 0, 0, 0, 1.021985476433282363, 0, -2.043970952866564726, 0, 0, + 0.255496369108320590, 0, 0, 0.510992738216641181, 0, -3.065956429299847090, 0, 0, 0, 0, 0.255496369108320590, 0, -3.065956429299847090, 0, 2.043970952866564726, 0, 0, 0, 0, 0, 0, + + 0.215933843419584674, 0, 0, 0.431867686839169349, 0, -2.591206121035016094, 0, 0, 0, 0, 0.215933843419584674, 0, -2.591206121035016094, 0, 1.727470747356677396, 0, 0, 0, 0, 0, 0, + 0, 0, 1.295603060517508047, 0, 0, 0, 0, 2.591206121035016094, 0, -3.454941494713354792, 0, 0, 0, 0, 0, 0, 1.295603060517508047, 0, -3.454941494713354792, 0, 0.690988298942670958, + + 0, 0, 1.295603060517508047, 0, 0, 0, 0, 2.591206121035016094, 0, -3.454941494713354792, 0, 0, 0, 0, 0, 0, 1.295603060517508047, 0, -3.454941494713354792, 0, 0.690988298942670958, + -0.215933843419584674, 0, 0, -0.431867686839169349, 0, 2.591206121035016094, 0, 0, 0, 0, -0.215933843419584674, 0, 2.591206121035016094, 0, -1.727470747356677396, 0, 0, 0, 0, 0, 0, + + -0.255496369108320590, 0, 0, -0.510992738216641181, 0, 3.065956429299847090, 0, 0, 0, 0, -0.255496369108320590, 0, 3.065956429299847090, 0, -2.043970952866564726, 0, 0, 0, 0, 0, 0, + 0, 0, -1.021985476433282363, 0, 0, 0, 0, 0, 0, 2.043970952866564726, 0, 0, 0, 0, 0, 0, 1.021985476433282363, 0, -2.043970952866564726, 0, 0, + + 0, 0, -1.445305721320277027, 0, 0, 0, 0, 0, 0, 2.890611442640554055, 0, 0, 0, 0, 0, 0, 1.445305721320277027, 0, -2.890611442640554055, 0, 0, + 0.180663215165034628, 0, 0, -0.361326430330069256, 0, -1.445305721320277027, 0, 0, 0, 0, -0.541989645495103885, 0, 4.335917163960831083, 0, 0, 0, 0, 0, 0, 0, 0, + + 0.312917867724588067, 0, 0, -0.625835735449176134, 0, -2.503342941796704538, 0, 0, 0, 0, -0.938753603173764201, 0, 7.510028825390113615, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0.625835735449176134, 0, 0, 0, 0, -3.755014412695056807, 0, 0, 0, 0, 0, 0, 0, 0, 0.625835735449176134, 0, 0, 0, 0, + + 0, 0, 1.399411247212932717, 0, 0, 0, 0, -8.396467483277596306, 0, 0, 0, 0, 0, 0, 0, 0, 1.399411247212932717, 0, 0, 0, 0, + -0.139941124721293271, 0, 0, 1.399411247212932717, 0, 0, 0, 0, 0, 0, -0.699705623606466358, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + -0.464132203440858160, 0, 0, 4.641322034408581606, 0, 0, 0, 0, 0, 0, -2.320661017204290803, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + -0.4641322034408583, 0, 0, 6.9619830516128740, 0, 0, 0, 0, 0, 0, -6.9619830516128740, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.4641322034408583, 0, 0, 0, 0, 0, 0, + 0, 0, 0.4641322034408583, 0, 0, 0, 0, -4.6413220344085833, 0, 0, 0, 0, 0, 0, 0, 0, 2.3206610172042916, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, -1.5393523719342264, 0, 0, 0, 0, 15.3935237193422640, 0, 0, 0, 0, 0, 0, 0, 0, -7.6967618596711320, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + -0.1399411247212932, 0, 0, 0.6997056236064662, 0, 1.3994112472129330, 0, 0, 0, 0, 0.6997056236064662, 0, -8.3964674832775970, 0, 0, 0, 0, 0, 0, 0, 0, -0.1399411247212932, 0, 1.3994112472129330, 0, 0, 0, 0, + + 0.3129178677245880, 0, 0, -1.5645893386229399, 0, -3.1291786772458812, 0, 0, 0, 0, -1.5645893386229399, 0, 18.7750720634752852, 0, 0, 0, 0, 0, 0, 0, 0, 0.3129178677245880, 0, -3.1291786772458812, 0, 0, 0, 0, + 0, 0, -0.9387536031737643, 0, 0, 0, 0, 1.8775072063475287, 0, 2.5033429417967050, 0, 0, 0, 0, 0, 0, 2.8162608095212929, 0, -7.5100288253901146, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 1.6259689364853118, 0, 0, 0, 0, -3.2519378729706236, 0, -4.3359171639608318, 0, 0, 0, 0, 0, 0, -4.8779068094559346, 0, 13.0077514918824946, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0.1806632151650347, 0, 0, 0.1806632151650347, 0, -2.8906114426405547, 0, 0, 0, 0, -0.1806632151650347, 0, 0, 0, 2.8906114426405547, 0, 0, 0, 0, 0, 0, -0.1806632151650347, 0, 2.8906114426405547, 0, -2.8906114426405547, 0, 0, + + -0.2554963691083206, 0, 0, -0.2554963691083206, 0, 4.0879419057331301, 0, 0, 0, 0, 0.2554963691083206, 0, 0, 0, -4.0879419057331301, 0, 0, 0, 0, 0, 0, 0.2554963691083206, 0, -4.0879419057331301, 0, 4.0879419057331301, 0, 0, + 0, 0, 1.2774818455416030, 0, 0, 0, 0, 2.5549636910832061, 0, -5.1099273821664122, 0, 0, 0, 0, 0, 0, 1.2774818455416030, 0, -5.1099273821664122, 0, 2.0439709528665646, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, -1.5115369039370925, 0, 0, 0, 0, -3.0230738078741850, 0, 6.0461476157483700, 0, 0, 0, 0, 0, 0, -1.5115369039370925, 0, 6.0461476157483700, 0, -2.4184590462993478, 0, 0, 0, 0, 0, 0, 0, + -0.2159338434195847, 0, 0, -0.6478015302587540, 0, 3.8868091815525241, 0, 0, 0, 0, -0.6478015302587540, 0, 7.7736183631050482, 0, -5.1824122420700318, 0, 0, 0, 0, 0, 0, -0.2159338434195847, 0, 3.8868091815525241, 0, -5.1824122420700318, 0, 0.6909882989426709, + + 0.2159338434195847, 0, 0, 0.6478015302587540, 0, -3.8868091815525241, 0, 0, 0, 0, 0.6478015302587540, 0, -7.7736183631050482, 0, 5.1824122420700318, 0, 0, 0, 0, 0, 0, 0.2159338434195847, 0, -3.8868091815525241, 0, 5.1824122420700318, 0, -0.6909882989426709, + 0, 0, -1.5115369039370925, 0, 0, 0, 0, -3.0230738078741850, 0, 6.0461476157483700, 0, 0, 0, 0, 0, 0, -1.5115369039370925, 0, 6.0461476157483700, 0, -2.4184590462993478, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 1.2774818455416030, 0, 0, 0, 0, 2.5549636910832061, 0, -5.1099273821664122, 0, 0, 0, 0, 0, 0, 1.2774818455416030, 0, -5.1099273821664122, 0, 2.0439709528665646, 0, 0, 0, 0, 0, 0, 0, + 0.2554963691083206, 0, 0, 0.2554963691083206, 0, -4.0879419057331301, 0, 0, 0, 0, -0.2554963691083206, 0, 0, 0, 4.0879419057331301, 0, 0, 0, 0, 0, 0, -0.2554963691083206, 0, 4.0879419057331301, 0, -4.0879419057331301, 0, 0, + + -0.1806632151650347, 0, 0, -0.1806632151650347, 0, 2.8906114426405547, 0, 0, 0, 0, 0.1806632151650347, 0, 0, 0, -2.8906114426405547, 0, 0, 0, 0, 0, 0, 0.1806632151650347, 0, -2.8906114426405547, 0, 2.8906114426405547, 0, 0, + 0, 0, 1.6259689364853118, 0, 0, 0, 0, -3.2519378729706236, 0, -4.3359171639608318, 0, 0, 0, 0, 0, 0, -4.8779068094559346, 0, 13.0077514918824946, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, -0.9387536031737643, 0, 0, 0, 0, 1.8775072063475287, 0, 2.5033429417967050, 0, 0, 0, 0, 0, 0, 2.8162608095212929, 0, -7.5100288253901146, 0, 0, 0, 0, 0, 0, 0, 0, 0, + -0.3129178677245880, 0, 0, 1.5645893386229399, 0, 3.1291786772458812, 0, 0, 0, 0, 1.5645893386229399, 0, -18.7750720634752852, 0, 0, 0, 0, 0, 0, 0, 0, -0.3129178677245880, 0, 3.1291786772458812, 0, 0, 0, 0, + + 0.1399411247212932, 0, 0, -0.6997056236064662, 0, -1.3994112472129330, 0, 0, 0, 0, -0.6997056236064662, 0, 8.3964674832775970, 0, 0, 0, 0, 0, 0, 0, 0, 0.1399411247212932, 0, -1.3994112472129330, 0, 0, 0, 0, + 0, 0, -1.5393523719342264, 0, 0, 0, 0, 15.3935237193422640, 0, 0, 0, 0, 0, 0, 0, 0, -7.6967618596711320, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 0.4641322034408583, 0, 0, 0, 0, -4.6413220344085833, 0, 0, 0, 0, 0, 0, 0, 0, 2.3206610172042916, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0.4641322034408583, 0, 0, -6.9619830516128740, 0, 0, 0, 0, 0, 0, 6.9619830516128740, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.4641322034408583, 0, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0.4830841135800663, 0, 0, -7.2462617037009949, 0, 0, 0, 0, 0, 0, 7.2462617037009949, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.4830841135800663, 0, 0, 0, 0, 0, 0, + + 0.1339834262980768, 0, 0, -2.0097513944711523, 0, 0, 0, 0, 0, 0, 2.0097513944711523, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.1339834262980768, 0, 0, 0, 0, 0, 0, + 0, 0, 1.6078011155769223, 0, 0, 0, 0, -16.0780111557692216, 0, 0, 0, 0, 0, 0, 0, 0, 8.0390055778846108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 0.6563820568401703, 0, 0, 0, 0, -6.5638205684017032, 0, 0, 0, 0, 0, 0, 0, 0, 3.2819102842008516, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + -0.3281910284200850, 0, 0, 1.6409551421004249, 0, 3.2819102842008507, 0, 0, 0, 0, 1.6409551421004249, 0, -19.6914617052051035, 0, 0, 0, 0, 0, 0, 0, 0, -0.3281910284200850, 0, 3.2819102842008507, 0, 0, 0, 0, + + -0.1713921747991747, 0, 0, 0.8569608739958732, 0, 1.7139217479917468, 0, 0, 0, 0, 0.8569608739958732, 0, -10.2835304879504807, 0, 0, 0, 0, 0, 0, 0, 0, -0.1713921747991747, 0, 1.7139217479917468, 0, 0, 0, 0, + 0, 0, -1.7139217479917466, 0, 0, 0, 0, 3.4278434959834931, 0, 4.5704579946446584, 0, 0, 0, 0, 0, 0, 5.1417652439752395, 0, -13.7113739839339726, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, -1.0839792909902080, 0, 0, 0, 0, 2.1679585819804159, 0, 2.8906114426405547, 0, 0, 0, 0, 0, 0, 3.2519378729706232, 0, -8.6718343279216636, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0.2709948227475520, 0, 0, 0.2709948227475520, 0, -4.3359171639608318, 0, 0, 0, 0, -0.2709948227475520, 0, 0, 0, 4.3359171639608318, 0, 0, 0, 0, 0, 0, -0.2709948227475520, 0, 4.3359171639608318, 0, -4.3359171639608318, 0, 0, + + 0.2019876150713442, 0, 0, 0.2019876150713442, 0, -3.2318018411415070, 0, 0, 0, 0, -0.2019876150713442, 0, 0, 0, 3.2318018411415070, 0, 0, 0, 0, 0, 0, -0.2019876150713442, 0, 3.2318018411415070, 0, -3.2318018411415070, 0, 0, + 0, 0, 1.6159009205707533, 0, 0, 0, 0, 3.2318018411415066, 0, -6.4636036822830132, 0, 0, 0, 0, 0, 0, 1.6159009205707533, 0, -6.4636036822830132, 0, 2.5854414729132049, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 1.3994112472129328, 0, 0, 0, 0, 2.7988224944258655, 0, -5.5976449888517310, 0, 0, 0, 0, 0, 0, 1.3994112472129328, 0, -5.5976449888517310, 0, 2.2390579955406920, 0, 0, 0, 0, 0, 0, 0, + -0.2332352078688221, 0, 0, -0.6997056236064663, 0, 4.1982337416387976, 0, 0, 0, 0, -0.6997056236064663, 0, 8.3964674832775952, 0, -5.5976449888517301, 0, 0, 0, 0, 0, 0, -0.2332352078688221, 0, 4.1982337416387976, 0, -5.5976449888517301, 0, 0.7463526651802307, + + -0.2332352078688221, 0, 0, -0.6997056236064663, 0, 4.1982337416387976, 0, 0, 0, 0, -0.6997056236064663, 0, 8.3964674832775952, 0, -5.5976449888517301, 0, 0, 0, 0, 0, 0, -0.2332352078688221, 0, 4.1982337416387976, 0, -5.5976449888517301, 0, 0.7463526651802307, + 0, 0, -1.3994112472129328, 0, 0, 0, 0, -2.7988224944258655, 0, 5.5976449888517310, 0, 0, 0, 0, 0, 0, -1.3994112472129328, 0, 5.5976449888517310, 0, -2.2390579955406920, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, -1.6159009205707533, 0, 0, 0, 0, -3.2318018411415066, 0, 6.4636036822830132, 0, 0, 0, 0, 0, 0, -1.6159009205707533, 0, 6.4636036822830132, 0, -2.5854414729132049, 0, 0, 0, 0, 0, 0, 0, + 0.2019876150713442, 0, 0, 0.2019876150713442, 0, -3.2318018411415070, 0, 0, 0, 0, -0.2019876150713442, 0, 0, 0, 3.2318018411415070, 0, 0, 0, 0, 0, 0, -0.2019876150713442, 0, 3.2318018411415070, 0, -3.2318018411415070, 0, 0, + + 0.2709948227475520, 0, 0, 0.2709948227475520, 0, -4.3359171639608318, 0, 0, 0, 0, -0.2709948227475520, 0, 0, 0, 4.3359171639608318, 0, 0, 0, 0, 0, 0, -0.2709948227475520, 0, 4.3359171639608318, 0, -4.3359171639608318, 0, 0, + 0, 0, 1.0839792909902080, 0, 0, 0, 0, -2.1679585819804159, 0, -2.8906114426405547, 0, 0, 0, 0, 0, 0, -3.2519378729706232, 0, 8.6718343279216636, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 1.7139217479917466, 0, 0, 0, 0, -3.4278434959834931, 0, -4.5704579946446584, 0, 0, 0, 0, 0, 0, -5.1417652439752395, 0, 13.7113739839339726, 0, 0, 0, 0, 0, 0, 0, 0, 0, + -0.1713921747991747, 0, 0, 0.8569608739958732, 0, 1.7139217479917468, 0, 0, 0, 0, 0.8569608739958732, 0, -10.2835304879504807, 0, 0, 0, 0, 0, 0, 0, 0, -0.1713921747991747, 0, 1.7139217479917468, 0, 0, 0, 0, + + -0.3281910284200850, 0, 0, 1.6409551421004249, 0, 3.2819102842008507, 0, 0, 0, 0, 1.6409551421004249, 0, -19.6914617052051035, 0, 0, 0, 0, 0, 0, 0, 0, -0.3281910284200850, 0, 3.2819102842008507, 0, 0, 0, 0, + 0, 0, -0.6563820568401703, 0, 0, 0, 0, 6.5638205684017032, 0, 0, 0, 0, 0, 0, 0, 0, -3.2819102842008516, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, -1.6078011155769223, 0, 0, 0, 0, 16.0780111557692216, 0, 0, 0, 0, 0, 0, 0, 0, -8.0390055778846108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0.1339834262980768, 0, 0, -2.0097513944711523, 0, 0, 0, 0, 0, 0, 2.0097513944711523, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.1339834262980768, 0, 0, 0, 0, 0, 0, + + 0.4830841135800663, 0, 0, -7.2462617037009949, 0, 0, 0, 0, 0, 0, 7.2462617037009949, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.4830841135800663, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + -0.4830841135800663, 0, 0, 10.1447663851813932, 0, 0, 0, 0, 0, 0, -16.9079439753023237, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3.3815887950604644, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0.4830841135800661, 0, 0, 0, 0, -7.2462617037009922, 0, 0, 0, 0, 0, 0, 0, 0, 7.2462617037009922, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.4830841135800661, 0, 0, 0, 0, 0, 0, + + 0, 0, -1.7417845418749984, 0, 0, 0, 0, 26.1267681281249757, 0, 0, 0, 0, 0, 0, 0, 0, -26.1267681281249757, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.7417845418749984, 0, 0, 0, 0, 0, 0, + -0.1339834262980768, 0, 0, 1.2058508366826914, 0, 1.6078011155769216, 0, 0, 0, 0, 0.6699171314903840, 0, -16.0780111557692145, 0, 0, 0, 0, 0, 0, 0, 0, -0.6699171314903840, 0, 8.0390055778846072, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0.3281910284200851, 0, 0, -2.9537192557807663, 0, -3.9382923410410213, 0, 0, 0, 0, -1.6409551421004256, 0, 39.3829234104102142, 0, 0, 0, 0, 0, 0, 0, 0, 1.6409551421004256, 0, -19.6914617052051071, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, -0.9845730852602553, 0, 0, 0, 0, 4.9228654263012768, 0, 3.2819102842008512, 0, 0, 0, 0, 0, 0, 4.9228654263012768, 0, -19.6914617052051071, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.9845730852602553, 0, 3.2819102842008512, 0, 0, 0, 0, + + 0, 0, 1.8853139227909212, 0, 0, 0, 0, -9.4265696139546051, 0, -6.2843797426364043, 0, 0, 0, 0, 0, 0, -9.4265696139546051, 0, 37.7062784558184205, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.8853139227909212, 0, -6.2843797426364043, 0, 0, 0, 0, + 0.1713921747991747, 0, 0, -0.1713921747991747, 0, -3.4278434959834923, 0, 0, 0, 0, -0.8569608739958733, 0, 6.8556869919669845, 0, 4.5704579946446575, 0, 0, 0, 0, 0, 0, -0.5141765243975239, 0, 10.2835304879504772, 0, -13.7113739839339726, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + -0.2709948227475520, 0, 0, 0.2709948227475520, 0, 5.4198964549510391, 0, 0, 0, 0, 1.3549741137377600, 0, -10.8397929099020782, 0, -7.2265286066013861, 0, 0, 0, 0, 0, 0, 0.8129844682426559, 0, -16.2596893648531164, 0, 21.6795858198041600, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1.3549741137377600, 0, 0, 0, 0, 1.3549741137377600, 0, -7.2265286066013861, 0, 0, 0, 0, 0, 0, -1.3549741137377600, 0, 0, 0, 4.3359171639608327, 0, 0, 0, 0, 0, 0, 0, 0, -1.3549741137377600, 0, 7.2265286066013861, 0, -4.3359171639608327, 0, 0, + + 0, 0, -1.8178885356420982, 0, 0, 0, 0, -1.8178885356420982, 0, 9.6954055234245224, 0, 0, 0, 0, 0, 0, 1.8178885356420982, 0, 0, 0, -5.8172433140547142, 0, 0, 0, 0, 0, 0, 0, 0, 1.8178885356420982, 0, -9.6954055234245224, 0, 5.8172433140547142, 0, 0, + -0.2019876150713442, 0, 0, -0.6059628452140327, 0, 4.8477027617122603, 0, 0, 0, 0, -0.6059628452140327, 0, 9.6954055234245207, 0, -9.6954055234245207, 0, 0, 0, 0, 0, 0, -0.2019876150713442, 0, 4.8477027617122603, 0, -9.6954055234245207, 0, 2.5854414729132063, 0, 0, 0, 0, 0, 0, 0, 0, + + 0.2332352078688221, 0, 0, 0.6997056236064664, 0, -5.5976449888517301, 0, 0, 0, 0, 0.6997056236064664, 0, -11.1952899777034602, 0, 11.1952899777034602, 0, 0, 0, 0, 0, 0, 0.2332352078688221, 0, -5.5976449888517301, 0, 11.1952899777034602, 0, -2.9854106607209236, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, -1.6326464550817545, 0, 0, 0, 0, -4.8979393652452643, 0, 9.7958787304905268, 0, 0, 0, 0, 0, 0, -4.8979393652452643, 0, 19.5917574609810536, 0, -7.8367029843924216, 0, 0, 0, 0, 0, 0, 0, 0, -1.6326464550817545, 0, 9.7958787304905268, 0, -7.8367029843924216, 0, 0.7463526651802307, + + 0, 0, 1.6326464550817545, 0, 0, 0, 0, 4.8979393652452643, 0, -9.7958787304905268, 0, 0, 0, 0, 0, 0, 4.8979393652452643, 0, -19.5917574609810536, 0, 7.8367029843924216, 0, 0, 0, 0, 0, 0, 0, 0, 1.6326464550817545, 0, -9.7958787304905268, 0, 7.8367029843924216, 0, -0.7463526651802307, + 0.2332352078688221, 0, 0, 0.6997056236064664, 0, -5.5976449888517301, 0, 0, 0, 0, 0.6997056236064664, 0, -11.1952899777034602, 0, 11.1952899777034602, 0, 0, 0, 0, 0, 0, 0.2332352078688221, 0, -5.5976449888517301, 0, 11.1952899777034602, 0, -2.9854106607209236, 0, 0, 0, 0, 0, 0, 0, 0, + + -0.2019876150713442, 0, 0, -0.6059628452140327, 0, 4.8477027617122603, 0, 0, 0, 0, -0.6059628452140327, 0, 9.6954055234245207, 0, -9.6954055234245207, 0, 0, 0, 0, 0, 0, -0.2019876150713442, 0, 4.8477027617122603, 0, -9.6954055234245207, 0, 2.5854414729132063, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1.8178885356420982, 0, 0, 0, 0, 1.8178885356420982, 0, -9.6954055234245224, 0, 0, 0, 0, 0, 0, -1.8178885356420982, 0, 0, 0, 5.8172433140547142, 0, 0, 0, 0, 0, 0, 0, 0, -1.8178885356420982, 0, 9.6954055234245224, 0, -5.8172433140547142, 0, 0, + + 0, 0, -1.3549741137377600, 0, 0, 0, 0, -1.3549741137377600, 0, 7.2265286066013861, 0, 0, 0, 0, 0, 0, 1.3549741137377600, 0, 0, 0, -4.3359171639608327, 0, 0, 0, 0, 0, 0, 0, 0, 1.3549741137377600, 0, -7.2265286066013861, 0, 4.3359171639608327, 0, 0, + -0.2709948227475520, 0, 0, 0.2709948227475520, 0, 5.4198964549510391, 0, 0, 0, 0, 1.3549741137377600, 0, -10.8397929099020782, 0, -7.2265286066013861, 0, 0, 0, 0, 0, 0, 0.8129844682426559, 0, -16.2596893648531164, 0, 21.6795858198041600, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0.1713921747991747, 0, 0, -0.1713921747991747, 0, -3.4278434959834923, 0, 0, 0, 0, -0.8569608739958733, 0, 6.8556869919669845, 0, 4.5704579946446575, 0, 0, 0, 0, 0, 0, -0.5141765243975239, 0, 10.2835304879504772, 0, -13.7113739839339726, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, -1.8853139227909212, 0, 0, 0, 0, 9.4265696139546051, 0, 6.2843797426364043, 0, 0, 0, 0, 0, 0, 9.4265696139546051, 0, -37.7062784558184205, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1.8853139227909212, 0, 6.2843797426364043, 0, 0, 0, 0, + + 0, 0, 0.9845730852602553, 0, 0, 0, 0, -4.9228654263012768, 0, -3.2819102842008512, 0, 0, 0, 0, 0, 0, -4.9228654263012768, 0, 19.6914617052051071, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.9845730852602553, 0, -3.2819102842008512, 0, 0, 0, 0, + 0.3281910284200851, 0, 0, -2.9537192557807663, 0, -3.9382923410410213, 0, 0, 0, 0, -1.6409551421004256, 0, 39.3829234104102142, 0, 0, 0, 0, 0, 0, 0, 0, 1.6409551421004256, 0, -19.6914617052051071, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + -0.1339834262980768, 0, 0, 1.2058508366826914, 0, 1.6078011155769216, 0, 0, 0, 0, 0.6699171314903840, 0, -16.0780111557692145, 0, 0, 0, 0, 0, 0, 0, 0, -0.6699171314903840, 0, 8.0390055778846072, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1.7417845418749984, 0, 0, 0, 0, -26.1267681281249757, 0, 0, 0, 0, 0, 0, 0, 0, 26.1267681281249757, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1.7417845418749984, 0, 0, 0, 0, 0, 0, + + 0, 0, -0.4830841135800661, 0, 0, 0, 0, 7.2462617037009922, 0, 0, 0, 0, 0, 0, 0, 0, -7.2462617037009922, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.4830841135800661, 0, 0, 0, 0, 0, 0, + -0.4830841135800663, 0, 0, 10.1447663851813932, 0, 0, 0, 0, 0, 0, -16.9079439753023237, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3.3815887950604644, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0.5000395635705508, 0, 0, -10.5008308349815653, 0, 0, 0, 0, 0, 0, 17.5013847249692773, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -3.5002769449938556, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0.1291096601435712, 0, 0, -2.7113028630149949, 0, 0, 0, 0, 0, 0, 4.5188381050249919, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.9037676210049984, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1.8075352420099966, 0, 0, 0, 0, -27.1130286301499481, 0, 0, 0, 0, 0, 0, 0, 0, 27.1130286301499481, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1.8075352420099966, 0, 0, 0, 0, 0, 0, + + 0, 0, 0.6831841051919142, 0, 0, 0, 0, -10.2477615778787126, 0, 0, 0, 0, 0, 0, 0, 0, 10.2477615778787126, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.6831841051919142, 0, 0, 0, 0, 0, 0, + -0.3415920525959572, 0, 0, 3.0743284733636154, 0, 4.0991046311514863, 0, 0, 0, 0, 1.7079602629797861, 0, -40.9910463115148644, 0, 0, 0, 0, 0, 0, 0, 0, -1.7079602629797861, 0, 20.4955231557574322, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + -0.1640955142100426, 0, 0, 1.4768596278903832, 0, 1.9691461705205107, 0, 0, 0, 0, 0.8204775710502128, 0, -19.6914617052051071, 0, 0, 0, 0, 0, 0, 0, 0, -0.8204775710502128, 0, 9.8457308526025535, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, -1.9691461705205107, 0, 0, 0, 0, 9.8457308526025535, 0, 6.5638205684017024, 0, 0, 0, 0, 0, 0, 9.8457308526025535, 0, -39.3829234104102142, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1.9691461705205107, 0, 6.5638205684017024, 0, 0, 0, 0, + + 0, 0, -1.1368870716237374, 0, 0, 0, 0, 5.6844353581186864, 0, 3.7896235720791247, 0, 0, 0, 0, 0, 0, 5.6844353581186864, 0, -22.7377414324747456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1.1368870716237374, 0, 3.7896235720791247, 0, 0, 0, 0, + 0.2842217679059343, 0, 0, -0.2842217679059343, 0, -5.6844353581186855, 0, 0, 0, 0, -1.4211088395296716, 0, 11.3688707162373710, 0, 7.5792471441582485, 0, 0, 0, 0, 0, 0, -0.8526653037178029, 0, 17.0533060743560583, 0, -22.7377414324747456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0.1916222768312404, 0, 0, -0.1916222768312404, 0, -3.8324455366248085, 0, 0, 0, 0, -0.9581113841562022, 0, 7.6648910732496169, 0, 5.1099273821664122, 0, 0, 0, 0, 0, 0, -0.5748668304937213, 0, 11.4973366098744254, 0, -15.3297821464992357, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1.9162227683124053, 0, 0, 0, 0, 1.9162227683124053, 0, -10.2198547643328261, 0, 0, 0, 0, 0, 0, -1.9162227683124053, 0, 0, 0, 6.1319128585996969, 0, 0, 0, 0, 0, 0, 0, 0, -1.9162227683124053, 0, 10.2198547643328261, 0, -6.1319128585996969, 0, 0, + + 0, 0, 1.4842997738594836, 0, 0, 0, 0, 1.4842997738594836, 0, -7.9162654605839124, 0, 0, 0, 0, 0, 0, -1.4842997738594836, 0, 0, 0, 4.7497592763503480, 0, 0, 0, 0, 0, 0, 0, 0, -1.4842997738594836, 0, 7.9162654605839124, 0, -4.7497592763503480, 0, 0, + -0.2473832956432473, 0, 0, -0.7421498869297418, 0, 5.9371990954379337, 0, 0, 0, 0, -0.7421498869297418, 0, 11.8743981908758673, 0, -11.8743981908758673, 0, 0, 0, 0, 0, 0, -0.2473832956432473, 0, 5.9371990954379337, 0, -11.8743981908758673, 0, 3.1665061842335653, 0, 0, 0, 0, 0, 0, 0, 0, + + -0.2181715595945335, 0, 0, -0.6545146787836006, 0, 5.2361174302688038, 0, 0, 0, 0, -0.6545146787836006, 0, 10.4722348605376077, 0, -10.4722348605376077, 0, 0, 0, 0, 0, 0, -0.2181715595945335, 0, 5.2361174302688038, 0, -10.4722348605376077, 0, 2.7925959628100294, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, -1.7453724767562677, 0, 0, 0, 0, -5.2361174302688038, 0, 10.4722348605376059, 0, 0, 0, 0, 0, 0, -5.2361174302688038, 0, 20.9444697210752118, 0, -8.3777878884300847, 0, 0, 0, 0, 0, 0, 0, 0, -1.7453724767562677, 0, 10.4722348605376059, 0, -8.3777878884300847, 0, 0.7978845608028652, + + 0, 0, -1.7453724767562677, 0, 0, 0, 0, -5.2361174302688038, 0, 10.4722348605376059, 0, 0, 0, 0, 0, 0, -5.2361174302688038, 0, 20.9444697210752118, 0, -8.3777878884300847, 0, 0, 0, 0, 0, 0, 0, 0, -1.7453724767562677, 0, 10.4722348605376059, 0, -8.3777878884300847, 0, 0.7978845608028652, + 0.2181715595945335, 0, 0, 0.6545146787836006, 0, -5.2361174302688038, 0, 0, 0, 0, 0.6545146787836006, 0, -10.4722348605376077, 0, 10.4722348605376077, 0, 0, 0, 0, 0, 0, 0.2181715595945335, 0, -5.2361174302688038, 0, 10.4722348605376077, 0, -2.7925959628100294, 0, 0, 0, 0, 0, 0, 0, 0, + + 0.2473832956432473, 0, 0, 0.7421498869297418, 0, -5.9371990954379337, 0, 0, 0, 0, 0.7421498869297418, 0, -11.8743981908758673, 0, 11.8743981908758673, 0, 0, 0, 0, 0, 0, 0.2473832956432473, 0, -5.9371990954379337, 0, 11.8743981908758673, 0, -3.1665061842335653, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1.4842997738594836, 0, 0, 0, 0, 1.4842997738594836, 0, -7.9162654605839124, 0, 0, 0, 0, 0, 0, -1.4842997738594836, 0, 0, 0, 4.7497592763503480, 0, 0, 0, 0, 0, 0, 0, 0, -1.4842997738594836, 0, 7.9162654605839124, 0, -4.7497592763503480, 0, 0, + + 0, 0, 1.9162227683124053, 0, 0, 0, 0, 1.9162227683124053, 0, -10.2198547643328261, 0, 0, 0, 0, 0, 0, -1.9162227683124053, 0, 0, 0, 6.1319128585996969, 0, 0, 0, 0, 0, 0, 0, 0, -1.9162227683124053, 0, 10.2198547643328261, 0, -6.1319128585996969, 0, 0, + -0.1916222768312404, 0, 0, 0.1916222768312404, 0, 3.8324455366248085, 0, 0, 0, 0, 0.9581113841562022, 0, -7.6648910732496169, 0, -5.1099273821664122, 0, 0, 0, 0, 0, 0, 0.5748668304937213, 0, -11.4973366098744254, 0, 15.3297821464992357, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + -0.2842217679059343, 0, 0, 0.2842217679059343, 0, 5.6844353581186855, 0, 0, 0, 0, 1.4211088395296716, 0, -11.3688707162373710, 0, -7.5792471441582485, 0, 0, 0, 0, 0, 0, 0.8526653037178029, 0, -17.0533060743560583, 0, 22.7377414324747456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, -1.1368870716237374, 0, 0, 0, 0, 5.6844353581186864, 0, 3.7896235720791247, 0, 0, 0, 0, 0, 0, 5.6844353581186864, 0, -22.7377414324747456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1.1368870716237374, 0, 3.7896235720791247, 0, 0, 0, 0, + + 0, 0, -1.9691461705205107, 0, 0, 0, 0, 9.8457308526025535, 0, 6.5638205684017024, 0, 0, 0, 0, 0, 0, 9.8457308526025535, 0, -39.3829234104102142, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1.9691461705205107, 0, 6.5638205684017024, 0, 0, 0, 0, + 0.1640955142100426, 0, 0, -1.4768596278903832, 0, -1.9691461705205107, 0, 0, 0, 0, -0.8204775710502128, 0, 19.6914617052051071, 0, 0, 0, 0, 0, 0, 0, 0, 0.8204775710502128, 0, -9.8457308526025535, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0.3415920525959572, 0, 0, -3.0743284733636154, 0, -4.0991046311514863, 0, 0, 0, 0, -1.7079602629797861, 0, 40.9910463115148644, 0, 0, 0, 0, 0, 0, 0, 0, 1.7079602629797861, 0, -20.4955231557574322, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0.6831841051919142, 0, 0, 0, 0, -10.2477615778787126, 0, 0, 0, 0, 0, 0, 0, 0, 10.2477615778787126, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.6831841051919142, 0, 0, 0, 0, 0, 0, + + 0, 0, 1.8075352420099966, 0, 0, 0, 0, -27.1130286301499481, 0, 0, 0, 0, 0, 0, 0, 0, 27.1130286301499481, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1.8075352420099966, 0, 0, 0, 0, 0, 0, + -0.1291096601435712, 0, 0, 2.7113028630149949, 0, 0, 0, 0, 0, 0, -4.5188381050249919, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.9037676210049984, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + -0.5000395635705508, 0, 0, 10.5008308349815653, 0, 0, 0, 0, 0, 0, -17.5013847249692773, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3.5002769449938556, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + -0.500039563570550664, 0, 0, 14.0011077799754186, 0, 0, 0, 0, 0, 0, -35.0027694499385465, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14.0011077799754186, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.500039563570550664, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0.500039563570550664, 0, 0, 0, 0, -10.5008308349815639, 0, 0, 0, 0, 0, 0, 0, 0, 17.5013847249692732, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -3.50027694499385465, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, -1.93664490215356767, 0, 0, 0, 0, 40.669542945224921, 0, 0, 0, 0, 0, 0, 0, 0, -67.7825715753748683, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13.5565143150749737, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + -0.129109660143571178, 0, 0, 1.80753524200999649, 0, 1.80753524200999649, 0, 0, 0, 0, 0, 0, -27.1130286301499473, 0, 0, 0, 0, 0, 0, 0, 0, -1.80753524200999649, 0, 27.1130286301499473, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.129109660143571178, 0, -1.80753524200999649, 0, 0, 0, 0, 0, 0, + + 0.341592052595957161, 0, 0, -4.78228873634340025, 0, -4.78228873634340025, 0, 0, 0, 0, 0, 0, 71.7343310451510038, 0, 0, 0, 0, 0, 0, 0, 0, 4.78228873634340025, 0, -71.7343310451510038, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.341592052595957161, 0, 4.78228873634340025, 0, 0, 0, 0, 0, 0, + 0, 0, -1.02477615778787148, 0, 0, 0, 0, 9.22298542009084335, 0, 4.09910463115148593, 0, 0, 0, 0, 0, 0, 5.12388078893935741, 0, -40.9910463115148593, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -5.12388078893935741, 0, 20.4955231557574297, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 2.13324168473055283, 0, 0, 0, 0, -19.1991751625749755, 0, -8.53296673892221134, 0, 0, 0, 0, 0, 0, -10.6662084236527642, 0, 85.3296673892221134, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10.6662084236527642, 0, -42.6648336946110567, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0.164095514210042526, 0, 0, -0.656382056840170103, 0, -3.93829234104102062, 0, 0, 0, 0, -1.64095514210042526, 0, 19.6914617052051031, 0, 6.56382056840170103, 0, 0, 0, 0, 0, 0, -0.656382056840170103, 0, 19.6914617052051031, 0, -39.3829234104102062, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.164095514210042526, 0, -3.93829234104102062, 0, 6.56382056840170103, 0, 0, 0, 0, + + -0.284221767905934336, 0, 0, 1.13688707162373734, 0, 6.82132242974242407, 0, 0, 0, 0, 2.84221767905934336, 0, -34.1066121487121203, 0, -11.3688707162373734, 0, 0, 0, 0, 0, 0, 1.13688707162373734, 0, -34.1066121487121203, 0, 68.2132242974242407, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.284221767905934336, 0, 6.82132242974242407, 0, -11.3688707162373734, 0, 0, 0, 0, + 0, 0, 1.42110883952967168, 0, 0, 0, 0, -1.42110883952967168, 0, -9.47405893019781121, 0, 0, 0, 0, 0, 0, -7.1055441976483584, 0, 18.9481178603956224, 0, 7.57924714415824896, 0, 0, 0, 0, 0, 0, 0, 0, -4.26332651858901504, 0, 28.4221767905934336, 0, -22.7377414324747469, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, -2.10784504514364487, 0, 0, 0, 0, 2.10784504514364487, 0, 14.0523003009576325, 0, 0, 0, 0, 0, 0, 10.5392252257182244, 0, -28.104600601915265, 0, -11.241840240766106, 0, 0, 0, 0, 0, 0, 0, 0, 6.32353513543093462, 0, -42.1569009028728975, 0, 33.725520722298318, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + -0.191622276831240443, 0, 0, -0.383244553662480886, 0, 5.74866830493721329, 0, 0, 0, 0, 0, 0, 5.74866830493721329, 0, -15.3297821464992355, 0, 0, 0, 0, 0, 0, 0.383244553662480886, 0, -5.74866830493721329, 0, 0, 0, 6.13191285859969418, 0, 0, 0, 0, 0, 0, 0, 0, 0.191622276831240443, 0, -5.74866830493721329, 0, 15.3297821464992355, 0, -6.13191285859969418, 0, 0, + + 0.247383295643247195, 0, 0, 0.49476659128649439, 0, -7.42149886929741585, 0, 0, 0, 0, 0, 0, -7.42149886929741585, 0, 19.7906636514597756, 0, 0, 0, 0, 0, 0, -0.49476659128649439, 0, 7.42149886929741585, 0, 0, 0, -7.91626546058391024, 0, 0, 0, 0, 0, 0, 0, 0, -0.247383295643247195, 0, 7.42149886929741585, 0, -19.7906636514597756, 0, 7.91626546058391024, 0, 0, + 0, 0, -1.73168306950273036, 0, 0, 0, 0, -5.19504920850819109, 0, 13.8534645560218429, 0, 0, 0, 0, 0, 0, -5.19504920850819109, 0, 27.7069291120436858, 0, -16.6241574672262115, 0, 0, 0, 0, 0, 0, 0, 0, -1.73168306950273036, 0, 13.8534645560218429, 0, -16.6241574672262115, 0, 3.16650618423356409, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 1.96354403635080146, 0, 0, 0, 0, 5.89063210905240439, 0, -15.7083522908064117, 0, 0, 0, 0, 0, 0, 5.89063210905240439, 0, -31.4167045816128234, 0, 18.850022748967694, 0, 0, 0, 0, 0, 0, 0, 0, 1.96354403635080146, 0, -15.7083522908064117, 0, 18.850022748967694, 0, -3.5904805236128941, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0.218171559594533496, 0, 0, 0.872686238378133983, 0, -6.98148990702507186, 0, 0, 0, 0, 1.30902935756720097, 0, -20.9444697210752156, 0, 20.9444697210752156, 0, 0, 0, 0, 0, 0, 0.872686238378133983, 0, -20.9444697210752156, 0, 41.8889394421504312, 0, -11.170383851240115, 0, 0, 0, 0, 0, 0, 0, 0, 0.218171559594533496, 0, -6.98148990702507186, 0, 20.9444697210752156, 0, -11.170383851240115, 0, 0.797884560802865356, + + -0.218171559594533496, 0, 0, -0.872686238378133983, 0, 6.98148990702507186, 0, 0, 0, 0, -1.30902935756720097, 0, 20.9444697210752156, 0, -20.9444697210752156, 0, 0, 0, 0, 0, 0, -0.872686238378133983, 0, 20.9444697210752156, 0, -41.8889394421504312, 0, 11.170383851240115, 0, 0, 0, 0, 0, 0, 0, 0, -0.218171559594533496, 0, 6.98148990702507186, 0, -20.9444697210752156, 0, 11.170383851240115, 0, -0.797884560802865356, + 0, 0, 1.96354403635080146, 0, 0, 0, 0, 5.89063210905240439, 0, -15.7083522908064117, 0, 0, 0, 0, 0, 0, 5.89063210905240439, 0, -31.4167045816128234, 0, 18.850022748967694, 0, 0, 0, 0, 0, 0, 0, 0, 1.96354403635080146, 0, -15.7083522908064117, 0, 18.850022748967694, 0, -3.5904805236128941, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, -1.73168306950273036, 0, 0, 0, 0, -5.19504920850819109, 0, 13.8534645560218429, 0, 0, 0, 0, 0, 0, -5.19504920850819109, 0, 27.7069291120436858, 0, -16.6241574672262115, 0, 0, 0, 0, 0, 0, 0, 0, -1.73168306950273036, 0, 13.8534645560218429, 0, -16.6241574672262115, 0, 3.16650618423356409, 0, 0, 0, 0, 0, 0, 0, 0, 0, + -0.247383295643247195, 0, 0, -0.49476659128649439, 0, 7.42149886929741585, 0, 0, 0, 0, 0, 0, 7.42149886929741585, 0, -19.7906636514597756, 0, 0, 0, 0, 0, 0, 0.49476659128649439, 0, -7.42149886929741585, 0, 0, 0, 7.91626546058391024, 0, 0, 0, 0, 0, 0, 0, 0, 0.247383295643247195, 0, -7.42149886929741585, 0, 19.7906636514597756, 0, -7.91626546058391024, 0, 0, + + 0.191622276831240443, 0, 0, 0.383244553662480886, 0, -5.74866830493721329, 0, 0, 0, 0, 0, 0, -5.74866830493721329, 0, 15.3297821464992355, 0, 0, 0, 0, 0, 0, -0.383244553662480886, 0, 5.74866830493721329, 0, 0, 0, -6.13191285859969418, 0, 0, 0, 0, 0, 0, 0, 0, -0.191622276831240443, 0, 5.74866830493721329, 0, -15.3297821464992355, 0, 6.13191285859969418, 0, 0, + 0, 0, -2.10784504514364487, 0, 0, 0, 0, 2.10784504514364487, 0, 14.0523003009576325, 0, 0, 0, 0, 0, 0, 10.5392252257182244, 0, -28.104600601915265, 0, -11.241840240766106, 0, 0, 0, 0, 0, 0, 0, 0, 6.32353513543093462, 0, -42.1569009028728975, 0, 33.725520722298318, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 1.42110883952967168, 0, 0, 0, 0, -1.42110883952967168, 0, -9.47405893019781121, 0, 0, 0, 0, 0, 0, -7.1055441976483584, 0, 18.9481178603956224, 0, 7.57924714415824896, 0, 0, 0, 0, 0, 0, 0, 0, -4.26332651858901504, 0, 28.4221767905934336, 0, -22.7377414324747469, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0.284221767905934336, 0, 0, -1.13688707162373734, 0, -6.82132242974242407, 0, 0, 0, 0, -2.84221767905934336, 0, 34.1066121487121203, 0, 11.3688707162373734, 0, 0, 0, 0, 0, 0, -1.13688707162373734, 0, 34.1066121487121203, 0, -68.2132242974242407, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.284221767905934336, 0, -6.82132242974242407, 0, 11.3688707162373734, 0, 0, 0, 0, + + -0.164095514210042526, 0, 0, 0.656382056840170103, 0, 3.93829234104102062, 0, 0, 0, 0, 1.64095514210042526, 0, -19.6914617052051031, 0, -6.56382056840170103, 0, 0, 0, 0, 0, 0, 0.656382056840170103, 0, -19.6914617052051031, 0, 39.3829234104102062, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.164095514210042526, 0, 3.93829234104102062, 0, -6.56382056840170103, 0, 0, 0, 0, + 0, 0, 2.13324168473055283, 0, 0, 0, 0, -19.1991751625749755, 0, -8.53296673892221134, 0, 0, 0, 0, 0, 0, -10.6662084236527642, 0, 85.3296673892221134, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10.6662084236527642, 0, -42.6648336946110567, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, -1.02477615778787148, 0, 0, 0, 0, 9.22298542009084335, 0, 4.09910463115148593, 0, 0, 0, 0, 0, 0, 5.12388078893935741, 0, -40.9910463115148593, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -5.12388078893935741, 0, 20.4955231557574297, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + -0.341592052595957161, 0, 0, 4.78228873634340025, 0, 4.78228873634340025, 0, 0, 0, 0, 0, 0, -71.7343310451510038, 0, 0, 0, 0, 0, 0, 0, 0, -4.78228873634340025, 0, 71.7343310451510038, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.341592052595957161, 0, -4.78228873634340025, 0, 0, 0, 0, 0, 0, + + 0.129109660143571178, 0, 0, -1.80753524200999649, 0, -1.80753524200999649, 0, 0, 0, 0, 0, 0, 27.1130286301499473, 0, 0, 0, 0, 0, 0, 0, 0, 1.80753524200999649, 0, -27.1130286301499473, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.129109660143571178, 0, 1.80753524200999649, 0, 0, 0, 0, 0, 0, + 0, 0, -1.93664490215356767, 0, 0, 0, 0, 40.669542945224921, 0, 0, 0, 0, 0, 0, 0, 0, -67.7825715753748683, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13.5565143150749737, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 0.500039563570550664, 0, 0, 0, 0, -10.5008308349815639, 0, 0, 0, 0, 0, 0, 0, 0, 17.5013847249692732, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -3.50027694499385465, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0.500039563570550664, 0, 0, -14.0011077799754186, 0, 0, 0, 0, 0, 0, 35.0027694499385465, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -14.0011077799754186, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.500039563570550664, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0.51542898439728431, 0, 0, -14.4320115631239607, 0, 0, 0, 0, 0, 0, 36.0800289078099017, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -14.4320115631239607, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.51542898439728431, 0, 0, 0, 0, 0, 0, 0, 0, + + 0.125009890892637666, 0, 0, -3.50027694499385465, 0, 0, 0, 0, 0, 0, 8.75069236248463662, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -3.50027694499385465, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.125009890892637666, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 2.00015825428220266, 0, 0, 0, 0, -42.0033233399262558, 0, 0, 0, 0, 0, 0, 0, 0, 70.005538899877093, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -14.0011077799754186, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 0.707162732524596178, 0, 0, 0, 0, -14.8504173830165197, 0, 0, 0, 0, 0, 0, 0, 0, 24.7506956383608662, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -4.95013912767217325, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + -0.353581366262298089, 0, 0, 4.95013912767217325, 0, 4.95013912767217325, 0, 0, 0, 0, 0, 0, -74.2520869150825987, 0, 0, 0, 0, 0, 0, 0, 0, -4.95013912767217325, 0, 74.2520869150825987, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.353581366262298089, 0, -4.95013912767217325, 0, 0, 0, 0, 0, 0, + + -0.158126394107949853, 0, 0, 2.21376951751129794, 0, 2.21376951751129794, 0, 0, 0, 0, 0, 0, -33.2065427626694691, 0, 0, 0, 0, 0, 0, 0, 0, -2.21376951751129794, 0, 33.2065427626694691, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.158126394107949853, 0, -2.21376951751129794, 0, 0, 0, 0, 0, 0, + 0, 0, -2.21376951751129794, 0, 0, 0, 0, 19.9239256576016814, 0, 8.85507807004519175, 0, 0, 0, 0, 0, 0, 11.0688475875564897, 0, -88.5507807004519175, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -11.0688475875564897, 0, 44.2753903502259587, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, -1.18330958111587602, 0, 0, 0, 0, 10.6497862300428841, 0, 4.73323832446350406, 0, 0, 0, 0, 0, 0, 5.91654790557938008, 0, -47.3323832446350406, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -5.91654790557938008, 0, 23.6661916223175203, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0.295827395278969004, 0, 0, -1.18330958111587602, 0, -7.0998574866952561, 0, 0, 0, 0, -2.95827395278969004, 0, 35.4992874334762805, 0, 11.8330958111587602, 0, 0, 0, 0, 0, 0, -1.18330958111587602, 0, 35.4992874334762805, 0, -70.998574866952561, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.295827395278969004, 0, -7.0998574866952561, 0, 11.8330958111587602, 0, 0, 0, 0, + + 0.183464362288218895, 0, 0, -0.733857449152875582, 0, -4.40314469491725349, 0, 0, 0, 0, -1.83464362288218895, 0, 22.0157234745862674, 0, 7.33857449152875582, 0, 0, 0, 0, 0, 0, -0.733857449152875582, 0, 22.0157234745862674, 0, -44.0314469491725349, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.183464362288218895, 0, -4.40314469491725349, 0, 7.33857449152875582, 0, 0, 0, 0, + 0, 0, 2.20157234745862674, 0, 0, 0, 0, -2.20157234745862674, 0, -14.6771489830575116, 0, 0, 0, 0, 0, 0, -11.0078617372931337, 0, 29.3542979661150233, 0, 11.7417191864460093, 0, 0, 0, 0, 0, 0, 0, 0, -6.60471704237588023, 0, 44.0314469491725349, 0, -35.2251575593380279, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 1.55674673616078096, 0, 0, 0, 0, -1.55674673616078096, 0, -10.3783115744052064, 0, 0, 0, 0, 0, 0, -7.7837336808039048, 0, 20.7566231488104128, 0, 8.30264925952416512, 0, 0, 0, 0, 0, 0, 0, 0, -4.67024020848234288, 0, 31.1349347232156192, 0, -24.9079477785724953, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + -0.25945778936013016, 0, 0, -0.51891557872026032, 0, 7.7837336808039048, 0, 0, 0, 0, 0, 0, 7.7837336808039048, 0, -20.7566231488104128, 0, 0, 0, 0, 0, 0, 0.51891557872026032, 0, -7.7837336808039048, 0, 0, 0, 8.30264925952416512, 0, 0, 0, 0, 0, 0, 0, 0, 0.25945778936013016, 0, -7.7837336808039048, 0, 20.7566231488104128, 0, -8.30264925952416512, 0, 0, + + -0.206975714696966254, 0, 0, -0.413951429393932508, 0, 6.20927144090898762, 0, 0, 0, 0, 0, 0, 6.20927144090898762, 0, -16.5580571757573003, 0, 0, 0, 0, 0, 0, 0.413951429393932508, 0, -6.20927144090898762, 0, 0, 0, 6.62322287030292013, 0, 0, 0, 0, 0, 0, 0, 0, 0.206975714696966254, 0, -6.20927144090898762, 0, 16.5580571757573003, 0, -6.62322287030292013, 0, 0, + 0, 0, -2.06975714696966254, 0, 0, 0, 0, -6.20927144090898762, 0, 16.5580571757573003, 0, 0, 0, 0, 0, 0, -6.20927144090898762, 0, 33.1161143515146006, 0, -19.8696686109087604, 0, 0, 0, 0, 0, 0, 0, 0, -2.06975714696966254, 0, 16.5580571757573003, 0, -19.8696686109087604, 0, 3.78469878303024007, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, -1.85124707101607532, 0, 0, 0, 0, -5.55374121304822595, 0, 14.8099765681286025, 0, 0, 0, 0, 0, 0, -5.55374121304822595, 0, 29.6199531362572051, 0, -17.771971881754323, 0, 0, 0, 0, 0, 0, 0, 0, -1.85124707101607532, 0, 14.8099765681286025, 0, -17.771971881754323, 0, 3.38513750128653772, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0.231405883877009415, 0, 0, 0.925623535508037658, 0, -7.40498828406430127, 0, 0, 0, 0, 1.38843530326205649, 0, -22.2149648521929038, 0, 22.2149648521929038, 0, 0, 0, 0, 0, 0, 0.925623535508037658, 0, -22.2149648521929038, 0, 44.4299297043858076, 0, -11.847981254502882, 0, 0, 0, 0, 0, 0, 0, 0, 0.231405883877009415, 0, -7.40498828406430127, 0, 22.2149648521929038, 0, -11.847981254502882, 0, 0.84628437532163443, + + 0.231405883877009415, 0, 0, 0.925623535508037658, 0, -7.40498828406430127, 0, 0, 0, 0, 1.38843530326205649, 0, -22.2149648521929038, 0, 22.2149648521929038, 0, 0, 0, 0, 0, 0, 0.925623535508037658, 0, -22.2149648521929038, 0, 44.4299297043858076, 0, -11.847981254502882, 0, 0, 0, 0, 0, 0, 0, 0, 0.231405883877009415, 0, -7.40498828406430127, 0, 22.2149648521929038, 0, -11.847981254502882, 0, 0.84628437532163443, + 0, 0, 1.85124707101607532, 0, 0, 0, 0, 5.55374121304822595, 0, -14.8099765681286025, 0, 0, 0, 0, 0, 0, 5.55374121304822595, 0, -29.6199531362572051, 0, 17.771971881754323, 0, 0, 0, 0, 0, 0, 0, 0, 1.85124707101607532, 0, -14.8099765681286025, 0, 17.771971881754323, 0, -3.38513750128653772, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 2.06975714696966254, 0, 0, 0, 0, 6.20927144090898762, 0, -16.5580571757573003, 0, 0, 0, 0, 0, 0, 6.20927144090898762, 0, -33.1161143515146006, 0, 19.8696686109087604, 0, 0, 0, 0, 0, 0, 0, 0, 2.06975714696966254, 0, -16.5580571757573003, 0, 19.8696686109087604, 0, -3.78469878303024007, 0, 0, 0, 0, 0, 0, 0, 0, 0, + -0.206975714696966254, 0, 0, -0.413951429393932508, 0, 6.20927144090898762, 0, 0, 0, 0, 0, 0, 6.20927144090898762, 0, -16.5580571757573003, 0, 0, 0, 0, 0, 0, 0.413951429393932508, 0, -6.20927144090898762, 0, 0, 0, 6.62322287030292013, 0, 0, 0, 0, 0, 0, 0, 0, 0.206975714696966254, 0, -6.20927144090898762, 0, 16.5580571757573003, 0, -6.62322287030292013, 0, 0, + + -0.25945778936013016, 0, 0, -0.51891557872026032, 0, 7.7837336808039048, 0, 0, 0, 0, 0, 0, 7.7837336808039048, 0, -20.7566231488104128, 0, 0, 0, 0, 0, 0, 0.51891557872026032, 0, -7.7837336808039048, 0, 0, 0, 8.30264925952416512, 0, 0, 0, 0, 0, 0, 0, 0, 0.25945778936013016, 0, -7.7837336808039048, 0, 20.7566231488104128, 0, -8.30264925952416512, 0, 0, + 0, 0, -1.55674673616078096, 0, 0, 0, 0, 1.55674673616078096, 0, 10.3783115744052064, 0, 0, 0, 0, 0, 0, 7.7837336808039048, 0, -20.7566231488104128, 0, -8.30264925952416512, 0, 0, 0, 0, 0, 0, 0, 0, 4.67024020848234288, 0, -31.1349347232156192, 0, 24.9079477785724953, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, -2.20157234745862674, 0, 0, 0, 0, 2.20157234745862674, 0, 14.6771489830575116, 0, 0, 0, 0, 0, 0, 11.0078617372931337, 0, -29.3542979661150233, 0, -11.7417191864460093, 0, 0, 0, 0, 0, 0, 0, 0, 6.60471704237588023, 0, -44.0314469491725349, 0, 35.2251575593380279, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0.183464362288218895, 0, 0, -0.733857449152875582, 0, -4.40314469491725349, 0, 0, 0, 0, -1.83464362288218895, 0, 22.0157234745862674, 0, 7.33857449152875582, 0, 0, 0, 0, 0, 0, -0.733857449152875582, 0, 22.0157234745862674, 0, -44.0314469491725349, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.183464362288218895, 0, -4.40314469491725349, 0, 7.33857449152875582, 0, 0, 0, 0, + + 0.295827395278969004, 0, 0, -1.18330958111587602, 0, -7.0998574866952561, 0, 0, 0, 0, -2.95827395278969004, 0, 35.4992874334762805, 0, 11.8330958111587602, 0, 0, 0, 0, 0, 0, -1.18330958111587602, 0, 35.4992874334762805, 0, -70.998574866952561, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.295827395278969004, 0, -7.0998574866952561, 0, 11.8330958111587602, 0, 0, 0, 0, + 0, 0, 1.18330958111587602, 0, 0, 0, 0, -10.6497862300428841, 0, -4.73323832446350406, 0, 0, 0, 0, 0, 0, -5.91654790557938008, 0, 47.3323832446350406, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5.91654790557938008, 0, -23.6661916223175203, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 2.21376951751129794, 0, 0, 0, 0, -19.9239256576016814, 0, -8.85507807004519175, 0, 0, 0, 0, 0, 0, -11.0688475875564897, 0, 88.5507807004519175, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11.0688475875564897, 0, -44.2753903502259587, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + -0.158126394107949853, 0, 0, 2.21376951751129794, 0, 2.21376951751129794, 0, 0, 0, 0, 0, 0, -33.2065427626694691, 0, 0, 0, 0, 0, 0, 0, 0, -2.21376951751129794, 0, 33.2065427626694691, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.158126394107949853, 0, -2.21376951751129794, 0, 0, 0, 0, 0, 0, + + -0.353581366262298089, 0, 0, 4.95013912767217325, 0, 4.95013912767217325, 0, 0, 0, 0, 0, 0, -74.2520869150825987, 0, 0, 0, 0, 0, 0, 0, 0, -4.95013912767217325, 0, 74.2520869150825987, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.353581366262298089, 0, -4.95013912767217325, 0, 0, 0, 0, 0, 0, + 0, 0, -0.707162732524596178, 0, 0, 0, 0, 14.8504173830165197, 0, 0, 0, 0, 0, 0, 0, 0, -24.7506956383608662, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4.95013912767217325, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, -2.00015825428220266, 0, 0, 0, 0, 42.0033233399262558, 0, 0, 0, 0, 0, 0, 0, 0, -70.005538899877093, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14.0011077799754186, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0.125009890892637666, 0, 0, -3.50027694499385465, 0, 0, 0, 0, 0, 0, 8.75069236248463662, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -3.50027694499385465, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.125009890892637666, 0, 0, 0, 0, 0, 0, 0, 0, + + 0.51542898439728431, 0, 0, -14.4320115631239607, 0, 0, 0, 0, 0, 0, 36.0800289078099017, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -14.4320115631239607, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.51542898439728431, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + -0.51542898439728431, 0, 0, 18.5554434383022352, 0, 0, 0, 0, 0, 0, -64.944052034057823, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43.296034689371882, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -4.63886085957555879, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0.51542898439728431, 0, 0, 0, 0, -14.4320115631239607, 0, 0, 0, 0, 0, 0, 0, 0, 36.0800289078099017, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -14.4320115631239607, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.51542898439728431, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, -2.12516814517484032, 0, 0, 0, 0, 59.504708064895529, 0, 0, 0, 0, 0, 0, 0, 0, -148.761770162238823, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 59.504708064895529, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2.12516814517484032, 0, 0, 0, 0, 0, 0, 0, 0, + -0.125009890892637666, 0, 0, 2.50019781785275332, 0, 2.00015825428220266, 0, 0, 0, 0, -1.75013847249692732, 0, -42.0033233399262558, 0, 0, 0, 0, 0, 0, 0, 0, -3.50027694499385465, 0, 70.005538899877093, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.875069236248463662, 0, -14.0011077799754186, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0.353581366262298089, 0, 0, -7.07162732524596178, 0, -5.65730186019676943, 0, 0, 0, 0, 4.95013912767217325, 0, 118.803339064132158, 0, 0, 0, 0, 0, 0, 0, 0, 9.9002782553443465, 0, -198.00556510688693, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2.47506956383608662, 0, 39.601113021377386, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, -1.06074409878689427, 0, 0, 0, 0, 14.8504173830165197, 0, 4.95013912767217325, 0, 0, 0, 0, 0, 0, 0, 0, -74.2520869150825987, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -14.8504173830165197, 0, 74.2520869150825987, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.06074409878689427, 0, -4.95013912767217325, 0, 0, 0, 0, 0, 0, + + 0, 0, 2.37189591161924779, 0, 0, 0, 0, -33.2065427626694691, 0, -11.0688475875564897, 0, 0, 0, 0, 0, 0, 0, 0, 166.032713813347345, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33.2065427626694691, 0, -166.032713813347345, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2.37189591161924779, 0, 11.0688475875564897, 0, 0, 0, 0, 0, 0, + 0.158126394107949853, 0, 0, -1.26501115286359882, 0, -4.42753903502259587, 0, 0, 0, 0, -2.21376951751129794, 0, 39.8478513152033629, 0, 8.85507807004519175, 0, 0, 0, 0, 0, 0, 0, 0, 22.1376951751129794, 0, -88.5507807004519175, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.790631970539749263, 0, -22.1376951751129794, 0, 44.2753903502259587, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + -0.295827395278969004, 0, 0, 2.36661916223175203, 0, 8.28316706781113211, 0, 0, 0, 0, 4.14158353390556606, 0, -74.548503610300189, 0, -16.5663341356222642, 0, 0, 0, 0, 0, 0, 0, 0, -41.4158353390556606, 0, 165.663341356222642, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1.47913697639484502, 0, 41.4158353390556606, 0, -82.8316706781113211, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1.47913697639484502, 0, 0, 0, 0, -5.91654790557938008, 0, -11.8330958111587602, 0, 0, 0, 0, 0, 0, -14.7913697639484502, 0, 59.1654790557938008, 0, 11.8330958111587602, 0, 0, 0, 0, 0, 0, 0, 0, -5.91654790557938008, 0, 59.1654790557938008, 0, -70.998574866952561, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.47913697639484502, 0, -11.8330958111587602, 0, 11.8330958111587602, 0, 0, 0, 0, + + 0, 0, -2.38503670974684564, 0, 0, 0, 0, 9.54014683898738256, 0, 19.0802936779747651, 0, 0, 0, 0, 0, 0, 23.8503670974684564, 0, -95.4014683898738256, 0, -19.0802936779747651, 0, 0, 0, 0, 0, 0, 0, 0, 9.54014683898738256, 0, -95.4014683898738256, 0, 114.481762067848591, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2.38503670974684564, 0, 19.0802936779747651, 0, -19.0802936779747651, 0, 0, 0, 0, + -0.183464362288218895, 0, 0, 0, 0, 6.60471704237588023, 0, 0, 0, 0, 1.10078617372931337, 0, -6.60471704237588023, 0, -22.0157234745862674, 0, 0, 0, 0, 0, 0, 1.46771489830575116, 0, -33.0235852118794012, 0, 44.0314469491725349, 0, 11.7417191864460093, 0, 0, 0, 0, 0, 0, 0, 0, 0.550393086864656686, 0, -19.8141511271276407, 0, 66.0471704237588023, 0, -35.2251575593380279, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0.25945778936013016, 0, 0, 0, 0, -9.34048041696468576, 0, 0, 0, 0, -1.55674673616078096, 0, 9.34048041696468576, 0, 31.1349347232156192, 0, 0, 0, 0, 0, 0, -2.07566231488104128, 0, 46.7024020848234288, 0, -62.2698694464312384, 0, -16.6052985190483302, 0, 0, 0, 0, 0, 0, 0, 0, -0.77837336808039048, 0, 28.0214412508940573, 0, -93.4048041696468576, 0, 49.8158955571449907, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, -1.81620452552091112, 0, 0, 0, 0, -3.63240905104182224, 0, 18.1620452552091112, 0, 0, 0, 0, 0, 0, 0, 0, 18.1620452552091112, 0, -29.0592724083345779, 0, 0, 0, 0, 0, 0, 0, 0, 3.63240905104182224, 0, -18.1620452552091112, 0, 0, 0, 8.30264925952416512, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.81620452552091112, 0, -18.1620452552091112, 0, 29.0592724083345779, 0, -8.30264925952416512, 0, 0, + + 0, 0, 2.27673286166662879, 0, 0, 0, 0, 4.55346572333325759, 0, -22.7673286166662879, 0, 0, 0, 0, 0, 0, 0, 0, -22.7673286166662879, 0, 36.4277257866660607, 0, 0, 0, 0, 0, 0, 0, 0, -4.55346572333325759, 0, 22.7673286166662879, 0, 0, 0, -10.4079216533331602, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2.27673286166662879, 0, 22.7673286166662879, 0, -36.4277257866660607, 0, 10.4079216533331602, 0, 0, + 0.206975714696966254, 0, 0, 0.827902858787865016, 0, -8.27902858787865016, 0, 0, 0, 0, 1.24185428818179752, 0, -24.8370857636359505, 0, 33.1161143515146006, 0, 0, 0, 0, 0, 0, 0.827902858787865016, 0, -24.8370857636359505, 0, 66.2322287030292013, 0, -26.4928914812116805, 0, 0, 0, 0, 0, 0, 0, 0, 0.206975714696966254, 0, -8.27902858787865016, 0, 33.1161143515146006, 0, -26.4928914812116805, 0, 3.78469878303024007, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + -0.231405883877009415, 0, 0, -0.925623535508037658, 0, 9.25623535508037658, 0, 0, 0, 0, -1.38843530326205649, 0, 27.7687060652411297, 0, -37.0249414203215063, 0, 0, 0, 0, 0, 0, -0.925623535508037658, 0, 27.7687060652411297, 0, -74.0498828406430127, 0, 29.6199531362572051, 0, 0, 0, 0, 0, 0, 0, 0, -0.231405883877009415, 0, 9.25623535508037658, 0, -37.0249414203215063, 0, 29.6199531362572051, 0, -4.23142187660817215, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 2.08265295489308473, 0, 0, 0, 0, 8.33061181957233892, 0, -22.2149648521929038, 0, 0, 0, 0, 0, 0, 12.4959177293585084, 0, -66.6448945565787114, 0, 39.9869367339472268, 0, 0, 0, 0, 0, 0, 0, 0, 8.33061181957233892, 0, -66.6448945565787114, 0, 79.9738734678944537, 0, -15.2331187557894197, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2.08265295489308473, 0, -22.2149648521929038, 0, 39.9869367339472268, 0, -15.2331187557894197, 0, 0.84628437532163443, + + 0, 0, -2.08265295489308473, 0, 0, 0, 0, -8.33061181957233892, 0, 22.2149648521929038, 0, 0, 0, 0, 0, 0, -12.4959177293585084, 0, 66.6448945565787114, 0, -39.9869367339472268, 0, 0, 0, 0, 0, 0, 0, 0, -8.33061181957233892, 0, 66.6448945565787114, 0, -79.9738734678944537, 0, 15.2331187557894197, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2.08265295489308473, 0, 22.2149648521929038, 0, -39.9869367339472268, 0, 15.2331187557894197, 0, -0.84628437532163443, + -0.231405883877009415, 0, 0, -0.925623535508037658, 0, 9.25623535508037658, 0, 0, 0, 0, -1.38843530326205649, 0, 27.7687060652411297, 0, -37.0249414203215063, 0, 0, 0, 0, 0, 0, -0.925623535508037658, 0, 27.7687060652411297, 0, -74.0498828406430127, 0, 29.6199531362572051, 0, 0, 0, 0, 0, 0, 0, 0, -0.231405883877009415, 0, 9.25623535508037658, 0, -37.0249414203215063, 0, 29.6199531362572051, 0, -4.23142187660817215, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0.206975714696966254, 0, 0, 0.827902858787865016, 0, -8.27902858787865016, 0, 0, 0, 0, 1.24185428818179752, 0, -24.8370857636359505, 0, 33.1161143515146006, 0, 0, 0, 0, 0, 0, 0.827902858787865016, 0, -24.8370857636359505, 0, 66.2322287030292013, 0, -26.4928914812116805, 0, 0, 0, 0, 0, 0, 0, 0, 0.206975714696966254, 0, -8.27902858787865016, 0, 33.1161143515146006, 0, -26.4928914812116805, 0, 3.78469878303024007, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, -2.27673286166662879, 0, 0, 0, 0, -4.55346572333325759, 0, 22.7673286166662879, 0, 0, 0, 0, 0, 0, 0, 0, 22.7673286166662879, 0, -36.4277257866660607, 0, 0, 0, 0, 0, 0, 0, 0, 4.55346572333325759, 0, -22.7673286166662879, 0, 0, 0, 10.4079216533331602, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2.27673286166662879, 0, -22.7673286166662879, 0, 36.4277257866660607, 0, -10.4079216533331602, 0, 0, + + 0, 0, 1.81620452552091112, 0, 0, 0, 0, 3.63240905104182224, 0, -18.1620452552091112, 0, 0, 0, 0, 0, 0, 0, 0, -18.1620452552091112, 0, 29.0592724083345779, 0, 0, 0, 0, 0, 0, 0, 0, -3.63240905104182224, 0, 18.1620452552091112, 0, 0, 0, -8.30264925952416512, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1.81620452552091112, 0, 18.1620452552091112, 0, -29.0592724083345779, 0, 8.30264925952416512, 0, 0, + 0.25945778936013016, 0, 0, 0, 0, -9.34048041696468576, 0, 0, 0, 0, -1.55674673616078096, 0, 9.34048041696468576, 0, 31.1349347232156192, 0, 0, 0, 0, 0, 0, -2.07566231488104128, 0, 46.7024020848234288, 0, -62.2698694464312384, 0, -16.6052985190483302, 0, 0, 0, 0, 0, 0, 0, 0, -0.77837336808039048, 0, 28.0214412508940573, 0, -93.4048041696468576, 0, 49.8158955571449907, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + -0.183464362288218895, 0, 0, 0, 0, 6.60471704237588023, 0, 0, 0, 0, 1.10078617372931337, 0, -6.60471704237588023, 0, -22.0157234745862674, 0, 0, 0, 0, 0, 0, 1.46771489830575116, 0, -33.0235852118794012, 0, 44.0314469491725349, 0, 11.7417191864460093, 0, 0, 0, 0, 0, 0, 0, 0, 0.550393086864656686, 0, -19.8141511271276407, 0, 66.0471704237588023, 0, -35.2251575593380279, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 2.38503670974684564, 0, 0, 0, 0, -9.54014683898738256, 0, -19.0802936779747651, 0, 0, 0, 0, 0, 0, -23.8503670974684564, 0, 95.4014683898738256, 0, 19.0802936779747651, 0, 0, 0, 0, 0, 0, 0, 0, -9.54014683898738256, 0, 95.4014683898738256, 0, -114.481762067848591, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2.38503670974684564, 0, -19.0802936779747651, 0, 19.0802936779747651, 0, 0, 0, 0, + + 0, 0, -1.47913697639484502, 0, 0, 0, 0, 5.91654790557938008, 0, 11.8330958111587602, 0, 0, 0, 0, 0, 0, 14.7913697639484502, 0, -59.1654790557938008, 0, -11.8330958111587602, 0, 0, 0, 0, 0, 0, 0, 0, 5.91654790557938008, 0, -59.1654790557938008, 0, 70.998574866952561, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1.47913697639484502, 0, 11.8330958111587602, 0, -11.8330958111587602, 0, 0, 0, 0, + -0.295827395278969004, 0, 0, 2.36661916223175203, 0, 8.28316706781113211, 0, 0, 0, 0, 4.14158353390556606, 0, -74.548503610300189, 0, -16.5663341356222642, 0, 0, 0, 0, 0, 0, 0, 0, -41.4158353390556606, 0, 165.663341356222642, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1.47913697639484502, 0, 41.4158353390556606, 0, -82.8316706781113211, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0.158126394107949853, 0, 0, -1.26501115286359882, 0, -4.42753903502259587, 0, 0, 0, 0, -2.21376951751129794, 0, 39.8478513152033629, 0, 8.85507807004519175, 0, 0, 0, 0, 0, 0, 0, 0, 22.1376951751129794, 0, -88.5507807004519175, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.790631970539749263, 0, -22.1376951751129794, 0, 44.2753903502259587, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, -2.37189591161924779, 0, 0, 0, 0, 33.2065427626694691, 0, 11.0688475875564897, 0, 0, 0, 0, 0, 0, 0, 0, -166.032713813347345, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -33.2065427626694691, 0, 166.032713813347345, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2.37189591161924779, 0, -11.0688475875564897, 0, 0, 0, 0, 0, 0, + + 0, 0, 1.06074409878689427, 0, 0, 0, 0, -14.8504173830165197, 0, -4.95013912767217325, 0, 0, 0, 0, 0, 0, 0, 0, 74.2520869150825987, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14.8504173830165197, 0, -74.2520869150825987, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1.06074409878689427, 0, 4.95013912767217325, 0, 0, 0, 0, 0, 0, + 0.353581366262298089, 0, 0, -7.07162732524596178, 0, -5.65730186019676943, 0, 0, 0, 0, 4.95013912767217325, 0, 118.803339064132158, 0, 0, 0, 0, 0, 0, 0, 0, 9.9002782553443465, 0, -198.00556510688693, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2.47506956383608662, 0, 39.601113021377386, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + -0.125009890892637666, 0, 0, 2.50019781785275332, 0, 2.00015825428220266, 0, 0, 0, 0, -1.75013847249692732, 0, -42.0033233399262558, 0, 0, 0, 0, 0, 0, 0, 0, -3.50027694499385465, 0, 70.005538899877093, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.875069236248463662, 0, -14.0011077799754186, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 2.12516814517484032, 0, 0, 0, 0, -59.504708064895529, 0, 0, 0, 0, 0, 0, 0, 0, 148.761770162238823, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -59.504708064895529, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2.12516814517484032, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, -0.51542898439728431, 0, 0, 0, 0, 14.4320115631239607, 0, 0, 0, 0, 0, 0, 0, 0, -36.0800289078099017, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14.4320115631239607, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.51542898439728431, 0, 0, 0, 0, 0, 0, 0, 0, + -0.51542898439728431, 0, 0, 18.5554434383022352, 0, 0, 0, 0, 0, 0, -64.944052034057823, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43.296034689371882, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -4.63886085957555879, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0.52955294149244958, 0, 0, -19.0639058937281849, 0, 0, 0, 0, 0, 0, 66.723670628048647, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -44.4824470853657647, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4.76597647343204622, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0.121487776695804978, 0, 0, -4.37355996104897921, 0, 0, 0, 0, 0, 0, 15.3074598636714272, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -10.2049732424476182, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.0933899902622448, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 2.18677998052448961, 0, 0, 0, 0, -61.229839454685709, 0, 0, 0, 0, 0, 0, 0, 0, 153.074598636714272, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -61.229839454685709, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2.18677998052448961, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 0.728926660174829869, 0, 0, 0, 0, -20.4099464848952363, 0, 0, 0, 0, 0, 0, 0, 0, 51.0248662122380908, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -20.4099464848952363, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.728926660174829869, 0, 0, 0, 0, 0, 0, 0, 0, + -0.364463330087414934, 0, 0, 7.28926660174829869, 0, 5.83141328139863895, 0, 0, 0, 0, -5.10248662122380908, 0, -122.459678909371418, 0, 0, 0, 0, 0, 0, 0, 0, -10.2049732424476182, 0, 204.099464848952363, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2.55124331061190454, 0, -40.8198929697904727, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + -0.153105222743980097, 0, 0, 3.06210445487960195, 0, 2.44968356390368156, 0, 0, 0, 0, -2.14347311841572136, 0, -51.4433548419773127, 0, 0, 0, 0, 0, 0, 0, 0, -4.28694623683144273, 0, 85.7389247366288545, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.07173655920786068, 0, -17.1477849473257709, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, -2.44968356390368156, 0, 0, 0, 0, 34.2955698946515418, 0, 11.4318566315505139, 0, 0, 0, 0, 0, 0, 0, 0, -171.477849473257709, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -34.2955698946515418, 0, 171.477849473257709, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2.44968356390368156, 0, -11.4318566315505139, 0, 0, 0, 0, 0, 0, + + 0, 0, -1.22484178195184078, 0, 0, 0, 0, 17.1477849473257709, 0, 5.71592831577525697, 0, 0, 0, 0, 0, 0, 0, 0, -85.7389247366288545, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -17.1477849473257709, 0, 85.7389247366288545, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.22484178195184078, 0, -5.71592831577525697, 0, 0, 0, 0, 0, 0, + 0.306210445487960195, 0, 0, -2.44968356390368156, 0, -8.57389247366288545, 0, 0, 0, 0, -4.28694623683144273, 0, 77.1650322629659691, 0, 17.1477849473257709, 0, 0, 0, 0, 0, 0, 0, 0, 42.8694623683144273, 0, -171.477849473257709, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.53105222743980097, 0, -42.8694623683144273, 0, 85.7389247366288545, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0.176790683131149045, 0, 0, -1.41432546504919236, 0, -4.95013912767217325, 0, 0, 0, 0, -2.47506956383608662, 0, 44.5512521490495592, 0, 9.9002782553443465, 0, 0, 0, 0, 0, 0, 0, 0, 24.7506956383608662, 0, -99.002782553443465, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.883953415655745223, 0, -24.7506956383608662, 0, 49.5013912767217325, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 2.47506956383608662, 0, 0, 0, 0, -9.9002782553443465, 0, -19.800556510688693, 0, 0, 0, 0, 0, 0, -24.7506956383608662, 0, 99.002782553443465, 0, 19.800556510688693, 0, 0, 0, 0, 0, 0, 0, 0, -9.9002782553443465, 0, 99.002782553443465, 0, -118.803339064132158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2.47506956383608662, 0, -19.800556510688693, 0, 19.800556510688693, 0, 0, 0, 0, + + 0, 0, 1.62031337522288607, 0, 0, 0, 0, -6.48125350089154427, 0, -12.9625070017830885, 0, 0, 0, 0, 0, 0, -16.2031337522288607, 0, 64.8125350089154427, 0, 12.9625070017830885, 0, 0, 0, 0, 0, 0, 0, 0, -6.48125350089154427, 0, 64.8125350089154427, 0, -77.7750420106985312, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.62031337522288607, 0, -12.9625070017830885, 0, 12.9625070017830885, 0, 0, 0, 0, + -0.270052229203814345, 0, 0, 0, 0, 9.7218802513373164, 0, 0, 0, 0, 1.62031337522288607, 0, -9.7218802513373164, 0, -32.4062675044577213, 0, 0, 0, 0, 0, 0, 2.16041783363051476, 0, -48.609401256686582, 0, 64.8125350089154427, 0, 17.2833426690441181, 0, 0, 0, 0, 0, 0, 0, 0, 0.810156687611443034, 0, -29.1656407540119492, 0, 97.218802513373164, 0, -51.8500280071323542, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + -0.198164159898117403, 0, 0, 0, 0, 7.13390975633222651, 0, 0, 0, 0, 1.18898495938870442, 0, -7.13390975633222651, 0, -23.7796991877740884, 0, 0, 0, 0, 0, 0, 1.58531327918493922, 0, -35.6695487816611326, 0, 47.5593983755481767, 0, 12.6825062334795138, 0, 0, 0, 0, 0, 0, 0, 0, 0.594492479694352209, 0, -21.4017292689966795, 0, 71.3390975633222651, 0, -38.0475187004385414, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, -2.37796991877740884, 0, 0, 0, 0, -4.75593983755481767, 0, 23.7796991877740884, 0, 0, 0, 0, 0, 0, 0, 0, 23.7796991877740884, 0, -38.0475187004385414, 0, 0, 0, 0, 0, 0, 0, 0, 4.75593983755481767, 0, -23.7796991877740884, 0, 0, 0, 10.8707196286967261, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2.37796991877740884, 0, -23.7796991877740884, 0, 38.0475187004385414, 0, -10.8707196286967261, 0, 0, + + 0, 0, -1.9416043082307367, 0, 0, 0, 0, -3.88320861646147339, 0, 19.416043082307367, 0, 0, 0, 0, 0, 0, 0, 0, 19.416043082307367, 0, -31.0656689316917871, 0, 0, 0, 0, 0, 0, 0, 0, 3.88320861646147339, 0, -19.416043082307367, 0, 0, 0, 8.87590540905479632, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.9416043082307367, 0, -19.416043082307367, 0, 31.0656689316917871, 0, -8.87590540905479632, 0, 0, + 0.242700538528842087, 0, 0, 0.970802154115368348, 0, -9.70802154115368348, 0, 0, 0, 0, 1.45620323117305252, 0, -29.1240646234610504, 0, 38.8320861646147339, 0, 0, 0, 0, 0, 0, 0.970802154115368348, 0, -29.1240646234610504, 0, 77.6641723292294678, 0, -31.0656689316917871, 0, 0, 0, 0, 0, 0, 0, 0, 0.242700538528842087, 0, -9.70802154115368348, 0, 38.8320861646147339, 0, -31.0656689316917871, 0, 4.43795270452739816, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0.219530897104735508, 0, 0, 0.878123588418942033, 0, -8.78123588418942033, 0, 0, 0, 0, 1.31718538262841305, 0, -26.343707652568261, 0, 35.1249435367576813, 0, 0, 0, 0, 0, 0, 0.878123588418942033, 0, -26.343707652568261, 0, 70.2498870735153626, 0, -28.0999548294061451, 0, 0, 0, 0, 0, 0, 0, 0, 0.219530897104735508, 0, -8.78123588418942033, 0, 35.1249435367576813, 0, -28.0999548294061451, 0, 4.01427926134373501, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 2.19530897104735508, 0, 0, 0, 0, 8.78123588418942033, 0, -23.4166290245051209, 0, 0, 0, 0, 0, 0, 13.1718538262841305, 0, -70.2498870735153626, 0, 42.1499322441092176, 0, 0, 0, 0, 0, 0, 0, 0, 8.78123588418942033, 0, -70.2498870735153626, 0, 84.2998644882184352, 0, -16.05711704537494, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2.19530897104735508, 0, -23.4166290245051209, 0, 42.1499322441092176, 0, -16.05711704537494, 0, 0.892062058076385557, + + 0, 0, 2.19530897104735508, 0, 0, 0, 0, 8.78123588418942033, 0, -23.4166290245051209, 0, 0, 0, 0, 0, 0, 13.1718538262841305, 0, -70.2498870735153626, 0, 42.1499322441092176, 0, 0, 0, 0, 0, 0, 0, 0, 8.78123588418942033, 0, -70.2498870735153626, 0, 84.2998644882184352, 0, -16.05711704537494, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2.19530897104735508, 0, -23.4166290245051209, 0, 42.1499322441092176, 0, -16.05711704537494, 0, 0.892062058076385557, + -0.219530897104735508, 0, 0, -0.878123588418942033, 0, 8.78123588418942033, 0, 0, 0, 0, -1.31718538262841305, 0, 26.343707652568261, 0, -35.1249435367576813, 0, 0, 0, 0, 0, 0, -0.878123588418942033, 0, 26.343707652568261, 0, -70.2498870735153626, 0, 28.0999548294061451, 0, 0, 0, 0, 0, 0, 0, 0, -0.219530897104735508, 0, 8.78123588418942033, 0, -35.1249435367576813, 0, 28.0999548294061451, 0, -4.01427926134373501, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + -0.242700538528842087, 0, 0, -0.970802154115368348, 0, 9.70802154115368348, 0, 0, 0, 0, -1.45620323117305252, 0, 29.1240646234610504, 0, -38.8320861646147339, 0, 0, 0, 0, 0, 0, -0.970802154115368348, 0, 29.1240646234610504, 0, -77.6641723292294678, 0, 31.0656689316917871, 0, 0, 0, 0, 0, 0, 0, 0, -0.242700538528842087, 0, 9.70802154115368348, 0, -38.8320861646147339, 0, 31.0656689316917871, 0, -4.43795270452739816, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, -1.9416043082307367, 0, 0, 0, 0, -3.88320861646147339, 0, 19.416043082307367, 0, 0, 0, 0, 0, 0, 0, 0, 19.416043082307367, 0, -31.0656689316917871, 0, 0, 0, 0, 0, 0, 0, 0, 3.88320861646147339, 0, -19.416043082307367, 0, 0, 0, 8.87590540905479632, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.9416043082307367, 0, -19.416043082307367, 0, 31.0656689316917871, 0, -8.87590540905479632, 0, 0, + + 0, 0, -2.37796991877740884, 0, 0, 0, 0, -4.75593983755481767, 0, 23.7796991877740884, 0, 0, 0, 0, 0, 0, 0, 0, 23.7796991877740884, 0, -38.0475187004385414, 0, 0, 0, 0, 0, 0, 0, 0, 4.75593983755481767, 0, -23.7796991877740884, 0, 0, 0, 10.8707196286967261, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2.37796991877740884, 0, -23.7796991877740884, 0, 38.0475187004385414, 0, -10.8707196286967261, 0, 0, + 0.198164159898117403, 0, 0, 0, 0, -7.13390975633222651, 0, 0, 0, 0, -1.18898495938870442, 0, 7.13390975633222651, 0, 23.7796991877740884, 0, 0, 0, 0, 0, 0, -1.58531327918493922, 0, 35.6695487816611326, 0, -47.5593983755481767, 0, -12.6825062334795138, 0, 0, 0, 0, 0, 0, 0, 0, -0.594492479694352209, 0, 21.4017292689966795, 0, -71.3390975633222651, 0, 38.0475187004385414, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0.270052229203814345, 0, 0, 0, 0, -9.7218802513373164, 0, 0, 0, 0, -1.62031337522288607, 0, 9.7218802513373164, 0, 32.4062675044577213, 0, 0, 0, 0, 0, 0, -2.16041783363051476, 0, 48.609401256686582, 0, -64.8125350089154427, 0, -17.2833426690441181, 0, 0, 0, 0, 0, 0, 0, 0, -0.810156687611443034, 0, 29.1656407540119492, 0, -97.218802513373164, 0, 51.8500280071323542, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1.62031337522288607, 0, 0, 0, 0, -6.48125350089154427, 0, -12.9625070017830885, 0, 0, 0, 0, 0, 0, -16.2031337522288607, 0, 64.8125350089154427, 0, 12.9625070017830885, 0, 0, 0, 0, 0, 0, 0, 0, -6.48125350089154427, 0, 64.8125350089154427, 0, -77.7750420106985312, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.62031337522288607, 0, -12.9625070017830885, 0, 12.9625070017830885, 0, 0, 0, 0, + + 0, 0, 2.47506956383608662, 0, 0, 0, 0, -9.9002782553443465, 0, -19.800556510688693, 0, 0, 0, 0, 0, 0, -24.7506956383608662, 0, 99.002782553443465, 0, 19.800556510688693, 0, 0, 0, 0, 0, 0, 0, 0, -9.9002782553443465, 0, 99.002782553443465, 0, -118.803339064132158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2.47506956383608662, 0, -19.800556510688693, 0, 19.800556510688693, 0, 0, 0, 0, + -0.176790683131149045, 0, 0, 1.41432546504919236, 0, 4.95013912767217325, 0, 0, 0, 0, 2.47506956383608662, 0, -44.5512521490495592, 0, -9.9002782553443465, 0, 0, 0, 0, 0, 0, 0, 0, -24.7506956383608662, 0, 99.002782553443465, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.883953415655745223, 0, 24.7506956383608662, 0, -49.5013912767217325, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + -0.306210445487960195, 0, 0, 2.44968356390368156, 0, 8.57389247366288545, 0, 0, 0, 0, 4.28694623683144273, 0, -77.1650322629659691, 0, -17.1477849473257709, 0, 0, 0, 0, 0, 0, 0, 0, -42.8694623683144273, 0, 171.477849473257709, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1.53105222743980097, 0, 42.8694623683144273, 0, -85.7389247366288545, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, -1.22484178195184078, 0, 0, 0, 0, 17.1477849473257709, 0, 5.71592831577525697, 0, 0, 0, 0, 0, 0, 0, 0, -85.7389247366288545, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -17.1477849473257709, 0, 85.7389247366288545, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.22484178195184078, 0, -5.71592831577525697, 0, 0, 0, 0, 0, 0, + + 0, 0, -2.44968356390368156, 0, 0, 0, 0, 34.2955698946515418, 0, 11.4318566315505139, 0, 0, 0, 0, 0, 0, 0, 0, -171.477849473257709, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -34.2955698946515418, 0, 171.477849473257709, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2.44968356390368156, 0, -11.4318566315505139, 0, 0, 0, 0, 0, 0, + 0.153105222743980097, 0, 0, -3.06210445487960195, 0, -2.44968356390368156, 0, 0, 0, 0, 2.14347311841572136, 0, 51.4433548419773127, 0, 0, 0, 0, 0, 0, 0, 0, 4.28694623683144273, 0, -85.7389247366288545, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1.07173655920786068, 0, 17.1477849473257709, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0.364463330087414934, 0, 0, -7.28926660174829869, 0, -5.83141328139863895, 0, 0, 0, 0, 5.10248662122380908, 0, 122.459678909371418, 0, 0, 0, 0, 0, 0, 0, 0, 10.2049732424476182, 0, -204.099464848952363, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2.55124331061190454, 0, 40.8198929697904727, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0.728926660174829869, 0, 0, 0, 0, -20.4099464848952363, 0, 0, 0, 0, 0, 0, 0, 0, 51.0248662122380908, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -20.4099464848952363, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.728926660174829869, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 2.18677998052448961, 0, 0, 0, 0, -61.229839454685709, 0, 0, 0, 0, 0, 0, 0, 0, 153.074598636714272, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -61.229839454685709, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2.18677998052448961, 0, 0, 0, 0, 0, 0, 0, 0, + -0.121487776695804978, 0, 0, 4.37355996104897921, 0, 0, 0, 0, 0, 0, -15.3074598636714272, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10.2049732424476182, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1.0933899902622448, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + -0.52955294149244958, 0, 0, 19.0639058937281849, 0, 0, 0, 0, 0, 0, -66.723670628048647, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44.4824470853657647, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -4.76597647343204622, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + -0.52955294149244958, 0, 0, 23.8298823671602311, 0, 0, 0, 0, 0, 0, -111.206117713414412, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 111.206117713414412, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -23.8298823671602311, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.52955294149244958, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0.52955294149244958, 0, 0, 0, 0, -19.0639058937281849, 0, 0, 0, 0, 0, 0, 0, 0, 66.723670628048647, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -44.4824470853657647, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4.76597647343204622, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, -2.30826775722029458, 0, 0, 0, 0, 83.0976392599306051, 0, 0, 0, 0, 0, 0, 0, 0, -290.841737409757118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 193.894491606504745, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -20.7744098149826513, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + -0.121487776695804978, 0, 0, 3.28016997078673441, 0, 2.18677998052448961, 0, 0, 0, 0, -5.10248662122380908, 0, -61.229839454685709, 0, 0, 0, 0, 0, 0, 0, 0, -5.10248662122380908, 0, 153.074598636714272, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3.28016997078673441, 0, -61.229839454685709, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.121487776695804978, 0, 2.18677998052448961, 0, 0, 0, 0, 0, 0, 0, 0, + + 0.364463330087414934, 0, 0, -9.84050991236020323, 0, -6.56033994157346882, 0, 0, 0, 0, 15.3074598636714272, 0, 183.689518364057127, 0, 0, 0, 0, 0, 0, 0, 0, 15.3074598636714272, 0, -459.223795910142817, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9.84050991236020323, 0, 183.689518364057127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.364463330087414934, 0, -6.56033994157346882, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, -1.0933899902622448, 0, 0, 0, 0, 21.8677998052448961, 0, 5.83141328139863895, 0, 0, 0, 0, 0, 0, -15.3074598636714272, 0, -122.459678909371418, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -30.6149197273428545, 0, 204.099464848952363, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7.65372993183571362, 0, -40.8198929697904727, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 2.60278878664766166, 0, 0, 0, 0, -52.0557757329532331, 0, -13.8815401954541955, 0, 0, 0, 0, 0, 0, 36.4390430130672632, 0, 291.512344104538105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72.8780860261345264, 0, -485.853906840896842, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -18.2195215065336316, 0, 97.1707813681793685, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0.153105222743980097, 0, 0, -1.99036789567174127, 0, -4.89936712780736312, 0, 0, 0, 0, -2.14347311841572136, 0, 68.5911397893030836, 0, 11.4318566315505139, 0, 0, 0, 0, 0, 0, 2.14347311841572136, 0, 0, 0, -171.477849473257709, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.99036789567174127, 0, -68.5911397893030836, 0, 171.477849473257709, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.153105222743980097, 0, 4.89936712780736312, 0, -11.4318566315505139, 0, 0, 0, 0, 0, 0, + + -0.306210445487960195, 0, 0, 3.98073579134348253, 0, 9.79873425561472623, 0, 0, 0, 0, 4.28694623683144273, 0, -137.182279578606167, 0, -22.8637132631010279, 0, 0, 0, 0, 0, 0, -4.28694623683144273, 0, 0, 0, 342.955698946515418, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -3.98073579134348253, 0, 137.182279578606167, 0, -342.955698946515418, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.306210445487960195, 0, -9.79873425561472623, 0, 22.8637132631010279, 0, 0, 0, 0, 0, 0, + 0, 0, 1.53105222743980097, 0, 0, 0, 0, -12.2484178195184078, 0, -14.2898207894381424, 0, 0, 0, 0, 0, 0, -21.4347311841572136, 0, 128.608387104943282, 0, 17.1477849473257709, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 71.4491039471907121, 0, -171.477849473257709, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7.65526113719900487, 0, -71.4491039471907121, 0, 85.7389247366288545, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, -2.65186024696723567, 0, 0, 0, 0, 21.2148819757378853, 0, 24.7506956383608662, 0, 0, 0, 0, 0, 0, 37.1260434575412994, 0, -222.756260745247796, 0, -29.7008347660330395, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -123.753478191804331, 0, 297.008347660330395, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -13.2593012348361783, 0, 123.753478191804331, 0, -148.504173830165197, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + -0.176790683131149045, 0, 0, 0.530372049393447134, 0, 7.42520869150825987, 0, 0, 0, 0, 2.47506956383608662, 0, -29.7008347660330395, 0, -29.7008347660330395, 0, 0, 0, 0, 0, 0, 2.47506956383608662, 0, -74.2520869150825987, 0, 148.504173830165197, 0, 19.800556510688693, 0, 0, 0, 0, 0, 0, 0, 0, 0.530372049393447134, 0, -29.7008347660330395, 0, 148.504173830165197, 0, -118.803339064132158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.176790683131149045, 0, 7.42520869150825987, 0, -29.7008347660330395, 0, 19.800556510688693, 0, 0, 0, 0, + + 0.270052229203814345, 0, 0, -0.810156687611443034, 0, -11.3421936265602025, 0, 0, 0, 0, -3.78073120885340082, 0, 45.3687745062408099, 0, 45.3687745062408099, 0, 0, 0, 0, 0, 0, -3.78073120885340082, 0, 113.421936265602025, 0, -226.843872531204049, 0, -30.2458496708272066, 0, 0, 0, 0, 0, 0, 0, 0, -0.810156687611443034, 0, 45.3687745062408099, 0, -226.843872531204049, 0, 181.47509802496324, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.270052229203814345, 0, -11.3421936265602025, 0, 45.3687745062408099, 0, -30.2458496708272066, 0, 0, 0, 0, + 0, 0, -1.89036560442670041, 0, 0, 0, 0, 0, 0, 22.6843872531204049, 0, 0, 0, 0, 0, 0, 11.3421936265602025, 0, -22.6843872531204049, 0, -45.3687745062408099, 0, 0, 0, 0, 0, 0, 0, 0, 15.1229248354136033, 0, -113.421936265602025, 0, 90.7375490124816198, 0, 17.2833426690441181, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5.67109681328010124, 0, -68.0531617593612148, 0, 136.10632351872243, 0, -51.8500280071323542, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 2.57613407867552624, 0, 0, 0, 0, 0, 0, -30.9136089441063149, 0, 0, 0, 0, 0, 0, -15.4568044720531574, 0, 30.9136089441063149, 0, 61.8272178882126298, 0, 0, 0, 0, 0, 0, 0, 0, -20.6090726294042099, 0, 154.568044720531574, 0, -123.65443577642526, 0, -23.5532258621762399, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7.72840223602657872, 0, 92.7408268323189446, 0, -185.481653664637889, 0, 70.6596775865287197, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0.198164159898117403, 0, 0, 0.594492479694352209, 0, -9.51187967510963535, 0, 0, 0, 0, 0.396328319796234806, 0, -19.0237593502192707, 0, 47.5593983755481767, 0, 0, 0, 0, 0, 0, -0.396328319796234806, 0, 0, 0, 47.5593983755481767, 0, -50.7300249339180552, 0, 0, 0, 0, 0, 0, 0, 0, -0.594492479694352209, 0, 19.0237593502192707, 0, -47.5593983755481767, 0, 0, 0, 10.8707196286967261, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.198164159898117403, 0, 9.51187967510963535, 0, -47.5593983755481767, 0, 50.7300249339180552, 0, -10.8707196286967261, 0, 0, + + -0.242700538528842087, 0, 0, -0.728101615586526261, 0, 11.6496258493844202, 0, 0, 0, 0, -0.485401077057684174, 0, 23.2992516987688403, 0, -58.2481292469221009, 0, 0, 0, 0, 0, 0, 0.485401077057684174, 0, 0, 0, -58.2481292469221009, 0, 62.1313378633835742, 0, 0, 0, 0, 0, 0, 0, 0, 0.728101615586526261, 0, -23.2992516987688403, 0, 58.2481292469221009, 0, 0, 0, -13.3138581135821945, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.242700538528842087, 0, -11.6496258493844202, 0, 58.2481292469221009, 0, -62.1313378633835742, 0, 13.3138581135821945, 0, 0, + 0, 0, 2.18430484675957878, 0, 0, 0, 0, 8.73721938703831513, 0, -29.1240646234610504, 0, 0, 0, 0, 0, 0, 13.1058290805574727, 0, -87.3721938703831513, 0, 69.897755096306521, 0, 0, 0, 0, 0, 0, 0, 0, 8.73721938703831513, 0, -87.3721938703831513, 0, 139.795510192613042, 0, -39.9415743407465834, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2.18430484675957878, 0, -29.1240646234610504, 0, 69.897755096306521, 0, -39.9415743407465834, 0, 4.43795270452739816, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, -2.41483986815209059, 0, 0, 0, 0, -9.65935947260836236, 0, 32.1978649086945412, 0, 0, 0, 0, 0, 0, -14.4890392089125435, 0, 96.5935947260836236, 0, -77.2748757808668989, 0, 0, 0, 0, 0, 0, 0, 0, -9.65935947260836236, 0, 96.5935947260836236, 0, -154.549751561733798, 0, 44.1570718747810851, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2.41483986815209059, 0, 32.1978649086945412, 0, -77.2748757808668989, 0, 44.1570718747810851, 0, -4.90634131942012056, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + -0.219530897104735508, 0, 0, -1.09765448552367754, 0, 10.9765448552367754, 0, 0, 0, 0, -2.19530897104735508, 0, 43.9061794209471016, 0, -58.5415725612628022, 0, 0, 0, 0, 0, 0, -2.19530897104735508, 0, 65.8592691314206525, 0, -175.624717683788407, 0, 70.2498870735153626, 0, 0, 0, 0, 0, 0, 0, 0, -1.09765448552367754, 0, 43.9061794209471016, 0, -175.624717683788407, 0, 140.499774147030725, 0, -20.071396306718675, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.219530897104735508, 0, 10.9765448552367754, 0, -58.5415725612628022, 0, 70.2498870735153626, 0, -20.071396306718675, 0, 0.892062058076385557, + + 0.219530897104735508, 0, 0, 1.09765448552367754, 0, -10.9765448552367754, 0, 0, 0, 0, 2.19530897104735508, 0, -43.9061794209471016, 0, 58.5415725612628022, 0, 0, 0, 0, 0, 0, 2.19530897104735508, 0, -65.8592691314206525, 0, 175.624717683788407, 0, -70.2498870735153626, 0, 0, 0, 0, 0, 0, 0, 0, 1.09765448552367754, 0, -43.9061794209471016, 0, 175.624717683788407, 0, -140.499774147030725, 0, 20.071396306718675, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.219530897104735508, 0, -10.9765448552367754, 0, 58.5415725612628022, 0, -70.2498870735153626, 0, 20.071396306718675, 0, -0.892062058076385557, + 0, 0, -2.41483986815209059, 0, 0, 0, 0, -9.65935947260836236, 0, 32.1978649086945412, 0, 0, 0, 0, 0, 0, -14.4890392089125435, 0, 96.5935947260836236, 0, -77.2748757808668989, 0, 0, 0, 0, 0, 0, 0, 0, -9.65935947260836236, 0, 96.5935947260836236, 0, -154.549751561733798, 0, 44.1570718747810851, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2.41483986815209059, 0, 32.1978649086945412, 0, -77.2748757808668989, 0, 44.1570718747810851, 0, -4.90634131942012056, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 2.18430484675957878, 0, 0, 0, 0, 8.73721938703831513, 0, -29.1240646234610504, 0, 0, 0, 0, 0, 0, 13.1058290805574727, 0, -87.3721938703831513, 0, 69.897755096306521, 0, 0, 0, 0, 0, 0, 0, 0, 8.73721938703831513, 0, -87.3721938703831513, 0, 139.795510192613042, 0, -39.9415743407465834, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2.18430484675957878, 0, -29.1240646234610504, 0, 69.897755096306521, 0, -39.9415743407465834, 0, 4.43795270452739816, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0.242700538528842087, 0, 0, 0.728101615586526261, 0, -11.6496258493844202, 0, 0, 0, 0, 0.485401077057684174, 0, -23.2992516987688403, 0, 58.2481292469221009, 0, 0, 0, 0, 0, 0, -0.485401077057684174, 0, 0, 0, 58.2481292469221009, 0, -62.1313378633835742, 0, 0, 0, 0, 0, 0, 0, 0, -0.728101615586526261, 0, 23.2992516987688403, 0, -58.2481292469221009, 0, 0, 0, 13.3138581135821945, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.242700538528842087, 0, 11.6496258493844202, 0, -58.2481292469221009, 0, 62.1313378633835742, 0, -13.3138581135821945, 0, 0, + + -0.198164159898117403, 0, 0, -0.594492479694352209, 0, 9.51187967510963535, 0, 0, 0, 0, -0.396328319796234806, 0, 19.0237593502192707, 0, -47.5593983755481767, 0, 0, 0, 0, 0, 0, 0.396328319796234806, 0, 0, 0, -47.5593983755481767, 0, 50.7300249339180552, 0, 0, 0, 0, 0, 0, 0, 0, 0.594492479694352209, 0, -19.0237593502192707, 0, 47.5593983755481767, 0, 0, 0, -10.8707196286967261, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.198164159898117403, 0, -9.51187967510963535, 0, 47.5593983755481767, 0, -50.7300249339180552, 0, 10.8707196286967261, 0, 0, + 0, 0, 2.57613407867552624, 0, 0, 0, 0, 0, 0, -30.9136089441063149, 0, 0, 0, 0, 0, 0, -15.4568044720531574, 0, 30.9136089441063149, 0, 61.8272178882126298, 0, 0, 0, 0, 0, 0, 0, 0, -20.6090726294042099, 0, 154.568044720531574, 0, -123.65443577642526, 0, -23.5532258621762399, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7.72840223602657872, 0, 92.7408268323189446, 0, -185.481653664637889, 0, 70.6596775865287197, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, -1.89036560442670041, 0, 0, 0, 0, 0, 0, 22.6843872531204049, 0, 0, 0, 0, 0, 0, 11.3421936265602025, 0, -22.6843872531204049, 0, -45.3687745062408099, 0, 0, 0, 0, 0, 0, 0, 0, 15.1229248354136033, 0, -113.421936265602025, 0, 90.7375490124816198, 0, 17.2833426690441181, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5.67109681328010124, 0, -68.0531617593612148, 0, 136.10632351872243, 0, -51.8500280071323542, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + -0.270052229203814345, 0, 0, 0.810156687611443034, 0, 11.3421936265602025, 0, 0, 0, 0, 3.78073120885340082, 0, -45.3687745062408099, 0, -45.3687745062408099, 0, 0, 0, 0, 0, 0, 3.78073120885340082, 0, -113.421936265602025, 0, 226.843872531204049, 0, 30.2458496708272066, 0, 0, 0, 0, 0, 0, 0, 0, 0.810156687611443034, 0, -45.3687745062408099, 0, 226.843872531204049, 0, -181.47509802496324, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.270052229203814345, 0, 11.3421936265602025, 0, -45.3687745062408099, 0, 30.2458496708272066, 0, 0, 0, 0, + + 0.176790683131149045, 0, 0, -0.530372049393447134, 0, -7.42520869150825987, 0, 0, 0, 0, -2.47506956383608662, 0, 29.7008347660330395, 0, 29.7008347660330395, 0, 0, 0, 0, 0, 0, -2.47506956383608662, 0, 74.2520869150825987, 0, -148.504173830165197, 0, -19.800556510688693, 0, 0, 0, 0, 0, 0, 0, 0, -0.530372049393447134, 0, 29.7008347660330395, 0, -148.504173830165197, 0, 118.803339064132158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.176790683131149045, 0, -7.42520869150825987, 0, 29.7008347660330395, 0, -19.800556510688693, 0, 0, 0, 0, + 0, 0, -2.65186024696723567, 0, 0, 0, 0, 21.2148819757378853, 0, 24.7506956383608662, 0, 0, 0, 0, 0, 0, 37.1260434575412994, 0, -222.756260745247796, 0, -29.7008347660330395, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -123.753478191804331, 0, 297.008347660330395, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -13.2593012348361783, 0, 123.753478191804331, 0, -148.504173830165197, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 1.53105222743980097, 0, 0, 0, 0, -12.2484178195184078, 0, -14.2898207894381424, 0, 0, 0, 0, 0, 0, -21.4347311841572136, 0, 128.608387104943282, 0, 17.1477849473257709, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 71.4491039471907121, 0, -171.477849473257709, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7.65526113719900487, 0, -71.4491039471907121, 0, 85.7389247366288545, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0.306210445487960195, 0, 0, -3.98073579134348253, 0, -9.79873425561472623, 0, 0, 0, 0, -4.28694623683144273, 0, 137.182279578606167, 0, 22.8637132631010279, 0, 0, 0, 0, 0, 0, 4.28694623683144273, 0, 0, 0, -342.955698946515418, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3.98073579134348253, 0, -137.182279578606167, 0, 342.955698946515418, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.306210445487960195, 0, 9.79873425561472623, 0, -22.8637132631010279, 0, 0, 0, 0, 0, 0, + + -0.153105222743980097, 0, 0, 1.99036789567174127, 0, 4.89936712780736312, 0, 0, 0, 0, 2.14347311841572136, 0, -68.5911397893030836, 0, -11.4318566315505139, 0, 0, 0, 0, 0, 0, -2.14347311841572136, 0, 0, 0, 171.477849473257709, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1.99036789567174127, 0, 68.5911397893030836, 0, -171.477849473257709, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.153105222743980097, 0, -4.89936712780736312, 0, 11.4318566315505139, 0, 0, 0, 0, 0, 0, + 0, 0, 2.60278878664766166, 0, 0, 0, 0, -52.0557757329532331, 0, -13.8815401954541955, 0, 0, 0, 0, 0, 0, 36.4390430130672632, 0, 291.512344104538105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72.8780860261345264, 0, -485.853906840896842, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -18.2195215065336316, 0, 97.1707813681793685, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, -1.0933899902622448, 0, 0, 0, 0, 21.8677998052448961, 0, 5.83141328139863895, 0, 0, 0, 0, 0, 0, -15.3074598636714272, 0, -122.459678909371418, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -30.6149197273428545, 0, 204.099464848952363, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7.65372993183571362, 0, -40.8198929697904727, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + -0.364463330087414934, 0, 0, 9.84050991236020323, 0, 6.56033994157346882, 0, 0, 0, 0, -15.3074598636714272, 0, -183.689518364057127, 0, 0, 0, 0, 0, 0, 0, 0, -15.3074598636714272, 0, 459.223795910142817, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9.84050991236020323, 0, -183.689518364057127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.364463330087414934, 0, 6.56033994157346882, 0, 0, 0, 0, 0, 0, 0, 0, + + 0.121487776695804978, 0, 0, -3.28016997078673441, 0, -2.18677998052448961, 0, 0, 0, 0, 5.10248662122380908, 0, 61.229839454685709, 0, 0, 0, 0, 0, 0, 0, 0, 5.10248662122380908, 0, -153.074598636714272, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -3.28016997078673441, 0, 61.229839454685709, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.121487776695804978, 0, -2.18677998052448961, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, -2.30826775722029458, 0, 0, 0, 0, 83.0976392599306051, 0, 0, 0, 0, 0, 0, 0, 0, -290.841737409757118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 193.894491606504745, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -20.7744098149826513, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 0.52955294149244958, 0, 0, 0, 0, -19.0639058937281849, 0, 0, 0, 0, 0, 0, 0, 0, 66.723670628048647, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -44.4824470853657647, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4.76597647343204622, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0.52955294149244958, 0, 0, -23.8298823671602311, 0, 0, 0, 0, 0, 0, 111.206117713414412, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -111.206117713414412, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23.8298823671602311, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.52955294149244958, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0.542630291944221461, 0, 0, -24.4183631374899657, 0, 0, 0, 0, 0, 0, 113.952361308286507, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -113.952361308286507, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24.4183631374899657, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.542630291944221461, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0.11841163748620862, 0, 0, -5.32852368687938788, 0, 0, 0, 0, 0, 0, 24.8664438721038101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -24.8664438721038101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5.32852368687938788, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.11841163748620862, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 2.36823274972417239, 0, 0, 0, 0, -85.2563789900702061, 0, 0, 0, 0, 0, 0, 0, 0, 298.397326465245721, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -198.931550976830481, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21.3140947475175515, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 0.748900951853188297, 0, 0, 0, 0, -26.9604342667147787, 0, 0, 0, 0, 0, 0, 0, 0, 94.3615199335017254, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -62.9076799556678169, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6.74010856667869467, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + -0.374450475926594148, 0, 0, 10.110162850018042, 0, 6.74010856667869467, 0, 0, 0, 0, -15.7269199889169542, 0, -188.723039867003451, 0, 0, 0, 0, 0, 0, 0, 0, -15.7269199889169542, 0, 471.807599667508627, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10.110162850018042, 0, -188.723039867003451, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.374450475926594148, 0, 6.74010856667869467, 0, 0, 0, 0, 0, 0, 0, 0, + + -0.148791531444953757, 0, 0, 4.01737134901375144, 0, 2.67824756600916763, 0, 0, 0, 0, -6.2492443206880578, 0, -74.9909318482566936, 0, 0, 0, 0, 0, 0, 0, 0, -6.2492443206880578, 0, 187.477329620641734, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4.01737134901375144, 0, -74.9909318482566936, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.148791531444953757, 0, 2.67824756600916763, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, -2.67824756600916763, 0, 0, 0, 0, 53.5649513201833526, 0, 14.2839870187155607, 0, 0, 0, 0, 0, 0, -37.4954659241283468, 0, -299.963727393026774, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -74.9909318482566936, 0, 499.939545655044624, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18.7477329620641734, 0, -99.9879091310089248, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, -1.26253801041429866, 0, 0, 0, 0, 25.2507602082859732, 0, 6.73353605554292619, 0, 0, 0, 0, 0, 0, -17.6755321458001813, 0, -141.40425716640145, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -35.3510642916003625, 0, 235.673761944002417, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8.83776607290009063, 0, -47.1347523888004833, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0.315634502603574665, 0, 0, -4.10324853384647065, 0, -10.1003040833143893, 0, 0, 0, 0, -4.41888303645004531, 0, 141.40425716640145, 0, 23.5673761944002417, 0, 0, 0, 0, 0, 0, 4.41888303645004531, 0, 0, 0, -353.510642916003625, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4.10324853384647065, 0, -141.40425716640145, 0, 353.510642916003625, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.315634502603574665, 0, 10.1003040833143893, 0, -23.5673761944002417, 0, 0, 0, 0, 0, 0, + + 0.171176842882893189, 0, 0, -2.22529895747761146, 0, -5.47765897225258205, 0, 0, 0, 0, -2.39647580036050465, 0, 76.6872256115361487, 0, 12.7812042685893581, 0, 0, 0, 0, 0, 0, 2.39647580036050465, 0, 0, 0, -191.718064028840372, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2.22529895747761146, 0, -76.6872256115361487, 0, 191.718064028840372, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.171176842882893189, 0, 5.47765897225258205, 0, -12.7812042685893581, 0, 0, 0, 0, 0, 0, + 0, 0, 2.73882948612629102, 0, 0, 0, 0, -21.9106358890103282, 0, -25.5624085371787162, 0, 0, 0, 0, 0, 0, -38.3436128057680743, 0, 230.061676834608446, 0, 30.6748902446144595, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 127.812042685893581, 0, -306.748902446144595, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13.6941474306314551, 0, -127.812042685893581, 0, 153.374451223072297, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 1.67718368337461811, 0, 0, 0, 0, -13.4174694669969449, 0, -15.6537143781631024, 0, 0, 0, 0, 0, 0, -23.4805715672446536, 0, 140.883429403467921, 0, 18.7844572537957229, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 78.2685718908155119, 0, -187.844572537957229, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8.38591841687309056, 0, -78.2685718908155119, 0, 93.9222862689786143, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + -0.279530613895769685, 0, 0, 0.838591841687309056, 0, 11.7402857836223268, 0, 0, 0, 0, 3.9134285945407756, 0, -46.9611431344893072, 0, -46.9611431344893072, 0, 0, 0, 0, 0, 0, 3.9134285945407756, 0, -117.402857836223268, 0, 234.805715672446536, 0, 31.3074287563262048, 0, 0, 0, 0, 0, 0, 0, 0, 0.838591841687309056, 0, -46.9611431344893072, 0, 234.805715672446536, 0, -187.844572537957229, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.279530613895769685, 0, 11.7402857836223268, 0, -46.9611431344893072, 0, 31.3074287563262048, 0, 0, 0, 0, + + -0.190955762544560929, 0, 0, 0.572867287633682787, 0, 8.02014202687155901, 0, 0, 0, 0, 2.673380675623853, 0, -32.0805681074862361, 0, -32.0805681074862361, 0, 0, 0, 0, 0, 0, 2.673380675623853, 0, -80.2014202687155901, 0, 160.40284053743118, 0, 21.387045404990824, 0, 0, 0, 0, 0, 0, 0, 0, 0.572867287633682787, 0, -32.0805681074862361, 0, 160.40284053743118, 0, -128.322272429944944, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.190955762544560929, 0, 8.02014202687155901, 0, -32.0805681074862361, 0, 21.387045404990824, 0, 0, 0, 0, + 0, 0, -2.673380675623853, 0, 0, 0, 0, 0, 0, 32.0805681074862361, 0, 0, 0, 0, 0, 0, 16.040284053743118, 0, -32.0805681074862361, 0, -64.1611362149724721, 0, 0, 0, 0, 0, 0, 0, 0, 21.387045404990824, 0, -160.40284053743118, 0, 128.322272429944944, 0, 24.4423376057037989, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8.02014202687155901, 0, -96.2417043224587082, 0, 192.483408644917416, 0, -73.3270128171113967, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, -2.02088583643044288, 0, 0, 0, 0, 0, 0, 24.2506300371653145, 0, 0, 0, 0, 0, 0, 12.1253150185826573, 0, -24.2506300371653145, 0, -48.501260074330629, 0, 0, 0, 0, 0, 0, 0, 0, 16.167086691443543, 0, -121.253150185826573, 0, 97.0025201486612581, 0, 18.4766705045069063, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6.06265750929132863, 0, -72.7518901114959435, 0, 145.503780222991887, 0, -55.4300115135207189, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0.25261072955380536, 0, 0, 0.757832188661416079, 0, -12.1253150185826573, 0, 0, 0, 0, 0.505221459107610719, 0, -24.2506300371653145, 0, 60.6265750929132863, 0, 0, 0, 0, 0, 0, -0.505221459107610719, 0, 0, 0, 60.6265750929132863, 0, -64.668346765774172, 0, 0, 0, 0, 0, 0, 0, 0, -0.757832188661416079, 0, 24.2506300371653145, 0, -60.6265750929132863, 0, 0, 0, 13.8575028783801797, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.25261072955380536, 0, 12.1253150185826573, 0, -60.6265750929132863, 0, 64.668346765774172, 0, -13.8575028783801797, 0, 0, + + 0.210184831878141177, 0, 0, 0.630554495634423532, 0, -10.0888719301507765, 0, 0, 0, 0, 0.420369663756282355, 0, -20.177743860301553, 0, 50.4443596507538826, 0, 0, 0, 0, 0, 0, -0.420369663756282355, 0, 0, 0, 50.4443596507538826, 0, -53.8073169608041414, 0, 0, 0, 0, 0, 0, 0, 0, -0.630554495634423532, 0, 20.177743860301553, 0, -50.4443596507538826, 0, 0, 0, 11.5301393487437446, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.210184831878141177, 0, 10.0888719301507765, 0, -50.4443596507538826, 0, 53.8073169608041414, 0, -11.5301393487437446, 0, 0, + 0, 0, 2.52221798253769413, 0, 0, 0, 0, 10.0888719301507765, 0, -33.6295731005025884, 0, 0, 0, 0, 0, 0, 15.1333078952261648, 0, -100.888719301507765, 0, 80.7109754412062121, 0, 0, 0, 0, 0, 0, 0, 0, 10.0888719301507765, 0, -100.888719301507765, 0, 161.421950882412424, 0, -46.1205573949749784, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2.52221798253769413, 0, -33.6295731005025884, 0, 80.7109754412062121, 0, -46.1205573949749784, 0, 5.12450637721944204, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 2.30245947330177705, 0, 0, 0, 0, 9.20983789320710822, 0, -30.6994596440236941, 0, 0, 0, 0, 0, 0, 13.8147568398106623, 0, -92.0983789320710822, 0, 73.6787031456568658, 0, 0, 0, 0, 0, 0, 0, 0, 9.20983789320710822, 0, -92.0983789320710822, 0, 147.357406291313732, 0, -42.1021160832324947, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2.30245947330177705, 0, -30.6994596440236941, 0, 73.6787031456568658, 0, -42.1021160832324947, 0, 4.67801289813694386, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + -0.230245947330177705, 0, 0, -1.15122973665088853, 0, 11.5122973665088853, 0, 0, 0, 0, -2.30245947330177705, 0, 46.0491894660355411, 0, -61.3989192880473881, 0, 0, 0, 0, 0, 0, -2.30245947330177705, 0, 69.0737841990533116, 0, -184.196757864142164, 0, 73.6787031456568658, 0, 0, 0, 0, 0, 0, 0, 0, -1.15122973665088853, 0, 46.0491894660355411, 0, -184.196757864142164, 0, 147.357406291313732, 0, -21.0510580416162474, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.230245947330177705, 0, 11.5122973665088853, 0, -61.3989192880473881, 0, 73.6787031456568658, 0, -21.0510580416162474, 0, 0.935602579627388772, + + -0.230245947330177705, 0, 0, -1.15122973665088853, 0, 11.5122973665088853, 0, 0, 0, 0, -2.30245947330177705, 0, 46.0491894660355411, 0, -61.3989192880473881, 0, 0, 0, 0, 0, 0, -2.30245947330177705, 0, 69.0737841990533116, 0, -184.196757864142164, 0, 73.6787031456568658, 0, 0, 0, 0, 0, 0, 0, 0, -1.15122973665088853, 0, 46.0491894660355411, 0, -184.196757864142164, 0, 147.357406291313732, 0, -21.0510580416162474, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.230245947330177705, 0, 11.5122973665088853, 0, -61.3989192880473881, 0, 73.6787031456568658, 0, -21.0510580416162474, 0, 0.935602579627388772, + 0, 0, -2.30245947330177705, 0, 0, 0, 0, -9.20983789320710822, 0, 30.6994596440236941, 0, 0, 0, 0, 0, 0, -13.8147568398106623, 0, 92.0983789320710822, 0, -73.6787031456568658, 0, 0, 0, 0, 0, 0, 0, 0, -9.20983789320710822, 0, 92.0983789320710822, 0, -147.357406291313732, 0, 42.1021160832324947, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2.30245947330177705, 0, 30.6994596440236941, 0, -73.6787031456568658, 0, 42.1021160832324947, 0, -4.67801289813694386, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, -2.52221798253769413, 0, 0, 0, 0, -10.0888719301507765, 0, 33.6295731005025884, 0, 0, 0, 0, 0, 0, -15.1333078952261648, 0, 100.888719301507765, 0, -80.7109754412062121, 0, 0, 0, 0, 0, 0, 0, 0, -10.0888719301507765, 0, 100.888719301507765, 0, -161.421950882412424, 0, 46.1205573949749784, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2.52221798253769413, 0, 33.6295731005025884, 0, -80.7109754412062121, 0, 46.1205573949749784, 0, -5.12450637721944204, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0.210184831878141177, 0, 0, 0.630554495634423532, 0, -10.0888719301507765, 0, 0, 0, 0, 0.420369663756282355, 0, -20.177743860301553, 0, 50.4443596507538826, 0, 0, 0, 0, 0, 0, -0.420369663756282355, 0, 0, 0, 50.4443596507538826, 0, -53.8073169608041414, 0, 0, 0, 0, 0, 0, 0, 0, -0.630554495634423532, 0, 20.177743860301553, 0, -50.4443596507538826, 0, 0, 0, 11.5301393487437446, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.210184831878141177, 0, 10.0888719301507765, 0, -50.4443596507538826, 0, 53.8073169608041414, 0, -11.5301393487437446, 0, 0, + + 0.25261072955380536, 0, 0, 0.757832188661416079, 0, -12.1253150185826573, 0, 0, 0, 0, 0.505221459107610719, 0, -24.2506300371653145, 0, 60.6265750929132863, 0, 0, 0, 0, 0, 0, -0.505221459107610719, 0, 0, 0, 60.6265750929132863, 0, -64.668346765774172, 0, 0, 0, 0, 0, 0, 0, 0, -0.757832188661416079, 0, 24.2506300371653145, 0, -60.6265750929132863, 0, 0, 0, 13.8575028783801797, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.25261072955380536, 0, 12.1253150185826573, 0, -60.6265750929132863, 0, 64.668346765774172, 0, -13.8575028783801797, 0, 0, + 0, 0, 2.02088583643044288, 0, 0, 0, 0, 0, 0, -24.2506300371653145, 0, 0, 0, 0, 0, 0, -12.1253150185826573, 0, 24.2506300371653145, 0, 48.501260074330629, 0, 0, 0, 0, 0, 0, 0, 0, -16.167086691443543, 0, 121.253150185826573, 0, -97.0025201486612581, 0, -18.4766705045069063, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -6.06265750929132863, 0, 72.7518901114959435, 0, -145.503780222991887, 0, 55.4300115135207189, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 2.673380675623853, 0, 0, 0, 0, 0, 0, -32.0805681074862361, 0, 0, 0, 0, 0, 0, -16.040284053743118, 0, 32.0805681074862361, 0, 64.1611362149724721, 0, 0, 0, 0, 0, 0, 0, 0, -21.387045404990824, 0, 160.40284053743118, 0, -128.322272429944944, 0, -24.4423376057037989, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8.02014202687155901, 0, 96.2417043224587082, 0, -192.483408644917416, 0, 73.3270128171113967, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + -0.190955762544560929, 0, 0, 0.572867287633682787, 0, 8.02014202687155901, 0, 0, 0, 0, 2.673380675623853, 0, -32.0805681074862361, 0, -32.0805681074862361, 0, 0, 0, 0, 0, 0, 2.673380675623853, 0, -80.2014202687155901, 0, 160.40284053743118, 0, 21.387045404990824, 0, 0, 0, 0, 0, 0, 0, 0, 0.572867287633682787, 0, -32.0805681074862361, 0, 160.40284053743118, 0, -128.322272429944944, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.190955762544560929, 0, 8.02014202687155901, 0, -32.0805681074862361, 0, 21.387045404990824, 0, 0, 0, 0, + + -0.279530613895769685, 0, 0, 0.838591841687309056, 0, 11.7402857836223268, 0, 0, 0, 0, 3.9134285945407756, 0, -46.9611431344893072, 0, -46.9611431344893072, 0, 0, 0, 0, 0, 0, 3.9134285945407756, 0, -117.402857836223268, 0, 234.805715672446536, 0, 31.3074287563262048, 0, 0, 0, 0, 0, 0, 0, 0, 0.838591841687309056, 0, -46.9611431344893072, 0, 234.805715672446536, 0, -187.844572537957229, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.279530613895769685, 0, 11.7402857836223268, 0, -46.9611431344893072, 0, 31.3074287563262048, 0, 0, 0, 0, + 0, 0, -1.67718368337461811, 0, 0, 0, 0, 13.4174694669969449, 0, 15.6537143781631024, 0, 0, 0, 0, 0, 0, 23.4805715672446536, 0, -140.883429403467921, 0, -18.7844572537957229, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -78.2685718908155119, 0, 187.844572537957229, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8.38591841687309056, 0, 78.2685718908155119, 0, -93.9222862689786143, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, -2.73882948612629102, 0, 0, 0, 0, 21.9106358890103282, 0, 25.5624085371787162, 0, 0, 0, 0, 0, 0, 38.3436128057680743, 0, -230.061676834608446, 0, -30.6748902446144595, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -127.812042685893581, 0, 306.748902446144595, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -13.6941474306314551, 0, 127.812042685893581, 0, -153.374451223072297, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0.171176842882893189, 0, 0, -2.22529895747761146, 0, -5.47765897225258205, 0, 0, 0, 0, -2.39647580036050465, 0, 76.6872256115361487, 0, 12.7812042685893581, 0, 0, 0, 0, 0, 0, 2.39647580036050465, 0, 0, 0, -191.718064028840372, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2.22529895747761146, 0, -76.6872256115361487, 0, 191.718064028840372, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.171176842882893189, 0, 5.47765897225258205, 0, -12.7812042685893581, 0, 0, 0, 0, 0, 0, + + 0.315634502603574665, 0, 0, -4.10324853384647065, 0, -10.1003040833143893, 0, 0, 0, 0, -4.41888303645004531, 0, 141.40425716640145, 0, 23.5673761944002417, 0, 0, 0, 0, 0, 0, 4.41888303645004531, 0, 0, 0, -353.510642916003625, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4.10324853384647065, 0, -141.40425716640145, 0, 353.510642916003625, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.315634502603574665, 0, 10.1003040833143893, 0, -23.5673761944002417, 0, 0, 0, 0, 0, 0, + 0, 0, 1.26253801041429866, 0, 0, 0, 0, -25.2507602082859732, 0, -6.73353605554292619, 0, 0, 0, 0, 0, 0, 17.6755321458001813, 0, 141.40425716640145, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35.3510642916003625, 0, -235.673761944002417, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8.83776607290009063, 0, 47.1347523888004833, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 2.67824756600916763, 0, 0, 0, 0, -53.5649513201833526, 0, -14.2839870187155607, 0, 0, 0, 0, 0, 0, 37.4954659241283468, 0, 299.963727393026774, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 74.9909318482566936, 0, -499.939545655044624, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -18.7477329620641734, 0, 99.9879091310089248, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + -0.148791531444953757, 0, 0, 4.01737134901375144, 0, 2.67824756600916763, 0, 0, 0, 0, -6.2492443206880578, 0, -74.9909318482566936, 0, 0, 0, 0, 0, 0, 0, 0, -6.2492443206880578, 0, 187.477329620641734, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4.01737134901375144, 0, -74.9909318482566936, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.148791531444953757, 0, 2.67824756600916763, 0, 0, 0, 0, 0, 0, 0, 0, + + -0.374450475926594148, 0, 0, 10.110162850018042, 0, 6.74010856667869467, 0, 0, 0, 0, -15.7269199889169542, 0, -188.723039867003451, 0, 0, 0, 0, 0, 0, 0, 0, -15.7269199889169542, 0, 471.807599667508627, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10.110162850018042, 0, -188.723039867003451, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.374450475926594148, 0, 6.74010856667869467, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, -0.748900951853188297, 0, 0, 0, 0, 26.9604342667147787, 0, 0, 0, 0, 0, 0, 0, 0, -94.3615199335017254, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62.9076799556678169, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -6.74010856667869467, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, -2.36823274972417239, 0, 0, 0, 0, 85.2563789900702061, 0, 0, 0, 0, 0, 0, 0, 0, -298.397326465245721, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 198.931550976830481, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -21.3140947475175515, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0.11841163748620862, 0, 0, -5.32852368687938788, 0, 0, 0, 0, 0, 0, 24.8664438721038101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -24.8664438721038101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5.32852368687938788, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.11841163748620862, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0.542630291944221461, 0, 0, -24.4183631374899657, 0, 0, 0, 0, 0, 0, 113.952361308286507, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -113.952361308286507, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24.4183631374899657, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.542630291944221461, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + -0.542630291944221461, 0, 0, 29.8446660569321803, 0, 0, 0, 0, 0, 0, -179.067996341593082, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250.695194878230315, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -89.533998170796541, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5.96893321138643607, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0.542630291944221461, 0, 0, 0, 0, -24.4183631374899657, 0, 0, 0, 0, 0, 0, 0, 0, 113.952361308286507, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -113.952361308286507, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24.4183631374899657, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.542630291944221461, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, -2.48664438721038101, 0, 0, 0, 0, 111.898997424467146, 0, 0, 0, 0, 0, 0, 0, 0, -522.195321314180012, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 522.195321314180012, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -111.898997424467146, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2.48664438721038101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + -0.11841163748620862, 0, 0, 4.14440731201730169, 0, 2.36823274972417239, 0, 0, 0, 0, -10.6570473737587758, 0, -85.2563789900702061, 0, 0, 0, 0, 0, 0, 0, 0, -4.97328877442076202, 0, 298.397326465245721, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8.88087281146564647, 0, -198.931550976830481, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1.06570473737587758, 0, 21.3140947475175515, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0.374450475926594148, 0, 0, -13.1057666574307952, 0, -7.48900951853188297, 0, 0, 0, 0, 33.7005428333934733, 0, 269.604342667147787, 0, 0, 0, 0, 0, 0, 0, 0, 15.7269199889169542, 0, -943.615199335017254, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -28.0837856944945611, 0, 629.076799556678169, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3.37005428333934733, 0, -67.4010856667869467, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, -1.12335142777978244, 0, 0, 0, 0, 30.330488550054126, 0, 6.74010856667869467, 0, 0, 0, 0, 0, 0, -47.1807599667508627, 0, -188.723039867003451, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -47.1807599667508627, 0, 471.807599667508627, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30.330488550054126, 0, -188.723039867003451, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1.12335142777978244, 0, 6.74010856667869467, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 2.82703909745412139, 0, 0, 0, 0, -76.3300556312612774, 0, -16.9622345847247283, 0, 0, 0, 0, 0, 0, 118.735642093073098, 0, 474.942568372292393, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 118.735642093073098, 0, -1187.35642093073098, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -76.3300556312612774, 0, 474.942568372292393, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2.82703909745412139, 0, -16.9622345847247283, 0, 0, 0, 0, 0, 0, 0, 0, + 0.148791531444953757, 0, 0, -2.82703909745412139, 0, -5.35649513201833526, 0, 0, 0, 0, -0.892749188669722543, 0, 107.129902640366705, 0, 14.2839870187155607, 0, 0, 0, 0, 0, 0, 6.2492443206880578, 0, -74.9909318482566936, 0, -299.963727393026774, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3.1246221603440289, 0, -149.981863696513387, 0, 499.939545655044624, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1.0415407201146763, 0, 37.4954659241283468, 0, -99.9879091310089248, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + -0.315634502603574665, 0, 0, 5.99705554946791864, 0, 11.3628420937286879, 0, 0, 0, 0, 1.89380701562144799, 0, -227.256841874573759, 0, -30.3009122499431679, 0, 0, 0, 0, 0, 0, -13.2566491093501359, 0, 159.079789312201631, 0, 636.319157248806525, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -6.62832455467506797, 0, 318.159578624403263, 0, -1060.53192874801088, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2.20944151822502266, 0, -79.5398946561008156, 0, 212.106385749602175, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1.57817251301787333, 0, 0, 0, 0, -20.5162426692323532, 0, -16.8338401388573155, 0, 0, 0, 0, 0, 0, -22.0944151822502266, 0, 235.673761944002417, 0, 23.5673761944002417, 0, 0, 0, 0, 0, 0, 0, 0, 22.0944151822502266, 0, 0, 0, -353.510642916003625, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20.5162426692323532, 0, -235.673761944002417, 0, 353.510642916003625, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1.57817251301787333, 0, 16.8338401388573155, 0, -23.5673761944002417, 0, 0, 0, 0, 0, 0, + + 0, 0, -2.91000632900918421, 0, 0, 0, 0, 37.8300822771193948, 0, 31.0400675094312983, 0, 0, 0, 0, 0, 0, 40.740088606128579, 0, -434.560945132038176, 0, -43.4560945132038176, 0, 0, 0, 0, 0, 0, 0, 0, -40.740088606128579, 0, 0, 0, 651.841417698057264, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -37.8300822771193948, 0, 434.560945132038176, 0, -651.841417698057264, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2.91000632900918421, 0, -31.0400675094312983, 0, 43.4560945132038176, 0, 0, 0, 0, 0, 0, + -0.171176842882893189, 0, 0, 1.19823790018025232, 0, 8.21648845837887307, 0, 0, 0, 0, 3.76589054342365016, 0, -65.7319076670309846, 0, -38.3436128057680743, 0, 0, 0, 0, 0, 0, 2.39647580036050465, 0, -115.030838417304223, 0, 345.092515251912669, 0, 30.6748902446144595, 0, 0, 0, 0, 0, 0, 0, 0, -0.855884214414465945, 0, 0, 0, 191.718064028840372, 0, -306.748902446144595, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.855884214414465945, 0, 41.0824422918943654, 0, -191.718064028840372, 0, 153.374451223072297, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0.279530613895769685, 0, 0, -1.9567142972703878, 0, -13.4174694669969449, 0, 0, 0, 0, -6.14967350570693308, 0, 107.339755735975559, 0, 62.6148575126524095, 0, 0, 0, 0, 0, 0, -3.9134285945407756, 0, 187.844572537957229, 0, -563.533717613871686, 0, -50.0918860101219276, 0, 0, 0, 0, 0, 0, 0, 0, 1.39765306947884843, 0, 0, 0, -313.074287563262048, 0, 500.918860101219276, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.39765306947884843, 0, -67.0873473349847245, 0, 313.074287563262048, 0, -250.459430050609638, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, -1.9567142972703878, 0, 0, 0, 0, 5.87014289181116339, 0, 27.3940001617854292, 0, 0, 0, 0, 0, 0, 27.3940001617854292, 0, -109.576000647141717, 0, -65.74560038828503, 0, 0, 0, 0, 0, 0, 0, 0, 27.3940001617854292, 0, -273.940001617854292, 0, 328.72800194142515, 0, 31.3074287563262048, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5.87014289181116339, 0, -109.576000647141717, 0, 328.72800194142515, 0, -187.844572537957229, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1.9567142972703878, 0, 27.3940001617854292, 0, -65.74560038828503, 0, 31.3074287563262048, 0, 0, 0, 0, + + 0, 0, 2.86433643816841393, 0, 0, 0, 0, -8.5930093145052418, 0, -40.1007101343577951, 0, 0, 0, 0, 0, 0, -40.1007101343577951, 0, 160.40284053743118, 0, 96.2417043224587082, 0, 0, 0, 0, 0, 0, 0, 0, -40.1007101343577951, 0, 401.007101343577951, 0, -481.208521612293541, 0, -45.8293830106946229, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8.5930093145052418, 0, 160.40284053743118, 0, -481.208521612293541, 0, 274.976298064167738, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2.86433643816841393, 0, -40.1007101343577951, 0, 96.2417043224587082, 0, -45.8293830106946229, 0, 0, 0, 0, + 0.190955762544560929, 0, 0, 0.190955762544560929, 0, -10.693522702495412, 0, 0, 0, 0, -1.14573457526736557, 0, 0, 0, 64.1611362149724721, 0, 0, 0, 0, 0, 0, -2.673380675623853, 0, 64.1611362149724721, 0, -64.1611362149724721, 0, -85.5481816199632961, 0, 0, 0, 0, 0, 0, 0, 0, -2.10051338799017022, 0, 85.5481816199632961, 0, -320.805681074862361, 0, 171.096363239926592, 0, 24.4423376057037989, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.572867287633682787, 0, 32.0805681074862361, 0, -192.483408644917416, 0, 256.644544859889888, 0, -73.3270128171113967, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + -0.25261072955380536, 0, 0, -0.25261072955380536, 0, 14.1462008550131001, 0, 0, 0, 0, 1.51566437732283216, 0, 0, 0, -84.8772051300786008, 0, 0, 0, 0, 0, 0, 3.53655021375327503, 0, -84.8772051300786008, 0, 84.8772051300786008, 0, 113.169606840104801, 0, 0, 0, 0, 0, 0, 0, 0, 2.77871802509185895, 0, -113.169606840104801, 0, 424.386025650393004, 0, -226.339213680209602, 0, -32.334173382887086, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.757832188661416079, 0, -42.4386025650393004, 0, 254.631615390235802, 0, -339.508820520314403, 0, 97.0025201486612581, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 2.27349656598424824, 0, 0, 0, 0, 6.82048969795274471, 0, -36.3759450557479718, 0, 0, 0, 0, 0, 0, 4.54699313196849647, 0, -72.7518901114959435, 0, 109.127835167243915, 0, 0, 0, 0, 0, 0, 0, 0, -4.54699313196849647, 0, 0, 0, 109.127835167243915, 0, -83.1450172702810783, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -6.82048969795274471, 0, 72.7518901114959435, 0, -109.127835167243915, 0, 0, 0, 13.8575028783801797, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2.27349656598424824, 0, 36.3759450557479718, 0, -109.127835167243915, 0, 83.1450172702810783, 0, -13.8575028783801797, 0, 0, + + 0, 0, -2.73240281441583531, 0, 0, 0, 0, -8.19720844324750592, 0, 43.7184450306533649, 0, 0, 0, 0, 0, 0, -5.46480562883167061, 0, 87.4368900613067298, 0, -131.155335091960095, 0, 0, 0, 0, 0, 0, 0, 0, 5.46480562883167061, 0, 0, 0, -131.155335091960095, 0, 99.9278743557791198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8.19720844324750592, 0, -87.4368900613067298, 0, 131.155335091960095, 0, 0, 0, -16.6546457259631866, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2.73240281441583531, 0, -43.7184450306533649, 0, 131.155335091960095, 0, -99.9278743557791198, 0, 16.6546457259631866, 0, 0, + -0.210184831878141177, 0, 0, -1.05092415939070589, 0, 12.6110899126884706, 0, 0, 0, 0, -2.10184831878141177, 0, 50.4443596507538826, 0, -84.073932751256471, 0, 0, 0, 0, 0, 0, -2.10184831878141177, 0, 75.6665394761308239, 0, -252.221798253769413, 0, 134.518292402010354, 0, 0, 0, 0, 0, 0, 0, 0, -1.05092415939070589, 0, 50.4443596507538826, 0, -252.221798253769413, 0, 269.036584804020707, 0, -57.650696743718723, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.210184831878141177, 0, 12.6110899126884706, 0, -84.073932751256471, 0, 134.518292402010354, 0, -57.650696743718723, 0, 5.12450637721944204, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0.230245947330177705, 0, 0, 1.15122973665088853, 0, -13.8147568398106623, 0, 0, 0, 0, 2.30245947330177705, 0, -55.2590273592426493, 0, 92.0983789320710822, 0, 0, 0, 0, 0, 0, 2.30245947330177705, 0, -82.888541038863974, 0, 276.295136796213247, 0, -147.357406291313732, 0, 0, 0, 0, 0, 0, 0, 0, 1.15122973665088853, 0, -55.2590273592426493, 0, 276.295136796213247, 0, -294.714812582627463, 0, 63.1531741248487421, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.230245947330177705, 0, -13.8147568398106623, 0, 92.0983789320710822, 0, -147.357406291313732, 0, 63.1531741248487421, 0, -5.61361547776433263, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, -2.53270542063195476, 0, 0, 0, 0, -12.6635271031597738, 0, 42.2117570105325793, 0, 0, 0, 0, 0, 0, -25.3270542063195476, 0, 168.847028042130317, 0, -135.077622433704254, 0, 0, 0, 0, 0, 0, 0, 0, -25.3270542063195476, 0, 253.270542063195476, 0, -405.232867301112762, 0, 115.78081922888936, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -12.6635271031597738, 0, 168.847028042130317, 0, -405.232867301112762, 0, 231.561638457778721, 0, -25.7290709397531912, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2.53270542063195476, 0, 42.2117570105325793, 0, -135.077622433704254, 0, 115.78081922888936, 0, -25.7290709397531912, 0, 0.935602579627388772, + + 0, 0, 2.53270542063195476, 0, 0, 0, 0, 12.6635271031597738, 0, -42.2117570105325793, 0, 0, 0, 0, 0, 0, 25.3270542063195476, 0, -168.847028042130317, 0, 135.077622433704254, 0, 0, 0, 0, 0, 0, 0, 0, 25.3270542063195476, 0, -253.270542063195476, 0, 405.232867301112762, 0, -115.78081922888936, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12.6635271031597738, 0, -168.847028042130317, 0, 405.232867301112762, 0, -231.561638457778721, 0, 25.7290709397531912, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2.53270542063195476, 0, -42.2117570105325793, 0, 135.077622433704254, 0, -115.78081922888936, 0, 25.7290709397531912, 0, -0.935602579627388772, + 0.230245947330177705, 0, 0, 1.15122973665088853, 0, -13.8147568398106623, 0, 0, 0, 0, 2.30245947330177705, 0, -55.2590273592426493, 0, 92.0983789320710822, 0, 0, 0, 0, 0, 0, 2.30245947330177705, 0, -82.888541038863974, 0, 276.295136796213247, 0, -147.357406291313732, 0, 0, 0, 0, 0, 0, 0, 0, 1.15122973665088853, 0, -55.2590273592426493, 0, 276.295136796213247, 0, -294.714812582627463, 0, 63.1531741248487421, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.230245947330177705, 0, -13.8147568398106623, 0, 92.0983789320710822, 0, -147.357406291313732, 0, 63.1531741248487421, 0, -5.61361547776433263, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + -0.210184831878141177, 0, 0, -1.05092415939070589, 0, 12.6110899126884706, 0, 0, 0, 0, -2.10184831878141177, 0, 50.4443596507538826, 0, -84.073932751256471, 0, 0, 0, 0, 0, 0, -2.10184831878141177, 0, 75.6665394761308239, 0, -252.221798253769413, 0, 134.518292402010354, 0, 0, 0, 0, 0, 0, 0, 0, -1.05092415939070589, 0, 50.4443596507538826, 0, -252.221798253769413, 0, 269.036584804020707, 0, -57.650696743718723, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.210184831878141177, 0, 12.6110899126884706, 0, -84.073932751256471, 0, 134.518292402010354, 0, -57.650696743718723, 0, 5.12450637721944204, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 2.73240281441583531, 0, 0, 0, 0, 8.19720844324750592, 0, -43.7184450306533649, 0, 0, 0, 0, 0, 0, 5.46480562883167061, 0, -87.4368900613067298, 0, 131.155335091960095, 0, 0, 0, 0, 0, 0, 0, 0, -5.46480562883167061, 0, 0, 0, 131.155335091960095, 0, -99.9278743557791198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8.19720844324750592, 0, 87.4368900613067298, 0, -131.155335091960095, 0, 0, 0, 16.6546457259631866, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2.73240281441583531, 0, 43.7184450306533649, 0, -131.155335091960095, 0, 99.9278743557791198, 0, -16.6546457259631866, 0, 0, + + 0, 0, -2.27349656598424824, 0, 0, 0, 0, -6.82048969795274471, 0, 36.3759450557479718, 0, 0, 0, 0, 0, 0, -4.54699313196849647, 0, 72.7518901114959435, 0, -109.127835167243915, 0, 0, 0, 0, 0, 0, 0, 0, 4.54699313196849647, 0, 0, 0, -109.127835167243915, 0, 83.1450172702810783, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6.82048969795274471, 0, -72.7518901114959435, 0, 109.127835167243915, 0, 0, 0, -13.8575028783801797, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2.27349656598424824, 0, -36.3759450557479718, 0, 109.127835167243915, 0, -83.1450172702810783, 0, 13.8575028783801797, 0, 0, + -0.25261072955380536, 0, 0, -0.25261072955380536, 0, 14.1462008550131001, 0, 0, 0, 0, 1.51566437732283216, 0, 0, 0, -84.8772051300786008, 0, 0, 0, 0, 0, 0, 3.53655021375327503, 0, -84.8772051300786008, 0, 84.8772051300786008, 0, 113.169606840104801, 0, 0, 0, 0, 0, 0, 0, 0, 2.77871802509185895, 0, -113.169606840104801, 0, 424.386025650393004, 0, -226.339213680209602, 0, -32.334173382887086, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.757832188661416079, 0, -42.4386025650393004, 0, 254.631615390235802, 0, -339.508820520314403, 0, 97.0025201486612581, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0.190955762544560929, 0, 0, 0.190955762544560929, 0, -10.693522702495412, 0, 0, 0, 0, -1.14573457526736557, 0, 0, 0, 64.1611362149724721, 0, 0, 0, 0, 0, 0, -2.673380675623853, 0, 64.1611362149724721, 0, -64.1611362149724721, 0, -85.5481816199632961, 0, 0, 0, 0, 0, 0, 0, 0, -2.10051338799017022, 0, 85.5481816199632961, 0, -320.805681074862361, 0, 171.096363239926592, 0, 24.4423376057037989, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.572867287633682787, 0, 32.0805681074862361, 0, -192.483408644917416, 0, 256.644544859889888, 0, -73.3270128171113967, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, -2.86433643816841393, 0, 0, 0, 0, 8.5930093145052418, 0, 40.1007101343577951, 0, 0, 0, 0, 0, 0, 40.1007101343577951, 0, -160.40284053743118, 0, -96.2417043224587082, 0, 0, 0, 0, 0, 0, 0, 0, 40.1007101343577951, 0, -401.007101343577951, 0, 481.208521612293541, 0, 45.8293830106946229, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8.5930093145052418, 0, -160.40284053743118, 0, 481.208521612293541, 0, -274.976298064167738, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2.86433643816841393, 0, 40.1007101343577951, 0, -96.2417043224587082, 0, 45.8293830106946229, 0, 0, 0, 0, + + 0, 0, 1.9567142972703878, 0, 0, 0, 0, -5.87014289181116339, 0, -27.3940001617854292, 0, 0, 0, 0, 0, 0, -27.3940001617854292, 0, 109.576000647141717, 0, 65.74560038828503, 0, 0, 0, 0, 0, 0, 0, 0, -27.3940001617854292, 0, 273.940001617854292, 0, -328.72800194142515, 0, -31.3074287563262048, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -5.87014289181116339, 0, 109.576000647141717, 0, -328.72800194142515, 0, 187.844572537957229, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.9567142972703878, 0, -27.3940001617854292, 0, 65.74560038828503, 0, -31.3074287563262048, 0, 0, 0, 0, + 0.279530613895769685, 0, 0, -1.9567142972703878, 0, -13.4174694669969449, 0, 0, 0, 0, -6.14967350570693308, 0, 107.339755735975559, 0, 62.6148575126524095, 0, 0, 0, 0, 0, 0, -3.9134285945407756, 0, 187.844572537957229, 0, -563.533717613871686, 0, -50.0918860101219276, 0, 0, 0, 0, 0, 0, 0, 0, 1.39765306947884843, 0, 0, 0, -313.074287563262048, 0, 500.918860101219276, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.39765306947884843, 0, -67.0873473349847245, 0, 313.074287563262048, 0, -250.459430050609638, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + -0.171176842882893189, 0, 0, 1.19823790018025232, 0, 8.21648845837887307, 0, 0, 0, 0, 3.76589054342365016, 0, -65.7319076670309846, 0, -38.3436128057680743, 0, 0, 0, 0, 0, 0, 2.39647580036050465, 0, -115.030838417304223, 0, 345.092515251912669, 0, 30.6748902446144595, 0, 0, 0, 0, 0, 0, 0, 0, -0.855884214414465945, 0, 0, 0, 191.718064028840372, 0, -306.748902446144595, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.855884214414465945, 0, 41.0824422918943654, 0, -191.718064028840372, 0, 153.374451223072297, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 2.91000632900918421, 0, 0, 0, 0, -37.8300822771193948, 0, -31.0400675094312983, 0, 0, 0, 0, 0, 0, -40.740088606128579, 0, 434.560945132038176, 0, 43.4560945132038176, 0, 0, 0, 0, 0, 0, 0, 0, 40.740088606128579, 0, 0, 0, -651.841417698057264, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37.8300822771193948, 0, -434.560945132038176, 0, 651.841417698057264, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2.91000632900918421, 0, 31.0400675094312983, 0, -43.4560945132038176, 0, 0, 0, 0, 0, 0, + + 0, 0, -1.57817251301787333, 0, 0, 0, 0, 20.5162426692323532, 0, 16.8338401388573155, 0, 0, 0, 0, 0, 0, 22.0944151822502266, 0, -235.673761944002417, 0, -23.5673761944002417, 0, 0, 0, 0, 0, 0, 0, 0, -22.0944151822502266, 0, 0, 0, 353.510642916003625, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -20.5162426692323532, 0, 235.673761944002417, 0, -353.510642916003625, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.57817251301787333, 0, -16.8338401388573155, 0, 23.5673761944002417, 0, 0, 0, 0, 0, 0, + -0.315634502603574665, 0, 0, 5.99705554946791864, 0, 11.3628420937286879, 0, 0, 0, 0, 1.89380701562144799, 0, -227.256841874573759, 0, -30.3009122499431679, 0, 0, 0, 0, 0, 0, -13.2566491093501359, 0, 159.079789312201631, 0, 636.319157248806525, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -6.62832455467506797, 0, 318.159578624403263, 0, -1060.53192874801088, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2.20944151822502266, 0, -79.5398946561008156, 0, 212.106385749602175, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0.148791531444953757, 0, 0, -2.82703909745412139, 0, -5.35649513201833526, 0, 0, 0, 0, -0.892749188669722543, 0, 107.129902640366705, 0, 14.2839870187155607, 0, 0, 0, 0, 0, 0, 6.2492443206880578, 0, -74.9909318482566936, 0, -299.963727393026774, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3.1246221603440289, 0, -149.981863696513387, 0, 499.939545655044624, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1.0415407201146763, 0, 37.4954659241283468, 0, -99.9879091310089248, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, -2.82703909745412139, 0, 0, 0, 0, 76.3300556312612774, 0, 16.9622345847247283, 0, 0, 0, 0, 0, 0, -118.735642093073098, 0, -474.942568372292393, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -118.735642093073098, 0, 1187.35642093073098, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76.3300556312612774, 0, -474.942568372292393, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2.82703909745412139, 0, 16.9622345847247283, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 1.12335142777978244, 0, 0, 0, 0, -30.330488550054126, 0, -6.74010856667869467, 0, 0, 0, 0, 0, 0, 47.1807599667508627, 0, 188.723039867003451, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47.1807599667508627, 0, -471.807599667508627, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -30.330488550054126, 0, 188.723039867003451, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.12335142777978244, 0, -6.74010856667869467, 0, 0, 0, 0, 0, 0, 0, 0, + 0.374450475926594148, 0, 0, -13.1057666574307952, 0, -7.48900951853188297, 0, 0, 0, 0, 33.7005428333934733, 0, 269.604342667147787, 0, 0, 0, 0, 0, 0, 0, 0, 15.7269199889169542, 0, -943.615199335017254, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -28.0837856944945611, 0, 629.076799556678169, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3.37005428333934733, 0, -67.4010856667869467, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + -0.11841163748620862, 0, 0, 4.14440731201730169, 0, 2.36823274972417239, 0, 0, 0, 0, -10.6570473737587758, 0, -85.2563789900702061, 0, 0, 0, 0, 0, 0, 0, 0, -4.97328877442076202, 0, 298.397326465245721, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8.88087281146564647, 0, -198.931550976830481, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1.06570473737587758, 0, 21.3140947475175515, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 2.48664438721038101, 0, 0, 0, 0, -111.898997424467146, 0, 0, 0, 0, 0, 0, 0, 0, 522.195321314180012, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -522.195321314180012, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 111.898997424467146, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2.48664438721038101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, -0.542630291944221461, 0, 0, 0, 0, 24.4183631374899657, 0, 0, 0, 0, 0, 0, 0, 0, -113.952361308286507, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 113.952361308286507, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -24.4183631374899657, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.542630291944221461, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + -0.542630291944221461, 0, 0, 29.8446660569321803, 0, 0, 0, 0, 0, 0, -179.067996341593082, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250.695194878230315, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -89.533998170796541, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5.96893321138643607, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0.554825753806619302, 0, 0, -30.5154164593640616, 0, 0, 0, 0, 0, 0, 183.09249875618437, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -256.329498258658117, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 91.5462493780921848, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -6.10308329187281232, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0.115689166958762041, 0, 0, -6.36290418273191227, 0, 0, 0, 0, 0, 0, 38.1774250963914736, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -53.4483951349480631, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19.0887125481957368, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1.27258083654638245, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 2.54516167309276491, 0, 0, 0, 0, -114.532275289174421, 0, 0, 0, 0, 0, 0, 0, 0, 534.483951349480631, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -534.483951349480631, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 114.532275289174421, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2.54516167309276491, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 0.767395118221990013, 0, 0, 0, 0, -34.5327803199895506, 0, 0, 0, 0, 0, 0, 0, 0, 161.152974826617903, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -161.152974826617903, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34.5327803199895506, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.767395118221990013, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + -0.383697559110995006, 0, 0, 13.4294145688848252, 0, 7.67395118221990013, 0, 0, 0, 0, -34.5327803199895506, 0, -276.262242559916405, 0, 0, 0, 0, 0, 0, 0, 0, -16.1152974826617903, 0, 966.917848959707416, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28.7773169333246255, 0, -644.611899306471611, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -3.45327803199895506, 0, 69.0655606399791011, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + -0.145024045724314041, 0, 0, 5.07584160035099142, 0, 2.90048091448628081, 0, 0, 0, 0, -13.0521641151882637, 0, -104.417312921506109, 0, 0, 0, 0, 0, 0, 0, 0, -6.09100992042118971, 0, 365.460595225271382, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10.876803429323553, 0, -243.640396816847588, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1.30521641151882637, 0, 26.1043282303765273, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, -2.90048091448628081, 0, 0, 0, 0, 78.3129846911295819, 0, 17.4028854869176849, 0, 0, 0, 0, 0, 0, -121.820198408423794, 0, -487.280793633695176, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -121.820198408423794, 0, 1218.20198408423794, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 78.3129846911295819, 0, -487.280793633695176, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2.90048091448628081, 0, 17.4028854869176849, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, -1.29713449844641568, 0, 0, 0, 0, 35.0226314580532234, 0, 7.78280699067849409, 0, 0, 0, 0, 0, 0, -54.4796489347494586, 0, -217.918595738997834, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -54.4796489347494586, 0, 544.796489347494586, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35.0226314580532234, 0, -217.918595738997834, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1.29713449844641568, 0, 7.78280699067849409, 0, 0, 0, 0, 0, 0, 0, 0, + 0.32428362461160392, 0, 0, -6.16138886762047449, 0, -11.6742104860177411, 0, 0, 0, 0, -1.94570174766962352, 0, 233.484209720354823, 0, 31.1312279627139763, 0, 0, 0, 0, 0, 0, 13.6199122336873647, 0, -163.438946804248376, 0, -653.755787216993503, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6.80995611684368233, 0, -326.877893608496752, 0, 1089.59297869498917, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2.26998537228122744, 0, 81.7194734021241879, 0, -217.918595738997834, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0.166353989393607054, 0, 0, -3.16072579847853403, 0, -5.98874361816985396, 0, 0, 0, 0, -0.998123936361642327, 0, 119.774872363397079, 0, 15.9699829817862772, 0, 0, 0, 0, 0, 0, 6.98686755453149629, 0, -83.8424106543779555, 0, -335.369642617511822, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3.49343377726574814, 0, -167.684821308755911, 0, 558.949404362519703, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1.16447792575524938, 0, 41.9212053271889777, 0, -111.789880872503941, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 2.99437180908492698, 0, 0, 0, 0, -38.9268335181040507, 0, -31.9399659635725545, 0, 0, 0, 0, 0, 0, -41.9212053271889777, 0, 447.159523490015762, 0, 44.7159523490015762, 0, 0, 0, 0, 0, 0, 0, 0, 41.9212053271889777, 0, 0, 0, -670.739285235023644, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38.9268335181040507, 0, -447.159523490015762, 0, 670.739285235023644, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2.99437180908492698, 0, 31.9399659635725545, 0, -44.7159523490015762, 0, 0, 0, 0, 0, 0, + + 0, 0, 1.72880137002900928, 0, 0, 0, 0, -22.4744178103771206, 0, -18.440547946976099, 0, 0, 0, 0, 0, 0, -24.2032191804061299, 0, 258.167671257665386, 0, 25.8167671257665386, 0, 0, 0, 0, 0, 0, 0, 0, 24.2032191804061299, 0, 0, 0, -387.251506886498079, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22.4744178103771206, 0, -258.167671257665386, 0, 387.251506886498079, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1.72880137002900928, 0, 18.440547946976099, 0, -25.8167671257665386, 0, 0, 0, 0, 0, 0, + -0.288133561671501547, 0, 0, 2.01693493170051083, 0, 13.8304109602320742, 0, 0, 0, 0, 6.33893835677303403, 0, -110.643287681856594, 0, -64.5419178144163464, 0, 0, 0, 0, 0, 0, 4.03386986340102165, 0, -193.625753443249039, 0, 580.877260329747118, 0, 51.6335342515330771, 0, 0, 0, 0, 0, 0, 0, 0, -1.44066780835750773, 0, 0, 0, 322.709589072081732, 0, -516.335342515330771, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1.44066780835750773, 0, 69.1520548011603712, 0, -322.709589072081732, 0, 258.167671257665386, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + -0.184892122049355627, 0, 0, 1.29424485434548939, 0, 8.87482185836907012, 0, 0, 0, 0, 4.0676266850858238, 0, -70.998574866952561, 0, -41.4158353390556606, 0, 0, 0, 0, 0, 0, 2.58848970869097878, 0, -124.247506017166982, 0, 372.742518051500945, 0, 33.1326682712445284, 0, 0, 0, 0, 0, 0, 0, 0, -0.924460610246778137, 0, 0, 0, 207.079176695278303, 0, -331.326682712445284, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.924460610246778137, 0, 44.3741092918453506, 0, -207.079176695278303, 0, 165.663341356222642, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, -2.95827395278969004, 0, 0, 0, 0, 8.87482185836907012, 0, 41.4158353390556606, 0, 0, 0, 0, 0, 0, 41.4158353390556606, 0, -165.663341356222642, 0, -99.3980048137335853, 0, 0, 0, 0, 0, 0, 0, 0, 41.4158353390556606, 0, -414.158353390556606, 0, 496.990024068667927, 0, 47.3323832446350406, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8.87482185836907012, 0, -165.663341356222642, 0, 496.990024068667927, 0, -283.994299467810244, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2.95827395278969004, 0, 41.4158353390556606, 0, -99.3980048137335853, 0, 47.3323832446350406, 0, 0, 0, 0, + + 0, 0, -2.09181557262512238, 0, 0, 0, 0, 6.27544671787536713, 0, 29.2854180167517133, 0, 0, 0, 0, 0, 0, 29.2854180167517133, 0, -117.141672067006853, 0, -70.2850032402041119, 0, 0, 0, 0, 0, 0, 0, 0, 29.2854180167517133, 0, -292.854180167517133, 0, 351.425016201020559, 0, 33.469049162001958, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6.27544671787536713, 0, -117.141672067006853, 0, 351.425016201020559, 0, -200.814294972011748, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2.09181557262512238, 0, 29.2854180167517133, 0, -70.2850032402041119, 0, 33.469049162001958, 0, 0, 0, 0, + 0.261476946578140297, 0, 0, 0.261476946578140297, 0, -14.6427090083758566, 0, 0, 0, 0, -1.56886167946884178, 0, 0, 0, 87.8562540502551398, 0, 0, 0, 0, 0, 0, -3.66067725209396416, 0, 87.8562540502551398, 0, -87.8562540502551398, 0, -117.141672067006853, 0, 0, 0, 0, 0, 0, 0, 0, -2.87624641235954327, 0, 117.141672067006853, 0, -439.281270251275699, 0, 234.283344134013706, 0, 33.469049162001958, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.784430839734420891, 0, 43.9281270251275699, 0, -263.568762150765419, 0, 351.425016201020559, 0, -100.407147486005874, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0.202539171902860758, 0, 0, 0.202539171902860758, 0, -11.3421936265602025, 0, 0, 0, 0, -1.21523503141716455, 0, 0, 0, 68.0531617593612148, 0, 0, 0, 0, 0, 0, -2.83554840664005062, 0, 68.0531617593612148, 0, -68.0531617593612148, 0, -90.7375490124816198, 0, 0, 0, 0, 0, 0, 0, 0, -2.22793089093146834, 0, 90.7375490124816198, 0, -340.265808796806074, 0, 181.47509802496324, 0, 25.9250140035661771, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.607617515708582275, 0, 34.0265808796806074, 0, -204.159485278083644, 0, 272.212647037444859, 0, -77.7750420106985312, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 2.83554840664005062, 0, 0, 0, 0, 8.50664521992015185, 0, -45.3687745062408099, 0, 0, 0, 0, 0, 0, 5.67109681328010124, 0, -90.7375490124816198, 0, 136.10632351872243, 0, 0, 0, 0, 0, 0, 0, 0, -5.67109681328010124, 0, 0, 0, 136.10632351872243, 0, -103.700056014264708, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8.50664521992015185, 0, 90.7375490124816198, 0, -136.10632351872243, 0, 0, 0, 17.2833426690441181, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2.83554840664005062, 0, 45.3687745062408099, 0, -136.10632351872243, 0, 103.700056014264708, 0, -17.2833426690441181, 0, 0, + + 0, 0, 2.39647580036050465, 0, 0, 0, 0, 7.18942740108151394, 0, -38.3436128057680743, 0, 0, 0, 0, 0, 0, 4.79295160072100929, 0, -76.6872256115361487, 0, 115.030838417304223, 0, 0, 0, 0, 0, 0, 0, 0, -4.79295160072100929, 0, 0, 0, 115.030838417304223, 0, -87.6425435560413128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7.18942740108151394, 0, 76.6872256115361487, 0, -115.030838417304223, 0, 0, 0, 14.6070905926735521, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2.39647580036050465, 0, 38.3436128057680743, 0, -115.030838417304223, 0, 87.6425435560413128, 0, -14.6070905926735521, 0, 0, + -0.239647580036050465, 0, 0, -1.19823790018025232, 0, 14.3788548021630279, 0, 0, 0, 0, -2.39647580036050465, 0, 57.5154192086521115, 0, -95.8590320144201859, 0, 0, 0, 0, 0, 0, -2.39647580036050465, 0, 86.2731288129781673, 0, -287.577096043260558, 0, 153.374451223072297, 0, 0, 0, 0, 0, 0, 0, 0, -1.19823790018025232, 0, 57.5154192086521115, 0, -287.577096043260558, 0, 306.748902446144595, 0, -65.7319076670309846, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.239647580036050465, 0, 14.3788548021630279, 0, -95.8590320144201859, 0, 153.374451223072297, 0, -65.7319076670309846, 0, 5.84283623706942085, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + -0.220443711424950199, 0, 0, -1.10221855712475099, 0, 13.2266226854970119, 0, 0, 0, 0, -2.20443711424950199, 0, 52.9064907419880478, 0, -88.1774845699800796, 0, 0, 0, 0, 0, 0, -2.20443711424950199, 0, 79.3597361129820716, 0, -264.532453709940239, 0, 141.083975311968127, 0, 0, 0, 0, 0, 0, 0, 0, -1.10221855712475099, 0, 52.9064907419880478, 0, -264.532453709940239, 0, 282.167950623936255, 0, -60.4645608479863403, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.220443711424950199, 0, 13.2266226854970119, 0, -88.1774845699800796, 0, 141.083975311968127, 0, -60.4645608479863403, 0, 5.37462763093211914, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, -2.64532453709940239, 0, 0, 0, 0, -13.2266226854970119, 0, 44.0887422849900398, 0, 0, 0, 0, 0, 0, -26.4532453709940239, 0, 176.354969139960159, 0, -141.083975311968127, 0, 0, 0, 0, 0, 0, 0, 0, -26.4532453709940239, 0, 264.532453709940239, 0, -423.251925935904382, 0, 120.929121695972681, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -13.2266226854970119, 0, 176.354969139960159, 0, -423.251925935904382, 0, 241.858243391945361, 0, -26.8731381546605957, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2.64532453709940239, 0, 44.0887422849900398, 0, -141.083975311968127, 0, 120.929121695972681, 0, -26.8731381546605957, 0, 0.977205023805839843, + + 0, 0, -2.64532453709940239, 0, 0, 0, 0, -13.2266226854970119, 0, 44.0887422849900398, 0, 0, 0, 0, 0, 0, -26.4532453709940239, 0, 176.354969139960159, 0, -141.083975311968127, 0, 0, 0, 0, 0, 0, 0, 0, -26.4532453709940239, 0, 264.532453709940239, 0, -423.251925935904382, 0, 120.929121695972681, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -13.2266226854970119, 0, 176.354969139960159, 0, -423.251925935904382, 0, 241.858243391945361, 0, -26.8731381546605957, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2.64532453709940239, 0, 44.0887422849900398, 0, -141.083975311968127, 0, 120.929121695972681, 0, -26.8731381546605957, 0, 0.977205023805839843, + 0.220443711424950199, 0, 0, 1.10221855712475099, 0, -13.2266226854970119, 0, 0, 0, 0, 2.20443711424950199, 0, -52.9064907419880478, 0, 88.1774845699800796, 0, 0, 0, 0, 0, 0, 2.20443711424950199, 0, -79.3597361129820716, 0, 264.532453709940239, 0, -141.083975311968127, 0, 0, 0, 0, 0, 0, 0, 0, 1.10221855712475099, 0, -52.9064907419880478, 0, 264.532453709940239, 0, -282.167950623936255, 0, 60.4645608479863403, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.220443711424950199, 0, -13.2266226854970119, 0, 88.1774845699800796, 0, -141.083975311968127, 0, 60.4645608479863403, 0, -5.37462763093211914, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0.239647580036050465, 0, 0, 1.19823790018025232, 0, -14.3788548021630279, 0, 0, 0, 0, 2.39647580036050465, 0, -57.5154192086521115, 0, 95.8590320144201859, 0, 0, 0, 0, 0, 0, 2.39647580036050465, 0, -86.2731288129781673, 0, 287.577096043260558, 0, -153.374451223072297, 0, 0, 0, 0, 0, 0, 0, 0, 1.19823790018025232, 0, -57.5154192086521115, 0, 287.577096043260558, 0, -306.748902446144595, 0, 65.7319076670309846, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.239647580036050465, 0, -14.3788548021630279, 0, 95.8590320144201859, 0, -153.374451223072297, 0, 65.7319076670309846, 0, -5.84283623706942085, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 2.39647580036050465, 0, 0, 0, 0, 7.18942740108151394, 0, -38.3436128057680743, 0, 0, 0, 0, 0, 0, 4.79295160072100929, 0, -76.6872256115361487, 0, 115.030838417304223, 0, 0, 0, 0, 0, 0, 0, 0, -4.79295160072100929, 0, 0, 0, 115.030838417304223, 0, -87.6425435560413128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7.18942740108151394, 0, 76.6872256115361487, 0, -115.030838417304223, 0, 0, 0, 14.6070905926735521, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2.39647580036050465, 0, 38.3436128057680743, 0, -115.030838417304223, 0, 87.6425435560413128, 0, -14.6070905926735521, 0, 0, + + 0, 0, 2.83554840664005062, 0, 0, 0, 0, 8.50664521992015185, 0, -45.3687745062408099, 0, 0, 0, 0, 0, 0, 5.67109681328010124, 0, -90.7375490124816198, 0, 136.10632351872243, 0, 0, 0, 0, 0, 0, 0, 0, -5.67109681328010124, 0, 0, 0, 136.10632351872243, 0, -103.700056014264708, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8.50664521992015185, 0, 90.7375490124816198, 0, -136.10632351872243, 0, 0, 0, 17.2833426690441181, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2.83554840664005062, 0, 45.3687745062408099, 0, -136.10632351872243, 0, 103.700056014264708, 0, -17.2833426690441181, 0, 0, + -0.202539171902860758, 0, 0, -0.202539171902860758, 0, 11.3421936265602025, 0, 0, 0, 0, 1.21523503141716455, 0, 0, 0, -68.0531617593612148, 0, 0, 0, 0, 0, 0, 2.83554840664005062, 0, -68.0531617593612148, 0, 68.0531617593612148, 0, 90.7375490124816198, 0, 0, 0, 0, 0, 0, 0, 0, 2.22793089093146834, 0, -90.7375490124816198, 0, 340.265808796806074, 0, -181.47509802496324, 0, -25.9250140035661771, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.607617515708582275, 0, -34.0265808796806074, 0, 204.159485278083644, 0, -272.212647037444859, 0, 77.7750420106985312, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + -0.261476946578140297, 0, 0, -0.261476946578140297, 0, 14.6427090083758566, 0, 0, 0, 0, 1.56886167946884178, 0, 0, 0, -87.8562540502551398, 0, 0, 0, 0, 0, 0, 3.66067725209396416, 0, -87.8562540502551398, 0, 87.8562540502551398, 0, 117.141672067006853, 0, 0, 0, 0, 0, 0, 0, 0, 2.87624641235954327, 0, -117.141672067006853, 0, 439.281270251275699, 0, -234.283344134013706, 0, -33.469049162001958, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.784430839734420891, 0, -43.9281270251275699, 0, 263.568762150765419, 0, -351.425016201020559, 0, 100.407147486005874, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, -2.09181557262512238, 0, 0, 0, 0, 6.27544671787536713, 0, 29.2854180167517133, 0, 0, 0, 0, 0, 0, 29.2854180167517133, 0, -117.141672067006853, 0, -70.2850032402041119, 0, 0, 0, 0, 0, 0, 0, 0, 29.2854180167517133, 0, -292.854180167517133, 0, 351.425016201020559, 0, 33.469049162001958, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6.27544671787536713, 0, -117.141672067006853, 0, 351.425016201020559, 0, -200.814294972011748, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2.09181557262512238, 0, 29.2854180167517133, 0, -70.2850032402041119, 0, 33.469049162001958, 0, 0, 0, 0, + + 0, 0, -2.95827395278969004, 0, 0, 0, 0, 8.87482185836907012, 0, 41.4158353390556606, 0, 0, 0, 0, 0, 0, 41.4158353390556606, 0, -165.663341356222642, 0, -99.3980048137335853, 0, 0, 0, 0, 0, 0, 0, 0, 41.4158353390556606, 0, -414.158353390556606, 0, 496.990024068667927, 0, 47.3323832446350406, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8.87482185836907012, 0, -165.663341356222642, 0, 496.990024068667927, 0, -283.994299467810244, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2.95827395278969004, 0, 41.4158353390556606, 0, -99.3980048137335853, 0, 47.3323832446350406, 0, 0, 0, 0, + 0.184892122049355627, 0, 0, -1.29424485434548939, 0, -8.87482185836907012, 0, 0, 0, 0, -4.0676266850858238, 0, 70.998574866952561, 0, 41.4158353390556606, 0, 0, 0, 0, 0, 0, -2.58848970869097878, 0, 124.247506017166982, 0, -372.742518051500945, 0, -33.1326682712445284, 0, 0, 0, 0, 0, 0, 0, 0, 0.924460610246778137, 0, 0, 0, -207.079176695278303, 0, 331.326682712445284, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.924460610246778137, 0, -44.3741092918453506, 0, 207.079176695278303, 0, -165.663341356222642, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0.288133561671501547, 0, 0, -2.01693493170051083, 0, -13.8304109602320742, 0, 0, 0, 0, -6.33893835677303403, 0, 110.643287681856594, 0, 64.5419178144163464, 0, 0, 0, 0, 0, 0, -4.03386986340102165, 0, 193.625753443249039, 0, -580.877260329747118, 0, -51.6335342515330771, 0, 0, 0, 0, 0, 0, 0, 0, 1.44066780835750773, 0, 0, 0, -322.709589072081732, 0, 516.335342515330771, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.44066780835750773, 0, -69.1520548011603712, 0, 322.709589072081732, 0, -258.167671257665386, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1.72880137002900928, 0, 0, 0, 0, -22.4744178103771206, 0, -18.440547946976099, 0, 0, 0, 0, 0, 0, -24.2032191804061299, 0, 258.167671257665386, 0, 25.8167671257665386, 0, 0, 0, 0, 0, 0, 0, 0, 24.2032191804061299, 0, 0, 0, -387.251506886498079, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22.4744178103771206, 0, -258.167671257665386, 0, 387.251506886498079, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1.72880137002900928, 0, 18.440547946976099, 0, -25.8167671257665386, 0, 0, 0, 0, 0, 0, + + 0, 0, 2.99437180908492698, 0, 0, 0, 0, -38.9268335181040507, 0, -31.9399659635725545, 0, 0, 0, 0, 0, 0, -41.9212053271889777, 0, 447.159523490015762, 0, 44.7159523490015762, 0, 0, 0, 0, 0, 0, 0, 0, 41.9212053271889777, 0, 0, 0, -670.739285235023644, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38.9268335181040507, 0, -447.159523490015762, 0, 670.739285235023644, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2.99437180908492698, 0, 31.9399659635725545, 0, -44.7159523490015762, 0, 0, 0, 0, 0, 0, + -0.166353989393607054, 0, 0, 3.16072579847853403, 0, 5.98874361816985396, 0, 0, 0, 0, 0.998123936361642327, 0, -119.774872363397079, 0, -15.9699829817862772, 0, 0, 0, 0, 0, 0, -6.98686755453149629, 0, 83.8424106543779555, 0, 335.369642617511822, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -3.49343377726574814, 0, 167.684821308755911, 0, -558.949404362519703, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.16447792575524938, 0, -41.9212053271889777, 0, 111.789880872503941, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + -0.32428362461160392, 0, 0, 6.16138886762047449, 0, 11.6742104860177411, 0, 0, 0, 0, 1.94570174766962352, 0, -233.484209720354823, 0, -31.1312279627139763, 0, 0, 0, 0, 0, 0, -13.6199122336873647, 0, 163.438946804248376, 0, 653.755787216993503, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -6.80995611684368233, 0, 326.877893608496752, 0, -1089.59297869498917, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2.26998537228122744, 0, -81.7194734021241879, 0, 217.918595738997834, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, -1.29713449844641568, 0, 0, 0, 0, 35.0226314580532234, 0, 7.78280699067849409, 0, 0, 0, 0, 0, 0, -54.4796489347494586, 0, -217.918595738997834, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -54.4796489347494586, 0, 544.796489347494586, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35.0226314580532234, 0, -217.918595738997834, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1.29713449844641568, 0, 7.78280699067849409, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, -2.90048091448628081, 0, 0, 0, 0, 78.3129846911295819, 0, 17.4028854869176849, 0, 0, 0, 0, 0, 0, -121.820198408423794, 0, -487.280793633695176, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -121.820198408423794, 0, 1218.20198408423794, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 78.3129846911295819, 0, -487.280793633695176, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2.90048091448628081, 0, 17.4028854869176849, 0, 0, 0, 0, 0, 0, 0, 0, + 0.145024045724314041, 0, 0, -5.07584160035099142, 0, -2.90048091448628081, 0, 0, 0, 0, 13.0521641151882637, 0, 104.417312921506109, 0, 0, 0, 0, 0, 0, 0, 0, 6.09100992042118971, 0, -365.460595225271382, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -10.876803429323553, 0, 243.640396816847588, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.30521641151882637, 0, -26.1043282303765273, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0.383697559110995006, 0, 0, -13.4294145688848252, 0, -7.67395118221990013, 0, 0, 0, 0, 34.5327803199895506, 0, 276.262242559916405, 0, 0, 0, 0, 0, 0, 0, 0, 16.1152974826617903, 0, -966.917848959707416, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -28.7773169333246255, 0, 644.611899306471611, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3.45327803199895506, 0, -69.0655606399791011, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0.767395118221990013, 0, 0, 0, 0, -34.5327803199895506, 0, 0, 0, 0, 0, 0, 0, 0, 161.152974826617903, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -161.152974826617903, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34.5327803199895506, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.767395118221990013, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 2.54516167309276491, 0, 0, 0, 0, -114.532275289174421, 0, 0, 0, 0, 0, 0, 0, 0, 534.483951349480631, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -534.483951349480631, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 114.532275289174421, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2.54516167309276491, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + -0.115689166958762041, 0, 0, 6.36290418273191227, 0, 0, 0, 0, 0, 0, -38.1774250963914736, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53.4483951349480631, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -19.0887125481957368, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.27258083654638245, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + -0.554825753806619302, 0, 0, 30.5154164593640616, 0, 0, 0, 0, 0, 0, -183.09249875618437, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 256.329498258658117, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -91.5462493780921848, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6.10308329187281232, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + -0.554825753806619302, 0, 0, 36.6184997512368739, 0, 0, 0, 0, 0, 0, -274.638748134276554, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 512.658996517316235, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -274.638748134276554, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36.6184997512368739, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.554825753806619302, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0.554825753806619302, 0, 0, 0, 0, -30.5154164593640616, 0, 0, 0, 0, 0, 0, 0, 0, 183.09249875618437, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -256.329498258658117, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 91.5462493780921848, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -6.10308329187281232, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, -2.66085084005152695, 0, 0, 0, 0, 146.346796202833982, 0, 0, 0, 0, 0, 0, 0, 0, -878.080777217003893, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1229.31308810380545, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -439.040388608501947, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29.2693592405667964, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + -0.115689166958762041, 0, 0, 5.09032334618552982, 0, 2.54516167309276491, 0, 0, 0, 0, -19.0887125481957368, 0, -114.532275289174421, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 534.483951349480631, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19.0887125481957368, 0, -534.483951349480631, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -5.09032334618552982, 0, 114.532275289174421, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.115689166958762041, 0, -2.54516167309276491, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0.383697559110995006, 0, 0, -16.8826926008837803, 0, -8.44134630044189014, 0, 0, 0, 0, 63.310097253314176, 0, 379.860583519885056, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1772.68272309279693, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -63.310097253314176, 0, 1772.68272309279693, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16.8826926008837803, 0, -379.860583519885056, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.383697559110995006, 0, 8.44134630044189014, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, -1.15109267733298502, 0, 0, 0, 0, 40.2882437066544757, 0, 7.67395118221990013, 0, 0, 0, 0, 0, 0, -103.598340959968652, 0, -276.262242559916405, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -48.3458924479853708, 0, 966.917848959707416, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86.3319507999738764, 0, -644.611899306471611, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -10.3598340959968652, 0, 69.0655606399791011, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 3.04550496021059485, 0, 0, 0, 0, -106.59267360737082, 0, -20.3033664014039657, 0, 0, 0, 0, 0, 0, 274.095446418953537, 0, 730.921190450542765, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 127.911208328844984, 0, -2558.22416657689968, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -228.412872015794614, 0, 1705.48277771793312, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27.4095446418953537, 0, -182.730297612635691, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0.145024045724314041, 0, 0, -3.77062518883216506, 0, -5.80096182897256162, 0, 0, 0, 0, 2.17536068586471061, 0, 156.625969382259164, 0, 17.4028854869176849, 0, 0, 0, 0, 0, 0, 12.1820198408423794, 0, -243.640396816847588, 0, -487.280793633695176, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2.17536068586471061, 0, -243.640396816847588, 0, 1218.20198408423794, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -3.77062518883216506, 0, 156.625969382259164, 0, -487.280793633695176, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.145024045724314041, 0, -5.80096182897256162, 0, 17.4028854869176849, 0, 0, 0, 0, 0, 0, 0, 0, + + -0.32428362461160392, 0, 0, 8.43137423990170193, 0, 12.9713449844641568, 0, 0, 0, 0, -4.8642543691740588, 0, -350.226314580532234, 0, -38.9140349533924704, 0, 0, 0, 0, 0, 0, -27.2398244673747293, 0, 544.796489347494586, 0, 1089.59297869498917, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -4.8642543691740588, 0, 544.796489347494586, 0, -2723.98244673747293, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8.43137423990170193, 0, -350.226314580532234, 0, 1089.59297869498917, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.32428362461160392, 0, 12.9713449844641568, 0, -38.9140349533924704, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1.6214181230580196, 0, 0, 0, 0, -30.8069443381023724, 0, -19.4570174766962352, 0, 0, 0, 0, 0, 0, -9.72850873834811761, 0, 389.140349533924704, 0, 31.1312279627139763, 0, 0, 0, 0, 0, 0, 0, 0, 68.0995611684368233, 0, -272.398244673747293, 0, -653.755787216993503, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34.0497805842184116, 0, -544.796489347494586, 0, 1089.59297869498917, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -11.3499268614061372, 0, 136.199122336873647, 0, -217.918595738997834, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, -3.16072579847853403, 0, 0, 0, 0, 60.0537901710921467, 0, 37.9287095817424084, 0, 0, 0, 0, 0, 0, 18.9643547908712042, 0, -758.574191634848168, 0, -60.6859353307878535, 0, 0, 0, 0, 0, 0, 0, 0, -132.750483536098429, 0, 531.001934144393718, 0, 1274.40464194654492, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -66.3752417680492147, 0, 1062.00386828878744, 0, -2124.00773657757487, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22.1250805893497382, 0, -265.500967072196859, 0, 424.801547315514974, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + -0.166353989393607054, 0, 0, 1.99624787272328465, 0, 8.98311542725478094, 0, 0, 0, 0, 4.49155771362739047, 0, -116.780500554312152, 0, -47.9099489453588317, 0, 0, 0, 0, 0, 0, 0, 0, -125.763615981566933, 0, 670.739285235023644, 0, 44.7159523490015762, 0, 0, 0, 0, 0, 0, 0, 0, -4.49155771362739047, 0, 125.763615981566933, 0, 0, 0, -670.739285235023644, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1.99624787272328465, 0, 116.780500554312152, 0, -670.739285235023644, 0, 670.739285235023644, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.166353989393607054, 0, -8.98311542725478094, 0, 47.9099489453588317, 0, -44.7159523490015762, 0, 0, 0, 0, 0, 0, + + 0.288133561671501547, 0, 0, -3.45760274005801856, 0, -15.5592123302610835, 0, 0, 0, 0, -7.77960616513054176, 0, 202.269760293394086, 0, 82.9824657613924454, 0, 0, 0, 0, 0, 0, 0, 0, 217.828972623655169, 0, -1161.75452065949424, 0, -77.4503013772996157, 0, 0, 0, 0, 0, 0, 0, 0, 7.77960616513054176, 0, -217.828972623655169, 0, 0, 0, 1161.75452065949424, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3.45760274005801856, 0, -202.269760293394086, 0, 1161.75452065949424, 0, -1161.75452065949424, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.288133561671501547, 0, 15.5592123302610835, 0, -82.9824657613924454, 0, 77.4503013772996157, 0, 0, 0, 0, 0, 0, + 0, 0, -2.01693493170051083, 0, 0, 0, 0, 14.1185445219035758, 0, 32.2709589072081732, 0, 0, 0, 0, 0, 0, 44.3725684974112382, 0, -258.167671257665386, 0, -90.358684940182885, 0, 0, 0, 0, 0, 0, 0, 0, 28.2370890438071516, 0, -451.793424700914425, 0, 813.228164461645965, 0, 51.6335342515330771, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -10.0846746585025541, 0, 0, 0, 451.793424700914425, 0, -516.335342515330771, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -10.0846746585025541, 0, 161.354794536040866, 0, -451.793424700914425, 0, 258.167671257665386, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 3.14316607483904567, 0, 0, 0, 0, -22.0021625238733197, 0, -50.2906571974247307, 0, 0, 0, 0, 0, 0, -69.1496536464590047, 0, 402.325257579397845, 0, 140.813840152789246, 0, 0, 0, 0, 0, 0, 0, 0, -44.0043250477466393, 0, 704.06920076394623, 0, -1267.32456137510321, 0, -80.4650515158795691, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15.7158303741952283, 0, 0, 0, -704.06920076394623, 0, 804.650515158795691, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15.7158303741952283, 0, -251.453285987123653, 0, 704.06920076394623, 0, -402.325257579397845, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0.184892122049355627, 0, 0, -0.369784244098711255, 0, -11.8330958111587602, 0, 0, 0, 0, -3.14316607483904567, 0, 35.4992874334762805, 0, 82.8316706781113211, 0, 0, 0, 0, 0, 0, -5.17697941738195757, 0, 165.663341356222642, 0, -331.326682712445284, 0, -132.530673084978114, 0, 0, 0, 0, 0, 0, 0, 0, -3.14316607483904567, 0, 165.663341356222642, 0, -828.316706781113211, 0, 662.653365424890569, 0, 47.3323832446350406, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.369784244098711255, 0, 35.4992874334762805, 0, -331.326682712445284, 0, 662.653365424890569, 0, -283.994299467810244, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.184892122049355627, 0, -11.8330958111587602, 0, 82.8316706781113211, 0, -132.530673084978114, 0, 47.3323832446350406, 0, 0, 0, 0, + + -0.261476946578140297, 0, 0, 0.522953893156280594, 0, 16.734524581000979, 0, 0, 0, 0, 4.44510809182838505, 0, -50.203573743002937, 0, -117.141672067006853, 0, 0, 0, 0, 0, 0, 7.32135450418792832, 0, -234.283344134013706, 0, 468.566688268027412, 0, 187.426675307210965, 0, 0, 0, 0, 0, 0, 0, 0, 4.44510809182838505, 0, -234.283344134013706, 0, 1171.41672067006853, 0, -937.133376536054825, 0, -66.938098324003916, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.522953893156280594, 0, -50.203573743002937, 0, 468.566688268027412, 0, -937.133376536054825, 0, 401.628589944023496, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.261476946578140297, 0, 16.734524581000979, 0, -117.141672067006853, 0, 187.426675307210965, 0, -66.938098324003916, 0, 0, 0, 0, + 0, 0, 2.35329251920326267, 0, 0, 0, 0, 2.35329251920326267, 0, -43.9281270251275699, 0, 0, 0, 0, 0, 0, -14.119755115219576, 0, 0, 0, 158.141257290459252, 0, 0, 0, 0, 0, 0, 0, 0, -32.9460952688456774, 0, 263.568762150765419, 0, -158.141257290459252, 0, -150.610721229008811, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -25.8862177112358894, 0, 351.425016201020559, 0, -790.706286452296258, 0, 301.221442458017622, 0, 33.469049162001958, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7.05987755760978802, 0, 131.78438107538271, 0, -474.423771871377755, 0, 451.832163687026433, 0, -100.407147486005874, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, -3.03808757854291138, 0, 0, 0, 0, -3.03808757854291138, 0, 56.7109681328010124, 0, 0, 0, 0, 0, 0, 18.2285254712574683, 0, 0, 0, -204.159485278083644, 0, 0, 0, 0, 0, 0, 0, 0, 42.5332260996007593, 0, -340.265808796806074, 0, 204.159485278083644, 0, 194.437605026746328, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33.4189633639720251, 0, -453.687745062408099, 0, 1020.79742639041822, 0, -388.875210053492656, 0, -43.2083566726102951, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9.11426273562873413, 0, -170.132904398403037, 0, 612.478455834250933, 0, -583.312815080238984, 0, 129.625070017830885, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + -0.202539171902860758, 0, 0, -0.810156687611443034, 0, 14.1777420332002531, 0, 0, 0, 0, -1.01269585951430379, 0, 42.5332260996007593, 0, -113.421936265602025, 0, 0, 0, 0, 0, 0, 0, 0, 28.3554840664005062, 0, -226.843872531204049, 0, 226.843872531204049, 0, 0, 0, 0, 0, 0, 0, 0, 1.01269585951430379, 0, -28.3554840664005062, 0, 0, 0, 226.843872531204049, 0, -129.625070017830885, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.810156687611443034, 0, -42.5332260996007593, 0, 226.843872531204049, 0, -226.843872531204049, 0, 0, 0, 17.2833426690441181, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.202539171902860758, 0, -14.1777420332002531, 0, 113.421936265602025, 0, -226.843872531204049, 0, 129.625070017830885, 0, -17.2833426690441181, 0, 0, + + 0.239647580036050465, 0, 0, 0.958590320144201859, 0, -16.7753306025235325, 0, 0, 0, 0, 1.19823790018025232, 0, -50.3259918075705976, 0, 134.20264482018826, 0, 0, 0, 0, 0, 0, 0, 0, -33.5506612050470651, 0, 268.40528964037652, 0, -268.40528964037652, 0, 0, 0, 0, 0, 0, 0, 0, -1.19823790018025232, 0, 33.5506612050470651, 0, 0, 0, -268.40528964037652, 0, 153.374451223072297, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.958590320144201859, 0, 50.3259918075705976, 0, -268.40528964037652, 0, 268.40528964037652, 0, 0, 0, -20.449926829742973, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.239647580036050465, 0, 16.7753306025235325, 0, -134.20264482018826, 0, 268.40528964037652, 0, -153.374451223072297, 0, 20.449926829742973, 0, 0, + 0, 0, -2.63612338039655511, 0, 0, 0, 0, -13.1806169019827756, 0, 52.7224676079311022, 0, 0, 0, 0, 0, 0, -26.3612338039655511, 0, 210.889870431724409, 0, -210.889870431724409, 0, 0, 0, 0, 0, 0, 0, 0, -26.3612338039655511, 0, 316.334805647586613, 0, -632.669611295173227, 0, 241.01699477911361, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -13.1806169019827756, 0, 210.889870431724409, 0, -632.669611295173227, 0, 482.03398955822722, 0, -80.3389982597045367, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2.63612338039655511, 0, 52.7224676079311022, 0, -210.889870431724409, 0, 241.01699477911361, 0, -80.3389982597045367, 0, 5.84283623706942085, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 2.86576824852435259, 0, 0, 0, 0, 14.3288412426217629, 0, -57.3153649704870517, 0, 0, 0, 0, 0, 0, 28.6576824852435259, 0, -229.261459881948207, 0, 229.261459881948207, 0, 0, 0, 0, 0, 0, 0, 0, 28.6576824852435259, 0, -343.89218982292231, 0, 687.784379645844621, 0, -262.013097007940808, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14.3288412426217629, 0, -229.261459881948207, 0, 687.784379645844621, 0, -524.026194015881616, 0, 87.337699002646936, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2.86576824852435259, 0, -57.3153649704870517, 0, 229.261459881948207, 0, -262.013097007940808, 0, 87.337699002646936, 0, -6.35183265473795898, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0.220443711424950199, 0, 0, 1.32266226854970119, 0, -15.8719472225964143, 0, 0, 0, 0, 3.30665567137425298, 0, -79.3597361129820716, 0, 132.266226854970119, 0, 0, 0, 0, 0, 0, 4.40887422849900398, 0, -158.719472225964143, 0, 529.064907419880478, 0, -282.167950623936255, 0, 0, 0, 0, 0, 0, 0, 0, 3.30665567137425298, 0, -158.719472225964143, 0, 793.597361129820716, 0, -846.503851871808764, 0, 181.393682543959021, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.32266226854970119, 0, -79.3597361129820716, 0, 529.064907419880478, 0, -846.503851871808764, 0, 362.787365087918042, 0, -32.2477657855927148, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.220443711424950199, 0, -15.8719472225964143, 0, 132.266226854970119, 0, -282.167950623936255, 0, 181.393682543959021, 0, -32.2477657855927148, 0, 0.977205023805839843, + + -0.220443711424950199, 0, 0, -1.32266226854970119, 0, 15.8719472225964143, 0, 0, 0, 0, -3.30665567137425298, 0, 79.3597361129820716, 0, -132.266226854970119, 0, 0, 0, 0, 0, 0, -4.40887422849900398, 0, 158.719472225964143, 0, -529.064907419880478, 0, 282.167950623936255, 0, 0, 0, 0, 0, 0, 0, 0, -3.30665567137425298, 0, 158.719472225964143, 0, -793.597361129820716, 0, 846.503851871808764, 0, -181.393682543959021, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1.32266226854970119, 0, 79.3597361129820716, 0, -529.064907419880478, 0, 846.503851871808764, 0, -362.787365087918042, 0, 32.2477657855927148, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.220443711424950199, 0, 15.8719472225964143, 0, -132.266226854970119, 0, 282.167950623936255, 0, -181.393682543959021, 0, 32.2477657855927148, 0, -0.977205023805839843, + 0, 0, 2.86576824852435259, 0, 0, 0, 0, 14.3288412426217629, 0, -57.3153649704870517, 0, 0, 0, 0, 0, 0, 28.6576824852435259, 0, -229.261459881948207, 0, 229.261459881948207, 0, 0, 0, 0, 0, 0, 0, 0, 28.6576824852435259, 0, -343.89218982292231, 0, 687.784379645844621, 0, -262.013097007940808, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14.3288412426217629, 0, -229.261459881948207, 0, 687.784379645844621, 0, -524.026194015881616, 0, 87.337699002646936, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2.86576824852435259, 0, -57.3153649704870517, 0, 229.261459881948207, 0, -262.013097007940808, 0, 87.337699002646936, 0, -6.35183265473795898, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, -2.63612338039655511, 0, 0, 0, 0, -13.1806169019827756, 0, 52.7224676079311022, 0, 0, 0, 0, 0, 0, -26.3612338039655511, 0, 210.889870431724409, 0, -210.889870431724409, 0, 0, 0, 0, 0, 0, 0, 0, -26.3612338039655511, 0, 316.334805647586613, 0, -632.669611295173227, 0, 241.01699477911361, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -13.1806169019827756, 0, 210.889870431724409, 0, -632.669611295173227, 0, 482.03398955822722, 0, -80.3389982597045367, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2.63612338039655511, 0, 52.7224676079311022, 0, -210.889870431724409, 0, 241.01699477911361, 0, -80.3389982597045367, 0, 5.84283623706942085, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + -0.239647580036050465, 0, 0, -0.958590320144201859, 0, 16.7753306025235325, 0, 0, 0, 0, -1.19823790018025232, 0, 50.3259918075705976, 0, -134.20264482018826, 0, 0, 0, 0, 0, 0, 0, 0, 33.5506612050470651, 0, -268.40528964037652, 0, 268.40528964037652, 0, 0, 0, 0, 0, 0, 0, 0, 1.19823790018025232, 0, -33.5506612050470651, 0, 0, 0, 268.40528964037652, 0, -153.374451223072297, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.958590320144201859, 0, -50.3259918075705976, 0, 268.40528964037652, 0, -268.40528964037652, 0, 0, 0, 20.449926829742973, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.239647580036050465, 0, -16.7753306025235325, 0, 134.20264482018826, 0, -268.40528964037652, 0, 153.374451223072297, 0, -20.449926829742973, 0, 0, + + 0.202539171902860758, 0, 0, 0.810156687611443034, 0, -14.1777420332002531, 0, 0, 0, 0, 1.01269585951430379, 0, -42.5332260996007593, 0, 113.421936265602025, 0, 0, 0, 0, 0, 0, 0, 0, -28.3554840664005062, 0, 226.843872531204049, 0, -226.843872531204049, 0, 0, 0, 0, 0, 0, 0, 0, -1.01269585951430379, 0, 28.3554840664005062, 0, 0, 0, -226.843872531204049, 0, 129.625070017830885, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.810156687611443034, 0, 42.5332260996007593, 0, -226.843872531204049, 0, 226.843872531204049, 0, 0, 0, -17.2833426690441181, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.202539171902860758, 0, 14.1777420332002531, 0, -113.421936265602025, 0, 226.843872531204049, 0, -129.625070017830885, 0, 17.2833426690441181, 0, 0, + 0, 0, -3.03808757854291138, 0, 0, 0, 0, -3.03808757854291138, 0, 56.7109681328010124, 0, 0, 0, 0, 0, 0, 18.2285254712574683, 0, 0, 0, -204.159485278083644, 0, 0, 0, 0, 0, 0, 0, 0, 42.5332260996007593, 0, -340.265808796806074, 0, 204.159485278083644, 0, 194.437605026746328, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33.4189633639720251, 0, -453.687745062408099, 0, 1020.79742639041822, 0, -388.875210053492656, 0, -43.2083566726102951, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9.11426273562873413, 0, -170.132904398403037, 0, 612.478455834250933, 0, -583.312815080238984, 0, 129.625070017830885, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 2.35329251920326267, 0, 0, 0, 0, 2.35329251920326267, 0, -43.9281270251275699, 0, 0, 0, 0, 0, 0, -14.119755115219576, 0, 0, 0, 158.141257290459252, 0, 0, 0, 0, 0, 0, 0, 0, -32.9460952688456774, 0, 263.568762150765419, 0, -158.141257290459252, 0, -150.610721229008811, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -25.8862177112358894, 0, 351.425016201020559, 0, -790.706286452296258, 0, 301.221442458017622, 0, 33.469049162001958, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7.05987755760978802, 0, 131.78438107538271, 0, -474.423771871377755, 0, 451.832163687026433, 0, -100.407147486005874, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0.261476946578140297, 0, 0, -0.522953893156280594, 0, -16.734524581000979, 0, 0, 0, 0, -4.44510809182838505, 0, 50.203573743002937, 0, 117.141672067006853, 0, 0, 0, 0, 0, 0, -7.32135450418792832, 0, 234.283344134013706, 0, -468.566688268027412, 0, -187.426675307210965, 0, 0, 0, 0, 0, 0, 0, 0, -4.44510809182838505, 0, 234.283344134013706, 0, -1171.41672067006853, 0, 937.133376536054825, 0, 66.938098324003916, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.522953893156280594, 0, 50.203573743002937, 0, -468.566688268027412, 0, 937.133376536054825, 0, -401.628589944023496, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.261476946578140297, 0, -16.734524581000979, 0, 117.141672067006853, 0, -187.426675307210965, 0, 66.938098324003916, 0, 0, 0, 0, + + -0.184892122049355627, 0, 0, 0.369784244098711255, 0, 11.8330958111587602, 0, 0, 0, 0, 3.14316607483904567, 0, -35.4992874334762805, 0, -82.8316706781113211, 0, 0, 0, 0, 0, 0, 5.17697941738195757, 0, -165.663341356222642, 0, 331.326682712445284, 0, 132.530673084978114, 0, 0, 0, 0, 0, 0, 0, 0, 3.14316607483904567, 0, -165.663341356222642, 0, 828.316706781113211, 0, -662.653365424890569, 0, -47.3323832446350406, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.369784244098711255, 0, -35.4992874334762805, 0, 331.326682712445284, 0, -662.653365424890569, 0, 283.994299467810244, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.184892122049355627, 0, 11.8330958111587602, 0, -82.8316706781113211, 0, 132.530673084978114, 0, -47.3323832446350406, 0, 0, 0, 0, + 0, 0, 3.14316607483904567, 0, 0, 0, 0, -22.0021625238733197, 0, -50.2906571974247307, 0, 0, 0, 0, 0, 0, -69.1496536464590047, 0, 402.325257579397845, 0, 140.813840152789246, 0, 0, 0, 0, 0, 0, 0, 0, -44.0043250477466393, 0, 704.06920076394623, 0, -1267.32456137510321, 0, -80.4650515158795691, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15.7158303741952283, 0, 0, 0, -704.06920076394623, 0, 804.650515158795691, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15.7158303741952283, 0, -251.453285987123653, 0, 704.06920076394623, 0, -402.325257579397845, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, -2.01693493170051083, 0, 0, 0, 0, 14.1185445219035758, 0, 32.2709589072081732, 0, 0, 0, 0, 0, 0, 44.3725684974112382, 0, -258.167671257665386, 0, -90.358684940182885, 0, 0, 0, 0, 0, 0, 0, 0, 28.2370890438071516, 0, -451.793424700914425, 0, 813.228164461645965, 0, 51.6335342515330771, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -10.0846746585025541, 0, 0, 0, 451.793424700914425, 0, -516.335342515330771, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -10.0846746585025541, 0, 161.354794536040866, 0, -451.793424700914425, 0, 258.167671257665386, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + -0.288133561671501547, 0, 0, 3.45760274005801856, 0, 15.5592123302610835, 0, 0, 0, 0, 7.77960616513054176, 0, -202.269760293394086, 0, -82.9824657613924454, 0, 0, 0, 0, 0, 0, 0, 0, -217.828972623655169, 0, 1161.75452065949424, 0, 77.4503013772996157, 0, 0, 0, 0, 0, 0, 0, 0, -7.77960616513054176, 0, 217.828972623655169, 0, 0, 0, -1161.75452065949424, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -3.45760274005801856, 0, 202.269760293394086, 0, -1161.75452065949424, 0, 1161.75452065949424, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.288133561671501547, 0, -15.5592123302610835, 0, 82.9824657613924454, 0, -77.4503013772996157, 0, 0, 0, 0, 0, 0, + + 0.166353989393607054, 0, 0, -1.99624787272328465, 0, -8.98311542725478094, 0, 0, 0, 0, -4.49155771362739047, 0, 116.780500554312152, 0, 47.9099489453588317, 0, 0, 0, 0, 0, 0, 0, 0, 125.763615981566933, 0, -670.739285235023644, 0, -44.7159523490015762, 0, 0, 0, 0, 0, 0, 0, 0, 4.49155771362739047, 0, -125.763615981566933, 0, 0, 0, 670.739285235023644, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.99624787272328465, 0, -116.780500554312152, 0, 670.739285235023644, 0, -670.739285235023644, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.166353989393607054, 0, 8.98311542725478094, 0, -47.9099489453588317, 0, 44.7159523490015762, 0, 0, 0, 0, 0, 0, + 0, 0, -3.16072579847853403, 0, 0, 0, 0, 60.0537901710921467, 0, 37.9287095817424084, 0, 0, 0, 0, 0, 0, 18.9643547908712042, 0, -758.574191634848168, 0, -60.6859353307878535, 0, 0, 0, 0, 0, 0, 0, 0, -132.750483536098429, 0, 531.001934144393718, 0, 1274.40464194654492, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -66.3752417680492147, 0, 1062.00386828878744, 0, -2124.00773657757487, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22.1250805893497382, 0, -265.500967072196859, 0, 424.801547315514974, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 1.6214181230580196, 0, 0, 0, 0, -30.8069443381023724, 0, -19.4570174766962352, 0, 0, 0, 0, 0, 0, -9.72850873834811761, 0, 389.140349533924704, 0, 31.1312279627139763, 0, 0, 0, 0, 0, 0, 0, 0, 68.0995611684368233, 0, -272.398244673747293, 0, -653.755787216993503, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34.0497805842184116, 0, -544.796489347494586, 0, 1089.59297869498917, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -11.3499268614061372, 0, 136.199122336873647, 0, -217.918595738997834, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0.32428362461160392, 0, 0, -8.43137423990170193, 0, -12.9713449844641568, 0, 0, 0, 0, 4.8642543691740588, 0, 350.226314580532234, 0, 38.9140349533924704, 0, 0, 0, 0, 0, 0, 27.2398244673747293, 0, -544.796489347494586, 0, -1089.59297869498917, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4.8642543691740588, 0, -544.796489347494586, 0, 2723.98244673747293, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8.43137423990170193, 0, 350.226314580532234, 0, -1089.59297869498917, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.32428362461160392, 0, -12.9713449844641568, 0, 38.9140349533924704, 0, 0, 0, 0, 0, 0, 0, 0, + + -0.145024045724314041, 0, 0, 3.77062518883216506, 0, 5.80096182897256162, 0, 0, 0, 0, -2.17536068586471061, 0, -156.625969382259164, 0, -17.4028854869176849, 0, 0, 0, 0, 0, 0, -12.1820198408423794, 0, 243.640396816847588, 0, 487.280793633695176, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2.17536068586471061, 0, 243.640396816847588, 0, -1218.20198408423794, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3.77062518883216506, 0, -156.625969382259164, 0, 487.280793633695176, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.145024045724314041, 0, 5.80096182897256162, 0, -17.4028854869176849, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 3.04550496021059485, 0, 0, 0, 0, -106.59267360737082, 0, -20.3033664014039657, 0, 0, 0, 0, 0, 0, 274.095446418953537, 0, 730.921190450542765, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 127.911208328844984, 0, -2558.22416657689968, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -228.412872015794614, 0, 1705.48277771793312, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27.4095446418953537, 0, -182.730297612635691, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, -1.15109267733298502, 0, 0, 0, 0, 40.2882437066544757, 0, 7.67395118221990013, 0, 0, 0, 0, 0, 0, -103.598340959968652, 0, -276.262242559916405, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -48.3458924479853708, 0, 966.917848959707416, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86.3319507999738764, 0, -644.611899306471611, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -10.3598340959968652, 0, 69.0655606399791011, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + -0.383697559110995006, 0, 0, 16.8826926008837803, 0, 8.44134630044189014, 0, 0, 0, 0, -63.310097253314176, 0, -379.860583519885056, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1772.68272309279693, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63.310097253314176, 0, -1772.68272309279693, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -16.8826926008837803, 0, 379.860583519885056, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.383697559110995006, 0, -8.44134630044189014, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0.115689166958762041, 0, 0, -5.09032334618552982, 0, -2.54516167309276491, 0, 0, 0, 0, 19.0887125481957368, 0, 114.532275289174421, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -534.483951349480631, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -19.0887125481957368, 0, 534.483951349480631, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5.09032334618552982, 0, -114.532275289174421, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.115689166958762041, 0, 2.54516167309276491, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, -2.66085084005152695, 0, 0, 0, 0, 146.346796202833982, 0, 0, 0, 0, 0, 0, 0, 0, -878.080777217003893, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1229.31308810380545, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -439.040388608501947, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29.2693592405667964, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 0.554825753806619302, 0, 0, 0, 0, -30.5154164593640616, 0, 0, 0, 0, 0, 0, 0, 0, 183.09249875618437, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -256.329498258658117, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 91.5462493780921848, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -6.10308329187281232, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0.554825753806619302, 0, 0, -36.6184997512368739, 0, 0, 0, 0, 0, 0, 274.638748134276554, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -512.658996517316235, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 274.638748134276554, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -36.6184997512368739, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.554825753806619302, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0.566266663742191171, 0, 0, -37.3735998069846173, 0, 0, 0, 0, 0, 0, 280.30199855238463, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -523.230397297784642, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 280.30199855238463, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -37.3735998069846173, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.566266663742191171, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0.113253332748438234, 0, 0, -7.47471996139692346, 0, 0, 0, 0, 0, 0, 56.0603997104769259, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -104.646079459556928, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56.0603997104769259, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7.47471996139692346, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.113253332748438234, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 2.71807998596251762, 0, 0, 0, 0, -149.494399227938469, 0, 0, 0, 0, 0, 0, 0, 0, 896.966395367630815, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1255.75295351468314, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 448.483197683815407, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -29.8988798455876938, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 0.784642105787196884, 0, 0, 0, 0, -43.1553158182958286, 0, 0, 0, 0, 0, 0, 0, 0, 258.931894909774972, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -362.50465287368496, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 129.465947454887486, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8.63106316365916572, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + -0.392321052893598442, 0, 0, 17.2621263273183314, 0, 8.63106316365916572, 0, 0, 0, 0, -64.7329737274437429, 0, -388.397842364662457, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1812.5232643684248, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64.7329737274437429, 0, -1812.5232643684248, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -17.2621263273183314, 0, 388.397842364662457, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.392321052893598442, 0, -8.63106316365916572, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + -0.141689713908309089, 0, 0, 6.23434741196559994, 0, 3.11717370598279997, 0, 0, 0, 0, -23.3788027948709998, 0, -140.272816769225999, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 654.606478256387993, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23.3788027948709998, 0, -654.606478256387993, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -6.23434741196559994, 0, 140.272816769225999, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.141689713908309089, 0, -3.11717370598279997, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, -3.11717370598279997, 0, 0, 0, 0, 109.101079709397999, 0, 20.7811580398853331, 0, 0, 0, 0, 0, 0, -280.545633538451997, 0, -748.121689435871992, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -130.921295651277599, 0, 2618.42591302555197, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 233.788027948709998, 0, -1745.61727535036798, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -28.0545633538451997, 0, 187.030422358967998, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, -1.32916733424081186, 0, 0, 0, 0, 46.5208566984284153, 0, 8.86111556160541243, 0, 0, 0, 0, 0, 0, -119.625060081673068, 0, -319.000160217794847, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -55.8250280381140983, 0, 1116.50056076228197, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 99.6875500680608898, 0, -744.333707174854644, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -11.9625060081673068, 0, 79.7500400544487119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0.332291833560202966, 0, 0, -8.63958767256527712, 0, -13.2916733424081186, 0, 0, 0, 0, 4.98437750340304449, 0, 358.875180245019203, 0, 39.8750200272243559, 0, 0, 0, 0, 0, 0, 27.9125140190570492, 0, -558.250280381140983, 0, -1116.50056076228197, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4.98437750340304449, 0, -558.250280381140983, 0, 2791.25140190570492, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8.63958767256527712, 0, 358.875180245019203, 0, -1116.50056076228197, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.332291833560202966, 0, -13.2916733424081186, 0, 39.8750200272243559, 0, 0, 0, 0, 0, 0, 0, 0, + + 0.16214181230580196, 0, 0, -4.21568711995085096, 0, -6.48567249223207841, 0, 0, 0, 0, 2.4321271845870294, 0, 175.113157290266117, 0, 19.4570174766962352, 0, 0, 0, 0, 0, 0, 13.6199122336873647, 0, -272.398244673747293, 0, -544.796489347494586, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2.4321271845870294, 0, -272.398244673747293, 0, 1361.99122336873647, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -4.21568711995085096, 0, 175.113157290266117, 0, -544.796489347494586, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.16214181230580196, 0, -6.48567249223207841, 0, 19.4570174766962352, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 3.2428362461160392, 0, 0, 0, 0, -61.6138886762047449, 0, -38.9140349533924704, 0, 0, 0, 0, 0, 0, -19.4570174766962352, 0, 778.280699067849409, 0, 62.2624559254279527, 0, 0, 0, 0, 0, 0, 0, 0, 136.199122336873647, 0, -544.796489347494586, 0, -1307.51157443398701, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68.0995611684368233, 0, -1089.59297869498917, 0, 2179.18595738997834, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -22.6998537228122744, 0, 272.398244673747293, 0, -435.837191477995669, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 1.77617456229312929, 0, 0, 0, 0, -33.7473166835694566, 0, -21.3140947475175515, 0, 0, 0, 0, 0, 0, -10.6570473737587758, 0, 426.281894950351031, 0, 34.1025515960280824, 0, 0, 0, 0, 0, 0, 0, 0, 74.5993316163114303, 0, -298.397326465245721, 0, -716.153583516589731, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37.2996658081557152, 0, -596.794652930491443, 0, 1193.58930586098289, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -12.4332219360519051, 0, 149.198663232622861, 0, -238.717861172196577, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + -0.296029093715521549, 0, 0, 3.55234912458625859, 0, 15.9855710606381636, 0, 0, 0, 0, 7.99278553031908182, 0, -207.812423788296127, 0, -85.2563789900702061, 0, 0, 0, 0, 0, 0, 0, 0, -223.797994848934291, 0, 1193.58930586098289, 0, 79.5726203907321924, 0, 0, 0, 0, 0, 0, 0, 0, -7.99278553031908182, 0, 223.797994848934291, 0, 0, 0, -1193.58930586098289, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -3.55234912458625859, 0, 207.812423788296127, 0, -1193.58930586098289, 0, 1193.58930586098289, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.296029093715521549, 0, -15.9855710606381636, 0, 85.2563789900702061, 0, -79.5726203907321924, 0, 0, 0, 0, 0, 0, + + -0.179682844900943126, 0, 0, 2.15619413881131751, 0, 9.7028736246509288, 0, 0, 0, 0, 4.8514368123254644, 0, -126.137357120462074, 0, -51.7486593314716203, 0, 0, 0, 0, 0, 0, 0, 0, -135.840230745113003, 0, 724.481230640602684, 0, 48.2987487093735122, 0, 0, 0, 0, 0, 0, 0, 0, -4.8514368123254644, 0, 135.840230745113003, 0, 0, 0, -724.481230640602684, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2.15619413881131751, 0, 126.137357120462074, 0, -724.481230640602684, 0, 724.481230640602684, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.179682844900943126, 0, -9.7028736246509288, 0, 51.7486593314716203, 0, -48.2987487093735122, 0, 0, 0, 0, 0, 0, + 0, 0, -3.23429120821697627, 0, 0, 0, 0, 22.6400384575188339, 0, 51.7486593314716203, 0, 0, 0, 0, 0, 0, 71.1544065807734779, 0, -413.989274651772962, 0, -144.896246128120537, 0, 0, 0, 0, 0, 0, 0, 0, 45.2800769150376677, 0, -724.481230640602684, 0, 1304.06621515308483, 0, 82.7978549303545924, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -16.1714560410848813, 0, 0, 0, 724.481230640602684, 0, -827.978549303545924, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -16.1714560410848813, 0, 258.743296657358101, 0, -724.481230640602684, 0, 413.989274651772962, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, -2.15619413881131751, 0, 0, 0, 0, 15.0933589716792226, 0, 34.4991062209810802, 0, 0, 0, 0, 0, 0, 47.4362710538489852, 0, -275.992849767848641, 0, -96.5974974187470245, 0, 0, 0, 0, 0, 0, 0, 0, 30.1867179433584452, 0, -482.987487093735122, 0, 869.37747676872322, 0, 55.1985699535697283, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -10.7809706940565876, 0, 0, 0, 482.987487093735122, 0, -551.985699535697283, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -10.7809706940565876, 0, 172.495531104905401, 0, -482.987487093735122, 0, 275.992849767848641, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0.269524267351414689, 0, 0, -0.539048534702829378, 0, -17.2495531104905401, 0, 0, 0, 0, -4.58191254497404971, 0, 51.7486593314716203, 0, 120.746871773433781, 0, 0, 0, 0, 0, 0, -7.54667948583961129, 0, 241.493743546867561, 0, -482.987487093735122, 0, -193.194994837494049, 0, 0, 0, 0, 0, 0, 0, 0, -4.58191254497404971, 0, 241.493743546867561, 0, -1207.46871773433781, 0, 965.974974187470245, 0, 68.9982124419621604, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.539048534702829378, 0, 51.7486593314716203, 0, -482.987487093735122, 0, 965.974974187470245, 0, -413.989274651772962, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.269524267351414689, 0, -17.2495531104905401, 0, 120.746871773433781, 0, -193.194994837494049, 0, 68.9982124419621604, 0, 0, 0, 0, + + 0.196107709933605223, 0, 0, -0.392215419867210446, 0, -12.5508934357507343, 0, 0, 0, 0, -3.33383106887128879, 0, 37.6526803072522028, 0, 87.8562540502551398, 0, 0, 0, 0, 0, 0, -5.49101587814094624, 0, 175.71250810051028, 0, -351.425016201020559, 0, -140.570006480408224, 0, 0, 0, 0, 0, 0, 0, 0, -3.33383106887128879, 0, 175.71250810051028, 0, -878.562540502551398, 0, 702.850032402041119, 0, 50.203573743002937, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.392215419867210446, 0, 37.6526803072522028, 0, -351.425016201020559, 0, 702.850032402041119, 0, -301.221442458017622, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.196107709933605223, 0, -12.5508934357507343, 0, 87.8562540502551398, 0, -140.570006480408224, 0, 50.203573743002937, 0, 0, 0, 0, + 0, 0, 3.13772335893768356, 0, 0, 0, 0, 3.13772335893768356, 0, -58.5708360335034265, 0, 0, 0, 0, 0, 0, -18.8263401536261014, 0, 0, 0, 210.855009720612336, 0, 0, 0, 0, 0, 0, 0, 0, -43.9281270251275699, 0, 351.425016201020559, 0, -210.855009720612336, 0, -200.814294972011748, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -34.5149569483145192, 0, 468.566688268027412, 0, -1054.27504860306168, 0, 401.628589944023496, 0, 44.6253988826692774, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9.41317007681305069, 0, 175.71250810051028, 0, -632.565029161837007, 0, 602.442884916035244, 0, -133.876196648007832, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 2.48058812043928146, 0, 0, 0, 0, 2.48058812043928146, 0, -46.3043115815332539, 0, 0, 0, 0, 0, 0, -14.8835287226356887, 0, 0, 0, 166.695521693519714, 0, 0, 0, 0, 0, 0, 0, 0, -34.7282336861499404, 0, 277.825869489199523, 0, -166.695521693519714, 0, -158.757639708114013, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -27.286469324832096, 0, 370.434492652266031, 0, -833.47760846759857, 0, 317.515279416228027, 0, 35.279475490692003, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7.44176436131784437, 0, 138.912934744599762, 0, -500.086565080559142, 0, 476.27291912434204, 0, -105.838426472076009, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + -0.248058812043928146, 0, 0, -0.992235248175712583, 0, 17.3641168430749702, 0, 0, 0, 0, -1.24029406021964073, 0, 52.0923505292249106, 0, -138.912934744599762, 0, 0, 0, 0, 0, 0, 0, 0, 34.7282336861499404, 0, -277.825869489199523, 0, 277.825869489199523, 0, 0, 0, 0, 0, 0, 0, 0, 1.24029406021964073, 0, -34.7282336861499404, 0, 0, 0, 277.825869489199523, 0, -158.757639708114013, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.992235248175712583, 0, -52.0923505292249106, 0, 277.825869489199523, 0, -277.825869489199523, 0, 0, 0, 21.1676852944152018, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.248058812043928146, 0, -17.3641168430749702, 0, 138.912934744599762, 0, -277.825869489199523, 0, 158.757639708114013, 0, -21.1676852944152018, 0, 0, + + -0.212424875592775713, 0, 0, -0.849699502371102853, 0, 14.8697412914942999, 0, 0, 0, 0, -1.06212437796387857, 0, 44.6092238744828998, 0, -118.957930331954399, 0, 0, 0, 0, 0, 0, 0, 0, 29.7394825829885999, 0, -237.915860663908799, 0, 237.915860663908799, 0, 0, 0, 0, 0, 0, 0, 0, 1.06212437796387857, 0, -29.7394825829885999, 0, 0, 0, 237.915860663908799, 0, -135.951920379376457, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.849699502371102853, 0, -44.6092238744828998, 0, 237.915860663908799, 0, -237.915860663908799, 0, 0, 0, 18.1269227172501942, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.212424875592775713, 0, -14.8697412914942999, 0, 118.957930331954399, 0, -237.915860663908799, 0, 135.951920379376457, 0, -18.1269227172501942, 0, 0, + 0, 0, -2.97394825829885999, 0, 0, 0, 0, -14.8697412914942999, 0, 59.4789651659771997, 0, 0, 0, 0, 0, 0, -29.7394825829885999, 0, 237.915860663908799, 0, -237.915860663908799, 0, 0, 0, 0, 0, 0, 0, 0, -29.7394825829885999, 0, 356.873790995863198, 0, -713.747581991726397, 0, 271.903840758752913, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -14.8697412914942999, 0, 237.915860663908799, 0, -713.747581991726397, 0, 543.807681517505826, 0, -90.634613586250971, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2.97394825829885999, 0, 59.4789651659771997, 0, -237.915860663908799, 0, 271.903840758752913, 0, -90.634613586250971, 0, 6.59160826081825244, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, -2.7533410732166562, 0, 0, 0, 0, -13.766705366083281, 0, 55.066821464333124, 0, 0, 0, 0, 0, 0, -27.533410732166562, 0, 220.267285857332496, 0, -220.267285857332496, 0, 0, 0, 0, 0, 0, 0, 0, -27.533410732166562, 0, 330.400928785998744, 0, -660.801857571997488, 0, 251.734040979808567, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -13.766705366083281, 0, 220.267285857332496, 0, -660.801857571997488, 0, 503.468081959617133, 0, -83.9113469932695222, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2.7533410732166562, 0, 55.066821464333124, 0, -220.267285857332496, 0, 251.734040979808567, 0, -83.9113469932695222, 0, 6.10264341769232889, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0.22944508943472135, 0, 0, 1.3766705366083281, 0, -16.5200464392999372, 0, 0, 0, 0, 3.44167634152082025, 0, -82.6002321964996859, 0, 137.66705366083281, 0, 0, 0, 0, 0, 0, 4.588901788694427, 0, -165.200464392999372, 0, 550.66821464333124, 0, -293.689714476443328, 0, 0, 0, 0, 0, 0, 0, 0, 3.44167634152082025, 0, -165.200464392999372, 0, 826.002321964996859, 0, -881.069143429329983, 0, 188.800530734856425, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.3766705366083281, 0, -82.6002321964996859, 0, 550.66821464333124, 0, -881.069143429329983, 0, 377.60106146971285, 0, -33.5645387973078089, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.22944508943472135, 0, -16.5200464392999372, 0, 137.66705366083281, 0, -293.689714476443328, 0, 188.800530734856425, 0, -33.5645387973078089, 0, 1.01710723628205481, + + 0.22944508943472135, 0, 0, 1.3766705366083281, 0, -16.5200464392999372, 0, 0, 0, 0, 3.44167634152082025, 0, -82.6002321964996859, 0, 137.66705366083281, 0, 0, 0, 0, 0, 0, 4.588901788694427, 0, -165.200464392999372, 0, 550.66821464333124, 0, -293.689714476443328, 0, 0, 0, 0, 0, 0, 0, 0, 3.44167634152082025, 0, -165.200464392999372, 0, 826.002321964996859, 0, -881.069143429329983, 0, 188.800530734856425, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.3766705366083281, 0, -82.6002321964996859, 0, 550.66821464333124, 0, -881.069143429329983, 0, 377.60106146971285, 0, -33.5645387973078089, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.22944508943472135, 0, -16.5200464392999372, 0, 137.66705366083281, 0, -293.689714476443328, 0, 188.800530734856425, 0, -33.5645387973078089, 0, 1.01710723628205481, + 0, 0, 2.7533410732166562, 0, 0, 0, 0, 13.766705366083281, 0, -55.066821464333124, 0, 0, 0, 0, 0, 0, 27.533410732166562, 0, -220.267285857332496, 0, 220.267285857332496, 0, 0, 0, 0, 0, 0, 0, 0, 27.533410732166562, 0, -330.400928785998744, 0, 660.801857571997488, 0, -251.734040979808567, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13.766705366083281, 0, -220.267285857332496, 0, 660.801857571997488, 0, -503.468081959617133, 0, 83.9113469932695222, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2.7533410732166562, 0, -55.066821464333124, 0, 220.267285857332496, 0, -251.734040979808567, 0, 83.9113469932695222, 0, -6.10264341769232889, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 2.97394825829885999, 0, 0, 0, 0, 14.8697412914942999, 0, -59.4789651659771997, 0, 0, 0, 0, 0, 0, 29.7394825829885999, 0, -237.915860663908799, 0, 237.915860663908799, 0, 0, 0, 0, 0, 0, 0, 0, 29.7394825829885999, 0, -356.873790995863198, 0, 713.747581991726397, 0, -271.903840758752913, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14.8697412914942999, 0, -237.915860663908799, 0, 713.747581991726397, 0, -543.807681517505826, 0, 90.634613586250971, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2.97394825829885999, 0, -59.4789651659771997, 0, 237.915860663908799, 0, -271.903840758752913, 0, 90.634613586250971, 0, -6.59160826081825244, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + -0.212424875592775713, 0, 0, -0.849699502371102853, 0, 14.8697412914942999, 0, 0, 0, 0, -1.06212437796387857, 0, 44.6092238744828998, 0, -118.957930331954399, 0, 0, 0, 0, 0, 0, 0, 0, 29.7394825829885999, 0, -237.915860663908799, 0, 237.915860663908799, 0, 0, 0, 0, 0, 0, 0, 0, 1.06212437796387857, 0, -29.7394825829885999, 0, 0, 0, 237.915860663908799, 0, -135.951920379376457, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.849699502371102853, 0, -44.6092238744828998, 0, 237.915860663908799, 0, -237.915860663908799, 0, 0, 0, 18.1269227172501942, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.212424875592775713, 0, -14.8697412914942999, 0, 118.957930331954399, 0, -237.915860663908799, 0, 135.951920379376457, 0, -18.1269227172501942, 0, 0, + + -0.248058812043928146, 0, 0, -0.992235248175712583, 0, 17.3641168430749702, 0, 0, 0, 0, -1.24029406021964073, 0, 52.0923505292249106, 0, -138.912934744599762, 0, 0, 0, 0, 0, 0, 0, 0, 34.7282336861499404, 0, -277.825869489199523, 0, 277.825869489199523, 0, 0, 0, 0, 0, 0, 0, 0, 1.24029406021964073, 0, -34.7282336861499404, 0, 0, 0, 277.825869489199523, 0, -158.757639708114013, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.992235248175712583, 0, -52.0923505292249106, 0, 277.825869489199523, 0, -277.825869489199523, 0, 0, 0, 21.1676852944152018, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.248058812043928146, 0, -17.3641168430749702, 0, 138.912934744599762, 0, -277.825869489199523, 0, 158.757639708114013, 0, -21.1676852944152018, 0, 0, + 0, 0, -2.48058812043928146, 0, 0, 0, 0, -2.48058812043928146, 0, 46.3043115815332539, 0, 0, 0, 0, 0, 0, 14.8835287226356887, 0, 0, 0, -166.695521693519714, 0, 0, 0, 0, 0, 0, 0, 0, 34.7282336861499404, 0, -277.825869489199523, 0, 166.695521693519714, 0, 158.757639708114013, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27.286469324832096, 0, -370.434492652266031, 0, 833.47760846759857, 0, -317.515279416228027, 0, -35.279475490692003, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7.44176436131784437, 0, -138.912934744599762, 0, 500.086565080559142, 0, -476.27291912434204, 0, 105.838426472076009, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, -3.13772335893768356, 0, 0, 0, 0, -3.13772335893768356, 0, 58.5708360335034265, 0, 0, 0, 0, 0, 0, 18.8263401536261014, 0, 0, 0, -210.855009720612336, 0, 0, 0, 0, 0, 0, 0, 0, 43.9281270251275699, 0, -351.425016201020559, 0, 210.855009720612336, 0, 200.814294972011748, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34.5149569483145192, 0, -468.566688268027412, 0, 1054.27504860306168, 0, -401.628589944023496, 0, -44.6253988826692774, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9.41317007681305069, 0, -175.71250810051028, 0, 632.565029161837007, 0, -602.442884916035244, 0, 133.876196648007832, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0.196107709933605223, 0, 0, -0.392215419867210446, 0, -12.5508934357507343, 0, 0, 0, 0, -3.33383106887128879, 0, 37.6526803072522028, 0, 87.8562540502551398, 0, 0, 0, 0, 0, 0, -5.49101587814094624, 0, 175.71250810051028, 0, -351.425016201020559, 0, -140.570006480408224, 0, 0, 0, 0, 0, 0, 0, 0, -3.33383106887128879, 0, 175.71250810051028, 0, -878.562540502551398, 0, 702.850032402041119, 0, 50.203573743002937, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.392215419867210446, 0, 37.6526803072522028, 0, -351.425016201020559, 0, 702.850032402041119, 0, -301.221442458017622, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.196107709933605223, 0, -12.5508934357507343, 0, 87.8562540502551398, 0, -140.570006480408224, 0, 50.203573743002937, 0, 0, 0, 0, + + 0.269524267351414689, 0, 0, -0.539048534702829378, 0, -17.2495531104905401, 0, 0, 0, 0, -4.58191254497404971, 0, 51.7486593314716203, 0, 120.746871773433781, 0, 0, 0, 0, 0, 0, -7.54667948583961129, 0, 241.493743546867561, 0, -482.987487093735122, 0, -193.194994837494049, 0, 0, 0, 0, 0, 0, 0, 0, -4.58191254497404971, 0, 241.493743546867561, 0, -1207.46871773433781, 0, 965.974974187470245, 0, 68.9982124419621604, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.539048534702829378, 0, 51.7486593314716203, 0, -482.987487093735122, 0, 965.974974187470245, 0, -413.989274651772962, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.269524267351414689, 0, -17.2495531104905401, 0, 120.746871773433781, 0, -193.194994837494049, 0, 68.9982124419621604, 0, 0, 0, 0, + 0, 0, 2.15619413881131751, 0, 0, 0, 0, -15.0933589716792226, 0, -34.4991062209810802, 0, 0, 0, 0, 0, 0, -47.4362710538489852, 0, 275.992849767848641, 0, 96.5974974187470245, 0, 0, 0, 0, 0, 0, 0, 0, -30.1867179433584452, 0, 482.987487093735122, 0, -869.37747676872322, 0, -55.1985699535697283, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10.7809706940565876, 0, 0, 0, -482.987487093735122, 0, 551.985699535697283, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10.7809706940565876, 0, -172.495531104905401, 0, 482.987487093735122, 0, -275.992849767848641, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 3.23429120821697627, 0, 0, 0, 0, -22.6400384575188339, 0, -51.7486593314716203, 0, 0, 0, 0, 0, 0, -71.1544065807734779, 0, 413.989274651772962, 0, 144.896246128120537, 0, 0, 0, 0, 0, 0, 0, 0, -45.2800769150376677, 0, 724.481230640602684, 0, -1304.06621515308483, 0, -82.7978549303545924, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16.1714560410848813, 0, 0, 0, -724.481230640602684, 0, 827.978549303545924, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16.1714560410848813, 0, -258.743296657358101, 0, 724.481230640602684, 0, -413.989274651772962, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + -0.179682844900943126, 0, 0, 2.15619413881131751, 0, 9.7028736246509288, 0, 0, 0, 0, 4.8514368123254644, 0, -126.137357120462074, 0, -51.7486593314716203, 0, 0, 0, 0, 0, 0, 0, 0, -135.840230745113003, 0, 724.481230640602684, 0, 48.2987487093735122, 0, 0, 0, 0, 0, 0, 0, 0, -4.8514368123254644, 0, 135.840230745113003, 0, 0, 0, -724.481230640602684, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2.15619413881131751, 0, 126.137357120462074, 0, -724.481230640602684, 0, 724.481230640602684, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.179682844900943126, 0, -9.7028736246509288, 0, 51.7486593314716203, 0, -48.2987487093735122, 0, 0, 0, 0, 0, 0, + + -0.296029093715521549, 0, 0, 3.55234912458625859, 0, 15.9855710606381636, 0, 0, 0, 0, 7.99278553031908182, 0, -207.812423788296127, 0, -85.2563789900702061, 0, 0, 0, 0, 0, 0, 0, 0, -223.797994848934291, 0, 1193.58930586098289, 0, 79.5726203907321924, 0, 0, 0, 0, 0, 0, 0, 0, -7.99278553031908182, 0, 223.797994848934291, 0, 0, 0, -1193.58930586098289, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -3.55234912458625859, 0, 207.812423788296127, 0, -1193.58930586098289, 0, 1193.58930586098289, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.296029093715521549, 0, -15.9855710606381636, 0, 85.2563789900702061, 0, -79.5726203907321924, 0, 0, 0, 0, 0, 0, + 0, 0, -1.77617456229312929, 0, 0, 0, 0, 33.7473166835694566, 0, 21.3140947475175515, 0, 0, 0, 0, 0, 0, 10.6570473737587758, 0, -426.281894950351031, 0, -34.1025515960280824, 0, 0, 0, 0, 0, 0, 0, 0, -74.5993316163114303, 0, 298.397326465245721, 0, 716.153583516589731, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -37.2996658081557152, 0, 596.794652930491443, 0, -1193.58930586098289, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12.4332219360519051, 0, -149.198663232622861, 0, 238.717861172196577, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, -3.2428362461160392, 0, 0, 0, 0, 61.6138886762047449, 0, 38.9140349533924704, 0, 0, 0, 0, 0, 0, 19.4570174766962352, 0, -778.280699067849409, 0, -62.2624559254279527, 0, 0, 0, 0, 0, 0, 0, 0, -136.199122336873647, 0, 544.796489347494586, 0, 1307.51157443398701, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -68.0995611684368233, 0, 1089.59297869498917, 0, -2179.18595738997834, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22.6998537228122744, 0, -272.398244673747293, 0, 435.837191477995669, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0.16214181230580196, 0, 0, -4.21568711995085096, 0, -6.48567249223207841, 0, 0, 0, 0, 2.4321271845870294, 0, 175.113157290266117, 0, 19.4570174766962352, 0, 0, 0, 0, 0, 0, 13.6199122336873647, 0, -272.398244673747293, 0, -544.796489347494586, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2.4321271845870294, 0, -272.398244673747293, 0, 1361.99122336873647, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -4.21568711995085096, 0, 175.113157290266117, 0, -544.796489347494586, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.16214181230580196, 0, -6.48567249223207841, 0, 19.4570174766962352, 0, 0, 0, 0, 0, 0, 0, 0, + + 0.332291833560202966, 0, 0, -8.63958767256527712, 0, -13.2916733424081186, 0, 0, 0, 0, 4.98437750340304449, 0, 358.875180245019203, 0, 39.8750200272243559, 0, 0, 0, 0, 0, 0, 27.9125140190570492, 0, -558.250280381140983, 0, -1116.50056076228197, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4.98437750340304449, 0, -558.250280381140983, 0, 2791.25140190570492, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8.63958767256527712, 0, 358.875180245019203, 0, -1116.50056076228197, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.332291833560202966, 0, -13.2916733424081186, 0, 39.8750200272243559, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1.32916733424081186, 0, 0, 0, 0, -46.5208566984284153, 0, -8.86111556160541243, 0, 0, 0, 0, 0, 0, 119.625060081673068, 0, 319.000160217794847, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 55.8250280381140983, 0, -1116.50056076228197, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -99.6875500680608898, 0, 744.333707174854644, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11.9625060081673068, 0, -79.7500400544487119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 3.11717370598279997, 0, 0, 0, 0, -109.101079709397999, 0, -20.7811580398853331, 0, 0, 0, 0, 0, 0, 280.545633538451997, 0, 748.121689435871992, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 130.921295651277599, 0, -2618.42591302555197, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -233.788027948709998, 0, 1745.61727535036798, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28.0545633538451997, 0, -187.030422358967998, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + -0.141689713908309089, 0, 0, 6.23434741196559994, 0, 3.11717370598279997, 0, 0, 0, 0, -23.3788027948709998, 0, -140.272816769225999, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 654.606478256387993, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23.3788027948709998, 0, -654.606478256387993, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -6.23434741196559994, 0, 140.272816769225999, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.141689713908309089, 0, -3.11717370598279997, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + -0.392321052893598442, 0, 0, 17.2621263273183314, 0, 8.63106316365916572, 0, 0, 0, 0, -64.7329737274437429, 0, -388.397842364662457, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1812.5232643684248, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64.7329737274437429, 0, -1812.5232643684248, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -17.2621263273183314, 0, 388.397842364662457, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.392321052893598442, 0, -8.63106316365916572, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, -0.784642105787196884, 0, 0, 0, 0, 43.1553158182958286, 0, 0, 0, 0, 0, 0, 0, 0, -258.931894909774972, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 362.50465287368496, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -129.465947454887486, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8.63106316365916572, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, -2.71807998596251762, 0, 0, 0, 0, 149.494399227938469, 0, 0, 0, 0, 0, 0, 0, 0, -896.966395367630815, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1255.75295351468314, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -448.483197683815407, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29.8988798455876938, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0.113253332748438234, 0, 0, -7.47471996139692346, 0, 0, 0, 0, 0, 0, 56.0603997104769259, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -104.646079459556928, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56.0603997104769259, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7.47471996139692346, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.113253332748438234, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0.566266663742191171, 0, 0, -37.3735998069846173, 0, 0, 0, 0, 0, 0, 280.30199855238463, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -523.230397297784642, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 280.30199855238463, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -37.3735998069846173, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.566266663742191171, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +}; + +static dtype g_trans_cart2jI[] = { + 0, + 0, + 0, + 0, + 0, + 0.577350269189625764, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + -0.577350269189625764, + 0, + 0, + 0, + 0, + 0, + -0.707106781186547524, + 0, + 0, + -0.408248290463863016, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + -0.408248290463863016, + 0, + 0, + -0.707106781186547524, + 0, + 0, + 0, + 0, + 0, + 0.690988298942670958, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + -0.345494149471335479, + 0, + 0, + 0, + 0, + 0, + 0.598413420602149016, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + -0.598413420602149016, + 0, + 0, + 0, + 0, + 0, + 0.345494149471335479, + 0, + 0, + 0.690988298942670958, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + -0.772548404046379160, + 0, + 0, + 0, + 0, + 0, + -0.345494149471335479, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + -0.690988298942670958, + 0, + 0, + 0, + 0, + 0, + -0.488602511902919921, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + -0.488602511902919921, + 0, + 0, + 0, + 0, + 0, + -0.690988298942670958, + 0, + 0, + 0.345494149471335479, + 0, + 0, + 0, + 0, + 0, + 0.772548404046379160, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1.158822606069568741, + 0, + 0, + 0, + 0, + -0.386274202023189580, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + -0.772548404046379160, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1.727470747356677396, + 0, + 0, + 0, + 0, + 0, + 0, + 0.172747074735667739, + 0, + 0, + 0, + 0, + 0.172747074735667739, + 0, + -0.690988298942670958, + 0, + 0, + -0.244301255951459960, + 0, + 0, + 0, + 0, + -0.244301255951459960, + 0, + 0.977205023805839843, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0.244301255951459960, + 0, + 0, + 0, + 0, + 0.244301255951459960, + 0, + -0.977205023805839843, + 0, + 0, + -0.172747074735667739, + 0, + 0, + 0, + 0, + -0.172747074735667739, + 0, + 0.690988298942670958, + 0, + 0, + 0, + 0, + 0, + 1.727470747356677396, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + -0.772548404046379160, + 0, + 0, + 0, + 0, + 0, + 0, + -1.158822606069568741, + 0, + 0, + 0, + 0, + 0.386274202023189580, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + -1.251671470898352269, + 0, + 0, + 0, + 0, + 0.417223823632784089, + 0, + 0, + 0, + 0, + -0.473087347878780009, + 0, + 0, + 0, + 0, + 0.157695782626260003, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + -1.892349391515120036, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + -1.092548430592079070, + 0, + 0, + 0, + 0, + 0, + 0, + 0.273137107648019767, + 0, + 0, + 0, + 0, + 0.273137107648019767, + 0, + -1.092548430592079070, + 0, + 0, + 0.211571093830408607, + 0, + 0, + 0, + 0, + 0.211571093830408607, + 0, + -0.846284375321634430, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0.211571093830408607, + 0, + 0, + 0, + 0, + 0.211571093830408607, + 0, + -0.846284375321634430, + 0, + 0, + 0.273137107648019767, + 0, + 0, + 0, + 0, + 0.273137107648019767, + 0, + -1.092548430592079070, + 0, + 0, + 0, + 0, + 0, + 1.092548430592079070, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1.892349391515120036, + 0, + 0, + 0, + 0, + 0, + 0, + -0.473087347878780009, + 0, + 0, + 0, + 0, + 0.157695782626260003, + 0, + 0, + 0, + 0, + -1.251671470898352269, + 0, + 0, + 0, + 0, + 0.417223823632784089, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + + 0, 1.668895294531136358, 0, 0, 0, 0, -1.668895294531136358, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, -1.251671470898352269, 0, 0, 0, 0, 0, 0, 0.417223823632784089, 0, 0, 0, + + 0, 0, 0, 0, 3.311611435151460063, 0, 0, 0, 0, 0, 0, -1.103870478383820021, 0, 0, 0, + 0, 0.315391565252520006, 0, 0, 0, 0, 0.315391565252520006, 0, -1.892349391515120036, 0, 0, 0, 0, 0, 0, + + 0, -0.546274215296039535, 0, 0, 0, 0, -0.546274215296039535, 0, 3.277645291776237211, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0.819411322944059302, 0, 0, 0, 0, 0, 0, 0.819411322944059302, 0, -1.092548430592079070, 0, + + 0, 0, 0, 0, -1.057855469152043038, 0, 0, 0, 0, 0, 0, -1.057855469152043038, 0, 1.410473958869390717, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1.057855469152043038, 0, 0, 0, 0, 0, 0, 1.057855469152043038, 0, -1.410473958869390717, 0, + + 0, 0, 0, 0, -0.819411322944059302, 0, 0, 0, 0, 0, 0, -0.819411322944059302, 0, 1.092548430592079070, 0, + 0, -0.546274215296039535, 0, 0, 0, 0, -0.546274215296039535, 0, 3.277645291776237211, 0, 0, 0, 0, 0, 0, + + 0, 0.315391565252520006, 0, 0, 0, 0, 0.315391565252520006, 0, -1.892349391515120036, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, -3.311611435151460063, 0, 0, 0, 0, 0, 0, 1.103870478383820021, 0, 0, 0, + + 0, 0, 0, 0, 1.251671470898352269, 0, 0, 0, 0, 0, 0, -0.417223823632784089, 0, 0, 0, + 0, 1.668895294531136358, 0, 0, 0, 0, -1.668895294531136358, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, -1.770130769779930531, 0, 0, 0, 0, 1.770130769779930531, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, -0.590043589926643510, 0, 0, 0, 0, 0.590043589926643510, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, -3.540261539559861062, 0, 0, 0, 0, 0, 0, 1.180087179853287020, 0, 0, 0, + + 0, 0, 0, 0, -1.770130769779930531, 0, 0, 0, 0, 0, 0, 0.590043589926643510, 0, 0, 0, + 0, 0.590043589926643510, 0, 0, 0, 0, 0.590043589926643510, 0, -3.540261539559861062, 0, 0, 0, 0, 0, 0, + + 0, 0.386274202023189580, 0, 0, 0, 0, 0.386274202023189580, 0, -2.317645212139137482, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1.158822606069568741, 0, 0, 0, 0, 0, 0, 1.158822606069568741, 0, -1.545096808092758321, 0, + + 0, 0, 0, 0, 0.946174695757560018, 0, 0, 0, 0, 0, 0, 0.946174695757560018, 0, -1.261566261010080024, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0.946174695757560018, 0, 0, 0, 0, 0, 0, 0.946174695757560018, 0, -1.261566261010080024, 0, + + 0, 0, 0, 0, 1.158822606069568741, 0, 0, 0, 0, 0, 0, 1.158822606069568741, 0, -1.545096808092758321, 0, + 0, -0.386274202023189580, 0, 0, 0, 0, -0.386274202023189580, 0, 2.317645212139137482, 0, 0, 0, 0, 0, 0, + + 0, -0.590043589926643510, 0, 0, 0, 0, -0.590043589926643510, 0, 3.540261539559861062, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, -1.770130769779930531, 0, 0, 0, 0, 0, 0, 0.590043589926643510, 0, 0, 0, + + 0, 0, 0, 0, -3.540261539559861062, 0, 0, 0, 0, 0, 0, 1.180087179853287020, 0, 0, 0, + 0, 0.590043589926643510, 0, 0, 0, 0, -0.590043589926643510, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 1.770130769779930531, 0, 0, 0, 0, -1.770130769779930531, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 2.212663462224913163, 0, 0, 0, 0, -4.425326924449826327, 0, 0, 0, 0, 0, 0, 0, 0, 0.442532692444982632, 0, 0, 0, 0, 0, + 0, 0, 0, 0, -1.770130769779930531, 0, 0, 0, 0, 0, 0, 1.770130769779930531, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, 5.310392309339791593, 0, 0, 0, 0, 0, 0, -5.310392309339791593, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0.442532692444982632, 0, 0, 0, 0, 0.295021794963321755, 0, -3.540261539559861062, 0, 0, 0, 0, 0, 0, -0.147510897481660877, 0, 1.180087179853287020, 0, 0, 0, + + 0, -0.885065384889965265, 0, 0, 0, 0, -0.590043589926643510, 0, 7.080523079119722124, 0, 0, 0, 0, 0, 0, 0.295021794963321755, 0, -2.360174359706574041, 0, 0, 0, + 0, 0, 0, 0, 1.770130769779930531, 0, 0, 0, 0, 0, 0, 1.770130769779930531, 0, -3.540261539559861062, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, -2.703919414162327062, 0, 0, 0, 0, 0, 0, -2.703919414162327062, 0, 5.407838828324654124, 0, 0, 0, 0, 0, 0, 0, + 0, -0.193137101011594790, 0, 0, 0, 0, -0.386274202023189580, 0, 2.317645212139137482, 0, 0, 0, 0, 0, 0, -0.193137101011594790, 0, 2.317645212139137482, 0, -1.545096808092758321, 0, + + 0, 0.236543673939390004, 0, 0, 0, 0, 0.473087347878780009, 0, -2.838524087272680054, 0, 0, 0, 0, 0, 0, 0.236543673939390004, 0, -2.838524087272680054, 0, 1.892349391515120036, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, -0.236543673939390004, 0, 0, 0, 0, -0.473087347878780009, 0, 2.838524087272680054, 0, 0, 0, 0, 0, 0, -0.236543673939390004, 0, 2.838524087272680054, 0, -1.892349391515120036, 0, + + 0, 0.193137101011594790, 0, 0, 0, 0, 0.386274202023189580, 0, -2.317645212139137482, 0, 0, 0, 0, 0, 0, 0.193137101011594790, 0, -2.317645212139137482, 0, 1.545096808092758321, 0, + 0, 0, 0, 0, -2.703919414162327062, 0, 0, 0, 0, 0, 0, -2.703919414162327062, 0, 5.407838828324654124, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, 1.770130769779930531, 0, 0, 0, 0, 0, 0, 1.770130769779930531, 0, -3.540261539559861062, 0, 0, 0, 0, 0, 0, 0, + 0, 0.885065384889965265, 0, 0, 0, 0, 0.590043589926643510, 0, -7.080523079119722124, 0, 0, 0, 0, 0, 0, -0.295021794963321755, 0, 2.360174359706574041, 0, 0, 0, + + 0, -0.442532692444982632, 0, 0, 0, 0, -0.295021794963321755, 0, 3.540261539559861062, 0, 0, 0, 0, 0, 0, 0.147510897481660877, 0, -1.180087179853287020, 0, 0, 0, + 0, 0, 0, 0, 5.310392309339791593, 0, 0, 0, 0, 0, 0, -5.310392309339791593, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, -1.770130769779930531, 0, 0, 0, 0, 0, 0, 1.770130769779930531, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, -2.212663462224913163, 0, 0, 0, 0, 4.425326924449826327, 0, 0, 0, 0, 0, 0, 0, 0, -0.442532692444982632, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, -2.320661017204290803, 0, 0, 0, 0, 4.641322034408581606, 0, 0, 0, 0, 0, 0, 0, 0, -0.464132203440858160, 0, 0, 0, 0, 0, + + 0, -0.699705623606466358, 0, 0, 0, 0, 1.399411247212932717, 0, 0, 0, 0, 0, 0, 0, 0, -0.139941124721293271, 0, 0, 0, 0, 0, + 0, 0, 0, 0, -5.597644988851730871, 0, 0, 0, 0, 0, 0, 5.597644988851730871, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, -2.503342941796704538, 0, 0, 0, 0, 0, 0, 2.503342941796704538, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0.938753603173764201, 0, 0, 0, 0, 0.625835735449176134, 0, -7.510028825390113615, 0, 0, 0, 0, 0, 0, -0.312917867724588067, 0, 2.503342941796704538, 0, 0, 0, + + 0, 0.541989645495103885, 0, 0, 0, 0, 0.361326430330069256, 0, -4.335917163960831083, 0, 0, 0, 0, 0, 0, -0.180663215165034628, 0, 1.445305721320277027, 0, 0, 0, + 0, 0, 0, 0, 2.890611442640554055, 0, 0, 0, 0, 0, 0, 2.890611442640554055, 0, -5.781222885281108110, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, 2.043970952866564726, 0, 0, 0, 0, 0, 0, 2.043970952866564726, 0, -4.087941905733129453, 0, 0, 0, 0, 0, 0, 0, + 0, -0.255496369108320590, 0, 0, 0, 0, -0.510992738216641181, 0, 3.065956429299847090, 0, 0, 0, 0, 0, 0, -0.255496369108320590, 0, 3.065956429299847090, 0, -2.043970952866564726, 0, + + 0, -0.215933843419584674, 0, 0, 0, 0, -0.431867686839169349, 0, 2.591206121035016094, 0, 0, 0, 0, 0, 0, -0.215933843419584674, 0, 2.591206121035016094, 0, -1.727470747356677396, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, -0.215933843419584674, 0, 0, 0, 0, -0.431867686839169349, 0, 2.591206121035016094, 0, 0, 0, 0, 0, 0, -0.215933843419584674, 0, 2.591206121035016094, 0, -1.727470747356677396, 0, + + 0, -0.255496369108320590, 0, 0, 0, 0, -0.510992738216641181, 0, 3.065956429299847090, 0, 0, 0, 0, 0, 0, -0.255496369108320590, 0, 3.065956429299847090, 0, -2.043970952866564726, 0, + 0, 0, 0, 0, -2.043970952866564726, 0, 0, 0, 0, 0, 0, -2.043970952866564726, 0, 4.087941905733129453, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, -2.890611442640554055, 0, 0, 0, 0, 0, 0, -2.890611442640554055, 0, 5.781222885281108110, 0, 0, 0, 0, 0, 0, 0, + 0, 0.541989645495103885, 0, 0, 0, 0, 0.361326430330069256, 0, -4.335917163960831083, 0, 0, 0, 0, 0, 0, -0.180663215165034628, 0, 1.445305721320277027, 0, 0, 0, + + 0, 0.938753603173764201, 0, 0, 0, 0, 0.625835735449176134, 0, -7.510028825390113615, 0, 0, 0, 0, 0, 0, -0.312917867724588067, 0, 2.503342941796704538, 0, 0, 0, + 0, 0, 0, 0, 2.503342941796704538, 0, 0, 0, 0, 0, 0, -2.503342941796704538, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, 5.597644988851730871, 0, 0, 0, 0, 0, 0, -5.597644988851730871, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, -0.699705623606466358, 0, 0, 0, 0, 1.399411247212932717, 0, 0, 0, 0, 0, 0, 0, 0, -0.139941124721293271, 0, 0, 0, 0, 0, + + 0, -2.320661017204290803, 0, 0, 0, 0, 4.641322034408581606, 0, 0, 0, 0, 0, 0, 0, 0, -0.464132203440858160, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 2.7847932206451498, 0, 0, 0, 0, -9.2826440688171665, 0, 0, 0, 0, 0, 0, 0, 0, 2.7847932206451498, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, -2.3206610172042916, 0, 0, 0, 0, 0, 0, 4.6413220344085833, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.4641322034408583, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, 7.6967618596711320, 0, 0, 0, 0, 0, 0, -15.3935237193422640, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.5393523719342264, 0, 0, 0, 0, 0, + 0, 0.5597644988851730, 0, 0, 0, 0, 0, 0, -5.5976449888517319, 0, 0, 0, 0, 0, 0, -0.5597644988851730, 0, 5.5976449888517319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, -1.2516714708983521, 0, 0, 0, 0, 0, 0, 12.5167147089835247, 0, 0, 0, 0, 0, 0, 1.2516714708983521, 0, -12.5167147089835247, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 2.8162608095212929, 0, 0, 0, 0, 0, 0, 1.8775072063475287, 0, -7.5100288253901146, 0, 0, 0, 0, 0, 0, 0, 0, -0.9387536031737643, 0, 2.5033429417967050, 0, 0, 0, + + 0, 0, 0, 0, -4.8779068094559346, 0, 0, 0, 0, 0, 0, -3.2519378729706236, 0, 13.0077514918824946, 0, 0, 0, 0, 0, 0, 0, 0, 1.6259689364853118, 0, -4.3359171639608318, 0, 0, 0, + 0, -0.3613264303300693, 0, 0, 0, 0, -0.7226528606601387, 0, 5.7812228852811094, 0, 0, 0, 0, 0, 0, -0.3613264303300693, 0, 5.7812228852811094, 0, -5.7812228852811094, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0.5109927382166413, 0, 0, 0, 0, 1.0219854764332825, 0, -8.1758838114662602, 0, 0, 0, 0, 0, 0, 0.5109927382166413, 0, -8.1758838114662602, 0, 8.1758838114662602, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, -1.2774818455416030, 0, 0, 0, 0, 0, 0, -2.5549636910832061, 0, 5.1099273821664122, 0, 0, 0, 0, 0, 0, 0, 0, -1.2774818455416030, 0, 5.1099273821664122, 0, -2.0439709528665646, 0, + + 0, 0, 0, 0, 1.5115369039370925, 0, 0, 0, 0, 0, 0, 3.0230738078741850, 0, -6.0461476157483700, 0, 0, 0, 0, 0, 0, 0, 0, 1.5115369039370925, 0, -6.0461476157483700, 0, 2.4184590462993478, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, -1.5115369039370925, 0, 0, 0, 0, 0, 0, -3.0230738078741850, 0, 6.0461476157483700, 0, 0, 0, 0, 0, 0, 0, 0, -1.5115369039370925, 0, 6.0461476157483700, 0, -2.4184590462993478, 0, + + 0, 0, 0, 0, 1.2774818455416030, 0, 0, 0, 0, 0, 0, 2.5549636910832061, 0, -5.1099273821664122, 0, 0, 0, 0, 0, 0, 0, 0, 1.2774818455416030, 0, -5.1099273821664122, 0, 2.0439709528665646, 0, + 0, 0.5109927382166413, 0, 0, 0, 0, 1.0219854764332825, 0, -8.1758838114662602, 0, 0, 0, 0, 0, 0, 0.5109927382166413, 0, -8.1758838114662602, 0, 8.1758838114662602, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, -0.3613264303300693, 0, 0, 0, 0, -0.7226528606601387, 0, 5.7812228852811094, 0, 0, 0, 0, 0, 0, -0.3613264303300693, 0, 5.7812228852811094, 0, -5.7812228852811094, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 4.8779068094559346, 0, 0, 0, 0, 0, 0, 3.2519378729706236, 0, -13.0077514918824946, 0, 0, 0, 0, 0, 0, 0, 0, -1.6259689364853118, 0, 4.3359171639608318, 0, 0, 0, + + 0, 0, 0, 0, -2.8162608095212929, 0, 0, 0, 0, 0, 0, -1.8775072063475287, 0, 7.5100288253901146, 0, 0, 0, 0, 0, 0, 0, 0, 0.9387536031737643, 0, -2.5033429417967050, 0, 0, 0, + 0, -1.2516714708983521, 0, 0, 0, 0, 0, 0, 12.5167147089835247, 0, 0, 0, 0, 0, 0, 1.2516714708983521, 0, -12.5167147089835247, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0.5597644988851730, 0, 0, 0, 0, 0, 0, -5.5976449888517319, 0, 0, 0, 0, 0, 0, -0.5597644988851730, 0, 5.5976449888517319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, -7.6967618596711320, 0, 0, 0, 0, 0, 0, 15.3935237193422640, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1.5393523719342264, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, 2.3206610172042916, 0, 0, 0, 0, 0, 0, -4.6413220344085833, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.4641322034408583, 0, 0, 0, 0, 0, + 0, 2.7847932206451498, 0, 0, 0, 0, -9.2826440688171665, 0, 0, 0, 0, 0, 0, 0, 0, 2.7847932206451498, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, -2.8985046814803979, 0, 0, 0, 0, 9.6616822716013271, 0, 0, 0, 0, 0, 0, 0, 0, -2.8985046814803979, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, -0.8039005577884609, 0, 0, 0, 0, 2.6796685259615369, 0, 0, 0, 0, 0, 0, 0, 0, -0.8039005577884609, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, -8.0390055778846108, 0, 0, 0, 0, 0, 0, 16.0780111557692216, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1.6078011155769223, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, -3.2819102842008516, 0, 0, 0, 0, 0, 0, 6.5638205684017032, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.6563820568401703, 0, 0, 0, 0, 0, + 0, 1.3127641136803401, 0, 0, 0, 0, 0, 0, -13.1276411368034029, 0, 0, 0, 0, 0, 0, -1.3127641136803401, 0, 13.1276411368034029, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0.6855686991966986, 0, 0, 0, 0, 0, 0, -6.8556869919669872, 0, 0, 0, 0, 0, 0, -0.6855686991966986, 0, 6.8556869919669872, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 5.1417652439752395, 0, 0, 0, 0, 0, 0, 3.4278434959834931, 0, -13.7113739839339726, 0, 0, 0, 0, 0, 0, 0, 0, -1.7139217479917466, 0, 4.5704579946446584, 0, 0, 0, + + 0, 0, 0, 0, 3.2519378729706232, 0, 0, 0, 0, 0, 0, 2.1679585819804159, 0, -8.6718343279216636, 0, 0, 0, 0, 0, 0, 0, 0, -1.0839792909902080, 0, 2.8906114426405547, 0, 0, 0, + 0, -0.5419896454951040, 0, 0, 0, 0, -1.0839792909902080, 0, 8.6718343279216636, 0, 0, 0, 0, 0, 0, -0.5419896454951040, 0, 8.6718343279216636, 0, -8.6718343279216636, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, -0.4039752301426884, 0, 0, 0, 0, -0.8079504602853768, 0, 6.4636036822830141, 0, 0, 0, 0, 0, 0, -0.4039752301426884, 0, 6.4636036822830141, 0, -6.4636036822830141, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, -1.6159009205707533, 0, 0, 0, 0, 0, 0, -3.2318018411415066, 0, 6.4636036822830132, 0, 0, 0, 0, 0, 0, 0, 0, -1.6159009205707533, 0, 6.4636036822830132, 0, -2.5854414729132049, 0, + + 0, 0, 0, 0, -1.3994112472129328, 0, 0, 0, 0, 0, 0, -2.7988224944258655, 0, 5.5976449888517310, 0, 0, 0, 0, 0, 0, 0, 0, -1.3994112472129328, 0, 5.5976449888517310, 0, -2.2390579955406920, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, -1.3994112472129328, 0, 0, 0, 0, 0, 0, -2.7988224944258655, 0, 5.5976449888517310, 0, 0, 0, 0, 0, 0, 0, 0, -1.3994112472129328, 0, 5.5976449888517310, 0, -2.2390579955406920, 0, + + 0, 0, 0, 0, -1.6159009205707533, 0, 0, 0, 0, 0, 0, -3.2318018411415066, 0, 6.4636036822830132, 0, 0, 0, 0, 0, 0, 0, 0, -1.6159009205707533, 0, 6.4636036822830132, 0, -2.5854414729132049, 0, + 0, 0.4039752301426884, 0, 0, 0, 0, 0.8079504602853768, 0, -6.4636036822830141, 0, 0, 0, 0, 0, 0, 0.4039752301426884, 0, -6.4636036822830141, 0, 6.4636036822830141, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0.5419896454951040, 0, 0, 0, 0, 1.0839792909902080, 0, -8.6718343279216636, 0, 0, 0, 0, 0, 0, 0.5419896454951040, 0, -8.6718343279216636, 0, 8.6718343279216636, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 3.2519378729706232, 0, 0, 0, 0, 0, 0, 2.1679585819804159, 0, -8.6718343279216636, 0, 0, 0, 0, 0, 0, 0, 0, -1.0839792909902080, 0, 2.8906114426405547, 0, 0, 0, + + 0, 0, 0, 0, 5.1417652439752395, 0, 0, 0, 0, 0, 0, 3.4278434959834931, 0, -13.7113739839339726, 0, 0, 0, 0, 0, 0, 0, 0, -1.7139217479917466, 0, 4.5704579946446584, 0, 0, 0, + 0, -0.6855686991966986, 0, 0, 0, 0, 0, 0, 6.8556869919669872, 0, 0, 0, 0, 0, 0, 0.6855686991966986, 0, -6.8556869919669872, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, -1.3127641136803401, 0, 0, 0, 0, 0, 0, 13.1276411368034029, 0, 0, 0, 0, 0, 0, 1.3127641136803401, 0, -13.1276411368034029, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, -3.2819102842008516, 0, 0, 0, 0, 0, 0, 6.5638205684017032, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.6563820568401703, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, -8.0390055778846108, 0, 0, 0, 0, 0, 0, 16.0780111557692216, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1.6078011155769223, 0, 0, 0, 0, 0, + 0, 0.8039005577884609, 0, 0, 0, 0, -2.6796685259615369, 0, 0, 0, 0, 0, 0, 0, 0, 0.8039005577884609, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 2.8985046814803979, 0, 0, 0, 0, -9.6616822716013271, 0, 0, 0, 0, 0, 0, 0, 0, 2.8985046814803979, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 3.3815887950604644, 0, 0, 0, 0, -16.9079439753023237, 0, 0, 0, 0, 0, 0, 0, 0, 10.1447663851813932, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.4830841135800663, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, -2.8985046814803970, 0, 0, 0, 0, 0, 0, 9.6616822716013235, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2.8985046814803970, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, 10.4507072512499910, 0, 0, 0, 0, 0, 0, -34.8356908374999676, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10.4507072512499910, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0.6699171314903840, 0, 0, 0, 0, -0.6699171314903840, 0, -8.0390055778846072, 0, 0, 0, 0, 0, 0, -1.2058508366826914, 0, 16.0780111557692145, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.1339834262980768, 0, -1.6078011155769216, 0, 0, 0, 0, 0, + + 0, -1.6409551421004256, 0, 0, 0, 0, 1.6409551421004256, 0, 19.6914617052051071, 0, 0, 0, 0, 0, 0, 2.9537192557807663, 0, -39.3829234104102142, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.3281910284200851, 0, 3.9382923410410213, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 3.9382923410410213, 0, 0, 0, 0, 0, 0, 0, 0, -13.1276411368034047, 0, 0, 0, 0, 0, 0, 0, 0, -3.9382923410410213, 0, 13.1276411368034047, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, -7.5412556911636850, 0, 0, 0, 0, 0, 0, 0, 0, 25.1375189705456172, 0, 0, 0, 0, 0, 0, 0, 0, 7.5412556911636850, 0, -25.1375189705456172, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, -0.5141765243975239, 0, 0, 0, 0, -0.8569608739958733, 0, 10.2835304879504772, 0, 0, 0, 0, 0, 0, -0.1713921747991747, 0, 6.8556869919669845, 0, -13.7113739839339726, 0, 0, 0, 0, 0, 0, 0, 0, 0.1713921747991747, 0, -3.4278434959834923, 0, 4.5704579946446575, 0, 0, 0, + + 0, 0.8129844682426559, 0, 0, 0, 0, 1.3549741137377600, 0, -16.2596893648531164, 0, 0, 0, 0, 0, 0, 0.2709948227475520, 0, -10.8397929099020782, 0, 21.6795858198041600, 0, 0, 0, 0, 0, 0, 0, 0, -0.2709948227475520, 0, 5.4198964549510391, 0, -7.2265286066013861, 0, 0, 0, + 0, 0, 0, 0, -2.7099482274755200, 0, 0, 0, 0, 0, 0, -5.4198964549510400, 0, 14.4530572132027721, 0, 0, 0, 0, 0, 0, 0, 0, -2.7099482274755200, 0, 14.4530572132027721, 0, -8.6718343279216654, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, 3.6357770712841964, 0, 0, 0, 0, 0, 0, 7.2715541425683927, 0, -19.3908110468490449, 0, 0, 0, 0, 0, 0, 0, 0, 3.6357770712841964, 0, -19.3908110468490449, 0, 11.6344866281094284, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0.2019876150713442, 0, 0, 0, 0, 0.6059628452140327, 0, -4.8477027617122603, 0, 0, 0, 0, 0, 0, 0.6059628452140327, 0, -9.6954055234245207, 0, 9.6954055234245207, 0, 0, 0, 0, 0, 0, 0, 0, 0.2019876150713442, 0, -4.8477027617122603, 0, 9.6954055234245207, 0, -2.5854414729132063, 0, + + 0, -0.2332352078688221, 0, 0, 0, 0, -0.6997056236064664, 0, 5.5976449888517301, 0, 0, 0, 0, 0, 0, -0.6997056236064664, 0, 11.1952899777034602, 0, -11.1952899777034602, 0, 0, 0, 0, 0, 0, 0, 0, -0.2332352078688221, 0, 5.5976449888517301, 0, -11.1952899777034602, 0, 2.9854106607209236, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0.2332352078688221, 0, 0, 0, 0, 0.6997056236064664, 0, -5.5976449888517301, 0, 0, 0, 0, 0, 0, 0.6997056236064664, 0, -11.1952899777034602, 0, 11.1952899777034602, 0, 0, 0, 0, 0, 0, 0, 0, 0.2332352078688221, 0, -5.5976449888517301, 0, 11.1952899777034602, 0, -2.9854106607209236, 0, + + 0, -0.2019876150713442, 0, 0, 0, 0, -0.6059628452140327, 0, 4.8477027617122603, 0, 0, 0, 0, 0, 0, -0.6059628452140327, 0, 9.6954055234245207, 0, -9.6954055234245207, 0, 0, 0, 0, 0, 0, 0, 0, -0.2019876150713442, 0, 4.8477027617122603, 0, -9.6954055234245207, 0, 2.5854414729132063, 0, + 0, 0, 0, 0, 3.6357770712841964, 0, 0, 0, 0, 0, 0, 7.2715541425683927, 0, -19.3908110468490449, 0, 0, 0, 0, 0, 0, 0, 0, 3.6357770712841964, 0, -19.3908110468490449, 0, 11.6344866281094284, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, -2.7099482274755200, 0, 0, 0, 0, 0, 0, -5.4198964549510400, 0, 14.4530572132027721, 0, 0, 0, 0, 0, 0, 0, 0, -2.7099482274755200, 0, 14.4530572132027721, 0, -8.6718343279216654, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, -0.8129844682426559, 0, 0, 0, 0, -1.3549741137377600, 0, 16.2596893648531164, 0, 0, 0, 0, 0, 0, -0.2709948227475520, 0, 10.8397929099020782, 0, -21.6795858198041600, 0, 0, 0, 0, 0, 0, 0, 0, 0.2709948227475520, 0, -5.4198964549510391, 0, 7.2265286066013861, 0, 0, 0, + + 0, 0.5141765243975239, 0, 0, 0, 0, 0.8569608739958733, 0, -10.2835304879504772, 0, 0, 0, 0, 0, 0, 0.1713921747991747, 0, -6.8556869919669845, 0, 13.7113739839339726, 0, 0, 0, 0, 0, 0, 0, 0, -0.1713921747991747, 0, 3.4278434959834923, 0, -4.5704579946446575, 0, 0, 0, + 0, 0, 0, 0, -7.5412556911636850, 0, 0, 0, 0, 0, 0, 0, 0, 25.1375189705456172, 0, 0, 0, 0, 0, 0, 0, 0, 7.5412556911636850, 0, -25.1375189705456172, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, 3.9382923410410213, 0, 0, 0, 0, 0, 0, 0, 0, -13.1276411368034047, 0, 0, 0, 0, 0, 0, 0, 0, -3.9382923410410213, 0, 13.1276411368034047, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1.6409551421004256, 0, 0, 0, 0, -1.6409551421004256, 0, -19.6914617052051071, 0, 0, 0, 0, 0, 0, -2.9537192557807663, 0, 39.3829234104102142, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.3281910284200851, 0, -3.9382923410410213, 0, 0, 0, 0, 0, + + 0, -0.6699171314903840, 0, 0, 0, 0, 0.6699171314903840, 0, 8.0390055778846072, 0, 0, 0, 0, 0, 0, 1.2058508366826914, 0, -16.0780111557692145, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.1339834262980768, 0, 1.6078011155769216, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 10.4507072512499910, 0, 0, 0, 0, 0, 0, -34.8356908374999676, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10.4507072512499910, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, -2.8985046814803970, 0, 0, 0, 0, 0, 0, 9.6616822716013235, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2.8985046814803970, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, -3.3815887950604644, 0, 0, 0, 0, 16.9079439753023237, 0, 0, 0, 0, 0, 0, 0, 0, -10.1447663851813932, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.4830841135800663, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, -3.5002769449938556, 0, 0, 0, 0, 17.5013847249692773, 0, 0, 0, 0, 0, 0, 0, 0, -10.5008308349815653, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5000395635705508, 0, 0, 0, 0, 0, 0, 0, + + 0, -0.9037676210049984, 0, 0, 0, 0, 4.5188381050249919, 0, 0, 0, 0, 0, 0, 0, 0, -2.7113028630149949, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.1291096601435712, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, -10.8452114520599796, 0, 0, 0, 0, 0, 0, 36.1507048401999356, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -10.8452114520599796, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, -4.0991046311514854, 0, 0, 0, 0, 0, 0, 13.6636821038382852, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -4.0991046311514854, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1.7079602629797861, 0, 0, 0, 0, -1.7079602629797861, 0, -20.4955231557574322, 0, 0, 0, 0, 0, 0, -3.0743284733636154, 0, 40.9910463115148644, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.3415920525959572, 0, -4.0991046311514863, 0, 0, 0, 0, 0, + + 0, 0.8204775710502128, 0, 0, 0, 0, -0.8204775710502128, 0, -9.8457308526025535, 0, 0, 0, 0, 0, 0, -1.4768596278903832, 0, 19.6914617052051071, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.1640955142100426, 0, -1.9691461705205107, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 7.8765846820820427, 0, 0, 0, 0, 0, 0, 0, 0, -26.2552822736068094, 0, 0, 0, 0, 0, 0, 0, 0, -7.8765846820820427, 0, 26.2552822736068094, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, 4.5475482864949495, 0, 0, 0, 0, 0, 0, 0, 0, -15.1584942883164988, 0, 0, 0, 0, 0, 0, 0, 0, -4.5475482864949495, 0, 15.1584942883164988, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, -0.8526653037178029, 0, 0, 0, 0, -1.4211088395296716, 0, 17.0533060743560583, 0, 0, 0, 0, 0, 0, -0.2842217679059343, 0, 11.3688707162373710, 0, -22.7377414324747456, 0, 0, 0, 0, 0, 0, 0, 0, 0.2842217679059343, 0, -5.6844353581186855, 0, 7.5792471441582485, 0, 0, 0, + + 0, -0.5748668304937213, 0, 0, 0, 0, -0.9581113841562022, 0, 11.4973366098744254, 0, 0, 0, 0, 0, 0, -0.1916222768312404, 0, 7.6648910732496169, 0, -15.3297821464992357, 0, 0, 0, 0, 0, 0, 0, 0, 0.1916222768312404, 0, -3.8324455366248085, 0, 5.1099273821664122, 0, 0, 0, + 0, 0, 0, 0, -3.8324455366248107, 0, 0, 0, 0, 0, 0, -7.6648910732496214, 0, 20.4397095286656523, 0, 0, 0, 0, 0, 0, 0, 0, -3.8324455366248107, 0, 20.4397095286656523, 0, -12.2638257171993938, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, -2.9685995477189673, 0, 0, 0, 0, 0, 0, -5.9371990954379346, 0, 15.8325309211678249, 0, 0, 0, 0, 0, 0, 0, 0, -2.9685995477189673, 0, 15.8325309211678249, 0, -9.4995185527006960, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0.2473832956432473, 0, 0, 0, 0, 0.7421498869297418, 0, -5.9371990954379337, 0, 0, 0, 0, 0, 0, 0.7421498869297418, 0, -11.8743981908758673, 0, 11.8743981908758673, 0, 0, 0, 0, 0, 0, 0, 0, 0.2473832956432473, 0, -5.9371990954379337, 0, 11.8743981908758673, 0, -3.1665061842335653, 0, + + 0, 0.2181715595945335, 0, 0, 0, 0, 0.6545146787836006, 0, -5.2361174302688038, 0, 0, 0, 0, 0, 0, 0.6545146787836006, 0, -10.4722348605376077, 0, 10.4722348605376077, 0, 0, 0, 0, 0, 0, 0, 0, 0.2181715595945335, 0, -5.2361174302688038, 0, 10.4722348605376077, 0, -2.7925959628100294, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0.2181715595945335, 0, 0, 0, 0, 0.6545146787836006, 0, -5.2361174302688038, 0, 0, 0, 0, 0, 0, 0.6545146787836006, 0, -10.4722348605376077, 0, 10.4722348605376077, 0, 0, 0, 0, 0, 0, 0, 0, 0.2181715595945335, 0, -5.2361174302688038, 0, 10.4722348605376077, 0, -2.7925959628100294, 0, + + 0, 0.2473832956432473, 0, 0, 0, 0, 0.7421498869297418, 0, -5.9371990954379337, 0, 0, 0, 0, 0, 0, 0.7421498869297418, 0, -11.8743981908758673, 0, 11.8743981908758673, 0, 0, 0, 0, 0, 0, 0, 0, 0.2473832956432473, 0, -5.9371990954379337, 0, 11.8743981908758673, 0, -3.1665061842335653, 0, + 0, 0, 0, 0, 2.9685995477189673, 0, 0, 0, 0, 0, 0, 5.9371990954379346, 0, -15.8325309211678249, 0, 0, 0, 0, 0, 0, 0, 0, 2.9685995477189673, 0, -15.8325309211678249, 0, 9.4995185527006960, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, 3.8324455366248107, 0, 0, 0, 0, 0, 0, 7.6648910732496214, 0, -20.4397095286656523, 0, 0, 0, 0, 0, 0, 0, 0, 3.8324455366248107, 0, -20.4397095286656523, 0, 12.2638257171993938, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, -0.5748668304937213, 0, 0, 0, 0, -0.9581113841562022, 0, 11.4973366098744254, 0, 0, 0, 0, 0, 0, -0.1916222768312404, 0, 7.6648910732496169, 0, -15.3297821464992357, 0, 0, 0, 0, 0, 0, 0, 0, 0.1916222768312404, 0, -3.8324455366248085, 0, 5.1099273821664122, 0, 0, 0, + + 0, -0.8526653037178029, 0, 0, 0, 0, -1.4211088395296716, 0, 17.0533060743560583, 0, 0, 0, 0, 0, 0, -0.2842217679059343, 0, 11.3688707162373710, 0, -22.7377414324747456, 0, 0, 0, 0, 0, 0, 0, 0, 0.2842217679059343, 0, -5.6844353581186855, 0, 7.5792471441582485, 0, 0, 0, + 0, 0, 0, 0, -4.5475482864949495, 0, 0, 0, 0, 0, 0, 0, 0, 15.1584942883164988, 0, 0, 0, 0, 0, 0, 0, 0, 4.5475482864949495, 0, -15.1584942883164988, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, -7.8765846820820427, 0, 0, 0, 0, 0, 0, 0, 0, 26.2552822736068094, 0, 0, 0, 0, 0, 0, 0, 0, 7.8765846820820427, 0, -26.2552822736068094, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0.8204775710502128, 0, 0, 0, 0, -0.8204775710502128, 0, -9.8457308526025535, 0, 0, 0, 0, 0, 0, -1.4768596278903832, 0, 19.6914617052051071, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.1640955142100426, 0, -1.9691461705205107, 0, 0, 0, 0, 0, + + 0, 1.7079602629797861, 0, 0, 0, 0, -1.7079602629797861, 0, -20.4955231557574322, 0, 0, 0, 0, 0, 0, -3.0743284733636154, 0, 40.9910463115148644, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.3415920525959572, 0, -4.0991046311514863, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 4.0991046311514854, 0, 0, 0, 0, 0, 0, -13.6636821038382852, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4.0991046311514854, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, 10.8452114520599796, 0, 0, 0, 0, 0, 0, -36.1507048401999356, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10.8452114520599796, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, -0.9037676210049984, 0, 0, 0, 0, 4.5188381050249919, 0, 0, 0, 0, 0, 0, 0, 0, -2.7113028630149949, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.1291096601435712, 0, 0, 0, 0, 0, 0, 0, + + 0, -3.5002769449938556, 0, 0, 0, 0, 17.5013847249692773, 0, 0, 0, 0, 0, 0, 0, 0, -10.5008308349815653, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5000395635705508, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 4.00031650856440531, 0, 0, 0, 0, -28.0022155599508372, 0, 0, 0, 0, 0, 0, 0, 0, 28.0022155599508372, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -4.00031650856440531, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, -3.50027694499385465, 0, 0, 0, 0, 0, 0, 17.5013847249692732, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -10.5008308349815639, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.500039563570550664, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, 13.5565143150749737, 0, 0, 0, 0, 0, 0, -67.7825715753748683, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40.669542945224921, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1.93664490215356767, 0, 0, 0, 0, 0, 0, 0, + 0, 0.774657960861427067, 0, 0, 0, 0, -1.80753524200999649, 0, -10.8452114520599789, 0, 0, 0, 0, 0, 0, -1.80753524200999649, 0, 36.1507048401999298, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.774657960861427067, 0, -10.8452114520599789, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, -2.04955231557574297, 0, 0, 0, 0, 4.78228873634340025, 0, 28.6937324180604015, 0, 0, 0, 0, 0, 0, 4.78228873634340025, 0, -95.6457747268680051, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2.04955231557574297, 0, 28.6937324180604015, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 5.12388078893935741, 0, 0, 0, 0, 0, 0, -5.12388078893935741, 0, -20.4955231557574297, 0, 0, 0, 0, 0, 0, 0, 0, -9.22298542009084335, 0, 40.9910463115148593, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.02477615778787148, 0, -4.09910463115148593, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, -10.6662084236527642, 0, 0, 0, 0, 0, 0, 10.6662084236527642, 0, 42.6648336946110567, 0, 0, 0, 0, 0, 0, 0, 0, 19.1991751625749755, 0, -85.3296673892221134, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2.13324168473055283, 0, 8.53296673892221134, 0, 0, 0, 0, 0, + 0, -0.656382056840170103, 0, 0, 0, 0, -0.656382056840170103, 0, 15.7531693641640825, 0, 0, 0, 0, 0, 0, 0.656382056840170103, 0, 0, 0, -26.2552822736068041, 0, 0, 0, 0, 0, 0, 0, 0, 0.656382056840170103, 0, -15.7531693641640825, 0, 26.2552822736068041, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 1.13688707162373734, 0, 0, 0, 0, 1.13688707162373734, 0, -27.2852897189696963, 0, 0, 0, 0, 0, 0, -1.13688707162373734, 0, 0, 0, 45.4754828649494938, 0, 0, 0, 0, 0, 0, 0, 0, -1.13688707162373734, 0, 27.2852897189696963, 0, -45.4754828649494938, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, -4.26332651858901504, 0, 0, 0, 0, 0, 0, -7.1055441976483584, 0, 28.4221767905934336, 0, 0, 0, 0, 0, 0, 0, 0, -1.42110883952967168, 0, 18.9481178603956224, 0, -22.7377414324747469, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.42110883952967168, 0, -9.47405893019781121, 0, 7.57924714415824896, 0, 0, 0, + + 0, 0, 0, 0, 6.32353513543093462, 0, 0, 0, 0, 0, 0, 10.5392252257182244, 0, -42.1569009028728975, 0, 0, 0, 0, 0, 0, 0, 0, 2.10784504514364487, 0, -28.104600601915265, 0, 33.725520722298318, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2.10784504514364487, 0, 14.0523003009576325, 0, -11.241840240766106, 0, 0, 0, + 0, 0.383244553662480886, 0, 0, 0, 0, 1.14973366098744266, 0, -11.4973366098744266, 0, 0, 0, 0, 0, 0, 1.14973366098744266, 0, -22.9946732197488532, 0, 30.6595642929984709, 0, 0, 0, 0, 0, 0, 0, 0, 0.383244553662480886, 0, -11.4973366098744266, 0, 30.6595642929984709, 0, -12.2638257171993884, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, -0.49476659128649439, 0, 0, 0, 0, -1.48429977385948317, 0, 14.8429977385948317, 0, 0, 0, 0, 0, 0, -1.48429977385948317, 0, 29.6859954771896634, 0, -39.5813273029195512, 0, 0, 0, 0, 0, 0, 0, 0, -0.49476659128649439, 0, 14.8429977385948317, 0, -39.5813273029195512, 0, 15.8325309211678205, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1.73168306950273036, 0, 0, 0, 0, 0, 0, 5.19504920850819109, 0, -13.8534645560218429, 0, 0, 0, 0, 0, 0, 0, 0, 5.19504920850819109, 0, -27.7069291120436858, 0, 16.6241574672262115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.73168306950273036, 0, -13.8534645560218429, 0, 16.6241574672262115, 0, -3.16650618423356409, 0, + + 0, 0, 0, 0, -1.96354403635080146, 0, 0, 0, 0, 0, 0, -5.89063210905240439, 0, 15.7083522908064117, 0, 0, 0, 0, 0, 0, 0, 0, -5.89063210905240439, 0, 31.4167045816128234, 0, -18.850022748967694, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1.96354403635080146, 0, 15.7083522908064117, 0, -18.850022748967694, 0, 3.5904805236128941, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1.96354403635080146, 0, 0, 0, 0, 0, 0, 5.89063210905240439, 0, -15.7083522908064117, 0, 0, 0, 0, 0, 0, 0, 0, 5.89063210905240439, 0, -31.4167045816128234, 0, 18.850022748967694, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.96354403635080146, 0, -15.7083522908064117, 0, 18.850022748967694, 0, -3.5904805236128941, 0, + + 0, 0, 0, 0, -1.73168306950273036, 0, 0, 0, 0, 0, 0, -5.19504920850819109, 0, 13.8534645560218429, 0, 0, 0, 0, 0, 0, 0, 0, -5.19504920850819109, 0, 27.7069291120436858, 0, -16.6241574672262115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1.73168306950273036, 0, 13.8534645560218429, 0, -16.6241574672262115, 0, 3.16650618423356409, 0, + 0, -0.49476659128649439, 0, 0, 0, 0, -1.48429977385948317, 0, 14.8429977385948317, 0, 0, 0, 0, 0, 0, -1.48429977385948317, 0, 29.6859954771896634, 0, -39.5813273029195512, 0, 0, 0, 0, 0, 0, 0, 0, -0.49476659128649439, 0, 14.8429977385948317, 0, -39.5813273029195512, 0, 15.8325309211678205, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0.383244553662480886, 0, 0, 0, 0, 1.14973366098744266, 0, -11.4973366098744266, 0, 0, 0, 0, 0, 0, 1.14973366098744266, 0, -22.9946732197488532, 0, 30.6595642929984709, 0, 0, 0, 0, 0, 0, 0, 0, 0.383244553662480886, 0, -11.4973366098744266, 0, 30.6595642929984709, 0, -12.2638257171993884, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, -6.32353513543093462, 0, 0, 0, 0, 0, 0, -10.5392252257182244, 0, 42.1569009028728975, 0, 0, 0, 0, 0, 0, 0, 0, -2.10784504514364487, 0, 28.104600601915265, 0, -33.725520722298318, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2.10784504514364487, 0, -14.0523003009576325, 0, 11.241840240766106, 0, 0, 0, + + 0, 0, 0, 0, 4.26332651858901504, 0, 0, 0, 0, 0, 0, 7.1055441976483584, 0, -28.4221767905934336, 0, 0, 0, 0, 0, 0, 0, 0, 1.42110883952967168, 0, -18.9481178603956224, 0, 22.7377414324747469, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1.42110883952967168, 0, 9.47405893019781121, 0, -7.57924714415824896, 0, 0, 0, + 0, 1.13688707162373734, 0, 0, 0, 0, 1.13688707162373734, 0, -27.2852897189696963, 0, 0, 0, 0, 0, 0, -1.13688707162373734, 0, 0, 0, 45.4754828649494938, 0, 0, 0, 0, 0, 0, 0, 0, -1.13688707162373734, 0, 27.2852897189696963, 0, -45.4754828649494938, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, -0.656382056840170103, 0, 0, 0, 0, -0.656382056840170103, 0, 15.7531693641640825, 0, 0, 0, 0, 0, 0, 0.656382056840170103, 0, 0, 0, -26.2552822736068041, 0, 0, 0, 0, 0, 0, 0, 0, 0.656382056840170103, 0, -15.7531693641640825, 0, 26.2552822736068041, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 10.6662084236527642, 0, 0, 0, 0, 0, 0, -10.6662084236527642, 0, -42.6648336946110567, 0, 0, 0, 0, 0, 0, 0, 0, -19.1991751625749755, 0, 85.3296673892221134, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2.13324168473055283, 0, -8.53296673892221134, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, -5.12388078893935741, 0, 0, 0, 0, 0, 0, 5.12388078893935741, 0, 20.4955231557574297, 0, 0, 0, 0, 0, 0, 0, 0, 9.22298542009084335, 0, -40.9910463115148593, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1.02477615778787148, 0, 4.09910463115148593, 0, 0, 0, 0, 0, + 0, -2.04955231557574297, 0, 0, 0, 0, 4.78228873634340025, 0, 28.6937324180604015, 0, 0, 0, 0, 0, 0, 4.78228873634340025, 0, -95.6457747268680051, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2.04955231557574297, 0, 28.6937324180604015, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0.774657960861427067, 0, 0, 0, 0, -1.80753524200999649, 0, -10.8452114520599789, 0, 0, 0, 0, 0, 0, -1.80753524200999649, 0, 36.1507048401999298, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.774657960861427067, 0, -10.8452114520599789, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, -13.5565143150749737, 0, 0, 0, 0, 0, 0, 67.7825715753748683, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -40.669542945224921, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.93664490215356767, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, 3.50027694499385465, 0, 0, 0, 0, 0, 0, -17.5013847249692732, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10.5008308349815639, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.500039563570550664, 0, 0, 0, 0, 0, 0, 0, + 0, 4.00031650856440531, 0, 0, 0, 0, -28.0022155599508372, 0, 0, 0, 0, 0, 0, 0, 0, 28.0022155599508372, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -4.00031650856440531, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, -4.12343187517827448, 0, 0, 0, 0, 28.8640231262479213, 0, 0, 0, 0, 0, 0, 0, 0, -28.8640231262479213, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4.12343187517827448, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, -1.00007912714110133, 0, 0, 0, 0, 7.0005538899877093, 0, 0, 0, 0, 0, 0, 0, 0, -7.0005538899877093, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.00007912714110133, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, -14.0011077799754186, 0, 0, 0, 0, 0, 0, 70.005538899877093, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -42.0033233399262558, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2.00015825428220266, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, -4.95013912767217325, 0, 0, 0, 0, 0, 0, 24.7506956383608662, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -14.8504173830165197, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.707162732524596178, 0, 0, 0, 0, 0, 0, 0, + 0, 2.12148819757378853, 0, 0, 0, 0, -4.95013912767217325, 0, -29.7008347660330395, 0, 0, 0, 0, 0, 0, -4.95013912767217325, 0, 99.002782553443465, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2.12148819757378853, 0, -29.7008347660330395, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0.948758364647699116, 0, 0, 0, 0, -2.21376951751129794, 0, -13.2826171050677876, 0, 0, 0, 0, 0, 0, -2.21376951751129794, 0, 44.2753903502259587, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.948758364647699116, 0, -13.2826171050677876, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 11.0688475875564897, 0, 0, 0, 0, 0, 0, -11.0688475875564897, 0, -44.2753903502259587, 0, 0, 0, 0, 0, 0, 0, 0, -19.9239256576016814, 0, 88.5507807004519175, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2.21376951751129794, 0, -8.85507807004519175, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, 5.91654790557938008, 0, 0, 0, 0, 0, 0, -5.91654790557938008, 0, -23.6661916223175203, 0, 0, 0, 0, 0, 0, 0, 0, -10.6497862300428841, 0, 47.3323832446350406, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.18330958111587602, 0, -4.73323832446350406, 0, 0, 0, 0, 0, + 0, -1.18330958111587602, 0, 0, 0, 0, -1.18330958111587602, 0, 28.3994299467810244, 0, 0, 0, 0, 0, 0, 1.18330958111587602, 0, 0, 0, -47.3323832446350406, 0, 0, 0, 0, 0, 0, 0, 0, 1.18330958111587602, 0, -28.3994299467810244, 0, 47.3323832446350406, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, -0.733857449152875582, 0, 0, 0, 0, -0.733857449152875582, 0, 17.612578779669014, 0, 0, 0, 0, 0, 0, 0.733857449152875582, 0, 0, 0, -29.3542979661150233, 0, 0, 0, 0, 0, 0, 0, 0, 0.733857449152875582, 0, -17.612578779669014, 0, 29.3542979661150233, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, -6.60471704237588023, 0, 0, 0, 0, 0, 0, -11.0078617372931337, 0, 44.0314469491725349, 0, 0, 0, 0, 0, 0, 0, 0, -2.20157234745862674, 0, 29.3542979661150233, 0, -35.2251575593380279, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2.20157234745862674, 0, -14.6771489830575116, 0, 11.7417191864460093, 0, 0, 0, + + 0, 0, 0, 0, -4.67024020848234288, 0, 0, 0, 0, 0, 0, -7.7837336808039048, 0, 31.1349347232156192, 0, 0, 0, 0, 0, 0, 0, 0, -1.55674673616078096, 0, 20.7566231488104128, 0, -24.9079477785724953, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.55674673616078096, 0, -10.3783115744052064, 0, 8.30264925952416512, 0, 0, 0, + 0, 0.51891557872026032, 0, 0, 0, 0, 1.55674673616078096, 0, -15.5674673616078096, 0, 0, 0, 0, 0, 0, 1.55674673616078096, 0, -31.1349347232156192, 0, 41.5132462976208256, 0, 0, 0, 0, 0, 0, 0, 0, 0.51891557872026032, 0, -15.5674673616078096, 0, 41.5132462976208256, 0, -16.6052985190483302, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0.413951429393932508, 0, 0, 0, 0, 1.24185428818179752, 0, -12.4185428818179752, 0, 0, 0, 0, 0, 0, 1.24185428818179752, 0, -24.8370857636359505, 0, 33.1161143515146006, 0, 0, 0, 0, 0, 0, 0, 0, 0.413951429393932508, 0, -12.4185428818179752, 0, 33.1161143515146006, 0, -13.2464457406058403, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 2.06975714696966254, 0, 0, 0, 0, 0, 0, 6.20927144090898762, 0, -16.5580571757573003, 0, 0, 0, 0, 0, 0, 0, 0, 6.20927144090898762, 0, -33.1161143515146006, 0, 19.8696686109087604, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2.06975714696966254, 0, -16.5580571757573003, 0, 19.8696686109087604, 0, -3.78469878303024007, 0, + + 0, 0, 0, 0, 1.85124707101607532, 0, 0, 0, 0, 0, 0, 5.55374121304822595, 0, -14.8099765681286025, 0, 0, 0, 0, 0, 0, 0, 0, 5.55374121304822595, 0, -29.6199531362572051, 0, 17.771971881754323, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.85124707101607532, 0, -14.8099765681286025, 0, 17.771971881754323, 0, -3.38513750128653772, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1.85124707101607532, 0, 0, 0, 0, 0, 0, 5.55374121304822595, 0, -14.8099765681286025, 0, 0, 0, 0, 0, 0, 0, 0, 5.55374121304822595, 0, -29.6199531362572051, 0, 17.771971881754323, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.85124707101607532, 0, -14.8099765681286025, 0, 17.771971881754323, 0, -3.38513750128653772, 0, + + 0, 0, 0, 0, 2.06975714696966254, 0, 0, 0, 0, 0, 0, 6.20927144090898762, 0, -16.5580571757573003, 0, 0, 0, 0, 0, 0, 0, 0, 6.20927144090898762, 0, -33.1161143515146006, 0, 19.8696686109087604, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2.06975714696966254, 0, -16.5580571757573003, 0, 19.8696686109087604, 0, -3.78469878303024007, 0, + 0, -0.413951429393932508, 0, 0, 0, 0, -1.24185428818179752, 0, 12.4185428818179752, 0, 0, 0, 0, 0, 0, -1.24185428818179752, 0, 24.8370857636359505, 0, -33.1161143515146006, 0, 0, 0, 0, 0, 0, 0, 0, -0.413951429393932508, 0, 12.4185428818179752, 0, -33.1161143515146006, 0, 13.2464457406058403, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, -0.51891557872026032, 0, 0, 0, 0, -1.55674673616078096, 0, 15.5674673616078096, 0, 0, 0, 0, 0, 0, -1.55674673616078096, 0, 31.1349347232156192, 0, -41.5132462976208256, 0, 0, 0, 0, 0, 0, 0, 0, -0.51891557872026032, 0, 15.5674673616078096, 0, -41.5132462976208256, 0, 16.6052985190483302, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, -4.67024020848234288, 0, 0, 0, 0, 0, 0, -7.7837336808039048, 0, 31.1349347232156192, 0, 0, 0, 0, 0, 0, 0, 0, -1.55674673616078096, 0, 20.7566231488104128, 0, -24.9079477785724953, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.55674673616078096, 0, -10.3783115744052064, 0, 8.30264925952416512, 0, 0, 0, + + 0, 0, 0, 0, -6.60471704237588023, 0, 0, 0, 0, 0, 0, -11.0078617372931337, 0, 44.0314469491725349, 0, 0, 0, 0, 0, 0, 0, 0, -2.20157234745862674, 0, 29.3542979661150233, 0, -35.2251575593380279, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2.20157234745862674, 0, -14.6771489830575116, 0, 11.7417191864460093, 0, 0, 0, + 0, 0.733857449152875582, 0, 0, 0, 0, 0.733857449152875582, 0, -17.612578779669014, 0, 0, 0, 0, 0, 0, -0.733857449152875582, 0, 0, 0, 29.3542979661150233, 0, 0, 0, 0, 0, 0, 0, 0, -0.733857449152875582, 0, 17.612578779669014, 0, -29.3542979661150233, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 1.18330958111587602, 0, 0, 0, 0, 1.18330958111587602, 0, -28.3994299467810244, 0, 0, 0, 0, 0, 0, -1.18330958111587602, 0, 0, 0, 47.3323832446350406, 0, 0, 0, 0, 0, 0, 0, 0, -1.18330958111587602, 0, 28.3994299467810244, 0, -47.3323832446350406, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 5.91654790557938008, 0, 0, 0, 0, 0, 0, -5.91654790557938008, 0, -23.6661916223175203, 0, 0, 0, 0, 0, 0, 0, 0, -10.6497862300428841, 0, 47.3323832446350406, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.18330958111587602, 0, -4.73323832446350406, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, 11.0688475875564897, 0, 0, 0, 0, 0, 0, -11.0688475875564897, 0, -44.2753903502259587, 0, 0, 0, 0, 0, 0, 0, 0, -19.9239256576016814, 0, 88.5507807004519175, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2.21376951751129794, 0, -8.85507807004519175, 0, 0, 0, 0, 0, + 0, -0.948758364647699116, 0, 0, 0, 0, 2.21376951751129794, 0, 13.2826171050677876, 0, 0, 0, 0, 0, 0, 2.21376951751129794, 0, -44.2753903502259587, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.948758364647699116, 0, 13.2826171050677876, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, -2.12148819757378853, 0, 0, 0, 0, 4.95013912767217325, 0, 29.7008347660330395, 0, 0, 0, 0, 0, 0, 4.95013912767217325, 0, -99.002782553443465, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2.12148819757378853, 0, 29.7008347660330395, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, -4.95013912767217325, 0, 0, 0, 0, 0, 0, 24.7506956383608662, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -14.8504173830165197, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.707162732524596178, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, -14.0011077799754186, 0, 0, 0, 0, 0, 0, 70.005538899877093, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -42.0033233399262558, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2.00015825428220266, 0, 0, 0, 0, 0, 0, 0, + 0, 1.00007912714110133, 0, 0, 0, 0, -7.0005538899877093, 0, 0, 0, 0, 0, 0, 0, 0, 7.0005538899877093, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1.00007912714110133, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 4.12343187517827448, 0, 0, 0, 0, -28.8640231262479213, 0, 0, 0, 0, 0, 0, 0, 0, 28.8640231262479213, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -4.12343187517827448, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 4.63886085957555879, 0, 0, 0, 0, -43.296034689371882, 0, 0, 0, 0, 0, 0, 0, 0, 64.944052034057823, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -18.5554434383022352, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.51542898439728431, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, -4.12343187517827448, 0, 0, 0, 0, 0, 0, 28.8640231262479213, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -28.8640231262479213, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4.12343187517827448, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, 17.0013451613987226, 0, 0, 0, 0, 0, 0, -119.009416129791058, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 119.009416129791058, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -17.0013451613987226, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0.875069236248463662, 0, 0, 0, 0, -3.50027694499385465, 0, -14.0011077799754186, 0, 0, 0, 0, 0, 0, -1.75013847249692732, 0, 70.005538899877093, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2.50019781785275332, 0, -42.0033233399262558, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.125009890892637666, 0, 2.00015825428220266, 0, 0, 0, 0, 0, 0, 0, + + 0, -2.47506956383608662, 0, 0, 0, 0, 9.9002782553443465, 0, 39.601113021377386, 0, 0, 0, 0, 0, 0, 4.95013912767217325, 0, -198.00556510688693, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7.07162732524596178, 0, 118.803339064132158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.353581366262298089, 0, -5.65730186019676943, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 6.3644645927213656, 0, 0, 0, 0, 0, 0, -14.8504173830165197, 0, -29.7008347660330395, 0, 0, 0, 0, 0, 0, 0, 0, -14.8504173830165197, 0, 99.002782553443465, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6.3644645927213656, 0, -29.7008347660330395, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, -14.2313754697154867, 0, 0, 0, 0, 0, 0, 33.2065427626694691, 0, 66.4130855253389381, 0, 0, 0, 0, 0, 0, 0, 0, 33.2065427626694691, 0, -221.376951751129794, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -14.2313754697154867, 0, 66.4130855253389381, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, -0.790631970539749263, 0, 0, 0, 0, 0, 0, 22.1376951751129794, 0, 0, 0, 0, 0, 0, 2.21376951751129794, 0, -22.1376951751129794, 0, -44.2753903502259587, 0, 0, 0, 0, 0, 0, 0, 0, 1.26501115286359882, 0, -39.8478513152033629, 0, 88.5507807004519175, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.158126394107949853, 0, 4.42753903502259587, 0, -8.85507807004519175, 0, 0, 0, 0, 0, + + 0, 1.47913697639484502, 0, 0, 0, 0, 0, 0, -41.4158353390556606, 0, 0, 0, 0, 0, 0, -4.14158353390556606, 0, 41.4158353390556606, 0, 82.8316706781113211, 0, 0, 0, 0, 0, 0, 0, 0, -2.36661916223175203, 0, 74.548503610300189, 0, -165.663341356222642, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.295827395278969004, 0, -8.28316706781113211, 0, 16.5663341356222642, 0, 0, 0, 0, 0, + 0, 0, 0, 0, -5.91654790557938008, 0, 0, 0, 0, 0, 0, -5.91654790557938008, 0, 47.3323832446350406, 0, 0, 0, 0, 0, 0, 0, 0, 5.91654790557938008, 0, 0, 0, -47.3323832446350406, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5.91654790557938008, 0, -47.3323832446350406, 0, 47.3323832446350406, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, 9.54014683898738256, 0, 0, 0, 0, 0, 0, 9.54014683898738256, 0, -76.3211747118990605, 0, 0, 0, 0, 0, 0, 0, 0, -9.54014683898738256, 0, 0, 0, 76.3211747118990605, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9.54014683898738256, 0, 76.3211747118990605, 0, -76.3211747118990605, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0.550393086864656686, 0, 0, 0, 0, 1.46771489830575116, 0, -19.8141511271276407, 0, 0, 0, 0, 0, 0, 1.10078617372931337, 0, -33.0235852118794012, 0, 66.0471704237588023, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -6.60471704237588023, 0, 44.0314469491725349, 0, -35.2251575593380279, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.183464362288218895, 0, 6.60471704237588023, 0, -22.0157234745862674, 0, 11.7417191864460093, 0, 0, 0, + + 0, -0.77837336808039048, 0, 0, 0, 0, -2.07566231488104128, 0, 28.0214412508940573, 0, 0, 0, 0, 0, 0, -1.55674673616078096, 0, 46.7024020848234288, 0, -93.4048041696468576, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9.34048041696468576, 0, -62.2698694464312384, 0, 49.8158955571449907, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.25945778936013016, 0, -9.34048041696468576, 0, 31.1349347232156192, 0, -16.6052985190483302, 0, 0, 0, + 0, 0, 0, 0, 3.63240905104182224, 0, 0, 0, 0, 0, 0, 10.8972271531254667, 0, -36.3240905104182224, 0, 0, 0, 0, 0, 0, 0, 0, 10.8972271531254667, 0, -72.6481810208364448, 0, 58.1185448166691558, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3.63240905104182224, 0, -36.3240905104182224, 0, 58.1185448166691558, 0, -16.6052985190483302, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, -4.55346572333325759, 0, 0, 0, 0, 0, 0, -13.6603971699997728, 0, 45.5346572333325759, 0, 0, 0, 0, 0, 0, 0, 0, -13.6603971699997728, 0, 91.0693144666651517, 0, -72.8554515733321214, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -4.55346572333325759, 0, 45.5346572333325759, 0, -72.8554515733321214, 0, 20.8158433066663204, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, -0.206975714696966254, 0, 0, 0, 0, -0.827902858787865016, 0, 8.27902858787865016, 0, 0, 0, 0, 0, 0, -1.24185428818179752, 0, 24.8370857636359505, 0, -33.1161143515146006, 0, 0, 0, 0, 0, 0, 0, 0, -0.827902858787865016, 0, 24.8370857636359505, 0, -66.2322287030292013, 0, 26.4928914812116805, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.206975714696966254, 0, 8.27902858787865016, 0, -33.1161143515146006, 0, 26.4928914812116805, 0, -3.78469878303024007, 0, + + 0, 0.231405883877009415, 0, 0, 0, 0, 0.925623535508037658, 0, -9.25623535508037658, 0, 0, 0, 0, 0, 0, 1.38843530326205649, 0, -27.7687060652411297, 0, 37.0249414203215063, 0, 0, 0, 0, 0, 0, 0, 0, 0.925623535508037658, 0, -27.7687060652411297, 0, 74.0498828406430127, 0, -29.6199531362572051, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.231405883877009415, 0, -9.25623535508037658, 0, 37.0249414203215063, 0, -29.6199531362572051, 0, 4.23142187660817215, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, -0.231405883877009415, 0, 0, 0, 0, -0.925623535508037658, 0, 9.25623535508037658, 0, 0, 0, 0, 0, 0, -1.38843530326205649, 0, 27.7687060652411297, 0, -37.0249414203215063, 0, 0, 0, 0, 0, 0, 0, 0, -0.925623535508037658, 0, 27.7687060652411297, 0, -74.0498828406430127, 0, 29.6199531362572051, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.231405883877009415, 0, 9.25623535508037658, 0, -37.0249414203215063, 0, 29.6199531362572051, 0, -4.23142187660817215, 0, + + 0, 0.206975714696966254, 0, 0, 0, 0, 0.827902858787865016, 0, -8.27902858787865016, 0, 0, 0, 0, 0, 0, 1.24185428818179752, 0, -24.8370857636359505, 0, 33.1161143515146006, 0, 0, 0, 0, 0, 0, 0, 0, 0.827902858787865016, 0, -24.8370857636359505, 0, 66.2322287030292013, 0, -26.4928914812116805, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.206975714696966254, 0, -8.27902858787865016, 0, 33.1161143515146006, 0, -26.4928914812116805, 0, 3.78469878303024007, 0, + 0, 0, 0, 0, -4.55346572333325759, 0, 0, 0, 0, 0, 0, -13.6603971699997728, 0, 45.5346572333325759, 0, 0, 0, 0, 0, 0, 0, 0, -13.6603971699997728, 0, 91.0693144666651517, 0, -72.8554515733321214, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -4.55346572333325759, 0, 45.5346572333325759, 0, -72.8554515733321214, 0, 20.8158433066663204, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, 3.63240905104182224, 0, 0, 0, 0, 0, 0, 10.8972271531254667, 0, -36.3240905104182224, 0, 0, 0, 0, 0, 0, 0, 0, 10.8972271531254667, 0, -72.6481810208364448, 0, 58.1185448166691558, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3.63240905104182224, 0, -36.3240905104182224, 0, 58.1185448166691558, 0, -16.6052985190483302, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0.77837336808039048, 0, 0, 0, 0, 2.07566231488104128, 0, -28.0214412508940573, 0, 0, 0, 0, 0, 0, 1.55674673616078096, 0, -46.7024020848234288, 0, 93.4048041696468576, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9.34048041696468576, 0, 62.2698694464312384, 0, -49.8158955571449907, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.25945778936013016, 0, 9.34048041696468576, 0, -31.1349347232156192, 0, 16.6052985190483302, 0, 0, 0, + + 0, -0.550393086864656686, 0, 0, 0, 0, -1.46771489830575116, 0, 19.8141511271276407, 0, 0, 0, 0, 0, 0, -1.10078617372931337, 0, 33.0235852118794012, 0, -66.0471704237588023, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6.60471704237588023, 0, -44.0314469491725349, 0, 35.2251575593380279, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.183464362288218895, 0, -6.60471704237588023, 0, 22.0157234745862674, 0, -11.7417191864460093, 0, 0, 0, + 0, 0, 0, 0, 9.54014683898738256, 0, 0, 0, 0, 0, 0, 9.54014683898738256, 0, -76.3211747118990605, 0, 0, 0, 0, 0, 0, 0, 0, -9.54014683898738256, 0, 0, 0, 76.3211747118990605, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9.54014683898738256, 0, 76.3211747118990605, 0, -76.3211747118990605, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, -5.91654790557938008, 0, 0, 0, 0, 0, 0, -5.91654790557938008, 0, 47.3323832446350406, 0, 0, 0, 0, 0, 0, 0, 0, 5.91654790557938008, 0, 0, 0, -47.3323832446350406, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5.91654790557938008, 0, -47.3323832446350406, 0, 47.3323832446350406, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, -1.47913697639484502, 0, 0, 0, 0, 0, 0, 41.4158353390556606, 0, 0, 0, 0, 0, 0, 4.14158353390556606, 0, -41.4158353390556606, 0, -82.8316706781113211, 0, 0, 0, 0, 0, 0, 0, 0, 2.36661916223175203, 0, -74.548503610300189, 0, 165.663341356222642, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.295827395278969004, 0, 8.28316706781113211, 0, -16.5663341356222642, 0, 0, 0, 0, 0, + + 0, 0.790631970539749263, 0, 0, 0, 0, 0, 0, -22.1376951751129794, 0, 0, 0, 0, 0, 0, -2.21376951751129794, 0, 22.1376951751129794, 0, 44.2753903502259587, 0, 0, 0, 0, 0, 0, 0, 0, -1.26501115286359882, 0, 39.8478513152033629, 0, -88.5507807004519175, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.158126394107949853, 0, -4.42753903502259587, 0, 8.85507807004519175, 0, 0, 0, 0, 0, + 0, 0, 0, 0, -14.2313754697154867, 0, 0, 0, 0, 0, 0, 33.2065427626694691, 0, 66.4130855253389381, 0, 0, 0, 0, 0, 0, 0, 0, 33.2065427626694691, 0, -221.376951751129794, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -14.2313754697154867, 0, 66.4130855253389381, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, 6.3644645927213656, 0, 0, 0, 0, 0, 0, -14.8504173830165197, 0, -29.7008347660330395, 0, 0, 0, 0, 0, 0, 0, 0, -14.8504173830165197, 0, 99.002782553443465, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6.3644645927213656, 0, -29.7008347660330395, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 2.47506956383608662, 0, 0, 0, 0, -9.9002782553443465, 0, -39.601113021377386, 0, 0, 0, 0, 0, 0, -4.95013912767217325, 0, 198.00556510688693, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7.07162732524596178, 0, -118.803339064132158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.353581366262298089, 0, 5.65730186019676943, 0, 0, 0, 0, 0, 0, 0, + + 0, -0.875069236248463662, 0, 0, 0, 0, 3.50027694499385465, 0, 14.0011077799754186, 0, 0, 0, 0, 0, 0, 1.75013847249692732, 0, -70.005538899877093, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2.50019781785275332, 0, 42.0033233399262558, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.125009890892637666, 0, -2.00015825428220266, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 17.0013451613987226, 0, 0, 0, 0, 0, 0, -119.009416129791058, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 119.009416129791058, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -17.0013451613987226, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, -4.12343187517827448, 0, 0, 0, 0, 0, 0, 28.8640231262479213, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -28.8640231262479213, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4.12343187517827448, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, -4.63886085957555879, 0, 0, 0, 0, 43.296034689371882, 0, 0, 0, 0, 0, 0, 0, 0, -64.944052034057823, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18.5554434383022352, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.51542898439728431, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, -4.76597647343204622, 0, 0, 0, 0, 44.4824470853657647, 0, 0, 0, 0, 0, 0, 0, 0, -66.723670628048647, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19.0639058937281849, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.52955294149244958, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, -1.0933899902622448, 0, 0, 0, 0, 10.2049732424476182, 0, 0, 0, 0, 0, 0, 0, 0, -15.3074598636714272, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4.37355996104897921, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.121487776695804978, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, -17.4942398441959169, 0, 0, 0, 0, 0, 0, 122.459678909371418, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -122.459678909371418, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17.4942398441959169, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, -5.83141328139863895, 0, 0, 0, 0, 0, 0, 40.8198929697904727, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -40.8198929697904727, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5.83141328139863895, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 2.55124331061190454, 0, 0, 0, 0, -10.2049732424476182, 0, -40.8198929697904727, 0, 0, 0, 0, 0, 0, -5.10248662122380908, 0, 204.099464848952363, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7.28926660174829869, 0, -122.459678909371418, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.364463330087414934, 0, 5.83141328139863895, 0, 0, 0, 0, 0, 0, 0, + + 0, 1.07173655920786068, 0, 0, 0, 0, -4.28694623683144273, 0, -17.1477849473257709, 0, 0, 0, 0, 0, 0, -2.14347311841572136, 0, 85.7389247366288545, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3.06210445487960195, 0, -51.4433548419773127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.153105222743980097, 0, 2.44968356390368156, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 14.6981013834220894, 0, 0, 0, 0, 0, 0, -34.2955698946515418, 0, -68.5911397893030836, 0, 0, 0, 0, 0, 0, 0, 0, -34.2955698946515418, 0, 228.637132631010279, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14.6981013834220894, 0, -68.5911397893030836, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, 7.34905069171104468, 0, 0, 0, 0, 0, 0, -17.1477849473257709, 0, -34.2955698946515418, 0, 0, 0, 0, 0, 0, 0, 0, -17.1477849473257709, 0, 114.318566315505139, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7.34905069171104468, 0, -34.2955698946515418, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, -1.53105222743980097, 0, 0, 0, 0, 0, 0, 42.8694623683144273, 0, 0, 0, 0, 0, 0, 4.28694623683144273, 0, -42.8694623683144273, 0, -85.7389247366288545, 0, 0, 0, 0, 0, 0, 0, 0, 2.44968356390368156, 0, -77.1650322629659691, 0, 171.477849473257709, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.306210445487960195, 0, 8.57389247366288545, 0, -17.1477849473257709, 0, 0, 0, 0, 0, + + 0, -0.883953415655745223, 0, 0, 0, 0, 0, 0, 24.7506956383608662, 0, 0, 0, 0, 0, 0, 2.47506956383608662, 0, -24.7506956383608662, 0, -49.5013912767217325, 0, 0, 0, 0, 0, 0, 0, 0, 1.41432546504919236, 0, -44.5512521490495592, 0, 99.002782553443465, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.176790683131149045, 0, 4.95013912767217325, 0, -9.9002782553443465, 0, 0, 0, 0, 0, + 0, 0, 0, 0, -9.9002782553443465, 0, 0, 0, 0, 0, 0, -9.9002782553443465, 0, 79.202226042754772, 0, 0, 0, 0, 0, 0, 0, 0, 9.9002782553443465, 0, 0, 0, -79.202226042754772, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9.9002782553443465, 0, -79.202226042754772, 0, 79.202226042754772, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, -6.48125350089154427, 0, 0, 0, 0, 0, 0, -6.48125350089154427, 0, 51.8500280071323542, 0, 0, 0, 0, 0, 0, 0, 0, 6.48125350089154427, 0, 0, 0, -51.8500280071323542, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6.48125350089154427, 0, -51.8500280071323542, 0, 51.8500280071323542, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0.810156687611443034, 0, 0, 0, 0, 2.16041783363051476, 0, -29.1656407540119492, 0, 0, 0, 0, 0, 0, 1.62031337522288607, 0, -48.609401256686582, 0, 97.218802513373164, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9.7218802513373164, 0, 64.8125350089154427, 0, -51.8500280071323542, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.270052229203814345, 0, 9.7218802513373164, 0, -32.4062675044577213, 0, 17.2833426690441181, 0, 0, 0, + + 0, 0.594492479694352209, 0, 0, 0, 0, 1.58531327918493922, 0, -21.4017292689966795, 0, 0, 0, 0, 0, 0, 1.18898495938870442, 0, -35.6695487816611326, 0, 71.3390975633222651, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7.13390975633222651, 0, 47.5593983755481767, 0, -38.0475187004385414, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.198164159898117403, 0, 7.13390975633222651, 0, -23.7796991877740884, 0, 12.6825062334795138, 0, 0, 0, + 0, 0, 0, 0, 4.75593983755481767, 0, 0, 0, 0, 0, 0, 14.267819512664453, 0, -47.5593983755481767, 0, 0, 0, 0, 0, 0, 0, 0, 14.267819512664453, 0, -95.1187967510963535, 0, 76.0950374008770828, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4.75593983755481767, 0, -47.5593983755481767, 0, 76.0950374008770828, 0, -21.7414392573934522, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, 3.88320861646147339, 0, 0, 0, 0, 0, 0, 11.6496258493844202, 0, -38.8320861646147339, 0, 0, 0, 0, 0, 0, 0, 0, 11.6496258493844202, 0, -77.6641723292294678, 0, 62.1313378633835742, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3.88320861646147339, 0, -38.8320861646147339, 0, 62.1313378633835742, 0, -17.7518108181095926, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, -0.242700538528842087, 0, 0, 0, 0, -0.970802154115368348, 0, 9.70802154115368348, 0, 0, 0, 0, 0, 0, -1.45620323117305252, 0, 29.1240646234610504, 0, -38.8320861646147339, 0, 0, 0, 0, 0, 0, 0, 0, -0.970802154115368348, 0, 29.1240646234610504, 0, -77.6641723292294678, 0, 31.0656689316917871, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.242700538528842087, 0, 9.70802154115368348, 0, -38.8320861646147339, 0, 31.0656689316917871, 0, -4.43795270452739816, 0, + + 0, -0.219530897104735508, 0, 0, 0, 0, -0.878123588418942033, 0, 8.78123588418942033, 0, 0, 0, 0, 0, 0, -1.31718538262841305, 0, 26.343707652568261, 0, -35.1249435367576813, 0, 0, 0, 0, 0, 0, 0, 0, -0.878123588418942033, 0, 26.343707652568261, 0, -70.2498870735153626, 0, 28.0999548294061451, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.219530897104735508, 0, 8.78123588418942033, 0, -35.1249435367576813, 0, 28.0999548294061451, 0, -4.01427926134373501, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, -0.219530897104735508, 0, 0, 0, 0, -0.878123588418942033, 0, 8.78123588418942033, 0, 0, 0, 0, 0, 0, -1.31718538262841305, 0, 26.343707652568261, 0, -35.1249435367576813, 0, 0, 0, 0, 0, 0, 0, 0, -0.878123588418942033, 0, 26.343707652568261, 0, -70.2498870735153626, 0, 28.0999548294061451, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.219530897104735508, 0, 8.78123588418942033, 0, -35.1249435367576813, 0, 28.0999548294061451, 0, -4.01427926134373501, 0, + + 0, -0.242700538528842087, 0, 0, 0, 0, -0.970802154115368348, 0, 9.70802154115368348, 0, 0, 0, 0, 0, 0, -1.45620323117305252, 0, 29.1240646234610504, 0, -38.8320861646147339, 0, 0, 0, 0, 0, 0, 0, 0, -0.970802154115368348, 0, 29.1240646234610504, 0, -77.6641723292294678, 0, 31.0656689316917871, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.242700538528842087, 0, 9.70802154115368348, 0, -38.8320861646147339, 0, 31.0656689316917871, 0, -4.43795270452739816, 0, + 0, 0, 0, 0, -3.88320861646147339, 0, 0, 0, 0, 0, 0, -11.6496258493844202, 0, 38.8320861646147339, 0, 0, 0, 0, 0, 0, 0, 0, -11.6496258493844202, 0, 77.6641723292294678, 0, -62.1313378633835742, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -3.88320861646147339, 0, 38.8320861646147339, 0, -62.1313378633835742, 0, 17.7518108181095926, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, -4.75593983755481767, 0, 0, 0, 0, 0, 0, -14.267819512664453, 0, 47.5593983755481767, 0, 0, 0, 0, 0, 0, 0, 0, -14.267819512664453, 0, 95.1187967510963535, 0, -76.0950374008770828, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -4.75593983755481767, 0, 47.5593983755481767, 0, -76.0950374008770828, 0, 21.7414392573934522, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0.594492479694352209, 0, 0, 0, 0, 1.58531327918493922, 0, -21.4017292689966795, 0, 0, 0, 0, 0, 0, 1.18898495938870442, 0, -35.6695487816611326, 0, 71.3390975633222651, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7.13390975633222651, 0, 47.5593983755481767, 0, -38.0475187004385414, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.198164159898117403, 0, 7.13390975633222651, 0, -23.7796991877740884, 0, 12.6825062334795138, 0, 0, 0, + + 0, 0.810156687611443034, 0, 0, 0, 0, 2.16041783363051476, 0, -29.1656407540119492, 0, 0, 0, 0, 0, 0, 1.62031337522288607, 0, -48.609401256686582, 0, 97.218802513373164, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9.7218802513373164, 0, 64.8125350089154427, 0, -51.8500280071323542, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.270052229203814345, 0, 9.7218802513373164, 0, -32.4062675044577213, 0, 17.2833426690441181, 0, 0, 0, + 0, 0, 0, 0, 6.48125350089154427, 0, 0, 0, 0, 0, 0, 6.48125350089154427, 0, -51.8500280071323542, 0, 0, 0, 0, 0, 0, 0, 0, -6.48125350089154427, 0, 0, 0, 51.8500280071323542, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -6.48125350089154427, 0, 51.8500280071323542, 0, -51.8500280071323542, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, 9.9002782553443465, 0, 0, 0, 0, 0, 0, 9.9002782553443465, 0, -79.202226042754772, 0, 0, 0, 0, 0, 0, 0, 0, -9.9002782553443465, 0, 0, 0, 79.202226042754772, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9.9002782553443465, 0, 79.202226042754772, 0, -79.202226042754772, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, -0.883953415655745223, 0, 0, 0, 0, 0, 0, 24.7506956383608662, 0, 0, 0, 0, 0, 0, 2.47506956383608662, 0, -24.7506956383608662, 0, -49.5013912767217325, 0, 0, 0, 0, 0, 0, 0, 0, 1.41432546504919236, 0, -44.5512521490495592, 0, 99.002782553443465, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.176790683131149045, 0, 4.95013912767217325, 0, -9.9002782553443465, 0, 0, 0, 0, 0, + + 0, -1.53105222743980097, 0, 0, 0, 0, 0, 0, 42.8694623683144273, 0, 0, 0, 0, 0, 0, 4.28694623683144273, 0, -42.8694623683144273, 0, -85.7389247366288545, 0, 0, 0, 0, 0, 0, 0, 0, 2.44968356390368156, 0, -77.1650322629659691, 0, 171.477849473257709, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.306210445487960195, 0, 8.57389247366288545, 0, -17.1477849473257709, 0, 0, 0, 0, 0, + 0, 0, 0, 0, -7.34905069171104468, 0, 0, 0, 0, 0, 0, 17.1477849473257709, 0, 34.2955698946515418, 0, 0, 0, 0, 0, 0, 0, 0, 17.1477849473257709, 0, -114.318566315505139, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7.34905069171104468, 0, 34.2955698946515418, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, -14.6981013834220894, 0, 0, 0, 0, 0, 0, 34.2955698946515418, 0, 68.5911397893030836, 0, 0, 0, 0, 0, 0, 0, 0, 34.2955698946515418, 0, -228.637132631010279, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -14.6981013834220894, 0, 68.5911397893030836, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1.07173655920786068, 0, 0, 0, 0, -4.28694623683144273, 0, -17.1477849473257709, 0, 0, 0, 0, 0, 0, -2.14347311841572136, 0, 85.7389247366288545, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3.06210445487960195, 0, -51.4433548419773127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.153105222743980097, 0, 2.44968356390368156, 0, 0, 0, 0, 0, 0, 0, + + 0, 2.55124331061190454, 0, 0, 0, 0, -10.2049732424476182, 0, -40.8198929697904727, 0, 0, 0, 0, 0, 0, -5.10248662122380908, 0, 204.099464848952363, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7.28926660174829869, 0, -122.459678909371418, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.364463330087414934, 0, 5.83141328139863895, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 5.83141328139863895, 0, 0, 0, 0, 0, 0, -40.8198929697904727, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40.8198929697904727, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -5.83141328139863895, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, 17.4942398441959169, 0, 0, 0, 0, 0, 0, -122.459678909371418, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 122.459678909371418, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -17.4942398441959169, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, -1.0933899902622448, 0, 0, 0, 0, 10.2049732424476182, 0, 0, 0, 0, 0, 0, 0, 0, -15.3074598636714272, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4.37355996104897921, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.121487776695804978, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, -4.76597647343204622, 0, 0, 0, 0, 44.4824470853657647, 0, 0, 0, 0, 0, 0, 0, 0, -66.723670628048647, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19.0639058937281849, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.52955294149244958, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 5.2955294149244958, 0, 0, 0, 0, -63.5463529790939495, 0, 0, 0, 0, 0, 0, 0, 0, 133.447341256097294, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -63.5463529790939495, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5.2955294149244958, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, -4.76597647343204622, 0, 0, 0, 0, 0, 0, 44.4824470853657647, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -66.723670628048647, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19.0639058937281849, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.52955294149244958, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, 20.7744098149826513, 0, 0, 0, 0, 0, 0, -193.894491606504745, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 290.841737409757118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -83.0976392599306051, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2.30826775722029458, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0.971902213566439825, 0, 0, 0, 0, -5.83141328139863895, 0, -17.4942398441959169, 0, 0, 0, 0, 0, 0, 0, 0, 122.459678909371418, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5.83141328139863895, 0, -122.459678909371418, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.971902213566439825, 0, 17.4942398441959169, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, -2.91570664069931948, 0, 0, 0, 0, 17.4942398441959169, 0, 52.4827195325877506, 0, 0, 0, 0, 0, 0, 0, 0, -367.379036728114254, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -17.4942398441959169, 0, 367.379036728114254, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2.91570664069931948, 0, -52.4827195325877506, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 7.65372993183571362, 0, 0, 0, 0, 0, 0, -30.6149197273428545, 0, -40.8198929697904727, 0, 0, 0, 0, 0, 0, 0, 0, -15.3074598636714272, 0, 204.099464848952363, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21.8677998052448961, 0, -122.459678909371418, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1.0933899902622448, 0, 5.83141328139863895, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, -18.2195215065336316, 0, 0, 0, 0, 0, 0, 72.8780860261345264, 0, 97.1707813681793685, 0, 0, 0, 0, 0, 0, 0, 0, 36.4390430130672632, 0, -485.853906840896842, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -52.0557757329532331, 0, 291.512344104538105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2.60278878664766166, 0, -13.8815401954541955, 0, 0, 0, 0, 0, 0, 0, + 0, -0.918631336463880584, 0, 0, 0, 0, 1.22484178195184078, 0, 29.3962027668441787, 0, 0, 0, 0, 0, 0, 4.28694623683144273, 0, -68.5911397893030836, 0, -68.5911397893030836, 0, 0, 0, 0, 0, 0, 0, 0, 1.22484178195184078, 0, -68.5911397893030836, 0, 228.637132631010279, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.918631336463880584, 0, 29.3962027668441787, 0, -68.5911397893030836, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 1.83726267292776117, 0, 0, 0, 0, -2.44968356390368156, 0, -58.7924055336883574, 0, 0, 0, 0, 0, 0, -8.57389247366288545, 0, 137.182279578606167, 0, 137.182279578606167, 0, 0, 0, 0, 0, 0, 0, 0, -2.44968356390368156, 0, 137.182279578606167, 0, -457.274265262020558, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.83726267292776117, 0, -58.7924055336883574, 0, 137.182279578606167, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, -7.65526113719900487, 0, 0, 0, 0, 0, 0, 0, 0, 71.4491039471907121, 0, 0, 0, 0, 0, 0, 0, 0, 21.4347311841572136, 0, -71.4491039471907121, 0, -85.7389247366288545, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12.2484178195184078, 0, -128.608387104943282, 0, 171.477849473257709, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1.53105222743980097, 0, 14.2898207894381424, 0, -17.1477849473257709, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, 13.2593012348361783, 0, 0, 0, 0, 0, 0, 0, 0, -123.753478191804331, 0, 0, 0, 0, 0, 0, 0, 0, -37.1260434575412994, 0, 123.753478191804331, 0, 148.504173830165197, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -21.2148819757378853, 0, 222.756260745247796, 0, -297.008347660330395, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2.65186024696723567, 0, -24.7506956383608662, 0, 29.7008347660330395, 0, 0, 0, 0, 0, + 0, 0.707162732524596178, 0, 0, 0, 0, 1.41432546504919236, 0, -29.7008347660330395, 0, 0, 0, 0, 0, 0, 0, 0, -29.7008347660330395, 0, 118.803339064132158, 0, 0, 0, 0, 0, 0, 0, 0, -1.41432546504919236, 0, 29.7008347660330395, 0, 0, 0, -79.202226042754772, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.707162732524596178, 0, 29.7008347660330395, 0, -118.803339064132158, 0, 79.202226042754772, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, -1.08020891681525738, 0, 0, 0, 0, -2.16041783363051476, 0, 45.3687745062408099, 0, 0, 0, 0, 0, 0, 0, 0, 45.3687745062408099, 0, -181.47509802496324, 0, 0, 0, 0, 0, 0, 0, 0, 2.16041783363051476, 0, -45.3687745062408099, 0, 0, 0, 120.983398683308826, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.08020891681525738, 0, -45.3687745062408099, 0, 181.47509802496324, 0, -120.983398683308826, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 5.67109681328010124, 0, 0, 0, 0, 0, 0, 15.1229248354136033, 0, -68.0531617593612148, 0, 0, 0, 0, 0, 0, 0, 0, 11.3421936265602025, 0, -113.421936265602025, 0, 136.10632351872243, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -22.6843872531204049, 0, 90.7375490124816198, 0, -51.8500280071323542, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1.89036560442670041, 0, 22.6843872531204049, 0, -45.3687745062408099, 0, 17.2833426690441181, 0, 0, 0, + + 0, 0, 0, 0, -7.72840223602657872, 0, 0, 0, 0, 0, 0, -20.6090726294042099, 0, 92.7408268323189446, 0, 0, 0, 0, 0, 0, 0, 0, -15.4568044720531574, 0, 154.568044720531574, 0, -185.481653664637889, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30.9136089441063149, 0, -123.65443577642526, 0, 70.6596775865287197, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2.57613407867552624, 0, -30.9136089441063149, 0, 61.8272178882126298, 0, -23.5532258621762399, 0, 0, 0, + 0, -0.396328319796234806, 0, 0, 0, 0, -1.58531327918493922, 0, 19.0237593502192707, 0, 0, 0, 0, 0, 0, -2.37796991877740884, 0, 57.0712780506578121, 0, -95.1187967510963535, 0, 0, 0, 0, 0, 0, 0, 0, -1.58531327918493922, 0, 57.0712780506578121, 0, -190.237593502192707, 0, 101.46004986783611, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.396328319796234806, 0, 19.0237593502192707, 0, -95.1187967510963535, 0, 101.46004986783611, 0, -21.7414392573934522, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0.485401077057684174, 0, 0, 0, 0, 1.9416043082307367, 0, -23.2992516987688403, 0, 0, 0, 0, 0, 0, 2.91240646234610504, 0, -69.897755096306521, 0, 116.496258493844202, 0, 0, 0, 0, 0, 0, 0, 0, 1.9416043082307367, 0, -69.897755096306521, 0, 232.992516987688403, 0, -124.262675726767148, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.485401077057684174, 0, -23.2992516987688403, 0, 116.496258493844202, 0, -124.262675726767148, 0, 26.627716227164389, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, -2.18430484675957878, 0, 0, 0, 0, 0, 0, -8.73721938703831513, 0, 29.1240646234610504, 0, 0, 0, 0, 0, 0, 0, 0, -13.1058290805574727, 0, 87.3721938703831513, 0, -69.897755096306521, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8.73721938703831513, 0, 87.3721938703831513, 0, -139.795510192613042, 0, 39.9415743407465834, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2.18430484675957878, 0, 29.1240646234610504, 0, -69.897755096306521, 0, 39.9415743407465834, 0, -4.43795270452739816, 0, + + 0, 0, 0, 0, 2.41483986815209059, 0, 0, 0, 0, 0, 0, 9.65935947260836236, 0, -32.1978649086945412, 0, 0, 0, 0, 0, 0, 0, 0, 14.4890392089125435, 0, -96.5935947260836236, 0, 77.2748757808668989, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9.65935947260836236, 0, -96.5935947260836236, 0, 154.549751561733798, 0, -44.1570718747810851, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2.41483986815209059, 0, -32.1978649086945412, 0, 77.2748757808668989, 0, -44.1570718747810851, 0, 4.90634131942012056, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, -2.41483986815209059, 0, 0, 0, 0, 0, 0, -9.65935947260836236, 0, 32.1978649086945412, 0, 0, 0, 0, 0, 0, 0, 0, -14.4890392089125435, 0, 96.5935947260836236, 0, -77.2748757808668989, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9.65935947260836236, 0, 96.5935947260836236, 0, -154.549751561733798, 0, 44.1570718747810851, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2.41483986815209059, 0, 32.1978649086945412, 0, -77.2748757808668989, 0, 44.1570718747810851, 0, -4.90634131942012056, 0, + + 0, 0, 0, 0, 2.18430484675957878, 0, 0, 0, 0, 0, 0, 8.73721938703831513, 0, -29.1240646234610504, 0, 0, 0, 0, 0, 0, 0, 0, 13.1058290805574727, 0, -87.3721938703831513, 0, 69.897755096306521, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8.73721938703831513, 0, -87.3721938703831513, 0, 139.795510192613042, 0, -39.9415743407465834, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2.18430484675957878, 0, -29.1240646234610504, 0, 69.897755096306521, 0, -39.9415743407465834, 0, 4.43795270452739816, 0, + 0, 0.485401077057684174, 0, 0, 0, 0, 1.9416043082307367, 0, -23.2992516987688403, 0, 0, 0, 0, 0, 0, 2.91240646234610504, 0, -69.897755096306521, 0, 116.496258493844202, 0, 0, 0, 0, 0, 0, 0, 0, 1.9416043082307367, 0, -69.897755096306521, 0, 232.992516987688403, 0, -124.262675726767148, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.485401077057684174, 0, -23.2992516987688403, 0, 116.496258493844202, 0, -124.262675726767148, 0, 26.627716227164389, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, -0.396328319796234806, 0, 0, 0, 0, -1.58531327918493922, 0, 19.0237593502192707, 0, 0, 0, 0, 0, 0, -2.37796991877740884, 0, 57.0712780506578121, 0, -95.1187967510963535, 0, 0, 0, 0, 0, 0, 0, 0, -1.58531327918493922, 0, 57.0712780506578121, 0, -190.237593502192707, 0, 101.46004986783611, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.396328319796234806, 0, 19.0237593502192707, 0, -95.1187967510963535, 0, 101.46004986783611, 0, -21.7414392573934522, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 7.72840223602657872, 0, 0, 0, 0, 0, 0, 20.6090726294042099, 0, -92.7408268323189446, 0, 0, 0, 0, 0, 0, 0, 0, 15.4568044720531574, 0, -154.568044720531574, 0, 185.481653664637889, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -30.9136089441063149, 0, 123.65443577642526, 0, -70.6596775865287197, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2.57613407867552624, 0, 30.9136089441063149, 0, -61.8272178882126298, 0, 23.5532258621762399, 0, 0, 0, + + 0, 0, 0, 0, -5.67109681328010124, 0, 0, 0, 0, 0, 0, -15.1229248354136033, 0, 68.0531617593612148, 0, 0, 0, 0, 0, 0, 0, 0, -11.3421936265602025, 0, 113.421936265602025, 0, -136.10632351872243, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22.6843872531204049, 0, -90.7375490124816198, 0, 51.8500280071323542, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.89036560442670041, 0, -22.6843872531204049, 0, 45.3687745062408099, 0, -17.2833426690441181, 0, 0, 0, + 0, -1.08020891681525738, 0, 0, 0, 0, -2.16041783363051476, 0, 45.3687745062408099, 0, 0, 0, 0, 0, 0, 0, 0, 45.3687745062408099, 0, -181.47509802496324, 0, 0, 0, 0, 0, 0, 0, 0, 2.16041783363051476, 0, -45.3687745062408099, 0, 0, 0, 120.983398683308826, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.08020891681525738, 0, -45.3687745062408099, 0, 181.47509802496324, 0, -120.983398683308826, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0.707162732524596178, 0, 0, 0, 0, 1.41432546504919236, 0, -29.7008347660330395, 0, 0, 0, 0, 0, 0, 0, 0, -29.7008347660330395, 0, 118.803339064132158, 0, 0, 0, 0, 0, 0, 0, 0, -1.41432546504919236, 0, 29.7008347660330395, 0, 0, 0, -79.202226042754772, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.707162732524596178, 0, 29.7008347660330395, 0, -118.803339064132158, 0, 79.202226042754772, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, -13.2593012348361783, 0, 0, 0, 0, 0, 0, 0, 0, 123.753478191804331, 0, 0, 0, 0, 0, 0, 0, 0, 37.1260434575412994, 0, -123.753478191804331, 0, -148.504173830165197, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21.2148819757378853, 0, -222.756260745247796, 0, 297.008347660330395, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2.65186024696723567, 0, 24.7506956383608662, 0, -29.7008347660330395, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, 7.65526113719900487, 0, 0, 0, 0, 0, 0, 0, 0, -71.4491039471907121, 0, 0, 0, 0, 0, 0, 0, 0, -21.4347311841572136, 0, 71.4491039471907121, 0, 85.7389247366288545, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -12.2484178195184078, 0, 128.608387104943282, 0, -171.477849473257709, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.53105222743980097, 0, -14.2898207894381424, 0, 17.1477849473257709, 0, 0, 0, 0, 0, + 0, 1.83726267292776117, 0, 0, 0, 0, -2.44968356390368156, 0, -58.7924055336883574, 0, 0, 0, 0, 0, 0, -8.57389247366288545, 0, 137.182279578606167, 0, 137.182279578606167, 0, 0, 0, 0, 0, 0, 0, 0, -2.44968356390368156, 0, 137.182279578606167, 0, -457.274265262020558, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.83726267292776117, 0, -58.7924055336883574, 0, 137.182279578606167, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, -0.918631336463880584, 0, 0, 0, 0, 1.22484178195184078, 0, 29.3962027668441787, 0, 0, 0, 0, 0, 0, 4.28694623683144273, 0, -68.5911397893030836, 0, -68.5911397893030836, 0, 0, 0, 0, 0, 0, 0, 0, 1.22484178195184078, 0, -68.5911397893030836, 0, 228.637132631010279, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.918631336463880584, 0, 29.3962027668441787, 0, -68.5911397893030836, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 18.2195215065336316, 0, 0, 0, 0, 0, 0, -72.8780860261345264, 0, -97.1707813681793685, 0, 0, 0, 0, 0, 0, 0, 0, -36.4390430130672632, 0, 485.853906840896842, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52.0557757329532331, 0, -291.512344104538105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2.60278878664766166, 0, 13.8815401954541955, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, -7.65372993183571362, 0, 0, 0, 0, 0, 0, 30.6149197273428545, 0, 40.8198929697904727, 0, 0, 0, 0, 0, 0, 0, 0, 15.3074598636714272, 0, -204.099464848952363, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -21.8677998052448961, 0, 122.459678909371418, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.0933899902622448, 0, -5.83141328139863895, 0, 0, 0, 0, 0, 0, 0, + 0, -2.91570664069931948, 0, 0, 0, 0, 17.4942398441959169, 0, 52.4827195325877506, 0, 0, 0, 0, 0, 0, 0, 0, -367.379036728114254, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -17.4942398441959169, 0, 367.379036728114254, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2.91570664069931948, 0, -52.4827195325877506, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0.971902213566439825, 0, 0, 0, 0, -5.83141328139863895, 0, -17.4942398441959169, 0, 0, 0, 0, 0, 0, 0, 0, 122.459678909371418, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5.83141328139863895, 0, -122.459678909371418, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.971902213566439825, 0, 17.4942398441959169, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, -20.7744098149826513, 0, 0, 0, 0, 0, 0, 193.894491606504745, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -290.841737409757118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83.0976392599306051, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2.30826775722029458, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, 4.76597647343204622, 0, 0, 0, 0, 0, 0, -44.4824470853657647, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66.723670628048647, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -19.0639058937281849, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.52955294149244958, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 5.2955294149244958, 0, 0, 0, 0, -63.5463529790939495, 0, 0, 0, 0, 0, 0, 0, 0, 133.447341256097294, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -63.5463529790939495, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5.2955294149244958, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, -5.42630291944221461, 0, 0, 0, 0, 65.1156350333065753, 0, 0, 0, 0, 0, 0, 0, 0, -136.742833569943808, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65.1156350333065753, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -5.42630291944221461, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, -1.1841163748620862, 0, 0, 0, 0, 14.2093964983450344, 0, 0, 0, 0, 0, 0, 0, 0, -29.8397326465245721, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14.2093964983450344, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1.1841163748620862, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, -21.3140947475175515, 0, 0, 0, 0, 0, 0, 198.931550976830481, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -298.397326465245721, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 85.2563789900702061, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2.36823274972417239, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, -6.74010856667869467, 0, 0, 0, 0, 0, 0, 62.9076799556678169, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -94.3615199335017254, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26.9604342667147787, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.748900951853188297, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 2.99560380741275319, 0, 0, 0, 0, -17.9736228444765191, 0, -53.9208685334295574, 0, 0, 0, 0, 0, 0, 0, 0, 377.446079734006901, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17.9736228444765191, 0, -377.446079734006901, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2.99560380741275319, 0, 53.9208685334295574, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 1.19033225155963006, 0, 0, 0, 0, -7.14199350935778034, 0, -21.425980528073341, 0, 0, 0, 0, 0, 0, 0, 0, 149.981863696513387, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7.14199350935778034, 0, -149.981863696513387, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1.19033225155963006, 0, 21.425980528073341, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 18.7477329620641734, 0, 0, 0, 0, 0, 0, -74.9909318482566936, 0, -99.9879091310089248, 0, 0, 0, 0, 0, 0, 0, 0, -37.4954659241283468, 0, 499.939545655044624, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53.5649513201833526, 0, -299.963727393026774, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2.67824756600916763, 0, 14.2839870187155607, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, 8.83776607290009063, 0, 0, 0, 0, 0, 0, -35.3510642916003625, 0, -47.1347523888004833, 0, 0, 0, 0, 0, 0, 0, 0, -17.6755321458001813, 0, 235.673761944002417, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25.2507602082859732, 0, -141.40425716640145, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1.26253801041429866, 0, 6.73353605554292619, 0, 0, 0, 0, 0, 0, 0, + 0, -1.89380701562144799, 0, 0, 0, 0, 2.52507602082859732, 0, 60.6018244998863357, 0, 0, 0, 0, 0, 0, 8.83776607290009063, 0, -141.40425716640145, 0, -141.40425716640145, 0, 0, 0, 0, 0, 0, 0, 0, 2.52507602082859732, 0, -141.40425716640145, 0, 471.347523888004833, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1.89380701562144799, 0, 60.6018244998863357, 0, -141.40425716640145, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, -1.02706105729735913, 0, 0, 0, 0, 1.36941474306314551, 0, 32.8659538335154923, 0, 0, 0, 0, 0, 0, 4.79295160072100929, 0, -76.6872256115361487, 0, -76.6872256115361487, 0, 0, 0, 0, 0, 0, 0, 0, 1.36941474306314551, 0, -76.6872256115361487, 0, 255.624085371787162, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1.02706105729735913, 0, 32.8659538335154923, 0, -76.6872256115361487, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, -13.6941474306314551, 0, 0, 0, 0, 0, 0, 0, 0, 127.812042685893581, 0, 0, 0, 0, 0, 0, 0, 0, 38.3436128057680743, 0, -127.812042685893581, 0, -153.374451223072297, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21.9106358890103282, 0, -230.061676834608446, 0, 306.748902446144595, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2.73882948612629102, 0, 25.5624085371787162, 0, -30.6748902446144595, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, -8.38591841687309056, 0, 0, 0, 0, 0, 0, 0, 0, 78.2685718908155119, 0, 0, 0, 0, 0, 0, 0, 0, 23.4805715672446536, 0, -78.2685718908155119, 0, -93.9222862689786143, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13.4174694669969449, 0, -140.883429403467921, 0, 187.844572537957229, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1.67718368337461811, 0, 15.6537143781631024, 0, -18.7844572537957229, 0, 0, 0, 0, 0, + 0, 1.11812245558307874, 0, 0, 0, 0, 2.23624491116615748, 0, -46.9611431344893072, 0, 0, 0, 0, 0, 0, 0, 0, -46.9611431344893072, 0, 187.844572537957229, 0, 0, 0, 0, 0, 0, 0, 0, -2.23624491116615748, 0, 46.9611431344893072, 0, 0, 0, -125.229715025304819, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1.11812245558307874, 0, 46.9611431344893072, 0, -187.844572537957229, 0, 125.229715025304819, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0.763823050178243716, 0, 0, 0, 0, 1.52764610035648743, 0, -32.0805681074862361, 0, 0, 0, 0, 0, 0, 0, 0, -32.0805681074862361, 0, 128.322272429944944, 0, 0, 0, 0, 0, 0, 0, 0, -1.52764610035648743, 0, 32.0805681074862361, 0, 0, 0, -85.5481816199632961, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.763823050178243716, 0, 32.0805681074862361, 0, -128.322272429944944, 0, 85.5481816199632961, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 8.02014202687155901, 0, 0, 0, 0, 0, 0, 21.387045404990824, 0, -96.2417043224587082, 0, 0, 0, 0, 0, 0, 0, 0, 16.040284053743118, 0, -160.40284053743118, 0, 192.483408644917416, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -32.0805681074862361, 0, 128.322272429944944, 0, -73.3270128171113967, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2.673380675623853, 0, 32.0805681074862361, 0, -64.1611362149724721, 0, 24.4423376057037989, 0, 0, 0, + + 0, 0, 0, 0, 6.06265750929132863, 0, 0, 0, 0, 0, 0, 16.167086691443543, 0, -72.7518901114959435, 0, 0, 0, 0, 0, 0, 0, 0, 12.1253150185826573, 0, -121.253150185826573, 0, 145.503780222991887, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -24.2506300371653145, 0, 97.0025201486612581, 0, -55.4300115135207189, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2.02088583643044288, 0, 24.2506300371653145, 0, -48.501260074330629, 0, 18.4766705045069063, 0, 0, 0, + 0, -0.505221459107610719, 0, 0, 0, 0, -2.02088583643044288, 0, 24.2506300371653145, 0, 0, 0, 0, 0, 0, -3.03132875464566431, 0, 72.7518901114959435, 0, -121.253150185826573, 0, 0, 0, 0, 0, 0, 0, 0, -2.02088583643044288, 0, 72.7518901114959435, 0, -242.506300371653145, 0, 129.336693531548344, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.505221459107610719, 0, 24.2506300371653145, 0, -121.253150185826573, 0, 129.336693531548344, 0, -27.7150057567603594, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, -0.420369663756282355, 0, 0, 0, 0, -1.68147865502512942, 0, 20.177743860301553, 0, 0, 0, 0, 0, 0, -2.52221798253769413, 0, 60.5332315809046591, 0, -100.888719301507765, 0, 0, 0, 0, 0, 0, 0, 0, -1.68147865502512942, 0, 60.5332315809046591, 0, -201.77743860301553, 0, 107.614633921608283, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.420369663756282355, 0, 20.177743860301553, 0, -100.888719301507765, 0, 107.614633921608283, 0, -23.0602786974874892, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, -2.52221798253769413, 0, 0, 0, 0, 0, 0, -10.0888719301507765, 0, 33.6295731005025884, 0, 0, 0, 0, 0, 0, 0, 0, -15.1333078952261648, 0, 100.888719301507765, 0, -80.7109754412062121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -10.0888719301507765, 0, 100.888719301507765, 0, -161.421950882412424, 0, 46.1205573949749784, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2.52221798253769413, 0, 33.6295731005025884, 0, -80.7109754412062121, 0, 46.1205573949749784, 0, -5.12450637721944204, 0, + + 0, 0, 0, 0, -2.30245947330177705, 0, 0, 0, 0, 0, 0, -9.20983789320710822, 0, 30.6994596440236941, 0, 0, 0, 0, 0, 0, 0, 0, -13.8147568398106623, 0, 92.0983789320710822, 0, -73.6787031456568658, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9.20983789320710822, 0, 92.0983789320710822, 0, -147.357406291313732, 0, 42.1021160832324947, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2.30245947330177705, 0, 30.6994596440236941, 0, -73.6787031456568658, 0, 42.1021160832324947, 0, -4.67801289813694386, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, -2.30245947330177705, 0, 0, 0, 0, 0, 0, -9.20983789320710822, 0, 30.6994596440236941, 0, 0, 0, 0, 0, 0, 0, 0, -13.8147568398106623, 0, 92.0983789320710822, 0, -73.6787031456568658, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9.20983789320710822, 0, 92.0983789320710822, 0, -147.357406291313732, 0, 42.1021160832324947, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2.30245947330177705, 0, 30.6994596440236941, 0, -73.6787031456568658, 0, 42.1021160832324947, 0, -4.67801289813694386, 0, + + 0, 0, 0, 0, -2.52221798253769413, 0, 0, 0, 0, 0, 0, -10.0888719301507765, 0, 33.6295731005025884, 0, 0, 0, 0, 0, 0, 0, 0, -15.1333078952261648, 0, 100.888719301507765, 0, -80.7109754412062121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -10.0888719301507765, 0, 100.888719301507765, 0, -161.421950882412424, 0, 46.1205573949749784, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2.52221798253769413, 0, 33.6295731005025884, 0, -80.7109754412062121, 0, 46.1205573949749784, 0, -5.12450637721944204, 0, + 0, 0.420369663756282355, 0, 0, 0, 0, 1.68147865502512942, 0, -20.177743860301553, 0, 0, 0, 0, 0, 0, 2.52221798253769413, 0, -60.5332315809046591, 0, 100.888719301507765, 0, 0, 0, 0, 0, 0, 0, 0, 1.68147865502512942, 0, -60.5332315809046591, 0, 201.77743860301553, 0, -107.614633921608283, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.420369663756282355, 0, -20.177743860301553, 0, 100.888719301507765, 0, -107.614633921608283, 0, 23.0602786974874892, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0.505221459107610719, 0, 0, 0, 0, 2.02088583643044288, 0, -24.2506300371653145, 0, 0, 0, 0, 0, 0, 3.03132875464566431, 0, -72.7518901114959435, 0, 121.253150185826573, 0, 0, 0, 0, 0, 0, 0, 0, 2.02088583643044288, 0, -72.7518901114959435, 0, 242.506300371653145, 0, -129.336693531548344, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.505221459107610719, 0, -24.2506300371653145, 0, 121.253150185826573, 0, -129.336693531548344, 0, 27.7150057567603594, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 6.06265750929132863, 0, 0, 0, 0, 0, 0, 16.167086691443543, 0, -72.7518901114959435, 0, 0, 0, 0, 0, 0, 0, 0, 12.1253150185826573, 0, -121.253150185826573, 0, 145.503780222991887, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -24.2506300371653145, 0, 97.0025201486612581, 0, -55.4300115135207189, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2.02088583643044288, 0, 24.2506300371653145, 0, -48.501260074330629, 0, 18.4766705045069063, 0, 0, 0, + + 0, 0, 0, 0, 8.02014202687155901, 0, 0, 0, 0, 0, 0, 21.387045404990824, 0, -96.2417043224587082, 0, 0, 0, 0, 0, 0, 0, 0, 16.040284053743118, 0, -160.40284053743118, 0, 192.483408644917416, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -32.0805681074862361, 0, 128.322272429944944, 0, -73.3270128171113967, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2.673380675623853, 0, 32.0805681074862361, 0, -64.1611362149724721, 0, 24.4423376057037989, 0, 0, 0, + 0, -0.763823050178243716, 0, 0, 0, 0, -1.52764610035648743, 0, 32.0805681074862361, 0, 0, 0, 0, 0, 0, 0, 0, 32.0805681074862361, 0, -128.322272429944944, 0, 0, 0, 0, 0, 0, 0, 0, 1.52764610035648743, 0, -32.0805681074862361, 0, 0, 0, 85.5481816199632961, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.763823050178243716, 0, -32.0805681074862361, 0, 128.322272429944944, 0, -85.5481816199632961, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, -1.11812245558307874, 0, 0, 0, 0, -2.23624491116615748, 0, 46.9611431344893072, 0, 0, 0, 0, 0, 0, 0, 0, 46.9611431344893072, 0, -187.844572537957229, 0, 0, 0, 0, 0, 0, 0, 0, 2.23624491116615748, 0, -46.9611431344893072, 0, 0, 0, 125.229715025304819, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.11812245558307874, 0, -46.9611431344893072, 0, 187.844572537957229, 0, -125.229715025304819, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, -8.38591841687309056, 0, 0, 0, 0, 0, 0, 0, 0, 78.2685718908155119, 0, 0, 0, 0, 0, 0, 0, 0, 23.4805715672446536, 0, -78.2685718908155119, 0, -93.9222862689786143, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13.4174694669969449, 0, -140.883429403467921, 0, 187.844572537957229, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1.67718368337461811, 0, 15.6537143781631024, 0, -18.7844572537957229, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, -13.6941474306314551, 0, 0, 0, 0, 0, 0, 0, 0, 127.812042685893581, 0, 0, 0, 0, 0, 0, 0, 0, 38.3436128057680743, 0, -127.812042685893581, 0, -153.374451223072297, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21.9106358890103282, 0, -230.061676834608446, 0, 306.748902446144595, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2.73882948612629102, 0, 25.5624085371787162, 0, -30.6748902446144595, 0, 0, 0, 0, 0, + 0, 1.02706105729735913, 0, 0, 0, 0, -1.36941474306314551, 0, -32.8659538335154923, 0, 0, 0, 0, 0, 0, -4.79295160072100929, 0, 76.6872256115361487, 0, 76.6872256115361487, 0, 0, 0, 0, 0, 0, 0, 0, -1.36941474306314551, 0, 76.6872256115361487, 0, -255.624085371787162, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.02706105729735913, 0, -32.8659538335154923, 0, 76.6872256115361487, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 1.89380701562144799, 0, 0, 0, 0, -2.52507602082859732, 0, -60.6018244998863357, 0, 0, 0, 0, 0, 0, -8.83776607290009063, 0, 141.40425716640145, 0, 141.40425716640145, 0, 0, 0, 0, 0, 0, 0, 0, -2.52507602082859732, 0, 141.40425716640145, 0, -471.347523888004833, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.89380701562144799, 0, -60.6018244998863357, 0, 141.40425716640145, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 8.83776607290009063, 0, 0, 0, 0, 0, 0, -35.3510642916003625, 0, -47.1347523888004833, 0, 0, 0, 0, 0, 0, 0, 0, -17.6755321458001813, 0, 235.673761944002417, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25.2507602082859732, 0, -141.40425716640145, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1.26253801041429866, 0, 6.73353605554292619, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, 18.7477329620641734, 0, 0, 0, 0, 0, 0, -74.9909318482566936, 0, -99.9879091310089248, 0, 0, 0, 0, 0, 0, 0, 0, -37.4954659241283468, 0, 499.939545655044624, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53.5649513201833526, 0, -299.963727393026774, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2.67824756600916763, 0, 14.2839870187155607, 0, 0, 0, 0, 0, 0, 0, + 0, -1.19033225155963006, 0, 0, 0, 0, 7.14199350935778034, 0, 21.425980528073341, 0, 0, 0, 0, 0, 0, 0, 0, -149.981863696513387, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7.14199350935778034, 0, 149.981863696513387, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.19033225155963006, 0, -21.425980528073341, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, -2.99560380741275319, 0, 0, 0, 0, 17.9736228444765191, 0, 53.9208685334295574, 0, 0, 0, 0, 0, 0, 0, 0, -377.446079734006901, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -17.9736228444765191, 0, 377.446079734006901, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2.99560380741275319, 0, -53.9208685334295574, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, -6.74010856667869467, 0, 0, 0, 0, 0, 0, 62.9076799556678169, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -94.3615199335017254, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26.9604342667147787, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.748900951853188297, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, -21.3140947475175515, 0, 0, 0, 0, 0, 0, 198.931550976830481, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -298.397326465245721, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 85.2563789900702061, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2.36823274972417239, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1.1841163748620862, 0, 0, 0, 0, -14.2093964983450344, 0, 0, 0, 0, 0, 0, 0, 0, 29.8397326465245721, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -14.2093964983450344, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.1841163748620862, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 5.42630291944221461, 0, 0, 0, 0, -65.1156350333065753, 0, 0, 0, 0, 0, 0, 0, 0, 136.742833569943808, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -65.1156350333065753, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5.42630291944221461, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 5.96893321138643607, 0, 0, 0, 0, -89.533998170796541, 0, 0, 0, 0, 0, 0, 0, 0, 250.695194878230315, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -179.067996341593082, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29.8446660569321803, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.542630291944221461, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, -5.42630291944221461, 0, 0, 0, 0, 0, 0, 65.1156350333065753, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -136.742833569943808, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65.1156350333065753, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -5.42630291944221461, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, 24.8664438721038101, 0, 0, 0, 0, 0, 0, -298.397326465245721, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 626.634385577016015, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -298.397326465245721, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24.8664438721038101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1.06570473737587758, 0, 0, 0, 0, -8.88087281146564647, 0, -21.3140947475175515, 0, 0, 0, 0, 0, 0, 4.97328877442076202, 0, 198.931550976830481, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10.6570473737587758, 0, -298.397326465245721, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -4.14440731201730169, 0, 85.2563789900702061, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.11841163748620862, 0, -2.36823274972417239, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, -3.37005428333934733, 0, 0, 0, 0, 28.0837856944945611, 0, 67.4010856667869467, 0, 0, 0, 0, 0, 0, -15.7269199889169542, 0, -629.076799556678169, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -33.7005428333934733, 0, 943.615199335017254, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13.1057666574307952, 0, -269.604342667147787, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.374450475926594148, 0, 7.48900951853188297, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 8.98681142223825956, 0, 0, 0, 0, 0, 0, -53.9208685334295574, 0, -53.9208685334295574, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 377.446079734006901, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53.9208685334295574, 0, -377.446079734006901, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8.98681142223825956, 0, 53.9208685334295574, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, -22.6163127796329711, 0, 0, 0, 0, 0, 0, 135.697876677797827, 0, 135.697876677797827, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -949.885136744584786, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -135.697876677797827, 0, 949.885136744584786, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22.6163127796329711, 0, -135.697876677797827, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, -1.0415407201146763, 0, 0, 0, 0, 3.1246221603440289, 0, 37.4954659241283468, 0, 0, 0, 0, 0, 0, 6.2492443206880578, 0, -149.981863696513387, 0, -99.9879091310089248, 0, 0, 0, 0, 0, 0, 0, 0, -0.892749188669722543, 0, -74.9909318482566936, 0, 499.939545655044624, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2.82703909745412139, 0, 107.129902640366705, 0, -299.963727393026774, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.148791531444953757, 0, -5.35649513201833526, 0, 14.2839870187155607, 0, 0, 0, 0, 0, 0, 0, + + 0, 2.20944151822502266, 0, 0, 0, 0, -6.62832455467506797, 0, -79.5398946561008156, 0, 0, 0, 0, 0, 0, -13.2566491093501359, 0, 318.159578624403263, 0, 212.106385749602175, 0, 0, 0, 0, 0, 0, 0, 0, 1.89380701562144799, 0, 159.079789312201631, 0, -1060.53192874801088, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5.99705554946791864, 0, -227.256841874573759, 0, 636.319157248806525, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.315634502603574665, 0, 11.3628420937286879, 0, -30.3009122499431679, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, -9.46903507810723996, 0, 0, 0, 0, 0, 0, 12.6253801041429866, 0, 101.003040833143893, 0, 0, 0, 0, 0, 0, 0, 0, 44.1888303645004531, 0, -235.673761944002417, 0, -141.40425716640145, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12.6253801041429866, 0, -235.673761944002417, 0, 471.347523888004833, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9.46903507810723996, 0, 101.003040833143893, 0, -141.40425716640145, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, 17.4600379740551053, 0, 0, 0, 0, 0, 0, -23.2800506320734737, 0, -186.24040505658779, 0, 0, 0, 0, 0, 0, 0, 0, -81.480177212257158, 0, 434.560945132038176, 0, 260.736567079222906, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -23.2800506320734737, 0, 434.560945132038176, 0, -869.121890264076352, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17.4600379740551053, 0, -186.24040505658779, 0, 260.736567079222906, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0.855884214414465945, 0, 0, 0, 0, 0.855884214414465945, 0, -41.0824422918943654, 0, 0, 0, 0, 0, 0, -2.39647580036050465, 0, 0, 0, 191.718064028840372, 0, 0, 0, 0, 0, 0, 0, 0, -3.76589054342365016, 0, 115.030838417304223, 0, -191.718064028840372, 0, -153.374451223072297, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1.19823790018025232, 0, 65.7319076670309846, 0, -345.092515251912669, 0, 306.748902446144595, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.171176842882893189, 0, -8.21648845837887307, 0, 38.3436128057680743, 0, -30.6748902446144595, 0, 0, 0, 0, 0, + + 0, -1.39765306947884843, 0, 0, 0, 0, -1.39765306947884843, 0, 67.0873473349847245, 0, 0, 0, 0, 0, 0, 3.9134285945407756, 0, 0, 0, -313.074287563262048, 0, 0, 0, 0, 0, 0, 0, 0, 6.14967350570693308, 0, -187.844572537957229, 0, 313.074287563262048, 0, 250.459430050609638, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.9567142972703878, 0, -107.339755735975559, 0, 563.533717613871686, 0, -500.918860101219276, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.279530613895769685, 0, 13.4174694669969449, 0, -62.6148575126524095, 0, 50.0918860101219276, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 7.82685718908155119, 0, 0, 0, 0, 0, 0, 15.6537143781631024, 0, -109.576000647141717, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -109.576000647141717, 0, 262.98240155314012, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -15.6537143781631024, 0, 109.576000647141717, 0, 0, 0, -125.229715025304819, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7.82685718908155119, 0, 109.576000647141717, 0, -262.98240155314012, 0, 125.229715025304819, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, -11.4573457526736557, 0, 0, 0, 0, 0, 0, -22.9146915053473115, 0, 160.40284053743118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 160.40284053743118, 0, -384.966817289834833, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22.9146915053473115, 0, -160.40284053743118, 0, 0, 0, 183.317532042778492, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11.4573457526736557, 0, -160.40284053743118, 0, 384.966817289834833, 0, -183.317532042778492, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, -0.572867287633682787, 0, 0, 0, 0, -2.10051338799017022, 0, 32.0805681074862361, 0, 0, 0, 0, 0, 0, -2.673380675623853, 0, 85.5481816199632961, 0, -192.483408644917416, 0, 0, 0, 0, 0, 0, 0, 0, -1.14573457526736557, 0, 64.1611362149724721, 0, -320.805681074862361, 0, 256.644544859889888, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.190955762544560929, 0, 0, 0, -64.1611362149724721, 0, 171.096363239926592, 0, -73.3270128171113967, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.190955762544560929, 0, -10.693522702495412, 0, 64.1611362149724721, 0, -85.5481816199632961, 0, 24.4423376057037989, 0, 0, 0, + + 0, 0.757832188661416079, 0, 0, 0, 0, 2.77871802509185895, 0, -42.4386025650393004, 0, 0, 0, 0, 0, 0, 3.53655021375327503, 0, -113.169606840104801, 0, 254.631615390235802, 0, 0, 0, 0, 0, 0, 0, 0, 1.51566437732283216, 0, -84.8772051300786008, 0, 424.386025650393004, 0, -339.508820520314403, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.25261072955380536, 0, 0, 0, 84.8772051300786008, 0, -226.339213680209602, 0, 97.0025201486612581, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.25261072955380536, 0, 14.1462008550131001, 0, -84.8772051300786008, 0, 113.169606840104801, 0, -32.334173382887086, 0, 0, 0, + 0, 0, 0, 0, -4.54699313196849647, 0, 0, 0, 0, 0, 0, -18.1879725278739859, 0, 72.7518901114959435, 0, 0, 0, 0, 0, 0, 0, 0, -27.2819587918109788, 0, 218.255670334487831, 0, -218.255670334487831, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -18.1879725278739859, 0, 218.255670334487831, 0, -436.511340668975661, 0, 166.290034540562157, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -4.54699313196849647, 0, 72.7518901114959435, 0, -218.255670334487831, 0, 166.290034540562157, 0, -27.7150057567603594, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, 5.46480562883167061, 0, 0, 0, 0, 0, 0, 21.8592225153266825, 0, -87.4368900613067298, 0, 0, 0, 0, 0, 0, 0, 0, 32.7888337729900237, 0, -262.310670183920189, 0, 262.310670183920189, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21.8592225153266825, 0, -262.310670183920189, 0, 524.621340367840379, 0, -199.85574871155824, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5.46480562883167061, 0, -87.4368900613067298, 0, 262.310670183920189, 0, -199.85574871155824, 0, 33.3092914519263733, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0.210184831878141177, 0, 0, 0, 0, 1.05092415939070589, 0, -12.6110899126884706, 0, 0, 0, 0, 0, 0, 2.10184831878141177, 0, -50.4443596507538826, 0, 84.073932751256471, 0, 0, 0, 0, 0, 0, 0, 0, 2.10184831878141177, 0, -75.6665394761308239, 0, 252.221798253769413, 0, -134.518292402010354, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.05092415939070589, 0, -50.4443596507538826, 0, 252.221798253769413, 0, -269.036584804020707, 0, 57.650696743718723, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.210184831878141177, 0, -12.6110899126884706, 0, 84.073932751256471, 0, -134.518292402010354, 0, 57.650696743718723, 0, -5.12450637721944204, 0, + + 0, -0.230245947330177705, 0, 0, 0, 0, -1.15122973665088853, 0, 13.8147568398106623, 0, 0, 0, 0, 0, 0, -2.30245947330177705, 0, 55.2590273592426493, 0, -92.0983789320710822, 0, 0, 0, 0, 0, 0, 0, 0, -2.30245947330177705, 0, 82.888541038863974, 0, -276.295136796213247, 0, 147.357406291313732, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1.15122973665088853, 0, 55.2590273592426493, 0, -276.295136796213247, 0, 294.714812582627463, 0, -63.1531741248487421, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.230245947330177705, 0, 13.8147568398106623, 0, -92.0983789320710822, 0, 147.357406291313732, 0, -63.1531741248487421, 0, 5.61361547776433263, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0.230245947330177705, 0, 0, 0, 0, 1.15122973665088853, 0, -13.8147568398106623, 0, 0, 0, 0, 0, 0, 2.30245947330177705, 0, -55.2590273592426493, 0, 92.0983789320710822, 0, 0, 0, 0, 0, 0, 0, 0, 2.30245947330177705, 0, -82.888541038863974, 0, 276.295136796213247, 0, -147.357406291313732, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.15122973665088853, 0, -55.2590273592426493, 0, 276.295136796213247, 0, -294.714812582627463, 0, 63.1531741248487421, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.230245947330177705, 0, -13.8147568398106623, 0, 92.0983789320710822, 0, -147.357406291313732, 0, 63.1531741248487421, 0, -5.61361547776433263, 0, + + 0, -0.210184831878141177, 0, 0, 0, 0, -1.05092415939070589, 0, 12.6110899126884706, 0, 0, 0, 0, 0, 0, -2.10184831878141177, 0, 50.4443596507538826, 0, -84.073932751256471, 0, 0, 0, 0, 0, 0, 0, 0, -2.10184831878141177, 0, 75.6665394761308239, 0, -252.221798253769413, 0, 134.518292402010354, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1.05092415939070589, 0, 50.4443596507538826, 0, -252.221798253769413, 0, 269.036584804020707, 0, -57.650696743718723, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.210184831878141177, 0, 12.6110899126884706, 0, -84.073932751256471, 0, 134.518292402010354, 0, -57.650696743718723, 0, 5.12450637721944204, 0, + 0, 0, 0, 0, 5.46480562883167061, 0, 0, 0, 0, 0, 0, 21.8592225153266825, 0, -87.4368900613067298, 0, 0, 0, 0, 0, 0, 0, 0, 32.7888337729900237, 0, -262.310670183920189, 0, 262.310670183920189, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21.8592225153266825, 0, -262.310670183920189, 0, 524.621340367840379, 0, -199.85574871155824, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5.46480562883167061, 0, -87.4368900613067298, 0, 262.310670183920189, 0, -199.85574871155824, 0, 33.3092914519263733, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, -4.54699313196849647, 0, 0, 0, 0, 0, 0, -18.1879725278739859, 0, 72.7518901114959435, 0, 0, 0, 0, 0, 0, 0, 0, -27.2819587918109788, 0, 218.255670334487831, 0, -218.255670334487831, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -18.1879725278739859, 0, 218.255670334487831, 0, -436.511340668975661, 0, 166.290034540562157, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -4.54699313196849647, 0, 72.7518901114959435, 0, -218.255670334487831, 0, 166.290034540562157, 0, -27.7150057567603594, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, -0.757832188661416079, 0, 0, 0, 0, -2.77871802509185895, 0, 42.4386025650393004, 0, 0, 0, 0, 0, 0, -3.53655021375327503, 0, 113.169606840104801, 0, -254.631615390235802, 0, 0, 0, 0, 0, 0, 0, 0, -1.51566437732283216, 0, 84.8772051300786008, 0, -424.386025650393004, 0, 339.508820520314403, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.25261072955380536, 0, 0, 0, -84.8772051300786008, 0, 226.339213680209602, 0, -97.0025201486612581, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.25261072955380536, 0, -14.1462008550131001, 0, 84.8772051300786008, 0, -113.169606840104801, 0, 32.334173382887086, 0, 0, 0, + + 0, 0.572867287633682787, 0, 0, 0, 0, 2.10051338799017022, 0, -32.0805681074862361, 0, 0, 0, 0, 0, 0, 2.673380675623853, 0, -85.5481816199632961, 0, 192.483408644917416, 0, 0, 0, 0, 0, 0, 0, 0, 1.14573457526736557, 0, -64.1611362149724721, 0, 320.805681074862361, 0, -256.644544859889888, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.190955762544560929, 0, 0, 0, 64.1611362149724721, 0, -171.096363239926592, 0, 73.3270128171113967, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.190955762544560929, 0, 10.693522702495412, 0, -64.1611362149724721, 0, 85.5481816199632961, 0, -24.4423376057037989, 0, 0, 0, + 0, 0, 0, 0, -11.4573457526736557, 0, 0, 0, 0, 0, 0, -22.9146915053473115, 0, 160.40284053743118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 160.40284053743118, 0, -384.966817289834833, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22.9146915053473115, 0, -160.40284053743118, 0, 0, 0, 183.317532042778492, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11.4573457526736557, 0, -160.40284053743118, 0, 384.966817289834833, 0, -183.317532042778492, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, 7.82685718908155119, 0, 0, 0, 0, 0, 0, 15.6537143781631024, 0, -109.576000647141717, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -109.576000647141717, 0, 262.98240155314012, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -15.6537143781631024, 0, 109.576000647141717, 0, 0, 0, -125.229715025304819, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7.82685718908155119, 0, 109.576000647141717, 0, -262.98240155314012, 0, 125.229715025304819, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1.39765306947884843, 0, 0, 0, 0, 1.39765306947884843, 0, -67.0873473349847245, 0, 0, 0, 0, 0, 0, -3.9134285945407756, 0, 0, 0, 313.074287563262048, 0, 0, 0, 0, 0, 0, 0, 0, -6.14967350570693308, 0, 187.844572537957229, 0, -313.074287563262048, 0, -250.459430050609638, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1.9567142972703878, 0, 107.339755735975559, 0, -563.533717613871686, 0, 500.918860101219276, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.279530613895769685, 0, -13.4174694669969449, 0, 62.6148575126524095, 0, -50.0918860101219276, 0, 0, 0, 0, 0, + + 0, -0.855884214414465945, 0, 0, 0, 0, -0.855884214414465945, 0, 41.0824422918943654, 0, 0, 0, 0, 0, 0, 2.39647580036050465, 0, 0, 0, -191.718064028840372, 0, 0, 0, 0, 0, 0, 0, 0, 3.76589054342365016, 0, -115.030838417304223, 0, 191.718064028840372, 0, 153.374451223072297, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.19823790018025232, 0, -65.7319076670309846, 0, 345.092515251912669, 0, -306.748902446144595, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.171176842882893189, 0, 8.21648845837887307, 0, -38.3436128057680743, 0, 30.6748902446144595, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 17.4600379740551053, 0, 0, 0, 0, 0, 0, -23.2800506320734737, 0, -186.24040505658779, 0, 0, 0, 0, 0, 0, 0, 0, -81.480177212257158, 0, 434.560945132038176, 0, 260.736567079222906, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -23.2800506320734737, 0, 434.560945132038176, 0, -869.121890264076352, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17.4600379740551053, 0, -186.24040505658779, 0, 260.736567079222906, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, -9.46903507810723996, 0, 0, 0, 0, 0, 0, 12.6253801041429866, 0, 101.003040833143893, 0, 0, 0, 0, 0, 0, 0, 0, 44.1888303645004531, 0, -235.673761944002417, 0, -141.40425716640145, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12.6253801041429866, 0, -235.673761944002417, 0, 471.347523888004833, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9.46903507810723996, 0, 101.003040833143893, 0, -141.40425716640145, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, -2.20944151822502266, 0, 0, 0, 0, 6.62832455467506797, 0, 79.5398946561008156, 0, 0, 0, 0, 0, 0, 13.2566491093501359, 0, -318.159578624403263, 0, -212.106385749602175, 0, 0, 0, 0, 0, 0, 0, 0, -1.89380701562144799, 0, -159.079789312201631, 0, 1060.53192874801088, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -5.99705554946791864, 0, 227.256841874573759, 0, -636.319157248806525, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.315634502603574665, 0, -11.3628420937286879, 0, 30.3009122499431679, 0, 0, 0, 0, 0, 0, 0, + + 0, 1.0415407201146763, 0, 0, 0, 0, -3.1246221603440289, 0, -37.4954659241283468, 0, 0, 0, 0, 0, 0, -6.2492443206880578, 0, 149.981863696513387, 0, 99.9879091310089248, 0, 0, 0, 0, 0, 0, 0, 0, 0.892749188669722543, 0, 74.9909318482566936, 0, -499.939545655044624, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2.82703909745412139, 0, -107.129902640366705, 0, 299.963727393026774, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.148791531444953757, 0, 5.35649513201833526, 0, -14.2839870187155607, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, -22.6163127796329711, 0, 0, 0, 0, 0, 0, 135.697876677797827, 0, 135.697876677797827, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -949.885136744584786, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -135.697876677797827, 0, 949.885136744584786, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22.6163127796329711, 0, -135.697876677797827, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, 8.98681142223825956, 0, 0, 0, 0, 0, 0, -53.9208685334295574, 0, -53.9208685334295574, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 377.446079734006901, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53.9208685334295574, 0, -377.446079734006901, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8.98681142223825956, 0, 53.9208685334295574, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 3.37005428333934733, 0, 0, 0, 0, -28.0837856944945611, 0, -67.4010856667869467, 0, 0, 0, 0, 0, 0, 15.7269199889169542, 0, 629.076799556678169, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33.7005428333934733, 0, -943.615199335017254, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -13.1057666574307952, 0, 269.604342667147787, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.374450475926594148, 0, -7.48900951853188297, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, -1.06570473737587758, 0, 0, 0, 0, 8.88087281146564647, 0, 21.3140947475175515, 0, 0, 0, 0, 0, 0, -4.97328877442076202, 0, -198.931550976830481, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -10.6570473737587758, 0, 298.397326465245721, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4.14440731201730169, 0, -85.2563789900702061, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.11841163748620862, 0, 2.36823274972417239, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 24.8664438721038101, 0, 0, 0, 0, 0, 0, -298.397326465245721, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 626.634385577016015, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -298.397326465245721, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24.8664438721038101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, -5.42630291944221461, 0, 0, 0, 0, 0, 0, 65.1156350333065753, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -136.742833569943808, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65.1156350333065753, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -5.42630291944221461, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, -5.96893321138643607, 0, 0, 0, 0, 89.533998170796541, 0, 0, 0, 0, 0, 0, 0, 0, -250.695194878230315, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 179.067996341593082, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -29.8446660569321803, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.542630291944221461, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, -6.10308329187281232, 0, 0, 0, 0, 91.5462493780921848, 0, 0, 0, 0, 0, 0, 0, 0, -256.329498258658117, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 183.09249875618437, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -30.5154164593640616, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.554825753806619302, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, -1.27258083654638245, 0, 0, 0, 0, 19.0887125481957368, 0, 0, 0, 0, 0, 0, 0, 0, -53.4483951349480631, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38.1774250963914736, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -6.36290418273191227, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.115689166958762041, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, -25.4516167309276491, 0, 0, 0, 0, 0, 0, 305.419400771131789, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -641.380741619376757, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 305.419400771131789, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -25.4516167309276491, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, -7.67395118221990013, 0, 0, 0, 0, 0, 0, 92.0874141866388015, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -193.383569791941483, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92.0874141866388015, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7.67395118221990013, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 3.45327803199895506, 0, 0, 0, 0, -28.7773169333246255, 0, -69.0655606399791011, 0, 0, 0, 0, 0, 0, 16.1152974826617903, 0, 644.611899306471611, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34.5327803199895506, 0, -966.917848959707416, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -13.4294145688848252, 0, 276.262242559916405, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.383697559110995006, 0, -7.67395118221990013, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 1.30521641151882637, 0, 0, 0, 0, -10.876803429323553, 0, -26.1043282303765273, 0, 0, 0, 0, 0, 0, 6.09100992042118971, 0, 243.640396816847588, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13.0521641151882637, 0, -365.460595225271382, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -5.07584160035099142, 0, 104.417312921506109, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.145024045724314041, 0, -2.90048091448628081, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 23.2038473158902465, 0, 0, 0, 0, 0, 0, -139.223083895341479, 0, -139.223083895341479, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 974.561587267390353, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 139.223083895341479, 0, -974.561587267390353, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -23.2038473158902465, 0, 139.223083895341479, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, 10.3770759875713254, 0, 0, 0, 0, 0, 0, -62.2624559254279527, 0, -62.2624559254279527, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 435.837191477995669, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62.2624559254279527, 0, -435.837191477995669, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -10.3770759875713254, 0, 62.2624559254279527, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, -2.26998537228122744, 0, 0, 0, 0, 6.80995611684368233, 0, 81.7194734021241879, 0, 0, 0, 0, 0, 0, 13.6199122336873647, 0, -326.877893608496752, 0, -217.918595738997834, 0, 0, 0, 0, 0, 0, 0, 0, -1.94570174766962352, 0, -163.438946804248376, 0, 1089.59297869498917, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -6.16138886762047449, 0, 233.484209720354823, 0, -653.755787216993503, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.32428362461160392, 0, -11.6742104860177411, 0, 31.1312279627139763, 0, 0, 0, 0, 0, 0, 0, + + 0, -1.16447792575524938, 0, 0, 0, 0, 3.49343377726574814, 0, 41.9212053271889777, 0, 0, 0, 0, 0, 0, 6.98686755453149629, 0, -167.684821308755911, 0, -111.789880872503941, 0, 0, 0, 0, 0, 0, 0, 0, -0.998123936361642327, 0, -83.8424106543779555, 0, 558.949404362519703, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -3.16072579847853403, 0, 119.774872363397079, 0, -335.369642617511822, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.166353989393607054, 0, -5.98874361816985396, 0, 15.9699829817862772, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, -17.9662308545095619, 0, 0, 0, 0, 0, 0, 23.9549744726794158, 0, 191.639795781435327, 0, 0, 0, 0, 0, 0, 0, 0, 83.8424106543779555, 0, -447.159523490015762, 0, -268.295714094009457, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23.9549744726794158, 0, -447.159523490015762, 0, 894.319046980031525, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -17.9662308545095619, 0, 191.639795781435327, 0, -268.295714094009457, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, -10.3728082201740557, 0, 0, 0, 0, 0, 0, 13.8304109602320742, 0, 110.643287681856594, 0, 0, 0, 0, 0, 0, 0, 0, 48.4064383608122598, 0, -258.167671257665386, 0, -154.900602754599231, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13.8304109602320742, 0, -258.167671257665386, 0, 516.335342515330771, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -10.3728082201740557, 0, 110.643287681856594, 0, -154.900602754599231, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1.44066780835750773, 0, 0, 0, 0, 1.44066780835750773, 0, -69.1520548011603712, 0, 0, 0, 0, 0, 0, -4.03386986340102165, 0, 0, 0, 322.709589072081732, 0, 0, 0, 0, 0, 0, 0, 0, -6.33893835677303403, 0, 193.625753443249039, 0, -322.709589072081732, 0, -258.167671257665386, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2.01693493170051083, 0, 110.643287681856594, 0, -580.877260329747118, 0, 516.335342515330771, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.288133561671501547, 0, -13.8304109602320742, 0, 64.5419178144163464, 0, -51.6335342515330771, 0, 0, 0, 0, 0, + + 0, 0.924460610246778137, 0, 0, 0, 0, 0.924460610246778137, 0, -44.3741092918453506, 0, 0, 0, 0, 0, 0, -2.58848970869097878, 0, 0, 0, 207.079176695278303, 0, 0, 0, 0, 0, 0, 0, 0, -4.0676266850858238, 0, 124.247506017166982, 0, -207.079176695278303, 0, -165.663341356222642, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1.29424485434548939, 0, 70.998574866952561, 0, -372.742518051500945, 0, 331.326682712445284, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.184892122049355627, 0, -8.87482185836907012, 0, 41.4158353390556606, 0, -33.1326682712445284, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 11.8330958111587602, 0, 0, 0, 0, 0, 0, 23.6661916223175203, 0, -165.663341356222642, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -165.663341356222642, 0, 397.592019254934341, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -23.6661916223175203, 0, 165.663341356222642, 0, 0, 0, -189.329532978540163, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -11.8330958111587602, 0, 165.663341356222642, 0, -397.592019254934341, 0, 189.329532978540163, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, 8.36726229050048951, 0, 0, 0, 0, 0, 0, 16.734524581000979, 0, -117.141672067006853, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -117.141672067006853, 0, 281.140012960816447, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -16.734524581000979, 0, 117.141672067006853, 0, 0, 0, -133.876196648007832, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8.36726229050048951, 0, 117.141672067006853, 0, -281.140012960816447, 0, 133.876196648007832, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, -0.784430839734420891, 0, 0, 0, 0, -2.87624641235954327, 0, 43.9281270251275699, 0, 0, 0, 0, 0, 0, -3.66067725209396416, 0, 117.141672067006853, 0, -263.568762150765419, 0, 0, 0, 0, 0, 0, 0, 0, -1.56886167946884178, 0, 87.8562540502551398, 0, -439.281270251275699, 0, 351.425016201020559, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.261476946578140297, 0, 0, 0, -87.8562540502551398, 0, 234.283344134013706, 0, -100.407147486005874, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.261476946578140297, 0, -14.6427090083758566, 0, 87.8562540502551398, 0, -117.141672067006853, 0, 33.469049162001958, 0, 0, 0, + + 0, -0.607617515708582275, 0, 0, 0, 0, -2.22793089093146834, 0, 34.0265808796806074, 0, 0, 0, 0, 0, 0, -2.83554840664005062, 0, 90.7375490124816198, 0, -204.159485278083644, 0, 0, 0, 0, 0, 0, 0, 0, -1.21523503141716455, 0, 68.0531617593612148, 0, -340.265808796806074, 0, 272.212647037444859, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.202539171902860758, 0, 0, 0, -68.0531617593612148, 0, 181.47509802496324, 0, -77.7750420106985312, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.202539171902860758, 0, -11.3421936265602025, 0, 68.0531617593612148, 0, -90.7375490124816198, 0, 25.9250140035661771, 0, 0, 0, + 0, 0, 0, 0, -5.67109681328010124, 0, 0, 0, 0, 0, 0, -22.6843872531204049, 0, 90.7375490124816198, 0, 0, 0, 0, 0, 0, 0, 0, -34.0265808796806074, 0, 272.212647037444859, 0, -272.212647037444859, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -22.6843872531204049, 0, 272.212647037444859, 0, -544.425294074889719, 0, 207.400112028529417, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -5.67109681328010124, 0, 90.7375490124816198, 0, -272.212647037444859, 0, 207.400112028529417, 0, -34.5666853380882361, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, -4.79295160072100929, 0, 0, 0, 0, 0, 0, -19.1718064028840372, 0, 76.6872256115361487, 0, 0, 0, 0, 0, 0, 0, 0, -28.7577096043260558, 0, 230.061676834608446, 0, -230.061676834608446, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -19.1718064028840372, 0, 230.061676834608446, 0, -460.123353669216892, 0, 175.285087112082626, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -4.79295160072100929, 0, 76.6872256115361487, 0, -230.061676834608446, 0, 175.285087112082626, 0, -29.2141811853471043, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0.239647580036050465, 0, 0, 0, 0, 1.19823790018025232, 0, -14.3788548021630279, 0, 0, 0, 0, 0, 0, 2.39647580036050465, 0, -57.5154192086521115, 0, 95.8590320144201859, 0, 0, 0, 0, 0, 0, 0, 0, 2.39647580036050465, 0, -86.2731288129781673, 0, 287.577096043260558, 0, -153.374451223072297, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.19823790018025232, 0, -57.5154192086521115, 0, 287.577096043260558, 0, -306.748902446144595, 0, 65.7319076670309846, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.239647580036050465, 0, -14.3788548021630279, 0, 95.8590320144201859, 0, -153.374451223072297, 0, 65.7319076670309846, 0, -5.84283623706942085, 0, + + 0, 0.220443711424950199, 0, 0, 0, 0, 1.10221855712475099, 0, -13.2266226854970119, 0, 0, 0, 0, 0, 0, 2.20443711424950199, 0, -52.9064907419880478, 0, 88.1774845699800796, 0, 0, 0, 0, 0, 0, 0, 0, 2.20443711424950199, 0, -79.3597361129820716, 0, 264.532453709940239, 0, -141.083975311968127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.10221855712475099, 0, -52.9064907419880478, 0, 264.532453709940239, 0, -282.167950623936255, 0, 60.4645608479863403, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.220443711424950199, 0, -13.2266226854970119, 0, 88.1774845699800796, 0, -141.083975311968127, 0, 60.4645608479863403, 0, -5.37462763093211914, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0.220443711424950199, 0, 0, 0, 0, 1.10221855712475099, 0, -13.2266226854970119, 0, 0, 0, 0, 0, 0, 2.20443711424950199, 0, -52.9064907419880478, 0, 88.1774845699800796, 0, 0, 0, 0, 0, 0, 0, 0, 2.20443711424950199, 0, -79.3597361129820716, 0, 264.532453709940239, 0, -141.083975311968127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.10221855712475099, 0, -52.9064907419880478, 0, 264.532453709940239, 0, -282.167950623936255, 0, 60.4645608479863403, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.220443711424950199, 0, -13.2266226854970119, 0, 88.1774845699800796, 0, -141.083975311968127, 0, 60.4645608479863403, 0, -5.37462763093211914, 0, + + 0, 0.239647580036050465, 0, 0, 0, 0, 1.19823790018025232, 0, -14.3788548021630279, 0, 0, 0, 0, 0, 0, 2.39647580036050465, 0, -57.5154192086521115, 0, 95.8590320144201859, 0, 0, 0, 0, 0, 0, 0, 0, 2.39647580036050465, 0, -86.2731288129781673, 0, 287.577096043260558, 0, -153.374451223072297, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.19823790018025232, 0, -57.5154192086521115, 0, 287.577096043260558, 0, -306.748902446144595, 0, 65.7319076670309846, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.239647580036050465, 0, -14.3788548021630279, 0, 95.8590320144201859, 0, -153.374451223072297, 0, 65.7319076670309846, 0, -5.84283623706942085, 0, + 0, 0, 0, 0, 4.79295160072100929, 0, 0, 0, 0, 0, 0, 19.1718064028840372, 0, -76.6872256115361487, 0, 0, 0, 0, 0, 0, 0, 0, 28.7577096043260558, 0, -230.061676834608446, 0, 230.061676834608446, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19.1718064028840372, 0, -230.061676834608446, 0, 460.123353669216892, 0, -175.285087112082626, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4.79295160072100929, 0, -76.6872256115361487, 0, 230.061676834608446, 0, -175.285087112082626, 0, 29.2141811853471043, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, 5.67109681328010124, 0, 0, 0, 0, 0, 0, 22.6843872531204049, 0, -90.7375490124816198, 0, 0, 0, 0, 0, 0, 0, 0, 34.0265808796806074, 0, -272.212647037444859, 0, 272.212647037444859, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22.6843872531204049, 0, -272.212647037444859, 0, 544.425294074889719, 0, -207.400112028529417, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5.67109681328010124, 0, -90.7375490124816198, 0, 272.212647037444859, 0, -207.400112028529417, 0, 34.5666853380882361, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, -0.607617515708582275, 0, 0, 0, 0, -2.22793089093146834, 0, 34.0265808796806074, 0, 0, 0, 0, 0, 0, -2.83554840664005062, 0, 90.7375490124816198, 0, -204.159485278083644, 0, 0, 0, 0, 0, 0, 0, 0, -1.21523503141716455, 0, 68.0531617593612148, 0, -340.265808796806074, 0, 272.212647037444859, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.202539171902860758, 0, 0, 0, -68.0531617593612148, 0, 181.47509802496324, 0, -77.7750420106985312, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.202539171902860758, 0, -11.3421936265602025, 0, 68.0531617593612148, 0, -90.7375490124816198, 0, 25.9250140035661771, 0, 0, 0, + + 0, -0.784430839734420891, 0, 0, 0, 0, -2.87624641235954327, 0, 43.9281270251275699, 0, 0, 0, 0, 0, 0, -3.66067725209396416, 0, 117.141672067006853, 0, -263.568762150765419, 0, 0, 0, 0, 0, 0, 0, 0, -1.56886167946884178, 0, 87.8562540502551398, 0, -439.281270251275699, 0, 351.425016201020559, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.261476946578140297, 0, 0, 0, -87.8562540502551398, 0, 234.283344134013706, 0, -100.407147486005874, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.261476946578140297, 0, -14.6427090083758566, 0, 87.8562540502551398, 0, -117.141672067006853, 0, 33.469049162001958, 0, 0, 0, + 0, 0, 0, 0, -8.36726229050048951, 0, 0, 0, 0, 0, 0, -16.734524581000979, 0, 117.141672067006853, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 117.141672067006853, 0, -281.140012960816447, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16.734524581000979, 0, -117.141672067006853, 0, 0, 0, 133.876196648007832, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8.36726229050048951, 0, -117.141672067006853, 0, 281.140012960816447, 0, -133.876196648007832, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, -11.8330958111587602, 0, 0, 0, 0, 0, 0, -23.6661916223175203, 0, 165.663341356222642, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 165.663341356222642, 0, -397.592019254934341, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23.6661916223175203, 0, -165.663341356222642, 0, 0, 0, 189.329532978540163, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11.8330958111587602, 0, -165.663341356222642, 0, 397.592019254934341, 0, -189.329532978540163, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0.924460610246778137, 0, 0, 0, 0, 0.924460610246778137, 0, -44.3741092918453506, 0, 0, 0, 0, 0, 0, -2.58848970869097878, 0, 0, 0, 207.079176695278303, 0, 0, 0, 0, 0, 0, 0, 0, -4.0676266850858238, 0, 124.247506017166982, 0, -207.079176695278303, 0, -165.663341356222642, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1.29424485434548939, 0, 70.998574866952561, 0, -372.742518051500945, 0, 331.326682712445284, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.184892122049355627, 0, -8.87482185836907012, 0, 41.4158353390556606, 0, -33.1326682712445284, 0, 0, 0, 0, 0, + + 0, 1.44066780835750773, 0, 0, 0, 0, 1.44066780835750773, 0, -69.1520548011603712, 0, 0, 0, 0, 0, 0, -4.03386986340102165, 0, 0, 0, 322.709589072081732, 0, 0, 0, 0, 0, 0, 0, 0, -6.33893835677303403, 0, 193.625753443249039, 0, -322.709589072081732, 0, -258.167671257665386, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2.01693493170051083, 0, 110.643287681856594, 0, -580.877260329747118, 0, 516.335342515330771, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.288133561671501547, 0, -13.8304109602320742, 0, 64.5419178144163464, 0, -51.6335342515330771, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 10.3728082201740557, 0, 0, 0, 0, 0, 0, -13.8304109602320742, 0, -110.643287681856594, 0, 0, 0, 0, 0, 0, 0, 0, -48.4064383608122598, 0, 258.167671257665386, 0, 154.900602754599231, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -13.8304109602320742, 0, 258.167671257665386, 0, -516.335342515330771, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10.3728082201740557, 0, -110.643287681856594, 0, 154.900602754599231, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, 17.9662308545095619, 0, 0, 0, 0, 0, 0, -23.9549744726794158, 0, -191.639795781435327, 0, 0, 0, 0, 0, 0, 0, 0, -83.8424106543779555, 0, 447.159523490015762, 0, 268.295714094009457, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -23.9549744726794158, 0, 447.159523490015762, 0, -894.319046980031525, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17.9662308545095619, 0, -191.639795781435327, 0, 268.295714094009457, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, -1.16447792575524938, 0, 0, 0, 0, 3.49343377726574814, 0, 41.9212053271889777, 0, 0, 0, 0, 0, 0, 6.98686755453149629, 0, -167.684821308755911, 0, -111.789880872503941, 0, 0, 0, 0, 0, 0, 0, 0, -0.998123936361642327, 0, -83.8424106543779555, 0, 558.949404362519703, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -3.16072579847853403, 0, 119.774872363397079, 0, -335.369642617511822, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.166353989393607054, 0, -5.98874361816985396, 0, 15.9699829817862772, 0, 0, 0, 0, 0, 0, 0, + + 0, -2.26998537228122744, 0, 0, 0, 0, 6.80995611684368233, 0, 81.7194734021241879, 0, 0, 0, 0, 0, 0, 13.6199122336873647, 0, -326.877893608496752, 0, -217.918595738997834, 0, 0, 0, 0, 0, 0, 0, 0, -1.94570174766962352, 0, -163.438946804248376, 0, 1089.59297869498917, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -6.16138886762047449, 0, 233.484209720354823, 0, -653.755787216993503, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.32428362461160392, 0, -11.6742104860177411, 0, 31.1312279627139763, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, -10.3770759875713254, 0, 0, 0, 0, 0, 0, 62.2624559254279527, 0, 62.2624559254279527, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -435.837191477995669, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -62.2624559254279527, 0, 435.837191477995669, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10.3770759875713254, 0, -62.2624559254279527, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, -23.2038473158902465, 0, 0, 0, 0, 0, 0, 139.223083895341479, 0, 139.223083895341479, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -974.561587267390353, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -139.223083895341479, 0, 974.561587267390353, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23.2038473158902465, 0, -139.223083895341479, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1.30521641151882637, 0, 0, 0, 0, -10.876803429323553, 0, -26.1043282303765273, 0, 0, 0, 0, 0, 0, 6.09100992042118971, 0, 243.640396816847588, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13.0521641151882637, 0, -365.460595225271382, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -5.07584160035099142, 0, 104.417312921506109, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.145024045724314041, 0, -2.90048091448628081, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 3.45327803199895506, 0, 0, 0, 0, -28.7773169333246255, 0, -69.0655606399791011, 0, 0, 0, 0, 0, 0, 16.1152974826617903, 0, 644.611899306471611, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34.5327803199895506, 0, -966.917848959707416, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -13.4294145688848252, 0, 276.262242559916405, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.383697559110995006, 0, -7.67395118221990013, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 7.67395118221990013, 0, 0, 0, 0, 0, 0, -92.0874141866388015, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 193.383569791941483, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -92.0874141866388015, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7.67395118221990013, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, 25.4516167309276491, 0, 0, 0, 0, 0, 0, -305.419400771131789, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 641.380741619376757, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -305.419400771131789, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25.4516167309276491, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, -1.27258083654638245, 0, 0, 0, 0, 19.0887125481957368, 0, 0, 0, 0, 0, 0, 0, 0, -53.4483951349480631, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38.1774250963914736, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -6.36290418273191227, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.115689166958762041, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, -6.10308329187281232, 0, 0, 0, 0, 91.5462493780921848, 0, 0, 0, 0, 0, 0, 0, 0, -256.329498258658117, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 183.09249875618437, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -30.5154164593640616, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.554825753806619302, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 6.65790904567943162, 0, 0, 0, 0, -122.061665837456246, 0, 0, 0, 0, 0, 0, 0, 0, 439.421997014842487, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -439.421997014842487, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 122.061665837456246, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -6.65790904567943162, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, -6.10308329187281232, 0, 0, 0, 0, 0, 0, 91.5462493780921848, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -256.329498258658117, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 183.09249875618437, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -30.5154164593640616, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.554825753806619302, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, 29.2693592405667964, 0, 0, 0, 0, 0, 0, -439.040388608501947, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1229.31308810380545, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -878.080777217003893, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 146.346796202833982, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2.66085084005152695, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1.15689166958762041, 0, 0, 0, 0, -12.7258083654638245, 0, -25.4516167309276491, 0, 0, 0, 0, 0, 0, 15.2709700385565894, 0, 305.419400771131789, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15.2709700385565894, 0, -641.380741619376757, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -12.7258083654638245, 0, 305.419400771131789, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.15689166958762041, 0, -25.4516167309276491, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, -3.83697559110995006, 0, 0, 0, 0, 42.2067315022094507, 0, 84.4134630044189014, 0, 0, 0, 0, 0, 0, -50.6480778026513408, 0, -1012.96155605302682, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -50.6480778026513408, 0, 2127.21926771135631, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42.2067315022094507, 0, -1012.96155605302682, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -3.83697559110995006, 0, 84.4134630044189014, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 10.3598340959968652, 0, 0, 0, 0, 0, 0, -86.3319507999738764, 0, -69.0655606399791011, 0, 0, 0, 0, 0, 0, 0, 0, 48.3458924479853708, 0, 644.611899306471611, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 103.598340959968652, 0, -966.917848959707416, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -40.2882437066544757, 0, 276.262242559916405, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.15109267733298502, 0, -7.67395118221990013, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, -27.4095446418953537, 0, 0, 0, 0, 0, 0, 228.412872015794614, 0, 182.730297612635691, 0, 0, 0, 0, 0, 0, 0, 0, -127.911208328844984, 0, -1705.48277771793312, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -274.095446418953537, 0, 2558.22416657689968, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 106.59267360737082, 0, -730.921190450542765, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -3.04550496021059485, 0, 20.3033664014039657, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, -1.16019236579451232, 0, 0, 0, 0, 5.80096182897256162, 0, 46.407694631780493, 0, 0, 0, 0, 0, 0, 6.96115419476707395, 0, -278.446167790682958, 0, -139.223083895341479, 0, 0, 0, 0, 0, 0, 0, 0, -6.96115419476707395, 0, 0, 0, 974.561587267390353, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -5.80096182897256162, 0, 278.446167790682958, 0, -974.561587267390353, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.16019236579451232, 0, -46.407694631780493, 0, 139.223083895341479, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 2.59426899689283136, 0, 0, 0, 0, -12.9713449844641568, 0, -103.770759875713254, 0, 0, 0, 0, 0, 0, -15.5656139813569882, 0, 622.624559254279527, 0, 311.312279627139763, 0, 0, 0, 0, 0, 0, 0, 0, 15.5656139813569882, 0, 0, 0, -2179.18595738997834, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12.9713449844641568, 0, -622.624559254279527, 0, 2179.18595738997834, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2.59426899689283136, 0, 103.770759875713254, 0, -311.312279627139763, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, -11.3499268614061372, 0, 0, 0, 0, 0, 0, 34.0497805842184116, 0, 136.199122336873647, 0, 0, 0, 0, 0, 0, 0, 0, 68.0995611684368233, 0, -544.796489347494586, 0, -217.918595738997834, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9.72850873834811761, 0, -272.398244673747293, 0, 1089.59297869498917, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -30.8069443381023724, 0, 389.140349533924704, 0, -653.755787216993503, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.6214181230580196, 0, -19.4570174766962352, 0, 31.1312279627139763, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, 22.1250805893497382, 0, 0, 0, 0, 0, 0, -66.3752417680492147, 0, -265.500967072196859, 0, 0, 0, 0, 0, 0, 0, 0, -132.750483536098429, 0, 1062.00386828878744, 0, 424.801547315514974, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18.9643547908712042, 0, 531.001934144393718, 0, -2124.00773657757487, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60.0537901710921467, 0, -758.574191634848168, 0, 1274.40464194654492, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -3.16072579847853403, 0, 37.9287095817424084, 0, -60.6859353307878535, 0, 0, 0, 0, 0, 0, 0, + 0, 0.998123936361642327, 0, 0, 0, 0, -0.332707978787214109, 0, -53.8986925635286856, 0, 0, 0, 0, 0, 0, -5.98874361816985396, 0, 71.8649234180382475, 0, 287.45969367215299, 0, 0, 0, 0, 0, 0, 0, 0, -5.98874361816985396, 0, 251.527231963133866, 0, -670.739285235023644, 0, -268.295714094009457, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.332707978787214109, 0, 71.8649234180382475, 0, -670.739285235023644, 0, 894.319046980031525, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.998123936361642327, 0, -53.8986925635286856, 0, 287.45969367215299, 0, -268.295714094009457, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, -1.72880137002900928, 0, 0, 0, 0, 0.576267123343003093, 0, 93.3552739815665011, 0, 0, 0, 0, 0, 0, 10.3728082201740557, 0, -124.473698642088668, 0, -497.894794568354673, 0, 0, 0, 0, 0, 0, 0, 0, 10.3728082201740557, 0, -435.657945247310338, 0, 1161.75452065949424, 0, 464.701808263797694, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.576267123343003093, 0, -124.473698642088668, 0, 1161.75452065949424, 0, -1549.00602754599231, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1.72880137002900928, 0, 93.3552739815665011, 0, -497.894794568354673, 0, 464.701808263797694, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 10.0846746585025541, 0, 0, 0, 0, 0, 0, 10.0846746585025541, 0, -161.354794536040866, 0, 0, 0, 0, 0, 0, 0, 0, -28.2370890438071516, 0, 0, 0, 451.793424700914425, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -44.3725684974112382, 0, 451.793424700914425, 0, -451.793424700914425, 0, -258.167671257665386, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -14.1185445219035758, 0, 258.167671257665386, 0, -813.228164461645965, 0, 516.335342515330771, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2.01693493170051083, 0, -32.2709589072081732, 0, 90.358684940182885, 0, -51.6335342515330771, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, -15.7158303741952283, 0, 0, 0, 0, 0, 0, -15.7158303741952283, 0, 251.453285987123653, 0, 0, 0, 0, 0, 0, 0, 0, 44.0043250477466393, 0, 0, 0, -704.06920076394623, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69.1496536464590047, 0, -704.06920076394623, 0, 704.06920076394623, 0, 402.325257579397845, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22.0021625238733197, 0, -402.325257579397845, 0, 1267.32456137510321, 0, -804.650515158795691, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -3.14316607483904567, 0, 50.2906571974247307, 0, -140.813840152789246, 0, 80.4650515158795691, 0, 0, 0, 0, 0, + 0, -0.73956848819742251, 0, 0, 0, 0, -2.21870546459226753, 0, 47.3323832446350406, 0, 0, 0, 0, 0, 0, -1.47913697639484502, 0, 94.6647664892700813, 0, -331.326682712445284, 0, 0, 0, 0, 0, 0, 0, 0, 1.47913697639484502, 0, 0, 0, -331.326682712445284, 0, 530.122692339912455, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2.21870546459226753, 0, -94.6647664892700813, 0, 331.326682712445284, 0, 0, 0, -189.329532978540163, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.73956848819742251, 0, -47.3323832446350406, 0, 331.326682712445284, 0, -530.122692339912455, 0, 189.329532978540163, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 1.04590778631256119, 0, 0, 0, 0, 3.13772335893768356, 0, -66.938098324003916, 0, 0, 0, 0, 0, 0, 2.09181557262512238, 0, -133.876196648007832, 0, 468.566688268027412, 0, 0, 0, 0, 0, 0, 0, 0, -2.09181557262512238, 0, 0, 0, 468.566688268027412, 0, -749.70670122884386, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -3.13772335893768356, 0, 133.876196648007832, 0, -468.566688268027412, 0, 0, 0, 267.752393296015664, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1.04590778631256119, 0, 66.938098324003916, 0, -468.566688268027412, 0, 749.70670122884386, 0, -267.752393296015664, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, -7.05987755760978802, 0, 0, 0, 0, 0, 0, -25.8862177112358894, 0, 131.78438107538271, 0, 0, 0, 0, 0, 0, 0, 0, -32.9460952688456774, 0, 351.425016201020559, 0, -474.423771871377755, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -14.119755115219576, 0, 263.568762150765419, 0, -790.706286452296258, 0, 451.832163687026433, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2.35329251920326267, 0, 0, 0, -158.141257290459252, 0, 301.221442458017622, 0, -100.407147486005874, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2.35329251920326267, 0, -43.9281270251275699, 0, 158.141257290459252, 0, -150.610721229008811, 0, 33.469049162001958, 0, 0, 0, + + 0, 0, 0, 0, 9.11426273562873413, 0, 0, 0, 0, 0, 0, 33.4189633639720251, 0, -170.132904398403037, 0, 0, 0, 0, 0, 0, 0, 0, 42.5332260996007593, 0, -453.687745062408099, 0, 612.478455834250933, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18.2285254712574683, 0, -340.265808796806074, 0, 1020.79742639041822, 0, -583.312815080238984, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -3.03808757854291138, 0, 0, 0, 204.159485278083644, 0, -388.875210053492656, 0, 129.625070017830885, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -3.03808757854291138, 0, 56.7109681328010124, 0, -204.159485278083644, 0, 194.437605026746328, 0, -43.2083566726102951, 0, 0, 0, + 0, 0.405078343805721517, 0, 0, 0, 0, 2.02539171902860758, 0, -28.3554840664005062, 0, 0, 0, 0, 0, 0, 4.05078343805721517, 0, -113.421936265602025, 0, 226.843872531204049, 0, 0, 0, 0, 0, 0, 0, 0, 4.05078343805721517, 0, -170.132904398403037, 0, 680.531617593612148, 0, -453.687745062408099, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2.02539171902860758, 0, -113.421936265602025, 0, 680.531617593612148, 0, -907.375490124816198, 0, 259.250140035661771, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.405078343805721517, 0, -28.3554840664005062, 0, 226.843872531204049, 0, -453.687745062408099, 0, 259.250140035661771, 0, -34.5666853380882361, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, -0.479295160072100929, 0, 0, 0, 0, -2.39647580036050465, 0, 33.5506612050470651, 0, 0, 0, 0, 0, 0, -4.79295160072100929, 0, 134.20264482018826, 0, -268.40528964037652, 0, 0, 0, 0, 0, 0, 0, 0, -4.79295160072100929, 0, 201.30396723028239, 0, -805.215868921129561, 0, 536.810579280753041, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2.39647580036050465, 0, 134.20264482018826, 0, -805.215868921129561, 0, 1073.62115856150608, 0, -306.748902446144595, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.479295160072100929, 0, 33.5506612050470651, 0, -268.40528964037652, 0, 536.810579280753041, 0, -306.748902446144595, 0, 40.899853659485946, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 2.63612338039655511, 0, 0, 0, 0, 0, 0, 13.1806169019827756, 0, -52.7224676079311022, 0, 0, 0, 0, 0, 0, 0, 0, 26.3612338039655511, 0, -210.889870431724409, 0, 210.889870431724409, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26.3612338039655511, 0, -316.334805647586613, 0, 632.669611295173227, 0, -241.01699477911361, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13.1806169019827756, 0, -210.889870431724409, 0, 632.669611295173227, 0, -482.03398955822722, 0, 80.3389982597045367, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2.63612338039655511, 0, -52.7224676079311022, 0, 210.889870431724409, 0, -241.01699477911361, 0, 80.3389982597045367, 0, -5.84283623706942085, 0, + + 0, 0, 0, 0, -2.86576824852435259, 0, 0, 0, 0, 0, 0, -14.3288412426217629, 0, 57.3153649704870517, 0, 0, 0, 0, 0, 0, 0, 0, -28.6576824852435259, 0, 229.261459881948207, 0, -229.261459881948207, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -28.6576824852435259, 0, 343.89218982292231, 0, -687.784379645844621, 0, 262.013097007940808, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -14.3288412426217629, 0, 229.261459881948207, 0, -687.784379645844621, 0, 524.026194015881616, 0, -87.337699002646936, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2.86576824852435259, 0, 57.3153649704870517, 0, -229.261459881948207, 0, 262.013097007940808, 0, -87.337699002646936, 0, 6.35183265473795898, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 2.86576824852435259, 0, 0, 0, 0, 0, 0, 14.3288412426217629, 0, -57.3153649704870517, 0, 0, 0, 0, 0, 0, 0, 0, 28.6576824852435259, 0, -229.261459881948207, 0, 229.261459881948207, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28.6576824852435259, 0, -343.89218982292231, 0, 687.784379645844621, 0, -262.013097007940808, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14.3288412426217629, 0, -229.261459881948207, 0, 687.784379645844621, 0, -524.026194015881616, 0, 87.337699002646936, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2.86576824852435259, 0, -57.3153649704870517, 0, 229.261459881948207, 0, -262.013097007940808, 0, 87.337699002646936, 0, -6.35183265473795898, 0, + + 0, 0, 0, 0, -2.63612338039655511, 0, 0, 0, 0, 0, 0, -13.1806169019827756, 0, 52.7224676079311022, 0, 0, 0, 0, 0, 0, 0, 0, -26.3612338039655511, 0, 210.889870431724409, 0, -210.889870431724409, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -26.3612338039655511, 0, 316.334805647586613, 0, -632.669611295173227, 0, 241.01699477911361, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -13.1806169019827756, 0, 210.889870431724409, 0, -632.669611295173227, 0, 482.03398955822722, 0, -80.3389982597045367, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2.63612338039655511, 0, 52.7224676079311022, 0, -210.889870431724409, 0, 241.01699477911361, 0, -80.3389982597045367, 0, 5.84283623706942085, 0, + 0, -0.479295160072100929, 0, 0, 0, 0, -2.39647580036050465, 0, 33.5506612050470651, 0, 0, 0, 0, 0, 0, -4.79295160072100929, 0, 134.20264482018826, 0, -268.40528964037652, 0, 0, 0, 0, 0, 0, 0, 0, -4.79295160072100929, 0, 201.30396723028239, 0, -805.215868921129561, 0, 536.810579280753041, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2.39647580036050465, 0, 134.20264482018826, 0, -805.215868921129561, 0, 1073.62115856150608, 0, -306.748902446144595, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.479295160072100929, 0, 33.5506612050470651, 0, -268.40528964037652, 0, 536.810579280753041, 0, -306.748902446144595, 0, 40.899853659485946, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0.405078343805721517, 0, 0, 0, 0, 2.02539171902860758, 0, -28.3554840664005062, 0, 0, 0, 0, 0, 0, 4.05078343805721517, 0, -113.421936265602025, 0, 226.843872531204049, 0, 0, 0, 0, 0, 0, 0, 0, 4.05078343805721517, 0, -170.132904398403037, 0, 680.531617593612148, 0, -453.687745062408099, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2.02539171902860758, 0, -113.421936265602025, 0, 680.531617593612148, 0, -907.375490124816198, 0, 259.250140035661771, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.405078343805721517, 0, -28.3554840664005062, 0, 226.843872531204049, 0, -453.687745062408099, 0, 259.250140035661771, 0, -34.5666853380882361, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, -9.11426273562873413, 0, 0, 0, 0, 0, 0, -33.4189633639720251, 0, 170.132904398403037, 0, 0, 0, 0, 0, 0, 0, 0, -42.5332260996007593, 0, 453.687745062408099, 0, -612.478455834250933, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -18.2285254712574683, 0, 340.265808796806074, 0, -1020.79742639041822, 0, 583.312815080238984, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3.03808757854291138, 0, 0, 0, -204.159485278083644, 0, 388.875210053492656, 0, -129.625070017830885, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3.03808757854291138, 0, -56.7109681328010124, 0, 204.159485278083644, 0, -194.437605026746328, 0, 43.2083566726102951, 0, 0, 0, + + 0, 0, 0, 0, 7.05987755760978802, 0, 0, 0, 0, 0, 0, 25.8862177112358894, 0, -131.78438107538271, 0, 0, 0, 0, 0, 0, 0, 0, 32.9460952688456774, 0, -351.425016201020559, 0, 474.423771871377755, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14.119755115219576, 0, -263.568762150765419, 0, 790.706286452296258, 0, -451.832163687026433, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2.35329251920326267, 0, 0, 0, 158.141257290459252, 0, -301.221442458017622, 0, 100.407147486005874, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2.35329251920326267, 0, 43.9281270251275699, 0, -158.141257290459252, 0, 150.610721229008811, 0, -33.469049162001958, 0, 0, 0, + 0, 1.04590778631256119, 0, 0, 0, 0, 3.13772335893768356, 0, -66.938098324003916, 0, 0, 0, 0, 0, 0, 2.09181557262512238, 0, -133.876196648007832, 0, 468.566688268027412, 0, 0, 0, 0, 0, 0, 0, 0, -2.09181557262512238, 0, 0, 0, 468.566688268027412, 0, -749.70670122884386, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -3.13772335893768356, 0, 133.876196648007832, 0, -468.566688268027412, 0, 0, 0, 267.752393296015664, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1.04590778631256119, 0, 66.938098324003916, 0, -468.566688268027412, 0, 749.70670122884386, 0, -267.752393296015664, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, -0.73956848819742251, 0, 0, 0, 0, -2.21870546459226753, 0, 47.3323832446350406, 0, 0, 0, 0, 0, 0, -1.47913697639484502, 0, 94.6647664892700813, 0, -331.326682712445284, 0, 0, 0, 0, 0, 0, 0, 0, 1.47913697639484502, 0, 0, 0, -331.326682712445284, 0, 530.122692339912455, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2.21870546459226753, 0, -94.6647664892700813, 0, 331.326682712445284, 0, 0, 0, -189.329532978540163, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.73956848819742251, 0, -47.3323832446350406, 0, 331.326682712445284, 0, -530.122692339912455, 0, 189.329532978540163, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 15.7158303741952283, 0, 0, 0, 0, 0, 0, 15.7158303741952283, 0, -251.453285987123653, 0, 0, 0, 0, 0, 0, 0, 0, -44.0043250477466393, 0, 0, 0, 704.06920076394623, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -69.1496536464590047, 0, 704.06920076394623, 0, -704.06920076394623, 0, -402.325257579397845, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -22.0021625238733197, 0, 402.325257579397845, 0, -1267.32456137510321, 0, 804.650515158795691, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3.14316607483904567, 0, -50.2906571974247307, 0, 140.813840152789246, 0, -80.4650515158795691, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, -10.0846746585025541, 0, 0, 0, 0, 0, 0, -10.0846746585025541, 0, 161.354794536040866, 0, 0, 0, 0, 0, 0, 0, 0, 28.2370890438071516, 0, 0, 0, -451.793424700914425, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44.3725684974112382, 0, -451.793424700914425, 0, 451.793424700914425, 0, 258.167671257665386, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14.1185445219035758, 0, -258.167671257665386, 0, 813.228164461645965, 0, -516.335342515330771, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2.01693493170051083, 0, 32.2709589072081732, 0, -90.358684940182885, 0, 51.6335342515330771, 0, 0, 0, 0, 0, + 0, -1.72880137002900928, 0, 0, 0, 0, 0.576267123343003093, 0, 93.3552739815665011, 0, 0, 0, 0, 0, 0, 10.3728082201740557, 0, -124.473698642088668, 0, -497.894794568354673, 0, 0, 0, 0, 0, 0, 0, 0, 10.3728082201740557, 0, -435.657945247310338, 0, 1161.75452065949424, 0, 464.701808263797694, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.576267123343003093, 0, -124.473698642088668, 0, 1161.75452065949424, 0, -1549.00602754599231, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1.72880137002900928, 0, 93.3552739815665011, 0, -497.894794568354673, 0, 464.701808263797694, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0.998123936361642327, 0, 0, 0, 0, -0.332707978787214109, 0, -53.8986925635286856, 0, 0, 0, 0, 0, 0, -5.98874361816985396, 0, 71.8649234180382475, 0, 287.45969367215299, 0, 0, 0, 0, 0, 0, 0, 0, -5.98874361816985396, 0, 251.527231963133866, 0, -670.739285235023644, 0, -268.295714094009457, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.332707978787214109, 0, 71.8649234180382475, 0, -670.739285235023644, 0, 894.319046980031525, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.998123936361642327, 0, -53.8986925635286856, 0, 287.45969367215299, 0, -268.295714094009457, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, -22.1250805893497382, 0, 0, 0, 0, 0, 0, 66.3752417680492147, 0, 265.500967072196859, 0, 0, 0, 0, 0, 0, 0, 0, 132.750483536098429, 0, -1062.00386828878744, 0, -424.801547315514974, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -18.9643547908712042, 0, -531.001934144393718, 0, 2124.00773657757487, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -60.0537901710921467, 0, 758.574191634848168, 0, -1274.40464194654492, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3.16072579847853403, 0, -37.9287095817424084, 0, 60.6859353307878535, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, 11.3499268614061372, 0, 0, 0, 0, 0, 0, -34.0497805842184116, 0, -136.199122336873647, 0, 0, 0, 0, 0, 0, 0, 0, -68.0995611684368233, 0, 544.796489347494586, 0, 217.918595738997834, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9.72850873834811761, 0, 272.398244673747293, 0, -1089.59297869498917, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30.8069443381023724, 0, -389.140349533924704, 0, 653.755787216993503, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1.6214181230580196, 0, 19.4570174766962352, 0, -31.1312279627139763, 0, 0, 0, 0, 0, 0, 0, + 0, 2.59426899689283136, 0, 0, 0, 0, -12.9713449844641568, 0, -103.770759875713254, 0, 0, 0, 0, 0, 0, -15.5656139813569882, 0, 622.624559254279527, 0, 311.312279627139763, 0, 0, 0, 0, 0, 0, 0, 0, 15.5656139813569882, 0, 0, 0, -2179.18595738997834, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12.9713449844641568, 0, -622.624559254279527, 0, 2179.18595738997834, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2.59426899689283136, 0, 103.770759875713254, 0, -311.312279627139763, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, -1.16019236579451232, 0, 0, 0, 0, 5.80096182897256162, 0, 46.407694631780493, 0, 0, 0, 0, 0, 0, 6.96115419476707395, 0, -278.446167790682958, 0, -139.223083895341479, 0, 0, 0, 0, 0, 0, 0, 0, -6.96115419476707395, 0, 0, 0, 974.561587267390353, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -5.80096182897256162, 0, 278.446167790682958, 0, -974.561587267390353, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.16019236579451232, 0, -46.407694631780493, 0, 139.223083895341479, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 27.4095446418953537, 0, 0, 0, 0, 0, 0, -228.412872015794614, 0, -182.730297612635691, 0, 0, 0, 0, 0, 0, 0, 0, 127.911208328844984, 0, 1705.48277771793312, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 274.095446418953537, 0, -2558.22416657689968, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -106.59267360737082, 0, 730.921190450542765, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3.04550496021059485, 0, -20.3033664014039657, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, -10.3598340959968652, 0, 0, 0, 0, 0, 0, 86.3319507999738764, 0, 69.0655606399791011, 0, 0, 0, 0, 0, 0, 0, 0, -48.3458924479853708, 0, -644.611899306471611, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -103.598340959968652, 0, 966.917848959707416, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40.2882437066544757, 0, -276.262242559916405, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1.15109267733298502, 0, 7.67395118221990013, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, -3.83697559110995006, 0, 0, 0, 0, 42.2067315022094507, 0, 84.4134630044189014, 0, 0, 0, 0, 0, 0, -50.6480778026513408, 0, -1012.96155605302682, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -50.6480778026513408, 0, 2127.21926771135631, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42.2067315022094507, 0, -1012.96155605302682, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -3.83697559110995006, 0, 84.4134630044189014, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 1.15689166958762041, 0, 0, 0, 0, -12.7258083654638245, 0, -25.4516167309276491, 0, 0, 0, 0, 0, 0, 15.2709700385565894, 0, 305.419400771131789, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15.2709700385565894, 0, -641.380741619376757, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -12.7258083654638245, 0, 305.419400771131789, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.15689166958762041, 0, -25.4516167309276491, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, -29.2693592405667964, 0, 0, 0, 0, 0, 0, 439.040388608501947, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1229.31308810380545, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 878.080777217003893, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -146.346796202833982, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2.66085084005152695, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, 6.10308329187281232, 0, 0, 0, 0, 0, 0, -91.5462493780921848, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 256.329498258658117, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -183.09249875618437, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30.5154164593640616, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.554825753806619302, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 6.65790904567943162, 0, 0, 0, 0, -122.061665837456246, 0, 0, 0, 0, 0, 0, 0, 0, 439.421997014842487, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -439.421997014842487, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 122.061665837456246, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -6.65790904567943162, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, -6.79519996490629405, 0, 0, 0, 0, 124.578666023282058, 0, 0, 0, 0, 0, 0, 0, 0, -448.483197683815407, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 448.483197683815407, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -124.578666023282058, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6.79519996490629405, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, -1.35903999298125881, 0, 0, 0, 0, 24.9157332046564115, 0, 0, 0, 0, 0, 0, 0, 0, -89.6966395367630815, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 89.6966395367630815, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -24.9157332046564115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.35903999298125881, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, -29.8988798455876938, 0, 0, 0, 0, 0, 0, 448.483197683815407, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1255.75295351468314, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 896.966395367630815, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -149.494399227938469, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2.71807998596251762, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, -8.63106316365916572, 0, 0, 0, 0, 0, 0, 129.465947454887486, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -362.50465287368496, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 258.931894909774972, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -43.1553158182958286, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.784642105787196884, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 3.92321052893598442, 0, 0, 0, 0, -43.1553158182958286, 0, -86.3106316365916572, 0, 0, 0, 0, 0, 0, 51.7863789819549943, 0, 1035.72757963909989, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51.7863789819549943, 0, -2175.02791724210976, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -43.1553158182958286, 0, 1035.72757963909989, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3.92321052893598442, 0, -86.3106316365916572, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 1.41689713908309089, 0, 0, 0, 0, -15.5858685299139998, 0, -31.1717370598279997, 0, 0, 0, 0, 0, 0, 18.7030422358967998, 0, 374.060844717935996, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18.7030422358967998, 0, -785.527773907665592, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -15.5858685299139998, 0, 374.060844717935996, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.41689713908309089, 0, -31.1717370598279997, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 28.0545633538451997, 0, 0, 0, 0, 0, 0, -233.788027948709998, 0, -187.030422358967998, 0, 0, 0, 0, 0, 0, 0, 0, 130.921295651277599, 0, 1745.61727535036798, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 280.545633538451997, 0, -2618.42591302555197, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -109.101079709397999, 0, 748.121689435871992, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3.11717370598279997, 0, -20.7811580398853331, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, 11.9625060081673068, 0, 0, 0, 0, 0, 0, -99.6875500680608898, 0, -79.7500400544487119, 0, 0, 0, 0, 0, 0, 0, 0, 55.8250280381140983, 0, 744.333707174854644, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 119.625060081673068, 0, -1116.50056076228197, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -46.5208566984284153, 0, 319.000160217794847, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.32916733424081186, 0, -8.86111556160541243, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, -2.65833466848162373, 0, 0, 0, 0, 13.2916733424081186, 0, 106.333386739264949, 0, 0, 0, 0, 0, 0, 15.9500080108897424, 0, -638.000320435589695, 0, -319.000160217794847, 0, 0, 0, 0, 0, 0, 0, 0, -15.9500080108897424, 0, 0, 0, 2233.00112152456393, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -13.2916733424081186, 0, 638.000320435589695, 0, -2233.00112152456393, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2.65833466848162373, 0, -106.333386739264949, 0, 319.000160217794847, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, -1.29713449844641568, 0, 0, 0, 0, 6.48567249223207841, 0, 51.8853799378566272, 0, 0, 0, 0, 0, 0, 7.78280699067849409, 0, -311.312279627139763, 0, -155.656139813569882, 0, 0, 0, 0, 0, 0, 0, 0, -7.78280699067849409, 0, 0, 0, 1089.59297869498917, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -6.48567249223207841, 0, 311.312279627139763, 0, -1089.59297869498917, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.29713449844641568, 0, -51.8853799378566272, 0, 155.656139813569882, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, -22.6998537228122744, 0, 0, 0, 0, 0, 0, 68.0995611684368233, 0, 272.398244673747293, 0, 0, 0, 0, 0, 0, 0, 0, 136.199122336873647, 0, -1089.59297869498917, 0, -435.837191477995669, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -19.4570174766962352, 0, -544.796489347494586, 0, 2179.18595738997834, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -61.6138886762047449, 0, 778.280699067849409, 0, -1307.51157443398701, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3.2428362461160392, 0, -38.9140349533924704, 0, 62.2624559254279527, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, -12.4332219360519051, 0, 0, 0, 0, 0, 0, 37.2996658081557152, 0, 149.198663232622861, 0, 0, 0, 0, 0, 0, 0, 0, 74.5993316163114303, 0, -596.794652930491443, 0, -238.717861172196577, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -10.6570473737587758, 0, -298.397326465245721, 0, 1193.58930586098289, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -33.7473166835694566, 0, 426.281894950351031, 0, -716.153583516589731, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.77617456229312929, 0, -21.3140947475175515, 0, 34.1025515960280824, 0, 0, 0, 0, 0, 0, 0, + 0, 1.77617456229312929, 0, 0, 0, 0, -0.592058187431043098, 0, -95.9134263638289819, 0, 0, 0, 0, 0, 0, -10.6570473737587758, 0, 127.884568485105309, 0, 511.538273940421237, 0, 0, 0, 0, 0, 0, 0, 0, -10.6570473737587758, 0, 447.595989697868582, 0, -1193.58930586098289, 0, -477.435722344393154, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.592058187431043098, 0, 127.884568485105309, 0, -1193.58930586098289, 0, 1591.45240781464385, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.77617456229312929, 0, -95.9134263638289819, 0, 511.538273940421237, 0, -477.435722344393154, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 1.07809706940565876, 0, 0, 0, 0, -0.359365689801886252, 0, -58.2172417479055728, 0, 0, 0, 0, 0, 0, -6.46858241643395253, 0, 77.6229889972074304, 0, 310.491955988829722, 0, 0, 0, 0, 0, 0, 0, 0, -6.46858241643395253, 0, 271.680461490226006, 0, -724.481230640602684, 0, -289.792492256241073, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.359365689801886252, 0, 77.6229889972074304, 0, -724.481230640602684, 0, 965.974974187470245, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.07809706940565876, 0, -58.2172417479055728, 0, 310.491955988829722, 0, -289.792492256241073, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 16.1714560410848813, 0, 0, 0, 0, 0, 0, 16.1714560410848813, 0, -258.743296657358101, 0, 0, 0, 0, 0, 0, 0, 0, -45.2800769150376677, 0, 0, 0, 724.481230640602684, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -71.1544065807734779, 0, 724.481230640602684, 0, -724.481230640602684, 0, -413.989274651772962, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -22.6400384575188339, 0, 413.989274651772962, 0, -1304.06621515308483, 0, 827.978549303545924, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3.23429120821697627, 0, -51.7486593314716203, 0, 144.896246128120537, 0, -82.7978549303545924, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, 10.7809706940565876, 0, 0, 0, 0, 0, 0, 10.7809706940565876, 0, -172.495531104905401, 0, 0, 0, 0, 0, 0, 0, 0, -30.1867179433584452, 0, 0, 0, 482.987487093735122, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -47.4362710538489852, 0, 482.987487093735122, 0, -482.987487093735122, 0, -275.992849767848641, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -15.0933589716792226, 0, 275.992849767848641, 0, -869.37747676872322, 0, 551.985699535697283, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2.15619413881131751, 0, -34.4991062209810802, 0, 96.5974974187470245, 0, -55.1985699535697283, 0, 0, 0, 0, 0, + 0, -1.07809706940565876, 0, 0, 0, 0, -3.23429120821697627, 0, 68.9982124419621604, 0, 0, 0, 0, 0, 0, -2.15619413881131751, 0, 137.996424883924321, 0, -482.987487093735122, 0, 0, 0, 0, 0, 0, 0, 0, 2.15619413881131751, 0, 0, 0, -482.987487093735122, 0, 772.779979349976196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3.23429120821697627, 0, -137.996424883924321, 0, 482.987487093735122, 0, 0, 0, -275.992849767848641, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.07809706940565876, 0, -68.9982124419621604, 0, 482.987487093735122, 0, -772.779979349976196, 0, 275.992849767848641, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, -0.784430839734420891, 0, 0, 0, 0, -2.35329251920326267, 0, 50.203573743002937, 0, 0, 0, 0, 0, 0, -1.56886167946884178, 0, 100.407147486005874, 0, -351.425016201020559, 0, 0, 0, 0, 0, 0, 0, 0, 1.56886167946884178, 0, 0, 0, -351.425016201020559, 0, 562.280025921632895, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2.35329251920326267, 0, -100.407147486005874, 0, 351.425016201020559, 0, 0, 0, -200.814294972011748, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.784430839734420891, 0, -50.203573743002937, 0, 351.425016201020559, 0, -562.280025921632895, 0, 200.814294972011748, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, -9.41317007681305069, 0, 0, 0, 0, 0, 0, -34.5149569483145192, 0, 175.71250810051028, 0, 0, 0, 0, 0, 0, 0, 0, -43.9281270251275699, 0, 468.566688268027412, 0, -632.565029161837007, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -18.8263401536261014, 0, 351.425016201020559, 0, -1054.27504860306168, 0, 602.442884916035244, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3.13772335893768356, 0, 0, 0, -210.855009720612336, 0, 401.628589944023496, 0, -133.876196648007832, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3.13772335893768356, 0, -58.5708360335034265, 0, 210.855009720612336, 0, -200.814294972011748, 0, 44.6253988826692774, 0, 0, 0, + + 0, 0, 0, 0, -7.44176436131784437, 0, 0, 0, 0, 0, 0, -27.286469324832096, 0, 138.912934744599762, 0, 0, 0, 0, 0, 0, 0, 0, -34.7282336861499404, 0, 370.434492652266031, 0, -500.086565080559142, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -14.8835287226356887, 0, 277.825869489199523, 0, -833.47760846759857, 0, 476.27291912434204, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2.48058812043928146, 0, 0, 0, -166.695521693519714, 0, 317.515279416228027, 0, -105.838426472076009, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2.48058812043928146, 0, -46.3043115815332539, 0, 166.695521693519714, 0, -158.757639708114013, 0, 35.279475490692003, 0, 0, 0, + 0, 0.496117624087856292, 0, 0, 0, 0, 2.48058812043928146, 0, -34.7282336861499404, 0, 0, 0, 0, 0, 0, 4.96117624087856292, 0, -138.912934744599762, 0, 277.825869489199523, 0, 0, 0, 0, 0, 0, 0, 0, 4.96117624087856292, 0, -208.369402116899642, 0, 833.47760846759857, 0, -555.651738978399047, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2.48058812043928146, 0, -138.912934744599762, 0, 833.47760846759857, 0, -1111.30347795679809, 0, 317.515279416228027, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.496117624087856292, 0, -34.7282336861499404, 0, 277.825869489199523, 0, -555.651738978399047, 0, 317.515279416228027, 0, -42.3353705888304036, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0.424849751185551427, 0, 0, 0, 0, 2.12424875592775713, 0, -29.7394825829885999, 0, 0, 0, 0, 0, 0, 4.24849751185551427, 0, -118.957930331954399, 0, 237.915860663908799, 0, 0, 0, 0, 0, 0, 0, 0, 4.24849751185551427, 0, -178.436895497931599, 0, 713.747581991726397, 0, -475.831721327817598, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2.12424875592775713, 0, -118.957930331954399, 0, 713.747581991726397, 0, -951.663442655635196, 0, 271.903840758752913, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.424849751185551427, 0, -29.7394825829885999, 0, 237.915860663908799, 0, -475.831721327817598, 0, 271.903840758752913, 0, -36.2538454345003884, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 2.97394825829885999, 0, 0, 0, 0, 0, 0, 14.8697412914942999, 0, -59.4789651659771997, 0, 0, 0, 0, 0, 0, 0, 0, 29.7394825829885999, 0, -237.915860663908799, 0, 237.915860663908799, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29.7394825829885999, 0, -356.873790995863198, 0, 713.747581991726397, 0, -271.903840758752913, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14.8697412914942999, 0, -237.915860663908799, 0, 713.747581991726397, 0, -543.807681517505826, 0, 90.634613586250971, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2.97394825829885999, 0, -59.4789651659771997, 0, 237.915860663908799, 0, -271.903840758752913, 0, 90.634613586250971, 0, -6.59160826081825244, 0, + + 0, 0, 0, 0, 2.7533410732166562, 0, 0, 0, 0, 0, 0, 13.766705366083281, 0, -55.066821464333124, 0, 0, 0, 0, 0, 0, 0, 0, 27.533410732166562, 0, -220.267285857332496, 0, 220.267285857332496, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27.533410732166562, 0, -330.400928785998744, 0, 660.801857571997488, 0, -251.734040979808567, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13.766705366083281, 0, -220.267285857332496, 0, 660.801857571997488, 0, -503.468081959617133, 0, 83.9113469932695222, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2.7533410732166562, 0, -55.066821464333124, 0, 220.267285857332496, 0, -251.734040979808567, 0, 83.9113469932695222, 0, -6.10264341769232889, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 2.7533410732166562, 0, 0, 0, 0, 0, 0, 13.766705366083281, 0, -55.066821464333124, 0, 0, 0, 0, 0, 0, 0, 0, 27.533410732166562, 0, -220.267285857332496, 0, 220.267285857332496, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27.533410732166562, 0, -330.400928785998744, 0, 660.801857571997488, 0, -251.734040979808567, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13.766705366083281, 0, -220.267285857332496, 0, 660.801857571997488, 0, -503.468081959617133, 0, 83.9113469932695222, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2.7533410732166562, 0, -55.066821464333124, 0, 220.267285857332496, 0, -251.734040979808567, 0, 83.9113469932695222, 0, -6.10264341769232889, 0, + + 0, 0, 0, 0, 2.97394825829885999, 0, 0, 0, 0, 0, 0, 14.8697412914942999, 0, -59.4789651659771997, 0, 0, 0, 0, 0, 0, 0, 0, 29.7394825829885999, 0, -237.915860663908799, 0, 237.915860663908799, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29.7394825829885999, 0, -356.873790995863198, 0, 713.747581991726397, 0, -271.903840758752913, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14.8697412914942999, 0, -237.915860663908799, 0, 713.747581991726397, 0, -543.807681517505826, 0, 90.634613586250971, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2.97394825829885999, 0, -59.4789651659771997, 0, 237.915860663908799, 0, -271.903840758752913, 0, 90.634613586250971, 0, -6.59160826081825244, 0, + 0, -0.424849751185551427, 0, 0, 0, 0, -2.12424875592775713, 0, 29.7394825829885999, 0, 0, 0, 0, 0, 0, -4.24849751185551427, 0, 118.957930331954399, 0, -237.915860663908799, 0, 0, 0, 0, 0, 0, 0, 0, -4.24849751185551427, 0, 178.436895497931599, 0, -713.747581991726397, 0, 475.831721327817598, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2.12424875592775713, 0, 118.957930331954399, 0, -713.747581991726397, 0, 951.663442655635196, 0, -271.903840758752913, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.424849751185551427, 0, 29.7394825829885999, 0, -237.915860663908799, 0, 475.831721327817598, 0, -271.903840758752913, 0, 36.2538454345003884, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, -0.496117624087856292, 0, 0, 0, 0, -2.48058812043928146, 0, 34.7282336861499404, 0, 0, 0, 0, 0, 0, -4.96117624087856292, 0, 138.912934744599762, 0, -277.825869489199523, 0, 0, 0, 0, 0, 0, 0, 0, -4.96117624087856292, 0, 208.369402116899642, 0, -833.47760846759857, 0, 555.651738978399047, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2.48058812043928146, 0, 138.912934744599762, 0, -833.47760846759857, 0, 1111.30347795679809, 0, -317.515279416228027, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.496117624087856292, 0, 34.7282336861499404, 0, -277.825869489199523, 0, 555.651738978399047, 0, -317.515279416228027, 0, 42.3353705888304036, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, -7.44176436131784437, 0, 0, 0, 0, 0, 0, -27.286469324832096, 0, 138.912934744599762, 0, 0, 0, 0, 0, 0, 0, 0, -34.7282336861499404, 0, 370.434492652266031, 0, -500.086565080559142, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -14.8835287226356887, 0, 277.825869489199523, 0, -833.47760846759857, 0, 476.27291912434204, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2.48058812043928146, 0, 0, 0, -166.695521693519714, 0, 317.515279416228027, 0, -105.838426472076009, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2.48058812043928146, 0, -46.3043115815332539, 0, 166.695521693519714, 0, -158.757639708114013, 0, 35.279475490692003, 0, 0, 0, + + 0, 0, 0, 0, -9.41317007681305069, 0, 0, 0, 0, 0, 0, -34.5149569483145192, 0, 175.71250810051028, 0, 0, 0, 0, 0, 0, 0, 0, -43.9281270251275699, 0, 468.566688268027412, 0, -632.565029161837007, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -18.8263401536261014, 0, 351.425016201020559, 0, -1054.27504860306168, 0, 602.442884916035244, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3.13772335893768356, 0, 0, 0, -210.855009720612336, 0, 401.628589944023496, 0, -133.876196648007832, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3.13772335893768356, 0, -58.5708360335034265, 0, 210.855009720612336, 0, -200.814294972011748, 0, 44.6253988826692774, 0, 0, 0, + 0, 0.784430839734420891, 0, 0, 0, 0, 2.35329251920326267, 0, -50.203573743002937, 0, 0, 0, 0, 0, 0, 1.56886167946884178, 0, -100.407147486005874, 0, 351.425016201020559, 0, 0, 0, 0, 0, 0, 0, 0, -1.56886167946884178, 0, 0, 0, 351.425016201020559, 0, -562.280025921632895, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2.35329251920326267, 0, 100.407147486005874, 0, -351.425016201020559, 0, 0, 0, 200.814294972011748, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.784430839734420891, 0, 50.203573743002937, 0, -351.425016201020559, 0, 562.280025921632895, 0, -200.814294972011748, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 1.07809706940565876, 0, 0, 0, 0, 3.23429120821697627, 0, -68.9982124419621604, 0, 0, 0, 0, 0, 0, 2.15619413881131751, 0, -137.996424883924321, 0, 482.987487093735122, 0, 0, 0, 0, 0, 0, 0, 0, -2.15619413881131751, 0, 0, 0, 482.987487093735122, 0, -772.779979349976196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -3.23429120821697627, 0, 137.996424883924321, 0, -482.987487093735122, 0, 0, 0, 275.992849767848641, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1.07809706940565876, 0, 68.9982124419621604, 0, -482.987487093735122, 0, 772.779979349976196, 0, -275.992849767848641, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 10.7809706940565876, 0, 0, 0, 0, 0, 0, 10.7809706940565876, 0, -172.495531104905401, 0, 0, 0, 0, 0, 0, 0, 0, -30.1867179433584452, 0, 0, 0, 482.987487093735122, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -47.4362710538489852, 0, 482.987487093735122, 0, -482.987487093735122, 0, -275.992849767848641, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -15.0933589716792226, 0, 275.992849767848641, 0, -869.37747676872322, 0, 551.985699535697283, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2.15619413881131751, 0, -34.4991062209810802, 0, 96.5974974187470245, 0, -55.1985699535697283, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, 16.1714560410848813, 0, 0, 0, 0, 0, 0, 16.1714560410848813, 0, -258.743296657358101, 0, 0, 0, 0, 0, 0, 0, 0, -45.2800769150376677, 0, 0, 0, 724.481230640602684, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -71.1544065807734779, 0, 724.481230640602684, 0, -724.481230640602684, 0, -413.989274651772962, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -22.6400384575188339, 0, 413.989274651772962, 0, -1304.06621515308483, 0, 827.978549303545924, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3.23429120821697627, 0, -51.7486593314716203, 0, 144.896246128120537, 0, -82.7978549303545924, 0, 0, 0, 0, 0, + 0, -1.07809706940565876, 0, 0, 0, 0, 0.359365689801886252, 0, 58.2172417479055728, 0, 0, 0, 0, 0, 0, 6.46858241643395253, 0, -77.6229889972074304, 0, -310.491955988829722, 0, 0, 0, 0, 0, 0, 0, 0, 6.46858241643395253, 0, -271.680461490226006, 0, 724.481230640602684, 0, 289.792492256241073, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.359365689801886252, 0, -77.6229889972074304, 0, 724.481230640602684, 0, -965.974974187470245, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1.07809706940565876, 0, 58.2172417479055728, 0, -310.491955988829722, 0, 289.792492256241073, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, -1.77617456229312929, 0, 0, 0, 0, 0.592058187431043098, 0, 95.9134263638289819, 0, 0, 0, 0, 0, 0, 10.6570473737587758, 0, -127.884568485105309, 0, -511.538273940421237, 0, 0, 0, 0, 0, 0, 0, 0, 10.6570473737587758, 0, -447.595989697868582, 0, 1193.58930586098289, 0, 477.435722344393154, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.592058187431043098, 0, -127.884568485105309, 0, 1193.58930586098289, 0, -1591.45240781464385, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1.77617456229312929, 0, 95.9134263638289819, 0, -511.538273940421237, 0, 477.435722344393154, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, -12.4332219360519051, 0, 0, 0, 0, 0, 0, 37.2996658081557152, 0, 149.198663232622861, 0, 0, 0, 0, 0, 0, 0, 0, 74.5993316163114303, 0, -596.794652930491443, 0, -238.717861172196577, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -10.6570473737587758, 0, -298.397326465245721, 0, 1193.58930586098289, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -33.7473166835694566, 0, 426.281894950351031, 0, -716.153583516589731, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.77617456229312929, 0, -21.3140947475175515, 0, 34.1025515960280824, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, -22.6998537228122744, 0, 0, 0, 0, 0, 0, 68.0995611684368233, 0, 272.398244673747293, 0, 0, 0, 0, 0, 0, 0, 0, 136.199122336873647, 0, -1089.59297869498917, 0, -435.837191477995669, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -19.4570174766962352, 0, -544.796489347494586, 0, 2179.18595738997834, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -61.6138886762047449, 0, 778.280699067849409, 0, -1307.51157443398701, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3.2428362461160392, 0, -38.9140349533924704, 0, 62.2624559254279527, 0, 0, 0, 0, 0, 0, 0, + 0, 1.29713449844641568, 0, 0, 0, 0, -6.48567249223207841, 0, -51.8853799378566272, 0, 0, 0, 0, 0, 0, -7.78280699067849409, 0, 311.312279627139763, 0, 155.656139813569882, 0, 0, 0, 0, 0, 0, 0, 0, 7.78280699067849409, 0, 0, 0, -1089.59297869498917, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6.48567249223207841, 0, -311.312279627139763, 0, 1089.59297869498917, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1.29713449844641568, 0, 51.8853799378566272, 0, -155.656139813569882, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 2.65833466848162373, 0, 0, 0, 0, -13.2916733424081186, 0, -106.333386739264949, 0, 0, 0, 0, 0, 0, -15.9500080108897424, 0, 638.000320435589695, 0, 319.000160217794847, 0, 0, 0, 0, 0, 0, 0, 0, 15.9500080108897424, 0, 0, 0, -2233.00112152456393, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13.2916733424081186, 0, -638.000320435589695, 0, 2233.00112152456393, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2.65833466848162373, 0, 106.333386739264949, 0, -319.000160217794847, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 11.9625060081673068, 0, 0, 0, 0, 0, 0, -99.6875500680608898, 0, -79.7500400544487119, 0, 0, 0, 0, 0, 0, 0, 0, 55.8250280381140983, 0, 744.333707174854644, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 119.625060081673068, 0, -1116.50056076228197, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -46.5208566984284153, 0, 319.000160217794847, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.32916733424081186, 0, -8.86111556160541243, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, 28.0545633538451997, 0, 0, 0, 0, 0, 0, -233.788027948709998, 0, -187.030422358967998, 0, 0, 0, 0, 0, 0, 0, 0, 130.921295651277599, 0, 1745.61727535036798, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 280.545633538451997, 0, -2618.42591302555197, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -109.101079709397999, 0, 748.121689435871992, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3.11717370598279997, 0, -20.7811580398853331, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, -1.41689713908309089, 0, 0, 0, 0, 15.5858685299139998, 0, 31.1717370598279997, 0, 0, 0, 0, 0, 0, -18.7030422358967998, 0, -374.060844717935996, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -18.7030422358967998, 0, 785.527773907665592, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15.5858685299139998, 0, -374.060844717935996, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1.41689713908309089, 0, 31.1717370598279997, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, -3.92321052893598442, 0, 0, 0, 0, 43.1553158182958286, 0, 86.3106316365916572, 0, 0, 0, 0, 0, 0, -51.7863789819549943, 0, -1035.72757963909989, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -51.7863789819549943, 0, 2175.02791724210976, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43.1553158182958286, 0, -1035.72757963909989, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -3.92321052893598442, 0, 86.3106316365916572, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, -8.63106316365916572, 0, 0, 0, 0, 0, 0, 129.465947454887486, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -362.50465287368496, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 258.931894909774972, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -43.1553158182958286, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.784642105787196884, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, -29.8988798455876938, 0, 0, 0, 0, 0, 0, 448.483197683815407, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1255.75295351468314, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 896.966395367630815, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -149.494399227938469, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2.71807998596251762, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1.35903999298125881, 0, 0, 0, 0, -24.9157332046564115, 0, 0, 0, 0, 0, 0, 0, 0, 89.6966395367630815, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -89.6966395367630815, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24.9157332046564115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1.35903999298125881, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 6.79519996490629405, 0, 0, 0, 0, -124.578666023282058, 0, 0, 0, 0, 0, 0, 0, 0, 448.483197683815407, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -448.483197683815407, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 124.578666023282058, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -6.79519996490629405, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +}; + +static FINT _len_spinor(FINT kappa, FINT l) +{ + if (0 == kappa) { + return 4 * l + 2; + } else if (kappa < 0) { + return 2 * l + 2; + } else { + return 2 * l; + } +} + +static int _len_cart[] = { + 1, 3, 6, 10, 15, 21, 28, 36, 45, 55, 66, 78, 91, 105, 120, 136 +}; + +struct cart2sp_t { + dtype *cart2sph; + dtype *cart2j_lt_lR; + dtype *cart2j_lt_lI; + dtype *cart2j_gt_lR; + dtype *cart2j_gt_lI; +}; + +// hardcoded g_c2s;; warning +static struct cart2sp_t g_c2s[] = { + {g_trans_cart2sph ,g_trans_cart2jR , g_trans_cart2jI , g_trans_cart2jR , g_trans_cart2jI }, + {g_trans_cart2sph+1 ,g_trans_cart2jR+4 , g_trans_cart2jI+4 , g_trans_cart2jR+16 , g_trans_cart2jI+16 }, + /*{g_trans_cart2sph+10 ,g_trans_cart2jR+40 , g_trans_cart2jI+40 , g_trans_cart2jR+88 , g_trans_cart2jI+88 }, + {g_trans_cart2sph+40 ,g_trans_cart2jR+160 , g_trans_cart2jI+160 , g_trans_cart2jR+280 , g_trans_cart2jI+280 }, + {g_trans_cart2sph+110 ,g_trans_cart2jR+440 , g_trans_cart2jI+440 , g_trans_cart2jR+680 , g_trans_cart2jI+680 }, + {g_trans_cart2sph+245 ,g_trans_cart2jR+980 , g_trans_cart2jI+980 , g_trans_cart2jR+1400 , g_trans_cart2jI+1400 }, + {g_trans_cart2sph+476 ,g_trans_cart2jR+1904 , g_trans_cart2jI+1904 , g_trans_cart2jR+2576 , g_trans_cart2jI+2576 }, + {g_trans_cart2sph+840 ,g_trans_cart2jR+3360 , g_trans_cart2jI+3360 , g_trans_cart2jR+4368 , g_trans_cart2jI+4368 }, + {g_trans_cart2sph+1380,g_trans_cart2jR+5520 , g_trans_cart2jI+5520 , g_trans_cart2jR+6960 , g_trans_cart2jI+6960 }, + {g_trans_cart2sph+2145,g_trans_cart2jR+8580 , g_trans_cart2jI+8580 , g_trans_cart2jR+10560, g_trans_cart2jI+10560}, + {g_trans_cart2sph+3190,g_trans_cart2jR+12760, g_trans_cart2jI+12760, g_trans_cart2jR+15400, g_trans_cart2jI+15400}, + {g_trans_cart2sph+4576,g_trans_cart2jR+18304, g_trans_cart2jI+18304, g_trans_cart2jR+21736, g_trans_cart2jI+21736}, + {g_trans_cart2sph+6370,g_trans_cart2jR+25480, g_trans_cart2jI+25480, g_trans_cart2jR+29848, g_trans_cart2jI+29848}, + {g_trans_cart2sph+8645, NULL, NULL, NULL, NULL}, + {g_trans_cart2sph+11480, NULL, NULL, NULL, NULL}, + {g_trans_cart2sph+14960, NULL, NULL, NULL, NULL},*/ +}; + + +static dtype *a_bra_cart2spheric(dtype *gsph, FINT nket, dtype *gcart, FINT l) +{ + FINT nf = _len_cart[l]; + FINT nd = l * 2 + 1; + CINTdgemm_TN(nd, nket, nf, g_c2s[l].cart2sph, gcart, gsph); + return gsph; +} + +static dtype *a_ket_cart2spheric(dtype *gsph, dtype *gcart, + FINT lds, FINT nbra, FINT l) +{ + FINT nf = _len_cart[l]; + FINT nd = l * 2 + 1; + CINTdgemm_NN1(nbra, nd, nf, gcart, g_c2s[l].cart2sph, gsph, lds); + return gsph; +} + + +static dtype *s_bra_cart2spheric(dtype *gsph, FINT nket, dtype *gcart, FINT l) +{ + + return gcart; +} +static dtype *s_ket_cart2spheric(dtype *gsph, dtype *gcart, + FINT lds, FINT nbra, FINT l) +{ + + return gcart; +} +static dtype *s_ket_cart2spheric_copy(dtype *gsph, dtype *gcart, + FINT lds, FINT nbra, FINT l) +{ + FINT i; + for (i = 0; i < nbra; i++) { + gsph[i] = gcart[i]; + } + return gsph; +} + + +static dtype *p_bra_cart2spheric(dtype *gsph, FINT nket, dtype *gcart, FINT l) +{ +#ifdef PYPZPX + FINT i; + for (i = 0; i < nket; i++) { + gsph[i*3+0] = gcart[i*3+1]; + gsph[i*3+1] = gcart[i*3+2]; + gsph[i*3+2] = gcart[i*3+0]; + } + return gsph; +#else + return gcart; +#endif +} +static dtype *p_ket_cart2spheric(dtype *gsph, dtype *gcart, + FINT lds, FINT nbra, FINT l) +{ +#ifdef PYPZPX + FINT i; + for (i = 0; i < nbra; i++) { + gsph[0*nbra+i] = gcart[1*nbra+i]; + gsph[1*nbra+i] = gcart[2*nbra+i]; + gsph[2*nbra+i] = gcart[0*nbra+i]; + } + return gsph; +#else + return gcart; +#endif +} +static dtype *p_ket_cart2spheric_copy(dtype *gsph, dtype *gcart, + FINT lds, FINT nbra, FINT l) +{ + FINT i; +#ifdef PYPZPX + for (i = 0; i < nbra; i++) { + gsph[0*nbra+i] = gcart[1*nbra+i]; + gsph[1*nbra+i] = gcart[2*nbra+i]; + gsph[2*nbra+i] = gcart[0*nbra+i]; + } +#else + for (i = 0; i < nbra; i++) { + gsph[0*lds+i] = gcart[0*nbra+i]; + gsph[1*lds+i] = gcart[1*nbra+i]; + gsph[2*lds+i] = gcart[2*nbra+i]; + } +#endif + return gsph; +} + + +static dtype *d_bra_cart2spheric(dtype *gsph, FINT nket, dtype *gcart, FINT l) +{ + return gsph; // NOT IMPLEMENTED YET, g_c2s takes too much memory for single tile. + dtype *coeff_c2s = g_c2s[2].cart2sph; + dtype *pgsph = gsph; + FINT i; + for (i = 0; i < nket; i++) { + gsph[0] = coeff_c2s[ 1] * gcart[1]; + gsph[1] = coeff_c2s[10] * gcart[4]; + gsph[2] = coeff_c2s[12] * gcart[0] + + coeff_c2s[15] * gcart[3] + + coeff_c2s[17] * gcart[5]; + gsph[3] = coeff_c2s[20] * gcart[2]; + gsph[4] = coeff_c2s[24] * gcart[0] + + coeff_c2s[27] * gcart[3]; + gsph += 5; + gcart += 6; + } + return pgsph; +} +static dtype *d_ket_cart2spheric(dtype *gsph, dtype *gcart, + FINT lds, FINT nbra, FINT l) +{ + return gsph; // NOT IMPLEMENTED YET, g_c2s takes too much memory. + dtype *coeff_c2s = g_c2s[2].cart2sph; + dtype *pgsph = gsph; + FINT i; + for (i = 0; i < nbra; i++) { + gsph[0*lds+i] = coeff_c2s[ 1] * gcart[1*nbra+i]; + } + for (i = 0; i < nbra; i++) { + gsph[1*lds+i] = coeff_c2s[10] * gcart[4*nbra+i]; + } + for (i = 0; i < nbra; i++) { + gsph[2*lds+i] = coeff_c2s[12] * gcart[0*nbra+i] + + coeff_c2s[15] * gcart[3*nbra+i] + + coeff_c2s[17] * gcart[5*nbra+i]; + } + for (i = 0; i < nbra; i++) { + gsph[3*lds+i] = coeff_c2s[20] * gcart[2*nbra+i]; + } + for (i = 0; i < nbra; i++) { + gsph[4*lds+i] = coeff_c2s[24] * gcart[0*nbra+i] + + coeff_c2s[27] * gcart[3*nbra+i]; + } + return pgsph; +} + + +static dtype *f_bra_cart2spheric(dtype *gsph, FINT nket, dtype *gcart, FINT l) +{ + return gsph; // Not implemented yet, g_c2s takes too much memory for single tile. + dtype *coeff_c2s = g_c2s[3].cart2sph; + dtype *pgsph = gsph; + FINT i; + for (i = 0; i < nket; i++) { + gsph[0] = coeff_c2s[ 1] * gcart[1] + + coeff_c2s[ 6] * gcart[6]; + gsph[1] = coeff_c2s[14] * gcart[4]; + gsph[2] = coeff_c2s[21] * gcart[1] + + coeff_c2s[26] * gcart[6] + + coeff_c2s[28] * gcart[8]; + gsph[3] = coeff_c2s[32] * gcart[2] + + coeff_c2s[37] * gcart[7] + + coeff_c2s[39] * gcart[9]; + gsph[4] = coeff_c2s[40] * gcart[0] + + coeff_c2s[43] * gcart[3] + + coeff_c2s[45] * gcart[5]; + gsph[5] = coeff_c2s[52] * gcart[2] + + coeff_c2s[57] * gcart[7]; + gsph[6] = coeff_c2s[60] * gcart[0] + + coeff_c2s[63] * gcart[3]; + gsph += 7; + gcart += 10; + } + return pgsph; +} +static dtype *f_ket_cart2spheric(dtype *gsph, dtype *gcart, + FINT lds, FINT nbra, FINT l) +{ + return gsph; // Not implemented yet, g_c2s takes too much memory for single tile. + dtype *coeff_c2s = g_c2s[3].cart2sph; + dtype *pgsph = gsph; + FINT i; + for (i = 0; i < nbra; i++) { + gsph[0*lds+i] = coeff_c2s[ 1] * gcart[1*nbra+i] + + coeff_c2s[ 6] * gcart[6*nbra+i]; + } + for (i = 0; i < nbra; i++) { + gsph[1*lds+i] = coeff_c2s[14] * gcart[4*nbra+i]; + } + for (i = 0; i < nbra; i++) { + gsph[2*lds+i] = coeff_c2s[21] * gcart[1*nbra+i] + + coeff_c2s[26] * gcart[6*nbra+i] + + coeff_c2s[28] * gcart[8*nbra+i]; + } + for (i = 0; i < nbra; i++) { + gsph[3*lds+i] = coeff_c2s[32] * gcart[2*nbra+i] + + coeff_c2s[37] * gcart[7*nbra+i] + + coeff_c2s[39] * gcart[9*nbra+i]; + } + for (i = 0; i < nbra; i++) { + gsph[4*lds+i] = coeff_c2s[40] * gcart[0*nbra+i] + + coeff_c2s[43] * gcart[3*nbra+i] + + coeff_c2s[45] * gcart[5*nbra+i]; + } + for (i = 0; i < nbra; i++) { + gsph[5*lds+i] = coeff_c2s[52] * gcart[2*nbra+i] + + coeff_c2s[57] * gcart[7*nbra+i]; + } + for (i = 0; i < nbra; i++) { + gsph[6*lds+i] = coeff_c2s[60] * gcart[0*nbra+i] + + coeff_c2s[63] * gcart[3*nbra+i]; + } + return pgsph; +} + + +static dtype *g_bra_cart2spheric(dtype *gsph, FINT nket, dtype *gcart, FINT l) +{ + return gsph; // Not implemented yet, g_c2s takes too much memory for single tile. + dtype *coeff_c2s = g_c2s[4].cart2sph; + dtype *pgsph = gsph; + FINT i; + for (i = 0; i < nket; i++) { + gsph[0] = coeff_c2s[ 1] * gcart[ 1] + + coeff_c2s[ 6] * gcart[ 6]; + gsph[1] = coeff_c2s[ 19] * gcart[ 4] + + coeff_c2s[ 26] * gcart[11]; + gsph[2] = coeff_c2s[ 31] * gcart[ 1] + + coeff_c2s[ 36] * gcart[ 6] + + coeff_c2s[ 38] * gcart[ 8]; + gsph[3] = coeff_c2s[ 49] * gcart[ 4] + + coeff_c2s[ 56] * gcart[11] + + coeff_c2s[ 58] * gcart[13]; + gsph[4] = coeff_c2s[ 60] * gcart[ 0] + + coeff_c2s[ 63] * gcart[ 3] + + coeff_c2s[ 65] * gcart[ 5] + + coeff_c2s[ 70] * gcart[10] + + coeff_c2s[ 72] * gcart[12] + + coeff_c2s[ 74] * gcart[14]; + gsph[5] = coeff_c2s[ 77] * gcart[ 2] + + coeff_c2s[ 82] * gcart[ 7] + + coeff_c2s[ 84] * gcart[ 9]; + gsph[6] = coeff_c2s[ 90] * gcart[ 0] + + coeff_c2s[ 95] * gcart[ 5] + + coeff_c2s[100] * gcart[10] + + coeff_c2s[102] * gcart[12]; + gsph[7] = coeff_c2s[107] * gcart[ 2] + + coeff_c2s[112] * gcart[ 7]; + gsph[8] = coeff_c2s[120] * gcart[ 0] + + coeff_c2s[123] * gcart[ 3] + + coeff_c2s[130] * gcart[10]; + gsph += 9; + gcart += 15; + } + return pgsph; +} +static dtype *g_ket_cart2spheric(dtype *gsph, dtype *gcart, + FINT lds, FINT nbra, FINT l) +{ + return gsph; // Not implemented yet, g_c2s takes too much memory for single tile. + dtype *coeff_c2s = g_c2s[4].cart2sph; + dtype *pgsph = gsph; + FINT i; + for (i = 0; i < nbra; i++) { + gsph[0*lds+i] = coeff_c2s[ 1] * gcart[ 1*nbra+i] + + coeff_c2s[ 6] * gcart[ 6*nbra+i]; + } + for (i = 0; i < nbra; i++) { + gsph[1*lds+i] = coeff_c2s[ 19] * gcart[ 4*nbra+i] + + coeff_c2s[ 26] * gcart[11*nbra+i]; + } + for (i = 0; i < nbra; i++) { + gsph[2*lds+i] = coeff_c2s[ 31] * gcart[ 1*nbra+i] + + coeff_c2s[ 36] * gcart[ 6*nbra+i] + + coeff_c2s[ 38] * gcart[ 8*nbra+i]; + } + for (i = 0; i < nbra; i++) { + gsph[3*lds+i] = coeff_c2s[ 49] * gcart[ 4*nbra+i] + + coeff_c2s[ 56] * gcart[11*nbra+i] + + coeff_c2s[ 58] * gcart[13*nbra+i]; + } + for (i = 0; i < nbra; i++) { + gsph[4*lds+i] = coeff_c2s[ 60] * gcart[ 0*nbra+i] + + coeff_c2s[ 63] * gcart[ 3*nbra+i] + + coeff_c2s[ 65] * gcart[ 5*nbra+i] + + coeff_c2s[ 70] * gcart[10*nbra+i] + + coeff_c2s[ 72] * gcart[12*nbra+i] + + coeff_c2s[ 74] * gcart[14*nbra+i]; + } + for (i = 0; i < nbra; i++) { + gsph[5*lds+i] = coeff_c2s[ 77] * gcart[ 2*nbra+i] + + coeff_c2s[ 82] * gcart[ 7*nbra+i] + + coeff_c2s[ 84] * gcart[ 9*nbra+i]; + } + for (i = 0; i < nbra; i++) { + gsph[6*lds+i] = coeff_c2s[ 90] * gcart[ 0*nbra+i] + + coeff_c2s[ 95] * gcart[ 5*nbra+i] + + coeff_c2s[100] * gcart[10*nbra+i] + + coeff_c2s[102] * gcart[12*nbra+i]; + } + for (i = 0; i < nbra; i++) { + gsph[7*lds+i] = coeff_c2s[107] * gcart[ 2*nbra+i] + + coeff_c2s[112] * gcart[ 7*nbra+i]; + } + for (i = 0; i < nbra; i++) { + gsph[8*lds+i] = coeff_c2s[120] * gcart[ 0*nbra+i] + + coeff_c2s[123] * gcart[ 3*nbra+i] + + coeff_c2s[130] * gcart[10*nbra+i]; + } + return pgsph; +} + + +// c2s hardcoded array +#ifdef __cplusplus +//dtype *(*c2s_bra_sph[16])(...) = { +typedef dtype *(*Funcs) (dtype *gsph, int nket, dtype *gcart, int l); +Funcs c2s_bra_sph[16] = { +#else +dtype *(*c2s_bra_sph[])() = { +#endif + s_bra_cart2spheric, + p_bra_cart2spheric, + d_bra_cart2spheric, + f_bra_cart2spheric, + g_bra_cart2spheric, + a_bra_cart2spheric, + a_bra_cart2spheric, + a_bra_cart2spheric, + a_bra_cart2spheric, + a_bra_cart2spheric, + a_bra_cart2spheric, + a_bra_cart2spheric, + a_bra_cart2spheric, + a_bra_cart2spheric, + a_bra_cart2spheric, + a_bra_cart2spheric, +}; + +dtype *(*c2s_ket_sph[])(dtype *gsph, dtype *gcart, + FINT lds, FINT nbra, FINT l) = { + s_ket_cart2spheric, + p_ket_cart2spheric, + d_ket_cart2spheric, + f_ket_cart2spheric, + g_ket_cart2spheric, + a_ket_cart2spheric, + a_ket_cart2spheric, + a_ket_cart2spheric, + a_ket_cart2spheric, + a_ket_cart2spheric, + a_ket_cart2spheric, + a_ket_cart2spheric, + a_ket_cart2spheric, + a_ket_cart2spheric, + a_ket_cart2spheric, + a_ket_cart2spheric, +}; + +dtype *(*c2s_ket_sph1[])(dtype *gsph, dtype *gcart, + FINT lds, FINT nbra, FINT l) = { + s_ket_cart2spheric_copy, + p_ket_cart2spheric_copy, + d_ket_cart2spheric, + f_ket_cart2spheric, + g_ket_cart2spheric, + a_ket_cart2spheric, + a_ket_cart2spheric, + a_ket_cart2spheric, + a_ket_cart2spheric, + a_ket_cart2spheric, + a_ket_cart2spheric, + a_ket_cart2spheric, + a_ket_cart2spheric, + a_ket_cart2spheric, + a_ket_cart2spheric, + a_ket_cart2spheric, +}; + + + +static void a_bra_cart2spinor_si(dtype *gspR, dtype *gspI, + dtype *gx, dtype *gy, dtype *gz, dtype *g1, + FINT nket, FINT kappa, FINT l) +{ + FINT nf = _len_cart[l]; + FINT nd = _len_spinor(kappa, l); + dtype *gspaR = gspR; + dtype *gspaI = gspI; + dtype *gspbR = gspR + nket * nd; + dtype *gspbI = gspI + nket * nd; + dtype *coeffR, *coeffI; + if (kappa < 0) { + coeffR = g_c2s[l].cart2j_gt_lR; + coeffI = g_c2s[l].cart2j_gt_lI; + } else { + coeffR = g_c2s[l].cart2j_lt_lR; + coeffI = g_c2s[l].cart2j_lt_lI; + } + + FINT i, j, n; + dtype saR, saI, sbR, sbI, caR, caI, cbR, cbI, v1, vx, vy, vz; + + for (j = 0; j < nket; j++) { + for (i = 0; i < nd; i++) { + saR = 0; + saI = 0; + sbR = 0; + sbI = 0; +#pragma GCC ivdep + for (n = 0; n < nf; n++) { + v1 = g1[j*nf+n]; + vx = gx[j*nf+n]; + vy = gy[j*nf+n]; + vz = gz[j*nf+n]; + caR = coeffR[i*nf*2 +n]; + caI = coeffI[i*nf*2 +n]; + cbR = coeffR[i*nf*2+nf+n]; + cbI = coeffI[i*nf*2+nf+n]; + saR += caR * v1 + caI * vz - cbR * vy + cbI * vx; + saI +=-caI * v1 + caR * vz + cbI * vy + cbR * vx; + sbR += cbR * v1 - cbI * vz + caR * vy + caI * vx; + sbI +=-cbI * v1 - cbR * vz - caI * vy + caR * vx; + } + gspaR[j*nd+i] = saR; + gspaI[j*nd+i] = saI; + gspbR[j*nd+i] = sbR; + gspbI[j*nd+i] = sbI; + } } +} + +static void a_bra_cart2spinor_sf(dtype *gspR, dtype *gspI, + dtype *gx, dtype *gy, dtype *gz, dtype *g1, + FINT nket, FINT kappa, FINT l) +{ + FINT nf = _len_cart[l]; + FINT nd = _len_spinor(kappa, l); + dtype *gspaR = gspR; + dtype *gspaI = gspI; + dtype *gspbR = gspR + nket * nd; + dtype *gspbI = gspI + nket * nd; + dtype *coeffR, *coeffI; + if (kappa < 0) { + coeffR = g_c2s[l].cart2j_gt_lR; + coeffI = g_c2s[l].cart2j_gt_lI; + } else { + coeffR = g_c2s[l].cart2j_lt_lR; + coeffI = g_c2s[l].cart2j_lt_lI; + } + + FINT i, j, n; + dtype saR, saI, sbR, sbI, caR, caI, cbR, cbI, v1; + + for (j = 0; j < nket; j++) { + for (i = 0; i < nd; i++) { + saR = 0; + saI = 0; + sbR = 0; + sbI = 0; +#pragma GCC ivdep + for (n = 0; n < nf; n++) { + v1 = g1[j*nf+n]; + caR = coeffR[i*nf*2 +n]; + caI = coeffI[i*nf*2 +n]; + cbR = coeffR[i*nf*2+nf+n]; + cbI = coeffI[i*nf*2+nf+n]; + saR += caR * v1; + saI +=-caI * v1; + sbR += cbR * v1; + sbI +=-cbI * v1; + } + gspaR[j*nd+i] = saR; + gspaI[j*nd+i] = saI; + gspbR[j*nd+i] = sbR; + gspbI[j*nd+i] = sbI; + } } +} + +static void a_bra1_cart2spinor_si(dtype *gspR, dtype *gspI, + dtype *gx, dtype *gy, dtype *gz, dtype *g1, + FINT ngrids, FINT nket, FINT kappa, FINT l) +{ + FINT nf = _len_cart[l]; + FINT nd = _len_spinor(kappa, l); + FINT ndg = nd * ngrids; + dtype *gspaR = gspR; + dtype *gspaI = gspI; + dtype *gspbR = gspR + nket * ndg; + dtype *gspbI = gspI + nket * ndg; + dtype *coeffR, *coeffI; + if (kappa < 0) { + coeffR = g_c2s[l].cart2j_gt_lR; + coeffI = g_c2s[l].cart2j_gt_lI; + } else { + coeffR = g_c2s[l].cart2j_lt_lR; + coeffI = g_c2s[l].cart2j_lt_lI; + } + + FINT i, j, n, m; + dtype caR, caI, cbR, cbI, v1, vx, vy, vz; + + for (j = 0; j < nket; j++) { +#pragma GCC ivdep + for (i = 0; i < ndg; i++) { + gspaR[j*ndg+i] = 0; + gspaI[j*ndg+i] = 0; + gspbR[j*ndg+i] = 0; + gspbI[j*ndg+i] = 0; + } + for (i = 0; i < nd; i++) { + for (n = 0; n < nf; n++) { + caR = coeffR[i*nf*2 +n]; + caI = coeffI[i*nf*2 +n]; + cbR = coeffR[i*nf*2+nf+n]; + cbI = coeffI[i*nf*2+nf+n]; +#pragma GCC ivdep + for (m = 0; m < ngrids; m++) { + v1 = g1[(j*nf+n)*ngrids+m]; + vx = gx[(j*nf+n)*ngrids+m]; + vy = gy[(j*nf+n)*ngrids+m]; + vz = gz[(j*nf+n)*ngrids+m]; + gspaR[(j*nd+i)*ngrids+m] += caR * v1 + caI * vz - cbR * vy + cbI * vx; + gspaI[(j*nd+i)*ngrids+m] +=-caI * v1 + caR * vz + cbI * vy + cbR * vx; + gspbR[(j*nd+i)*ngrids+m] += cbR * v1 - cbI * vz + caR * vy + caI * vx; + gspbI[(j*nd+i)*ngrids+m] +=-cbI * v1 - cbR * vz - caI * vy + caR * vx; + } + } } + } +} + +static void a_bra1_cart2spinor_sf(dtype *gspR, dtype *gspI, + dtype *gx, dtype *gy, dtype *gz, dtype *g1, + FINT ngrids, FINT nket, FINT kappa, FINT l) +{ + FINT nf = _len_cart[l]; + FINT nd = _len_spinor(kappa, l); + FINT ndg = nd * ngrids; + dtype *gspaR = gspR; + dtype *gspaI = gspI; + dtype *gspbR = gspR + nket * ndg; + dtype *gspbI = gspI + nket * ndg; + dtype *coeffR, *coeffI; + if (kappa < 0) { + coeffR = g_c2s[l].cart2j_gt_lR; + coeffI = g_c2s[l].cart2j_gt_lI; + } else { + coeffR = g_c2s[l].cart2j_lt_lR; + coeffI = g_c2s[l].cart2j_lt_lI; + } + + FINT i, j, n, m; + dtype caR, caI, cbR, cbI, v1; + + for (j = 0; j < nket; j++) { +#pragma GCC ivdep + for (i = 0; i < ndg; i++) { + gspaR[j*ndg+i] = 0; + gspaI[j*ndg+i] = 0; + gspbR[j*ndg+i] = 0; + gspbI[j*ndg+i] = 0; + } + for (i = 0; i < nd; i++) { + for (n = 0; n < nf; n++) { + caR = coeffR[i*nf*2 +n]; + caI = coeffI[i*nf*2 +n]; + cbR = coeffR[i*nf*2+nf+n]; + cbI = coeffI[i*nf*2+nf+n]; +#pragma GCC ivdep + for (m = 0; m < ngrids; m++) { + v1 = g1[(j*nf+n)*ngrids+m]; + gspaR[(j*nd+i)*ngrids+m] += caR * v1; + gspaI[(j*nd+i)*ngrids+m] +=-caI * v1; + gspbR[(j*nd+i)*ngrids+m] += cbR * v1; + gspbI[(j*nd+i)*ngrids+m] +=-cbI * v1; + } + } } + } +} + +static void a_bra1_cart2spinor_zi(dtype *gspR, dtype *gspI, + dtype *gx, dtype *gy, dtype *gz, dtype *g1, + FINT ngrids, FINT nket, FINT kappa, FINT l) +{ + FINT nf = _len_cart[l]; + FINT nd = _len_spinor(kappa, l); + FINT ndg = nd * ngrids; + dtype *gspaR = gspR; + dtype *gspaI = gspI; + dtype *gspbR = gspR + nket * ndg; + dtype *gspbI = gspI + nket * ndg; + dtype *gxR = gx; + dtype *gyR = gy; + dtype *gzR = gz; + dtype *g1R = g1; + dtype *gxI = gx + nket * nf * ngrids; + dtype *gyI = gy + nket * nf * ngrids; + dtype *gzI = gz + nket * nf * ngrids; + dtype *g1I = g1 + nket * nf * ngrids; + dtype *coeffR, *coeffI; + if (kappa < 0) { + coeffR = g_c2s[l].cart2j_gt_lR; + coeffI = g_c2s[l].cart2j_gt_lI; + } else { + coeffR = g_c2s[l].cart2j_lt_lR; + coeffI = g_c2s[l].cart2j_lt_lI; + } + + FINT i, j, n, m; + dtype caR, caI, cbR, cbI; + dtype v1R, vxR, vyR, vzR; + dtype v1I, vxI, vyI, vzI; + dtype v11R, v12R, v21R, v22R; + dtype v11I, v12I, v21I, v22I; + + for (j = 0; j < nket; j++) { +#pragma GCC ivdep + for (i = 0; i < ndg; i++) { + gspaR[j*ndg+i] = 0; + gspaI[j*ndg+i] = 0; + gspbR[j*ndg+i] = 0; + gspbI[j*ndg+i] = 0; + } + for (i = 0; i < nd; i++) { + for (n = 0; n < nf; n++) { + caR = coeffR[i*nf*2 +n]; + caI = coeffI[i*nf*2 +n]; + cbR = coeffR[i*nf*2+nf+n]; + cbI = coeffI[i*nf*2+nf+n]; +#pragma GCC ivdep + for (m = 0; m < ngrids; m++) { + + + v11R = g1R[(j*nf+n)*ngrids+m] - gzI[(j*nf+n)*ngrids+m]; + v11I = g1I[(j*nf+n)*ngrids+m] + gzR[(j*nf+n)*ngrids+m]; + v12R = gyR[(j*nf+n)*ngrids+m] - gxI[(j*nf+n)*ngrids+m]; + v12I = gyI[(j*nf+n)*ngrids+m] + gxR[(j*nf+n)*ngrids+m]; + v21R =-gyR[(j*nf+n)*ngrids+m] - gxI[(j*nf+n)*ngrids+m]; + v21I =-gyI[(j*nf+n)*ngrids+m] + gxR[(j*nf+n)*ngrids+m]; + v22R = g1R[(j*nf+n)*ngrids+m] + gzI[(j*nf+n)*ngrids+m]; + v22I = g1I[(j*nf+n)*ngrids+m] - gzR[(j*nf+n)*ngrids+m]; + gspaR[(j*nd+i)*ngrids+m] += caR * v11R + caI * v11I + cbR * v21R + cbI * v21I; + gspaI[(j*nd+i)*ngrids+m] += caR * v11I - caI * v11R + cbR * v21I - cbI * v21R; + gspbR[(j*nd+i)*ngrids+m] += caR * v12R + caI * v12I + cbR * v22R + cbI * v22I; + gspbI[(j*nd+i)*ngrids+m] += caR * v12I - caI * v12R + cbR * v22I - cbI * v22R; + } + } } + } +} + +static void a_bra1_cart2spinor_zf(dtype *gspR, dtype *gspI, + dtype *gx, dtype *gy, dtype *gz, dtype *g1, + FINT ngrids, FINT nket, FINT kappa, FINT l) +{ + FINT nf = _len_cart[l]; + FINT nd = _len_spinor(kappa, l); + FINT ndg = nd * ngrids; + dtype *gspaR = gspR; + dtype *gspaI = gspI; + dtype *gspbR = gspR + nket * ndg; + dtype *gspbI = gspI + nket * ndg; + dtype *g1R = g1; + dtype *g1I = g1 + nket * nf * ngrids; + dtype *coeffR, *coeffI; + if (kappa < 0) { + coeffR = g_c2s[l].cart2j_gt_lR; + coeffI = g_c2s[l].cart2j_gt_lI; + } else { + coeffR = g_c2s[l].cart2j_lt_lR; + coeffI = g_c2s[l].cart2j_lt_lI; + } + + FINT i, j, n, m; + dtype caR, caI, cbR, cbI, v1R, v1I; + + for (j = 0; j < nket; j++) { +#pragma GCC ivdep + for (i = 0; i < ndg; i++) { + gspaR[j*ndg+i] = 0; + gspaI[j*ndg+i] = 0; + gspbR[j*ndg+i] = 0; + gspbI[j*ndg+i] = 0; + } + for (i = 0; i < nd; i++) { + for (n = 0; n < nf; n++) { + caR = coeffR[i*nf*2 +n]; + caI = coeffI[i*nf*2 +n]; + cbR = coeffR[i*nf*2+nf+n]; + cbI = coeffI[i*nf*2+nf+n]; +#pragma GCC ivdep + for (m = 0; m < ngrids; m++) { + v1R = g1R[(j*nf+n)*ngrids+m]; + v1I = g1I[(j*nf+n)*ngrids+m]; + gspaR[(j*nd+i)*ngrids+m] += caR * v1R + caI * v1I; + gspaI[(j*nd+i)*ngrids+m] += caR * v1I - caI * v1R; + gspbR[(j*nd+i)*ngrids+m] += cbR * v1R + cbI * v1I; + gspbI[(j*nd+i)*ngrids+m] += cbR * v1I - cbI * v1R; + } + } } + } +} + +#if 0 + + +static void a_ket_cart2spinor_si(dtype *gspR, dtype *gspI, + dtype *gx, dtype *gy, dtype *gz, dtype *g1, + FINT lds, FINT nbra, FINT kappa, FINT l) +{ + FINT nf = _len_cart[l]; + FINT nd = _len_spinor(kappa, l); + dtype *gspaR = gspR; + dtype *gspaI = gspI; + dtype *gspbR = gspR + lds * nd; + dtype *gspbI = gspI + lds * nd; + dtype *coeffR, *coeffI; + if (kappa < 0) { + coeffR = g_c2s[l].cart2j_gt_lR; + coeffI = g_c2s[l].cart2j_gt_lI; + } else { + coeffR = g_c2s[l].cart2j_lt_lR; + coeffI = g_c2s[l].cart2j_lt_lI; + } + + FINT i, j, n; + dtype caR, caI, cbR, cbI, v1, vx, vy, vz; + + for (i = 0; i < nd; i++) { +#pragma GCC ivdep + for (j = 0; j < nbra; j++) { + gspaR[j+i*lds] = 0; + gspaI[j+i*lds] = 0; + gspbR[j+i*lds] = 0; + gspbI[j+i*lds] = 0; + } + for (n = 0; n < nf; n++) { + caR = coeffR[i*nf*2 +n]; + caI = coeffI[i*nf*2 +n]; + cbR = coeffR[i*nf*2+nf+n]; + cbI = coeffI[i*nf*2+nf+n]; +#pragma GCC ivdep + for (j = 0; j < nbra; j++) { + v1 = g1[j+n*nbra]; + vx = gx[j+n*nbra]; + vy = gy[j+n*nbra]; + vz = gz[j+n*nbra]; + + + gspaR[j+i*lds] += caR * v1 - caI * vz + cbR * vy - cbI * vx; + gspaI[j+i*lds] += caI * v1 + caR * vz + cbI * vy + cbR * vx; + gspbR[j+i*lds] += cbR * v1 + cbI * vz - caR * vy - caI * vx; + gspbI[j+i*lds] += cbI * v1 - cbR * vz - caI * vy + caR * vx; + } + } + } +} + +static void a_ket_cart2spinor_sf(dtype *gspR, dtype *gspI, + dtype *gx, dtype *gy, dtype *gz, dtype *g1, + FINT lds, FINT nbra, FINT kappa, FINT l) +{ + FINT nf = _len_cart[l]; + FINT nd = _len_spinor(kappa, l); + dtype *gspaR = gspR; + dtype *gspaI = gspI; + dtype *gspbR = gspR + lds * nd; + dtype *gspbI = gspI + lds * nd; + dtype *coeffR, *coeffI; + if (kappa < 0) { + coeffR = g_c2s[l].cart2j_gt_lR; + coeffI = g_c2s[l].cart2j_gt_lI; + } else { + coeffR = g_c2s[l].cart2j_lt_lR; + coeffI = g_c2s[l].cart2j_lt_lI; + } + + FINT i, j, n; + dtype caR, caI, cbR, cbI, v1; + + for (i = 0; i < nd; i++) { +#pragma GCC ivdep + for (j = 0; j < nbra; j++) { + gspaR[j+i*lds] = 0; + gspaI[j+i*lds] = 0; + gspbR[j+i*lds] = 0; + gspbI[j+i*lds] = 0; + } + for (n = 0; n < nf; n++) { + caR = coeffR[i*nf*2 +n]; + caI = coeffI[i*nf*2 +n]; + cbR = coeffR[i*nf*2+nf+n]; + cbI = coeffI[i*nf*2+nf+n]; +#pragma GCC ivdep + for (j = 0; j < nbra; j++) { + v1 = g1[j+n*nbra]; + gspaR[j+i*lds] += caR * v1; + gspaI[j+i*lds] += caI * v1; + gspbR[j+i*lds] += cbR * v1; + gspbI[j+i*lds] += cbI * v1; + } + } + } +} +#endif + +static void a_ket_cart2spinor(dtype *gspR, dtype *gspI, + dtype *gcartR, dtype *gcartI, + FINT nbra, FINT kappa, FINT l) +{ + FINT nf = _len_cart[l]; + FINT nf2 = nf * 2; + FINT nd = _len_spinor(kappa, l); + dtype *coeffR, *coeffI; + if (kappa < 0) { + coeffR = g_c2s[l].cart2j_gt_lR; + coeffI = g_c2s[l].cart2j_gt_lI; + } else { + coeffR = g_c2s[l].cart2j_lt_lR; + coeffI = g_c2s[l].cart2j_lt_lI; + } + + FINT i, j, n; + dtype cR, cI, gR, gI; + + for (i = 0; i < nd; i++) { +#pragma GCC ivdep + for (j = 0; j < nbra; j++) { + gspR[j+i*nbra] = 0; + gspI[j+i*nbra] = 0; + } + for (n = 0; n < nf2; n++) { + cR = coeffR[i*nf2+n]; + cI = coeffI[i*nf2+n]; + if (cR != 0) { + if (cI != 0) { +#pragma GCC ivdep + for (j = 0; j < nbra; j++) { + gR = gcartR[j+n*nbra]; + gI = gcartI[j+n*nbra]; + gspR[j+i*nbra] += cR * gR - cI * gI; + gspI[j+i*nbra] += cI * gR + cR * gI; + } + } else { +#pragma GCC ivdep + for (j = 0; j < nbra; j++) { + gR = gcartR[j+n*nbra]; + gI = gcartI[j+n*nbra]; + gspR[j+i*nbra] += cR * gR; + gspI[j+i*nbra] += cR * gI; + } + } + } else { + if (cI != 0) { +#pragma GCC ivdep + for (j = 0; j < nbra; j++) { + gR = gcartR[j+n*nbra]; + gI = gcartI[j+n*nbra]; + gspR[j+i*nbra] +=-cI * gI; + gspI[j+i*nbra] += cI * gR; + } + } + } + } + } +} + + +static void a_iket_cart2spinor(dtype *gspR, dtype *gspI, + dtype *gcartR, dtype *gcartI, + FINT nbra, FINT kappa, FINT l) +{ + a_ket_cart2spinor(gspI, gspR, gcartR, gcartI, nbra, kappa, l); + FINT size = _len_spinor(kappa, l) * nbra; + FINT i; + for (i = 0; i < size; i++) { + gspR[i] = -gspR[i]; + } +} + +static void a_ket1_cart2spinor(dtype *gspR, dtype *gspI, + dtype *gcartR, dtype *gcartI, + FINT nbra, FINT counts, FINT kappa, FINT l) +{ + FINT nf = _len_cart[l]; + FINT nf2 = nf * 2; + FINT nd = _len_spinor(kappa, l); + FINT nds = nd * nbra; + FINT nfs = nf * nbra; + dtype *gcartaR = gcartR; + dtype *gcartaI = gcartI; + dtype *gcartbR = gcartaR + nfs * counts; + dtype *gcartbI = gcartaI + nfs * counts; + dtype *coeffR, *coeffI; + if (kappa < 0) { + coeffR = g_c2s[l].cart2j_gt_lR; + coeffI = g_c2s[l].cart2j_gt_lI; + } else { + coeffR = g_c2s[l].cart2j_lt_lR; + coeffI = g_c2s[l].cart2j_lt_lI; + } + + FINT i, j, k, n; + dtype caR, caI, cbR, cbI, gaR, gaI, gbR, gbI; + + for (i = 0; i < nd; i++) { + for (k = 0; k < counts; k++) { +#pragma GCC ivdep + for (j = 0; j < nbra; j++) { + gspR[k*nds+j+i*nbra] = 0; + gspI[k*nds+j+i*nbra] = 0; + } } + for (n = 0; n < nf; n++) { + caR = coeffR[i*nf2 +n]; + caI = coeffI[i*nf2 +n]; + cbR = coeffR[i*nf2+nf+n]; + cbI = coeffI[i*nf2+nf+n]; + for (k = 0; k < counts; k++) { +#pragma GCC ivdep + for (j = 0; j < nbra; j++) { + gaR = gcartaR[k*nfs+j+n*nbra]; + gaI = gcartaI[k*nfs+j+n*nbra]; + gbR = gcartbR[k*nfs+j+n*nbra]; + gbI = gcartbI[k*nfs+j+n*nbra]; + gspR[k*nds+j+i*nbra] += caR * gaR - caI * gaI + cbR * gbR - cbI * gbI; + gspI[k*nds+j+i*nbra] += caR * gaI + caI * gaR + cbR * gbI + cbI * gbR; + } } + } + } +} + + +static void a_iket1_cart2spinor(dtype *gspR, dtype *gspI, + dtype *gcartR, dtype *gcartI, + FINT nbra, FINT counts, FINT kappa, FINT l) +{ + a_ket1_cart2spinor(gspI, gspR, gcartR, gcartI, nbra, counts, kappa, l); + FINT size = _len_spinor(kappa, l) * nbra * counts; + FINT i; + for (i = 0; i < size; i++) { + gspR[i] = -gspR[i]; + } +} + + + +static void dcopy_ij(dtype *out, dtype *gctr, + const FINT ni, const FINT nj, const FINT mi, const FINT mj) +{ + FINT i, j; + + for (j = 0; j < mj; j++) { + for (i = 0; i < mi; i++) { + out[j*ni+i] = gctr[j*mi+i]; + } } +} + +static void zcopy_ij(dtype *out, dtype *gctrR, dtype *gctrI, + const FINT ni, const FINT nj, const FINT mi, const FINT mj) +{ + dtype *dout = (dtype *)out; + FINT i, j; + + for (j = 0; j < mj; j++) { + for (i = 0; i < mi; i++) { + dout[(j*ni+i)*OF_CMPLX ] = gctrR[j*mi+i]; + dout[(j*ni+i)*OF_CMPLX+1] = gctrI[j*mi+i]; + } } +} + +static void dcopy_grids_ij(dtype *out, const dtype *gctr, + const FINT ngrids, const FINT ni, const FINT nj, + const FINT mgrids, const FINT mi, const FINT mj) +{ + const size_t ngi = ngrids * ni; + const size_t mgi = mgrids * mi; + FINT i, j, m; + + for (j = 0; j < mj; j++) { + for (i = 0; i < mi; i++) { +#pragma GCC ivdep + for (m = 0; m < mgrids; m++) { + out[i*ngrids+m] = gctr[i*mgrids+m]; + } } + out += ngi; + gctr += mgi; + } +} + +static void zcopy_grids_ij(dtype *out, dtype *gctrR, dtype *gctrI, + const FINT ngrids, const FINT ni, const FINT nj, + const FINT mgrids, const FINT mi, const FINT mj) +{ + size_t ngi = ngrids * ni * OF_CMPLX; + size_t mgi = mgrids * mi; + dtype *dout = (dtype *)out; + FINT i, j, m; + + for (j = 0; j < mj; j++) { + for (i = 0; i < mi; i++) { +#pragma GCC ivdep + for (m = 0; m < mgrids; m++) { + dout[(i*ngrids+m)*OF_CMPLX ] = gctrR[i*mgrids+m]; + dout[(i*ngrids+m)*OF_CMPLX+1] = gctrI[i*mgrids+m]; + } } + dout += ngi; + gctrR += mgi; + gctrI += mgi; + } +} + + +static void dcopy_iklj(dtype *fijkl, const dtype *gctr, + const FINT ni, const FINT nj, const FINT nk, const FINT nl, + const FINT mi, const FINT mj, const FINT mk, const FINT ml) +{ + const size_t nij = ni * nj; + const size_t nijk = nij * nk; + const size_t mik = mi * mk; + const size_t mikl = mik * ml; + FINT i, j, k, l; + dtype *pijkl; + const dtype *pgctr; + + switch (mi) { + case 1: + for (l = 0; l < ml; l++) { + for (k = 0; k < mk; k++) { + pijkl = fijkl + k * nij; + pgctr = gctr + k * mi; +#pragma GCC ivdep + for (j = 0; j < mj; j++) { + pijkl[ni*j] = pgctr[mikl*j]; + } + } + fijkl += nijk; + gctr += mik; + } + break; + case 3: + for (l = 0; l < ml; l++) { + for (k = 0; k < mk; k++) { + pijkl = fijkl + k * nij; + pgctr = gctr + k * mi; +#pragma GCC ivdep + for (j = 0; j < mj; j++) { + pijkl[ni*j+0] = pgctr[mikl*j+0]; + pijkl[ni*j+1] = pgctr[mikl*j+1]; + pijkl[ni*j+2] = pgctr[mikl*j+2]; + } + } + fijkl += nijk; + gctr += mik; + } + break; + case 5: + for (l = 0; l < ml; l++) { + for (k = 0; k < mk; k++) { + pijkl = fijkl + k * nij; + pgctr = gctr + k * mi; +#pragma GCC ivdep + for (j = 0; j < mj; j++) { + pijkl[ni*j+0] = pgctr[mikl*j+0]; + pijkl[ni*j+1] = pgctr[mikl*j+1]; + pijkl[ni*j+2] = pgctr[mikl*j+2]; + pijkl[ni*j+3] = pgctr[mikl*j+3]; + pijkl[ni*j+4] = pgctr[mikl*j+4]; + } + } + fijkl += nijk; + gctr += mik; + } + break; + case 6: + for (l = 0; l < ml; l++) { + for (k = 0; k < mk; k++) { + pijkl = fijkl + k * nij; + pgctr = gctr + k * mi; +#pragma GCC ivdep + for (j = 0; j < mj; j++) { + pijkl[ni*j+0] = pgctr[mikl*j+0]; + pijkl[ni*j+1] = pgctr[mikl*j+1]; + pijkl[ni*j+2] = pgctr[mikl*j+2]; + pijkl[ni*j+3] = pgctr[mikl*j+3]; + pijkl[ni*j+4] = pgctr[mikl*j+4]; + pijkl[ni*j+5] = pgctr[mikl*j+5]; + } + } + fijkl += nijk; + gctr += mik; + } + break; + case 7: + for (l = 0; l < ml; l++) { + for (k = 0; k < mk; k++) { + pijkl = fijkl + k * nij; + pgctr = gctr + k * mi; +#pragma GCC ivdep + for (j = 0; j < mj; j++) { + pijkl[ni*j+0] = pgctr[mikl*j+0]; + pijkl[ni*j+1] = pgctr[mikl*j+1]; + pijkl[ni*j+2] = pgctr[mikl*j+2]; + pijkl[ni*j+3] = pgctr[mikl*j+3]; + pijkl[ni*j+4] = pgctr[mikl*j+4]; + pijkl[ni*j+5] = pgctr[mikl*j+5]; + pijkl[ni*j+6] = pgctr[mikl*j+6]; + } + } + fijkl += nijk; + gctr += mik; + } + break; + default: + for (l = 0; l < ml; l++) { + for (k = 0; k < mk; k++) { + pijkl = fijkl + k * nij; + pgctr = gctr + k * mi; + for (j = 0; j < mj; j++) { +#pragma GCC ivdep + for (i = 0; i < mi; i++) { + pijkl[ni*j+i] = pgctr[mikl*j+i]; + } + } + } + fijkl += nijk; + gctr += mik; + } + } +} + +static void zcopy_iklj(dtype *fijkl, dtype *gctrR, dtype *gctrI, + const FINT ni, const FINT nj, const FINT nk, const FINT nl, + const FINT mi, const FINT mj, const FINT mk, const FINT ml) +{ + size_t nij = ni * nj; + size_t nijk = nij * nk; + size_t mik = mi * mk; + size_t mikl = mik * ml; + FINT i, j, k, l; + dtype *pijkl; + dtype *pgctrR, *pgctrI; + + for (l = 0; l < ml; l++) { + for (k = 0; k < mk; k++) { + pijkl = (dtype *)(fijkl + k * nij); + pgctrR = gctrR + k * mi; + pgctrI = gctrI + k * mi; + for (j = 0; j < mj; j++) { +#pragma GCC ivdep + for (i = 0; i < mi; i++) { + pijkl[(j*ni+i)*OF_CMPLX ] = pgctrR[j*mikl+i]; + pijkl[(j*ni+i)*OF_CMPLX+1] = pgctrI[j*mikl+i]; + } + } + } + fijkl += nijk; + gctrR += mik; + gctrI += mik; + } +} + +void c2s_dset0(dtype *out, FINT *dims, FINT *counts) +{ + FINT ni = dims[0]; + FINT nj = dims[1]; + FINT nk = dims[2]; + size_t nij = ni * nj; + size_t nijk = nij * nk; + FINT i, j, k, l; + if (dims == counts) { + for (i = 0; i < nijk * counts[3]; i++) { + out[i] = 0; + } + return; + } + FINT di = counts[0]; + FINT dj = counts[1]; + FINT dk = counts[2]; + FINT dl = counts[3]; + dtype *pout; + for (l = 0; l < dl; l++) { + for (k = 0; k < dk; k++) { + pout = out + k * nij; + for (j = 0; j < dj; j++) { + for (i = 0; i < di; i++) { + pout[j*ni+i] = 0; + } } + } + out += nijk; + } +} +void c2s_zset0(dtype *out, FINT *dims, FINT *counts) +{ + FINT ni = dims[0]; + FINT nj = dims[1]; + FINT nk = dims[2]; + size_t nij = ni * nj; + size_t nijk = nij * nk; + FINT i, j, k, l; + if (dims == counts) { + for (i = 0; i < nijk * counts[3]; i++) { + out[i] = 0; + } + return; + } + FINT di = counts[0]; + FINT dj = counts[1]; + FINT dk = counts[2]; + FINT dl = counts[3]; + dtype *pout; + for (l = 0; l < dl; l++) { + for (k = 0; k < dk; k++) { + pout = out + k * nij; + for (j = 0; j < dj; j++) { + for (i = 0; i < di; i++) { + pout[j*ni+i] = 0; + } } + } + out += nijk; + } +} + +void c2s_grids_dset0(dtype *out, FINT *dims, FINT *counts) +{ + FINT counts1[4] = {counts[2], counts[0], counts[1], counts[3]}; + FINT dims1[4] = {dims[2], dims[0], dims[1],dims [3]}; + c2s_dset0(out, dims1, counts1); +} + +void c2s_grids_zset0(dtype *out, FINT *dims, FINT *counts) +{ + FINT counts1[4] = {counts[2], counts[0], counts[1], counts[3]}; + FINT dims1[4] = {dims[2], dims[0], dims[1],dims [3]}; + c2s_zset0(out, dims1, counts1); +} + + +static dtype *sph2e_inner(dtype *gsph, dtype *gcart, + FINT l, FINT nbra, FINT ncall, FINT sizsph, FINT sizcart) +{ + FINT n; + switch (l) { +#ifdef PYPZPX + case 0: + return gcart; + case 1: + for (n = 0; n < ncall; n++) { + p_ket_cart2spheric(gsph+n*sizsph, gcart+n*sizcart, nbra, nbra, l); + } + break; +#else + case 0: case 1: + return gcart; +#endif + case 2: + for (n = 0; n < ncall; n++) { + d_ket_cart2spheric(gsph+n*sizsph, gcart+n*sizcart, nbra, nbra, l); + } + break; + case 3: + for (n = 0; n < ncall; n++) { + f_ket_cart2spheric(gsph+n*sizsph, gcart+n*sizcart, nbra, nbra, l); + } + break; + case 4: + for (n = 0; n < ncall; n++) { + g_ket_cart2spheric(gsph+n*sizsph, gcart+n*sizcart, nbra, nbra, l); + } + break; + default: + for (n = 0; n < ncall; n++) { + a_ket_cart2spheric(gsph+n*sizsph, gcart+n*sizcart, nbra, nbra, l); + } + } + return gsph; +} + + +void c2s_sph_1e(dtype *opij, dtype *gctr, FINT *dims, + CINTEnvVars *envs, dtype *cache) +{ + FINT i_l = envs->i_l; + FINT j_l = envs->j_l; + FINT i_ctr = envs->x_ctr[0]; + FINT j_ctr = envs->x_ctr[1]; + FINT di = i_l * 2 + 1; + FINT dj = j_l * 2 + 1; + FINT ni = dims[0]; + FINT nj = dims[1]; + FINT ofj = ni * dj; + FINT nfi = envs->nfi; + FINT nf = envs->nf; + FINT ic, jc; + FINT buflen = nfi*dj; + //dtype *buf1, *buf2; + //MALLOC_INSTACK(buf1, buflen); + //MALLOC_INSTACK(buf2, buflen); + MALLOC(dtype, buf1); + MALLOC(dtype, buf2); + dtype *pij; + dtype *tmp1; + + for (jc = 0; jc < j_ctr; jc++) { + for (ic = 0; ic < i_ctr; ic++) { + tmp1 = (c2s_ket_sph[j_l])(buf1, gctr, nfi, nfi, j_l); + tmp1 = (c2s_bra_sph[i_l])(buf2, dj, tmp1, i_l); + pij = opij + ofj * jc + di * ic; + dcopy_ij(pij, tmp1, ni, nj, di, dj); + gctr += nf; + } } +} + + +// return hack start +void c2s_sf_1e(dtype *opij, dtype *gctr, FINT *dims, + CINTEnvVars *envs, dtype *cache) +{ + //return; // TODO; + FINT *shls = envs->shls; + FINT *bas = envs->bas; + FINT i_sh = shls[0]; + FINT j_sh = shls[1]; + FINT i_l = envs->i_l; + FINT j_l = envs->j_l; + FINT i_kp = bas(KAPPA_OF, i_sh); + FINT j_kp = bas(KAPPA_OF, j_sh); + FINT i_ctr = envs->x_ctr[0]; + FINT j_ctr = envs->x_ctr[1]; + FINT di = _len_spinor(i_kp, i_l); + FINT dj = _len_spinor(j_kp, j_l); + FINT ni = dims[0]; + FINT nj = dims[1]; + FINT ofj = ni * dj; + FINT nfj = envs->nfj; + FINT nf2j = nfj + nfj; + FINT nf = envs->nf; + FINT ic, jc; + /*dtype *tmp1R, *tmp1I, *tmp2R, *tmp2I; + MALLOC_INSTACK(tmp1R, di*nf2j); + MALLOC_INSTACK(tmp1I, di*nf2j); + MALLOC_INSTACK(tmp2R, di*dj); + MALLOC_INSTACK(tmp2I, di*dj);*/ + MALLOC(dtype, tmp1R); + MALLOC(dtype, tmp1I); + MALLOC(dtype, tmp2R); + MALLOC(dtype, tmp2I); + + for (jc = 0; jc < j_ctr; jc++) { + for (ic = 0; ic < i_ctr; ic++) { + a_bra_cart2spinor_sf(tmp1R, tmp1I, NULL, NULL, NULL, gctr, nfj, i_kp, i_l); + a_ket_cart2spinor(tmp2R, tmp2I, tmp1R, tmp1I, di, j_kp, j_l); + zcopy_ij(opij+ofj*jc+di*ic, tmp2R, tmp2I, ni, nj, di, dj); + gctr += nf; + } } +} + +void c2s_sf_1ei(dtype *opij, dtype *gctr, FINT *dims, + CINTEnvVars *envs, dtype *cache) { + FINT *shls = envs->shls; + FINT *bas = envs->bas; + FINT i_sh = shls[0]; + FINT j_sh = shls[1]; + FINT i_l = envs->i_l; + FINT j_l = envs->j_l; + FINT i_kp = bas(KAPPA_OF, i_sh); + FINT j_kp = bas(KAPPA_OF, j_sh); + FINT i_ctr = envs->x_ctr[0]; + FINT j_ctr = envs->x_ctr[1]; + FINT di = _len_spinor(i_kp, i_l); + FINT dj = _len_spinor(j_kp, j_l); + FINT ni = dims[0]; + FINT nj = dims[1]; + FINT ofj = ni * dj; + FINT nfj = envs->nfj; + FINT nf2j = nfj + nfj; + FINT nf = envs->nf; + FINT ic, jc; + /*dtype *tmp1R, *tmp1I, *tmp2R, *tmp2I; + MALLOC_INSTACK(tmp1R, di*nf2j); + MALLOC_INSTACK(tmp1I, di*nf2j); + MALLOC_INSTACK(tmp2R, di*dj); + MALLOC_INSTACK(tmp2I, di*dj);*/ + MALLOC(dtype, tmp1R); + MALLOC(dtype, tmp1I); + MALLOC(dtype, tmp2R); + MALLOC(dtype, tmp2I); + + for (jc = 0; jc < j_ctr; jc++) { + for (ic = 0; ic < i_ctr; ic++) { + a_bra_cart2spinor_sf(tmp1R, tmp1I, NULL, NULL, NULL, gctr, nfj, i_kp, i_l); + a_iket_cart2spinor(tmp2R, tmp2I, tmp1R, tmp1I, di, j_kp, j_l); + zcopy_ij(opij+ofj*jc+di*ic, tmp2R, tmp2I, ni, nj, di, dj); + gctr += nf; + } } +} + + +void c2s_si_1e(dtype *opij, dtype *gctr, FINT *dims, + CINTEnvVars *envs, dtype *cache) +{ + //return; + FINT *shls = envs->shls; + FINT *bas = envs->bas; + FINT i_sh = shls[0]; + FINT j_sh = shls[1]; + FINT i_l = envs->i_l; + FINT j_l = envs->j_l; + FINT i_kp = bas(KAPPA_OF, i_sh); + FINT j_kp = bas(KAPPA_OF, j_sh); + FINT i_ctr = envs->x_ctr[0]; + FINT j_ctr = envs->x_ctr[1]; + FINT di = _len_spinor(i_kp, i_l); + FINT dj = _len_spinor(j_kp, j_l); + FINT ni = dims[0]; + FINT nj = dims[1]; + FINT ofj = ni * dj; + FINT nfi = envs->nfi; + FINT nfj = envs->nfj; + FINT nf2i = nfi + nfi; + FINT nf2j = nfj + nfj; + FINT nf = envs->nf; + FINT ic, jc; + dtype *gc_x = gctr; + dtype *gc_y = gc_x + nf * i_ctr * j_ctr; + dtype *gc_z = gc_y + nf * i_ctr * j_ctr; + dtype *gc_1 = gc_z + nf * i_ctr * j_ctr; + /*dtype *tmp1R, *tmp1I, *tmp2R, *tmp2I; + MALLOC_INSTACK(tmp1R, di*nf2j); + MALLOC_INSTACK(tmp1I, di*nf2j); + MALLOC_INSTACK(tmp2R, di*dj); + MALLOC_INSTACK(tmp2I, di*dj);*/ + MALLOC(dtype, tmp1R); + MALLOC(dtype, tmp1I); + MALLOC(dtype, tmp2R); + MALLOC(dtype, tmp2I); + + for (jc = 0; jc < j_ctr; jc++) { + for (ic = 0; ic < i_ctr; ic++) { + a_bra_cart2spinor_si(tmp1R, tmp1I, gc_x, gc_y, gc_z, gc_1, nfj, i_kp, i_l); + a_ket_cart2spinor(tmp2R, tmp2I, tmp1R, tmp1I, di, j_kp, j_l); + zcopy_ij(opij+ofj*jc+di*ic, tmp2R, tmp2I, ni, nj, di, dj); + + gc_x += nf; + gc_y += nf; + gc_z += nf; + gc_1 += nf; + } } +} +void c2s_si_1ei(dtype *opij, dtype *gctr, FINT *dims, + CINTEnvVars *envs, dtype *cache) +{ + FINT *shls = envs->shls; + FINT *bas = envs->bas; + FINT i_sh = shls[0]; + FINT j_sh = shls[1]; + FINT i_l = envs->i_l; + FINT j_l = envs->j_l; + FINT i_kp = bas(KAPPA_OF, i_sh); + FINT j_kp = bas(KAPPA_OF, j_sh); + FINT i_ctr = envs->x_ctr[0]; + FINT j_ctr = envs->x_ctr[1]; + FINT di = _len_spinor(i_kp, i_l); + FINT dj = _len_spinor(j_kp, j_l); + FINT ni = dims[0]; + FINT nj = dims[1]; + FINT ofj = ni * dj; + FINT nfi = envs->nfi; + FINT nfj = envs->nfj; + FINT nf2i = nfi + nfi; + FINT nf2j = nfj + nfj; + FINT nf = envs->nf; + FINT ic, jc; + dtype *gc_x = gctr; + dtype *gc_y = gc_x + nf * i_ctr * j_ctr; + dtype *gc_z = gc_y + nf * i_ctr * j_ctr; + dtype *gc_1 = gc_z + nf * i_ctr * j_ctr; + /*dtype *tmp1R, *tmp1I, *tmp2R, *tmp2I; + return; + MALLOC_INSTACK(tmp1R, di*nf2j); + MALLOC_INSTACK(tmp1I, di*nf2j); + MALLOC_INSTACK(tmp2R, di*dj); + MALLOC_INSTACK(tmp2I, di*dj);*/ + MALLOC(dtype, tmp1R); + MALLOC(dtype, tmp1I); + MALLOC(dtype, tmp2R); + MALLOC(dtype, tmp2I); + + for (jc = 0; jc < j_ctr; jc++) { + for (ic = 0; ic < i_ctr; ic++) { + a_bra_cart2spinor_si(tmp1R, tmp1I, gc_x, gc_y, gc_z, gc_1, nfj, i_kp, i_l); + a_iket_cart2spinor(tmp2R, tmp2I, tmp1R, tmp1I, di, j_kp, j_l); + zcopy_ij(opij+ofj*jc+di*ic, tmp2R, tmp2I, ni, nj, di, dj); + + gc_x += nf; + gc_y += nf; + gc_z += nf; + gc_1 += nf; + } } +} + +void c2s_sph_1e_grids(dtype *out, dtype *gctr, FINT *dims, + CINTEnvVars *envs, dtype *cache) +{ + FINT ngrids = envs->ngrids; + FINT i_l = envs->i_l; + FINT j_l = envs->j_l; + FINT i_ctr = envs->x_ctr[0]; + FINT j_ctr = envs->x_ctr[1]; + FINT di = i_l * 2 + 1; + FINT dj = j_l * 2 + 1; + FINT ni = dims[0]; + FINT nj = dims[1]; + size_t Ng = dims[2]; + FINT ofj = ni * dj; + FINT nfi = envs->nfi; + FINT nf = envs->nf; + FINT ic, jc, grids_offset; + FINT bgrids, bgrids_di, bgrids_nfi; + FINT buflen = GRID_BLKSIZE * nfi * dj; + /*dtype *buf1, *buf2; + //return; + MALLOC_ALIGN8_INSTACK(buf1, buflen); + MALLOC_ALIGN8_INSTACK(buf2, buflen);*/ + MALLOC(dtype, buf1); + MALLOC(dtype, buf2); + dtype *pij; + dtype *tmp1; + + for (grids_offset = 0; grids_offset < ngrids; grids_offset += GRID_BLKSIZE) { + bgrids = MIN(ngrids - grids_offset, GRID_BLKSIZE); + bgrids_di = bgrids * di; + bgrids_nfi = bgrids * nfi; + for (jc = 0; jc < j_ctr; jc++) { + for (ic = 0; ic < i_ctr; ic++) { + tmp1 = (c2s_ket_sph[j_l])(buf1, gctr, bgrids_nfi, bgrids_nfi, j_l); + tmp1 = sph2e_inner(buf2, tmp1, i_l, bgrids, dj, bgrids_di, bgrids_nfi); + pij = out + Ng * (ofj * jc + di * ic) + grids_offset; + dcopy_grids_ij(pij, tmp1, Ng, ni, nj, bgrids, di, dj); + gctr += bgrids * nf; + } } + } +} + +void c2s_cart_1e_grids(dtype *out, dtype *gctr, FINT *dims, + CINTEnvVars *envs, dtype *cache) +{ + FINT ngrids = envs->ngrids; + FINT i_ctr = envs->x_ctr[0]; + FINT j_ctr = envs->x_ctr[1]; + FINT ni = dims[0]; + FINT nj = dims[1]; + size_t Ng = dims[2]; + FINT nfi = envs->nfi; + FINT nfj = envs->nfj; + FINT nf = envs->nf; + FINT ofj = ni * nfj; + FINT ic, jc, grids_offset; + FINT bgrids; + dtype *pij; + + for (grids_offset = 0; grids_offset < ngrids; grids_offset += GRID_BLKSIZE) { + bgrids = MIN(ngrids - grids_offset, GRID_BLKSIZE); + for (jc = 0; jc < j_ctr; jc++) { + for (ic = 0; ic < i_ctr; ic++) { + pij = out + Ng * (ofj * jc + nfi * ic) + grids_offset; + dcopy_grids_ij(pij, gctr, Ng, ni, nj, bgrids, nfi, nfj); + gctr += bgrids * nf; + } } + } +} + + +void c2s_sf_1e_grids(dtype *out, dtype *gctr, FINT *dims, + CINTEnvVars *envs, dtype *cache) +{ + FINT ngrids = envs->ngrids; + FINT *shls = envs->shls; + FINT *bas = envs->bas; + FINT i_sh = shls[0]; + FINT j_sh = shls[1]; + FINT i_l = envs->i_l; + FINT j_l = envs->j_l; + FINT i_kp = bas(KAPPA_OF, i_sh); + FINT j_kp = bas(KAPPA_OF, j_sh); + FINT i_ctr = envs->x_ctr[0]; + FINT j_ctr = envs->x_ctr[1]; + FINT di = _len_spinor(i_kp, i_l); + FINT dj = _len_spinor(j_kp, j_l); + FINT ni = dims[0]; + FINT nj = dims[1]; + size_t Ng = dims[2]; + FINT ofj = ni * dj; + FINT nfi = envs->nfi; + FINT nfj = envs->nfj; + FINT nf2j = nfj + nfj; + FINT nf = envs->nf; + FINT ic, jc, grids_offset; + FINT bgrids, bgrids_di; + FINT buflen = GRID_BLKSIZE * di * nf2j; + /*dtype *tmp1R, *tmp1I, *tmp2R, *tmp2I; + return; + MALLOC_ALIGN8_INSTACK(tmp1R, buflen); + MALLOC_ALIGN8_INSTACK(tmp1I, buflen); + MALLOC_ALIGN8_INSTACK(tmp2R, buflen); + MALLOC_ALIGN8_INSTACK(tmp2I, buflen);*/ + MALLOC(dtype, tmp1R); + MALLOC(dtype, tmp1I); + MALLOC(dtype, tmp2R); + MALLOC(dtype, tmp2I); + dtype *pij; + + for (grids_offset = 0; grids_offset < ngrids; grids_offset += GRID_BLKSIZE) { + bgrids = MIN(ngrids - grids_offset, GRID_BLKSIZE); + bgrids_di = bgrids * di; + for (jc = 0; jc < j_ctr; jc++) { + for (ic = 0; ic < i_ctr; ic++) { + a_bra1_cart2spinor_sf(tmp1R, tmp1I, NULL, NULL, NULL, gctr, bgrids, nfj, i_kp, i_l); + a_ket_cart2spinor(tmp2R, tmp2I, tmp1R, tmp1I, bgrids_di, j_kp, j_l); + pij = out + Ng * (ofj * jc + di * ic) + grids_offset; + zcopy_grids_ij(pij, tmp2R, tmp2I, Ng, ni, nj, bgrids, di, dj); + gctr += bgrids * nf; + } } + } +} +void c2s_sf_1e_gridsi(dtype *out, dtype *gctr, FINT *dims, + CINTEnvVars *envs, dtype *cache) +{ + FINT ngrids = envs->ngrids; + FINT *shls = envs->shls; + FINT *bas = envs->bas; + FINT i_sh = shls[0]; + FINT j_sh = shls[1]; + FINT i_l = envs->i_l; + FINT j_l = envs->j_l; + FINT i_kp = bas(KAPPA_OF, i_sh); + FINT j_kp = bas(KAPPA_OF, j_sh); + FINT i_ctr = envs->x_ctr[0]; + FINT j_ctr = envs->x_ctr[1]; + FINT di = _len_spinor(i_kp, i_l); + FINT dj = _len_spinor(j_kp, j_l); + FINT ni = dims[0]; + FINT nj = dims[1]; + size_t Ng = dims[2]; + FINT ofj = ni * dj; + FINT nfi = envs->nfi; + FINT nfj = envs->nfj; + FINT nf2j = nfj + nfj; + FINT nf = envs->nf; + FINT ic, jc, grids_offset; + FINT bgrids, bgrids_di; + FINT buflen = GRID_BLKSIZE * di * nf2j; + /*dtype *tmp1R, *tmp1I, *tmp2R, *tmp2I; + return; + MALLOC_ALIGN8_INSTACK(tmp1R, buflen); + MALLOC_ALIGN8_INSTACK(tmp1I, buflen); + MALLOC_ALIGN8_INSTACK(tmp2R, buflen); + MALLOC_ALIGN8_INSTACK(tmp2I, buflen);*/ + MALLOC(dtype, tmp1R); + MALLOC(dtype, tmp1I); + MALLOC(dtype, tmp2R); + MALLOC(dtype, tmp2I); + dtype *pij; + + for (grids_offset = 0; grids_offset < ngrids; grids_offset += GRID_BLKSIZE) { + bgrids = MIN(ngrids - grids_offset, GRID_BLKSIZE); + bgrids_di = bgrids * di; + for (jc = 0; jc < j_ctr; jc++) { + for (ic = 0; ic < i_ctr; ic++) { + a_bra1_cart2spinor_sf(tmp1R, tmp1I, NULL, NULL, NULL, gctr, bgrids, nfj, i_kp, i_l); + a_iket_cart2spinor(tmp2R, tmp2I, tmp1R, tmp1I, bgrids_di, j_kp, j_l); + pij = out + Ng * (ofj * jc + di * ic) + grids_offset; + zcopy_grids_ij(pij, tmp2R, tmp2I, Ng, ni, nj, bgrids, di, dj); + gctr += bgrids * nf; + } } + } +} +void c2s_si_1e_grids(dtype *out, dtype *gctr, FINT *dims, + CINTEnvVars *envs, dtype *cache) +{ + FINT ngrids = envs->ngrids; + FINT *shls = envs->shls; + FINT *bas = envs->bas; + FINT i_sh = shls[0]; + FINT j_sh = shls[1]; + FINT i_l = envs->i_l; + FINT j_l = envs->j_l; + FINT i_kp = bas(KAPPA_OF, i_sh); + FINT j_kp = bas(KAPPA_OF, j_sh); + FINT i_ctr = envs->x_ctr[0]; + FINT j_ctr = envs->x_ctr[1]; + FINT di = _len_spinor(i_kp, i_l); + FINT dj = _len_spinor(j_kp, j_l); + FINT ni = dims[0]; + FINT nj = dims[1]; + size_t Ng = dims[2]; + FINT ofj = ni * dj; + FINT nfi = envs->nfi; + FINT nfj = envs->nfj; + FINT nf2i = nfi + nfi; + FINT nf2j = nfj + nfj; + FINT nf = envs->nf; + FINT ic, jc, grids_offset; + FINT bgrids, bgrids_di, bgrids_nf; + dtype *gc_x = gctr; + dtype *gc_y = gc_x + ngrids * nf * i_ctr * j_ctr; + dtype *gc_z = gc_y + ngrids * nf * i_ctr * j_ctr; + dtype *gc_1 = gc_z + ngrids * nf * i_ctr * j_ctr; + FINT buflen = GRID_BLKSIZE * di * nf2j; + /*dtype *tmp1R, *tmp1I, *tmp2R, *tmp2I; + return; + MALLOC_ALIGN8_INSTACK(tmp1R, buflen); + MALLOC_ALIGN8_INSTACK(tmp1I, buflen); + MALLOC_ALIGN8_INSTACK(tmp2R, buflen); + MALLOC_ALIGN8_INSTACK(tmp2I, buflen);*/ + MALLOC(dtype, tmp1R); + MALLOC(dtype, tmp1I); + MALLOC(dtype, tmp2R); + MALLOC(dtype, tmp2I); + dtype *pij; + + for (grids_offset = 0; grids_offset < ngrids; grids_offset += GRID_BLKSIZE) { + bgrids = MIN(ngrids - grids_offset, GRID_BLKSIZE); + bgrids_di = bgrids * di; + bgrids_nf = bgrids * nf; + for (jc = 0; jc < j_ctr; jc++) { + for (ic = 0; ic < i_ctr; ic++) { + a_bra1_cart2spinor_si(tmp1R, tmp1I, gc_x, gc_y, gc_z, gc_1, bgrids, nfj, i_kp, i_l); + a_ket_cart2spinor(tmp2R, tmp2I, tmp1R, tmp1I, bgrids_di, j_kp, j_l); + pij = out + Ng * (ofj * jc + di * ic) + grids_offset; + zcopy_grids_ij(pij, tmp2R, tmp2I, Ng, ni, nj, bgrids, di, dj); + gc_x += bgrids_nf; + gc_y += bgrids_nf; + gc_z += bgrids_nf; + gc_1 += bgrids_nf; + } } + } +} +void c2s_si_1e_gridsi(dtype *out, dtype *gctr, FINT *dims, + CINTEnvVars *envs, dtype *cache) +{ + FINT ngrids = envs->ngrids; + FINT *shls = envs->shls; + FINT *bas = envs->bas; + FINT i_sh = shls[0]; + FINT j_sh = shls[1]; + FINT i_l = envs->i_l; + FINT j_l = envs->j_l; + FINT i_kp = bas(KAPPA_OF, i_sh); + FINT j_kp = bas(KAPPA_OF, j_sh); + FINT i_ctr = envs->x_ctr[0]; + FINT j_ctr = envs->x_ctr[1]; + FINT di = _len_spinor(i_kp, i_l); + FINT dj = _len_spinor(j_kp, j_l); + FINT ni = dims[0]; + FINT nj = dims[1]; + size_t Ng = dims[2]; + FINT ofj = ni * dj; + FINT nfi = envs->nfi; + FINT nfj = envs->nfj; + FINT nf2i = nfi + nfi; + FINT nf2j = nfj + nfj; + FINT nf = envs->nf; + FINT ic, jc, grids_offset; + FINT bgrids, bgrids_di, bgrids_nf; + dtype *gc_x = gctr; + dtype *gc_y = gc_x + ngrids * nf * i_ctr * j_ctr; + dtype *gc_z = gc_y + ngrids * nf * i_ctr * j_ctr; + dtype *gc_1 = gc_z + ngrids * nf * i_ctr * j_ctr; + FINT buflen = GRID_BLKSIZE * di * nf2j; + /*dtype *tmp1R, *tmp1I, *tmp2R, *tmp2I; + return; + MALLOC_ALIGN8_INSTACK(tmp1R, buflen); + MALLOC_ALIGN8_INSTACK(tmp1I, buflen); + MALLOC_ALIGN8_INSTACK(tmp2R, buflen); + MALLOC_ALIGN8_INSTACK(tmp2I, buflen);*/ + MALLOC(dtype, tmp1R); + MALLOC(dtype, tmp1I); + MALLOC(dtype, tmp2R); + MALLOC(dtype, tmp2I); + dtype *pij; + + for (grids_offset = 0; grids_offset < ngrids; grids_offset += GRID_BLKSIZE) { + bgrids = MIN(ngrids - grids_offset, GRID_BLKSIZE); + bgrids_di = bgrids * di; + bgrids_nf = bgrids * nf; + for (jc = 0; jc < j_ctr; jc++) { + for (ic = 0; ic < i_ctr; ic++) { + a_bra1_cart2spinor_si(tmp1R, tmp1I, gc_x, gc_y, gc_z, gc_1, bgrids, nfj, i_kp, i_l); + a_iket_cart2spinor(tmp2R, tmp2I, tmp1R, tmp1I, bgrids_di, j_kp, j_l); + pij = out + Ng * (ofj * jc + di * ic) + grids_offset; + zcopy_grids_ij(pij, tmp2R, tmp2I, Ng, ni, nj, bgrids, di, dj); + gc_x += bgrids_nf; + gc_y += bgrids_nf; + gc_z += bgrids_nf; + gc_1 += bgrids_nf; + } } + } +} + + +void c2s_sph_2e1(dtype *out, dtype *gctr, FINT *dims, + CINTEnvVars *envs, dtype *cache) +{ + FINT i_l = envs->i_l; + FINT j_l = envs->j_l; + FINT k_l = envs->k_l; + FINT l_l = envs->l_l; + FINT i_ctr = envs->x_ctr[0]; + FINT j_ctr = envs->x_ctr[1]; + FINT k_ctr = envs->x_ctr[2]; + FINT l_ctr = envs->x_ctr[3]; + FINT di = i_l * 2 + 1; + FINT dj = j_l * 2 + 1; + FINT dk = k_l * 2 + 1; + FINT dl = l_l * 2 + 1; + FINT ni = dims[0]; + FINT nj = dims[1]; + FINT nk = dims[2]; + FINT nl = dims[3]; + FINT nfi = envs->nfi; + FINT nfk = envs->nfk; + FINT nfl = envs->nfl; + FINT nfik = nfi * nfk; + FINT nfikl = nfik * nfl; + FINT dlj = dl * dj; + FINT nf = envs->nf; + FINT ofj = ni * dj; + FINT ofk = ni * nj * dk; + FINT ofl = ni * nj * nk * dl; + FINT ic, jc, kc, lc; + FINT buflen = nfikl*dj; + //dtype *buf1; + //MALLOC_INSTACK(buf1, buflen*4); + MALLOC(dtype, buf1); + dtype *buf2 = buf1 + buflen; + dtype *buf3 = buf2 + buflen; + dtype *buf4 = buf3 + buflen; + dtype *pout, *tmp1; + + for (lc = 0; lc < l_ctr; lc++) { + for (kc = 0; kc < k_ctr; kc++) { + for (jc = 0; jc < j_ctr; jc++) { + for (ic = 0; ic < i_ctr; ic++) { + tmp1 = (c2s_ket_sph[j_l])(buf1, gctr, nfikl, nfikl, j_l); + tmp1 = sph2e_inner(buf2, tmp1, l_l, nfik, dj, nfik*dl, nfikl); + tmp1 = sph2e_inner(buf3, tmp1, k_l, nfi, dlj, nfi*dk, nfik); + + tmp1 = (c2s_bra_sph[i_l])(buf4, dk*dlj, tmp1, i_l); + + pout = out + ofl * lc + ofk * kc + ofj * jc + di * ic; + dcopy_iklj(pout, tmp1, ni, nj, nk, nl, di, dj, dk, dl); + gctr += nf; + } } } } +} + + +void c2s_sf_2e1(dtype *opij, dtype *gctr, FINT *dims, + CINTEnvVars *envs, dtype *cache) +{ + FINT *shls = envs->shls; + FINT *bas = envs->bas; + FINT i_sh = shls[0]; + FINT j_sh = shls[1]; + FINT i_l = envs->i_l; + FINT j_l = envs->j_l; + FINT i_kp = bas(KAPPA_OF, i_sh); + FINT j_kp = bas(KAPPA_OF, j_sh); + FINT i_ctr = envs->x_ctr[0]; + FINT j_ctr = envs->x_ctr[1]; + FINT k_ctr = envs->x_ctr[2]; + FINT l_ctr = envs->x_ctr[3]; + FINT di = _len_spinor(i_kp, i_l); + FINT dj = _len_spinor(j_kp, j_l); + FINT nfj = envs->nfj; + FINT nfk = envs->nfk; + FINT nfl = envs->nfl; + FINT nf2j = nfj + nfj; + FINT nf = envs->nf; + FINT no = di * nfk * nfl * dj; + FINT d_i = di * nfk * nfl; + FINT d_j = nfk * nfl * nfj; + FINT i; + FINT buflen = di * nfk * nfl * nf2j; + /*dtype *tmp1R, *tmp1I; + return; + MALLOC_INSTACK(tmp1R, buflen); + MALLOC_INSTACK(tmp1I, buflen);*/ + MALLOC(dtype, tmp1R); + MALLOC(dtype, tmp1I); + + for (i = 0; i < i_ctr * j_ctr * k_ctr * l_ctr; i++) { + a_bra_cart2spinor_sf(tmp1R, tmp1I, NULL, NULL, NULL, gctr, d_j, i_kp, i_l); + a_ket_cart2spinor(opij, opij+no, tmp1R, tmp1I, d_i, j_kp, j_l); + gctr += nf; + opij += no * OF_CMPLX; + } +} + +void c2s_sf_2e1i(dtype *opij, dtype *gctr, FINT *dims, + CINTEnvVars *envs, dtype *cache) +{ + FINT *shls = envs->shls; + FINT *bas = envs->bas; + FINT i_sh = shls[0]; + FINT j_sh = shls[1]; + FINT i_l = envs->i_l; + FINT j_l = envs->j_l; + FINT i_kp = bas(KAPPA_OF, i_sh); + FINT j_kp = bas(KAPPA_OF, j_sh); + FINT i_ctr = envs->x_ctr[0]; + FINT j_ctr = envs->x_ctr[1]; + FINT k_ctr = envs->x_ctr[2]; + FINT l_ctr = envs->x_ctr[3]; + FINT di = _len_spinor(i_kp, i_l); + FINT dj = _len_spinor(j_kp, j_l); + FINT nfj = envs->nfj; + FINT nfk = envs->nfk; + FINT nfl = envs->nfl; + FINT nf2j = nfj + nfj; + FINT nf = envs->nf; + FINT no = di * nfk * nfl * dj; + FINT d_i = di * nfk * nfl; + FINT d_j = nfk * nfl * nfj; + FINT i; + FINT len1 = di * nfk * nfl * nf2j; + /*dtype *tmp1R, *tmp1I; + return; + MALLOC_INSTACK(tmp1R, len1); + MALLOC_INSTACK(tmp1I, len1);*/ + MALLOC(dtype, tmp1R); + MALLOC(dtype, tmp1I); + + for (i = 0; i < i_ctr * j_ctr * k_ctr * l_ctr; i++) { + a_bra_cart2spinor_sf(tmp1R, tmp1I, NULL, NULL, NULL, gctr, d_j, i_kp, i_l); + a_iket_cart2spinor(opij, opij+no, tmp1R, tmp1I, d_i, j_kp, j_l); + gctr += nf; + opij += no * OF_CMPLX; + } +} + + +void c2s_sf_2e2(dtype *fijkl, dtype *opij, FINT *dims, + CINTEnvVars *envs, dtype *cache) +{ + FINT *shls = envs->shls; + FINT *bas = envs->bas; + FINT i_sh = shls[0]; + FINT j_sh = shls[1]; + FINT k_sh = shls[2]; + FINT l_sh = shls[3]; + FINT i_l = envs->i_l; + FINT j_l = envs->j_l; + FINT k_l = envs->k_l; + FINT l_l = envs->l_l; + FINT i_kp = bas(KAPPA_OF, i_sh); + FINT j_kp = bas(KAPPA_OF, j_sh); + FINT k_kp = bas(KAPPA_OF, k_sh); + FINT l_kp = bas(KAPPA_OF, l_sh); + FINT i_ctr = envs->x_ctr[0]; + FINT j_ctr = envs->x_ctr[1]; + FINT k_ctr = envs->x_ctr[2]; + FINT l_ctr = envs->x_ctr[3]; + FINT di = _len_spinor(i_kp, i_l); + FINT dj = _len_spinor(j_kp, j_l); + FINT dk = _len_spinor(k_kp, k_l); + FINT dl = _len_spinor(l_kp, l_l); + FINT ni = dims[0]; + FINT nj = dims[1]; + FINT nk = dims[2]; + FINT nl = dims[3]; + FINT nfk = envs->nfk; + FINT nfl = envs->nfl; + FINT nf2k = nfk + nfk; + FINT nf2l = nfl + nfl; + FINT nop = di * nfk * nfl * dj; + FINT ofj = ni * dj; + FINT ofk = ni * nj * dk; + FINT ofl = ni * nj * nk * dl; + FINT ic, jc, kc, lc; + FINT len1 = di * dk * nf2l * dj; + FINT len2 = di * dk * dl * dj; + /*dtype *tmp1R, *tmp1I, *tmp2R, *tmp2I; + return; + MALLOC_INSTACK(tmp1R, len1); + MALLOC_INSTACK(tmp1I, len1); + MALLOC_INSTACK(tmp2R, len2); + MALLOC_INSTACK(tmp2I, len2);*/ + MALLOC(dtype, tmp1R); + MALLOC(dtype, tmp1I); + MALLOC(dtype, tmp2R); + MALLOC(dtype, tmp2I); + dtype *pfijkl; + + for (lc = 0; lc < l_ctr; lc++) { + for (kc = 0; kc < k_ctr; kc++) { + for (jc = 0; jc < j_ctr; jc++) { + for (ic = 0; ic < i_ctr; ic++) { + a_bra1_cart2spinor_zf(tmp1R, tmp1I, NULL, NULL, NULL, opij, di, nfl*dj, k_kp, k_l); + a_ket1_cart2spinor(tmp2R, tmp2I, tmp1R, tmp1I, di*dk, dj, l_kp, l_l); + pfijkl = fijkl + (ofl * lc + ofk * kc + ofj * jc + di * ic); + zcopy_iklj(pfijkl, tmp2R, tmp2I, ni, nj, nk, nl, di, dj, dk, dl); + opij += nop * OF_CMPLX; + } } } } +} +void c2s_sf_2e2i(dtype *fijkl, dtype *opij, FINT *dims, + CINTEnvVars *envs, dtype *cache) +{ + FINT *shls = envs->shls; + FINT *bas = envs->bas; + FINT i_sh = shls[0]; + FINT j_sh = shls[1]; + FINT k_sh = shls[2]; + FINT l_sh = shls[3]; + FINT i_l = envs->i_l; + FINT j_l = envs->j_l; + FINT k_l = envs->k_l; + FINT l_l = envs->l_l; + FINT i_kp = bas(KAPPA_OF, i_sh); + FINT j_kp = bas(KAPPA_OF, j_sh); + FINT k_kp = bas(KAPPA_OF, k_sh); + FINT l_kp = bas(KAPPA_OF, l_sh); + FINT i_ctr = envs->x_ctr[0]; + FINT j_ctr = envs->x_ctr[1]; + FINT k_ctr = envs->x_ctr[2]; + FINT l_ctr = envs->x_ctr[3]; + FINT di = _len_spinor(i_kp, i_l); + FINT dj = _len_spinor(j_kp, j_l); + FINT dk = _len_spinor(k_kp, k_l); + FINT dl = _len_spinor(l_kp, l_l); + FINT ni = dims[0]; + FINT nj = dims[1]; + FINT nk = dims[2]; + FINT nl = dims[3]; + FINT nfk = envs->nfk; + FINT nfl = envs->nfl; + FINT nf2k = nfk + nfk; + FINT nf2l = nfl + nfl; + FINT nop = di * nfk * nfl * dj; + FINT ofj = ni * dj; + FINT ofk = ni * nj * dk; + FINT ofl = ni * nj * nk * dl; + FINT ic, jc, kc, lc; + FINT len2 = di * dk * dl * dj; + FINT len1 = di * dk * nf2l * dj; + /*dtype *tmp1R, *tmp1I, *tmp2R, *tmp2I; + return; + MALLOC_INSTACK(tmp1R, len1); + MALLOC_INSTACK(tmp1I, len1); + MALLOC_INSTACK(tmp2R, len2); + MALLOC_INSTACK(tmp2I, len2);*/ + MALLOC(dtype, tmp1R); + MALLOC(dtype, tmp1I); + MALLOC(dtype, tmp2R); + MALLOC(dtype, tmp2I); + dtype *pfijkl; + + for (lc = 0; lc < l_ctr; lc++) { + for (kc = 0; kc < k_ctr; kc++) { + for (jc = 0; jc < j_ctr; jc++) { + for (ic = 0; ic < i_ctr; ic++) { + a_bra1_cart2spinor_zf(tmp1R, tmp1I, NULL, NULL, NULL, opij, di, nfl*dj, k_kp, k_l); + a_iket1_cart2spinor(tmp2R, tmp2I, tmp1R, tmp1I, di*dk, dj, l_kp, l_l); + pfijkl = fijkl + (ofl * lc + ofk * kc + ofj * jc + di * ic); + zcopy_iklj(pfijkl, tmp2R, tmp2I, ni, nj, nk, nl, di, dj, dk, dl); + opij += nop * OF_CMPLX; + } } } } +} + + +void c2s_si_2e1(dtype *opij, dtype *gctr, FINT *dims, + CINTEnvVars *envs, dtype *cache) +{ + FINT *shls = envs->shls; + FINT *bas = envs->bas; + FINT i_sh = shls[0]; + FINT j_sh = shls[1]; + FINT i_l = envs->i_l; + FINT j_l = envs->j_l; + FINT i_kp = bas(KAPPA_OF, i_sh); + FINT j_kp = bas(KAPPA_OF, j_sh); + FINT i_ctr = envs->x_ctr[0]; + FINT j_ctr = envs->x_ctr[1]; + FINT k_ctr = envs->x_ctr[2]; + FINT l_ctr = envs->x_ctr[3]; + FINT di = _len_spinor(i_kp, i_l); + FINT dj = _len_spinor(j_kp, j_l); + FINT nfi = envs->nfi; + FINT nfj = envs->nfj; + FINT nfk = envs->nfk; + FINT nfl = envs->nfl; + FINT nf2i = nfi + nfi; + FINT nf2j = nfj + nfj; + FINT nf = envs->nf; + FINT no = di * nfk * nfl * dj; + FINT d_i = di * nfk * nfl; + FINT d_j = nfk * nfl * nfj; + FINT i; + dtype *gc_x = gctr; + dtype *gc_y = gc_x + nf * i_ctr * j_ctr * k_ctr * l_ctr; + dtype *gc_z = gc_y + nf * i_ctr * j_ctr * k_ctr * l_ctr; + dtype *gc_1 = gc_z + nf * i_ctr * j_ctr * k_ctr * l_ctr; + FINT len1 = di * nfk * nfl * nf2j; + /*dtype *tmp1R, *tmp1I; + return; + MALLOC_INSTACK(tmp1R, len1); + MALLOC_INSTACK(tmp1I, len1);*/ + MALLOC(dtype, tmp1R); + MALLOC(dtype, tmp1I); + + for (i = 0; i < i_ctr * j_ctr * k_ctr * l_ctr; i++) { + a_bra_cart2spinor_si(tmp1R, tmp1I, gc_x, gc_y, gc_z, gc_1, d_j, i_kp, i_l); + a_ket_cart2spinor(opij, opij+no, tmp1R, tmp1I, d_i, j_kp, j_l); + gc_x += nf; + gc_y += nf; + gc_z += nf; + gc_1 += nf; + opij += no * OF_CMPLX; + } +} +void c2s_si_2e1i(dtype *opij, dtype *gctr, FINT *dims, + CINTEnvVars *envs, dtype *cache) +{ + FINT *shls = envs->shls; + FINT *bas = envs->bas; + FINT i_sh = shls[0]; + FINT j_sh = shls[1]; + FINT i_l = envs->i_l; + FINT j_l = envs->j_l; + FINT i_kp = bas(KAPPA_OF, i_sh); + FINT j_kp = bas(KAPPA_OF, j_sh); + FINT i_ctr = envs->x_ctr[0]; + FINT j_ctr = envs->x_ctr[1]; + FINT k_ctr = envs->x_ctr[2]; + FINT l_ctr = envs->x_ctr[3]; + FINT di = _len_spinor(i_kp, i_l); + FINT dj = _len_spinor(j_kp, j_l); + FINT nfi = envs->nfi; + FINT nfj = envs->nfj; + FINT nfk = envs->nfk; + FINT nfl = envs->nfl; + FINT nf2i = nfi + nfi; + FINT nf2j = nfj + nfj; + FINT nf = envs->nf; + FINT no = di * nfk * nfl * dj; + FINT d_i = di * nfk * nfl; + FINT d_j = nfk * nfl * nfj; + FINT i; + dtype *gc_x = gctr; + dtype *gc_y = gc_x + nf * i_ctr * j_ctr * k_ctr * l_ctr; + dtype *gc_z = gc_y + nf * i_ctr * j_ctr * k_ctr * l_ctr; + dtype *gc_1 = gc_z + nf * i_ctr * j_ctr * k_ctr * l_ctr; + FINT len1 = di * nfk * nfl * nf2j; + /*dtype *tmp1R, *tmp1I; + return; + + MALLOC_INSTACK(tmp1R, len1); + MALLOC_INSTACK(tmp1I, len1);*/ + MALLOC(dtype, tmp1R); + MALLOC(dtype, tmp1I); + + for (i = 0; i < i_ctr * j_ctr * k_ctr * l_ctr; i++) { + a_bra_cart2spinor_si(tmp1R, tmp1I, gc_x, gc_y, gc_z, gc_1, d_j, i_kp, i_l); + a_iket_cart2spinor(opij, opij+no, tmp1R, tmp1I, d_i, j_kp, j_l); + gc_x += nf; + gc_y += nf; + gc_z += nf; + gc_1 += nf; + opij += no * OF_CMPLX; + } +} + +/**/ +void c2s_si_2e2(dtype *fijkl, dtype *opij, FINT *dims, + CINTEnvVars *envs, dtype *cache) +{ + FINT *shls = envs->shls; + FINT *bas = envs->bas; + FINT i_sh = shls[0]; + FINT j_sh = shls[1]; + FINT k_sh = shls[2]; + FINT l_sh = shls[3]; + FINT i_l = envs->i_l; + FINT j_l = envs->j_l; + FINT k_l = envs->k_l; + FINT l_l = envs->l_l; + FINT i_kp = bas(KAPPA_OF, i_sh); + FINT j_kp = bas(KAPPA_OF, j_sh); + FINT k_kp = bas(KAPPA_OF, k_sh); + FINT l_kp = bas(KAPPA_OF, l_sh); + FINT i_ctr = envs->x_ctr[0]; + FINT j_ctr = envs->x_ctr[1]; + FINT k_ctr = envs->x_ctr[2]; + FINT l_ctr = envs->x_ctr[3]; + FINT di = _len_spinor(i_kp, i_l); + FINT dj = _len_spinor(j_kp, j_l); + FINT dk = _len_spinor(k_kp, k_l); + FINT dl = _len_spinor(l_kp, l_l); + FINT ni = dims[0]; + FINT nj = dims[1]; + FINT nk = dims[2]; + FINT nl = dims[3]; + FINT nfk = envs->nfk; + FINT nfl = envs->nfl; + FINT nf2k = nfk + nfk; + FINT nf2l = nfl + nfl; + FINT nop = di * nfk * nfl * dj; + FINT ofj = ni * dj; + FINT ofk = ni * nj * dk; + FINT ofl = ni * nj * nk * dl; + FINT ic, jc, kc, lc; + dtype *pfijkl; + dtype *ox = opij; + dtype *oy = ox + nop * OF_CMPLX * i_ctr * j_ctr * k_ctr * l_ctr; + dtype *oz = oy + nop * OF_CMPLX * i_ctr * j_ctr * k_ctr * l_ctr; + dtype *o1 = oz + nop * OF_CMPLX * i_ctr * j_ctr * k_ctr * l_ctr; + FINT buflen = di * dk * nf2l * dj; + /*dtype *tmp1R, *tmp1I, *tmp2R, *tmp2I; + return; + MALLOC_INSTACK(tmp1R, buflen); + MALLOC_INSTACK(tmp1I, buflen); + MALLOC_INSTACK(tmp2R, buflen); + MALLOC_INSTACK(tmp2I, buflen);*/ + MALLOC(dtype, tmp1R); + MALLOC(dtype, tmp1I); + MALLOC(dtype, tmp2R); + MALLOC(dtype, tmp2I); + + for (lc = 0; lc < l_ctr; lc++) { + for (kc = 0; kc < k_ctr; kc++) { + for (jc = 0; jc < j_ctr; jc++) { + for (ic = 0; ic < i_ctr; ic++) { + a_bra1_cart2spinor_zi(tmp1R, tmp1I, ox, oy, oz, o1, di, nfl*dj, k_kp, k_l); + a_ket1_cart2spinor(tmp2R, tmp2I, tmp1R, tmp1I, di*dk, dj, l_kp, l_l); + pfijkl = fijkl + (ofl * lc + ofk * kc + ofj * jc + di * ic); + zcopy_iklj(pfijkl, tmp2R, tmp2I, ni, nj, nk, nl, di, dj, dk, dl); + ox += nop * OF_CMPLX; + oy += nop * OF_CMPLX; + oz += nop * OF_CMPLX; + o1 += nop * OF_CMPLX; + } } } } +} + +void c2s_si_2e2i(dtype *fijkl, dtype *opij, FINT *dims, + CINTEnvVars *envs, dtype *cache) +{ + FINT *shls = envs->shls; + FINT *bas = envs->bas; + FINT i_sh = shls[0]; + FINT j_sh = shls[1]; + FINT k_sh = shls[2]; + FINT l_sh = shls[3]; + FINT i_l = envs->i_l; + FINT j_l = envs->j_l; + FINT k_l = envs->k_l; + FINT l_l = envs->l_l; + FINT i_kp = bas(KAPPA_OF, i_sh); + FINT j_kp = bas(KAPPA_OF, j_sh); + FINT k_kp = bas(KAPPA_OF, k_sh); + FINT l_kp = bas(KAPPA_OF, l_sh); + FINT i_ctr = envs->x_ctr[0]; + FINT j_ctr = envs->x_ctr[1]; + FINT k_ctr = envs->x_ctr[2]; + FINT l_ctr = envs->x_ctr[3]; + FINT di = _len_spinor(i_kp, i_l); + FINT dj = _len_spinor(j_kp, j_l); + FINT dk = _len_spinor(k_kp, k_l); + FINT dl = _len_spinor(l_kp, l_l); + FINT ni = dims[0]; + FINT nj = dims[1]; + FINT nk = dims[2]; + FINT nl = dims[3]; + FINT nfk = envs->nfk; + FINT nfl = envs->nfl; + FINT nf2k = nfk + nfk; + FINT nf2l = nfl + nfl; + FINT nop = di * nfk * nfl * dj; + FINT ofj = ni * dj; + FINT ofk = ni * nj * dk; + FINT ofl = ni * nj * nk * dl; + FINT ic, jc, kc, lc; + dtype *pfijkl; + dtype *ox = opij; + dtype *oy = ox + nop * OF_CMPLX * i_ctr * j_ctr * k_ctr * l_ctr; + dtype *oz = oy + nop * OF_CMPLX * i_ctr * j_ctr * k_ctr * l_ctr; + dtype *o1 = oz + nop * OF_CMPLX * i_ctr * j_ctr * k_ctr * l_ctr; + FINT buflen = di * dk * nf2l * dj; + /*dtype *tmp1R, *tmp1I, *tmp2R, *tmp2I; + return; + MALLOC_INSTACK(tmp2R, buflen); + MALLOC_INSTACK(tmp2I, buflen); + MALLOC_INSTACK(tmp1R, buflen); + MALLOC_INSTACK(tmp1I, buflen);*/ + MALLOC(dtype, tmp1R); + MALLOC(dtype, tmp1I); + MALLOC(dtype, tmp2R); + MALLOC(dtype, tmp2I); + + for (lc = 0; lc < l_ctr; lc++) { + for (kc = 0; kc < k_ctr; kc++) { + for (jc = 0; jc < j_ctr; jc++) { + for (ic = 0; ic < i_ctr; ic++) { + a_bra1_cart2spinor_zi(tmp1R, tmp1I, ox, oy, oz, o1, di, nfl*dj, k_kp, k_l); + a_iket1_cart2spinor(tmp2R, tmp2I, tmp1R, tmp1I, di*dk, dj, l_kp, l_l); + pfijkl = fijkl + (ofl * lc + ofk * kc + ofj * jc + di * ic); + zcopy_iklj(pfijkl, tmp2R, tmp2I, ni, nj, nk, nl, di, dj, dk, dl); + ox += nop * OF_CMPLX; + oy += nop * OF_CMPLX; + oz += nop * OF_CMPLX; + o1 += nop * OF_CMPLX; + } } } } +} + + +void c2s_cart_1e(dtype *opij, dtype *gctr, FINT *dims, + CINTEnvVars *envs, dtype *cache) +{ + FINT i_ctr = envs->x_ctr[0]; + FINT j_ctr = envs->x_ctr[1]; + FINT nfi = envs->nfi; + FINT nfj = envs->nfj; + FINT nf = envs->nf; + FINT ni = dims[0]; + FINT nj = dims[1]; + FINT ofj = ni * nfj; + FINT ic, jc; + dtype *popij; + + for (jc = 0; jc < j_ctr; jc++) { + for (ic = 0; ic < i_ctr; ic++) { + popij = opij + ofj * jc + nfi * ic; + dcopy_ij(popij, gctr, ni, nj, nfi, nfj); + gctr += nf; + } } +} + + +void c2s_cart_2e1(dtype *fijkl, dtype *gctr, FINT *dims, CINTEnvVars *envs, + dtype *cache) +{ + FINT i_ctr = envs->x_ctr[0]; + FINT j_ctr = envs->x_ctr[1]; + FINT k_ctr = envs->x_ctr[2]; + FINT l_ctr = envs->x_ctr[3]; + FINT nfi = envs->nfi; + FINT nfj = envs->nfj; + FINT nfk = envs->nfk; + FINT nfl = envs->nfl; + FINT nf = envs->nf; + FINT ni = dims[0]; + FINT nj = dims[1]; + FINT nk = dims[2]; + FINT nl = dims[3]; + FINT ofj = ni * nfj; + FINT ofk = ni * nj * nfk; + FINT ofl = ni * nj * nk * nfl; + FINT ic, jc, kc, lc; + dtype *pfijkl; + + for (lc = 0; lc < l_ctr; lc++) { + for (kc = 0; kc < k_ctr; kc++) { + for (jc = 0; jc < j_ctr; jc++) { + for (ic = 0; ic < i_ctr; ic++) { + pfijkl = fijkl + ofl * lc + ofk * kc + ofj * jc + nfi * ic; + dcopy_iklj(pfijkl, gctr, ni, nj, nk, nl, nfi, nfj, nfk, nfl); + gctr += nf; + } } } } +} +void c2s_cart_2e2() {}; + + +void c2s_sph_3c2e1(dtype *bufijk, dtype *gctr, FINT *dims, + CINTEnvVars *envs, dtype *cache) +{ + FINT i_l = envs->i_l; + FINT j_l = envs->j_l; + FINT k_l = envs->k_l; + FINT i_ctr = envs->x_ctr[0]; + FINT j_ctr = envs->x_ctr[1]; + FINT k_ctr = envs->x_ctr[2]; + FINT di = i_l * 2 + 1; + FINT dj = j_l * 2 + 1; + FINT dk = k_l * 2 + 1; + FINT ni = dims[0]; + FINT nj = dims[1]; + FINT nk = dims[2]; + FINT nfi = envs->nfi; + FINT nfk = envs->nfk; + FINT nf = envs->nf; + FINT nfik = nfi * nfk; + FINT ofj = ni * dj; + FINT ofk = ni * nj * dk; + FINT ic, jc, kc; + FINT buflen = nfi*nfk*dj; + /*dtype *buf1; + return; + MALLOC_INSTACK(buf1, buflen*3);*/ // HACK; be warry of this. + MALLOC(dtype, buf1); + dtype *buf2 = buf1 + buflen; + dtype *buf3 = buf2 + buflen; + dtype *pijk; + dtype *tmp1; + + for (kc = 0; kc < k_ctr; kc++) { + for (jc = 0; jc < j_ctr; jc++) { + for (ic = 0; ic < i_ctr; ic++) { + tmp1 = (c2s_ket_sph[j_l])(buf1, gctr, nfik, nfik, j_l); + tmp1 = sph2e_inner(buf2, tmp1, k_l, nfi, dj, nfi*dk, nfik); + tmp1 = (c2s_bra_sph[i_l])(buf3, dk*dj, tmp1, i_l); + pijk = bufijk + ofk * kc + ofj * jc + di * ic; + dcopy_iklj(pijk, tmp1, ni, nj, nk, 1, di, dj, dk, 1); + gctr += nf; + } } } +} + +void c2s_cart_3c2e1(dtype *bufijk, dtype *gctr, FINT *dims, + CINTEnvVars *envs, dtype *cache) +{ + FINT i_ctr = envs->x_ctr[0]; + FINT j_ctr = envs->x_ctr[1]; + FINT k_ctr = envs->x_ctr[2]; + FINT nfi = envs->nfi; + FINT nfj = envs->nfj; + FINT nfk = envs->nfk; + FINT ni = dims[0]; + FINT nj = dims[1]; + FINT nk = dims[2]; + FINT nf = envs->nf; + FINT ofj = ni * nfj; + FINT ofk = ni * nj * nfk; + FINT ic, jc, kc; + dtype *pijk; + + for (kc = 0; kc < k_ctr; kc++) { + for (jc = 0; jc < j_ctr; jc++) { + for (ic = 0; ic < i_ctr; ic++) { + pijk = bufijk + ofk * kc + ofj * jc + nfi * ic; + dcopy_iklj(pijk, gctr, ni, nj, nk, 1, nfi, nfj, nfk, 1); + gctr += nf; + } } } +} + + +void c2s_sph_3c2e1_ssc(dtype *bufijk, dtype *gctr, FINT *dims, + CINTEnvVars *envs, dtype *cache) +{ + FINT i_l = envs->i_l; + FINT j_l = envs->j_l; + FINT i_ctr = envs->x_ctr[0]; + FINT j_ctr = envs->x_ctr[1]; + FINT k_ctr = envs->x_ctr[2]; + FINT di = i_l * 2 + 1; + FINT dj = j_l * 2 + 1; + FINT nfi = envs->nfi; + FINT nfk = envs->nfk; + FINT ni = di * i_ctr; + FINT nj = dj * j_ctr; + FINT nk = nfk * k_ctr; + FINT nf = envs->nf; + FINT nfik = nfi * nfk; + FINT ofj = ni * dj; + FINT ofk = ni * nj * nfk; + FINT ic, jc, kc; + FINT buflen = nfi*nfk*dj; + /*dtype *buf1, *buf2; + return; + MALLOC_INSTACK(buf1, buflen); + MALLOC_INSTACK(buf2, buflen);*/ + MALLOC(dtype, buf1) + MALLOC(dtype, buf2) + + dtype *pijk; + dtype *tmp1; + + for (kc = 0; kc < k_ctr; kc++) { + for (jc = 0; jc < j_ctr; jc++) { + for (ic = 0; ic < i_ctr; ic++) { + tmp1 = (c2s_ket_sph[j_l])(buf1, gctr, nfik, nfik, j_l); + tmp1 = (c2s_bra_sph[i_l])(buf2, nfk*dj, tmp1, i_l); + pijk = bufijk + ofk * kc + ofj * jc + nfi * ic; + dcopy_iklj(pijk, tmp1, ni, nj, nk, 1, di, dj, nfk, 1); + gctr += nf; + } } } +} + + +void c2s_sf_3c2e1(dtype *opijk, dtype *gctr, FINT *dims, + CINTEnvVars *envs, dtype *cache) +{ + FINT *shls = envs->shls; + FINT *bas = envs->bas; + FINT i_sh = shls[0]; + FINT j_sh = shls[1]; + FINT i_l = envs->i_l; + FINT j_l = envs->j_l; + FINT k_l = envs->k_l; + FINT i_kp = bas(KAPPA_OF, i_sh); + FINT j_kp = bas(KAPPA_OF, j_sh); + FINT i_ctr = envs->x_ctr[0]; + FINT j_ctr = envs->x_ctr[1]; + FINT k_ctr = envs->x_ctr[2]; + FINT di = _len_spinor(i_kp, i_l); + FINT dj = _len_spinor(j_kp, j_l); + FINT dk = k_l * 2 + 1; + FINT nfi = envs->nfi; + FINT nfj = envs->nfj; + FINT nfk = envs->nfk; + FINT nf2j = nfj + nfj; + FINT nf = envs->nf; + FINT nfik = nfi * nfk; + FINT ni = dims[0]; + FINT nj = dims[1]; + FINT nk = dims[2]; + FINT ofj = ni * dj; + FINT ofk = ni * nj * dk; + FINT ic, jc, kc; + FINT buflen = nfi*dk*nfj; + dtype *buf, *pbuf; + return; + MALLOC_INSTACK(buf, buflen); + FINT len1 = di * dk * nf2j; + FINT len2 = di * dk * dj; + dtype *tmp1R, *tmp1I, *tmp2R, *tmp2I; + MALLOC_INSTACK(tmp1R, len1); + MALLOC_INSTACK(tmp1I, len1); + MALLOC_INSTACK(tmp2R, len2); + MALLOC_INSTACK(tmp2I, len2); + dtype *pijk; + + for (kc = 0; kc < k_ctr; kc++) { + for (jc = 0; jc < j_ctr; jc++) { + for (ic = 0; ic < i_ctr; ic++) { + pbuf = sph2e_inner(buf, gctr, k_l, nfi, nfj, nfi*dk, nfik); + a_bra_cart2spinor_sf(tmp1R, tmp1I, NULL, NULL, NULL, pbuf, dk*nfj, i_kp, i_l); + a_ket_cart2spinor(tmp2R, tmp2I, tmp1R, tmp1I, di*dk, j_kp, j_l); + pijk = opijk + ofk * kc + ofj * jc + di * ic; + zcopy_iklj(pijk, tmp2R, tmp2I, ni, nj, nk, 1, di, dj, dk, 1); + gctr += nf; + } } } +} +void c2s_sf_3c2e1i(dtype *opijk, dtype *gctr, FINT *dims, + CINTEnvVars *envs, dtype *cache) +{ + FINT *shls = envs->shls; + FINT *bas = envs->bas; + FINT i_sh = shls[0]; + FINT j_sh = shls[1]; + FINT i_l = envs->i_l; + FINT j_l = envs->j_l; + FINT k_l = envs->k_l; + FINT i_kp = bas(KAPPA_OF, i_sh); + FINT j_kp = bas(KAPPA_OF, j_sh); + FINT i_ctr = envs->x_ctr[0]; + FINT j_ctr = envs->x_ctr[1]; + FINT k_ctr = envs->x_ctr[2]; + FINT di = _len_spinor(i_kp, i_l); + FINT dj = _len_spinor(j_kp, j_l); + FINT dk = k_l * 2 + 1; + FINT nfi = envs->nfi; + FINT nfj = envs->nfj; + FINT nfk = envs->nfk; + FINT nf2j = nfj + nfj; + FINT nf = envs->nf; + FINT nfik = nfi * nfk; + FINT ni = dims[0]; + FINT nj = dims[1]; + FINT nk = dims[2]; + FINT ofj = ni * dj; + FINT ofk = ni * nj * dk; + FINT d_i = di * dk; + FINT d_j = dk * nfj; + FINT ic, jc, kc; + FINT buflen = nfi*dk*nfj; + dtype *buf, *pbuf; + return; + MALLOC_INSTACK(buf, buflen); + FINT len1 = di*dk*nf2j; + FINT len2 = di*dk*dj; + dtype *tmp1R, *tmp1I, *tmp2R, *tmp2I; + MALLOC_INSTACK(tmp1R, len1); + MALLOC_INSTACK(tmp1I, len1); + MALLOC_INSTACK(tmp2R, len2); + MALLOC_INSTACK(tmp2I, len2); + dtype *pijk; + + for (kc = 0; kc < k_ctr; kc++) { + for (jc = 0; jc < j_ctr; jc++) { + for (ic = 0; ic < i_ctr; ic++) { + pbuf = sph2e_inner(buf, gctr, k_l, nfi, nfj, nfi*dk, nfik); + a_bra_cart2spinor_sf(tmp1R, tmp1I, NULL, NULL, NULL, pbuf, dk*nfj, i_kp, i_l); + a_iket_cart2spinor(tmp2R, tmp2I, tmp1R, tmp1I, di*dk, j_kp, j_l); + pijk = opijk + ofk * kc + ofj * jc + di * ic; + zcopy_iklj(pijk, tmp2R, tmp2I, ni, nj, nk, 1, di, dj, dk, 1); + gctr += nf; + } } } +} + +void c2s_si_3c2e1(dtype *opijk, dtype *gctr, FINT *dims, + CINTEnvVars *envs, dtype *cache) +{ + FINT *shls = envs->shls; + FINT *bas = envs->bas; + FINT i_sh = shls[0]; + FINT j_sh = shls[1]; + FINT i_l = envs->i_l; + FINT j_l = envs->j_l; + FINT k_l = envs->k_l; + FINT i_kp = bas(KAPPA_OF, i_sh); + FINT j_kp = bas(KAPPA_OF, j_sh); + FINT i_ctr = envs->x_ctr[0]; + FINT j_ctr = envs->x_ctr[1]; + FINT k_ctr = envs->x_ctr[2]; + FINT di = _len_spinor(i_kp, i_l); + FINT dj = _len_spinor(j_kp, j_l); + FINT dk = k_l * 2 + 1; + FINT nfi = envs->nfi; + FINT nfj = envs->nfj; + FINT nfk = envs->nfk; + FINT nf2i = nfi + nfi; + FINT nf2j = nfj + nfj; + FINT nf = envs->nf; + FINT nfik = nfi * nfk; + FINT nfijdk = nfi * nfj * dk; + FINT ni = dims[0]; + FINT nj = dims[1]; + FINT nk = dims[2]; + FINT ofj = ni * dj; + FINT ofk = ni * nj * dk; + FINT d_i = di * dk; + FINT d_j = dk * nf2j; + FINT ic, jc, kc; + dtype *gc_x = gctr; + dtype *gc_y = gc_x + nf * i_ctr * j_ctr * k_ctr; + dtype *gc_z = gc_y + nf * i_ctr * j_ctr * k_ctr; + dtype *gc_1 = gc_z + nf * i_ctr * j_ctr * k_ctr; + FINT buflen = nfi*dk*nfj; + dtype *bufx; + return; + MALLOC_INSTACK(bufx, buflen*4); + dtype *bufy = bufx + buflen; + dtype *bufz = bufy + buflen; + dtype *buf1 = bufz + buflen; + dtype *pgx, *pgy, *pgz, *pg1; + FINT len1 = di * dk * nf2j; + FINT len2 = di * dk * dj; + dtype *tmp1R, *tmp1I, *tmp2R, *tmp2I; + MALLOC_INSTACK(tmp1R, len1); + MALLOC_INSTACK(tmp1I, len1); + MALLOC_INSTACK(tmp2R, len2); + MALLOC_INSTACK(tmp2I, len2); + dtype *pijk; + + for (kc = 0; kc < k_ctr; kc++) { + for (jc = 0; jc < j_ctr; jc++) { + for (ic = 0; ic < i_ctr; ic++) { + pgx = sph2e_inner(bufx, gc_x, k_l, nfi, nfj, nfi*dk, nfik); + pgy = sph2e_inner(bufy, gc_y, k_l, nfi, nfj, nfi*dk, nfik); + pgz = sph2e_inner(bufz, gc_z, k_l, nfi, nfj, nfi*dk, nfik); + pg1 = sph2e_inner(buf1, gc_1, k_l, nfi, nfj, nfi*dk, nfik); + a_bra_cart2spinor_si(tmp1R, tmp1I, pgx, pgy, pgz, pg1, dk*nfj, i_kp, i_l); + a_ket_cart2spinor(tmp2R, tmp2I, tmp1R, tmp1I, di*dk, j_kp, j_l); + pijk = opijk + ofk * kc + ofj * jc + di * ic; + zcopy_iklj(pijk, tmp2R, tmp2I, ni, nj, nk, 1, di, dj, dk, 1); + gc_x += nf; + gc_y += nf; + gc_z += nf; + gc_1 += nf; + } } } +} + +void c2s_si_3c2e1i(dtype *opijk, dtype *gctr, FINT *dims, + CINTEnvVars *envs, dtype *cache) +{ + FINT *shls = envs->shls; + FINT *bas = envs->bas; + FINT i_sh = shls[0]; + FINT j_sh = shls[1]; + FINT i_l = envs->i_l; + FINT j_l = envs->j_l; + FINT k_l = envs->k_l; + FINT i_kp = bas(KAPPA_OF, i_sh); + FINT j_kp = bas(KAPPA_OF, j_sh); + FINT i_ctr = envs->x_ctr[0]; + FINT j_ctr = envs->x_ctr[1]; + FINT k_ctr = envs->x_ctr[2]; + FINT di = _len_spinor(i_kp, i_l); + FINT dj = _len_spinor(j_kp, j_l); + FINT dk = k_l * 2 + 1; + FINT nfi = envs->nfi; + FINT nfj = envs->nfj; + FINT nfk = envs->nfk; + FINT nf2i = nfi + nfi; + FINT nf2j = nfj + nfj; + FINT nf = envs->nf; + FINT nfik = nfi * nfk; + FINT nfijdk = nfi * nfj * dk; + FINT ni = dims[0]; + FINT nj = dims[1]; + FINT nk = dims[2]; + FINT ofj = ni * dj; + FINT ofk = ni * nj * dk; + FINT ic, jc, kc; + dtype *gc_x = gctr; + dtype *gc_y = gc_x + nf * i_ctr * j_ctr * k_ctr; + dtype *gc_z = gc_y + nf * i_ctr * j_ctr * k_ctr; + dtype *gc_1 = gc_z + nf * i_ctr * j_ctr * k_ctr; + dtype *bufx; + FINT buflen = nfi*dk*nfj; + return; + MALLOC_INSTACK(bufx, buflen*4); + dtype *bufy = bufx + buflen; + dtype *bufz = bufy + buflen; + dtype *buf1 = bufz + buflen; + dtype *pgx, *pgy, *pgz, *pg1; + FINT len1 = di * dk * nf2j; + FINT len2 = di * dk * dj; + dtype *tmp1R, *tmp1I, *tmp2R, *tmp2I; + MALLOC_INSTACK(tmp1R, len1); + MALLOC_INSTACK(tmp1I, len1); + MALLOC_INSTACK(tmp2R, len2); + MALLOC_INSTACK(tmp2I, len2); + dtype *pijk; + + for (kc = 0; kc < k_ctr; kc++) { + for (jc = 0; jc < j_ctr; jc++) { + for (ic = 0; ic < i_ctr; ic++) { + pgx = sph2e_inner(bufx, gc_x, k_l, nfi, nfj, nfi*dk, nfik); + pgy = sph2e_inner(bufy, gc_y, k_l, nfi, nfj, nfi*dk, nfik); + pgz = sph2e_inner(bufz, gc_z, k_l, nfi, nfj, nfi*dk, nfik); + pg1 = sph2e_inner(buf1, gc_1, k_l, nfi, nfj, nfi*dk, nfik); + a_bra_cart2spinor_si(tmp1R, tmp1I, pgx, pgy, pgz, pg1, dk*nfj, i_kp, i_l); + a_iket_cart2spinor(tmp2R, tmp2I, tmp1R, tmp1I, di*dk, j_kp, j_l); + pijk = opijk + ofk * kc + ofj * jc + di * ic; + zcopy_iklj(pijk, tmp2R, tmp2I, ni, nj, nk, 1, di, dj, dk, 1); + gc_x += nf; + gc_y += nf; + gc_z += nf; + gc_1 += nf; + } } } +} + +void c2s_sf_3c2e1_ssc(dtype *opijk, dtype *gctr, FINT *dims, + CINTEnvVars *envs, dtype *cache) +{ + FINT *shls = envs->shls; + FINT *bas = envs->bas; + FINT i_sh = shls[0]; + FINT j_sh = shls[1]; + FINT i_l = envs->i_l; + FINT j_l = envs->j_l; + FINT i_kp = bas(KAPPA_OF, i_sh); + FINT j_kp = bas(KAPPA_OF, j_sh); + FINT i_ctr = envs->x_ctr[0]; + FINT j_ctr = envs->x_ctr[1]; + FINT k_ctr = envs->x_ctr[2]; + FINT di = _len_spinor(i_kp, i_l); + FINT dj = _len_spinor(j_kp, j_l); + FINT nfj = envs->nfj; + FINT nfk = envs->nfk; + FINT nf2j = nfj + nfj; + FINT nf = envs->nf; + FINT ni = dims[0]; + FINT nj = dims[1]; + FINT nk = dims[2]; + FINT ofj = ni * dj; + FINT ofk = ni * nj * nfk; + FINT ic, jc, kc; + FINT len1 = di*nfk*nf2j; + FINT len2 = di*nfk*dj; + dtype *tmp1R, *tmp1I, *tmp2R, *tmp2I; + return; + MALLOC_INSTACK(tmp1R, len1); + MALLOC_INSTACK(tmp1I, len1); + MALLOC_INSTACK(tmp2R, len2); + MALLOC_INSTACK(tmp2I, len2); + dtype *pijk; + + for (kc = 0; kc < k_ctr; kc++) { + for (jc = 0; jc < j_ctr; jc++) { + for (ic = 0; ic < i_ctr; ic++) { + a_bra_cart2spinor_sf(tmp1R, tmp1I, NULL, NULL, NULL, gctr, nfk*nfj, i_kp, i_l); + a_ket_cart2spinor(tmp2R, tmp2I, tmp1R, tmp1I, di*nfk, j_kp, j_l); + pijk = opijk + ofk * kc + ofj * jc + di * ic; + zcopy_iklj(pijk, tmp2R, tmp2I, ni, nj, nk, 1, di, dj, nfk, 1); + gctr += nf; + } } } +} + +void c2s_sf_3c2e1i_ssc(dtype *opijk, dtype *gctr, FINT *dims, + CINTEnvVars *envs, dtype *cache) +{ + FINT *shls = envs->shls; + FINT *bas = envs->bas; + FINT i_sh = shls[0]; + FINT j_sh = shls[1]; + FINT i_l = envs->i_l; + FINT j_l = envs->j_l; + FINT i_kp = bas(KAPPA_OF, i_sh); + FINT j_kp = bas(KAPPA_OF, j_sh); + FINT i_ctr = envs->x_ctr[0]; + FINT j_ctr = envs->x_ctr[1]; + FINT k_ctr = envs->x_ctr[2]; + FINT di = _len_spinor(i_kp, i_l); + FINT dj = _len_spinor(j_kp, j_l); + FINT nfj = envs->nfj; + FINT nfk = envs->nfk; + FINT nf2j = nfj + nfj; + FINT nf = envs->nf; + FINT ni = dims[0]; + FINT nj = dims[1]; + FINT nk = dims[2]; + FINT ofj = ni * dj; + FINT ofk = ni * nj * nfk; + FINT ic, jc, kc; + FINT len1 = di*nfk*nf2j; + FINT len2 = di*nfk*dj; + dtype *tmp1R, *tmp1I, *tmp2R, *tmp2I; + return; + MALLOC_INSTACK(tmp1R, len1); + MALLOC_INSTACK(tmp1I, len1); + MALLOC_INSTACK(tmp2R, len2); + MALLOC_INSTACK(tmp2I, len2); + dtype *pijk; + + for (kc = 0; kc < k_ctr; kc++) { + for (jc = 0; jc < j_ctr; jc++) { + for (ic = 0; ic < i_ctr; ic++) { + a_bra_cart2spinor_sf(tmp1R, tmp1I, NULL, NULL, NULL, gctr, nfk*nfj, i_kp, i_l); + a_iket_cart2spinor(tmp2R, tmp2I, tmp1R, tmp1I, di*nfk, j_kp, j_l); + pijk = opijk + ofk * kc + ofj * jc + di * ic; + zcopy_iklj(pijk, tmp2R, tmp2I, ni, nj, nk, 1, di, dj, nfk, 1); + gctr += nf; + } } } +} +void c2s_si_3c2e1_ssc(dtype *opijk, dtype *gctr, FINT *dims, + CINTEnvVars *envs, dtype *cache) +{ + FINT *shls = envs->shls; + FINT *bas = envs->bas; + FINT i_sh = shls[0]; + FINT j_sh = shls[1]; + FINT i_l = envs->i_l; + FINT j_l = envs->j_l; + FINT i_kp = bas(KAPPA_OF, i_sh); + FINT j_kp = bas(KAPPA_OF, j_sh); + FINT i_ctr = envs->x_ctr[0]; + FINT j_ctr = envs->x_ctr[1]; + FINT k_ctr = envs->x_ctr[2]; + FINT di = _len_spinor(i_kp, i_l); + FINT dj = _len_spinor(j_kp, j_l); + FINT nfi = envs->nfi; + FINT nfj = envs->nfj; + FINT nfk = envs->nfk; + FINT nf2i = nfi + nfi; + FINT nf2j = nfj + nfj; + FINT nf = envs->nf; + FINT nfijdk = nfi * nfj * nfk; + FINT ni = dims[0]; + FINT nj = dims[1]; + FINT nk = dims[2]; + FINT ofj = ni * dj; + FINT ofk = ni * nj * nfk; + FINT ic, jc, kc; + dtype *gc_x = gctr; + dtype *gc_y = gc_x + nf * i_ctr * j_ctr * k_ctr; + dtype *gc_z = gc_y + nf * i_ctr * j_ctr * k_ctr; + dtype *gc_1 = gc_z + nf * i_ctr * j_ctr * k_ctr; + FINT len2 = di*nfk*dj; + FINT len1 = di*nfk*nf2j; + dtype *tmp1R, *tmp1I, *tmp2R, *tmp2I; + return; + MALLOC_INSTACK(tmp1R, len1); + MALLOC_INSTACK(tmp1I, len1); + MALLOC_INSTACK(tmp2R, len2); + MALLOC_INSTACK(tmp2I, len2); + dtype *pijk; + + for (kc = 0; kc < k_ctr; kc++) { + for (jc = 0; jc < j_ctr; jc++) { + for (ic = 0; ic < i_ctr; ic++) { + a_bra_cart2spinor_si(tmp1R, tmp1I, gc_x, gc_y, gc_z, gc_1, nfk*nfj, i_kp, i_l); + a_ket_cart2spinor(tmp2R, tmp2I, tmp1R, tmp1I, di*nfk, j_kp, j_l); + pijk = opijk + ofk * kc + ofj * jc + di * ic; + zcopy_iklj(pijk, tmp2R, tmp2I, ni, nj, nk, 1, di, dj, nfk, 1); + gc_x += nf; + gc_y += nf; + gc_z += nf; + gc_1 += nf; + } } } +} +void c2s_si_3c2e1i_ssc(dtype *opijk, dtype *gctr, FINT *dims, + CINTEnvVars *envs, dtype *cache) +{ + FINT *shls = envs->shls; + FINT *bas = envs->bas; + FINT i_sh = shls[0]; + FINT j_sh = shls[1]; + FINT i_l = envs->i_l; + FINT j_l = envs->j_l; + FINT i_kp = bas(KAPPA_OF, i_sh); + FINT j_kp = bas(KAPPA_OF, j_sh); + FINT i_ctr = envs->x_ctr[0]; + FINT j_ctr = envs->x_ctr[1]; + FINT k_ctr = envs->x_ctr[2]; + FINT di = _len_spinor(i_kp, i_l); + FINT dj = _len_spinor(j_kp, j_l); + FINT nfi = envs->nfi; + FINT nfj = envs->nfj; + FINT nfk = envs->nfk; + FINT nf2i = nfi + nfi; + FINT nf2j = nfj + nfj; + FINT nf = envs->nf; + FINT nfijdk = nfi * nfj * nfk; + FINT ni = dims[0]; + FINT nj = dims[1]; + FINT nk = dims[2]; + FINT ofj = ni * dj; + FINT ofk = ni * nj * nfk; + FINT ic, jc, kc; + dtype *gc_x = gctr; + dtype *gc_y = gc_x + nf * i_ctr * j_ctr * k_ctr; + dtype *gc_z = gc_y + nf * i_ctr * j_ctr * k_ctr; + dtype *gc_1 = gc_z + nf * i_ctr * j_ctr * k_ctr; + FINT len2 = di*nfk*dj; + FINT len1 = di*nfk*nf2j; + dtype *tmp1R, *tmp1I, *tmp2R, *tmp2I; + return; + MALLOC_INSTACK(tmp1R, len1); + MALLOC_INSTACK(tmp1I, len1); + MALLOC_INSTACK(tmp2R, len2); + MALLOC_INSTACK(tmp2I, len2); + dtype *pijk; + + for (kc = 0; kc < k_ctr; kc++) { + for (jc = 0; jc < j_ctr; jc++) { + for (ic = 0; ic < i_ctr; ic++) { + a_bra_cart2spinor_si(tmp1R, tmp1I, gc_x, gc_y, gc_z, gc_1, nfk*nfj, i_kp, i_l); + a_iket_cart2spinor(tmp2R, tmp2I, tmp1R, tmp1I, di*nfk, j_kp, j_l); + pijk = opijk + ofk * kc + ofj * jc + di * ic; + zcopy_iklj(pijk, tmp2R, tmp2I, ni, nj, nk, 1, di, dj, nfk, 1); + gc_x += nf; + gc_y += nf; + gc_z += nf; + gc_1 += nf; + } } } +} + + +void c2s_sph_3c1e(dtype *out, dtype *gctr, FINT *dims, + CINTEnvVars *envs, dtype *cache) +{ + c2s_sph_3c2e1(out, gctr, dims, envs, cache); +} + +void c2s_cart_3c1e(dtype *out, dtype *gctr, FINT *dims, + CINTEnvVars *envs, dtype *cache) +{ + c2s_cart_3c2e1(out, gctr, dims, envs, cache); +} + + +dtype *CINTc2s_bra_sph(dtype *gsph, FINT nket, dtype *gcart, FINT l) +{ + return (c2s_bra_sph[l])(gsph, nket, gcart, l); +} +dtype *CINTc2s_ket_sph(dtype *gsph, FINT nbra, dtype *gcart, FINT l) +{ + return (c2s_ket_sph[l])(gsph, gcart, nbra, nbra, l); +} +dtype *CINTc2s_ket_sph1(dtype *sph, dtype *cart, FINT lds, FINT ldc, FINT l) +{ + return (c2s_ket_sph1[l])(sph, cart, lds, ldc, l); +} + +void CINTc2s_bra_spinor_e1sf(dtype *gsp, FINT nket, + dtype *gcart, FINT kappa, FINT l) +{ + FINT nf = _len_cart[l]; + FINT nd = _len_spinor(kappa, l); + dtype *gspa = (dtype *)gsp; + dtype *gspb = gspa + nket * nd * OF_CMPLX; + dtype *coeffR, *coeffI; + if (kappa < 0) { + coeffR = g_c2s[l].cart2j_gt_lR; + coeffI = g_c2s[l].cart2j_gt_lI; + } else { + coeffR = g_c2s[l].cart2j_lt_lR; + coeffI = g_c2s[l].cart2j_lt_lI; + } + + FINT i, j, n; + dtype saR, saI, sbR, sbI, caR, caI, cbR, cbI, v1; + + for (j = 0; j < nket; j++) { + for (i = 0; i < nd; i++) { + saR = 0; + saI = 0; + sbR = 0; + sbI = 0; +#pragma GCC ivdep + for (n = 0; n < nf; n++) { + v1 = gcart[j*nf+n]; + caR = coeffR[i*nf*2 +n]; + caI = coeffI[i*nf*2 +n]; + cbR = coeffR[i*nf*2+nf+n]; + cbI = coeffI[i*nf*2+nf+n]; + saR += caR * v1; + saI +=-caI * v1; + sbR += cbR * v1; + sbI +=-cbI * v1; + } + gspa[(j*nd+i)*OF_CMPLX ] = saR; + gspa[(j*nd+i)*OF_CMPLX+1] = saI; + gspb[(j*nd+i)*OF_CMPLX ] = sbR; + gspb[(j*nd+i)*OF_CMPLX+1] = sbI; + } } +} + +/*void CINTc2s_bra_spinor_sf(dtype *gsp, FINT nket, + dtype *gcart, FINT kappa, FINT l) +{ + FINT nf = _len_cart[l]; + FINT nd = _len_spinor(kappa, l); + dtype *gspa = (dtype *)gsp; + dtype *gspb = gspa + nket * nd * OF_CMPLX; + dtype *coeffR, *coeffI; + if (kappa < 0) { + coeffR = g_c2s[l].cart2j_gt_lR; + coeffI = g_c2s[l].cart2j_gt_lI; + } else { + coeffR = g_c2s[l].cart2j_lt_lR; + coeffI = g_c2s[l].cart2j_lt_lI; + } + + FINT i, j, n; + dtype saR, saI, sbR, sbI, caR, caI, cbR, cbI, v1R, v1I; + + for (j = 0; j < nket; j++) { + for (i = 0; i < nd; i++) { + saR = 0; + saI = 0; + sbR = 0; + sbI = 0; +#pragma GCC ivdep + for (n = 0; n < nf; n++) { + v1R = creal(gcart[j*nf+n]); + v1I = cimag(gcart[j*nf+n]); + caR = coeffR[i*nf*2 +n]; + caI = coeffI[i*nf*2 +n]; + cbR = coeffR[i*nf*2+nf+n]; + cbI = coeffI[i*nf*2+nf+n]; + saR += caR * v1R + caI * v1I; + saI +=-caI * v1R + caR * v1I; + sbR += cbR * v1R + cbI * v1I; + sbI +=-cbI * v1R + cbR * v1I; + } + gspa[(j*nd+i)*OF_CMPLX ] = saR; + gspa[(j*nd+i)*OF_CMPLX+1] = saI; + gspb[(j*nd+i)*OF_CMPLX ] = sbR; + gspb[(j*nd+i)*OF_CMPLX+1] = sbI; + } } +}*/ + + +/*void CINTc2s_bra_spinor_si(dtype *gsp, FINT nket, + dtype *gcart, FINT kappa, FINT l) +{ + FINT nf = _len_cart[l]; + FINT nf2 = nf * 2; + FINT nd = _len_spinor(kappa, l); + dtype *gspz = (dtype *)gsp; + dtype *gcarta = gcart; + dtype *gcartb = gcarta + nf * nket; + dtype *coeffR, *coeffI; + if (kappa < 0) { + coeffR = g_c2s[l].cart2j_gt_lR; + coeffI = g_c2s[l].cart2j_gt_lI; + } else { + coeffR = g_c2s[l].cart2j_lt_lR; + coeffI = g_c2s[l].cart2j_lt_lI; + } + + FINT i, j, n; + dtype sR, sI, caR, caI, cbR, cbI, gaR, gaI, gbR, gbI; + + for (j = 0; j < nket; j++) { + for (i = 0; i < nd; i++) { + sR = 0; + sI = 0; +#pragma GCC ivdep + for (n = 0; n < nf; n++) { + caR = coeffR[i*nf*2 +n]; + caI = coeffI[i*nf*2 +n]; + cbR = coeffR[i*nf*2+nf+n]; + cbI = coeffI[i*nf*2+nf+n]; + gaR = creal(gcarta[j*nf+n]); + gaI = cimag(gcarta[j*nf+n]); + gbR = creal(gcartb[j*nf+n]); + gbI = cimag(gcartb[j*nf+n]); + sR += caR * gaR + caI * gaI + cbR * gbR + cbI * gbI; + sI += caR * gaI - caI * gaR + cbR * gbI - cbI * gbR; + } + gspz[(j*nd+i)*OF_CMPLX ] = sR; + gspz[(j*nd+i)*OF_CMPLX+1] = sI; + } } +}*/ + + +void CINTc2s_ket_spinor_sf1(dtype *gspa, dtype *gspb, dtype *gcart, + FINT lds, FINT ldc, FINT nctr, FINT kappa, FINT l) +{ + FINT nf = _len_cart[l]; + FINT nd = _len_spinor(kappa, l); + dtype *gspaz = (dtype *)gspa; + dtype *gspbz = (dtype *)gspb; + dtype *coeffR, *coeffI; + if (kappa < 0) { + coeffR = g_c2s[l].cart2j_gt_lR; + coeffI = g_c2s[l].cart2j_gt_lI; + } else { + coeffR = g_c2s[l].cart2j_lt_lR; + coeffI = g_c2s[l].cart2j_lt_lI; + } + + FINT i, j, k, n; + dtype caR, caI, cbR, cbI, v1; + + for (k = 0; k < nctr; k++) { + for (i = 0; i < nd; i++) { +#pragma GCC ivdep + for (j = 0; j < ldc; j++) { + gspaz[(j+i*lds)*OF_CMPLX ] = 0; + gspaz[(j+i*lds)*OF_CMPLX+1] = 0; + gspbz[(j+i*lds)*OF_CMPLX ] = 0; + gspbz[(j+i*lds)*OF_CMPLX+1] = 0; + } + for (n = 0; n < nf; n++) { + caR = coeffR[i*nf*2 +n]; + caI = coeffI[i*nf*2 +n]; + cbR = coeffR[i*nf*2+nf+n]; + cbI = coeffI[i*nf*2+nf+n]; +#pragma GCC ivdep + for (j = 0; j < ldc; j++) { + v1 = gcart[j+n*ldc]; + gspaz[(j+i*lds)*OF_CMPLX ] += caR * v1; + gspaz[(j+i*lds)*OF_CMPLX+1] += caI * v1; + gspbz[(j+i*lds)*OF_CMPLX ] += cbR * v1; + gspbz[(j+i*lds)*OF_CMPLX+1] += cbI * v1; + } + } + } + gspaz += nd * lds * OF_CMPLX; + gspbz += nd * lds * OF_CMPLX; + gcart += nf * ldc; + } +} + +void CINTc2s_iket_spinor_sf1(dtype *gspa, dtype *gspb, dtype *gcart, + FINT lds, FINT ldc, FINT nctr, FINT kappa, FINT l) +{ + FINT nf = _len_cart[l]; + FINT nd = _len_spinor(kappa, l); + dtype *gspaz = (dtype *)gspa; + dtype *gspbz = (dtype *)gspb; + dtype *coeffR, *coeffI; + if (kappa < 0) { + coeffR = g_c2s[l].cart2j_gt_lR; + coeffI = g_c2s[l].cart2j_gt_lI; + } else { + coeffR = g_c2s[l].cart2j_lt_lR; + coeffI = g_c2s[l].cart2j_lt_lI; + } + + FINT i, j, k, n; + dtype caR, caI, cbR, cbI, v1; + + for (k = 0; k < nctr; k++) { + for (i = 0; i < nd; i++) { +#pragma GCC ivdep + for (j = 0; j < ldc; j++) { + gspaz[(j+i*lds)*OF_CMPLX ] = 0; + gspaz[(j+i*lds)*OF_CMPLX+1] = 0; + gspbz[(j+i*lds)*OF_CMPLX ] = 0; + gspbz[(j+i*lds)*OF_CMPLX+1] = 0; + } + for (n = 0; n < nf; n++) { + caR = coeffR[i*nf*2 +n]; + caI = coeffI[i*nf*2 +n]; + cbR = coeffR[i*nf*2+nf+n]; + cbI = coeffI[i*nf*2+nf+n]; +#pragma GCC ivdep + for (j = 0; j < ldc; j++) { + v1 = gcart[j+n*ldc]; + gspaz[(j+i*lds)*OF_CMPLX ] -= caI * v1; + gspaz[(j+i*lds)*OF_CMPLX+1] += caR * v1; + gspbz[(j+i*lds)*OF_CMPLX ] -= cbI * v1; + gspbz[(j+i*lds)*OF_CMPLX+1] += cbR * v1; + } + } + } + gspaz += nd * lds * OF_CMPLX; + gspbz += nd * lds * OF_CMPLX; + gcart += nf * ldc; + } +} + +void CINTc2s_ket_spinor_si1(dtype *gspa, dtype *gspb, dtype *gcart, + FINT lds, FINT ldc, FINT nctr, FINT kappa, FINT l) +{ + FINT nf = _len_cart[l]; + FINT nd = _len_spinor(kappa, l); + FINT ngc = nf * ldc; + dtype *gc_x = gcart; + dtype *gc_y = gc_x + nctr*ngc; + dtype *gc_z = gc_y + nctr*ngc; + dtype *gc_1 = gc_z + nctr*ngc; + dtype *gspaz = (dtype *)gspa; + dtype *gspbz = (dtype *)gspb; + dtype *coeffR, *coeffI; + if (kappa < 0) { + coeffR = g_c2s[l].cart2j_gt_lR; + coeffI = g_c2s[l].cart2j_gt_lI; + } else { + coeffR = g_c2s[l].cart2j_lt_lR; + coeffI = g_c2s[l].cart2j_lt_lI; + } + + FINT i, j, k, n; + dtype caR, caI, cbR, cbI, v1, vx, vy, vz; + + for (k = 0; k < nctr; k++) { + for (i = 0; i < nd; i++) { +#pragma GCC ivdep + for (j = 0; j < ldc; j++) { + gspaz[(j+i*lds)*OF_CMPLX ] = 0; + gspaz[(j+i*lds)*OF_CMPLX+1] = 0; + gspbz[(j+i*lds)*OF_CMPLX ] = 0; + gspbz[(j+i*lds)*OF_CMPLX+1] = 0; + } + for (n = 0; n < nf; n++) { + caR = coeffR[i*nf*2 +n]; + caI = coeffI[i*nf*2 +n]; + cbR = coeffR[i*nf*2+nf+n]; + cbI = coeffI[i*nf*2+nf+n]; +#pragma GCC ivdep + for (j = 0; j < ldc; j++) { + v1 = gc_1[j+n*ldc]; + vx = gc_x[j+n*ldc]; + vy = gc_y[j+n*ldc]; + vz = gc_z[j+n*ldc]; + gspaz[(j+i*lds)*OF_CMPLX ] += caR * v1 - caI * vz + cbR * vy - cbI * vx; + gspaz[(j+i*lds)*OF_CMPLX+1] += caI * v1 + caR * vz + cbI * vy + cbR * vx; + gspbz[(j+i*lds)*OF_CMPLX ] += cbR * v1 + cbI * vz - caR * vy - caI * vx; + gspbz[(j+i*lds)*OF_CMPLX+1] += cbI * v1 - cbR * vz - caI * vy + caR * vx; + } + } + } + gspaz += nd * lds * OF_CMPLX; + gspbz += nd * lds * OF_CMPLX; + gc_x += ngc; + gc_y += ngc; + gc_z += ngc; + gc_1 += ngc; + } +} + +void CINTc2s_iket_spinor_si1(dtype *gspa, dtype *gspb, dtype *gcart, + FINT lds, FINT ldc, FINT nctr, FINT kappa, FINT l) +{ + FINT nf = _len_cart[l]; + FINT nd = _len_spinor(kappa, l); + FINT ngc = nf * ldc; + dtype *gc_x = gcart; + dtype *gc_y = gc_x + nctr*ngc; + dtype *gc_z = gc_y + nctr*ngc; + dtype *gc_1 = gc_z + nctr*ngc; + dtype *gspaz = (dtype *)gspa; + dtype *gspbz = (dtype *)gspb; + dtype *coeffR, *coeffI; + if (kappa < 0) { + coeffR = g_c2s[l].cart2j_gt_lR; + coeffI = g_c2s[l].cart2j_gt_lI; + } else { + coeffR = g_c2s[l].cart2j_lt_lR; + coeffI = g_c2s[l].cart2j_lt_lI; + } + + FINT i, j, k, n; + dtype caR, caI, cbR, cbI, v1, vx, vy, vz; + + for (k = 0; k < nctr; k++) { + for (i = 0; i < nd; i++) { +#pragma GCC ivdep + for (j = 0; j < ldc; j++) { + gspaz[(j+i*lds)*OF_CMPLX ] = 0; + gspaz[(j+i*lds)*OF_CMPLX+1] = 0; + gspbz[(j+i*lds)*OF_CMPLX ] = 0; + gspbz[(j+i*lds)*OF_CMPLX+1] = 0; + } + for (n = 0; n < nf; n++) { + caR = coeffR[i*nf*2 +n]; + caI = coeffI[i*nf*2 +n]; + cbR = coeffR[i*nf*2+nf+n]; + cbI = coeffI[i*nf*2+nf+n]; +#pragma GCC ivdep + for (j = 0; j < ldc; j++) { + v1 = gc_1[j+n*ldc]; + vx = gc_x[j+n*ldc]; + vy = gc_y[j+n*ldc]; + vz = gc_z[j+n*ldc]; + + gspaz[(j+i*lds)*OF_CMPLX ] -= caI * v1 + caR * vz + cbI * vy + cbR * vx; + gspaz[(j+i*lds)*OF_CMPLX+1] += caR * v1 - caI * vz + cbR * vy - cbI * vx; + gspbz[(j+i*lds)*OF_CMPLX ] -= cbI * v1 - cbR * vz - caI * vy + caR * vx; + gspbz[(j+i*lds)*OF_CMPLX+1] += cbR * v1 + cbI * vz - caR * vy - caI * vx; + } + } + } + gspaz += nd * lds * OF_CMPLX; + gspbz += nd * lds * OF_CMPLX; + gc_x += ngc; + gc_y += ngc; + gc_z += ngc; + gc_1 += ngc; + } +} + + +dtype *CINTs2c_bra_sph(dtype *gsph, FINT nket, dtype *gcart, FINT l) +{ + FINT nf = (l+1)*(l+2)/2; + FINT nd = l * 2 + 1; + CINTdgemm_NN1(nf, nket, nd, g_c2s[l].cart2sph, gsph, gcart, nf); + return gcart; +} +dtype *CINTs2c_ket_sph(dtype *gsph, FINT nbra, dtype *gcart, FINT l) +{ + FINT nf = (l+1)*(l+2)/2; + FINT nd = l * 2 + 1; + CINTdgemm_NT(nbra, nf, nd, gsph, g_c2s[l].cart2sph, gcart); + return gcart; +} + + +#ifdef WITH_FORTRAN +#include +#include + + + +FINT cintlen_spinor_(const FINT *bas_id, const FINT *bas) +{ + return CINTlen_spinor(*bas_id, bas); +} + +FINT cintcgtos_cart_(const FINT *bas_id, const FINT *bas) +{ + return CINTcgto_cart(*bas_id, bas); +} +FINT cintcgto_cart_(const FINT *bas_id, const FINT *bas) +{ + return CINTcgto_cart(*bas_id, bas); +} + +FINT cintcgtos_spheric_(const FINT *bas_id, const FINT *bas) +{ + return CINTcgto_spheric(*bas_id, bas); +} +FINT cintcgto_spheric_(const FINT *bas_id, const FINT *bas) +{ + return CINTcgto_spheric(*bas_id, bas); +} + +FINT cintcgtos_spinor_(const FINT *bas_id, const FINT *bas) +{ + return CINTcgto_spinor(*bas_id, bas); +} +FINT cintcgto_spinor_(const FINT *bas_id, const FINT *bas) +{ + return CINTcgto_spinor(*bas_id, bas); +} + + +FINT cinttot_pgto_spheric_(const FINT *bas, const FINT *nbas) +{ + return CINTtot_pgto_spheric(bas, *nbas); +} + + +FINT cinttot_pgto_spinor_(const FINT *bas, const FINT *nbas) +{ + return CINTtot_pgto_spinor(bas, *nbas); +} + + +FINT cinttot_cgto_cart_(const FINT *bas, const FINT *nbas) +{ + return CINTtot_cgto_cart(bas, *nbas); +} + + +FINT cinttot_cgto_spheric_(const FINT *bas, const FINT *nbas) +{ + return CINTtot_cgto_spheric(bas, *nbas); +} + + +FINT cinttot_cgto_spinor_(const FINT *bas, const FINT *nbas) +{ + return CINTtot_cgto_spinor(bas, *nbas); +} + + +void cintshells_cart_offset_(FINT ao_loc[], const FINT *bas, const FINT *nbas) +{ + CINTshells_cart_offset(ao_loc, bas, *nbas); +} + + +void cintshells_spheric_offset_(FINT ao_loc[], const FINT *bas, const FINT *nbas) +{ + CINTshells_spheric_offset(ao_loc, bas, *nbas); +} + + +void cintshells_spinor_offset_(FINT ao_loc[], const FINT *bas, const FINT *nbas) +{ + CINTshells_spinor_offset(ao_loc, bas, *nbas); +} + +dtype cintgto_norm_(FINT *n, dtype *a) +{ + return CINTgto_norm(*n, *a); +} + + + + +void cintinit_2e_optimizer_(CINTOpt **opt, + FINT *atm, FINT *natm, + FINT *bas, FINT *nbas, dtype *env) +{ + CINTinit_2e_optimizer(opt, atm, *natm, bas, *nbas, env); +} +void cintinit_optimizer_(CINTOpt **opt, + FINT *atm, FINT *natm, + FINT *bas, FINT *nbas, dtype *env) +{ + cintinit_2e_optimizer_(opt, atm, natm, bas, nbas, env); +} +void cintdel_2e_optimizer_(CINTOpt **opt) +{ + CINTdel_2e_optimizer(opt); +} +void cintdel_optimizer_(CINTOpt **opt) +{ + cintdel_2e_optimizer_(opt); +} +#endif + + + +#include +#include +#include + +void CINTinit_int1e_grids_EnvVars(CINTEnvVars *envs, FINT *ng, FINT *shls, + FINT *atm, FINT natm, + FINT *bas, FINT nbas, dtype *env) +{ + CINTinit_int1e_EnvVars(envs, ng, shls, atm, natm, bas, nbas, env); + FINT ngrids = shls[3] - shls[2]; + dtype *grids = env + (size_t)env[PTR_GRIDS] + shls[2] * 3; + + envs->ngrids = ngrids; + envs->grids = grids; + envs->common_factor = 2 * M_PI + * CINTcommon_fac_sp(envs->i_l) * CINTcommon_fac_sp(envs->j_l); + + int rys_order = envs->nrys_roots; + int nroots = rys_order; + dtype omega = env[PTR_RANGE_OMEGA]; + if (omega < 0 && rys_order <= 3) { + nroots *= 2; + } + envs->rys_order = rys_order; + envs->nrys_roots = nroots; + + FINT dli, dlj; + FINT ibase = envs->li_ceil > envs->lj_ceil; + if (ibase) { + dli = envs->li_ceil + envs->lj_ceil + 1; + dlj = envs->lj_ceil + 1; + envs->rirj[0] = envs->ri[0] - envs->rj[0]; + envs->rirj[1] = envs->ri[1] - envs->rj[1]; + envs->rirj[2] = envs->ri[2] - envs->rj[2]; + } else { + dli = envs->li_ceil + 1; + dlj = envs->li_ceil + envs->lj_ceil + 1; + envs->rirj[0] = envs->rj[0] - envs->ri[0]; + envs->rirj[1] = envs->rj[1] - envs->ri[1]; + envs->rirj[2] = envs->rj[2] - envs->ri[2]; + } + envs->g_stride_i = GRID_BLKSIZE * nroots; + envs->g_stride_j = GRID_BLKSIZE * nroots * dli; + envs->g_size = GRID_BLKSIZE * nroots * dli * dlj; + envs->g_stride_k = envs->g_size; + envs->g_stride_l = envs->g_size; +} + +#define RGSQUARE(r, ig) (r[ig+GRID_BLKSIZE*0]*r[ig+GRID_BLKSIZE*0] + \ + r[ig+GRID_BLKSIZE*1]*r[ig+GRID_BLKSIZE*1] + \ + r[ig+GRID_BLKSIZE*2]*r[ig+GRID_BLKSIZE*2]) + +FINT CINTg0_1e_grids(dtype *g, dtype cutoff, + CINTEnvVars *envs, dtype *cache, dtype *gridsT) +{ + FINT ngrids = envs->ngrids; + FINT bgrids = MIN(ngrids - envs->grids_offset, GRID_BLKSIZE); + int nroots = envs->nrys_roots; + dtype *gx = g; + dtype *gy = g + envs->g_size; + dtype *gz = g + envs->g_size * 2; + dtype *w = gz; + dtype *rij = envs->rij; + dtype ubuf[MXRYSROOTS]; + dtype wbuf[MXRYSROOTS]; + dtype *u; + return 0; + MALLOC_ALIGN8_INSTACK(u, GRID_BLKSIZE*nroots); + dtype *rijrg; + MALLOC_ALIGN8_INSTACK(rijrg, GRID_BLKSIZE*3); + dtype aij = envs->ai[0] + envs->aj[0]; + FINT n, i, j, ig; + dtype x, fac1; + + for (i = 0; i < nroots; i++) { + for (ig = 0; ig < bgrids; ig++) { + gx[ig+GRID_BLKSIZE*i] = 1; + gy[ig+GRID_BLKSIZE*i] = 1; + } + } +#pragma GCC ivdep + for (ig = 0; ig < bgrids; ig++) { + rijrg[ig+GRID_BLKSIZE*0] = gridsT[ig+GRID_BLKSIZE*0] - rij[0]; + rijrg[ig+GRID_BLKSIZE*1] = gridsT[ig+GRID_BLKSIZE*1] - rij[1]; + rijrg[ig+GRID_BLKSIZE*2] = gridsT[ig+GRID_BLKSIZE*2] - rij[2]; + } + + dtype omega = envs->env[PTR_RANGE_OMEGA]; + dtype zeta = envs->env[PTR_RINV_ZETA]; + dtype omega2, theta, sqrt_theta, a0, tau2; + + assert(zeta >= 0); + if (omega == 0. && zeta == 0.) { + fac1 = envs->fac[0] / aij; + for (ig = 0; ig < bgrids; ig++) { + x = aij * RGSQUARE(rijrg, ig); + CINTrys_roots(nroots, x, ubuf, wbuf); + for (i = 0; i < nroots; i++) { + + u[ig+GRID_BLKSIZE*i] = ubuf[i] / (ubuf[i] + 1); + w[ig+GRID_BLKSIZE*i] = wbuf[i] * fac1; + } + } + } else if (omega < 0.) { + a0 = aij; + fac1 = envs->fac[0] / aij; + if (zeta == 0.) { + tau2 = 1.; + omega2 = omega * omega; + theta = omega2 / (omega2 + aij); + } else { + tau2 = zeta / (zeta + aij); + a0 *= tau2; + fac1 *= sqrt(tau2); + omega2 = omega * omega; + theta = omega2 / (omega2 + a0); + } + sqrt_theta = sqrt(theta); + + + + dtype temp_cutoff = MIN(cutoff, EXPCUTOFF_SR); + int rorder = envs->rys_order; + dtype tau_theta, fac_theta; + for (ig = 0; ig < bgrids; ig++) { + x = a0 * RGSQUARE(rijrg, ig); + if (theta * x > temp_cutoff) { + + for (i = 0; i < nroots; i++) { + u[ig+GRID_BLKSIZE*i] = 0; + w[ig+GRID_BLKSIZE*i] = 0; + } + } else if (rorder == nroots) { + CINTsr_rys_roots(nroots, x, sqrt_theta, ubuf, wbuf); + for (i = 0; i < nroots; i++) { + u[ig+GRID_BLKSIZE*i] = ubuf[i] / (ubuf[i] + 1) * tau2; + w[ig+GRID_BLKSIZE*i] = wbuf[i] * fac1; + } + } else { + tau_theta = tau2 * theta; + fac_theta = fac1 * -sqrt_theta; + CINTrys_roots(rorder, x, ubuf, wbuf); + CINTrys_roots(rorder, theta*x, ubuf+rorder, wbuf+rorder); + for (i = 0; i < rorder; i++) { + u[ig+GRID_BLKSIZE*i] = ubuf[i] / (ubuf[i] + 1) * tau2; + w[ig+GRID_BLKSIZE*i] = wbuf[i] * fac1; + u[ig+GRID_BLKSIZE*(i+rorder)] = ubuf[i] / (ubuf[i] + 1) * tau_theta; + w[ig+GRID_BLKSIZE*(i+rorder)] = wbuf[i] * fac_theta; + } + } + } + } else { + + + a0 = aij; + fac1 = envs->fac[0] / aij; + if (zeta == 0.) { + omega2 = omega * omega; + theta = omega2 / (omega2 + aij); + a0 *= theta; + fac1 *= sqrt(theta); + } else if (omega == 0.) { + theta = zeta / (zeta + aij); + a0 *= theta; + fac1 *= sqrt(theta); + } else { + omega2 = omega * omega; + theta = omega2*zeta / (omega2*zeta + (zeta+omega2)*aij); + a0 *= theta; + fac1 *= sqrt(theta); + } + for (ig = 0; ig < bgrids; ig++) { + x = a0 * RGSQUARE(rijrg, ig); + CINTrys_roots(nroots, x, ubuf, wbuf); + for (i = 0; i < nroots; i++) { + + u[ig+GRID_BLKSIZE*i] = ubuf[i] / (ubuf[i] + 1) * theta; + w[ig+GRID_BLKSIZE*i] = wbuf[i] * fac1; + } + } + } + FINT nmax = envs->li_ceil + envs->lj_ceil; + if (nmax == 0) { + return 1; + } + + dtype *rirj = envs->rirj; + FINT lj, di, dj; + dtype *rx; + if (envs->li_ceil > envs->lj_ceil) { + + lj = envs->lj_ceil; + di = envs->g_stride_i; + dj = envs->g_stride_j; + rx = envs->ri; + } else { + + lj = envs->li_ceil; + di = envs->g_stride_j; + dj = envs->g_stride_i; + rx = envs->rj; + } + dtype rijrx[3]; + rijrx[0] = rij[0] - rx[0]; + rijrx[1] = rij[1] - rx[1]; + rijrx[2] = rij[2] - rx[2]; + + dtype *p0x, *p0y, *p0z; + dtype *p1x, *p1y, *p1z; + dtype *p2x, *p2y, *p2z; + dtype *t2; + return 0; + MALLOC_ALIGN8_INSTACK(t2, GRID_BLKSIZE*4); + dtype *rirgx = t2 + GRID_BLKSIZE; + dtype *rirgy = rirgx + GRID_BLKSIZE; + dtype *rirgz = rirgy + GRID_BLKSIZE; + dtype aij2 = 0.5 / aij; + dtype tx, ty, tz; + + for (n = 0; n < nroots; n++) { + p0x = gx + GRID_BLKSIZE*n; + p0y = gy + GRID_BLKSIZE*n; + p0z = gz + GRID_BLKSIZE*n; + p1x = p0x + di; + p1y = p0y + di; + p1z = p0z + di; +#pragma GCC ivdep + for (ig = 0; ig < bgrids; ig++) { + rirgx[ig] = rijrx[0] + u[ig+GRID_BLKSIZE*n] * rijrg[ig+GRID_BLKSIZE*0]; + rirgy[ig] = rijrx[1] + u[ig+GRID_BLKSIZE*n] * rijrg[ig+GRID_BLKSIZE*1]; + rirgz[ig] = rijrx[2] + u[ig+GRID_BLKSIZE*n] * rijrg[ig+GRID_BLKSIZE*2]; + p1x[ig] = rirgx[ig] * p0x[ig]; + p1y[ig] = rirgy[ig] * p0y[ig]; + p1z[ig] = rirgz[ig] * p0z[ig]; + } + if (nmax > 0) { + for (ig = 0; ig < bgrids; ig++) { + t2[ig] = aij2 * (1 - u[ig+GRID_BLKSIZE*n]); + } + } + for (i = 1; i < nmax; i++) { + p0x = gx + GRID_BLKSIZE*n + i * di; + p0y = gy + GRID_BLKSIZE*n + i * di; + p0z = gz + GRID_BLKSIZE*n + i * di; + p1x = p0x + di; + p1y = p0y + di; + p1z = p0z + di; + p2x = p0x - di; + p2y = p0y - di; + p2z = p0z - di; +#pragma GCC ivdep + for (ig = 0; ig < bgrids; ig++) { + p1x[ig] = i * t2[ig] * p2x[ig] + rirgx[ig] * p0x[ig]; + p1y[ig] = i * t2[ig] * p2y[ig] + rirgy[ig] * p0y[ig]; + p1z[ig] = i * t2[ig] * p2z[ig] + rirgz[ig] * p0z[ig]; + } + } + } + + for (j = 1; j <= lj; j++) { + for (i = 0; i <= nmax - j; i++) { + p0x = gx + j * dj + i * di; + p0y = gy + j * dj + i * di; + p0z = gz + j * dj + i * di; + p1x = p0x - dj; + p1y = p0y - dj; + p1z = p0z - dj; + p2x = p1x + di; + p2y = p1y + di; + p2z = p1z + di; + + for (n = 0; n < nroots; n++) { +#pragma GCC ivdep + for (ig = 0; ig < bgrids; ig++) { + p0x[ig+GRID_BLKSIZE*n] = p2x[ig+GRID_BLKSIZE*n] + rirj[0] * p1x[ig+GRID_BLKSIZE*n]; + p0y[ig+GRID_BLKSIZE*n] = p2y[ig+GRID_BLKSIZE*n] + rirj[1] * p1y[ig+GRID_BLKSIZE*n]; + p0z[ig+GRID_BLKSIZE*n] = p2z[ig+GRID_BLKSIZE*n] + rirj[2] * p1z[ig+GRID_BLKSIZE*n]; + } } + } } + return 1; +} + +void CINTgout1e_grids(dtype *gout, dtype *g, FINT *idx, + CINTEnvVars *envs, FINT gout_empty) +{ + FINT ngrids = envs->ngrids; + FINT bgrids = MIN(ngrids - envs->grids_offset, GRID_BLKSIZE); + FINT nroots = envs->nrys_roots; + FINT nf = envs->nf; + FINT i, n, ig; + dtype *gx, *gy, *gz; + dtype s[GRID_BLKSIZE]; + + if (gout_empty) { + for (n = 0; n < nf; n++, idx+=3) { + gx = g + idx[0]; + gy = g + idx[1]; + gz = g + idx[2]; + for (ig = 0; ig < bgrids; ig++) { + s[ig] = 0; + } + for (i = 0; i < nroots; i++) { + for (ig = 0; ig < bgrids; ig++) { + s[ig] += gx[ig+GRID_BLKSIZE*i] * gy[ig+GRID_BLKSIZE*i] * gz[ig+GRID_BLKSIZE*i]; + } + } + for (ig = 0; ig < bgrids; ig++) { + gout[ig+bgrids*n] = s[ig]; + } + } + } else { + for (n = 0; n < nf; n++, idx+=3) { + gx = g + idx[0]; + gy = g + idx[1]; + gz = g + idx[2]; + for (ig = 0; ig < bgrids; ig++) { + s[ig] = 0; + } + for (i = 0; i < nroots; i++) { + for (ig = 0; ig < bgrids; ig++) { + s[ig] += gx[ig+GRID_BLKSIZE*i] * gy[ig+GRID_BLKSIZE*i] * gz[ig+GRID_BLKSIZE*i]; + } + } + for (ig = 0; ig < bgrids; ig++) { + gout[ig+bgrids*n] += s[ig]; + } + } + } +} + +void CINTnabla1i_grids(dtype *f, dtype *g, + FINT li, FINT lj, CINTEnvVars *envs) +{ + FINT ngrids = envs->ngrids; + FINT bgrids = MIN(ngrids - envs->grids_offset, GRID_BLKSIZE); + FINT nroots = envs->nrys_roots; + const FINT di = envs->g_stride_i; + const FINT dj = envs->g_stride_j; + const dtype ai2 = -2 * envs->ai[0]; + FINT i, j, n, ig, ptr; + const dtype *gx = g; + const dtype *gy = g + envs->g_size; + const dtype *gz = g + envs->g_size * 2; + dtype *fx = f; + dtype *fy = f + envs->g_size; + dtype *fz = f + envs->g_size * 2; + + for (j = 0; j <= lj; j++) { + + for (n = 0; n < nroots; n++) { + ptr = dj * j + n * GRID_BLKSIZE; +#pragma GCC ivdep + for (ig = ptr; ig < ptr+bgrids; ig++) { + fx[ig] = ai2 * gx[ig+di]; + fy[ig] = ai2 * gy[ig+di]; + fz[ig] = ai2 * gz[ig+di]; + } + } + + for (i = 1; i <= li; i++) { + for (n = 0; n < nroots; n++) { + ptr = dj * j + di * i + n * GRID_BLKSIZE; +#pragma GCC ivdep + for (ig = ptr; ig < ptr+bgrids; ig++) { + fx[ig] = i * gx[ig-di] + ai2 * gx[ig+di]; + fy[ig] = i * gy[ig-di] + ai2 * gy[ig+di]; + fz[ig] = i * gz[ig-di] + ai2 * gz[ig+di]; + } + } } + } +} + +void CINTnabla1j_grids(dtype *f, dtype *g, + FINT li, FINT lj, CINTEnvVars *envs) +{ + FINT ngrids = envs->ngrids; + FINT bgrids = MIN(ngrids - envs->grids_offset, GRID_BLKSIZE); + FINT nroots = envs->nrys_roots; + const FINT di = envs->g_stride_i; + const FINT dj = envs->g_stride_j; + const dtype aj2 = -2 * envs->aj[0]; + FINT i, j, n, ig, ptr; + const dtype *gx = g; + const dtype *gy = g + envs->g_size; + const dtype *gz = g + envs->g_size * 2; + dtype *fx = f; + dtype *fy = f + envs->g_size; + dtype *fz = f + envs->g_size * 2; + + + for (i = 0; i <= li; i++) { + for (n = 0; n < nroots; n++) { + ptr = di * i + n * GRID_BLKSIZE; +#pragma GCC ivdep + for (ig = ptr; ig < ptr+bgrids; ig++) { + fx[ig] = aj2 * gx[ig+dj]; + fy[ig] = aj2 * gy[ig+dj]; + fz[ig] = aj2 * gz[ig+dj]; + } + } } + + for (j = 1; j <= lj; j++) { + for (i = 0; i <= li; i++) { + for (n = 0; n < nroots; n++) { + ptr = dj * j + di * i + n * GRID_BLKSIZE; +#pragma GCC ivdep + for (ig = ptr; ig < ptr+bgrids; ig++) { + fx[ig] = j * gx[ig-dj] + aj2 * gx[ig+dj]; + fy[ig] = j * gy[ig-dj] + aj2 * gy[ig+dj]; + fz[ig] = j * gz[ig-dj] + aj2 * gz[ig+dj]; + } + } } } +} + +void CINTx1i_grids(dtype *f, dtype *g, dtype *ri, + FINT li, FINT lj, CINTEnvVars *envs) +{ + FINT ngrids = envs->ngrids; + FINT bgrids = MIN(ngrids - envs->grids_offset, GRID_BLKSIZE); + FINT nroots = envs->nrys_roots; + FINT i, j, n, ig, ptr; + const FINT di = envs->g_stride_i; + const FINT dj = envs->g_stride_j; + const dtype *gx = g; + const dtype *gy = g + envs->g_size; + const dtype *gz = g + envs->g_size * 2; + dtype *fx = f; + dtype *fy = f + envs->g_size; + dtype *fz = f + envs->g_size * 2; + + for (j = 0; j <= lj; j++) { + for (i = 0; i <= li; i++) { + for (n = 0; n < nroots; n++) { + ptr = dj * j + di * i + n * GRID_BLKSIZE; +#pragma GCC ivdep + for (ig = ptr; ig < ptr+bgrids; ig++) { + fx[ig] = gx[ig+di] + ri[0] * gx[ig]; + fy[ig] = gy[ig+di] + ri[1] * gy[ig]; + fz[ig] = gz[ig+di] + ri[2] * gz[ig]; + } + } } } +} + +void CINTx1j_grids(dtype *f, dtype *g, dtype *rj, + FINT li, FINT lj, CINTEnvVars *envs) +{ + FINT ngrids = envs->ngrids; + FINT bgrids = MIN(ngrids - envs->grids_offset, GRID_BLKSIZE); + FINT nroots = envs->nrys_roots; + FINT i, j, n, ig, ptr; + const FINT di = envs->g_stride_i; + const FINT dj = envs->g_stride_j; + const dtype *gx = g; + const dtype *gy = g + envs->g_size; + const dtype *gz = g + envs->g_size * 2; + dtype *fx = f; + dtype *fy = f + envs->g_size; + dtype *fz = f + envs->g_size * 2; + + for (j = 0; j <= lj; j++) { + for (i = 0; i <= li; i++) { + for (n = 0; n < nroots; n++) { + ptr = dj * j + di * i + n * GRID_BLKSIZE; +#pragma GCC ivdep + for (ig = ptr; ig < ptr+bgrids; ig++) { + fx[ig] = gx[ig+dj] + rj[0] * gx[ig]; + fy[ig] = gy[ig+dj] + rj[1] * gy[ig]; + fz[ig] = gz[ig+dj] + rj[2] * gz[ig]; + } + } } } +} + + +//#include +#include +#include +#include + +#define DEF_GXYZ(type, G, GX, GY, GZ) \ + type *GX = G; \ + type *GY = G + envs->g_size; \ + type *GZ = G + envs->g_size * 2 + +#define realbas bas + +int version_f_g0_2d4d = -1; + +void CINTinit_int2e_EnvVars(CINTEnvVars *envs, FINT *ng, FINT *shls, + FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env) +{ + envs->natm = natm; + envs->nbas = nbas; + envs->atm = atm; + envs->bas = bas; + envs->env = env; + envs->shls = shls; + + FINT i_sh = shls[0]; + FINT j_sh = shls[1]; + FINT k_sh = shls[2]; + FINT l_sh = shls[3]; + envs->i_l = bas(ANG_OF, i_sh); + envs->j_l = bas(ANG_OF, j_sh); + envs->k_l = bas(ANG_OF, k_sh); + envs->l_l = bas(ANG_OF, l_sh); + envs->x_ctr[0] = bas(NCTR_OF, i_sh); + envs->x_ctr[1] = bas(NCTR_OF, j_sh); + envs->x_ctr[2] = bas(NCTR_OF, k_sh); + envs->x_ctr[3] = bas(NCTR_OF, l_sh); + envs->nfi = (envs->i_l+1)*(envs->i_l+2)/2; + envs->nfj = (envs->j_l+1)*(envs->j_l+2)/2; + envs->nfk = (envs->k_l+1)*(envs->k_l+2)/2; + envs->nfl = (envs->l_l+1)*(envs->l_l+2)/2; + envs->nf = envs->nfi * envs->nfk * envs->nfl * envs->nfj; + + envs->ri = env + atm(PTR_COORD, bas(ATOM_OF, i_sh)); + envs->rj = env + atm(PTR_COORD, bas(ATOM_OF, j_sh)); + envs->rk = env + atm(PTR_COORD, bas(ATOM_OF, k_sh)); + envs->rl = env + atm(PTR_COORD, bas(ATOM_OF, l_sh)); + + envs->common_factor = (M_PI*M_PI*M_PI)*2/SQRTPI + * CINTcommon_fac_sp(envs->i_l) * CINTcommon_fac_sp(envs->j_l) + * CINTcommon_fac_sp(envs->k_l) * CINTcommon_fac_sp(envs->l_l); + if (env[PTR_EXPCUTOFF] == 0) { + envs->expcutoff = EXPCUTOFF; + } else { + + envs->expcutoff = MAX(MIN_EXPCUTOFF, env[PTR_EXPCUTOFF]) + 1; + } + + envs->gbits = ng[GSHIFT]; + envs->ncomp_e1 = ng[POS_E1]; + envs->ncomp_e2 = ng[POS_E2]; + envs->ncomp_tensor = ng[TENSOR]; + + envs->li_ceil = envs->i_l + ng[IINC]; + envs->lj_ceil = envs->j_l + ng[JINC]; + envs->lk_ceil = envs->k_l + ng[KINC]; + envs->ll_ceil = envs->l_l + ng[LINC]; + int rys_order =(envs->li_ceil + envs->lj_ceil + envs->lk_ceil + envs->ll_ceil)/2 + 1; + int nrys_roots = rys_order; + dtype omega = env[PTR_RANGE_OMEGA]; + if (omega < 0 && rys_order <= 3) { + nrys_roots *= 2; + } + envs->rys_order = rys_order; + envs->nrys_roots = nrys_roots; + + /*assert(i_sh < SHLS_MAX); + assert(j_sh < SHLS_MAX); + assert(k_sh < SHLS_MAX); + assert(l_sh < SHLS_MAX); + assert(envs->i_l < ANG_MAX); + assert(envs->j_l < ANG_MAX); + assert(envs->k_l < ANG_MAX); + assert(envs->l_l < ANG_MAX); + assert(bas(ATOM_OF,i_sh) >= 0); + assert(bas(ATOM_OF,j_sh) >= 0); + assert(bas(ATOM_OF,k_sh) >= 0); + assert(bas(ATOM_OF,l_sh) >= 0); + assert(bas(ATOM_OF,i_sh) < natm); + assert(bas(ATOM_OF,j_sh) < natm); + assert(bas(ATOM_OF,k_sh) < natm); + assert(bas(ATOM_OF,l_sh) < natm); + assert(rys_order < MXRYSROOTS);*/ + + FINT dli, dlj, dlk, dll; + FINT ibase = envs->li_ceil > envs->lj_ceil; + FINT kbase = envs->lk_ceil > envs->ll_ceil; + if (kbase) { + dlk = envs->lk_ceil + envs->ll_ceil + 1; + dll = envs->ll_ceil + 1; + } else { + dlk = envs->lk_ceil + 1; + dll = envs->lk_ceil + envs->ll_ceil + 1; + } + + if (ibase) { + dli = envs->li_ceil + envs->lj_ceil + 1; + dlj = envs->lj_ceil + 1; + } else { + dli = envs->li_ceil + 1; + dlj = envs->li_ceil + envs->lj_ceil + 1; + } + envs->g_stride_i = nrys_roots; + envs->g_stride_k = nrys_roots * dli; + envs->g_stride_l = nrys_roots * dli * dlk; + envs->g_stride_j = nrys_roots * dli * dlk * dll; + envs->g_size = nrys_roots * dli * dlk * dll * dlj; + + if (kbase) { + envs->g2d_klmax = envs->g_stride_k; + envs->rx_in_rklrx = envs->rk; + envs->rkrl[0] = envs->rk[0] - envs->rl[0]; + envs->rkrl[1] = envs->rk[1] - envs->rl[1]; + envs->rkrl[2] = envs->rk[2] - envs->rl[2]; + } else { + envs->g2d_klmax = envs->g_stride_l; + envs->rx_in_rklrx = envs->rl; + envs->rkrl[0] = envs->rl[0] - envs->rk[0]; + envs->rkrl[1] = envs->rl[1] - envs->rk[1]; + envs->rkrl[2] = envs->rl[2] - envs->rk[2]; + } + + if (ibase) { + envs->g2d_ijmax = envs->g_stride_i; + envs->rx_in_rijrx = envs->ri; + envs->rirj[0] = envs->ri[0] - envs->rj[0]; + envs->rirj[1] = envs->ri[1] - envs->rj[1]; + envs->rirj[2] = envs->ri[2] - envs->rj[2]; + } else { + envs->g2d_ijmax = envs->g_stride_j; + envs->rx_in_rijrx = envs->rj; + envs->rirj[0] = envs->rj[0] - envs->ri[0]; + envs->rirj[1] = envs->rj[1] - envs->ri[1]; + envs->rirj[2] = envs->rj[2] - envs->ri[2]; + } + + + #ifdef __cplusplus + if (rys_order <= 2) { + envs->f_g0_2d4d = (void (*)(...))&CINTg0_2e_2d4d_unrolled; + version_f_g0_2d4d = 0; + if (rys_order != nrys_roots) { + envs->f_g0_2d4d = (void (*)(...))&CINTsrg0_2e_2d4d_unrolled; + version_f_g0_2d4d = 1; + } + } else if (kbase) { + if (ibase) { + envs->f_g0_2d4d = (void (*)(...))&CINTg0_2e_ik2d4d; + version_f_g0_2d4d = 2; + } else { + envs->f_g0_2d4d = (void (*)(...))&CINTg0_2e_kj2d4d; + version_f_g0_2d4d = 3; + } + } else { + if (ibase) { + envs->f_g0_2d4d = (void (*)(...))&CINTg0_2e_il2d4d; + version_f_g0_2d4d = 4; + } else { + envs->f_g0_2d4d = (void (*)(...))&CINTg0_2e_lj2d4d; + version_f_g0_2d4d = 5; + } + } + envs->f_g0_2e = (int (*)(...))&CINTg0_2e; + #else + if (rys_order <= 2) { + envs->f_g0_2d4d = &CINTg0_2e_2d4d_unrolled; + if (rys_order != nrys_roots) { + envs->f_g0_2d4d = &CINTsrg0_2e_2d4d_unrolled; + } + } else if (kbase) { + if (ibase) { + envs->f_g0_2d4d = &CINTg0_2e_ik2d4d; + } else { + envs->f_g0_2d4d = &CINTg0_2e_kj2d4d; + } + } else { + if (ibase) { + envs->f_g0_2d4d = &CINTg0_2e_il2d4d; + } else { + envs->f_g0_2d4d = &CINTg0_2e_lj2d4d; + } + } + envs->f_g0_2e = &CINTg0_2e; + + #endif +} + +void CINTg2e_index_xyz(FINT *idx, const CINTEnvVars *envs) +{ + const FINT i_l = envs->i_l; + const FINT j_l = envs->j_l; + const FINT k_l = envs->k_l; + const FINT l_l = envs->l_l; + const FINT nfi = envs->nfi; + const FINT nfj = envs->nfj; + const FINT nfk = envs->nfk; + const FINT nfl = envs->nfl; + const FINT di = envs->g_stride_i; + const FINT dk = envs->g_stride_k; + const FINT dl = envs->g_stride_l; + const FINT dj = envs->g_stride_j; + FINT i, j, k, l, n; + FINT ofx, ofkx, oflx; + FINT ofy, ofky, ofly; + FINT ofz, ofkz, oflz; + FINT i_nx[CART_MAX], i_ny[CART_MAX], i_nz[CART_MAX]; + FINT j_nx[CART_MAX], j_ny[CART_MAX], j_nz[CART_MAX]; + FINT k_nx[CART_MAX], k_ny[CART_MAX], k_nz[CART_MAX]; + FINT l_nx[CART_MAX], l_ny[CART_MAX], l_nz[CART_MAX]; + + CINTcart_comp(i_nx, i_ny, i_nz, i_l); + CINTcart_comp(j_nx, j_ny, j_nz, j_l); + CINTcart_comp(k_nx, k_ny, k_nz, k_l); + CINTcart_comp(l_nx, l_ny, l_nz, l_l); + + ofx = 0; + ofy = envs->g_size; + ofz = envs->g_size * 2; + n = 0; + for (j = 0; j < nfj; j++) { + for (l = 0; l < nfl; l++) { + oflx = ofx + dj * j_nx[j] + dl * l_nx[l]; + ofly = ofy + dj * j_ny[j] + dl * l_ny[l]; + oflz = ofz + dj * j_nz[j] + dl * l_nz[l]; + for (k = 0; k < nfk; k++) { + ofkx = oflx + dk * k_nx[k]; + ofky = ofly + dk * k_ny[k]; + ofkz = oflz + dk * k_nz[k]; + switch (i_l) { + case 0: + idx[n+0] = ofkx; + idx[n+1] = ofky; + idx[n+2] = ofkz; + n += 3; + break; + case 1: + idx[n+0] = ofkx + di; + idx[n+1] = ofky; + idx[n+2] = ofkz; + idx[n+3] = ofkx; + idx[n+4] = ofky + di; + idx[n+5] = ofkz; + idx[n+6] = ofkx; + idx[n+7] = ofky; + idx[n+8] = ofkz + di; + n += 9; + break; + case 2: + idx[n+0 ] = ofkx + di*2; + idx[n+1 ] = ofky; + idx[n+2 ] = ofkz; + idx[n+3 ] = ofkx + di; + idx[n+4 ] = ofky + di; + idx[n+5 ] = ofkz; + idx[n+6 ] = ofkx + di; + idx[n+7 ] = ofky; + idx[n+8 ] = ofkz + di; + idx[n+9 ] = ofkx; + idx[n+10] = ofky + di*2; + idx[n+11] = ofkz; + idx[n+12] = ofkx; + idx[n+13] = ofky + di; + idx[n+14] = ofkz + di; + idx[n+15] = ofkx; + idx[n+16] = ofky; + idx[n+17] = ofkz + di*2; + n += 18; + break; + default: + for (i = 0; i < nfi; i++) { + idx[n+0] = ofkx + di * i_nx[i]; + idx[n+1] = ofky + di * i_ny[i]; + idx[n+2] = ofkz + di * i_nz[i]; + n += 3; + } + } + } + } + } +} + + +void CINTg0_2e_2d(dtype *g, Rys2eT *bc, CINTEnvVars *envs) +{ + const FINT nroots = envs->nrys_roots; + const FINT nmax = envs->li_ceil + envs->lj_ceil; + const FINT mmax = envs->lk_ceil + envs->ll_ceil; + const FINT dm = envs->g2d_klmax; + const FINT dn = envs->g2d_ijmax; + FINT i, j, m, n, off; + DEF_GXYZ(dtype, g, gx, gy, gz); + dtype *p0x, *p0y, *p0z; + dtype *p1x, *p1y, *p1z; + dtype nb1, mb0; + + for (i = 0; i < nroots; i++) { + gx[i] = 1; + gy[i] = 1; + + } + + dtype s0x, s1x, s2x, t0x, t1x; + dtype s0y, s1y, s2y, t0y, t1y; + dtype s0z, s1z, s2z, t0z, t1z; + dtype c00x, c00y, c00z, c0px, c0py, c0pz, b10, b01, b00; + for (i = 0; i < nroots; i++) { + c00x = bc->c00x[i]; + c00y = bc->c00y[i]; + c00z = bc->c00z[i]; + c0px = bc->c0px[i]; + c0py = bc->c0py[i]; + c0pz = bc->c0pz[i]; + b10 = bc->b10[i]; + b01 = bc->b01[i]; + b00 = bc->b00[i]; + if (nmax > 0) { + + + + s0x = gx[i]; + s0y = gy[i]; + s0z = gz[i]; + s1x = c00x * s0x; + s1y = c00y * s0y; + s1z = c00z * s0z; + gx[i+dn] = s1x; + gy[i+dn] = s1y; + gz[i+dn] = s1z; + for (n = 1; n < nmax; ++n) { + s2x = c00x * s1x + n * b10 * s0x; + s2y = c00y * s1y + n * b10 * s0y; + s2z = c00z * s1z + n * b10 * s0z; + gx[i+(n+1)*dn] = s2x; + gy[i+(n+1)*dn] = s2y; + gz[i+(n+1)*dn] = s2z; + s0x = s1x; + s0y = s1y; + s0z = s1z; + s1x = s2x; + s1y = s2y; + s1z = s2z; + } + } + + if (mmax > 0) { + + + + s0x = gx[i]; + s0y = gy[i]; + s0z = gz[i]; + s1x = c0px * s0x; + s1y = c0py * s0y; + s1z = c0pz * s0z; + gx[i+dm] = s1x; + gy[i+dm] = s1y; + gz[i+dm] = s1z; + for (m = 1; m < mmax; ++m) { + s2x = c0px * s1x + m * b01 * s0x; + s2y = c0py * s1y + m * b01 * s0y; + s2z = c0pz * s1z + m * b01 * s0z; + gx[i+(m+1)*dm] = s2x; + gy[i+(m+1)*dm] = s2y; + gz[i+(m+1)*dm] = s2z; + s0x = s1x; + s0y = s1y; + s0z = s1z; + s1x = s2x; + s1y = s2y; + s1z = s2z; + } + + if (nmax > 0) { + + + + + s0x = gx[i+dn]; + s0y = gy[i+dn]; + s0z = gz[i+dn]; + s1x = c0px * s0x + b00 * gx[i]; + s1y = c0py * s0y + b00 * gy[i]; + s1z = c0pz * s0z + b00 * gz[i]; + gx[i+dn+dm] = s1x; + gy[i+dn+dm] = s1y; + gz[i+dn+dm] = s1z; + for (m = 1; m < mmax; ++m) { + s2x = c0px*s1x + m*b01*s0x + b00*gx[i+m*dm]; + s2y = c0py*s1y + m*b01*s0y + b00*gy[i+m*dm]; + s2z = c0pz*s1z + m*b01*s0z + b00*gz[i+m*dm]; + gx[i+dn+(m+1)*dm] = s2x; + gy[i+dn+(m+1)*dm] = s2y; + gz[i+dn+(m+1)*dm] = s2z; + s0x = s1x; + s0y = s1y; + s0z = s1z; + s1x = s2x; + s1y = s2y; + s1z = s2z; + } + } + } + + + + + for (m = 1; m <= mmax; ++m) { + off = m * dm; + j = off + i; + s0x = gx[j]; + s0y = gy[j]; + s0z = gz[j]; + s1x = gx[j + dn]; + s1y = gy[j + dn]; + s1z = gz[j + dn]; + for (n = 1; n < nmax; ++n) { + s2x = c00x*s1x + n*b10*s0x + m*b00*gx[j+n*dn-dm]; + s2y = c00y*s1y + n*b10*s0y + m*b00*gy[j+n*dn-dm]; + s2z = c00z*s1z + n*b10*s0z + m*b00*gz[j+n*dn-dm]; + gx[j+(n+1)*dn] = s2x; + gy[j+(n+1)*dn] = s2y; + gz[j+(n+1)*dn] = s2z; + s0x = s1x; + s0y = s1y; + s0z = s1z; + s1x = s2x; + s1y = s2y; + s1z = s2z; + } + } + } +} + + + + +void CINTg0_lj2d_4d(dtype * g, CINTEnvVars *envs) +{ + FINT li = envs->li_ceil; + FINT lk = envs->lk_ceil; + if (li == 0 && lk == 0) { + return; + } + FINT nmax = envs->li_ceil + envs->lj_ceil; + FINT mmax = envs->lk_ceil + envs->ll_ceil; + + FINT lj = envs->lj_ceil; + FINT nroots = envs->nrys_roots; + FINT i, j, k, l, ptr, n; + FINT di = envs->g_stride_i; + FINT dk = envs->g_stride_k; + FINT dl = envs->g_stride_l; + FINT dj = envs->g_stride_j; + dtype *rirj = envs->rirj; + dtype *rkrl = envs->rkrl; + DEF_GXYZ(dtype, g, gx, gy, gz); + dtype *p1x, *p1y, *p1z, *p2x, *p2y, *p2z; + dtype rx, ry, rz; + + + rx = rirj[0]; + ry = rirj[1]; + rz = rirj[2]; + p1x = gx - di; + p1y = gy - di; + p1z = gz - di; + p2x = gx - di + dj; + p2y = gy - di + dj; + p2z = gz - di + dj; + for (i = 1; i <= li; i++) { + for (j = 0; j <= nmax-i; j++) { + for (l = 0; l <= mmax; l++) { + ptr = j*dj + l*dl + i*di; + for (n = ptr; n < ptr+nroots; n++) { + gx[n] = rx * p1x[n] + p2x[n]; + gy[n] = ry * p1y[n] + p2y[n]; + gz[n] = rz * p1z[n] + p2z[n]; + } + } } } + + + rx = rkrl[0]; + ry = rkrl[1]; + rz = rkrl[2]; + p1x = gx - dk; + p1y = gy - dk; + p1z = gz - dk; + p2x = gx - dk + dl; + p2y = gy - dk + dl; + p2z = gz - dk + dl; + for (j = 0; j <= lj; j++) { + for (k = 1; k <= lk; k++) { + for (l = 0; l <= mmax-k; l++) { + ptr = j*dj + l*dl + k*dk; + for (n = ptr; n < ptr+dk; n++) { + gx[n] = rx * p1x[n] + p2x[n]; + gy[n] = ry * p1y[n] + p2y[n]; + gz[n] = rz * p1z[n] + p2z[n]; + } + } } } +} + + +void CINTg0_kj2d_4d(dtype *g, CINTEnvVars *envs) +{ + FINT li = envs->li_ceil; + FINT ll = envs->ll_ceil; + if (li == 0 && ll == 0) { + return; + } + FINT nmax = envs->li_ceil + envs->lj_ceil; + FINT mmax = envs->lk_ceil + envs->ll_ceil; + + FINT lj = envs->lj_ceil; + FINT nroots = envs->nrys_roots; + FINT i, j, k, l, ptr, n; + FINT di = envs->g_stride_i; + FINT dk = envs->g_stride_k; + FINT dl = envs->g_stride_l; + FINT dj = envs->g_stride_j; + dtype *rirj = envs->rirj; + dtype *rkrl = envs->rkrl; + DEF_GXYZ(dtype, g, gx, gy, gz); + dtype *p1x, *p1y, *p1z, *p2x, *p2y, *p2z; + dtype rx, ry, rz; + + + rx = rirj[0]; + ry = rirj[1]; + rz = rirj[2]; + p1x = gx - di; + p1y = gy - di; + p1z = gz - di; + p2x = gx - di + dj; + p2y = gy - di + dj; + p2z = gz - di + dj; + for (i = 1; i <= li; i++) { + for (j = 0; j <= nmax-i; j++) { + for (k = 0; k <= mmax; k++) { + ptr = j*dj + k*dk + i*di; + for (n = ptr; n < ptr+nroots; n++) { + gx[n] = rx * p1x[n] + p2x[n]; + gy[n] = ry * p1y[n] + p2y[n]; + gz[n] = rz * p1z[n] + p2z[n]; + } + } } } + + + rx = rkrl[0]; + ry = rkrl[1]; + rz = rkrl[2]; + p1x = gx - dl; + p1y = gy - dl; + p1z = gz - dl; + p2x = gx - dl + dk; + p2y = gy - dl + dk; + p2z = gz - dl + dk; + for (j = 0; j <= lj; j++) { + for (l = 1; l <= ll; l++) { + for (k = 0; k <= mmax-l; k++) { + ptr = j*dj + l*dl + k*dk; + for (n = ptr; n < ptr+dk; n++) { + gx[n] = rx * p1x[n] + p2x[n]; + gy[n] = ry * p1y[n] + p2y[n]; + gz[n] = rz * p1z[n] + p2z[n]; + } + } } } +} + + +void CINTg0_il2d_4d(dtype *g, CINTEnvVars *envs) +{ + FINT lk = envs->lk_ceil; + FINT lj = envs->lj_ceil; + if (lj == 0 && lk == 0) { + return; + } + FINT nmax = envs->li_ceil + envs->lj_ceil; + FINT mmax = envs->lk_ceil + envs->ll_ceil; + + FINT ll = envs->ll_ceil; + FINT nroots = envs->nrys_roots; + FINT i, j, k, l, ptr, n; + FINT di = envs->g_stride_i; + FINT dk = envs->g_stride_k; + FINT dl = envs->g_stride_l; + FINT dj = envs->g_stride_j; + dtype *rirj = envs->rirj; + dtype *rkrl = envs->rkrl; + DEF_GXYZ(dtype, g, gx, gy, gz); + dtype *p1x, *p1y, *p1z, *p2x, *p2y, *p2z; + dtype rx, ry, rz; + + + rx = rkrl[0]; + ry = rkrl[1]; + rz = rkrl[2]; + p1x = gx - dk; + p1y = gy - dk; + p1z = gz - dk; + p2x = gx - dk + dl; + p2y = gy - dk + dl; + p2z = gz - dk + dl; + for (k = 1; k <= lk; k++) { + for (l = 0; l <= mmax-k; l++) { + for (i = 0; i <= nmax; i++) { + ptr = l*dl + k*dk + i*di; + for (n = ptr; n < ptr+nroots; n++) { + gx[n] = rx * p1x[n] + p2x[n]; + gy[n] = ry * p1y[n] + p2y[n]; + gz[n] = rz * p1z[n] + p2z[n]; + } + } } } + + + rx = rirj[0]; + ry = rirj[1]; + rz = rirj[2]; + p1x = gx - dj; + p1y = gy - dj; + p1z = gz - dj; + p2x = gx - dj + di; + p2y = gy - dj + di; + p2z = gz - dj + di; + for (j = 1; j <= lj; j++) { + for (l = 0; l <= ll; l++) { + for (k = 0; k <= lk; k++) { + ptr = j*dj + l*dl + k*dk; + for (n = ptr; n < ptr+dk-di*j; n++) { + gx[n] = rx * p1x[n] + p2x[n]; + gy[n] = ry * p1y[n] + p2y[n]; + gz[n] = rz * p1z[n] + p2z[n]; + } + } } } +} + + +void CINTg0_ik2d_4d(dtype *g, CINTEnvVars *envs) +{ + FINT lj = envs->lj_ceil; + FINT ll = envs->ll_ceil; + if (lj == 0 && ll == 0) { + return; + } + FINT nmax = envs->li_ceil + envs->lj_ceil; + FINT mmax = envs->lk_ceil + envs->ll_ceil; + + FINT lk = envs->lk_ceil; + FINT nroots = envs->nrys_roots; + FINT i, j, k, l, ptr, n; + FINT di = envs->g_stride_i; + FINT dk = envs->g_stride_k; + FINT dl = envs->g_stride_l; + FINT dj = envs->g_stride_j; + dtype *rirj = envs->rirj; + dtype *rkrl = envs->rkrl; + DEF_GXYZ(dtype, g, gx, gy, gz); + dtype *p1x, *p1y, *p1z, *p2x, *p2y, *p2z; + dtype rx, ry, rz; + + + rx = rkrl[0]; + ry = rkrl[1]; + rz = rkrl[2]; + p1x = gx - dl; + p1y = gy - dl; + p1z = gz - dl; + p2x = gx - dl + dk; + p2y = gy - dl + dk; + p2z = gz - dl + dk; + for (l = 1; l <= ll; l++) { + + + for (k = 0; k <= mmax-l; k++) { + for (i = 0; i <= nmax; i++) { + ptr = l*dl + k*dk + i*di; + for (n = ptr; n < ptr+nroots; n++) { + gx[n] = rx * p1x[n] + p2x[n]; + gy[n] = ry * p1y[n] + p2y[n]; + gz[n] = rz * p1z[n] + p2z[n]; + } + } } + } + + + rx = rirj[0]; + ry = rirj[1]; + rz = rirj[2]; + p1x = gx - dj; + p1y = gy - dj; + p1z = gz - dj; + p2x = gx - dj + di; + p2y = gy - dj + di; + p2z = gz - dj + di; + for (j = 1; j <= lj; j++) { + for (l = 0; l <= ll; l++) { + for (k = 0; k <= lk; k++) { + ptr = j*dj + l*dl + k*dk; + for (n = ptr; n < ptr+dk-di*j; n++) { + gx[n] = rx * p1x[n] + p2x[n]; + gy[n] = ry * p1y[n] + p2y[n]; + gz[n] = rz * p1z[n] + p2z[n]; + } + } } } +} + + +static inline void _g0_2d4d_0000(dtype *g, Rys2eT *bc, CINTEnvVars *envs) +{ + g[0] = 1; + g[1] = 1; + +} + + +static inline void _g0_2d4d_0001(dtype *g, Rys2eT *bc, CINTEnvVars *envs) +{ + dtype *cpx = bc->c0px; + dtype *cpy = bc->c0py; + dtype *cpz = bc->c0pz; + g[0] = 1; + g[1] = cpx[0]; + g[2] = 1; + g[3] = cpy[0]; + + g[5] = cpz[0] * g[4]; +} + + +static inline void _g0_2d4d_0002(dtype *g, Rys2eT *bc, CINTEnvVars *envs) +{ + dtype *cpx = bc->c0px; + dtype *cpy = bc->c0py; + dtype *cpz = bc->c0pz; + dtype *b01 = bc->b01; + g[0] = 1; + g[1] = 1; + g[2] = cpx[0]; + g[3] = cpx[1]; + g[4] = cpx[0] * cpx[0] + b01[0]; + g[5] = cpx[1] * cpx[1] + b01[1]; + g[6] = 1; + g[7] = 1; + g[8] = cpy[0]; + g[9] = cpy[1]; + g[10] = cpy[0] * cpy[0] + b01[0]; + g[11] = cpy[1] * cpy[1] + b01[1]; + + + g[14] = cpz[0] * g[12]; + g[15] = cpz[1] * g[13]; + g[16] = cpz[0] * g[14] + b01[0] * g[12]; + g[17] = cpz[1] * g[15] + b01[1] * g[13]; +} + + +static inline void _g0_2d4d_0003(dtype *g, Rys2eT *bc, CINTEnvVars *envs) +{ + dtype *cpx = bc->c0px; + dtype *cpy = bc->c0py; + dtype *cpz = bc->c0pz; + dtype *b01 = bc->b01; + g[0] = 1; + g[1] = 1; + g[2] = cpx[0]; + g[3] = cpx[1]; + g[4] = cpx[0] * cpx[0] + b01[0]; + g[5] = cpx[1] * cpx[1] + b01[1]; + g[6] = cpx[0] * (g[4] + 2 * b01[0]); + g[7] = cpx[1] * (g[5] + 2 * b01[1]); + g[8] = 1; + g[9] = 1; + g[10] = cpy[0]; + g[11] = cpy[1]; + g[12] = cpy[0] * cpy[0] + b01[0]; + g[13] = cpy[1] * cpy[1] + b01[1]; + g[14] = cpy[0] * (g[12] + 2 * b01[0]); + g[15] = cpy[1] * (g[13] + 2 * b01[1]); + + + g[18] = cpz[0] * g[16]; + g[19] = cpz[1] * g[17]; + g[20] = cpz[0] * g[18] + b01[0] * g[16]; + g[21] = cpz[1] * g[19] + b01[1] * g[17]; + g[22] = cpz[0] * g[20] + 2 * b01[0] * g[18]; + g[23] = cpz[1] * g[21] + 2 * b01[1] * g[19]; +} + + +static inline void _g0_2d4d_0010(dtype *g, Rys2eT *bc, CINTEnvVars *envs) +{ + dtype *cpx = bc->c0px; + dtype *cpy = bc->c0py; + dtype *cpz = bc->c0pz; + g[0] = 1; + g[1] = cpx[0]; + g[2] = 1; + g[3] = cpy[0]; + + g[5] = cpz[0] * g[4]; +} + + +static inline void _g0_2d4d_0011(dtype *g, Rys2eT *bc, CINTEnvVars *envs) +{ + dtype *cpx = bc->c0px; + dtype *cpy = bc->c0py; + dtype *cpz = bc->c0pz; + dtype *b01 = bc->b01; + dtype xkxl = envs->rkrl[0]; + dtype ykyl = envs->rkrl[1]; + dtype zkzl = envs->rkrl[2]; + g[0] = 1; + g[1] = 1; + g[4] = cpx[0]; + g[5] = cpx[1]; + g[6] = cpx[0] * (xkxl + cpx[0]) + b01[0]; + g[7] = cpx[1] * (xkxl + cpx[1]) + b01[1]; + g[2] = xkxl + cpx[0]; + g[3] = xkxl + cpx[1]; + g[12] = 1; + g[13] = 1; + g[16] = cpy[0]; + g[17] = cpy[1]; + g[18] = cpy[0] * (ykyl + cpy[0]) + b01[0]; + g[19] = cpy[1] * (ykyl + cpy[1]) + b01[1]; + g[14] = ykyl + cpy[0]; + g[15] = ykyl + cpy[1]; + + + g[28] = cpz[0] * g[24]; + g[29] = cpz[1] * g[25]; + g[30] = g[28] * (zkzl + cpz[0]) + b01[0] * g[24]; + g[31] = g[29] * (zkzl + cpz[1]) + b01[1] * g[25]; + g[26] = g[24] * (zkzl + cpz[0]); + g[27] = g[25] * (zkzl + cpz[1]); +} + +static inline void _g0_2d4d_0012(dtype *g, Rys2eT *bc, CINTEnvVars *envs) +{ + dtype *cpx = bc->c0px; + dtype *cpy = bc->c0py; + dtype *cpz = bc->c0pz; + dtype *b01 = bc->b01; + dtype xkxl = envs->rkrl[0]; + dtype ykyl = envs->rkrl[1]; + dtype zkzl = envs->rkrl[2]; + g[0] = 1; + g[1] = 1; + g[4] = cpx[0]; + g[5] = cpx[1]; + g[8] = cpx[0] * cpx[0] + b01[0]; + g[9] = cpx[1] * cpx[1] + b01[1]; + g[10] = g[8] * (xkxl + cpx[0]) + cpx[0] * 2 * b01[0]; + g[11] = g[9] * (xkxl + cpx[1]) + cpx[1] * 2 * b01[1]; + g[6] = cpx[0] * (xkxl + cpx[0]) + b01[0]; + g[7] = cpx[1] * (xkxl + cpx[1]) + b01[1]; + g[2] = xkxl + cpx[0]; + g[3] = xkxl + cpx[1]; + g[16] = 1; + g[17] = 1; + g[20] = cpy[0]; + g[21] = cpy[1]; + g[24] = cpy[0] * cpy[0] + b01[0]; + g[25] = cpy[1] * cpy[1] + b01[1]; + g[26] = g[24] * (ykyl + cpy[0]) + cpy[0] * 2 * b01[0]; + g[27] = g[25] * (ykyl + cpy[1]) + cpy[1] * 2 * b01[1]; + g[22] = cpy[0] * (ykyl + cpy[0]) + b01[0]; + g[23] = cpy[1] * (ykyl + cpy[1]) + b01[1]; + g[18] = ykyl + cpy[0]; + g[19] = ykyl + cpy[1]; + + + g[36] = cpz[0] * g[32]; + g[37] = cpz[1] * g[33]; + g[40] = cpz[0] * g[36] + b01[0] * g[32]; + g[41] = cpz[1] * g[37] + b01[1] * g[33]; + g[42] = g[40] * (zkzl + cpz[0]) + 2 * b01[0] * g[36]; + g[43] = g[41] * (zkzl + cpz[1]) + 2 * b01[1] * g[37]; + g[38] = g[36] * (zkzl + cpz[0]) + b01[0] * g[32]; + g[39] = g[37] * (zkzl + cpz[1]) + b01[1] * g[33]; + g[34] = g[32] * (zkzl + cpz[0]); + g[35] = g[33] * (zkzl + cpz[1]); +} + +static inline void _g0_2d4d_0020(dtype *g, Rys2eT *bc, CINTEnvVars *envs) +{ + dtype *cpx = bc->c0px; + dtype *cpy = bc->c0py; + dtype *cpz = bc->c0pz; + dtype *b01 = bc->b01; + g[0] = 1; + g[1] = 1; + g[2] = cpx[0]; + g[3] = cpx[1]; + g[4] = cpx[0] * cpx[0] + b01[0]; + g[5] = cpx[1] * cpx[1] + b01[1]; + g[6] = 1; + g[7] = 1; + g[8] = cpy[0]; + g[9] = cpy[1]; + g[10] = cpy[0] * cpy[0] + b01[0]; + g[11] = cpy[1] * cpy[1] + b01[1]; + + + g[14] = cpz[0] * g[12]; + g[15] = cpz[1] * g[13]; + g[16] = cpz[0] * g[14] + b01[0] * g[12]; + g[17] = cpz[1] * g[15] + b01[1] * g[13]; +} + +static inline void _g0_2d4d_0021(dtype *g, Rys2eT *bc, CINTEnvVars *envs) +{ + dtype *cpx = bc->c0px; + dtype *cpy = bc->c0py; + dtype *cpz = bc->c0pz; + dtype *b01 = bc->b01; + dtype xkxl = envs->rkrl[0]; + dtype ykyl = envs->rkrl[1]; + dtype zkzl = envs->rkrl[2]; + g[0] = 1; + g[1] = 1; + g[2] = cpx[0]; + g[3] = cpx[1]; + g[4] = cpx[0] * cpx[0] + b01[0]; + g[5] = cpx[1] * cpx[1] + b01[1]; + g[8] = xkxl + cpx[0]; + g[9] = xkxl + cpx[1]; + g[10] = cpx[0] * (xkxl + cpx[0]) + b01[0]; + g[11] = cpx[1] * (xkxl + cpx[1]) + b01[1]; + g[12] = g[4] * (xkxl + cpx[0]) + cpx[0] * 2 * b01[0]; + g[13] = g[5] * (xkxl + cpx[1]) + cpx[1] * 2 * b01[1]; + g[16] = 1; + g[17] = 1; + g[18] = cpy[0]; + g[19] = cpy[1]; + g[20] = cpy[0] * cpy[0] + b01[0]; + g[21] = cpy[1] * cpy[1] + b01[1]; + g[24] = ykyl + cpy[0]; + g[25] = ykyl + cpy[1]; + g[26] = cpy[0] * (ykyl + cpy[0]) + b01[0]; + g[27] = cpy[1] * (ykyl + cpy[1]) + b01[1]; + g[28] = g[20] * (ykyl + cpy[0]) + cpy[0] * 2 * b01[0]; + g[29] = g[21] * (ykyl + cpy[1]) + cpy[1] * 2 * b01[1]; + + + g[34] = cpz[0] * g[32]; + g[35] = cpz[1] * g[33]; + g[36] = cpz[0] * g[34] + b01[0] * g[32]; + g[37] = cpz[1] * g[35] + b01[1] * g[33]; + g[40] = g[32] * (zkzl + cpz[0]); + g[41] = g[33] * (zkzl + cpz[1]); + g[42] = g[34] * (zkzl + cpz[0]) + b01[0] * g[32]; + g[43] = g[35] * (zkzl + cpz[1]) + b01[1] * g[33]; + g[44] = g[36] * (zkzl + cpz[0]) + 2 * b01[0] * g[34]; + g[45] = g[37] * (zkzl + cpz[1]) + 2 * b01[1] * g[35]; +} + +static inline void _g0_2d4d_0030(dtype *g, Rys2eT *bc, CINTEnvVars *envs) +{ + dtype *cpx = bc->c0px; + dtype *cpy = bc->c0py; + dtype *cpz = bc->c0pz; + dtype *b01 = bc->b01; + g[0] = 1; + g[1] = 1; + g[2] = cpx[0]; + g[3] = cpx[1]; + g[4] = cpx[0] * cpx[0] + b01[0]; + g[5] = cpx[1] * cpx[1] + b01[1]; + g[6] = cpx[0] * (g[4] + 2 * b01[0]); + g[7] = cpx[1] * (g[5] + 2 * b01[1]); + g[8] = 1; + g[9] = 1; + g[10] = cpy[0]; + g[11] = cpy[1]; + g[12] = cpy[0] * cpy[0] + b01[0]; + g[13] = cpy[1] * cpy[1] + b01[1]; + g[14] = cpy[0] * (g[12] + 2 * b01[0]); + g[15] = cpy[1] * (g[13] + 2 * b01[1]); + + + g[18] = cpz[0] * g[16]; + g[19] = cpz[1] * g[17]; + g[20] = cpz[0] * g[18] + b01[0] * g[16]; + g[21] = cpz[1] * g[19] + b01[1] * g[17]; + g[22] = cpz[0] * g[20] + 2 * b01[0] * g[18]; + g[23] = cpz[1] * g[21] + 2 * b01[1] * g[19]; +} + +static inline void _g0_2d4d_0100(dtype *g, Rys2eT *bc, CINTEnvVars *envs) +{ + dtype *c0x = bc->c00x; + dtype *c0y = bc->c00y; + dtype *c0z = bc->c00z; + g[0] = 1; + g[1] = c0x[0]; + g[2] = 1; + g[3] = c0y[0]; + + g[5] = c0z[0] * g[4]; +} + +static inline void _g0_2d4d_0101(dtype *g, Rys2eT *bc, CINTEnvVars *envs) +{ + dtype *c0x = bc->c00x; + dtype *c0y = bc->c00y; + dtype *c0z = bc->c00z; + dtype *cpx = bc->c0px; + dtype *cpy = bc->c0py; + dtype *cpz = bc->c0pz; + dtype *b00 = bc->b00; + g[0] = 1; + g[1] = 1; + g[2] = cpx[0]; + g[3] = cpx[1]; + g[4] = c0x[0]; + g[5] = c0x[1]; + g[6] = cpx[0] * c0x[0] + b00[0]; + g[7] = cpx[1] * c0x[1] + b00[1]; + g[8] = 1; + g[9] = 1; + g[10] = cpy[0]; + g[11] = cpy[1]; + g[12] = c0y[0]; + g[13] = c0y[1]; + g[14] = cpy[0] * c0y[0] + b00[0]; + g[15] = cpy[1] * c0y[1] + b00[1]; + + + g[18] = cpz[0] * g[16]; + g[19] = cpz[1] * g[17]; + g[20] = c0z[0] * g[16]; + g[21] = c0z[1] * g[17]; + g[22] = cpz[0] * g[20] + b00[0] * g[16]; + g[23] = cpz[1] * g[21] + b00[1] * g[17]; +} + +static inline void _g0_2d4d_0102(dtype *g, Rys2eT *bc, CINTEnvVars *envs) +{ + dtype *c0x = bc->c00x; + dtype *c0y = bc->c00y; + dtype *c0z = bc->c00z; + dtype *cpx = bc->c0px; + dtype *cpy = bc->c0py; + dtype *cpz = bc->c0pz; + dtype *b00 = bc->b00; + dtype *b01 = bc->b01; + g[0] = 1; + g[1] = 1; + g[2] = cpx[0]; + g[3] = cpx[1]; + g[6] = c0x[0]; + g[7] = c0x[1]; + g[4] = cpx[0] * cpx[0] + b01[0]; + g[5] = cpx[1] * cpx[1] + b01[1]; + g[8] = cpx[0] * c0x[0] + b00[0]; + g[9] = cpx[1] * c0x[1] + b00[1]; + g[10] = cpx[0] * (g[8] + b00[0]) + b01[0] * c0x[0]; + g[11] = cpx[1] * (g[9] + b00[1]) + b01[1] * c0x[1]; + g[12] = 1; + g[13] = 1; + g[14] = cpy[0]; + g[15] = cpy[1]; + g[18] = c0y[0]; + g[19] = c0y[1]; + g[16] = cpy[0] * cpy[0] + b01[0]; + g[17] = cpy[1] * cpy[1] + b01[1]; + g[20] = cpy[0] * c0y[0] + b00[0]; + g[21] = cpy[1] * c0y[1] + b00[1]; + g[22] = cpy[0] * (g[20] + b00[0]) + b01[0] * c0y[0]; + g[23] = cpy[1] * (g[21] + b00[1]) + b01[1] * c0y[1]; + + + g[26] = cpz[0] * g[24]; + g[27] = cpz[1] * g[25]; + g[30] = c0z[0] * g[24]; + g[31] = c0z[1] * g[25]; + g[28] = cpz[0] * g[26] + b01[0] * g[24]; + g[29] = cpz[1] * g[27] + b01[1] * g[25]; + g[32] = cpz[0] * g[30] + b00[0] * g[24]; + g[33] = cpz[1] * g[31] + b00[1] * g[25]; + g[34] = cpz[0] * g[32] + b01[0] * g[30] + b00[0] * g[26]; + g[35] = cpz[1] * g[33] + b01[1] * g[31] + b00[1] * g[27]; +} + +static inline void _g0_2d4d_0110(dtype *g, Rys2eT *bc, CINTEnvVars *envs) +{ + dtype *c0x = bc->c00x; + dtype *c0y = bc->c00y; + dtype *c0z = bc->c00z; + dtype *cpx = bc->c0px; + dtype *cpy = bc->c0py; + dtype *cpz = bc->c0pz; + dtype *b00 = bc->b00; + g[0] = 1; + g[1] = 1; + g[2] = cpx[0]; + g[3] = cpx[1]; + g[4] = c0x[0]; + g[5] = c0x[1]; + g[6] = cpx[0] * c0x[0] + b00[0]; + g[7] = cpx[1] * c0x[1] + b00[1]; + g[8] = 1; + g[9] = 1; + g[10] = cpy[0]; + g[11] = cpy[1]; + g[12] = c0y[0]; + g[13] = c0y[1]; + g[14] = cpy[0] * c0y[0] + b00[0]; + g[15] = cpy[1] * c0y[1] + b00[1]; + + + g[18] = cpz[0] * g[16]; + g[19] = cpz[1] * g[17]; + g[20] = c0z[0] * g[16]; + g[21] = c0z[1] * g[17]; + g[22] = cpz[0] * g[20] + b00[0] * g[16]; + g[23] = cpz[1] * g[21] + b00[1] * g[17]; +} + +static inline void _g0_2d4d_0111(dtype *g, Rys2eT *bc, CINTEnvVars *envs) +{ + dtype *c0x = bc->c00x; + dtype *c0y = bc->c00y; + dtype *c0z = bc->c00z; + dtype *cpx = bc->c0px; + dtype *cpy = bc->c0py; + dtype *cpz = bc->c0pz; + dtype *b00 = bc->b00; + dtype *b01 = bc->b01; + dtype xkxl = envs->rkrl[0]; + dtype ykyl = envs->rkrl[1]; + dtype zkzl = envs->rkrl[2]; + g[0] = 1; + g[1] = 1; + g[12] = c0x[0]; + g[13] = c0x[1]; + g[4] = cpx[0]; + g[5] = cpx[1]; + g[16] = cpx[0] * c0x[0] + b00[0]; + g[17] = cpx[1] * c0x[1] + b00[1]; + g[6] = cpx[0] * (xkxl + cpx[0]) + b01[0]; + g[7] = cpx[1] * (xkxl + cpx[1]) + b01[1]; + g[18] = g[16] * (xkxl + cpx[0]) + cpx[0] * b00[0] + b01[0] * c0x[0]; + g[19] = g[17] * (xkxl + cpx[1]) + cpx[1] * b00[1] + b01[1] * c0x[1]; + g[2] = xkxl + cpx[0]; + g[3] = xkxl + cpx[1]; + g[14] = c0x[0] * (xkxl + cpx[0]) + b00[0]; + g[15] = c0x[1] * (xkxl + cpx[1]) + b00[1]; + g[24] = 1; + g[25] = 1; + g[36] = c0y[0]; + g[37] = c0y[1]; + g[28] = cpy[0]; + g[29] = cpy[1]; + g[40] = cpy[0] * c0y[0] + b00[0]; + g[41] = cpy[1] * c0y[1] + b00[1]; + g[30] = cpy[0] * (ykyl + cpy[0]) + b01[0]; + g[31] = cpy[1] * (ykyl + cpy[1]) + b01[1]; + g[42] = g[40] * (ykyl + cpy[0]) + cpy[0] * b00[0] + b01[0] * c0y[0]; + g[43] = g[41] * (ykyl + cpy[1]) + cpy[1] * b00[1] + b01[1] * c0y[1]; + g[26] = ykyl + cpy[0]; + g[27] = ykyl + cpy[1]; + g[38] = c0y[0] * (ykyl + cpy[0]) + b00[0]; + g[39] = c0y[1] * (ykyl + cpy[1]) + b00[1]; + + + g[60] = c0z[0] * g[48]; + g[61] = c0z[1] * g[49]; + g[52] = cpz[0] * g[48]; + g[53] = cpz[1] * g[49]; + g[64] = cpz[0] * g[60] + b00[0] * g[48]; + g[65] = cpz[1] * g[61] + b00[1] * g[49]; + g[54] = g[52] * (zkzl + cpz[0]) + b01[0] * g[48]; + g[55] = g[53] * (zkzl + cpz[1]) + b01[1] * g[49]; + g[66] = g[64] * (zkzl + cpz[0]) + b01[0] * g[60] + b00[0] * g[52]; + g[67] = g[65] * (zkzl + cpz[1]) + b01[1] * g[61] + b00[1] * g[53]; + g[50] = g[48] * (zkzl + cpz[0]); + g[51] = g[49] * (zkzl + cpz[1]); + g[62] = g[60] * (zkzl + cpz[0]) + b00[0] * g[48]; + g[63] = g[61] * (zkzl + cpz[1]) + b00[1] * g[49]; +} + +static inline void _g0_2d4d_0120(dtype *g, Rys2eT *bc, CINTEnvVars *envs) +{ + dtype *c0x = bc->c00x; + dtype *c0y = bc->c00y; + dtype *c0z = bc->c00z; + dtype *cpx = bc->c0px; + dtype *cpy = bc->c0py; + dtype *cpz = bc->c0pz; + dtype *b00 = bc->b00; + dtype *b01 = bc->b01; + g[0] = 1; + g[1] = 1; + g[2] = cpx[0]; + g[3] = cpx[1]; + g[6] = c0x[0]; + g[7] = c0x[1]; + g[4] = cpx[0] * cpx[0] + b01[0]; + g[5] = cpx[1] * cpx[1] + b01[1]; + g[8] = cpx[0] * c0x[0] + b00[0]; + g[9] = cpx[1] * c0x[1] + b00[1]; + g[10] = cpx[0] * (g[8] + b00[0]) + b01[0] * c0x[0]; + g[11] = cpx[1] * (g[9] + b00[1]) + b01[1] * c0x[1]; + g[12] = 1; + g[13] = 1; + g[14] = cpy[0]; + g[15] = cpy[1]; + g[18] = c0y[0]; + g[19] = c0y[1]; + g[16] = cpy[0] * cpy[0] + b01[0]; + g[17] = cpy[1] * cpy[1] + b01[1]; + g[20] = cpy[0] * c0y[0] + b00[0]; + g[21] = cpy[1] * c0y[1] + b00[1]; + g[22] = cpy[0] * (g[20] + b00[0]) + b01[0] * c0y[0]; + g[23] = cpy[1] * (g[21] + b00[1]) + b01[1] * c0y[1]; + + + g[26] = cpz[0] * g[24]; + g[27] = cpz[1] * g[25]; + g[30] = c0z[0] * g[24]; + g[31] = c0z[1] * g[25]; + g[28] = cpz[0] * g[26] + b01[0] * g[24]; + g[29] = cpz[1] * g[27] + b01[1] * g[25]; + g[32] = cpz[0] * g[30] + b00[0] * g[24]; + g[33] = cpz[1] * g[31] + b00[1] * g[25]; + g[34] = cpz[0] * g[32] + b01[0] * g[30] + b00[0] * g[26]; + g[35] = cpz[1] * g[33] + b01[1] * g[31] + b00[1] * g[27]; +} + +static inline void _g0_2d4d_0200(dtype *g, Rys2eT *bc, CINTEnvVars *envs) +{ + dtype *c0x = bc->c00x; + dtype *c0y = bc->c00y; + dtype *c0z = bc->c00z; + dtype *b10 = bc->b10; + g[0] = 1; + g[1] = 1; + g[2] = c0x[0]; + g[3] = c0x[1]; + g[4] = c0x[0] * c0x[0] + b10[0]; + g[5] = c0x[1] * c0x[1] + b10[1]; + g[6] = 1; + g[7] = 1; + g[8] = c0y[0]; + g[9] = c0y[1]; + g[10] = c0y[0] * c0y[0] + b10[0]; + g[11] = c0y[1] * c0y[1] + b10[1]; + + + g[14] = c0z[0] * g[12]; + g[15] = c0z[1] * g[13]; + g[16] = c0z[0] * g[14] + b10[0] * g[12]; + g[17] = c0z[1] * g[15] + b10[1] * g[13]; +} + +static inline void _g0_2d4d_0201(dtype *g, Rys2eT *bc, CINTEnvVars *envs) +{ + dtype *c0x = bc->c00x; + dtype *c0y = bc->c00y; + dtype *c0z = bc->c00z; + dtype *cpx = bc->c0px; + dtype *cpy = bc->c0py; + dtype *cpz = bc->c0pz; + dtype *b00 = bc->b00; + dtype *b10 = bc->b10; + g[0] = 1; + g[1] = 1; + g[4] = c0x[0]; + g[5] = c0x[1]; + g[8] = c0x[0] * c0x[0] + b10[0]; + g[9] = c0x[1] * c0x[1] + b10[1]; + g[2] = cpx[0]; + g[3] = cpx[1]; + g[6] = cpx[0] * c0x[0] + b00[0]; + g[7] = cpx[1] * c0x[1] + b00[1]; + g[10] = c0x[0] * (g[6] + b00[0]) + b10[0] * cpx[0]; + g[11] = c0x[1] * (g[7] + b00[1]) + b10[1] * cpx[1]; + g[12] = 1; + g[13] = 1; + g[16] = c0y[0]; + g[17] = c0y[1]; + g[20] = c0y[0] * c0y[0] + b10[0]; + g[21] = c0y[1] * c0y[1] + b10[1]; + g[14] = cpy[0]; + g[15] = cpy[1]; + g[18] = cpy[0] * c0y[0] + b00[0]; + g[19] = cpy[1] * c0y[1] + b00[1]; + g[22] = c0y[0] * (g[18] + b00[0]) + b10[0] * cpy[0]; + g[23] = c0y[1] * (g[19] + b00[1]) + b10[1] * cpy[1]; + + + g[28] = c0z[0] * g[24]; + g[29] = c0z[1] * g[25]; + g[32] = c0z[0] * g[28] + b10[0] * g[24]; + g[33] = c0z[1] * g[29] + b10[1] * g[25]; + g[26] = cpz[0] * g[24]; + g[27] = cpz[1] * g[25]; + g[30] = cpz[0] * g[28] + b00[0] * g[24]; + g[31] = cpz[1] * g[29] + b00[1] * g[25]; + g[34] = c0z[0] * g[30] + b10[0] * g[26] + b00[0] * g[28]; + g[35] = c0z[1] * g[31] + b10[1] * g[27] + b00[1] * g[29]; +} + +static inline void _g0_2d4d_0210(dtype *g, Rys2eT *bc, CINTEnvVars *envs) +{ + dtype *c0x = bc->c00x; + dtype *c0y = bc->c00y; + dtype *c0z = bc->c00z; + dtype *cpx = bc->c0px; + dtype *cpy = bc->c0py; + dtype *cpz = bc->c0pz; + dtype *b00 = bc->b00; + dtype *b10 = bc->b10; + g[0] = 1; + g[1] = 1; + g[2] = cpx[0]; + g[3] = cpx[1]; + g[4] = c0x[0]; + g[5] = c0x[1]; + g[6] = cpx[0] * c0x[0] + b00[0]; + g[7] = cpx[1] * c0x[1] + b00[1]; + g[8] = c0x[0] * c0x[0] + b10[0]; + g[9] = c0x[1] * c0x[1] + b10[1]; + g[10] = c0x[0] * (g[6] + b00[0]) + b10[0] * cpx[0]; + g[11] = c0x[1] * (g[7] + b00[1]) + b10[1] * cpx[1]; + g[12] = 1; + g[13] = 1; + g[14] = cpy[0]; + g[15] = cpy[1]; + g[16] = c0y[0]; + g[17] = c0y[1]; + g[18] = cpy[0] * c0y[0] + b00[0]; + g[19] = cpy[1] * c0y[1] + b00[1]; + g[20] = c0y[0] * c0y[0] + b10[0]; + g[21] = c0y[1] * c0y[1] + b10[1]; + g[22] = c0y[0] * (g[18] + b00[0]) + b10[0] * cpy[0]; + g[23] = c0y[1] * (g[19] + b00[1]) + b10[1] * cpy[1]; + + + g[26] = cpz[0] * g[24]; + g[27] = cpz[1] * g[25]; + g[28] = c0z[0] * g[24]; + g[29] = c0z[1] * g[25]; + g[30] = cpz[0] * g[28] + b00[0] * g[24]; + g[31] = cpz[1] * g[29] + b00[1] * g[25]; + g[32] = c0z[0] * g[28] + b10[0] * g[24]; + g[33] = c0z[1] * g[29] + b10[1] * g[25]; + g[34] = c0z[0] * g[30] + b10[0] * g[26] + b00[0] * g[28]; + g[35] = c0z[1] * g[31] + b10[1] * g[27] + b00[1] * g[29]; +} + +static inline void _g0_2d4d_0300(dtype *g, Rys2eT *bc, CINTEnvVars *envs) +{ + dtype *c0x = bc->c00x; + dtype *c0y = bc->c00y; + dtype *c0z = bc->c00z; + dtype *b10 = bc->b10; + g[0] = 1; + g[1] = 1; + g[2] = c0x[0]; + g[3] = c0x[1]; + g[4] = c0x[0] * c0x[0] + b10[0]; + g[5] = c0x[1] * c0x[1] + b10[1]; + g[6] = c0x[0] * (g[4] + 2 * b10[0]); + g[7] = c0x[1] * (g[5] + 2 * b10[1]); + g[8] = 1; + g[9] = 1; + g[10] = c0y[0]; + g[11] = c0y[1]; + g[12] = c0y[0] * c0y[0] + b10[0]; + g[13] = c0y[1] * c0y[1] + b10[1]; + g[14] = c0y[0] * (g[12] + 2 * b10[0]); + g[15] = c0y[1] * (g[13] + 2 * b10[1]); + + + g[18] = c0z[0] * g[16]; + g[19] = c0z[1] * g[17]; + g[20] = c0z[0] * g[18] + b10[0] * g[16]; + g[21] = c0z[1] * g[19] + b10[1] * g[17]; + g[22] = c0z[0] * g[20] + 2 * b10[0] * g[18]; + g[23] = c0z[1] * g[21] + 2 * b10[1] * g[19]; +} + +static inline void _g0_2d4d_1000(dtype *g, Rys2eT *bc, CINTEnvVars *envs) +{ + dtype *c0x = bc->c00x; + dtype *c0y = bc->c00y; + dtype *c0z = bc->c00z; + g[0] = 1; + g[1] = c0x[0]; + g[2] = 1; + g[3] = c0y[0]; + + g[5] = c0z[0] * g[4]; +} + +static inline void _g0_2d4d_1001(dtype *g, Rys2eT *bc, CINTEnvVars *envs) +{ + dtype *c0x = bc->c00x; + dtype *c0y = bc->c00y; + dtype *c0z = bc->c00z; + dtype *cpx = bc->c0px; + dtype *cpy = bc->c0py; + dtype *cpz = bc->c0pz; + dtype *b00 = bc->b00; + g[0] = 1; + g[1] = 1; + g[2] = c0x[0]; + g[3] = c0x[1]; + g[4] = cpx[0]; + g[5] = cpx[1]; + g[6] = cpx[0] * c0x[0] + b00[0]; + g[7] = cpx[1] * c0x[1] + b00[1]; + g[8] = 1; + g[9] = 1; + g[10] = c0y[0]; + g[11] = c0y[1]; + g[12] = cpy[0]; + g[13] = cpy[1]; + g[14] = cpy[0] * c0y[0] + b00[0]; + g[15] = cpy[1] * c0y[1] + b00[1]; + + + g[18] = c0z[0] * g[16]; + g[19] = c0z[1] * g[17]; + g[20] = cpz[0] * g[16]; + g[21] = cpz[1] * g[17]; + g[22] = cpz[0] * g[18] + b00[0] * g[16]; + g[23] = cpz[1] * g[19] + b00[1] * g[17]; +} + +static inline void _g0_2d4d_1002(dtype *g, Rys2eT *bc, CINTEnvVars *envs) +{ + dtype *c0x = bc->c00x; + dtype *c0y = bc->c00y; + dtype *c0z = bc->c00z; + dtype *cpx = bc->c0px; + dtype *cpy = bc->c0py; + dtype *cpz = bc->c0pz; + dtype *b00 = bc->b00; + dtype *b01 = bc->b01; + g[0] = 1; + g[1] = 1; + g[2] = c0x[0]; + g[3] = c0x[1]; + g[4] = cpx[0]; + g[5] = cpx[1]; + g[6] = cpx[0] * c0x[0] + b00[0]; + g[7] = cpx[1] * c0x[1] + b00[1]; + g[8] = cpx[0] * cpx[0] + b01[0]; + g[9] = cpx[1] * cpx[1] + b01[1]; + g[10] = cpx[0] * (g[6] + b00[0]) + b01[0] * c0x[0]; + g[11] = cpx[1] * (g[7] + b00[1]) + b01[1] * c0x[1]; + g[12] = 1; + g[13] = 1; + g[14] = c0y[0]; + g[15] = c0y[1]; + g[16] = cpy[0]; + g[17] = cpy[1]; + g[18] = cpy[0] * c0y[0] + b00[0]; + g[19] = cpy[1] * c0y[1] + b00[1]; + g[20] = cpy[0] * cpy[0] + b01[0]; + g[21] = cpy[1] * cpy[1] + b01[1]; + g[22] = cpy[0] * (g[18] + b00[0]) + b01[0] * c0y[0]; + g[23] = cpy[1] * (g[19] + b00[1]) + b01[1] * c0y[1]; + + + g[26] = c0z[0] * g[24]; + g[27] = c0z[1] * g[25]; + g[28] = cpz[0] * g[24]; + g[29] = cpz[1] * g[25]; + g[30] = cpz[0] * g[26] + b00[0] * g[24]; + g[31] = cpz[1] * g[27] + b00[1] * g[25]; + g[32] = cpz[0] * g[28] + b01[0] * g[24]; + g[33] = cpz[1] * g[29] + b01[1] * g[25]; + g[34] = cpz[0] * g[30] + b01[0] * g[26] + b00[0] * g[28]; + g[35] = cpz[1] * g[31] + b01[1] * g[27] + b00[1] * g[29]; +} + +static inline void _g0_2d4d_1010(dtype *g, Rys2eT *bc, CINTEnvVars *envs) +{ + dtype *c0x = bc->c00x; + dtype *c0y = bc->c00y; + dtype *c0z = bc->c00z; + dtype *cpx = bc->c0px; + dtype *cpy = bc->c0py; + dtype *cpz = bc->c0pz; + dtype *b00 = bc->b00; + g[0] = 1; + g[1] = 1; + g[2] = c0x[0]; + g[3] = c0x[1]; + g[4] = cpx[0]; + g[5] = cpx[1]; + g[6] = cpx[0] * c0x[0] + b00[0]; + g[7] = cpx[1] * c0x[1] + b00[1]; + g[8] = 1; + g[9] = 1; + g[10] = c0y[0]; + g[11] = c0y[1]; + g[12] = cpy[0]; + g[13] = cpy[1]; + g[14] = cpy[0] * c0y[0] + b00[0]; + g[15] = cpy[1] * c0y[1] + b00[1]; + + + g[18] = c0z[0] * g[16]; + g[19] = c0z[1] * g[17]; + g[20] = cpz[0] * g[16]; + g[21] = cpz[1] * g[17]; + g[22] = cpz[0] * g[18] + b00[0] * g[16]; + g[23] = cpz[1] * g[19] + b00[1] * g[17]; +} + +static inline void _g0_2d4d_1011(dtype *g, Rys2eT *bc, CINTEnvVars *envs) +{ + dtype *c0x = bc->c00x; + dtype *c0y = bc->c00y; + dtype *c0z = bc->c00z; + dtype *cpx = bc->c0px; + dtype *cpy = bc->c0py; + dtype *cpz = bc->c0pz; + dtype *b00 = bc->b00; + dtype *b01 = bc->b01; + dtype xkxl = envs->rkrl[0]; + dtype ykyl = envs->rkrl[1]; + dtype zkzl = envs->rkrl[2]; + g[0] = 1; + g[1] = 1; + g[2] = c0x[0]; + g[3] = c0x[1]; + g[8] = cpx[0]; + g[9] = cpx[1]; + g[10] = cpx[0] * c0x[0] + b00[0]; + g[11] = cpx[1] * c0x[1] + b00[1]; + g[12] = cpx[0] * (xkxl + cpx[0]) + b01[0]; + g[13] = cpx[1] * (xkxl + cpx[1]) + b01[1]; + g[14] = g[10] * (xkxl + cpx[0]) + cpx[0] * b00[0] + b01[0] * c0x[0]; + g[15] = g[11] * (xkxl + cpx[1]) + cpx[1] * b00[1] + b01[1] * c0x[1]; + g[4] = xkxl + cpx[0]; + g[5] = xkxl + cpx[1]; + g[6] = c0x[0] * (xkxl + cpx[0]) + b00[0]; + g[7] = c0x[1] * (xkxl + cpx[1]) + b00[1]; + g[24] = 1; + g[25] = 1; + g[26] = c0y[0]; + g[27] = c0y[1]; + g[32] = cpy[0]; + g[33] = cpy[1]; + g[34] = cpy[0] * c0y[0] + b00[0]; + g[35] = cpy[1] * c0y[1] + b00[1]; + g[36] = cpy[0] * (ykyl + cpy[0]) + b01[0]; + g[37] = cpy[1] * (ykyl + cpy[1]) + b01[1]; + g[38] = g[34] * (ykyl + cpy[0]) + cpy[0] * b00[0] + b01[0] * c0y[0]; + g[39] = g[35] * (ykyl + cpy[1]) + cpy[1] * b00[1] + b01[1] * c0y[1]; + g[28] = ykyl + cpy[0]; + g[29] = ykyl + cpy[1]; + g[30] = c0y[0] * (ykyl + cpy[0]) + b00[0]; + g[31] = c0y[1] * (ykyl + cpy[1]) + b00[1]; + + + g[50] = c0z[0] * g[48]; + g[51] = c0z[1] * g[49]; + g[56] = cpz[0] * g[48]; + g[57] = cpz[1] * g[49]; + g[58] = cpz[0] * g[50] + b00[0] * g[48]; + g[59] = cpz[1] * g[51] + b00[1] * g[49]; + g[60] = g[56] * (zkzl + cpz[0]) + b01[0] * g[48]; + g[61] = g[57] * (zkzl + cpz[1]) + b01[1] * g[49]; + g[62] = g[58] * (zkzl + cpz[0]) + b01[0] * g[50] + b00[0] * g[56]; + g[63] = g[59] * (zkzl + cpz[1]) + b01[1] * g[51] + b00[1] * g[57]; + g[52] = g[48] * (zkzl + cpz[0]); + g[53] = g[49] * (zkzl + cpz[1]); + g[54] = g[50] * (zkzl + cpz[0]) + b00[0] * g[48]; + g[55] = g[51] * (zkzl + cpz[1]) + b00[1] * g[49]; +} + +static inline void _g0_2d4d_1020(dtype *g, Rys2eT *bc, CINTEnvVars *envs) +{ + dtype *c0x = bc->c00x; + dtype *c0y = bc->c00y; + dtype *c0z = bc->c00z; + dtype *cpx = bc->c0px; + dtype *cpy = bc->c0py; + dtype *cpz = bc->c0pz; + dtype *b00 = bc->b00; + dtype *b01 = bc->b01; + g[0] = 1; + g[1] = 1; + g[2] = c0x[0]; + g[3] = c0x[1]; + g[4] = cpx[0]; + g[5] = cpx[1]; + g[6] = cpx[0] * c0x[0] + b00[0]; + g[7] = cpx[1] * c0x[1] + b00[1]; + g[8] = cpx[0] * cpx[0] + b01[0]; + g[9] = cpx[1] * cpx[1] + b01[1]; + g[10] = cpx[0] * (g[6] + b00[0]) + b01[0] * c0x[0]; + g[11] = cpx[1] * (g[7] + b00[1]) + b01[1] * c0x[1]; + g[12] = 1; + g[13] = 1; + g[14] = c0y[0]; + g[15] = c0y[1]; + g[16] = cpy[0]; + g[17] = cpy[1]; + g[18] = cpy[0] * c0y[0] + b00[0]; + g[19] = cpy[1] * c0y[1] + b00[1]; + g[20] = cpy[0] * cpy[0] + b01[0]; + g[21] = cpy[1] * cpy[1] + b01[1]; + g[22] = cpy[0] * (g[18] + b00[0]) + b01[0] * c0y[0]; + g[23] = cpy[1] * (g[19] + b00[1]) + b01[1] * c0y[1]; + + + g[26] = c0z[0] * g[24]; + g[27] = c0z[1] * g[25]; + g[28] = cpz[0] * g[24]; + g[29] = cpz[1] * g[25]; + g[30] = cpz[0] * g[26] + b00[0] * g[24]; + g[31] = cpz[1] * g[27] + b00[1] * g[25]; + g[32] = cpz[0] * g[28] + b01[0] * g[24]; + g[33] = cpz[1] * g[29] + b01[1] * g[25]; + g[34] = cpz[0] * g[30] + b01[0] * g[26] + b00[0] * g[28]; + g[35] = cpz[1] * g[31] + b01[1] * g[27] + b00[1] * g[29]; +} + +static inline void _g0_2d4d_1100(dtype *g, Rys2eT *bc, CINTEnvVars *envs) +{ + dtype *c0x = bc->c00x; + dtype *c0y = bc->c00y; + dtype *c0z = bc->c00z; + dtype *b10 = bc->b10; + dtype xixj = envs->rirj[0]; + dtype yiyj = envs->rirj[1]; + dtype zizj = envs->rirj[2]; + g[0] = 1; + g[1] = 1; + g[4] = c0x[0]; + g[5] = c0x[1]; + g[6] = c0x[0] * (xixj + c0x[0]) + b10[0]; + g[7] = c0x[1] * (xixj + c0x[1]) + b10[1]; + g[2] = xixj + c0x[0]; + g[3] = xixj + c0x[1]; + g[12] = 1; + g[13] = 1; + g[16] = c0y[0]; + g[17] = c0y[1]; + g[18] = c0y[0] * (yiyj + c0y[0]) + b10[0]; + g[19] = c0y[1] * (yiyj + c0y[1]) + b10[1]; + g[14] = yiyj + c0y[0]; + g[15] = yiyj + c0y[1]; + + + g[28] = c0z[0] * g[24]; + g[29] = c0z[1] * g[25]; + g[30] = g[28] * (zizj + c0z[0]) + b10[0] * g[24]; + g[31] = g[29] * (zizj + c0z[1]) + b10[1] * g[25]; + g[26] = g[24] * (zizj + c0z[0]); + g[27] = g[25] * (zizj + c0z[1]); +} + +static inline void _g0_2d4d_1101(dtype *g, Rys2eT *bc, CINTEnvVars *envs) +{ + dtype *c0x = bc->c00x; + dtype *c0y = bc->c00y; + dtype *c0z = bc->c00z; + dtype *cpx = bc->c0px; + dtype *cpy = bc->c0py; + dtype *cpz = bc->c0pz; + dtype *b00 = bc->b00; + dtype *b10 = bc->b10; + dtype xixj = envs->rirj[0]; + dtype yiyj = envs->rirj[1]; + dtype zizj = envs->rirj[2]; + g[0] = 1; + g[1] = 1; + g[8] = c0x[0]; + g[9] = c0x[1]; + g[4] = cpx[0]; + g[5] = cpx[1]; + g[12] = cpx[0] * c0x[0] + b00[0]; + g[13] = cpx[1] * c0x[1] + b00[1]; + g[10] = c0x[0] * (xixj + c0x[0]) + b10[0]; + g[11] = c0x[1] * (xixj + c0x[1]) + b10[1]; + g[2] = xixj + c0x[0]; + g[3] = xixj + c0x[1]; + g[14] = g[12] * (xixj + c0x[0]) + c0x[0] * b00[0] + b10[0] * cpx[0]; + g[15] = g[13] * (xixj + c0x[1]) + c0x[1] * b00[1] + b10[1] * cpx[1]; + g[6] = cpx[0] * (xixj + c0x[0]) + b00[0]; + g[7] = cpx[1] * (xixj + c0x[1]) + b00[1]; + g[24] = 1; + g[25] = 1; + g[32] = c0y[0]; + g[33] = c0y[1]; + g[28] = cpy[0]; + g[29] = cpy[1]; + g[36] = cpy[0] * c0y[0] + b00[0]; + g[37] = cpy[1] * c0y[1] + b00[1]; + g[34] = c0y[0] * (yiyj + c0y[0]) + b10[0]; + g[35] = c0y[1] * (yiyj + c0y[1]) + b10[1]; + g[26] = yiyj + c0y[0]; + g[27] = yiyj + c0y[1]; + g[38] = g[36] * (yiyj + c0y[0]) + c0y[0] * b00[0] + b10[0] * cpy[0]; + g[39] = g[37] * (yiyj + c0y[1]) + c0y[1] * b00[1] + b10[1] * cpy[1]; + g[30] = cpy[0] * (yiyj + c0y[0]) + b00[0]; + g[31] = cpy[1] * (yiyj + c0y[1]) + b00[1]; + + + g[56] = c0z[0] * g[48]; + g[57] = c0z[1] * g[49]; + g[52] = cpz[0] * g[48]; + g[53] = cpz[1] * g[49]; + g[60] = cpz[0] * g[56] + b00[0] * g[48]; + g[61] = cpz[1] * g[57] + b00[1] * g[49]; + g[58] = g[56] * (zizj + c0z[0]) + b10[0] * g[48]; + g[59] = g[57] * (zizj + c0z[1]) + b10[1] * g[49]; + g[50] = g[48] * (zizj + c0z[0]); + g[51] = g[49] * (zizj + c0z[1]); + g[62] = g[60] * (zizj + c0z[0]) + b10[0] * g[52] + b00[0] * g[56]; + g[63] = g[61] * (zizj + c0z[1]) + b10[1] * g[53] + b00[1] * g[57]; + g[54] = zizj * g[52] + cpz[0] * g[56] + b00[0] * g[48]; + g[55] = zizj * g[53] + cpz[1] * g[57] + b00[1] * g[49]; +} + +static inline void _g0_2d4d_1110(dtype *g, Rys2eT *bc, CINTEnvVars *envs) +{ + dtype *c0x = bc->c00x; + dtype *c0y = bc->c00y; + dtype *c0z = bc->c00z; + dtype *cpx = bc->c0px; + dtype *cpy = bc->c0py; + dtype *cpz = bc->c0pz; + dtype *b00 = bc->b00; + dtype *b10 = bc->b10; + dtype xixj = envs->rirj[0]; + dtype yiyj = envs->rirj[1]; + dtype zizj = envs->rirj[2]; + g[0] = 1; + g[1] = 1; + g[8] = c0x[0]; + g[9] = c0x[1]; + g[4] = cpx[0]; + g[5] = cpx[1]; + g[12] = cpx[0] * c0x[0] + b00[0]; + g[13] = cpx[1] * c0x[1] + b00[1]; + g[10] = c0x[0] * (xixj + c0x[0]) + b10[0]; + g[11] = c0x[1] * (xixj + c0x[1]) + b10[1]; + g[2] = xixj + c0x[0]; + g[3] = xixj + c0x[1]; + g[14] = g[12] * (xixj + c0x[0]) + c0x[0] * b00[0] + b10[0] * cpx[0]; + g[15] = g[13] * (xixj + c0x[1]) + c0x[1] * b00[1] + b10[1] * cpx[1]; + g[6] = cpx[0] * (xixj + c0x[0]) + b00[0]; + g[7] = cpx[1] * (xixj + c0x[1]) + b00[1]; + g[24] = 1; + g[25] = 1; + g[32] = c0y[0]; + g[33] = c0y[1]; + g[28] = cpy[0]; + g[29] = cpy[1]; + g[36] = cpy[0] * c0y[0] + b00[0]; + g[37] = cpy[1] * c0y[1] + b00[1]; + g[34] = c0y[0] * (yiyj + c0y[0]) + b10[0]; + g[35] = c0y[1] * (yiyj + c0y[1]) + b10[1]; + g[26] = yiyj + c0y[0]; + g[27] = yiyj + c0y[1]; + g[38] = g[36] * (yiyj + c0y[0]) + c0y[0] * b00[0] + b10[0] * cpy[0]; + g[39] = g[37] * (yiyj + c0y[1]) + c0y[1] * b00[1] + b10[1] * cpy[1]; + g[30] = cpy[0] * (yiyj + c0y[0]) + b00[0]; + g[31] = cpy[1] * (yiyj + c0y[1]) + b00[1]; + + + g[56] = c0z[0] * g[48]; + g[57] = c0z[1] * g[49]; + g[52] = cpz[0] * g[48]; + g[53] = cpz[1] * g[49]; + g[60] = cpz[0] * g[56] + b00[0] * g[48]; + g[61] = cpz[1] * g[57] + b00[1] * g[49]; + g[58] = g[56] * (zizj + c0z[0]) + b10[0] * g[48]; + g[59] = g[57] * (zizj + c0z[1]) + b10[1] * g[49]; + g[50] = g[48] * (zizj + c0z[0]); + g[51] = g[49] * (zizj + c0z[1]); + g[62] = g[60] * (zizj + c0z[0]) + b10[0] * g[52] + b00[0] * g[56]; + g[63] = g[61] * (zizj + c0z[1]) + b10[1] * g[53] + b00[1] * g[57]; + g[54] = zizj * g[52] + cpz[0] * g[56] + b00[0] * g[48]; + g[55] = zizj * g[53] + cpz[1] * g[57] + b00[1] * g[49]; +} + +static inline void _g0_2d4d_1200(dtype *g, Rys2eT *bc, CINTEnvVars *envs) +{ + dtype *c0x = bc->c00x; + dtype *c0y = bc->c00y; + dtype *c0z = bc->c00z; + dtype *b10 = bc->b10; + dtype xixj = envs->rirj[0]; + dtype yiyj = envs->rirj[1]; + dtype zizj = envs->rirj[2]; + g[0] = 1; + g[1] = 1; + g[4] = c0x[0]; + g[5] = c0x[1]; + g[8] = c0x[0] * c0x[0] + b10[0]; + g[9] = c0x[1] * c0x[1] + b10[1]; + g[10] = g[8] * (xixj + c0x[0]) + c0x[0] * 2 * b10[0]; + g[11] = g[9] * (xixj + c0x[1]) + c0x[1] * 2 * b10[1]; + g[6] = c0x[0] * (xixj + c0x[0]) + b10[0]; + g[7] = c0x[1] * (xixj + c0x[1]) + b10[1]; + g[2] = xixj + c0x[0]; + g[3] = xixj + c0x[1]; + g[16] = 1; + g[17] = 1; + g[20] = c0y[0]; + g[21] = c0y[1]; + g[24] = c0y[0] * c0y[0] + b10[0]; + g[25] = c0y[1] * c0y[1] + b10[1]; + g[26] = g[24] * (yiyj + c0y[0]) + c0y[0] * 2 * b10[0]; + g[27] = g[25] * (yiyj + c0y[1]) + c0y[1] * 2 * b10[1]; + g[22] = c0y[0] * (yiyj + c0y[0]) + b10[0]; + g[23] = c0y[1] * (yiyj + c0y[1]) + b10[1]; + g[18] = yiyj + c0y[0]; + g[19] = yiyj + c0y[1]; + + + g[36] = c0z[0] * g[32]; + g[37] = c0z[1] * g[33]; + g[40] = c0z[0] * g[36] + b10[0] * g[32]; + g[41] = c0z[1] * g[37] + b10[1] * g[33]; + g[42] = g[40] * (zizj + c0z[0]) + 2 * b10[0] * g[36]; + g[43] = g[41] * (zizj + c0z[1]) + 2 * b10[1] * g[37]; + g[38] = g[36] * (zizj + c0z[0]) + b10[0] * g[32]; + g[39] = g[37] * (zizj + c0z[1]) + b10[1] * g[33]; + g[34] = g[32] * (zizj + c0z[0]); + g[35] = g[33] * (zizj + c0z[1]); +} + +static inline void _g0_2d4d_2000(dtype *g, Rys2eT *bc, CINTEnvVars *envs) +{ + dtype *c0x = bc->c00x; + dtype *c0y = bc->c00y; + dtype *c0z = bc->c00z; + dtype *b10 = bc->b10; + g[0] = 1; + g[1] = 1; + g[2] = c0x[0]; + g[3] = c0x[1]; + g[4] = c0x[0] * c0x[0] + b10[0]; + g[5] = c0x[1] * c0x[1] + b10[1]; + g[6] = 1; + g[7] = 1; + g[8] = c0y[0]; + g[9] = c0y[1]; + g[10] = c0y[0] * c0y[0] + b10[0]; + g[11] = c0y[1] * c0y[1] + b10[1]; + + + g[14] = c0z[0] * g[12]; + g[15] = c0z[1] * g[13]; + g[16] = c0z[0] * g[14] + b10[0] * g[12]; + g[17] = c0z[1] * g[15] + b10[1] * g[13]; +} + +static inline void _g0_2d4d_2001(dtype *g, Rys2eT *bc, CINTEnvVars *envs) +{ + dtype *c0x = bc->c00x; + dtype *c0y = bc->c00y; + dtype *c0z = bc->c00z; + dtype *cpx = bc->c0px; + dtype *cpy = bc->c0py; + dtype *cpz = bc->c0pz; + dtype *b00 = bc->b00; + dtype *b10 = bc->b10; + g[0] = 1; + g[1] = 1; + g[2] = c0x[0]; + g[3] = c0x[1]; + g[4] = c0x[0] * c0x[0] + b10[0]; + g[5] = c0x[1] * c0x[1] + b10[1]; + g[6] = cpx[0]; + g[7] = cpx[1]; + g[8] = cpx[0] * c0x[0] + b00[0]; + g[9] = cpx[1] * c0x[1] + b00[1]; + g[10] = c0x[0] * (g[8] + b00[0]) + b10[0] * cpx[0]; + g[11] = c0x[1] * (g[9] + b00[1]) + b10[1] * cpx[1]; + g[12] = 1; + g[13] = 1; + g[14] = c0y[0]; + g[15] = c0y[1]; + g[16] = c0y[0] * c0y[0] + b10[0]; + g[17] = c0y[1] * c0y[1] + b10[1]; + g[18] = cpy[0]; + g[19] = cpy[1]; + g[20] = cpy[0] * c0y[0] + b00[0]; + g[21] = cpy[1] * c0y[1] + b00[1]; + g[22] = c0y[0] * (g[20] + b00[0]) + b10[0] * cpy[0]; + g[23] = c0y[1] * (g[21] + b00[1]) + b10[1] * cpy[1]; + + + g[26] = c0z[0] * g[24]; + g[27] = c0z[1] * g[25]; + g[28] = c0z[0] * g[26] + b10[0] * g[24]; + g[29] = c0z[1] * g[27] + b10[1] * g[25]; + g[30] = cpz[0] * g[24]; + g[31] = cpz[1] * g[25]; + g[32] = cpz[0] * g[26] + b00[0] * g[24]; + g[33] = cpz[1] * g[27] + b00[1] * g[25]; + g[34] = c0z[0] * g[32] + b10[0] * g[30] + b00[0] * g[26]; + g[35] = c0z[1] * g[33] + b10[1] * g[31] + b00[1] * g[27]; +} + +static inline void _g0_2d4d_2010(dtype *g, Rys2eT *bc, CINTEnvVars *envs) +{ + dtype *c0x = bc->c00x; + dtype *c0y = bc->c00y; + dtype *c0z = bc->c00z; + dtype *cpx = bc->c0px; + dtype *cpy = bc->c0py; + dtype *cpz = bc->c0pz; + dtype *b00 = bc->b00; + dtype *b10 = bc->b10; + g[0] = 1; + g[1] = 1; + g[2] = c0x[0]; + g[3] = c0x[1]; + g[4] = c0x[0] * c0x[0] + b10[0]; + g[5] = c0x[1] * c0x[1] + b10[1]; + g[6] = cpx[0]; + g[7] = cpx[1]; + g[8] = cpx[0] * c0x[0] + b00[0]; + g[9] = cpx[1] * c0x[1] + b00[1]; + g[10] = c0x[0] * (g[8] + b00[0]) + b10[0] * cpx[0]; + g[11] = c0x[1] * (g[9] + b00[1]) + b10[1] * cpx[1]; + g[12] = 1; + g[13] = 1; + g[14] = c0y[0]; + g[15] = c0y[1]; + g[16] = c0y[0] * c0y[0] + b10[0]; + g[17] = c0y[1] * c0y[1] + b10[1]; + g[18] = cpy[0]; + g[19] = cpy[1]; + g[20] = cpy[0] * c0y[0] + b00[0]; + g[21] = cpy[1] * c0y[1] + b00[1]; + g[22] = c0y[0] * (g[20] + b00[0]) + b10[0] * cpy[0]; + g[23] = c0y[1] * (g[21] + b00[1]) + b10[1] * cpy[1]; + + + g[26] = c0z[0] * g[24]; + g[27] = c0z[1] * g[25]; + g[28] = c0z[0] * g[26] + b10[0] * g[24]; + g[29] = c0z[1] * g[27] + b10[1] * g[25]; + g[30] = cpz[0] * g[24]; + g[31] = cpz[1] * g[25]; + g[32] = cpz[0] * g[26] + b00[0] * g[24]; + g[33] = cpz[1] * g[27] + b00[1] * g[25]; + g[34] = c0z[0] * g[32] + b10[0] * g[30] + b00[0] * g[26]; + g[35] = c0z[1] * g[33] + b10[1] * g[31] + b00[1] * g[27]; +} + +static inline void _g0_2d4d_2100(dtype *g, Rys2eT *bc, CINTEnvVars *envs) +{ + dtype *c0x = bc->c00x; + dtype *c0y = bc->c00y; + dtype *c0z = bc->c00z; + dtype *b10 = bc->b10; + dtype xixj = envs->rirj[0]; + dtype yiyj = envs->rirj[1]; + dtype zizj = envs->rirj[2]; + g[0] = 1; + g[1] = 1; + g[2] = c0x[0]; + g[3] = c0x[1]; + g[4] = c0x[0] * c0x[0] + b10[0]; + g[5] = c0x[1] * c0x[1] + b10[1]; + g[12] = g[4] * (xixj + c0x[0]) + c0x[0] * 2 * b10[0]; + g[13] = g[5] * (xixj + c0x[1]) + c0x[1] * 2 * b10[1]; + g[10] = c0x[0] * (xixj + c0x[0]) + b10[0]; + g[11] = c0x[1] * (xixj + c0x[1]) + b10[1]; + g[8] = xixj + c0x[0]; + g[9] = xixj + c0x[1]; + g[16] = 1; + g[17] = 1; + g[18] = c0y[0]; + g[19] = c0y[1]; + g[20] = c0y[0] * c0y[0] + b10[0]; + g[21] = c0y[1] * c0y[1] + b10[1]; + g[28] = g[20] * (yiyj + c0y[0]) + c0y[0] * 2 * b10[0]; + g[29] = g[21] * (yiyj + c0y[1]) + c0y[1] * 2 * b10[1]; + g[26] = c0y[0] * (yiyj + c0y[0]) + b10[0]; + g[27] = c0y[1] * (yiyj + c0y[1]) + b10[1]; + g[24] = yiyj + c0y[0]; + g[25] = yiyj + c0y[1]; + + + g[34] = c0z[0] * g[32]; + g[35] = c0z[1] * g[33]; + g[36] = c0z[0] * g[34] + b10[0] * g[32]; + g[37] = c0z[1] * g[35] + b10[1] * g[33]; + g[44] = g[36] * (zizj + c0z[0]) + 2 * b10[0] * g[34]; + g[45] = g[37] * (zizj + c0z[1]) + 2 * b10[1] * g[35]; + g[42] = g[34] * (zizj + c0z[0]) + b10[0] * g[32]; + g[43] = g[35] * (zizj + c0z[1]) + b10[1] * g[33]; + g[40] = g[32] * (zizj + c0z[0]); + g[41] = g[33] * (zizj + c0z[1]); +} + +static inline void _g0_2d4d_3000(dtype *g, Rys2eT *bc, CINTEnvVars *envs) +{ + dtype *c0x = bc->c00x; + dtype *c0y = bc->c00y; + dtype *c0z = bc->c00z; + dtype *b10 = bc->b10; + g[0] = 1; + g[1] = 1; + g[2] = c0x[0]; + g[3] = c0x[1]; + g[4] = c0x[0] * c0x[0] + b10[0]; + g[5] = c0x[1] * c0x[1] + b10[1]; + g[6] = c0x[0] * (g[4] + 2 * b10[0]); + g[7] = c0x[1] * (g[5] + 2 * b10[1]); + g[8] = 1; + g[9] = 1; + g[10] = c0y[0]; + g[11] = c0y[1]; + g[12] = c0y[0] * c0y[0] + b10[0]; + g[13] = c0y[1] * c0y[1] + b10[1]; + g[14] = c0y[0] * (g[12] + 2 * b10[0]); + g[15] = c0y[1] * (g[13] + 2 * b10[1]); + + + g[18] = c0z[0] * g[16]; + g[19] = c0z[1] * g[17]; + g[20] = c0z[0] * g[18] + b10[0] * g[16]; + g[21] = c0z[1] * g[19] + b10[1] * g[17]; + g[22] = c0z[0] * g[20] + 2 * b10[0] * g[18]; + g[23] = c0z[1] * g[21] + 2 * b10[1] * g[19]; +} + +void CINTg0_2e_2d4d_unrolled(dtype *g, Rys2eT *bc, CINTEnvVars *envs) +{ + int type_ijkl = ((envs->li_ceil << 6) | (envs->lj_ceil << 4) | + (envs->lk_ceil << 2) | (envs->ll_ceil)); + switch (type_ijkl) { + case 0b00000000: _g0_2d4d_0000(g, bc, envs); return; + case 0b00000001: _g0_2d4d_0001(g, bc, envs); return; + case 0b00000010: _g0_2d4d_0002(g, bc, envs); return; + case 0b00000011: _g0_2d4d_0003(g, bc, envs); return; + case 0b00000100: _g0_2d4d_0010(g, bc, envs); return; + case 0b00000101: _g0_2d4d_0011(g, bc, envs); return; + case 0b00000110: _g0_2d4d_0012(g, bc, envs); return; + case 0b00001000: _g0_2d4d_0020(g, bc, envs); return; + case 0b00001001: _g0_2d4d_0021(g, bc, envs); return; + case 0b00001100: _g0_2d4d_0030(g, bc, envs); return; + case 0b00010000: _g0_2d4d_0100(g, bc, envs); return; + case 0b00010001: _g0_2d4d_0101(g, bc, envs); return; + case 0b00010010: _g0_2d4d_0102(g, bc, envs); return; + case 0b00010100: _g0_2d4d_0110(g, bc, envs); return; + case 0b00010101: _g0_2d4d_0111(g, bc, envs); return; + case 0b00011000: _g0_2d4d_0120(g, bc, envs); return; + case 0b00100000: _g0_2d4d_0200(g, bc, envs); return; + case 0b00100001: _g0_2d4d_0201(g, bc, envs); return; + case 0b00100100: _g0_2d4d_0210(g, bc, envs); return; + case 0b00110000: _g0_2d4d_0300(g, bc, envs); return; + case 0b01000000: _g0_2d4d_1000(g, bc, envs); return; + case 0b01000001: _g0_2d4d_1001(g, bc, envs); return; + case 0b01000010: _g0_2d4d_1002(g, bc, envs); return; + case 0b01000100: _g0_2d4d_1010(g, bc, envs); return; + case 0b01000101: _g0_2d4d_1011(g, bc, envs); return; + case 0b01001000: _g0_2d4d_1020(g, bc, envs); return; + case 0b01010000: _g0_2d4d_1100(g, bc, envs); return; + case 0b01010001: _g0_2d4d_1101(g, bc, envs); return; + case 0b01010100: _g0_2d4d_1110(g, bc, envs); return; + case 0b01100000: _g0_2d4d_1200(g, bc, envs); return; + case 0b10000000: _g0_2d4d_2000(g, bc, envs); return; + case 0b10000001: _g0_2d4d_2001(g, bc, envs); return; + case 0b10000100: _g0_2d4d_2010(g, bc, envs); return; + case 0b10010000: _g0_2d4d_2100(g, bc, envs); return; + case 0b11000000: _g0_2d4d_3000(g, bc, envs); return; + } + //fprintf(stderr, "Dimension error for CINTg0_2e_lj2d4d: iklj = %d %d %d %d", + // (int)envs->li_ceil, (int)envs->lk_ceil, + // (int)envs->ll_ceil, (int)envs->lj_ceil); +} + +static inline void _srg0_2d4d_0000(dtype *g, Rys2eT *bc, CINTEnvVars *envs) +{ + g[0] = 1; + g[1] = 1; + g[2] = 1; + g[3] = 1; + + +} + +static inline void _srg0_2d4d_0001(dtype *g, Rys2eT *bc, CINTEnvVars *envs) +{ + dtype *cpx = bc->c0px; + dtype *cpy = bc->c0py; + dtype *cpz = bc->c0pz; + g[0] = 1; + g[1] = 1; + g[2] = cpx[0]; + g[3] = cpx[1]; + g[4] = 1; + g[5] = 1; + g[6] = cpy[0]; + g[7] = cpy[1]; + + + g[10] = cpz[0] * g[8]; + g[11] = cpz[1] * g[9]; +} + +static inline void _srg0_2d4d_0002(dtype *g, Rys2eT *bc, CINTEnvVars *envs) +{ + dtype *cpx = bc->c0px; + dtype *cpy = bc->c0py; + dtype *cpz = bc->c0pz; + dtype *b01 = bc->b01; + g[0] = 1; + g[1] = 1; + g[2] = 1; + g[3] = 1; + g[4] = cpx[0]; + g[5] = cpx[1]; + g[6] = cpx[2]; + g[7] = cpx[3]; + g[8] = cpx[0] * cpx[0] + b01[0]; + g[9] = cpx[1] * cpx[1] + b01[1]; + g[10] = cpx[2] * cpx[2] + b01[2]; + g[11] = cpx[3] * cpx[3] + b01[3]; + g[12] = 1; + g[13] = 1; + g[14] = 1; + g[15] = 1; + g[16] = cpy[0]; + g[17] = cpy[1]; + g[18] = cpy[2]; + g[19] = cpy[3]; + g[20] = cpy[0] * cpy[0] + b01[0]; + g[21] = cpy[1] * cpy[1] + b01[1]; + g[22] = cpy[2] * cpy[2] + b01[2]; + g[23] = cpy[3] * cpy[3] + b01[3]; + + + + + g[28] = cpz[0] * g[24]; + g[29] = cpz[1] * g[25]; + g[30] = cpz[2] * g[26]; + g[31] = cpz[3] * g[27]; + g[32] = cpz[0] * g[28] + b01[0] * g[24]; + g[33] = cpz[1] * g[29] + b01[1] * g[25]; + g[34] = cpz[2] * g[30] + b01[2] * g[26]; + g[35] = cpz[3] * g[31] + b01[3] * g[27]; +} + +static inline void _srg0_2d4d_0003(dtype *g, Rys2eT *bc, CINTEnvVars *envs) +{ + dtype *cpx = bc->c0px; + dtype *cpy = bc->c0py; + dtype *cpz = bc->c0pz; + dtype *b01 = bc->b01; + g[0] = 1; + g[1] = 1; + g[2] = 1; + g[3] = 1; + g[4] = cpx[0]; + g[5] = cpx[1]; + g[6] = cpx[2]; + g[7] = cpx[3]; + g[8] = cpx[0] * cpx[0] + b01[0]; + g[9] = cpx[1] * cpx[1] + b01[1]; + g[10] = cpx[2] * cpx[2] + b01[2]; + g[11] = cpx[3] * cpx[3] + b01[3]; + g[12] = cpx[0] * (g[8] + 2 * b01[0]); + g[13] = cpx[1] * (g[9] + 2 * b01[1]); + g[14] = cpx[2] * (g[10] + 2 * b01[2]); + g[15] = cpx[3] * (g[11] + 2 * b01[3]); + g[16] = 1; + g[17] = 1; + g[18] = 1; + g[19] = 1; + g[20] = cpy[0]; + g[21] = cpy[1]; + g[22] = cpy[2]; + g[23] = cpy[3]; + g[24] = cpy[0] * cpy[0] + b01[0]; + g[25] = cpy[1] * cpy[1] + b01[1]; + g[26] = cpy[2] * cpy[2] + b01[2]; + g[27] = cpy[3] * cpy[3] + b01[3]; + g[28] = cpy[0] * (g[24] + 2 * b01[0]); + g[29] = cpy[1] * (g[25] + 2 * b01[1]); + g[30] = cpy[2] * (g[26] + 2 * b01[2]); + g[31] = cpy[3] * (g[27] + 2 * b01[3]); + + + + + g[36] = cpz[0] * g[32]; + g[37] = cpz[1] * g[33]; + g[38] = cpz[2] * g[34]; + g[39] = cpz[3] * g[35]; + g[40] = cpz[0] * g[36] + b01[0] * g[32]; + g[41] = cpz[1] * g[37] + b01[1] * g[33]; + g[42] = cpz[2] * g[38] + b01[2] * g[34]; + g[43] = cpz[3] * g[39] + b01[3] * g[35]; + g[44] = cpz[0] * g[40] + 2 * b01[0] * g[36]; + g[45] = cpz[1] * g[41] + 2 * b01[1] * g[37]; + g[46] = cpz[2] * g[42] + 2 * b01[2] * g[38]; + g[47] = cpz[3] * g[43] + 2 * b01[3] * g[39]; +} + +static inline void _srg0_2d4d_0010(dtype *g, Rys2eT *bc, CINTEnvVars *envs) +{ + dtype *cpx = bc->c0px; + dtype *cpy = bc->c0py; + dtype *cpz = bc->c0pz; + g[0] = 1; + g[1] = 1; + g[2] = cpx[0]; + g[3] = cpx[1]; + g[4] = 1; + g[5] = 1; + g[6] = cpy[0]; + g[7] = cpy[1]; + + + g[10] = cpz[0] * g[8]; + g[11] = cpz[1] * g[9]; +} + +static inline void _srg0_2d4d_0011(dtype *g, Rys2eT *bc, CINTEnvVars *envs) +{ + dtype *cpx = bc->c0px; + dtype *cpy = bc->c0py; + dtype *cpz = bc->c0pz; + dtype *b01 = bc->b01; + dtype xkxl = envs->rkrl[0]; + dtype ykyl = envs->rkrl[1]; + dtype zkzl = envs->rkrl[2]; + g[0] = 1; + g[1] = 1; + g[2] = 1; + g[3] = 1; + g[8] = cpx[0]; + g[9] = cpx[1]; + g[10] = cpx[2]; + g[11] = cpx[3]; + g[12] = cpx[0] * (xkxl + cpx[0]) + b01[0]; + g[13] = cpx[1] * (xkxl + cpx[1]) + b01[1]; + g[14] = cpx[2] * (xkxl + cpx[2]) + b01[2]; + g[15] = cpx[3] * (xkxl + cpx[3]) + b01[3]; + g[4] = xkxl + cpx[0]; + g[5] = xkxl + cpx[1]; + g[6] = xkxl + cpx[2]; + g[7] = xkxl + cpx[3]; + g[24] = 1; + g[25] = 1; + g[26] = 1; + g[27] = 1; + g[32] = cpy[0]; + g[33] = cpy[1]; + g[34] = cpy[2]; + g[35] = cpy[3]; + g[36] = cpy[0] * (ykyl + cpy[0]) + b01[0]; + g[37] = cpy[1] * (ykyl + cpy[1]) + b01[1]; + g[38] = cpy[2] * (ykyl + cpy[2]) + b01[2]; + g[39] = cpy[3] * (ykyl + cpy[3]) + b01[3]; + g[28] = ykyl + cpy[0]; + g[29] = ykyl + cpy[1]; + g[30] = ykyl + cpy[2]; + g[31] = ykyl + cpy[3]; + + + + + g[56] = cpz[0] * g[48]; + g[57] = cpz[1] * g[49]; + g[58] = cpz[2] * g[50]; + g[59] = cpz[3] * g[51]; + g[60] = g[56] * (zkzl + cpz[0]) + b01[0] * g[48]; + g[61] = g[57] * (zkzl + cpz[1]) + b01[1] * g[49]; + g[62] = g[58] * (zkzl + cpz[2]) + b01[2] * g[50]; + g[63] = g[59] * (zkzl + cpz[3]) + b01[3] * g[51]; + g[52] = g[48] * (zkzl + cpz[0]); + g[53] = g[49] * (zkzl + cpz[1]); + g[54] = g[50] * (zkzl + cpz[2]); + g[55] = g[51] * (zkzl + cpz[3]); +} + +static inline void _srg0_2d4d_0012(dtype *g, Rys2eT *bc, CINTEnvVars *envs) +{ + dtype *cpx = bc->c0px; + dtype *cpy = bc->c0py; + dtype *cpz = bc->c0pz; + dtype *b01 = bc->b01; + dtype xkxl = envs->rkrl[0]; + dtype ykyl = envs->rkrl[1]; + dtype zkzl = envs->rkrl[2]; + g[0] = 1; + g[1] = 1; + g[2] = 1; + g[3] = 1; + g[8] = cpx[0]; + g[9] = cpx[1]; + g[10] = cpx[2]; + g[11] = cpx[3]; + g[16] = cpx[0] * cpx[0] + b01[0]; + g[17] = cpx[1] * cpx[1] + b01[1]; + g[18] = cpx[2] * cpx[2] + b01[2]; + g[19] = cpx[3] * cpx[3] + b01[3]; + g[20] = g[16] * (xkxl + cpx[0]) + cpx[0] * 2 * b01[0]; + g[21] = g[17] * (xkxl + cpx[1]) + cpx[1] * 2 * b01[1]; + g[22] = g[18] * (xkxl + cpx[2]) + cpx[2] * 2 * b01[2]; + g[23] = g[19] * (xkxl + cpx[3]) + cpx[3] * 2 * b01[3]; + g[12] = cpx[0] * (xkxl + cpx[0]) + b01[0]; + g[13] = cpx[1] * (xkxl + cpx[1]) + b01[1]; + g[14] = cpx[2] * (xkxl + cpx[2]) + b01[2]; + g[15] = cpx[3] * (xkxl + cpx[3]) + b01[3]; + g[4] = xkxl + cpx[0]; + g[5] = xkxl + cpx[1]; + g[6] = xkxl + cpx[2]; + g[7] = xkxl + cpx[3]; + g[32] = 1; + g[33] = 1; + g[34] = 1; + g[35] = 1; + g[40] = cpy[0]; + g[41] = cpy[1]; + g[42] = cpy[2]; + g[43] = cpy[3]; + g[48] = cpy[0] * cpy[0] + b01[0]; + g[49] = cpy[1] * cpy[1] + b01[1]; + g[50] = cpy[2] * cpy[2] + b01[2]; + g[51] = cpy[3] * cpy[3] + b01[3]; + g[52] = g[48] * (ykyl + cpy[0]) + cpy[0] * 2 * b01[0]; + g[53] = g[49] * (ykyl + cpy[1]) + cpy[1] * 2 * b01[1]; + g[54] = g[50] * (ykyl + cpy[2]) + cpy[2] * 2 * b01[2]; + g[55] = g[51] * (ykyl + cpy[3]) + cpy[3] * 2 * b01[3]; + g[44] = cpy[0] * (ykyl + cpy[0]) + b01[0]; + g[45] = cpy[1] * (ykyl + cpy[1]) + b01[1]; + g[46] = cpy[2] * (ykyl + cpy[2]) + b01[2]; + g[47] = cpy[3] * (ykyl + cpy[3]) + b01[3]; + g[36] = ykyl + cpy[0]; + g[37] = ykyl + cpy[1]; + g[38] = ykyl + cpy[2]; + g[39] = ykyl + cpy[3]; + + + + + g[72] = cpz[0] * g[64]; + g[73] = cpz[1] * g[65]; + g[74] = cpz[2] * g[66]; + g[75] = cpz[3] * g[67]; + g[80] = cpz[0] * g[72] + b01[0] * g[64]; + g[81] = cpz[1] * g[73] + b01[1] * g[65]; + g[82] = cpz[2] * g[74] + b01[2] * g[66]; + g[83] = cpz[3] * g[75] + b01[3] * g[67]; + g[84] = g[80] * (zkzl + cpz[0]) + 2 * b01[0] * g[72]; + g[85] = g[81] * (zkzl + cpz[1]) + 2 * b01[1] * g[73]; + g[86] = g[82] * (zkzl + cpz[2]) + 2 * b01[2] * g[74]; + g[87] = g[83] * (zkzl + cpz[3]) + 2 * b01[3] * g[75]; + g[76] = g[72] * (zkzl + cpz[0]) + b01[0] * g[64]; + g[77] = g[73] * (zkzl + cpz[1]) + b01[1] * g[65]; + g[78] = g[74] * (zkzl + cpz[2]) + b01[2] * g[66]; + g[79] = g[75] * (zkzl + cpz[3]) + b01[3] * g[67]; + g[68] = g[64] * (zkzl + cpz[0]); + g[69] = g[65] * (zkzl + cpz[1]); + g[70] = g[66] * (zkzl + cpz[2]); + g[71] = g[67] * (zkzl + cpz[3]); +} + +static inline void _srg0_2d4d_0020(dtype *g, Rys2eT *bc, CINTEnvVars *envs) +{ + dtype *cpx = bc->c0px; + dtype *cpy = bc->c0py; + dtype *cpz = bc->c0pz; + dtype *b01 = bc->b01; + g[0] = 1; + g[1] = 1; + g[2] = 1; + g[3] = 1; + g[4] = cpx[0]; + g[5] = cpx[1]; + g[6] = cpx[2]; + g[7] = cpx[3]; + g[8] = cpx[0] * cpx[0] + b01[0]; + g[9] = cpx[1] * cpx[1] + b01[1]; + g[10] = cpx[2] * cpx[2] + b01[2]; + g[11] = cpx[3] * cpx[3] + b01[3]; + g[12] = 1; + g[13] = 1; + g[14] = 1; + g[15] = 1; + g[16] = cpy[0]; + g[17] = cpy[1]; + g[18] = cpy[2]; + g[19] = cpy[3]; + g[20] = cpy[0] * cpy[0] + b01[0]; + g[21] = cpy[1] * cpy[1] + b01[1]; + g[22] = cpy[2] * cpy[2] + b01[2]; + g[23] = cpy[3] * cpy[3] + b01[3]; + + + + + g[28] = cpz[0] * g[24]; + g[29] = cpz[1] * g[25]; + g[30] = cpz[2] * g[26]; + g[31] = cpz[3] * g[27]; + g[32] = cpz[0] * g[28] + b01[0] * g[24]; + g[33] = cpz[1] * g[29] + b01[1] * g[25]; + g[34] = cpz[2] * g[30] + b01[2] * g[26]; + g[35] = cpz[3] * g[31] + b01[3] * g[27]; +} + +static inline void _srg0_2d4d_0021(dtype *g, Rys2eT *bc, CINTEnvVars *envs) +{ + dtype *cpx = bc->c0px; + dtype *cpy = bc->c0py; + dtype *cpz = bc->c0pz; + dtype *b01 = bc->b01; + dtype xkxl = envs->rkrl[0]; + dtype ykyl = envs->rkrl[1]; + dtype zkzl = envs->rkrl[2]; + g[0] = 1; + g[1] = 1; + g[2] = 1; + g[3] = 1; + g[4] = cpx[0]; + g[5] = cpx[1]; + g[6] = cpx[2]; + g[7] = cpx[3]; + g[8] = cpx[0] * cpx[0] + b01[0]; + g[9] = cpx[1] * cpx[1] + b01[1]; + g[10] = cpx[2] * cpx[2] + b01[2]; + g[11] = cpx[3] * cpx[3] + b01[3]; + g[16] = xkxl + cpx[0]; + g[17] = xkxl + cpx[1]; + g[18] = xkxl + cpx[2]; + g[19] = xkxl + cpx[3]; + g[20] = cpx[0] * (xkxl + cpx[0]) + b01[0]; + g[21] = cpx[1] * (xkxl + cpx[1]) + b01[1]; + g[22] = cpx[2] * (xkxl + cpx[2]) + b01[2]; + g[23] = cpx[3] * (xkxl + cpx[3]) + b01[3]; + g[24] = g[8] * (xkxl + cpx[0]) + cpx[0] * 2 * b01[0]; + g[25] = g[9] * (xkxl + cpx[1]) + cpx[1] * 2 * b01[1]; + g[26] = g[10] * (xkxl + cpx[2]) + cpx[2] * 2 * b01[2]; + g[27] = g[11] * (xkxl + cpx[3]) + cpx[3] * 2 * b01[3]; + g[32] = 1; + g[33] = 1; + g[34] = 1; + g[35] = 1; + g[36] = cpy[0]; + g[37] = cpy[1]; + g[38] = cpy[2]; + g[39] = cpy[3]; + g[40] = cpy[0] * cpy[0] + b01[0]; + g[41] = cpy[1] * cpy[1] + b01[1]; + g[42] = cpy[2] * cpy[2] + b01[2]; + g[43] = cpy[3] * cpy[3] + b01[3]; + g[48] = ykyl + cpy[0]; + g[49] = ykyl + cpy[1]; + g[50] = ykyl + cpy[2]; + g[51] = ykyl + cpy[3]; + g[52] = cpy[0] * (ykyl + cpy[0]) + b01[0]; + g[53] = cpy[1] * (ykyl + cpy[1]) + b01[1]; + g[54] = cpy[2] * (ykyl + cpy[2]) + b01[2]; + g[55] = cpy[3] * (ykyl + cpy[3]) + b01[3]; + g[56] = g[40] * (ykyl + cpy[0]) + cpy[0] * 2 * b01[0]; + g[57] = g[41] * (ykyl + cpy[1]) + cpy[1] * 2 * b01[1]; + g[58] = g[42] * (ykyl + cpy[2]) + cpy[2] * 2 * b01[2]; + g[59] = g[43] * (ykyl + cpy[3]) + cpy[3] * 2 * b01[3]; + + + + + g[68] = cpz[0] * g[64]; + g[69] = cpz[1] * g[65]; + g[70] = cpz[2] * g[66]; + g[71] = cpz[3] * g[67]; + g[72] = cpz[0] * g[68] + b01[0] * g[64]; + g[73] = cpz[1] * g[69] + b01[1] * g[65]; + g[74] = cpz[2] * g[70] + b01[2] * g[66]; + g[75] = cpz[3] * g[71] + b01[3] * g[67]; + g[80] = g[64] * (zkzl + cpz[0]); + g[81] = g[65] * (zkzl + cpz[1]); + g[82] = g[66] * (zkzl + cpz[2]); + g[83] = g[67] * (zkzl + cpz[3]); + g[84] = g[68] * (zkzl + cpz[0]) + b01[0] * g[64]; + g[85] = g[69] * (zkzl + cpz[1]) + b01[1] * g[65]; + g[86] = g[70] * (zkzl + cpz[2]) + b01[2] * g[66]; + g[87] = g[71] * (zkzl + cpz[3]) + b01[3] * g[67]; + g[88] = g[72] * (zkzl + cpz[0]) + 2 * b01[0] * g[68]; + g[89] = g[73] * (zkzl + cpz[1]) + 2 * b01[1] * g[69]; + g[90] = g[74] * (zkzl + cpz[2]) + 2 * b01[2] * g[70]; + g[91] = g[75] * (zkzl + cpz[3]) + 2 * b01[3] * g[71]; +} + +static inline void _srg0_2d4d_0030(dtype *g, Rys2eT *bc, CINTEnvVars *envs) +{ + dtype *cpx = bc->c0px; + dtype *cpy = bc->c0py; + dtype *cpz = bc->c0pz; + dtype *b01 = bc->b01; + g[0] = 1; + g[1] = 1; + g[2] = 1; + g[3] = 1; + g[4] = cpx[0]; + g[5] = cpx[1]; + g[6] = cpx[2]; + g[7] = cpx[3]; + g[8] = cpx[0] * cpx[0] + b01[0]; + g[9] = cpx[1] * cpx[1] + b01[1]; + g[10] = cpx[2] * cpx[2] + b01[2]; + g[11] = cpx[3] * cpx[3] + b01[3]; + g[12] = cpx[0] * (g[8] + 2 * b01[0]); + g[13] = cpx[1] * (g[9] + 2 * b01[1]); + g[14] = cpx[2] * (g[10] + 2 * b01[2]); + g[15] = cpx[3] * (g[11] + 2 * b01[3]); + g[16] = 1; + g[17] = 1; + g[18] = 1; + g[19] = 1; + g[20] = cpy[0]; + g[21] = cpy[1]; + g[22] = cpy[2]; + g[23] = cpy[3]; + g[24] = cpy[0] * cpy[0] + b01[0]; + g[25] = cpy[1] * cpy[1] + b01[1]; + g[26] = cpy[2] * cpy[2] + b01[2]; + g[27] = cpy[3] * cpy[3] + b01[3]; + g[28] = cpy[0] * (g[24] + 2 * b01[0]); + g[29] = cpy[1] * (g[25] + 2 * b01[1]); + g[30] = cpy[2] * (g[26] + 2 * b01[2]); + g[31] = cpy[3] * (g[27] + 2 * b01[3]); + + + + + g[36] = cpz[0] * g[32]; + g[37] = cpz[1] * g[33]; + g[38] = cpz[2] * g[34]; + g[39] = cpz[3] * g[35]; + g[40] = cpz[0] * g[36] + b01[0] * g[32]; + g[41] = cpz[1] * g[37] + b01[1] * g[33]; + g[42] = cpz[2] * g[38] + b01[2] * g[34]; + g[43] = cpz[3] * g[39] + b01[3] * g[35]; + g[44] = cpz[0] * g[40] + 2 * b01[0] * g[36]; + g[45] = cpz[1] * g[41] + 2 * b01[1] * g[37]; + g[46] = cpz[2] * g[42] + 2 * b01[2] * g[38]; + g[47] = cpz[3] * g[43] + 2 * b01[3] * g[39]; +} + +static inline void _srg0_2d4d_0100(dtype *g, Rys2eT *bc, CINTEnvVars *envs) +{ + dtype *c0x = bc->c00x; + dtype *c0y = bc->c00y; + dtype *c0z = bc->c00z; + g[0] = 1; + g[1] = 1; + g[2] = c0x[0]; + g[3] = c0x[1]; + g[4] = 1; + g[5] = 1; + g[6] = c0y[0]; + g[7] = c0y[1]; + + + g[10] = c0z[0] * g[8]; + g[11] = c0z[1] * g[9]; +} + +static inline void _srg0_2d4d_0101(dtype *g, Rys2eT *bc, CINTEnvVars *envs) +{ + dtype *c0x = bc->c00x; + dtype *c0y = bc->c00y; + dtype *c0z = bc->c00z; + dtype *cpx = bc->c0px; + dtype *cpy = bc->c0py; + dtype *cpz = bc->c0pz; + dtype *b00 = bc->b00; + g[0] = 1; + g[1] = 1; + g[2] = 1; + g[3] = 1; + g[4] = cpx[0]; + g[5] = cpx[1]; + g[6] = cpx[2]; + g[7] = cpx[3]; + g[8] = c0x[0]; + g[9] = c0x[1]; + g[10] = c0x[2]; + g[11] = c0x[3]; + g[12] = cpx[0] * c0x[0] + b00[0]; + g[13] = cpx[1] * c0x[1] + b00[1]; + g[14] = cpx[2] * c0x[2] + b00[2]; + g[15] = cpx[3] * c0x[3] + b00[3]; + g[16] = 1; + g[17] = 1; + g[18] = 1; + g[19] = 1; + g[20] = cpy[0]; + g[21] = cpy[1]; + g[22] = cpy[2]; + g[23] = cpy[3]; + g[24] = c0y[0]; + g[25] = c0y[1]; + g[26] = c0y[2]; + g[27] = c0y[3]; + g[28] = cpy[0] * c0y[0] + b00[0]; + g[29] = cpy[1] * c0y[1] + b00[1]; + g[30] = cpy[2] * c0y[2] + b00[2]; + g[31] = cpy[3] * c0y[3] + b00[3]; + + + + + g[36] = cpz[0] * g[32]; + g[37] = cpz[1] * g[33]; + g[38] = cpz[2] * g[34]; + g[39] = cpz[3] * g[35]; + g[40] = c0z[0] * g[32]; + g[41] = c0z[1] * g[33]; + g[42] = c0z[2] * g[34]; + g[43] = c0z[3] * g[35]; + g[44] = cpz[0] * g[40] + b00[0] * g[32]; + g[45] = cpz[1] * g[41] + b00[1] * g[33]; + g[46] = cpz[2] * g[42] + b00[2] * g[34]; + g[47] = cpz[3] * g[43] + b00[3] * g[35]; +} + +static inline void _srg0_2d4d_0102(dtype *g, Rys2eT *bc, CINTEnvVars *envs) +{ + dtype *c0x = bc->c00x; + dtype *c0y = bc->c00y; + dtype *c0z = bc->c00z; + dtype *cpx = bc->c0px; + dtype *cpy = bc->c0py; + dtype *cpz = bc->c0pz; + dtype *b00 = bc->b00; + dtype *b01 = bc->b01; + g[0] = 1; + g[1] = 1; + g[2] = 1; + g[3] = 1; + g[4] = cpx[0]; + g[5] = cpx[1]; + g[6] = cpx[2]; + g[7] = cpx[3]; + g[12] = c0x[0]; + g[13] = c0x[1]; + g[14] = c0x[2]; + g[15] = c0x[3]; + g[8] = cpx[0] * cpx[0] + b01[0]; + g[9] = cpx[1] * cpx[1] + b01[1]; + g[10] = cpx[2] * cpx[2] + b01[2]; + g[11] = cpx[3] * cpx[3] + b01[3]; + g[16] = cpx[0] * c0x[0] + b00[0]; + g[17] = cpx[1] * c0x[1] + b00[1]; + g[18] = cpx[2] * c0x[2] + b00[2]; + g[19] = cpx[3] * c0x[3] + b00[3]; + g[20] = cpx[0] * (g[16] + b00[0]) + b01[0] * c0x[0]; + g[21] = cpx[1] * (g[17] + b00[1]) + b01[1] * c0x[1]; + g[22] = cpx[2] * (g[18] + b00[2]) + b01[2] * c0x[2]; + g[23] = cpx[3] * (g[19] + b00[3]) + b01[3] * c0x[3]; + g[24] = 1; + g[25] = 1; + g[26] = 1; + g[27] = 1; + g[28] = cpy[0]; + g[29] = cpy[1]; + g[30] = cpy[2]; + g[31] = cpy[3]; + g[36] = c0y[0]; + g[37] = c0y[1]; + g[38] = c0y[2]; + g[39] = c0y[3]; + g[32] = cpy[0] * cpy[0] + b01[0]; + g[33] = cpy[1] * cpy[1] + b01[1]; + g[34] = cpy[2] * cpy[2] + b01[2]; + g[35] = cpy[3] * cpy[3] + b01[3]; + g[40] = cpy[0] * c0y[0] + b00[0]; + g[41] = cpy[1] * c0y[1] + b00[1]; + g[42] = cpy[2] * c0y[2] + b00[2]; + g[43] = cpy[3] * c0y[3] + b00[3]; + g[44] = cpy[0] * (g[40] + b00[0]) + b01[0] * c0y[0]; + g[45] = cpy[1] * (g[41] + b00[1]) + b01[1] * c0y[1]; + g[46] = cpy[2] * (g[42] + b00[2]) + b01[2] * c0y[2]; + g[47] = cpy[3] * (g[43] + b00[3]) + b01[3] * c0y[3]; + + + + + g[52] = cpz[0] * g[48]; + g[53] = cpz[1] * g[49]; + g[54] = cpz[2] * g[50]; + g[55] = cpz[3] * g[51]; + g[60] = c0z[0] * g[48]; + g[61] = c0z[1] * g[49]; + g[62] = c0z[2] * g[50]; + g[63] = c0z[3] * g[51]; + g[56] = cpz[0] * g[52] + b01[0] * g[48]; + g[57] = cpz[1] * g[53] + b01[1] * g[49]; + g[58] = cpz[2] * g[54] + b01[2] * g[50]; + g[59] = cpz[3] * g[55] + b01[3] * g[51]; + g[64] = cpz[0] * g[60] + b00[0] * g[48]; + g[65] = cpz[1] * g[61] + b00[1] * g[49]; + g[66] = cpz[2] * g[62] + b00[2] * g[50]; + g[67] = cpz[3] * g[63] + b00[3] * g[51]; + g[68] = cpz[0] * g[64] + b01[0] * g[60] + b00[0] * g[52]; + g[69] = cpz[1] * g[65] + b01[1] * g[61] + b00[1] * g[53]; + g[70] = cpz[2] * g[66] + b01[2] * g[62] + b00[2] * g[54]; + g[71] = cpz[3] * g[67] + b01[3] * g[63] + b00[3] * g[55]; +} + +static inline void _srg0_2d4d_0110(dtype *g, Rys2eT *bc, CINTEnvVars *envs) +{ + dtype *c0x = bc->c00x; + dtype *c0y = bc->c00y; + dtype *c0z = bc->c00z; + dtype *cpx = bc->c0px; + dtype *cpy = bc->c0py; + dtype *cpz = bc->c0pz; + dtype *b00 = bc->b00; + g[0] = 1; + g[1] = 1; + g[2] = 1; + g[3] = 1; + g[4] = cpx[0]; + g[5] = cpx[1]; + g[6] = cpx[2]; + g[7] = cpx[3]; + g[8] = c0x[0]; + g[9] = c0x[1]; + g[10] = c0x[2]; + g[11] = c0x[3]; + g[12] = cpx[0] * c0x[0] + b00[0]; + g[13] = cpx[1] * c0x[1] + b00[1]; + g[14] = cpx[2] * c0x[2] + b00[2]; + g[15] = cpx[3] * c0x[3] + b00[3]; + g[16] = 1; + g[17] = 1; + g[18] = 1; + g[19] = 1; + g[20] = cpy[0]; + g[21] = cpy[1]; + g[22] = cpy[2]; + g[23] = cpy[3]; + g[24] = c0y[0]; + g[25] = c0y[1]; + g[26] = c0y[2]; + g[27] = c0y[3]; + g[28] = cpy[0] * c0y[0] + b00[0]; + g[29] = cpy[1] * c0y[1] + b00[1]; + g[30] = cpy[2] * c0y[2] + b00[2]; + g[31] = cpy[3] * c0y[3] + b00[3]; + + + + + g[36] = cpz[0] * g[32]; + g[37] = cpz[1] * g[33]; + g[38] = cpz[2] * g[34]; + g[39] = cpz[3] * g[35]; + g[40] = c0z[0] * g[32]; + g[41] = c0z[1] * g[33]; + g[42] = c0z[2] * g[34]; + g[43] = c0z[3] * g[35]; + g[44] = cpz[0] * g[40] + b00[0] * g[32]; + g[45] = cpz[1] * g[41] + b00[1] * g[33]; + g[46] = cpz[2] * g[42] + b00[2] * g[34]; + g[47] = cpz[3] * g[43] + b00[3] * g[35]; +} + +static inline void _srg0_2d4d_0111(dtype *g, Rys2eT *bc, CINTEnvVars *envs) +{ + dtype *c0x = bc->c00x; + dtype *c0y = bc->c00y; + dtype *c0z = bc->c00z; + dtype *cpx = bc->c0px; + dtype *cpy = bc->c0py; + dtype *cpz = bc->c0pz; + dtype *b00 = bc->b00; + dtype *b01 = bc->b01; + dtype xkxl = envs->rkrl[0]; + dtype ykyl = envs->rkrl[1]; + dtype zkzl = envs->rkrl[2]; + g[0] = 1; + g[1] = 1; + g[2] = 1; + g[3] = 1; + g[24] = c0x[0]; + g[25] = c0x[1]; + g[26] = c0x[2]; + g[27] = c0x[3]; + g[8] = cpx[0]; + g[9] = cpx[1]; + g[10] = cpx[2]; + g[11] = cpx[3]; + g[32] = cpx[0] * c0x[0] + b00[0]; + g[33] = cpx[1] * c0x[1] + b00[1]; + g[34] = cpx[2] * c0x[2] + b00[2]; + g[35] = cpx[3] * c0x[3] + b00[3]; + g[12] = cpx[0] * (xkxl + cpx[0]) + b01[0]; + g[13] = cpx[1] * (xkxl + cpx[1]) + b01[1]; + g[14] = cpx[2] * (xkxl + cpx[2]) + b01[2]; + g[15] = cpx[3] * (xkxl + cpx[3]) + b01[3]; + g[36] = g[32] * (xkxl + cpx[0]) + cpx[0] * b00[0] + b01[0] * c0x[0]; + g[37] = g[33] * (xkxl + cpx[1]) + cpx[1] * b00[1] + b01[1] * c0x[1]; + g[38] = g[34] * (xkxl + cpx[2]) + cpx[2] * b00[2] + b01[2] * c0x[2]; + g[39] = g[35] * (xkxl + cpx[3]) + cpx[3] * b00[3] + b01[3] * c0x[3]; + g[4] = xkxl + cpx[0]; + g[5] = xkxl + cpx[1]; + g[6] = xkxl + cpx[2]; + g[7] = xkxl + cpx[3]; + g[28] = c0x[0] * (xkxl + cpx[0]) + b00[0]; + g[29] = c0x[1] * (xkxl + cpx[1]) + b00[1]; + g[30] = c0x[2] * (xkxl + cpx[2]) + b00[2]; + g[31] = c0x[3] * (xkxl + cpx[3]) + b00[3]; + g[48] = 1; + g[49] = 1; + g[50] = 1; + g[51] = 1; + g[72] = c0y[0]; + g[73] = c0y[1]; + g[74] = c0y[2]; + g[75] = c0y[3]; + g[56] = cpy[0]; + g[57] = cpy[1]; + g[58] = cpy[2]; + g[59] = cpy[3]; + g[80] = cpy[0] * c0y[0] + b00[0]; + g[81] = cpy[1] * c0y[1] + b00[1]; + g[82] = cpy[2] * c0y[2] + b00[2]; + g[83] = cpy[3] * c0y[3] + b00[3]; + g[60] = cpy[0] * (ykyl + cpy[0]) + b01[0]; + g[61] = cpy[1] * (ykyl + cpy[1]) + b01[1]; + g[62] = cpy[2] * (ykyl + cpy[2]) + b01[2]; + g[63] = cpy[3] * (ykyl + cpy[3]) + b01[3]; + g[84] = g[80] * (ykyl + cpy[0]) + cpy[0] * b00[0] + b01[0] * c0y[0]; + g[85] = g[81] * (ykyl + cpy[1]) + cpy[1] * b00[1] + b01[1] * c0y[1]; + g[86] = g[82] * (ykyl + cpy[2]) + cpy[2] * b00[2] + b01[2] * c0y[2]; + g[87] = g[83] * (ykyl + cpy[3]) + cpy[3] * b00[3] + b01[3] * c0y[3]; + g[52] = ykyl + cpy[0]; + g[53] = ykyl + cpy[1]; + g[54] = ykyl + cpy[2]; + g[55] = ykyl + cpy[3]; + g[76] = c0y[0] * (ykyl + cpy[0]) + b00[0]; + g[77] = c0y[1] * (ykyl + cpy[1]) + b00[1]; + g[78] = c0y[2] * (ykyl + cpy[2]) + b00[2]; + g[79] = c0y[3] * (ykyl + cpy[3]) + b00[3]; + + + + + g[120] = c0z[0] * g[96]; + g[121] = c0z[1] * g[97]; + g[122] = c0z[2] * g[98]; + g[123] = c0z[3] * g[99]; + g[104] = cpz[0] * g[96]; + g[105] = cpz[1] * g[97]; + g[106] = cpz[2] * g[98]; + g[107] = cpz[3] * g[99]; + g[128] = cpz[0] * g[120] + b00[0] * g[96]; + g[129] = cpz[1] * g[121] + b00[1] * g[97]; + g[130] = cpz[2] * g[122] + b00[2] * g[98]; + g[131] = cpz[3] * g[123] + b00[3] * g[99]; + g[108] = g[104] * (zkzl + cpz[0]) + b01[0] * g[96]; + g[109] = g[105] * (zkzl + cpz[1]) + b01[1] * g[97]; + g[110] = g[106] * (zkzl + cpz[2]) + b01[2] * g[98]; + g[111] = g[107] * (zkzl + cpz[3]) + b01[3] * g[99]; + g[132] = g[128] * (zkzl + cpz[0]) + b01[0] * g[120] + b00[0] * g[104]; + g[133] = g[129] * (zkzl + cpz[1]) + b01[1] * g[121] + b00[1] * g[105]; + g[134] = g[130] * (zkzl + cpz[2]) + b01[2] * g[122] + b00[2] * g[106]; + g[135] = g[131] * (zkzl + cpz[3]) + b01[3] * g[123] + b00[3] * g[107]; + g[100] = g[96] * (zkzl + cpz[0]); + g[101] = g[97] * (zkzl + cpz[1]); + g[102] = g[98] * (zkzl + cpz[2]); + g[103] = g[99] * (zkzl + cpz[3]); + g[124] = g[120] * (zkzl + cpz[0]) + b00[0] * g[96]; + g[125] = g[121] * (zkzl + cpz[1]) + b00[1] * g[97]; + g[126] = g[122] * (zkzl + cpz[2]) + b00[2] * g[98]; + g[127] = g[123] * (zkzl + cpz[3]) + b00[3] * g[99]; +} + +static inline void _srg0_2d4d_0120(dtype *g, Rys2eT *bc, CINTEnvVars *envs) +{ + dtype *c0x = bc->c00x; + dtype *c0y = bc->c00y; + dtype *c0z = bc->c00z; + dtype *cpx = bc->c0px; + dtype *cpy = bc->c0py; + dtype *cpz = bc->c0pz; + dtype *b00 = bc->b00; + dtype *b01 = bc->b01; + g[0] = 1; + g[1] = 1; + g[2] = 1; + g[3] = 1; + g[4] = cpx[0]; + g[5] = cpx[1]; + g[6] = cpx[2]; + g[7] = cpx[3]; + g[12] = c0x[0]; + g[13] = c0x[1]; + g[14] = c0x[2]; + g[15] = c0x[3]; + g[8] = cpx[0] * cpx[0] + b01[0]; + g[9] = cpx[1] * cpx[1] + b01[1]; + g[10] = cpx[2] * cpx[2] + b01[2]; + g[11] = cpx[3] * cpx[3] + b01[3]; + g[16] = cpx[0] * c0x[0] + b00[0]; + g[17] = cpx[1] * c0x[1] + b00[1]; + g[18] = cpx[2] * c0x[2] + b00[2]; + g[19] = cpx[3] * c0x[3] + b00[3]; + g[20] = cpx[0] * (g[16] + b00[0]) + b01[0] * c0x[0]; + g[21] = cpx[1] * (g[17] + b00[1]) + b01[1] * c0x[1]; + g[22] = cpx[2] * (g[18] + b00[2]) + b01[2] * c0x[2]; + g[23] = cpx[3] * (g[19] + b00[3]) + b01[3] * c0x[3]; + g[24] = 1; + g[25] = 1; + g[26] = 1; + g[27] = 1; + g[28] = cpy[0]; + g[29] = cpy[1]; + g[30] = cpy[2]; + g[31] = cpy[3]; + g[36] = c0y[0]; + g[37] = c0y[1]; + g[38] = c0y[2]; + g[39] = c0y[3]; + g[32] = cpy[0] * cpy[0] + b01[0]; + g[33] = cpy[1] * cpy[1] + b01[1]; + g[34] = cpy[2] * cpy[2] + b01[2]; + g[35] = cpy[3] * cpy[3] + b01[3]; + g[40] = cpy[0] * c0y[0] + b00[0]; + g[41] = cpy[1] * c0y[1] + b00[1]; + g[42] = cpy[2] * c0y[2] + b00[2]; + g[43] = cpy[3] * c0y[3] + b00[3]; + g[44] = cpy[0] * (g[40] + b00[0]) + b01[0] * c0y[0]; + g[45] = cpy[1] * (g[41] + b00[1]) + b01[1] * c0y[1]; + g[46] = cpy[2] * (g[42] + b00[2]) + b01[2] * c0y[2]; + g[47] = cpy[3] * (g[43] + b00[3]) + b01[3] * c0y[3]; + + + + + g[52] = cpz[0] * g[48]; + g[53] = cpz[1] * g[49]; + g[54] = cpz[2] * g[50]; + g[55] = cpz[3] * g[51]; + g[60] = c0z[0] * g[48]; + g[61] = c0z[1] * g[49]; + g[62] = c0z[2] * g[50]; + g[63] = c0z[3] * g[51]; + g[56] = cpz[0] * g[52] + b01[0] * g[48]; + g[57] = cpz[1] * g[53] + b01[1] * g[49]; + g[58] = cpz[2] * g[54] + b01[2] * g[50]; + g[59] = cpz[3] * g[55] + b01[3] * g[51]; + g[64] = cpz[0] * g[60] + b00[0] * g[48]; + g[65] = cpz[1] * g[61] + b00[1] * g[49]; + g[66] = cpz[2] * g[62] + b00[2] * g[50]; + g[67] = cpz[3] * g[63] + b00[3] * g[51]; + g[68] = cpz[0] * g[64] + b01[0] * g[60] + b00[0] * g[52]; + g[69] = cpz[1] * g[65] + b01[1] * g[61] + b00[1] * g[53]; + g[70] = cpz[2] * g[66] + b01[2] * g[62] + b00[2] * g[54]; + g[71] = cpz[3] * g[67] + b01[3] * g[63] + b00[3] * g[55]; +} + +static inline void _srg0_2d4d_0200(dtype *g, Rys2eT *bc, CINTEnvVars *envs) +{ + dtype *c0x = bc->c00x; + dtype *c0y = bc->c00y; + dtype *c0z = bc->c00z; + dtype *b10 = bc->b10; + g[0] = 1; + g[1] = 1; + g[2] = 1; + g[3] = 1; + g[4] = c0x[0]; + g[5] = c0x[1]; + g[6] = c0x[2]; + g[7] = c0x[3]; + g[8] = c0x[0] * c0x[0] + b10[0]; + g[9] = c0x[1] * c0x[1] + b10[1]; + g[10] = c0x[2] * c0x[2] + b10[2]; + g[11] = c0x[3] * c0x[3] + b10[3]; + g[12] = 1; + g[13] = 1; + g[14] = 1; + g[15] = 1; + g[16] = c0y[0]; + g[17] = c0y[1]; + g[18] = c0y[2]; + g[19] = c0y[3]; + g[20] = c0y[0] * c0y[0] + b10[0]; + g[21] = c0y[1] * c0y[1] + b10[1]; + g[22] = c0y[2] * c0y[2] + b10[2]; + g[23] = c0y[3] * c0y[3] + b10[3]; + + + + + g[28] = c0z[0] * g[24]; + g[29] = c0z[1] * g[25]; + g[30] = c0z[2] * g[26]; + g[31] = c0z[3] * g[27]; + g[32] = c0z[0] * g[28] + b10[0] * g[24]; + g[33] = c0z[1] * g[29] + b10[1] * g[25]; + g[34] = c0z[2] * g[30] + b10[2] * g[26]; + g[35] = c0z[3] * g[31] + b10[3] * g[27]; +} + +static inline void _srg0_2d4d_0201(dtype *g, Rys2eT *bc, CINTEnvVars *envs) +{ + dtype *c0x = bc->c00x; + dtype *c0y = bc->c00y; + dtype *c0z = bc->c00z; + dtype *cpx = bc->c0px; + dtype *cpy = bc->c0py; + dtype *cpz = bc->c0pz; + dtype *b00 = bc->b00; + dtype *b10 = bc->b10; + g[0] = 1; + g[1] = 1; + g[2] = 1; + g[3] = 1; + g[8] = c0x[0]; + g[9] = c0x[1]; + g[10] = c0x[2]; + g[11] = c0x[3]; + g[16] = c0x[0] * c0x[0] + b10[0]; + g[17] = c0x[1] * c0x[1] + b10[1]; + g[18] = c0x[2] * c0x[2] + b10[2]; + g[19] = c0x[3] * c0x[3] + b10[3]; + g[4] = cpx[0]; + g[5] = cpx[1]; + g[6] = cpx[2]; + g[7] = cpx[3]; + g[12] = cpx[0] * c0x[0] + b00[0]; + g[13] = cpx[1] * c0x[1] + b00[1]; + g[14] = cpx[2] * c0x[2] + b00[2]; + g[15] = cpx[3] * c0x[3] + b00[3]; + g[20] = c0x[0] * (g[12] + b00[0]) + b10[0] * cpx[0]; + g[21] = c0x[1] * (g[13] + b00[1]) + b10[1] * cpx[1]; + g[22] = c0x[2] * (g[14] + b00[2]) + b10[2] * cpx[2]; + g[23] = c0x[3] * (g[15] + b00[3]) + b10[3] * cpx[3]; + g[24] = 1; + g[25] = 1; + g[26] = 1; + g[27] = 1; + g[32] = c0y[0]; + g[33] = c0y[1]; + g[34] = c0y[2]; + g[35] = c0y[3]; + g[40] = c0y[0] * c0y[0] + b10[0]; + g[41] = c0y[1] * c0y[1] + b10[1]; + g[42] = c0y[2] * c0y[2] + b10[2]; + g[43] = c0y[3] * c0y[3] + b10[3]; + g[28] = cpy[0]; + g[29] = cpy[1]; + g[30] = cpy[2]; + g[31] = cpy[3]; + g[36] = cpy[0] * c0y[0] + b00[0]; + g[37] = cpy[1] * c0y[1] + b00[1]; + g[38] = cpy[2] * c0y[2] + b00[2]; + g[39] = cpy[3] * c0y[3] + b00[3]; + g[44] = c0y[0] * (g[36] + b00[0]) + b10[0] * cpy[0]; + g[45] = c0y[1] * (g[37] + b00[1]) + b10[1] * cpy[1]; + g[46] = c0y[2] * (g[38] + b00[2]) + b10[2] * cpy[2]; + g[47] = c0y[3] * (g[39] + b00[3]) + b10[3] * cpy[3]; + + + + + g[56] = c0z[0] * g[48]; + g[57] = c0z[1] * g[49]; + g[58] = c0z[2] * g[50]; + g[59] = c0z[3] * g[51]; + g[64] = c0z[0] * g[56] + b10[0] * g[48]; + g[65] = c0z[1] * g[57] + b10[1] * g[49]; + g[66] = c0z[2] * g[58] + b10[2] * g[50]; + g[67] = c0z[3] * g[59] + b10[3] * g[51]; + g[52] = cpz[0] * g[48]; + g[53] = cpz[1] * g[49]; + g[54] = cpz[2] * g[50]; + g[55] = cpz[3] * g[51]; + g[60] = cpz[0] * g[56] + b00[0] * g[48]; + g[61] = cpz[1] * g[57] + b00[1] * g[49]; + g[62] = cpz[2] * g[58] + b00[2] * g[50]; + g[63] = cpz[3] * g[59] + b00[3] * g[51]; + g[68] = c0z[0] * g[60] + b10[0] * g[52] + b00[0] * g[56]; + g[69] = c0z[1] * g[61] + b10[1] * g[53] + b00[1] * g[57]; + g[70] = c0z[2] * g[62] + b10[2] * g[54] + b00[2] * g[58]; + g[71] = c0z[3] * g[63] + b10[3] * g[55] + b00[3] * g[59]; +} + +static inline void _srg0_2d4d_0210(dtype *g, Rys2eT *bc, CINTEnvVars *envs) +{ + dtype *c0x = bc->c00x; + dtype *c0y = bc->c00y; + dtype *c0z = bc->c00z; + dtype *cpx = bc->c0px; + dtype *cpy = bc->c0py; + dtype *cpz = bc->c0pz; + dtype *b00 = bc->b00; + dtype *b10 = bc->b10; + g[0] = 1; + g[1] = 1; + g[2] = 1; + g[3] = 1; + g[4] = cpx[0]; + g[5] = cpx[1]; + g[6] = cpx[2]; + g[7] = cpx[3]; + g[8] = c0x[0]; + g[9] = c0x[1]; + g[10] = c0x[2]; + g[11] = c0x[3]; + g[12] = cpx[0] * c0x[0] + b00[0]; + g[13] = cpx[1] * c0x[1] + b00[1]; + g[14] = cpx[2] * c0x[2] + b00[2]; + g[15] = cpx[3] * c0x[3] + b00[3]; + g[16] = c0x[0] * c0x[0] + b10[0]; + g[17] = c0x[1] * c0x[1] + b10[1]; + g[18] = c0x[2] * c0x[2] + b10[2]; + g[19] = c0x[3] * c0x[3] + b10[3]; + g[20] = c0x[0] * (g[12] + b00[0]) + b10[0] * cpx[0]; + g[21] = c0x[1] * (g[13] + b00[1]) + b10[1] * cpx[1]; + g[22] = c0x[2] * (g[14] + b00[2]) + b10[2] * cpx[2]; + g[23] = c0x[3] * (g[15] + b00[3]) + b10[3] * cpx[3]; + g[24] = 1; + g[25] = 1; + g[26] = 1; + g[27] = 1; + g[28] = cpy[0]; + g[29] = cpy[1]; + g[30] = cpy[2]; + g[31] = cpy[3]; + g[32] = c0y[0]; + g[33] = c0y[1]; + g[34] = c0y[2]; + g[35] = c0y[3]; + g[36] = cpy[0] * c0y[0] + b00[0]; + g[37] = cpy[1] * c0y[1] + b00[1]; + g[38] = cpy[2] * c0y[2] + b00[2]; + g[39] = cpy[3] * c0y[3] + b00[3]; + g[40] = c0y[0] * c0y[0] + b10[0]; + g[41] = c0y[1] * c0y[1] + b10[1]; + g[42] = c0y[2] * c0y[2] + b10[2]; + g[43] = c0y[3] * c0y[3] + b10[3]; + g[44] = c0y[0] * (g[36] + b00[0]) + b10[0] * cpy[0]; + g[45] = c0y[1] * (g[37] + b00[1]) + b10[1] * cpy[1]; + g[46] = c0y[2] * (g[38] + b00[2]) + b10[2] * cpy[2]; + g[47] = c0y[3] * (g[39] + b00[3]) + b10[3] * cpy[3]; + + + + + g[52] = cpz[0] * g[48]; + g[53] = cpz[1] * g[49]; + g[54] = cpz[2] * g[50]; + g[55] = cpz[3] * g[51]; + g[56] = c0z[0] * g[48]; + g[57] = c0z[1] * g[49]; + g[58] = c0z[2] * g[50]; + g[59] = c0z[3] * g[51]; + g[60] = cpz[0] * g[56] + b00[0] * g[48]; + g[61] = cpz[1] * g[57] + b00[1] * g[49]; + g[62] = cpz[2] * g[58] + b00[2] * g[50]; + g[63] = cpz[3] * g[59] + b00[3] * g[51]; + g[64] = c0z[0] * g[56] + b10[0] * g[48]; + g[65] = c0z[1] * g[57] + b10[1] * g[49]; + g[66] = c0z[2] * g[58] + b10[2] * g[50]; + g[67] = c0z[3] * g[59] + b10[3] * g[51]; + g[68] = c0z[0] * g[60] + b10[0] * g[52] + b00[0] * g[56]; + g[69] = c0z[1] * g[61] + b10[1] * g[53] + b00[1] * g[57]; + g[70] = c0z[2] * g[62] + b10[2] * g[54] + b00[2] * g[58]; + g[71] = c0z[3] * g[63] + b10[3] * g[55] + b00[3] * g[59]; +} + +static inline void _srg0_2d4d_0300(dtype *g, Rys2eT *bc, CINTEnvVars *envs) +{ + dtype *c0x = bc->c00x; + dtype *c0y = bc->c00y; + dtype *c0z = bc->c00z; + dtype *b10 = bc->b10; + g[0] = 1; + g[1] = 1; + g[2] = 1; + g[3] = 1; + g[4] = c0x[0]; + g[5] = c0x[1]; + g[6] = c0x[2]; + g[7] = c0x[3]; + g[8] = c0x[0] * c0x[0] + b10[0]; + g[9] = c0x[1] * c0x[1] + b10[1]; + g[10] = c0x[2] * c0x[2] + b10[2]; + g[11] = c0x[3] * c0x[3] + b10[3]; + g[12] = c0x[0] * (g[8] + 2 * b10[0]); + g[13] = c0x[1] * (g[9] + 2 * b10[1]); + g[14] = c0x[2] * (g[10] + 2 * b10[2]); + g[15] = c0x[3] * (g[11] + 2 * b10[3]); + g[16] = 1; + g[17] = 1; + g[18] = 1; + g[19] = 1; + g[20] = c0y[0]; + g[21] = c0y[1]; + g[22] = c0y[2]; + g[23] = c0y[3]; + g[24] = c0y[0] * c0y[0] + b10[0]; + g[25] = c0y[1] * c0y[1] + b10[1]; + g[26] = c0y[2] * c0y[2] + b10[2]; + g[27] = c0y[3] * c0y[3] + b10[3]; + g[28] = c0y[0] * (g[24] + 2 * b10[0]); + g[29] = c0y[1] * (g[25] + 2 * b10[1]); + g[30] = c0y[2] * (g[26] + 2 * b10[2]); + g[31] = c0y[3] * (g[27] + 2 * b10[3]); + + + + + g[36] = c0z[0] * g[32]; + g[37] = c0z[1] * g[33]; + g[38] = c0z[2] * g[34]; + g[39] = c0z[3] * g[35]; + g[40] = c0z[0] * g[36] + b10[0] * g[32]; + g[41] = c0z[1] * g[37] + b10[1] * g[33]; + g[42] = c0z[2] * g[38] + b10[2] * g[34]; + g[43] = c0z[3] * g[39] + b10[3] * g[35]; + g[44] = c0z[0] * g[40] + 2 * b10[0] * g[36]; + g[45] = c0z[1] * g[41] + 2 * b10[1] * g[37]; + g[46] = c0z[2] * g[42] + 2 * b10[2] * g[38]; + g[47] = c0z[3] * g[43] + 2 * b10[3] * g[39]; +} + +static inline void _srg0_2d4d_1000(dtype *g, Rys2eT *bc, CINTEnvVars *envs) +{ + dtype *c0x = bc->c00x; + dtype *c0y = bc->c00y; + dtype *c0z = bc->c00z; + g[0] = 1; + g[1] = 1; + g[2] = c0x[0]; + g[3] = c0x[1]; + g[4] = 1; + g[5] = 1; + g[6] = c0y[0]; + g[7] = c0y[1]; + + + g[10] = c0z[0] * g[8]; + g[11] = c0z[1] * g[9]; +} + +static inline void _srg0_2d4d_1001(dtype *g, Rys2eT *bc, CINTEnvVars *envs) +{ + dtype *c0x = bc->c00x; + dtype *c0y = bc->c00y; + dtype *c0z = bc->c00z; + dtype *cpx = bc->c0px; + dtype *cpy = bc->c0py; + dtype *cpz = bc->c0pz; + dtype *b00 = bc->b00; + g[0] = 1; + g[1] = 1; + g[2] = 1; + g[3] = 1; + g[4] = c0x[0]; + g[5] = c0x[1]; + g[6] = c0x[2]; + g[7] = c0x[3]; + g[8] = cpx[0]; + g[9] = cpx[1]; + g[10] = cpx[2]; + g[11] = cpx[3]; + g[12] = cpx[0] * c0x[0] + b00[0]; + g[13] = cpx[1] * c0x[1] + b00[1]; + g[14] = cpx[2] * c0x[2] + b00[2]; + g[15] = cpx[3] * c0x[3] + b00[3]; + g[16] = 1; + g[17] = 1; + g[18] = 1; + g[19] = 1; + g[20] = c0y[0]; + g[21] = c0y[1]; + g[22] = c0y[2]; + g[23] = c0y[3]; + g[24] = cpy[0]; + g[25] = cpy[1]; + g[26] = cpy[2]; + g[27] = cpy[3]; + g[28] = cpy[0] * c0y[0] + b00[0]; + g[29] = cpy[1] * c0y[1] + b00[1]; + g[30] = cpy[2] * c0y[2] + b00[2]; + g[31] = cpy[3] * c0y[3] + b00[3]; + + + + + g[36] = c0z[0] * g[32]; + g[37] = c0z[1] * g[33]; + g[38] = c0z[2] * g[34]; + g[39] = c0z[3] * g[35]; + g[40] = cpz[0] * g[32]; + g[41] = cpz[1] * g[33]; + g[42] = cpz[2] * g[34]; + g[43] = cpz[3] * g[35]; + g[44] = cpz[0] * g[36] + b00[0] * g[32]; + g[45] = cpz[1] * g[37] + b00[1] * g[33]; + g[46] = cpz[2] * g[38] + b00[2] * g[34]; + g[47] = cpz[3] * g[39] + b00[3] * g[35]; +} + +static inline void _srg0_2d4d_1002(dtype *g, Rys2eT *bc, CINTEnvVars *envs) +{ + dtype *c0x = bc->c00x; + dtype *c0y = bc->c00y; + dtype *c0z = bc->c00z; + dtype *cpx = bc->c0px; + dtype *cpy = bc->c0py; + dtype *cpz = bc->c0pz; + dtype *b00 = bc->b00; + dtype *b01 = bc->b01; + g[0] = 1; + g[1] = 1; + g[2] = 1; + g[3] = 1; + g[4] = c0x[0]; + g[5] = c0x[1]; + g[6] = c0x[2]; + g[7] = c0x[3]; + g[8] = cpx[0]; + g[9] = cpx[1]; + g[10] = cpx[2]; + g[11] = cpx[3]; + g[12] = cpx[0] * c0x[0] + b00[0]; + g[13] = cpx[1] * c0x[1] + b00[1]; + g[14] = cpx[2] * c0x[2] + b00[2]; + g[15] = cpx[3] * c0x[3] + b00[3]; + g[16] = cpx[0] * cpx[0] + b01[0]; + g[17] = cpx[1] * cpx[1] + b01[1]; + g[18] = cpx[2] * cpx[2] + b01[2]; + g[19] = cpx[3] * cpx[3] + b01[3]; + g[20] = cpx[0] * (g[12] + b00[0]) + b01[0] * c0x[0]; + g[21] = cpx[1] * (g[13] + b00[1]) + b01[1] * c0x[1]; + g[22] = cpx[2] * (g[14] + b00[2]) + b01[2] * c0x[2]; + g[23] = cpx[3] * (g[15] + b00[3]) + b01[3] * c0x[3]; + g[24] = 1; + g[25] = 1; + g[26] = 1; + g[27] = 1; + g[28] = c0y[0]; + g[29] = c0y[1]; + g[30] = c0y[2]; + g[31] = c0y[3]; + g[32] = cpy[0]; + g[33] = cpy[1]; + g[34] = cpy[2]; + g[35] = cpy[3]; + g[36] = cpy[0] * c0y[0] + b00[0]; + g[37] = cpy[1] * c0y[1] + b00[1]; + g[38] = cpy[2] * c0y[2] + b00[2]; + g[39] = cpy[3] * c0y[3] + b00[3]; + g[40] = cpy[0] * cpy[0] + b01[0]; + g[41] = cpy[1] * cpy[1] + b01[1]; + g[42] = cpy[2] * cpy[2] + b01[2]; + g[43] = cpy[3] * cpy[3] + b01[3]; + g[44] = cpy[0] * (g[36] + b00[0]) + b01[0] * c0y[0]; + g[45] = cpy[1] * (g[37] + b00[1]) + b01[1] * c0y[1]; + g[46] = cpy[2] * (g[38] + b00[2]) + b01[2] * c0y[2]; + g[47] = cpy[3] * (g[39] + b00[3]) + b01[3] * c0y[3]; + + + + + g[52] = c0z[0] * g[48]; + g[53] = c0z[1] * g[49]; + g[54] = c0z[2] * g[50]; + g[55] = c0z[3] * g[51]; + g[56] = cpz[0] * g[48]; + g[57] = cpz[1] * g[49]; + g[58] = cpz[2] * g[50]; + g[59] = cpz[3] * g[51]; + g[60] = cpz[0] * g[52] + b00[0] * g[48]; + g[61] = cpz[1] * g[53] + b00[1] * g[49]; + g[62] = cpz[2] * g[54] + b00[2] * g[50]; + g[63] = cpz[3] * g[55] + b00[3] * g[51]; + g[64] = cpz[0] * g[56] + b01[0] * g[48]; + g[65] = cpz[1] * g[57] + b01[1] * g[49]; + g[66] = cpz[2] * g[58] + b01[2] * g[50]; + g[67] = cpz[3] * g[59] + b01[3] * g[51]; + g[68] = cpz[0] * g[60] + b01[0] * g[52] + b00[0] * g[56]; + g[69] = cpz[1] * g[61] + b01[1] * g[53] + b00[1] * g[57]; + g[70] = cpz[2] * g[62] + b01[2] * g[54] + b00[2] * g[58]; + g[71] = cpz[3] * g[63] + b01[3] * g[55] + b00[3] * g[59]; +} + +static inline void _srg0_2d4d_1010(dtype *g, Rys2eT *bc, CINTEnvVars *envs) +{ + dtype *c0x = bc->c00x; + dtype *c0y = bc->c00y; + dtype *c0z = bc->c00z; + dtype *cpx = bc->c0px; + dtype *cpy = bc->c0py; + dtype *cpz = bc->c0pz; + dtype *b00 = bc->b00; + g[0] = 1; + g[1] = 1; + g[2] = 1; + g[3] = 1; + g[4] = c0x[0]; + g[5] = c0x[1]; + g[6] = c0x[2]; + g[7] = c0x[3]; + g[8] = cpx[0]; + g[9] = cpx[1]; + g[10] = cpx[2]; + g[11] = cpx[3]; + g[12] = cpx[0] * c0x[0] + b00[0]; + g[13] = cpx[1] * c0x[1] + b00[1]; + g[14] = cpx[2] * c0x[2] + b00[2]; + g[15] = cpx[3] * c0x[3] + b00[3]; + g[16] = 1; + g[17] = 1; + g[18] = 1; + g[19] = 1; + g[20] = c0y[0]; + g[21] = c0y[1]; + g[22] = c0y[2]; + g[23] = c0y[3]; + g[24] = cpy[0]; + g[25] = cpy[1]; + g[26] = cpy[2]; + g[27] = cpy[3]; + g[28] = cpy[0] * c0y[0] + b00[0]; + g[29] = cpy[1] * c0y[1] + b00[1]; + g[30] = cpy[2] * c0y[2] + b00[2]; + g[31] = cpy[3] * c0y[3] + b00[3]; + + + + + g[36] = c0z[0] * g[32]; + g[37] = c0z[1] * g[33]; + g[38] = c0z[2] * g[34]; + g[39] = c0z[3] * g[35]; + g[40] = cpz[0] * g[32]; + g[41] = cpz[1] * g[33]; + g[42] = cpz[2] * g[34]; + g[43] = cpz[3] * g[35]; + g[44] = cpz[0] * g[36] + b00[0] * g[32]; + g[45] = cpz[1] * g[37] + b00[1] * g[33]; + g[46] = cpz[2] * g[38] + b00[2] * g[34]; + g[47] = cpz[3] * g[39] + b00[3] * g[35]; +} + +static inline void _srg0_2d4d_1011(dtype *g, Rys2eT *bc, CINTEnvVars *envs) +{ + dtype *c0x = bc->c00x; + dtype *c0y = bc->c00y; + dtype *c0z = bc->c00z; + dtype *cpx = bc->c0px; + dtype *cpy = bc->c0py; + dtype *cpz = bc->c0pz; + dtype *b00 = bc->b00; + dtype *b01 = bc->b01; + dtype xkxl = envs->rkrl[0]; + dtype ykyl = envs->rkrl[1]; + dtype zkzl = envs->rkrl[2]; + g[0] = 1; + g[1] = 1; + g[2] = 1; + g[3] = 1; + g[4] = c0x[0]; + g[5] = c0x[1]; + g[6] = c0x[2]; + g[7] = c0x[3]; + g[16] = cpx[0]; + g[17] = cpx[1]; + g[18] = cpx[2]; + g[19] = cpx[3]; + g[20] = cpx[0] * c0x[0] + b00[0]; + g[21] = cpx[1] * c0x[1] + b00[1]; + g[22] = cpx[2] * c0x[2] + b00[2]; + g[23] = cpx[3] * c0x[3] + b00[3]; + g[24] = cpx[0] * (xkxl + cpx[0]) + b01[0]; + g[25] = cpx[1] * (xkxl + cpx[1]) + b01[1]; + g[26] = cpx[2] * (xkxl + cpx[2]) + b01[2]; + g[27] = cpx[3] * (xkxl + cpx[3]) + b01[3]; + g[28] = g[20] * (xkxl + cpx[0]) + cpx[0] * b00[0] + b01[0] * c0x[0]; + g[29] = g[21] * (xkxl + cpx[1]) + cpx[1] * b00[1] + b01[1] * c0x[1]; + g[30] = g[22] * (xkxl + cpx[2]) + cpx[2] * b00[2] + b01[2] * c0x[2]; + g[31] = g[23] * (xkxl + cpx[3]) + cpx[3] * b00[3] + b01[3] * c0x[3]; + g[8] = xkxl + cpx[0]; + g[9] = xkxl + cpx[1]; + g[10] = xkxl + cpx[2]; + g[11] = xkxl + cpx[3]; + g[12] = c0x[0] * (xkxl + cpx[0]) + b00[0]; + g[13] = c0x[1] * (xkxl + cpx[1]) + b00[1]; + g[14] = c0x[2] * (xkxl + cpx[2]) + b00[2]; + g[15] = c0x[3] * (xkxl + cpx[3]) + b00[3]; + g[48] = 1; + g[49] = 1; + g[50] = 1; + g[51] = 1; + g[52] = c0y[0]; + g[53] = c0y[1]; + g[54] = c0y[2]; + g[55] = c0y[3]; + g[64] = cpy[0]; + g[65] = cpy[1]; + g[66] = cpy[2]; + g[67] = cpy[3]; + g[68] = cpy[0] * c0y[0] + b00[0]; + g[69] = cpy[1] * c0y[1] + b00[1]; + g[70] = cpy[2] * c0y[2] + b00[2]; + g[71] = cpy[3] * c0y[3] + b00[3]; + g[72] = cpy[0] * (ykyl + cpy[0]) + b01[0]; + g[73] = cpy[1] * (ykyl + cpy[1]) + b01[1]; + g[74] = cpy[2] * (ykyl + cpy[2]) + b01[2]; + g[75] = cpy[3] * (ykyl + cpy[3]) + b01[3]; + g[76] = g[68] * (ykyl + cpy[0]) + cpy[0] * b00[0] + b01[0] * c0y[0]; + g[77] = g[69] * (ykyl + cpy[1]) + cpy[1] * b00[1] + b01[1] * c0y[1]; + g[78] = g[70] * (ykyl + cpy[2]) + cpy[2] * b00[2] + b01[2] * c0y[2]; + g[79] = g[71] * (ykyl + cpy[3]) + cpy[3] * b00[3] + b01[3] * c0y[3]; + g[56] = ykyl + cpy[0]; + g[57] = ykyl + cpy[1]; + g[58] = ykyl + cpy[2]; + g[59] = ykyl + cpy[3]; + g[60] = c0y[0] * (ykyl + cpy[0]) + b00[0]; + g[61] = c0y[1] * (ykyl + cpy[1]) + b00[1]; + g[62] = c0y[2] * (ykyl + cpy[2]) + b00[2]; + g[63] = c0y[3] * (ykyl + cpy[3]) + b00[3]; + + + + + g[100] = c0z[0] * g[96]; + g[101] = c0z[1] * g[97]; + g[102] = c0z[2] * g[98]; + g[103] = c0z[3] * g[99]; + g[112] = cpz[0] * g[96]; + g[113] = cpz[1] * g[97]; + g[114] = cpz[2] * g[98]; + g[115] = cpz[3] * g[99]; + g[116] = cpz[0] * g[100] + b00[0] * g[96]; + g[117] = cpz[1] * g[101] + b00[1] * g[97]; + g[118] = cpz[2] * g[102] + b00[2] * g[98]; + g[119] = cpz[3] * g[103] + b00[3] * g[99]; + g[120] = g[112] * (zkzl + cpz[0]) + b01[0] * g[96]; + g[121] = g[113] * (zkzl + cpz[1]) + b01[1] * g[97]; + g[122] = g[114] * (zkzl + cpz[2]) + b01[2] * g[98]; + g[123] = g[115] * (zkzl + cpz[3]) + b01[3] * g[99]; + g[124] = g[116] * (zkzl + cpz[0]) + b01[0] * g[100] + b00[0] * g[112]; + g[125] = g[117] * (zkzl + cpz[1]) + b01[1] * g[101] + b00[1] * g[113]; + g[126] = g[118] * (zkzl + cpz[2]) + b01[2] * g[102] + b00[2] * g[114]; + g[127] = g[119] * (zkzl + cpz[3]) + b01[3] * g[103] + b00[3] * g[115]; + g[104] = g[96] * (zkzl + cpz[0]); + g[105] = g[97] * (zkzl + cpz[1]); + g[106] = g[98] * (zkzl + cpz[2]); + g[107] = g[99] * (zkzl + cpz[3]); + g[108] = g[100] * (zkzl + cpz[0]) + b00[0] * g[96]; + g[109] = g[101] * (zkzl + cpz[1]) + b00[1] * g[97]; + g[110] = g[102] * (zkzl + cpz[2]) + b00[2] * g[98]; + g[111] = g[103] * (zkzl + cpz[3]) + b00[3] * g[99]; +} + +static inline void _srg0_2d4d_1020(dtype *g, Rys2eT *bc, CINTEnvVars *envs) +{ + dtype *c0x = bc->c00x; + dtype *c0y = bc->c00y; + dtype *c0z = bc->c00z; + dtype *cpx = bc->c0px; + dtype *cpy = bc->c0py; + dtype *cpz = bc->c0pz; + dtype *b00 = bc->b00; + dtype *b01 = bc->b01; + g[0] = 1; + g[1] = 1; + g[2] = 1; + g[3] = 1; + g[4] = c0x[0]; + g[5] = c0x[1]; + g[6] = c0x[2]; + g[7] = c0x[3]; + g[8] = cpx[0]; + g[9] = cpx[1]; + g[10] = cpx[2]; + g[11] = cpx[3]; + g[12] = cpx[0] * c0x[0] + b00[0]; + g[13] = cpx[1] * c0x[1] + b00[1]; + g[14] = cpx[2] * c0x[2] + b00[2]; + g[15] = cpx[3] * c0x[3] + b00[3]; + g[16] = cpx[0] * cpx[0] + b01[0]; + g[17] = cpx[1] * cpx[1] + b01[1]; + g[18] = cpx[2] * cpx[2] + b01[2]; + g[19] = cpx[3] * cpx[3] + b01[3]; + g[20] = cpx[0] * (g[12] + b00[0]) + b01[0] * c0x[0]; + g[21] = cpx[1] * (g[13] + b00[1]) + b01[1] * c0x[1]; + g[22] = cpx[2] * (g[14] + b00[2]) + b01[2] * c0x[2]; + g[23] = cpx[3] * (g[15] + b00[3]) + b01[3] * c0x[3]; + g[24] = 1; + g[25] = 1; + g[26] = 1; + g[27] = 1; + g[28] = c0y[0]; + g[29] = c0y[1]; + g[30] = c0y[2]; + g[31] = c0y[3]; + g[32] = cpy[0]; + g[33] = cpy[1]; + g[34] = cpy[2]; + g[35] = cpy[3]; + g[36] = cpy[0] * c0y[0] + b00[0]; + g[37] = cpy[1] * c0y[1] + b00[1]; + g[38] = cpy[2] * c0y[2] + b00[2]; + g[39] = cpy[3] * c0y[3] + b00[3]; + g[40] = cpy[0] * cpy[0] + b01[0]; + g[41] = cpy[1] * cpy[1] + b01[1]; + g[42] = cpy[2] * cpy[2] + b01[2]; + g[43] = cpy[3] * cpy[3] + b01[3]; + g[44] = cpy[0] * (g[36] + b00[0]) + b01[0] * c0y[0]; + g[45] = cpy[1] * (g[37] + b00[1]) + b01[1] * c0y[1]; + g[46] = cpy[2] * (g[38] + b00[2]) + b01[2] * c0y[2]; + g[47] = cpy[3] * (g[39] + b00[3]) + b01[3] * c0y[3]; + + + + + g[52] = c0z[0] * g[48]; + g[53] = c0z[1] * g[49]; + g[54] = c0z[2] * g[50]; + g[55] = c0z[3] * g[51]; + g[56] = cpz[0] * g[48]; + g[57] = cpz[1] * g[49]; + g[58] = cpz[2] * g[50]; + g[59] = cpz[3] * g[51]; + g[60] = cpz[0] * g[52] + b00[0] * g[48]; + g[61] = cpz[1] * g[53] + b00[1] * g[49]; + g[62] = cpz[2] * g[54] + b00[2] * g[50]; + g[63] = cpz[3] * g[55] + b00[3] * g[51]; + g[64] = cpz[0] * g[56] + b01[0] * g[48]; + g[65] = cpz[1] * g[57] + b01[1] * g[49]; + g[66] = cpz[2] * g[58] + b01[2] * g[50]; + g[67] = cpz[3] * g[59] + b01[3] * g[51]; + g[68] = cpz[0] * g[60] + b01[0] * g[52] + b00[0] * g[56]; + g[69] = cpz[1] * g[61] + b01[1] * g[53] + b00[1] * g[57]; + g[70] = cpz[2] * g[62] + b01[2] * g[54] + b00[2] * g[58]; + g[71] = cpz[3] * g[63] + b01[3] * g[55] + b00[3] * g[59]; +} + +static inline void _srg0_2d4d_1100(dtype *g, Rys2eT *bc, CINTEnvVars *envs) +{ + dtype *c0x = bc->c00x; + dtype *c0y = bc->c00y; + dtype *c0z = bc->c00z; + dtype *b10 = bc->b10; + dtype xixj = envs->rirj[0]; + dtype yiyj = envs->rirj[1]; + dtype zizj = envs->rirj[2]; + g[0] = 1; + g[1] = 1; + g[2] = 1; + g[3] = 1; + g[8] = c0x[0]; + g[9] = c0x[1]; + g[10] = c0x[2]; + g[11] = c0x[3]; + g[12] = c0x[0] * (xixj + c0x[0]) + b10[0]; + g[13] = c0x[1] * (xixj + c0x[1]) + b10[1]; + g[14] = c0x[2] * (xixj + c0x[2]) + b10[2]; + g[15] = c0x[3] * (xixj + c0x[3]) + b10[3]; + g[4] = xixj + c0x[0]; + g[5] = xixj + c0x[1]; + g[6] = xixj + c0x[2]; + g[7] = xixj + c0x[3]; + g[24] = 1; + g[25] = 1; + g[26] = 1; + g[27] = 1; + g[32] = c0y[0]; + g[33] = c0y[1]; + g[34] = c0y[2]; + g[35] = c0y[3]; + g[36] = c0y[0] * (yiyj + c0y[0]) + b10[0]; + g[37] = c0y[1] * (yiyj + c0y[1]) + b10[1]; + g[38] = c0y[2] * (yiyj + c0y[2]) + b10[2]; + g[39] = c0y[3] * (yiyj + c0y[3]) + b10[3]; + g[28] = yiyj + c0y[0]; + g[29] = yiyj + c0y[1]; + g[30] = yiyj + c0y[2]; + g[31] = yiyj + c0y[3]; + + + + + g[56] = c0z[0] * g[48]; + g[57] = c0z[1] * g[49]; + g[58] = c0z[2] * g[50]; + g[59] = c0z[3] * g[51]; + g[60] = g[56] * (zizj + c0z[0]) + b10[0] * g[48]; + g[61] = g[57] * (zizj + c0z[1]) + b10[1] * g[49]; + g[62] = g[58] * (zizj + c0z[2]) + b10[2] * g[50]; + g[63] = g[59] * (zizj + c0z[3]) + b10[3] * g[51]; + g[52] = g[48] * (zizj + c0z[0]); + g[53] = g[49] * (zizj + c0z[1]); + g[54] = g[50] * (zizj + c0z[2]); + g[55] = g[51] * (zizj + c0z[3]); +} + +static inline void _srg0_2d4d_1101(dtype *g, Rys2eT *bc, CINTEnvVars *envs) +{ + dtype *c0x = bc->c00x; + dtype *c0y = bc->c00y; + dtype *c0z = bc->c00z; + dtype *cpx = bc->c0px; + dtype *cpy = bc->c0py; + dtype *cpz = bc->c0pz; + dtype *b00 = bc->b00; + dtype *b10 = bc->b10; + dtype xixj = envs->rirj[0]; + dtype yiyj = envs->rirj[1]; + dtype zizj = envs->rirj[2]; + g[0] = 1; + g[1] = 1; + g[2] = 1; + g[3] = 1; + g[16] = c0x[0]; + g[17] = c0x[1]; + g[18] = c0x[2]; + g[19] = c0x[3]; + g[8] = cpx[0]; + g[9] = cpx[1]; + g[10] = cpx[2]; + g[11] = cpx[3]; + g[24] = cpx[0] * c0x[0] + b00[0]; + g[25] = cpx[1] * c0x[1] + b00[1]; + g[26] = cpx[2] * c0x[2] + b00[2]; + g[27] = cpx[3] * c0x[3] + b00[3]; + g[20] = c0x[0] * (xixj + c0x[0]) + b10[0]; + g[21] = c0x[1] * (xixj + c0x[1]) + b10[1]; + g[22] = c0x[2] * (xixj + c0x[2]) + b10[2]; + g[23] = c0x[3] * (xixj + c0x[3]) + b10[3]; + g[4] = xixj + c0x[0]; + g[5] = xixj + c0x[1]; + g[6] = xixj + c0x[2]; + g[7] = xixj + c0x[3]; + g[28] = g[24] * (xixj + c0x[0]) + c0x[0] * b00[0] + b10[0] * cpx[0]; + g[29] = g[25] * (xixj + c0x[1]) + c0x[1] * b00[1] + b10[1] * cpx[1]; + g[30] = g[26] * (xixj + c0x[2]) + c0x[2] * b00[2] + b10[2] * cpx[2]; + g[31] = g[27] * (xixj + c0x[3]) + c0x[3] * b00[3] + b10[3] * cpx[3]; + g[12] = cpx[0] * (xixj + c0x[0]) + b00[0]; + g[13] = cpx[1] * (xixj + c0x[1]) + b00[1]; + g[14] = cpx[2] * (xixj + c0x[2]) + b00[2]; + g[15] = cpx[3] * (xixj + c0x[3]) + b00[3]; + g[48] = 1; + g[49] = 1; + g[50] = 1; + g[51] = 1; + g[64] = c0y[0]; + g[65] = c0y[1]; + g[66] = c0y[2]; + g[67] = c0y[3]; + g[56] = cpy[0]; + g[57] = cpy[1]; + g[58] = cpy[2]; + g[59] = cpy[3]; + g[72] = cpy[0] * c0y[0] + b00[0]; + g[73] = cpy[1] * c0y[1] + b00[1]; + g[74] = cpy[2] * c0y[2] + b00[2]; + g[75] = cpy[3] * c0y[3] + b00[3]; + g[68] = c0y[0] * (yiyj + c0y[0]) + b10[0]; + g[69] = c0y[1] * (yiyj + c0y[1]) + b10[1]; + g[70] = c0y[2] * (yiyj + c0y[2]) + b10[2]; + g[71] = c0y[3] * (yiyj + c0y[3]) + b10[3]; + g[52] = yiyj + c0y[0]; + g[53] = yiyj + c0y[1]; + g[54] = yiyj + c0y[2]; + g[55] = yiyj + c0y[3]; + g[76] = g[72] * (yiyj + c0y[0]) + c0y[0] * b00[0] + b10[0] * cpy[0]; + g[77] = g[73] * (yiyj + c0y[1]) + c0y[1] * b00[1] + b10[1] * cpy[1]; + g[78] = g[74] * (yiyj + c0y[2]) + c0y[2] * b00[2] + b10[2] * cpy[2]; + g[79] = g[75] * (yiyj + c0y[3]) + c0y[3] * b00[3] + b10[3] * cpy[3]; + g[60] = cpy[0] * (yiyj + c0y[0]) + b00[0]; + g[61] = cpy[1] * (yiyj + c0y[1]) + b00[1]; + g[62] = cpy[2] * (yiyj + c0y[2]) + b00[2]; + g[63] = cpy[3] * (yiyj + c0y[3]) + b00[3]; + + + + + g[112] = c0z[0] * g[96]; + g[113] = c0z[1] * g[97]; + g[114] = c0z[2] * g[98]; + g[115] = c0z[3] * g[99]; + g[104] = cpz[0] * g[96]; + g[105] = cpz[1] * g[97]; + g[106] = cpz[2] * g[98]; + g[107] = cpz[3] * g[99]; + g[120] = cpz[0] * g[112] + b00[0] * g[96]; + g[121] = cpz[1] * g[113] + b00[1] * g[97]; + g[122] = cpz[2] * g[114] + b00[2] * g[98]; + g[123] = cpz[3] * g[115] + b00[3] * g[99]; + g[116] = g[112] * (zizj + c0z[0]) + b10[0] * g[96]; + g[117] = g[113] * (zizj + c0z[1]) + b10[1] * g[97]; + g[118] = g[114] * (zizj + c0z[2]) + b10[2] * g[98]; + g[119] = g[115] * (zizj + c0z[3]) + b10[3] * g[99]; + g[100] = g[96] * (zizj + c0z[0]); + g[101] = g[97] * (zizj + c0z[1]); + g[102] = g[98] * (zizj + c0z[2]); + g[103] = g[99] * (zizj + c0z[3]); + g[124] = g[120] * (zizj + c0z[0]) + b10[0] * g[104] + b00[0] * g[112]; + g[125] = g[121] * (zizj + c0z[1]) + b10[1] * g[105] + b00[1] * g[113]; + g[126] = g[122] * (zizj + c0z[2]) + b10[2] * g[106] + b00[2] * g[114]; + g[127] = g[123] * (zizj + c0z[3]) + b10[3] * g[107] + b00[3] * g[115]; + g[108] = zizj * g[104] + cpz[0] * g[112] + b00[0] * g[96]; + g[109] = zizj * g[105] + cpz[1] * g[113] + b00[1] * g[97]; + g[110] = zizj * g[106] + cpz[2] * g[114] + b00[2] * g[98]; + g[111] = zizj * g[107] + cpz[3] * g[115] + b00[3] * g[99]; +} + +static inline void _srg0_2d4d_1110(dtype *g, Rys2eT *bc, CINTEnvVars *envs) +{ + dtype *c0x = bc->c00x; + dtype *c0y = bc->c00y; + dtype *c0z = bc->c00z; + dtype *cpx = bc->c0px; + dtype *cpy = bc->c0py; + dtype *cpz = bc->c0pz; + dtype *b00 = bc->b00; + dtype *b10 = bc->b10; + dtype xixj = envs->rirj[0]; + dtype yiyj = envs->rirj[1]; + dtype zizj = envs->rirj[2]; + g[0] = 1; + g[1] = 1; + g[2] = 1; + g[3] = 1; + g[16] = c0x[0]; + g[17] = c0x[1]; + g[18] = c0x[2]; + g[19] = c0x[3]; + g[8] = cpx[0]; + g[9] = cpx[1]; + g[10] = cpx[2]; + g[11] = cpx[3]; + g[24] = cpx[0] * c0x[0] + b00[0]; + g[25] = cpx[1] * c0x[1] + b00[1]; + g[26] = cpx[2] * c0x[2] + b00[2]; + g[27] = cpx[3] * c0x[3] + b00[3]; + g[20] = c0x[0] * (xixj + c0x[0]) + b10[0]; + g[21] = c0x[1] * (xixj + c0x[1]) + b10[1]; + g[22] = c0x[2] * (xixj + c0x[2]) + b10[2]; + g[23] = c0x[3] * (xixj + c0x[3]) + b10[3]; + g[4] = xixj + c0x[0]; + g[5] = xixj + c0x[1]; + g[6] = xixj + c0x[2]; + g[7] = xixj + c0x[3]; + g[28] = g[24] * (xixj + c0x[0]) + c0x[0] * b00[0] + b10[0] * cpx[0]; + g[29] = g[25] * (xixj + c0x[1]) + c0x[1] * b00[1] + b10[1] * cpx[1]; + g[30] = g[26] * (xixj + c0x[2]) + c0x[2] * b00[2] + b10[2] * cpx[2]; + g[31] = g[27] * (xixj + c0x[3]) + c0x[3] * b00[3] + b10[3] * cpx[3]; + g[12] = cpx[0] * (xixj + c0x[0]) + b00[0]; + g[13] = cpx[1] * (xixj + c0x[1]) + b00[1]; + g[14] = cpx[2] * (xixj + c0x[2]) + b00[2]; + g[15] = cpx[3] * (xixj + c0x[3]) + b00[3]; + g[48] = 1; + g[49] = 1; + g[50] = 1; + g[51] = 1; + g[64] = c0y[0]; + g[65] = c0y[1]; + g[66] = c0y[2]; + g[67] = c0y[3]; + g[56] = cpy[0]; + g[57] = cpy[1]; + g[58] = cpy[2]; + g[59] = cpy[3]; + g[72] = cpy[0] * c0y[0] + b00[0]; + g[73] = cpy[1] * c0y[1] + b00[1]; + g[74] = cpy[2] * c0y[2] + b00[2]; + g[75] = cpy[3] * c0y[3] + b00[3]; + g[68] = c0y[0] * (yiyj + c0y[0]) + b10[0]; + g[69] = c0y[1] * (yiyj + c0y[1]) + b10[1]; + g[70] = c0y[2] * (yiyj + c0y[2]) + b10[2]; + g[71] = c0y[3] * (yiyj + c0y[3]) + b10[3]; + g[52] = yiyj + c0y[0]; + g[53] = yiyj + c0y[1]; + g[54] = yiyj + c0y[2]; + g[55] = yiyj + c0y[3]; + g[76] = g[72] * (yiyj + c0y[0]) + c0y[0] * b00[0] + b10[0] * cpy[0]; + g[77] = g[73] * (yiyj + c0y[1]) + c0y[1] * b00[1] + b10[1] * cpy[1]; + g[78] = g[74] * (yiyj + c0y[2]) + c0y[2] * b00[2] + b10[2] * cpy[2]; + g[79] = g[75] * (yiyj + c0y[3]) + c0y[3] * b00[3] + b10[3] * cpy[3]; + g[60] = cpy[0] * (yiyj + c0y[0]) + b00[0]; + g[61] = cpy[1] * (yiyj + c0y[1]) + b00[1]; + g[62] = cpy[2] * (yiyj + c0y[2]) + b00[2]; + g[63] = cpy[3] * (yiyj + c0y[3]) + b00[3]; + + + + + g[112] = c0z[0] * g[96]; + g[113] = c0z[1] * g[97]; + g[114] = c0z[2] * g[98]; + g[115] = c0z[3] * g[99]; + g[104] = cpz[0] * g[96]; + g[105] = cpz[1] * g[97]; + g[106] = cpz[2] * g[98]; + g[107] = cpz[3] * g[99]; + g[120] = cpz[0] * g[112] + b00[0] * g[96]; + g[121] = cpz[1] * g[113] + b00[1] * g[97]; + g[122] = cpz[2] * g[114] + b00[2] * g[98]; + g[123] = cpz[3] * g[115] + b00[3] * g[99]; + g[116] = g[112] * (zizj + c0z[0]) + b10[0] * g[96]; + g[117] = g[113] * (zizj + c0z[1]) + b10[1] * g[97]; + g[118] = g[114] * (zizj + c0z[2]) + b10[2] * g[98]; + g[119] = g[115] * (zizj + c0z[3]) + b10[3] * g[99]; + g[100] = g[96] * (zizj + c0z[0]); + g[101] = g[97] * (zizj + c0z[1]); + g[102] = g[98] * (zizj + c0z[2]); + g[103] = g[99] * (zizj + c0z[3]); + g[124] = g[120] * (zizj + c0z[0]) + b10[0] * g[104] + b00[0] * g[112]; + g[125] = g[121] * (zizj + c0z[1]) + b10[1] * g[105] + b00[1] * g[113]; + g[126] = g[122] * (zizj + c0z[2]) + b10[2] * g[106] + b00[2] * g[114]; + g[127] = g[123] * (zizj + c0z[3]) + b10[3] * g[107] + b00[3] * g[115]; + g[108] = zizj * g[104] + cpz[0] * g[112] + b00[0] * g[96]; + g[109] = zizj * g[105] + cpz[1] * g[113] + b00[1] * g[97]; + g[110] = zizj * g[106] + cpz[2] * g[114] + b00[2] * g[98]; + g[111] = zizj * g[107] + cpz[3] * g[115] + b00[3] * g[99]; +} + +static inline void _srg0_2d4d_1200(dtype *g, Rys2eT *bc, CINTEnvVars *envs) +{ + dtype *c0x = bc->c00x; + dtype *c0y = bc->c00y; + dtype *c0z = bc->c00z; + dtype *b10 = bc->b10; + dtype xixj = envs->rirj[0]; + dtype yiyj = envs->rirj[1]; + dtype zizj = envs->rirj[2]; + g[0] = 1; + g[1] = 1; + g[2] = 1; + g[3] = 1; + g[8] = c0x[0]; + g[9] = c0x[1]; + g[10] = c0x[2]; + g[11] = c0x[3]; + g[16] = c0x[0] * c0x[0] + b10[0]; + g[17] = c0x[1] * c0x[1] + b10[1]; + g[18] = c0x[2] * c0x[2] + b10[2]; + g[19] = c0x[3] * c0x[3] + b10[3]; + g[20] = g[16] * (xixj + c0x[0]) + c0x[0] * 2 * b10[0]; + g[21] = g[17] * (xixj + c0x[1]) + c0x[1] * 2 * b10[1]; + g[22] = g[18] * (xixj + c0x[2]) + c0x[2] * 2 * b10[2]; + g[23] = g[19] * (xixj + c0x[3]) + c0x[3] * 2 * b10[3]; + g[12] = c0x[0] * (xixj + c0x[0]) + b10[0]; + g[13] = c0x[1] * (xixj + c0x[1]) + b10[1]; + g[14] = c0x[2] * (xixj + c0x[2]) + b10[2]; + g[15] = c0x[3] * (xixj + c0x[3]) + b10[3]; + g[4] = xixj + c0x[0]; + g[5] = xixj + c0x[1]; + g[6] = xixj + c0x[2]; + g[7] = xixj + c0x[3]; + g[32] = 1; + g[33] = 1; + g[34] = 1; + g[35] = 1; + g[40] = c0y[0]; + g[41] = c0y[1]; + g[42] = c0y[2]; + g[43] = c0y[3]; + g[48] = c0y[0] * c0y[0] + b10[0]; + g[49] = c0y[1] * c0y[1] + b10[1]; + g[50] = c0y[2] * c0y[2] + b10[2]; + g[51] = c0y[3] * c0y[3] + b10[3]; + g[52] = g[48] * (yiyj + c0y[0]) + c0y[0] * 2 * b10[0]; + g[53] = g[49] * (yiyj + c0y[1]) + c0y[1] * 2 * b10[1]; + g[54] = g[50] * (yiyj + c0y[2]) + c0y[2] * 2 * b10[2]; + g[55] = g[51] * (yiyj + c0y[3]) + c0y[3] * 2 * b10[3]; + g[44] = c0y[0] * (yiyj + c0y[0]) + b10[0]; + g[45] = c0y[1] * (yiyj + c0y[1]) + b10[1]; + g[46] = c0y[2] * (yiyj + c0y[2]) + b10[2]; + g[47] = c0y[3] * (yiyj + c0y[3]) + b10[3]; + g[36] = yiyj + c0y[0]; + g[37] = yiyj + c0y[1]; + g[38] = yiyj + c0y[2]; + g[39] = yiyj + c0y[3]; + + + + + g[72] = c0z[0] * g[64]; + g[73] = c0z[1] * g[65]; + g[74] = c0z[2] * g[66]; + g[75] = c0z[3] * g[67]; + g[80] = c0z[0] * g[72] + b10[0] * g[64]; + g[81] = c0z[1] * g[73] + b10[1] * g[65]; + g[82] = c0z[2] * g[74] + b10[2] * g[66]; + g[83] = c0z[3] * g[75] + b10[3] * g[67]; + g[84] = g[80] * (zizj + c0z[0]) + 2 * b10[0] * g[72]; + g[85] = g[81] * (zizj + c0z[1]) + 2 * b10[1] * g[73]; + g[86] = g[82] * (zizj + c0z[2]) + 2 * b10[2] * g[74]; + g[87] = g[83] * (zizj + c0z[3]) + 2 * b10[3] * g[75]; + g[76] = g[72] * (zizj + c0z[0]) + b10[0] * g[64]; + g[77] = g[73] * (zizj + c0z[1]) + b10[1] * g[65]; + g[78] = g[74] * (zizj + c0z[2]) + b10[2] * g[66]; + g[79] = g[75] * (zizj + c0z[3]) + b10[3] * g[67]; + g[68] = g[64] * (zizj + c0z[0]); + g[69] = g[65] * (zizj + c0z[1]); + g[70] = g[66] * (zizj + c0z[2]); + g[71] = g[67] * (zizj + c0z[3]); +} + +static inline void _srg0_2d4d_2000(dtype *g, Rys2eT *bc, CINTEnvVars *envs) +{ + dtype *c0x = bc->c00x; + dtype *c0y = bc->c00y; + dtype *c0z = bc->c00z; + dtype *b10 = bc->b10; + g[0] = 1; + g[1] = 1; + g[2] = 1; + g[3] = 1; + g[4] = c0x[0]; + g[5] = c0x[1]; + g[6] = c0x[2]; + g[7] = c0x[3]; + g[8] = c0x[0] * c0x[0] + b10[0]; + g[9] = c0x[1] * c0x[1] + b10[1]; + g[10] = c0x[2] * c0x[2] + b10[2]; + g[11] = c0x[3] * c0x[3] + b10[3]; + g[12] = 1; + g[13] = 1; + g[14] = 1; + g[15] = 1; + g[16] = c0y[0]; + g[17] = c0y[1]; + g[18] = c0y[2]; + g[19] = c0y[3]; + g[20] = c0y[0] * c0y[0] + b10[0]; + g[21] = c0y[1] * c0y[1] + b10[1]; + g[22] = c0y[2] * c0y[2] + b10[2]; + g[23] = c0y[3] * c0y[3] + b10[3]; + + + + + g[28] = c0z[0] * g[24]; + g[29] = c0z[1] * g[25]; + g[30] = c0z[2] * g[26]; + g[31] = c0z[3] * g[27]; + g[32] = c0z[0] * g[28] + b10[0] * g[24]; + g[33] = c0z[1] * g[29] + b10[1] * g[25]; + g[34] = c0z[2] * g[30] + b10[2] * g[26]; + g[35] = c0z[3] * g[31] + b10[3] * g[27]; +} + +static inline void _srg0_2d4d_2001(dtype *g, Rys2eT *bc, CINTEnvVars *envs) +{ + dtype *c0x = bc->c00x; + dtype *c0y = bc->c00y; + dtype *c0z = bc->c00z; + dtype *cpx = bc->c0px; + dtype *cpy = bc->c0py; + dtype *cpz = bc->c0pz; + dtype *b00 = bc->b00; + dtype *b10 = bc->b10; + g[0] = 1; + g[1] = 1; + g[2] = 1; + g[3] = 1; + g[4] = c0x[0]; + g[5] = c0x[1]; + g[6] = c0x[2]; + g[7] = c0x[3]; + g[8] = c0x[0] * c0x[0] + b10[0]; + g[9] = c0x[1] * c0x[1] + b10[1]; + g[10] = c0x[2] * c0x[2] + b10[2]; + g[11] = c0x[3] * c0x[3] + b10[3]; + g[12] = cpx[0]; + g[13] = cpx[1]; + g[14] = cpx[2]; + g[15] = cpx[3]; + g[16] = cpx[0] * c0x[0] + b00[0]; + g[17] = cpx[1] * c0x[1] + b00[1]; + g[18] = cpx[2] * c0x[2] + b00[2]; + g[19] = cpx[3] * c0x[3] + b00[3]; + g[20] = c0x[0] * (g[16] + b00[0]) + b10[0] * cpx[0]; + g[21] = c0x[1] * (g[17] + b00[1]) + b10[1] * cpx[1]; + g[22] = c0x[2] * (g[18] + b00[2]) + b10[2] * cpx[2]; + g[23] = c0x[3] * (g[19] + b00[3]) + b10[3] * cpx[3]; + g[24] = 1; + g[25] = 1; + g[26] = 1; + g[27] = 1; + g[28] = c0y[0]; + g[29] = c0y[1]; + g[30] = c0y[2]; + g[31] = c0y[3]; + g[32] = c0y[0] * c0y[0] + b10[0]; + g[33] = c0y[1] * c0y[1] + b10[1]; + g[34] = c0y[2] * c0y[2] + b10[2]; + g[35] = c0y[3] * c0y[3] + b10[3]; + g[36] = cpy[0]; + g[37] = cpy[1]; + g[38] = cpy[2]; + g[39] = cpy[3]; + g[40] = cpy[0] * c0y[0] + b00[0]; + g[41] = cpy[1] * c0y[1] + b00[1]; + g[42] = cpy[2] * c0y[2] + b00[2]; + g[43] = cpy[3] * c0y[3] + b00[3]; + g[44] = c0y[0] * (g[40] + b00[0]) + b10[0] * cpy[0]; + g[45] = c0y[1] * (g[41] + b00[1]) + b10[1] * cpy[1]; + g[46] = c0y[2] * (g[42] + b00[2]) + b10[2] * cpy[2]; + g[47] = c0y[3] * (g[43] + b00[3]) + b10[3] * cpy[3]; + + + + + g[52] = c0z[0] * g[48]; + g[53] = c0z[1] * g[49]; + g[54] = c0z[2] * g[50]; + g[55] = c0z[3] * g[51]; + g[56] = c0z[0] * g[52] + b10[0] * g[48]; + g[57] = c0z[1] * g[53] + b10[1] * g[49]; + g[58] = c0z[2] * g[54] + b10[2] * g[50]; + g[59] = c0z[3] * g[55] + b10[3] * g[51]; + g[60] = cpz[0] * g[48]; + g[61] = cpz[1] * g[49]; + g[62] = cpz[2] * g[50]; + g[63] = cpz[3] * g[51]; + g[64] = cpz[0] * g[52] + b00[0] * g[48]; + g[65] = cpz[1] * g[53] + b00[1] * g[49]; + g[66] = cpz[2] * g[54] + b00[2] * g[50]; + g[67] = cpz[3] * g[55] + b00[3] * g[51]; + g[68] = c0z[0] * g[64] + b10[0] * g[60] + b00[0] * g[52]; + g[69] = c0z[1] * g[65] + b10[1] * g[61] + b00[1] * g[53]; + g[70] = c0z[2] * g[66] + b10[2] * g[62] + b00[2] * g[54]; + g[71] = c0z[3] * g[67] + b10[3] * g[63] + b00[3] * g[55]; +} + +static inline void _srg0_2d4d_2010(dtype *g, Rys2eT *bc, CINTEnvVars *envs) +{ + dtype *c0x = bc->c00x; + dtype *c0y = bc->c00y; + dtype *c0z = bc->c00z; + dtype *cpx = bc->c0px; + dtype *cpy = bc->c0py; + dtype *cpz = bc->c0pz; + dtype *b00 = bc->b00; + dtype *b10 = bc->b10; + g[0] = 1; + g[1] = 1; + g[2] = 1; + g[3] = 1; + g[4] = c0x[0]; + g[5] = c0x[1]; + g[6] = c0x[2]; + g[7] = c0x[3]; + g[8] = c0x[0] * c0x[0] + b10[0]; + g[9] = c0x[1] * c0x[1] + b10[1]; + g[10] = c0x[2] * c0x[2] + b10[2]; + g[11] = c0x[3] * c0x[3] + b10[3]; + g[12] = cpx[0]; + g[13] = cpx[1]; + g[14] = cpx[2]; + g[15] = cpx[3]; + g[16] = cpx[0] * c0x[0] + b00[0]; + g[17] = cpx[1] * c0x[1] + b00[1]; + g[18] = cpx[2] * c0x[2] + b00[2]; + g[19] = cpx[3] * c0x[3] + b00[3]; + g[20] = c0x[0] * (g[16] + b00[0]) + b10[0] * cpx[0]; + g[21] = c0x[1] * (g[17] + b00[1]) + b10[1] * cpx[1]; + g[22] = c0x[2] * (g[18] + b00[2]) + b10[2] * cpx[2]; + g[23] = c0x[3] * (g[19] + b00[3]) + b10[3] * cpx[3]; + g[24] = 1; + g[25] = 1; + g[26] = 1; + g[27] = 1; + g[28] = c0y[0]; + g[29] = c0y[1]; + g[30] = c0y[2]; + g[31] = c0y[3]; + g[32] = c0y[0] * c0y[0] + b10[0]; + g[33] = c0y[1] * c0y[1] + b10[1]; + g[34] = c0y[2] * c0y[2] + b10[2]; + g[35] = c0y[3] * c0y[3] + b10[3]; + g[36] = cpy[0]; + g[37] = cpy[1]; + g[38] = cpy[2]; + g[39] = cpy[3]; + g[40] = cpy[0] * c0y[0] + b00[0]; + g[41] = cpy[1] * c0y[1] + b00[1]; + g[42] = cpy[2] * c0y[2] + b00[2]; + g[43] = cpy[3] * c0y[3] + b00[3]; + g[44] = c0y[0] * (g[40] + b00[0]) + b10[0] * cpy[0]; + g[45] = c0y[1] * (g[41] + b00[1]) + b10[1] * cpy[1]; + g[46] = c0y[2] * (g[42] + b00[2]) + b10[2] * cpy[2]; + g[47] = c0y[3] * (g[43] + b00[3]) + b10[3] * cpy[3]; + + + + + g[52] = c0z[0] * g[48]; + g[53] = c0z[1] * g[49]; + g[54] = c0z[2] * g[50]; + g[55] = c0z[3] * g[51]; + g[56] = c0z[0] * g[52] + b10[0] * g[48]; + g[57] = c0z[1] * g[53] + b10[1] * g[49]; + g[58] = c0z[2] * g[54] + b10[2] * g[50]; + g[59] = c0z[3] * g[55] + b10[3] * g[51]; + g[60] = cpz[0] * g[48]; + g[61] = cpz[1] * g[49]; + g[62] = cpz[2] * g[50]; + g[63] = cpz[3] * g[51]; + g[64] = cpz[0] * g[52] + b00[0] * g[48]; + g[65] = cpz[1] * g[53] + b00[1] * g[49]; + g[66] = cpz[2] * g[54] + b00[2] * g[50]; + g[67] = cpz[3] * g[55] + b00[3] * g[51]; + g[68] = c0z[0] * g[64] + b10[0] * g[60] + b00[0] * g[52]; + g[69] = c0z[1] * g[65] + b10[1] * g[61] + b00[1] * g[53]; + g[70] = c0z[2] * g[66] + b10[2] * g[62] + b00[2] * g[54]; + g[71] = c0z[3] * g[67] + b10[3] * g[63] + b00[3] * g[55]; +} + +static inline void _srg0_2d4d_2100(dtype *g, Rys2eT *bc, CINTEnvVars *envs) +{ + dtype *c0x = bc->c00x; + dtype *c0y = bc->c00y; + dtype *c0z = bc->c00z; + dtype *b10 = bc->b10; + dtype xixj = envs->rirj[0]; + dtype yiyj = envs->rirj[1]; + dtype zizj = envs->rirj[2]; + g[0] = 1; + g[1] = 1; + g[2] = 1; + g[3] = 1; + g[4] = c0x[0]; + g[5] = c0x[1]; + g[6] = c0x[2]; + g[7] = c0x[3]; + g[8] = c0x[0] * c0x[0] + b10[0]; + g[9] = c0x[1] * c0x[1] + b10[1]; + g[10] = c0x[2] * c0x[2] + b10[2]; + g[11] = c0x[3] * c0x[3] + b10[3]; + g[24] = g[8] * (xixj + c0x[0]) + c0x[0] * 2 * b10[0]; + g[25] = g[9] * (xixj + c0x[1]) + c0x[1] * 2 * b10[1]; + g[26] = g[10] * (xixj + c0x[2]) + c0x[2] * 2 * b10[2]; + g[27] = g[11] * (xixj + c0x[3]) + c0x[3] * 2 * b10[3]; + g[20] = c0x[0] * (xixj + c0x[0]) + b10[0]; + g[21] = c0x[1] * (xixj + c0x[1]) + b10[1]; + g[22] = c0x[2] * (xixj + c0x[2]) + b10[2]; + g[23] = c0x[3] * (xixj + c0x[3]) + b10[3]; + g[16] = xixj + c0x[0]; + g[17] = xixj + c0x[1]; + g[18] = xixj + c0x[2]; + g[19] = xixj + c0x[3]; + g[32] = 1; + g[33] = 1; + g[34] = 1; + g[35] = 1; + g[36] = c0y[0]; + g[37] = c0y[1]; + g[38] = c0y[2]; + g[39] = c0y[3]; + g[40] = c0y[0] * c0y[0] + b10[0]; + g[41] = c0y[1] * c0y[1] + b10[1]; + g[42] = c0y[2] * c0y[2] + b10[2]; + g[43] = c0y[3] * c0y[3] + b10[3]; + g[56] = g[40] * (yiyj + c0y[0]) + c0y[0] * 2 * b10[0]; + g[57] = g[41] * (yiyj + c0y[1]) + c0y[1] * 2 * b10[1]; + g[58] = g[42] * (yiyj + c0y[2]) + c0y[2] * 2 * b10[2]; + g[59] = g[43] * (yiyj + c0y[3]) + c0y[3] * 2 * b10[3]; + g[52] = c0y[0] * (yiyj + c0y[0]) + b10[0]; + g[53] = c0y[1] * (yiyj + c0y[1]) + b10[1]; + g[54] = c0y[2] * (yiyj + c0y[2]) + b10[2]; + g[55] = c0y[3] * (yiyj + c0y[3]) + b10[3]; + g[48] = yiyj + c0y[0]; + g[49] = yiyj + c0y[1]; + g[50] = yiyj + c0y[2]; + g[51] = yiyj + c0y[3]; + + + + + g[68] = c0z[0] * g[64]; + g[69] = c0z[1] * g[65]; + g[70] = c0z[2] * g[66]; + g[71] = c0z[3] * g[67]; + g[72] = c0z[0] * g[68] + b10[0] * g[64]; + g[73] = c0z[1] * g[69] + b10[1] * g[65]; + g[74] = c0z[2] * g[70] + b10[2] * g[66]; + g[75] = c0z[3] * g[71] + b10[3] * g[67]; + g[88] = g[72] * (zizj + c0z[0]) + 2 * b10[0] * g[68]; + g[89] = g[73] * (zizj + c0z[1]) + 2 * b10[1] * g[69]; + g[90] = g[74] * (zizj + c0z[2]) + 2 * b10[2] * g[70]; + g[91] = g[75] * (zizj + c0z[3]) + 2 * b10[3] * g[71]; + g[84] = g[68] * (zizj + c0z[0]) + b10[0] * g[64]; + g[85] = g[69] * (zizj + c0z[1]) + b10[1] * g[65]; + g[86] = g[70] * (zizj + c0z[2]) + b10[2] * g[66]; + g[87] = g[71] * (zizj + c0z[3]) + b10[3] * g[67]; + g[80] = g[64] * (zizj + c0z[0]); + g[81] = g[65] * (zizj + c0z[1]); + g[82] = g[66] * (zizj + c0z[2]); + g[83] = g[67] * (zizj + c0z[3]); +} + +static inline void _srg0_2d4d_3000(dtype *g, Rys2eT *bc, CINTEnvVars *envs) +{ + dtype *c0x = bc->c00x; + dtype *c0y = bc->c00y; + dtype *c0z = bc->c00z; + dtype *b10 = bc->b10; + g[0] = 1; + g[1] = 1; + g[2] = 1; + g[3] = 1; + g[4] = c0x[0]; + g[5] = c0x[1]; + g[6] = c0x[2]; + g[7] = c0x[3]; + g[8] = c0x[0] * c0x[0] + b10[0]; + g[9] = c0x[1] * c0x[1] + b10[1]; + g[10] = c0x[2] * c0x[2] + b10[2]; + g[11] = c0x[3] * c0x[3] + b10[3]; + g[12] = c0x[0] * (g[8] + 2 * b10[0]); + g[13] = c0x[1] * (g[9] + 2 * b10[1]); + g[14] = c0x[2] * (g[10] + 2 * b10[2]); + g[15] = c0x[3] * (g[11] + 2 * b10[3]); + g[16] = 1; + g[17] = 1; + g[18] = 1; + g[19] = 1; + g[20] = c0y[0]; + g[21] = c0y[1]; + g[22] = c0y[2]; + g[23] = c0y[3]; + g[24] = c0y[0] * c0y[0] + b10[0]; + g[25] = c0y[1] * c0y[1] + b10[1]; + g[26] = c0y[2] * c0y[2] + b10[2]; + g[27] = c0y[3] * c0y[3] + b10[3]; + g[28] = c0y[0] * (g[24] + 2 * b10[0]); + g[29] = c0y[1] * (g[25] + 2 * b10[1]); + g[30] = c0y[2] * (g[26] + 2 * b10[2]); + g[31] = c0y[3] * (g[27] + 2 * b10[3]); + + + + + g[36] = c0z[0] * g[32]; + g[37] = c0z[1] * g[33]; + g[38] = c0z[2] * g[34]; + g[39] = c0z[3] * g[35]; + g[40] = c0z[0] * g[36] + b10[0] * g[32]; + g[41] = c0z[1] * g[37] + b10[1] * g[33]; + g[42] = c0z[2] * g[38] + b10[2] * g[34]; + g[43] = c0z[3] * g[39] + b10[3] * g[35]; + g[44] = c0z[0] * g[40] + 2 * b10[0] * g[36]; + g[45] = c0z[1] * g[41] + 2 * b10[1] * g[37]; + g[46] = c0z[2] * g[42] + 2 * b10[2] * g[38]; + g[47] = c0z[3] * g[43] + 2 * b10[3] * g[39]; +} + +void CINTsrg0_2e_2d4d_unrolled(dtype *g, Rys2eT *bc, CINTEnvVars *envs) +{ + int type_ijkl = ((envs->li_ceil << 6) | (envs->lj_ceil << 4) | + (envs->lk_ceil << 2) | (envs->ll_ceil)); + switch (type_ijkl) { + case 0b00000000: _srg0_2d4d_0000(g, bc, envs); return; + case 0b00000001: _srg0_2d4d_0001(g, bc, envs); return; + case 0b00000010: _srg0_2d4d_0002(g, bc, envs); return; + case 0b00000011: _srg0_2d4d_0003(g, bc, envs); return; + case 0b00000100: _srg0_2d4d_0010(g, bc, envs); return; + case 0b00000101: _srg0_2d4d_0011(g, bc, envs); return; + case 0b00000110: _srg0_2d4d_0012(g, bc, envs); return; + case 0b00001000: _srg0_2d4d_0020(g, bc, envs); return; + case 0b00001001: _srg0_2d4d_0021(g, bc, envs); return; + case 0b00001100: _srg0_2d4d_0030(g, bc, envs); return; + case 0b00010000: _srg0_2d4d_0100(g, bc, envs); return; + case 0b00010001: _srg0_2d4d_0101(g, bc, envs); return; + case 0b00010010: _srg0_2d4d_0102(g, bc, envs); return; + case 0b00010100: _srg0_2d4d_0110(g, bc, envs); return; + case 0b00010101: _srg0_2d4d_0111(g, bc, envs); return; + case 0b00011000: _srg0_2d4d_0120(g, bc, envs); return; + case 0b00100000: _srg0_2d4d_0200(g, bc, envs); return; + case 0b00100001: _srg0_2d4d_0201(g, bc, envs); return; + case 0b00100100: _srg0_2d4d_0210(g, bc, envs); return; + case 0b00110000: _srg0_2d4d_0300(g, bc, envs); return; + case 0b01000000: _srg0_2d4d_1000(g, bc, envs); return; + case 0b01000001: _srg0_2d4d_1001(g, bc, envs); return; + case 0b01000010: _srg0_2d4d_1002(g, bc, envs); return; + case 0b01000100: _srg0_2d4d_1010(g, bc, envs); return; + case 0b01000101: _srg0_2d4d_1011(g, bc, envs); return; + case 0b01001000: _srg0_2d4d_1020(g, bc, envs); return; + case 0b01010000: _srg0_2d4d_1100(g, bc, envs); return; + case 0b01010001: _srg0_2d4d_1101(g, bc, envs); return; + case 0b01010100: _srg0_2d4d_1110(g, bc, envs); return; + case 0b01100000: _srg0_2d4d_1200(g, bc, envs); return; + case 0b10000000: _srg0_2d4d_2000(g, bc, envs); return; + case 0b10000001: _srg0_2d4d_2001(g, bc, envs); return; + case 0b10000100: _srg0_2d4d_2010(g, bc, envs); return; + case 0b10010000: _srg0_2d4d_2100(g, bc, envs); return; + case 0b11000000: _srg0_2d4d_3000(g, bc, envs); return; + } + //fprintf(stderr, "Dimension error for CINTg0_2e_lj2d4d: iklj = %d %d %d %d", + // (int)envs->li_ceil, (int)envs->lk_ceil, + // (int)envs->ll_ceil, (int)envs->lj_ceil); +} + +void CINTg0_2e_lj2d4d(dtype *g, Rys2eT *bc, CINTEnvVars *envs) +{ + CINTg0_2e_2d(g, bc, envs); + CINTg0_lj2d_4d(g, envs); +} + +void CINTg0_2e_kj2d4d(dtype *g, Rys2eT *bc, CINTEnvVars *envs) +{ + CINTg0_2e_2d(g, bc, envs); + CINTg0_kj2d_4d(g, envs); +} +void CINTg0_2e_ik2d4d(dtype *g, Rys2eT *bc, CINTEnvVars *envs) +{ + CINTg0_2e_2d(g, bc, envs); + CINTg0_ik2d_4d(g, envs); +} +void CINTg0_2e_il2d4d(dtype *g, Rys2eT *bc, CINTEnvVars *envs) +{ + CINTg0_2e_2d(g, bc, envs); + CINTg0_il2d_4d(g, envs); +} + + +FINT CINTg0_2e(dtype *g, dtype *rij, dtype *rkl, dtype cutoff, CINTEnvVars *envs) +{ + FINT irys; + FINT nroots = envs->nrys_roots; + dtype aij = envs->ai[0] + envs->aj[0]; + dtype akl = envs->ak[0] + envs->al[0]; + dtype a0, a1, fac1, x; + dtype u[MXRYSROOTS]; + dtype *w = g + envs->g_size * 2; + dtype xij_kl = rij[0] - rkl[0]; + dtype yij_kl = rij[1] - rkl[1]; + dtype zij_kl = rij[2] - rkl[2]; + dtype rr = xij_kl * xij_kl + yij_kl * yij_kl + zij_kl * zij_kl; + + a1 = aij * akl; + a0 = a1 / (aij + akl); + fac1 = sqrt(a0 / (a1 * a1 * a1)) * envs->fac[0]; + x = a0 * rr; + const dtype omega = envs->env[PTR_RANGE_OMEGA]; + dtype theta = 0; + if (omega == 0.) { + CINTrys_roots(nroots, x, u, w); + } else if (omega < 0.) { + + theta = omega * omega / (omega * omega + a0); + + + if (theta * x > cutoff || theta * x > EXPCUTOFF_SR) { + return 0; + } + int rorder = envs->rys_order; + if (rorder == nroots) { + CINTsr_rys_roots(nroots, x, sqrt(theta), u, w); + } else { + dtype sqrt_theta = -sqrt(theta); + CINTrys_roots(rorder, x, u, w); + CINTrys_roots(rorder, theta*x, u+rorder, w+rorder); + if (envs->g_size == 2) { + g[0] = 1; + g[1] = 1; + g[2] = 1; + g[3] = 1; + g[4] *= fac1; + g[5] *= fac1 * sqrt_theta; + return 1; + } + for (irys = rorder; irys < nroots; irys++) { + dtype ut = u[irys] * theta; + u[irys] = ut / (u[irys]+1.-ut); + w[irys] *= sqrt_theta; + } + } + } else { + + theta = omega * omega / (omega * omega + a0); + x *= theta; + fac1 *= sqrt(theta); + CINTrys_roots(nroots, x, u, w); + + for (irys = 0; irys < nroots; irys++) { + dtype ut = u[irys] * theta; + u[irys] = ut / (u[irys]+1.-ut); + } + } + if (envs->g_size == 1) { + g[0] = 1; + g[1] = 1; + g[2] *= fac1; + return 1; + } + + dtype u2, tmp1, tmp2, tmp3, tmp4, tmp5; + dtype rijrx = rij[0] - envs->rx_in_rijrx[0]; + dtype rijry = rij[1] - envs->rx_in_rijrx[1]; + dtype rijrz = rij[2] - envs->rx_in_rijrx[2]; + dtype rklrx = rkl[0] - envs->rx_in_rklrx[0]; + dtype rklry = rkl[1] - envs->rx_in_rklrx[1]; + dtype rklrz = rkl[2] - envs->rx_in_rklrx[2]; + Rys2eT bc; + dtype *b00 = bc.b00; + dtype *b10 = bc.b10; + dtype *b01 = bc.b01; + dtype *c00x = bc.c00x; + dtype *c00y = bc.c00y; + dtype *c00z = bc.c00z; + dtype *c0px = bc.c0px; + dtype *c0py = bc.c0py; + dtype *c0pz = bc.c0pz; + + for (irys = 0; irys < nroots; irys++) { + + u2 = a0 * u[irys]; + tmp4 = .5 / (u2 * (aij + akl) + a1); + tmp5 = u2 * tmp4; + tmp1 = 2. * tmp5; + tmp2 = tmp1 * akl; + tmp3 = tmp1 * aij; + b00[irys] = tmp5; + b10[irys] = tmp5 + tmp4 * akl; + b01[irys] = tmp5 + tmp4 * aij; + c00x[irys] = rijrx - tmp2 * xij_kl; + c00y[irys] = rijry - tmp2 * yij_kl; + c00z[irys] = rijrz - tmp2 * zij_kl; + c0px[irys] = rklrx + tmp3 * xij_kl; + c0py[irys] = rklry + tmp3 * yij_kl; + c0pz[irys] = rklrz + tmp3 * zij_kl; + w[irys] *= fac1; + } + + //(*envs->f_g0_2d4d)(g, &bc, envs); + if (version_f_g0_2d4d == 0){ CINTg0_2e_2d4d_unrolled(g, &bc, envs); } + else if (version_f_g0_2d4d == 1){ CINTsrg0_2e_2d4d_unrolled(g, &bc, envs); } + else if (version_f_g0_2d4d == 2){ CINTg0_2e_ik2d4d(g, &bc, envs); } + else if (version_f_g0_2d4d == 3){ CINTg0_2e_kj2d4d(g, &bc, envs); } + else if (version_f_g0_2d4d == 4){ CINTg0_2e_il2d4d(g, &bc, envs); } + else if (version_f_g0_2d4d == 5){ CINTg0_2e_lj2d4d(g, &bc, envs); } + + /*if (rys_order <= 2) { + envs->f_g0_2d4d = (void (*)(...))&CINTg0_2e_2d4d_unrolled; + version_f_g0_2d4d = 0 + if (rys_order != nrys_roots) { + envs->f_g0_2d4d = (void (*)(...))&CINTsrg0_2e_2d4d_unrolled; + version_f_g0_2d4d = 1 + } + } else if (kbase) { + if (ibase) { + envs->f_g0_2d4d = (void (*)(...))&CINTg0_2e_ik2d4d; + version_f_g0_2d4d = 2 + } else { + envs->f_g0_2d4d = (void (*)(...))&CINTg0_2e_kj2d4d; + version_f_g0_2d4d = 3 + } + } else { + if (ibase) { + envs->f_g0_2d4d = (void (*)(...))&CINTg0_2e_il2d4d; + version_f_g0_2d4d = 4 + } else { + envs->f_g0_2d4d = (void (*)(...))&CINTg0_2e_lj2d4d; + version_f_g0_2d4d = 5 + } + }*/ + + return 1; +} + + +void CINTnabla1i_2e(dtype *f, const dtype *g, + const FINT li, const FINT lj, const FINT lk, const FINT ll, + const CINTEnvVars *envs) +{ + FINT i, j, k, l, n, ptr; + const FINT di = envs->g_stride_i; + const FINT dk = envs->g_stride_k; + const FINT dl = envs->g_stride_l; + const FINT dj = envs->g_stride_j; + const FINT nroots = envs->nrys_roots; + const dtype ai2 = -2 * envs->ai[0]; + DEF_GXYZ(const dtype, g, gx, gy, gz); + DEF_GXYZ(dtype, f, fx, fy, fz); + + const dtype *p1x = gx - di; + const dtype *p1y = gy - di; + const dtype *p1z = gz - di; + const dtype *p2x = gx + di; + const dtype *p2y = gy + di; + const dtype *p2z = gz + di; + for (j = 0; j <= lj; j++) + for (l = 0; l <= ll; l++) + for (k = 0; k <= lk; k++) { + ptr = dj * j + dl * l + dk * k; + + for (n = ptr; n < ptr+nroots; n++) { + fx[n] = ai2 * p2x[n]; + fy[n] = ai2 * p2y[n]; + fz[n] = ai2 * p2z[n]; + } + ptr += di; + + for (i = 1; i <= li; i++) { + for (n = ptr; n < ptr+nroots; n++) { + fx[n] = i*p1x[n] + ai2*p2x[n]; + fy[n] = i*p1y[n] + ai2*p2y[n]; + fz[n] = i*p1z[n] + ai2*p2z[n]; + } + ptr += di; + } + } +} + + +void CINTnabla1j_2e(dtype *f, const dtype *g, + const FINT li, const FINT lj, const FINT lk, const FINT ll, + const CINTEnvVars *envs) +{ + FINT i, j, k, l, n, ptr; + const FINT di = envs->g_stride_i; + const FINT dk = envs->g_stride_k; + const FINT dl = envs->g_stride_l; + const FINT dj = envs->g_stride_j; + const FINT nroots = envs->nrys_roots; + const dtype aj2 = -2 * envs->aj[0]; + DEF_GXYZ(const dtype, g, gx, gy, gz); + DEF_GXYZ(dtype, f, fx, fy, fz); + + const dtype *p1x = gx - dj; + const dtype *p1y = gy - dj; + const dtype *p1z = gz - dj; + const dtype *p2x = gx + dj; + const dtype *p2y = gy + dj; + const dtype *p2z = gz + dj; + + for (l = 0; l <= ll; l++) { + for (k = 0; k <= lk; k++) { + ptr = dl * l + dk * k; + for (i = 0; i <= li; i++) { + for (n = ptr; n < ptr+nroots; n++) { + fx[n] = aj2 * p2x[n]; + fy[n] = aj2 * p2y[n]; + fz[n] = aj2 * p2z[n]; + } + ptr += di; + } + } } + + for (j = 1; j <= lj; j++) { + for (l = 0; l <= ll; l++) { + for (k = 0; k <= lk; k++) { + ptr = dj * j + dl * l + dk * k; + for (i = 0; i <= li; i++) { + for (n = ptr; n < ptr+nroots; n++) { + fx[n] = j*p1x[n] + aj2*p2x[n]; + fy[n] = j*p1y[n] + aj2*p2y[n]; + fz[n] = j*p1z[n] + aj2*p2z[n]; + } + ptr += di; + } + } } + } +} + + +void CINTnabla1k_2e(dtype *f, const dtype *g, + const FINT li, const FINT lj, const FINT lk, const FINT ll, + const CINTEnvVars *envs) +{ + FINT i, j, k, l, n, ptr; + const FINT di = envs->g_stride_i; + const FINT dk = envs->g_stride_k; + const FINT dl = envs->g_stride_l; + const FINT dj = envs->g_stride_j; + const FINT nroots = envs->nrys_roots; + const dtype ak2 = -2 * envs->ak[0]; + DEF_GXYZ(const dtype, g, gx, gy, gz); + DEF_GXYZ(dtype, f, fx, fy, fz); + + const dtype *p1x = gx - dk; + const dtype *p1y = gy - dk; + const dtype *p1z = gz - dk; + const dtype *p2x = gx + dk; + const dtype *p2y = gy + dk; + const dtype *p2z = gz + dk; + for (j = 0; j <= lj; j++) + for (l = 0; l <= ll; l++) { + ptr = dj * j + dl * l; + + for (i = 0; i <= li; i++) { + for (n = ptr; n < ptr+nroots; n++) { + fx[n] = ak2 * p2x[n]; + fy[n] = ak2 * p2y[n]; + fz[n] = ak2 * p2z[n]; + } + ptr += di; + } + + for (k = 1; k <= lk; k++) { + ptr = dj * j + dl * l + dk * k; + for (i = 0; i <= li; i++) { + for (n = ptr; n < ptr+nroots; n++) { + fx[n] = k*p1x[n] + ak2*p2x[n]; + fy[n] = k*p1y[n] + ak2*p2y[n]; + fz[n] = k*p1z[n] + ak2*p2z[n]; + } + ptr += di; + } + } + } +} + + +void CINTnabla1l_2e(dtype *f, const dtype *g, + const FINT li, const FINT lj, const FINT lk, const FINT ll, + const CINTEnvVars *envs) +{ + FINT i, j, k, l, n, ptr; + const FINT di = envs->g_stride_i; + const FINT dk = envs->g_stride_k; + const FINT dl = envs->g_stride_l; + const FINT dj = envs->g_stride_j; + const FINT nroots = envs->nrys_roots; + const dtype al2 = -2 * envs->al[0]; + DEF_GXYZ(const dtype, g, gx, gy, gz); + DEF_GXYZ(dtype, f, fx, fy, fz); + + const dtype *p1x = gx - dl; + const dtype *p1y = gy - dl; + const dtype *p1z = gz - dl; + const dtype *p2x = gx + dl; + const dtype *p2y = gy + dl; + const dtype *p2z = gz + dl; + for (j = 0; j <= lj; j++) { + + for (k = 0; k <= lk; k++) { + ptr = dj * j + dk * k; + for (i = 0; i <= li; i++) { + for (n = ptr; n < ptr+nroots; n++) { + fx[n] = al2 * p2x[n]; + fy[n] = al2 * p2y[n]; + fz[n] = al2 * p2z[n]; + } + ptr += di; + } + } + + for (l = 1; l <= ll; l++) { + for (k = 0; k <= lk; k++) { + ptr = dj * j + dl * l + dk * k; + for (i = 0; i <= li; i++, ptr += di) { + for (n = ptr; n < ptr+nroots; n++) { + fx[n] = l*p1x[n] + al2*p2x[n]; + fy[n] = l*p1y[n] + al2*p2y[n]; + fz[n] = l*p1z[n] + al2*p2z[n]; + } } + } + } + } +} + + +void CINTx1i_2e(dtype *f, const dtype *g, const dtype *ri, + const FINT li, const FINT lj, const FINT lk, const FINT ll, + const CINTEnvVars *envs) +{ + FINT i, j, k, l, n, ptr; + const FINT di = envs->g_stride_i; + const FINT dk = envs->g_stride_k; + const FINT dl = envs->g_stride_l; + const FINT dj = envs->g_stride_j; + const FINT nroots = envs->nrys_roots; + DEF_GXYZ(const dtype, g, gx, gy, gz); + DEF_GXYZ(dtype, f, fx, fy, fz); + + const dtype *p1x = gx + di; + const dtype *p1y = gy + di; + const dtype *p1z = gz + di; + for (j = 0; j <= lj; j++) + for (l = 0; l <= ll; l++) { + for (k = 0; k <= lk; k++) { + + ptr = dj * j + dl * l + dk * k; + for (i = 0; i <= li; i++) { + for (n = ptr; n < ptr+nroots; n++) { + fx[n] = p1x[n] + ri[0] * gx[n]; + fy[n] = p1y[n] + ri[1] * gy[n]; + fz[n] = p1z[n] + ri[2] * gz[n]; + } + ptr += di; + } + } } +} + + +void CINTx1j_2e(dtype *f, const dtype *g, const dtype *rj, + const FINT li, const FINT lj, const FINT lk, const FINT ll, + const CINTEnvVars *envs) +{ + FINT i, j, k, l, n, ptr; + const FINT di = envs->g_stride_i; + const FINT dk = envs->g_stride_k; + const FINT dl = envs->g_stride_l; + const FINT dj = envs->g_stride_j; + const FINT nroots = envs->nrys_roots; + DEF_GXYZ(const dtype, g, gx, gy, gz); + DEF_GXYZ(dtype, f, fx, fy, fz); + + const dtype *p1x = gx + dj; + const dtype *p1y = gy + dj; + const dtype *p1z = gz + dj; + for (j = 0; j <= lj; j++) + for (l = 0; l <= ll; l++) { + for (k = 0; k <= lk; k++) { + + ptr = dj * j + dl * l + dk * k; + for (i = 0; i <= li; i++) { + for (n = ptr; n < ptr+nroots; n++) { + fx[n] = p1x[n] + rj[0] * gx[n]; + fy[n] = p1y[n] + rj[1] * gy[n]; + fz[n] = p1z[n] + rj[2] * gz[n]; + } + ptr += di; + } + } } +} + + +void CINTx1k_2e(dtype *f, const dtype *g, const dtype *rk, + const FINT li, const FINT lj, const FINT lk, const FINT ll, + const CINTEnvVars *envs) +{ + FINT i, j, k, l, n, ptr; + const FINT di = envs->g_stride_i; + const FINT dk = envs->g_stride_k; + const FINT dl = envs->g_stride_l; + const FINT dj = envs->g_stride_j; + const FINT nroots = envs->nrys_roots; + DEF_GXYZ(const dtype, g, gx, gy, gz); + DEF_GXYZ(dtype, f, fx, fy, fz); + + const dtype *p1x = gx + dk; + const dtype *p1y = gy + dk; + const dtype *p1z = gz + dk; + for (j = 0; j <= lj; j++) + for (l = 0; l <= ll; l++) { + for (k = 0; k <= lk; k++) { + + ptr = dj * j + dl * l + dk * k; + for (i = 0; i <= li; i++) { + for (n = ptr; n < ptr+nroots; n++) { + fx[n] = p1x[n] + rk[0] * gx[n]; + fy[n] = p1y[n] + rk[1] * gy[n]; + fz[n] = p1z[n] + rk[2] * gz[n]; + } + ptr += di; + } + } } +} + + +void CINTx1l_2e(dtype *f, const dtype *g, const dtype *rl, + const FINT li, const FINT lj, const FINT lk, const FINT ll, + const CINTEnvVars *envs) +{ + FINT i, j, k, l, n, ptr; + const FINT di = envs->g_stride_i; + const FINT dk = envs->g_stride_k; + const FINT dl = envs->g_stride_l; + const FINT dj = envs->g_stride_j; + const FINT nroots = envs->nrys_roots; + DEF_GXYZ(const dtype, g, gx, gy, gz); + DEF_GXYZ(dtype, f, fx, fy, fz); + + const dtype *p1x = gx + dl; + const dtype *p1y = gy + dl; + const dtype *p1z = gz + dl; + for (j = 0; j <= lj; j++) + for (l = 0; l <= ll; l++) { + for (k = 0; k <= lk; k++) { + + ptr = dj * j + dl * l + dk * k; + for (i = 0; i <= li; i++) { + for (n = ptr; n < ptr+nroots; n++) { + fx[n] = p1x[n] + rl[0] * gx[n]; + fy[n] = p1y[n] + rl[1] * gy[n]; + fz[n] = p1z[n] + rl[2] * gz[n]; + } + ptr += di; + } + } } +} + + + +#include +//#include +#include +#include + +#define gctrg gout +#define gctrm gctr +#define mempty empty +#define m_ctr n_comp +#define ALIAS_ADDR_IF_EQUAL(x, y) \ + if (y##_ctr == 1) { \ + gctr##x = gctr##y; \ + x##empty = y##empty; \ + } else { \ + gctr##x = g1; \ + g1 += len##x; \ + } + +#define PRIM2CTR(ctrsymb, gp, ngp) \ + if (ctrsymb##_ctr > 1) {\ + if (*ctrsymb##empty) { \ + CINTprim_to_ctr_0(gctr##ctrsymb, gp, c##ctrsymb+ctrsymb##p, \ + ngp, ctrsymb##_prim, ctrsymb##_ctr, \ + non0ctr##ctrsymb[ctrsymb##p], \ + non0idx##ctrsymb+ctrsymb##p*ctrsymb##_ctr); \ + } else { \ + CINTprim_to_ctr_1(gctr##ctrsymb, gp, c##ctrsymb+ctrsymb##p, \ + ngp, ctrsymb##_prim, ctrsymb##_ctr, \ + non0ctr##ctrsymb[ctrsymb##p], \ + non0idx##ctrsymb+ctrsymb##p*ctrsymb##_ctr); \ + } \ + } \ + *ctrsymb##empty = 0 + +#define TRANSPOSE(a) \ + if (*empty) { \ + CINTdmat_transpose(gctr, a, nf*nc, n_comp); \ + *empty = 0; \ + } else { \ + CINTdplus_transpose(gctr, a, nf*nc, n_comp); \ + } \ + +FINT CINT2e_loop_nopt(dtype *gctr, CINTEnvVars *envs, dtype *cache, FINT *empty) +{ + FINT *shls = envs->shls; + FINT *bas = envs->bas; + dtype *env = envs->env; + FINT i_sh = shls[0]; + FINT j_sh = shls[1]; + FINT k_sh = shls[2]; + FINT l_sh = shls[3]; + FINT i_ctr = envs->x_ctr[0]; + FINT j_ctr = envs->x_ctr[1]; + FINT k_ctr = envs->x_ctr[2]; + FINT l_ctr = envs->x_ctr[3]; + FINT i_prim = bas(NPRIM_OF, i_sh); + FINT j_prim = bas(NPRIM_OF, j_sh); + FINT k_prim = bas(NPRIM_OF, k_sh); + FINT l_prim = bas(NPRIM_OF, l_sh); + + dtype *rk = envs->rk; + dtype *rl = envs->rl; + dtype *ai = env + bas(PTR_EXP, i_sh); + dtype *aj = env + bas(PTR_EXP, j_sh); + dtype *ak = env + bas(PTR_EXP, k_sh); + dtype *al = env + bas(PTR_EXP, l_sh); + dtype *ci = env + bas(PTR_COEFF, i_sh); + dtype *cj = env + bas(PTR_COEFF, j_sh); + dtype *ck = env + bas(PTR_COEFF, k_sh); + dtype *cl = env + bas(PTR_COEFF, l_sh); + dtype expcutoff = envs->expcutoff; + dtype rr_ij = SQUARE(envs->rirj); + dtype rr_kl = SQUARE(envs->rkrl); + //dtype *log_maxci, *log_maxcj, *log_maxck, *log_maxcl; + //PairData *pdata_base, *pdata_ij; + dtype *log_maxcj, *log_maxck, *log_maxcl; + PairData *pdata_ij; + + MALLOC(dtype, log_maxci); + MALLOC(PairData, pdata_base); + //MALLOC_INSTACK(log_maxci, i_prim+j_prim+k_prim+l_prim); + //MALLOC_INSTACK(pdata_base, i_prim*j_prim); + log_maxcj = log_maxci + i_prim; + log_maxck = log_maxcj + j_prim; + log_maxcl = log_maxck + k_prim; + CINTOpt_log_max_pgto_coeff(log_maxci, ci, i_prim, i_ctr); + CINTOpt_log_max_pgto_coeff(log_maxcj, cj, j_prim, j_ctr); + if (CINTset_pairdata(pdata_base, ai, aj, envs->ri, envs->rj, + log_maxci, log_maxcj, envs->li_ceil, envs->lj_ceil, + i_prim, j_prim, rr_ij, expcutoff, env)) { + return 0; + } + CINTOpt_log_max_pgto_coeff(log_maxck, ck, k_prim, k_ctr); + CINTOpt_log_max_pgto_coeff(log_maxcl, cl, l_prim, l_ctr); + + FINT n_comp = envs->ncomp_e1 * envs->ncomp_e2 * envs->ncomp_tensor; + size_t nf = envs->nf; + dtype fac1i, fac1j, fac1k, fac1l; + FINT ip, jp, kp, lp; + FINT _empty[5] = {1, 1, 1, 1, 1}; + FINT *iempty = _empty + 0; + FINT *jempty = _empty + 1; + FINT *kempty = _empty + 2; + FINT *lempty = _empty + 3; + FINT *gempty = _empty + 4; + + int lkl = envs->lk_ceil + envs->ll_ceil; + dtype akl, ekl, expijkl, ccekl, log_rr_kl, eijcutoff, cutoff; + dtype rkl[3]; + dtype *rij; + akl = ak[k_prim-1] + al[l_prim-1]; + log_rr_kl = 1.7 - 1.5 * approx_log(akl); + dtype omega = env[PTR_RANGE_OMEGA]; + if (omega < 0) { + + if (envs->rys_order > 1) { + dtype r_guess = 8.; + dtype omega2 = omega * omega; + int lij = envs->li_ceil + envs->lj_ceil; + if (lij > 0) { + dtype aij = ai[i_prim-1] + aj[j_prim-1]; + dtype dist_ij = sqrt(rr_ij); + dtype theta = omega2 / (omega2 + aij); + expcutoff += lij * approx_log( + (dist_ij+theta*r_guess+1.)/(dist_ij+1.)); + } + if (lkl > 0) { + dtype theta = omega2 / (omega2 + akl); + log_rr_kl += lkl * approx_log( + sqrt(rr_kl) + theta*r_guess + 1.); + } + } + } else { + if (lkl > 0) { + log_rr_kl += lkl * approx_log(sqrt(rr_kl) + 1.); + } + } + + //FINT *idx; + //MALLOC_INSTACK(idx, nf * 3); + MALLOC(FINT, idx); + CINTg2e_index_xyz(idx, envs); + + //FINT *non0ctri, *non0ctrj, *non0ctrk, *non0ctrl; + FINT *non0ctrj, *non0ctrk, *non0ctrl; + FINT *non0idxi, *non0idxj, *non0idxk, *non0idxl; + //MALLOC_INSTACK(non0ctri, i_prim+j_prim+k_prim+l_prim+i_prim*i_ctr+j_prim*j_ctr+k_prim*k_ctr+l_prim*l_ctr); + MALLOC(FINT, non0ctri); + non0ctrj = non0ctri + i_prim; + non0ctrk = non0ctrj + j_prim; + non0ctrl = non0ctrk + k_prim; + non0idxi = non0ctrl + l_prim; + non0idxj = non0idxi + i_prim*i_ctr; + non0idxk = non0idxj + j_prim*j_ctr; + non0idxl = non0idxk + k_prim*k_ctr; + CINTOpt_non0coeff_byshell(non0idxi, non0ctri, ci, i_prim, i_ctr); + CINTOpt_non0coeff_byshell(non0idxj, non0ctrj, cj, j_prim, j_ctr); + CINTOpt_non0coeff_byshell(non0idxk, non0ctrk, ck, k_prim, k_ctr); + CINTOpt_non0coeff_byshell(non0idxl, non0ctrl, cl, l_prim, l_ctr); + + FINT nc = i_ctr * j_ctr * k_ctr * l_ctr; + + size_t leng = envs->g_size * 3 * ((1<gbits)+1); + size_t lenl = nf * nc * n_comp; + size_t lenk = nf * i_ctr * j_ctr * k_ctr * n_comp; + size_t lenj = nf * i_ctr * j_ctr * n_comp; + size_t leni = nf * i_ctr * n_comp; + size_t len0 = nf * n_comp; + size_t len = leng + lenl + lenk + lenj + leni + len0; + //dtype *g; + //MALLOC_INSTACK(g, len); + MALLOC(dtype, g); + dtype *g1 = g + leng; + dtype *gout, *gctri, *gctrj, *gctrk, *gctrl; + ALIAS_ADDR_IF_EQUAL(l, m); + ALIAS_ADDR_IF_EQUAL(k, l); + ALIAS_ADDR_IF_EQUAL(j, k); + ALIAS_ADDR_IF_EQUAL(i, j); + ALIAS_ADDR_IF_EQUAL(g, i); + + for (lp = 0; lp < l_prim; lp++) { + envs->al[0] = al[lp]; + if (l_ctr == 1) { + fac1l = envs->common_factor * cl[lp]; + } else { + fac1l = envs->common_factor; + *kempty = 1; + } + for (kp = 0; kp < k_prim; kp++) { + akl = ak[kp] + al[lp]; + ekl = rr_kl * ak[kp] * al[lp] / akl; + ccekl = ekl - log_rr_kl - log_maxck[kp] - log_maxcl[lp]; + if (ccekl > expcutoff) { + goto k_contracted; + } + envs->ak[0] = ak[kp]; + rkl[0] = (ak[kp]*rk[0] + al[lp]*rl[0]) / akl; + rkl[1] = (ak[kp]*rk[1] + al[lp]*rl[1]) / akl; + rkl[2] = (ak[kp]*rk[2] + al[lp]*rl[2]) / akl; + eijcutoff = expcutoff - ccekl; + ekl = exp(-ekl); + + if (k_ctr == 1) { + fac1k = fac1l * ck[kp]; + } else { + fac1k = fac1l; + *jempty = 1; + } + + pdata_ij = pdata_base; + for (jp = 0; jp < j_prim; jp++) { + envs->aj[0] = aj[jp]; + if (j_ctr == 1) { + fac1j = fac1k * cj[jp]; + } else { + fac1j = fac1k; + *iempty = 1; + } + for (ip = 0; ip < i_prim; ip++, pdata_ij++) { + if (pdata_ij->cceij > eijcutoff) { + goto i_contracted; + } + envs->ai[0] = ai[ip]; + rij = pdata_ij->rij; + cutoff = eijcutoff - pdata_ij->cceij; + expijkl = pdata_ij->eij * ekl; + if (i_ctr == 1) { + fac1i = fac1j*ci[ip]*expijkl; + } else { + fac1i = fac1j*expijkl; + } + envs->fac[0] = fac1i; + // todo; + //if ((*envs->f_g0_2e)(g, rij, rkl, cutoff, envs)) { + // (*envs->f_gout)(gout, g, idx, envs, *gempty); + if (CINTg0_2e(g, rij, rkl, cutoff, envs)) { + if (WHICH_INTEGRAL == INT2E_SPH){ + CINTgout2e(gout, g, idx, envs, *gempty); + } + else if (WHICH_INTEGRAL == INT2E_IP1_SPH){ + CINTgout2e_int2e_ip1(gout, g, idx, envs, *gempty); + } + + PRIM2CTR(i, gout, len0); + } +i_contracted: ; + } + if (!*iempty) { + PRIM2CTR(j, gctri, leni); + } + } + if (!*jempty) { + PRIM2CTR(k, gctrj, lenj); + } +k_contracted: ; + } + if (!*kempty) { + PRIM2CTR(l, gctrk, lenk); + } + } + + if (n_comp > 1 && !*lempty) { + TRANSPOSE(gctrl); + } + return !*empty; +} + +#define COMMON_ENVS_AND_DECLARE \ + FINT *shls = envs->shls; \ + FINT *bas = envs->bas; \ + dtype *env = envs->env; \ + FINT i_sh = shls[0]; \ + FINT j_sh = shls[1]; \ + FINT k_sh = shls[2]; \ + FINT l_sh = shls[3]; \ + CINTOpt *opt = envs->opt; \ + if (opt->pairdata != NULL && \ + ((opt->pairdata[i_sh*opt->nbas+j_sh] == NOVALUE) || \ + (opt->pairdata[k_sh*opt->nbas+l_sh] == NOVALUE))) { \ + return 0; \ + } \ + FINT i_ctr = envs->x_ctr[0]; \ + FINT j_ctr = envs->x_ctr[1]; \ + FINT k_ctr = envs->x_ctr[2]; \ + FINT l_ctr = envs->x_ctr[3]; \ + FINT i_prim = bas(NPRIM_OF, i_sh); \ + FINT j_prim = bas(NPRIM_OF, j_sh); \ + FINT k_prim = bas(NPRIM_OF, k_sh); \ + FINT l_prim = bas(NPRIM_OF, l_sh); \ + dtype *ai = env + bas(PTR_EXP, i_sh); \ + dtype *aj = env + bas(PTR_EXP, j_sh); \ + dtype *ak = env + bas(PTR_EXP, k_sh); \ + dtype *al = env + bas(PTR_EXP, l_sh); \ + dtype *ci = env + bas(PTR_COEFF, i_sh); \ + dtype *cj = env + bas(PTR_COEFF, j_sh); \ + dtype *ck = env + bas(PTR_COEFF, k_sh); \ + dtype *cl = env + bas(PTR_COEFF, l_sh); \ + dtype expcutoff = envs->expcutoff; \ + dtype rr_ij = SQUARE(envs->rirj); \ + dtype rr_kl = SQUARE(envs->rkrl); \ + PairData *_pdata_ij, *_pdata_kl, *pdata_ij, *pdata_kl; \ + if (opt->pairdata != NULL) { \ + _pdata_ij = opt->pairdata[i_sh*opt->nbas+j_sh]; \ + _pdata_kl = opt->pairdata[k_sh*opt->nbas+l_sh]; \ + } else { \ + dtype *log_maxci = opt->log_max_coeff[i_sh]; \ + dtype *log_maxcj = opt->log_max_coeff[j_sh]; \ + MALLOC(PairData, _pdata_ij); \ + if (CINTset_pairdata(_pdata_ij, ai, aj, envs->ri, envs->rj, \ + log_maxci, log_maxcj, envs->li_ceil, envs->lj_ceil, \ + i_prim, j_prim, rr_ij, expcutoff, env)) { \ + return 0; \ + } \ + dtype *log_maxck = opt->log_max_coeff[k_sh]; \ + dtype *log_maxcl = opt->log_max_coeff[l_sh]; \ + _pdata_kl = _pdata_ij + i_prim*j_prim; \ + if (CINTset_pairdata(_pdata_kl, ak, al, envs->rk, envs->rl, \ + log_maxck, log_maxcl, envs->lk_ceil, envs->ll_ceil, \ + k_prim, l_prim, rr_kl, expcutoff, env)) { \ + return 0; \ + } \ + } \ + FINT n_comp = envs->ncomp_e1 * envs->ncomp_e2 * envs->ncomp_tensor; \ + size_t nf = envs->nf; \ + dtype fac1i, fac1j, fac1k, fac1l; \ + FINT ip, jp, kp, lp; \ + FINT _empty[5] = {1, 1, 1, 1, 1}; \ + FINT *iempty = _empty + 0; \ + FINT *jempty = _empty + 1; \ + FINT *kempty = _empty + 2; \ + FINT *lempty = _empty + 3; \ + FINT *gempty = _empty + 4; \ + FINT *non0ctri = opt->non0ctr[i_sh]; \ + FINT *non0ctrj = opt->non0ctr[j_sh]; \ + FINT *non0ctrk = opt->non0ctr[k_sh]; \ + FINT *non0ctrl = opt->non0ctr[l_sh]; \ + FINT *non0idxi = opt->sortedidx[i_sh]; \ + FINT *non0idxj = opt->sortedidx[j_sh]; \ + FINT *non0idxk = opt->sortedidx[k_sh]; \ + FINT *non0idxl = opt->sortedidx[l_sh]; \ + dtype expij, expkl, eijcutoff, eklcutoff, cutoff; \ + eklcutoff = expcutoff; \ + dtype *rij, *rkl; \ + FINT *idx = opt->index_xyz_array[envs->i_l*LMAX1*LMAX1*LMAX1 \ + +envs->j_l*LMAX1*LMAX1 \ + +envs->k_l*LMAX1 \ + +envs->l_l]; \ + if (idx == NULL) { \ + MALLOC(FINT, idx); \ + CINTg2e_index_xyz(idx, envs); \ + } + +#define ADJUST_CUTOFF \ + dtype omega = env[PTR_RANGE_OMEGA]; \ + if (omega < 0 && envs->rys_order > 1) { \ + dtype r_guess = 8.; \ + dtype omega2 = omega * omega; \ + int lij = envs->li_ceil + envs->lj_ceil; \ + int lkl = envs->lk_ceil + envs->ll_ceil; \ + if (lij > 0) { \ + dtype dist_ij = sqrt(rr_ij); \ + dtype aij = ai[i_prim-1] + aj[j_prim-1]; \ + dtype theta = omega2 / (omega2 + aij); \ + expcutoff += lij * approx_log( \ + (dist_ij+theta*r_guess+1.)/(dist_ij+1.)); \ + } \ + if (lkl > 0) { \ + dtype dist_kl = sqrt(rr_kl); \ + dtype akl = ak[k_prim-1] + al[l_prim-1]; \ + dtype theta = omega2 / (omega2 + akl); \ + expcutoff += lkl * approx_log( \ + (dist_kl+theta*r_guess+1.)/(dist_kl+1.)); \ + } \ + } + +#define SET_RIJ(I,J) \ + if (pdata_##I##J->cceij > e##I##J##cutoff) { \ + goto I##_contracted; } \ + envs->a##I[0] = a##I[I##p]; \ + exp##I##J = pdata_##I##J->eij; \ + r##I##J = pdata_##I##J->rij; + + +FINT CINT2e_1111_loop(dtype *gctr, CINTEnvVars *envs, dtype *cache, FINT *empty) +{ + COMMON_ENVS_AND_DECLARE; + ADJUST_CUTOFF; + FINT nc = 1; + size_t leng = envs->g_size * 3 * ((1<gbits)+1); + size_t len0 = nf * n_comp; + size_t len = leng + len0; + dtype *gout; + //dtype *g; + //MALLOC_INSTACK(g, len); + MALLOC(dtype, g); + if (n_comp == 1) { + gout = gctr; + gempty = empty; + } else { + gout = g + leng; + } + + pdata_kl = _pdata_kl; + for (lp = 0; lp < l_prim; lp++) { + envs->al[0] = al[lp]; + fac1l = envs->common_factor * cl[lp]; + for (kp = 0; kp < k_prim; kp++, pdata_kl++) { + SET_RIJ(k, l); + fac1k = fac1l * ck[kp]; + eijcutoff = eklcutoff - pdata_kl->cceij; + pdata_ij = _pdata_ij; + for (jp = 0; jp < j_prim; jp++) { + envs->aj[0] = aj[jp]; + fac1j = fac1k * cj[jp]; + for (ip = 0; ip < i_prim; ip++, pdata_ij++) { + SET_RIJ(i, j); + fac1i = fac1j*ci[ip]*expij*expkl; + envs->fac[0] = fac1i; + cutoff = eijcutoff - pdata_ij->cceij; + if ((*envs->f_g0_2e)(g, rij, rkl, cutoff, envs)) { + (*envs->f_gout)(gout, g, idx, envs, *gempty); + *gempty = 0; + } +i_contracted: ; + } + } +k_contracted: ; + } + } + + if (n_comp > 1 && !*gempty) { + TRANSPOSE(gout); + } + return !*empty; +} + + +FINT CINT2e_n111_loop(dtype *gctr, CINTEnvVars *envs, dtype *cache, FINT *empty) +{ + COMMON_ENVS_AND_DECLARE; + ADJUST_CUTOFF; + FINT nc = i_ctr; + size_t leng = envs->g_size * 3 * ((1<gbits)+1); + size_t leni = nf * i_ctr * n_comp; + size_t len0 = nf * n_comp; + size_t len = leng + leni + len0; + //dtype *g; + //MALLOC_INSTACK(g, len); + MALLOC(dtype, g); + dtype *g1 = g + leng; + dtype *gout, *gctri; + ALIAS_ADDR_IF_EQUAL(i, m); + gout = g1; + + pdata_kl = _pdata_kl; + for (lp = 0; lp < l_prim; lp++) { + envs->al[0] = al[lp]; + fac1l = envs->common_factor * cl[lp]; + for (kp = 0; kp < k_prim; kp++, pdata_kl++) { + SET_RIJ(k, l); + fac1k = fac1l * ck[kp]; + eijcutoff = eklcutoff - pdata_kl->cceij; + pdata_ij = _pdata_ij; + for (jp = 0; jp < j_prim; jp++) { + envs->aj[0] = aj[jp]; + fac1j = fac1k * cj[jp]; + for (ip = 0; ip < i_prim; ip++, pdata_ij++) { + if (pdata_ij->cceij > eijcutoff) { + goto i_contracted; + } + SET_RIJ(i, j); + cutoff = eijcutoff - pdata_ij->cceij; + fac1i = fac1j*expij*expkl; + envs->fac[0] = fac1i; + if ((*envs->f_g0_2e)(g, rij, rkl, cutoff, envs)) { + (*envs->f_gout)(gout, g, idx, envs, 1); + PRIM2CTR(i, gout, len0); + } +i_contracted: ; + } + } +k_contracted: ; + } + } + + if (n_comp > 1 && !*iempty) { + TRANSPOSE(gctri); + } + return !*empty; +} + + +FINT CINT2e_1n11_loop(dtype *gctr, CINTEnvVars *envs, dtype *cache, FINT *empty) +{ + //return 0; + COMMON_ENVS_AND_DECLARE; + ADJUST_CUTOFF; + FINT nc = j_ctr; + size_t leng = envs->g_size * 3 * ((1<gbits)+1); + size_t lenj = nf * j_ctr * n_comp; + size_t len0 = nf * n_comp; + size_t len = leng + lenj + len0; + //dtype *g; + //MALLOC_INSTACK(g, len); + MALLOC(dtype, g); + dtype *g1 = g + leng; + dtype *gout, *gctrj; + ALIAS_ADDR_IF_EQUAL(j, m); + gout = g1; + + pdata_kl = _pdata_kl; + for (lp = 0; lp < l_prim; lp++) { + envs->al[0] = al[lp]; + fac1l = envs->common_factor * cl[lp]; + for (kp = 0; kp < k_prim; kp++, pdata_kl++) { + SET_RIJ(k, l); + fac1k = fac1l * ck[kp]; + eijcutoff = eklcutoff - pdata_kl->cceij; + pdata_ij = _pdata_ij; + for (jp = 0; jp < j_prim; jp++) { + envs->aj[0] = aj[jp]; + fac1j = fac1k; + *iempty = 1; + for (ip = 0; ip < i_prim; ip++, pdata_ij++) { + SET_RIJ(i, j); + cutoff = eijcutoff - pdata_ij->cceij; + fac1i = fac1j*ci[ip]*expij*expkl; + envs->fac[0] = fac1i; + if ((*envs->f_g0_2e)(g, rij, rkl, cutoff, envs)) { + (*envs->f_gout)(gout, g, idx, envs, *iempty); + *iempty = 0; + } +i_contracted: ; + } + if (!*iempty) { + PRIM2CTR(j, gout, len0); + } + } +k_contracted: ; + } + } + + if (n_comp > 1 && !*jempty) { + TRANSPOSE(gctrj); + } + return !*empty; +} + + +FINT CINT2e_11n1_loop(dtype *gctr, CINTEnvVars *envs, dtype *cache, FINT *empty) +{ + //return 0; + COMMON_ENVS_AND_DECLARE; + ADJUST_CUTOFF; + FINT nc = k_ctr; + size_t leng = envs->g_size * 3 * ((1<gbits)+1); + size_t lenk = nf * k_ctr * n_comp; + size_t len0 = nf * n_comp; + size_t len = leng + lenk + len0; + //dtype *g; + //MALLOC_INSTACK(g, len); + MALLOC(dtype, g); + dtype *g1 = g + leng; + dtype *gout, *gctrk; + ALIAS_ADDR_IF_EQUAL(k, m); + gout = g1; + + pdata_kl = _pdata_kl; + for (lp = 0; lp < l_prim; lp++) { + envs->al[0] = al[lp]; + fac1l = envs->common_factor * cl[lp]; + for (kp = 0; kp < k_prim; kp++, pdata_kl++) { + SET_RIJ(k, l); + fac1k = fac1l; + eijcutoff = eklcutoff - pdata_kl->cceij; + pdata_ij = _pdata_ij; + *jempty = 1; + for (jp = 0; jp < j_prim; jp++) { + envs->aj[0] = aj[jp]; + fac1j = fac1k * cj[jp]; + for (ip = 0; ip < i_prim; ip++, pdata_ij++) { + SET_RIJ(i, j); + cutoff = eijcutoff - pdata_ij->cceij; + fac1i = fac1j*ci[ip]*expij*expkl; + envs->fac[0] = fac1i; + if ((*envs->f_g0_2e)(g, rij, rkl, cutoff, envs)) { + (*envs->f_gout)(gout, g, idx, envs, *jempty); + *jempty = 0; + } +i_contracted: ; + } + } + if (!*jempty) { + PRIM2CTR(k, gout, len0); + } +k_contracted: ; + } + } + + if (n_comp > 1 && !*kempty) { + TRANSPOSE(gctrk); + } + return !*empty; +} + + +FINT CINT2e_111n_loop(dtype *gctr, CINTEnvVars *envs, dtype *cache, FINT *empty) +{ + //return 0; + COMMON_ENVS_AND_DECLARE; + ADJUST_CUTOFF; + FINT nc = l_ctr; + size_t leng = envs->g_size * 3 * ((1<gbits)+1); + size_t lenl = nf * l_ctr * n_comp; + size_t len0 = nf * n_comp; + size_t len = leng + lenl + len0; + //dtype *g; + //MALLOC_INSTACK(g, len); + MALLOC(dtype, g); + dtype *g1 = g + leng; + dtype *gout, *gctrl; + ALIAS_ADDR_IF_EQUAL(l, m); + gout = g1; + + pdata_kl = _pdata_kl; + for (lp = 0; lp < l_prim; lp++) { + envs->al[0] = al[lp]; + fac1l = envs->common_factor; + *kempty = 1; + for (kp = 0; kp < k_prim; kp++, pdata_kl++) { + SET_RIJ(k, l); + fac1k = fac1l * ck[kp]; + eijcutoff = eklcutoff - pdata_kl->cceij; + pdata_ij = _pdata_ij; + for (jp = 0; jp < j_prim; jp++) { + envs->aj[0] = aj[jp]; + fac1j = fac1k * cj[jp]; + for (ip = 0; ip < i_prim; ip++, pdata_ij++) { + SET_RIJ(i, j); + cutoff = eijcutoff - pdata_ij->cceij; + fac1i = fac1j*ci[ip]*expij*expkl; + envs->fac[0] = fac1i; + if ((*envs->f_g0_2e)(g, rij, rkl, cutoff, envs)) { + (*envs->f_gout)(gout, g, idx, envs, *kempty); + *kempty = 0; + } +i_contracted: ; + } + } +k_contracted: ; + } + if (!*kempty) { + PRIM2CTR(l, gout, len0); + } + } + + if (n_comp > 1 && !*lempty) { + TRANSPOSE(gctrl); + } + return !*empty; +} + +FINT CINT2e_loop(dtype *gctr, CINTEnvVars *envs, dtype *cache, FINT *empty) +{ + //return 0; + COMMON_ENVS_AND_DECLARE; + ADJUST_CUTOFF; + FINT nc = i_ctr * j_ctr * k_ctr * l_ctr; + size_t leng = envs->g_size * 3 * ((1<gbits)+1); + size_t lenl = nf * nc * n_comp; + size_t lenk = nf * i_ctr * j_ctr * k_ctr * n_comp; + size_t lenj = nf * i_ctr * j_ctr * n_comp; + size_t leni = nf * i_ctr * n_comp; + size_t len0 = nf * n_comp; + size_t len = leng + lenl + lenk + lenj + leni + len0; + //dtype *g; + //MALLOC_INSTACK(g, len); + MALLOC(dtype, g); + dtype *g1 = g + leng; + dtype *gout, *gctri, *gctrj, *gctrk, *gctrl; + + ALIAS_ADDR_IF_EQUAL(l, m); + ALIAS_ADDR_IF_EQUAL(k, l); + ALIAS_ADDR_IF_EQUAL(j, k); + ALIAS_ADDR_IF_EQUAL(i, j); + ALIAS_ADDR_IF_EQUAL(g, i); + + pdata_kl = _pdata_kl; + for (lp = 0; lp < l_prim; lp++) { + envs->al[0] = al[lp]; + if (l_ctr == 1) { + fac1l = envs->common_factor * cl[lp]; + } else { + fac1l = envs->common_factor; + *kempty = 1; + } + for (kp = 0; kp < k_prim; kp++, pdata_kl++) { + + if (pdata_kl->cceij > eklcutoff) { + goto k_contracted; + } + envs->ak[0] = ak[kp]; + expkl = pdata_kl->eij; + rkl = pdata_kl->rij; + eijcutoff = eklcutoff - pdata_kl->cceij; + + if (k_ctr == 1) { + fac1k = fac1l * ck[kp]; + } else { + fac1k = fac1l; + *jempty = 1; + } + + pdata_ij = _pdata_ij; + for (jp = 0; jp < j_prim; jp++) { + envs->aj[0] = aj[jp]; + if (j_ctr == 1) { + fac1j = fac1k * cj[jp]; + } else { + fac1j = fac1k; + *iempty = 1; + } + for (ip = 0; ip < i_prim; ip++, pdata_ij++) { + + if (pdata_ij->cceij > eijcutoff) { + goto i_contracted; + } + envs->ai[0] = ai[ip]; + expij = pdata_ij->eij; + rij = pdata_ij->rij; + + cutoff = eijcutoff - pdata_ij->cceij; + if (i_ctr == 1) { + fac1i = fac1j*ci[ip] * expij*expkl; + } else { + fac1i = fac1j * expij*expkl; + } + envs->fac[0] = fac1i; + if ((*envs->f_g0_2e)(g, rij, rkl, cutoff, envs)) { + (*envs->f_gout)(gout, g, idx, envs, *gempty); + PRIM2CTR(i, gout, len0); + } +i_contracted: ; + } + if (!*iempty) { + PRIM2CTR(j, gctri, leni); + } + } + if (!*jempty) { + PRIM2CTR(k, gctrj, lenj); + } +k_contracted: ; + } + if (!*kempty) { + PRIM2CTR(l, gctrk, lenk); + } + } + + if (n_comp > 1 && !*lempty) { + TRANSPOSE(gctrl); + } + return !*empty; +} + +static FINT (*CINTf_2e_loop[16])(dtype *, CINTEnvVars *, dtype *, FINT *) = { + CINT2e_loop, + CINT2e_loop, + CINT2e_loop, + CINT2e_loop, + CINT2e_loop, + CINT2e_loop, + CINT2e_loop, + CINT2e_n111_loop, + CINT2e_loop, + CINT2e_loop, + CINT2e_loop, + CINT2e_1n11_loop, + CINT2e_loop, + CINT2e_11n1_loop, + CINT2e_111n_loop, + CINT2e_1111_loop, +}; + +#define PAIRDATA_NON0IDX_SIZE(ps) \ + FINT *bas = envs->bas; \ + FINT *shls = envs->shls; \ + FINT i_prim = bas(NPRIM_OF, shls[0]); \ + FINT j_prim = bas(NPRIM_OF, shls[1]); \ + FINT k_prim = bas(NPRIM_OF, shls[2]); \ + FINT l_prim = bas(NPRIM_OF, shls[3]); \ + size_t ps = ((i_prim*j_prim + k_prim*l_prim) * 5 \ + + i_prim * x_ctr[0] \ + + j_prim * x_ctr[1] \ + + k_prim * x_ctr[2] \ + + l_prim * x_ctr[3] \ + +(i_prim+j_prim+k_prim+l_prim)*2 + nf*3); + +//acint +CACHE_SIZE_T CINT2e_drv(dtype *out, FINT *dims, CINTEnvVars *envs, CINTOpt *opt, dtype *cache)//, void (*f_c2s)(dtype *opij, dtype *gctr, FINT *dims, CINTEnvVars *envs, dtype *cache)) +{ + FINT *x_ctr = envs->x_ctr; + size_t nf = envs->nf; + size_t nc = nf * x_ctr[0] * x_ctr[1] * x_ctr[2] * x_ctr[3]; + FINT n_comp = envs->ncomp_e1 * envs->ncomp_e2 * envs->ncomp_tensor; + + /*if (out == NULL) { // warning + PAIRDATA_NON0IDX_SIZE(pdata_size); + size_t leng = envs->g_size*3*((1<gbits)+1); + size_t len0 = nf*n_comp; + size_t cache_size = MAX(leng+len0+nc*n_comp*3 + pdata_size, + nc*n_comp+nf*4); +#if !defined(I8) && !defined(CACHE_SIZE_I8) + if (cache_size >= INT32_MAX) { + //fprintf(stderr, "CINT2e_drv cache_size overflow: " + // "cache_size %zu > %d, nf %zu, nc %zu, n_comp %d\n", + // cache_size, INT32_MAX, nf, nc, (int)n_comp); + cache_size = 0; + } +#endif + return cache_size; + }*/ + dtype stack[128]; + /*dtype *stack = NULL; + if (cache == NULL) { + PAIRDATA_NON0IDX_SIZE(pdata_size); + size_t leng = envs->g_size*3*((1<gbits)+1); + size_t len0 = nf*n_comp; + size_t cache_size = MAX(leng+len0+nc*n_comp*3 + pdata_size, + nc*n_comp+nf*4); + printf("cint2e -> cache_size %d\n", (int)cache_size); + + + #ifdef __cplusplus + stack = new dtype[128]; + #else + stack = malloc(sizeof(dtype)*cache_size); + #endif + cache = stack; + }*/ + //dtype *gctr; + //MALLOC_INSTACK(gctr, nc*n_comp); + //MALLOC(dtype, gctr); + dtype gctr[128]; + + FINT n; + FINT empty = 1; + /*if (opt != NULL) { // WARNING + printf("ASD\n"); + envs->opt = opt; + n = ((x_ctr[0]==1) << 3) + ((x_ctr[1]==1) << 2) + + ((x_ctr[2]==1) << 1) + (x_ctr[3]==1); + CINTf_2e_loop[n](gctr, envs, cache, &empty); + } else {*/ + CINT2e_loop_nopt(gctr, envs, cache, &empty); + //} + + //return !empty; //skip need for allthe translation (memory expensive) + + FINT counts[4]; + //if (f_c2s == &c2s_sph_2e1) { + counts[0] = (envs->i_l*2+1) * x_ctr[0]; + counts[1] = (envs->j_l*2+1) * x_ctr[1]; + counts[2] = (envs->k_l*2+1) * x_ctr[2]; + counts[3] = (envs->l_l*2+1) * x_ctr[3]; + /*} else { + counts[0] = envs->nfi * x_ctr[0]; + counts[1] = envs->nfj * x_ctr[1]; + counts[2] = envs->nfk * x_ctr[2]; + counts[3] = envs->nfl * x_ctr[3]; + }*/ + if (dims == NULL) { + dims = counts; + } + FINT nout = dims[0] * dims[1] * dims[2] * dims[3]; + if (!empty) { + for (n = 0; n < n_comp; n++) { + //(*f_c2s)(out+nout*n, gctr+nc*n, dims, envs, cache); + // this is the one taking ~500kb/tile in code. + // ideally, we'd store this only on say 10 tiles and have them do all of theese. + c2s_sph_2e1(out+nout*n, gctr+nc*n, dims, envs, cache); // warning + } + } else { + for (n = 0; n < n_comp; n++) { + c2s_dset0(out+nout*n, dims, counts); + } + } + /*if (stack != NULL) { + //free(stack); + }*/ + return !empty; +} + +#ifdef __cplusplus +CACHE_SIZE_T CINT2e_spinor_drv(dtype *out, FINT *dims, CINTEnvVars *envs, CINTOpt *opt, + dtype *cache, void (*f_e1_c2s)(...), void (*f_e2_c2s)(...)) +#else +CACHE_SIZE_T CINT2e_spinor_drv(dtype *out, FINT *dims, CINTEnvVars *envs, CINTOpt *opt, + dtype *cache, void (*f_e1_c2s)(), void (*f_e2_c2s)()) +#endif +{ + return 0; + FINT *shls = envs->shls; + FINT *bas = envs->bas; + FINT counts[4]; + counts[0] = CINTcgto_spinor(shls[0], bas); + counts[1] = CINTcgto_spinor(shls[1], bas); + counts[2] = CINTcgto_spinor(shls[2], bas); + counts[3] = CINTcgto_spinor(shls[3], bas); + FINT *x_ctr = envs->x_ctr; + size_t nf = envs->nf; + size_t nc = nf * x_ctr[0] * x_ctr[1] * x_ctr[2] * x_ctr[3]; + FINT n_comp = envs->ncomp_e1 * envs->ncomp_e2 * envs->ncomp_tensor; + FINT n1 = counts[0] * envs->nfk * x_ctr[2] + * envs->nfl * x_ctr[3] * counts[1]; + if (out == NULL) { + PAIRDATA_NON0IDX_SIZE(pdata_size); + size_t leng = envs->g_size*3*((1<gbits)+1); + size_t len0 = nf*n_comp; + size_t cache_size = MAX(leng+len0+nc*n_comp*3 + pdata_size, + nc*n_comp + n1*envs->ncomp_e2*OF_CMPLX + + nf*32*OF_CMPLX); +#if !defined(I8) && !defined(CACHE_SIZE_I8) + if (cache_size >= INT32_MAX) { + //fprintf(stderr, "CINT2e_drv cache_size overflow: " + // "cache_size %zu > %d, nf %zu, nc %zu, n_comp %d\n", + // cache_size, INT32_MAX, nf, nc, (int)n_comp); + cache_size = 0; + } +#endif + return cache_size; + } + dtype *stack = NULL; + if (cache == NULL) { + PAIRDATA_NON0IDX_SIZE(pdata_size); + size_t leng = envs->g_size*3*((1<gbits)+1); + size_t len0 = nf*n_comp; + size_t cache_size = MAX(leng+len0+nc*n_comp*3 + pdata_size, + nc*n_comp + n1*envs->ncomp_e2*OF_CMPLX + + nf*32*OF_CMPLX); + #ifdef __cplusplus + stack = new dtype[128]; + #else + stack = malloc(sizeof(dtype)*cache_size); + #endif + cache = stack; + } + dtype *gctr; + MALLOC_INSTACK(gctr, nc*n_comp); + + FINT n, m; + FINT empty = 1; + if (opt != NULL) { + envs->opt = opt; + n = ((x_ctr[0]==1) << 3) + ((x_ctr[1]==1) << 2) + + ((x_ctr[2]==1) << 1) + (x_ctr[3]==1); + CINTf_2e_loop[n](gctr, envs, cache, &empty); + } else { + CINT2e_loop_nopt(gctr, envs, cache, &empty); + } + + if (dims == NULL) { + dims = counts; + } + FINT nout = dims[0] * dims[1] * dims[2] * dims[3]; + if (!empty) { + dtype *opij; + MALLOC_INSTACK(opij, n1*envs->ncomp_e2); + for (n = 0; n < envs->ncomp_tensor; n++) { + for (m = 0; m < envs->ncomp_e2; m++) { + (*f_e1_c2s)(opij+n1*m, gctr, dims, envs, cache); + gctr += nc * envs->ncomp_e1; + } + (*f_e2_c2s)(out+nout*n, opij, dims, envs, cache); + } + } else { + for (n = 0; n < envs->ncomp_tensor; n++) { + c2s_zset0(out+nout*n, dims, counts); + } + } + if (stack != NULL) { + //free(stack); + } + return !empty; +} + + +void CINTgout2e(dtype *gout, dtype *g, FINT *idx, + CINTEnvVars *envs, FINT gout_empty) +{ + FINT nf = envs->nf; + FINT i, ix, iy, iz, n; + dtype s; + + if (gout_empty) { + switch (envs->nrys_roots) { + case 1: + for (n = 0; n < nf; n++, idx+=3) { + ix = idx[0]; + iy = idx[1]; + iz = idx[2]; + gout[n] = g[ix] * g[iy] * g[iz]; + } + break; + case 2: + for (n = 0; n < nf; n++, idx+=3) { + ix = idx[0]; + iy = idx[1]; + iz = idx[2]; + gout[n] = g[ix ] * g[iy ] * g[iz ] + + g[ix+1] * g[iy+1] * g[iz+1]; + } + break; + case 3: + for (n = 0; n < nf; n++, idx+=3) { + ix = idx[0]; + iy = idx[1]; + iz = idx[2]; + gout[n] = g[ix ] * g[iy ] * g[iz ] + + g[ix+1] * g[iy+1] * g[iz+1] + + g[ix+2] * g[iy+2] * g[iz+2]; + } + break; + case 4: + for (n = 0; n < nf; n++, idx+=3) { + ix = idx[0]; + iy = idx[1]; + iz = idx[2]; + gout[n] = g[ix ] * g[iy ] * g[iz ] + + g[ix+1] * g[iy+1] * g[iz+1] + + g[ix+2] * g[iy+2] * g[iz+2] + + g[ix+3] * g[iy+3] * g[iz+3]; + } + break; + case 5: + for (n = 0; n < nf; n++, idx+=3) { + ix = idx[0]; + iy = idx[1]; + iz = idx[2]; + gout[n] = g[ix ] * g[iy ] * g[iz ] + + g[ix+1] * g[iy+1] * g[iz+1] + + g[ix+2] * g[iy+2] * g[iz+2] + + g[ix+3] * g[iy+3] * g[iz+3] + + g[ix+4] * g[iy+4] * g[iz+4]; + } + break; + case 6: + for (n = 0; n < nf; n++, idx+=3) { + ix = idx[0]; + iy = idx[1]; + iz = idx[2]; + gout[n] = g[ix ] * g[iy ] * g[iz ] + + g[ix+1] * g[iy+1] * g[iz+1] + + g[ix+2] * g[iy+2] * g[iz+2] + + g[ix+3] * g[iy+3] * g[iz+3] + + g[ix+4] * g[iy+4] * g[iz+4] + + g[ix+5] * g[iy+5] * g[iz+5]; + } + break; + case 7: + for (n = 0; n < nf; n++, idx+=3) { + ix = idx[0]; + iy = idx[1]; + iz = idx[2]; + gout[n] = g[ix ] * g[iy ] * g[iz ] + + g[ix+1] * g[iy+1] * g[iz+1] + + g[ix+2] * g[iy+2] * g[iz+2] + + g[ix+3] * g[iy+3] * g[iz+3] + + g[ix+4] * g[iy+4] * g[iz+4] + + g[ix+5] * g[iy+5] * g[iz+5] + + g[ix+6] * g[iy+6] * g[iz+6]; + } + break; + case 8: + for (n = 0; n < nf; n++, idx+=3) { + ix = idx[0]; + iy = idx[1]; + iz = idx[2]; + gout[n] = g[ix ] * g[iy ] * g[iz ] + + g[ix+1] * g[iy+1] * g[iz+1] + + g[ix+2] * g[iy+2] * g[iz+2] + + g[ix+3] * g[iy+3] * g[iz+3] + + g[ix+4] * g[iy+4] * g[iz+4] + + g[ix+5] * g[iy+5] * g[iz+5] + + g[ix+6] * g[iy+6] * g[iz+6] + + g[ix+7] * g[iy+7] * g[iz+7]; + } + break; + default: + for (n = 0; n < nf; n++, idx+=3) { + ix = idx[0]; + iy = idx[1]; + iz = idx[2]; + s = 0; + for (i = 0; i < envs->nrys_roots; i++) { + s += g[ix+i] * g[iy+i] * g[iz+i]; + } + gout[n] = s; + } + break; + } + } else { + switch (envs->nrys_roots) { + case 1: + for (n = 0; n < nf; n++, idx+=3) { + ix = idx[0]; + iy = idx[1]; + iz = idx[2]; + gout[n] += g[ix] * g[iy] * g[iz]; + } + break; + case 2: + for (n = 0; n < nf; n++, idx+=3) { + ix = idx[0]; + iy = idx[1]; + iz = idx[2]; + gout[n] +=g[ix ] * g[iy ] * g[iz ] + + g[ix+1] * g[iy+1] * g[iz+1]; + } + break; + case 3: + for (n = 0; n < nf; n++, idx+=3) { + ix = idx[0]; + iy = idx[1]; + iz = idx[2]; + gout[n] +=g[ix ] * g[iy ] * g[iz ] + + g[ix+1] * g[iy+1] * g[iz+1] + + g[ix+2] * g[iy+2] * g[iz+2]; + } + break; + case 4: + for (n = 0; n < nf; n++, idx+=3) { + ix = idx[0]; + iy = idx[1]; + iz = idx[2]; + gout[n] +=g[ix ] * g[iy ] * g[iz ] + + g[ix+1] * g[iy+1] * g[iz+1] + + g[ix+2] * g[iy+2] * g[iz+2] + + g[ix+3] * g[iy+3] * g[iz+3]; + } + break; + case 5: + for (n = 0; n < nf; n++, idx+=3) { + ix = idx[0]; + iy = idx[1]; + iz = idx[2]; + gout[n] +=g[ix ] * g[iy ] * g[iz ] + + g[ix+1] * g[iy+1] * g[iz+1] + + g[ix+2] * g[iy+2] * g[iz+2] + + g[ix+3] * g[iy+3] * g[iz+3] + + g[ix+4] * g[iy+4] * g[iz+4]; + } + break; + case 6: + for (n = 0; n < nf; n++, idx+=3) { + ix = idx[0]; + iy = idx[1]; + iz = idx[2]; + gout[n] +=g[ix ] * g[iy ] * g[iz ] + + g[ix+1] * g[iy+1] * g[iz+1] + + g[ix+2] * g[iy+2] * g[iz+2] + + g[ix+3] * g[iy+3] * g[iz+3] + + g[ix+4] * g[iy+4] * g[iz+4] + + g[ix+5] * g[iy+5] * g[iz+5]; + } + break; + case 7: + for (n = 0; n < nf; n++, idx+=3) { + ix = idx[0]; + iy = idx[1]; + iz = idx[2]; + gout[n] +=g[ix ] * g[iy ] * g[iz ] + + g[ix+1] * g[iy+1] * g[iz+1] + + g[ix+2] * g[iy+2] * g[iz+2] + + g[ix+3] * g[iy+3] * g[iz+3] + + g[ix+4] * g[iy+4] * g[iz+4] + + g[ix+5] * g[iy+5] * g[iz+5] + + g[ix+6] * g[iy+6] * g[iz+6]; + } + break; + case 8: + for (n = 0; n < nf; n++, idx+=3) { + ix = idx[0]; + iy = idx[1]; + iz = idx[2]; + gout[n] +=g[ix ] * g[iy ] * g[iz ] + + g[ix+1] * g[iy+1] * g[iz+1] + + g[ix+2] * g[iy+2] * g[iz+2] + + g[ix+3] * g[iy+3] * g[iz+3] + + g[ix+4] * g[iy+4] * g[iz+4] + + g[ix+5] * g[iy+5] * g[iz+5] + + g[ix+6] * g[iy+6] * g[iz+6] + + g[ix+7] * g[iy+7] * g[iz+7]; + } + break; + default: + for (n = 0; n < nf; n++, idx+=3) { + ix = idx[0]; + iy = idx[1]; + iz = idx[2]; + s = 0; + for (i = 0; i < envs->nrys_roots; i++) { + s += g[ix+i] * g[iy+i] * g[iz+i]; + } + gout[n] += s; + } + break; + } + } +} + +CACHE_SIZE_T int2e_sph(dtype *out, FINT *dims, FINT *shls, FINT *atm, FINT natm, + FINT *bas, FINT nbas, dtype *env, CINTOpt *opt, dtype *cache) +{ + FINT ng[] = {0, 0, 0, 0, 0, 1, 1, 1}; + WHICH_INTEGRAL = INT2E_SPH; + + CINTEnvVars envs; + CINTinit_int2e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env); + #ifdef __cplusplus + envs.f_gout = (void (*)(...))&CINTgout2e; + #else + envs.f_gout = &CINTgout2e; + #endif + return CINT2e_drv(out, dims, &envs, opt, cache);//, &c2s_sph_2e1); +} +void int2e_optimizer(CINTOpt **opt, FINT *atm, FINT natm, + FINT *bas, FINT nbas, dtype *env) +{ + FINT ng[] = {0, 0, 0, 0, 0, 1, 1, 1}; + CINTall_2e_optimizer(opt, ng, atm, natm, bas, nbas, env); +} + +CACHE_SIZE_T int2e_cart(dtype *out, FINT *dims, FINT *shls, FINT *atm, FINT natm, + FINT *bas, FINT nbas, dtype *env, CINTOpt *opt, dtype *cache) +{ + FINT ng[] = {0, 0, 0, 0, 0, 1, 1, 1}; + CINTEnvVars envs; + CINTinit_int2e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env); + #ifdef __cplusplus + envs.f_gout = (void (*)(...))&CINTgout2e; + #else + envs.f_gout = &CINTgout2e; + #endif + return CINT2e_drv(out, dims, &envs, opt, cache);//, &c2s_cart_2e1); +} + + +void hardcoded_f_gout(dtype *gout, dtype *g, FINT *idx, CINTEnvVars *envs, FINT gout_empty){ + if (WHICH_INTEGRAL == INT1E_NUC) { + //printf("int1e_nuc\n"); + CINTgout1e_nuc(gout, g, idx, envs, gout_empty); + } + else if (WHICH_INTEGRAL == INT1E_KIN){ + //f_gout = CINTgout1e_int1e_kin; + //printf("int1e_kin\n"); + CINTgout1e_int1e_kin(gout, g, idx, envs, gout_empty); + } + else if (WHICH_INTEGRAL == INT1E_OVLP){ + //printf("int1e_ovlp\n"); + CINTgout1e(gout, g, idx, envs, gout_empty); + } + else if (WHICH_INTEGRAL == INT1E_KIN_IP){ + ///printf("int1e_kin_ip\n"); + CINTgout1e_int1e_ipkin(gout, g, idx, envs, gout_empty); + } + else if (WHICH_INTEGRAL == INT1E_NUC_IP){ + CINTgout1e_int1e_ipnuc(gout, g, idx, envs, gout_empty); + } + else if (WHICH_INTEGRAL == INT1E_OVLP_IP){ + CINTgout1e_int1e_ipovlp(gout, g, idx, envs, gout_empty); + } +} + +static void make_g1e_gout(dtype *gout, dtype *g, FINT *idx, + CINTEnvVars *envs, FINT empty, FINT int1e_type) +{ + if (print) printf("make_g1e_gout %d\n", int1e_type); + //printf("%d\n", int1e_type); + FINT ia; + switch (int1e_type) { + case 0: + CINTg1e_ovlp(g, envs); + hardcoded_f_gout(gout, g, idx, envs, empty); + break; + case 1: + CINTg1e_nuc(g, envs, -1); + hardcoded_f_gout(gout, g, idx, envs, empty); + break; + case 2: + for (ia = 0; ia < envs->natm; ia++) { + CINTg1e_nuc(g, envs, ia); + hardcoded_f_gout(gout, g, idx, envs, (empty && ia == 0)); + } + break; + } + if (print) printf("done make g1e_gout\n"); +} + + + +ALL_CINT(int2e) +ALL_CINT_FORTRAN_(int2e) + + + +#include +#include +#include + +void CINTinit_int3c1e_EnvVars(CINTEnvVars *envs, FINT *ng, FINT *shls, + FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env) +{ + envs->natm = natm; + envs->nbas = nbas; + envs->atm = atm; + envs->bas = bas; + envs->env = env; + envs->shls = shls; + + const FINT i_sh = shls[0]; + const FINT j_sh = shls[1]; + const FINT k_sh = shls[2]; + envs->i_l = bas(ANG_OF, i_sh); + envs->j_l = bas(ANG_OF, j_sh); + envs->k_l = bas(ANG_OF, k_sh); + envs->l_l = 0; + envs->x_ctr[0] = bas(NCTR_OF, i_sh); + envs->x_ctr[1] = bas(NCTR_OF, j_sh); + envs->x_ctr[2] = bas(NCTR_OF, k_sh); + envs->x_ctr[3] = 1; + envs->nfi = (envs->i_l+1)*(envs->i_l+2)/2; + envs->nfj = (envs->j_l+1)*(envs->j_l+2)/2; + envs->nfk = (envs->k_l+1)*(envs->k_l+2)/2; + envs->nfl = 1; + envs->nf = envs->nfi * envs->nfj * envs->nfk; + + envs->ri = env + atm(PTR_COORD, bas(ATOM_OF, i_sh)); + envs->rj = env + atm(PTR_COORD, bas(ATOM_OF, j_sh)); + envs->rk = env + atm(PTR_COORD, bas(ATOM_OF, k_sh)); + + envs->gbits = ng[GSHIFT]; + envs->ncomp_e1 = ng[POS_E1]; + envs->ncomp_e2 = 0; + envs->ncomp_tensor = ng[TENSOR]; + + envs->li_ceil = envs->i_l + ng[IINC]; + envs->lj_ceil = envs->j_l + ng[JINC]; + envs->lk_ceil = envs->k_l + ng[KINC]; + envs->ll_ceil = 0; + envs->nrys_roots =(envs->li_ceil + envs->lj_ceil + envs->lk_ceil)/2 + 1; + + envs->common_factor = SQRTPI * M_PI + * CINTcommon_fac_sp(envs->i_l) * CINTcommon_fac_sp(envs->j_l) + * CINTcommon_fac_sp(envs->k_l); + if (env[PTR_EXPCUTOFF] == 0) { + envs->expcutoff = EXPCUTOFF; + } else { + envs->expcutoff = MAX(MIN_EXPCUTOFF, env[PTR_EXPCUTOFF]); + } + + FINT dli = envs->li_ceil + 1; + FINT dlj = envs->lj_ceil + envs->lk_ceil + 1; + FINT dlk = envs->lk_ceil + 1; + envs->g_stride_i = 1; + envs->g_stride_j = dli; + envs->g_stride_k = dli * dlj; + envs->g_stride_l = envs->g_stride_k; + FINT nmax = envs->li_ceil + dlj; + envs->g_size = MAX(dli*dlj*dlk, dli*nmax); + + envs->rirj[0] = envs->ri[0] - envs->rj[0]; + envs->rirj[1] = envs->ri[1] - envs->rj[1]; + envs->rirj[2] = envs->ri[2] - envs->rj[2]; +} + +void CINTg3c1e_index_xyz(FINT *idx, const CINTEnvVars *envs) +{ + const FINT i_l = envs->i_l; + const FINT j_l = envs->j_l; + const FINT k_l = envs->k_l; + const FINT nfi = envs->nfi; + const FINT nfj = envs->nfj; + const FINT nfk = envs->nfk; + const FINT dj = envs->g_stride_j; + const FINT dk = envs->g_stride_k; + FINT i, j, k, n; + FINT ofx, ofjx, ofkx; + FINT ofy, ofjy, ofky; + FINT ofz, ofjz, ofkz; + FINT i_nx[CART_MAX], i_ny[CART_MAX], i_nz[CART_MAX]; + FINT j_nx[CART_MAX], j_ny[CART_MAX], j_nz[CART_MAX]; + FINT k_nx[CART_MAX], k_ny[CART_MAX], k_nz[CART_MAX]; + + CINTcart_comp(i_nx, i_ny, i_nz, i_l); + CINTcart_comp(j_nx, j_ny, j_nz, j_l); + CINTcart_comp(k_nx, k_ny, k_nz, k_l); + + ofx = 0; + ofy = envs->g_size; + ofz = envs->g_size * 2; + n = 0; + for (k = 0; k < nfk; k++) { + ofkx = ofx + dk * k_nx[k]; + ofky = ofy + dk * k_ny[k]; + ofkz = ofz + dk * k_nz[k]; + for (j = 0; j < nfj; j++) { + ofjx = ofkx + dj * j_nx[j]; + ofjy = ofky + dj * j_ny[j]; + ofjz = ofkz + dj * j_nz[j]; + for (i = 0; i < nfi; i++) { + idx[n+0] = ofjx + i_nx[i]; + idx[n+1] = ofjy + i_ny[i]; + idx[n+2] = ofjz + i_nz[i]; + n += 3; + } + } + } +} + + + +void CINTg3c1e_nuc(dtype *g, dtype ai, dtype aj, dtype ak, dtype *rijk, + dtype *cr, dtype t2, CINTEnvVars *envs) +{ + const FINT li = envs->li_ceil; + const FINT lj = envs->lj_ceil; + const FINT lk = envs->lk_ceil; + const FINT nmax = li + lj + lk; + const FINT mmax = lj + lk; + dtype *gx = g; + dtype *gy = g + envs->g_size; + dtype *gz = g + envs->g_size * 2; + gx[0] = 1; + gy[0] = 1; + gz[0] = 2/SQRTPI * envs->fac[0]; + if (nmax == 0) { + return; + } + + FINT dj = li + 1; + const FINT dk = envs->g_stride_k; + const dtype aijk = ai + aj + ak; + const dtype *rj = envs->rj; + const dtype *rk = envs->rk; + FINT i, j, k, off; + const dtype *rirj = envs->rirj; + dtype rjrk[3], rjr0[3]; + + rjrk[0] = rj[0] - rk[0]; + rjrk[1] = rj[1] - rk[1]; + rjrk[2] = rj[2] - rk[2]; + + rjr0[0] = rj[0] - (rijk[0] + t2 * (cr[0] - rijk[0])); + rjr0[1] = rj[1] - (rijk[1] + t2 * (cr[1] - rijk[1])); + rjr0[2] = rj[2] - (rijk[2] + t2 * (cr[2] - rijk[2])); + + gx[dj] = -rjr0[0] * gx[0]; + gy[dj] = -rjr0[1] * gy[0]; + gz[dj] = -rjr0[2] * gz[0]; + + const dtype aijk1 = .5 * (1 - t2) / aijk; + for (j = 1; j < nmax; j++) { + gx[(j+1)*dj] = aijk1 * j * gx[(j-1)*dj] - rjr0[0] * gx[j*dj]; + gy[(j+1)*dj] = aijk1 * j * gy[(j-1)*dj] - rjr0[1] * gy[j*dj]; + gz[(j+1)*dj] = aijk1 * j * gz[(j-1)*dj] - rjr0[2] * gz[j*dj]; + } + + for (i = 1; i <= li; i++) { + for (j = 0; j <= nmax-i; j++) { + gx[i+j*dj] = gx[i-1+(j+1)*dj] - rirj[0] * gx[i-1+j*dj]; + gy[i+j*dj] = gy[i-1+(j+1)*dj] - rirj[1] * gy[i-1+j*dj]; + gz[i+j*dj] = gz[i-1+(j+1)*dj] - rirj[2] * gz[i-1+j*dj]; + } + } + + dj = envs->g_stride_j; + for (k = 1; k <= lk; k++) { + for (j = 0; j <= mmax-k; j++) { + off = k * dk + j * dj; + for (i = off; i <= off+li; i++) { + gx[i] = gx[i+dj-dk] + rjrk[0] * gx[i-dk]; + gy[i] = gy[i+dj-dk] + rjrk[1] * gy[i-dk]; + gz[i] = gz[i+dj-dk] + rjrk[2] * gz[i-dk]; + } + } + } +} + + +void CINTnabla1i_3c1e(dtype *f, const dtype *g, + const FINT li, const FINT lj, const FINT lk, + const CINTEnvVars *envs) +{ + const FINT dj = envs->g_stride_j; + const FINT dk = envs->g_stride_k; + const dtype ai2 = -2 * envs->ai[0]; + FINT i, j, k, ptr; + const dtype *gx = g; + const dtype *gy = g + envs->g_size; + const dtype *gz = g + envs->g_size * 2; + dtype *fx = f; + dtype *fy = f + envs->g_size; + dtype *fz = f + envs->g_size * 2; + + for (k = 0; k <= lk; k++) { + for (j = 0; j <= lj; j++) { + ptr = dj * j + dk * k; + + fx[ptr] = ai2 * gx[ptr+1]; + fy[ptr] = ai2 * gy[ptr+1]; + fz[ptr] = ai2 * gz[ptr+1]; + + for (i = 1; i <= li; i++) { + fx[ptr+i] = i * gx[ptr+i-1] + ai2 * gx[ptr+i+1]; + fy[ptr+i] = i * gy[ptr+i-1] + ai2 * gy[ptr+i+1]; + fz[ptr+i] = i * gz[ptr+i-1] + ai2 * gz[ptr+i+1]; + } + } } +} + + +void CINTnabla1j_3c1e(dtype *f, const dtype *g, + const FINT li, const FINT lj, const FINT lk, + const CINTEnvVars *envs) +{ + const FINT dj = envs->g_stride_j; + const FINT dk = envs->g_stride_k; + const dtype aj2 = -2 * envs->aj[0]; + FINT i, j, k, ptr; + const dtype *gx = g; + const dtype *gy = g + envs->g_size; + const dtype *gz = g + envs->g_size * 2; + dtype *fx = f; + dtype *fy = f + envs->g_size; + dtype *fz = f + envs->g_size * 2; + + for (k = 0; k <= lk; k++) { + ptr = dk * k; + + for (i = ptr; i <= ptr+li; i++) { + fx[i] = aj2 * gx[i+dj]; + fy[i] = aj2 * gy[i+dj]; + fz[i] = aj2 * gz[i+dj]; + } + + for (j = 1; j <= lj; j++) { + ptr = dj * j + dk * k; + for (i = ptr; i <= ptr+li; i++) { + fx[i] = j * gx[i-dj] + aj2 * gx[i+dj]; + fy[i] = j * gy[i-dj] + aj2 * gy[i+dj]; + fz[i] = j * gz[i-dj] + aj2 * gz[i+dj]; + } + } + } +} + + +void CINTnabla1k_3c1e(dtype *f, const dtype *g, + const FINT li, const FINT lj, const FINT lk, + const CINTEnvVars *envs) +{ + const FINT dj = envs->g_stride_j; + const FINT dk = envs->g_stride_k; + const dtype ak2 = -2 * envs->ak[0]; + FINT i, j, k, ptr; + const dtype *gx = g; + const dtype *gy = g + envs->g_size; + const dtype *gz = g + envs->g_size * 2; + dtype *fx = f; + dtype *fy = f + envs->g_size; + dtype *fz = f + envs->g_size * 2; + + for (j = 0; j <= lj; j++) { + ptr = dj * j; + for (i = ptr; i <= ptr+li; i++) { + fx[i] = ak2 * gx[i+dk]; + fy[i] = ak2 * gy[i+dk]; + fz[i] = ak2 * gz[i+dk]; + } + } + for (k = 1; k <= lk; k++) { + for (j = 0; j <= lj; j++) { + ptr = dj * j + dk * k; + for (i = ptr; i <= ptr+li; i++) { + fx[i] = k * gx[i-dk] + ak2 * gx[i+dk]; + fy[i] = k * gy[i-dk] + ak2 * gy[i+dk]; + fz[i] = k * gz[i-dk] + ak2 * gz[i+dk]; + } + } + } +} + + +void CINTx1i_3c1e(dtype *f, const dtype *g, const dtype *ri, + const FINT li, const FINT lj, const FINT lk, + const CINTEnvVars *envs) +{ + FINT i, j, k, ptr; + const FINT dj = envs->g_stride_j; + const FINT dk = envs->g_stride_k; + const dtype *gx = g; + const dtype *gy = g + envs->g_size; + const dtype *gz = g + envs->g_size * 2; + dtype *fx = f; + dtype *fy = f + envs->g_size; + dtype *fz = f + envs->g_size * 2; + + for (k = 0; k <= lk; k++) { + for (j = 0; j <= lj; j++) { + ptr = dj * j + dk * k; + for (i = ptr; i <= ptr+li; i++) { + fx[i] = gx[i+1] + ri[0] * gx[i]; + fy[i] = gy[i+1] + ri[1] * gy[i]; + fz[i] = gz[i+1] + ri[2] * gz[i]; + } + } } +} + + +void CINTx1j_3c1e(dtype *f, const dtype *g, const dtype *rj, + const FINT li, const FINT lj, const FINT lk, + const CINTEnvVars *envs) +{ + FINT i, j, k, ptr; + const FINT dj = envs->g_stride_j; + const FINT dk = envs->g_stride_k; + const dtype *gx = g; + const dtype *gy = g + envs->g_size; + const dtype *gz = g + envs->g_size * 2; + dtype *fx = f; + dtype *fy = f + envs->g_size; + dtype *fz = f + envs->g_size * 2; + + for (k = 0; k <= lk; k++) { + for (j = 0; j <= lj; j++) { + ptr = dj * j + dk * k; + for (i = ptr; i <= ptr+li; i++) { + fx[i] = gx[i+dj] + rj[0] * gx[i]; + fy[i] = gy[i+dj] + rj[1] * gy[i]; + fz[i] = gz[i+dj] + rj[2] * gz[i]; + } + } } +} + + +void CINTx1k_3c1e(dtype *f, const dtype *g, const dtype *rk, + const FINT li, const FINT lj, const FINT lk, + const CINTEnvVars *envs) +{ + FINT i, j, k, ptr; + const FINT dj = envs->g_stride_j; + const FINT dk = envs->g_stride_k; + const dtype *gx = g; + const dtype *gy = g + envs->g_size; + const dtype *gz = g + envs->g_size * 2; + dtype *fx = f; + dtype *fy = f + envs->g_size; + dtype *fz = f + envs->g_size * 2; + + for (k = 0; k <= lk; k++) { + for (j = 0; j <= lj; j++) { + ptr = dj * j + dk * k; + for (i = ptr; i <= ptr+li; i++) { + fx[i] = gx[i+dk] + rk[0] * gx[i]; + fy[i] = gy[i+dk] + rk[1] * gy[i]; + fz[i] = gz[i+dk] + rk[2] * gz[i]; + } + } } +} + + + +//#include +#include +#include +#include +#include + +static dtype POLY_SMALLX_R0[] = { + +5.0000000000000000e-01, + +1.3069360623708470e-01, +2.8693063937629151e+00, + +6.0376924683279896e-02, +7.7682335593104601e-01, +6.6627997193856743e+00, + +3.4819897306147152e-02, +3.8156718508004406e-01, +1.7373072694588976e+00, +1.1846305648154912e+01, + +2.2665926631698637e-02, +2.3127169214090557e-01, +8.5734602411883609e-01, +2.9735303812034606e+00, +1.8415185975905100e+01, + +1.5933294950708051e-02, +1.5647046776795465e-01, +5.2658326320347937e-01, +1.4554949383527416e+00, +4.4772915489042244e+00, +2.6368226486820891e+01, + +1.1813808454790223e-02, +1.1337832545962978e-01, +3.6143546199827142e-01, +8.9527303800610059e-01, +2.1671830744997034e+00, +6.2459217468839974e+00, +3.5704994544697506e+01, + +9.1096129361797583e-03, +8.6130778786234360e-02, +2.6546936423055723e-01, +6.1752374342048377e-01, +1.3290252120652055e+00, +2.9891077977621077e+00, +8.2783291650163164e+00, +4.6425304325782918e+01, + +7.2388268576176690e-03, +6.7744856280706228e-02, +2.0415049332589749e-01, +4.5633199434791133e-01, +9.1729173690437338e-01, +1.8243932992566771e+00, +3.9197868892557834e+00, +1.0573996723107014e+01, +5.8529065180664020e+01, + +5.8908068184661301e-03, +5.4725924879562259e-02, +1.6232609261161096e-01, +3.5315267858751925e-01, +6.7944242243948438e-01, +1.2573939988964797e+00, +2.3797176188890110e+00, +4.9584689501831161e+00, +1.3132652926121416e+01, +7.2016228580573340e+01, + +4.8873361261651269e-03, +4.5157008761019399e-02, +1.3240037096506918e-01, +2.8253618374640332e-01, +5.2746670115882444e-01, +9.3166748944873068e-01, +1.6361250128213276e+00, +2.9941113975093119e+00, +6.1047380665207358e+00, +1.5954143802284950e+01, +8.6886766630657462e+01, + +4.1201918467690364e-03, +3.7911181291998906e-02, +1.1018828563899001e-01, +2.3179530831466225e-01, +4.2345630230694603e-01, +7.2421338523125789e-01, +1.2113317522159244e+00, +2.0525334008082456e+00, +3.6670630733185123e+00, +7.3583481234816475e+00, +1.9038376627614220e+01, +1.0314066236793083e+02, + +3.5205547919345487e-03, +3.2289011702114359e-02, +9.3214971024566495e-02, +1.9395959218782607e-01, +3.4863942062035819e-01, +5.8246762196717317e-01, +9.4178878042410219e-01, +1.5174658097736393e+00, +2.5060512608340129e+00, +4.3982595654500427e+00, +8.7191456120517863e+00, +2.2385292804867444e+01, +1.2077790499430500e+02, + +3.0429596866636517e-03, +2.7836958317494689e-02, +7.9934050123079720e-02, +1.6491083995350633e-01, +2.9275174955113165e-01, +4.8056334796006994e-01, +7.5805833071173867e-01, +1.1792349429563096e+00, +1.8494738526884431e+00, +2.9963211569901405e+00, +5.1875000243561145e+00, +1.0187030609882370e+01, +2.5994853806516272e+01, +1.3979848737030667e+02, + +2.6563882798588422e-03, +2.4250094342677907e-02, +6.9335687672495691e-02, +1.4207481953281492e-01, +2.4974878660205013e-01, +4.0442628385592422e-01, +6.2615572291363975e-01, +9.4929992942214436e-01, +1.4359478786754303e+00, +2.2069717422671000e+00, +3.5231083207720131e+00, +6.0346505430483566e+00, +1.1761935734646896e+01, +2.9867033445944998e+01, +1.6020240462202361e+02, + +2.3390891340939958e-03, +2.1317080945253201e-02, +6.0736095944339923e-02, +1.2376819871441241e-01, +2.1586001541338806e-01, +3.4579995866737606e-01, +5.2767337072352205e-01, +7.8452789304120707e-01, +1.1555935675460669e+00, +1.7115298466871347e+00, +2.5897019911803474e+00, +4.0862530420883099e+00, +6.9396189328516167e+00, +1.3443814172272431e+01, +3.4001813414873574e+01, +1.8198965332991693e+02, + +2.0754424341283091e-03, +1.8887592459816600e-02, +5.3658014548213083e-02, +1.0884885454501933e-01, +1.8862266668962116e-01, +2.9954903459405208e-01, +4.5185308380311651e-01, +6.6164964801649240e-01, +9.5509492609113844e-01, +1.3765373767867681e+00, +2.0057094213304625e+00, +2.9974863464885759e+00, +4.6856434232417712e+00, +7.9023399751558259e+00, +1.5232632558400770e+01, +3.8399180598022653e+01, +2.0516023103739158e+02, + +1.8539963414043730e-03, +1.6852276947378890e-02, +4.7759641118871647e-02, +9.6517662877457097e-02, +1.6636649640437165e-01, +2.6232651719296074e-01, +3.9202397022416274e-01, +5.6711232331318462e-01, +8.0578967544389657e-01, +1.1374575501399538e+00, +1.6118526781020055e+00, +2.3182957744259616e+00, +3.4301980006685246e+00, +5.3211990723247959e+00, +8.9227664393420767e+00, +1.7128366583322400e+01, +4.3059125399051126e+01, +2.2971413594275947e+02, + +1.6661998936375252e-03, +1.5130014686433138e-02, +4.2790695960997299e-02, +8.6200730889532062e-02, +1.4792271329238424e-01, +2.3186595750538547e-01, +3.4384897279841592e-01, +4.9253668994919914e-01, +6.9103506867637832e-01, +9.5970145594169631e-01, +1.3313348322389476e+00, +1.8613408062545294e+00, +2.6491513055224365e+00, +3.8877446160652291e+00, +5.9928609675506301e+00, +1.0000863418852175e+01, +1.9130998189134935e+01, +4.7981640664446111e+01, +2.5565136670034096e+02, + +1.5055636736750460e-03, +1.3659581309068787e-02, +3.8564342567293824e-02, +7.7476594928727063e-02, +1.3245147741657512e-01, +2.0658296700885234e-01, +3.0439699080823512e-01, +4.3248851020324230e-01, +6.0056920785975065e-01, +8.2323977038557739e-01, +1.1231054875957920e+00, +1.5365239604700129e+00, +2.1248567569558028e+00, +2.9981746126480338e+00, +4.3700575829188786e+00, +6.7005849497038312e+00, +1.1136604650698095e+01, +2.1240513731235975e+01, +5.3166720972969635e+01, +2.8297192228864293e+02, + +1.3670907867368810e-03, +1.2394054047073586e-02, +3.4938717738704779e-02, +7.0029665723141538e-02, +1.1933546517548120e-01, +1.8533975034810135e-01, +2.7162214849373179e-01, +3.8330281537433031e-01, +5.2775249147995862e-01, +7.1575249251405548e-01, +9.6345103210237271e-01, +1.2957976481725484e+00, +1.7528752562478540e+00, +2.4022925139112141e+00, +3.3652895418982895e+00, +4.8770850124786653e+00, +7.4443374249155490e+00, +1.2329970060272636e+01, +2.3456902742141821e+01, +5.8614362155227504e+01, +3.1167580192095022e+02, + +1.2468830266566071e-03, +1.1296974077260939e-02, +3.1804472951472436e-02, +6.3619574436888329e-02, +1.0811189954427899e-01, +1.6730017611467515e-01, +2.4405695487560791e-01, +3.4242592106441611e-01, +4.6811614228539372e-01, +6.2928567081422648e-01, +8.3781715700385528e-01, +1.1114655761383376e+00, +1.4776257531369692e+00, +1.9802761199884003e+00, +2.6935661694090105e+00, +3.7504379423093370e+00, +5.4087870441105492e+00, +8.2240924562866571e+00, +1.3580944085234208e+01, +2.5780157081866051e+01, +6.4324560961905945e+01, +3.4176300498341982e+02, + +1.1418631828867911e-03, +1.0339660911653800e-02, +2.9076181798097987e-02, +5.8060466666749251e-02, +9.8427835316294177e-02, +1.5183741234468401e-01, +2.2062391084280356e-01, +3.0802869139363409e-01, +4.1855186217289764e-01, +5.5849619707813158e-01, +7.3682598952358325e-01, +9.6656238513293491e-01, +1.2671304167611064e+00, +1.6684742780654425e+00, +2.2186404130584330e+00, +2.9986146322141836e+00, +4.1535747513207992e+00, +5.9651326283714123e+00, +9.0398297521904443e+00, +1.4889514507506986e+01, +2.8210270342431137e+01, +7.0297314830298916e+01, +3.7323353099141679e+02, + +1.0495759261988334e-03, +9.4992992354385325e-03, +2.6686295586583197e-02, +5.3206697955337431e-02, +9.0009970388381530e-02, +1.3847326383472791e-01, +2.0051570393946336e-01, +2.7876963531845217e-01, +3.7683660713108602e-01, +4.9967393580009961e-01, +6.5418912561449616e-01, +8.5017628790014732e-01, +1.1018357175881530e+00, +1.4303284449010452e+00, +1.8682541268706729e+00, +2.4679012551940342e+00, +3.3173886234481418e+00, +4.5746645870722178e+00, +6.5460972759896343e+00, +9.8915332475732622e+00, +1.6255671624263933e+01, +3.0747237423089796e+01, +7.6532621717181570e+01, +4.0608737955819714e+02, + +9.6804284738431225e-04, +8.7575539343254932e-03, +2.4580815547761405e-02, +4.8942752455150472e-02, +8.2643793737600238e-02, +1.2683727043286128e-01, +1.8311667069998602e-01, +2.5364456253704887e-01, +3.4134207545566181e-01, +4.5016937343104196e-01, +5.8554703532077257e-01, +7.5500228999917485e-01, +9.6918565647872623e-01, +1.2435195346086747e+00, +1.6009686601323014e+00, +2.0768956135707137e+00, +2.7280060286023411e+00, +3.6498491702681330e+00, +5.0136793389300003e+00, +7.1516614535243814e+00, +1.0779190085915269e+01, +1.7679407649692763e+01, +3.3391054222461705e+01, +8.3030479977314329e+01, +4.4032455037210190e+02, + +8.9565544579415254e-04, +8.0995527542570573e-03, +2.2716144347385257e-02, +4.5176009998213855e-02, +7.6158887961076630e-02, +1.1663848431984211e-01, +1.6794992820605648e-01, +2.3188820866452553e-01, +3.1085069091583328e-01, +4.0804436959930529e-01, +5.2779092420711327e-01, +6.7598365319794951e-01, +8.6078710994700591e-01, +1.0937368186145631e+00, +1.3915217951874832e+00, +1.7789794003868797e+00, +2.2943435454843417e+00, +2.9989128434113854e+00, +3.9959651029812480e+00, +5.4705964337941646e+00, +7.7818094208903092e+00, +1.1702789877157626e+01, +1.9160716276781699e+01, +3.6141717412159579e+01, +8.9790888273867822e+01, +4.7594504317971854e+02, + +8.3109512231001499e-04, +7.5131289999639658e-03, +2.1056762228657960e-02, +4.1831472800230959e-02, +7.0418380847064116e-02, +1.0764559262935150e-01, +1.5464094439970513e-01, +2.1290812273042228e-01, +2.8443540318795413e-01, +3.7185131035702607e-01, +4.7864959901382476e-01, +6.0951929142249150e-01, +7.7083812244638827e-01, +9.7142732494617945e-01, +1.2237373962444573e+00, +1.5457695551603108e+00, +1.9643035543347287e+00, +2.5205537131838662e+00, +3.2805879923783383e+00, +4.3557112384146945e+00, +5.9453975688643608e+00, +8.4365283763879209e+00, +1.2662324149042576e+01, +2.0699592351914731e+01, +3.8999224268126255e+01, +9.6813845511527404e+01, +5.1294885777328875e+02, + +7.7327265934614168e-04, +6.9882508946790788e-03, +1.9573489101087662e-02, +3.8847864637965371e-02, +6.5311250720158837e-02, +9.9672659091338711e-02, +1.4289191032726364e-01, +1.9623917849107639e-01, +2.6137903585278394e-01, +3.4048907901994535e-01, +4.3642861876513317e-01, +5.5298158998816316e-01, +6.9521214980263679e-01, +8.6999572387224722e-01, +1.0868307890446043e+00, +1.3591137397500017e+00, +1.7062043430069920e+00, +2.1568951145849722e+00, +2.7554903420777213e+00, +3.5730040885853245e+00, +4.7290670414068323e+00, +6.4380677720692976e+00, +9.1158078193148011e+00, +1.3657785936164659e+01, +2.2296031630204965e+01, +4.1963572543442723e+01, +1.0409935078594111e+02, +5.5133599398118213e+02, + +7.2128194564740754e-04, +6.5165867490334173e-03, +1.8242169108187746e-02, +3.6174706944078615e-02, +6.0746630485518080e-02, +9.2568726696294054e-02, +1.3246337474487627e-01, +1.8151161540602556e-01, +2.4111887374480270e-01, +3.1310655640913304e-01, +3.9984041967064188e-01, +5.0441237267625860e-01, +6.3090166347065468e-01, +7.8475672612934000e-01, +9.7336500077332955e-01, +1.2069236234854512e+00, +1.4998064894190901e+00, +1.8727788041083879e+00, +2.3567166558988348e+00, +2.9991242138096359e+00, +3.8761386831078006e+00, +5.1160156250390809e+00, +6.9485946963461123e+00, +9.8196390688702735e+00, +1.4689169468495249e+01, +2.3950030589416851e+01, +4.5034760371338379e+01, +1.1164740334510041e+02, +5.9110645166061056e+02, + +6.7436423858690424e-04, +6.0911701752723131e-03, +1.7042663914726686e-02, +3.3770100579734327e-02, +5.6649534609952659e-02, +8.6210122382939763e-02, +1.2316086250453281e-01, +1.6842816229032329e-01, +2.2320778254362922e-01, +2.8903640974860378e-01, +3.6789065056317111e-01, +4.6232515675023911e-01, +5.7566774544675881e-01, +7.1229929883268572e-01, +8.7806261702092869e-01, +1.0808722364210885e+00, +1.3316459770568605e+00, +1.6457673300845621e+00, +2.0454542277297771e+00, +2.5637374631125205e+00, +3.2514312621986456e+00, +4.1899732254466091e+00, +5.5165429945418198e+00, +7.4769680832474528e+00, +1.0548014896887539e+01, +1.5756469932714268e+01, +2.5661586286947824e+01, +4.8212786190469124e+01, +1.1945800255953849e+02, +6.3226023069200130e+02, + +6.3188030795311258e-04, +5.7061398509158142e-03, +1.5958074377719466e-02, +3.1599024262999015e-02, +5.2957614335718592e-02, +8.0494684232131519e-02, +1.1482497679045181e-01, +1.5674738549368780e-01, +2.0728641098615663e-01, +2.6774869366161896e-01, +3.3980028211803459e-01, +4.2557300057118946e-01, +5.2781244442213382e-01, +6.5008669605942015e-01, +7.9708543296514911e-01, +9.7505658701549880e-01, +1.1924574198151743e+00, +1.4609489039066195e+00, +1.7969565829860152e+00, +2.2241986989346771e+00, +2.7779321228812770e+00, +3.5123915105929826e+00, +4.5144922723425349e+00, +5.9306374689397341e+00, +8.0231793507898264e+00, +1.1300929244520692e+01, +1.6859683287482135e+01, +2.7430696248828827e+01, +5.1497648686801327e+01, +1.2753114789911722e+02, +6.7479733097461019e+02, +}; + +static dtype POLY_SMALLX_R1[] = { + +-2.0000000000000001e-01, + +-2.9043023608241049e-02, +-6.3762364305842567e-01, + +-9.2887576435815231e-03, +-1.1951128552785324e-01, +-1.0250461106747191e+00, + +-4.0964585066055473e-03, +-4.4890257068240479e-02, +-2.0438909052457618e-01, +-1.3936830174299895e+00, + +-2.1586596792093939e-03, +-2.2025875441991007e-02, +-8.1652002297032011e-02, +-2.8319336963842484e-01, +-1.7538272358004856e+00, + +-1.2746635960566440e-03, +-1.2517637421436372e-02, +-4.2126661056278353e-02, +-1.1643959506821934e-01, +-3.5818332391233798e-01, +-2.1094581189456711e+00, + +-8.1474541067518772e-04, +-7.8191948592848132e-03, +-2.4926583586087684e-02, +-6.1742968138351763e-02, +-1.4946090168963472e-01, +-4.3075322392303428e-01, +-2.4624134168756902e+00, + +-5.5209775370786412e-04, +-5.2200471991657189e-03, +-1.6089052377609530e-02, +-3.7425681419423255e-02, +-8.0546982549406398e-02, +-1.8115804834921864e-01, +-5.0171691909189797e-01, +-2.8136548076232071e+00, + +-3.9128793824960370e-04, +-3.6618841232814174e-03, +-1.1035161801399865e-02, +-2.4666594289076287e-02, +-4.9583337129966133e-02, +-9.8615854013874446e-02, +-2.1188037239220453e-01, +-5.7156739043821692e-01, +-3.1637332530088660e+00, + +-2.8735643016907951e-04, +-2.6695573111981587e-03, +-7.9183459810541930e-03, +-1.7226959931098500e-02, +-3.3143532801926071e-02, +-6.1336292629096574e-02, +-1.1608378628726883e-01, +-2.4187653415527396e-01, +-6.4061721590836185e-01, +-3.5129867600279674e+00, + +-2.1721493894067231e-04, +-2.0069781671564176e-03, +-5.8844609317808515e-03, +-1.2557163722062370e-02, +-2.3442964495947752e-02, +-4.1407443975499142e-02, +-7.2716667236503454e-02, +-1.3307161766708053e-01, +-2.7132169184536603e-01, +-7.0907305787933106e-01, +-3.8616340724736649e+00, + +-1.6817109578649129e-04, +-1.5473951547754655e-03, +-4.4974810464893881e-03, +-9.4610329924351942e-03, +-1.7283930706405961e-02, +-2.9559730009439098e-02, +-4.9442112335343846e-02, +-8.3776873502377364e-02, +-1.4967604380891888e-01, +-3.0034073973394482e-01, +-7.7707659704547827e-01, +-4.2098229537930951e+00, + +-1.3285112422394522e-04, +-1.2184532717779003e-03, +-3.5175460763987357e-03, +-7.3192298938802294e-03, +-1.3156204551711631e-02, +-2.1979910262912194e-02, +-3.5539199261286875e-02, +-5.7262860746175065e-02, +-9.4567972106943884e-02, +-1.6597205907358650e-01, +-3.2902436271893531e-01, +-8.4472803037235644e-01, +-4.5576567922379247e+00, + +-1.0677051532153163e-04, +-9.7673537956121715e-04, +-2.8047035130905162e-03, +-5.7863452615265383e-03, +-1.0271991212320409e-02, +-1.6861871858248067e-02, +-2.6598537919710129e-02, +-4.1376664665133671e-02, +-6.4893819392576949e-02, +-1.0513407568386457e-01, +-1.8201754471424963e-01, +-3.5743967052218845e-01, +-9.1210013356197439e-01, +-4.9052100831686554e+00, + +-8.7094697700289907e-05, +-7.9508506041566917e-04, +-2.2733012351637931e-03, +-4.6581908043545877e-03, +-8.1884848066245946e-03, +-1.3259878159210630e-02, +-2.0529695833234090e-02, +-3.1124587849906373e-02, +-4.7080258317227223e-02, +-7.2359729254659014e-02, +-1.1551174822203321e-01, +-1.9785739485404447e-01, +-3.8563723720153753e-01, +-9.7924699822770489e-01, +-5.2525378564597904e+00, + +-7.1971973356738328e-05, +-6.5591018293086772e-04, +-1.8688029521335360e-03, +-3.8082522681357664e-03, +-6.6418466281042482e-03, +-1.0639998728226956e-02, +-1.6236103714569908e-02, +-2.4139319785883295e-02, +-3.5556725155263598e-02, +-5.2662456821142609e-02, +-7.9683138190164524e-02, +-1.2573086283348647e-01, +-2.1352673639543437e-01, +-4.1365582068530554e-01, +-1.0462096435345716e+00, +-5.5996816409205206e+00, + +-6.0157751713864028e-05, +-5.4746644811062611e-04, +-1.5553047695134228e-03, +-3.1550392621744732e-03, +-5.4673236721629326e-03, +-8.6825807128710752e-03, +-1.3097190834872943e-02, +-1.9178250667144705e-02, +-2.7683910901192418e-02, +-3.9899634109761398e-02, +-5.8136504966100365e-02, +-8.6883662217060162e-02, +-1.3581575139831223e-01, +-2.2905333261321234e-01, +-4.4152558140292086e-01, +-1.1130197274789173e+00, +-5.9466733634026543e+00, + +-5.0794420312448578e-05, +-4.6170621773640794e-04, +-1.3084833183252507e-03, +-2.6443195308892354e-03, +-4.5579862028594974e-03, +-7.1870278683002940e-03, +-1.0740382745867472e-02, +-1.5537323926388621e-02, +-2.2076429464216344e-02, +-3.1163220551779554e-02, +-4.4160347345260427e-02, +-6.3514952723998944e-02, +-9.3978027415576024e-02, +-1.4578627595410401e-01, +-2.4445935450252265e-01, +-4.6927031735129865e-01, +-1.1797020657274282e+00, +-6.2935379710345059e+00, + +-4.3277919315260391e-05, +-3.9298739445280882e-04, +-1.1114466483375923e-03, +-2.2389800231047289e-03, +-3.8421483972047852e-03, +-6.0224924027372853e-03, +-8.9311421506082060e-03, +-1.2793160777901276e-02, +-1.7948962822763075e-02, +-2.4927310543940165e-02, +-3.4580125512699934e-02, +-4.8346514448169599e-02, +-6.8809124818764583e-02, +-1.0098037963805791e-01, +-1.5565872642988648e-01, +-2.5976268620395260e-01, +-4.9690904387363471e-01, +-1.2462763808947042e+00, +-6.6402952389698946e+00, + +-3.7174411695680151e-05, +-3.3727361256959967e-04, +-9.5220598931589691e-04, +-1.9130023439191868e-03, +-3.2704068497919785e-03, +-5.1008140002185764e-03, +-7.5159750816848189e-03, +-1.0678728646993636e-02, +-1.4828869329870386e-02, +-2.0326907910754997e-02, +-2.7730999693723259e-02, +-3.7938863221481801e-02, +-5.2465598937180315e-02, +-7.4029002781432929e-02, +-1.0790265636836738e-01, +-1.6544654196799582e-01, +-2.7497789260982952e-01, +-5.2445712916632037e-01, +-1.3127585425424602e+00, +-6.9869610441640235e+00, + +-3.2166842040867788e-05, +-2.9162480110761377e-04, +-8.2208747620481830e-04, +-1.6477568405445066e-03, +-2.8078932982466163e-03, +-4.3609353023082676e-03, +-6.3911093763231001e-03, +-9.0188897735136529e-03, +-1.2417705681881379e-02, +-1.6841235117977776e-02, +-2.2669436049467591e-02, +-3.0489356427589372e-02, +-4.1244123676420094e-02, +-5.6524529739087392e-02, +-7.9183283338783286e-02, +-1.1475494147008623e-01, +-1.7516088058624821e-01, +-2.9011694259465026e-01, +-5.5192712334451344e-01, +-1.3791614624759412e+00, +-7.3335482804929466e+00, + +-2.8019843295654089e-05, +-2.5386458600586381e-04, +-7.1470725733645919e-04, +-1.4296533581323221e-03, +-2.4294808886354828e-03, +-3.7595545194309024e-03, +-5.4844259522608520e-03, +-7.6949645183014854e-03, +-1.0519463871581881e-02, +-1.4141251029533179e-02, +-1.8827351842783266e-02, +-2.4976754519962643e-02, +-3.3205073104201552e-02, +-4.4500586966031465e-02, +-6.0529576840651925e-02, +-8.4279504321558132e-02, +-1.2154577627214719e-01, +-1.8481106643340806e-01, +-3.0518975472436422e-01, +-5.7932937262620343e-01, +-1.4454957519529426e+00, +-7.6800675277172985e+00, + +-2.4556197481436369e-05, +-2.2235829917535054e-04, +-6.2529423221716106e-04, +-1.2486121863817042e-03, +-2.1167276412106277e-03, +-3.2653206955846024e-03, +-4.7446002331785709e-03, +-6.6242729331964312e-03, +-9.0011153155461852e-03, +-1.2010670904906056e-02, +-1.5845720204808240e-02, +-2.0786287852321179e-02, +-2.7250116489486158e-02, +-3.5881167270224570e-02, +-4.7712697055020063e-02, +-6.4486336176649103e-02, +-8.9324188200447296e-02, +-1.2828242211551424e-01, +-1.9440494090732141e-01, +-3.2020461306466635e-01, +-6.0667248048238998e-01, +-1.5117702114042777e+00, +-8.0265275482025125e+00, + +-2.1640740746367700e-05, +-1.9586183990594915e-04, +-5.5023289869243698e-04, +-1.0970453186667512e-03, +-1.8558756781109594e-03, +-2.8551188419531528e-03, +-4.1343444111229559e-03, +-5.7478275323392201e-03, +-7.7698269511564128e-03, +-1.0302555377321641e-02, +-1.3488435579680333e-02, +-1.7529407997941181e-02, +-2.2718262218312437e-02, +-2.9491308142289591e-02, +-3.8520703646817998e-02, +-5.0884561962763600e-02, +-6.8399765431920445e-02, +-9.4322981176746756e-02, +-1.3497107785545637e-01, +-2.0394913912522192e-01, +-3.3516848709822544e-01, +-6.3396365820803702e-01, +-1.5779922003542592e+00, +-8.3729356609937557e+00, + +-1.9169165294738857e-05, +-1.7341690959060381e-04, +-4.8674882272794860e-04, +-9.6916341495347468e-04, +-1.6365107670811929e-03, +-2.5116291174824014e-03, +-3.6260726871284363e-03, +-5.0226646046940366e-03, +-6.7592490189239962e-03, +-8.9142450184364740e-03, +-1.1594990798431138e-02, +-1.4950540396023263e-02, +-1.9191795177796560e-02, +-2.4624149200171776e-02, +-3.1702349705590126e-02, +-4.1126645813281459e-02, +-5.4019921358462203e-02, +-7.2274240995408578e-02, +-9.9280778988712889e-02, +-1.4161705848563130e-01, +-2.1344930863198552e-01, +-3.5008728019193586e-01, +-6.6120899450419213e-01, +-1.6441679203428579e+00, +-8.7192980271703355e+00, + +-1.7060103729412429e-05, +-1.5427719531918205e-04, +-4.3268846375971913e-04, +-8.6049542853740670e-04, +-1.4506454849728882e-03, +-2.2216854156160404e-03, +-3.1990462515439329e-03, +-4.4169182602766767e-03, +-5.9209655412539672e-03, +-7.7722737066534342e-03, +-1.0053160461087871e-02, +-1.2875879108532372e-02, +-1.6395944951371543e-02, +-2.0833082259325012e-02, +-2.6505177051190154e-02, +-3.3885321912131047e-02, +-4.3701781818749362e-02, +-5.7122149398312110e-02, +-7.6113621009166618e-02, +-1.0420183683417455e-01, +-1.4822494135029160e-01, +-2.2291028337443097e-01, +-3.6496602431965136e-01, +-6.8841366499351586e-01, +-1.7103026337879585e+00, +-9.0656198700898774e+00, + +-1.5249451785504861e-05, +-1.3785557798099020e-04, +-3.8636260970014607e-04, +-7.6754995963726534e-04, +-1.2920803825149380e-03, +-1.9751484886119542e-03, +-2.8374485210955072e-03, +-3.9065710592738039e-03, +-5.2189982236321856e-03, +-6.8229598230646988e-03, +-8.7825614497949490e-03, +-1.1183840209587001e-02, +-1.4143818760484188e-02, +-1.7824354586168430e-02, +-2.2453897178797380e-02, +-2.8362744131381849e-02, +-3.6042267052013369e-02, +-4.6248691985025070e-02, +-6.0194275089510793e-02, +-7.9921307126875132e-02, +-1.0908986364888736e-01, +-1.5479868580528294e-01, +-2.3233622291821240e-01, +-3.7980903398008681e-01, +-7.1558209666286710e-01, +-1.7764008350738973e+00, +-9.4119056472163081e+00, + +-1.3686241758338792e-05, +-1.2368585654299255e-04, +-3.4643343541748077e-04, +-6.8757282545071452e-04, +-1.1559513401798024e-03, +-1.7641178600236939e-03, +-2.5290603597745778e-03, +-3.4732597963022371e-03, +-4.6261776257129905e-03, +-6.0263553808839881e-03, +-7.7244003321262512e-03, +-9.7872847785515603e-03, +-1.2304639819515696e-02, +-1.5398154404818535e-02, +-1.9235943168931048e-02, +-2.4055110438053130e-02, +-3.0198306955875963e-02, +-3.8175134771415438e-02, +-4.8769740567747279e-02, +-6.3239010417439373e-02, +-8.3700301617820050e-02, +-1.1394810216051854e-01, +-1.6134173131530621e-01, +-2.4173072453388778e-01, +-3.9462002885318520e-01, +-7.4271809811403044e-01, +-1.8424663855918781e+00, +-9.7581591855076493e+00, + +-1.2329605908502692e-05, +-1.1139464528262253e-04, +-3.1183195056731187e-04, +-6.1837105887313872e-04, +-1.0384039399233859e-03, +-1.5823713965178472e-03, +-2.2643311922201071e-03, +-3.1027626565132576e-03, +-4.1216901494838072e-03, +-5.3522488275065472e-03, +-6.8348789687289208e-03, +-8.6224337209616850e-03, +-1.0784643820011191e-02, +-1.3414644891099829e-02, +-1.6638717961937256e-02, +-2.0631173051033354e-02, +-2.5637717767847696e-02, +-3.2013312890741670e-02, +-4.0285754801689486e-02, +-5.1267080577942499e-02, +-6.6258780907825651e-02, +-8.7453258547676604e-02, +-1.1877939651873697e-01, +-1.6785707810034656e-01, +-2.5109691399137180e-01, +-4.0940223229772399e-01, +-7.6982496361262176e-01, +-1.9085026212837679e+00, +-1.0104383789070267e+01, + +-1.1146516340279409e-05, +-1.0068049876483163e-04, +-2.8169692421035848e-04, +-5.5818348065676566e-04, +-9.3635594396615962e-04, +-1.4249607005444589e-03, +-2.0357167356121128e-03, +-2.7839365667822031e-03, +-3.6893848354318877e-03, +-4.7774613181587400e-03, +-6.0808371993912582e-03, +-7.6417381281031257e-03, +-9.5151693462274187e-03, +-1.1773542129465880e-02, +-1.4513431686296341e-02, +-1.7865656800348573e-02, +-2.2010677306724968e-02, +-2.7202765786521688e-02, +-3.3809160788921939e-02, +-4.2375825836570589e-02, +-5.3742665490886701e-02, +-6.9255755792505938e-02, +-9.1182528835401983e-02, +-1.2358624930987525e-01, +-1.7434735366756263e-01, +-2.6043751954899613e-01, +-4.2415845102393096e-01, +-7.9690555686725828e-01, +-1.9745124390006361e+00, +-1.0450582325487625e+01, + +-1.0110084927249801e-05, +-9.1298237614653030e-05, +-2.5532919004351141e-04, +-5.0558438820798421e-04, +-8.4732182937149742e-04, +-1.2879149477141043e-03, +-1.8371996286472290e-03, +-2.5079581678990048e-03, +-3.3165825757785062e-03, +-4.2839790985859027e-03, +-5.4368045138885540e-03, +-6.8091680091390315e-03, +-8.4449991107541419e-03, +-1.0401387136950723e-02, +-1.2753366927442385e-02, +-1.5600905392247981e-02, +-1.9079318717042791e-02, +-2.3375182462505910e-02, +-2.8751305327776241e-02, +-3.5587179182954835e-02, +-4.4446913966100433e-02, +-5.6198264169487720e-02, +-7.2231876357480559e-02, +-9.4890199503035746e-02, +-1.2837086961263722e-01, +-1.8081486791233109e-01, +-2.6975493259971417e-01, +-4.3889113998126128e-01, +-8.2396237898882119e-01, +-2.0404983663858753e+00, +-1.0796757295593762e+01, +}; + +static dtype POLY_SMALLX_W0[] = { + +1.0000000000000000e+00, + +6.5214515486254609e-01, +3.4785484513745385e-01, + +4.6791393457269104e-01, +3.6076157304813861e-01, +1.7132449237917036e-01, + +3.6268378337836199e-01, +3.1370664587788727e-01, +2.2238103445337448e-01, +1.0122853629037626e-01, + +2.9552422471475287e-01, +2.6926671930999635e-01, +2.1908636251598204e-01, +1.4945134915058059e-01, +6.6671344308688138e-02, + +2.4914704581340277e-01, +2.3349253653835481e-01, +2.0316742672306592e-01, +1.6007832854334622e-01, +1.0693932599531843e-01, +4.7175336386511828e-02, + +2.1526385346315779e-01, +2.0519846372129560e-01, +1.8553839747793782e-01, +1.5720316715819355e-01, +1.2151857068790319e-01, +8.0158087159760208e-02, +3.5119460331751860e-02, + +1.8945061045506850e-01, +1.8260341504492358e-01, +1.6915651939500254e-01, +1.4959598881657674e-01, +1.2462897125553388e-01, +9.5158511682492786e-02, +6.2253523938647894e-02, +2.7152459411754096e-02, + +1.6914238296314360e-01, +1.6427648374583273e-01, +1.5468467512626524e-01, +1.4064291467065065e-01, +1.2255520671147846e-01, +1.0094204410628717e-01, +7.6425730254889052e-02, +4.9714548894969797e-02, +2.1616013526483312e-02, + +1.5275338713072584e-01, +1.4917298647260374e-01, +1.4209610931838204e-01, +1.3168863844917664e-01, +1.1819453196151841e-01, +1.0193011981724044e-01, +8.3276741576704755e-02, +6.2672048334109068e-02, +4.0601429800386939e-02, +1.7614007139152118e-02, + +1.3925187285563198e-01, +1.3654149834601517e-01, +1.3117350478706238e-01, +1.2325237681051242e-01, +1.1293229608053922e-01, +1.0041414444288096e-01, +8.5941606217067729e-02, +6.9796468424520489e-02, +5.2293335152683286e-02, +3.3774901584814152e-02, +1.4627995298272200e-02, + +1.2793819534675216e-01, +1.2583745634682830e-01, +1.2167047292780339e-01, +1.1550566805372560e-01, +1.0744427011596563e-01, +9.7618652104113884e-02, +8.6190161531953274e-02, +7.3346481411080300e-02, +5.9298584915436783e-02, +4.4277438817419808e-02, +2.8531388628933663e-02, +1.2341229799987200e-02, + +1.1832141527926228e-01, +1.1666044348529658e-01, +1.1336181654631966e-01, +1.0847184052857659e-01, +1.0205916109442542e-01, +9.4213800355914146e-02, +8.5045894313485235e-02, +7.4684149765659749e-02, +6.3274046329574840e-02, +5.0975825297147809e-02, +3.7962383294362766e-02, +2.4417851092631910e-02, +1.0551372617343006e-02, + +1.1004701301647520e-01, +1.0871119225829413e-01, +1.0605576592284642e-01, +1.0211296757806076e-01, +9.6930657997929923e-02, +9.0571744393032838e-02, +8.3113417228901212e-02, +7.4646214234568783e-02, +6.5272923966999602e-02, +5.5107345675716748e-02, +4.4272934759004227e-02, +3.2901427782304378e-02, +2.1132112592771261e-02, +9.1242825930945171e-03, + +1.0285265289355884e-01, +1.0176238974840550e-01, +9.9593420586795267e-02, +9.6368737174644253e-02, +9.2122522237786122e-02, +8.6899787201082976e-02, +8.0755895229420213e-02, +7.3755974737705204e-02, +6.5974229882180491e-02, +5.7493156217619065e-02, +4.8402672830594053e-02, +3.8799192569627050e-02, +2.8784707883323369e-02, +1.8466468311090958e-02, +7.9681924961666050e-03, + +9.6540088514727798e-02, +9.5638720079274861e-02, +9.3844399080804566e-02, +9.1173878695763891e-02, +8.7652093004403811e-02, +8.3311924226946749e-02, +7.8193895787070311e-02, +7.2345794108848505e-02, +6.5822222776361849e-02, +5.8684093478535544e-02, +5.0998059262376175e-02, +4.2835898022226683e-02, +3.4273862913021431e-02, +2.5392065309262059e-02, +1.6274394730905670e-02, +7.0186100094700964e-03, + +9.0956740330259869e-02, +9.0203044370640736e-02, +8.8701897835693863e-02, +8.6465739747035752e-02, +8.3513099699845661e-02, +7.9868444339771846e-02, +7.5561974660031936e-02, +7.0629375814255727e-02, +6.5111521554076415e-02, +5.9054135827524494e-02, +5.2507414572678109e-02, +4.5525611523353271e-02, +3.8166593796387517e-02, +3.0491380638446131e-02, +2.2563721985494969e-02, +1.4450162748595036e-02, +6.2291405559086847e-03, + +8.5983275670394751e-02, +8.5346685739338624e-02, +8.4078218979661931e-02, +8.2187266704339706e-02, +7.9687828912071601e-02, +7.6598410645870668e-02, +7.2941885005653059e-02, +6.8745323835736449e-02, +6.4039797355015485e-02, +5.8860144245324819e-02, +5.3244713977759921e-02, +4.7235083490265978e-02, +4.0875750923644892e-02, +3.4213810770307232e-02, +2.7298621498568779e-02, +2.0181515297735472e-02, +1.2915947284065574e-02, +5.5657196642450455e-03, + +8.1525029280385783e-02, +8.0982493770597103e-02, +7.9901033243527819e-02, +7.8287844658210953e-02, +7.6153663548446396e-02, +7.3512692584743453e-02, +7.0382507066898956e-02, +6.6783937979140409e-02, +6.2740933392133061e-02, +5.8280399146997203e-02, +5.3432019910332321e-02, +4.8228061860758682e-02, +4.2703158504674432e-02, +3.6894081594024741e-02, +3.0839500545175053e-02, +2.4579739738232374e-02, +1.8156577709613236e-02, +1.1613444716468675e-02, +5.0028807496393457e-03, + +7.7505947978424805e-02, +7.7039818164247972e-02, +7.6110361900626242e-02, +7.4723169057968261e-02, +7.2886582395804062e-02, +7.0611647391286780e-02, +6.7912045815233898e-02, +6.4804013456601042e-02, +6.1306242492928938e-02, +5.7439769099391552e-02, +5.3227846983936823e-02, +4.8695807635072232e-02, +4.3870908185673269e-02, +3.8782167974472016e-02, +3.3460195282547844e-02, +2.7937006980023400e-02, +2.2245849194166958e-02, +1.6421058381907890e-02, +1.0498284531152813e-02, +4.5212770985331909e-03, + +7.3864234232172879e-02, +7.3460813453467527e-02, +7.2656175243804105e-02, +7.1454714265170985e-02, +6.9862992492594159e-02, +6.7889703376521948e-02, +6.5545624364908975e-02, +6.2843558045002579e-02, +5.9798262227586656e-02, +5.6426369358018383e-02, +5.2746295699174071e-02, +4.8778140792803244e-02, +4.4543577771965881e-02, +4.0065735180692265e-02, +3.5369071097592110e-02, +3.0479240699603467e-02, +2.5422959526113047e-02, +2.0227869569052644e-02, +1.4922443697357493e-02, +9.5362203017485027e-03, +4.1059986046490847e-03, + +7.0549157789354069e-02, +7.0197685473558216e-02, +6.9496491861572585e-02, +6.8449070269366655e-02, +6.7060638906293657e-02, +6.5338114879181439e-02, +6.3290079733203858e-02, +6.0926736701561970e-02, +5.8259859877595493e-02, +5.5302735563728056e-02, +5.2070096091704460e-02, +4.8578046448352036e-02, +4.4843984081970031e-02, +4.0886512310346221e-02, +3.6725347813808873e-02, +3.2381222812069822e-02, +2.7875782821281010e-02, +2.3231481902019211e-02, +1.8471481736814750e-02, +1.3619586755579985e-02, +8.7004813675248434e-03, +3.7454048031127776e-03, + +6.7518685849036461e-02, +6.7210613600678176e-02, +6.6595874768454882e-02, +6.5677274267781208e-02, +6.4459003467139064e-02, +6.2946621064394512e-02, +6.1147027724650478e-02, +5.9068434595546317e-02, +5.6720325843991233e-02, +5.4113415385856754e-02, +5.1259598007143019e-02, +4.8171895101712200e-02, +4.4864395277318128e-02, +4.1352190109678728e-02, +3.7651305357386068e-02, +3.3778627999106900e-02, +2.9751829552202756e-02, +2.5589286397130012e-02, +2.1309998754136500e-02, +1.6933514007836239e-02, +1.2479883770988685e-02, +7.9698982297246226e-03, +3.4303008681070483e-03, + +6.4737696812683918e-02, +6.4466164435950088e-02, +6.3924238584648185e-02, +6.3114192286254020e-02, +6.2039423159892665e-02, +6.0704439165893881e-02, +5.9114839698395635e-02, +5.7277292100403214e-02, +5.5199503699984165e-02, +5.2890189485193667e-02, +5.0359035553854473e-02, +4.7616658492490478e-02, +4.4674560856694280e-02, +4.1545082943464748e-02, +3.8241351065830709e-02, +3.4777222564770442e-02, +3.1167227832798090e-02, +2.7426509708356948e-02, +2.3570760839324380e-02, +1.9616160457355529e-02, +1.5579315722943849e-02, +1.1477234579234540e-02, +7.3275539012762625e-03, +3.1533460523058385e-03, + +6.2176616655347260e-02, +6.1936067420683243e-02, +6.1455899590316665e-02, +6.0737970841770218e-02, +5.9785058704265460e-02, +5.8600849813222444e-02, +5.7189925647728380e-02, +5.5557744806212520e-02, +5.3710621888996245e-02, +5.1655703069581137e-02, +4.9400938449466317e-02, +4.6955051303948434e-02, +4.4327504338803274e-02, +4.1528463090147696e-02, +3.8568756612587678e-02, +3.5459835615146151e-02, +3.2213728223578014e-02, +2.8842993580535197e-02, +2.5360673570012392e-02, +2.1780243170124794e-02, +1.8115560713489392e-02, +1.4380822761485574e-02, +1.0590548383650969e-02, +6.7597991957454012e-03, +2.9086225531551411e-03, + +5.9810365745291860e-02, +5.9596260171248160e-02, +5.9168815466042968e-02, +5.8529561771813871e-02, +5.7680787452526826e-02, +5.6625530902368597e-02, +5.5367569669302653e-02, +5.3911406932757262e-02, +5.2262255383906990e-02, +5.0426018566342379e-02, +4.8409269744074897e-02, +4.6219228372784790e-02, +4.3863734259000406e-02, +4.1351219500560268e-02, +3.8690678310423977e-02, +3.5891634835097233e-02, +3.2964109089718800e-02, +2.9918581147143946e-02, +2.6765953746504013e-02, +2.3517513553984463e-02, +2.0184891507980793e-02, +1.6780023396300737e-02, +1.3315114982340961e-02, +9.8026345794627514e-03, +6.2555239629732773e-03, +2.6913169500471113e-03, + +5.7617536707147025e-02, +5.7426137054112113e-02, +5.7043973558794599e-02, +5.6472315730625965e-02, +5.5713062560589985e-02, +5.4768736213057986e-02, +5.3642473647553611e-02, +5.2338016198298747e-02, +5.0859697146188147e-02, +4.9212427324528886e-02, +4.7401678806444990e-02, +4.5433466728276715e-02, +4.3314329309597013e-02, +4.1051306136644976e-02, +3.8651914782102517e-02, +3.6124125840383554e-02, +3.3476336464372647e-02, +3.0717342497870677e-02, +2.7856309310595871e-02, +2.4902741467208774e-02, +2.1866451422853084e-02, +1.8757527621469379e-02, +1.5586303035924131e-02, +1.2363328128847644e-02, +9.0993694555093971e-03, +5.8056110152399851e-03, +2.4974818357615860e-03, + +5.5579746306514397e-02, +5.5407952503245123e-02, +5.5064895901762424e-02, +5.4551636870889424e-02, +5.3869761865714488e-02, +5.3021378524010766e-02, +5.2009109151741402e-02, +5.0836082617798484e-02, +4.9505924683047577e-02, +4.8022746793600260e-02, +4.6391133373001894e-02, +4.4616127652692281e-02, +4.2703216084667088e-02, +4.0658311384744517e-02, +3.8487734259247661e-02, +3.6198193872315189e-02, +3.3796767115611762e-02, +3.1290876747310445e-02, +2.8688268473822741e-02, +2.5996987058391954e-02, +2.3225351562565315e-02, +2.0381929882402571e-02, +1.7475512911400946e-02, +1.4515089278021472e-02, +1.1509824340383383e-02, +8.4690631633078869e-03, +5.4025222460153382e-03, +2.3238553757732156e-03, + +5.3681119863334847e-02, +5.3526343304058255e-02, +5.3217236446579011e-02, +5.2754690526370836e-02, +5.2140039183669822e-02, +5.1375054618285725e-02, +5.0461942479953129e-02, +4.9403335508962393e-02, +4.8202285945417749e-02, +4.6862256729026344e-02, +4.5387111514819806e-02, +4.3781103533640252e-02, +4.2048863329582124e-02, +4.0195385409867800e-02, +3.8226013845858435e-02, +3.6146426867087272e-02, +3.3962620493416008e-02, +3.1680891253809330e-02, +2.9307818044160491e-02, +2.6850243181981870e-02, +2.4315252724963952e-02, +2.1710156140146236e-02, +1.9042465461893407e-02, +1.6319874234970964e-02, +1.3550237112988812e-02, +1.0741553532878773e-02, +7.9019738499986752e-03, +5.0399816126502428e-03, +2.1677232496274501e-03, + +5.1907877631220636e-02, +5.1767943174910187e-02, +5.1488451500980935e-02, +5.1070156069855627e-02, +5.0514184532509374e-02, +4.9822035690550180e-02, +4.8995575455756835e-02, +4.8037031819971182e-02, +4.6948988848912201e-02, +4.5734379716114486e-02, +4.4396478795787113e-02, +4.2938892835935639e-02, +4.1365551235584753e-02, +3.9680695452380801e-02, +3.7888867569243444e-02, +3.5994898051084502e-02, +3.4003892724946423e-02, +3.1921219019296329e-02, +2.9752491500788944e-02, +2.7503556749924791e-02, +2.5180477621521247e-02, +2.2789516943997820e-02, +2.0337120729457286e-02, +1.7829901014207720e-02, +1.5274618596784799e-02, +1.2678166476815959e-02, +1.0047557182287984e-02, +7.3899311633454558e-03, +4.7127299269535683e-03, +2.0268119688737585e-03, + +5.0248000375256278e-02, +5.0121069569043289e-02, +4.9867528594952394e-02, +4.9488017919699291e-02, +4.8983496220517835e-02, +4.8355237963477675e-02, +4.7604830184101235e-02, +4.6734168478415522e-02, +4.5745452214570180e-02, +4.4641178977124413e-02, +4.3424138258047418e-02, +4.2097404410385099e-02, +4.0664328882417444e-02, +3.9128531751963083e-02, +3.7493892582280031e-02, +3.5764540622768140e-02, +3.3944844379410546e-02, +3.2039400581624682e-02, +3.0053022573989872e-02, +2.7990728163314639e-02, +2.5857726954024697e-02, +2.3659407208682794e-02, +2.1401322277669967e-02, +1.9089176658573199e-02, +1.6728811790177316e-02, +1.4326191823806518e-02, +1.1887390117010501e-02, +9.4185794284203875e-03, +6.9260419018309606e-03, +4.4163334569309052e-03, +1.8992056795136905e-03, +}; + +static dtype POLY_SMALLX_W1[] = { + +-3.3333333333333331e-01, + +-1.2271362192859778e-01, +-2.1061971140473557e-01, + +-5.6487691723447885e-02, +-1.4907718645889767e-01, +-1.2776845515098778e-01, + +-3.1384430571429409e-02, +-8.9804624256712817e-02, +-1.2931437096375242e-01, +-8.2829907541438680e-02, + +-1.9686757690986864e-02, +-5.6173759018728280e-02, +-9.7115272681211257e-02, +-1.0297926219357020e-01, +-5.7378281748836732e-02, + +-1.3404459326117429e-02, +-3.7140259226780728e-02, +-6.9798025993402457e-02, +-8.9903208869919593e-02, +-8.1202949733650345e-02, +-4.1884430183462780e-02, + +-9.6762784934135981e-03, +-2.5810077192692869e-02, +-5.0559277860857933e-02, +-7.1997207281479375e-02, +-7.8739057440032886e-02, +-6.4711830138776669e-02, +-3.1839604926079998e-02, + +-7.2956931243810877e-03, +-1.8697575943681034e-02, +-3.7385544074891822e-02, +-5.6452682904581976e-02, +-6.8429140245654982e-02, +-6.7705342645285799e-02, +-5.2380981359025407e-02, +-2.4986373035831237e-02, + +-5.6884471222090364e-03, +-1.4017609368068548e-02, +-2.8279396473125228e-02, +-4.4297481709585342e-02, +-5.7192383961753759e-02, +-6.2644131890598725e-02, +-5.8019794346925377e-02, +-4.3080183147849817e-02, +-2.0113905313217502e-02, + +-4.5548069078836916e-03, +-1.0812068870036251e-02, +-2.1858322694621932e-02, +-3.5065901484532154e-02, +-4.7201253922888042e-02, +-5.5107972224754838e-02, +-5.6377251364257981e-02, +-4.9866349375738916e-02, +-3.5958202071776788e-02, +-1.6531204416842745e-02, + +-3.7265960577018311e-03, +-8.5403678824716809e-03, +-1.7229332137015666e-02, +-2.8080687367955298e-02, +-3.8907666134333468e-02, +-4.7433694841593890e-02, +-5.1693920888210537e-02, +-5.0384549968286702e-02, +-4.3099530033836778e-02, +-3.0414471142145506e-02, +-1.3822516879781982e-02, + +-3.1038096899801901e-03, +-6.8830915722212487e-03, +-1.3819746842434521e-02, +-2.2762002213180321e-02, +-3.2198834723663874e-02, +-4.0484183390368120e-02, +-4.6081931636853396e-02, +-4.7795785285076720e-02, +-4.4950377862156901e-02, +-3.7497135400073503e-02, +-2.6030178540522940e-02, +-1.1726256176801588e-02, + +-2.6240792114390053e-03, +-5.6436186987320449e-03, +-1.1257772310878891e-02, +-1.8670533124689720e-02, +-2.6815751926887902e-02, +-3.4492520092913835e-02, +-4.0518024622316566e-02, +-4.3878709377426037e-02, +-4.3860783492389178e-02, +-4.0143708158048838e-02, +-3.2844993055811733e-02, +-2.2511371641957784e-02, +-1.0071467619841788e-02, + +-2.2469308790401127e-03, +-4.6964849046452917e-03, +-9.2974560817277799e-03, +-1.5486275275472907e-02, +-2.2495801468911308e-02, +-2.9439624856328239e-02, +-3.5409663026430928e-02, +-3.9576455854167823e-02, +-4.1281268726971909e-02, +-4.0109999958463663e-02, +-3.5940867319080382e-02, +-2.8960749795930670e-02, +-1.9649015970703121e-02, +-8.7427392154592037e-03, + +-1.9452005169610048e-03, +-3.9590659703587971e-03, +-7.7727242996177151e-03, +-1.2978556297161697e-02, +-1.9014501003127515e-02, +-2.5218029951309142e-02, +-3.0889870150948288e-02, +-3.5361429299482924e-02, +-3.8059523861408914e-02, +-3.8562264536316726e-02, +-3.6640791404117634e-02, +-3.2282899099728132e-02, +-2.5696361141300823e-02, +-1.7292174284832689e-02, +-7.6599415166613213e-03, + +-1.7001230829367258e-03, +-3.3754187760707522e-03, +-6.5691417015674332e-03, +-1.0980813193163734e-02, +-1.6191752239187309e-02, +-2.1700508243780385e-02, +-2.6965355395781234e-02, +-3.1450294276355116e-02, +-3.4670712171327708e-02, +-3.6234880948403915e-02, +-3.5877818286314068e-02, +-3.3484676556934885e-02, +-2.9101705514392662e-02, +-2.2933920020103322e-02, +-1.5330145136012663e-02, +-6.7660677910014247e-03, + +-1.4984074950259089e-03, +-2.9067246676076157e-03, +-5.6063199913378228e-03, +-9.3719000074020762e-03, +-1.3886833612390828e-02, +-1.8766944700796127e-02, +-2.3589413509197684e-02, +-2.7924639812563028e-02, +-3.1368700683786291e-02, +-3.3573990726416987e-02, +-3.4275766919362793e-02, +-3.3312623741992758e-02, +-3.0639375470369250e-02, +-2.6331392475133136e-02, +-2.0580114466852976e-02, +-1.3680500642828962e-02, +-6.0196844102690869e-03, + +-1.3304316837717016e-03, +-2.5254539216072332e-03, +-4.8267625926033710e-03, +-8.0628400015049003e-03, +-1.1990899100116491e-02, +-1.6313190281052339e-02, +-2.0697019672680061e-02, +-2.4797149597584039e-02, +-2.8279093434533591e-02, +-3.0841757376119491e-02, +-3.2237924483929564e-02, +-3.2291219224453237e-02, +-3.0908424053730399e-02, +-2.8086328935576100e-02, +-2.3912663421741687e-02, +-1.8561091188511476e-02, +-1.2280982655562224e-02, +-5.3901017082554287e-03, + +-1.1890941070327255e-03, +-2.2116988826134500e-03, +-4.1886553631745567e-03, +-6.9875756372839480e-03, +-1.0419927528137743e-02, +-1.4252420410437240e-02, +-1.8221106397652641e-02, +-2.2047354808442856e-02, +-2.5454745823222515e-02, +-2.8185874148949006e-02, +-3.0018058614902164e-02, +-3.0777018638139111e-02, +-3.0347699599460185e-02, +-2.8681599315174507e-02, +-2.5800157550483593e-02, +-2.1794010982877157e-02, +-1.6818196700600894e-02, +-1.1083936470966001e-02, +-4.8542023537830386e-03, + +-1.0690629147509234e-03, +-1.9508097838309760e-03, +-3.6611187853273588e-03, +-6.0965216267657952e-03, +-9.1089122140064586e-03, +-1.2513632207604274e-02, +-1.6099559879687413e-02, +-1.9640657574944317e-02, +-2.2908354254861273e-02, +-2.5684094401597250e-02, +-2.7771375416823764e-02, +-2.9006623070525431e-02, +-2.9268317072484000e-02, +-2.8483873130656211e-02, +-2.6633909001728261e-02, +-2.3753664147307559e-02, +-1.9931501267395593e-02, +-1.5304606185569621e-02, +-1.0052431646823436e-02, +-4.3943087506434211e-03, + +-9.6627314278892426e-04, +-1.7318347083541976e-03, +-3.2210239526491015e-03, +-5.3520511073680780e-03, +-8.0073246286096484e-03, +-1.1039282585195927e-02, +-1.4277715337011516e-02, +-1.7538220345659664e-02, +-2.0631374387745500e-02, +-2.3372173185105094e-02, +-2.5589275254414505e-02, +-2.7133596260340120e-02, +-2.7885831872629167e-02, +-2.7762539538660241e-02, +-2.6720480163454536e-02, +-2.4759006126101473e-02, +-2.1920378758193571e-02, +-1.8288004573812425e-02, +-1.3982709537162180e-02, +-9.1575193277493756e-03, +-3.9967185403280816e-03, + +-8.7758269425313210e-04, +-1.5464683528524546e-03, +-2.8508202714467739e-03, +-4.7253106993737966e-03, +-7.0756580127189356e-03, +-9.7828924188553788e-03, +-1.2708741997005996e-02, +-1.5701898033920712e-02, +-1.8604879236247839e-02, +-2.1261187557625936e-02, +-2.3522435269239354e-02, +-2.5255124114469417e-02, +-2.6346772869184864e-02, +-2.6711118691921380e-02, +-2.6292159006198620e-02, +-2.5066852499734976e-02, +-2.3046357966386773e-02, +-2.0275756003799422e-02, +-1.6832270733800399e-02, +-1.2822101353378577e-02, +-8.3762659163262396e-03, +-3.6506796345923557e-03, + +-8.0053237561891213e-04, +-1.3883300247785086e-03, +-2.5370292953011361e-03, +-4.1939521779308740e-03, +-6.2828211065206491e-03, +-8.7069202945531735e-03, +-1.1353106382478750e-02, +-1.4096503966598999e-02, +-1.6805693484973475e-02, +-1.9348178723997807e-02, +-2.1595909708747425e-02, +-2.3430634422247840e-02, +-2.4748859759267428e-02, +-2.5466218075784461e-02, +-2.5521059996814338e-02, +-2.4877125808989646e-02, +-2.3525185527977711e-02, +-2.1483580167976052e-02, +-1.8797642603314672e-02, +-1.5538026278976966e-02, +-1.1798038198100505e-02, +-7.6903245153657745e-03, +-3.3476604370182329e-03, + +-7.3317556916507529e-04, +-1.2524590747887223e-03, +-2.2691845462950136e-03, +-3.7405007205857576e-03, +-5.6041788910352087e-03, +-7.7809841253016748e-03, +-1.0177696039521220e-02, +-1.2690665256319447e-02, +-1.5209771470394179e-02, +-1.7622633889750192e-02, +-1.9818915283735725e-02, +-2.1694557310112852e-02, +-2.3155787346856936e-02, +-2.4122745624809844e-02, +-2.4532595723585893e-02, +-2.4342000921887333e-02, +-2.3528872763375518e-02, +-2.2093325643166399e-02, +-2.0057801314458116e-02, +-1.7466359276473199e-02, +-1.4383164083589122e-02, +-1.0890252413042244e-02, +-7.0848839825290218e-03, +-3.0808220625546364e-03, + +-6.7395540337246787e-04, +-1.1349566358644543e-03, +-2.0390746801447687e-03, +-3.3511690623813806e-03, +-5.0200781398304032e-03, +-6.9804175588084787e-03, +-9.1548797431910186e-03, +-1.1456954442290054e-02, +-1.3793975716853965e-02, +-1.6070389378533476e-02, +-1.8191127216247032e-02, +-2.0064970609393468e-02, +-2.1607786472664380e-02, +-2.2745522888648222e-02, +-2.3416860109892888e-02, +-2.3575424563802901e-02, +-2.3191488659954042e-02, +-2.2253097062672412e-02, +-2.0766580060411256e-02, +-1.8756436145074561e-02, +-1.6264588577291961e-02, +-1.3349045851497947e-02, +-1.0082036571136040e-02, +-6.5478866197224098e-03, +-2.8446311636533511e-03, + +-6.2161488689990480e-04, +-1.0327275086083386e-03, +-1.8401960580889394e-03, +-3.0149869640499873e-03, +-4.5147339695371389e-03, +-6.2851163121741835e-03, +-8.2616265380855095e-03, +-1.0371671052150202e-02, +-1.2536935793770810e-02, +-1.4675940887304666e-02, +-1.6706702024265049e-02, +-1.8549412886245953e-02, +-2.0129062224194316e-02, +-2.1377901293589997e-02, +-2.2237682139585283e-02, +-2.2661594577637559e-02, +-2.2615839388568829e-02, +-2.2080786934452167e-02, +-2.1051683736156294e-02, +-1.9538884132735745e-02, +-1.7567599591891560e-02, +-1.5177174446041301e-02, +-1.2419915194091842e-02, +-9.3595332664645377e-03, +-6.0694393571820810e-03, +-2.6345721695611437e-03, + +-5.7513028408902322e-04, +-9.4329168430796887e-04, +-1.6673519036875177e-03, +-2.7231558362285969e-03, +-4.0753849099907985e-03, +-5.6786233722776929e-03, +-7.4787299505662741e-03, +-9.4144739152637359e-03, +-1.1419386669380317e-02, +-1.3423773547435855e-02, +-1.5356825713614353e-02, +-1.7148769050359263e-02, +-1.8732985812784094e-02, +-2.0048045624828675e-02, +-2.1039585086268936e-02, +-2.1661979765378692e-02, +-2.1879758536315162e-02, +-2.1668717899778190e-02, +-2.1016702873908635e-02, +-1.9924031000705781e-02, +-1.8403546708975267e-02, +-1.6480304475441670e-02, +-1.4190890952391386e-02, +-1.1582409919015752e-02, +-8.7111810553797079e-03, +-5.6413659566756039e-03, +-2.4469308282843898e-03, + +-5.3366111684094713e-04, +-8.6464500025246356e-04, +-1.5163554162466518e-03, +-2.4685657231938683e-03, +-3.6916481016212623e-03, +-5.1474059282214536e-03, +-6.7901472727191041e-03, +-8.5679696755271186e-03, +-1.0424220488828342e-02, +-1.2299092180139715e-02, +-1.4131308241160878e-02, +-1.5859852820091818e-02, +-1.7425695972749667e-02, +-1.8773466540719552e-02, +-1.9853026110371076e-02, +-2.0620900244837929e-02, +-2.1041527136180304e-02, +-2.1088288887562652e-02, +-2.0744296665855217e-02, +-2.0002907798798691e-02, +-1.8867960345377299e-02, +-1.7353718559221982e-02, +-1.5484530854094966e-02, +-1.3294210470928623e-02, +-1.0825159460360188e-02, +-8.1272796169722730e-03, +-5.2568631355084626e-03, +-2.2786295689508269e-03, + +-4.9651222051138092e-04, +-7.9515492910924588e-04, +-1.3838075161188327e-03, +-2.2454304965243265e-03, +-3.3550242159053603e-03, +-4.6802840672847696e-03, +-6.1824474473191234e-03, +-7.8173104864695114e-03, +-9.5363881834857386e-03, +-1.1288187853302170e-02, +-1.3019562855678271e-02, +-1.4677111485834683e-02, +-1.6208584731990053e-02, +-1.7564266368590393e-02, +-1.8698289564294306e-02, +-1.9569855822093415e-02, +-2.0144324592970581e-02, +-2.0394145249041540e-02, +-2.0299607180963412e-02, +-1.9849388492826435e-02, +-1.9040888986250282e-02, +-1.7880338725651895e-02, +-1.6382679334875805e-02, +-1.4571221214845644e-02, +-1.2477086244340073e-02, +-1.0138453615874508e-02, +-7.5996463863333523e-03, +-4.9102340771396448e-03, +-2.1271009877085771e-03, + +-4.6310464738128133e-04, +-7.3348180776671226e-04, +-1.2669287870492598e-03, +-2.0490099239445147e-03, +-3.0585149395456822e-03, +-4.2679787427113616e-03, +-5.6443547331045977e-03, +-7.1498252733619401e-03, +-8.7427296744303148e-03, +-1.0378587186787830e-02, +-1.2011190184133108e-02, +-1.3593741021053611e-02, +-1.5080004983478243e-02, +-1.6425451356138845e-02, +-1.7588354914387684e-02, +-1.8530831101716622e-02, +-1.9219779756140722e-02, +-1.9627714459533419e-02, +-1.9733457350653339e-02, +-1.9522682498344823e-02, +-1.8988294598248755e-02, +-1.8130633747778603e-02, +-1.6957501279801657e-02, +-1.5484006012953288e-02, +-1.3732234769856470e-02, +-1.1730755802916937e-02, +-9.5139701834677914e-03, +-7.1213437578314283e-03, +-4.5966801393834151e-03, +-1.9901896994310832e-03, + +-4.3295313883927794e-04, +-6.7851870107199454e-04, +-1.1634312017740312e-03, +-1.8753961641719409e-03, +-2.7963255554749196e-03, +-3.9027531947284874e-03, +-5.1663738309140816e-03, +-6.5546936397432127e-03, +-8.0317773547678734e-03, +-9.5590750512080276e-03, +-1.1096309789162002e-02, +-1.2602405937747242e-02, +-1.4036437074665549e-02, +-1.5358571907751601e-02, +-1.6530996706426423e-02, +-1.7518793260717383e-02, +-1.8290752391624653e-02, +-1.8820104496316398e-02, +-1.9085150491865859e-02, +-1.9069778779481357e-02, +-1.8763856436510597e-02, +-1.8163485698059839e-02, +-1.7271119851178813e-02, +-1.6095535868708110e-02, +-1.4651664402953265e-02, +-1.2960281132221278e-02, +-1.1047567099186447e-02, +-8.9445508736011696e-03, +-6.6864610473804766e-03, +-4.3121367372060491e-03, +-1.8660755178749769e-03, +}; + +static dtype POLY_LARGEX_RT[] = { + +5.0000000000000000e-01, + +2.7525512860841095e-01, +2.7247448713915889e+00, + +1.9016350919348812e-01, +1.7844927485432516e+00, +5.5253437422632601e+00, + +1.4530352150331710e-01, +1.3390972881263614e+00, +3.9269635013582871e+00, +8.5886356890120350e+00, + +1.1758132021177814e-01, +1.0745620124369040e+00, +3.0859374437175502e+00, +6.4147297336620301e+00, +1.1807189489971737e+01, + +9.8747014068481187e-02, +8.9830283456961768e-01, +2.5525898026681713e+00, +5.1961525300544658e+00, +9.1242480375311796e+00, +1.5129959781108086e+01, + +8.5115442997594035e-02, +7.7213792004277704e-01, +2.1805918884504591e+00, +4.3897928867310139e+00, +7.5540913261017844e+00, +1.1989993039823879e+01, +1.8528277495852493e+01, + +7.4791882596818265e-02, +6.7724908764928915e-01, +1.9051136350314284e+00, +3.8094763614849070e+00, +6.4831454286271706e+00, +1.0093323675221344e+01, +1.4972627088426393e+01, +2.1984272840962650e+01, + +6.6702230958194400e-02, +6.0323635708174872e-01, +1.6923950797931788e+00, +3.3691762702432690e+00, +5.6944233429577551e+00, +8.7697567302686021e+00, +1.2771825354869193e+01, +1.8046505467728981e+01, +2.5485979166099078e+01, + +6.0192063149587915e-02, +5.4386750029464603e-01, +1.5229441054044437e+00, +3.0225133764515739e+00, +5.0849077500985240e+00, +7.7774392315254453e+00, +1.1208130204348663e+01, +1.5561163332189350e+01, +2.1193892096301543e+01, +2.9024950340236227e+01, + +5.4839869578818493e-02, +4.9517412335035643e-01, +1.3846557400845998e+00, +2.7419199401067025e+00, +4.5977377004857116e+00, +6.9993974695288363e+00, +1.0018908275957234e+01, +1.3769305866101691e+01, +1.8441119680978193e+01, +2.4401961242387042e+01, +3.2594980091440817e+01, + +5.0361889117293952e-02, +4.5450668156378027e-01, +1.2695899401039614e+00, +2.5098480972321280e+00, +4.1984156448784136e+00, +6.3699753880306353e+00, +9.0754342309612035e+00, +1.2390447963809471e+01, +1.6432195087675314e+01, +2.1396755936166109e+01, +2.7661108779846089e+01, +3.6191360360615604e+01, + +4.6560083245024773e-02, +4.2002740640121355e-01, +1.1723107732777798e+00, +2.3145408643494343e+00, +3.8645850382281592e+00, +5.8487348113063433e+00, +8.3045534899859010e+00, +1.1285750993517638e+01, +1.4870960377525401e+01, +1.9180919485610456e+01, +2.4416692333056517e+01, +3.0963938274746795e+01, +3.9810426068749337e+01, + +4.3292035739773548e-02, +3.9042092604203149e-01, +1.0889658675692704e+00, +2.1477994705822314e+00, +3.5810282499917712e+00, +5.4091123306164599e+00, +7.6606911156100850e+00, +1.0375563009770053e+01, +1.3609711429390236e+01, +1.7444294475704190e+01, +2.2003196766914922e+01, +2.7492041504843851e+01, +3.4304620509373080e+01, +4.3449262307852045e+01, + +4.0452704304575260e-02, +3.6472064505140778e-01, +1.0167460688574956e+00, +2.0037189531339226e+00, +3.3369832057345099e+00, +5.0328052776251155e+00, +7.1135937697298752e+00, +9.6098172843044445e+00, +1.2563082369948498e+01, +1.6031284108073976e+01, +2.0097785334755926e+01, +2.4889312475156551e+01, +3.0615717400899491e+01, +3.7678471784205300e+01, +4.7105508618218913e+01, + +3.7962914575313457e-02, +3.4220015601094766e-01, +9.5355315539086549e-01, +1.8779315076960743e+00, +3.1246010507021444e+00, +4.7067267076675874e+00, +6.6422151797414442e+00, +8.9550013377233899e+00, +1.1677033673975957e+01, +1.4851431341801250e+01, +1.8537743178606693e+01, +2.2821300693525210e+01, +2.7831438211328678e+01, +3.3781970488226165e+01, +4.1081666525491201e+01, +5.0777223877537082e+01, + +3.5761858556337386e-02, +3.2230289701540760e-01, +8.9778743824424956e-01, +1.7671330095048279e+00, +2.9380104369247211e+00, +4.4212366485835117e+00, +6.2313736025080120e+00, +8.3876207781715131e+00, +1.0915150152476127e+01, +1.3847145110793951e+01, +1.7228024947684798e+01, +2.1118801755252182e+01, +2.5606595795917325e+01, +3.0823164238528481e+01, +3.6986065260934993e+01, +4.4511035627908562e+01, +5.4462790440994993e+01, + +3.3802060596144767e-02, +3.0459519206802305e-01, +8.4820747882451009e-01, +1.6687755533298347e+00, +2.7727245286391229e+00, +4.1690582475017761e+00, +5.8697952945278802e+00, +7.8906059174609409e+00, +1.0251740616401369e+01, +1.2979403028335362e+01, +1.6107833621211359e+01, +1.9682594096569808e+01, +2.3766014733151867e+01, +2.8446863416187917e+01, +3.3859169865578401e+01, +4.0224050469543094e+01, +4.7963921373889526e+01, +5.8160844506183068e+01, + +3.2045913128252994e-02, +2.8873407234686432e-01, +8.0383479939549507e-01, +1.5808614575096895e+00, +2.6252513972914890e+00, +3.9445843839317147e+00, +5.5489066368145510e+00, +7.4511963747374166e+00, +9.6680282675023470e+00, +1.2220529929386148e+01, +1.5135786084744241e+01, +1.8448961406463173e+01, +2.2206639606535553e+01, +2.6472355727146923e+01, +3.1336411796150887e+01, +3.6934985280054455e+01, +4.3492591618441629e+01, +5.1438070769382129e+01, +6.1870224479037041e+01, + +3.0463239279482524e-02, +2.7444471579285035e-01, +7.6388755844391321e-01, +1.5018014976681044e+00, +2.4928301451213657e+00, +3.7434180412162936e+00, +5.2620558537883513e+00, +7.0596277357415609e+00, +9.1498983120306487e+00, +1.1550198286442804e+01, +1.4282403685210403e+01, +1.7374366975199077e+01, +2.0862075185437845e+01, +2.4793039892463458e+01, +2.9231910157093427e+01, +3.4270428925039575e+01, +4.0046815790245603e+01, +4.6788846392124967e+01, +5.4931555621020550e+01, +6.5589931990639727e+01, + +2.9029543936387635e-02, +2.6150430708215294e-01, +7.2773338834365031e-01, +1.4303150459330356e+00, +2.3732474728319004e+00, +3.5620583926357074e+00, +5.0039935628186738e+00, +6.7082806310126752e+00, +8.6864934825800209e+00, +1.0953055650413523e+01, +1.3525943011373357e+01, +1.6427682387916022e+01, +1.9686806658322944e+01, +2.3340045388239311e+01, +2.7435762818520232e+01, +3.2039647947988584e+01, +3.7244806615266050e+01, +4.3191409701011828e+01, +5.0110370364086812e+01, +5.8442711638286255e+01, +6.9319101991400871e+01, + +2.7724736591276774e-02, +2.4973028108823533e-01, +6.9485521795227390e-01, +1.3653582776868292e+00, +2.2647072589375217e+00, +3.3976808657520632e+00, +4.7705156762734964e+00, +6.3911097478094518e+00, +8.2693001309060623e+00, +1.0417240214581929e+01, +1.2849916314252928e+01, +1.5585864757495914e+01, +1.8648187517474806e+01, +2.2066029202676830e+01, +2.5876798119301597e+01, +3.0129649964964479e+01, +3.4891252115132360e+01, +4.0256006929107102e+01, +4.6365957352938530e+01, +5.3455044504540616e+01, +6.1970091334807094e+01, +7.3056979479728611e+01, + +2.6532183876098379e-02, +2.3897161999933406e-01, +6.6482608325629022e-01, +1.3060716158039978e+00, +2.1657359795353486e+00, +3.2479796092961242e+00, +4.5582116475947760e+00, +6.1032492614598546e+00, +7.8915323621309739e+00, +9.9334115718826261e+00, +1.2241535951273148e+01, +1.4831380588625729e+01, +1.7721976213997483e+01, +2.0936940207605186e+01, +2.4505973901846374e+01, +2.8467112454527676e+01, +3.2870252361043640e+01, +3.7782987405363052e+01, +4.3300959201161334e+01, +4.9568012842125619e+01, +5.6821018665012517e+01, +6.5512427112270117e+01, +7.6802901160312700e+01, + +2.5437996585689359e-02, +2.2910231649262433e-01, +6.3729027873266875e-01, +1.2517406323627465e+00, +2.0751129098523808e+00, +3.1110524551477132e+00, +4.3642830769353065e+00, +5.8407332713236082e+00, +7.5477046800234540e+00, +9.4940953300264876e+00, +1.1690695926056073e+01, +1.4150586187285759e+01, +1.6889671928527108e+01, +1.9927425875242463e+01, +2.3287932824879917e+01, +2.7001406056472355e+01, +3.1106464709046566e+01, +3.5653703516328214e+01, +4.0711598185543110e+01, +4.6376979557540132e+01, +5.2795432527283630e+01, +6.0206666963057224e+01, +6.9068601975304375e+01, +8.0556280819950402e+01, + +2.4430486164134554e-02, +2.2001639865187669e-01, +6.1194905886035600e-01, +1.2017665377409916e+00, +1.9918178052911781e+00, +2.9853154656388092e+00, +4.1864105010442785e+00, +5.6002933990827337e+00, +7.2333279637322212e+00, +9.0932267983089190e+00, +1.1189281321712450e+01, +1.3532664930275971e+01, +1.6136836705389790e+01, +1.9018086906205195e+01, +2.2196288008884540e+01, +2.5695953089717140e+01, +2.9547770386068311e+01, +3.3790907096465993e+01, +3.8476619956375998e+01, +4.3674228042342541e+01, +4.9481707240111525e+01, +5.6046326151559533e+01, +6.3610552160222085e+01, +7.2637626045451725e+01, +8.4316597544701708e+01, + +2.3499745451748166e-02, +2.1162409772850768e-01, +5.8854965565640838e-01, +1.1556436128826397e+00, +1.9149911321201440e+00, +2.8694384848332137e+00, +4.0226539114050963e+00, +5.3792094651444282e+00, +6.9446884907059312e+00, +8.7258252848297229e+00, +1.0730686164960115e+01, +1.2968905056512702e+01, +1.5451992498719477e+01, +1.8193745832982035e+01, +2.1210802311794055e+01, +2.4523399621789363e+01, +2.8156446757738671e+01, +3.2141075953841757e+01, +3.6516971983705098e+01, +4.1336022358465094e+01, +4.6668355740523516e+01, +5.2613053664164717e+01, +5.9319017574105793e+01, +6.7031396926394294e+01, +7.6218617538242384e+01, +8.8083386135303101e+01, + +2.2637321764490403e-02, +2.0384886358910115e-01, +5.6687674698997592e-01, +1.1129417449108705e+00, +1.8439034531225937e+00, +2.7622958634819486e+00, +3.8713773423959186e+00, +5.1751974796436677e+00, +6.6786842873405901e+00, +8.3877565918984587e+00, +1.0309468348865641e+01, +1.2452194292401609e+01, +1.4825870237972618e+01, +1.7442307191222060e+01, +2.0315607360293736e+01, +2.3462724279507746e+01, +2.6904232239340534e+01, +3.0665409061778991e+01, +3.4777804747837429e+01, +3.9281595476659632e+01, +4.4229272334197169e+01, +4.9691743673383556e+01, +5.5769161249665579e+01, +6.2612012913671613e+01, +7.0468060440696945e+01, +7.9810787215031667e+01, +9.1856229242335857e+01, + +2.1835959421664289e-02, +1.9662501675605398e-01, +5.4674575955457738e-01, +1.0732927646925488e+00, +1.7779315886935154e+00, +2.6629283184247892e+00, +3.7311909350139651e+00, +4.9863243745575856e+00, +6.4327019219178299e+00, +8.0755565686670163e+00, +9.9210973194213103e+00, +1.1976657318097082e+01, +1.4250883359461472e+01, +1.6753980285337462e+01, +1.9498029648036461e+01, +2.2497411050074689e+01, +2.5769368816152561e+01, +2.9334789869091171e+01, +3.3219297919270076e+01, +3.7454838268460072e+01, +4.2082055800206739e+01, +4.7154021248777767e+01, +5.2742395970002200e+01, +5.8948369842919362e+01, +6.5923974474211676e+01, +7.3919519173353009e+01, +8.3413425568839060e+01, +9.5634750860588284e+01, + +2.1089395098205156e-02, +1.8989588398975638e-01, +5.2799756150380650e-01, +1.0363796519133510e+00, +1.7165398584196183e+00, +2.5705130786025099e+00, +3.6009058856172511e+00, +4.8109422295121211e+00, +6.2045223787503812e+00, +7.7862978584545157e+00, +9.5617661276720227e+00, +1.1537390089408222e+01, +1.3720749420799105e+01, +1.6120733421037702e+01, +1.8747789038878786e+01, +2.1614243675418422e+01, +2.4734731466985338e+01, +2.8126766135082082e+01, +3.1811526931229533e+01, +3.5814963828855454e+01, +4.0169397995140628e+01, +4.4915923137908337e+01, +5.0108168407561145e+01, +5.5818524151111106e+01, +6.2149189096788938e+01, +6.9253699227995114e+01, +7.7384850976179521e+01, +8.7025892182318486e+01, +9.9418610907768539e+01, + +2.0392193775236527e-02, +1.8361230503708192e-01, +5.1049421913596571e-01, +1.0019279274528394e+00, +1.6592651780060930e+00, +2.4843402777905514e+00, +3.4794990281427913e+00, +4.6476369270260962e+00, +5.9922482023656096e+00, +7.5174877929290096e+00, +9.2282491217658844e+00, +1.1130261490352575e+01, +1.3230212276078705e+01, +1.5535901019228723e+01, +1.8056435214799702e+01, +2.0802481620579336e+01, +2.3786592878196362e+01, +2.7023638435386893e+01, +3.0531383273363225e+01, +3.4331281605561593e+01, +3.8449592717510598e+01, +4.2918996674025955e+01, +4.7781018446551954e+01, +5.3089826610037136e+01, +5.8918518746195041e+01, +6.5370275574797105e+01, +7.2600100925448842e+01, +8.0863221815671636e+01, +9.0647606826965728e+01, +1.0320750067582173e+02, + +1.9739616193178225e-02, +1.7773142707141706e-01, +4.9411557648940696e-01, +9.6969873164499709e-01, +1.6057051140985357e+00, +2.4037941117242698e+00, +3.3660847103142895e+00, +4.4951876368162758e+00, +5.7942464369889661e+00, +7.2669891295593967e+00, +8.9177926244746359e+00, +1.0751762818395916e+01, +1.2774834264847245e+01, +1.4993894676815959e+01, +1.7416941435106203e+01, +2.0053280025321786e+01, +2.2913778355123558e+01, +2.6011196940249089e+01, +2.9360624220999089e+01, +3.2980060918172178e+01, +3.6891221217477799e+01, +4.1120658946990169e+01, +4.5701398131155180e+01, +5.0675379370668551e+01, +5.6097293554984454e+01, +6.2040925662658722e+01, +6.8610413634453707e+01, +7.5962195116562384e+01, +8.4353874634793740e+01, +9.4278041969742887e+01, +1.0700113899010603e+02, +}; + +static dtype POLY_LARGEX_WW[] = { + +1.0000000000000000e+00, + +9.0824829046386302e-01, +9.1751709536136983e-02, + +8.1765693911205850e-01, +1.7723149208382905e-01, +5.1115688041124931e-03, + +7.4602451535815473e-01, +2.3447981532351803e-01, +1.9270440241576533e-02, +2.2522907675073554e-04, + +6.8928466986403814e-01, +2.7096740596053548e-01, +3.8223161001540572e-02, +1.5161418686244353e-03, +8.6213052614365738e-06, + +6.4332872302566002e-01, +2.9393409609065996e-01, +5.8233375824728303e-02, +4.4067613750663976e-03, +9.6743698451812559e-05, +2.9998543352743358e-07, + +6.0526925362603901e-01, +3.0816667968502726e-01, +7.7300217648506794e-02, +8.8578382138948062e-03, +4.0067910752148827e-04, +5.3219826881352609e-06, +9.7363225154967611e-09, + +5.7313704247602426e-01, +3.1667674550189923e-01, +9.4569504708028052e-02, +1.4533875202369467e-02, +1.0519698531478185e-03, +3.0600064324974545e-05, +2.6189464325736453e-07, +2.9956294463236794e-10, + +5.4556646930857577e-01, +3.2137060778702525e-01, +1.0979326496044525e-01, +2.1033035503882684e-02, +2.1309695925833040e-03, +1.0359792288232413e-04, +2.0431047952739623e-06, +1.1810976957673191e-08, +8.8331775387174107e-12, + +5.2158612689910977e-01, +3.2347866796799990e-01, +1.2301274412795381e-01, +2.7995674894202006e-02, +3.6602062621609857e-03, +2.5765255992385888e-04, +8.8042421804617054e-06, +1.2254980519965896e-07, +4.9641247246303573e-10, +2.5156013448758539e-13, + +5.0048719317386992e-01, +3.2381258682735053e-01, +1.3439262285778006e-01, +3.5138145761611533e-02, +5.6175220951544319e-03, +5.2456660651192756e-04, +2.6691954253619027e-05, +6.6397074996280721e-07, +6.7330283189164226e-09, +1.9682757964692173e-11, +6.9589212957542919e-15, + +4.8174023109328062e-01, +3.2291902573400016e-01, +1.4413872803435665e-01, +4.2252688817935091e-02, +7.9532178583626174e-03, +9.2943743755879136e-04, +6.4190011305491828e-05, +2.4353194908851625e-06, +4.5349233469612837e-08, +3.4373298559297163e-10, +7.4299483055247976e-13, +1.8780387378083912e-16, + +4.6494147126015534e-01, +3.2117309122758919e-01, +1.5245906441260604e-01, +4.9195331314242363e-02, +1.0604396031364489e-02, +1.4884051527208678e-03, +1.3115117388667682e-04, +6.8868272246162541e-06, +1.9973511146629173e-07, +2.8485864759760186e-09, +1.6485618886327706e-11, +2.6890952993271460e-14, +4.9613885207872613e-18, + +4.4977725950135311e-01, +3.1883638732261832e-01, +1.5954673202319922e-01, +5.5871569535761778e-02, +1.3504919418060288e-02, +2.2086118557151971e-03, +2.3765707628035695e-04, +1.6187168114290304e-05, +6.6097288998530188e-07, +1.4958725169227277e-08, +1.6653219687764516e-10, +7.4918020703531324e-13, +9.3835311390007269e-16, +1.2865094877603708e-19, + +4.3599994363115452e-01, +3.1609390641804141e-01, +1.6557367343124368e-01, +6.2223540367002554e-02, +1.6591495115446591e-02, +3.0894146797321703e-03, +3.9302588796965280e-04, +3.3159963261346906e-05, +1.7818177737242388e-06, +5.7643503080952891e-08, +1.0356918934379420e-09, +9.1468517426524072e-12, +3.2481602599447942e-14, +3.1711218899325956e-17, +3.2816140162356828e-21, + +4.2341113976095862e-01, +3.1307798751519689e-01, +1.7068961654416151e-01, +6.8219695452184106e-02, +1.9806923404641182e-02, +4.1241021026157693e-03, +6.0511405163412495e-04, +6.1119606121792604e-05, +4.1192442079068574e-06, +1.7762581426211791e-07, +4.6250368241484811e-09, +6.6950024796024144e-11, +4.7561297115556171e-13, +1.3510580447340238e-15, +1.0416899183921723e-18, +8.2492149780365387e-23, + +4.1184987333822709e-01, +3.0988419302971959e-01, +1.7502336271724780e-01, +7.3846925916088518e-02, +2.3101477893554247e-02, +5.3016484766203907e-03, +8.7992993354924756e-04, +1.0365425286733819e-04, +8.4554514967754892e-06, +4.6240685286457705e-07, +1.6234818080244531e-08, +3.4486111334905771e-10, +4.0733153595416136e-12, +2.3558755812450367e-14, +5.4161094185246469e-17, +3.3362887511570735e-20, +2.0466542596109164e-24, + +4.0118401287804417e-01, +3.0658202679942276e-01, +1.7868499500877333e-01, +7.9104739533119445e-02, +2.6433148031204251e-02, +6.6082690768705906e-03, +1.2215096671021977e-03, +1.6440051124820763e-04, +1.5793956173446348e-05, +1.0556630385602033e-06, +4.7476455547314095e-08, +1.3742166774424460e-09, +2.4094891730959752e-11, +2.3480585102103185e-13, +1.1174227957300119e-15, +2.1005883869494762e-18, +1.0444732401725871e-21, +5.0180752692698952e-26, + +3.9130397408272694e-01, +3.0322229252021565e-01, +1.8176831110517649e-01, +8.4001039948325432e-02, +2.9767244441382214e-02, +8.0286850035604113e-03, +1.6319828251932273e-03, +2.4684151322487875e-04, +2.7333196978369716e-05, +2.1703986095318892e-06, +1.2035140659893825e-07, +4.5029695793209629e-09, +1.0862939294794203e-10, +1.5883441401039689e-12, +1.2895813049708617e-14, +5.0973075787523842e-17, +7.9075044204715010e-20, +3.2031736699482299e-23, +1.2172039136849715e-27, + +3.8211801932398098e-01, +2.9984222352714129e-01, +1.8435315834012161e-01, +8.8549110404553627e-02, +3.3075688285138807e-02, +9.5470897636467222e-03, +2.1117580338036305e-03, +3.5414585759848034e-04, +4.4423542864951672e-05, +4.0977948721629217e-06, +2.7206848431497516e-07, +1.2651794377097727e-08, +3.9782370520555256e-10, +8.0752771633903726e-12, +9.9361770583955663e-14, +6.7797068864966500e-16, +2.2445504136542276e-18, +2.8972188631031838e-21, +9.6409358804016256e-25, +2.9236797477388334e-29, + +3.7354869772403904e-01, +2.9646910879859129e-01, +1.8650753720919128e-01, +9.2765483582315497e-02, +3.6336180231103146e-02, +1.1147849122436932e-02, +2.6597718111442863e-03, +4.8905337817380372e-04, +6.8514755458217144e-05, +7.2106204226087590e-06, +5.6008898522734312e-07, +3.1408112827615208e-08, +1.2364837913810998e-09, +3.2968179518363160e-11, +5.6788001330617536e-13, +5.9277568359646953e-15, +3.4256354220559639e-17, +9.5710836993052230e-20, +1.0356140658899054e-22, +2.8523956917266094e-26, +6.9596835174689164e-31, + +3.6553011371946231e-01, +2.9312288834281841e-01, +1.8828943358993128e-01, +9.6668454590768463e-02, +3.9531361667655203e-02, +1.2815980436689405e-02, +3.2737594536686007e-03, +6.5380594526582214e-04, +1.0110048687004475e-04, +1.1961012995742855e-05, +1.0668304325616616e-06, +7.0441602788046541e-08, +3.3660916108090524e-09, +1.1313130408204488e-10, +2.5781296319278107e-12, +3.7970360820092867e-14, +3.3868542207148304e-16, +1.6693353963053630e-18, +3.9630311999855163e-21, +3.6189621414024282e-24, +8.3072697216188933e-28, +1.6430501786349221e-32, + +3.5800580619470224e-01, +2.8981803207491413e-01, +1.8974838445154743e-01, +1.0027705660218360e-01, +4.2648028294714431e-02, +1.4537458961986797e-02, +3.9505207413261072e-03, +8.5011717981626621e-04, +1.4366505225061130e-04, +1.8873197643040382e-05, +1.9035156699551580e-06, +1.4516963726858872e-07, +8.2164449617053346e-09, +3.3722125814057582e-10, +9.7482259264857162e-12, +1.9122727690869887e-13, +2.4244888308603273e-15, +1.8600707015402171e-17, +7.8690901804095408e-20, +1.5972254521067973e-22, +1.2385719396147015e-25, +2.3844925442657878e-29, +3.8493292540923028e-34, + +3.5092708362373221e-01, +2.8656491398635237e-01, +1.9092680112285854e-01, +1.0361036709912053e-01, +4.5676424200182683e-02, +1.6299393710703856e-02, +4.6861642235208030e-03, +1.0791731692543769e-03, +1.9763609835222678e-04, +2.8532184648493629e-05, +3.2127873910852268e-06, +2.7855833791199193e-07, +1.8308111492627642e-08, +8.9485743068727498e-10, +3.1767219624927134e-11, +7.9516119169429805e-13, +1.3513354549314233e-14, +1.4839987196129436e-16, +9.8509302193979142e-19, +3.5977098324746188e-21, +6.2789532895984159e-24, +4.1581179428373256e-27, +6.7529122862707464e-31, +8.9543109477517401e-36, + +3.4425170398488636e-01, +2.8337082649988776e-01, +1.9186108071620300e-01, +1.0668704906340193e-01, +4.8609625728486129e-02, +1.8090108309699284e-02, +5.4763217938706820e-03, +1.3416561239574158e-03, +2.6434526573379763e-04, +4.1569703514690922e-05, +5.1698753178987693e-06, +5.0292197616776470e-07, +3.7764519536704563e-08, +2.1541215787780342e-09, +9.1532734246208986e-11, +2.8284578722532820e-12, +6.1676573740107623e-14, +9.1333964936011630e-16, +8.7363436324031306e-18, +5.0449656143360147e-20, +1.5990188955830168e-22, +2.4120891015221532e-25, +1.3712561517848866e-28, +1.8886829319168770e-32, +2.0692150011539962e-37, + +3.3794281831211437e-01, +2.8024073546098432e-01, +1.9258253664230973e-01, +1.0952505818221495e-01, +5.1443013966369251e-02, +1.9899155012384467e-02, +6.3163306227402025e-03, +1.6377836829106235e-03, +3.4499769531939000e-04, +5.8648633425770045e-05, +7.9822676287387412e-06, +8.6158159056191463e-07, +7.2919305786010736e-08, +4.7737982856558615e-09, +2.3782159601959589e-10, +8.8381931671955866e-12, +2.3909835074532958e-13, +4.5669756896372288e-15, +5.9243423891952970e-17, +4.9611413029243299e-19, +2.5046563890060752e-21, +6.9230353804790649e-24, +9.0697778108407137e-27, +4.4476138376213146e-30, +5.2211960259687506e-34, +4.7522163234420851e-39, + +3.3196811795916797e-01, +2.7717784627086350e-01, +1.9311817671143119e-01, +1.1214146659976469e-01, +5.4173829278283167e-02, +2.1717283483241989e-02, +7.2013828893609513e-03, +1.9673577634472727e-03, +4.4065031364698225e-04, +8.0447056193944704e-05, +1.1887976024248379e-05, +1.4102595988863506e-06, +1.3299289524291626e-07, +9.8546372097326664e-09, +5.6585279982455109e-10, +2.4761135152376546e-11, +8.0919962956343983e-13, +1.9265276469394000e-14, +3.2395644735553757e-16, +3.6991112272006689e-18, +2.7246881477213788e-20, +1.2080980930422961e-22, +2.9251392406309606e-25, +3.3429672492020109e-28, +1.4203821086453334e-31, +1.4277608134851950e-35, +1.0851136987196605e-40, + +3.2629914080686934e-01, +2.7418403121591522e-01, +1.9349135384672128e-01, +1.1455236779916420e-01, +5.6800798959136672e-02, +2.3536380515071280e-02, +8.1266456989688568e-03, +2.3298181360809985e-03, +5.5219822553578704e-04, +1.0764284892273721e-04, +1.7152583673214982e-05, +2.2181151846596210e-06, +2.3080391657036210e-07, +1.9130906282643374e-08, +1.2482138218979068e-09, +6.3205006410821946e-11, +2.4420298304472757e-12, +7.0528726336758567e-14, +1.4847846385026617e-15, +2.2081547314362957e-17, +2.2293012712626885e-19, +1.4505724806862015e-21, +5.6724748192019088e-24, +1.2081232562612244e-26, +1.2093961010872282e-29, +4.4708121318609240e-33, +3.8646806884574510e-37, +2.4643207251964564e-42, + +3.2091070260471899e-01, +2.7126015390759434e-01, +1.9372231080136831e-01, +1.1677283731866922e-01, +5.9323828445470898e-02, +2.5349392478457165e-02, +9.0873545403086370e-03, +2.7242971132887413e-03, +6.8036819444262659e-04, +1.4089949985735000e-04, +2.4065325529694293e-05, +3.3683591904564624e-06, +3.8347678623247262e-07, +3.5200066343932804e-08, +2.5784329171251308e-09, +1.4890103967540035e-10, +6.6820102338953568e-12, +2.2903165842743183e-13, +5.8723917058983836e-15, +1.0979718124159402e-16, +1.4502656885515038e-18, +1.2998534256895677e-20, +7.5014959155146296e-23, +2.5973065268494646e-25, +4.8845679074858355e-28, +4.2994974135956300e-31, +1.3882300680633443e-34, +1.0361288228040763e-38, +5.5680352918588278e-44, + +3.1578042765949238e-01, +2.6840631685517313e-01, +1.9382863687099960e-01, +1.1881693127749456e-01, +6.1743746844779984e-02, +2.7150238923080394e-02, +1.0078883978552689e-02, +3.1496727855870829e-03, +8.2571803671126003e-04, +1.8085360541258893e-04, +3.2934475587777893e-05, +4.9584218331236953e-06, +6.1310664099141697e-07, +6.1785017606854071e-08, +5.0289859710017596e-09, +3.2715763079828753e-10, +1.6801084533762248e-11, +6.7120850712329025e-13, +2.0498413262850772e-14, +4.6855314259072089e-16, +7.8120487098049794e-18, +9.2003980457468935e-20, +7.3486452176672533e-22, +3.7752824470360482e-24, +1.1615602816842657e-26, +1.9358169994612708e-29, +1.5036325048276650e-32, +4.2558250249436302e-36, +2.7529603514345679e-40, +1.2520351346822822e-45, + +3.1088835901770417e-01, +2.6562205119893828e-01, +1.9382565158599319e-01, +1.2069770990611951e-01, +6.4062098330091646e-02, +2.8933723190107209e-02, +1.1096799233588306e-02, +3.6046190917707753e-03, +9.8864073763996327e-04, +2.2810430848881909e-04, +4.4082312968263375e-05, +7.0996778628839258e-06, +9.4734617519597147e-07, +1.0402046551304455e-07, +9.3247728369681139e-09, +6.7620297828389661e-10, +3.9244392817292199e-11, +1.8000072378314520e-12, +6.4284832978960700e-14, +1.7562292529450302e-15, +3.5926337638018172e-17, +5.3612722742496849e-19, +5.6502164272837441e-21, +4.0359700176457077e-23, +1.8521346940051287e-25, +5.0810055281854111e-28, +7.5291225128713794e-31, +5.1779710958942424e-34, +1.2890636290348067e-37, +7.2526085391619564e-42, +2.8025709293189409e-47, +}; + +#ifdef HAVE_QUADMATH_H +//#include +#endif +#define PIE4 0.78539816339744827900 +#define THRESHOLD_ZERO (DBL_EPSILON * 8) +#define SMALLX_LIMIT 3e-7 + +static int rys_root1(dtype x, dtype *roots, dtype *weights); +static int rys_root2(dtype x, dtype *roots, dtype *weights); +static int rys_root3(dtype x, dtype *roots, dtype *weights); +static int rys_root4(dtype x, dtype *roots, dtype *weights); +static int rys_root5(dtype x, dtype *roots, dtype *weights); +typedef int QuadratureFunction(int n, dtype x, dtype lower, dtype *roots, dtype *weights); +#ifndef HAVE_QUADMATH_H +#define CINTqrys_schmidt CINTlrys_schmidt +#define CINTqrys_laguerre CINTlrys_laguerre +#define CINTqrys_jacobi CINTlrys_jacobi +#endif + +int _CINT_polynomial_roots(dtype *roots, dtype *cs, int nroots){return 0;} + +static int segment_solve(int n, dtype x, dtype lower, dtype *u, dtype *w, + dtype breakpoint, QuadratureFunction fn1, QuadratureFunction fn2) +{ + int error; + if (x <= breakpoint) { + error = fn1(n, x, lower, u, w); + } else { + error = fn2(n, x, lower, u, w); + } + if (error) { + error = CINTqrys_schmidt(n, x, lower, u, w); + } + return error; +} + +void CINTrys_roots(int nroots, dtype x, dtype *u, dtype *w) +{ + if (x <= SMALLX_LIMIT) { + int off = nroots * (nroots - 1) / 2; + int i; + for (i = 0; i < nroots; i++) { + u[i] = POLY_SMALLX_R0[off+i] + POLY_SMALLX_R1[off+i] * x; + w[i] = POLY_SMALLX_W0[off+i] + POLY_SMALLX_W1[off+i] * x; + } + return; + } else if (x >= 35+nroots*5) { + int off = nroots * (nroots - 1) / 2; + int i; + dtype rt; + dtype t = sqrt(PIE4/x); + for (i = 0; i < nroots; i++) { + rt = POLY_LARGEX_RT[off+i]; + u[i] = rt / (x - rt); + w[i] = POLY_LARGEX_WW[off+i] * t; + } + return; + } + + int err; + switch (nroots) { + case 1: + err = rys_root1(x, u, w); + break; + case 2: + err = rys_root2(x, u, w); + break; + case 3: + err = rys_root3(x, u, w); + break; + /*case 4: + err = rys_root4(x, u, w); + break; + case 5: + err = rys_root5(x, u, w); + break; + case 6: case 7: + err = segment_solve(nroots, x, 0., u, w, 11, CINTrys_jacobi, CINTrys_schmidt); + break; + case 8: + err = segment_solve(nroots, x, 0., u, w, 11, CINTrys_jacobi, CINTlrys_schmidt); + break; + case 9: + err = segment_solve(nroots, x, 0., u, w, 10, CINTlrys_jacobi, CINTlrys_laguerre); + break; + case 10: case 11: + err = segment_solve(nroots, x, 0., u, w, 18, CINTlrys_jacobi, CINTlrys_laguerre); + break; + case 12: + err = segment_solve(nroots, x, 0., u, w, 22, CINTlrys_jacobi, CINTlrys_laguerre); + break; + default: + err = segment_solve(nroots, x, 0., u, w, 50, CINTqrys_jacobi, CINTqrys_laguerre); + */} + if (err) { + //fprintf(stderr, "rys_roots fails: nroots=%d x=%g\n", + // nroots, x); +#ifndef KEEP_GOING + exit(err); +#endif + } +} + + +static int segment_solve1(int n, dtype x, dtype lower, dtype *u, dtype *w, + dtype lower_bp1, dtype lower_bp2, dtype breakpoint, + QuadratureFunction fn1, QuadratureFunction fn2, QuadratureFunction fn3) +{ + int error; + if (lower < lower_bp1) { + if (x <= breakpoint) { + error = fn1(n, x, lower, u, w); + } else { + error = fn2(n, x, lower, u, w); + } + } else if (lower < lower_bp2) { + error = fn3(n, x, lower, u, w); + } else { + return 1; + } + if (error) { + error = CINTqrys_schmidt(n, x, lower, u, w); + } + return error; +} + +void CINTsr_rys_roots(int nroots, dtype x, dtype lower, dtype *u, dtype *w) +{ + int err = 1; + switch (nroots) { + case 1: + err = CINTrys_schmidt(nroots, x, lower, u, w); + break; + case 2: + if (lower < 0.99) { + err = CINTrys_schmidt(nroots, x, lower, u, w); + } else { + err = CINTqrys_jacobi(nroots, x, lower, u, w); + } + break; + case 3: +#ifdef WITH_POLYNOMIAL_FIT + if (lower < 0.6) { + err = CINTsr_rys_polyfits(nroots, x, lower, u, w); + if (err == 0) { + break;; + } + } +#endif + if (lower < 0.93) { + err = CINTrys_schmidt(nroots, x, lower, u, w); + } else if (lower < 0.97) { + err = segment_solve(nroots, x, lower, u, w, 10, CINTlrys_jacobi, CINTlrys_laguerre); + } else { + err = CINTqrys_jacobi(nroots, x, lower, u, w); + } + break; + case 4: +#ifdef WITH_POLYNOMIAL_FIT + if (lower < 0.6) { + err = CINTsr_rys_polyfits(nroots, x, lower, u, w); + if (err == 0) { + break;; + } + } +#endif + if (lower < 0.8) { + err = CINTrys_schmidt(nroots, x, lower, u, w); + } else if (lower < 0.9) { + err = segment_solve(nroots, x, lower, u, w, 10, CINTlrys_jacobi, CINTlrys_laguerre); + } else { + err = CINTqrys_jacobi(nroots, x, lower, u, w); + } + break; + case 5: +#ifdef WITH_POLYNOMIAL_FIT + if (lower < 0.6) { + err = CINTsr_rys_polyfits(nroots, x, lower, u, w); + if (err == 0) { + break;; + } + } +#endif + if (lower < 0.4) { + err = segment_solve(nroots, x, lower, u, w, 50, CINTrys_schmidt, CINTlrys_laguerre); + } else if (lower < 0.8) { + err = segment_solve(nroots, x, lower, u, w, 10, CINTlrys_jacobi, CINTlrys_laguerre); + } else { + err = CINTqrys_jacobi(nroots, x, lower, u, w); + } + break; + case 6: + if (lower < 0.25) { + err = segment_solve(nroots, x, lower, u, w, 60, CINTrys_schmidt, CINTlrys_laguerre); + } else if (lower < 0.8) { + err = segment_solve(nroots, x, lower, u, w, 10, CINTlrys_jacobi, CINTlrys_laguerre); + } else { + err = CINTqrys_jacobi(nroots, x, lower, u, w); + } + break; + case 7: + err = segment_solve1(nroots, x, lower, u, w, 0.5, 1., 60, CINTlrys_jacobi, CINTlrys_laguerre, CINTqrys_jacobi); + break; + case 8: case 9: case 10: + + err = segment_solve1(nroots, x, lower, u, w, 0.15, 1., 60, CINTqrys_jacobi, CINTqrys_laguerre, CINTqrys_jacobi); + break; + case 11: case 12: + err = segment_solve1(nroots, x, lower, u, w, 0.15, 1., 60, CINTqrys_jacobi, CINTqrys_laguerre, CINTqrys_jacobi); + break; + case 13: case 14: + err = segment_solve1(nroots, x, lower, u, w, 0.25, 1., 60, CINTqrys_jacobi, CINTqrys_laguerre, CINTqrys_jacobi); + break; + case 15: case 16: + err = segment_solve1(nroots, x, lower, u, w, 0.25, 0.75, 60, CINTqrys_jacobi, CINTqrys_laguerre, CINTqrys_jacobi); + break; + case 17: + segment_solve1(nroots, x, lower, u, w, 0.25, 0.65, 60, CINTqrys_jacobi, CINTqrys_laguerre, CINTqrys_jacobi); + break; + case 18: + segment_solve1(nroots, x, lower, u, w, 0.15, 0.65, 60, CINTqrys_jacobi, CINTqrys_laguerre, CINTqrys_jacobi); + break; + case 19: + err = segment_solve1(nroots, x, lower, u, w, 0.15, 0.55, 60, CINTqrys_jacobi, CINTqrys_laguerre, CINTqrys_jacobi); + break; + case 20: case 21: + err = segment_solve1(nroots, x, lower, u, w, 0.25, 0.45, 60, CINTqrys_jacobi, CINTqrys_laguerre, CINTqrys_jacobi); + break; + case 22: case 23: case 24: + err = segment_solve1(nroots, x, lower, u, w, 0.25, 0.35, 60, CINTqrys_jacobi, CINTqrys_laguerre, CINTqrys_jacobi); + break; + default: + //fprintf(stderr, "libcint SR-rys_roots does not support nroots=%d\n", nroots); +#ifndef KEEP_GOING + exit(1); +#endif + } + if (err) { + //fprintf(stderr, "sr_rys_roots fails: nroots=%d x=%.15g lower=%.15g\n", + // nroots, x, lower); +#ifndef KEEP_GOING + exit(err); +#endif + } +} + +static int rys_root1(dtype X, dtype *roots, dtype *weights) +{ + dtype Y, F1; + + if (X > 33.) { + weights[0] = sqrt(PIE4/X); + roots[0] = 0.5E+00/(X-0.5E+00); + return 0; + } else if (X < 3.e-7) { + weights[0] = 1.0E+00 -X/3.0E+00; + roots[0] = 0.5E+00 -X/5.0E+00; + return 0; + } + + dtype E = exp(-X); + if (X > 15.) { + Y = 1./X; + F1 = ((( 1.9623264149430E-01*Y-4.9695241464490E-01)*Y - + 6.0156581186481E-05)* E + sqrt(PIE4/X) - E)*Y; + F1 *= .5; + } else if (X > 10.) { + Y = 1./X; + F1 = ((((-1.8784686463512E-01*Y+2.2991849164985E-01)*Y - + 4.9893752514047E-01)*Y-2.1916512131607E-05)* E + + sqrt(PIE4/X) - E)*Y; + F1 *= .5; + } else if (X > 5.) { + Y = 1./X; + F1 = ((((((( 4.6897511375022E-01*Y-6.9955602298985E-01)*Y + + 5.3689283271887E-01)*Y-3.2883030418398E-01)*Y + + 2.4645596956002E-01)*Y-4.9984072848436E-01)*Y - + 3.1501078774085E-06)* E + sqrt(PIE4/X) - E)*Y; + F1 *= .5; + } else if (X > 3.){ + Y = X-4.0E+00; + F1 = ((((((((((-2.62453564772299E-11*Y+3.24031041623823E-10 )*Y- + 3.614965656163E-09)*Y+3.760256799971E-08)*Y- + 3.553558319675E-07)*Y+3.022556449731E-06)*Y- + 2.290098979647E-05)*Y+1.526537461148E-04)*Y- + 8.81947375894379E-04 )*Y+4.33207949514611E-03 )*Y- + 1.75257821619926E-02 )*Y+5.28406320615584E-02; + } else if (X > 1.) { + Y = X-2.0E+00; + F1 = ((((((((((-1.61702782425558E-10*Y+1.96215250865776E-09 )*Y- + 2.14234468198419E-08 )*Y+2.17216556336318E-07 )*Y- + 1.98850171329371E-06 )*Y+1.62429321438911E-05 )*Y- + 1.16740298039895E-04 )*Y+7.24888732052332E-04 )*Y- + 3.79490003707156E-03 )*Y+1.61723488664661E-02 )*Y- + 5.29428148329736E-02 )*Y+1.15702180856167E-01; + } else { + F1 = ((((((((-8.36313918003957E-08*X+1.21222603512827E-06 )*X- + 1.15662609053481E-05 )*X+9.25197374512647E-05 )*X- + 6.40994113129432E-04 )*X+3.78787044215009E-03 )*X- + 1.85185172458485E-02 )*X+7.14285713298222E-02 )*X- + 1.99999999997023E-01 )*X+3.33333333333318E-01; + } + + dtype WW1 = 2. * X * F1 + E; + weights[0] = WW1; + roots[0] = F1 / (WW1 - F1); + return 0; +} + +static int rys_root2(dtype X, dtype *roots, dtype *weights) +{ + + dtype R12, R22, W22; + dtype RT1, RT2, WW1, WW2; + dtype F1, E, Y; + + R12 = 2.75255128608411E-01; + R22 = 2.72474487139158E+00; + W22 = 9.17517095361369E-02; + + if (X < 3.e-7){ + RT1 = 1.30693606237085E-01 -2.90430236082028E-02 *X; + RT2 = 2.86930639376291E+00 -6.37623643058102E-01 *X; + WW1 = 6.52145154862545E-01 -1.22713621927067E-01 *X; + WW2 = 3.47854845137453E-01 -2.10619711404725E-01 *X; + } else if (X < 1.) { + F1 = ((((((((-8.36313918003957E-08*X+1.21222603512827E-06 )*X- + 1.15662609053481E-05 )*X+9.25197374512647E-05 )*X- + 6.40994113129432E-04 )*X+3.78787044215009E-03 )*X- + 1.85185172458485E-02 )*X+7.14285713298222E-02 )*X- + 1.99999999997023E-01 )*X+3.33333333333318E-01; + WW1 = (X+X)*F1+exp(-X); + RT1 = (((((((-2.35234358048491E-09*X+2.49173650389842E-08)*X- + 4.558315364581E-08)*X-2.447252174587E-06)*X+ + 4.743292959463E-05)*X-5.33184749432408E-04 )*X+ + 4.44654947116579E-03 )*X-2.90430236084697E-02 )*X+ + 1.30693606237085E-01; + RT2 = (((((((-2.47404902329170E-08*X+2.36809910635906E-07)*X+ + 1.835367736310E-06)*X-2.066168802076E-05)*X- + 1.345693393936E-04)*X-5.88154362858038E-05 )*X+ + 5.32735082098139E-02 )*X-6.37623643056745E-01 )*X+ + 2.86930639376289E+00; + WW2 = ((F1-WW1)*RT1+F1)*(1.0E+00+RT2)/(RT2-RT1); + WW1 = WW1-WW2; + } else if (X < 3.) { + Y = X-2.0E+00; + F1 = ((((((((((-1.61702782425558E-10*Y+1.96215250865776E-09 )*Y- + 2.14234468198419E-08 )*Y+2.17216556336318E-07 )*Y- + 1.98850171329371E-06 )*Y+1.62429321438911E-05 )*Y- + 1.16740298039895E-04 )*Y+7.24888732052332E-04 )*Y- + 3.79490003707156E-03 )*Y+1.61723488664661E-02 )*Y- + 5.29428148329736E-02 )*Y+1.15702180856167E-01; + WW1 = (X+X)*F1+exp(-X); + RT1 = (((((((((-6.36859636616415E-12*Y+8.47417064776270E-11)*Y- + 5.152207846962E-10)*Y-3.846389873308E-10)*Y+ + 8.472253388380E-08)*Y-1.85306035634293E-06 )*Y+ + 2.47191693238413E-05 )*Y-2.49018321709815E-04 )*Y+ + 2.19173220020161E-03 )*Y-1.63329339286794E-02 )*Y+ + 8.68085688285261E-02; + RT2 = ((((((((( 1.45331350488343E-10*Y+2.07111465297976E-09)*Y- + 1.878920917404E-08)*Y-1.725838516261E-07)*Y+ + 2.247389642339E-06)*Y+9.76783813082564E-06 )*Y- + 1.93160765581969E-04 )*Y-1.58064140671893E-03 )*Y+ + 4.85928174507904E-02 )*Y-4.30761584997596E-01 )*Y+ + 1.80400974537950E+00; + WW2 = ((F1-WW1)*RT1+F1)*(1.0E+00+RT2)/(RT2-RT1); + WW1 = WW1-WW2; + } else if (X < 5.){ + Y = X-4.0E+00; + F1 = ((((((((((-2.62453564772299E-11*Y+3.24031041623823E-10 )*Y- + 3.614965656163E-09)*Y+3.760256799971E-08)*Y- + 3.553558319675E-07)*Y+3.022556449731E-06)*Y- + 2.290098979647E-05)*Y+1.526537461148E-04)*Y- + 8.81947375894379E-04 )*Y+4.33207949514611E-03 )*Y- + 1.75257821619926E-02 )*Y+5.28406320615584E-02; + WW1 = (X+X)*F1+exp(-X); + RT1 = ((((((((-4.11560117487296E-12*Y+7.10910223886747E-11)*Y- + 1.73508862390291E-09 )*Y+5.93066856324744E-08 )*Y- + 9.76085576741771E-07 )*Y+1.08484384385679E-05 )*Y- + 1.12608004981982E-04 )*Y+1.16210907653515E-03 )*Y- + 9.89572595720351E-03 )*Y+6.12589701086408E-02; + RT2 = (((((((((-1.80555625241001E-10*Y+5.44072475994123E-10)*Y+ + 1.603498045240E-08)*Y-1.497986283037E-07)*Y- + 7.017002532106E-07)*Y+1.85882653064034E-05 )*Y- + 2.04685420150802E-05 )*Y-2.49327728643089E-03 )*Y+ + 3.56550690684281E-02 )*Y-2.60417417692375E-01 )*Y+ + 1.12155283108289E+00; + WW2 = ((F1-WW1)*RT1+F1)*(1.0E+00+RT2)/(RT2-RT1); + WW1 = WW1-WW2; + } else if (X < 10) { + E = exp(-X); + WW1 = (((((( 4.6897511375022E-01/X-6.9955602298985E-01)/X + + 5.3689283271887E-01)/X-3.2883030418398E-01)/X + + 2.4645596956002E-01)/X-4.9984072848436E-01)/X - + 3.1501078774085E-06)*E + sqrt(PIE4/X); + F1 = (WW1-E)/(X+X); + Y = X-7.5E+00; + RT1 = (((((((((((((-1.43632730148572E-16*Y+2.38198922570405E-16)* + Y+1.358319618800E-14)*Y-7.064522786879E-14)*Y- + 7.719300212748E-13)*Y+7.802544789997E-12)*Y+ + 6.628721099436E-11)*Y-1.775564159743E-09)*Y+ + 1.713828823990E-08)*Y-1.497500187053E-07)*Y+ + 2.283485114279E-06)*Y-3.76953869614706E-05 )*Y+ + 4.74791204651451E-04 )*Y-4.60448960876139E-03 )*Y+ + 3.72458587837249E-02; + RT2 = (((((((((((( 2.48791622798900E-14*Y-1.36113510175724E-13)*Y- + 2.224334349799E-12)*Y+4.190559455515E-11)*Y- + 2.222722579924E-10)*Y-2.624183464275E-09)*Y+ + 6.128153450169E-08)*Y-4.383376014528E-07)*Y- + 2.49952200232910E-06 )*Y+1.03236647888320E-04 )*Y- + 1.44614664924989E-03 )*Y+1.35094294917224E-02 )*Y- + 9.53478510453887E-02 )*Y+5.44765245686790E-01; + WW2 = ((F1-WW1)*RT1+F1)*(1.0E+00+RT2)/(RT2-RT1); + WW1 = WW1-WW2; + } else if (X < 15) { + E = exp(-X); + WW1 = (((-1.8784686463512E-01/X+2.2991849164985E-01)/X - + 4.9893752514047E-01)/X-2.1916512131607E-05)*E + + sqrt(PIE4/X); + F1 = (WW1-E)/(X+X); + RT1 = ((((-1.01041157064226E-05*X+1.19483054115173E-03)*X - + 6.73760231824074E-02)*X+1.25705571069895E+00)*X + + (((-8.57609422987199E+03/X+5.91005939591842E+03)/X - + 1.70807677109425E+03)/X+2.64536689959503E+02)/X - + 2.38570496490846E+01)*E + R12/(X-R12); + RT2 = ((( 3.39024225137123E-04*X-9.34976436343509E-02)*X - + 4.22216483306320E+00)*X + + (((-2.08457050986847E+03/X - + 1.04999071905664E+03)/X+3.39891508992661E+02)/X - + 1.56184800325063E+02)/X+8.00839033297501E+00)*E + R22/(X-R22); + WW2 = ((F1-WW1)*RT1+F1)*(1.0E+00+RT2)/(RT2-RT1); + WW1 = WW1-WW2; + } else if (X < 33) { + E = exp(-X); + WW1 = (( 1.9623264149430E-01/X-4.9695241464490E-01)/X - + 6.0156581186481E-05)*E + sqrt(PIE4/X); + F1 = (WW1-E)/(X+X); + RT1 = ((((-1.14906395546354E-06*X+1.76003409708332E-04)*X - + 1.71984023644904E-02)*X-1.37292644149838E-01)*X + + (-4.75742064274859E+01/X+9.21005186542857E+00)/X - + 2.31080873898939E-02)*E + R12/(X-R12); + RT2 = ((( 3.64921633404158E-04*X-9.71850973831558E-02)*X - + 4.02886174850252E+00)*X + + (-1.35831002139173E+02/X - + 8.66891724287962E+01)/X+2.98011277766958E+00)*E + R22/(X-R22); + WW2 = ((F1-WW1)*RT1+F1)*(1.0E+00+RT2)/(RT2-RT1); + WW1 = WW1-WW2; + } else if (X < 40) { + WW1 = sqrt(PIE4/X); + E = exp(-X); + RT1 = (-8.78947307498880E-01*X+1.09243702330261E+01)*E + R12/(X-R12); + RT2 = (-9.28903924275977E+00*X+8.10642367843811E+01)*E + R22/(X-R22); + WW2 = ( 4.46857389308400E+00*X-7.79250653461045E+01)*E + W22*WW1; + WW1 = WW1-WW2; + } else { + WW1 = sqrt(PIE4/X); + RT1 = R12/(X-R12); + RT2 = R22/(X-R22); + WW2 = W22*WW1; + WW1 = WW1-WW2; + } + roots[0] = RT1; + roots[1] = RT2; + weights[0] = WW1; + weights[1] = WW2; + return 0; +} + +static int rys_root3(dtype X, dtype *roots, dtype *weights) +{ + + dtype R13, R23, W23, R33, W33; + dtype RT1, RT2, RT3, WW1, WW2, WW3; + dtype F1, F2, E, T1, T2, T3, A1, A2, Y; + + R13 = 1.90163509193487E-01; + R23 = 1.78449274854325E+00; + W23 = 1.77231492083829E-01; + R33 = 5.52534374226326E+00; + W33 = 5.11156880411248E-03; + + if (X < 3.e-7){ + RT1 = 6.03769246832797E-02 -9.28875764357368E-03 *X; + RT2 = 7.76823355931043E-01 -1.19511285527878E-01 *X; + RT3 = 6.66279971938567E+00 -1.02504611068957E+00 *X; + WW1 = 4.67913934572691E-01 -5.64876917232519E-02 *X; + WW2 = 3.60761573048137E-01 -1.49077186455208E-01 *X; + WW3 = 1.71324492379169E-01 -1.27768455150979E-01 *X; + } else if (X < 1.) { + RT1 = ((((((-5.10186691538870E-10*X+2.40134415703450E-08)*X- + 5.01081057744427E-07 )*X+7.58291285499256E-06 )*X- + 9.55085533670919E-05 )*X+1.02893039315878E-03 )*X- + 9.28875764374337E-03 )*X+6.03769246832810E-02; + RT2 = ((((((-1.29646524960555E-08*X+7.74602292865683E-08)*X+ + 1.56022811158727E-06 )*X-1.58051990661661E-05 )*X- + 3.30447806384059E-04 )*X+9.74266885190267E-03 )*X- + 1.19511285526388E-01 )*X+7.76823355931033E-01; + RT3 = ((((((-9.28536484109606E-09*X-3.02786290067014E-07)*X- + 2.50734477064200E-06 )*X-7.32728109752881E-06 )*X+ + 2.44217481700129E-04 )*X+4.94758452357327E-02 )*X- + 1.02504611065774E+00 )*X+6.66279971938553E+00; + F2 = ((((((((-7.60911486098850E-08*X+1.09552870123182E-06 )*X- + 1.03463270693454E-05 )*X+8.16324851790106E-05 )*X- + 5.55526624875562E-04 )*X+3.20512054753924E-03 )*X- + 1.51515139838540E-02 )*X+5.55555554649585E-02 )*X- + 1.42857142854412E-01 )*X+1.99999999999986E-01; + E = exp(-X); + F1 = ((X+X)*F2+E)/3.0E+00; + WW1 = (X+X)*F1+E; + T1 = RT1/(RT1+1.0E+00); + T2 = RT2/(RT2+1.0E+00); + T3 = RT3/(RT3+1.0E+00); + A2 = F2-T1*F1; + A1 = F1-T1*WW1; + WW3 = (A2-T2*A1)/((T3-T2)*(T3-T1)); + WW2 = (T3*A1-A2)/((T3-T2)*(T2-T1)); + WW1 = WW1-WW2-WW3; + } else if (X < 3.) { + Y = X-2.0E+00; + RT1 = (((((((( 1.44687969563318E-12*Y+4.85300143926755E-12)*Y- + 6.55098264095516E-10 )*Y+1.56592951656828E-08 )*Y- + 2.60122498274734E-07 )*Y+3.86118485517386E-06 )*Y- + 5.13430986707889E-05 )*Y+6.03194524398109E-04 )*Y- + 6.11219349825090E-03 )*Y+4.52578254679079E-02; + RT2 = ((((((( 6.95964248788138E-10*Y-5.35281831445517E-09)*Y- + 6.745205954533E-08)*Y+1.502366784525E-06)*Y+ + 9.923326947376E-07)*Y-3.89147469249594E-04 )*Y+ + 7.51549330892401E-03 )*Y-8.48778120363400E-02 )*Y+ + 5.73928229597613E-01; + RT3 = ((((((((-2.81496588401439E-10*Y+3.61058041895031E-09)*Y+ + 4.53631789436255E-08 )*Y-1.40971837780847E-07 )*Y- + 6.05865557561067E-06 )*Y-5.15964042227127E-05 )*Y+ + 3.34761560498171E-05 )*Y+5.04871005319119E-02 )*Y- + 8.24708946991557E-01 )*Y+4.81234667357205E+00; + F2 = ((((((((((-1.48044231072140E-10*Y+1.78157031325097E-09 )*Y- + 1.92514145088973E-08 )*Y+1.92804632038796E-07 )*Y- + 1.73806555021045E-06 )*Y+1.39195169625425E-05 )*Y- + 9.74574633246452E-05 )*Y+5.83701488646511E-04 )*Y- + 2.89955494844975E-03 )*Y+1.13847001113810E-02 )*Y- + 3.23446977320647E-02 )*Y+5.29428148329709E-02; + E = exp(-X); + F1 = ((X+X)*F2+E)/3.0E+00; + WW1 = (X+X)*F1+E; + T1 = RT1/(RT1+1.0E+00); + T2 = RT2/(RT2+1.0E+00); + T3 = RT3/(RT3+1.0E+00); + A2 = F2-T1*F1; + A1 = F1-T1*WW1; + WW3 = (A2-T2*A1)/((T3-T2)*(T3-T1)); + WW2 = (T3*A1-A2)/((T3-T2)*(T2-T1)); + WW1 = WW1-WW2-WW3; + } else if (X < 5.){ + Y = X-4.0E+00; + RT1 = ((((((( 1.44265709189601E-11*Y-4.66622033006074E-10)*Y+ + 7.649155832025E-09)*Y-1.229940017368E-07)*Y+ + 2.026002142457E-06)*Y-2.87048671521677E-05 )*Y+ + 3.70326938096287E-04 )*Y-4.21006346373634E-03 )*Y+ + 3.50898470729044E-02; + RT2 = ((((((((-2.65526039155651E-11*Y+1.97549041402552E-10)*Y+ + 2.15971131403034E-09 )*Y-7.95045680685193E-08 )*Y+ + 5.15021914287057E-07 )*Y+1.11788717230514E-05 )*Y- + 3.33739312603632E-04 )*Y+5.30601428208358E-03 )*Y- + 5.93483267268959E-02 )*Y+4.31180523260239E-01; + RT3 = ((((((((-3.92833750584041E-10*Y-4.16423229782280E-09)*Y+ + 4.42413039572867E-08 )*Y+6.40574545989551E-07 )*Y- + 3.05512456576552E-06 )*Y-1.05296443527943E-04 )*Y- + 6.14120969315617E-04 )*Y+4.89665802767005E-02 )*Y- + 6.24498381002855E-01 )*Y+3.36412312243724E+00; + F2 = ((((((((((-2.36788772599074E-11*Y+2.89147476459092E-10 )*Y- + 3.18111322308846E-09 )*Y+3.25336816562485E-08 )*Y- + 3.00873821471489E-07 )*Y+2.48749160874431E-06 )*Y- + 1.81353179793672E-05 )*Y+1.14504948737066E-04 )*Y- + 6.10614987696677E-04 )*Y+2.64584212770942E-03 )*Y- + 8.66415899015349E-03 )*Y+1.75257821619922E-02; + E = exp(-X); + F1 = ((X+X)*F2+E)/3.0E+00; + WW1 = (X+X)*F1+E; + T1 = RT1/(RT1+1.0E+00); + T2 = RT2/(RT2+1.0E+00); + T3 = RT3/(RT3+1.0E+00); + A2 = F2-T1*F1; + A1 = F1-T1*WW1; + WW3 = (A2-T2*A1)/((T3-T2)*(T3-T1)); + WW2 = (T3*A1-A2)/((T3-T2)*(T2-T1)); + WW1 = WW1-WW2-WW3; + } else if (X < 10) { + E = exp(-X); + WW1 = (((((( 4.6897511375022E-01/X-6.9955602298985E-01)/X + + 5.3689283271887E-01)/X-3.2883030418398E-01)/X + + 2.4645596956002E-01)/X-4.9984072848436E-01)/X - + 3.1501078774085E-06)*E + sqrt(PIE4/X); + F1 = (WW1-E)/(X+X); + F2 = (F1+F1+F1-E)/(X+X); + Y = X-7.5E+00; + RT1 = ((((((((((( 5.74429401360115E-16*Y+7.11884203790984E-16)*Y- + 6.736701449826E-14)*Y-6.264613873998E-13)*Y+ + 1.315418927040E-11)*Y-4.23879635610964E-11 )*Y+ + 1.39032379769474E-09 )*Y-4.65449552856856E-08 )*Y+ + 7.34609900170759E-07 )*Y-1.08656008854077E-05 )*Y+ + 1.77930381549953E-04 )*Y-2.39864911618015E-03 )*Y+ + 2.39112249488821E-02; + RT2 = ((((((((((( 1.13464096209120E-14*Y+6.99375313934242E-15)*Y- + 8.595618132088E-13)*Y-5.293620408757E-12)*Y- + 2.492175211635E-11)*Y+2.73681574882729E-09 )*Y- + 1.06656985608482E-08 )*Y-4.40252529648056E-07 )*Y+ + 9.68100917793911E-06 )*Y-1.68211091755327E-04 )*Y+ + 2.69443611274173E-03 )*Y-3.23845035189063E-02 )*Y+ + 2.75969447451882E-01; + RT3 = (((((((((((( 6.66339416996191E-15*Y+1.84955640200794E-13)*Y- + 1.985141104444E-12)*Y-2.309293727603E-11)*Y+ + 3.917984522103E-10)*Y+1.663165279876E-09)*Y- + 6.205591993923E-08)*Y+8.769581622041E-09)*Y+ + 8.97224398620038E-06 )*Y-3.14232666170796E-05 )*Y- + 1.83917335649633E-03 )*Y+3.51246831672571E-02 )*Y- + 3.22335051270860E-01 )*Y+1.73582831755430E+00; + T1 = RT1/(RT1+1.0E+00); + T2 = RT2/(RT2+1.0E+00); + T3 = RT3/(RT3+1.0E+00); + A2 = F2-T1*F1; + A1 = F1-T1*WW1; + WW3 = (A2-T2*A1)/((T3-T2)*(T3-T1)); + WW2 = (T3*A1-A2)/((T3-T2)*(T2-T1)); + WW1 = WW1-WW2-WW3; + } else if (X < 15) { + E = exp(-X); + WW1 = (((-1.8784686463512E-01/X+2.2991849164985E-01)/X - + 4.9893752514047E-01)/X-2.1916512131607E-05)*E + + sqrt(PIE4/X); + F1 = (WW1-E)/(X+X); + F2 = (F1+F1+F1-E)/(X+X); + Y = X-12.5E+00; + RT1 = ((((((((((( 4.42133001283090E-16*Y-2.77189767070441E-15)*Y- + 4.084026087887E-14)*Y+5.379885121517E-13)*Y+ + 1.882093066702E-12)*Y-8.67286219861085E-11 )*Y+ + 7.11372337079797E-10 )*Y-3.55578027040563E-09 )*Y+ + 1.29454702851936E-07 )*Y-4.14222202791434E-06 )*Y+ + 8.04427643593792E-05 )*Y-1.18587782909876E-03 )*Y+ + 1.53435577063174E-02; + RT2 = ((((((((((( 6.85146742119357E-15*Y-1.08257654410279E-14)*Y- + 8.579165965128E-13)*Y+6.642452485783E-12)*Y+ + 4.798806828724E-11)*Y-1.13413908163831E-09 )*Y+ + 7.08558457182751E-09 )*Y-5.59678576054633E-08 )*Y+ + 2.51020389884249E-06 )*Y-6.63678914608681E-05 )*Y+ + 1.11888323089714E-03 )*Y-1.45361636398178E-02 )*Y+ + 1.65077877454402E-01; + RT3 = (((((((((((( 3.20622388697743E-15*Y-2.73458804864628E-14)*Y- + 3.157134329361E-13)*Y+8.654129268056E-12)*Y- + 5.625235879301E-11)*Y-7.718080513708E-10)*Y+ + 2.064664199164E-08)*Y-1.567725007761E-07)*Y- + 1.57938204115055E-06 )*Y+6.27436306915967E-05 )*Y- + 1.01308723606946E-03 )*Y+1.13901881430697E-02 )*Y- + 1.01449652899450E-01 )*Y+7.77203937334739E-01; + T1 = RT1/(RT1+1.0E+00); + T2 = RT2/(RT2+1.0E+00); + T3 = RT3/(RT3+1.0E+00); + A2 = F2-T1*F1; + A1 = F1-T1*WW1; + WW3 = (A2-T2*A1)/((T3-T2)*(T3-T1)); + WW2 = (T3*A1-A2)/((T3-T2)*(T2-T1)); + WW1 = WW1-WW2-WW3; + } else if (X < 33) { + E = exp(-X); + WW1 = (( 1.9623264149430E-01/X-4.9695241464490E-01)/X - + 6.0156581186481E-05)*E + sqrt(PIE4/X); + F1 = (WW1-E)/(X+X); + F2 = (F1+F1+F1-E)/(X+X); + if (X < 20) { + RT1 = ((((((-2.43270989903742E-06*X+3.57901398988359E-04)*X - + 2.34112415981143E-02)*X+7.81425144913975E-01)*X - + 1.73209218219175E+01)*X+2.43517435690398E+02)*X + + (-1.97611541576986E+04/X+9.82441363463929E+03)/X - + 2.07970687843258E+03)*E + R13/(X-R13); + RT2 = (((((-2.62627010965435E-04*X+3.49187925428138E-02)*X - + 3.09337618731880E+00)*X+1.07037141010778E+02)*X - + 2.36659637247087E+03)*X + + ((-2.91669113681020E+06/X + + 1.41129505262758E+06)/X-2.91532335433779E+05)/X + + 3.35202872835409E+04)*E + R23/(X-R23); + RT3 = ((((( 9.31856404738601E-05*X-2.87029400759565E-02)*X - + 7.83503697918455E-01)*X-1.84338896480695E+01)*X + + 4.04996712650414E+02)*X + + (-1.89829509315154E+05/X + + 5.11498390849158E+04)/X-6.88145821789955E+03)*E + + R33/(X-R33); + } else { + RT1 = ((((-4.97561537069643E-04*X-5.00929599665316E-02)*X + + 1.31099142238996E+00)*X-1.88336409225481E+01)*X - + 6.60344754467191E+02 /X+1.64931462413877E+02)*E + + R13/(X-R13); + RT2 = ((((-4.48218898474906E-03*X-5.17373211334924E-01)*X + + 1.13691058739678E+01)*X-1.65426392885291E+02)*X - + 6.30909125686731E+03 /X+1.52231757709236E+03)*E + + R23/(X-R23); + RT3 = ((((-1.38368602394293E-02*X-1.77293428863008E+00)*X + + 1.73639054044562E+01)*X-3.57615122086961E+02)*X - + 1.45734701095912E+04 /X+2.69831813951849E+03)*E + + R33/(X-R33); + } + T1 = RT1/(RT1+1.0E+00); + T2 = RT2/(RT2+1.0E+00); + T3 = RT3/(RT3+1.0E+00); + A2 = F2-T1*F1; + A1 = F1-T1*WW1; + WW3 = (A2-T2*A1)/((T3-T2)*(T3-T1)); + WW2 = (T3*A1-A2)/((T3-T2)*(T2-T1)); + WW1 = WW1-WW2-WW3; + } else if (X < 47) { + WW1 = sqrt(PIE4/X); + E = exp(-X); + RT1 = ((-7.39058467995275E+00*X+3.21318352526305E+02)*X - + 3.99433696473658E+03)*E + R13/(X-R13); + RT2 = ((-7.38726243906513E+01*X+3.13569966333873E+03)*X - + 3.86862867311321E+04)*E + R23/(X-R23); + RT3 = ((-2.63750565461336E+02*X+1.04412168692352E+04)*X - + 1.28094577915394E+05)*E + R33/(X-R33); + WW3 = ((( 1.52258947224714E-01*X-8.30661900042651E+00)*X + + 1.92977367967984E+02)*X-1.67787926005344E+03)*E + + W33*WW1; + WW2 = (( 6.15072615497811E+01*X-2.91980647450269E+03)*X + + 3.80794303087338E+04)*E + W23*WW1; + WW1 = WW1-WW2-WW3; + } else { + WW1 = sqrt(PIE4/X); + RT1 = R13/(X-R13); + RT2 = R23/(X-R23); + RT3 = R33/(X-R33); + WW2 = W23*WW1; + WW3 = W33*WW1; + WW1 = WW1-WW2-WW3; + } + roots[0] = RT1; + roots[1] = RT2; + roots[2] = RT3; + weights[0] = WW1; + weights[1] = WW2; + weights[2] = WW3; + return 0; +} + +static int rys_root4(dtype X, dtype *roots, dtype *weights) +{ + dtype R14, R24, W24, R34, W34, R44, W44; + dtype RT1, RT2, RT3, RT4, WW1, WW2, WW3, WW4; + dtype Y, E; + + R14 = 1.45303521503316E-01; + R24 = 1.33909728812636E+00; + W24 = 2.34479815323517E-01; + R34 = 3.92696350135829E+00; + W34 = 1.92704402415764E-02; + R44 = 8.58863568901199E+00; + W44 = 2.25229076750736E-04; + + if (X <= 3.0E-7) { + RT1 = 3.48198973061471E-02 -4.09645850660395E-03 *X; + RT2 = 3.81567185080042E-01 -4.48902570656719E-02 *X; + RT3 = 1.73730726945891E+00 -2.04389090547327E-01 *X; + RT4 = 1.18463056481549E+01 -1.39368301742312E+00 *X; + WW1 = 3.62683783378362E-01 -3.13844305713928E-02 *X; + WW2 = 3.13706645877886E-01 -8.98046242557724E-02 *X; + WW3 = 2.22381034453372E-01 -1.29314370958973E-01 *X; + WW4 = 1.01228536290376E-01 -8.28299075414321E-02 *X; + } else if (X <= 1.0) { + RT1 = ((((((-1.95309614628539E-10*X+5.19765728707592E-09)*X- + 1.01756452250573E-07 )*X+1.72365935872131E-06 )*X- + 2.61203523522184E-05 )*X+3.52921308769880E-04 )*X- + 4.09645850658433E-03 )*X+3.48198973061469E-02; + RT2 = (((((-1.89554881382342E-08*X+3.07583114342365E-07)*X+ + 1.270981734393E-06)*X-1.417298563884E-04)*X+ + 3.226979163176E-03)*X-4.48902570678178E-02 )*X+ + 3.81567185080039E-01; + RT3 = (((((( 1.77280535300416E-09*X+3.36524958870615E-08)*X- + 2.58341529013893E-07 )*X-1.13644895662320E-05 )*X- + 7.91549618884063E-05 )*X+1.03825827346828E-02 )*X- + 2.04389090525137E-01 )*X+1.73730726945889E+00; + RT4 = (((((-5.61188882415248E-08*X-2.49480733072460E-07)*X+ + 3.428685057114E-06)*X+1.679007454539E-04)*X+ + 4.722855585715E-02)*X-1.39368301737828E+00 )*X+ + 1.18463056481543E+01; + WW1 = ((((((-1.14649303201279E-08*X+1.88015570196787E-07)*X- + 2.33305875372323E-06 )*X+2.68880044371597E-05 )*X- + 2.94268428977387E-04 )*X+3.06548909776613E-03 )*X- + 3.13844305680096E-02 )*X+3.62683783378335E-01; + WW2 = ((((((((-4.11720483772634E-09*X+6.54963481852134E-08)*X- + 7.20045285129626E-07 )*X+6.93779646721723E-06 )*X- + 6.05367572016373E-05 )*X+4.74241566251899E-04 )*X- + 3.26956188125316E-03 )*X+1.91883866626681E-02 )*X- + 8.98046242565811E-02 )*X+3.13706645877886E-01; + WW3 = ((((((((-3.41688436990215E-08*X+5.07238960340773E-07)*X- + 5.01675628408220E-06 )*X+4.20363420922845E-05 )*X- + 3.08040221166823E-04 )*X+1.94431864731239E-03 )*X- + 1.02477820460278E-02 )*X+4.28670143840073E-02 )*X- + 1.29314370962569E-01 )*X+2.22381034453369E-01; + WW4 = ((((((((( 4.99660550769508E-09*X-7.94585963310120E-08)*X+ + 8.359072409485E-07)*X-7.422369210610E-06)*X+ + 5.763374308160E-05)*X-3.86645606718233E-04 )*X+ + 2.18417516259781E-03 )*X-9.99791027771119E-03 )*X+ + 3.48791097377370E-02 )*X-8.28299075413889E-02 )*X+ + 1.01228536290376E-01; + } else if (X <= 5) { + Y = X-3.0E+00; + RT1 = (((((((((-1.48570633747284E-15*Y-1.33273068108777E-13)*Y+ + 4.068543696670E-12)*Y-9.163164161821E-11)*Y+ + 2.046819017845E-09)*Y-4.03076426299031E-08 )*Y+ + 7.29407420660149E-07 )*Y-1.23118059980833E-05 )*Y+ + 1.88796581246938E-04 )*Y-2.53262912046853E-03 )*Y+ + 2.51198234505021E-02; + RT2 = ((((((((( 1.35830583483312E-13*Y-2.29772605964836E-12)*Y- + 3.821500128045E-12)*Y+6.844424214735E-10)*Y- + 1.048063352259E-08)*Y+1.50083186233363E-08 )*Y+ + 3.48848942324454E-06 )*Y-1.08694174399193E-04 )*Y+ + 2.08048885251999E-03 )*Y-2.91205805373793E-02 )*Y+ + 2.72276489515713E-01; + RT3 = ((((((((( 5.02799392850289E-13*Y+1.07461812944084E-11)*Y- + 1.482277886411E-10)*Y-2.153585661215E-09)*Y+ + 3.654087802817E-08)*Y+5.15929575830120E-07 )*Y- + 9.52388379435709E-06 )*Y-2.16552440036426E-04 )*Y+ + 9.03551469568320E-03 )*Y-1.45505469175613E-01 )*Y+ + 1.21449092319186E+00; + RT4 = (((((((((-1.08510370291979E-12*Y+6.41492397277798E-11)*Y+ + 7.542387436125E-10)*Y-2.213111836647E-09)*Y- + 1.448228963549E-07)*Y-1.95670833237101E-06 )*Y- + 1.07481314670844E-05 )*Y+1.49335941252765E-04 )*Y+ + 4.87791531990593E-02 )*Y-1.10559909038653E+00 )*Y+ + 8.09502028611780E+00; + WW1 = ((((((((((-4.65801912689961E-14*Y+7.58669507106800E-13)*Y- + 1.186387548048E-11)*Y+1.862334710665E-10)*Y- + 2.799399389539E-09)*Y+4.148972684255E-08)*Y- + 5.933568079600E-07)*Y+8.168349266115E-06)*Y- + 1.08989176177409E-04 )*Y+1.41357961729531E-03 )*Y- + 1.87588361833659E-02 )*Y+2.89898651436026E-01; + WW2 = ((((((((((((-1.46345073267549E-14*Y+2.25644205432182E-13)*Y- + 3.116258693847E-12)*Y+4.321908756610E-11)*Y- + 5.673270062669E-10)*Y+7.006295962960E-09)*Y- + 8.120186517000E-08)*Y+8.775294645770E-07)*Y- + 8.77829235749024E-06 )*Y+8.04372147732379E-05 )*Y- + 6.64149238804153E-04 )*Y+4.81181506827225E-03 )*Y- + 2.88982669486183E-02 )*Y+1.56247249979288E-01; + WW3 = ((((((((((((( 9.06812118895365E-15*Y-1.40541322766087E-13)* + Y+1.919270015269E-12)*Y-2.605135739010E-11)*Y+ + 3.299685839012E-10)*Y-3.86354139348735E-09 )*Y+ + 4.16265847927498E-08 )*Y-4.09462835471470E-07 )*Y+ + 3.64018881086111E-06 )*Y-2.88665153269386E-05 )*Y+ + 2.00515819789028E-04 )*Y-1.18791896897934E-03 )*Y+ + 5.75223633388589E-03 )*Y-2.09400418772687E-02 )*Y+ + 4.85368861938873E-02; + WW4 = ((((((((((((((-9.74835552342257E-16*Y+1.57857099317175E-14)* + Y-2.249993780112E-13)*Y+3.173422008953E-12)*Y- + 4.161159459680E-11)*Y+5.021343560166E-10)*Y- + 5.545047534808E-09)*Y+5.554146993491E-08)*Y- + 4.99048696190133E-07 )*Y+3.96650392371311E-06 )*Y- + 2.73816413291214E-05 )*Y+1.60106988333186E-04 )*Y- + 7.64560567879592E-04 )*Y+2.81330044426892E-03 )*Y- + 7.16227030134947E-03 )*Y+9.66077262223353E-03; + } else if (X <= 10.0) { + Y = X-7.5E+00; + RT1 = ((((((((( 4.64217329776215E-15*Y-6.27892383644164E-15)*Y+ + 3.462236347446E-13)*Y-2.927229355350E-11)*Y+ + 5.090355371676E-10)*Y-9.97272656345253E-09 )*Y+ + 2.37835295639281E-07 )*Y-4.60301761310921E-06 )*Y+ + 8.42824204233222E-05 )*Y-1.37983082233081E-03 )*Y+ + 1.66630865869375E-02; + RT2 = ((((((((( 2.93981127919047E-14*Y+8.47635639065744E-13)*Y- + 1.446314544774E-11)*Y-6.149155555753E-12)*Y+ + 8.484275604612E-10)*Y-6.10898827887652E-08 )*Y+ + 2.39156093611106E-06 )*Y-5.35837089462592E-05 )*Y+ + 1.00967602595557E-03 )*Y-1.57769317127372E-02 )*Y+ + 1.74853819464285E-01; + RT3 = (((((((((( 2.93523563363000E-14*Y-6.40041776667020E-14)*Y- + 2.695740446312E-12)*Y+1.027082960169E-10)*Y- + 5.822038656780E-10)*Y-3.159991002539E-08)*Y+ + 4.327249251331E-07)*Y+4.856768455119E-06)*Y- + 2.54617989427762E-04 )*Y+5.54843378106589E-03 )*Y- + 7.95013029486684E-02 )*Y+7.20206142703162E-01; + RT4 = (((((((((((-1.62212382394553E-14*Y+7.68943641360593E-13)*Y+ + 5.764015756615E-12)*Y-1.380635298784E-10)*Y- + 1.476849808675E-09)*Y+1.84347052385605E-08 )*Y+ + 3.34382940759405E-07 )*Y-1.39428366421645E-06 )*Y- + 7.50249313713996E-05 )*Y-6.26495899187507E-04 )*Y+ + 4.69716410901162E-02 )*Y-6.66871297428209E-01 )*Y+ + 4.11207530217806E+00; + WW1 = ((((((((((-1.65995045235997E-15*Y+6.91838935879598E-14)*Y- + 9.131223418888E-13)*Y+1.403341829454E-11)*Y- + 3.672235069444E-10)*Y+6.366962546990E-09)*Y- + 1.039220021671E-07)*Y+1.959098751715E-06)*Y- + 3.33474893152939E-05 )*Y+5.72164211151013E-04 )*Y- + 1.05583210553392E-02 )*Y+2.26696066029591E-01; + WW2 = ((((((((((((-3.57248951192047E-16*Y+6.25708409149331E-15)*Y- + 9.657033089714E-14)*Y+1.507864898748E-12)*Y- + 2.332522256110E-11)*Y+3.428545616603E-10)*Y- + 4.698730937661E-09)*Y+6.219977635130E-08)*Y- + 7.83008889613661E-07 )*Y+9.08621687041567E-06 )*Y- + 9.86368311253873E-05 )*Y+9.69632496710088E-04 )*Y- + 8.14594214284187E-03 )*Y+8.50218447733457E-02; + WW3 = ((((((((((((( 1.64742458534277E-16*Y-2.68512265928410E-15)* + Y+3.788890667676E-14)*Y-5.508918529823E-13)*Y+ + 7.555896810069E-12)*Y-9.69039768312637E-11 )*Y+ + 1.16034263529672E-09 )*Y-1.28771698573873E-08 )*Y+ + 1.31949431805798E-07 )*Y-1.23673915616005E-06 )*Y+ + 1.04189803544936E-05 )*Y-7.79566003744742E-05 )*Y+ + 5.03162624754434E-04 )*Y-2.55138844587555E-03 )*Y+ + 1.13250730954014E-02; + WW4 = ((((((((((((((-1.55714130075679E-17*Y+2.57193722698891E-16)* + Y-3.626606654097E-15)*Y+5.234734676175E-14)*Y- + 7.067105402134E-13)*Y+8.793512664890E-12)*Y- + 1.006088923498E-10)*Y+1.050565098393E-09)*Y- + 9.91517881772662E-09 )*Y+8.35835975882941E-08 )*Y- + 6.19785782240693E-07 )*Y+3.95841149373135E-06 )*Y- + 2.11366761402403E-05 )*Y+9.00474771229507E-05 )*Y- + 2.78777909813289E-04 )*Y+5.26543779837487E-04; + } else if (X <= 15) { + Y = X-12.5E+00; + RT1 = ((((((((((( 4.94869622744119E-17*Y+8.03568805739160E-16)*Y- + 5.599125915431E-15)*Y-1.378685560217E-13)*Y+ + 7.006511663249E-13)*Y+1.30391406991118E-11 )*Y+ + 8.06987313467541E-11 )*Y-5.20644072732933E-09 )*Y+ + 7.72794187755457E-08 )*Y-1.61512612564194E-06 )*Y+ + 4.15083811185831E-05 )*Y-7.87855975560199E-04 )*Y+ + 1.14189319050009E-02; + RT2 = ((((((((((( 4.89224285522336E-16*Y+1.06390248099712E-14)*Y- + 5.446260182933E-14)*Y-1.613630106295E-12)*Y+ + 3.910179118937E-12)*Y+1.90712434258806E-10 )*Y+ + 8.78470199094761E-10 )*Y-5.97332993206797E-08 )*Y+ + 9.25750831481589E-07 )*Y-2.02362185197088E-05 )*Y+ + 4.92341968336776E-04 )*Y-8.68438439874703E-03 )*Y+ + 1.15825965127958E-01; + RT3 = (((((((((( 6.12419396208408E-14*Y+1.12328861406073E-13)*Y- + 9.051094103059E-12)*Y-4.781797525341E-11)*Y+ + 1.660828868694E-09)*Y+4.499058798868E-10)*Y- + 2.519549641933E-07)*Y+4.977444040180E-06)*Y- + 1.25858350034589E-04 )*Y+2.70279176970044E-03 )*Y- + 3.99327850801083E-02 )*Y+4.33467200855434E-01; + RT4 = ((((((((((( 4.63414725924048E-14*Y-4.72757262693062E-14)*Y- + 1.001926833832E-11)*Y+6.074107718414E-11)*Y+ + 1.576976911942E-09)*Y-2.01186401974027E-08 )*Y- + 1.84530195217118E-07 )*Y+5.02333087806827E-06 )*Y+ + 9.66961790843006E-06 )*Y-1.58522208889528E-03 )*Y+ + 2.80539673938339E-02 )*Y-2.78953904330072E-01 )*Y+ + 1.82835655238235E+00; + WW4 = ((((((((((((( 2.90401781000996E-18*Y-4.63389683098251E-17)* + Y+6.274018198326E-16)*Y-8.936002188168E-15)*Y+ + 1.194719074934E-13)*Y-1.45501321259466E-12 )*Y+ + 1.64090830181013E-11 )*Y-1.71987745310181E-10 )*Y+ + 1.63738403295718E-09 )*Y-1.39237504892842E-08 )*Y+ + 1.06527318142151E-07 )*Y-7.27634957230524E-07 )*Y+ + 4.12159381310339E-06 )*Y-1.74648169719173E-05 )*Y+ + 8.50290130067818E-05; + WW3 = ((((((((((((-4.19569145459480E-17*Y+5.94344180261644E-16)*Y- + 1.148797566469E-14)*Y+1.881303962576E-13)*Y- + 2.413554618391E-12)*Y+3.372127423047E-11)*Y- + 4.933988617784E-10)*Y+6.116545396281E-09)*Y- + 6.69965691739299E-08 )*Y+7.52380085447161E-07 )*Y- + 8.08708393262321E-06 )*Y+6.88603417296672E-05 )*Y- + 4.67067112993427E-04 )*Y+5.42313365864597E-03; + WW2 = ((((((((((-6.22272689880615E-15*Y+1.04126809657554E-13)*Y- + 6.842418230913E-13)*Y+1.576841731919E-11)*Y- + 4.203948834175E-10)*Y+6.287255934781E-09)*Y- + 8.307159819228E-08)*Y+1.356478091922E-06)*Y- + 2.08065576105639E-05 )*Y+2.52396730332340E-04 )*Y- + 2.94484050194539E-03 )*Y+6.01396183129168E-02; + WW1 = (((-1.8784686463512E-01/X+2.2991849164985E-01)/X - + 4.9893752514047E-01)/X-2.1916512131607E-05)*exp(-X) + + sqrt(PIE4/X)-WW4-WW3-WW2; + } else if (X <= 20) { + WW1 = sqrt(PIE4/X); + Y = X-17.5E+00; + RT1 = ((((((((((( 4.36701759531398E-17*Y-1.12860600219889E-16)*Y- + 6.149849164164E-15)*Y+5.820231579541E-14)*Y+ + 4.396602872143E-13)*Y-1.24330365320172E-11 )*Y+ + 6.71083474044549E-11 )*Y+2.43865205376067E-10 )*Y+ + 1.67559587099969E-08 )*Y-9.32738632357572E-07 )*Y+ + 2.39030487004977E-05 )*Y-4.68648206591515E-04 )*Y+ + 8.34977776583956E-03; + RT2 = ((((((((((( 4.98913142288158E-16*Y-2.60732537093612E-16)*Y- + 7.775156445127E-14)*Y+5.766105220086E-13)*Y+ + 6.432696729600E-12)*Y-1.39571683725792E-10 )*Y+ + 5.95451479522191E-10 )*Y+2.42471442836205E-09 )*Y+ + 2.47485710143120E-07 )*Y-1.14710398652091E-05 )*Y+ + 2.71252453754519E-04 )*Y-4.96812745851408E-03 )*Y+ + 8.26020602026780E-02; + RT3 = ((((((((((( 1.91498302509009E-15*Y+1.48840394311115E-14)*Y- + 4.316925145767E-13)*Y+1.186495793471E-12)*Y+ + 4.615806713055E-11)*Y-5.54336148667141E-10 )*Y+ + 3.48789978951367E-10 )*Y-2.79188977451042E-09 )*Y+ + 2.09563208958551E-06 )*Y-6.76512715080324E-05 )*Y+ + 1.32129867629062E-03 )*Y-2.05062147771513E-02 )*Y+ + 2.88068671894324E-01; + RT4 = (((((((((((-5.43697691672942E-15*Y-1.12483395714468E-13)*Y+ + 2.826607936174E-12)*Y-1.266734493280E-11)*Y- + 4.258722866437E-10)*Y+9.45486578503261E-09 )*Y- + 5.86635622821309E-08 )*Y-1.28835028104639E-06 )*Y+ + 4.41413815691885E-05 )*Y-7.61738385590776E-04 )*Y+ + 9.66090902985550E-03 )*Y-1.01410568057649E-01 )*Y+ + 9.54714798156712E-01; + WW4 = ((((((((((((-7.56882223582704E-19*Y+7.53541779268175E-18)*Y- + 1.157318032236E-16)*Y+2.411195002314E-15)*Y- + 3.601794386996E-14)*Y+4.082150659615E-13)*Y- + 4.289542980767E-12)*Y+5.086829642731E-11)*Y- + 6.35435561050807E-10 )*Y+6.82309323251123E-09 )*Y- + 5.63374555753167E-08 )*Y+3.57005361100431E-07 )*Y- + 2.40050045173721E-06 )*Y+4.94171300536397E-05; + WW3 = (((((((((((-5.54451040921657E-17*Y+2.68748367250999E-16)*Y+ + 1.349020069254E-14)*Y-2.507452792892E-13)*Y+ + 1.944339743818E-12)*Y-1.29816917658823E-11 )*Y+ + 3.49977768819641E-10 )*Y-8.67270669346398E-09 )*Y+ + 1.31381116840118E-07 )*Y-1.36790720600822E-06 )*Y+ + 1.19210697673160E-05 )*Y-1.42181943986587E-04 )*Y+ + 4.12615396191829E-03; + WW2 = (((((((((((-1.86506057729700E-16*Y+1.16661114435809E-15)*Y+ + 2.563712856363E-14)*Y-4.498350984631E-13)*Y+ + 1.765194089338E-12)*Y+9.04483676345625E-12 )*Y+ + 4.98930345609785E-10 )*Y-2.11964170928181E-08 )*Y+ + 3.98295476005614E-07 )*Y-5.49390160829409E-06 )*Y+ + 7.74065155353262E-05 )*Y-1.48201933009105E-03 )*Y+ + 4.97836392625268E-02; + WW1 = (( 1.9623264149430E-01/X-4.9695241464490E-01)/X - + 6.0156581186481E-05)*exp(-X)+WW1-WW2-WW3-WW4; + } else if (X <= 35) { + WW1 = sqrt(PIE4/X); + E = exp(-X); + RT1 = ((((((-4.45711399441838E-05*X+1.27267770241379E-03)*X - + 2.36954961381262E-01)*X+1.54330657903756E+01)*X - + 5.22799159267808E+02)*X+1.05951216669313E+04)*X + + (-2.51177235556236E+06/X+8.72975373557709E+05)/X - + 1.29194382386499E+05)*E + R14/(X-R14); + RT2 = (((((-7.85617372254488E-02*X+6.35653573484868E+00)*X - + 3.38296938763990E+02)*X+1.25120495802096E+04)*X - + 3.16847570511637E+05)*X + + ((-1.02427466127427E+09/X + + 3.70104713293016E+08)/X-5.87119005093822E+07)/X + + 5.38614211391604E+06)*E + R24/(X-R24); + RT3 = (((((-2.37900485051067E-01*X+1.84122184400896E+01)*X - + 1.00200731304146E+03)*X+3.75151841595736E+04)*X - + 9.50626663390130E+05)*X + + ((-2.88139014651985E+09/X + + 1.06625915044526E+09)/X-1.72465289687396E+08)/X + + 1.60419390230055E+07)*E + R34/(X-R34); + RT4 = ((((((-6.00691586407385E-04*X-3.64479545338439E-01)*X + + 1.57496131755179E+01)*X-6.54944248734901E+02)*X + + 1.70830039597097E+04)*X-2.90517939780207E+05)*X + + (3.49059698304732E+07/X-1.64944522586065E+07)/X + + 2.96817940164703E+06)*E + R44/(X-R44); + if (X <= 25) + WW4 = ((((((( 2.33766206773151E-07*X- + 3.81542906607063E-05)*X +3.51416601267000E-03)*X- + 1.66538571864728E-01)*X +4.80006136831847E+00)*X- + 8.73165934223603E+01)*X +9.77683627474638E+02)*X + + 1.66000945117640E+04/X -6.14479071209961E+03)*E + W44*WW1; + else + WW4 = (((((( 5.74245945342286E-06*X- + 7.58735928102351E-05)*X +2.35072857922892E-04)*X- + 3.78812134013125E-03)*X +3.09871652785805E-01)*X- + 7.11108633061306E+00)*X +5.55297573149528E+01)*E + W44*WW1; + WW3 = (((((( 2.36392855180768E-04*X-9.16785337967013E-03)*X + + 4.62186525041313E-01)*X-1.96943786006540E+01)*X + + 4.99169195295559E+02)*X-6.21419845845090E+03)*X + + ((+5.21445053212414E+07/X-1.34113464389309E+07)/X + + 1.13673298305631E+06)/X-2.81501182042707E+03)*E + W34*WW1; + WW2 = (((((( 7.29841848989391E-04*X-3.53899555749875E-02)*X + + 2.07797425718513E+00)*X-1.00464709786287E+02)*X + + 3.15206108877819E+03)*X-6.27054715090012E+04)*X + + (+1.54721246264919E+07/X-5.26074391316381E+06)/X + + 7.67135400969617E+05)*E + W24*WW1; + WW1 = (( 1.9623264149430E-01/X-4.9695241464490E-01)/X - + 6.0156581186481E-05)*E + WW1-WW2-WW3-WW4; + } else if (X <= 53) { + WW1 = sqrt(PIE4/X); + E = exp(-X)*pow(X,4); + RT4 = ((-2.19135070169653E-03*X-1.19108256987623E-01)*X - + 7.50238795695573E-01)*E + R44/(X-R44); + RT3 = ((-9.65842534508637E-04*X-4.49822013469279E-02)*X + + 6.08784033347757E-01)*E + R34/(X-R34); + RT2 = ((-3.62569791162153E-04*X-9.09231717268466E-03)*X + + 1.84336760556262E-01)*E + R24/(X-R24); + RT1 = ((-4.07557525914600E-05*X-6.88846864931685E-04)*X + + 1.74725309199384E-02)*E + R14/(X-R14); + WW4 = (( 5.76631982000990E-06*X-7.89187283804890E-05)*X + + 3.28297971853126E-04)*E + W44*WW1; + WW3 = (( 2.08294969857230E-04*X-3.77489954837361E-03)*X + + 2.09857151617436E-02)*E + W34*WW1; + WW2 = (( 6.16374517326469E-04*X-1.26711744680092E-02)*X + + 8.14504890732155E-02)*E + W24*WW1; + WW1 = WW1-WW2-WW3-WW4; + } else { + WW1 = sqrt(PIE4/X); + RT1 = R14/(X-R14); + RT2 = R24/(X-R24); + RT3 = R34/(X-R34); + RT4 = R44/(X-R44); + WW4 = W44*WW1; + WW3 = W34*WW1; + WW2 = W24*WW1; + WW1 = WW1-WW2-WW3-WW4; + } + roots[0] = RT1; + roots[1] = RT2; + roots[2] = RT3; + roots[3] = RT4; + weights[0] = WW1; + weights[1] = WW2; + weights[2] = WW3; + weights[3] = WW4; + return 0; +} + +static int rys_root5(dtype X, dtype *roots, dtype *weights) +{ + dtype R15,R25,W25,R35,W35,R45,W45,R55,W55; + dtype RT1, RT2, RT3, RT4, RT5, WW1, WW2, WW3, WW4, WW5; + dtype Y, E, XXX; + + R15 = 1.17581320211778E-01; + R25 = 1.07456201243690E+00; + W25 = 2.70967405960535E-01; + R35 = 3.08593744371754E+00; + W35 = 3.82231610015404E-02; + R45 = 6.41472973366203E+00; + W45 = 1.51614186862443E-03; + R55 = 1.18071894899717E+01; + W55 = 8.62130526143657E-06; + + if (X < 3.e-7){ + RT1 = 2.26659266316985E-02 -2.15865967920897E-03 *X; + RT2 = 2.31271692140903E-01 -2.20258754389745E-02 *X; + RT3 = 8.57346024118836E-01 -8.16520023025515E-02 *X; + RT4 = 2.97353038120346E+00 -2.83193369647137E-01 *X; + RT5 = 1.84151859759051E+01 -1.75382723579439E+00 *X; + WW1 = 2.95524224714752E-01 -1.96867576909777E-02 *X; + WW2 = 2.69266719309995E-01 -5.61737590184721E-02 *X; + WW3 = 2.19086362515981E-01 -9.71152726793658E-02 *X; + WW4 = 1.49451349150580E-01 -1.02979262193565E-01 *X; + WW5 = 6.66713443086877E-02 -5.73782817488315E-02 *X; + } else if (X < 1.0){ + RT1 = ((((((-4.46679165328413E-11*X+1.21879111988031E-09)*X- + 2.62975022612104E-08 )*X+5.15106194905897E-07 )*X- + 9.27933625824749E-06 )*X+1.51794097682482E-04 )*X- + 2.15865967920301E-03 )*X+2.26659266316985E-02; + RT2 = (((((( 1.93117331714174E-10*X-4.57267589660699E-09)*X+ + 2.48339908218932E-08 )*X+1.50716729438474E-06 )*X- + 6.07268757707381E-05 )*X+1.37506939145643E-03 )*X- + 2.20258754419939E-02 )*X+2.31271692140905E-01; + RT3 = ((((( 4.84989776180094E-09*X+1.31538893944284E-07)*X- + 2.766753852879E-06)*X-7.651163510626E-05)*X+ + 4.033058545972E-03)*X-8.16520022916145E-02 )*X+ + 8.57346024118779E-01; + RT4 = ((((-2.48581772214623E-07*X-4.34482635782585E-06)*X- + 7.46018257987630E-07 )*X+1.01210776517279E-02 )*X- + 2.83193369640005E-01 )*X+2.97353038120345E+00; + RT5 = (((((-8.92432153868554E-09*X+1.77288899268988E-08)*X+ + 3.040754680666E-06)*X+1.058229325071E-04)*X+ + 4.596379534985E-02)*X-1.75382723579114E+00 )*X+ + 1.84151859759049E+01; + WW1 = ((((((-2.03822632771791E-09*X+3.89110229133810E-08)*X- + 5.84914787904823E-07 )*X+8.30316168666696E-06 )*X- + 1.13218402310546E-04 )*X+1.49128888586790E-03 )*X- + 1.96867576904816E-02 )*X+2.95524224714749E-01; + WW2 = ((((((( 8.62848118397570E-09*X-1.38975551148989E-07)*X+ + 1.602894068228E-06)*X-1.646364300836E-05)*X+ + 1.538445806778E-04)*X-1.28848868034502E-03 )*X+ + 9.38866933338584E-03 )*X-5.61737590178812E-02 )*X+ + 2.69266719309991E-01; + WW3 = ((((((((-9.41953204205665E-09*X+1.47452251067755E-07)*X- + 1.57456991199322E-06 )*X+1.45098401798393E-05 )*X- + 1.18858834181513E-04 )*X+8.53697675984210E-04 )*X- + 5.22877807397165E-03 )*X+2.60854524809786E-02 )*X- + 9.71152726809059E-02 )*X+2.19086362515979E-01; + WW4 = ((((((((-3.84961617022042E-08*X+5.66595396544470E-07)*X- + 5.52351805403748E-06 )*X+4.53160377546073E-05 )*X- + 3.22542784865557E-04 )*X+1.95682017370967E-03 )*X- + 9.77232537679229E-03 )*X+3.79455945268632E-02 )*X- + 1.02979262192227E-01 )*X+1.49451349150573E-01; + WW5 = ((((((((( 4.09594812521430E-09*X-6.47097874264417E-08)*X+ + 6.743541482689E-07)*X-5.917993920224E-06)*X+ + 4.531969237381E-05)*X-2.99102856679638E-04 )*X+ + 1.65695765202643E-03 )*X-7.40671222520653E-03 )*X+ + 2.50889946832192E-02 )*X-5.73782817487958E-02 )*X+ + 6.66713443086877E-02; + } else if (X < 5.0) { + Y = X-3.0E+00; + RT1 = ((((((((-2.58163897135138E-14*Y+8.14127461488273E-13)*Y- + 2.11414838976129E-11 )*Y+5.09822003260014E-10 )*Y- + 1.16002134438663E-08 )*Y+2.46810694414540E-07 )*Y- + 4.92556826124502E-06 )*Y+9.02580687971053E-05 )*Y- + 1.45190025120726E-03 )*Y+1.73416786387475E-02; + RT2 = ((((((((( 1.04525287289788E-14*Y+5.44611782010773E-14)*Y- + 4.831059411392E-12)*Y+1.136643908832E-10)*Y- + 1.104373076913E-09)*Y-2.35346740649916E-08 )*Y+ + 1.43772622028764E-06 )*Y-4.23405023015273E-05 )*Y+ + 9.12034574793379E-04 )*Y-1.52479441718739E-02 )*Y+ + 1.76055265928744E-01; + RT3 = (((((((((-6.89693150857911E-14*Y+5.92064260918861E-13)*Y+ + 1.847170956043E-11)*Y-3.390752744265E-10)*Y- + 2.995532064116E-09)*Y+1.57456141058535E-07 )*Y- + 3.95859409711346E-07 )*Y-9.58924580919747E-05 )*Y+ + 3.23551502557785E-03 )*Y-5.97587007636479E-02 )*Y+ + 6.46432853383057E-01; + RT4 = ((((((((-3.61293809667763E-12*Y-2.70803518291085E-11)*Y+ + 8.83758848468769E-10 )*Y+1.59166632851267E-08 )*Y- + 1.32581997983422E-07 )*Y-7.60223407443995E-06 )*Y- + 7.41019244900952E-05 )*Y+9.81432631743423E-03 )*Y- + 2.23055570487771E-01 )*Y+2.21460798080643E+00; + RT5 = ((((((((( 7.12332088345321E-13*Y+3.16578501501894E-12)*Y- + 8.776668218053E-11)*Y-2.342817613343E-09)*Y- + 3.496962018025E-08)*Y-3.03172870136802E-07 )*Y+ + 1.50511293969805E-06 )*Y+1.37704919387696E-04 )*Y+ + 4.70723869619745E-02 )*Y-1.47486623003693E+00 )*Y+ + 1.35704792175847E+01; + WW1 = ((((((((( 1.04348658616398E-13*Y-1.94147461891055E-12)*Y+ + 3.485512360993E-11)*Y-6.277497362235E-10)*Y+ + 1.100758247388E-08)*Y-1.88329804969573E-07 )*Y+ + 3.12338120839468E-06 )*Y-5.04404167403568E-05 )*Y+ + 8.00338056610995E-04 )*Y-1.30892406559521E-02 )*Y+ + 2.47383140241103E-01; + WW2 = ((((((((((( 3.23496149760478E-14*Y-5.24314473469311E-13)*Y+ + 7.743219385056E-12)*Y-1.146022750992E-10)*Y+ + 1.615238462197E-09)*Y-2.15479017572233E-08 )*Y+ + 2.70933462557631E-07 )*Y-3.18750295288531E-06 )*Y+ + 3.47425221210099E-05 )*Y-3.45558237388223E-04 )*Y+ + 3.05779768191621E-03 )*Y-2.29118251223003E-02 )*Y+ + 1.59834227924213E-01; + WW3 = ((((((((((((-3.42790561802876E-14*Y+5.26475736681542E-13)*Y- + 7.184330797139E-12)*Y+9.763932908544E-11)*Y- + 1.244014559219E-09)*Y+1.472744068942E-08)*Y- + 1.611749975234E-07)*Y+1.616487851917E-06)*Y- + 1.46852359124154E-05 )*Y+1.18900349101069E-04 )*Y- + 8.37562373221756E-04 )*Y+4.93752683045845E-03 )*Y- + 2.25514728915673E-02 )*Y+6.95211812453929E-02; + WW4 = ((((((((((((( 1.04072340345039E-14*Y-1.60808044529211E-13)* + Y+2.183534866798E-12)*Y-2.939403008391E-11)*Y+ + 3.679254029085E-10)*Y-4.23775673047899E-09 )*Y+ + 4.46559231067006E-08 )*Y-4.26488836563267E-07 )*Y+ + 3.64721335274973E-06 )*Y-2.74868382777722E-05 )*Y+ + 1.78586118867488E-04 )*Y-9.68428981886534E-04 )*Y+ + 4.16002324339929E-03 )*Y-1.28290192663141E-02 )*Y+ + 2.22353727685016E-02; + WW5 = ((((((((((((((-8.16770412525963E-16*Y+1.31376515047977E-14)* + Y-1.856950818865E-13)*Y+2.596836515749E-12)*Y- + 3.372639523006E-11)*Y+4.025371849467E-10)*Y- + 4.389453269417E-09)*Y+4.332753856271E-08)*Y- + 3.82673275931962E-07 )*Y+2.98006900751543E-06 )*Y- + 2.00718990300052E-05 )*Y+1.13876001386361E-04 )*Y- + 5.23627942443563E-04 )*Y+1.83524565118203E-03 )*Y- + 4.37785737450783E-03 )*Y+5.36963805223095E-03; + } else if (X < 10.0) { + Y = X-7.5E+00; + RT1 = ((((((((-1.13825201010775E-14*Y+1.89737681670375E-13)*Y- + 4.81561201185876E-12 )*Y+1.56666512163407E-10 )*Y- + 3.73782213255083E-09 )*Y+9.15858355075147E-08 )*Y- + 2.13775073585629E-06 )*Y+4.56547356365536E-05 )*Y- + 8.68003909323740E-04 )*Y+1.22703754069176E-02; + RT2 = (((((((((-3.67160504428358E-15*Y+1.27876280158297E-14)*Y- + 1.296476623788E-12)*Y+1.477175434354E-11)*Y+ + 5.464102147892E-10)*Y-2.42538340602723E-08 )*Y+ + 8.20460740637617E-07 )*Y-2.20379304598661E-05 )*Y+ + 4.90295372978785E-04 )*Y-9.14294111576119E-03 )*Y+ + 1.22590403403690E-01; + RT3 = ((((((((( 1.39017367502123E-14*Y-6.96391385426890E-13)*Y+ + 1.176946020731E-12)*Y+1.725627235645E-10)*Y- + 3.686383856300E-09)*Y+2.87495324207095E-08 )*Y+ + 1.71307311000282E-06 )*Y-7.94273603184629E-05 )*Y+ + 2.00938064965897E-03 )*Y-3.63329491677178E-02 )*Y+ + 4.34393683888443E-01; + RT4 = ((((((((((-1.27815158195209E-14*Y+1.99910415869821E-14)*Y+ + 3.753542914426E-12)*Y-2.708018219579E-11)*Y- + 1.190574776587E-09)*Y+1.106696436509E-08)*Y+ + 3.954955671326E-07)*Y-4.398596059588E-06)*Y- + 2.01087998907735E-04 )*Y+7.89092425542937E-03 )*Y- + 1.42056749162695E-01 )*Y+1.39964149420683E+00; + RT5 = ((((((((((-1.19442341030461E-13*Y-2.34074833275956E-12)*Y+ + 6.861649627426E-12)*Y+6.082671496226E-10)*Y+ + 5.381160105420E-09)*Y-6.253297138700E-08)*Y- + 2.135966835050E-06)*Y-2.373394341886E-05)*Y+ + 2.88711171412814E-06 )*Y+4.85221195290753E-02 )*Y- + 1.04346091985269E+00 )*Y+7.89901551676692E+00; + WW1 = ((((((((( 7.95526040108997E-15*Y-2.48593096128045E-13)*Y+ + 4.761246208720E-12)*Y-9.535763686605E-11)*Y+ + 2.225273630974E-09)*Y-4.49796778054865E-08 )*Y+ + 9.17812870287386E-07 )*Y-1.86764236490502E-05 )*Y+ + 3.76807779068053E-04 )*Y-8.10456360143408E-03 )*Y+ + 2.01097936411496E-01; + WW2 = ((((((((((( 1.25678686624734E-15*Y-2.34266248891173E-14)*Y+ + 3.973252415832E-13)*Y-6.830539401049E-12)*Y+ + 1.140771033372E-10)*Y-1.82546185762009E-09 )*Y+ + 2.77209637550134E-08 )*Y-4.01726946190383E-07 )*Y+ + 5.48227244014763E-06 )*Y-6.95676245982121E-05 )*Y+ + 8.05193921815776E-04 )*Y-8.15528438784469E-03 )*Y+ + 9.71769901268114E-02; + WW3 = ((((((((((((-8.20929494859896E-16*Y+1.37356038393016E-14)*Y- + 2.022863065220E-13)*Y+3.058055403795E-12)*Y- + 4.387890955243E-11)*Y+5.923946274445E-10)*Y- + 7.503659964159E-09)*Y+8.851599803902E-08)*Y- + 9.65561998415038E-07 )*Y+9.60884622778092E-06 )*Y- + 8.56551787594404E-05 )*Y+6.66057194311179E-04 )*Y- + 4.17753183902198E-03 )*Y+2.25443826852447E-02; + WW4 = ((((((((((((((-1.08764612488790E-17*Y+1.85299909689937E-16)* + Y-2.730195628655E-15)*Y+4.127368817265E-14)*Y- + 5.881379088074E-13)*Y+7.805245193391E-12)*Y- + 9.632707991704E-11)*Y+1.099047050624E-09)*Y- + 1.15042731790748E-08 )*Y+1.09415155268932E-07 )*Y- + 9.33687124875935E-07 )*Y+7.02338477986218E-06 )*Y- + 4.53759748787756E-05 )*Y+2.41722511389146E-04 )*Y- + 9.75935943447037E-04 )*Y+2.57520532789644E-03; + WW5 = ((((((((((((((( 7.28996979748849E-19*Y-1.26518146195173E-17) + *Y+1.886145834486E-16)*Y-2.876728287383E-15)*Y+ + 4.114588668138E-14)*Y-5.44436631413933E-13 )*Y+ + 6.64976446790959E-12 )*Y-7.44560069974940E-11 )*Y+ + 7.57553198166848E-10 )*Y-6.92956101109829E-09 )*Y+ + 5.62222859033624E-08 )*Y-3.97500114084351E-07 )*Y+ + 2.39039126138140E-06 )*Y-1.18023950002105E-05 )*Y+ + 4.52254031046244E-05 )*Y-1.21113782150370E-04 )*Y+ + 1.75013126731224E-04; + } else if (X < 15.0) { + Y = X-12.5E+00; + RT1 = ((((((((((-4.16387977337393E-17*Y+7.20872997373860E-16)*Y+ + 1.395993802064E-14)*Y+3.660484641252E-14)*Y- + 4.154857548139E-12)*Y+2.301379846544E-11)*Y- + 1.033307012866E-09)*Y+3.997777641049E-08)*Y- + 9.35118186333939E-07 )*Y+2.38589932752937E-05 )*Y- + 5.35185183652937E-04 )*Y+8.85218988709735E-03; + RT2 = ((((((((((-4.56279214732217E-16*Y+6.24941647247927E-15)*Y+ + 1.737896339191E-13)*Y+8.964205979517E-14)*Y- + 3.538906780633E-11)*Y+9.561341254948E-11)*Y- + 9.772831891310E-09)*Y+4.240340194620E-07)*Y- + 1.02384302866534E-05 )*Y+2.57987709704822E-04 )*Y- + 5.54735977651677E-03 )*Y+8.68245143991948E-02; + RT3 = ((((((((((-2.52879337929239E-15*Y+2.13925810087833E-14)*Y+ + 7.884307667104E-13)*Y-9.023398159510E-13)*Y- + 5.814101544957E-11)*Y-1.333480437968E-09)*Y- + 2.217064940373E-08)*Y+1.643290788086E-06)*Y- + 4.39602147345028E-05 )*Y+1.08648982748911E-03 )*Y- + 2.13014521653498E-02 )*Y+2.94150684465425E-01; + RT4 = ((((((((((-6.42391438038888E-15*Y+5.37848223438815E-15)*Y+ + 8.960828117859E-13)*Y+5.214153461337E-11)*Y- + 1.106601744067E-10)*Y-2.007890743962E-08)*Y+ + 1.543764346501E-07)*Y+4.520749076914E-06)*Y- + 1.88893338587047E-04 )*Y+4.73264487389288E-03 )*Y- + 7.91197893350253E-02 )*Y+8.60057928514554E-01; + RT5 = (((((((((((-2.24366166957225E-14*Y+4.87224967526081E-14)*Y+ + 5.587369053655E-12)*Y-3.045253104617E-12)*Y- + 1.223983883080E-09)*Y-2.05603889396319E-09 )*Y+ + 2.58604071603561E-07 )*Y+1.34240904266268E-06 )*Y- + 5.72877569731162E-05 )*Y-9.56275105032191E-04 )*Y+ + 4.23367010370921E-02 )*Y-5.76800927133412E-01 )*Y+ + 3.87328263873381E+00; + WW1 = ((((((((( 8.98007931950169E-15*Y+7.25673623859497E-14)*Y+ + 5.851494250405E-14)*Y-4.234204823846E-11)*Y+ + 3.911507312679E-10)*Y-9.65094802088511E-09 )*Y+ + 3.42197444235714E-07 )*Y-7.51821178144509E-06 )*Y+ + 1.94218051498662E-04 )*Y-5.38533819142287E-03 )*Y+ + 1.68122596736809E-01; + WW2 = ((((((((((-1.05490525395105E-15*Y+1.96855386549388E-14)*Y- + 5.500330153548E-13)*Y+1.003849567976E-11)*Y- + 1.720997242621E-10)*Y+3.533277061402E-09)*Y- + 6.389171736029E-08)*Y+1.046236652393E-06)*Y- + 1.73148206795827E-05 )*Y+2.57820531617185E-04 )*Y- + 3.46188265338350E-03 )*Y+7.03302497508176E-02; + WW3 = ((((((((((( 3.60020423754545E-16*Y-6.24245825017148E-15)*Y+ + 9.945311467434E-14)*Y-1.749051512721E-12)*Y+ + 2.768503957853E-11)*Y-4.08688551136506E-10 )*Y+ + 6.04189063303610E-09 )*Y-8.23540111024147E-08 )*Y+ + 1.01503783870262E-06 )*Y-1.20490761741576E-05 )*Y+ + 1.26928442448148E-04 )*Y-1.05539461930597E-03 )*Y+ + 1.15543698537013E-02; + WW4 = ((((((((((((( 2.51163533058925E-18*Y-4.31723745510697E-17)* + Y+6.557620865832E-16)*Y-1.016528519495E-14)*Y+ + 1.491302084832E-13)*Y-2.06638666222265E-12 )*Y+ + 2.67958697789258E-11 )*Y-3.23322654638336E-10 )*Y+ + 3.63722952167779E-09 )*Y-3.75484943783021E-08 )*Y+ + 3.49164261987184E-07 )*Y-2.92658670674908E-06 )*Y+ + 2.12937256719543E-05 )*Y-1.19434130620929E-04 )*Y+ + 6.45524336158384E-04; + WW5 = ((((((((((((((-1.29043630202811E-19*Y+2.16234952241296E-18)* + Y-3.107631557965E-17)*Y+4.570804313173E-16)*Y- + 6.301348858104E-15)*Y+8.031304476153E-14)*Y- + 9.446196472547E-13)*Y+1.018245804339E-11)*Y- + 9.96995451348129E-11 )*Y+8.77489010276305E-10 )*Y- + 6.84655877575364E-09 )*Y+4.64460857084983E-08 )*Y- + 2.66924538268397E-07 )*Y+1.24621276265907E-06 )*Y- + 4.30868944351523E-06 )*Y+9.94307982432868E-06; + } else if (X < 20.0){ + Y = X-17.5E+00; + RT1 = (((((((((( 1.91875764545740E-16*Y+7.8357401095707E-16)*Y- + 3.260875931644E-14)*Y-1.186752035569E-13)*Y+ + 4.275180095653E-12)*Y+3.357056136731E-11)*Y- + 1.123776903884E-09)*Y+1.231203269887E-08)*Y- + 3.99851421361031E-07 )*Y+1.45418822817771E-05 )*Y- + 3.49912254976317E-04 )*Y+6.67768703938812E-03; + RT2 = (((((((((( 2.02778478673555E-15*Y+1.01640716785099E-14)*Y- + 3.385363492036E-13)*Y-1.615655871159E-12)*Y+ + 4.527419140333E-11)*Y+3.853670706486E-10)*Y- + 1.184607130107E-08)*Y+1.347873288827E-07)*Y- + 4.47788241748377E-06 )*Y+1.54942754358273E-04 )*Y- + 3.55524254280266E-03 )*Y+6.44912219301603E-02; + RT3 = (((((((((( 7.79850771456444E-15*Y+6.00464406395001E-14)*Y- + 1.249779730869E-12)*Y-1.020720636353E-11)*Y+ + 1.814709816693E-10)*Y+1.766397336977E-09)*Y- + 4.603559449010E-08)*Y+5.863956443581E-07)*Y- + 2.03797212506691E-05 )*Y+6.31405161185185E-04 )*Y- + 1.30102750145071E-02 )*Y+2.10244289044705E-01; + RT4 = (((((((((((-2.92397030777912E-15*Y+1.94152129078465E-14)*Y+ + 4.859447665850E-13)*Y-3.217227223463E-12)*Y- + 7.484522135512E-11)*Y+7.19101516047753E-10 )*Y+ + 6.88409355245582E-09 )*Y-1.44374545515769E-07 )*Y+ + 2.74941013315834E-06 )*Y-1.02790452049013E-04 )*Y+ + 2.59924221372643E-03 )*Y-4.35712368303551E-02 )*Y+ + 5.62170709585029E-01; + RT5 = ((((((((((( 1.17976126840060E-14*Y+1.24156229350669E-13)*Y- + 3.892741622280E-12)*Y-7.755793199043E-12)*Y+ + 9.492190032313E-10)*Y-4.98680128123353E-09 )*Y- + 1.81502268782664E-07 )*Y+2.69463269394888E-06 )*Y+ + 2.50032154421640E-05 )*Y-1.33684303917681E-03 )*Y+ + 2.29121951862538E-02 )*Y-2.45653725061323E-01 )*Y+ + 1.89999883453047E+00; + WW1 = (((((((((( 1.74841995087592E-15*Y-6.95671892641256E-16)*Y- + 3.000659497257E-13)*Y+2.021279817961E-13)*Y+ + 3.853596935400E-11)*Y+1.461418533652E-10)*Y- + 1.014517563435E-08)*Y+1.132736008979E-07)*Y- + 2.86605475073259E-06 )*Y+1.21958354908768E-04 )*Y- + 3.86293751153466E-03 )*Y+1.45298342081522E-01; + WW2 = ((((((((((-1.11199320525573E-15*Y+1.85007587796671E-15)*Y+ + 1.220613939709E-13)*Y+1.275068098526E-12)*Y- + 5.341838883262E-11)*Y+6.161037256669E-10)*Y- + 1.009147879750E-08)*Y+2.907862965346E-07)*Y- + 6.12300038720919E-06 )*Y+1.00104454489518E-04 )*Y- + 1.80677298502757E-03 )*Y+5.78009914536630E-02; + WW3 = ((((((((((-9.49816486853687E-16*Y+6.67922080354234E-15)*Y+ + 2.606163540537E-15)*Y+1.983799950150E-12)*Y- + 5.400548574357E-11)*Y+6.638043374114E-10)*Y- + 8.799518866802E-09)*Y+1.791418482685E-07)*Y- + 2.96075397351101E-06 )*Y+3.38028206156144E-05 )*Y- + 3.58426847857878E-04 )*Y+8.39213709428516E-03; + WW4 = ((((((((((( 1.33829971060180E-17*Y-3.44841877844140E-16)*Y+ + 4.745009557656E-15)*Y-6.033814209875E-14)*Y+ + 1.049256040808E-12)*Y-1.70859789556117E-11 )*Y+ + 2.15219425727959E-10 )*Y-2.52746574206884E-09 )*Y+ + 3.27761714422960E-08 )*Y-3.90387662925193E-07 )*Y+ + 3.46340204593870E-06 )*Y-2.43236345136782E-05 )*Y+ + 3.54846978585226E-04; + WW5 = ((((((((((((( 2.69412277020887E-20*Y-4.24837886165685E-19)* + Y+6.030500065438E-18)*Y-9.069722758289E-17)*Y+ + 1.246599177672E-15)*Y-1.56872999797549E-14 )*Y+ + 1.87305099552692E-13 )*Y-2.09498886675861E-12 )*Y+ + 2.11630022068394E-11 )*Y-1.92566242323525E-10 )*Y+ + 1.62012436344069E-09 )*Y-1.23621614171556E-08 )*Y+ + 7.72165684563049E-08 )*Y-3.59858901591047E-07 )*Y+ + 2.43682618601000E-06; + } else if (X < 25.0) { + Y = X-22.5E+00; + RT1 = (((((((((-1.13927848238726E-15*Y+7.39404133595713E-15)*Y+ + 1.445982921243E-13)*Y-2.676703245252E-12)*Y+ + 5.823521627177E-12)*Y+2.17264723874381E-10 )*Y+ + 3.56242145897468E-09 )*Y-3.03763737404491E-07 )*Y+ + 9.46859114120901E-06 )*Y-2.30896753853196E-04 )*Y+ + 5.24663913001114E-03; + RT2 = (((((((((( 2.89872355524581E-16*Y-1.22296292045864E-14)*Y+ + 6.184065097200E-14)*Y+1.649846591230E-12)*Y- + 2.729713905266E-11)*Y+3.709913790650E-11)*Y+ + 2.216486288382E-09)*Y+4.616160236414E-08)*Y- + 3.32380270861364E-06 )*Y+9.84635072633776E-05 )*Y- + 2.30092118015697E-03 )*Y+5.00845183695073E-02; + RT3 = (((((((((( 1.97068646590923E-15*Y-4.89419270626800E-14)*Y+ + 1.136466605916E-13)*Y+7.546203883874E-12)*Y- + 9.635646767455E-11)*Y-8.295965491209E-11)*Y+ + 7.534109114453E-09)*Y+2.699970652707E-07)*Y- + 1.42982334217081E-05 )*Y+3.78290946669264E-04 )*Y- + 8.03133015084373E-03 )*Y+1.58689469640791E-01; + RT4 = (((((((((( 1.33642069941389E-14*Y-1.55850612605745E-13)*Y- + 7.522712577474E-13)*Y+3.209520801187E-11)*Y- + 2.075594313618E-10)*Y-2.070575894402E-09)*Y+ + 7.323046997451E-09)*Y+1.851491550417E-06)*Y- + 6.37524802411383E-05 )*Y+1.36795464918785E-03 )*Y- + 2.42051126993146E-02 )*Y+3.97847167557815E-01; + RT5 = ((((((((((-6.07053986130526E-14*Y+1.04447493138843E-12)*Y- + 4.286617818951E-13)*Y-2.632066100073E-10)*Y+ + 4.804518986559E-09)*Y-1.835675889421E-08)*Y- + 1.068175391334E-06)*Y+3.292234974141E-05)*Y- + 5.94805357558251E-04 )*Y+8.29382168612791E-03 )*Y- + 9.93122509049447E-02 )*Y+1.09857804755042E+00; + WW1 = (((((((((-9.10338640266542E-15*Y+1.00438927627833E-13)*Y+ + 7.817349237071E-13)*Y-2.547619474232E-11)*Y+ + 1.479321506529E-10)*Y+1.52314028857627E-09 )*Y+ + 9.20072040917242E-09 )*Y-2.19427111221848E-06 )*Y+ + 8.65797782880311E-05 )*Y-2.82718629312875E-03 )*Y+ + 1.28718310443295E-01; + WW2 = ((((((((( 5.52380927618760E-15*Y-6.43424400204124E-14)*Y- + 2.358734508092E-13)*Y+8.261326648131E-12)*Y+ + 9.229645304956E-11)*Y-5.68108973828949E-09 )*Y+ + 1.22477891136278E-07 )*Y-2.11919643127927E-06 )*Y+ + 4.23605032368922E-05 )*Y-1.14423444576221E-03 )*Y+ + 5.06607252890186E-02; + WW3 = ((((((((( 3.99457454087556E-15*Y-5.11826702824182E-14)*Y- + 4.157593182747E-14)*Y+4.214670817758E-12)*Y+ + 6.705582751532E-11)*Y-3.36086411698418E-09 )*Y+ + 6.07453633298986E-08 )*Y-7.40736211041247E-07 )*Y+ + 8.84176371665149E-06 )*Y-1.72559275066834E-04 )*Y+ + 7.16639814253567E-03; + WW4 = (((((((((((-2.14649508112234E-18*Y-2.45525846412281E-18)*Y+ + 6.126212599772E-16)*Y-8.526651626939E-15)*Y+ + 4.826636065733E-14)*Y-3.39554163649740E-13 )*Y+ + 1.67070784862985E-11 )*Y-4.42671979311163E-10 )*Y+ + 6.77368055908400E-09 )*Y-7.03520999708859E-08 )*Y+ + 6.04993294708874E-07 )*Y-7.80555094280483E-06 )*Y+ + 2.85954806605017E-04; + WW5 = ((((((((((((-5.63938733073804E-21*Y+6.92182516324628E-20)*Y- + 1.586937691507E-18)*Y+3.357639744582E-17)*Y- + 4.810285046442E-16)*Y+5.386312669975E-15)*Y- + 6.117895297439E-14)*Y+8.441808227634E-13)*Y- + 1.18527596836592E-11 )*Y+1.36296870441445E-10 )*Y- + 1.17842611094141E-09 )*Y+7.80430641995926E-09 )*Y- + 5.97767417400540E-08 )*Y+1.65186146094969E-06; + } else if (X < 40) { + WW1 = sqrt(PIE4/X); + E = exp(-X); + RT1 = ((((((((-1.73363958895356E-06*X+1.19921331441483E-04)*X - + 1.59437614121125E-02)*X+1.13467897349442E+00)*X - + 4.47216460864586E+01)*X+1.06251216612604E+03)*X - + 1.52073917378512E+04)*X+1.20662887111273E+05)*X - + 4.07186366852475E+05)*E + R15/(X-R15); + RT2 = ((((((((-1.60102542621710E-05*X+1.10331262112395E-03)*X - + 1.50043662589017E-01)*X+1.05563640866077E+01)*X - + 4.10468817024806E+02)*X+9.62604416506819E+03)*X - + 1.35888069838270E+05)*X+1.06107577038340E+06)*X - + 3.51190792816119E+06)*E + R25/(X-R25); + RT3 = ((((((((-4.48880032128422E-05*X+2.69025112122177E-03)*X - + 4.01048115525954E-01)*X+2.78360021977405E+01)*X - + 1.04891729356965E+03)*X+2.36985942687423E+04)*X - + 3.19504627257548E+05)*X+2.34879693563358E+06)*X - + 7.16341568174085E+06)*E + R35/(X-R35); + RT4 = ((((((((-6.38526371092582E-05*X-2.29263585792626E-03)*X - + 7.65735935499627E-02)*X+9.12692349152792E+00)*X - + 2.32077034386717E+02)*X+2.81839578728845E+02)*X + + 9.59529683876419E+04)*X-1.77638956809518E+06)*X + + 1.02489759645410E+07)*E + R45/(X-R45); + RT5 = ((((((((-3.59049364231569E-05*X-2.25963977930044E-02)*X + + 1.12594870794668E+00)*X-4.56752462103909E+01)*X + + 1.05804526830637E+03)*X-1.16003199605875E+04)*X - + 4.07297627297272E+04)*X+2.22215528319857E+06)*X - + 1.61196455032613E+07)*E + R55/(X-R55); + WW5 = (((((((((-4.61100906133970E-10*X+1.43069932644286E-07)*X - + 1.63960915431080E-05)*X+1.15791154612838E-03)*X - + 5.30573476742071E-02)*X+1.61156533367153E+00)*X - + 3.23248143316007E+01)*X+4.12007318109157E+02)*X - + 3.02260070158372E+03)*X+9.71575094154768E+03)*E + W55*WW1; + WW4 = (((((((((-2.40799435809950E-08*X+8.12621667601546E-06)*X - + 9.04491430884113E-04)*X+6.37686375770059E-02)*X - + 2.96135703135647E+00)*X+9.15142356996330E+01)*X - + 1.86971865249111E+03)*X+2.42945528916947E+04)*X - + 1.81852473229081E+05)*X+5.96854758661427E+05)*E + W45*WW1; + WW3 = (((((((( 1.83574464457207E-05*X-1.54837969489927E-03)*X + + 1.18520453711586E-01)*X-6.69649981309161E+00)*X + + 2.44789386487321E+02)*X-5.68832664556359E+03)*X + + 8.14507604229357E+04)*X-6.55181056671474E+05)*X + + 2.26410896607237E+06)*E + W35*WW1; + WW2 = (((((((( 2.77778345870650E-05*X-2.22835017655890E-03)*X + + 1.61077633475573E-01)*X-8.96743743396132E+00)*X + + 3.28062687293374E+02)*X-7.65722701219557E+03)*X + + 1.10255055017664E+05)*X-8.92528122219324E+05)*X + + 3.10638627744347E+06)*E + W25*WW1; + WW1 = WW1-0.01962E+00*E-WW2-WW3-WW4-WW5; + } else if (X < 59.0) { + WW1 = sqrt(PIE4/X); + XXX = X * X * X; + E = XXX*exp(-X); + RT1 = (((-2.43758528330205E-02*X+2.07301567989771E+00)*X - + 6.45964225381113E+01)*X+7.14160088655470E+02)*E + R15/(X-R15); + RT2 = (((-2.28861955413636E-01*X+1.93190784733691E+01)*X - + 5.99774730340912E+02)*X+6.61844165304871E+03)*E + R25/(X-R25); + RT3 = (((-6.95053039285586E-01*X+5.76874090316016E+01)*X - + 1.77704143225520E+03)*X+1.95366082947811E+04)*E + R35/(X-R35); + RT4 = (((-1.58072809087018E+00*X+1.27050801091948E+02)*X - + 3.86687350914280E+03)*X+4.23024828121420E+04)*E + R45/(X-R45); + RT5 = (((-3.33963830405396E+00*X+2.51830424600204E+02)*X - + 7.57728527654961E+03)*X+8.21966816595690E+04)*E + R55/(X-R55); + E = XXX*E; + WW5 = (( 1.35482430510942E-08*X-3.27722199212781E-07)*X + + 2.41522703684296E-06)*E + W55*WW1; + WW4 = (( 1.23464092261605E-06*X-3.55224564275590E-05)*X + + 3.03274662192286E-04)*E + W45*WW1; + WW3 = (( 1.34547929260279E-05*X-4.19389884772726E-04)*X + + 3.87706687610809E-03)*E + W35*WW1; + WW2 = (( 2.09539509123135E-05*X-6.87646614786982E-04)*X + + 6.68743788585688E-03)*E + W25*WW1; + WW1 = WW1-WW2-WW3-WW4-WW5; + } else { + WW1 = sqrt(PIE4/X); + RT1 = R15/(X-R15); + RT2 = R25/(X-R25); + RT3 = R35/(X-R35); + RT4 = R45/(X-R45); + RT5 = R55/(X-R55); + WW2 = W25*WW1; + WW3 = W35*WW1; + WW4 = W45*WW1; + WW5 = W55*WW1; + WW1 = WW1-WW2-WW3-WW4-WW5; + } + roots[0] = RT1; + roots[1] = RT2; + roots[2] = RT3; + roots[3] = RT4; + roots[4] = RT5; + weights[0] = WW1; + weights[1] = WW2; + weights[2] = WW3; + weights[3] = WW4; + weights[4] = WW5; + return 0; +} + +#define POLYNOMIAL_VALUE1(p, a, order, x) \ +p = a[order]; \ +for (i = 1; i <= order; i++) { \ + p = p * x + a[order-i]; \ +} + +#define SET_ZERO(a, n, start) \ + for (k = start; k < n; ++k) { \ + for (i = 0; i < n; ++i) { \ + a[i + k * n] = 0; \ + } \ + } \ + +static int R_dsmit(dtype *cs, dtype *fmt_ints, int n) +{ + int i, j, k; + dtype fac, dot, tmp; + dtype v[MXRYSROOTS]; + + fac = -fmt_ints[1] / fmt_ints[0]; + tmp = fmt_ints[2] + fac * fmt_ints[1]; + if (tmp <= 0) { + //fprintf(stderr, "libcint::rys_roots negative value in sqrt for roots %d (j=1)\n", n-1); + SET_ZERO(cs, n, 1); + return 1; + } + tmp = 1 / sqrt(tmp); + cs[0+0*n] = 1 / sqrt(fmt_ints[0]); + cs[0+1*n] = fac * tmp; + cs[1+1*n] = tmp; + + for (j = 2; j < n; ++j) { + for (k = 0; k < j; ++k) { + v[k] = 0; + } + fac = fmt_ints[j + j]; + for (k = 0; k < j; ++k) { + dot = 0; + for (i = 0; i <= k; ++i) { + dot += cs[i + k * n] * fmt_ints[i+j]; + } + for (i = 0; i <= k; ++i) { + v[i] -= dot * cs[i + k * n]; + } + fac -= dot * dot; + } + + if (fac <= 0) { + + SET_ZERO(cs, n, j); + if (fac == 0) { + return 0; + } + //fprintf(stderr, "libcint::rys_roots negative value in sqrt for roots %d (j=%d)\n", n-1, j); + return j; + } + fac = 1 / sqrt(fac); + cs[j + j * n] = fac; + for (k = 0; k < j; ++k) { + cs[k + j * n] = fac * v[k]; + } + } + return 0; +} + + +static int _rdk_rys_roots(int nroots, dtype *fmt_ints, + dtype *roots, dtype *weights) +{ + int i, k, j, order; + int nroots1 = nroots + 1; + dtype rt[MXRYSROOTS + MXRYSROOTS * MXRYSROOTS]; + dtype *cs = rt + nroots1; + dtype *a; + dtype root, poly, dum; + + + if (fmt_ints[0] == 0) { + for (k = 0; k < nroots; ++k) { + roots[k] = 0; + weights[k] = 0; + } + return 0; + } + if (nroots == 1) { + roots[0] = fmt_ints[1] / (fmt_ints[0] - fmt_ints[1]); + weights[0] = fmt_ints[0]; + return 0; + } + + int error = R_dsmit(cs, fmt_ints, nroots1); + if (error) { + return 1; + } + error = _CINT_polynomial_roots(rt, cs, nroots); + if (error) { + return error; + } + + for (k = 0; k < nroots; ++k) { + root = rt[k]; + + + + + if (root == 1) { + roots[k] = 0; + weights[k] = 0; + continue; + } + + dum = 1 / fmt_ints[0]; + for (j = 1; j < nroots; ++j) { + order = j; + a = cs + j * nroots1; + + POLYNOMIAL_VALUE1(poly, a, order, root); + dum += poly * poly; + } + roots[k] = root / (1 - root); + weights[k] = 1 / dum; + } + return 0; +} + +int CINTrys_schmidt(int nroots, dtype x, dtype lower, dtype *roots, dtype *weights) +{ + dtype fmt_ints[MXRYSROOTS*2]; + if (lower == 0) { + gamma_inc_like(fmt_ints, x, nroots*2); + } else { + fmt_erfc_like(fmt_ints, x, lower, nroots*2); + } + return _rdk_rys_roots(nroots, fmt_ints, roots, weights); +} + + +#ifdef HAVE_SQRTL +#define SQRTL sqrtl +#else +static dtype c99_sqrtl(dtype x) +{ + dtype z = sqrt(x); + + + + return (z*z + x)/(z * 2); +} +#define SQRTL c99_sqrtl +#endif + +#ifdef HAVE_EXPL +#define EXPL expl +#else + + +static dtype c99_expl(dtype x) +{ + return exp(x); +} +#define EXPL c99_expl +#endif + +static int R_lsmit(dtype *cs, dtype *fmt_ints, int n) +{ + int i, j, k; + dtype fac, dot, tmp; + dtype v[MXRYSROOTS]; + + fac = -fmt_ints[1] / fmt_ints[0]; + tmp = fmt_ints[2] + fac * fmt_ints[1]; + if (tmp <= 0) { + //fprintf(stderr, "libcint::rys_roots negative value in sqrtl for roots %d (j=1)\n", n-1); + SET_ZERO(cs, n, 1); + return 1; + } + + + //cs[0+0*n] = 1 / SQRTL(fmt_ints[0]); + //p = 1 / sqrt(tmp); + tmp = 1 / sqrt(tmp); + cs[0+0*n] = 1 / sqrt(fmt_ints[0]); + cs[0+1*n] = fac *tmp; + cs[1+1*n] = tmp; + /* + tmp = 1 / SQRTL(tmp); + cs[0+0*n] = 1 / SQRTL(fmt_ints[0]); + cs[0+1*n] = fac * tmp; + cs[1+1*n] = tmp; + + */ + + for (j = 2; j < n; ++j) { + for (k = 0; k < j; ++k) { + v[k] = 0; + } + fac = fmt_ints[j + j]; + for (k = 0; k < j; ++k) { + dot = 0; + for (i = 0; i <= k; ++i) { + dot += cs[i + k * n] * fmt_ints[i+j]; + } + for (i = 0; i <= k; ++i) { + v[i] -= dot * cs[i + k * n]; + } + fac -= dot * dot; + } + + if (fac <= 0) { + + SET_ZERO(cs, n, j); + if (fac == 0) { + return 0; + } + //fprintf(stderr, "libcint::rys_roots negative value in sqrtl for roots %d (j=%d)\n", n-1, j); + return j; + } + //fac = 1 / SQRTL(fac); + fac = 1 / sqrt(fac); + cs[j + j * n] = fac; + for (k = 0; k < j; ++k) { + cs[k + j * n] = fac * v[k]; + } + + } + return 0; +} + +int CINTlrys_schmidt(int nroots, dtype x, dtype lower, dtype *roots, dtype *weights) +{ + int i, k, j, order, error; + int nroots1 = nroots + 1; + dtype fmt_ints[MXRYSROOTS * 2 + MXRYSROOTS * MXRYSROOTS]; + dtype *qcs = fmt_ints + nroots1 * 2; + dtype rt[MXRYSROOTS + MXRYSROOTS * MXRYSROOTS]; + dtype *cs = rt + nroots; + dtype *a; + dtype root, poly, dum, dum0; + + if (lower == 0) { + lgamma_inc_like(fmt_ints, x, nroots*2); + } else { + fmt_lerfc_like(fmt_ints, x, lower, nroots*2); + } + + if (fmt_ints[0] == 0) { + for (k = 0; k < nroots; ++k) { + roots[k] = 0; + weights[k] = 0; + } + return 0; + } + + if (nroots == 1) { + rt[0] = fmt_ints[1] / fmt_ints[0]; + } else { + error = R_lsmit(qcs, fmt_ints, nroots1); + if (error) { + return error; + } + for (k = 1; k < nroots1; k++) { + for (i = 0; i <= k; i++) { + cs[k * nroots1 + i] = qcs[k * nroots1 + i]; + } + } + + error = _CINT_polynomial_roots(rt, cs, nroots); + if (error) { + return error; + } + } + + dum0 = 1 / fmt_ints[0]; + for (k = 0; k < nroots; ++k) { + root = rt[k]; + if (root == 1) { + roots[k] = 0; + weights[k] = 0; + continue; + } + + dum = dum0; + for (j = 1; j < nroots; ++j) { + order = j; + a = cs + j * nroots1; + + POLYNOMIAL_VALUE1(poly, a, order, root); + dum += poly * poly; + } + roots[k] = root / (1 - root); + weights[k] = 1 / dum; + } + return 0; +} + +#ifdef HAVE_QUADMATH_H + + + + +#endif + + + + +//#define MAX(I,J) ((I) > (J) ? (I) : (J)) +//#define MIN(I,J) ((I) < (J) ? (I) : (J)) + +int GTOmax_shell_dim(const int *ao_loc, const int *shls_slice, int ncenter) +{ + int i; + int i0 = shls_slice[0]; + int i1 = shls_slice[1]; + int di = 0; + for (i = 1; i < ncenter; i++) { + i0 = MIN(i0, shls_slice[i*2 ]); + i1 = MAX(i1, shls_slice[i*2+1]); + } + for (i = i0; i < i1; i++) { + di = MAX(di, ao_loc[i+1]-ao_loc[i]); + } + return di; +} + +#ifdef __cplusplus +int GTOmax_cache_size(int (*intor)(...), int *shls_slice, int ncenter, + int *atm, int natm, int *bas, int nbas, dtype *env) +#else +int GTOmax_cache_size(int (*intor)(), int *shls_slice, int ncenter, + int *atm, int natm, int *bas, int nbas, dtype *env) +#endif +{ + int i, n; + int i0 = shls_slice[0]; + int i1 = shls_slice[1]; + for (i = 1; i < ncenter; i++) { + i0 = MIN(i0, shls_slice[i*2 ]); + i1 = MAX(i1, shls_slice[i*2+1]); + } + int shls[4]; + int cache_size = 0; + for (i = i0; i < i1; i++) { + shls[0] = i; + shls[1] = i; + shls[2] = i; + shls[3] = i; + n = (*intor)(NULL, NULL, shls, atm, natm, bas, nbas, env, NULL, NULL); + cache_size = MAX(cache_size, n); + } + return cache_size; +} + + +#ifdef __cplusplus +void GTOnr2e_fill_s1(int (*intor)(...), int (*fprescreen)(...), + dtype *eri, dtype *buf, int comp, int ishp, int jshp, + int *shls_slice, int *ao_loc, CINTOpt *cintopt, + int *atm, int natm, int *bas, int nbas, dtype *env, int _WHICH_INTEGRAL) + +#else +void GTOnr2e_fill_s1(int (*intor)(), int (*fprescreen)(), + dtype *eri, dtype *buf, int comp, int ishp, int jshp, + int *shls_slice, int *ao_loc, CINTOpt *cintopt, + int *atm, int natm, int *bas, int nbas, dtype *env, int _WHICH_INTEGRAL) +#endif +{ + WHICH_INTEGRAL = WHICH_INTEGRAL; + int ish0 = shls_slice[0]; + int ish1 = shls_slice[1]; + int jsh0 = shls_slice[2]; + int jsh1 = shls_slice[3]; + int ksh0 = shls_slice[4]; + int ksh1 = shls_slice[5]; + int lsh0 = shls_slice[6]; + int lsh1 = shls_slice[7]; + int ni = ao_loc[ish1] - ao_loc[ish0]; + int nj = ao_loc[jsh1] - ao_loc[jsh0]; + int nk = ao_loc[ksh1] - ao_loc[ksh0]; + int nl = ao_loc[lsh1] - ao_loc[lsh0]; + size_t nij = ni * nj; + size_t nkl = nk * nl; + size_t neri = nij * nkl; + + int ish = ishp + ish0; + int jsh = jshp + jsh0; + int i0 = ao_loc[ish] - ao_loc[ish0]; + int j0 = ao_loc[jsh] - ao_loc[jsh0]; + eri += nkl * (i0 * nj + j0); + + int di = ao_loc[ish+1] - ao_loc[ish]; + int dj = ao_loc[jsh+1] - ao_loc[jsh]; + int dij = di * dj; + int k0, l0, dk, dl, dijk, dijkl; + int i, j, k, l, icomp; + int ksh, lsh; + int shls[4]; + dtype *eri0, *peri, *buf0, *pbuf, *cache; + + shls[0] = ish; + shls[1] = jsh; + //printf("Which_integral %d\n", WHICH_INTEGRAL); + + for (ksh = ksh0; ksh < ksh1; ksh++) { + for (lsh = lsh0; lsh < lsh1; lsh++) { + shls[2] = ksh; + shls[3] = lsh; + k0 = ao_loc[ksh] - ao_loc[ksh0]; + l0 = ao_loc[lsh] - ao_loc[lsh0]; + dk = ao_loc[ksh+1] - ao_loc[ksh]; + dl = ao_loc[lsh+1] - ao_loc[lsh]; + dijk = dij * dk; + dijkl = dijk * dl; + cache = buf + dijkl * comp; + + FINT not_empty; + if (WHICH_INTEGRAL == INT2E_SPH){ + //printf(">> int2e_sph\n"); + not_empty = int2e_sph(buf, NULL, shls, atm, natm, bas, nbas, env, cintopt, cache); + //printf("%d\n", not_empty); + } + else if (WHICH_INTEGRAL == INT2E_IP1_SPH){ + not_empty = int2e_ip1_sph(buf, NULL, shls, atm, natm, bas, nbas, env, cintopt, cache); + } + + if (not_empty + //(*fprescreen)(shls, atm, bas, env) && + //(*intor)(buf, NULL, shls, atm, natm, bas, nbas, env, cintopt, cache) + //int2e_sph(buf, NULL, shls, atm, natm, bas, nbas, env, cintopt, cache) + ) { + //printf("inside\n"); + eri0 = eri + k0*nl+l0; + buf0 = buf; + for (icomp = 0; icomp < comp; icomp++) { + for (i = 0; i < di; i++) { + for (j = 0; j < dj; j++) { + peri = eri0 + nkl*(i*nj+j); + for (k = 0; k < dk; k++) { + for (pbuf = buf0 + k*dij + j*di + i, + l = 0; l < dl; l++) { + peri[k*nl+l] = pbuf[l*dijk]; + } } + } } + buf0 += dijkl; + eri0 += neri; + } + } else { + eri0 = eri + k0*nl+l0; + for (icomp = 0; icomp < comp; icomp++) { + for (i = 0; i < di; i++) { + for (j = 0; j < dj; j++) { + peri = eri0 + nkl*(i*nj+j); + for (k = 0; k < dk; k++) { + for (l = 0; l < dl; l++) { + peri[k*nl+l] = 0; + } + } + } } + eri0 += neri; + } + } + } } +} + +#ifdef __cplusplus +void GTOnr2e_fill_s2ij(int (*intor)(...), int (*fprescreen)(...), + dtype *eri, dtype *buf, int comp, int ishp, int jshp, + int *shls_slice, int *ao_loc, CINTOpt *cintopt, + int *atm, int natm, int *bas, int nbas, dtype *env) +#else +void GTOnr2e_fill_s2ij(int (*intor)(), int (*fprescreen)(), + dtype *eri, dtype *buf, int comp, int ishp, int jshp, + int *shls_slice, int *ao_loc, CINTOpt *cintopt, + int *atm, int natm, int *bas, int nbas, dtype *env) +#endif +{ + if (ishp < jshp) { + return; + } + + int ish0 = shls_slice[0]; + int ish1 = shls_slice[1]; + int jsh0 = shls_slice[2]; + + int ksh0 = shls_slice[4]; + int ksh1 = shls_slice[5]; + int lsh0 = shls_slice[6]; + int lsh1 = shls_slice[7]; + int ni = ao_loc[ish1] - ao_loc[ish0]; + + int nk = ao_loc[ksh1] - ao_loc[ksh0]; + int nl = ao_loc[lsh1] - ao_loc[lsh0]; + size_t nij = ni * (ni+1) / 2; + size_t nkl = nk * nl; + size_t neri = nij * nkl; + + int ish = ishp + ish0; + int jsh = jshp + jsh0; + int i0 = ao_loc[ish] - ao_loc[ish0]; + int j0 = ao_loc[jsh] - ao_loc[jsh0]; + eri += nkl * (i0*(i0+1)/2 + j0); + + int di = ao_loc[ish+1] - ao_loc[ish]; + int dj = ao_loc[jsh+1] - ao_loc[jsh]; + int dij = di * dj; + int k0, l0, dk, dl, dijk, dijkl; + int i, j, k, l, icomp; + int ksh, lsh; + int shls[4]; + dtype *eri0, *peri0, *peri, *buf0, *pbuf, *cache; + + shls[0] = ish; + shls[1] = jsh; + + for (ksh = ksh0; ksh < ksh1; ksh++) { + for (lsh = lsh0; lsh < lsh1; lsh++) { + shls[2] = ksh; + shls[3] = lsh; + k0 = ao_loc[ksh] - ao_loc[ksh0]; + l0 = ao_loc[lsh] - ao_loc[lsh0]; + dk = ao_loc[ksh+1] - ao_loc[ksh]; + dl = ao_loc[lsh+1] - ao_loc[lsh]; + dijk = dij * dk; + dijkl = dijk * dl; + cache = buf + dijkl * comp; + if ((*fprescreen)(shls, atm, bas, env) && + (*intor)(buf, NULL, shls, atm, natm, bas, nbas, env, cintopt, cache)) { + eri0 = eri + k0*nl+l0; + buf0 = buf; + for (icomp = 0; icomp < comp; icomp++) { + peri0 = eri0; + if (ishp > jshp) { + for (i = 0; i < di; i++, peri0+=nkl*(i0+i)) { + for (j = 0; j < dj; j++) { + peri = peri0 + nkl*j; + for (k = 0; k < dk; k++) { + for (pbuf = buf0 + k*dij + j*di + i, + l = 0; l < dl; l++) { + peri[k*nl+l] = pbuf[l*dijk]; + } } + } } + } else { + for (i = 0; i < di; i++, peri0+=nkl*(i0+i)) { + for (j = 0; j <= i; j++) { + peri = peri0 + nkl*j; + for (k = 0; k < dk; k++) { + for (pbuf = buf0 + k*dij + j*di + i, + l = 0; l < dl; l++) { + peri[k*nl+l] = pbuf[l*dijk]; + } } + } } + } + buf0 += dijkl; + eri0 += neri; + } + } else { + eri0 = eri + k0*nl+l0; + for (icomp = 0; icomp < comp; icomp++) { + peri0 = eri0; + if (ishp > jshp) { + for (i = 0; i < di; i++, peri0+=nkl*(i0+i)) { + for (j = 0; j < dj; j++) { + peri = peri0 + nkl*j; + for (k = 0; k < dk; k++) { + for (l = 0; l < dl; l++) { + peri[k*nl+l] = 0; + } } + } } + } else { + for (i = 0; i < di; i++, peri0+=nkl*(i0+i)) { + for (j = 0; j <= i; j++) { + peri = peri0 + nkl*j; + for (k = 0; k < dk; k++) { + for (l = 0; l < dl; l++) { + peri[k*nl+l] = 0; + } } + } } + } + eri0 += neri; + } + } + } } +} + +#ifdef __cplusplus +void GTOnr2e_fill_s2kl(int (*intor)(...), int (*fprescreen)(...), + dtype *eri, dtype *buf, int comp, int ishp, int jshp, + int *shls_slice, int *ao_loc, CINTOpt *cintopt, + int *atm, int natm, int *bas, int nbas, dtype *env) +#else +void GTOnr2e_fill_s2kl(int (*intor)(), int (*fprescreen)(), + dtype *eri, dtype *buf, int comp, int ishp, int jshp, + int *shls_slice, int *ao_loc, CINTOpt *cintopt, + int *atm, int natm, int *bas, int nbas, dtype *env) +#endif +{ + int ish0 = shls_slice[0]; + int ish1 = shls_slice[1]; + int jsh0 = shls_slice[2]; + int jsh1 = shls_slice[3]; + int ksh0 = shls_slice[4]; + int ksh1 = shls_slice[5]; + int lsh0 = shls_slice[6]; + + int ni = ao_loc[ish1] - ao_loc[ish0]; + int nj = ao_loc[jsh1] - ao_loc[jsh0]; + int nk = ao_loc[ksh1] - ao_loc[ksh0]; + + size_t nij = ni * nj; + size_t nkl = nk * (nk+1) / 2; + size_t neri = nij * nkl; + + int ish = ishp + ish0; + int jsh = jshp + jsh0; + int i0 = ao_loc[ish] - ao_loc[ish0]; + int j0 = ao_loc[jsh] - ao_loc[jsh0]; + eri += nkl * (i0 * nj + j0); + + int di = ao_loc[ish+1] - ao_loc[ish]; + int dj = ao_loc[jsh+1] - ao_loc[jsh]; + int dij = di * dj; + int k0, l0, dk, dl, dijk, dijkl; + int i, j, k, l, icomp; + int ksh, lsh, kshp, lshp; + int shls[4]; + dtype *eri0, *peri, *buf0, *pbuf, *cache; + + shls[0] = ish; + shls[1] = jsh; + + for (kshp = 0; kshp < ksh1-ksh0; kshp++) { + for (lshp = 0; lshp <= kshp; lshp++) { + ksh = kshp + ksh0; + lsh = lshp + lsh0; + shls[2] = ksh; + shls[3] = lsh; + k0 = ao_loc[ksh] - ao_loc[ksh0]; + l0 = ao_loc[lsh] - ao_loc[lsh0]; + dk = ao_loc[ksh+1] - ao_loc[ksh]; + dl = ao_loc[lsh+1] - ao_loc[lsh]; + dijk = dij * dk; + dijkl = dijk * dl; + cache = buf + dijkl * comp; + if ((*fprescreen)(shls, atm, bas, env) && + (*intor)(buf, NULL, shls, atm, natm, bas, nbas, env, cintopt, cache)) { + eri0 = eri + k0*(k0+1)/2+l0; + buf0 = buf; + for (icomp = 0; icomp < comp; icomp++) { + if (kshp > lshp) { + for (i = 0; i < di; i++) { + for (j = 0; j < dj; j++) { + peri = eri0 + nkl*(i*nj+j); + for (k = 0; k < dk; k++, peri+=k0+k) { + for (pbuf = buf0 + k*dij + j*di + i, + l = 0; l < dl; l++) { + peri[l] = pbuf[l*dijk]; + } } + } } + } else { + for (i = 0; i < di; i++) { + for (j = 0; j < dj; j++) { + peri = eri0 + nkl*(i*nj+j); + for (k = 0; k < dk; k++, peri+=k0+k) { + for (pbuf = buf0 + k*dij + j*di + i, + l = 0; l <= k; l++) { + peri[l] = pbuf[l*dijk]; + } } + } } + } + buf0 += dijkl; + eri0 += neri; + } + } else { + eri0 = eri + k0*(k0+1)/2+l0; + for (icomp = 0; icomp < comp; icomp++) { + if (kshp > lshp) { + for (i = 0; i < di; i++) { + for (j = 0; j < dj; j++) { + peri = eri0 + nkl*(i*nj+j); + for (k = 0; k < dk; k++, peri+=k0+k) { + for (l = 0; l < dl; l++) { + peri[l] = 0; + } } + } } + } else { + for (i = 0; i < di; i++) { + for (j = 0; j < dj; j++) { + peri = eri0 + nkl*(i*nj+j); + for (k = 0; k < dk; k++, peri+=k0+k) { + for (l = 0; l <= k; l++) { + peri[l] = 0; + } } + } } + } + eri0 += neri; + } + } + } } +} + +#ifdef __cplusplus +void GTOnr2e_fill_s4(int (*intor)(...), int (*fprescreen)(...), + dtype *eri, dtype *buf, int comp, int ishp, int jshp, + int *shls_slice, int *ao_loc, CINTOpt *cintopt, + int *atm, int natm, int *bas, int nbas, dtype *env) +#else +void GTOnr2e_fill_s4(int (*intor)(), int (*fprescreen)(), + dtype *eri, dtype *buf, int comp, int ishp, int jshp, + int *shls_slice, int *ao_loc, CINTOpt *cintopt, + int *atm, int natm, int *bas, int nbas, dtype *env) +#endif +{ + if (ishp < jshp) { + return; + } + + int ish0 = shls_slice[0]; + int ish1 = shls_slice[1]; + int jsh0 = shls_slice[2]; + + int ksh0 = shls_slice[4]; + int ksh1 = shls_slice[5]; + int lsh0 = shls_slice[6]; + + int ni = ao_loc[ish1] - ao_loc[ish0]; + + int nk = ao_loc[ksh1] - ao_loc[ksh0]; + + size_t nij = ni * (ni+1) / 2; + size_t nkl = nk * (nk+1) / 2; + size_t neri = nij * nkl; + + int ish = ishp + ish0; + int jsh = jshp + jsh0; + int i0 = ao_loc[ish] - ao_loc[ish0]; + int j0 = ao_loc[jsh] - ao_loc[jsh0]; + eri += nkl * (i0*(i0+1)/2 + j0); + + int di = ao_loc[ish+1] - ao_loc[ish]; + int dj = ao_loc[jsh+1] - ao_loc[jsh]; + int dij = di * dj; + int k0, l0, dk, dl, dijk, dijkl; + int i, j, k, l, icomp; + int ksh, lsh, kshp, lshp; + int shls[4]; + dtype *eri0, *peri0, *peri, *buf0, *pbuf, *cache; + + shls[0] = ish; + shls[1] = jsh; + + for (kshp = 0; kshp < ksh1-ksh0; kshp++) { + for (lshp = 0; lshp <= kshp; lshp++) { + ksh = kshp + ksh0; + lsh = lshp + lsh0; + shls[2] = ksh; + shls[3] = lsh; + k0 = ao_loc[ksh] - ao_loc[ksh0]; + l0 = ao_loc[lsh] - ao_loc[lsh0]; + dk = ao_loc[ksh+1] - ao_loc[ksh]; + dl = ao_loc[lsh+1] - ao_loc[lsh]; + dijk = dij * dk; + dijkl = dijk * dl; + cache = buf + dijkl * comp; + if ((*fprescreen)(shls, atm, bas, env) && + (*intor)(buf, NULL, shls, atm, natm, bas, nbas, env, cintopt, cache)) { + eri0 = eri + k0*(k0+1)/2+l0; + buf0 = buf; + for (icomp = 0; icomp < comp; icomp++) { + peri0 = eri0; + if (kshp > lshp && ishp > jshp) { + for (i = 0; i < di; i++, peri0+=nkl*(i0+i)) { + for (j = 0; j < dj; j++) { + peri = peri0 + nkl*j; + for (k = 0; k < dk; k++, peri+=k0+k) { + for (pbuf = buf0 + k*dij + j*di + i, + l = 0; l < dl; l++) { + peri[l] = pbuf[l*dijk]; + } } + } } + } else if (ish > jsh) { + for (i = 0; i < di; i++, peri0+=nkl*(i0+i)) { + for (j = 0; j < dj; j++) { + peri = peri0 + nkl*j; + for (k = 0; k < dk; k++, peri+=k0+k) { + for (pbuf = buf0 + k*dij + j*di + i, + l = 0; l <= k; l++) { + peri[l] = pbuf[l*dijk]; + } } + } } + } else if (ksh > lsh) { + for (i = 0; i < di; i++, peri0+=nkl*(i0+i)) { + for (j = 0; j <= i; j++) { + peri = peri0 + nkl*j; + for (k = 0; k < dk; k++, peri+=k0+k) { + for (pbuf = buf0 + k*dij + j*di + i, + l = 0; l < dl; l++) { + peri[l] = pbuf[l*dijk]; + } } + } } + } else { + for (i = 0; i < di; i++, peri0+=nkl*(i0+i)) { + for (j = 0; j <= i; j++) { + peri = peri0 + nkl*j; + for (k = 0; k < dk; k++, peri+=k0+k) { + for (pbuf = buf0 + k*dij + j*di + i, + l = 0; l <= k; l++) { + peri[l] = pbuf[l*dijk]; + } } + } } + } + buf0 += dijkl; + eri0 += neri; + } + } else { + eri0 = eri + k0*(k0+1)/2+l0; + buf0 = buf; + for (icomp = 0; icomp < comp; icomp++) { + peri0 = eri0; + if (kshp > lshp && ishp > jshp) { + for (i = 0; i < di; i++, peri0+=nkl*(i0+i)) { + for (j = 0; j < dj; j++) { + peri = peri0 + nkl*j; + for (k = 0; k < dk; k++, peri+=k0+k) { + for (l = 0; l < dl; l++) { + peri[l] = 0; + } } + } } + } else if (ish > jsh) { + for (i = 0; i < di; i++, peri0+=nkl*(i0+i)) { + for (j = 0; j < dj; j++) { + peri = peri0 + nkl*j; + for (k = 0; k < dk; k++, peri+=k0+k) { + for (l = 0; l <= k; l++) { + peri[l] = 0; + } } + } } + } else if (ksh > lsh) { + for (i = 0; i < di; i++, peri0+=nkl*(i0+i)) { + for (j = 0; j <= i; j++) { + peri = peri0 + nkl*j; + for (k = 0; k < dk; k++, peri+=k0+k) { + for (l = 0; l < dl; l++) { + peri[l] = 0; + } } + } } + } else { + for (i = 0; i < di; i++, peri0+=nkl*(i0+i)) { + for (j = 0; j <= i; j++) { + peri = peri0 + nkl*j; + for (k = 0; k < dk; k++, peri+=k0+k) { + for (l = 0; l <= k; l++) { + peri[l] = 0; + } } + } } + } + eri0 += neri; + } + } + } } +} + + +static int no_prescreen() +{ + return 1; +} + +#ifdef __cplusplus +void GTOnr2e_fill_drv(int (*intor)(...), void (*fill)(...), int (*fprescreen)(...), + dtype *eri, int comp, + int *shls_slice, int *ao_loc, CINTOpt *cintopt, + int *atm, int natm, int *bas, int nbas, dtype *env, int _WHICH_INTEGRAL) +#else +void GTOnr2e_fill_drv(int (*intor)(), void (*fill)(), int (*fprescreen)(), + dtype *eri, int comp, + int *shls_slice, int *ao_loc, CINTOpt *cintopt, + int *atm, int natm, int *bas, int nbas, dtype *env, _WHICH_INTEGRAL) +#endif +{ + WHICH_INTEGRAL = _WHICH_INTEGRAL; + //printf("GTOnr2e_fill_drv, comp=%d, which_integral=%d\n", comp, WHICH_INTEGRAL); + /*printf("integral %d\n", WHICH_INTEGRAL); + if (fprescreen == NULL) { + #ifdef __cplusplus + fprescreen = (int (*)(...))no_prescreen; + #else + fprescreen = no_prescreen; + #endif + }*/ + + const int ish0 = shls_slice[0]; + const int ish1 = shls_slice[1]; + const int jsh0 = shls_slice[2]; + const int jsh1 = shls_slice[3]; + const int nish = ish1 - ish0; + const int njsh = jsh1 - jsh0; + const int di = GTOmax_shell_dim(ao_loc, shls_slice, 4); + const int cache_size = 256;//GTOmax_cache_size(intor, shls_slice, 4, + // atm, natm, bas, nbas, env); + +#pragma omp parallel +{ + int ij, i, j; + #ifdef __cplusplus + //dtype *buf = new dtype[2048]; + dtype buf[256]; + #else + dtype *buf = malloc(sizeof(dtype) * (di*di*di*di*comp + cache_size)); + #endif +#pragma omp for nowait schedule(dynamic) + for (ij = 0; ij < nish*njsh; ij++) { + i = ij / njsh; + j = ij % njsh; + //printf("loop: %d\n", ij); + //(*fill)(intor, fprescreen, eri, buf, comp, i, j, shls_slice, + GTOnr2e_fill_s1(intor, fprescreen, eri, buf, comp, i, j, + shls_slice, ao_loc, cintopt, atm, natm, bas, nbas, env, WHICH_INTEGRAL); + } + //free(buf); +} +} + + + + +#define PLAIN 0 +#define HERMITIAN 1 +#define ANTIHERMI 2 +#define SYMMETRIC 3 + +#define BLOCK_DIM 104 + +#define TRIU_LOOP(I, J) \ + for (j0 = 0; j0 < n; j0+=BLOCK_DIM) \ + for (I = 0, j1 = MIN(j0+BLOCK_DIM, n); I < j1; I++) \ + for (J = MAX(I,j0); J < j1; J++) + +void NPdsymm_triu(int n, dtype *mat, int hermi) +{ + size_t i, j, j0, j1; + + if (hermi == HERMITIAN || hermi == SYMMETRIC) { + TRIU_LOOP(i, j) { + mat[i*n+j] = mat[j*n+i]; + } + } else { + TRIU_LOOP(i, j) { + mat[i*n+j] = -mat[j*n+i]; + } + } +} + +#ifdef __cplusplus +//void GTOint2c(int (*intor)(...), dtype *mat, int comp, int hermi, +void GTOint2c(int (*intor)(dtype *out, FINT *dims, FINT *shls, + FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env, CINTOpt *opt, dtype *cache), dtype *mat, int comp, int hermi, + int *shls_slice, int *ao_loc, CINTOpt *opt, + int *atm, int natm, int *bas, int nbas, dtype *env) +#else +void GTOint2c(int (*intor)(), dtype *mat, int comp, int hermi, + int *shls_slice, int *ao_loc, CINTOpt *opt, + int *atm, int natm, int *bas, int nbas, dtype *env) +#endif +{ + //printf("ish0 jsh0 %d %d\n", shls_slice[0], shls_slice[2]); + const int ish0 = shls_slice[0]; + const int ish1 = shls_slice[1]; + const int jsh0 = shls_slice[2]; + const int jsh1 = shls_slice[3]; + const int nish = ish1 - ish0; + const int njsh = jsh1 - jsh0; + const size_t naoi = ao_loc[ish1] - ao_loc[ish0]; + const size_t naoj = ao_loc[jsh1] - ao_loc[jsh0]; + const int cache_size = 128;//GTOmax_cache_size(intor, shls_slice, 2, atm, natm, bas, nbas, env); + +/*#ifdef __POPC__ +#pragma omp parallel +{ +#endif*/ + int dims[2]= {(int)naoi, (int)naoj}; + int ish, jsh, ij, i0, j0; + int shls[2]; + #ifdef __cplusplus + //dtype cache[128]; + dtype cache[128*2]; + #else + dtype *cache = malloc(sizeof(dtype) * cache_size); + #endif + +/*#ifdef __POPC__ +#else +#pragma omp for schedule(dynamic, 4) +#endif*/ + + /*printf("[-1] "); + for (int i = 0; i < 12; i++){ + printf("%f ", mat[i]); + } + printf("\n");*/ + + + + for (ij = 0; ij < nish*njsh; ij++) { + //printf("[%d / %d]\n", ij, nish*njsh); + ish = ij / njsh; + jsh = ij % njsh; + if (hermi != PLAIN && ish > jsh) { + continue; + } + + ish += ish0; + jsh += jsh0; + //printf("ish jsh %d %d\n", ish, jsh); + shls[0] = ish; + shls[1] = jsh; + //printf("shls[] %d %d \n", shls[0], shls[1]); + //printf("%d %d\n", ish, jsh); + i0 = ao_loc[ish] - ao_loc[ish0]; + j0 = ao_loc[jsh] - ao_loc[jsh0]; + + (*intor)(mat+j0*naoi+i0, dims, shls, atm, natm, bas, nbas, env, opt, cache); + + /*printf("[%d] ", j0*naoi+i0); + for (int i = 0; i < 5; i++){ + printf("%f ", mat[i]); + } + printf("\n"); + return; */ + + //int1e_ipkin_sph(mat+j0*naoi+i0, dims, shls, atm, natm, bas, nbas, env, opt, cache); + //printf("%f\n", (mat+j0*naoi+i0)[0]); + /*for (int asd = 0; asd < 12; asd++){ + printf("%f ", mat[asd]); + } + printf("\n");*/ + + } + //free(cache); + +/*#ifdef __POPC__ +#else +} +#endif*/ + if (hermi != PLAIN) { + int ic; + for (ic = 0; ic < comp; ic++) { + NPdsymm_triu(naoi, mat+ic*naoi*naoi, hermi); + } + } + + /*printf("[D] "); + for (int i = 0; i < 12; i++){ + printf("%f ", mat[i]); + }*/ +} + + + +#ifdef __cplusplus +} +#endif diff --git a/pyscf_ipu/electron_repulsion/popcint/libcint.cpp b/pyscf_ipu/electron_repulsion/popcint/libcint.cpp new file mode 100644 index 0000000..e97a531 --- /dev/null +++ b/pyscf_ipu/electron_repulsion/popcint/libcint.cpp @@ -0,0 +1,127 @@ +#include +#include +#include +#include +#include +#include +#include "poplar/TileConstants.hpp" +#include + +using namespace poplar; + +#ifdef __IPU__ +// Use the IPU intrinsics +#include +#include +#define NAMESPACE ipu +#else +// Use the std functions +#include +#define NAMESPACE std +#endif + +#include "libcint.c" + + +class Grad : public Vertex { +public: + // TODO: Change InOut to Input. + // Using InOut so it's float* instead of const float* (which would require changing 30k lines in libcint.c) + InOut> mat; + InOut> shls_slice; + InOut> ao_loc; + InOut> atm; + InOut> bas; + InOut> env; + Input> natm; + Input> nbas; + Input> which_integral; + Output> out; + + bool compute() { + float * _env = env.data(); + int *_bas = bas.data(); + int *_atm = atm.data(); + int *_shls_slice = shls_slice.data(); + int *_ao_loc = ao_loc.data(); + float * _mat = mat.data(); + + if (which_integral.data()[0] == INT1E_KIN){ + GTOint2c( + (int (*)(dtype *out, FINT *dims, FINT *shls, FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env, CINTOpt *opt, dtype *cache)) + int1e_kin_sph, out.data(), 1, 0, _shls_slice, _ao_loc, NULL, _atm, natm.data()[0], _bas, nbas.data()[0], _env); + } + else if (which_integral.data()[0] == INT1E_NUC){ + GTOint2c( + (int (*)(dtype *out, FINT *dims, FINT *shls, FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env, CINTOpt *opt, dtype *cache)) + int1e_nuc_sph, out.data(), 1, 0, _shls_slice, _ao_loc, NULL, _atm, natm.data()[0], _bas, nbas.data()[0], _env); + } + else if (which_integral.data()[0] == INT1E_OVLP){ + GTOint2c( + (int (*)(dtype *out, FINT *dims, FINT *shls, FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env, CINTOpt *opt, dtype *cache)) + int1e_ovlp_sph, out.data(), 1, 0, _shls_slice, _ao_loc, NULL, _atm, natm.data()[0], _bas, nbas.data()[0], _env); + } + if (which_integral.data()[0] == INT1E_OVLP_IP){ + GTOint2c( + (int (*)(dtype *out, FINT *dims, FINT *shls, FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env, CINTOpt *opt, dtype *cache)) + int1e_ipovlp_sph, out.data(), 3, 0, _shls_slice, _ao_loc, NULL, _atm, natm.data()[0], _bas, nbas.data()[0], _env); + } + else if (which_integral.data()[0] == INT1E_KIN_IP){ + GTOint2c( + (int (*)(dtype *out, FINT *dims, FINT *shls, FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env, CINTOpt *opt, dtype *cache)) + int1e_ipkin_sph, out.data(), 3, 0, _shls_slice, _ao_loc, NULL, _atm, natm.data()[0], _bas, nbas.data()[0], _env); + } + else if (which_integral.data()[0] == INT1E_NUC_IP){ + GTOint2c( + (int (*)(dtype *out, FINT *dims, FINT *shls, FINT *atm, FINT natm, FINT *bas, FINT nbas, dtype *env, CINTOpt *opt, dtype *cache)) + int1e_ipnuc_sph, out.data(), 3, 0, _shls_slice, _ao_loc, NULL, _atm, natm.data()[0], _bas, nbas.data()[0], _env); + } + + + + return true; + } +}; + + + + + +class Int2e : public Vertex { +public: + //"mat", "shls_slice", "ao_loc", "atm", "bas", "env" + InOut> mat; + InOut> shls_slice; + InOut> ao_loc; + InOut> atm; + InOut> bas; + InOut> env; + Input> natm; + Input> nbas; + Input> which_integral; + Input> comp; + + Output> out; + + bool compute() { + float * _env = env.data(); + int *_bas = bas.data(); + int *_atm = atm.data(); + int *_shls_slice = shls_slice.data(); + int *_ao_loc = ao_loc.data(); + float * _mat = mat.data(); + + GTOnr2e_fill_drv( + (int (*)(...))int2e_sph, + (void (*)(...))GTOnr2e_fill_s1, + NULL, + out.data(), comp.data()[0], _shls_slice, _ao_loc, NULL, + _atm, natm.data()[0], + _bas, nbas.data()[0], + _env, which_integral.data()[0] + ); + + + return true; + } +}; diff --git a/pyscf_ipu/electron_repulsion/popcint/libcint.py b/pyscf_ipu/electron_repulsion/popcint/libcint.py new file mode 100644 index 0000000..266d468 --- /dev/null +++ b/pyscf_ipu/electron_repulsion/popcint/libcint.py @@ -0,0 +1,517 @@ +# Copyright (c) 2023 Graphcore Ltd. All rights reserved. +# [x] Refactor into {def int2e_sph, def int1e_nuc, ...}. +# [ ] Add tile-mapping of integral computation (what is basic unit we tmap? ). +# [ ] Consider how to interface this code into nanoDFT. +# [ ] Remove hard-coding of tensor (i.e. move shape computation to python/jax.trace). +# [ ] Add direct matmul. +# [ ] For -all test, compile graph once, then do all tests (add more molecules for this as well). +import os +import pyscf +import numpy as np +import ctypes +import ctypes +import numpy +from pyscf import lib +from functools import partial +import os.path as osp +import jax +import jax.numpy as jnp +from tessellate_ipu import create_ipu_tile_primitive, ipu_cycle_count, tile_map, tile_put_sharded, tile_put_replicated +vertex_filename = osp.join(osp.dirname(__file__), "libcint.cpp") +int2e = create_ipu_tile_primitive( + "Int2e" , + "Int2e" , + inputs=["mat", "shls_slice", "ao_loc", "atm", "bas", "env", "natm", "nbas", "which_integral", "comp"], + outputs={"out": 0}, + gp_filename=vertex_filename, + perf_estimate=100, +) +grad = create_ipu_tile_primitive( + "Grad" , + "Grad" , + inputs=["mat", "shls_slice", "ao_loc", "atm", "bas", "env", "natm", "nbas", "which_integral"], + outputs={"out": 0}, + gp_filename=vertex_filename, + perf_estimate=100, +) + + +libcgto = numpy.ctypeslib.load_library("libcint.so", "") +float32 = "#define dtype float" in open("libcint.c", "r").read() + +ANG_OF = 1 +NPRIM_OF = 2 +NCTR_OF = 3 +KAPPA_OF = 4 +PTR_EXP = 5 +PTR_COEFF = 6 +BAS_SLOTS = 8 +NGRIDS = 11 +PTR_GRIDS = 12 + +INT1E_KIN = 0 +INT1E_NUC = 1 +INT1E_OVLP = 2 +INT1E_KIN_IP = 3 +INT1E_NUC_IP = 4 +INT1E_OVLP_IP = 5 +INT2E_SPH = 6 +INT2E_IP1_SPH = 7 + +def make_loc(bas, key): + if 'cart' in key: + l = bas[:,ANG_OF] + dims = (l+1)*(l+2)//2 * bas[:,NCTR_OF] + elif 'sph' in key: + dims = (bas[:,ANG_OF]*2+1) * bas[:,NCTR_OF] + else: # spinor + l = bas[:,ANG_OF] + k = bas[:,KAPPA_OF] + dims = (l*4+2) * bas[:,NCTR_OF] + dims[k<0] = (l[k<0] * 2 + 2) * bas[k<0,NCTR_OF] + dims[k>0] = (l[k>0] * 2 ) * bas[k>0,NCTR_OF] + + ao_loc = numpy.empty(len(dims)+1, dtype=numpy.int32) + ao_loc[0] = 0 + dims.cumsum(dtype=numpy.int32, out=ao_loc[1:]) + return ao_loc + + + +def ipu_make_loc(bas, key): + if 'cart' in key: + l = bas[:,ANG_OF] + dims = (l+1)*(l+2)//2 * bas[:,NCTR_OF] + elif 'sph' in key: + dims = (bas[:,ANG_OF]*2+1) * bas[:,NCTR_OF] + else: # spinor + l = bas[:,ANG_OF] + k = bas[:,KAPPA_OF] + dims = (l*4+2) * bas[:,NCTR_OF] + dims[k<0] = (l[k<0] * 2 + 2) * bas[k<0,NCTR_OF] + dims[k>0] = (l[k>0] * 2 ) * bas[k>0,NCTR_OF] + + #ao_loc = numpy.empty(len(dims)+1, dtype=numpy.int32) + ao_loc = np.arange(len(dims)+1, dtype=numpy.int32) + #ao_loc[0] = 0 + #dims.cumsum(dtype=numpy.int32, out=ao_loc[1:]) + #ao_loc = jnp.concatenate([jnp.zeros(1), jnp.cumsum(ao_loc[1:])]) + return ao_loc + +def getints2c(intor_name, N, atm, bas, env, shls_slice=None, comp=1, hermi=0, + ao_loc=None, cintopt=None, out=None): + natm = atm.shape[0] + nbas = bas.shape[0] + shls_slice = (0, nbas, 0, nbas) + ao_loc = make_loc(bas, intor_name) + + shape = (N, N, comp) + prefix = 'GTO' + + dtype = numpy.double + drv_name = prefix + 'int2c' + + #mat = numpy.ndarray(shape, dtype, out, order='F') + mat = numpy.zeros(shape, dtype=dtype, order="F")#, dtype, out, order='F') + cintopt = None + + # type + if float32: + mat = mat.astype(np.float32) + env = env.astype(np.float32) + + fn = getattr(libcgto, drv_name) + fn(getattr(libcgto, intor_name), mat.ctypes.data_as(ctypes.c_void_p), + ctypes.c_int(comp), ctypes.c_int(hermi), + (ctypes.c_int*4)(*(shls_slice[:4])), + ao_loc.ctypes.data_as(ctypes.c_void_p), cintopt, + atm.ctypes.data_as(ctypes.c_void_p), ctypes.c_int(natm), + bas.ctypes.data_as(ctypes.c_void_p), ctypes.c_int(nbas), + env.ctypes.data_as(ctypes.c_void_p)) + + mat = numpy.rollaxis(mat, -1, 0) + if comp == 1: + mat = mat[0] + return mat + +def cpu_intor1e(self, intor, N, comp=None, hermi=0, aosym='s1', out=None, shls_slice=None, grids=None): + return getints2c(intor+"_sph", N, self._atm, self._bas, self._env, shls_slice, comp, hermi, None, None, out) + +def ipu_intor1e(atm, bas, env, which_integral, N, comp=None, hermi=0, aosym='s1', out=None, shls_slice=None, grids=None): + #mat, shls_slice, ao_loc, atm, bas, env + if comp == 3 : intor = "int1e_ipnuc" + elif comp == 1: intor = "int1e_nuc" + + #if "ip" in intor: + #intor = "int1e_nuc" + + intor_name, N, shls_slice, comp, hermi, ao_loc, cintopt, out=\ + intor+"_sph", N, shls_slice, comp, hermi, None, None, out + + natm = atm.shape[0] + nbas = bas.shape[0] + shls_slice = (0, nbas, 0, nbas) + #ao_loc = ipu_make_loc(bas, "int1e_kin_sph") + + ao_loc = jnp.cumsum(jnp.concatenate([jnp.zeros(1), (bas[:,1]*2+1) * bas[:,3] ])).astype(np.int32) + + shape = (N, N, comp) + + dtype = numpy.double + + mat = numpy.ndarray(shape, dtype, out, order='F') + + # type + if float32: + mat = mat.astype(np.float32) + env = env.astype(np.float32) + + if comp == 3: + mat = np.transpose(np.zeros(shape), (2,0,1)) + else: + mat = np.zeros(shape) + + mat = tile_put_replicated(np.array(mat, dtype=jnp.float32), (1,)) + shls_slice = tile_put_replicated(np.array(shls_slice[:4], dtype=jnp.int32), (1,)) + ao_loc = tile_put_replicated(ao_loc.astype(jnp.int32), (1,)) + atm = tile_put_replicated(atm.astype(jnp.int32), (1,)) + bas = tile_put_replicated(bas.astype(jnp.int32), (1,)) + env = tile_put_replicated(env.astype(jnp.float32), (1,)) + natm = tile_put_replicated(np.array(natm, dtype=jnp.int32), (1,)) + nbas = tile_put_replicated(np.array(nbas, dtype=jnp.int32), (1,)) + + which_integral = tile_put_replicated(which_integral.astype(jnp.int32), (1,)) + + value = tile_map(grad, mat, shls_slice, ao_loc, atm, bas, env, natm, nbas, which_integral) + + result = value.array[0] + + return result + +def cpu_getints4c(intor_name, atm, bas, env, N, shls_slice=None, comp=1, + aosym='s1', ao_loc=None, cintopt=None, out=None, which_integral=-1): + c_atm = atm.ctypes.data_as(ctypes.c_void_p) + c_bas = bas.ctypes.data_as(ctypes.c_void_p) + natm = atm.shape[0] + nbas = bas.shape[0] + ao_loc = make_loc(bas, intor_name) + + shls_slice = (0, nbas, 0, nbas, 0, nbas, 0, nbas) + + shape = [comp, N, N, N, N] + + drv = libcgto.GTOnr2e_fill_drv + fill = getattr(libcgto, 'GTOnr2e_fill_'+aosym) + #out = numpy.ndarray(shape, buffer=out) + out = numpy.zeros(shape) + + # type + if float32: + out = out.astype(np.float32) + env = env.astype(np.float32) + + c_env = env.ctypes.data_as(ctypes.c_void_p) + + cintopt = None + prescreen = lib.c_null_ptr() + drv(getattr(libcgto, intor_name), fill, prescreen, + out.ctypes.data_as(ctypes.c_void_p), ctypes.c_int(comp), + (ctypes.c_int*8)(*shls_slice), + ao_loc.ctypes.data_as(ctypes.c_void_p), cintopt, + c_atm, ctypes.c_int(natm), c_bas, ctypes.c_int(nbas), c_env, which_integral) + + if comp == 1: + out = out[0] + return out + + +def python_GTOnr2e_fill_drv(intor, shls_slice, prescreen, eri, ao_loc, + comp, cintopt, c_atm, natm, c_bas, nbas, c_env, which_integral): + ish0 = shls_slice[0] + ish1 = shls_slice[1] + jsh0 = shls_slice[2] + jsh1 = shls_slice[3] + nish = ish1 - ish0 + njsh = jsh1 - jsh0 + di = 1 # ...? + cache_size = 256 + buf = np.zeros(cache_size, dtype=np.float32).ctypes.data_as(ctypes.c_void_p) + ao_loc = ao_loc.ctypes.data_as(ctypes.c_void_p) + + for ij in range(nish*njsh): + i = ctypes.c_int(ij // njsh) + j = ctypes.c_int(ij % njsh) + libcgto.GTOnr2e_fill_s1(intor, prescreen, eri.ctypes.data_as(ctypes.c_void_p), buf, comp, i, j, + (ctypes.c_int*8)(*shls_slice), ao_loc, cintopt, c_atm, ctypes.c_int(natm), c_bas, ctypes.c_int(nbas), + c_env, which_integral) + + pass + +def cpu_tile_map_getints4c(intor_name, atm, bas, env, N, shls_slice=None, comp=1, + aosym='s1', ao_loc=None, cintopt=None, out=None, which_integral=-1): + # we can't tilemap on cpu, this code just helps debugging IPU tilemap code. + # this function is to above, but contains code for scheduling integrals in python. + c_atm = atm.ctypes.data_as(ctypes.c_void_p) + c_bas = bas.ctypes.data_as(ctypes.c_void_p) + natm = atm.shape[0] + nbas = bas.shape[0] + ao_loc = make_loc(bas, intor_name) + + shls_slice = (0, nbas, 0, nbas, 0, nbas, 0, nbas) + + shape = [comp, N, N, N, N] + + drv = libcgto.GTOnr2e_fill_drv + fill = getattr(libcgto, 'GTOnr2e_fill_'+aosym) + #out = numpy.ndarray(shape, buffer=out) + out = numpy.zeros(shape) + eri = numpy.zeros(shape) + + # type + if float32: + out = out.astype(np.float32) + eri = eri.astype(np.float32) + env = env.astype(np.float32) + + c_env = env.ctypes.data_as(ctypes.c_void_p) + + cintopt = None + prescreen = lib.c_null_ptr() + drv(getattr(libcgto, intor_name), fill, prescreen, + out.ctypes.data_as(ctypes.c_void_p), ctypes.c_int(comp), + (ctypes.c_int*8)(*shls_slice), + ao_loc.ctypes.data_as(ctypes.c_void_p), cintopt, + c_atm, ctypes.c_int(natm), c_bas, ctypes.c_int(nbas), c_env, which_integral) + + + # preparing for tilemap by moving logic to python with C++/cpu backend. + python_GTOnr2e_fill_drv(getattr(libcgto, intor_name), shls_slice, prescreen, eri, ao_loc, + comp, cintopt, c_atm, natm, c_bas, nbas, c_env, which_integral) + + out = eri + + if comp == 1: + out = out[0] + return out + + +def cpu_intor2e(self, intor, N, comp=None, hermi=0, aosym='s1', out=None, shls_slice=None, grids=None, which_integral=-1, tile_map=False): + if tile_map: return cpu_tile_map_getints4c(intor, self._atm, self._bas, self._env, N, None, comp, "s1", None, None, None, which_integral) + else: return cpu_getints4c(intor, self._atm, self._bas, self._env, N, None, comp, "s1", None, None, None, which_integral) + +def ipu_getints4c(intor_name, atm, bas, env, N, shls_slice=None, comp=1, + aosym='s1', ao_loc=None, cintopt=None, out=None, which_integral=-1): + natm = atm.shape[0] + nbas = bas.shape[0] + + shls_slice = (0, nbas, 0, nbas, 0, nbas, 0, nbas) + + shape = [comp, N, N, N, N] + + drv = libcgto.GTOnr2e_fill_drv + fill = getattr(libcgto, 'GTOnr2e_fill_'+aosym) + out = numpy.ndarray(shape, buffer=out) + + # type + if float32: + out = out.astype(np.float32) + env = env.astype(np.float32) + + natm = atm.shape[0] + nbas = bas.shape[0] + + prefix = 'GTO' + + if float32: + out = out.astype(np.float32) + env = env.astype(np.float32) + + + out = tile_put_replicated(jnp.array(out, dtype=jnp.float32), (1,)) + shls_slice = tile_put_replicated(jnp.array(shls_slice, dtype=jnp.int32), (1,)) + ao_loc = tile_put_replicated(jnp.array(ao_loc, dtype=jnp.int32), (1,)) + atm = tile_put_replicated(jnp.array(atm, dtype=jnp.int32), (1,)) + bas = tile_put_replicated(jnp.array(bas, dtype=jnp.int32), (1,)) + env = tile_put_replicated(jnp.array(env, dtype=jnp.float32), (1,)) + natm = tile_put_replicated(jnp.array(natm, dtype=jnp.int32), (1,)) + nbas = tile_put_replicated(jnp.array(nbas, dtype=jnp.int32), (1,)) + comp = tile_put_replicated(jnp.array(comp, dtype=jnp.int32), (1,)) + + which_integral = tile_put_replicated(np.array(which_integral, dtype=jnp.int32), (1,)) + + value = tile_map(int2e, out, shls_slice, ao_loc, atm, bas, env, natm, nbas, which_integral, comp) + + out = value.array + + if comp == 1: + out = out[0] + return out + + + +def ipu_tile_map_getints4c(intor_name, atm, bas, env, N, shls_slice=None, comp=1, + aosym='s1', ao_loc=None, cintopt=None, out=None, which_integral=-1): + natm = atm.shape[0] + nbas = bas.shape[0] + + shls_slice = (0, nbas, 0, nbas, 0, nbas, 0, nbas) + + shape = [comp, N, N, N, N] + + drv = libcgto.GTOnr2e_fill_drv + fill = getattr(libcgto, 'GTOnr2e_fill_'+aosym) + out = numpy.ndarray(shape, buffer=out) + + # type + if float32: + out = out.astype(np.float32) + env = env.astype(np.float32) + + + natm = atm.shape[0] + nbas = bas.shape[0] + + prefix = 'GTO' + + if float32: + out = out.astype(np.float32) + env = env.astype(np.float32) + + + out = tile_put_replicated(jnp.array(out, dtype=jnp.float32), (1,)) + shls_slice = tile_put_replicated(jnp.array(shls_slice, dtype=jnp.int32), (1,)) + ao_loc = tile_put_replicated(jnp.array(ao_loc, dtype=jnp.int32), (1,)) + atm = tile_put_replicated(jnp.array(atm, dtype=jnp.int32), (1,)) + bas = tile_put_replicated(jnp.array(bas, dtype=jnp.int32), (1,)) + env = tile_put_replicated(jnp.array(env, dtype=jnp.float32), (1,)) + natm = tile_put_replicated(jnp.array(natm, dtype=jnp.int32), (1,)) + nbas = tile_put_replicated(jnp.array(nbas, dtype=jnp.int32), (1,)) + comp = tile_put_replicated(jnp.array(comp, dtype=jnp.int32), (1,)) + + which_integral = tile_put_replicated(np.array(which_integral, dtype=jnp.int32), (1,)) + + value = tile_map(int2e, out, shls_slice, ao_loc, atm, bas, env, natm, nbas, which_integral, comp) + + out = value.array + + if comp == 1: + out = out[0] + return out + + + +def ipu_intor2e(self, intor, N, comp=None, hermi=0, aosym='s1', out=None, shls_slice=None, grids=None, which_integral=-1, tile_map=False): + ao_loc = make_loc(mol._bas, intor) + if tile_map: + return np.asarray(jax.jit(ipu_tile_map_getints4c, static_argnums=(0,4,5,6,7,9,10,11)) + (intor, self._atm, self._bas, self._env, N, None, comp, "s1", ao_loc, None, None, which_integral)) + else: + return np.asarray(jax.jit(ipu_getints4c, static_argnums=(0,4,5,6,7,9,10,11)) + (intor, self._atm, self._bas, self._env, N, None, comp, "s1", ao_loc, None, None, which_integral)) + + + +if __name__ == "__main__": + import argparse + parser = argparse.ArgumentParser(prog='popcint', description='Libcint compiled to poplar. ') + parser.add_argument('-nuc', action="store_true") + parser.add_argument('-kin', action="store_true") + parser.add_argument('-ovlp', action="store_true") + parser.add_argument('-eri', action="store_true") + parser.add_argument('-nucgrad', action="store_true") + parser.add_argument('-kingrad', action="store_true") + parser.add_argument('-ovlpgrad', action="store_true") + parser.add_argument('-erigrad', action="store_true") + parser.add_argument('-all', action="store_true") + parser.add_argument('-tilemap', action="store_true") + parser.add_argument("-basis", type=str, default="sto3g") + parser.add_argument("-skipipu", action="store_true") + args = parser.parse_args() + + mol = pyscf.gto.Mole(atom="H 0 0 0; H 0 0 1; ", basis=args.basis) + mol.build() + N = mol.nao_nr() + print("[N=%i]"%N) + + #def ipu_intor1e(self, which_integral, N, comp=None, hermi=0, aosym='s1', out=None, shls_slice=None, grids=None): + #def ipu_intor1e(atm, bas, env, which_integral, N, comp=None, hermi=0, aosym='s1', out=None, shls_slice=None, grids=None): + ipu_intor1e = jax.jit(ipu_intor1e, backend="ipu", static_argnums=(4,5,6,7,8,9,10)) + + def test(truth, us, str): + error = np.max(us.reshape(-1)-truth.reshape(-1)) + print(str, error) + if error > 1e-6: + print(us.reshape(-1)) + print(truth.reshape(-1)) + + if args.nuc or args.all: + print("\n[Nuclear Integral]") + us = cpu_intor1e(mol, 'int1e_nuc', N, comp=1) + truth = mol.intor('int1e_nuc', comp=1) + test(us, truth, "CPU: \t") + if not args.skipipu: + us = np.asarray( ipu_intor1e(mol._atm, mol._bas, mol._env, INT1E_NUC, N, 1)) + test(us, truth, "IPU: \t") + + if args.kin or args.all: + print("\n[Kinetic Integral]") + us = cpu_intor1e(mol, 'int1e_kin', N, comp=1) + truth = mol.intor('int1e_kin', comp=1) + test(us, truth, "CPU: \t") + if not args.skipipu: + us = np.asarray( ipu_intor1e(mol._atm, mol._bas, mol._env, INT1E_KIN, N, 1)) + test(us, truth, "IPU: \t") + + if args.ovlp or args.all: + print("\n[Overlap Integral]") + us = cpu_intor1e(mol, 'int1e_ovlp', N, comp=1) + truth = mol.intor('int1e_ovlp', comp=1) + test(us, truth, "CPU: \t") + if not args.skipipu: + us = np.asarray( ipu_intor1e(mol._atm, mol._bas, mol._env, INT1E_OVLP, N, 1)) + test(us, truth, "IPU: \t") + + if args.nucgrad or args.all: + print("\n[Grad Nuclear]") + us = - cpu_intor1e(mol, 'int1e_ipnuc', N, comp=3) + truth = - mol.intor('int1e_ipnuc', comp=3) + test(us, truth, "CPU: \t") + if not args.skipipu: + us = - np.transpose(np.asarray( ipu_intor1e(mol._atm, mol._bas, mol._env, INT1E_NUC_IP, N, 3)), (0,2,1)) + test(us, truth, "IPU: \t") + + if args.kingrad or args.all: + print("\n[Grad Kinetic]") + us = - cpu_intor1e(mol, 'int1e_ipkin', N, comp=3) + truth = - mol.intor('int1e_ipkin', comp=3) + test(us, truth, "CPU: \t") + if not args.skipipu: + us = - np.transpose(np.asarray( ipu_intor1e(mol._atm, mol._bas, mol._env, INT1E_KIN_IP, N, 3)), (0,2,1)) + test(us, truth, "IPU: \t") + + if args.ovlpgrad or args.all: + print("\n[Grad Overlap]") + us = - cpu_intor1e(mol, 'int1e_ipovlp', N, comp=3) + truth = - mol.intor('int1e_ipovlp', comp=3) + test(us, truth, "CPU: \t") + if not args.skipipu: + us = - np.transpose(np.asarray( ipu_intor1e(mol._atm, mol._bas, mol._env, INT1E_OVLP_IP, N, 3)), (0,2,1)) + test(us, truth, "IPU: \t") + + if args.eri or args.all: + print("\n[Electron Repulsion Integral]") + truth = mol.intor("int2e_sph") + us = cpu_intor2e(mol, "int2e_sph", N, 1, which_integral=INT2E_SPH, tile_map=args.tilemap) + test(us, truth, "CPU: \t") + if not args.skipipu: + us = ipu_intor2e(mol, "int2e_sph", N, 1, which_integral=INT2E_SPH, tile_map=args.tilemap) + test(us, truth, "IPU: \t") + + if args.erigrad or args.all: + print("\n[Grad of Electron Repulsion Integral]") + truth = mol.intor("int2e_ip1_sph") + us = cpu_intor2e(mol, "int2e_ip1_sph", N, 3, which_integral=INT2E_IP1_SPH, tile_map=args.tilemap) + test(us, truth, "CPU: \t") + if not args.skipipu: + us = ipu_intor2e(mol, "int2e_ip1_sph", N, 3, which_integral=INT2E_IP1_SPH, tile_map=args.tilemap) + test(us, truth, "IPU: \t") \ No newline at end of file diff --git a/pyscf_ipu/electron_repulsion/popcint/libcint.sh b/pyscf_ipu/electron_repulsion/popcint/libcint.sh new file mode 100755 index 0000000..e0cd425 --- /dev/null +++ b/pyscf_ipu/electron_repulsion/popcint/libcint.sh @@ -0,0 +1,7 @@ +clear +rm libcint.so + +g++ libcint.c -shared -fpic -o libcint.so -lpoplar -lpoputil -fpermissive +echo "Done compiling. Calling C code from python. " + +XLA_IPU_PLATFORM_DEVICE_COUNT=1 TF_POPLAR_FLAGS=--show_progress_bar=true python libcint.py $@ \ No newline at end of file diff --git a/pyscf_ipu/electron_repulsion/popcint/readme.MD b/pyscf_ipu/electron_repulsion/popcint/readme.MD new file mode 100644 index 0000000..c9a4f24 --- /dev/null +++ b/pyscf_ipu/electron_repulsion/popcint/readme.MD @@ -0,0 +1,87 @@ +# popcint +Libcint (manually) compiled to IPU implementing + +``` +import pyscf +mol = pyscf.gto.Mole([["H", (0,0,0)], ["H", (0,0,1)]], basis="sto3g") +mol.build() +mol.intor("int1e_nuc") # nuclear integral +mol.intor("int1e_kin") # kinetic integral +mol.intor("int1e_ovlp") # overlap integral + +mol.intor("int1e_ipnuc") # gradient of nuclear integral +mol.intor("int1e_ipkin") # gradient of kinetic integral +mol.intor("int1e_ipovlp") # gradient of overlap integral + +mol.intor("int2e_sph") # electron repulsion integral +mol.intor("int2e_ip1_sph") # gradient (ip1) of electron repulsion integral +``` + +You can test all integrals with `./cpp_libcint.sh -all`. The C++ plumbing to run all integrals is in place and all (but kinetic) pass a simple H2 test-case in STO3G (this compiles and runs libcint.c both with CPU/G++ and IPU/tesselate). + +``` +> ./cpp_libcint.sh -all + +Compiling with C++ +Done compiling. Calling C code from python. +[N=2] + +[Nuclear Integral] +CPU: 2.763163926555734e-07 +Compiling module jit_ipu_intor1e.0: +[##################################################] 100% Compilation Finished [Elapsed: 00:00:15.6] +IPU: 2.763163926555734e-07 + +[Kinetic Integral] +CPU: -1.8022852765753328e-08 +Compiling module jit_ipu_intor1e.1: +[##################################################] 100% Compilation Finished [Elapsed: 00:00:15.9] +IPU: -1.05722721688295e-08 + +[Overlap Integral] +CPU: -1.2445099606406274e-07 +Compiling module jit_ipu_intor1e.2: +[##################################################] 100% Compilation Finished [Elapsed: 00:00:16.0] +IPU: -6.484635128867211e-08 + +[Grad Nuclear] +CPU: 7.246001532124069e-08 +Compiling module jit_ipu_intor1e.3: +[##################################################] 100% Compilation Finished [Elapsed: 00:00:15.8] +IPU: 7.246001532124069e-08 + +[Grad Kinetic] +CPU: 0.22741775584087665 +[ 0. -0. -0. 0. 0. -0. + -0. 0. 0. 0.19630939 -0.19630939 0. ] +[-0.0000000e+00 5.6303712e-04 -5.6303712e-04 -0.0000000e+00 + -1.4645594e-01 2.4947241e-02 -2.2242269e-02 1.6426709e-01 + -0.0000000e+00 -3.1108368e-02 -1.6386819e-01 9.0011621e-01] +Compiling module jit_ipu_intor1e.4: +[##################################################] 100% Compilation Finished [Elapsed: 00:00:15.8] +T[1.2]: inside CINTset_pairdata +T[1.2]: inside CINTset_pairdata +IPU: 0.1963094174861908 +[ 0. -0. -0. 0. 0. -0. + -0. 0. 0. 0.19630939 -0.19630939 0. ] +[-0. -0. -0. -0. -0. -0. + -0. -0. -0.19630942 -0. -0. -0. ] + +[Grad Overlap] +CPU: 6.077975783780332e-08 +Compiling module jit_ipu_intor1e.5: +[##################################################] 100% Compilation Finished [Elapsed: 00:00:15.5] +IPU: 6.077975783780332e-08 + +[Electron Repulsion Integral] +CPU: -4.443460513425812e-08 +Compiling module jit_ipu_getints4c.6: +[##################################################] 100% Compilation Finished [Elapsed: 00:00:15.8] +IPU: -2.953344391265489e-08 + +[Grad of Electron Repulsion Integral] +CPU: 1.341920186359591e-07 +Compiling module jit_ipu_getints4c.7: +[##################################################] 100% Compilation Finished [Elapsed: 00:00:15.6] +IPU: 1.1929085744211143e-07 +```