public void theta_60_phi_359_with_settings_Tests() { quantumBit = new Qubit(60, 359); PrintBlochSettings settings = new PrintBlochSettings(true, true, 3, DecimalSeparator.comma, ImaginaryUnit.i); Assert.AreEqual("|Ψ> = 0,866 |0> + 0,500 - 0,009i |1>", quantumBit.print_bloch_vector(settings)); }
public void theta90_Tests() { quantumBit = new Qubit(0, 0); quantumBit.thetaAngle = 90; quantumBit.phiAngle = 0; Assert.AreEqual("|Ψ> = 0,707 |0> + 0,707 |1>", quantumBit.print_bloch_vector()); quantumBit.phiAngle = 45; Assert.AreEqual("|Ψ> = 0,707 |0> + 0,5 + 0,5i |1>", quantumBit.print_bloch_vector()); PrintBlochSettings settings = new PrintBlochSettings(true, true, 3, DecimalSeparator.comma, ImaginaryUnit.i); Assert.AreEqual("|Ψ> = 0,707 |0> + 0,500 + 0,500i |1>", quantumBit.print_bloch_vector(settings)); quantumBit.phiAngle = 90; Assert.AreEqual("|Ψ> = 0,707 |0> + 0,707i |1>", quantumBit.print_bloch_vector()); quantumBit.phiAngle = 180; Assert.AreEqual("|Ψ> = 0,707 |0> - 0,707 |1>", quantumBit.print_bloch_vector()); quantumBit.phiAngle = 270; Assert.AreEqual("|Ψ> = 0,707 |0> - 0,707i |1>", quantumBit.print_bloch_vector()); quantumBit.phiAngle = 359; Assert.AreEqual("|Ψ> = 0,707 |0> + 0,707 - 0,012i |1>", quantumBit.print_bloch_vector()); }
private string print_only_imaginary_number(double imaginary_number, PrintBlochSettings printing_rules) { string result = string.Empty; result += print_imaginary_number(imaginary_number, printing_rules); return(result); }
private string print_only_real_number(double real_number, PrintBlochSettings printing_rules) { string result = string.Empty; result += print_number(real_number, printing_rules); return(result); }
public void customSettings_theta30_phi_45_Test_4() { quantumBit = new Qubit(30, 45); PrintBlochSettings settings = new PrintBlochSettings(true, true, 15, PrintBlochSettings.DecimalSeparator.dot, PrintBlochSettings.ImaginaryUnit.J); Assert.AreEqual("|Ψ> = 0.965925826289068 |0> + 0.183012701892219 + 0.183012701892219J |1>", quantumBit.print_bloch_vector(settings)); }
public static PrintBlochSettings printing_blochspere() { PrintBlochSettings printing_blochspere_settings; printing_blochspere_settings = new PrintBlochSettings(true, false, 3, PrintBlochSettings.DecimalSeparator.comma, PrintBlochSettings.ImaginaryUnit.i); return(printing_blochspere_settings); }
public void theta_43_with_trailing_zeros_Test() { quantumBit = new Qubit(0, 0); quantumBit.thetaAngle = 43; PrintBlochSettings customSettings = new PrintBlochSettings(true, true, 3, PrintBlochSettings.DecimalSeparator.dot, PrintBlochSettings.ImaginaryUnit.i); Assert.AreEqual("0.930", quantumBit.print_zero_value(customSettings)); }
public void theta_90_phi_45_Tests() { quantumBit = new Qubit(90, 45); Assert.AreEqual("|Ψ> = 0,707 |0> + 0,5 + 0,5i |1>", quantumBit.print_bloch_vector()); PrintBlochSettings settings = new PrintBlochSettings(true, true, 3, DecimalSeparator.comma, ImaginaryUnit.i); Assert.AreEqual("|Ψ> = 0,707 |0> + 0,500 + 0,500i |1>", quantumBit.print_bloch_vector(settings)); }
public void theta_167_Test() { quantumBit = new Qubit(0, 0); quantumBit.thetaAngle = 167; PrintBlochSettings customSettings = new PrintBlochSettings(true, false, 3, PrintBlochSettings.DecimalSeparator.comma, PrintBlochSettings.ImaginaryUnit.i); Assert.AreEqual("0,113", quantumBit.print_zero_value(customSettings)); }
public void theta_0_with_trailing_zeros_Test() { // no trailing zeroes when value is 0 or 1 quantumBit = new Qubit(0, 0); quantumBit.thetaAngle = 0; PrintBlochSettings customSettings = new PrintBlochSettings(true, true, 3, PrintBlochSettings.DecimalSeparator.comma, PrintBlochSettings.ImaginaryUnit.i); Assert.AreEqual("1", quantumBit.print_zero_value()); }
public void theta_change_90_to_120_Test() { quantumBit = new Qubit(90, 30); Assert.AreEqual("0,612 + 0,354i", quantumBit.print_one_value()); quantumBit.thetaAngle = 120; PrintBlochSettings settings = new PrintBlochSettings(false, true, 3, DecimalSeparator.dot, ImaginaryUnit.j); Assert.AreEqual("0.750+0.433j", quantumBit.print_one_value(settings)); }
public void theta_change_120_to_170_Test() { quantumBit = new Qubit(120, 140); Assert.AreEqual("- 0,663 + 0,557i", quantumBit.print_one_value()); quantumBit.thetaAngle = 170; PrintBlochSettings settings = new PrintBlochSettings(true, true, 3, DecimalSeparator.comma, ImaginaryUnit.i); Assert.AreEqual("- 0,763 + 0,640i", quantumBit.print_one_value(settings)); }
public void custom_settings_theta_90_phi_180_Test() { quantumBit = new Qubit(0, 0); quantumBit.thetaAngle = 90; quantumBit.phiAngle = 180; PrintBlochSettings settings = new PrintBlochSettings(false, false, 3, PrintBlochSettings.DecimalSeparator.comma, PrintBlochSettings.ImaginaryUnit.J); Assert.AreEqual("-0,707", quantumBit.print_one_value(settings)); }
public void customSettings_theta30_phi_45_Test_2() { quantumBit = new Qubit(30, 45); PrintBlochSettings settings = new PrintBlochSettings(true, true, 4, PrintBlochSettings.DecimalSeparator.dot, PrintBlochSettings.ImaginaryUnit.I); Assert.AreEqual("|Ψ> = 0.9659 |0> + 0.1830 + 0.1830I |1>", quantumBit.print_bloch_vector(settings)); settings = new PrintBlochSettings(true, false, 4, PrintBlochSettings.DecimalSeparator.dot, PrintBlochSettings.ImaginaryUnit.I); Assert.AreEqual("|Ψ> = 0.9659 |0> + 0.183 + 0.183I |1>", quantumBit.print_bloch_vector(settings)); }
public void custom_settings_theta_45_phi_45_with_cutsom_settings_2_Test() { quantumBit = new Qubit(0, 0); quantumBit.thetaAngle = 45; quantumBit.phiAngle = 45; PrintBlochSettings settings = new PrintBlochSettings(false, false, 3, PrintBlochSettings.DecimalSeparator.comma, PrintBlochSettings.ImaginaryUnit.j); Assert.AreEqual("0,271+0,271j", quantumBit.print_one_value(settings)); }
public void custom_settings_theta_45_phi_45_with_cutsom_settings_3_Test() { quantumBit = new Qubit(0, 0); quantumBit.thetaAngle = 45; quantumBit.phiAngle = 45; PrintBlochSettings settings = new PrintBlochSettings(false, false, 0, PrintBlochSettings.DecimalSeparator.comma, PrintBlochSettings.ImaginaryUnit.j); Assert.AreEqual("P(|0>)=85%", quantumBit.print_zero_probability(settings)); Assert.AreEqual("P(|1>)=15%", quantumBit.print_one_probability(settings)); }
public void custom_settings_theta_90_phi_180_Test() { quantumBit = new Qubit(0, 0); quantumBit.thetaAngle = 90; quantumBit.phiAngle = 180; PrintBlochSettings settings = new PrintBlochSettings(false, false, 0, PrintBlochSettings.DecimalSeparator.comma, PrintBlochSettings.ImaginaryUnit.J); Assert.AreEqual("P(|0>)=50%", quantumBit.print_zero_probability(settings)); Assert.AreEqual("P(|1>)=50%", quantumBit.print_one_probability(settings)); }
public void customSettings_theta30_phi_45_Test_3() { quantumBit = new Qubit(0, 0); quantumBit.thetaAngle = 30; quantumBit.phiAngle = 45; PrintBlochSettings settings = new PrintBlochSettings(false, true, 8, PrintBlochSettings.DecimalSeparator.comma, PrintBlochSettings.ImaginaryUnit.j); Assert.AreEqual("|Ψ>=0,96592583|0>+0,18301270+0,18301270j|1>", quantumBit.print_bloch_vector(settings)); settings = new PrintBlochSettings(false, false, 8, PrintBlochSettings.DecimalSeparator.comma, PrintBlochSettings.ImaginaryUnit.j); Assert.AreEqual("|Ψ>=0,96592583|0>+0,1830127+0,1830127j|1>", quantumBit.print_bloch_vector(settings)); }
private string set_number_rounding(PrintBlochSettings settings) { if (settings.endingZeros == true) { return(Constants.character.rounding_header + settings.decimalSpaces.ToString()); } else { return(String.Empty); } }
private string print_decimal_character(double number, PrintBlochSettings printingSettings = null) { string result = Constants.character.space; if (number >= 0) { result += Constants.math.plus_with_space; } return(result); }
private PrintBlochSettings set_printing_rules(ref PrintBlochSettings custom_settings) { if (not_added(custom_settings)) { return(default_settings.printing_blochspere()); } else { return(custom_settings); } }
private string print_one_for_bloch_vector(Complex[] quantumValue, PrintBlochSettings conditions) { string result = string.Empty; result += this.quantum_value(quantumValue[1], conditions); if (plus_is_needed_for_(result)) { add_plus(ref result); } result += Constants.symbol.quantum_one; return(result); }
private string print_number(double number, PrintBlochSettings printingSettings = null) { string result = string.Empty; PrintBlochSettings printing_rules = set_printing_rules(ref printingSettings); string decimalSpaces = this.set_number_rounding(printing_rules); double rounded_number = Math.Round(number, printing_rules.decimalSpaces); if (rounded_number < 0) { add_minus_to_(ref result); } result += Math.Abs(rounded_number).ToString(decimalSpaces); return(result); }
public string bloch_vector(Complex[] quantumValue, PrintBlochSettings printingSettings = null) { string result = string.Empty; PrintBlochSettings conditions; if (not_added(printingSettings)) { conditions = default_settings.printing_blochspere(); } else { conditions = printingSettings; } result += Constants.symbol.bloch_sphere + this.quantum_value(quantumValue[0], conditions) + Constants.symbol.quantum_zero + this.print_one_for_bloch_vector(quantumValue, conditions); if (conditions.printSpaces == false) { result = result.Replace(Constants.character.space, string.Empty); } return(result); }
public string percent_value(bool is_zero, double value, PrintBlochSettings printingSettings = null) { string result = String.Empty; PrintBlochSettings printing_rules = set_printing_rules(ref printingSettings); if (is_zero) { result += Constants.quantum_probability.zero_label; } else { result += Constants.quantum_probability.one_label; } value *= 100; value = Math.Round(value, printing_rules.decimalSpaces); result += value.ToString(); result += Constants.character.percent; result = remove_spaces_if_needed(result, printing_rules.printSpaces); result = set_decimal_separator(result, printing_rules.decimalSeparator); return(result); }
public string quantum_value(Complex number, PrintBlochSettings printingSettings = null) { string result = String.Empty; PrintBlochSettings printing_rules = set_printing_rules(ref printingSettings); double real_number = Math.Round(number.Real, printing_rules.decimalSpaces); double imaginary_number = Math.Round(number.Imaginary, printing_rules.decimalSpaces); if (number_not_zero(real_number)) { if (number_not_zero(imaginary_number)) { result += print_real_and_imaginary_numers(real_number, imaginary_number, printing_rules); } else { result += print_only_real_number(real_number, printing_rules); } } else { if (imaginary_number == 0) { result += print_only_real_number(real_number, printing_rules); } else { result += print_only_imaginary_number(imaginary_number, printing_rules); } } result = remove_spaces_if_needed(result, printing_rules.printSpaces); result = set_decimal_separator(result, printing_rules.decimalSeparator); return(result); }
public string print_one_probability(PrintBlochSettings printingSettings = null) { return(print.percent_value(false, probability[1], printingSettings)); }
public string print_zero_probability(PrintBlochSettings printingSettings = null) { return(print.percent_value(true, probability[0], printingSettings)); }
public string printDensityMatrix(int row, int column, PrintBlochSettings printingSettings = null) { return(print.quantum_value(density_matrix[row, column], printingSettings)); }
public string print_one_value(PrintBlochSettings printingSettings = null) { return(print.quantum_value(quantumValue[1], printingSettings)); }