Thomas algorithm and counting of operations (floating point and memory)

Operation Floating Point
Memory Reads \( 14(N-2) \)
Memory Writes \( 4(N-2) \)
Subtractions \( 3(N-2) \)
Multiplications \( 3(N-2) \)
Divisions \( 4(N-2) \)

// Forward substitution    
// Note that we can simplify by precalculating a[i-1]/b[i-1]
  for (int i=1; i < n; i++) {
     b[i] = b[i] - (a[i-1]*c[i-1])/b[i-1];
     f[i] = g[i] - (a[i-1]*f[i-1])/b[i-1];
  }
  x[n-1] = f[n-1] / b[n-1];
  // Backwards substitution                                                           
  for (int i = n-2; i >= 0; i--) {
     f[i] = f[i] - c[i]*f[i+1]/b[i+1];
     x[i] = f[i]/b[i];
  }