1#![allow(unused)]
16#![cfg_attr(rustfmt, rustfmt_skip)]
17
18#[inline]
19pub fn grad_mmsin2_0_0(a0: f64, a1: f64, a2: f64, a3: f64) -> f64 {
20 (-(((((((a0) * ((a0).sin())) + ((a2) * ((a1).sin()))).powi(2))
21 + ((((a0) * ((a2).sin())) + ((a2) * ((a3).sin()))).powi(2))
22 + ((((a1) * ((a0).sin())) + ((a3) * ((a1).sin()))).powi(2))
23 + ((((a1) * ((a2).sin())) + ((a3) * ((a3).sin()))).powi(2)))
24 .powf(-0.50000000000000000000_f64))
25 * (((((a0) * ((a2).sin())) + ((a2) * ((a3).sin()))) * ((a2).sin()))
26 + ((0.50000000000000000000_f64)
27 * (((2.0000000000000000000_f64) * ((a0).sin()))
28 + ((2.0000000000000000000_f64) * (a0) * ((a0).cos())))
29 * (((a0) * ((a0).sin())) + ((a2) * ((a1).sin()))))
30 + ((a1) * (((a1) * ((a0).sin())) + ((a3) * ((a1).sin()))) * ((a0).cos())))
31 * (((((((a0) * ((a0).sin())) + ((a2) * ((a1).sin()))).powi(2))
32 + ((((a0) * ((a2).sin())) + ((a2) * ((a3).sin()))).powi(2))
33 + ((((a1) * ((a0).sin())) + ((a3) * ((a1).sin()))).powi(2))
34 + ((((a1) * ((a2).sin())) + ((a3) * ((a3).sin()))).powi(2)))
35 .sqrt())
36 .sin())))
37}
38
39#[inline]
40pub fn grad_mmsin2_1_0(a0: f64, a1: f64, a2: f64, a3: f64) -> f64 {
41 (-(((((((a0) * ((a0).sin())) + ((a2) * ((a1).sin()))).powi(2))
42 + ((((a0) * ((a2).sin())) + ((a2) * ((a3).sin()))).powi(2))
43 + ((((a1) * ((a0).sin())) + ((a3) * ((a1).sin()))).powi(2))
44 + ((((a1) * ((a2).sin())) + ((a3) * ((a3).sin()))).powi(2)))
45 .powf(-0.50000000000000000000_f64))
46 * (((((a1) * ((a2).sin())) + ((a3) * ((a3).sin()))) * ((a2).sin()))
47 + ((0.50000000000000000000_f64)
48 * (((2.0000000000000000000_f64) * ((a0).sin()))
49 + ((2.0000000000000000000_f64) * (a3) * ((a1).cos())))
50 * (((a1) * ((a0).sin())) + ((a3) * ((a1).sin()))))
51 + ((a2) * (((a0) * ((a0).sin())) + ((a2) * ((a1).sin()))) * ((a1).cos())))
52 * (((((((a0) * ((a0).sin())) + ((a2) * ((a1).sin()))).powi(2))
53 + ((((a0) * ((a2).sin())) + ((a2) * ((a3).sin()))).powi(2))
54 + ((((a1) * ((a0).sin())) + ((a3) * ((a1).sin()))).powi(2))
55 + ((((a1) * ((a2).sin())) + ((a3) * ((a3).sin()))).powi(2)))
56 .sqrt())
57 .sin())))
58}
59
60#[inline]
61pub fn grad_mmsin2_2_0(a0: f64, a1: f64, a2: f64, a3: f64) -> f64 {
62 (-(((((((a0) * ((a0).sin())) + ((a2) * ((a1).sin()))).powi(2))
63 + ((((a0) * ((a2).sin())) + ((a2) * ((a3).sin()))).powi(2))
64 + ((((a1) * ((a0).sin())) + ((a3) * ((a1).sin()))).powi(2))
65 + ((((a1) * ((a2).sin())) + ((a3) * ((a3).sin()))).powi(2)))
66 .powf(-0.50000000000000000000_f64))
67 * (((((a0) * ((a0).sin())) + ((a2) * ((a1).sin()))) * ((a1).sin()))
68 + ((0.50000000000000000000_f64)
69 * (((2.0000000000000000000_f64) * ((a3).sin()))
70 + ((2.0000000000000000000_f64) * (a0) * ((a2).cos())))
71 * (((a0) * ((a2).sin())) + ((a2) * ((a3).sin()))))
72 + ((a1) * (((a1) * ((a2).sin())) + ((a3) * ((a3).sin()))) * ((a2).cos())))
73 * (((((((a0) * ((a0).sin())) + ((a2) * ((a1).sin()))).powi(2))
74 + ((((a0) * ((a2).sin())) + ((a2) * ((a3).sin()))).powi(2))
75 + ((((a1) * ((a0).sin())) + ((a3) * ((a1).sin()))).powi(2))
76 + ((((a1) * ((a2).sin())) + ((a3) * ((a3).sin()))).powi(2)))
77 .sqrt())
78 .sin())))
79}
80
81#[inline]
82pub fn grad_mmsin2_3_0(a0: f64, a1: f64, a2: f64, a3: f64) -> f64 {
83 (-(((((((a0) * ((a0).sin())) + ((a2) * ((a1).sin()))).powi(2))
84 + ((((a0) * ((a2).sin())) + ((a2) * ((a3).sin()))).powi(2))
85 + ((((a1) * ((a0).sin())) + ((a3) * ((a1).sin()))).powi(2))
86 + ((((a1) * ((a2).sin())) + ((a3) * ((a3).sin()))).powi(2)))
87 .powf(-0.50000000000000000000_f64))
88 * (((((a1) * ((a0).sin())) + ((a3) * ((a1).sin()))) * ((a1).sin()))
89 + ((0.50000000000000000000_f64)
90 * (((2.0000000000000000000_f64) * ((a3).sin()))
91 + ((2.0000000000000000000_f64) * (a3) * ((a3).cos())))
92 * (((a1) * ((a2).sin())) + ((a3) * ((a3).sin()))))
93 + ((a2) * (((a0) * ((a2).sin())) + ((a2) * ((a3).sin()))) * ((a3).cos())))
94 * (((((((a0) * ((a0).sin())) + ((a2) * ((a1).sin()))).powi(2))
95 + ((((a0) * ((a2).sin())) + ((a2) * ((a3).sin()))).powi(2))
96 + ((((a1) * ((a0).sin())) + ((a3) * ((a1).sin()))).powi(2))
97 + ((((a1) * ((a2).sin())) + ((a3) * ((a3).sin()))).powi(2)))
98 .sqrt())
99 .sin())))
100}
101
102pub fn grad_mmsin2(a0: f64, a1: f64, a2: f64, a3: f64) -> nalgebra::SMatrix<f64, 4, 1> {
103 let mut result = nalgebra::SMatrix::zeros();
104
105 result[(0, 0)] = grad_mmsin2_0_0(a0, a1, a2, a3);
106
107 result[(1, 0)] = grad_mmsin2_1_0(a0, a1, a2, a3);
108
109 result[(2, 0)] = grad_mmsin2_2_0(a0, a1, a2, a3);
110
111 result[(3, 0)] = grad_mmsin2_3_0(a0, a1, a2, a3);
112
113 result
114}
115
116#[inline]
131pub fn hess_mmsin2_0_0(a0: f64, a1: f64, a2: f64, a3: f64) -> f64 {
132 ((-(((((((a0) * ((a2).sin())) + ((a2) * ((a3).sin()))) * ((a2).sin()))
133 + ((0.50000000000000000000_f64)
134 * (((2.0000000000000000000_f64) * ((a0).sin()))
135 + ((2.0000000000000000000_f64) * (a0) * ((a0).cos())))
136 * (((a0) * ((a0).sin())) + ((a2) * ((a1).sin()))))
137 + ((a1) * (((a1) * ((a0).sin())) + ((a3) * ((a1).sin()))) * ((a0).cos())))
138 .powi(2))
139 * ((((((a0) * ((a0).sin())) + ((a2) * ((a1).sin()))).powi(2))
140 + ((((a0) * ((a2).sin())) + ((a2) * ((a3).sin()))).powi(2))
141 + ((((a1) * ((a0).sin())) + ((a3) * ((a1).sin()))).powi(2))
142 + ((((a1) * ((a2).sin())) + ((a3) * ((a3).sin()))).powi(2)))
143 .recip())
144 * (((((((a0) * ((a0).sin())) + ((a2) * ((a1).sin()))).powi(2))
145 + ((((a0) * ((a2).sin())) + ((a2) * ((a3).sin()))).powi(2))
146 + ((((a1) * ((a0).sin())) + ((a3) * ((a1).sin()))).powi(2))
147 + ((((a1) * ((a2).sin())) + ((a3) * ((a3).sin()))).powi(2)))
148 .sqrt())
149 .cos())))
150 + (-(((((((a0) * ((a0).sin())) + ((a2) * ((a1).sin()))).powi(2))
151 + ((((a0) * ((a2).sin())) + ((a2) * ((a3).sin()))).powi(2))
152 + ((((a1) * ((a0).sin())) + ((a3) * ((a1).sin()))).powi(2))
153 + ((((a1) * ((a2).sin())) + ((a3) * ((a3).sin()))).powi(2)))
154 .powf(-0.50000000000000000000_f64))
155 * ((((a2).sin()).powi(2))
156 + (((a1).powi(2)) * (((a0).cos()).powi(2)))
157 + ((0.50000000000000000000_f64)
158 * (((2.0000000000000000000_f64) * ((a0).sin()))
159 + ((2.0000000000000000000_f64) * (a0) * ((a0).cos())))
160 * (((a0) * ((a0).cos())) + ((a0).sin())))
161 + ((0.50000000000000000000_f64)
162 * (((4.0000000000000000000_f64) * ((a0).cos()))
163 + ((-2.0000000000000000000_f64) * (a0) * ((a0).sin())))
164 * (((a0) * ((a0).sin())) + ((a2) * ((a1).sin()))))
165 + (-((a1) * (((a1) * ((a0).sin())) + ((a3) * ((a1).sin()))) * ((a0).sin()))))
166 * (((((((a0) * ((a0).sin())) + ((a2) * ((a1).sin()))).powi(2))
167 + ((((a0) * ((a2).sin())) + ((a2) * ((a3).sin()))).powi(2))
168 + ((((a1) * ((a0).sin())) + ((a3) * ((a1).sin()))).powi(2))
169 + ((((a1) * ((a2).sin())) + ((a3) * ((a3).sin()))).powi(2)))
170 .sqrt())
171 .sin())))
172 + (-(((((((a0) * ((a0).sin())) + ((a2) * ((a1).sin()))).powi(2))
173 + ((((a0) * ((a2).sin())) + ((a2) * ((a3).sin()))).powi(2))
174 + ((((a1) * ((a0).sin())) + ((a3) * ((a1).sin()))).powi(2))
175 + ((((a1) * ((a2).sin())) + ((a3) * ((a3).sin()))).powi(2)))
176 .powf(-1.5000000000000000000_f64))
177 * (((((a0) * ((a2).sin())) + ((a2) * ((a3).sin()))) * ((a2).sin()))
178 + ((0.50000000000000000000_f64)
179 * (((2.0000000000000000000_f64) * ((a0).sin()))
180 + ((2.0000000000000000000_f64) * (a0) * ((a0).cos())))
181 * (((a0) * ((a0).sin())) + ((a2) * ((a1).sin()))))
182 + ((a1) * (((a1) * ((a0).sin())) + ((a3) * ((a1).sin()))) * ((a0).cos())))
183 * ((-((((a0) * ((a2).sin())) + ((a2) * ((a3).sin()))) * ((a2).sin())))
184 + ((-0.50000000000000000000_f64)
185 * (((2.0000000000000000000_f64) * ((a0).sin()))
186 + ((2.0000000000000000000_f64) * (a0) * ((a0).cos())))
187 * (((a0) * ((a0).sin())) + ((a2) * ((a1).sin()))))
188 + (-((a1) * (((a1) * ((a0).sin())) + ((a3) * ((a1).sin()))) * ((a0).cos()))))
189 * (((((((a0) * ((a0).sin())) + ((a2) * ((a1).sin()))).powi(2))
190 + ((((a0) * ((a2).sin())) + ((a2) * ((a3).sin()))).powi(2))
191 + ((((a1) * ((a0).sin())) + ((a3) * ((a1).sin()))).powi(2))
192 + ((((a1) * ((a2).sin())) + ((a3) * ((a3).sin()))).powi(2)))
193 .sqrt())
194 .sin()))))
195}
196
197#[inline]
198pub fn hess_mmsin2_0_1(a0: f64, a1: f64, a2: f64, a3: f64) -> f64 {
199 ((-(((((((a0) * ((a0).sin())) + ((a2) * ((a1).sin()))).powi(2))
200 + ((((a0) * ((a2).sin())) + ((a2) * ((a3).sin()))).powi(2))
201 + ((((a1) * ((a0).sin())) + ((a3) * ((a1).sin()))).powi(2))
202 + ((((a1) * ((a2).sin())) + ((a3) * ((a3).sin()))).powi(2)))
203 .powf(-0.50000000000000000000_f64))
204 * (((((a1) * ((a0).sin())) + ((a3) * ((a1).sin()))) * ((a0).cos()))
205 + ((a1) * (((a3) * ((a1).cos())) + ((a0).sin())) * ((a0).cos()))
206 + ((0.50000000000000000000_f64)
207 * (a2)
208 * (((2.0000000000000000000_f64) * ((a0).sin()))
209 + ((2.0000000000000000000_f64) * (a0) * ((a0).cos())))
210 * ((a1).cos())))
211 * (((((((a0) * ((a0).sin())) + ((a2) * ((a1).sin()))).powi(2))
212 + ((((a0) * ((a2).sin())) + ((a2) * ((a3).sin()))).powi(2))
213 + ((((a1) * ((a0).sin())) + ((a3) * ((a1).sin()))).powi(2))
214 + ((((a1) * ((a2).sin())) + ((a3) * ((a3).sin()))).powi(2)))
215 .sqrt())
216 .sin())))
217 + (-(((((((a0) * ((a0).sin())) + ((a2) * ((a1).sin()))).powi(2))
218 + ((((a0) * ((a2).sin())) + ((a2) * ((a3).sin()))).powi(2))
219 + ((((a1) * ((a0).sin())) + ((a3) * ((a1).sin()))).powi(2))
220 + ((((a1) * ((a2).sin())) + ((a3) * ((a3).sin()))).powi(2)))
221 .recip())
222 * (((((a0) * ((a2).sin())) + ((a2) * ((a3).sin()))) * ((a2).sin()))
223 + ((0.50000000000000000000_f64)
224 * (((2.0000000000000000000_f64) * ((a0).sin()))
225 + ((2.0000000000000000000_f64) * (a0) * ((a0).cos())))
226 * (((a0) * ((a0).sin())) + ((a2) * ((a1).sin()))))
227 + ((a1) * (((a1) * ((a0).sin())) + ((a3) * ((a1).sin()))) * ((a0).cos())))
228 * (((((a1) * ((a2).sin())) + ((a3) * ((a3).sin()))) * ((a2).sin()))
229 + ((0.50000000000000000000_f64)
230 * (((2.0000000000000000000_f64) * ((a0).sin()))
231 + ((2.0000000000000000000_f64) * (a3) * ((a1).cos())))
232 * (((a1) * ((a0).sin())) + ((a3) * ((a1).sin()))))
233 + ((a2) * (((a0) * ((a0).sin())) + ((a2) * ((a1).sin()))) * ((a1).cos())))
234 * (((((((a0) * ((a0).sin())) + ((a2) * ((a1).sin()))).powi(2))
235 + ((((a0) * ((a2).sin())) + ((a2) * ((a3).sin()))).powi(2))
236 + ((((a1) * ((a0).sin())) + ((a3) * ((a1).sin()))).powi(2))
237 + ((((a1) * ((a2).sin())) + ((a3) * ((a3).sin()))).powi(2)))
238 .sqrt())
239 .cos())))
240 + (-(((((((a0) * ((a0).sin())) + ((a2) * ((a1).sin()))).powi(2))
241 + ((((a0) * ((a2).sin())) + ((a2) * ((a3).sin()))).powi(2))
242 + ((((a1) * ((a0).sin())) + ((a3) * ((a1).sin()))).powi(2))
243 + ((((a1) * ((a2).sin())) + ((a3) * ((a3).sin()))).powi(2)))
244 .powf(-1.5000000000000000000_f64))
245 * (((((a0) * ((a2).sin())) + ((a2) * ((a3).sin()))) * ((a2).sin()))
246 + ((0.50000000000000000000_f64)
247 * (((2.0000000000000000000_f64) * ((a0).sin()))
248 + ((2.0000000000000000000_f64) * (a0) * ((a0).cos())))
249 * (((a0) * ((a0).sin())) + ((a2) * ((a1).sin()))))
250 + ((a1) * (((a1) * ((a0).sin())) + ((a3) * ((a1).sin()))) * ((a0).cos())))
251 * ((-((((a1) * ((a2).sin())) + ((a3) * ((a3).sin()))) * ((a2).sin())))
252 + ((-0.50000000000000000000_f64)
253 * (((2.0000000000000000000_f64) * ((a0).sin()))
254 + ((2.0000000000000000000_f64) * (a3) * ((a1).cos())))
255 * (((a1) * ((a0).sin())) + ((a3) * ((a1).sin()))))
256 + (-((a2) * (((a0) * ((a0).sin())) + ((a2) * ((a1).sin()))) * ((a1).cos()))))
257 * (((((((a0) * ((a0).sin())) + ((a2) * ((a1).sin()))).powi(2))
258 + ((((a0) * ((a2).sin())) + ((a2) * ((a3).sin()))).powi(2))
259 + ((((a1) * ((a0).sin())) + ((a3) * ((a1).sin()))).powi(2))
260 + ((((a1) * ((a2).sin())) + ((a3) * ((a3).sin()))).powi(2)))
261 .sqrt())
262 .sin()))))
263}
264
265#[inline]
266pub fn hess_mmsin2_0_2(a0: f64, a1: f64, a2: f64, a3: f64) -> f64 {
267 ((-(((((((a0) * ((a0).sin())) + ((a2) * ((a1).sin()))).powi(2))
268 + ((((a0) * ((a2).sin())) + ((a2) * ((a3).sin()))).powi(2))
269 + ((((a1) * ((a0).sin())) + ((a3) * ((a1).sin()))).powi(2))
270 + ((((a1) * ((a2).sin())) + ((a3) * ((a3).sin()))).powi(2)))
271 .powf(-0.50000000000000000000_f64))
272 * (((((a0) * ((a2).cos())) + ((a3).sin())) * ((a2).sin()))
273 + ((((a0) * ((a2).sin())) + ((a2) * ((a3).sin()))) * ((a2).cos()))
274 + ((0.50000000000000000000_f64)
275 * (((2.0000000000000000000_f64) * ((a0).sin()))
276 + ((2.0000000000000000000_f64) * (a0) * ((a0).cos())))
277 * ((a1).sin())))
278 * (((((((a0) * ((a0).sin())) + ((a2) * ((a1).sin()))).powi(2))
279 + ((((a0) * ((a2).sin())) + ((a2) * ((a3).sin()))).powi(2))
280 + ((((a1) * ((a0).sin())) + ((a3) * ((a1).sin()))).powi(2))
281 + ((((a1) * ((a2).sin())) + ((a3) * ((a3).sin()))).powi(2)))
282 .sqrt())
283 .sin())))
284 + (-(((((((a0) * ((a0).sin())) + ((a2) * ((a1).sin()))).powi(2))
285 + ((((a0) * ((a2).sin())) + ((a2) * ((a3).sin()))).powi(2))
286 + ((((a1) * ((a0).sin())) + ((a3) * ((a1).sin()))).powi(2))
287 + ((((a1) * ((a2).sin())) + ((a3) * ((a3).sin()))).powi(2)))
288 .recip())
289 * (((((a0) * ((a0).sin())) + ((a2) * ((a1).sin()))) * ((a1).sin()))
290 + ((0.50000000000000000000_f64)
291 * (((2.0000000000000000000_f64) * ((a3).sin()))
292 + ((2.0000000000000000000_f64) * (a0) * ((a2).cos())))
293 * (((a0) * ((a2).sin())) + ((a2) * ((a3).sin()))))
294 + ((a1) * (((a1) * ((a2).sin())) + ((a3) * ((a3).sin()))) * ((a2).cos())))
295 * (((((a0) * ((a2).sin())) + ((a2) * ((a3).sin()))) * ((a2).sin()))
296 + ((0.50000000000000000000_f64)
297 * (((2.0000000000000000000_f64) * ((a0).sin()))
298 + ((2.0000000000000000000_f64) * (a0) * ((a0).cos())))
299 * (((a0) * ((a0).sin())) + ((a2) * ((a1).sin()))))
300 + ((a1) * (((a1) * ((a0).sin())) + ((a3) * ((a1).sin()))) * ((a0).cos())))
301 * (((((((a0) * ((a0).sin())) + ((a2) * ((a1).sin()))).powi(2))
302 + ((((a0) * ((a2).sin())) + ((a2) * ((a3).sin()))).powi(2))
303 + ((((a1) * ((a0).sin())) + ((a3) * ((a1).sin()))).powi(2))
304 + ((((a1) * ((a2).sin())) + ((a3) * ((a3).sin()))).powi(2)))
305 .sqrt())
306 .cos())))
307 + (-(((((((a0) * ((a0).sin())) + ((a2) * ((a1).sin()))).powi(2))
308 + ((((a0) * ((a2).sin())) + ((a2) * ((a3).sin()))).powi(2))
309 + ((((a1) * ((a0).sin())) + ((a3) * ((a1).sin()))).powi(2))
310 + ((((a1) * ((a2).sin())) + ((a3) * ((a3).sin()))).powi(2)))
311 .powf(-1.5000000000000000000_f64))
312 * (((((a0) * ((a2).sin())) + ((a2) * ((a3).sin()))) * ((a2).sin()))
313 + ((0.50000000000000000000_f64)
314 * (((2.0000000000000000000_f64) * ((a0).sin()))
315 + ((2.0000000000000000000_f64) * (a0) * ((a0).cos())))
316 * (((a0) * ((a0).sin())) + ((a2) * ((a1).sin()))))
317 + ((a1) * (((a1) * ((a0).sin())) + ((a3) * ((a1).sin()))) * ((a0).cos())))
318 * ((-((((a0) * ((a0).sin())) + ((a2) * ((a1).sin()))) * ((a1).sin())))
319 + ((-0.50000000000000000000_f64)
320 * (((2.0000000000000000000_f64) * ((a3).sin()))
321 + ((2.0000000000000000000_f64) * (a0) * ((a2).cos())))
322 * (((a0) * ((a2).sin())) + ((a2) * ((a3).sin()))))
323 + (-((a1) * (((a1) * ((a2).sin())) + ((a3) * ((a3).sin()))) * ((a2).cos()))))
324 * (((((((a0) * ((a0).sin())) + ((a2) * ((a1).sin()))).powi(2))
325 + ((((a0) * ((a2).sin())) + ((a2) * ((a3).sin()))).powi(2))
326 + ((((a1) * ((a0).sin())) + ((a3) * ((a1).sin()))).powi(2))
327 + ((((a1) * ((a2).sin())) + ((a3) * ((a3).sin()))).powi(2)))
328 .sqrt())
329 .sin()))))
330}
331
332#[inline]
333pub fn hess_mmsin2_0_3(a0: f64, a1: f64, a2: f64, a3: f64) -> f64 {
334 ((-(((((((a0) * ((a0).sin())) + ((a2) * ((a1).sin()))).powi(2))
335 + ((((a0) * ((a2).sin())) + ((a2) * ((a3).sin()))).powi(2))
336 + ((((a1) * ((a0).sin())) + ((a3) * ((a1).sin()))).powi(2))
337 + ((((a1) * ((a2).sin())) + ((a3) * ((a3).sin()))).powi(2)))
338 .powf(-0.50000000000000000000_f64))
339 * (((a1) * ((a0).cos()) * ((a1).sin())) + ((a2) * ((a3).cos()) * ((a2).sin())))
340 * (((((((a0) * ((a0).sin())) + ((a2) * ((a1).sin()))).powi(2))
341 + ((((a0) * ((a2).sin())) + ((a2) * ((a3).sin()))).powi(2))
342 + ((((a1) * ((a0).sin())) + ((a3) * ((a1).sin()))).powi(2))
343 + ((((a1) * ((a2).sin())) + ((a3) * ((a3).sin()))).powi(2)))
344 .sqrt())
345 .sin())))
346 + (-(((((((a0) * ((a0).sin())) + ((a2) * ((a1).sin()))).powi(2))
347 + ((((a0) * ((a2).sin())) + ((a2) * ((a3).sin()))).powi(2))
348 + ((((a1) * ((a0).sin())) + ((a3) * ((a1).sin()))).powi(2))
349 + ((((a1) * ((a2).sin())) + ((a3) * ((a3).sin()))).powi(2)))
350 .recip())
351 * (((((a0) * ((a2).sin())) + ((a2) * ((a3).sin()))) * ((a2).sin()))
352 + ((0.50000000000000000000_f64)
353 * (((2.0000000000000000000_f64) * ((a0).sin()))
354 + ((2.0000000000000000000_f64) * (a0) * ((a0).cos())))
355 * (((a0) * ((a0).sin())) + ((a2) * ((a1).sin()))))
356 + ((a1) * (((a1) * ((a0).sin())) + ((a3) * ((a1).sin()))) * ((a0).cos())))
357 * (((((a1) * ((a0).sin())) + ((a3) * ((a1).sin()))) * ((a1).sin()))
358 + ((0.50000000000000000000_f64)
359 * (((2.0000000000000000000_f64) * ((a3).sin()))
360 + ((2.0000000000000000000_f64) * (a3) * ((a3).cos())))
361 * (((a1) * ((a2).sin())) + ((a3) * ((a3).sin()))))
362 + ((a2) * (((a0) * ((a2).sin())) + ((a2) * ((a3).sin()))) * ((a3).cos())))
363 * (((((((a0) * ((a0).sin())) + ((a2) * ((a1).sin()))).powi(2))
364 + ((((a0) * ((a2).sin())) + ((a2) * ((a3).sin()))).powi(2))
365 + ((((a1) * ((a0).sin())) + ((a3) * ((a1).sin()))).powi(2))
366 + ((((a1) * ((a2).sin())) + ((a3) * ((a3).sin()))).powi(2)))
367 .sqrt())
368 .cos())))
369 + (-(((((((a0) * ((a0).sin())) + ((a2) * ((a1).sin()))).powi(2))
370 + ((((a0) * ((a2).sin())) + ((a2) * ((a3).sin()))).powi(2))
371 + ((((a1) * ((a0).sin())) + ((a3) * ((a1).sin()))).powi(2))
372 + ((((a1) * ((a2).sin())) + ((a3) * ((a3).sin()))).powi(2)))
373 .powf(-1.5000000000000000000_f64))
374 * (((((a0) * ((a2).sin())) + ((a2) * ((a3).sin()))) * ((a2).sin()))
375 + ((0.50000000000000000000_f64)
376 * (((2.0000000000000000000_f64) * ((a0).sin()))
377 + ((2.0000000000000000000_f64) * (a0) * ((a0).cos())))
378 * (((a0) * ((a0).sin())) + ((a2) * ((a1).sin()))))
379 + ((a1) * (((a1) * ((a0).sin())) + ((a3) * ((a1).sin()))) * ((a0).cos())))
380 * ((-((((a1) * ((a0).sin())) + ((a3) * ((a1).sin()))) * ((a1).sin())))
381 + ((-0.50000000000000000000_f64)
382 * (((2.0000000000000000000_f64) * ((a3).sin()))
383 + ((2.0000000000000000000_f64) * (a3) * ((a3).cos())))
384 * (((a1) * ((a2).sin())) + ((a3) * ((a3).sin()))))
385 + (-((a2) * (((a0) * ((a2).sin())) + ((a2) * ((a3).sin()))) * ((a3).cos()))))
386 * (((((((a0) * ((a0).sin())) + ((a2) * ((a1).sin()))).powi(2))
387 + ((((a0) * ((a2).sin())) + ((a2) * ((a3).sin()))).powi(2))
388 + ((((a1) * ((a0).sin())) + ((a3) * ((a1).sin()))).powi(2))
389 + ((((a1) * ((a2).sin())) + ((a3) * ((a3).sin()))).powi(2)))
390 .sqrt())
391 .sin()))))
392}
393
394#[inline]
395pub fn hess_mmsin2_1_0(a0: f64, a1: f64, a2: f64, a3: f64) -> f64 {
396 ((-(((((((a0) * ((a0).sin())) + ((a2) * ((a1).sin()))).powi(2))
397 + ((((a0) * ((a2).sin())) + ((a2) * ((a3).sin()))).powi(2))
398 + ((((a1) * ((a0).sin())) + ((a3) * ((a1).sin()))).powi(2))
399 + ((((a1) * ((a2).sin())) + ((a3) * ((a3).sin()))).powi(2)))
400 .powf(-0.50000000000000000000_f64))
401 * (((((a1) * ((a0).sin())) + ((a3) * ((a1).sin()))) * ((a0).cos()))
402 + ((a1) * (((a3) * ((a1).cos())) + ((a0).sin())) * ((a0).cos()))
403 + ((0.50000000000000000000_f64)
404 * (a2)
405 * (((2.0000000000000000000_f64) * ((a0).sin()))
406 + ((2.0000000000000000000_f64) * (a0) * ((a0).cos())))
407 * ((a1).cos())))
408 * (((((((a0) * ((a0).sin())) + ((a2) * ((a1).sin()))).powi(2))
409 + ((((a0) * ((a2).sin())) + ((a2) * ((a3).sin()))).powi(2))
410 + ((((a1) * ((a0).sin())) + ((a3) * ((a1).sin()))).powi(2))
411 + ((((a1) * ((a2).sin())) + ((a3) * ((a3).sin()))).powi(2)))
412 .sqrt())
413 .sin())))
414 + (-(((((((a0) * ((a0).sin())) + ((a2) * ((a1).sin()))).powi(2))
415 + ((((a0) * ((a2).sin())) + ((a2) * ((a3).sin()))).powi(2))
416 + ((((a1) * ((a0).sin())) + ((a3) * ((a1).sin()))).powi(2))
417 + ((((a1) * ((a2).sin())) + ((a3) * ((a3).sin()))).powi(2)))
418 .recip())
419 * (((((a0) * ((a2).sin())) + ((a2) * ((a3).sin()))) * ((a2).sin()))
420 + ((0.50000000000000000000_f64)
421 * (((2.0000000000000000000_f64) * ((a0).sin()))
422 + ((2.0000000000000000000_f64) * (a0) * ((a0).cos())))
423 * (((a0) * ((a0).sin())) + ((a2) * ((a1).sin()))))
424 + ((a1) * (((a1) * ((a0).sin())) + ((a3) * ((a1).sin()))) * ((a0).cos())))
425 * (((((a1) * ((a2).sin())) + ((a3) * ((a3).sin()))) * ((a2).sin()))
426 + ((0.50000000000000000000_f64)
427 * (((2.0000000000000000000_f64) * ((a0).sin()))
428 + ((2.0000000000000000000_f64) * (a3) * ((a1).cos())))
429 * (((a1) * ((a0).sin())) + ((a3) * ((a1).sin()))))
430 + ((a2) * (((a0) * ((a0).sin())) + ((a2) * ((a1).sin()))) * ((a1).cos())))
431 * (((((((a0) * ((a0).sin())) + ((a2) * ((a1).sin()))).powi(2))
432 + ((((a0) * ((a2).sin())) + ((a2) * ((a3).sin()))).powi(2))
433 + ((((a1) * ((a0).sin())) + ((a3) * ((a1).sin()))).powi(2))
434 + ((((a1) * ((a2).sin())) + ((a3) * ((a3).sin()))).powi(2)))
435 .sqrt())
436 .cos())))
437 + (-(((((((a0) * ((a0).sin())) + ((a2) * ((a1).sin()))).powi(2))
438 + ((((a0) * ((a2).sin())) + ((a2) * ((a3).sin()))).powi(2))
439 + ((((a1) * ((a0).sin())) + ((a3) * ((a1).sin()))).powi(2))
440 + ((((a1) * ((a2).sin())) + ((a3) * ((a3).sin()))).powi(2)))
441 .powf(-1.5000000000000000000_f64))
442 * (((((a0) * ((a2).sin())) + ((a2) * ((a3).sin()))) * ((a2).sin()))
443 + ((0.50000000000000000000_f64)
444 * (((2.0000000000000000000_f64) * ((a0).sin()))
445 + ((2.0000000000000000000_f64) * (a0) * ((a0).cos())))
446 * (((a0) * ((a0).sin())) + ((a2) * ((a1).sin()))))
447 + ((a1) * (((a1) * ((a0).sin())) + ((a3) * ((a1).sin()))) * ((a0).cos())))
448 * ((-((((a1) * ((a2).sin())) + ((a3) * ((a3).sin()))) * ((a2).sin())))
449 + ((-0.50000000000000000000_f64)
450 * (((2.0000000000000000000_f64) * ((a0).sin()))
451 + ((2.0000000000000000000_f64) * (a3) * ((a1).cos())))
452 * (((a1) * ((a0).sin())) + ((a3) * ((a1).sin()))))
453 + (-((a2) * (((a0) * ((a0).sin())) + ((a2) * ((a1).sin()))) * ((a1).cos()))))
454 * (((((((a0) * ((a0).sin())) + ((a2) * ((a1).sin()))).powi(2))
455 + ((((a0) * ((a2).sin())) + ((a2) * ((a3).sin()))).powi(2))
456 + ((((a1) * ((a0).sin())) + ((a3) * ((a1).sin()))).powi(2))
457 + ((((a1) * ((a2).sin())) + ((a3) * ((a3).sin()))).powi(2)))
458 .sqrt())
459 .sin()))))
460}
461
462#[inline]
463pub fn hess_mmsin2_1_1(a0: f64, a1: f64, a2: f64, a3: f64) -> f64 {
464 ((-(((((((a1) * ((a2).sin())) + ((a3) * ((a3).sin()))) * ((a2).sin()))
465 + ((0.50000000000000000000_f64)
466 * (((2.0000000000000000000_f64) * ((a0).sin()))
467 + ((2.0000000000000000000_f64) * (a3) * ((a1).cos())))
468 * (((a1) * ((a0).sin())) + ((a3) * ((a1).sin()))))
469 + ((a2) * (((a0) * ((a0).sin())) + ((a2) * ((a1).sin()))) * ((a1).cos())))
470 .powi(2))
471 * ((((((a0) * ((a0).sin())) + ((a2) * ((a1).sin()))).powi(2))
472 + ((((a0) * ((a2).sin())) + ((a2) * ((a3).sin()))).powi(2))
473 + ((((a1) * ((a0).sin())) + ((a3) * ((a1).sin()))).powi(2))
474 + ((((a1) * ((a2).sin())) + ((a3) * ((a3).sin()))).powi(2)))
475 .recip())
476 * (((((((a0) * ((a0).sin())) + ((a2) * ((a1).sin()))).powi(2))
477 + ((((a0) * ((a2).sin())) + ((a2) * ((a3).sin()))).powi(2))
478 + ((((a1) * ((a0).sin())) + ((a3) * ((a1).sin()))).powi(2))
479 + ((((a1) * ((a2).sin())) + ((a3) * ((a3).sin()))).powi(2)))
480 .sqrt())
481 .cos())))
482 + (-(((((((a0) * ((a0).sin())) + ((a2) * ((a1).sin()))).powi(2))
483 + ((((a0) * ((a2).sin())) + ((a2) * ((a3).sin()))).powi(2))
484 + ((((a1) * ((a0).sin())) + ((a3) * ((a1).sin()))).powi(2))
485 + ((((a1) * ((a2).sin())) + ((a3) * ((a3).sin()))).powi(2)))
486 .powf(-0.50000000000000000000_f64))
487 * ((((a2).sin()).powi(2))
488 + (((a2).powi(2)) * (((a1).cos()).powi(2)))
489 + ((0.50000000000000000000_f64)
490 * (((2.0000000000000000000_f64) * ((a0).sin()))
491 + ((2.0000000000000000000_f64) * (a3) * ((a1).cos())))
492 * (((a3) * ((a1).cos())) + ((a0).sin())))
493 + (-((a2) * (((a0) * ((a0).sin())) + ((a2) * ((a1).sin()))) * ((a1).sin())))
494 + (-((a3) * (((a1) * ((a0).sin())) + ((a3) * ((a1).sin()))) * ((a1).sin()))))
495 * (((((((a0) * ((a0).sin())) + ((a2) * ((a1).sin()))).powi(2))
496 + ((((a0) * ((a2).sin())) + ((a2) * ((a3).sin()))).powi(2))
497 + ((((a1) * ((a0).sin())) + ((a3) * ((a1).sin()))).powi(2))
498 + ((((a1) * ((a2).sin())) + ((a3) * ((a3).sin()))).powi(2)))
499 .sqrt())
500 .sin())))
501 + (-(((((((a0) * ((a0).sin())) + ((a2) * ((a1).sin()))).powi(2))
502 + ((((a0) * ((a2).sin())) + ((a2) * ((a3).sin()))).powi(2))
503 + ((((a1) * ((a0).sin())) + ((a3) * ((a1).sin()))).powi(2))
504 + ((((a1) * ((a2).sin())) + ((a3) * ((a3).sin()))).powi(2)))
505 .powf(-1.5000000000000000000_f64))
506 * (((((a1) * ((a2).sin())) + ((a3) * ((a3).sin()))) * ((a2).sin()))
507 + ((0.50000000000000000000_f64)
508 * (((2.0000000000000000000_f64) * ((a0).sin()))
509 + ((2.0000000000000000000_f64) * (a3) * ((a1).cos())))
510 * (((a1) * ((a0).sin())) + ((a3) * ((a1).sin()))))
511 + ((a2) * (((a0) * ((a0).sin())) + ((a2) * ((a1).sin()))) * ((a1).cos())))
512 * ((-((((a1) * ((a2).sin())) + ((a3) * ((a3).sin()))) * ((a2).sin())))
513 + ((-0.50000000000000000000_f64)
514 * (((2.0000000000000000000_f64) * ((a0).sin()))
515 + ((2.0000000000000000000_f64) * (a3) * ((a1).cos())))
516 * (((a1) * ((a0).sin())) + ((a3) * ((a1).sin()))))
517 + (-((a2) * (((a0) * ((a0).sin())) + ((a2) * ((a1).sin()))) * ((a1).cos()))))
518 * (((((((a0) * ((a0).sin())) + ((a2) * ((a1).sin()))).powi(2))
519 + ((((a0) * ((a2).sin())) + ((a2) * ((a3).sin()))).powi(2))
520 + ((((a1) * ((a0).sin())) + ((a3) * ((a1).sin()))).powi(2))
521 + ((((a1) * ((a2).sin())) + ((a3) * ((a3).sin()))).powi(2)))
522 .sqrt())
523 .sin()))))
524}
525
526#[inline]
527pub fn hess_mmsin2_1_2(a0: f64, a1: f64, a2: f64, a3: f64) -> f64 {
528 ((-(((((((a0) * ((a0).sin())) + ((a2) * ((a1).sin()))).powi(2))
529 + ((((a0) * ((a2).sin())) + ((a2) * ((a3).sin()))).powi(2))
530 + ((((a1) * ((a0).sin())) + ((a3) * ((a1).sin()))).powi(2))
531 + ((((a1) * ((a2).sin())) + ((a3) * ((a3).sin()))).powi(2)))
532 .powf(-0.50000000000000000000_f64))
533 * (((((a0) * ((a0).sin())) + ((a2) * ((a1).sin()))) * ((a1).cos()))
534 + ((((a1) * ((a2).sin())) + ((a3) * ((a3).sin()))) * ((a2).cos()))
535 + ((a1) * ((a2).cos()) * ((a2).sin()))
536 + ((a2) * ((a1).cos()) * ((a1).sin())))
537 * (((((((a0) * ((a0).sin())) + ((a2) * ((a1).sin()))).powi(2))
538 + ((((a0) * ((a2).sin())) + ((a2) * ((a3).sin()))).powi(2))
539 + ((((a1) * ((a0).sin())) + ((a3) * ((a1).sin()))).powi(2))
540 + ((((a1) * ((a2).sin())) + ((a3) * ((a3).sin()))).powi(2)))
541 .sqrt())
542 .sin())))
543 + (-(((((((a0) * ((a0).sin())) + ((a2) * ((a1).sin()))).powi(2))
544 + ((((a0) * ((a2).sin())) + ((a2) * ((a3).sin()))).powi(2))
545 + ((((a1) * ((a0).sin())) + ((a3) * ((a1).sin()))).powi(2))
546 + ((((a1) * ((a2).sin())) + ((a3) * ((a3).sin()))).powi(2)))
547 .recip())
548 * (((((a0) * ((a0).sin())) + ((a2) * ((a1).sin()))) * ((a1).sin()))
549 + ((0.50000000000000000000_f64)
550 * (((2.0000000000000000000_f64) * ((a3).sin()))
551 + ((2.0000000000000000000_f64) * (a0) * ((a2).cos())))
552 * (((a0) * ((a2).sin())) + ((a2) * ((a3).sin()))))
553 + ((a1) * (((a1) * ((a2).sin())) + ((a3) * ((a3).sin()))) * ((a2).cos())))
554 * (((((a1) * ((a2).sin())) + ((a3) * ((a3).sin()))) * ((a2).sin()))
555 + ((0.50000000000000000000_f64)
556 * (((2.0000000000000000000_f64) * ((a0).sin()))
557 + ((2.0000000000000000000_f64) * (a3) * ((a1).cos())))
558 * (((a1) * ((a0).sin())) + ((a3) * ((a1).sin()))))
559 + ((a2) * (((a0) * ((a0).sin())) + ((a2) * ((a1).sin()))) * ((a1).cos())))
560 * (((((((a0) * ((a0).sin())) + ((a2) * ((a1).sin()))).powi(2))
561 + ((((a0) * ((a2).sin())) + ((a2) * ((a3).sin()))).powi(2))
562 + ((((a1) * ((a0).sin())) + ((a3) * ((a1).sin()))).powi(2))
563 + ((((a1) * ((a2).sin())) + ((a3) * ((a3).sin()))).powi(2)))
564 .sqrt())
565 .cos())))
566 + (-(((((((a0) * ((a0).sin())) + ((a2) * ((a1).sin()))).powi(2))
567 + ((((a0) * ((a2).sin())) + ((a2) * ((a3).sin()))).powi(2))
568 + ((((a1) * ((a0).sin())) + ((a3) * ((a1).sin()))).powi(2))
569 + ((((a1) * ((a2).sin())) + ((a3) * ((a3).sin()))).powi(2)))
570 .powf(-1.5000000000000000000_f64))
571 * (((((a1) * ((a2).sin())) + ((a3) * ((a3).sin()))) * ((a2).sin()))
572 + ((0.50000000000000000000_f64)
573 * (((2.0000000000000000000_f64) * ((a0).sin()))
574 + ((2.0000000000000000000_f64) * (a3) * ((a1).cos())))
575 * (((a1) * ((a0).sin())) + ((a3) * ((a1).sin()))))
576 + ((a2) * (((a0) * ((a0).sin())) + ((a2) * ((a1).sin()))) * ((a1).cos())))
577 * ((-((((a0) * ((a0).sin())) + ((a2) * ((a1).sin()))) * ((a1).sin())))
578 + ((-0.50000000000000000000_f64)
579 * (((2.0000000000000000000_f64) * ((a3).sin()))
580 + ((2.0000000000000000000_f64) * (a0) * ((a2).cos())))
581 * (((a0) * ((a2).sin())) + ((a2) * ((a3).sin()))))
582 + (-((a1) * (((a1) * ((a2).sin())) + ((a3) * ((a3).sin()))) * ((a2).cos()))))
583 * (((((((a0) * ((a0).sin())) + ((a2) * ((a1).sin()))).powi(2))
584 + ((((a0) * ((a2).sin())) + ((a2) * ((a3).sin()))).powi(2))
585 + ((((a1) * ((a0).sin())) + ((a3) * ((a1).sin()))).powi(2))
586 + ((((a1) * ((a2).sin())) + ((a3) * ((a3).sin()))).powi(2)))
587 .sqrt())
588 .sin()))))
589}
590
591#[inline]
592pub fn hess_mmsin2_1_3(a0: f64, a1: f64, a2: f64, a3: f64) -> f64 {
593 ((-(((((((a0) * ((a0).sin())) + ((a2) * ((a1).sin()))).powi(2))
594 + ((((a0) * ((a2).sin())) + ((a2) * ((a3).sin()))).powi(2))
595 + ((((a1) * ((a0).sin())) + ((a3) * ((a1).sin()))).powi(2))
596 + ((((a1) * ((a2).sin())) + ((a3) * ((a3).sin()))).powi(2)))
597 .powf(-0.50000000000000000000_f64))
598 * (((((a1) * ((a0).sin())) + ((a3) * ((a1).sin()))) * ((a1).cos()))
599 + ((((a3) * ((a3).cos())) + ((a3).sin())) * ((a2).sin()))
600 + ((0.50000000000000000000_f64)
601 * (((2.0000000000000000000_f64) * ((a0).sin()))
602 + ((2.0000000000000000000_f64) * (a3) * ((a1).cos())))
603 * ((a1).sin())))
604 * (((((((a0) * ((a0).sin())) + ((a2) * ((a1).sin()))).powi(2))
605 + ((((a0) * ((a2).sin())) + ((a2) * ((a3).sin()))).powi(2))
606 + ((((a1) * ((a0).sin())) + ((a3) * ((a1).sin()))).powi(2))
607 + ((((a1) * ((a2).sin())) + ((a3) * ((a3).sin()))).powi(2)))
608 .sqrt())
609 .sin())))
610 + (-(((((((a0) * ((a0).sin())) + ((a2) * ((a1).sin()))).powi(2))
611 + ((((a0) * ((a2).sin())) + ((a2) * ((a3).sin()))).powi(2))
612 + ((((a1) * ((a0).sin())) + ((a3) * ((a1).sin()))).powi(2))
613 + ((((a1) * ((a2).sin())) + ((a3) * ((a3).sin()))).powi(2)))
614 .recip())
615 * (((((a1) * ((a0).sin())) + ((a3) * ((a1).sin()))) * ((a1).sin()))
616 + ((0.50000000000000000000_f64)
617 * (((2.0000000000000000000_f64) * ((a3).sin()))
618 + ((2.0000000000000000000_f64) * (a3) * ((a3).cos())))
619 * (((a1) * ((a2).sin())) + ((a3) * ((a3).sin()))))
620 + ((a2) * (((a0) * ((a2).sin())) + ((a2) * ((a3).sin()))) * ((a3).cos())))
621 * (((((a1) * ((a2).sin())) + ((a3) * ((a3).sin()))) * ((a2).sin()))
622 + ((0.50000000000000000000_f64)
623 * (((2.0000000000000000000_f64) * ((a0).sin()))
624 + ((2.0000000000000000000_f64) * (a3) * ((a1).cos())))
625 * (((a1) * ((a0).sin())) + ((a3) * ((a1).sin()))))
626 + ((a2) * (((a0) * ((a0).sin())) + ((a2) * ((a1).sin()))) * ((a1).cos())))
627 * (((((((a0) * ((a0).sin())) + ((a2) * ((a1).sin()))).powi(2))
628 + ((((a0) * ((a2).sin())) + ((a2) * ((a3).sin()))).powi(2))
629 + ((((a1) * ((a0).sin())) + ((a3) * ((a1).sin()))).powi(2))
630 + ((((a1) * ((a2).sin())) + ((a3) * ((a3).sin()))).powi(2)))
631 .sqrt())
632 .cos())))
633 + (-(((((((a0) * ((a0).sin())) + ((a2) * ((a1).sin()))).powi(2))
634 + ((((a0) * ((a2).sin())) + ((a2) * ((a3).sin()))).powi(2))
635 + ((((a1) * ((a0).sin())) + ((a3) * ((a1).sin()))).powi(2))
636 + ((((a1) * ((a2).sin())) + ((a3) * ((a3).sin()))).powi(2)))
637 .powf(-1.5000000000000000000_f64))
638 * (((((a1) * ((a2).sin())) + ((a3) * ((a3).sin()))) * ((a2).sin()))
639 + ((0.50000000000000000000_f64)
640 * (((2.0000000000000000000_f64) * ((a0).sin()))
641 + ((2.0000000000000000000_f64) * (a3) * ((a1).cos())))
642 * (((a1) * ((a0).sin())) + ((a3) * ((a1).sin()))))
643 + ((a2) * (((a0) * ((a0).sin())) + ((a2) * ((a1).sin()))) * ((a1).cos())))
644 * ((-((((a1) * ((a0).sin())) + ((a3) * ((a1).sin()))) * ((a1).sin())))
645 + ((-0.50000000000000000000_f64)
646 * (((2.0000000000000000000_f64) * ((a3).sin()))
647 + ((2.0000000000000000000_f64) * (a3) * ((a3).cos())))
648 * (((a1) * ((a2).sin())) + ((a3) * ((a3).sin()))))
649 + (-((a2) * (((a0) * ((a2).sin())) + ((a2) * ((a3).sin()))) * ((a3).cos()))))
650 * (((((((a0) * ((a0).sin())) + ((a2) * ((a1).sin()))).powi(2))
651 + ((((a0) * ((a2).sin())) + ((a2) * ((a3).sin()))).powi(2))
652 + ((((a1) * ((a0).sin())) + ((a3) * ((a1).sin()))).powi(2))
653 + ((((a1) * ((a2).sin())) + ((a3) * ((a3).sin()))).powi(2)))
654 .sqrt())
655 .sin()))))
656}
657
658#[inline]
659pub fn hess_mmsin2_2_0(a0: f64, a1: f64, a2: f64, a3: f64) -> f64 {
660 ((-(((((((a0) * ((a0).sin())) + ((a2) * ((a1).sin()))).powi(2))
661 + ((((a0) * ((a2).sin())) + ((a2) * ((a3).sin()))).powi(2))
662 + ((((a1) * ((a0).sin())) + ((a3) * ((a1).sin()))).powi(2))
663 + ((((a1) * ((a2).sin())) + ((a3) * ((a3).sin()))).powi(2)))
664 .powf(-0.50000000000000000000_f64))
665 * (((((a0) * ((a2).cos())) + ((a3).sin())) * ((a2).sin()))
666 + ((((a0) * ((a2).sin())) + ((a2) * ((a3).sin()))) * ((a2).cos()))
667 + ((0.50000000000000000000_f64)
668 * (((2.0000000000000000000_f64) * ((a0).sin()))
669 + ((2.0000000000000000000_f64) * (a0) * ((a0).cos())))
670 * ((a1).sin())))
671 * (((((((a0) * ((a0).sin())) + ((a2) * ((a1).sin()))).powi(2))
672 + ((((a0) * ((a2).sin())) + ((a2) * ((a3).sin()))).powi(2))
673 + ((((a1) * ((a0).sin())) + ((a3) * ((a1).sin()))).powi(2))
674 + ((((a1) * ((a2).sin())) + ((a3) * ((a3).sin()))).powi(2)))
675 .sqrt())
676 .sin())))
677 + (-(((((((a0) * ((a0).sin())) + ((a2) * ((a1).sin()))).powi(2))
678 + ((((a0) * ((a2).sin())) + ((a2) * ((a3).sin()))).powi(2))
679 + ((((a1) * ((a0).sin())) + ((a3) * ((a1).sin()))).powi(2))
680 + ((((a1) * ((a2).sin())) + ((a3) * ((a3).sin()))).powi(2)))
681 .recip())
682 * (((((a0) * ((a0).sin())) + ((a2) * ((a1).sin()))) * ((a1).sin()))
683 + ((0.50000000000000000000_f64)
684 * (((2.0000000000000000000_f64) * ((a3).sin()))
685 + ((2.0000000000000000000_f64) * (a0) * ((a2).cos())))
686 * (((a0) * ((a2).sin())) + ((a2) * ((a3).sin()))))
687 + ((a1) * (((a1) * ((a2).sin())) + ((a3) * ((a3).sin()))) * ((a2).cos())))
688 * (((((a0) * ((a2).sin())) + ((a2) * ((a3).sin()))) * ((a2).sin()))
689 + ((0.50000000000000000000_f64)
690 * (((2.0000000000000000000_f64) * ((a0).sin()))
691 + ((2.0000000000000000000_f64) * (a0) * ((a0).cos())))
692 * (((a0) * ((a0).sin())) + ((a2) * ((a1).sin()))))
693 + ((a1) * (((a1) * ((a0).sin())) + ((a3) * ((a1).sin()))) * ((a0).cos())))
694 * (((((((a0) * ((a0).sin())) + ((a2) * ((a1).sin()))).powi(2))
695 + ((((a0) * ((a2).sin())) + ((a2) * ((a3).sin()))).powi(2))
696 + ((((a1) * ((a0).sin())) + ((a3) * ((a1).sin()))).powi(2))
697 + ((((a1) * ((a2).sin())) + ((a3) * ((a3).sin()))).powi(2)))
698 .sqrt())
699 .cos())))
700 + (-(((((((a0) * ((a0).sin())) + ((a2) * ((a1).sin()))).powi(2))
701 + ((((a0) * ((a2).sin())) + ((a2) * ((a3).sin()))).powi(2))
702 + ((((a1) * ((a0).sin())) + ((a3) * ((a1).sin()))).powi(2))
703 + ((((a1) * ((a2).sin())) + ((a3) * ((a3).sin()))).powi(2)))
704 .powf(-1.5000000000000000000_f64))
705 * (((((a0) * ((a2).sin())) + ((a2) * ((a3).sin()))) * ((a2).sin()))
706 + ((0.50000000000000000000_f64)
707 * (((2.0000000000000000000_f64) * ((a0).sin()))
708 + ((2.0000000000000000000_f64) * (a0) * ((a0).cos())))
709 * (((a0) * ((a0).sin())) + ((a2) * ((a1).sin()))))
710 + ((a1) * (((a1) * ((a0).sin())) + ((a3) * ((a1).sin()))) * ((a0).cos())))
711 * ((-((((a0) * ((a0).sin())) + ((a2) * ((a1).sin()))) * ((a1).sin())))
712 + ((-0.50000000000000000000_f64)
713 * (((2.0000000000000000000_f64) * ((a3).sin()))
714 + ((2.0000000000000000000_f64) * (a0) * ((a2).cos())))
715 * (((a0) * ((a2).sin())) + ((a2) * ((a3).sin()))))
716 + (-((a1) * (((a1) * ((a2).sin())) + ((a3) * ((a3).sin()))) * ((a2).cos()))))
717 * (((((((a0) * ((a0).sin())) + ((a2) * ((a1).sin()))).powi(2))
718 + ((((a0) * ((a2).sin())) + ((a2) * ((a3).sin()))).powi(2))
719 + ((((a1) * ((a0).sin())) + ((a3) * ((a1).sin()))).powi(2))
720 + ((((a1) * ((a2).sin())) + ((a3) * ((a3).sin()))).powi(2)))
721 .sqrt())
722 .sin()))))
723}
724
725#[inline]
726pub fn hess_mmsin2_2_1(a0: f64, a1: f64, a2: f64, a3: f64) -> f64 {
727 ((-(((((((a0) * ((a0).sin())) + ((a2) * ((a1).sin()))).powi(2))
728 + ((((a0) * ((a2).sin())) + ((a2) * ((a3).sin()))).powi(2))
729 + ((((a1) * ((a0).sin())) + ((a3) * ((a1).sin()))).powi(2))
730 + ((((a1) * ((a2).sin())) + ((a3) * ((a3).sin()))).powi(2)))
731 .powf(-0.50000000000000000000_f64))
732 * (((((a0) * ((a0).sin())) + ((a2) * ((a1).sin()))) * ((a1).cos()))
733 + ((((a1) * ((a2).sin())) + ((a3) * ((a3).sin()))) * ((a2).cos()))
734 + ((a1) * ((a2).cos()) * ((a2).sin()))
735 + ((a2) * ((a1).cos()) * ((a1).sin())))
736 * (((((((a0) * ((a0).sin())) + ((a2) * ((a1).sin()))).powi(2))
737 + ((((a0) * ((a2).sin())) + ((a2) * ((a3).sin()))).powi(2))
738 + ((((a1) * ((a0).sin())) + ((a3) * ((a1).sin()))).powi(2))
739 + ((((a1) * ((a2).sin())) + ((a3) * ((a3).sin()))).powi(2)))
740 .sqrt())
741 .sin())))
742 + (-(((((((a0) * ((a0).sin())) + ((a2) * ((a1).sin()))).powi(2))
743 + ((((a0) * ((a2).sin())) + ((a2) * ((a3).sin()))).powi(2))
744 + ((((a1) * ((a0).sin())) + ((a3) * ((a1).sin()))).powi(2))
745 + ((((a1) * ((a2).sin())) + ((a3) * ((a3).sin()))).powi(2)))
746 .recip())
747 * (((((a0) * ((a0).sin())) + ((a2) * ((a1).sin()))) * ((a1).sin()))
748 + ((0.50000000000000000000_f64)
749 * (((2.0000000000000000000_f64) * ((a3).sin()))
750 + ((2.0000000000000000000_f64) * (a0) * ((a2).cos())))
751 * (((a0) * ((a2).sin())) + ((a2) * ((a3).sin()))))
752 + ((a1) * (((a1) * ((a2).sin())) + ((a3) * ((a3).sin()))) * ((a2).cos())))
753 * (((((a1) * ((a2).sin())) + ((a3) * ((a3).sin()))) * ((a2).sin()))
754 + ((0.50000000000000000000_f64)
755 * (((2.0000000000000000000_f64) * ((a0).sin()))
756 + ((2.0000000000000000000_f64) * (a3) * ((a1).cos())))
757 * (((a1) * ((a0).sin())) + ((a3) * ((a1).sin()))))
758 + ((a2) * (((a0) * ((a0).sin())) + ((a2) * ((a1).sin()))) * ((a1).cos())))
759 * (((((((a0) * ((a0).sin())) + ((a2) * ((a1).sin()))).powi(2))
760 + ((((a0) * ((a2).sin())) + ((a2) * ((a3).sin()))).powi(2))
761 + ((((a1) * ((a0).sin())) + ((a3) * ((a1).sin()))).powi(2))
762 + ((((a1) * ((a2).sin())) + ((a3) * ((a3).sin()))).powi(2)))
763 .sqrt())
764 .cos())))
765 + (-(((((((a0) * ((a0).sin())) + ((a2) * ((a1).sin()))).powi(2))
766 + ((((a0) * ((a2).sin())) + ((a2) * ((a3).sin()))).powi(2))
767 + ((((a1) * ((a0).sin())) + ((a3) * ((a1).sin()))).powi(2))
768 + ((((a1) * ((a2).sin())) + ((a3) * ((a3).sin()))).powi(2)))
769 .powf(-1.5000000000000000000_f64))
770 * (((((a1) * ((a2).sin())) + ((a3) * ((a3).sin()))) * ((a2).sin()))
771 + ((0.50000000000000000000_f64)
772 * (((2.0000000000000000000_f64) * ((a0).sin()))
773 + ((2.0000000000000000000_f64) * (a3) * ((a1).cos())))
774 * (((a1) * ((a0).sin())) + ((a3) * ((a1).sin()))))
775 + ((a2) * (((a0) * ((a0).sin())) + ((a2) * ((a1).sin()))) * ((a1).cos())))
776 * ((-((((a0) * ((a0).sin())) + ((a2) * ((a1).sin()))) * ((a1).sin())))
777 + ((-0.50000000000000000000_f64)
778 * (((2.0000000000000000000_f64) * ((a3).sin()))
779 + ((2.0000000000000000000_f64) * (a0) * ((a2).cos())))
780 * (((a0) * ((a2).sin())) + ((a2) * ((a3).sin()))))
781 + (-((a1) * (((a1) * ((a2).sin())) + ((a3) * ((a3).sin()))) * ((a2).cos()))))
782 * (((((((a0) * ((a0).sin())) + ((a2) * ((a1).sin()))).powi(2))
783 + ((((a0) * ((a2).sin())) + ((a2) * ((a3).sin()))).powi(2))
784 + ((((a1) * ((a0).sin())) + ((a3) * ((a1).sin()))).powi(2))
785 + ((((a1) * ((a2).sin())) + ((a3) * ((a3).sin()))).powi(2)))
786 .sqrt())
787 .sin()))))
788}
789
790#[inline]
791pub fn hess_mmsin2_2_2(a0: f64, a1: f64, a2: f64, a3: f64) -> f64 {
792 ((-(((((((a0) * ((a0).sin())) + ((a2) * ((a1).sin()))) * ((a1).sin()))
793 + ((0.50000000000000000000_f64)
794 * (((2.0000000000000000000_f64) * ((a3).sin()))
795 + ((2.0000000000000000000_f64) * (a0) * ((a2).cos())))
796 * (((a0) * ((a2).sin())) + ((a2) * ((a3).sin()))))
797 + ((a1) * (((a1) * ((a2).sin())) + ((a3) * ((a3).sin()))) * ((a2).cos())))
798 .powi(2))
799 * ((((((a0) * ((a0).sin())) + ((a2) * ((a1).sin()))).powi(2))
800 + ((((a0) * ((a2).sin())) + ((a2) * ((a3).sin()))).powi(2))
801 + ((((a1) * ((a0).sin())) + ((a3) * ((a1).sin()))).powi(2))
802 + ((((a1) * ((a2).sin())) + ((a3) * ((a3).sin()))).powi(2)))
803 .recip())
804 * (((((((a0) * ((a0).sin())) + ((a2) * ((a1).sin()))).powi(2))
805 + ((((a0) * ((a2).sin())) + ((a2) * ((a3).sin()))).powi(2))
806 + ((((a1) * ((a0).sin())) + ((a3) * ((a1).sin()))).powi(2))
807 + ((((a1) * ((a2).sin())) + ((a3) * ((a3).sin()))).powi(2)))
808 .sqrt())
809 .cos())))
810 + (-(((((((a0) * ((a0).sin())) + ((a2) * ((a1).sin()))).powi(2))
811 + ((((a0) * ((a2).sin())) + ((a2) * ((a3).sin()))).powi(2))
812 + ((((a1) * ((a0).sin())) + ((a3) * ((a1).sin()))).powi(2))
813 + ((((a1) * ((a2).sin())) + ((a3) * ((a3).sin()))).powi(2)))
814 .powf(-0.50000000000000000000_f64))
815 * ((((a1).sin()).powi(2))
816 + (((a1).powi(2)) * (((a2).cos()).powi(2)))
817 + ((0.50000000000000000000_f64)
818 * (((2.0000000000000000000_f64) * ((a3).sin()))
819 + ((2.0000000000000000000_f64) * (a0) * ((a2).cos())))
820 * (((a0) * ((a2).cos())) + ((a3).sin())))
821 + (-((a0) * (((a0) * ((a2).sin())) + ((a2) * ((a3).sin()))) * ((a2).sin())))
822 + (-((a1) * (((a1) * ((a2).sin())) + ((a3) * ((a3).sin()))) * ((a2).sin()))))
823 * (((((((a0) * ((a0).sin())) + ((a2) * ((a1).sin()))).powi(2))
824 + ((((a0) * ((a2).sin())) + ((a2) * ((a3).sin()))).powi(2))
825 + ((((a1) * ((a0).sin())) + ((a3) * ((a1).sin()))).powi(2))
826 + ((((a1) * ((a2).sin())) + ((a3) * ((a3).sin()))).powi(2)))
827 .sqrt())
828 .sin())))
829 + (-(((((((a0) * ((a0).sin())) + ((a2) * ((a1).sin()))).powi(2))
830 + ((((a0) * ((a2).sin())) + ((a2) * ((a3).sin()))).powi(2))
831 + ((((a1) * ((a0).sin())) + ((a3) * ((a1).sin()))).powi(2))
832 + ((((a1) * ((a2).sin())) + ((a3) * ((a3).sin()))).powi(2)))
833 .powf(-1.5000000000000000000_f64))
834 * (((((a0) * ((a0).sin())) + ((a2) * ((a1).sin()))) * ((a1).sin()))
835 + ((0.50000000000000000000_f64)
836 * (((2.0000000000000000000_f64) * ((a3).sin()))
837 + ((2.0000000000000000000_f64) * (a0) * ((a2).cos())))
838 * (((a0) * ((a2).sin())) + ((a2) * ((a3).sin()))))
839 + ((a1) * (((a1) * ((a2).sin())) + ((a3) * ((a3).sin()))) * ((a2).cos())))
840 * ((-((((a0) * ((a0).sin())) + ((a2) * ((a1).sin()))) * ((a1).sin())))
841 + ((-0.50000000000000000000_f64)
842 * (((2.0000000000000000000_f64) * ((a3).sin()))
843 + ((2.0000000000000000000_f64) * (a0) * ((a2).cos())))
844 * (((a0) * ((a2).sin())) + ((a2) * ((a3).sin()))))
845 + (-((a1) * (((a1) * ((a2).sin())) + ((a3) * ((a3).sin()))) * ((a2).cos()))))
846 * (((((((a0) * ((a0).sin())) + ((a2) * ((a1).sin()))).powi(2))
847 + ((((a0) * ((a2).sin())) + ((a2) * ((a3).sin()))).powi(2))
848 + ((((a1) * ((a0).sin())) + ((a3) * ((a1).sin()))).powi(2))
849 + ((((a1) * ((a2).sin())) + ((a3) * ((a3).sin()))).powi(2)))
850 .sqrt())
851 .sin()))))
852}
853
854#[inline]
855pub fn hess_mmsin2_2_3(a0: f64, a1: f64, a2: f64, a3: f64) -> f64 {
856 ((-(((((((a0) * ((a0).sin())) + ((a2) * ((a1).sin()))).powi(2))
857 + ((((a0) * ((a2).sin())) + ((a2) * ((a3).sin()))).powi(2))
858 + ((((a1) * ((a0).sin())) + ((a3) * ((a1).sin()))).powi(2))
859 + ((((a1) * ((a2).sin())) + ((a3) * ((a3).sin()))).powi(2)))
860 .powf(-0.50000000000000000000_f64))
861 * (((((a0) * ((a2).sin())) + ((a2) * ((a3).sin()))) * ((a3).cos()))
862 + ((a1) * (((a3) * ((a3).cos())) + ((a3).sin())) * ((a2).cos()))
863 + ((0.50000000000000000000_f64)
864 * (a2)
865 * (((2.0000000000000000000_f64) * ((a3).sin()))
866 + ((2.0000000000000000000_f64) * (a0) * ((a2).cos())))
867 * ((a3).cos())))
868 * (((((((a0) * ((a0).sin())) + ((a2) * ((a1).sin()))).powi(2))
869 + ((((a0) * ((a2).sin())) + ((a2) * ((a3).sin()))).powi(2))
870 + ((((a1) * ((a0).sin())) + ((a3) * ((a1).sin()))).powi(2))
871 + ((((a1) * ((a2).sin())) + ((a3) * ((a3).sin()))).powi(2)))
872 .sqrt())
873 .sin())))
874 + (-(((((((a0) * ((a0).sin())) + ((a2) * ((a1).sin()))).powi(2))
875 + ((((a0) * ((a2).sin())) + ((a2) * ((a3).sin()))).powi(2))
876 + ((((a1) * ((a0).sin())) + ((a3) * ((a1).sin()))).powi(2))
877 + ((((a1) * ((a2).sin())) + ((a3) * ((a3).sin()))).powi(2)))
878 .recip())
879 * (((((a0) * ((a0).sin())) + ((a2) * ((a1).sin()))) * ((a1).sin()))
880 + ((0.50000000000000000000_f64)
881 * (((2.0000000000000000000_f64) * ((a3).sin()))
882 + ((2.0000000000000000000_f64) * (a0) * ((a2).cos())))
883 * (((a0) * ((a2).sin())) + ((a2) * ((a3).sin()))))
884 + ((a1) * (((a1) * ((a2).sin())) + ((a3) * ((a3).sin()))) * ((a2).cos())))
885 * (((((a1) * ((a0).sin())) + ((a3) * ((a1).sin()))) * ((a1).sin()))
886 + ((0.50000000000000000000_f64)
887 * (((2.0000000000000000000_f64) * ((a3).sin()))
888 + ((2.0000000000000000000_f64) * (a3) * ((a3).cos())))
889 * (((a1) * ((a2).sin())) + ((a3) * ((a3).sin()))))
890 + ((a2) * (((a0) * ((a2).sin())) + ((a2) * ((a3).sin()))) * ((a3).cos())))
891 * (((((((a0) * ((a0).sin())) + ((a2) * ((a1).sin()))).powi(2))
892 + ((((a0) * ((a2).sin())) + ((a2) * ((a3).sin()))).powi(2))
893 + ((((a1) * ((a0).sin())) + ((a3) * ((a1).sin()))).powi(2))
894 + ((((a1) * ((a2).sin())) + ((a3) * ((a3).sin()))).powi(2)))
895 .sqrt())
896 .cos())))
897 + (-(((((((a0) * ((a0).sin())) + ((a2) * ((a1).sin()))).powi(2))
898 + ((((a0) * ((a2).sin())) + ((a2) * ((a3).sin()))).powi(2))
899 + ((((a1) * ((a0).sin())) + ((a3) * ((a1).sin()))).powi(2))
900 + ((((a1) * ((a2).sin())) + ((a3) * ((a3).sin()))).powi(2)))
901 .powf(-1.5000000000000000000_f64))
902 * (((((a0) * ((a0).sin())) + ((a2) * ((a1).sin()))) * ((a1).sin()))
903 + ((0.50000000000000000000_f64)
904 * (((2.0000000000000000000_f64) * ((a3).sin()))
905 + ((2.0000000000000000000_f64) * (a0) * ((a2).cos())))
906 * (((a0) * ((a2).sin())) + ((a2) * ((a3).sin()))))
907 + ((a1) * (((a1) * ((a2).sin())) + ((a3) * ((a3).sin()))) * ((a2).cos())))
908 * ((-((((a1) * ((a0).sin())) + ((a3) * ((a1).sin()))) * ((a1).sin())))
909 + ((-0.50000000000000000000_f64)
910 * (((2.0000000000000000000_f64) * ((a3).sin()))
911 + ((2.0000000000000000000_f64) * (a3) * ((a3).cos())))
912 * (((a1) * ((a2).sin())) + ((a3) * ((a3).sin()))))
913 + (-((a2) * (((a0) * ((a2).sin())) + ((a2) * ((a3).sin()))) * ((a3).cos()))))
914 * (((((((a0) * ((a0).sin())) + ((a2) * ((a1).sin()))).powi(2))
915 + ((((a0) * ((a2).sin())) + ((a2) * ((a3).sin()))).powi(2))
916 + ((((a1) * ((a0).sin())) + ((a3) * ((a1).sin()))).powi(2))
917 + ((((a1) * ((a2).sin())) + ((a3) * ((a3).sin()))).powi(2)))
918 .sqrt())
919 .sin()))))
920}
921
922#[inline]
923pub fn hess_mmsin2_3_0(a0: f64, a1: f64, a2: f64, a3: f64) -> f64 {
924 ((-(((((((a0) * ((a0).sin())) + ((a2) * ((a1).sin()))).powi(2))
925 + ((((a0) * ((a2).sin())) + ((a2) * ((a3).sin()))).powi(2))
926 + ((((a1) * ((a0).sin())) + ((a3) * ((a1).sin()))).powi(2))
927 + ((((a1) * ((a2).sin())) + ((a3) * ((a3).sin()))).powi(2)))
928 .powf(-0.50000000000000000000_f64))
929 * (((a1) * ((a0).cos()) * ((a1).sin())) + ((a2) * ((a3).cos()) * ((a2).sin())))
930 * (((((((a0) * ((a0).sin())) + ((a2) * ((a1).sin()))).powi(2))
931 + ((((a0) * ((a2).sin())) + ((a2) * ((a3).sin()))).powi(2))
932 + ((((a1) * ((a0).sin())) + ((a3) * ((a1).sin()))).powi(2))
933 + ((((a1) * ((a2).sin())) + ((a3) * ((a3).sin()))).powi(2)))
934 .sqrt())
935 .sin())))
936 + (-(((((((a0) * ((a0).sin())) + ((a2) * ((a1).sin()))).powi(2))
937 + ((((a0) * ((a2).sin())) + ((a2) * ((a3).sin()))).powi(2))
938 + ((((a1) * ((a0).sin())) + ((a3) * ((a1).sin()))).powi(2))
939 + ((((a1) * ((a2).sin())) + ((a3) * ((a3).sin()))).powi(2)))
940 .recip())
941 * (((((a0) * ((a2).sin())) + ((a2) * ((a3).sin()))) * ((a2).sin()))
942 + ((0.50000000000000000000_f64)
943 * (((2.0000000000000000000_f64) * ((a0).sin()))
944 + ((2.0000000000000000000_f64) * (a0) * ((a0).cos())))
945 * (((a0) * ((a0).sin())) + ((a2) * ((a1).sin()))))
946 + ((a1) * (((a1) * ((a0).sin())) + ((a3) * ((a1).sin()))) * ((a0).cos())))
947 * (((((a1) * ((a0).sin())) + ((a3) * ((a1).sin()))) * ((a1).sin()))
948 + ((0.50000000000000000000_f64)
949 * (((2.0000000000000000000_f64) * ((a3).sin()))
950 + ((2.0000000000000000000_f64) * (a3) * ((a3).cos())))
951 * (((a1) * ((a2).sin())) + ((a3) * ((a3).sin()))))
952 + ((a2) * (((a0) * ((a2).sin())) + ((a2) * ((a3).sin()))) * ((a3).cos())))
953 * (((((((a0) * ((a0).sin())) + ((a2) * ((a1).sin()))).powi(2))
954 + ((((a0) * ((a2).sin())) + ((a2) * ((a3).sin()))).powi(2))
955 + ((((a1) * ((a0).sin())) + ((a3) * ((a1).sin()))).powi(2))
956 + ((((a1) * ((a2).sin())) + ((a3) * ((a3).sin()))).powi(2)))
957 .sqrt())
958 .cos())))
959 + (-(((((((a0) * ((a0).sin())) + ((a2) * ((a1).sin()))).powi(2))
960 + ((((a0) * ((a2).sin())) + ((a2) * ((a3).sin()))).powi(2))
961 + ((((a1) * ((a0).sin())) + ((a3) * ((a1).sin()))).powi(2))
962 + ((((a1) * ((a2).sin())) + ((a3) * ((a3).sin()))).powi(2)))
963 .powf(-1.5000000000000000000_f64))
964 * (((((a0) * ((a2).sin())) + ((a2) * ((a3).sin()))) * ((a2).sin()))
965 + ((0.50000000000000000000_f64)
966 * (((2.0000000000000000000_f64) * ((a0).sin()))
967 + ((2.0000000000000000000_f64) * (a0) * ((a0).cos())))
968 * (((a0) * ((a0).sin())) + ((a2) * ((a1).sin()))))
969 + ((a1) * (((a1) * ((a0).sin())) + ((a3) * ((a1).sin()))) * ((a0).cos())))
970 * ((-((((a1) * ((a0).sin())) + ((a3) * ((a1).sin()))) * ((a1).sin())))
971 + ((-0.50000000000000000000_f64)
972 * (((2.0000000000000000000_f64) * ((a3).sin()))
973 + ((2.0000000000000000000_f64) * (a3) * ((a3).cos())))
974 * (((a1) * ((a2).sin())) + ((a3) * ((a3).sin()))))
975 + (-((a2) * (((a0) * ((a2).sin())) + ((a2) * ((a3).sin()))) * ((a3).cos()))))
976 * (((((((a0) * ((a0).sin())) + ((a2) * ((a1).sin()))).powi(2))
977 + ((((a0) * ((a2).sin())) + ((a2) * ((a3).sin()))).powi(2))
978 + ((((a1) * ((a0).sin())) + ((a3) * ((a1).sin()))).powi(2))
979 + ((((a1) * ((a2).sin())) + ((a3) * ((a3).sin()))).powi(2)))
980 .sqrt())
981 .sin()))))
982}
983
984#[inline]
985pub fn hess_mmsin2_3_1(a0: f64, a1: f64, a2: f64, a3: f64) -> f64 {
986 ((-(((((((a0) * ((a0).sin())) + ((a2) * ((a1).sin()))).powi(2))
987 + ((((a0) * ((a2).sin())) + ((a2) * ((a3).sin()))).powi(2))
988 + ((((a1) * ((a0).sin())) + ((a3) * ((a1).sin()))).powi(2))
989 + ((((a1) * ((a2).sin())) + ((a3) * ((a3).sin()))).powi(2)))
990 .powf(-0.50000000000000000000_f64))
991 * (((((a1) * ((a0).sin())) + ((a3) * ((a1).sin()))) * ((a1).cos()))
992 + ((((a3) * ((a3).cos())) + ((a3).sin())) * ((a2).sin()))
993 + ((0.50000000000000000000_f64)
994 * (((2.0000000000000000000_f64) * ((a0).sin()))
995 + ((2.0000000000000000000_f64) * (a3) * ((a1).cos())))
996 * ((a1).sin())))
997 * (((((((a0) * ((a0).sin())) + ((a2) * ((a1).sin()))).powi(2))
998 + ((((a0) * ((a2).sin())) + ((a2) * ((a3).sin()))).powi(2))
999 + ((((a1) * ((a0).sin())) + ((a3) * ((a1).sin()))).powi(2))
1000 + ((((a1) * ((a2).sin())) + ((a3) * ((a3).sin()))).powi(2)))
1001 .sqrt())
1002 .sin())))
1003 + (-(((((((a0) * ((a0).sin())) + ((a2) * ((a1).sin()))).powi(2))
1004 + ((((a0) * ((a2).sin())) + ((a2) * ((a3).sin()))).powi(2))
1005 + ((((a1) * ((a0).sin())) + ((a3) * ((a1).sin()))).powi(2))
1006 + ((((a1) * ((a2).sin())) + ((a3) * ((a3).sin()))).powi(2)))
1007 .recip())
1008 * (((((a1) * ((a0).sin())) + ((a3) * ((a1).sin()))) * ((a1).sin()))
1009 + ((0.50000000000000000000_f64)
1010 * (((2.0000000000000000000_f64) * ((a3).sin()))
1011 + ((2.0000000000000000000_f64) * (a3) * ((a3).cos())))
1012 * (((a1) * ((a2).sin())) + ((a3) * ((a3).sin()))))
1013 + ((a2) * (((a0) * ((a2).sin())) + ((a2) * ((a3).sin()))) * ((a3).cos())))
1014 * (((((a1) * ((a2).sin())) + ((a3) * ((a3).sin()))) * ((a2).sin()))
1015 + ((0.50000000000000000000_f64)
1016 * (((2.0000000000000000000_f64) * ((a0).sin()))
1017 + ((2.0000000000000000000_f64) * (a3) * ((a1).cos())))
1018 * (((a1) * ((a0).sin())) + ((a3) * ((a1).sin()))))
1019 + ((a2) * (((a0) * ((a0).sin())) + ((a2) * ((a1).sin()))) * ((a1).cos())))
1020 * (((((((a0) * ((a0).sin())) + ((a2) * ((a1).sin()))).powi(2))
1021 + ((((a0) * ((a2).sin())) + ((a2) * ((a3).sin()))).powi(2))
1022 + ((((a1) * ((a0).sin())) + ((a3) * ((a1).sin()))).powi(2))
1023 + ((((a1) * ((a2).sin())) + ((a3) * ((a3).sin()))).powi(2)))
1024 .sqrt())
1025 .cos())))
1026 + (-(((((((a0) * ((a0).sin())) + ((a2) * ((a1).sin()))).powi(2))
1027 + ((((a0) * ((a2).sin())) + ((a2) * ((a3).sin()))).powi(2))
1028 + ((((a1) * ((a0).sin())) + ((a3) * ((a1).sin()))).powi(2))
1029 + ((((a1) * ((a2).sin())) + ((a3) * ((a3).sin()))).powi(2)))
1030 .powf(-1.5000000000000000000_f64))
1031 * (((((a1) * ((a2).sin())) + ((a3) * ((a3).sin()))) * ((a2).sin()))
1032 + ((0.50000000000000000000_f64)
1033 * (((2.0000000000000000000_f64) * ((a0).sin()))
1034 + ((2.0000000000000000000_f64) * (a3) * ((a1).cos())))
1035 * (((a1) * ((a0).sin())) + ((a3) * ((a1).sin()))))
1036 + ((a2) * (((a0) * ((a0).sin())) + ((a2) * ((a1).sin()))) * ((a1).cos())))
1037 * ((-((((a1) * ((a0).sin())) + ((a3) * ((a1).sin()))) * ((a1).sin())))
1038 + ((-0.50000000000000000000_f64)
1039 * (((2.0000000000000000000_f64) * ((a3).sin()))
1040 + ((2.0000000000000000000_f64) * (a3) * ((a3).cos())))
1041 * (((a1) * ((a2).sin())) + ((a3) * ((a3).sin()))))
1042 + (-((a2) * (((a0) * ((a2).sin())) + ((a2) * ((a3).sin()))) * ((a3).cos()))))
1043 * (((((((a0) * ((a0).sin())) + ((a2) * ((a1).sin()))).powi(2))
1044 + ((((a0) * ((a2).sin())) + ((a2) * ((a3).sin()))).powi(2))
1045 + ((((a1) * ((a0).sin())) + ((a3) * ((a1).sin()))).powi(2))
1046 + ((((a1) * ((a2).sin())) + ((a3) * ((a3).sin()))).powi(2)))
1047 .sqrt())
1048 .sin()))))
1049}
1050
1051#[inline]
1052pub fn hess_mmsin2_3_2(a0: f64, a1: f64, a2: f64, a3: f64) -> f64 {
1053 ((-(((((((a0) * ((a0).sin())) + ((a2) * ((a1).sin()))).powi(2))
1054 + ((((a0) * ((a2).sin())) + ((a2) * ((a3).sin()))).powi(2))
1055 + ((((a1) * ((a0).sin())) + ((a3) * ((a1).sin()))).powi(2))
1056 + ((((a1) * ((a2).sin())) + ((a3) * ((a3).sin()))).powi(2)))
1057 .powf(-0.50000000000000000000_f64))
1058 * (((((a0) * ((a2).sin())) + ((a2) * ((a3).sin()))) * ((a3).cos()))
1059 + ((a1) * (((a3) * ((a3).cos())) + ((a3).sin())) * ((a2).cos()))
1060 + ((0.50000000000000000000_f64)
1061 * (a2)
1062 * (((2.0000000000000000000_f64) * ((a3).sin()))
1063 + ((2.0000000000000000000_f64) * (a0) * ((a2).cos())))
1064 * ((a3).cos())))
1065 * (((((((a0) * ((a0).sin())) + ((a2) * ((a1).sin()))).powi(2))
1066 + ((((a0) * ((a2).sin())) + ((a2) * ((a3).sin()))).powi(2))
1067 + ((((a1) * ((a0).sin())) + ((a3) * ((a1).sin()))).powi(2))
1068 + ((((a1) * ((a2).sin())) + ((a3) * ((a3).sin()))).powi(2)))
1069 .sqrt())
1070 .sin())))
1071 + (-(((((((a0) * ((a0).sin())) + ((a2) * ((a1).sin()))).powi(2))
1072 + ((((a0) * ((a2).sin())) + ((a2) * ((a3).sin()))).powi(2))
1073 + ((((a1) * ((a0).sin())) + ((a3) * ((a1).sin()))).powi(2))
1074 + ((((a1) * ((a2).sin())) + ((a3) * ((a3).sin()))).powi(2)))
1075 .recip())
1076 * (((((a0) * ((a0).sin())) + ((a2) * ((a1).sin()))) * ((a1).sin()))
1077 + ((0.50000000000000000000_f64)
1078 * (((2.0000000000000000000_f64) * ((a3).sin()))
1079 + ((2.0000000000000000000_f64) * (a0) * ((a2).cos())))
1080 * (((a0) * ((a2).sin())) + ((a2) * ((a3).sin()))))
1081 + ((a1) * (((a1) * ((a2).sin())) + ((a3) * ((a3).sin()))) * ((a2).cos())))
1082 * (((((a1) * ((a0).sin())) + ((a3) * ((a1).sin()))) * ((a1).sin()))
1083 + ((0.50000000000000000000_f64)
1084 * (((2.0000000000000000000_f64) * ((a3).sin()))
1085 + ((2.0000000000000000000_f64) * (a3) * ((a3).cos())))
1086 * (((a1) * ((a2).sin())) + ((a3) * ((a3).sin()))))
1087 + ((a2) * (((a0) * ((a2).sin())) + ((a2) * ((a3).sin()))) * ((a3).cos())))
1088 * (((((((a0) * ((a0).sin())) + ((a2) * ((a1).sin()))).powi(2))
1089 + ((((a0) * ((a2).sin())) + ((a2) * ((a3).sin()))).powi(2))
1090 + ((((a1) * ((a0).sin())) + ((a3) * ((a1).sin()))).powi(2))
1091 + ((((a1) * ((a2).sin())) + ((a3) * ((a3).sin()))).powi(2)))
1092 .sqrt())
1093 .cos())))
1094 + (-(((((((a0) * ((a0).sin())) + ((a2) * ((a1).sin()))).powi(2))
1095 + ((((a0) * ((a2).sin())) + ((a2) * ((a3).sin()))).powi(2))
1096 + ((((a1) * ((a0).sin())) + ((a3) * ((a1).sin()))).powi(2))
1097 + ((((a1) * ((a2).sin())) + ((a3) * ((a3).sin()))).powi(2)))
1098 .powf(-1.5000000000000000000_f64))
1099 * (((((a0) * ((a0).sin())) + ((a2) * ((a1).sin()))) * ((a1).sin()))
1100 + ((0.50000000000000000000_f64)
1101 * (((2.0000000000000000000_f64) * ((a3).sin()))
1102 + ((2.0000000000000000000_f64) * (a0) * ((a2).cos())))
1103 * (((a0) * ((a2).sin())) + ((a2) * ((a3).sin()))))
1104 + ((a1) * (((a1) * ((a2).sin())) + ((a3) * ((a3).sin()))) * ((a2).cos())))
1105 * ((-((((a1) * ((a0).sin())) + ((a3) * ((a1).sin()))) * ((a1).sin())))
1106 + ((-0.50000000000000000000_f64)
1107 * (((2.0000000000000000000_f64) * ((a3).sin()))
1108 + ((2.0000000000000000000_f64) * (a3) * ((a3).cos())))
1109 * (((a1) * ((a2).sin())) + ((a3) * ((a3).sin()))))
1110 + (-((a2) * (((a0) * ((a2).sin())) + ((a2) * ((a3).sin()))) * ((a3).cos()))))
1111 * (((((((a0) * ((a0).sin())) + ((a2) * ((a1).sin()))).powi(2))
1112 + ((((a0) * ((a2).sin())) + ((a2) * ((a3).sin()))).powi(2))
1113 + ((((a1) * ((a0).sin())) + ((a3) * ((a1).sin()))).powi(2))
1114 + ((((a1) * ((a2).sin())) + ((a3) * ((a3).sin()))).powi(2)))
1115 .sqrt())
1116 .sin()))))
1117}
1118
1119#[inline]
1120pub fn hess_mmsin2_3_3(a0: f64, a1: f64, a2: f64, a3: f64) -> f64 {
1121 ((-(((((((a1) * ((a0).sin())) + ((a3) * ((a1).sin()))) * ((a1).sin()))
1122 + ((0.50000000000000000000_f64)
1123 * (((2.0000000000000000000_f64) * ((a3).sin()))
1124 + ((2.0000000000000000000_f64) * (a3) * ((a3).cos())))
1125 * (((a1) * ((a2).sin())) + ((a3) * ((a3).sin()))))
1126 + ((a2) * (((a0) * ((a2).sin())) + ((a2) * ((a3).sin()))) * ((a3).cos())))
1127 .powi(2))
1128 * ((((((a0) * ((a0).sin())) + ((a2) * ((a1).sin()))).powi(2))
1129 + ((((a0) * ((a2).sin())) + ((a2) * ((a3).sin()))).powi(2))
1130 + ((((a1) * ((a0).sin())) + ((a3) * ((a1).sin()))).powi(2))
1131 + ((((a1) * ((a2).sin())) + ((a3) * ((a3).sin()))).powi(2)))
1132 .recip())
1133 * (((((((a0) * ((a0).sin())) + ((a2) * ((a1).sin()))).powi(2))
1134 + ((((a0) * ((a2).sin())) + ((a2) * ((a3).sin()))).powi(2))
1135 + ((((a1) * ((a0).sin())) + ((a3) * ((a1).sin()))).powi(2))
1136 + ((((a1) * ((a2).sin())) + ((a3) * ((a3).sin()))).powi(2)))
1137 .sqrt())
1138 .cos())))
1139 + (-(((((((a0) * ((a0).sin())) + ((a2) * ((a1).sin()))).powi(2))
1140 + ((((a0) * ((a2).sin())) + ((a2) * ((a3).sin()))).powi(2))
1141 + ((((a1) * ((a0).sin())) + ((a3) * ((a1).sin()))).powi(2))
1142 + ((((a1) * ((a2).sin())) + ((a3) * ((a3).sin()))).powi(2)))
1143 .powf(-0.50000000000000000000_f64))
1144 * ((((a1).sin()).powi(2))
1145 + (((a2).powi(2)) * (((a3).cos()).powi(2)))
1146 + ((0.50000000000000000000_f64)
1147 * (((2.0000000000000000000_f64) * ((a3).sin()))
1148 + ((2.0000000000000000000_f64) * (a3) * ((a3).cos())))
1149 * (((a3) * ((a3).cos())) + ((a3).sin())))
1150 + ((0.50000000000000000000_f64)
1151 * (((4.0000000000000000000_f64) * ((a3).cos()))
1152 + ((-2.0000000000000000000_f64) * (a3) * ((a3).sin())))
1153 * (((a1) * ((a2).sin())) + ((a3) * ((a3).sin()))))
1154 + (-((a2) * (((a0) * ((a2).sin())) + ((a2) * ((a3).sin()))) * ((a3).sin()))))
1155 * (((((((a0) * ((a0).sin())) + ((a2) * ((a1).sin()))).powi(2))
1156 + ((((a0) * ((a2).sin())) + ((a2) * ((a3).sin()))).powi(2))
1157 + ((((a1) * ((a0).sin())) + ((a3) * ((a1).sin()))).powi(2))
1158 + ((((a1) * ((a2).sin())) + ((a3) * ((a3).sin()))).powi(2)))
1159 .sqrt())
1160 .sin())))
1161 + (-(((((((a0) * ((a0).sin())) + ((a2) * ((a1).sin()))).powi(2))
1162 + ((((a0) * ((a2).sin())) + ((a2) * ((a3).sin()))).powi(2))
1163 + ((((a1) * ((a0).sin())) + ((a3) * ((a1).sin()))).powi(2))
1164 + ((((a1) * ((a2).sin())) + ((a3) * ((a3).sin()))).powi(2)))
1165 .powf(-1.5000000000000000000_f64))
1166 * (((((a1) * ((a0).sin())) + ((a3) * ((a1).sin()))) * ((a1).sin()))
1167 + ((0.50000000000000000000_f64)
1168 * (((2.0000000000000000000_f64) * ((a3).sin()))
1169 + ((2.0000000000000000000_f64) * (a3) * ((a3).cos())))
1170 * (((a1) * ((a2).sin())) + ((a3) * ((a3).sin()))))
1171 + ((a2) * (((a0) * ((a2).sin())) + ((a2) * ((a3).sin()))) * ((a3).cos())))
1172 * ((-((((a1) * ((a0).sin())) + ((a3) * ((a1).sin()))) * ((a1).sin())))
1173 + ((-0.50000000000000000000_f64)
1174 * (((2.0000000000000000000_f64) * ((a3).sin()))
1175 + ((2.0000000000000000000_f64) * (a3) * ((a3).cos())))
1176 * (((a1) * ((a2).sin())) + ((a3) * ((a3).sin()))))
1177 + (-((a2) * (((a0) * ((a2).sin())) + ((a2) * ((a3).sin()))) * ((a3).cos()))))
1178 * (((((((a0) * ((a0).sin())) + ((a2) * ((a1).sin()))).powi(2))
1179 + ((((a0) * ((a2).sin())) + ((a2) * ((a3).sin()))).powi(2))
1180 + ((((a1) * ((a0).sin())) + ((a3) * ((a1).sin()))).powi(2))
1181 + ((((a1) * ((a2).sin())) + ((a3) * ((a3).sin()))).powi(2)))
1182 .sqrt())
1183 .sin()))))
1184}
1185
1186pub fn hess_mmsin2(a0: f64, a1: f64, a2: f64, a3: f64) -> nalgebra::SMatrix<f64, 4, 4> {
1187 let mut result = nalgebra::SMatrix::zeros();
1188
1189 result[(0, 0)] = hess_mmsin2_0_0(a0, a1, a2, a3);
1190
1191 result[(0, 1)] = hess_mmsin2_0_1(a0, a1, a2, a3);
1192
1193 result[(0, 2)] = hess_mmsin2_0_2(a0, a1, a2, a3);
1194
1195 result[(0, 3)] = hess_mmsin2_0_3(a0, a1, a2, a3);
1196
1197 result[(1, 0)] = hess_mmsin2_1_0(a0, a1, a2, a3);
1198
1199 result[(1, 1)] = hess_mmsin2_1_1(a0, a1, a2, a3);
1200
1201 result[(1, 2)] = hess_mmsin2_1_2(a0, a1, a2, a3);
1202
1203 result[(1, 3)] = hess_mmsin2_1_3(a0, a1, a2, a3);
1204
1205 result[(2, 0)] = hess_mmsin2_2_0(a0, a1, a2, a3);
1206
1207 result[(2, 1)] = hess_mmsin2_2_1(a0, a1, a2, a3);
1208
1209 result[(2, 2)] = hess_mmsin2_2_2(a0, a1, a2, a3);
1210
1211 result[(2, 3)] = hess_mmsin2_2_3(a0, a1, a2, a3);
1212
1213 result[(3, 0)] = hess_mmsin2_3_0(a0, a1, a2, a3);
1214
1215 result[(3, 1)] = hess_mmsin2_3_1(a0, a1, a2, a3);
1216
1217 result[(3, 2)] = hess_mmsin2_3_2(a0, a1, a2, a3);
1218
1219 result[(3, 3)] = hess_mmsin2_3_3(a0, a1, a2, a3);
1220
1221 result
1222}