Updated August 4 2021 The entire routine is called by the function GaussNewton(Gamma,gamma,Klist,Zlist,opt) in folder Solver. See the script Example.m that currently solves Instance 1 using: load('instance_ebBB84.mat') There are SIX instances in this script to choose from. GaussNewton.m solves the problem: (QKD) min f(rho) = D( G(rho)||Z(G(rho)) ) (quantum relative entropy) s.t. Gamma(rho) = gamma (affine constraint) rho >= 0 (rho positive semidefinite) using a projected Gauss-Newton method applied to the SDP. Input: Gamma : a cell array; each cell is a constraint data matrix gamma : RHS vector for Gamma(rho) = gamma Klist : cell array for kraus operator in G(rho) = sum_{j=1}^\ell K_j rho K_j^* Zlist : cell array for Z(rho) = sum_{j=1}^N Z_j rho Z_j opt : options for the solver opt.rhoA : reduced density operator (a matrix) opt.iterbnd : max number of iterations (an integer) opt.verbose : output log levels for command window (an integer), defualt: 1 (0,1,2) = (no output, minimal output, all output) opt.tolerGN : tolerance for Gauss-Newton solver, default: 1e-9 opt.tol_licols : tolerance for sorting out lin.indep contraints, default: 1e-9 opt.tolerFR : tolerance for the facial reduction algorithm, default: 1e-12 Output: ubd : best upper bound lbd : best lower bound Out : various outputs containing primal variable rho, dual variables y and Z, optimal value, etc. The six instances given are: 1. instance_ebBB84.mat (there is no reduced density operator rhoA for this instance) 2. instance_pmBB84.mat 3. instance_mdiBB84.mat 4. instance_TFQKD.mat (there is no reduced density operator rhoA for this instance) 5. instance_DMCV.mat 6. instance_dprBB84.mat