module subroutine gaussquad(N, x, w)
integer, intent(in) :: N
real(wp), intent(out), dimension(N) :: x, w
select case (N)
case (1)
x = [ 0._wp ]
w = [ 2._wp ]
case (2)
x = [ -0.5773502691896257_wp, &
0.5773502691896257_wp ]
w = [ 1._wp, &
1._wp ]
case (3)
x = [ -0.7745966692414834_wp, &
0._wp, &
0.7745966692414834_wp ]
w = [ 0.5555555555555556_wp, &
0.8888888888888888_wp, &
0.5555555555555556_wp ]
case (4)
x = [ -0.8611363115940526_wp, &
-0.3399810435848563_wp, &
0.3399810435848563_wp, &
0.8611363115940526_wp ]
w = [ 0.3478548451374538_wp, &
0.6521451548625461_wp, &
0.6521451548625461_wp, &
0.3478548451374538_wp ]
case (5)
x = [ -0.9061798459386640_wp, &
-0.5384693101056831_wp, &
0._wp, &
0.5384693101056831_wp, &
0.9061798459386640_wp ]
w = [ 0.2369268850561891_wp, &
0.4786286704993665_wp, &
0.5688888888888889_wp, &
0.4786286704993665_wp, &
0.2369268850561891_wp ]
case default
! call lgwt(-1._wp, 1._wp, N, x, w)
! call cgwt(N, x, w)
call gaussquad_rosetta(N, x, w)
end select
return
end subroutine gaussquad