function y=ml_step3(a,b,t,eps0)
% ml_step3 - step response of three-term FODE
%
%   y=ml_step3(a1,a2,a3,b1,b2,t,eps0)
%
%   a1, a2, a3, b1, b2 - the parameters of the three-term FODE
%   t - the time vector
%   eps0 - the error tolerance
%   y - the numerical solutions of the three-term FODE
   
% Copyright (c) Dingyu Xue, Northeastern University, China
% Last modified 28 March, 2017 
% Last modified 18 May, 2022 
   arguments, a(1,3), b(1,2), t(:,1), eps0(1,1)=eps; end
   y=0; k=0; ya=1; 
   a1=a(1); a2=a(2)/a1; a3=a(3)/a1; b1=b(1); b2=b(2);
   while max(abs(ya))>=eps0
      ya=(-1)^k/gamma(k+1)*a3^k*t.^((k+1)*b1).*...
          ml_func([b1-b2,b1+b2*k+1],-a2*t.^(b1-b2),k,eps0);
      y=y+ya; k=k+1;
   end, y=y/a1;
end
