differential_equations/tableau/
verner.rs

1//! Verner's Runge-Kutta methods with high-order interpolation. source: https://www.sfu.ca/~jverner/
2
3use crate::{tableau::ButcherTableau, traits::Real};
4
5impl<T: Real> ButcherTableau<T, 9, 10> {
6    /// Verner's RKV(6,5,5)e method with 5th-order interpolation.
7    ///
8    ///
9    /// A 'most efficient' Runge-Kutta (9,6(5)) FSAL pair with rational coefficients.
10    ///
11    /// # Overview
12    /// This is a nine-stage FSAL pair of methods of orders p=6 and p=5, with dominant stage order 3.
13    /// The coefficients are exact rationals. The method is "most efficient" in the sense that the
14    /// maximum coefficient in `b` and `A` is not large, and the propagating formula nearly minimizes
15    /// the 2-norm of the local truncation error (T_72 ≈ 1.44e-6).
16    ///
17    /// # Interpolation
18    /// Additional stages and interpolating weights allow computation of an approximation at any point
19    /// in the domain of solution of order up to p. These interpolants have continuous derivatives.
20    ///
21    /// The additional node c[9]=1/2 is chosen to achieve order 5 interpolation in ten stages, with
22    /// maximum 2-norm of the local truncation error Ti_62 ≈ 3.18e-4 (three local maxima on [0,1]).
23    ///
24    /// The remaining two nodes are chosen to minimize the maximum 2-norm of the local truncation error
25    /// for the order 6 interpolant, Ti_72 ≈ 4.44e-5 (two local maxima on [0,1]).
26    ///
27    /// # Source
28    /// [Verner's RKV655e](https://www.sfu.ca/~jverner/RKV65.IIIXb.Efficient.00000144617.081204.RATOnWeb)
29    ///
30    pub fn rkv655e() -> Self {
31        let mut c = [0.0; 10];
32        let mut a = [[0.0; 10]; 10];
33        let mut b = [0.0; 9];
34        let mut bh = [0.0; 9];
35        let mut bi5 = [[0.0; 10]; 10];
36
37        c[0] = 0.0;
38        c[1] = 0.6e-1;
39        c[2] = 9.593_333_333_333_333e-2;
40        c[3] = 0.1439;
41        c[4] = 0.4973;
42        c[5] = 0.9725;
43        c[6] = 0.9995;
44        c[7] = 1.0;
45        c[8] = 1.0;
46
47        a[1][0] = 0.6e-1;
48
49        a[2][0] = 1.923_996_296_296_296_2e-2;
50        a[2][1] = 7.669_337_037_037_037e-2;
51
52        a[3][0] = 0.35975e-1;
53        a[3][1] = 0.0;
54        a[3][2] = 0.107925;
55
56        a[4][0] = 1.318_683_415_233_148_4;
57        a[4][1] = 0.0;
58        a[4][2] = -5.042_058_063_628_562;
59        a[4][3] = 4.220_674_648_395_414;
60
61        a[5][0] = -41.872_591_664_327_516;
62        a[5][1] = 0.0;
63        a[5][2] = 159.432_562_163_137_5;
64        a[5][3] = -122.119_213_565_010_03;
65        a[5][4] = 5.531_743_066_200_054;
66
67        a[6][0] = -54.430_156_935_316_504;
68        a[6][1] = 0.0;
69        a[6][2] = 207.067_251_365_018_48;
70        a[6][3] = -158.610_813_784_59;
71        a[6][4] = 6.991_816_585_950_242;
72        a[6][5] = -1.859_723_106_220_323_4e-2;
73
74        a[7][0] = -54.663_741_787_281_98;
75        a[7][1] = 0.0;
76        a[7][2] = 207.952_806_255_389_36;
77        a[7][3] = -159.288_957_474_499_5;
78        a[7][4] = 7.018_743_740_796_944;
79        a[7][5] = -1.833_878_590_504_572_2e-2;
80        a[7][6] = -5.119_484_997_882_099e-4;
81
82        a[8][0] = 3.438_957_868_357_036e-2;
83        a[8][1] = 0.0;
84        a[8][2] = 0.0;
85        a[8][3] = 0.258_262_455_563_350_3;
86        a[8][4] = 0.420_937_118_967_353_7;
87        a[8][5] = 4.405_396_469_669_31;
88        a[8][6] = -176.483_119_024_298_65;
89        a[8][7] = 172.364_133_401_415_07;
90
91        b[0] = 3.438_957_868_357_036e-2;
92        b[1] = 0.0;
93        b[2] = 0.0;
94        b[3] = 0.258_262_455_563_350_3;
95        b[4] = 0.420_937_118_967_353_7;
96        b[5] = 4.405_396_469_669_31;
97        b[6] = -176.483_119_024_298_65;
98        b[7] = 172.364_133_401_415_07;
99        b[8] = 0.0;
100
101        bh[0] = 4.909_967_648_382_49e-2;
102        bh[1] = 0.0;
103        bh[2] = 0.0;
104        bh[3] = 0.225_111_222_951_652_42;
105        bh[4] = 0.469_468_225_302_956_2;
106        bh[5] = 0.806_579_224_998_886_8;
107        bh[6] = 0.0;
108        bh[7] = -0.607_119_489_177_796;
109        bh[8] = 5.686_113_944_047_569_6e-2;
110
111        c[9] = 0.5;
112
113        a[9][0] = 0.016524159013572807;
114        a[9][1] = 0.0;
115        a[9][2] = 0.0;
116        a[9][3] = 0.3053128187514179;
117        a[9][4] = 0.207_120_093_820_197_9;
118        a[9][5] = -1.293_879_140_655_123;
119        a[9][6] = 57.11988411588149;
120        a[9][7] = -55.87979207510932;
121        a[9][8] = 0.024830028297766014;
122
123        bi5[0][0] = 1.0;
124        bi5[0][1] = -5.308169607103576;
125        bi5[0][2] = 10.18168044895868;
126        bi5[0][3] = -7.520036991611715;
127        bi5[0][4] = 0.9340485368631161;
128        bi5[0][5] = 0.746_867_191_577_065;
129
130        bi5[1][0] = 0.0;
131        bi5[1][1] = 0.0;
132        bi5[1][2] = 0.0;
133        bi5[1][3] = 0.0;
134        bi5[1][4] = 0.0;
135        bi5[1][5] = 0.0;
136
137        bi5[2][0] = 0.0;
138        bi5[2][1] = 0.0;
139        bi5[2][2] = 0.0;
140        bi5[2][3] = 0.0;
141        bi5[2][4] = 0.0;
142        bi5[2][5] = 0.0;
143
144        bi5[3][0] = 0.0;
145        bi5[3][1] = 6.272050253212501;
146        bi5[3][2] = -16.02618147467746;
147        bi5[3][3] = 12.844356324519617;
148        bi5[3][4] = -1.148794504476759;
149        bi5[3][5] = -1.6831681430145497;
150
151        bi5[4][0] = 0.0;
152        bi5[4][1] = 6.876491702846305;
153        bi5[4][2] = -24.635767260846333;
154        bi5[4][3] = 33.21078648379717;
155        bi5[4][4] = -17.494_615_282_636_44;
156        bi5[4][5] = 2.4640414758066497;
157
158        bi5[5][0] = 0.0;
159        bi5[5][1] = -35.5444517105996;
160        bi5[5][2] = 165.7016170190242;
161        bi5[5][3] = -385.463_539_549_114_3;
162        bi5[5][4] = 442.4324137015702;
163        bi5[5][5] = -182.7206429912112;
164
165        bi5[6][0] = 0.0;
166        bi5[6][1] = 1918.6548566980114;
167        bi5[6][2] = -9268.121508966043;
168        bi5[6][3] = 20858.33702877255;
169        bi5[6][4] = -22645.82767158481;
170        bi5[6][5] = 8960.474176055993;
171
172        bi5[7][0] = 0.0;
173        bi5[7][1] = -1883.0698021327183;
174        bi5[7][2] = 9101.025187200634;
175        bi5[7][3] = -20473.188551959537;
176        bi5[7][4] = 22209.765551256534;
177        bi5[7][5] = -8_782.168_250_963_5;
178
179        bi5[8][0] = 0.0;
180        bi5[8][1] = 0.11902479635123644;
181        bi5[8][2] = -0.12502696705039375;
182        bi5[8][3] = 1.779956919394999;
183        bi5[8][4] = -4.660932123043763;
184        bi5[8][5] = 2.886977374347921;
185
186        bi5[9][0] = 0.0;
187        bi5[9][1] = -8.0;
188        bi5[9][2] = 32.0;
189        bi5[9][3] = -40.0;
190        bi5[9][4] = 16.0;
191        bi5[9][5] = 0.0;
192
193        let c = c.map(|x| T::from_f64(x).unwrap());
194        let a = a.map(|row| row.map(|x| T::from_f64(x).unwrap()));
195        let b = b.map(|x| T::from_f64(x).unwrap());
196        let bh = bh.map(|x| T::from_f64(x).unwrap());
197        let bi5 = bi5.map(|row| row.map(|x| T::from_f64(x).unwrap()));
198
199        Self {
200            c,
201            a,
202            b,
203            bh: Some(bh),
204            bi: Some(bi5),
205            er: None,
206        }
207    }
208}
209
210impl<T: Real> ButcherTableau<T, 9, 12> {
211    /// Verner's RKV(6,5,5)e method with 5th-order interpolation.
212    ///
213    ///
214    /// A 'most efficient' Runge-Kutta (9,6(5)) FSAL pair with rational coefficients.
215    ///
216    /// # Overview
217    /// This is a nine-stage FSAL pair of methods of orders p=6 and p=5, with dominant stage order 3.
218    /// The coefficients are exact rationals. The method is "most efficient" in the sense that the
219    /// maximum coefficient in `b` and `A` is not large, and the propagating formula nearly minimizes
220    /// the 2-norm of the local truncation error (T_72 ≈ 1.44e-6).
221    ///
222    /// # Interpolation
223    /// Additional stages and interpolating weights allow computation of an approximation at any point
224    /// in the domain of solution of order up to p. These interpolants have continuous derivatives.
225    ///
226    /// The additional node c[9]=1/2 is chosen to achieve order 5 interpolation in ten stages, with
227    /// maximum 2-norm of the local truncation error Ti_62 ≈ 3.18e-4 (three local maxima on [0,1]).
228    ///
229    /// The remaining two nodes are chosen to minimize the maximum 2-norm of the local truncation error
230    /// for the order 6 interpolant, Ti_72 ≈ 4.44e-5 (two local maxima on [0,1]).
231    ///
232    /// # Source
233    /// [Verner's RKV655e](https://www.sfu.ca/~jverner/RKV65.IIIXb.Efficient.00000144617.081204.RATOnWeb)
234    ///
235    pub fn rkv656e() -> Self {
236        let mut c = [0.0; 12];
237        let mut a = [[0.0; 12]; 12];
238        let mut b = [0.0; 9];
239        let mut bh = [0.0; 9];
240        let mut bi6 = [[0.0; 12]; 12];
241
242        c[0] = 0.0;
243        c[1] = 0.6e-1;
244        c[2] = 9.593_333_333_333_333e-2;
245        c[3] = 0.1439;
246        c[4] = 0.4973;
247        c[5] = 0.9725;
248        c[6] = 0.9995;
249        c[7] = 1.0;
250        c[8] = 1.0;
251
252        a[1][0] = 0.6e-1;
253
254        a[2][0] = 1.923_996_296_296_296_2e-2;
255        a[2][1] = 7.669_337_037_037_037e-2;
256
257        a[3][0] = 0.35975e-1;
258        a[3][1] = 0.0;
259        a[3][2] = 0.107925;
260
261        a[4][0] = 1.318_683_415_233_148_4;
262        a[4][1] = 0.0;
263        a[4][2] = -5.042_058_063_628_562;
264        a[4][3] = 4.220_674_648_395_414;
265
266        a[5][0] = -41.872_591_664_327_516;
267        a[5][1] = 0.0;
268        a[5][2] = 159.432_562_163_137_5;
269        a[5][3] = -122.119_213_565_010_03;
270        a[5][4] = 5.531_743_066_200_054;
271
272        a[6][0] = -54.430_156_935_316_504;
273        a[6][1] = 0.0;
274        a[6][2] = 207.067_251_365_018_48;
275        a[6][3] = -158.610_813_784_59;
276        a[6][4] = 6.991_816_585_950_242;
277        a[6][5] = -1.859_723_106_220_323_4e-2;
278
279        a[7][0] = -54.663_741_787_281_98;
280        a[7][1] = 0.0;
281        a[7][2] = 207.952_806_255_389_36;
282        a[7][3] = -159.288_957_474_499_5;
283        a[7][4] = 7.018_743_740_796_944;
284        a[7][5] = -1.833_878_590_504_572_2e-2;
285        a[7][6] = -5.119_484_997_882_099e-4;
286
287        a[8][0] = 3.438_957_868_357_036e-2;
288        a[8][1] = 0.0;
289        a[8][2] = 0.0;
290        a[8][3] = 0.258_262_455_563_350_3;
291        a[8][4] = 0.420_937_118_967_353_7;
292        a[8][5] = 4.405_396_469_669_31;
293        a[8][6] = -176.483_119_024_298_65;
294        a[8][7] = 172.364_133_401_415_07;
295
296        b[0] = 3.438_957_868_357_036e-2;
297        b[1] = 0.0;
298        b[2] = 0.0;
299        b[3] = 0.258_262_455_563_350_3;
300        b[4] = 0.420_937_118_967_353_7;
301        b[5] = 4.405_396_469_669_31;
302        b[6] = -176.483_119_024_298_65;
303        b[7] = 172.364_133_401_415_07;
304        b[8] = 0.0;
305
306        bh[0] = 4.909_967_648_382_49e-2;
307        bh[1] = 0.0;
308        bh[2] = 0.0;
309        bh[3] = 0.225_111_222_951_652_42;
310        bh[4] = 0.469_468_225_302_956_2;
311        bh[5] = 0.806_579_224_998_886_8;
312        bh[6] = 0.0;
313        bh[7] = -0.607_119_489_177_796;
314        bh[8] = 5.686_113_944_047_569_6e-2;
315
316        c[9] = 0.5;
317
318        a[9][0] = 0.016524159013572807;
319        a[9][1] = 0.0;
320        a[9][2] = 0.0;
321        a[9][3] = 0.3053128187514179;
322        a[9][4] = 0.207_120_093_820_197_9;
323        a[9][5] = -1.293_879_140_655_123;
324        a[9][6] = 57.11988411588149;
325        a[9][7] = -55.87979207510932;
326        a[9][8] = 0.024830028297766014;
327
328        c[10] = 0.828;
329
330        a[10][0] = 0.038150081818627746;
331        a[10][1] = 0.0;
332        a[10][2] = 0.0;
333        a[10][3] = 0.250_235_825_251_370_5;
334        a[10][4] = 0.3249441447817608;
335        a[10][5] = 1.8224606658327962;
336        a[10][6] = -67.7137233269262;
337        a[10][7] = 66.03587911808127;
338        a[10][8] = -0.0363881087495127;
339        a[10][9] = 0.106441599909888;
340
341        c[11] = 0.28;
342
343        a[11][0] = 0.11178168039666012;
344        a[11][1] = 0.0;
345        a[11][2] = 0.0;
346        a[11][3] = 0.025757505109345213;
347        a[11][4] = 3.785140856363646;
348        a[11][5] = 92.34088993695727;
349        a[11][6] = -3819.461508432344;
350        a[11][7] = 3732.492711530704;
351        a[11][8] = -1.0756940209963033;
352        a[11][9] = -3.231539970732086;
353        a[11][10] = -4.707539085458635;
354
355        bi6[0][0] = 1.0;
356        bi6[0][1] = -7.778593856495575;
357        bi6[0][2] = 27.0524385722671;
358        bi6[0][3] = -45.78019011457698;
359        bi6[0][4] = 36.72377741043638;
360        bi6[0][5] = -11.183042432947356;
361
362        bi6[1][0] = 0.0;
363        bi6[1][1] = 0.0;
364        bi6[1][2] = 0.0;
365        bi6[1][3] = 0.0;
366        bi6[1][4] = 0.0;
367        bi6[1][5] = 0.0;
368
369        bi6[2][0] = 0.0;
370        bi6[2][1] = 0.0;
371        bi6[2][2] = 0.0;
372        bi6[2][3] = 0.0;
373        bi6[2][4] = 0.0;
374        bi6[2][5] = 0.0;
375
376        bi6[3][0] = 0.0;
377        bi6[3][1] = 16.63210213827976;
378        bi6[3][2] = -86.25583404770622;
379        bi6[3][3] = 171.7330546182696;
380        bi6[3][4] = -149.6774409131595;
381        bi6[3][5] = 47.82638065987969;
382
383        bi6[4][0] = 0.0;
384        bi6[4][1] = 27.10835046149758;
385        bi6[4][2] = -140.58676162962996;
386        bi6[4][3] = 279.904_475_796_891_7;
387        bi6[4][4] = -243.95644583707966;
388        bi6[4][5] = 77.95131832728772;
389
390        bi6[5][0] = 0.0;
391        bi6[5][1] = 283.70753264670357;
392        bi6[5][2] = -1471.3371557366656;
393        bi6[5][3] = 2929.3928569314393;
394        bi6[5][4] = -2553.17199842168;
395        bi6[5][5] = 815.8141610498723;
396
397        bi6[6][0] = 0.0;
398        bi6[6][1] = -11365.512865164834;
399        bi6[6][2] = 58942.74718938947;
400        bi6[6][3] = -117353.43045697975;
401        bi6[6][4] = 102281.77209230464;
402        bi6[6][5] = -32682.059078573825;
403
404        bi6[7][0] = 0.0;
405        bi6[7][1] = 11100.25019105113;
406        bi6[7][2] = -57567.06701335558;
407        bi6[7][3] = 114614.48808378985;
408        bi6[7][4] = -99894.591091309;
409        bi6[7][5] = 31919.283963225014;
410
411        bi6[8][0] = 0.0;
412        bi6[8][1] = -3.002282515073213;
413        bi6[8][2] = 14.946122435958784;
414        bi6[8][3] = -27.82695473251029;
415        bi6[8][4] = 21.824672217437075;
416        bi6[8][5] = -5.941557405812358;
417
418        bi6[9][0] = 0.0;
419        bi6[9][1] = -19.610347376201035;
420        bi6[9][2] = 93.13370014508226;
421        bi6[9][3] = -165.3493635542416;
422        bi6[9][4] = 129.73901617804057;
423        bi6[9][5] = -37.91300539268019;
424
425        bi6[10][0] = 0.0;
426        bi6[10][1] = -18.23029074639409;
427        bi6[10][2] = 96.74593449012313;
428        bi6[10][3] = -199.08634973839894;
429        bi6[10][4] = 180.85605899200485;
430        bi6[10][5] = -60.28535299733495;
431
432        bi6[11][0] = 0.0;
433        bi6[11][1] = -13.563796638614157;
434        bi6[11][2] = 90.62137973668117;
435        bi6[11][3] = -204.04515601697272;
436        bi6[11][4] = 190.48135937835857;
437        bi6[11][5] = -63.49378645945286;
438
439        let c = c.map(|x| T::from_f64(x).unwrap());
440        let a = a.map(|row| row.map(|x| T::from_f64(x).unwrap()));
441        let b = b.map(|x| T::from_f64(x).unwrap());
442        let bh = bh.map(|x| T::from_f64(x).unwrap());
443        let bi6 = bi6.map(|row| row.map(|x| T::from_f64(x).unwrap()));
444
445        Self {
446            c,
447            a,
448            b,
449            bh: Some(bh),
450            bi: Some(bi6),
451            er: None,
452        }
453    }
454}
455
456impl<T: Real> ButcherTableau<T, 10, 13> {
457    /// A 'most efficient' Runge-Kutta (10:6(7)) pair with 6th-order interpolation.
458    ///
459    ///
460    /// # Overview
461    /// This provides a 10-stage Runge-Kutta method with:
462    /// - Primary order: 6
463    /// - Embedded order: 7 (for error estimation)
464    /// - Number of stages: 10 primary + 3 additional stages for interpolation
465    /// - Dominant stage order: 3
466    ///
467    /// # Efficiency
468    /// This method is considered "most efficient" in the sense that for a specified
469    /// maximum coefficient from `b` and `A`, it almost minimizes the local truncation
470    /// error 2-norm:
471    ///
472    /// T_82 ~ 0.000003389
473    ///
474    /// (Formulas with slightly different nodes may have a slightly smaller error norm,
475    /// perhaps achieved by having a larger maximum coefficient.)
476    ///
477    /// # Interpolation
478    /// - Node c[11]=1 was chosen to make the interpolants differentiable
479    /// - Node c[12] was chosen as a zero of a quadratic polynomial to enable efficient interpolation
480    /// - The interpolant has continuous derivatives
481    /// - Maximum 2-norm of the local truncation error over [0,1] for the interpolant:
482    ///
483    ///   Ti_72 ~ 0.0000165
484    ///
485    /// - The interpolation error has four local maximum values on [0,1]
486    ///
487    /// # Source
488    /// [Verner's RKV766e](https://www.sfu.ca/~jverner/RKV76.IIa.Efficient.000003389335684.240711.FLOAT6040OnWeb)
489    ///
490    pub fn rkv766e() -> Self {
491        let mut c = [0.0; 13];
492        let mut a = [[0.0; 13]; 13];
493        let mut b = [0.0; 10];
494        let mut bh = [0.0; 10];
495        let mut bi6 = [[0.0; 13]; 13];
496
497        c[0] = 0.0;
498        c[1] = 0.69e-1;
499        c[2] = 0.118;
500        c[3] = 0.177;
501        c[4] = 0.501;
502        c[5] = 0.773_779_911_530_533;
503        c[6] = 0.994;
504        c[7] = 0.998;
505        c[8] = 1.0;
506        c[9] = 1.0;
507
508        a[1][0] = 0.69e-1;
509
510        a[2][0] = 1.710_144_927_536_231_7e-2;
511        a[2][1] = 0.100_898_550_724_637_69;
512
513        a[3][0] = 0.4425e-1;
514        a[3][1] = 0.0;
515        a[3][2] = 0.13275;
516
517        a[4][0] = 0.735_344_513_070_956_6;
518        a[4][1] = 0.0;
519        a[4][2] = -2.830_160_657_856_937_6;
520        a[4][3] = 2.595_816_144_785_981;
521
522        a[5][0] = -12.215_804_853_604_08;
523        a[5][1] = 0.0;
524        a[5][2] = 48.826_654_858_237_36;
525        a[5][3] = -38.556_155_923_199_285;
526        a[5][4] = 2.719_085_830_096_535_7;
527
528        a[6][0] = 108.861_418_870_417_65;
529        a[6][1] = 0.0;
530        a[6][2] = -432.452_118_177_577_8;
531        a[6][3] = 343.911_528_180_011_8;
532        a[6][4] = -20.550_411_359_252_738;
533        a[6][5] = 1.223_582_486_401_040_3;
534
535        a[7][0] = 113.475_513_188_373_85;
536        a[7][1] = 0.0;
537        a[7][2] = -450.812_202_155_599_7;
538        a[7][3] = 358.513_276_519_008_97;
539        a[7][4] = -21.450_466_676_484_456;
540        a[7][5] = 1.274_053_318_605_952_8;
541        a[7][6] = -2.174_193_904_638_423e-3;
542
543        a[8][0] = 115.699_622_332_423_26;
544        a[8][1] = 0.0;
545        a[8][2] = -459.663_544_610_024_8;
546        a[8][3] = 365.553_471_713_174_6;
547        a[8][4] = -21.885_115_863_497_848;
548        a[8][5] = 1.298_718_109_698_721_5;
549        a[8][6] = -5.318_700_918_481_884e-5;
550        a[8][7] = -3.098_494_764_731_864_5e-3;
551
552        a[9][0] = 124.154_393_561_246_47;
553        a[9][1] = 0.0;
554        a[9][2] = -493.231_871_331_459_73;
555        a[9][3] = 392.208_621_931_580_07;
556        a[9][4] = -23.486_415_642_908_533;
557        a[9][5] = 1.362_322_948_908_907_5;
558        a[9][6] = -7.051_467_367_205_771e-3;
559        a[9][7] = 0.0;
560        a[9][8] = 0.0;
561
562        b[0] = 5.163_520_172_057_869e-2;
563        b[1] = 0.0;
564        b[2] = 0.0;
565        b[3] = 0.276_717_253_546_164_9;
566        b[4] = 0.337_417_528_528_715_1;
567        b[5] = 0.188_448_826_781_096_78;
568        b[6] = 24.541_341_216_348_68;
569        b[7] = -68.811_902_844_690_12;
570        b[8] = 44.416_342_817_764_885;
571        b[9] = 0.0;
572
573        bh[0] = 5.089_676_583_692_947_4e-2;
574        bh[1] = 0.0;
575        bh[2] = 0.0;
576        bh[3] = 0.279_377_737_476_323_4;
577        bh[4] = 0.328_133_014_274_653_5;
578        bh[5] = 0.224_172_121_818_615_1;
579        bh[6] = 0.787_457_477_801_507_7;
580        bh[7] = 0.0;
581        bh[8] = 0.0;
582        bh[9] = -0.670_037_117_208_029_2;
583
584        c[10] = 1.0;
585
586        a[10][0] = 5.163_520_172_057_869e-2;
587        a[10][1] = 0.0;
588        a[10][2] = 0.0;
589        a[10][3] = 0.276_717_253_546_164_9;
590        a[10][4] = 0.337_417_528_528_715_1;
591        a[10][5] = 0.188_448_826_781_096_78;
592        a[10][6] = 24.541_341_216_348_68;
593        a[10][7] = -68.811_902_844_690_12;
594        a[10][8] = 44.416_342_817_764_885;
595        a[10][9] = 0.0;
596
597        c[11] = 0.320_691_974_286_432_15;
598
599        a[11][0] = 5.595_947_882_055_416e-2;
600        a[11][1] = 0.0;
601        a[11][2] = 0.0;
602        a[11][3] = 0.248_126_283_032_250_93;
603        a[11][4] = 2.103_052_990_591_148e-2;
604        a[11][5] = -1.086_652_415_454_008_5e-2;
605        a[11][6] = 5.710_311_335_454_033;
606        a[11][7] = -16.597_491_517_853_864;
607        a[11][8] = 10.904_406_866_038_99;
608        a[11][9] = 0.0;
609        a[11][10] = -1.078_447_695_690_422_2e-2;
610
611        c[12] = 0.107;
612
613        a[12][0] = 5.365_176_199_729_764_6e-2;
614        a[12][1] = 0.0;
615        a[12][2] = 0.0;
616        a[12][3] = 9.828_513_377_552_06e-2;
617        a[12][4] = 2.236_190_536_978_546_8e-2;
618        a[12][5] = -3.196_168_594_283_279_4e-3;
619        a[12][6] = 0.545_100_325_730_724;
620        a[12][7] = -1.638_732_002_009_432_7;
621        a[12][8] = 1.093_896_392_979_467;
622        a[12][9] = 0.0;
623        a[12][10] = -4.657_483_105_197_486e-5;
624        a[12][11] = -6.432_077_441_802_662e-2;
625
626        bi6[0][0] = 1.0;
627        bi6[0][1] = -7.582_446_684_249_579;
628        bi6[0][2] = 21.653_396_979_374_616;
629        bi6[0][3] = -26.503_131_701_115_624;
630        bi6[0][4] = 13.685_670_411_429_184;
631        bi6[0][5] = -2.201_853_803_718_02;
632
633        bi6[1][0] = 0.0;
634        bi6[1][1] = 0.0;
635        bi6[1][2] = 0.0;
636        bi6[1][3] = 0.0;
637        bi6[1][4] = 0.0;
638        bi6[1][5] = 0.0;
639
640        bi6[2][0] = 0.0;
641        bi6[2][1] = 0.0;
642        bi6[2][2] = 0.0;
643        bi6[2][3] = 0.0;
644        bi6[2][4] = 0.0;
645        bi6[2][5] = 0.0;
646
647        bi6[3][0] = 0.0;
648        bi6[3][1] = 5.889_034_278_272_536;
649        bi6[3][2] = -57.969_601_549_357_755;
650        bi6[3][3] = 174.106_666_886_173_12;
651        bi6[3][4] = -196.200_362_716_086_12;
652        bi6[3][5] = 74.450_980_354_544_38;
653
654        bi6[4][0] = 0.0;
655        bi6[4][1] = 3.196_839_349_796_654;
656        bi6[4][2] = -31.323_975_727_005_283;
657        bi6[4][3] = 93.052_981_029_703_84;
658        bi6[4][4] = -102.896_887_106_406_17;
659        bi6[4][5] = 38.308_459_982_439_665;
660
661        bi6[5][0] = 0.0;
662        bi6[5][1] = -8.787_886_596_190_12e-2;
663        bi6[5][2] = 1.013_797_983_077_119_3;
664        bi6[5][3] = -4.100_173_002_382_458_5;
665        bi6[5][4] = 6.641_160_480_067_745;
666        bi6[5][5] = -3.278_457_768_019_407_6;
667
668        bi6[6][0] = 0.0;
669        bi6[6][1] = -208.397_209_920_409_64;
670        bi6[6][2] = 2_077.909_119_755_835;
671        bi6[6][3] = -6_428.966_291_404_446;
672        bi6[6][4] = 7_605.042_110_521_116;
673        bi6[6][5] = -3_021.046_387_735_748;
674
675        bi6[7][0] = 0.0;
676        bi6[7][1] = 594.359_329_222_875_1;
677        bi6[7][2] = -5_925.388_971_699_224;
678        bi6[7][3] = 18_326.521_937_386_66;
679        bi6[7][4] = -21_667.185_693_635_285;
680        bi6[7][5] = 8_602.881_495_880_287;
681
682        bi6[8][0] = 0.0;
683        bi6[8][1] = -386.881_191_563_493_5;
684        bi6[8][2] = 3_856.672_838_888_456_7;
685        bi6[8][3] = -11_926.201_514_729_724;
686        bi6[8][4] = 14_096.407_335_954_642;
687        bi6[8][5] = -5_595.581_125_732_116;
688
689        bi6[9][0] = 0.0;
690        bi6[9][1] = 0.0;
691        bi6[9][2] = 0.0;
692        bi6[9][3] = 0.0;
693        bi6[9][4] = 0.0;
694        bi6[9][5] = 0.0;
695
696        bi6[10][0] = 0.0;
697        bi6[10][1] = 0.611_109_939_702_319_6;
698        bi6[10][2] = -6.151_956_371_109_29;
699        bi6[10][3] = 19.458_736_994_636_64;
700        bi6[10][4] = -23.906_044_634_754_69;
701        bi6[10][5] = 9.988_154_071_525_02;
702
703        bi6[11][0] = 0.0;
704        bi6[11][1] = -8.007_634_773_786_194;
705        bi6[11][2] = 74.600_313_924_034_05;
706        bi6[11][3] = -199.674_829_477_265_75;
707        bi6[11][4] = 207.579_256_277_574_13;
708        bi6[11][5] = -74.497_105_950_556_23;
709
710        bi6[12][0] = 0.0;
711        bi6[12][1] = 6.900_049_017_254_163_5;
712        bi6[12][2] = -11.014_962_184_080_556;
713        bi6[12][3] = -27.694_381_982_239_55;
714        bi6[12][4] = 60.833_454_447_704_11;
715        bi6[12][5] = -29.024_159_298_638_17;
716
717        let c = c.map(|x| T::from_f64(x).unwrap());
718        let a = a.map(|row| row.map(|x| T::from_f64(x).unwrap()));
719        let b = b.map(|x| T::from_f64(x).unwrap());
720        let bh = bh.map(|x| T::from_f64(x).unwrap());
721        let bi6 = bi6.map(|row| row.map(|x| T::from_f64(x).unwrap()));
722
723        Self {
724            c,
725            a,
726            b,
727            bh: Some(bh),
728            bi: Some(bi6),
729            er: None,
730        }
731    }
732}
733
734impl<T: Real> ButcherTableau<T, 10, 16> {
735    /// A 'most efficient' Runge-Kutta (10:7(6)) pair with 7th-order interpolation.
736    ///
737    /// # Overview
738    /// This provides a 10-stage Runge-Kutta method with:
739    /// - Primary order: 7
740    /// - Embedded order: 6 (for error estimation)
741    /// - Number of stages: 10 primary + 6 additional stages for interpolation
742    /// - Dominant stage order: 3
743    ///
744    /// # Efficiency
745    /// This method is considered "most efficient" in the sense that for a specified
746    /// maximum coefficient from `b` and `A`, it almost minimizes the local truncation
747    /// error 2-norm:
748    ///
749    /// T_82 ~ 0.000003389
750    ///
751    /// # Interpolation
752    /// - Additional stages allow computation of approximations at any point with order up to 7
753    /// - The interpolant has continuous derivatives
754    /// - Maximum 2-norm of the local truncation error for the 7th-order interpolant:
755    ///
756    ///   Ti_82 ~ 0.000003389
757    ///
758    /// - The 2-norm is bounded by this value on [0,1] and is nearly monotone increasing
759    /// - The 7th-order interpolant requires 6 additional stages (16 total)
760    ///
761    /// # Notes
762    /// - This method uses the same primary stages as the 6th-order method (rkv766e)
763    /// - The higher-order interpolant requires more additional stages
764    ///
765    /// # Source
766    /// [Verner's RKV766e](https://www.sfu.ca/~jverner/RKV76.IIa.Efficient.000003389335684.240711.FLOAT6040OnWeb)
767    ///
768    pub fn rkv767e() -> Self {
769        let mut c = [0.0; 16];
770        let mut a = [[0.0; 16]; 16];
771        let mut b = [0.0; 10];
772        let mut bh = [0.0; 10];
773        let mut bi7 = [[0.0; 16]; 16];
774
775        c[0] = 0.0;
776        c[1] = 0.69e-1;
777        c[2] = 0.118;
778        c[3] = 0.177;
779        c[4] = 0.501;
780        c[5] = 0.773_779_911_530_533;
781        c[6] = 0.994;
782        c[7] = 0.998;
783        c[8] = 1.0;
784        c[9] = 1.0;
785
786        a[1][0] = 0.69e-1;
787
788        a[2][0] = 1.710_144_927_536_231_7e-2;
789        a[2][1] = 0.100_898_550_724_637_69;
790
791        a[3][0] = 0.4425e-1;
792        a[3][1] = 0.0;
793        a[3][2] = 0.13275;
794
795        a[4][0] = 0.735_344_513_070_956_6;
796        a[4][1] = 0.0;
797        a[4][2] = -2.830_160_657_856_937_6;
798        a[4][3] = 2.595_816_144_785_981;
799
800        a[5][0] = -12.215_804_853_604_08;
801        a[5][1] = 0.0;
802        a[5][2] = 48.826_654_858_237_36;
803        a[5][3] = -38.556_155_923_199_285;
804        a[5][4] = 2.719_085_830_096_535_7;
805
806        a[6][0] = 108.861_418_870_417_65;
807        a[6][1] = 0.0;
808        a[6][2] = -432.452_118_177_577_8;
809        a[6][3] = 343.911_528_180_011_8;
810        a[6][4] = -20.550_411_359_252_738;
811        a[6][5] = 1.223_582_486_401_040_3;
812
813        a[7][0] = 113.475_513_188_373_85;
814        a[7][1] = 0.0;
815        a[7][2] = -450.812_202_155_599_7;
816        a[7][3] = 358.513_276_519_008_97;
817        a[7][4] = -21.450_466_676_484_456;
818        a[7][5] = 1.274_053_318_605_952_8;
819        a[7][6] = -2.174_193_904_638_423e-3;
820
821        a[8][0] = 115.699_622_332_423_26;
822        a[8][1] = 0.0;
823        a[8][2] = -459.663_544_610_024_8;
824        a[8][3] = 365.553_471_713_174_6;
825        a[8][4] = -21.885_115_863_497_848;
826        a[8][5] = 1.298_718_109_698_721_5;
827        a[8][6] = -5.318_700_918_481_884e-5;
828        a[8][7] = -3.098_494_764_731_864_5e-3;
829
830        a[9][0] = 124.154_393_561_246_47;
831        a[9][1] = 0.0;
832        a[9][2] = -493.231_871_331_459_73;
833        a[9][3] = 392.208_621_931_580_07;
834        a[9][4] = -23.486_415_642_908_533;
835        a[9][5] = 1.362_322_948_908_907_5;
836        a[9][6] = -7.051_467_367_205_771e-3;
837        a[9][7] = 0.0;
838        a[9][8] = 0.0;
839
840        b[0] = 5.163_520_172_057_869e-2;
841        b[1] = 0.0;
842        b[2] = 0.0;
843        b[3] = 0.276_717_253_546_164_9;
844        b[4] = 0.337_417_528_528_715_1;
845        b[5] = 0.188_448_826_781_096_78;
846        b[6] = 24.541_341_216_348_68;
847        b[7] = -68.811_902_844_690_12;
848        b[8] = 44.416_342_817_764_885;
849        b[9] = 0.0;
850
851        bh[0] = 5.089_676_583_692_947_4e-2;
852        bh[1] = 0.0;
853        bh[2] = 0.0;
854        bh[3] = 0.279_377_737_476_323_4;
855        bh[4] = 0.328_133_014_274_653_5;
856        bh[5] = 0.224_172_121_818_615_1;
857        bh[6] = 0.787_457_477_801_507_7;
858        bh[7] = 0.0;
859        bh[8] = 0.0;
860        bh[9] = -0.670_037_117_208_029_2;
861
862        c[10] = 1.0;
863
864        a[10][0] = 5.163_520_172_057_869e-2;
865        a[10][1] = 0.0;
866        a[10][2] = 0.0;
867        a[10][3] = 0.276_717_253_546_164_9;
868        a[10][4] = 0.337_417_528_528_715_1;
869        a[10][5] = 0.188_448_826_781_096_78;
870        a[10][6] = 24.541_341_216_348_68;
871        a[10][7] = -68.811_902_844_690_12;
872        a[10][8] = 44.416_342_817_764_885;
873        a[10][9] = 0.0;
874
875        c[11] = 0.320_691_974_286_432_15;
876
877        a[11][0] = 5.595_947_882_055_416e-2;
878        a[11][1] = 0.0;
879        a[11][2] = 0.0;
880        a[11][3] = 0.248_126_283_032_250_93;
881        a[11][4] = 2.103_052_990_591_148e-2;
882        a[11][5] = -1.086_652_415_454_008_5e-2;
883        a[11][6] = 5.710_311_335_454_033;
884        a[11][7] = -16.597_491_517_853_864;
885        a[11][8] = 10.904_406_866_038_99;
886        a[11][9] = 0.0;
887        a[11][10] = -1.078_447_695_690_422_2e-2;
888
889        c[12] = 0.107;
890
891        a[12][0] = 5.365_176_199_729_764_6e-2;
892        a[12][1] = 0.0;
893        a[12][2] = 0.0;
894        a[12][3] = 9.828_513_377_552_06e-2;
895        a[12][4] = 2.236_190_536_978_546_8e-2;
896        a[12][5] = -3.196_168_594_283_279_4e-3;
897        a[12][6] = 0.545_100_325_730_724;
898        a[12][7] = -1.638_732_002_009_432_7;
899        a[12][8] = 1.093_896_392_979_467;
900        a[12][9] = 0.0;
901        a[12][10] = -4.657_483_105_197_486e-5;
902        a[12][11] = -6.432_077_441_802_662e-2;
903
904        c[13] = 0.3;
905
906        a[13][0] = 1.919_717_775_847_849_8e-2;
907        a[13][1] = 0.0;
908        a[13][2] = 0.0;
909        a[13][3] = -4.739_427_173_175_534e-2;
910        a[13][4] = -2.641_522_514_821_109_7e-2;
911        a[13][5] = 7.054_089_167_217_366e-8;
912        a[13][6] = 1.551_079_892_101_621_3;
913        a[13][7] = -4.428_095_538_025_377;
914        a[13][8] = 2.883_718_325_674_217;
915        a[13][9] = 0.0;
916        a[13][10] = -4.297_481_934_497_428e-3;
917        a[13][11] = 0.126_264_430_058_858_98;
918        a[13][12] = 0.225_942_620_705_773_12;
919
920        c[14] = 0.549;
921
922        a[14][0] = 6.125_242_269_008_585e-2;
923        a[14][1] = 0.0;
924        a[14][2] = 0.0;
925        a[14][3] = 0.252_531_040_183_435_36;
926        a[14][4] = 0.150_705_487_741_318_06;
927        a[14][5] = 1.024_270_639_019_054_2e-2;
928        a[14][6] = -6.438_444_503_804_216;
929        a[14][7] = 18.448_709_040_954_04;
930        a[14][8] = -12.035_927_432_731_748;
931        a[14][9] = 0.0;
932        a[14][10] = 1.513_193_748_819_522_2e-2;
933        a[14][11] = 0.104_344_770_529_991_54;
934        a[14][12] = -1.954_546_944_129_134_7e-2;
935        a[14][13] = 0.0;
936
937        c[15] = 0.757;
938
939        a[15][0] = 8.959_466_056_806_525e-2;
940        a[15][1] = 0.0;
941        a[15][2] = 0.0;
942        a[15][3] = 0.638_921_494_656_219_4;
943        a[15][4] = 0.430_912_029_682_266_2;
944        a[15][5] = 7.695_592_670_277_011e-2;
945        a[15][6] = -7.189_894_742_007_33;
946        a[15][7] = 21.036_455_896_587_956;
947        a[15][8] = -13.861_406_033_435_276;
948        a[15][9] = 0.0;
949        a[15][10] = 8.282_681_779_726_606e-3;
950        a[15][11] = -0.214_845_674_306_927_8;
951        a[15][12] = -0.257_976_240_227_466_6;
952        a[15][13] = 0.0;
953        a[15][14] = 0.0;
954
955        bi7[0][0] = 1.0;
956        bi7[0][1] = -8.503_890_289_208_65;
957        bi7[0][2] = 31.182_343_390_857_11;
958        bi7[0][3] = -56.830_479_769_185_395;
959        bi7[0][4] = 52.797_398_314_710_22;
960        bi7[0][5] = -22.951_833_027_205_392;
961        bi7[0][6] = 3.358_096_581_752_686;
962
963        bi7[1][0] = 0.0;
964        bi7[1][1] = 0.0;
965        bi7[1][2] = 0.0;
966        bi7[1][3] = 0.0;
967        bi7[1][4] = 0.0;
968        bi7[1][5] = 0.0;
969        bi7[1][6] = 0.0;
970
971        bi7[2][0] = 0.0;
972        bi7[2][1] = 0.0;
973        bi7[2][2] = 0.0;
974        bi7[2][3] = 0.0;
975        bi7[2][4] = 0.0;
976        bi7[2][5] = 0.0;
977        bi7[2][6] = 0.0;
978
979        bi7[3][0] = 0.0;
980        bi7[3][1] = 6.267_709_807_177_576;
981        bi7[3][2] = -68.591_451_234_481_41;
982        bi7[3][3] = 270.100_637_895_418_06;
983        bi7[3][4] = -486.238_809_416_271_64;
984        bi7[3][5] = 407.139_981_823_150_04;
985        bi7[3][6] = -128.401_351_621_446_42;
986
987        bi7[4][0] = 0.0;
988        bi7[4][1] = 7.642_585_077_624_11;
989        bi7[4][2] = -83.637_567_434_426_29;
990        bi7[4][3] = 329.349_502_153_457_14;
991        bi7[4][4] = -592.899_413_554_681_6;
992        bi7[4][5] = 496.449_587_698_277_47;
993        bi7[4][6] = -156.567_276_411_722_08;
994
995        bi7[5][0] = 0.0;
996        bi7[5][1] = 4.268_409_521_381_499;
997        bi7[5][2] = -46.711_863_270_912_34;
998        bi7[5][3] = 183.942_806_861_248_7;
999        bi7[5][4] = -331.136_320_542_610_63;
1000        bi7[5][5] = 277.268_767_765_684_74;
1001        bi7[5][6] = -87.443_351_508_010_85;
1002
1003        bi7[6][0] = 0.0;
1004        bi7[6][1] = 555.867_055_818_904_2;
1005        bi7[6][2] = -6_083.199_322_405_53;
1006        bi7[6][3] = 23_954.530_599_007_394;
1007        bi7[6][4] = -43_123.268_902_078_34;
1008        bi7[6][5] = 36_108.197_406_176_53;
1009        bi7[6][6] = -11_387.585_495_302_614;
1010
1011        bi7[7][0] = 0.0;
1012        bi7[7][1] = -1_558.605_518_026_587_3;
1013        bi7[7][2] = 17_056.790_705_448_41;
1014        bi7[7][3] = -67_166.534_124_506_99;
1015        bi7[7][4] = 120_914.100_165_743;
1016        bi7[7][5] = -101_244.416_509_538_55;
1017        bi7[7][6] = 31_929.853_378_036_034;
1018
1019        bi7[8][0] = 0.0;
1020        bi7[8][1] = 1_006.040_439_872_400_5;
1021        bi7[8][2] = -11_009.726_980_722_82;
1022        bi7[8][3] = 43_354.298_925_413_49;
1023        bi7[8][4] = -78_046.993_360_795_04;
1024        bi7[8][5] = 65_350.710_068_603_25;
1025        bi7[8][6] = -20_609.912_749_553_514;
1026
1027        bi7[9][0] = 0.0;
1028        bi7[9][1] = 0.0;
1029        bi7[9][2] = 0.0;
1030        bi7[9][3] = 0.0;
1031        bi7[9][4] = 0.0;
1032        bi7[9][5] = 0.0;
1033        bi7[9][6] = 0.0;
1034
1035        bi7[10][0] = 0.0;
1036        bi7[10][1] = -1.612_970_387_190_759_7;
1037        bi7[10][2] = 17.729_097_727_353_25;
1038        bi7[10][3] = -70.349_373_843_121_95;
1039        bi7[10][4] = 128.135_008_891_280_17;
1040        bi7[10][5] = -109.073_435_226_653_7;
1041        bi7[10][6] = 35.171_672_838_332_98;
1042
1043        bi7[11][0] = 0.0;
1044        bi7[11][1] = -2.626_599_644_929_272;
1045        bi7[11][2] = 9.920_024_380_612_826;
1046        bi7[11][3] = -7.644_130_389_085_102;
1047        bi7[11][4] = -14.864_305_527_142_132;
1048        bi7[11][5] = 26.113_902_923_734_624;
1049        bi7[11][6] = -10.898_891_743_190_944;
1050
1051        bi7[12][0] = 0.0;
1052        bi7[12][1] = 9.561_675_242_924_823;
1053        bi7[12][2] = -36.112_108_563_035_484;
1054        bi7[12][3] = 27.827_115_729_688_02;
1055        bi7[12][4] = 54.110_896_739_260_276;
1056        bi7[12][5] = -95.063_082_630_066_82;
1057        bi7[12][6] = 39.675_503_481_229_17;
1058
1059        bi7[13][0] = 0.0;
1060        bi7[13][1] = -9.791_432_054_831_755;
1061        bi7[13][2] = 116.673_354_759_619_02;
1062        bi7[13][3] = -427.017_866_152_982_6;
1063        bi7[13][4] = 710.069_381_780_811_7;
1064        bi7[13][5] = -556.821_423_866_992_9;
1065        bi7[13][6] = 166.887_985_534_376_5;
1066
1067        bi7[14][0] = 0.0;
1068        bi7[14][1] = 7.372_370_767_192_203e-2;
1069        bi7[14][2] = 2.611_540_012_355_412;
1070        bi7[14][3] = -30.678_467_708_669_69;
1071        bi7[14][4] = 100.428_590_031_891_09;
1072        bi7[14][5] = -119.636_555_525_554_36;
1073        bi7[14][6] = 47.201_169_482_305_63;
1074
1075        bi7[15][0] = 0.0;
1076        bi7[15][1] = -8.581_188_645_336_741;
1077        bi7[15][2] = 93.072_227_912_000_57;
1078        bi7[15][3] = -360.995_144_690_658_4;
1079        bi7[15][4] = 635.759_670_413_128_9;
1080        bi7[15][5] = -517.916_875_175_601_3;
1081        bi7[15][6] = 158.661_310_186_466_92;
1082
1083        let c = c.map(|x| T::from_f64(x).unwrap());
1084        let a = a.map(|row| row.map(|x| T::from_f64(x).unwrap()));
1085        let b = b.map(|x| T::from_f64(x).unwrap());
1086        let bh = bh.map(|x| T::from_f64(x).unwrap());
1087        let bi7 = bi7.map(|row| row.map(|x| T::from_f64(x).unwrap()));
1088
1089        Self {
1090            c,
1091            a,
1092            b,
1093            bh: Some(bh),
1094            bi: Some(bi7),
1095            er: None,
1096        }
1097    }
1098}
1099
1100impl<T: Real> ButcherTableau<T, 13, 17> {
1101    /// An efficient Runge-Kutta (13:7) pair method with 7th-order interpolation.
1102    ///
1103    /// # Overview
1104    /// This provides a 13-stage Runge-Kutta method with:
1105    /// - Primary order: 7
1106    /// - Embedded order: 7 (used for stepsize control)
1107    /// - Number of stages: 13 primary + 4 additional stages for interpolation
1108    /// - Dominant stage order: 4
1109    ///
1110    /// # Interpolation
1111    /// - The method provides a 7th-order interpolant using the nodes c[14]=1, c[15]-c[17].
1112    /// - The interpolant has continuous derivatives.
1113    /// - Maximum 2-norm of the local truncation error over [0,1] for the interpolant:
1114    ///   
1115    ///   Ti_82 ~ 0.0000063833
1116    ///   
1117    /// - The interpolation error has three local maximum values on [0,1].
1118    ///
1119    /// # Notes
1120    /// - This method uses the same initial 13 stages as the 8th-order method (rkv878e).
1121    /// - The interpolant requires fewer additional stages than the 8th-order version.
1122    ///
1123    /// # Source
1124    /// [Verner's RKV878e](https://www.sfu.ca/~jverner/RKV87.IIa.Efficient.000000011182-240510.FLOAT6040OnWeb)
1125    pub fn rkv877e() -> Self {
1126        let mut c = [0.0; 17];
1127        let mut a = [[0.0; 17]; 17];
1128        let mut b = [0.0; 13];
1129        let mut bh = [0.0; 13];
1130        let mut bi7 = [[0.0; 17]; 17];
1131
1132        c[0] = 0.0;
1133        c[1] = 0.92662e-1;
1134        c[2] = 0.131_223_036_175_401_76;
1135        c[3] = 0.196_834_554_263_102_65;
1136        c[4] = 0.427173;
1137        c[5] = 0.485972;
1138        c[6] = 0.161915;
1139        c[7] = 0.985468;
1140        c[8] = 0.962_697_734_860_454_1;
1141        c[9] = 0.99626;
1142        c[10] = 0.997947;
1143        c[11] = 1.0;
1144        c[12] = 1.0;
1145
1146        a[1][0] = 0.92662e-1;
1147
1148        a[2][0] = 3.830_746_548_250_284e-2;
1149        a[2][1] = 9.291_557_069_289_892e-2;
1150
1151        a[3][0] = 4.920_863_856_577_566e-2;
1152        a[3][1] = 0.0;
1153        a[3][2] = 0.147_625_915_697_326_97;
1154
1155        a[4][0] = 0.274_307_608_570_248_66;
1156        a[4][1] = 0.0;
1157        a[4][2] = -0.931_988_720_310_265_6;
1158        a[4][3] = 1.084_854_111_740_017;
1159
1160        a[5][0] = 6.461_852_970_939_692e-2;
1161        a[5][1] = 0.0;
1162        a[5][2] = 0.0;
1163        a[5][3] = 0.268_762_921_336_892_34;
1164        a[5][4] = 0.152_590_548_953_710_74;
1165
1166        a[6][0] = 7.189_155_819_773_217e-2;
1167        a[6][1] = 0.0;
1168        a[6][2] = 0.0;
1169        a[6][3] = 0.122_126_578_336_254_97;
1170        a[6][4] = -7.943_550_859_198_562e-2;
1171        a[6][5] = 4.733_237_205_799_848e-2;
1172
1173        a[7][0] = -6.073_603_893_714_329;
1174        a[7][1] = 0.0;
1175        a[7][2] = 0.0;
1176        a[7][3] = -73.8956;
1177        a[7][4] = 11.939_853_706_952_74;
1178        a[7][5] = -3.839_251_541_405_054_5;
1179        a[7][6] = 72.854_069_728_166_65;
1180
1181        a[8][0] = -4.868_640_079_323_569;
1182        a[8][1] = 0.0;
1183        a[8][2] = 0.0;
1184        a[8][3] = -59.185_727_999_756_46;
1185        a[8][4] = 9.230_819_319_232_426;
1186        a[8][5] = -2.676_847_914_962_525_7;
1187        a[8][6] = 58.457_200_099_946_86;
1188        a[8][7] = 5.894_309_723_726_360_4e-3;
1189
1190        a[9][0] = -6.689_861_899_320_853;
1191        a[9][1] = 0.0;
1192        a[9][2] = 0.0;
1193        a[9][3] = -81.442_710_040_531_11;
1194        a[9][4] = 13.367_788_256_983_971;
1195        a[9][5] = -4.470_777_638_416_181;
1196        a[9][6] = 80.233_213_921_614_11;
1197        a[9][7] = -1.313_638_336_212_181_5e-2;
1198        a[9][8] = 1.174_378_303_219_413_9e-2;
1199
1200        a[10][0] = -6.788_841_955_800_464;
1201        a[10][1] = 0.0;
1202        a[10][2] = 0.0;
1203        a[10][3] = -82.656_398_559_348_29;
1204        a[10][4] = 13.599_739_218_748_99;
1205        a[10][5] = -4.574_464_055_350_504;
1206        a[10][6] = 81.419_432_072_160_76;
1207        a[10][7] = -1.416_248_014_826_418e-2;
1208        a[10][8] = 1.375_441_580_835_227_5e-2;
1209        a[10][9] = -1.111_656_070_581_006_2e-3;
1210
1211        a[11][0] = -6.910_189_846_402_486;
1212        a[11][1] = 0.0;
1213        a[11][2] = 0.0;
1214        a[11][3] = -84.144_951_541_767_48;
1215        a[11][4] = 13.885_121_223_789_838;
1216        a[11][5] = -4.702_458_788_144_494;
1217        a[11][6] = 82.874_114_515_292_42;
1218        a[11][7] = -1.645_498_337_198_78e-2;
1219        a[11][8] = 1.644_663_972_162_521_3e-2;
1220        a[11][9] = 4.275_449_370_796_531e-3;
1221        a[11][10] = -5.902_668_488_222_362e-3;
1222
1223        a[12][0] = -6.911_973_921_198_98;
1224        a[12][1] = 0.0;
1225        a[12][2] = 0.0;
1226        a[12][3] = -84.166_355_958_787_8;
1227        a[12][4] = 13.888_346_275_655_82;
1228        a[12][5] = -4.703_463_178_409_702;
1229        a[12][6] = 82.895_186_222_074_05;
1230        a[12][7] = -1.020_345_016_228_260_3e-2;
1231        a[12][8] = 1.427_900_423_230_391_5e-2;
1232        a[12][9] = -5.814_993_403_397_982e-3;
1233        a[12][10] = 0.0;
1234        a[12][11] = 0.0;
1235
1236        b[0] = 4.625_543_159_712_467_6e-2;
1237        b[1] = 0.0;
1238        b[2] = 0.0;
1239        b[3] = 0.0;
1240        b[4] = 0.0;
1241        b[5] = 0.370_666_616_552_101_1;
1242        b[6] = 0.259_044_082_455_274_66;
1243        b[7] = -679.984_146_817_503_9;
1244        b[8] = 49.891_611_290_420_535;
1245        b[9] = 10_271.235_222_137_313;
1246        b[10] = -14_782.196_606_356_898;
1247        b[11] = 5_141.377_953_616_064;
1248        b[12] = 0.0;
1249
1250        bh[0] = 4.638_504_234_365_211e-2;
1251        bh[1] = 0.0;
1252        bh[2] = 0.0;
1253        bh[3] = 0.0;
1254        bh[4] = 0.0;
1255        bh[5] = 0.372_576_768_158_119_6;
1256        bh[6] = 0.258_568_549_512_168_73;
1257        bh[7] = -147.495_076_758_926_53;
1258        bh[8] = 23.843_627_126_445_874;
1259        bh[9] = 347.426_416_673_055_1;
1260        bh[10] = 0.0;
1261        bh[11] = 0.0;
1262        bh[12] = -223.452_497_400_588_36;
1263
1264        c[13] = 1.0;
1265
1266        a[13][0] = 4.625_543_159_712_467_6e-2;
1267        a[13][1] = 0.0;
1268        a[13][2] = 0.0;
1269        a[13][3] = 0.0;
1270        a[13][4] = 0.0;
1271        a[13][5] = 0.370_666_616_552_101_1;
1272        a[13][6] = 0.259_044_082_455_274_66;
1273        a[13][7] = -679.984_146_817_503_9;
1274        a[13][8] = 49.891_611_290_420_535;
1275        a[13][9] = 10_271.235_222_137_313;
1276        a[13][10] = -14_782.196_606_356_898;
1277        a[13][11] = 5_141.377_953_616_064;
1278        a[13][12] = 0.0;
1279
1280        c[14] = 0.311_017_763_495_386_4;
1281
1282        a[14][0] = 4.911_138_760_562_453e-2;
1283        a[14][1] = 0.0;
1284        a[14][2] = 0.0;
1285        a[14][3] = 0.0;
1286        a[14][4] = 0.0;
1287        a[14][5] = 3.117_373_122_649_833e-2;
1288        a[14][6] = 0.238_492_367_955_329;
1289        a[14][7] = -114.318_025_626_252_7;
1290        a[14][8] = 3.546_408_122_969_840_5;
1291        a[14][9] = 2_460.597_003_929_216;
1292        a[14][10] = -3_738.924_986_857_494;
1293        a[14][11] = 1_389.104_435_743_812_5;
1294        a[14][12] = 0.0;
1295        a[14][13] = -1.259_503_554_386_166_3e-2;
1296
1297        c[15] = 0.2;
1298
1299        a[15][0] = 5.179_349_197_485_644e-2;
1300        a[15][1] = 0.0;
1301        a[15][2] = 0.0;
1302        a[15][3] = 0.0;
1303        a[15][4] = 0.0;
1304        a[15][5] = 3.491_876_693_023_422e-2;
1305        a[15][6] = 0.199_195_855_918_545_47;
1306        a[15][7] = -83.397_932_805_325_08;
1307        a[15][8] = 3.594_107_171_680_368_3;
1308        a[15][9] = 1_608.071_558_743_333_5;
1309        a[15][10] = -2_405.179_666_082_838_6;
1310        a[15][11] = 876.913_423_768_755_8;
1311        a[15][12] = 0.0;
1312        a[15][13] = -7.325_540_972_670_705e-3;
1313        a[15][14] = -8.007_336_945_700_194e-2;
1314
1315        c[16] = 0.6;
1316
1317        a[16][0] = 4.436_713_671_328_35e-2;
1318        a[16][1] = 0.0;
1319        a[16][2] = 0.0;
1320        a[16][3] = 0.0;
1321        a[16][4] = 0.0;
1322        a[16][5] = 0.234_106_144_170_543_85;
1323        a[16][6] = 0.361_391_276_009_148_67;
1324        a[16][7] = 148.988_450_648_249_68;
1325        a[16][8] = -9.426_031_101_789_148;
1326        a[16][9] = -2_394.447_533_524_453_3;
1327        a[16][10] = 3_478.192_564_092_670_6;
1328        a[16][11] = -1_223.319_642_639_490_7;
1329        a[16][12] = 0.0;
1330        a[16][13] = 1.180_395_533_992_265_7e-2;
1331        a[16][14] = 0.134_964_703_701_482_84;
1332        a[16][15] = -0.174_440_691_121_442_12;
1333
1334        bi7[0][0] = 1.0;
1335        bi7[0][1] = -8.212_110_712_910_063;
1336        bi7[0][2] = 35.026_353_207_696_05;
1337        bi7[0][3] = -83.002_133_398_763_38;
1338        bi7[0][4] = 108.640_900_005_722_67;
1339        bi7[0][5] = -72.996_471_060_209_22;
1340        bi7[0][6] = 19.589_717_390_061_065;
1341
1342        bi7[1][0] = 0.0;
1343        bi7[1][1] = 0.0;
1344        bi7[1][2] = 0.0;
1345        bi7[1][3] = 0.0;
1346        bi7[1][4] = 0.0;
1347        bi7[1][5] = 0.0;
1348        bi7[1][6] = 0.0;
1349
1350        bi7[2][0] = 0.0;
1351        bi7[2][1] = 0.0;
1352        bi7[2][2] = 0.0;
1353        bi7[2][3] = 0.0;
1354        bi7[2][4] = 0.0;
1355        bi7[2][5] = 0.0;
1356        bi7[2][6] = 0.0;
1357
1358        bi7[3][0] = 0.0;
1359        bi7[3][1] = 0.0;
1360        bi7[3][2] = 0.0;
1361        bi7[3][3] = 0.0;
1362        bi7[3][4] = 0.0;
1363        bi7[3][5] = 0.0;
1364        bi7[3][6] = 0.0;
1365
1366        bi7[4][0] = 0.0;
1367        bi7[4][1] = 0.0;
1368        bi7[4][2] = 0.0;
1369        bi7[4][3] = 0.0;
1370        bi7[4][4] = 0.0;
1371        bi7[4][5] = 0.0;
1372        bi7[4][6] = 0.0;
1373
1374        bi7[5][0] = 0.0;
1375        bi7[5][1] = 24.495_046_326_791_247;
1376        bi7[5][2] = -197.698_434_568_493_92;
1377        bi7[5][3] = 648.816_707_921_001_5;
1378        bi7[5][4] = -1_029.913_614_541_902;
1379        bi7[5][5] = 784.290_278_276_683_6;
1380        bi7[5][6] = -229.619_316_797_528_34;
1381
1382        bi7[6][0] = 0.0;
1383        bi7[6][1] = 31.569_189_535_057_046;
1384        bi7[6][2] = -253.501_865_152_415_8;
1385        bi7[6][3] = 825.652_427_431_980_9;
1386        bi7[6][4] = -1_296.622_633_293_770_4;
1387        bi7[6][5] = 974.262_805_803_163_1;
1388        bi7[6][6] = -281.100_880_241_559_54;
1389
1390        bi7[7][0] = 0.0;
1391        bi7[7][1] = 13_532.460_624_863_495;
1392        bi7[7][2] = -103_993.691_210_812_35;
1393        bi7[7][3] = 315_790.051_792_644_2;
1394        bi7[7][4] = -444_650.940_863_563_4;
1395        bi7[7][5] = 285_484.299_040_403_7;
1396        bi7[7][6] = -66_842.163_530_353_08;
1397
1398        bi7[8][0] = 0.0;
1399        bi7[8][1] = -797.337_393_774_812_7;
1400        bi7[8][2] = 6_069.299_906_337_187;
1401        bi7[8][3] = -18_132.728_486_459_506;
1402        bi7[8][4] = 24_818.083_374_433_99;
1403        bi7[8][5] = -15_179.252_666_931_208;
1404        bi7[8][6] = 3_271.826_877_684_767_6;
1405
1406        bi7[9][0] = 0.0;
1407        bi7[9][1] = -223_490.905_898_175_5;
1408        bi7[9][2] = 1_723_137.281_290_412;
1409        bi7[9][3] = -5_261_550.360_871_224;
1410        bi7[9][4] = 7_478_225.628_671_212;
1411        bi7[9][5] = -4_874_996.123_844_563;
1412        bi7[9][6] = 1_168_945.715_874_475_4;
1413
1414        bi7[10][0] = 0.0;
1415        bi7[10][1] = 325_937.354_598_091_16;
1416        bi7[10][2] = -2_514_175.045_366_639;
1417        bi7[10][3] = 7_682_914.240_892_724;
1418        bi7[10][4] = -10_933_909.132_147_21;
1419        bi7[10][5] = 7_142_613.573_847_849;
1420        bi7[10][6] = -1_718_163.188_431_172_2;
1421
1422        bi7[11][0] = 0.0;
1423        bi7[11][1] = -115_180.893_543_081_68;
1424        bi7[11][2] = 888_954.826_743_313_3;
1425        bi7[11][3] = -2_718_988.108_015_552_6;
1426        bi7[11][4] = 3_875_443.744_975_928;
1427        bi7[11][5] = -2_537_848.359_487_731;
1428        bi7[11][6] = 612_760.167_280_739_9;
1429
1430        bi7[12][0] = 0.0;
1431        bi7[12][1] = 0.0;
1432        bi7[12][2] = 0.0;
1433        bi7[12][3] = 0.0;
1434        bi7[12][4] = 0.0;
1435        bi7[12][5] = 0.0;
1436        bi7[12][6] = 0.0;
1437
1438        bi7[13][0] = 0.0;
1439        bi7[13][1] = 0.817_197_452_808_954;
1440        bi7[13][2] = -5.929_889_493_933_239;
1441        bi7[13][3] = 16.170_471_422_259_21;
1442        bi7[13][4] = -18.188_640_730_913_09;
1443        bi7[13][5] = 6.499_437_906_736_728;
1444        bi7[13][6] = 0.631_423_443_041_433_8;
1445
1446        bi7[14][0] = 0.0;
1447        bi7[14][1] = -19.589_917_077_606_923;
1448        bi7[14][2] = 128.442_052_186_315_6;
1449        bi7[14][3] = -321.875_628_679_264_2;
1450        bi7[14][4] = 394.572_135_120_649_14;
1451        bi7[14][5] = -239.336_007_560_733_55;
1452        bi7[14][6] = 57.787_366_010_639_886;
1453
1454        bi7[15][0] = 0.0;
1455        bi7[15][1] = -15.352_746_937_526_659;
1456        bi7[15][2] = 180.168_624_955_189_53;
1457        bi7[15][3] = -701.647_641_421_898_2;
1458        bi7[15][4] = 1_211.468_823_272_660_8;
1459        bi7[15][5] = -961.905_487_412_752;
1460        bi7[15][6] = 287.268_427_544_326_4;
1461
1462        bi7[16][0] = 0.0;
1463        bi7[16][1] = -14.405_046_509_284_272;
1464        bi7[16][2] = 120.821_796_254_251_92;
1465        bi7[16][3] = -417.209_515_408_200_8;
1466        bi7[16][4] = 702.659_019_366_941;
1467        bi7[16][5] = -564.951_444_979_866;
1468        bi7[16][6] = 173.085_191_276_158_13;
1469
1470        let c = c.map(|x| T::from_f64(x).unwrap());
1471        let a = a.map(|row| row.map(|x| T::from_f64(x).unwrap()));
1472        let b = b.map(|x| T::from_f64(x).unwrap());
1473        let bh = bh.map(|x| T::from_f64(x).unwrap());
1474        let bi7 = bi7.map(|row| row.map(|x| T::from_f64(x).unwrap()));
1475
1476        Self {
1477            c,
1478            a,
1479            b,
1480            bh: Some(bh),
1481            bi: Some(bi7),
1482            er: None,
1483        }
1484    }
1485}
1486
1487impl<T: Real> ButcherTableau<T, 13, 21> {
1488    /// A highly efficient Runge-Kutta (13:8(7)) pair method.
1489    ///
1490    /// # Overview
1491    /// This is an efficient 13-stage Runge-Kutta method that provides:
1492    /// - Primary order: 8
1493    /// - Embedded order: 7 (for error estimation)
1494    /// - Number of stages: 13 primary + 8 additional stages for interpolation
1495    /// - Dominant stage order: 4
1496    ///
1497    /// # Efficiency
1498    /// The method is particularly "efficient" with a local truncation error 2-norm:
1499    ///
1500    /// T_92 ~ 0.000000011182
1501    ///
1502    /// which appears to be the minimum possible for this type of method.
1503    ///
1504    /// # Interpolation
1505    /// - The additional stages (c[14] through c[21]) allow computation of approximations
1506    ///   at any point in the solution domain with order 8.
1507    /// - The interpolant has continuous derivatives.
1508    /// - Maximum 2-norm of the local truncation error over [0,1] for the interpolant:
1509    ///   
1510    ///   Ti_92 ~ 0.0000011515
1511    ///   
1512    /// - The interpolation error has two local maximum values on [0,1].
1513    ///
1514    /// # Source
1515    /// [Verner's RKV878e](https://www.sfu.ca/~jverner/RKV87.IIa.Efficient.000000011182-240510.FLOAT6040OnWeb)
1516    pub fn rkv878e() -> Self {
1517        let mut c = [0.0; 21];
1518        let mut a = [[0.0; 21]; 21];
1519        let mut b = [0.0; 13];
1520        let mut bh = [0.0; 13];
1521        let mut bi8 = [[0.0; 21]; 21];
1522
1523        c[0] = 0.0;
1524        c[1] = 0.92662e-1;
1525        c[2] = 0.131_223_036_175_401_76;
1526        c[3] = 0.196_834_554_263_102_65;
1527        c[4] = 0.427173;
1528        c[5] = 0.485972;
1529        c[6] = 0.161915;
1530        c[7] = 0.985468;
1531        c[8] = 0.962_697_734_860_454_1;
1532        c[9] = 0.99626;
1533        c[10] = 0.997947;
1534        c[11] = 1.0;
1535        c[12] = 1.0;
1536
1537        a[1][0] = 0.92662e-1;
1538
1539        a[2][0] = 3.830_746_548_250_284e-2;
1540        a[2][1] = 9.291_557_069_289_892e-2;
1541
1542        a[3][0] = 4.920_863_856_577_566e-2;
1543        a[3][1] = 0.0;
1544        a[3][2] = 0.147_625_915_697_326_97;
1545
1546        a[4][0] = 0.274_307_608_570_248_66;
1547        a[4][1] = 0.0;
1548        a[4][2] = -0.931_988_720_310_265_6;
1549        a[4][3] = 1.084_854_111_740_017;
1550
1551        a[5][0] = 6.461_852_970_939_692e-2;
1552        a[5][1] = 0.0;
1553        a[5][2] = 0.0;
1554        a[5][3] = 0.268_762_921_336_892_34;
1555        a[5][4] = 0.152_590_548_953_710_74;
1556
1557        a[6][0] = 7.189_155_819_773_217e-2;
1558        a[6][1] = 0.0;
1559        a[6][2] = 0.0;
1560        a[6][3] = 0.122_126_578_336_254_97;
1561        a[6][4] = -7.943_550_859_198_562e-2;
1562        a[6][5] = 4.733_237_205_799_848e-2;
1563
1564        a[7][0] = -6.073_603_893_714_329;
1565        a[7][1] = 0.0;
1566        a[7][2] = 0.0;
1567        a[7][3] = -73.8956;
1568        a[7][4] = 11.939_853_706_952_74;
1569        a[7][5] = -3.839_251_541_405_054_5;
1570        a[7][6] = 72.854_069_728_166_65;
1571
1572        a[8][0] = -4.868_640_079_323_569;
1573        a[8][1] = 0.0;
1574        a[8][2] = 0.0;
1575        a[8][3] = -59.185_727_999_756_46;
1576        a[8][4] = 9.230_819_319_232_426;
1577        a[8][5] = -2.676_847_914_962_525_7;
1578        a[8][6] = 58.457_200_099_946_86;
1579        a[8][7] = 5.894_309_723_726_360_4e-3;
1580
1581        a[9][0] = -6.689_861_899_320_853;
1582        a[9][1] = 0.0;
1583        a[9][2] = 0.0;
1584        a[9][3] = -81.442_710_040_531_11;
1585        a[9][4] = 13.367_788_256_983_971;
1586        a[9][5] = -4.470_777_638_416_181;
1587        a[9][6] = 80.233_213_921_614_11;
1588        a[9][7] = -1.313_638_336_212_181_5e-2;
1589        a[9][8] = 1.174_378_303_219_413_9e-2;
1590
1591        a[10][0] = -6.788_841_955_800_464;
1592        a[10][1] = 0.0;
1593        a[10][2] = 0.0;
1594        a[10][3] = -82.656_398_559_348_29;
1595        a[10][4] = 13.599_739_218_748_99;
1596        a[10][5] = -4.574_464_055_350_504;
1597        a[10][6] = 81.419_432_072_160_76;
1598        a[10][7] = -1.416_248_014_826_418e-2;
1599        a[10][8] = 1.375_441_580_835_227_5e-2;
1600        a[10][9] = -1.111_656_070_581_006_2e-3;
1601
1602        a[11][0] = -6.910_189_846_402_486;
1603        a[11][1] = 0.0;
1604        a[11][2] = 0.0;
1605        a[11][3] = -84.144_951_541_767_48;
1606        a[11][4] = 13.885_121_223_789_838;
1607        a[11][5] = -4.702_458_788_144_494;
1608        a[11][6] = 82.874_114_515_292_42;
1609        a[11][7] = -1.645_498_337_198_78e-2;
1610        a[11][8] = 1.644_663_972_162_521_3e-2;
1611        a[11][9] = 4.275_449_370_796_531e-3;
1612        a[11][10] = -5.902_668_488_222_362e-3;
1613
1614        a[12][0] = -6.911_973_921_198_98;
1615        a[12][1] = 0.0;
1616        a[12][2] = 0.0;
1617        a[12][3] = -84.166_355_958_787_8;
1618        a[12][4] = 13.888_346_275_655_82;
1619        a[12][5] = -4.703_463_178_409_702;
1620        a[12][6] = 82.895_186_222_074_05;
1621        a[12][7] = -1.020_345_016_228_260_3e-2;
1622        a[12][8] = 1.427_900_423_230_391_5e-2;
1623        a[12][9] = -5.814_993_403_397_982e-3;
1624        a[12][10] = 0.0;
1625        a[12][11] = 0.0;
1626
1627        b[0] = 4.625_543_159_712_467_6e-2;
1628        b[1] = 0.0;
1629        b[2] = 0.0;
1630        b[3] = 0.0;
1631        b[4] = 0.0;
1632        b[5] = 0.370_666_616_552_101_1;
1633        b[6] = 0.259_044_082_455_274_66;
1634        b[7] = -679.984_146_817_503_9;
1635        b[8] = 49.891_611_290_420_535;
1636        b[9] = 10_271.235_222_137_313;
1637        b[10] = -14_782.196_606_356_898;
1638        b[11] = 5_141.377_953_616_064;
1639        b[12] = 0.0;
1640
1641        bh[0] = 4.638_504_234_365_211e-2;
1642        bh[1] = 0.0;
1643        bh[2] = 0.0;
1644        bh[3] = 0.0;
1645        bh[4] = 0.0;
1646        bh[5] = 0.372_576_768_158_119_6;
1647        bh[6] = 0.258_568_549_512_168_73;
1648        bh[7] = -147.495_076_758_926_53;
1649        bh[8] = 23.843_627_126_445_874;
1650        bh[9] = 347.426_416_673_055_1;
1651        bh[10] = 0.0;
1652        bh[11] = 0.0;
1653        bh[12] = -223.452_497_400_588_36;
1654
1655        c[13] = 1.0;
1656
1657        a[13][0] = 4.625_543_159_712_467_6e-2;
1658        a[13][1] = 0.0;
1659        a[13][2] = 0.0;
1660        a[13][3] = 0.0;
1661        a[13][4] = 0.0;
1662        a[13][5] = 0.370_666_616_552_101_1;
1663        a[13][6] = 0.259_044_082_455_274_66;
1664        a[13][7] = -679.984_146_817_503_9;
1665        a[13][8] = 49.891_611_290_420_535;
1666        a[13][9] = 10_271.235_222_137_313;
1667        a[13][10] = -14_782.196_606_356_898;
1668        a[13][11] = 5_141.377_953_616_064;
1669        a[13][12] = 0.0;
1670
1671        c[14] = 0.311_017_763_495_386_4;
1672
1673        a[14][0] = 4.911_138_760_562_453e-2;
1674        a[14][1] = 0.0;
1675        a[14][2] = 0.0;
1676        a[14][3] = 0.0;
1677        a[14][4] = 0.0;
1678        a[14][5] = 3.117_373_122_649_833e-2;
1679        a[14][6] = 0.238_492_367_955_329;
1680        a[14][7] = -114.318_025_626_252_7;
1681        a[14][8] = 3.546_408_122_969_840_5;
1682        a[14][9] = 2_460.597_003_929_216;
1683        a[14][10] = -3_738.924_986_857_494;
1684        a[14][11] = 1_389.104_435_743_812_5;
1685        a[14][12] = 0.0;
1686        a[14][13] = -1.259_503_554_386_166_3e-2;
1687
1688        c[15] = 0.2;
1689
1690        a[15][0] = 5.179_349_197_485_644e-2;
1691        a[15][1] = 0.0;
1692        a[15][2] = 0.0;
1693        a[15][3] = 0.0;
1694        a[15][4] = 0.0;
1695        a[15][5] = 3.491_876_693_023_422e-2;
1696        a[15][6] = 0.199_195_855_918_545_47;
1697        a[15][7] = -83.397_932_805_325_08;
1698        a[15][8] = 3.594_107_171_680_368_3;
1699        a[15][9] = 1_608.071_558_743_333_5;
1700        a[15][10] = -2_405.179_666_082_838_6;
1701        a[15][11] = 876.913_423_768_755_8;
1702        a[15][12] = 0.0;
1703        a[15][13] = -7.325_540_972_670_705e-3;
1704        a[15][14] = -8.007_336_945_700_194e-2;
1705
1706        c[16] = 0.6;
1707
1708        a[16][0] = 4.436_713_671_328_35e-2;
1709        a[16][1] = 0.0;
1710        a[16][2] = 0.0;
1711        a[16][3] = 0.0;
1712        a[16][4] = 0.0;
1713        a[16][5] = 0.234_106_144_170_543_85;
1714        a[16][6] = 0.361_391_276_009_148_67;
1715        a[16][7] = 148.988_450_648_249_68;
1716        a[16][8] = -9.426_031_101_789_148;
1717        a[16][9] = -2_394.447_533_524_453_3;
1718        a[16][10] = 3_478.192_564_092_670_6;
1719        a[16][11] = -1_223.319_642_639_490_7;
1720        a[16][12] = 0.0;
1721        a[16][13] = 1.180_395_533_992_265_7e-2;
1722        a[16][14] = 0.134_964_703_701_482_84;
1723        a[16][15] = -0.174_440_691_121_442_12;
1724
1725        c[17] = 0.251;
1726
1727        a[17][0] = 4.927_309_335_160_545e-2;
1728        a[17][1] = 0.0;
1729        a[17][2] = 0.0;
1730        a[17][3] = 0.0;
1731        a[17][4] = 0.0;
1732        a[17][5] = 0.147_847_390_008_601_48;
1733        a[17][6] = 0.191_539_150_378_064_04;
1734        a[17][7] = 85.699_495_190_512_41;
1735        a[17][8] = -5.094_095_153_569_584;
1736        a[17][9] = -1_410.985_179_005_200_5;
1737        a[17][10] = 2_056.873_083_845_176_6;
1738        a[17][11] = -726.490_635_953_008_5;
1739        a[17][12] = 0.0;
1740        a[17][13] = 5.440_493_103_670_101e-3;
1741        a[17][14] = -0.143_791_234_650_488_01;
1742        a[17][15] = 8.130_926_198_406_332e-2;
1743        a[17][16] = -8.328_707_808_559_681e-2;
1744
1745        c[18] = 0.451;
1746
1747        a[18][0] = 4.696_791_108_973_67e-2;
1748        a[18][1] = 0.0;
1749        a[18][2] = 0.0;
1750        a[18][3] = 0.0;
1751        a[18][4] = 0.0;
1752        a[18][5] = 0.201_020_760_676_109_74;
1753        a[18][6] = 0.263_682_085_883_409_74;
1754        a[18][7] = 129.694_642_865_847_3;
1755        a[18][8] = -7.848_674_084_672_58;
1756        a[18][9] = -2_121.729_757_286_215_8;
1757        a[18][10] = 3_090.157_418_699_412;
1758        a[18][11] = -1_090.274_673_114_349_5;
1759        a[18][12] = 0.0;
1760        a[18][13] = 8.963_759_217_746_588e-3;
1761        a[18][14] = 4.875_201_082_359_089_5e-2;
1762        a[18][15] = -2.352_913_684_548_179_8e-2;
1763        a[18][16] = -9.381_447_086_675_579e-2;
1764        a[18][17] = 0.0;
1765
1766        c[19] = 0.705;
1767
1768        a[19][0] = 4.619_987_481_300_149_4e-2;
1769        a[19][1] = 0.0;
1770        a[19][2] = 0.0;
1771        a[19][3] = 0.0;
1772        a[19][4] = 0.0;
1773        a[19][5] = 0.232_283_678_301_755_42;
1774        a[19][6] = 0.298_205_197_822_691_34;
1775        a[19][7] = 123.626_170_008_820_07;
1776        a[19][8] = -7.231_890_372_340_912;
1777        a[19][9] = -2_046.801_418_638_051_5;
1778        a[19][10] = 2_986.087_035_469_917_7;
1779        a[19][11] = -1_055.671_796_398_943;
1780        a[19][12] = 0.0;
1781        a[19][13] = 7.930_343_978_313_867e-3;
1782        a[19][14] = 8.980_932_823_961_332e-2;
1783        a[19][15] = -8.017_153_994_764_18e-2;
1784        a[19][16] = 0.102_643_047_389_673_75;
1785        a[19][17] = 0.0;
1786        a[19][18] = 0.0;
1787
1788        c[20] = 0.8795;
1789
1790        a[20][0] = 5.329_137_345_256_787e-2;
1791        a[20][1] = 0.0;
1792        a[20][2] = 0.0;
1793        a[20][3] = 0.0;
1794        a[20][4] = 0.0;
1795        a[20][5] = 0.204_318_580_298_548_3;
1796        a[20][6] = 0.135_872_889_780_171_29;
1797        a[20][7] = -402.807_984_460_812_8;
1798        a[20][8] = 29.461_105_684_176_53;
1799        a[20][9] = 6_093.592_821_606_032;
1800        a[20][10] = -8_771.855_718_519_913;
1801        a[20][11] = 3_051.798_314_820_693;
1802        a[20][12] = 0.0;
1803        a[20][13] = -3.308_969_275_605_73e-2;
1804        a[20][14] = 2.805_382_986_735_396e-2;
1805        a[20][15] = 0.133_595_363_421_956_27;
1806        a[20][16] = 0.168_918_525_760_599_15;
1807        a[20][17] = 0.0;
1808        a[20][18] = 0.0;
1809        a[20][19] = 0.0;
1810
1811        bi8[0][0] = 1.0;
1812        bi8[0][1] = -8.560_562_317_505_521;
1813        bi8[0][2] = 37.911_203_197_906_45;
1814        bi8[0][3] = -95.909_979_703_870_49;
1815        bi8[0][4] = 143.955_798_956_065_25;
1816        bi8[0][5] = -126.864_525_883_001_04;
1817        bi8[0][6] = 60.678_975_081_566_136;
1818        bi8[0][7] = -12.164_653_899_563_671;
1819
1820        bi8[1][0] = 0.0;
1821        bi8[1][1] = 0.0;
1822        bi8[1][2] = 0.0;
1823        bi8[1][3] = 0.0;
1824        bi8[1][4] = 0.0;
1825        bi8[1][5] = 0.0;
1826        bi8[1][6] = 0.0;
1827        bi8[1][7] = 0.0;
1828
1829        bi8[2][0] = 0.0;
1830        bi8[2][1] = 0.0;
1831        bi8[2][2] = 0.0;
1832        bi8[2][3] = 0.0;
1833        bi8[2][4] = 0.0;
1834        bi8[2][5] = 0.0;
1835        bi8[2][6] = 0.0;
1836        bi8[2][7] = 0.0;
1837
1838        bi8[3][0] = 0.0;
1839        bi8[3][1] = 0.0;
1840        bi8[3][2] = 0.0;
1841        bi8[3][3] = 0.0;
1842        bi8[3][4] = 0.0;
1843        bi8[3][5] = 0.0;
1844        bi8[3][6] = 0.0;
1845        bi8[3][7] = 0.0;
1846
1847        bi8[4][0] = 0.0;
1848        bi8[4][1] = 0.0;
1849        bi8[4][2] = 0.0;
1850        bi8[4][3] = 0.0;
1851        bi8[4][4] = 0.0;
1852        bi8[4][5] = 0.0;
1853        bi8[4][6] = 0.0;
1854        bi8[4][7] = 0.0;
1855
1856        bi8[5][0] = 0.0;
1857        bi8[5][1] = 31.581_058_769_660_707;
1858        bi8[5][2] = -180.517_800_649_793_6;
1859        bi8[5][3] = 371.242_868_417_558_55;
1860        bi8[5][4] = -219.959_443_261_613_3;
1861        bi8[5][5] = -240.093_837_615_773_5;
1862        bi8[5][6] = 371.162_514_909_573_4;
1863        bi8[5][7] = -133.044_693_953_060_12;
1864
1865        bi8[6][0] = 0.0;
1866        bi8[6][1] = 22.070_739_652_927_315;
1867        bi8[6][2] = -126.156_675_427_491_76;
1868        bi8[6][3] = 259.446_801_850_776_47;
1869        bi8[6][4] = -153.720_862_933_629_3;
1870        bi8[6][5] = -167.791_986_359_261_5;
1871        bi8[6][6] = 259.390_645_995_842_2;
1872        bi8[6][7] = -92.979_618_696_708_13;
1873
1874        bi8[7][0] = 0.0;
1875        bi8[7][1] = -57_935.131_852_001_3;
1876        bi8[7][2] = 331_158.073_532_549_84;
1877        bi8[7][3] = -681_041.275_017_313;
1878        bi8[7][4] = 403_513.366_679_671_74;
1879        bi8[7][5] = 440_449.708_813_618_4;
1880        bi8[7][6] = -680_893.867_322_281_5;
1881        bi8[7][7] = 244_069.141_018_938_3;
1882
1883        bi8[8][0] = 0.0;
1884        bi8[8][1] = 4_250.800_686_968_169;
1885        bi8[8][2] = -24_297.639_816_601_048;
1886        bi8[8][3] = 49_969.174_612_265_41;
1887        bi8[8][4] = -29_606.472_643_654_408;
1888        bi8[8][5] = -32_316.555_860_831_86;
1889        bi8[8][6] = 49_958.359_055_084_92;
1890        bi8[8][7] = -17_907.774_421_940_754;
1891
1892        bi8[9][0] = 0.0;
1893        bi8[9][1] = 875_116.529_793_378_3;
1894        bi8[9][2] = -5_002_179.072_677_031;
1895        bi8[9][3] = 10_287_203.259_702_617;
1896        bi8[9][4] = -6_095_113.722_637_695;
1897        bi8[9][5] = -6_653_041.227_387_194_5;
1898        bi8[9][6] = 10_284_976.650_278_99;
1899        bi8[9][7] = -3_686_691.181_850_927_4;
1900
1901        bi8[10][0] = 0.0;
1902        bi8[10][1] = -1_259_453.640_882_216_6;
1903        bi8[10][2] = 7_199_055.703_947_677;
1904        bi8[10][3] = -14_805_177.549_310_993;
1905        bi8[10][4] = 8_771_989.681_625_245;
1906        bi8[10][5] = 9_574_949.976_948_425;
1907        bi8[10][6] = -14_801_973.048_824_556;
1908        bi8[10][7] = 5_305_826.679_890_062;
1909
1910        bi8[11][0] = 0.0;
1911        bi8[11][1] = 438_049.050_169_491;
1912        bi8[11][2] = -2_503_894.872_242_029_3;
1913        bi8[11][3] = 5_149_370.927_637_711;
1914        bi8[11][4] = -3_050_975.139_855_798;
1915        bi8[11][5] = -3_330_251.790_676_982_6;
1916        bi8[11][6] = 5_148_256.374_192_641;
1917        bi8[11][7] = -1_845_413.171_271_418_2;
1918
1919        bi8[12][0] = 0.0;
1920        bi8[12][1] = 0.0;
1921        bi8[12][2] = 0.0;
1922        bi8[12][3] = 0.0;
1923        bi8[12][4] = 0.0;
1924        bi8[12][5] = 0.0;
1925        bi8[12][6] = 0.0;
1926        bi8[12][7] = 0.0;
1927
1928        bi8[13][0] = 0.0;
1929        bi8[13][1] = -2.504_431_470_815_825_7;
1930        bi8[13][2] = 10.020_515_934_447_003;
1931        bi8[13][3] = 3.188_314_791_667_845;
1932        bi8[13][4] = -81.289_190_874_560_96;
1933        bi8[13][5] = 166.501_641_547_533_3;
1934        bi8[13][6] = -137.964_960_485_395_12;
1935        bi8[13][7] = 42.048_110_557_123_785;
1936
1937        bi8[14][0] = 0.0;
1938        bi8[14][1] = -8.781_714_078_400_347;
1939        bi8[14][2] = 95.926_836_813_178_82;
1940        bi8[14][3] = -437.868_401_882_205_94;
1941        bi8[14][4] = 1_022.893_757_817_680_7;
1942        bi8[14][5] = -1_279.306_771_651_130_5;
1943        bi8[14][6] = 814.461_977_782_550_7;
1944        bi8[14][7] = -207.325_684_801_673_42;
1945
1946        bi8[15][0] = 0.0;
1947        bi8[15][1] = 23.683_610_887_782_528;
1948        bi8[15][2] = -258.707_338_510_044_3;
1949        bi8[15][3] = 1_180.897_573_941_780_6;
1950        bi8[15][4] = -2_758.666_192_432_960_5;
1951        bi8[15][5] = 3_450.192_469_874_827;
1952        bi8[15][6] = -2_196.541_630_994_369_4;
1953        bi8[15][7] = 559.141_507_232_983_6;
1954
1955        bi8[16][0] = 0.0;
1956        bi8[16][1] = -40.604_955_901_261_88;
1957        bi8[16][2] = 443.547_232_780_800_47;
1958        bi8[16][3] = -2_024.619_224_703_986_2;
1959        bi8[16][4] = 4_729.663_885_325_313;
1960        bi8[16][5] = -5_915.268_315_880_109;
1961        bi8[16][6] = 3_765.915_446_103_794_2;
1962        bi8[16][7] = -958.634_067_724_549_9;
1963
1964        bi8[17][0] = 0.0;
1965        bi8[17][1] = -46.254_485_925_330_556;
1966        bi8[17][2] = 439.193_846_604_121_7;
1967        bi8[17][3] = -1_719.438_253_681_139_3;
1968        bi8[17][4] = 3_520.667_063_097_926;
1969        bi8[17][5] = -3_962.634_989_140_663_5;
1970        bi8[17][6] = 2_322.579_486_243_480_5;
1971        bi8[17][7] = -554.112_667_198_394_9;
1972
1973        bi8[18][0] = 0.0;
1974        bi8[18][1] = 14.237_752_210_103_935;
1975        bi8[18][2] = -276.293_272_408_963_9;
1976        bi8[18][3] = 1_558.151_943_742_051_1;
1977        bi8[18][4] = -3_984.134_381_318_252;
1978        bi8[18][5] = 5_195.127_830_395_725;
1979        bi8[18][6] = -3_374.420_443_020_703_3;
1980        bi8[18][7] = 867.330_570_400_038_7;
1981
1982        bi8[19][0] = 0.0;
1983        bi8[19][1] = 6.177_962_769_210_591;
1984        bi8[19][2] = -157.491_070_117_552_48;
1985        bi8[19][3] = 978.638_089_062_525_4;
1986        bi8[19][4] = -2_692.299_557_325_996;
1987        bi8[19][5] = 3_734.579_314_715_993;
1988        bi8[19][6] = -2_556.424_739_731_601;
1989        bi8[19][7] = 686.820_000_627_420_5;
1990
1991        bi8[20][0] = 0.0;
1992        bi8[20][1] = -18.652_890_215_881_367;
1993        bi8[20][2] = 130.373_777_217_996_12;
1994        bi8[20][3] = -398.267_356_123_524_5;
1995        bi8[20][4] = 665.175_955_179_824;
1996        bi8[20][5] = -644.552_667_038_92;
1997        bi8[20][6] = 346.695_348_237_773_77;
1998        bi8[20][7] = -80.772_167_257_267_92;
1999
2000        let c = c.map(|x| T::from_f64(x).unwrap());
2001        let a = a.map(|row| row.map(|x| T::from_f64(x).unwrap()));
2002        let b = b.map(|x| T::from_f64(x).unwrap());
2003        let bh = bh.map(|x| T::from_f64(x).unwrap());
2004        let bi8 = bi8.map(|row| row.map(|x| T::from_f64(x).unwrap()));
2005
2006        Self {
2007            c,
2008            a,
2009            b,
2010            bh: Some(bh),
2011            bi: Some(bi8),
2012            er: None,
2013        }
2014    }
2015}
2016
2017impl<T: Real> ButcherTableau<T, 16, 21> {
2018    /// A better efficient Runge-Kutta (16:8(9)) pair with 8th-order interpolation.
2019    ///
2020    /// # Overview
2021    /// This provides a 16-stage Runge-Kutta method with:
2022    /// - Primary order: 8
2023    /// - Embedded order: 9 (for error estimation)
2024    /// - Number of stages: 16 primary + 5 additional stages for interpolation
2025    /// - Dominant stage order: 5
2026    ///
2027    /// # Efficiency
2028    /// This method is particularly efficient with a local truncation error 2-norm:
2029    ///
2030    /// T_10,2 ~ 0.00000034399
2031    ///
2032    /// This 2-norm is smaller than previous (16:8,9) pairs and has two local maximum values on [0,1].
2033    ///
2034    /// # Interpolation
2035    /// - Nodes c[17]=1 and c[18]-c[21] were selected to minimize interpolation error.
2036    /// - The interpolant has continuous derivatives.
2037    /// - Maximum 2-norm of the local truncation error over [0,1] for the interpolant:
2038    ///
2039    ///   Ti_9,2 ~ 0.000003721
2040    ///
2041    /// - The interpolation error has three local maximum values on [0,1].
2042    ///
2043    /// # Notes
2044    /// - Exact coefficients of the method are possible using surds in terms of sqrt(6).
2045    /// - This method shares the same primary stages as the 9th-order method (rkv989e).
2046    /// - The interpolant requires fewer additional stages than the 9th-order version.
2047    ///
2048    /// # Source
2049    /// [Verner's RKV878e](https://www.sfu.ca/~jverner/RKV98.IIa.Efficient.00000034399.240407.BetterEfficientonWeb)
2050    pub fn rkv988e() -> Self {
2051        let mut c = [0.0; 21];
2052        let mut a = [[0.0; 21]; 21];
2053        let mut b = [0.0; 16];
2054        let mut bh = [0.0; 16];
2055        let mut bi8 = [[0.0; 21]; 21];
2056
2057        c[0] = 0.0;
2058        c[1] = 0.3571e-1;
2059        c[2] = 9.906_028_091_267_415e-2;
2060        c[3] = 0.148_590_421_369_011_2;
2061        c[4] = 0.6134;
2062        c[5] = 0.232_735_947_360_562_7;
2063        c[6] = 0.553_864_052_639_437_3;
2064        c[7] = 0.6555;
2065        c[8] = 0.491625;
2066        c[9] = 0.6858e-1;
2067        c[10] = 0.253;
2068        c[11] = 0.662_064_179_541_204_6;
2069        c[12] = 0.8309;
2070        c[13] = 0.8998;
2071        c[14] = 1.0;
2072        c[15] = 1.0;
2073
2074        a[1][0] = 0.3571e-1;
2075
2076        a[2][0] = -3.833_735_636_677_017e-2;
2077        a[2][1] = 0.137_397_637_279_444_32;
2078
2079        a[3][0] = 3.714_760_534_225_28e-2;
2080        a[3][1] = 0.0;
2081        a[3][2] = 0.111_442_816_026_758_42;
2082
2083        a[4][0] = 2.674_764_429_871_505;
2084        a[4][1] = 0.0;
2085        a[4][2] = -9.982_382_134_885_293;
2086        a[4][3] = 7.921_017_705_013_789;
2087
2088        a[5][0] = 5.242_104_050_577_351e-2;
2089        a[5][1] = 0.0;
2090        a[5][2] = 0.0;
2091        a[5][3] = 0.179_691_118_917_595_32;
2092        a[5][4] = 6.237_879_371_938_568e-4;
2093
2094        a[6][0] = 0.159_249_222_364_763_22;
2095        a[6][1] = 0.0;
2096        a[6][2] = 0.0;
2097        a[6][3] = -0.429_842_987_724_108_7;
2098        a[6][4] = 6.665_266_542_726_088e-2;
2099        a[6][5] = 0.757_805_152_571_522;
2100
2101        a[7][0] = 7.283_333_333_333_333e-2;
2102        a[7][1] = 0.0;
2103        a[7][2] = 0.0;
2104        a[7][3] = 0.0;
2105        a[7][4] = 0.0;
2106        a[7][5] = 0.335_934_459_066_510_37;
2107        a[7][6] = 0.246_732_207_600_156_3;
2108
2109        a[8][0] = 7.297_558_593_75e-2;
2110        a[8][1] = 0.0;
2111        a[8][2] = 0.0;
2112        a[8][3] = 0.0;
2113        a[8][4] = 0.0;
2114        a[8][5] = 0.334_800_972_969_933_33;
2115        a[8][6] = 0.118_415_823_905_066_65;
2116        a[8][7] = -3.456_738_281_25e-2;
2117
2118        a[9][0] = 4.911_213_663_452_096_4e-2;
2119        a[9][1] = 0.0;
2120        a[9][2] = 0.0;
2121        a[9][3] = 0.0;
2122        a[9][4] = 0.0;
2123        a[9][5] = 3.983_857_361_308_652e-2;
2124        a[9][6] = 0.106_967_528_893_935_49;
2125        a[9][7] = -2.174_259_165_458_647_7e-2;
2126        a[9][8] = -0.105_595_647_486_956_49;
2127
2128        a[10][0] = -2.707_988_818_641_280_5e-2;
2129        a[10][1] = 0.0;
2130        a[10][2] = 0.0;
2131        a[10][3] = 0.0;
2132        a[10][4] = 0.0;
2133        a[10][5] = 3.33e-2;
2134        a[10][6] = -0.164_552_607_003_605_72;
2135        a[10][7] = 3.428_266_306_497_39e-2;
2136        a[10][8] = 0.158_526_406_443_922_1;
2137        a[10][9] = 0.218_523_425_681_122_5;
2138
2139        a[11][0] = 5.584_657_769_108_862_5e-2;
2140        a[11][1] = 0.0;
2141        a[11][2] = 0.0;
2142        a[11][3] = 0.0;
2143        a[11][4] = 0.0;
2144        a[11][5] = 9.166_533_166_672_539e-2;
2145        a[11][6] = 0.239_239_965_552_362_7;
2146        a[11][7] = 1.023_834_712_248_415e-2;
2147        a[11][8] = -2.679_331_322_859_542_6e-3;
2148        a[11][9] = 4.235_624_181_474_284_5e-2;
2149        a[11][10] = 0.225_397_047_016_660_4;
2150
2151        a[12][0] = -0.480_251_051_272_519_6;
2152        a[12][1] = 0.0;
2153        a[12][2] = 0.0;
2154        a[12][3] = 0.0;
2155        a[12][4] = 0.0;
2156        a[12][5] = -6.359_610_162_555_930_5;
2157        a[12][6] = -0.276_231_389_804_084_1;
2158        a[12][7] = -6.500_796_633_979_847;
2159        a[12][8] = 0.573_476_587_704_095_7;
2160        a[12][9] = 1.347_125_994_868_138_9;
2161        a[12][10] = 5.936_840_409_706_221;
2162        a[12][11] = 6.590_346_245_333_925;
2163
2164        a[13][0] = 0.330_753_306_767_140_1;
2165        a[13][1] = 0.0;
2166        a[13][2] = 0.0;
2167        a[13][3] = 0.0;
2168        a[13][4] = 0.0;
2169        a[13][5] = 5.956_207_776_829_962;
2170        a[13][6] = -0.486_831_640_048_152_77;
2171        a[13][7] = 4.462_055_288_206_771;
2172        a[13][8] = 0.741_025_823_144_207_2;
2173        a[13][9] = -0.711_819_203_457_591_3;
2174        a[13][10] = -5.454_619_594_516_665;
2175        a[13][11] = -4.140_803_729_244_71;
2176        a[13][12] = 0.203_831_972_319_038_66;
2177
2178        a[14][0] = -0.584_711_112_299_894_5;
2179        a[14][1] = 0.0;
2180        a[14][2] = 0.0;
2181        a[14][3] = 0.0;
2182        a[14][4] = 0.0;
2183        a[14][5] = -12.412_684_171_162_67;
2184        a[14][6] = 1.360_245_445_660_928;
2185        a[14][7] = -22.426_105_311_118_683;
2186        a[14][8] = -0.882_885_705_586_545_8;
2187        a[14][9] = 1.770_155_128_538_230_4;
2188        a[14][10] = 12.158_096_519_185_339;
2189        a[14][11] = 22.230_375_204_077_607;
2190        a[14][12] = -0.663_448_376_020_124_9;
2191        a[14][13] = 0.450_962_378_725_813_74;
2192
2193        a[15][0] = 1.940_575_549_810_648_7;
2194        a[15][1] = 0.0;
2195        a[15][2] = 0.0;
2196        a[15][3] = 0.0;
2197        a[15][4] = 0.0;
2198        a[15][5] = 21.977_984_081_145_564;
2199        a[15][6] = 0.823_074_732_698_472_9;
2200        a[15][7] = 68.164_416_836_263_54;
2201        a[15][8] = -3.117_097_463_620_267;
2202        a[15][9] = -4.568_841_021_822_44;
2203        a[15][10] = -18.741_909_871_262_65;
2204        a[15][11] = -66.577_118_396_378_32;
2205        a[15][12] = 1.098_915_553_165_441_8;
2206        a[15][13] = 0.0;
2207        a[15][14] = 0.0;
2208
2209        b[0] = 1.500_669_014_979_724_7e-2;
2210        b[1] = 0.0;
2211        b[2] = 0.0;
2212        b[3] = 0.0;
2213        b[4] = 0.0;
2214        b[5] = 0.0;
2215        b[6] = 0.0;
2216        b[7] = -1.055_180_992_746_381_3;
2217        b[8] = 0.238_494_726_378_218_3;
2218        b[9] = 0.128_815_177_428_299_15;
2219        b[10] = 0.227_662_311_104_621_57;
2220        b[11] = 1.229_532_587_437_517_4;
2221        b[12] = 4.624_976_662_810_384e-2;
2222        b[13] = 0.138_619_631_936_629_38;
2223        b[14] = 3.080_010_168_319_435_5e-2;
2224        b[15] = 0.0;
2225
2226        bh[0] = 1.897_210_532_481_101_4e-2;
2227        bh[1] = 0.0;
2228        bh[2] = 0.0;
2229        bh[3] = 0.0;
2230        bh[4] = 0.0;
2231        bh[5] = 0.0;
2232        bh[6] = 0.0;
2233        bh[7] = 3.408_110_314_549_493_8;
2234        bh[8] = 0.126_032_388_382_092_1;
2235        bh[9] = 0.118_837_506_345_114_97;
2236        bh[10] = 0.249_104_199_783_868_75;
2237        bh[11] = -3.269_966_219_928_978_3;
2238        bh[12] = 0.302_379_810_022_888_3;
2239        bh[13] = 0.0;
2240        bh[14] = 0.0;
2241        bh[15] = 4.652_989_552_070_924e-2;
2242
2243        c[16] = 1.0;
2244
2245        a[16][0] = 1.500_669_014_979_724_7e-2;
2246        a[16][1] = 0.0;
2247        a[16][2] = 0.0;
2248        a[16][3] = 0.0;
2249        a[16][4] = 0.0;
2250        a[16][5] = 0.0;
2251        a[16][6] = 0.0;
2252        a[16][7] = -1.055_180_992_746_381_3;
2253        a[16][8] = 0.238_494_726_378_218_3;
2254        a[16][9] = 0.128_815_177_428_299_15;
2255        a[16][10] = 0.227_662_311_104_621_57;
2256        a[16][11] = 1.229_532_587_437_517_4;
2257        a[16][12] = 4.624_976_662_810_384e-2;
2258        a[16][13] = 0.138_619_631_936_629_38;
2259        a[16][14] = 3.080_010_168_319_435_5e-2;
2260        a[16][15] = 0.0;
2261
2262        c[17] = 0.737_501_813_998_881;
2263
2264        a[17][0] = 1.571_801_061_417_788e-2;
2265        a[17][1] = 0.0;
2266        a[17][2] = 0.0;
2267        a[17][3] = 0.0;
2268        a[17][4] = 0.0;
2269        a[17][5] = 0.0;
2270        a[17][6] = 0.0;
2271        a[17][7] = 0.485_340_345_265_736_33;
2272        a[17][8] = 0.210_778_756_890_454_67;
2273        a[17][9] = 0.126_980_241_305_335_42;
2274        a[17][10] = 0.231_968_701_451_391_92;
2275        a[17][11] = -0.362_021_471_406_909_66;
2276        a[17][12] = 5.366_106_712_036_344e-2;
2277        a[17][13] = -2.806_066_613_385_549_8e-2;
2278        a[17][14] = -2.378_121_372_710_33e-2;
2279        a[17][15] = 0.0;
2280        a[17][16] = 2.691_804_261_928_989e-2;
2281
2282        c[18] = 0.749;
2283
2284        a[18][0] = 1.569_705_832_522_204_4e-2;
2285        a[18][1] = 0.0;
2286        a[18][2] = 0.0;
2287        a[18][3] = 0.0;
2288        a[18][4] = 0.0;
2289        a[18][5] = 0.0;
2290        a[18][6] = 0.0;
2291        a[18][7] = 0.461_607_524_220_211_2;
2292        a[18][8] = 0.211_394_651_669_811_33;
2293        a[18][9] = 0.127_033_091_716_710_93;
2294        a[18][10] = 0.231_854_055_029_870_83;
2295        a[18][11] = -0.338_526_640_668_837_3;
2296        a[18][12] = 5.298_251_972_194_236e-2;
2297        a[18][13] = -2.750_461_365_887_187_8e-2;
2298        a[18][14] = -2.361_906_185_395_527e-2;
2299        a[18][15] = 0.0;
2300        a[18][16] = 2.668_458_089_504_036e-2;
2301        a[18][17] = 1.139_683_460_285_541_5e-2;
2302
2303        c[19] = 0.65;
2304
2305        a[19][0] = 1.438_964_884_291_216_3e-2;
2306        a[19][1] = 0.0;
2307        a[19][2] = 0.0;
2308        a[19][3] = 0.0;
2309        a[19][4] = 0.0;
2310        a[19][5] = 0.0;
2311        a[19][6] = 0.0;
2312        a[19][7] = -1.206_901_219_123_788_4;
2313        a[19][8] = 0.250_562_855_463_937_64;
2314        a[19][9] = 0.130_333_291_570_212_73;
2315        a[19][10] = 0.224_671_775_926_352_2;
2316        a[19][11] = 1.308_419_325_781_946_5;
2317        a[19][12] = 2.589_750_180_376_236e-3;
2318        a[19][13] = 8.070_743_254_562_857e-3;
2319        a[19][14] = -1.267_568_255_392_829_4e-2;
2320        a[19][15] = 0.0;
2321        a[19][16] = 1.129_158_072_373_321_6e-2;
2322        a[19][17] = 3.422_056_680_709_75e-2;
2323        a[19][18] = -0.114_972_636_873_414_2;
2324
2325        c[20] = 0.487;
2326
2327        a[20][0] = 1.452_348_029_801_042e-2;
2328        a[20][1] = 0.0;
2329        a[20][2] = 0.0;
2330        a[20][3] = 0.0;
2331        a[20][4] = 0.0;
2332        a[20][5] = 0.0;
2333        a[20][6] = 0.0;
2334        a[20][7] = -0.521_424_310_246_581_9;
2335        a[20][8] = 0.186_669_884_420_460_4;
2336        a[20][9] = 0.129_931_635_445_127_3;
2337        a[20][10] = 0.226_214_108_576_571_93;
2338        a[20][11] = 0.610_458_263_946_671;
2339        a[20][12] = 1.418_715_607_022_412_5e-2;
2340        a[20][13] = 1.480_061_054_412_245_8e-2;
2341        a[20][14] = -3.711_471_609_871_774_7e-3;
2342        a[20][15] = 0.0;
2343        a[20][16] = 1.393_256_979_572_559e-3;
2344        a[20][17] = 1.114_731_020_624_073_3;
2345        a[20][18] = -1.021_208_555_757_145_8;
2346        a[20][19] = -0.279_565_079_291_234_1;
2347
2348        bi8[0][0] = 1.0;
2349        bi8[0][1] = -11.009_172_273_099_548;
2350        bi8[0][2] = 53.603_768_441_854_456;
2351        bi8[0][3] = -143.781_860_105_177_34;
2352        bi8[0][4] = 227.780_227_272_405_97;
2353        bi8[0][5] = -212.766_777_474_539_77;
2354        bi8[0][6] = 108.476_558_503_094_35;
2355        bi8[0][7] = -23.287_737_674_388_335;
2356
2357        bi8[1][0] = 0.0;
2358        bi8[1][1] = 0.0;
2359        bi8[1][2] = 0.0;
2360        bi8[1][3] = 0.0;
2361        bi8[1][4] = 0.0;
2362        bi8[1][5] = 0.0;
2363        bi8[1][6] = 0.0;
2364        bi8[1][7] = 0.0;
2365
2366        bi8[2][0] = 0.0;
2367        bi8[2][1] = 0.0;
2368        bi8[2][2] = 0.0;
2369        bi8[2][3] = 0.0;
2370        bi8[2][4] = 0.0;
2371        bi8[2][5] = 0.0;
2372        bi8[2][6] = 0.0;
2373        bi8[2][7] = 0.0;
2374
2375        bi8[3][0] = 0.0;
2376        bi8[3][1] = 0.0;
2377        bi8[3][2] = 0.0;
2378        bi8[3][3] = 0.0;
2379        bi8[3][4] = 0.0;
2380        bi8[3][5] = 0.0;
2381        bi8[3][6] = 0.0;
2382        bi8[3][7] = 0.0;
2383
2384        bi8[4][0] = 0.0;
2385        bi8[4][1] = 0.0;
2386        bi8[4][2] = 0.0;
2387        bi8[4][3] = 0.0;
2388        bi8[4][4] = 0.0;
2389        bi8[4][5] = 0.0;
2390        bi8[4][6] = 0.0;
2391        bi8[4][7] = 0.0;
2392
2393        bi8[5][0] = 0.0;
2394        bi8[5][1] = 0.0;
2395        bi8[5][2] = 0.0;
2396        bi8[5][3] = 0.0;
2397        bi8[5][4] = 0.0;
2398        bi8[5][5] = 0.0;
2399        bi8[5][6] = 0.0;
2400        bi8[5][7] = 0.0;
2401
2402        bi8[6][0] = 0.0;
2403        bi8[6][1] = 0.0;
2404        bi8[6][2] = 0.0;
2405        bi8[6][3] = 0.0;
2406        bi8[6][4] = 0.0;
2407        bi8[6][5] = 0.0;
2408        bi8[6][6] = 0.0;
2409        bi8[6][7] = 0.0;
2410
2411        bi8[7][0] = 0.0;
2412        bi8[7][1] = 179.087_906_217_887_22;
2413        bi8[7][2] = -1_728.403_136_057_631_4;
2414        bi8[7][3] = 6_564.460_940_561_143;
2415        bi8[7][4] = -12_902.910_815_841_211;
2416        bi8[7][5] = 13_965.179_771_002_651;
2417        bi8[7][6] = -7_920.424_061_687_376;
2418        bi8[7][7] = 1_841.954_214_811_791_2;
2419
2420        bi8[8][0] = 0.0;
2421        bi8[8][1] = -22.883_047_147_673_906;
2422        bi8[8][2] = 238.804_050_768_529_4;
2423        bi8[8][3] = -936.858_578_229_607_4;
2424        bi8[8][4] = 1_874.044_957_762_151_4;
2425        bi8[8][5] = -2_050.511_559_353_009_5;
2426        bi8[8][6] = 1_171.508_545_192_416_2;
2427        bi8[8][7] = -273.865_874_266_428_2;
2428
2429        bi8[9][0] = 0.0;
2430        bi8[9][1] = 12.173_315_496_281_248;
2431        bi8[9][2] = -82.750_764_764_368_7;
2432        bi8[9][3] = 256.480_443_875_130_8;
2433        bi8[9][4] = -441.099_942_975_831_1;
2434        bi8[9][5] = 434.507_983_140_121_3;
2435        bi8[9][6] = -229.893_460_589_690_02;
2436        bi8[9][7] = 50.711_240_995_784_785;
2437
2438        bi8[10][0] = 0.0;
2439        bi8[10][1] = 2.613_203_520_133_623;
2440        bi8[10][2] = 16.880_029_372_611_844;
2441        bi8[10][3] = -134.172_792_115_523_78;
2442        bi8[10][4] = 340.120_480_169_263_8;
2443        bi8[10][5] = -420.125_889_377_687_94;
2444        bi8[10][6] = 258.323_437_214_655_7;
2445        bi8[10][7] = -63.410_806_472_348_604;
2446
2447        bi8[11][0] = 0.0;
2448        bi8[11][1] = -212.312_700_591_366_6;
2449        bi8[11][2] = 2_045.352_316_395_154_3;
2450        bi8[11][3] = -7_762.060_413_644_091;
2451        bi8[11][4] = 15_250.148_414_593_781;
2452        bi8[11][5] = -16_501.080_035_445_18;
2453        bi8[11][6] = 9_356.907_363_957_305;
2454        bi8[11][7] = -2_175.725_412_678_167;
2455
2456        bi8[12][0] = 0.0;
2457        bi8[12][1] = -11.501_647_085_674_298;
2458        bi8[12][2] = 107.276_970_404_572_52;
2459        bi8[12][3] = -401.234_533_298_394_75;
2460        bi8[12][4] = 781.891_698_957_293;
2461        bi8[12][5] = -841.659_337_101_325_5;
2462        bi8[12][6] = 475.576_739_148_558_83;
2463        bi8[12][7] = -110.303_641_258_401_8;
2464
2465        bi8[13][0] = 0.0;
2466        bi8[13][1] = -38.772_396_773_403_656;
2467        bi8[13][2] = 358.639_118_015_297;
2468        bi8[13][3] = -1_336.215_732_140_227;
2469        bi8[13][4] = 2_598.193_515_313_187;
2470        bi8[13][5] = -2_792.878_330_051_016_7;
2471        bi8[13][6] = 1_576.586_790_342_81;
2472        bi8[13][7] = -365.414_345_074_710_1;
2473
2474        bi8[14][0] = 0.0;
2475        bi8[14][1] = -10.004_254_699_988_527;
2476        bi8[14][2] = 91.677_542_415_604_98;
2477        bi8[14][3] = -340.077_760_065_284_85;
2478        bi8[14][4] = 659.600_836_997_697_8;
2479        bi8[14][5] = -707.882_628_411_297_6;
2480        bi8[14][6] = 399.158_003_026_012_7;
2481        bi8[14][7] = -92.440_939_161_061_42;
2482
2483        bi8[15][0] = 0.0;
2484        bi8[15][1] = 0.0;
2485        bi8[15][2] = 0.0;
2486        bi8[15][3] = 0.0;
2487        bi8[15][4] = 0.0;
2488        bi8[15][5] = 0.0;
2489        bi8[15][6] = 0.0;
2490        bi8[15][7] = 0.0;
2491
2492        bi8[16][0] = 0.0;
2493        bi8[16][1] = 16.210_144_913_375_61;
2494        bi8[16][2] = -150.449_213_104_866_3;
2495        bi8[16][3] = 565.119_663_172_215_3;
2496        bi8[16][4] = -1_111.210_282_651_553_6;
2497        bi8[16][5] = 1_211.236_976_000_843_5;
2498        bi8[16][6] = -695.336_560_691_809_2;
2499        bi8[16][7] = 164.429_272_361_794_77;
2500
2501        bi8[17][0] = 0.0;
2502        bi8[17][1] = -1_872.805_019_318_415;
2503        bi8[17][2] = 16_400.666_332_070_487;
2504        bi8[17][3] = -57_270.162_601_660_53;
2505        bi8[17][4] = 103_330.591_296_066_36;
2506        bi8[17][5] = -102_051.188_817_372_75;
2507        bi8[17][6] = 52_424.752_608_746_625;
2508        bi8[17][7] = -10_961.853_798_531_77;
2509
2510        bi8[18][0] = 0.0;
2511        bi8[18][1] = 1_720.562_129_057_968_8;
2512        bi8[18][2] = -15_159.620_464_322_548;
2513        bi8[18][3] = 53_314.595_619_355_234;
2514        bi8[18][4] = -96_988.374_686_915_76;
2515        bi8[18][5] = 96_690.391_810_236_88;
2516        bi8[18][6] = -50_199.312_489_882_47;
2517        bi8[18][7] = 10_621.758_082_470_702;
2518
2519        bi8[19][0] = 0.0;
2520        bi8[19][1] = 264.247_048_839_608_45;
2521        bi8[19][2] = -2_232.338_003_905_684_7;
2522        bi8[19][3] = 7_453.753_802_419_144;
2523        bi8[19][4] = -12_770.718_814_009_168;
2524        bi8[19][5] = 11_903.252_267_674_463;
2525        bi8[19][6] = -5_733.155_576_507_225;
2526        bi8[19][7] = 1_114.959_275_488_863;
2527
2528        bi8[20][0] = 0.0;
2529        bi8[20][1] = -15.605_510_155_633_654;
2530        bi8[20][2] = 40.661_454_270_987_6;
2531        bi8[20][3] = 170.153_801_875_971_4;
2532        bi8[20][4] = -848.056_884_738_605_3;
2533        bi8[20][5] = 1_373.524_566_531_853_5;
2534        bi8[20][6] = -993.167_896_772_913;
2535        bi8[20][7] = 272.490_468_988_339_4;
2536
2537        let c = c.map(|x| T::from_f64(x).unwrap());
2538        let a = a.map(|row| row.map(|x| T::from_f64(x).unwrap()));
2539        let b = b.map(|x| T::from_f64(x).unwrap());
2540        let bh = bh.map(|x| T::from_f64(x).unwrap());
2541        let bi8 = bi8.map(|row| row.map(|x| T::from_f64(x).unwrap()));
2542
2543        Self {
2544            c,
2545            a,
2546            b,
2547            bh: Some(bh),
2548            bi: Some(bi8),
2549            er: None,
2550        }
2551    }
2552}
2553
2554impl<T: Real> ButcherTableau<T, 16, 26> {
2555    /// A better efficient Runge-Kutta (16:9(8)) pair with 9th-order interpolation.
2556    ///
2557    /// # Overview
2558    /// This provides a 16-stage Runge-Kutta method with:
2559    /// - Primary order: 9
2560    /// - Embedded order: 8 (for error estimation)
2561    /// - Number of stages: 16 primary + 10 additional stages for interpolation
2562    /// - Dominant stage order: 5
2563    ///
2564    /// # Efficiency
2565    /// This method is particularly efficient with a local truncation error 2-norm:
2566    ///
2567    /// T_10,2 ~ 0.00000034399
2568    ///
2569    /// This 2-norm is smaller than previous (16:8,9) pairs and has two local maximum values on [0,1].
2570    ///
2571    /// # Interpolation
2572    /// - The method provides a 9th-order interpolant using additional nodes c[17] through c[25].
2573    /// - The interpolant has continuous derivatives.
2574    /// - Maximum 2-norm of the local truncation error over [0,1] for the interpolant:
2575    ///
2576    ///   Ti_10,2 ~ 0.0000007830
2577    ///
2578    /// - The interpolation error has two local maximum values on [0,1].
2579    ///
2580    /// # Notes
2581    /// - Exact coefficients of the method are possible using surds in terms of sqrt(6).
2582    /// - Exact coefficients for the interpolants cannot be conveniently represented
2583    ///   as they require c[18] to be a zero of a cubic polynomial with coefficients
2584    ///   that are surds in terms of sqrt(6).
2585    ///
2586    /// # Source
2587    /// [Verner's RKV878e](https://www.sfu.ca/~jverner/RKV98.IIa.Efficient.00000034399.240407.BetterEfficientonWeb)
2588    pub fn rkv989e() -> Self {
2589        let mut c = [0.0; 26];
2590        let mut a = [[0.0; 26]; 26];
2591        let mut b = [0.0; 16];
2592        let mut bh = [0.0; 16];
2593        let mut bi9 = [[0.0; 26]; 26];
2594
2595        c[0] = 0.0;
2596        c[1] = 0.3571e-1;
2597        c[2] = 9.906_028_091_267_415e-2;
2598        c[3] = 0.148_590_421_369_011_2;
2599        c[4] = 0.6134;
2600        c[5] = 0.232_735_947_360_562_7;
2601        c[6] = 0.553_864_052_639_437_3;
2602        c[7] = 0.6555;
2603        c[8] = 0.491625;
2604        c[9] = 0.6858e-1;
2605        c[10] = 0.253;
2606        c[11] = 0.662_064_179_541_204_6;
2607        c[12] = 0.8309;
2608        c[13] = 0.8998;
2609        c[14] = 1.0;
2610        c[15] = 1.0;
2611
2612        a[1][0] = 0.3571e-1;
2613
2614        a[2][0] = -3.833_735_636_677_017e-2;
2615        a[2][1] = 0.137_397_637_279_444_32;
2616
2617        a[3][0] = 3.714_760_534_225_28e-2;
2618        a[3][1] = 0.0;
2619        a[3][2] = 0.111_442_816_026_758_42;
2620
2621        a[4][0] = 2.674_764_429_871_505;
2622        a[4][1] = 0.0;
2623        a[4][2] = -9.982_382_134_885_293;
2624        a[4][3] = 7.921_017_705_013_789;
2625
2626        a[5][0] = 5.242_104_050_577_351e-2;
2627        a[5][1] = 0.0;
2628        a[5][2] = 0.0;
2629        a[5][3] = 0.179_691_118_917_595_32;
2630        a[5][4] = 6.237_879_371_938_568e-4;
2631
2632        a[6][0] = 0.159_249_222_364_763_22;
2633        a[6][1] = 0.0;
2634        a[6][2] = 0.0;
2635        a[6][3] = -0.429_842_987_724_108_7;
2636        a[6][4] = 6.665_266_542_726_088e-2;
2637        a[6][5] = 0.757_805_152_571_522;
2638
2639        a[7][0] = 7.283_333_333_333_333e-2;
2640        a[7][1] = 0.0;
2641        a[7][2] = 0.0;
2642        a[7][3] = 0.0;
2643        a[7][4] = 0.0;
2644        a[7][5] = 0.335_934_459_066_510_37;
2645        a[7][6] = 0.246_732_207_600_156_3;
2646
2647        a[8][0] = 7.297_558_593_75e-2;
2648        a[8][1] = 0.0;
2649        a[8][2] = 0.0;
2650        a[8][3] = 0.0;
2651        a[8][4] = 0.0;
2652        a[8][5] = 0.334_800_972_969_933_33;
2653        a[8][6] = 0.118_415_823_905_066_65;
2654        a[8][7] = -3.456_738_281_25e-2;
2655
2656        a[9][0] = 4.911_213_663_452_096_4e-2;
2657        a[9][1] = 0.0;
2658        a[9][2] = 0.0;
2659        a[9][3] = 0.0;
2660        a[9][4] = 0.0;
2661        a[9][5] = 3.983_857_361_308_652e-2;
2662        a[9][6] = 0.106_967_528_893_935_49;
2663        a[9][7] = -2.174_259_165_458_647_7e-2;
2664        a[9][8] = -0.105_595_647_486_956_49;
2665
2666        a[10][0] = -2.707_988_818_641_280_5e-2;
2667        a[10][1] = 0.0;
2668        a[10][2] = 0.0;
2669        a[10][3] = 0.0;
2670        a[10][4] = 0.0;
2671        a[10][5] = 3.33e-2;
2672        a[10][6] = -0.164_552_607_003_605_72;
2673        a[10][7] = 3.428_266_306_497_39e-2;
2674        a[10][8] = 0.158_526_406_443_922_1;
2675        a[10][9] = 0.218_523_425_681_122_5;
2676
2677        a[11][0] = 5.584_657_769_108_862_5e-2;
2678        a[11][1] = 0.0;
2679        a[11][2] = 0.0;
2680        a[11][3] = 0.0;
2681        a[11][4] = 0.0;
2682        a[11][5] = 9.166_533_166_672_539e-2;
2683        a[11][6] = 0.239_239_965_552_362_7;
2684        a[11][7] = 1.023_834_712_248_415e-2;
2685        a[11][8] = -2.679_331_322_859_542_6e-3;
2686        a[11][9] = 4.235_624_181_474_284_5e-2;
2687        a[11][10] = 0.225_397_047_016_660_4;
2688
2689        a[12][0] = -0.480_251_051_272_519_6;
2690        a[12][1] = 0.0;
2691        a[12][2] = 0.0;
2692        a[12][3] = 0.0;
2693        a[12][4] = 0.0;
2694        a[12][5] = -6.359_610_162_555_930_5;
2695        a[12][6] = -0.276_231_389_804_084_1;
2696        a[12][7] = -6.500_796_633_979_847;
2697        a[12][8] = 0.573_476_587_704_095_7;
2698        a[12][9] = 1.347_125_994_868_138_9;
2699        a[12][10] = 5.936_840_409_706_221;
2700        a[12][11] = 6.590_346_245_333_925;
2701
2702        a[13][0] = 0.330_753_306_767_140_1;
2703        a[13][1] = 0.0;
2704        a[13][2] = 0.0;
2705        a[13][3] = 0.0;
2706        a[13][4] = 0.0;
2707        a[13][5] = 5.956_207_776_829_962;
2708        a[13][6] = -0.486_831_640_048_152_77;
2709        a[13][7] = 4.462_055_288_206_771;
2710        a[13][8] = 0.741_025_823_144_207_2;
2711        a[13][9] = -0.711_819_203_457_591_3;
2712        a[13][10] = -5.454_619_594_516_665;
2713        a[13][11] = -4.140_803_729_244_71;
2714        a[13][12] = 0.203_831_972_319_038_66;
2715
2716        a[14][0] = -0.584_711_112_299_894_5;
2717        a[14][1] = 0.0;
2718        a[14][2] = 0.0;
2719        a[14][3] = 0.0;
2720        a[14][4] = 0.0;
2721        a[14][5] = -12.412_684_171_162_67;
2722        a[14][6] = 1.360_245_445_660_928;
2723        a[14][7] = -22.426_105_311_118_683;
2724        a[14][8] = -0.882_885_705_586_545_8;
2725        a[14][9] = 1.770_155_128_538_230_4;
2726        a[14][10] = 12.158_096_519_185_339;
2727        a[14][11] = 22.230_375_204_077_607;
2728        a[14][12] = -0.663_448_376_020_124_9;
2729        a[14][13] = 0.450_962_378_725_813_74;
2730
2731        a[15][0] = 1.940_575_549_810_648_7;
2732        a[15][1] = 0.0;
2733        a[15][2] = 0.0;
2734        a[15][3] = 0.0;
2735        a[15][4] = 0.0;
2736        a[15][5] = 21.977_984_081_145_564;
2737        a[15][6] = 0.823_074_732_698_472_9;
2738        a[15][7] = 68.164_416_836_263_54;
2739        a[15][8] = -3.117_097_463_620_267;
2740        a[15][9] = -4.568_841_021_822_44;
2741        a[15][10] = -18.741_909_871_262_65;
2742        a[15][11] = -66.577_118_396_378_32;
2743        a[15][12] = 1.098_915_553_165_441_8;
2744        a[15][13] = 0.0;
2745        a[15][14] = 0.0;
2746
2747        b[0] = 1.500_669_014_979_724_7e-2;
2748        b[1] = 0.0;
2749        b[2] = 0.0;
2750        b[3] = 0.0;
2751        b[4] = 0.0;
2752        b[5] = 0.0;
2753        b[6] = 0.0;
2754        b[7] = -1.055_180_992_746_381_3;
2755        b[8] = 0.238_494_726_378_218_3;
2756        b[9] = 0.128_815_177_428_299_15;
2757        b[10] = 0.227_662_311_104_621_57;
2758        b[11] = 1.229_532_587_437_517_4;
2759        b[12] = 4.624_976_662_810_384e-2;
2760        b[13] = 0.138_619_631_936_629_38;
2761        b[14] = 3.080_010_168_319_435_5e-2;
2762        b[15] = 0.0;
2763
2764        bh[0] = 1.897_210_532_481_101_4e-2;
2765        bh[1] = 0.0;
2766        bh[2] = 0.0;
2767        bh[3] = 0.0;
2768        bh[4] = 0.0;
2769        bh[5] = 0.0;
2770        bh[6] = 0.0;
2771        bh[7] = 3.408_110_314_549_493_8;
2772        bh[8] = 0.126_032_388_382_092_1;
2773        bh[9] = 0.118_837_506_345_114_97;
2774        bh[10] = 0.249_104_199_783_868_75;
2775        bh[11] = -3.269_966_219_928_978_3;
2776        bh[12] = 0.302_379_810_022_888_3;
2777        bh[13] = 0.0;
2778        bh[14] = 0.0;
2779        bh[15] = 4.652_989_552_070_924e-2;
2780
2781        c[16] = 1.0;
2782
2783        a[16][0] = 1.500_669_014_979_724_7e-2;
2784        a[16][1] = 0.0;
2785        a[16][2] = 0.0;
2786        a[16][3] = 0.0;
2787        a[16][4] = 0.0;
2788        a[16][5] = 0.0;
2789        a[16][6] = 0.0;
2790        a[16][7] = -1.055_180_992_746_381_3;
2791        a[16][8] = 0.238_494_726_378_218_3;
2792        a[16][9] = 0.128_815_177_428_299_15;
2793        a[16][10] = 0.227_662_311_104_621_57;
2794        a[16][11] = 1.229_532_587_437_517_4;
2795        a[16][12] = 4.624_976_662_810_384e-2;
2796        a[16][13] = 0.138_619_631_936_629_38;
2797        a[16][14] = 3.080_010_168_319_435_5e-2;
2798        a[16][15] = 0.0;
2799
2800        c[17] = 0.737_501_813_998_881;
2801
2802        a[17][0] = 1.571_801_061_417_788e-2;
2803        a[17][1] = 0.0;
2804        a[17][2] = 0.0;
2805        a[17][3] = 0.0;
2806        a[17][4] = 0.0;
2807        a[17][5] = 0.0;
2808        a[17][6] = 0.0;
2809        a[17][7] = 0.485_340_345_265_736_33;
2810        a[17][8] = 0.210_778_756_890_454_67;
2811        a[17][9] = 0.126_980_241_305_335_42;
2812        a[17][10] = 0.231_968_701_451_391_92;
2813        a[17][11] = -0.362_021_471_406_909_66;
2814        a[17][12] = 5.366_106_712_036_344e-2;
2815        a[17][13] = -2.806_066_613_385_549_8e-2;
2816        a[17][14] = -2.378_121_372_710_33e-2;
2817        a[17][15] = 0.0;
2818        a[17][16] = 2.691_804_261_928_989e-2;
2819
2820        c[18] = 0.749;
2821
2822        a[18][0] = 1.569_705_832_522_204_4e-2;
2823        a[18][1] = 0.0;
2824        a[18][2] = 0.0;
2825        a[18][3] = 0.0;
2826        a[18][4] = 0.0;
2827        a[18][5] = 0.0;
2828        a[18][6] = 0.0;
2829        a[18][7] = 0.461_607_524_220_211_2;
2830        a[18][8] = 0.211_394_651_669_811_33;
2831        a[18][9] = 0.127_033_091_716_710_93;
2832        a[18][10] = 0.231_854_055_029_870_83;
2833        a[18][11] = -0.338_526_640_668_837_3;
2834        a[18][12] = 5.298_251_972_194_236e-2;
2835        a[18][13] = -2.750_461_365_887_187_8e-2;
2836        a[18][14] = -2.361_906_185_395_527e-2;
2837        a[18][15] = 0.0;
2838        a[18][16] = 2.668_458_089_504_036e-2;
2839        a[18][17] = 1.139_683_460_285_541_5e-2;
2840
2841        c[19] = 0.65;
2842
2843        a[19][0] = 1.438_964_884_291_216_3e-2;
2844        a[19][1] = 0.0;
2845        a[19][2] = 0.0;
2846        a[19][3] = 0.0;
2847        a[19][4] = 0.0;
2848        a[19][5] = 0.0;
2849        a[19][6] = 0.0;
2850        a[19][7] = -1.206_901_219_123_788_4;
2851        a[19][8] = 0.250_562_855_463_937_64;
2852        a[19][9] = 0.130_333_291_570_212_73;
2853        a[19][10] = 0.224_671_775_926_352_2;
2854        a[19][11] = 1.308_419_325_781_946_5;
2855        a[19][12] = 2.589_750_180_376_236e-3;
2856        a[19][13] = 8.070_743_254_562_857e-3;
2857        a[19][14] = -1.267_568_255_392_829_4e-2;
2858        a[19][15] = 0.0;
2859        a[19][16] = 1.129_158_072_373_321_6e-2;
2860        a[19][17] = 3.422_056_680_709_75e-2;
2861        a[19][18] = -0.114_972_636_873_414_2;
2862
2863        c[20] = 0.487;
2864
2865        a[20][0] = 1.452_348_029_801_042e-2;
2866        a[20][1] = 0.0;
2867        a[20][2] = 0.0;
2868        a[20][3] = 0.0;
2869        a[20][4] = 0.0;
2870        a[20][5] = 0.0;
2871        a[20][6] = 0.0;
2872        a[20][7] = -0.521_424_310_246_581_9;
2873        a[20][8] = 0.186_669_884_420_460_4;
2874        a[20][9] = 0.129_931_635_445_127_3;
2875        a[20][10] = 0.226_214_108_576_571_93;
2876        a[20][11] = 0.610_458_263_946_671;
2877        a[20][12] = 1.418_715_607_022_412_5e-2;
2878        a[20][13] = 1.480_061_054_412_245_8e-2;
2879        a[20][14] = -3.711_471_609_871_774_7e-3;
2880        a[20][15] = 0.0;
2881        a[20][16] = 1.393_256_979_572_559e-3;
2882        a[20][17] = 1.114_731_020_624_073_3;
2883        a[20][18] = -1.021_208_555_757_145_8;
2884        a[20][19] = -0.279_565_079_291_234_1;
2885
2886        c[21] = 0.97e-2;
2887
2888        a[21][0] = 8.711_816_186_418_633e-3;
2889        a[21][1] = 0.0;
2890        a[21][2] = 0.0;
2891        a[21][3] = 0.0;
2892        a[21][4] = 0.0;
2893        a[21][5] = 0.0;
2894        a[21][6] = 0.0;
2895        a[21][7] = 1.532_993_247_326_560_3e-2;
2896        a[21][8] = -1.943_250_606_288_015_1e-3;
2897        a[21][9] = 1.072_095_950_570_478_4e-3;
2898        a[21][10] = 2.601_233_036_074_381e-4;
2899        a[21][11] = -1.817_718_521_410_219_3e-2;
2900        a[21][12] = -9.877_668_338_996_713e-4;
2901        a[21][13] = -3.332_383_192_417_756_6e-3;
2902        a[21][14] = -8.605_833_352_714_281e-4;
2903        a[21][15] = 0.0;
2904        a[21][16] = 1.392_810_143_886_650_6e-3;
2905        a[21][17] = -0.161_741_998_789_763;
2906        a[21][18] = 0.148_515_656_130_604_4;
2907        a[21][19] = 2.289_051_095_253_062e-2;
2908        a[21][20] = -1.429_777_169_141_779_3e-3;
2909
2910        c[22] = 0.138;
2911
2912        a[22][0] = 2.710_092_628_714_179_4e-2;
2913        a[22][1] = 0.0;
2914        a[22][2] = 0.0;
2915        a[22][3] = 0.0;
2916        a[22][4] = 0.0;
2917        a[22][5] = 0.0;
2918        a[22][6] = 0.0;
2919        a[22][7] = 0.692_310_498_600_388_5;
2920        a[22][8] = -6.725_243_132_164_495e-2;
2921        a[22][9] = 8.808_440_659_269_46e-2;
2922        a[22][10] = 5.982_566_312_199_631e-2;
2923        a[22][11] = -0.825_129_031_481_552_4;
2924        a[22][12] = -4.886_453_387_508_305_6e-2;
2925        a[22][13] = -0.168_260_837_156_651_2;
2926        a[22][14] = -4.443_170_503_743_608_4e-2;
2927        a[22][15] = 0.0;
2928        a[22][16] = 7.037_844_639_432_78e-2;
2929        a[22][17] = -8.818_686_397_504_859;
2930        a[22][18] = 8.028_821_919_603_92;
2931        a[22][19] = 1.306_591_406_499_158;
2932        a[22][20] = -0.162_488_330_722_401_46;
2933        a[22][21] = 0.0;
2934
2935        c[23] = 0.249;
2936
2937        a[23][0] = 1.466_442_426_857_961_2e-2;
2938        a[23][1] = 0.0;
2939        a[23][2] = 0.0;
2940        a[23][3] = 0.0;
2941        a[23][4] = 0.0;
2942        a[23][5] = 0.0;
2943        a[23][6] = 0.0;
2944        a[23][7] = 0.189_839_956_139_912_45;
2945        a[23][8] = 3.711_530_651_907_537_4e-2;
2946        a[23][9] = 0.131_624_798_119_951_04;
2947        a[23][10] = 0.146_662_292_882_268_56;
2948        a[23][11] = -0.237_733_116_246_783_84;
2949        a[23][12] = -2.493_071_232_192_949_8e-2;
2950        a[23][13] = -9.427_777_049_221_307e-2;
2951        a[23][14] = -2.726_667_627_690_941_2e-2;
2952        a[23][15] = 0.0;
2953        a[23][16] = 4.097_659_404_063_362e-2;
2954        a[23][17] = -5.538_725_321_977_495;
2955        a[23][18] = 4.973_442_175_247_713;
2956        a[23][19] = 0.862_629_444_918_985_9;
2957        a[23][20] = -0.225_021_394_821_789_32;
2958        a[23][21] = 0.0;
2959        a[23][22] = 0.0;
2960
2961        c[24] = 0.439;
2962
2963        a[24][0] = 1.191_252_689_920_92e-2;
2964        a[24][1] = 0.0;
2965        a[24][2] = 0.0;
2966        a[24][3] = 0.0;
2967        a[24][4] = 0.0;
2968        a[24][5] = 0.0;
2969        a[24][6] = 0.0;
2970        a[24][7] = -0.672_313_785_813_087_6;
2971        a[24][8] = 0.180_128_426_682_568_9;
2972        a[24][9] = 0.136_568_944_744_934_72;
2973        a[24][10] = 0.211_103_839_379_890_66;
2974        a[24][11] = 0.777_585_472_624_472_9;
2975        a[24][12] = 2.362_117_948_505_939_8e-2;
2976        a[24][13] = 6.391_325_607_581_23e-2;
2977        a[24][14] = 1.197_654_289_246_164_4e-2;
2978        a[24][15] = 0.0;
2979        a[24][16] = -2.188_622_145_087_031_8e-2;
2980        a[24][17] = 3.500_218_060_218_659;
2981        a[24][18] = -3.195_765_244_251_373_5;
2982        a[24][19] = -0.599_440_104_860_014_9;
2983        a[24][20] = 1.137_710_737_227_729_3e-2;
2984        a[24][21] = 0.0;
2985        a[24][22] = 0.0;
2986        a[24][23] = 0.0;
2987
2988        c[25] = 0.794;
2989
2990        a[25][0] = 1.184_012_014_074_604_2e-2;
2991        a[25][1] = 0.0;
2992        a[25][2] = 0.0;
2993        a[25][3] = 0.0;
2994        a[25][4] = 0.0;
2995        a[25][5] = 0.0;
2996        a[25][6] = 0.0;
2997        a[25][7] = -0.664_126_328_976_879_1;
2998        a[25][8] = 0.178_891_406_187_319_4;
2999        a[25][9] = 0.136_756_264_228_708_5;
3000        a[25][10] = 0.210_775_811_973_028_6;
3001        a[25][11] = 0.767_918_474_480_633_6;
3002        a[25][12] = 2.313_496_869_580_297_3e-2;
3003        a[25][13] = 6.230_605_705_999_707e-2;
3004        a[25][14] = 1.157_099_029_193_866_4e-2;
3005        a[25][15] = 0.0;
3006        a[25][16] = -2.129_441_601_042_184_4e-2;
3007        a[25][17] = 3.163_166_251_075_345_3;
3008        a[25][18] = -2.819_544_872_276_817;
3009        a[25][19] = -0.397_876_904_630_975_86;
3010        a[25][20] = 0.130_482_177_761_573_7;
3011        a[25][21] = 0.0;
3012        a[25][22] = 0.0;
3013        a[25][23] = 0.0;
3014        a[25][24] = 0.0;
3015
3016        bi9[0][0] = 1.0;
3017        bi9[0][1] = -60.671_564_990_962_76;
3018        bi9[0][2] = 669.417_333_989_096_5;
3019        bi9[0][3] = -3_377.878_946_225_199_3;
3020        bi9[0][4] = 9_286.468_967_391_047;
3021        bi9[0][5] = -14_780.477_136_811_021;
3022        bi9[0][6] = 13_604.993_863_282_247;
3023        bi9[0][7] = -6_724.705_443_356_114;
3024        bi9[0][8] = 1_381.867_933_411_056_6;
3025
3026        bi9[1][0] = 0.0;
3027        bi9[1][1] = 0.0;
3028        bi9[1][2] = 0.0;
3029        bi9[1][3] = 0.0;
3030        bi9[1][4] = 0.0;
3031        bi9[1][5] = 0.0;
3032        bi9[1][6] = 0.0;
3033        bi9[1][7] = 0.0;
3034        bi9[1][8] = 0.0;
3035
3036        bi9[2][0] = 0.0;
3037        bi9[2][1] = 0.0;
3038        bi9[2][2] = 0.0;
3039        bi9[2][3] = 0.0;
3040        bi9[2][4] = 0.0;
3041        bi9[2][5] = 0.0;
3042        bi9[2][6] = 0.0;
3043        bi9[2][7] = 0.0;
3044        bi9[2][8] = 0.0;
3045
3046        bi9[3][0] = 0.0;
3047        bi9[3][1] = 0.0;
3048        bi9[3][2] = 0.0;
3049        bi9[3][3] = 0.0;
3050        bi9[3][4] = 0.0;
3051        bi9[3][5] = 0.0;
3052        bi9[3][6] = 0.0;
3053        bi9[3][7] = 0.0;
3054        bi9[3][8] = 0.0;
3055
3056        bi9[4][0] = 0.0;
3057        bi9[4][1] = 0.0;
3058        bi9[4][2] = 0.0;
3059        bi9[4][3] = 0.0;
3060        bi9[4][4] = 0.0;
3061        bi9[4][5] = 0.0;
3062        bi9[4][6] = 0.0;
3063        bi9[4][7] = 0.0;
3064        bi9[4][8] = 0.0;
3065
3066        bi9[5][0] = 0.0;
3067        bi9[5][1] = 0.0;
3068        bi9[5][2] = 0.0;
3069        bi9[5][3] = 0.0;
3070        bi9[5][4] = 0.0;
3071        bi9[5][5] = 0.0;
3072        bi9[5][6] = 0.0;
3073        bi9[5][7] = 0.0;
3074        bi9[5][8] = 0.0;
3075
3076        bi9[6][0] = 0.0;
3077        bi9[6][1] = 0.0;
3078        bi9[6][2] = 0.0;
3079        bi9[6][3] = 0.0;
3080        bi9[6][4] = 0.0;
3081        bi9[6][5] = 0.0;
3082        bi9[6][6] = 0.0;
3083        bi9[6][7] = 0.0;
3084        bi9[6][8] = 0.0;
3085
3086        bi9[7][0] = 0.0;
3087        bi9[7][1] = -0.597_216_760_566_844_7;
3088        bi9[7][2] = 47.936_048_364_131_67;
3089        bi9[7][3] = -565.717_041_700_233_3;
3090        bi9[7][4] = 2_799.622_707_202_858_7;
3091        bi9[7][5] = -7_032.161_794_919_679;
3092        bi9[7][6] = 9_404.154_583_498_766;
3093        bi9[7][7] = -6_374.661_804_344_304;
3094        bi9[7][8] = 1_720.369_337_666_28;
3095
3096        bi9[8][0] = 0.0;
3097        bi9[8][1] = 0.134_984_470_796_006_98;
3098        bi9[8][2] = -10.834_629_145_944_527;
3099        bi9[8][3] = 127.864_823_186_993_43;
3100        bi9[8][4] = -632.777_936_777_218_8;
3101        bi9[8][5] = 1_589.427_325_412_255_4;
3102        bi9[8][6] = -2_125.551_246_305_557;
3103        bi9[8][7] = 1_440.817_483_665_755;
3104        bi9[8][8] = -388.842_309_780_701_1;
3105
3106        bi9[9][0] = 0.0;
3107        bi9[9][1] = 7.290_747_606_753_266e-2;
3108        bi9[9][2] = -5.851_972_901_033_216;
3109        bi9[9][3] = 69.062_029_738_762_99;
3110        bi9[9][4] = -341.774_442_716_209_7;
3111        bi9[9][5] = 858.477_527_120_137_3;
3112        bi9[9][6] = -1_148.047_443_579_864_2;
3113        bi9[9][7] = 778.210_749_640_921_4;
3114        bi9[9][8] = -210.020_539_601_353_93;
3115
3116        bi9[10][0] = 0.0;
3117        bi9[10][1] = 0.128_853_484_734_578_56;
3118        bi9[10][2] = -10.342_520_980_591_798;
3119        bi9[10][3] = 122.057_211_066_254_17;
3120        bi9[10][4] = -604.037_203_213_700_4;
3121        bi9[10][5] = 1_517.235_637_581_122_8;
3122        bi9[10][6] = -2_029.008_844_152_904;
3123        bi9[10][7] = 1_375.375_645_376_321;
3124        bi9[10][8] = -371.181_116_850_131_56;
3125
3126        bi9[11][0] = 0.0;
3127        bi9[11][1] = 0.695_897_172_076_238_7;
3128        bi9[11][2] = -55.856_705_135_748_31;
3129        bi9[11][3] = 659.192_634_079_572_8;
3130        bi9[11][4] = -3_262.215_084_140_846_6;
3131        bi9[11][5] = 8_194.112_807_588_29;
3132        bi9[11][6] = -10_958.039_044_672_965;
3133        bi9[11][7] = 7_427.971_576_643_476;
3134        bi9[11][8] = -2_004.632_548_946_417_3;
3135
3136        bi9[12][0] = 0.0;
3137        bi9[12][1] = 2.617_668_058_132_623e-2;
3138        bi9[12][2] = -2.101_090_775_094_604_6;
3139        bi9[12][3] = 24.796_012_566_600_32;
3140        bi9[12][4] = -122.710_603_910_578_77;
3141        bi9[12][5] = 308.227_540_243_681_4;
3142        bi9[12][6] = -412.194_645_100_066_96;
3143        bi9[12][7] = 279.408_578_064_554_5;
3144        bi9[12][8] = -75.405_718_003_049_09;
3145
3146        bi9[13][0] = 0.0;
3147        bi9[13][1] = 7.845_665_161_262_075e-2;
3148        bi9[13][2] = -6.297_381_611_696_196;
3149        bi9[13][3] = 74.318_518_472_037_82;
3150        bi9[13][4] = -367.787_774_705_65;
3151        bi9[13][5] = 923.818_459_990_864;
3152        bi9[13][6] = -1_235.428_287_659_739;
3153        bi9[13][7] = 837.442_371_605_615_4;
3154        bi9[13][8] = -226.005_743_111_108_05;
3155
3156        bi9[14][0] = 0.0;
3157        bi9[14][1] = 1.743_239_982_411_997e-2;
3158        bi9[14][2] = -1.399_224_563_421_080_7;
3159        bi9[14][3] = 16.512_941_882_067_313;
3160        bi9[14][4] = -81.719_311_330_651_92;
3161        bi9[14][5] = 205.264_594_249_812_8;
3162        bi9[14][6] = -274.501_644_179_880_54;
3163        bi9[14][7] = 186.072_563_019_500_14;
3164        bi9[14][8] = -50.216_551_375_567_66;
3165
3166        bi9[15][0] = 0.0;
3167        bi9[15][1] = 0.0;
3168        bi9[15][2] = 0.0;
3169        bi9[15][3] = 0.0;
3170        bi9[15][4] = 0.0;
3171        bi9[15][5] = 0.0;
3172        bi9[15][6] = 0.0;
3173        bi9[15][7] = 0.0;
3174        bi9[15][8] = 0.0;
3175
3176        bi9[16][0] = 0.0;
3177        bi9[16][1] = -3.120_237_034_739_356_2e-2;
3178        bi9[16][2] = 2.505_323_513_858_665_6;
3179        bi9[16][3] = -29.632_099_441_822_69;
3180        bi9[16][4] = 147.173_574_899_191_83;
3181        bi9[16][5] = -371.668_262_629_709_6;
3182        bi9[16][6] = 500.803_253_762_596_74;
3183        bi9[16][7] = -342.949_046_514_438_8;
3184        bi9[16][8] = 93.798_458_780_671_25;
3185
3186        bi9[17][0] = 0.0;
3187        bi9[17][1] = 1.005_189_184_600_557_6;
3188        bi9[17][2] = -80.145_247_628_498_57;
3189        bi9[17][3] = 904.286_287_161_854;
3190        bi9[17][4] = -4_159.377_900_797_261;
3191        bi9[17][5] = 9_382.948_440_638_738;
3192        bi9[17][6] = -10_865.074_362_321_895;
3193        bi9[17][7] = 6_171.218_731_586_135;
3194        bi9[17][8] = -1_354.861_137_823_673_3;
3195
3196        bi9[18][0] = 0.0;
3197        bi9[18][1] = -1.018_790_304_892_149;
3198        bi9[18][2] = 81.229_685_434_330_86;
3199        bi9[18][3] = -916.522_099_840_849_8;
3200        bi9[18][4] = 4_215.658_051_870_923;
3201        bi9[18][5] = -9_509.908_233_268_861;
3202        bi9[18][6] = 11_012.088_661_364_269;
3203        bi9[18][7] = -6_254.720_911_673_139;
3204        bi9[18][8] = 1_373.193_636_418_218_8;
3205
3206        bi9[19][0] = 0.0;
3207        bi9[19][1] = 1.486_756_383_162_592e-2;
3208        bi9[19][2] = -1.185_413_256_701_197_5;
3209        bi9[19][3] = 13.375_128_087_739_489;
3210        bi9[19][4] = -61.520_574_820_481_606;
3211        bi9[19][5] = 138.781_422_449_831_18;
3212        bi9[19][6] = -160.703_267_695_199_86;
3213        bi9[19][7] = 91.277_333_477_520_88;
3214        bi9[19][8] = -20.039_495_806_540_547;
3215
3216        bi9[20][0] = 0.0;
3217        bi9[20][1] = -2.611_963_106_691_749e-3;
3218        bi9[20][2] = 0.208_255_752_438_779_78;
3219        bi9[20][3] = -2.349_769_034_664_475_5;
3220        bi9[20][4] = 10.808_056_622_683_038;
3221        bi9[20][5] = -24.381_395_596_370_474;
3222        bi9[20][6] = 28.232_668_855_390_138;
3223        bi9[20][7] = -16.035_783_011_964_465;
3224        bi9[20][8] = 3.520_578_375_594_15;
3225
3226        bi9[21][0] = 0.0;
3227        bi9[21][1] = 61.751_365_685_088_68;
3228        bi9[21][2] = -750.126_891_055_288_4;
3229        bi9[21][3] = 3_898.685_586_244_842;
3230        bi9[21][4] = -10_841.822_728_647_458;
3231        bi9[21][5] = 17_321.575_664_625_165;
3232        bi9[21][6] = -15_937.704_924_918_136;
3233        bi9[21][7] = 7_853.047_625_862_507;
3234        bi9[21][8] = -1_605.405_697_796_720_2;
3235
3236        bi9[22][0] = 0.0;
3237        bi9[22][1] = -1.934_298_042_224_096_7;
3238        bi9[22][2] = 147.588_643_166_560_36;
3239        bi9[22][3] = -1_181.453_462_187_682;
3240        bi9[22][4] = 4_124.816_268_317_402;
3241        bi9[22][5] = -7_708.555_106_592_447;
3242        bi9[22][6] = 8_052.349_419_898_65;
3243        bi9[22][7] = -4_443.023_055_054_952;
3244        bi9[22][8] = 1_010.211_590_494_692_5;
3245
3246        bi9[23][0] = 0.0;
3247        bi9[23][1] = 0.912_642_830_786_966_6;
3248        bi9[23][2] = -71.317_106_090_194_78;
3249        bi9[23][3] = 695.456_144_607_544_6;
3250        bi9[23][4] = -2_620.882_193_436_484;
3251        bi9[23][5] = 4_957.008_141_154_351;
3252        bi9[23][6] = -5_038.298_085_544_127;
3253        bi9[23][7] = 2_633.333_935_059_078_6;
3254        bi9[23][8] = -556.213_478_580_953_7;
3255
3256        bi9[24][0] = 0.0;
3257        bi9[24][1] = -0.465_443_997_074_799_17;
3258        bi9[24][2] = 37.090_998_104_441_54;
3259        bi9[24][3] = -417.138_222_833_985_5;
3260        bi9[24][4] = 1_920.758_799_061_188_3;
3261        bi9[24][5] = -4_409.960_156_149_582;
3262        bi9[24][6] = 5_383.383_503_749_768;
3263        bi9[24][7] = -3_353.518_501_772_742;
3264        bi9[24][8] = 839.849_023_837_986_2;
3265
3266        bi9[25][0] = 0.0;
3267        bi9[25][1] = -0.117_645_170_825_521_85;
3268        bi9[25][2] = 9.481_894_819_354_299;
3269        bi9[25][3] = -114.915_675_829_831_94;
3270        bi9[25][4] = 591.319_329_131_246_7;
3271        bi9[25][5] = -1_559.765_475_086_581_5;
3272        bi9[25][6] = 2_198.545_841_718_649;
3273        bi9[25][7] = -1_564.562_048_273_728_4;
3274        bi9[25][8] = 440.013_778_691_717;
3275
3276        let c = c.map(|x| T::from_f64(x).unwrap());
3277        let a = a.map(|row| row.map(|x| T::from_f64(x).unwrap()));
3278        let b = b.map(|x| T::from_f64(x).unwrap());
3279        let bh = bh.map(|x| T::from_f64(x).unwrap());
3280        let bi9 = bi9.map(|row| row.map(|x| T::from_f64(x).unwrap()));
3281
3282        Self {
3283            c,
3284            a,
3285            b,
3286            bh: Some(bh),
3287            bi: Some(bi9),
3288            er: None,
3289        }
3290    }
3291}