use super::*;
#[test]
fn test_restore1() {
let problem = Dummy {};
let mut ida: Ida<_, linear::Dense<_>, nonlinear::Newton<_>, _> = Ida::new(
problem,
array![0., 0., 0.],
array![0., 0., 0.],
TolControlSS::new(1e-4, 1e-4),
);
let saved_t = 1.2123749601869230e-03;
{
ida.nlp.ida_tn = 1.9051606517223076e-03;
ida.ida_ns = 1;
ida.ida_kk = 2;
ida.ida_hh = 6.9278569153538464e-04;
#[rustfmt::skip]
ida.ida_phi.assign(&array![
[ 9.9995150785077214e-01, 3.2239271870584518e-05, 1.6252877357362511e-05, ],
[ -2.7707635503825098e-05, 9.7313256739903617e-06, 1.7976309829765466e-05, ],
[ 3.4935651154088256e-09, -1.0880124117276491e-05, 1.0876630551341415e-05, ],
[ 5.6694097544747856e-10, 2.1378758881496850e-08, -2.1945701078189652e-08, ],
[ -1.3875550771817554e-10, 1.3559268269012917e-06, -1.3557880688400603e-06, ],
[ -1.1465196356066767e-10, 2.0021935974335382e-07, -2.0010470777979317e-07, ]
]);
ida.ida_psi.assign(&array![
6.9278569153538464e-04,
1.0391785373030770e-03,
1.3855713830707693e-03,
7.7938390297730776e-04,
3.4639284576769232e-04,
0.0000000000000000e+00
]);
ida.ida_cvals.assign(&array![
1.0000000000000000e+00,
1.0000000000000000e+00,
1.0000000000000000e+00,
0.0000000000000000e+00,
0.0000000000000000e+00,
0.0000000000000000e+00
]);
ida.ida_beta.assign(&array![
1.0000000000000000e+00,
2.0000000000000000e+00,
3.0000000000000000e+00,
4.8000000000000007e+00,
1.5000000000000000e+01,
0.0000000000000000e+00
]);
}
ida.restore(saved_t);
#[rustfmt::skip]
let phi_after = array![
[ 9.9995150785077214e-01, 3.2239271870584518e-05, 1.6252877357362511e-05, ],
[ -1.3853817751912549e-05, 4.8656628369951808e-06, 8.9881549148827332e-06, ],
[ 1.1645217051362752e-09, -3.6267080390921635e-06, 3.6255435171138049e-06, ],
[ 5.6694097544747856e-10, 2.1378758881496850e-08, -2.1945701078189652e-08, ],
[ -1.3875550771817554e-10, 1.3559268269012917e-06, -1.3557880688400603e-06, ],
[ -1.1465196356066767e-10, 2.0021935974335382e-07, -2.0010470777979317e-07, ]
];
let psi_after = array![
3.4639284576769237e-04,
6.9278569153538464e-04,
1.3855713830707693e-03,
7.7938390297730776e-04,
3.4639284576769232e-04,
0.0000000000000000e+00
];
let cvals_after = array![
5.0000000000000000e-01,
3.3333333333333331e-01,
1.0000000000000000e+00,
0.0000000000000000e+00,
0.0000000000000000e+00,
0.0000000000000000e+00
];
let beta_after = array![
1.0000000000000000e+00,
2.0000000000000000e+00,
3.0000000000000000e+00,
4.8000000000000007e+00,
1.5000000000000000e+01,
0.0000000000000000e+00
];
assert_nearly_eq!(ida.nlp.ida_tn, saved_t);
assert_eq!(ida.ida_ns, 1);
assert_eq!(ida.ida_kk, 2);
assert_nearly_eq!(ida.ida_cvals, cvals_after);
assert_nearly_eq!(ida.ida_beta, beta_after);
assert_nearly_eq!(ida.ida_psi, psi_after);
assert_nearly_eq!(ida.ida_phi, phi_after);
}