raddy/misc/
symbolic_3.rs

1/*
2
3* Code generated by Symars. Thank you for using Symars!
4  Symars is licensed under MIT licnese.
5  Repository: https://github.com/Da1sypetals/Symars
6
7* Computation code is not intended for manual editing.
8
9* If you find an error,
10  or if you believe Symars generates incorrect result,
11  please raise an issue under our repo with minimal reproducible example.
12
13*/
14
15#![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/*
117
118* Code generated by Symars. Thank you for using Symars!
119  Symars is licensed under MIT licnese.
120  Repository: https://github.com/Da1sypetals/Symars
121
122* Computation code is not intended for manual editing.
123
124* If you find an error,
125  or if you believe Symars generates incorrect result,
126  please raise an issue under our repo with minimal reproducible example.
127
128*/
129
130#[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}