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: svd.m
    path of file: ./repos/chebfun/@chebfun
    
    the code of the file until where you have to start completion: function [U, S, V] = svd(A, econ)
%SVD   Singular value decomposition of a CHEBFUN.
%   [U, S, V] = SVD(A) or SVD(A, 0), where A is an array-valued column CHEBFUN
%   with N columns, produces an N x N diagonal matrix S with nonnegative
%   diagonal elements in nonincreasing order, a column CHEBFUN U with N
%   orthonormal columns, and an N x N unitary matrix V such that A = U*S*V'.
%
%   If A is a row CHEBFUN with N rows, then U is a unitary matrix and V' is an
%   array-valued row CHEBFUN.
%
%   S = SVD(A) returns a vector containing the singular values of A.
%
%   The computation is carried out by orthogonalization operations following
%   Battles's 2005 thesis [1].
%
%   [1] Z. Battles, "Numerical Linear Algebra for Continuous Functions",
%   D. Phil. thesis, University of Oxford, 2005.
%
% See also QR, MRDIVIDE, RANK.

% Copyright 2017 by The University of Oxford and The Chebfun Developers. 

    
function [U, S, V] = svd(A, econ)
%SVD   Singular value decomposition of a CHEBFUN.
%   [U, S, V] = SVD(A) or SVD(A, 0), where A is an array-valued column CHEBFUN
%   with N columns, produces an N x N diagonal matrix S with nonnegative
%   diagonal elements in nonincreasing order, a column CHEBFUN U with N
%   orthonormal columns, and an N x N unitary matrix V such that A = U*S*V'.
%
%   If A is a row CHEBFUN with N rows, then U is a unitary matrix and V' is an
%   array-valued row CHEBFUN.
%
%   S = SVD(A) returns a vector containing the singular values of A.
%
%   The computation is carried out by orthogonalization operations following
%   Battles's 2005 thesis [1].
%
%   [1] Z. Battles, "Numerical Linear Algebra for Continuous Functions",
%   D. Phil. thesis, University of Oxford, 2005.
%
% See also QR, MRDIVIDE, RANK.

% Copyright 2017 by The University of Oxford and The Chebfun Developers. 
% See http://www.chebfun.org/ for Chebfun information.

if ( (nargin > 2) || ((nargin == 2) && (econ ~= 0)) )
    error('CHEBFUN:CHEBFUN:svd:twoArgs',...
          'Use svd(A) or svd(A, 0) for SVD of array-valued CHEBFUN.');
end