--- short_ene_bigcache_opt.f90.orig Tue Jun 15 00:51:46 2004 +++ short_ene_bigcache_opt.f90 Fri Jun 11 18:14:22 2004 @@ -59,6 +59,9 @@ #ifdef MASSV double precision :: delr_vec(vec_size) #endif +#ifdef vecLib + double precision :: delrinv_vec(vec_size) +#endif double precision :: delr2_vec(vec_size) integer :: img_j_vec(vec_size) @@ -105,6 +108,9 @@ #ifdef MASSV call vsqrt(delr_vec, delr2_vec, vec_cnt) #endif +#ifdef vecLib + call vrsqrtd_wrapper ( delr2_vec, delrinv_vec, vec_cnt ) +#endif do vec_idx = 1, vec_cnt @@ -112,11 +118,18 @@ #ifdef MASSV delr = delr_vec(vec_idx) +#endif +#ifdef vecLib #else delr = sqrt(delr2_vec(vec_idx)) #endif +#ifdef vecLib + delrinv = delrinv_vec(vec_idx) + delr = delr2_vec(vec_idx)*delrinv +#else delrinv = 1.d0 / delr +#endif img_j = img_j_vec(vec_idx) cgi_cgj = cgi * img(img_j)%charge @@ -203,12 +216,21 @@ end do +#ifdef vecLib + call vrsqrtd_wrapper ( delr2_vec, delrinv_vec, vec_cnt ) +#endif + do vec_idx = 1, vec_cnt ! Do the Coulomb part of the direct sum: +#ifdef vecLib + delrinv = delrinv_vec(vec_idx) + delr = delr2_vec(vec_idx)*delrinv +#else delr = sqrt(delr2_vec(vec_idx)) delrinv = 1.d0 / delr +#endif img_j = img_j_vec(vec_idx) cgi_cgj = cgi * img(img_j)%charge @@ -346,6 +368,9 @@ #ifdef MASSV double precision :: delr_vec(vec_size) #endif +#ifdef vecLib + double precision :: delrinv_vec(vec_size) +#endif double precision :: delr2_vec(vec_size) integer :: img_j_vec(vec_size) @@ -389,12 +414,20 @@ end do +#ifdef vecLib + call vrsqrtd_wrapper ( delr2_vec, delrinv_vec, vec_cnt ) +#endif do vec_idx = 1, vec_cnt ! Do the Coulomb part of the direct sum: +#ifdef vecLib + delrinv = delrinv_vec(vec_idx) + delr = delr2_vec(vec_idx)*delrinv +#else delr = sqrt(delr2_vec(vec_idx)) delrinv = 1.d0 / delr +#endif img_j = img_j_vec(vec_idx) cgi_cgj = cgi * img(img_j)%charge @@ -484,6 +517,9 @@ #ifdef MASSV call vsqrt(delr_vec, delr2_vec, vec_cnt) #endif +#ifdef vecLib + call vrsqrtd_wrapper ( delr2_vec, delrinv_vec, vec_cnt ) +#endif do vec_idx = 1, vec_cnt @@ -491,11 +527,18 @@ #ifdef MASSV delr = delr_vec(vec_idx) +#endif +#ifdef vecLib #else delr = sqrt(delr2_vec(vec_idx)) #endif +#ifdef vecLib + delrinv = delrinv_vec(vec_idx) + delr = delr2_vec(vec_idx)*delrinv +#else delrinv = 1.d0 / delr +#endif img_j = img_j_vec(vec_idx) cgi_cgj = cgi * img(img_j)%charge