1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
use ndarray::prelude::*;
use ndarray_inverse::Inverse;
//use ndarray_linalg::solve::Inverse;
use std::time::Instant;
fn main() {
/*
let a: Array2<f64> = array![
[1.0, 1.0, 3.0, 4.0, 9.0, 3.0],
[10.0, 10.0, 1.0, 2.0, 2.0, 5.0],
[2.0, 9.0, 6.0, 10.0, 10.0, 9.0],
[10.0, 9.0, 9.0, 7.0, 3.0, 6.0],
[7.0, 6.0, 6.0, 2.0, 9.0, 5.0],
[3.0, 8.0, 1.0, 4.0, 1.0, 5.0]
];
*/
let a:Array2<f64> = array![
[4.3552 , 6.25851, 4.12662, 1.93708, 0.21272, 3.25683, 6.53326],
[4.24746, 1.84137, 6.71904, 0.59754, 3.5806 , 3.63597, 5.347 ],
[2.30479, 1.70591, 3.05354, 1.82188, 5.27839, 7.9166 , 2.04607],
[2.40158, 6.38524, 7.90296, 4.69683, 6.63801, 7.32958, 1.45936],
[0.42456, 6.47456, 1.55398, 8.28979, 4.20987, 0.90401, 4.94587],
[5.78903, 1.92032, 6.20261, 5.78543, 1.94331, 8.25178, 7.47273],
[1.44797, 7.41157, 7.69495, 8.90113, 3.05983, 0.41582, 6.42932]];
/*
let a: Array2<f64> = array![
[-68.0, 68.0, -16.0, 4.0],
[-36.0, 35.0, -9.0, 3.0],
[48.0, -47.0, 11.0, -3.0],
[64.0, -64.0, 16.0, -4.0]
];
let a: Array2<f64> = array![[1.0, 0.0, 3.0], [2.0, 1.0, 6.0], [1.0, 0.0, 9.0]];
let a: Array2<f64> = array![[11., 9., 24., 2.],
[ 1., 5., 2., 6.],
[ 3., 17., 18., 1.],
[ 2., 5., 7., 1.]];
*/
let start = Instant::now();
let mut _q = a.inv();
println!("{:?}", _q);
for _ in 0..1000000 {
_q = a.inv();
}
println!("Time taken: {:?}", start.elapsed());
}