invertSeas function

List<double> invertSeas(
  1. List<double> history,
  2. List<double> diffs,
  3. int s,
  4. int D,
)

Implementation

List<double> invertSeas(List<double> history, List<double> diffs, int s, int D) {
  if (D <= 0 || s <= 1) return List<double>.from(diffs);
  var base = List<double>.from(history);
  var cur = List<double>.from(diffs);
  for (int k = 0; k < D; k++) {
    final out = List<double>.from(base);
    for (int i = 0; i < cur.length; i++) {
      final idx = out.length - s;
      final prevS = idx >= 0 ? out[idx] : 0.0;
      out.add(prevS + cur[i]);
    }
    base = out;
    cur = out.sublist(history.length);
    history = List<double>.from(out);
  }
  return history.sublist(history.length - diffs.length);
}