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