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
use dace::*;
fn main() {
DA::init(10, 3);
let cyl = darray![100.0 + da!(1), da!(2) * PI / 180.0, da!(3)];
let cart = darray![
&cyl[0] * cyl[1].cos(),
&cyl[0] * cyl[1].sin(),
cyl[2].clone(),
];
let dir_map = &cart - cart.cons();
println!("Direct map: from cylindric to cartesian (DirMap)\n{dir_map}\n\n");
let inv_map = dir_map.invert().unwrap();
println!("Inverse map: from cartesian to cylindric (InvMap)\n{inv_map}\n\n");
println!(
"Concatenate the direct and inverse map: (DirMap) o (InvMap) = DirMap(InvMap) = I\n\n"
);
println!("{}", dir_map.eval(&inv_map));
}