MUDA
Loading...
Searching...
No Matches
edge_edge.inl
1namespace muda::distance::details
2{
3template <class T>
4MUDA_GENERIC void g_EE(
5 T v01, T v02, T v03, T v11, T v12, T v13, T v21, T v22, T v23, T v31, T v32, T v33, T g[12])
6{
7 T t11;
8 T t12;
9 T t13;
10 T t14;
11 T t15;
12 T t16;
13 T t17;
14 T t18;
15 T t19;
16 T t32;
17 T t33;
18 T t34;
19 T t35;
20 T t36;
21 T t37;
22 T t44;
23 T t45;
24 T t46;
25 T t75;
26 T t77;
27 T t76;
28 T t78;
29 T t79;
30 T t80;
31 T t81;
32 T t83;
33
34 /* G_EE */
35 /* G = G_EE(V01,V02,V03,V11,V12,V13,V21,V22,V23,V31,V32,V33) */
36 /* This function was generated by the Symbolic Math Toolbox version 8.3. */
37 /* 14-Jun-2019 13:58:25 */
38 t11 = -v11 + v01;
39 t12 = -v12 + v02;
40 t13 = -v13 + v03;
41 t14 = -v21 + v01;
42 t15 = -v22 + v02;
43 t16 = -v23 + v03;
44 t17 = -v31 + v21;
45 t18 = -v32 + v22;
46 t19 = -v33 + v23;
47 t32 = t14 * t18;
48 t33 = t15 * t17;
49 t34 = t14 * t19;
50 t35 = t16 * t17;
51 t36 = t15 * t19;
52 t37 = t16 * t18;
53 t44 = t11 * t18 + -(t12 * t17);
54 t45 = t11 * t19 + -(t13 * t17);
55 t46 = t12 * t19 + -(t13 * t18);
56 t75 = 1.0 / ((t44 * t44 + t45 * t45) + t46 * t46);
57 t77 = (t16 * t44 + t14 * t46) + -(t15 * t45);
58 t76 = t75 * t75;
59 t78 = t77 * t77;
60 t79 = (t12 * t44 * 2.0 + t13 * t45 * 2.0) * t76 * t78;
61 t80 = (t11 * t45 * 2.0 + t12 * t46 * 2.0) * t76 * t78;
62 t81 = (t18 * t44 * 2.0 + t19 * t45 * 2.0) * t76 * t78;
63 t18 = (t17 * t45 * 2.0 + t18 * t46 * 2.0) * t76 * t78;
64 t83 = (t11 * t44 * 2.0 + -(t13 * t46 * 2.0)) * t76 * t78;
65 t19 = (t17 * t44 * 2.0 + -(t19 * t46 * 2.0)) * t76 * t78;
66 t76 = t75 * t77;
67 g[0] = -t81 + t76 * ((-t36 + t37) + t46) * 2.0;
68 g[1] = t19 - t76 * ((-t34 + t35) + t45) * 2.0;
69 g[2] = t18 + t76 * ((-t32 + t33) + t44) * 2.0;
70 g[3] = t81 + t76 * (t36 - t37) * 2.0;
71 g[4] = -t19 - t76 * (t34 - t35) * 2.0;
72 g[5] = -t18 + t76 * (t32 - t33) * 2.0;
73 t17 = t12 * t16 + -(t13 * t15);
74 g[6] = t79 - t76 * (t17 + t46) * 2.0;
75 t18 = t11 * t16 + -(t13 * t14);
76 g[7] = -t83 + t76 * (t18 + t45) * 2.0;
77 t19 = t11 * t15 + -(t12 * t14);
78 g[8] = -t80 - t76 * (t19 + t44) * 2.0;
79 g[9] = -t79 + t76 * t17 * 2.0;
80 g[10] = t83 - t76 * t18 * 2.0;
81 g[11] = t80 + t76 * t19 * 2.0;
82}
83
84template <class T>
85MUDA_GENERIC void H_EE(
86 T v01, T v02, T v03, T v11, T v12, T v13, T v21, T v22, T v23, T v31, T v32, T v33, T H[144])
87{
88 T t11;
89 T t12;
90 T t13;
91 T t14;
92 T t15;
93 T t16;
94 T t26;
95 T t27;
96 T t28;
97 T t47;
98 T t48;
99 T t49;
100 T t50;
101 T t51;
102 T t52;
103 T t53;
104 T t54;
105 T t55;
106 T t56;
107 T t57;
108 T t58;
109 T t59;
110 T t65;
111 T t73;
112 T t35;
113 T t36;
114 T t37;
115 T t38;
116 T t39;
117 T t40;
118 T t98;
119 T t99;
120 T t100;
121 T t101;
122 T t103;
123 T t105;
124 T t107;
125 T t108;
126 T t109;
127 T t137;
128 T t138;
129 T t139;
130 T t140;
131 T t141;
132 T t142;
133 T t143;
134 T t144;
135 T t145;
136 T t146;
137 T t147;
138 T t148;
139 T t156;
140 T t159;
141 T t157;
142 T t262;
143 T t263;
144 T t264;
145 T t265;
146 T t266;
147 T t267;
148 T t268;
149 T t269;
150 T t270;
151 T t271;
152 T t272;
153 T t273;
154 T t274;
155 T t275;
156 T t276;
157 T t277;
158 T t278;
159 T t279;
160 T t298;
161 T t299;
162 T t300;
163 T t301;
164 T t302;
165 T t303;
166 T t310;
167 T t311;
168 T t312;
169 T t313;
170 T t314;
171 T t315;
172 T t322;
173 T t323;
174 T t325;
175 T t326;
176 T t327;
177 T t328;
178 T t329;
179 T t330;
180 T t335;
181 T t337;
182 T t339;
183 T t340;
184 T t341;
185 T t342;
186 T t343;
187 T t345;
188 T t348;
189 T t353;
190 T t356;
191 T t358;
192 T t359;
193 T t360;
194 T t362;
195 T t367;
196 T t368;
197 T t369;
198 T t371;
199 T t374;
200 T t377;
201 T t382;
202 T t386;
203 T t387;
204 T t398;
205 T t399;
206 T t403;
207 T t408;
208 T t423;
209 T t424;
210 T t427;
211 T t428;
212 T t431;
213 T t432;
214 T t433;
215 T t434;
216 T t437;
217 T t438;
218 T t441;
219 T t442;
220 T t446;
221 T t451;
222 T t455;
223 T t456;
224 T t467;
225 T t468;
226 T t472;
227 T t477;
228 T t491;
229 T t492;
230 T t495;
231 T t497;
232 T t499;
233 T t500;
234 T t503;
235 T t504;
236 T t506;
237 T t508;
238 T t550;
239 T t568;
240 T t519_tmp;
241 T b_t519_tmp;
242 T t519;
243 T t520_tmp;
244 T b_t520_tmp;
245 T t520;
246 T t521_tmp;
247 T b_t521_tmp;
248 T t521;
249 T t522_tmp;
250 T b_t522_tmp;
251 T t522;
252 T t523_tmp;
253 T b_t523_tmp;
254 T t523;
255 T t524_tmp;
256 T b_t524_tmp;
257 T t524;
258 T t525;
259 T t526;
260 T t527;
261 T t528;
262 T t529;
263 T t530;
264 T t531;
265 T t532;
266 T t533;
267 T t534;
268 T t535;
269 T t536;
270 T t537;
271 T t538;
272 T t539;
273 T t540;
274 T t542;
275 T t543;
276 T t544;
277
278 /* H_EE */
279 /* H = H_EE(V01,V02,V03,V11,V12,V13,V21,V22,V23,V31,V32,V33) */
280 /* This function was generated by the Symbolic Math Toolbox version 8.3. */
281 /* 14-Jun-2019 13:58:38 */
282 t11 = -v11 + v01;
283 t12 = -v12 + v02;
284 t13 = -v13 + v03;
285 t14 = -v21 + v01;
286 t15 = -v22 + v02;
287 t16 = -v23 + v03;
288 t26 = -v31 + v21;
289 t27 = -v32 + v22;
290 t28 = -v33 + v23;
291 t47 = t11 * t27;
292 t48 = t12 * t26;
293 t49 = t11 * t28;
294 t50 = t13 * t26;
295 t51 = t12 * t28;
296 t52 = t13 * t27;
297 t53 = t14 * t27;
298 t54 = t15 * t26;
299 t55 = t14 * t28;
300 t56 = t16 * t26;
301 t57 = t15 * t28;
302 t58 = t16 * t27;
303 t59 = t11 * t26 * 2.0;
304 t65 = t12 * t27 * 2.0;
305 t73 = t13 * t28 * 2.0;
306 t35 = t11 * t11 * 2.0;
307 t36 = t12 * t12 * 2.0;
308 t37 = t13 * t13 * 2.0;
309 t38 = t26 * t26 * 2.0;
310 t39 = t27 * t27 * 2.0;
311 t40 = t28 * t28 * 2.0;
312 t98 = t11 * t15 + -(t12 * t14);
313 t99 = t11 * t16 + -(t13 * t14);
314 t100 = t12 * t16 + -(t13 * t15);
315 t101 = t47 + -t48;
316 t103 = t49 + -t50;
317 t105 = t51 + -t52;
318 t107 = t53 + -t54;
319 t108 = t55 + -t56;
320 t109 = t57 + -t58;
321 t137 = t98 + t101;
322 t138 = t99 + t103;
323 t139 = t100 + t105;
324 t140 = (t54 + -t53) + t101;
325 t141 = (t56 + -t55) + t103;
326 t142 = (t58 + -t57) + t105;
327 t143 = t12 * t101 * 2.0 + t13 * t103 * 2.0;
328 t144 = t11 * t103 * 2.0 + t12 * t105 * 2.0;
329 t145 = t27 * t101 * 2.0 + t28 * t103 * 2.0;
330 t146 = t26 * t103 * 2.0 + t27 * t105 * 2.0;
331 t147 = t11 * t101 * 2.0 + -(t13 * t105 * 2.0);
332 t148 = t26 * t101 * 2.0 + -(t28 * t105 * 2.0);
333 t156 = 1.0 / ((t101 * t101 + t103 * t103) + t105 * t105);
334 t159 = (t16 * t101 + t14 * t105) + -(t15 * t103);
335 t157 = t156 * t156;
336 t57 = pow(t156, 3.0);
337 t58 = t159 * t159;
338 t262 = t11 * t156 * t159 * 2.0;
339 t263 = t12 * t156 * t159 * 2.0;
340 t264 = t13 * t156 * t159 * 2.0;
341 t265 = t14 * t156 * t159 * 2.0;
342 t266 = t15 * t156 * t159 * 2.0;
343 t267 = t16 * t156 * t159 * 2.0;
344 t268 = (-v31 + v01) * t156 * t159 * 2.0;
345 t269 = (-v21 + v11) * t156 * t159 * 2.0;
346 t270 = (-v32 + v02) * t156 * t159 * 2.0;
347 t271 = (-v22 + v12) * t156 * t159 * 2.0;
348 t272 = (-v33 + v03) * t156 * t159 * 2.0;
349 t273 = (-v23 + v13) * t156 * t159 * 2.0;
350 t274 = (-v31 + v11) * t156 * t159 * 2.0;
351 t275 = (-v32 + v12) * t156 * t159 * 2.0;
352 t276 = (-v33 + v13) * t156 * t159 * 2.0;
353 t277 = t26 * t156 * t159 * 2.0;
354 t278 = t27 * t156 * t159 * 2.0;
355 t279 = t28 * t156 * t159 * 2.0;
356 t298 = t11 * t12 * t157 * t58 * 2.0;
357 t299 = t11 * t13 * t157 * t58 * 2.0;
358 t300 = t12 * t13 * t157 * t58 * 2.0;
359 t301 = t26 * t27 * t157 * t58 * 2.0;
360 t302 = t26 * t28 * t157 * t58 * 2.0;
361 t303 = t27 * t28 * t157 * t58 * 2.0;
362 t310 = (t35 + t36) * t157 * t58;
363 t311 = (t35 + t37) * t157 * t58;
364 t312 = (t36 + t37) * t157 * t58;
365 t313 = (t38 + t39) * t157 * t58;
366 t314 = (t38 + t40) * t157 * t58;
367 t315 = (t39 + t40) * t157 * t58;
368 t322 = (t59 + t65) * t157 * t58;
369 t323 = (t59 + t73) * t157 * t58;
370 t59 = (t65 + t73) * t157 * t58;
371 t325 = (t47 * 2.0 + -(t48 * 4.0)) * t157 * t58;
372 t53 = -t157 * t58;
373 t56 = t48 * 2.0 - t47 * 4.0;
374 t326 = t53 * t56;
375 t327 = (t49 * 2.0 + -(t50 * 4.0)) * t157 * t58;
376 t55 = t50 * 2.0 - t49 * 4.0;
377 t328 = t53 * t55;
378 t329 = (t51 * 2.0 + -(t52 * 4.0)) * t157 * t58;
379 t54 = t52 * 2.0 - t51 * 4.0;
380 t330 = t53 * t54;
381 t53 = t157 * t58;
382 t335 = t53 * t56;
383 t337 = t53 * t55;
384 t339 = t53 * t54;
385 t340 = t143 * t143 * t57 * t58 * 2.0;
386 t341 = t144 * t144 * t57 * t58 * 2.0;
387 t342 = t145 * t145 * t57 * t58 * 2.0;
388 t343 = t146 * t146 * t57 * t58 * 2.0;
389 t345 = t147 * t147 * t57 * t58 * 2.0;
390 t348 = t148 * t148 * t57 * t58 * 2.0;
391 t36 = t98 * t143 * t157 * t159 * 2.0;
392 t353 = t99 * t143 * t157 * t159 * 2.0;
393 t356 = t99 * t144 * t157 * t159 * 2.0;
394 t65 = t100 * t144 * t157 * t159 * 2.0;
395 t358 = t107 * t143 * t157 * t159 * 2.0;
396 t359 = t98 * t145 * t157 * t159 * 2.0;
397 t360 = t108 * t143 * t157 * t159 * 2.0;
398 t54 = t107 * t144 * t157 * t159 * 2.0;
399 t362 = t99 * t145 * t157 * t159 * 2.0;
400 t53 = t98 * t146 * t157 * t159 * 2.0;
401 t56 = t109 * t143 * t157 * t159 * 2.0;
402 t27 = t108 * t144 * t157 * t159 * 2.0;
403 t55 = t100 * t145 * t157 * t159 * 2.0;
404 t367 = t99 * t146 * t157 * t159 * 2.0;
405 t368 = t109 * t144 * t157 * t159 * 2.0;
406 t369 = t100 * t146 * t157 * t159 * 2.0;
407 t38 = t107 * t145 * t157 * t159 * 2.0;
408 t371 = t108 * t145 * t157 * t159 * 2.0;
409 t374 = t108 * t146 * t157 * t159 * 2.0;
410 t28 = t109 * t146 * t157 * t159 * 2.0;
411 t377 = t98 * t147 * t157 * t159 * 2.0;
412 t382 = t100 * t147 * t157 * t159 * 2.0;
413 t386 = t107 * t147 * t157 * t159 * 2.0;
414 t387 = t98 * t148 * t157 * t159 * 2.0;
415 t103 = t108 * t147 * t157 * t159 * 2.0;
416 t101 = t99 * t148 * t157 * t159 * 2.0;
417 t398 = t109 * t147 * t157 * t159 * 2.0;
418 t399 = t100 * t148 * t157 * t159 * 2.0;
419 t403 = t107 * t148 * t157 * t159 * 2.0;
420 t408 = t109 * t148 * t157 * t159 * 2.0;
421 t73 = t137 * t143 * t157 * t159 * 2.0;
422 t423 = t138 * t143 * t157 * t159 * 2.0;
423 t424 = t138 * t144 * t157 * t159 * 2.0;
424 t37 = t139 * t144 * t157 * t159 * 2.0;
425 t427 = t140 * t143 * t157 * t159 * 2.0;
426 t428 = t137 * t145 * t157 * t159 * 2.0;
427 t16 = t140 * t144 * t157 * t159 * 2.0;
428 t11 = t137 * t146 * t157 * t159 * 2.0;
429 t431 = t141 * t143 * t157 * t159 * 2.0;
430 t432 = t138 * t145 * t157 * t159 * 2.0;
431 t433 = t141 * t144 * t157 * t159 * 2.0;
432 t434 = t138 * t146 * t157 * t159 * 2.0;
433 t105 = t142 * t143 * t157 * t159 * 2.0;
434 t14 = t139 * t145 * t157 * t159 * 2.0;
435 t437 = t142 * t144 * t157 * t159 * 2.0;
436 t438 = t139 * t146 * t157 * t159 * 2.0;
437 t35 = t140 * t145 * t157 * t159 * 2.0;
438 t441 = t141 * t145 * t157 * t159 * 2.0;
439 t442 = t141 * t146 * t157 * t159 * 2.0;
440 t39 = t142 * t146 * t157 * t159 * 2.0;
441 t446 = t137 * t147 * t157 * t159 * 2.0;
442 t451 = t139 * t147 * t157 * t159 * 2.0;
443 t455 = t140 * t147 * t157 * t159 * 2.0;
444 t456 = t137 * t148 * t157 * t159 * 2.0;
445 t13 = t141 * t147 * t157 * t159 * 2.0;
446 t26 = t138 * t148 * t157 * t159 * 2.0;
447 t467 = t142 * t147 * t157 * t159 * 2.0;
448 t468 = t139 * t148 * t157 * t159 * 2.0;
449 t472 = t140 * t148 * t157 * t159 * 2.0;
450 t477 = t142 * t148 * t157 * t159 * 2.0;
451 t47 = t143 * t144 * t57 * t58 * 2.0;
452 t15 = t143 * t145 * t57 * t58 * 2.0;
453 t491 = t143 * t146 * t57 * t58 * 2.0;
454 t492 = t144 * t145 * t57 * t58 * 2.0;
455 t12 = t144 * t146 * t57 * t58 * 2.0;
456 t40 = t145 * t146 * t57 * t58 * 2.0;
457 t495 = t143 * t147 * t57 * t58 * 2.0;
458 t497 = t144 * t147 * t57 * t58 * 2.0;
459 t499 = t143 * t148 * t57 * t58 * 2.0;
460 t500 = t145 * t147 * t57 * t58 * 2.0;
461 t503 = t146 * t147 * t57 * t58 * 2.0;
462 t504 = t144 * t148 * t57 * t58 * 2.0;
463 t506 = t145 * t148 * t57 * t58 * 2.0;
464 t508 = t146 * t148 * t57 * t58 * 2.0;
465 t57 = t147 * t148 * t57 * t58 * 2.0;
466 t550 = ((((t98 * t109 * t156 * 2.0 + -t266) + t337) + t359) + t368) + t492;
467 t568 = ((((t108 * t137 * t156 * 2.0 + -t268) + t330) + t27) + t456) + t504;
468 t519_tmp = t139 * t143 * t157 * t159;
469 b_t519_tmp = t100 * t143 * t157 * t159;
470 t519 = (((-(t100 * t139 * t156 * 2.0) + t312) + -t340) + b_t519_tmp * 2.0)
471 + t519_tmp * 2.0;
472 t520_tmp = t140 * t146 * t157 * t159;
473 b_t520_tmp = t107 * t146 * t157 * t159;
474 t520 = (((t107 * t140 * t156 * 2.0 + t313) + -t343) + b_t520_tmp * 2.0)
475 + -(t520_tmp * 2.0);
476 t521_tmp = t142 * t145 * t157 * t159;
477 b_t521_tmp = t109 * t145 * t157 * t159;
478 t521 = (((t109 * t142 * t156 * 2.0 + t315) + -t342) + -(b_t521_tmp * 2.0))
479 + t521_tmp * 2.0;
480 t522_tmp = t137 * t144 * t157 * t159;
481 b_t522_tmp = t98 * t144 * t157 * t159;
482 t522 = (((-(t98 * t137 * t156 * 2.0) + t310) + -t341) + -(b_t522_tmp * 2.0))
483 + -(t522_tmp * 2.0);
484 t523_tmp = t138 * t147 * t157 * t159;
485 b_t523_tmp = t99 * t147 * t157 * t159;
486 t523 = (((-(t99 * t138 * t156 * 2.0) + t311) + -t345) + b_t523_tmp * 2.0) + t523_tmp * 2.0;
487 t524_tmp = t141 * t148 * t157 * t159;
488 b_t524_tmp = t108 * t148 * t157 * t159;
489 t524 = (((t108 * t141 * t156 * 2.0 + t314) + -t348) + -(b_t524_tmp * 2.0))
490 + t524_tmp * 2.0;
491 t525 = (((t98 * t100 * t156 * 2.0 + t299) + t65) + -t36) + -t47;
492 t526 = (((t107 * t109 * t156 * 2.0 + t302) + t38) + -t28) + -t40;
493 t527 = (((-(t98 * t99 * t156 * 2.0) + t300) + t377) + -t356) + t497;
494 t528 = (((-(t99 * t100 * t156 * 2.0) + t298) + t353) + t382) + -t495;
495 t529 = (((-(t107 * t108 * t156 * 2.0) + t303) + t374) + -t403) + t508;
496 t530 = (((-(t108 * t109 * t156 * 2.0) + t301) + -t371) + -t408) + -t506;
497 t531 = (((t98 * t107 * t156 * 2.0 + t322) + t54) + -t53) + -t12;
498 t532 = (((t100 * t109 * t156 * 2.0 + t59) + t55) + -t56) + -t15;
499 t533 = (((t99 * t108 * t156 * 2.0 + t323) + t101) + -t103) + -t57;
500 t534 = (((t98 * t140 * t156 * 2.0 + -t322) + t53) + t16) + t12;
501 t535 = (((-(t107 * t137 * t156 * 2.0) + -t322) + -t54) + t11) + t12;
502 t536 = (((t100 * t142 * t156 * 2.0 + -t59) + -t55) + -t105) + t15;
503 t537 = (((-(t109 * t139 * t156 * 2.0) + -t59) + t56) + -t14) + t15;
504 t538 = (((t99 * t141 * t156 * 2.0 + -t323) + -t101) + -t13) + t57;
505 t539 = (((-(t108 * t138 * t156 * 2.0) + -t323) + t103) + -t26) + t57;
506 t540 = (((t137 * t139 * t156 * 2.0 + t299) + t37) + -t73) + -t47;
507 t148 = (((t140 * t142 * t156 * 2.0 + t302) + t39) + -t35) + -t40;
508 t542 = (((-(t137 * t138 * t156 * 2.0) + t300) + t446) + -t424) + t497;
509 t543 = (((-(t138 * t139 * t156 * 2.0) + t298) + t423) + t451) + -t495;
510 t544 = (((-(t140 * t141 * t156 * 2.0) + t303) + t472) + -t442) + t508;
511 t53 = (((-(t141 * t142 * t156 * 2.0) + t301) + t441) + t477) + -t506;
512 t157 = (((-(t139 * t142 * t156 * 2.0) + t59) + t105) + t14) + -t15;
513 t159 = (((-(t137 * t140 * t156 * 2.0) + t322) + -t16) + -t11) + -t12;
514 t147 = (((-(t138 * t141 * t156 * 2.0) + t323) + t13) + t26) + -t57;
515 t146 = ((((t100 * t107 * t156 * 2.0 + t266) + t327) + -t358) + -t369) + t491;
516 t145 = ((((-(t99 * t107 * t156 * 2.0) + -t265) + t329) + t367) + t386) + -t503;
517 t144 = ((((-(t100 * t108 * t156 * 2.0) + -t267) + t325) + t360) + -t399) + t499;
518 t143 = ((((-(t99 * t109 * t156 * 2.0) + t267) + t335) + -t362) + t398) + t500;
519 t52 = ((((-(t98 * t108 * t156 * 2.0) + t265) + t339) + -t27) + -t387) + -t504;
520 t51 = ((((t109 * t140 * t156 * 2.0 + -t278) + -t302) + t28) + t35) + t40;
521 t50 = ((((-(t98 * t139 * t156 * 2.0) + t263) + -t299) + t36) + -t37) + t47;
522 t49 = ((((t107 * t142 * t156 * 2.0 + t278) + -t302) + -t38) + -t39) + t40;
523 t48 = ((((-(t100 * t137 * t156 * 2.0) + -t263) + -t299) + -t65) + t73) + t47;
524 t47 = ((((t99 * t137 * t156 * 2.0 + t262) + -t300) + t356) + -t446) + -t497;
525 t73 = ((((t100 * t138 * t156 * 2.0 + t264) + -t298) + -t382) + -t423) + t495;
526 t65 = ((((-(t109 * t141 * t156 * 2.0) + t279) + -t301) + t408) + -t441) + t506;
527 t59 = ((((t98 * t138 * t156 * 2.0 + -t262) + -t300) + -t377) + t424) + -t497;
528 t40 = ((((t99 * t139 * t156 * 2.0 + -t264) + -t298) + -t353) + -t451) + t495;
529 t39 = ((((-(t107 * t141 * t156 * 2.0) + -t277) + -t303) + t403) + t442) + -t508;
530 t38 = ((((-(t108 * t142 * t156 * 2.0) + -t279) + -t301) + t371) + -t477) + t506;
531 t37 = ((((-(t108 * t140 * t156 * 2.0) + t277) + -t303) + -t374) + -t472) + -t508;
532 t36 = ((((t98 * t142 * t156 * 2.0 + t271) + t328) + -t359) + t437) + -t492;
533 t35 = ((((-(t109 * t137 * t156 * 2.0) + t270) + t328) + -t368) + -t428) + -t492;
534 t28 = ((((t100 * t140 * t156 * 2.0 + -t271) + -t327) + t369) + -t427) + -t491;
535 t27 = ((((-(t98 * t141 * t156 * 2.0) + -t269) + t330) + t387) + -t433) + t504;
536 t26 = ((((t109 * t138 * t156 * 2.0 + -t272) + t326) + -t398) + t432) + -t500;
537 t13 = ((((-(t107 * t139 * t156 * 2.0) + -t270) + -t327) + t358) + t438) + -t491;
538 t12 = ((((-(t99 * t142 * t156 * 2.0) + -t273) + t326) + t362) + t467) + -t500;
539 t11 = ((((-(t99 * t140 * t156 * 2.0) + t269) + -t329) + -t367) + t455) + t503;
540 t16 = ((((t107 * t138 * t156 * 2.0 + t268) + -t329) + -t386) + -t434) + t503;
541 t15 = ((((-(t100 * t141 * t156 * 2.0) + t273) + -t325) + t399) + t431) + -t499;
542 t14 = ((((t108 * t139 * t156 * 2.0 + t272) + -t325) + -t360) + t468) + -t499;
543 t105 = ((((-(t139 * t140 * t156 * 2.0) + t275) + t327) + t427) + -t438) + t491;
544 t103 = ((((t138 * t140 * t156 * 2.0 + -t274) + t329) + t434) + -t455) + -t503;
545 t101 = ((((-(t137 * t142 * t156 * 2.0) + -t275) + t337) + t428) + -t437) + t492;
546 t58 = ((((t139 * t141 * t156 * 2.0 + -t276) + t325) + -t431) + -t468) + t499;
547 t57 = ((((t137 * t141 * t156 * 2.0 + t274) + t339) + t433) + -t456) + -t504;
548 t56 = ((((t138 * t142 * t156 * 2.0 + t276) + t335) + -t432) + -t467) + t500;
549 t55 = -t315 + t342;
550 H[0] = (t55 + t142 * t142 * t156 * 2.0) - t521_tmp * 4.0;
551 H[1] = t53;
552 H[2] = t148;
553 H[3] = t521;
554 H[4] = t38;
555 H[5] = t49;
556 H[6] = t157;
557 H[7] = t56;
558 H[8] = t101;
559 H[9] = t536;
560 H[10] = t12;
561 H[11] = t36;
562 H[12] = t53;
563 t54 = -t314 + t348;
564 H[13] = (t54 + t141 * t141 * t156 * 2.0) - t524_tmp * 4.0;
565 H[14] = t544;
566 H[15] = t65;
567 H[16] = t524;
568 H[17] = t39;
569 H[18] = t58;
570 H[19] = t147;
571 H[20] = t57;
572 H[21] = t15;
573 H[22] = t538;
574 H[23] = t27;
575 H[24] = t148;
576 H[25] = t544;
577 t53 = -t313 + t343;
578 H[26] = (t53 + t140 * t140 * t156 * 2.0) + t520_tmp * 4.0;
579 H[27] = t51;
580 H[28] = t37;
581 H[29] = t520;
582 H[30] = t105;
583 H[31] = t103;
584 H[32] = t159;
585 H[33] = t28;
586 H[34] = t11;
587 H[35] = t534;
588 H[36] = t521;
589 H[37] = t65;
590 H[38] = t51;
591 H[39] = (t55 + t109 * t109 * t156 * 2.0) + b_t521_tmp * 4.0;
592 H[40] = t530;
593 H[41] = t526;
594 H[42] = t537;
595 H[43] = t26;
596 H[44] = t35;
597 H[45] = t532;
598 H[46] = t143;
599 H[47] = t550;
600 H[48] = t38;
601 H[49] = t524;
602 H[50] = t37;
603 H[51] = t530;
604 H[52] = (t54 + t108 * t108 * t156 * 2.0) + b_t524_tmp * 4.0;
605 H[53] = t529;
606 H[54] = t14;
607 H[55] = t539;
608 H[56] = t568;
609 H[57] = t144;
610 H[58] = t533;
611 H[59] = t52;
612 H[60] = t49;
613 H[61] = t39;
614 H[62] = t520;
615 H[63] = t526;
616 H[64] = t529;
617 H[65] = (t53 + t107 * t107 * t156 * 2.0) - b_t520_tmp * 4.0;
618 H[66] = t13;
619 H[67] = t16;
620 H[68] = t535;
621 H[69] = t146;
622 H[70] = t145;
623 H[71] = t531;
624 H[72] = t157;
625 H[73] = t58;
626 H[74] = t105;
627 H[75] = t537;
628 H[76] = t14;
629 H[77] = t13;
630 t55 = -t312 + t340;
631 H[78] = (t55 + t139 * t139 * t156 * 2.0) - t519_tmp * 4.0;
632 H[79] = t543;
633 H[80] = t540;
634 H[81] = t519;
635 H[82] = t40;
636 H[83] = t50;
637 H[84] = t56;
638 H[85] = t147;
639 H[86] = t103;
640 H[87] = t26;
641 H[88] = t539;
642 H[89] = t16;
643 H[90] = t543;
644 t54 = -t311 + t345;
645 H[91] = (t54 + t138 * t138 * t156 * 2.0) - t523_tmp * 4.0;
646 H[92] = t542;
647 H[93] = t73;
648 H[94] = t523;
649 H[95] = t59;
650 H[96] = t101;
651 H[97] = t57;
652 H[98] = t159;
653 H[99] = t35;
654 H[100] = t568;
655 H[101] = t535;
656 H[102] = t540;
657 H[103] = t542;
658 t53 = -t310 + t341;
659 H[104] = (t53 + t137 * t137 * t156 * 2.0) + t522_tmp * 4.0;
660 H[105] = t48;
661 H[106] = t47;
662 H[107] = t522;
663 H[108] = t536;
664 H[109] = t15;
665 H[110] = t28;
666 H[111] = t532;
667 H[112] = t144;
668 H[113] = t146;
669 H[114] = t519;
670 H[115] = t73;
671 H[116] = t48;
672 H[117] = (t55 + t100 * t100 * t156 * 2.0) - b_t519_tmp * 4.0;
673 H[118] = t528;
674 H[119] = t525;
675 H[120] = t12;
676 H[121] = t538;
677 H[122] = t11;
678 H[123] = t143;
679 H[124] = t533;
680 H[125] = t145;
681 H[126] = t40;
682 H[127] = t523;
683 H[128] = t47;
684 H[129] = t528;
685 H[130] = (t54 + t99 * t99 * t156 * 2.0) - b_t523_tmp * 4.0;
686 H[131] = t527;
687 H[132] = t36;
688 H[133] = t27;
689 H[134] = t534;
690 H[135] = t550;
691 H[136] = t52;
692 H[137] = t531;
693 H[138] = t50;
694 H[139] = t59;
695 H[140] = t522;
696 H[141] = t525;
697 H[142] = t527;
698 H[143] = (t53 + t98 * t98 * t156 * 2.0) + b_t522_tmp * 4.0;
699}
700} // namespace muda::distance::details
701
702
703namespace muda::distance
704{
705template <class T>
706MUDA_GENERIC void edge_edge_distance(const Eigen::Matrix<T, 3, 1>& ea0,
707 const Eigen::Matrix<T, 3, 1>& ea1,
708 const Eigen::Matrix<T, 3, 1>& eb0,
709 const Eigen::Matrix<T, 3, 1>& eb1,
710 T& dist2)
711{
712 Eigen::Matrix<T, 3, 1> b = Eigen::Matrix<T, 3, 1>(ea1 - ea0).cross(eb1 - eb0);
713 T aTb = Eigen::Matrix<T, 3, 1>(eb0 - ea0).dot(b);
714 dist2 = aTb * aTb / b.squaredNorm();
715}
716
717template <class T>
718MUDA_GENERIC void edge_edge_distance_gradient(const Eigen::Matrix<T, 3, 1>& ea0,
719 const Eigen::Matrix<T, 3, 1>& ea1,
720 const Eigen::Matrix<T, 3, 1>& eb0,
721 const Eigen::Matrix<T, 3, 1>& eb1,
722 Eigen::Matrix<T, 12, 1>& grad)
723{
724 details::g_EE(ea0[0],
725 ea0[1],
726 ea0[2],
727 ea1[0],
728 ea1[1],
729 ea1[2],
730 eb0[0],
731 eb0[1],
732 eb0[2],
733 eb1[0],
734 eb1[1],
735 eb1[2],
736 grad.data());
737}
738
739template <class T>
740MUDA_GENERIC void edge_edge_distance_hessian(const Eigen::Matrix<T, 3, 1>& ea0,
741 const Eigen::Matrix<T, 3, 1>& ea1,
742 const Eigen::Matrix<T, 3, 1>& eb0,
743 const Eigen::Matrix<T, 3, 1>& eb1,
744 Eigen::Matrix<T, 12, 12>& Hessian)
745{
746 details::H_EE(ea0[0],
747 ea0[1],
748 ea0[2],
749 ea1[0],
750 ea1[1],
751 ea1[2],
752 eb0[0],
753 eb0[1],
754 eb0[2],
755 eb1[0],
756 eb1[1],
757 eb1[2],
758 Hessian.data());
759}
760
761} // namespace muda::distance