システムを使用する;
namespace Legalsoft.Truffer
{ public class Eulsum { private double[] wksp { get; セット; プライベート int n {取得; セット; プライベート int ncv {取得; セット; public bool cnvgd {取得; セット; プライベート ダブルサム{取得; セット; プライベート ダブルeps {取得; セット; プライベート ダブルlastval {取得; セット; private double lasteps { get; } セット; }
public Eulsum(int nmax, double epss)
{ this.wksp = new double[nmax]; this.n = 0; this.ncv = 0; this.cnvgd = false; this.sum = 0.0; this.eps = epss; this.lastval = 0.0; }
public double next(double term)
{ if (n + 1 > wksp.Length) { throw new Exception("wksp は eulsum が小さすぎます"); if (n == 0) { sum = 0.5 * (wksp[n++] = term) ; } else { double tmp = wksp[0]; wksp[0] = 用語; for (int j = 1; j < n; j++) { double dum = wksp[j]; wksp[j] = 0.5 * (wksp[j - 1] + tmp); tmp = ダム;
wsp[n] = 0.5*(wksp[n - 1] + tmp) ;
if (Math.Abs(wksp[n]) <= Math.Abs(wksp[n - 1]))
{ sum += (0.5 * wsp[n++]); } else { 合計 += wsp[n]; laststeps = Math.Abs (sum - lastVal); if ( laststeps <= eps ) { ncv ++ ; if (ncv >= 2) { cnvgd = true ; return (lastval = sum) ;
}
}
}