CINXE.COM
Numerical Integration
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="en-US"><head profile="http://gmpg.org/xfn/11"><style media="all">/*<![CDATA[*/html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,font,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td{margin:0;padding:0;border:0;outline:0;font-size:100%;vertical-align:baseline;background:0 0}body{background:#fff;line-height:1}ol,ul{list-style:none}blockquote,q{quotes:none}blockquote:before,blockquote:after,q:before,q:after{content:'';content:none}:focus{outline:0}ins{text-decoration:none}del{text-decoration:line-through}table{border-collapse:collapse;border-spacing:0}a img{border:none}body,input,textarea{color:#000;font:12px Arial,sans-serif;line-height:18px}h1,h2,h3,h4,h5,h6{font-weight:400;clear:both}p{margin-bottom:18px;text-align:justify}ul{margin:0 0 18px 2.5em}ol{margin:0 0 18px 2.5em}ul{list-style:disc}ol{list-style-type:decimal}ol ol{list-style:upper-alpha}ol ol ol{list-style:lower-roman}ol ol ol ol{list-style:lower-alpha}ul ul,ol ol,ul ol,ol ul{margin-bottom:0}li{margin-bottom:0}dl{margin:0 1.5em}dt{font-weight:700}dd{margin-bottom:18px}strong{font-weight:700}cite,em,i{font-style:italic}blockquote{margin:0 3em}blockquote em,blockquote i,blockquote cite{font-style:normal}pre{font-family:"Courier 10 Pitch",Courier,monospace;font-size:15px;line-height:21px;margin-bottom:18px;background-color:#f7f7f7;padding:1em}code{font:11px Monaco,monospace}abbr,acronym{border-bottom:1px dotted #333;cursor:help}ins{text-decoration:none}sup,sub{height:0;line-height:1;vertical-align:baseline;_vertical-align:bottom;position:relative}sup{bottom:1ex}sub{top:.5ex}blockquote.left{float:left;margin-left:0;margin-right:20px;text-align:right;width:33%}blockquote.right{float:right;margin-left:20px;margin-right:0;text-align:left;width:33%}body{min-width:960px}#header{position:relative}#branding{width:940px;margin:0 auto}#access{position:relative;overflow:hidden}.menu{width:940px;margin:0 auto}#main{width:960px;margin:0 auto;overflow:hidden;position:relative}#content{margin:0 0 0 10px;overflow:hidden}.main-aside{width:240px;float:right;position:relative;right:10px}#secondary{clear:right}#footer{clear:both}#subsidiary{width:940px;margin:0 auto;overflow:hidden}#subsidiary .aside{width:300px;float:left;margin:0 20px 0 0}#subsidiary #third{margin:0}#siteinfo{clear:both;width:940px;margin:0 auto}.entry-content img{margin:0 0 18px}.alignleft,img.alignleft{float:left;margin-right:20px}.alignright,img.alignright{display:block;float:right;margin-left:20px}.aligncenter,img.aligncenter{margin-left:auto;margin-right:auto;display:block;clear:both}.wp-caption{text-align:center;margin-bottom:18px}.wp-caption img{margin:0;padding:0;border:0 none}.wp-caption p.wp-caption-text{margin:0;padding:5px}.gallery img{margin:0}.wp-smiley{max-height:12px;margin:0 !important}body,input,textarea{font:17px Georgia,serif;line-height:22px}p,ul,ol,dd,pre{margin-bottom:22px}pre,code{font:16px Monaco,monospace;line-height:22px}blockquote{color:#666;font-style:italic}table{font-size:13px;line-height:18px;margin:0 0 22px;text-align:left}caption{text-align:left}tr{border-bottom:1px solid #ccc}th,td{padding:.7em .3em}a:link{color:#004b91}a:visited{color:#743399}a:active,a:hover{color:#ff4b33}#header{z-index:2}#branding{padding:88px 0 44px}#blog-title{font-size:36px;font-weight:700;line-height:40px}#blog-title a{color:#000;text-decoration:none}#blog-title a:active,#blog-title a:hover{color:#ff4b33}#blog-description{color:#666;font-size:13px;font-style:italic}.skip-link{display:none}#access{border-bottom:1px solid #ccc;height:32px;font-size:13px;overflow:visible;z-index:100}.sf-menu,.sf-menu *{margin:0;padding:0;list-style:none}.sf-menu{line-height:1.0}.sf-menu ul{position:absolute;top:-999em;width:10em}.sf-menu ul li{width:100%}.sf-menu li:hover{visibility:inherit}.sf-menu li{float:left;position:relative}.sf-menu a{display:block;position:relative}.sf-menu li:hover ul,.sf-menu li.sfHover ul{left:0;top:2.5em;z-index:99}ul.sf-menu li:hover li ul,ul.sf-menu li.sfHover li ul{top:-999em}ul.sf-menu li li:hover ul,ul.sf-menu li li.sfHover ul{left:10em;top:0}ul.sf-menu li li:hover li ul,ul.sf-menu li li.sfHover li ul{top:-999em}ul.sf-menu li li li:hover ul,ul.sf-menu li li li.sfHover ul{left:10em;top:0}.sf-menu{border-right:1px solid #ccc;float:left}.sf-menu a{border-left:1px solid #ccc;border-top:1px solid #ccc;border-bottom:1px solid #ccc;padding:9px 13px;text-decoration:none}.sf-menu .current_page_item a,.sf-menu .current_page_ancestor a,.sf-menu .current_page_parent a{border-bottom-color:#fff}.sf-menu a,.sf-menu a:visited{color:#666}.sf-menu li{background:#fff}.sf-menu li li{background:#fff}.sf-menu li li li{background:#9aaedb}.sf-menu li:hover,.sf-menu li.sfHover,.sf-menu a:focus,.sf-menu a:hover,.sf-menu a:active{background:#fafafa;outline:0;border-bottom-color:#ccc}.sf-menu ul{border-right:1px solid #ccc;border-bottom:1px solid #ccc}.sf-menu li:hover ul,.sf-menu li.sfHover ul{top:32px}.sf-menu ul ul{margin-top:0}.sf-menu ul a{background:#fafafa;border-bottom:none}.sf-menu ul a:hover{color:#ff4b33}#main{clear:both;padding:66px 0 22px}.page-title{font-size:13px;line-height:18px;padding:0 0 44px}.attachment .page-title{font-style:italic}.page-title a{color:#666;text-decoration:none}.page-title a:active,.page-title a:hover{color:#ff4b33}.page-title span{font-style:italic}.page-title .meta-nav{font-style:normal}.hentry{padding:0 0 22px}.single .hentry{padding:0}.home #content .sticky{border:1px solid #ccc;margin:0 0 66px;padding:22px 20px 0}.entry-title{font-size:28px;font-weight:700;line-height:28px;padding:0 0 7px}.entry-title a{color:#000;text-decoration:none}.entry-title a:active,.entry-title a:hover{color:#ff4b33}.entry-meta{color:#666;font-size:13px;font-style:italic;line-height:18px}.entry-meta .n{font-size:11px;font-style:normal;letter-spacing:.05em;text-transform:uppercase}.entry-meta a{color:#666;text-decoration:none}.entry-meta a:active,.entry-meta a:hover{color:#ff4b33}.entry-meta abbr{border:none;cursor:text;font-size:11px;font-style:normal;letter-spacing:.05em;text-transform:uppercase}.entry-content{padding:22px 0 0}.entry-content h1,.entry-content h2{font-size:19px;font-weight:700;padding:28px 0 14px}.entry-content h3{font-size:17px;font-style:italic;padding:28px 0 14px}.entry-content h4{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.05em}.entry-content table{margin-left:1px}.entry-content embed{margin:0 0 22px}.entry-utility{color:#666;font-size:13px;line-height:18px;margin:0 0 44px}.entry-utility a{color:#666;font-style:italic;text-decoration:none}.entry-utility a:active,.entry-utility a:hover{color:#ff4b33}.page-link{font-size:13px;font-weight:700;line-height:18px;margin:0 0 22px;padding:22px 0 0;word-spacing:.5em}.page-link a{border:1px solid #ccc;color:#666;font-weight:400;padding:.5em .75em;text-decoration:none}.page-link a:active,.page-link a:hover{color:#ff4b33}ul#links-page,ul#archives-page{list-style:none;margin-left:0;overflow:hidden}li.content-column{float:left;margin-right:20px;width:45%}.gallery{padding:0 0 22px}.wp-caption-text,.gallery-caption{color:#666;font-size:13px;line-height:18px}#author-info{margin:0 0 44px;overflow:hidden}#author-info .avatar{float:left;margin:.3em 1em 0 0}.attachment-jpeg #container,.attachment-png #container{width:100%}.attachment-jpeg #content,.attachment-png #content{width:930px}.attachment-jpeg #comments,.attachment-png #comments{width:540px;overflow:hidden}.attachment-jpeg .main-aside,.attachment-png .main-aside{display:none}.navigation{color:#666;font-size:13px;line-height:18px;margin:0 0 22px;overflow:hidden}.navigation a{color:#666;font-style:italic;text-decoration:none}.navigation a:active,.navigation a:hover{color:#ff4b33}.navigation .meta-nav{font-style:normal}.nav-previous{float:left;width:50%}.nav-next{float:right;width:50%;text-align:right}#nav-above,#nav-below{width:100%}#nav-above{display:none}.paged #nav-above{display:block;padding:0}#comments{padding:22px 0 0}#comments,#comments input,#comments textarea{font-size:13px;line-height:18px}#comments code{font-size:12px;line-height:18px}#comments h3{font-size:15px;font-weight:700;line-height:22px;padding:0 0 18px}#comments-list{padding:0 0 18px}#comments-list ol,#comments-list ul{list-style:none;margin:0}#comments-list ol{border:1px solid #ccc;border-bottom:none;margin:0 0 18px}#comments-list li{background:#fafafa;border-bottom:1px solid #ccc;padding:18px 1.5em 0;position:relative}#comments-list li.alt{background:#fff}#comments-list li.bypostauthor{background:#ffc}#comments-list ul li{border:1px solid #ccc;margin:0 0 18px}#comments-list li .avatar{position:absolute;top:22px;left:1.5em;width:36px;height:36px}#comments-list .comment-author{font-weight:700;padding:9px 0 0}#comments-list .comment-meta{color:#666;font-size:11px;padding:0 0 9px}#comments-list .comment-meta a{color:#666;font-style:italic;text-decoration:none}#comments-list .comment-meta a:active,#comments-list .comment-meta a:hover{color:#ff4b33}.comment-reply-link{font-size:11px;padding:0 0 18px;text-align:right}.comment-reply-link a{color:#666;font-style:italic;text-decoration:none}.comment-reply-link a:active,.comment-reply-link a:hover{color:#ff4b33}.comment-navigation{font-weight:700;padding:0 0 18px;margin-right:.5em}.comment-navigation a{border:1px solid #ccc;color:#666;font-weight:400;padding:.5em .75em;text-decoration:none}.comment-navigation a:active,.comment-navigation a:hover{color:#ff4b33}.comment-navigation a,.comment-navigation span{margin-right:.5em}#trackbacks-list .comment-content{position:absolute;left:-9000px}#respond{background:#fff;margin-bottom:22px;overflow:hidden;padding:18px 0 0;position:relative}#comments-list #respond{border-bottom:1px solid #ccc;margin:0 0 18px;padding:18px 1.5em}#comments-list ul #respond{border:1px solid #ccc;margin:0}#cancel-comment-reply{font-size:11px;position:absolute;top:18px;right:1.5em}#cancel-comment-reply a{color:#666}#respond .required{color:#ff4b33;font-weight:700}.form-section label{font-size:11px}.form-section input{margin:0 0 18px;width:98%}.form-section textarea{width:99%}#form-allowed-tags p{color:#666;font-size:11px;margin:0}#form-allowed-tags span{font-style:italic}.form-submit{padding:18px 0 0;text-align:right}.subscribe-to-comments{color:#666;float:left;font-size:11px;margin:0;padding:18px 0 0}.solo-subscribe-to-comments{color:#666;font-size:11px;padding:18px 0 0}.comment_license{color:#666;clear:both;font-size:11px;margin:0;padding:18px 0 0}.aside,.aside input{font-size:13px;line-height:18px;margin-bottom:6px}.aside p,.aside ul,.aside ol,.aside dd,.aside pre{margin-bottom:18px}.aside pre,.aside code{font-size:12px;line-height:18px}.aside .current_page_item a{color:#ff4b33}.aside .current_page_item .page_item a{color:#666}.aside .current_page_item .page_item a:hover,.aside .current_page_item .page_item a:active{color:#ff4b33}.aside{color:#666}.aside a{color:#666}.aside a:active,.aside a:hover{color:#ff4b33}.aside h3{font-size:15px;font-style:italic;line-height:22px}.aside h3 a{text-decoration:none}.aside caption{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.05em}.aside ul{list-style:none;margin-left:0}.aside ul ul{list-style:disc;margin:0 0 22px 20px}.aside ul ul li{padding:1px 0}.aside ul ul ul{margin-bottom:0}.aside form,.aside table{margin-bottom:22px}.aside table{border:none}.aside thead{border:1px solid #ccc}.aside tbody{border:1px solid #ccc}.aside th,.aside td{border-right:1px solid #ccc;padding:.25em .8em}.aside tfoot tr{border:none}.aside tfoot td{border-color:transparent}.widget_tag_cloud{margin:0 0 22px}.main-aside ul{padding:0 20px}.main-aside ul ul{padding:0}#primary{border:1px solid #ccc;padding:18px 0 0;margin-bottom:22px}#content .aside{border:1px solid #ccc;margin:0 0 22px;padding:18px 0 0}#content .aside ul{padding:0 20px}#content .aside h3{font-family:Georgia,serif;font-weight:400;font-size:17px;font-style:italic;padding:0 0 7px;text-transform:none}#content .aside ul ul{padding:0}#subsidiary{padding:33px 0 0}#footer{border-top:1px solid #ccc;margin-top:22px}#siteinfo{color:#666;font-size:11px;line-height:18px;padding:22px 0 44px}#siteinfo a{color:#666}#siteinfo a:active,#siteinfo a:hover{color:#ff4b33}.wp-pagenavi{margin:0 0 0 -.5em;padding:.5em 0}.wp-pagenavi a,.wp-pagenavi a:link{border:1px solid #ccc !important;color:#666!important;font-style:normal;margin:0 .375em !important;padding:.5em .25em !important}.wp-pagenavi a:visited{border:1px solid #ccc !important;color:#666 !important}.wp-pagenavi a:hover{border:1px solid #ccc !important;color:#ff4b33 !important}.wp-pagenavi a:active{border:1px solid #ccc !important;color:#ff4b33 !important}.wp-pagenavi span.pages{border:none !important;color:#666 !important;margin:0 !important;padding:0 !important}.wp-pagenavi span.current{border:none !important;color:#666 !important;font-weight:400 !important;margin:0 !important;padding:0 !important}.wp-pagenavi span.extend{background-color:#fff;border:1px solid #000;color:#000;margin:2px;padding:2px 4px}.edit-comment{margin-bottom:18px}img#wpstats{width:0;height:0;overflow:hidden}.entry-content img{margin:0;max-width:100%}.alignleft,img.alignleft{float:left;margin-right:20px}.alignright,img.alignright{display:block;float:right;margin-left:20px}.aligncenter,img.aligncenter{margin-left:auto;margin-right:auto;display:block;clear:both}.wp-caption{text-align:center;margin-bottom:18px}.wp-caption img{margin:0;padding:0;border:0 none}.wp-caption p.wp-caption-text{margin:0;padding:5px}.gallery img{margin:0}.wp-smiley{max-height:12px;margin:0 !important}table.gtable{font:76% Verdana,Tahoma,Arial,sans-serif;border:1px #aaa solid;border-collapse:collapse}.gtable th,.gtable td{padding:.2em}.gtable th{background:#f2f2f2;text-align:center}.gtable caption{margin-left:inherit;margin-right:inherit} img.wp-smiley,img.emoji{display:inline !important;border:none !important;box-shadow:none !important;height:1em !important;width:1em !important;margin:0 .07em !important;vertical-align:-.1em !important;background:0 0 !important;padding:0 !important} .ql-img-inline-formula{background:0 0 !important;border:none !important;padding:0 !important;margin:0 !important}.ql-img-displayed-equation{background:0 0 !important;border:none !important;padding:0 !important;margin:0 !important;vertical-align:middle !important;display:inline-block !important}.ql-img-picture{background:0 0 !important;border:none !important;padding:0 !important;margin:0 !important}.ql-center-displayed-equation{text-align:center !important;white-space:nowrap !important;overflow:hidden !important}.ql-left-displayed-equation{text-align:left !important;white-space:nowrap !important;overflow:hidden !important}.ql-right-displayed-equation{text-align:right !important;white-space:nowrap !important;overflow:hidden !important}.ql-left-eqno{width:3em !important;text-align:left !important;float:left !important;display:inline-block !important;font-size:110% !important}.ql-right-eqno{width:3em !important;text-align:right !important;float:right !important;display:inline-block !important;font-size:110% !important}.ql-center-picture{border:none !important;text-align:center !important;background:0 0 !important}.ql-errors{color:#222;font-family:Georgia,"Bitstream Charter",serif;font-size:16px;border:1px solid red}.ql-manual-mode{background:0 0;border:none;padding:0;margin:0} .wp-block-audio figcaption{margin-top:.5em;margin-bottom:1em}.wp-block-audio audio{width:100%;min-width:300px}.wp-block-button{color:#fff}.wp-block-button.aligncenter{text-align:center}.wp-block-button.alignright{text-align:right}.wp-block-button__link{background-color:#32373c;border:none;border-radius:28px;box-shadow:none;color:inherit;cursor:pointer;display:inline-block;font-size:18px;margin:0;padding:12px 24px;text-align:center;text-decoration:none;overflow-wrap:break-word}.wp-block-button__link:active,.wp-block-button__link:focus,.wp-block-button__link:hover,.wp-block-button__link:visited{color:inherit}.is-style-squared .wp-block-button__link{border-radius:0}.no-border-radius.wp-block-button__link{border-radius:0!important}.is-style-outline{color:#32373c}.is-style-outline .wp-block-button__link{background-color:transparent;border:2px solid}.wp-block-calendar{text-align:center}.wp-block-calendar tbody td,.wp-block-calendar th{padding:4px;border:1px solid #e2e4e7}.wp-block-calendar tfoot td{border:none}.wp-block-calendar table{width:100%;border-collapse:collapse;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif}.wp-block-calendar table th{font-weight:400;background:#edeff0}.wp-block-calendar a{text-decoration:underline}.wp-block-calendar tfoot a{color:#00739c}.wp-block-calendar table caption,.wp-block-calendar table tbody{color:#40464d}.wp-block-categories.alignleft{margin-right:2em}.wp-block-categories.alignright{margin-left:2em}.wp-block-columns{display:flex;margin-bottom:28px;flex-wrap:wrap}@media (min-width:782px){.wp-block-columns{flex-wrap:nowrap}}.wp-block-column{flex-grow:1;min-width:0;word-break:break-word;overflow-wrap:break-word}@media (max-width:599px){.wp-block-column{flex-basis:100%!important}}@media (min-width:600px){.wp-block-column{flex-basis:calc(50% - 16px);flex-grow:0}.wp-block-column:nth-child(2n){margin-left:32px}}@media (min-width:782px){.wp-block-column:not(:first-child){margin-left:32px}}.wp-block-columns.are-vertically-aligned-top{align-items:flex-start}.wp-block-columns.are-vertically-aligned-center{align-items:center}.wp-block-columns.are-vertically-aligned-bottom{align-items:flex-end}.wp-block-column.is-vertically-aligned-top{align-self:flex-start}.wp-block-column.is-vertically-aligned-center{-ms-grid-row-align:center;align-self:center}.wp-block-column.is-vertically-aligned-bottom{align-self:flex-end}.wp-block-cover,.wp-block-cover-image{position:relative;background-color:#000;background-size:cover;background-position:50%;min-height:430px;height:100%;width:100%;display:flex;justify-content:center;align-items:center;overflow:hidden}.wp-block-cover-image.has-parallax,.wp-block-cover.has-parallax{background-attachment:fixed}@supports (-webkit-overflow-scrolling:touch){.wp-block-cover-image.has-parallax,.wp-block-cover.has-parallax{background-attachment:scroll}}@media (prefers-reduced-motion:reduce){.wp-block-cover-image.has-parallax,.wp-block-cover.has-parallax{background-attachment:scroll}}.wp-block-cover-image.has-background-dim:before,.wp-block-cover.has-background-dim:before{content:"";position:absolute;top:0;left:0;bottom:0;right:0;background-color:inherit;opacity:.5;z-index:1}.wp-block-cover-image.has-background-dim.has-background-dim-10:before,.wp-block-cover.has-background-dim.has-background-dim-10:before{opacity:.1}.wp-block-cover-image.has-background-dim.has-background-dim-20:before,.wp-block-cover.has-background-dim.has-background-dim-20:before{opacity:.2}.wp-block-cover-image.has-background-dim.has-background-dim-30:before,.wp-block-cover.has-background-dim.has-background-dim-30:before{opacity:.3}.wp-block-cover-image.has-background-dim.has-background-dim-40:before,.wp-block-cover.has-background-dim.has-background-dim-40:before{opacity:.4}.wp-block-cover-image.has-background-dim.has-background-dim-50:before,.wp-block-cover.has-background-dim.has-background-dim-50:before{opacity:.5}.wp-block-cover-image.has-background-dim.has-background-dim-60:before,.wp-block-cover.has-background-dim.has-background-dim-60:before{opacity:.6}.wp-block-cover-image.has-background-dim.has-background-dim-70:before,.wp-block-cover.has-background-dim.has-background-dim-70:before{opacity:.7}.wp-block-cover-image.has-background-dim.has-background-dim-80:before,.wp-block-cover.has-background-dim.has-background-dim-80:before{opacity:.8}.wp-block-cover-image.has-background-dim.has-background-dim-90:before,.wp-block-cover.has-background-dim.has-background-dim-90:before{opacity:.9}.wp-block-cover-image.has-background-dim.has-background-dim-100:before,.wp-block-cover.has-background-dim.has-background-dim-100:before{opacity:1}.wp-block-cover-image.alignleft,.wp-block-cover-image.alignright,.wp-block-cover.alignleft,.wp-block-cover.alignright{max-width:305px;width:100%}.wp-block-cover-image:after,.wp-block-cover:after{display:block;content:"";font-size:0;min-height:inherit}@supports (position:sticky){.wp-block-cover-image:after,.wp-block-cover:after{content:none}}.wp-block-cover-image.aligncenter,.wp-block-cover-image.alignleft,.wp-block-cover-image.alignright,.wp-block-cover.aligncenter,.wp-block-cover.alignleft,.wp-block-cover.alignright{display:flex}.wp-block-cover-image .wp-block-cover__inner-container,.wp-block-cover .wp-block-cover__inner-container{width:calc(100% - 70px);z-index:1;color:#f8f9f9}.wp-block-cover-image .wp-block-subhead:not(.has-text-color),.wp-block-cover-image h1:not(.has-text-color),.wp-block-cover-image h2:not(.has-text-color),.wp-block-cover-image h3:not(.has-text-color),.wp-block-cover-image h4:not(.has-text-color),.wp-block-cover-image h5:not(.has-text-color),.wp-block-cover-image h6:not(.has-text-color),.wp-block-cover-image p:not(.has-text-color),.wp-block-cover .wp-block-subhead:not(.has-text-color),.wp-block-cover h1:not(.has-text-color),.wp-block-cover h2:not(.has-text-color),.wp-block-cover h3:not(.has-text-color),.wp-block-cover h4:not(.has-text-color),.wp-block-cover h5:not(.has-text-color),.wp-block-cover h6:not(.has-text-color),.wp-block-cover p:not(.has-text-color){color:inherit}.wp-block-cover__video-background{position:absolute;top:50%;left:50%;transform:translateX(-50%) translateY(-50%);width:100%;height:100%;z-index:0;-o-object-fit:cover;object-fit:cover}.wp-block-cover-image-text,.wp-block-cover-text,section.wp-block-cover-image h2{color:#fff}.wp-block-cover-image-text a,.wp-block-cover-image-text a:active,.wp-block-cover-image-text a:focus,.wp-block-cover-image-text a:hover,.wp-block-cover-text a,.wp-block-cover-text a:active,.wp-block-cover-text a:focus,.wp-block-cover-text a:hover,section.wp-block-cover-image h2 a,section.wp-block-cover-image h2 a:active,section.wp-block-cover-image h2 a:focus,section.wp-block-cover-image h2 a:hover{color:#fff}.wp-block-cover-image .wp-block-cover.has-left-content{justify-content:flex-start}.wp-block-cover-image .wp-block-cover.has-right-content{justify-content:flex-end}.wp-block-cover-image.has-left-content .wp-block-cover-image-text,.wp-block-cover.has-left-content .wp-block-cover-text,section.wp-block-cover-image.has-left-content>h2{margin-left:0;text-align:left}.wp-block-cover-image.has-right-content .wp-block-cover-image-text,.wp-block-cover.has-right-content .wp-block-cover-text,section.wp-block-cover-image.has-right-content>h2{margin-right:0;text-align:right}.wp-block-cover-image .wp-block-cover-image-text,.wp-block-cover .wp-block-cover-text,section.wp-block-cover-image>h2{font-size:2em;line-height:1.25;z-index:1;margin-bottom:0;max-width:610px;padding:14px;text-align:center}.block-editor-block-list__block[data-type="core/embed"][data-align=left] .block-editor-block-list__block-edit,.block-editor-block-list__block[data-type="core/embed"][data-align=right] .block-editor-block-list__block-edit,.wp-block-embed.alignleft,.wp-block-embed.alignright{max-width:360px;width:100%}.wp-block-embed{margin-bottom:1em}.wp-block-embed figcaption{margin-top:.5em;margin-bottom:1em}.wp-embed-responsive .wp-block-embed.wp-embed-aspect-1-1 .wp-block-embed__wrapper,.wp-embed-responsive .wp-block-embed.wp-embed-aspect-1-2 .wp-block-embed__wrapper,.wp-embed-responsive .wp-block-embed.wp-embed-aspect-4-3 .wp-block-embed__wrapper,.wp-embed-responsive .wp-block-embed.wp-embed-aspect-9-16 .wp-block-embed__wrapper,.wp-embed-responsive .wp-block-embed.wp-embed-aspect-16-9 .wp-block-embed__wrapper,.wp-embed-responsive .wp-block-embed.wp-embed-aspect-18-9 .wp-block-embed__wrapper,.wp-embed-responsive .wp-block-embed.wp-embed-aspect-21-9 .wp-block-embed__wrapper{position:relative}.wp-embed-responsive .wp-block-embed.wp-embed-aspect-1-1 .wp-block-embed__wrapper:before,.wp-embed-responsive .wp-block-embed.wp-embed-aspect-1-2 .wp-block-embed__wrapper:before,.wp-embed-responsive .wp-block-embed.wp-embed-aspect-4-3 .wp-block-embed__wrapper:before,.wp-embed-responsive .wp-block-embed.wp-embed-aspect-9-16 .wp-block-embed__wrapper:before,.wp-embed-responsive .wp-block-embed.wp-embed-aspect-16-9 .wp-block-embed__wrapper:before,.wp-embed-responsive .wp-block-embed.wp-embed-aspect-18-9 .wp-block-embed__wrapper:before,.wp-embed-responsive .wp-block-embed.wp-embed-aspect-21-9 .wp-block-embed__wrapper:before{content:"";display:block;padding-top:50%}.wp-embed-responsive .wp-block-embed.wp-embed-aspect-1-1 .wp-block-embed__wrapper iframe,.wp-embed-responsive .wp-block-embed.wp-embed-aspect-1-2 .wp-block-embed__wrapper iframe,.wp-embed-responsive .wp-block-embed.wp-embed-aspect-4-3 .wp-block-embed__wrapper iframe,.wp-embed-responsive .wp-block-embed.wp-embed-aspect-9-16 .wp-block-embed__wrapper iframe,.wp-embed-responsive .wp-block-embed.wp-embed-aspect-16-9 .wp-block-embed__wrapper iframe,.wp-embed-responsive .wp-block-embed.wp-embed-aspect-18-9 .wp-block-embed__wrapper iframe,.wp-embed-responsive .wp-block-embed.wp-embed-aspect-21-9 .wp-block-embed__wrapper iframe{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%}.wp-embed-responsive .wp-block-embed.wp-embed-aspect-21-9 .wp-block-embed__wrapper:before{padding-top:42.85%}.wp-embed-responsive .wp-block-embed.wp-embed-aspect-18-9 .wp-block-embed__wrapper:before{padding-top:50%}.wp-embed-responsive .wp-block-embed.wp-embed-aspect-16-9 .wp-block-embed__wrapper:before{padding-top:56.25%}.wp-embed-responsive .wp-block-embed.wp-embed-aspect-4-3 .wp-block-embed__wrapper:before{padding-top:75%}.wp-embed-responsive .wp-block-embed.wp-embed-aspect-1-1 .wp-block-embed__wrapper:before{padding-top:100%}.wp-embed-responsive .wp-block-embed.wp-embed-aspect-9-16 .wp-block-embed__wrapper:before{padding-top:177.78%}.wp-embed-responsive .wp-block-embed.wp-embed-aspect-1-2 .wp-block-embed__wrapper:before{padding-top:200%}.wp-block-file{margin-bottom:1.5em}.wp-block-file.aligncenter{text-align:center}.wp-block-file.alignright{text-align:right}.wp-block-file .wp-block-file__button{background:#32373c;border-radius:2em;color:#fff;font-size:13px;padding:.5em 1em}.wp-block-file a.wp-block-file__button{text-decoration:none}.wp-block-file a.wp-block-file__button:active,.wp-block-file a.wp-block-file__button:focus,.wp-block-file a.wp-block-file__button:hover,.wp-block-file a.wp-block-file__button:visited{box-shadow:none;color:#fff;opacity:.85;text-decoration:none}.wp-block-file *+.wp-block-file__button{margin-left:.75em}.blocks-gallery-grid,.wp-block-gallery{display:flex;flex-wrap:wrap;list-style-type:none;padding:0;margin:0}.blocks-gallery-grid .blocks-gallery-image,.blocks-gallery-grid .blocks-gallery-item,.wp-block-gallery .blocks-gallery-image,.wp-block-gallery .blocks-gallery-item{margin:0 16px 16px 0;display:flex;flex-grow:1;flex-direction:column;justify-content:center;position:relative}.blocks-gallery-grid .blocks-gallery-image figure,.blocks-gallery-grid .blocks-gallery-item figure,.wp-block-gallery .blocks-gallery-image figure,.wp-block-gallery .blocks-gallery-item figure{margin:0;height:100%}@supports (position:sticky){.blocks-gallery-grid .blocks-gallery-image figure,.blocks-gallery-grid .blocks-gallery-item figure,.wp-block-gallery .blocks-gallery-image figure,.wp-block-gallery .blocks-gallery-item figure{display:flex;align-items:flex-end;justify-content:flex-start}}.blocks-gallery-grid .blocks-gallery-image img,.blocks-gallery-grid .blocks-gallery-item img,.wp-block-gallery .blocks-gallery-image img,.wp-block-gallery .blocks-gallery-item img{display:block;max-width:100%;height:auto;width:100%}@supports (position:sticky){.blocks-gallery-grid .blocks-gallery-image img,.blocks-gallery-grid .blocks-gallery-item img,.wp-block-gallery .blocks-gallery-image img,.wp-block-gallery .blocks-gallery-item img{width:auto}}.blocks-gallery-grid .blocks-gallery-image figcaption,.blocks-gallery-grid .blocks-gallery-item figcaption,.wp-block-gallery .blocks-gallery-image figcaption,.wp-block-gallery .blocks-gallery-item figcaption{position:absolute;bottom:0;width:100%;max-height:100%;overflow:auto;padding:40px 10px 9px;color:#fff;text-align:center;font-size:13px;background:linear-gradient(0deg,rgba(0,0,0,.7),rgba(0,0,0,.3) 70%,transparent)}.blocks-gallery-grid .blocks-gallery-image figcaption img,.blocks-gallery-grid .blocks-gallery-item figcaption img,.wp-block-gallery .blocks-gallery-image figcaption img,.wp-block-gallery .blocks-gallery-item figcaption img{display:inline}.blocks-gallery-grid.is-cropped .blocks-gallery-image a,.blocks-gallery-grid.is-cropped .blocks-gallery-image img,.blocks-gallery-grid.is-cropped .blocks-gallery-item a,.blocks-gallery-grid.is-cropped .blocks-gallery-item img,.wp-block-gallery.is-cropped .blocks-gallery-image a,.wp-block-gallery.is-cropped .blocks-gallery-image img,.wp-block-gallery.is-cropped .blocks-gallery-item a,.wp-block-gallery.is-cropped .blocks-gallery-item img{width:100%}@supports (position:sticky){.blocks-gallery-grid.is-cropped .blocks-gallery-image a,.blocks-gallery-grid.is-cropped .blocks-gallery-image img,.blocks-gallery-grid.is-cropped .blocks-gallery-item a,.blocks-gallery-grid.is-cropped .blocks-gallery-item img,.wp-block-gallery.is-cropped .blocks-gallery-image a,.wp-block-gallery.is-cropped .blocks-gallery-image img,.wp-block-gallery.is-cropped .blocks-gallery-item a,.wp-block-gallery.is-cropped .blocks-gallery-item img{height:100%;flex:1;-o-object-fit:cover;object-fit:cover}}.blocks-gallery-grid .blocks-gallery-image,.blocks-gallery-grid .blocks-gallery-item,.wp-block-gallery .blocks-gallery-image,.wp-block-gallery .blocks-gallery-item{width:calc((100% - 16px)/2)}.blocks-gallery-grid .blocks-gallery-image:nth-of-type(2n),.blocks-gallery-grid .blocks-gallery-item:nth-of-type(2n),.wp-block-gallery .blocks-gallery-image:nth-of-type(2n),.wp-block-gallery .blocks-gallery-item:nth-of-type(2n){margin-right:0}.blocks-gallery-grid.columns-1 .blocks-gallery-image,.blocks-gallery-grid.columns-1 .blocks-gallery-item,.wp-block-gallery.columns-1 .blocks-gallery-image,.wp-block-gallery.columns-1 .blocks-gallery-item{width:100%;margin-right:0}@media (min-width:600px){.blocks-gallery-grid.columns-3 .blocks-gallery-image,.blocks-gallery-grid.columns-3 .blocks-gallery-item,.wp-block-gallery.columns-3 .blocks-gallery-image,.wp-block-gallery.columns-3 .blocks-gallery-item{width:calc((100% - 32px)/3);margin-right:16px}@supports (-ms-ime-align:auto){.blocks-gallery-grid.columns-3 .blocks-gallery-image,.blocks-gallery-grid.columns-3 .blocks-gallery-item,.wp-block-gallery.columns-3 .blocks-gallery-image,.wp-block-gallery.columns-3 .blocks-gallery-item{width:calc((100% - 32px)/3 - 1px)}}.blocks-gallery-grid.columns-4 .blocks-gallery-image,.blocks-gallery-grid.columns-4 .blocks-gallery-item,.wp-block-gallery.columns-4 .blocks-gallery-image,.wp-block-gallery.columns-4 .blocks-gallery-item{width:calc((100% - 48px)/4);margin-right:16px}@supports (-ms-ime-align:auto){.blocks-gallery-grid.columns-4 .blocks-gallery-image,.blocks-gallery-grid.columns-4 .blocks-gallery-item,.wp-block-gallery.columns-4 .blocks-gallery-image,.wp-block-gallery.columns-4 .blocks-gallery-item{width:calc((100% - 48px)/4 - 1px)}}.blocks-gallery-grid.columns-5 .blocks-gallery-image,.blocks-gallery-grid.columns-5 .blocks-gallery-item,.wp-block-gallery.columns-5 .blocks-gallery-image,.wp-block-gallery.columns-5 .blocks-gallery-item{width:calc((100% - 64px)/5);margin-right:16px}@supports (-ms-ime-align:auto){.blocks-gallery-grid.columns-5 .blocks-gallery-image,.blocks-gallery-grid.columns-5 .blocks-gallery-item,.wp-block-gallery.columns-5 .blocks-gallery-image,.wp-block-gallery.columns-5 .blocks-gallery-item{width:calc((100% - 64px)/5 - 1px)}}.blocks-gallery-grid.columns-6 .blocks-gallery-image,.blocks-gallery-grid.columns-6 .blocks-gallery-item,.wp-block-gallery.columns-6 .blocks-gallery-image,.wp-block-gallery.columns-6 .blocks-gallery-item{width:calc((100% - 80px)/6);margin-right:16px}@supports (-ms-ime-align:auto){.blocks-gallery-grid.columns-6 .blocks-gallery-image,.blocks-gallery-grid.columns-6 .blocks-gallery-item,.wp-block-gallery.columns-6 .blocks-gallery-image,.wp-block-gallery.columns-6 .blocks-gallery-item{width:calc((100% - 80px)/6 - 1px)}}.blocks-gallery-grid.columns-7 .blocks-gallery-image,.blocks-gallery-grid.columns-7 .blocks-gallery-item,.wp-block-gallery.columns-7 .blocks-gallery-image,.wp-block-gallery.columns-7 .blocks-gallery-item{width:calc((100% - 96px)/7);margin-right:16px}@supports (-ms-ime-align:auto){.blocks-gallery-grid.columns-7 .blocks-gallery-image,.blocks-gallery-grid.columns-7 .blocks-gallery-item,.wp-block-gallery.columns-7 .blocks-gallery-image,.wp-block-gallery.columns-7 .blocks-gallery-item{width:calc((100% - 96px)/7 - 1px)}}.blocks-gallery-grid.columns-8 .blocks-gallery-image,.blocks-gallery-grid.columns-8 .blocks-gallery-item,.wp-block-gallery.columns-8 .blocks-gallery-image,.wp-block-gallery.columns-8 .blocks-gallery-item{width:calc((100% - 112px)/8);margin-right:16px}@supports (-ms-ime-align:auto){.blocks-gallery-grid.columns-8 .blocks-gallery-image,.blocks-gallery-grid.columns-8 .blocks-gallery-item,.wp-block-gallery.columns-8 .blocks-gallery-image,.wp-block-gallery.columns-8 .blocks-gallery-item{width:calc((100% - 112px)/8 - 1px)}}.blocks-gallery-grid.columns-1 .blocks-gallery-image:nth-of-type(1n),.blocks-gallery-grid.columns-1 .blocks-gallery-item:nth-of-type(1n),.wp-block-gallery.columns-1 .blocks-gallery-image:nth-of-type(1n),.wp-block-gallery.columns-1 .blocks-gallery-item:nth-of-type(1n){margin-right:0}.blocks-gallery-grid.columns-2 .blocks-gallery-image:nth-of-type(2n),.blocks-gallery-grid.columns-2 .blocks-gallery-item:nth-of-type(2n),.wp-block-gallery.columns-2 .blocks-gallery-image:nth-of-type(2n),.wp-block-gallery.columns-2 .blocks-gallery-item:nth-of-type(2n){margin-right:0}.blocks-gallery-grid.columns-3 .blocks-gallery-image:nth-of-type(3n),.blocks-gallery-grid.columns-3 .blocks-gallery-item:nth-of-type(3n),.wp-block-gallery.columns-3 .blocks-gallery-image:nth-of-type(3n),.wp-block-gallery.columns-3 .blocks-gallery-item:nth-of-type(3n){margin-right:0}.blocks-gallery-grid.columns-4 .blocks-gallery-image:nth-of-type(4n),.blocks-gallery-grid.columns-4 .blocks-gallery-item:nth-of-type(4n),.wp-block-gallery.columns-4 .blocks-gallery-image:nth-of-type(4n),.wp-block-gallery.columns-4 .blocks-gallery-item:nth-of-type(4n){margin-right:0}.blocks-gallery-grid.columns-5 .blocks-gallery-image:nth-of-type(5n),.blocks-gallery-grid.columns-5 .blocks-gallery-item:nth-of-type(5n),.wp-block-gallery.columns-5 .blocks-gallery-image:nth-of-type(5n),.wp-block-gallery.columns-5 .blocks-gallery-item:nth-of-type(5n){margin-right:0}.blocks-gallery-grid.columns-6 .blocks-gallery-image:nth-of-type(6n),.blocks-gallery-grid.columns-6 .blocks-gallery-item:nth-of-type(6n),.wp-block-gallery.columns-6 .blocks-gallery-image:nth-of-type(6n),.wp-block-gallery.columns-6 .blocks-gallery-item:nth-of-type(6n){margin-right:0}.blocks-gallery-grid.columns-7 .blocks-gallery-image:nth-of-type(7n),.blocks-gallery-grid.columns-7 .blocks-gallery-item:nth-of-type(7n),.wp-block-gallery.columns-7 .blocks-gallery-image:nth-of-type(7n),.wp-block-gallery.columns-7 .blocks-gallery-item:nth-of-type(7n){margin-right:0}.blocks-gallery-grid.columns-8 .blocks-gallery-image:nth-of-type(8n),.blocks-gallery-grid.columns-8 .blocks-gallery-item:nth-of-type(8n),.wp-block-gallery.columns-8 .blocks-gallery-image:nth-of-type(8n),.wp-block-gallery.columns-8 .blocks-gallery-item:nth-of-type(8n){margin-right:0}}.blocks-gallery-grid .blocks-gallery-image:last-child,.blocks-gallery-grid .blocks-gallery-item:last-child,.wp-block-gallery .blocks-gallery-image:last-child,.wp-block-gallery .blocks-gallery-item:last-child{margin-right:0}.blocks-gallery-grid.alignleft,.blocks-gallery-grid.alignright,.wp-block-gallery.alignleft,.wp-block-gallery.alignright{max-width:305px;width:100%}.blocks-gallery-grid.aligncenter .blocks-gallery-item figure,.wp-block-gallery.aligncenter .blocks-gallery-item figure{justify-content:center}.wp-block-image{max-width:100%;margin-bottom:1em}.wp-block-image img{max-width:100%}.wp-block-image.aligncenter{text-align:center}.wp-block-image.alignfull img,.wp-block-image.alignwide img{width:100%}.wp-block-image .aligncenter,.wp-block-image .alignleft,.wp-block-image .alignright,.wp-block-image.is-resized{display:table;margin-left:0;margin-right:0}.wp-block-image .aligncenter>figcaption,.wp-block-image .alignleft>figcaption,.wp-block-image .alignright>figcaption,.wp-block-image.is-resized>figcaption{display:table-caption;caption-side:bottom}.wp-block-image .alignleft{float:left;margin-right:1em}.wp-block-image .alignright{float:right;margin-left:1em}.wp-block-image .aligncenter{margin-left:auto;margin-right:auto}.wp-block-image figcaption{margin-top:.5em;margin-bottom:1em}.is-style-circle-mask img{border-radius:9999px}@supports (mask-image:none) or (-webkit-mask-image:none){.is-style-circle-mask img{mask-image:url('data:image/svg+xml;utf8,<svg viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg"><circle cx="50" cy="50" r="50"/></svg>');mask-mode:alpha;mask-repeat:no-repeat;mask-size:contain;mask-position:center;border-radius:none}}.wp-block-latest-comments__comment{font-size:15px;line-height:1.1;list-style:none;margin-bottom:1em}.has-avatars .wp-block-latest-comments__comment{min-height:36px;list-style:none}.has-avatars .wp-block-latest-comments__comment .wp-block-latest-comments__comment-excerpt,.has-avatars .wp-block-latest-comments__comment .wp-block-latest-comments__comment-meta{margin-left:52px}.has-dates .wp-block-latest-comments__comment,.has-excerpts .wp-block-latest-comments__comment{line-height:1.5}.wp-block-latest-comments__comment-excerpt p{font-size:14px;line-height:1.8;margin:5px 0 20px}.wp-block-latest-comments__comment-date{color:#8f98a1;display:block;font-size:12px}.wp-block-latest-comments .avatar,.wp-block-latest-comments__comment-avatar{border-radius:24px;display:block;float:left;height:40px;margin-right:12px;width:40px}.wp-block-latest-posts.alignleft{margin-right:2em}.wp-block-latest-posts.alignright{margin-left:2em}.wp-block-latest-posts.wp-block-latest-posts__list{list-style:none}.wp-block-latest-posts.is-grid{display:flex;flex-wrap:wrap;padding:0}.wp-block-latest-posts.is-grid li{margin:0 16px 16px 0;width:100%}@media (min-width:600px){.wp-block-latest-posts.columns-2 li{width:calc(50% - 16px)}.wp-block-latest-posts.columns-3 li{width:calc(33.33333% - 16px)}.wp-block-latest-posts.columns-4 li{width:calc(25% - 16px)}.wp-block-latest-posts.columns-5 li{width:calc(20% - 16px)}.wp-block-latest-posts.columns-6 li{width:calc(16.66667% - 16px)}}.wp-block-latest-posts__post-date{display:block;color:#6c7781;font-size:13px}.wp-block-latest-posts__post-excerpt{margin-top:8px;margin-bottom:16px}.wp-block-media-text{display:-ms-grid;display:grid;-ms-grid-rows:auto;grid-template-rows:auto;-ms-grid-columns:50% 1fr;grid-template-columns:50% 1fr}.wp-block-media-text .has-media-on-the-right{-ms-grid-columns:1fr 50%;grid-template-columns:1fr 50%}.wp-block-media-text.is-vertically-aligned-top .wp-block-media-text__content,.wp-block-media-text.is-vertically-aligned-top .wp-block-media-text__media{-ms-grid-row-align:start;align-self:start}.wp-block-media-text.is-vertically-aligned-center .wp-block-media-text__content,.wp-block-media-text.is-vertically-aligned-center .wp-block-media-text__media,.wp-block-media-text .wp-block-media-text__content,.wp-block-media-text .wp-block-media-text__media{-ms-grid-row-align:center;align-self:center}.wp-block-media-text.is-vertically-aligned-bottom .wp-block-media-text__content,.wp-block-media-text.is-vertically-aligned-bottom .wp-block-media-text__media{-ms-grid-row-align:end;align-self:end}.wp-block-media-text .wp-block-media-text__media{-ms-grid-column:1;grid-column:1;-ms-grid-row:1;grid-row:1;margin:0}.wp-block-media-text .wp-block-media-text__content{word-break:break-word;padding:0 8%}.wp-block-media-text.has-media-on-the-right .wp-block-media-text__media,.wp-block-media-text .wp-block-media-text__content{-ms-grid-column:2;grid-column:2;-ms-grid-row:1;grid-row:1}.wp-block-media-text.has-media-on-the-right .wp-block-media-text__content{-ms-grid-column:1;grid-column:1;-ms-grid-row:1;grid-row:1}.wp-block-media-text>figure>img,.wp-block-media-text>figure>video{max-width:unset;width:100%;vertical-align:middle}.wp-block-media-text.is-image-fill figure{height:100%;min-height:250px;background-size:cover}.wp-block-media-text.is-image-fill figure>img{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}@media (max-width:600px){.wp-block-media-text.is-stacked-on-mobile{-ms-grid-columns:100%!important;grid-template-columns:100%!important}.wp-block-media-text.is-stacked-on-mobile .wp-block-media-text__media{-ms-grid-column:1;grid-column:1;-ms-grid-row:1;grid-row:1}.wp-block-media-text.is-stacked-on-mobile.has-media-on-the-right .wp-block-media-text__media,.wp-block-media-text.is-stacked-on-mobile .wp-block-media-text__content{-ms-grid-column:1;grid-column:1;-ms-grid-row:2;grid-row:2}.wp-block-media-text.is-stacked-on-mobile.has-media-on-the-right .wp-block-media-text__content{-ms-grid-column:1;grid-column:1;-ms-grid-row:1;grid-row:1}}.is-small-text{font-size:14px}.is-regular-text{font-size:16px}.is-large-text{font-size:36px}.is-larger-text{font-size:48px}.has-drop-cap:not(:focus):first-letter{float:left;font-size:8.4em;line-height:.68;font-weight:100;margin:.05em .1em 0 0;text-transform:uppercase;font-style:normal}.has-drop-cap:not(:focus):after{content:"";display:table;clear:both;padding-top:14px}p.has-background{padding:20px 30px}p.has-text-color a{color:inherit}.wp-block-pullquote{padding:3em 0;margin-left:0;margin-right:0;text-align:center}.wp-block-pullquote.alignleft,.wp-block-pullquote.alignright{max-width:305px}.wp-block-pullquote.alignleft p,.wp-block-pullquote.alignright p{font-size:20px}.wp-block-pullquote p{font-size:28px;line-height:1.6}.wp-block-pullquote cite,.wp-block-pullquote footer{position:relative}.wp-block-pullquote .has-text-color a{color:inherit}.wp-block-pullquote:not(.is-style-solid-color){background:none}.wp-block-pullquote.is-style-solid-color{border:none}.wp-block-pullquote.is-style-solid-color blockquote{margin-left:auto;margin-right:auto;text-align:left;max-width:60%}.wp-block-pullquote.is-style-solid-color blockquote p{margin-top:0;margin-bottom:0;font-size:32px}.wp-block-pullquote.is-style-solid-color blockquote cite{text-transform:none;font-style:normal}.wp-block-pullquote cite{color:inherit}.wp-block-quote.is-large,.wp-block-quote.is-style-large{margin:0 0 16px;padding:0 1em}.wp-block-quote.is-large p,.wp-block-quote.is-style-large p{font-size:24px;font-style:italic;line-height:1.6}.wp-block-quote.is-large cite,.wp-block-quote.is-large footer,.wp-block-quote.is-style-large cite,.wp-block-quote.is-style-large footer{font-size:18px;text-align:right}.wp-block-rss.alignleft{margin-right:2em}.wp-block-rss.alignright{margin-left:2em}.wp-block-rss.is-grid{display:flex;flex-wrap:wrap;padding:0;list-style:none}.wp-block-rss.is-grid li{margin:0 16px 16px 0;width:100%}@media (min-width:600px){.wp-block-rss.columns-2 li{width:calc(50% - 16px)}.wp-block-rss.columns-3 li{width:calc(33.33333% - 16px)}.wp-block-rss.columns-4 li{width:calc(25% - 16px)}.wp-block-rss.columns-5 li{width:calc(20% - 16px)}.wp-block-rss.columns-6 li{width:calc(16.66667% - 16px)}}.wp-block-rss__item-author,.wp-block-rss__item-publish-date{display:block;color:#6c7781;font-size:13px}.wp-block-search{display:flex;flex-wrap:wrap}.wp-block-search .wp-block-search__label{width:100%}.wp-block-search .wp-block-search__input{flex-grow:1}.wp-block-search .wp-block-search__button{margin-left:10px}.wp-block-separator.is-style-wide{border-bottom-width:1px}.wp-block-separator.is-style-dots{background:none!important;border:none;text-align:center;max-width:none;line-height:1;height:auto}.wp-block-separator.is-style-dots:before{content:"\00b7 \00b7 \00b7";color:currentColor;font-size:20px;letter-spacing:2em;padding-left:2em;font-family:serif}.wp-block-social-links{display:flex;justify-content:flex-start;padding-left:0;padding-right:0;margin-left:0}.wp-social-link{width:36px;height:36px;border-radius:36px;margin-right:8px}.wp-social-link,.wp-social-link a{display:block;transition:transform .1s ease}.wp-social-link a{padding:6px;line-height:0}.wp-social-link a,.wp-social-link a:active,.wp-social-link a:hover,.wp-social-link a:visited,.wp-social-link svg{color:currentColor;fill:currentColor}.wp-social-link:hover{transform:scale(1.1)}.wp-block-social-links.aligncenter{justify-content:center;display:flex}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link{background-color:#f0f0f0;color:#444}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-amazon{background-color:#f90;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-bandcamp{background-color:#1ea0c3;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-behance{background-color:#0757fe;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-codepen{background-color:#1e1f26;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-deviantart{background-color:#02e49b;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-dribbble{background-color:#e94c89;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-dropbox{background-color:#4280ff;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-etsy{background-color:#f45800;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-facebook{background-color:#1977f2;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-fivehundredpx{background-color:#000;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-flickr{background-color:#0461dd;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-foursquare{background-color:#e65678;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-github{background-color:#24292d;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-goodreads{background-color:#eceadd;color:#382110}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-google{background-color:#ea4434;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-instagram{background-color:#f00075;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-lastfm{background-color:#e21b24;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-linkedin{background-color:#0577b5;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-mastodon{background-color:#3288d4;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-medium{background-color:#02ab6c;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-meetup{background-color:#f6405f;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-pinterest{background-color:#e60122;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-pocket{background-color:#ef4155;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-reddit{background-color:#fe4500;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-skype{background-color:#0478d7;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-snapchat{background-color:#fefc00;color:#fff;stroke:#000}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-soundcloud{background-color:#ff5600;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-spotify{background-color:#1bd760;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-tumblr{background-color:#011835;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-twitch{background-color:#6440a4;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-twitter{background-color:#21a1f3;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-vimeo{background-color:#1eb7ea;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-vk{background-color:#4680c2;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-wordpress{background-color:#3499cd;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-yelp{background-color:#d32422;color:#fff}.wp-block-social-links:not(.is-style-logos-only) .wp-social-link-youtube{background-color:#ff0100;color:#fff}.wp-block-social-links.is-style-logos-only .wp-social-link{background:none;padding:4px}.wp-block-social-links.is-style-logos-only .wp-social-link svg{width:28px;height:28px}.wp-block-social-links.is-style-logos-only .wp-social-link-amazon{color:#f90}.wp-block-social-links.is-style-logos-only .wp-social-link-bandcamp{color:#1ea0c3}.wp-block-social-links.is-style-logos-only .wp-social-link-behance{color:#0757fe}.wp-block-social-links.is-style-logos-only .wp-social-link-codepen{color:#1e1f26}.wp-block-social-links.is-style-logos-only .wp-social-link-deviantart{color:#02e49b}.wp-block-social-links.is-style-logos-only .wp-social-link-dribbble{color:#e94c89}.wp-block-social-links.is-style-logos-only .wp-social-link-dropbox{color:#4280ff}.wp-block-social-links.is-style-logos-only .wp-social-link-etsy{color:#f45800}.wp-block-social-links.is-style-logos-only .wp-social-link-facebook{color:#1977f2}.wp-block-social-links.is-style-logos-only .wp-social-link-fivehundredpx{color:#000}.wp-block-social-links.is-style-logos-only .wp-social-link-flickr{color:#0461dd}.wp-block-social-links.is-style-logos-only .wp-social-link-foursquare{color:#e65678}.wp-block-social-links.is-style-logos-only .wp-social-link-github{color:#24292d}.wp-block-social-links.is-style-logos-only .wp-social-link-goodreads{color:#382110}.wp-block-social-links.is-style-logos-only .wp-social-link-google{color:#ea4434}.wp-block-social-links.is-style-logos-only .wp-social-link-instagram{color:#f00075}.wp-block-social-links.is-style-logos-only .wp-social-link-lastfm{color:#e21b24}.wp-block-social-links.is-style-logos-only .wp-social-link-linkedin{color:#0577b5}.wp-block-social-links.is-style-logos-only .wp-social-link-mastodon{color:#3288d4}.wp-block-social-links.is-style-logos-only .wp-social-link-medium{color:#02ab6c}.wp-block-social-links.is-style-logos-only .wp-social-link-meetup{color:#f6405f}.wp-block-social-links.is-style-logos-only .wp-social-link-pinterest{color:#e60122}.wp-block-social-links.is-style-logos-only .wp-social-link-pocket{color:#ef4155}.wp-block-social-links.is-style-logos-only .wp-social-link-reddit{color:#fe4500}.wp-block-social-links.is-style-logos-only .wp-social-link-skype{color:#0478d7}.wp-block-social-links.is-style-logos-only .wp-social-link-snapchat{color:#fff;stroke:#000}.wp-block-social-links.is-style-logos-only .wp-social-link-soundcloud{color:#ff5600}.wp-block-social-links.is-style-logos-only .wp-social-link-spotify{color:#1bd760}.wp-block-social-links.is-style-logos-only .wp-social-link-tumblr{color:#011835}.wp-block-social-links.is-style-logos-only .wp-social-link-twitch{color:#6440a4}.wp-block-social-links.is-style-logos-only .wp-social-link-twitter{color:#21a1f3}.wp-block-social-links.is-style-logos-only .wp-social-link-vimeo{color:#1eb7ea}.wp-block-social-links.is-style-logos-only .wp-social-link-vk{color:#4680c2}.wp-block-social-links.is-style-logos-only .wp-social-link-wordpress{color:#3499cd}.wp-block-social-links.is-style-logos-only .wp-social-link-yelp{background-color:#d32422;color:#fff}.wp-block-social-links.is-style-logos-only .wp-social-link-youtube{color:#ff0100}.wp-block-social-links.is-style-pill-shape .wp-social-link{width:auto}.wp-block-social-links.is-style-pill-shape .wp-social-link a{padding-left:16px;padding-right:16px}.wp-block-spacer{clear:both}p.wp-block-subhead{font-size:1.1em;font-style:italic;opacity:.75}.wp-block-table{overflow-x:auto}.wp-block-table table{width:100%}.wp-block-table .has-fixed-layout{table-layout:fixed;width:100%}.wp-block-table .has-fixed-layout td,.wp-block-table .has-fixed-layout th{word-break:break-word}.wp-block-table.aligncenter,.wp-block-table.alignleft,.wp-block-table.alignright{display:table;width:auto}.wp-block-table.aligncenter td,.wp-block-table.aligncenter th,.wp-block-table.alignleft td,.wp-block-table.alignleft th,.wp-block-table.alignright td,.wp-block-table.alignright th{word-break:break-word}.wp-block-table .has-subtle-light-gray-background-color{background-color:#f3f4f5}.wp-block-table .has-subtle-pale-green-background-color{background-color:#e9fbe5}.wp-block-table .has-subtle-pale-blue-background-color{background-color:#e7f5fe}.wp-block-table .has-subtle-pale-pink-background-color{background-color:#fcf0ef}.wp-block-table.is-style-stripes{border-spacing:0;border-collapse:inherit;background-color:transparent;border-bottom:1px solid #f3f4f5}.wp-block-table.is-style-stripes tbody tr:nth-child(odd){background-color:#f3f4f5}.wp-block-table.is-style-stripes.has-subtle-light-gray-background-color tbody tr:nth-child(odd){background-color:#f3f4f5}.wp-block-table.is-style-stripes.has-subtle-pale-green-background-color tbody tr:nth-child(odd){background-color:#e9fbe5}.wp-block-table.is-style-stripes.has-subtle-pale-blue-background-color tbody tr:nth-child(odd){background-color:#e7f5fe}.wp-block-table.is-style-stripes.has-subtle-pale-pink-background-color tbody tr:nth-child(odd){background-color:#fcf0ef}.wp-block-table.is-style-stripes td,.wp-block-table.is-style-stripes th{border-color:transparent}.wp-block-text-columns,.wp-block-text-columns.aligncenter{display:flex}.wp-block-text-columns .wp-block-column{margin:0 16px;padding:0}.wp-block-text-columns .wp-block-column:first-child{margin-left:0}.wp-block-text-columns .wp-block-column:last-child{margin-right:0}.wp-block-text-columns.columns-2 .wp-block-column{width:50%}.wp-block-text-columns.columns-3 .wp-block-column{width:33.33333%}.wp-block-text-columns.columns-4 .wp-block-column{width:25%}pre.wp-block-verse{white-space:nowrap;overflow:auto}.wp-block-video{margin-left:0;margin-right:0}.wp-block-video video{max-width:100%}@supports (position:sticky){.wp-block-video [poster]{-o-object-fit:cover;object-fit:cover}}.wp-block-video.aligncenter{text-align:center}.wp-block-video figcaption{margin-top:.5em;margin-bottom:1em}:root .has-pale-pink-background-color{background-color:#f78da7}:root .has-vivid-red-background-color{background-color:#cf2e2e}:root .has-luminous-vivid-orange-background-color{background-color:#ff6900}:root .has-luminous-vivid-amber-background-color{background-color:#fcb900}:root .has-light-green-cyan-background-color{background-color:#7bdcb5}:root .has-vivid-green-cyan-background-color{background-color:#00d084}:root .has-pale-cyan-blue-background-color{background-color:#8ed1fc}:root .has-vivid-cyan-blue-background-color{background-color:#0693e3}:root .has-vivid-purple-background-color{background-color:#9b51e0}:root .has-very-light-gray-background-color{background-color:#eee}:root .has-cyan-bluish-gray-background-color{background-color:#abb8c3}:root .has-very-dark-gray-background-color{background-color:#313131}:root .has-pale-pink-color{color:#f78da7}:root .has-vivid-red-color{color:#cf2e2e}:root .has-luminous-vivid-orange-color{color:#ff6900}:root .has-luminous-vivid-amber-color{color:#fcb900}:root .has-light-green-cyan-color{color:#7bdcb5}:root .has-vivid-green-cyan-color{color:#00d084}:root .has-pale-cyan-blue-color{color:#8ed1fc}:root .has-vivid-cyan-blue-color{color:#0693e3}:root .has-vivid-purple-color{color:#9b51e0}:root .has-very-light-gray-color{color:#eee}:root .has-cyan-bluish-gray-color{color:#abb8c3}:root .has-very-dark-gray-color{color:#313131}.has-small-font-size{font-size:13px}.has-normal-font-size,.has-regular-font-size{font-size:16px}.has-medium-font-size{font-size:20px}.has-large-font-size{font-size:36px}.has-huge-font-size,.has-larger-font-size{font-size:42px}.has-text-align-center{text-align:center}.has-text-align-left{text-align:left}.has-text-align-right{text-align:right} .post-ratings{width:100%;opacity:1}.post-ratings-loading{display:none;height:16px;text-align:left}.post-ratings-image{border:0}.post-ratings img,.post-ratings-loading img,.post-ratings-image img{border:0;padding:0;margin:0}.post-ratings-comment-author{font-weight:400;font-style:italic} .download-info .download-button,.download-info .more-button{width:120px;height:0;padding-top:36px;overflow:hidden;display:block}.download-info .download-button{background:url(//www.holoborodko.com/pavel/wp-content/plugins/download-monitor/page-addon/downloadbutton.gif) no-repeat top left}.download-info .more-button{background:url(//www.holoborodko.com/pavel/wp-content/plugins/download-monitor/page-addon/morebutton.gif) no-repeat top left}form#download-page-search{border:1px solid #ddd;-moz-border-radius:4px;-webkit-border-radius:4px;margin:8px 0 16px !important;padding:12px !important}form#download-page-search p,form#download-page-search input,form#download-page-search label{margin:0 !important;padding:0 !important;line-height:1 !important;vertical-align:middle !important}form#download-page-search input{margin-left:8px !important}form#download-page-search br{display:none}div.download-info.single{overflow:hidden;padding-left:140px}.download-info-heading{margin:8px 0 12px !important}.download-desc-heading{margin:8px 0 12px !important;color:#999;font-weight:700;padding:4px 0;border-bottom:1px solid #ddd}#download-page small{margin-left:4px;font-size:11px;letter-spacing:-.1px}#download-page small small{margin-left:0}#download-page small a{color:#999}div.side-section{float:left;width:120px;text-align:center;margin-left:-140px;position:relative}div.main-section{float:right;position:relative;width:100%}div.download-info p{margin:8px 0 12px !important;padding:0 !important}img.download-image{padding:3px;background:#fff;border:1px solid #ddd;margin-bottom:0 !important}table.download-meta{margin:0 0 12px !important;padding:0 !important}table.download-meta td,table.download-meta th{padding:4px 0;border-bottom:1px solid #ddd}table.download-meta thead{display:none}table.download-meta tbody th{color:#999;font-weight:700}#download-page-featured,#download-page-tags{border:1px solid #ddd;-moz-border-radius:4px;-webkit-border-radius:4px;padding:12px;margin:8px 0 16px !important}div#download-page-featured ul,div#download-page-tags ul{overflow:hidden;margin:0;padding:0;text-indent:0}div#download-page-featured li:before,div#download-page-tags li:before{content:""}div#download-page-featured li{clear:left;float:left;list-style:none;width:47%;padding-right:3% !important;margin:0 0 4px !important;border-right:1px dotted #ddd}div#download-page-featured li.alternate{clear:none;float:right;border:0;padding:0 !important;width:47%}div#download-page-featured a{display:table-row}div#download-page-featured img{width:42px;height:42px;padding:3px;background:#fff;border:1px solid #ddd;vertical-align:middle;margin:0 8px 0 0}div#download-page-featured span{display:table-cell;vertical-align:middle}div#download-page-featured a:hover,#download-page-categories a:hover{text-decoration:none}div#download-page-featured h3,#download-page-categories h3,div#download-page-tags h3{margin:0 0 12px !important;padding:0 0 8px;border-bottom:1px solid #ddd}#download-page-categories{overflow:hidden}#download-page-categories .category{float:left;width:48%;clear:both;border:1px solid #ddd;-moz-border-radius:4px;-webkit-border-radius:4px;margin:8px 3% 8px 0 !important}#download-page-categories .category.alternate{margin:8px 0 !important;clear:none}#download-page-categories .category .inner{padding:12px}#download-page-categories .category ol{margin:0;padding:0;border:0;text-indent:0}#download-page-categories .category li{margin:0;padding:2px 0;list-style-position:inside;border:0}div#download-page-tags ul{text-align:center}div#download-page-tags li{display:inline;margin:0;padding:0 6px}div#download-page-tags li a{line-height:1.5em}p.sorting a.active{background:#999;color:#fff;padding:2px}#download-page .pagination{margin:0;padding:0;text-indent:0}#download-page .pagination li:before{content:""}#download-page .pagination li{display:inline;margin:0 4px 0 0;padding:0} .download-info .download-button{background-image:url(http://www.holoborodko.com/pavel/wp-content/plugins/download-monitor/page-addon/downloadbutton.gif)}.download-info .more-button{background-image:url(http://www.holoborodko.com/pavel/wp-content/plugins/download-monitor/page-addon/morebutton.gif)}/*]]>*/</style><title>Numerical Integration</title><meta http-equiv="content-type" content="text/html charset=UTF-8"/><meta name="robots" content="index,follow" /><link rel="canonical" href="http://www.holoborodko.com/pavel/numerical-methods/numerical-integration/"/><link rel="alternate" type="application/rss+xml" href="http://www.holoborodko.com/pavel/feed/" title="Pavel Holoborodko Posts RSS feed" /><link rel="alternate" type="application/rss+xml" href="http://www.holoborodko.com/pavel/comments/feed/" title="Pavel Holoborodko Comments RSS feed" /><link rel="pingback" href="http://www.holoborodko.com/pavel/xmlrpc.php" /><link rel='dns-prefetch' href='//s.w.org' /> <script type="text/javascript">// // Google Analytics for WordPress by Yoast v4.2.3 | http://yoast.com/wordpress/google-analytics/ var _gaq = _gaq || []; _gaq.push(['_setAccount','UA-589790-3']); _gaq.push(['_trackPageview']); (function() { var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true; ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js'; var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s); })(); //</script> <link rel="alternate" type="application/rss+xml" title="Pavel Holoborodko » Numerical Integration Comments Feed" href="http://www.holoborodko.com/pavel/numerical-methods/numerical-integration/feed/" /> <script type="text/javascript">/*<![CDATA[*/window._wpemojiSettings = {"baseUrl":"https:\/\/s.w.org\/images\/core\/emoji\/12.0.0-1\/72x72\/","ext":".png","svgUrl":"https:\/\/s.w.org\/images\/core\/emoji\/12.0.0-1\/svg\/","svgExt":".svg","source":{"concatemoji":"http:\/\/www.holoborodko.com\/pavel\/wp-includes\/js\/wp-emoji-release.min.js?ver=5.3.18"}}; !function(e,a,t){var n,r,o,i=a.createElement("canvas"),p=i.getContext&&i.getContext("2d");function s(e,t){var a=String.fromCharCode;p.clearRect(0,0,i.width,i.height),p.fillText(a.apply(this,e),0,0);e=i.toDataURL();return p.clearRect(0,0,i.width,i.height),p.fillText(a.apply(this,t),0,0),e===i.toDataURL()}function c(e){var t=a.createElement("script");t.src=e,t.defer=t.type="text/javascript",a.getElementsByTagName("head")[0].appendChild(t)}for(o=Array("flag","emoji"),t.supports={everything:!0,everythingExceptFlag:!0},r=0;r<o.length;r++)t.supports[o[r]]=function(e){if(!p||!p.fillText)return!1;switch(p.textBaseline="top",p.font="600 32px Arial",e){case"flag":return s([127987,65039,8205,9895,65039],[127987,65039,8203,9895,65039])?!1:!s([55356,56826,55356,56819],[55356,56826,8203,55356,56819])&&!s([55356,57332,56128,56423,56128,56418,56128,56421,56128,56430,56128,56423,56128,56447],[55356,57332,8203,56128,56423,8203,56128,56418,8203,56128,56421,8203,56128,56430,8203,56128,56423,8203,56128,56447]);case"emoji":return!s([55357,56424,55356,57342,8205,55358,56605,8205,55357,56424,55356,57340],[55357,56424,55356,57342,8203,55358,56605,8203,55357,56424,55356,57340])}return!1}(o[r]),t.supports.everything=t.supports.everything&&t.supports[o[r]],"flag"!==o[r]&&(t.supports.everythingExceptFlag=t.supports.everythingExceptFlag&&t.supports[o[r]]);t.supports.everythingExceptFlag=t.supports.everythingExceptFlag&&!t.supports.flag,t.DOMReady=!1,t.readyCallback=function(){t.DOMReady=!0},t.supports.everything||(n=function(){t.readyCallback()},a.addEventListener?(a.addEventListener("DOMContentLoaded",n,!1),e.addEventListener("load",n,!1)):(e.attachEvent("onload",n),a.attachEvent("onreadystatechange",function(){"complete"===a.readyState&&t.readyCallback()})),(n=t.source||{}).concatemoji?c(n.concatemoji):n.wpemoji&&n.twemoji&&(c(n.twemoji),c(n.wpemoji)))}(window,document,window._wpemojiSettings);/*]]>*/</script> <script type='text/javascript'>var AJAXCommentPreview = {"loading":"Loading\u2026","error":"Preview error","emptyString":"\u00a0","url":"http:\/\/www.holoborodko.com\/pavel\/wp-admin\/admin-ajax.php?action=ajax_comment_preview"};</script> <link rel='https://api.w.org/' href='http://www.holoborodko.com/pavel/wp-json/' /><link rel="EditURI" type="application/rsd+xml" title="RSD" href="http://www.holoborodko.com/pavel/xmlrpc.php?rsd" /><link rel="wlwmanifest" type="application/wlwmanifest+xml" href="http://www.holoborodko.com/pavel/wp-includes/wlwmanifest.xml" /><link rel="canonical" href="http://www.holoborodko.com/pavel/numerical-methods/numerical-integration/" /><link rel='shortlink' href='http://wp.me/PiexS-aX' /><meta name='robots' content='noindex,follow' /><link rel="alternate" type="application/json+oembed" href="http://www.holoborodko.com/pavel/wp-json/oembed/1.0/embed?url=http%3A%2F%2Fwww.holoborodko.com%2Fpavel%2Fnumerical-methods%2Fnumerical-integration%2F" /><link rel="alternate" type="text/xml+oembed" href="http://www.holoborodko.com/pavel/wp-json/oembed/1.0/embed?url=http%3A%2F%2Fwww.holoborodko.com%2Fpavel%2Fnumerical-methods%2Fnumerical-integration%2F&format=xml" /><link id='MediaRSS' rel='alternate' type='application/rss+xml' title='NextGEN Gallery RSS Feed' href='http://www.holoborodko.com/pavel/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/ngglegacy/xml/media-rss.php' /><meta id="syntaxhighlighteranchor" name="syntaxhighlighter-version" content="3.1.3" /> <!--[if IE]><link rel="stylesheet" href="http://www.holoborodko.com/pavel/wp-content/themes/thematic/library/styles/ie.css" type="text/css" media="screen" /> <![endif]--></head><body class="wordpress y2024 m11 d29 h04 slug-numerical-integration page pageid-679 page-author-pavel-holoborodko page-parent page-child parent-pageid-1413 windows msie ie7"><div id="wrapper" class="hfeed"><div id="header"><div id="branding"><div id="blog-title"><span><a href="http://www.holoborodko.com/pavel/" title="Pavel Holoborodko" rel="home">Pavel Holoborodko</a></span></div><div id="blog-description">Applied mathematics and beyond</div></div><div id="access"><div class="skip-link"><a href="#content" title="Skip navigation to the content">Skip to content</a></div><div class="menu"><ul id="nav" class="sf-menu"><li ><a href="http://www.holoborodko.com/pavel/">Home</a></li><li class="page_item page-item-12"><a href="http://www.holoborodko.com/pavel/mpfr/">MPFR C++</a></li><li class="page_item page-item-1413 page_item_has_children current_page_ancestor current_page_parent"><a href="http://www.holoborodko.com/pavel/numerical-methods/">Numerical Methods</a><ul class='children'><li class="page_item page-item-236 page_item_has_children"><a href="http://www.holoborodko.com/pavel/numerical-methods/numerical-derivative/">Numerical Differentiation</a><ul class='children'><li class="page_item page-item-239"><a href="http://www.holoborodko.com/pavel/numerical-methods/numerical-derivative/central-differences/">Central Differences</a></li><li class="page_item page-item-242"><a href="http://www.holoborodko.com/pavel/numerical-methods/numerical-derivative/lanczos-low-noise-differentiators/">Low-noise Lanczos differentiators</a></li><li class="page_item page-item-245"><a href="http://www.holoborodko.com/pavel/numerical-methods/numerical-derivative/smooth-low-noise-differentiators/">Smooth noise-robust differentiators</a></li></ul></li><li class="page_item page-item-679 page_item_has_children current_page_item"><a href="http://www.holoborodko.com/pavel/numerical-methods/numerical-integration/" aria-current="page">Numerical Integration</a><ul class='children'><li class="page_item page-item-1879"><a href="http://www.holoborodko.com/pavel/numerical-methods/numerical-integration/cubature-formulas-for-the-unit-disk/">Cubature formulas for the unit disk</a></li><li class="page_item page-item-2801"><a href="http://www.holoborodko.com/pavel/numerical-methods/numerical-integration/stable-newton-cotes-formulas/">Stable Newton-Cotes Formulas</a></li><li class="page_item page-item-2822"><a href="http://www.holoborodko.com/pavel/numerical-methods/numerical-integration/overlapped-newton-cotes-quadratures/">Overlapped Newton-Cotes Quadratures</a></li><li class="page_item page-item-3678"><a href="http://www.holoborodko.com/pavel/numerical-methods/numerical-integration/stable-newton-cotes-formulas-open-type/">Stable Newton-Cotes Formulas (Open Type)</a></li></ul></li><li class="page_item page-item-3645"><a href="http://www.holoborodko.com/pavel/numerical-methods/noise-robust-smoothing-filter/">Noise-robust smoothing filter</a></li></ul></li><li class="page_item page-item-1422 page_item_has_children"><a href="http://www.holoborodko.com/pavel/quicklatex/">QuickLaTeX</a><ul class='children'><li class="page_item page-item-3759"><a href="http://www.holoborodko.com/pavel/quicklatex/latex-fonts-quicklatex/">LaTeX Fonts in QuickLaTeX</a></li></ul></li><li class="page_item page-item-1689 page_item_has_children"><a href="http://www.holoborodko.com/pavel/image-processing/">Image Processing</a><ul class='children'><li class="page_item page-item-1660"><a href="http://www.holoborodko.com/pavel/image-processing/edge-detection/">Noise Robust Gradient Operators</a></li></ul></li><li class="page_item page-item-2"><a href="http://www.holoborodko.com/pavel/about/">About</a></li></ul></div></div></div><div id="main"><div id="container"><div id="content"><div id="post-679" class="hentry p1 page publish author-pavel-holoborodko category-uncategorized untagged y2008 m10 d30 h02 slug-numerical-integration"><h1 class="entry-title">Numerical Integration</h1><div class="entry-meta"></div><div class="entry-content"><p>One of the most widely used methods of numerical integration is Gauss-Legendre quadrature. It posses very attractive property of to be exact on polynomials of degree up to <img src="http://www.holoborodko.com/pavel/wp-content/ql-cache/quicklatex.com-a261507bcce98a8b0a63d095aec28397_l3.png" class="ql-img-inline-formula quicklatex-auto-format" alt="2n-1" title="Rendered by QuickLaTeX.com" height="14" width="55" style="vertical-align: 0px;"/>, while using only <img src="http://www.holoborodko.com/pavel/wp-content/ql-cache/quicklatex.com-4ca6ee59faa667adf930956658f016e8_l3.png" class="ql-img-inline-formula quicklatex-auto-format" alt="n" title="Rendered by QuickLaTeX.com" height="9" width="12" style="vertical-align: 0px;"/> integrand evaluations (<img src="http://www.holoborodko.com/pavel/wp-content/ql-cache/quicklatex.com-4ca6ee59faa667adf930956658f016e8_l3.png" class="ql-img-inline-formula quicklatex-auto-format" alt="n" title="Rendered by QuickLaTeX.com" height="9" width="12" style="vertical-align: 0px;"/>-point quadrature).<br /> The algorithm consists in approximation of initial definite integral by the sum of weighted integrand values sampled at special points called abscissas:</p><p class="ql-center-displayed-equation" style="line-height: 134px;"><span class="ql-right-eqno"> </span><span class="ql-left-eqno"> </span><img src="http://www.holoborodko.com/pavel/wp-content/ql-cache/quicklatex.com-8165cc9666483498c90f967f62ba1c19_l3.png" height="134" width="544" class="ql-img-displayed-equation quicklatex-auto-format" alt="\[ \begin{matrix} \displaystyle \int_a^b f(x)\,\mathrm{d}x\approx\frac{b-a}{2}\sum_{i=1}^{n}{w_i\,f\left(\frac{b-a}{2}\xi_i+\frac{b+a}{2}\right)}&\\ &\\ \displaystyle w_i = \frac{2}{\left(1-\xi_i^2\right)\,\left[P'_n(\xi_i)\right]^2}&(n=1,2,\dots) \end{matrix} \]" title="Rendered by QuickLaTeX.com"/></p><p>where values <img src="http://www.holoborodko.com/pavel/wp-content/ql-cache/quicklatex.com-add15ca08c230d33c06760455bc5ccee_l3.png" class="ql-img-inline-formula quicklatex-auto-format" alt="\xi_i" title="Rendered by QuickLaTeX.com" height="19" width="14" style="vertical-align: -4px;"/> are <img src="http://www.holoborodko.com/pavel/wp-content/ql-cache/quicklatex.com-4ca6ee59faa667adf930956658f016e8_l3.png" class="ql-img-inline-formula quicklatex-auto-format" alt="n" title="Rendered by QuickLaTeX.com" height="9" width="12" style="vertical-align: 0px;"/> zeroes of the <img src="http://www.holoborodko.com/pavel/wp-content/ql-cache/quicklatex.com-d0562519fe246c182adf418914aaaebb_l3.png" class="ql-img-inline-formula quicklatex-auto-format" alt="n^{th}" title="Rendered by QuickLaTeX.com" height="17" width="27" style="vertical-align: 0px;"/>-degree Legendre polynomial <img src="http://www.holoborodko.com/pavel/wp-content/ql-cache/quicklatex.com-993e3ed81d2e27ff2634c1c22d885415_l3.png" class="ql-img-inline-formula quicklatex-auto-format" alt="P_n(\xi)" title="Rendered by QuickLaTeX.com" height="20" width="47" style="vertical-align: -5px;"/>.</p><p>Accuracy of the numerical integration depends significantly on precision of zeroes <img src="http://www.holoborodko.com/pavel/wp-content/ql-cache/quicklatex.com-add15ca08c230d33c06760455bc5ccee_l3.png" class="ql-img-inline-formula quicklatex-auto-format" alt="\xi_i" title="Rendered by QuickLaTeX.com" height="19" width="14" style="vertical-align: -4px;"/>. There is no easy-to-use analytical expression for <img src="http://www.holoborodko.com/pavel/wp-content/ql-cache/quicklatex.com-add15ca08c230d33c06760455bc5ccee_l3.png" class="ql-img-inline-formula quicklatex-auto-format" alt="\xi_i" title="Rendered by QuickLaTeX.com" height="19" width="14" style="vertical-align: -4px;"/> and usually they are computed numerically by root-finding algorithms.</p><p>Surprisingly popular mathematical references/software provide low-precision <img src="http://www.holoborodko.com/pavel/wp-content/ql-cache/quicklatex.com-86aebf60f216549356e35807c426b17b_l3.png" class="ql-img-inline-formula quicklatex-auto-format" alt="\xi_i,\,w_i" title="Rendered by QuickLaTeX.com" height="18" width="46" style="vertical-align: -4px;"/> (only 4-6 correct digits) for limited <img src="http://www.holoborodko.com/pavel/wp-content/ql-cache/quicklatex.com-b2e999116e7be2bc5fbd3240ad983715_l3.png" class="ql-img-inline-formula quicklatex-auto-format" alt="n\le 5" title="Rendered by QuickLaTeX.com" height="17" width="48" style="vertical-align: -3px;"/>. Obviously such situation doesn’t reflect contemporary computational capabilities and accuracy demands of many applications. For instance, commonly used floating-point type <code>double</code> of IEEE 754 standard is capable to store values with 16 digits precision (machine epsilon is about 1e-16 for 64 bits <code>double</code>).</p><p>This page aims to provide software libraries for calculation of high-precision abscissas <img src="http://www.holoborodko.com/pavel/wp-content/ql-cache/quicklatex.com-add15ca08c230d33c06760455bc5ccee_l3.png" class="ql-img-inline-formula quicklatex-auto-format" alt="\xi_i" title="Rendered by QuickLaTeX.com" height="19" width="14" style="vertical-align: -4px;"/> and weights <img src="http://www.holoborodko.com/pavel/wp-content/ql-cache/quicklatex.com-5ecbd9c943075c45a3a3a25016b0bef1_l3.png" class="ql-img-inline-formula quicklatex-auto-format" alt="w_i" title="Rendered by QuickLaTeX.com" height="12" width="19" style="vertical-align: -3px;"/> for any desired <img src="http://www.holoborodko.com/pavel/wp-content/ql-cache/quicklatex.com-4ca6ee59faa667adf930956658f016e8_l3.png" class="ql-img-inline-formula quicklatex-auto-format" alt="n" title="Rendered by QuickLaTeX.com" height="9" width="12" style="vertical-align: 0px;"/>.</p><h2>Gauss-Legendre Quadrature for C/C++</h2><p>This open-source library implements numerical integration based on Gauss-Legendre quadrature of any order.</p><ul><li><a href="http://www.holoborodko.com/pavel/wp-content/plugins/download-monitor/download.php?id=1" title="Downloaded 14217 times">Gauss-Legendre Quadrature.zip</a></li></ul><p>Pre-calculated high-precision abscissas and weights with 25 correct decimal places are used for specific orders n=2,…, 20, 32, 64, 96, 100, 128, 256, 512, 1024. Although all values can be found in the source code <a href="http://www.holoborodko.com/pavel/numerical-methods/numerical-integration/#gauss_quadrature_abscissas_table" >human-friendly tables with abscissas and weights</a> are available too. Nodes for all other n are generated on the fly with 1e-10 precision by fast root-finding algorithm.</p><p>Library also includes routine for numerical integration over 2D rectangle using product of two 1D Gaussian quadratures.</p><p>If you are looking for numerical integration over the unit disk (2D sphere) you might be interested in this page <a href="http://www.holoborodko.com/pavel/numerical-methods/numerical-integration/cubature-formulas-for-the-unit-disk/" > Cubature formulas for the unit disk</a>. It contains derivation details and source code in C/C++.</p><div style="background:#EEFFEE;border:1px solid #008000;padding:10px;margin-bottom:10px;"> This C/C++ library has been included without modifications in few prominent open source packages (e.g. GNU Scientific Library) as well as in several commercial software products (financial, medical, astronomical, etc.).</p><p><strong><a href="http://www.advanpix.com/" onclick="javascript:_gaq.push(['_trackEvent','outbound-article','http://www.advanpix.com/']);" target="_blank">Multiprecision Computing Toolbox for MATLAB</a></strong> worth mentioning in particular. It provides <a href="http://www.advanpix.com/2011/10/04/arbitrary-precision-gauss-legendre-quadrature/" onclick="javascript:_gaq.push(['_trackEvent','outbound-article','http://www.advanpix.com/2011/10/04/arbitrary-precision-gauss-legendre-quadrature/']);" target="_blank">Gauss-Legendre</a> as well as a full set of <a href="http://www.advanpix.com/2012/05/30/abscissas-and-weights-classical-gaussian-quadrature-rules/" onclick="javascript:_gaq.push(['_trackEvent','outbound-article','http://www.advanpix.com/2012/05/30/abscissas-and-weights-classical-gaussian-quadrature-rules/']);">Gaussian type quadrature (Jacobi, Chebyshev, Laguerre, Hermit and Gegenbauer)</a> in arbitrary precision. Reference tables on this page can be easily re-computed using this extension.</div><h2>Gauss-Legendre Quadrature for MATLAB</h2><p>There are several routines for Gaussian quadrature implemented using Matlab programming language. All of them suffer from low performance and even some of them provide low accuracy results.</p><p>To alleviate the situation I am developing quadrature toolbox which has Matlab interface (m-files) and delegates all the heavy lifting to high-performance MEX library written in C/C++ (see previous section). So far it includes only Gauss-Legendre rule with many others to come:</p><ul><li><a href="http://www.holoborodko.com/pavel/wp-content/plugins/download-monitor/download.php?id=19" title="Downloaded 8222 times">Gauss-Legendre Quadrature for Matlab.zip</a></li></ul><p>Quadrature toolbox consists of three files:</p><pre> GaussLegendre.m quadlab.mexw32 quadlab.mexw64 </pre><p>Toolbox was created and tested using Matlab R2010b, both on 32 and 64 bits versions. Usage example:</p><pre> >>GaussLegendre(@cos,-pi/2,pi/2,1024) ans = 2.000000000000000 </pre><p><code>GaussLegendre()</code> accepts Matlab function (inline or from m-file), integration boundaries <img src="http://www.holoborodko.com/pavel/wp-content/ql-cache/quicklatex.com-04a7ae4316dac1f509c1f414ab346c71_l3.png" class="ql-img-inline-formula quicklatex-auto-format" alt="[a,b]" title="Rendered by QuickLaTeX.com" height="20" width="36" style="vertical-align: -5px;"/>, order of quadrature (1024 in example) and desired precision for nodes as optional parameter. Also it returns vectors of abscissas and weights if such outputs are specified.</p><p>Performance comparison with the fastest Matlab-language routine (x-quadrature order, y-execution time, green-quadrature toolbox, red-competitor, lower is better):<br /> <img class="aligncenter" src="http://www.holoborodko.com/pavel/downloads/quadlab/quadlab2000.png"></p><p>Besides being fast library usually provides results with better accuracy thanks to pre-calculated high-precision abscissas and weights.</p><p>I am extending quadrature toolbox for Matlab with other rules and adaptive methods. I would really appreciate any feature suggestions and advices on what methods to include first.</p><p><a name="gauss_quadrature_abscissas_table"></a></p><h2> Abscissae and Weights of Gauss-Legendre Quadrature</h2><p>Table below lists Gauss-Legendre quadrature nodes for n=2,…, 20, 32, 64, 100 with the accuracy of 25 decimal digits. Data for higher order formulae n = 128, 256, 512, 1024 can be found in C/C++ library source code.</p><table class="gtable" style="text-align: center; font-size: 0.7em; margin-left:auto;margin-right:auto;" border="0" width="610" rules="groups" summary="High-precision Abscissae and Weights for Gaussian Quadrature of high order"><caption style="text-align: center; font-size: 1.1em;">High-precision Abscissae and Weights of Gaussian Quadrature.<br /> Correctly rounded to 25 decimal digits to the nearest.</caption><colgroup align="center" width="30"></colgroup><colgroup align="center" width="290"></colgroup><colgroup align="center" width="290"></colgroup><thead class="gtable.th"><tr><th><img src="http://www.holoborodko.com/pavel/wp-content/ql-cache/quicklatex.com-4ca6ee59faa667adf930956658f016e8_l3.png" class="ql-img-inline-formula quicklatex-auto-format" alt="n" title="Rendered by QuickLaTeX.com" height="9" width="12" style="vertical-align: 0px;"/></th><th>Abscissae <img src="http://www.holoborodko.com/pavel/wp-content/ql-cache/quicklatex.com-add15ca08c230d33c06760455bc5ccee_l3.png" class="ql-img-inline-formula quicklatex-auto-format" alt="\xi_i" title="Rendered by QuickLaTeX.com" height="19" width="14" style="vertical-align: -4px;"/></th><th>Weights <img src="http://www.holoborodko.com/pavel/wp-content/ql-cache/quicklatex.com-5ecbd9c943075c45a3a3a25016b0bef1_l3.png" class="ql-img-inline-formula quicklatex-auto-format" alt="w_i" title="Rendered by QuickLaTeX.com" height="12" width="19" style="vertical-align: -3px;"/></th></tr></thead><p></p><tbody><tr><td>2</td><td>±0.5773502691896257645091488</td><td>1.0000000000000000000000000</td></tr></tbody><p></p><tbody><tr><td rowspan="2">3</td><td>0</td><td>0.8888888888888888888888889</td></tr><tr><td>±0.7745966692414833770358531</td><td>0.5555555555555555555555556</td></tr></tbody><p></p><tbody><tr><td rowspan="2">4</td><td>±0.3399810435848562648026658</td><td>0.6521451548625461426269361</td></tr><tr><td>±0.8611363115940525752239465</td><td>0.3478548451374538573730639</td></tr></tbody><p></p><tbody><tr><td rowspan="3">5</td><td>0</td><td>0.5688888888888888888888889</td></tr><tr><td>±0.5384693101056830910363144</td><td>0.4786286704993664680412915</td></tr><tr><td>±0.9061798459386639927976269</td><td>0.2369268850561890875142640</td></tr></tbody><p></p><tbody><tr><td rowspan="3">6</td><td>±0.2386191860831969086305017</td><td>0.4679139345726910473898703</td></tr><tr><td>±0.6612093864662645136613996</td><td>0.3607615730481386075698335</td></tr><tr><td>±0.9324695142031520278123016</td><td>0.1713244923791703450402961</td></tr></tbody><p></p><tbody><tr><td rowspan="4">7</td><td>0</td><td>0.4179591836734693877551020</td></tr><tr><td>±0.4058451513773971669066064</td><td>0.3818300505051189449503698</td></tr><tr><td>±0.7415311855993944398638648</td><td>0.2797053914892766679014678</td></tr><tr><td>±0.9491079123427585245261897</td><td>0.1294849661688696932706114</td></tr></tbody><p></p><tbody><tr><td rowspan="4">8</td><td>±0.1834346424956498049394761</td><td>0.3626837833783619829651504</td></tr><tr><td>±0.5255324099163289858177390</td><td>0.3137066458778872873379622</td></tr><tr><td>±0.7966664774136267395915539</td><td>0.2223810344533744705443560</td></tr><tr><td>±0.9602898564975362316835609</td><td>0.1012285362903762591525314</td></tr></tbody><p></p><tbody><tr><td rowspan="5">9</td><td>0</td><td>0.3302393550012597631645251</td></tr><tr><td>±0.3242534234038089290385380</td><td>0.3123470770400028400686304</td></tr><tr><td>±0.6133714327005903973087020</td><td>0.2606106964029354623187429</td></tr><tr><td>±0.8360311073266357942994298</td><td>0.1806481606948574040584720</td></tr><tr><td>±0.9681602395076260898355762</td><td>0.0812743883615744119718922</td></tr></tbody><p></p><tbody><tr><td rowspan="5">10</td><td>±0.1488743389816312108848260</td><td>0.2955242247147528701738930</td></tr><tr><td>±0.4333953941292471907992659</td><td>0.2692667193099963550912269</td></tr><tr><td>±0.6794095682990244062343274</td><td>0.2190863625159820439955349</td></tr><tr><td>±0.8650633666889845107320967</td><td>0.1494513491505805931457763</td></tr><tr><td>±0.9739065285171717200779640</td><td>0.0666713443086881375935688</td></tr></tbody><p></p><tbody><tr><td rowspan="6">11</td><td>0</td><td>0.2729250867779006307144835</td></tr><tr><td>±0.2695431559523449723315320</td><td>0.2628045445102466621806889</td></tr><tr><td>±0.5190961292068118159257257</td><td>0.2331937645919904799185237</td></tr><tr><td>±0.7301520055740493240934163</td><td>0.1862902109277342514260976</td></tr><tr><td>±0.8870625997680952990751578</td><td>0.1255803694649046246346943</td></tr><tr><td>±0.9782286581460569928039380</td><td>0.0556685671161736664827537</td></tr></tbody><p></p><tbody><tr><td rowspan="6">12</td><td>±0.1252334085114689154724414</td><td>0.2491470458134027850005624</td></tr><tr><td>±0.3678314989981801937526915</td><td>0.2334925365383548087608499</td></tr><tr><td>±0.5873179542866174472967024</td><td>0.2031674267230659217490645</td></tr><tr><td>±0.7699026741943046870368938</td><td>0.1600783285433462263346525</td></tr><tr><td>±0.9041172563704748566784659</td><td>0.1069393259953184309602547</td></tr><tr><td>±0.9815606342467192506905491</td><td>0.0471753363865118271946160</td></tr></tbody><p></p><tbody><tr><td rowspan="7">13</td><td>0</td><td>0.2325515532308739101945895</td></tr><tr><td>±0.2304583159551347940655281</td><td>0.2262831802628972384120902</td></tr><tr><td>±0.4484927510364468528779129</td><td>0.2078160475368885023125232</td></tr><tr><td>±0.6423493394403402206439846</td><td>0.1781459807619457382800467</td></tr><tr><td>±0.8015780907333099127942065</td><td>0.1388735102197872384636018</td></tr><tr><td>±0.9175983992229779652065478</td><td>0.0921214998377284479144218</td></tr><tr><td>±0.9841830547185881494728294</td><td>0.0404840047653158795200216</td></tr></tbody><p></p><tbody><tr><td rowspan="7">14</td><td>±0.1080549487073436620662447</td><td>0.2152638534631577901958764</td></tr><tr><td>±0.3191123689278897604356718</td><td>0.2051984637212956039659241</td></tr><tr><td>±0.5152486363581540919652907</td><td>0.1855383974779378137417166</td></tr><tr><td>±0.6872929048116854701480198</td><td>0.1572031671581935345696019</td></tr><tr><td>±0.8272013150697649931897947</td><td>0.1215185706879031846894148</td></tr><tr><td>±0.9284348836635735173363911</td><td>0.0801580871597602098056333</td></tr><tr><td>±0.9862838086968123388415973</td><td>0.0351194603317518630318329</td></tr></tbody><p></p><tbody><tr><td rowspan="8">15</td><td>0</td><td>0.2025782419255612728806202</td></tr><tr><td>±0.2011940939974345223006283</td><td>0.1984314853271115764561183</td></tr><tr><td>±0.3941513470775633698972074</td><td>0.1861610000155622110268006</td></tr><tr><td>±0.5709721726085388475372267</td><td>0.1662692058169939335532009</td></tr><tr><td>±0.7244177313601700474161861</td><td>0.1395706779261543144478048</td></tr><tr><td>±0.8482065834104272162006483</td><td>0.1071592204671719350118695</td></tr><tr><td>±0.9372733924007059043077589</td><td>0.0703660474881081247092674</td></tr><tr><td>±0.9879925180204854284895657</td><td>0.0307532419961172683546284</td></tr></tbody><p></p><tbody><tr><td rowspan="8">16</td><td>±0.0950125098376374401853193</td><td>0.1894506104550684962853967</td></tr><tr><td>±0.2816035507792589132304605</td><td>0.1826034150449235888667637</td></tr><tr><td>±0.4580167776572273863424194</td><td>0.1691565193950025381893121</td></tr><tr><td>±0.6178762444026437484466718</td><td>0.1495959888165767320815017</td></tr><tr><td>±0.7554044083550030338951012</td><td>0.1246289712555338720524763</td></tr><tr><td>±0.8656312023878317438804679</td><td>0.0951585116824927848099251</td></tr><tr><td>±0.9445750230732325760779884</td><td>0.0622535239386478928628438</td></tr><tr><td>±0.9894009349916499325961542</td><td>0.0271524594117540948517806</td></tr></tbody><p></p><tbody><tr><td rowspan="9">17</td><td>0</td><td>0.1794464703562065254582656</td></tr><tr><td>±0.1784841814958478558506775</td><td>0.1765627053669926463252710</td></tr><tr><td>±0.3512317634538763152971855</td><td>0.1680041021564500445099707</td></tr><tr><td>±0.5126905370864769678862466</td><td>0.1540457610768102880814316</td></tr><tr><td>±0.6576711592166907658503022</td><td>0.1351363684685254732863200</td></tr><tr><td>±0.7815140038968014069252301</td><td>0.1118838471934039710947884</td></tr><tr><td>±0.8802391537269859021229557</td><td>0.0850361483171791808835354</td></tr><tr><td>±0.9506755217687677612227170</td><td>0.0554595293739872011294402</td></tr><tr><td>±0.9905754753144173356754340</td><td>0.0241483028685479319601100</td></tr></tbody><p></p><tbody><tr><td rowspan="9">18</td><td>±0.0847750130417353012422619</td><td>0.1691423829631435918406565</td></tr><tr><td>±0.2518862256915055095889729</td><td>0.1642764837458327229860538</td></tr><tr><td>±0.4117511614628426460359318</td><td>0.1546846751262652449254180</td></tr><tr><td>±0.5597708310739475346078715</td><td>0.1406429146706506512047313</td></tr><tr><td>±0.6916870430603532078748911</td><td>0.1225552067114784601845191</td></tr><tr><td>±0.8037049589725231156824175</td><td>0.1009420441062871655628140</td></tr><tr><td>±0.8926024664975557392060606</td><td>0.0764257302548890565291297</td></tr><tr><td>±0.9558239495713977551811959</td><td>0.0497145488949697964533349</td></tr><tr><td>±0.9915651684209309467300160</td><td>0.0216160135264833103133427</td></tr></tbody><p></p><tbody><tr><td rowspan="10">19</td><td>0</td><td>0.1610544498487836959791636</td></tr><tr><td>±0.1603586456402253758680961</td><td>0.1589688433939543476499564</td></tr><tr><td>±0.3165640999636298319901173</td><td>0.1527660420658596667788554</td></tr><tr><td>±0.4645707413759609457172671</td><td>0.1426067021736066117757461</td></tr><tr><td>±0.6005453046616810234696382</td><td>0.1287539625393362276755158</td></tr><tr><td>±0.7209661773352293786170959</td><td>0.1115666455473339947160239</td></tr><tr><td>±0.8227146565371428249789225</td><td>0.0914900216224499994644621</td></tr><tr><td>±0.9031559036148179016426609</td><td>0.0690445427376412265807083</td></tr><tr><td>±0.9602081521348300308527788</td><td>0.0448142267656996003328382</td></tr><tr><td>±0.9924068438435844031890177</td><td>0.0194617882297264770363120</td></tr></tbody><p></p><tbody><tr><td rowspan="10">20</td><td>±0.0765265211334973337546404</td><td>0.1527533871307258506980843</td></tr><tr><td>±0.2277858511416450780804962</td><td>0.1491729864726037467878287</td></tr><tr><td>±0.3737060887154195606725482</td><td>0.1420961093183820513292983</td></tr><tr><td>±0.5108670019508270980043641</td><td>0.1316886384491766268984945</td></tr><tr><td>±0.6360536807265150254528367</td><td>0.1181945319615184173123774</td></tr><tr><td>±0.7463319064601507926143051</td><td>0.1019301198172404350367501</td></tr><tr><td>±0.8391169718222188233945291</td><td>0.0832767415767047487247581</td></tr><tr><td>±0.9122344282513259058677524</td><td>0.0626720483341090635695065</td></tr><tr><td>±0.9639719272779137912676661</td><td>0.0406014298003869413310400</td></tr><tr><td>±0.9931285991850949247861224</td><td>0.0176140071391521183118620</td></tr></tbody><p></p><tbody><tr><td rowspan="16">32</td><td>±0.0483076656877383162348126</td><td>0.0965400885147278005667648</td></tr><tr><td>±0.1444719615827964934851864</td><td>0.0956387200792748594190820</td></tr><tr><td>±0.2392873622521370745446032</td><td>0.0938443990808045656391802</td></tr><tr><td>±0.3318686022821276497799168</td><td>0.0911738786957638847128686</td></tr><tr><td>±0.4213512761306353453641194</td><td>0.0876520930044038111427715</td></tr><tr><td>±0.5068999089322293900237475</td><td>0.0833119242269467552221991</td></tr><tr><td>±0.5877157572407623290407455</td><td>0.0781938957870703064717409</td></tr><tr><td>±0.6630442669302152009751152</td><td>0.0723457941088485062253994</td></tr><tr><td>±0.7321821187402896803874267</td><td>0.0658222227763618468376501</td></tr><tr><td>±0.7944837959679424069630973</td><td>0.0586840934785355471452836</td></tr><tr><td>±0.8493676137325699701336930</td><td>0.0509980592623761761961632</td></tr><tr><td>±0.8963211557660521239653072</td><td>0.0428358980222266806568786</td></tr><tr><td>±0.9349060759377396891709191</td><td>0.0342738629130214331026877</td></tr><tr><td>±0.9647622555875064307738119</td><td>0.0253920653092620594557526</td></tr><tr><td>±0.9856115115452683354001750</td><td>0.0162743947309056706051706</td></tr><tr><td>±0.9972638618494815635449811</td><td>0.0070186100094700966004071</td></tr></tbody><p></p><tbody><tr><td rowspan="32">64</td><td>±0.0243502926634244325089558</td><td>0.0486909570091397203833654</td></tr><tr><td>±0.0729931217877990394495429</td><td>0.0485754674415034269347991</td></tr><tr><td>±0.1214628192961205544703765</td><td>0.0483447622348029571697695</td></tr><tr><td>±0.1696444204239928180373136</td><td>0.0479993885964583077281262</td></tr><tr><td>±0.2174236437400070841496487</td><td>0.0475401657148303086622822</td></tr><tr><td>±0.2646871622087674163739642</td><td>0.0469681828162100173253263</td></tr><tr><td>±0.3113228719902109561575127</td><td>0.0462847965813144172959532</td></tr><tr><td>±0.3572201583376681159504426</td><td>0.0454916279274181444797710</td></tr><tr><td>±0.4022701579639916036957668</td><td>0.0445905581637565630601347</td></tr><tr><td>±0.4463660172534640879849477</td><td>0.0435837245293234533768279</td></tr><tr><td>±0.4894031457070529574785263</td><td>0.0424735151236535890073398</td></tr><tr><td>±0.5312794640198945456580139</td><td>0.0412625632426235286101563</td></tr><tr><td>±0.5718956462026340342838781</td><td>0.0399537411327203413866569</td></tr><tr><td>±0.6111553551723932502488530</td><td>0.0385501531786156291289625</td></tr><tr><td>±0.6489654712546573398577612</td><td>0.0370551285402400460404151</td></tr><tr><td>±0.6852363130542332425635584</td><td>0.0354722132568823838106931</td></tr><tr><td>±0.7198818501716108268489402</td><td>0.0338051618371416093915655</td></tr><tr><td>±0.7528199072605318966118638</td><td>0.0320579283548515535854675</td></tr><tr><td>±0.7839723589433414076102205</td><td>0.0302346570724024788679741</td></tr><tr><td>±0.8132653151227975597419233</td><td>0.0283396726142594832275113</td></tr><tr><td>±0.8406292962525803627516915</td><td>0.0263774697150546586716918</td></tr><tr><td>±0.8659993981540928197607834</td><td>0.0243527025687108733381776</td></tr><tr><td>±0.8893154459951141058534040</td><td>0.0222701738083832541592983</td></tr><tr><td>±0.9105221370785028057563807</td><td>0.0201348231535302093723403</td></tr><tr><td>±0.9295691721319395758214902</td><td>0.0179517157756973430850453</td></tr><tr><td>±0.9464113748584028160624815</td><td>0.0157260304760247193219660</td></tr><tr><td>±0.9610087996520537189186141</td><td>0.0134630478967186425980608</td></tr><tr><td>±0.9733268277899109637418535</td><td>0.0111681394601311288185905</td></tr><tr><td>±0.9833362538846259569312993</td><td>0.0088467598263639477230309</td></tr><tr><td>±0.9910133714767443207393824</td><td>0.0065044579689783628561174</td></tr><tr><td>±0.9963401167719552793469245</td><td>0.0041470332605624676352875</td></tr><tr><td>±0.9993050417357721394569056</td><td>0.0017832807216964329472961</td></tr></tbody><p></p><tbody><tr><td rowspan="50">100</td><td>±0.0156289844215430828722167</td><td>0.0312554234538633569476425</td></tr><tr><td>±0.0468716824215916316149239</td><td>0.0312248842548493577323765</td></tr><tr><td>±0.0780685828134366366948174</td><td>0.0311638356962099067838183</td></tr><tr><td>±0.1091892035800611150034260</td><td>0.0310723374275665165878102</td></tr><tr><td>±0.1402031372361139732075146</td><td>0.0309504788504909882340635</td></tr><tr><td>±0.1710800805386032748875324</td><td>0.0307983790311525904277139</td></tr><tr><td>±0.2017898640957359972360489</td><td>0.0306161865839804484964594</td></tr><tr><td>±0.2323024818449739696495100</td><td>0.0304040795264548200165079</td></tr><tr><td>±0.2625881203715034791689293</td><td>0.0301622651051691449190687</td></tr><tr><td>±0.2926171880384719647375559</td><td>0.0298909795933328309168368</td></tr><tr><td>±0.3223603439005291517224766</td><td>0.0295904880599126425117545</td></tr><tr><td>±0.3517885263724217209723438</td><td>0.0292610841106382766201190</td></tr><tr><td>±0.3808729816246299567633625</td><td>0.0289030896011252031348762</td></tr><tr><td>±0.4095852916783015425288684</td><td>0.0285168543223950979909368</td></tr><tr><td>±0.4378974021720315131089780</td><td>0.0281027556591011733176483</td></tr><tr><td>±0.4657816497733580422492166</td><td>0.0276611982207923882942042</td></tr><tr><td>±0.4932107892081909335693088</td><td>0.0271926134465768801364916</td></tr><tr><td>±0.5201580198817630566468157</td><td>0.0266974591835709626603847</td></tr><tr><td>±0.5465970120650941674679943</td><td>0.0261762192395456763423087</td></tr><tr><td>±0.5725019326213811913168704</td><td>0.0256294029102081160756420</td></tr><tr><td>±0.5978474702471787212648065</td><td>0.0250575444815795897037642</td></tr><tr><td>±0.6226088602037077716041908</td><td>0.0244612027079570527199750</td></tr><tr><td>±0.6467619085141292798326303</td><td>0.0238409602659682059625604</td></tr><tr><td>±0.6702830156031410158025870</td><td>0.0231974231852541216224889</td></tr><tr><td>±0.6931491993558019659486479</td><td>0.0225312202563362727017970</td></tr><tr><td>±0.7153381175730564464599671</td><td>0.0218430024162473863139537</td></tr><tr><td>±0.7368280898020207055124277</td><td>0.0211334421125276415426723</td></tr><tr><td>±0.7575981185197071760356680</td><td>0.0204032326462094327668389</td></tr><tr><td>±0.7776279096494954756275514</td><td>0.0196530874944353058653815</td></tr><tr><td>±0.7968978923903144763895729</td><td>0.0188837396133749045529412</td></tr><tr><td>±0.8153892383391762543939888</td><td>0.0180959407221281166643908</td></tr><tr><td>±0.8330838798884008235429158</td><td>0.0172904605683235824393442</td></tr><tr><td>±0.8499645278795912842933626</td><td>0.0164680861761452126431050</td></tr><tr><td>±0.8660146884971646234107400</td><td>0.0156296210775460027239369</td></tr><tr><td>±0.8812186793850184155733168</td><td>0.0147758845274413017688800</td></tr><tr><td>±0.8955616449707269866985210</td><td>0.0139077107037187726879541</td></tr><tr><td>±0.9090295709825296904671263</td><td>0.0130259478929715422855586</td></tr><tr><td>±0.9216092981453339526669513</td><td>0.0121314576629794974077448</td></tr><tr><td>±0.9332885350430795459243337</td><td>0.0112251140231859771172216</td></tr><tr><td>±0.9440558701362559779627747</td><td>0.0103078025748689695857821</td></tr><tr><td>±0.9539007829254917428493369</td><td>0.0093804196536944579514182</td></tr><tr><td>±0.9628136542558155272936593</td><td>0.0084438714696689714026208</td></tr><tr><td>±0.9707857757637063319308979</td><td>0.0074990732554647115788287</td></tr><tr><td>±0.9778093584869182885537811</td><td>0.0065469484508453227641521</td></tr><tr><td>±0.9838775407060570154961002</td><td>0.0055884280038655151572119</td></tr><tr><td>±0.9889843952429917480044187</td><td>0.0046244500634221193510958</td></tr><tr><td>±0.9931249370374434596520099</td><td>0.0036559612013263751823425</td></tr><tr><td>±0.9962951347331251491861317</td><td>0.0026839253715534824194396</td></tr><tr><td>±0.9984919506395958184001634</td><td>0.0017093926535181052395294</td></tr><tr><td>±0.9997137267734412336782285</td><td>0.0007346344905056717304063</td></tr></tbody></table><div> <br> <span style="float: left;"><div id="post-ratings-679" class="post-ratings" itemscope itemtype="http://schema.org/Article" data-nonce="17d2a82cd1"><img id="rating_679_1" src="http://www.holoborodko.com/pavel/wp-content/plugins/wp-postratings/images/stars_crystal/rating_on.gif" alt="1 Star" title="1 Star" onmouseover="current_rating(679, 1, '1 Star');" onmouseout="ratings_off(5, 0, 0);" onclick="rate_post();" onkeypress="rate_post();" style="cursor: pointer; border: 0px;" /><img id="rating_679_2" src="http://www.holoborodko.com/pavel/wp-content/plugins/wp-postratings/images/stars_crystal/rating_on.gif" alt="2 Stars" title="2 Stars" onmouseover="current_rating(679, 2, '2 Stars');" onmouseout="ratings_off(5, 0, 0);" onclick="rate_post();" onkeypress="rate_post();" style="cursor: pointer; border: 0px;" /><img id="rating_679_3" src="http://www.holoborodko.com/pavel/wp-content/plugins/wp-postratings/images/stars_crystal/rating_on.gif" alt="3 Stars" title="3 Stars" onmouseover="current_rating(679, 3, '3 Stars');" onmouseout="ratings_off(5, 0, 0);" onclick="rate_post();" onkeypress="rate_post();" style="cursor: pointer; border: 0px;" /><img id="rating_679_4" src="http://www.holoborodko.com/pavel/wp-content/plugins/wp-postratings/images/stars_crystal/rating_on.gif" alt="4 Stars" title="4 Stars" onmouseover="current_rating(679, 4, '4 Stars');" onmouseout="ratings_off(5, 0, 0);" onclick="rate_post();" onkeypress="rate_post();" style="cursor: pointer; border: 0px;" /><img id="rating_679_5" src="http://www.holoborodko.com/pavel/wp-content/plugins/wp-postratings/images/stars_crystal/rating_on.gif" alt="5 Stars" title="5 Stars" onmouseover="current_rating(679, 5, '5 Stars');" onmouseout="ratings_off(5, 0, 0);" onclick="rate_post();" onkeypress="rate_post();" style="cursor: pointer; border: 0px;" /> (<strong>21</strong> votes, average: <strong>5.00</strong>)<br /><span class="post-ratings-text" id="ratings_679_text"></span><meta itemprop="name" content="Numerical Integration" /><meta itemprop="headline" content="Numerical Integration" /><meta itemprop="description" content="One of the most widely used methods of numerical integration is Gauss-Legendre quadrature. It posses very attractive property of to be exact on polynomials of degree up to $2n-1$, while using only $n$..." /><meta itemprop="datePublished" content="2008-10-29T17:46:18+09:00" /><meta itemprop="dateModified" content="2014-04-09T13:18:23+09:00" /><meta itemprop="url" content="http://www.holoborodko.com/pavel/numerical-methods/numerical-integration/" /><meta itemprop="author" content="Pavel Holoborodko" /><meta itemprop="mainEntityOfPage" content="http://www.holoborodko.com/pavel/numerical-methods/numerical-integration/" /><div style="display: none;" itemprop="publisher" itemscope itemtype="https://schema.org/Organization"><meta itemprop="name" content="Pavel Holoborodko" /><meta itemprop="url" content="http://www.holoborodko.com/pavel" /><div itemprop="logo" itemscope itemtype="https://schema.org/ImageObject"><meta itemprop="url" content="" /></div></div><div style="display: none;" itemprop="aggregateRating" itemscope itemtype="http://schema.org/AggregateRating"><meta itemprop="bestRating" content="5" /><meta itemprop="worstRating" content="1" /><meta itemprop="ratingValue" content="5" /><meta itemprop="ratingCount" content="21" /></div></div><div id="post-ratings-679-loading" class="post-ratings-loading"><img src="http://www.holoborodko.com/pavel/wp-content/plugins/wp-postratings/images/loading.gif" width="16" height="16" class="post-ratings-image" />Loading...</div> </span> <span style="float: right;"> </span></div></div></div><div id="comments"><div id="comments-list" class="comments"><h3><span>46</span> Comments</h3><ol><li id="comment-5977" class="comment c c-y2011 c-m06 c-d18 c-h03 alt depth-1"><div class="comment-author vcard"> <span class="fn n">Ben</span></div><div class="comment-meta">Posted June 17, 2011 at 6:47 pm <span class="meta-sep">|</span> <a href="#comment-5977" title="Permalink to this comment"><strong>#</strong></a></div><div class="comment-content"><p>It’s worth looking at eigenvalue methods to calculate the nodes and weights. Basically the 3 term polynomial recurrence relation allows the roots to be expressed as eigenvalues of a tridiagonal matrix; with appropriate rescaling the matrix is transformed to symmetric tridiagonal and hence the roots can be determined to arbitrary precision e.g. with your MPFR library. Similarly the weights can be expressed in terms of the eigenvectors.</p></div><div class="comment-reply-link"><a rel='nofollow' class='comment-reply-link' href='http://www.holoborodko.com/pavel/numerical-methods/numerical-integration/?replytocom=5977#respond' data-commentid="5977" data-postid="679" data-belowelement="comment-5977" data-respondelement="respond" aria-label='Reply to Ben'>Reply</a></div><ul class="children"><li id="comment-5978" class="comment c1 byuser comment-author-admin bypostauthor c-y2011 c-m06 c-d18 c-h21 depth-2"><div class="comment-author vcard"> <span class="fn n"><a href="http://www.holoborodko.com/pavel/" rel='external nofollow ugc' class='url url'>Pavel Holoborodko</a></span></div><div class="comment-meta">Posted June 18, 2011 at 12:59 pm <span class="meta-sep">|</span> <a href="#comment-5978" title="Permalink to this comment"><strong>#</strong></a></div><div class="comment-content"><p>Derivation of quadrature nodes using eigenvalues/vectors of Jacobi matrix is universal approach.</p><p>Although it is very powerful I find it inefficient for particular well studied case – Gauss-Legendre quadrature.<br /> We have nice analytic formula for close approximation of Legendre polynomial roots. Starting from there Newton iterations converge to “real” root very quickly with any desired precision. I think even Golub-Welsch eigen solver optimized for symmetric 3-diagonal matrices cannot beat that.</p><p>P.S.<br /> BTW I’ve used eigen method to derive quadrature for less-known weight function <img src="http://www.holoborodko.com/pavel/wp-content/ql-cache/quicklatex.com-2cad25420954e11f43b7123018b605aa_l3.png" class="ql-img-inline-formula quicklatex-auto-format" alt="\omega(x)=|x|" title="Rendered by QuickLaTeX.com" height="19" width="82" style="vertical-align: -5px;"/> here: <a href="http://www.holoborodko.com/pavel/numerical-methods/numerical-integration/cubature-formulas-for-the-unit-disk/" rel="nofollow">Cubature formulas for the unit disk</a>.</p><p>P.P.S.<br /> Thanks for reading pages on my site ;-).</p></div><div class="comment-reply-link"><a rel='nofollow' class='comment-reply-link' href='http://www.holoborodko.com/pavel/numerical-methods/numerical-integration/?replytocom=5978#respond' data-commentid="5978" data-postid="679" data-belowelement="comment-5978" data-respondelement="respond" aria-label='Reply to Pavel Holoborodko'>Reply</a></div></li></ul></li><li id="comment-6007" class="comment c2 c-y2011 c-m07 c-d15 c-h01 alt depth-1"><div class="comment-author vcard"> <span class="fn n">Gowri Priya</span></div><div class="comment-meta">Posted July 14, 2011 at 4:36 pm <span class="meta-sep">|</span> <a href="#comment-6007" title="Permalink to this comment"><strong>#</strong></a></div><div class="comment-content"><p>Thank u very much for giving useful information</p></div><div class="comment-reply-link"><a rel='nofollow' class='comment-reply-link' href='http://www.holoborodko.com/pavel/numerical-methods/numerical-integration/?replytocom=6007#respond' data-commentid="6007" data-postid="679" data-belowelement="comment-6007" data-respondelement="respond" aria-label='Reply to Gowri Priya'>Reply</a></div></li><li id="comment-6175" class="comment c3 c-y2011 c-m08 c-d05 c-h07 depth-1"><div class="comment-author vcard"> <span class="fn n">vladan</span></div><div class="comment-meta">Posted August 4, 2011 at 10:12 pm <span class="meta-sep">|</span> <a href="#comment-6175" title="Permalink to this comment"><strong>#</strong></a></div><div class="comment-content"><p>Do you know where I can find “Abscissae and Weights of Gauss-Legendre Quadrature” for “Associated Legendre”?</p></div><div class="comment-reply-link"><a rel='nofollow' class='comment-reply-link' href='http://www.holoborodko.com/pavel/numerical-methods/numerical-integration/?replytocom=6175#respond' data-commentid="6175" data-postid="679" data-belowelement="comment-6175" data-respondelement="respond" aria-label='Reply to vladan'>Reply</a></div><ul class="children"><li id="comment-6185" class="comment c4 byuser comment-author-admin bypostauthor c-y2011 c-m08 c-d05 c-h18 alt depth-2"><div class="comment-author vcard"> <span class="fn n"><a href="http://www.holoborodko.com/pavel/" rel='external nofollow ugc' class='url url'>Pavel Holoborodko</a></span></div><div class="comment-meta">Posted August 5, 2011 at 9:27 am <span class="meta-sep">|</span> <a href="#comment-6185" title="Permalink to this comment"><strong>#</strong></a></div><div class="comment-content"><p>Do you mean quadrature based on “Associated Legendre” polynomials? I don’t know this kind of quadrature.<br /> Could you be more specific – what task do you solve ?</p></div><div class="comment-reply-link"><a rel='nofollow' class='comment-reply-link' href='http://www.holoborodko.com/pavel/numerical-methods/numerical-integration/?replytocom=6185#respond' data-commentid="6185" data-postid="679" data-belowelement="comment-6185" data-respondelement="respond" aria-label='Reply to Pavel Holoborodko'>Reply</a></div></li></ul></li><li id="comment-6611" class="comment c5 c-y2011 c-m10 c-d13 c-h07 depth-1"><div class="comment-author vcard"> <span class="fn n">ankit</span></div><div class="comment-meta">Posted October 12, 2011 at 10:33 pm <span class="meta-sep">|</span> <a href="#comment-6611" title="Permalink to this comment"><strong>#</strong></a></div><div class="comment-content"><p>excellent work….helped me alot..</p></div><div class="comment-reply-link"><a rel='nofollow' class='comment-reply-link' href='http://www.holoborodko.com/pavel/numerical-methods/numerical-integration/?replytocom=6611#respond' data-commentid="6611" data-postid="679" data-belowelement="comment-6611" data-respondelement="respond" aria-label='Reply to ankit'>Reply</a></div></li><li id="comment-6632" class="comment c6 c-y2011 c-m10 c-d25 c-h02 alt depth-1"><div class="comment-author vcard"> <span class="fn n"><a href="http://www.edkiks.com" onclick="javascript:_gaq.push(['_trackEvent','outbound-commentauthor','http://www.edkiks.com']);" rel='external nofollow ugc' class='url url'>edu</a></span></div><div class="comment-meta">Posted October 24, 2011 at 5:38 pm <span class="meta-sep">|</span> <a href="#comment-6632" title="Permalink to this comment"><strong>#</strong></a></div><div class="comment-content"><p>show the difference between langrange polynomial and newton interpolating polynomial</p></div><div class="comment-reply-link"><a rel='nofollow' class='comment-reply-link' href='http://www.holoborodko.com/pavel/numerical-methods/numerical-integration/?replytocom=6632#respond' data-commentid="6632" data-postid="679" data-belowelement="comment-6632" data-respondelement="respond" aria-label='Reply to edu'>Reply</a></div></li><li id="comment-6685" class="comment c7 c-y2011 c-m11 c-d16 c-h02 depth-1"><div class="comment-author vcard"> <span class="fn n">Sergey</span></div><div class="comment-meta">Posted November 15, 2011 at 5:26 pm <span class="meta-sep">|</span> <a href="#comment-6685" title="Permalink to this comment"><strong>#</strong></a></div><div class="comment-content"><p>Brilliant job!!! Thank you</p></div><div class="comment-reply-link"><a rel='nofollow' class='comment-reply-link' href='http://www.holoborodko.com/pavel/numerical-methods/numerical-integration/?replytocom=6685#respond' data-commentid="6685" data-postid="679" data-belowelement="comment-6685" data-respondelement="respond" aria-label='Reply to Sergey'>Reply</a></div></li><li id="comment-6824" class="comment c8 c-y2012 c-m01 c-d14 c-h09 alt depth-1"><div class="comment-author vcard"> <span class="fn n">Ali</span></div><div class="comment-meta">Posted January 14, 2012 at 12:35 am <span class="meta-sep">|</span> <a href="#comment-6824" title="Permalink to this comment"><strong>#</strong></a></div><div class="comment-content"><p>nice job,but I really wants to know how to use it for double integration,if some how it’s doable please let me know?</p></div><div class="comment-reply-link"><a rel='nofollow' class='comment-reply-link' href='http://www.holoborodko.com/pavel/numerical-methods/numerical-integration/?replytocom=6824#respond' data-commentid="6824" data-postid="679" data-belowelement="comment-6824" data-respondelement="respond" aria-label='Reply to Ali'>Reply</a></div></li><li id="comment-6839" class="comment c9 c-y2012 c-m01 c-d18 c-h00 depth-1"><div class="comment-author vcard"> <span class="fn n">Stephen</span></div><div class="comment-meta">Posted January 17, 2012 at 3:32 pm <span class="meta-sep">|</span> <a href="#comment-6839" title="Permalink to this comment"><strong>#</strong></a></div><div class="comment-content"><p>I came across your site while searching for Gauss-Laguerre quadrature. Do you plan to include this in your toolbox? I am currently using the eigen method, but I expect Newton’s method with the initial approximations from Stroud and Secrest would be faster.</p></div><div class="comment-reply-link"><a rel='nofollow' class='comment-reply-link' href='http://www.holoborodko.com/pavel/numerical-methods/numerical-integration/?replytocom=6839#respond' data-commentid="6839" data-postid="679" data-belowelement="comment-6839" data-respondelement="respond" aria-label='Reply to Stephen'>Reply</a></div><ul class="children"><li id="comment-6840" class="comment c10 byuser comment-author-admin bypostauthor c-y2012 c-m01 c-d18 c-h01 alt depth-2"><div class="comment-author vcard"> <span class="fn n"><a href="http://www.holoborodko.com/pavel/" rel='external nofollow ugc' class='url url'>Pavel Holoborodko</a></span></div><div class="comment-meta">Posted January 17, 2012 at 4:47 pm <span class="meta-sep">|</span> <a href="#comment-6840" title="Permalink to this comment"><strong>#</strong></a></div><div class="comment-content"><p>I completely agree with you, direct root search with good starting point is much faster than eigen-solving Jacobi matrix.</p><p>I have plans to cover all commonly used quadrature, plus to port QuadPack adaptive integration rules to Matlab. I will release them as a part of <a href="http://www.advanpix.com/" onclick="javascript:_gaq.push(['_trackEvent','outbound-comment','http://www.advanpix.com/']);" rel="nofollow">Multiprecision Computing Toolbox for MATLAB</a>.</p><p>It already has Gauss-Legendre and <a href="http://www.advanpix.com/2011/11/07/gauss-kronrod-quadrature-nodes-weights/" onclick="javascript:_gaq.push(['_trackEvent','outbound-comment','http://www.advanpix.com/2011/11/07/gauss-kronrod-quadrature-nodes-weights/']);" rel="nofollow">Gauss-Kronrod rules</a> which is the most important for practical applications since it allows re-use of lower order quadrature nodes in higher order rules. Thus saving on function evaluations.</p></div><div class="comment-reply-link"><a rel='nofollow' class='comment-reply-link' href='http://www.holoborodko.com/pavel/numerical-methods/numerical-integration/?replytocom=6840#respond' data-commentid="6840" data-postid="679" data-belowelement="comment-6840" data-respondelement="respond" aria-label='Reply to Pavel Holoborodko'>Reply</a></div></li></ul></li><li id="comment-6890" class="comment c11 c-y2012 c-m02 c-d17 c-h11 depth-1"><div class="comment-author vcard"> <span class="fn n">Pablo</span></div><div class="comment-meta">Posted February 17, 2012 at 2:37 am <span class="meta-sep">|</span> <a href="#comment-6890" title="Permalink to this comment"><strong>#</strong></a></div><div class="comment-content"><p>Hi Pavel!</p><p>First of all congrats for your excellent job.</p><p>I’m currently using your code to integrate the elements of the stiffness matrix in a solver for Poisson Eq using weak form of Finite Elements Method.</p><p>The point is that the code works well when I try to evaluate numerically the integral of a function in ‘x’, but I don’t manage to integrate a constant (i.e. imagine we want to do gausslegendre(@(x) 1,-1,1). The result of this operation is, as far as I’m concerned, random.</p><p>I could neither do this with the original version of quad.m, but after performing some changes to the code now I’m able to do it with a modified ver called myquad.m</p><p>Could it be possible to perform the integration of a constant using your code?</p><p>Many thanks and congrats again for your work!</p><p>Best regards from El Salvador</p><p>Pablo</p></div><div class="comment-reply-link"><a rel='nofollow' class='comment-reply-link' href='http://www.holoborodko.com/pavel/numerical-methods/numerical-integration/?replytocom=6890#respond' data-commentid="6890" data-postid="679" data-belowelement="comment-6890" data-respondelement="respond" aria-label='Reply to Pablo'>Reply</a></div></li><li id="comment-6905" class="comment c12 c-y2012 c-m02 c-d29 c-h03 alt depth-1"><div class="comment-author vcard"> <span class="fn n"><a href="http://balajimitplane.wordpress.com" onclick="javascript:_gaq.push(['_trackEvent','outbound-commentauthor','http://balajimitplane.wordpress.com']);" rel='external nofollow ugc' class='url url'>Balaji Sankar</a></span></div><div class="comment-meta">Posted February 28, 2012 at 6:47 pm <span class="meta-sep">|</span> <a href="#comment-6905" title="Permalink to this comment"><strong>#</strong></a></div><div class="comment-content"><p>Hi Pavel,</p><p>I am looking for a way to get forces from pressure distribution on a plate and this looks like exactly what i need.</p><p>Many Thanks,</p><p>Balaji Sankar.</p></div><div class="comment-reply-link"><a rel='nofollow' class='comment-reply-link' href='http://www.holoborodko.com/pavel/numerical-methods/numerical-integration/?replytocom=6905#respond' data-commentid="6905" data-postid="679" data-belowelement="comment-6905" data-respondelement="respond" aria-label='Reply to Balaji Sankar'>Reply</a></div></li><li id="comment-7308" class="comment c13 c-y2012 c-m10 c-d26 c-h12 depth-1"><div class="comment-author vcard"> <span class="fn n">isen1988</span></div><div class="comment-meta">Posted October 26, 2012 at 3:18 am <span class="meta-sep">|</span> <a href="#comment-7308" title="Permalink to this comment"><strong>#</strong></a></div><div class="comment-content"><p>Thank god! I find you!My project takes much time doing integration. So, I want to write a integration mex file to minus time,<br /> But I just can’t find out a way to pass in the function pointer to the mex file. That has really puzzled me a lot. How do you solve this ?</p></div><div class="comment-reply-link"><a rel='nofollow' class='comment-reply-link' href='http://www.holoborodko.com/pavel/numerical-methods/numerical-integration/?replytocom=7308#respond' data-commentid="7308" data-postid="679" data-belowelement="comment-7308" data-respondelement="respond" aria-label='Reply to isen1988'>Reply</a></div></li><li id="comment-7418" class="comment c14 c-y2012 c-m11 c-d30 c-h09 alt depth-1"><div class="comment-author vcard"> <span class="fn n">Grunde Waag</span></div><div class="comment-meta">Posted November 30, 2012 at 12:22 am <span class="meta-sep">|</span> <a href="#comment-7418" title="Permalink to this comment"><strong>#</strong></a></div><div class="comment-content"><p>Hi,<br /> Nice pages.</p><p>I’m integrating some very spiky functions. They are almost zero most of the time and contains one or more spikes. What is the best scheme to use for such a situation? With the trapezoidal rule I have to sample very dense for the integration to converge. Higher order schemes doesn’t seem to improve the situation. Any advice?</p></div><div class="comment-reply-link"><a rel='nofollow' class='comment-reply-link' href='http://www.holoborodko.com/pavel/numerical-methods/numerical-integration/?replytocom=7418#respond' data-commentid="7418" data-postid="679" data-belowelement="comment-7418" data-respondelement="respond" aria-label='Reply to Grunde Waag'>Reply</a></div><ul class="children"><li id="comment-7426" class="comment c15 byuser comment-author-admin bypostauthor c-y2012 c-m11 c-d30 c-h20 depth-2"><div class="comment-author vcard"> <span class="fn n"><a href="http://www.holoborodko.com/pavel/" rel='external nofollow ugc' class='url url'>Pavel Holoborodko</a></span></div><div class="comment-meta">Posted November 30, 2012 at 11:49 am <span class="meta-sep">|</span> <a href="#comment-7426" title="Permalink to this comment"><strong>#</strong></a></div><div class="comment-content"><p>You could try adaptive integration methods based on Gauss-Kronrod rules – it will isolate “bad” regions and sample it with finer grid.<br /> Or look up methods for integrating “oscillatory functions”.</p></div><div class="comment-reply-link"><a rel='nofollow' class='comment-reply-link' href='http://www.holoborodko.com/pavel/numerical-methods/numerical-integration/?replytocom=7426#respond' data-commentid="7426" data-postid="679" data-belowelement="comment-7426" data-respondelement="respond" aria-label='Reply to Pavel Holoborodko'>Reply</a></div></li></ul></li><li id="comment-7463" class="comment c16 c-y2012 c-m12 c-d06 c-h07 alt depth-1"><div class="comment-author vcard"> <span class="fn n">Amao</span></div><div class="comment-meta">Posted December 5, 2012 at 10:26 pm <span class="meta-sep">|</span> <a href="#comment-7463" title="Permalink to this comment"><strong>#</strong></a></div><div class="comment-content"><p>Hi Pavel,</p><p>many thanks for the ultrafast code. However, i found the matlab code can not treat complex function. Do you have a solution to it? Thanks in advance.</p><p>Amao</p></div><div class="comment-reply-link"><a rel='nofollow' class='comment-reply-link' href='http://www.holoborodko.com/pavel/numerical-methods/numerical-integration/?replytocom=7463#respond' data-commentid="7463" data-postid="679" data-belowelement="comment-7463" data-respondelement="respond" aria-label='Reply to Amao'>Reply</a></div><ul class="children"><li id="comment-7465" class="comment c17 byuser comment-author-admin bypostauthor c-y2012 c-m12 c-d06 c-h22 depth-2"><div class="comment-author vcard"> <span class="fn n"><a href="http://www.holoborodko.com/pavel/" rel='external nofollow ugc' class='url url'>Pavel Holoborodko</a></span></div><div class="comment-meta">Posted December 6, 2012 at 1:34 pm <span class="meta-sep">|</span> <a href="#comment-7465" title="Permalink to this comment"><strong>#</strong></a></div><div class="comment-content"><p>Hi, you can re-formulate integration of complex function in real domain.</p></div><div class="comment-reply-link"><a rel='nofollow' class='comment-reply-link' href='http://www.holoborodko.com/pavel/numerical-methods/numerical-integration/?replytocom=7465#respond' data-commentid="7465" data-postid="679" data-belowelement="comment-7465" data-respondelement="respond" aria-label='Reply to Pavel Holoborodko'>Reply</a></div></li></ul></li><li id="comment-7722" class="comment c18 c-y2013 c-m01 c-d10 c-h18 alt depth-1"><div class="comment-author vcard"> <span class="fn n">Tejas</span></div><div class="comment-meta">Posted January 10, 2013 at 9:33 am <span class="meta-sep">|</span> <a href="#comment-7722" title="Permalink to this comment"><strong>#</strong></a></div><div class="comment-content"><p>Hey,</p><p>thanks for the neat explanation of the Gauss-Legendre quadrature rule!<br /> I have 2 questions for you and would really appreciate if you could help in any way</p><p>1) Say we have two functions f(x) and h(x) defined over the same interval (a,b) and we wish to integrate the product f(x)*h(x), does the coefficient term (Jacobi) appear only once in this case?</p><p>2) now if we have f(x) over (a,b) and h(x) over (a,c) [ also lets assume ab > ac ], can we integrate the product f(x)*h(x) over (a,c) [ since ac is within ab] using Gauss-Legendre quadrature rule? if yes, would the Jacobi be (ac -> zeta mapping) or some combination of (ac -> zeta; ab-> zeta mapping)?</p><p>thanks!</p></div><div class="comment-reply-link"><a rel='nofollow' class='comment-reply-link' href='http://www.holoborodko.com/pavel/numerical-methods/numerical-integration/?replytocom=7722#respond' data-commentid="7722" data-postid="679" data-belowelement="comment-7722" data-respondelement="respond" aria-label='Reply to Tejas'>Reply</a></div></li><li id="comment-8740" class="comment c19 c-y2013 c-m03 c-d08 c-h02 depth-1"><div class="comment-author vcard"> <span class="fn n">Robert</span></div><div class="comment-meta">Posted March 7, 2013 at 5:12 pm <span class="meta-sep">|</span> <a href="#comment-8740" title="Permalink to this comment"><strong>#</strong></a></div><div class="comment-content"><p>Hi</p><p>Thanks for making these procedures available.</p><p>I need the mex files for Linux (mexa64), so I haven’t been able to them. Is it possible for you to share the source code so I can compile the files myself or add this type of mex file?</p><p>Thanks!</p></div><div class="comment-reply-link"><a rel='nofollow' class='comment-reply-link' href='http://www.holoborodko.com/pavel/numerical-methods/numerical-integration/?replytocom=8740#respond' data-commentid="8740" data-postid="679" data-belowelement="comment-8740" data-respondelement="respond" aria-label='Reply to Robert'>Reply</a></div><ul class="children"><li id="comment-10456" class="comment c20 c-y2013 c-m08 c-d07 c-h10 alt depth-2"><div class="comment-author vcard"> <span class="fn n">Lionel</span></div><div class="comment-meta">Posted August 7, 2013 at 1:28 am <span class="meta-sep">|</span> <a href="#comment-10456" title="Permalink to this comment"><strong>#</strong></a></div><div class="comment-content"><p>Hi all,</p><p>I’m also working on linux 64 and i facing exactly the same problem. Would it be possible for you to share them? (mexa64 or source code to compile it myself).</p><p>Thank you for publishing these codes,</p><p>Lionel</p></div><div class="comment-reply-link"><a rel='nofollow' class='comment-reply-link' href='http://www.holoborodko.com/pavel/numerical-methods/numerical-integration/?replytocom=10456#respond' data-commentid="10456" data-postid="679" data-belowelement="comment-10456" data-respondelement="respond" aria-label='Reply to Lionel'>Reply</a></div></li></ul></li><li id="comment-9331" class="comment c21 c-y2013 c-m04 c-d30 c-h02 depth-1"><div class="comment-author vcard"> <span class="fn n">David L</span></div><div class="comment-meta">Posted April 29, 2013 at 5:05 pm <span class="meta-sep">|</span> <a href="#comment-9331" title="Permalink to this comment"><strong>#</strong></a></div><div class="comment-content"><p>Thanks for the mex implementation.. its enormous fast!<br /> Nevertheless I suspect a memory leak (at least in) quadlab.mexw64.<br /> When you call the function several times in Matlab, it seems that the used memory increases.<br /> Try the following:<br /> for i =1:100000, quadgk(@sinc,0,1);end<br /> for i =1:100000, GaussLegendre(@sinc,0,1,1024);end<br /> for i =1:100000, quadgk(@sinc,0,1);end<br /> for i =1:100000, GaussLegendre(@sinc,0,1,1024);end<br /> % check memory in task manager<br /> for i =1:100000, quadgk(@sinc,0,1);end<br /> % check memory in task manager<br /> for i =1:100000, GaussLegendre(@sinc,0,1,1024);end<br /> % check memory in task manager</p><p>After the first 2 calls of the for loops the memory is increasing for both integration methods. Later the memory stays constant for the quadgk command but keeps increasing with the GaussLegendre command.</p><p>Greets,<br /> David</p></div><div class="comment-reply-link"><a rel='nofollow' class='comment-reply-link' href='http://www.holoborodko.com/pavel/numerical-methods/numerical-integration/?replytocom=9331#respond' data-commentid="9331" data-postid="679" data-belowelement="comment-9331" data-respondelement="respond" aria-label='Reply to David L'>Reply</a></div><ul class="children"><li id="comment-14824" class="comment c22 byuser comment-author-admin bypostauthor c-y2014 c-m06 c-d23 c-h06 alt depth-2"><div class="comment-author vcard"> <span class="fn n"><a href="http://www.holoborodko.com/pavel/" rel='external nofollow ugc' class='url url'>Pavel Holoborodko</a></span></div><div class="comment-meta">Posted June 22, 2014 at 9:31 pm <span class="meta-sep">|</span> <a href="#comment-14824" title="Permalink to this comment"><strong>#</strong></a></div><div class="comment-content"><p>Thank you for the report. Memory leak is now fixed – please re-download the library.</p></div><div class="comment-reply-link"><a rel='nofollow' class='comment-reply-link' href='http://www.holoborodko.com/pavel/numerical-methods/numerical-integration/?replytocom=14824#respond' data-commentid="14824" data-postid="679" data-belowelement="comment-14824" data-respondelement="respond" aria-label='Reply to Pavel Holoborodko'>Reply</a></div></li></ul></li><li id="comment-10758" class="comment c23 c-y2013 c-m09 c-d11 c-h00 depth-1"><div class="comment-author vcard"> <span class="fn n">annel</span></div><div class="comment-meta">Posted September 10, 2013 at 3:50 pm <span class="meta-sep">|</span> <a href="#comment-10758" title="Permalink to this comment"><strong>#</strong></a></div><div class="comment-content"><p>Great code, thanks !</p><p>Anne</p></div><div class="comment-reply-link"><a rel='nofollow' class='comment-reply-link' href='http://www.holoborodko.com/pavel/numerical-methods/numerical-integration/?replytocom=10758#respond' data-commentid="10758" data-postid="679" data-belowelement="comment-10758" data-respondelement="respond" aria-label='Reply to annel'>Reply</a></div></li><li id="comment-14815" class="comment c24 c-y2014 c-m06 c-d22 c-h19 alt depth-1"><div class="comment-author vcard"> <span class="fn n"><a href="https://www.econ.umd.edu/faculty/profiles/sweeting" onclick="javascript:_gaq.push(['_trackEvent','outbound-commentauthor','https://www.econ.umd.edu/faculty/profiles/sweeting']);" rel='external nofollow ugc' class='url url'>Andrew</a></span></div><div class="comment-meta">Posted June 22, 2014 at 10:30 am <span class="meta-sep">|</span> <a href="#comment-14815" title="Permalink to this comment"><strong>#</strong></a></div><div class="comment-content"><p>Your Gauss-Legendere MATLAB code has speeded up a computational economics project I am working on: really nice work! But, I have two questions that are similar to other posters:</p><p>i. would it be possible to get the source code to create .mexa64 files for LINUX/UNIX?<br /> ii. is it expected that the memory usage can get so high when quadlab is called? I have tried doing some parallel implementation on a 96GB windows workstation and all of the memory is being used up.</p><p>Thanks</p><p>Andrew</p></div><div class="comment-reply-link"><a rel='nofollow' class='comment-reply-link' href='http://www.holoborodko.com/pavel/numerical-methods/numerical-integration/?replytocom=14815#respond' data-commentid="14815" data-postid="679" data-belowelement="comment-14815" data-respondelement="respond" aria-label='Reply to Andrew'>Reply</a></div><ul class="children"><li id="comment-14825" class="comment c25 byuser comment-author-admin bypostauthor c-y2014 c-m06 c-d23 c-h06 depth-2"><div class="comment-author vcard"> <span class="fn n"><a href="http://www.holoborodko.com/pavel/" rel='external nofollow ugc' class='url url'>Pavel Holoborodko</a></span></div><div class="comment-meta">Posted June 22, 2014 at 9:49 pm <span class="meta-sep">|</span> <a href="#comment-14825" title="Permalink to this comment"><strong>#</strong></a></div><div class="comment-content"><p>Thank you for your feedback!</p><p>Memory leak is now fixed. I have just released the new version – please re-download the lib (using the same link above).<br /> It still has only Windows binaries though.</p><p>I am not ready to go open source, but Linux version is in my todo list.<br /> (It requires more time – I have to remove some Windows-specifics first).</p><p>Let me know how is it working now,</p><p>Will keep you updated on Linux version.</p></div><div class="comment-reply-link"><a rel='nofollow' class='comment-reply-link' href='http://www.holoborodko.com/pavel/numerical-methods/numerical-integration/?replytocom=14825#respond' data-commentid="14825" data-postid="679" data-belowelement="comment-14825" data-respondelement="respond" aria-label='Reply to Pavel Holoborodko'>Reply</a></div><ul class="children"><li id="comment-14850" class="comment c26 c-y2014 c-m06 c-d24 c-h07 alt depth-3"><div class="comment-author vcard"> <span class="fn n">Andrew</span></div><div class="comment-meta">Posted June 23, 2014 at 10:43 pm <span class="meta-sep">|</span> <a href="#comment-14850" title="Permalink to this comment"><strong>#</strong></a></div><div class="comment-content"><p>I tried the new mex binaries. Memory usage is much more stable, but it runs much more slowly (by a factor of 4). Answers are identical up to 1e-15 on my example, so I may switch between the old and new ones depending on how I am using them.</p><p>Thanks<br /> Andrew</p></div><div class="comment-reply-link"><a rel='nofollow' class='comment-reply-link' href='http://www.holoborodko.com/pavel/numerical-methods/numerical-integration/?replytocom=14850#respond' data-commentid="14850" data-postid="679" data-belowelement="comment-14850" data-respondelement="respond" aria-label='Reply to Andrew'>Reply</a></div><ul class="children"><li id="comment-14852" class="comment c27 byuser comment-author-admin bypostauthor c-y2014 c-m06 c-d24 c-h09 depth-4"><div class="comment-author vcard"> <span class="fn n"><a href="http://www.holoborodko.com/pavel/" rel='external nofollow ugc' class='url url'>Pavel Holoborodko</a></span></div><div class="comment-meta">Posted June 24, 2014 at 12:24 am <span class="meta-sep">|</span> <a href="#comment-14852" title="Permalink to this comment"><strong>#</strong></a></div><div class="comment-content"><p>Now fixed and should run even faster than the very first version (thanks to Intel C++). Please re-download & test the library.</p></div><div class="comment-reply-link"><a rel='nofollow' class='comment-reply-link' href='http://www.holoborodko.com/pavel/numerical-methods/numerical-integration/?replytocom=14852#respond' data-commentid="14852" data-postid="679" data-belowelement="comment-14852" data-respondelement="respond" aria-label='Reply to Pavel Holoborodko'>Reply</a></div></li></ul></li></ul></li></ul></li><li id="comment-15159" class="comment c28 c-y2014 c-m07 c-d09 c-h14 alt depth-1"><div class="comment-author vcard"> <span class="fn n"><a href="http://aomari.info" onclick="javascript:_gaq.push(['_trackEvent','outbound-commentauthor','http://aomari.info']);" rel='external nofollow ugc' class='url url'>Ahmad</a></span></div><div class="comment-meta">Posted July 9, 2014 at 5:02 am <span class="meta-sep">|</span> <a href="#comment-15159" title="Permalink to this comment"><strong>#</strong></a></div><div class="comment-content"><p>I think the scientific way to write a code, which is not filling it with numbers ,a much better way if you write a short piece of code to regenerate those weights and roots instead of putting them like this. Moreover, you will reduce the error that comes from human<br /> Cheers.</p></div><div class="comment-reply-link"><a rel='nofollow' class='comment-reply-link' href='http://www.holoborodko.com/pavel/numerical-methods/numerical-integration/?replytocom=15159#respond' data-commentid="15159" data-postid="679" data-belowelement="comment-15159" data-respondelement="respond" aria-label='Reply to Ahmad'>Reply</a></div><ul class="children"><li id="comment-15173" class="comment c29 byuser comment-author-admin bypostauthor c-y2014 c-m07 c-d10 c-h03 depth-2"><div class="comment-author vcard"> <span class="fn n"><a href="http://www.holoborodko.com/pavel/" rel='external nofollow ugc' class='url url'>Pavel Holoborodko</a></span></div><div class="comment-meta">Posted July 9, 2014 at 6:10 pm <span class="meta-sep">|</span> <a href="#comment-15173" title="Permalink to this comment"><strong>#</strong></a></div><div class="comment-content"><p>Pre-computed coefficients are needed for high speed. Re-generation of high-precision coefficients every time would take forever.</p></div><div class="comment-reply-link"><a rel='nofollow' class='comment-reply-link' href='http://www.holoborodko.com/pavel/numerical-methods/numerical-integration/?replytocom=15173#respond' data-commentid="15173" data-postid="679" data-belowelement="comment-15173" data-respondelement="respond" aria-label='Reply to Pavel Holoborodko'>Reply</a></div><ul class="children"><li id="comment-15186" class="comment c30 c-y2014 c-m07 c-d10 c-h23 alt depth-3"><div class="comment-author vcard"> <span class="fn n"><a href="http://aomari.info" onclick="javascript:_gaq.push(['_trackEvent','outbound-commentauthor','http://aomari.info']);" rel='external nofollow ugc' class='url url'>Ahmad</a></span></div><div class="comment-meta">Posted July 10, 2014 at 2:03 pm <span class="meta-sep">|</span> <a href="#comment-15186" title="Permalink to this comment"><strong>#</strong></a></div><div class="comment-content"><p>Thanks for this useful comment, you are absolutely right. I would say if you put a commented code, since you already have it, for those people who don’t worry about the speed but the accuracy. Such a code make your post wider and much helpful popular .</p></div><div class="comment-reply-link"><a rel='nofollow' class='comment-reply-link' href='http://www.holoborodko.com/pavel/numerical-methods/numerical-integration/?replytocom=15186#respond' data-commentid="15186" data-postid="679" data-belowelement="comment-15186" data-respondelement="respond" aria-label='Reply to Ahmad'>Reply</a></div><ul class="children"><li id="comment-15187" class="comment c31 byuser comment-author-admin bypostauthor c-y2014 c-m07 c-d10 c-h23 depth-4"><div class="comment-author vcard"> <span class="fn n"><a href="http://www.holoborodko.com/pavel/" rel='external nofollow ugc' class='url url'>Pavel Holoborodko</a></span></div><div class="comment-meta">Posted July 10, 2014 at 2:20 pm <span class="meta-sep">|</span> <a href="#comment-15187" title="Permalink to this comment"><strong>#</strong></a></div><div class="comment-content"><p>Library includes the code to generate nodes & weights for any required order (in double precision).<br /> Only few particular cases are pre-computed, all others are generated on the fly.</p><p>If you are interested in generating coefficients in arbitrary precision, then check out this MATLAB code:<br /> <a href="http://www.advanpix.com/documentation/users-manual/#Example_Arbitrary_Precision_Gauss-Legendre_Quadrature" onclick="javascript:_gaq.push(['_trackEvent','outbound-comment','http://www.advanpix.com/documentation/users-manual/#Example_Arbitrary_Precision_Gauss-Legendre_Quadrature']);" rel="nofollow">Arbitrary Precision Gauss-Legendre Quadrature</a></p><p>It requires multiprecision toolbox for MATLAB, which includes computation of nodes & weights of all common Gauss-type quadrature in arbitrary precision. See here:<br /> <a href="http://www.advanpix.com/2012/05/30/abscissas-and-weights-classical-gaussian-quadrature-rules/" onclick="javascript:_gaq.push(['_trackEvent','outbound-comment','http://www.advanpix.com/2012/05/30/abscissas-and-weights-classical-gaussian-quadrature-rules/']);" rel="nofollow">Abscissas and Weights of Classical Gaussian Quadrature Rules</a></p><p>Btw, I am author of the toolbox :).</p></div><div class="comment-reply-link"><a rel='nofollow' class='comment-reply-link' href='http://www.holoborodko.com/pavel/numerical-methods/numerical-integration/?replytocom=15187#respond' data-commentid="15187" data-postid="679" data-belowelement="comment-15187" data-respondelement="respond" aria-label='Reply to Pavel Holoborodko'>Reply</a></div><ul class="children"><li id="comment-15205" class="comment c32 c-y2014 c-m07 c-d11 c-h23 alt depth-5"><div class="comment-author vcard"> <span class="fn n"><a href="http://aomari.info" onclick="javascript:_gaq.push(['_trackEvent','outbound-commentauthor','http://aomari.info']);" rel='external nofollow ugc' class='url url'>Ahmad</a></span></div><div class="comment-meta">Posted July 11, 2014 at 2:16 pm <span class="meta-sep">|</span> <a href="#comment-15205" title="Permalink to this comment"><strong>#</strong></a></div><div class="comment-content"><p>Thanks Pavel . It is good to know that I am dealing with professional people 🙂</p><p>I already coded Gauss quadrature rule using C++, and every time I regenerate the weights and the roots using a little piece of code, but when I need to find the weights and the roots where N=64 then it takes so long time. does that what happen with you when you generate such roots and weights.<br /> Thanks.</p></div></li><li id="comment-15206" class="comment c33 byuser comment-author-admin bypostauthor c-y2014 c-m07 c-d12 c-h00 depth-5"><div class="comment-author vcard"> <span class="fn n"><a href="http://www.holoborodko.com/pavel/" rel='external nofollow ugc' class='url url'>Pavel Holoborodko</a></span></div><div class="comment-meta">Posted July 11, 2014 at 3:48 pm <span class="meta-sep">|</span> <a href="#comment-15206" title="Permalink to this comment"><strong>#</strong></a></div><div class="comment-content"><p>It as always better to do a little research before coding. Just count number of operation (algorithmic complexity). Or learn how it is done in other libraries.</p></div></li></ul></li></ul></li></ul></li></ul></li><li id="comment-39135" class="comment c34 c-y2015 c-m04 c-d05 c-h08 alt depth-1"><div class="comment-author vcard"> <span class="fn n">Simone</span></div><div class="comment-meta">Posted April 4, 2015 at 11:54 pm <span class="meta-sep">|</span> <a href="#comment-39135" title="Permalink to this comment"><strong>#</strong></a></div><div class="comment-content"><p>Thanks for the code, it works perfectly! However, is it possible to use the Gauss-Legendre integration also for double integrals?</p></div><div class="comment-reply-link"><a rel='nofollow' class='comment-reply-link' href='http://www.holoborodko.com/pavel/numerical-methods/numerical-integration/?replytocom=39135#respond' data-commentid="39135" data-postid="679" data-belowelement="comment-39135" data-respondelement="respond" aria-label='Reply to Simone'>Reply</a></div><ul class="children"><li id="comment-71144" class="comment c35 c-y2015 c-m10 c-d03 c-h08 depth-2"><div class="comment-author vcard"> <span class="fn n">labd1</span></div><div class="comment-meta">Posted October 2, 2015 at 11:31 pm <span class="meta-sep">|</span> <a href="#comment-71144" title="Permalink to this comment"><strong>#</strong></a></div><div class="comment-content"><p>How is it possible to implement this code for 2D integration please?</p></div><div class="comment-reply-link"><a rel='nofollow' class='comment-reply-link' href='http://www.holoborodko.com/pavel/numerical-methods/numerical-integration/?replytocom=71144#respond' data-commentid="71144" data-postid="679" data-belowelement="comment-71144" data-respondelement="respond" aria-label='Reply to labd1'>Reply</a></div></li></ul></li><li id="comment-72703" class="comment c36 c-y2015 c-m10 c-d14 c-h12 alt depth-1"><div class="comment-author vcard"> <span class="fn n">Ali</span></div><div class="comment-meta">Posted October 14, 2015 at 3:35 am <span class="meta-sep">|</span> <a href="#comment-72703" title="Permalink to this comment"><strong>#</strong></a></div><div class="comment-content"><p>First, I thank you for your useful mex function. It helped me a lot with my thesis.<br /> One problem though: I need to integrate complex functions. Since your function does not cover complex variables, I integrate once imag(f(x)) and once real(f(x)). This doubles the number of integrals I have to compute and integration is a serious bottleneck in my programs.<br /> I would appreciate any suggestions.</p></div><div class="comment-reply-link"><a rel='nofollow' class='comment-reply-link' href='http://www.holoborodko.com/pavel/numerical-methods/numerical-integration/?replytocom=72703#respond' data-commentid="72703" data-postid="679" data-belowelement="comment-72703" data-respondelement="respond" aria-label='Reply to Ali'>Reply</a></div></li><li id="comment-87076" class="comment c37 c-y2016 c-m04 c-d13 c-h07 depth-1"><div class="comment-author vcard"> <span class="fn n">Jay</span></div><div class="comment-meta">Posted April 12, 2016 at 10:28 pm <span class="meta-sep">|</span> <a href="#comment-87076" title="Permalink to this comment"><strong>#</strong></a></div><div class="comment-content"><p>Hi. I was really impressed by your Gauss-Legendre Quadrature for C/C++.<br /> I’ve intersted, is the ability to estimate of the absolute error in the result. like it implements here <a href="http://docs.scipy.org/doc/scipy/reference/generated/scipy.integrate.quad.html" onclick="javascript:_gaq.push(['_trackEvent','outbound-comment','http://docs.scipy.org/doc/scipy/reference/generated/scipy.integrate.quad.html']);" rel="nofollow ugc">http://docs.scipy.org/doc/scipy/reference/generated/scipy.integrate.quad.html</a> (abserr) ? Thanks!</p></div><div class="comment-reply-link"><a rel='nofollow' class='comment-reply-link' href='http://www.holoborodko.com/pavel/numerical-methods/numerical-integration/?replytocom=87076#respond' data-commentid="87076" data-postid="679" data-belowelement="comment-87076" data-respondelement="respond" aria-label='Reply to Jay'>Reply</a></div><ul class="children"><li id="comment-87112" class="comment c38 byuser comment-author-admin bypostauthor c-y2016 c-m04 c-d13 c-h22 alt depth-2"><div class="comment-author vcard"> <span class="fn n"><a href="http://www.holoborodko.com/pavel/" rel='external nofollow ugc' class='url url'>Pavel Holoborodko</a></span></div><div class="comment-meta">Posted April 13, 2016 at 1:44 pm <span class="meta-sep">|</span> <a href="#comment-87112" title="Permalink to this comment"><strong>#</strong></a></div><div class="comment-content"><p>You can run two quadrature of different orders and difference in their results will give you the absolute error.</p></div><div class="comment-reply-link"><a rel='nofollow' class='comment-reply-link' href='http://www.holoborodko.com/pavel/numerical-methods/numerical-integration/?replytocom=87112#respond' data-commentid="87112" data-postid="679" data-belowelement="comment-87112" data-respondelement="respond" aria-label='Reply to Pavel Holoborodko'>Reply</a></div><ul class="children"><li id="comment-87432" class="comment c39 c-y2016 c-m04 c-d19 c-h06 depth-3"><div class="comment-author vcard"> <span class="fn n">Jay</span></div><div class="comment-meta">Posted April 18, 2016 at 9:38 pm <span class="meta-sep">|</span> <a href="#comment-87432" title="Permalink to this comment"><strong>#</strong></a></div><div class="comment-content"><p>I guess that for such approach there is need <a href="https://en.wikipedia.org/wiki/Gaussian_quadrature#Gauss.E2.80.93Kronrod_rules" onclick="javascript:_gaq.push(['_trackEvent','outbound-comment','http://en.wikipedia.org/wiki/Gaussian_quadrature#Gauss.E2.80.93Kronrod_rules']);" rel="nofollow ugc">https://en.wikipedia.org/wiki/Gaussian_quadrature#Gauss.E2.80.93Kronrod_rules</a>.<br /> I think that different orders is not enough, different grid is also needed.</p></div><div class="comment-reply-link"><a rel='nofollow' class='comment-reply-link' href='http://www.holoborodko.com/pavel/numerical-methods/numerical-integration/?replytocom=87432#respond' data-commentid="87432" data-postid="679" data-belowelement="comment-87432" data-respondelement="respond" aria-label='Reply to Jay'>Reply</a></div><ul class="children"><li id="comment-87433" class="comment c40 byuser comment-author-admin bypostauthor c-y2016 c-m04 c-d19 c-h06 alt depth-4"><div class="comment-author vcard"> <span class="fn n"><a href="http://www.holoborodko.com/pavel/" rel='external nofollow ugc' class='url url'>Pavel Holoborodko</a></span></div><div class="comment-meta">Posted April 18, 2016 at 9:46 pm <span class="meta-sep">|</span> <a href="#comment-87433" title="Permalink to this comment"><strong>#</strong></a></div><div class="comment-content"><p>Yes, of course, Gauss-Kronrod or Curtis-Clenshaw are the best methods for such purposes.<br /> I thought you are restricted to use Gauss-Legendre.</p></div><div class="comment-reply-link"><a rel='nofollow' class='comment-reply-link' href='http://www.holoborodko.com/pavel/numerical-methods/numerical-integration/?replytocom=87433#respond' data-commentid="87433" data-postid="679" data-belowelement="comment-87433" data-respondelement="respond" aria-label='Reply to Pavel Holoborodko'>Reply</a></div><ul class="children"><li id="comment-87466" class="comment c41 c-y2016 c-m04 c-d20 c-h04 depth-5"><div class="comment-author vcard"> <span class="fn n">Jay</span></div><div class="comment-meta">Posted April 19, 2016 at 7:50 pm <span class="meta-sep">|</span> <a href="#comment-87466" title="Permalink to this comment"><strong>#</strong></a></div><div class="comment-content"><p>I mean that that could be good addon to your lib;)</p></div></li><li id="comment-87496" class="comment c42 byuser comment-author-admin bypostauthor c-y2016 c-m04 c-d20 c-h20 alt depth-5"><div class="comment-author vcard"> <span class="fn n"><a href="http://www.holoborodko.com/pavel/" rel='external nofollow ugc' class='url url'>Pavel Holoborodko</a></span></div><div class="comment-meta">Posted April 20, 2016 at 11:00 am <span class="meta-sep">|</span> <a href="#comment-87496" title="Permalink to this comment"><strong>#</strong></a></div><div class="comment-content"><p>Absolutely – been thinking about it for some time. Also all Gauss-type quadrature, multi-dimensional cubature for various types of domains (disk, hypercube, simplex, etc.), Monte-Carlo integration, etc. The only question is where to get the time & $ :).</p></div></li></ul></li></ul></li></ul></li></ul></li><li id="comment-96191" class="comment c43 c-y2016 c-m08 c-d21 c-h08 depth-1"><div class="comment-author vcard"> <span class="fn n">Justin</span></div><div class="comment-meta">Posted August 20, 2016 at 11:09 pm <span class="meta-sep">|</span> <a href="#comment-96191" title="Permalink to this comment"><strong>#</strong></a></div><div class="comment-content"><p>Hi Pavel, thanks for hosting such an informative thread. In situations where we integrate over the unit sphere, the basis functions become the Associated Legendre polynomials <img src="http://www.holoborodko.com/pavel/wp-content/ql-cache/quicklatex.com-100156f966e7e8dffae5ce7473828ffe_l3.png" class="ql-img-inline-formula quicklatex-auto-format" alt="P_{n}^{m}(\theta)" title="Rendered by QuickLaTeX.com" height="19" width="51" style="vertical-align: -5px;"/>, which certainly have unique <img src="http://www.holoborodko.com/pavel/wp-content/ql-cache/quicklatex.com-37fa4f9c62130c29cabc7dbe0057cb72_l3.png" class="ql-img-inline-formula quicklatex-auto-format" alt="\xi_i" title="Rendered by QuickLaTeX.com" height="17" width="13" style="vertical-align: -4px;"/> and <img src="http://www.holoborodko.com/pavel/wp-content/ql-cache/quicklatex.com-8adf810067e570e6ff33cc7f2d1d9cd2_l3.png" class="ql-img-inline-formula quicklatex-auto-format" alt="w_i" title="Rendered by QuickLaTeX.com" height="11" width="18" style="vertical-align: -3px;"/> compared to <img src="http://www.holoborodko.com/pavel/wp-content/ql-cache/quicklatex.com-6ad47dc5798a582ce0a0390b932742ec_l3.png" class="ql-img-inline-formula quicklatex-auto-format" alt="P_n^0" title="Rendered by QuickLaTeX.com" height="22" width="22" style="vertical-align: -5px;"/>. In this case, it is unclear to me how the algorithm should be changed. And advice is appreciated!</p></div><div class="comment-reply-link"><a rel='nofollow' class='comment-reply-link' href='http://www.holoborodko.com/pavel/numerical-methods/numerical-integration/?replytocom=96191#respond' data-commentid="96191" data-postid="679" data-belowelement="comment-96191" data-respondelement="respond" aria-label='Reply to Justin'>Reply</a></div><ul class="children"><li id="comment-96193" class="comment c44 byuser comment-author-admin bypostauthor c-y2016 c-m08 c-d21 c-h08 alt depth-2"><div class="comment-author vcard"> <span class="fn n"><a href="http://www.holoborodko.com/pavel/" rel='external nofollow ugc' class='url url'>Pavel Holoborodko</a></span></div><div class="comment-meta">Posted August 20, 2016 at 11:32 pm <span class="meta-sep">|</span> <a href="#comment-96193" title="Permalink to this comment"><strong>#</strong></a></div><div class="comment-content"><p>I don’t know much about the sphere, except that there is Lebedev quadrature: <a href="https://en.wikipedia.org/wiki/Lebedev_quadrature" onclick="javascript:_gaq.push(['_trackEvent','outbound-comment','http://en.wikipedia.org/wiki/Lebedev_quadrature']);" rel="nofollow ugc">https://en.wikipedia.org/wiki/Lebedev_quadrature</a><br /> And some code for it: <a href="https://people.sc.fsu.edu/~jburkardt/f_src/sphere_lebedev_rule/sphere_lebedev_rule.html" onclick="javascript:_gaq.push(['_trackEvent','outbound-comment','http://people.sc.fsu.edu/~jburkardt/f_src/sphere_lebedev_rule/sphere_lebedev_rule.html']);" rel="nofollow ugc">https://people.sc.fsu.edu/~jburkardt/f_src/sphere_lebedev_rule/sphere_lebedev_rule.html</a></p></div><div class="comment-reply-link"><a rel='nofollow' class='comment-reply-link' href='http://www.holoborodko.com/pavel/numerical-methods/numerical-integration/?replytocom=96193#respond' data-commentid="96193" data-postid="679" data-belowelement="comment-96193" data-respondelement="respond" aria-label='Reply to Pavel Holoborodko'>Reply</a></div></li></ul></li><li id="comment-324231" class="comment c45 c-y2024 c-m04 c-d29 c-h05 depth-1"><div class="comment-author vcard"> <span class="fn n"><a href="https://github.com/Elektron97" onclick="javascript:_gaq.push(['_trackEvent','outbound-commentauthor','https://github.com/Elektron97']);" rel='external nofollow ugc' class='url url'>Daniele Caradonna</a></span></div><div class="comment-meta">Posted April 28, 2024 at 8:57 pm <span class="meta-sep">|</span> <a href="#comment-324231" title="Permalink to this comment"><strong>#</strong></a></div><div class="comment-content"><p>Hi Pavel, thank you for this amazing work. Why do you not load this code in a GitHub Repository? I’m using your lib for my robotic application and it could be very useful to share this code in GitHub. If you don’t want to do that, I can publish it as a public repository, referencing this page.<br /> Thank you again for this library!</p></div><div class="comment-reply-link"><a rel='nofollow' class='comment-reply-link' href='http://www.holoborodko.com/pavel/numerical-methods/numerical-integration/?replytocom=324231#respond' data-commentid="324231" data-postid="679" data-belowelement="comment-324231" data-respondelement="respond" aria-label='Reply to Daniele Caradonna'>Reply</a></div></li></ol><div id="comments-nav-below" class="comment-navigation"><div class="paginated-comments-links"></div></div></div><div id="respond"><h3>Post a Reply to <a href="#comment-9331">David L</a></h3><div id="cancel-comment-reply"><a rel="nofollow" id="cancel-comment-reply-link" href="/pavel/numerical-methods/numerical-integration/#respond">Click here to cancel reply.</a></div><div class="formcontainer"><form id="commentform" action="http://www.holoborodko.com/pavel/wp-comments-post.php" method="post"><p id="comment-notes">Your email is <em>never</em> published nor shared.</p><div id="form-section-author" class="form-section"><div class="form-label"><label for="author">Name</label></div><div class="form-input"><input id="author" name="author" type="text" value="" size="30" maxlength="20" tabindex="3" /></div></div><div id="form-section-email" class="form-section"><div class="form-label"><label for="email">Email</label></div><div class="form-input"><input id="email" name="email" type="text" value="" size="30" maxlength="50" tabindex="4" /></div></div><div id="form-section-url" class="form-section"><div class="form-label"><label for="url">Website</label></div><div class="form-input"><input id="url" name="url" type="text" value="" size="30" maxlength="50" tabindex="5" /></div></div><div id="form-section-comment" class="form-section"><div class="form-label"><label for="comment">Comment</label></div><div class="form-textarea"><textarea id="comment" name="comment" cols="45" rows="8" tabindex="6"></textarea></div></div><div id="form-allowed-tags" class="form-section"><p><span>Use native LaTeX syntax to include formulas:</span> $ ... $, \[ ... \], <span>etc. Do not forget to preview comment before posting.</span></p><p><span>Also you may use these <abbr title="HyperText Markup Language">HTML</abbr> tags and attributes: </span><a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong></p></div><p style="display: none;"><input type="hidden" id="akismet_comment_nonce" name="akismet_comment_nonce" value="3051e8f34b" /></p><input name="acp-preview" type="button" id="acp-preview" tabindex="6" value="Preview" /><div id="ajax-comment-preview"></div><p style="clear: both;" class="subscribe-to-comments"> <input type="checkbox" name="subscribe" id="subscribe" value="subscribe" style="width: auto;" /> <label for="subscribe">Notify me of followup comments via e-mail</label></p><p style="display: none;"><input type="hidden" id="ak_js" name="ak_js" value="189"/></p><div class="form-submit"><input id="submit" name="submit" type="submit" value="Post Comment" tabindex="7" /><input type="hidden" name="comment_post_ID" value="679" /></div> <input type='hidden' name='comment_post_ID' value='679' id='comment_post_ID' /> <input type='hidden' name='comment_parent' id='comment_parent' value='9331' /></form><form action="" method="post"> <input type="hidden" name="solo-comment-subscribe" value="solo-comment-subscribe" /> <input type="hidden" name="postid" value="679" /> <input type="hidden" name="ref" value="http://www.holoborodko.com/pavel/numerical-methods/numerical-integration/?replytocom=9331" /><p class="solo-subscribe-to-comments"> Subscribe without commenting <br /> <label for="solo-subscribe-email">E-Mail: <input type="text" name="email" id="solo-subscribe-email" size="22" value="" /></label> <input type="submit" name="submit" value="Subscribe" /></p></form></div></div></div></div></div></div><div id="footer"><div id="siteinfo"> Powered by <a class="wp-link" href="http://WordPress.org/" title="WordPress" rel="generator">WordPress</a> with <a href="http://www.holoborodko.com/pavel/quicklatex/">QuickLaTeX</a>. Built on the <a class="theme-link" href="http://themeshaper.com/thematic-for-wordpress" title="Thematic Theme Framework" rel="designer">Thematic Theme Framework</a>.</div></div></div> <!-- ngg_resource_manager_marker --><script type='text/javascript' src='http://www.holoborodko.com/pavel/wp-includes/js/comment-reply.min.js?ver=5.3.18'></script> <script type='text/javascript'> /* <![CDATA[ */ var ratingsL10n = {"plugin_url":"http:\/\/www.holoborodko.com\/pavel\/wp-content\/plugins\/wp-postratings","ajax_url":"http:\/\/www.holoborodko.com\/pavel\/wp-admin\/admin-ajax.php","text_wait":"Please rate only 1 item at a time.","image":"stars_crystal","image_ext":"gif","max":"5","show_loading":"1","show_fading":"1","custom":"0"}; var ratings_mouseover_image=new Image();ratings_mouseover_image.src="http://www.holoborodko.com/pavel/wp-content/plugins/wp-postratings/images/stars_crystal/rating_over.gif";; /* ]]> */ </script> <script type='text/javascript' src='http://www.holoborodko.com/pavel/wp-content/plugins/wp-postratings/js/postratings-js.js?ver=1.87'></script> <script type='text/javascript' src='http://www.holoborodko.com/pavel/wp-includes/js/wp-embed.min.js?ver=5.3.18'></script> <script async="async" type='text/javascript' src='http://www.holoborodko.com/pavel/wp-content/plugins/akismet/_inc/form.js?ver=4.1.3'></script> <script src="http://stats.wordpress.com/e-202448.js" type="text/javascript"></script> <script type="text/javascript">st_go({blog:'4345820',v:'ext',post:'679'}); var load_cmc = function(){linktracker_init(4345820,679,2);}; if ( typeof addLoadEvent != 'undefined' ) addLoadEvent(load_cmc); else load_cmc();</script> <script defer src="http://www.holoborodko.com/pavel/wp-content/cache/autoptimize/js/autoptimize_e6852a14955f2394fbe3924e82d374a7.js"></script></body></html> <!-- Dynamic page generated in 0.170 seconds. --> <!-- Cached page generated by WP-Super-Cache on 2024-11-29 04:24:27 --> <!-- Compression = gzip -->