Fixed-point functions for single and cascaded (double, triple, and quadruple) biquad filters.
BiQuad function parameter combinations for input sample, history data, and computed result are provided for all supported fixed-point formats (Q25, Q28, Q31).
// - n01, n02, n03 and n04 indicate cascade count (n01 for single, n02/03/04 for double, triple, quadruple). // - r??x??c?? indicates the sample data (x), coefficient and history data, and filter result formats respectively. // - Example: xsignalproc_biq_n02_r28x25c31 --> 2x cascaded BiQuad, Q28 sample, Q25 coefficients, and a Q31 result.
- nNN indicates the biquad filter cascade count (n01 for single, n02/03/04 for double, triple, quadruple).
- rRRxXXcCC indicates the result (RR), sample data (XX), and coefficient (CC) formats respectively.
Example: Function for a single biquad filter with a Q28 formatted sample, Q25 formatted coefficients, and a Q31 formatted result:
int xsignalproc_biquad_n01_r31x28c25( int sample, const int coefficients[5], int history[5] )
The following example shows how to use various biquad functions.
Example for single biquad filter using Q28 fixed-point format:
const int coefficients[5] = { Q28(+0.99415702),Q28(-1.97113267),Q28(+0.97707625),Q28(+1.97104121),Q28(-0.97132473) }; int history[5] = { 0,0,0,0,0 }; // Must be initialized to zero's sample_q28 = xsignalproc_biquad_n01_r28x28c28( sample_q28, coefficients, history );
where:
- 'history' must be inititalized to all zeros
Example for 4-times cascaded biquad filter using Q28 fixed-point format:
const int coefficients[4][5] = {{ Q28(+0.99415702),Q28(-1.97113267),Q28(+0.97707625),Q28(+1.97104121),Q28(-0.97132473) }, { Q28(+0.99415702),Q28(-1.97113267),Q28(+0.97707625),Q28(+1.97104121),Q28(-0.97132473) }, { Q28(+0.99415702),Q28(-1.97113267),Q28(+0.97707625),Q28(+1.97104121),Q28(-0.97132473) }, { Q28(+0.99415702),Q28(-1.97113267),Q28(+0.97707625),Q28(+1.97104121),Q28(-0.97132473) }}; int history[4][5] = {{0,0,0,0,0},{0,0,0,0,0},{0,0,0,0,0},{0,0,0,0,0}}; // Must be initialized to zero's sample_q28 = xsignalproc_biquad_n04_r28x28c28( sample_q28, coefficients, history );
where:
- 'history' must be inititalized to all zeros
xsignalproc_biquad.h Fixed-point functions for single and cascaded (double, triple, and quadruple) biquad filters xsignalproc_biquad.xc
#ifndef XSIGNALPROC_BIQUAD_INCLUDED #define XSIGNALPROC_BIQUAD_INCLUDED // Function naming conventions: // // - n01, n02, n03 and n04 indicate cascade count (n01 for single, n02/03/04 for double, triple, quadruple). // - r??x??c?? indicates the sample data (x), coefficient and history data, and filter result formats respectively. // - Example: xsignalproc_biq_n02_r28x25c31 --> 2x cascaded BiQuad, Q28 sample, Q25 coefficients, and a Q31 result. #include "xstream-dsp-types.h" int xsignalproc_biquad_n01_r31x31c31( int sample, const int coefficients[5], int history[5] ); int xsignalproc_biquad_n01_r31x31c28( int sample, const int coefficients[5], int history[5] ); int xsignalproc_biquad_n01_r31x31c25( int sample, const int coefficients[5], int history[5] ); int xsignalproc_biquad_n01_r31x28c31( int sample, const int coefficients[5], int history[5] ); int xsignalproc_biquad_n01_r31x28c28( int sample, const int coefficients[5], int history[5] ); int xsignalproc_biquad_n01_r31x28c25( int sample, const int coefficients[5], int history[5] ); int xsignalproc_biquad_n01_r31x25c31( int sample, const int coefficients[5], int history[5] ); int xsignalproc_biquad_n01_r31x25c28( int sample, const int coefficients[5], int history[5] ); int xsignalproc_biquad_n01_r31x25c25( int sample, const int coefficients[5], int history[5] ); int xsignalproc_biquad_n01_r28x31c31( int sample, const int coefficients[5], int history[5] ); int xsignalproc_biquad_n01_r28x31c28( int sample, const int coefficients[5], int history[5] ); int xsignalproc_biquad_n01_r28x31c25( int sample, const int coefficients[5], int history[5] ); int xsignalproc_biquad_n01_r28x28c31( int sample, const int coefficients[5], int history[5] ); int xsignalproc_biquad_n01_r28x28c28( int sample, const int coefficients[5], int history[5] ); int xsignalproc_biquad_n01_r28x28c25( int sample, const int coefficients[5], int history[5] ); int xsignalproc_biquad_n01_r28x25c31( int sample, const int coefficients[5], int history[5] ); int xsignalproc_biquad_n01_r28x25c28( int sample, const int coefficients[5], int history[5] ); int xsignalproc_biquad_n01_r28x25c25( int sample, const int coefficients[5], int history[5] ); int xsignalproc_biquad_n01_r25x31c31( int sample, const int coefficients[5], int history[5] ); int xsignalproc_biquad_n01_r25x31c28( int sample, const int coefficients[5], int history[5] ); int xsignalproc_biquad_n01_r25x31c25( int sample, const int coefficients[5], int history[5] ); int xsignalproc_biquad_n01_r25x28c31( int sample, const int coefficients[5], int history[5] ); int xsignalproc_biquad_n01_r25x28c28( int sample, const int coefficients[5], int history[5] ); int xsignalproc_biquad_n01_r25x28c25( int sample, const int coefficients[5], int history[5] ); int xsignalproc_biquad_n01_r25x25c31( int sample, const int coefficients[5], int history[5] ); int xsignalproc_biquad_n01_r25x25c28( int sample, const int coefficients[5], int history[5] ); int xsignalproc_biquad_n01_r25x25c25( int sample, const int coefficients[5], int history[5] ); #define XSIGNALPROC_BIQUAD_NN_INTERFACE( nn ) \ \ int xsignalproc_biquad_n##N##_r31x31c31( int sample, const int coefficients[N][5], int history[N][5] ); \ int xsignalproc_biquad_n##N##_r31x31c28( int sample, const int coefficients[N][5], int history[N][5] ); \ int xsignalproc_biquad_n##N##_r31x31c25( int sample, const int coefficients[N][5], int history[N][5] ); \ int xsignalproc_biquad_n##N##_r31x28c31( int sample, const int coefficients[N][5], int history[N][5] ); \ int xsignalproc_biquad_n##N##_r31x28c28( int sample, const int coefficients[N][5], int history[N][5] ); \ int xsignalproc_biquad_n##N##_r31x28c25( int sample, const int coefficients[N][5], int history[N][5] ); \ int xsignalproc_biquad_n##N##_r31x25c31( int sample, const int coefficients[N][5], int history[N][5] ); \ int xsignalproc_biquad_n##N##_r31x25c28( int sample, const int coefficients[N][5], int history[N][5] ); \ int xsignalproc_biquad_n##N##_r31x25c25( int sample, const int coefficients[N][5], int history[N][5] ); \ int xsignalproc_biquad_n##N##_r28x31c31( int sample, const int coefficients[N][5], int history[N][5] ); \ int xsignalproc_biquad_n##N##_r28x31c28( int sample, const int coefficients[N][5], int history[N][5] ); \ int xsignalproc_biquad_n##N##_r28x31c25( int sample, const int coefficients[N][5], int history[N][5] ); \ int xsignalproc_biquad_n##N##_r28x28c31( int sample, const int coefficients[N][5], int history[N][5] ); \ int xsignalproc_biquad_n##N##_r28x28c28( int sample, const int coefficients[N][5], int history[N][5] ); \ int xsignalproc_biquad_n##N##_r28x28c25( int sample, const int coefficients[N][5], int history[N][5] ); \ int xsignalproc_biquad_n##N##_r28x25c31( int sample, const int coefficients[N][5], int history[N][5] ); \ int xsignalproc_biquad_n##N##_r28x25c28( int sample, const int coefficients[N][5], int history[N][5] ); \ int xsignalproc_biquad_n##N##_r28x25c25( int sample, const int coefficients[N][5], int history[N][5] ); \ int xsignalproc_biquad_n##N##_r25x31c31( int sample, const int coefficients[N][5], int history[N][5] ); \ int xsignalproc_biquad_n##N##_r25x31c28( int sample, const int coefficients[N][5], int history[N][5] ); \ int xsignalproc_biquad_n##N##_r25x31c25( int sample, const int coefficients[N][5], int history[N][5] ); \ int xsignalproc_biquad_n##N##_r25x28c31( int sample, const int coefficients[N][5], int history[N][5] ); \ int xsignalproc_biquad_n##N##_r25x28c28( int sample, const int coefficients[N][5], int history[N][5] ); \ int xsignalproc_biquad_n##N##_r25x28c25( int sample, const int coefficients[N][5], int history[N][5] ); \ int xsignalproc_biquad_n##N##_r25x25c31( int sample, const int coefficients[N][5], int history[N][5] ); \ int xsignalproc_biquad_n##N##_r25x25c28( int sample, const int coefficients[N][5], int history[N][5] ); \ int xsignalproc_biquad_n##N##_r25x25c25( int sample, const int coefficients[N][5], int history[N][5] ); XSIGNALPROC_BIQUAD_NN_INTERFACE( 02 ) XSIGNALPROC_BIQUAD_NN_INTERFACE( 03 ) XSIGNALPROC_BIQUAD_NN_INTERFACE( 04 ) #endif
#include "xsignalproc_biquad.h" #include "xsignalproc_common.h" #include <xs1.h> inline int _xsignalproc_biq_adjust_R05( int ah, unsigned al ) { return (ah>>5); } inline int _xsignalproc_biq_adjust_R02( int ah, unsigned al ) { return (ah>>2); } inline int _xsignalproc_biq_adjust_L01( int ah, unsigned al ) { return (ah<< 1)+(al>>31); } inline int _xsignalproc_biq_adjust_L04( int ah, unsigned al ) { return (ah<< 4)+(al>>28); } inline int _xsignalproc_biq_adjust_L07( int ah, unsigned al ) { return (ah<< 7)+(al>>25); } inline int _xsignalproc_biq_adjust_L10( int ah, unsigned al ) { return (ah<<10)+(al>>22); } inline int _xsignalproc_biq_adjust_L13( int ah, unsigned al ) { return (ah<<13)+(al>>19); } #define _XSIGNALPROC_BIQUAD( adjust ) \ \ register int ah=0; register unsigned int rr, al=0; \ switch( hh[4] ) \ { \ case 0: hh[4] = 1; \ {ah,al} = macs( hh[0], ba[ 2], ah, al ); \ {ah,al} = macs( hh[1], ba[ 1], ah, al ); \ {ah,al} = macs( xx, ba[ 0], ah, al ); hh[0] = xx; \ {ah,al} = macs( hh[2], ba[ 4], ah, al ); \ {ah,al} = macs( hh[3], ba[ 3], ah, al ); hh[2] = rr = adjust(ah,al); break; \ case 1: hh[4] = 0; \ {ah,al} = macs( hh[1], ba[ 2], ah, al ); \ {ah,al} = macs( hh[0], ba[ 1], ah, al ); \ {ah,al} = macs( xx, ba[ 0], ah, al ); hh[1] = xx; \ {ah,al} = macs( hh[3], ba[ 4], ah, al ); \ {ah,al} = macs( hh[2], ba[ 3], ah, al ); hh[3] = rr = adjust(ah,al); break; \ } #define _XSIGNALPROC_BIQUAD( adjust ) \ \ register int ah=0; register unsigned int rr, al=0; \ {ah,al} = macs( xx, ba[0], ah, al ); \ {ah,al} = macs( hh[0], ba[1], ah, al ); \ {ah,al} = macs( hh[1], ba[2], ah, al ); \ {ah,al} = macs( hh[2], ba[3], ah, al ); \ {ah,al} = macs( hh[3], ba[4], ah, al ); \ hh[1] = hh[0]; hh[0] = xx; hh[3] = hh[2]; \ rr = hh[2] = (ah<<4)+(al>>28); int _xsignalproc_biquad_R05( int xx, const int ba[5], int hh[5] ) {_XSIGNALPROC_BIQUAD(_xsignalproc_biq_adjust_R05); return rr; } int _xsignalproc_biquad_R02( int xx, const int ba[5], int hh[5] ) {_XSIGNALPROC_BIQUAD(_xsignalproc_biq_adjust_R02); return rr; } int _xsignalproc_biquad_L01( int xx, const int ba[5], int hh[5] ) {_XSIGNALPROC_BIQUAD(_xsignalproc_biq_adjust_L01); return rr; } int _xsignalproc_biquad_L04( int xx, const int ba[5], int hh[5] ) {_XSIGNALPROC_BIQUAD(_xsignalproc_biq_adjust_L04); return rr; } int _xsignalproc_biquad_L07( int xx, const int ba[5], int hh[5] ) {_XSIGNALPROC_BIQUAD(_xsignalproc_biq_adjust_L07); return rr; } int _xsignalproc_biquad_L10( int xx, const int ba[5], int hh[5] ) {_XSIGNALPROC_BIQUAD(_xsignalproc_biq_adjust_L10); return rr; } int _xsignalproc_biquad_L13( int xx, const int ba[5], int hh[5] ) {_XSIGNALPROC_BIQUAD(_xsignalproc_biq_adjust_L13); return rr; } int xsignalproc_biquad_n01_r31x31c31( int xx, int const ba[5], int hh[5] ) { return _xsignalproc_biquad_L01( xx, ba, hh ); } int xsignalproc_biquad_n01_r31x31c28( int xx, int const ba[5], int hh[5] ) { return _xsignalproc_biquad_L04( xx, ba, hh ); } int xsignalproc_biquad_n01_r31x31c25( int xx, int const ba[5], int hh[5] ) { return _xsignalproc_biquad_L07( xx, ba, hh ); } int xsignalproc_biquad_n01_r31x28c31( int xx, int const ba[5], int hh[5] ) { return _xsignalproc_biquad_L04( xx, ba, hh ); } int xsignalproc_biquad_n01_r31x28c28( int xx, int const ba[5], int hh[5] ) { return _xsignalproc_biquad_L07( xx, ba, hh ); } int xsignalproc_biquad_n01_r31x28c25( int xx, int const ba[5], int hh[5] ) { return _xsignalproc_biquad_L10( xx, ba, hh ); } int xsignalproc_biquad_n01_r31x25c31( int xx, int const ba[5], int hh[5] ) { return _xsignalproc_biquad_L07( xx, ba, hh ); } int xsignalproc_biquad_n01_r31x25c28( int xx, int const ba[5], int hh[5] ) { return _xsignalproc_biquad_L10( xx, ba, hh ); } int xsignalproc_biquad_n01_r31x25c25( int xx, int const ba[5], int hh[5] ) { return _xsignalproc_biquad_L13( xx, ba, hh ); } int xsignalproc_biquad_n01_r28x31c31( int xx, int const ba[5], int hh[5] ) { return _xsignalproc_biquad_R02( xx, ba, hh ); } int xsignalproc_biquad_n01_r28x31c28( int xx, int const ba[5], int hh[5] ) { return _xsignalproc_biquad_L01( xx, ba, hh ); } int xsignalproc_biquad_n01_r28x31c25( int xx, int const ba[5], int hh[5] ) { return _xsignalproc_biquad_L04( xx, ba, hh ); } int xsignalproc_biquad_n01_r28x28c31( int xx, int const ba[5], int hh[5] ) { return _xsignalproc_biquad_L01( xx, ba, hh ); } int xsignalproc_biquad_n01_r28x28c28( int xx, int const ba[5], int hh[5] ) { return _xsignalproc_biquad_L04( xx, ba, hh ); } int xsignalproc_biquad_n01_r28x28c25( int xx, int const ba[5], int hh[5] ) { return _xsignalproc_biquad_L07( xx, ba, hh ); } int xsignalproc_biquad_n01_r28x25c31( int xx, int const ba[5], int hh[5] ) { return _xsignalproc_biquad_L04( xx, ba, hh ); } int xsignalproc_biquad_n01_r28x25c28( int xx, int const ba[5], int hh[5] ) { return _xsignalproc_biquad_L07( xx, ba, hh ); } int xsignalproc_biquad_n01_r28x25c25( int xx, int const ba[5], int hh[5] ) { return _xsignalproc_biquad_L10( xx, ba, hh ); } int xsignalproc_biquad_n01_r25x31c31( int xx, int const ba[5], int hh[5] ) { return _xsignalproc_biquad_R05( xx, ba, hh ); } int xsignalproc_biquad_n01_r25x31c28( int xx, int const ba[5], int hh[5] ) { return _xsignalproc_biquad_R02( xx, ba, hh ); } int xsignalproc_biquad_n01_r25x31c25( int xx, int const ba[5], int hh[5] ) { return _xsignalproc_biquad_L01( xx, ba, hh ); } int xsignalproc_biquad_n01_r25x28c31( int xx, int const ba[5], int hh[5] ) { return _xsignalproc_biquad_R02( xx, ba, hh ); } int xsignalproc_biquad_n01_r25x28c28( int xx, int const ba[5], int hh[5] ) { return _xsignalproc_biquad_L01( xx, ba, hh ); } int xsignalproc_biquad_n01_r25x28c25( int xx, int const ba[5], int hh[5] ) { return _xsignalproc_biquad_L04( xx, ba, hh ); } int xsignalproc_biquad_n01_r25x25c31( int xx, int const ba[5], int hh[5] ) { return _xsignalproc_biquad_L01( xx, ba, hh ); } int xsignalproc_biquad_n01_r25x25c28( int xx, int const ba[5], int hh[5] ) { return _xsignalproc_biquad_L04( xx, ba, hh ); } int xsignalproc_biquad_n01_r25x25c25( int xx, int const ba[5], int hh[5] ) { return _xsignalproc_biquad_L07( xx, ba, hh ); } int xsignalproc_biquad_n02_r31x31c31( int xx, const int ba[2][5], int hh[2][5] ) { xx = _xsignalproc_biquad_L01( xx, ba[0], hh[0] ); return _xsignalproc_biquad_L01( xx, ba[1], hh[1] ); } int xsignalproc_biquad_n02_r31x31c28( int xx, const int ba[2][5], int hh[2][5] ) { xx = _xsignalproc_biquad_L04( xx, ba[0], hh[0] ); return _xsignalproc_biquad_L04( xx, ba[1], hh[1] ); } int xsignalproc_biquad_n02_r31x31c25( int xx, const int ba[2][5], int hh[2][5] ) { xx = _xsignalproc_biquad_L07( xx, ba[0], hh[0] ); return _xsignalproc_biquad_L07( xx, ba[1], hh[1] ); } int xsignalproc_biquad_n02_r31x28c31( int xx, const int ba[2][5], int hh[2][5] ) { xx = _xsignalproc_biquad_L04( xx, ba[0], hh[0] ); return _xsignalproc_biquad_L04( xx, ba[1], hh[1] ); } int xsignalproc_biquad_n02_r31x28c28( int xx, const int ba[2][5], int hh[2][5] ) { xx = _xsignalproc_biquad_L07( xx, ba[0], hh[0] ); return _xsignalproc_biquad_L07( xx, ba[1], hh[1] ); } int xsignalproc_biquad_n02_r31x28c25( int xx, const int ba[2][5], int hh[2][5] ) { xx = _xsignalproc_biquad_L10( xx, ba[0], hh[0] ); return _xsignalproc_biquad_L10( xx, ba[1], hh[1] ); } int xsignalproc_biquad_n02_r31x25c31( int xx, const int ba[2][5], int hh[2][5] ) { xx = _xsignalproc_biquad_L07( xx, ba[0], hh[0] ); return _xsignalproc_biquad_L07( xx, ba[1], hh[1] ); } int xsignalproc_biquad_n02_r31x25c28( int xx, const int ba[2][5], int hh[2][5] ) { xx = _xsignalproc_biquad_L10( xx, ba[0], hh[0] ); return _xsignalproc_biquad_L10( xx, ba[1], hh[1] ); } int xsignalproc_biquad_n02_r31x25c25( int xx, const int ba[2][5], int hh[2][5] ) { xx = _xsignalproc_biquad_L13( xx, ba[0], hh[0] ); return _xsignalproc_biquad_L13( xx, ba[1], hh[1] ); } int xsignalproc_biquad_n02_r28x31c31( int xx, const int ba[2][5], int hh[2][5] ) { xx = _xsignalproc_biquad_R02( xx, ba[0], hh[0] ); return _xsignalproc_biquad_R02( xx, ba[1], hh[1] ); } int xsignalproc_biquad_n02_r28x31c28( int xx, const int ba[2][5], int hh[2][5] ) { xx = _xsignalproc_biquad_L01( xx, ba[0], hh[0] ); return _xsignalproc_biquad_L01( xx, ba[1], hh[1] ); } int xsignalproc_biquad_n02_r28x31c25( int xx, const int ba[2][5], int hh[2][5] ) { xx = _xsignalproc_biquad_L04( xx, ba[0], hh[0] ); return _xsignalproc_biquad_L04( xx, ba[1], hh[1] ); } int xsignalproc_biquad_n02_r28x28c31( int xx, const int ba[2][5], int hh[2][5] ) { xx = _xsignalproc_biquad_L01( xx, ba[0], hh[0] ); return _xsignalproc_biquad_L01( xx, ba[1], hh[1] ); } int xsignalproc_biquad_n02_r28x28c28( int xx, const int ba[2][5], int hh[2][5] ) { xx = _xsignalproc_biquad_L04( xx, ba[0], hh[0] ); return _xsignalproc_biquad_L04( xx, ba[1], hh[1] ); } int xsignalproc_biquad_n02_r28x28c25( int xx, const int ba[2][5], int hh[2][5] ) { xx = _xsignalproc_biquad_L07( xx, ba[0], hh[0] ); return _xsignalproc_biquad_L07( xx, ba[1], hh[1] ); } int xsignalproc_biquad_n02_r28x25c31( int xx, const int ba[2][5], int hh[2][5] ) { xx = _xsignalproc_biquad_L04( xx, ba[0], hh[0] ); return _xsignalproc_biquad_L04( xx, ba[1], hh[1] ); } int xsignalproc_biquad_n02_r28x25c28( int xx, const int ba[2][5], int hh[2][5] ) { xx = _xsignalproc_biquad_L07( xx, ba[0], hh[0] ); return _xsignalproc_biquad_L07( xx, ba[1], hh[1] ); } int xsignalproc_biquad_n02_r28x25c25( int xx, const int ba[2][5], int hh[2][5] ) { xx = _xsignalproc_biquad_L10( xx, ba[0], hh[0] ); return _xsignalproc_biquad_L10( xx, ba[1], hh[1] ); } int xsignalproc_biquad_n02_r25x31c31( int xx, const int ba[2][5], int hh[2][5] ) { xx = _xsignalproc_biquad_R05( xx, ba[0], hh[0] ); return _xsignalproc_biquad_R05( xx, ba[1], hh[1] ); } int xsignalproc_biquad_n02_r25x31c28( int xx, const int ba[2][5], int hh[2][5] ) { xx = _xsignalproc_biquad_R02( xx, ba[0], hh[0] ); return _xsignalproc_biquad_R02( xx, ba[1], hh[1] ); } int xsignalproc_biquad_n02_r25x31c25( int xx, const int ba[2][5], int hh[2][5] ) { xx = _xsignalproc_biquad_L01( xx, ba[0], hh[0] ); return _xsignalproc_biquad_L01( xx, ba[1], hh[1] ); } int xsignalproc_biquad_n02_r25x28c31( int xx, const int ba[2][5], int hh[2][5] ) { xx = _xsignalproc_biquad_R02( xx, ba[0], hh[0] ); return _xsignalproc_biquad_R02( xx, ba[1], hh[1] ); } int xsignalproc_biquad_n02_r25x28c28( int xx, const int ba[2][5], int hh[2][5] ) { xx = _xsignalproc_biquad_L01( xx, ba[0], hh[0] ); return _xsignalproc_biquad_L01( xx, ba[1], hh[1] ); } int xsignalproc_biquad_n02_r25x28c25( int xx, const int ba[2][5], int hh[2][5] ) { xx = _xsignalproc_biquad_L04( xx, ba[0], hh[0] ); return _xsignalproc_biquad_L04( xx, ba[1], hh[1] ); } int xsignalproc_biquad_n02_r25x25c31( int xx, const int ba[2][5], int hh[2][5] ) { xx = _xsignalproc_biquad_L01( xx, ba[0], hh[0] ); return _xsignalproc_biquad_L01( xx, ba[1], hh[1] ); } int xsignalproc_biquad_n02_r25x25c28( int xx, const int ba[2][5], int hh[2][5] ) { xx = _xsignalproc_biquad_L04( xx, ba[0], hh[0] ); return _xsignalproc_biquad_L04( xx, ba[1], hh[1] ); } int xsignalproc_biquad_n02_r25x25c25( int xx, const int ba[2][5], int hh[2][5] ) { xx = _xsignalproc_biquad_L07( xx, ba[0], hh[0] ); return _xsignalproc_biquad_L07( xx, ba[1], hh[1] ); } int xsignalproc_biquad_n03_r31x31c31( int xx, const int ba[3][5], int hh[3][5] ) { xx = _xsignalproc_biquad_L01( xx, ba[0], hh[0] ); xx = _xsignalproc_biquad_L01( xx, ba[1], hh[1] ); return _xsignalproc_biquad_L01( xx, ba[2], hh[2] ); } int xsignalproc_biquad_n03_r31x31c28( int xx, const int ba[3][5], int hh[3][5] ) { xx = _xsignalproc_biquad_L04( xx, ba[0], hh[0] ); xx = _xsignalproc_biquad_L04( xx, ba[1], hh[1] ); return _xsignalproc_biquad_L04( xx, ba[2], hh[2] ); } int xsignalproc_biquad_n03_r31x31c25( int xx, const int ba[3][5], int hh[3][5] ) { xx = _xsignalproc_biquad_L07( xx, ba[0], hh[0] ); xx = _xsignalproc_biquad_L07( xx, ba[1], hh[1] ); return _xsignalproc_biquad_L07( xx, ba[2], hh[2] ); } int xsignalproc_biquad_n03_r31x28c31( int xx, const int ba[3][5], int hh[3][5] ) { xx = _xsignalproc_biquad_L04( xx, ba[0], hh[0] ); xx = _xsignalproc_biquad_L04( xx, ba[1], hh[1] ); return _xsignalproc_biquad_L04( xx, ba[2], hh[2] ); } int xsignalproc_biquad_n03_r31x28c28( int xx, const int ba[3][5], int hh[3][5] ) { xx = _xsignalproc_biquad_L07( xx, ba[0], hh[0] ); xx = _xsignalproc_biquad_L07( xx, ba[1], hh[1] ); return _xsignalproc_biquad_L07( xx, ba[2], hh[2] ); } int xsignalproc_biquad_n03_r31x28c25( int xx, const int ba[3][5], int hh[3][5] ) { xx = _xsignalproc_biquad_L10( xx, ba[0], hh[0] ); xx = _xsignalproc_biquad_L10( xx, ba[1], hh[1] ); return _xsignalproc_biquad_L10( xx, ba[2], hh[2] ); } int xsignalproc_biquad_n03_r31x25c31( int xx, const int ba[3][5], int hh[3][5] ) { xx = _xsignalproc_biquad_L07( xx, ba[0], hh[0] ); xx = _xsignalproc_biquad_L07( xx, ba[1], hh[1] ); return _xsignalproc_biquad_L07( xx, ba[2], hh[2] ); } int xsignalproc_biquad_n03_r31x25c28( int xx, const int ba[3][5], int hh[3][5] ) { xx = _xsignalproc_biquad_L10( xx, ba[0], hh[0] ); xx = _xsignalproc_biquad_L10( xx, ba[1], hh[1] ); return _xsignalproc_biquad_L10( xx, ba[2], hh[2] ); } int xsignalproc_biquad_n03_r31x25c25( int xx, const int ba[3][5], int hh[3][5] ) { xx = _xsignalproc_biquad_L13( xx, ba[0], hh[0] ); xx = _xsignalproc_biquad_L13( xx, ba[1], hh[1] ); return _xsignalproc_biquad_L13( xx, ba[2], hh[2] ); } int xsignalproc_biquad_n03_r28x31c31( int xx, const int ba[3][5], int hh[3][5] ) { xx = _xsignalproc_biquad_R02( xx, ba[0], hh[0] ); xx = _xsignalproc_biquad_R02( xx, ba[1], hh[1] ); return _xsignalproc_biquad_R02( xx, ba[2], hh[2] ); } int xsignalproc_biquad_n03_r28x31c28( int xx, const int ba[3][5], int hh[3][5] ) { xx = _xsignalproc_biquad_L01( xx, ba[0], hh[0] ); xx = _xsignalproc_biquad_L01( xx, ba[1], hh[1] ); return _xsignalproc_biquad_L01( xx, ba[2], hh[2] ); } int xsignalproc_biquad_n03_r28x31c25( int xx, const int ba[3][5], int hh[3][5] ) { xx = _xsignalproc_biquad_L04( xx, ba[0], hh[0] ); xx = _xsignalproc_biquad_L04( xx, ba[1], hh[1] ); return _xsignalproc_biquad_L04( xx, ba[2], hh[2] ); } int xsignalproc_biquad_n03_r28x28c31( int xx, const int ba[3][5], int hh[3][5] ) { xx = _xsignalproc_biquad_L01( xx, ba[0], hh[0] ); xx = _xsignalproc_biquad_L01( xx, ba[1], hh[1] ); return _xsignalproc_biquad_L01( xx, ba[2], hh[2] ); } int xsignalproc_biquad_n03_r28x28c28( int xx, const int ba[3][5], int hh[3][5] ) { xx = _xsignalproc_biquad_L04( xx, ba[0], hh[0] ); xx = _xsignalproc_biquad_L04( xx, ba[1], hh[1] ); return _xsignalproc_biquad_L04( xx, ba[2], hh[2] ); } int xsignalproc_biquad_n03_r28x28c25( int xx, const int ba[3][5], int hh[3][5] ) { xx = _xsignalproc_biquad_L07( xx, ba[0], hh[0] ); xx = _xsignalproc_biquad_L07( xx, ba[1], hh[1] ); return _xsignalproc_biquad_L07( xx, ba[2], hh[2] ); } int xsignalproc_biquad_n03_r28x25c31( int xx, const int ba[3][5], int hh[3][5] ) { xx = _xsignalproc_biquad_L04( xx, ba[0], hh[0] ); xx = _xsignalproc_biquad_L04( xx, ba[1], hh[1] ); return _xsignalproc_biquad_L04( xx, ba[2], hh[2] ); } int xsignalproc_biquad_n03_r28x25c28( int xx, const int ba[3][5], int hh[3][5] ) { xx = _xsignalproc_biquad_L07( xx, ba[0], hh[0] ); xx = _xsignalproc_biquad_L07( xx, ba[1], hh[1] ); return _xsignalproc_biquad_L07( xx, ba[2], hh[2] ); } int xsignalproc_biquad_n03_r28x25c25( int xx, const int ba[3][5], int hh[3][5] ) { xx = _xsignalproc_biquad_L10( xx, ba[0], hh[0] ); xx = _xsignalproc_biquad_L10( xx, ba[1], hh[1] ); return _xsignalproc_biquad_L10( xx, ba[2], hh[2] ); } int xsignalproc_biquad_n03_r25x31c31( int xx, const int ba[3][5], int hh[3][5] ) { xx = _xsignalproc_biquad_R05( xx, ba[0], hh[0] ); xx = _xsignalproc_biquad_R05( xx, ba[1], hh[1] ); return _xsignalproc_biquad_R05( xx, ba[2], hh[2] ); } int xsignalproc_biquad_n03_r25x31c28( int xx, const int ba[3][5], int hh[3][5] ) { xx = _xsignalproc_biquad_R02( xx, ba[0], hh[0] ); xx = _xsignalproc_biquad_R02( xx, ba[1], hh[1] ); return _xsignalproc_biquad_R02( xx, ba[2], hh[2] ); } int xsignalproc_biquad_n03_r25x31c25( int xx, const int ba[3][5], int hh[3][5] ) { xx = _xsignalproc_biquad_L01( xx, ba[0], hh[0] ); xx = _xsignalproc_biquad_L01( xx, ba[1], hh[1] ); return _xsignalproc_biquad_L01( xx, ba[2], hh[2] ); } int xsignalproc_biquad_n03_r25x28c28( int xx, const int ba[3][5], int hh[3][5] ) { xx = _xsignalproc_biquad_L01( xx, ba[0], hh[0] ); xx = _xsignalproc_biquad_L01( xx, ba[1], hh[1] ); return _xsignalproc_biquad_L01( xx, ba[2], hh[2] ); } int xsignalproc_biquad_n03_r25x28c25( int xx, const int ba[3][5], int hh[3][5] ) { xx = _xsignalproc_biquad_L04( xx, ba[0], hh[0] ); xx = _xsignalproc_biquad_L04( xx, ba[1], hh[1] ); return _xsignalproc_biquad_L04( xx, ba[2], hh[2] ); } int xsignalproc_biquad_n03_r25x25c31( int xx, const int ba[3][5], int hh[3][5] ) { xx = _xsignalproc_biquad_L01( xx, ba[0], hh[0] ); xx = _xsignalproc_biquad_L01( xx, ba[1], hh[1] ); return _xsignalproc_biquad_L01( xx, ba[2], hh[2] ); } int xsignalproc_biquad_n03_r25x25c28( int xx, const int ba[3][5], int hh[3][5] ) { xx = _xsignalproc_biquad_L04( xx, ba[0], hh[0] ); xx = _xsignalproc_biquad_L04( xx, ba[1], hh[1] ); return _xsignalproc_biquad_L04( xx, ba[2], hh[2] ); } int xsignalproc_biquad_n03_r25x25c25( int xx, const int ba[3][5], int hh[3][5] ) { xx = _xsignalproc_biquad_L07( xx, ba[0], hh[0] ); xx = _xsignalproc_biquad_L07( xx, ba[1], hh[1] ); return _xsignalproc_biquad_L07( xx, ba[2], hh[2] ); } int xsignalproc_biquad_n04_r31x31c31( int xx, const int ba[4][5], int hh[4][5] ) { xx = _xsignalproc_biquad_L01( xx, ba[0], hh[0] ); xx = _xsignalproc_biquad_L01( xx, ba[1], hh[1] ); xx = _xsignalproc_biquad_L01( xx, ba[2], hh[2] ); return _xsignalproc_biquad_L01( xx, ba[3], hh[3] ); } int xsignalproc_biquad_n04_r31x31c28( int xx, const int ba[4][5], int hh[4][5] ) { xx = _xsignalproc_biquad_L04( xx, ba[0], hh[0] ); xx = _xsignalproc_biquad_L04( xx, ba[1], hh[1] ); xx = _xsignalproc_biquad_L04( xx, ba[2], hh[2] ); return _xsignalproc_biquad_L04( xx, ba[3], hh[3] ); } int xsignalproc_biquad_n04_r31x31c25( int xx, const int ba[4][5], int hh[4][5] ) { xx = _xsignalproc_biquad_L07( xx, ba[0], hh[0] ); xx = _xsignalproc_biquad_L07( xx, ba[1], hh[1] ); xx = _xsignalproc_biquad_L07( xx, ba[2], hh[2] ); return _xsignalproc_biquad_L07( xx, ba[3], hh[3] ); } int xsignalproc_biquad_n04_r31x28c31( int xx, const int ba[4][5], int hh[4][5] ) { xx = _xsignalproc_biquad_L04( xx, ba[0], hh[0] ); xx = _xsignalproc_biquad_L04( xx, ba[1], hh[1] ); xx = _xsignalproc_biquad_L04( xx, ba[2], hh[2] ); return _xsignalproc_biquad_L04( xx, ba[3], hh[3] ); } int xsignalproc_biquad_n04_r31x28c28( int xx, const int ba[4][5], int hh[4][5] ) { xx = _xsignalproc_biquad_L07( xx, ba[0], hh[0] ); xx = _xsignalproc_biquad_L07( xx, ba[1], hh[1] ); xx = _xsignalproc_biquad_L07( xx, ba[2], hh[2] ); return _xsignalproc_biquad_L07( xx, ba[3], hh[3] ); } int xsignalproc_biquad_n04_r31x28c25( int xx, const int ba[4][5], int hh[4][5] ) { xx = _xsignalproc_biquad_L10( xx, ba[0], hh[0] ); xx = _xsignalproc_biquad_L10( xx, ba[1], hh[1] ); xx = _xsignalproc_biquad_L10( xx, ba[2], hh[2] ); return _xsignalproc_biquad_L10( xx, ba[3], hh[3] ); } int xsignalproc_biquad_n04_r31x25c31( int xx, const int ba[4][5], int hh[4][5] ) { xx = _xsignalproc_biquad_L07( xx, ba[0], hh[0] ); xx = _xsignalproc_biquad_L07( xx, ba[1], hh[1] ); xx = _xsignalproc_biquad_L07( xx, ba[2], hh[2] ); return _xsignalproc_biquad_L07( xx, ba[3], hh[3] ); } int xsignalproc_biquad_n04_r31x25c28( int xx, const int ba[4][5], int hh[4][5] ) { xx = _xsignalproc_biquad_L10( xx, ba[0], hh[0] ); xx = _xsignalproc_biquad_L10( xx, ba[1], hh[1] ); xx = _xsignalproc_biquad_L10( xx, ba[2], hh[2] ); return _xsignalproc_biquad_L10( xx, ba[3], hh[3] ); } int xsignalproc_biquad_n04_r31x25c25( int xx, const int ba[4][5], int hh[4][5] ) { xx = _xsignalproc_biquad_L13( xx, ba[0], hh[0] ); xx = _xsignalproc_biquad_L13( xx, ba[1], hh[1] ); xx = _xsignalproc_biquad_L13( xx, ba[2], hh[2] ); return _xsignalproc_biquad_L13( xx, ba[3], hh[3] ); } int xsignalproc_biquad_n04_r28x31c31( int xx, const int ba[4][5], int hh[4][5] ) { xx = _xsignalproc_biquad_R02( xx, ba[0], hh[0] ); xx = _xsignalproc_biquad_R02( xx, ba[1], hh[1] ); xx = _xsignalproc_biquad_R02( xx, ba[2], hh[2] ); return _xsignalproc_biquad_R02( xx, ba[3], hh[3] ); } int xsignalproc_biquad_n04_r28x31c28( int xx, const int ba[4][5], int hh[4][5] ) { xx = _xsignalproc_biquad_L01( xx, ba[0], hh[0] ); xx = _xsignalproc_biquad_L01( xx, ba[1], hh[1] ); xx = _xsignalproc_biquad_L01( xx, ba[2], hh[2] ); return _xsignalproc_biquad_L01( xx, ba[3], hh[3] ); } int xsignalproc_biquad_n04_r28x31c25( int xx, const int ba[4][5], int hh[4][5] ) { xx = _xsignalproc_biquad_L04( xx, ba[0], hh[0] ); xx = _xsignalproc_biquad_L04( xx, ba[1], hh[1] ); xx = _xsignalproc_biquad_L04( xx, ba[2], hh[2] ); return _xsignalproc_biquad_L04( xx, ba[3], hh[3] ); } int xsignalproc_biquad_n04_r28x28c28( int xx, const int ba[4][5], int hh[4][5] ) { xx = _xsignalproc_biquad_L04( xx, ba[0], hh[0] ); xx = _xsignalproc_biquad_L04( xx, ba[1], hh[1] ); xx = _xsignalproc_biquad_L04( xx, ba[2], hh[2] ); return _xsignalproc_biquad_L04( xx, ba[3], hh[3] ); } int xsignalproc_biquad_n04_r28x28c25( int xx, const int ba[4][5], int hh[4][5] ) { xx = _xsignalproc_biquad_L07( xx, ba[0], hh[0] ); xx = _xsignalproc_biquad_L07( xx, ba[1], hh[1] ); xx = _xsignalproc_biquad_L07( xx, ba[2], hh[2] ); return _xsignalproc_biquad_L07( xx, ba[3], hh[3] ); } int xsignalproc_biquad_n04_r28x25c25( int xx, const int ba[4][5], int hh[4][5] ) { xx = _xsignalproc_biquad_L10( xx, ba[0], hh[0] ); xx = _xsignalproc_biquad_L10( xx, ba[1], hh[1] ); xx = _xsignalproc_biquad_L10( xx, ba[2], hh[2] ); return _xsignalproc_biquad_L10( xx, ba[3], hh[3] ); } int xsignalproc_biquad_n04_r25x31c31( int xx, const int ba[4][5], int hh[4][5] ) { xx = _xsignalproc_biquad_R05( xx, ba[0], hh[0] ); xx = _xsignalproc_biquad_R05( xx, ba[1], hh[1] ); xx = _xsignalproc_biquad_R05( xx, ba[2], hh[2] ); return _xsignalproc_biquad_R05( xx, ba[3], hh[3] ); } int xsignalproc_biquad_n04_r25x31c28( int xx, const int ba[4][5], int hh[4][5] ) { xx = _xsignalproc_biquad_R02( xx, ba[0], hh[0] ); xx = _xsignalproc_biquad_R02( xx, ba[1], hh[1] ); xx = _xsignalproc_biquad_R02( xx, ba[2], hh[2] ); return _xsignalproc_biquad_R02( xx, ba[3], hh[3] ); } int xsignalproc_biquad_n04_r25x31c25( int xx, const int ba[4][5], int hh[4][5] ) { xx = _xsignalproc_biquad_L01( xx, ba[0], hh[0] ); xx = _xsignalproc_biquad_L01( xx, ba[1], hh[1] ); xx = _xsignalproc_biquad_L01( xx, ba[2], hh[2] ); return _xsignalproc_biquad_L01( xx, ba[3], hh[3] ); } int xsignalproc_biquad_n04_r25x28c28( int xx, const int ba[4][5], int hh[4][5] ) { xx = _xsignalproc_biquad_L01( xx, ba[0], hh[0] ); xx = _xsignalproc_biquad_L01( xx, ba[1], hh[1] ); xx = _xsignalproc_biquad_L01( xx, ba[2], hh[2] ); return _xsignalproc_biquad_L01( xx, ba[3], hh[3] ); } int xsignalproc_biquad_n04_r25x28c25( int xx, const int ba[4][5], int hh[4][5] ) { xx = _xsignalproc_biquad_L04( xx, ba[0], hh[0] ); xx = _xsignalproc_biquad_L04( xx, ba[1], hh[1] ); xx = _xsignalproc_biquad_L04( xx, ba[2], hh[2] ); return _xsignalproc_biquad_L04( xx, ba[3], hh[3] ); } int xsignalproc_biquad_n04_r25x25c25( int xx, const int ba[4][5], int hh[4][5] ) { xx = _xsignalproc_biquad_L07( xx, ba[0], hh[0] ); xx = _xsignalproc_biquad_L07( xx, ba[1], hh[1] ); xx = _xsignalproc_biquad_L07( xx, ba[2], hh[2] ); return _xsignalproc_biquad_L07( xx, ba[3], hh[3] ); }