function eta4e = NCESTIMATE(c4n,n4e,n4ed,ed4e,e4ed,x)
m = size(n4e,1); n = size(e4ed,1);
eta4e = zeros(m,1); eta4ed = zeros(n,1);
for j = 1 : m
    gradU = x(ed4e(j,:))'*([1 1 1;c4n(n4e(j,:),:)']\[zeros(1,2);eye(2)]);
    eta4e(j) = (abs(det([1 1 1;c4n(n4e(j,:),:)'])/2)).^2;
    t = c4n(n4ed(ed4e(j,:),2),:)-c4n(n4ed(ed4e(j,:),1),:);
    signum = (-1).^(e4ed(ed4e(j,:),1)~=j);
    eta4ed(ed4e(j,:)) = eta4ed(ed4e(j,:)) + 2*signum.*(t*gradU');
end
eta4ed(e4ed(:,2)==0) = 0;
eta4e = sqrt(eta4e + 0.5*sum(eta4ed(ed4e).^2,2));
end