function [M,err] = fadd_lsq(phi,m,n) % least-squares additive approx to Lip. func phi global Lmf global myopt if isempty(Lmf) Lmf = getLmf(m,n); else [a,b] = size(Lmf); if ~( (a==m^n) & (b==m*n) ) Lmf = getLmf(m,n); end end H = Lmf'*Lmf; f = - phi*Lmf; x = quadprog(H,f,[],[],[],[],0*phi',0*phi'+n,[],myopt); M = reshape(x,[m n]); err = sum(abs(Lmf*x - phi')); return