procedure bode(num[1],den[1],f[1],out L[1],out fi[1]) k=cols(f); fi0=0; for (i=1,k) begin c=complex(0,f[i]); cn=polyval(num,c); c=polyval(den,c); if abs(c)>0 then c=cn/c; a=abs(c); if a>0 then L[i]=20*ln(a)/ln(10) else L[i]=-100; fi[i]=arg(c)*180/pi; while abs(fi[i]-fi0)>180 do if (fi[i]-fi0)>180 then fi[i]=fi[i]-360 else fi[i]=fi[i]+360; fi0=fi[i]; end; end;