📄 test.c
字号:
gsl_test_rel(abserr,exp_abserr,1e-7,"qk41(f1) singular abserr") ; gsl_test_rel(resabs,exp_resabs,1e-15,"qk41(f1) singular resabs") ; gsl_test_rel(resasc,exp_resasc,1e-15,"qk41(f1) singular resasc") ; gsl_integration_qk41 (&f, 1.0, 0.0, &result, &abserr, &resabs, &resasc) ; gsl_test_rel(result,-exp_result,1e-15,"qk41(f1) reverse result") ; gsl_test_rel(abserr,exp_abserr,1e-7,"qk41(f1) reverse abserr") ; gsl_test_rel(resabs,exp_resabs,1e-15,"qk41(f1) reverse resabs") ; gsl_test_rel(resasc,exp_resasc,1e-15,"qk41(f1) reverse resasc") ; } { double result = 0, abserr = 0, resabs = 0, resasc = 0 ; double exp_result = 2.449953612016972215E+01; double exp_abserr = 3.967771249391228849E+01; double exp_resabs = 2.449953612016972215E+01; double exp_resasc = 3.967771249391228849E+01; double alpha = -0.9 ; gsl_function f = make_function(&f1, &alpha); gsl_integration_qk51 (&f, 0.0, 1.0, &result, &abserr, &resabs, &resasc) ; gsl_test_rel(result,exp_result,1e-15,"qk51(f1) singular result") ; gsl_test_rel(abserr,exp_abserr,1e-7,"qk51(f1) singular abserr") ; gsl_test_rel(resabs,exp_resabs,1e-15,"qk51(f1) singular resabs") ; gsl_test_rel(resasc,exp_resasc,1e-15,"qk51(f1) singular resasc") ; gsl_integration_qk51 (&f, 1.0, 0.0, &result, &abserr, &resabs, &resasc) ; gsl_test_rel(result,-exp_result,1e-15,"qk51(f1) reverse result") ; gsl_test_rel(abserr,exp_abserr,1e-7,"qk51(f1) reverse abserr") ; gsl_test_rel(resabs,exp_resabs,1e-15,"qk51(f1) reverse resabs") ; gsl_test_rel(resasc,exp_resasc,1e-15,"qk51(f1) reverse resasc") ; } { double result = 0, abserr = 0, resabs = 0, resasc = 0 ; double exp_result = 2.583030240976628988E+01; double exp_abserr = 4.213750493076978643E+01; double exp_resabs = 2.583030240976628988E+01; double exp_resasc = 4.213750493076978643E+01; double alpha = -0.9 ; gsl_function f = make_function(&f1, &alpha); gsl_integration_qk61 (&f, 0.0, 1.0, &result, &abserr, &resabs, &resasc) ; gsl_test_rel(result,exp_result,1e-15,"qk61(f1) singular result") ; gsl_test_rel(abserr,exp_abserr,1e-7,"qk61(f1) singular abserr") ; gsl_test_rel(resabs,exp_resabs,1e-15,"qk61(f1) singular resabs") ; gsl_test_rel(resasc,exp_resasc,1e-15,"qk61(f1) singular resasc") ; gsl_integration_qk61 (&f, 1.0, 0.0, &result, &abserr, &resabs, &resasc) ; gsl_test_rel(result,-exp_result,1e-15,"qk61(f1) reverse result") ; gsl_test_rel(abserr,exp_abserr,1e-7,"qk61(f1) reverse abserr") ; gsl_test_rel(resabs,exp_resabs,1e-15,"qk61(f1) reverse resabs") ; gsl_test_rel(resasc,exp_resasc,1e-15,"qk61(f1) reverse resasc") ; } /* Test the basic Gauss-Kronrod rules with a smooth oscillating function, over an unsymmetric range. This should find any discrepancies in the abscissae. */ { double result = 0, abserr = 0, resabs = 0, resasc = 0 ; double exp_result =-7.238969575483799046E-01; double exp_abserr = 8.760080200939757174E-06; double exp_resabs = 1.165564172429140788E+00; double exp_resasc = 9.334560307787327371E-01; double alpha = 1.3 ; gsl_function f = make_function(&f3, &alpha); gsl_integration_qk15 (&f, 0.3, 2.71, &result, &abserr, &resabs, &resasc) ; gsl_test_rel(result,exp_result,1e-15,"qk15(f3) oscill result") ; gsl_test_rel(abserr,exp_abserr,1e-7,"qk15(f3) oscill abserr") ; gsl_test_rel(resabs,exp_resabs,1e-15,"qk15(f3) oscill resabs") ; gsl_test_rel(resasc,exp_resasc,1e-15,"qk15(f3) oscill resasc") ; gsl_integration_qk15 (&f, 2.71, 0.3, &result, &abserr, &resabs, &resasc) ; gsl_test_rel(result,-exp_result,1e-15,"qk15(f3) reverse result") ; gsl_test_rel(abserr,exp_abserr,1e-7,"qk15(f3) reverse abserr") ; gsl_test_rel(resabs,exp_resabs,1e-15,"qk15(f3) reverse resabs") ; gsl_test_rel(resasc,exp_resasc,1e-15,"qk15(f3) reverse resasc") ; } { double result = 0, abserr = 0, resabs = 0, resasc = 0 ; double exp_result =-7.238969575482959717E-01; double exp_abserr = 7.999213141433641888E-11; double exp_resabs = 1.150829032708484023E+00; double exp_resasc = 9.297591249133687619E-01; double alpha = 1.3 ; gsl_function f = make_function(&f3, &alpha); gsl_integration_qk21 (&f, 0.3, 2.71, &result, &abserr, &resabs, &resasc) ; gsl_test_rel(result,exp_result,1e-15,"qk21(f3) oscill result") ; gsl_test_rel(abserr,exp_abserr,1e-5,"qk21(f3) oscill abserr") ; gsl_test_rel(resabs,exp_resabs,1e-15,"qk21(f3) oscill resabs") ; gsl_test_rel(resasc,exp_resasc,1e-15,"qk21(f3) oscill resasc") ; gsl_integration_qk21 (&f, 2.71, 0.3, &result, &abserr, &resabs, &resasc) ; gsl_test_rel(result,-exp_result,1e-15,"qk21(f3) reverse result") ; gsl_test_rel(abserr,exp_abserr,1e-5,"qk21(f3) reverse abserr") ; gsl_test_rel(resabs,exp_resabs,1e-15,"qk21(f3) reverse resabs") ; gsl_test_rel(resasc,exp_resasc,1e-15,"qk21(f3) reverse resasc") ; } { double result = 0, abserr = 0, resabs = 0, resasc = 0 ; double exp_result =-7.238969575482959717E-01; double exp_abserr = 1.285805464427459261E-14; double exp_resabs = 1.158150602093290571E+00; double exp_resasc = 9.277828092501518853E-01; double alpha = 1.3 ; gsl_function f = make_function(&f3, &alpha); gsl_integration_qk31 (&f, 0.3, 2.71, &result, &abserr, &resabs, &resasc) ; gsl_test_rel(result,exp_result,1e-15,"qk31(f3) oscill result") ; gsl_test_rel(abserr,exp_abserr,1e-7,"qk31(f3) oscill abserr") ; gsl_test_rel(resabs,exp_resabs,1e-15,"qk31(f3) oscill resabs") ; gsl_test_rel(resasc,exp_resasc,1e-15,"qk31(f3) oscill resasc") ; gsl_integration_qk31 (&f, 2.71, 0.3, &result, &abserr, &resabs, &resasc) ; gsl_test_rel(result,-exp_result,1e-15,"qk31(f3) reverse result") ; gsl_test_rel(abserr,exp_abserr,1e-7,"qk31(f3) reverse abserr") ; gsl_test_rel(resabs,exp_resabs,1e-15,"qk31(f3) reverse resabs") ; gsl_test_rel(resasc,exp_resasc,1e-15,"qk31(f3) reverse resasc") ; } { double result = 0, abserr = 0, resabs = 0, resasc = 0 ; double exp_result =-7.238969575482959717E-01; double exp_abserr = 1.286535726271015626E-14; double exp_resabs = 1.158808363486595328E+00; double exp_resasc = 9.264382258645686985E-01; double alpha = 1.3 ; gsl_function f = make_function(&f3, &alpha); gsl_integration_qk41 (&f, 0.3, 2.71, &result, &abserr, &resabs, &resasc) ; gsl_test_rel(result,exp_result,1e-15,"qk41(f3) oscill result") ; gsl_test_rel(abserr,exp_abserr,1e-7,"qk41(f3) oscill abserr") ; gsl_test_rel(resabs,exp_resabs,1e-15,"qk41(f3) oscill resabs") ; gsl_test_rel(resasc,exp_resasc,1e-15,"qk41(f3) oscill resasc") ; gsl_integration_qk41 (&f, 2.71, 0.3, &result, &abserr, &resabs, &resasc) ; gsl_test_rel(result,-exp_result,1e-15,"qk41(f3) reverse result") ; gsl_test_rel(abserr,exp_abserr,1e-7,"qk41(f3) reverse abserr") ; gsl_test_rel(resabs,exp_resabs,1e-15,"qk41(f3) reverse resabs") ; gsl_test_rel(resasc,exp_resasc,1e-15,"qk41(f3) reverse resasc") ; } { double result = 0, abserr = 0, resabs = 0, resasc = 0 ; double exp_result =-7.238969575482961938E-01; double exp_abserr = 1.285290995039385778E-14; double exp_resabs = 1.157687209264406381E+00; double exp_resasc = 9.264666884071264263E-01; double alpha = 1.3 ; gsl_function f = make_function(&f3, &alpha); gsl_integration_qk51 (&f, 0.3, 2.71, &result, &abserr, &resabs, &resasc) ; gsl_test_rel(result,exp_result,1e-15,"qk51(f3) oscill result") ; gsl_test_rel(abserr,exp_abserr,1e-7,"qk51(f3) oscill abserr") ; gsl_test_rel(resabs,exp_resabs,1e-15,"qk51(f3) oscill resabs") ; gsl_test_rel(resasc,exp_resasc,1e-15,"qk51(f3) oscill resasc") ; gsl_integration_qk51 (&f, 2.71, 0.3, &result, &abserr, &resabs, &resasc) ; gsl_test_rel(result,-exp_result,1e-15,"qk51(f3) reverse result") ; gsl_test_rel(abserr,exp_abserr,1e-7,"qk51(f3) reverse abserr") ; gsl_test_rel(resabs,exp_resabs,1e-15,"qk51(f3) reverse resabs") ; gsl_test_rel(resasc,exp_resasc,1e-15,"qk51(f3) reverse resasc") ; } { double result = 0, abserr = 0, resabs = 0, resasc = 0 ; double exp_result =-7.238969575482959717E-01; double exp_abserr = 1.286438572027470736E-14; double exp_resabs = 1.158720854723590099E+00; double exp_resasc = 9.270469641771273972E-01; double alpha = 1.3 ; gsl_function f = make_function(&f3, &alpha); gsl_integration_qk61 (&f, 0.3, 2.71, &result, &abserr, &resabs, &resasc) ; gsl_test_rel(result,exp_result,1e-15,"qk61(f3) oscill result") ; gsl_test_rel(abserr,exp_abserr,1e-7,"qk61(f3) oscill abserr") ; gsl_test_rel(resabs,exp_resabs,1e-15,"qk61(f3) oscill resabs") ; gsl_test_rel(resasc,exp_resasc,1e-15,"qk61(f3) oscill resasc") ; gsl_integration_qk61 (&f, 2.71, 0.3, &result, &abserr, &resabs, &resasc) ; gsl_test_rel(result,-exp_result,1e-15,"qk61(f3) reverse result") ; gsl_test_rel(abserr,exp_abserr,1e-7,"qk61(f3) reverse abserr") ; gsl_test_rel(resabs,exp_resabs,1e-15,"qk61(f3) reverse resabs") ; gsl_test_rel(resasc,exp_resasc,1e-15,"qk61(f3) reverse resasc") ; } /* Test the non-adaptive gaussian integrator QNG */ { int status = 0; size_t neval = 0 ; double result = 0, abserr = 0 ; double exp_result = 7.716049379303083211E-02; double exp_abserr = 9.424302199601294244E-08; int exp_neval = 21; int exp_ier = 0; double alpha = 2.6 ; gsl_function f = make_function(&f1, &alpha); status = gsl_integration_qng (&f, 0.0, 1.0, 1e-1, 0.0, &result, &abserr, &neval) ; gsl_test_rel(result,exp_result,1e-15,"qng(f1) smooth result") ; gsl_test_rel(abserr,exp_abserr,1e-7,"qng(f1) smooth abserr") ; gsl_test_int((int)neval,exp_neval,"qng(f1) smooth neval") ; gsl_test_int(status,exp_ier,"qng(f1) smooth status") ; status = gsl_integration_qng (&f, 1.0, 0.0, 1e-1, 0.0, &result, &abserr, &neval) ; gsl_test_rel(result,-exp_result,1e-15,"qng(f1) reverse result") ; gsl_test_rel(abserr,exp_abserr,1e-7,"qng(f1) reverse abserr") ; gsl_test_int((int)neval,exp_neval,"qng(f1) reverse neval") ; gsl_test_int(status,exp_ier,"qng(f1) reverse status") ; } { int status = 0; size_t neval = 0 ; double result = 0, abserr = 0 ; double exp_result = 7.716049382706505200E-02; double exp_abserr = 2.666893044866214501E-12; int exp_neval = 43; int exp_ier = 0; double alpha = 2.6 ; gsl_function f = make_function(&f1, &alpha); status = gsl_integration_qng (&f, 0.0, 1.0, 0.0, 1e-9, &result, &abserr, &neval) ; gsl_test_rel(result,exp_result,1e-15,"qng(f1) smooth 43pt result") ; gsl_test_rel(abserr,exp_abserr,1e-5,"qng(f1) smooth 43pt abserr") ; gsl_test_int((int)neval,exp_neval,"qng(f1) smooth 43pt neval") ; gsl_test_int(status,exp_ier,"qng(f1) smooth 43pt status") ; status = gsl_integration_qng (&f, 1.0, 0.0, 0.0, 1e-9, &result, &abserr, &neval) ; gsl_test_rel(result,-exp_result,1e-15,"qng(f1) reverse 43pt result") ; gsl_test_rel(abserr,exp_abserr,1e-5,"qng(f1) reverse 43pt abserr") ; gsl_test_int((int)neval,exp_neval,"qng(f1) reverse 43pt neval") ; gsl_test_int(status,exp_ier,"qng(f1) reverse 43pt status") ; } { int status; size_t neval = 0 ; double result = 0, abserr = 0 ; double exp_result =-7.238969575482961938E-01; double exp_abserr = 1.277676889520056369E-14; int exp_neval = 43; int exp_ier = 0; double alpha = 1.3 ; gsl_function f = make_function(&f3, &alpha); status = gsl_integration_qng (&f, 0.3, 2.71, 0.0, 1e-12, &result, &abserr, &neval) ; gsl_test_rel(result,exp_result,1e-15,"qnq(f3) oscill result") ; gsl_test_rel(abserr,exp_abserr,1e-7,"qng(f3) oscill abserr") ; gsl_test_int((int)neval,exp_neval,"qng(f3) oscill neval") ; gsl_test_int(status,exp_ier,"qng(f3) oscill status") ; status = gsl_integration_qng (&f, 2.71, 0.3, 0.0, 1e-12, &result, &abserr, &neval) ; gsl_test_rel(result,-exp_result,1e-15,"qnq(f3) reverse result") ; gsl_test_rel(abserr,exp_abserr,1e-7,"qng(f3) reverse abserr") ; gsl_test_int((int)neval,exp_neval,"qng(f3) reverse neval") ; gsl_test_int(status,exp_ier,"qng(f3) reverse status") ; } { int status = 0; size_t neval = 0 ; double result = 0, abserr = 0 ; double exp_result = 7.716049382716029525E-02; double exp_abserr = 8.566535680046930668E-16; int exp_neval = 87; int exp_ier = 0; double alpha = 2.6 ; gsl_function f = make_function(&f1, &alpha); status = gsl_integration_qng (&f, 0.0, 1.0, 0.0, 1e-13, &result, &abserr, &neval) ; gsl_test_rel(result,exp_result,1e-15,"qng(f1) 87pt smooth result") ; gsl_test_rel(abserr,exp_abserr,1e-7,"qng(f1) 87pt smooth abserr") ; gsl_test_int((int)neval,exp_neval,"qng(f1) 87pt smooth neval") ; gsl_test_int(status,exp_ier,"qng(f1) 87pt smooth status") ; status = gsl_integration_qng (&f, 1.0, 0.0, 0.0, 1e-13, &result, &abserr, &neval) ; gsl_test_rel(result,-exp_result,1e-15,"qng(f1) 87pt reverse result") ; gsl_test_rel(abserr,exp_abserr,1e-7,"qng(f1) 87pt reverse abserr") ; gsl_test_int((int)neval,exp_neval,"qng(f1) 87pt reverse neval") ; gsl_test_int(status,exp_ier,"qng(f1) 87pt reverse status") ; } {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -