use_quantum_basic_usage/
basic_usage.rs1use use_quantum::{
2 MatterWave, Photon, QuantumNumbers, REDUCED_PLANCK_CONSTANT, RYDBERG_ENERGY_EV,
3 hydrogen_energy_level_ev, minimum_position_uncertainty,
4};
5
6fn approx_eq(left: f64, right: f64) -> bool {
7 let scale = left.abs().max(right.abs()).max(1.0);
8 (left - right).abs() <= 1.0e-12 * scale
9}
10
11fn main() -> Result<(), &'static str> {
12 let photon = Photon::from_wavelength(500.0e-9).ok_or("expected valid photon wavelength")?;
13 let matter_wave =
14 MatterWave::from_mass_velocity(2.0, 3.0).ok_or("expected valid matter wave")?;
15 let quantum_numbers =
16 QuantumNumbers::new(2, 1, 0, 1).ok_or("expected valid quantum numbers")?;
17
18 assert!(photon.energy_ev().ok_or("expected photon energy in eV")? > 0.0);
19 assert!(
20 matter_wave
21 .wavelength()
22 .ok_or("expected matter wavelength")?
23 > 0.0
24 );
25 assert!(approx_eq(quantum_numbers.spin_projection(), 0.5));
26 assert!(approx_eq(
27 hydrogen_energy_level_ev(1).ok_or("expected hydrogen energy level")?,
28 -RYDBERG_ENERGY_EV,
29 ));
30 assert!(approx_eq(
31 minimum_position_uncertainty(REDUCED_PLANCK_CONSTANT)
32 .ok_or("expected minimum uncertainty")?,
33 0.5,
34 ));
35
36 Ok(())
37}