103 {
104#ifdef SEAMS_HAS_MINIMAGE
105 mi_dist2_ortho_diffs(dx, dy, dz, bx, by, bz, out, n);
106 return;
107#endif
108
109 const double rbx = 1.0 / bx;
110 const double rby = 1.0 / by;
111 const double rbz = 1.0 / bz;
112 for (size_t i = 0; i < n; i++) {
113 double ddx = std::fabs(dx[i]);
114 double ddy = std::fabs(dy[i]);
115 double ddz = std::fabs(dz[i]);
116 ddx -= bx * std::round(ddx * rbx);
117 ddy -= by * std::round(ddy * rby);
118 ddz -= bz * std::round(ddz * rbz);
119 out[i] = ddx * ddx + ddy * ddy + ddz * ddz;
120 }
121}