rsvs3D  0.0.0
Codes for the c++ implementation of the 3D RSVS
RSVSmath_automatic.cpp
1 #include <cmath>
2 #include <vector>
3 
4 #include "vectorarray.hpp"
5 using namespace std;
6 
7 #include "RSVSmath_automatic.hpp"
8 
9 #pragma GCC diagnostic push
10 #pragma GCC diagnostic ignored "-Wunused-parameter"
11 
12 void Volume2_f(double d0, double d1, double d2, const vector<double> &g0s, const vector<double> &g1s,
13  const vector<double> &g2s, const vector<double> &g0e, const vector<double> &g1e,
14  const vector<double> &g2e, double &t0)
15 {
16  double t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19;
17  t2 = g0e[1] - g0s[1];
18  t3 = d0 * t2;
19  t4 = g0e[0] - g0s[0];
20  t5 = d0 * t4;
21  t6 = g1e[0] - g1s[0];
22  t7 = g0s[0] - g1s[0] + t5 - d1 * t6;
23  t8 = g0e[2] - g0s[2];
24  t9 = d0 * t8;
25  t10 = g2e[0] - g2s[0];
26  t11 = g0s[0] - g2s[0] + t5 - d2 * t10;
27  t12 = g1e[1] - g1s[1];
28  t13 = g0s[1] - g1s[1] + t3 - d1 * t12;
29  t14 = g2e[2] - g2s[2];
30  t15 = g0s[2] - g2s[2] + t9 - d2 * t14;
31  t16 = g1e[2] - g1s[2];
32  t17 = g0s[2] - g1s[2] + t9 - d1 * t16;
33  t18 = g2e[1] - g2s[1];
34  t19 = g0s[1] - g2s[1] + t3 - d2 * t18;
35  t0 = (g0s[1] + t3) * (t7 * t15 - t11 * t17) * (1.0 / 6.0) + (g0s[2] + t9) * (t11 * t13 - t7 * t19) * (1.0 / 6.0) -
36  (g0s[0] + t5) * (t13 * t15 - t17 * t19) * (1.0 / 6.0);
37 }
38 
39 void Volume2_df(double d0, double d1, double d2, const vector<double> &g0s, const vector<double> &g1s,
40  const vector<double> &g2s, const vector<double> &g0e, const vector<double> &g1e,
41  const vector<double> &g2e, ArrayVec<double> &A0)
42 {
43  double t2, t3, t4, t5, t6, t7, t20, t8, t9, t10, t23, t11, t12, t22, t13, t14, t25, t15, t16, t21, t17, t18, t24,
44  t19, t26, t27, t28;
45  t2 = g0e[0] - g0s[0];
46  t3 = g0e[1] - g0s[1];
47  t4 = d0 * t2;
48  t5 = d0 * t3;
49  t6 = g0e[2] - g0s[2];
50  t7 = g1e[0] - g1s[0];
51  t20 = d1 * t7;
52  t8 = g0s[0] - g1s[0] + t4 - t20;
53  t9 = d0 * t6;
54  t10 = g2e[0] - g2s[0];
55  t23 = d2 * t10;
56  t11 = g0s[0] - g2s[0] + t4 - t23;
57  t12 = g1e[1] - g1s[1];
58  t22 = d1 * t12;
59  t13 = g0s[1] - g1s[1] + t5 - t22;
60  t14 = g1e[2] - g1s[2];
61  t25 = d1 * t14;
62  t15 = g0s[2] - g1s[2] + t9 - t25;
63  t16 = g2e[1] - g2s[1];
64  t21 = d2 * t16;
65  t17 = g0s[1] - g2s[1] + t5 - t21;
66  t18 = g2e[2] - g2s[2];
67  t24 = d2 * t18;
68  t19 = g0s[2] - g2s[2] + t9 - t24;
69  t26 = g0s[2] + t9;
70  t27 = g0s[1] + t5;
71  t28 = g0s[0] + t4;
72  A0[0][0] = t26 * (t3 * t8 - t3 * t11 - t2 * t13 + t2 * t17) * (-1.0 / 6.0) +
73  t27 * (t6 * t8 - t2 * t15 - t6 * t11 + t2 * t19) * (1.0 / 6.0) +
74  t28 * (t3 * t15 - t6 * t13 - t3 * t19 + t6 * t17) * (1.0 / 6.0) +
75  t6 * (t11 * t13 - t8 * t17) * (1.0 / 6.0) - t3 * (t11 * t15 - t8 * t19) * (1.0 / 6.0) -
76  t2 * (t13 * t19 - t15 * t17) * (1.0 / 6.0);
77  A0[0][1] = t26 * (t11 * t12 - t7 * t17) * (-1.0 / 6.0) + t27 * (t11 * t14 - t7 * t19) * (1.0 / 6.0) +
78  t28 * (t12 * t19 - t14 * t17) * (1.0 / 6.0);
79  A0[0][2] = t26 * (t10 * t13 - t8 * t16) * (-1.0 / 6.0) + t27 * (t10 * t15 - t8 * t18) * (1.0 / 6.0) +
80  t28 * (t13 * t18 - t15 * t16) * (1.0 / 6.0);
81 }
82 
83 void Volume2_ddf(double d0, double d1, double d2, const vector<double> &g0s, const vector<double> &g1s,
84  const vector<double> &g2s, const vector<double> &g0e, const vector<double> &g1e,
85  const vector<double> &g2e, ArrayVec<double> &A0)
86 {
87  double t2, t3, t4, t5, t6, t7, t23, t8, t9, t20, t10, t11, t12, t24, t13, t14, t25, t15, t16, t21, t17, t18, t22,
88  t19, t26, t27, t28, t29, t30, t31, t32, t33, t34, t35, t36, t37, t38, t39, t40, t41, t42, t43, t44, t45, t46,
89  t47, t48, t49, t50, t51, t52, t53, t54, t55, t56, t57, t58, t59, t60, t61, t62, t63, t64;
90  t2 = g0e[0] - g0s[0];
91  t3 = g0e[1] - g0s[1];
92  t4 = d0 * t2;
93  t5 = d0 * t3;
94  t6 = g0e[2] - g0s[2];
95  t7 = g1e[0] - g1s[0];
96  t23 = d1 * t7;
97  t8 = g0s[0] - g1s[0] + t4 - t23;
98  t9 = g2e[0] - g2s[0];
99  t20 = d2 * t9;
100  t10 = g0s[0] - g2s[0] + t4 - t20;
101  t11 = d0 * t6;
102  t12 = g1e[1] - g1s[1];
103  t24 = d1 * t12;
104  t13 = g0s[1] - g1s[1] + t5 - t24;
105  t14 = g1e[2] - g1s[2];
106  t25 = d1 * t14;
107  t15 = g0s[2] - g1s[2] + t11 - t25;
108  t16 = g2e[1] - g2s[1];
109  t21 = d2 * t16;
110  t17 = g0s[1] - g2s[1] + t5 - t21;
111  t18 = g2e[2] - g2s[2];
112  t22 = d2 * t18;
113  t19 = g0s[2] - g2s[2] + t11 - t22;
114  t26 = g0s[2] + t11;
115  t27 = g0s[1] + t5;
116  t28 = g0s[0] + t4;
117  t29 = t10 * t12;
118  t30 = t29 - t7 * t17;
119  t31 = t10 * t14;
120  t32 = t31 - t7 * t19;
121  t33 = t3 * t32 * (1.0 / 6.0);
122  t34 = t12 * t19;
123  t35 = t2 * (t34 - t14 * t17) * (1.0 / 6.0);
124  t36 = t3 * t7;
125  t37 = t26 * (t36 - t2 * t12) * (1.0 / 6.0);
126  t38 = t6 * t7;
127  t39 = t38 - t2 * t14;
128  t40 = t3 * t14;
129  t41 = t40 - t6 * t12;
130  t42 = t33 + t35 + t37 - t6 * t30 * (1.0 / 6.0) - t27 * t39 * (1.0 / 6.0) - t28 * t41 * (1.0 / 6.0);
131  t43 = t9 * t13;
132  t44 = t43 - t8 * t16;
133  t45 = t9 * t15;
134  t46 = t3 * (t45 - t8 * t18) * (1.0 / 6.0);
135  t47 = t13 * t18;
136  t48 = t47 - t15 * t16;
137  t49 = t2 * t48 * (1.0 / 6.0);
138  t50 = t3 * t9;
139  t51 = t50 - t2 * t16;
140  t52 = t6 * t9;
141  t53 = t27 * (t52 - t2 * t18) * (1.0 / 6.0);
142  t54 = t3 * t18;
143  t55 = t54 - t6 * t16;
144  t56 = t28 * t55 * (1.0 / 6.0);
145  t57 = t46 + t49 + t53 + t56 - t6 * t44 * (1.0 / 6.0) - t26 * t51 * (1.0 / 6.0);
146  t58 = t9 * t12;
147  t59 = t26 * (t58 - t7 * t16) * (1.0 / 6.0);
148  t60 = t9 * t14;
149  t61 = t60 - t7 * t18;
150  t62 = t12 * t18;
151  t63 = t62 - t14 * t16;
152  t64 = t59 - t27 * t61 * (1.0 / 6.0) - t28 * t63 * (1.0 / 6.0);
153  A0[0][0] = t6 * (t3 * t8 - t3 * t10 - t2 * t13 + t2 * t17) * (-1.0 / 3.0) +
154  t3 * (t6 * t8 - t6 * t10 - t2 * t15 + t2 * t19) * (1.0 / 3.0) +
155  t2 * (t3 * t15 - t6 * t13 - t3 * t19 + t6 * t17) * (1.0 / 3.0);
156  A0[0][1] = t42;
157  A0[0][2] = t57;
158  A0[1][0] = t42;
159  A0[1][2] = t64;
160  A0[2][0] = t57;
161  A0[2][1] = t64;
162 }
163 
164 /*void Volume_f(const vector<double>& p0 , const vector<double>& p1 , const
165 vector<double>& p2 , double & t0 ) { double t2, t3, t4, t5, t6, t7,
166 t8, t9, t10; t2 = p0[0] -p1[0] ; t3 = p0[0] -p2[0] ; t4 = p0[1] -p1[1]
167 ; t5 = p0[2] -p2[2] ; t6 = p0[2] -p1[2] ; t7 = p0[1] -p2[1] ; t8 = p1[0]
168 -p2[0] ; t9 = p1[2] -p2[2] ; t10 = p1[1] -p2[1] ; t0 = p0[1]
169 *(t2*t5-t3*t6)*(1.0/6.0)+p0[2] *(t3*t4-t2*t7)*(1.0/6.0)-p0[0]
170 *(t4*t5-t6*t7)*(1.0/6.0)+p1[1] *(t2*t9-t6*t8)*(1.0/6.0)-p1[2]
171 *(t2*t10-t4*t8)*(1.0/6.0)-p1[0] *(t4*t9-t6*t10)*(1.0/6.0)+p2[1]
172 *(t3*t9-t5*t8)*(1.0/6.0)-p2[2] *(t3*t10-t7*t8)*(1.0/6.0)+p2[0]
173 *(t5*t10-t7*t9)*(1.0/6.0);
174 
175 }
176 
177 
178 void Volume_df(const vector<double>& p0 , const vector<double>& p1 , const
179 vector<double>& p2 , ArrayVec<double> & A0 ) { double t2, t3, t4, t5,
180 t6, t7, t8, t9, t10; t2 = p1[1] -p2[1] ; t3 = p1[2] -p2[2] ; t4 =
181 p1[0] -p2[0] ; t5 = p0[2] -p2[2] ; t6 = p0[2] -p1[2] ; t7 = p0[0] -p1[0]
182 ; t8 = p0[1] -p2[1] ; t9 = p0[1] -p1[1] ; t10 = p0[0] -p2[0] ; A0[0][0] =
183 p0[1] *t3*(1.0/6.0)-p0[2] *t2*(1.0/6.0)+p1[1] *t3*(1.0/6.0)-p1[2]
184 *t2*(1.0/6.0)+p2[1] *t3*(1.0/6.0)-p2[2]
185 *t2*(1.0/6.0)-t5*t9*(1.0/6.0)+t6*t8*(1.0/6.0); A0[0][1] = p0[0]
186 *t3*(-1.0/6.0)+p0[2] *t4*(1.0/6.0)-p1[0] *t3*(1.0/6.0)+p1[2]
187 *t4*(1.0/6.0)-p2[0] *t3*(1.0/6.0)+p2[2]
188 *t4*(1.0/6.0)+t5*t7*(1.0/6.0)-t6*t10*(1.0/6.0); A0[0][2] = p0[0]
189 *t2*(1.0/6.0)-p0[1] *t4*(1.0/6.0)+p1[0] *t2*(1.0/6.0)-p1[1]
190 *t4*(1.0/6.0)+p2[0] *t2*(1.0/6.0)-p2[1]
191 *t4*(1.0/6.0)-t7*t8*(1.0/6.0)+t9*t10*(1.0/6.0); A0[0][3] = p0[1]
192 *t5*(-1.0/6.0)+p0[2] *t8*(1.0/6.0)-p1[1] *t5*(1.0/6.0)+p1[2]
193 *t8*(1.0/6.0)-p2[1] *t5*(1.0/6.0)+p2[2]
194 *t8*(1.0/6.0)+t2*t6*(1.0/6.0)-t3*t9*(1.0/6.0); A0[0][4] = p0[0]
195 *t5*(1.0/6.0)-p0[2] *t10*(1.0/6.0)+p1[0] *t5*(1.0/6.0)-p1[2]
196 *t10*(1.0/6.0)+p2[0] *t5*(1.0/6.0)-p2[2]
197 *t10*(1.0/6.0)+t3*t7*(1.0/6.0)-t4*t6*(1.0/6.0); A0[0][5] = p0[0]
198 *t8*(-1.0/6.0)+p0[1] *t10*(1.0/6.0)-p1[0] *t8*(1.0/6.0)+p1[1]
199 *t10*(1.0/6.0)-p2[0] *t8*(1.0/6.0)+p2[1]
200 *t10*(1.0/6.0)-t2*t7*(1.0/6.0)+t4*t9*(1.0/6.0); A0[0][6] = p0[1]
201 *t6*(1.0/6.0)-p0[2] *t9*(1.0/6.0)+p1[1] *t6*(1.0/6.0)-p1[2]
202 *t9*(1.0/6.0)+p2[1] *t6*(1.0/6.0)-p2[2]
203 *t9*(1.0/6.0)+t2*t5*(1.0/6.0)-t3*t8*(1.0/6.0); A0[0][7] = p0[0]
204 *t6*(-1.0/6.0)+p0[2] *t7*(1.0/6.0)-p1[0] *t6*(1.0/6.0)+p1[2]
205 *t7*(1.0/6.0)-p2[0] *t6*(1.0/6.0)+p2[2]
206 *t7*(1.0/6.0)-t4*t5*(1.0/6.0)+t3*t10*(1.0/6.0); A0[0][8] = p0[1]
207 *t7*(-1.0/6.0)+p0[0] *t9*(1.0/6.0)-p1[1] *t7*(1.0/6.0)+p1[0]
208 *t9*(1.0/6.0)-p2[1] *t7*(1.0/6.0)+p2[0]
209 *t9*(1.0/6.0)-t2*t10*(1.0/6.0)+t4*t8*(1.0/6.0);
210 
211 }
212 
213 
214 void Volume_ddf(const vector<double>& p0 , const vector<double>& p1 , const
215 vector<double>& p2 , ArrayVec<double> & A0 ) { double t2, t3, t4, t5,
216 t6, t7, t8, t9, t10; t2 = p1[2] *(1.0/2.0); t3 = p2[1] *(1.0/2.0); t4
217 = p1[0] *(1.0/2.0); t5 = p2[2] *(1.0/2.0); t6 = p2[0] *(1.0/2.0); t7 = p0[1]
218 *(1.0/2.0); t8 = p1[1] *(1.0/2.0); t9 = p0[2] *(1.0/2.0); t10 = p0[0]
219 *(1.0/2.0); A0[0][4] = p2[2] *(-1.0/2.0); A0[0][5] = t3; A0[0][7] = t2;
220  A0[0][8] = p1[1] *(-1.0/2.0);
221  A0[1][3] = t5;
222  A0[1][5] = p2[0] *(-1.0/2.0);
223  A0[1][6] = -t2;
224  A0[1][8] = t4;
225  A0[2][3] = -t3;
226  A0[2][4] = t6;
227  A0[2][6] = t8;
228  A0[2][7] = -t4;
229  A0[3][1] = t5;
230  A0[3][2] = -t3;
231  A0[3][7] = p0[2] *(-1.0/2.0);
232  A0[3][8] = t7;
233  A0[4][0] = -t5;
234  A0[4][2] = t6;
235  A0[4][6] = t9;
236  A0[4][8] = p0[0] *(-1.0/2.0);
237  A0[5][0] = t3;
238  A0[5][1] = -t6;
239  A0[5][6] = -t7;
240  A0[5][7] = t10;
241  A0[6][1] = -t2;
242  A0[6][2] = t8;
243  A0[6][4] = t9;
244  A0[6][5] = -t7;
245  A0[7][0] = t2;
246  A0[7][2] = -t4;
247  A0[7][3] = -t9;
248  A0[7][5] = t10;
249  A0[8][0] = -t8;
250  A0[8][1] = t4;
251  A0[8][3] = t7;
252  A0[8][4] = -t10;
253 
254 }
255 
256 void Volume_f(const vector<double>& p0 , const vector<double>& p1 , const
257 vector<double>& p2 , double & t0 ) { double t2, t3, t4, t5, t6, t7;
258  t2 = p0[1-1]-p1[1-1];
259  t3 = p0[1-1]-p2[1-1];
260  t4 = p0[2-1]-p1[2-1];
261  t5 = p0[3-1]-p2[3-1];
262  t6 = p0[3-1]-p1[3-1];
263  t7 = p0[2-1]-p2[2-1];
264  t0 =
265 p0[2-1]*(t2*t5-t3*t6)*(1.0/6.0)+p0[3-1]*(t3*t4-t2*t7)*(1.0/6.0)-p0[1-1]*(t4*t5-t6*t7)*(1.0/6.0);
266 
267 }
268 
269 
270 void Volume_df(const vector<double>& p0 , const vector<double>& p1 , const
271 vector<double>& p2 , ArrayVec<double> & A0 ) { double t2, t3, t4, t5,
272 t6, t7, t8, t9, t10; t2 = p1[3-1]-p2[3-1]; t3 = p0[3-1]-p2[3-1]; t4 =
273 p0[3-1]-p1[3-1]; t5 = p1[1-1]-p2[1-1]; t6 = p1[2-1]-p2[2-1]; t7 =
274 p0[1-1]-p1[1-1]; t8 = p0[2-1]-p2[2-1]; t9 = p0[2-1]-p1[2-1]; t10 =
275 p0[1-1]-p2[1-1]; A0[0][0] =
276 p0[2-1]*t2*(1.0/6.0)-p0[3-1]*t6*(1.0/6.0)-t3*t9*(1.0/6.0)+t4*t8*(1.0/6.0);
277  A0[0][1] =
278 p0[1-1]*t2*(-1.0/6.0)+p0[3-1]*t5*(1.0/6.0)+t3*t7*(1.0/6.0)-t4*t10*(1.0/6.0);
279  A0[0][2] =
280 p0[1-1]*t6*(1.0/6.0)-p0[2-1]*t5*(1.0/6.0)-t7*t8*(1.0/6.0)+t9*t10*(1.0/6.0);
281  A0[0][3] = p0[2-1]*t3*(-1.0/6.0)+p0[3-1]*t8*(1.0/6.0);
282  A0[0][4] = p0[1-1]*t3*(1.0/6.0)-p0[3-1]*t10*(1.0/6.0);
283  A0[0][5] = p0[1-1]*t8*(-1.0/6.0)+p0[2-1]*t10*(1.0/6.0);
284  A0[0][6] = p0[2-1]*t4*(1.0/6.0)-p0[3-1]*t9*(1.0/6.0);
285  A0[0][7] = p0[1-1]*t4*(-1.0/6.0)+p0[3-1]*t7*(1.0/6.0);
286  A0[0][8] = p0[2-1]*t7*(-1.0/6.0)+p0[1-1]*t9*(1.0/6.0);
287 
288 }
289 
290 
291 void Volume_ddf(const vector<double>& p0 , const vector<double>& p1 , const
292 vector<double>& p2 , ArrayVec<double> & A0 ) { double t2, t3, t4, t5,
293 t6, t7, t8, t9, t10; t2 = p1[3-1]*(1.0/6.0); t3 = p2[2-1]*(1.0/6.0); t4
294 = p1[1-1]*(1.0/6.0); t5 = p2[3-1]*(1.0/6.0); t6 = p2[1-1]*(1.0/6.0); t7 =
295 p0[2-1]*(1.0/6.0); t8 = p1[2-1]*(1.0/6.0); t9 = p0[3-1]*(1.0/6.0); t10 =
296 p0[1-1]*(1.0/6.0); A0[0][4] = p2[3-1]*(-1.0/6.0); A0[0][5] = t3; A0[0][7] = t2;
297  A0[0][8] = p1[2-1]*(-1.0/6.0);
298  A0[1][3] = t5;
299  A0[1][5] = p2[1-1]*(-1.0/6.0);
300  A0[1][6] = -t2;
301  A0[1][8] = t4;
302  A0[2][3] = -t3;
303  A0[2][4] = t6;
304  A0[2][6] = t8;
305  A0[2][7] = -t4;
306  A0[3][1] = t5;
307  A0[3][2] = -t3;
308  A0[3][7] = p0[3-1]*(-1.0/6.0);
309  A0[3][8] = t7;
310  A0[4][0] = -t5;
311  A0[4][2] = t6;
312  A0[4][6] = t9;
313  A0[4][8] = p0[1-1]*(-1.0/6.0);
314  A0[5][0] = t3;
315  A0[5][1] = -t6;
316  A0[5][6] = -t7;
317  A0[5][7] = t10;
318  A0[6][1] = -t2;
319  A0[6][2] = t8;
320  A0[6][4] = t9;
321  A0[6][5] = -t7;
322  A0[7][0] = t2;
323  A0[7][2] = -t4;
324  A0[7][3] = -t9;
325  A0[7][5] = t10;
326  A0[8][0] = -t8;
327  A0[8][1] = t4;
328  A0[8][3] = t7;
329  A0[8][4] = -t10;
330 
331 } */
332 
333 void Volume_f(const vector<double> &p0, const vector<double> &p1, const vector<double> &p2, double &t0)
334 {
335  double t2, t3, t4, t5, t6, t7;
336  t2 = p0[0] - p1[0];
337  t3 = p0[0] - p2[0];
338  t4 = p0[1] - p1[1];
339  t5 = p0[2] - p2[2];
340  t6 = p0[2] - p1[2];
341  t7 = p0[1] - p2[1];
342  t0 = p0[1] * (t2 * t5 - t3 * t6) * (1.0 / 6.0) + p0[2] * (t3 * t4 - t2 * t7) * (1.0 / 6.0) -
343  p0[0] * (t4 * t5 - t6 * t7) * (1.0 / 6.0);
344 }
345 
346 void Volume_df(const vector<double> &p0, const vector<double> &p1, const vector<double> &p2, ArrayVec<double> &A0)
347 {
348  double t2, t3, t4, t5, t6, t7, t8, t9, t10;
349  t2 = p1[2] - p2[2];
350  t3 = p0[2] - p2[2];
351  t4 = p0[2] - p1[2];
352  t5 = p1[0] - p2[0];
353  t6 = p1[1] - p2[1];
354  t7 = p0[0] - p1[0];
355  t8 = p0[1] - p2[1];
356  t9 = p0[1] - p1[1];
357  t10 = p0[0] - p2[0];
358  A0[0][0] = p0[1] * t2 * (1.0 / 6.0) - p0[2] * t6 * (1.0 / 6.0) - t3 * t9 * (1.0 / 6.0) + t4 * t8 * (1.0 / 6.0);
359  A0[0][1] = p0[0] * t2 * (-1.0 / 6.0) + p0[2] * t5 * (1.0 / 6.0) + t3 * t7 * (1.0 / 6.0) - t4 * t10 * (1.0 / 6.0);
360  A0[0][2] = p0[0] * t6 * (1.0 / 6.0) - p0[1] * t5 * (1.0 / 6.0) - t7 * t8 * (1.0 / 6.0) + t9 * t10 * (1.0 / 6.0);
361  A0[0][3] = p0[1] * t3 * (-1.0 / 6.0) + p0[2] * t8 * (1.0 / 6.0);
362  A0[0][4] = p0[0] * t3 * (1.0 / 6.0) - p0[2] * t10 * (1.0 / 6.0);
363  A0[0][5] = p0[0] * t8 * (-1.0 / 6.0) + p0[1] * t10 * (1.0 / 6.0);
364  A0[0][6] = p0[1] * t4 * (1.0 / 6.0) - p0[2] * t9 * (1.0 / 6.0);
365  A0[0][7] = p0[0] * t4 * (-1.0 / 6.0) + p0[2] * t7 * (1.0 / 6.0);
366  A0[0][8] = p0[1] * t7 * (-1.0 / 6.0) + p0[0] * t9 * (1.0 / 6.0);
367 }
368 
369 void Volume_ddf(const vector<double> &p0, const vector<double> &p1, const vector<double> &p2, ArrayVec<double> &A0)
370 {
371  double t2, t3, t4, t5, t6, t7, t8, t9, t10;
372  t2 = p1[2] * (1.0 / 6.0);
373  t3 = p2[1] * (1.0 / 6.0);
374  t4 = p1[0] * (1.0 / 6.0);
375  t5 = p2[2] * (1.0 / 6.0);
376  t6 = p2[0] * (1.0 / 6.0);
377  t7 = p0[1] * (1.0 / 6.0);
378  t8 = p1[1] * (1.0 / 6.0);
379  t9 = p0[2] * (1.0 / 6.0);
380  t10 = p0[0] * (1.0 / 6.0);
381  A0[0][4] = p2[2] * (-1.0 / 6.0);
382  A0[0][5] = t3;
383  A0[0][7] = t2;
384  A0[0][8] = p1[1] * (-1.0 / 6.0);
385  A0[1][3] = t5;
386  A0[1][5] = p2[0] * (-1.0 / 6.0);
387  A0[1][6] = -t2;
388  A0[1][8] = t4;
389  A0[2][3] = -t3;
390  A0[2][4] = t6;
391  A0[2][6] = t8;
392  A0[2][7] = -t4;
393  A0[3][1] = t5;
394  A0[3][2] = -t3;
395  A0[3][7] = p0[2] * (-1.0 / 6.0);
396  A0[3][8] = t7;
397  A0[4][0] = -t5;
398  A0[4][2] = t6;
399  A0[4][6] = t9;
400  A0[4][8] = p0[0] * (-1.0 / 6.0);
401  A0[5][0] = t3;
402  A0[5][1] = -t6;
403  A0[5][6] = -t7;
404  A0[5][7] = t10;
405  A0[6][1] = -t2;
406  A0[6][2] = t8;
407  A0[6][4] = t9;
408  A0[6][5] = -t7;
409  A0[7][0] = t2;
410  A0[7][2] = -t4;
411  A0[7][3] = -t9;
412  A0[7][5] = t10;
413  A0[8][0] = -t8;
414  A0[8][1] = t4;
415  A0[8][3] = t7;
416  A0[8][4] = -t10;
417 }
418 
419 void Area_f(const vector<double> &p0, const vector<double> &p1, const vector<double> &p2, double &t0, double eps)
420 {
421  double t3, t4, t6, t9, t2, t7, t8, t5, t10;
422  // double eps = 0.0;
423  t3 = p0[1 - 1] - p1[1 - 1];
424  t4 = p0[1 - 1] - p2[1 - 1];
425  t6 = p0[2 - 1] - p1[2 - 1];
426  t9 = p0[2 - 1] - p2[2 - 1];
427  t2 = -t4 * t6 + t3 * t9;
428  t7 = p0[3 - 1] - p2[3 - 1];
429  t8 = p0[3 - 1] - p1[3 - 1];
430  t5 = -t3 * t7 + t4 * t8;
431  t10 = t6 * t7 - t8 * t9;
432  t0 = sqrt(t2 * t2 + t5 * t5 + t10 * t10 + eps) * (1.0 / 2.0);
433 }
434 
435 void Area_df(const vector<double> &p0, const vector<double> &p1, const vector<double> &p2, ArrayVec<double> &A0,
436  double eps)
437 {
438  double t2, t3, t4, t5, t6, t13, t7, t8, t9, t10, t18, t11, t14, t15, t12, t16, t17, t19, t20, t21, t22, t23, t24,
439  t25;
440  // double eps = rsvsmath_automatic_eps_surf;
441  t2 = p0[1 - 1] - p1[1 - 1];
442  t3 = p0[1 - 1] - p2[1 - 1];
443  t4 = p0[2 - 1] - p2[2 - 1];
444  t5 = t2 * t4;
445  t6 = p0[2 - 1] - p1[2 - 1];
446  t13 = t3 * t6;
447  t7 = t5 - t13;
448  t8 = p0[3 - 1] - p2[3 - 1];
449  t9 = t2 * t8;
450  t10 = p0[3 - 1] - p1[3 - 1];
451  t18 = t3 * t10;
452  t11 = t9 - t18;
453  t14 = t6 * t8;
454  t15 = t4 * t10;
455  t12 = -t14 + t15;
456  t16 = p1[3 - 1] - p2[3 - 1];
457  t17 = t7 * t7;
458  t19 = t11 * t11;
459  t20 = t14 - t15;
460  t21 = p1[1 - 1] - p2[1 - 1];
461  t22 = p1[2 - 1] - p2[2 - 1];
462  t23 = t20 * t20;
463  t24 = t17 + t19 + t23;
464  t25 = 1.0 / sqrt(t24 + eps);
465  A0[0][0] = (t11 * t16 * 2.0 + t7 * t22 * 2.0) * 1.0 / sqrt(t17 + t19 + t12 * t12 + eps) * (1.0 / 4.0);
466  A0[0][1] = t25 * (t7 * t21 * 2.0 - t16 * t20 * 2.0) * (-1.0 / 4.0);
467  A0[0][2] = t25 * (t11 * t21 * 2.0 + t20 * t22 * 2.0) * (-1.0 / 4.0);
468  A0[0][3] = t25 * (t4 * t7 * 2.0 + t8 * t11 * 2.0) * (-1.0 / 4.0);
469  A0[0][4] = t25 * (t3 * t7 * 2.0 - t8 * t20 * 2.0) * (1.0 / 4.0);
470  A0[0][5] = t25 * (t3 * t11 * 2.0 + t4 * t20 * 2.0) * (1.0 / 4.0);
471  A0[0][6] = t25 * (t6 * t7 * 2.0 + t10 * t11 * 2.0) * (1.0 / 4.0);
472  A0[0][7] = t25 * (t2 * t7 * 2.0 - t10 * t20 * 2.0) * (-1.0 / 4.0);
473  A0[0][8] = t25 * (t2 * t11 * 2.0 + t6 * t20 * 2.0) * (-1.0 / 4.0);
474 }
475 
476 void Area_ddf(const vector<double> &p0, const vector<double> &p1, const vector<double> &p2, ArrayVec<double> &A0,
477  double eps)
478 {
479  // double eps = rsvsmath_automatic_eps_surf;
480  double t2, t3, t5, t6, t8, t11, t13, t14, t4, t9, t10, t15, t16, t7, t20, t21, t12, t19, t23, t24, t17, t18, t22,
481  t25, t26, t27, t28, t29, t30, t31, t32, t37, t33, t34, t35, t36, t38, t39, t40, t41, t42, t43, t44, t45, t46,
482  t70, t47, t48, t49, t50, t51, t52, t53, t54, t55, t56, t75, t57, t58, t59, t60, t61, t62, t63, t64, t65, t66,
483  t67, t68, t69, t71, t72, t73, t74, t76, t77, t78, t79, t80, t81, t82, t83, t84, t85, t86, t87, t88, t89, t90,
484  t91, t92, t93, t94, t95, t96, t97, t98, t99, t100, t101, t102, t103, t104, t105, t106, t107, t108, t109, t110,
485  t111, t112, t113, t114, t115, t116, t117, t118, t119, t120, t121, t122, t123, t124, t125, t126, t127, t128,
486  t129, t130, t131, t132, t133, t134, t135, t136, t137, t138, t139, t140, t141, t142, t143, t144, t145, t146,
487  t147, t148, t149, t150, t151, t152, t153, t154, t155, t156, t157, t158, t159, t160, t161, t162, t163, t164,
488  t165, t166, t167, t168, t169, t170, t171, t172, t173, t174, t175, t176;
489  t2 = p1[2 - 1] - p2[2 - 1];
490  t3 = p1[3 - 1] - p2[3 - 1];
491  t5 = p0[1 - 1] - p1[1 - 1];
492  t6 = p0[1 - 1] - p2[1 - 1];
493  t8 = p0[2 - 1] - p1[2 - 1];
494  t11 = p0[2 - 1] - p2[2 - 1];
495  t13 = t5 * t11;
496  t14 = t6 * t8;
497  t4 = t13 - t14;
498  t9 = p0[3 - 1] - p2[3 - 1];
499  t10 = p0[3 - 1] - p1[3 - 1];
500  t15 = t5 * t9;
501  t16 = t6 * t10;
502  t7 = -t15 + t16;
503  t20 = t8 * t9;
504  t21 = t10 * t11;
505  t12 = t20 - t21;
506  t19 = t15 - t16;
507  t23 = t2 * t4 * 2.0;
508  t24 = t3 * t19 * 2.0;
509  t17 = t23 + t24;
510  t18 = t4 * t4;
511  t22 = t12 * t12;
512  t25 = t19 * t19;
513  t26 = t18 + t22 + t25;
514  t27 = 1.0 / pow(t26 + eps, 3.0 / 2.0);
515  t28 = p1[1 - 1] - p2[1 - 1];
516  t29 = 1.0 / sqrt(t26 + eps);
517  t30 = t5 * t11 * 2.0;
518  t31 = t5 * t9 * 2.0;
519  t32 = t3 * t12 * 2.0;
520  t37 = t4 * t28 * 2.0;
521  t33 = t32 - t37;
522  t34 = t2 * t28 * t29 * (-1.0 / 2.0) - t17 * t27 * t33 * (1.0 / 8.0);
523  t35 = t3 * t3;
524  t36 = t35 * 2.0;
525  t38 = t32 - t37;
526  t39 = t19 * t28 * 2.0;
527  t40 = t2 * t12 * 2.0;
528  t41 = t39 + t40;
529  t42 = t4 * t11 * 2.0;
530  t43 = t9 * t19 * 2.0;
531  t44 = t42 + t43;
532  t45 = t3 * t9 * 2.0;
533  t46 = t4 * t6 * 2.0;
534  t70 = t9 * t12 * 2.0;
535  t47 = t46 - t70;
536  t48 = t6 * t19 * 2.0;
537  t49 = t11 * t12 * 2.0;
538  t50 = t48 + t49;
539  t51 = t6 * t8 * 2.0;
540  t52 = t4 * t8 * 2.0;
541  t53 = t10 * t19 * 2.0;
542  t54 = t52 + t53;
543  t55 = t3 * t10 * 2.0;
544  t56 = t4 * t5 * 2.0;
545  t75 = t10 * t12 * 2.0;
546  t57 = t56 - t75;
547  t58 = t8 * t9 * 2.0;
548  t59 = t5 * t19 * 2.0;
549  t60 = t8 * t12 * 2.0;
550  t61 = t59 + t60;
551  t62 = t17 * t27 * t41 * (1.0 / 8.0);
552  t63 = t62 - t3 * t28 * t29 * (1.0 / 2.0);
553  t64 = t27 * t41 * (t32 - t37) * (1.0 / 8.0);
554  t65 = t64 - t2 * t3 * t29 * (1.0 / 2.0);
555  t66 = t28 * t28;
556  t67 = t66 * 2.0;
557  t68 = t2 * t2;
558  t69 = t68 * 2.0;
559  t71 = t6 * t28 * 2.0;
560  t72 = t2 * t11 * 2.0;
561  t73 = t6 * t10 * 2.0;
562  t74 = t10 * t11 * 2.0;
563  t76 = t5 * t28 * 2.0;
564  t77 = t2 * t8 * 2.0;
565  t78 = t45 + t72;
566  t79 = t17 * t27 * t44 * (1.0 / 8.0);
567  t80 = t79 - t29 * t78 * (1.0 / 4.0);
568  t81 = t11 * t28 * 2.0;
569  t82 = -t30 + t51 + t81;
570  t83 = t29 * t82 * (1.0 / 4.0);
571  t84 = t27 * t44 * (t32 - t37) * (1.0 / 8.0);
572  t85 = t83 + t84;
573  t86 = t9 * t28 * 2.0;
574  t87 = -t31 + t73 + t86;
575  t88 = t29 * t87 * (1.0 / 4.0);
576  t89 = t88 - t27 * t41 * t44 * (1.0 / 8.0);
577  t90 = t2 * t6 * 2.0;
578  t91 = t45 + t71;
579  t92 = t29 * t91 * (-1.0 / 4.0) - t27 * t33 * t47 * (1.0 / 8.0);
580  t93 = t2 * t9 * 2.0;
581  t94 = -t58 + t74 + t93;
582  t95 = t29 * t94 * (1.0 / 4.0);
583  t96 = t27 * t41 * t47 * (1.0 / 8.0);
584  t97 = t95 + t96;
585  t98 = t27 * t44 * t47 * (1.0 / 8.0);
586  t99 = t98 - t6 * t11 * t29 * (1.0 / 2.0);
587  t100 = t9 * t9;
588  t101 = t100 * 2.0;
589  t102 = t9 * t10 * 2.0;
590  t103 = t3 * t6 * 2.0;
591  t104 = t3 * t11 * 2.0;
592  t105 = t71 + t72;
593  t106 = t27 * t41 * t50 * (1.0 / 8.0);
594  t107 = t106 - t29 * t105 * (1.0 / 4.0);
595  t108 = t27 * t44 * t50 * (1.0 / 8.0);
596  t109 = t108 - t6 * t9 * t29 * (1.0 / 2.0);
597  t110 = t9 * t11 * t29 * (-1.0 / 2.0) - t27 * t47 * t50 * (1.0 / 8.0);
598  t111 = t6 * t6;
599  t112 = t111 * 2.0;
600  t113 = t11 * t11;
601  t114 = t113 * 2.0;
602  t115 = t5 * t6 * 2.0;
603  t116 = t8 * t11 * 2.0;
604  t117 = t55 + t77;
605  t118 = t29 * t117 * (1.0 / 4.0);
606  t119 = t118 - t17 * t27 * t54 * (1.0 / 8.0);
607  t120 = t8 * t28 * 2.0;
608  t121 = -t30 + t51 + t120;
609  t122 = t29 * t121 * (-1.0 / 4.0) - t27 * t33 * t54 * (1.0 / 8.0);
610  t123 = t10 * t28 * 2.0;
611  t124 = -t31 + t73 + t123;
612  t125 = t27 * t41 * t54 * (1.0 / 8.0);
613  t126 = t125 - t29 * t124 * (1.0 / 4.0);
614  t127 = t102 + t116;
615  t128 = t27 * t44 * t54 * (1.0 / 8.0);
616  t129 = t128 - t29 * t127 * (1.0 / 4.0);
617  t130 = t30 - t6 * t8 * 4.0;
618  t131 = t29 * t130 * (-1.0 / 4.0) - t27 * t47 * t54 * (1.0 / 8.0);
619  t132 = t31 - t6 * t10 * 4.0;
620  t133 = t29 * t132 * (-1.0 / 4.0) - t27 * t50 * t54 * (1.0 / 8.0);
621  t134 = t2 * t5 * 2.0;
622  t135 = t17 * t27 * t57 * (1.0 / 8.0);
623  t136 = t55 + t76;
624  t137 = t29 * t136 * (1.0 / 4.0);
625  t138 = t27 * t57 * (t32 - t37) * (1.0 / 8.0);
626  t139 = t137 + t138;
627  t140 = t2 * t10 * 2.0;
628  t141 = -t58 + t74 + t140;
629  t142 = t29 * t141 * (-1.0 / 4.0) - t27 * t41 * t57 * (1.0 / 8.0);
630  t143 = t51 - t5 * t11 * 4.0;
631  t144 = t29 * t143 * (-1.0 / 4.0) - t27 * t44 * t57 * (1.0 / 8.0);
632  t145 = t102 + t115;
633  t146 = t27 * t47 * t57 * (1.0 / 8.0);
634  t147 = t146 - t29 * t145 * (1.0 / 4.0);
635  t148 = t58 - t10 * t11 * 4.0;
636  t149 = t27 * t50 * t57 * (1.0 / 8.0);
637  t150 = t149 - t29 * t148 * (1.0 / 4.0);
638  t151 = t27 * t54 * t57 * (1.0 / 8.0);
639  t152 = t151 - t5 * t8 * t29 * (1.0 / 2.0);
640  t153 = t10 * t10;
641  t154 = t153 * 2.0;
642  t155 = t3 * t5 * 2.0;
643  t156 = t17 * t27 * t61 * (1.0 / 8.0);
644  t157 = t3 * t8 * 2.0;
645  t158 = t27 * t61 * (t32 - t37) * (1.0 / 8.0);
646  t159 = t76 + t77;
647  t160 = t29 * t159 * (1.0 / 4.0);
648  t161 = t160 - t27 * t41 * t61 * (1.0 / 8.0);
649  t162 = t73 - t5 * t9 * 4.0;
650  t163 = t29 * t162 * (-1.0 / 4.0) - t27 * t44 * t61 * (1.0 / 8.0);
651  t164 = t74 - t8 * t9 * 4.0;
652  t165 = t27 * t47 * t61 * (1.0 / 8.0);
653  t166 = t165 - t29 * t164 * (1.0 / 4.0);
654  t167 = t115 + t116;
655  t168 = t27 * t50 * t61 * (1.0 / 8.0);
656  t169 = t168 - t29 * t167 * (1.0 / 4.0);
657  t170 = t27 * t54 * t61 * (1.0 / 8.0);
658  t171 = t170 - t5 * t10 * t29 * (1.0 / 2.0);
659  t172 = t8 * t10 * t29 * (-1.0 / 2.0) - t27 * t57 * t61 * (1.0 / 8.0);
660  t173 = t5 * t5;
661  t174 = t173 * 2.0;
662  t175 = t8 * t8;
663  t176 = t175 * 2.0;
664  A0[0][0] = (t36 + t69) * 1.0 / sqrt(t18 + t22 + t7 * t7 + eps) * (1.0 / 4.0) - (t17 * t17) * t27 * (1.0 / 8.0);
665  A0[0][1] = t34;
666  A0[0][2] = t63;
667  A0[0][3] = t80;
668  A0[0][4] = t29 * (t30 + t90 - t6 * t8 * 2.0) * (1.0 / 4.0) - t17 * t27 * t47 * (1.0 / 8.0);
669  A0[0][5] = t29 * (t31 + t103 - t6 * t10 * 2.0) * (1.0 / 4.0) - t17 * t27 * t50 * (1.0 / 8.0);
670  A0[0][6] = t119;
671  A0[0][7] = t135 - t29 * (t30 + t134 - t6 * t8 * 2.0) * (1.0 / 4.0);
672  A0[0][8] = t156 - t29 * (t31 + t155 - t6 * t10 * 2.0) * (1.0 / 4.0);
673  A0[1][0] = t34;
674  A0[1][1] = t29 * (t36 + t67) * (1.0 / 4.0) - t27 * (t38 * t38) * (1.0 / 8.0);
675  A0[1][2] = t65;
676  A0[1][3] = t85;
677  A0[1][4] = t92;
678  A0[1][5] = t29 * (t58 + t104 - t10 * t11 * 2.0) * (1.0 / 4.0) - t27 * t33 * t50 * (1.0 / 8.0);
679  A0[1][6] = t122;
680  A0[1][7] = t139;
681  A0[1][8] = t158 - t29 * (t58 + t157 - t10 * t11 * 2.0) * (1.0 / 4.0);
682  A0[2][0] = t63;
683  A0[2][1] = t65;
684  A0[2][2] = t29 * (t67 + t69) * (1.0 / 4.0) - t27 * (t41 * t41) * (1.0 / 8.0);
685  A0[2][3] = t89;
686  A0[2][4] = t97;
687  A0[2][5] = t107;
688  A0[2][6] = t126;
689  A0[2][7] = t142;
690  A0[2][8] = t161;
691  A0[3][0] = t80;
692  A0[3][1] = t85;
693  A0[3][2] = t89;
694  A0[3][3] = t29 * (t101 + t114) * (1.0 / 4.0) - t27 * (t44 * t44) * (1.0 / 8.0);
695  A0[3][4] = t99;
696  A0[3][5] = t109;
697  A0[3][6] = t129;
698  A0[3][7] = t144;
699  A0[3][8] = t163;
700  A0[4][0] = t29 * (t30 - t51 + t90) * (1.0 / 4.0) - t17 * t27 * t47 * (1.0 / 8.0);
701  A0[4][1] = t92;
702  A0[4][2] = t97;
703  A0[4][3] = t99;
704  A0[4][4] = t29 * (t101 + t112) * (1.0 / 4.0) - t27 * (t47 * t47) * (1.0 / 8.0);
705  A0[4][5] = t110;
706  A0[4][6] = t131;
707  A0[4][7] = t147;
708  A0[4][8] = t166;
709  A0[5][0] = t29 * (t31 - t73 + t103) * (1.0 / 4.0) - t17 * t27 * t50 * (1.0 / 8.0);
710  A0[5][1] = t29 * (t58 - t74 + t104) * (1.0 / 4.0) - t27 * t33 * t50 * (1.0 / 8.0);
711  A0[5][2] = t107;
712  A0[5][3] = t109;
713  A0[5][4] = t110;
714  A0[5][5] = t29 * (t112 + t114) * (1.0 / 4.0) - t27 * (t50 * t50) * (1.0 / 8.0);
715  A0[5][6] = t133;
716  A0[5][7] = t150;
717  A0[5][8] = t169;
718  A0[6][0] = t119;
719  A0[6][1] = t122;
720  A0[6][2] = t126;
721  A0[6][3] = t129;
722  A0[6][4] = t131;
723  A0[6][5] = t133;
724  A0[6][6] = t29 * (t154 + t176) * (1.0 / 4.0) - t27 * (t54 * t54) * (1.0 / 8.0);
725  A0[6][7] = t152;
726  A0[6][8] = t171;
727  A0[7][0] = t135 - t29 * (t30 - t51 + t134) * (1.0 / 4.0);
728  A0[7][1] = t139;
729  A0[7][2] = t142;
730  A0[7][3] = t144;
731  A0[7][4] = t147;
732  A0[7][5] = t150;
733  A0[7][6] = t152;
734  A0[7][7] = t29 * (t154 + t174) * (1.0 / 4.0) - t27 * (t57 * t57) * (1.0 / 8.0);
735  A0[7][8] = t172;
736  A0[8][0] = t156 - t29 * (t31 - t73 + t155) * (1.0 / 4.0);
737  A0[8][1] = t158 - t29 * (t58 - t74 + t157) * (1.0 / 4.0);
738  A0[8][2] = t161;
739  A0[8][3] = t163;
740  A0[8][4] = t166;
741  A0[8][5] = t169;
742  A0[8][6] = t171;
743  A0[8][7] = t172;
744  A0[8][8] = t29 * (t174 + t176) * (1.0 / 4.0) - t27 * (t61 * t61) * (1.0 / 8.0);
745 }
746 
747 void LengthEdge_f(const vector<double> &p0, const vector<double> &p1, double &t0)
748 {
749  double t2, t3, t4;
750  t2 = p0[1 - 1] - p1[1 - 1];
751  t3 = p0[2 - 1] - p1[2 - 1];
752  t4 = p0[3 - 1] - p1[3 - 1];
753  t0 = sqrt(t2 * t2 + t3 * t3 + t4 * t4);
754 }
755 
756 void LengthEdge_df(const vector<double> &p0, const vector<double> &p1, ArrayVec<double> &A0)
757 {
758  double t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21;
759  t2 = p0[1 - 1] - p1[1 - 1];
760  t3 = p0[2 - 1] - p1[2 - 1];
761  t4 = p0[3 - 1] - p1[3 - 1];
762  t5 = t2 * t2;
763  t6 = t3 * t3;
764  t7 = t4 * t4;
765  t8 = t5 + t6 + t7;
766  t9 = 1.0 / sqrt(t8);
767  t10 = p0[1 - 1] * 2.0;
768  t11 = p1[1 - 1] * 2.0;
769  t12 = t10 - t11;
770  t13 = t9 * t12 * (1.0 / 2.0);
771  t14 = p0[2 - 1] * 2.0;
772  t15 = p1[2 - 1] * 2.0;
773  t16 = t14 - t15;
774  t17 = t9 * t16 * (1.0 / 2.0);
775  t18 = p0[3 - 1] * 2.0;
776  t19 = p1[3 - 1] * 2.0;
777  t20 = t18 - t19;
778  t21 = t9 * t20 * (1.0 / 2.0);
779  A0[0][0] = t13;
780  A0[0][1] = t17;
781  A0[0][2] = t21;
782  A0[0][3] = -t13;
783  A0[0][4] = -t17;
784  A0[0][5] = -t21;
785 }
786 
787 void LengthEdge_ddf(const vector<double> &p0, const vector<double> &p1, ArrayVec<double> &A0)
788 {
789  double t10, t11, t2, t3, t4, t5, t6, t7, t8, t9, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21, t22, t23, t24,
790  t25, t26, t27, t28, t29, t30, t31;
791  t10 = p0[1 - 1] * 2.0;
792  t11 = p1[1 - 1] * 2.0;
793  t2 = t10 - t11;
794  t3 = p0[1 - 1] - p1[1 - 1];
795  t4 = p0[2 - 1] - p1[2 - 1];
796  t5 = p0[3 - 1] - p1[3 - 1];
797  t6 = t3 * t3;
798  t7 = t4 * t4;
799  t8 = t5 * t5;
800  t9 = t6 + t7 + t8;
801  t12 = 1.0 / pow(t9, 3.0 / 2.0);
802  t13 = t2 * t2;
803  t14 = 1.0 / sqrt(t9);
804  t15 = p0[2 - 1] * 2.0;
805  t16 = p1[2 - 1] * 2.0;
806  t17 = t15 - t16;
807  t18 = p0[3 - 1] * 2.0;
808  t19 = p1[3 - 1] * 2.0;
809  t20 = t18 - t19;
810  t21 = t2 * t12 * t17 * (1.0 / 4.0);
811  t22 = t17 * t17;
812  t23 = t2 * t12 * t20 * (1.0 / 4.0);
813  t24 = t12 * t17 * t20 * (1.0 / 4.0);
814  t25 = t20 * t20;
815  t26 = t12 * t13 * (1.0 / 4.0);
816  t27 = -t14 + t26;
817  t28 = t12 * t22 * (1.0 / 4.0);
818  t29 = -t14 + t28;
819  t30 = t12 * t25 * (1.0 / 4.0);
820  t31 = -t14 + t30;
821  A0[0][0] = t14 - t12 * t13 * (1.0 / 4.0);
822  A0[0][1] = t2 * t12 * t17 * (-1.0 / 4.0);
823  A0[0][2] = t2 * t12 * t20 * (-1.0 / 4.0);
824  A0[0][3] = t27;
825  A0[0][4] = t21;
826  A0[0][5] = t23;
827  A0[1][0] = -t21;
828  A0[1][1] = t14 - t12 * t22 * (1.0 / 4.0);
829  A0[1][2] = t12 * t17 * t20 * (-1.0 / 4.0);
830  A0[1][3] = t21;
831  A0[1][4] = t29;
832  A0[1][5] = t24;
833  A0[2][0] = -t23;
834  A0[2][1] = -t24;
835  A0[2][2] = t14 - t12 * t25 * (1.0 / 4.0);
836  A0[2][3] = t23;
837  A0[2][4] = t24;
838  A0[2][5] = t31;
839  A0[3][0] = t27;
840  A0[3][1] = t21;
841  A0[3][2] = t23;
842  A0[3][3] = t14 - t26;
843  A0[3][4] = -t21;
844  A0[3][5] = -t23;
845  A0[4][0] = t21;
846  A0[4][1] = t29;
847  A0[4][2] = t24;
848  A0[4][3] = -t21;
849  A0[4][4] = t14 - t28;
850  A0[4][5] = -t24;
851  A0[5][0] = t23;
852  A0[5][1] = t24;
853  A0[5][2] = t31;
854  A0[5][3] = -t23;
855  A0[5][4] = -t24;
856  A0[5][5] = t14 - t30;
857 }
858 
859 void SurfIntersect_f(const vector<double> &p1, const vector<double> &p2, const vector<double> &v0,
860  const vector<double> &v01, const vector<double> &v02, const vector<double> &v11,
861  const vector<double> &v12, const vector<double> &c, double &t0)
862 {
863  double t2, t3, t4, t5, t6, t7, t14, t8, t9, t10, t16, t11, t12, t20, t13, t15, t17, t18, t19, t21, t22, t23, t24;
864  t2 = p1[2 - 1] - p2[2 - 1];
865  t3 = v01[1 - 1] + v02[1 - 1] - v11[1 - 1] - v12[1 - 1];
866  t4 = p1[1 - 1] - p2[1 - 1];
867  t5 = p1[3 - 1] - p2[3 - 1];
868  t6 = t2 * t3;
869  t7 = v01[2 - 1] + v02[2 - 1] - v11[2 - 1] - v12[2 - 1];
870  t14 = t4 * t7;
871  t8 = t6 - t14;
872  t9 = v01[3 - 1] + v02[3 - 1] - v11[3 - 1] - v12[3 - 1];
873  t10 = t3 * t5;
874  t16 = t4 * t9;
875  t11 = t10 - t16;
876  t12 = t2 * t9;
877  t20 = t5 * t7;
878  t13 = t12 - t20;
879  t15 = t2 * t8;
880  t17 = t5 * t11;
881  t18 = t15 + t17;
882  t19 = t4 * t8;
883  t21 = t5 * t13;
884  t22 = t19 + t21;
885  t23 = t2 * t13;
886  t24 = t23 - t4 * t11;
887  t0 = (p1[2 - 1] * (t19 + t5 * (t12 - t20)) + c[1 - 1] * t18 - c[2 - 1] * t22 + c[3 - 1] * t24 - p1[1 - 1] * t18 -
888  p1[3 - 1] * t24) /
889  (t18 * (c[1 - 1] - v0[1 - 1]) - t22 * (c[2 - 1] - v0[2 - 1]) + t24 * (c[3 - 1] - v0[3 - 1]));
890 }
891 
892 void SurfIntersect_df(const vector<double> &p1, const vector<double> &p2, const vector<double> &v0,
893  const vector<double> &v01, const vector<double> &v02, const vector<double> &v11,
894  const vector<double> &v12, const vector<double> &c, ArrayVec<double> &A0)
895 {
896  double t2, t3, t4, t5, t6, t7, t19, t8, t9, t10, t21, t11, t12, t28, t13, t33, t14, t34, t15, t16, t17, t18, t20,
897  t22, t23, t24, t25, t26, t27, t29, t30, t37, t31, t32, t35, t36, t42, t38, t39, t40, t43, t41, t44, t45, t46,
898  t55, t56, t57, t47, t48, t49, t54, t50, t53, t51, t52, t58, t59, t60, t61, t62, t63, t64, t66, t65, t67, t68,
899  t69, t70, t71, t72, t73, t74, t75, t76, t77, t78, t79, t80;
900  t2 = p1[2 - 1] - p2[2 - 1];
901  t3 = v01[1 - 1] + v02[1 - 1] - v11[1 - 1] - v12[1 - 1];
902  t4 = p1[1 - 1] - p2[1 - 1];
903  t5 = p1[3 - 1] - p2[3 - 1];
904  t6 = t2 * t3;
905  t7 = v01[2 - 1] + v02[2 - 1] - v11[2 - 1] - v12[2 - 1];
906  t19 = t4 * t7;
907  t8 = t6 - t19;
908  t9 = v01[3 - 1] + v02[3 - 1] - v11[3 - 1] - v12[3 - 1];
909  t10 = t3 * t5;
910  t21 = t4 * t9;
911  t11 = t10 - t21;
912  t12 = t2 * t9;
913  t28 = t5 * t7;
914  t13 = t12 - t28;
915  t33 = t4 * t7 * 2.0;
916  t14 = t6 - t33;
917  t34 = t4 * t9 * 2.0;
918  t15 = t10 - t34;
919  t16 = t2 * t7;
920  t17 = t5 * t9;
921  t18 = t16 + t17;
922  t20 = t2 * t8;
923  t22 = t5 * t11;
924  t23 = c[1 - 1] - v0[1 - 1];
925  t24 = t20 + t22;
926  t25 = t23 * t24;
927  t26 = c[2 - 1] - v0[2 - 1];
928  t27 = t4 * t8;
929  t29 = c[3 - 1] - v0[3 - 1];
930  t30 = t2 * t13;
931  t37 = t4 * t11;
932  t31 = t30 - t37;
933  t32 = t29 * t31;
934  t35 = t5 * (t12 - t28);
935  t36 = t27 + t35;
936  t42 = t26 * t36;
937  t38 = t25 + t32 - t42;
938  t39 = t3 * t4;
939  t40 = t17 + t39;
940  t43 = t2 * t9 * 2.0;
941  t41 = t28 - t43;
942  t44 = c[1 - 1] * t24;
943  t45 = c[3 - 1] * (t30 - t37);
944  t46 = p1[2 - 1] * t36;
945  t55 = c[2 - 1] * t36;
946  t56 = p1[1 - 1] * t24;
947  t57 = p1[3 - 1] * t31;
948  t47 = t44 + t45 + t46 - t55 - t56 - t57;
949  t48 = 1.0 / t38;
950  t49 = t16 + t39;
951  t54 = t5 * t7 * 2.0;
952  t50 = t12 - t54;
953  t53 = t3 * t5 * 2.0;
954  t51 = t21 - t53;
955  t52 = 1.0 / pow(t25 + t32 - t42, 2.0);
956  t58 = c[2 - 1] * t14;
957  t59 = c[3 - 1] * t15;
958  t60 = c[1 - 1] * t18;
959  t61 = t14 * t26;
960  t62 = t15 * t29;
961  t63 = t18 * t23;
962  t64 = t61 + t62 + t63;
963  t66 = t2 * t3 * 2.0;
964  t65 = t19 - t66;
965  t67 = p1[2 - 1] * t40;
966  t68 = p1[3 - 1] * t41;
967  t69 = p1[1 - 1] * t65;
968  t70 = t26 * t40;
969  t71 = t29 * t41;
970  t72 = t23 * t65;
971  t73 = t70 + t71 + t72;
972  t74 = t47 * t52 * t73;
973  t75 = c[3 - 1] * t49;
974  t76 = t29 * t49;
975  t77 = t23 * t51;
976  t78 = t26 * t50;
977  t79 = t76 + t77 + t78;
978  t80 = t47 * t52 * t79;
979  A0[0][0] = -(t20 + t22 + t58 + t59 + t60 - p1[2 - 1] * t14 - p1[3 - 1] * t15 - p1[1 - 1] * t18) /
980  (t25 + t32 - t26 * (t27 + t5 * t13)) +
981  1.0 / (t38 * t38) * t47 * t64;
982  A0[0][1] = t74 + t48 * (t27 + t35 + t67 + t68 + t69 - c[2 - 1] * t40 - c[3 - 1] * t41 - c[1 - 1] * t65);
983  A0[0][2] = t80 - t48 * (t30 - t37 + t75 + c[1 - 1] * t51 + c[2 - 1] * t50 - p1[1 - 1] * t51 - p1[2 - 1] * t50 -
984  p1[3 - 1] * t49);
985  A0[0][3] = t48 * (t58 + t59 + t60 - p1[2 - 1] * t14 - p1[3 - 1] * t15 - p1[1 - 1] * t18) - t47 * t52 * t64;
986  A0[0][4] = -t74 - t48 * (t67 + t68 + t69 - c[2 - 1] * t40 - c[3 - 1] * t41 - c[1 - 1] * t65);
987  A0[0][5] = -t80 + t48 * (t75 - p1[1 - 1] * t51 - p1[2 - 1] * t50 - p1[3 - 1] * t49 + c[2 - 1] * (t12 - t54) +
988  c[1 - 1] * (t21 - t53));
989 }
990 
991 void SurfIntersect_ddf(const vector<double> &p1, const vector<double> &p2, const vector<double> &v0,
992  const vector<double> &v01, const vector<double> &v02, const vector<double> &v11,
993  const vector<double> &v12, const vector<double> &c, ArrayVec<double> &A0)
994 {
995  double t2, t3, t4, t5, t6, t7, t27, t8, t9, t10, t29, t11, t12, t34, t13, t14, t15, t21, t22, t16, t17, t18, t24,
996  t25, t19, t20, t23, t26, t28, t30, t31, t32, t33, t35, t40, t36, t37, t38, t39, t49, t50, t41, t47, t42, t48,
997  t43, t44, t45, t46, t51, t52, t53, t54, t55, t56, t57, t58, t59, t77, t78, t79, t60, t65, t61, t62, t63, t66,
998  t64, t67, t68, t73, t74, t75, t69, t70, t71, t72, t76, t80, t83, t81, t84, t82, t85, t86, t87, t88, t89, t90,
999  t91, t92, t93, t94, t95, t96, t97, t98, t99, t100, t101, t102, t103, t104, t105, t106, t107, t108, t109, t110,
1000  t111, t112, t113, t114, t115, t116, t117, t118, t127, t128, t129, t119, t120, t121, t122, t125, t126, t123,
1001  t124, t130, t131, t147, t148, t149, t132, t133, t134, t135, t136, t137, t138, t139, t140, t141, t142, t143,
1002  t144, t145, t146, t150, t151, t152, t153, t154, t155, t156, t157, t158, t159, t160, t161, t162, t163, t176,
1003  t177, t164, t165, t166, t167, t168, t169, t170, t171, t172, t183, t184, t173, t174, t175, t178, t179, t180,
1004  t181, t182, t185, t186, t187, t188, t189, t190, t191, t192, t193, t194, t195, t196, t197, t198, t199;
1005  t2 = p1[2 - 1] - p2[2 - 1];
1006  t3 = v01[1 - 1] + v02[1 - 1] - v11[1 - 1] - v12[1 - 1];
1007  t4 = p1[1 - 1] - p2[1 - 1];
1008  t5 = p1[3 - 1] - p2[3 - 1];
1009  t6 = t2 * t3;
1010  t7 = v01[2 - 1] + v02[2 - 1] - v11[2 - 1] - v12[2 - 1];
1011  t27 = t4 * t7;
1012  t8 = t6 - t27;
1013  t9 = v01[3 - 1] + v02[3 - 1] - v11[3 - 1] - v12[3 - 1];
1014  t10 = t3 * t5;
1015  t29 = t4 * t9;
1016  t11 = t10 - t29;
1017  t12 = t2 * t9;
1018  t34 = t5 * t7;
1019  t13 = t12 - t34;
1020  t14 = v01[2 - 1] * 2.0;
1021  t15 = v02[2 - 1] * 2.0;
1022  t21 = v11[2 - 1] * 2.0;
1023  t22 = v12[2 - 1] * 2.0;
1024  t16 = t14 + t15 - t21 - t22;
1025  t17 = v01[3 - 1] * 2.0;
1026  t18 = v02[3 - 1] * 2.0;
1027  t24 = v11[3 - 1] * 2.0;
1028  t25 = v12[3 - 1] * 2.0;
1029  t19 = t17 + t18 - t24 - t25;
1030  t20 = c[2 - 1] - v0[2 - 1];
1031  t23 = c[3 - 1] - v0[3 - 1];
1032  t26 = c[1 - 1] - v0[1 - 1];
1033  t28 = t2 * t8;
1034  t30 = t5 * t11;
1035  t31 = t28 + t30;
1036  t32 = t26 * t31;
1037  t33 = t4 * t8;
1038  t35 = t2 * t13;
1039  t40 = t4 * t11;
1040  t36 = t35 - t40;
1041  t37 = t23 * t36;
1042  t38 = t5 * (t12 - t34);
1043  t39 = t33 + t38;
1044  t49 = t20 * t39;
1045  t50 = t32 + t37 - t49;
1046  t41 = 1.0 / (t50 * t50);
1047  t47 = t4 * t7 * 2.0;
1048  t42 = t6 - t47;
1049  t48 = t4 * t9 * 2.0;
1050  t43 = t10 - t48;
1051  t44 = t2 * t7;
1052  t45 = t5 * t9;
1053  t46 = t44 + t45;
1054  t51 = t20 * t42;
1055  t52 = t23 * t43;
1056  t53 = t26 * t46;
1057  t54 = t51 + t52 + t53;
1058  t55 = c[1 - 1] * t31;
1059  t56 = p1[2 - 1] * t39;
1060  t57 = c[2 - 1] * t42;
1061  t58 = c[3 - 1] * t43;
1062  t59 = c[1 - 1] * t46;
1063  t77 = p1[2 - 1] * t42;
1064  t78 = p1[3 - 1] * t43;
1065  t79 = p1[1 - 1] * t46;
1066  t60 = t28 + t30 + t57 + t58 + t59 - t77 - t78 - t79;
1067  t65 = t2 * t3 * 2.0;
1068  t61 = t27 - t65;
1069  t62 = t3 * t4;
1070  t63 = t45 + t62;
1071  t66 = t2 * t9 * 2.0;
1072  t64 = t34 - t66;
1073  t67 = 1.0 / pow(t32 + t37 - t49, 2.0);
1074  t68 = c[3 - 1] * (t35 - t40);
1075  t73 = c[2 - 1] * t39;
1076  t74 = p1[1 - 1] * t31;
1077  t75 = p1[3 - 1] * t36;
1078  t69 = t55 + t56 + t68 - t73 - t74 - t75;
1079  t70 = 1.0 / (t50 * t50 * t50);
1080  t71 = t20 * t63;
1081  t72 = t23 * t64;
1082  t76 = 1.0 / t50;
1083  t80 = t44 + t62;
1084  t83 = t3 * t5 * 2.0;
1085  t81 = t29 - t83;
1086  t84 = t5 * t7 * 2.0;
1087  t82 = t12 - t84;
1088  t85 = t23 * t80;
1089  t86 = t26 * t81;
1090  t87 = t20 * t82;
1091  t88 = c[2 - 1] * t16;
1092  t89 = c[3 - 1] * t19;
1093  t90 = t16 * t20;
1094  t91 = t19 * t23;
1095  t92 = t90 + t91;
1096  t93 = t54 * t54;
1097  t94 = t69 * t70 * t93 * 2.0;
1098  t95 = c[2 - 1] * t3;
1099  t96 = c[1 - 1] * t7;
1100  t97 = t26 * (t27 - t65);
1101  t98 = t71 + t72 + t97;
1102  t99 = t3 * t20;
1103  t100 = t7 * t26;
1104  t101 = t99 + t100;
1105  t102 = t67 * t69 * t101;
1106  t103 = p1[1 - 1] * (t27 - t65);
1107  t104 = p1[2 - 1] * t63;
1108  t105 = p1[3 - 1] * t64;
1109  t106 = t54 * t69 * t70 * t98 * 2.0;
1110  t107 = c[3 - 1] * t3;
1111  t108 = c[1 - 1] * t9;
1112  t109 = t3 * t23;
1113  t110 = t9 * t26;
1114  t111 = t109 + t110;
1115  t112 = t67 * t69 * t111;
1116  t113 = c[3 - 1] * t80;
1117  t114 = t85 + t86 + t87;
1118  t115 = t54 * t69 * t70 * t114 * 2.0;
1119  t116 = p1[2 - 1] * t3;
1120  t117 = p1[1 - 1] * t7;
1121  t118 = t60 * t67 * t98;
1122  t127 = c[1 - 1] * t61;
1123  t128 = c[2 - 1] * t63;
1124  t129 = c[3 - 1] * t64;
1125  t119 = t33 + t38 + t103 + t104 + t105 - t127 - t128 - t129;
1126  t120 = t54 * t67 * t119;
1127  t121 = v01[1 - 1] * 2.0;
1128  t122 = v02[1 - 1] * 2.0;
1129  t125 = v11[1 - 1] * 2.0;
1130  t126 = v12[1 - 1] * 2.0;
1131  t123 = t121 + t122 - t125 - t126;
1132  t124 = t5 * t9 * 2.0;
1133  t130 = c[1 - 1] * t81;
1134  t131 = c[2 - 1] * t82;
1135  t147 = p1[3 - 1] * t80;
1136  t148 = p1[1 - 1] * t81;
1137  t149 = p1[2 - 1] * t82;
1138  t132 = t35 - t40 + t113 + t130 + t131 - t147 - t148 - t149;
1139  t133 = t57 + t58 + t59 - t77 - t78 - t79;
1140  t134 = c[1 - 1] * t123;
1141  t135 = t26 * t123;
1142  t136 = t91 + t135;
1143  t137 = t98 * t98;
1144  t138 = t69 * t70 * t137 * 2.0;
1145  t139 = c[3 - 1] * t7;
1146  t140 = c[2 - 1] * t9;
1147  t141 = t7 * t23;
1148  t142 = t9 * t20;
1149  t143 = t141 + t142;
1150  t144 = t67 * t69 * t143;
1151  t145 = c[1 - 1] * (t29 - t83);
1152  t146 = c[2 - 1] * (t12 - t84);
1153  t150 = p1[3 - 1] * t3;
1154  t151 = p1[1 - 1] * t9;
1155  t152 = t60 * t67 * t114;
1156  t153 = p1[3 - 1] * t7;
1157  t154 = p1[2 - 1] * t9;
1158  t155 = t67 * t119 * (t85 + t86 + t87);
1159  t156 = t69 * t70 * t98 * (t85 + t86 + t87) * 2.0;
1160  t157 = t3 * t4 * 2.0;
1161  t158 = t2 * t7 * 2.0;
1162  t159 = t85 + t86 + t87;
1163  t160 = t103 + t104 + t105 - t127 - t128 - t129;
1164  t161 = t90 + t135;
1165  t162 = t113 + t145 + t146 - t147 - t148 - t149;
1166  t163 = t85 + t86 + t87;
1167  t176 = p1[2 - 1] * t16;
1168  t177 = p1[3 - 1] * t19;
1169  t164 = t44 + t45 + t88 + t89 - t176 - t177;
1170  t165 = t67 * t69 * t92;
1171  t166 = t54 * t60 * t67;
1172  t167 = t54 * t67 * t133;
1173  t168 = -t94 + t165 + t166 + t167 - t76 * t164;
1174  t169 = t6 - t47 - t95 - t96 + t116 + t117;
1175  t170 = t67 * t98 * t133;
1176  t171 = -t102 - t106 - t120 + t170 - t76 * t169;
1177  t172 = t10 - t48 - t107 - t108 + t150 + t151;
1178  t183 = p1[1 - 1] * (t29 - t83);
1179  t184 = p1[2 - 1] * (t12 - t84);
1180  t173 = t54 * t67 * (t35 - t40 + t113 + t130 + t131 - t147 - t183 - t184);
1181  t174 = t67 * t133 * (t85 + t86 + t87);
1182  t175 = -t112 - t115 + t173 + t174 - t76 * t172;
1183  t178 = t54 * t69 * t70 * (t85 + t86 + t87) * 2.0;
1184  t179 = t27 - t65 - t95 - t96 + t116 + t117;
1185  t180 = t54 * t67 * t160;
1186  t181 = t67 * t69 * t136;
1187  t182 = t34 - t66 - t139 - t140 + t153 + t154;
1188  t185 = t95 + t96 - t116 - t117;
1189  t186 = t102 + t106 - t170 + t180 - t76 * t185;
1190  t187 = t67 * t98 * t162;
1191  t188 = t29 - t83 - t107 - t108 + t150 + t151;
1192  t189 = t12 - t84 - t139 - t140 + t153 + t154;
1193  t190 = -t144 + t187 - t76 * t189 - t67 * t114 * t119 - t69 * t70 * t98 * t114 * 2.0;
1194  t191 = t67 * t69 * t161;
1195  t192 = t67 * t162 * (t85 + t86 + t87);
1196  t193 = t85 + t86 + t87;
1197  t194 = t107 + t108 - t150 - t151;
1198  t195 = t54 * t67 * t162;
1199  t196 = t139 + t140 - t153 - t154;
1200  t197 = t67 * t160 * (t85 + t86 + t87);
1201  t198 = t144 + t156 - t187 + t197 - t76 * t196;
1202  t199 = t85 + t86 + t87;
1203  A0[0][0] = t94 +
1204  (t88 + t89 + t124 + t158 - p1[2 - 1] * t16 - p1[3 - 1] * t19) / (t32 + t37 - t20 * (t33 + t5 * t13)) -
1205  t41 * t92 * (t55 + t56 + c[3 - 1] * t36 - c[2 - 1] * t39 - p1[1 - 1] * t31 - p1[3 - 1] * t36) -
1206  t41 * t54 * t60 * 2.0;
1207  A0[0][1] = t102 + t106 + t120 - t76 * (t6 + t27 + t95 + t96 - p1[2 - 1] * t3 - p1[1 - 1] * t7) -
1208  t41 * t60 * (t71 + t72 + t26 * t61);
1209  A0[0][2] = t112 + t115 - t76 * (t10 + t29 + t107 + t108 - p1[3 - 1] * t3 - p1[1 - 1] * t9) - t60 * t67 * t114 -
1210  t54 * t67 * t132;
1211  A0[0][3] = t168;
1212  A0[0][4] = -t102 - t106 + t118 - t76 * t179 -
1213  t54 * t67 * (t103 + t104 + t105 - c[1 - 1] * t61 - c[2 - 1] * t63 - c[3 - 1] * t64);
1214  A0[0][5] = -t112 - t115 + t152 - t76 * t188 +
1215  t54 * t67 * (t113 + t145 + t146 - p1[1 - 1] * t81 - p1[3 - 1] * t80 - p1[2 - 1] * t82);
1216  A0[1][0] = t102 + t106 - t118 + t120 - t76 * (t6 + t27 + t95 + t96 - t116 - t117);
1217  A0[1][1] = t138 + t76 * (t89 + t124 + t134 + t157 - p1[3 - 1] * t19 - p1[1 - 1] * t123) - t67 * t69 * t136 +
1218  t67 * t98 * t119 * 2.0;
1219  A0[1][2] =
1220  t144 + t155 + t156 - t76 * (t12 + t34 + t139 + t140 - p1[3 - 1] * t7 - p1[2 - 1] * t9) - t67 * t98 * t132;
1221  A0[1][3] = t171;
1222  A0[1][4] = -t138 + t181 - t76 * (t45 + t62 + t89 + t134 - p1[3 - 1] * t19 - p1[1 - 1] * t123) - t67 * t98 * t119 -
1223  t67 * t98 * t160;
1224  A0[1][5] = t190;
1225  A0[2][0] = t112 - t152 + t178 - t76 * (t10 + t29 + t107 + t108 - t150 - t151) - t54 * t67 * t132;
1226  A0[2][1] = t144 + t155 + t156 - t76 * (t12 + t34 + t139 + t140 - t153 - t154) - t67 * t98 * t132;
1227  A0[2][2] = t76 * (t88 + t134 + t157 + t158 - p1[2 - 1] * t16 - p1[1 - 1] * t123) + t69 * t70 * (t159 * t159) * 2.0 -
1228  t67 * t69 * t161 - t67 * t114 * t132 * 2.0;
1229  A0[2][3] = t175;
1230  A0[2][4] = -t144 - t76 * t182 +
1231  t67 * t98 * (t35 - t40 + t113 + t130 + t131 - t147 - p1[2 - 1] * (t12 - t84) - p1[1 - 1] * (t29 - t83)) -
1232  t67 * t114 * t160 - t69 * t70 * t98 * t114 * 2.0;
1233  A0[2][5] = t191 + t192 - t76 * (t44 + t62 + t88 + t134 - p1[2 - 1] * t16 - p1[1 - 1] * t123) -
1234  t69 * t70 * (t163 * t163) * 2.0 +
1235  t67 * (t85 + t86 + t87) *
1236  (t35 - t40 + t113 + t130 + t131 - t147 - p1[2 - 1] * (t12 - t84) - p1[1 - 1] * (t29 - t83));
1237  A0[3][0] = t168;
1238  A0[3][1] = t171;
1239  A0[3][2] = t175;
1240  A0[3][3] = t94 - t165 + t76 * (t88 + t89 - t176 - t177) - t54 * t67 * t133 * 2.0;
1241  A0[3][4] = t186;
1242  A0[3][5] = t112 + t178 - t76 * t194 - t54 * t67 * t162 - t67 * t114 * t133;
1243  A0[4][0] = -t102 - t106 + t118 - t180 - t76 * t179;
1244  A0[4][1] =
1245  -t138 + t181 - t76 * (t45 + t62 + t89 + t134 - t177 - p1[1 - 1] * t123) - t67 * t98 * t119 - t67 * t98 * t160;
1246  A0[4][2] = -t144 - t76 * t182 - t67 * t114 * t160 +
1247  t67 * t98 * (t35 - t40 + t113 + t130 + t131 - t147 - t183 - t184) - t69 * t70 * t98 * t114 * 2.0;
1248  A0[4][3] = t186;
1249  A0[4][4] = t138 - t181 + t76 * (t89 + t134 - t177 - p1[1 - 1] * t123) + t67 * t98 * t160 * 2.0;
1250  A0[4][5] = t198;
1251  A0[5][0] = -t112 - t115 + t195 - t76 * t188 + t60 * t67 * (t85 + t86 + t87);
1252  A0[5][1] = t190;
1253  A0[5][2] = t191 + t192 - t76 * (t44 + t62 + t88 + t134 - t176 - p1[1 - 1] * t123) +
1254  t67 * (t85 + t86 + t87) * (t35 - t40 + t113 + t130 + t131 - t147 - t183 - t184) -
1255  t69 * t70 * (t193 * t193) * 2.0;
1256  A0[5][3] = t112 + t178 - t195 - t76 * t194 - t67 * t114 * t133;
1257  A0[5][4] = t198;
1258  A0[5][5] = -t191 + t76 * (t88 + t134 - t176 - p1[1 - 1] * t123) + t69 * t70 * (t199 * t199) * 2.0 -
1259  t67 * t114 * t162 * 2.0;
1260 }
1261 
1262 void SurfCentroid4_f(const vector<double> &x, const vector<double> &y, const vector<double> &z, const double totD,
1263  const double X_dot_d, const double Y_dot_d, const double Z_dot_d, ArrayVec<double> &A0)
1264 {
1265  double t2;
1266  t2 = 1.0 / totD;
1267  A0[0][0] = X_dot_d * t2;
1268  A0[0][1] = Y_dot_d * t2;
1269  A0[0][2] = Z_dot_d * t2;
1270 }
1271 
1272 void SurfCentroid4_df(const vector<double> &x, const vector<double> &y, const vector<double> &z, const double totD,
1273  const double X_dot_d, const double Y_dot_d, const double Z_dot_d, ArrayVec<double> &A0)
1274 {
1275  double t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t28, t18, t19, t49, t20, t21, t22,
1276  t23, t24, t25, t26, t27, t29, t30, t31, t32, t33, t34, t35, t36, t37, t45, t38, t39, t40, t41, t42, t43, t44,
1277  t46, t47, t48, t50, t51, t52, t53, t54, t55, t56, t57, t58, t59, t60, t61, t62, t63, t64, t65, t66, t69, t67,
1278  t74, t68, t70, t71, t73, t72, t75, t76, t77, t78, t81, t79, t86, t80, t82, t83, t85, t84, t87, t88, t89, t90,
1279  t91, t92, t93, t94, t95, t96, t97, t98, t99, t100, t101, t102, t103, t104, t105, t106, t107, t108, t109, t110,
1280  t111, t112, t113, t114, t115, t116, t117, t118, t119, t120, t121, t122, t123, t124, t125, t126, t127, t128,
1281  t129, t130, t131, t132, t133, t134, t135, t136, t137, t138, t139;
1282  t2 = x[1 - 1] - x[2 - 1];
1283  t3 = y[1 - 1] - y[2 - 1];
1284  t4 = z[1 - 1] - z[2 - 1];
1285  t5 = x[1 - 1] - x[4 - 1];
1286  t6 = y[1 - 1] - y[4 - 1];
1287  t7 = z[1 - 1] - z[4 - 1];
1288  t8 = t2 * t2;
1289  t9 = t3 * t3;
1290  t10 = t4 * t4;
1291  t11 = t8 + t9 + t10 + rsvsmath_automatic_eps_centre2;
1292  t12 = x[1 - 1] * 2.0;
1293  t13 = x[1 - 1] * (1.0 / 2.0);
1294  t14 = t5 * t5;
1295  t15 = t6 * t6;
1296  t16 = t7 * t7;
1297  t17 = t14 + t15 + t16 + rsvsmath_automatic_eps_centre2;
1298  t28 = x[2 - 1] * 2.0;
1299  t18 = t12 - t28;
1300  t19 = 1.0 / sqrt(rsvsmath_automatic_eps_centre + t11);
1301  t49 = x[4 - 1] * 2.0;
1302  t20 = t12 - t49;
1303  t21 = 1.0 / sqrt(rsvsmath_automatic_eps_centre + t17);
1304  t22 = 1.0 / totD;
1305  t23 = sqrt(t11);
1306  t24 = t23 * (1.0 / 2.0);
1307  t25 = x[2 - 1] - x[3 - 1];
1308  t26 = y[2 - 1] - y[3 - 1];
1309  t27 = z[2 - 1] - z[3 - 1];
1310  t29 = x[2 - 1] * (1.0 / 2.0);
1311  t30 = t13 + t29;
1312  t31 = t18 * t19 * t30 * (1.0 / 2.0);
1313  t32 = t25 * t25;
1314  t33 = t26 * t26;
1315  t34 = t27 * t27;
1316  t35 = t32 + t33 + t34 + rsvsmath_automatic_eps_centre2;
1317  t36 = 1.0 / (totD * totD);
1318  t37 = t18 * t19 * (1.0 / 2.0);
1319  t45 = x[3 - 1] * 2.0;
1320  t38 = t28 - t45;
1321  t39 = 1.0 / sqrt(rsvsmath_automatic_eps_centre + t35);
1322  t40 = sqrt(t35);
1323  t41 = t40 * (1.0 / 2.0);
1324  t42 = x[3 - 1] - x[4 - 1];
1325  t43 = y[3 - 1] - y[4 - 1];
1326  t44 = z[3 - 1] - z[4 - 1];
1327  t46 = x[3 - 1] * (1.0 / 2.0);
1328  t47 = t29 + t46;
1329  t48 = t38 * t39 * t47 * (1.0 / 2.0);
1330  t50 = x[4 - 1] * (1.0 / 2.0);
1331  t51 = t42 * t42;
1332  t52 = t43 * t43;
1333  t53 = t44 * t44;
1334  t54 = t51 + t52 + t53 + rsvsmath_automatic_eps_centre2;
1335  t55 = t45 - t49;
1336  t56 = 1.0 / sqrt(rsvsmath_automatic_eps_centre + t54);
1337  t57 = sqrt(t17);
1338  t58 = t57 * (1.0 / 2.0);
1339  t59 = sqrt(t54);
1340  t60 = t59 * (1.0 / 2.0);
1341  t61 = t13 + t50;
1342  t62 = t20 * t21 * t61 * (1.0 / 2.0);
1343  t63 = t46 + t50;
1344  t64 = t55 * t56 * t63 * (1.0 / 2.0);
1345  t65 = t20 * t21 * (1.0 / 2.0);
1346  t66 = y[1 - 1] * 2.0;
1347  t69 = y[2 - 1] * 2.0;
1348  t67 = t66 - t69;
1349  t74 = y[4 - 1] * 2.0;
1350  t68 = t66 - t74;
1351  t70 = t19 * t30 * t67 * (1.0 / 2.0);
1352  t71 = t19 * t67 * (1.0 / 2.0);
1353  t73 = y[3 - 1] * 2.0;
1354  t72 = t69 - t73;
1355  t75 = t73 - t74;
1356  t76 = t21 * t61 * t68 * (1.0 / 2.0);
1357  t77 = t21 * t68 * (1.0 / 2.0);
1358  t78 = z[1 - 1] * 2.0;
1359  t81 = z[2 - 1] * 2.0;
1360  t79 = t78 - t81;
1361  t86 = z[4 - 1] * 2.0;
1362  t80 = t78 - t86;
1363  t82 = t19 * t30 * t79 * (1.0 / 2.0);
1364  t83 = t19 * t79 * (1.0 / 2.0);
1365  t85 = z[3 - 1] * 2.0;
1366  t84 = t81 - t85;
1367  t87 = t85 - t86;
1368  t88 = t21 * t61 * t80 * (1.0 / 2.0);
1369  t89 = t21 * t80 * (1.0 / 2.0);
1370  t90 = y[1 - 1] * (1.0 / 2.0);
1371  t91 = t37 + t65;
1372  t92 = y[2 - 1] * (1.0 / 2.0);
1373  t93 = t90 + t92;
1374  t94 = t18 * t19 * t93 * (1.0 / 2.0);
1375  t95 = t38 * t39 * (1.0 / 2.0);
1376  t96 = y[3 - 1] * (1.0 / 2.0);
1377  t97 = t92 + t96;
1378  t98 = y[4 - 1] * (1.0 / 2.0);
1379  t99 = t55 * t56 * (1.0 / 2.0);
1380  t100 = t90 + t98;
1381  t101 = t20 * t21 * t100 * (1.0 / 2.0);
1382  t102 = t96 + t98;
1383  t103 = t65 + t99;
1384  t104 = t71 + t77;
1385  t105 = t19 * t67 * t93 * (1.0 / 2.0);
1386  t106 = t39 * t72 * (1.0 / 2.0);
1387  t107 = t39 * t72 * t97 * (1.0 / 2.0);
1388  t108 = t56 * t75 * (1.0 / 2.0);
1389  t109 = t21 * t68 * t100 * (1.0 / 2.0);
1390  t110 = t56 * t75 * t102 * (1.0 / 2.0);
1391  t111 = t77 + t108;
1392  t112 = t83 + t89;
1393  t113 = t19 * t79 * t93 * (1.0 / 2.0);
1394  t114 = t39 * t84 * (1.0 / 2.0);
1395  t115 = t56 * t87 * (1.0 / 2.0);
1396  t116 = t21 * t80 * t100 * (1.0 / 2.0);
1397  t117 = t89 + t115;
1398  t118 = z[1 - 1] * (1.0 / 2.0);
1399  t119 = z[2 - 1] * (1.0 / 2.0);
1400  t120 = t118 + t119;
1401  t121 = t18 * t19 * t120 * (1.0 / 2.0);
1402  t122 = t37 - t95;
1403  t123 = z[3 - 1] * (1.0 / 2.0);
1404  t124 = t119 + t123;
1405  t125 = z[4 - 1] * (1.0 / 2.0);
1406  t126 = t95 - t99;
1407  t127 = t118 + t125;
1408  t128 = t20 * t21 * t127 * (1.0 / 2.0);
1409  t129 = t123 + t125;
1410  t130 = t19 * t67 * t120 * (1.0 / 2.0);
1411  t131 = t71 - t106;
1412  t132 = t106 - t108;
1413  t133 = t21 * t68 * t127 * (1.0 / 2.0);
1414  t134 = t19 * t79 * t120 * (1.0 / 2.0);
1415  t135 = t83 - t114;
1416  t136 = t39 * t84 * t124 * (1.0 / 2.0);
1417  t137 = t114 - t115;
1418  t138 = t21 * t80 * t127 * (1.0 / 2.0);
1419  t139 = t56 * t87 * t129 * (1.0 / 2.0);
1420  A0[0][0] = t22 * (t24 + t31 + t58 + t62) - X_dot_d * t36 * t91;
1421  A0[0][1] = t22 * (t24 - t31 + t41 + t48) + X_dot_d * t36 * (t37 - t38 * t39 * (1.0 / 2.0));
1422  A0[0][2] = t22 * (t41 - t48 + t60 + t64) + X_dot_d * t36 * (t95 - t55 * t56 * (1.0 / 2.0));
1423  A0[0][3] = t22 * (t58 + t60 - t62 - t64) + X_dot_d * t36 * t103;
1424  A0[0][4] = t22 * (t70 + t76) - X_dot_d * t36 * t104;
1425  A0[0][5] = -t22 * (t70 - t39 * t47 * t72 * (1.0 / 2.0)) + X_dot_d * t36 * (t71 - t39 * t72 * (1.0 / 2.0));
1426  A0[0][6] = -t22 * (t39 * t47 * t72 * (1.0 / 2.0) - t56 * t63 * t75 * (1.0 / 2.0)) +
1427  X_dot_d * t36 * (t106 - t56 * t75 * (1.0 / 2.0));
1428  A0[0][7] = -t22 * (t76 + t56 * t63 * t75 * (1.0 / 2.0)) + X_dot_d * t36 * t111;
1429  A0[0][8] = t22 * (t82 + t88) - X_dot_d * t36 * t112;
1430  A0[0][9] = -t22 * (t82 - t39 * t47 * t84 * (1.0 / 2.0)) + X_dot_d * t36 * (t83 - t39 * t84 * (1.0 / 2.0));
1431  A0[0][10] = -t22 * (t39 * t47 * t84 * (1.0 / 2.0) - t56 * t63 * t87 * (1.0 / 2.0)) +
1432  X_dot_d * t36 * (t114 - t56 * t87 * (1.0 / 2.0));
1433  A0[0][11] = -t22 * (t88 + t56 * t63 * t87 * (1.0 / 2.0)) + X_dot_d * t36 * t117;
1434  A0[1][0] = t22 * (t94 + t101) - Y_dot_d * t36 * t91;
1435  A0[1][1] = -t22 * (t94 - t38 * t39 * t97 * (1.0 / 2.0)) + Y_dot_d * t36 * t122;
1436  A0[1][2] = -t22 * (t38 * t39 * t97 * (1.0 / 2.0) - t55 * t56 * t102 * (1.0 / 2.0)) + Y_dot_d * t36 * t126;
1437  A0[1][3] = -t22 * (t101 + t55 * t56 * t102 * (1.0 / 2.0)) + Y_dot_d * t36 * t103;
1438  A0[1][4] = t22 * (t24 + t58 + t105 + t109) - Y_dot_d * t36 * t104;
1439  A0[1][5] = t22 * (t24 + t41 - t105 + t107) + Y_dot_d * t36 * t131;
1440  A0[1][6] = t22 * (t41 + t60 - t107 + t110) + Y_dot_d * t36 * t132;
1441  A0[1][7] = t22 * (t58 + t60 - t109 - t110) + Y_dot_d * t36 * t111;
1442  A0[1][8] = t22 * (t113 + t116) - Y_dot_d * t36 * t112;
1443  A0[1][9] = -t22 * (t113 - t39 * t84 * t97 * (1.0 / 2.0)) + Y_dot_d * t36 * t135;
1444  A0[1][10] = -t22 * (t39 * t84 * t97 * (1.0 / 2.0) - t56 * t87 * t102 * (1.0 / 2.0)) + Y_dot_d * t36 * t137;
1445  A0[1][11] = -t22 * (t116 + t56 * t87 * t102 * (1.0 / 2.0)) + Y_dot_d * t36 * t117;
1446  A0[2][0] = t22 * (t121 + t128) - Z_dot_d * t36 * t91;
1447  A0[2][1] = -t22 * (t121 - t38 * t39 * t124 * (1.0 / 2.0)) + Z_dot_d * t36 * t122;
1448  A0[2][2] = -t22 * (t38 * t39 * t124 * (1.0 / 2.0) - t55 * t56 * t129 * (1.0 / 2.0)) + Z_dot_d * t36 * t126;
1449  A0[2][3] = -t22 * (t128 + t55 * t56 * t129 * (1.0 / 2.0)) + Z_dot_d * t36 * t103;
1450  A0[2][4] = t22 * (t130 + t133) - Z_dot_d * t36 * t104;
1451  A0[2][5] = -t22 * (t130 - t39 * t72 * t124 * (1.0 / 2.0)) + Z_dot_d * t36 * t131;
1452  A0[2][6] = -t22 * (t39 * t72 * t124 * (1.0 / 2.0) - t56 * t75 * t129 * (1.0 / 2.0)) + Z_dot_d * t36 * t132;
1453  A0[2][7] = -t22 * (t133 + t56 * t75 * t129 * (1.0 / 2.0)) + Z_dot_d * t36 * t111;
1454  A0[2][8] = t22 * (t24 + t58 + t134 + t138) - Z_dot_d * t36 * t112;
1455  A0[2][9] = t22 * (t24 + t41 - t134 + t136) + Z_dot_d * t36 * t135;
1456  A0[2][10] = t22 * (t41 + t60 - t136 + t139) + Z_dot_d * t36 * t137;
1457  A0[2][11] = t22 * (t58 + t60 - t138 - t139) + Z_dot_d * t36 * t117;
1458 }
1459 
1460 void SurfCentroid5_f(const vector<double> &x, const vector<double> &y, const vector<double> &z, const double totD,
1461  const double X_dot_d, const double Y_dot_d, const double Z_dot_d, ArrayVec<double> &A0)
1462 {
1463  double t2;
1464  t2 = 1.0 / totD;
1465  A0[0][0] = X_dot_d * t2;
1466  A0[0][1] = Y_dot_d * t2;
1467  A0[0][2] = Z_dot_d * t2;
1468 }
1469 
1470 void SurfCentroid5_df(const vector<double> &x, const vector<double> &y, const vector<double> &z, const double totD,
1471  const double X_dot_d, const double Y_dot_d, const double Z_dot_d, ArrayVec<double> &A0)
1472 {
1473  double t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t28, t18, t19, t64, t20, t21, t22,
1474  t23, t24, t25, t26, t27, t29, t30, t31, t32, t33, t34, t35, t36, t37, t45, t38, t39, t40, t41, t42, t43, t44,
1475  t46, t47, t48, t49, t50, t51, t52, t60, t53, t54, t55, t56, t57, t58, t59, t61, t62, t63, t65, t66, t67, t68,
1476  t69, t70, t71, t72, t73, t74, t75, t76, t77, t78, t79, t80, t81, t84, t82, t91, t83, t85, t86, t88, t87, t90,
1477  t89, t92, t93, t94, t95, t98, t96, t105, t97, t99, t100, t102, t101, t104, t103, t106, t107, t108, t109, t110,
1478  t111, t112, t113, t114, t115, t116, t117, t118, t119, t120, t121, t122, t123, t124, t125, t126, t127, t128,
1479  t129, t130, t131, t132, t133, t134, t135, t136, t137, t138, t139, t140, t141, t142, t143, t144, t145, t146,
1480  t147, t148, t149, t150, t151, t152, t153, t154, t155, t156, t157, t158, t159, t160, t161, t162, t163, t164,
1481  t165, t166, t167, t168, t169, t170;
1482  t2 = x[1 - 1] - x[2 - 1];
1483  t3 = y[1 - 1] - y[2 - 1];
1484  t4 = z[1 - 1] - z[2 - 1];
1485  t5 = x[1 - 1] - x[5 - 1];
1486  t6 = y[1 - 1] - y[5 - 1];
1487  t7 = z[1 - 1] - z[5 - 1];
1488  t8 = t2 * t2;
1489  t9 = t3 * t3;
1490  t10 = t4 * t4;
1491  t11 = t8 + t9 + t10 + rsvsmath_automatic_eps_centre2;
1492  t12 = x[1 - 1] * 2.0;
1493  t13 = x[1 - 1] * (1.0 / 2.0);
1494  t14 = t5 * t5;
1495  t15 = t6 * t6;
1496  t16 = t7 * t7;
1497  t17 = t14 + t15 + t16 + rsvsmath_automatic_eps_centre2;
1498  t28 = x[2 - 1] * 2.0;
1499  t18 = t12 - t28;
1500  t19 = 1.0 / sqrt(rsvsmath_automatic_eps_centre + t11);
1501  t64 = x[5 - 1] * 2.0;
1502  t20 = t12 - t64;
1503  t21 = 1.0 / sqrt(rsvsmath_automatic_eps_centre + t17);
1504  t22 = 1.0 / totD;
1505  t23 = sqrt(t11);
1506  t24 = t23 * (1.0 / 2.0);
1507  t25 = x[2 - 1] - x[3 - 1];
1508  t26 = y[2 - 1] - y[3 - 1];
1509  t27 = z[2 - 1] - z[3 - 1];
1510  t29 = x[2 - 1] * (1.0 / 2.0);
1511  t30 = t13 + t29;
1512  t31 = t18 * t19 * t30 * (1.0 / 2.0);
1513  t32 = t25 * t25;
1514  t33 = t26 * t26;
1515  t34 = t27 * t27;
1516  t35 = t32 + t33 + t34 + rsvsmath_automatic_eps_centre2;
1517  t36 = 1.0 / (totD * totD);
1518  t37 = t18 * t19 * (1.0 / 2.0);
1519  t45 = x[3 - 1] * 2.0;
1520  t38 = t28 - t45;
1521  t39 = 1.0 / sqrt(rsvsmath_automatic_eps_centre + t35);
1522  t40 = sqrt(t35);
1523  t41 = t40 * (1.0 / 2.0);
1524  t42 = x[3 - 1] - x[4 - 1];
1525  t43 = y[3 - 1] - y[4 - 1];
1526  t44 = z[3 - 1] - z[4 - 1];
1527  t46 = x[3 - 1] * (1.0 / 2.0);
1528  t47 = t29 + t46;
1529  t48 = t38 * t39 * t47 * (1.0 / 2.0);
1530  t49 = t42 * t42;
1531  t50 = t43 * t43;
1532  t51 = t44 * t44;
1533  t52 = t49 + t50 + t51 + rsvsmath_automatic_eps_centre2;
1534  t60 = x[4 - 1] * 2.0;
1535  t53 = t45 - t60;
1536  t54 = 1.0 / sqrt(rsvsmath_automatic_eps_centre + t52);
1537  t55 = sqrt(t52);
1538  t56 = t55 * (1.0 / 2.0);
1539  t57 = x[4 - 1] - x[5 - 1];
1540  t58 = y[4 - 1] - y[5 - 1];
1541  t59 = z[4 - 1] - z[5 - 1];
1542  t61 = x[4 - 1] * (1.0 / 2.0);
1543  t62 = t46 + t61;
1544  t63 = t53 * t54 * t62 * (1.0 / 2.0);
1545  t65 = x[5 - 1] * (1.0 / 2.0);
1546  t66 = t57 * t57;
1547  t67 = t58 * t58;
1548  t68 = t59 * t59;
1549  t69 = t66 + t67 + t68 + rsvsmath_automatic_eps_centre2;
1550  t70 = t60 - t64;
1551  t71 = 1.0 / sqrt(rsvsmath_automatic_eps_centre + t69);
1552  t72 = sqrt(t17);
1553  t73 = t72 * (1.0 / 2.0);
1554  t74 = sqrt(t69);
1555  t75 = t74 * (1.0 / 2.0);
1556  t76 = t13 + t65;
1557  t77 = t20 * t21 * t76 * (1.0 / 2.0);
1558  t78 = t61 + t65;
1559  t79 = t70 * t71 * t78 * (1.0 / 2.0);
1560  t80 = t20 * t21 * (1.0 / 2.0);
1561  t81 = y[1 - 1] * 2.0;
1562  t84 = y[2 - 1] * 2.0;
1563  t82 = t81 - t84;
1564  t91 = y[5 - 1] * 2.0;
1565  t83 = t81 - t91;
1566  t85 = t19 * t30 * t82 * (1.0 / 2.0);
1567  t86 = t19 * t82 * (1.0 / 2.0);
1568  t88 = y[3 - 1] * 2.0;
1569  t87 = t84 - t88;
1570  t90 = y[4 - 1] * 2.0;
1571  t89 = t88 - t90;
1572  t92 = t90 - t91;
1573  t93 = t21 * t76 * t83 * (1.0 / 2.0);
1574  t94 = t21 * t83 * (1.0 / 2.0);
1575  t95 = z[1 - 1] * 2.0;
1576  t98 = z[2 - 1] * 2.0;
1577  t96 = t95 - t98;
1578  t105 = z[5 - 1] * 2.0;
1579  t97 = t95 - t105;
1580  t99 = t19 * t30 * t96 * (1.0 / 2.0);
1581  t100 = t19 * t96 * (1.0 / 2.0);
1582  t102 = z[3 - 1] * 2.0;
1583  t101 = t98 - t102;
1584  t104 = z[4 - 1] * 2.0;
1585  t103 = t102 - t104;
1586  t106 = t104 - t105;
1587  t107 = t21 * t76 * t97 * (1.0 / 2.0);
1588  t108 = t21 * t97 * (1.0 / 2.0);
1589  t109 = y[1 - 1] * (1.0 / 2.0);
1590  t110 = t37 + t80;
1591  t111 = y[2 - 1] * (1.0 / 2.0);
1592  t112 = t109 + t111;
1593  t113 = t18 * t19 * t112 * (1.0 / 2.0);
1594  t114 = t38 * t39 * (1.0 / 2.0);
1595  t115 = y[3 - 1] * (1.0 / 2.0);
1596  t116 = t111 + t115;
1597  t117 = t53 * t54 * (1.0 / 2.0);
1598  t118 = y[4 - 1] * (1.0 / 2.0);
1599  t119 = t115 + t118;
1600  t120 = y[5 - 1] * (1.0 / 2.0);
1601  t121 = t70 * t71 * (1.0 / 2.0);
1602  t122 = t109 + t120;
1603  t123 = t20 * t21 * t122 * (1.0 / 2.0);
1604  t124 = t118 + t120;
1605  t125 = t80 + t121;
1606  t126 = t86 + t94;
1607  t127 = t19 * t82 * t112 * (1.0 / 2.0);
1608  t128 = t39 * t87 * (1.0 / 2.0);
1609  t129 = t39 * t87 * t116 * (1.0 / 2.0);
1610  t130 = t54 * t89 * (1.0 / 2.0);
1611  t131 = t54 * t89 * t119 * (1.0 / 2.0);
1612  t132 = t71 * t92 * (1.0 / 2.0);
1613  t133 = t21 * t83 * t122 * (1.0 / 2.0);
1614  t134 = t71 * t92 * t124 * (1.0 / 2.0);
1615  t135 = t94 + t132;
1616  t136 = t100 + t108;
1617  t137 = t19 * t96 * t112 * (1.0 / 2.0);
1618  t138 = t39 * t101 * (1.0 / 2.0);
1619  t139 = t54 * t103 * (1.0 / 2.0);
1620  t140 = t71 * t106 * (1.0 / 2.0);
1621  t141 = t21 * t97 * t122 * (1.0 / 2.0);
1622  t142 = t108 + t140;
1623  t143 = z[1 - 1] * (1.0 / 2.0);
1624  t144 = z[2 - 1] * (1.0 / 2.0);
1625  t145 = t143 + t144;
1626  t146 = t18 * t19 * t145 * (1.0 / 2.0);
1627  t147 = t37 - t114;
1628  t148 = z[3 - 1] * (1.0 / 2.0);
1629  t149 = t144 + t148;
1630  t150 = t114 - t117;
1631  t151 = z[4 - 1] * (1.0 / 2.0);
1632  t152 = t148 + t151;
1633  t153 = z[5 - 1] * (1.0 / 2.0);
1634  t154 = t117 - t121;
1635  t155 = t143 + t153;
1636  t156 = t20 * t21 * t155 * (1.0 / 2.0);
1637  t157 = t151 + t153;
1638  t158 = t19 * t82 * t145 * (1.0 / 2.0);
1639  t159 = t86 - t128;
1640  t160 = t128 - t130;
1641  t161 = t130 - t132;
1642  t162 = t21 * t83 * t155 * (1.0 / 2.0);
1643  t163 = t19 * t96 * t145 * (1.0 / 2.0);
1644  t164 = t100 - t138;
1645  t165 = t39 * t101 * t149 * (1.0 / 2.0);
1646  t166 = t138 - t139;
1647  t167 = t54 * t103 * t152 * (1.0 / 2.0);
1648  t168 = t139 - t140;
1649  t169 = t21 * t97 * t155 * (1.0 / 2.0);
1650  t170 = t71 * t106 * t157 * (1.0 / 2.0);
1651  A0[0][0] = t22 * (t24 + t31 + t73 + t77) - X_dot_d * t36 * t110;
1652  A0[0][1] = t22 * (t24 - t31 + t41 + t48) + X_dot_d * t36 * (t37 - t38 * t39 * (1.0 / 2.0));
1653  A0[0][2] = t22 * (t41 - t48 + t56 + t63) + X_dot_d * t36 * (t114 - t53 * t54 * (1.0 / 2.0));
1654  A0[0][3] = t22 * (t56 - t63 + t75 + t79) + X_dot_d * t36 * (t117 - t70 * t71 * (1.0 / 2.0));
1655  A0[0][4] = t22 * (t73 + t75 - t77 - t79) + X_dot_d * t36 * t125;
1656  A0[0][5] = t22 * (t85 + t93) - X_dot_d * t36 * t126;
1657  A0[0][6] = -t22 * (t85 - t39 * t47 * t87 * (1.0 / 2.0)) + X_dot_d * t36 * (t86 - t39 * t87 * (1.0 / 2.0));
1658  A0[0][7] = -t22 * (t39 * t47 * t87 * (1.0 / 2.0) - t54 * t62 * t89 * (1.0 / 2.0)) +
1659  X_dot_d * t36 * (t128 - t54 * t89 * (1.0 / 2.0));
1660  A0[0][8] = -t22 * (t54 * t62 * t89 * (1.0 / 2.0) - t71 * t78 * t92 * (1.0 / 2.0)) +
1661  X_dot_d * t36 * (t130 - t71 * t92 * (1.0 / 2.0));
1662  A0[0][9] = -t22 * (t93 + t71 * t78 * t92 * (1.0 / 2.0)) + X_dot_d * t36 * t135;
1663  A0[0][10] = t22 * (t99 + t107) - X_dot_d * t36 * t136;
1664  A0[0][11] = -t22 * (t99 - t39 * t47 * t101 * (1.0 / 2.0)) + X_dot_d * t36 * (t100 - t39 * t101 * (1.0 / 2.0));
1665  A0[0][12] = -t22 * (t39 * t47 * t101 * (1.0 / 2.0) - t54 * t62 * t103 * (1.0 / 2.0)) +
1666  X_dot_d * t36 * (t138 - t54 * t103 * (1.0 / 2.0));
1667  A0[0][13] = -t22 * (t54 * t62 * t103 * (1.0 / 2.0) - t71 * t78 * t106 * (1.0 / 2.0)) +
1668  X_dot_d * t36 * (t139 - t71 * t106 * (1.0 / 2.0));
1669  A0[0][14] = -t22 * (t107 + t71 * t78 * t106 * (1.0 / 2.0)) + X_dot_d * t36 * t142;
1670  A0[1][0] = t22 * (t113 + t123) - Y_dot_d * t36 * t110;
1671  A0[1][1] = -t22 * (t113 - t38 * t39 * t116 * (1.0 / 2.0)) + Y_dot_d * t36 * t147;
1672  A0[1][2] = -t22 * (t38 * t39 * t116 * (1.0 / 2.0) - t53 * t54 * t119 * (1.0 / 2.0)) + Y_dot_d * t36 * t150;
1673  A0[1][3] = -t22 * (t53 * t54 * t119 * (1.0 / 2.0) - t70 * t71 * t124 * (1.0 / 2.0)) + Y_dot_d * t36 * t154;
1674  A0[1][4] = -t22 * (t123 + t70 * t71 * t124 * (1.0 / 2.0)) + Y_dot_d * t36 * t125;
1675  A0[1][5] = t22 * (t24 + t73 + t127 + t133) - Y_dot_d * t36 * t126;
1676  A0[1][6] = t22 * (t24 + t41 - t127 + t129) + Y_dot_d * t36 * t159;
1677  A0[1][7] = t22 * (t41 + t56 - t129 + t131) + Y_dot_d * t36 * t160;
1678  A0[1][8] = t22 * (t56 + t75 - t131 + t134) + Y_dot_d * t36 * t161;
1679  A0[1][9] = t22 * (t73 + t75 - t133 - t134) + Y_dot_d * t36 * t135;
1680  A0[1][10] = t22 * (t137 + t141) - Y_dot_d * t36 * t136;
1681  A0[1][11] = -t22 * (t137 - t39 * t101 * t116 * (1.0 / 2.0)) + Y_dot_d * t36 * t164;
1682  A0[1][12] = -t22 * (t39 * t101 * t116 * (1.0 / 2.0) - t54 * t103 * t119 * (1.0 / 2.0)) + Y_dot_d * t36 * t166;
1683  A0[1][13] = -t22 * (t54 * t103 * t119 * (1.0 / 2.0) - t71 * t106 * t124 * (1.0 / 2.0)) + Y_dot_d * t36 * t168;
1684  A0[1][14] = -t22 * (t141 + t71 * t106 * t124 * (1.0 / 2.0)) + Y_dot_d * t36 * t142;
1685  A0[2][0] = t22 * (t146 + t156) - Z_dot_d * t36 * t110;
1686  A0[2][1] = -t22 * (t146 - t38 * t39 * t149 * (1.0 / 2.0)) + Z_dot_d * t36 * t147;
1687  A0[2][2] = -t22 * (t38 * t39 * t149 * (1.0 / 2.0) - t53 * t54 * t152 * (1.0 / 2.0)) + Z_dot_d * t36 * t150;
1688  A0[2][3] = -t22 * (t53 * t54 * t152 * (1.0 / 2.0) - t70 * t71 * t157 * (1.0 / 2.0)) + Z_dot_d * t36 * t154;
1689  A0[2][4] = -t22 * (t156 + t70 * t71 * t157 * (1.0 / 2.0)) + Z_dot_d * t36 * t125;
1690  A0[2][5] = t22 * (t158 + t162) - Z_dot_d * t36 * t126;
1691  A0[2][6] = -t22 * (t158 - t39 * t87 * t149 * (1.0 / 2.0)) + Z_dot_d * t36 * t159;
1692  A0[2][7] = -t22 * (t39 * t87 * t149 * (1.0 / 2.0) - t54 * t89 * t152 * (1.0 / 2.0)) + Z_dot_d * t36 * t160;
1693  A0[2][8] = -t22 * (t54 * t89 * t152 * (1.0 / 2.0) - t71 * t92 * t157 * (1.0 / 2.0)) + Z_dot_d * t36 * t161;
1694  A0[2][9] = -t22 * (t162 + t71 * t92 * t157 * (1.0 / 2.0)) + Z_dot_d * t36 * t135;
1695  A0[2][10] = t22 * (t24 + t73 + t163 + t169) - Z_dot_d * t36 * t136;
1696  A0[2][11] = t22 * (t24 + t41 - t163 + t165) + Z_dot_d * t36 * t164;
1697  A0[2][12] = t22 * (t41 + t56 - t165 + t167) + Z_dot_d * t36 * t166;
1698  A0[2][13] = t22 * (t56 + t75 - t167 + t170) + Z_dot_d * t36 * t168;
1699  A0[2][14] = t22 * (t73 + t75 - t169 - t170) + Z_dot_d * t36 * t142;
1700 }
1701 
1702 void SurfCentroid6_f(const vector<double> &x, const vector<double> &y, const vector<double> &z, const double totD,
1703  const double X_dot_d, const double Y_dot_d, const double Z_dot_d, ArrayVec<double> &A0)
1704 {
1705  double t2;
1706  t2 = 1.0 / totD;
1707  A0[0][0] = X_dot_d * t2;
1708  A0[0][1] = Y_dot_d * t2;
1709  A0[0][2] = Z_dot_d * t2;
1710 }
1711 
1712 void SurfCentroid6_df(const vector<double> &x, const vector<double> &y, const vector<double> &z, const double totD,
1713  const double X_dot_d, const double Y_dot_d, const double Z_dot_d, ArrayVec<double> &A0)
1714 {
1715  double t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t28, t18, t19, t79, t20, t21, t22,
1716  t23, t24, t25, t26, t27, t29, t30, t31, t32, t33, t34, t35, t36, t37, t45, t38, t39, t40, t41, t42, t43, t44,
1717  t46, t47, t48, t49, t50, t51, t52, t60, t53, t54, t55, t56, t57, t58, t59, t61, t62, t63, t64, t65, t66, t67,
1718  t75, t68, t69, t70, t71, t72, t73, t74, t76, t77, t78, t80, t81, t82, t83, t84, t85, t86, t87, t88, t89, t90,
1719  t91, t92, t93, t94, t95, t96, t99, t97, t108, t98, t100, t101, t103, t102, t105, t104, t107, t106, t109, t110,
1720  t111, t112, t115, t113, t124, t114, t116, t117, t119, t118, t121, t120, t123, t122, t125, t126, t127, t128,
1721  t129, t130, t131, t132, t133, t134, t135, t136, t137, t138, t139, t140, t141, t142, t143, t144, t145, t146,
1722  t147, t148, t149, t150, t151, t152, t153, t154, t155, t156, t157, t158, t159, t160, t161, t162, t163, t164,
1723  t165, t166, t167, t168, t169, t170, t171, t172, t173, t174, t175, t176, t177, t178, t179, t180, t181, t182,
1724  t183, t184, t185, t186, t187, t188, t189, t190, t191, t192, t193, t194, t195, t196, t197, t198, t199, t200,
1725  t201;
1726  t2 = x[1 - 1] - x[2 - 1];
1727  t3 = y[1 - 1] - y[2 - 1];
1728  t4 = z[1 - 1] - z[2 - 1];
1729  t5 = x[1 - 1] - x[6 - 1];
1730  t6 = y[1 - 1] - y[6 - 1];
1731  t7 = z[1 - 1] - z[6 - 1];
1732  t8 = t2 * t2;
1733  t9 = t3 * t3;
1734  t10 = t4 * t4;
1735  t11 = t8 + t9 + t10 + rsvsmath_automatic_eps_centre2;
1736  t12 = x[1 - 1] * 2.0;
1737  t13 = x[1 - 1] * (1.0 / 2.0);
1738  t14 = t5 * t5;
1739  t15 = t6 * t6;
1740  t16 = t7 * t7;
1741  t17 = t14 + t15 + t16 + rsvsmath_automatic_eps_centre2;
1742  t28 = x[2 - 1] * 2.0;
1743  t18 = t12 - t28;
1744  t19 = 1.0 / sqrt(rsvsmath_automatic_eps_centre + t11);
1745  t79 = x[6 - 1] * 2.0;
1746  t20 = t12 - t79;
1747  t21 = 1.0 / sqrt(rsvsmath_automatic_eps_centre + t17);
1748  t22 = 1.0 / totD;
1749  t23 = sqrt(t11);
1750  t24 = t23 * (1.0 / 2.0);
1751  t25 = x[2 - 1] - x[3 - 1];
1752  t26 = y[2 - 1] - y[3 - 1];
1753  t27 = z[2 - 1] - z[3 - 1];
1754  t29 = x[2 - 1] * (1.0 / 2.0);
1755  t30 = t13 + t29;
1756  t31 = t18 * t19 * t30 * (1.0 / 2.0);
1757  t32 = t25 * t25;
1758  t33 = t26 * t26;
1759  t34 = t27 * t27;
1760  t35 = t32 + t33 + t34 + rsvsmath_automatic_eps_centre2;
1761  t36 = 1.0 / (totD * totD);
1762  t37 = t18 * t19 * (1.0 / 2.0);
1763  t45 = x[3 - 1] * 2.0;
1764  t38 = t28 - t45;
1765  t39 = 1.0 / sqrt(rsvsmath_automatic_eps_centre + t35);
1766  t40 = sqrt(t35);
1767  t41 = t40 * (1.0 / 2.0);
1768  t42 = x[3 - 1] - x[4 - 1];
1769  t43 = y[3 - 1] - y[4 - 1];
1770  t44 = z[3 - 1] - z[4 - 1];
1771  t46 = x[3 - 1] * (1.0 / 2.0);
1772  t47 = t29 + t46;
1773  t48 = t38 * t39 * t47 * (1.0 / 2.0);
1774  t49 = t42 * t42;
1775  t50 = t43 * t43;
1776  t51 = t44 * t44;
1777  t52 = t49 + t50 + t51 + rsvsmath_automatic_eps_centre2;
1778  t60 = x[4 - 1] * 2.0;
1779  t53 = t45 - t60;
1780  t54 = 1.0 / sqrt(rsvsmath_automatic_eps_centre + t52);
1781  t55 = sqrt(t52);
1782  t56 = t55 * (1.0 / 2.0);
1783  t57 = x[4 - 1] - x[5 - 1];
1784  t58 = y[4 - 1] - y[5 - 1];
1785  t59 = z[4 - 1] - z[5 - 1];
1786  t61 = x[4 - 1] * (1.0 / 2.0);
1787  t62 = t46 + t61;
1788  t63 = t53 * t54 * t62 * (1.0 / 2.0);
1789  t64 = t57 * t57;
1790  t65 = t58 * t58;
1791  t66 = t59 * t59;
1792  t67 = t64 + t65 + t66 + rsvsmath_automatic_eps_centre2;
1793  t75 = x[5 - 1] * 2.0;
1794  t68 = t60 - t75;
1795  t69 = 1.0 / sqrt(rsvsmath_automatic_eps_centre + t67);
1796  t70 = sqrt(t67);
1797  t71 = t70 * (1.0 / 2.0);
1798  t72 = x[5 - 1] - x[6 - 1];
1799  t73 = y[5 - 1] - y[6 - 1];
1800  t74 = z[5 - 1] - z[6 - 1];
1801  t76 = x[5 - 1] * (1.0 / 2.0);
1802  t77 = t61 + t76;
1803  t78 = t68 * t69 * t77 * (1.0 / 2.0);
1804  t80 = x[6 - 1] * (1.0 / 2.0);
1805  t81 = t72 * t72;
1806  t82 = t73 * t73;
1807  t83 = t74 * t74;
1808  t84 = t81 + t82 + t83 + rsvsmath_automatic_eps_centre2;
1809  t85 = t75 - t79;
1810  t86 = 1.0 / sqrt(rsvsmath_automatic_eps_centre + t84);
1811  t87 = sqrt(t17);
1812  t88 = t87 * (1.0 / 2.0);
1813  t89 = sqrt(t84);
1814  t90 = t89 * (1.0 / 2.0);
1815  t91 = t13 + t80;
1816  t92 = t20 * t21 * t91 * (1.0 / 2.0);
1817  t93 = t76 + t80;
1818  t94 = t85 * t86 * t93 * (1.0 / 2.0);
1819  t95 = t20 * t21 * (1.0 / 2.0);
1820  t96 = y[1 - 1] * 2.0;
1821  t99 = y[2 - 1] * 2.0;
1822  t97 = t96 - t99;
1823  t108 = y[6 - 1] * 2.0;
1824  t98 = t96 - t108;
1825  t100 = t19 * t30 * t97 * (1.0 / 2.0);
1826  t101 = t19 * t97 * (1.0 / 2.0);
1827  t103 = y[3 - 1] * 2.0;
1828  t102 = t99 - t103;
1829  t105 = y[4 - 1] * 2.0;
1830  t104 = t103 - t105;
1831  t107 = y[5 - 1] * 2.0;
1832  t106 = t105 - t107;
1833  t109 = t107 - t108;
1834  t110 = t21 * t91 * t98 * (1.0 / 2.0);
1835  t111 = t21 * t98 * (1.0 / 2.0);
1836  t112 = z[1 - 1] * 2.0;
1837  t115 = z[2 - 1] * 2.0;
1838  t113 = t112 - t115;
1839  t124 = z[6 - 1] * 2.0;
1840  t114 = t112 - t124;
1841  t116 = t19 * t30 * t113 * (1.0 / 2.0);
1842  t117 = t19 * t113 * (1.0 / 2.0);
1843  t119 = z[3 - 1] * 2.0;
1844  t118 = t115 - t119;
1845  t121 = z[4 - 1] * 2.0;
1846  t120 = t119 - t121;
1847  t123 = z[5 - 1] * 2.0;
1848  t122 = t121 - t123;
1849  t125 = t123 - t124;
1850  t126 = t21 * t91 * t114 * (1.0 / 2.0);
1851  t127 = t21 * t114 * (1.0 / 2.0);
1852  t128 = y[1 - 1] * (1.0 / 2.0);
1853  t129 = t37 + t95;
1854  t130 = y[2 - 1] * (1.0 / 2.0);
1855  t131 = t128 + t130;
1856  t132 = t18 * t19 * t131 * (1.0 / 2.0);
1857  t133 = t38 * t39 * (1.0 / 2.0);
1858  t134 = y[3 - 1] * (1.0 / 2.0);
1859  t135 = t130 + t134;
1860  t136 = t53 * t54 * (1.0 / 2.0);
1861  t137 = y[4 - 1] * (1.0 / 2.0);
1862  t138 = t134 + t137;
1863  t139 = t68 * t69 * (1.0 / 2.0);
1864  t140 = y[5 - 1] * (1.0 / 2.0);
1865  t141 = t137 + t140;
1866  t142 = y[6 - 1] * (1.0 / 2.0);
1867  t143 = t85 * t86 * (1.0 / 2.0);
1868  t144 = t128 + t142;
1869  t145 = t20 * t21 * t144 * (1.0 / 2.0);
1870  t146 = t140 + t142;
1871  t147 = t95 + t143;
1872  t148 = t101 + t111;
1873  t149 = t19 * t97 * t131 * (1.0 / 2.0);
1874  t150 = t39 * t102 * (1.0 / 2.0);
1875  t151 = t39 * t102 * t135 * (1.0 / 2.0);
1876  t152 = t54 * t104 * (1.0 / 2.0);
1877  t153 = t54 * t104 * t138 * (1.0 / 2.0);
1878  t154 = t69 * t106 * (1.0 / 2.0);
1879  t155 = t69 * t106 * t141 * (1.0 / 2.0);
1880  t156 = t86 * t109 * (1.0 / 2.0);
1881  t157 = t21 * t98 * t144 * (1.0 / 2.0);
1882  t158 = t86 * t109 * t146 * (1.0 / 2.0);
1883  t159 = t111 + t156;
1884  t160 = t117 + t127;
1885  t161 = t19 * t113 * t131 * (1.0 / 2.0);
1886  t162 = t39 * t118 * (1.0 / 2.0);
1887  t163 = t54 * t120 * (1.0 / 2.0);
1888  t164 = t69 * t122 * (1.0 / 2.0);
1889  t165 = t86 * t125 * (1.0 / 2.0);
1890  t166 = t21 * t114 * t144 * (1.0 / 2.0);
1891  t167 = t127 + t165;
1892  t168 = z[1 - 1] * (1.0 / 2.0);
1893  t169 = z[2 - 1] * (1.0 / 2.0);
1894  t170 = t168 + t169;
1895  t171 = t18 * t19 * t170 * (1.0 / 2.0);
1896  t172 = t37 - t133;
1897  t173 = z[3 - 1] * (1.0 / 2.0);
1898  t174 = t169 + t173;
1899  t175 = t133 - t136;
1900  t176 = z[4 - 1] * (1.0 / 2.0);
1901  t177 = t173 + t176;
1902  t178 = t136 - t139;
1903  t179 = z[5 - 1] * (1.0 / 2.0);
1904  t180 = t176 + t179;
1905  t181 = z[6 - 1] * (1.0 / 2.0);
1906  t182 = t139 - t143;
1907  t183 = t168 + t181;
1908  t184 = t20 * t21 * t183 * (1.0 / 2.0);
1909  t185 = t179 + t181;
1910  t186 = t19 * t97 * t170 * (1.0 / 2.0);
1911  t187 = t101 - t150;
1912  t188 = t150 - t152;
1913  t189 = t152 - t154;
1914  t190 = t154 - t156;
1915  t191 = t21 * t98 * t183 * (1.0 / 2.0);
1916  t192 = t19 * t113 * t170 * (1.0 / 2.0);
1917  t193 = t117 - t162;
1918  t194 = t39 * t118 * t174 * (1.0 / 2.0);
1919  t195 = t162 - t163;
1920  t196 = t54 * t120 * t177 * (1.0 / 2.0);
1921  t197 = t163 - t164;
1922  t198 = t69 * t122 * t180 * (1.0 / 2.0);
1923  t199 = t164 - t165;
1924  t200 = t21 * t114 * t183 * (1.0 / 2.0);
1925  t201 = t86 * t125 * t185 * (1.0 / 2.0);
1926  A0[0][0] = t22 * (t24 + t31 + t88 + t92) - X_dot_d * t36 * t129;
1927  A0[0][1] = t22 * (t24 - t31 + t41 + t48) + X_dot_d * t36 * (t37 - t38 * t39 * (1.0 / 2.0));
1928  A0[0][2] = t22 * (t41 - t48 + t56 + t63) + X_dot_d * t36 * (t133 - t53 * t54 * (1.0 / 2.0));
1929  A0[0][3] = t22 * (t56 - t63 + t71 + t78) + X_dot_d * t36 * (t136 - t68 * t69 * (1.0 / 2.0));
1930  A0[0][4] = t22 * (t71 - t78 + t90 + t94) + X_dot_d * t36 * (t139 - t85 * t86 * (1.0 / 2.0));
1931  A0[0][5] = t22 * (t88 + t90 - t92 - t94) + X_dot_d * t36 * t147;
1932  A0[0][6] = t22 * (t100 + t110) - X_dot_d * t36 * t148;
1933  A0[0][7] = -t22 * (t100 - t39 * t47 * t102 * (1.0 / 2.0)) + X_dot_d * t36 * (t101 - t39 * t102 * (1.0 / 2.0));
1934  A0[0][8] = -t22 * (t39 * t47 * t102 * (1.0 / 2.0) - t54 * t62 * t104 * (1.0 / 2.0)) +
1935  X_dot_d * t36 * (t150 - t54 * t104 * (1.0 / 2.0));
1936  A0[0][9] = -t22 * (t54 * t62 * t104 * (1.0 / 2.0) - t69 * t77 * t106 * (1.0 / 2.0)) +
1937  X_dot_d * t36 * (t152 - t69 * t106 * (1.0 / 2.0));
1938  A0[0][10] = -t22 * (t69 * t77 * t106 * (1.0 / 2.0) - t86 * t93 * t109 * (1.0 / 2.0)) +
1939  X_dot_d * t36 * (t154 - t86 * t109 * (1.0 / 2.0));
1940  A0[0][11] = -t22 * (t110 + t86 * t93 * t109 * (1.0 / 2.0)) + X_dot_d * t36 * t159;
1941  A0[0][12] = t22 * (t116 + t126) - X_dot_d * t36 * t160;
1942  A0[0][13] = -t22 * (t116 - t39 * t47 * t118 * (1.0 / 2.0)) + X_dot_d * t36 * (t117 - t39 * t118 * (1.0 / 2.0));
1943  A0[0][14] = -t22 * (t39 * t47 * t118 * (1.0 / 2.0) - t54 * t62 * t120 * (1.0 / 2.0)) +
1944  X_dot_d * t36 * (t162 - t54 * t120 * (1.0 / 2.0));
1945  A0[0][15] = -t22 * (t54 * t62 * t120 * (1.0 / 2.0) - t69 * t77 * t122 * (1.0 / 2.0)) +
1946  X_dot_d * t36 * (t163 - t69 * t122 * (1.0 / 2.0));
1947  A0[0][16] = -t22 * (t69 * t77 * t122 * (1.0 / 2.0) - t86 * t93 * t125 * (1.0 / 2.0)) +
1948  X_dot_d * t36 * (t164 - t86 * t125 * (1.0 / 2.0));
1949  A0[0][17] = -t22 * (t126 + t86 * t93 * t125 * (1.0 / 2.0)) + X_dot_d * t36 * t167;
1950  A0[1][0] = t22 * (t132 + t145) - Y_dot_d * t36 * t129;
1951  A0[1][1] = -t22 * (t132 - t38 * t39 * t135 * (1.0 / 2.0)) + Y_dot_d * t36 * t172;
1952  A0[1][2] = -t22 * (t38 * t39 * t135 * (1.0 / 2.0) - t53 * t54 * t138 * (1.0 / 2.0)) + Y_dot_d * t36 * t175;
1953  A0[1][3] = -t22 * (t53 * t54 * t138 * (1.0 / 2.0) - t68 * t69 * t141 * (1.0 / 2.0)) + Y_dot_d * t36 * t178;
1954  A0[1][4] = -t22 * (t68 * t69 * t141 * (1.0 / 2.0) - t85 * t86 * t146 * (1.0 / 2.0)) + Y_dot_d * t36 * t182;
1955  A0[1][5] = -t22 * (t145 + t85 * t86 * t146 * (1.0 / 2.0)) + Y_dot_d * t36 * t147;
1956  A0[1][6] = t22 * (t24 + t88 + t149 + t157) - Y_dot_d * t36 * t148;
1957  A0[1][7] = t22 * (t24 + t41 - t149 + t151) + Y_dot_d * t36 * t187;
1958  A0[1][8] = t22 * (t41 + t56 - t151 + t153) + Y_dot_d * t36 * t188;
1959  A0[1][9] = t22 * (t56 + t71 - t153 + t155) + Y_dot_d * t36 * t189;
1960  A0[1][10] = t22 * (t71 + t90 - t155 + t158) + Y_dot_d * t36 * t190;
1961  A0[1][11] = t22 * (t88 + t90 - t157 - t158) + Y_dot_d * t36 * t159;
1962  A0[1][12] = t22 * (t161 + t166) - Y_dot_d * t36 * t160;
1963  A0[1][13] = -t22 * (t161 - t39 * t118 * t135 * (1.0 / 2.0)) + Y_dot_d * t36 * t193;
1964  A0[1][14] = -t22 * (t39 * t118 * t135 * (1.0 / 2.0) - t54 * t120 * t138 * (1.0 / 2.0)) + Y_dot_d * t36 * t195;
1965  A0[1][15] = -t22 * (t54 * t120 * t138 * (1.0 / 2.0) - t69 * t122 * t141 * (1.0 / 2.0)) + Y_dot_d * t36 * t197;
1966  A0[1][16] = -t22 * (t69 * t122 * t141 * (1.0 / 2.0) - t86 * t125 * t146 * (1.0 / 2.0)) + Y_dot_d * t36 * t199;
1967  A0[1][17] = -t22 * (t166 + t86 * t125 * t146 * (1.0 / 2.0)) + Y_dot_d * t36 * t167;
1968  A0[2][0] = t22 * (t171 + t184) - Z_dot_d * t36 * t129;
1969  A0[2][1] = -t22 * (t171 - t38 * t39 * t174 * (1.0 / 2.0)) + Z_dot_d * t36 * t172;
1970  A0[2][2] = -t22 * (t38 * t39 * t174 * (1.0 / 2.0) - t53 * t54 * t177 * (1.0 / 2.0)) + Z_dot_d * t36 * t175;
1971  A0[2][3] = -t22 * (t53 * t54 * t177 * (1.0 / 2.0) - t68 * t69 * t180 * (1.0 / 2.0)) + Z_dot_d * t36 * t178;
1972  A0[2][4] = -t22 * (t68 * t69 * t180 * (1.0 / 2.0) - t85 * t86 * t185 * (1.0 / 2.0)) + Z_dot_d * t36 * t182;
1973  A0[2][5] = -t22 * (t184 + t85 * t86 * t185 * (1.0 / 2.0)) + Z_dot_d * t36 * t147;
1974  A0[2][6] = t22 * (t186 + t191) - Z_dot_d * t36 * t148;
1975  A0[2][7] = -t22 * (t186 - t39 * t102 * t174 * (1.0 / 2.0)) + Z_dot_d * t36 * t187;
1976  A0[2][8] = -t22 * (t39 * t102 * t174 * (1.0 / 2.0) - t54 * t104 * t177 * (1.0 / 2.0)) + Z_dot_d * t36 * t188;
1977  A0[2][9] = -t22 * (t54 * t104 * t177 * (1.0 / 2.0) - t69 * t106 * t180 * (1.0 / 2.0)) + Z_dot_d * t36 * t189;
1978  A0[2][10] = -t22 * (t69 * t106 * t180 * (1.0 / 2.0) - t86 * t109 * t185 * (1.0 / 2.0)) + Z_dot_d * t36 * t190;
1979  A0[2][11] = -t22 * (t191 + t86 * t109 * t185 * (1.0 / 2.0)) + Z_dot_d * t36 * t159;
1980  A0[2][12] = t22 * (t24 + t88 + t192 + t200) - Z_dot_d * t36 * t160;
1981  A0[2][13] = t22 * (t24 + t41 - t192 + t194) + Z_dot_d * t36 * t193;
1982  A0[2][14] = t22 * (t41 + t56 - t194 + t196) + Z_dot_d * t36 * t195;
1983  A0[2][15] = t22 * (t56 + t71 - t196 + t198) + Z_dot_d * t36 * t197;
1984  A0[2][16] = t22 * (t71 + t90 - t198 + t201) + Z_dot_d * t36 * t199;
1985  A0[2][17] = t22 * (t88 + t90 - t200 - t201) + Z_dot_d * t36 * t167;
1986 }
1987 
1988 void SurfCentroidConnec_f(const vector<double> &x, const vector<double> &y, const vector<double> &z, const double totD,
1989  const double X_dot_d, const double Y_dot_d, const double Z_dot_d, ArrayVec<double> &A0)
1990 {
1991  double t2;
1992  t2 = 1.0 / totD;
1993  A0[0][0] = X_dot_d * t2;
1994  A0[0][1] = Y_dot_d * t2;
1995  A0[0][2] = Z_dot_d * t2;
1996 }
1997 
1998 void SurfCentroidConnec_df(const vector<double> &x, const vector<double> &y, const vector<double> &z, const double totD,
1999  const double X_dot_d, const double Y_dot_d, const double Z_dot_d, ArrayVec<double> &A0)
2000 {
2001  double t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t28, t20, t21, t22, t23,
2002  t24, t25, t26, t27, t29, t30, t31, t32, t33, t34, t35, t36, t37, t64, t38, t39, t40, t41, t42, t43, t45, t44,
2003  t46, t47, t48, t49, t75, t50, t51, t52, t54, t53, t55, t56, t82, t57, t58, t59, t85, t60, t61, t62, t63, t89,
2004  t65, t66, t67, t68, t69, t70, t92, t71, t72, t73, t74, t76, t77, t96, t78, t79, t97, t80, t81, t99, t83, t84,
2005  t86, t87, t88, t90, t91, t93, t94, t95, t98;
2006  t2 = x[1 - 1] - x[2 - 1];
2007  t3 = y[1 - 1] - y[2 - 1];
2008  t4 = z[1 - 1] - z[2 - 1];
2009  t5 = x[2 - 1] - x[3 - 1];
2010  t6 = y[2 - 1] - y[3 - 1];
2011  t7 = z[2 - 1] - z[3 - 1];
2012  t8 = t2 * t2;
2013  t9 = t3 * t3;
2014  t10 = t4 * t4;
2015  t11 = t8 + t9 + t10 + rsvsmath_automatic_eps_centre2;
2016  t12 = x[2 - 1] * (1.0 / 2.0);
2017  t13 = t5 * t5;
2018  t14 = t6 * t6;
2019  t15 = t7 * t7;
2020  t16 = t13 + t14 + t15 + rsvsmath_automatic_eps_centre2;
2021  t17 = x[1 - 1] * 2.0;
2022  t18 = x[2 - 1] * 2.0;
2023  t19 = 1.0 / sqrt(rsvsmath_automatic_eps_centre + t11);
2024  t28 = x[3 - 1] * 2.0;
2025  t20 = t18 - t28;
2026  t21 = 1.0 / sqrt(rsvsmath_automatic_eps_centre + t16);
2027  t22 = 1.0 / totD;
2028  t23 = sqrt(t16);
2029  t24 = t23 * (1.0 / 2.0);
2030  t25 = x[3 - 1] - x[4 - 1];
2031  t26 = y[3 - 1] - y[4 - 1];
2032  t27 = z[3 - 1] - z[4 - 1];
2033  t29 = x[3 - 1] * (1.0 / 2.0);
2034  t30 = t12 + t29;
2035  t31 = t20 * t21 * t30 * (1.0 / 2.0);
2036  t32 = t25 * t25;
2037  t33 = t26 * t26;
2038  t34 = t27 * t27;
2039  t35 = t32 + t33 + t34 + rsvsmath_automatic_eps_centre2;
2040  t36 = 1.0 / (totD * totD);
2041  t37 = t20 * t21 * (1.0 / 2.0);
2042  t64 = x[4 - 1] * 2.0;
2043  t38 = t28 - t64;
2044  t39 = 1.0 / sqrt(rsvsmath_automatic_eps_centre + t35);
2045  t40 = x[1 - 1] * (1.0 / 2.0);
2046  t41 = t12 + t40;
2047  t42 = y[1 - 1] * 2.0;
2048  t43 = y[2 - 1] * 2.0;
2049  t45 = y[3 - 1] * 2.0;
2050  t44 = t43 - t45;
2051  t46 = t21 * t30 * t44 * (1.0 / 2.0);
2052  t47 = x[4 - 1] * (1.0 / 2.0);
2053  t48 = t29 + t47;
2054  t49 = t21 * t44 * (1.0 / 2.0);
2055  t75 = y[4 - 1] * 2.0;
2056  t50 = t45 - t75;
2057  t51 = z[1 - 1] * 2.0;
2058  t52 = z[2 - 1] * 2.0;
2059  t54 = z[3 - 1] * 2.0;
2060  t53 = t52 - t54;
2061  t55 = t21 * t30 * t53 * (1.0 / 2.0);
2062  t56 = t21 * t53 * (1.0 / 2.0);
2063  t82 = z[4 - 1] * 2.0;
2064  t57 = t54 - t82;
2065  t58 = t17 - t18;
2066  t59 = y[2 - 1] * (1.0 / 2.0);
2067  t85 = t19 * t58 * (1.0 / 2.0);
2068  t60 = t37 - t85;
2069  t61 = y[3 - 1] * (1.0 / 2.0);
2070  t62 = t59 + t61;
2071  t63 = t20 * t21 * t62 * (1.0 / 2.0);
2072  t89 = t38 * t39 * (1.0 / 2.0);
2073  t65 = t37 - t89;
2074  t66 = sqrt(t11);
2075  t67 = t66 * (1.0 / 2.0);
2076  t68 = t42 - t43;
2077  t69 = y[1 - 1] * (1.0 / 2.0);
2078  t70 = t59 + t69;
2079  t92 = t19 * t68 * (1.0 / 2.0);
2080  t71 = t49 - t92;
2081  t72 = sqrt(t35);
2082  t73 = t72 * (1.0 / 2.0);
2083  t74 = t21 * t44 * t62 * (1.0 / 2.0);
2084  t76 = y[4 - 1] * (1.0 / 2.0);
2085  t77 = t61 + t76;
2086  t96 = t39 * t50 * (1.0 / 2.0);
2087  t78 = t49 - t96;
2088  t79 = t51 - t52;
2089  t97 = t19 * t79 * (1.0 / 2.0);
2090  t80 = t56 - t97;
2091  t81 = t21 * t53 * t62 * (1.0 / 2.0);
2092  t99 = t39 * t57 * (1.0 / 2.0);
2093  t83 = t56 - t99;
2094  t84 = z[2 - 1] * (1.0 / 2.0);
2095  t86 = z[3 - 1] * (1.0 / 2.0);
2096  t87 = t84 + t86;
2097  t88 = t20 * t21 * t87 * (1.0 / 2.0);
2098  t90 = z[1 - 1] * (1.0 / 2.0);
2099  t91 = t84 + t90;
2100  t93 = t21 * t44 * t87 * (1.0 / 2.0);
2101  t94 = z[4 - 1] * (1.0 / 2.0);
2102  t95 = t86 + t94;
2103  t98 = t21 * t53 * t87 * (1.0 / 2.0);
2104  A0[0][0] = t22 * (t24 + t31 + t67 - t19 * t41 * (t17 - x[2 - 1] * 2.0) * (1.0 / 2.0)) - X_dot_d * t36 * t60;
2105  A0[0][1] = t22 * (t24 - t31 + t73 + t38 * t39 * t48 * (1.0 / 2.0)) + X_dot_d * t36 * t65;
2106  A0[0][2] = t22 * (t46 - t19 * t41 * (t42 - y[2 - 1] * 2.0) * (1.0 / 2.0)) - X_dot_d * t36 * t71;
2107  A0[0][3] = -t22 * (t46 - t39 * t48 * t50 * (1.0 / 2.0)) + X_dot_d * t36 * t78;
2108  A0[0][4] = t22 * (t55 - t19 * t41 * (t51 - z[2 - 1] * 2.0) * (1.0 / 2.0)) - X_dot_d * t36 * t80;
2109  A0[0][5] = -t22 * (t55 - t39 * t48 * t57 * (1.0 / 2.0)) + X_dot_d * t36 * t83;
2110  A0[1][0] = t22 * (t63 - t19 * t58 * t70 * (1.0 / 2.0)) - Y_dot_d * t36 * t60;
2111  A0[1][1] = -t22 * (t63 - t38 * t39 * t77 * (1.0 / 2.0)) + Y_dot_d * t36 * t65;
2112  A0[1][2] = t22 * (t24 + t67 + t74 - t19 * t68 * t70 * (1.0 / 2.0)) - Y_dot_d * t36 * t71;
2113  A0[1][3] = t22 * (t24 + t73 - t74 + t39 * t50 * t77 * (1.0 / 2.0)) + Y_dot_d * t36 * t78;
2114  A0[1][4] = t22 * (t81 - t19 * t70 * t79 * (1.0 / 2.0)) - Y_dot_d * t36 * t80;
2115  A0[1][5] = -t22 * (t81 - t39 * t57 * t77 * (1.0 / 2.0)) + Y_dot_d * t36 * t83;
2116  A0[2][0] = t22 * (t88 - t19 * t58 * t91 * (1.0 / 2.0)) - Z_dot_d * t36 * t60;
2117  A0[2][1] = -t22 * (t88 - t38 * t39 * t95 * (1.0 / 2.0)) + Z_dot_d * t36 * t65;
2118  A0[2][2] = t22 * (t93 - t19 * t68 * t91 * (1.0 / 2.0)) - Z_dot_d * t36 * t71;
2119  A0[2][3] = -t22 * (t93 - t39 * t50 * t95 * (1.0 / 2.0)) + Z_dot_d * t36 * t78;
2120  A0[2][4] = t22 * (t24 + t67 + t98 - t19 * t79 * t91 * (1.0 / 2.0)) - Z_dot_d * t36 * t80;
2121  A0[2][5] = t22 * (t24 + t73 - t98 + t39 * t57 * t95 * (1.0 / 2.0)) + Z_dot_d * t36 * t83;
2122 }
2123 
2124 void SurfCentroidConnec_ddf(const vector<double> &x, const vector<double> &y, const vector<double> &z,
2125  const double totD, const double X_dot_d, const double Y_dot_d, const double Z_dot_d,
2126  ArrayVec<double> &A0)
2127 {
2128  double t2, t3, t4, t5, t11, t6, t7, t8, t9, t10, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21, t22, t23, t24,
2129  t31, t25, t26, t27, t28, t29, t38, t30, t42, t32, t33, t34, t35, t36, t37, t39, t40, t41, t74, t43, t44, t45,
2130  t46, t47, t48, t49, t50, t53, t51, t52, t54, t55, t56, t57, t58, t59, t60, t61, t62, t63, t64, t65, t66, t67,
2131  t69, t68, t84, t70, t71, t72, t73, t75, t76, t77, t78, t83, t79, t80, t81, t97, t82, t85, t86, t87, t88, t89,
2132  t90, t91, t92, t93, t94, t95, t96, t98, t99, t100, t101, t102, t103, t105, t104, t106, t137, t107, t108, t112,
2133  t109, t110, t111, t113, t145, t114, t115, t116, t146, t117, t118, t119, t120, t125, t121, t122, t123, t152,
2134  t124, t126, t127, t128, t153, t129, t130, t154, t131, t135, t132, t133, t134, t139, t136, t138, t140, t141,
2135  t194, t142, t143, t144, t147, t148, t204, t149, t150, t157, t151, t155, t156, t158, t159, t160, t161, t162,
2136  t163, t164, t165, t166, t167, t168, t181, t169, t170, t171, t172, t254, t173, t174, t175, t176, t177, t178,
2137  t179, t180, t182, t183, t184, t185, t186, t187, t188, t189, t190, t191, t192, t193, t195, t196, t197, t198,
2138  t199, t200, t201, t202, t203, t205, t206, t207, t208, t209, t247, t210, t211, t212, t213, t214, t215, t216,
2139  t217, t218, t219, t220, t253, t221, t222, t223, t224, t225, t226, t227, t228, t229, t230, t231, t232, t233,
2140  t234, t235, t236, t237, t238, t239, t240, t241, t242, t243, t244, t245, t246, t248, t249, t250, t251, t252,
2141  t255, t256, t257, t258, t259, t260, t261, t262;
2142  t2 = x[2 - 1] - x[3 - 1];
2143  t3 = y[2 - 1] - y[3 - 1];
2144  t4 = z[2 - 1] - z[3 - 1];
2145  t5 = y[2 - 1] * 2.0;
2146  t11 = y[3 - 1] * 2.0;
2147  t6 = t5 - t11;
2148  t7 = t2 * t2;
2149  t8 = t3 * t3;
2150  t9 = t4 * t4;
2151  t10 = t7 + t8 + t9 + rsvsmath_automatic_eps_centre2;
2152  t12 = 1.0 / sqrt(rsvsmath_automatic_eps_centre + t10);
2153  t13 = x[3 - 1] - x[4 - 1];
2154  t14 = y[3 - 1] - y[4 - 1];
2155  t15 = z[3 - 1] - z[4 - 1];
2156  t16 = x[1 - 1] - x[2 - 1];
2157  t17 = y[1 - 1] - y[2 - 1];
2158  t18 = z[1 - 1] - z[2 - 1];
2159  t19 = x[2 - 1] * 2.0;
2160  t20 = x[2 - 1] * (1.0 / 2.0);
2161  t21 = t16 * t16;
2162  t22 = t17 * t17;
2163  t23 = t18 * t18;
2164  t24 = t21 + t22 + t23 + rsvsmath_automatic_eps_centre2;
2165  t31 = x[3 - 1] * 2.0;
2166  t25 = t19 - t31;
2167  t26 = x[3 - 1] * (1.0 / 2.0);
2168  t27 = t20 + t26;
2169  t28 = 1.0 / (totD * totD);
2170  t29 = 1.0 / sqrt(rsvsmath_automatic_eps_centre + t24);
2171  t38 = x[1 - 1] * 2.0;
2172  t30 = t19 - t38;
2173  t42 = y[4 - 1] * 2.0;
2174  t32 = t11 - t42;
2175  t33 = t13 * t13;
2176  t34 = t14 * t14;
2177  t35 = t15 * t15;
2178  t36 = t33 + t34 + t35 + rsvsmath_automatic_eps_centre2;
2179  t37 = 1.0 / sqrt(rsvsmath_automatic_eps_centre + t36);
2180  t39 = t29 * t30 * (1.0 / 2.0);
2181  t40 = t12 * t25 * (1.0 / 2.0);
2182  t41 = t6 * t12 * (1.0 / 2.0);
2183  t74 = t32 * t37 * (1.0 / 2.0);
2184  t43 = t41 - t74;
2185  t44 = t39 + t40;
2186  t45 = 1.0 / pow(t10, 3.0 / 2.0);
2187  t46 = 1.0 / totD;
2188  t47 = x[1 - 1] * (1.0 / 2.0);
2189  t48 = t20 + t47;
2190  t49 = z[1 - 1] * 2.0;
2191  t50 = z[2 - 1] * 2.0;
2192  t53 = z[3 - 1] * 2.0;
2193  t51 = t50 - t53;
2194  t52 = t49 - t50;
2195  t54 = sqrt(t24);
2196  t55 = t54 * (1.0 / 2.0);
2197  t56 = sqrt(t10);
2198  t57 = t56 * (1.0 / 2.0);
2199  t58 = t12 * t25 * t27 * (1.0 / 2.0);
2200  t59 = t29 * t30 * t48 * (1.0 / 2.0);
2201  t60 = t55 + t57 + t58 + t59;
2202  t61 = 1.0 / pow(t24, 3.0 / 2.0);
2203  t62 = 1.0 / (totD * totD * totD);
2204  t63 = t12 * t51 * (1.0 / 2.0);
2205  t64 = t12 * t51 * (1.0 / 4.0);
2206  t65 = t12 * t27 * t51 * (1.0 / 2.0);
2207  t66 = x[4 - 1] * (1.0 / 2.0);
2208  t67 = t26 + t66;
2209  t69 = z[4 - 1] * 2.0;
2210  t68 = t53 - t69;
2211  t84 = t37 * t68 * (1.0 / 2.0);
2212  t70 = t63 - t84;
2213  t71 = y[2 - 1] * (1.0 / 2.0);
2214  t72 = y[3 - 1] * (1.0 / 2.0);
2215  t73 = t71 + t72;
2216  t75 = y[1 - 1] * (1.0 / 2.0);
2217  t76 = t71 + t75;
2218  t77 = t29 * t30 * t76 * (1.0 / 2.0);
2219  t78 = t12 * t25 * t73 * (1.0 / 2.0);
2220  t83 = t29 * t52 * (1.0 / 2.0);
2221  t79 = t63 - t83;
2222  t80 = t77 + t78;
2223  t81 = t25 * t45 * t51 * (1.0 / 4.0);
2224  t97 = t30 * t52 * t61 * (1.0 / 4.0);
2225  t82 = t81 - t97;
2226  t85 = t12 * t51 * t73 * (1.0 / 2.0);
2227  t86 = y[4 - 1] * (1.0 / 2.0);
2228  t87 = t72 + t86;
2229  t88 = z[2 - 1] * (1.0 / 2.0);
2230  t89 = z[3 - 1] * (1.0 / 2.0);
2231  t90 = t88 + t89;
2232  t91 = t12 * t25 * (1.0 / 4.0);
2233  t92 = z[1 - 1] * (1.0 / 2.0);
2234  t93 = t88 + t92;
2235  t94 = t29 * t30 * t93 * (1.0 / 2.0);
2236  t95 = t12 * t25 * t90 * (1.0 / 2.0);
2237  t96 = t94 + t95;
2238  t98 = sqrt(t36);
2239  t99 = t98 * (1.0 / 2.0);
2240  t100 = t12 * t51 * t90 * (1.0 / 2.0);
2241  t101 = z[4 - 1] * (1.0 / 2.0);
2242  t102 = t89 + t101;
2243  t103 = t6 * t12 * (1.0 / 4.0);
2244  t105 = x[4 - 1] * 2.0;
2245  t104 = t31 - t105;
2246  t106 = t6 * t12 * t27 * (1.0 / 2.0);
2247  t137 = t32 * t37 * t67 * (1.0 / 2.0);
2248  t107 = t106 - t137;
2249  t108 = 1.0 / pow(t36, 3.0 / 2.0);
2250  t112 = t37 * t104 * (1.0 / 2.0);
2251  t109 = t40 - t112;
2252  t110 = t37 * t67 * t104 * (1.0 / 2.0);
2253  t111 = t57 - t58 + t99 + t110;
2254  t113 = t25 * t27 * t45 * t51 * (1.0 / 4.0);
2255  t145 = t37 * t67 * t68 * (1.0 / 2.0);
2256  t114 = t65 - t145;
2257  t115 = t6 * t25 * t45 * t73 * (1.0 / 4.0);
2258  t116 = t32 * t37 * t87 * (1.0 / 2.0);
2259  t146 = t6 * t12 * t73 * (1.0 / 2.0);
2260  t117 = t57 + t99 + t116 - t146;
2261  t118 = t6 * t25 * t45 * (1.0 / 4.0);
2262  t119 = t32 * t104 * t108 * (1.0 / 4.0);
2263  t120 = t118 + t119;
2264  t125 = t37 * t87 * t104 * (1.0 / 2.0);
2265  t121 = t78 - t125;
2266  t122 = t25 * t45 * t46 * t51 * t73 * (1.0 / 4.0);
2267  t123 = t25 * t45 * t51 * t73 * (1.0 / 4.0);
2268  t152 = t37 * t68 * t87 * (1.0 / 2.0);
2269  t124 = t85 - t152;
2270  t126 = t68 * t104 * t108 * (1.0 / 4.0);
2271  t127 = t81 + t126;
2272  t128 = t6 * t12 * t90 * (1.0 / 2.0);
2273  t153 = t32 * t37 * t102 * (1.0 / 2.0);
2274  t129 = t128 - t153;
2275  t130 = t25 * t45 * t51 * t90 * (1.0 / 4.0);
2276  t154 = t29 * t52 * t93 * (1.0 / 2.0);
2277  t131 = t55 + t57 + t100 - t154;
2278  t135 = t37 * t102 * t104 * (1.0 / 2.0);
2279  t132 = t95 - t135;
2280  t133 = t37 * t68 * t102 * (1.0 / 2.0);
2281  t134 = t57 + t99 - t100 + t133;
2282  t139 = y[1 - 1] * 2.0;
2283  t136 = t5 - t139;
2284  t138 = t6 * t6;
2285  t140 = t29 * t136 * (1.0 / 2.0);
2286  t141 = t41 + t140;
2287  t194 = t29 * t48 * t52 * (1.0 / 2.0);
2288  t142 = t65 - t194;
2289  t143 = t29 * t48 * t136 * (1.0 / 2.0);
2290  t144 = t106 + t143;
2291  t147 = t29 * t76 * (t5 - t139) * (1.0 / 2.0);
2292  t148 = t55 + t57 + t146 + t147;
2293  t204 = t29 * t52 * t76 * (1.0 / 2.0);
2294  t149 = t85 - t204;
2295  t150 = t6 * t45 * t51 * (1.0 / 4.0);
2296  t157 = t52 * t61 * t136 * (1.0 / 4.0);
2297  t151 = t150 - t157;
2298  t155 = t29 * t93 * t136 * (1.0 / 2.0);
2299  t156 = t128 + t155;
2300  t158 = t6 * t25 * t27 * t45 * (1.0 / 4.0);
2301  t159 = t29 * t48 * (t19 - t38) * (1.0 / 2.0);
2302  t160 = t55 + t57 + t58 + t159;
2303  t161 = t32 * t67 * t104 * t108 * (1.0 / 4.0);
2304  t162 = t103 + t158 + t161 - t32 * t37 * (1.0 / 4.0);
2305  t163 = t28 * t43 * t111;
2306  t164 = X_dot_d * t28 * t120;
2307  t165 = X_dot_d * t43 * t62 * t109 * 2.0;
2308  t166 = t163 + t164 + t165 - t46 * t162 - t28 * t107 * t109;
2309  t167 = t12 * t27;
2310  t168 = t167 - t27 * t45 * t138 * (1.0 / 4.0);
2311  t181 = t45 * t138 * (1.0 / 4.0);
2312  t169 = X_dot_d * t28 * (t12 - t181);
2313  t170 = t91 + t115;
2314  t171 = t46 * t170;
2315  t172 = t32 * t87 * t104 * t108 * (1.0 / 4.0);
2316  t254 = t37 * t104 * (1.0 / 4.0);
2317  t173 = t91 + t115 + t172 - t254;
2318  t174 = t28 * t109 * t117;
2319  t175 = Y_dot_d * t28 * t120;
2320  t176 = Y_dot_d * t43 * t62 * t109 * 2.0;
2321  t177 = t174 + t175 + t176 - t46 * t173 - t28 * t43 * t121;
2322  t178 = t12 * t73;
2323  t179 = t178 - t45 * t73 * t138 * (1.0 / 4.0);
2324  t180 = t28 * t43 * t148;
2325  t182 = t28 * t129 * (t39 + t40);
2326  t183 = t6 * t25 * t45 * t46 * t90 * (1.0 / 4.0);
2327  t184 = t6 * t25 * t45 * t90 * (1.0 / 4.0);
2328  t185 = t32 * t102 * t104 * t108 * (1.0 / 4.0);
2329  t186 = t184 + t185;
2330  t187 = Z_dot_d * t28 * t120;
2331  t188 = Z_dot_d * t43 * t62 * t109 * 2.0;
2332  t189 = t187 + t188 - t46 * t186 - t28 * t43 * t132 - t28 * t109 * t129;
2333  t190 = t12 * t90;
2334  t191 = t190 - t45 * t90 * t138 * (1.0 / 4.0);
2335  t192 = t28 * t129 * (t41 + t140);
2336  t193 = t30 * t48 * t52 * t61 * (1.0 / 4.0);
2337  t195 = X_dot_d * t28 * t82;
2338  t196 = t64 + t113;
2339  t197 = t46 * t196;
2340  t198 = t6 * t27 * t45 * t51 * (1.0 / 4.0);
2341  t199 = t198 - t48 * t52 * t61 * t136 * (1.0 / 4.0);
2342  t200 = X_dot_d * t28 * t151;
2343  t201 = X_dot_d * t62 * (t41 + t140) * (t63 - t83) * 2.0;
2344  t202 = t200 + t201 - t46 * t199 - t28 * t79 * t144 - t28 * t141 * t142;
2345  t203 = t123 - t30 * t52 * t61 * t76 * (1.0 / 4.0);
2346  t205 = Y_dot_d * t28 * t82;
2347  t206 = Y_dot_d * t62 * (t39 + t40) * (t63 - t83) * 2.0;
2348  t207 = t205 + t206 - t46 * t203 - t28 * t79 * t80 - t28 * t44 * t149;
2349  t208 = t28 * t121 * (t63 - t83);
2350  t209 = t52 * t61 * t76 * t136 * (1.0 / 4.0);
2351  t247 = t6 * t45 * t51 * t73 * (1.0 / 4.0);
2352  t210 = t46 * (t64 + t209 - t247 - t29 * t52 * (1.0 / 4.0));
2353  t211 = Y_dot_d * t28 * t151;
2354  t212 = Y_dot_d * t62 * (t41 + t140) * (t63 - t83) * 2.0;
2355  t213 = t210 + t211 + t212 - t28 * t79 * t148 - t28 * t141 * t149;
2356  t214 = t29 * t30 * (1.0 / 4.0);
2357  t215 = t30 * t52 * t61 * t93 * (1.0 / 4.0);
2358  t216 = Z_dot_d * t28 * t82;
2359  t217 = Z_dot_d * t62 * (t39 + t40) * (t63 - t83) * 2.0;
2360  t218 = t91 - t130;
2361  t219 = t28 * t109 * t131;
2362  t220 = t28 * t132 * (t63 - t83);
2363  t253 = Z_dot_d * t25 * t28 * t45 * t51 * (1.0 / 4.0);
2364  t221 = t219 + t220 - t253 - t46 * t218 - Z_dot_d * t62 * t79 * t109 * 2.0;
2365  t222 = t29 * t136 * (1.0 / 4.0);
2366  t223 = t52 * t61 * t93 * t136 * (1.0 / 4.0);
2367  t224 = t6 * t45 * t51 * t90 * (1.0 / 4.0);
2368  t225 = Z_dot_d * t28 * t151;
2369  t226 = Z_dot_d * t62 * (t41 + t140) * (t63 - t83) * 2.0;
2370  t227 = t28 * t70 * t160;
2371  t228 = t28 * t114 * (t39 + t40);
2372  t229 = t67 * t68 * t104 * t108 * (1.0 / 4.0);
2373  t230 = t64 + t113 + t229 - t37 * t68 * (1.0 / 4.0);
2374  t231 = t28 * t70 * t111;
2375  t232 = X_dot_d * t28 * t127;
2376  t233 = X_dot_d * t62 * t70 * t109 * 2.0;
2377  t234 = t231 + t232 + t233 - t46 * t230 - t28 * t109 * t114;
2378  t235 = t28 * t70 * (t106 + t143);
2379  t236 = t28 * t114 * (t41 + t140);
2380  t237 = t6 * t27 * t45 * t46 * t51 * (1.0 / 4.0);
2381  t238 = t235 + t236 + t237 - X_dot_d * t62 * t70 * t141 * 2.0 - X_dot_d * t6 * t28 * t45 * t51 * (1.0 / 4.0);
2382  t239 = t28 * t70 * (t77 + t78);
2383  t240 = t28 * t124 * (t39 + t40);
2384  t241 = t122 + t239 + t240 - Y_dot_d * t44 * t62 * t70 * 2.0 - Y_dot_d * t25 * t28 * t45 * t51 * (1.0 / 4.0);
2385  t242 = t68 * t87 * t104 * t108 * (1.0 / 4.0);
2386  t243 = t123 + t242;
2387  t244 = Y_dot_d * t28 * t127;
2388  t245 = Y_dot_d * t62 * t70 * t109 * 2.0;
2389  t246 = t244 + t245 - t46 * t243 - t28 * t70 * t121 - t28 * t109 * t124;
2390  t248 = t28 * t70 * t148;
2391  t249 = t28 * t124 * (t41 + t140);
2392  t250 = t91 + t130;
2393  t251 = t46 * t250;
2394  t252 = t28 * t70 * (t94 + t95);
2395  t255 = t68 * t102 * t104 * t108 * (1.0 / 4.0);
2396  t256 = t28 * t109 * t134;
2397  t257 = Z_dot_d * t28 * t127;
2398  t258 = Z_dot_d * t62 * t70 * t109 * 2.0;
2399  t259 = t103 + t224;
2400  t260 = t46 * t259;
2401  t261 = t28 * t70 * (t128 + t155);
2402  t262 = t260 + t261 - t28 * t134 * t141 - Z_dot_d * t62 * t70 * t141 * 2.0 -
2403  Z_dot_d * t6 * t28 * t45 * t51 * (1.0 / 4.0);
2404  A0[0][3] = -t46 * (t103 - t6 * t25 * t27 * t45 * (1.0 / 4.0)) + t28 * t43 * t60 + t28 * t44 * t107 -
2405  X_dot_d * t43 * t44 * t62 * 2.0 - X_dot_d * t6 * t25 * t28 * t45 * (1.0 / 4.0);
2406  A0[0][4] = t195 +
2407  t46 * (t64 + t193 - t29 * (t49 - z[2 - 1] * 2.0) * (1.0 / 4.0) - t25 * t27 * t45 * t51 * (1.0 / 4.0)) -
2408  t28 * t60 * t79 - t28 * t44 * t142 + X_dot_d * t62 * t79 * (t39 + t40) * 2.0;
2409  A0[0][5] = t227 + t228 - t46 * (t64 - t25 * t27 * t45 * t51 * (1.0 / 4.0)) - X_dot_d * t44 * t62 * t70 * 2.0 -
2410  X_dot_d * t25 * t28 * t45 * t51 * (1.0 / 4.0);
2411  A0[0][9] = t171 + t28 * t43 * t80 - t28 * t44 * t117 - Y_dot_d * t43 * t44 * t62 * 2.0 -
2412  Y_dot_d * t6 * t25 * t28 * t45 * (1.0 / 4.0);
2413  A0[0][10] = t207;
2414  A0[0][11] = t241;
2415  A0[0][15] =
2416  t182 + t183 + t28 * t43 * t96 - Z_dot_d * t43 * t44 * t62 * 2.0 - Z_dot_d * t6 * t25 * t28 * t45 * (1.0 / 4.0);
2417  A0[0][16] = t216 + t217 + t46 * (t91 + t214 + t215 - t25 * t45 * t51 * t90 * (1.0 / 4.0)) - t28 * t44 * t131 -
2418  t28 * t79 * t96;
2419  A0[0][17] = t251 + t252 - t28 * t44 * t134 - Z_dot_d * t44 * t62 * t70 * 2.0 -
2420  Z_dot_d * t25 * t28 * t45 * t51 * (1.0 / 4.0);
2421  A0[1][3] = t166;
2422  A0[1][4] = t197 - t28 * t79 * t111 + t28 * t109 * t142 - X_dot_d * t62 * t79 * t109 * 2.0 -
2423  X_dot_d * t25 * t28 * t45 * t51 * (1.0 / 4.0);
2424  A0[1][5] = t234;
2425  A0[1][9] = t177;
2426  A0[1][10] = t122 + t208 + t28 * t109 * t149 - Y_dot_d * t62 * t79 * t109 * 2.0 -
2427  Y_dot_d * t25 * t28 * t45 * t51 * (1.0 / 4.0);
2428  A0[1][11] = t246;
2429  A0[1][15] = t189;
2430  A0[1][16] = t221;
2431  A0[1][17] = t256 + t257 + t258 - t46 * (t91 + t130 + t255 - t37 * t104 * (1.0 / 4.0)) - t28 * t70 * t132;
2432  A0[2][3] = t169 - t46 * t168 + t28 * t43 * t144 + t28 * t107 * t141 - X_dot_d * t43 * t62 * t141 * 2.0;
2433  A0[2][4] = t202;
2434  A0[2][5] = t238;
2435  A0[2][9] = t180 - t46 * t179 + Y_dot_d * t28 * (t12 - t45 * t138 * (1.0 / 4.0)) - t28 * t117 * t141 -
2436  Y_dot_d * t43 * t62 * t141 * 2.0;
2437  A0[2][10] = t213;
2438  A0[2][11] = t248 + t249 - t46 * (t64 - t6 * t45 * t51 * t73 * (1.0 / 4.0)) - Y_dot_d * t62 * t70 * t141 * 2.0 -
2439  Y_dot_d * t6 * t28 * t45 * t51 * (1.0 / 4.0);
2440  A0[2][15] = t192 - t46 * t191 + Z_dot_d * t28 * (t12 - t45 * t138 * (1.0 / 4.0)) + t28 * t43 * t156 -
2441  Z_dot_d * t43 * t62 * t141 * 2.0;
2442  A0[2][16] = t225 + t226 + t46 * (t103 + t222 + t223 - t6 * t45 * t51 * t90 * (1.0 / 4.0)) - t28 * t79 * t156 -
2443  t28 * t131 * t141;
2444  A0[2][17] = t262;
2445  A0[3][0] = -t46 * (t103 - t158) + t28 * t107 * (t39 + t40) + t28 * t43 * t160 - X_dot_d * t43 * t44 * t62 * 2.0 -
2446  X_dot_d * t6 * t25 * t28 * t45 * (1.0 / 4.0);
2447  A0[3][1] = t166;
2448  A0[3][2] =
2449  t169 - t46 * t168 + t28 * t107 * (t41 + t140) + t28 * t43 * (t106 + t143) - X_dot_d * t43 * t62 * t141 * 2.0;
2450  A0[3][6] = t171 + t28 * t43 * (t77 + t78) - t28 * t44 * t117 - Y_dot_d * t43 * t44 * t62 * 2.0 -
2451  Y_dot_d * t6 * t25 * t28 * t45 * (1.0 / 4.0);
2452  A0[3][7] = t177;
2453  A0[3][8] = t180 - t46 * t179 - t28 * t117 * t141 + Y_dot_d * t28 * (t12 - t181) - Y_dot_d * t43 * t62 * t141 * 2.0;
2454  A0[3][12] = t182 + t183 + t28 * t43 * (t94 + t95) - Z_dot_d * t43 * t44 * t62 * 2.0 -
2455  Z_dot_d * t6 * t25 * t28 * t45 * (1.0 / 4.0);
2456  A0[3][13] = t189;
2457  A0[3][14] =
2458  t192 - t46 * t191 + t28 * t43 * (t128 + t155) + Z_dot_d * t28 * (t12 - t181) - Z_dot_d * t43 * t62 * t141 * 2.0;
2459  A0[4][0] = t195 + t46 * (t64 - t113 + t193 - t29 * t52 * (1.0 / 4.0)) - t28 * t44 * t142 - t28 * t79 * t160 +
2460  X_dot_d * t62 * (t39 + t40) * (t63 - t83) * 2.0;
2461  A0[4][1] = t197 - t28 * t79 * t111 + t28 * t109 * (t65 - t194) - X_dot_d * t62 * t79 * t109 * 2.0 -
2462  X_dot_d * t25 * t28 * t45 * t51 * (1.0 / 4.0);
2463  A0[4][2] = t202;
2464  A0[4][6] = t207;
2465  A0[4][7] = t122 + t208 + t28 * t109 * (t85 - t204) - Y_dot_d * t62 * t79 * t109 * 2.0 -
2466  Y_dot_d * t25 * t28 * t45 * t51 * (1.0 / 4.0);
2467  A0[4][8] = t213;
2468  A0[4][12] = t216 + t217 + t46 * (t91 - t130 + t214 + t215) - t28 * t44 * t131 - t28 * t79 * t96;
2469  A0[4][13] = t221;
2470  A0[4][14] = t225 + t226 + t46 * (t103 + t222 + t223 - t224) - t28 * t79 * t156 - t28 * t131 * t141;
2471  A0[5][0] = t227 + t228 - t46 * (t64 - t113) - X_dot_d * t44 * t62 * t70 * 2.0 -
2472  X_dot_d * t25 * t28 * t45 * t51 * (1.0 / 4.0);
2473  A0[5][1] = t234;
2474  A0[5][2] = t238;
2475  A0[5][6] = t241;
2476  A0[5][7] = t246;
2477  A0[5][8] = t248 + t249 - t46 * (t64 - t247) - Y_dot_d * t62 * t70 * t141 * 2.0 -
2478  Y_dot_d * t6 * t28 * t45 * t51 * (1.0 / 4.0);
2479  A0[5][12] = t251 + t252 - t253 - t28 * t44 * t134 - Z_dot_d * t44 * t62 * t70 * 2.0;
2480  A0[5][13] = t256 + t257 + t258 - t46 * (t91 + t130 - t254 + t255) - t28 * t70 * t132;
2481  A0[5][14] = t262;
2482 }
2483 
2484 void SurfCentroidNoConnec_f(const vector<double> &x, const vector<double> &y, const vector<double> &z,
2485  const double totD, const double X_dot_d, const double Y_dot_d, const double Z_dot_d,
2486  ArrayVec<double> &A0)
2487 {
2488  double t2;
2489  t2 = 1.0 / totD;
2490  A0[0][0] = X_dot_d * t2;
2491  A0[0][1] = Y_dot_d * t2;
2492  A0[0][2] = Z_dot_d * t2;
2493 }
2494 
2495 void SurfCentroidNoConnec_df(const vector<double> &x, const vector<double> &y, const vector<double> &z,
2496  const double totD, const double X_dot_d, const double Y_dot_d, const double Z_dot_d,
2497  ArrayVec<double> &A0)
2498 {
2499  double t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t65, t20, t21, t22, t23,
2500  t24, t25, t26, t27, t28, t29, t30, t31, t32, t33, t34, t35, t36, t37, t38, t39, t40, t41, t70, t42, t43, t44,
2501  t45, t46, t47, t48, t49, t81, t50, t51, t52, t53, t54, t55, t56, t93, t57, t58, t59, t99, t60, t61, t62, t103,
2502  t63, t64, t66, t67, t107, t68, t69, t71, t72, t109, t73, t74, t75, t76, t77, t78, t79, t80, t82, t83, t84, t114,
2503  t85, t86, t87, t88, t89, t90, t91, t92, t94, t95, t96, t119, t97, t98, t100, t120, t101, t102, t104, t121, t105,
2504  t106, t108, t110, t111, t112, t113, t115, t116, t117, t118;
2505  t2 = x[1 - 1] - x[2 - 1];
2506  t3 = y[1 - 1] - y[2 - 1];
2507  t4 = z[1 - 1] - z[2 - 1];
2508  t5 = x[2 - 1] - x[3 - 1];
2509  t6 = y[2 - 1] - y[3 - 1];
2510  t7 = z[2 - 1] - z[3 - 1];
2511  t8 = t2 * t2;
2512  t9 = t3 * t3;
2513  t10 = t4 * t4;
2514  t11 = t8 + t9 + t10;
2515  t12 = x[2 - 1] * (1.0 / 2.0);
2516  t13 = t5 * t5;
2517  t14 = t6 * t6;
2518  t15 = t7 * t7;
2519  t16 = t13 + t14 + t15;
2520  t17 = x[1 - 1] * 2.0;
2521  t18 = x[2 - 1] * 2.0;
2522  t19 = 1.0 / sqrt(rsvsmath_automatic_eps_centre + t11);
2523  t65 = x[3 - 1] * 2.0;
2524  t20 = t18 - t65;
2525  t21 = 1.0 / sqrt(rsvsmath_automatic_eps_centre + t16);
2526  t22 = 1.0 / totD;
2527  t23 = x[5 - 1] - x[6 - 1];
2528  t24 = y[5 - 1] - y[6 - 1];
2529  t25 = z[5 - 1] - z[6 - 1];
2530  t26 = x[6 - 1] - x[7 - 1];
2531  t27 = y[6 - 1] - y[7 - 1];
2532  t28 = z[6 - 1] - z[7 - 1];
2533  t29 = t23 * t23;
2534  t30 = t24 * t24;
2535  t31 = t25 * t25;
2536  t32 = t29 + t30 + t31;
2537  t33 = x[6 - 1] * (1.0 / 2.0);
2538  t34 = t26 * t26;
2539  t35 = t27 * t27;
2540  t36 = t28 * t28;
2541  t37 = t34 + t35 + t36;
2542  t38 = 1.0 / (totD * totD);
2543  t39 = x[5 - 1] * 2.0;
2544  t40 = x[6 - 1] * 2.0;
2545  t41 = 1.0 / sqrt(rsvsmath_automatic_eps_centre + t32);
2546  t70 = x[7 - 1] * 2.0;
2547  t42 = t40 - t70;
2548  t43 = 1.0 / sqrt(rsvsmath_automatic_eps_centre + t37);
2549  t44 = x[1 - 1] * (1.0 / 2.0);
2550  t45 = t12 + t44;
2551  t46 = x[3 - 1] * (1.0 / 2.0);
2552  t47 = t12 + t46;
2553  t48 = y[1 - 1] * 2.0;
2554  t49 = y[2 - 1] * 2.0;
2555  t81 = y[3 - 1] * 2.0;
2556  t50 = t49 - t81;
2557  t51 = x[5 - 1] * (1.0 / 2.0);
2558  t52 = t33 + t51;
2559  t53 = x[7 - 1] * (1.0 / 2.0);
2560  t54 = t33 + t53;
2561  t55 = y[5 - 1] * 2.0;
2562  t56 = y[6 - 1] * 2.0;
2563  t93 = y[7 - 1] * 2.0;
2564  t57 = t56 - t93;
2565  t58 = z[1 - 1] * 2.0;
2566  t59 = z[2 - 1] * 2.0;
2567  t99 = z[3 - 1] * 2.0;
2568  t60 = t59 - t99;
2569  t61 = z[5 - 1] * 2.0;
2570  t62 = z[6 - 1] * 2.0;
2571  t103 = z[7 - 1] * 2.0;
2572  t63 = t62 - t103;
2573  t64 = t17 - t18;
2574  t66 = y[2 - 1] * (1.0 / 2.0);
2575  t67 = t20 * t21 * (1.0 / 2.0);
2576  t107 = t19 * t64 * (1.0 / 2.0);
2577  t68 = t67 - t107;
2578  t69 = t39 - t40;
2579  t71 = y[6 - 1] * (1.0 / 2.0);
2580  t72 = t42 * t43 * (1.0 / 2.0);
2581  t109 = t41 * t69 * (1.0 / 2.0);
2582  t73 = t72 - t109;
2583  t74 = sqrt(t11);
2584  t75 = t74 * (1.0 / 2.0);
2585  t76 = sqrt(t16);
2586  t77 = t76 * (1.0 / 2.0);
2587  t78 = t48 - t49;
2588  t79 = y[1 - 1] * (1.0 / 2.0);
2589  t80 = t66 + t79;
2590  t82 = y[3 - 1] * (1.0 / 2.0);
2591  t83 = t66 + t82;
2592  t84 = t21 * t50 * (1.0 / 2.0);
2593  t114 = t19 * t78 * (1.0 / 2.0);
2594  t85 = t84 - t114;
2595  t86 = sqrt(t32);
2596  t87 = t86 * (1.0 / 2.0);
2597  t88 = sqrt(t37);
2598  t89 = t88 * (1.0 / 2.0);
2599  t90 = t55 - t56;
2600  t91 = y[5 - 1] * (1.0 / 2.0);
2601  t92 = t71 + t91;
2602  t94 = y[7 - 1] * (1.0 / 2.0);
2603  t95 = t71 + t94;
2604  t96 = t43 * t57 * (1.0 / 2.0);
2605  t119 = t41 * t90 * (1.0 / 2.0);
2606  t97 = t96 - t119;
2607  t98 = t58 - t59;
2608  t100 = t21 * t60 * (1.0 / 2.0);
2609  t120 = t19 * t98 * (1.0 / 2.0);
2610  t101 = t100 - t120;
2611  t102 = t61 - t62;
2612  t104 = t43 * t63 * (1.0 / 2.0);
2613  t121 = t41 * t102 * (1.0 / 2.0);
2614  t105 = t104 - t121;
2615  t106 = z[2 - 1] * (1.0 / 2.0);
2616  t108 = z[6 - 1] * (1.0 / 2.0);
2617  t110 = z[1 - 1] * (1.0 / 2.0);
2618  t111 = t106 + t110;
2619  t112 = z[3 - 1] * (1.0 / 2.0);
2620  t113 = t106 + t112;
2621  t115 = z[5 - 1] * (1.0 / 2.0);
2622  t116 = t108 + t115;
2623  t117 = z[7 - 1] * (1.0 / 2.0);
2624  t118 = t108 + t117;
2625  A0[0][0] = t22 * (t75 + t77 + t20 * t21 * t47 * (1.0 / 2.0) - t19 * t45 * (t17 - x[2 - 1] * 2.0) * (1.0 / 2.0)) -
2626  X_dot_d * t38 * t68;
2627  A0[0][1] = t22 * (t87 + t89 + t42 * t43 * t54 * (1.0 / 2.0) - t41 * t52 * (t39 - x[6 - 1] * 2.0) * (1.0 / 2.0)) -
2628  X_dot_d * t38 * t73;
2629  A0[0][2] =
2630  t22 * (t21 * t47 * t50 * (1.0 / 2.0) - t19 * t45 * (t48 - y[2 - 1] * 2.0) * (1.0 / 2.0)) - X_dot_d * t38 * t85;
2631  A0[0][3] =
2632  t22 * (t43 * t54 * t57 * (1.0 / 2.0) - t41 * t52 * (t55 - y[6 - 1] * 2.0) * (1.0 / 2.0)) - X_dot_d * t38 * t97;
2633  A0[0][4] =
2634  t22 * (t21 * t47 * t60 * (1.0 / 2.0) - t19 * t45 * (t58 - z[2 - 1] * 2.0) * (1.0 / 2.0)) - X_dot_d * t38 * t101;
2635  A0[0][5] =
2636  t22 * (t43 * t54 * t63 * (1.0 / 2.0) - t41 * t52 * (t61 - z[6 - 1] * 2.0) * (1.0 / 2.0)) - X_dot_d * t38 * t105;
2637  A0[1][0] = t22 * (t20 * t21 * t83 * (1.0 / 2.0) - t19 * t64 * t80 * (1.0 / 2.0)) - Y_dot_d * t38 * t68;
2638  A0[1][1] = t22 * (t42 * t43 * t95 * (1.0 / 2.0) - t41 * t69 * t92 * (1.0 / 2.0)) - Y_dot_d * t38 * t73;
2639  A0[1][2] = t22 * (t75 + t77 + t21 * t50 * t83 * (1.0 / 2.0) - t19 * t78 * t80 * (1.0 / 2.0)) - Y_dot_d * t38 * t85;
2640  A0[1][3] = t22 * (t87 + t89 + t43 * t57 * t95 * (1.0 / 2.0) - t41 * t90 * t92 * (1.0 / 2.0)) - Y_dot_d * t38 * t97;
2641  A0[1][4] = t22 * (t21 * t60 * t83 * (1.0 / 2.0) - t19 * t80 * t98 * (1.0 / 2.0)) - Y_dot_d * t38 * t101;
2642  A0[1][5] = t22 * (t43 * t63 * t95 * (1.0 / 2.0) - t41 * t92 * t102 * (1.0 / 2.0)) - Y_dot_d * t38 * t105;
2643  A0[2][0] = t22 * (t20 * t21 * t113 * (1.0 / 2.0) - t19 * t64 * t111 * (1.0 / 2.0)) - Z_dot_d * t38 * t68;
2644  A0[2][1] = t22 * (t42 * t43 * t118 * (1.0 / 2.0) - t41 * t69 * t116 * (1.0 / 2.0)) - Z_dot_d * t38 * t73;
2645  A0[2][2] = t22 * (t21 * t50 * t113 * (1.0 / 2.0) - t19 * t78 * t111 * (1.0 / 2.0)) - Z_dot_d * t38 * t85;
2646  A0[2][3] = t22 * (t43 * t57 * t118 * (1.0 / 2.0) - t41 * t90 * t116 * (1.0 / 2.0)) - Z_dot_d * t38 * t97;
2647  A0[2][4] =
2648  t22 * (t75 + t77 + t21 * t60 * t113 * (1.0 / 2.0) - t19 * t98 * t111 * (1.0 / 2.0)) - Z_dot_d * t38 * t101;
2649  A0[2][5] =
2650  t22 * (t87 + t89 + t43 * t63 * t118 * (1.0 / 2.0) - t41 * t102 * t116 * (1.0 / 2.0)) - Z_dot_d * t38 * t105;
2651 }
2652 
2653 void SurfCentroidNoConnec_ddf(const vector<double> &x, const vector<double> &y, const vector<double> &z,
2654  const double totD, const double X_dot_d, const double Y_dot_d, const double Z_dot_d,
2655  ArrayVec<double> &A0)
2656 {
2657  double t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21, t22, t23, t24,
2658  t25, t26, t44, t27, t28, t29, t30, t31, t32, t33, t34, t35, t36, t47, t37, t38, t39, t40, t41, t42, t43, t45,
2659  t46, t48, t49, t50, t51, t52, t53, t54, t57, t55, t56, t58, t59, t60, t61, t62, t63, t64, t65, t66, t90, t67,
2660  t70, t68, t191, t69, t71, t72, t73, t74, t75, t76, t79, t77, t78, t80, t81, t82, t84, t83, t85, t86, t87, t88,
2661  t89, t91, t92, t93, t94, t101, t95, t196, t96, t97, t98, t99, t100, t102, t103, t104, t105, t106, t107, t108,
2662  t109, t110, t111, t112, t113, t114, t115, t116, t208, t117, t118, t119, t122, t120, t121, t123, t165, t124,
2663  t125, t126, t127, t131, t128, t129, t134, t130, t132, t171, t133, t135, t174, t136, t137, t175, t138, t139,
2664  t140, t141, t142, t179, t143, t144, t148, t145, t146, t184, t147, t149, t150, t151, t152, t185, t153, t154,
2665  t186, t155, t156, t161, t157, t158, t159, t189, t160, t162, t163, t168, t164, t166, t167, t170, t169, t172,
2666  t195, t173, t176, t177, t183, t178, t180, t181, t182, t187, t190, t188, t192, t193, t194, t197, t198, t199,
2667  t200, t281, t201, t202, t203, t204, t205, t206, t207, t209, t210, t211, t212, t213, t214, t215, t216, t217,
2668  t218, t219, t220, t221, t240, t222, t223, t224, t225, t226, t227, t228, t229, t230, t231, t232, t233, t234,
2669  t235, t236, t237, t238, t239, t241, t242, t243, t244, t245, t246, t247, t248, t249, t250, t251, t252, t253,
2670  t254, t255, t256, t257, t258, t259, t260, t261, t262, t263, t264, t265, t266, t267, t268, t269, t270, t271,
2671  t272, t273, t274, t275, t276, t277, t278, t279, t280, t282, t283, t284, t285, t286, t287, t288, t289;
2672  t2 = x[5 - 1] - x[6 - 1];
2673  t3 = y[5 - 1] - y[6 - 1];
2674  t4 = z[5 - 1] - z[6 - 1];
2675  t5 = x[6 - 1] - x[7 - 1];
2676  t6 = y[6 - 1] - y[7 - 1];
2677  t7 = z[6 - 1] - z[7 - 1];
2678  t8 = x[1 - 1] - x[2 - 1];
2679  t9 = y[1 - 1] - y[2 - 1];
2680  t10 = z[1 - 1] - z[2 - 1];
2681  t11 = x[2 - 1] - x[3 - 1];
2682  t12 = y[2 - 1] - y[3 - 1];
2683  t13 = z[2 - 1] - z[3 - 1];
2684  t14 = t8 * t8;
2685  t15 = t9 * t9;
2686  t16 = t10 * t10;
2687  t17 = t14 + t15 + t16;
2688  t18 = x[2 - 1] * (1.0 / 2.0);
2689  t19 = t11 * t11;
2690  t20 = t12 * t12;
2691  t21 = t13 * t13;
2692  t22 = t19 + t20 + t21;
2693  t23 = 1.0 / (totD * totD);
2694  t24 = x[1 - 1] * 2.0;
2695  t25 = x[2 - 1] * 2.0;
2696  t26 = 1.0 / sqrt(rsvsmath_automatic_eps_centre + t17);
2697  t44 = x[3 - 1] * 2.0;
2698  t27 = t25 - t44;
2699  t28 = 1.0 / sqrt(rsvsmath_automatic_eps_centre + t22);
2700  t29 = y[5 - 1] * 2.0;
2701  t30 = y[6 - 1] * 2.0;
2702  t31 = t2 * t2;
2703  t32 = t3 * t3;
2704  t33 = t4 * t4;
2705  t34 = t31 + t32 + t33;
2706  t35 = 1.0 / sqrt(rsvsmath_automatic_eps_centre + t34);
2707  t36 = x[6 - 1] * (1.0 / 2.0);
2708  t47 = y[7 - 1] * 2.0;
2709  t37 = t30 - t47;
2710  t38 = t5 * t5;
2711  t39 = t6 * t6;
2712  t40 = t7 * t7;
2713  t41 = t38 + t39 + t40;
2714  t42 = 1.0 / sqrt(rsvsmath_automatic_eps_centre + t41);
2715  t43 = t24 - t25;
2716  t45 = t27 * t28 * (1.0 / 2.0);
2717  t46 = t29 - t30;
2718  t48 = t37 * t42 * (1.0 / 2.0);
2719  t49 = x[1 - 1] * (1.0 / 2.0);
2720  t50 = t18 + t49;
2721  t51 = z[1 - 1] * 2.0;
2722  t52 = z[2 - 1] * 2.0;
2723  t53 = x[3 - 1] * (1.0 / 2.0);
2724  t54 = t18 + t53;
2725  t57 = z[3 - 1] * 2.0;
2726  t55 = t52 - t57;
2727  t56 = t51 - t52;
2728  t58 = sqrt(t17);
2729  t59 = t58 * (1.0 / 2.0);
2730  t60 = sqrt(t22);
2731  t61 = t60 * (1.0 / 2.0);
2732  t62 = t27 * t28 * t54 * (1.0 / 2.0);
2733  t63 = 1.0 / pow(t17, 3.0 / 2.0);
2734  t64 = 1.0 / pow(t22, 3.0 / 2.0);
2735  t65 = 1.0 / (totD * totD * totD);
2736  t66 = t26 * t56 * (1.0 / 2.0);
2737  t90 = t28 * t55 * (1.0 / 2.0);
2738  t67 = t66 - t90;
2739  t70 = t26 * t43 * (1.0 / 2.0);
2740  t68 = t45 - t70;
2741  t191 = t26 * t43 * t50 * (1.0 / 2.0);
2742  t69 = t59 + t61 + t62 - t191;
2743  t71 = x[5 - 1] * (1.0 / 2.0);
2744  t72 = t36 + t71;
2745  t73 = z[5 - 1] * 2.0;
2746  t74 = z[6 - 1] * 2.0;
2747  t75 = x[7 - 1] * (1.0 / 2.0);
2748  t76 = t36 + t75;
2749  t79 = z[7 - 1] * 2.0;
2750  t77 = t74 - t79;
2751  t78 = t73 - t74;
2752  t80 = t42 * t77 * (1.0 / 2.0);
2753  t81 = y[6 - 1] * (1.0 / 2.0);
2754  t82 = y[2 - 1] * (1.0 / 2.0);
2755  t84 = t35 * t46 * (1.0 / 2.0);
2756  t83 = t48 - t84;
2757  t85 = 1.0 / totD;
2758  t86 = y[1 - 1] * (1.0 / 2.0);
2759  t87 = t82 + t86;
2760  t88 = y[3 - 1] * (1.0 / 2.0);
2761  t89 = t82 + t88;
2762  t91 = t27 * t28 * t89 * (1.0 / 2.0);
2763  t92 = t43 * t56 * t63 * (1.0 / 4.0);
2764  t93 = t27 * t55 * t64 * (1.0 / 4.0);
2765  t94 = t92 + t93;
2766  t101 = t35 * t78 * (1.0 / 2.0);
2767  t95 = t80 - t101;
2768  t196 = t26 * t43 * t87 * (1.0 / 2.0);
2769  t96 = t91 - t196;
2770  t97 = y[5 - 1] * (1.0 / 2.0);
2771  t98 = t81 + t97;
2772  t99 = y[7 - 1] * (1.0 / 2.0);
2773  t100 = t81 + t99;
2774  t102 = z[2 - 1] * (1.0 / 2.0);
2775  t103 = z[6 - 1] * (1.0 / 2.0);
2776  t104 = z[1 - 1] * (1.0 / 2.0);
2777  t105 = t102 + t104;
2778  t106 = z[3 - 1] * (1.0 / 2.0);
2779  t107 = t102 + t106;
2780  t108 = t27 * t28 * t107 * (1.0 / 2.0);
2781  t109 = sqrt(t34);
2782  t110 = t109 * (1.0 / 2.0);
2783  t111 = sqrt(t41);
2784  t112 = t111 * (1.0 / 2.0);
2785  t113 = z[5 - 1] * (1.0 / 2.0);
2786  t114 = t103 + t113;
2787  t115 = z[7 - 1] * (1.0 / 2.0);
2788  t116 = t103 + t115;
2789  t208 = t26 * t43 * t105 * (1.0 / 2.0);
2790  t117 = t108 - t208;
2791  t118 = x[5 - 1] * 2.0;
2792  t119 = x[6 - 1] * 2.0;
2793  t122 = x[7 - 1] * 2.0;
2794  t120 = t119 - t122;
2795  t121 = t118 - t119;
2796  t123 = t35 * t46 * t72 * (1.0 / 2.0);
2797  t165 = t37 * t42 * t76 * (1.0 / 2.0);
2798  t124 = t123 - t165;
2799  t125 = 1.0 / pow(t34, 3.0 / 2.0);
2800  t126 = 1.0 / pow(t41, 3.0 / 2.0);
2801  t127 = t35 * t121 * (1.0 / 2.0);
2802  t131 = t42 * t120 * (1.0 / 2.0);
2803  t128 = t127 - t131;
2804  t129 = t42 * t76 * t120 * (1.0 / 2.0);
2805  t134 = t35 * t72 * t121 * (1.0 / 2.0);
2806  t130 = t110 + t112 + t129 - t134;
2807  t132 = t26 * t50 * t56 * (1.0 / 2.0);
2808  t171 = t28 * t54 * t55 * (1.0 / 2.0);
2809  t133 = t132 - t171;
2810  t135 = t35 * t72 * t78 * (1.0 / 2.0);
2811  t174 = t42 * t76 * t77 * (1.0 / 2.0);
2812  t136 = t135 - t174;
2813  t137 = t37 * t42 * t100 * (1.0 / 2.0);
2814  t175 = t35 * t46 * t98 * (1.0 / 2.0);
2815  t138 = t110 + t112 + t137 - t175;
2816  t139 = t46 * t121 * t125 * (1.0 / 4.0);
2817  t140 = t37 * t120 * t126 * (1.0 / 4.0);
2818  t141 = t139 + t140;
2819  t142 = t26 * t56 * t87 * (1.0 / 2.0);
2820  t179 = t28 * t55 * t89 * (1.0 / 2.0);
2821  t143 = t142 - t179;
2822  t144 = t35 * t98 * t121 * (1.0 / 2.0);
2823  t148 = t42 * t100 * t120 * (1.0 / 2.0);
2824  t145 = t144 - t148;
2825  t146 = t35 * t78 * t98 * (1.0 / 2.0);
2826  t184 = t42 * t77 * t100 * (1.0 / 2.0);
2827  t147 = t146 - t184;
2828  t149 = t78 * t121 * t125 * (1.0 / 4.0);
2829  t150 = t77 * t120 * t126 * (1.0 / 4.0);
2830  t151 = t149 + t150;
2831  t152 = t35 * t46 * t114 * (1.0 / 2.0);
2832  t185 = t37 * t42 * t116 * (1.0 / 2.0);
2833  t153 = t152 - t185;
2834  t154 = t28 * t55 * t107 * (1.0 / 2.0);
2835  t186 = t26 * t56 * t105 * (1.0 / 2.0);
2836  t155 = t59 + t61 + t154 - t186;
2837  t156 = t35 * t114 * t121 * (1.0 / 2.0);
2838  t161 = t42 * t116 * t120 * (1.0 / 2.0);
2839  t157 = t156 - t161;
2840  t158 = t35 * t121 * (1.0 / 4.0);
2841  t159 = t42 * t77 * t116 * (1.0 / 2.0);
2842  t189 = t35 * t78 * t114 * (1.0 / 2.0);
2843  t160 = t110 + t112 + t159 - t189;
2844  t162 = y[1 - 1] * 2.0;
2845  t163 = y[2 - 1] * 2.0;
2846  t168 = y[3 - 1] * 2.0;
2847  t164 = t163 - t168;
2848  t166 = t162 - t163;
2849  t167 = t26 * t166 * (1.0 / 2.0);
2850  t170 = t28 * t164 * (1.0 / 2.0);
2851  t169 = t167 - t170;
2852  t172 = t28 * t54 * t164 * (1.0 / 2.0);
2853  t195 = t26 * t50 * t166 * (1.0 / 2.0);
2854  t173 = t172 - t195;
2855  t176 = t26 * t56 * (1.0 / 4.0);
2856  t177 = t28 * t89 * t164 * (1.0 / 2.0);
2857  t183 = t26 * t87 * t166 * (1.0 / 2.0);
2858  t178 = t59 + t61 + t177 - t183;
2859  t180 = t56 * t63 * t166 * (1.0 / 4.0);
2860  t181 = t55 * t64 * t164 * (1.0 / 4.0);
2861  t182 = t180 + t181;
2862  t187 = t26 * t105 * t166 * (1.0 / 2.0);
2863  t190 = t28 * t107 * t164 * (1.0 / 2.0);
2864  t188 = t187 - t190;
2865  t192 = t35 * t46 * (1.0 / 4.0);
2866  t193 = t37 * t76 * t120 * t126 * (1.0 / 4.0);
2867  t194 = X_dot_d * t23 * t141;
2868  t197 = Y_dot_d * t65 * (t45 - t70) * (t48 - t84) * 2.0;
2869  t198 = t197 - t23 * t83 * t96 - t23 * t68 * t138;
2870  t199 = t46 * t98 * t121 * t125 * (1.0 / 4.0);
2871  t200 = t37 * t100 * t120 * t126 * (1.0 / 4.0);
2872  t281 = t42 * t120 * (1.0 / 4.0);
2873  t201 = t158 + t199 + t200 - t281;
2874  t202 = t23 * t128 * t138;
2875  t203 = t23 * t145 * (t48 - t84);
2876  t204 = Y_dot_d * t23 * t141;
2877  t205 = t202 + t203 + t204 - t85 * t201 - Y_dot_d * t65 * t83 * t128 * 2.0;
2878  t206 = t23 * t138 * t169;
2879  t207 = t206 - t23 * t83 * t178 - Y_dot_d * t65 * t83 * t169 * 2.0;
2880  t209 = t23 * t153 * (t45 - t70);
2881  t210 = Z_dot_d * t65 * (t45 - t70) * (t48 - t84) * 2.0;
2882  t211 = t209 + t210 - t23 * t83 * t117;
2883  t212 = t46 * t114 * t121 * t125 * (1.0 / 4.0);
2884  t213 = t37 * t116 * t120 * t126 * (1.0 / 4.0);
2885  t214 = t212 + t213;
2886  t215 = t23 * t157 * (t48 - t84);
2887  t216 = Z_dot_d * t23 * t141;
2888  t217 = t215 + t216 - t85 * t214 - t23 * t128 * t153 - Z_dot_d * t65 * t83 * t128 * 2.0;
2889  t218 = t23 * t188 * (t48 - t84);
2890  t219 = t218 - t23 * t153 * t169 - Z_dot_d * t65 * t83 * t169 * 2.0;
2891  t220 = t43 * t50 * t56 * t63 * (1.0 / 4.0);
2892  t221 = t27 * t54 * t55 * t64 * (1.0 / 4.0);
2893  t240 = t28 * t55 * (1.0 / 4.0);
2894  t222 = t176 + t220 + t221 - t240;
2895  t223 = t23 * t67 * t69;
2896  t224 = X_dot_d * t23 * t94;
2897  t225 = t23 * t67 * t130;
2898  t226 = X_dot_d * t65 * t67 * t128 * 2.0;
2899  t227 = t225 + t226 - t23 * t128 * t133;
2900  t228 = t50 * t56 * t63 * t166 * (1.0 / 4.0);
2901  t229 = t54 * t55 * t64 * t164 * (1.0 / 4.0);
2902  t230 = t228 + t229;
2903  t231 = X_dot_d * t23 * t182;
2904  t232 = X_dot_d * t65 * t67 * t169 * 2.0;
2905  t233 = t43 * t56 * t63 * t87 * (1.0 / 4.0);
2906  t234 = t27 * t55 * t64 * t89 * (1.0 / 4.0);
2907  t235 = t233 + t234;
2908  t236 = t23 * t143 * (t45 - t70);
2909  t237 = Y_dot_d * t23 * t94;
2910  t238 = Y_dot_d * t65 * t67 * t128 * 2.0;
2911  t239 = t238 - t23 * t67 * t145 - t23 * t128 * t143;
2912  t241 = t56 * t63 * t87 * t166 * (1.0 / 4.0);
2913  t242 = t55 * t64 * t89 * t164 * (1.0 / 4.0);
2914  t243 = t23 * t67 * t178;
2915  t244 = Y_dot_d * t23 * t182;
2916  t245 = Y_dot_d * t65 * t67 * t169 * 2.0;
2917  t246 = t26 * t43 * (1.0 / 4.0);
2918  t247 = t43 * t56 * t63 * t105 * (1.0 / 4.0);
2919  t248 = t27 * t55 * t64 * t107 * (1.0 / 4.0);
2920  t249 = t246 + t247 + t248 - t27 * t28 * (1.0 / 4.0);
2921  t250 = Z_dot_d * t23 * t94;
2922  t251 = t23 * t128 * t155;
2923  t252 = Z_dot_d * t65 * t67 * t128 * 2.0;
2924  t253 = t251 + t252 - t23 * t67 * t157;
2925  t254 = t26 * t166 * (1.0 / 4.0);
2926  t255 = t56 * t63 * t105 * t166 * (1.0 / 4.0);
2927  t256 = t55 * t64 * t107 * t164 * (1.0 / 4.0);
2928  t257 = t254 + t255 + t256 - t28 * t164 * (1.0 / 4.0);
2929  t258 = t23 * t155 * t169;
2930  t259 = Z_dot_d * t23 * t182;
2931  t260 = Z_dot_d * t65 * t67 * t169 * 2.0;
2932  t261 = t258 + t259 + t260 - t85 * t257 - t23 * t67 * t188;
2933  t262 = t35 * t78 * (1.0 / 4.0);
2934  t263 = t72 * t78 * t121 * t125 * (1.0 / 4.0);
2935  t264 = t76 * t77 * t120 * t126 * (1.0 / 4.0);
2936  t265 = t262 + t263 + t264 - t42 * t77 * (1.0 / 4.0);
2937  t266 = X_dot_d * t23 * t151;
2938  t267 = t266 - t85 * t265 - t23 * t95 * t130 - t23 * t128 * t136 - X_dot_d * t65 * t95 * t128 * 2.0;
2939  t268 = -t23 * t95 * t173 - t23 * t136 * t169 - X_dot_d * t65 * t95 * t169 * 2.0;
2940  t269 = t23 * t147 * (t45 - t70);
2941  t270 = Y_dot_d * t65 * (t45 - t70) * (t80 - t101) * 2.0;
2942  t271 = t269 + t270 - t23 * t95 * t96;
2943  t272 = t78 * t98 * t121 * t125 * (1.0 / 4.0);
2944  t273 = t77 * t100 * t120 * t126 * (1.0 / 4.0);
2945  t274 = t272 + t273;
2946  t275 = t23 * t145 * (t80 - t101);
2947  t276 = Y_dot_d * t23 * t151;
2948  t277 = t275 + t276 - t85 * t274 - t23 * t128 * t147 - Y_dot_d * t65 * t95 * t128 * 2.0;
2949  t278 = -t23 * t95 * t178 - t23 * t147 * t169 - Y_dot_d * t65 * t95 * t169 * 2.0;
2950  t279 = Z_dot_d * t65 * (t45 - t70) * (t80 - t101) * 2.0;
2951  t280 = t279 - t23 * t95 * t117 - t23 * t68 * t160;
2952  t282 = t78 * t114 * t121 * t125 * (1.0 / 4.0);
2953  t283 = t77 * t116 * t120 * t126 * (1.0 / 4.0);
2954  t284 = t23 * t128 * t160;
2955  t285 = t23 * t157 * (t80 - t101);
2956  t286 = Z_dot_d * t23 * t151;
2957  t287 = t23 * t160 * t169;
2958  t288 = t23 * t188 * (t80 - t101);
2959  t289 = t287 + t288 - Z_dot_d * t65 * t95 * t169 * 2.0;
2960  A0[0][3] = t23 * t68 * t124 -
2961  t23 * (t48 - t35 * (t29 - y[6 - 1] * 2.0) * (1.0 / 2.0)) *
2962  (t59 + t61 + t62 - t26 * t50 * (t24 - x[2 - 1] * 2.0) * (1.0 / 2.0)) +
2963  X_dot_d * t65 * t68 * t83 * 2.0;
2964  A0[0][4] = t223 + t224 - t85 * t222 + t23 * t68 * t133 - X_dot_d * t65 * t67 * t68 * 2.0;
2965  A0[0][5] = -t23 * t69 * (t80 - t35 * (t73 - z[6 - 1] * 2.0) * (1.0 / 2.0)) + t23 * t68 * t136 +
2966  X_dot_d * t65 * t95 * (t45 - t70) * 2.0;
2967  A0[0][9] = t198;
2968  A0[0][10] = t236 + t237 - t85 * t235 + t23 * t67 * t96 - Y_dot_d * t65 * t67 * t68 * 2.0;
2969  A0[0][11] = t271;
2970  A0[0][15] = t211;
2971  A0[0][16] = t250 - t85 * t249 + t23 * t67 * t117 - t23 * t68 * t155 - Z_dot_d * t65 * t67 * t68 * 2.0;
2972  A0[0][17] = t280;
2973  A0[1][3] =
2974  t194 -
2975  t85 * (t192 + t193 - t37 * t42 * (1.0 / 4.0) + t46 * t72 * t125 * (t118 - x[6 - 1] * 2.0) * (1.0 / 4.0)) -
2976  t23 * t83 * t130 - t23 * t124 * t128 - X_dot_d * t65 * t83 * t128 * 2.0;
2977  A0[1][4] = t227;
2978  A0[1][5] = t267;
2979  A0[1][9] = t205;
2980  A0[1][10] = t239;
2981  A0[1][11] = t277;
2982  A0[1][15] = t217;
2983  A0[1][16] = t253;
2984  A0[1][17] =
2985  t284 + t285 + t286 - t85 * (t158 + t282 + t283 - t42 * t120 * (1.0 / 4.0)) - Z_dot_d * t65 * t95 * t128 * 2.0;
2986  A0[2][3] = -t23 * (t48 - t84) * (t172 - t26 * t50 * (t162 - y[2 - 1] * 2.0) * (1.0 / 2.0)) - t23 * t124 * t169 -
2987  X_dot_d * t65 * t83 * t169 * 2.0;
2988  A0[2][4] = t231 + t232 - t85 * t230 + t23 * t67 * t173 - t23 * t133 * t169;
2989  A0[2][5] = t268;
2990  A0[2][9] = t207;
2991  A0[2][10] = t243 + t244 + t245 - t85 * (t176 + t241 + t242 - t28 * t55 * (1.0 / 4.0)) - t23 * t143 * t169;
2992  A0[2][11] = t278;
2993  A0[2][15] = t219;
2994  A0[2][16] = t261;
2995  A0[2][17] = t289;
2996  A0[3][0] = -t23 * t69 * t83 + t23 * t124 * (t45 - t70) + X_dot_d * t65 * (t45 - t70) * (t48 - t84) * 2.0;
2997  A0[3][1] = t194 - t85 * (t192 + t193 - t37 * t42 * (1.0 / 4.0) + t46 * t72 * t121 * t125 * (1.0 / 4.0)) -
2998  t23 * t83 * t130 - t23 * t124 * t128 - X_dot_d * t65 * t83 * t128 * 2.0;
2999  A0[3][2] = -t23 * t83 * t173 - t23 * t124 * t169 - X_dot_d * t65 * t83 * t169 * 2.0;
3000  A0[3][6] = t198;
3001  A0[3][7] = t205;
3002  A0[3][8] = t207;
3003  A0[3][12] = t211;
3004  A0[3][13] = t217;
3005  A0[3][14] = t219;
3006  A0[4][0] = t223 + t224 - t85 * t222 + t23 * t133 * (t45 - t70) - X_dot_d * t65 * t67 * t68 * 2.0;
3007  A0[4][1] = t227;
3008  A0[4][2] = t231 + t232 - t85 * t230 - t23 * t133 * t169 + t23 * t67 * (t172 - t195);
3009  A0[4][6] = t236 + t237 - t85 * t235 + t23 * t67 * (t91 - t196) - Y_dot_d * t65 * t67 * t68 * 2.0;
3010  A0[4][7] = t239;
3011  A0[4][8] = t243 + t244 + t245 - t85 * (t176 - t240 + t241 + t242) - t23 * t143 * t169;
3012  A0[4][12] = t250 - t85 * t249 - t23 * t68 * t155 + t23 * t67 * (t108 - t208) - Z_dot_d * t65 * t67 * t68 * 2.0;
3013  A0[4][13] = t253;
3014  A0[4][14] = t261;
3015  A0[5][0] = -t23 * t69 * t95 + t23 * t136 * (t45 - t70) + X_dot_d * t65 * (t45 - t70) * (t80 - t101) * 2.0;
3016  A0[5][1] = t267;
3017  A0[5][2] = t268;
3018  A0[5][6] = t271;
3019  A0[5][7] = t277;
3020  A0[5][8] = t278;
3021  A0[5][12] = t280;
3022  A0[5][13] = t284 + t285 + t286 - t85 * (t158 - t281 + t282 + t283) - Z_dot_d * t65 * t95 * t128 * 2.0;
3023  A0[5][14] = t289;
3024 }
3025 
3026 void SurfCentroidSelf_f(const vector<double> &x, const vector<double> &y, const vector<double> &z, const double totD,
3027  const double X_dot_d, const double Y_dot_d, const double Z_dot_d, ArrayVec<double> &A0)
3028 {
3029  double t2;
3030  t2 = 1.0 / totD;
3031  A0[0][0] = X_dot_d * t2;
3032  A0[0][1] = Y_dot_d * t2;
3033  A0[0][2] = Z_dot_d * t2;
3034 }
3035 
3036 void SurfCentroidSelf_df(const vector<double> &x, const vector<double> &y, const vector<double> &z, const double totD,
3037  const double X_dot_d, const double Y_dot_d, const double Z_dot_d, ArrayVec<double> &A0)
3038 {
3039  double t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t35, t20, t21, t22, t23,
3040  t24, t25, t26, t27, t28, t29, t46, t30, t31, t32, t52, t33, t34, t36, t37, t56, t38, t39, t40, t41, t42, t43,
3041  t44, t45, t47, t48, t49, t61, t50, t51, t53, t62, t54, t55, t57, t58, t59, t60;
3042  t2 = x[1 - 1] - x[2 - 1];
3043  t3 = y[1 - 1] - y[2 - 1];
3044  t4 = z[1 - 1] - z[2 - 1];
3045  t5 = x[2 - 1] - x[3 - 1];
3046  t6 = y[2 - 1] - y[3 - 1];
3047  t7 = z[2 - 1] - z[3 - 1];
3048  t8 = t2 * t2;
3049  t9 = t3 * t3;
3050  t10 = t4 * t4;
3051  t11 = t8 + t9 + t10;
3052  t12 = x[2 - 1] * (1.0 / 2.0);
3053  t13 = t5 * t5;
3054  t14 = t6 * t6;
3055  t15 = t7 * t7;
3056  t16 = t13 + t14 + t15;
3057  t17 = x[1 - 1] * 2.0;
3058  t18 = x[2 - 1] * 2.0;
3059  t19 = 1.0 / sqrt(rsvsmath_automatic_eps_centre + t11);
3060  t35 = x[3 - 1] * 2.0;
3061  t20 = t18 - t35;
3062  t21 = 1.0 / sqrt(rsvsmath_automatic_eps_centre + t16);
3063  t22 = 1.0 / totD;
3064  t23 = x[1 - 1] * (1.0 / 2.0);
3065  t24 = t12 + t23;
3066  t25 = x[3 - 1] * (1.0 / 2.0);
3067  t26 = t12 + t25;
3068  t27 = 1.0 / (totD * totD);
3069  t28 = y[1 - 1] * 2.0;
3070  t29 = y[2 - 1] * 2.0;
3071  t46 = y[3 - 1] * 2.0;
3072  t30 = t29 - t46;
3073  t31 = z[1 - 1] * 2.0;
3074  t32 = z[2 - 1] * 2.0;
3075  t52 = z[3 - 1] * 2.0;
3076  t33 = t32 - t52;
3077  t34 = t17 - t18;
3078  t36 = y[2 - 1] * (1.0 / 2.0);
3079  t37 = t20 * t21 * (1.0 / 2.0);
3080  t56 = t19 * t34 * (1.0 / 2.0);
3081  t38 = t37 - t56;
3082  t39 = sqrt(t11);
3083  t40 = t39 * (1.0 / 2.0);
3084  t41 = sqrt(t16);
3085  t42 = t41 * (1.0 / 2.0);
3086  t43 = t28 - t29;
3087  t44 = y[1 - 1] * (1.0 / 2.0);
3088  t45 = t36 + t44;
3089  t47 = y[3 - 1] * (1.0 / 2.0);
3090  t48 = t36 + t47;
3091  t49 = t21 * t30 * (1.0 / 2.0);
3092  t61 = t19 * t43 * (1.0 / 2.0);
3093  t50 = t49 - t61;
3094  t51 = t31 - t32;
3095  t53 = t21 * t33 * (1.0 / 2.0);
3096  t62 = t19 * t51 * (1.0 / 2.0);
3097  t54 = t53 - t62;
3098  t55 = z[2 - 1] * (1.0 / 2.0);
3099  t57 = z[1 - 1] * (1.0 / 2.0);
3100  t58 = t55 + t57;
3101  t59 = z[3 - 1] * (1.0 / 2.0);
3102  t60 = t55 + t59;
3103  A0[0][0] = t22 * (t40 + t42 + t20 * t21 * t26 * (1.0 / 2.0) - t19 * t24 * (t17 - x[2 - 1] * 2.0) * (1.0 / 2.0)) -
3104  X_dot_d * t27 * t38;
3105  A0[0][1] =
3106  t22 * (t21 * t26 * t30 * (1.0 / 2.0) - t19 * t24 * (t28 - y[2 - 1] * 2.0) * (1.0 / 2.0)) - X_dot_d * t27 * t50;
3107  A0[0][2] =
3108  t22 * (t21 * t26 * t33 * (1.0 / 2.0) - t19 * t24 * (t31 - z[2 - 1] * 2.0) * (1.0 / 2.0)) - X_dot_d * t27 * t54;
3109  A0[1][0] = t22 * (t20 * t21 * t48 * (1.0 / 2.0) - t19 * t34 * t45 * (1.0 / 2.0)) - Y_dot_d * t27 * t38;
3110  A0[1][1] = t22 * (t40 + t42 + t21 * t30 * t48 * (1.0 / 2.0) - t19 * t43 * t45 * (1.0 / 2.0)) - Y_dot_d * t27 * t50;
3111  A0[1][2] = t22 * (t21 * t33 * t48 * (1.0 / 2.0) - t19 * t45 * t51 * (1.0 / 2.0)) - Y_dot_d * t27 * t54;
3112  A0[2][0] = t22 * (t20 * t21 * t60 * (1.0 / 2.0) - t19 * t34 * t58 * (1.0 / 2.0)) - Z_dot_d * t27 * t38;
3113  A0[2][1] = t22 * (t21 * t30 * t60 * (1.0 / 2.0) - t19 * t43 * t58 * (1.0 / 2.0)) - Z_dot_d * t27 * t50;
3114  A0[2][2] = t22 * (t40 + t42 + t21 * t33 * t60 * (1.0 / 2.0) - t19 * t51 * t58 * (1.0 / 2.0)) - Z_dot_d * t27 * t54;
3115 }
3116 
3117 void SurfCentroidSelf_ddf(const vector<double> &x, const vector<double> &y, const vector<double> &z, const double totD,
3118  const double X_dot_d, const double Y_dot_d, const double Z_dot_d, ArrayVec<double> &A0)
3119 {
3120  double t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21, t22, t23, t27,
3121  t24, t25, t26, t28, t35, t29, t30, t31, t32, t33, t34, t36, t37, t38, t41, t39, t40, t42, t43, t44, t45, t46,
3122  t56, t47, t48, t49, t66, t50, t51, t52, t55, t53, t54, t57, t72, t58, t59, t60, t61, t62, t63, t64, t83, t84,
3123  t65, t67, t73, t68, t69, t70, t71, t74, t75, t76, t77, t78, t79, t80, t81, t82, t85, t88, t86, t87, t89, t90,
3124  t91, t137, t92, t93, t94, t103, t95, t96, t97, t98, t99, t100, t101, t102, t104, t144, t105, t106, t107, t171,
3125  t108, t109, t117, t110, t111, t112, t113, t114, t115, t134, t135, t116, t118, t119, t159, t120, t121, t122,
3126  t123, t124, t125, t126, t127, t136, t128, t129, t130, t131, t132, t133, t138, t174, t139, t140, t141, t163,
3127  t142, t143, t145, t146, t147, t148, t149, t150, t151, t152, t153, t154, t155, t156, t157, t158, t160, t161,
3128  t162, t164, t165, t166, t167, t168, t169, t183, t184, t170, t172, t173, t175, t176, t177, t178, t179, t180,
3129  t181, t182;
3130  t2 = x[1 - 1] - x[2 - 1];
3131  t3 = y[1 - 1] - y[2 - 1];
3132  t4 = z[1 - 1] - z[2 - 1];
3133  t5 = t2 * t2;
3134  t6 = t3 * t3;
3135  t7 = t4 * t4;
3136  t8 = t5 + t6 + t7;
3137  t9 = 1.0 / sqrt(rsvsmath_automatic_eps_centre + t8);
3138  t10 = x[2 - 1] - x[3 - 1];
3139  t11 = y[2 - 1] - y[3 - 1];
3140  t12 = z[2 - 1] - z[3 - 1];
3141  t13 = x[2 - 1] * (1.0 / 2.0);
3142  t14 = t10 * t10;
3143  t15 = t11 * t11;
3144  t16 = t12 * t12;
3145  t17 = t14 + t15 + t16;
3146  t18 = 1.0 / sqrt(rsvsmath_automatic_eps_centre + t17);
3147  t19 = x[1 - 1] * 2.0;
3148  t20 = x[2 - 1] * 2.0;
3149  t21 = t19 - t20;
3150  t22 = x[1 - 1] * (1.0 / 2.0);
3151  t23 = t13 + t22;
3152  t27 = x[3 - 1] * 2.0;
3153  t24 = t20 - t27;
3154  t25 = x[3 - 1] * (1.0 / 2.0);
3155  t26 = t13 + t25;
3156  t28 = t18 * t24 * (1.0 / 2.0);
3157  t35 = t9 * t21 * (1.0 / 2.0);
3158  t29 = t28 - t35;
3159  t30 = t21 * t21;
3160  t31 = 1.0 / pow(t8, 3.0 / 2.0);
3161  t32 = t24 * t24;
3162  t33 = 1.0 / pow(t17, 3.0 / 2.0);
3163  t34 = 1.0 / (totD * totD);
3164  t36 = 1.0 / totD;
3165  t37 = y[1 - 1] * 2.0;
3166  t38 = y[2 - 1] * 2.0;
3167  t41 = y[3 - 1] * 2.0;
3168  t39 = t38 - t41;
3169  t40 = t37 - t38;
3170  t42 = sqrt(t8);
3171  t43 = t42 * (1.0 / 2.0);
3172  t44 = sqrt(t17);
3173  t45 = t44 * (1.0 / 2.0);
3174  t46 = t18 * t24 * t26 * (1.0 / 2.0);
3175  t56 = t9 * t21 * t23 * (1.0 / 2.0);
3176  t47 = t43 + t45 + t46 - t56;
3177  t48 = 1.0 / (totD * totD * totD);
3178  t49 = t9 * t40 * (1.0 / 2.0);
3179  t66 = t18 * t39 * (1.0 / 2.0);
3180  t50 = t49 - t66;
3181  t51 = z[1 - 1] * 2.0;
3182  t52 = z[2 - 1] * 2.0;
3183  t55 = z[3 - 1] * 2.0;
3184  t53 = t52 - t55;
3185  t54 = t51 - t52;
3186  t57 = t9 * t54 * (1.0 / 2.0);
3187  t72 = t18 * t53 * (1.0 / 2.0);
3188  t58 = t57 - t72;
3189  t59 = y[2 - 1] * (1.0 / 2.0);
3190  t60 = y[1 - 1] * (1.0 / 2.0);
3191  t61 = t59 + t60;
3192  t62 = y[3 - 1] * (1.0 / 2.0);
3193  t63 = t59 + t62;
3194  t64 = t28 - t35;
3195  t83 = t30 * t31 * (1.0 / 4.0);
3196  t84 = t32 * t33 * (1.0 / 4.0);
3197  t65 = t9 + t18 - t83 - t84;
3198  t67 = t9 * t21 * t61 * (1.0 / 2.0);
3199  t73 = t18 * t24 * t63 * (1.0 / 2.0);
3200  t68 = t67 - t73;
3201  t69 = t21 * t31 * t40 * (1.0 / 4.0);
3202  t70 = t24 * t33 * t39 * (1.0 / 4.0);
3203  t71 = t69 + t70;
3204  t74 = t21 * t31 * t54 * (1.0 / 4.0);
3205  t75 = t24 * t33 * t53 * (1.0 / 4.0);
3206  t76 = t74 + t75;
3207  t77 = z[2 - 1] * (1.0 / 2.0);
3208  t78 = z[1 - 1] * (1.0 / 2.0);
3209  t79 = t77 + t78;
3210  t80 = z[3 - 1] * (1.0 / 2.0);
3211  t81 = t77 + t80;
3212  t82 = t28 - t35;
3213  t85 = t9 * t21 * t79 * (1.0 / 2.0);
3214  t88 = t18 * t24 * t81 * (1.0 / 2.0);
3215  t86 = t85 - t88;
3216  t87 = t9 * t21 * (1.0 / 4.0);
3217  t89 = t9 * t40 * (1.0 / 4.0);
3218  t90 = t21 * t23 * t31 * t40 * (1.0 / 4.0);
3219  t91 = t24 * t26 * t33 * t39 * (1.0 / 4.0);
3220  t137 = t18 * t39 * (1.0 / 4.0);
3221  t92 = t89 + t90 + t91 - t137;
3222  t93 = t34 * t47 * t50;
3223  t94 = t9 * t23 * t40 * (1.0 / 2.0);
3224  t103 = t18 * t26 * t39 * (1.0 / 2.0);
3225  t95 = t94 - t103;
3226  t96 = t34 * t95 * (t28 - t35);
3227  t97 = X_dot_d * t34 * t71;
3228  t98 = t93 + t96 + t97 - t36 * t92 - X_dot_d * t29 * t48 * t50 * 2.0;
3229  t99 = t9 * t23;
3230  t100 = t18 * t26;
3231  t101 = t40 * t40;
3232  t102 = t39 * t39;
3233  t104 = t9 * t23 * t54 * (1.0 / 2.0);
3234  t144 = t18 * t26 * t53 * (1.0 / 2.0);
3235  t105 = t104 - t144;
3236  t106 = t21 * t31 * t40 * t61 * (1.0 / 4.0);
3237  t107 = t24 * t33 * t39 * t63 * (1.0 / 4.0);
3238  t171 = t18 * t24 * (1.0 / 4.0);
3239  t108 = t87 + t106 + t107 - t171;
3240  t109 = t18 * t39 * t63 * (1.0 / 2.0);
3241  t117 = t9 * t40 * t61 * (1.0 / 2.0);
3242  t110 = t43 + t45 + t109 - t117;
3243  t111 = Y_dot_d * t34 * t71;
3244  t112 = t111 - t36 * t108 - t34 * t50 * t68 - t29 * t34 * t110 - Y_dot_d * t29 * t48 * t50 * 2.0;
3245  t113 = t9 * t61;
3246  t114 = t18 * t63;
3247  t115 = t50 * t50;
3248  t134 = t31 * t101 * (1.0 / 4.0);
3249  t135 = t33 * t102 * (1.0 / 4.0);
3250  t116 = t9 + t18 - t134 - t135;
3251  t118 = t9 * t54 * (1.0 / 4.0);
3252  t119 = t9 * t54 * t61 * (1.0 / 2.0);
3253  t159 = t18 * t53 * t63 * (1.0 / 2.0);
3254  t120 = t119 - t159;
3255  t121 = t31 * t40 * t54 * (1.0 / 4.0);
3256  t122 = t33 * t39 * t53 * (1.0 / 4.0);
3257  t123 = t121 + t122;
3258  t124 = t21 * t31 * t40 * t79 * (1.0 / 4.0);
3259  t125 = t24 * t33 * t39 * t81 * (1.0 / 4.0);
3260  t126 = t124 + t125;
3261  t127 = t9 * t40 * t79 * (1.0 / 2.0);
3262  t136 = t18 * t39 * t81 * (1.0 / 2.0);
3263  t128 = t127 - t136;
3264  t129 = t34 * t128 * (t28 - t35);
3265  t130 = Z_dot_d * t34 * t71;
3266  t131 = t129 + t130 - t36 * t126 - t34 * t50 * t86 - Z_dot_d * t29 * t48 * t50 * 2.0;
3267  t132 = t9 * t79;
3268  t133 = t18 * t81;
3269  t138 = t18 * t53 * t81 * (1.0 / 2.0);
3270  t174 = t9 * t54 * t79 * (1.0 / 2.0);
3271  t139 = t43 + t45 + t138 - t174;
3272  t140 = t21 * t23 * t31 * t54 * (1.0 / 4.0);
3273  t141 = t24 * t26 * t33 * t53 * (1.0 / 4.0);
3274  t163 = t18 * t53 * (1.0 / 4.0);
3275  t142 = t118 + t140 + t141 - t163;
3276  t143 = t34 * t47 * t58;
3277  t145 = t34 * t105 * (t28 - t35);
3278  t146 = X_dot_d * t34 * t76;
3279  t147 = t143 + t145 + t146 - t36 * t142 - X_dot_d * t29 * t48 * t58 * 2.0;
3280  t148 = t23 * t31 * t40 * t54 * (1.0 / 4.0);
3281  t149 = t26 * t33 * t39 * t53 * (1.0 / 4.0);
3282  t150 = t148 + t149;
3283  t151 = X_dot_d * t34 * t123;
3284  t152 = X_dot_d * t48 * t50 * t58 * 2.0;
3285  t153 = t151 + t152 - t36 * t150 - t34 * t58 * t95 - t34 * t50 * t105;
3286  t154 = t54 * t54;
3287  t155 = t53 * t53;
3288  t156 = t21 * t31 * t54 * t61 * (1.0 / 4.0);
3289  t157 = t24 * t33 * t53 * t63 * (1.0 / 4.0);
3290  t158 = t156 + t157;
3291  t160 = t34 * t120 * (t28 - t35);
3292  t161 = Y_dot_d * t34 * t76;
3293  t162 = t160 + t161 - t36 * t158 - t34 * t58 * t68 - Y_dot_d * t29 * t48 * t58 * 2.0;
3294  t164 = t31 * t40 * t54 * t61 * (1.0 / 4.0);
3295  t165 = t33 * t39 * t53 * t63 * (1.0 / 4.0);
3296  t166 = t34 * t58 * t110;
3297  t167 = Y_dot_d * t34 * t123;
3298  t168 = Y_dot_d * t48 * t50 * t58 * 2.0;
3299  t169 = t58 * t58;
3300  t183 = t31 * t154 * (1.0 / 4.0);
3301  t184 = t33 * t155 * (1.0 / 4.0);
3302  t170 = t9 + t18 - t183 - t184;
3303  t172 = t21 * t31 * t54 * t79 * (1.0 / 4.0);
3304  t173 = t24 * t33 * t53 * t81 * (1.0 / 4.0);
3305  t175 = Z_dot_d * t34 * t76;
3306  t176 = t31 * t40 * t54 * t79 * (1.0 / 4.0);
3307  t177 = t33 * t39 * t53 * t81 * (1.0 / 4.0);
3308  t178 = t89 - t137 + t176 + t177;
3309  t179 = t34 * t50 * t139;
3310  t180 = Z_dot_d * t34 * t123;
3311  t181 = Z_dot_d * t48 * t50 * t58 * 2.0;
3312  t182 = t179 + t180 + t181 - t36 * t178 - t34 * t58 * t128;
3313  A0[0][0] = t36 * (t28 + t99 + t100 - t9 * (t19 - x[2 - 1] * 2.0) * (1.0 / 2.0) - t23 * t30 * t31 * (1.0 / 4.0) -
3314  t26 * t32 * t33 * (1.0 / 4.0)) -
3315  X_dot_d * t34 * t65 - t29 * t34 * t47 * 2.0 + X_dot_d * (t29 * t29) * t48 * 2.0;
3316  A0[0][1] = t98;
3317  A0[0][2] = t147;
3318  A0[0][3] = t36 * (t113 + t114 - t30 * t31 * t61 * (1.0 / 4.0) - t32 * t33 * t63 * (1.0 / 4.0)) +
3319  Y_dot_d * t48 * (t64 * t64) * 2.0 - Y_dot_d * t34 * t65 + t34 * t68 * (t28 - t35) * 2.0;
3320  A0[0][4] = t112;
3321  A0[0][5] = t162;
3322  A0[0][6] = t36 * (t132 + t133 - t30 * t31 * t79 * (1.0 / 4.0) - t32 * t33 * t81 * (1.0 / 4.0)) +
3323  Z_dot_d * t48 * (t82 * t82) * 2.0 - Z_dot_d * t34 * t65 + t34 * t86 * (t28 - t35) * 2.0;
3324  A0[0][7] = t131;
3325  A0[0][8] = t175 - t36 * (t87 + t172 + t173 - t18 * t24 * (1.0 / 4.0)) - t34 * t58 * t86 - t29 * t34 * t139 -
3326  Z_dot_d * t29 * t48 * t58 * 2.0;
3327  A0[1][0] = t98;
3328  A0[1][1] = t36 * (t99 + t100 - t23 * t31 * t101 * (1.0 / 4.0) - t26 * t33 * t102 * (1.0 / 4.0)) -
3329  X_dot_d * t34 * t116 + X_dot_d * t48 * t115 * 2.0 - t34 * t50 * t95 * 2.0;
3330  A0[1][2] = t153;
3331  A0[1][3] = t112;
3332  A0[1][4] = -t36 * (t49 - t66 - t113 - t114 + t31 * t61 * t101 * (1.0 / 4.0) + t33 * t63 * t102 * (1.0 / 4.0)) -
3333  Y_dot_d * t34 * t116 + Y_dot_d * t48 * t115 * 2.0 + t34 * t50 * t110 * 2.0;
3334  A0[1][5] = t166 + t167 + t168 - t36 * (t118 + t164 + t165 - t18 * t53 * (1.0 / 4.0)) - t34 * t50 * t120;
3335  A0[1][6] = t131;
3336  A0[1][7] = t36 * (t132 + t133 - t31 * t79 * t101 * (1.0 / 4.0) - t33 * t81 * t102 * (1.0 / 4.0)) -
3337  Z_dot_d * t34 * t116 + Z_dot_d * t48 * t115 * 2.0 - t34 * t50 * t128 * 2.0;
3338  A0[1][8] = t182;
3339  A0[2][0] = t147;
3340  A0[2][1] = t153;
3341  A0[2][2] = t36 * (t99 + t100 - t23 * t31 * t154 * (1.0 / 4.0) - t26 * t33 * t155 * (1.0 / 4.0)) -
3342  X_dot_d * t34 * t170 + X_dot_d * t48 * t169 * 2.0 - t34 * t58 * t105 * 2.0;
3343  A0[2][3] = t162;
3344  A0[2][4] = t166 + t167 + t168 - t36 * (t118 - t163 + t164 + t165) - t34 * t50 * t120;
3345  A0[2][5] = t36 * (t113 + t114 - t31 * t61 * t154 * (1.0 / 4.0) - t33 * t63 * t155 * (1.0 / 4.0)) -
3346  Y_dot_d * t34 * t170 + Y_dot_d * t48 * t169 * 2.0 - t34 * t58 * t120 * 2.0;
3347  A0[2][6] =
3348  t175 - t36 * (t87 - t171 + t172 + t173) - t34 * t58 * t86 - t29 * t34 * t139 - Z_dot_d * t29 * t48 * t58 * 2.0;
3349  A0[2][7] = t182;
3350  A0[2][8] = -t36 * (t57 - t72 - t132 - t133 + t31 * t79 * t154 * (1.0 / 4.0) + t33 * t81 * t155 * (1.0 / 4.0)) -
3351  Z_dot_d * t34 * t170 + Z_dot_d * t48 * t169 * 2.0 + t34 * t58 * t139 * 2.0;
3352 }
3353 
3354 #pragma GCC diagnostic pop
Provides a 2D std::vector based container.