do cntrun = 1, numrun
recnt = real(cntrun)
do pti = 0, numslv
slvfe = wrtdata(pti, cntrun)
runcp(pti) = runcp(pti) + slvfe
runer(pti) = runer(pti) + slvfe ** 2
avecp = runcp(pti) / recnt
shcp(2 * pti + 1) = avecp
if(cntrun > 1) then
factor = runer(pti) / recnt - avecp ** 2
if(factor <= zero) then
shcp(2 * pti + 2) = 0.0
else
shcp(2 * pti + 2) = (2.0 / sqrt(recnt) ) &
*sqrt(recnt / (recnt - 1.0)) * sqrt(factor)
endif
endif
end do
というわけで、"1" (cntrun == 1)の場合のゼロ割算(や変なsqrt)は無くなっています。
ちょっと謎です