1+ #![ allow( clippy:: cast_possible_truncation, clippy:: cast_sign_loss) ]
2+
13use pecos_engines:: Engine ;
24use pecos_engines:: byte_message:: ByteMessage ;
35use pecos_engines:: engines:: noise:: BiasedMeasurementNoise ;
@@ -16,12 +18,12 @@ fn main() {
1618 // Create a quantum engine with 1 qubit
1719 let quantum = Box :: new ( StateVecEngine :: new ( 1 ) ) ;
1820
19- example1_different_bias_levels ( & circ, quantum. clone ( ) ) ;
21+ example1_different_bias_levels ( & circ, & quantum) ;
2022 example2_with_seed ( & circ) ;
2123 example3_bell_state ( ) ;
2224}
2325
24- fn example1_different_bias_levels ( circ : & ByteMessage , quantum : Box < StateVecEngine > ) {
26+ fn example1_different_bias_levels ( circ : & ByteMessage , quantum : & StateVecEngine ) {
2527 // === EXAMPLE 1: Different bias levels ===
2628 println ! ( "Example 1: Testing different bias levels with 10,000 shots" ) ;
2729 println ! ( "{:-^80}" , "" ) ;
@@ -49,7 +51,7 @@ fn example1_different_bias_levels(circ: &ByteMessage, quantum: Box<StateVecEngin
4951 for ( p_flip_0, p_flip_1, desc) in configs {
5052 // Create the biased measurement noise model
5153 let noise = Box :: new ( BiasedMeasurementNoise :: new ( p_flip_0, p_flip_1) ) ;
52- let mut system = QuantumSystem :: new ( noise, quantum. clone ( ) ) ;
54+ let mut system = QuantumSystem :: new ( noise, Box :: new ( quantum. clone ( ) ) ) ;
5355
5456 // For deterministic testing, set a fixed seed
5557 system. set_seed ( 42 ) . expect ( "Failed to set seed" ) ;
@@ -81,8 +83,10 @@ fn example1_different_bias_levels(circ: &ByteMessage, quantum: Box<StateVecEngin
8183 // For a 50/50 input with H gate:
8284 // Expected 0s = 50% * (1-p_flip_0) + 50% * p_flip_1
8385 // Expected 1s = 50% * p_flip_0 + 50% * (1-p_flip_1)
84- let expected_0 = ( ( 50.0 * ( 1.0 - p_flip_0) + 50.0 * p_flip_1) as f64 ) . round ( ) as usize ;
85- let expected_1 = ( ( 50.0 * p_flip_0 + 50.0 * ( 1.0 - p_flip_1) ) as f64 ) . round ( ) as usize ;
86+ let calc_0: f64 = 50.0 * ( 1.0 - p_flip_0) + 50.0 * p_flip_1;
87+ let expected_0 = calc_0. round ( ) as usize ;
88+ let calc_1: f64 = 50.0 * p_flip_0 + 50.0 * ( 1.0 - p_flip_1) ;
89+ let expected_1 = calc_1. round ( ) as usize ;
8690
8791 println ! (
8892 "{:<30} | {:<10} | {:<10} | {:<10} | {:<10}" ,
@@ -131,8 +135,10 @@ fn example2_with_seed(circ: &ByteMessage) {
131135 // Calculate expected results for this configuration
132136 let p_flip_0 = 0.4 ;
133137 let p_flip_1 = 0.1 ;
134- let expected_0 = ( ( 50.0 * ( 1.0 - p_flip_0) + 50.0 * p_flip_1) as f64 ) . round ( ) as usize ;
135- let expected_1 = ( ( 50.0 * p_flip_0 + 50.0 * ( 1.0 - p_flip_1) ) as f64 ) . round ( ) as usize ;
138+ let calc_0: f64 = 50.0 * ( 1.0 - p_flip_0) + 50.0 * p_flip_1;
139+ let expected_0 = calc_0. round ( ) as usize ;
140+ let calc_1: f64 = 50.0 * p_flip_0 + 50.0 * ( 1.0 - p_flip_1) ;
141+ let expected_1 = calc_1. round ( ) as usize ;
136142
137143 println ! ( "Builder pattern with p_flip_0 = 0.4, p_flip_1 = 0.1" ) ;
138144 println ! ( " Expected results: 0: {expected_0}%, 1: {expected_1}%" ) ;
0 commit comments