5
#include<libciomr/libciomr.h>
6
#include<libint/libint.h>
13
/*-------------------------------------
14
Swap ket and bra of a 4-index buffer
15
-------------------------------------*/
16
extern "C" void ijkl_to_klij(double *ijkl_buf, double *klij_buf, int nij, int nkl)
19
for(int ij=0; ij<nij; ij++) {
22
for(int kl=0; kl<nkl; kl++,ijkl++,klij+=nij)
23
klij_buf[klij] = ijkl_buf[ijkl];
29
extern "C" void ijkl_to_jikl(double *ijkl_buf, double *jikl_buf, int ni, int nj, int nkl)
31
double* ijkl_ptr = ijkl_buf;
32
for(int i=0; i<ni; i++) {
33
for(int j=0; j<nj; j++) {
35
double* jikl_ptr = jikl_buf + ji*nkl;
36
for(int kl=0;kl<nkl;kl++,ijkl_ptr++,jikl_ptr++)
37
*jikl_ptr = *ijkl_ptr;
42
extern "C" void ijkl_to_ijlk(double *ijkl_buf, double *ijlk_buf, int nij, int nk, int nl)
44
double* ijkl_ptr = ijkl_buf;
45
for(int ij=0; ij<nij; ij++) {
46
double* ij_offset_ptr = ijlk_buf + ij*nk*nl;
47
for(int k=0; k<nk; k++) {
48
double* ijlk_ptr = ij_offset_ptr + k;
49
for(int l=0;l<nl;l++,ijkl_ptr++,ijlk_ptr+=nk)
50
*ijlk_ptr = *ijkl_ptr;