function [allbp breakpoint] = TopDown( T,left,right,max_error)
allbp=[]; %+++++++++++++++
small_T=T(left:right);
best_so_far=inf;
n=length(small_T);
for i=2:n-1
error_split=split(small_T,i);
if error_split<best_so_far
breakpoint=left+i-1;
best_so_far=error_split;
allbp=[allbp breakpoint]; %++++++++++++++
end
end
if (errorsplit(T(left:breakpoint))>max_error)
breakpoint=TopDown(T,left,breakpoint,max_error);
allbp=[allbp breakpoint]; %+++++++++++++++++
end
if (errorsplit(T(breakpoint+1:right))>max_error)
breakpoint=TopDown(T,breakpoint,right,max_error);
allbp=[allbp breakpoint]; %++++++++++++++++
end
end