(************** Content-type: application/mathematica ************** Mathematica-Compatible Notebook This notebook can be used with any Mathematica-compatible application, such as Mathematica, MathReader or Publicon. The data for the notebook starts with the line containing stars above. To get the notebook into a Mathematica-compatible application, do one of the following: * Save the data starting with the line of stars above into a file with a name ending in .nb, then open the file inside the application; * Copy the data starting with the line of stars above to the clipboard, then use the Paste menu command inside the application. Data for notebooks contains only printable 7-bit ASCII and can be sent directly in email or through ftp in text mode. Newlines can be CR, LF or CRLF (Unix, Macintosh or MS-DOS style). NOTE: If you modify the data for this notebook not in a Mathematica- compatible application, you must delete the line below containing the word CacheID, otherwise Mathematica-compatible applications may try to use invalid cache data. For more information on notebooks and Mathematica-compatible applications, contact Wolfram Research: web: http://www.wolfram.com email: info@wolfram.com phone: +1-217-398-0700 (U.S.) Notebook reader applications are available free of charge from Wolfram Research. *******************************************************************) (*CacheID: 232*) (*NotebookFileLineBreakTest NotebookFileLineBreakTest*) (*NotebookOptionsPosition[ 31496, 934]*) (*NotebookOutlinePosition[ 32458, 964]*) (* CellTagsIndexPosition[ 32414, 960]*) (*WindowFrame->Normal*) Notebook[{ Cell[BoxData[{ \(\("\";\)\), "\[IndentingNewLine]", \(\("\< run toffoligate.nb\>";\)\), "\[IndentingNewLine]", \(\(Needs["\"];\)\)}], "Input"], Cell[BoxData[ \(\(\(\[IndentingNewLine]\)\(\[IndentingNewLine]\)\(Consider\ and\ \ arbitrary\ 3 - level\ \ gate\ \ \((not\ 3 - qubit)\);\)\)\)], "Input"], Cell[CellGroupData[{ Cell[BoxData[{ \(\(U = {{a, d, g}, {b, e, h}, {c, f, j}};\)\), "\[IndentingNewLine]", \(MatrixForm[U]\)}], "Input"], Cell[BoxData[ TagBox[ RowBox[{"(", "\[NoBreak]", GridBox[{ {"a", "d", "g"}, {"b", "e", "h"}, {"c", "f", "j"} }, RowSpacings->1, ColumnSpacings->1, ColumnAlignments->{Left}], "\[NoBreak]", ")"}], Function[ BoxForm`e$, MatrixForm[ BoxForm`e$]]]], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[{ \(\(\*"\"\\"";\)\), "\[IndentingNewLine]", \(MatrixForm[ Transpose[U] . U]\[IndentingNewLine]\), "\[IndentingNewLine]", \(\)}], "Input"], Cell[BoxData[ TagBox[ RowBox[{"(", "\[NoBreak]", GridBox[{ {\(a\^2 + b\^2 + c\^2\), \(a\ d + b\ e + c\ f\), \(a\ g + b\ h + c\ j\)}, {\(a\ d + b\ e + c\ f\), \(d\^2 + e\^2 + f\^2\), \(d\ g + e\ h + f\ j\)}, {\(a\ g + b\ h + c\ j\), \(d\ g + e\ h + f\ j\), \(g\^2 + h\^2 + j\^2\)} }, RowSpacings->1, ColumnSpacings->1, ColumnAlignments->{Left}], "\[NoBreak]", ")"}], Function[ BoxForm`e$, MatrixForm[ BoxForm`e$]]]], "Output"] }, Open ]], Cell[BoxData[{ \(We\ will\ now\ find\ 2 - level\ gates\ \ \((in\ 3 - qubit\ space)\)\), "\[IndentingNewLine]", \(U\_1, \ U\_2\ , U\_3\ \ \ so\ that\ \ \ U = \(U\_\(\(1\)\(\ \ \)\)\^\[Dagger]\) U\_2\^\[Dagger]\ \ U\_3\^\[Dagger]\)}], "Input"], Cell[BoxData[ \(\("\";\)\)], "Input"], Cell[CellGroupData[{ Cell[BoxData[{ \(\(U\_10 = {{1, 0, 0}, {0, 1, 0}, {0, 0, 1}};\)\), "\[IndentingNewLine]", \(MatrixForm[U\_10]\)}], "Input"], Cell[BoxData[ TagBox[ RowBox[{"(", "\[NoBreak]", GridBox[{ {"1", "0", "0"}, {"0", "1", "0"}, {"0", "0", "1"} }, RowSpacings->1, ColumnSpacings->1, ColumnAlignments->{Left}], "\[NoBreak]", ")"}], Function[ BoxForm`e$, MatrixForm[ BoxForm`e$]]]], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[{ \(\("\";\)\[IndentingNewLine]\), "\ \[IndentingNewLine]", \(\(term = Sqrt[a^2 + b^2];\)\), "\[IndentingNewLine]", \(\(U\_\(1 b\) = {{a, b, 0}/term, {b, \(-a\), 0}/term, {0, 0, 1}};\)\), "\[IndentingNewLine]", \(MatrixForm[U\_\(1 b\)]\), "\[IndentingNewLine]", \(\)}], "Input"], Cell[BoxData[ TagBox[ RowBox[{"(", "\[NoBreak]", GridBox[{ {\(a\/\@\(a\^2 + b\^2\)\), \(b\/\@\(a\^2 + b\^2\)\), "0"}, {\(b\/\@\(a\^2 + b\^2\)\), \(-\(a\/\@\(a\^2 + b\^2\)\)\), "0"}, {"0", "0", "1"} }, RowSpacings->1, ColumnSpacings->1, ColumnAlignments->{Left}], "\[NoBreak]", ")"}], Function[ BoxForm`e$, MatrixForm[ BoxForm`e$]]]], "Output"] }, Open ]], Cell[BoxData[ \(In\ either\ \(\(case\)\(:\)\)\)], "Input"], Cell[CellGroupData[{ Cell[BoxData[{ \(U\_10 . U\ \ /. \ b \[Rule] 0\), "\[IndentingNewLine]", \(MatrixForm[%]\)}], "Input"], Cell[BoxData[ \({{a, d, g}, {0, e, h}, {c, f, j}}\)], "Output"], Cell[BoxData[ TagBox[ RowBox[{"(", "\[NoBreak]", GridBox[{ {"a", "d", "g"}, {"0", "e", "h"}, {"c", "f", "j"} }, RowSpacings->1, ColumnSpacings->1, ColumnAlignments->{Left}], "\[NoBreak]", ")"}], Function[ BoxForm`e$, MatrixForm[ BoxForm`e$]]]], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[{ \(U1bU = FullSimplify[U\_\(1 b\) . U\ \ ]\), "\[IndentingNewLine]", \(MatrixForm[%]\)}], "Input"], Cell[BoxData[ \({{\@\(a\^2 + b\^2\), \(a\ d + b\ e\)\/\@\(a\^2 + b\^2\), \(a\ g + b\ \ h\)\/\@\(a\^2 + b\^2\)}, {0, \(b\ d - a\ e\)\/\@\(a\^2 + b\^2\), \(b\ g - a\ \ h\)\/\@\(a\^2 + b\^2\)}, {c, f, j}}\)], "Output"], Cell[BoxData[ TagBox[ RowBox[{"(", "\[NoBreak]", GridBox[{ {\(\@\(a\^2 + b\^2\)\), \(\(a\ d + b\ e\)\/\@\(a\^2 + b\^2\)\), \(\(a\ g + b\ h\)\/\@\(a\^2 + b\^2\)\)}, { "0", \(\(b\ d - a\ e\)\/\@\(a\^2 + b\^2\)\), \(\(b\ g - a\ h\)\/\@\(a\^2 + b\^2\)\)}, {"c", "f", "j"} }, RowSpacings->1, ColumnSpacings->1, ColumnAlignments->{Left}], "\[NoBreak]", ")"}], Function[ BoxForm`e$, MatrixForm[ BoxForm`e$]]]], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[{ \(If\ c\ \[NotEqual] \ 0\), "\[IndentingNewLine]", \(term3 = Sqrt[U1bU[\([1, 1]\)]^2 + U1bU[\([3, 1]\)]^2]\)}], "Input"], Cell[BoxData[ \(c\ If \[NotEqual] 0\)], "Output"], Cell[BoxData[ \(\@\(a\^2 + b\^2 + c\^2\)\)], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(U\_\(2 c\) = FullSimplify[{{U1bU[\([1, 1]\)], 0, U1bU[\([3, 1]\)]}/term3, {0, 1, 0}, {U1bU[\([3, 1]\)], 0, \(-U1bU[\([1, 1]\)]\)}/ term3}]\)], "Input"], Cell[BoxData[ \({{\@\(a\^2 + b\^2\)\/\@\(a\^2 + b\^2 + c\^2\), 0, c\/\@\(a\^2 + b\^2 + c\^2\)}, {0, 1, 0}, {c\/\@\(a\^2 + b\^2 + c\^2\), 0, \(-\(\@\(a\^2 + b\^2\)\/\@\(a\^2 + b\^2 + c\^2\)\)\)}}\)], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[{ \(U2c1bU = FullSimplify[ U\_\(2 c\)\ \ . U\_\(1 b\)\ \ . U]\), "\[IndentingNewLine]", \(MatrixForm[%]\)}], "Input"], Cell[BoxData[ \({{\@\(a\^2 + b\^2 + c\^2\), \(a\ d + b\ e + c\ f\)\/\@\(a\^2 + b\^2 + c\ \^2\), \(a\ g + b\ h + c\ j\)\/\@\(a\^2 + b\^2 + c\^2\)}, {0, \(b\ d - a\ e\)\ \/\@\(a\^2 + b\^2\), \(b\ g - a\ h\)\/\@\(a\^2 + b\^2\)}, {0, \(c\ \((a\ d + \ b\ e)\) - \((a\^2 + b\^2)\)\ f\)\/\(\@\(a\^2 + b\^2\)\ \@\(a\^2 + b\^2 + c\^2\ \)\), \(c\ \((a\ g + b\ h)\) - \((a\^2 + b\^2)\)\ j\)\/\(\@\(a\^2 + b\^2\)\ \ \@\(a\^2 + b\^2 + c\^2\)\)}}\)], "Output"], Cell[BoxData[ TagBox[ RowBox[{"(", "\[NoBreak]", GridBox[{ {\(\@\(a\^2 + b\^2 + c\^2\)\), \(\(a\ d + b\ e + c\ f\)\/\@\(a\^2 + b\^2 + c\^2\)\), \(\(a\ g + b\ h + c\ j\)\/\@\(a\^2 + b\^2 + c\^2\)\)}, { "0", \(\(b\ d - a\ e\)\/\@\(a\^2 + b\^2\)\), \(\(b\ g - a\ h\)\/\@\(a\^2 + b\^2\)\)}, { "0", \(\(c\ \((a\ d + b\ e)\) - \((a\^2 + b\^2)\)\ f\)\/\(\@\(a\^2 + b\^2\)\ \@\(a\^2 + b\^2 \ + c\^2\)\)\), \(\(c\ \((a\ g + b\ h)\) - \((a\^2 + b\^2)\)\ j\)\/\(\@\(a\^2 + b\^2\)\ \@\(a\^2 + b\^2 \ + c\^2\)\)\)} }, RowSpacings->1, ColumnSpacings->1, ColumnAlignments->{Left}], "\[NoBreak]", ")"}], Function[ BoxForm`e$, MatrixForm[ BoxForm`e$]]]], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(Simplify[U\_\(1 b\) . Transpose[U\_\(1 b\)]]\)], "Input"], Cell[BoxData[ \({{1, 0, 0}, {0, 1, 0}, {0, 0, 1}}\)], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(Simplify[U\_\(2 c\) . Transpose[U\_\(2 c\)]]\)], "Input"], Cell[BoxData[ \({{1, 0, 0}, {0, 1, 0}, {0, 0, 1}}\)], "Output"] }, Open ]], Cell[BoxData[ \(\(\*"\"\\"";\)\)], \ "Input"], Cell[CellGroupData[{ Cell[BoxData[ \(\(\(\[IndentingNewLine]\)\(\[IndentingNewLine]\)\(FullSimplify[\((\ U2c1bU . Transpose[U2c1bU])\)[\([1, 1]\)]]\)\)\)], "Input"], Cell[BoxData[ \(a\^2 + b\^2 + c\^2 + \((a\ d + b\ e + c\ f)\)\^2\/\(a\^2 + b\^2 + c\^2\) + \((a\ g + \ b\ h + c\ j)\)\^2\/\(a\^2 + b\^2 + c\^2\)\)], "Output"] }, Open ]], Cell[BoxData[ \(\(\*"\"\\"";\)\)], \ "Input"], Cell[BoxData[ \(\("\";\)\)], "Input"], Cell[BoxData[ \(So\)], "Input"], Cell[BoxData[ RowBox[{ RowBox[{"U2c1bU", "=", TagBox[ RowBox[{"(", "\[NoBreak]", GridBox[{ {"1", "0", "0"}, { "0", \(\(b\ d - a\ e\)\/\@\(a\^2 + b\^2\)\), \(\(b\ g - a\ h\)\/\@\(a\^2 + b\^2\)\)}, { "0", \(\(-\ f\)\/\(\(\@\(a\^2 + b\^2\)\)\(\ \)\)\), \(\(-\ j\)\/\(\(\@\(a\^2 + b\^2\)\)\(\ \)\)\)} }, RowSpacings->1, ColumnSpacings->1, ColumnAlignments->{Left}], "\[NoBreak]", ")"}], Function[ BoxForm`e$, MatrixForm[ BoxForm`e$]]]}], ";"}]], "Input"], Cell[BoxData[ \(Finally\ we\ define\)], "Input"], Cell[CellGroupData[{ Cell[BoxData[{ \(U3 = FullSimplify[Inverse[U2c1bU]]\), "\[IndentingNewLine]", \(MatrixForm[%]\), "\[IndentingNewLine]", \(\)}], "Input"], Cell[BoxData[ \({{1, 0, 0}, {0, \(\@\(a\^2 + b\^2\)\ j\)\/\(\(-b\)\ f\ g + a\ f\ h + b\ d\ j \ - a\ e\ j\), \(\@\(a\^2 + b\^2\)\ \((b\ g - a\ h)\)\)\/\(\(-b\)\ f\ g + a\ f\ \ h + b\ d\ j - a\ e\ j\)}, {0, \(\@\(a\^2 + b\^2\)\ f\)\/\(b\ f\ g - a\ f\ h - \ b\ d\ j + a\ e\ j\), \(\@\(a\^2 + b\^2\)\ \((b\ d - a\ e)\)\)\/\(b\ f\ g - a\ \ f\ h - b\ d\ j + a\ e\ j\)}}\)], "Output"], Cell[BoxData[ TagBox[ RowBox[{"(", "\[NoBreak]", GridBox[{ {"1", "0", "0"}, { "0", \(\(\@\(a\^2 + b\^2\)\ j\)\/\(\(-b\)\ f\ g + a\ f\ h + b\ d\ j - a\ e\ j\)\), \(\(\@\(a\^2 + b\^2\)\ \((b\ g - a\ h)\)\)\/\(\(-b\)\ f\ g + a\ f\ h + b\ d\ j - a\ e\ j\)\)}, { "0", \(\(\@\(a\^2 + b\^2\)\ f\)\/\(b\ f\ g - a\ f\ h - b\ d\ j + a\ e\ j\)\), \(\(\@\(a\^2 + b\^2\)\ \((b\ d - a\ e)\)\)\/\(b\ f\ g - a\ f\ h - b\ d\ j + a\ e\ j\)\)} }, RowSpacings->1, ColumnSpacings->1, ColumnAlignments->{Left}], "\[NoBreak]", ")"}], Function[ BoxForm`e$, MatrixForm[ BoxForm`e$]]]], "Output"] }, Open ]], Cell[BoxData[ \(We\ have\ shown\ that\)], "Input"], Cell[BoxData[ \(U3 . U\_\(2 c\) . U\_\(1 b\) . U = I\)], "Input"], Cell[CellGroupData[{ Cell[BoxData[{ \(\("\"\ \ \ ;\)\[IndentingNewLine]\), "\ \[IndentingNewLine]", \(MatrixForm[U\_\(1 b\)]\)}], "Input"], Cell[BoxData[ TagBox[ RowBox[{"(", "\[NoBreak]", GridBox[{ {\(a\/\@\(a\^2 + b\^2\)\), \(b\/\@\(a\^2 + b\^2\)\), "0"}, {\(b\/\@\(a\^2 + b\^2\)\), \(-\(a\/\@\(a\^2 + b\^2\)\)\), "0"}, {"0", "0", "1"} }, RowSpacings->1, ColumnSpacings->1, ColumnAlignments->{Left}], "\[NoBreak]", ")"}], Function[ BoxForm`e$, MatrixForm[ BoxForm`e$]]]], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(MatrixForm[U\_\(2 c\)]\)], "Input"], Cell[BoxData[ TagBox[ RowBox[{"(", "\[NoBreak]", GridBox[{ {\(\@\(a\^2 + b\^2\)\/\@\(a\^2 + b\^2 + c\^2\)\), "0", \(c\/\@\(a\^2 + b\^2 + c\^2\)\)}, {"0", "1", "0"}, {\(c\/\@\(a\^2 + b\^2 + c\^2\)\), "0", \(-\(\@\(a\^2 + b\^2\)\/\@\(a\^2 + b\^2 + c\^2\)\)\)} }, RowSpacings->1, ColumnSpacings->1, ColumnAlignments->{Left}], "\[NoBreak]", ")"}], Function[ BoxForm`e$, MatrixForm[ BoxForm`e$]]]], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(MatrixForm[U3]\)], "Input"], Cell[BoxData[ TagBox[ RowBox[{"(", "\[NoBreak]", GridBox[{ {"1", "0", "0"}, { "0", \(\(\@\(a\^2 + b\^2\)\ j\)\/\(\(-b\)\ f\ g + a\ f\ h + b\ d\ j - a\ e\ j\)\), \(\(\@\(a\^2 + b\^2\)\ \((b\ g - a\ h)\)\)\/\(\(-b\)\ f\ g + a\ f\ h + b\ d\ j - a\ e\ j\)\)}, { "0", \(\(\@\(a\^2 + b\^2\)\ f\)\/\(b\ f\ g - a\ f\ h - b\ d\ j + a\ e\ j\)\), \(\(\@\(a\^2 + b\^2\)\ \((b\ d - a\ e)\)\)\/\(b\ f\ g - a\ f\ h - b\ d\ j + a\ e\ j\)\)} }, RowSpacings->1, ColumnSpacings->1, ColumnAlignments->{Left}], "\[NoBreak]", ")"}], Function[ BoxForm`e$, MatrixForm[ BoxForm`e$]]]], "Output"] }, Open ]], Cell[BoxData[ \(\(\(Are\ \ 2 - level\ gates\)\(;\)\(\ \)\((single\ Qubit)\)\(\ \)\)\)], "Input"], Cell[BoxData[ \(struction\ can\ be\ generalized\ to\ an\ n - level\ system, \ if\ n = 2\^m; \ where\ m\ is\ the\ #\ of\ qubits; \ then\ we\ can\ always\ write\ any\ unitary\ matrix\ \((gate)\)\ as\ \ products\ of\ 2 - level\ \ unitary\ \(\(matrices\)\(.\)\)\)], "Input"], Cell[CellGroupData[{ Cell[BoxData[{ \(\("\";\)\ \[IndentingNewLine]\[IndentingNewLine]\), "\[IndentingNewLine]", \(\(fouriergate = 1/2\ {{1, 1, 1, 1}, {1, I, \(-1\), \(-I\)}, {1, \(-1\), 1, \(-1\)}, {1, \(-I\), \(-1\), I}};\)\), "\[IndentingNewLine]", \(MatrixForm[fouriergate]\)}], "Input"], Cell[BoxData[ TagBox[ RowBox[{"(", "\[NoBreak]", GridBox[{ {\(1\/2\), \(1\/2\), \(1\/2\), \(1\/2\)}, {\(1\/2\), \(\[ImaginaryI]\/2\), \(-\(1\/2\)\), \ \(-\(\[ImaginaryI]\/2\)\)}, {\(1\/2\), \(-\(1\/2\)\), \(1\/2\), \(-\(1\/2\)\)}, {\(1\/2\), \(-\(\[ImaginaryI]\/2\)\), \(-\(1\/2\)\), \(\ \[ImaginaryI]\/2\)} }], "\[NoBreak]", ")"}], Function[ BoxForm`e$, MatrixForm[ BoxForm`e$]]]], "Output"] }, Open ]], Cell[BoxData[ \(\(\(\[IndentingNewLine]\)\(We\ now\ wish\ to\ show\ that\ any\ two - level\ gate\ for\ n - qubit\ space\[IndentingNewLine] can\ be\ expressed\ in\ terms\ of\ \ CNOT\ gates\ , \ and\ single\ qubit\ gates . \ \((i . e . \ CNOT\ and\ single\ qubits\ gate\ comprise\[IndentingNewLine]a\ \ universal\ set\ of\ gates, \ i . e . \ any\ n - qubit\ gate\ can\ be\[IndentingNewLine]expressed\ in\ terms\ of\ \ them)\) . \)\)\)], "Input"], Cell[BoxData[ \(First\ we\ introduce\ \ the\ concept\ of\ a\ Gray\ code\)], "Input"], Cell[BoxData[{ \(Given\ two\ binary\ strings\ \((of\ length\ m)\), \ an\ arrangment\ of\ bit' s, \ in\ which\ each\ adjacent\ member\ of\ the\ set\ differs\ by\ one\ bit\ \ is\), "\[IndentingNewLine]", \(called\ a\ Gray\ \(\(code\)\(.\)\)\)}], "Input"], Cell[BoxData[{ \(Example : given\ binary\ strings\ s = 101001, t = 110011, \ then\ a\ Gray\ code\ is\[IndentingNewLine]\), "\[IndentingNewLine]", \(g1 = \(s = 101001\)\), "\[IndentingNewLine]", \(g2 = \ \ \ \ \ \ \ 101011\), "\[IndentingNewLine]", \(g3\ = \ \ \ \ \ \ 100011\), "\[IndentingNewLine]", \(g4 = \(t = 110011\)\[IndentingNewLine]\), "\[IndentingNewLine]", \(this\ another\ possible\ Gray\ code\[IndentingNewLine]\), "\ \[IndentingNewLine]", \(g1 = \(s = \ \ \ \ \ \ \ 101001\)\), "\[IndentingNewLine]", \(g2 = \ \ \ \ \ \ \ \ \ \ \ \ \ \ 100001\), "\[IndentingNewLine]", \(g3\ = \ \ \ \ \ \ \ \ \ \ \ \ \ 110001\), "\[IndentingNewLine]", \(g4 = \(gm = \(t = 110011\)\)\[IndentingNewLine]\), "\[IndentingNewLine]", \(Is\ there\ a\ Gray\ code\ with\ \ \ gm < \(\(4\)\(\ \)\(?\)\(\ \[IndentingNewLine]\)\)\)}], "Input"], Cell[BoxData[ \(Why\ Gray\ \(\(codes\)\(?\)\)\)], "Input"], Cell[BoxData[{ \(Above\ we\ pointed\ out\ that\ for\ an\ n - qubit\ gate\ we\ can\ always\), "\[IndentingNewLine]", \(decompose\ it\ in\ terms\ of\ 2 - level\ gates . \ We\ construct\ a\ reduced\), "\[IndentingNewLine]", \(\ single\ qubit\ \ unitary\ operator \(\(\(\ \)\(U\)\)\&~\)\ \ that\ \ acts\ only\ on\ the\ 2 - levels\ \ \), "\[IndentingNewLine]", \(\(\(|\)\(s\)\) = \(\(\(s\_1\) \(s\_2\) s\_3 .. \) s\_n > \ and\ | t = \(\(\(\(t\_1\) \(t\_2\) t\_3 .. \) t\_n\)\(>\)\)\)\)}], "Input"], Cell[BoxData[ \(\(\(We\ then\ construct\ a\ Gray\ code\ from\ \ \ \(s\_1\) \(s\_2\) s\_3 .. \) s\_n\ \[LongRightArrow]\ t\_1 \( t\_2\) t\_3 .. \) t\_n\)], "Input"], Cell[BoxData[ \(We\ construct\ the\ following\ gates\)], "Input"], Cell[BoxData[{ \(g1 = \(\(|\)\(\(\(s\_1\) \(s\_2\) s\_3 .. \) s\_m > \ \(\(\[LongRightArrow]\)\(\ \)\(g2\)\)\)\)\), "\ \[IndentingNewLine]", \(g2\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \[LongRightArrow]\ g3\), "\[IndentingNewLine]", \(\(\(.\)\(\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \)\(.\)\(\[IndentingNewLine]\)\(gm\)\) - 2\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \[LongRightArrow]gm - 1\[IndentingNewLine]\), "\[IndentingNewLine]", \(These\ operations\ can\ be\ performed\ by\ CNOT\ \ \(\(gates\)\(.\)\)\)}], "Input"], Cell[BoxData[{ \(We\ then\ apply\ a\ control\ \(\(\ \)\(U\)\)\&~\ gate\ on\ the\ target\ \ bit\ \), "\[IndentingNewLine]", \(which\ is\ the\ bit\ that\ differs\ between\ \ gm - 1\ and\ \ \(\(gm\)\(.\)\(\ \)\)\)}], "Input"], Cell[BoxData[ \(We\ then\ undo\ the\ above\ swapping\ \(\(transformations\)\(.\)\)\)], \ "Input"], Cell[BoxData[ \(Example : \ consider\ the\ 3 - qubit\ gate\)], "Input"], Cell[CellGroupData[{ Cell[BoxData[ \(U = {{0, 0, 0, 0, 0, 0, 0, \(-I\)}, {0, 1, 0, 0, 0, 0, 0, 0}, \[IndentingNewLine]{0, 0, 1, 0, 0, 0, 0, 0}, {0, 0, 0, 1, 0, 0, 0, 0}, \[IndentingNewLine]{0, 0, 0, 0, 1, 0, 0, 0}, {0, 0, 0, 0, 0, 1, 0, 0}, \[IndentingNewLine]{0, 0, 0, 0, 0, 0, 1, 0}, {I, 0, 0, 0, 0, 0, 0, 0}}\)], "Input"], Cell[BoxData[ \({{0, 0, 0, 0, 0, 0, 0, \(-\[ImaginaryI]\)}, {0, 1, 0, 0, 0, 0, 0, 0}, {0, 0, 1, 0, 0, 0, 0, 0}, {0, 0, 0, 1, 0, 0, 0, 0}, {0, 0, 0, 0, 1, 0, 0, 0}, {0, 0, 0, 0, 0, 1, 0, 0}, {0, 0, 0, 0, 0, 0, 1, 0}, {\[ImaginaryI], 0, 0, 0, 0, 0, 0, 0}}\)], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(MatrixForm[U]\)], "Input"], Cell[BoxData[ TagBox[ RowBox[{"(", "\[NoBreak]", GridBox[{ {"0", "0", "0", "0", "0", "0", "0", \(-\[ImaginaryI]\)}, {"0", "1", "0", "0", "0", "0", "0", "0"}, {"0", "0", "1", "0", "0", "0", "0", "0"}, {"0", "0", "0", "1", "0", "0", "0", "0"}, {"0", "0", "0", "0", "1", "0", "0", "0"}, {"0", "0", "0", "0", "0", "1", "0", "0"}, {"0", "0", "0", "0", "0", "0", "1", "0"}, {"\[ImaginaryI]", "0", "0", "0", "0", "0", "0", "0"} }, RowSpacings->1, ColumnSpacings->1, ColumnAlignments->{Left}], "\[NoBreak]", ")"}], Function[ BoxForm`e$, MatrixForm[ BoxForm`e$]]]], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(MatrixForm[U . Conjugate[Transpose[U]]]\)], "Input"], Cell[BoxData[ TagBox[ RowBox[{"(", "\[NoBreak]", GridBox[{ {"1", "0", "0", "0", "0", "0", "0", "0"}, {"0", "1", "0", "0", "0", "0", "0", "0"}, {"0", "0", "1", "0", "0", "0", "0", "0"}, {"0", "0", "0", "1", "0", "0", "0", "0"}, {"0", "0", "0", "0", "1", "0", "0", "0"}, {"0", "0", "0", "0", "0", "1", "0", "0"}, {"0", "0", "0", "0", "0", "0", "1", "0"}, {"0", "0", "0", "0", "0", "0", "0", "1"} }, RowSpacings->1, ColumnSpacings->1, ColumnAlignments->{Left}], "\[NoBreak]", ")"}], Function[ BoxForm`e$, MatrixForm[ BoxForm`e$]]]], "Output"] }, Open ]], Cell[BoxData[ \(\(\(thus\)\(\ \)\)\)], "Input"], Cell[BoxData[{ \(Utilde = {{0, \(-I\)}, {I, 0}}\), "\[IndentingNewLine]", \(connecting\ levels\), "\[IndentingNewLine]", \(\(\(|\)\(000 > \ and\)\(\ \)\(|\)\(\(111\)\(>\)\)\)\)}], "Input"], Cell[BoxData[ RowBox[{"We", " ", "construct", " ", "a", " ", ButtonBox[\(\(Gray\)\(\ \)\(code\)\(\ \)\), ButtonData:>{ URL[ "http://www.nist.gov/dads/HTML/graycode.html"], None}, ButtonStyle->"Hyperlink"]}]], "Input"], Cell[BoxData[{ \(000\), "\[IndentingNewLine]", \(001\), "\[IndentingNewLine]", \(011\), "\[IndentingNewLine]", \(111\)}], "Input"], Cell[BoxData[{ \(And\ then\ impliment\ a\ set\ of\ CNOT\ gates\ that\ impliment\ \ transformations\ \ \ \), "\[IndentingNewLine]", \(\(\(|\)\(gn > \ \[LongRightArrow]\)\(|\)\(\(gn + 1\)\(>\)\)\)\)}], "Input"], Cell[BoxData[ \(unit = {{1, 0}, {0, 1}}; X = {{0, 1}, {1, 0}};\)], "Input"], Cell[BoxData[ RowBox[{ ButtonBox["Fig6", ButtonData:>{ URL[ "http://www.physics.unlv.edu/~bernard/phy771/fig6.pdf"], None}, ButtonStyle->"Hyperlink"], "\[IndentingNewLine]"}]], "Input"], Cell[CellGroupData[{ Cell[BoxData[{ \(\(gate1 = BlockMatrix[ Outer[Times, X, BlockMatrix[ Outer[Times, X, unit]]]];\)\), "\[IndentingNewLine]", \(MatrixForm[gate1]\)}], "Input"], Cell[BoxData[ TagBox[ RowBox[{"(", "\[NoBreak]", GridBox[{ {"0", "0", "0", "0", "0", "0", "1", "0"}, {"0", "0", "0", "0", "0", "0", "0", "1"}, {"0", "0", "0", "0", "1", "0", "0", "0"}, {"0", "0", "0", "0", "0", "1", "0", "0"}, {"0", "0", "1", "0", "0", "0", "0", "0"}, {"0", "0", "0", "1", "0", "0", "0", "0"}, {"1", "0", "0", "0", "0", "0", "0", "0"}, {"0", "1", "0", "0", "0", "0", "0", "0"} }], "\[NoBreak]", ")"}], Function[ BoxForm`e$, MatrixForm[ BoxForm`e$]]]], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[{ \(\("\\>";\)\), "\[IndentingNewLine]", \(gate1 . ket0\)}], "Input"], Cell[BoxData[ \({0, 0, 0, 0, 0, 0, 1, 0}\)], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[{ \(\[IndentingNewLine]"\<|110>\>"\), "\[IndentingNewLine]", \(ket6\ \)}], "Input"], Cell[BoxData[ \({0, 0, 0, 0, 0, 0, 1, 0}\)], "Output"] }, Open ]], Cell[BoxData[ \(\("\";\)\)], "Input"], Cell[CellGroupData[{ Cell[BoxData[ \(toffoli1 = threequbitoperator[zero, zero, unit] + threequbitoperator[zero, one, unit] + threequbitoperator[one, zero, unit] + threequbitoperator[one, one, X]\)], "Input"], Cell[BoxData[ \({{1, 0, 0, 0, 0, 0, 0, 0}, {0, 1, 0, 0, 0, 0, 0, 0}, {0, 0, 1, 0, 0, 0, 0, 0}, {0, 0, 0, 1, 0, 0, 0, 0}, {0, 0, 0, 0, 1, 0, 0, 0}, {0, 0, 0, 0, 0, 1, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 1}, {0, 0, 0, 0, 0, 0, 1, 0}}\)], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(\(\(\ \ \)\(gate1 . toffoli1 . gate1 . ket0\)\)\)], "Input"], Cell[BoxData[ \({0, 1, 0, 0, 0, 0, 0, 0}\)], "Output"] }, Open ]], Cell[BoxData[{ \(Which\ is\ ket1\ or\ | 001 > \ i . e . \ above\ sequence\ of\ gates\), "\[IndentingNewLine]", \(takes\ \ | 000 > \ \[LongRightArrow] | 001 > \ \ or\ \ g1 \[RightArrow] g2, \[IndentingNewLine]i . e . \ it\ generates\ the\ Gray\ code\ starting\ from\ s1 = g1\ to\ g2\)}], "Input"], Cell[CellGroupData[{ Cell[BoxData[{ \(\(gate2 = BlockMatrix[ Outer[Times, X, BlockMatrix[ Outer[Times, unit, unit]]]];\)\), "\[IndentingNewLine]", \(MatrixForm[gate2]\)}], "Input"], Cell[BoxData[ TagBox[ RowBox[{"(", "\[NoBreak]", GridBox[{ {"0", "0", "0", "0", "1", "0", "0", "0"}, {"0", "0", "0", "0", "0", "1", "0", "0"}, {"0", "0", "0", "0", "0", "0", "1", "0"}, {"0", "0", "0", "0", "0", "0", "0", "1"}, {"1", "0", "0", "0", "0", "0", "0", "0"}, {"0", "1", "0", "0", "0", "0", "0", "0"}, {"0", "0", "1", "0", "0", "0", "0", "0"}, {"0", "0", "0", "1", "0", "0", "0", "0"} }], "\[NoBreak]", ")"}], Function[ BoxForm`e$, MatrixForm[ BoxForm`e$]]]], "Output"] }, Open ]], Cell[BoxData[{ \(\("\<00| \[CircleTimes] I +|01><01|\[CircleTimes] I +\ \[IndentingNewLine]|10><10|\[CircleTimes] I +|11><11|\[CircleTimes]PauliX \ \[IndentingNewLine]= |00><00| \[CircleTimes] (|0><0|+|1><1|) + \ \[IndentingNewLine]|01><01|\[CircleTimes] (|0><0|+|1><1|) + \ \[IndentingNewLine] |10><10|\[CircleTimes] (|0><0|+|1><1|) +\ \[IndentingNewLine] |11><11| \[CircleTimes] (|0><1|+|0><1|) \>";\)\ \[IndentingNewLine]\), "\[IndentingNewLine]", \(\("\<000|+|001><100|+ \ |010><010|+|011><110|\[IndentingNewLine]+|100><001|+|110><111|+|111><110|\>";\ \)\[IndentingNewLine]\), "\[IndentingNewLine]", \(\("\<111|+|111><110| with\>";\)\n\), "\n", \(\(\(|\)\(101 > < 111\)\(|\)\(+\(\(|\)\(111 > < 101\)\(|\)\(\n\)\(\n\)\(or\)\)\)\)\), "\n", \(toffoligate2 = \ \[IndentingNewLine]\(\(|\)\(000 > < 000\)\(|\)\(+\(\(|\)\(001 > < 100\)\(|\)\(+\ \(\(|\)\(010 > < 010\)\(|\)\(+\(\(|\)\(011 > < 110\)\(|\)\(\[IndentingNewLine]\)\(+\(\(|\)\(100 > < 001\)\(|\)\(+\(\(|\)\(110 > < 011\)\(|\)\(\ \)\(+\ \(\(|\)\(101 > < 111\)\(|\)\(+\(\(|\)\(111 > < 101\)\(|\)\(\n\)\(\[IndentingNewLine]\)\ \)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)}], "Input", Evaluatable->False], Cell[BoxData[ \(\(toffoligate2 = Outer[Times, ket0, ket0] + Outer[Times, ket1, ket1] + \[IndentingNewLine]Outer[Times, ket2, ket2] + Outer[Times, ket3, ket3] + \[IndentingNewLine]Outer[ Times, ket4, ket4] + Outer[Times, ket6, ket6] + \[IndentingNewLine]Outer[Times, ket5, ket7] + Outer[Times, ket7, ket5];\)\)], "Input"], Cell[CellGroupData[{ Cell[BoxData[ \(MatrixForm[toffoligate2]\)], "Input"], Cell[BoxData[ TagBox[ RowBox[{"(", "\[NoBreak]", GridBox[{ {"1", "0", "0", "0", "0", "0", "0", "0"}, {"0", "1", "0", "0", "0", "0", "0", "0"}, {"0", "0", "1", "0", "0", "0", "0", "0"}, {"0", "0", "0", "1", "0", "0", "0", "0"}, {"0", "0", "0", "0", "1", "0", "0", "0"}, {"0", "0", "0", "0", "0", "0", "0", "1"}, {"0", "0", "0", "0", "0", "0", "1", "0"}, {"0", "0", "0", "0", "0", "1", "0", "0"} }], "\[NoBreak]", ")"}], Function[ BoxForm`e$, MatrixForm[ BoxForm`e$]]]], "Output"] }, Open ]], Cell[BoxData[ \(\("\";\)\)], "Input"], Cell[CellGroupData[{ Cell[BoxData[ \(Gray2 = \ \ gate1 . toffoli1 . gate1 . ket0\)], "Input"], Cell[BoxData[ \({0, 1, 0, 0, 0, 0, 0, 0}\)], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(Gray3 = gate2 . toffoligate2 . gate2 . Gray2\)], "Input"], Cell[BoxData[ \({0, 0, 0, 1, 0, 0, 0, 0}\)], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[{ \("\"; \ ket3\), "\[IndentingNewLine]", \(\ \ \("\<(<011|) or the next member of the Gray code\>";\)\)}], "Input"], Cell[BoxData[ \({0, 0, 0, 1, 0, 0, 0, 0}\)], "Output"] }, Open ]], Cell[BoxData[ \("\ \[RightArrow]|001>\[RightArrow]|011> we proceed this way \ up to gm-2\>"\)], "Input"], Cell[BoxData[ \(\(Now\ we\ reverse\ our\ gates;\)\)], "Input"], Cell[CellGroupData[{ Cell[BoxData[ \(Gray2prime = gate2 . toffoligate2 . gate2 . Gray3\)], "Input"], Cell[BoxData[ \({0, 1, 0, 0, 0, 0, 0, 0}\)], "Output"] }, Open ]], Cell[BoxData[ \(\("\";\)\)], "Input"], Cell[CellGroupData[{ Cell[BoxData[ \(Gray1prime = gate1 . toffoli1 . gate1 . Gray2prime\)], "Input"], Cell[BoxData[ \({1, 0, 0, 0, 0, 0, 0, 0}\)], "Output"] }, Open ]], Cell[BoxData[ \(\("\\>";\)\)], "Input"], Cell[BoxData[{ \(We\ now\ slightly\ modify\ this\ circuit\ by\ inserting\), "\ \[IndentingNewLine]", \(a\ control\ \ \(U\&~\)\ \ gate\ at\ gm - 2\ \ as\ in\ the\ \(\(diagram\)\(.\)\)\)}], "Input"], Cell[BoxData[ ButtonBox[\(Fig\ 7\), ButtonData:>{ URL[ "http://www.physics.unlv.edu/~bernard/phy771/fig7.pdf"], None}, ButtonStyle->"Hyperlink"]], "Input"] }, FrontEndVersion->"4.1 for X", ScreenRectangle->{{0, 1280}, {0, 1024}}, WindowSize->{818, 597}, WindowMargins->{{Automatic, 200}, {Automatic, 19}}, PrintingPageRange->{Automatic, Automatic}, PrintingOptions->{"PaperSize"->{612, 792}, "PaperOrientation"->"Portrait", "PostScriptOutputFile":>FrontEnd`FileName[{$RootDirectory, "a", "deimos", \ "1", "bernard", "web", "phy771"}, "universalgates.nb.ps", CharacterEncoding \ -> "ISO8859-1"], "Magnification"->1}, Magnification->1.25 ] (******************************************************************* Cached data follows. If you edit this Notebook file directly, not using Mathematica, you must remove the line containing CacheID at the top of the file. The cache data will then be recreated when you save this file from within Mathematica. *******************************************************************) (*CellTagsOutline CellTagsIndex->{} *) (*CellTagsIndex CellTagsIndex->{} *) (*NotebookFileOutline Notebook[{ Cell[1705, 50, 219, 3, 82, "Input"], Cell[1927, 55, 157, 2, 82, "Input"], Cell[CellGroupData[{ Cell[2109, 61, 124, 2, 59, "Input"], Cell[2236, 65, 357, 11, 71, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[2630, 81, 479, 8, 174, "Input"], Cell[3112, 91, 579, 14, 81, "Output"] }, Open ]], Cell[3706, 108, 271, 5, 59, "Input"], Cell[3980, 115, 66, 1, 36, "Input"], Cell[CellGroupData[{ Cell[4071, 120, 145, 3, 59, "Input"], Cell[4219, 125, 357, 11, 71, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[4613, 141, 357, 7, 151, "Input"], Cell[4973, 150, 446, 11, 103, "Output"] }, Open ]], Cell[5434, 164, 62, 1, 36, "Input"], Cell[CellGroupData[{ Cell[5521, 169, 112, 2, 59, "Input"], Cell[5636, 173, 67, 1, 36, "Output"], Cell[5706, 176, 357, 11, 71, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[6100, 192, 122, 2, 59, "Input"], Cell[6225, 196, 219, 3, 56, "Output"], Cell[6447, 201, 593, 15, 105, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[7077, 221, 145, 2, 59, "Input"], Cell[7225, 225, 53, 1, 36, "Output"], Cell[7281, 228, 58, 1, 44, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[7376, 234, 204, 4, 59, "Input"], Cell[7583, 240, 239, 4, 62, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[7859, 249, 158, 4, 59, "Input"], Cell[8020, 255, 450, 6, 106, "Output"], Cell[8473, 263, 895, 20, 127, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[9405, 288, 79, 1, 36, "Input"], Cell[9487, 291, 67, 1, 36, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[9591, 297, 79, 1, 36, "Input"], Cell[9673, 300, 67, 1, 36, "Output"] }, Open ]], Cell[9755, 304, 177, 3, 59, "Input"], Cell[CellGroupData[{ Cell[9957, 311, 147, 2, 82, "Input"], Cell[10107, 315, 169, 3, 54, "Output"] }, Open ]], Cell[10291, 321, 99, 2, 37, "Input"], Cell[10393, 325, 91, 1, 36, "Input"], Cell[10487, 328, 35, 1, 36, "Input"], Cell[10525, 331, 694, 17, 112, "Input"], Cell[11222, 350, 52, 1, 36, "Input"], Cell[CellGroupData[{ Cell[11299, 355, 150, 3, 82, "Input"], Cell[11452, 360, 390, 6, 111, "Output"], Cell[11845, 368, 877, 21, 111, "Output"] }, Open ]], Cell[12737, 392, 54, 1, 36, "Input"], Cell[12794, 395, 71, 1, 36, "Input"], Cell[CellGroupData[{ Cell[12890, 400, 148, 3, 82, "Input"], Cell[13041, 405, 446, 11, 103, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[13524, 421, 56, 1, 36, "Input"], Cell[13583, 424, 536, 13, 119, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[14156, 442, 47, 1, 36, "Input"], Cell[14206, 445, 877, 21, 111, "Output"] }, Open ]], Cell[15098, 469, 107, 2, 36, "Input"], Cell[15208, 473, 284, 4, 105, "Input"], Cell[CellGroupData[{ Cell[15517, 481, 458, 8, 174, "Input"], Cell[15978, 491, 477, 11, 144, "Output"] }, Open ]], Cell[16470, 505, 502, 9, 197, "Input"], Cell[16975, 516, 88, 1, 36, "Input"], Cell[17066, 519, 271, 5, 82, "Input"], Cell[17340, 526, 900, 15, 381, "Input"], Cell[18243, 543, 62, 1, 36, "Input"], Cell[18308, 546, 537, 8, 107, "Input"], Cell[18848, 556, 189, 3, 36, "Input"], Cell[19040, 561, 69, 1, 36, "Input"], Cell[19112, 564, 679, 11, 151, "Input"], Cell[19794, 577, 238, 4, 62, "Input"], Cell[20035, 583, 101, 2, 36, "Input"], Cell[20139, 587, 75, 1, 36, "Input"], Cell[CellGroupData[{ Cell[20239, 592, 351, 5, 105, "Input"], Cell[20593, 599, 298, 4, 82, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[20928, 608, 46, 1, 36, "Input"], Cell[20977, 611, 729, 16, 171, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[21743, 632, 72, 1, 36, "Input"], Cell[21818, 635, 702, 16, 171, "Output"] }, Open ]], Cell[22535, 654, 51, 1, 36, "Input"], Cell[22589, 657, 202, 3, 82, "Input"], Cell[22794, 662, 254, 5, 41, "Input"], Cell[23051, 669, 149, 4, 105, "Input"], Cell[23203, 675, 228, 4, 59, "Input"], Cell[23434, 681, 79, 1, 36, "Input"], Cell[23516, 684, 230, 6, 64, "Input"], Cell[CellGroupData[{ Cell[23771, 694, 211, 6, 59, "Input"], Cell[23985, 702, 611, 13, 188, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[24633, 720, 103, 2, 59, "Input"], Cell[24739, 724, 58, 1, 36, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[24834, 730, 105, 2, 82, "Input"], Cell[24942, 734, 58, 1, 36, "Output"] }, Open ]], Cell[25015, 738, 62, 1, 36, "Input"], Cell[CellGroupData[{ Cell[25102, 743, 224, 5, 82, "Input"], Cell[25329, 750, 269, 4, 82, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[25635, 759, 80, 1, 36, "Input"], Cell[25718, 762, 58, 1, 36, "Output"] }, Open ]], Cell[25791, 766, 347, 7, 82, "Input"], Cell[CellGroupData[{ Cell[26163, 777, 214, 6, 59, "Input"], Cell[26380, 785, 611, 13, 188, "Output"] }, Open ]], Cell[27006, 801, 1622, 27, 542, "Input", Evaluatable->False], Cell[28631, 830, 393, 7, 105, "Input"], Cell[CellGroupData[{ Cell[29049, 841, 57, 1, 36, "Input"], Cell[29109, 844, 611, 13, 188, "Output"] }, Open ]], Cell[29735, 860, 74, 1, 36, "Input"], Cell[CellGroupData[{ Cell[29834, 865, 76, 1, 36, "Input"], Cell[29913, 868, 58, 1, 36, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[30008, 874, 77, 1, 36, "Input"], Cell[30088, 877, 58, 1, 36, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[30183, 883, 149, 2, 59, "Input"], Cell[30335, 887, 58, 1, 36, "Output"] }, Open ]], Cell[30408, 891, 119, 2, 36, "Input"], Cell[30530, 895, 66, 1, 36, "Input"], Cell[CellGroupData[{ Cell[30621, 900, 82, 1, 36, "Input"], Cell[30706, 903, 58, 1, 36, "Output"] }, Open ]], Cell[30779, 907, 64, 1, 36, "Input"], Cell[CellGroupData[{ Cell[30868, 912, 83, 1, 36, "Input"], Cell[30954, 915, 58, 1, 36, "Output"] }, Open ]], Cell[31027, 919, 68, 1, 36, "Input"], Cell[31098, 922, 212, 4, 61, "Input"], Cell[31313, 928, 179, 4, 41, "Input"] } ] *) (******************************************************************* End of Mathematica Notebook file. *******************************************************************)