diff --git a/example/tutorial.cpp b/example/tutorial.cpp
new file mode 100644
index 0000000..acda5ee
--- /dev/null
+++ b/example/tutorial.cpp
@@ -0,0 +1,95 @@
+// Boost.Units - A C++ library for zero-overhead dimensional analysis and 
+// unit/quantity manipulation and conversion
+//
+// Copyright (C) 2003-2008 Matthias Christian Schabel
+// Copyright (C) 2008 Steven Watanabe
+//
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+/**
+\file tutorial.cpp
+    
+\brief Basic tutorial using SI units.
+
+\details
+Tutorial 
+Defines a function that computes the work, in joules,
+done by exerting a force in newtons over a specified distance 
+in meters and outputs the result to std::cout. 
+
+Also code for computing the complex impedance
+using std::complex<double> as the value type.
+
+Output:
+@verbatim
+//[tutorial_output
+F  = 2 N
+dx = 2 m
+E  = 4 J
+
+V   = (12.5,0) V
+I   = (3,4) A
+Z   = (1.5,-2) Ohm
+I*Z = (12.5,0) V
+I*Z == V? true
+//]
+@endverbatim
+*/
+
+//[tutorial_code
+#include <complex>
+#include <iostream>
+
+#include <boost/typeof/std/complex.hpp>
+
+#include <boost/units/systems/si/energy.hpp>
+#include <boost/units/systems/si/force.hpp>
+#include <boost/units/systems/si/length.hpp>
+#include <boost/units/systems/si/electric_potential.hpp>
+#include <boost/units/systems/si/current.hpp>
+#include <boost/units/systems/si/resistance.hpp>
+#include <boost/units/systems/si/io.hpp>
+
+using namespace boost::units;
+using namespace boost::units::si;
+
+constexpr
+quantity<energy> 
+work(const quantity<force>& F, const quantity<length>& dx)
+{
+    return F * dx; // Defines the relation: work = force * distance.
+}
+
+int main()
+{   
+    /// Test calculation of work.
+    quantity<force>     F(2.0 * newton); // Define a quantity of force.
+    quantity<length>    dx(2.0 * meter); // and a distance,
+    quantity<energy>    E(work(F,dx));  // and calculate the work done.
+    
+    std::cout << "F  = " << F << std::endl
+              << "dx = " << dx << std::endl
+              << "E  = " << E << std::endl
+              << std::endl;
+
+    /// Test and check complex quantities.
+    typedef std::complex<double> complex_type; // double real and imaginary parts.
+    
+    // Define some complex electrical quantities.
+    quantity<electric_potential, complex_type> v = complex_type(12.5, 0.0) * volts;
+    quantity<current, complex_type>            i = complex_type(3.0, 4.0) * amperes;
+    quantity<resistance, complex_type>         z = complex_type(1.5, -2.0) * ohms;
+    
+    std::cout << "V   = " << v << std::endl
+              << "I   = " << i << std::endl
+              << "Z   = " << z << std::endl 
+              // Calculate from Ohm's law voltage = current * resistance.
+              << "I * Z = " << i * z << std::endl
+              // Check defined V is equal to calculated.
+              << "I * Z == V? " << std::boolalpha << (i * z == v) << std::endl
+              << std::endl;
+    return 0;
+}
+//]
