Java源码示例:com.gluonhq.strange.gate.X

示例1
public static void main(String[] args) {

        QuantumExecutionEnvironment simulator = new SimpleQuantumExecutionEnvironment();
        Program program = new Program(1);
        Step step0 = new Step();
        step0.addGate(new X(0));

        Step step1 = new Step();
        step1.addGate(new X(0));
        program.addStep(step0);
        program.addStep(step1);
        program.initializeQubit(0,.5);

        Result result = simulator.runProgram(program);
        Qubit[] qubits = result.getQubits();
        Renderer.showProbabilities(program,1000);
        Renderer.renderProgram(program);
    }
 
示例2
static void try11() {
    QuantumExecutionEnvironment simulator = new SimpleQuantumExecutionEnvironment();
    Program program = new Program(2);

    Step prepareStep = new Step();
    prepareStep.addGate(new X(0));
    prepareStep.addGate(new X(1));
    program.addStep(prepareStep);

    Step oracleStep = new Step();
    Oracle oracle = createOracle();
    oracleStep.addGate(oracle);
    program.addStep(oracleStep);

    Result result = simulator.runProgram(program);
    Qubit[] qubits = result.getQubits();

    System.err.println(", measured = "
            + qubits[0].measure() + ", " + qubits[1].measure());

}
 
示例3
@Test
public void fourierAdditionProgram0101() {
    Step prep = new Step(new X(0), new X(2));
    Program p = new Program(4,
            prep,
            new Step(new Fourier(2, 0)),
            new Step (new Cr(0,3, 2, 1)),
            new Step (new Cr(0,2, 2, 2)),
            new Step (new Cr(1,2, 2, 1)),
            new Step(new InvFourier(2,0)));
    Result res = runProgram(p);
    Complex[] probability = res.getProbability();
    Complex.printArray(probability);
    Qubit[] qubits = res.getQubits();
    assertEquals(0, qubits[0].measure());
    assertEquals(1, qubits[1].measure());
    assertEquals(1, qubits[2].measure());
    assertEquals(0, qubits[3].measure());
}
 
示例4
@Test
public void fourierAdditionProgram1010() {
    Step prep = new Step(new X(1), new X(3));
    Program p = new Program(4,
            prep,
            new Step(new Fourier(2, 0)),
            new Step (new Cr(0,3, 2, 1)),
            new Step (new Cr(0,2, 2, 2)),
            new Step (new Cr(1,2, 2, 1)),
            new Step(new InvFourier(2,0)));
    Result res = runProgram(p);
    Complex[] probability = res.getProbability();
    Complex.printArray(probability);
    Qubit[] qubits = res.getQubits();
    assertEquals(0, qubits[0].measure());
    assertEquals(0, qubits[1].measure());
    assertEquals(0, qubits[2].measure());
    assertEquals(1, qubits[3].measure());
}
 
示例5
@Test
public void fourierAdditionProgram0011() {
    Step prep = new Step(new X(2), new X(3));
    Program p = new Program(4,
            prep,
            new Step(new Fourier(2, 0)),
            new Step (new Cr(1,2, 2, 1)),
            new Step (new Cr(0,2, 2, 2)),
            new Step (new Cr(0,3, 2, 1)),
            new Step(new InvFourier(2,0)));
    Result res = runProgram(p);
    Complex[] probability = res.getProbability();
    Complex.printArray(probability);
    Qubit[] qubits = res.getQubits();
    assertEquals(1, qubits[0].measure());
    assertEquals(1, qubits[1].measure());
    assertEquals(1, qubits[2].measure());
    assertEquals(1, qubits[3].measure());
}
 
示例6
private void simulate() {
    Program p = new Program(2);
    Step s1 = new Step();
    s1.addGate(new X(0));
    p.addStep(s1);
    Step s2 = new Step();
    s2.addGate(new X(1));
    p.addStep(s2);
    SimpleQuantumExecutionEnvironment sqee = new SimpleQuantumExecutionEnvironment();
    Result res = sqee.runProgram(p);
    Qubit[] qubits = res.getQubits();
    RenderEngine sim = RenderEngine.createNode(p);
    borderPane.setCenter(sim);
    
    Button button =  new Button("uh?");
    //MaterialIconFactory
      //                  .get()
        //                .createIconButton(MaterialIcon.PLAY_ARROW, "", "2em", "", ContentDisplay.GRAPHIC_ONLY);
    button.setOnAction(e -> sim.animate());
    borderPane.setTop(button);
}
 
示例7
public void addX(int nr) {
    System.err.println("add X to "+nr);
    Step s = new Step();
    s.addGate(new X(nr));
    this.program.addStep(s);
    renderProgram();
}
 
示例8
@Test
public void ToffoliGate1() {
    // |100> -> |100>
    Program p = new Program(3,
        new Step(new X(2)),
        new Step(new Toffoli(2,1,0))
    );
    Result res = runProgram(p);
    Qubit[] qubits = res.getQubits();
    assertEquals(3, qubits.length);
    assertEquals(0, qubits[0].measure());
    assertEquals(0, qubits[1].measure());
    assertEquals(1, qubits[2].measure());
}
 
