function [T,dT,w,d2]=aux_func(t,y0,alpha,p)
% aux_func - auxilliary function, not recommended to call directly

% Copyright (c) Dingyu Xue, Northeastern University, China
% Created  28 March, 2017
% Last Modified 18 May, 2022
   an=ceil(alpha); y0=y0(:); q=length(y0); d2=length(alpha);
   m=length(t); g=double(genfunc(p));
   for i=1:d2, w(:,i)=get_vecw(alpha(i),m,g)'; end
   b=y0./gamma(1:q)'; T=0; dT=zeros(m,d2);
   for i=1:q, T=T+b(i)*t.^(i-1); end
   for i=1:d2
      if an(i)==0, dT(:,i)=T;
      elseif an(i)<q
         for j=(an(i)+1):q
            dT(:,i)=dT(:,i)+(t.^(j-1-alpha(i)))*...
                  b(j)*gamma(j)/gamma(j-alpha(i));
end, end, end, end