From be8d7f0ade7467fe9fbd711cb95132cbe7983a23 Mon Sep 17 00:00:00 2001 From: janlukas Date: Fri, 1 Nov 2024 18:03:51 +0000 Subject: [PATCH] [docs] Added gradients for fidelity --- fidelity-tests.ipynb | 5486 ------------------------------------------ 1 file changed, 5486 deletions(-) delete mode 100644 fidelity-tests.ipynb diff --git a/fidelity-tests.ipynb b/fidelity-tests.ipynb deleted file mode 100644 index b646d28..0000000 --- a/fidelity-tests.ipynb +++ /dev/null @@ -1,5486 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\u001b[36m\u001b[1m[ \u001b[22m\u001b[39m\u001b[36m\u001b[1mInfo: \u001b[22m\u001b[39mPrecompiling FLOYao [6d9310a3-f1d0-41b7-8edb-11c1cf57cd2d] (cache misses: include_dependency fsize change (2), dep missing source (2), invalid header (2), mismatched flags (6))\n" - ] - }, - { - "ename": "LoadError", - "evalue": "ArgumentError: Package Tullio not found in current path.\n- Run `import Pkg; Pkg.add(\"Tullio\")` to install the Tullio package.", - "output_type": "error", - "traceback": [ - "ArgumentError: Package Tullio not found in current path.\n- Run `import Pkg; Pkg.add(\"Tullio\")` to install the Tullio package.", - "", - "Stacktrace:", - " [1] macro expansion", - " @ ./loading.jl:2223 [inlined]", - " [2] macro expansion", - " @ ./lock.jl:273 [inlined]", - " [3] __require(into::Module, mod::Symbol)", - " @ Base ./loading.jl:2198", - " [4] #invoke_in_world#3", - " @ ./essentials.jl:1089 [inlined]", - " [5] invoke_in_world", - " @ ./essentials.jl:1086 [inlined]", - " [6] require(into::Module, mod::Symbol)", - " @ Base ./loading.jl:2191" - ] - } - ], - "source": [ - "using Revise\n", - "using FLOYao\n", - "using Yao\n", - "using SkewLinearAlgebra\n", - "using Tullio\n", - "using FiniteDifferences\n", - "using Symbolics\n", - "using SymbolicUtils" - ] - }, - { - "cell_type": "code", - "execution_count": 144, - "metadata": {}, - "outputs": [], - "source": [ - "using Symbolics\n", - "using PrettyChairmarks\n", - "using ProfileSVG\n", - "# using SymPy" - ] - }, - { - "cell_type": "code", - "execution_count": 224, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "kron (generic function with 72 methods)" - ] - }, - "execution_count": 224, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "using LinearAlgebra\n", - "⊗ = kron" - ] - }, - { - "cell_type": "code", - "execution_count": 225, - "metadata": {}, - "outputs": [], - "source": [ - "using Revise" - ] - }, - { - "cell_type": "code", - "execution_count": 226, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "matdisplay (generic function with 2 methods)" - ] - }, - "execution_count": 226, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "function matdisplay(mat, digits=2)\n", - " display(round.(mat, digits=digits))\n", - "end" - ] - }, - { - "cell_type": "code", - "execution_count": 227, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "1.710108214099236e-45" - ] - }, - "execution_count": 227, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "reg1 = FLOYao.rand_state(400)\n", - "reg2 = FLOYao.zero_state(400)\n", - "fidelity(reg1, reg2)" - ] - }, - { - "cell_type": "code", - "execution_count": 228, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "Chairmarks.Benchmark: 1 sample with 1 evaluation.\n", - " Single result which took \u001b[34m327.126 ms\u001b[39m (2.01% GC) to evaluate,\n", - " with a memory estimate of \u001b[33m14.72 MiB\u001b[39m, over \u001b[33m2329\u001b[39m allocations." - ] - }, - "execution_count": 228, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "@bs fidelity(reg1, reg2)" - ] - }, - { - "cell_type": "code", - "execution_count": 229, - "metadata": {}, - "outputs": [ - { - "data": { - "image/svg+xml": [ - "\n", - "\n", - "\n", - "\n", - " \n", - " \n", - " \n", - "\n", - "\n", - "\n", - "\n", - "Profile results\n", - "\n", - "\n", - " in :-1\n", - "\n", - "#15 in eventloop.jl:38\n", - "\n", - "eventloop in eventloop.jl:8\n", - "\n", - "invokelatest in essentials.jl:1052\n", - "\n", - "#invokelatest#2 in essentials.jl:1055\n", - "\n", - "execute_request in execute_request.jl:67\n", - "\n", - "softscope_include_string in SoftGlobalScope.jl:65\n", - "\n", - "include_string in loading.jl:2643\n", - "\n", - "eval in boot.jl:430\n", - "\n", - "A_matrix_intermediate in In[208]:3\n", - "\n", - "W_matrix in In[46]:3\n", - "\n", - "zeros in array.jl:574\n", - "\n", - "zeros in array.jl:579\n", - "\n", - "fill! in array.jl:329\n", - "\n", - "setindex! in array.jl:976\n", - "\n", - "W_matrix in In[46]:5\n", - "\n", - "getindex in abstractarray.jl:1312\n", - "\n", - "_getindex in multidimensional.jl:915\n", - "\n", - "_unsafe_getindex in multidimensional.jl:929\n", - "\n", - "_unsafe_getindex! in multidimensional.jl:938\n", - "\n", - "macro expansion in cartesian.jl:64\n", - "\n", - "macro expansion in multidimensional.jl:940\n", - "\n", - "getindex in array.jl:919\n", - "\n", - "getindex in essentials.jl:917\n", - "\n", - "* in arraymath.jl:21\n", - "\n", - "broadcast_preserving_zero_d in broadcast.jl:856\n", - "\n", - "materialize in broadcast.jl:867\n", - "\n", - "copy in broadcast.jl:892\n", - "\n", - "similar in broadcast.jl:223\n", - "\n", - "similar in broadcast.jl:224\n", - "\n", - "similar in abstractarray.jl:867\n", - "\n", - "similar in abstractarray.jl:868\n", - "\n", - "Array in boot.jl:599\n", - "\n", - "Array in boot.jl:591\n", - "\n", - "Array in boot.jl:578\n", - "\n", - "GenericMemory in boot.jl:516\n", - "\n", - "materialize! in broadcast.jl:875\n", - "\n", - "materialize! in broadcast.jl:878\n", - "\n", - "copyto! in broadcast.jl:920\n", - "\n", - "copyto! in broadcast.jl:967\n", - "\n", - "macro expansion in simdloop.jl:77\n", - "\n", - "macro expansion in broadcast.jl:968\n", - "\n", - "getindex in broadcast.jl:605\n", - "\n", - "_broadcast_getindex in broadcast.jl:645\n", - "\n", - "_getindex in broadcast.jl:669\n", - "\n", - "_getindex in broadcast.jl:670\n", - "\n", - "_broadcast_getindex in broadcast.jl:639\n", - "\n", - "getindex in essentials.jl:917\n", - "\n", - "W_matrix in In[46]:6\n", - "\n", - "getindex in abstractarray.jl:1312\n", - "\n", - "_getindex in multidimensional.jl:915\n", - "\n", - "_unsafe_getindex in multidimensional.jl:929\n", - "\n", - "_unsafe_getindex! in multidimensional.jl:938\n", - "\n", - "macro expansion in cartesian.jl:64\n", - "\n", - "macro expansion in multidimensional.jl:940\n", - "\n", - "getindex in array.jl:919\n", - "\n", - "getindex in essentials.jl:917\n", - "\n", - "A_matrix_intermediate in In[208]:5\n", - "\n", - "zero in abstractarray.jl:1196\n", - "\n", - "fill! in array.jl:329\n", - "\n", - "setindex! in array.jl:976\n", - "\n", - "similar in array.jl:359\n", - "\n", - "Array in boot.jl:582\n", - "\n", - "new_as_memoryref in boot.jl:535\n", - "\n", - "GenericMemory in boot.jl:516\n", - "\n", - "A_matrix_intermediate in In[208]:7\n", - "\n", - "getindex in abstractarray.jl:1312\n", - "\n", - "_getindex in multidimensional.jl:915\n", - "\n", - "_unsafe_getindex in multidimensional.jl:927\n", - "\n", - "similar in abstractarray.jl:822\n", - "\n", - "similar in array.jl:361\n", - "\n", - "Array in boot.jl:591\n", - "\n", - "Array in boot.jl:578\n", - "\n", - "GenericMemory in boot.jl:516\n", - "\n", - "_unsafe_getindex in multidimensional.jl:929\n", - "\n", - "_unsafe_getindex! in multidimensional.jl:938\n", - "\n", - "macro expansion in cartesian.jl:64\n", - "\n", - "macro expansion in multidimensional.jl:940\n", - "\n", - "setindex! in array.jl:976\n", - "\n", - "materialize! in broadcast.jl:875\n", - "\n", - "materialize! in broadcast.jl:878\n", - "\n", - "copyto! in broadcast.jl:920\n", - "\n", - "copyto! in broadcast.jl:967\n", - "\n", - "macro expansion in simdloop.jl:75\n", - "\n", - "< in int.jl:83\n", - "\n", - "macro expansion in simdloop.jl:77\n", - "\n", - "macro expansion in broadcast.jl:968\n", - "\n", - "getindex in broadcast.jl:605\n", - "\n", - "_broadcast_getindex in broadcast.jl:645\n", - "\n", - "_getindex in broadcast.jl:669\n", - "\n", - "_broadcast_getindex in broadcast.jl:646\n", - "\n", - "_broadcast_getindex_evalf in broadcast.jl:673\n", - "\n", - "- in complex.jl:298\n", - "\n", - "- in float.jl:492\n", - "\n", - "_broadcast_getindex in broadcast.jl:646\n", - "\n", - "_broadcast_getindex_evalf in broadcast.jl:673\n", - "\n", - "/ in complex.jl:355\n", - "\n", - "/ in promotion.jl:432\n", - "\n", - "/ in float.jl:494\n", - "\n", - "A_matrix_intermediate in In[208]:8\n", - "\n", - "getindex in abstractarray.jl:1312\n", - "\n", - "_getindex in multidimensional.jl:915\n", - "\n", - "_unsafe_getindex in multidimensional.jl:929\n", - "\n", - "_unsafe_getindex! in multidimensional.jl:938\n", - "\n", - "macro expansion in cartesian.jl:64\n", - "\n", - "macro expansion in multidimensional.jl:940\n", - "\n", - "setindex! in array.jl:976\n", - "\n", - "A_matrix_intermediate in In[208]:11\n", - "\n", - "* in matmul.jl:130\n", - "\n", - "similar in array.jl:361\n", - "\n", - "Array in boot.jl:592\n", - "\n", - "Array in boot.jl:582\n", - "\n", - "new_as_memoryref in boot.jl:535\n", - "\n", - "GenericMemory in boot.jl:516\n", - "\n", - "mul! in matmul.jl:253\n", - "\n", - "mul! in matmul.jl:285\n", - "\n", - "_mul! in matmul.jl:287\n", - "\n", - "generic_matmatmul! in matmul.jl:381\n", - "\n", - "gemm_wrapper! in matmul.jl:657\n", - "\n", - "gemm! in blas.jl:1644\n", - "\n", - "A_matrix_intermediate in In[208]:15\n", - "\n", - "setindex! in array.jl:983\n", - "\n", - "* in matmul.jl:124\n", - "\n", - "similar in array.jl:361\n", - "\n", - "Array in boot.jl:592\n", - "\n", - "Array in boot.jl:582\n", - "\n", - "new_as_memoryref in boot.jl:535\n", - "\n", - "GenericMemory in boot.jl:516\n", - "\n", - "mul! in matmul.jl:253\n", - "\n", - "mul! in matmul.jl:285\n", - "\n", - "_mul! in matmul.jl:287\n", - "\n", - "generic_matmatmul! in matmul.jl:381\n", - "\n", - "gemm_wrapper! in matmul.jl:657\n", - "\n", - "gemm! in blas.jl:1644\n", - "\n", - "pfaffian in pfaffian.jl:148\n", - "\n", - "copyeigtype in cholesky.jl:82\n", - "\n", - "copyto! in array.jl:322\n", - "\n", - "copyto! in array.jl:299\n", - "\n", - "_copyto_impl! in array.jl:308\n", - "\n", - "unsafe_copyto! in genericmemory.jl:117\n", - "\n", - "pfaffian! in pfaffian.jl:162\n", - "\n", - "isskewsymmetric in skewhermitian.jl:105\n", - "\n", - "pfaffian! in pfaffian.jl:163\n", - "\n", - "_pfaffian! in pfaffian.jl:107\n", - "\n", - "argmaxabs in pfaffian.jl:12\n", - "\n", - "argmax in reduce.jl:1056\n", - "\n", - "findmax in reduce.jl:934\n", - "\n", - "_findmax in reduce.jl:935\n", - "\n", - "findmax in reduce.jl:905\n", - "\n", - "_findmax in reduce.jl:906\n", - "\n", - "mapfoldl in reduce.jl:175\n", - "\n", - "#mapfoldl#335 in reduce.jl:175\n", - "\n", - "mapfoldl_impl in reduce.jl:44\n", - "\n", - "foldl_impl in reduce.jl:48\n", - "\n", - "_foldl_impl in reduce.jl:62\n", - "\n", - "MappingRF in reduce.jl:100\n", - "\n", - "MappingRF in reduce.jl:100\n", - "\n", - "BottomRF in reduce.jl:86\n", - "\n", - "_rf_findmax in reduce.jl:907\n", - "\n", - "isless in float.jl:633\n", - "\n", - "< in int.jl:83\n", - "\n", - "_pfaffian! in pfaffian.jl:120\n", - "\n", - "materialize! in broadcast.jl:875\n", - "\n", - "materialize! in broadcast.jl:878\n", - "\n", - "copyto! in broadcast.jl:920\n", - "\n", - "copyto! in broadcast.jl:967\n", - "\n", - "macro expansion in simdloop.jl:77\n", - "\n", - "macro expansion in broadcast.jl:968\n", - "\n", - "getindex in broadcast.jl:605\n", - "\n", - "_broadcast_getindex in broadcast.jl:645\n", - "\n", - "_getindex in broadcast.jl:669\n", - "\n", - "_broadcast_getindex in broadcast.jl:639\n", - "\n", - "getindex in subarray.jl:343\n", - "\n", - "getindex in essentials.jl:917\n", - "\n", - "_pfaffian! in pfaffian.jl:124\n", - "\n", - "macro expansion in simdloop.jl:0\n", - "\n", - "macro expansion in simdloop.jl:75\n", - "\n", - "< in int.jl:83\n", - "\n", - "macro expansion in simdloop.jl:77\n", - "\n", - "macro expansion in pfaffian.jl:125\n", - "\n", - "getindex in array.jl:919\n", - "\n", - "_to_linear_index in abstractarray.jl:1347\n", - "\n", - "_sub2ind in abstractarray.jl:3048\n", - "\n", - "_sub2ind in abstractarray.jl:3064\n", - "\n", - "_sub2ind_recurse in abstractarray.jl:3080\n", - "\n", - "_sub2ind_recurse in abstractarray.jl:3080\n", - "\n", - "* in int.jl:88\n", - "\n", - "axes in abstractarray.jl:98\n", - "\n", - "size in array.jl:194\n", - "\n", - "getindex in essentials.jl:917\n", - "\n", - "setindex! in array.jl:983\n", - "\n", - "+ in complex.jl:297\n", - "\n", - "+ in float.jl:491\n", - "\n", - "mul_fast in fastmath.jl:215\n", - "\n", - "add_fast in fastmath.jl:163\n", - "\n", - "sub_fast in fastmath.jl:164\n", - "\n", - "sub_fast in fastmath.jl:208\n", - "\n", - "sub_fast in fastmath.jl:164\n", - "\n", - "getindex in subarray.jl:343\n", - "\n", - "getindex in essentials.jl:917\n", - "\n", - "macro expansion in simdloop.jl:78\n", - "\n", - "+ in int.jl:87\n", - "\n", - "\n", - "\n", - "\n", - "\n" - ], - "text/html": [ - "\n", - "\n", - "\n", - "\n", - "\n", - " \n", - " \n", - " \n", - "\n", - "\n", - "\n", - "\n", - "Profile results\n", - "\n", - "\n", - " in :-1\n", - "\n", - "#15 in eventloop.jl:38\n", - "\n", - "eventloop in eventloop.jl:8\n", - "\n", - "invokelatest in essentials.jl:1052\n", - "\n", - "#invokelatest#2 in essentials.jl:1055\n", - "\n", - "execute_request in execute_request.jl:67\n", - "\n", - "softscope_include_string in SoftGlobalScope.jl:65\n", - "\n", - "include_string in loading.jl:2643\n", - "\n", - "eval in boot.jl:430\n", - "\n", - "A_matrix_intermediate in In[208]:3\n", - "\n", - "W_matrix in In[46]:3\n", - "\n", - "zeros in array.jl:574\n", - "\n", - "zeros in array.jl:579\n", - "\n", - "fill! in array.jl:329\n", - "\n", - "setindex! in array.jl:976\n", - "\n", - "W_matrix in In[46]:5\n", - "\n", - "getindex in abstractarray.jl:1312\n", - "\n", - "_getindex in multidimensional.jl:915\n", - "\n", - "_unsafe_getindex in multidimensional.jl:929\n", - "\n", - "_unsafe_getindex! in multidimensional.jl:938\n", - "\n", - "macro expansion in cartesian.jl:64\n", - "\n", - "macro expansion in multidimensional.jl:940\n", - "\n", - "getindex in array.jl:919\n", - "\n", - "getindex in essentials.jl:917\n", - "\n", - "* in arraymath.jl:21\n", - "\n", - "broadcast_preserving_zero_d in broadcast.jl:856\n", - "\n", - "materialize in broadcast.jl:867\n", - "\n", - "copy in broadcast.jl:892\n", - "\n", - "similar in broadcast.jl:223\n", - "\n", - "similar in broadcast.jl:224\n", - "\n", - "similar in abstractarray.jl:867\n", - "\n", - "similar in abstractarray.jl:868\n", - "\n", - "Array in boot.jl:599\n", - "\n", - "Array in boot.jl:591\n", - "\n", - "Array in boot.jl:578\n", - "\n", - "GenericMemory in boot.jl:516\n", - "\n", - "materialize! in broadcast.jl:875\n", - "\n", - "materialize! in broadcast.jl:878\n", - "\n", - "copyto! in broadcast.jl:920\n", - "\n", - "copyto! in broadcast.jl:967\n", - "\n", - "macro expansion in simdloop.jl:77\n", - "\n", - "macro expansion in broadcast.jl:968\n", - "\n", - "getindex in broadcast.jl:605\n", - "\n", - "_broadcast_getindex in broadcast.jl:645\n", - "\n", - "_getindex in broadcast.jl:669\n", - "\n", - "_getindex in broadcast.jl:670\n", - "\n", - "_broadcast_getindex in broadcast.jl:639\n", - "\n", - "getindex in essentials.jl:917\n", - "\n", - "W_matrix in In[46]:6\n", - "\n", - "getindex in abstractarray.jl:1312\n", - "\n", - "_getindex in multidimensional.jl:915\n", - "\n", - "_unsafe_getindex in multidimensional.jl:929\n", - "\n", - "_unsafe_getindex! in multidimensional.jl:938\n", - "\n", - "macro expansion in cartesian.jl:64\n", - "\n", - "macro expansion in multidimensional.jl:940\n", - "\n", - "getindex in array.jl:919\n", - "\n", - "getindex in essentials.jl:917\n", - "\n", - "A_matrix_intermediate in In[208]:5\n", - "\n", - "zero in abstractarray.jl:1196\n", - "\n", - "fill! in array.jl:329\n", - "\n", - "setindex! in array.jl:976\n", - "\n", - "similar in array.jl:359\n", - "\n", - "Array in boot.jl:582\n", - "\n", - "new_as_memoryref in boot.jl:535\n", - "\n", - "GenericMemory in boot.jl:516\n", - "\n", - "A_matrix_intermediate in In[208]:7\n", - "\n", - "getindex in abstractarray.jl:1312\n", - "\n", - "_getindex in multidimensional.jl:915\n", - "\n", - "_unsafe_getindex in multidimensional.jl:927\n", - "\n", - "similar in abstractarray.jl:822\n", - "\n", - "similar in array.jl:361\n", - "\n", - "Array in boot.jl:591\n", - "\n", - "Array in boot.jl:578\n", - "\n", - "GenericMemory in boot.jl:516\n", - "\n", - "_unsafe_getindex in multidimensional.jl:929\n", - "\n", - "_unsafe_getindex! in multidimensional.jl:938\n", - "\n", - "macro expansion in cartesian.jl:64\n", - "\n", - "macro expansion in multidimensional.jl:940\n", - "\n", - "setindex! in array.jl:976\n", - "\n", - "materialize! in broadcast.jl:875\n", - "\n", - "materialize! in broadcast.jl:878\n", - "\n", - "copyto! in broadcast.jl:920\n", - "\n", - "copyto! in broadcast.jl:967\n", - "\n", - "macro expansion in simdloop.jl:75\n", - "\n", - "< in int.jl:83\n", - "\n", - "macro expansion in simdloop.jl:77\n", - "\n", - "macro expansion in broadcast.jl:968\n", - "\n", - "getindex in broadcast.jl:605\n", - "\n", - "_broadcast_getindex in broadcast.jl:645\n", - "\n", - "_getindex in broadcast.jl:669\n", - "\n", - "_broadcast_getindex in broadcast.jl:646\n", - "\n", - "_broadcast_getindex_evalf in broadcast.jl:673\n", - "\n", - "- in complex.jl:298\n", - "\n", - "- in float.jl:492\n", - "\n", - "_broadcast_getindex in broadcast.jl:646\n", - "\n", - "_broadcast_getindex_evalf in broadcast.jl:673\n", - "\n", - "/ in complex.jl:355\n", - "\n", - "/ in promotion.jl:432\n", - "\n", - "/ in float.jl:494\n", - "\n", - "A_matrix_intermediate in In[208]:8\n", - "\n", - "getindex in abstractarray.jl:1312\n", - "\n", - "_getindex in multidimensional.jl:915\n", - "\n", - "_unsafe_getindex in multidimensional.jl:929\n", - "\n", - "_unsafe_getindex! in multidimensional.jl:938\n", - "\n", - "macro expansion in cartesian.jl:64\n", - "\n", - "macro expansion in multidimensional.jl:940\n", - "\n", - "setindex! in array.jl:976\n", - "\n", - "A_matrix_intermediate in In[208]:11\n", - "\n", - "* in matmul.jl:130\n", - "\n", - "similar in array.jl:361\n", - "\n", - "Array in boot.jl:592\n", - "\n", - "Array in boot.jl:582\n", - "\n", - "new_as_memoryref in boot.jl:535\n", - "\n", - "GenericMemory in boot.jl:516\n", - "\n", - "mul! in matmul.jl:253\n", - "\n", - "mul! in matmul.jl:285\n", - "\n", - "_mul! in matmul.jl:287\n", - "\n", - "generic_matmatmul! in matmul.jl:381\n", - "\n", - "gemm_wrapper! in matmul.jl:657\n", - "\n", - "gemm! in blas.jl:1644\n", - "\n", - "A_matrix_intermediate in In[208]:15\n", - "\n", - "setindex! in array.jl:983\n", - "\n", - "* in matmul.jl:124\n", - "\n", - "similar in array.jl:361\n", - "\n", - "Array in boot.jl:592\n", - "\n", - "Array in boot.jl:582\n", - "\n", - "new_as_memoryref in boot.jl:535\n", - "\n", - "GenericMemory in boot.jl:516\n", - "\n", - "mul! in matmul.jl:253\n", - "\n", - "mul! in matmul.jl:285\n", - "\n", - "_mul! in matmul.jl:287\n", - "\n", - "generic_matmatmul! in matmul.jl:381\n", - "\n", - "gemm_wrapper! in matmul.jl:657\n", - "\n", - "gemm! in blas.jl:1644\n", - "\n", - "pfaffian in pfaffian.jl:148\n", - "\n", - "copyeigtype in cholesky.jl:82\n", - "\n", - "copyto! in array.jl:322\n", - "\n", - "copyto! in array.jl:299\n", - "\n", - "_copyto_impl! in array.jl:308\n", - "\n", - "unsafe_copyto! in genericmemory.jl:117\n", - "\n", - "pfaffian! in pfaffian.jl:162\n", - "\n", - "isskewsymmetric in skewhermitian.jl:105\n", - "\n", - "pfaffian! in pfaffian.jl:163\n", - "\n", - "_pfaffian! in pfaffian.jl:107\n", - "\n", - "argmaxabs in pfaffian.jl:12\n", - "\n", - "argmax in reduce.jl:1056\n", - "\n", - "findmax in reduce.jl:934\n", - "\n", - "_findmax in reduce.jl:935\n", - "\n", - "findmax in reduce.jl:905\n", - "\n", - "_findmax in reduce.jl:906\n", - "\n", - "mapfoldl in reduce.jl:175\n", - "\n", - "#mapfoldl#335 in reduce.jl:175\n", - "\n", - "mapfoldl_impl in reduce.jl:44\n", - "\n", - "foldl_impl in reduce.jl:48\n", - "\n", - "_foldl_impl in reduce.jl:62\n", - "\n", - "MappingRF in reduce.jl:100\n", - "\n", - "MappingRF in reduce.jl:100\n", - "\n", - "BottomRF in reduce.jl:86\n", - "\n", - "_rf_findmax in reduce.jl:907\n", - "\n", - "isless in float.jl:633\n", - "\n", - "< in int.jl:83\n", - "\n", - "_pfaffian! in pfaffian.jl:120\n", - "\n", - "materialize! in broadcast.jl:875\n", - "\n", - "materialize! in broadcast.jl:878\n", - "\n", - "copyto! in broadcast.jl:920\n", - "\n", - "copyto! in broadcast.jl:967\n", - "\n", - "macro expansion in simdloop.jl:77\n", - "\n", - "macro expansion in broadcast.jl:968\n", - "\n", - "getindex in broadcast.jl:605\n", - "\n", - "_broadcast_getindex in broadcast.jl:645\n", - "\n", - "_getindex in broadcast.jl:669\n", - "\n", - "_broadcast_getindex in broadcast.jl:639\n", - "\n", - "getindex in subarray.jl:343\n", - "\n", - "getindex in essentials.jl:917\n", - "\n", - "_pfaffian! in pfaffian.jl:124\n", - "\n", - "macro expansion in simdloop.jl:0\n", - "\n", - "macro expansion in simdloop.jl:75\n", - "\n", - "< in int.jl:83\n", - "\n", - "macro expansion in simdloop.jl:77\n", - "\n", - "macro expansion in pfaffian.jl:125\n", - "\n", - "getindex in array.jl:919\n", - "\n", - "_to_linear_index in abstractarray.jl:1347\n", - "\n", - "_sub2ind in abstractarray.jl:3048\n", - "\n", - "_sub2ind in abstractarray.jl:3064\n", - "\n", - "_sub2ind_recurse in abstractarray.jl:3080\n", - "\n", - "_sub2ind_recurse in abstractarray.jl:3080\n", - "\n", - "* in int.jl:88\n", - "\n", - "axes in abstractarray.jl:98\n", - "\n", - "size in array.jl:194\n", - "\n", - "getindex in essentials.jl:917\n", - "\n", - "setindex! in array.jl:983\n", - "\n", - "+ in complex.jl:297\n", - "\n", - "+ in float.jl:491\n", - "\n", - "mul_fast in fastmath.jl:215\n", - "\n", - "add_fast in fastmath.jl:163\n", - "\n", - "sub_fast in fastmath.jl:164\n", - "\n", - "sub_fast in fastmath.jl:208\n", - "\n", - "sub_fast in fastmath.jl:164\n", - "\n", - "getindex in subarray.jl:343\n", - "\n", - "getindex in essentials.jl:917\n", - "\n", - "macro expansion in simdloop.jl:78\n", - "\n", - "+ in int.jl:87\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n" - ], - "text/plain": [ - "ProfileSVG.FGConfig(Node(FlameGraphs.NodeData(ip:0x0, 0x00, 1:561)), Dict{Symbol, Any}(), FlameGraphs.FlameColors(ColorTypes.RGB{FixedPointNumbers.N0f8}[RGB{N0f8}(0.882,0.698,1.0), RGB{N0f8}(0.435,0.863,0.569), RGB{N0f8}(0.0,0.71,0.545), RGB{N0f8}(0.173,0.639,1.0)], RGB{N0f8}(1.0,1.0,1.0), RGB{N0f8}(0.0,0.0,0.0), ColorTypes.RGB{FixedPointNumbers.N0f8}[RGB{N0f8}(0.953,0.0,0.302), RGB{N0f8}(0.894,0.0,0.255), RGB{N0f8}(0.831,0.129,0.216), RGB{N0f8}(0.773,0.192,0.184)], ColorTypes.RGB{FixedPointNumbers.N0f8}[RGB{N0f8}(1.0,0.627,0.0), RGB{N0f8}(1.0,0.643,0.0), RGB{N0f8}(0.965,0.651,0.039), RGB{N0f8}(0.894,0.655,0.11)]), :fcolor, :fcolor, 1.0, false, 50, 2000, 960.0, 0.0, 2.0, \"inherit\", 12.0, false, :none, 0.001, \"Profile results\")" - ] - }, - "execution_count": 229, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "@profview pfaffian(A_matrix_intermediate(reg1.state' * reg2.state))" - ] - }, - { - "cell_type": "code", - "execution_count": 230, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "\u001b[36mnqubits: 2\u001b[39m\n", - "\u001b[34m\u001b[1mchain\u001b[22m\u001b[39m\n", - "├─ rot(\u001b[36mnqubits: 2\u001b[39m\n", - "\u001b[36m\u001b[1mkron\u001b[22m\u001b[39m\n", - "├─ \u001b[37m\u001b[1m1\u001b[22m\u001b[39m=>X\n", - "└─ \u001b[37m\u001b[1m2\u001b[22m\u001b[39m=>X, 0.1)\n", - "└─ \u001b[36m\u001b[1mput on (\u001b[22m\u001b[39m\u001b[36m\u001b[1m1\u001b[22m\u001b[39m\u001b[36m\u001b[1m)\u001b[22m\u001b[39m\n", - " └─ rot(Z, 0.5)\n" - ] - }, - "execution_count": 230, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "c1 = chain(2, rot(kron(2, 1=>X, 2=>X), 0.1), put(1 => Rz(0.5)))" - ] - }, - { - "cell_type": "code", - "execution_count": 231, - "metadata": {}, - "outputs": [ - { - "ename": "LoadError", - "evalue": "register size 400 mismatch with block size 2", - "output_type": "error", - "traceback": [ - "register size 400 mismatch with block size 2", - "", - "Stacktrace:", - " [1] _check_size", - " @ ~/.julia/packages/YaoBlocks/DuDXk/src/abstract_block.jl:356 [inlined]", - " [2] apply!", - " @ ~/.julia/packages/YaoBlocks/DuDXk/src/abstract_block.jl:31 [inlined]", - " [3] |>", - " @ ~/.julia/packages/YaoBlocks/DuDXk/src/abstract_block.jl:68 [inlined]", - " [4] _eval(p::Pair{MajoranaReg{Float64}, ChainBlock{2}})", - " @ YaoBlocks.AD ~/.julia/packages/YaoBlocks/DuDXk/src/autodiff/specializes.jl:24", - " [5] fidelity(p1::MajoranaReg{Float64}, p2::Pair{MajoranaReg{Float64}, ChainBlock{2}})", - " @ YaoBlocks.AD ~/.julia/packages/YaoBlocks/DuDXk/src/autodiff/specializes.jl:26", - " [6] top-level scope", - " @ In[231]:1" - ] - } - ], - "source": [ - "fidelity(reg1, reg2 => c1)" - ] - }, - { - "cell_type": "code", - "execution_count": 63, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "(MajoranaReg{Float64}(2), MajoranaReg{Float64}(2) => [0.0, 0.0])" - ] - }, - "execution_count": 63, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "in1δ, in2δ = Yao.AD.fidelity_g(reg1, reg2 => c1)" - ] - }, - { - "cell_type": "code", - "execution_count": 64, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "(ArrayReg{2, ComplexF64, Array...}\n", - " active qubits: 2/2\n", - " nlevel: 2, ArrayReg{2, ComplexF64, Array...}\n", - " active qubits: 2/2\n", - " nlevel: 2 => Any[-1.313537584359156e-16, 7.199904224175629e-18])" - ] - }, - "execution_count": 64, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "areg1 = FLOYao.majorana2arrayreg(reg1)\n", - "areg2 = FLOYao.majorana2arrayreg(reg2)\n", - "in1δ, in2δ = Yao.AD.fidelity_g(areg1, areg2 => c1)" - ] - }, - { - "cell_type": "code", - "execution_count": 232, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "0.8087280431959538" - ] - }, - "execution_count": 232, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "0.23665 / 0.29262" - ] - }, - { - "cell_type": "code", - "execution_count": 233, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "W_matrix (generic function with 1 method)" - ] - }, - "execution_count": 233, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "function W_matrix(R::Matrix{T}) where {T}\n", - " n = size(R, 1) ÷ 2\n", - " W = zeros(Complex{T}, 2n, 2n)\n", - " for i in 1:2:2n\n", - " W[:,i] .= R[:,i] .- 1im * R[:,i+1]\n", - " W[:,i+1] .= R[:,i] .+ 1im * R[:,i+1]\n", - " end\n", - " return W\n", - "end" - ] - }, - { - "cell_type": "code", - "execution_count": 234, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "W_matrix_tullio (generic function with 1 method)" - ] - }, - "execution_count": 234, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "function W_matrix_tullio(R::Matrix{T}) where {T}\n", - " n = size(R, 1) ÷ 2\n", - " R = reshape(R, 2, n, 2, n)\n", - " W = zeros(Complex{T}, 2, n, 2, n)\n", - " @tullio W[μ,m,α,i] = R[μ,m,1,i] + 1im*(-1)^α * R[μ,m,2,i]\n", - " return reshape(W, 2n, 2n)\n", - "end" - ] - }, - { - "cell_type": "code", - "execution_count": 235, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "Chairmarks.Benchmark: 18 samples with 1 evaluation.\n", - " Range \u001b[90m(\u001b[39m\u001b[36m\u001b[1mmin\u001b[22m\u001b[39m … \u001b[35mmax\u001b[39m\u001b[90m): \u001b[39m\u001b[36m\u001b[1m4.997 ms\u001b[22m\u001b[39m … \u001b[35m9.712 ms\u001b[39m \u001b[90m┊\u001b[39m GC \u001b[90m(\u001b[39mmin … max\u001b[90m): \u001b[39m30.59% … 63.07%\n", - " Time \u001b[90m(\u001b[39m\u001b[34m\u001b[1mmedian\u001b[22m\u001b[39m\u001b[90m): \u001b[39m\u001b[34m\u001b[1m5.376 ms \u001b[22m\u001b[39m\u001b[90m┊\u001b[39m GC \u001b[90m(\u001b[39mmedian\u001b[90m): \u001b[39m32.08%\n", - " Time \u001b[90m(\u001b[39m\u001b[32m\u001b[1mmean\u001b[22m\u001b[39m ± \u001b[32mσ\u001b[39m\u001b[90m): \u001b[39m\u001b[32m\u001b[1m5.588 ms\u001b[22m\u001b[39m ± \u001b[32m1.054 ms\u001b[39m \u001b[90m┊\u001b[39m GC \u001b[90m(\u001b[39mmean ± σ\u001b[90m): \u001b[39m33.67% ± 7.37%\n", - "\n", - " \u001b[39m█\u001b[39m▃\u001b[39m \u001b[39m▃\u001b[34m█\u001b[39m\u001b[39m \u001b[39m▃\u001b[32m█\u001b[39m\u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \n", - " \u001b[39m█\u001b[39m█\u001b[39m▇\u001b[39m█\u001b[34m█\u001b[39m\u001b[39m▁\u001b[39m█\u001b[32m█\u001b[39m\u001b[39m▇\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▇\u001b[39m \u001b[39m▁\n", - " 5 ms\u001b[90m Histogram: frequency by time\u001b[39m 9.71 ms \u001b[0m\u001b[1m<\u001b[22m\n", - "\n", - " Memory estimate\u001b[90m: \u001b[39m\u001b[33m29.44 MiB\u001b[39m, allocs estimate\u001b[90m: \u001b[39m\u001b[33m7207\u001b[39m." - ] - }, - "execution_count": 235, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "@bs W_matrix(reg1.state)" - ] - }, - { - "cell_type": "code", - "execution_count": 236, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "800×800 Matrix{ComplexF64}:\n", - " -0.01+0.01im -0.01-0.01im 0.02-0.02im … -0.01-0.02im -0.01+0.02im\n", - " 0.04+0.01im 0.04-0.01im 0.02+0.03im -0.0-0.0im -0.0+0.0im\n", - " 0.0-0.01im 0.0+0.01im 0.02-0.0im -0.0-0.0im -0.0+0.0im\n", - " 0.08-0.03im 0.08+0.03im 0.02+0.01im -0.0-0.0im -0.0+0.0im\n", - " -0.04+0.11im -0.04-0.11im 0.01+0.03im -0.0-0.0im -0.0+0.0im\n", - " 0.02+0.03im 0.02-0.03im 0.01+0.04im … -0.0+0.0im -0.0-0.0im\n", - " -0.01-0.09im -0.01+0.09im 0.04-0.03im -0.0-0.0im -0.0+0.0im\n", - " 0.03-0.07im 0.03+0.07im -0.11+0.05im -0.0+0.0im -0.0-0.0im\n", - " 0.05+0.06im 0.05-0.06im 0.02+0.07im 0.01+0.0im 0.01-0.0im\n", - " 0.08-0.05im 0.08+0.05im -0.01+0.03im 0.0+0.0im 0.0-0.0im\n", - " 0.04-0.04im 0.04+0.04im -0.06-0.07im … -0.01-0.0im -0.01+0.0im\n", - " -0.02-0.0im -0.02+0.0im -0.04+0.03im 0.0+0.0im 0.0-0.0im\n", - " 0.05-0.01im 0.05+0.01im -0.06+0.04im 0.0+0.0im 0.0-0.0im\n", - " ⋮ ⋱ \n", - " -0.0-0.0im -0.0+0.0im 0.0+0.01im -0.01-0.0im -0.01+0.0im\n", - " 0.0-0.0im 0.0+0.0im -0.01-0.0im 0.01+0.0im 0.01-0.0im\n", - " -0.01-0.0im -0.01+0.0im -0.0-0.0im … 0.0+0.0im 0.0-0.0im\n", - " 0.0-0.01im 0.0+0.01im 0.0+0.0im -0.0-0.0im -0.0+0.0im\n", - " 0.0+0.0im 0.0-0.0im 0.0-0.0im -0.0+0.0im -0.0-0.0im\n", - " 0.0+0.0im 0.0-0.0im 0.0+0.0im -0.0-0.0im -0.0+0.0im\n", - " -0.0+0.01im -0.0-0.01im -0.01+0.0im -0.0-0.0im -0.0+0.0im\n", - " -0.0-0.01im -0.0+0.01im -0.0-0.0im … 0.0-0.0im 0.0+0.0im\n", - " 0.0-0.0im 0.0+0.0im 0.0-0.0im -0.0-0.0im -0.0+0.0im\n", - " -0.0+0.0im -0.0-0.0im 0.0+0.0im -0.0-0.0im -0.0+0.0im\n", - " 0.0+0.0im 0.0-0.0im 0.0+0.01im 0.99-0.0im 0.99+0.0im\n", - " 0.0-0.0im 0.0+0.0im -0.0+0.0im 0.0-1.0im 0.0+1.0im" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "matdisplay(W_matrix_tullio(reg1.state))" - ] - }, - { - "cell_type": "code", - "execution_count": 237, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "A_matrix (generic function with 1 method)" - ] - }, - "execution_count": 237, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "function A_matrix(reg::MajoranaReg{T}) where {T}\n", - " n = nqubits(reg)\n", - " R = reg.state\n", - " W = W_matrix(R)\n", - " # matdisplay(W)\n", - "\n", - " # Pretty sure this could be sped up with some explicit for loops\n", - " A = transpose(W) * (I(n) ⊗ [1 -1im; 1im 1]) * W / 4\n", - " #A_sym = transpose(W) * W / 4\n", - " # matdisplay(A_sym)\n", - " #A_asym = transpose(W) * (I(n) ⊗ [0 -1im; 1im 0]) * W / 4\n", - " # matdisplay(A_asym)\n", - " \n", - " #A = A_sym + A_asym\n", - "\n", - " # Take the _correct_ anti-symmetric part of it!\n", - " for i in 1:2n\n", - " for j in i+1:2n\n", - " A[j,i] = -A[i,j]\n", - " end\n", - " end\n", - " A[diagind(A)] .= 0\n", - " return A\n", - "end" - ] - }, - { - "cell_type": "code", - "execution_count": 238, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "A_matrix_intermediate (generic function with 1 method)" - ] - }, - "execution_count": 238, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "function A_matrix_intermediate(R)\n", - " n = size(R, 1) ÷ 2\n", - " W = W_matrix(R)\n", - "\n", - " gW = zero(W)\n", - " for i in 1:2:2n\n", - " gW[i,:] .= (W[i,:] .- 1im .* W[i+1,:]) ./ 4\n", - " gW[i+1,:] .= (1im .* W[i,:] .+ W[i+1,:]) ./ 4\n", - " end\n", - "\n", - " A = transpose(W) * gW\n", - " # take the correct anti-symmetric part\n", - " for i in 1:2n\n", - " for j in i+1:2n\n", - " A[j,i] = -A[i,j]\n", - " end\n", - " end\n", - " A[diagind(A)] .= 0\n", - "\n", - " return A\n", - "end" - ] - }, - { - "cell_type": "code", - "execution_count": 239, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "A_matrix_manual (generic function with 1 method)" - ] - }, - "execution_count": 239, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# a neat operator do take an inner product w/o complex conjugation\n", - "⊙(a, b) = transpose(a) * b\n", - "\n", - "function A_matrix_manual(reg::MajoranaReg{T}) where {T}\n", - " n = 2nqubits(reg)\n", - " R = reg.state\n", - " W = W_matrix(R)\n", - "\n", - " A = zero(W)\n", - " for j in 1:n, i in 1:j-1\n", - " val = @views (W[1:2:n,i] ⊙ W[1:2:n,j] + 1im * W[2:2:n,i] ⊙ W[1:2:n,j] \n", - " - 1im * W[1:2:n,i] ⊙ W[2:2:n,j] + W[2:2:n,i] ⊙ W[2:2:n,j]) / 4\n", - " A[i,j] = val\n", - " A[j,i] = -val\n", - " end\n", - " return A\n", - "end" - ] - }, - { - "cell_type": "code", - "execution_count": 240, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "1.8222158904579628e-14" - ] - }, - "execution_count": 240, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "A_matrix(reg1) - A_matrix_manual(reg1) |> norm" - ] - }, - { - "cell_type": "code", - "execution_count": 241, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "Chairmarks.Benchmark: 2 samples with 1 evaluation.\n", - " Range \u001b[90m(\u001b[39m\u001b[36m\u001b[1mmin\u001b[22m\u001b[39m … \u001b[35mmax\u001b[39m\u001b[90m): \u001b[39m\u001b[36m\u001b[1m74.978 ms\u001b[22m\u001b[39m … \u001b[35m80.160 ms\u001b[39m \u001b[90m┊\u001b[39m GC \u001b[90m(\u001b[39mmin … max\u001b[90m): \u001b[39m0.00% … 10.28%\n", - " Time \u001b[90m(\u001b[39m\u001b[34m\u001b[1mmedian\u001b[22m\u001b[39m\u001b[90m): \u001b[39m\u001b[34m\u001b[1m77.569 ms \u001b[22m\u001b[39m\u001b[90m┊\u001b[39m GC \u001b[90m(\u001b[39mmedian\u001b[90m): \u001b[39m5.14%\n", - " Time \u001b[90m(\u001b[39m\u001b[32m\u001b[1mmean\u001b[22m\u001b[39m ± \u001b[32mσ\u001b[39m\u001b[90m): \u001b[39m\u001b[32m\u001b[1m77.569 ms\u001b[22m\u001b[39m ± \u001b[32m 3.664 ms\u001b[39m \u001b[90m┊\u001b[39m GC \u001b[90m(\u001b[39mmean ± σ\u001b[90m): \u001b[39m5.14% ± 7.27%\n", - "\n", - " \u001b[34m█\u001b[39m\u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[32m \u001b[39m\u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m█\u001b[39m \u001b[39m \n", - " \u001b[34m█\u001b[39m\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[32m▁\u001b[39m\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m█\u001b[39m \u001b[39m▁\n", - " 75 ms\u001b[90m Histogram: frequency by time\u001b[39m 80.2 ms \u001b[0m\u001b[1m<\u001b[22m\n", - "\n", - " Memory estimate\u001b[90m: \u001b[39m\u001b[33m85.34 MiB\u001b[39m, allocs estimate\u001b[90m: \u001b[39m\u001b[33m1108268\u001b[39m." - ] - }, - "execution_count": 241, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "@bs A_matrix(reg1)" - ] - }, - { - "cell_type": "code", - "execution_count": 242, - "metadata": {}, - "outputs": [ - { - "ename": "LoadError", - "evalue": "MethodError: no method matching size(::MajoranaReg{Float64}, ::Int64)\nThe function `size` exists, but no method is defined for this combination of argument types.\n\n\u001b[0mClosest candidates are:\n\u001b[0m size(\u001b[91m::BitVector\u001b[39m, ::Integer)\n\u001b[0m\u001b[90m @\u001b[39m \u001b[90mBase\u001b[39m \u001b[90m\u001b[4mbitarray.jl:107\u001b[24m\u001b[39m\n\u001b[0m size(\u001b[91m::Luxor.Table\u001b[39m, ::Int64)\n\u001b[0m\u001b[90m @\u001b[39m \u001b[35mLuxor\u001b[39m \u001b[90m~/.julia/packages/Luxor/0kqwd/src/\u001b[39m\u001b[90m\u001b[4mTable.jl:227\u001b[24m\u001b[39m\n\u001b[0m size(\u001b[91m::Type{<:Diagonal{T, StaticArraysCore.SVector{N, T}} where T}\u001b[39m, ::Int64) where N\n\u001b[0m\u001b[90m @\u001b[39m \u001b[33mStaticArrays\u001b[39m \u001b[90m~/.julia/packages/StaticArrays/9Yt0H/src/\u001b[39m\u001b[90m\u001b[4mSDiagonal.jl:18\u001b[24m\u001b[39m\n\u001b[0m ...\n", - "output_type": "error", - "traceback": [ - "MethodError: no method matching size(::MajoranaReg{Float64}, ::Int64)\nThe function `size` exists, but no method is defined for this combination of argument types.\n\n\u001b[0mClosest candidates are:\n\u001b[0m size(\u001b[91m::BitVector\u001b[39m, ::Integer)\n\u001b[0m\u001b[90m @\u001b[39m \u001b[90mBase\u001b[39m \u001b[90m\u001b[4mbitarray.jl:107\u001b[24m\u001b[39m\n\u001b[0m size(\u001b[91m::Luxor.Table\u001b[39m, ::Int64)\n\u001b[0m\u001b[90m @\u001b[39m \u001b[35mLuxor\u001b[39m \u001b[90m~/.julia/packages/Luxor/0kqwd/src/\u001b[39m\u001b[90m\u001b[4mTable.jl:227\u001b[24m\u001b[39m\n\u001b[0m size(\u001b[91m::Type{<:Diagonal{T, StaticArraysCore.SVector{N, T}} where T}\u001b[39m, ::Int64) where N\n\u001b[0m\u001b[90m @\u001b[39m \u001b[33mStaticArrays\u001b[39m \u001b[90m~/.julia/packages/StaticArrays/9Yt0H/src/\u001b[39m\u001b[90m\u001b[4mSDiagonal.jl:18\u001b[24m\u001b[39m\n\u001b[0m ...\n", - "", - "Stacktrace:", - " [1] A_matrix_intermediate(R::MajoranaReg{Float64})", - " @ Main ./In[238]:2", - " [2] (::var\"#101#102\")()", - " @ Main ~/.julia/packages/Chairmarks/msbgo/src/macro_tools.jl:52", - " [3] _benchmark(f::var\"#101#102\", map::typeof(Core.donotdelete), reduction::typeof(Chairmarks.default_reduction), args::Tuple{}, evals::Int64, warmup::Bool)", - " @ Chairmarks ~/.julia/packages/Chairmarks/msbgo/src/benchmarking.jl:124", - " [4] (::Chairmarks.var\"#bench#8\"{Bool, typeof(Core.donotdelete), typeof(Chairmarks.default_reduction), Nothing, var\"#101#102\", Nothing, Tuple{}})(evals::Int64, warmup::Bool)", - " @ Chairmarks ~/.julia/packages/Chairmarks/msbgo/src/benchmarking.jl:40", - " [5] benchmark(init::Any, setup::Any, f::Any, teardown::Any; evals::Union{Nothing, Int64}, samples::Union{Nothing, Int64}, seconds::Union{Nothing, Real}, gc::Bool, checksum::Bool, _map::Any, _reduction::Any)", - " @ Chairmarks ~/.julia/packages/Chairmarks/msbgo/src/benchmarking.jl:50", - " [6] benchmark", - " @ ~/.julia/packages/Chairmarks/msbgo/src/benchmarking.jl:20 [inlined]", - " [7] benchmark (repeats 2 times)", - " @ ~/.julia/packages/Chairmarks/msbgo/src/benchmarking.jl:14 [inlined]", - " [8] benchmark(f::Function)", - " @ Chairmarks ~/.julia/packages/Chairmarks/msbgo/src/benchmarking.jl:13", - " [9] top-level scope", - " @ In[242]:1" - ] - } - ], - "source": [ - "@bs A_matrix_intermediate(reg1)" - ] - }, - { - "cell_type": "code", - "execution_count": 196, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "Chairmarks.Benchmark: 1 sample with 1 evaluation.\n", - " Single result which took \u001b[34m1.234 s\u001b[39m (18.20% GC) to evaluate,\n", - " with a memory estimate of \u001b[33m3.89 GiB\u001b[39m, over \u001b[33m1924810\u001b[39m allocations." - ] - }, - "execution_count": 196, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "@bs A_matrix_manual(reg1)" - ] - }, - { - "cell_type": "code", - "execution_count": 193, - "metadata": {}, - "outputs": [ - { - "data": { - "image/svg+xml": [ - "\n", - "\n", - "\n", - "\n", - " \n", - " \n", - " \n", - "\n", - "\n", - "\n", - "\n", - "Profile results\n", - "\n", - "\n", - " in :-1\n", - "\n", - "#15 in eventloop.jl:38\n", - "\n", - "eventloop in eventloop.jl:8\n", - "\n", - "invokelatest in essentials.jl:1052\n", - "\n", - "#invokelatest#2 in essentials.jl:1055\n", - "\n", - "execute_request in execute_request.jl:67\n", - "\n", - "softscope_include_string in SoftGlobalScope.jl:65\n", - "\n", - "include_string in loading.jl:2643\n", - "\n", - "eval in boot.jl:430\n", - "\n", - "A_matrix_intermediate in In[182]:4\n", - "\n", - "W_matrix in In[46]:3\n", - "\n", - "zeros in array.jl:574\n", - "\n", - "zeros in array.jl:579\n", - "\n", - "fill! in array.jl:329\n", - "\n", - "setindex! in array.jl:976\n", - "\n", - "W_matrix in In[46]:5\n", - "\n", - "getindex in abstractarray.jl:1312\n", - "\n", - "_getindex in multidimensional.jl:915\n", - "\n", - "_unsafe_getindex in multidimensional.jl:929\n", - "\n", - "_unsafe_getindex! in multidimensional.jl:938\n", - "\n", - "macro expansion in cartesian.jl:64\n", - "\n", - "macro expansion in multidimensional.jl:940\n", - "\n", - "setindex! in array.jl:976\n", - "\n", - "* in arraymath.jl:21\n", - "\n", - "broadcast_preserving_zero_d in broadcast.jl:856\n", - "\n", - "materialize in broadcast.jl:867\n", - "\n", - "copy in broadcast.jl:892\n", - "\n", - "copyto! in broadcast.jl:920\n", - "\n", - "copyto! in broadcast.jl:967\n", - "\n", - "macro expansion in simdloop.jl:77\n", - "\n", - "macro expansion in broadcast.jl:968\n", - "\n", - "setindex! in array.jl:976\n", - "\n", - "materialize! in broadcast.jl:875\n", - "\n", - "materialize! in broadcast.jl:878\n", - "\n", - "copyto! in broadcast.jl:920\n", - "\n", - "copyto! in broadcast.jl:967\n", - "\n", - "macro expansion in simdloop.jl:77\n", - "\n", - "macro expansion in broadcast.jl:968\n", - "\n", - "getindex in broadcast.jl:605\n", - "\n", - "_broadcast_getindex in broadcast.jl:645\n", - "\n", - "_getindex in broadcast.jl:669\n", - "\n", - "_getindex in broadcast.jl:670\n", - "\n", - "_broadcast_getindex in broadcast.jl:639\n", - "\n", - "getindex in essentials.jl:917\n", - "\n", - "W_matrix in In[46]:6\n", - "\n", - "* in arraymath.jl:21\n", - "\n", - "broadcast_preserving_zero_d in broadcast.jl:856\n", - "\n", - "materialize in broadcast.jl:867\n", - "\n", - "copy in broadcast.jl:892\n", - "\n", - "similar in broadcast.jl:223\n", - "\n", - "similar in broadcast.jl:224\n", - "\n", - "similar in abstractarray.jl:867\n", - "\n", - "similar in abstractarray.jl:868\n", - "\n", - "Array in boot.jl:599\n", - "\n", - "Array in boot.jl:591\n", - "\n", - "Array in boot.jl:578\n", - "\n", - "GenericMemory in boot.jl:516\n", - "\n", - "materialize! in broadcast.jl:875\n", - "\n", - "materialize! in broadcast.jl:878\n", - "\n", - "copyto! in broadcast.jl:920\n", - "\n", - "copyto! in broadcast.jl:967\n", - "\n", - "macro expansion in simdloop.jl:77\n", - "\n", - "macro expansion in broadcast.jl:968\n", - "\n", - "getindex in broadcast.jl:605\n", - "\n", - "_broadcast_getindex in broadcast.jl:645\n", - "\n", - "_getindex in broadcast.jl:669\n", - "\n", - "_getindex in broadcast.jl:670\n", - "\n", - "_broadcast_getindex in broadcast.jl:639\n", - "\n", - "getindex in essentials.jl:917\n", - "\n", - "A_matrix_intermediate in In[182]:6\n", - "\n", - "zero in abstractarray.jl:1196\n", - "\n", - "fill! in array.jl:329\n", - "\n", - "setindex! in array.jl:976\n", - "\n", - "similar in array.jl:359\n", - "\n", - "Array in boot.jl:582\n", - "\n", - "new_as_memoryref in boot.jl:535\n", - "\n", - "GenericMemory in boot.jl:516\n", - "\n", - "A_matrix_intermediate in In[182]:8\n", - "\n", - "getindex in abstractarray.jl:1312\n", - "\n", - "_getindex in multidimensional.jl:915\n", - "\n", - "_unsafe_getindex in multidimensional.jl:927\n", - "\n", - "similar in abstractarray.jl:822\n", - "\n", - "similar in array.jl:361\n", - "\n", - "Array in boot.jl:591\n", - "\n", - "Array in boot.jl:578\n", - "\n", - "GenericMemory in boot.jl:516\n", - "\n", - "materialize! in broadcast.jl:875\n", - "\n", - "materialize! in broadcast.jl:878\n", - "\n", - "copyto! in broadcast.jl:920\n", - "\n", - "copyto! in broadcast.jl:967\n", - "\n", - "macro expansion in simdloop.jl:75\n", - "\n", - "< in int.jl:83\n", - "\n", - "macro expansion in simdloop.jl:77\n", - "\n", - "macro expansion in broadcast.jl:968\n", - "\n", - "getindex in broadcast.jl:605\n", - "\n", - "_broadcast_getindex in broadcast.jl:645\n", - "\n", - "_getindex in broadcast.jl:669\n", - "\n", - "_broadcast_getindex in broadcast.jl:645\n", - "\n", - "_getindex in broadcast.jl:669\n", - "\n", - "_broadcast_getindex in broadcast.jl:639\n", - "\n", - "getindex in essentials.jl:917\n", - "\n", - "_broadcast_getindex in broadcast.jl:646\n", - "\n", - "_broadcast_getindex_evalf in broadcast.jl:673\n", - "\n", - "- in complex.jl:298\n", - "\n", - "- in float.jl:492\n", - "\n", - "A_matrix_intermediate in In[182]:9\n", - "\n", - "getindex in abstractarray.jl:1312\n", - "\n", - "_getindex in multidimensional.jl:915\n", - "\n", - "_unsafe_getindex in multidimensional.jl:927\n", - "\n", - "similar in abstractarray.jl:822\n", - "\n", - "similar in array.jl:361\n", - "\n", - "Array in boot.jl:591\n", - "\n", - "Array in boot.jl:578\n", - "\n", - "GenericMemory in boot.jl:516\n", - "\n", - "_unsafe_getindex in multidimensional.jl:929\n", - "\n", - "_unsafe_getindex! in multidimensional.jl:938\n", - "\n", - "macro expansion in cartesian.jl:64\n", - "\n", - "macro expansion in multidimensional.jl:940\n", - "\n", - "setindex! in array.jl:976\n", - "\n", - "materialize! in broadcast.jl:875\n", - "\n", - "materialize! in broadcast.jl:878\n", - "\n", - "copyto! in broadcast.jl:920\n", - "\n", - "copyto! in broadcast.jl:967\n", - "\n", - "macro expansion in simdloop.jl:77\n", - "\n", - "macro expansion in broadcast.jl:968\n", - "\n", - "setindex! in subarray.jl:384\n", - "\n", - "setindex! in array.jl:976\n", - "\n", - "A_matrix_intermediate in In[182]:12\n", - "\n", - "* in matmul.jl:130\n", - "\n", - "similar in array.jl:361\n", - "\n", - "Array in boot.jl:592\n", - "\n", - "Array in boot.jl:582\n", - "\n", - "new_as_memoryref in boot.jl:535\n", - "\n", - "GenericMemory in boot.jl:516\n", - "\n", - "mul! in matmul.jl:253\n", - "\n", - "mul! in matmul.jl:285\n", - "\n", - "_mul! in matmul.jl:287\n", - "\n", - "generic_matmatmul! in matmul.jl:381\n", - "\n", - "gemm_wrapper! in matmul.jl:657\n", - "\n", - "gemm! in blas.jl:1644\n", - "\n", - "A_matrix_intermediate in In[182]:16\n", - "\n", - "setindex! in array.jl:983\n", - "\n", - "\n", - "\n", - "\n", - "\n" - ], - "text/html": [ - "\n", - "\n", - "\n", - "\n", - "\n", - " \n", - " \n", - " \n", - "\n", - "\n", - "\n", - "\n", - "Profile results\n", - "\n", - "\n", - " in :-1\n", - "\n", - "#15 in eventloop.jl:38\n", - "\n", - "eventloop in eventloop.jl:8\n", - "\n", - "invokelatest in essentials.jl:1052\n", - "\n", - "#invokelatest#2 in essentials.jl:1055\n", - "\n", - "execute_request in execute_request.jl:67\n", - "\n", - "softscope_include_string in SoftGlobalScope.jl:65\n", - "\n", - "include_string in loading.jl:2643\n", - "\n", - "eval in boot.jl:430\n", - "\n", - "A_matrix_intermediate in In[182]:4\n", - "\n", - "W_matrix in In[46]:3\n", - "\n", - "zeros in array.jl:574\n", - "\n", - "zeros in array.jl:579\n", - "\n", - "fill! in array.jl:329\n", - "\n", - "setindex! in array.jl:976\n", - "\n", - "W_matrix in In[46]:5\n", - "\n", - "getindex in abstractarray.jl:1312\n", - "\n", - "_getindex in multidimensional.jl:915\n", - "\n", - "_unsafe_getindex in multidimensional.jl:929\n", - "\n", - "_unsafe_getindex! in multidimensional.jl:938\n", - "\n", - "macro expansion in cartesian.jl:64\n", - "\n", - "macro expansion in multidimensional.jl:940\n", - "\n", - "setindex! in array.jl:976\n", - "\n", - "* in arraymath.jl:21\n", - "\n", - "broadcast_preserving_zero_d in broadcast.jl:856\n", - "\n", - "materialize in broadcast.jl:867\n", - "\n", - "copy in broadcast.jl:892\n", - "\n", - "copyto! in broadcast.jl:920\n", - "\n", - "copyto! in broadcast.jl:967\n", - "\n", - "macro expansion in simdloop.jl:77\n", - "\n", - "macro expansion in broadcast.jl:968\n", - "\n", - "setindex! in array.jl:976\n", - "\n", - "materialize! in broadcast.jl:875\n", - "\n", - "materialize! in broadcast.jl:878\n", - "\n", - "copyto! in broadcast.jl:920\n", - "\n", - "copyto! in broadcast.jl:967\n", - "\n", - "macro expansion in simdloop.jl:77\n", - "\n", - "macro expansion in broadcast.jl:968\n", - "\n", - "getindex in broadcast.jl:605\n", - "\n", - "_broadcast_getindex in broadcast.jl:645\n", - "\n", - "_getindex in broadcast.jl:669\n", - "\n", - "_getindex in broadcast.jl:670\n", - "\n", - "_broadcast_getindex in broadcast.jl:639\n", - "\n", - "getindex in essentials.jl:917\n", - "\n", - "W_matrix in In[46]:6\n", - "\n", - "* in arraymath.jl:21\n", - "\n", - "broadcast_preserving_zero_d in broadcast.jl:856\n", - "\n", - "materialize in broadcast.jl:867\n", - "\n", - "copy in broadcast.jl:892\n", - "\n", - "similar in broadcast.jl:223\n", - "\n", - "similar in broadcast.jl:224\n", - "\n", - "similar in abstractarray.jl:867\n", - "\n", - "similar in abstractarray.jl:868\n", - "\n", - "Array in boot.jl:599\n", - "\n", - "Array in boot.jl:591\n", - "\n", - "Array in boot.jl:578\n", - "\n", - "GenericMemory in boot.jl:516\n", - "\n", - "materialize! in broadcast.jl:875\n", - "\n", - "materialize! in broadcast.jl:878\n", - "\n", - "copyto! in broadcast.jl:920\n", - "\n", - "copyto! in broadcast.jl:967\n", - "\n", - "macro expansion in simdloop.jl:77\n", - "\n", - "macro expansion in broadcast.jl:968\n", - "\n", - "getindex in broadcast.jl:605\n", - "\n", - "_broadcast_getindex in broadcast.jl:645\n", - "\n", - "_getindex in broadcast.jl:669\n", - "\n", - "_getindex in broadcast.jl:670\n", - "\n", - "_broadcast_getindex in broadcast.jl:639\n", - "\n", - "getindex in essentials.jl:917\n", - "\n", - "A_matrix_intermediate in In[182]:6\n", - "\n", - "zero in abstractarray.jl:1196\n", - "\n", - "fill! in array.jl:329\n", - "\n", - "setindex! in array.jl:976\n", - "\n", - "similar in array.jl:359\n", - "\n", - "Array in boot.jl:582\n", - "\n", - "new_as_memoryref in boot.jl:535\n", - "\n", - "GenericMemory in boot.jl:516\n", - "\n", - "A_matrix_intermediate in In[182]:8\n", - "\n", - "getindex in abstractarray.jl:1312\n", - "\n", - "_getindex in multidimensional.jl:915\n", - "\n", - "_unsafe_getindex in multidimensional.jl:927\n", - "\n", - "similar in abstractarray.jl:822\n", - "\n", - "similar in array.jl:361\n", - "\n", - "Array in boot.jl:591\n", - "\n", - "Array in boot.jl:578\n", - "\n", - "GenericMemory in boot.jl:516\n", - "\n", - "materialize! in broadcast.jl:875\n", - "\n", - "materialize! in broadcast.jl:878\n", - "\n", - "copyto! in broadcast.jl:920\n", - "\n", - "copyto! in broadcast.jl:967\n", - "\n", - "macro expansion in simdloop.jl:75\n", - "\n", - "< in int.jl:83\n", - "\n", - "macro expansion in simdloop.jl:77\n", - "\n", - "macro expansion in broadcast.jl:968\n", - "\n", - "getindex in broadcast.jl:605\n", - "\n", - "_broadcast_getindex in broadcast.jl:645\n", - "\n", - "_getindex in broadcast.jl:669\n", - "\n", - "_broadcast_getindex in broadcast.jl:645\n", - "\n", - "_getindex in broadcast.jl:669\n", - "\n", - "_broadcast_getindex in broadcast.jl:639\n", - "\n", - "getindex in essentials.jl:917\n", - "\n", - "_broadcast_getindex in broadcast.jl:646\n", - "\n", - "_broadcast_getindex_evalf in broadcast.jl:673\n", - "\n", - "- in complex.jl:298\n", - "\n", - "- in float.jl:492\n", - "\n", - "A_matrix_intermediate in In[182]:9\n", - "\n", - "getindex in abstractarray.jl:1312\n", - "\n", - "_getindex in multidimensional.jl:915\n", - "\n", - "_unsafe_getindex in multidimensional.jl:927\n", - "\n", - "similar in abstractarray.jl:822\n", - "\n", - "similar in array.jl:361\n", - "\n", - "Array in boot.jl:591\n", - "\n", - "Array in boot.jl:578\n", - "\n", - "GenericMemory in boot.jl:516\n", - "\n", - "_unsafe_getindex in multidimensional.jl:929\n", - "\n", - "_unsafe_getindex! in multidimensional.jl:938\n", - "\n", - "macro expansion in cartesian.jl:64\n", - "\n", - "macro expansion in multidimensional.jl:940\n", - "\n", - "setindex! in array.jl:976\n", - "\n", - "materialize! in broadcast.jl:875\n", - "\n", - "materialize! in broadcast.jl:878\n", - "\n", - "copyto! in broadcast.jl:920\n", - "\n", - "copyto! in broadcast.jl:967\n", - "\n", - "macro expansion in simdloop.jl:77\n", - "\n", - "macro expansion in broadcast.jl:968\n", - "\n", - "setindex! in subarray.jl:384\n", - "\n", - "setindex! in array.jl:976\n", - "\n", - "A_matrix_intermediate in In[182]:12\n", - "\n", - "* in matmul.jl:130\n", - "\n", - "similar in array.jl:361\n", - "\n", - "Array in boot.jl:592\n", - "\n", - "Array in boot.jl:582\n", - "\n", - "new_as_memoryref in boot.jl:535\n", - "\n", - "GenericMemory in boot.jl:516\n", - "\n", - "mul! in matmul.jl:253\n", - "\n", - "mul! in matmul.jl:285\n", - "\n", - "_mul! in matmul.jl:287\n", - "\n", - "generic_matmatmul! in matmul.jl:381\n", - "\n", - "gemm_wrapper! in matmul.jl:657\n", - "\n", - "gemm! in blas.jl:1644\n", - "\n", - "A_matrix_intermediate in In[182]:16\n", - "\n", - "setindex! in array.jl:983\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n" - ], - "text/plain": [ - "ProfileSVG.FGConfig(Node(FlameGraphs.NodeData(ip:0x0, 0x00, 1:310)), Dict{Symbol, Any}(), FlameGraphs.FlameColors(ColorTypes.RGB{FixedPointNumbers.N0f8}[RGB{N0f8}(0.882,0.698,1.0), RGB{N0f8}(0.435,0.863,0.569), RGB{N0f8}(0.0,0.71,0.545), RGB{N0f8}(0.173,0.639,1.0)], RGB{N0f8}(1.0,1.0,1.0), RGB{N0f8}(0.0,0.0,0.0), ColorTypes.RGB{FixedPointNumbers.N0f8}[RGB{N0f8}(0.953,0.0,0.302), RGB{N0f8}(0.894,0.0,0.255), RGB{N0f8}(0.831,0.129,0.216), RGB{N0f8}(0.773,0.192,0.184)], ColorTypes.RGB{FixedPointNumbers.N0f8}[RGB{N0f8}(1.0,0.627,0.0), RGB{N0f8}(1.0,0.643,0.0), RGB{N0f8}(0.965,0.651,0.039), RGB{N0f8}(0.894,0.655,0.11)]), :fcolor, :fcolor, 1.0, false, 50, 2000, 960.0, 0.0, 2.0, \"inherit\", 12.0, false, :none, 0.001, \"Profile results\")" - ] - }, - "execution_count": 193, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "@profview A_matrix_intermediate(reg1)" - ] - }, - { - "cell_type": "code", - "execution_count": 228, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "fidelity_observable_matrix (generic function with 2 methods)" - ] - }, - "execution_count": 228, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "function fidelity_observable_matrix(R)\n", - " n = size(R, 1) ÷ 2\n", - " W = W_matrix(R)\n", - " # matdisplay(W)\n", - "\n", - " # Pretty sure this could be sped up with some explicit for loops\n", - " # A = transpose(W) * (I(n) ⊗ [1 -1im; 1im 1]) * W / 4\n", - " A_sym = transpose(W) * W / 4\n", - " # matdisplay(A_sym)\n", - " A_asym = transpose(W) * (I(n) ⊗ [0 -1im; 1im 0]) * W / 4\n", - " # matdisplay(A_asym)\n", - " \n", - " A = A_sym + A_asym\n", - "\n", - " # Take the _correct_ anti-symmetric part of it!\n", - " for i in 1:2n\n", - " for j in i+1:2n\n", - " A[j,i] = -A[i,j]\n", - " end\n", - " end\n", - " A[diagind(A)] .= 0\n", - " return A\n", - "end" - ] - }, - { - "cell_type": "code", - "execution_count": 243, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "fidelity_observable_matrix_tullio (generic function with 1 method)" - ] - }, - "execution_count": 243, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "function fidelity_observable_matrix_tullio(reg::MajoranaReg{T}) where {T}\n", - " n = nqubits(reg)\n", - " g = [0 -1im; 1im 0]\n", - "\n", - " W = reshape(W_matrix_tullio(reg.state), 2, n, 2, n)\n", - " # matdisplay(reshape(W, 2n, 2n))\n", - "\n", - " @tullio A_sym[α,i,β,j] := W[μ,m,α,i] * W[μ,m,β,j] / 4\n", - " # matdisplay(reshape(A_sym, 2n, 2n))\n", - " @tullio A_asym[α,i,β,j] := W[μ,m,α,i] * g[μ, ν] * W[ν,m,β,j] / 4\n", - " # matdisplay(reshape(A_asym, 2n, 2n))\n", - " @tullio A[α,i,β,j] := A_sym[α,i,β,j] + A_asym[α,i,β,j]\n", - " \n", - " A = reshape(A, 2n, 2n)\n", - " for i in 1:2n\n", - " for j in i+1:2n\n", - " A[j,i] = -A[i,j]\n", - " end\n", - " end\n", - " A[diagind(A)] .= 0\n", - " return A\n", - "end" - ] - }, - { - "cell_type": "code", - "execution_count": 244, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "800×800 Matrix{ComplexF64}:\n", - " 0.0+0.0im 0.54+0.0im … -0.0-0.0im 0.0-0.0im 0.0+0.0im\n", - " -0.54-0.0im 0.0+0.0im -0.0-0.0im -0.0+0.0im -0.0-0.0im\n", - " -0.01-0.0im 0.01+0.0im 0.0-0.0im -0.0-0.0im 0.0+0.0im\n", - " -0.01+0.0im 0.01-0.0im 0.0+0.0im -0.0+0.0im 0.0-0.0im\n", - " -0.02+0.01im 0.02+0.0im 0.0+0.0im -0.0-0.0im -0.0+0.0im\n", - " -0.02+0.0im 0.02+0.01im … -0.0-0.0im 0.0+0.0im 0.0-0.0im\n", - " 0.01-0.0im 0.01-0.01im -0.0+0.0im -0.0+0.0im -0.0+0.0im\n", - " -0.01-0.01im -0.01-0.0im -0.0+0.0im 0.0+0.0im 0.0+0.0im\n", - " -0.01+0.01im 0.02-0.01im 0.0-0.0im 0.0-0.0im 0.0+0.0im\n", - " -0.02-0.01im 0.01+0.01im 0.0-0.0im -0.0+0.0im -0.0-0.0im\n", - " 0.01-0.01im -0.01-0.02im … -0.0-0.0im -0.0-0.0im -0.0-0.0im\n", - " 0.01-0.02im -0.01-0.01im -0.0-0.0im 0.0-0.0im 0.0-0.0im\n", - " -0.02-0.01im -0.01-0.01im -0.0+0.0im -0.0+0.0im -0.0+0.0im\n", - " ⋮ ⋱ \n", - " -0.0-0.0im -0.0+0.0im -0.0-0.0im 0.0+0.0im -0.0-0.0im\n", - " 0.0+0.0im 0.0-0.0im 0.0-0.0im 0.0-0.0im -0.0+0.0im\n", - " -0.01+0.0im 0.0-0.0im … 0.0+0.0im 0.0-0.0im -0.0+0.0im\n", - " -0.0-0.0im 0.01+0.0im 0.0+0.0im 0.0+0.0im -0.0-0.0im\n", - " 0.0-0.0im 0.0+0.0im -0.0+0.0im 0.0+0.0im -0.0-0.0im\n", - " -0.0+0.0im -0.0-0.0im -0.0+0.0im 0.0-0.0im -0.0+0.0im\n", - " -0.01+0.0im 0.0-0.0im 0.0-0.0im -0.0+0.0im 0.0-0.0im\n", - " -0.0-0.0im 0.01+0.0im … 0.0-0.0im -0.0-0.0im 0.0+0.0im\n", - " -0.0+0.0im -0.0+0.0im 1.0+0.0im 0.0+0.0im -0.0+0.0im\n", - " 0.0+0.0im 0.0+0.0im 0.0+0.0im 0.0+0.0im -0.0+0.0im\n", - " -0.0+0.0im 0.0-0.0im -0.0-0.0im 0.0+0.0im 1.0-0.0im\n", - " -0.0-0.0im 0.0+0.0im 0.0-0.0im -1.0+0.0im 0.0+0.0im" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "A = A_matrix(reg1)\n", - "# W = simplify.(W; expand=true)\n", - "# A = simplify.(A; expand=true)\n", - "matdisplay(A)" - ] - }, - { - "cell_type": "code", - "execution_count": 245, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "800×800 Matrix{ComplexF64}:\n", - " 0.0+0.0im 0.54-0.0im … -0.0-0.0im 0.0-0.0im 0.0+0.0im\n", - " -0.54+0.0im 0.0+0.0im -0.0-0.0im -0.0+0.0im -0.0-0.0im\n", - " -0.01-0.0im 0.01+0.0im 0.0-0.0im -0.0-0.0im 0.0+0.0im\n", - " -0.01+0.0im 0.01-0.0im 0.0+0.0im -0.0+0.0im 0.0-0.0im\n", - " -0.02+0.01im 0.02+0.0im 0.0+0.0im -0.0-0.0im -0.0+0.0im\n", - " -0.02+0.0im 0.02+0.01im … -0.0-0.0im 0.0+0.0im 0.0-0.0im\n", - " 0.01-0.0im 0.01-0.01im -0.0+0.0im -0.0+0.0im -0.0+0.0im\n", - " -0.01-0.01im -0.01-0.0im -0.0+0.0im 0.0+0.0im 0.0+0.0im\n", - " -0.01+0.01im 0.02-0.01im 0.0-0.0im 0.0-0.0im 0.0+0.0im\n", - " -0.02-0.01im 0.01+0.01im 0.0-0.0im -0.0+0.0im -0.0-0.0im\n", - " 0.01-0.01im -0.01-0.02im … -0.0-0.0im -0.0-0.0im -0.0-0.0im\n", - " 0.01-0.02im -0.01-0.01im -0.0-0.0im 0.0-0.0im 0.0-0.0im\n", - " -0.02-0.01im -0.01-0.01im -0.0+0.0im -0.0+0.0im -0.0+0.0im\n", - " ⋮ ⋱ \n", - " -0.0-0.0im -0.0+0.0im -0.0-0.0im 0.0+0.0im -0.0-0.0im\n", - " 0.0+0.0im 0.0-0.0im 0.0-0.0im 0.0-0.0im -0.0+0.0im\n", - " -0.01+0.0im 0.0-0.0im … 0.0+0.0im 0.0-0.0im -0.0+0.0im\n", - " -0.0-0.0im 0.01+0.0im 0.0+0.0im 0.0+0.0im -0.0-0.0im\n", - " 0.0-0.0im 0.0+0.0im -0.0+0.0im 0.0+0.0im -0.0-0.0im\n", - " -0.0+0.0im -0.0-0.0im -0.0+0.0im 0.0-0.0im -0.0+0.0im\n", - " -0.01+0.0im 0.0-0.0im 0.0-0.0im -0.0+0.0im 0.0-0.0im\n", - " -0.0-0.0im 0.01+0.0im … 0.0-0.0im -0.0-0.0im 0.0+0.0im\n", - " -0.0+0.0im -0.0+0.0im 1.0-0.0im 0.0+0.0im -0.0+0.0im\n", - " 0.0+0.0im 0.0+0.0im 0.0+0.0im 0.0+0.0im -0.0+0.0im\n", - " -0.0+0.0im 0.0-0.0im -0.0-0.0im 0.0+0.0im 1.0+0.0im\n", - " -0.0-0.0im 0.0+0.0im 0.0-0.0im -1.0-0.0im 0.0+0.0im" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "A = fidelity_observable_matrix_tullio(reg1)\n", - "matdisplay(A)" - ] - }, - { - "cell_type": "code", - "execution_count": 246, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "B_matrix (generic function with 1 method)" - ] - }, - "execution_count": 246, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "function B_matrix(A_inv)\n", - " n = size(A_inv, 1) ÷ 2\n", - " B = zero(A_inv)\n", - " for i in 1:2:2n\n", - " B[:,i] .= A_inv[:,i] .+ A_inv[:,i+1]\n", - " B[:,i+1] .= -1im .* A_inv[:,i] .+ 1im .* A_inv[:,i+1]\n", - " end\n", - " return B\n", - "end" - ] - }, - { - "cell_type": "code", - "execution_count": 247, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "B_matrix_tullio (generic function with 1 method)" - ] - }, - "execution_count": 247, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "function B_matrix_tullio(A_inv)\n", - " n = size(A_inv, 1) ÷ 2\n", - " A_inv = reshape(A_inv, 2, n, 2, n)\n", - " δ = Matrix(I(2))\n", - " @tullio B[β,j,γ,g] := A_inv[β,j,1,g] * (δ[γ,1] - 1im * δ[γ,2]) + A_inv[β,j,2,g] * (δ[γ,1] + 1im * δ[γ,2])\n", - " return reshape(B, 2n, 2n)\n", - "end" - ] - }, - { - "cell_type": "code", - "execution_count": 255, - "metadata": {}, - "outputs": [ - { - "ename": "LoadError", - "evalue": "UndefVarError: `fidelity_observable_matrix` not defined in `Main`\nSuggestion: check for spelling errors or missing imports.", - "output_type": "error", - "traceback": [ - "UndefVarError: `fidelity_observable_matrix` not defined in `Main`\nSuggestion: check for spelling errors or missing imports.", - "", - "Stacktrace:", - " [1] top-level scope", - " @ In[255]:1" - ] - } - ], - "source": [ - "A = fidelity_observable_matrix(reg1)\n", - "det(A)" - ] - }, - { - "cell_type": "code", - "execution_count": 235, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "4×4 Matrix{ComplexF64}:\n", - " -0.0-0.0im -1.0+0.0im -1.87-0.19im -0.0-0.0im\n", - " 1.0-0.0im 0.0-0.0im 0.0-0.0im 1.87-0.19im\n", - " 1.87+0.19im -0.0+0.0im 0.0-0.0im -1.0+0.0im\n", - " 0.0+0.0im -1.87+0.19im 1.0-0.0im 0.0+0.0im" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "A_inv = inv(A)\n", - "matdisplay(A_inv)" - ] - }, - { - "cell_type": "code", - "execution_count": 236, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "4×4 Matrix{ComplexF64}:\n", - " -1.0+0.0im -0.0-1.0im -1.87-0.19im -0.19+1.87im\n", - " 1.0-0.0im -0.0-1.0im 1.87-0.19im 0.19+1.87im\n", - " 1.87+0.19im 0.19-1.87im -1.0+0.0im -0.0-1.0im\n", - " -1.87+0.19im -0.19-1.87im 1.0-0.0im -0.0-1.0im" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "B = B_matrix(A_inv)\n", - "matdisplay(B)" - ] - }, - { - "cell_type": "code", - "execution_count": 237, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "4×4 Matrix{ComplexF64}:\n", - " -1.0+0.0im -0.0-1.0im -1.87-0.19im -0.19+1.87im\n", - " 1.0-0.0im -0.0-1.0im 1.87-0.19im 0.19+1.87im\n", - " 1.87+0.19im 0.19-1.87im -1.0+0.0im -0.0-1.0im\n", - " -1.87+0.19im -0.19-1.87im 1.0-0.0im -0.0-1.0im" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "B = B_matrix_tullio(A_inv)\n", - "matdisplay(B)" - ] - }, - { - "cell_type": "code", - "execution_count": 254, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "C_matrix (generic function with 1 method)" - ] - }, - "execution_count": 254, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "function C_matrix(W)\n", - " n = size(W, 1) ÷ 2\n", - " C = zero(W)\n", - " for i in 1:2:2n\n", - " C[:,i] .= -W[i+1,:] \n", - " C[:,i+1] .= W[i,:] \n", - " end\n", - " return C\n", - "end" - ] - }, - { - "cell_type": "code", - "execution_count": 239, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "C_matrix_tullio (generic function with 1 method)" - ] - }, - "execution_count": 239, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "function C_matrix_tullio(W)\n", - " n = size(W, 1) ÷ 2\n", - " W = reshape(W, 2, n, 2, n)\n", - " g = [0 -1; 1 0]\n", - " ii = Matrix(I(n))\n", - " @tullio C[β,j,δ,d] := W[μ,m,β,j] * ii[d,m] * g[δ,μ]\n", - " return reshape(C, 2n, 2n)\n", - "end" - ] - }, - { - "cell_type": "code", - "execution_count": 240, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "4×4 Matrix{ComplexF64}:\n", - " 0.6+0.53im 0.6-0.53im -0.14-0.58im -0.14+0.58im\n", - " 0.2+0.4im 0.2-0.4im 0.81+0.38im 0.81-0.38im\n", - " 0.72-0.67im 0.72+0.67im 0.1+0.12im 0.1-0.12im\n", - " 0.26+0.33im 0.26-0.33im -0.56+0.71im -0.56-0.71im" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "W = W_matrix(reg1.state)\n", - "matdisplay(W)" - ] - }, - { - "cell_type": "code", - "execution_count": 253, - "metadata": {}, - "outputs": [ - { - "ename": "LoadError", - "evalue": "UndefVarError: `C_matrix` not defined in `Main`\nSuggestion: check for spelling errors or missing imports.", - "output_type": "error", - "traceback": [ - "UndefVarError: `C_matrix` not defined in `Main`\nSuggestion: check for spelling errors or missing imports.", - "", - "Stacktrace:", - " [1] top-level scope", - " @ In[253]:1" - ] - } - ], - "source": [ - "C = C_matrix(W)\n", - "matdisplay(C)" - ] - }, - { - "cell_type": "code", - "execution_count": 242, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "4×4 Matrix{ComplexF64}:\n", - " -0.2-0.4im 0.6+0.53im -0.26-0.33im 0.72-0.67im\n", - " -0.2+0.4im 0.6-0.53im -0.26+0.33im 0.72+0.67im\n", - " -0.81-0.38im -0.14-0.58im 0.56-0.71im 0.1+0.12im\n", - " -0.81+0.38im -0.14+0.58im 0.56+0.71im 0.1-0.12im" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "C = C_matrix_tullio(W)\n", - "matdisplay(C)" - ] - }, - { - "cell_type": "code", - "execution_count": 243, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "C_tilde_matrix (generic function with 1 method)" - ] - }, - "execution_count": 243, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "function C_tilde_matrix(W)\n", - " return transpose(W)\n", - "end" - ] - }, - { - "cell_type": "code", - "execution_count": 244, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "C_tilde_matrix_tullio (generic function with 1 method)" - ] - }, - "execution_count": 244, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "function C_tilde_matrix_tullio(W)\n", - " n = size(W, 1) ÷ 2\n", - " W = reshape(W, 2, n, 2, n)\n", - " @tullio C_tilde[β,j,δ,d] := W[δ,d,β,j]\n", - " return reshape(C_tilde, 2n, 2n)\n", - "end" - ] - }, - { - "cell_type": "code", - "execution_count": 245, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "4×4 Matrix{ComplexF64}:\n", - " 0.6+0.53im 0.2+0.4im 0.72-0.67im 0.26+0.33im\n", - " 0.6-0.53im 0.2-0.4im 0.72+0.67im 0.26-0.33im\n", - " -0.14-0.58im 0.81+0.38im 0.1+0.12im -0.56+0.71im\n", - " -0.14+0.58im 0.81-0.38im 0.1-0.12im -0.56-0.71im" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "C = C_tilde_matrix(W)\n", - "matdisplay(C)" - ] - }, - { - "cell_type": "code", - "execution_count": 246, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "4×4 Matrix{ComplexF64}:\n", - " 0.6+0.53im 0.2+0.4im 0.72-0.67im 0.26+0.33im\n", - " 0.6-0.53im 0.2-0.4im 0.72+0.67im 0.26-0.33im\n", - " -0.14-0.58im 0.81+0.38im 0.1+0.12im -0.56+0.71im\n", - " -0.14+0.58im 0.81-0.38im 0.1-0.12im -0.56-0.71im" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "C = C_tilde_matrix_tullio(W)\n", - "matdisplay(C)" - ] - }, - { - "cell_type": "code", - "execution_count": 247, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "B_tilde_matrix (generic function with 1 method)" - ] - }, - "execution_count": 247, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "function B_tilde_matrix(A_inv)\n", - " n = size(A_inv, 1) ÷ 2\n", - " B_tilde = zero(A_inv)\n", - " for g in 1:2:2n, j in 1:2:2n\n", - " if j < g\n", - " B_tilde[j,g] = -A_inv[j,g] + 1im * A_inv[j,g+1]\n", - " B_tilde[j+1,g] = 1im * A_inv[j+1,g] - A_inv[j+1,g+1]\n", - " B_tilde[j,g+1] = 1im * A_inv[j,g] + A_inv[j,g+1]\n", - " B_tilde[j+1,g+1] = -A_inv[j+1,g] - 1im * A_inv[j+1,g+1]\n", - " elseif j > g\n", - " B_tilde[j,g] = A_inv[j,g] - 1im * A_inv[j,g+1]\n", - " B_tilde[j+1,g] = -1im * A_inv[j+1,g] + A_inv[j+1,g+1]\n", - " B_tilde[j,g+1] = -1im * A_inv[j,g] - A_inv[j,g+1]\n", - " B_tilde[j+1,g+1] = A_inv[j+1,g] + 1im * A_inv[j+1,g+1]\n", - " else # j == g # \n", - " B_tilde[j,g] = -A_inv[j,g+1]\n", - " B_tilde[j+1,g] = A_inv[j+1,g]\n", - " B_tilde[j,g+1] = -1im * A_inv[j,g+1]\n", - " B_tilde[j+1,g+1] = -1im * A_inv[j+1,g]\n", - " end\n", - " end\n", - " return B_tilde\n", - "end" - ] - }, - { - "cell_type": "code", - "execution_count": 343, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "B_tilde_matrix_tullio (generic function with 1 method)" - ] - }, - "execution_count": 343, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "function B_tilde_matrix_tullio(A_inv)\n", - " n = size(A_inv, 1) ÷ 2\n", - " # A_inv = reshape(A_inv, 2, n, 2, n)\n", - " δ = Matrix(I(2))\n", - " Δ = Matrix(I(n))\n", - " @tullio D[γ,g,α,i] := Δ[g,i] * (δ[γ,1] + 1im * (-1)^α * δ[γ,2]) (α in 1:2)\n", - " # matdisplay(reshape(D, 2n, 2n))\n", - " D = reshape(D, 2n, 2n)\n", - " # i = iα, j = jβ, g = gγ\n", - " B = zero(A_inv)\n", - " for g in 1:2n, j in 1:2n\n", - " for i in 1:j-1\n", - " B[j,g] -= A_inv[i,j] * D[g,i]\n", - " end\n", - " for i in j+1:2n\n", - " B[j,g] += A_inv[i,j] * D[g,i]\n", - " end\n", - " end\n", - " return B\n", - "end" - ] - }, - { - "cell_type": "code", - "execution_count": 344, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "4×4 Matrix{ComplexF64}:\n", - " 0.0+0.0im -1.0+0.0im 0.57+1.02im 0.0-0.0im\n", - " 1.0-0.0im -0.0+0.0im -0.0+0.0im -0.57+1.02im\n", - " -0.57-1.02im 0.0-0.0im 0.0+0.0im -1.0+0.0im\n", - " -0.0+0.0im 0.57-1.02im 1.0-0.0im 0.0+0.0im" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "A_inv |> matdisplay" - ] - }, - { - "cell_type": "code", - "execution_count": 345, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "4×4 Matrix{ComplexF64}:\n", - " 1.0-0.0im 0.0+1.0im -0.57-1.02im -1.02+0.57im\n", - " 1.0-0.0im -0.0-1.0im 0.57-1.02im 1.02+0.57im\n", - " -0.57-1.02im -1.02+0.57im 1.0-0.0im 0.0+1.0im\n", - " 0.57-1.02im 1.02+0.57im 1.0-0.0im -0.0-1.0im" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "B_tilde = B_tilde_matrix(A_inv)\n", - "matdisplay(B_tilde)" - ] - }, - { - "cell_type": "code", - "execution_count": 346, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "4×4 Matrix{ComplexF64}:\n", - " 1.0-0.0im 0.0+1.0im -0.57-1.02im -1.02+0.57im\n", - " 1.0-0.0im -0.0-1.0im 0.57-1.02im 1.02+0.57im\n", - " -0.57-1.02im -1.02+0.57im 1.0-0.0im 0.0+1.0im\n", - " 0.57-1.02im 1.02+0.57im 1.0+0.0im 0.0-1.0im" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "B_tilde = B_tilde_matrix_tullio(A_inv)\n", - "matdisplay(B_tilde)" - ] - }, - { - "cell_type": "code", - "execution_count": 222, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "fidelity_gradient (generic function with 1 method)" - ] - }, - "execution_count": 222, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "function fidelity_gradient(R)\n", - " n = size(R, 1) ÷ 2\n", - " W = W_matrix(R)\n", - " \n", - " # Todo: Reuse W here!\n", - " A = A_matrix_intermediate(R)\n", - " val = pfaffian(A)\n", - " A_inv = inv(A)\n", - " \n", - " B = B_matrix(A_inv)\n", - " C = C_matrix(W)\n", - " B_tilde = B_tilde_matrix(A_inv)\n", - " C_tilde = C_tilde_matrix(W)\n", - " \n", - " # The real part of this is correct. But where is the imaginary part from?\n", - " # purely real not purely real, a bug?\n", - " return val * (1im * transpose(C) * B + transpose(C_tilde) * B_tilde) / 4\n", - "end" - ] - }, - { - "cell_type": "code", - "execution_count": 249, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "fidelity_manual (generic function with 1 method)" - ] - }, - "execution_count": 249, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "function fidelity_manual(R)\n", - " A = fidelity_observable_matrix(MajoranaReg(R))\n", - " return real(pfaffian(A))\n", - "end" - ] - }, - { - "cell_type": "code", - "execution_count": 250, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "fidelity_gradient_fdm (generic function with 1 method)" - ] - }, - "execution_count": 250, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "function fidelity_gradient_fdm(R)\n", - " grad(central_fdm(5, 1), fidelity_manual, R)\n", - "end" - ] - }, - { - "cell_type": "code", - "execution_count": 251, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "800×800 Matrix{Float64}:\n", - " -0.0140285 -0.00911146 0.0223069 … -0.0134924 0.0159206\n", - " 0.0379608 -0.0127862 0.0222897 -0.00458017 0.000616886\n", - " 0.00275395 0.00936715 0.0171123 -0.00336773 0.000789168\n", - " 0.0842182 0.03154 0.0205884 -0.00174239 0.000567137\n", - " -0.0443559 -0.107044 0.010131 -0.00493058 0.000647335\n", - " 0.0203527 -0.0331571 0.0121242 … -0.000852699 -0.000147603\n", - " -0.00948327 0.09095 0.036722 -0.00130745 0.000169531\n", - " 0.0277701 0.0702131 -0.108145 -0.00063982 -0.000176651\n", - " 0.0488821 -0.0592637 0.0150816 0.00548315 -0.000594077\n", - " 0.0787361 0.0471815 -0.00654396 0.00200781 -0.000578223\n", - " 0.041896 0.0412197 -0.062565 … -0.00508563 0.000831638\n", - " -0.0201049 0.00315995 -0.0410196 0.00369369 -0.000685429\n", - " 0.0539385 0.00573735 -0.0601238 0.00199306 -0.000240893\n", - " ⋮ ⋱ \n", - " -0.000130097 0.00397107 0.00338576 -0.00546674 7.27621e-5\n", - " 0.00365328 0.00215903 -0.00657011 0.00599598 -0.000670011\n", - " -0.00913034 0.00211051 -0.00101138 … 0.000727263 -6.47265e-5\n", - " 0.000857919 0.00531477 0.00116341 -0.000973988 1.80168e-5\n", - " 0.00162067 -0.00241925 0.00299005 -0.000433375 -0.00013765\n", - " 0.00172327 -0.000341562 0.000168104 -0.00153473 0.000257609\n", - " -0.00446015 -0.0119494 -0.00527624 -0.000524602 0.000265123\n", - " -0.00150658 0.00503538 -0.00112954 … 1.22253e-5 8.12644e-6\n", - " 0.000404551 0.000448574 0.000474467 -0.000119111 0.000219742\n", - " -0.000883007 -0.000901845 0.000187794 -0.00170742 1.3668e-5\n", - " 0.00010137 -0.000577442 0.00317756 0.994411 0.000190604\n", - " 0.000146144 0.00013431 -0.000706363 0.00128701 0.999749" - ] - }, - "execution_count": 251, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "R = reg1.state" - ] - }, - { - "cell_type": "code", - "execution_count": 252, - "metadata": {}, - "outputs": [ - { - "ename": "LoadError", - "evalue": "UndefVarError: `C_matrix` not defined in `Main`\nSuggestion: check for spelling errors or missing imports.", - "output_type": "error", - "traceback": [ - "UndefVarError: `C_matrix` not defined in `Main`\nSuggestion: check for spelling errors or missing imports.", - "", - "Stacktrace:", - " [1] fidelity_gradient(R::Matrix{Float64})", - " @ Main ./In[222]:11", - " [2] top-level scope", - " @ In[252]:1" - ] - } - ], - "source": [ - "fidelity_gradient(reg1.state) |> matdisplay" - ] - }, - { - "cell_type": "code", - "execution_count": 310, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "4×4 Matrix{Float64}:\n", - " -0.73 -0.02 0.11 0.6\n", - " 0.15 -0.69 -0.58 0.28\n", - " 0.19 0.66 -0.56 0.36\n", - " -0.56 0.06 -0.5 -0.59" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "fidelity_gradient_fdm(reg1.state)[1] |> matdisplay" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## trying to fix the imaginary part" - ] - }, - { - "cell_type": "code", - "execution_count": 319, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "0.6505532876265524" - ] - }, - "execution_count": 319, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "reg1 = FLOYao.rand_state(2)\n", - "fidelity(reg1, FLOYao.zero_state(2))" - ] - }, - { - "cell_type": "code", - "execution_count": 320, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "4×4 Matrix{ComplexF64}:\n", - " -0.304563-0.323363im -0.304563+0.323363im … 0.708488-0.548382im\n", - " 0.9247-0.181114im 0.9247+0.181114im 0.333945+0.0246775im\n", - " -0.119549-0.906478im -0.119549+0.906478im -0.187131+0.35915im\n", - " -0.194628+0.202319im -0.194628-0.202319im 0.59288+0.754772im" - ] - }, - "execution_count": 320, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "A = fidelity_observable_matrix(reg1)\n", - "A_inv = inv(A)\n", - "W = W_matrix(reg1.state)" - ] - }, - { - "cell_type": "code", - "execution_count": 340, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "4×4 Matrix{ComplexF64}:\n", - " -7.84118e-48-1.0im … -0.566185-1.02092im\n", - " 1.0-5.55112e-17im 1.02092+0.566185im\n", - " -0.566185-1.02092im 5.55112e-17+1.0im\n", - " -1.02092-0.566185im 1.0+0.0im" - ] - }, - "execution_count": 340, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "B_tilde = B_tilde_matrix_tullio(A_inv)" - ] - }, - { - "cell_type": "code", - "execution_count": 341, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "4×4 Matrix{ComplexF64}:\n", - " 1.0-5.55112e-17im 5.55112e-17+1.0im … -1.02092+0.566185im\n", - " 1.0-7.84118e-48im -7.84118e-48-1.0im 1.02092+0.566185im\n", - " -0.566185-1.02092im -1.02092+0.566185im 0.0+1.0im\n", - " 0.566185-1.02092im 1.02092+0.566185im -5.55112e-17-1.0im" - ] - }, - "execution_count": 341, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "B_tilde_matrix(A_inv)" - ] - }, - { - "cell_type": "code", - "execution_count": 338, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "4×4 Matrix{ComplexF64}:\n", - " -0.304563-0.323363im 0.9247-0.181114im … -0.194628+0.202319im\n", - " -0.304563+0.323363im 0.9247+0.181114im -0.194628-0.202319im\n", - " 0.708488+0.548382im 0.333945-0.0246775im 0.59288-0.754772im\n", - " 0.708488-0.548382im 0.333945+0.0246775im 0.59288+0.754772im" - ] - }, - "execution_count": 338, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "C_tilde = C_tilde_matrix_tullio(W)" - ] - }, - { - "cell_type": "code", - "execution_count": 339, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "4×4 transpose(::Matrix{ComplexF64}) with eltype ComplexF64:\n", - " -0.304563-0.323363im 0.9247-0.181114im … -0.194628+0.202319im\n", - " -0.304563+0.323363im 0.9247+0.181114im -0.194628-0.202319im\n", - " 0.708488+0.548382im 0.333945-0.0246775im 0.59288-0.754772im\n", - " 0.708488-0.548382im 0.333945+0.0246775im 0.59288+0.754772im" - ] - }, - "execution_count": 339, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "C_tilde_matrix(W)" - ] - }, - { - "cell_type": "code", - "execution_count": 342, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "4×4 Matrix{ComplexF64}:\n", - " -1.503-0.247151im 1.21131-1.17371im … -0.491598+0.811812im\n", - " 0.202359-1.28481im 1.2185+0.993123im 0.491669+0.225576im\n", - " -0.892348+1.15971im 0.131826+1.44203im -1.32102+1.66505im\n", - " -1.27649-1.29187im -1.32524+0.531351im 1.58025+1.11506im" - ] - }, - "execution_count": 342, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "transpose(C_tilde) * B_tilde" - ] - }, - { - "cell_type": "code", - "execution_count": 326, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "4×4 Matrix{Float64}:\n", - " 1.0 5.55112e-17 -0.566185 -1.02092\n", - " 1.0 -7.84118e-48 0.566185 1.02092\n", - " -0.566185 -1.02092 1.0 0.0\n", - " 0.566185 1.02092 1.0 -5.55112e-17" - ] - }, - "execution_count": 326, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "real.(B_tilde)" - ] - }, - { - "cell_type": "code", - "execution_count": 328, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "4×4 Matrix{Float64}:\n", - " -5.55112e-17 1.0 -1.02092 0.566185\n", - " -7.84118e-48 -1.0 -1.02092 0.566185\n", - " -1.02092 0.566185 0.0 1.0\n", - " -1.02092 0.566185 -5.55112e-17 -1.0" - ] - }, - "execution_count": 328, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "imag.(B_tilde)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Debugging 1 qubit with Symbolics" - ] - }, - { - "cell_type": "code", - "execution_count": 45, - "metadata": {}, - "outputs": [ - { - "data": { - "text/latex": [ - "$$ \\begin{equation}\n", - "\\left[\n", - "\\begin{array}{c}\n", - "\\varphi \\\\\n", - "\\end{array}\n", - "\\right]\n", - "\\end{equation}\n", - " $$" - ], - "text/plain": [ - "1-element Vector{Num}:\n", - " φ" - ] - }, - "execution_count": 45, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "@variables φ" - ] - }, - { - "cell_type": "code", - "execution_count": 59, - "metadata": {}, - "outputs": [ - { - "data": { - "text/latex": [ - "$$ \\begin{equation}\n", - "\\left[\n", - "\\begin{array}{c}\n", - "c \\\\\n", - "s \\\\\n", - "\\end{array}\n", - "\\right]\n", - "\\end{equation}\n", - " $$" - ], - "text/plain": [ - "2-element Vector{Num}:\n", - " c\n", - " s" - ] - }, - "execution_count": 59, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "@variables c, s" - ] - }, - { - "cell_type": "code", - "execution_count": 66, - "metadata": {}, - "outputs": [ - { - "data": { - "text/latex": [ - "$$ \\begin{equation}\n", - "\\left[\n", - "\\begin{array}{cc}\n", - "\\cos\\left( \\varphi \\right) & - \\sin\\left( \\varphi \\right) \\\\\n", - "\\sin\\left( \\varphi \\right) & \\cos\\left( \\varphi \\right) \\\\\n", - "\\end{array}\n", - "\\right]\n", - "\\end{equation}\n", - " $$" - ], - "text/plain": [ - "2×2 Matrix{Num}:\n", - " cos(φ) -sin(φ)\n", - " sin(φ) cos(φ)" - ] - }, - "execution_count": 66, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "R = [cos(φ) -sin(φ); sin(φ) cos(φ)]" - ] - }, - { - "cell_type": "code", - "execution_count": 60, - "metadata": {}, - "outputs": [ - { - "data": { - "text/latex": [ - "$$ \\begin{equation}\n", - "\\left[\n", - "\\begin{array}{cc}\n", - "c & - s \\\\\n", - "s & c \\\\\n", - "\\end{array}\n", - "\\right]\n", - "\\end{equation}\n", - " $$" - ], - "text/plain": [ - "2×2 Matrix{Num}:\n", - " c -s\n", - " s c" - ] - }, - "execution_count": 60, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "R = [c -s; s c]" - ] - }, - { - "cell_type": "code", - "execution_count": 130, - "metadata": {}, - "outputs": [ - { - "data": { - "text/latex": [ - "$$ \\begin{equation}\n", - "\\left[\n", - "\\begin{array}{cc}\n", - "R_{1}ˏ_1 & R_{1}ˏ_2 \\\\\n", - "R_{2}ˏ_1 & R_{2}ˏ_2 \\\\\n", - "\\end{array}\n", - "\\right]\n", - "\\end{equation}\n", - " $$" - ], - "text/plain": [ - "2×2 Matrix{Num}:\n", - " R₁ˏ₁ R₁ˏ₂\n", - " R₂ˏ₁ R₂ˏ₂" - ] - }, - "execution_count": 130, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "R = Symbolics.variables(:R, 1:2, 1:2)" - ] - }, - { - "cell_type": "code", - "execution_count": 212, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "fidelity_gradient (generic function with 2 methods)" - ] - }, - "execution_count": 212, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "function fidelity_gradient(R::Matrix{Num})\n", - " n = size(R, 1) ÷ 2\n", - " W = W_matrix(R)\n", - " \n", - " # Todo: Reuse W here!\n", - " A = fidelity_observable_matrix(R)\n", - " # display(A)\n", - " val = A[1,2] # pfaffian(A) # only consider 1 qubit case here\n", - " A_inv = inv(A)\n", - " # display(A)\n", - " # display(A_inv)\n", - " \n", - " B = B_matrix(A_inv)\n", - " C = C_matrix(W)\n", - " B_tilde = B_tilde_matrix(A_inv)\n", - " C_tilde = C_tilde_matrix(W)\n", - " \n", - " return val * (1im * transpose(C) * B + transpose(C_tilde) * B_tilde)\n", - "end" - ] - }, - { - "cell_type": "code", - "execution_count": 182, - "metadata": {}, - "outputs": [ - { - "data": { - "text/latex": [ - "$$ \\begin{equation}\n", - "\\left[\n", - "\\begin{array}{cc}\n", - "\\left( \\frac{R_{1}ˏ_1}{\\frac{1}{4} \\left( R_{1}ˏ_1^{2} + R_{1}ˏ_2^{2} + R_{2}ˏ_1^{2} + R_{2}ˏ_2^{2} \\right) + \\frac{1}{4} \\left( 2 R_{1}ˏ_1 R_{2}ˏ_2 - 2 R_{1}ˏ_2 R_{2}ˏ_1 \\right)} + \\frac{R_{2}ˏ_2}{\\frac{1}{4} \\left( R_{1}ˏ_1^{2} + R_{1}ˏ_2^{2} + R_{2}ˏ_1^{2} + R_{2}ˏ_2^{2} \\right) + \\frac{1}{4} \\left( 2 R_{1}ˏ_1 R_{2}ˏ_2 - 2 R_{1}ˏ_2 R_{2}ˏ_1 \\right)} + \\frac{ - R_{2}ˏ_2}{ - \\frac{1}{4} \\left( R_{1}ˏ_1^{2} + R_{1}ˏ_2^{2} + R_{2}ˏ_1^{2} + R_{2}ˏ_2^{2} \\right) - \\frac{1}{4} \\left( 2 R_{1}ˏ_1 R_{2}ˏ_2 - 2 R_{1}ˏ_2 R_{2}ˏ_1 \\right)} - R_{1}ˏ_1 \\frac{1}{ - \\frac{1}{4} \\left( R_{1}ˏ_1^{2} + R_{1}ˏ_2^{2} + R_{2}ˏ_1^{2} + R_{2}ˏ_2^{2} \\right) - \\frac{1}{4} \\left( 2 R_{1}ˏ_1 R_{2}ˏ_2 - 2 R_{1}ˏ_2 R_{2}ˏ_1 \\right)} \\right) \\left( \\frac{1}{4} \\left( R_{1}ˏ_1^{2} + R_{1}ˏ_2^{2} + R_{2}ˏ_1^{2} + R_{2}ˏ_2^{2} \\right) + \\frac{1}{4} \\left( 2 R_{1}ˏ_1 R_{2}ˏ_2 - 2 R_{1}ˏ_2 R_{2}ˏ_1 \\right) \\right) & \\left( \\frac{1}{4} \\left( R_{1}ˏ_1^{2} + R_{1}ˏ_2^{2} + R_{2}ˏ_1^{2} + R_{2}ˏ_2^{2} \\right) + \\frac{1}{4} \\left( 2 R_{1}ˏ_1 R_{2}ˏ_2 - 2 R_{1}ˏ_2 R_{2}ˏ_1 \\right) \\right) \\left( \\frac{R_{1}ˏ_2}{\\frac{1}{4} \\left( R_{1}ˏ_1^{2} + R_{1}ˏ_2^{2} + R_{2}ˏ_1^{2} + R_{2}ˏ_2^{2} \\right) + \\frac{1}{4} \\left( 2 R_{1}ˏ_1 R_{2}ˏ_2 - 2 R_{1}ˏ_2 R_{2}ˏ_1 \\right)} + \\frac{ - R_{2}ˏ_1}{\\frac{1}{4} \\left( R_{1}ˏ_1^{2} + R_{1}ˏ_2^{2} + R_{2}ˏ_1^{2} + R_{2}ˏ_2^{2} \\right) + \\frac{1}{4} \\left( 2 R_{1}ˏ_1 R_{2}ˏ_2 - 2 R_{1}ˏ_2 R_{2}ˏ_1 \\right)} + \\frac{ - R_{1}ˏ_2}{ - \\frac{1}{4} \\left( R_{1}ˏ_1^{2} + R_{1}ˏ_2^{2} + R_{2}ˏ_1^{2} + R_{2}ˏ_2^{2} \\right) - \\frac{1}{4} \\left( 2 R_{1}ˏ_1 R_{2}ˏ_2 - 2 R_{1}ˏ_2 R_{2}ˏ_1 \\right)} + \\frac{R_{2}ˏ_1}{ - \\frac{1}{4} \\left( R_{1}ˏ_1^{2} + R_{1}ˏ_2^{2} + R_{2}ˏ_1^{2} + R_{2}ˏ_2^{2} \\right) - \\frac{1}{4} \\left( 2 R_{1}ˏ_1 R_{2}ˏ_2 - 2 R_{1}ˏ_2 R_{2}ˏ_1 \\right)} \\right) \\\\\n", - "\\left( \\frac{1}{4} \\left( R_{1}ˏ_1^{2} + R_{1}ˏ_2^{2} + R_{2}ˏ_1^{2} + R_{2}ˏ_2^{2} \\right) + \\frac{1}{4} \\left( 2 R_{1}ˏ_1 R_{2}ˏ_2 - 2 R_{1}ˏ_2 R_{2}ˏ_1 \\right) \\right) \\left( \\frac{R_{2}ˏ_1}{\\frac{1}{4} \\left( R_{1}ˏ_1^{2} + R_{1}ˏ_2^{2} + R_{2}ˏ_1^{2} + R_{2}ˏ_2^{2} \\right) + \\frac{1}{4} \\left( 2 R_{1}ˏ_1 R_{2}ˏ_2 - 2 R_{1}ˏ_2 R_{2}ˏ_1 \\right)} + \\frac{R_{1}ˏ_2}{ - \\frac{1}{4} \\left( R_{1}ˏ_1^{2} + R_{1}ˏ_2^{2} + R_{2}ˏ_1^{2} + R_{2}ˏ_2^{2} \\right) - \\frac{1}{4} \\left( 2 R_{1}ˏ_1 R_{2}ˏ_2 - 2 R_{1}ˏ_2 R_{2}ˏ_1 \\right)} + \\frac{ - R_{1}ˏ_2}{\\frac{1}{4} \\left( R_{1}ˏ_1^{2} + R_{1}ˏ_2^{2} + R_{2}ˏ_1^{2} + R_{2}ˏ_2^{2} \\right) + \\frac{1}{4} \\left( 2 R_{1}ˏ_1 R_{2}ˏ_2 - 2 R_{1}ˏ_2 R_{2}ˏ_1 \\right)} - R_{2}ˏ_1 \\frac{1}{ - \\frac{1}{4} \\left( R_{1}ˏ_1^{2} + R_{1}ˏ_2^{2} + R_{2}ˏ_1^{2} + R_{2}ˏ_2^{2} \\right) - \\frac{1}{4} \\left( 2 R_{1}ˏ_1 R_{2}ˏ_2 - 2 R_{1}ˏ_2 R_{2}ˏ_1 \\right)} \\right) & \\left( \\frac{1}{4} \\left( R_{1}ˏ_1^{2} + R_{1}ˏ_2^{2} + R_{2}ˏ_1^{2} + R_{2}ˏ_2^{2} \\right) + \\frac{1}{4} \\left( 2 R_{1}ˏ_1 R_{2}ˏ_2 - 2 R_{1}ˏ_2 R_{2}ˏ_1 \\right) \\right) \\left( \\frac{R_{1}ˏ_1}{\\frac{1}{4} \\left( R_{1}ˏ_1^{2} + R_{1}ˏ_2^{2} + R_{2}ˏ_1^{2} + R_{2}ˏ_2^{2} \\right) + \\frac{1}{4} \\left( 2 R_{1}ˏ_1 R_{2}ˏ_2 - 2 R_{1}ˏ_2 R_{2}ˏ_1 \\right)} + \\frac{ - R_{1}ˏ_1}{ - \\frac{1}{4} \\left( R_{1}ˏ_1^{2} + R_{1}ˏ_2^{2} + R_{2}ˏ_1^{2} + R_{2}ˏ_2^{2} \\right) - \\frac{1}{4} \\left( 2 R_{1}ˏ_1 R_{2}ˏ_2 - 2 R_{1}ˏ_2 R_{2}ˏ_1 \\right)} + \\frac{R_{2}ˏ_2}{\\frac{1}{4} \\left( R_{1}ˏ_1^{2} + R_{1}ˏ_2^{2} + R_{2}ˏ_1^{2} + R_{2}ˏ_2^{2} \\right) + \\frac{1}{4} \\left( 2 R_{1}ˏ_1 R_{2}ˏ_2 - 2 R_{1}ˏ_2 R_{2}ˏ_1 \\right)} + \\frac{ - R_{2}ˏ_2}{ - \\frac{1}{4} \\left( R_{1}ˏ_1^{2} + R_{1}ˏ_2^{2} + R_{2}ˏ_1^{2} + R_{2}ˏ_2^{2} \\right) - \\frac{1}{4} \\left( 2 R_{1}ˏ_1 R_{2}ˏ_2 - 2 R_{1}ˏ_2 R_{2}ˏ_1 \\right)} \\right) \\\\\n", - "\\end{array}\n", - "\\right]\n", - "\\end{equation}\n", - " $$" - ], - "text/plain": [ - "2×2 Matrix{Complex{Num}}:\n", - " (R₁ˏ₁ / ((1//4)*(R₁ˏ₁^2 + R₁ˏ₂^2 + R₂ˏ₁^2 + R₂ˏ₂^2) + (1//4)*(2R₁ˏ₁*R₂ˏ₂ - 2R₁ˏ₂*R₂ˏ₁)) + R₂ˏ₂ / ((1//4)*(R₁ˏ₁^2 + R₁ˏ₂^2 + R₂ˏ₁^2 + R₂ˏ₂^2) + (1//4)*(2R₁ˏ₁*R₂ˏ₂ - 2R₁ˏ₂*R₂ˏ₁)) + (-R₂ˏ₂) / (-(1//4)*(R₁ˏ₁^2 + R₁ˏ₂^2 + R₂ˏ₁^2 + R₂ˏ₂^2) - (1//4)*(2R₁ˏ₁*R₂ˏ₂ - 2R₁ˏ₂*R₂ˏ₁)) - R₁ˏ₁*(1 / (-(1//4)*(R₁ˏ₁^2 + R₁ˏ₂^2 + R₂ˏ₁^2 + R₂ˏ₂^2) - (1//4)*(2R₁ˏ₁*R₂ˏ₂ - 2R₁ˏ₂*R₂ˏ₁))))*((1//4)*(R₁ˏ₁^2 + R₁ˏ₂^2 + R₂ˏ₁^2 + R₂ˏ₂^2) + (1//4)*(2R₁ˏ₁*R₂ˏ₂ - 2R₁ˏ₂*R₂ˏ₁)) + ((1//4)*(R₁ˏ₁^2 + R₁ˏ₂^2 + R₂ˏ₁^2 + R₂ˏ₂^2) + (1//4)*(2R₁ˏ₁*R₂ˏ₂ - 2R₁ˏ₂*R₂ˏ₁))*((-R₂ˏ₁) / (-(1//4)*(R₁ˏ₁^2 + R₁ˏ₂^2 + R₂ˏ₁^2 + R₂ˏ₂^2) - (1//4)*(2R₁ˏ₁*R₂ˏ₂ - 2R₁ˏ₂*R₂ˏ₁)) + R₁ˏ₂ / ((1//4)*(R₁ˏ₁^2 + R₁ˏ₂^2 + R₂ˏ₁^2 + R₂ˏ₂^2) + (1//4)*(2R₁ˏ₁*R₂ˏ₂ - 2R₁ˏ₂*R₂ˏ₁)) + (-R₂ˏ₁) / ((1//4)*(R₁ˏ₁^2 + R₁ˏ₂^2 + R₂ˏ₁^2 + R₂ˏ₂^2) + (1//4)*(2R₁ˏ₁*R₂ˏ₂ - 2R₁ˏ₂*R₂ˏ₁)) + R₁ˏ₂*(1 / (-(1//4)*(R₁ˏ₁^2 + R₁ˏ₂^2 + R₂ˏ₁^2 + R₂ˏ₂^2) - (1//4)*(2R₁ˏ₁*R₂ˏ₂ - 2R₁ˏ₂*R₂ˏ₁))))*im … ((1//4)*(R₁ˏ₁^2 + R₁ˏ₂^2 + R₂ˏ₁^2 + R₂ˏ₂^2) + (1//4)*(2R₁ˏ₁*R₂ˏ₂ - 2R₁ˏ₂*R₂ˏ₁))*(R₁ˏ₂ / ((1//4)*(R₁ˏ₁^2 + R₁ˏ₂^2 + R₂ˏ₁^2 + R₂ˏ₂^2) + (1//4)*(2R₁ˏ₁*R₂ˏ₂ - 2R₁ˏ₂*R₂ˏ₁)) + (-R₂ˏ₁) / ((1//4)*(R₁ˏ₁^2 + R₁ˏ₂^2 + R₂ˏ₁^2 + R₂ˏ₂^2) + (1//4)*(2R₁ˏ₁*R₂ˏ₂ - 2R₁ˏ₂*R₂ˏ₁)) + (-R₁ˏ₂) / (-(1//4)*(R₁ˏ₁^2 + R₁ˏ₂^2 + R₂ˏ₁^2 + R₂ˏ₂^2) - (1//4)*(2R₁ˏ₁*R₂ˏ₂ - 2R₁ˏ₂*R₂ˏ₁)) + R₂ˏ₁ / (-(1//4)*(R₁ˏ₁^2 + R₁ˏ₂^2 + R₂ˏ₁^2 + R₂ˏ₂^2) - (1//4)*(2R₁ˏ₁*R₂ˏ₂ - 2R₁ˏ₂*R₂ˏ₁))) + ((1//4)*(R₁ˏ₁^2 + R₁ˏ₂^2 + R₂ˏ₁^2 + R₂ˏ₂^2) + (1//4)*(2R₁ˏ₁*R₂ˏ₂ - 2R₁ˏ₂*R₂ˏ₁))*im*((-R₂ˏ₂) / ((1//4)*(R₁ˏ₁^2 + R₁ˏ₂^2 + R₂ˏ₁^2 + R₂ˏ₂^2) + (1//4)*(2R₁ˏ₁*R₂ˏ₂ - 2R₁ˏ₂*R₂ˏ₁)) + (-R₁ˏ₁) / (-(1//4)*(R₁ˏ₁^2 + R₁ˏ₂^2 + R₂ˏ₁^2 + R₂ˏ₂^2) - (1//4)*(2R₁ˏ₁*R₂ˏ₂ - 2R₁ˏ₂*R₂ˏ₁)) + (-R₁ˏ₁) / ((1//4)*(R₁ˏ₁^2 + R₁ˏ₂^2 + R₂ˏ₁^2 + R₂ˏ₂^2) + (1//4)*(2R₁ˏ₁*R₂ˏ₂ - 2R₁ˏ₂*R₂ˏ₁)) + (-R₂ˏ₂) / (-(1//4)*(R₁ˏ₁^2 + R₁ˏ₂^2 + R₂ˏ₁^2 + R₂ˏ₂^2) - (1//4)*(2R₁ˏ₁*R₂ˏ₂ - 2R₁ˏ₂*R₂ˏ₁)))\n", - " ((1//4)*(R₁ˏ₁^2 + R₁ˏ₂^2 + R₂ˏ₁^2 + R₂ˏ₂^2) + (1//4)*(2R₁ˏ₁*R₂ˏ₂ - 2R₁ˏ₂*R₂ˏ₁))*(R₂ˏ₁ / ((1//4)*(R₁ˏ₁^2 + R₁ˏ₂^2 + R₂ˏ₁^2 + R₂ˏ₂^2) + (1//4)*(2R₁ˏ₁*R₂ˏ₂ - 2R₁ˏ₂*R₂ˏ₁)) + R₁ˏ₂ / (-(1//4)*(R₁ˏ₁^2 + R₁ˏ₂^2 + R₂ˏ₁^2 + R₂ˏ₂^2) - (1//4)*(2R₁ˏ₁*R₂ˏ₂ - 2R₁ˏ₂*R₂ˏ₁)) + (-R₁ˏ₂) / ((1//4)*(R₁ˏ₁^2 + R₁ˏ₂^2 + R₂ˏ₁^2 + R₂ˏ₂^2) + (1//4)*(2R₁ˏ₁*R₂ˏ₂ - 2R₁ˏ₂*R₂ˏ₁)) - R₂ˏ₁*(1 / (-(1//4)*(R₁ˏ₁^2 + R₁ˏ₂^2 + R₂ˏ₁^2 + R₂ˏ₂^2) - (1//4)*(2R₁ˏ₁*R₂ˏ₂ - 2R₁ˏ₂*R₂ˏ₁)))) + ((1//4)*(R₁ˏ₁^2 + R₁ˏ₂^2 + R₂ˏ₁^2 + R₂ˏ₂^2) + (1//4)*(2R₁ˏ₁*R₂ˏ₂ - 2R₁ˏ₂*R₂ˏ₁))*(R₁ˏ₁ / ((1//4)*(R₁ˏ₁^2 + R₁ˏ₂^2 + R₂ˏ₁^2 + R₂ˏ₂^2) + (1//4)*(2R₁ˏ₁*R₂ˏ₂ - 2R₁ˏ₂*R₂ˏ₁)) + R₁ˏ₁ / (-(1//4)*(R₁ˏ₁^2 + R₁ˏ₂^2 + R₂ˏ₁^2 + R₂ˏ₂^2) - (1//4)*(2R₁ˏ₁*R₂ˏ₂ - 2R₁ˏ₂*R₂ˏ₁)) + R₂ˏ₂ / ((1//4)*(R₁ˏ₁^2 + R₁ˏ₂^2 + R₂ˏ₁^2 + R₂ˏ₂^2) + (1//4)*(2R₁ˏ₁*R₂ˏ₂ - 2R₁ˏ₂*R₂ˏ₁)) + R₂ˏ₂*(1 / (-(1//4)*(R₁ˏ₁^2 + R₁ˏ₂^2 + R₂ˏ₁^2 + R₂ˏ₂^2) - (1//4)*(2R₁ˏ₁*R₂ˏ₂ - 2R₁ˏ₂*R₂ˏ₁))))*im ((1//4)*(R₁ˏ₁^2 + R₁ˏ₂^2 + R₂ˏ₁^2 + R₂ˏ₂^2) + (1//4)*(2R₁ˏ₁*R₂ˏ₂ - 2R₁ˏ₂*R₂ˏ₁))*(R₁ˏ₁ / ((1//4)*(R₁ˏ₁^2 + R₁ˏ₂^2 + R₂ˏ₁^2 + R₂ˏ₂^2) + (1//4)*(2R₁ˏ₁*R₂ˏ₂ - 2R₁ˏ₂*R₂ˏ₁)) + (-R₁ˏ₁) / (-(1//4)*(R₁ˏ₁^2 + R₁ˏ₂^2 + R₂ˏ₁^2 + R₂ˏ₂^2) - (1//4)*(2R₁ˏ₁*R₂ˏ₂ - 2R₁ˏ₂*R₂ˏ₁)) + R₂ˏ₂ / ((1//4)*(R₁ˏ₁^2 + R₁ˏ₂^2 + R₂ˏ₁^2 + R₂ˏ₂^2) + (1//4)*(2R₁ˏ₁*R₂ˏ₂ - 2R₁ˏ₂*R₂ˏ₁)) + (-R₂ˏ₂) / (-(1//4)*(R₁ˏ₁^2 + R₁ˏ₂^2 + R₂ˏ₁^2 + R₂ˏ₂^2) - (1//4)*(2R₁ˏ₁*R₂ˏ₂ - 2R₁ˏ₂*R₂ˏ₁))) + ((1//4)*(R₁ˏ₁^2 + R₁ˏ₂^2 + R₂ˏ₁^2 + R₂ˏ₂^2) + (1//4)*(2R₁ˏ₁*R₂ˏ₂ - 2R₁ˏ₂*R₂ˏ₁))*im*((-R₂ˏ₁) / (-(1//4)*(R₁ˏ₁^2 + R₁ˏ₂^2 + R₂ˏ₁^2 + R₂ˏ₂^2) - (1//4)*(2R₁ˏ₁*R₂ˏ₂ - 2R₁ˏ₂*R₂ˏ₁)) + R₁ˏ₂ / ((1//4)*(R₁ˏ₁^2 + R₁ˏ₂^2 + R₂ˏ₁^2 + R₂ˏ₂^2) + (1//4)*(2R₁ˏ₁*R₂ˏ₂ - 2R₁ˏ₂*R₂ˏ₁)) + (-R₂ˏ₁) / ((1//4)*(R₁ˏ₁^2 + R₁ˏ₂^2 + R₂ˏ₁^2 + R₂ˏ₂^2) + (1//4)*(2R₁ˏ₁*R₂ˏ₂ - 2R₁ˏ₂*R₂ˏ₁)) + R₁ˏ₂ / (-(1//4)*(R₁ˏ₁^2 + R₁ˏ₂^2 + R₂ˏ₁^2 + R₂ˏ₂^2) - (1//4)*(2R₁ˏ₁*R₂ˏ₂ - 2R₁ˏ₂*R₂ˏ₁)))" - ] - }, - "execution_count": 182, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "fg = fidelity_gradient(R)" - ] - }, - { - "cell_type": "code", - "execution_count": 183, - "metadata": {}, - "outputs": [ - { - "data": { - "text/latex": [ - "$$ \\begin{equation}\n", - "\\left[\n", - "\\begin{array}{c}\n", - "D \\\\\n", - "\\end{array}\n", - "\\right]\n", - "\\end{equation}\n", - " $$" - ], - "text/plain": [ - "1-element Vector{Num}:\n", - " D" - ] - }, - "execution_count": 183, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "@variables N\n", - "@variables D" - ] - }, - { - "cell_type": "code", - "execution_count": 185, - "metadata": {}, - "outputs": [ - { - "data": { - "text/latex": [ - "$$ \\begin{equation}\n", - "\\left[\n", - "\\begin{array}{cc}\n", - "64 \\left( \\frac{1}{32} R_{1}ˏ_1 + \\frac{1}{32} R_{2}ˏ_2 \\right) & 64 \\left( \\frac{1}{32} R_{1}ˏ_2 - \\frac{1}{32} R_{2}ˏ_1 \\right) \\\\\n", - "64 \\left( - \\frac{1}{32} R_{1}ˏ_2 + \\frac{1}{32} R_{2}ˏ_1 \\right) & 64 \\left( \\frac{1}{32} R_{1}ˏ_1 + \\frac{1}{32} R_{2}ˏ_2 \\right) \\\\\n", - "\\end{array}\n", - "\\right]\n", - "\\end{equation}\n", - " $$" - ], - "text/plain": [ - "2×2 Matrix{Complex{Num}}:\n", - " (64//1)*((1//32)*R₁ˏ₁ + (1//32)*R₂ˏ₂) … (64//1)*((1//32)*R₁ˏ₂ - (1//32)*R₂ˏ₁)\n", - " (64//1)*(-(1//32)*R₁ˏ₂ + (1//32)*R₂ˏ₁) (64//1)*((1//32)*R₁ˏ₁ + (1//32)*R₂ˏ₂)" - ] - }, - "execution_count": 185, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "for _ in 1:10\n", - " fg = substitute.(fg, Ref(Dict(R[1,1]^2 + R[1,2]^2 + R[2,1]^2 + R[2,2]^2 => N,)))\n", - " fg = substitute.(fg, Ref(Dict(2R[1,1] * R[2,2] - 2R[2,1] * R[1,2] => 2D,)))\n", - "end\n", - "simplify.(fg)\n", - "# # Symbolics.Symbolics.expand.(fg)" - ] - }, - { - "cell_type": "code", - "execution_count": 161, - "metadata": {}, - "outputs": [ - { - "data": { - "text/latex": [ - "$$ \\begin{equation}\n", - "\\left[\n", - "\\begin{array}{cc}\n", - "0 & \\frac{1}{4} \\left( R_{1}ˏ_1^{2} + 2 R_{1}ˏ_1 R_{2}ˏ_2 + R_{1}ˏ_2^{2} - 2 R_{1}ˏ_2 R_{2}ˏ_1 + R_{2}ˏ_1^{2} + R_{2}ˏ_2^{2} \\right) \\\\\n", - " - \\frac{1}{4} \\left( R_{1}ˏ_1^{2} + 2 R_{1}ˏ_1 R_{2}ˏ_2 + R_{1}ˏ_2^{2} - 2 R_{1}ˏ_2 R_{2}ˏ_1 + R_{2}ˏ_1^{2} + R_{2}ˏ_2^{2} \\right) & 0 \\\\\n", - "\\end{array}\n", - "\\right]\n", - "\\end{equation}\n", - " $$" - ], - "text/plain": [ - "2×2 Matrix{Complex{Num}}:\n", - " 0 … (1//4)*(R₁ˏ₁^2 + 2R₁ˏ₁*R₂ˏ₂ + R₁ˏ₂^2 - 2R₁ˏ₂*R₂ˏ₁ + R₂ˏ₁^2 + R₂ˏ₂^2)\n", - " (-1//4)*(R₁ˏ₁^2 + 2R₁ˏ₁*R₂ˏ₂ + R₁ˏ₂^2 - 2R₁ˏ₂*R₂ˏ₁ + R₂ˏ₁^2 + R₂ˏ₂^2) 0" - ] - }, - "execution_count": 161, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "f = fidelity_observable_matrix(R)\n", - "for _ in 1:10\n", - " fg = substitute.(f, Ref(Dict(R[1,1]^2 + 2R[1,1] * R[2,2] + R[1,2]^2 - 2R[1,2]*R[2,1] + R[2,1]^2 + R[2,2]^2 => N + 2D,)))\n", - "end\n", - "simplify.(f)" - ] - }, - { - "cell_type": "code", - "execution_count": 166, - "metadata": {}, - "outputs": [ - { - "data": { - "text/latex": [ - "$$ \\begin{equation}\n", - "\\frac{1}{4} \\left( R_{1}ˏ_1^{2} + R_{1}ˏ_2^{2} + R_{2}ˏ_1^{2} + R_{2}ˏ_2^{2} \\right) + \\frac{1}{4} \\left( 2 R_{1}ˏ_1 R_{2}ˏ_2 - 2 R_{1}ˏ_2 R_{2}ˏ_1 \\right)\n", - "\\end{equation}\n", - " $$" - ], - "text/plain": [ - "(1//4)*(R₁ˏ₁^2 + R₁ˏ₂^2 + R₂ˏ₁^2 + R₂ˏ₂^2) + (1//4)*(2R₁ˏ₁*R₂ˏ₂ - 2R₁ˏ₂*R₂ˏ₁)" - ] - }, - "execution_count": 166, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "val = f[1,2]\n", - "# for _ in 1:10\n", - "# val = substitute(val, Dict(R[1,1]^2 + R[1,2]^2 + R[2,1]^2 + R[2,2]^2 => N,))\n", - "# val = substitute(val, Dict(2R[1,1] * R[2,2] - 2R[2,1] * R[1,2] => 2D,))\n", - "# end\n", - "# val" - ] - }, - { - "cell_type": "code", - "execution_count": 158, - "metadata": {}, - "outputs": [ - { - "data": { - "text/latex": [ - "$$ \\begin{equation}\n", - "R_{1}ˏ_1^{2} + 2 R_{1}ˏ_1 R_{2}ˏ_2 + R_{1}ˏ_2^{2} - 2 R_{1}ˏ_2 R_{2}ˏ_1 + R_{2}ˏ_1^{2} + R_{2}ˏ_2^{2}\n", - "\\end{equation}\n", - " $$" - ], - "text/plain": [ - "R₁ˏ₁^2 + 2R₁ˏ₁*R₂ˏ₂ + R₁ˏ₂^2 - 2R₁ˏ₂*R₂ˏ₁ + R₂ˏ₁^2 + R₂ˏ₂^2" - ] - }, - "execution_count": 158, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "4*f[1,2] |> simplify" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Leftovers" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "MajoranaReg{Float64} with 3 qubits:\n", - " 1.0 0.0 0.0 0.0 0.0 0.0\n", - " 0.0 1.0 0.0 0.0 0.0 0.0\n", - " 0.0 0.0 1.0 0.0 0.0 0.0\n", - " 0.0 0.0 0.0 1.0 0.0 0.0\n", - " 0.0 0.0 0.0 0.0 1.0 0.0\n", - " 0.0 0.0 0.0 0.0 0.0 1.0" - ] - }, - "execution_count": 7, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "reg1 = FLOYao.rand_state(3)\n", - "reg2 = FLOYao.zero_state(3)" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "0.9482898284113278" - ] - }, - "execution_count": 8, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "fidelity(reg1, reg2)" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "norm(A_asym + transpose(A_asym)) = 7.665777581559047e-17\n" - ] - }, - { - "data": { - "text/plain": [ - "6×6 Matrix{ComplexF64}:\n", - " 0.0+0.0im 1.0+0.0im 0.0-0.0im -0.0+0.0im 0.0+0.0im 0.0+0.0im\n", - " 1.0+0.0im 0.0-0.0im -0.0-0.0im 0.0+0.0im 0.0-0.0im 0.0-0.0im\n", - " 0.0-0.0im -0.0-0.0im 0.0+0.0im 1.0+0.0im 0.0+0.0im -0.0+0.0im\n", - " -0.0+0.0im 0.0+0.0im 1.0+0.0im 0.0-0.0im -0.0-0.0im 0.0-0.0im\n", - " 0.0+0.0im 0.0-0.0im 0.0+0.0im -0.0-0.0im -0.0+0.0im 1.0+0.0im\n", - " 0.0+0.0im 0.0-0.0im -0.0+0.0im 0.0-0.0im 1.0+0.0im -0.0-0.0im" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/plain": [ - "6×6 Matrix{ComplexF64}:\n", - " 0.0+0.0im … 0.0253894-0.0184753im\n", - " -0.941825-4.90866e-18im 0.171419-0.0458542im\n", - " 0.128725+0.0652438im -0.0278649-0.00587318im\n", - " 0.0258619-0.028667im 0.0890688-0.174211im\n", - " 0.171419+0.0458542im 0.922414+5.64611e-19im\n", - " -0.0253894+0.0184753im … 0.0+0.0im" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "A = fidelity_observable_matrix(reg1)\n", - "# W = simplify.(W; expand=true)\n", - "# A = simplify.(A; expand=true)\n", - "# display(W)\n", - "display(A)" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "0.9482898284113277" - ] - }, - "execution_count": 10, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "sqrt(abs(pfaffian(A)))" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Julia 1.11.1", - "language": "julia", - "name": "julia-1.11" - }, - "language_info": { - "file_extension": ".jl", - "mimetype": "application/julia", - "name": "julia", - "version": "1.11.1" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -}