You are an expert in writing code in many different languages. Your goal is to perform code completion for the following code, keeping in mind the rest of the code and the file meta data.
    Metadata details:
    filename: Q_InexactGradientExactLineSearch.m
    path of file: ./repos/Performance-Estimation-Toolbox/Examples/01_Methods for unconstrained convex minimization
    
    the code of the file until where you have to start completion: function Q_InexactGradientExactLineSearch
% In this example, we use an inexact gradient method with exact line search
% for solving the L-smooth mu-strongly convex minimization problem
%   min_x F(x); for notational convenience we denote xs=argmin_x F(x).
%
%   Starting from an iterate x0, the method performs at each iteration
%   an exact line search step in a direction d satisfying a relative 
%   accuracy criterion
%   (gi is the gradient of F at xi)
%       ||d-gi||<=eps*||gi|| (**)
%   that is, the method evaluates
%       gamma=argmin_gamma F(xi-gamma*d) for d satisfying (**)
%   and performs the update
%       x{i+1}=xi-gamma*d.
%
% We show how to compute the worst-case value of F(xN)-F(xs) when xN is
% obtained by doing N steps of the method starting with an initial
% iterate satisfying F(x0)-F(xs)<=1.
%
% Details in:
%  [1] De Klerk, Etienne, FranÃ§ois Glineur, and Adrien B. Taylor. 
%      "On the worst-case complexity of the gradient method with exact 
%      line search for smooth strongly convex functions." 
%      Optimization Letters (2017).


% (0) Initialize an empty PEP

    
function Q_InexactGradientExactLineSearch
% In this example, we use an inexact gradient method with exact line search
% for solving the L-smooth mu-strongly convex minimization problem
%   min_x F(x); for notational convenience we denote xs=argmin_x F(x).
%
%   Starting from an iterate x0, the method performs at each iteration
%   an exact line search step in a direction d satisfying a relative 
%   accuracy criterion
%   (gi is the gradient of F at xi)
%       ||d-gi||<=eps*||gi|| (**)
%   that is, the method evaluates
%       gamma=argmin_gamma F(xi-gamma*d) for d satisfying (**)
%   and performs the update
%       x{i+1}=xi-gamma*d.
%
% We show how to compute the worst-case value of F(xN)-F(xs) when xN is
% obtained by doing N steps of the method starting with an initial
% iterate satisfying F(x0)-F(xs)<=1.
%
% Details in:
%  [1] De Klerk, Etienne, FranÃ§ois Glineur, and Adrien B. Taylor. 
%      "On the worst-case complexity of the gradient method with exact 
%      line search for smooth strongly convex functions." 
%      Optimization Letters (2017).


% (0) Initialize an empty PEP
P = pep();

% (1) Set up the objective function
param.mu = .1;	% Strong convexity parameter
param.L  = 1;   % Smoothness parameter

F = P.DeclareFunction('SmoothStronglyConvex',param); 
% F is the objective function

% (2) Set up the starting point and initial condition
x0       = P.StartingPoint();	 % x0 is some starting point
[xs,fs]  = F.OptimalPoint(); 	 % xs is an optimal point, and fs=F(xs)
[g0, f0] = F.oracle(x0);               
P.InitialCondition( f0-fs <= 1); % Initial condition f0-fs <= 1

% (3) Algorithm
N   = 5;
eps = 0.1;
x   = x0;
for i = 1:N
    d = inexactsubgradient(x, F, eps, 0);
    x = exactlinesearch_step(x, F, d);
end