void AO2MOtranse1_nr_s2ij(int (*fmmm)(), int row_id, double *vout, double *vin, double *buf, struct _AO2MOEnvs *envs) { int nao = envs->nao; size_t ij_pair = (*fmmm)(NULL, NULL, buf, envs, OUTPUTIJ); size_t nao2 = nao*(nao+1)/2; NPdunpack_tril(nao, vin+nao2*row_id, buf, 0); (*fmmm)(vout+ij_pair*row_id, buf, buf+nao*nao, envs, 0); }
void AO2MOtranse1_nr_s2ij(int (*fmmm)(), double *vout, double *vin, int row_id, struct _AO2MOEnvs *envs) { int nao = envs->nao; size_t ij_pair = (*fmmm)(NULL, NULL, envs, 1); size_t nao2 = nao*(nao+1)/2; double *buf = malloc(sizeof(double) * nao*nao); NPdunpack_tril(nao, vin+nao2*row_id, buf, 0); (*fmmm)(vout+ij_pair*row_id, buf, envs, 0); free(buf); }