1 use na::{DMatrix, DVector, FullPivLU};
2 
3 // Without unpack.
full_piv_lu_decompose_10x10(bh: &mut criterion::Criterion)4 fn full_piv_lu_decompose_10x10(bh: &mut criterion::Criterion) {
5     let m = DMatrix::<f64>::new_random(10, 10);
6     bh.bench_function("full_piv_lu_decompose_10x10", move |bh| bh.iter(|| test::black_box(FullPivLU::new(m.clone()))));
7 }
8 
full_piv_lu_decompose_100x100(bh: &mut criterion::Criterion)9 fn full_piv_lu_decompose_100x100(bh: &mut criterion::Criterion) {
10     let m = DMatrix::<f64>::new_random(100, 100);
11     bh.bench_function("full_piv_lu_decompose_100x100", move |bh| bh.iter(|| test::black_box(FullPivLU::new(m.clone()))));
12 }
13 
full_piv_lu_decompose_500x500(bh: &mut criterion::Criterion)14 fn full_piv_lu_decompose_500x500(bh: &mut criterion::Criterion) {
15     let m = DMatrix::<f64>::new_random(500, 500);
16     bh.bench_function("full_piv_lu_decompose_500x500", move |bh| bh.iter(|| test::black_box(FullPivLU::new(m.clone()))));
17 }
18 
full_piv_lu_solve_10x10(bh: &mut criterion::Criterion)19 fn full_piv_lu_solve_10x10(bh: &mut criterion::Criterion) {
20     let m = DMatrix::<f64>::new_random(10, 10);
21     let lu = FullPivLU::new(m.clone());
22 
23     bh.bench_function("full_piv_lu_solve_10x10", move |bh| bh.iter(|| {
24         let mut b = DVector::<f64>::from_element(10, 1.0);
25         lu.solve(&mut b);
26     }));
27 }
28 
full_piv_lu_solve_100x100(bh: &mut criterion::Criterion)29 fn full_piv_lu_solve_100x100(bh: &mut criterion::Criterion) {
30     let m = DMatrix::<f64>::new_random(100, 100);
31     let lu = FullPivLU::new(m.clone());
32 
33     bh.bench_function("full_piv_lu_solve_100x100", move |bh| bh.iter(|| {
34         let mut b = DVector::<f64>::from_element(100, 1.0);
35         lu.solve(&mut b);
36     }));
37 }
38 
full_piv_lu_solve_500x500(bh: &mut criterion::Criterion)39 fn full_piv_lu_solve_500x500(bh: &mut criterion::Criterion) {
40     let m = DMatrix::<f64>::new_random(500, 500);
41     let lu = FullPivLU::new(m.clone());
42 
43     bh.bench_function("full_piv_lu_solve_500x500", move |bh| bh.iter(|| {
44         let mut b = DVector::<f64>::from_element(500, 1.0);
45         lu.solve(&mut b);
46     }));
47 }
48 
full_piv_lu_inverse_10x10(bh: &mut criterion::Criterion)49 fn full_piv_lu_inverse_10x10(bh: &mut criterion::Criterion) {
50     let m = DMatrix::<f64>::new_random(10, 10);
51     let lu = FullPivLU::new(m.clone());
52 
53     bh.bench_function("full_piv_lu_inverse_10x10", move |bh| bh.iter(|| test::black_box(lu.try_inverse())));
54 }
55 
full_piv_lu_inverse_100x100(bh: &mut criterion::Criterion)56 fn full_piv_lu_inverse_100x100(bh: &mut criterion::Criterion) {
57     let m = DMatrix::<f64>::new_random(100, 100);
58     let lu = FullPivLU::new(m.clone());
59 
60     bh.bench_function("full_piv_lu_inverse_100x100", move |bh| bh.iter(|| test::black_box(lu.try_inverse())));
61 }
62 
full_piv_lu_inverse_500x500(bh: &mut criterion::Criterion)63 fn full_piv_lu_inverse_500x500(bh: &mut criterion::Criterion) {
64     let m = DMatrix::<f64>::new_random(500, 500);
65     let lu = FullPivLU::new(m.clone());
66 
67     bh.bench_function("full_piv_lu_inverse_500x500", move |bh| bh.iter(|| test::black_box(lu.try_inverse())));
68 }
69 
full_piv_lu_determinant_10x10(bh: &mut criterion::Criterion)70 fn full_piv_lu_determinant_10x10(bh: &mut criterion::Criterion) {
71     let m = DMatrix::<f64>::new_random(10, 10);
72     let lu = FullPivLU::new(m.clone());
73 
74     bh.bench_function("full_piv_lu_determinant_10x10", move |bh| bh.iter(|| test::black_box(lu.determinant())));
75 }
76 
77 
full_piv_lu_determinant_100x100(bh: &mut criterion::Criterion)78 fn full_piv_lu_determinant_100x100(bh: &mut criterion::Criterion) {
79     let m = DMatrix::<f64>::new_random(100, 100);
80     let lu = FullPivLU::new(m.clone());
81 
82     bh.bench_function("full_piv_lu_determinant_100x100", move |bh| bh.iter(|| test::black_box(lu.determinant())));
83 }
84 
full_piv_lu_determinant_500x500(bh: &mut criterion::Criterion)85 fn full_piv_lu_determinant_500x500(bh: &mut criterion::Criterion) {
86     let m = DMatrix::<f64>::new_random(500, 500);
87     let lu = FullPivLU::new(m.clone());
88 
89     bh.bench_function("full_piv_lu_determinant_500x500", move |bh| bh.iter(|| test::black_box(lu.determinant())));
90 }
91 
92 criterion_group!(full_piv_lu,
93     full_piv_lu_decompose_10x10,
94     full_piv_lu_decompose_100x100,
95 //    full_piv_lu_decompose_500x500,
96     full_piv_lu_solve_10x10,
97     full_piv_lu_solve_100x100,
98 //    full_piv_lu_solve_500x500,
99     full_piv_lu_inverse_10x10,
100     full_piv_lu_inverse_100x100,
101 //    full_piv_lu_inverse_500x500,
102     full_piv_lu_determinant_10x10,
103     full_piv_lu_determinant_100x100,
104 //    full_piv_lu_determinant_500x500
105 );