128 return (1.0 / 6.0) * (d - a) * cross_product_3d(b - a, c - a);
141 const auto v01 = x1 - x0;
142 const auto v02 = x2 - x0;
143 const auto v03 = x3 - x0;
144 const auto v04 = x4 - x0;
145 const auto v21 = x2 - x1;
149 return -v04 * cross_product_3d(v21, v03) / 6.0 +
150 v03 * cross_product_3d(v01, v02) / 12.0;
226 const double x6 = (1.0 / 12.0) * z1;
227 const double x7 = -x6;
228 const double x8 = (1.0 / 12.0) * z3;
229 const double x9 = x7 + x8;
230 const double x10 = (1.0 / 12.0) * z2;
231 const double x11 = -x8;
232 const double x12 = x10 + x11;
233 const double x13 = (1.0 / 6.0) * z2;
234 const double x14 = (1.0 / 12.0) * z4;
235 const double x15 = (1.0 / 6.0) * z1;
236 const double x16 = (1.0 / 12.0) * z5;
237 const double x17 = -x16;
238 const double x18 = x16 + x7;
239 const double x19 = -x14;
240 const double x20 = x10 + x19;
241 const double x21 = (1.0 / 12.0) * z0;
242 const double x22 = x19 + x21;
243 const double x23 = -x10;
244 const double x24 = x14 + x23;
245 const double x25 = (1.0 / 6.0) * z0;
246 const double x26 = x17 + x21;
247 const double x27 = x23 + x8;
248 const double x28 = -x21;
249 const double x29 = x16 + x28;
250 const double x30 = x17 + x6;
251 const double x31 = x14 + x28;
252 const double x32 = x11 + x6;
253 const double x33 = (1.0 / 6.0) * z5;
254 const double x34 = (1.0 / 6.0) * z4;
255 const double x35 = (1.0 / 6.0) * z3;
256 const double result =
257 x0 * (x12 * y5 + x9 * y4 + y1 * (-x13 + x14 + x8) +
258 y2 * (x11 + x15 + x17) + y3 * (x18 + x20)) +
259 x1 * (x22 * y3 + x24 * y5 + y0 * (x11 + x13 + x19) +
260 y2 * (x14 + x16 - x25) + y4 * (x26 + x27)) +
261 x2 * (x29 * y3 + x30 * y4 + y0 * (-x15 + x16 + x8) +
262 y1 * (x17 + x19 + x25) + y5 * (x31 + x32)) +
263 x3 * (x26 * y2 + x31 * y1 + y0 * (x24 + x30) + y4 * (x28 + x33 + x7) +
264 y5 * (x10 + x21 - x34)) +
265 x4 * (x18 * y2 + x32 * y0 + y1 * (x12 + x29) + y3 * (x21 - x33 + x6) +
266 y5 * (x23 + x35 + x7)) +
267 x5 * (x20 * y1 + x27 * y0 + y2 * (x22 + x9) + y3 * (x23 + x28 + x34) +
268 y4 * (x10 - x35 + x6));
336 const double t3 = y[3] * x[2];
337 const double t5 = z[1] * x[5];
338 const double t9 = z[3] * x[2];
339 const double t11 = x[1] * y[0];
340 const double t14 = x[4] * y[0];
341 const double t18 = x[5] * y[7];
342 const double t20 = y[1] * x[3];
343 const double t22 = y[5] * x[4];
344 const double t26 = z[7] * x[6];
345 const double t28 = x[0] * y[4];
347 z[3] * x[1] * y[2] + t3 * z[1] - t5 * y[7] + y[7] * x[4] * z[6] +
348 t9 * y[6] - t11 * z[4] - t5 * y[3] - t14 * z[2] + z[1] * x[4] * y[0] -
349 t18 * z[3] + t20 * z[0] - t22 * z[0] - y[0] * x[5] * z[4] - t26 * y[3] +
350 t28 * z[2] - t9 * y[1] - y[1] * x[4] * z[0] - t11 * z[5];
351 const double t37 = y[1] * x[0];
352 const double t44 = x[1] * y[5];
353 const double t46 = z[1] * x[0];
354 const double t49 = x[0] * y[2];
355 const double t52 = y[5] * x[7];
356 const double t54 = x[3] * y[7];
357 const double t56 = x[2] * z[0];
358 const double t58 = x[3] * y[2];
359 const double t64 = -x[6] * y[4] * z[2] - t37 * z[2] + t18 * z[6] -
360 x[3] * y[6] * z[2] + t11 * z[2] + t5 * y[0] +
361 t44 * z[4] - t46 * y[4] - t20 * z[7] - t49 * z[6] -
362 t22 * z[1] + t52 * z[3] - t54 * z[2] - t56 * y[4] -
363 t58 * z[0] + y[1] * x[2] * z[0] + t9 * y[7] + t37 * z[4];
364 const double t66 = x[1] * y[7];
365 const double t68 = y[0] * x[6];
366 const double t70 = x[7] * y[6];
367 const double t73 = z[5] * x[4];
368 const double t76 = x[6] * y[7];
369 const double t90 = x[4] * z[0];
370 const double t92 = x[1] * y[3];
371 const double t95 = -t66 * z[3] - t68 * z[2] - t70 * z[2] + t26 * y[5] -
372 t73 * y[6] - t14 * z[6] + t76 * z[2] - t3 * z[6] +
373 x[6] * y[2] * z[4] - z[3] * x[6] * y[2] + t26 * y[4] -
374 t44 * z[3] - x[1] * y[2] * z[0] + x[5] * y[6] * z[4] +
375 t54 * z[5] + t90 * y[2] - t92 * z[2] + t46 * y[2];
376 const double t102 = x[2] * y[0];
377 const double t107 = y[3] * x[7];
378 const double t114 = x[0] * y[6];
380 y[0] * x[3] * z[2] - z[7] * x[5] * y[6] - x[2] * y[6] * z[4] +
381 t102 * z[6] - t52 * z[6] + x[2] * y[4] * z[6] - t107 * z[5] - t54 * z[6] +
382 t58 * z[6] - x[7] * y[4] * z[6] + t37 * z[5] - t114 * z[4] + t102 * z[4] -
383 z[1] * x[2] * y[0] + t28 * z[6] - y[5] * x[6] * z[4] -
384 z[5] * x[1] * y[4] - t73 * y[7];
385 const double t129 = z[0] * x[6];
386 const double t133 = y[1] * x[7];
387 const double t145 = y[1] * x[5];
388 const double t156 = t90 * y[6] - t129 * y[4] + z[7] * x[2] * y[6] -
389 t133 * z[5] + x[5] * y[3] * z[7] - t26 * y[2] -
390 t70 * z[3] + t46 * y[3] + z[5] * x[7] * y[4] +
391 z[7] * x[3] * y[6] - t49 * z[4] + t145 * z[7] -
392 x[2] * y[7] * z[6] + t70 * z[5] + t66 * z[5] -
393 z[7] * x[4] * y[6] + t18 * z[4] + x[1] * y[4] * z[0];
394 const double t160 = x[5] * y[4];
395 const double t165 = z[1] * x[7];
396 const double t178 = z[1] * x[3];
398 t107 * z[6] + t22 * z[7] + t76 * z[3] + t160 * z[1] - x[4] * y[2] * z[6] +
399 t70 * z[4] + t165 * y[5] + x[7] * y[2] * z[6] - t76 * z[5] - t76 * z[4] +
400 t133 * z[3] - t58 * z[1] + y[5] * x[0] * z[4] + t114 * z[2] - t3 * z[7] +
401 t20 * z[2] + t178 * y[7] + t129 * y[2];
402 const double t207 = t92 * z[7] + t22 * z[6] + z[3] * x[0] * y[2] -
403 x[0] * y[3] * z[2] - z[3] * x[7] * y[2] - t165 * y[3] -
404 t9 * y[0] + t58 * z[7] + y[3] * x[6] * z[2] +
405 t107 * z[2] + t73 * y[0] - x[3] * y[5] * z[7] +
406 t3 * z[0] - t56 * y[6] - z[5] * x[0] * y[4] +
407 t73 * y[1] - t160 * z[6] + t160 * z[0];
408 const double t228 = -t44 * z[7] + z[5] * x[6] * y[4] - t52 * z[4] -
409 t145 * z[4] + t68 * z[4] + t92 * z[5] - t92 * z[0] +
410 t11 * z[3] + t44 * z[0] + t178 * y[5] - t46 * y[5] -
411 t178 * y[0] - t145 * z[0] - t20 * z[5] - t37 * z[3] -
412 t160 * z[7] + t145 * z[3] + x[4] * y[6] * z[2];
414 return (t34 + t64 + t95 + t125 + t156 + t181 + t207 + t228) / 12.;