<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def get_freq_response(a, b, show_fig=True, SampleFreq=(2 * pi), NumOfFreqs=500, whole=False):
 """ This function takes an array of coefficients and finds the frequency response of the filter using scipy.signal.freqz. show_fig sets if the response should be plotted Parameters b : array_like Coefficients multiplying the x values (inputs of the filter) a : array_like Coefficients multiplying the y values (outputs of the filter) show_fig : bool, optional Verbosity of function (i.e. whether to plot frequency and phase response or whether to just return the values.) Options (Default is 1):
 False - Do not plot anything, just return values True - Plot Frequency and Phase response and return values SampleFreq : float, optional Sample frequency (in Hz) to simulate (used to convert frequency range to normalised frequency range) NumOfFreqs : int, optional Number of frequencies to use to simulate the frequency and phase response of the filter. Default is 500. Whole : bool, optional Sets whether to plot the whole response (0 to sample freq) or just to plot 0 to Nyquist (SampleFreq/2):
 False - (default) plot 0 to Nyquist (SampleFreq/2) True - plot the whole response (0 to sample freq) Returns ------- freqList : ndarray Array containing the frequencies at which the gain is calculated GainArray : ndarray Array containing the gain in dB of the filter when simulated (20*log_10(A_out/A_in)) PhaseDiffArray : ndarray Array containing the phase response of the filter - phase difference between the input signal and output signal at different frequencies """

    w, h = scipy.signal.freqz(b=b, a=a, worN=NumOfFreqs, whole=whole)
    freqList = w / (pi) * SampleFreq / 2.0
    himag = _np.array([hi.imag for hi in h])
    GainArray = 20 * _np.log10(_np.abs(h))
    PhaseDiffArray = _np.unwrap(_np.arctan2(_np.imag(h), _np.real(h)))

    fig1 = _plt.figure()
    ax1 = fig1.add_subplot(111)
    ax1.plot(freqList, GainArray, '-', label="Specified Filter")
    ax1.set_title("Frequency Response")
    if SampleFreq == 2 * pi:
        ax1.set_xlabel(("$\Omega$ - Normalized frequency "
                       "($\pi$=Nyquist Frequency)"))
    else:
        ax1.set_xlabel("frequency (Hz)")
    ax1.set_ylabel("Gain (dB)")
    ax1.set_xlim([0, SampleFreq / 2.0])
    if show_fig == True:
        _plt.show()
    fig2 = _plt.figure()
    ax2 = fig2.add_subplot(111)
    ax2.plot(freqList, PhaseDiffArray, '-', label="Specified Filter")
    ax2.set_title("Phase Response")
    if SampleFreq == 2 * pi:
        ax2.set_xlabel(("$\Omega$ - Normalized frequency "
                       "($\pi$=Nyquist Frequency)"))
    else:
        ax2.set_xlabel("frequency (Hz)")

    ax2.set_ylabel("Phase Difference")
    ax2.set_xlim([0, SampleFreq / 2.0])
    if show_fig == True:
        _plt.show()
    return freqList, GainArray, PhaseDiffArray, fig1, ax1, fig2, ax2