示例9
@Test
public void ToffoliGate2() {
    // |110> -> |111>
    Program p = new Program(3,
       new Step(new X(2),new X(1)),
       new Step(new Toffoli(2,1,0)));
    Result res = runProgram(p);
    Qubit[] qubits = res.getQubits();
    assertEquals(3, qubits.length);
    assertEquals(1, qubits[0].measure());
    assertEquals(1, qubits[1].measure());
    assertEquals(1, qubits[2].measure());
}
 
示例10
@Test
public void ToffoliGate3() {
    // |111> -> |110>
    Program p = new Program(3,
        new Step(new X(2),new X(1),new X(0)),
        new Step(new Toffoli(2,1,0))
    );
    Result res = runProgram(p);
    Qubit[] qubits = res.getQubits();
    assertEquals(3, qubits.length);
    assertEquals(0, qubits[0].measure());
    assertEquals(1, qubits[1].measure());
    assertEquals(1, qubits[2].measure());
}
 
示例11
@Test
public void ToffoliGate4() {
    // |001> -> |001>
    Program p = new Program(3,
        new Step(new X(0)),
        new Step(new Toffoli(2,1,0))
    );
    Result res = runProgram(p);
    Qubit[] qubits = res.getQubits();
    assertEquals(3, qubits.length);
    assertEquals(1, qubits[0].measure());
    assertEquals(0, qubits[1].measure());
    assertEquals(0, qubits[2].measure());
}
 
示例12
@Test
public void ToffoliGateR1() {
    // |100> -> |100>
    Program p = new Program(3,
        new Step(new X(2)),
        new Step(new Toffoli(0,1,2))
    );
    Result res = runProgram(p);
    Qubit[] qubits = res.getQubits();
    assertEquals(3, qubits.length);
    assertEquals(0, qubits[0].measure());
    assertEquals(0, qubits[1].measure());
    assertEquals(1, qubits[2].measure());
}
 
示例13
@Test
public void ToffoliGateR2() {
    // |011> -> |111>
    Program p = new Program(3,
       new Step(new X(0),new X(1)),
       new Step(new Toffoli(0, 1, 2)));
    Result res = runProgram(p);
    Qubit[] qubits = res.getQubits();
    assertEquals(3, qubits.length);
    assertEquals(1, qubits[0].measure());
    assertEquals(1, qubits[1].measure());
    assertEquals(1, qubits[2].measure());
}
 
示例14
@Test
public void ToffoliGateR3() {
    // |110> -> |111>
    Program p = new Program(4,
       new Step(new X(2),new X(3)),
       new Step(new Toffoli(3, 2, 1)));
    Result res = runProgram(p);
    Qubit[] qubits = res.getQubits();
    assertEquals(4, qubits.length);
    assertEquals(0, qubits[0].measure());
    assertEquals(1, qubits[1].measure());
    assertEquals(1, qubits[2].measure());
    assertEquals(1, qubits[3].measure());
}
 
示例15
@Test
public void ToffoliGateR4() {
    System.err.println("R4");
    // |1100> -> |1101>
    Program p = new Program(4,
       new Step(new X(2),new X(3)),
       new Step(new Toffoli(3, 2, 0)));
    Result res = runProgram(p);
    Qubit[] qubits = res.getQubits();
    assertEquals(4, qubits.length);
    assertEquals(1, qubits[0].measure());
    assertEquals(0, qubits[1].measure());
    assertEquals(1, qubits[2].measure());
    assertEquals(1, qubits[3].measure());
}
 
示例16
@Test
public void ToffoliGateS2() {
    System.err.println("S2");
    // |0101> -> |1101>
    Program p = new Program(4,
       new Step(new X(0),new X(2)),
       new Step(new Toffoli(0, 2, 3)));
    Result res = runProgram(p);
    Qubit[] qubits = res.getQubits();
    assertEquals(4, qubits.length);
    assertEquals(1, qubits[0].measure());
    assertEquals(0, qubits[1].measure());
    assertEquals(1, qubits[2].measure());
    assertEquals(1, qubits[3].measure());
}
 
示例17
@Test
public void swapGate01() {
    Program p = new Program(2,
       new Step(new Identity(0),new X(1)),
       new Step(new Swap(0,1))
    );
    Result res = runProgram(p);
    Qubit[] qubits = res.getQubits();
    assertEquals(2, qubits.length);
    assertEquals(1, qubits[0].measure());
    assertEquals(0, qubits[1].measure());
}
 
示例18
@Test
public void swapGate10() {
    Program p = new Program(2,
        new Step(new Identity(1),new X(0)),
        new Step(new Swap(0,1))
    );
    Result res = runProgram(p);
    Qubit[] qubits = res.getQubits();
    assertEquals(2, qubits.length);
    assertEquals(1, qubits[1].measure());
    assertEquals(0, qubits[0].measure());
}
 
