dsolve2(c_,y_,x_,-1):= if(isfree(c,y),d(c,x), dsolve(d(replace(c,y,y(x)),x)-y)); dsolve2(b_,y_,x_,2):= if(hasnot(b,y), int(b,x,2)+c_1+c_2*x, if(hasnot(b,x), int(1/sqrt(2int(b,y)),y)=C_1+x )); dsolve2(b_,y_,x_,1):= if(has(b,y/x), int(1/(replace(b,y/x,zz)-zz),zz,1,y/x)=C_1+log(x), if(hasnot(b,y), int(b,x)+c_1, if(hasnot(b,x),int(1/b,y)=C_1+x ))); dsolve2(a_+b_,y_,x_,p_):= if(p>1 and has(b,y), if(p<=2 and hasnot(a,b,x), int(1/sqrt(C_1+2int(a+b,y)),y,p-1)=C_2+x, if(has(a,x),block(k:=dsolve(expand(a+b),y), if(hasnot(k,y) and hasnot(d(k,x,round(p-0.6)),x), k, if(hasnot(k,y) and has(k,C_1) and hasnot(d(replace(k,C_1,0),x,round(p-0.6)),x), replace(k,C_1,0) )))))); dsolve2(a_+z_, y_,x_,1) := if(has(a+z,exp(y)), log(dsolve(y*replace(a+z,exp(y),y),y,x,1)) ); dsolve2(a_+b_*y_, y_,x_,q_) := if(hasnot(a,y), gsolution(b,y,x,q)+psolution(b,a,y,x,q)); dsolve2(a_+y_, y_,x_,q_) := if(hasnot(a,y), gsolution(1,y,x,q)+psolution(1,a,y,x,q));