code: public static void solveTranL( double L[] , double []b , int n )
      {
          for( int i =n-1; i>=0; i-- ) {
              double sum = b[i];
              for( int k = i+1; k <n; k++ ) {
                  sum -= L[k*n+i]* b[k];
              }
              b[i] = sum/L[i*n+i];
          }
      }
docs: <p>
  This is a forward substitution solver for non-singular lower triangular matrices.
  <br>
  b = (L<sup>T</sup>)<sup>-1</sup>b<br>
  <br>
  where b is a vector, L is an n by n matrix.<br>
  </p>
  <p>
  L is a lower triangular matrix, but it comes up with a solution as if it was
  an upper triangular matrix that was computed by transposing L.
  </p>
  
  @param L An n by n non-singular lower triangular matrix. Not modified.
  @param b A vector of length n. Modified.
  @param n The size of the matrices.