示例19
@Test
public void swapGate11() {
    Program p = new Program(2,
        new Step(new X(0),new X(1)),
        new Step(new Swap(0,1))
    );
    Result res = runProgram(p);
    Qubit[] qubits = res.getQubits();
    assertEquals(2, qubits.length);
    assertEquals(1, qubits[0].measure());
    assertEquals(1, qubits[1].measure());
}
 
示例20
@Test
public void swapGate012() {
    Program p = new Program(3,
        new Step(new X(0)),
        new Step(new Swap(0,1))
    );
    Result res = runProgram(p);
    Qubit[] qubits = res.getQubits();
    assertEquals(3, qubits.length);
    assertEquals(0, qubits[0].measure());
    assertEquals(1, qubits[1].measure());
    assertEquals(0, qubits[2].measure());
}
 
示例21
@Test
public void swapGate122() {
    Program p = new Program(3,
        new Step(new X(1)),
        new Step(new Swap(1,2))
    );
    Result res = runProgram(p);
    Qubit[] qubits = res.getQubits();
    assertEquals(3, qubits.length);
    assertEquals(0, qubits[0].measure());
    assertEquals(0, qubits[1].measure());
    assertEquals(1, qubits[2].measure());
}
 
示例22
@Test
public void swapGate022() {
    Program p = new Program(3,
        new Step(new X(0)),
        new Step(new Swap(0,2))
    );
    Result res = runProgram(p);
    Qubit[] qubits = res.getQubits();
    assertEquals(3, qubits.length);
    assertEquals(0, qubits[0].measure());
    assertEquals(0, qubits[1].measure());
    assertEquals(1, qubits[2].measure());
}
 
示例23
@Test
public void swapGate202() {
    Program p = new Program(3,
        new Step(new X(0)),
        new Step(new Swap(2,0))
    );
    Result res = runProgram(p);
    Qubit[] qubits = res.getQubits();
    assertEquals(3, qubits.length);
    assertEquals(0, qubits[0].measure());
    assertEquals(0, qubits[1].measure());
    assertEquals(1, qubits[2].measure());
}
 
示例24
@Test
public void cnotx01() {
    Program p = new Program(2,
        new Step(new X(0)),
        new Step(new Cnot(0,1))
    );
    Result res = runProgram(p);
    Qubit[] qubits = res.getQubits();
    assertEquals(2, qubits.length);
    assertEquals(1, qubits[0].measure());
    assertEquals(1, qubits[1].measure());
}
 
示例25
@Test
public void cnotx10() {
    Program p = new Program(2,
        new Step(new X(1)),
        new Step(new Cnot(1,0))
    );
    Result res = runProgram(p);
    Qubit[] qubits = res.getQubits();
    assertEquals(2, qubits.length);
    assertEquals(1, qubits[0].measure());
    assertEquals(1, qubits[1].measure());
}
 
示例26
@Test
public void cnotx02() {
    Program p = new Program(3,
        new Step(new X(0)),
        new Step(new Cnot(0,2))
    );
    Result res = runProgram(p);
    Qubit[] qubits = res.getQubits();
    assertEquals(3, qubits.length);
    assertEquals(1, qubits[0].measure());
    assertEquals(0, qubits[1].measure());
    assertEquals(1, qubits[2].measure());
}
 
示例27
@Test
public void cnotx20() {
    Program p = new Program(3,
        new Step(new X(2)),
        new Step(new Cnot(2,0))
    );
    Result res = runProgram(p);
    Qubit[] qubits = res.getQubits();
    assertEquals(3, qubits.length);
    assertEquals(1, qubits[0].measure());
    assertEquals(0, qubits[1].measure());
    assertEquals(1, qubits[2].measure());
}
 
示例28
@Test
public void cnotx21() {
    Program p = new Program(3,
        new Step(new X(2)),
        new Step(new Cnot(2,1))
    );
    Result res = runProgram(p);
    Qubit[] qubits = res.getQubits();
    assertEquals(3, qubits.length);
    assertEquals(0, qubits[0].measure());
    assertEquals(1, qubits[1].measure());
    assertEquals(1, qubits[2].measure());
}
 
示例29
@Test
public void czx01() {
    Program p = new Program(2,
        new Step(new X(0)),
        new Step(new Cz(0,1))
    );
    Result res = runProgram(p);
    Qubit[] qubits = res.getQubits();
    assertEquals(2, qubits.length);
    assertEquals(1, qubits[0].measure());
    assertEquals(0, qubits[1].measure());
}
 
示例30
@Test
public void czxx01() {
    Program p = new Program(2,
        new Step(new X(0), new X(1)),
        new Step(new Cz(0,1))
    );
    Result res = runProgram(p);
    Qubit[] qubits = res.getQubits();
    assertEquals(2, qubits.length);
    assertEquals(1, qubits[0].measure());
    assertEquals(1, qubits[1].measure());
}