/*
* n-order lp butterworth analog filter
* 1
* H(s)*H(-s) = -------------------
* 1 + (-s^2/wc^2)^n
*
* poles:
* pk = wc*(-sk + j*ck), k = 1, 2, .., n/2
*
* 2*k - 1
* where sk = sin(--------- * PI)
* 2*n
*
* 2*k - 1
* ck = cos(--------- * PI)
* 2*n
*
* so, (n is odd)
*
* n/2 wc^2
* H(s) = MUL ------------------------
* k=1 wc^2 + 2*wc*sk*s + s^2
*
* 1 - z^-1
* replace s with ----------
* 1 + z^-1
*
* so,
* n/2 wc^2 * (1 + 2*z^-1 + z^-2)
* H(z) = MUL ------------------------------------------------------------
* k=1 (wc^2+2*wc*sk+1) + (2*wc^2-2)*z^-1 + (wc^2-2*wc*sk+1)*z^-2
*
* if n is even,
*
* p0 = -wc
*
* so,
*
* wc n/2 wc^2
* H(s) = -------- * MUL ------------------------
* wc + s k=1 wc^2 + 2*wc*sk*s + s^2
*
* and,
*
* wc*(1+z^-1)
* H(z) = ---------------------- * MUL ....
* (wc+1) + (wc-1)*z^-1
*
*
* NOTE:
* here wc is not normalized digital frequency but analog frequency
*
* wc = tan(fc*PI), where fc is normalized digital frequency
*/
/* * n-th order chebyshev I analog lpf's transfer function: * * 1 * H(s) = -------------------- * 1 + e^2*Tn^2(s/wc) * * where e is the ripple factor, wc is the cutoff frequency * and Tn() is nth order Chebyshev polynomial. * * poles: * * pk = (+-sinh(A)*sin(B) + jcosh(A)*cos(B))*wc * * = Rp + j*Ip * * 1 1 * where A = ---*arsinh(---), * n e * * PI 2*k-1 * B = ---*-------, k = 1, 2, ... n/2 * 2 n * * so, * n/2 1 * H(s) = MUL ------------------------------------------ * k=1 1 - ((pk+pk~)/(pk*pk~))*s + s^2/(pk*pk~) * * n/2 1 * = MUL --------------------------------------------- * k=1 1 - ((2*Rp)/(Rp^2+Ip^2))*s + s^2/(Rp^2+Ip^2) * * n/2 1 * = MUL ------------------- * k=1 1 + A1*s + A2*s^2 * * where pk have negtive real parts * * 1 - z^-1 * replace s with ---------- * 1 + z^-1 * * n/2 1 + 2*z^-1 + z^-2 * H(z) = MUL -------------------------------------------- * k=1 (1+A1+A2) + (2-2*A2)*z^-1 + (1-A1+A2)*z^-2 * * * NOTE: * wc is analog frequency; *
*/