34 real*8,
intent(in) ::
x
40 real*8 ::
pi,ga,
z,
r,gr
56 if (abs(
x) > 1.0)
then
67 data g/1.0,0.5772156649015329, &
68 -0.6558780715202538, -0.420026350340952d-1, &
69 0.1665386113822915,-.421977345555443d-1, &
70 -.96219715278770d-2, .72189432466630d-2, &
71 -.11651675918591d-2, -.2152416741149d-3, &
72 .1280502823882d-3, -.201348547807d-4, &
73 -.12504934821d-5, .11330272320d-5, &
74 -.2056338417d-6, .61160950d-8, &
75 .50020075d-8, -.11812746d-8, &
76 .1043427d-9, .77823d-11, &
77 -.36968d-11, .51d-12, &
78 -.206d-13, -.54d-14, .14d-14, .1d-15/
84 if (abs(
x) > 1.0)
then
86 if (
x < 0.0) ga=-
pi/(
x*ga*sin(
pi*
x))
124 real*8,
intent(in),
dimension(:) ::
f,s
125 integer,
intent(in) :: i1, i2
131 real*8 :: sumo, deltah, val
133 integer*4,
dimension(i2-i1+1) :: idx
134 real*8,
dimension(i2-i1+1) :: f_rev, s_rev
141 call
avint(f_rev(i1:i2),s_rev(i1:i2),(i2-i1+1), &
142 s_rev(i1),s_rev(i2), val)
147 deltah = abs(s(i1+1)-s(i1))
148 sumo = sumo +
f(
j)*deltah
160 subroutine avint ( ftab, xtab, ntab, a_in, b_in, result )
227 integer,
intent(in) :: ntab
229 integer,
parameter :: kr8 = selected_real_kind(15,300)
230 real ( kind = KR8 ),
intent(in) :: a_in
231 real ( kind = KR8 ) a
232 real ( kind = KR8 ) atemp
233 real ( kind = KR8 ),
intent(in) :: b_in
234 real ( kind = KR8 ) b
235 real ( kind = KR8 ) btemp
236 real ( kind = KR8 ) ca
237 real ( kind = KR8 ) cb
238 real ( kind = KR8 ) cc
239 real ( kind = KR8 ) ctemp
240 real ( kind = KR8 ),
intent(in) :: ftab(ntab)
245 real ( kind = KR8 ),
intent(out) :: result
246 real ( kind = KR8 ) sum1
247 real ( kind = KR8 ) syl
248 real ( kind = KR8 ) term1
249 real ( kind = KR8 ) term2
250 real ( kind = KR8 ) term3
251 real ( kind = KR8 ) x1
252 real ( kind = KR8 ) x2
253 real ( kind = KR8 ) x3
254 real ( kind = KR8 ),
intent(in) :: xtab(ntab)
262 write ( *,
'(a)' )
' '
263 write ( *,
'(a)' )
'AVINT - Fatal error!'
264 write ( *,
'(a,i6)' )
' NTAB is less than 3. NTAB = ', ntab
269 if ( xtab(
i) <= xtab(
i-1) )
then
276 write ( *,
'(a)' )
' '
277 write ( *,
'(a)' )
'AVINT - Fatal error!'
278 write ( *,
'(a)' )
' XTAB(I) is not greater than XTAB(I-1).'
279 write ( *,
'(a,i6)' )
' Here, I = ',
i
280 write ( *,
'(a,g14.6)' )
' XTAB(I-1) = ', xtab(
i-1)
281 write ( *,
'(a,g14.6)' )
' XTAB(I) = ', xtab(
i)
288 write ( *,
'(a)' )
' '
289 write ( *,
'(a)' )
'AVINT - Warning!'
290 write ( *,
'(a)' )
' A = B, integral=0.'
312 if ( a <= xtab(
i) )
then
319 ilo = min( ilo, ntab - 1 )
322 if ( xtab(
i) <= b )
then
328 ihi = min( ihi, ntab - 1 )
329 ihi = max( ilo, ihi - 1 )
341 term1 = ftab(
i-1) / ( ( x1 - x2 ) * ( x1 - x3 ) )
342 term2 = ftab(
i) / ( ( x2 - x1 ) * ( x2 - x3 ) )
343 term3 = ftab(
i+1) / ( ( x3 - x1 ) * ( x3 - x2 ) )
345 atemp = term1 + term2 + term3
347 btemp = - ( x2 + x3 ) * term1 &
348 - ( x1 + x3 ) * term2 &
349 - ( x1 + x2 ) * term3
351 ctemp = x2 * x3 * term1 + x1 * x3 * term2 + x1 * x2 * term3
358 ca = 0.5d+00 * ( atemp + ca )
359 cb = 0.5d+00 * ( btemp + cb )
360 cc = 0.5d+00 * ( ctemp + cc )
364 + ca * ( x2**3 - syl**3 ) / 3.0d+00 &
365 + cb * 0.5d+00 * ( x2**2 - syl**2 ) &
377 + ca * ( b**3 - syl**3 ) / 3.0d+00 &
378 + cb * 0.5d+00 * ( b**2 - syl**2 ) &