68 double precision :: normC,normD
69 character :: stringC(0:ncountC)*32
71 character :: stringD(0:ncountD)*36
74 character :: stringD(0:ncountD)*32
85 normc = dble(max(
ccount(0),1))
86 normd = dble(max(
dcount(0),1))
100 if (mod(i,2).eq.1) stringc(i)(1:4) =
'pv1 '
101 if (mod(i,4)-mod(i,2).eq.2) stringc(i)(5:8) =
'pv2 '
102 if (mod(i,8)-mod(i,4).eq.4) stringc(i)(9:12) =
' g '
103 if (mod(i,16)-mod(i,8).eq.8) stringc(i)(13:16) =
' gc '
104 if (mod(i,32)-mod(i,16).eq.16) stringc(i)(17:20) =
' sm '
105 if (mod(i,64)-mod(i,32).eq.32) stringc(i)(21:24) =
' gr '
106 if (mod(i,128)-mod(i,64).eq.64) stringc(i)(25:28) =
'smf '
113 stringd(0) =
'total '
121 if (mod(i,2).eq.1) stringd(i)(1:4) =
'pv1 '
122 if (mod(i,4)-mod(i,2).eq.2) stringd(i)(5:8) =
'pv2 '
123 if (mod(i,8)-mod(i,4).eq.4) stringd(i)(9:12) =
' g '
124 if (mod(i,16)-mod(i,8).eq.8) stringd(i)(13:16) =
' gc '
125 if (mod(i,32)-mod(i,16).eq.16) stringd(i)(17:20) =
' sm '
126 if (mod(i,64)-mod(i,32).eq.32) stringd(i)(21:24) =
' gr '
127 if (mod(i,128)-mod(i,64).eq.64) stringd(i)(25:28) =
'smf '
129 if (mod(i,256)-mod(i,128).eq.128) stringd(i)(29:32) =
' gm '
140 ccount(19)=ccount(19)+ccount(i)+ccount(10+i)
141 dcount(19)=dcount(19)+dcount(i)+dcount(10+i)
144 write(nstatsout_coli,100)
145 100
format (/
' Collier: Numbers for calls of different branches in C and D reduction'/)
148 write(nstatsout_coli,300) (ccount(i),dble(ccount(i))/normc*1d2,i=1,nmethodc), &
149 ccount(8),dble(ccount(8))/normc*1d2, &
150 ccount(9),dble(ccount(9))/normc*1d2, &
151 (ccount(i),dble(ccount(i))/normc*1d2,i=11,10+nmethodc), &
152 ccount(19),dble(ccount(19))/normc*1d2, &
153 ccount(0),dble(ccount(0))/normc*1d2
155 300
format(
' #calls C pv1 1 = ',i20,
' or ',f10.5,
' %'/ &
156 &
' #calls C pv2 1 = ',i20,
' or ',f10.5,
' %'/ &
157 &
' #calls C g 1 = ',i20,
' or ',f10.5,
' %'/ &
158 &
' #calls C gc 1 = ',i20,
' or ',f10.5,
' %'/ &
159 &
' #calls C sm 1 = ',i20,
' or ',f10.5,
' %'/ &
160 &
' #calls C gr 1 = ',i20,
' or ',f10.5,
' %'/ &
161 &
' #calls C smf 1 = ',i20,
' or ',f10.5,
' %'/ &
163 &
' #calls C pvs+1 = ',i20,
' or ',f10.5,
' %'/ &
164 &
' #calls C pvs 1 = ',i20,
' or ',f10.5,
' %'/ &
165 &
' #calls C pv1 2 = ',i20,
' or ',f10.5,
' %'/ &
166 &
' #calls C pv2 2 = ',i20,
' or ',f10.5,
' %'/ &
167 &
' #calls C g 2 = ',i20,
' or ',f10.5,
' %'/ &
168 &
' #calls C gc 2 = ',i20,
' or ',f10.5,
' %'/ &
169 &
' #calls C sm 2 = ',i20,
' or ',f10.5,
' %'/ &
170 &
' #calls C gr 2 = ',i20,
' or ',f10.5,
' %'/ &
171 &
' #calls C smf 2 = ',i20,
' or ',f10.5,
' %'/ &
173 &
' #calls C all m = ',i20,
' or ',f10.5,
' %'/ &
174 &
' #calls C = ',i20,
' or ',f10.5,
' %'/)
177 if (ccount(i+ccountoffset0).ne.0.or.i.eq.2**nmethodc) then
178 write(nstatsout_coli,310) stringc(i),ccount(i+ccountoffset0),dble(ccount(i+ccountoffset0))/normc*1d2
181 write(nstatsout_coli,310) stringc(0),ccount(0),dble(ccount(0))/normc*1d2
183 310
format(
' #calls C ',a32 ,
' = ',i16,
' or ',f10.5,
' %')
185 write(nstatsout_coli,400) (dcount(i),dble(dcount(i))/normd*1d2,i=1,nmethodd), &
186 (dcount(i),dble(dcount(i))/normd*1d2,i=11,10+nmethodd), &
187 dcount(19),dble(dcount(19))/normd*1d2, &
188 dcount(0),dble(dcount(0))/normd*1d2
190 400
format(/
' #calls D pv1 1 = ',i20,
' or ',f10.5,
' %'/ &
191 &
' #calls D pv2 1 = ',i20,
' or ',f10.5,
' %'/ &
192 &
' #calls D g 1 = ',i20,
' or ',f10.5,
' %'/ &
193 &
' #calls D gc 1 = ',i20,
' or ',f10.5,
' %'/ &
194 &
' #calls D sm 1 = ',i20,
' or ',f10.5,
' %'/ &
195 &
' #calls D gr 1 = ',i20,
' or ',f10.5,
' %'/ &
196 &
' #calls D smf 1 = ',i20,
' or ',f10.5,
' %'/ &
198 &
' #calls D gm 1 = ',i20,
' or ',f10.5,
' %'/ &
200 &
' #calls D pv1 2 = ',i20,
' or ',f10.5,
' %'/ &
201 &
' #calls D pv2 2 = ',i20,
' or ',f10.5,
' %'/ &
202 &
' #calls D g 2 = ',i20,
' or ',f10.5,
' %'/ &
203 &
' #calls D gc 2 = ',i20,
' or ',f10.5,
' %'/ &
204 &
' #calls D sm 2 = ',i20,
' or ',f10.5,
' %'/ &
205 &
' #calls D gr 2 = ',i20,
' or ',f10.5,
' %'/ &
206 &
' #calls D smf 2 = ',i20,
' or ',f10.5,
' %'/ &
208 &
' #calls D gm 2 = ',i20,
' or ',f10.5,
' %'/ &
210 &
' #calls D all m = ',i20,
' or ',f10.5,
' %'/ &
211 &
' #calls D = ',i20,
' or ',f10.5,
' %'/)
215 if (dcount(i+dcountoffset0).ne.0.or.i.eq.2**nmethodd) then
216 write(nstatsout_coli,410) stringd(i),dcount(i+dcountoffset0),dble(dcount(i+dcountoffset0))/normd*1d2
219 write(nstatsout_coli,410) stringd(0),dcount(0),dble(dcount(0))/normd*1d2
222 410
format(
' #calls D ',a36 ,
' = ',i16,
' or ',f10.5,
' %')
224 410
format(
' #calls D ',a32 ,
' = ',i16,
' or ',f10.5,
' %')
227 write(nstatsout_coli,110) reqacc_coli
228 110
format (/
' Collier: Numbers for calls of different branches in C and D reduction'/ &
229 ' with an accuracy worse than reqacc_coli =',es11.4/)
232 if (ccount(i+ccountoffset1).ne.0.or.i.eq.2**nmethodc) then
233 write(nstatsout_coli,310) stringc(i),ccount(i+ccountoffset1),dble(ccount(i+ccountoffset1))/normc*1d2
236 write(nstatsout_coli,310) stringc(0),ccount(0),dble(ccount(0))/normc*1d2
237 write(nstatsout_coli,*)
240 if (dcount(i+dcountoffset1).ne.0.or.i.eq.2**nmethodd) then
241 write(nstatsout_coli,410) stringd(i),dcount(i+dcountoffset1),dble(dcount(i+dcountoffset1))/normd*1d2
244 write(nstatsout_coli,410) stringd(0),dcount(0),dble(dcount(0))/normd*1d2
246 write(nstatsout_coli,130) sqrt(reqacc_coli)
247 130
format (/
' Collier: Numbers for calls of different branches in C and D reduction'/ &
248 ' with an accuracy worse than sqrt(reqacc_coli) =',es11.4/)
251 if (ccount(i+ccountoffset3).ne.0.or.i.eq.2**nmethodc) then
252 write(nstatsout_coli,310) stringc(i),ccount(i+ccountoffset3),dble(ccount(i+ccountoffset3))/normc*1d2
255 write(nstatsout_coli,310) stringc(0),ccount(0),dble(ccount(0))/normc*1d2
256 write(nstatsout_coli,*)
259 if (dcount(i+dcountoffset3).ne.0.or.i.eq.2**nmethodd) then
260 write(nstatsout_coli,410) stringd(i),dcount(i+dcountoffset3),dble(dcount(i+dcountoffset3))/normd*1d2
263 write(nstatsout_coli,410) stringd(0),dcount(0),dble(dcount(0))/normd*1d2
266 write(nstatsout_coli,120) critacc_coli
267 120
format (/
' Collier: Numbers for calls of different branches in C and D reduction'/ &
268 ' with an accuracy worse than critacc_coli =',es11.4/)
271 if (ccount(i+ccountoffset2).ne.0.or.i.eq.2**nmethodc) then
272 write(nstatsout_coli,310) stringc(i),ccount(i+ccountoffset2),dble(ccount(i+ccountoffset2))/normc*1d2
275 write(nstatsout_coli,310) stringc(0),ccount(0),dble(ccount(0))/normc*1d2
276 write(nstatsout_coli,*)
279 if (dcount(i+dcountoffset2).ne.0.or.i.eq.2**nmethodd) then
280 write(nstatsout_coli,410) stringd(i),dcount(i+dcountoffset2),dble(dcount(i+dcountoffset2))/normd*1d2
283 write(nstatsout_coli,410) stringd(0),dcount(0),dble(dcount(0))/normd*1d2
284 write(nstatsout_coli,*)