乐于分享
好东西不私藏

手搓小波变换C++源码发布(2)—SWT

手搓小波变换C++源码发布(2)—SWT
我们接着:手搓小波变换C++源码发布(1)—DWT,继续另外形式的小波变换SWT,平稳小波变换。关于小波变换的类型和差异,请查看我们之前的文章(文章后面提供的清单),这里不再复述。同样在vs2022中可以编译运行,C语言版本是ISO C++14 Standard。

    请留意代码中和DWT代码一样的可以复用部分。其中的小波变换滤波器系数都是通过另外py脚本获取。请找到代码中的标识行:
    /*******************************//*以上代码和DWT部分的一致,可以复用*//*******************************/

    SWT C++源码
    // ISO C++14 Standard#include<iostream>#include<vector>#include<string>#include<unordered_map>#include<cmath>#include<fstream>#include<iomanip>#include<random>#include<cstddef>#include<algorithm>#include<stdexcept>#include<limits>#ifndef M_PI#define M_PI 3.14159265358979323846#endifstruct WaveletCoeffs {    const double* dec_lo;    std::size_t dec_lo_len;    const double* dec_hi;    std::size_t dec_hi_len;    const double* rec_lo;    std::size_t rec_lo_len;    const double* rec_hi;    std::size_t rec_hi_len;};// 小波系数数据库(封装在命名空间中)namespace WaveletDatabase {    static const double wv_db2_dec_lo[] = { -0.129409522551260370.224143868042013390.836516303737807940.48296291314453416 };    static const std::size_t wv_db2_dec_lo_len = 4;    static const double wv_db2_dec_hi[] = { -0.482962913144534160.83651630373780794-0.22414386804201339-0.12940952255126037 };    static const std::size_t wv_db2_dec_hi_len = 4;    static const double wv_db2_rec_lo[] = { 0.482962913144534160.836516303737807940.22414386804201339-0.12940952255126037 };    static const std::size_t wv_db2_rec_lo_len = 4;    static const double wv_db2_rec_hi[] = { -0.12940952255126037-0.224143868042013390.83651630373780794-0.48296291314453416 };    static const std::size_t wv_db2_rec_hi_len = 4;    static const double wv_db4_dec_lo[] = { -0.0105974017850690320.0328830116668851970.030841381835560764-0.18703481171909309-0.0279837694168598540.630880767929858920.714846570552915670.23037781330889651 };    static const std::size_t wv_db4_dec_lo_len = 8;    static const double wv_db4_dec_hi[] = { -0.230377813308896510.71484657055291567-0.63088076792985892-0.0279837694168598540.187034811719093090.030841381835560764-0.032883011666885197-0.010597401785069032 };    static const std::size_t wv_db4_dec_hi_len = 8;    static const double wv_db4_rec_lo[] = { 0.230377813308896510.714846570552915670.63088076792985892-0.027983769416859854-0.187034811719093090.0308413818355607640.032883011666885197-0.010597401785069032 };    static const std::size_t wv_db4_rec_lo_len = 8;    static const double wv_db4_rec_hi[] = { -0.010597401785069032-0.0328830116668851970.0308413818355607640.18703481171909309-0.027983769416859854-0.630880767929858920.71484657055291567-0.23037781330889651 };    static const std::size_t wv_db4_rec_hi_len = 8;    static const double wv_db8_dec_lo[] = { -0.000117476784124769530.00067544940645056933-0.00039174037337694705-0.00487035299345157410.00874609404740577660.013981027917398282-0.044088253930794755-0.0173693010018075470.128747426620478470.00047248457391328279-0.28401554296154691-0.0158291052563493060.585354683654206730.675630736297289760.312871590914299950.054415842243104008 };    static const std::size_t wv_db8_dec_lo_len = 16;    static const double wv_db8_dec_hi[] = { -0.0544158422431040080.31287159091429995-0.675630736297289760.585354683654206730.015829105256349306-0.28401554296154691-0.000472484573913282790.128747426620478470.017369301001807547-0.044088253930794755-0.0139810279173982820.00874609404740577660.0048703529934515741-0.00039174037337694705-0.00067544940645056933-0.00011747678412476953 };    static const std::size_t wv_db8_dec_hi_len = 16;    static const double wv_db8_rec_lo[] = { 0.0544158422431040080.312871590914299950.675630736297289760.58535468365420673-0.015829105256349306-0.284015542961546910.000472484573913282790.12874742662047847-0.017369301001807547-0.0440882539307947550.0139810279173982820.0087460940474057766-0.0048703529934515741-0.000391740373376947050.00067544940645056933-0.00011747678412476953 };    static const std::size_t wv_db8_rec_lo_len = 16;    static const double wv_db8_rec_hi[] = { -0.00011747678412476953-0.00067544940645056933-0.000391740373376947050.00487035299345157410.0087460940474057766-0.013981027917398282-0.0440882539307947550.0173693010018075470.12874742662047847-0.00047248457391328279-0.284015542961546910.0158291052563493060.58535468365420673-0.675630736297289760.31287159091429995-0.054415842243104008 };    static const std::size_t wv_db8_rec_hi_len = 16;    static const double wv_db10_dec_lo[] = { -1.3264202894521244e-059.3588670320069592e-05-0.00011646685512928545-0.000685856694959711620.00199240529518505610.0013953517470529011-0.0107331754833305750.00360655356695616970.033212674059341002-0.029457536821875813-0.0713941471663970820.0930573646035723480.12736934033579325-0.19594627437737705-0.249846424327315380.281172343660577470.688459039453603540.527201188931725630.18817680007769150.026670057900555554 };    static const std::size_t wv_db10_dec_lo_len = 20;    static const double wv_db10_dec_hi[] = { -0.0266700579005555540.1881768000776915-0.527201188931725630.68845903945360354-0.28117234366057747-0.249846424327315380.195946274377377050.12736934033579325-0.093057364603572348-0.0713941471663970820.0294575368218758130.033212674059341002-0.0036065535669561697-0.010733175483330575-0.00139535174705290110.00199240529518505610.00068585669495971162-0.00011646685512928545-9.3588670320069592e-05-1.3264202894521244e-05 };    static const std::size_t wv_db10_dec_hi_len = 20;    static const double wv_db10_rec_lo[] = { 0.0266700579005555540.18817680007769150.527201188931725630.688459039453603540.28117234366057747-0.24984642432731538-0.195946274377377050.127369340335793250.093057364603572348-0.071394147166397082-0.0294575368218758130.0332126740593410020.0036065535669561697-0.0107331754833305750.00139535174705290110.0019924052951850561-0.00068585669495971162-0.000116466855129285459.3588670320069592e-05-1.3264202894521244e-05 };    static const std::size_t wv_db10_rec_lo_len = 20;    static const double wv_db10_rec_hi[] = { -1.3264202894521244e-05-9.3588670320069592e-05-0.000116466855129285450.000685856694959711620.0019924052951850561-0.0013953517470529011-0.010733175483330575-0.00360655356695616970.0332126740593410020.029457536821875813-0.071394147166397082-0.0930573646035723480.127369340335793250.19594627437737705-0.24984642432731538-0.281172343660577470.68845903945360354-0.527201188931725630.1881768000776915-0.026670057900555554 };    static const std::size_t wv_db10_rec_hi_len = 20;    static const double wv_db12_dec_lo[] = { -1.5290717580685109e-061.2776952219379767e-05-2.4241545757030785e-05-8.850410920820432e-050.000388653062820931436.5451282125095959e-06-0.00217950361862776030.00224860724099523780.0067114990087955096-0.012840825198300683-0.012218649069748280.0415462774950844380.010849130255822185-0.0964321200965070760.00535956967435215030.18247860592757967-0.023779257256069726-0.31617845375278553-0.0447638856537746280.515886478427815650.657198722579307120.377355135214212660.109566272821185150.013112257957229518 };    static const std::size_t wv_db12_dec_lo_len = 24;    static const double wv_db12_dec_hi[] = { -0.0131122579572295180.10956627282118515-0.377355135214212660.65719872257930712-0.51588647842781565-0.0447638856537746280.31617845375278553-0.023779257256069726-0.182478605927579670.00535956967435215030.0964321200965070760.010849130255822185-0.041546277495084438-0.012218649069748280.0128408251983006830.0067114990087955096-0.0022486072409952378-0.0021795036186277603-6.5451282125095959e-060.000388653062820931438.850410920820432e-05-2.4241545757030785e-05-1.2776952219379767e-05-1.5290717580685109e-06 };    static const std::size_t wv_db12_dec_hi_len = 24;    static const double wv_db12_rec_lo[] = { 0.0131122579572295180.109566272821185150.377355135214212660.657198722579307120.51588647842781565-0.044763885653774628-0.31617845375278553-0.0237792572560697260.182478605927579670.0053595696743521503-0.0964321200965070760.0108491302558221850.041546277495084438-0.01221864906974828-0.0128408251983006830.00671149900879550960.0022486072409952378-0.00217950361862776036.5451282125095959e-060.00038865306282093143-8.850410920820432e-05-2.4241545757030785e-051.2776952219379767e-05-1.5290717580685109e-06 };    static const std::size_t wv_db12_rec_lo_len = 24;    static const double wv_db12_rec_hi[] = { -1.5290717580685109e-06-1.2776952219379767e-05-2.4241545757030785e-058.850410920820432e-050.00038865306282093143-6.5451282125095959e-06-0.0021795036186277603-0.00224860724099523780.00671149900879550960.012840825198300683-0.01221864906974828-0.0415462774950844380.0108491302558221850.0964321200965070760.0053595696743521503-0.18247860592757967-0.0237792572560697260.31617845375278553-0.044763885653774628-0.515886478427815650.65719872257930712-0.377355135214212660.10956627282118515-0.013112257957229518 };    static const std::size_t wv_db12_rec_hi_len = 24;    static const double wv_db14_dec_lo[] = { -1.7871399683113592e-071.7249946753678127e-06-4.3897049017813942e-06-1.0337209184570774e-056.8755042526975093e-05-4.1777245770372596e-05-0.00038683194731295450.000708021154235527860.0010616910856067619-0.0038496388680221874-0.000746218989268384970.012789493266333409-0.0056150495303569593-0.0301853515403906340.0269814083079129160.055237126259216042-0.071548955504046136-0.0867484115681696890.13998901658446070.1383952138648066-0.21803352999327605-0.271688552278748050.218670687758906520.631187849104856810.554305617940893840.254850267792621380.0623647588493988980.0064611534600879476 };    static const std::size_t wv_db14_dec_lo_len = 28;    static const double wv_db14_dec_hi[] = { -0.00646115346008794760.062364758849398898-0.254850267792621380.55430561794089384-0.631187849104856810.218670687758906520.27168855227874805-0.21803352999327605-0.13839521386480660.13998901658446070.086748411568169689-0.071548955504046136-0.0552371262592160420.0269814083079129160.030185351540390634-0.0056150495303569593-0.012789493266333409-0.000746218989268384970.00384963886802218740.0010616910856067619-0.00070802115423552786-0.00038683194731295454.1777245770372596e-056.8755042526975093e-051.0337209184570774e-05-4.3897049017813942e-06-1.7249946753678127e-06-1.7871399683113592e-07 };    static const std::size_t wv_db14_dec_hi_len = 28;    static const double wv_db14_rec_lo[] = { 0.00646115346008794760.0623647588493988980.254850267792621380.554305617940893840.631187849104856810.21867068775890652-0.27168855227874805-0.218033529993276050.13839521386480660.1399890165844607-0.086748411568169689-0.0715489555040461360.0552371262592160420.026981408307912916-0.030185351540390634-0.00561504953035695930.012789493266333409-0.00074621898926838497-0.00384963886802218740.00106169108560676190.00070802115423552786-0.0003868319473129545-4.1777245770372596e-056.8755042526975093e-05-1.0337209184570774e-05-4.3897049017813942e-061.7249946753678127e-06-1.7871399683113592e-07 };    static const std::size_t wv_db14_rec_lo_len = 28;    static const double wv_db14_rec_hi[] = { -1.7871399683113592e-07-1.7249946753678127e-06-4.3897049017813942e-061.0337209184570774e-056.8755042526975093e-054.1777245770372596e-05-0.0003868319473129545-0.000708021154235527860.00106169108560676190.0038496388680221874-0.00074621898926838497-0.012789493266333409-0.00561504953035695930.0301853515403906340.026981408307912916-0.055237126259216042-0.0715489555040461360.0867484115681696890.1399890165844607-0.1383952138648066-0.218033529993276050.271688552278748050.21867068775890652-0.631187849104856810.55430561794089384-0.254850267792621380.062364758849398898-0.0064611534600879476 };    static const std::size_t wv_db14_rec_hi_len = 28;    static const double wv_db16_dec_lo[] = { -2.1093396301007431e-082.3087840868575457e-07-7.3636567854512051e-07-1.0435713423116066e-061.1336608661276258e-05-1.3945668988208893e-05-6.103596621410936e-050.000174787245225338170.00011424152003872239-0.000941021749359567560.000407896980849712850.003128023381206269-0.0036442796214983899-0.00699001456341391630.0139937688598287310.01029765964095597-0.036888397691730142-0.00758897436885773780.075924236044276311-0.006239722752474872-0.13238830556381040.0273402637527160420.2111906939471043-0.027918208133028276-0.32706331052791771-0.0897510894024896450.440290256886356920.637356332083788950.43031272284600380.165064283488853130.0349077143236733440.0031892209253477381 };    static const std::size_t wv_db16_dec_lo_len = 32;    static const double wv_db16_dec_hi[] = { -0.00318922092534773810.034907714323673344-0.165064283488853130.4303127228460038-0.637356332083788950.440290256886356920.089751089402489645-0.327063310527917710.0279182081330282760.2111906939471043-0.027340263752716042-0.13238830556381040.0062397227524748720.0759242360442763110.0075889743688577378-0.036888397691730142-0.010297659640955970.0139937688598287310.0069900145634139163-0.0036442796214983899-0.0031280233812062690.000407896980849712850.000941021749359567560.00011424152003872239-0.00017478724522533817-6.103596621410936e-051.3945668988208893e-051.1336608661276258e-051.0435713423116066e-06-7.3636567854512051e-07-2.3087840868575457e-07-2.1093396301007431e-08 };    static const std::size_t wv_db16_dec_hi_len = 32;    static const double wv_db16_rec_lo[] = { 0.00318922092534773810.0349077143236733440.165064283488853130.43031272284600380.637356332083788950.44029025688635692-0.089751089402489645-0.32706331052791771-0.0279182081330282760.21119069394710430.027340263752716042-0.1323883055638104-0.0062397227524748720.075924236044276311-0.0075889743688577378-0.0368883976917301420.010297659640955970.013993768859828731-0.0069900145634139163-0.00364427962149838990.0031280233812062690.00040789698084971285-0.000941021749359567560.000114241520038722390.00017478724522533817-6.103596621410936e-05-1.3945668988208893e-051.1336608661276258e-05-1.0435713423116066e-06-7.3636567854512051e-072.3087840868575457e-07-2.1093396301007431e-08 };    static const std::size_t wv_db16_rec_lo_len = 32;    static const double wv_db16_rec_hi[] = { -2.1093396301007431e-08-2.3087840868575457e-07-7.3636567854512051e-071.0435713423116066e-061.1336608661276258e-051.3945668988208893e-05-6.103596621410936e-05-0.000174787245225338170.000114241520038722390.000941021749359567560.00040789698084971285-0.003128023381206269-0.00364427962149838990.00699001456341391630.013993768859828731-0.01029765964095597-0.0368883976917301420.00758897436885773780.0759242360442763110.006239722752474872-0.1323883055638104-0.0273402637527160420.21119069394710430.027918208133028276-0.327063310527917710.0897510894024896450.44029025688635692-0.637356332083788950.4303127228460038-0.165064283488853130.034907714323673344-0.0031892209253477381 };    static const std::size_t wv_db16_rec_hi_len = 32;    static const double wv_db18_dec_lo[] = { -2.5079344549485983e-093.0688358630451749e-08-1.1760987670282317e-07-7.6916326898851766e-081.7687129836276155e-06-3.332634478885822e-06-8.5206025374466959e-063.7412378807400385e-05-1.5359171235347246e-07-0.000198648552311747960.00021358156191034070.00062846568296514574-0.0013405962983361066-0.00111873266699249710.00494334360546673770.00011863003385811746-0.0130514809466120010.00626216795430570730.026670705926470591-0.023733210395860002-0.0445261419029823260.0570512477385368840.064887216211905449-0.10675224665982849-0.0923318841508462830.167081312763257410.14953397556537779-0.21648093400514298-0.293654040736558760.147223111969928160.571801654888651310.571826807766607210.314678941337031730.103588465822423590.0192885317241463760.0015763102184407605 };    static const std::size_t wv_db18_dec_lo_len = 36;    static const double wv_db18_dec_hi[] = { -0.00157631021844076050.019288531724146376-0.103588465822423590.31467894133703173-0.571826807766607210.57180165488865131-0.14722311196992816-0.293654040736558760.216480934005142980.14953397556537779-0.16708131276325741-0.0923318841508462830.106752246659828490.064887216211905449-0.057051247738536884-0.0445261419029823260.0237332103958600020.026670705926470591-0.0062621679543057073-0.013051480946612001-0.000118630033858117460.00494334360546673770.0011187326669924971-0.0013405962983361066-0.000628465682965145740.00021358156191034070.00019864855231174796-1.5359171235347246e-07-3.7412378807400385e-05-8.5206025374466959e-063.332634478885822e-061.7687129836276155e-067.6916326898851766e-08-1.1760987670282317e-07-3.0688358630451749e-08-2.5079344549485983e-09 };    static const std::size_t wv_db18_dec_hi_len = 36;    static const double wv_db18_rec_lo[] = { 0.00157631021844076050.0192885317241463760.103588465822423590.314678941337031730.571826807766607210.571801654888651310.14722311196992816-0.29365404073655876-0.216480934005142980.149533975565377790.16708131276325741-0.092331884150846283-0.106752246659828490.0648872162119054490.057051247738536884-0.044526141902982326-0.0237332103958600020.0266707059264705910.0062621679543057073-0.0130514809466120010.000118630033858117460.0049433436054667377-0.0011187326669924971-0.00134059629833610660.000628465682965145740.0002135815619103407-0.00019864855231174796-1.5359171235347246e-073.7412378807400385e-05-8.5206025374466959e-06-3.332634478885822e-061.7687129836276155e-06-7.6916326898851766e-08-1.1760987670282317e-073.0688358630451749e-08-2.5079344549485983e-09 };    static const std::size_t wv_db18_rec_lo_len = 36;    static const double wv_db18_rec_hi[] = { -2.5079344549485983e-09-3.0688358630451749e-08-1.1760987670282317e-077.6916326898851766e-081.7687129836276155e-063.332634478885822e-06-8.5206025374466959e-06-3.7412378807400385e-05-1.5359171235347246e-070.000198648552311747960.0002135815619103407-0.00062846568296514574-0.00134059629833610660.00111873266699249710.0049433436054667377-0.00011863003385811746-0.013051480946612001-0.00626216795430570730.0266707059264705910.023733210395860002-0.044526141902982326-0.0570512477385368840.0648872162119054490.10675224665982849-0.092331884150846283-0.167081312763257410.149533975565377790.21648093400514298-0.29365404073655876-0.147223111969928160.57180165488865131-0.571826807766607210.31467894133703173-0.103588465822423590.019288531724146376-0.0015763102184407605 };    static const std::size_t wv_db18_rec_hi_len = 36;    static const double wv_db20_dec_lo[] = { -2.9988364896193194e-104.0561270555518328e-09-1.814843248299696e-082.0143220235505126e-102.6339242262700013e-07-6.8470795970005574e-07-1.0119940100188862e-067.2412482876736205e-06-4.3761438621839971e-06-3.7105861833947128e-056.7742808283777301e-050.00010153288973670291-0.00038510474869921763-5.3497598439976948e-050.0013925596193231364-0.00083156217282255693-0.00358149425960962260.00442054238704579080.006721627302259457-0.01381052613715192-0.00878932492390156060.032294299530769580.0058746818118118266-0.0617228996246804580.00563224685730743560.10229171917444256-0.024716827338613585-0.155458750707267950.0398502464577712020.22829105081991632-0.016727088309077008-0.32678680043403496-0.139212088011483880.361502298739331040.610493238938593860.472696185310901680.219942113551397030.0634237804590815220.0105493946249503990.00077995361366684629 };    static const std::size_t wv_db20_dec_lo_len = 40;    static const double wv_db20_dec_hi[] = { -0.000779953613666846290.010549394624950399-0.0634237804590815220.21994211355139703-0.472696185310901680.61049323893859386-0.36150229873933104-0.139212088011483880.32678680043403496-0.016727088309077008-0.228291050819916320.0398502464577712020.15545875070726795-0.024716827338613585-0.102291719174442560.00563224685730743560.0617228996246804580.0058746818118118266-0.03229429953076958-0.00878932492390156060.013810526137151920.006721627302259457-0.0044205423870457908-0.00358149425960962260.000831562172822556930.00139255961932313645.3497598439976948e-05-0.00038510474869921763-0.000101532889736702916.7742808283777301e-053.7105861833947128e-05-4.3761438621839971e-06-7.2412482876736205e-06-1.0119940100188862e-066.8470795970005574e-072.6339242262700013e-07-2.0143220235505126e-10-1.814843248299696e-08-4.0561270555518328e-09-2.9988364896193194e-10 };    static const std::size_t wv_db20_dec_hi_len = 40;    static const double wv_db20_rec_lo[] = { 0.000779953613666846290.0105493946249503990.0634237804590815220.219942113551397030.472696185310901680.610493238938593860.36150229873933104-0.13921208801148388-0.32678680043403496-0.0167270883090770080.228291050819916320.039850246457771202-0.15545875070726795-0.0247168273386135850.102291719174442560.0056322468573074356-0.0617228996246804580.00587468181181182660.03229429953076958-0.0087893249239015606-0.013810526137151920.0067216273022594570.0044205423870457908-0.0035814942596096226-0.000831562172822556930.0013925596193231364-5.3497598439976948e-05-0.000385104748699217630.000101532889736702916.7742808283777301e-05-3.7105861833947128e-05-4.3761438621839971e-067.2412482876736205e-06-1.0119940100188862e-06-6.8470795970005574e-072.6339242262700013e-072.0143220235505126e-10-1.814843248299696e-084.0561270555518328e-09-2.9988364896193194e-10 };    static const std::size_t wv_db20_rec_lo_len = 40;    static const double wv_db20_rec_hi[] = { -2.9988364896193194e-10-4.0561270555518328e-09-1.814843248299696e-08-2.0143220235505126e-102.6339242262700013e-076.8470795970005574e-07-1.0119940100188862e-06-7.2412482876736205e-06-4.3761438621839971e-063.7105861833947128e-056.7742808283777301e-05-0.00010153288973670291-0.000385104748699217635.3497598439976948e-050.00139255961932313640.00083156217282255693-0.0035814942596096226-0.00442054238704579080.0067216273022594570.01381052613715192-0.0087893249239015606-0.032294299530769580.00587468181181182660.0617228996246804580.0056322468573074356-0.10229171917444256-0.0247168273386135850.155458750707267950.039850246457771202-0.22829105081991632-0.0167270883090770080.32678680043403496-0.13921208801148388-0.361502298739331040.61049323893859386-0.472696185310901680.21994211355139703-0.0634237804590815220.010549394624950399-0.00077995361366684629 };    static const std::size_t wv_db20_rec_hi_len = 40;    static const double wv_sym2_dec_lo[] = { -0.129409522550921450.224143868041857350.836516303737468990.48296291314469025 };    static const std::size_t wv_sym2_dec_lo_len = 4;    static const double wv_sym2_dec_hi[] = { -0.482962913144690250.83651630373746899-0.22414386804185735-0.12940952255092145 };    static const std::size_t wv_sym2_dec_hi_len = 4;    static const double wv_sym2_rec_lo[] = { 0.482962913144690250.836516303737468990.22414386804185735-0.12940952255092145 };    static const std::size_t wv_sym2_rec_lo_len = 4;    static const double wv_sym2_rec_hi[] = { -0.12940952255092145-0.224143868041857350.83651630373746899-0.48296291314469025 };    static const std::size_t wv_sym2_rec_hi_len = 4;    static const double wv_sym4_dec_lo[] = { -0.075765714789273325-0.029635527645998510.497618667632015450.803738751805916140.29785779560527736-0.099219543576847216-0.0126039672620378330.032223100604042702 };    static const std::size_t wv_sym4_dec_lo_len = 8;    static const double wv_sym4_dec_hi[] = { -0.032223100604042702-0.0126039672620378330.0992195435768472160.29785779560527736-0.803738751805916140.497618667632015450.02963552764599851-0.075765714789273325 };    static const std::size_t wv_sym4_dec_hi_len = 8;    static const double wv_sym4_rec_lo[] = { 0.032223100604042702-0.012603967262037833-0.0992195435768472160.297857795605277360.803738751805916140.49761866763201545-0.02963552764599851-0.075765714789273325 };    static const std::size_t wv_sym4_rec_lo_len = 8;    static const double wv_sym4_rec_hi[] = { -0.0757657147892733250.029635527645998510.49761866763201545-0.803738751805916140.297857795605277360.099219543576847216-0.012603967262037833-0.032223100604042702 };    static const std::size_t wv_sym4_rec_hi_len = 8;    static const double wv_sym6_dec_lo[] = { 0.0154041093270273730.0034907120842174702-0.11799011114819057-0.0483117425856329980.491055941926746620.7876411410301940.3379294217276218-0.072637522786462516-0.0210602925123005640.0447249017706657790.0017677118642428036-0.007800708325034148 };    static const std::size_t wv_sym6_dec_lo_len = 12;    static const double wv_sym6_dec_hi[] = { 0.0078007083250341480.0017677118642428036-0.044724901770665779-0.0210602925123005640.0726375227864625160.3379294217276218-0.7876411410301940.491055941926746620.048311742585632998-0.11799011114819057-0.00349071208421747020.015404109327027373 };    static const std::size_t wv_sym6_dec_hi_len = 12;    static const double wv_sym6_rec_lo[] = { -0.0078007083250341480.00176771186424280360.044724901770665779-0.021060292512300564-0.0726375227864625160.33792942172762180.7876411410301940.49105594192674662-0.048311742585632998-0.117990111148190570.00349071208421747020.015404109327027373 };    static const std::size_t wv_sym6_rec_lo_len = 12;    static const double wv_sym6_rec_hi[] = { 0.015404109327027373-0.0034907120842174702-0.117990111148190570.0483117425856329980.49105594192674662-0.7876411410301940.33792942172762180.072637522786462516-0.021060292512300564-0.0447249017706657790.00176771186424280360.007800708325034148 };    static const std::size_t wv_sym6_rec_hi_len = 12;    static const double wv_sym8_dec_lo[] = { -0.0033824159510061256-0.000542132331791148120.0316950878114929810.0076074873249176054-0.14329423835080971-0.0612733590676585240.481359651258372210.777185751700523510.3644418948353314-0.051945838107709037-0.0272190299170560030.0491371796736075060.0038087520138906151-0.014952258337048231-0.00030292051472136680.0018899503327594609 };    static const std::size_t wv_sym8_dec_lo_len = 16;    static const double wv_sym8_dec_hi[] = { -0.0018899503327594609-0.00030292051472136680.0149522583370482310.0038087520138906151-0.049137179673607506-0.0272190299170560030.0519458381077090370.3644418948353314-0.777185751700523510.481359651258372210.061273359067658524-0.14329423835080971-0.00760748732491760540.0316950878114929810.00054213233179114812-0.0033824159510061256 };    static const std::size_t wv_sym8_dec_hi_len = 16;    static const double wv_sym8_rec_lo[] = { 0.0018899503327594609-0.0003029205147213668-0.0149522583370482310.00380875201389061510.049137179673607506-0.027219029917056003-0.0519458381077090370.36444189483533140.777185751700523510.48135965125837221-0.061273359067658524-0.143294238350809710.00760748732491760540.031695087811492981-0.00054213233179114812-0.0033824159510061256 };    static const std::size_t wv_sym8_rec_lo_len = 16;    static const double wv_sym8_rec_hi[] = { -0.00338241595100612560.000542132331791148120.031695087811492981-0.0076074873249176054-0.143294238350809710.0612733590676585240.48135965125837221-0.777185751700523510.36444189483533140.051945838107709037-0.027219029917056003-0.0491371796736075060.00380875201389061510.014952258337048231-0.0003029205147213668-0.0018899503327594609 };    static const std::size_t wv_sym8_rec_hi_len = 16;    static const double wv_sym10_dec_lo[] = { 0.000770159809114490119.5632670722894754e-05-0.0086412992770224222-0.00146538258130505130.0459272392310922030.011609893903711381-0.15949427888491757-0.0708805357832438530.471690666938439250.76951003702110710.38382676106708546-0.035536740473817552-0.03199005688242780.0499949720773766870.0057649120335819086-0.02035493981231129-0.000804358932016544910.00459317358531182845.7036083618494284e-05-0.00045932942100465878 };    static const std::size_t wv_sym10_dec_lo_len = 20;    static const double wv_sym10_dec_hi[] = { 0.000459329421004658785.7036083618494284e-05-0.0045931735853118284-0.000804358932016544910.020354939812311290.0057649120335819086-0.049994972077376687-0.03199005688242780.0355367404738175520.38382676106708546-0.76951003702110710.471690666938439250.070880535783243853-0.15949427888491757-0.0116098939037113810.0459272392310922030.0014653825813050513-0.0086412992770224222-9.5632670722894754e-050.00077015980911449011 };    static const std::size_t wv_sym10_dec_hi_len = 20;    static const double wv_sym10_rec_lo[] = { -0.000459329421004658785.7036083618494284e-050.0045931735853118284-0.00080435893201654491-0.020354939812311290.00576491203358190860.049994972077376687-0.0319900568824278-0.0355367404738175520.383826761067085460.76951003702110710.47169066693843925-0.070880535783243853-0.159494278884917570.0116098939037113810.045927239231092203-0.0014653825813050513-0.00864129927702242229.5632670722894754e-050.00077015980911449011 };    static const std::size_t wv_sym10_rec_lo_len = 20;    static const double wv_sym10_rec_hi[] = { 0.00077015980911449011-9.5632670722894754e-05-0.00864129927702242220.00146538258130505130.045927239231092203-0.011609893903711381-0.159494278884917570.0708805357832438530.47169066693843925-0.76951003702110710.383826761067085460.035536740473817552-0.0319900568824278-0.0499949720773766870.00576491203358190860.02035493981231129-0.00080435893201654491-0.00459317358531182845.7036083618494284e-050.00045932942100465878 };    static const std::size_t wv_sym10_rec_hi_len = 20;    static const double wv_sym12_dec_lo[] = { 0.00011196719424656033-1.1353928041541452e-05-0.00134975575557153870.000180214090085381880.007414965517654251-0.0014089092443297553-0.0242207226750134450.00755378061168047750.049179318299660837-0.035848830736954392-0.0221623061703378160.398885972390220.763479097783657190.46274103121927235-0.07833262231634322-0.170370697238864920.015301740622478840.057804179445505657-0.0026043910313322326-0.0145898364492341450.000307647796310594540.0023502976141834648-1.8158078862617515e-05-0.00017906658697508691 };    static const std::size_t wv_sym12_dec_lo_len = 24;    static const double wv_sym12_dec_hi[] = { 0.00017906658697508691-1.8158078862617515e-05-0.00235029761418346480.000307647796310594540.014589836449234145-0.0026043910313322326-0.0578041794455056570.015301740622478840.17037069723886492-0.07833262231634322-0.462741031219272350.76347909778365719-0.39888597239022-0.0221623061703378160.0358488307369543920.049179318299660837-0.0075537806116804775-0.0242207226750134450.00140890924432975530.007414965517654251-0.00018021409008538188-0.00134975575557153871.1353928041541452e-050.00011196719424656033 };    static const std::size_t wv_sym12_dec_hi_len = 24;    static const double wv_sym12_rec_lo[] = { -0.00017906658697508691-1.8158078862617515e-050.00235029761418346480.00030764779631059454-0.014589836449234145-0.00260439103133223260.0578041794455056570.01530174062247884-0.17037069723886492-0.078332622316343220.462741031219272350.763479097783657190.39888597239022-0.022162306170337816-0.0358488307369543920.0491793182996608370.0075537806116804775-0.024220722675013445-0.00140890924432975530.0074149655176542510.00018021409008538188-0.0013497557555715387-1.1353928041541452e-050.00011196719424656033 };    static const std::size_t wv_sym12_rec_lo_len = 24;    static const double wv_sym12_rec_hi[] = { 0.000111967194246560331.1353928041541452e-05-0.0013497557555715387-0.000180214090085381880.0074149655176542510.0014089092443297553-0.024220722675013445-0.00755378061168047750.0491793182996608370.035848830736954392-0.022162306170337816-0.398885972390220.76347909778365719-0.46274103121927235-0.078332622316343220.170370697238864920.01530174062247884-0.057804179445505657-0.00260439103133223260.0145898364492341450.00030764779631059454-0.0023502976141834648-1.8158078862617515e-050.00017906658697508691 };    static const std::size_t wv_sym12_rec_hi_len = 24;    static const double wv_sym14_dec_lo[] = { -2.5879090265397886e-051.1210865808890361e-050.00039843567297594335-6.2865424814776362e-05-0.0025794417259330780.000366476573660118290.010037693717672269-0.0027537747912240711-0.0291962177640381870.00428052049901937820.037433088362853452-0.057634498351326995-0.0353181121149797330.393201521962088850.759976241961090930.47533576263420663-0.058111823317717831-0.159997411146522050.0258985875310466690.069827616361807551-0.0023650488367403851-0.0194393142636267130.00101314198718420820.0045326774719456481-7.3214213567023991e-05-0.000605760182466433461.9329016965523917e-054.4618977991475265e-05 };    static const std::size_t wv_sym14_dec_lo_len = 28;    static const double wv_sym14_dec_hi[] = { -4.4618977991475265e-051.9329016965523917e-050.00060576018246643346-7.3214213567023991e-05-0.00453267747194564810.00101314198718420820.019439314263626713-0.0023650488367403851-0.0698276163618075510.0258985875310466690.15999741114652205-0.058111823317717831-0.475335762634206630.75997624196109093-0.39320152196208885-0.0353181121149797330.0576344983513269950.037433088362853452-0.0042805204990193782-0.0291962177640381870.00275377479122407110.010037693717672269-0.00036647657366011829-0.0025794417259330786.2865424814776362e-050.00039843567297594335-1.1210865808890361e-05-2.5879090265397886e-05 };    static const std::size_t wv_sym14_dec_hi_len = 28;    static const double wv_sym14_rec_lo[] = { 4.4618977991475265e-051.9329016965523917e-05-0.00060576018246643346-7.3214213567023991e-050.00453267747194564810.0010131419871842082-0.019439314263626713-0.00236504883674038510.0698276163618075510.025898587531046669-0.15999741114652205-0.0581118233177178310.475335762634206630.759976241961090930.39320152196208885-0.035318112114979733-0.0576344983513269950.0374330883628534520.0042805204990193782-0.029196217764038187-0.00275377479122407110.0100376937176722690.00036647657366011829-0.002579441725933078-6.2865424814776362e-050.000398435672975943351.1210865808890361e-05-2.5879090265397886e-05 };    static const std::size_t wv_sym14_rec_lo_len = 28;    static const double wv_sym14_rec_hi[] = { -2.5879090265397886e-05-1.1210865808890361e-050.000398435672975943356.2865424814776362e-05-0.002579441725933078-0.000366476573660118290.0100376937176722690.0027537747912240711-0.029196217764038187-0.00428052049901937820.0374330883628534520.057634498351326995-0.035318112114979733-0.393201521962088850.75997624196109093-0.47533576263420663-0.0581118233177178310.159997411146522050.025898587531046669-0.069827616361807551-0.00236504883674038510.0194393142636267130.0010131419871842082-0.0045326774719456481-7.3214213567023991e-050.000605760182466433461.9329016965523917e-05-4.4618977991475265e-05 };    static const std::size_t wv_sym14_rec_hi_len = 28;    static const double wv_sym16_dec_lo[] = { 6.2300067012207606e-06-3.1135564076219692e-06-0.000109431479295297572.8078582128442894e-050.00085235471080470952-0.0001084456223089688-0.00388091225260387860.000718211978831789230.012666731659857348-0.0031265171722710075-0.0310512028435530640.00486927440490460710.032333091610663785-0.066983049070217779-0.0345742284169725040.397122933620644160.756524987875697110.47534280601152273-0.054040601387606135-0.159592192185205980.030721139063301560.078037852903419913-0.0035102750683740089-0.0249527580462901230.0013598447424841720.0069377611308027096-0.00022211647621176323-0.00133872060669219653.656592483348223e-050.00016545679579108483-5.3964831793152419e-06-1.0797982104319795e-05 };    static const std::size_t wv_sym16_dec_lo_len = 32;    static const double wv_sym16_dec_hi[] = { 1.0797982104319795e-05-5.3964831793152419e-06-0.000165456795791084833.656592483348223e-050.0013387206066921965-0.00022211647621176323-0.00693776113080270960.0013598447424841720.024952758046290123-0.0035102750683740089-0.0780378529034199130.030721139063301560.15959219218520598-0.054040601387606135-0.475342806011522730.75652498787569711-0.39712293362064416-0.0345742284169725040.0669830490702177790.032333091610663785-0.0048692744049046071-0.0310512028435530640.00312651717227100750.012666731659857348-0.00071821197883178923-0.00388091225260387860.00010844562230896880.00085235471080470952-2.8078582128442894e-05-0.000109431479295297573.1135564076219692e-066.2300067012207606e-06 };    static const std::size_t wv_sym16_dec_hi_len = 32;    static const double wv_sym16_rec_lo[] = { -1.0797982104319795e-05-5.3964831793152419e-060.000165456795791084833.656592483348223e-05-0.0013387206066921965-0.000222116476211763230.00693776113080270960.001359844742484172-0.024952758046290123-0.00351027506837400890.0780378529034199130.03072113906330156-0.15959219218520598-0.0540406013876061350.475342806011522730.756524987875697110.39712293362064416-0.034574228416972504-0.0669830490702177790.0323330916106637850.0048692744049046071-0.031051202843553064-0.00312651717227100750.0126667316598573480.00071821197883178923-0.0038809122526038786-0.00010844562230896880.000852354710804709522.8078582128442894e-05-0.00010943147929529757-3.1135564076219692e-066.2300067012207606e-06 };    static const std::size_t wv_sym16_rec_lo_len = 32;    static const double wv_sym16_rec_hi[] = { 6.2300067012207606e-063.1135564076219692e-06-0.00010943147929529757-2.8078582128442894e-050.000852354710804709520.0001084456223089688-0.0038809122526038786-0.000718211978831789230.0126667316598573480.0031265171722710075-0.031051202843553064-0.00486927440490460710.0323330916106637850.066983049070217779-0.034574228416972504-0.397122933620644160.75652498787569711-0.47534280601152273-0.0540406013876061350.159592192185205980.03072113906330156-0.078037852903419913-0.00351027506837400890.0249527580462901230.001359844742484172-0.0069377611308027096-0.000222116476211763230.00133872060669219653.656592483348223e-05-0.00016545679579108483-5.3964831793152419e-061.0797982104319795e-05 };    static const std::size_t wv_sym16_rec_hi_len = 32;    static const double wv_sym18_dec_lo[] = { 2.6126125564836423e-061.354915761832114e-06-4.5246757874949856e-05-1.4020992577726755e-050.000396168406382547537.0212734590362685e-05-0.0023138718145060992-0.000411521109235977560.00950216439096236540.0016429863972782159-0.030325091089369604-0.00507708516075705290.0842199299703865480.033995667103947358-0.15993814866932407-0.0520291589839527860.473969059893939560.753629140101792830.40148386057061813-0.032480573290138676-0.0737992072906071690.0285295970390378080.0062779445543116943-0.031712684731814537-0.00326074420007498340.0150123563442502130.0010877847895956929-0.0052397896830266083-0.000188776239407556070.00142808632708327964.7416145183736671e-05-0.00026583011024241041-9.858816030140058e-062.9557437620930811e-057.8472980558317646e-07-1.5131530692371587e-06 };    static const std::size_t wv_sym18_dec_lo_len = 36;    static const double wv_sym18_dec_hi[] = { 1.5131530692371587e-067.8472980558317646e-07-2.9557437620930811e-05-9.858816030140058e-060.000265830110242410414.7416145183736671e-05-0.0014280863270832796-0.000188776239407556070.00523978968302660830.0010877847895956929-0.015012356344250213-0.00326074420007498340.0317126847318145370.0062779445543116943-0.028529597039037808-0.0737992072906071690.0324805732901386760.40148386057061813-0.753629140101792830.473969059893939560.052029158983952786-0.15993814866932407-0.0339956671039473580.0842199299703865480.0050770851607570529-0.030325091089369604-0.00164298639727821590.00950216439096236540.00041152110923597756-0.0023138718145060992-7.0212734590362685e-050.000396168406382547531.4020992577726755e-05-4.5246757874949856e-05-1.354915761832114e-062.6126125564836423e-06 };    static const std::size_t wv_sym18_dec_hi_len = 36;    static const double wv_sym18_rec_lo[] = { -1.5131530692371587e-067.8472980558317646e-072.9557437620930811e-05-9.858816030140058e-06-0.000265830110242410414.7416145183736671e-050.0014280863270832796-0.00018877623940755607-0.00523978968302660830.00108778478959569290.015012356344250213-0.0032607442000749834-0.0317126847318145370.00627794455431169430.028529597039037808-0.073799207290607169-0.0324805732901386760.401483860570618130.753629140101792830.47396905989393956-0.052029158983952786-0.159938148669324070.0339956671039473580.084219929970386548-0.0050770851607570529-0.0303250910893696040.00164298639727821590.0095021643909623654-0.00041152110923597756-0.00231387181450609927.0212734590362685e-050.00039616840638254753-1.4020992577726755e-05-4.5246757874949856e-051.354915761832114e-062.6126125564836423e-06 };    static const std::size_t wv_sym18_rec_lo_len = 36;    static const double wv_sym18_rec_hi[] = { 2.6126125564836423e-06-1.354915761832114e-06-4.5246757874949856e-051.4020992577726755e-050.00039616840638254753-7.0212734590362685e-05-0.00231387181450609920.000411521109235977560.0095021643909623654-0.0016429863972782159-0.0303250910893696040.00507708516075705290.084219929970386548-0.033995667103947358-0.159938148669324070.0520291589839527860.47396905989393956-0.753629140101792830.401483860570618130.032480573290138676-0.073799207290607169-0.0285295970390378080.00627794455431169430.031712684731814537-0.0032607442000749834-0.0150123563442502130.00108778478959569290.0052397896830266083-0.00018877623940755607-0.00142808632708327964.7416145183736671e-050.00026583011024241041-9.858816030140058e-06-2.9557437620930811e-057.8472980558317646e-071.5131530692371587e-06 };    static const std::size_t wv_sym18_rec_hi_len = 36;    static const double wv_sym20_dec_lo[] = { 3.695537474835221e-07-1.9015675890554106e-07-7.919361411976999e-063.0256660627369661e-067.992967835772481e-05-1.928412300645204e-05-0.000494731091567265487.2159911880740349e-050.0020889947081901982-0.0003052628317957281-0.00660658579908886090.00142308735946214530.017004049023390339-0.0033138573836233591-0.0316294371449579660.00812322835600968150.025579349509413946-0.078994344928398158-0.0298193688803337280.405831444348450590.751162728422730020.47199147510148703-0.051088342921067398-0.160578298415252540.0362509516539330780.088919668028199561-0.0068437019650692274-0.0353733367566042360.00193859706724020020.012157040948785737-0.0006111263857992088-0.00347164780284407340.000125440917230672590.00074761085978205719-2.6615550335516086e-05-0.000117391335162914664.5254222091516362e-061.22872527779612e-05-3.2567026420174407e-07-6.3291290447763946e-07 };    static const std::size_t wv_sym20_dec_lo_len = 40;    static const double wv_sym20_dec_hi[] = { 6.3291290447763946e-07-3.2567026420174407e-07-1.22872527779612e-054.5254222091516362e-060.00011739133516291466-2.6615550335516086e-05-0.000747610859782057190.000125440917230672590.0034716478028440734-0.0006111263857992088-0.0121570409487857370.00193859706724020020.035373336756604236-0.0068437019650692274-0.0889196680281995610.0362509516539330780.16057829841525254-0.051088342921067398-0.471991475101487030.75116272842273002-0.40583144434845059-0.0298193688803337280.0789943449283981580.025579349509413946-0.0081232283560096815-0.0316294371449579660.00331385738362335910.017004049023390339-0.0014230873594621453-0.00660658579908886090.00030526283179572810.0020889947081901982-7.2159911880740349e-05-0.000494731091567265481.928412300645204e-057.992967835772481e-05-3.0256660627369661e-06-7.919361411976999e-061.9015675890554106e-073.695537474835221e-07 };    static const std::size_t wv_sym20_dec_hi_len = 40;    static const double wv_sym20_rec_lo[] = { -6.3291290447763946e-07-3.2567026420174407e-071.22872527779612e-054.5254222091516362e-06-0.00011739133516291466-2.6615550335516086e-050.000747610859782057190.00012544091723067259-0.0034716478028440734-0.00061112638579920880.0121570409487857370.0019385970672402002-0.035373336756604236-0.00684370196506922740.0889196680281995610.036250951653933078-0.16057829841525254-0.0510883429210673980.471991475101487030.751162728422730020.40583144434845059-0.029819368880333728-0.0789943449283981580.0255793495094139460.0081232283560096815-0.031629437144957966-0.00331385738362335910.0170040490233903390.0014230873594621453-0.0066065857990888609-0.00030526283179572810.00208899470819019827.2159911880740349e-05-0.00049473109156726548-1.928412300645204e-057.992967835772481e-053.0256660627369661e-06-7.919361411976999e-06-1.9015675890554106e-073.695537474835221e-07 };    static const std::size_t wv_sym20_rec_lo_len = 40;    static const double wv_sym20_rec_hi[] = { 3.695537474835221e-071.9015675890554106e-07-7.919361411976999e-06-3.0256660627369661e-067.992967835772481e-051.928412300645204e-05-0.00049473109156726548-7.2159911880740349e-050.00208899470819019820.0003052628317957281-0.0066065857990888609-0.00142308735946214530.0170040490233903390.0033138573836233591-0.031629437144957966-0.00812322835600968150.0255793495094139460.078994344928398158-0.029819368880333728-0.405831444348450590.75116272842273002-0.47199147510148703-0.0510883429210673980.160578298415252540.036250951653933078-0.088919668028199561-0.00684370196506922740.0353733367566042360.0019385970672402002-0.012157040948785737-0.00061112638579920880.00347164780284407340.00012544091723067259-0.00074761085978205719-2.6615550335516086e-050.000117391335162914664.5254222091516362e-06-1.22872527779612e-05-3.2567026420174407e-076.3291290447763946e-07 };    static const std::size_t wv_sym20_rec_hi_len = 40;    static const double wv_coif1_dec_lo[] = { -0.015655728135791993-0.072732619512526450.384864846864857780.852572020211600390.33789766245748182-0.07273261951252645 };    static const std::size_t wv_coif1_dec_lo_len = 6;    static const double wv_coif1_dec_hi[] = { 0.072732619512526450.33789766245748182-0.852572020211600390.384864846864857780.07273261951252645-0.015655728135791993 };    static const std::size_t wv_coif1_dec_hi_len = 6;    static const double wv_coif1_rec_lo[] = { -0.072732619512526450.337897662457481820.852572020211600390.38486484686485778-0.07273261951252645-0.015655728135791993 };    static const std::size_t wv_coif1_rec_lo_len = 6;    static const double wv_coif1_rec_hi[] = { -0.0156557281357919930.072732619512526450.38486484686485778-0.852572020211600390.337897662457481820.07273261951252645 };    static const std::size_t wv_coif1_rec_hi_len = 6;    static const double wv_coif2_dec_lo[] = { -0.00072054944552034698-0.00182320887091103230.00561143481936883430.02368017194684777-0.059434418646431092-0.0764885990782807610.417005184423239080.812723635449413510.38611006682276289-0.067372554723725595-0.0414649367868717770.016387336463203641 };    static const std::size_t wv_coif2_dec_lo_len = 12;    static const double wv_coif2_dec_hi[] = { -0.016387336463203641-0.0414649367868717770.0673725547237255950.38611006682276289-0.812723635449413510.417005184423239080.076488599078280761-0.059434418646431092-0.023680171946847770.00561143481936883430.0018232088709110323-0.00072054944552034698 };    static const std::size_t wv_coif2_dec_hi_len = 12;    static const double wv_coif2_rec_lo[] = { 0.016387336463203641-0.041464936786871777-0.0673725547237255950.386110066822762890.812723635449413510.41700518442323908-0.076488599078280761-0.0594344186464310920.023680171946847770.0056114348193688343-0.0018232088709110323-0.00072054944552034698 };    static const std::size_t wv_coif2_rec_lo_len = 12;    static const double wv_coif2_rec_hi[] = { -0.000720549445520346980.00182320887091103230.0056114348193688343-0.02368017194684777-0.0594344186464310920.0764885990782807610.41700518442323908-0.812723635449413510.386110066822762890.067372554723725595-0.041464936786871777-0.016387336463203641 };    static const std::size_t wv_coif2_rec_hi_len = 12;    static const double wv_coif3_dec_lo[] = { -3.4599773197272781e-05-7.0983302506379004e-050.000466216959820402880.0011175187708306303-0.0025745176881367972-0.00900797613673062420.0158805448636694520.034555027573297738-0.082301927106299827-0.0717998216191548380.428483476377370.793777222626087190.40517690240911824-0.061123390002972552-0.0657719112814693640.0234526961420771680.0077825964256727463-0.0037935128643808019 };    static const std::size_t wv_coif3_dec_lo_len = 18;    static const double wv_coif3_dec_hi[] = { 0.00379351286438080190.0077825964256727463-0.023452696142077168-0.0657719112814693640.0611233900029725520.40517690240911824-0.793777222626087190.428483476377370.071799821619154838-0.082301927106299827-0.0345550275732977380.0158805448636694520.0090079761367306242-0.0025745176881367972-0.00111751877083063030.000466216959820402887.0983302506379004e-05-3.4599773197272781e-05 };    static const std::size_t wv_coif3_dec_hi_len = 18;    static const double wv_coif3_rec_lo[] = { -0.00379351286438080190.00778259642567274630.023452696142077168-0.065771911281469364-0.0611233900029725520.405176902409118240.793777222626087190.42848347637737-0.071799821619154838-0.0823019271062998270.0345550275732977380.015880544863669452-0.0090079761367306242-0.00257451768813679720.00111751877083063030.00046621695982040288-7.0983302506379004e-05-3.4599773197272781e-05 };    static const std::size_t wv_coif3_rec_lo_len = 18;    static const double wv_coif3_rec_hi[] = { -3.4599773197272781e-057.0983302506379004e-050.00046621695982040288-0.0011175187708306303-0.00257451768813679720.00900797613673062420.015880544863669452-0.034555027573297738-0.0823019271062998270.0717998216191548380.42848347637737-0.793777222626087190.405176902409118240.061123390002972552-0.065771911281469364-0.0234526961420771680.00778259642567274630.0037935128643808019 };    static const std::size_t wv_coif3_rec_hi_len = 18;    static const double wv_coif4_dec_lo[] = { -1.7849909144933469e-06-3.259647940030751e-063.1229861599195265e-056.2338854312787192e-05-0.00025997433712225682-0.000589020224633216540.00126656107892566030.0037514346971460866-0.0056582838001308835-0.0152117281876972110.0250822533379496120.039334422605589149-0.096220424535952642-0.0666274723668171670.434386033114356530.782238934424282610.41530842700068227-0.056077319603569258-0.0812667102491937270.026682304669604830.016068947131575029-0.0073461679362680507-0.0016294924252267860.00089231390253700297 };    static const std::size_t wv_coif4_dec_lo_len = 24;    static const double wv_coif4_dec_hi[] = { -0.00089231390253700297-0.0016294924252267860.00734616793626805070.016068947131575029-0.02668230466960483-0.0812667102491937270.0560773196035692580.41530842700068227-0.782238934424282610.434386033114356530.066627472366817167-0.096220424535952642-0.0393344226055891490.0250822533379496120.015211728187697211-0.0056582838001308835-0.00375143469714608660.00126656107892566030.00058902022463321654-0.00025997433712225682-6.2338854312787192e-053.1229861599195265e-053.259647940030751e-06-1.7849909144933469e-06 };    static const std::size_t wv_coif4_dec_hi_len = 24;    static const double wv_coif4_rec_lo[] = { 0.00089231390253700297-0.001629492425226786-0.00734616793626805070.0160689471315750290.02668230466960483-0.081266710249193727-0.0560773196035692580.415308427000682270.782238934424282610.43438603311435653-0.066627472366817167-0.0962204245359526420.0393344226055891490.025082253337949612-0.015211728187697211-0.00565828380013088350.00375143469714608660.0012665610789256603-0.00058902022463321654-0.000259974337122256826.2338854312787192e-053.1229861599195265e-05-3.259647940030751e-06-1.7849909144933469e-06 };    static const std::size_t wv_coif4_rec_lo_len = 24;    static const double wv_coif4_rec_hi[] = { -1.7849909144933469e-063.259647940030751e-063.1229861599195265e-05-6.2338854312787192e-05-0.000259974337122256820.000589020224633216540.0012665610789256603-0.0037514346971460866-0.00565828380013088350.0152117281876972110.025082253337949612-0.039334422605589149-0.0962204245359526420.0666274723668171670.43438603311435653-0.782238934424282610.415308427000682270.056077319603569258-0.081266710249193727-0.026682304669604830.0160689471315750290.0073461679362680507-0.001629492425226786-0.00089231390253700297 };    static const std::size_t wv_coif4_rec_hi_len = 24;    static const double wv_coif5_dec_lo[] = { -9.6040101127678941e-08-1.6237995172048338e-072.0612203985788783e-063.7007277113394796e-06-2.1270221672515614e-05-4.1219861924265501e-050.000140356328123732430.00030185794166824478-0.00063755892612588115-0.00166162730392987880.00243157544253828860.0067615202206204169-0.0091595073386761625-0.0197583916009654650.0326747994670573550.041287530472117834-0.10556315130733723-0.062037751574981960.437982306659163380.774293622860327440.42157126673075435-0.052046670253554764-0.0919215880600860870.0281697442705323530.023408322118927783-0.010131584846900276-0.00415931262757864020.00217829437784569470.00035857774116175768-0.000212081862067494 };    static const std::size_t wv_coif5_dec_lo_len = 30;    static const double wv_coif5_dec_hi[] = { 0.0002120818620674940.00035857774116175768-0.0021782943778456947-0.00415931262757864020.0101315848469002760.023408322118927783-0.028169744270532353-0.0919215880600860870.0520466702535547640.42157126673075435-0.774293622860327440.437982306659163380.06203775157498196-0.10556315130733723-0.0412875304721178340.0326747994670573550.019758391600965465-0.0091595073386761625-0.00676152022062041690.00243157544253828860.0016616273039298788-0.00063755892612588115-0.000301857941668244780.000140356328123732434.1219861924265501e-05-2.1270221672515614e-05-3.7007277113394796e-062.0612203985788783e-061.6237995172048338e-07-9.6040101127678941e-08 };    static const std::size_t wv_coif5_dec_hi_len = 30;    static const double wv_coif5_rec_lo[] = { -0.0002120818620674940.000358577741161757680.0021782943778456947-0.0041593126275786402-0.0101315848469002760.0234083221189277830.028169744270532353-0.091921588060086087-0.0520466702535547640.421571266730754350.774293622860327440.43798230665916338-0.06203775157498196-0.105563151307337230.0412875304721178340.032674799467057355-0.019758391600965465-0.00915950733867616250.00676152022062041690.0024315754425382886-0.0016616273039298788-0.000637558926125881150.000301857941668244780.00014035632812373243-4.1219861924265501e-05-2.1270221672515614e-053.7007277113394796e-062.0612203985788783e-06-1.6237995172048338e-07-9.6040101127678941e-08 };    static const std::size_t wv_coif5_rec_lo_len = 30;    static const double wv_coif5_rec_hi[] = { -9.6040101127678941e-081.6237995172048338e-072.0612203985788783e-06-3.7007277113394796e-06-2.1270221672515614e-054.1219861924265501e-050.00014035632812373243-0.00030185794166824478-0.000637558926125881150.00166162730392987880.0024315754425382886-0.0067615202206204169-0.00915950733867616250.0197583916009654650.032674799467057355-0.041287530472117834-0.105563151307337230.062037751574981960.43798230665916338-0.774293622860327440.421571266730754350.052046670253554764-0.091921588060086087-0.0281697442705323530.0234083221189277830.010131584846900276-0.0041593126275786402-0.00217829437784569470.000358577741161757680.000212081862067494 };    static const std::size_t wv_coif5_rec_hi_len = 30;    static const double wv_bior1_1_dec_lo[] = { 0.707106781186547570.70710678118654757 };    static const std::size_t wv_bior1_1_dec_lo_len = 2;    static const double wv_bior1_1_dec_hi[] = { -0.707106781186547570.70710678118654757 };    static const std::size_t wv_bior1_1_dec_hi_len = 2;    static const double wv_bior1_1_rec_lo[] = { 0.707106781186547570.70710678118654757 };    static const std::size_t wv_bior1_1_rec_lo_len = 2;    static const double wv_bior1_1_rec_hi[] = { 0.70710678118654757-0.70710678118654757 };    static const std::size_t wv_bior1_1_rec_hi_len = 2;    static const double wv_bior1_3_dec_lo[] = { -0.0883883476483184470.0883883476483184470.707106781186547570.707106781186547570.088388347648318447-0.088388347648318447 };    static const std::size_t wv_bior1_3_dec_lo_len = 6;    static const double wv_bior1_3_dec_hi[] = { -00-0.707106781186547570.70710678118654757-00 };    static const std::size_t wv_bior1_3_dec_hi_len = 6;    static const double wv_bior1_3_rec_lo[] = { 000.707106781186547570.7071067811865475700 };    static const std::size_t wv_bior1_3_rec_lo_len = 6;    static const double wv_bior1_3_rec_hi[] = { -0.088388347648318447-0.0883883476483184470.70710678118654757-0.707106781186547570.0883883476483184470.088388347648318447 };    static const std::size_t wv_bior1_3_rec_hi_len = 6;    static const double wv_bior1_5_dec_lo[] = { 0.016572815184059706-0.016572815184059706-0.121533978016437850.121533978016437850.707106781186547570.707106781186547570.12153397801643785-0.12153397801643785-0.0165728151840597060.016572815184059706 };    static const std::size_t wv_bior1_5_dec_lo_len = 10;    static const double wv_bior1_5_dec_hi[] = { -00-00-0.707106781186547570.70710678118654757-00-00 };    static const std::size_t wv_bior1_5_dec_hi_len = 10;    static const double wv_bior1_5_rec_lo[] = { 00000.707106781186547570.707106781186547570000 };    static const std::size_t wv_bior1_5_rec_lo_len = 10;    static const double wv_bior1_5_rec_hi[] = { 0.0165728151840597060.016572815184059706-0.12153397801643785-0.121533978016437850.70710678118654757-0.707106781186547570.121533978016437850.12153397801643785-0.016572815184059706-0.016572815184059706 };    static const std::size_t wv_bior1_5_rec_hi_len = 10;    static const double wv_bior2_2_dec_lo[] = { 0-0.176776695296636890.353553390593273791.06066017177982120.35355339059327379-0.17677669529663689 };    static const std::size_t wv_bior2_2_dec_lo_len = 6;    static const double wv_bior2_2_dec_hi[] = { -00.35355339059327379-0.707106781186547570.35355339059327379-00 };    static const std::size_t wv_bior2_2_dec_hi_len = 6;    static const double wv_bior2_2_rec_lo[] = { 00.353553390593273790.707106781186547570.3535533905932737900 };    static const std::size_t wv_bior2_2_rec_lo_len = 6;    static const double wv_bior2_2_rec_hi[] = { 00.176776695296636890.35355339059327379-1.06066017177982120.353553390593273790.17677669529663689 };    static const std::size_t wv_bior2_2_rec_hi_len = 6;    static const double wv_bior2_4_dec_lo[] = { 00.033145630368119412-0.066291260736238825-0.176776695296636890.41984465132951260.994368911043582490.4198446513295126-0.17677669529663689-0.0662912607362388250.033145630368119412 };    static const std::size_t wv_bior2_4_dec_lo_len = 10;    static const double wv_bior2_4_dec_hi[] = { -00-00.35355339059327379-0.707106781186547570.35355339059327379-00-00 };    static const std::size_t wv_bior2_4_dec_hi_len = 10;    static const double wv_bior2_4_rec_lo[] = { 0000.353553390593273790.707106781186547570.353553390593273790000 };    static const std::size_t wv_bior2_4_rec_lo_len = 10;    static const double wv_bior2_4_rec_hi[] = { 0-0.033145630368119412-0.0662912607362388250.176776695296636890.4198446513295126-0.994368911043582490.41984465132951260.17677669529663689-0.066291260736238825-0.033145630368119412 };    static const std::size_t wv_bior2_4_rec_hi_len = 10;    static const double wv_bior2_6_dec_lo[] = { 0-0.00690533966002487840.0138106793200497570.046956309688169169-0.1077232986963881-0.169871355636612010.447466009969612110.966747552403482980.44746600996961211-0.16987135563661201-0.10772329869638810.0469563096881691690.013810679320049757-0.0069053396600248784 };    static const std::size_t wv_bior2_6_dec_lo_len = 14;    static const double wv_bior2_6_dec_hi[] = { -00-00-00.35355339059327379-0.707106781186547570.35355339059327379-00-00-00 };    static const std::size_t wv_bior2_6_dec_hi_len = 14;    static const double wv_bior2_6_rec_lo[] = { 000000.353553390593273790.707106781186547570.35355339059327379000000 };    static const std::size_t wv_bior2_6_rec_lo_len = 14;    static const double wv_bior2_6_rec_hi[] = { 00.00690533966002487840.013810679320049757-0.046956309688169169-0.10772329869638810.169871355636612010.44746600996961211-0.966747552403482980.447466009969612110.16987135563661201-0.1077232986963881-0.0469563096881691690.0138106793200497570.0069053396600248784 };    static const std::size_t wv_bior2_6_rec_hi_len = 14;    static const double wv_bior2_8_dec_lo[] = { 00.0015105430506304422-0.0030210861012608843-0.0129475118625466470.0289161098263541780.052998481890690938-0.13491307360773605-0.163829183434090230.462571440475916530.951642121897178560.46257144047591653-0.16382918343409023-0.134913073607736050.0529984818906909380.028916109826354178-0.012947511862546647-0.00302108610126088430.0015105430506304422 };    static const std::size_t wv_bior2_8_dec_lo_len = 18;    static const double wv_bior2_8_dec_hi[] = { -00-00-00-00.35355339059327379-0.707106781186547570.35355339059327379-00-00-00-00 };    static const std::size_t wv_bior2_8_dec_hi_len = 18;    static const double wv_bior2_8_rec_lo[] = { 00000000.353553390593273790.707106781186547570.3535533905932737900000000 };    static const std::size_t wv_bior2_8_rec_lo_len = 18;    static const double wv_bior2_8_rec_hi[] = { 0-0.0015105430506304422-0.00302108610126088430.0129475118625466470.028916109826354178-0.052998481890690938-0.134913073607736050.163829183434090230.46257144047591653-0.951642121897178560.462571440475916530.16382918343409023-0.13491307360773605-0.0529984818906909380.0289161098263541780.012947511862546647-0.0030210861012608843-0.0015105430506304422 };    static const std::size_t wv_bior2_8_rec_hi_len = 18;    static const double wv_bior3_1_dec_lo[] = { -0.353553390593273791.06066017177982121.0606601717798212-0.35355339059327379 };    static const std::size_t wv_bior3_1_dec_lo_len = 4;    static const double wv_bior3_1_dec_hi[] = { -0.176776695296636890.5303300858899106-0.53033008588991060.17677669529663689 };    static const std::size_t wv_bior3_1_dec_hi_len = 4;    static const double wv_bior3_1_rec_lo[] = { 0.176776695296636890.53033008588991060.53033008588991060.17677669529663689 };    static const std::size_t wv_bior3_1_rec_lo_len = 4;    static const double wv_bior3_1_rec_hi[] = { -0.35355339059327379-1.06066017177982121.06066017177982120.35355339059327379 };    static const std::size_t wv_bior3_1_rec_hi_len = 4;    static const double wv_bior3_3_dec_lo[] = { 0.066291260736238825-0.19887378220871649-0.154679608384557270.994368911043582490.99436891104358249-0.15467960838455727-0.198873782208716490.066291260736238825 };    static const std::size_t wv_bior3_3_dec_lo_len = 8;    static const double wv_bior3_3_dec_hi[] = { -00-0.176776695296636890.5303300858899106-0.53033008588991060.17677669529663689-00 };    static const std::size_t wv_bior3_3_dec_hi_len = 8;    static const double wv_bior3_3_rec_lo[] = { 000.176776695296636890.53033008588991060.53033008588991060.1767766952966368900 };    static const std::size_t wv_bior3_3_rec_lo_len = 8;    static const double wv_bior3_3_rec_hi[] = { 0.0662912607362388250.19887378220871649-0.15467960838455727-0.994368911043582490.994368911043582490.15467960838455727-0.19887378220871649-0.066291260736238825 };    static const std::size_t wv_bior3_3_rec_hi_len = 8;    static const double wv_bior3_5_dec_lo[] = { -0.0138106793200497570.0414320379601492710.052480581416189075-0.26792717880896527-0.071815532464258730.966747552403482980.96674755240348298-0.07181553246425873-0.267927178808965270.0524805814161890750.041432037960149271-0.013810679320049757 };    static const std::size_t wv_bior3_5_dec_lo_len = 12;    static const double wv_bior3_5_dec_hi[] = { -00-00-0.176776695296636890.5303300858899106-0.53033008588991060.17677669529663689-00-00 };    static const std::size_t wv_bior3_5_dec_hi_len = 12;    static const double wv_bior3_5_rec_lo[] = { 00000.176776695296636890.53033008588991060.53033008588991060.176776695296636890000 };    static const std::size_t wv_bior3_5_rec_lo_len = 12;    static const double wv_bior3_5_rec_hi[] = { -0.013810679320049757-0.0414320379601492710.0524805814161890750.26792717880896527-0.07181553246425873-0.966747552403482980.966747552403482980.07181553246425873-0.26792717880896527-0.0524805814161890750.0414320379601492710.013810679320049757 };    static const std::size_t wv_bior3_5_rec_hi_len = 12;    static const double wv_bior3_7_dec_lo[] = { 0.0030210861012608843-0.0090632583037826529-0.0168317654213106410.0746639850740190010.031332978707362888-0.301159125922835-0.0264992409453454690.951642121897178560.95164212189717856-0.026499240945345469-0.3011591259228350.0313329787073628880.074663985074019001-0.016831765421310641-0.00906325830378265290.0030210861012608843 };    static const std::size_t wv_bior3_7_dec_lo_len = 16;    static const double wv_bior3_7_dec_hi[] = { -00-00-00-0.176776695296636890.5303300858899106-0.53033008588991060.17677669529663689-00-00-00 };    static const std::size_t wv_bior3_7_dec_hi_len = 16;    static const double wv_bior3_7_rec_lo[] = { 0000000.176776695296636890.53033008588991060.53033008588991060.17677669529663689000000 };    static const std::size_t wv_bior3_7_rec_lo_len = 16;    static const double wv_bior3_7_rec_hi[] = { 0.00302108610126088430.0090632583037826529-0.016831765421310641-0.0746639850740190010.0313329787073628880.301159125922835-0.026499240945345469-0.951642121897178560.951642121897178560.026499240945345469-0.301159125922835-0.0313329787073628880.0746639850740190010.016831765421310641-0.0090632583037826529-0.0030210861012608843 };    static const std::size_t wv_bior3_7_rec_hi_len = 16;    static const double wv_bior3_9_dec_lo[] = { -0.00067974437278369890.00203923311835109680.0050603192196119811-0.020618912641105536-0.0141127879301758440.099134782494232160.012300136269419315-0.320191968360778570.00205002271156988580.942125700678206780.942125700678206780.0020500227115698858-0.320191968360778570.0123001362694193150.09913478249423216-0.014112787930175844-0.0206189126411055360.00506031921961198110.0020392331183510968-0.0006797443727836989 };    static const std::size_t wv_bior3_9_dec_lo_len = 20;    static const double wv_bior3_9_dec_hi[] = { -00-00-00-00-0.176776695296636890.5303300858899106-0.53033008588991060.17677669529663689-00-00-00-00 };    static const std::size_t wv_bior3_9_dec_hi_len = 20;    static const double wv_bior3_9_rec_lo[] = { 000000000.176776695296636890.53033008588991060.53033008588991060.1767766952966368900000000 };    static const std::size_t wv_bior3_9_rec_lo_len = 20;    static const double wv_bior3_9_rec_hi[] = { -0.0006797443727836989-0.00203923311835109680.00506031921961198110.020618912641105536-0.014112787930175844-0.099134782494232160.0123001362694193150.320191968360778570.0020500227115698858-0.942125700678206780.94212570067820678-0.0020500227115698858-0.32019196836077857-0.0123001362694193150.099134782494232160.014112787930175844-0.020618912641105536-0.00506031921961198110.00203923311835109680.0006797443727836989 };    static const std::size_t wv_bior3_9_rec_hi_len = 20;    static const double wv_bior4_4_dec_lo[] = { 00.03782845550726404-0.023849465019556843-0.110624404418437180.377402855612830660.852698679008893850.37740285561283066-0.11062440441843718-0.0238494650195568430.03782845550726404 };    static const std::size_t wv_bior4_4_dec_lo_len = 10;    static const double wv_bior4_4_dec_hi[] = { -0-0.0645388826286970580.0406894176091640580.41809227322161724-0.78848561640558290.418092273221617240.040689417609164058-0.064538882628697058-00 };    static const std::size_t wv_bior4_4_dec_hi_len = 10;    static const double wv_bior4_4_rec_lo[] = { 0-0.064538882628697058-0.0406894176091640580.418092273221617240.78848561640558290.41809227322161724-0.040689417609164058-0.06453888262869705800 };    static const std::size_t wv_bior4_4_rec_lo_len = 10;    static const double wv_bior4_4_rec_hi[] = { 0-0.03782845550726404-0.0238494650195568430.110624404418437180.37740285561283066-0.852698679008893850.377402855612830660.11062440441843718-0.023849465019556843-0.03782845550726404 };    static const std::size_t wv_bior4_4_rec_hi_len = 10;    static const double wv_bior5_5_dec_lo[] = { 000.039687088347405440.0079481086372403219-0.0544637884682369070.345605281956033460.736660181428210550.34560528195603346-0.0544637884682369070.00794810863724032190.039687088347405440 };    static const std::size_t wv_bior5_5_dec_lo_len = 12;    static const double wv_bior5_5_dec_hi[] = { -0.013456709459118716-0.00269496688011150710.13670658466432914-0.093504697400938863-0.476803265798484250.89950610974864842-0.47680326579848425-0.0935046974009388630.13670658466432914-0.0026949668801115071-0.0134567094591187160 };    static const std::size_t wv_bior5_5_dec_hi_len = 12;    static const double wv_bior5_5_rec_lo[] = { 0.013456709459118716-0.0026949668801115071-0.13670658466432914-0.0935046974009388630.476803265798484250.899506109748648420.47680326579848425-0.093504697400938863-0.13670658466432914-0.00269496688011150710.0134567094591187160 };    static const std::size_t wv_bior5_5_rec_lo_len = 12;    static const double wv_bior5_5_rec_hi[] = { 0-00.03968708834740544-0.0079481086372403219-0.054463788468236907-0.345605281956033460.73666018142821055-0.34560528195603346-0.054463788468236907-0.00794810863724032190.03968708834740544-0 };    static const std::size_t wv_bior5_5_rec_hi_len = 12;    static const double wv_bior6_8_dec_lo[] = { 00.0019088317364812906-0.0019142861290887667-0.0169906398676023420.011934565279729260.04973290349094079-0.077263173167204144-0.094059203495736460.420796284609826820.825922997458402250.42079628460982682-0.09405920349573646-0.0772631731672041440.049732903490940790.01193456527972926-0.016990639867602342-0.00191428612908876670.0019088317364812906 };    static const std::size_t wv_bior6_8_dec_lo_len = 18;    static const double wv_bior6_8_dec_hi[] = { -00-00.014426282505624435-0.014467504896790148-0.0787220010626288190.0403679790303399230.41784910915027457-0.758907729453654150.417849109150274570.040367979030339923-0.078722001062628819-0.0144675048967901480.014426282505624435-00-00 };    static const std::size_t wv_bior6_8_dec_hi_len = 18;    static const double wv_bior6_8_rec_lo[] = { 0000.0144262825056244350.014467504896790148-0.078722001062628819-0.0403679790303399230.417849109150274570.758907729453654150.41784910915027457-0.040367979030339923-0.0787220010626288190.0144675048967901480.0144262825056244350000 };    static const std::size_t wv_bior6_8_rec_lo_len = 18;    static const double wv_bior6_8_rec_hi[] = { 0-0.0019088317364812906-0.00191428612908876670.0169906398676023420.01193456527972926-0.04973290349094079-0.0772631731672041440.094059203495736460.42079628460982682-0.825922997458402250.420796284609826820.09405920349573646-0.077263173167204144-0.049732903490940790.011934565279729260.016990639867602342-0.0019142861290887667-0.0019088317364812906 };    static const std::size_t wv_bior6_8_rec_hi_len = 18;    static const double wv_rbio1_1_dec_lo[] = { 0.707106781186547570.70710678118654757 };    static const std::size_t wv_rbio1_1_dec_lo_len = 2;    static const double wv_rbio1_1_dec_hi[] = { -0.707106781186547570.70710678118654757 };    static const std::size_t wv_rbio1_1_dec_hi_len = 2;    static const double wv_rbio1_1_rec_lo[] = { 0.707106781186547570.70710678118654757 };    static const std::size_t wv_rbio1_1_rec_lo_len = 2;    static const double wv_rbio1_1_rec_hi[] = { 0.70710678118654757-0.70710678118654757 };    static const std::size_t wv_rbio1_1_rec_hi_len = 2;    static const double wv_rbio1_3_dec_lo[] = { 000.707106781186547570.7071067811865475700 };    static const std::size_t wv_rbio1_3_dec_lo_len = 6;    static const double wv_rbio1_3_dec_hi[] = { 0.0883883476483184470.088388347648318447-0.707106781186547570.70710678118654757-0.088388347648318447-0.088388347648318447 };    static const std::size_t wv_rbio1_3_dec_hi_len = 6;    static const double wv_rbio1_3_rec_lo[] = { -0.0883883476483184470.0883883476483184470.707106781186547570.707106781186547570.088388347648318447-0.088388347648318447 };    static const std::size_t wv_rbio1_3_rec_lo_len = 6;    static const double wv_rbio1_3_rec_hi[] = { 0-00.70710678118654757-0.707106781186547570-0 };    static const std::size_t wv_rbio1_3_rec_hi_len = 6;    static const double wv_rbio1_5_dec_lo[] = { 00000.707106781186547570.707106781186547570000 };    static const std::size_t wv_rbio1_5_dec_lo_len = 10;    static const double wv_rbio1_5_dec_hi[] = { -0.016572815184059706-0.0165728151840597060.121533978016437850.12153397801643785-0.707106781186547570.70710678118654757-0.12153397801643785-0.121533978016437850.0165728151840597060.016572815184059706 };    static const std::size_t wv_rbio1_5_dec_hi_len = 10;    static const double wv_rbio1_5_rec_lo[] = { 0.016572815184059706-0.016572815184059706-0.121533978016437850.121533978016437850.707106781186547570.707106781186547570.12153397801643785-0.12153397801643785-0.0165728151840597060.016572815184059706 };    static const std::size_t wv_rbio1_5_rec_lo_len = 10;    static const double wv_rbio1_5_rec_hi[] = { 0-00-00.70710678118654757-0.707106781186547570-00-0 };    static const std::size_t wv_rbio1_5_rec_hi_len = 10;    static const double wv_rbio2_2_dec_lo[] = { 000.353553390593273790.707106781186547570.353553390593273790 };    static const std::size_t wv_rbio2_2_dec_lo_len = 6;    static const double wv_rbio2_2_dec_hi[] = { 0.176776695296636890.35355339059327379-1.06066017177982120.353553390593273790.176776695296636890 };    static const std::size_t wv_rbio2_2_dec_hi_len = 6;    static const double wv_rbio2_2_rec_lo[] = { -0.176776695296636890.353553390593273791.06066017177982120.35355339059327379-0.176776695296636890 };    static const std::size_t wv_rbio2_2_rec_lo_len = 6;    static const double wv_rbio2_2_rec_hi[] = { 0-00.35355339059327379-0.707106781186547570.35355339059327379-0 };    static const std::size_t wv_rbio2_2_rec_hi_len = 6;    static const double wv_rbio2_4_dec_lo[] = { 00000.353553390593273790.707106781186547570.35355339059327379000 };    static const std::size_t wv_rbio2_4_dec_lo_len = 10;    static const double wv_rbio2_4_dec_hi[] = { -0.033145630368119412-0.0662912607362388250.176776695296636890.4198446513295126-0.994368911043582490.41984465132951260.17677669529663689-0.066291260736238825-0.0331456303681194120 };    static const std::size_t wv_rbio2_4_dec_hi_len = 10;    static const double wv_rbio2_4_rec_lo[] = { 0.033145630368119412-0.066291260736238825-0.176776695296636890.41984465132951260.994368911043582490.4198446513295126-0.17677669529663689-0.0662912607362388250.0331456303681194120 };    static const std::size_t wv_rbio2_4_rec_lo_len = 10;    static const double wv_rbio2_4_rec_hi[] = { 0-00-00.35355339059327379-0.707106781186547570.35355339059327379-00-0 };    static const std::size_t wv_rbio2_4_rec_hi_len = 10;    static const double wv_rbio2_6_dec_lo[] = { 0000000.353553390593273790.707106781186547570.3535533905932737900000 };    static const std::size_t wv_rbio2_6_dec_lo_len = 14;    static const double wv_rbio2_6_dec_hi[] = { 0.00690533966002487840.013810679320049757-0.046956309688169169-0.10772329869638810.169871355636612010.44746600996961211-0.966747552403482980.447466009969612110.16987135563661201-0.1077232986963881-0.0469563096881691690.0138106793200497570.00690533966002487840 };    static const std::size_t wv_rbio2_6_dec_hi_len = 14;    static const double wv_rbio2_6_rec_lo[] = { -0.00690533966002487840.0138106793200497570.046956309688169169-0.1077232986963881-0.169871355636612010.447466009969612110.966747552403482980.44746600996961211-0.16987135563661201-0.10772329869638810.0469563096881691690.013810679320049757-0.00690533966002487840 };    static const std::size_t wv_rbio2_6_rec_lo_len = 14;    static const double wv_rbio2_6_rec_hi[] = { 0-00-00-00.35355339059327379-0.707106781186547570.35355339059327379-00-00-0 };    static const std::size_t wv_rbio2_6_rec_hi_len = 14;    static const double wv_rbio2_8_dec_lo[] = { 000000000.353553390593273790.707106781186547570.353553390593273790000000 };    static const std::size_t wv_rbio2_8_dec_lo_len = 18;    static const double wv_rbio2_8_dec_hi[] = { -0.0015105430506304422-0.00302108610126088430.0129475118625466470.028916109826354178-0.052998481890690938-0.134913073607736050.163829183434090230.46257144047591653-0.951642121897178560.462571440475916530.16382918343409023-0.13491307360773605-0.0529984818906909380.0289161098263541780.012947511862546647-0.0030210861012608843-0.00151054305063044220 };    static const std::size_t wv_rbio2_8_dec_hi_len = 18;    static const double wv_rbio2_8_rec_lo[] = { 0.0015105430506304422-0.0030210861012608843-0.0129475118625466470.0289161098263541780.052998481890690938-0.13491307360773605-0.163829183434090230.462571440475916530.951642121897178560.46257144047591653-0.16382918343409023-0.134913073607736050.0529984818906909380.028916109826354178-0.012947511862546647-0.00302108610126088430.00151054305063044220 };    static const std::size_t wv_rbio2_8_rec_lo_len = 18;    static const double wv_rbio2_8_rec_hi[] = { 0-00-00-00-00.35355339059327379-0.707106781186547570.35355339059327379-00-00-00-0 };    static const std::size_t wv_rbio2_8_rec_hi_len = 18;    static const double wv_rbio3_1_dec_lo[] = { 0.176776695296636890.53033008588991060.53033008588991060.17677669529663689 };    static const std::size_t wv_rbio3_1_dec_lo_len = 4;    static const double wv_rbio3_1_dec_hi[] = { 0.353553390593273791.0606601717798212-1.0606601717798212-0.35355339059327379 };    static const std::size_t wv_rbio3_1_dec_hi_len = 4;    static const double wv_rbio3_1_rec_lo[] = { -0.353553390593273791.06066017177982121.0606601717798212-0.35355339059327379 };    static const std::size_t wv_rbio3_1_rec_lo_len = 4;    static const double wv_rbio3_1_rec_hi[] = { 0.17677669529663689-0.53033008588991060.5303300858899106-0.17677669529663689 };    static const std::size_t wv_rbio3_1_rec_hi_len = 4;    static const double wv_rbio3_3_dec_lo[] = { 000.176776695296636890.53033008588991060.53033008588991060.1767766952966368900 };    static const std::size_t wv_rbio3_3_dec_lo_len = 8;    static const double wv_rbio3_3_dec_hi[] = { -0.066291260736238825-0.198873782208716490.154679608384557270.99436891104358249-0.99436891104358249-0.154679608384557270.198873782208716490.066291260736238825 };    static const std::size_t wv_rbio3_3_dec_hi_len = 8;    static const double wv_rbio3_3_rec_lo[] = { 0.066291260736238825-0.19887378220871649-0.154679608384557270.994368911043582490.99436891104358249-0.15467960838455727-0.198873782208716490.066291260736238825 };    static const std::size_t wv_rbio3_3_rec_lo_len = 8;    static const double wv_rbio3_3_rec_hi[] = { 0-00.17677669529663689-0.53033008588991060.5303300858899106-0.176776695296636890-0 };    static const std::size_t wv_rbio3_3_rec_hi_len = 8;    static const double wv_rbio3_5_dec_lo[] = { 00000.176776695296636890.53033008588991060.53033008588991060.176776695296636890000 };    static const std::size_t wv_rbio3_5_dec_lo_len = 12;    static const double wv_rbio3_5_dec_hi[] = { 0.0138106793200497570.041432037960149271-0.052480581416189075-0.267927178808965270.071815532464258730.96674755240348298-0.96674755240348298-0.071815532464258730.267927178808965270.052480581416189075-0.041432037960149271-0.013810679320049757 };    static const std::size_t wv_rbio3_5_dec_hi_len = 12;    static const double wv_rbio3_5_rec_lo[] = { -0.0138106793200497570.0414320379601492710.052480581416189075-0.26792717880896527-0.071815532464258730.966747552403482980.96674755240348298-0.07181553246425873-0.267927178808965270.0524805814161890750.041432037960149271-0.013810679320049757 };    static const std::size_t wv_rbio3_5_rec_lo_len = 12;    static const double wv_rbio3_5_rec_hi[] = { 0-00-00.17677669529663689-0.53033008588991060.5303300858899106-0.176776695296636890-00-0 };    static const std::size_t wv_rbio3_5_rec_hi_len = 12;    static const double wv_rbio3_7_dec_lo[] = { 0000000.176776695296636890.53033008588991060.53033008588991060.17677669529663689000000 };    static const std::size_t wv_rbio3_7_dec_lo_len = 16;    static const double wv_rbio3_7_dec_hi[] = { -0.0030210861012608843-0.00906325830378265290.0168317654213106410.074663985074019001-0.031332978707362888-0.3011591259228350.0264992409453454690.95164212189717856-0.95164212189717856-0.0264992409453454690.3011591259228350.031332978707362888-0.074663985074019001-0.0168317654213106410.00906325830378265290.0030210861012608843 };    static const std::size_t wv_rbio3_7_dec_hi_len = 16;    static const double wv_rbio3_7_rec_lo[] = { 0.0030210861012608843-0.0090632583037826529-0.0168317654213106410.0746639850740190010.031332978707362888-0.301159125922835-0.0264992409453454690.951642121897178560.95164212189717856-0.026499240945345469-0.3011591259228350.0313329787073628880.074663985074019001-0.016831765421310641-0.00906325830378265290.0030210861012608843 };    static const std::size_t wv_rbio3_7_rec_lo_len = 16;    static const double wv_rbio3_7_rec_hi[] = { 0-00-00-00.17677669529663689-0.53033008588991060.5303300858899106-0.176776695296636890-00-00-0 };    static const std::size_t wv_rbio3_7_rec_hi_len = 16;    static const double wv_rbio3_9_dec_lo[] = { 000000000.176776695296636890.53033008588991060.53033008588991060.1767766952966368900000000 };    static const std::size_t wv_rbio3_9_dec_lo_len = 20;    static const double wv_rbio3_9_dec_hi[] = { 0.00067974437278369890.0020392331183510968-0.0050603192196119811-0.0206189126411055360.0141127879301758440.09913478249423216-0.012300136269419315-0.32019196836077857-0.00205002271156988580.94212570067820678-0.942125700678206780.00205002271156988580.320191968360778570.012300136269419315-0.09913478249423216-0.0141127879301758440.0206189126411055360.0050603192196119811-0.0020392331183510968-0.0006797443727836989 };    static const std::size_t wv_rbio3_9_dec_hi_len = 20;    static const double wv_rbio3_9_rec_lo[] = { -0.00067974437278369890.00203923311835109680.0050603192196119811-0.020618912641105536-0.0141127879301758440.099134782494232160.012300136269419315-0.320191968360778570.00205002271156988580.942125700678206780.942125700678206780.0020500227115698858-0.320191968360778570.0123001362694193150.09913478249423216-0.014112787930175844-0.0206189126411055360.00506031921961198110.0020392331183510968-0.0006797443727836989 };    static const std::size_t wv_rbio3_9_rec_lo_len = 20;    static const double wv_rbio3_9_rec_hi[] = { 0-00-00-00-00.17677669529663689-0.53033008588991060.5303300858899106-0.176776695296636890-00-00-00-0 };    static const std::size_t wv_rbio3_9_rec_hi_len = 20;    static const double wv_rbio4_4_dec_lo[] = { 00-0.064538882628697058-0.0406894176091640580.418092273221617240.78848561640558290.41809227322161724-0.040689417609164058-0.0645388826286970580 };    static const std::size_t wv_rbio4_4_dec_lo_len = 10;    static const double wv_rbio4_4_dec_hi[] = { -0.03782845550726404-0.0238494650195568430.110624404418437180.37740285561283066-0.852698679008893850.377402855612830660.11062440441843718-0.023849465019556843-0.037828455507264040 };    static const std::size_t wv_rbio4_4_dec_hi_len = 10;    static const double wv_rbio4_4_rec_lo[] = { 0.03782845550726404-0.023849465019556843-0.110624404418437180.377402855612830660.852698679008893850.37740285561283066-0.11062440441843718-0.0238494650195568430.037828455507264040 };    static const std::size_t wv_rbio4_4_rec_lo_len = 10;    static const double wv_rbio4_4_rec_hi[] = { 0-0-0.0645388826286970580.0406894176091640580.41809227322161724-0.78848561640558290.418092273221617240.040689417609164058-0.064538882628697058-0 };    static const std::size_t wv_rbio4_4_rec_hi_len = 10;    static const double wv_rbio5_5_dec_lo[] = { 00.013456709459118716-0.0026949668801115071-0.13670658466432914-0.0935046974009388630.476803265798484250.899506109748648420.47680326579848425-0.093504697400938863-0.13670658466432914-0.00269496688011150710.013456709459118716 };    static const std::size_t wv_rbio5_5_dec_lo_len = 12;    static const double wv_rbio5_5_dec_hi[] = { -00.03968708834740544-0.0079481086372403219-0.054463788468236907-0.345605281956033460.73666018142821055-0.34560528195603346-0.054463788468236907-0.00794810863724032190.03968708834740544-00 };    static const std::size_t wv_rbio5_5_dec_hi_len = 12;    static const double wv_rbio5_5_rec_lo[] = { 00.039687088347405440.0079481086372403219-0.0544637884682369070.345605281956033460.736660181428210550.34560528195603346-0.0544637884682369070.00794810863724032190.0396870883474054400 };    static const std::size_t wv_rbio5_5_rec_lo_len = 12;    static const double wv_rbio5_5_rec_hi[] = { 0-0.013456709459118716-0.00269496688011150710.13670658466432914-0.093504697400938863-0.476803265798484250.89950610974864842-0.47680326579848425-0.0935046974009388630.13670658466432914-0.0026949668801115071-0.013456709459118716 };    static const std::size_t wv_rbio5_5_rec_hi_len = 12;    static const double wv_rbio6_8_dec_lo[] = { 00000.0144262825056244350.014467504896790148-0.078722001062628819-0.0403679790303399230.417849109150274570.758907729453654150.41784910915027457-0.040367979030339923-0.0787220010626288190.0144675048967901480.014426282505624435000 };    static const std::size_t wv_rbio6_8_dec_lo_len = 18;    static const double wv_rbio6_8_dec_hi[] = { -0.0019088317364812906-0.00191428612908876670.0169906398676023420.01193456527972926-0.04973290349094079-0.0772631731672041440.094059203495736460.42079628460982682-0.825922997458402250.420796284609826820.09405920349573646-0.077263173167204144-0.049732903490940790.011934565279729260.016990639867602342-0.0019142861290887667-0.00190883173648129060 };    static const std::size_t wv_rbio6_8_dec_hi_len = 18;    static const double wv_rbio6_8_rec_lo[] = { 0.0019088317364812906-0.0019142861290887667-0.0169906398676023420.011934565279729260.04973290349094079-0.077263173167204144-0.094059203495736460.420796284609826820.825922997458402250.42079628460982682-0.09405920349573646-0.0772631731672041440.049732903490940790.01193456527972926-0.016990639867602342-0.00191428612908876670.00190883173648129060 };    static const std::size_t wv_rbio6_8_rec_lo_len = 18;    static const double wv_rbio6_8_rec_hi[] = { 0-00-00.014426282505624435-0.014467504896790148-0.0787220010626288190.0403679790303399230.41784910915027457-0.758907729453654150.417849109150274570.040367979030339923-0.078722001062628819-0.0144675048967901480.014426282505624435-00-0 };    static const std::size_t wv_rbio6_8_rec_hi_len = 18;    // 小波映射表    static const std::unordered_map<std::string, WaveletCoeffs> wavelet_map = {    { "db2", WaveletCoeffs{        wv_db2_dec_lo, wv_db2_dec_lo_len,        wv_db2_dec_hi, wv_db2_dec_hi_len,        wv_db2_rec_lo, wv_db2_rec_lo_len,        wv_db2_rec_hi, wv_db2_rec_hi_len    } },    { "db4", WaveletCoeffs{        wv_db4_dec_lo, wv_db4_dec_lo_len,        wv_db4_dec_hi, wv_db4_dec_hi_len,        wv_db4_rec_lo, wv_db4_rec_lo_len,        wv_db4_rec_hi, wv_db4_rec_hi_len    } },    { "db8", WaveletCoeffs{        wv_db8_dec_lo, wv_db8_dec_lo_len,        wv_db8_dec_hi, wv_db8_dec_hi_len,        wv_db8_rec_lo, wv_db8_rec_lo_len,        wv_db8_rec_hi, wv_db8_rec_hi_len    } },    { "db10", WaveletCoeffs{        wv_db10_dec_lo, wv_db10_dec_lo_len,        wv_db10_dec_hi, wv_db10_dec_hi_len,        wv_db10_rec_lo, wv_db10_rec_lo_len,        wv_db10_rec_hi, wv_db10_rec_hi_len    } },    { "db12", WaveletCoeffs{        wv_db12_dec_lo, wv_db12_dec_lo_len,        wv_db12_dec_hi, wv_db12_dec_hi_len,        wv_db12_rec_lo, wv_db12_rec_lo_len,        wv_db12_rec_hi, wv_db12_rec_hi_len    } },    { "db14", WaveletCoeffs{        wv_db14_dec_lo, wv_db14_dec_lo_len,        wv_db14_dec_hi, wv_db14_dec_hi_len,        wv_db14_rec_lo, wv_db14_rec_lo_len,        wv_db14_rec_hi, wv_db14_rec_hi_len    } },    { "db16", WaveletCoeffs{        wv_db16_dec_lo, wv_db16_dec_lo_len,        wv_db16_dec_hi, wv_db16_dec_hi_len,        wv_db16_rec_lo, wv_db16_rec_lo_len,        wv_db16_rec_hi, wv_db16_rec_hi_len    } },    { "db18", WaveletCoeffs{        wv_db18_dec_lo, wv_db18_dec_lo_len,        wv_db18_dec_hi, wv_db18_dec_hi_len,        wv_db18_rec_lo, wv_db18_rec_lo_len,        wv_db18_rec_hi, wv_db18_rec_hi_len    } },    { "db20", WaveletCoeffs{        wv_db20_dec_lo, wv_db20_dec_lo_len,        wv_db20_dec_hi, wv_db20_dec_hi_len,        wv_db20_rec_lo, wv_db20_rec_lo_len,        wv_db20_rec_hi, wv_db20_rec_hi_len    } },    { "sym2", WaveletCoeffs{        wv_sym2_dec_lo, wv_sym2_dec_lo_len,        wv_sym2_dec_hi, wv_sym2_dec_hi_len,        wv_sym2_rec_lo, wv_sym2_rec_lo_len,        wv_sym2_rec_hi, wv_sym2_rec_hi_len    } },    { "sym4", WaveletCoeffs{        wv_sym4_dec_lo, wv_sym4_dec_lo_len,        wv_sym4_dec_hi, wv_sym4_dec_hi_len,        wv_sym4_rec_lo, wv_sym4_rec_lo_len,        wv_sym4_rec_hi, wv_sym4_rec_hi_len    } },    { "sym6", WaveletCoeffs{        wv_sym6_dec_lo, wv_sym6_dec_lo_len,        wv_sym6_dec_hi, wv_sym6_dec_hi_len,        wv_sym6_rec_lo, wv_sym6_rec_lo_len,        wv_sym6_rec_hi, wv_sym6_rec_hi_len    } },    { "sym8", WaveletCoeffs{        wv_sym8_dec_lo, wv_sym8_dec_lo_len,        wv_sym8_dec_hi, wv_sym8_dec_hi_len,        wv_sym8_rec_lo, wv_sym8_rec_lo_len,        wv_sym8_rec_hi, wv_sym8_rec_hi_len    } },    { "sym10", WaveletCoeffs{        wv_sym10_dec_lo, wv_sym10_dec_lo_len,        wv_sym10_dec_hi, wv_sym10_dec_hi_len,        wv_sym10_rec_lo, wv_sym10_rec_lo_len,        wv_sym10_rec_hi, wv_sym10_rec_hi_len    } },    { "sym12", WaveletCoeffs{        wv_sym12_dec_lo, wv_sym12_dec_lo_len,        wv_sym12_dec_hi, wv_sym12_dec_hi_len,        wv_sym12_rec_lo, wv_sym12_rec_lo_len,        wv_sym12_rec_hi, wv_sym12_rec_hi_len    } },    { "sym14", WaveletCoeffs{        wv_sym14_dec_lo, wv_sym14_dec_lo_len,        wv_sym14_dec_hi, wv_sym14_dec_hi_len,        wv_sym14_rec_lo, wv_sym14_rec_lo_len,        wv_sym14_rec_hi, wv_sym14_rec_hi_len    } },    { "sym16", WaveletCoeffs{        wv_sym16_dec_lo, wv_sym16_dec_lo_len,        wv_sym16_dec_hi, wv_sym16_dec_hi_len,        wv_sym16_rec_lo, wv_sym16_rec_lo_len,        wv_sym16_rec_hi, wv_sym16_rec_hi_len    } },    { "sym18", WaveletCoeffs{        wv_sym18_dec_lo, wv_sym18_dec_lo_len,        wv_sym18_dec_hi, wv_sym18_dec_hi_len,        wv_sym18_rec_lo, wv_sym18_rec_lo_len,        wv_sym18_rec_hi, wv_sym18_rec_hi_len    } },    { "sym20", WaveletCoeffs{        wv_sym20_dec_lo, wv_sym20_dec_lo_len,        wv_sym20_dec_hi, wv_sym20_dec_hi_len,        wv_sym20_rec_lo, wv_sym20_rec_lo_len,        wv_sym20_rec_hi, wv_sym20_rec_hi_len    } },    { "coif1", WaveletCoeffs{        wv_coif1_dec_lo, wv_coif1_dec_lo_len,        wv_coif1_dec_hi, wv_coif1_dec_hi_len,        wv_coif1_rec_lo, wv_coif1_rec_lo_len,        wv_coif1_rec_hi, wv_coif1_rec_hi_len    } },    { "coif2", WaveletCoeffs{        wv_coif2_dec_lo, wv_coif2_dec_lo_len,        wv_coif2_dec_hi, wv_coif2_dec_hi_len,        wv_coif2_rec_lo, wv_coif2_rec_lo_len,        wv_coif2_rec_hi, wv_coif2_rec_hi_len    } },    { "coif3", WaveletCoeffs{        wv_coif3_dec_lo, wv_coif3_dec_lo_len,        wv_coif3_dec_hi, wv_coif3_dec_hi_len,        wv_coif3_rec_lo, wv_coif3_rec_lo_len,        wv_coif3_rec_hi, wv_coif3_rec_hi_len    } },    { "coif4", WaveletCoeffs{        wv_coif4_dec_lo, wv_coif4_dec_lo_len,        wv_coif4_dec_hi, wv_coif4_dec_hi_len,        wv_coif4_rec_lo, wv_coif4_rec_lo_len,        wv_coif4_rec_hi, wv_coif4_rec_hi_len    } },    { "coif5", WaveletCoeffs{        wv_coif5_dec_lo, wv_coif5_dec_lo_len,        wv_coif5_dec_hi, wv_coif5_dec_hi_len,        wv_coif5_rec_lo, wv_coif5_rec_lo_len,        wv_coif5_rec_hi, wv_coif5_rec_hi_len    } },    { "bior1.1", WaveletCoeffs{        wv_bior1_1_dec_lo, wv_bior1_1_dec_lo_len,        wv_bior1_1_dec_hi, wv_bior1_1_dec_hi_len,        wv_bior1_1_rec_lo, wv_bior1_1_rec_lo_len,        wv_bior1_1_rec_hi, wv_bior1_1_rec_hi_len    } },    { "bior1.3", WaveletCoeffs{        wv_bior1_3_dec_lo, wv_bior1_3_dec_lo_len,        wv_bior1_3_dec_hi, wv_bior1_3_dec_hi_len,        wv_bior1_3_rec_lo, wv_bior1_3_rec_lo_len,        wv_bior1_3_rec_hi, wv_bior1_3_rec_hi_len    } },    { "bior1.5", WaveletCoeffs{        wv_bior1_5_dec_lo, wv_bior1_5_dec_lo_len,        wv_bior1_5_dec_hi, wv_bior1_5_dec_hi_len,        wv_bior1_5_rec_lo, wv_bior1_5_rec_lo_len,        wv_bior1_5_rec_hi, wv_bior1_5_rec_hi_len    } },    { "bior2.2", WaveletCoeffs{        wv_bior2_2_dec_lo, wv_bior2_2_dec_lo_len,        wv_bior2_2_dec_hi, wv_bior2_2_dec_hi_len,        wv_bior2_2_rec_lo, wv_bior2_2_rec_lo_len,        wv_bior2_2_rec_hi, wv_bior2_2_rec_hi_len    } },    { "bior2.4", WaveletCoeffs{        wv_bior2_4_dec_lo, wv_bior2_4_dec_lo_len,        wv_bior2_4_dec_hi, wv_bior2_4_dec_hi_len,        wv_bior2_4_rec_lo, wv_bior2_4_rec_lo_len,        wv_bior2_4_rec_hi, wv_bior2_4_rec_hi_len    } },    { "bior2.6", WaveletCoeffs{        wv_bior2_6_dec_lo, wv_bior2_6_dec_lo_len,        wv_bior2_6_dec_hi, wv_bior2_6_dec_hi_len,        wv_bior2_6_rec_lo, wv_bior2_6_rec_lo_len,        wv_bior2_6_rec_hi, wv_bior2_6_rec_hi_len    } },    { "bior2.8", WaveletCoeffs{        wv_bior2_8_dec_lo, wv_bior2_8_dec_lo_len,        wv_bior2_8_dec_hi, wv_bior2_8_dec_hi_len,        wv_bior2_8_rec_lo, wv_bior2_8_rec_lo_len,        wv_bior2_8_rec_hi, wv_bior2_8_rec_hi_len    } },    { "bior3.1", WaveletCoeffs{        wv_bior3_1_dec_lo, wv_bior3_1_dec_lo_len,        wv_bior3_1_dec_hi, wv_bior3_1_dec_hi_len,        wv_bior3_1_rec_lo, wv_bior3_1_rec_lo_len,        wv_bior3_1_rec_hi, wv_bior3_1_rec_hi_len    } },    { "bior3.3", WaveletCoeffs{        wv_bior3_3_dec_lo, wv_bior3_3_dec_lo_len,        wv_bior3_3_dec_hi, wv_bior3_3_dec_hi_len,        wv_bior3_3_rec_lo, wv_bior3_3_rec_lo_len,        wv_bior3_3_rec_hi, wv_bior3_3_rec_hi_len    } },    { "bior3.5", WaveletCoeffs{        wv_bior3_5_dec_lo, wv_bior3_5_dec_lo_len,        wv_bior3_5_dec_hi, wv_bior3_5_dec_hi_len,        wv_bior3_5_rec_lo, wv_bior3_5_rec_lo_len,        wv_bior3_5_rec_hi, wv_bior3_5_rec_hi_len    } },    { "bior3.7", WaveletCoeffs{        wv_bior3_7_dec_lo, wv_bior3_7_dec_lo_len,        wv_bior3_7_dec_hi, wv_bior3_7_dec_hi_len,        wv_bior3_7_rec_lo, wv_bior3_7_rec_lo_len,        wv_bior3_7_rec_hi, wv_bior3_7_rec_hi_len    } },    { "bior3.9", WaveletCoeffs{        wv_bior3_9_dec_lo, wv_bior3_9_dec_lo_len,        wv_bior3_9_dec_hi, wv_bior3_9_dec_hi_len,        wv_bior3_9_rec_lo, wv_bior3_9_rec_lo_len,        wv_bior3_9_rec_hi, wv_bior3_9_rec_hi_len    } },    { "bior4.4", WaveletCoeffs{        wv_bior4_4_dec_lo, wv_bior4_4_dec_lo_len,        wv_bior4_4_dec_hi, wv_bior4_4_dec_hi_len,        wv_bior4_4_rec_lo, wv_bior4_4_rec_lo_len,        wv_bior4_4_rec_hi, wv_bior4_4_rec_hi_len    } },    { "bior5.5", WaveletCoeffs{        wv_bior5_5_dec_lo, wv_bior5_5_dec_lo_len,        wv_bior5_5_dec_hi, wv_bior5_5_dec_hi_len,        wv_bior5_5_rec_lo, wv_bior5_5_rec_lo_len,        wv_bior5_5_rec_hi, wv_bior5_5_rec_hi_len    } },    { "bior6.8", WaveletCoeffs{        wv_bior6_8_dec_lo, wv_bior6_8_dec_lo_len,        wv_bior6_8_dec_hi, wv_bior6_8_dec_hi_len,        wv_bior6_8_rec_lo, wv_bior6_8_rec_lo_len,        wv_bior6_8_rec_hi, wv_bior6_8_rec_hi_len    } },    { "rbio1.1", WaveletCoeffs{        wv_rbio1_1_dec_lo, wv_rbio1_1_dec_lo_len,        wv_rbio1_1_dec_hi, wv_rbio1_1_dec_hi_len,        wv_rbio1_1_rec_lo, wv_rbio1_1_rec_lo_len,        wv_rbio1_1_rec_hi, wv_rbio1_1_rec_hi_len    } },    { "rbio1.3", WaveletCoeffs{        wv_rbio1_3_dec_lo, wv_rbio1_3_dec_lo_len,        wv_rbio1_3_dec_hi, wv_rbio1_3_dec_hi_len,        wv_rbio1_3_rec_lo, wv_rbio1_3_rec_lo_len,        wv_rbio1_3_rec_hi, wv_rbio1_3_rec_hi_len    } },    { "rbio1.5", WaveletCoeffs{        wv_rbio1_5_dec_lo, wv_rbio1_5_dec_lo_len,        wv_rbio1_5_dec_hi, wv_rbio1_5_dec_hi_len,        wv_rbio1_5_rec_lo, wv_rbio1_5_rec_lo_len,        wv_rbio1_5_rec_hi, wv_rbio1_5_rec_hi_len    } },    { "rbio2.2", WaveletCoeffs{        wv_rbio2_2_dec_lo, wv_rbio2_2_dec_lo_len,        wv_rbio2_2_dec_hi, wv_rbio2_2_dec_hi_len,        wv_rbio2_2_rec_lo, wv_rbio2_2_rec_lo_len,        wv_rbio2_2_rec_hi, wv_rbio2_2_rec_hi_len    } },    { "rbio2.4", WaveletCoeffs{        wv_rbio2_4_dec_lo, wv_rbio2_4_dec_lo_len,        wv_rbio2_4_dec_hi, wv_rbio2_4_dec_hi_len,        wv_rbio2_4_rec_lo, wv_rbio2_4_rec_lo_len,        wv_rbio2_4_rec_hi, wv_rbio2_4_rec_hi_len    } },    { "rbio2.6", WaveletCoeffs{        wv_rbio2_6_dec_lo, wv_rbio2_6_dec_lo_len,        wv_rbio2_6_dec_hi, wv_rbio2_6_dec_hi_len,        wv_rbio2_6_rec_lo, wv_rbio2_6_rec_lo_len,        wv_rbio2_6_rec_hi, wv_rbio2_6_rec_hi_len    } },    { "rbio2.8", WaveletCoeffs{        wv_rbio2_8_dec_lo, wv_rbio2_8_dec_lo_len,        wv_rbio2_8_dec_hi, wv_rbio2_8_dec_hi_len,        wv_rbio2_8_rec_lo, wv_rbio2_8_rec_lo_len,        wv_rbio2_8_rec_hi, wv_rbio2_8_rec_hi_len    } },    { "rbio3.1", WaveletCoeffs{        wv_rbio3_1_dec_lo, wv_rbio3_1_dec_lo_len,        wv_rbio3_1_dec_hi, wv_rbio3_1_dec_hi_len,        wv_rbio3_1_rec_lo, wv_rbio3_1_rec_lo_len,        wv_rbio3_1_rec_hi, wv_rbio3_1_rec_hi_len    } },    { "rbio3.3", WaveletCoeffs{        wv_rbio3_3_dec_lo, wv_rbio3_3_dec_lo_len,        wv_rbio3_3_dec_hi, wv_rbio3_3_dec_hi_len,        wv_rbio3_3_rec_lo, wv_rbio3_3_rec_lo_len,        wv_rbio3_3_rec_hi, wv_rbio3_3_rec_hi_len    } },    { "rbio3.5", WaveletCoeffs{        wv_rbio3_5_dec_lo, wv_rbio3_5_dec_lo_len,        wv_rbio3_5_dec_hi, wv_rbio3_5_dec_hi_len,        wv_rbio3_5_rec_lo, wv_rbio3_5_rec_lo_len,        wv_rbio3_5_rec_hi, wv_rbio3_5_rec_hi_len    } },    { "rbio3.7", WaveletCoeffs{        wv_rbio3_7_dec_lo, wv_rbio3_7_dec_lo_len,        wv_rbio3_7_dec_hi, wv_rbio3_7_dec_hi_len,        wv_rbio3_7_rec_lo, wv_rbio3_7_rec_lo_len,        wv_rbio3_7_rec_hi, wv_rbio3_7_rec_hi_len    } },    { "rbio3.9", WaveletCoeffs{        wv_rbio3_9_dec_lo, wv_rbio3_9_dec_lo_len,        wv_rbio3_9_dec_hi, wv_rbio3_9_dec_hi_len,        wv_rbio3_9_rec_lo, wv_rbio3_9_rec_lo_len,        wv_rbio3_9_rec_hi, wv_rbio3_9_rec_hi_len    } },    { "rbio4.4", WaveletCoeffs{        wv_rbio4_4_dec_lo, wv_rbio4_4_dec_lo_len,        wv_rbio4_4_dec_hi, wv_rbio4_4_dec_hi_len,        wv_rbio4_4_rec_lo, wv_rbio4_4_rec_lo_len,        wv_rbio4_4_rec_hi, wv_rbio4_4_rec_hi_len    } },    { "rbio5.5", WaveletCoeffs{        wv_rbio5_5_dec_lo, wv_rbio5_5_dec_lo_len,        wv_rbio5_5_dec_hi, wv_rbio5_5_dec_hi_len,        wv_rbio5_5_rec_lo, wv_rbio5_5_rec_lo_len,        wv_rbio5_5_rec_hi, wv_rbio5_5_rec_hi_len    } },    { "rbio6.8", WaveletCoeffs{        wv_rbio6_8_dec_lo, wv_rbio6_8_dec_lo_len,        wv_rbio6_8_dec_hi, wv_rbio6_8_dec_hi_len,        wv_rbio6_8_rec_lo, wv_rbio6_8_rec_lo_len,        wv_rbio6_8_rec_hi, wv_rbio6_8_rec_hi_len    } },    };    // 获取小波系数的函数    inlineboolgetWaveletCoeffs(const std::string& name, WaveletCoeffs& coeffs){        auto it = wavelet_map.find(name);        if (it != wavelet_map.end()) {            coeffs = it->second;            return true;        }        return false;    }}/*******************************//*以上代码和DWT部分的一致,可以复用*//*******************************/inlineintcomputeMaxSWTLevels(std::size_t N){    if (N < 2return 0;    return static_cast<int>(std::floor(std::log2(static_cast<double>(N))));}staticdoublemaxAbs(const std::vector<double>& v){    double m = 0.0;    for (double x : v) m = std::max(m, std::fabs(x));    return m;}staticdoublesumsq(const std::vector<double>& v){    double s = 0.0;    for (double x : v) s += x * x;    return s;}inlinevoidvectorAddInplace(std::vector<double>& a, const std::vector<double>& b){    const std::size_t N = a.size();    for (std::size_t i = 0; i < N; ++i) a[i] = (a[i] + b[i]) / 2.0// divide by 2 per requirement}staticvoidrotateLeftInplace(std::vector<double>& v, int shift){    std::size_t N = v.size();    if (N == 0return;    // 处理负数:将负的左移转换为正的右移    int actual_shift = shift % static_cast<int>(N);    if (actual_shift < 0) {        actual_shift += static_cast<int>(N);    }    std::size_t left_shift = static_cast<std::size_t>(actual_shift);    if (left_shift == 0return;    std::vector<doubletmp(N);    for (std::size_t i = 0; i < N; ++i) {        tmp[i] = v[(i + left_shift) % N];    }    v.swap(tmp);}// circular convolution (periodic) using original filter and upsample factorstatic std::vector<doublecircularConvolveSWT_aligned(const std::vector<double>& signal,    const double* filter, std::size_t filter_len, std::size_t upsample, int delay_policy) {    const std::size_t N = signal.size();    std::vector<doubleout(N, 0.0);    if (N == 0 || filter_len == 0return out;    // raw circular convolution y[n] = sum_k filter[k] * x[(n - k*ups) mod N]    for (std::size_t n = 0; n < N; ++n) {        double s = 0.0;        for (std::size_t k = 0; k < filter_len; ++k) {            std::size_t step = (k * upsample) % N;            std::size_t idx = (n + N - step) % N;            s += filter[k] * signal[idx];        }        out[n] = s;    }    // compute delay and rotate left    double delay_d = ((static_cast<double>(filter_len) - 1.0) * static_cast<double>(upsample)) / 2.0;    std::size_t delay;    if (delay_policy == 0) delay = static_cast<std::size_t>(std::floor(delay_d));    else if (delay_policy == 1) delay = static_cast<std::size_t>(std::llround(delay_d));    else delay = static_cast<std::size_t>(std::ceil(delay_d));    std::cout << "Filter Length:" << filter_len << "," << "delay: " << delay << "\n";    if (delay % N != 0rotateLeftInplace(out, delay % N);    return out;}static std::vector<doublecircularConvolveNoRotate(const std::vector<double>& signal,    const double* filter, std::size_t filter_len, std::size_t upsample, int delay_policy,    std::size_t& out_delay_int) {    const std::size_t N = signal.size();    std::vector<doubleout(N, 0.0);    if (N == 0 || filter_len == 0) { out_delay_int = 0return out; }    for (std::size_t n = 0; n < N; ++n) {        double s = 0.0;        for (std::size_t k = 0; k < filter_len; ++k) {            std::size_t step = (k * upsample) % N;            std::size_t idx = (n + N - step) % N;            s += filter[k] * signal[idx];        }        out[n] = s;    }    double delay_d = ((static_cast<double>(filter_len) - 1.0) * static_cast<double>(upsample)) / 2.0;    std::size_t delay;    if (delay_policy == 0) delay = static_cast<std::size_t>(std::floor(delay_d));    else if (delay_policy == 1) delay = static_cast<std::size_t>(std::llround(delay_d));    else delay = static_cast<std::size_t>(std::ceil(delay_d));    out_delay_int = delay % N;    return out;}// ---------------- SWT decompose / reconstruct ----------------enum class DelayPolicy { FLOOR = 0, ROUND = 1, CEIL = 2 };voidswt_decompose(const std::vector<double>& input,    const WaveletCoeffs& coeffs,    int J,    std::vector<std::vector<double>>& details,    std::vector<double>& approx,    DelayPolicy delay_policy){    const std::size_t N = input.size();    if (N == 0return;    int maxJ = computeMaxSWTLevels(N);    if (J > maxJ) {        std::cerr << "[Warning] requested J = " << J << " > max = " << maxJ << ", clipped.\n";        J = maxJ;    }    details.clear();    details.resize(J);    std::vector<double> curr = input;    for (int j = 1; j <= J; ++j) {        std::size_t upsample = static_cast<std::size_t>(1) << (j - 1);      //采样因子随层级按 2 的幂增长        std::vector<double> low, high;        try {            low = circularConvolveSWT_aligned(curr, coeffs.dec_lo, coeffs.dec_lo_len, upsample, static_cast<int>(delay_policy));            high = circularConvolveSWT_aligned(curr, coeffs.dec_hi, coeffs.dec_hi_len, upsample, static_cast<int>(delay_policy));        }        catch (const std::exception& e) {            std::cerr << "Exception in circularConvolveSWT_aligned: " << e.what() << "\n" << "Falling back to circular conv.\n";        }        std::cout << "Decompose layer " << j << " ups=" << upsample            << " dec_lo_len=" << coeffs.dec_lo_len << " dec_hi_len=" << coeffs.dec_hi_len            << " low.max=" << maxAbs(low) << " low.energy=" << sumsq(low)            << " high.max=" << maxAbs(high) << " high.energy=" << sumsq(high) << "\n\n";        details[j - 1] = std::move(high);        curr = std::move(low);    }    approx = std::move(curr);}std::vector<doubleswt_reconstruct(const std::vector<double>& approx,    const std::vector<std::vector<double>>& details,    const WaveletCoeffs& coeffs,    DelayPolicy delay_policy){    std::vector<double> curr = approx;    int J = static_cast<int>(details.size());    const std::size_t N = approx.size();    for (int j = J; j >= 1; --j) {        std::size_t upsample = static_cast<std::size_t>(1) << (j - 1);        std::vector<double> a, d;        try {            a = circularConvolveSWT_aligned(curr, coeffs.rec_lo, coeffs.rec_lo_len, upsample, static_cast<int>(delay_policy));            d = circularConvolveSWT_aligned(details[j - 1], coeffs.rec_hi, coeffs.rec_hi_len, upsample, static_cast<int>(delay_policy));        }        catch (const std::exception& e) {            std::cerr << "Exception in reconstruct convolve: " << e.what() << "\nFalling back to circular conv.\n";        }        std::cout << "Reconstruct layer " << j << " ups=" << upsample            << " rec_lo_len=" << coeffs.rec_lo_len << " rec_hi_len=" << coeffs.rec_hi_len            << " a.max=" << maxAbs(a) << " a.energy=" << sumsq(a)            << " d.max=" << maxAbs(d) << " d.energy=" << sumsq(d) << "\n";        vectorAddInplace(a, d); // does (a + d)/2 per element        curr = std::move(a);        std::cout << "  after add combined.max=" << maxAbs(curr) << " combined.energy=" << sumsq(curr) << "\n";    }    // 延迟补偿    rotateLeftInplace(curr, -1);    return curr;}// Diagnostics & helpers (same as before)staticdoublecomputeMSE(const std::vector<double>& a, const std::vector<double>& b){    std::size_t N = a.size();    double mse = 0.0;    for (std::size_t i = 0; i < N; ++i) {        double e = a[i] - b[i];        mse += e * e;    }    return mse / static_cast<double>(N);}staticintcircularCrossCorrLag(const std::vector<double>& orig, const std::vector<double>& rec){    std::size_t N = orig.size();    if (N == 0return 0;    double maxcorr = -1e300;    int bestlag = 0;    for (std::size_t lag = 0; lag < N; ++lag) {        double s = 0.0;        for (std::size_t i = 0; i < N; ++i) s += orig[i] * rec[(i + lag) % N];        if (s > maxcorr) { maxcorr = s; bestlag = static_cast<int>(lag); }    }    if (bestlag > static_cast<int>(N / 2)) bestlag -= static_cast<int>(N);    return bestlag;}staticboolwriteCSV(const std::string& filename, const std::vector<double>& original, const std::vector<double>& reconstructed){    std::ofstream ofs(filename);    if (!ofs) return false;    ofs << "index,original,reconstructed\n";    ofs << std::fixed << std::setprecision(10);    std::size_t N = original.size();    for (std::size_t i = 0; i < N; ++i) ofs << i << "," << original[i] << "," << reconstructed[i] << "\n";    return true;}static std::vector<doublegenerateTestSignal(std::size_t N, double noise_std = 0.5){    std::vector<doubles(N, 0.0);    std::mt19937_64 rng(123456789);    std::normal_distribution<doublend(0.0, noise_std);    for (std::size_t i = 0; i < N; ++i) {        double t = static_cast<double>(i) / static_cast<double>(N);        s[i] = 1.0 * std::sin(2.0 * M_PI * 5.0 * t) + 0.5 * std::sin(2.0 * M_PI * 20.0 * t) + +nd(rng);    }    return s;}staticvoiddeltaTest(const WaveletCoeffs& coeffs, std::size_t N, DelayPolicy policy){    std::vector<doubledelta(N, 0.0);    delta[0] = 1.0;    std::vector<std::vector<double>> details;    std::vector<double> approx;    int J = 2;    swt_decompose(delta, coeffs, J, details, approx, policy);    auto rec = swt_reconstruct(approx, details, coeffs, policy);    rotateLeftInplace(rec, -1);    // Note: reconstruct already does (a+d)/2 per stage; do NOT divide again here.    std::cout << "[Delta test] rec.max=" << maxAbs(rec) << " mse=" << computeMSE(delta, rec) << "\n";}intmain(){    /**    'db2', 'db4', 'db8', 'db10', 'db12', 'db14', 'db16', 'db18', 'db20',    'sym2', 'sym4', 'sym6', 'sym8', 'sym10', 'sym12', 'sym14', 'sym16', 'sym18', 'sym20',    'coif1', 'coif2', 'coif3', 'coif4', 'coif5',    'bior1.1', 'bior1.3', 'bior1.5',    'bior2.2', 'bior2.4', 'bior2.6', 'bior2.8',    'bior3.1', 'bior3.3', 'bior3.5', 'bior3.7', 'bior3.9',    'bior4.4', 'bior5.5', 'bior6.8',    'rbio1.1', 'rbio1.3', 'rbio1.5',    'rbio2.2', 'rbio2.4', 'rbio2.6', 'rbio2.8',    'rbio3.1', 'rbio3.3', 'rbio3.5', 'rbio3.7', 'rbio3.9',    'rbio4.4', 'rbio5.5', 'rbio6.8',    'haar', 'db1',    */    std::string wavelet_name = "haar";    /*Choose a filter's name*/    int requested_J = 6;    std::size_t N = 1024;    DelayPolicy policy = DelayPolicy::ROUND;    std::string out_csv = R"(Your_Path_to_Save_SWT_Reconstruction_Result\reconstruction_result.csv)";    WaveletCoeffs coeffs;    // 先判断是否为 haar/db1,直接生成系数    if (wavelet_name == "haar" || wavelet_name == "db1") {        double s = 1.0 / std::sqrt(2.0);        // 注意:这里需要分配动态内存,因为 coeffs 中的指针指向常量数组        // 但为了简单,可以声明静态数组        static double dec_lo_arr[] = { s, s };        static double dec_hi_arr[] = { -s, s };        static double rec_lo_arr[] = { s, s };        static double rec_hi_arr[] = { s, -s };        coeffs.dec_lo = dec_lo_arr;        coeffs.dec_lo_len = 2;        coeffs.dec_hi = dec_hi_arr;        coeffs.dec_hi_len = 2;        coeffs.rec_lo = rec_lo_arr;        coeffs.rec_lo_len = 2;        coeffs.rec_hi = rec_hi_arr;        coeffs.rec_hi_len = 2;    }    else if (!WaveletDatabase::getWaveletCoeffs(wavelet_name, coeffs)) {        std::cerr << "Wavelet not found: " << wavelet_name << "\n";        return 1;    }    //std::cout << "Running delta test...\n";    //deltaTest(coeffs, N, policy);    std::vector<double> signal = generateTestSignal(N, 0.5);    std::vector<std::vector<double>> details;    std::vector<double> approx;    //分解    swt_decompose(signal, coeffs, requested_J, details, approx, policy);    //重建    std::vector<double> reconstructed = swt_reconstruct(approx, details, coeffs, policy);    double mse = computeMSE(signal, reconstructed);    double maxo = maxAbs(signal);    double maxr = maxAbs(reconstructed);    int lag = circularCrossCorrLag(signal, reconstructed);    std::cout << "Final results: J=" << requested_J << " N=" << N << "\n";    std::cout << "MSE=" << mse << " maxRec/maxOrig=" << (maxr / (maxo > 0 ? maxo : 1.0))        << " lag(samples)=" << lag << "\n";    writeCSV(out_csv, signal, reconstructed);    std::cout << "Wrote CSV: " << out_csv << "\n";    return 0;}

    手搓小波变换C++源码发布(1)—DWT
    手搓C++离散小波变换DWT程序
    小波变换(4):平稳小波变换变换(SWT)和离散小波变换(DWT)方式从心电图数据获取心率
    小波变换(3):连续小波变换(CWT)方式从心电图数据获取心率
    小波变换(2):心电图数据测量心率前奏——如何获取免费的心电图数据
    小波变换:振动信号分析的“数学显微镜”——从原理到应用
    基本 文件 流程 错误 SQL 调试
    1. 请求信息 : 2026-08-21 11:40:21 HTTP/1.1 GET : https://www.yeyulingfeng.com/a/954815.html
    2. 运行时间 : 0.270121s [ 吞吐率:3.70req/s ] 内存消耗:5,093.62kb 文件加载:145
    3. 缓存信息 : 0 reads,0 writes
    4. 会话信息 : SESSION_ID=93dfc612dd24821349531c5dd795df3b
    1. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/public/index.php ( 0.79 KB )
    2. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/autoload.php ( 0.17 KB )
    3. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/composer/autoload_real.php ( 2.49 KB )
    4. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/composer/platform_check.php ( 0.90 KB )
    5. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/composer/ClassLoader.php ( 14.03 KB )
    6. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/composer/autoload_static.php ( 6.05 KB )
    7. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/helper.php ( 8.34 KB )
    8. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-validate/src/helper.php ( 2.19 KB )
    9. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/ralouphie/getallheaders/src/getallheaders.php ( 1.60 KB )
    10. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/helper.php ( 1.47 KB )
    11. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/stubs/load_stubs.php ( 0.16 KB )
    12. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Exception.php ( 1.69 KB )
    13. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-container/src/Facade.php ( 2.71 KB )
    14. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/deprecation-contracts/function.php ( 0.99 KB )
    15. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/polyfill-mbstring/bootstrap.php ( 8.26 KB )
    16. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/polyfill-mbstring/bootstrap80.php ( 9.78 KB )
    17. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/var-dumper/Resources/functions/dump.php ( 1.49 KB )
    18. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-dumper/src/helper.php ( 0.18 KB )
    19. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/var-dumper/VarDumper.php ( 4.30 KB )
    20. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/guzzlehttp/guzzle/src/functions_include.php ( 0.16 KB )
    21. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/guzzlehttp/guzzle/src/functions.php ( 5.54 KB )
    22. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/App.php ( 15.30 KB )
    23. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-container/src/Container.php ( 15.76 KB )
    24. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/psr/container/src/ContainerInterface.php ( 1.02 KB )
    25. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/provider.php ( 0.19 KB )
    26. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Http.php ( 6.04 KB )
    27. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/helper/Str.php ( 7.29 KB )
    28. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Env.php ( 4.68 KB )
    29. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/common.php ( 0.03 KB )
    30. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/helper.php ( 18.78 KB )
    31. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Config.php ( 5.54 KB )
    32. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/alipay.php ( 3.59 KB )
    33. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/facade/Env.php ( 1.67 KB )
    34. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/app.php ( 0.95 KB )
    35. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/cache.php ( 0.78 KB )
    36. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/console.php ( 0.23 KB )
    37. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/cookie.php ( 0.56 KB )
    38. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/database.php ( 2.48 KB )
    39. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/filesystem.php ( 0.61 KB )
    40. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/lang.php ( 0.91 KB )
    41. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/log.php ( 1.35 KB )
    42. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/middleware.php ( 0.19 KB )
    43. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/route.php ( 1.89 KB )
    44. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/session.php ( 0.57 KB )
    45. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/trace.php ( 0.34 KB )
    46. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/view.php ( 0.82 KB )
    47. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/event.php ( 0.25 KB )
    48. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Event.php ( 7.67 KB )
    49. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/service.php ( 0.13 KB )
    50. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/AppService.php ( 0.26 KB )
    51. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Service.php ( 1.64 KB )
    52. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Lang.php ( 7.35 KB )
    53. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/lang/zh-cn.php ( 13.70 KB )
    54. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/initializer/Error.php ( 3.31 KB )
    55. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/initializer/RegisterService.php ( 1.33 KB )
    56. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/services.php ( 0.14 KB )
    57. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/service/PaginatorService.php ( 1.52 KB )
    58. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/service/ValidateService.php ( 0.99 KB )
    59. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/service/ModelService.php ( 2.04 KB )
    60. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-trace/src/Service.php ( 0.77 KB )
    61. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Middleware.php ( 6.72 KB )
    62. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/initializer/BootService.php ( 0.77 KB )
    63. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/Paginator.php ( 11.86 KB )
    64. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-validate/src/Validate.php ( 63.20 KB )
    65. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/Model.php ( 23.55 KB )
    66. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/Attribute.php ( 21.05 KB )
    67. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/AutoWriteData.php ( 4.21 KB )
    68. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/Conversion.php ( 6.44 KB )
    69. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/DbConnect.php ( 5.16 KB )
    70. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/ModelEvent.php ( 2.33 KB )
    71. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/RelationShip.php ( 28.29 KB )
    72. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/contract/Arrayable.php ( 0.09 KB )
    73. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/contract/Jsonable.php ( 0.13 KB )
    74. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/contract/Modelable.php ( 0.09 KB )
    75. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Db.php ( 2.88 KB )
    76. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/DbManager.php ( 8.52 KB )
    77. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Log.php ( 6.28 KB )
    78. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Manager.php ( 3.92 KB )
    79. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/psr/log/src/LoggerTrait.php ( 2.69 KB )
    80. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/psr/log/src/LoggerInterface.php ( 2.71 KB )
    81. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Cache.php ( 4.92 KB )
    82. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/psr/simple-cache/src/CacheInterface.php ( 4.71 KB )
    83. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/helper/Arr.php ( 16.63 KB )
    84. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/cache/driver/File.php ( 7.84 KB )
    85. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/cache/Driver.php ( 9.03 KB )
    86. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/CacheHandlerInterface.php ( 1.99 KB )
    87. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/Request.php ( 0.09 KB )
    88. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Request.php ( 55.78 KB )
    89. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/middleware.php ( 0.25 KB )
    90. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Pipeline.php ( 2.61 KB )
    91. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-trace/src/TraceDebug.php ( 3.40 KB )
    92. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/middleware/SessionInit.php ( 1.94 KB )
    93. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Session.php ( 1.80 KB )
    94. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/session/driver/File.php ( 6.27 KB )
    95. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/SessionHandlerInterface.php ( 0.87 KB )
    96. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/session/Store.php ( 7.12 KB )
    97. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Route.php ( 23.73 KB )
    98. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/RuleName.php ( 5.75 KB )
    99. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/Domain.php ( 2.53 KB )
    100. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/RuleGroup.php ( 22.43 KB )
    101. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/Rule.php ( 26.95 KB )
    102. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/RuleItem.php ( 9.78 KB )
    103. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/route/app.php ( 4.22 KB )
    104. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/facade/Route.php ( 4.70 KB )
    105. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/dispatch/Controller.php ( 4.74 KB )
    106. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/Dispatch.php ( 10.44 KB )
    107. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/controller/Index.php ( 10.56 KB )
    108. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/BaseController.php ( 2.05 KB )
    109. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/facade/Db.php ( 0.93 KB )
    110. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/connector/Mysql.php ( 5.44 KB )
    111. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/PDOConnection.php ( 52.47 KB )
    112. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/Connection.php ( 8.39 KB )
    113. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/ConnectionInterface.php ( 4.57 KB )
    114. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/builder/Mysql.php ( 16.58 KB )
    115. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/Builder.php ( 24.06 KB )
    116. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/BaseBuilder.php ( 27.50 KB )
    117. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/Query.php ( 15.71 KB )
    118. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/BaseQuery.php ( 45.13 KB )
    119. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/TimeFieldQuery.php ( 7.43 KB )
    120. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/AggregateQuery.php ( 3.26 KB )
    121. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/ModelRelationQuery.php ( 20.07 KB )
    122. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/ParamsBind.php ( 3.66 KB )
    123. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/ResultOperation.php ( 7.01 KB )
    124. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/WhereQuery.php ( 19.37 KB )
    125. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/JoinAndViewQuery.php ( 7.11 KB )
    126. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/TableFieldInfo.php ( 2.63 KB )
    127. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/Transaction.php ( 2.77 KB )
    128. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/log/driver/File.php ( 5.96 KB )
    129. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/LogHandlerInterface.php ( 0.86 KB )
    130. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/log/Channel.php ( 3.89 KB )
    131. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/event/LogRecord.php ( 1.02 KB )
    132. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/Collection.php ( 16.47 KB )
    133. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/facade/View.php ( 1.70 KB )
    134. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/View.php ( 4.39 KB )
    135. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/controller/Es.php ( 3.11 KB )
    136. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-view/src/Think.php ( 8.38 KB )
    137. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/TemplateHandlerInterface.php ( 1.60 KB )
    138. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-template/src/Template.php ( 46.61 KB )
    139. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-template/src/template/driver/File.php ( 2.41 KB )
    140. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-template/src/template/contract/DriverInterface.php ( 0.86 KB )
    141. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/runtime/temp/c935550e3e8a3a4c27dd94e439343fdf.php ( 31.50 KB )
    142. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Response.php ( 8.81 KB )
    143. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/response/View.php ( 3.29 KB )
    144. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Cookie.php ( 6.06 KB )
    145. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-trace/src/Html.php ( 4.42 KB )
    1. CONNECT:[ UseTime:0.001081s ] mysql:host=127.0.0.1;port=3306;dbname=wenku;charset=utf8mb4
    2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.001527s ]
    3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.005113s ]
    4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.004127s ]
    5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.001470s ]
    6. SELECT * FROM `set` [ RunTime:0.000577s ]
    7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.001602s ]
    8. SELECT * FROM `article` WHERE `id` = 954815 LIMIT 1 [ RunTime:0.001913s ]
    9. UPDATE `article` SET `lasttime` = 1787283621 WHERE `id` = 954815 [ RunTime:0.011119s ]
    10. SELECT * FROM `fenlei` WHERE `id` = 64 LIMIT 1 [ RunTime:0.009417s ]
    11. SELECT * FROM `article` WHERE `id` < 954815 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.005631s ]
    12. SELECT * FROM `article` WHERE `id` > 954815 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.002245s ]
    13. SELECT * FROM `article` WHERE `id` < 954815 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.022703s ]
    14. SELECT * FROM `article` WHERE `id` < 954815 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.001803s ]
    15. SELECT * FROM `article` WHERE `id` < 954815 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.005228s ]
    0.274047s