*! Version 2.0, October 2002. (SJ4-1: st0057) program define ghquad version 7.0 syntax [varlist(min=2 max=2)] [, N(integer 10)] tokenize `varlist' local x "`1'" local w "`2'" if `n' + 2 > _N { di in red /* */ "`n' + 2 observations needed to compute quadrature points" exit 2001 } tempname xx ww local i 1 local m = int((`n' + 1)/2) while `i' <= `m' { if `i' == 1 { scalar `xx' = sqrt(2*`n'+1)-1.85575*(2*`n'+1)^(-1/6) } else if `i' == 2 { scalar `xx' = `xx'-1.14*`n'^0.426/`xx' } else if `i' == 3 { scalar `xx' = 1.86*`xx'-0.86*`x'[1] } else if `i' == 4 { scalar `xx' = 1.91*`xx'-0.91*`x'[2] } else { scalar `xx' = 2*`xx'-`x'[`i'-2] } hermite `n' `xx' `ww' qui replace `x' = `xx' in `i' qui replace `w' = `ww' in `i' local i = `i' + 1 } if mod(`n', 2) == 1 { qui replace `x' = 0 in `m' } qui replace `x' = -`x'[`n'+1-_n] in `i'/`n' qui replace `w' = `w'[`n'+1-_n] in `i'/`n' end exit