58 inline Eigen::Matrix<double, Eigen::Dynamic, Eigen::Dynamic, 0, 9, 9>
AMIPS3d_hessian(
const RowVectorNd &p,
const double t,
const int el_id,
const Eigen::Matrix<double, Eigen::Dynamic, Eigen::Dynamic, 0, 3, 3> &
F)
60 Eigen::Matrix<double, Eigen::Dynamic, Eigen::Dynamic, 0, 9, 9> hess(9, 9);
61 std::array<double, 81> result_0;
62 const double F00 =
F(0, 0);
63 const double F01 =
F(0, 1);
64 const double F02 =
F(0, 2);
65 const double F10 =
F(1, 0);
66 const double F11 =
F(1, 1);
67 const double F12 =
F(1, 2);
68 const double F20 =
F(2, 0);
69 const double F21 =
F(2, 1);
70 const double F22 =
F(2, 2);
71 const auto helper_0 = 6 * F02;
72 const auto helper_1 = -20 * F00 + 7 * F01 + helper_0;
73 const auto helper_2 = 3 * helper_1;
74 const auto helper_3 = F11 * F22;
75 const auto helper_4 = F12 * F21;
76 const auto helper_5 = helper_3 - helper_4;
77 const auto helper_6 = F12 * F20;
78 const auto helper_7 = F10 * F21;
79 const auto helper_8 = F10 * F22;
80 const auto helper_9 = F11 * F20;
81 const auto helper_10 = F00 * helper_3 - F00 * helper_4 + F01 * helper_6 - F01 * helper_8 + F02 * helper_7 - F02 * helper_9;
82 const auto helper_11 = 1.0 / helper_10;
83 const auto helper_12 = helper_11 * helper_5;
84 const auto helper_13 = pow(helper_10, -2);
85 const auto helper_14 = 3 * F02;
86 const auto helper_15 = F00 + F01 - helper_14;
87 const auto helper_16 = 3 * F12;
88 const auto helper_17 = F10 + F11 - helper_16;
89 const auto helper_18 = 3 * F22;
90 const auto helper_19 = F20 + F21 - helper_18;
91 const auto helper_20 = 27 * pow(F00, 2) + 27 * pow(F10, 2) + 27 * pow(F20, 2) + 4 * pow(helper_15, 2) + 4 * pow(helper_17, 2) + 4 * pow(helper_19, 2) + 9 * pow(F00 - 2 * F01, 2) + 9 * pow(F10 - 2 * F11, 2) + 9 * pow(F20 - 2 * F21, 2);
92 const auto helper_21 = helper_13 * helper_20;
93 const auto helper_22 = pow(6, 2.0 / 3.0);
94 const auto helper_23 = helper_22 / pow(helper_10, 5.0 / 3.0);
95 const auto helper_24 = (5.0 / 162.0) * helper_23;
96 const auto helper_25 = -helper_6 + helper_8;
97 const auto helper_26 = helper_11 * helper_25;
98 const auto helper_27 = 15 * helper_1;
99 const auto helper_28 = 7 * F00 - 20 * F01 + helper_0;
100 const auto helper_29 = 10 * helper_21;
101 const auto helper_30 = helper_29 * helper_5;
102 const auto helper_31 = (1.0 / 324.0) * helper_23;
103 const auto helper_32 = helper_31 * (15 * helper_11 * helper_28 * helper_5 - helper_25 * helper_30 - helper_26 * helper_27 - 63);
104 const auto helper_33 = 90 * helper_15;
105 const auto helper_34 = helper_7 - helper_9;
106 const auto helper_35 = helper_11 * helper_34;
107 const auto helper_36 = helper_31 * (helper_12 * helper_33 + helper_27 * helper_35 + helper_30 * helper_34 - 54);
108 const auto helper_37 = F01 * F22 - F02 * F21;
109 const auto helper_38 = 6 * F12;
110 const auto helper_39 = -20 * F10 + 7 * F11 + helper_38;
111 const auto helper_40 = helper_12 * helper_20;
112 const auto helper_41 = 2 * helper_40;
113 const auto helper_42 = helper_22 / pow(helper_10, 8.0 / 3.0);
114 const auto helper_43 = (5.0 / 324.0) * helper_42;
115 const auto helper_44 = helper_43 * (-helper_2 * helper_37 - helper_37 * helper_41 + 3 * helper_39 * helper_5);
116 const auto helper_45 = F00 * F22 - F02 * F20;
117 const auto helper_46 = 12 * helper_1;
118 const auto helper_47 = 7 * F10 - 20 * F11 + helper_38;
119 const auto helper_48 = 12 * helper_5;
120 const auto helper_49 = helper_18 * helper_20;
121 const auto helper_50 = 8 * helper_40;
122 const auto helper_51 = (5.0 / 1296.0) * helper_42;
123 const auto helper_52 = helper_51 * (helper_45 * helper_46 + helper_45 * helper_50 + helper_47 * helper_48 - helper_49);
124 const auto helper_53 = 72 * helper_5;
125 const auto helper_54 = F00 * F21 - F01 * F20;
126 const auto helper_55 = 3 * helper_20;
127 const auto helper_56 = F21 * helper_55;
128 const auto helper_57 = helper_51 * (helper_17 * helper_53 - helper_46 * helper_54 - helper_50 * helper_54 + helper_56);
129 const auto helper_58 = F01 * F12 - F02 * F11;
130 const auto helper_59 = 6 * F22;
131 const auto helper_60 = -20 * F20 + 7 * F21 + helper_59;
132 const auto helper_61 = helper_43 * (helper_2 * helper_58 + helper_41 * helper_58 + 3 * helper_5 * helper_60);
133 const auto helper_62 = F00 * F12 - F02 * F10;
134 const auto helper_63 = 7 * F20 - 20 * F21 + helper_59;
135 const auto helper_64 = helper_16 * helper_20;
136 const auto helper_65 = helper_51 * (-helper_46 * helper_62 + helper_48 * helper_63 - helper_50 * helper_62 + helper_64);
137 const auto helper_66 = F00 * F11 - F01 * F10;
138 const auto helper_67 = F11 * helper_55;
139 const auto helper_68 = helper_20 * helper_66;
140 const auto helper_69 = 8 * helper_68;
141 const auto helper_70 = helper_51 * (helper_12 * helper_69 + helper_19 * helper_53 + helper_46 * helper_66 - helper_67);
142 const auto helper_71 = 3 * helper_25;
143 const auto helper_72 = helper_31 * (15 * helper_11 * helper_28 * helper_34 - helper_25 * helper_29 * helper_34 - helper_26 * helper_33 - 54);
144 const auto helper_73 = 12 * helper_28;
145 const auto helper_74 = 12 * helper_25;
146 const auto helper_75 = helper_20 * helper_26;
147 const auto helper_76 = 8 * helper_37;
148 const auto helper_77 = helper_51 * (-helper_37 * helper_73 - helper_39 * helper_74 + helper_49 + helper_75 * helper_76);
149 const auto helper_78 = helper_43 * (3 * helper_28 * helper_45 - 2 * helper_45 * helper_75 - helper_47 * helper_71);
150 const auto helper_79 = 72 * helper_25;
151 const auto helper_80 = F20 * helper_55;
152 const auto helper_81 = helper_51 * (8 * helper_11 * helper_20 * helper_25 * helper_54 - helper_17 * helper_79 - helper_54 * helper_73 - helper_80);
153 const auto helper_82 = helper_51 * (12 * helper_28 * helper_58 - 8 * helper_58 * helper_75 - helper_60 * helper_74 - helper_64);
154 const auto helper_83 = helper_43 * (2 * helper_11 * helper_20 * helper_25 * helper_62 - 3 * helper_28 * helper_62 - helper_63 * helper_71);
155 const auto helper_84 = F10 * helper_55;
156 const auto helper_85 = helper_51 * (-helper_19 * helper_79 - helper_26 * helper_69 + helper_66 * helper_73 + helper_84);
157 const auto helper_86 = 5 * helper_21;
158 const auto helper_87 = (1.0 / 162.0) * helper_23;
159 const auto helper_88 = 72 * helper_15;
160 const auto helper_89 = helper_20 * helper_35;
161 const auto helper_90 = helper_51 * (12 * helper_34 * helper_39 - helper_37 * helper_88 - helper_56 - helper_76 * helper_89);
162 const auto helper_91 = 12 * helper_34;
163 const auto helper_92 = 8 * helper_89;
164 const auto helper_93 = helper_51 * (helper_45 * helper_88 + helper_45 * helper_92 + helper_47 * helper_91 + helper_80);
165 const auto helper_94 = 9 * helper_15;
166 const auto helper_95 = (5.0 / 162.0) * helper_42;
167 const auto helper_96 = helper_95 * (9 * helper_17 * helper_34 - helper_54 * helper_89 - helper_54 * helper_94);
168 const auto helper_97 = helper_51 * (helper_58 * helper_88 + helper_58 * helper_92 + helper_60 * helper_91 + helper_67);
169 const auto helper_98 = helper_51 * (12 * helper_34 * helper_63 - helper_62 * helper_88 - helper_62 * helper_92 - helper_84);
170 const auto helper_99 = helper_95 * (9 * helper_19 * helper_34 + helper_66 * helper_89 + helper_66 * helper_94);
171 const auto helper_100 = 3 * helper_37;
172 const auto helper_101 = helper_11 * helper_39;
173 const auto helper_102 = helper_11 * helper_37;
174 const auto helper_103 = 15 * helper_47;
175 const auto helper_104 = helper_31 * (-helper_102 * helper_103 + 15 * helper_11 * helper_39 * helper_45 - helper_29 * helper_37 * helper_45 - 63);
176 const auto helper_105 = 90 * helper_17;
177 const auto helper_106 = helper_31 * (-15 * helper_101 * helper_54 - helper_102 * helper_105 + 10 * helper_13 * helper_20 * helper_37 * helper_54 - 54);
178 const auto helper_107 = helper_43 * (-helper_100 * helper_60 - 2 * helper_102 * helper_20 * helper_58 + 3 * helper_39 * helper_58);
179 const auto helper_108 = 12 * helper_39;
180 const auto helper_109 = 12 * helper_63;
181 const auto helper_110 = helper_14 * helper_20;
182 const auto helper_111 = helper_51 * (-helper_108 * helper_62 - helper_109 * helper_37 + 8 * helper_11 * helper_20 * helper_37 * helper_62 - helper_110);
183 const auto helper_112 = 72 * helper_19;
184 const auto helper_113 = F01 * helper_55;
185 const auto helper_114 = helper_51 * (-helper_102 * helper_69 + helper_108 * helper_66 - helper_112 * helper_37 + helper_113);
186 const auto helper_115 = 3 * helper_47;
187 const auto helper_116 = helper_11 * helper_45;
188 const auto helper_117 = helper_11 * helper_54;
189 const auto helper_118 = helper_31 * (-helper_103 * helper_117 + 90 * helper_11 * helper_17 * helper_45 - helper_29 * helper_45 * helper_54 - 54);
190 const auto helper_119 = 12 * helper_60;
191 const auto helper_120 = 12 * helper_47;
192 const auto helper_121 = helper_116 * helper_20;
193 const auto helper_122 = 8 * helper_58;
194 const auto helper_123 = helper_51 * (helper_110 + helper_119 * helper_45 + helper_120 * helper_58 + helper_121 * helper_122);
195 const auto helper_124 = helper_43 * (-helper_115 * helper_62 - 2 * helper_121 * helper_62 + 3 * helper_45 * helper_63);
196 const auto helper_125 = F00 * helper_55;
197 const auto helper_126 = helper_51 * (helper_112 * helper_45 + helper_116 * helper_69 + helper_120 * helper_66 - helper_125);
198 const auto helper_127 = helper_117 * helper_20;
199 const auto helper_128 = helper_51 * (-helper_113 - helper_119 * helper_54 - helper_122 * helper_127 + 72 * helper_17 * helper_58);
200 const auto helper_129 = helper_51 * (-helper_109 * helper_54 + helper_125 + 8 * helper_127 * helper_62 - 72 * helper_17 * helper_62);
201 const auto helper_130 = helper_95 * (-helper_117 * helper_68 + 9 * helper_17 * helper_66 - 9 * helper_19 * helper_54);
202 const auto helper_131 = helper_11 * helper_60;
203 const auto helper_132 = 15 * helper_131;
204 const auto helper_133 = helper_29 * helper_58;
205 const auto helper_134 = helper_31 * (15 * helper_11 * helper_58 * helper_63 - helper_132 * helper_62 - helper_133 * helper_62 - 63);
206 const auto helper_135 = 90 * helper_19;
207 const auto helper_136 = helper_31 * (helper_11 * helper_135 * helper_58 + helper_132 * helper_66 + helper_133 * helper_66 - 54);
208 const auto helper_137 = helper_11 * helper_62;
209 const auto helper_138 = helper_31 * (15 * helper_11 * helper_63 * helper_66 - helper_135 * helper_137 - helper_29 * helper_62 * helper_66 - 54);
210 result_0[0] = helper_24 * (helper_12 * helper_2 + helper_21 * pow(helper_5, 2) + 18);
211 result_0[1] = helper_32;
212 result_0[2] = helper_36;
213 result_0[3] = helper_44;
214 result_0[4] = helper_52;
215 result_0[5] = helper_57;
216 result_0[6] = helper_61;
217 result_0[7] = helper_65;
218 result_0[8] = helper_70;
219 result_0[9] = helper_32;
220 result_0[10] = helper_24 * (-helper_11 * helper_28 * helper_71 + helper_21 * pow(helper_25, 2) + 18);
221 result_0[11] = helper_72;
222 result_0[12] = helper_77;
223 result_0[13] = helper_78;
224 result_0[14] = helper_81;
225 result_0[15] = helper_82;
226 result_0[16] = helper_83;
227 result_0[17] = helper_85;
228 result_0[18] = helper_36;
229 result_0[19] = helper_72;
230 result_0[20] = helper_87 * (helper_33 * helper_35 + pow(helper_34, 2) * helper_86 + 81);
231 result_0[21] = helper_90;
232 result_0[22] = helper_93;
233 result_0[23] = helper_96;
234 result_0[24] = helper_97;
235 result_0[25] = helper_98;
236 result_0[26] = helper_99;
237 result_0[27] = helper_44;
238 result_0[28] = helper_77;
239 result_0[29] = helper_90;
240 result_0[30] = helper_24 * (-helper_100 * helper_101 + helper_21 * pow(helper_37, 2) + 18);
241 result_0[31] = helper_104;
242 result_0[32] = helper_106;
243 result_0[33] = helper_107;
244 result_0[34] = helper_111;
245 result_0[35] = helper_114;
246 result_0[36] = helper_52;
247 result_0[37] = helper_78;
248 result_0[38] = helper_93;
249 result_0[39] = helper_104;
250 result_0[40] = helper_24 * (helper_115 * helper_116 + helper_21 * pow(helper_45, 2) + 18);
251 result_0[41] = helper_118;
252 result_0[42] = helper_123;
253 result_0[43] = helper_124;
254 result_0[44] = helper_126;
255 result_0[45] = helper_57;
256 result_0[46] = helper_81;
257 result_0[47] = helper_96;
258 result_0[48] = helper_106;
259 result_0[49] = helper_118;
260 result_0[50] = helper_87 * (-helper_105 * helper_117 + pow(helper_54, 2) * helper_86 + 81);
261 result_0[51] = helper_128;
262 result_0[52] = helper_129;
263 result_0[53] = helper_130;
264 result_0[54] = helper_61;
265 result_0[55] = helper_82;
266 result_0[56] = helper_97;
267 result_0[57] = helper_107;
268 result_0[58] = helper_123;
269 result_0[59] = helper_128;
270 result_0[60] = helper_24 * (3 * helper_131 * helper_58 + helper_21 * pow(helper_58, 2) + 18);
271 result_0[61] = helper_134;
272 result_0[62] = helper_136;
273 result_0[63] = helper_65;
274 result_0[64] = helper_83;
275 result_0[65] = helper_98;
276 result_0[66] = helper_111;
277 result_0[67] = helper_124;
278 result_0[68] = helper_129;
279 result_0[69] = helper_134;
280 result_0[70] = helper_24 * (-3 * helper_137 * helper_63 + helper_21 * pow(helper_62, 2) + 18);
281 result_0[71] = helper_138;
282 result_0[72] = helper_70;
283 result_0[73] = helper_85;
284 result_0[74] = helper_99;
285 result_0[75] = helper_114;
286 result_0[76] = helper_126;
287 result_0[77] = helper_130;
288 result_0[78] = helper_136;
289 result_0[79] = helper_138;
290 result_0[80] = helper_87 * (helper_11 * helper_135 * helper_66 + pow(helper_66, 2) * helper_86 + 81);
292 hess(0, 0) = result_0[0];
293 hess(0, 1) = result_0[1];
294 hess(0, 2) = result_0[2];
295 hess(0, 3) = result_0[3];
296 hess(0, 4) = result_0[4];
297 hess(0, 5) = result_0[5];
298 hess(0, 6) = result_0[6];
299 hess(0, 7) = result_0[7];
300 hess(0, 8) = result_0[8];
301 hess(1, 0) = result_0[9];
302 hess(1, 1) = result_0[10];
303 hess(1, 2) = result_0[11];
304 hess(1, 3) = result_0[12];
305 hess(1, 4) = result_0[13];
306 hess(1, 5) = result_0[14];
307 hess(1, 6) = result_0[15];
308 hess(1, 7) = result_0[16];
309 hess(1, 8) = result_0[17];
310 hess(2, 0) = result_0[18];
311 hess(2, 1) = result_0[19];
312 hess(2, 2) = result_0[20];
313 hess(2, 3) = result_0[21];
314 hess(2, 4) = result_0[22];
315 hess(2, 5) = result_0[23];
316 hess(2, 6) = result_0[24];
317 hess(2, 7) = result_0[25];
318 hess(2, 8) = result_0[26];
319 hess(3, 0) = result_0[27];
320 hess(3, 1) = result_0[28];
321 hess(3, 2) = result_0[29];
322 hess(3, 3) = result_0[30];
323 hess(3, 4) = result_0[31];
324 hess(3, 5) = result_0[32];
325 hess(3, 6) = result_0[33];
326 hess(3, 7) = result_0[34];
327 hess(3, 8) = result_0[35];
328 hess(4, 0) = result_0[36];
329 hess(4, 1) = result_0[37];
330 hess(4, 2) = result_0[38];
331 hess(4, 3) = result_0[39];
332 hess(4, 4) = result_0[40];
333 hess(4, 5) = result_0[41];
334 hess(4, 6) = result_0[42];
335 hess(4, 7) = result_0[43];
336 hess(4, 8) = result_0[44];
337 hess(5, 0) = result_0[45];
338 hess(5, 1) = result_0[46];
339 hess(5, 2) = result_0[47];
340 hess(5, 3) = result_0[48];
341 hess(5, 4) = result_0[49];
342 hess(5, 5) = result_0[50];
343 hess(5, 6) = result_0[51];
344 hess(5, 7) = result_0[52];
345 hess(5, 8) = result_0[53];
346 hess(6, 0) = result_0[54];
347 hess(6, 1) = result_0[55];
348 hess(6, 2) = result_0[56];
349 hess(6, 3) = result_0[57];
350 hess(6, 4) = result_0[58];
351 hess(6, 5) = result_0[59];
352 hess(6, 6) = result_0[60];
353 hess(6, 7) = result_0[61];
354 hess(6, 8) = result_0[62];
355 hess(7, 0) = result_0[63];
356 hess(7, 1) = result_0[64];
357 hess(7, 2) = result_0[65];
358 hess(7, 3) = result_0[66];
359 hess(7, 4) = result_0[67];
360 hess(7, 5) = result_0[68];
361 hess(7, 6) = result_0[69];
362 hess(7, 7) = result_0[70];
363 hess(7, 8) = result_0[71];
364 hess(8, 0) = result_0[72];
365 hess(8, 1) = result_0[73];
366 hess(8, 2) = result_0[74];
367 hess(8, 3) = result_0[75];
368 hess(8, 4) = result_0[76];
369 hess(8, 5) = result_0[77];
370 hess(8, 6) = result_0[78];
371 hess(8, 7) = result_0[79];
372 hess(8, 8) = result_0[80];