function [K] = ku0u0(x, xp, hyp, ubar, ubarp, dt, i)

logsigma = hyp(1);
logtheta = hyp(2);

a1 = hyp(3);
a2 = hyp(4);
a3 = hyp(5);
a4 = hyp(6);

n_x = size(x,1);
n_xp = size(xp,1);

x = repmat(x,1,n_xp);
xp = repmat(xp',n_x,1);

ubar = repmat(ubar,1,n_xp);
ubarp = repmat(ubarp',n_x,1);

switch i


case 0

K=exp(1).^(logsigma+(-8).*logtheta+(-1/2).*exp(1).^((-1).*logtheta).*(x+( ...
  -1).*xp).^2).*(exp(1).^(2.*logtheta).*(exp(1).^(2.*logtheta).*(exp(1).^( ...
  2.*logtheta).*(exp(1).^(2.*logtheta)+a1.*dt.*exp(1).^logtheta.*(a1.*dt.* ...
  ubar.*ubarp+(-1).*(ubar+(-1).*ubarp).*(x+(-1).*xp))+(-1).*a1.^2.*dt.^2.* ...
  ubar.*ubarp.*(x+(-1).*xp).^2)+a2.*dt.*exp(1).^logtheta.*((-2).*exp(1).^( ...
  2.*logtheta)+exp(1).^logtheta.*(3.*a1.*dt.*(ubar+(-1).*ubarp)+2.*(x+(-1) ...
  .*xp)).*(x+(-1).*xp)+(-1).*a1.*dt.*(ubar+(-1).*ubarp).*(x+(-1).*xp).^3)+ ...
  a2.^2.*dt.^2.*(3.*exp(1).^(2.*logtheta)+(-6).*exp(1).^logtheta.*(x+(-1) ...
  .*xp).^2+(x+(-1).*xp).^4))+(-1).*a1.*a3.*dt.^2.*exp(1).^(2.*logtheta).*( ...
  ubar+ubarp).*(3.*exp(1).^(2.*logtheta)+(-6).*exp(1).^logtheta.*(x+(-1).* ...
  xp).^2+(x+(-1).*xp).^4)+a3.^2.*dt.^2.*(15.*exp(1).^(3.*logtheta)+(-45).* ...
  exp(1).^(2.*logtheta).*(x+(-1).*xp).^2+15.*exp(1).^logtheta.*(x+(-1).* ...
  xp).^4+(-1).*(x+(-1).*xp).^6))+a4.*dt.*exp(1).^(2.*logtheta).*((-2).* ...
  a2.*dt.*(15.*exp(1).^(3.*logtheta)+(-45).*exp(1).^(2.*logtheta).*(x+(-1) ...
  .*xp).^2+15.*exp(1).^logtheta.*(x+(-1).*xp).^4+(-1).*(x+(-1).*xp).^6)+ ...
  exp(1).^logtheta.*(6.*exp(1).^(3.*logtheta)+(-3).*exp(1).^(2.*logtheta) ...
  .*(5.*a1.*dt.*(ubar+(-1).*ubarp)+4.*(x+(-1).*xp)).*(x+(-1).*xp)+(-1).* ...
  a1.*dt.*(ubar+(-1).*ubarp).*(x+(-1).*xp).^5+2.*exp(1).^logtheta.*(x+(-1) ...
  .*xp).^3.*(5.*a1.*dt.*(ubar+(-1).*ubarp)+x+(-1).*xp)))+a4.^2.*dt.^2.*( ...
  105.*exp(1).^(4.*logtheta)+(-420).*exp(1).^(3.*logtheta).*(x+(-1).*xp) ...
  .^2+210.*exp(1).^(2.*logtheta).*(x+(-1).*xp).^4+(-28).*exp(1) ...
  .^logtheta.*(x+(-1).*xp).^6+(x+(-1).*xp).^8));


case 1 % logsigma

K=exp(1).^(logsigma+(-8).*logtheta+(-1/2).*exp(1).^((-1).*logtheta).*(x+( ...
  -1).*xp).^2).*(exp(1).^(2.*logtheta).*(exp(1).^(2.*logtheta).*(exp(1).^( ...
  2.*logtheta).*(exp(1).^(2.*logtheta)+a1.*dt.*exp(1).^logtheta.*(a1.*dt.* ...
  ubar.*ubarp+(-1).*(ubar+(-1).*ubarp).*(x+(-1).*xp))+(-1).*a1.^2.*dt.^2.* ...
  ubar.*ubarp.*(x+(-1).*xp).^2)+a2.*dt.*exp(1).^logtheta.*((-2).*exp(1).^( ...
  2.*logtheta)+exp(1).^logtheta.*(3.*a1.*dt.*(ubar+(-1).*ubarp)+2.*(x+(-1) ...
  .*xp)).*(x+(-1).*xp)+(-1).*a1.*dt.*(ubar+(-1).*ubarp).*(x+(-1).*xp).^3)+ ...
  a2.^2.*dt.^2.*(3.*exp(1).^(2.*logtheta)+(-6).*exp(1).^logtheta.*(x+(-1) ...
  .*xp).^2+(x+(-1).*xp).^4))+(-1).*a1.*a3.*dt.^2.*exp(1).^(2.*logtheta).*( ...
  ubar+ubarp).*(3.*exp(1).^(2.*logtheta)+(-6).*exp(1).^logtheta.*(x+(-1).* ...
  xp).^2+(x+(-1).*xp).^4)+a3.^2.*dt.^2.*(15.*exp(1).^(3.*logtheta)+(-45).* ...
  exp(1).^(2.*logtheta).*(x+(-1).*xp).^2+15.*exp(1).^logtheta.*(x+(-1).* ...
  xp).^4+(-1).*(x+(-1).*xp).^6))+a4.*dt.*exp(1).^(2.*logtheta).*((-2).* ...
  a2.*dt.*(15.*exp(1).^(3.*logtheta)+(-45).*exp(1).^(2.*logtheta).*(x+(-1) ...
  .*xp).^2+15.*exp(1).^logtheta.*(x+(-1).*xp).^4+(-1).*(x+(-1).*xp).^6)+ ...
  exp(1).^logtheta.*(6.*exp(1).^(3.*logtheta)+(-3).*exp(1).^(2.*logtheta) ...
  .*(5.*a1.*dt.*(ubar+(-1).*ubarp)+4.*(x+(-1).*xp)).*(x+(-1).*xp)+(-1).* ...
  a1.*dt.*(ubar+(-1).*ubarp).*(x+(-1).*xp).^5+2.*exp(1).^logtheta.*(x+(-1) ...
  .*xp).^3.*(5.*a1.*dt.*(ubar+(-1).*ubarp)+x+(-1).*xp)))+a4.^2.*dt.^2.*( ...
  105.*exp(1).^(4.*logtheta)+(-420).*exp(1).^(3.*logtheta).*(x+(-1).*xp) ...
  .^2+210.*exp(1).^(2.*logtheta).*(x+(-1).*xp).^4+(-28).*exp(1) ...
  .^logtheta.*(x+(-1).*xp).^6+(x+(-1).*xp).^8));


case 2 % logtheta

K=exp(1).^(logsigma+(-8).*logtheta+(-1/2).*exp(1).^((-1).*logtheta).*(x+( ...
  -1).*xp).^2).*(exp(1).^(3.*logtheta).*(exp(1).^(2.*logtheta).*(6.* ...
  a2.^2.*dt.^2.*(exp(1).^logtheta+(-1).*(x+(-1).*xp).^2)+exp(1) ...
  .^logtheta.*(4.*exp(1).^(2.*logtheta)+3.*a1.*dt.*exp(1).^logtheta.*(a1.* ...
  dt.*ubar.*ubarp+(-1).*(ubar+(-1).*ubarp).*(x+(-1).*xp))+(-2).*a1.^2.* ...
  dt.^2.*ubar.*ubarp.*(x+(-1).*xp).^2)+a2.*dt.*((-6).*exp(1).^(2.* ...
  logtheta)+2.*exp(1).^logtheta.*(3.*a1.*dt.*(ubar+(-1).*ubarp)+2.*(x+(-1) ...
  .*xp)).*(x+(-1).*xp)+(-1).*a1.*dt.*(ubar+(-1).*ubarp).*(x+(-1).*xp).^3)) ...
  +2.*exp(1).^logtheta.*(exp(1).^(2.*logtheta).*(exp(1).^(2.*logtheta)+ ...
  a1.*dt.*exp(1).^logtheta.*(a1.*dt.*ubar.*ubarp+(-1).*(ubar+(-1).*ubarp) ...
  .*(x+(-1).*xp))+(-1).*a1.^2.*dt.^2.*ubar.*ubarp.*(x+(-1).*xp).^2)+a2.* ...
  dt.*exp(1).^logtheta.*((-2).*exp(1).^(2.*logtheta)+exp(1).^logtheta.*( ...
  3.*a1.*dt.*(ubar+(-1).*ubarp)+2.*(x+(-1).*xp)).*(x+(-1).*xp)+(-1).*a1.* ...
  dt.*(ubar+(-1).*ubarp).*(x+(-1).*xp).^3)+a2.^2.*dt.^2.*(3.*exp(1).^(2.* ...
  logtheta)+(-6).*exp(1).^logtheta.*(x+(-1).*xp).^2+(x+(-1).*xp).^4))+(-6) ...
  .*a1.*a3.*dt.^2.*exp(1).^(2.*logtheta).*(ubar+ubarp).*(exp(1).^logtheta+ ...
  (-1).*(x+(-1).*xp).^2)+15.*a3.^2.*dt.^2.*(3.*exp(1).^(2.*logtheta)+(-6) ...
  .*exp(1).^logtheta.*(x+(-1).*xp).^2+(x+(-1).*xp).^4)+(-2).*a1.*a3.* ...
  dt.^2.*exp(1).^logtheta.*(ubar+ubarp).*(3.*exp(1).^(2.*logtheta)+(-6).* ...
  exp(1).^logtheta.*(x+(-1).*xp).^2+(x+(-1).*xp).^4))+2.*exp(1).^(2.* ...
  logtheta).*(exp(1).^(2.*logtheta).*(exp(1).^(2.*logtheta).*(exp(1).^(2.* ...
  logtheta)+a1.*dt.*exp(1).^logtheta.*(a1.*dt.*ubar.*ubarp+(-1).*(ubar+( ...
  -1).*ubarp).*(x+(-1).*xp))+(-1).*a1.^2.*dt.^2.*ubar.*ubarp.*(x+(-1).*xp) ...
  .^2)+a2.*dt.*exp(1).^logtheta.*((-2).*exp(1).^(2.*logtheta)+exp(1) ...
  .^logtheta.*(3.*a1.*dt.*(ubar+(-1).*ubarp)+2.*(x+(-1).*xp)).*(x+(-1).* ...
  xp)+(-1).*a1.*dt.*(ubar+(-1).*ubarp).*(x+(-1).*xp).^3)+a2.^2.*dt.^2.*( ...
  3.*exp(1).^(2.*logtheta)+(-6).*exp(1).^logtheta.*(x+(-1).*xp).^2+(x+(-1) ...
  .*xp).^4))+(-1).*a1.*a3.*dt.^2.*exp(1).^(2.*logtheta).*(ubar+ubarp).*( ...
  3.*exp(1).^(2.*logtheta)+(-6).*exp(1).^logtheta.*(x+(-1).*xp).^2+(x+(-1) ...
  .*xp).^4)+a3.^2.*dt.^2.*(15.*exp(1).^(3.*logtheta)+(-45).*exp(1).^(2.* ...
  logtheta).*(x+(-1).*xp).^2+15.*exp(1).^logtheta.*(x+(-1).*xp).^4+(-1).*( ...
  x+(-1).*xp).^6))+2.*a4.*dt.*exp(1).^(2.*logtheta).*((-2).*a2.*dt.*(15.* ...
  exp(1).^(3.*logtheta)+(-45).*exp(1).^(2.*logtheta).*(x+(-1).*xp).^2+15.* ...
  exp(1).^logtheta.*(x+(-1).*xp).^4+(-1).*(x+(-1).*xp).^6)+exp(1) ...
  .^logtheta.*(6.*exp(1).^(3.*logtheta)+(-3).*exp(1).^(2.*logtheta).*(5.* ...
  a1.*dt.*(ubar+(-1).*ubarp)+4.*(x+(-1).*xp)).*(x+(-1).*xp)+(-1).*a1.*dt.* ...
  (ubar+(-1).*ubarp).*(x+(-1).*xp).^5+2.*exp(1).^logtheta.*(x+(-1).*xp) ...
  .^3.*(5.*a1.*dt.*(ubar+(-1).*ubarp)+x+(-1).*xp)))+(exp(1).^(2.*logtheta) ...
  .*(exp(1).^(2.*logtheta).*(exp(1).^(2.*logtheta).*(exp(1).^(2.*logtheta) ...
  +a1.*dt.*exp(1).^logtheta.*(a1.*dt.*ubar.*ubarp+(-1).*(ubar+(-1).*ubarp) ...
  .*(x+(-1).*xp))+(-1).*a1.^2.*dt.^2.*ubar.*ubarp.*(x+(-1).*xp).^2)+a2.* ...
  dt.*exp(1).^logtheta.*((-2).*exp(1).^(2.*logtheta)+exp(1).^logtheta.*( ...
  3.*a1.*dt.*(ubar+(-1).*ubarp)+2.*(x+(-1).*xp)).*(x+(-1).*xp)+(-1).*a1.* ...
  dt.*(ubar+(-1).*ubarp).*(x+(-1).*xp).^3)+a2.^2.*dt.^2.*(3.*exp(1).^(2.* ...
  logtheta)+(-6).*exp(1).^logtheta.*(x+(-1).*xp).^2+(x+(-1).*xp).^4))+(-1) ...
  .*a1.*a3.*dt.^2.*exp(1).^(2.*logtheta).*(ubar+ubarp).*(3.*exp(1).^(2.* ...
  logtheta)+(-6).*exp(1).^logtheta.*(x+(-1).*xp).^2+(x+(-1).*xp).^4)+ ...
  a3.^2.*dt.^2.*(15.*exp(1).^(3.*logtheta)+(-45).*exp(1).^(2.*logtheta).*( ...
  x+(-1).*xp).^2+15.*exp(1).^logtheta.*(x+(-1).*xp).^4+(-1).*(x+(-1).*xp) ...
  .^6))+a4.*dt.*exp(1).^(2.*logtheta).*((-2).*a2.*dt.*(15.*exp(1).^(3.* ...
  logtheta)+(-45).*exp(1).^(2.*logtheta).*(x+(-1).*xp).^2+15.*exp(1) ...
  .^logtheta.*(x+(-1).*xp).^4+(-1).*(x+(-1).*xp).^6)+exp(1).^logtheta.*( ...
  6.*exp(1).^(3.*logtheta)+(-3).*exp(1).^(2.*logtheta).*(5.*a1.*dt.*(ubar+ ...
  (-1).*ubarp)+4.*(x+(-1).*xp)).*(x+(-1).*xp)+(-1).*a1.*dt.*(ubar+(-1).* ...
  ubarp).*(x+(-1).*xp).^5+2.*exp(1).^logtheta.*(x+(-1).*xp).^3.*(5.*a1.* ...
  dt.*(ubar+(-1).*ubarp)+x+(-1).*xp)))+a4.^2.*dt.^2.*(105.*exp(1).^(4.* ...
  logtheta)+(-420).*exp(1).^(3.*logtheta).*(x+(-1).*xp).^2+210.*exp(1).^( ...
  2.*logtheta).*(x+(-1).*xp).^4+(-28).*exp(1).^logtheta.*(x+(-1).*xp).^6+( ...
  x+(-1).*xp).^8)).*((-8)+(1/2).*exp(1).^((-1).*logtheta).*(x+(-1).*xp) ...
  .^2)+28.*a4.^2.*dt.^2.*exp(1).^logtheta.*(15.*exp(1).^(3.*logtheta)+( ...
  -45).*exp(1).^(2.*logtheta).*(x+(-1).*xp).^2+15.*exp(1).^logtheta.*(x+( ...
  -1).*xp).^4+(-1).*(x+(-1).*xp).^6)+a4.*dt.*exp(1).^(3.*logtheta).*(6.* ...
  exp(1).^(3.*logtheta)+(-30).*a2.*dt.*(3.*exp(1).^(2.*logtheta)+(-6).* ...
  exp(1).^logtheta.*(x+(-1).*xp).^2+(x+(-1).*xp).^4)+2.*exp(1).^logtheta.* ...
  (9.*exp(1).^(2.*logtheta)+(-3).*exp(1).^logtheta.*(5.*a1.*dt.*(ubar+(-1) ...
  .*ubarp)+4.*(x+(-1).*xp)).*(x+(-1).*xp)+(x+(-1).*xp).^3.*(5.*a1.*dt.*( ...
  ubar+(-1).*ubarp)+x+(-1).*xp))+(-3).*exp(1).^(2.*logtheta).*(5.*a1.*dt.* ...
  (ubar+(-1).*ubarp)+4.*(x+(-1).*xp)).*(x+(-1).*xp)+(-1).*a1.*dt.*(ubar+( ...
  -1).*ubarp).*(x+(-1).*xp).^5+2.*exp(1).^logtheta.*(x+(-1).*xp).^3.*(5.* ...
  a1.*dt.*(ubar+(-1).*ubarp)+x+(-1).*xp)));


case 3 % a1

K=dt.*exp(1).^(logsigma+(-5).*logtheta+(-1/2).*exp(1).^((-1).*logtheta).*( ...
  x+(-1).*xp).^2).*(exp(1).^(2.*logtheta).*(exp(1).^logtheta.*(2.*a1.*dt.* ...
  ubar.*ubarp.*(exp(1).^logtheta+(-1).*(x+(-1).*xp).^2)+(-1).*exp(1) ...
  .^logtheta.*(ubar+(-1).*ubarp).*(x+(-1).*xp))+(-1).*a2.*dt.*(ubar+(-1).* ...
  ubarp).*((-3).*exp(1).^logtheta+(x+(-1).*xp).^2).*(x+(-1).*xp))+(-1).* ...
  a3.*dt.*exp(1).^logtheta.*(ubar+ubarp).*(3.*exp(1).^(2.*logtheta)+(-6).* ...
  exp(1).^logtheta.*(x+(-1).*xp).^2+(x+(-1).*xp).^4)+a4.*dt.*(ubar+(-1).* ...
  ubarp).*((-15).*exp(1).^(2.*logtheta)+10.*exp(1).^logtheta.*(x+(-1).*xp) ...
  .^2+(-1).*(x+(-1).*xp).^4).*(x+(-1).*xp));


case 4 % a2

K=dt.*exp(1).^(logsigma+(-6).*logtheta+(-1/2).*exp(1).^((-1).*logtheta).*( ...
  x+(-1).*xp).^2).*(exp(1).^(2.*logtheta).*(exp(1).^logtheta.*((-2).*exp( ...
  1).^(2.*logtheta)+exp(1).^logtheta.*(3.*a1.*dt.*(ubar+(-1).*ubarp)+2.*( ...
  x+(-1).*xp)).*(x+(-1).*xp)+(-1).*a1.*dt.*(ubar+(-1).*ubarp).*(x+(-1).* ...
  xp).^3)+2.*a2.*dt.*(3.*exp(1).^(2.*logtheta)+(-6).*exp(1).^logtheta.*(x+ ...
  (-1).*xp).^2+(x+(-1).*xp).^4))+(-2).*a4.*dt.*(15.*exp(1).^(3.*logtheta)+ ...
  (-45).*exp(1).^(2.*logtheta).*(x+(-1).*xp).^2+15.*exp(1).^logtheta.*(x+( ...
  -1).*xp).^4+(-1).*(x+(-1).*xp).^6));


case 5 % a3

K=dt.^2.*exp(1).^(logsigma+(-6).*logtheta+(-1/2).*exp(1).^((-1).*logtheta) ...
  .*(x+(-1).*xp).^2).*((-1).*a1.*exp(1).^(2.*logtheta).*(ubar+ubarp).*(3.* ...
  exp(1).^(2.*logtheta)+(-6).*exp(1).^logtheta.*(x+(-1).*xp).^2+(x+(-1).* ...
  xp).^4)+2.*a3.*(15.*exp(1).^(3.*logtheta)+(-45).*exp(1).^(2.*logtheta).* ...
  (x+(-1).*xp).^2+15.*exp(1).^logtheta.*(x+(-1).*xp).^4+(-1).*(x+(-1).*xp) ...
  .^6));


case 6 % a4

K=dt.*exp(1).^(logsigma+(-8).*logtheta+(-1/2).*exp(1).^((-1).*logtheta).*( ...
  x+(-1).*xp).^2).*(exp(1).^(2.*logtheta).*((-2).*a2.*dt.*(15.*exp(1).^( ...
  3.*logtheta)+(-45).*exp(1).^(2.*logtheta).*(x+(-1).*xp).^2+15.*exp(1) ...
  .^logtheta.*(x+(-1).*xp).^4+(-1).*(x+(-1).*xp).^6)+exp(1).^logtheta.*( ...
  6.*exp(1).^(3.*logtheta)+(-3).*exp(1).^(2.*logtheta).*(5.*a1.*dt.*(ubar+ ...
  (-1).*ubarp)+4.*(x+(-1).*xp)).*(x+(-1).*xp)+(-1).*a1.*dt.*(ubar+(-1).* ...
  ubarp).*(x+(-1).*xp).^5+2.*exp(1).^logtheta.*(x+(-1).*xp).^3.*(5.*a1.* ...
  dt.*(ubar+(-1).*ubarp)+x+(-1).*xp)))+2.*a4.*dt.*(105.*exp(1).^(4.* ...
  logtheta)+(-420).*exp(1).^(3.*logtheta).*(x+(-1).*xp).^2+210.*exp(1).^( ...
  2.*logtheta).*(x+(-1).*xp).^4+(-28).*exp(1).^logtheta.*(x+(-1).*xp).^6+( ...
  x+(-1).*xp).^8));


otherwise
        
        K = zeros(n_x, n_xp);
end

if K == 0

    K = zeros(n_x, n_xp);

end

end
