use si_vectors::*;
fn main(){
println!("An apple is aproximately 1 {}",SiUnit::Kilogram);
println!("A minute is aproximately 60 {}s",SiUnit::Second);
let fast = Value{magnitude: 10_f64,si_units_num: Vec::from([SiUnit::Metre]),si_units_den: Vec::from([SiUnit::Second,SiUnit::Second])};
let slow = Value{magnitude: 2_f64,si_units_num: Vec::from([SiUnit::Metre]),si_units_den: Vec::from([SiUnit::Second,SiUnit::Second])};
println!("{}",fast.clone()+slow.clone());
println!("{}",fast.clone() * slow.clone());
let distance = Value{magnitude: 20_f64,si_units_num: Vec::from([SiUnit::Metre]),si_units_den: Vec::<SiUnit>::new()};
let time = Value{magnitude: 2_f64,si_units_num: Vec::from([SiUnit::Second]),si_units_den: Vec::<SiUnit>::new()};
let speed = distance/time;
println!("Speed is {}",speed);
let force = DerivedQuantities::Force.get_value().set_magnitude(15_f64);
let pressure = DerivedUnit::Pascals.get_value().set_magnitude(5_f64);
let area = force/pressure;
println!("{}",area);
assert!(area.same(&DerivedQuantities::Area.get_value()));
let g = SiConstant::GravitationalConstant.get_value();
let c = SiConstant::SpeedOfLight.get_value();
println!("Gravitational Constant is {}",g);
println!("Soeed of light is {}",c);
let earth_mass = DerivedQuantities::Mass.get_value().set_magnitude(5.972e24);
let earth_radius = DerivedQuantities::Distance.get_value().set_magnitude(6371e3);
let g = SiConstant::GravitationalConstant.get_value();
let acc = g*earth_mass/earth_radius.powi(2);
assert!(acc.same(&DerivedQuantities::Acceleration.get_value()));
println!("{}",acc);
let v = Vector{value: DerivedQuantities::Force.get_value(),theta: PI};
println!("{}",v);
let car1 = Vector{value: DerivedQuantities::Force.get_value(),theta: 0_f64};
let car2 = Vector{value: DerivedQuantities::Force.get_value(),theta: PI/2.0};
let collision = car1+car2;
println!("{}",collision);
let v1 = Vector{value: DerivedQuantities::Force.get_value(),theta: 0_f64};
let v2 = Vector{value: DerivedQuantities::Force.get_value(),theta: PI/2.0};
let product = v1*v2;
println!("{}",product);
}