module: amplifier_limited_swing
description: 
parameters:  double k0, double k1
             double k2, double k3
             double bw, double max
             double min, int filt_en
	     int nonlin_en
inputs:  double in double reset
outputs:  double out
classes:  
  Amp amp1("k0+k1*x+k2*x^2+k3*x^3","k0,k1,k2,k3,Min,Max",k0,1,k2,k3,min,max)
  Filter filt1("1","1+1/(2*pi*fp)*s","fp,Ts",bw,Ts)
static_variables:  
init:  
end:  
code:  
  if (reset > 0.0)
  {
    filt1.reset(0.0);
  }
  else
  {
    if(nonlin_en)
    {
        amp1.inp(tanh(k1*in));
    }
    else
    {
	amp1.inp(k1*in);
    }
    filt1.inp(amp1.out);
  }
  if(filt_en)
  {
    out = filt1.out;
  }
  else
  {
    out = amp1.out;
  }

