1 subroutine l2err ( prfun , ftau , error )
34 integer ie,k,l,ll,lpkmax,ltkmax,ntau,ntmax,on
35 double precision ftau(ntau),error(ntau),
36 & break,coef,err,errmax,errl1,errl2,gtau,
ppvalu,
37 & scale,tau,totalw,weight
39 parameter(lpkmax=100,ntmax=200,ltkmax=2000)
41 common / i4data / ntau
42 common / r8data / tau(ntmax),gtau(ntmax),weight(ntmax),totalw
43 common /approx/ break(lpkmax),coef(ltkmax),l,k
50 ftau(ll) =
ppvalu(break, coef, l, k, tau(ll), 0 )
51 error(ll) = gtau(ll) - ftau(ll)
53 if (errmax .lt. err) errmax = err
54 errl1 = errl1 + err*weight(ll)
55 errl2 = errl2 + err**2*weight(ll)
59 errl2 = dsqrt(errl2/totalw)
60 print 615,errl2,errl1,errmax
61 615
format(///
' least square error =',e20.6/
62 &
' average error =',e20.6/
63 &
' maximum error =',e20.6//)
71 if (errmax .ge. 10.0d+00)
go to 18
74 scale = scale*10.0d+00
75 if (errmax*scale .ge. 10.0d+00)
go to 18
79 19 error(ll) = error(ll)*scale
81 print 620,ie,(ll,tau(ll),ftau(ll),error(ll),ll=1,ntau)
82 620
format(///14
x,
'approximation and scaled error curve'/7
x,
83 &
'data point',7
x,
'approximation',3
x,
'deviation x 10**',i1/
84 &(i4,f16.8,f16.8,f17.6))
double precision function ppvalu(break, coef, l, k, x, jderiv)
subroutine l2err(prfun, ftau, error)