def _zpklp2bp(z, p, k, wo=<NUM_LIT:1.0>, bw=<NUM_LIT:1.0>):
z = atleast_1d(z)<EOL>p = atleast_1d(p)<EOL>wo = float(wo)<EOL>bw = float(bw)<EOL>degree = _relative_degree(z, p)<EOL>z_lp = z * bw/<NUM_LIT:2><EOL>p_lp = p * bw/<NUM_LIT:2><EOL>z_lp = z_lp.astype(complex)<EOL>p_lp = p_lp.astype(complex)<EOL>z_bp = concatenate((z_lp + sqrt(z_lp**<NUM_LIT:2> - wo**<NUM_LIT:2>),<EOL>z_lp - sqrt(z_lp**<NUM_LIT:2> - wo**<NUM_LIT:2>)))<EOL>p_bp = concatenate((p_lp + sqrt(p_lp**<NUM_LIT:2> - wo**<NUM_LIT:2>),<EOL>p_lp - sqrt(p_lp**<NUM_LIT:2> - wo**<NUM_LIT:2>)))<EOL>z_bp = append(z_bp, zeros(degree))<EOL>k_bp = k * bw**degree<EOL>return z_bp, p_bp, k_bp<EOL>
Transform a lowpass filter prototype to a bandpass filter.

Return an analog band-pass filter with center frequency `wo` and
bandwidth `bw` from an analog low-pass filter prototype with unity
cutoff frequency, using zeros, poles, and gain ('zpk') representation.

Parameters
----------
z : ndarray
    Zeros of the analog IIR filter transfer function.
p : ndarray
    Poles of the analog IIR filter transfer function.
k : float
    System gain of the analog IIR filter transfer function.
wo : float
    Desired passband center, as angular frequency (e.g. rad/s).
    Defaults to no change.
bw : float
    Desired passband width, as angular frequency (e.g. rad/s).
    Defaults to 1.

Returns
-------
z : ndarray
    Zeros of the transformed band-pass filter transfer function.
p : ndarray
    Poles of the transformed band-pass filter transfer function.
k : float
    System gain of the transformed band-pass filter.

Notes
-----
This is derived from the s-plane substitution

.. math:: s \rightarrow \frac{s^2 + {\omega_0}^2}{s \cdot \mathrm{BW}}

This is the "wideband" transformation, producing a passband with
geometric (log frequency) symmetry about `wo`.