Fix bug #674: typo in documentation example for BiCGSTAB. They are now proper snippet files.
diff --git a/Eigen/src/IterativeLinearSolvers/BiCGSTAB.h b/Eigen/src/IterativeLinearSolvers/BiCGSTAB.h
index 6fc6ab8..7a46b51 100644
--- a/Eigen/src/IterativeLinearSolvers/BiCGSTAB.h
+++ b/Eigen/src/IterativeLinearSolvers/BiCGSTAB.h
@@ -136,34 +136,13 @@
   * and NumTraits<Scalar>::epsilon() for the tolerance.
   * 
   * This class can be used as the direct solver classes. Here is a typical usage example:
-  * \code
-  * int n = 10000;
-  * VectorXd x(n), b(n);
-  * SparseMatrix<double> A(n,n);
-  * // fill A and b
-  * BiCGSTAB<SparseMatrix<double> > solver;
-  * solver(A);
-  * x = solver.solve(b);
-  * std::cout << "#iterations:     " << solver.iterations() << std::endl;
-  * std::cout << "estimated error: " << solver.error()      << std::endl;
-  * // update b, and solve again
-  * x = solver.solve(b);
-  * \endcode
+  * \include BiCGSTAB_simple.cpp
   * 
   * By default the iterations start with x=0 as an initial guess of the solution.
   * One can control the start using the solveWithGuess() method. Here is a step by
   * step execution example starting with a random guess and printing the evolution
   * of the estimated error:
-  * * \code
-  * x = VectorXd::Random(n);
-  * solver.setMaxIterations(1);
-  * int i = 0;
-  * do {
-  *   x = solver.solveWithGuess(b,x);
-  *   std::cout << i << " : " << solver.error() << std::endl;
-  *   ++i;
-  * } while (solver.info()!=Success && i<100);
-  * \endcode
+  * \include BiCGSTAB_step_by_step.cpp
   * Note that such a step by step excution is slightly slower.
   * 
   * \sa class SimplicialCholesky, DiagonalPreconditioner, IdentityPreconditioner
diff --git a/doc/snippets/BiCGSTAB_simple.cpp b/doc/snippets/BiCGSTAB_simple.cpp
new file mode 100644
index 0000000..5520f4f
--- /dev/null
+++ b/doc/snippets/BiCGSTAB_simple.cpp
@@ -0,0 +1,11 @@
+  int n = 10000;
+  VectorXd x(n), b(n);
+  SparseMatrix<double> A(n,n);
+  /* ... fill A and b ... */ 
+  BiCGSTAB<SparseMatrix<double> > solver;
+  solver.compute(A);
+  x = solver.solve(b);
+  std::cout << "#iterations:     " << solver.iterations() << std::endl;
+  std::cout << "estimated error: " << solver.error()      << std::endl;
+  /* ... update b ... */
+  x = solver.solve(b); // solve again
\ No newline at end of file
diff --git a/doc/snippets/BiCGSTAB_step_by_step.cpp b/doc/snippets/BiCGSTAB_step_by_step.cpp
new file mode 100644
index 0000000..06147bb
--- /dev/null
+++ b/doc/snippets/BiCGSTAB_step_by_step.cpp
@@ -0,0 +1,14 @@
+  int n = 10000;
+  VectorXd x(n), b(n);
+  SparseMatrix<double> A(n,n);
+  /* ... fill A and b ... */ 
+  BiCGSTAB<SparseMatrix<double> > solver(A);
+  // start from a random solution
+  x = VectorXd::Random(n);
+  solver.setMaxIterations(1);
+  int i = 0;
+  do {
+    x = solver.solveWithGuess(b,x);
+    std::cout << i << " : " << solver.error() << std::endl;
+    ++i;
+  } while (solver.info()!=Success && i<100);
\ No newline at end of file
diff --git a/doc/snippets/compile_snippet.cpp.in b/doc/snippets/compile_snippet.cpp.in
index 894cd52..82ae891 100644
--- a/doc/snippets/compile_snippet.cpp.in
+++ b/doc/snippets/compile_snippet.cpp.in
@@ -1,4 +1,4 @@
-#include <Eigen/Dense>
+#include <Eigen/Eigen>
 #include <iostream>
 
 using namespace Eigen;